PyQt5_gpl-5.10.1/0000755000076500000240000000000013245233151013500 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/__init__.py0000644000076500000240000000147213245233136015620 0ustar philstaff00000000000000# Copyright (c) 2018 Riverbank Computing Limited # # This file is part of PyQt5. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. PyQt5_gpl-5.10.1/ChangeLog0000644000076500000240000120200313245233136015253 0ustar philstaff000000000000002018-02-26 Phil Thompson * NEWS: Released as v5.10.1. [dc149e6643d5] [5.10.1] <5.10-maint> 2018-02-21 Phil Thompson * PyQt5.msp: Added the new QAbstractOAuth2 methods added in Qt v5.10.1. [b2ea22e58de6] <5.10-maint> 2018-02-20 Phil Thompson * PyQt5.msp: Updated for Qt v5.10.1. [e27d89dd3457] <5.10-maint> 2018-02-13 Phil Thompson * PyQt5.msp: Added the missing qmlClearTypeRegistrations() to the QtQml module. [c9a7040cb4a7] <5.10-maint> 2018-02-12 Phil Thompson * PyQt5.msp: Removed incorrect annotation on QQmlNetworkAccessManagerFactory::create(). [6401ed81edee] <5.10-maint> 2018-02-08 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Removed some (hopefully) redundant code. [6e9e33411f41] <5.10-maint> 2018-02-06 Phil Thompson * PyQt5.msp: Make sure LTS releases of Qt v5.9 don't get handled as Qt v5.10. [8474d7f26f1f] <5.10-maint> 2018-02-04 Phil Thompson * lib/configure.py: Added the --disabled-feature option to configure.py. [5a554278bbf0] <5.10-maint> 2018-01-31 Phil Thompson * examples/quick/tutorials/extending/chapter1-basics/chapter1-basics.p y, examples/quick/tutorials/extending/chapter2-methods/chapter2-meth ods.py, examples/quick/tutorials/extending/chapter3-bindings/chapter 3-bindings.py, examples/quick/tutorials/extending/chapter4-customPro pertyTypes/chapter4-customPropertyTypes.py, examples/quick/tutorials /extending/chapter5-listproperties/chapter5-listproperties.py: Avoid an assertion failure when using a debug version of Qt. [6eb406e64db8] <5.10-maint> * qpy/QtQml/qpyqml_register_singleton_type.cpp, qpy/QtQml/qpyqml_register_type.cpp: Reverted the change in PyQt v5.8 that dealt with QML and properties so that all the examples work again. [9eb53449681d] <5.10-maint> 2018-01-23 Phil Thompson * .hgtags: Added tag 5.10 for changeset 9f68e48cf5f5 [c18dad0e8eec] * NEWS: Released as v5.10. [9f68e48cf5f5] [5.10] * NEWS: Updated the NEWS file. [0f2753f9a303] 2018-01-19 Phil Thompson * PyQt5.msp: Added the %ConvertToSubClassCode for QtNetworkAuth. [b9783c0386aa] * PyQt5.msp: Implemented the remaining QtNetworkAuth methods. [73f3c9cc94ae] 2018-01-18 Phil Thompson * PyQt5.msp: Fixes to get QtNetworkAuth to build. [4d37b274bc0a] * lib/configure.py: Added support for QtNetworkAuth to configure.py. [4f516477a254] * qpy/QtCore/qpycore_qpair.sip: Implemented the mapped typ etemplate for QPair needed by QtNetworkAuth. [4657c9ea8733] 2018-01-17 Phil Thompson * PyQt5.msp: Added initial support for QtNetworkAuth. [ddbbb40ddf1e] * PyQt5.msp: Updated QtWidgets for Qt v5.10.0. [dadfd4f1295c] * PyQt5.msp: Updated QtTest, QtWebChannel, QtWebEngine, QtWebEngineCore, QtWebEngineWidgets and QtWebSockets for Qt v5.10.0. [83b53f46e600] 2018-01-16 Phil Thompson * PyQt5.msp: Updated QtPrintSupport, QtQml, QtQuick, QtQuickWidgets, QtSensors, QtSerialPort and QtSql for Qt v5.10.0. [6b6e25ea6792] * PyQt5.msp: Updated QtNetwork, QtNfc, QtOpenGL and QtPositioning for Qt v5.10.0. [743896f26ce5] 2018-01-10 Phil Thompson * PyQt5.msp: Updated QtLocation, QtMultimedia and QtMultimediaWidgets for Qt v5.10.0. [3289ec6e2f72] * PyQt5.msp: Updated QtGui for Qt v5.10.0. [fcec94307c8f] * PyQt5.msp: Updated QtDBus, QtDesigner, QtHelp, QtSvg, QtXml and QtXmlPatterns for Qt v5.10.0. [8fad1106423b] 2018-01-09 Phil Thompson * qpy/QtCore/qpycore_qobject_helpers.cpp: Properly fixed a regression in QObject.inherits(). [92cbc384946a] * PyQt5.msp: Finished updating QtCore for Qt v5.10.0. [3dcac7147ec6] 2018-01-08 Phil Thompson * PyQt5.msp: Started to update QtCore for Qt v5.10.0. [c18a11bf815d] * PyQt5.msp: Updated QtBluetooth for Qt v5.10.0. [df5635ee7bf6] * Merged the 5.9-maint branch into the trunk. [e973de99d35d] 2018-01-05 Phil Thompson * pyuic/uic/Compiler/qobjectcreator.py, pyuic/uic/Loader/qobjectcreator.py, pyuic/uic/widget- plugins/qtcharts.py: Fixed pyuic's handling of widget implemented in a C++ namespace (specifically QChartView). [338e6a251aee] <5.9-maint> 2017-12-20 Phil Thompson * pyrcc/pyrcc_main.py: Fixed the handling of arguments to pyrcc5. [7d9643a53c66] <5.9-maint> * lib/configure.py: Fixed out-of-tree builds. [573d3b66d402] <5.9-maint> 2017-12-16 Phil Thompson * lib/configure.py: Fixes for building in a Windows venv. [1003c37c2cb5] <5.9-maint> 2017-12-12 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Die more gracefully when attempting to connect to a Python method with a non-ASCII name. [0d30a9b8441b] <5.9-maint> 2017-11-24 Phil Thompson * pyuic/uic/properties.py: Fixed a bug in loadUi() handling gradients. [0aef34d2beb2] <5.9-maint> 2017-11-23 Phil Thompson * .hgtags: Added tag 5.9.2 for changeset 7fac90c2d528 [02e55c83f900] <5.9-maint> * NEWS: Released as v5.9.2. [7fac90c2d528] [5.9.2] <5.9-maint> * PyQt5.msp: Updated for Qt v5.9.3. [5fffc2c72bd5] <5.9-maint> 2017-11-21 Phil Thompson * PyQt5.msp: Added /NewThread/ to QRunnable::run(). [17c89f899276] <5.9-maint> 2017-11-19 Phil Thompson * qpy/QtCore/qpycore_event_handlers.cpp: Ignore destroyed QObjects when there is no interpreter. [276966407f1c] <5.9-maint> 2017-11-18 Phil Thompson * QtAndroidExtras/qtandroid.sip: Fixed the name of the QtAndroid header file. [58b1a3f4108d] <5.9-maint> * QtAndroidExtras/qtandroid.sip: Fixed the name of the QtAndroid namespace. [87890f4acfe5] <5.9-maint> 2017-11-15 Phil Thompson * QtAndroidExtras/qtandroid.sip: Added the missing QtAndroid .sip file. [ee26f550ab15] <5.9-maint> * QtMacExtras/qmacpasteboardmime.sip, QtMacExtras/qmactoolbar.sip, QtMacExtras/qmactoolbaritem.sip: Fixed QtMacExtras for iOS. [058934cee148] <5.9-maint> * QtAndroidExtras/QtAndroidExtrasmod.sip: Added the QtAndroid namespace to QtAndroidExtras. [170c3a17042e] <5.9-maint> 2017-11-14 Phil Thompson * lib/configure.py: Check that user supplied module names are valid. [b1154438a794] <5.9-maint> 2017-11-10 Phil Thompson * QtAndroidExtras/QtAndroidExtrasmod.sip, QtAndroidExtras/qandroidjniobject.sip, lib/configure.py: Added the QtAndroidExtras module containing a sub-set of the QAndroidJniObject class. [bad8eb717c80] <5.9-maint> 2017-11-06 Phil Thompson * PyQt5.msp: Restored QUrl.query() for Qt v5.9.0 and earlier. [3a40388e51bc] <5.9-maint> 2017-11-02 Phil Thompson * lib/configure.py: Module .pro fixes for static builds. [08ccbbe1325c] <5.9-maint> * lib/configure.py: Extension modules on macOS are now bundles rather than shared libraries. [2f298782351f] <5.9-maint> * .hgtags: Added tag 5.9.1 for changeset 6a8d6710ba64 [b68eec6b9b94] <5.9-maint> * NEWS: Released as v5.9.1. [6a8d6710ba64] [5.9.1] <5.9-maint> * lib/configure.py: Windows-specific fixes related to the detection of sip version mismatches. [2a30790477c1] <5.9-maint> 2017-11-01 Phil Thompson * lib/configure.py: Further fixes for --sip-incdir. [4859965322a4] <5.9-maint> * lib/configure.py: Fixed the handling of the --sip-incdir option. [e1ac86a6bc52] <5.9-maint> * config-tests/cfgtest_QtCore.cpp, lib/configure.py: configure.py now makes sure that the version numbers of the sip code generator and sip.h match. [d5b36b960994] <5.9-maint> * lib/configure.py: Added the --allow-sip-warnings option to configure.py. [f4eebe2a30ee] <5.9-maint> 2017-10-31 Phil Thompson * qpy/QtCore/qpycore_event_handlers.cpp: Release the GIL when connecting a QObject monitor because of reported deadlocks. [f945685fa2b5] <5.9-maint> 2017-10-07 Phil Thompson * PyQt5.msp: Added support for Qt v5.9.2. [f2ddcf108add] <5.9-maint> * PyQt5.msp: Rescanned QUrl with the fixed metasip to fix code that may not be able to be handled by old versions of GCC. There will probably be other cases but the only solution woukd be to rescan every single class. [dd92e57fbfaa] <5.9-maint> 2017-10-06 Phil Thompson * pyuic/uic/uiparser.py: Fixed pyuic handling of margins of QWidgets that are not layout widgets. [ee2eef5d82ee] <5.9-maint> 2017-09-22 Phil Thompson * pyuic/uic/uiparser.py: Fixed the default margins of nested layouts. [0e7d014185b6] <5.9-maint> 2017-09-06 Phil Thompson * qpy/QtCore/qpycore_event_handlers.cpp: Fixed a memory leak caused by multiple identical connections when monitoring a QObject's lifecycle. [0abf2886cbef] <5.9-maint> 2017-09-05 Phil Thompson * examples/ipc/sharedmemory/sharedmemory.py: Fixed the shared memeory example. [718b731a63a8] <5.9-maint> * qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_qlist.sip, qpy/QtGui/qpygui_qlist.sip, qpy/QtGui/qpygui_qpair.sip, qpy/QtMultimedia/qpymultimedia_qlist.sip, qpy/QtNetwork/qpynetwork_qhash.sip, qpy/QtPrintSupport/qpyprintsupport_qlist.sip, qpy/QtWidgets/qpywidgets_qlist.sip: Removed all calls to sipCanConvertToEnum(). [c75deb889b1e] <5.9-maint> 2017-08-31 Phil Thompson * qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_qhash.sip, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qmap.sip, qpy/QtCore/qpycore_qmessagelogger.cpp, qpy/QtCore/qpycore_qpair.sip, qpy/QtCore/qpycore_qvector.sip, qpy/QtGui/qpyopengl_value_array.cpp, qpy/QtQml/qpyqmllistproperty.cpp: Removed all calls to SIPLong_AsLong(). [326d7caa3d2e] <5.9-maint> * qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_qjsonvalue.cpp, qpy/QtCore/qpycore_qlist.sip, qpy/QtGui/qpygui_qlist.sip, qpy/QtGui/qpygui_qpair.sip, qpy/QtMultimedia/qpymultimedia_qlist.sip, qpy/QtNetwork/qpynetwork_qhash.sip, qpy/QtPrintSupport/qpyprintsupport_qlist.sip, qpy/QtQml/qpyqml_qjsvalue.cpp, qpy/QtWidgets/qpywidgets_qlist.sip: Migrated all handwritten code to use sipConvertToEnum(). [8f3251301f87] <5.9-maint> 2017-08-30 Phil Thompson * rb-product: SIP v4.19.4 is now required. [302c09890e23] <5.9-maint> 2017-07-25 Phil Thompson * pyrcc/pyrcc_main.py, pyrcc/pyrccmod.sip, qpy/pyrcc/rcc.h: Removed the unimplemented -name option to pyrcc. [307cff7f1dbb] <5.9-maint> 2017-07-22 Phil Thompson * PyQt5.msp: Fixed QTabBar when built without accessibility support. [0c5314852dd2] <5.9-maint> 2017-07-16 Phil Thompson * lib/configure.py: Fixed the configuration tests' handling of disabled features. [1a7f9ba28fed] <5.9-maint> 2017-07-10 Phil Thompson * qpy/QtBluetooth/qpybluetooth_qlist.sip, qpy/QtCore/qjsonarray.sip, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qset.sip, qpy/QtCore/qpycore_qvector.sip, qpy/QtCore/qstringlist.sip, qpy/QtGui/qpygui_qvector.sip, qpy/QtMultimedia/qpymultimedia_qlist.sip, qpy/QtPrintSupport/qpyprintsupport_qlist.sip, qpy/QtWidgets/qpywidgets_qlist.sip: Clear the exception whenever PyObject_GetIter() fails when checking if an object can be converted. [07fc1c2b14a6] <5.9-maint> * PyQt5.msp: Release the GIL on all QThreadPool methods that access the internal mutex. [f710d0e81300] <5.9-maint> 2017-07-03 Phil Thompson * .hgtags: Added tag 5.9 for changeset 307fa2afedd4 [d84f568cd92f] * NEWS: Released as v5.9. [307fa2afedd4] [5.9] 2017-07-02 Phil Thompson * sphinx/api_details/qjsonarray.rst, sphinx/api_details/qjsonobject.rst, sphinx/api_details/qjsonvalue.rst, sphinx/api_metadata.cfg, sphinx/class_reference.rst, sphinx/conf.py, sphinx/dbus.rst, sphinx/deploy_commercial.rst, sphinx/deprecations.rst, sphinx/designer.rst, sphinx/extension_api.rst, sphinx/gotchas.rst, sphinx/i18n.rst, sphinx/incompatibilities.rst, sphinx/index.rst, sphinx/installation.rst, sphinx/introduction.rst, sphinx/metaobjects.rst, sphinx/multiinheritance.rst, sphinx/opengl.rst, sphinx/pickle.rst, sphinx/platforms.rst, sphinx/pyqt4_differences.rst, sphinx/pyqt_qsettings.rst, sphinx/pyqt_qvariant.rst, sphinx/python_shell.rst, sphinx/qml.rst, sphinx/qt_interfaces.rst, sphinx/qt_properties.rst, sphinx/resources.rst, sphinx/signals_slots.rst, sphinx/static/classic.css, sphinx/static/logo.png, sphinx/static/logo_tn.ico: Remove the documentation. [c10072f0b507] 2017-07-01 Phil Thompson * PyQt5.msp: Updated for Qt v5.9.1. [a19c481d1d26] 2017-06-15 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Removed some assumptions about a slot receiver when it is a method. [e32538351d89] 2017-06-11 Phil Thompson * lib/configure.py: The .sip files of all public modules are now installed even if the module has not been built. [d5785dc95062] * .hgignore: Ignore .pyc files. [e9483645c942] 2017-06-10 Phil Thompson * lib/configure.py: Deal with the incompatibilities introduced in Qt v5.9.0 in the Windows specs. [ccaae0890fa8] * config-tests/cfgtest_QtCore.cpp, config-tests/cfgtest_QtGui.cpp, config-tests/cfgtest_QtNetwork.cpp, config- tests/cfgtest_QtPrintSupport.cpp, lib/configure.py: Refactored the configuration tests so that they properly deal with the build system incompatibilities introduced in Qt v5.8.0. [5bff9174bdf5] 2017-06-06 Phil Thompson * qpy/QtCore/qpycore_event_handlers.cpp, qpy/QtCore/qpycore_event_handlers.h: Fixed the QObject monitoring to deal with the argument of the destroyed() signal. [e600f5863011] 2017-06-05 Phil Thompson * sphinx/conf.py: Updated the documentation copyright notice. [307e1590d17a] 2017-06-04 Phil Thompson * PyQt5.msp: Completed the updates for Qt v5.9.0. [3f8fdcacc41e] * PyQt5.msp, sphinx/api_metadata.cfg: Updated QtWebEngineCore for Qt v5.9.0. [2a44428921a5] * PyQt5.msp, lib/SubclassCode/QtWebEngine.versions, sphinx/api_metadata.cfg: Updated QtWebEngine for Qt v5.9.0. [200385c3790c] * PyQt5.msp, lib/SubclassCode/QtSensors.versions, sphinx/api_metadata.cfg: Updated QtSensors for Qt v5.9.0. [4f978799eaed] * PyQt5.msp: Update QtQml, QtQuick and QtWidgets for Qt v5.9.0. [e4dce2d967dc] * PyQt5.msp, sphinx/api_metadata.cfg: Updated QtNfc and QtPositioning for Qt v5.9.0. [e96fbd85d316] * PyQt5.msp, sphinx/api_metadata.cfg: Updated QtLocation and QtNetwork for Qt v5.9.0. [66167aa051e8] 2017-06-03 Phil Thompson * PyQt5.msp, sphinx/api_metadata.cfg: Updated QtHelp for Qt v5.9.0. [5ab49587596b] * PyQt5.msp: Updated QtGui for Qt v5.9.0. [8c2adf7c6678] 2017-06-01 Phil Thompson * PyQt5.msp, sphinx/api_metadata.cfg: Completed QtCore for Qt v5.9.0. [c1647883b06a] 2017-05-31 Phil Thompson * PyQt5.msp: Started work on Qt v5.9.0. [45fb92dcc67b] 2017-05-30 Phil Thompson * lib/LICENSE.commercial, lib/LICENSE.commercial.short, lib/LICENSE.gpl, lib/LICENSE.gpl.short, lib/LICENSE.internal, lib/RaspberryPi/configuration.txt: Merged the 5.8-maint branch with the trunk. [15759489c83d] * .hgignore: Updated .hgignore for the changed build directory. [5507908d36d4] <5.8-maint> * lib/README, lib/RaspberryPi/configuration.txt: Minor tidy ups. [ce0390f84167] <5.8-maint> 2017-05-27 Phil Thompson * qpy/QtCore/qpycore_event_handlers.cpp, qpy/QtCore/qpycore_event_handlers.h, qpy/QtCore/qpycore_post_init.cpp.in, rb-product: Added the event handlers to implement detection of the destruction of QObject instances created by C++. [3312bc9f9693] <5.8-maint> 2017-05-24 Phil Thompson * lib/configure.py: Improved the reproduceability of builds. [8c18ae66b8a3] <5.8-maint> 2017-05-23 Phil Thompson * lib/configure.py: Make the output of configure.py easier to read with --verbose. [ebc3188b638c] <5.8-maint> * PyQt5.msp: Fixed QGuiApplication for when there is no session management. [f01c1372343b] <5.8-maint> 2017-04-27 Phil Thompson * test/tests/classes/test_QObject.py: Fixed the new QObject.inherits() unit test. [05140ab844bf] <5.8-maint> * qpy/QtCore/qpycore_qobject_helpers.cpp, test/tests/classes/test_QObject.py: Fixed a regression in the qt_metacast() helper. [412e7be14d1f] <5.8-maint> * qpy/QtCore/qpycore_chimera.cpp: Reverted the part of changeset 1281 related to dict and QVariantMap. [71b9958bad49] <5.8-maint> 2017-04-18 Phil Thompson * sphinx/designer.rst: Corrected the pyuic5 documentation. [bba9257ee0f6] <5.8-maint> 2017-04-17 Phil Thompson * examples/itemviews/interview/images/interview.png, examples/itemviews/interview/images/services.png, examples/itemviews/interview/interview.py, examples/qtdemo/examples.xml: Added the interview.py example from Hans-Peter Jansen. [c9fd1cdbc210] <5.8-maint> * examples/itemviews/frozencolumn/frozencolumn.py, examples/itemviews/frozencolumn/grades.txt, examples/qtdemo/examples.xml: Added the frozencolumn.py example from Hans-Peter Jansen. [7fb636b504e8] <5.8-maint> * examples/itemviews/storageview.py, examples/qtdemo/examples.xml: Added the storageview.py example from Hans-Peter Jansen. [f98741ba3c82] <5.8-maint> * examples/itemviews/editabletreemodel/editabletreemodel.py: Updates to the editabletreemodel.py example from Hans-Peter Jansen. [76d240529c4c] <5.8-maint> * examples/itemviews/dirview.py: Updated the dirview.py example from Hans-Peter Jansen. [c588f6571970] <5.8-maint> * examples/itemviews/combowidgetmapper.py: Fixes for the combowidgetmapper.py example from Hans-Peter Jansen. [81cbf58f3bcf] <5.8-maint> * PyQt5.msp: Implemented __hash__() for QFlags. [7766a40af0d6] <5.8-maint> 2017-04-05 Phil Thompson * examples/itemviews/pixelator/pixelator.py: Fixes for the pixelator.py example. [2c3574fb346f] <5.8-maint> * PyQt5.msp: Implemented the non-argument overloads of the toSubpathPolygons(), toFillPolygons() and toFillPolygon() methods of QPainterPath. [af1fdb5e696d] <5.8-maint> * examples/itemviews/chart/chart.py: Fixed issues with the chart.py example. [86ca9f21d8ee] <5.8-maint> * examples/itemviews/spinboxdelegate.py: Updated the spinboxdelegate.py example to match the current C++ version. [6d27e01c70b5] <5.8-maint> 2017-04-03 Phil Thompson * examples/quick/animation/animation_rc.py, examples/quick/canvas/canvas_rc.py, examples/quick/models/abstractitemmodel/abstractitemmodel_rc.py, examples/quick/models/objectlistmodel/objectlistmodel_rc.py, examples/quick/models/stringlistmodel/stringlistmodel_rc.py, examples/quick/scenegraph/customgeometry/customgeometry_rc.py, examples/quick/shared/shared_rc.py: Updated all the pyrcc output to use v2 where QML files are stored. [0e09475f02d3] <5.8-maint> * qpy/pyrcc/rcc.cpp, qpy/pyrcc/rcc.h: Added support for v2 of the resource file format to pyrcc. [bc8a379011ca] <5.8-maint> 2017-03-30 Phil Thompson * .hgtags: Added tag 5.8.2 for changeset 96c86cda6415 [833d4681ee3d] <5.8-maint> * NEWS: Released as v5.8.2. [96c86cda6415] [5.8.2] <5.8-maint> 2017-03-29 Phil Thompson * lib/configure.py: Fixes for the OpenGL detection needed by the incompatible configuration changes in Qt v5.8.0. [bf6caed84fd3] <5.8-maint> 2017-03-27 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: When parsing a Python type map list and dict to QVariantList and QVariantMap. [e7158e3e2a31] <5.8-maint> 2017-03-24 Phil Thompson * lib/LICENSE.commercial, lib/LICENSE.commercial.short, lib/LICENSE.gpl, lib/LICENSE.gpl.short, lib/LICENSE.internal: Remove the license copies that are now part of rb-tools. [c15cf2c0c055] <5.8-maint> 2017-03-22 Phil Thompson * pyuic/uic/uiparser.py: Fixed the margins of the top layout in a tab by pyuic. [f5594ddfb6ee] <5.8-maint> * pyuic/uic/driver.py, pyuic/uic/exceptions.py, pyuic/uic/properties.py, pyuic/uic/pyuic.py: Improved the error handling of an unknown C++ class. [c4dab2a95dc6] <5.8-maint> 2017-03-21 Phil Thompson * sphinx/qml.rst: Added explicit warnings about PyQt's ability to support QML to the docs. [e0c7e29a7852] <5.8-maint> 2017-03-16 Phil Thompson * PyQt5.msp: Added a comment about why opengl_types.sip is included twice. [95518ec3931a] <5.8-maint> * PyQt5.msp: Only enable QOpenGLTextureBlitter if OpenGL is supported. [ef351b9d8f03] <5.8-maint> * PyQt5.msp: Avoid a deadlock when using asynchronous image providers in QML. [33ed4db6949b] <5.8-maint> 2017-03-07 Phil Thompson * .hgtags: Added tag 5.8.1 for changeset 7426ab9ba43b [0ddf209259b4] <5.8-maint> * NEWS: Released as v5.8.1. [7426ab9ba43b] [5.8.1] <5.8-maint> 2017-03-03 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Special case a QVariant containing std::nullptr_t. [001ad7fc01fb] <5.8-maint> 2017-02-27 Phil Thompson * METADATA.in: Updated the Requires-Dist meta-data so it includes the values from the release file. [2933ac7bf19d] <5.8-maint> 2017-02-24 Phil Thompson * lib/configure.py: Disable desktop OpenGL if OpenGLES v3 or v3.1 is detected. [4ba0f0b49e2a] <5.8-maint> * qpy/QtQml/qpyqml_register_type.cpp: Fixed the handling of properties in Qml because of changes to the internals in Qt v5.8.0. [feeab3eb94fa] <5.8-maint> 2017-02-22 Phil Thompson * PyQt5.msp: Fixed QLocale.toString() for Python v2. [027b070ff19e] <5.8-maint> * PyQt5.msp: Anticipate that Qt v5.9.0 will be released before Qt v5.8.1 to avoid problems building PyQt v5.9 against Qt v5.8.1. [6022c9537b69] <5.8-maint> 2017-02-21 Phil Thompson * qpy/QtPrintSupport/qpyprintsupport_qlist.sip: The QtPrintSupport mapped types are only included if printers are supported. [7b3afef45f92] <5.8-maint> * sphinx/pyqt_qvariant.rst: Updated the docs regarding support for QVariant. [657a7b5e45ce] <5.8-maint> 2017-02-16 Phil Thompson * qpy/QtQml/qpyqmlobject.cpp: Fixed signals in QML registered types that are defined in a Python sub-class of the registered type. [e5d27b6ce571] <5.8-maint> 2017-02-15 Phil Thompson * .hgtags: Added tag 5.8 for changeset a04bf1746ae4 [f12c11450b7f] * NEWS: Released as v5.8. [a04bf1746ae4] [5.8] 2017-02-13 Phil Thompson * PyQt5.msp: More SSL support fixes. [f3e90b840b5f] * PyQt5.msp: Fixed building without SSL support. [0c33c8cce200] * sphinx/installation.rst, sphinx/qml.rst: Some documentation clarifications. [79b2d4a5368c] 2017-02-09 Phil Thompson * qmlscene/pluginloader.cpp, qmlscene/qmlscene.pro-in: The qmlscene plugin now loads the Python library with exported symbols. [03722ff7eea9] 2017-02-08 Phil Thompson * PyQt5.msp, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_get.cpp: Improved the support in the other glGet functions. [e97a57356d73] 2017-02-07 Phil Thompson * PyQt5.msp, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_get.cpp, qpy/QtGui/qpyopengl_init.cpp: Improved the support for glGetFloatv(). [0e9414c6c2ad] 2017-02-01 Phil Thompson * qpy/QtCore/qwineventnotifier.sip: Hopefully fixed the QWinEventNotifier.activated() signal. [0c65b46fa231] * lib/configure.py, sphinx/installation.rst: On Windows a debug build of Python is needed if --debug is specified (and vice versa). [badca59b38be] 2017-01-31 Phil Thompson * qpy/QtCore/qpycore_qhash.sip, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qset.sip: Disable the garbage collector while wrapping multiple C++ instances in case some of those instances would be destroyed if the garbage collector was run. [652a401092f3] * qpy/QtCore/qsysinfo.sip: Updated QSysInfo for Qt v5.8.0. [104d002e3fc0] 2017-01-29 Phil Thompson * PyQt5.msp: Release the GIL in QmlApplicationEngine ctors. [85a18ee47e51] * PyQt5.msp: Updated QtWebSockets, QtWidgets, QtXml and QtXmlPatterns for Qt v5.8.0. [8fdb72bca3b5] 2017-01-28 Phil Thompson * PyQt5.msp: Updated QtSensors, QtSerialPort, QtSql, QtSvg, QtTest, QtWebChannel, QtWebEngine, QtWebEngineCore and QtWebEngineWidgets for Qt v5.8.0. [cf1faa2c9606] * PyQt5.msp, sphinx/api_metadata.cfg: Updated QtQml, QtQuick and QtQuickWidgets for Qt v5.8.0. [2459038a6733] * PyQt5.msp, sphinx/api_metadata.cfg: Updated QtHelp, QtLocation, QtMultimedia, QtMultimediaWidgets, QtNetwork, QtNfc, QtOpenGL, QtPositioning and QtPrintSupport for Qt v5.8.0. [d0eeb8270f29] * lib/configure.py: Updated the configure.py test for QtDesigner to detect the broken Qt v5.8.0 macOS installer. [ce70a466f5c9] 2017-01-24 Phil Thompson * PyQt5.msp: Eliminate a compiler warning message in QtCore. [99d23c39f9ff] * NEWS, PyQt5.msp, lib/configure.py, sphinx/installation.rst: Updated QtBluetooth, QtCore, QtDBus, QtDesigner, QtGui and configure.py for Qt v5.8.0. [daac5fdeb6ee] * Makefile, build.py, pyuic/uic/port_v2/invoke.py, pyuic/uic/port_v2/load_plugin.py, pyuic/uic/port_v3/invoke.py, pyuic/uic/port_v3/load_plugin.py: Merged the 5.7-maint branch. [05971e186d25] 2017-01-20 Phil Thompson * NEWS, PyQt5.msp: Added __fspath__() to QFileInfo. [6dbc033e73c4] <5.7-maint> * lib/configure.py: Updated the configure.py test for qreal to allow for QT_COORD_TYPE. [05bb9d526a1c] <5.7-maint> * lib/configure.py, sphinx/installation.rst: QML debugging is now enabled with a separate --qml-debug option to configure.py. [b189f32a6cc7] <5.7-maint> 2017-01-19 Phil Thompson * qpy/QtGui/qpyopengl_value_array.cpp: Fixed a bug in the handling of Arrays. [f4e8be0593cc] <5.7-maint> 2017-01-17 Phil Thompson * lib/configure.py, sphinx/installation.rst: Added the --link-full-dll option to configure.py to force a link against the full DLL on Windows. [a5ebf7ca384c] <5.7-maint> 2017-01-13 Phil Thompson * qpy/QtQml/qpyqmlobject.cpp: Fixed a bug emitting a signal defined in a super-class of a class registered with QML. [0e2a24362686] <5.7-maint> * qpy/QtQml/qpyqmllistproperty.cpp: Check that the type argument to QQmlListProperty is a QObject sub- type. [67543cbe2445] <5.7-maint> 2017-01-10 Phil Thompson * qpy/QtCore/qpycore_pyqtslotproxy.cpp: Disabled slot proxies will be ignored when checking for unique connections. [7d061b0767d5] <5.7-maint> * PyQt5.msp, lib/configure.py, rb-product, sphinx/installation.rst: Changes required to fix building for debug builds of Python. The minimum SIP requirement is now v4.19.1. [945c725e4eae] <5.7-maint> 2017-01-09 Phil Thompson * PyQt5.msp: Release the GIL on all QQmlComponent ctors that parse QML. [d9cd45f80515] <5.7-maint> * PyQt5.msp: Fixed problems building QtWebEngine against Qt v5.6. [8d9460a607dd] <5.7-maint> 2016-12-25 Phil Thompson * .hgtags: Added tag 5.7.1 for changeset a25b699c3bff [e6e0f1b22e73] <5.7-maint> * NEWS: Released as v5.7.1. [a25b699c3bff] [5.7.1] <5.7-maint> 2016-12-24 Phil Thompson * lib/configure.py: Link against the correct Python DLL when using the limited API. [b09fa4890933] <5.7-maint> 2016-12-19 Phil Thompson * sphinx/installation.rst: Updated the pyqtlicense documentation. [e8d4a7dff111] <5.7-maint> 2016-12-17 Phil Thompson * QAxContainer/qaxobject.sip: Fixed some very old convertor code in QAxContainer. [1ca987d031ad] <5.7-maint> 2016-12-15 Phil Thompson * PyQt5.msp: Updated for Qt v5.7.1. [5132c77b8800] <5.7-maint> 2016-12-14 Phil Thompson * designer/pluginloader.cpp, designer/pluginloader.h: The Designer plugin now releases the GIL once all plugins have been loaded. [57d8ce89670d] <5.7-maint> 2016-12-04 Phil Thompson * pylupdate/pylupdate_main.py: pylupdate now generates correct relative paths when -ts is used. [1ba3c08d40e4] <5.7-maint> * pyuic/uic/uiparser.py: Fixed a crash when a .ui file doesn't contain a button group when it should. [5f3cbec20103] <5.7-maint> 2016-11-25 Phil Thompson * sphinx/installation.rst: Documented the --build-tag command line option to pyqtlicense. [422623d23a48] <5.7-maint> 2016-11-23 Phil Thompson * pyuic/uic/objcreator.py, pyuic/uic/port_v2/invoke.py, pyuic/uic/port_v2/load_plugin.py, pyuic/uic/port_v3/invoke.py, pyuic/uic/port_v3/load_plugin.py, pyuic/uic/pyuic.py: Removed all pyuic code that required Python v2.5 and earlier. [446394da9951] <5.7-maint> * sphinx/deploy_commercial.rst, sphinx/extension_api.rst, sphinx/installation.rst, sphinx/introduction.rst, sphinx/pyqt4_differences.rst: All references to the website no wuse https. [16fd5cc19aab] <5.7-maint> * qpy/QtQml/qpyqmllistpropertywrapper.cpp: Fixed the QML support when using the limited API. [519b2b27c289] <5.7-maint> 2016-11-14 Phil Thompson * qpy/QtCore/qpycore_types.cpp: Fixed a regression trawling class hierachies using the limited API. [4333b8ba87fd] <5.7-maint> 2016-11-12 Phil Thompson * sphinx/installation.rst: Documented the --qt-version option to pyqtlicense. [d5efc2dd635e] <5.7-maint> 2016-11-10 Phil Thompson * PyQt5.msp: Added a missing /Out/ annotation to QWebEnginePage.javaScriptPrompt(). [c5886ff2dc94] <5.7-maint> 2016-11-04 Phil Thompson * qpy/QtCore/qpycore_qobject_helpers.cpp: Fixed a regression in the handling of ReadProperty and WriteProperty in PyQt v5.6 that broke the chapter5-listproperties.py example. [5c3d541a12a2] <5.7-maint> 2016-10-26 Phil Thompson * PyQt5.msp: Added QRegion.setRects(). [a7014a7d4259] <5.7-maint> * pyuic/uic/widget-plugins/qtcharts.py, pyuic/uic/widget- plugins/qtwebenginewidgets.py: Added widget plugins for QChartView and QWebEngineView. [29003cce4a88] <5.7-maint> * PyQt5.msp: Added Qt_5_6_2 to the %Timeline and corresponding values for later versions of Qt v5.6. [9449a57f8e13] <5.7-maint> 2016-10-25 Phil Thompson * PyQt5.msp, qpy/QtCore/qpycore_qstring.cpp: Fixed a regression building against Python v2. [935bb79a7b1c] <5.7-maint> 2016-10-24 Phil Thompson * lib/SubclassCode/mksccode.py: Updated mksccode.py to match the current handling of hidden namespaces. [fbddad196e67] <5.7-maint> 2016-10-14 Phil Thompson * pylupdate/pylupdate_main.py: Fixed a bad call in pylupdate. [9a1caa071647] <5.7-maint> 2016-10-04 Phil Thompson * sphinx/api_metadata.cfg: Added the missing QOpenGLVersionProfile to the documentation. [ed7f40f61a68] <5.7-maint> 2016-09-23 Phil Thompson * PyQt5.msp, qpy/QtCore/qpycore_qmetaobject.cpp, qpy/QtGui/qpyopengl_attribute_array.cpp, qpy/QtGui/qpyopengl_uniform_value_array.cpp, qpy/QtGui/qpyopengl_value_array.cpp: Converted all access to the user object to use the new SIP calls. [71c272511448] <5.7-maint> * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_types.cpp: Changes needed by the different way of handling plugin generated data. [e9490c8f0819] <5.7-maint> 2016-09-21 Phil Thompson * PyQt5.msp: Updates for the latest SIP changes. [1677ae8bd951] <5.7-maint> 2016-09-19 Phil Thompson * PyQt5.msp: Fixed calls to sipFindType() that were too early. [f04f4d92ab9b] <5.7-maint> * PyQt5.msp: Fixes for the latest SIP changes. [81eaffffa555] <5.7-maint> 2016-09-15 Phil Thompson * PyQt5.msp, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Added the QtWebEngine module. [8c8d065d8148] <5.7-maint> 2016-09-14 Phil Thompson * PyQt5.msp: The byteArray argume to the QBuffer ctor and setBuffer() method must be a QByteArray (and not something that can be converted to a QByteArray) because it needs to outlive the QBuffer instance. [2976e49222bb] <5.7-maint> * PyQt5.msp: Added a missing /TransferThis/ to the QWebEngineUrlSchemeHandler ctor. [29be98207b30] <5.7-maint> * qpy/QtQml/qpyqmlobject.cpp: Use a unique signal when connecting to a proxy model to allow the model to be used in multiple views. [cd6fbe437e70] <5.7-maint> 2016-09-11 Phil Thompson * QtMacExtras/QtMacExtrasmod.sip, QtMacExtras/qtmac.sip: Added the QtMac namespace to the QtMacExtras module. [581743b7d329] <5.7-maint> 2016-09-10 Phil Thompson * METADATA.in, lib/configure.py, rb-product: Add configuration information to the product file. Specifiy the minimal SIP version in the wheel meta-data. [347419aab38c] <5.7-maint> 2016-09-09 Phil Thompson * qpy/QtGui/qpyopengl_value_array.cpp: Further changes for sipGetBufferInfo(). [2dfc32d2117b] <5.7-maint> * qpy/QtGui/qpyopengl_value_array.cpp: Fixed the call to sipGetBufferInfo(). [842376cb0aa8] <5.7-maint> 2016-09-08 Phil Thompson * qpy/QtCore/qpycore_pyqtproperty.cpp: Fixed regressions in pyqtProperty. [a1d6f69fef7a] <5.7-maint> * qpy/QtGui/qpyopengl_attribute_array.cpp, qpy/QtGui/qpyopengl_misc.h, qpy/QtGui/qpyopengl_uniform_value_array.cpp, qpy/QtGui/qpyopengl_value_array.cpp: Fixed the limited API changes when using the PySequence_Fast_*() macros. [04fe0b23b049] <5.7-maint> * QAxContainer/QAxContainermod.sip, QAxContainer/qaxbase.sip, QtMacExtras/QtMacExtrasmod.sip, QtWinExtras/QtWinExtrasmod.sip, QtX11Extras/QtX11Extrasmod.sip, pylupdate/pylupdatemod.sip, pyrcc/pyrccmod.sip: The handwritten modules now all use the limited API. [939cc11b2007] <5.7-maint> * qpy/QtBluetooth/qpybluetooth_qlist.sip, qpy/QtBluetooth/qpybluetooth_quint128.sip: QtBluetooth now uses the limited API. [dec01d730da6] <5.7-maint> 2016-09-07 Phil Thompson * qpy/QtDBus/qpydbus_chimera_helpers.cpp: QtDBus now uses the limited API. [82a0acefefd3] <5.7-maint> * qpy/QtWidgets/qpywidgets_qlist.sip: QtWidgets now uses the limited API. [16de076d88c6] <5.7-maint> * qpy/QtQuick/qpyquick_chimera_helpers.cpp: QtQuick now uses the limited API. [a834a23d561b] <5.7-maint> * qpy/QtQml/qpyqml_post_init.cpp, qpy/QtQml/qpyqml_qjsvalue.cpp, qpy/QtQml/qpyqml_register_singleton_type.cpp, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmllistproperty.cpp, qpy/QtQml/qpyqmllistproperty.h, qpy/QtQml/qpyqmllistproperty.sip, qpy/QtQml/qpyqmllistpropertywrapper.cpp, qpy/QtQml/qpyqmllistpropertywrapper.h: QtQml now uses the limited API. [486082bf4be5] <5.7-maint> * qpy/QtPrintSupport/qpyprintsupport_qlist.sip: QtPrintSupport now uses the limited API. [b8c0b62a20a7] <5.7-maint> * qpy/QtNetwork/qpynetwork_qhash.sip, qpy/QtNetwork/qpynetwork_qmap.sip: QtNetwork now uses the limited API. [82798213e9a3] <5.7-maint> * qpy/QtMultimedia/qpymultimedia_qlist.sip: QtMultimedia now uses the limited API. [6f34d2b297ce] <5.7-maint> * PyQt5.msp, qpy/QtGui/qpygui_qlist.sip, qpy/QtGui/qpygui_qpair.sip, qpy/QtGui/qpygui_qvector.sip, qpy/QtGui/qpyopengl_array_convertors.cpp, qpy/QtGui/qpyopengl_attribute_array.cpp, qpy/QtGui/qpyopengl_data_cache.cpp, qpy/QtGui/qpyopengl_data_cache.h, qpy/QtGui/qpyopengl_init.cpp, qpy/QtGui/qpyopengl_uniform_value_array.cpp, qpy/QtGui/qpyopengl_value_array.cpp, qpy/QtGui/qpyopengl_version_functions.cpp: QtGui now uses the limited API. [937e89e76d2d] <5.7-maint> * qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtboundsignal.h, qpy/QtCore/qpycore_pyqtmethodproxy.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.h, qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtCore/qpycore_pyqtproperty.h, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.h: More limited API changes - QtCore now compiles and loads. [d9f7295c5dd7] <5.7-maint> * qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qpycore_types.h: More limited API changes. [00a8fbb9f360] <5.7-maint> 2016-09-05 Phil Thompson * qpy/QtCore/qpycore_qstring.cpp: The QString convertors now use the limited API. [f57db32b0b5d] <5.7-maint> * qpy/QtCore/qpycore_objectified_strings.h, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_qjsonvalue.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qpycore_types.h: The QObject helpers now use the limited API. [64c71c6a9ee3] <5.7-maint> * qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_pyqtboundsignal.h, qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.h, qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_types.cpp: pyqtSignal now uses the limited API. [9caf7074a4fe] <5.7-maint> * lib/configure.py, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.cpp, qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtCore/qpycore_pyqtproperty.h, qpy/QtCore/qpycore_types.cpp: Python v3.4 is now needed when using the limited API. pyqtProperty now uses the limited API. [4b144ae683bd] <5.7-maint> * qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.h: Moved the method proxy type to the limited API. [ae940422e87f] <5.7-maint> * qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtboundsignal.h, qpy/QtCore/qpycore_pyqtconfigure.cpp: The bound signal type is now created using the limited API. [326cb5271420] <5.7-maint> 2016-08-30 Phil Thompson * qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtslot.cpp: More limited API changes. [caef2e592071] <5.7-maint> * qpy/QtCore/qpycore_misc.cpp: Use sipCheckPluginForType(). [97c12d786d1e] <5.7-maint> 2016-08-29 Phil Thompson * qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_types.cpp: Use sipPyTypeDict() where appropriate. [eb2d099a8804] <5.7-maint> * qpy/QtCore/qpycore_classinfo.cpp, qpy/QtCore/qpycore_enums_flags.cpp: Used sipGetFrame() where appropriate. [1d3dbd765934] <5.7-maint> * qpy/QtCore/qpycore_chimera.cpp: Use sipIsUserType(). [45310e53497b] <5.7-maint> * PyQt5.msp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qpair.sip, qpy/QtCore/qpycore_qvector.sip: Refactored the date/time conversions to use the new SIP calls. [3705eb12433a] <5.7-maint> 2016-08-28 Phil Thompson * PyQt5.msp, qpy/QtCore/qjsonarray.sip, qpy/QtCore/qjsonobject.sip, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_qhash.sip, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qmap.sip, qpy/QtCore/qpycore_qobject_getattr.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qpair.sip, qpy/QtCore/qpycore_qset.sip, qpy/QtCore/qpycore_qvector.sip, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qstringlist.sip: Remove references to tp_name. [f7f509727431] <5.7-maint> * PyQt5.msp, qpy/QtCore/qjsonarray.sip, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_decorators.cpp, qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.cpp, qpy/QtCore/qpycore_pyqtpyobject.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qmap.sip, qpy/QtCore/qpycore_qmessagelogger.cpp, qpy/QtCore/qpycore_qmetaobject_helpers.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qstring.cpp, qpy/QtCore/qpycore_qvariant_value.cpp, qpy/QtCore/qpycore_qvector.sip, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qstringlist.sip: Started to switch over from the fast macros to the limited API versions. [806af319f405] <5.7-maint> 2016-08-26 Phil Thompson * PyQt5.msp, lib/configure.py, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qpycore_types.h, qpy/QtQml/qpyqmlobject.h: Eliminated the PyQt-specific meta-type. [b88f1ef8bcb0] <5.7-maint> 2016-08-24 Phil Thompson * PyQt5.msp: Enabled the limited API for all modules. [937556c0ec2b] <5.7-maint> * PyQt5.msp: Updated the %BIGetBufferCode for the limited API. [94deb582b250] <5.7-maint> * lib/configure.py: Updated configure.py to set Py_LIMITED_API for qpy code. [236a19384c91] <5.7-maint> 2016-08-23 Phil Thompson * PyQt5.msp: toString() and toCurrencyString() of QLocale now only overflow if they really have to. [f850c5c9f5b1] <5.7-maint> * qpy/QtCore/qpycore_qobject_helpers.cpp: Fixed QObject.inherits(). [c7e1a7efb2bf] <5.7-maint> 2016-08-18 Phil Thompson * lib/configure.py: Build modules with 'exceptions_off' rather than special case g++ and clang. Build static modules with 'hide_symbols' to avoid OS X weak symbol warnings. [f02239f94d5e] <5.7-maint> 2016-08-08 Phil Thompson * Makefile, build.py: Removed the old internal build system. [633d0f7fe1b7] <5.7-maint> 2016-08-03 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Reverted the conversion of bytes to 'const char *' as the latter is not supported by QMetaType and gives QSignalSpy a problem. [75a3228c629a] <5.7-maint> * qpy/pylupdate/pylupdate.h: Fixed the pylupdate changes. [02a9da7b1643] <5.7-maint> 2016-07-27 Phil Thompson * pylupdate/pylupdate_main.py, pylupdate/pylupdatemod.sip, qpy/pylupdate/merge.cpp: Moved a pylupdate progress message to C++ to avoid out-of-order messages. [6f932fba5b39] <5.7-maint> * sphinx/introduction.rst: Clarified the docs intro about the inclusion of Qt in wheels. [8d01fcc7cdd0] <5.7-maint> 2016-07-25 Phil Thompson * METADATA.in: Removed the Obsoletes tag from METADATA. [3055d670d1da] * .hgtags: Added tag 5.7 for changeset 5e459651a5cb [bb3ddca217a0] * NEWS: Released as v5.7. [5e459651a5cb] [5.7] * lib/configure.py: Simplified the setting of PATH to include the qmake directory. [8b1b53bd60b1] 2016-07-24 Phil Thompson * pylupdate/pylupdate_main.py, pyrcc/pyrcc_main.py, pyuic/uic/pyuic.py: Provided pylupdate, pyrcc and pyuic with main() wrappers that are invoked by pip generated wrappers. [0be6588d6b5c] 2016-07-22 Phil Thompson * lib/configure.py: When --qmake is used on Windows add the directory containing qmake to PATH. [c9fb16354936] * NEWS: Updated the NEWS file. [fd3b3f3e721c] 2016-07-19 Phil Thompson * METADATA.in: Updates to METADATA. [24491cc4092b] 2016-07-17 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Fixed the error message when an attempt is made to connect to a pyqtSlot decorated method of a non-QObject class. [84bb348755e1] 2016-07-12 Phil Thompson * pylupdate/pylupdate_main.py: Make sure the progress messages from pylupdate appear in the right order. [975fc04a1d1d] * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Further fixes for choosing the right pyqtSlot decorator for a signal. [96281e6eb259] 2016-07-11 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Fixed an out-of-bound index regression. [d4fcde1ad4e1] 2016-07-07 Phil Thompson * PyQt5.msp: Completed the support for Qt v5.7.0. [877c3a8a6cbd] * PyQt5.msp: Updated QtWidgets for Qt v5.7.0. [4f59eafc77cf] 2016-07-06 Phil Thompson * PyQt5.msp, sphinx/api_metadata.cfg: Updated most of QtWebEngineWidgets for Qt v5.7.0. [ca2289d9d0d0] * PyQt5.msp: Updated QtGui for Qt v5.7.0. [02bfa6bb3c5d] * PyQt5.msp: Updated QtCore for Qt v5.7.0. [d9bf4daa7994] 2016-07-05 Phil Thompson * PyQt5.msp: Added some Qt v5.7.0 support. [7e56302498df] 2016-06-30 Phil Thompson * PyQt5.msp: Initial scan of Qt v5.7.0. [659af5655c90] * build.py, installers/AddToPath.nsh, installers/BuildGPL.txt, installers/PyQt5-Qt5-gpl.nsi, installers/StrSlash.nsh, installers /mysql-config.bat, installers/psql-config.bat, installers/pyqt5-check.py, installers/pyqt5-config.bat, installers /qsci-pyqt5-config.bat, installers/qt5-config.bat, installers/sip- pyqt5-config.bat: Removed the old .nsi installers. [22449f1b0af2] * lib/PlansForWheels.txt, pylupdate/fetchtr.cpp, pylupdate/main.cpp, pylupdate/merge.cpp, pylupdate/metatranslator.cpp, pylupdate/metatranslator.h, pylupdate/numberh.cpp, pylupdate/proparser.cpp, pylupdate/proparser.h, pylupdate/sametexth.cpp, pylupdate/simtexth.cpp, pylupdate/simtexth.h, pylupdate/translator.cpp, pylupdate/translator.h, pyrcc/main.cpp, pyrcc/rcc.cpp, pyrcc/rcc.h, rbproduct.py: Merged the v5.6 maintenance branch into the trunk. [7b8de1cc9585] * qpy/QtCore/qpycore_qt_conf.cpp: Removed the (now unnecessary) special handling of qt.conf on Windows. [1ada2bed3c1d] <5.6-maint> 2016-06-28 Phil Thompson * sphinx/multiinheritance.rst: Fixed a typo in the docs. [129e481a1ef1] <5.6-maint> 2016-06-27 Phil Thompson * lib/configure.py: Fixed the creation of the .api file. [8374c4c770c2] <5.6-maint> 2016-06-23 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Fixed a regression in the special handling of QGraphicsItem. [02bc5a7d40d6] <5.6-maint> 2016-06-22 Phil Thompson * PyQt5.msp: Add some %Imports so that a module imports all the modules it explicitly references. [bb6823120280] <5.6-maint> * PyQt5.msp: Updated for Qt v5.6.1. [0ce20a30a8a1] <5.6-maint> 2016-06-21 Phil Thompson * .hgignore, PyQt5.msp: Updated QtBluetooth for Qt v5.6.1. [db0d3198b0da] <5.6-maint> * rb-product, rbproduct.py: Replaced the product plugin with a product file. [a027ea04a02f] <5.6-maint> 2016-06-20 Phil Thompson * rbproduct.py: Implemented the minimal-build. [cff7f5006501] <5.6-maint> * rbproduct.py: The product plugin uses the sip from a minimal sip build. [342d116ba9d6] <5.6-maint> * commercial/pyqt-commercial.sip, lib/pyqt-commercial.sip, rbproduct.py: More product plugin refactoring. [674b4a8b867f] <5.6-maint> 2016-06-18 Phil Thompson * rbproduct.py: Updates to the product plugin in preparation for replacing build.py. [2c314a5a11df] <5.6-maint> 2016-05-30 Phil Thompson * sphinx/qt_properties.rst: Removed some (aparant) ambibuity in the docus related to pyqtProperty. [62540c04cb07] <5.6-maint> 2016-05-27 Phil Thompson * rbproduct.py: Updated the product plugin to add pylupdate5 and pyrcc5 to wheels. [117c4d6d7ed5] <5.6-maint> * Makefile, build.py, lib/configure.py, pylupdate/fetchtr.cpp, pylupdate/main.cpp, pylupdate/merge.cpp, pylupdate/metatranslator.cpp, pylupdate/metatranslator.h, pylupdate/numberh.cpp, pylupdate/proparser.cpp, pylupdate/proparser.h, pylupdate/pylupdate_main.py, pylupdate/pylupdatemod.sip, pylupdate/sametexth.cpp, pylupdate/simtexth.cpp, pylupdate/simtexth.h, pylupdate/translator.cpp, pylupdate/translator.h, pyrcc/pyrcc_main.py, qpy/pylupdate/fetchtr.cpp, qpy/pylupdate/merge.cpp, qpy/pylupdate/metatranslator.cpp, qpy/pylupdate/metatranslator.h, qpy/pylupdate/numberh.cpp, qpy/pylupdate/proparser.cpp, qpy/pylupdate/proparser.h, qpy/pylupdate/pylupdate.h, qpy/pylupdate/sametexth.cpp, qpy/pylupdate/simtexth.cpp, qpy/pylupdate/simtexth.h, qpy/pylupdate/translator.cpp, qpy/pylupdate/translator.h: Refactored pylupdate5 to be a wrapper around a Python extension module. [2793a3f7cd3d] <5.6-maint> * Makefile, build.py, lib/configure.py, pyrcc/main.cpp, pyrcc/pyrcc_main.py, pyrcc/pyrccmod.sip, pyrcc/rcc.cpp, pyrcc/rcc.h, qpy/pyrcc/rcc.cpp, qpy/pyrcc/rcc.h: Refactored pyrcc5 so that it is a Python wrapper around a C++ extension module. [7f2ffc54b8b7] <5.6-maint> 2016-05-23 Phil Thompson * rbproduct.py: Removed a duplicated import in the product plugin. [8b00d4415e7d] <5.6-maint> 2016-05-21 Phil Thompson * qpy/QtCore/qpycore_public_api.cpp: Fixed a reference count problem in py_err_print(). [427d33257f8b] <5.6-maint> 2016-05-20 Phil Thompson * sphinx/installation.rst: Installation docs updates regarding MSVC 2015. [43f7f646b5f1] <5.6-maint> * PyQt5.msp: Added some /ReleaseGIL/ annotations to potentially time consuming methods of QSvgRenderer. [9926569b7c70] <5.6-maint> * qpy/QtCore/qpycore_public_api.cpp: Fixed a recursion problem when handling uncaught Python exceptions. [2bb4251641d5] <5.6-maint> 2016-05-16 Phil Thompson * sphinx/installation.rst: More documentation updates. [99509478d73f] <5.6-maint> 2016-05-15 Phil Thompson * sphinx/installation.rst: Updated the installation instruction to cover wheels and pyqtlicense. [d59c0d20804e] <5.6-maint> 2016-05-12 Phil Thompson * METADATA.in, rbproduct.py: Try to prevent the GPL and commercial versions being installed at the same time. (Although it doesn't seem to work.) [43e83a4358f7] <5.6-maint> * METADATA.in, rbproduct.py: Configure the PKG-INFO meta-data according to the license. [fab20f18cc82] <5.6-maint> * lib/PlansForWheels.txt: Removed the plan for implementing wheels as it is now implemented. [fe01c4744c57] <5.6-maint> 2016-05-11 Phil Thompson * PyQt5.msp: Eliminate a compiler warning message. [988950701a58] <5.6-maint> 2016-05-10 Phil Thompson * rbproduct.py: More changes to the product plugin required by rbtools. [1a1f56ebde3a] <5.6-maint> 2016-05-09 Phil Thompson * rbproduct.py: Updates to the product plugin for the latest rbtools changes. [f9f06f093901] <5.6-maint> * rbproduct.py: Give commercial unlicensed wheels a non-standard extension. [a24e4ce279f6] <5.6-maint> * commercial/BuildNotes.txt, commercial/pyqtlicense.pdy, commercial/pyqtlicense.py: Moved pyqtlicense to a separate repo. [7ccc7256c707] <5.6-maint> 2016-05-08 Phil Thompson * commercial/BuildNotes.txt, commercial/pyqtlicense.pdy: pyqtlicense can now be built for OS X. [8b303294336e] <5.6-maint> * pyuic/uic/pyuic.py: Fixed misleading help text in pyuic5. [b5b8f9ddca13] <5.6-maint> * commercial/BuildNotes.txt, commercial/pyqtlicense.pdy: Added the initial .pdy file for pyqtlicense. [8b0724883824] <5.6-maint> 2016-05-05 Phil Thompson * METADATA.in: Fixed out of date information in the meta-data. [c1e0ebea4ad4] <5.6-maint> 2016-05-03 Phil Thompson * sphinx/incompatibilities.rst: Documented the slot signature checking as a potential incompatibility. [12c3868cce84] <5.6-maint> * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_pyqtboundsignal.cpp: Fixed connections to decorated slots to enforce the slot signature and not silently ignore the decorator. sip.voidptr and bytes arguments to the decorator now generate an appropriate C++ type. [2a1416f9a2d3] <5.6-maint> 2016-04-30 Phil Thompson * examples/multimediawidgets/camera/camera.py: Fixed a bug in the camera.py example. [20f251a709d4] <5.6-maint> 2016-04-29 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Don't expect QVariant convertor helpers to handle None. [145437cb0acf] <5.6-maint> 2016-04-28 Phil Thompson * PyQt5.msp: Added /ReleaseGIL/ to QPushButton.event() because it can trigger the display of a QMenu which will enter its own event loop. [9c50925525e4] <5.6-maint> 2016-04-27 Phil Thompson * commercial/pyqtlicense.py: Added the --qt option to pyqtlicense. [8054d2d4db90] <5.6-maint> * commercial/pyqtlicense.py: Implemented the --openssl option of pyqtlicense. [c4fb07c17181] <5.6-maint> * commercial/pyqtlicense.py: Implemented the --no-msvc-runtime and --no-openssl options to pyqtlicense. [4591c0e28b5a] <5.6-maint> 2016-04-26 Phil Thompson * commercial/pyqt-commercial.sip: Licensing on OS X now works. [a3b0438a540f] <5.6-maint> 2016-04-25 Phil Thompson * commercial/pyqt-commercial.sip: Debugged the license check code. [5f579e057d18] <5.6-maint> * commercial/pyqt-commercial.sip, commercial/pyqtlicense.py: Initial implementation of pyqtlicense. [93328b3c897a] <5.6-maint> * Makefile, commercial/pyqt-commercial.sip, rbproduct.py: Implemented the creation of unlicensed commercial wheels. [f042971d28ec] <5.6-maint> * lib/configure.py: --no-timestamps no longer passes the (redundant) -T flag to sip. [77bff7d59668] <5.6-maint> * lib/configure.py: Fixed the handling of dbus-python if it has multiple include directories. [db626499ded9] <5.6-maint> * installers/PyQt5-Qt5-gpl.nsi: Fixed the Windows installers so that QtWebEngineProcess works. [06ecf8131050] <5.6-maint> 2016-04-24 Phil Thompson * .hgtags: Added tag 5.6 for changeset ae50bac2ef88 [b1939581dab4] * NEWS: Released as v5.6. [ae50bac2ef88] [5.6] * rbproduct.py: The SSL library and MSVC runtime are now installed in the PyQt5 directory. [6b7672768236] 2016-04-23 Phil Thompson * qpy/QtCore/qpycore_qt_conf.cpp: Fixed the setting of PATH on Windows. [8a95f97ca7aa] * METADATA.in, installers/BuildGPL.txt, installers/PyQt5-Qt5-gpl.nsi, installers/pyqt5-check.py, installers/pyqt5-config.bat, lib/LICENSE.commercial.short, lib/LICENSE.gpl, lib/LICENSE.gpl.short, lib/LICENSE.internal: Updated the installers fro Qt v5.6.0. Fixed the dates on copyright messages. Updated the meta-data to say that Linux wheels will be available on PyPI. [f9cf4e3290c7] 2016-04-21 Phil Thompson * qpy/QtCore/qpycore_qt_conf.cpp: When --qtconf-prefix is specified then PATH is alos set on Windows. [d147afaee2c6] 2016-04-18 Phil Thompson * lib/configure.py, rbproduct.py: Removed some (now redundant) qmake handlign on Windows. [02f8ab12f5ad] 2016-04-17 Phil Thompson * lib/configure.py, rbproduct.py: More handling of spaces in directory names. Account for different Makefile structures on Windows. [94a4e61390a3] * rbproduct.py: Fixed a testing regression in the product plugin. [8e05253f91d8] * sphinx/installation.rst: Removed a Sphinx warning. [dd499921d5fb] * rbproduct.py: Implemented the minimal install in the product plugin. [8e25715c1d82] * rbproduct.py: Exploit verbose mode in the product plugin. [8099e3b3bca3] * rbproduct.py: Fixed permissions on the product plugin. [19c006f2d22c] 2016-04-16 Phil Thompson * rbproduct.py: The QScintilla API file is now included in the wheels. [a8aa89c52747] * METADATA.in: Fixed a typo in the meta-data. [8f14fe6ee051] * Makefile, build.py, rbproduct.py: Removed the --omit-license-tag option from build.py as it is no longer needed. [d24af7ea1d4c] 2016-04-15 Phil Thompson * PyQt5.msp, qpy/QtWidgets/qmaccocoaviewcontainer.sip: QMenu.setAsDockMenu() is not available on iOS. [8dba3377ce19] 2016-04-14 Phil Thompson * lib/configure.py: The --dbus option to configure.py overrides (rather than supplements) any directories returned by pkg-config. [e39f0eeff58b] * Makefile, lib/configure.py: Fixed the handling of dbus-python header files. [608f71af6d2f] * qpy/QtCore/qpycore_qt_conf.cpp: Adjusted qt.conf on Windows so that QtWebEngineProcess can be found. [a4d8055d6b1a] * Makefile, build.py, rbproduct.py: Ensure regular snapshots have the license tag but those used in wheels don't. [ca8272fb55ff] 2016-04-12 Phil Thompson * rbproduct.py: Fixes for the additional Windows DLLs. [8402c18b9cfe] * rbproduct.py: Windows wheels will now install OpenSSL DLLs and the MSVC C++ runtime DLL. [d8f47655a777] 2016-04-09 Phil Thompson * METADATA.in: Updated the description in the meta-data. [94bd36376d2a] 2016-04-08 Phil Thompson * METADATA.in: Update the METADATA to try and require sip. [6a2e30c56378] * METADATA.in, build.py: Use v1.1 for the METADATA format. Don't tag the GPL source packages with '_gpl' because of the knock-on effect with PyPi. [04357f447388] * sphinx/qml.rst: Fixed a sphinx warning. [00b1ee427a44] * METADATA.in, rbproduct.py: Added the METADATA.in file. [0d593d43bf70] 2016-04-06 Phil Thompson * rbproduct.py: Added the test for SQL drivers to the product plugin. [9d2b4177b3cf] * rbproduct.py: Fixed the tests defined in the product plugin. [21a0cdb51e30] 2016-04-05 Phil Thompson * rbproduct.py: Added more tests to the product plugin. [9f8f7adbdcf0] * rbproduct.py: Properly defined the PyQt5 modules in the product plugin. [63dc33b74805] * rbproduct.py: Added the rbtools product plugin. [da8471176b5c] 2016-04-04 Phil Thompson * lib/configure.py, qpy/QtCore/qpycore_qt_conf.cpp, sphinx/installation.rst: Removed --qtconf-libraries. [b750e716119b] * lib/configure.py, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_qt_conf.cpp, sphinx/installation.rst: Renamed --qt-prefix-path to --qtconf-prefix. Added --qtconf- libraries. [e63e022443bc] 2016-04-03 Phil Thompson * lib/configure.py: More spaces-in-path fixes. [bebf960c9e18] * lib/configure.py: Fixed the invocation of sip if it has spaces in its path. [a491032a2f01] 2016-04-02 Phil Thompson * lib/configure.py, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_qt_conf.cpp: The Qt prefix path is now calculated at run-time to make it re- locatable. [0c8718600680] 2016-04-01 Phil Thompson * lib/configure.py: Fixed the embedded qt.conf. [def17c899da2] 2016-03-31 Phil Thompson * lib/configure.py, qpy/QtCore/qpycore_post_init.cpp.in, sphinx/installation.rst: Added the --qt-prefix-path option to configure.py. [7e55c68410fe] * PyQt5.msp: Fixed an annotation typo. [bd8301c85566] 2016-03-29 Phil Thompson * PyQt5.msp: Added the missing qt_set_sequence_auto_mnemonic() to QtGui. [1cc2ecff7245] 2016-03-28 Phil Thompson * PyQt5.msp: Added the missing MouseLock to QWebEnginePage.Feature. [49675f503e40] * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Backed out an incorrect fix (not mentioned in the previous(?) commit). [3a53b336acd1] * qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_qobject_getattr.cpp: Respect method names starting with '__' found in the meta-object as private as they are most likely to be Python methods decorated with pyqtSlot. [6cb67313a7f3] 2016-03-27 Phil Thompson * lib/PlansForWheels.txt: Added the plan for handling commercial and GPL wheels. [dfc074229564] 2016-03-26 Phil Thompson * Makefile, lib/configure.py, sphinx/installation.rst: Added the --rpath option to configure.py. [2787cd711d1c] 2016-03-25 Phil Thompson * QAxContainer/qaxbase.sip: Removed deprecated /DocValue/ annotations. [1f2319650dff] * build.py: Apply the new naming standards to generated source packages. [e1f0d30ea050] 2016-03-24 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Connecting to a decorated method will now fail without a compatible signature. [d58baf1a1473] * examples/quick/models/abstractitemmodel/abstractitemmodel.py: Fixed a bug in the abstyractitemmodel.py example. [654315b1dcf6] 2016-03-18 Phil Thompson * PyQt5.msp: Added the missing WA_DontShowOnScreen. [571b2ed0ce32] 2016-03-17 Phil Thompson * qpy/QtCore/qsysinfo.sip: Updated for Qt v5.6.0. Added the missing QSysInfo static functions. [740db730593a] 2016-03-13 Phil Thompson * pyuic/uic/driver.py, pyuic/uic/pyuic.py: Fixed a couple of pyuic syntax errors. [70e9fff5c84d] 2016-03-12 Phil Thompson * PyQt5.msp: Restored the QFlags copy ctor to ensure assignment helpers are generated. [2c5cceeba03a] 2016-03-11 Phil Thompson * qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: Fixed a deadlock problem in the implementation of QML proxies. [293152ad5ca1] 2016-03-09 Phil Thompson * examples/designer/plugins/widgets/helloglwidget.py: Fixed the heeloglwidget.py example so that it doesn't use PyOpenGL. [2d7a76584798] * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_types.cpp, sphinx/metaobjects.rst: Fixed the defining of enums and flags so that they appear as expected in Qt Designer. [0f17783785e4] 2016-03-08 Phil Thompson * qpy/QtCore/qpycore_types.cpp: Don't include an explicit scope when implementing Q_ENUMS and Q_FLAGS. [256cb1cf3c5d] * examples/designer/plugins/python/multipagewidgetplugin.py, examples/designer/plugins/widgets/multipagewidget.py: Fixes to the plugins.py example. [151f0d8f13e8] * pyuic/uic/Compiler/compiler.py, pyuic/uic/Compiler/misc.py, pyuic/uic/__init__.py, pyuic/uic/driver.py, pyuic/uic/pyuic.py, sphinx/designer.rst: Added the --import-from command line argument to pyuic5. [d05ca4f9dda7] 2016-03-07 Phil Thompson * PyQt5.msp: Added the QVersionNumber class. [c660515bc830] * PyQt5.msp: Updated QtOpenGL for Qt v5.6rc. [ea5c02548075] * lib/configure.py, sphinx/platforms.rst: The Qt v5.5 rpath problems seem to have been fixed in v5.6. [5205794e6b9a] * PyQt5.msp, lib/SubclassCode/QtQuick.versions: Updated the QObject convertor code for QtQuick and QtWebEngineCore. [82eea261797e] 2016-03-06 Phil Thompson * PyQt5.msp, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Implemented the QtWebEngineCore module. [023eb0e60c08] * PyQt5.msp: Completed the QtWidgets updates for Qt v5.6rc. [045ee6a65f5f] 2016-03-05 Phil Thompson * PyQt5.msp: Started updating the QtWidgets module for Qt v5.6rc. [742e6cc983e8] * sphinx/api_metadata.cfg: Updated the API metadata for new classes added so far. [531a749af28d] * PyQt5.msp: Updated the QtQml, QtQuick, QtQuickWidgets, QtSensors, QtSerialPort, QtSql, QtSvg and QtTest modules for Qt v5.6rc. [b3632c46462b] 2016-03-04 Phil Thompson * PyQt5.msp: Updated the QtNfc, QtPositioning, QtPrintSupport, QtXml and QtXmlPatterns modules for Qt v5.6rc. [ae1f88b0c079] * PyQt5.msp, qpy/QtMultimedia/qpymultimedia_qlist.sip: Updated the QtHelp, QtLocation, QtMultimedia, QtMultimediaWidgets and QtNetwork modules for Qt 5.6rc. [b957d29ef95c] * PyQt5.msp: Completed the QtGui support for Qt v5.6rc. [e30d789c0141] * PyQt5.msp: More QtGui updates for Qt v5.6rc. [e232b46d197a] 2016-03-03 Phil Thompson * PyQt5.msp: Partially implemented the Qt v5.6rc support for the QtGui module. [eb7a53fdfb5b] 2016-03-02 Phil Thompson * PyQt5.msp: Updated the QtDBus and QtDesigner modules for Qt v5.6.0rc. [242ffa94e504] * PyQt5.msp: Updated the QtCore module for Qt v5.6.0rc. [75369fe650fe] 2016-03-01 Phil Thompson * PyQt5.msp: Updated the Enginio and QtBluetooth modules for Qt v5.6rc. [b86fccf0f71e] * lib/configure.py: Don't embed the -f flag in PYQT_CONFIGURATION. [c1a15cadbc73] * PyQt5.msp: All implementations of swap() now have the /Constrained/ annotation. [fb287ed7e9da] * Makefile, PyQt5.msp: Removed a redundant QBrush ctor. [5f34d42010aa] 2016-02-29 Phil Thompson * PyQt5.msp: Fixed the previous change. [b86e13d182d7] * Makefile, PyQt5.msp: Removed the redundant QVariant copy ctor. [0cb802120239] 2016-02-27 Phil Thompson * Merged the 5.5-maint branch into the trunk. [f923036edfe1] * PyQt5.msp: Fixed the type hint for QDesktopServices.setUrlHandler(). [0fa72a09eb1e] <5.5-maint> * PyQt5.msp, qpy/QtBluetooth/qpybluetooth_qlist.sip, qpy/QtCore/qjsonarray.sip, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qset.sip, qpy/QtCore/qpycore_qvector.sip, qpy/QtCore/qstringlist.sip, qpy/QtGui/qpygui_qvector.sip, qpy/QtMultimedia/qpymultimedia_qlist.sip, qpy/QtPrintSupport/qpyprintsupport_qlist.sip, qpy/QtWidgets/qpywidgets_qlist.sip: Use Iterable rather than Iterator in type hints. [ab690c76000c] <5.5-maint> 2016-02-26 Phil Thompson * PyQt5.msp: Removed some superfluous ctors. [f0c110db9340] <5.5-maint> * PyQt5.msp: Make sure the datetime module is available in stub files. [aad90c9b7268] <5.5-maint> * PyQt5.msp: Updated type hints for classes with %ConvertToTypeCode. [0f619b3c60e2] <5.5-maint> 2016-02-25 Phil Thompson * PyQt5.msp, qpy/QtQml/qmlregistertype.sip: Updated the project version number. More type hint improvements. [8be0a10b466f] <5.5-maint> 2016-02-24 Phil Thompson * PyQt5.msp: More changes to the type hints. [5a3f980959af] <5.5-maint> 2016-02-19 Phil Thompson * PyQt5.msp: Fixed some handwritten type hine code. [2677d628d385] <5.5-maint> 2016-02-18 Phil Thompson * test/tests/classes/test_QFlags.py: Added the QFlags unit tests. [796954fadf1e] <5.5-maint> * lib/configure.py: SIP warnings are now treated as fatal. [ef2c015cb086] <5.5-maint> * Makefile, PyQt5.msp: Updated the QFlags support from PyQt4. [5bd2318ecef3] <5.5-maint> * PyQt5.msp: Completed the conversion to /TypeHint/. [7d4c7c1162e0] <5.5-maint> * PyQt5.msp: Updated the type hints for the OpenGL modules. [a3d88993c395] <5.5-maint> 2016-02-17 Phil Thompson * PyQt5.msp, qpy/QtCore/qjsonarray.sip, qpy/QtCore/qjsonobject.sip, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtconfigure.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_qhash.sip, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qmap.sip, qpy/QtCore/qpycore_qmetaobject_helpers.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qpair.sip, qpy/QtCore/qpycore_qset.sip, qpy/QtCore/qpycore_qstring.cpp, qpy/QtCore/qpycore_qvector.sip, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qstringlist.sip, qpy/QtGui/qpygui_qlist.sip, qpy/QtGui/qpygui_qpair.sip, qpy/QtGui/qpygui_qvector.sip, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_array_convertors.cpp, qpy/QtGui/qpyopengl_attribute_array.cpp, qpy/QtGui/qpyopengl_uniform_value_array.cpp, qpy/QtGui/qpyopengl_value_array.cpp, qpy/QtMultimedia/qpymultimedia_qlist.sip, qpy/QtNetwork/qpynetwork_qhash.sip, qpy/QtPrintSupport/qpyprintsupport_qlist.sip, qpy/QtQml/qpyqmllistpropertywrapper.cpp, qpy/QtQuick/qpyquick_chimera_helpers.cpp, qpy/QtWidgets/qpywidgets_qlist.sip: Removed all uses of SIP_SSIZE_T. [f1c9ab62de9e] <5.5-maint> 2016-02-16 Phil Thompson * PyQt5.msp, qpy/QtBluetooth/qpybluetooth_qlist.sip, qpy/QtBluetooth/qpybluetooth_quint128.sip, qpy/QtCore/qjsonarray.sip, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qpair.sip, qpy/QtCore/qpycore_qset.sip, qpy/QtCore/qpycore_qvector.sip, qpy/QtCore/qstringlist.sip, qpy/QtGui/qpygui_qlist.sip, qpy/QtGui/qpygui_qpair.sip, qpy/QtGui/qpygui_qvector.sip, qpy/QtMultimedia/qpymultimedia_qlist.sip, qpy/QtPrintSupport/qpyprintsupport_qlist.sip, qpy/QtWidgets/qpywidgets_qlist.sip: Removed all occurrences of SIP_SSIZE_T_FORMAT. [6c323983f866] <5.5-maint> * Makefile, PyQt5.msp: Make use of the new type hint class annotaions for QVariant. [9e1f9b26502f] <5.5-maint> * PyQt5.msp: Fix the type hints for signals and slots. [a7286c0088ff] <5.5-maint> * PyQt5.msp: Migrated the simple uses of /DocValue/ to /TypeHint/. [17fe5ba76141] <5.5-maint> * Makefile, PyQt5.msp: Removed /TypeHintValue/ when they will now be picked up from the mapped type. [e9ca1dfbd2f9] <5.5-maint> * sphinx/gotchas.rst: Extended the section of QString gotchas to include null vs. empty strings. [4f9c20591646] <5.5-maint> 2016-02-15 Phil Thompson * Makefile, PyQt5.msp, qpy/QtBluetooth/qpybluetooth_qlist.sip, qpy/QtCore/qjsonarray.sip, qpy/QtCore/qjsonobject.sip, qpy/QtCore/qpycore_qhash.sip, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qmap.sip, qpy/QtCore/qpycore_qset.sip, qpy/QtCore/qpycore_qvector.sip, qpy/QtCore/qstringlist.sip, qpy/QtGui/qpygui_qlist.sip, qpy/QtGui/qpygui_qvector.sip, qpy/QtMultimedia/qpymultimedia_qlist.sip, qpy/QtNetwork/qpynetwork_qhash.sip, qpy/QtNetwork/qpynetwork_qmap.sip, qpy/QtPrintSupport/qpyprintsupport_qlist.sip, qpy/QtWidgets/qpywidgets_qlist.sip: Added /TypeHintValue/ to all mapped types that might have a default value. [2f5d9532caf3] <5.5-maint> * qpy/QtBluetooth/qpybluetooth_qlist.sip, qpy/QtBluetooth/qpybluetooth_quint128.sip, qpy/QtCore/qjsonarray.sip, qpy/QtCore/qjsonobject.sip, qpy/QtCore/qpycore_qhash.sip, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qmap.sip, qpy/QtCore/qpycore_qpair.sip, qpy/QtCore/qpycore_qset.sip, qpy/QtCore/qpycore_qvector.sip, qpy/QtCore/qstringlist.sip, qpy/QtDBus/qpydbusreply.sip, qpy/QtGui/qpygui_qlist.sip, qpy/QtGui/qpygui_qpair.sip, qpy/QtGui/qpygui_qvector.sip, qpy/QtMultimedia/qpymultimedia_qlist.sip: Updated the type hints for all handwritten code. [1fc9973d53a9] <5.5-maint> * qpy/QtCore/qpycore_pyqtslot.cpp: Updated the comment in the previous change. [7bfc1d8650d4] <5.5-maint> * qpy/QtCore/qpycore_pyqtslot.cpp: Fixed a bug disconnecting wrapped C++ methods. [a930ddb1c6a7] <5.5-maint> 2016-02-13 Phil Thompson * sphinx/gotchas.rst, sphinx/pyqt4_differences.rst: Added a section to the gotchas chapter about patterns to avoid crashes on exit. [da3142f18207] <5.5-maint> 2016-02-12 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_qobject_helpers.cpp: Improved the support for Qt properties. Allow a QVariantMap to be converted to a dict if that was what was expected. [57ba51c12753] <5.5-maint> 2016-02-11 Phil Thompson * examples/network/lightmaps.py: Fixed the lightmaps.py example. [9897e881d280] <5.5-maint> * PyQt5.msp: Added comments explaining why deleting top level widgets is a bad idea. [eced50bba03e] <5.5-maint> 2016-02-10 Phil Thompson * qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtslot.cpp: Fixed a crash when a proxy for a non-method callable might be invoked while the proxy is being garbage collected. [fc21a0a97001] <5.5-maint> * qpy/QtDBus/qpydbuspendingreply.sip, qpy/QtDBus/qpydbusreply.sip, qpy/QtNetwork/qpynetwork_qhash.sip, qpy/QtNetwork/qpynetwork_qmap.sip, qpy/QtPrintSupport/qpyprintsupport_qlist.sip, qpy/QtQml/qpyqmllistproperty.sip, qpy/QtWidgets/qpywidgets_qlist.sip: Removed some of the handwritten uses of DocType. [23c5a8da2265] <5.5-maint> * qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp: Updated the repr() of bound and unbound signals as per PyQt4. [807eb26f59ef] <5.5-maint> * lib/configure.py, sphinx/installation.rst: Added the --no-stubs and --stubdir options to configure.py. [7b60214e8c60] <5.5-maint> * lib/LicenseFAQ.txt: Updated the license FAQ to make sure the version numbers of the commercial and GPL versions match. [273545f90a4a] <5.5-maint> 2016-02-08 Phil Thompson * sphinx/pyqt4_differences.rst: Tone down the warnings about not using a main() function. [d304857728a3] <5.5-maint> 2016-02-06 Phil Thompson * PyQt5.msp, lib/configure.py, qpy/QtCore/qpycore_chimera.cpp, qpy/QtWidgets/qpywidgets_api.h, qpy/QtWidgets/qpywidgets_chimera_helpers.cpp, qpy/QtWidgets/qpywidgets_chimera_helpers.h, qpy/QtWidgets/qpywidgets_post_init.cpp: Fixed the special handling of QGraphicsItem so that it doesn't interfere with parsing pyqtSignal argument types. [71cd6c6e7045] <5.5-maint> 2016-02-05 Phil Thompson * PyQt5.msp: Updated the project file to v8. [3df32493cb78] <5.5-maint> 2016-01-30 Phil Thompson * PyQt5.msp: Renamed QUrlFormattingOption.None to None_. [d4c8f03f6403] <5.5-maint> 2016-01-25 Phil Thompson * lib/configure.py: Removed some redundant Borland support. [0f60e49c22df] <5.5-maint> * lib/configure.py, sphinx/installation.rst: The --qmake option has been added to configure.py when running on Windows on the assumption that the historical problem of invoking qmake with a path has been resolved. [d2653451e966] <5.5-maint> 2016-01-22 Phil Thompson * qpy/QtCore/qpycore_types.h: Removed some redundant data structures. [b071187c2187] <5.5-maint> * qpy/QtCore/qpycore_types.h: Fixes for the latest sip v5. [fb770c78e3dd] <5.5-maint> * qpy/QtQml/qpyqml_register_type.cpp: Fixed a regression in the registering of QtQuick items. [0d9e60c88804] <5.5-maint> 2016-01-21 Phil Thompson * PyQt5.msp, qpy/QtDBus/qpydbus_post_init.cpp, qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml_post_init.cpp, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQuick/qpyquick_post_init.cpp: Call Q_ASSERT() for values returned by sipImportSymbol(). [6ecc7eb4b7b8] <5.5-maint> 2016-01-20 Phil Thompson * PyQt5.msp: Removed an unused reference to the public API. [e09839f29cbd] <5.5-maint> 2016-01-18 Phil Thompson * PyQt5.msp: Make sure QQmlProperty.connectNotifySignal() behaves the same as the PyQt4 equivalent. [074e64f58b7f] <5.5-maint> * qpy/QtCore/qpycore_public_api.cpp: Fixed a compilation error. [41cfb44def2b] <5.5-maint> * qpy/QtCore/qpycore_public_api.cpp: Improved the error reporting in pyqt5_get_pyqtslot_parts(). [5336dad73d73] <5.5-maint> 2016-01-17 Phil Thompson * PyQt5.msp: Use "slot" as an argument type consistently. [3e72e500339c] <5.5-maint> * PyQt5.msp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, sphinx/extension_api.rst: Re-implemented QWizardPage.registerField(). Fixed QWizard.setDefaultProperty(). The transmitter argument to pyqt5_get_signal_signature() is now optional. [b701cde0001b] <5.5-maint> 2016-01-11 Phil Thompson * lib/configure.py, qpy/QtCore/qpycore_decorators.cpp, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.cpp, qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_types.cpp, qpy/QtGui/qpyopengl_data_cache.cpp, qpy/QtQml/qpyqmllistproperty.cpp, qpy/QtQml/qpyqmllistpropertywrapper.cpp: Fixes for sip5. [74c8e3a5a137] <5.5-maint> 2016-01-06 Phil Thompson * sphinx/signals_slots.rst: Documented the PyQt_PyObject signal argument type. [b7d0ec91f94b] <5.5-maint> 2016-01-05 Phil Thompson * PyQt5.msp: Fixed the conversion of TouchCancel touch events. [a611260e4cb5] <5.5-maint> 2015-12-15 Phil Thompson * Makefile: Switched the internal build system to Python v3.5. [60e96c2f91b5] <5.5-maint> 2015-12-14 Phil Thompson * Makefile: Added support for venv to the internal build system. [1f541a9bc326] <5.5-maint> 2015-12-12 Phil Thompson * PyQt5.msp: Added the internal QQuickCloseEvent as an opaque class. Added the QQuickWindow::closing() signal. [61e0fc70e389] <5.5-maint> 2015-12-05 Phil Thompson * pyuic/uic/uiparser.py: Fixed pyuic's handling of the margins of layout widgets. [5b5f0fb1b3f6] <5.5-maint> 2015-11-16 Phil Thompson * sphinx/platforms.rst: Fixed a typo in the docs. [7f0cbf6087dd] <5.5-maint> 2015-10-28 Phil Thompson * lib/configure.py: Handle PATH components that are enclosed in quotes. [bfa081d2253d] <5.5-maint> * PyQt5.msp: Fixed QStyleOptionButton.None. [993102189469] <5.5-maint> 2015-10-25 Phil Thompson * .hgtags: Added tag 5.5.1 for changeset ee08241be21f [0659e00fc2ab] <5.5-maint> * NEWS, installers/PyQt5-Qt5-gpl.nsi: Released as v5.5.1. [ee08241be21f] [5.5.1] <5.5-maint> * qpy/QtCore/qpycore_pyqtproperty.cpp: Fixed the handling of getter docstrings by pyqtProperty. [75fe5856da75] <5.5-maint> * lib/configure.py: Make sure configure.py enables debug flags early enough. [71a413789681] <5.5-maint> 2015-10-18 Phil Thompson * Makefile, PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi, qpy/QtCore/qsysinfo.sip: Remainig updates for Qt v5.5.1. [13f9ece29d02] <5.5-maint> 2015-10-17 Phil Thompson * lib/configure.py: The workaround for the Qt v5.5 rpath problem on OS X will now handle Qt builds where any of QtPrintSupport, QtDBus or QtWidgets have been disabled. [aec0addf0acb] <5.5-maint> * PyQt5.msp: Updated from the initial scan of Qt v5.5.1. [942ae18cf71c] <5.5-maint> 2015-10-16 Phil Thompson * examples/network/http/http.py: Another minor fix to http.py. [0be6496d6bfe] <5.5-maint> * examples/network/http/http.py: Fixed a bug in the http.py example. [e4609df54374] <5.5-maint> 2015-09-22 Phil Thompson * PyQt5.msp: Fixed ownership issues with QQuickFramebufferObject.Renderer. [32c52859b93a] <5.5-maint> * installers/BuildGPL.txt, installers/pyqt5-config.bat, lib/configure.py, sphinx/installation.rst: Added the --disable option to configure.py. [992d1d3c2439] <5.5-maint> 2015-09-19 Phil Thompson * qpy/QtCore/qpycore_qstring.cpp: Don't assume unicode objects being converted to QStrings are ready. [dd00723a6712] <5.5-maint> 2015-09-18 Phil Thompson * PyQt5.msp: Hopefully fixed the ownership of the object returned by QQuickFramebufferObject.createRenderer(). [28175521934f] <5.5-maint> * PyQt5.msp, qpy/QtQuick/qpyquick_register_type.cpp, qpy/QtQuick/qpyquickframebufferobject.cpp, qpy/QtQuick/qpyquickframebufferobject.h: Handle a QQuickFramebufferObject in the same was as QQuickPaintedItem. [af9ef4c21748] <5.5-maint> * pyuic/uic/properties.py: Fixed pyuic's handling of non-ASCII font family names. [cf72929c8d36] <5.5-maint> 2015-09-10 Phil Thompson * PyQt5.msp: Fixed all handwritten code that uses C++11 lambdas. [5c39838726ef] <5.5-maint> * Makefile, PyQt5.msp: Improved some handwritten code. [7bf4b1f25365] <5.5-maint> 2015-09-09 Phil Thompson * build.py: Updated the root URL for the Qt docs. [c52056ca5ef2] <5.5-maint> 2015-09-08 Phil Thompson * installers/BuildGPL.txt, installers/PyQt5-Qt5-gpl.nsi, installers /psql-config.bat: Updates to installers for Python v3.5. [df9e3329a638] <5.5-maint> * lib/configure.py: Use win32-msvc2015 for Python v3.5. [8ab07055894e] <5.5-maint> * installers/BuildGPL.txt, installers/PyQt5-Qt5-gpl.nsi: Installer updates for Python v3.5. [bf1db67f03e7] <5.5-maint> * PyQt5.msp: Remainder of QMacCocoaViewContainer fix. [06cf88343082] <5.5-maint> 2015-09-07 Phil Thompson * lib/SubclassCode/QtWidgets.versions, qpy/QtWidgets/qmaccocoaviewcontainer.sip: QMacCocoaViewContainer is now feature dependent so that it can be disabled for iOS. [ee9b7b0e0576] <5.5-maint> 2015-09-02 Phil Thompson * examples/animation/animatedtiles/animatedtiles.py, examples/animation/appchooser/appchooser.py, examples/animation/easing/easing.py, examples/animation/moveblocks.py, examples/animation/states/states.py, examples/animation/stickman/stickman.py, examples/graphicsview/dragdroprobot/dragdroprobot.py, examples/graphicsview/padnavigator/padnavigator.py: Fixed implicit conversions from strings to QByteArray in the examples. [03781fa3b27e] <5.5-maint> * PyQt5.msp: Implemented __matmul__ and __imatmul__ for QMatrix4x4 and QTransform. [f13ef1501dfb] <5.5-maint> 2015-09-01 Phil Thompson * Makefile: The internal build system now defaults to Python v3.5. [514fd7675915] <5.5-maint> 2015-08-28 Phil Thompson * qpy/QtCore/qpycore_qobject_getattr.cpp: Fixed a legacy comment. [fc27a24424ee] <5.5-maint> 2015-08-27 Phil Thompson * examples/qml/referenceexamples/attached.py, examples/qml/referenceexamples/binding.py, examples/qml/referenceexamples/coercion.py, examples/qml/referenceexamples/default.py, examples/qml/referenceexamples/grouped.py, examples/qml/referenceexamples/methods.py, examples/qml/referenceexamples/properties.py, examples/qml/referenceexamples/signal.py, examples/qml/referenceexamples/valuesource.py, qpy/QtCore/qpycore_namespace.h, qpy/QtQml/qpyqml_post_init.cpp, qpy/QtQml/qpyqmllistproperty.cpp, qpy/QtQml/qpyqmllistproperty.sip, qpy/QtQml/qpyqmllistpropertywrapper.cpp, qpy/QtQml/qpyqmllistpropertywrapper.h, sphinx/qml.rst: QQmlListProperty now acts as a proxy for any underlying Python list. [ffd5437ab83f] <5.5-maint> 2015-08-26 Phil Thompson * PyQt5.msp: Applied a better fix than 56be1a87fd2c that doesn't break proxy resolution. [e0fc4cba9b47] <5.5-maint> 2015-08-25 Phil Thompson * PyQt5.msp: Backed out 56be1a87fd2c because it breaks the proxy resolution. [209dc1cc0ecc] <5.5-maint> 2015-08-17 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Fixed the conversion of enums for Qt v5.5. [698e32887e28] <5.5-maint> 2015-08-12 Phil Thompson * PyQt5.msp: Fixed a remaining OpenGL feature. [02a5c02ddbcb] <5.5-maint> 2015-08-11 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h: Fixed a missing exception when failing to parse types. [fb938891400e] <5.5-maint> 2015-08-10 Phil Thompson * PyQt5.msp, lib/SubclassCode/QtWidgets.versions: Fixes for building against a Qt without OpenGL support. [2bd297e85e66] <5.5-maint> 2015-08-02 Phil Thompson * PyQt5.msp: Fixed a leak in the handling of QQuickItem.updatePaintNode(). [8bfac6a28129] <5.5-maint> * lib/configure.py: Properly fix the different licensee values for the LGPL version of Qt. [45a7890b0823] <5.5-maint> * PyQt5.msp: Ensure that QtWebEngineWidgets is imported before a QCoreApplication instance is created. [a4041c1d6446] <5.5-maint> 2015-07-23 Phil Thompson * examples/qtdemo/demoitemanimation.py: Fixed an implicit coding bug in qtdemo. [7ff58420e62e] <5.5-maint> 2015-07-22 Phil Thompson * PyQt5.msp, lib/SubclassCode/QtCore.versions, lib/configure.py: Changes needed because iOS doesn't have QProcess etc. [4e482908fc36] <5.5-maint> * lib/configure.py: Interpret a licensee of "Builder Qt" as being the LGPL version. [1327c48468e4] <5.5-maint> * Merge the forgotten tagging of the v5.5 release. [fec61fb57dc8] <5.5-maint> * .hgtags: Added tag 5.5 for changeset a4bf2ec86f1e [9d7d3e5d6370] * Makefile: Updated the default target version. [4e9e6b798220] <5.5-maint> * PyQt5.msp: Fixes for compiling against Qt builds without SSL support. [a5cfb55177fc] <5.5-maint> 2015-07-17 Phil Thompson * NEWS, installers/pyqt5-check.py: Released as v5.5. [a4bf2ec86f1e] [5.5] * lib/configure.py: Tidied up the format of chenerated .pro files. [3481361d7081] * installers/pyqt5-check.py: pyqt5-check.py now checks the import of each module. [204bcf3320a3] 2015-07-12 Phil Thompson * installers/BuildGPL.txt, installers/PyQt5-Qt5-gpl.nsi, installers/pyqt5-check.py: Updated the Windows installer for Qt v5.5.0. [7291c392fd1f] * PyQt5.msp: Fixed a build problem when compiling each class separately. [6968432991a7] * sphinx/deprecations.rst, sphinx/index.rst, sphinx/platforms.rst: Added the section covering platform specific issues to the docs. [872c73dc46ec] * PyQt5.msp, designer/pluginloader.cpp, designer/pluginloader.h, qpy/QtDesigner/qpydesignercustomwidgetcollectionplugin.h, qpy/QtDesigner/qpydesignercustomwidgetplugin.h: Eliminated the warning messages when compiling QtDesigner against Qt v5.5.0. [ef816a6023fa] * PyQt5.msp: Ignore the Qt3D namespace. [f76909162b0d] 2015-07-10 Phil Thompson * qpy/QtCore/qpycore_qhash.sip, qpy/QtCore/qpycore_qmap.sip: Made small improvements to the exception text for some mapped type conversions. [6636b3382c7c] * NEWS, PyQt5.msp, sphinx/api_metadata.cfg: Implemented QProxyStyle. [4a8da89efee1] * PyQt5.msp: Added the initial scan of QProxyStyle. [10918a24693d] 2015-07-09 Phil Thompson * NEWS, sphinx/api_metadata.cfg, sphinx/introduction.rst: Documented the QtNfc module. [098fa0059151] * PyQt5.msp, lib/configure.py: Completed the implementation of the QtNfc module. [980a642056c2] * PyQt5.msp: Completed the initial scan of the QtNfc module. [f84dc533613e] * PyQt5.msp: Really scan Qt v5.5.0. [e942243e71f2] * lib/configure.py: Update QMAKE_RPATHDIR rather than set it. [6e7ef843d1a8] 2015-07-07 Phil Thompson * NEWS, sphinx/api_metadata.cfg, sphinx/introduction.rst: Added QtLocation to the documentation. Updated the NEWS file. [6fd628724de4] * PyQt5.msp: Updated for Qt v5.5.0. [825d80753312] * lib/configure.py: Fixed the remaining problems caused by the use of rpath in Qt v5.5.0 on OS X. [5245460dd4e0] 2015-07-01 Phil Thompson * PyQt5.msp, lib/configure.py: Completed the implementation of QtLocation. [5ef6f88ed7cc] * pyuic/uic/uiparser.py: Fixed the adding of a widget to a box layout when an alignment is specified. [c7462b03a569] * PyQt5.msp: Added the initial support for QtLocation. [74dba26ade24] * lib/configure.py: Updated configure.py for the QtLocation module. [2adcdd927f7b] * sphinx/api_metadata.cfg: Updated the API configuration for the recently added new classes. [46d2397e4bac] * PyQt5.msp: Completed the initial scan of QtLocation. [01c5d7b2f5c1] 2015-06-30 Phil Thompson * PyQt5.msp, lib/SubclassCode/QtWebEngineWidgets.versions, lib/configure.py: Updated QtWebEngineWidgets for Qt v5.5.0-rc. [9d90aaba2346] * PyQt5.msp: Updated QtGui for Qt v5.5.0-rc. [29e5da47d4eb] * PyQt5.msp: Added QT v5.5.0-rc support to QtOpenGL, QtPositioning, QtPrintSupport, QtQml, QtQuick, QtQuickWidgets, QtSensors, QtSerialPort and QtTest. [16c53510a247] 2015-06-25 Phil Thompson * PyQt5.msp: Completed the Qt v5.5 support for QtNetwork. [7df1482cd7cd] * PyQt5.msp, lib/SubclassCode/QtMultimedia.versions: Completed the Qt v5.5 support for QtMultimedia. [9bc46f0d7c99] * PyQt5.msp: Initial scan of the remaining existing modules. [c267700a94e9] 2015-06-24 Phil Thompson * PyQt5.msp: Fixed a missing reference in the QtGui module. [639da5a3046f] * lib/configure.py: Set QMAKE_RPATHDIR for Qt v5.5 and later on OS X. [4cb6a26802dd] * PyQt5.msp, lib/configure.py: Completed the updates for QtGui for Qt v5.5.0-rc. [40bfae01fe1a] 2015-06-23 Phil Thompson * PyQt5.msp: Completed the QtDBus and QtDesigner modules for Qt v5.5.0-rc. [9169626a8e94] * PyQt5.msp: Initial scan of QtDBus, QtDesigner and QtGui for Qt v5.5.0-rc. [bd6a2e668fd7] * PyQt5.msp: Completed the initial Qt v5.5 support for QtBluetooth and QtCore. [19bff136b8f4] * PyQt5.msp: Parsed the Qt v5.5.0-rc changes for Enginio, QtBluetooth and QtCore. [051e57a17d18] 2015-06-20 Phil Thompson * PyQt5.msp: Simplified the fix for the memory leak in attributeNames(). [d5b00e76067f] 2015-06-19 Phil Thompson * PyQt5.msp: QSGMaterialShader.attributeNames() no longer leaks memory. [be201b77bdb6] * QtMacExtras/QtMacExtrasmod.sip, QtMacExtras/qmactoolbar.sip, QtMacExtras/qmactoolbaritem.sip: Added QMacToolBar and QMacToolBarItem. [07cd3c5604f2] * PyQt5.msp: Added /ReleaseGIL/ to the QCoreApplication, QGuiApplication and QApplication dtors to allow for the internal mutex in OpenGL rendering. [64f2c9dbf061] 2015-06-18 Phil Thompson * PyQt5.msp: The ownership of the QSGNode returned by QQuickItem.updatePaintNode() is now handled correctly. [97ce4458a5c1] * PyQt5.msp: Added /ReleaseGIL/ for all QQuickWindow methods that seem to lock the internal mutex. [61740b8dd171] * PyQt5.msp: Fix the QSGMaterialShader super-type as it can be owned. [67adc9416118] * PyQt5.msp: The QQuickView dtor now releases the GIL in order to avoid a deadlock. [70f4a305607e] 2015-06-17 Phil Thompson * PyQt5.msp: Added the missing Qt.NoOpaqueDetection and Qt.NoFormatConversion values. [f800f67c3286] 2015-06-12 Phil Thompson * sphinx/deprecations.rst, sphinx/incompatibilities.rst, sphinx/index.rst: Documented the incompatible changes. [f6bfd44ba749] * PyQt5.msp, build.py, qpy/QtCore/qpycore_public_api.cpp: Removed the (deprecated) ability to convert a Latin-1 string to a QByteArray(). Unhandled Python exceptions now call qFatal(). [de30e9dedad8] * examples/graphicsview/dragdroprobot/dragdroprobot.qrc, examples/graphicsview/dragdroprobot/dragdroprobot_rc.py, examples/opengl/samplebuffers.py, examples/opengl/textures/textures.qrc, examples/opengl/textures/textures_rc.py, examples/qtdemo/qtdemo.qrc, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml, sphinx/static/default.css: Merged the v5.4 maintenance branch with the trunk. [b512611dd0ea] 2015-06-11 Phil Thompson * .hgtags: Added tag 5.4.2 for changeset 5a34feb6b31d [6f80aa2771d3] <5.4-maint> * NEWS: Released as v5.4.2. [5a34feb6b31d] [5.4.2] <5.4-maint> * installers/PyQt5-Qt5-gpl.nsi: Fixed a missing image plugin in the Windows installer. [29760ab3d5f9] <5.4-maint> * Makefile: Clean up any extra Mac crap. [dcbc92d15a8b] <5.4-maint> 2015-06-07 Phil Thompson * pyuic/uic/Compiler/compiler.py, pyuic/uic/Compiler/qobjectcreator.py: Make sure all generedt imports are sorted and therefore repeatable. [9ad1a251d97b] <5.4-maint> 2015-06-05 Phil Thompson * NEWS, PyQt5.msp: Completed the support for Qt v5.4.2. [02c99f5affde] <5.4-maint> * PyQt5.msp: Scanned Qt v5.4.2. [7fbd795f8c5e] <5.4-maint> * installers/PyQt5-Qt5-gpl.nsi: Updated the Windows installer for Qt v5.4.2. [74c080b5bdb2] <5.4-maint> * PyQt5.msp: Added missing /Factory/ annotations from the create() and beginCreate() methods of QQmlComponent. [56be1a87fd2c] <5.4-maint> 2015-06-02 Phil Thompson * PyQt5.msp: Fixed the handling of the value returned by Python re- implementations of QSGMaterialShader.attributeNames(). [cb620297cbc8] <5.4-maint> 2015-05-23 Phil Thompson * lib/configure.py, sphinx/installation.rst: Added the --no-python-dbus option to configure.py. [df17d3eace7a] <5.4-maint> 2015-05-18 Phil Thompson * pyuic/uic/uiparser.py: Fixed another deprecation warning in pyuic. [6333c15a9a6b] <5.4-maint> * pyuic/uic/driver.py, pyuic/uic/objcreator.py, pyuic/uic/port_v2/load_plugin.py, pyuic/uic/port_v3/load_plugin.py: Fixed all the deprecation warnings from pyuic. [e8f96fbc8cf0] <5.4-maint> 2015-05-08 Phil Thompson * Makefile: Fixed the path to SIP on OS/X. [39ecf0bc71e1] <5.4-maint> 2015-05-06 Phil Thompson * pyuic/uic/Compiler/qobjectcreator.py, pyuic/uic/Loader/qobjectcreator.py, pyuic/uic/icon_cache.py, pyuic/uic/objcreator.py: Fixed the handling of themed icons by uic.loadUi(). [506c268c8f43] <5.4-maint> 2015-04-24 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Handle properties that are objects that are defined in QML. [aebd6aab85d4] <5.4-maint> 2015-04-04 Phil Thompson * pyuic/uic/properties.py, pyuic/uic/uiparser.py: Fixed pyuic's handling of default margins. [6a7e3e6175c8] <5.4-maint> * pyuic/uic/properties.py, pyuic/uic/uiparser.py: Fixed pyuic's handling of the default spacing. [12193d5afbe1] <5.4-maint> 2015-04-03 Phil Thompson * pylupdate/main.cpp: pylupdate now saves locations as relative to the .ts file. [1757d2e318f6] <5.4-maint> 2015-04-01 Phil Thompson * PyQt5.msp: Added QWIDGETSIZE_MAX to QtWidgets. [b136fd7c485e] <5.4-maint> 2015-03-25 Phil Thompson * sphinx/static/classic.css, sphinx/static/default.css: Fixed the stylesheet. [d35996e57f02] <5.4-maint> 2015-03-16 Phil Thompson * PyQt5.msp: The GIL is now released for all QImage ctors and methods that might block. [3fd70eec66b9] <5.4-maint> * PyQt5.msp: Removed the internal QGraphicsSceneEvent.setWidget(). [622e5b5ebcfc] <5.4-maint> 2015-03-11 Phil Thompson * installers/PyQt5-Qt5-gpl.nsi: Added the OpenGL v2.1 backend to the Windows installer. [ca1e4c121c78] <5.4-maint> * sphinx/conf.py: Updated for sphinx v1.3. [1c1cd1eac7ce] <5.4-maint> * qpy/QtCore/qsysinfo.sip: Added Yosemite and iOS v8.0 to QSysInfo. [01d4d1af5961] <5.4-maint> * pyuic/uic/uiparser.py: pyuic now handles empty zorder elements. [a0dcd07b7e72] <5.4-maint> * lib/configure.py: Added nostrup to the generated .pro file. [d6445df281a6] <5.4-maint> 2015-03-01 Phil Thompson * pyuic/uic/uiparser.py: pyuic will now ignore spacer items when setting the z-order. [28704a096a3a] <5.4-maint> 2015-02-26 Phil Thompson * installers/PyQt5-Qt5-gpl.nsi: Installer fix for Qt v5.4.1. [0b21a7fa6750] <5.4-maint> * .hgtags: Added tag 5.4.1 for changeset 0a5d7730c142 [e9b5f2d5bd48] <5.4-maint> * NEWS: Released as v5.4.1. [0a5d7730c142] [5.4.1] <5.4-maint> 2015-02-25 Phil Thompson * PyQt5.msp: Completed the changes for Qt v5.4.1. [368c0d736e49] <5.4-maint> * PyQt5.msp: Scanned Qt v5.4.1. [2045a358e1e4] <5.4-maint> * installers/PyQt5-Qt5-gpl.nsi: Updated the installer for Qt v5.4.1. [22974f5a4007] <5.4-maint> * NEWS: Updated the NEWS file. [fd53bf1f9638] <5.4-maint> 2015-02-24 Phil Thompson * lib/LicenseFAQ.txt: Slight clarification in the license FAQ. [a4e16da29a86] <5.4-maint> * examples/opengl/grabber.py: grabber.py now uses QtOpenGLWidget and no longer uses PyOpenGL. [cf42f047f5af] <5.4-maint> * examples/opengl/samplebuffers.py, examples/qtdemo/examples.xml, examples/qtdemo/mainwindow.py, examples/qtdemo/menumanager.py, examples/qtdemo/qtdemo.py, examples/qtdemo/qtdemo.qrc, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: qtdemo.py no longer uses pyrcc. Removed the samplebuffers.py example. [9dd44e33dbf2] <5.4-maint> 2015-02-15 Phil Thompson * examples/opengl/overpainting.py: overpainting.py no longer uses PyOpenGL. [0095ac30f3f1] <5.4-maint> * examples/opengl/hellogl.py: hellogl.py no longer uses PyOpenGL. [2466595ffaa8] <5.4-maint> * examples/opengl/textures/textures.py: textures.py no longer uses PyOpenGL. [cea54a81d734] <5.4-maint> * examples/opengl/textures/textures.py, examples/opengl/textures/textures.qrc, examples/opengl/textures/textures_rc.py: The textures.py example now uses QOpenGLWidget and does not use pyrcc. [0038f626c540] <5.4-maint> * examples/opengl/overpainting.py: overpainting.py now uses QOpenGLWidget. [adb738a8823d] <5.4-maint> * PyQt5.msp: Added the _QOpenGLFunctions_2_1 module. [831d9420cdb9] <5.4-maint> * PyQt5.msp: Initial scan of the _QOpenGLFunctions_2_1 module. [87965430e499] <5.4-maint> * examples/opengl/2dpainting.py: Updated 2dpainting.py to match Qt v5.4. [2444297431e1] <5.4-maint> * examples/opengl/2dpainting.py, examples/opengl/hellogl.py: 2dpainting.py and hellogl.py now use QOpenGLWidget. [7570b3ee5137] <5.4-maint> 2015-02-14 Phil Thompson * Makefile: Default to sip4. [56103de21ca0] <5.4-maint> * Makefile, lib/configure.py: Installing into a virtual env should now work. [d18494d4f984] <5.4-maint> 2015-02-12 Phil Thompson * examples/graphicsview/dragdroprobot/dragdroprobot.py, examples/graphicsview/dragdroprobot/dragdroprobot.qrc, examples/graphicsview/dragdroprobot/dragdroprobot_rc.py: Fixed the dragdroprobot.py example. [29d42f347e05] <5.4-maint> * examples/widgets/calendarwidget.py: Fixed the calendarwidget.py example so it doesn't use obsolete methods. [5bfdad59eee6] <5.4-maint> 2015-02-08 Phil Thompson * Makefile, lib/configure.py: Improved the implementation of the executable search. [c8a254ad3b53] <5.4-maint> * Makefile: Switch the internal build system to sip5. [8553ce1a8cff] <5.4-maint> * lib/configure.py: Use sip5 in preference to sip4. [e104f5f49120] <5.4-maint> 2015-02-06 Phil Thompson * PyQt5.msp: QEvent.None is now QEvent.None_. [21c5779b9a9a] <5.4-maint> * PyQt5.msp: Added some missing QEvent.Type values. [09db852ff2ee] <5.4-maint> 2015-02-05 Phil Thompson * PyQt5.msp: Fixed all the pseudo-ctors that take a QVariant argument. [1507018b0814] <5.4-maint> 2015-02-03 Phil Thompson * PyQt5.msp: Enabled the simplest calls in OpenGL 4.0-core. [bcb234196361] <5.4-maint> 2015-02-02 Phil Thompson * PyQt5.msp: Updated OpenGL 4.1Core from 2.0. [2197f1d1f00b] <5.4-maint> * PyQt5.msp: Get the name right for the _QOpenGLFunctions_4_1_Core module. [8ce7c02e45da] <5.4-maint> * PyQt5.msp: Added the stub of the _QOpenGLFunctions_4_1_core module. [cc4b33b46918] <5.4-maint> 2015-02-01 Phil Thompson * lib/configure.py: configure.py will now ignore old moc generated C++ files. [b9f4e00ddb92] <5.4-maint> 2015-01-31 Phil Thompson * lib/configure.py, sphinx/installation.rst: Added the --license-dir command line option to configure.py. [bc8255a4dd33] <5.4-maint> 2015-01-30 Phil Thompson * lib/configure.py: configure.py will now handle a blank licensee. [0db0131e1ac0] <5.4-maint> * lib/configure.py: Fixed the handling of the --qml-plugindir option to configure.py. [c4f830debfc8] <5.4-maint> * qpy/QtCore/qpycore_public_api.cpp: Converting argv now uses the current locale codec rather than Latin-1. [73c52f636ad1] <5.4-maint> * pyuic/uic/uiparser.py: pyuic now supports the z-order of widgets. [f9b37fb09d6e] <5.4-maint> * pyuic/uic/properties.py, pyuic/uic/uiparser.py: Improved the fix for handling frame shadows of lines. [9904222abd9b] <5.4-maint> 2015-01-29 Phil Thompson * pyuic/uic/properties.py, pyuic/uic/uiparser.py: Fixed pyuic's handling of the frame shadow of lines. [0b20cc5fda6f] <5.4-maint> * pyrcc/rcc.cpp, pyuic/uic/__init__.py: Removed the timestamp from the header generated by pyrcc. [a56bb17ad8ce] <5.4-maint> * pyuic/uic/__init__.py: Removed the timestamp from the header generated by pyuic. [83ff904a1929] <5.4-maint> 2015-01-23 Phil Thompson * qpy/QtCore/qpycore_qstring.cpp: Fixed a regression converting a QString with a surrogate pair as the last character. [55f521ae431b] <5.4-maint> 2015-01-14 Phil Thompson * qpy/QtCore/qpycore_types.cpp: Fixed the previous fix. [0d0762e7b5ef] <5.4-maint> 2015-01-12 Phil Thompson * qpy/QtCore/qpycore_types.cpp: Ensure any exception is cleared after introspecting QObject class attributes. [afaaea82b022] <5.4-maint> 2015-01-03 Phil Thompson * lib/configure.py: The QtWebChannel and QtWebSockets modules don't need a GUI. [154b7ed4e071] <5.4-maint> * PyQt5.msp: The loadUrl() methods of QQmlComponent now release the GIL. [c7a9f34318ad] <5.4-maint> 2015-01-02 Phil Thompson * lib/LICENSE.commercial.short, lib/LICENSE.gpl, lib/LICENSE.gpl.short, lib/LICENSE.internal, sphinx/conf.py: Updated the copyright notices. [83f2a9f8495b] <5.4-maint> * PyQt5.msp, lib/SubclassCode/QtWidgets.versions, lib/configure.py, qpy/QtWidgets/qmaccocoaviewcontainer.sip, sphinx/api_metadata.cfg, sphinx/introduction.rst: Added the QMacCocoaViewContainer class. [4e2f742ce34d] <5.4-maint> 2014-12-25 Phil Thompson * .hgtags: Added tag 5.4 for changeset 51e7270c0aad [5bf7aad36927] * NEWS: Released as v5.4. [51e7270c0aad] [5.4] 2014-12-24 Phil Thompson * installers/PyQt5-Qt5-gpl.nsi, installers/qt5-config.bat: Enable ICU support for the WIndows build of Qt. Updated the installer now that the default OpenGL support is desktop. [bcbeae513872] 2014-12-23 Phil Thompson * installers/pyqt5-check.py, installers/qt5-config.bat: Updated the check script to handle the additional image formats in Qt v5.4.0. Updated the Qt5 configure script to enable dynamic OpenGL selection. [8d58795da4b1] * installers/PyQt5-Qt5-gpl.nsi: Updated the installer for Qt v5.4.0. [0d2998cc5275] 2014-12-22 Phil Thompson * qmlscene/pluginloader.cpp: Fixed a bug in the qmlscene plugin when building against Python v2. [73b7aaf3c7cc] * sphinx/introduction.rst: Updated the docs regarding the commercial license. [c8a533acf511] * lib/LICENSE.commercial.short: Fixed the short commercial license to match the full one. [1a7134faa09a] * lib/LicenseFAQ.txt: Tweaks to the license FAQ. [75f024dc27b1] 2014-12-21 Phil Thompson * lib/LICENSE.commercial: Updated the commercial license to v4.0. [6f91254b3779] * lib/LicenseFAQ.txt: Added the license FAQ. [970d31cd4a5e] 2014-12-18 Phil Thompson * lib/SubclassCode/mksccode.py: The sub-class convertor code generator now handles hidden C++ namespaces. [f951bd1e9437] 2014-12-16 Phil Thompson * qpy/QtCore/qpycore_qstring.cpp: Fixed the QString to Unicode conversion to not assume that a QString has a trailing null QChar. [7c319bbde1bf] 2014-12-14 Phil Thompson * qpy/QtQml/qpyqmlobject.cpp: Fixed a bug in the relaying of signals defined in Python to QML. [850ad2e2dd38] 2014-12-12 Phil Thompson * qpy/QtQml/qpyqmlobject.cpp: Removed a forgotton debug statement. [10c73f88bfd5] * PyQt5.msp: Updated for Qt v5.4.0. [dde3d6b31be9] * PyQt5.msp: Scanned Qt v5.4.0. [77ec0fc59d92] 2014-12-07 Phil Thompson * qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: Fixed problems with creating item models in Python and accessing from QML. [646b6aafd24f] 2014-12-05 Phil Thompson * sphinx/pyqt4_differences.rst: Further doc updates regarding QtXml. [fd14d57dd224] * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi: Completed the QtXml module. [29dcc0a9556a] * sphinx/api_metadata.cfg, sphinx/introduction.rst: Updated the docs for the QtXml module. [3170490e2c54] * lib/configure.py: Updated configure.py for QtXml. [907b21fd87f3] * PyQt5.msp: Added the initial scan of the QtXml module. [b0ad7a93f4f3] 2014-12-01 Phil Thompson * PyQt5.msp, sphinx/api_metadata.cfg: Final fixes for QWebEnginePage. Added the QtWebChannel and QtWebEngineWidgets classes to the docs. [dddb0c57ea0a] * PyQt5.msp: Scanned QWebEngineCertificateError now that we know it is part of the API. [1afa4ca635d0] 2014-11-30 Phil Thompson * installers/PyQt5-Qt5-gpl.nsi, sphinx/introduction.rst: Updated the docs and installer in relation to QtWebEngineWidgets and Windows. [c84926e7bb99] * PyQt5.msp: Completed the implementation of QWebEnginePage. [f23dc18cbc3d] * PyQt5.msp, lib/configure.py: Completed the implementation of QWebEngineView. [8a7d384eaf6d] * PyQt5.msp, qpy/QtCore/qpycore_qhash.sip: Completed the QtWebChannel module. [f184466d65d2] 2014-11-29 Phil Thompson * PyQt5.msp, lib/configure.py: Implemented the majority of the QtWebChannel and QtWebEngineWidgets modules. [c7a7ad2384ab] * PyQt5.msp: Scanned the QtWebChannel and QtWebEngineWidgets modules. [3a6e2f146f7b] * sphinx/introduction.rst: Updated the docs for QtWebChannel and QtWebEngineWidgets. [01d762d375dd] * pyuic/uic/Compiler/qtproxies.py, pyuic/uic/widget- plugins/qtquickwidgets.py: Added support for QQuickWidget and QOpenGLWidget to pyuic5. [78b75d36ff67] * installers/PyQt5-Qt5-gpl.nsi, lib/configure.py: Updated configure.py and the installer for QtWebChannel and QtWebEngineWidgets. [1f0847cc6406] * PyQt5.msp, lib/SubclassCode/QtWidgets.versions, sphinx/api_metadata.cfg: Updated QtWidgets for Qt v5.4.0-rc. [c42a45936b60] * PyQt5.msp: Updated QtSql, QtWebKit and QtWebSockets for Qy v5.4.0-rc. [0db3c6fc10e9] * PyQt5.msp, lib/SubclassCode/QtSensors.versions, sphinx/api_metadata.cfg: Updated QtSensors for Qt v5.4.0-rc. [89bd5ee95fc7] * PyQt5.msp, lib/SubclassCode/QtQuick.versions, sphinx/api_metadata.cfg: Updated QtQml, QtQuick and QtQuickWidgets for Qt v5.4.0-rc. [a3465156fcca] * PyQt5.msp, qpy/QtPrintSupport/qpyprintsupport_qlist.sip: Updated QtNetwork and QtPrintSupport for Qt v5.4.0-rc. [e2ddf6704ca0] * PyQt5.msp, sphinx/api_metadata.cfg: Completed QtMultimedia (mostly by ignoring the difficult bits because they are very unlikely to ever be needed). [aaf808e972a1] * PyQt5.msp, sphinx/api_metadata.cfg: Fixed the transfer annotations on one of the QCompleter ctors. Updated the easy parts of QtMultimedia for Qt v5.5.0-rc. [a5a2787aac3c] 2014-11-28 Phil Thompson * sphinx/api_metadata.cfg: Updated the docs meta-data for the new classes added so far. [4b9612f9fd6e] * PyQt5.msp, lib/SubclassCode/QtGui.versions: Updated QtGui and QtHelp for Qt v5.4.0-rc. [0040ab36e770] * PyQt5.msp: Updated QtCore for Qt v5.4.0-rc. [41f942bc3e5b] * PyQt5.msp, lib/SubclassCode/QtBluetooth.versions: Updated the Enginio and QtBluetooth modules for Qt v5.4.0-rc. [2cbf21f8c128] * QtX11Extras/qx11info_x11.sip: Updated QtX11Extras for Qt v5.4.0-rc. [6d979ec944e4] * QtWinExtras/qwinthumbnailtoolbar.sip: Updated QtWinExtras for Qt v5.4.0-rc. [5cc43b61d591] * installers/PyQt5-Qt5-gpl.nsi: Updated the Qt version number in the installer. [cd16e111cb7c] * PyQt5.msp: Initial scan of Qt v5.4.0-rc for existing modules. [7fa71f7ee0df] 2014-11-27 Phil Thompson * PyQt5.msp: Fixed the return values of the addWidget() and insertWidget() methods of QStackedLayout. [d3f5d1f98b7d] 2014-11-25 Phil Thompson * sphinx/gotchas.rst: Updated the description of conversions to QByteArray from latin-1 strings. [4e4b64fa2936] 2014-11-20 Phil Thompson * sphinx/qml.rst: Updated the docs to describe how to run the qmlscene plugin example. [360981336f2f] 2014-11-16 Phil Thompson * qpy/QtQml/qmlregistertype.sip: Added the missing non-template overloads of qmlRegisterType() and qmlRegisterSingletonType(). [15b37c22d541] * build.py: A source package now contains a full ChangeLog. [51a45084f486] 2014-10-24 Phil Thompson * PyQt5.msp: QObject.findChild() and QObject.findChildren() now handle QML proxy objects. [837edec02d98] * lib/configure.py: Fixed a regression in configure.py related to the DBus Python module. [c45eba355f57] 2014-10-23 Phil Thompson * PyQt5.msp: Reduced the delay in the input hook on Windows. [6e9a8b1ba494] 2014-10-22 Phil Thompson * lib/configure.py: Always check for the Python dbus module. [661bf1f5c6e0] * lib/configure.py: Run qmake once, recursively. [3729fd92a74b] * lib/configure.py: Renamed the .pro files for pyrcc5 and pylupdate5. [2c328ebcc4a3] * designer/designer.pro-in, designer/python.pro-in, lib/configure.py, qmlscene/python.pro-in, qmlscene/qmlscene.pro-in: Renamed the .pro files for the designer and qmlscene plugins. [c6ba2b645332] 2014-10-10 Phil Thompson * lib/configure.py: Handle OS/X with --enable-shared as well as --enable-framework. [f2a6301eac36] 2014-10-04 Phil Thompson * sphinx/deprecations.rst: Updated the docs regarding unhandled Python exceptions. [027db5a97624] * PyQt5.msp, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtpyobject.cpp, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_qmessagelogger.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_virtual_error_handler.sip, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_post_init.cpp, qpy/QtQml/qpyqmllistproperty.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlsingletonobject.cpp, qpy/QtQuick/qpyquick_api.h, qpy/QtQuick/qpyquick_post_init.cpp, qpy/QtQuick/qpyquickitem.cpp, qpy/QtQuick/qpyquickpainteditem.cpp, sphinx/extension_api.rst: Added pyqt5_err_print() to the public API (as a replacement for PyErr_Print() that implements the new policy for unhandled exceptions). [05a22fdd6ce2] * PyQt5.msp, qpy/QtCore/qpycore_virtual_error_handler.sip: Implemented the new behaviour for unhandled Python exceptions in virtual reimplementations. [bd744ebca21d] 2014-10-03 Phil Thompson * PyQt5.msp, build.py, sphinx/deprecations.rst, sphinx/incompatibilities.rst, sphinx/index.rst: The automatic conversion of a Latin-1 encoded string to QByteArray is now deprecated. [ce37c9511e58] 2014-10-02 Phil Thompson * examples/mainwindows/application/application.qrc, examples/mainwindows/application/application_rc.py, qpy/QtCore/qpycore_qstringlist.sip: Merged the 5.3-maint branch into the trunk. [db7746b0db88] 2014-10-01 Phil Thompson * PyQt5.msp, installers/BuildGPL.txt, lib/configure.py: Fixed QNetworkAccessManager.createRequest() so that it aborts rather than crashes when None is returned of there is an unhandled exception. [028a89e8d6a2] <5.3-maint> 2014-09-23 Phil Thompson * installers/PyQt5-Qt5-gpl.nsi: Updated the Qt version number in the installer. [5cef3154ebc0] <5.3-maint> 2014-09-22 Phil Thompson * installers/PyQt5-Qt5-gpl.nsi: Updated the version of ICU included in the installers. [b50fd07dcd1a] <5.3-maint> * installers/PyQt5-Qt5-gpl.nsi: The qt.conf files now use relative pathnames. [345f75972cd2] <5.3-maint> * PyQt5.msp: Updated the project file for Qt v5.3.2. [1b51adc53538] <5.3-maint> * lib/configure.py: Fixed building against Qt v5.3.2. [3d76ad16a090] <5.3-maint> 2014-09-16 Phil Thompson * lib/configure.py: Fixed a configure.py regression when introspecting for a static Python library. [35dae695e5fe] <5.3-maint> 2014-09-13 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Allow an invalid QVariant to be converted to None if a QMetaType::Void is expected because QML seems to expect it. [9b8a2870307b] <5.3-maint> 2014-09-12 Phil Thompson * .hgtags: Added tag 5.3.2 for changeset b0872e23eef2 [09479720708a] <5.3-maint> * NEWS: Released as v5.3.2. [b0872e23eef2] [5.3.2] <5.3-maint> * installers/PyQt5-Qt5-gpl.nsi: Add the Enginio DLL to the installer. [9913df0c09a7] <5.3-maint> 2014-09-10 Phil Thompson * lib/configure.py: Improved a configure.py error message. [55d2db4d2016] <5.3-maint> 2014-09-09 Phil Thompson * designer/pluginloader.cpp, designer/python.pro-in, lib/configure.py: Reverted the behaviour of the designer plugin so that it explicitly loads the Python interpreter library. [520c69cecd7f] <5.3-maint> 2014-09-07 Phil Thompson * sphinx/incompatibilities.rst: Documented the different handling of signals with default arguments as a potential incompatibility in PyQt v5.3. [21c492233b4f] <5.3-maint> 2014-09-04 Phil Thompson * NEWS: Updated the NEWS file. [3e67087edaa6] <5.3-maint> 2014-09-03 Phil Thompson * pyuic/uic/uiparser.py: Fixed a pyuic bug handling the alignment of box layouts. [8ceffd80eb09] <5.3-maint> 2014-09-02 Phil Thompson * .hgignore, PyQt5.msp, installers/BuildGPL.txt, lib/configure.py: Fixed the handling of Python exceptions in QWebPage.extension(). [6b688d2514d2] <5.3-maint> 2014-08-25 Phil Thompson * installers/BuildGPL.txt, lib/configure.py: Avoid a qmake warning by embedding the SIP flags earlier. Fix the license check when using a configuration file. [2764886c6cc6] <5.3-maint> 2014-08-14 Phil Thompson * sphinx/signals_slots.rst: Tightened up the docs regarding pyqtSignal(). [920e22cba0c2] <5.3-maint> * installers/PyQt5-Qt5-gpl.nsi: Updated the installer to include qmake and mkspecs which are needed by lrelease when it is given a .pro file. [946843b4db4e] <5.3-maint> 2014-08-13 Phil Thompson * PyQt5.msp: Added the (no longer preliminary) QWidget.windowHandle(). [eec511d5634f] <5.3-maint> 2014-07-31 Phil Thompson * Makefile, qpy/QtCore/qpycore_qjsonvalue.cpp, qpy/QtQml/qpyqml_qjsvalue.cpp: Fixed a couple of Python v2 build regressions. [dcc21846e00f] <5.3-maint> * Makefile, PyQt5.msp: Fixed QAbstractPrintDialog.PrintDialogOption.None for Python v3. [6cfab73403c8] <5.3-maint> 2014-07-28 Phil Thompson * NEWS, PyQt5.msp, sphinx/api_metadata.cfg, sphinx/introduction.rst: Completed the implementation of the Enginio module. [4a9d7e1d5662] <5.3-maint> 2014-07-27 Phil Thompson * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi, lib/configure.py: Implemented the rest of the Enginio module except for EnginioModel. [6f28c7ec4a3a] <5.3-maint> * PyQt5.msp, lib/configure.py, sphinx/api_metadata.cfg: Added the Enginio module to the build system. Implemented the Enginio.Enginio namespace. [bf79ca211de1] <5.3-maint> * PyQt5.msp: Initial scan of the Enginio module. [b90c5231f98b] <5.3-maint> * build.py, sphinx/api_details/qjsonarray.rst, sphinx/api_details/qjsonobject.rst, sphinx/api_details/qjsonvalue.rst: Added support for including additional API specific documentation. [7c4bc36ed40a] <5.3-maint> * PyQt5.msp, qpy/QtCore/qjsonarray.sip, qpy/QtCore/qjsonobject.sip, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_qjsonvalue.cpp, qpy/QtCore/qpycore_qstringlist.sip, qpy/QtCore/qstringlist.sip, qpy/QtQml/qpyqml_qjsvalue.cpp, sphinx/api_metadata.cfg: Implemented the QJsonDocument, QJsonParseError and QJsonValue classes. Implemented QJsonArray and QJsonObject as mapped types. Remove redundant QJSValue ctors. [abc3d82e4430] <5.3-maint> * PyQt5.msp: Initial scan of the JSON classes. [e454d7715289] <5.3-maint> 2014-07-22 Phil Thompson * installers/BuildGPL.txt: Updated the internal docs for installing MSVC2010. [dae53e32f8d7] <5.3-maint> 2014-07-21 Phil Thompson * PyQt5.msp: Added the missing setUnifiedTitleAndToolBarOnMac() and unifiedTitleAndToolBarOnMac() to QMainWindow. [1cfe8cdfc5a8] <5.3-maint> * qpy/QtCore/qpycore_enums_flags.cpp: Fixed a benign exception while parsing Q_ENUMS and Q_FLAGS. [b8e6f34be940] <5.3-maint> 2014-07-20 Phil Thompson * PyQt5.msp: Fixed ownership changes when calling QQmlEngine.setObjectOwnership(). [77bc10e785e2] <5.3-maint> * sphinx/pyqt4_differences.rst: Clarified the advice about setdestroyonexit(). [126152cc8091] <5.3-maint> * qpy/QtQml/qpyqmlobject.cpp: Fixed an attempt to decrement a reference count with the GIL in the QML proxy. [722a2bd8deb3] <5.3-maint> * PyQt5.msp: Added a missing /TransferThis/ to the QItemSelectionModel single arg ctor. [c0c1d57cd8a8] <5.3-maint> * build.py, examples/mainwindows/application/application.py, examples/mainwindows/application/application.qrc, examples/mainwindows/application/application_rc.py: Updated the application.py example so that it doesn't use pyrcc and will work as a deployed application without changes. [b4b75e5b26f5] <5.3-maint> 2014-07-12 Phil Thompson * pylupdate/fetchtr.cpp: Fixed the pylupdate parsing of translate(). [7687a1e7a9e3] <5.3-maint> * PyQt5.msp: Make sure widgets always have an owner even if the layout isn't in a widget. [51060169e5be] <5.3-maint> * PyQt5.msp: Ensure that the ownership of widgets in a layout are always correct. [09687398dc66] <5.3-maint> 2014-07-10 Phil Thompson * designer/python.pro-in, lib/configure.py, qmlscene/python.pro-in: Work around QTBUG-39300. [0b94a0c4f4d2] <5.3-maint> 2014-07-09 Phil Thompson * PyQt5.msp: Fixed QWebSocket when SSL support is disabled. [bae1d0bfb5a4] <5.3-maint> 2014-07-04 Phil Thompson * .hgtags: Added tag 5.3.1 for changeset 04f59a3d5419 [afc3fc029eef] <5.3-maint> * NEWS: Released as v5.3.1. [04f59a3d5419] [5.3.1] <5.3-maint> 2014-07-03 Phil Thompson * sphinx/deploy_commercial.rst, sphinx/installation.rst: Updated the docs to refer to pyqtdeploy rather than VendorID. [144f912ad1eb] <5.3-maint> 2014-07-01 Phil Thompson * installers/BuildGPL.txt: Updates to the installer docs. [796d5e8ebe63] <5.3-maint> 2014-06-26 Phil Thompson * Makefile, PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi: Updated for Qt v5.3.1. [43eca77eb086] <5.3-maint> * PyQt5.msp: Scanned Qt v5.3.1. [ed0fcce6113e] <5.3-maint> * PyQt5.msp: Added a missing /ReleaseGIL/ to QNetworkAccessManager.createRequest(). [a09288c24355] <5.3-maint> 2014-06-25 Phil Thompson * qpy/QtGui/qpyopengl_value_array.cpp: Fixed for building against Python v2.6.2 and earlier. [b10aab47cc69] <5.3-maint> 2014-06-17 Phil Thompson * pyuic/uic/uiparser.py: Fixed a pyuic regression in the handling of implicit QTableWidget dimensions. [65acf1dcaa30] <5.3-maint> 2014-06-16 Phil Thompson * Makefile, lib/configure.py, sphinx/installation.rst: Removed the --consolidate argument to configure.py as it never worked and pyqtdeploy is the way forward. [8110e649a041] <5.3-maint> 2014-06-14 Phil Thompson * lib/configure.py: Only pass -spec to qmake if it is really necessary. [770fc634f362] <5.3-maint> 2014-06-03 Phil Thompson * lib/configure.py: Fixes for Python v2.6. [0e31a2da0fa2] <5.3-maint> 2014-06-02 Phil Thompson * lib/configure.py: Fixed the handling of the default qmake spec. Fixed the linker version scripts generated for Linux. [6ec15bc5d1bd] <5.3-maint> 2014-06-01 Phil Thompson * pylupdate/fetchtr.cpp, pylupdate/main.cpp: Added the -tr-function and -translate-function command line options to pylupdate5. [6cb476d4cc9a] <5.3-maint> 2014-05-30 Phil Thompson * qpy/QtCore/qpycore_qvariant_value.cpp: Ported the QSettings.value() fixes from PyQt4. [4466a72038cc] <5.3-maint> 2014-05-29 Phil Thompson * Makefile, installers/PyQt5-Qt5-gpl.nsi: Fixed the link to the Qt documentation in the installers. Updated the cross-compile target version. [3d4d0f24d41b] 2014-05-26 Phil Thompson * .hgtags: Added tag 5.3 for changeset 1c94cbc7c33f [50cfe16807be] * NEWS: Released as v5.3. [1c94cbc7c33f] [5.3] * PyQt5.msp: Backed out the changes related to the parenting of dialogs. It introduces potential incompatibilities for no real gain. [187d130762ae] 2014-05-24 Phil Thompson * PyQt5.msp: Removed (rather than ignored) the missing QDnsLookup ctor so that we will consider it again with Qt v5.3.1. [db2986a5beb0] 2014-05-23 Phil Thompson * PyQt5.msp: Updated for Qt v5.3.0. Ignore the missing QDnsLookup ctor. [bce757fd6b87] 2014-05-19 Phil Thompson * Makefile: Added the Android build target. [f6e83c05f2a1] 2014-05-16 Phil Thompson * lib/configure.py: Make sure that the -B flag isn't included in PYQT_CONFIGURATION. [e43b3f33502e] * Makefile: Install the .sip files into sysroot when cross-compiling. [5d636dfea5d7] * lib/configure.py, sphinx/installation.rst: Renamed qt_disabled_features to pyqt_disabled_features. [64489c7ec72b] * lib/configure.py: Make use of SIP v4.16's handling of timelines to avoid having to work out the exact version tag to use. [be0afd3dfe65] 2014-05-15 Phil Thompson * PyQt5.msp: Added some missing PyQt_Printer features. Added the PyQt_NoBootstrap feature for iOS. [22e30a316ffc] * Makefile: Fix the installation of __init__.py and uic for the iOS simulator build. [6707f8fb7fcd] * Makefile: Fixed the installation of the Qt module for the iOS simulator build. [d4cbad9ba118] * PyQt5.msp: Fixed another desktop OpenGL dependency. [a96eb576b700] * Makefile: Refactored the top level Makefile and added support for iOS builds. [0c7fb2aa9b47] 2014-05-14 Phil Thompson * lib/configure.py: Don't generate the QScintilla .api file if it isn't going to be installed. [3fdd63dd47f1] * lib/configure.py, sphinx/installation.rst: Adjustments to the license handling because there is no way to discover the licensee when cross-compiling. [559814273fde] * qpy/QtGui/opengl_types.sip, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_array_convertors.cpp, qpy/QtGui/qpyopengl_init.cpp, qpy/QtGui/qpyopengl_value_array.cpp: Fixes for building for an OpenGL ES system. [b90c3d5ccd5d] * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Completed the implementation of the QWebSockets module. [b1dfa886d9a7] * PyQt5.msp: Disabled the new (but missing) QDnsLookup ctor. [fb490165ca64] * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Completed the QtQuickWidgets module. [a251131319a4] * PyQt5.msp: Added the scanned stubs of the QtQuickWidgets and QtWebSockets modules. [dc836db4f607] 2014-05-13 Phil Thompson * PyQt5.msp, lib/configure.py, sphinx/api_metadata.cfg: Updated all existing non-platform-specific modules for Qt v5.3.0-rc1. [8ec4f9396cd6] * PyQt5.msp: Initial scan of Qt v5.3.0-rc1. [a0143121db58] 2014-05-12 Phil Thompson * PyQt5.msp: Fixes for building against Qt v5.3.0-rc1. [90a1ae3f0434] * lib/configure.py: Fixed the default configure.py help text related to prot-is-public. [6ec1bbe11d50] 2014-05-11 Phil Thompson * Makefile, lib/configure.py, sphinx/installation.rst: Added the --no-tools option to configure.py. [3afc3d6a0b8c] * Makefile, build.py, configurations/rpi_py3.cfg, lib/configure.py, sphinx/installation.rst: Reimplemented the support for configuration files so that it is portable to Python v2. Removed the configurations directory. --sysroot now replaces the sys.prefix part of a directory name. [2bc27b9bbc8a] 2014-05-10 Phil Thompson * lib/configure.py, sphinx/conf.py, sphinx/installation.rst: Documented the --target-py-version and --sysroot options. A couple of minor configure.py bug fixes. [629d4c624ee3] * configurations/rpi_py3.cfg, lib/configure.py: Added the --target-py-version and --sysroot options to configure.py. Configuration files now have the Python version and sysroot pre- populated from the command line. sysroot is now automatically prepended to the relevent introspected directories. Updated the RPi configuration file appropriately. [a65adbbac0f5] 2014-05-06 Phil Thompson * lib/configure.py, pyuic/uic/widget-plugins/qtdeclarative.py, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_qstringlist.cpp, qpy/QtCore/qpycore_sip.h, qpy/QtDBus/qpydbus.pro, qpy/QtDesigner/qpydesigner.pro, qpy/QtGui/qpygui.pro, qpy/QtGui/qpyopengl_add_constants.c, qpy/QtQml/qpyqml.pro, qpy/QtQuick/qpyquick.pro: Merged the 5.2-maint branch into the trunk. [c00d9ae88bd0] * configurations/rpi_py3.cfg, lib/configure.py: A configuration file is now parsed with configparser with ExtraInterpolation. A configuration file must define a section covering the version of Qt being used. Updated the Raspberry Pi configuration file to meet the revised requirements. [38fca2a9702d] 2014-04-30 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Qt::UniqueConnection is a flag. [3b978cee5968] <5.2-maint> 2014-04-29 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Implement support for Qt::UniqueConnection when connecting to Python slots. [33b67d803637] <5.2-maint> 2014-04-28 Phil Thompson * qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_pyqtslot.h, qpy/QtCore/qpycore_pyqtslotproxy.cpp: Fixed a bug detecting when the Python receiver object has been garbage collected. Delete slot proxies if the slot receiver no longer exists. [3a4d245409f0] <5.2-maint> * PyQt5.msp: Removed the /TransferThis/ from the parent argument of the ctor of all dialog classes. This is a better approach to the special ownership behaviour of dialogs as that taken by PyQt4. QWidget.setParent() now handles dialogs properly. [4535ef2b7372] <5.2-maint> 2014-04-23 Phil Thompson * PyQt5.msp: Handle top-level widgets in the QApplication dtor as PyQt4 does because sip.setdestoyonexit() can't help if the GUI isn't held in the main block. [f6521c24d6b1] <5.2-maint> 2014-04-22 Phil Thompson * PyQt5.msp: Added a missing /ReleaseGIL/ to the QSqlQuery ctor that can execute a query. [d11e914518cc] <5.2-maint> * sphinx/incompatibilities.rst, sphinx/index.rst, sphinx/signals_slots.rst: Documented the no_receiver_check issues. [3acf8677f5aa] <5.2-maint> 2014-04-21 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_pyqtslot.h, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_pyqtslotproxy.h: Implemented the 'no_receiver_check' argument to connect(). By default checks for receiver C++ instances are enabled. [c29a6eac4aff] <5.2-maint> 2014-04-15 Phil Thompson * qpy/QtCore/qpycore_qstring.cpp: Fixed a bug in the conversion of QStrings with surrogate pairs. [16a9c19d08cf] <5.2-maint> * Makefile, lib/configure.py: Make sure the SIP include directory is searched before the Python include directory if they are different. [50212db2acde] <5.2-maint> 2014-04-06 Phil Thompson * PyQt5.msp, qpy/QtDBus/qpydbuspendingreply.cpp, qpy/QtDBus/qpydbusreply.cpp, qpy/QtQml/qmlattachedpropertiesobject.sip, qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_singleton_type.cpp, qpy/QtQml/qpyqml_register_type.cpp: Fixed the remaining symbol name clashes with static builds. [e1ef73ca0fbd] <5.2-maint> * pyuic/uic/uiparser.py: Fixed pyuic handling of non-exclusive button groups. [a46790060328] <5.2-maint> 2014-03-31 Phil Thompson * qpy/QtCore/qpycore_types.cpp: Fixed a regression with Python v2 where a classic class is used as a mixin. [5fc3bba566c7] <5.2-maint> 2014-03-30 Phil Thompson * lib/configure.py: Fixed the display of the static/shared status by configure.py. [39a2d2d3925c] <5.2-maint> 2014-03-29 Phil Thompson * pyuic/uic/uiparser.py: Fixed pyuic's handling of connecting to QButtonGroups. [6b06e4c8a5d2] <5.2-maint> * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Improved the text of an exception now that signals can be defined in mixins. [be0c8c6b433b] <5.2-maint> 2014-03-24 Phil Thompson * pyuic/uic/widget-plugins/qtdeclarative.py: Removed the unsupported pyuic widget plgin for QDeclarativeView. [d8a05545da5d] <5.2-maint> 2014-03-21 Phil Thompson * PyQt5.msp: Added a missing /KeepReference/ to QThreadPool::globalInstance(). Added /ReleaseGIL/ to start() and tryStart() for documentation reasons. Removed /NewThread/ from QRunnable::run(). [143e8bb4c4b9] <5.2-maint> * PyQt5.msp, lib/configure.py, sphinx/deploy_commercial.rst, sphinx/installation.rst: VendorID is Python v2 specific. [1bf09b117cb2] <5.2-maint> 2014-03-20 Phil Thompson * Makefile, lib/OpenGL/gen_opengl_constants.py, lib/configure.py, qpy/QtGui/qpyopengl_add_constants.cpp: Fixed the generated OpenGL constants to be C++11 compatible. [5db729002562] <5.2-maint> 2014-03-18 Phil Thompson * Makefile, PyQt5.msp: Fixed a symbol clash when built as static modules. [b582b195ed9f] <5.2-maint> 2014-03-14 Phil Thompson * .hgtags: Added tag 5.2.1 for changeset 8709a1871929 [e86b25532c02] <5.2-maint> * NEWS: Released as v5.2.1. [8709a1871929] [5.2.1] <5.2-maint> 2014-03-13 Phil Thompson * qpy/QtCore/qpycore_qobject_getattr.cpp: Fixed a regression parsing introspected signal signatures. [b12f051bec16] <5.2-maint> * qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtboundsignal.h: Fixes for building against the latest XCode. [67b67beb6e4b] <5.2-maint> 2014-03-10 Phil Thompson * PyQt5.msp, lib/configure.py: Fixed Windows build problems. [f63c627bece7] <5.2-maint> 2014-03-09 Phil Thompson * lib/LICENSE.commercial: Updates to the commercial license. [3a484144e4ff] <5.2-maint> 2014-03-05 Phil Thompson * NEWS: Updated the NEWS file. [f6528098012c] <5.2-maint> 2014-03-04 Phil Thompson * qpy/QtCore/qpycore_types.cpp, sphinx/pyqt4_differences.rst, sphinx/signals_slots.rst: Properties, signals and slots can now be defined in mixins (ie. non- QObject) classes. [3942032af2de] <5.2-maint> * pylupdate/fetchtr.cpp: Backed out ab343b486918 (pylupdate support for nested classes) because it breaks a common use case. [6cf443fbd854] <5.2-maint> * pylupdate/fetchtr.cpp, pylupdate/main.cpp, pylupdate/merge.cpp, pylupdate/metatranslator.cpp, pylupdate/metatranslator.h, pylupdate/numberh.cpp, pylupdate/proparser.cpp, pylupdate/proparser.h, pylupdate/sametexth.cpp, pylupdate/simtexth.cpp, pylupdate/simtexth.h, pylupdate/translator.cpp, pylupdate/translator.h, pyrcc/main.cpp, pyrcc/rcc.cpp, pyrcc/rcc.h: Updated the pylupdate5 and pyrcc5 copyright and license notices. [379869955e02] <5.2-maint> 2014-03-03 Phil Thompson * PyQt5.msp: The first stride argument of the ArgumentSet ctor is now the optional second argument. The stride is computed if not explicitly specified. [19a0243f60c2] <5.2-maint> * dbus/dbus.cpp, dbus/helper.h: Fixed the licensing of the dbus module. [6e831021c4ef] <5.2-maint> 2014-02-22 Phil Thompson * lib/LICENSE.commercial: Updated the commercial license. [2685b40cf32d] <5.2-maint> * sphinx/pyqt4_differences.rst, sphinx/signals_slots.rst: Updated the docs regarding the handling of Qt signals with optional arguments. [9b1debc115c7] <5.2-maint> * PyQt5.msp: Added the QSGGeometry.AttributeSet ctor and fixed a couple of related bugs. [d5adaa40b597] <5.2-maint> * lib/configure.py: Fixed configure.py when QtCore is not being built. [d0b2571b8413] <5.2-maint> 2014-02-21 Phil Thompson * PyQt5.msp: Release the GIL when using QQmlApplicationEngine to load a QML file. [8e4b7e2d80b4] <5.2-maint> * qpy/QtCore/qpycore_chimera_storage.cpp: Fixed the handling of results of JavaScript functions in QML. [548c6b36b376] <5.2-maint> * lib/configure.py: Fix remaining misleading error messages about qmake on Windows. [a527a1cb7ab0] <5.2-maint> * lib/configure.py: Fixed the pyuic5 wrapper for Python v3.4 on OS/X. [82582f4dbc26] <5.2-maint> 2014-02-18 Phil Thompson * qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.h, qpy/QtCore/qpycore_qobject_getattr.cpp, qpy/QtCore/qpycore_types.cpp: Use SIP generated signal emitters if they are available. [e48c35dc1609] <5.2-maint> * Makefile, PyQt5.msp, QAxContainer/qaxbase.sip, QAxContainer/qaxobject.sip, QAxContainer/qaxwidget.sip, lib/configure.py, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_misc.cpp, qpy/QtCore/qpycore_misc.h, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_types.cpp: Changes needed by the SIP v11.0 internal API. [04cb8f12f608] <5.2-maint> 2014-02-15 Phil Thompson * PyQt5.msp, lib/SubclassCode/QtGui.versions: Fixes when building against OpenGL/ES2. [c8f5b569c377] <5.2-maint> 2014-02-10 Phil Thompson * lib/configure.py: Removed a workaroud for a bug in the OS/X Python installation that no longer seems necessary. [42b4bf1a7bbc] <5.2-maint> * Makefile, lib/configure.py: Fixed the building of the Qt module. [cdfe5633ab6b] <5.2-maint> * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi: Updated for Qt v5.2.1. [8858e7832a48] <5.2-maint> * lib/OpenGL/gen_opengl_constants.py, lib/configure.py, qpy/QtGui/qpyopengl_add_constants.c, qpy/QtGui/qpyopengl_add_constants.cpp, qpy/QtGui/qpyopengl_version_functions.cpp: More fixes for the OpenGL changes. [e40a56e2861e] <5.2-maint> * PyQt5.msp: Don't call qpyopengl_init() if OpenGL is disabled. [b3169a87acdd] <5.2-maint> 2014-02-09 Phil Thompson * qpy/QtDBus/qpydbus_chimera_helpers.cpp: Another fix for the QPy refactoring. [db0f04a03742] <5.2-maint> * lib/OpenGL/gen_opengl_constants.py, qpy/QtGui/qpyopengl_add_constants.c, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_array_convertors.cpp, qpy/QtGui/qpyopengl_attribute_array.cpp, qpy/QtGui/qpyopengl_data_cache.cpp, qpy/QtGui/qpyopengl_data_cache.h, qpy/QtGui/qpyopengl_init.cpp, qpy/QtGui/qpyopengl_uniform_value_array.cpp, qpy/QtGui/qpyopengl_value_array.cpp, qpy/QtGui/qpyopengl_version_functions.cpp: Fixes for the QPy QtGui library when building with OpenGL disabled. [32991310ea1e] <5.2-maint> * PyQt5.msp, qpy/QtDBus/qpydbus_api.h, qpy/QtDBus/qpydbus_chimera_helpers.cpp, qpy/QtDBus/qpydbus_chimera_helpers.h, qpy/QtDBus/qpydbus_post_init.cpp, qpy/QtDBus/qpydbuspendingreply.cpp, qpy/QtDBus/qpydbusreply.cpp, qpy/QtQml/qpyqml_post_init.cpp, qpy/QtQml/qpyqml_qjsvalue.cpp, qpy/QtQml/qpyqml_sip.h, qpy/QtQml/qpyqmllistproperty.cpp, qpy/QtQuick/qpyquick_chimera_helpers.cpp, qpy/QtQuick/qpyquick_chimera_helpers.h, qpy/QtQuick/qpyquick_post_init.cpp, qpy/QtQuick/qpyquick_register_type.cpp, qpy/QtQuick/qpyquick_register_type.h: Refactored the rest of the QPy libraries with the exception of QtGui. [9cc5f284b315] <5.2-maint> * qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_chimera_storage.cpp, qpy/QtCore/qpycore_classinfo.cpp, qpy/QtCore/qpycore_decorators.cpp, qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_misc.cpp, qpy/QtCore/qpycore_misc.h, qpy/QtCore/qpycore_objectified_strings.h, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtconfigure.cpp, qpy/QtCore/qpycore_pyqtpyobject.cpp, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_pyqtslotproxy.h, qpy/QtCore/qpycore_qmessagelogger.cpp, qpy/QtCore/qpycore_qmetaobject.cpp, qpy/QtCore/qpycore_qmetaobject_helpers.cpp, qpy/QtCore/qpycore_qobject_getattr.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qobject_helpers.h, qpy/QtCore/qpycore_qstring.cpp, qpy/QtCore/qpycore_qvariant.cpp, qpy/QtCore/qpycore_qvariant_value.cpp, qpy/QtCore/qpycore_sip.h, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qpycore_types.h: Refactored the QPy QtCore header files slightly so that the private API to the generated code is qpycore_api.h and the private API from the generated code is sipAPIQtCore.h. The public API remains qpycore_public_api.h. [2194a7a65de6] <5.2-maint> * lib/configure.py: Generate relative pathnames for the .sip files in the .pro files. [501007c40b60] <5.2-maint> * qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.cpp, qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_types.cpp, qpy/QtGui/qpyopengl_data_cache.cpp: Suppress warnings about tp_finalize. [351f44e52713] <5.2-maint> * qpy/QtGui/opengl_types.sip, qpy/QtGui/qpygui_qpair.sip: Added PyQt_OpenGL to a couple of extra places (primarily for documentation purposes as wouldn't generate code). [3c1cefcb0c1d] <5.2-maint> * lib/configure.py: The extension modules now have the correct install name on OS/X. [2b36703b6419] <5.2-maint> 2014-02-06 Phil Thompson * lib/configure.py, qpy/QtCore/qpycore.pro, qpy/QtDBus/qpydbus.pro, qpy/QtDesigner/qpydesigner.pro, qpy/QtGui/qpygui.pro, qpy/QtQml/qpyqml.pro, qpy/QtQuick/qpyquick.pro: The QPy support code is no longer built as separate libraries. [b160ecda2f38] <5.2-maint> 2014-02-05 Phil Thompson * PyQt5.msp, qpy/QtQml/qpyqml.pro, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_qjsvalue.cpp, qpy/QtQml/qpyqml_sip.h: A special value, bool, int, float or string may be specified whenever a QJSValue is expected. [4fe146b380cb] <5.2-maint> * pylupdate/fetchtr.cpp: Fixes for the handling of nested classes in pylupdate from Matteo Bertini. [ab343b486918] <5.2-maint> * examples/widgets/tetrix.py: Fixes to the tetrix.py example from Mike Taverne. [1ff4b79a485e] <5.2-maint> 2014-02-04 Phil Thompson * PyQt5.msp, lib/SubclassCode/QtGui.versions, lib/configure.py: PyQt should now build against a Qt installation with no OpenGL support. [1fc92a957229] <5.2-maint> * lib/configure.py: qreal is defined as double on all platforms when built against Qt v5.2. [0c098ca98d24] <5.2-maint> 2014-02-03 Phil Thompson * qpy/QtCore/qpycore_qstring.cpp: Fixed the QString to Python conversion for Python v3.3 and later as I hadn't realised that the KIND is interpreted very strictly. [ef3ac28273c8] <5.2-maint> 2014-01-29 Phil Thompson * PyQt5.msp, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_qstringlist.cpp, qpy/QtCore/qpycore_qstringlist.sip: The mapping of QStringList is now handled the same as QList. [9f2c1e2bc3c9] <5.2-maint> 2014-01-17 Phil Thompson * QtX11Extras/qx11info_x11.sip, lib/configure.py: Fixes for QX11Info so that it will build against Qt v5.1. [7d0f384170fd] <5.2-maint> 2014-01-13 Phil Thompson * PyQt5.msp: Fixed the build when SSL support is disabled. [cb3debf77d04] <5.2-maint> 2014-01-10 Phil Thompson * build.py, sphinx/api_metadata.cfg: Updated the docs generation to reflect the changes to the structure of the docs on qt-project.org. [9301cdf68316] <5.2-maint> 2014-01-08 Phil Thompson * qpy/QtGui/qpygui_qpair.sip: Fixed a bug building against versions of Qt prior to v5.2.0. [5c798e751276] <5.2-maint> 2014-01-07 Phil Thompson * .hgtags: Added tag 5.2 for changeset 9352d801a9da [0bb3d7b8c32a] * Makefile, NEWS: Released as v5.2. [9352d801a9da] [5.2] 2014-01-04 Phil Thompson * qpy/QtCore/qpycore_qstring.cpp: Fixed the PEP 393 conversion from QString to Python unicode objects so that it properly handles surrogates. Also made the common case where the text is Latin-1 faster and the final object smaller. [52e28eb8f54e] 2014-01-02 Phil Thompson * Makefile, build.py, dbus/dbus.cpp, dbus/helper.h, lib/LICENSE.commercial.short, lib/LICENSE.gpl, lib/LICENSE.gpl.short, lib/LICENSE.internal, pyrcc/rcc.cpp, pyuic/uic/Compiler/compiler.py, pyuic/uic/Compiler/indenter.py, pyuic/uic/Compiler/misc.py, pyuic/uic/Compiler/proxy_metaclass.py, pyuic/uic/Compiler/qobjectcreator.py, pyuic/uic/Compiler/qtproxies.py, pyuic/uic/Loader/loader.py, pyuic/uic/Loader/qobjectcreator.py, pyuic/uic/__init__.py, pyuic/uic/exceptions.py, pyuic/uic/objcreator.py, pyuic/uic/properties.py, pyuic/uic/uiparser.py, pyuic/uic/widget- plugins/qtwebkit.py, sphinx/conf.py: Updated the copyright notices. [95cd691c347d] 2013-12-29 Phil Thompson * PyQt5.msp: Fixed the QJSValue ctors. [480c23d29277] 2013-12-25 Phil Thompson * QtWinExtras/qwinjumplist.sip: Updated the sub-class convertor code for the QtWinExtras module. [31049d3853ae] * installers/PyQt5-Qt5-gpl.nsi: Fixes for the installer for Qt v5.2.0. [421c92fb3c1a] * QtWinExtras/qwinthumbnailtoolbar.sip, lib/configure.py: More QtWinExtras fixes. [35df5513f242] * QtWinExtras/qwinfunctions.sip: Fixes for the QtWinExtras module. [1cb902bbb5c1] * installers/PyQt5-Qt5-gpl.nsi: Updated the installer for Qt v5.2.0. [bb68738fcc1b] 2013-12-24 Phil Thompson * sphinx/api_metadata.cfg: Updated the documentation for the QtWinExtras module. [c8cbc2483694] * QtWinExtras/QtWinExtrasmod.sip, QtWinExtras/qwinjumplist.sip, QtWinExtras/qwinjumplistcategory.sip, QtWinExtras/qwinjumplistitem.sip, QtWinExtras/qwintaskbarbutton.sip, QtWinExtras/qwintaskbarprogress.sip, QtWinExtras/qwinthumbnailtoolbar.sip, QtWinExtras/qwinthumbnailtoolbutton.sip: Completed the initial implementation of the QtWinExtras module. [d27e0faa5fe7] * PyQt5.msp, qpy/QtBluetooth/qpybluetooth_qlist.sip: Completed the implementation of the QtBluetooth module. [cc31f2f83bb0] 2013-12-22 Phil Thompson * PyQt5.msp, qpy/QtBluetooth/qpybluetooth_qlist.sip, qpy/QtBluetooth/qpybluetooth_quint128.sip: Completed the implementation of QBluetoohUuid. [7aa305b853b0] * PyQt5.msp: Fixed the signature of the QUuid ctor. [dbaff74f3365] * PyQt5.msp, qpy/QtBluetooth/qpybluetooth_qlist.sip: Implemented QList. [4ef77ea90719] * PyQt5.msp: Complete the Qt v5.2.0 support for QtGui. [d2c55646d351] * PyQt5.msp, qpy/QtGui/qpygui_qpair.sip: Implemented the new QtGui specific QPair based mapped types. [91180027e254] 2013-12-21 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Emitting a signal with default arguments ommitted no longer requires the exact signal overload to be specified - the default overload can be used. [a9cbd3fc6215] * examples/multimediawidgets/player.py: Removed some old debugging messages from the player.py example. [4c6847702264] 2013-12-20 Phil Thompson * PyQt5.msp, qpy/QtCore/qpycore_qhash.sip, qpy/QtCore/qpycore_qmap.sip, qpy/QtNetwork/qpynetwork_qmap.sip: Refactored QMap and QMultiMap. [cfb5008d4436] * PyQt5.msp, qpy/QtCore/qpycore_qpair.sip: Refactored QPair. [49eaf99ce9de] * qpy/QtCore/qpycore_collections.sip, qpy/QtCore/qpycore_qhash.sip, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qset.sip, qpy/QtCore/qpycore_qvector.sip, qpy/QtGui/qlist.sip, qpy/QtGui/qpygui_collections.sip, qpy/QtGui/qpygui_qlist.sip, qpy/QtGui/qpygui_qvector.sip, qpy/QtMultimedia/qpymultimedia_collections.sip, qpy/QtMultimedia/qpymultimedia_qlist.sip, qpy/QtPrintSupport/qpyprintsupport_collections.sip, qpy/QtPrintSupport/qpyprintsupport_qlist.sip, qpy/QtWidgets/qpywidgets_collections.sip, qpy/QtWidgets/qpywidgets_qlist.sip: Split up the mapped type implementations. [2e1239c043cd] * PyQt5.msp, qpy/QtCore/qpycore_collections.sip, qpy/QtNetwork/qpynetwork_qhash.sip: Refactored QHash. [567d67e5eb6f] 2013-12-19 Phil Thompson * PyQt5.msp, qpy/QtCore/qpycore_collections.sip: Refactored the QSet implementations. [0127ff8a7de9] * qpy/QtCore/qpycore_collections.sip, qpy/QtGui/qpygui_collections.sip, qpy/QtMultimedia/qpymultimedia_collections.sip, qpy/QtPrintSupport/qpyprintsupport_collections.sip, qpy/QtWidgets/qpywidgets_collections.sip: QList and QVector implementations now accept iterables rather than sequences. [fea8a346e95d] * test/tests/mapped_types/test_QList.py: Fixed the QList unit tests. [f7f4b9928694] 2013-12-18 Phil Thompson * PyQt5.msp, qpy/QtCore/qlist.sip, qpy/QtCore/qpycore_collections.sip, qpy/QtGui/qpygui_collections.sip, qpy/QtGui/qpyopengl_collections.sip, qpy/QtMultimedia/qlist.sip, qpy/QtMultimedia/qpymultimedia_collections.sip, qpy/QtPrintSupport/qlist.sip, qpy/QtPrintSupport/qpyprintsupport_collections.sip, qpy/QtWidgets/qlist.sip, qpy/QtWidgets/qpywidgets_collections.sip: Refactored QVector along the lines of QList. [39671105f383] * PyQt5.msp, qpy/QtCore/qlist.sip, qpy/QtGui/qlist.sip, qpy/QtMultimedia/qlist.sip, qpy/QtPrintSupport/qlist.sip, qpy/QtWidgets/qlist.sip: Completed the refactoring and standardisation of the QList implementations. [511f34c97c88] * qpy/QtCore/qlist.sip, test/tests/mapped_types/__init__.py, test/tests/mapped_types/test_QList.py: Added unit tests for most of the QList mapped types. More fixes for QList mapped types. [eebdef19090a] * PyQt5.msp, qpy/QtCore/qlist.sip: Fixes to the QList implementations. Added the QList of enums used by the QtCore module. [05c4b4c81f62] 2013-12-17 Phil Thompson * PyQt5.msp, qpy/QtCore/qlist.sip: QList mapped types now only check for a sequence rather than also checking the individual elements. This allows much more useful exceptions to be raised. qlist.sip is now maintained separately from the project file. [5bdef54961f6] * QtMacExtras/qmacpasteboardmime.sip, QtWinExtras/qwinfunctions.sip, QtX11Extras/qx11info_x11.sip: Added version qualifiers to the platform specific modules. [6182642eb464] 2013-12-16 Phil Thompson * QtWinExtras/QtWinExtrasmod.sip, QtWinExtras/qwinfunctions.sip, build.py, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Added the QtWinExtras module with only (for the moment) the QtWin namespace implemented. [5b7a6055d52e] * QAxContainer/qaxbase.sip, QAxContainer/qaxobject.sip, QAxContainer/qaxwidget.sip, QtMacExtras/qmacpasteboardmime.sip, QtX11Extras/qx11info_x11.sip: Removed the (superfluous) platform directives from the platform specific modules. [719aa5e321e0] * lib/configure.py: SIP v4.15.4 is now required. [be675acbfe2d] * QtX11Extras/QtX11Extrasmod.sip, QtX11Extras/qx11info_x11.sip, build.py, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Implemented the QtX11Extras module. [c8cd08e0db4d] * PyQt5.msp: Implemented the QOpenGLPixelTransferOptions class. [b4919f0a515c] * QtMacExtras/QtMacExtrasmod.sip, QtMacExtras/qmacpasteboardmime.sip, build.py, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Implemented the QtMacExtras module. [3af1359543b4] * QAxContainer/QAxContainermod.sip: Fixed the module configuration for the QAxContainer module. [6cd0e9e81e5a] * PyQt5.msp, qpy/QtCore/qsysinfo.sip, sphinx/api_metadata.cfg: Updated QSysInfo for Qt v5.2.0. qsysinfo.sip is now maintained manually as it has so much platform specific code. [039aa7167784] 2013-12-15 Phil Thompson * Makefile, PyQt5.msp, sphinx/api_metadata.cfg: Completed the QtPositioning module. [94719e40833a] * Makefile, PyQt5.msp, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Removed the QtNfc module. Added the QtPositioning module to the build system and docs. [34457b8e4c87] * PyQt5.msp, sphinx/api_metadata.cfg: Completed the majority of the QtBluetooth module. [7ef992ea2ca8] * PyQt5.msp, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Added the QtBluetooth module to the build system and docs. [9075d7437589] * Merge. [a6a3c89427cd] * PyQt5.msp: Added the initial implementation of the QtPositioning module. [57a1a255ac9d] * sphinx/api_metadata.cfg: Updated the docs for the new Qt 5.2.0 classes in the existing modules. [b4c9ed0667e3] 2013-12-14 Phil Thompson * PyQt5.msp: Added the initial QtBluetooth and QtNfc modules. [7ab9befa4814] * PyQt5.msp: Updated for Qt v5.2.0. [abdbaeefb925] 2013-12-11 Phil Thompson * lib/configure.py: Fixed the required SIP version. [5e2fa0fdc2d0] 2013-12-09 Phil Thompson * PyQt5.msp: Completed the update of QtWidgets. [1b52104b143c] * examples/graphicsview/elasticnodes.py: Fix an obsolete call in the elasticnodes.py example. [db2f88d066a7] 2013-12-06 Phil Thompson * PyQt5.msp, lib/SubclassCode/QtWidgets.versions: Partially updated QtWidgets. [05868fa42655] * PyQt5.msp: Updated the vast majority of QtGui. [f124efa2590b] * PyQt5.msp, lib/SubclassCode/QtQuick.versions: Updated QtQuick. [bac6eac771a3] * PyQt5.msp, lib/SubclassCode/QtQml.versions: Updated QtQml. [34b8d95c229c] * PyQt5.msp: Updated QtSensors. [ca372e3fdb40] * PyQt5.msp: Updated QtNetwork. [4b28b3eb46e0] 2013-12-05 Phil Thompson * PyQt5.msp: Updated QtWebKitWidgets. [17bcdd6819d5] * PyQt5.msp: Updated QtWebKit for Qt v5.2.0-rc1. Completed the update for QtCore. [8b2f27fc1f47] * PyQt5.msp: Updated QtSerialPort for Qt v5.2.0-rc1. [82f4f311dcea] 2013-12-04 Phil Thompson * Makefile, PyQt5.msp, lib/SubclassCode/QtCore.versions, lib/configure.py: Updated QtCore for Qt v5.2.0-rc1 (except for the broken QUrl). [0409bc818f8b] 2013-11-23 Phil Thompson * qpy/QtCore/qpycore_pyqtsignal.cpp: Fixed the handling of pyqtsignal() keyword arguments with Python2. [ceb50aaa7969] 2013-11-19 Phil Thompson * sphinx/index.rst, sphinx/metaobjects.rst: Documented Q_CLASSINFO(), Q_ENUMS() and Q_FLAGS(). [c773b532165e] * qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_qmetaobject.cpp: Enums/flags types are now registered as such. [fd9f3c1eb07a] * qpy/QtCore/qpycore_types.cpp: Enums/flags now have a scope corresponding to the class they are registered (rather than defined) in. [0b2396183bc2] 2013-11-18 Phil Thompson * PyQt5.msp, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_enums_flags.h, qpy/QtCore/qpycore_qmetaobjectbuilder.h, qpy/QtCore/qpycore_types.cpp: Reimplemented Q_ENUMS() and Q_FLAGS() so that they are added to the meta-object. [e1bd545bd994] * Merged the v5.1 maintenance branch. [67e9f33f2606] * qpy/QtGui/opengl_types.sip, qpy/QtGui/qpyopengl_collections.sip: Support for GLuint64 is disabled for ES 2. [3f0065d77ee3] <5.1-maint> 2013-11-17 Phil Thompson * examples/widgets/stylesheet/stylesheeteditor.py: Fixes for examples. [5346065f46ea] <5.1-maint> 2013-11-15 Phil Thompson * pyrcc/main.cpp: pyrcc5 uses the local encoding for the name of the .qrc file. [ae550ef924d3] <5.1-maint> * qpy/QtQml/qpyqml_register_singleton_type.cpp, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h, qpy/QtQml/qpyqmlsingletonobject.cpp, qpy/QtQml/qpyqmlsingletonobject.h: 60 QML types can now be defined. 30 QML singleton types can now be defined. [faa179cff2c7] <5.1-maint> * qpy/QtQuick/qpyquickitem.cpp, qpy/QtQuick/qpyquickitem.h, qpy/QtQuick/qpyquickpainteditem.cpp, qpy/QtQuick/qpyquickpainteditem.h: 30 each of Quick items and painted Quick items are now supported. [53c7f63b5ad5] <5.1-maint> 2013-11-11 Phil Thompson * examples/designer/plugins/widgets/datetimeedit.py, examples/graphicsview/diagramscene/diagramscene.py, examples/itemviews/chart/chart.py, examples/itemviews/pixelator/pixelator.py, examples/multimediawidgets/camera/camera.py, examples/multimediawidgets/player.py, examples/network/fortuneclient.py, examples/qtdemo/scanitem.py, examples/richtext/textedit/textedit.py, examples/widgets/tetrix.py: Various fixes to the examples from Dmitry Shachnev. [440d468a0ae8] <5.1-maint> 2013-11-05 Phil Thompson * qpy/QtQml/qpyqml_register_type.cpp: Revised the previous change for really, really old (GCC 4.3) compilers. [f9d93ebb35b1] <5.1-maint> * qpy/QtQml/qpyqml_register_type.cpp: Applied a couple of specific casts which might be needed by older compilers. [8ffa9810eb28] <5.1-maint> 2013-10-25 Phil Thompson * Makefile, lib/configure.py: Enable the QML debugger when --debug is passed to configure.py. [c483162df565] <5.1-maint> 2013-10-20 Phil Thompson * lib/configure.py: Any qmake variables passed on the command line to configure.py are also applied the plugins and applications Makefiles. [44c92d7c6f19] <5.1-maint> 2013-10-16 Phil Thompson * .hgtags: Added tag 5.1.1 for changeset 06a65a43f646 [2e77fd32377a] <5.1-maint> * NEWS: Released as v5.1.1. [06a65a43f646] [5.1.1] <5.1-maint> 2013-10-15 Phil Thompson * examples/quick/canvas/contents/images/gloss.png, examples/quick/canvas/contents/images/lineedit.png, examples/quick/canvas/contents/images/quit.png, examples/quick/canvas/contents/images/stripes.png, examples/quick/canvas/contents/images/titlebar.png, examples/quick/canvas/contents/images/toolbutton.png: Removed the execute bits on some .png files. [ac974835d7fe] <5.1-maint> 2013-10-13 Phil Thompson * qpy/QtQml/qpyqmlobject.cpp: Fixed a problem with Python properties that have notify signals emitted. [ebd36baa56e9] <5.1-maint> * Makefile, designer/python.pro-in, lib/configure.py, qmlscene/python .pro-in: PyQt will now build against a debug only version of Qt. [d65e39e3cd7d] <5.1-maint> 2013-10-12 Phil Thompson * lib/configure.py: Fixed the handling of VendorID in configure.py. [97319b4351e8] <5.1-maint> 2013-10-07 Phil Thompson * Makefile, PyQt5.msp: Minor fixes for building against Qt v5.2.0-alpha. [41b8f6ca2ea4] <5.1-maint> * qpy/QtCore/qpycore_qobject_helpers.cpp: Fixed the support for QObject meta-casting. [aaa5588d9982] <5.1-maint> 2013-10-05 Phil Thompson * PyQt5.msp: Updated the project for Qt v5.1.1. [fc7b8711dba0] <5.1-maint> * qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_array_convertors.cpp, qpy/QtGui/qpyopengl_init.cpp, qpy/QtGui/qpyopengl_value_array.cpp, qpy/QtGui/qpyopengl_version_functions.cpp: Fixed building against Qt v5.0. [6666b6259893] <5.1-maint> * qpy/QtQml/qpyqml_register_type.cpp: Fixed (hopefully) building with GCC v4.6 and earlier. [0aa3e18d07a1] <5.1-maint> 2013-10-04 Phil Thompson * PyQt5.msp: Fixed the QShortcut ctor when passing slot arguments. [3c895ca14f00] <5.1-maint> 2013-10-03 Phil Thompson * qmlscene/pluginloader.cpp, qpy/QtCore/qpycore_pyqtconfigure.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtQml/qpyqmllistproperty.cpp, qpy/QtQml/qpyqmlobject.cpp: Fixed a number of incorrect (for Python2) format characters. [b63b9dc3a3fa] <5.1-maint> * qpy/QtQml/qpyqml_register_type.cpp: Fixed a bad format character when raising an exception. [3547edcdd278] <5.1-maint> * build.py: Updated the internal build script to use the latest hg rather than that provided with MacHg. [42f3b031a7b9] <5.1-maint> 2013-10-02 Phil Thompson * .hgtags: Added tag 5.1 for changeset e5fd9644dd9c [6cb80b7fd2ed] * NEWS: Released as v5.1. [e5fd9644dd9c] [5.1] 2013-09-28 Phil Thompson * qpy/QtCore/qpycore_pyqtsignal.cpp: Improve the text of the exception raised when the type of a C++ signal argument couldn't be parsed. [fc0039af3b73] * installers/BuildGPL.txt, installers/PyQt5-Qt5-gpl.nsi: Minor updates for the Windows installers. [1a103cd1db02] 2013-09-27 Phil Thompson * sphinx/installation.rst: Updated the docs regarding the --configuration flag to configure.py. [40038372e538] 2013-09-26 Phil Thompson * lib/RaspberryPi/configuration.txt: Added the Raspberry Pi configuration notes to the internal documentation. [3de62eb92856] * configurations/rpi_py3.cfg: Updated the Raspberry Pi configuration for a full build. [5f21be94b635] * qmlscene/pluginloader.cpp: Fixed the build when Python3, prior to Python v3.3, has wide characters. [5b01202be52b] * designer/pluginloader.cpp, designer/python.pro-in, lib/configure.py, qmlscene/pluginloader.cpp, qmlscene/python.pro-in: The plugins no longer try to dynamically load the interpreter library (as they are already linked against it). The plugins shoulkd now build when cross-compiling. [edd0734e2a64] 2013-09-25 Phil Thompson * configurations/rpi_py3.cfg, lib/configure.py: More cross-compilation fixes. The openglwindow.py example now runs on the Pi. [7ed7bf039abe] 2013-09-24 Phil Thompson * lib/configure.py: The --no-sip-files option to configure.py now works. [10dd80985ac7] * PyQt5.msp: Minor tweaks to handwritten OpenGL code. [79a533fc00a1] * Makefile, configurations/rpi_py3.cfg, lib/configure.py, qpy/QtGui/opengl_types.sip: Further fixes for cross-compilation. OpenGL types are now hard- coded. [3166145ee331] * Makefile, configurations/rpi_py3.cfg, lib/configure.py: QtCore can now be cross-compiled. [f3bbee7cffae] * PyQt5.msp: Fix QVector when qreal is float. [b9a9f60ac6f4] 2013-09-16 Phil Thompson * qpy/QtGui/qpyopengl_version_functions.cpp: _QOpenGLFunctions_ES2 now works. [597681874226] * Makefile, PyQt5.msp, qpy/QtGui/qpyopengl_value_array.cpp: More _QOpenGLFunctions_ES2. [6a10b084e6ca] 2013-09-15 Phil Thompson * PyQt5.msp, lib/configure.py: More _QOpenGLFunctions_ES2. [5f6ec7374914] * PyQt5.msp: More _QOpenGLFunctions_2_0. [ee04c8a2c022] * PyQt5.msp, lib/configure.py: More _QOpenGLFunctions_ES2. [90c93700c52b] * PyQt5.msp: More on _QOpenGLFunctions_ES2. [9685fbc2b622] * PyQt5.msp: Added the _QOpenGLFunctions_ES2 module. [bd8d9c35627f] 2013-09-09 Phil Thompson * Makefile, PyQt5.msp, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_array_convertors.cpp, qpy/QtGui/qpyopengl_init.cpp, sphinx/opengl.rst: Completed the initial implementation of _QOpenGLFunctions_2_0. [daa2bea192b2] * Makefile, PyQt5.msp, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_array_convertors.cpp, qpy/QtGui/qpyopengl_attribute_array.cpp, qpy/QtGui/qpyopengl_data_cache.cpp, qpy/QtGui/qpyopengl_init.cpp, qpy/QtGui/qpyopengl_uniform_value_array.cpp, qpy/QtGui/qpyopengl_value_array.cpp, qpy/QtGui/qpyopengl_version_functions.cpp: More _QOpenGLFunctions_2_0. [b5534bf36a20] 2013-09-08 Phil Thompson * pylupdate/fetchtr.cpp: Added support for the different line endings to pylupdate based on a patch from Florent Rougon. [96069d4e7caa] * lib/configure.py: Do a better job of detecting when the user is trying to use Qt3. Do a better job of detecting when the use doesn't have write permissions. [1610b9abbf10] * Makefile, PyQt5.msp, qpy/QtGui/qpygui.pro, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_array_convertors.cpp, qpy/QtGui/qpyopengl_init.cpp: More _QOpenGLFunctions_2_0. [64cb4aa6f8cf] 2013-09-07 Phil Thompson * examples/opengl/textures/textures.py: Fixed the textures.py example. [7b33930e4c2d] * examples/opengl/grabber.py, examples/opengl/hellogl.py, examples/opengl/overpainting.py, examples/opengl/textures/textures.py: Fixed the OpenGL examples for Python3. [af3d975869cc] * PyQt5.msp, qpy/QtGui/qpyopengl_value_array.cpp: OpenGL calls now accept None when a non-cached array is expected. OpenGL calls now accept an offset when a cached array is expected. [283b44baca06] 2013-09-06 Phil Thompson * PyQt5.msp: More _QOpenGLFunctions_2_0. [cd5cd9bdbcfd] * PyQt5.msp, examples/opengl/openglwindow.py: More _QOpenGLFunctions_2_0. [2b2312a2da64] * PyQt5.msp: More _QOpenGLFunctions_2_0. [24610a59a9dc] 2013-09-05 Phil Thompson * PyQt5.msp, lib/configure.py: Implemented more of _QOpenGLFunctions_2_0. [448e0631c418] * Makefile, PyQt5.msp, lib/configure.py, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_data_cache.cpp, qpy/QtGui/qpyopengl_data_cache.h, qpy/QtGui/qpyopengl_init.cpp, qpy/QtGui/qpyopengl_value_array.cpp: Updated the OpenGL array support to optimise the most common case where the array doesn't have to be persistent. Implemented a bit more of _QOpenGLFunctions_2_0. [f7bd5bd22f67] 2013-09-04 Phil Thompson * Makefile, examples/opengl/openglwindow.py, qpy/QtGui/qpyopengl_value_array.cpp: Added support for sequences as the basis of OPenGL arrays. [98d2b977e23f] * qpy/QtGui/qpyopengl_value_array.cpp: Added OpenGL array support for versions of Python that don't support the new buffer protocol. [844aaa83c62c] * Makefile, PyQt5.msp, examples/opengl/openglwindow.py, qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtGui/qpygui.pro, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_data_cache.cpp, qpy/QtGui/qpyopengl_data_cache.h, qpy/QtGui/qpyopengl_init.cpp, qpy/QtGui/qpyopengl_value_array.cpp: Implemented the buffer support for raw arrays passed to OpenGL. [9bfb71b1d0f5] 2013-09-03 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Slight tweak on the previous change. [ead833d00e02] 2013-09-02 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Improved the handling of QGraphicsItem when parsing a Python type object of a sub-class. [527c79f1594f] * lib/configure.py: Worked around SIP's broken handling of composite modules. [6b8496f8cb72] 2013-09-01 Phil Thompson * pylupdate/fetchtr.cpp: pylupdate now handles backslash at the end of a line within a quoted string. [1e0878bd6a21] 2013-08-30 Phil Thompson * PyQt5.msp, lib/configure.py: Only check for OpenGL modules according to whether Qt is configured for desktop OpenGL or OpenGL ES. Implemented the remaining easy parst of _QOpenGLFunctions_2_0. [3ba267894012] 2013-08-29 Phil Thompson * PyQt5.msp, lib/configure.py: Implemented more of the _QOpenGLFunctions_2_0 module. [936925a906bb] * sphinx/index.rst, sphinx/introduction.rst, sphinx/opengl.rst: Documented the OpenGL bindings support. [9eca323f87e2] * PyQt5.msp, examples/opengl/openglwindow.py, lib/OpenGL/gen_opengl_constants.py, lib/configure.py, qpy/QtGui/qpygui.pro, qpy/QtGui/qpyopengl_add_constants.c, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_attribute_array.cpp, qpy/QtGui/qpyopengl_uniform_value_array.cpp, qpy/QtGui/qpyopengl_version_functions.cpp: Implemented the framework for the version specific OpenGL bindings. Added the skeleton bindings for OpenGL v2.0. Updated the openglwindow.py example to use the bindings. [3a08e74da74f] * PyQt5.msp, lib/SubclassCode/QtGui.versions, lib/configure.py: Fixed QAbstractOpenGLFunctions. Fixed things so that it will build on an OpenGL ES system. [318b82b05b53] 2013-08-28 Phil Thompson * PyQt5.msp, lib/OpenGL/gen_opengl_constants.py, lib/OpenGL/gl.xml: Added the beginnings of the full OpenGL bindings. [3dd128404e5c] 2013-08-27 Phil Thompson * PyQt5.msp, sphinx/api_metadata.cfg, sphinx/introduction.rst: Completed the implementation of QtSensors. [5ff7407d37c2] 2013-08-26 Phil Thompson * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi, lib/configure.py, sphinx/introduction.rst: Added the stub of the QtSensors module. [ffa47c3ca333] * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi, lib/configure.py, sphinx/api_metadata.cfg, sphinx/introduction.rst: Implemented the QtSerialPort module. [5e397a878471] * PyQt5.msp: Fixed build errors in third-party modules that use --public-not- protected. [ca9e6073899a] 2013-08-24 Phil Thompson * PyQt5.msp: Updated QtWidgets for Qt v5.1. [693a95fde3fa] * PyQt5.msp: Updated QtWebKit, QtWebKitWidgets and QtXmlPatterns for Qt v5.1. [feefcd6865ab] * PyQt5.msp: Updated QtSql, QtSvg and QtTest for Qt v5.1. [b41ab51caad3] * PyQt5.msp, lib/SubclassCode/QtQuick.versions, sphinx/api_metadata.cfg: Updated QtQuick for Qt v5.1. [06a106bb3979] * PyQt5.msp, lib/SubclassCode/QtQml.versions, sphinx/api_metadata.cfg: Updated QtQml for Qt v5.1. [b21cddbc7055] * PyQt5.msp: Updated QtOpenGL and QtPrintSupport for Qt v5.1. [d95b6fe223f7] * PyQt5.msp: Updated QtNetwork for Qt v5.1. [542876931098] * qpy/QtGui/qpyopengl_collections.sip: Added the missing OpenGL mapped type implementations. [5734b486da0e] * PyQt5.msp: Updated QtMultimedia and QtMultimediaWidgets for Qt v5.1. [6aa815198cb4] * PyQt5.msp: Updated QtHelp for Qt v5.1. [39e72b951edd] * PyQt5.msp: Updated the QObject sub-class convertor code fro QtGui. [c85fc0a95473] * PyQt5.msp, lib/SubclassCode/QtGui.versions, lib/configure.py, sphinx/api_metadata.cfg: Updated QtGui for Qt v5.1. [dc11dcd36ea0] 2013-08-22 Phil Thompson * sphinx/api_metadata.cfg: Added the new QtCore classes to the docs. [74868b1f6fbe] * PyQt5.msp: Updated QtDBus and QtDesigner for Qt v5.1. [ed9b4b48ed21] * PyQt5.msp, lib/SubclassCode/QtCore.versions: Updated QtCore for Qt v5.1. [a231bd34acb3] * lib/configure.py: Added MULTIARCH support to configure.py. [b6e3146e2327] 2013-08-21 Phil Thompson * NEWS, PyQt5.msp, build.py, installers/PyQt5-Qt5-gpl.nsi, lib/configure.py: Switch to Qt v5.1 in the various places that need it. [85f42f774296] * sphinx/api_metadata.cfg: Added the missing QQmlParserStatus from the documentation. [ad31726b792f] * contrib/lang/Makefile, contrib/lang/lang.py, contrib/lang/lang.qrc, contrib/lang/lang/cs_cs.qm, contrib/lang/lang/cs_cs.ts, contrib/lang/lang/da_da.qm, contrib/lang/lang/da_da.ts, contrib/lang/lang/de_ch.qm, contrib/lang/lang/de_ch.ts, contrib/lang/lang/de_de.qm, contrib/lang/lang/de_de.ts, contrib/lang/lang/en_gb.qm, contrib/lang/lang/en_gb.ts, contrib/lang/lang/en_us.qm, contrib/lang/lang/en_us.ts, contrib/lang/lang/es_es.qm, contrib/lang/lang/es_es.ts, contrib/lang/lang/et_et.qm, contrib/lang/lang/et_et.ts, contrib/lang/lang/fi_fi.qm, contrib/lang/lang/fi_fi.ts, contrib/lang/lang/fr_ca.qm, contrib/lang/lang/fr_ca.ts, contrib/lang/lang/fr_fr.qm, contrib/lang/lang/fr_fr.ts, contrib/lang/lang/hu_hu.qm, contrib/lang/lang/hu_hu.ts, contrib/lang/lang/it_it.qm, contrib/lang/lang/it_it.ts, contrib/lang/lang/nl_nl.qm, contrib/lang/lang/nl_nl.ts, contrib/lang/lang/no_no.qm, contrib/lang/lang/no_no.ts, contrib/lang/lang/pl_pl.qm, contrib/lang/lang/pl_pl.ts, contrib/lang/lang/pt_pt.qm, contrib/lang/lang/pt_pt.ts, contrib/lang/lang/sv_sv.qm, contrib/lang/lang/sv_sv.ts, contrib/lang/lang/tr_tr.qm, contrib/lang/lang/tr_tr.ts, contrib/lang/mainwindow.ui, contrib/pymodeltest/LICENSE.GPL, contrib/pymodeltest/README, contrib/pymodeltest/modeltest.py, contrib/sandbox/README, contrib/sandbox/sandbox.pyw, dbus/dbus.sbf, qpy/QtGui/qpytextobject.h, qpy/QtGui/qpytextobject.sip, qpy/QtOpenGL/qpyopengl.pro, qpy/QtOpenGL/qpyopengl_api.h, qpy/QtOpenGL/qpyopengl_attribute_array.cpp, qpy/QtOpenGL/qpyopengl_uniform_value_array.cpp: Merged v5.0.1 into the trunk. [82643b45e53c] * .hgtags: Added tag 5.0.1 for changeset 59b34385ff6d [72037931b2a8] <5.0-maint> * NEWS: Released as v5.0.1. [59b34385ff6d] [5.0.1] <5.0-maint> 2013-08-19 Phil Thompson * installers/qt5-config.bat: Updated the internal Qt5 build documentation. [e131f74b7106] <5.0-maint> * lib/configure.py: Fixed an error message bug in configure.py. [1e1ad89c6da7] <5.0-maint> 2013-08-18 Phil Thompson * installers/BuildGPL.txt, installers/PyQt5-Qt5-gpl.nsi, qmlscene/python.pro-in: Updated the installer for Qt v5.1.0. [8463e4cb0371] <5.0-maint> * lib/configure.py: More fixes for out of tree builds. [a188359a1bf2] <5.0-maint> * lib/configure.py: Fixed configure.py for out of tree builds. [435ccc473b5d] <5.0-maint> 2013-08-17 Phil Thompson * NEWS: Updated the NEWS file. [7e6f3768c519] <5.0-maint> * examples/qml/referenceexamples/binding.py, examples/qml/referenceexamples/valuesource.py: Added the valuesource.py example. [9992e2e174c1] <5.0-maint> * qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.h, qpy/QtCore/qpycore_qmetaobjectbuilder.h, qpy/QtCore/qpycore_types.cpp, sphinx/gotchas.rst, sphinx/signals_slots.rst: Added the arguments keyword argument to pyqtSignal(). [0073e2386c2d] <5.0-maint> * examples/qml/referenceexamples/binding.py, examples/qml/referenceexamples/signal.py: Fixed the signal definition in the binding.py and signal.py examples. [c5345f8bcb87] <5.0-maint> * examples/qml/referenceexamples/signal.py: Added the signal.py example. [5cdcf5b00f52] <5.0-maint> * qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: QML proxies now relay signals to QML. [2080cdb152cc] <5.0-maint> 2013-08-16 Phil Thompson * PyQt5.msp: Tweak the previous fix. [da4e96198c0b] <5.0-maint> * PyQt5.msp: Fixed the error detection in the QList convertors based on Matt Newell's patch. [ea5ea9b31075] <5.0-maint> * qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h, sphinx/qml.rst: Added support for QQmlParserStatus to the QML proxies. [d9296d0519e9] <5.0-maint> * PyQt5.msp: QQmlPropertyValueSource is also a mixin. [a55b7bf0af7d] <5.0-maint> * examples/qml/referenceexamples/properties.py: Added the properties.py example. [84f06aab5c9a] <5.0-maint> * examples/qml/referenceexamples/methods.py: Added the methods.py example. [0621954b0ccb] <5.0-maint> * examples/qml/referenceexamples/grouped.py: Added the grouped.py example. [5b4a7349bb9d] <5.0-maint> * examples/qml/referenceexamples/coercion.py, examples/qml/referenceexamples/default.py: Added the default.py example. Cleaned up the coercion.py example. [65212f2a631a] <5.0-maint> * examples/qml/referenceexamples/coercion.py: Added the coercion.py example. [36c88aa58b10] <5.0-maint> * examples/qml/referenceexamples/binding.py, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h, sphinx/qml.rst: Completed the support for property value sources. [4db347bfa0fa] <5.0-maint> * PyQt5.msp, sphinx/api_metadata.cfg: Added QQmlPropertyValueSource. [39c886b5f3a2] <5.0-maint> * examples/qml/referenceexamples/binding.py: Added the initial implementation of the binding.py example. [24a37fc53116] <5.0-maint> 2013-08-15 Phil Thompson * Makefile, examples/qml/referenceexamples/attached.py, qpy/QtQml/qmlattachedpropertiesobject.sip, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.h, sphinx/qml.rst: Completed the implementation of qmlAttachedPropertiesObject(). Documented the use of attached properties. Added the attach.py example. [9bb44d8cd582] <5.0-maint> * qpy/QtQml/qmlattachedpropertiesobject.sip, qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml_api.h: Added the initial implementation of qmlAttachedPropertiesObject(). [7dd0fa517103] <5.0-maint> * Makefile, qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: Added support for defining and creating (but not yet retrieving) attached properties. [e284892a8884] <5.0-maint> * Makefile, qpy/QtQml/qpyqml_register_singleton_type.cpp, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQuick/qpyquickitem.cpp, qpy/QtQuick/qpyquickpainteditem.cpp: Make sure types get registered with the original meta-object and not a copy. [37335dddfa48] <5.0-maint> 2013-08-14 Phil Thompson * Makefile, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_types.cpp: The Python type name is now returned as a property type name for types that derive from QObject (as opposed to any C++ QObject sub- class). This means that they have distinct types to QML. [c954bec31706] <5.0-maint> * qpy/QtQuick/qpyquickitem.cpp: Removed more redundant QByteArrays. [1ef26c21cb3d] <5.0-maint> * Makefile, qpy/QtCore/qpycore_types.cpp, qpy/QtQml/qpyqml_register_type.cpp: Removed redundant QByteArrays from the registration of QML proxies. [d3a3b05f836b] <5.0-maint> 2013-08-13 Phil Thompson * PyQt5.msp, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_post_init.cpp, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: Improved the handling of QML proxies. [7893d27b5297] <5.0-maint> 2013-08-12 Phil Thompson * qpy/QtQml/qpyqml_listdata.cpp, qpy/QtQml/qpyqml_listdata.h, qpy/QtQml/qpyqmllistproperty.cpp: QQmlListProperty now supports automatic handling of a Python list. [60d80fb8b575] <5.0-maint> * examples/qml/referenceexamples/adding.py: Added the adding.py QML example. [b743e47396da] <5.0-maint> * sphinx/introduction.rst, sphinx/qml.rst: Documented the QML plugin. [5540ce69ca6d] <5.0-maint> * examples/qtdemo/menumanager.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: qtdemo.py now handles launching qmlscene. [23c41bdedce8] <5.0-maint> * examples/quick/tutorials/extending/chapter6-plugins/Charts/qmldir, lib/configure.py: configure.py now fixes the qmldir file of the chapter6-plugins example. [c83b531d316e] <5.0-maint> * qmlscene/pluginloader.cpp: Completed the implementation of the qmlscene plugin. [55b870798e9c] <5.0-maint> * examples/quick/tutorials/extending/chapter6-plugins/Charts/chartsplu gin.py, examples/quick/tutorials/extending/chapter6-plugins/Charts/p iechart.py, examples/quick/tutorials/extending/chapter6-plugins/Char ts/pieslice.py, examples/quick/tutorials/extending/chapter6-plugins/Charts/qmldir, examples/quick/tutorials/extending/chapter6-plugins/app.qml: Added the chapter6-plugins example. [bebaac7a0d7d] <5.0-maint> * qmlscene/pluginloader.cpp, qmlscene/pluginloader.h: The Qml plugin now calls any Python implementation of initializeEngine(). [3c588fa07a63] <5.0-maint> 2013-08-11 Phil Thompson * Makefile, qmlscene/pluginloader.cpp, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp: Fixed the handling of reading properties via a meta-call. [ccdb334aad87] <5.0-maint> * Makefile, build.py, lib/configure.py, qmlscene/pluginloader.cpp, qmlscene/pluginloader.h, qmlscene/python.pro-in, sphinx/installation.rst: Added the initial implementation of the qmlscene plugin. [1be57f8f651f] <5.0-maint> * PyQt5.msp, sphinx/api_metadata.cfg: Added QQmlExtensionPlugin. [e88c65a97583] <5.0-maint> 2013-08-10 Phil Thompson * build.py: Removed an old reference to elementtree in the internal build system. [77a8aa22c304] <5.0-maint> * lib/configure.py: Fixed the handling of the Designer plugin installation directory. [0f65c507b625] <5.0-maint> * lib/configure.py: Made sure the qmake version is checked before any other output. [a8b6f4139914] <5.0-maint> 2013-08-09 Phil Thompson * sphinx/api_metadata.cfg, sphinx/qml.rst: Documented QQmlListProperty. [ab75bbfed2d0] <5.0-maint> * PyQt5.msp, examples/quick/tutorials/extending/chapter5-listpropertie s/chapter5-listproperties.py, qpy/QtQml/qpyqml.pro, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_listdata.cpp, qpy/QtQml/qpyqml_listdata.h, qpy/QtQml/qpyqml_post_init.cpp, qpy/QtQml/qpyqmllistproperty.cpp, qpy/QtQml/qpyqmllistproperty.h, qpy/QtQml/qpyqmllistproperty.sip: Implemented QQmlListProperty. [44a9f9f1e42c] <5.0-maint> * examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Fixed the launching of the Quick tutorial examples. [a4d11dd6fb95] <5.0-maint> * examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml, examples/quick/tutorials/extending/chapter1-basics/app.qml, examples /quick/tutorials/extending/chapter1-basics/chapter1-basics.py, examples/quick/tutorials/extending/chapter2-methods/app.qml, example s/quick/tutorials/extending/chapter2-methods/chapter2-methods.py, examples/quick/tutorials/extending/chapter3-bindings/app.qml, exampl es/quick/tutorials/extending/chapter3-bindings/chapter3-bindings.py, examples/quick/tutorials/extending/chapter4-customPropertyTypes/app. qml, examples/quick/tutorials/extending/chapter4-customPropertyTypes /chapter4-customPropertyTypes.py, examples/quick/tutorials/extending/chapter5-listproperties/app.qml, e xamples/quick/tutorials/extending/chapter5-listproperties/chapter5-l istproperties.py: Added the first five extending QtQuick tutorial examples. [741a1c2515ab] <5.0-maint> 2013-08-08 Phil Thompson * PyQt5.msp: Fixed the QOpenGLFramebufferObject ctors for OpenGL/ES. [2d63832f17f9] <5.0-maint> * PyQt5.msp: Removed the desktop OpenGL specific enum members from QSGGeometry. [ae254303ee10] <5.0-maint> 2013-08-07 Phil Thompson * PyQt5.msp: Removed remaining QList. [5353ace04cdf] <5.0-maint> * PyQt5.msp: Removed unused QSet and QMultiHash mapped types. [f9d55d2d3f80] <5.0-maint> * PyQt5.msp: Fixed the types of setDashPattern() and dashPattern() of QPen. [d59baf568cd7] <5.0-maint> * PyQt5.msp: Fixed the types of setDashPattern() and dashPattern() of QPainterPath. [65c2c020bd91] <5.0-maint> * PyQt5.msp: Removed the unused QList mapped types. [f931a114fe4e] <5.0-maint> * lib/configure.py: The configure.py test for qreal is now the same as the one in qglobal.h. [2a46b7f185aa] <5.0-maint> 2013-08-06 Phil Thompson * PyQt5.msp: Fixed the QGradientStops typedef. [d1bfba006b28] <5.0-maint> 2013-08-05 Phil Thompson * PyQt5.msp, examples/quick/scenegraph/customgeometry/customgeometry.py: Completed the implementation of QSGGeometry. Ported the customgeometry.py example to Qt v5.1. [dc70ed4b71f2] <5.0-maint> * PyQt5.msp: Added the remaining QSGGeometry methods that returned typed arrays. [85c6ae5aae0b] <5.0-maint> * PyQt5.msp: Fixed QSGNode.setFlags(). The customgeometry.py example now works. [475543e43c7f] <5.0-maint> 2013-08-04 Phil Thompson * PyQt5.msp, examples/quick/scenegraph/customgeometry/customgeometry.py: Added the GL drawing modes to QSGGeometry. Updated the customgeometry.py example. Passed the struct format to the typed array calls. [da15276a17c7] <5.0-maint> * examples/quick/scenegraph/customgeometry/customgeometry.py: Fixes to the customgeometry.py example. [51419d8bd817] <5.0-maint> 2013-08-03 Phil Thompson * PyQt5.msp: Added some annotations to QSGGeometry. [9f4a5ec6265a] <5.0-maint> 2013-08-02 Phil Thompson * PyQt5.msp: Implemented QSGGeometry.vertexDataAsPoint2D(). [5dce48f13136] <5.0-maint> 2013-07-31 Phil Thompson * examples/quick/scenegraph/customgeometry/customgeometry.py, qpy/QtQuick/qpyquick.pro, qpy/QtQuick/qpyquick_register_type.cpp, qpy/QtQuick/qpyquickitem.cpp, qpy/QtQuick/qpyquickpainteditem.cpp, qpy/QtQuick/qpyquickpainteditem.h: Added support for QQuickPaintedItem. Fixes to the customgeometry.py example. [78c6a5e85fef] <5.0-maint> * PyQt5.msp: Added /ReleaseGIL/ to the QWindow show methods to avoid an apparent deadlock. [31330f114be8] <5.0-maint> 2013-07-30 Phil Thompson * qpy/QtQml/qpyqmlsingletonobject.h: Fixed a typo affecting case sensitive filesystems. [55557cf6c754] <5.0-maint> * PyQt5.msp, examples/quick/scenegraph/customgeometry/customgeometry.py, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQuick/qpyquick.pro, qpy/QtQuick/qpyquick_post_init.cpp, qpy/QtQuick/qpyquick_register_type.cpp, qpy/QtQuick/qpyquick_register_type.h, qpy/QtQuick/qpyquickitem.cpp, qpy/QtQuick/qpyquickitem.h: Python QQuickItem implementations now get created and their properties updated. [70f46d0d1f2f] <5.0-maint> 2013-07-28 Phil Thompson * pyuic/uic/uiparser.py: Grid alignments can now be a set of or-ed values. [45a3ca3e06db] <5.0-maint> 2013-07-27 Phil Thompson * examples/sql/connection.py: Removed the unnecessary #! line from connection.py. [26e093f17858] <5.0-maint> 2013-07-26 Phil Thompson * examples/itemviews/puzzle/puzzle.py: Fixed the item views version of the puzzle.py example. [5cb5b4bdafbd] <5.0-maint> * examples/itemviews/stardelegate.py: Fixed the stardelegate.py example. [0cf81f6fbbe5] <5.0-maint> * pyuic/uic/uiparser.py: Added support for the alignment of grid items in pyuic. [8a7e107cfe07] <5.0-maint> * examples/layouts/borderlayout.py, examples/layouts/flowlayout.py, examples/mainwindows/menus.py, examples/mainwindows/separations.py, examples/widgets/styles.py: Fixed the remaining calls to QLayout.setMargin(). [630b2d432fc4] <5.0-maint> * examples/dialogs/extension.py, examples/dialogs/standarddialogs.py, examples/dialogs/tabdialog.py, examples/dialogs/trivialwizard.py: Fixed the dialog examples so that the close buttons are enabled on OS/X when needed. [63d2aaff27a8] <5.0-maint> * examples/activeqt/webbrowser/ui_mainwindow.py, examples/dbus/chat/ui_chatmainwindow.py, examples/dbus/chat/ui_chatsetnickname.py, examples/designer/calculatorform/ui_calculatorform.py, examples/itemviews/editabletreemodel/ui_mainwindow.py, examples/webkit/domtraversal/ui_window.py, examples/widgets/stylesheet/ui_mainwindow.py, examples/widgets/stylesheet/ui_stylesheeteditor.py: Re-rean pyuic5 on the examples to get rid of calls to setMargin(). [cdfc8d862f73] <5.0-maint> * examples/quick/scenegraph/customgeometry/customgeometry.py, examples/quick/scenegraph/customgeometry/customgeometry_rc.py, examples/quick/scenegraph/customgeometry/main.qml: Made the QML more readable. [6442069f40a5] <5.0-maint> * examples/painting/concentriccircles.py: Simplifies the concentriccircles.py example. [5429c29179eb] <5.0-maint> 2013-07-25 Phil Thompson * qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: Improvements to the QML object proxy. [b78c48ae7358] <5.0-maint> 2013-07-23 Phil Thompson * PyQt5.msp: Added /ReleaseGIL/ to QQuickView.setSource(). Removed /TransferThis/ from QQuickItem.setParentItem(). [af06eab58162] <5.0-maint> * examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml, examples/quick/scenegraph/customgeometry/customgeometry.py, examples/quick/scenegraph/customgeometry/customgeometry.qrc, examples/quick/scenegraph/customgeometry/customgeometry_rc.py, examples/quick/scenegraph/customgeometry/main.qml: Added the customgeometry.py example. [c0cb02e1ed62] <5.0-maint> * examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Added the abstractitemmodel.py example to qtdemo.py. [554d667ee318] <5.0-maint> * PyQt5.msp, examples/quick/models/abstractitemmodel/abstractitemmodel.py, examples/quick/models/abstractitemmodel/abstractitemmodel.qrc, examples/quick/models/abstractitemmodel/abstractitemmodel_rc.py, examples/quick/models/abstractitemmodel/view.qml, examples/quick/models/objectlistmodel/objectlistmodel.py: Fixed QTextBlock.setUserData() and QSyntaxHighlighter.setCurrentBlockUserData() so that an explicit reference to the owning document doesn't need to be kept. [fcd867e2f9c6] <5.0-maint> * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtQuick/qpyquick_chimera_helpers.cpp, qpy/QtQuick/qpyquick_chimera_helpers.h, sphinx/extension_api.rst: Improved the API of pyqt5_register_to_qvariant_convertor(). [fd3dda9d913b] <5.0-maint> * PyQt5.msp, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_pyqtslotproxy.h, sphinx/extension_api.rst: Removed pyqt5_qobject_sender() from the public API. [c13032fa3dfd] <5.0-maint> * PyQt5.msp, lib/configure.py, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtDBus/qpydbus_chimera_helpers.h, qpy/QtQuick/qpyquick.pro, qpy/QtQuick/qpyquick_api.h, qpy/QtQuick/qpyquick_chimera_helpers.cpp, qpy/QtQuick/qpyquick_chimera_helpers.h, qpy/QtQuick/qpyquick_post_init.cpp, sphinx/extension_api.rst: Added the QtQuick support library to add the necessary QVariant convertors. [16d58eaa4f93] <5.0-maint> * examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml, examples/quick/models/objectlistmodel/objectlistmodel.py, examples/quick/models/objectlistmodel/objectlistmodel.qrc, examples/quick/models/objectlistmodel/objectlistmodel_rc.py, examples/quick/models/objectlistmodel/view.qml, examples/quick/models/stringlistmodel/stringlistmodel.py, examples/quick/models/stringlistmodel/stringlistmodel.qrc, examples/quick/models/stringlistmodel/stringlistmodel_rc.py, examples/quick/models/stringlistmodel/view.qml: Added the objectlistmodel.py and stringlistmodel.py examples. [f29e57d95c66] <5.0-maint> 2013-07-22 Phil Thompson * examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml, examples/quick/animation/animation.py, examples/quick/canvas/bezierCurve/bezierCurve.qml, examples/quick/canvas/canvas.py, examples/quick/canvas/canvas.qml, examples/quick/canvas/canvas.qrc, examples/quick/canvas/canvas_rc.py, examples/quick/canvas/clip/clip.qml, examples/quick/canvas/contents/Button.qml, examples/quick/canvas/contents/ScrollBar.qml, examples/quick/canvas/contents/Slider.qml, examples/quick/canvas/contents/TitleBar.qml, examples/quick/canvas/contents/ToolBar.qml, examples/quick/canvas/contents/images/button-pressed.png, examples/quick/canvas/contents/images/button.png, examples/quick/canvas/contents/images/default.svg, examples/quick/canvas/contents/images/gloss.png, examples/quick/canvas/contents/images/lineedit.png, examples/quick/canvas/contents/images/lineedit.sci, examples/quick/canvas/contents/images/quit.png, examples/quick/canvas/contents/images/stripes.png, examples/quick/canvas/contents/images/titlebar.png, examples/quick/canvas/contents/images/titlebar.sci, examples/quick/canvas/contents/images/toolbutton.png, examples/quick/canvas/contents/images/toolbutton.sci, examples/quick/canvas/contents/qt-logo.png, examples/quick/canvas/quadraticCurveTo/quadraticCurveTo.qml, examples/quick/canvas/roundedrect/roundedrect.qml, examples/quick/canvas/smile/smile.qml, examples/quick/canvas/squircle/squircle.png, examples/quick/canvas/squircle/squircle.qml, examples/quick/canvas/tiger/tiger.js, examples/quick/canvas/tiger/tiger.qml: Added the QtQuick canvas.py example. [268df5fd8d34] <5.0-maint> * examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml, examples/quick/README, examples/quick/animation/animation.py, examples/quick/animation/animation.qml, examples/quick/animation/animation.qrc, examples/quick/animation/animation_rc.py, examples/quick/animation/basics/color-animation.qml, examples/quick/animation/basics/images/face-smile.png, examples/quick/animation/basics/images/moon.png, examples/quick/animation/basics/images/shadow.png, examples/quick/animation/basics/images/star.png, examples/quick/animation/basics/images/sun.png, examples/quick/animation/basics/property-animation.qml, examples/quick/animation/behaviors/SideRect.qml, examples/quick/animation/behaviors/behavior-example.qml, examples/quick/animation/behaviors/tvtennis.qml, examples/quick/animation/behaviors/wigglytext.qml, examples/quick/animation/easing/easing.qml, examples/quick/animation/pathanimation/pathanimation.qml, examples/quick/animation/pathinterpolator/pathinterpolator.qml, examples/quick/animation/states/qt-logo.png, examples/quick/animation/states/states.qml, examples/quick/animation/states/transitions.qml, examples/quick/shared/Button.qml, examples/quick/shared/LauncherList.qml, examples/quick/shared/SimpleLauncherDelegate.qml, examples/quick/shared/images/back.png, examples/quick/shared/images/next.png, examples/quick/shared/shared.qrc, examples/quick/shared/shared_rc.py: Added the QtQuick animation.py example. [837150b71731] <5.0-maint> 2013-07-21 Phil Thompson * PyQt5.msp: QQmlParserStatus is now defined as a Qt interface. [f14be28e462e] <5.0-maint> * PyQt5.msp, examples/richtext/textobject/textobject.py, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qobject_helpers.h, qpy/QtGui/qpygui.pro, qpy/QtGui/qpytextobject.h, qpy/QtGui/qpytextobject.sip, sphinx/api_metadata.cfg, sphinx/index.rst, sphinx/pyqt4_differences.rst, sphinx/qt_interfaces.rst: QTextObjectInterface is now supported as an interface that is used as a mixin. Removed QPyTextObject as it is no longer needed. Updated the textobject.py example. [57bb15a5475d] <5.0-maint> 2013-07-20 Phil Thompson * Makefile, PyQt5.msp, sphinx/api_metadata.cfg, sphinx/introduction.rst: Completed the initial implementation of the QtQuick module. [2a99e59669ee] <5.0-maint> * PyQt5.msp: Added the remaining QSG texture classes. [334127f294d9] <5.0-maint> 2013-07-19 Phil Thompson * Makefile, PyQt5.msp: Completed the implementation of QSGMaterialShader. [7bcb69ebcfc8] <5.0-maint> 2013-07-14 Phil Thompson * PyQt5.msp: More work on QSGMaterial and QSGGeometry. [9c09c69e011c] <5.0-maint> 2013-07-13 Phil Thompson * PyQt5.msp: Completed the support for QQuickWindow and QQuickItem. [770f796c0a61] <5.0-maint> * PyQt5.msp, lib/configure.py: Added the minimal QtQuick module. [1c3b391ebb72] <5.0-maint> 2013-07-12 Phil Thompson * NEWS, sphinx/index.rst, sphinx/introduction.rst, sphinx/pyqt4_differences.rst, sphinx/qml.rst: Documented the QtQml module. [f6f498d697aa] <5.0-maint> * qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml.pro, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_singleton_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlsingletonobject.cpp, qpy/QtQml/qpyqmlsingletonobject.h: Implemented qmlRegisterSingletonType(). [7a2acb8c9a93] <5.0-maint> 2013-07-11 Phil Thompson * qpy/QtCore/qpycore_public_api.h, sphinx/extension_api.rst: Documented pyqt5_get_qmetaaobject(). [5beb97f61993] <5.0-maint> * qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_decorators.cpp, qpy/QtCore/qpycore_types.cpp, sphinx/signals_slots.rst: Added the revision argument to pyqtSlot(). [be2b6cd9bd25] <5.0-maint> * qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.h, qpy/QtCore/qpycore_types.cpp, sphinx/signals_slots.rst: Added the revision argument to pyqtSignal(). [c1f360ca39a1] <5.0-maint> * qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtCore/qpycore_pyqtproperty.h, qpy/QtCore/qpycore_qmetaobjectbuilder.h, qpy/QtCore/qpycore_types.cpp, sphinx/qt_properties.rst: Implemented the revision argument to pyqtProperty(). [c8392c02c9b0] <5.0-maint> * qpy/QtQml/qpyqml_register_type.cpp: Fixed qmlRegisterUncreatableType(). [5d1a0f917f11] <5.0-maint> * qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_type.cpp: Completed the implementation of qmlRegisterType(), qmlRegisterRevision() and qmlRegisterUncreatableType(). [12800b23bc24] <5.0-maint> * Makefile, test/tests/classes/test_QQmlComponent.py: Added the start of the Qml unit tests. [e50b70a97479] <5.0-maint> * qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: Tidied up the implementation of qmlRegisterType(). 20 types can now be registered. [91d2f136b7a5] <5.0-maint> * PyQt5.msp, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: The simple test to create a Python object from QML now works. [6cdb584a8a51] <5.0-maint> 2013-07-10 Phil Thompson * Makefile, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: More work on the implementation of qmlRegisterType(). [2ed50117bb0e] <5.0-maint> * Makefile, lib/configure.py, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml.pro, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h: Added initial support (ie. it compiles) for qmlRegisterType(). [4221776fc22b] <5.0-maint> 2013-07-09 Phil Thompson * PyQt5.msp, sphinx/api_metadata.cfg: Added the QQmlExpression, QQmlListReference, QQmlProperty, QQmlPropertyMap and QQmlScriptString classes. [bfcd01be5691] <5.0-maint> * PyQt5.msp, sphinx/api_metadata.cfg: Added the QQmlComponent, QQmlContext, QQmlEngine, QQmlError, QQmlIncubator, QQmlIncubatorControl, QQmlImageProviderBase and QQmlNetworkAccessManagerFactory classes. [06ff494f83cc] <5.0-maint> * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi, lib/configure.py, sphinx/api_metadata.cfg: Added the start of the QtQml module containing the QJSEngine, QJSValue and QJSValueIterator classes. [7c4a6b081187] <5.0-maint> * PyQt5.msp: Removed the stub for QOpenGLFunctions as we still don't have an example where we can remove the dependency on PyOpenGL (because of glViewport() and glDrawArrays()). [6ccb0554b869] <5.0-maint> * examples/opengl/openglwindow.py: Updated the openglwindow.py example to use QOpenGLShaderProgram. [ddd7a0259c4a] <5.0-maint> * PyQt5.msp, qpy/QtGui/qpygui.pro, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_attribute_array.cpp, sphinx/api_metadata.cfg: Completed the implementation of QOpenGLShaderProgram. [665fb10f93e1] <5.0-maint> 2013-07-08 Phil Thompson * PyQt5.msp, lib/configure.py, qpy/QtGui/qpygui.pro, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_uniform_value_array.cpp, qpy/QtOpenGL/qpyopengl.pro, qpy/QtOpenGL/qpyopengl_api.h, qpy/QtOpenGL/qpyopengl_attribute_array.cpp, qpy/QtOpenGL/qpyopengl_uniform_value_array.cpp: Implemented more of QOpenGLShaderProgram. [b0afb72fc0ca] <5.0-maint> * PyQt5.msp, sphinx/api_metadata.cfg: Added the QOpenGLBuffer, QOpenGLFramebufferObject, QOpenGLFramebufferFormat, QOpenGLPaintDevice and QOpenGLShader classes. Added stubs for the QOpenGLFunctions and QOpenGLShaderProgram classes. [5686e52f7350] <5.0-maint> 2013-07-07 Phil Thompson * PyQt5.msp, lib/configure.py: Backed out changeset c432a87e3a48, the correct fix is to SIP. [de3d55fb4945] <5.0-maint> * PyQt5.msp, lib/configure.py: Worked around a incompatibility with QProcess in Qt v5.1. [c432a87e3a48] <5.0-maint> 2013-07-06 Phil Thompson * Makefile, lib/configure.py: Improved the error message when configure.py detects an incorrect Qt version. Clean up __pycache__ directories. [3513f56e65bf] <5.0-maint> 2013-07-01 Phil Thompson * sphinx/multiinheritance.rst: Tweaked the docs. [cffb77db7dc1] <5.0-maint> * Makefile, PyQt5.msp, sphinx/gotchas.rst, sphinx/index.rst, sphinx/multiinheritance.rst, sphinx/pyqt4_differences.rst: Enabled call_super_init. Added the cooperative multi-inheritance section to the documentation. [a0323ed8bc1d] <5.0-maint> 2013-06-30 Phil Thompson * examples/xmlpatterns/schema/schema.py: Fixed bugs in the schema.py example. [0d3ae95c947b] <5.0-maint> * PyQt5.msp, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_qobject_getattr.cpp: Moved a const_cast closer to where it is needed. [c96b00d73380] <5.0-maint> * Makefile, PyQt5.msp, lib/configure.py, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_pyqtconfigure.cpp, qpy/QtCore/qpycore_qobject_helpers.h: Changed the handling of QObject ctor keywords arguments so that it doesn't break cooperative multi-inheritance and is compatible with SIP v5. SIP v4.15 is now required. [8c442640f72e] <5.0-maint> * dbus/dbus.cpp: Fixed the names of the module init functions. [950cd70446a1] <5.0-maint> 2013-06-29 Phil Thompson * lib/configure.py: Fixed the previous fix so that the framework status is still checked. [901a31b124a3] <5.0-maint> 2013-06-28 Phil Thompson * lib/configure.py: Make sure that the --spec value passed to configure.py is always used. [fe4c612ae259] <5.0-maint> * examples/multimediawidgets/camera/camera.py, examples/multimediawidgets/camera/camera.ui, examples/multimediawidgets/camera/imagesettings.ui, examples/multimediawidgets/camera/ui_camera.py, examples/multimediawidgets/camera/ui_imagesettings.py, examples/multimediawidgets/camera/ui_videosettings.py, examples/multimediawidgets/camera/videosettings.ui, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Added the camera.py example. [e74dbc5074d0] <5.0-maint> * PyQt5.msp, sphinx/api_metadata.cfg: Removed QVideoWidgetControl. [8c268c606cc4] <5.0-maint> 2013-06-26 Phil Thompson * PyQt5.msp, sphinx/api_metadata.cfg: Completed the implementation of the QtMultimedia module. [6a522f87648d] <5.0-maint> * PyQt5.msp: Added the radio classes. [9420fcb1da43] <5.0-maint> * PyQt5.msp: Removed QMediaControl as it seems pointless without a documented way to create a QMediaService. [b02de4d09d04] <5.0-maint> * PyQt5.msp: More QtMultimedia classes. [f52207a4280a] <5.0-maint> 2013-06-25 Phil Thompson * PyQt5.msp, examples/multimedia/audiooutput.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Added the audiooutput.py example. [23e2468a55f1] <5.0-maint> * examples/multimedia/README, examples/multimedia/audiodevices/audiodevices.py, examples/multimedia/audiodevices/audiodevicesbase.ui, examples/multimedia/audiodevices/ui_audiodevicesbase.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Added the audiodevices.py example. [8918a6427814] <5.0-maint> * lib/configure.py: Make the pyuic5 wrapper executable before running qmake so that the permissions don't get stripped when installing on Linux. [b5c2fb502885] <5.0-maint> 2013-06-23 Phil Thompson * dbus/dbus.cpp, dbus/dbus.sbf, dbus/helper.h, lib/configure.py, sphinx/dbus.rst, sphinx/introduction.rst, sphinx/pyqt4_differences.rst: The dbus.mainloop.qt module is now called dbus.mainloop.pyqt5 so that it can be installed side by side with the PyQt4 equivalent. [b72659988feb] <5.0-maint> * qpy/QtCore/qpycore_pyqtboundsignal.cpp, test/tests/metaobject/test_connections.py: Fixed the lack of exception when connect() is given a bad slot. [a4985399df5e] <5.0-maint> * examples/multimediawidgets/player.py, examples/multimediawidgets/videographicsitem.py, examples/multimediawidgets/videowidget.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Added the player.py example. [67351785a13c] <5.0-maint> * PyQt5.msp: Implemented some more of the QtMutimedia classes. [3e35bd4e468a] <5.0-maint> 2013-06-22 Phil Thompson * examples/graphicsview/elasticnodes.py, examples/qtdemo/itemcircleanimation.py, examples/threads/mandelbrot.py: Removed the calls to the QWheelEvent.delta() method in the examples. [562ea33d38e0] <5.0-maint> * PyQt5.msp, sphinx/api_metadata.cfg: Completed the QtMultimediaWidgets module. [d9d42fdc6b18] <5.0-maint> * build.py, contrib/lang/Makefile, contrib/lang/lang.py, contrib/lang/lang.qrc, contrib/lang/lang/cs_cs.qm, contrib/lang/lang/cs_cs.ts, contrib/lang/lang/da_da.qm, contrib/lang/lang/da_da.ts, contrib/lang/lang/de_ch.qm, contrib/lang/lang/de_ch.ts, contrib/lang/lang/de_de.qm, contrib/lang/lang/de_de.ts, contrib/lang/lang/en_gb.qm, contrib/lang/lang/en_gb.ts, contrib/lang/lang/en_us.qm, contrib/lang/lang/en_us.ts, contrib/lang/lang/es_es.qm, contrib/lang/lang/es_es.ts, contrib/lang/lang/et_et.qm, contrib/lang/lang/et_et.ts, contrib/lang/lang/fi_fi.qm, contrib/lang/lang/fi_fi.ts, contrib/lang/lang/fr_ca.qm, contrib/lang/lang/fr_ca.ts, contrib/lang/lang/fr_fr.qm, contrib/lang/lang/fr_fr.ts, contrib/lang/lang/hu_hu.qm, contrib/lang/lang/hu_hu.ts, contrib/lang/lang/it_it.qm, contrib/lang/lang/it_it.ts, contrib/lang/lang/nl_nl.qm, contrib/lang/lang/nl_nl.ts, contrib/lang/lang/no_no.qm, contrib/lang/lang/no_no.ts, contrib/lang/lang/pl_pl.qm, contrib/lang/lang/pl_pl.ts, contrib/lang/lang/pt_pt.qm, contrib/lang/lang/pt_pt.ts, contrib/lang/lang/sv_sv.qm, contrib/lang/lang/sv_sv.ts, contrib/lang/lang/tr_tr.qm, contrib/lang/lang/tr_tr.ts, contrib/lang/mainwindow.ui, contrib/pymodeltest/LICENSE.GPL, contrib/pymodeltest/README, contrib/pymodeltest/modeltest.py, contrib/sandbox/README, contrib/sandbox/sandbox.pyw: Removed the contrib directory. [591c9a622a71] <5.0-maint> * PyQt5.msp: Added %ConvertToSubClassCode for QGraphicsVideoItem. [de85f62e8967] <5.0-maint> * examples/multimediawidgets/videowidget.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Added the videowidget.py example. [9acd16b2bdce] <5.0-maint> * examples/multimedia/README, examples/multimedia/videographicsitem.py, examples/multimediawidgets/README, examples/multimediawidgets/videographicsitem.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: The QtMultimediaWidgets examples now go in their own directory. [891bb8122a11] <5.0-maint> * examples/multimedia/videographicsitem.py: Debugged the videographicsitem.py example. [d1e778504aab] <5.0-maint> * PyQt5.msp, installers/PyQt5-Qt5-gpl.nsi, lib/configure.py, sphinx/introduction.rst: Added the QtMultimediaWidgets module (with a subset of the classes). Added some of the new Qt5 QtMultimedia classes. [6bfb31f31b0d] <5.0-maint> * examples/multimedia/README, examples/multimedia/videographicsitem.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Added the (untested) videographicsitem.py example. [1eea557f6cad] <5.0-maint> * lib/configure.py: configure.py now checks the Qt version as soon as possible. [e1cf0c849548] <5.0-maint> 2013-06-21 Phil Thompson * PyQt5.msp: Manually fixed the project file for the parse state of all ignored QtMultimedia header files. [f02eb87af35c] <5.0-maint> 2013-06-16 Phil Thompson * .hgtags: Added tag 5.0 for changeset 785762fc2868 [5d5021bfff4c] * NEWS, Qt5-TODO.txt: Released as v5.0. [785762fc2868] [5.0] * Makefile, examples/designer/plugins/plugins.py: Fixed the plugins.py example so that it doesn't have to be run from the directory containing it. [2c51ab7a3c68] * examples/qtdemo/menumanager.py: Removed the Help support from qtdemo.py because of bugs in QtSql in Qt5 causing crashes on exit. [f5b9ce401532] 2013-06-15 Phil Thompson * build.py: Fix to the build system when creating source packages. [d700a2283637] * sphinx/pyqt4_differences.rst: Fixed a short label in the docs. [ca941a71d917] * PyQt5.msp, Qt5-TODO.txt, sphinx/api_metadata.cfg, sphinx/pyqt4_differences.rst: Removed the obsolete QtOpenGL classes. [1a15fc8788a9] * build.py, sphinx/api_metadata.cfg, sphinx/introduction.rst, sphinx/pyqt4_differences.rst: Added the API metadata for all but the QtOpenGL module. [478d7f271b71] * Makefile, build.py, sphinx/api_metadata.cfg, sphinx/class_reference.rst: Updated build.py to read the API meta-data from a file. [4379f27de31d] * sphinx/class_reference.rst, sphinx/conf.py, sphinx/designer.rst, sphinx/index.rst, sphinx/introduction.rst, sphinx/pyqt4_differences.rst: Documentation updates including the skeleton structure of the class reference. [aa1ba2118845] 2013-06-14 Phil Thompson * Qt5-TODO.txt, sphinx/introduction.rst: Updated the reference guide relating to QtOpenGL. [7b37d453ec88] * PyQt5.msp, Qt5-TODO.txt, sphinx/buffer_interface.rst, sphinx/build_system.rst, sphinx/dbus.rst, sphinx/deploy_commercial.rst, sphinx/designer.rst, sphinx/extension_api.rst, sphinx/gotchas.rst, sphinx/i18n.rst, sphinx/incompatibilities.rst, sphinx/incompatible_apis.rst, sphinx/index.rst, sphinx/installation.rst, sphinx/introduction.rst, sphinx/keyword_arguments.rst, sphinx/new_style_signals_slots.rst, sphinx/old_style_signals_slots.rst, sphinx/pickle.rst, sphinx/pyqt4_differences.rst, sphinx/pyqt_qsettings.rst, sphinx/pyqt_qvariant.rst, sphinx/python_shell.rst, sphinx/python_v3.rst, sphinx/qml.rst, sphinx/qt_properties.rst, sphinx/qt_v5.rst, sphinx/resources.rst, sphinx/signals_slots.rst, sphinx/webkit.rst: Updated the reference guide. [f3e4f0cf5959] 2013-06-13 Phil Thompson * Makefile, build.py: Added build support for creating standalone documentation. [8322dc67c499] 2013-06-12 Phil Thompson * Qt5-TODO.txt, examples/designer/plugins/plugins.py, examples/qtdemo/menumanager.py: Fixed another use of QProcess.setEnvironment() in the examples. [18f7592450f7] * Qt5-TODO.txt, installers/PyQt5-Qt5-gpl.nsi: More installer fixes. [08445543af31] * examples/qtdemo/examplecontent.py, examples/qtdemo/menumanager.py: Windows and Python3 fixes for qtdemo.py. [94ea20102c8f] * lib/configure.py: Another fix for installing opengl_types.sip in the right place. [f87b6b02fd2c] * installers/PyQt5-Qt5-gpl.nsi, installers/qsci-pyqt5-config.bat, lib/configure.py: pylupdate5 and pyrcc5 now get built again. More out-of-tree build fixes. Installer fixes. [519d3934205d] * lib/configure.py, qpy/QtOpenGL/opengl_types.sip: Fixed the handling of OpenGL types with out-of-tree builds. [116f5369e841] * installers/BuildGPL.txt, lib/configure.py: Minor tweek to configure.py. [d71d7716da87] * Qt5-TODO.txt, lib/configure.py: Fixes for configure.py to handle debug builds on Windows. [86a3338117e0] * installers/PyQt5-Qt5-gpl.nsi: Updates to the installer to handle conflicts with PyQt4. [a4ae753bd3e3] 2013-06-11 Phil Thompson * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_pyqtslot.h, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_pyqtslotproxy.h: Proxied slots are now handled properly by the garbage collector. [67de01d44e88] * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Clear a benign exception that was tripping up the garbage collector. [8c527c6f681b] * Makefile, test/dbus/test_multibus.py, test/runtests.py, test/tests/classes/test_QObject.py, test/tests/classes/test_QSettings.py, test/tests/classes/test_QSignalSpy.py, test/tests/classes/test_QStringList.py, test/tests/classes/test_QVariant.py, test/tests/metaobject/test_connections.py, test/tests/metaobject/test_connections_old_style.py, test/tests/metaobject/test_connectslotsbyname.py, test/tests/metaobject/test_destroyed.py, test/tests/metaobject/test_gc_slots.py, test/tests/metaobject/test_invoke.py, test/tests/metaobject/test_pyqtproperty.py, test/tests/metaobject/test_pyqtsignal.py, test/tests/metaobject/test_pyqtsignature.py, test/tests/metaobject/test_pyqtslot.py, test/tests/metaobject/test_qvariantmap.py, test/tests/metaobject/test_sender.py, test/tests/metaobject/test_signal.py, test/tests/misc/test_pickle.py, test/tests/misc/test_repr.py, test/tests/pyuic/test_pyuic.py, test/v2_unicode.py, test/v3_unicode.py: Ported the unit tests. [17137bd344c2] 2013-06-10 Phil Thompson * qpy/QtCore/qpycore_qmetaobject_helpers.cpp: Fixed QMetaObject.connectSlotsByName(). [ef6ebf8e9f8d] * PyQt5.msp: Fixed the QVariant ctors. [3350bac153b0] * PyQt5.msp, Qt5-TODO.txt: Updated to Qt v5.0.2. [a9f027d06f8b] 2013-06-08 Phil Thompson * PyQt5.msp: QSyntaxHighlighter.setCurrentBlockUserData() now keeps a reference to the document. [0debe193744d] * PyQt5.msp, Qt5-TODO.txt: Removed all qSwap() implementations. All QDataStream << and >> operators now release the GIL. [23e3a9f5433c] * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_qpynullvariant.cpp, qpy/QtCore/qpycore_qpynullvariant.h, qpy/QtCore/qpynullvariant.sip: Implemented the new QVariant support. [c84a17f0d329] 2013-06-07 Phil Thompson * PyQt5.msp: Updated the project format to v4. [b0c3cafe79e0] 2013-06-06 Phil Thompson * PyQt5.msp, Qt5-TODO.txt: Added support for QSignalSpy. [3a69020f1620] 2013-06-03 Phil Thompson * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h: Removed the unused argument from pyqt5_qobject_sender(). [cdc78cf84e0d] * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_decorators.cpp, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_types.cpp: Removed the remaining support for pyqtSignature and __pyqtSignals__. [9d544b4c475d] * qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_pyqtproxy.cpp, qpy/QtCore/qpycore_pyqtproxy.h, qpy/QtCore/qpycore_qobject_getattr.cpp: Removed the old PyQtProxy implementation. [d1543cb6f559] 2013-06-02 Phil Thompson * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_sip_helpers.cpp, qpy/QtCore/qpycore_sip_helpers.h: Removed the legacy SIP helpers. [036f09c3b943] * Makefile, examples/designer/plugins/widgets/bubbleswidget.py, examples/designer/plugins/widgets/helloglwidget.py, examples/graphicsview/dragdroprobot/dragdroprobot.py, examples/graphicsview/elasticnodes.py, examples/graphicsview/padnavigator/padnavigator.py, examples/itemviews/spreadsheet/spreadsheet.py, examples/opengl/hellogl.py, examples/opengl/overpainting.py, examples/widgets/tetrix.py, examples/xmlpatterns/schema/schema.py: Fixed some use of deprecated calls in the examples. [f860e211c790] * Makefile, Qt5-TODO.txt, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_decorators.cpp, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_pyqtslot.h, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_pyqtslotproxy.h, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qpycore_types.h: Refactored the slot support so that doesn't used the support from SIP and only supports what can happen with new-style connections. [1579721f5e05] 2013-06-01 Phil Thompson * qpy/QtCore/qpycore_init.cpp: Temporarily disabled parts of the API that were used by the QtDeclarative module. [7af4bfe5aa42] * PyQt5.msp, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_misc.cpp, qpy/QtCore/qpycore_misc.h, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_shared.h: Added pyqt5_from_argv_list() and pyqt5_update_argv_list() to the public API. [da24f909db1a] * PyQt5.msp, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_qvariant_value.cpp, qpy/QtCore/qpycore_shared.h, qpy/QtDBus/qpydbuspendingreply.cpp, qpy/QtDBus/qpydbusreply.cpp: Added pyqt5_from_qvariant_by_type() to the public API. [2dd262e0cd5c] * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qobject_helpers.h, qpy/QtDBus/qpydbus_chimera_helpers.cpp, qpy/QtDBus/qpydbus_chimera_helpers.h, qpy/QtDBus/qpydbus_post_init.cpp: Added pyqt5_qobject_sender() and pyqt5_register_from_qvariant_convertor() to the public API. [66f421a3b6e7] * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h: Changed the prefix of public API functions from qtcore_api_ to pyqt5_. [e32d69b5cc32] * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Fixed a bug in the handling of bound signals. [3cc1a7558a51] * qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_pyqtslotproxy.h: Added the missing slot proxy implementation to the repo. [820b5f9d9b47] * PyQt5.msp, Qt5-TODO.txt: Deprecated SIP features are no longer used anywhere. [7aa4515516a4] * PyQt5.msp, Qt5-TODO.txt: Removed the use of deprecated SIP feature from all QtWidgets dialogs. [cf1c268f04cc] 2013-05-31 Phil Thompson * PyQt5.msp: The QtPrintSupport module no longer uses deprecated SIP features. [200f23469b4e] * Makefile, PyQt5.msp, examples/dbus/remotecontrolledcar/controller/ui_controller.py, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_shared.h: The QtDBus module no longer uses deprecated SIP features. [d8fb2e91a60b] * pyuic/uic/properties.py: Fixed pyuic5's handling of margins. [dd808c1bcced] * Makefile, PyQt5.msp: The QtNetwork module no longer uses deprecated SIP features. [8b15f81ccc85] * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_shared.h: The QtCore modules no longer uses the deprecated SIP features. [631505f300c6] * Makefile, PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtboundsignal.h, qpy/QtCore/qpycore_pyqtconfigure.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_shared.h: qtimer.sip no longer uses the deprecated SIP support. Added QObject.disconnect(). [bab5304e0ff1] 2013-05-30 Phil Thompson * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qobject_helpers.h: Removed connect(), disconnect() and emit() from QObject. Removed SIGNAL() and SLOT(). QObject.receivers() now takes a signal argument rather than the output of SIGNAL(). Added the infrastructure for the public API. [12dc206d7ff6] 2013-05-28 Phil Thompson * Qt5-TODO.txt, examples/qtdemo/colors.py, examples/qtdemo/mainwindow.py: qtdemo.py now only uses software rendering. [29ad9b391d27] * examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Added the openglwindow.py example to qtdemo.py. [b5dd1edaeef4] * examples/opengl/openglwindow.py: Added the openglwindow.py example. [c40a6f2ed560] * PyQt5.msp: Added the missing %PostInitialisationCode to the QtGui module. [61727b76007a] * PyQt5.msp, lib/configure.py: Added QOpenGLContext and QOpenGLContextGroup to QtGui. [50c926bd4d3f] 2013-05-27 Phil Thompson * PyQt5.msp, Qt5-TODO.txt: Added QTemporaryDir to QtCore. [b5eed4b461b8] * PyQt5.msp: Updated QMutex. [7af8195ab193] * PyQt5.msp: Added QMimeDatabase and QMimeType to QtCore. [32a91aa8c689] * PyQt5.msp, lib/SubclassCode/QtCore.versions, qpy/QtCore/qwineventnotifier.sip: Fixed the sub-class convertor code for QWinEventNotifier. [1d9649254821] * lib/SubclassCode/mksccode.py: Fixed mksccode.py to handle optional classes whose super-class is QObject. [fc5f5053c426] * PyQt5.msp: Updated findChild() and findChildren(). [af265098377b] 2013-05-26 Phil Thompson * PyQt5.msp: Added QRegularExpression, QRegularExpressionMatch and QRegularExpressionMatchIterator to QtCore. [744a790e2c26] * PyQt5.msp: Added QEventLoopLocker to QtCore. [fade28309590] * PyQt5.msp, Qt5-TODO.txt: Added QBackingStore, QInputMethod, QPdfWriter and QStyleHints to QtGui. [408493dfd7db] * PyQt5.msp: Added QScroller and QScrollerProperties to QtWidgets. [fa49e60c4e92] * PyQt5.msp, Qt5-TODO.txt, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_qmessagelogger.cpp: qDebug() etc. now use the correct Python context. [00bf19f063d2] * PyQt5.msp: Split qlogging.sip out from qglobal.sip. Implemented qInstalleMessageHandler, QMessageLogContext and QMessageLogger. [29629f01a51f] 2013-05-25 Phil Thompson * PyQt5.msp: Broke the qsysinfo.h contents out from qglobal.h. [daa956d2a33d] 2013-05-21 Phil Thompson * PyQt5.msp, Qt5-TODO.txt: The QDataStream methods that handle qint8 and quint8 types now interpret them as numeric values rather than single character strings. [c9b76fc250ce] * PyQt5.msp, Qt5-TODO.txt: Added support for QTouchSequence. [cbe60f53ab07] * PyQt5.msp: Updated QtTest to support testing QWindows. [5383cc77757c] * PyQt5.msp, Qt5-TODO.txt: Updated QtGui for all API elements that use QWindow. [d9a9af037a33] 2013-05-20 Phil Thompson * PyQt5.msp, Qt5-TODO.txt: Added support for the QSurface, QSurfaceFormat and QWindow classes. [4c23a9d62c5a] * PyQt5.msp, Qt5-TODO.txt, examples/qtdemo/examplecontent.py, examples/qtdemo/menucontent.py, examples/qtdemo/menumanager.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml, examples/xml/README, examples/xml/dombookmarks/dombookmarks.py, examples/xml/dombookmarks/frank.xbel, examples/xml/dombookmarks/jennifer.xbel, examples/xml/saxbookmarks/frank.xbel, examples/xml/saxbookmarks/jennifer.xbel, examples/xml/saxbookmarks/saxbookmarks.py, lib/configure.py: Removed the QtXml module. [b83926ccd7cb] * PyQt5.msp, Qt5-TODO.txt, examples/declarative/minehunt/MinehuntCore/Explosion.qml, examples/declarative/minehunt/MinehuntCore/Tile.qml, examples/declarative/minehunt/MinehuntCore/pics/No-Ones- Laughing-3.jpg, examples/declarative/minehunt/MinehuntCore/pics/back.png, examples/declarative/minehunt/MinehuntCore/pics/bomb-color.png, examples/declarative/minehunt/MinehuntCore/pics/bomb.png, examples/declarative/minehunt/MinehuntCore/pics/face-sad.png, examples/declarative/minehunt/MinehuntCore/pics/face-smile-big.png, examples/declarative/minehunt/MinehuntCore/pics/face-smile.png, examples/declarative/minehunt/MinehuntCore/pics/flag-color.png, examples/declarative/minehunt/MinehuntCore/pics/flag.png, examples/declarative/minehunt/MinehuntCore/pics/front.png, examples/declarative/minehunt/MinehuntCore/pics/quit.png, examples/declarative/minehunt/MinehuntCore/pics/star.png, examples/declarative/minehunt/MinehuntCore/qmldir, examples/declarative/minehunt/minehunt.py, examples/declarative/minehunt/minehunt.qml, examples/declarative/modelviews/objectlistmodel/objectlistmodel.py, examples/declarative/modelviews/objectlistmodel/objectlistmodel.qrc, examples/declarative/modelviews/objectlistmodel/objectlistmodel_rc.p y, examples/declarative/modelviews/objectlistmodel/view.qml, examples/declarative/samegame/SamegameCore/BoomBlock.qml, examples/declarative/samegame/SamegameCore/Button.qml, examples/declarative/samegame/SamegameCore/Dialog.qml, examples/declarative/samegame/SamegameCore/pics/background.png, examples/declarative/samegame/SamegameCore/pics/blueStar.png, examples/declarative/samegame/SamegameCore/pics/blueStone.png, examples/declarative/samegame/SamegameCore/pics/greenStar.png, examples/declarative/samegame/SamegameCore/pics/greenStone.png, examples/declarative/samegame/SamegameCore/pics/redStar.png, examples/declarative/samegame/SamegameCore/pics/redStone.png, examples/declarative/samegame/SamegameCore/pics/star.png, examples/declarative/samegame/SamegameCore/pics/yellowStone.png, examples/declarative/samegame/SamegameCore/qmldir, examples/declarative/samegame/SamegameCore/samegame.js, examples/declarative/samegame/highscores/README, examples/declarative/samegame/highscores/score_data.xml, examples/declarative/samegame/highscores/score_style.xsl, examples/declarative/samegame/highscores/scores.php, examples/declarative/samegame/samegame.qml, examples/declarative/toys/README, examples/declarative/toys/clocks/clocks.qml, examples/declarative/toys/clocks/content/Clock.qml, examples/declarative/toys/clocks/content/QuitButton.qml, examples/declarative/toys/clocks/content/background.png, examples/declarative/toys/clocks/content/center.png, examples/declarative/toys/clocks/content/clock-night.png, examples/declarative/toys/clocks/content/clock.png, examples/declarative/toys/clocks/content/hour.png, examples/declarative/toys/clocks/content/minute.png, examples/declarative/toys/clocks/content/quit.png, examples/declarative/toys/clocks/content/second.png, examples/declarative/toys/corkboards/Day.qml, examples/declarative/toys/corkboards/cork.jpg, examples/declarative/toys/corkboards/corkboards.qml, examples/declarative/toys/corkboards/note-yellow.png, examples/declarative/toys/corkboards/tack.png, examples/declarative/toys/dynamicscene/Button.qml, examples/declarative/toys/dynamicscene/GenericSceneItem.qml, examples/declarative/toys/dynamicscene/PaletteItem.qml, examples/declarative/toys/dynamicscene/PerspectiveItem.qml, examples/declarative/toys/dynamicscene/Sun.qml, examples/declarative/toys/dynamicscene/dynamicscene.qml, examples/declarative/toys/dynamicscene/images/face-smile.png, examples/declarative/toys/dynamicscene/images/moon.png, examples/declarative/toys/dynamicscene/images/rabbit_brown.png, examples/declarative/toys/dynamicscene/images/rabbit_bw.png, examples/declarative/toys/dynamicscene/images/star.png, examples/declarative/toys/dynamicscene/images/sun.png, examples/declarative/toys/dynamicscene/images/tree_s.png, examples/declarative/toys/dynamicscene/itemCreation.js, examples/declarative/toys/tic-tac-toe/content/Button.qml, examples/declarative/toys/tic-tac-toe/content/TicTac.qml, examples/declarative/toys/tic-tac-toe/content/pics/board.png, examples/declarative/toys/tic-tac-toe/content/pics/o.png, examples/declarative/toys/tic-tac-toe/content/pics/x.png, examples/declarative/toys/tic-tac-toe/content/tic-tac-toe.js, examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml, examples/declarative/toys/tvtennis/tvtennis.qml, examples/declarative/ui-components/README, examples/declarative/ui- components/dialcontrol/content/Dial.qml, examples/declarative/ui- components/dialcontrol/content/QuitButton.qml, examples/declarative /ui-components/dialcontrol/content/background.png, examples/declarative/ui-components/dialcontrol/content/needle.png, examples/declarative/ui- components/dialcontrol/content/needle_shadow.png, examples/declarative/ui-components/dialcontrol/content/overlay.png, examples/declarative/ui-components/dialcontrol/content/quit.png, examples/declarative/ui-components/dialcontrol/dialcontrol.qml, examples/declarative/ui-components/flipable/content/5_heart.png, examples/declarative/ui-components/flipable/content/9_club.png, examples/declarative/ui-components/flipable/content/Card.qml, examples/declarative/ui-components/flipable/content/back.png, examples/declarative/ui-components/flipable/flipable.qml, examples/declarative/ui- components/progressbar/content/ProgressBar.qml, examples/declarative /ui-components/progressbar/content/background.png, examples/declarative/ui-components/progressbar/main.qml, examples/declarative/ui-components/scrollbar/ScrollBar.qml, examples/declarative/ui-components/scrollbar/main.qml, examples/declarative/ui-components/scrollbar/niagara_falls.jpg, examples/declarative/ui-components/searchbox/SearchBox.qml, examples/declarative/ui-components/searchbox/images/clear.png, examples/declarative/ui-components/searchbox/images/lineedit-bg- focus.png, examples/declarative/ui-components/searchbox/images /lineedit-bg.png, examples/declarative/ui- components/searchbox/main.qml, examples/declarative/ui- components/slideswitch/content/Switch.qml, examples/declarative/ui- components/slideswitch/content/background.svg, examples/declarative /ui-components/slideswitch/content/knob.svg, examples/declarative /ui-components/slideswitch/slideswitch.qml, examples/declarative/ui- components/spinner/content/Spinner.qml, examples/declarative/ui- components/spinner/content/spinner-bg.png, examples/declarative/ui- components/spinner/content/spinner-select.png, examples/declarative /ui-components/spinner/main.qml, examples/declarative/ui- components/tabwidget/TabWidget.qml, examples/declarative/ui- components/tabwidget/main.qml, examples/declarative/ui- components/tabwidget/tab.png, examples/qtdemo/menumanager.py, examples/qtdemo/qmlShell.qml, examples/qtdemo/qtdemo.qrc, examples/qtdemo/qtdemo_rc.py, lib/configure.py, qpy/QtDeclarative/qpydeclarative.pro, qpy/QtDeclarative/qpydeclarative_api.h, qpy/QtDeclarative/qpydeclarative_chimera_helpers.cpp, qpy/QtDeclarative/qpydeclarative_chimera_helpers.h, qpy/QtDeclarative/qpydeclarative_listwrapper.cpp, qpy/QtDeclarative/qpydeclarative_listwrapper.h, qpy/QtDeclarative/qpydeclarative_post_init.cpp, qpy/QtDeclarative/qpydeclarativelistproperty.cpp, qpy/QtDeclarative/qpydeclarativelistproperty.h, qpy/QtDeclarative/qpydeclarativelistproperty.sip, qpy/QtDeclarative/qpydeclarativepropertyvaluesource.h, qpy/QtDeclarative/qpydeclarativepropertyvaluesource.sip: Removed QtDeclarative. [fa3ac0a64e09] * PyQt5.msp, Qt5-TODO.txt, examples/script/README, examples/script/helloscript.py, lib/configure.py: Removed the QtScript and QtScriptTools modules. [8e5764df83df] * pylupdate/translator.h: Fixed the compiler warning messages from pylupdate. [ee49c8ae893f] * PyQt5.msp, Qt5-TODO.txt: Removed support for QMatrix. [29512282f3c3] 2013-05-18 Phil Thompson * PyQt5.msp, Qt5-TODO.txt: Removed remaining parts of the API that are part of the compatibility layer. [82a5ee70a4f3] * PyQt5.msp, Qt5-TODO.txt: Removed support for deprecated (as opposed to obsolete) parts of the API. [4e8c4499a9ee] * PyQt5.msp, Qt5-TODO.txt: Fixed QPixmapCache.find(). [a320fdbc45b9] * PyQt5.msp, Qt5-TODO.txt, examples/mainwindows/application/application.py, examples/mainwindows/dockwidgets/dockwidgets.py, examples/mainwindows/mdi/mdi.py, examples/qtdemo/demoitem.py, examples/qtdemo/demoscene.py, examples/qtdemo/demotextitem.py, examples/qtdemo/headingitem.py, examples/qtdemo/imageitem.py, examples/qtdemo/letteritem.py, examples/qtdemo/mainwindow.py, examples/qtdemo/scanitem.py, examples/qtdemo/textbutton.py, examples/webkit/fancybrowser/fancybrowser.py, examples/webkit/formextractor/formextractor.py: Removed all parts of the API marked as obsolete. Updated qtdemo.py not to use any obsolete calls. [2d237a7da2f4] 2013-05-17 Phil Thompson * PyQt5.msp: Removed the deprecated QGraphicsItemAnimation. [84eb34c80f46] * examples/qtdemo/colors.py, examples/qtdemo/demoitemanimation.py, examples/qtdemo/menumanager.py, examples/qtdemo/score.py, examples/qtdemo/textbutton.py: qtdemo.py no longer uses the deprecated QGraphicsItemAnimation. [7149eefd1fe8] * examples/qtdemo/demoitem.py, examples/qtdemo/textbutton.py: DemoItem is now a QGraphicsObject. [f5a12cb364ad] * examples/qtdemo/demoitem.py, examples/qtdemo/demoitemanimation.py, examples/qtdemo/examplecontent.py, examples/qtdemo/itemcircleanimation.py, examples/qtdemo/menucontent.py, examples/qtdemo/score.py, examples/qtdemo/textbutton.py: Refactored DemoItem in preparation for subclassing from QGraphicsObject. [12ef1f22debf] * examples/qtdemo/demoitem.py, examples/qtdemo/demoitemanimation.py, examples/qtdemo/itemcircleanimation.py, examples/qtdemo/menumanager.py, examples/qtdemo/score.py, examples/qtdemo/textbutton.py: Refactored DemoItemAnimation in preparation for removing the dependency on QGraphicsItemAnimation. [857a57eb41a0] 2013-05-16 Phil Thompson * examples/qtdemo/colors.py, examples/qtdemo/demoitem.py, examples/qtdemo/demotextitem.py, examples/qtdemo/dockitem.py, examples/qtdemo/examplecontent.py, examples/qtdemo/headingitem.py, examples/qtdemo/imageitem.py, examples/qtdemo/itemcircleanimation.py, examples/qtdemo/letteritem.py, examples/qtdemo/mainwindow.py, examples/qtdemo/menucontent.py, examples/qtdemo/menumanager.py, examples/qtdemo/scanitem.py, examples/qtdemo/textbutton.py: Removed the obsolete passing around of the scene. [49dc741ba538] * examples/embedded/lightmaps.py, examples/network/lightmaps.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/xml/examples.xml: Moved the lightmaps.py example to the network category. [997d9560dea5] * examples/qtdemo/mainwindow.py, examples/qtdemo/menumanager.py: Removed some PyQt4 specific hacks from qtdemo.py. [05abb8647b3b] * Makefile, PyQt5.msp, Qt5-TODO.txt: Removed the code that tracked certain widgets in an attempt to delete things in the right order when the QApplication instance was being destroyed. [9e3abbcd7b7e] * examples/qtdemo/colors.py, examples/qtdemo/itemcircleanimation.py, examples/qtdemo/mainwindow.py, examples/qtdemo/menumanager.py: qtdemo.py basically works. [9333a816276f] * Qt5-TODO.txt: Updated the TODO list. [c1673e305a89] * examples/declarative/toys/README, examples/declarative/ui- components/README, examples/designer/plugins/python/multipagewidgetplugin.py, examples/tutorials/addressbook/README: Removed the last remaining references to PyQt4 in the examples. [5ffe74c1d33b] * examples/qtdemo/colors.py, examples/qtdemo/demoitem.py, examples/qtdemo/demoitemanimation.py, examples/qtdemo/demoscene.py, examples/qtdemo/demotextitem.py, examples/qtdemo/dockitem.py, examples/qtdemo/examplecontent.py, examples/qtdemo/guide.py, examples/qtdemo/guidecircle.py, examples/qtdemo/guideline.py, examples/qtdemo/headingitem.py, examples/qtdemo/imageitem.py, examples/qtdemo/itemcircleanimation.py, examples/qtdemo/letteritem.py, examples/qtdemo/mainwindow.py, examples/qtdemo/menucontent.py, examples/qtdemo/menumanager.py, examples/qtdemo/qtdemo.py, examples/qtdemo/qtdemo_rc.py, examples/qtdemo/qtdemo_rc2.py, examples/qtdemo/qtdemo_rc3.py, examples/qtdemo/scanitem.py, examples/qtdemo/score.py, examples/qtdemo/textbutton.py: Initial update of qtdemo.py. [4d70ea6fed11] 2013-05-15 Phil Thompson * examples/demos/README, examples/demos/qtdemo/colors.py, examples/demos/qtdemo/demoitem.py, examples/demos/qtdemo/demoitemanimation.py, examples/demos/qtdemo/demoscene.py, examples/demos/qtdemo/demotextitem.py, examples/demos/qtdemo/dockitem.py, examples/demos/qtdemo/examplecontent.py, examples/demos/qtdemo/guide.py, examples/demos/qtdemo/guidecircle.py, examples/demos/qtdemo/guideline.py, examples/demos/qtdemo/headingitem.py, examples/demos/qtdemo/imageitem.py, examples/demos/qtdemo/images/demobg.png, examples/demos/qtdemo/images/qtlogo_small.png, examples/demos/qtdemo/images/trolltech-logo.png, examples/demos/qtdemo/itemcircleanimation.py, examples/demos/qtdemo/letteritem.py, examples/demos/qtdemo/mainwindow.py, examples/demos/qtdemo/menucontent.py, examples/demos/qtdemo/menumanager.py, examples/demos/qtdemo/qmlShell.qml, examples/demos/qtdemo/qtdemo.py, examples/demos/qtdemo/qtdemo.qrc, examples/demos/qtdemo/qtdemo_rc2.py, examples/demos/qtdemo/qtdemo_rc3.py, examples/demos/qtdemo/scanitem.py, examples/demos/qtdemo/score.py, examples/demos/qtdemo/textbutton.py, examples/demos/qtdemo/xml/examples.xml, examples/qtdemo/colors.py, examples/qtdemo/demoitem.py, examples/qtdemo/demoitemanimation.py, examples/qtdemo/demoscene.py, examples/qtdemo/demotextitem.py, examples/qtdemo/dockitem.py, examples/qtdemo/examplecontent.py, examples/qtdemo/guide.py, examples/qtdemo/guidecircle.py, examples/qtdemo/guideline.py, examples/qtdemo/headingitem.py, examples/qtdemo/imageitem.py, examples/qtdemo/images/demobg.png, examples/qtdemo/images/qtlogo_small.png, examples/qtdemo/images /trolltech-logo.png, examples/qtdemo/itemcircleanimation.py, examples/qtdemo/letteritem.py, examples/qtdemo/mainwindow.py, examples/qtdemo/menucontent.py, examples/qtdemo/menumanager.py, examples/qtdemo/qmlShell.qml, examples/qtdemo/qtdemo.py, examples/qtdemo/qtdemo.qrc, examples/qtdemo/qtdemo_rc2.py, examples/qtdemo/qtdemo_rc3.py, examples/qtdemo/scanitem.py, examples/qtdemo/score.py, examples/qtdemo/textbutton.py, examples/qtdemo/xml/examples.xml, installers/PyQt5-Qt5-gpl.nsi: Moved the qtdemo demo so there is no longer a demos directory. [03b9dced2481] * examples/demos/qtdemo/xml/examples.xml, examples/demos/textedit/example.html, examples/demos/textedit/images/logo.png, examples/demos/textedit/images/logo32.png, examples/demos/textedit/images/mac/editcopy.png, examples/demos/textedit/images/mac/editcut.png, examples/demos/textedit/images/mac/editpaste.png, examples/demos/textedit/images/mac/editredo.png, examples/demos/textedit/images/mac/editundo.png, examples/demos/textedit/images/mac/exportpdf.png, examples/demos/textedit/images/mac/filenew.png, examples/demos/textedit/images/mac/fileopen.png, examples/demos/textedit/images/mac/fileprint.png, examples/demos/textedit/images/mac/filesave.png, examples/demos/textedit/images/mac/textbold.png, examples/demos/textedit/images/mac/textcenter.png, examples/demos/textedit/images/mac/textitalic.png, examples/demos/textedit/images/mac/textjustify.png, examples/demos/textedit/images/mac/textleft.png, examples/demos/textedit/images/mac/textright.png, examples/demos/textedit/images/mac/textunder.png, examples/demos/textedit/images/mac/zoomin.png, examples/demos/textedit/images/mac/zoomout.png, examples/demos/textedit/images/win/editcopy.png, examples/demos/textedit/images/win/editcut.png, examples/demos/textedit/images/win/editpaste.png, examples/demos/textedit/images/win/editredo.png, examples/demos/textedit/images/win/editundo.png, examples/demos/textedit/images/win/exportpdf.png, examples/demos/textedit/images/win/filenew.png, examples/demos/textedit/images/win/fileopen.png, examples/demos/textedit/images/win/fileprint.png, examples/demos/textedit/images/win/filesave.png, examples/demos/textedit/images/win/textbold.png, examples/demos/textedit/images/win/textcenter.png, examples/demos/textedit/images/win/textitalic.png, examples/demos/textedit/images/win/textjustify.png, examples/demos/textedit/images/win/textleft.png, examples/demos/textedit/images/win/textright.png, examples/demos/textedit/images/win/textunder.png, examples/demos/textedit/images/win/zoomin.png, examples/demos/textedit/images/win/zoomout.png, examples/demos/textedit/textedit.py, examples/demos/textedit/textedit.qrc, examples/demos/textedit/textedit_rc2.py, examples/demos/textedit/textedit_rc3.py, examples/richtext/textedit/example.html, examples/richtext/textedit/images/logo.png, examples/richtext/textedit/images/logo32.png, examples/richtext/textedit/images/mac/editcopy.png, examples/richtext/textedit/images/mac/editcut.png, examples/richtext/textedit/images/mac/editpaste.png, examples/richtext/textedit/images/mac/editredo.png, examples/richtext/textedit/images/mac/editundo.png, examples/richtext/textedit/images/mac/exportpdf.png, examples/richtext/textedit/images/mac/filenew.png, examples/richtext/textedit/images/mac/fileopen.png, examples/richtext/textedit/images/mac/fileprint.png, examples/richtext/textedit/images/mac/filesave.png, examples/richtext/textedit/images/mac/textbold.png, examples/richtext/textedit/images/mac/textcenter.png, examples/richtext/textedit/images/mac/textitalic.png, examples/richtext/textedit/images/mac/textjustify.png, examples/richtext/textedit/images/mac/textleft.png, examples/richtext/textedit/images/mac/textright.png, examples/richtext/textedit/images/mac/textunder.png, examples/richtext/textedit/images/mac/zoomin.png, examples/richtext/textedit/images/mac/zoomout.png, examples/richtext/textedit/images/win/editcopy.png, examples/richtext/textedit/images/win/editcut.png, examples/richtext/textedit/images/win/editpaste.png, examples/richtext/textedit/images/win/editredo.png, examples/richtext/textedit/images/win/editundo.png, examples/richtext/textedit/images/win/exportpdf.png, examples/richtext/textedit/images/win/filenew.png, examples/richtext/textedit/images/win/fileopen.png, examples/richtext/textedit/images/win/fileprint.png, examples/richtext/textedit/images/win/filesave.png, examples/richtext/textedit/images/win/textbold.png, examples/richtext/textedit/images/win/textcenter.png, examples/richtext/textedit/images/win/textitalic.png, examples/richtext/textedit/images/win/textjustify.png, examples/richtext/textedit/images/win/textleft.png, examples/richtext/textedit/images/win/textright.png, examples/richtext/textedit/images/win/textunder.png, examples/richtext/textedit/images/win/zoomin.png, examples/richtext/textedit/images/win/zoomout.png, examples/richtext/textedit/textedit.py, examples/richtext/textedit/textedit.qrc, examples/richtext/textedit/textedit_rc.py: Updated the richtext.py demo. [ec5054cef278] * examples/demos/qtdemo/xml/examples.xml, examples/demos/spreadsheet/images/interview.png, examples/demos/spreadsheet/printview.py, examples/demos/spreadsheet/spreadsheet.py, examples/demos/spreadsheet/spreadsheet.qrc, examples/demos/spreadsheet/spreadsheet_rc2.py, examples/demos/spreadsheet/spreadsheet_rc3.py, examples/demos/spreadsheet/spreadsheetdelegate.py, examples/demos/spreadsheet/spreadsheetitem.py, examples/demos/spreadsheet/util.py, examples/itemviews/spreadsheet/images/interview.png, examples/itemviews/spreadsheet/printview.py, examples/itemviews/spreadsheet/spreadsheet.py, examples/itemviews/spreadsheet/spreadsheet.qrc, examples/itemviews/spreadsheet/spreadsheet_rc.py, examples/itemviews/spreadsheet/spreadsheetdelegate.py, examples/itemviews/spreadsheet/spreadsheetitem.py, examples/itemviews/spreadsheet/util.py: Updated the spreadsheet.py example. [c2f9d4c351ba] * examples/demos/embedded/lightmaps.py, examples/embedded/lightmaps.py: Moved the lightmaps.py demo. [9e961be64807] * examples/declarative/minehunt/MinehuntCore/Explosion.qml, examples/declarative/minehunt/MinehuntCore/Tile.qml, examples/declarative/minehunt/MinehuntCore/pics/No-Ones- Laughing-3.jpg, examples/declarative/minehunt/MinehuntCore/pics/back.png, examples/declarative/minehunt/MinehuntCore/pics/bomb-color.png, examples/declarative/minehunt/MinehuntCore/pics/bomb.png, examples/declarative/minehunt/MinehuntCore/pics/face-sad.png, examples/declarative/minehunt/MinehuntCore/pics/face-smile-big.png, examples/declarative/minehunt/MinehuntCore/pics/face-smile.png, examples/declarative/minehunt/MinehuntCore/pics/flag-color.png, examples/declarative/minehunt/MinehuntCore/pics/flag.png, examples/declarative/minehunt/MinehuntCore/pics/front.png, examples/declarative/minehunt/MinehuntCore/pics/quit.png, examples/declarative/minehunt/MinehuntCore/pics/star.png, examples/declarative/minehunt/MinehuntCore/qmldir, examples/declarative/minehunt/minehunt.py, examples/declarative/minehunt/minehunt.qml, examples/declarative/samegame/SamegameCore/BoomBlock.qml, examples/declarative/samegame/SamegameCore/Button.qml, examples/declarative/samegame/SamegameCore/Dialog.qml, examples/declarative/samegame/SamegameCore/pics/background.png, examples/declarative/samegame/SamegameCore/pics/blueStar.png, examples/declarative/samegame/SamegameCore/pics/blueStone.png, examples/declarative/samegame/SamegameCore/pics/greenStar.png, examples/declarative/samegame/SamegameCore/pics/greenStone.png, examples/declarative/samegame/SamegameCore/pics/redStar.png, examples/declarative/samegame/SamegameCore/pics/redStone.png, examples/declarative/samegame/SamegameCore/pics/star.png, examples/declarative/samegame/SamegameCore/pics/yellowStone.png, examples/declarative/samegame/SamegameCore/qmldir, examples/declarative/samegame/SamegameCore/samegame.js, examples/declarative/samegame/highscores/README, examples/declarative/samegame/highscores/score_data.xml, examples/declarative/samegame/highscores/score_style.xsl, examples/declarative/samegame/highscores/scores.php, examples/declarative/samegame/samegame.qml, examples/demos/declarative/minehunt/MinehuntCore/Explosion.qml, examples/demos/declarative/minehunt/MinehuntCore/Tile.qml, examples/demos/declarative/minehunt/MinehuntCore/pics/No-Ones- Laughing-3.jpg, examples/demos/declarative/minehunt/MinehuntCore/pics/back.png, examples/demos/declarative/minehunt/MinehuntCore/pics/bomb- color.png, examples/demos/declarative/minehunt/MinehuntCore/pics/bomb.png, examples/demos/declarative/minehunt/MinehuntCore/pics/face-sad.png, examples/demos/declarative/minehunt/MinehuntCore/pics/face-smile- big.png, examples/demos/declarative/minehunt/MinehuntCore/pics/face- smile.png, examples/demos/declarative/minehunt/MinehuntCore/pics /flag-color.png, examples/demos/declarative/minehunt/MinehuntCore/pics/flag.png, examples/demos/declarative/minehunt/MinehuntCore/pics/front.png, examples/demos/declarative/minehunt/MinehuntCore/pics/quit.png, examples/demos/declarative/minehunt/MinehuntCore/pics/star.png, examples/demos/declarative/minehunt/MinehuntCore/qmldir, examples/demos/declarative/minehunt/minehunt.py, examples/demos/declarative/minehunt/minehunt.qml, examples/demos/declarative/samegame/SamegameCore/BoomBlock.qml, examples/demos/declarative/samegame/SamegameCore/Button.qml, examples/demos/declarative/samegame/SamegameCore/Dialog.qml, example s/demos/declarative/samegame/SamegameCore/pics/background.png, examples/demos/declarative/samegame/SamegameCore/pics/blueStar.png, examples/demos/declarative/samegame/SamegameCore/pics/blueStone.png, examples/demos/declarative/samegame/SamegameCore/pics/greenStar.png, examples/demos/declarative/samegame/SamegameCore/pics/greenStone.png , examples/demos/declarative/samegame/SamegameCore/pics/redStar.png, examples/demos/declarative/samegame/SamegameCore/pics/redStone.png, examples/demos/declarative/samegame/SamegameCore/pics/star.png, exam ples/demos/declarative/samegame/SamegameCore/pics/yellowStone.png, examples/demos/declarative/samegame/SamegameCore/qmldir, examples/demos/declarative/samegame/SamegameCore/samegame.js, examples/demos/declarative/samegame/highscores/README, examples/demos/declarative/samegame/highscores/score_data.xml, examples/demos/declarative/samegame/highscores/score_style.xsl, examples/demos/declarative/samegame/highscores/scores.php, examples/demos/declarative/samegame/samegame.qml, examples/demos/qtdemo/xml/examples.xml: Moved the declarative demos to the declarative examples. [de4d2ee69036] * examples/demos/embeddeddialogs/No-Ones-Laughing-3.jpg, examples/demos/embeddeddialogs/embeddeddialog.py, examples/demos/embeddeddialogs/embeddeddialog.ui, examples/demos/embeddeddialogs/embeddeddialogs.py, examples/demos/embeddeddialogs/embeddeddialogs.qrc, examples/demos/embeddeddialogs/embeddeddialogs_rc.py, examples/demos/qtdemo/xml/examples.xml, examples/graphicsview/embeddeddialogs/No-Ones-Laughing-3.jpg, examples/graphicsview/embeddeddialogs/embeddeddialog.py, examples/graphicsview/embeddeddialogs/embeddeddialog.ui, examples/graphicsview/embeddeddialogs/embeddeddialogs.py, examples/graphicsview/embeddeddialogs/embeddeddialogs.qrc, examples/graphicsview/embeddeddialogs/embeddeddialogs_rc.py: Moved the embeddeddialogs demo to the graphicsview examples. [f4df98190d50] * examples/demos/embeddeddialogs/embeddeddialog.py, examples/demos/embeddeddialogs/embeddeddialogs.py, examples/demos/embeddeddialogs/embeddeddialogs_rc.py, examples/demos/embeddeddialogs/embeddeddialogs_rc2.py, examples/demos/embeddeddialogs/embeddeddialogs_rc3.py: Updated the embeddeddialogs.py demo. [30580c7f89b8] * examples/demos/embedded/lightmaps.py: Updated the lightmaps.py example. [0369ce3c4e98] * PyQt5.msp: Added support for QStandardPaths. [aaef91f631de] * examples/demos/declarative/minehunt/minehunt.py: Updated the minehunt.py example. [8d430da208a7] * examples/xmlpatterns/schema/schema.py, examples/xmlpatterns/schema/schema_rc.py, examples/xmlpatterns/schema/schema_rc2.py, examples/xmlpatterns/schema/schema_rc3.py, examples/xmlpatterns/schema/ui_schema.py: Updated the xmlpatterns example. [609c81ebfc0c] * examples/xml/dombookmarks/dombookmarks.py, examples/xml/saxbookmarks/saxbookmarks.py: Updated the xml examples. [d81ecf65893f] * examples/widgets/analogclock.py, examples/widgets/calculator.py, examples/widgets/calendarwidget.py, examples/widgets/charactermap.py, examples/widgets/digitalclock.py, examples/widgets/groupbox.py, examples/widgets/icons/icons.py, examples/widgets/imageviewer.py, examples/widgets/lineedits.py, examples/widgets/movie/movie.py, examples/widgets/scribble.py, examples/widgets/shapedclock.py, examples/widgets/sliders.py, examples/widgets/spinboxes.py, examples/widgets/styles.py, examples/widgets/stylesheet/stylesheet.py, examples/widgets/stylesheet/stylesheet_rc.py, examples/widgets/stylesheet/stylesheet_rc2.py, examples/widgets/stylesheet/stylesheet_rc3.py, examples/widgets/stylesheet/stylesheeteditor.py, examples/widgets/stylesheet/ui_mainwindow.py, examples/widgets/stylesheet/ui_stylesheeteditor.py, examples/widgets/tetrix.py, examples/widgets/tooltips/tooltips.py, examples/widgets/tooltips/tooltips_rc.py, examples/widgets/tooltips/tooltips_rc2.py, examples/widgets/tooltips/tooltips_rc3.py, examples/widgets/wiggly.py, examples/widgets/windowflags.py: Updated the widgets examples. [d2f301ac201a] * examples/tools/regexp.py: Fixed the regexp.py example so that the close button works. [8fede383c772] 2013-05-14 Phil Thompson * examples/webkit/README, examples/webkit/domtraversal/domtraversal.py, examples/webkit/domtraversal/ui_window.py, examples/webkit/fancybrowser/fancybrowser.py, examples/webkit/fancybrowser/jquery_rc.py, examples/webkit/fancybrowser/jquery_rc2.py, examples/webkit/fancybrowser/jquery_rc3.py, examples/webkit/formextractor/formextractor.py, examples/webkit/formextractor/formextractor_rc.py, examples/webkit/formextractor/formextractor_rc2.py, examples/webkit/formextractor/formextractor_rc3.py, examples/webkit/formextractor/ui_formextractor.py, examples/webkit/framecapture.py, examples/webkit/googlechat/form.ui, examples/webkit/googlechat/googlechat.py, examples/webkit/googlechat/ui_form.py, examples/webkit/previewer/previewer.py, examples/webkit/previewer/ui_previewer.py, examples/webkit/simpleselector/simpleselector.py, examples/webkit/simpleselector/ui_window.py: Updated the webkit examples. However formextractor.py and simpleselector.py crash but this maybe due to Qt bugs (although the C++ versions seem to be Ok). [70aa9e5575f0] * PyQt5.msp: Removed a wrong /Transfer/ annotation from QWebFrame.addToJavaScriptWindowObject(). [595fc25030b6] * examples/tutorials/addressbook/part1.py, examples/tutorials/addressbook/part2.py, examples/tutorials/addressbook/part3.py, examples/tutorials/addressbook/part4.py, examples/tutorials/addressbook/part5.py, examples/tutorials/addressbook/part6.py, examples/tutorials/addressbook/part7.py: Updated the tutorials example. [3507ed3a4178] * examples/tools/codecs/codecs.py, examples/tools/customcompleter/customcompleter.py, examples/tools/customcompleter/customcompleter_rc.py, examples/tools/customcompleter/customcompleter_rc2.py, examples/tools/customcompleter/customcompleter_rc3.py, examples/tools/i18n/i18n.py, examples/tools/i18n/i18n_rc.py, examples/tools/i18n/i18n_rc2.py, examples/tools/i18n/i18n_rc3.py, examples/tools/regexp.py, examples/tools/settingseditor/settingseditor.py: Updated the tools examples. [67da45febe99] * examples/threads/mandelbrot.py, examples/threads/semaphores.py, examples/threads/waitconditions.py: Updated the threads examples. [9d668a2d5f1e] * examples/sql/cachedtable.py, examples/sql/connection.py, examples/sql/querymodel.py, examples/sql/relationaltablemodel.py, examples/sql/tablemodel.py: Updated the sql examples. [cfee8e97f2b0] * examples/script/helloscript.py: Updated the script example. [edc67efd321e] * examples/richtext/calendar.py, examples/richtext/orderform.py, examples/richtext/syntaxhighlighter.py, examples/richtext/textobject/textobject.py: Updated the richtext examples. [68202805ef7d] * examples/pyuic/compile-on-the-fly.py, examples/pyuic/demo.ui, examples/pyuic/load_ui1.py, examples/pyuic/load_ui2.py: Updated the pyuic examples. [37fa592b6de2] * examples/painting/basicdrawing/basicdrawing.py, examples/painting/basicdrawing/basicdrawing_rc.py, examples/painting/basicdrawing/basicdrawing_rc2.py, examples/painting/basicdrawing/basicdrawing_rc3.py, examples/painting/concentriccircles.py, examples/painting/painterpaths.py, examples/painting/svgviewer/svgviewer.py, examples/painting/svgviewer/svgviewer_rc.py, examples/painting/svgviewer/svgviewer_rc2.py, examples/painting/svgviewer/svgviewer_rc3.py, examples/painting/transformations.py: Updated the painting examples. [1dc59a60cc5a] 2013-05-13 Phil Thompson * examples/phonon/README, examples/phonon/capabilities.py, examples/phonon/musicplayer.py: Removed the phonon examples. [66e123471275] * examples/opengl/2dpainting.py, examples/opengl/grabber.py, examples/opengl/hellogl.py, examples/opengl/overpainting.py, examples/opengl/samplebuffers.py, examples/opengl/textures/textures.py, examples/opengl/textures/textures_rc.py, examples/opengl/textures/textures_rc2.py, examples/opengl/textures/textures_rc3.py: Updated the opengl examples. [56994aef7046] * examples/README, examples/activeqt/README, examples/animation/README, examples/demos/README, examples/designer/README, examples/desktop/README, examples/dialogs/README, examples/draganddrop/README, examples/effects/README, examples/graphicsview/README, examples/ipc/README, examples/itemviews/README, examples/layouts/README, examples/mainwindows/README, examples/network/README, examples/network/blockingfortuneclient.py, examples/network/broadcastreceiver.py, examples/network/broadcastsender.py, examples/network/fortuneclient.py, examples/network/fortuneserver.py, examples/network/ftp/ftp.py, examples/network/ftp/ftp.qrc, examples/network/ftp/ftp_rc2.py, examples/network/ftp/ftp_rc3.py, examples/network/ftp/images/cdtoparent.png, examples/network/ftp/images/dir.png, examples/network/ftp/images/file.png, examples/network/http/http.py, examples/network/loopback.py, examples/network/threadedfortuneserver.py, examples/opengl/README, examples/painting/README, examples/phonon/README, examples/richtext/README, examples/script/README, examples/sql/README, examples/threads/README, examples/tools/README, examples/widgets/README, examples/xml/README, examples/xmlpatterns/README: Updated the network examples. [17ed9232524b] 2013-05-12 Phil Thompson * examples/mainwindows/application/application.py, examples/mainwindows/application/application_rc.py, examples/mainwindows/application/application_rc2.py, examples/mainwindows/application/application_rc3.py, examples/mainwindows/dockwidgets/dockwidgets.py, examples/mainwindows/dockwidgets/dockwidgets_rc.py, examples/mainwindows/dockwidgets/dockwidgets_rc2.py, examples/mainwindows/dockwidgets/dockwidgets_rc3.py, examples/mainwindows/mdi/mdi.py, examples/mainwindows/mdi/mdi_rc.py, examples/mainwindows/mdi/mdi_rc2.py, examples/mainwindows/mdi/mdi_rc3.py, examples/mainwindows/menus.py, examples/mainwindows/recentfiles.py, examples/mainwindows/sdi/sdi.py, examples/mainwindows/sdi/sdi_rc.py, examples/mainwindows/sdi/sdi_rc2.py, examples/mainwindows/sdi/sdi_rc3.py, examples/mainwindows/separations.py: Updated the mainwindows examples. [4fa26f6310ae] * examples/layouts/basiclayouts.py, examples/layouts/borderlayout.py, examples/layouts/flowlayout.py: Updated the layouts examples. [b710b235f26d] * examples/itemviews/basicsortfiltermodel.py, examples/itemviews/chart/chart.py, examples/itemviews/chart/chart_rc.py, examples/itemviews/chart/chart_rc2.py, examples/itemviews/chart/chart_rc3.py, examples/itemviews/coloreditorfactory.py, examples/itemviews/combowidgetmapper.py, examples/itemviews/customsortfiltermodel.py, examples/itemviews/dirview.py, examples/itemviews/editabletreemodel/editabletreemodel.py, examples/itemviews/editabletreemodel/editabletreemodel_rc.py, examples/itemviews/editabletreemodel/editabletreemodel_rc2.py, examples/itemviews/editabletreemodel/editabletreemodel_rc3.py, examples/itemviews/editabletreemodel/ui_mainwindow.py, examples/itemviews/fetchmore.py, examples/itemviews/pixelator/pixelator.py, examples/itemviews/pixelator/pixelator_rc.py, examples/itemviews/pixelator/pixelator_rc2.py, examples/itemviews/pixelator/pixelator_rc3.py, examples/itemviews/puzzle/puzzle.py, examples/itemviews/puzzle/puzzle_rc.py, examples/itemviews/puzzle/puzzle_rc2.py, examples/itemviews/puzzle/puzzle_rc3.py, examples/itemviews/simpledommodel.py, examples/itemviews/simpletreemodel/simpletreemodel.py, examples/itemviews/simpletreemodel/simpletreemodel_rc.py, examples/itemviews/simpletreemodel/simpletreemodel_rc2.py, examples/itemviews/simpletreemodel/simpletreemodel_rc3.py, examples/itemviews/simplewidgetmapper.py, examples/itemviews/spinboxdelegate.py, examples/itemviews/stardelegate.py: Updated the itemviews examples. [9a82c6b6c206] * examples/ipc/localfortuneclient.py, examples/ipc/localfortuneserver.py, examples/ipc/sharedmemory/dialog.py, examples/ipc/sharedmemory/sharedmemory.py: Updated the ipc examples. [51e1605974ae] 2013-05-05 Phil Thompson * examples/graphicsview/padnavigator/backside.ui, examples/graphicsview/padnavigator/form.ui, examples/graphicsview/padnavigator/padnavigator.py, examples/graphicsview/padnavigator/padnavigator_rc.py, examples/graphicsview/padnavigator/padnavigator_rc2.py, examples/graphicsview/padnavigator/padnavigator_rc3.py, examples/graphicsview/padnavigator/ui_backside.py, examples/graphicsview/padnavigator/ui_form.py: Updated the padnavigator.py example. [dd29bc79def2] * PyQt5.msp: Several fixes for properly tracking QPropertyAnimation instances. Several fixes for properly handling the parent relationships of transitions. [f0b3dedbb506] * examples/graphicsview/elasticnodes.py: Updated the elasticnodes.py example. [b0831183bf83] * PyQt5.msp: Added the missing Type and UserType to QGraphicsItem. [57a15a6a1562] * QAxContainer/QAxContainermod.sip, QAxContainer/qaxwidget.sip: QAxContainer fixes for PyQt5. [74eb89bd4fb2] * installers/pyqt5-config.bat: Fixed pyqt5-config.bat. [2f55460b7aba] * examples/graphicsview/diagramscene/diagramscene.py, examples/graphicsview/dragdroprobot/dragdroprobot.py, examples/graphicsview/dragdroprobot/dragdroprobot_rc.py, examples/graphicsview/dragdroprobot/dragdroprobot_rc2.py, examples/graphicsview/dragdroprobot/dragdroprobot_rc3.py: Updated the dragdroprobot.py example. [8870ed27b984] * installers/BuildGPL.txt, installers/qsci-config.bat, installers /qsci-pyqt5-config.bat: More installer updates. [2eaf68f6a2e8] * installers/BuildGPL.txt, installers/pyqt-check.py, installers/pyqt- config.bat, installers/pyqt5-check.py, installers/pyqt5-config.bat, installers/sip-config.bat, installers/sip-pyqt5-config.bat: Updated the installer docs configuration scripts for PyQt5. [6b2d127117e5] * build.py: Fixed the previous change. [f4c1ed30ad7d] * build.py: Changed the format of the name of a snapshot to match other packages. [735211c341dd] * examples/graphicsview/diagramscene/diagramscene.py, examples/graphicsview/diagramscene/diagramscene_rc.py, examples/graphicsview/diagramscene/diagramscene_rc2.py, examples/graphicsview/diagramscene/diagramscene_rc3.py: Updated the diagramscene.py example. [94f191b56126] * examples/graphicsview/collidingmice/collidingmice.py, examples/graphicsview/collidingmice/mice_rc.py, examples/graphicsview/collidingmice/mice_rc2.py, examples/graphicsview/collidingmice/mice_rc3.py: Updated the collidingmouse.py example. [dcf139d2a4f2] * examples/graphicsview/anchorlayout.py: Updated the anchorlayout.py example. [951da62e51cd] 2013-05-04 Phil Thompson * examples/effects/lighting.py: Updated the lighting.py example. [36e50731bdd0] * examples/draganddrop/puzzle/puzzle.py, examples/draganddrop/puzzle/puzzle_rc.py, examples/draganddrop/puzzle/puzzle_rc2.py, examples/draganddrop/puzzle/puzzle_rc3.py: Updated the puzzle.py example. [2eb7204b878d] * examples/draganddrop/dropsite.py, examples/draganddrop/fridgemagnets/fridgemagnets.py, examples/draganddrop/fridgemagnets/fridgemagnets_rc.py, examples/draganddrop/fridgemagnets/fridgemagnets_rc2.py, examples/draganddrop/fridgemagnets/fridgemagnets_rc3.py: Updated the fridgemagnets.py example. [45b96eb4dfe5] * examples/draganddrop/draggabletext/draggabletext.py, examples/draganddrop/draggabletext/draggabletext_rc.py, examples/draganddrop/draggabletext/draggabletext_rc2.py, examples/draganddrop/draggabletext/draggabletext_rc3.py: Updated the draggabletext.py example. [4e560c89eb82] * examples/draganddrop/draggableicons/draggableicons.py, examples/draganddrop/draggableicons/draggableicons_rc.py, examples/draganddrop/draggableicons/draggableicons_rc2.py, examples/draganddrop/draggableicons/draggableicons_rc3.py: Updated the draggableicons.py example. [9483b75a05c6] * examples/draganddrop/delayedencoding/delayedencoding.py, examples/draganddrop/delayedencoding/delayedencoding_rc.py, examples/draganddrop/delayedencoding/delayedencoding_rc2.py, examples/draganddrop/delayedencoding/delayedencoding_rc3.py: Updated the delayedencoding.py example. [b588fe1a4afd] * examples/dialogs/trivialwizard.py: Updated the trivialwizard.py example. [5a07f1e46607] * examples/dialogs/tabdialog.py: Updated the tabdialog.py example. [833ac17ac8fa] * examples/dialogs/standarddialogs.py: Updated the standarddialogs.py example. [05f085d04ad0] * examples/dialogs/findfiles.py: Updated the findfiles.py example. [6ef07cd09834] * examples/dialogs/extension.py: Updated the extension.py example. [76898b56b744] * examples/dialogs/configdialog/configdialog.py, examples/dialogs/configdialog/configdialog_rc.py, examples/dialogs/configdialog/configdialog_rc2.py, examples/dialogs/configdialog/configdialog_rc3.py: Updated the configdialog.py example. [90003346d304] * examples/dialogs/classwizard/classwizard.py, examples/dialogs/classwizard/classwizard_rc.py, examples/dialogs/classwizard/classwizard_rc2.py, examples/dialogs/classwizard/classwizard_rc3.py: Updated the classwizard.py example. [b4f1babe9513] * examples/desktop/systray/images/bad.png, examples/desktop/systray/images/bad.svg, examples/desktop/systray/images/heart.png, examples/desktop/systray/images/heart.svg, examples/desktop/systray/images/trash.png, examples/desktop/systray/images/trash.svg, examples/desktop/systray/systray.py, examples/desktop/systray/systray.qrc, examples/desktop/systray/systray_rc.py, examples/desktop/systray/systray_rc2.py, examples/desktop/systray/systray_rc3.py: Updated the systray.py example. [63266a59e774] * Qt5-TODO.txt, examples/desktop/screenshot.py: Updated the screenshot.py example. [f0d706faeaf8] * designer/pluginloader.cpp, designer/pluginloader.h, designer/python .pro-in, installers/PyQt5-Qt5-gpl.nsi: Updated the Qt Designer Python plugin for PyQt5. [13fc7007e2e1] * examples/designer/plugins/plugins.py, examples/designer/plugins/python/analogclockplugin.py, examples/designer/plugins/python/bubbleswidgetplugin.py, examples/designer/plugins/python/counterlabelplugin.py, examples/designer/plugins/python/datetimeeditplugin.py, examples/designer/plugins/python/helloglwidgetplugin.py, examples/designer/plugins/python/highlightedtexteditplugin.py, examples/designer/plugins/python/multipagewidgetplugin.py, examples/designer/plugins/python/polygonwidgetplugin.py, examples/designer/plugins/python/pydemoplugin.py, examples/designer/plugins/python/pythonconsoleplugin.py, examples/designer/plugins/widgets/analogclock.py, examples/designer/plugins/widgets/bubbleswidget.py, examples/designer/plugins/widgets/counterlabel.py, examples/designer/plugins/widgets/datetimeedit.py, examples/designer/plugins/widgets/helloglwidget.py, examples/designer/plugins/widgets/highlightedtextedit.py, examples/designer/plugins/widgets/multipagewidget.py, examples/designer/plugins/widgets/polygonwidget.py, examples/designer/plugins/widgets/pydemo.py, examples/designer/plugins/widgets/pythonconsolewidget.py: Updated the plugins.py example. [0621efd149fc] * examples/designer/calculatorform/calculatorform.py, examples/designer/calculatorform/ui_calculatorform.py: Updated the calculatorform.py example. [950978fbdba4] * examples/declarative/modelviews/objectlistmodel/objectlistmodel.py, e xamples/declarative/modelviews/objectlistmodel/objectlistmodel_rc.py , examples/declarative/modelviews/objectlistmodel/objectlistmodel_rc 2.py, examples/declarative/modelviews/objectlistmodel/objectlistmode l_rc3.py: Updated the objectlistmodel.py example. [ea57e6a3e242] 2013-05-03 Phil Thompson * examples/dbus/remotecontrolledcar/car/car.py, examples/dbus/remotecontrolledcar/controller/controller.py, examples/dbus/remotecontrolledcar/controller/ui_controller.py: Updated the remotecontrolledcar example. [808da6e6f117] * examples/dbus/pingpong/ping.py, examples/dbus/pingpong/pong.py: Updated the pingpong example. [12131d11ac01] * examples/dbus/listnames.py: Updated the listname.py example. [e64adc3c51d6] * examples/dbus/chat/chat.py, examples/dbus/chat/chatmainwindow.ui, examples/dbus/chat/ui_chatmainwindow.py, examples/dbus/chat/ui_chatsetnickname.py: Updated the chat.py example. [fd1e12a91493] * installers/BuildGPL.txt: Updated the installer notes regarding Qt 5.0.2 installation bugs. [f686f54765aa] * pyuic/uic/properties.py: Fix to the previous fix which was PyQt4 specific. [0b7f4feca737] 2013-05-02 Phil Thompson * pyuic/uic/properties.py: Backed out a pyuic5 change so that .ui files created by Qt Designer prior to v4.3 can still be handled. [e79c0c532f3e] * Qt5-TODO.txt, examples/animation/stickman/stickman.py, examples/animation/stickman/stickman_rc.py, examples/animation/stickman/stickman_rc2.py, examples/animation/stickman/stickman_rc3.py: Updated the stickman.py example. [3976f1aa9e2f] * examples/animation/states/states.py, examples/animation/states/states_rc.py, examples/animation/states/states_rc2.py, examples/animation/states/states_rc3.py: Updated the states.py example. [ec420e524416] * examples/animation/moveblocks.py: Updated the moveblocks.py example. [dae4e83bc570] * examples/animation/animatedtiles/animatedtiles.py, examples/animation/appchooser/appchooser.py, examples/animation/easing/easing.py, examples/animation/easing/easing_rc.py, examples/animation/easing/easing_rc2.py, examples/animation/easing/easing_rc3.py, examples/animation/easing/form.ui, examples/animation/easing/ui_form.py: Updated the easing.py example. [3ed6c3313bfa] * examples/animation/appchooser/appchooser.py, examples/animation/appchooser/appchooser_rc.py, examples/animation/appchooser/appchooser_rc2.py, examples/animation/appchooser/appchooser_rc3.py: Updated the appchooser.py example. [39bfe5aa8be1] * examples/activeqt/webbrowser/webbrowser.py, examples/animation/animatedtiles/animatedtiles.py, examples/animation/animatedtiles/animatedtiles_rc.py, examples/animation/animatedtiles/animatedtiles_rc2.py, examples/animation/animatedtiles/animatedtiles_rc3.py: Updated the animatedtiles.py example. [59c8a26a0b41] * Qt5-TODO.txt, examples/activeqt/webbrowser/mainwindow_rc.py, examples/activeqt/webbrowser/mainwindow_rc2.py, examples/activeqt/webbrowser/mainwindow_rc3.py, examples/activeqt/webbrowser/ui_mainwindow.py, examples/activeqt/webbrowser/webbrowser.py: Updated the activeqt examples. [9578fffd0970] * Makefile, Qt5-TODO.txt, lib/configure.py, pyuic/uic/Compiler/compiler.py, pyuic/uic/Compiler/misc.py, pyuic/uic/Compiler/proxy_metaclass.py, pyuic/uic/Compiler/qobjectcreator.py, pyuic/uic/Compiler/qtproxies.py, pyuic/uic/Loader/loader.py, pyuic/uic/__init__.py, pyuic/uic/driver.py, pyuic/uic/exceptions.py, pyuic/uic/icon_cache.py, pyuic/uic/objcreator.py, pyuic/uic/port_v2/invoke.py, pyuic/uic/port_v2/load_plugin.py, pyuic/uic/port_v2/proxy_base.py, pyuic/uic/port_v3/invoke.py, pyuic/uic/port_v3/load_plugin.py, pyuic/uic/port_v3/proxy_base.py, pyuic/uic/properties.py, pyuic/uic/pyuic.py, pyuic/uic/uiparser.py: pyuic5 now uses relative imports throughout. [4a1fcf0692c1] * Qt5-TODO.txt, pyuic/uic/Compiler/qtproxies.py, pyuic/uic/uiparser.py: pyuic5 now uses new-style signal connections. [e46cc7cf20da] * pyuic/uic/Compiler/qtproxies.py, pyuic/uic/widget- plugins/qtprintsupport.py: Moved the pyuic support for QtPrintSupport classes to a separate plugin. [8c7f068d41fc] 2013-05-01 Phil Thompson * Makefile, Qt5-TODO.txt, pyuic/uic/Compiler/compiler.py, pyuic/uic/Compiler/qobjectcreator.py, pyuic/uic/Compiler/qtproxies.py, pyuic/uic/Loader/loader.py, pyuic/uic/Loader/qobjectcreator.py, pyuic/uic/__init__.py, pyuic/uic/driver.py, pyuic/uic/objcreator.py, pyuic/uic/port_v2/as_string.py, pyuic/uic/port_v3/as_string.py, pyuic/uic/properties.py, pyuic/uic/pyuic.py, pyuic/uic/uiparser.py, pyuic/uic/widget-plugins/phonon.py, pyuic/uic/widget- plugins/qtwebkit.py: Updated pyuic for PyQt5. [f2a13577dc76] * PyQt5.msp, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_misc.cpp, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.cpp, qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_types.cpp, qpy/QtDeclarative/qpydeclarative_post_init.cpp, qpy/QtDeclarative/qpydeclarativelistproperty.cpp: Updated type objects to refer to PyQt5. Removed remaining references to PyQt4 in strings. [ae097f4e7c86] * installers/PyQt5-Qt5-gpl.nsi: Updated the Windows installer. [4b2182d32457] * Makefile, Qt5-TODO.txt, qpy/QtCore/qpycore_post_init.cpp.in: Call sipSetDestroyOnExit(0) on initialisation. [6e6dc5602337] * Makefile, PyQt5.msp, Qt5-TODO.txt: Removed the implementation of QSet (as it was there for QtMobility). QSet implementations now always use Python set objects. [ed773507d3a4] * PyQt5.msp, Qt5-TODO.txt: Updated the docstrings to reflect the updated API version support. [d56eb3f2e743] * PyQt5.msp, Qt5-TODO.txt, pyrcc/main.cpp, pyrcc/rcc.cpp, pyrcc/rcc.h, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpynullvariant.sip: Stripped out the support for the various v1 APIs. [fc729edff1c6] 2013-04-30 Phil Thompson * PyQt5.msp, Qt5-TODO.txt: Updated the remaining %ConvertToSubClassCode. [122e8bd052e2] * PyQt5.msp: Updated the %ConvertToSubClassCode for all QObject derived classes. [95ab26300286] * PyQt5.msp, Qt5-TODO.txt, lib/SubclassCode/QtGui.versions, lib/SubclassCode/QtGuiQt4.versions, lib/SubclassCode/QtNetwork.versions, lib/SubclassCode/QtPrintSupport.versions, lib/configure.py: Updated the supported features and made sure the remaining ones are applied where needed. [bf764c6fabc2] 2013-04-29 Phil Thompson * PyQt5.msp, Qt5-TODO.txt: Added a missing /Transfer/ from QStandardItemModel.invisibleRootItem(). [d1df8f38fcfb] * PyQt5.msp, Qt5-TODO.txt: Removed all code specific to Python earlier than v2.6. [911d7106cb25] * PyQt5.msp, Qt5-TODO.txt, designer/python.pro-in, lib/configure.py, qpy/QtDesigner/qpydesigner.pro: Completed the project restructure. Added the new modules to the build system. [f17ee2a44642] * PyQt5.msp, lib/configure.py: Removed the phonon and QtAssistant modules. Added the QtPrintSupport, QtWebKitWidgets and QtWidgets modules. Reassigned the header files to the new modules. Removed (unimplemented) support for static plugins. [a5cd5130a3ef] * PyQt5.msp, Qt5-TODO.txt: Removed all the unused header files. [9c872bd80a39] 2013-04-28 Phil Thompson * PyQt5.msp, QAxContainer/qaxobject.sip, QAxContainer/qaxwidget.sip, Qt5-TODO.txt, qpy/QtDBus/qpydbuspendingreply.sip, qpy/QtDBus/qpydbusreply.sip: Stripped out all remaining Qt4 specific code and API items. [4001b637e5e3] * PyQt5.msp: qabstractnativeeventfilter.h doesn't need parsing. [f3fca0f11bf5] 2013-04-27 Phil Thompson * PyQt5.msp: Added the historical Qt_4_1_0 version tag. [84436fb6ca22] 2013-04-25 Phil Thompson * installers/PyQt5-Qt5-gpl.nsi: Updated the installer to include the qminimal.dll platform plugin. [553a88d5d8dd] * Qt5-TODO.txt, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.cpp, qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtCore/qpycore_pyqtproxy.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_qabstracteventdispatcher.cpp, qpy/QtCore/qpycore_qmetaobject_helpers.cpp, qpy/QtCore/qpycore_qmetaobjectbuilder.h, qpy/QtCore/qpycore_qobject_getattr.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qstring.cpp, qpy/QtCore/qpycore_qvariant_value.cpp, qpy/QtCore/qpycore_sip_helpers.cpp, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qpycore_types.h, qpy/QtDeclarative/qpydeclarativelistproperty.cpp, qpy/QtOpenGL/qpyopengl_api.h, qpy/QtOpenGL/qpyopengl_attribute_array.cpp, qpy/QtOpenGL/qpyopengl_uniform_value_array.cpp: Removed all Qt4 and earlier than Python v2.6 specific code from the qpy support libraries. [834b61dd5472] * PyQt5.msp, lib/configure.py: Removed support for Qt4 features deprecated in Qt5. The SIP requirement is now for v4.14.7 to avoid a bug triggered by PyQt5. [fdbfb94b63ec] 2013-04-23 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp: Connections to partial slots of objects in a different thread are now handled correctly. [632d7398e654] * lib/configure.py: Directories are now ignored when searching for qmake and sip. [9329bbaaeb65] * lib/configure.py: Checking for modules is now tolerant of qmake failing to create a makefile which can happen with an unsupported Qt5 module. [9e54734d1e24] 2013-04-22 Phil Thompson * Makefile, Qt5-TODO.txt, build.py: Source packages are no longer platform specific. [2ab4a5ae1714] * build.py: Fix the initial version number. [4a88db09cdc1] * Makefile, build.py: Fixes to build.py so that a source package gets created. [ec8a0d7d131a] * .hgignore, Makefile, NEWS, PyQt5.msp, QAxContainer/QAxContainermod.sip, QAxContainer/qaxbase.sip, QAxContainer/qaxobject.sip, QAxContainer/qaxwidget.sip, Qt5-TODO.txt, build.py, configurations/rpi_py3.cfg, contrib/lang/Makefile, contrib/lang/lang.py, contrib/lang/lang.qrc, contrib/lang/lang/cs_cs.qm, contrib/lang/lang/cs_cs.ts, contrib/lang/lang/da_da.qm, contrib/lang/lang/da_da.ts, contrib/lang/lang/de_ch.qm, contrib/lang/lang/de_ch.ts, contrib/lang/lang/de_de.qm, contrib/lang/lang/de_de.ts, contrib/lang/lang/en_gb.qm, contrib/lang/lang/en_gb.ts, contrib/lang/lang/en_us.qm, contrib/lang/lang/en_us.ts, contrib/lang/lang/es_es.qm, contrib/lang/lang/es_es.ts, contrib/lang/lang/et_et.qm, contrib/lang/lang/et_et.ts, contrib/lang/lang/fi_fi.qm, contrib/lang/lang/fi_fi.ts, contrib/lang/lang/fr_ca.qm, contrib/lang/lang/fr_ca.ts, contrib/lang/lang/fr_fr.qm, contrib/lang/lang/fr_fr.ts, contrib/lang/lang/hu_hu.qm, contrib/lang/lang/hu_hu.ts, contrib/lang/lang/it_it.qm, contrib/lang/lang/it_it.ts, contrib/lang/lang/nl_nl.qm, contrib/lang/lang/nl_nl.ts, contrib/lang/lang/no_no.qm, contrib/lang/lang/no_no.ts, contrib/lang/lang/pl_pl.qm, contrib/lang/lang/pl_pl.ts, contrib/lang/lang/pt_pt.qm, contrib/lang/lang/pt_pt.ts, contrib/lang/lang/sv_sv.qm, contrib/lang/lang/sv_sv.ts, contrib/lang/lang/tr_tr.qm, contrib/lang/lang/tr_tr.ts, contrib/lang/mainwindow.ui, contrib/pymodeltest/LICENSE.GPL, contrib/pymodeltest/README, contrib/pymodeltest/modeltest.py, contrib/sandbox/README, contrib/sandbox/sandbox.pyw, dbus/dbus.cpp, dbus/dbus.sbf, dbus/helper.h, designer/pluginloader.cpp, designer/pluginloader.h, designer/python.pro-in, examples/README, examples/activeqt/README, examples/activeqt/webbrowser/icons/image0.xpm, examples/activeqt/webbrowser/icons/image1.xpm, examples/activeqt/webbrowser/icons/image2.xpm, examples/activeqt/webbrowser/icons/image3.xpm, examples/activeqt/webbrowser/icons/image4.xpm, examples/activeqt/webbrowser/icons/image5.xpm, examples/activeqt/webbrowser/icons/image6.xpm, examples/activeqt/webbrowser/mainwindow.qrc, examples/activeqt/webbrowser/mainwindow.ui, examples/activeqt/webbrowser/mainwindow_rc2.py, examples/activeqt/webbrowser/mainwindow_rc3.py, examples/activeqt/webbrowser/ui_mainwindow.py, examples/activeqt/webbrowser/webbrowser.py, examples/animation/README, examples/animation/animatedtiles/animatedtiles.py, examples/animation/animatedtiles/animatedtiles.qrc, examples/animation/animatedtiles/animatedtiles_rc2.py, examples/animation/animatedtiles/animatedtiles_rc3.py, examples/animation/animatedtiles/images/Time-For-Lunch-2.jpg, examples/animation/animatedtiles/images/centered.png, examples/animation/animatedtiles/images/ellipse.png, examples/animation/animatedtiles/images/figure8.png, examples/animation/animatedtiles/images/kinetic.png, examples/animation/animatedtiles/images/random.png, examples/animation/animatedtiles/images/tile.png, examples/animation/appchooser/accessories-dictionary.png, examples/animation/appchooser/akregator.png, examples/animation/appchooser/appchooser.py, examples/animation/appchooser/appchooser.qrc, examples/animation/appchooser/appchooser_rc2.py, examples/animation/appchooser/appchooser_rc3.py, examples/animation/appchooser/digikam.png, examples/animation/appchooser/k3b.png, examples/animation/easing/easing.py, examples/animation/easing/easing.qrc, examples/animation/easing/easing_rc2.py, examples/animation/easing/easing_rc3.py, examples/animation/easing/form.ui, examples/animation/easing/images /qt-logo.png, examples/animation/easing/ui_form.py, examples/animation/moveblocks.py, examples/animation/states /accessories-dictionary.png, examples/animation/states/akregator.png, examples/animation/states/digikam.png, examples/animation/states /help-browser.png, examples/animation/states/k3b.png, examples/animation/states/kchart.png, examples/animation/states/states.py, examples/animation/states/states.qrc, examples/animation/states/states_rc2.py, examples/animation/states/states_rc3.py, examples/animation/stickman/animations/chilling, examples/animation/stickman/animations/dancing, examples/animation/stickman/animations/dead, examples/animation/stickman/animations/jumping, examples/animation/stickman/stickman.py, examples/animation/stickman/stickman.qrc, examples/animation/stickman/stickman_rc2.py, examples/animation/stickman/stickman_rc3.py, examples/dbus/chat/chat.py, examples/dbus/chat/chatmainwindow.ui, examples/dbus/chat/chatsetnickname.ui, examples/dbus/chat/ui_chatmainwindow.py, examples/dbus/chat/ui_chatsetnickname.py, examples/dbus/listnames.py, examples/dbus/pingpong/ping.py, examples/dbus/pingpong/pong.py, examples/dbus/remotecontrolledcar/car/car.py, examples/dbus/remotecontrolledcar/controller/controller.py, examples/dbus/remotecontrolledcar/controller/controller.ui, examples/dbus/remotecontrolledcar/controller/ui_controller.py, examples/declarative/modelviews/objectlistmodel/objectlistmodel.py, examples/declarative/modelviews/objectlistmodel/objectlistmodel.qrc, examples/declarative/modelviews/objectlistmodel/objectlistmodel_rc2. py, examples/declarative/modelviews/objectlistmodel/objectlistmodel_ rc3.py, examples/declarative/modelviews/objectlistmodel/view.qml, examples/declarative/toys/README, examples/declarative/toys/clocks/clocks.qml, examples/declarative/toys/clocks/content/Clock.qml, examples/declarative/toys/clocks/content/QuitButton.qml, examples/declarative/toys/clocks/content/background.png, examples/declarative/toys/clocks/content/center.png, examples/declarative/toys/clocks/content/clock-night.png, examples/declarative/toys/clocks/content/clock.png, examples/declarative/toys/clocks/content/hour.png, examples/declarative/toys/clocks/content/minute.png, examples/declarative/toys/clocks/content/quit.png, examples/declarative/toys/clocks/content/second.png, examples/declarative/toys/corkboards/Day.qml, examples/declarative/toys/corkboards/cork.jpg, examples/declarative/toys/corkboards/corkboards.qml, examples/declarative/toys/corkboards/note-yellow.png, examples/declarative/toys/corkboards/tack.png, examples/declarative/toys/dynamicscene/Button.qml, examples/declarative/toys/dynamicscene/GenericSceneItem.qml, examples/declarative/toys/dynamicscene/PaletteItem.qml, examples/declarative/toys/dynamicscene/PerspectiveItem.qml, examples/declarative/toys/dynamicscene/Sun.qml, examples/declarative/toys/dynamicscene/dynamicscene.qml, examples/declarative/toys/dynamicscene/images/face-smile.png, examples/declarative/toys/dynamicscene/images/moon.png, examples/declarative/toys/dynamicscene/images/rabbit_brown.png, examples/declarative/toys/dynamicscene/images/rabbit_bw.png, examples/declarative/toys/dynamicscene/images/star.png, examples/declarative/toys/dynamicscene/images/sun.png, examples/declarative/toys/dynamicscene/images/tree_s.png, examples/declarative/toys/dynamicscene/itemCreation.js, examples/declarative/toys/tic-tac-toe/content/Button.qml, examples/declarative/toys/tic-tac-toe/content/TicTac.qml, examples/declarative/toys/tic-tac-toe/content/pics/board.png, examples/declarative/toys/tic-tac-toe/content/pics/o.png, examples/declarative/toys/tic-tac-toe/content/pics/x.png, examples/declarative/toys/tic-tac-toe/content/tic-tac-toe.js, examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml, examples/declarative/toys/tvtennis/tvtennis.qml, examples/declarative/ui-components/README, examples/declarative/ui- components/dialcontrol/content/Dial.qml, examples/declarative/ui- components/dialcontrol/content/QuitButton.qml, examples/declarative /ui-components/dialcontrol/content/background.png, examples/declarative/ui-components/dialcontrol/content/needle.png, examples/declarative/ui- components/dialcontrol/content/needle_shadow.png, examples/declarative/ui-components/dialcontrol/content/overlay.png, examples/declarative/ui-components/dialcontrol/content/quit.png, examples/declarative/ui-components/dialcontrol/dialcontrol.qml, examples/declarative/ui-components/flipable/content/5_heart.png, examples/declarative/ui-components/flipable/content/9_club.png, examples/declarative/ui-components/flipable/content/Card.qml, examples/declarative/ui-components/flipable/content/back.png, examples/declarative/ui-components/flipable/flipable.qml, examples/declarative/ui- components/progressbar/content/ProgressBar.qml, examples/declarative /ui-components/progressbar/content/background.png, examples/declarative/ui-components/progressbar/main.qml, examples/declarative/ui-components/scrollbar/ScrollBar.qml, examples/declarative/ui-components/scrollbar/main.qml, examples/declarative/ui-components/scrollbar/niagara_falls.jpg, examples/declarative/ui-components/searchbox/SearchBox.qml, examples/declarative/ui-components/searchbox/images/clear.png, examples/declarative/ui-components/searchbox/images/lineedit-bg- focus.png, examples/declarative/ui-components/searchbox/images /lineedit-bg.png, examples/declarative/ui- components/searchbox/main.qml, examples/declarative/ui- components/slideswitch/content/Switch.qml, examples/declarative/ui- components/slideswitch/content/background.svg, examples/declarative /ui-components/slideswitch/content/knob.svg, examples/declarative /ui-components/slideswitch/slideswitch.qml, examples/declarative/ui- components/spinner/content/Spinner.qml, examples/declarative/ui- components/spinner/content/spinner-bg.png, examples/declarative/ui- components/spinner/content/spinner-select.png, examples/declarative /ui-components/spinner/main.qml, examples/declarative/ui- components/tabwidget/TabWidget.qml, examples/declarative/ui- components/tabwidget/main.qml, examples/declarative/ui- components/tabwidget/tab.png, examples/demos/README, examples/demos/declarative/minehunt/MinehuntCore/Explosion.qml, examples/demos/declarative/minehunt/MinehuntCore/Tile.qml, examples/demos/declarative/minehunt/MinehuntCore/pics/No-Ones- Laughing-3.jpg, examples/demos/declarative/minehunt/MinehuntCore/pics/back.png, examples/demos/declarative/minehunt/MinehuntCore/pics/bomb- color.png, examples/demos/declarative/minehunt/MinehuntCore/pics/bomb.png, examples/demos/declarative/minehunt/MinehuntCore/pics/face-sad.png, examples/demos/declarative/minehunt/MinehuntCore/pics/face-smile- big.png, examples/demos/declarative/minehunt/MinehuntCore/pics/face- smile.png, examples/demos/declarative/minehunt/MinehuntCore/pics /flag-color.png, examples/demos/declarative/minehunt/MinehuntCore/pics/flag.png, examples/demos/declarative/minehunt/MinehuntCore/pics/front.png, examples/demos/declarative/minehunt/MinehuntCore/pics/quit.png, examples/demos/declarative/minehunt/MinehuntCore/pics/star.png, examples/demos/declarative/minehunt/MinehuntCore/qmldir, examples/demos/declarative/minehunt/minehunt.py, examples/demos/declarative/minehunt/minehunt.qml, examples/demos/declarative/samegame/SamegameCore/BoomBlock.qml, examples/demos/declarative/samegame/SamegameCore/Button.qml, examples/demos/declarative/samegame/SamegameCore/Dialog.qml, example s/demos/declarative/samegame/SamegameCore/pics/background.png, examples/demos/declarative/samegame/SamegameCore/pics/blueStar.png, examples/demos/declarative/samegame/SamegameCore/pics/blueStone.png, examples/demos/declarative/samegame/SamegameCore/pics/greenStar.png, examples/demos/declarative/samegame/SamegameCore/pics/greenStone.png , examples/demos/declarative/samegame/SamegameCore/pics/redStar.png, examples/demos/declarative/samegame/SamegameCore/pics/redStone.png, examples/demos/declarative/samegame/SamegameCore/pics/star.png, exam ples/demos/declarative/samegame/SamegameCore/pics/yellowStone.png, examples/demos/declarative/samegame/SamegameCore/qmldir, examples/demos/declarative/samegame/SamegameCore/samegame.js, examples/demos/declarative/samegame/highscores/README, examples/demos/declarative/samegame/highscores/score_data.xml, examples/demos/declarative/samegame/highscores/score_style.xsl, examples/demos/declarative/samegame/highscores/scores.php, examples/demos/declarative/samegame/samegame.qml, examples/demos/embedded/lightmaps.py, examples/demos/embeddeddialogs /No-Ones-Laughing-3.jpg, examples/demos/embeddeddialogs/embeddeddialog.py, examples/demos/embeddeddialogs/embeddeddialog.ui, examples/demos/embeddeddialogs/embeddeddialogs.py, examples/demos/embeddeddialogs/embeddeddialogs.qrc, examples/demos/embeddeddialogs/embeddeddialogs_rc2.py, examples/demos/embeddeddialogs/embeddeddialogs_rc3.py, examples/demos/qtdemo/colors.py, examples/demos/qtdemo/demoitem.py, examples/demos/qtdemo/demoitemanimation.py, examples/demos/qtdemo/demoscene.py, examples/demos/qtdemo/demotextitem.py, examples/demos/qtdemo/dockitem.py, examples/demos/qtdemo/examplecontent.py, examples/demos/qtdemo/guide.py, examples/demos/qtdemo/guidecircle.py, examples/demos/qtdemo/guideline.py, examples/demos/qtdemo/headingitem.py, examples/demos/qtdemo/imageitem.py, examples/demos/qtdemo/images/demobg.png, examples/demos/qtdemo/images/qtlogo_small.png, examples/demos/qtdemo/images/trolltech-logo.png, examples/demos/qtdemo/itemcircleanimation.py, examples/demos/qtdemo/letteritem.py, examples/demos/qtdemo/mainwindow.py, examples/demos/qtdemo/menucontent.py, examples/demos/qtdemo/menumanager.py, examples/demos/qtdemo/qmlShell.qml, examples/demos/qtdemo/qtdemo.py, examples/demos/qtdemo/qtdemo.qrc, examples/demos/qtdemo/qtdemo_rc2.py, examples/demos/qtdemo/qtdemo_rc3.py, examples/demos/qtdemo/scanitem.py, examples/demos/qtdemo/score.py, examples/demos/qtdemo/textbutton.py, examples/demos/qtdemo/xml/examples.xml, examples/demos/spreadsheet/images/interview.png, examples/demos/spreadsheet/printview.py, examples/demos/spreadsheet/spreadsheet.py, examples/demos/spreadsheet/spreadsheet.qrc, examples/demos/spreadsheet/spreadsheet_rc2.py, examples/demos/spreadsheet/spreadsheet_rc3.py, examples/demos/spreadsheet/spreadsheetdelegate.py, examples/demos/spreadsheet/spreadsheetitem.py, examples/demos/spreadsheet/util.py, examples/demos/textedit/example.html, examples/demos/textedit/images/logo.png, examples/demos/textedit/images/logo32.png, examples/demos/textedit/images/mac/editcopy.png, examples/demos/textedit/images/mac/editcut.png, examples/demos/textedit/images/mac/editpaste.png, examples/demos/textedit/images/mac/editredo.png, examples/demos/textedit/images/mac/editundo.png, examples/demos/textedit/images/mac/exportpdf.png, examples/demos/textedit/images/mac/filenew.png, examples/demos/textedit/images/mac/fileopen.png, examples/demos/textedit/images/mac/fileprint.png, examples/demos/textedit/images/mac/filesave.png, examples/demos/textedit/images/mac/textbold.png, examples/demos/textedit/images/mac/textcenter.png, examples/demos/textedit/images/mac/textitalic.png, examples/demos/textedit/images/mac/textjustify.png, examples/demos/textedit/images/mac/textleft.png, examples/demos/textedit/images/mac/textright.png, examples/demos/textedit/images/mac/textunder.png, examples/demos/textedit/images/mac/zoomin.png, examples/demos/textedit/images/mac/zoomout.png, examples/demos/textedit/images/win/editcopy.png, examples/demos/textedit/images/win/editcut.png, examples/demos/textedit/images/win/editpaste.png, examples/demos/textedit/images/win/editredo.png, examples/demos/textedit/images/win/editundo.png, examples/demos/textedit/images/win/exportpdf.png, examples/demos/textedit/images/win/filenew.png, examples/demos/textedit/images/win/fileopen.png, examples/demos/textedit/images/win/fileprint.png, examples/demos/textedit/images/win/filesave.png, examples/demos/textedit/images/win/textbold.png, examples/demos/textedit/images/win/textcenter.png, examples/demos/textedit/images/win/textitalic.png, examples/demos/textedit/images/win/textjustify.png, examples/demos/textedit/images/win/textleft.png, examples/demos/textedit/images/win/textright.png, examples/demos/textedit/images/win/textunder.png, examples/demos/textedit/images/win/zoomin.png, examples/demos/textedit/images/win/zoomout.png, examples/demos/textedit/textedit.py, examples/demos/textedit/textedit.qrc, examples/demos/textedit/textedit_rc2.py, examples/demos/textedit/textedit_rc3.py, examples/designer/README, examples/designer/calculatorform/calculatorform.py, examples/designer/calculatorform/calculatorform.ui, examples/designer/calculatorform/ui_calculatorform.py, examples/designer/plugins/plugins.py, examples/designer/plugins/python/analogclockplugin.py, examples/designer/plugins/python/bubbleswidgetplugin.py, examples/designer/plugins/python/counterlabelplugin.py, examples/designer/plugins/python/datetimeeditplugin.py, examples/designer/plugins/python/helloglwidgetplugin.py, examples/designer/plugins/python/highlightedtexteditplugin.py, examples/designer/plugins/python/multipagewidgetplugin.py, examples/designer/plugins/python/polygonwidgetplugin.py, examples/designer/plugins/python/pydemoplugin.py, examples/designer/plugins/python/pythonconsoleplugin.py, examples/designer/plugins/widgets/analogclock.py, examples/designer/plugins/widgets/bubbleswidget.py, examples/designer/plugins/widgets/counterlabel.py, examples/designer/plugins/widgets/datetimeedit.py, examples/designer/plugins/widgets/helloglwidget.py, examples/designer/plugins/widgets/highlightedtextedit.py, examples/designer/plugins/widgets/multipagewidget.py, examples/designer/plugins/widgets/polygonwidget.py, examples/designer/plugins/widgets/pydemo.py, examples/designer/plugins/widgets/pythonconsolewidget.py, examples/desktop/README, examples/desktop/screenshot.py, examples/desktop/systray/images/bad.svg, examples/desktop/systray/images/heart.svg, examples/desktop/systray/images/trash.svg, examples/desktop/systray/systray.py, examples/desktop/systray/systray.qrc, examples/desktop/systray/systray_rc2.py, examples/desktop/systray/systray_rc3.py, examples/dialogs/README, examples/dialogs/classwizard/classwizard.py, examples/dialogs/classwizard/classwizard.qrc, examples/dialogs/classwizard/classwizard_rc2.py, examples/dialogs/classwizard/classwizard_rc3.py, examples/dialogs/classwizard/images/background.png, examples/dialogs/classwizard/images/banner.png, examples/dialogs/classwizard/images/logo1.png, examples/dialogs/classwizard/images/logo2.png, examples/dialogs/classwizard/images/logo3.png, examples/dialogs/classwizard/images/watermark1.png, examples/dialogs/classwizard/images/watermark2.png, examples/dialogs/configdialog/configdialog.py, examples/dialogs/configdialog/configdialog.qrc, examples/dialogs/configdialog/configdialog_rc2.py, examples/dialogs/configdialog/configdialog_rc3.py, examples/dialogs/configdialog/images/config.png, examples/dialogs/configdialog/images/query.png, examples/dialogs/configdialog/images/update.png, examples/dialogs/extension.py, examples/dialogs/findfiles.py, examples/dialogs/standarddialogs.py, examples/dialogs/tabdialog.py, examples/dialogs/trivialwizard.py, examples/draganddrop/README, examples/draganddrop/delayedencoding/delayedencoding.py, examples/draganddrop/delayedencoding/delayedencoding.qrc, examples/draganddrop/delayedencoding/delayedencoding_rc2.py, examples/draganddrop/delayedencoding/delayedencoding_rc3.py, examples/draganddrop/delayedencoding/images/drag.png, examples/draganddrop/delayedencoding/images/example.svg, examples/draganddrop/draggableicons/draggableicons.py, examples/draganddrop/draggableicons/draggableicons.qrc, examples/draganddrop/draggableicons/draggableicons_rc2.py, examples/draganddrop/draggableicons/draggableicons_rc3.py, examples/draganddrop/draggableicons/images/boat.png, examples/draganddrop/draggableicons/images/car.png, examples/draganddrop/draggableicons/images/house.png, examples/draganddrop/draggabletext/draggabletext.py, examples/draganddrop/draggabletext/draggabletext.qrc, examples/draganddrop/draggabletext/draggabletext_rc2.py, examples/draganddrop/draggabletext/draggabletext_rc3.py, examples/draganddrop/draggabletext/words.txt, examples/draganddrop/dropsite.py, examples/draganddrop/fridgemagnets/fridgemagnets.py, examples/draganddrop/fridgemagnets/fridgemagnets.qrc, examples/draganddrop/fridgemagnets/fridgemagnets_rc2.py, examples/draganddrop/fridgemagnets/fridgemagnets_rc3.py, examples/draganddrop/fridgemagnets/words.txt, examples/draganddrop/puzzle/example.jpg, examples/draganddrop/puzzle/puzzle.py, examples/draganddrop/puzzle/puzzle.qrc, examples/draganddrop/puzzle/puzzle_rc2.py, examples/draganddrop/puzzle/puzzle_rc3.py, examples/effects/README, examples/effects/lighting.py, examples/graphicsview/README, examples/graphicsview/anchorlayout.py, examples/graphicsview/collidingmice/collidingmice.py, examples/graphicsview/collidingmice/images/cheese.jpg, examples/graphicsview/collidingmice/mice.qrc, examples/graphicsview/collidingmice/mice_rc2.py, examples/graphicsview/collidingmice/mice_rc3.py, examples/graphicsview/diagramscene/diagramscene.py, examples/graphicsview/diagramscene/diagramscene.qrc, examples/graphicsview/diagramscene/diagramscene_rc2.py, examples/graphicsview/diagramscene/diagramscene_rc3.py, examples/graphicsview/diagramscene/images/background1.png, examples/graphicsview/diagramscene/images/background2.png, examples/graphicsview/diagramscene/images/background3.png, examples/graphicsview/diagramscene/images/background4.png, examples/graphicsview/diagramscene/images/bold.png, examples/graphicsview/diagramscene/images/bringtofront.png, examples/graphicsview/diagramscene/images/delete.png, examples/graphicsview/diagramscene/images/floodfill.png, examples/graphicsview/diagramscene/images/italic.png, examples/graphicsview/diagramscene/images/linecolor.png, examples/graphicsview/diagramscene/images/linepointer.png, examples/graphicsview/diagramscene/images/pointer.png, examples/graphicsview/diagramscene/images/sendtoback.png, examples/graphicsview/diagramscene/images/textpointer.png, examples/graphicsview/diagramscene/images/underline.png, examples/graphicsview/dragdroprobot/dragdroprobot.py, examples/graphicsview/dragdroprobot/dragdroprobot.qrc, examples/graphicsview/dragdroprobot/dragdroprobot_rc2.py, examples/graphicsview/dragdroprobot/dragdroprobot_rc3.py, examples/graphicsview/dragdroprobot/images/head.png, examples/graphicsview/elasticnodes.py, examples/graphicsview/padnavigator/backside.ui, examples/graphicsview/padnavigator/images/artsfftscope.png, examples/graphicsview/padnavigator/images/blue_angle_swirl.jpg, examples/graphicsview/padnavigator/images/kontact_contacts.png, examples/graphicsview/padnavigator/images/kontact_journal.png, examples/graphicsview/padnavigator/images/kontact_mail.png, examples/graphicsview/padnavigator/images/kontact_notes.png, examples/graphicsview/padnavigator/images/kopeteavailable.png, examples/graphicsview/padnavigator/images/metacontact_online.png, examples/graphicsview/padnavigator/images/minitools.png, examples/graphicsview/padnavigator/padnavigator.py, examples/graphicsview/padnavigator/padnavigator.qrc, examples/graphicsview/padnavigator/padnavigator_rc2.py, examples/graphicsview/padnavigator/padnavigator_rc3.py, examples/graphicsview/padnavigator/ui_backside.py, examples/ipc/README, examples/ipc/localfortuneclient.py, examples/ipc/localfortuneserver.py, examples/ipc/sharedmemory/dialog.py, examples/ipc/sharedmemory/dialog.ui, examples/ipc/sharedmemory/image.png, examples/ipc/sharedmemory/qt.png, examples/ipc/sharedmemory/sharedmemory.py, examples/itemviews/README, examples/itemviews/basicsortfiltermodel.py, examples/itemviews/chart/chart.py, examples/itemviews/chart/chart.qrc, examples/itemviews/chart/chart_rc2.py, examples/itemviews/chart/chart_rc3.py, examples/itemviews/chart/mydata.cht, examples/itemviews/chart/qtdata.cht, examples/itemviews/coloreditorfactory.py, examples/itemviews/combowidgetmapper.py, examples/itemviews/customsortfiltermodel.py, examples/itemviews/dirview.py, examples/itemviews/editabletreemodel/default.txt, examples/itemviews/editabletreemodel/editabletreemodel.py, examples/itemviews/editabletreemodel/editabletreemodel.qrc, examples/itemviews/editabletreemodel/editabletreemodel_rc2.py, examples/itemviews/editabletreemodel/editabletreemodel_rc3.py, examples/itemviews/editabletreemodel/mainwindow.ui, examples/itemviews/editabletreemodel/ui_mainwindow.py, examples/itemviews/fetchmore.py, examples/itemviews/pixelator/images/qt.png, examples/itemviews/pixelator/pixelator.py, examples/itemviews/pixelator/pixelator.qrc, examples/itemviews/pixelator/pixelator_rc2.py, examples/itemviews/pixelator/pixelator_rc3.py, examples/itemviews/puzzle/example.jpg, examples/itemviews/puzzle/puzzle.py, examples/itemviews/puzzle/puzzle.qrc, examples/itemviews/puzzle/puzzle_rc2.py, examples/itemviews/puzzle/puzzle_rc3.py, examples/itemviews/simpledommodel.py, examples/itemviews/simpletreemodel/default.txt, examples/itemviews/simpletreemodel/simpletreemodel.py, examples/itemviews/simpletreemodel/simpletreemodel.qrc, examples/itemviews/simpletreemodel/simpletreemodel_rc2.py, examples/itemviews/simpletreemodel/simpletreemodel_rc3.py, examples/itemviews/simplewidgetmapper.py, examples/itemviews/spinboxdelegate.py, examples/itemviews/stardelegate.py, examples/layouts/README, examples/layouts/basiclayouts.py, examples/layouts/borderlayout.py, examples/layouts/flowlayout.py, examples/mainwindows/README, examples/mainwindows/application/application.py, examples/mainwindows/application/application.qrc, examples/mainwindows/application/application_rc2.py, examples/mainwindows/application/application_rc3.py, examples/mainwindows/application/images/copy.png, examples/mainwindows/application/images/cut.png, examples/mainwindows/application/images/new.png, examples/mainwindows/application/images/open.png, examples/mainwindows/application/images/paste.png, examples/mainwindows/application/images/save.png, examples/mainwindows/dockwidgets/dockwidgets.py, examples/mainwindows/dockwidgets/dockwidgets.qrc, examples/mainwindows/dockwidgets/dockwidgets_rc2.py, examples/mainwindows/dockwidgets/dockwidgets_rc3.py, examples/mainwindows/dockwidgets/images/new.png, examples/mainwindows/dockwidgets/images/print.png, examples/mainwindows/dockwidgets/images/save.png, examples/mainwindows/dockwidgets/images/undo.png, examples/mainwindows/mdi/images/copy.png, examples/mainwindows/mdi/images/cut.png, examples/mainwindows/mdi/images/new.png, examples/mainwindows/mdi/images/open.png, examples/mainwindows/mdi/images/paste.png, examples/mainwindows/mdi/images/save.png, examples/mainwindows/mdi/mdi.py, examples/mainwindows/mdi/mdi.qrc, examples/mainwindows/mdi/mdi_rc2.py, examples/mainwindows/mdi/mdi_rc3.py, examples/mainwindows/menus.py, examples/mainwindows/recentfiles.py, examples/mainwindows/sdi/images/copy.png, examples/mainwindows/sdi/images/cut.png, examples/mainwindows/sdi/images/new.png, examples/mainwindows/sdi/images/open.png, examples/mainwindows/sdi/images/paste.png, examples/mainwindows/sdi/images/save.png, examples/mainwindows/sdi/sdi.py, examples/mainwindows/sdi/sdi.qrc, examples/mainwindows/sdi/sdi_rc2.py, examples/mainwindows/sdi/sdi_rc3.py, examples/mainwindows/separations.py, examples/network/README, examples/network/blockingfortuneclient.py, examples/network/broadcastreceiver.py, examples/network/broadcastsender.py, examples/network/fortuneclient.py, examples/network/fortuneserver.py, examples/network/ftp/ftp.py, examples/network/ftp/ftp.qrc, examples/network/ftp/ftp_rc2.py, examples/network/ftp/ftp_rc3.py, examples/network/ftp/images/cdtoparent.png, examples/network/ftp/images/dir.png, examples/network/ftp/images/file.png, examples/network/http/authenticationdialog.ui, examples/network/http/http.py, examples/network/loopback.py, examples/network/threadedfortuneserver.py, examples/opengl/2dpainting.py, examples/opengl/README, examples/opengl/grabber.py, examples/opengl/hellogl.py, examples/opengl/overpainting.py, examples/opengl/samplebuffers.py, examples/opengl/textures/images/side1.png, examples/opengl/textures/images/side2.png, examples/opengl/textures/images/side3.png, examples/opengl/textures/images/side4.png, examples/opengl/textures/images/side5.png, examples/opengl/textures/images/side6.png, examples/opengl/textures/textures.py, examples/opengl/textures/textures.qrc, examples/opengl/textures/textures_rc2.py, examples/opengl/textures/textures_rc3.py, examples/painting/README, examples/painting/basicdrawing/basicdrawing.py, examples/painting/basicdrawing/basicdrawing.qrc, examples/painting/basicdrawing/basicdrawing_rc2.py, examples/painting/basicdrawing/basicdrawing_rc3.py, examples/painting/basicdrawing/images/brick.png, examples/painting/basicdrawing/images/qt-logo.png, examples/painting/concentriccircles.py, examples/painting/painterpaths.py, examples/painting/svgviewer/files/bubbles.svg, examples/painting/svgviewer/files/cubic.svg, examples/painting/svgviewer/files/spheres.svg, examples/painting/svgviewer/svgviewer.py, examples/painting/svgviewer/svgviewer.qrc, examples/painting/svgviewer/svgviewer_rc2.py, examples/painting/svgviewer/svgviewer_rc3.py, examples/painting/transformations.py, examples/phonon/README, examples/phonon/capabilities.py, examples/phonon/musicplayer.py, examples/pyuic/compile-on-the-fly.py, examples/pyuic/demo.ui, examples/pyuic/load_ui1.py, examples/pyuic/load_ui2.py, examples/richtext/README, examples/richtext/calendar.py, examples/richtext/orderform.py, examples/richtext/syntaxhighlighter.py, examples/richtext/textobject/files/heart.svg, examples/richtext/textobject/textobject.py, examples/script/README, examples/script/helloscript.py, examples/sql/README, examples/sql/cachedtable.py, examples/sql/connection.py, examples/sql/querymodel.py, examples/sql/relationaltablemodel.py, examples/sql/tablemodel.py, examples/threads/README, examples/threads/mandelbrot.py, examples/threads/semaphores.py, examples/threads/waitconditions.py, examples/tools/README, examples/tools/codecs/codecs.py, examples/tools/codecs/encodedfiles/iso-8859-1.txt, examples/tools/codecs/encodedfiles/iso-8859-15.txt, examples/tools/codecs/encodedfiles/utf-16.txt, examples/tools/codecs/encodedfiles/utf-16be.txt, examples/tools/codecs/encodedfiles/utf-16le.txt, examples/tools/codecs/encodedfiles/utf-8.txt, examples/tools/customcompleter/customcompleter.py, examples/tools/customcompleter/customcompleter.qrc, examples/tools/customcompleter/customcompleter_rc2.py, examples/tools/customcompleter/customcompleter_rc3.py, examples/tools/customcompleter/resources/wordlist.txt, examples/tools/i18n/i18n.py, examples/tools/i18n/i18n.qrc, examples/tools/i18n/i18n_rc2.py, examples/tools/i18n/i18n_rc3.py, examples/tools/i18n/translations/i18n_ar.qm, examples/tools/i18n/translations/i18n_ar.ts, examples/tools/i18n/translations/i18n_cs.qm, examples/tools/i18n/translations/i18n_cs.ts, examples/tools/i18n/translations/i18n_de.qm, examples/tools/i18n/translations/i18n_de.ts, examples/tools/i18n/translations/i18n_el.qm, examples/tools/i18n/translations/i18n_el.ts, examples/tools/i18n/translations/i18n_en.qm, examples/tools/i18n/translations/i18n_en.ts, examples/tools/i18n/translations/i18n_eo.qm, examples/tools/i18n/translations/i18n_eo.ts, examples/tools/i18n/translations/i18n_fr.qm, examples/tools/i18n/translations/i18n_fr.ts, examples/tools/i18n/translations/i18n_it.qm, examples/tools/i18n/translations/i18n_it.ts, examples/tools/i18n/translations/i18n_jp.qm, examples/tools/i18n/translations/i18n_jp.ts, examples/tools/i18n/translations/i18n_ko.qm, examples/tools/i18n/translations/i18n_ko.ts, examples/tools/i18n/translations/i18n_no.qm, examples/tools/i18n/translations/i18n_no.ts, examples/tools/i18n/translations/i18n_pt.qm, examples/tools/i18n/translations/i18n_pt.ts, examples/tools/i18n/translations/i18n_ru.qm, examples/tools/i18n/translations/i18n_ru.ts, examples/tools/i18n/translations/i18n_sv.qm, examples/tools/i18n/translations/i18n_sv.ts, examples/tools/i18n/translations/i18n_zh.qm, examples/tools/i18n/translations/i18n_zh.ts, examples/tools/regexp.py, examples/tools/settingseditor/inifiles/licensepage.ini, examples/tools/settingseditor/inifiles/qsa.ini, examples/tools/settingseditor/settingseditor.py, examples/tutorials/addressbook/README, examples/tutorials/addressbook/part1.py, examples/tutorials/addressbook/part2.py, examples/tutorials/addressbook/part3.py, examples/tutorials/addressbook/part4.py, examples/tutorials/addressbook/part5.py, examples/tutorials/addressbook/part6.py, examples/tutorials/addressbook/part7.py, examples/webkit/domtraversal/domtraversal.py, examples/webkit/domtraversal/ui_window.py, examples/webkit/domtraversal/window.ui, examples/webkit/fancybrowser/fancybrowser.py, examples/webkit/fancybrowser/jquery.min.js, examples/webkit/fancybrowser/jquery.qrc, examples/webkit/fancybrowser/jquery_rc2.py, examples/webkit/fancybrowser/jquery_rc3.py, examples/webkit/formextractor/form.html, examples/webkit/formextractor/formextractor.py, examples/webkit/formextractor/formextractor.qrc, examples/webkit/formextractor/formextractor.ui, examples/webkit/formextractor/formextractor_rc2.py, examples/webkit/formextractor/formextractor_rc3.py, examples/webkit/formextractor/ui_formextractor.py, examples/webkit/framecapture.py, examples/webkit/googlechat/form.ui, examples/webkit/googlechat/googlechat.py, examples/webkit/googlechat/ui_form.py, examples/webkit/previewer/previewer.py, examples/webkit/previewer/previewer.ui, examples/webkit/previewer/ui_previewer.py, examples/webkit/simpleselector/simpleselector.py, examples/webkit/simpleselector/ui_window.py, examples/webkit/simpleselector/window.ui, examples/widgets/README, examples/widgets/analogclock.py, examples/widgets/calculator.py, examples/widgets/calendarwidget.py, examples/widgets/charactermap.py, examples/widgets/digitalclock.py, examples/widgets/groupbox.py, examples/widgets/icons/icons.py, examples/widgets/icons/images/designer.png, examples/widgets/icons/images/find_disabled.png, examples/widgets/icons/images/find_normal.png, examples/widgets/icons/images/monkey_off_128x128.png, examples/widgets/icons/images/monkey_off_16x16.png, examples/widgets/icons/images/monkey_off_32x32.png, examples/widgets/icons/images/monkey_off_64x64.png, examples/widgets/icons/images/monkey_on_128x128.png, examples/widgets/icons/images/monkey_on_16x16.png, examples/widgets/icons/images/monkey_on_32x32.png, examples/widgets/icons/images/monkey_on_64x64.png, examples/widgets/icons/images/qt_extended_16x16.png, examples/widgets/icons/images/qt_extended_32x32.png, examples/widgets/icons/images/qt_extended_48x48.png, examples/widgets/imageviewer.py, examples/widgets/lineedits.py, examples/widgets/movie/animation.mng, examples/widgets/movie/movie.py, examples/widgets/scribble.py, examples/widgets/shapedclock.py, examples/widgets/sliders.py, examples/widgets/spinboxes.py, examples/widgets/styles.py, examples/widgets/stylesheet/images/checkbox_checked.png, examples/widgets/stylesheet/images/checkbox_checked_hover.png, examples/widgets/stylesheet/images/checkbox_checked_pressed.png, examples/widgets/stylesheet/images/checkbox_unchecked.png, examples/widgets/stylesheet/images/checkbox_unchecked_hover.png, examples/widgets/stylesheet/images/checkbox_unchecked_pressed.png, examples/widgets/stylesheet/images/down_arrow.png, examples/widgets/stylesheet/images/down_arrow_disabled.png, examples/widgets/stylesheet/images/frame.png, examples/widgets/stylesheet/images/pagefold.png, examples/widgets/stylesheet/images/pushbutton.png, examples/widgets/stylesheet/images/pushbutton_hover.png, examples/widgets/stylesheet/images/pushbutton_pressed.png, examples/widgets/stylesheet/images/radiobutton_checked.png, examples/widgets/stylesheet/images/radiobutton_checked_hover.png, examples/widgets/stylesheet/images/radiobutton_checked_pressed.png, examples/widgets/stylesheet/images/radiobutton_unchecked.png, examples/widgets/stylesheet/images/radiobutton_unchecked_hover.png, e xamples/widgets/stylesheet/images/radiobutton_unchecked_pressed.png, examples/widgets/stylesheet/images/sizegrip.png, examples/widgets/stylesheet/images/spindown.png, examples/widgets/stylesheet/images/spindown_hover.png, examples/widgets/stylesheet/images/spindown_off.png, examples/widgets/stylesheet/images/spindown_pressed.png, examples/widgets/stylesheet/images/spinup.png, examples/widgets/stylesheet/images/spinup_hover.png, examples/widgets/stylesheet/images/spinup_off.png, examples/widgets/stylesheet/images/spinup_pressed.png, examples/widgets/stylesheet/images/up_arrow.png, examples/widgets/stylesheet/images/up_arrow_disabled.png, examples/widgets/stylesheet/mainwindow.ui, examples/widgets/stylesheet/qss/coffee.qss, examples/widgets/stylesheet/qss/default.qss, examples/widgets/stylesheet/qss/pagefold.qss, examples/widgets/stylesheet/stylesheet.py, examples/widgets/stylesheet/stylesheet.qrc, examples/widgets/stylesheet/stylesheet_rc2.py, examples/widgets/stylesheet/stylesheet_rc3.py, examples/widgets/stylesheet/stylesheeteditor.py, examples/widgets/stylesheet/stylesheeteditor.ui, examples/widgets/stylesheet/ui_mainwindow.py, examples/widgets/stylesheet/ui_stylesheeteditor.py, examples/widgets/tetrix.py, examples/widgets/tooltips/images/circle.png, examples/widgets/tooltips/images/square.png, examples/widgets/tooltips/images/triangle.png, examples/widgets/tooltips/tooltips.py, examples/widgets/tooltips/tooltips.qrc, examples/widgets/tooltips/tooltips_rc2.py, examples/widgets/tooltips/tooltips_rc3.py, examples/widgets/wiggly.py, examples/widgets/windowflags.py, examples/xml/README, examples/xml/dombookmarks/dombookmarks.py, examples/xml/dombookmarks/frank.xbel, examples/xml/dombookmarks/jennifer.xbel, examples/xml/saxbookmarks/frank.xbel, examples/xml/saxbookmarks/jennifer.xbel, examples/xml/saxbookmarks/saxbookmarks.py, examples/xmlpatterns/README, examples/xmlpatterns/schema/files/contact.xsd, examples/xmlpatterns/schema/files/invalid_contact.xml, examples/xmlpatterns/schema/files/invalid_order.xml, examples/xmlpatterns/schema/files/invalid_recipe.xml, examples/xmlpatterns/schema/files/order.xsd, examples/xmlpatterns/schema/files/recipe.xsd, examples/xmlpatterns/schema/files/valid_contact.xml, examples/xmlpatterns/schema/files/valid_order.xml, examples/xmlpatterns/schema/files/valid_recipe.xml, examples/xmlpatterns/schema/schema.py, examples/xmlpatterns/schema/schema.qrc, examples/xmlpatterns/schema/schema.ui, examples/xmlpatterns/schema/schema_rc2.py, examples/xmlpatterns/schema/schema_rc3.py, examples/xmlpatterns/schema/ui_schema.py, installers/AddToPath.nsh, installers/BuildGPL.txt, installers/PyQt5-Qt5-gpl.nsi, installers/StrSlash.nsh, installers/mysql-config.bat, installers /psql-config.bat, installers/pyqt-check.py, installers/pyqt- config.bat, installers/qsci-config.bat, installers/qt5-config.bat, installers/sip-config.bat, lib/LICENSE.commercial, lib/LICENSE.commercial.short, lib/LICENSE.gpl, lib/LICENSE.gpl.short, lib/LICENSE.internal, lib/QMetaObjectFormats.txt, lib/README, lib/SubclassCode/QtGuiQt4.versions, lib/SubclassCode/QtNetwork.versions, lib/SubclassCode/mksccode.py, lib/UpdatingArgumentNames.txt, lib/__init__.py, lib/configure.py, lib/license.py.commercial, lib/license.py.internal, lib/pyqt- gpl.sip, lib/pyqt-internal.sip, pylupdate/fetchtr.cpp, pylupdate/main.cpp, pylupdate/merge.cpp, pylupdate/metatranslator.cpp, pylupdate/metatranslator.h, pylupdate/numberh.cpp, pylupdate/proparser.cpp, pylupdate/proparser.h, pylupdate/sametexth.cpp, pylupdate/simtexth.cpp, pylupdate/simtexth.h, pylupdate/translator.cpp, pylupdate/translator.h, pyrcc/main.cpp, pyrcc/rcc.cpp, pyrcc/rcc.h, pyuic/uic/Compiler/__init__.py, pyuic/uic/Compiler/compiler.py, pyuic/uic/Compiler/indenter.py, pyuic/uic/Compiler/misc.py, pyuic/uic/Compiler/proxy_metaclass.py, pyuic/uic/Compiler/qobjectcreator.py, pyuic/uic/Compiler/qtproxies.py, pyuic/uic/Loader/__init__.py, pyuic/uic/Loader/loader.py, pyuic/uic/Loader/qobjectcreator.py, pyuic/uic/__init__.py, pyuic/uic/driver.py, pyuic/uic/exceptions.py, pyuic/uic/icon_cache.py, pyuic/uic/objcreator.py, pyuic/uic/port_v2/__init__.py, pyuic/uic/port_v2/as_string.py, pyuic/uic/port_v2/ascii_upper.py, pyuic/uic/port_v2/invoke.py, pyuic/uic/port_v2/load_plugin.py, pyuic/uic/port_v2/proxy_base.py, pyuic/uic/port_v2/string_io.py, pyuic/uic/port_v3/__init__.py, pyuic/uic/port_v3/as_string.py, pyuic/uic/port_v3/ascii_upper.py, pyuic/uic/port_v3/invoke.py, pyuic/uic/port_v3/load_plugin.py, pyuic/uic/port_v3/proxy_base.py, pyuic/uic/port_v3/string_io.py, pyuic/uic/properties.py, pyuic/uic/pyuic.py, pyuic/uic/uiparser.py, pyuic/uic/widget-plugins/phonon.py, pyuic/uic/widget- plugins/qaxcontainer.py, pyuic/uic/widget-plugins/qscintilla.py, pyuic/uic/widget-plugins/qtdeclarative.py, pyuic/uic/widget- plugins/qtwebkit.py, qpy/QtCore/qpycore.pro, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_chimera_signature.cpp, qpy/QtCore/qpycore_chimera_storage.cpp, qpy/QtCore/qpycore_classinfo.cpp, qpy/QtCore/qpycore_classinfo.h, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_misc.cpp, qpy/QtCore/qpycore_misc.h, qpy/QtCore/qpycore_namespace.h, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtboundsignal.h, qpy/QtCore/qpycore_pyqtconfigure.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.h, qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtCore/qpycore_pyqtproperty.h, qpy/QtCore/qpycore_pyqtproxy.cpp, qpy/QtCore/qpycore_pyqtproxy.h, qpy/QtCore/qpycore_pyqtpyobject.cpp, qpy/QtCore/qpycore_pyqtpyobject.h, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.h, qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_qabstracteventdispatcher.cpp, qpy/QtCore/qpycore_qmetaobject.cpp, qpy/QtCore/qpycore_qmetaobject_helpers.cpp, qpy/QtCore/qpycore_qmetaobjectbuilder.h, qpy/QtCore/qpycore_qobject_getattr.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qobject_helpers.h, qpy/QtCore/qpycore_qpynullvariant.cpp, qpy/QtCore/qpycore_qpynullvariant.h, qpy/QtCore/qpycore_qstring.cpp, qpy/QtCore/qpycore_qstringlist.cpp, qpy/QtCore/qpycore_qvariant.cpp, qpy/QtCore/qpycore_qvariant_value.cpp, qpy/QtCore/qpycore_shared.h, qpy/QtCore/qpycore_sip.h, qpy/QtCore/qpycore_sip_helpers.cpp, qpy/QtCore/qpycore_sip_helpers.h, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qpycore_types.h, qpy/QtCore/qpynullvariant.sip, qpy/QtCore/qwineventnotifier.sip, qpy/QtDBus/qpydbus.pro, qpy/QtDBus/qpydbus_api.h, qpy/QtDBus/qpydbus_chimera_helpers.cpp, qpy/QtDBus/qpydbus_chimera_helpers.h, qpy/QtDBus/qpydbus_post_init.cpp, qpy/QtDBus/qpydbuspendingreply.cpp, qpy/QtDBus/qpydbuspendingreply.h, qpy/QtDBus/qpydbuspendingreply.sip, qpy/QtDBus/qpydbusreply.cpp, qpy/QtDBus/qpydbusreply.h, qpy/QtDBus/qpydbusreply.sip, qpy/QtDeclarative/qpydeclarative.pro, qpy/QtDeclarative/qpydeclarative_api.h, qpy/QtDeclarative/qpydeclarative_chimera_helpers.cpp, qpy/QtDeclarative/qpydeclarative_chimera_helpers.h, qpy/QtDeclarative/qpydeclarative_listwrapper.cpp, qpy/QtDeclarative/qpydeclarative_listwrapper.h, qpy/QtDeclarative/qpydeclarative_post_init.cpp, qpy/QtDeclarative/qpydeclarativelistproperty.cpp, qpy/QtDeclarative/qpydeclarativelistproperty.h, qpy/QtDeclarative/qpydeclarativelistproperty.sip, qpy/QtDeclarative/qpydeclarativepropertyvaluesource.h, qpy/QtDeclarative/qpydeclarativepropertyvaluesource.sip, qpy/QtDesigner/qpydesigner.pro, qpy/QtDesigner/qpydesignercontainerextension.h, qpy/QtDesigner/qpydesignercontainerextension.sip, qpy/QtDesigner/qpydesignercustomwidgetcollectionplugin.h, qpy/QtDesigner/qpydesignercustomwidgetcollectionplugin.sip, qpy/QtDesigner/qpydesignercustomwidgetplugin.h, qpy/QtDesigner/qpydesignercustomwidgetplugin.sip, qpy/QtDesigner/qpydesignermembersheetextension.h, qpy/QtDesigner/qpydesignermembersheetextension.sip, qpy/QtDesigner/qpydesignerpropertysheetextension.h, qpy/QtDesigner/qpydesignerpropertysheetextension.sip, qpy/QtDesigner/qpydesignertaskmenuextension.h, qpy/QtDesigner/qpydesignertaskmenuextension.sip, qpy/QtGui/qpygui.pro, qpy/QtGui/qpytextobject.h, qpy/QtGui/qpytextobject.sip, qpy/QtOpenGL/opengl_types.sip, qpy/QtOpenGL/qpyopengl.pro, qpy/QtOpenGL/qpyopengl_api.h, qpy/QtOpenGL/qpyopengl_attribute_array.cpp, qpy/QtOpenGL/qpyopengl_uniform_value_array.cpp, sphinx/buffer_interface.rst, sphinx/build_system.rst, sphinx/conf.py, sphinx/dbus.rst, sphinx/deploy_commercial.rst, sphinx/designer.rst, sphinx/gotchas.rst, sphinx/i18n.rst, sphinx/incompatibilities.rst, sphinx/incompatible_apis.rst, sphinx/index.rst, sphinx/installation.rst, sphinx/introduction.rst, sphinx/keyword_arguments.rst, sphinx/new_style_signals_slots.rst, sphinx/old_style_signals_slots.rst, sphinx/pickle.rst, sphinx/pyqt_qsettings.rst, sphinx/pyqt_qvariant.rst, sphinx/python_shell.rst, sphinx/python_v3.rst, sphinx/qml.rst, sphinx/qt_properties.rst, sphinx/qt_v5.rst, sphinx/resources.rst, sphinx/static/default.css, sphinx/static/logo.png, sphinx/static/logo_tn.ico, sphinx/webkit.rst, test/dbus/test_multibus.py, test/runtests.py, test/tests/__init__.py, test/tests/classes/__init__.py, test/tests/classes/test_QObject.py, test/tests/classes/test_QSettings.py, test/tests/classes/test_QStringList.py, test/tests/classes/test_QVariant.py, test/tests/metaobject/__init__.py, test/tests/metaobject/test_connections.py, test/tests/metaobject/test_connections_old_style.py, test/tests/metaobject/test_connectslotsbyname.py, test/tests/metaobject/test_destroyed.py, test/tests/metaobject/test_gc_slots.py, test/tests/metaobject/test_invoke.py, test/tests/metaobject/test_pyqtproperty.py, test/tests/metaobject/test_pyqtsignal.py, test/tests/metaobject/test_pyqtsignature.py, test/tests/metaobject/test_pyqtslot.py, test/tests/metaobject/test_qvariantmap.py, test/tests/metaobject/test_sender.py, test/tests/metaobject/test_signal.py, test/tests/misc/__init__.py, test/tests/misc/test_pickle.py, test/tests/misc/test_repr.py, test/tests/pyuic/QMainWindow/MainWindow00.ui, test/tests/pyuic/QToolBox/ToolBox00.ui, test/tests/pyuic/QToolBox/ToolBox01.ui, test/tests/pyuic/QWidget/Widget00.ui, test/tests/pyuic/QWidget/Widget01.ui, test/tests/pyuic/QWidget/Widget02.ui, test/tests/pyuic/QWidget/Widget03.ui, test/tests/pyuic/QWidget/Widget04.ui, test/tests/pyuic/QWidget/Widget05.ui, test/tests/pyuic/__init__.py, test/tests/pyuic/test_pyuic.py, test/v2_unicode.py, test/v3_unicode.py: Initial import of PyQt5 based on a stripped down PyQt4. [b135a1e082d2] PyQt5_gpl-5.10.1/config-tests/0000755000076500000240000000000013245231431016104 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/config-tests/cfgtest_QtCore.cpp0000644000076500000240000000215013245231431021522 0ustar philstaff00000000000000#include #include #include #include #include int main(int argc, char **argv) { QCoreApplication app(argc, argv); QFile outf(argv[1]); if (!outf.open(QIODevice::WriteOnly|QIODevice::Truncate|QIODevice::Text)) return 1; QTextStream out(&outf); // This allows the version of sip.h to be checked against the code // generator. out << SIP_VERSION_STR << '\n'; // This is not a feature and needs to be handled separately. #if defined(QT_SHARED) || defined(QT_DLL) out << "shared\n"; #else out << "static\n"; #endif // Determine which features should be disabled. #if defined(QT_NO_PROCESS) out << "PyQt_Process\n"; #endif #if QT_VERSION < 0x050200 // This is the test used in qglobal.h in Qt prior to v5.2. In v5.2 and later // qreal is double unless QT_COORD_TYPE is defined. #if defined(QT_NO_FPU) || defined(Q_PROCESSOR_ARM) || defined(Q_OS_WINCE) out << "PyQt_qreal_double\n"; #endif #else if (sizeof (qreal) != sizeof (double)) out << "PyQt_qreal_double\n"; #endif return 0; } PyQt5_gpl-5.10.1/config-tests/cfgtest_QtGui.cpp0000644000076500000240000000156113245231431021363 0ustar philstaff00000000000000#include #include #include #include #include int main(int argc, char **argv) { QCoreApplication app(argc, argv); QFile outf(argv[1]); if (!outf.open(QIODevice::WriteOnly|QIODevice::Truncate|QIODevice::Text)) return 1; QTextStream out(&outf); // The link test. new QFont(); // Determine which features should be disabled. #if defined(QT_NO_ACCESSIBILITY) out << "PyQt_Accessibility\n"; #endif #if defined(QT_NO_OPENGL) out << "PyQt_OpenGL\n"; out << "PyQt_Desktop_OpenGL\n"; #elif defined(QT_OPENGL_ES) || defined(QT_OPENGL_ES_2) || defined(QT_OPENGL_ES_3) out << "PyQt_Desktop_OpenGL\n"; #endif #if defined(QT_NO_RAWFONT) out << "PyQt_RawFont\n"; #endif #if defined(QT_NO_SESSIONMANAGER) out << "PyQt_SessionManager\n"; #endif return 0; } PyQt5_gpl-5.10.1/config-tests/cfgtest_QtNetwork.cpp0000644000076500000240000000100513245231431022261 0ustar philstaff00000000000000#include #include #include #include #include int main(int argc, char **argv) { QCoreApplication app(argc, argv); QFile outf(argv[1]); if (!outf.open(QIODevice::WriteOnly|QIODevice::Truncate|QIODevice::Text)) return 1; QTextStream out(&outf); // The link test. new QHostAddress(); // Determine which features should be disabled. #if defined(QT_NO_SSL) out << "PyQt_SSL\n"; #endif return 0; } PyQt5_gpl-5.10.1/config-tests/cfgtest_QtPrintSupport.cpp0000644000076500000240000000137113245231431023327 0ustar philstaff00000000000000#include #include #include #include #include int main(int argc, char **argv) { QCoreApplication app(argc, argv); QFile outf(argv[1]); if (!outf.open(QIODevice::WriteOnly|QIODevice::Truncate|QIODevice::Text)) return 1; QTextStream out(&outf); // The link test. new QPrinter(); // Determine which features should be disabled. #if defined(QT_NO_PRINTDIALOG) out << "PyQt_PrintDialog\n"; #endif #if defined(QT_NO_PRINTER) out << "PyQt_Printer\n"; #endif #if defined(QT_NO_PRINTPREVIEWDIALOG) out << "PyQt_PrintPreviewDialog\n"; #endif #if defined(QT_NO_PRINTPREVIEWWIDGET) out << "PyQt_PrintPreviewWidget\n"; #endif return 0; } PyQt5_gpl-5.10.1/configure.py0000644000076500000240000032606713245233136016054 0ustar philstaff00000000000000# This script generates the Makefiles for building PyQt5. # # Copyright (c) 2018 Riverbank Computing Limited # # This file is part of PyQt5. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. from distutils import sysconfig import glob import optparse import os import shutil import stat import sys # Initialise the constants. PYQT_VERSION_STR = "5.10.1" SIP_MIN_VERSION = '4.19.4' class ModuleMetadata: """ This class encapsulates the meta-data about a PyQt5 module. """ def __init__(self, qmake_QT=None, qmake_TARGET='', qpy_lib=False, cpp11=False, public=True): """ Initialise the meta-data. """ # The values to update qmake's QT variable. self.qmake_QT = [] if qmake_QT is None else qmake_QT # The value to set qmake's TARGET variable to. It defaults to the name # of the module. self.qmake_TARGET = qmake_TARGET # Set if there is a qpy support library. self.qpy_lib = qpy_lib # Set if C++11 support is required. self.cpp11 = cpp11 # Set if the module is public. self.public = public # The module meta-data. MODULE_METADATA = { 'dbus': ModuleMetadata(qmake_QT=['-gui'], qmake_TARGET='pyqt5'), 'QAxContainer': ModuleMetadata(qmake_QT=['axcontainer']), 'Qt': ModuleMetadata(qmake_QT=['-core', '-gui']), 'QtAndroidExtras': ModuleMetadata(qmake_QT=['androidextras']), 'QtBluetooth': ModuleMetadata(qmake_QT=['bluetooth']), 'QtCore': ModuleMetadata(qmake_QT=['-gui'], qpy_lib=True), 'QtDBus': ModuleMetadata(qmake_QT=['dbus', '-gui'], qpy_lib=True), 'QtDesigner': ModuleMetadata(qmake_QT=['designer'], qpy_lib=True), 'Enginio': ModuleMetadata(qmake_QT=['enginio']), 'QtGui': ModuleMetadata(qpy_lib=True), 'QtHelp': ModuleMetadata(qmake_QT=['help']), 'QtLocation': ModuleMetadata(qmake_QT=['location']), 'QtMacExtras': ModuleMetadata(qmake_QT=['macextras']), 'QtMultimedia': ModuleMetadata(qmake_QT=['multimedia']), 'QtMultimediaWidgets': ModuleMetadata( qmake_QT=['multimediawidgets', 'multimedia']), 'QtNetwork': ModuleMetadata(qmake_QT=['network', '-gui']), 'QtNetworkAuth': ModuleMetadata( qmake_QT=['network', 'networkauth', '-gui'], cpp11=True), 'QtNfc': ModuleMetadata(qmake_QT=['nfc', '-gui']), 'QtOpenGL': ModuleMetadata(qmake_QT=['opengl']), 'QtPositioning': ModuleMetadata(qmake_QT=['positioning']), 'QtPrintSupport': ModuleMetadata(qmake_QT=['printsupport']), 'QtQml': ModuleMetadata(qmake_QT=['qml'], qpy_lib=True), 'QtQuick': ModuleMetadata(qmake_QT=['quick'], qpy_lib=True), 'QtQuickWidgets': ModuleMetadata(qmake_QT=['quickwidgets']), 'QtSensors': ModuleMetadata(qmake_QT=['sensors']), 'QtSerialPort': ModuleMetadata(qmake_QT=['serialport']), 'QtSql': ModuleMetadata(qmake_QT=['sql', 'widgets']), 'QtSvg': ModuleMetadata(qmake_QT=['svg']), 'QtTest': ModuleMetadata(qmake_QT=['testlib', 'widgets']), 'QtWebChannel': ModuleMetadata( qmake_QT=['webchannel', 'network', '-gui']), 'QtWebEngine': ModuleMetadata(qmake_QT=['webengine', '-gui']), 'QtWebEngineCore': ModuleMetadata(qmake_QT=['webenginecore', '-gui']), 'QtWebEngineWidgets': ModuleMetadata( qmake_QT=['webenginewidgets', 'webchannel', 'network', 'widgets'], cpp11=True), 'QtWebKit': ModuleMetadata(qmake_QT=['webkit', 'network']), 'QtWebKitWidgets': ModuleMetadata( qmake_QT=['webkitwidgets', 'printsupport']), 'QtWebSockets': ModuleMetadata(qmake_QT=['websockets', '-gui']), 'QtWidgets': ModuleMetadata(qmake_QT=['widgets'], qpy_lib=True), 'QtWinExtras': ModuleMetadata(qmake_QT=['winextras', 'widgets']), 'QtX11Extras': ModuleMetadata(qmake_QT=['x11extras']), 'QtXml': ModuleMetadata(qmake_QT=['xml', '-gui']), 'QtXmlPatterns': ModuleMetadata( qmake_QT=['xmlpatterns', '-gui', 'network']), # The OpenGL wrappers. '_QOpenGLFunctions_1_0': ModuleMetadata(public=False), '_QOpenGLFunctions_1_1': ModuleMetadata(public=False), '_QOpenGLFunctions_1_2': ModuleMetadata(public=False), '_QOpenGLFunctions_1_3': ModuleMetadata(public=False), '_QOpenGLFunctions_1_4': ModuleMetadata(public=False), '_QOpenGLFunctions_1_5': ModuleMetadata(public=False), '_QOpenGLFunctions_2_0': ModuleMetadata(public=False), '_QOpenGLFunctions_2_1': ModuleMetadata(public=False), '_QOpenGLFunctions_3_0': ModuleMetadata(public=False), '_QOpenGLFunctions_3_1': ModuleMetadata(public=False), '_QOpenGLFunctions_3_2_Compatibility': ModuleMetadata(public=False), '_QOpenGLFunctions_3_2_Core': ModuleMetadata(public=False), '_QOpenGLFunctions_3_3_Compatibility': ModuleMetadata(public=False), '_QOpenGLFunctions_3_3_Core': ModuleMetadata(public=False), '_QOpenGLFunctions_4_0_Compatibility': ModuleMetadata(public=False), '_QOpenGLFunctions_4_0_Core': ModuleMetadata(public=False), '_QOpenGLFunctions_4_1_Compatibility': ModuleMetadata(public=False), '_QOpenGLFunctions_4_1_Core': ModuleMetadata(public=False), '_QOpenGLFunctions_4_2_Compatibility': ModuleMetadata(public=False), '_QOpenGLFunctions_4_2_Core': ModuleMetadata(public=False), '_QOpenGLFunctions_4_3_Compatibility': ModuleMetadata(public=False), '_QOpenGLFunctions_4_3_Core': ModuleMetadata(public=False), '_QOpenGLFunctions_4_4_Compatibility': ModuleMetadata(public=False), '_QOpenGLFunctions_4_4_Core': ModuleMetadata(public=False), '_QOpenGLFunctions_4_5_Compatibility': ModuleMetadata(public=False), '_QOpenGLFunctions_4_5_Core': ModuleMetadata(public=False), '_QOpenGLFunctions_ES2': ModuleMetadata(public=False), # Internal modules. 'pylupdate': ModuleMetadata(qmake_QT=['xml', '-gui'], qpy_lib=True, public=False), 'pyrcc': ModuleMetadata(qmake_QT=['xml', '-gui'], qpy_lib=True, public=False), } # The component modules that make up the composite Qt module. SIP is broken in # its handling of composite module in that a component module must be %Included # before it is first %Imported. In other words, a module must appear before # any modules that depend on it. COMPOSITE_COMPONENTS = ( 'QtCore', 'QtAndroidExtras', 'QtDBus', 'QtGui', 'QtNetwork', 'QtNetworkAuth', 'QtSensors', 'QtSerialPort', 'QtMultimedia', 'QtQml', 'QtWebKit', 'QtWidgets', 'QtXml', 'QtXmlPatterns', 'QtAxContainer', 'QtDesigner', 'QtHelp', 'QtMultimediaWidgets', 'QtOpenGL', 'QtPrintSupport', 'QtQuick', 'QtSql', 'QtSvg', 'QtTest', 'QtWebKitWidgets', 'QtBluetooth', 'QtMacExtras', 'QtPositioning', 'QtWinExtras', 'QtX11Extras', 'QtQuickWidgets', 'QtWebSockets', 'Enginio', 'QtWebChannel', 'QtWebEngineCore', 'QtWebEngineWidgets', 'QtWebEngine', 'QtLocation', 'QtNfc' ) def error(msg): """ Display an error message and terminate. msg is the text of the error message. """ sys.stderr.write(format("Error: " + msg) + "\n") sys.exit(1) def inform(msg): """ Display an information message. msg is the text of the error message. """ sys.stdout.write(format(msg) + "\n") def format(msg, left_margin=0, right_margin=78): """ Format a message by inserting line breaks at appropriate places. msg is the text of the message. left_margin is the position of the left margin. right_margin is the position of the right margin. Returns the formatted message. """ curs = left_margin fmsg = " " * left_margin for w in msg.split(): l = len(w) if curs != left_margin and curs + l > right_margin: fmsg = fmsg + "\n" + (" " * left_margin) curs = left_margin if curs > left_margin: fmsg = fmsg + " " curs = curs + 1 fmsg = fmsg + w curs = curs + l return fmsg def version_to_sip_tag(version): """ Convert a version number to a SIP tag. version is the version number. """ # Anything after Qt v5 is assumed to be Qt v6.0. if version > 0x060000: version = 0x060000 major = (version >> 16) & 0xff minor = (version >> 8) & 0xff patch = version & 0xff return 'Qt_%d_%d_%d' % (major, minor, patch) def version_to_string(version, parts=3): """ Convert an n-part version number encoded as a hexadecimal value to a string. version is the version number. Returns the string. """ part_list = [str((version >> 16) & 0xff)] if parts > 1: part_list.append(str((version >> 8) & 0xff)) if parts > 2: part_list.append(str(version & 0xff)) return '.'.join(part_list) class ConfigurationFileParser: """ A parser for configuration files. """ def __init__(self, config_file): """ Read and parse a configuration file. """ self._config = {} self._extrapolating = [] cfg = open(config_file) line_nr = 0 last_name = None section = '' section_config = {} self._config[section] = section_config for l in cfg: line_nr += 1 # Strip comments. l = l.split('#')[0] # See if this might be part of a multi-line. multiline = (last_name is not None and len(l) != 0 and l[0] == ' ') l = l.strip() if l == '': last_name = None continue # See if this is a new section. if l[0] == '[' and l[-1] == ']': section = l[1:-1].strip() if section == '': error( "%s:%d: Empty section name." % ( config_file, line_nr)) if section in self._config: error( "%s:%d: Section '%s' defined more than once." % ( config_file, line_nr, section)) section_config = {} self._config[section] = section_config last_name = None continue parts = l.split('=', 1) if len(parts) == 2: name = parts[0].strip() value = parts[1].strip() elif multiline: name = last_name value = section_config[last_name] value += ' ' + l else: name = value = '' if name == '' or value == '': error("%s:%d: Invalid line." % (config_file, line_nr)) section_config[name] = value last_name = name cfg.close() def sections(self): """ Return the list of sections, excluding the default one. """ return [s for s in self._config.keys() if s != ''] def preset(self, name, value): """ Add a preset value to the configuration. """ self._config[''][name] = value def get(self, section, name, default=None): """ Get a configuration value while extrapolating. """ # Get the name from the section, or the default section. value = self._config[section].get(name) if value is None: value = self._config[''].get(name) if value is None: if default is None: error( "Configuration file references non-existent name " "'%s'." % name) return default # Handle any extrapolations. parts = value.split('%(', 1) while len(parts) == 2: prefix, tail = parts parts = tail.split(')', 1) if len(parts) != 2: error( "Configuration file contains unterminated " "extrapolated name '%s'." % tail) xtra_name, suffix = parts if xtra_name in self._extrapolating: error( "Configuration file contains a recursive reference to " "'%s'." % xtra_name) self._extrapolating.append(xtra_name) xtra_value = self.get(section, xtra_name) self._extrapolating.pop() value = prefix + xtra_value + suffix parts = value.split('%(', 1) return value def getboolean(self, section, name, default): """ Get a boolean configuration value while extrapolating. """ value = self.get(section, name, default) # In case the default was returned. if isinstance(value, bool): return value if value in ('True', 'true', '1'): return True if value in ('False', 'false', '0'): return False error( "Configuration file contains invalid boolean value for " "'%s'." % name) def getlist(self, section, name, default): """ Get a list configuration value while extrapolating. """ value = self.get(section, name, default) # In case the default was returned. if isinstance(value, list): return value return value.split() class HostPythonConfiguration: """ A container for the host Python configuration. """ def __init__(self): """ Initialise the configuration. """ self.platform = sys.platform self.version = sys.hexversion >> 8 self.inc_dir = sysconfig.get_python_inc() self.venv_inc_dir = sysconfig.get_python_inc(prefix=sys.prefix) self.module_dir = sysconfig.get_python_lib(plat_specific=1) self.debug = hasattr(sys, 'gettotalrefcount') if sys.platform == 'win32': bin_dir = sys.exec_prefix try: # Python v3.3 and later. base_prefix = sys.base_prefix if sys.exec_prefix != sys.base_exec_prefix: bin_dir += '\\Scripts' except AttributeError: try: # virtualenv for Python v2. base_prefix = sys.real_prefix bin_dir += '\\Scripts' except AttributeError: # We can't detect the base prefix in Python v3 prior to # v3.3. base_prefix = sys.prefix self.bin_dir = bin_dir self.data_dir = sys.prefix self.lib_dir = base_prefix + '\\libs' else: self.bin_dir = sys.exec_prefix + '/bin' self.data_dir = sys.prefix + '/share' self.lib_dir = sys.prefix + '/lib' # The name of the interpreter used by the pyuic5 wrapper. if sys.platform == 'darwin': # The installation of MacOS's python is a mess that changes from # version to version and where sys.executable is useless. py_major = self.version >> 16 py_minor = (self.version >> 8) & 0xff # In Python v3.4 and later there is no pythonw. if (py_major == 3 and py_minor >= 4) or py_major >= 4: exe = "python" else: exe = "pythonw" self.pyuic_interpreter = '%s%d.%d' % (exe, py_major, py_minor) else: self.pyuic_interpreter = sys.executable class TargetQtConfiguration: """ A container for the target Qt configuration. """ def __init__(self, qmake): """ Initialise the configuration. qmake is the full pathname of the qmake executable that will provide the configuration. """ inform("Querying qmake about your Qt installation...") pipe = os.popen(' '.join([qmake, '-query'])) for l in pipe: l = l.strip() tokens = l.split(':', 1) if isinstance(tokens, list): if len(tokens) != 2: error("Unexpected output from qmake: '%s'\n" % l) name, value = tokens else: name = tokens value = None name = name.replace('/', '_') setattr(self, name, value) pipe.close() class TargetConfiguration: """ A container for configuration information about the target. """ def __init__(self): """ Initialise the configuration with default values. """ # Values based on the host Python configuration. py_config = HostPythonConfiguration() self.py_debug = py_config.debug self.py_inc_dir = py_config.inc_dir self.py_venv_inc_dir = py_config.venv_inc_dir self.py_lib_dir = py_config.lib_dir self.py_platform = py_config.platform self.py_version = py_config.version self.pyqt_bin_dir = py_config.bin_dir self.pyqt_module_dir = py_config.module_dir self.pyqt_stubs_dir = os.path.join(py_config.module_dir, 'PyQt5') self.pyqt_sip_dir = os.path.join(py_config.data_dir, 'sip', 'PyQt5') self.pyuic_interpreter = py_config.pyuic_interpreter # Remaining values. self.dbus_inc_dirs = [] self.dbus_lib_dirs = [] self.dbus_libs = [] self.debug = False self.designer_plugin_dir = '' self.license_dir = source_path('sip') self.link_full_dll = False self.no_designer_plugin = False self.no_docstrings = False self.no_pydbus = False self.no_qml_plugin = False self.no_tools = False self.prot_is_public = (self.py_platform.startswith('linux') or self.py_platform == 'darwin') self.qmake = self._find_exe('qmake') self.qmake_spec = '' self.qmake_spec_default = '' self.qmake_variables = [] self.qml_debug = False self.py_pylib_dir = '' self.py_pylib_lib = '' self.py_pyshlib = '' self.pydbus_inc_dir = '' self.pydbus_module_dir = '' self.pyqt_disabled_features = [] self.pyqt_modules = [] self.qml_plugin_dir = '' self.qsci_api = False self.qsci_api_dir = '' self.qtconf_prefix = '' self.qt_shared = False self.qt_version = 0 self.sip = self._find_exe('sip5', 'sip') self.sip_h_version = None self.sip_inc_dir = self.py_venv_inc_dir self.static = False self.sysroot = '' self.vend_enabled = False self.vend_inc_dir = '' self.vend_lib_dir = '' def from_configuration_file(self, config_file): """ Initialise the configuration with values from a file. config_file is the name of the configuration file. """ inform("Reading configuration from %s..." % config_file) parser = ConfigurationFileParser(config_file) # Populate some presets from the command line. version = version_to_string(self.py_version).split('.') parser.preset('py_major', version[0]) parser.preset('py_minor', version[1]) parser.preset('sysroot', self.sysroot) # Find the section corresponding to the version of Qt. qt_major = self.qt_version >> 16 section = None latest_section = -1 for name in parser.sections(): parts = name.split() if len(parts) != 2 or parts[0] != 'Qt': continue section_qt_version = version_from_string(parts[1]) if section_qt_version is None: continue # Major versions must match. if section_qt_version >> 16 != self.qt_version >> 16: continue # It must be no later that the version of Qt. if section_qt_version > self.qt_version: continue # Save it if it is the latest so far. if section_qt_version > latest_section: section = name latest_section = section_qt_version if section is None: error("%s does not define a section that covers Qt v%s." % (config_file, version_to_string(self.qt_version))) self.py_platform = parser.get(section, 'py_platform', self.py_platform) self.py_debug = parser.get(section, 'py_debug', self.py_debug) self.py_inc_dir = parser.get(section, 'py_inc_dir', self.py_inc_dir) self.py_venv_inc_dir = self.py_inc_dir self.py_pylib_dir = parser.get(section, 'py_pylib_dir', self.py_pylib_dir) self.py_pylib_lib = parser.get(section, 'py_pylib_lib', self.py_pylib_lib) self.py_pyshlib = parser.get(section, 'py_pyshlib', self.py_pyshlib) self.qt_shared = parser.getboolean(section, 'qt_shared', self.qt_shared) self.pyqt_disabled_features = parser.getlist(section, 'pyqt_disabled_features', self.pyqt_disabled_features) self.pyqt_modules = parser.getlist(section, 'pyqt_modules', self.pyqt_modules) self.pyqt_module_dir = parser.get(section, 'pyqt_module_dir', self.pyqt_module_dir) self.pyqt_bin_dir = parser.get(section, 'pyqt_bin_dir', self.pyqt_bin_dir) self.pyqt_stubs_dir = parser.get(section, 'pyqt_stubs_dir', self.pyqt_stubs_dir) self.pyqt_sip_dir = parser.get(section, 'pyqt_sip_dir', self.pyqt_sip_dir) self.pyuic_interpreter = parser.get(section, 'pyuic_interpreter', self.pyuic_interpreter) self.sip_inc_dir = self.py_venv_inc_dir def from_introspection(self, verbose, debug): """ Initialise the configuration by introspecting the system. """ # Get the details of the Python interpreter library. py_major = self.py_version >> 16 py_minor = (self.py_version >> 8) & 0x0ff if sys.platform == 'win32': debug_suffix = self.get_win32_debug_suffix() # See if we are using the limited API. limited = (py_major == 3 and py_minor >= 4) if self.py_debug or self.link_full_dll: limited = False if limited: pylib_lib = 'python%d%s' % (py_major, debug_suffix) else: pylib_lib = 'python%d%d%s' % (py_major, py_minor, debug_suffix) pylib_dir = self.py_lib_dir # Assume Python is a DLL on Windows. pyshlib = pylib_lib else: abi = getattr(sys, 'abiflags', '') pylib_lib = 'python%d.%d%s' % (py_major, py_minor, abi) pylib_dir = pyshlib = '' # Use distutils to get the additional configuration. ducfg = sysconfig.get_config_vars() config_args = ducfg.get('CONFIG_ARGS', '') dynamic_pylib = '--enable-shared' in config_args if not dynamic_pylib: dynamic_pylib = '--enable-framework' in config_args if dynamic_pylib: pyshlib = ducfg.get('LDLIBRARY', '') exec_prefix = ducfg['exec_prefix'] multiarch = ducfg.get('MULTIARCH', '') libdir = ducfg['LIBDIR'] if glob.glob('%s/lib/libpython%d.%d*' % (exec_prefix, py_major, py_minor)): pylib_dir = exec_prefix + '/lib' elif multiarch != '' and glob.glob('%s/lib/%s/libpython%d.%d*' % (exec_prefix, multiarch, py_major, py_minor)): pylib_dir = exec_prefix + '/lib/' + multiarch elif glob.glob('%s/libpython%d.%d*' % (libdir, py_major, py_minor)): pylib_dir = libdir self.py_pylib_dir = pylib_dir self.py_pylib_lib = pylib_lib self.py_pyshlib = pyshlib # Apply sysroot where necessary. if self.sysroot != '': self.py_inc_dir = self._apply_sysroot(self.py_inc_dir) self.py_venv_inc_dir = self._apply_sysroot(self.py_venv_inc_dir) self.py_pylib_dir = self._apply_sysroot(self.py_pylib_dir) self.pyqt_bin_dir = self._apply_sysroot(self.pyqt_bin_dir) self.pyqt_module_dir = self._apply_sysroot(self.pyqt_module_dir) self.pyqt_stubs_dir = self._apply_sysroot(self.pyqt_stubs_dir) self.pyqt_sip_dir = self._apply_sysroot(self.pyqt_sip_dir) inform("Determining the details of your Qt installation...") # Compile and run the QtCore test program. test = compile_test_program(self, verbose, 'QtCore', debug=debug, uses_sip_h=True) if test is None: error("Failed to determine the detail of your Qt installation. Try again using the --verbose flag to see more detail about the problem.") lines = run_test_program('QtCore', test, verbose) self.sip_h_version = lines[0] self.qt_shared = (lines[1] == 'shared') self.pyqt_disabled_features = lines[2:-1] if self.pyqt_disabled_features: inform("Disabled QtCore features: %s" % ', '.join( self.pyqt_disabled_features)) def _apply_sysroot(self, dir_name): """ Replace any leading sys.prefix of a directory name with sysroot. """ if dir_name.startswith(sys.prefix): dir_name = self.sysroot + dir_name[len(sys.prefix):] return dir_name def get_win32_debug_suffix(self): """ Return the debug-dependent suffix appended to the name of Windows libraries. """ return '_d' if self.py_debug else '' def get_qt_configuration(self): """ Get the Qt configuration that can be extracted from qmake. """ # Query qmake. qt_config = TargetQtConfiguration(self.qmake) self.qt_version = 0 try: qt_version_str = qt_config.QT_VERSION for v in qt_version_str.split('.'): self.qt_version *= 256 self.qt_version += int(v) except AttributeError: qt_version_str = "3" # Check the Qt version number as soon as possible. if self.qt_version < 0x050000: error( "PyQt5 requires Qt v5.0 or later. You seem to be using " "v%s. Use the --qmake flag to specify the correct version " "of qmake." % qt_version_str) self.designer_plugin_dir = qt_config.QT_INSTALL_PLUGINS + '/designer' self.qml_plugin_dir = qt_config.QT_INSTALL_PLUGINS + '/PyQt5' if self.sysroot == '': self.sysroot = qt_config.QT_SYSROOT # By default, install the API file if QScintilla seems to be installed # in the default location. self.qsci_api_dir = os.path.join(qt_config.QT_INSTALL_DATA, 'qsci') self.qsci_api = os.path.isdir(self.qsci_api_dir) # Save the default qmake spec. and finalise the value we want to use. self.qmake_spec_default = qt_config.QMAKE_SPEC # On Windows for Qt versions prior to v5.9.0 we need to be explicit # about the qmake spec. if self.qt_version < 0x050900 and self.py_platform == 'win32': if self.py_version >= 0x030500: self.qmake_spec = 'win32-msvc2015' elif self.py_version >= 0x030300: self.qmake_spec = 'win32-msvc2010' elif self.py_version >= 0x020600: self.qmake_spec = 'win32-msvc2008' elif self.py_version >= 0x020400: self.qmake_spec = 'win32-msvc.net' else: self.qmake_spec = 'win32-msvc' else: # Otherwise use the default. self.qmake_spec = self.qmake_spec_default # The binary OS/X Qt installer used to default to XCode. If so then # use macx-clang. if self.qmake_spec == 'macx-xcode': # This will exist (and we can't check anyway). self.qmake_spec = 'macx-clang' def post_configuration(self): """ Handle any remaining default configuration after having read a configuration file or introspected the system. """ # The platform may have changed so update the default. if self.py_platform.startswith('linux') or self.py_platform == 'darwin': self.prot_is_public = True self.vend_inc_dir = self.py_venv_inc_dir self.vend_lib_dir = self.py_lib_dir def apply_pre_options(self, opts): """ Apply options from the command line that influence subsequent configuration. opts are the command line options. """ # On Windows the interpreter must be a debug build if a debug version # is to be built and vice versa. if sys.platform == 'win32': if opts.debug: if not self.py_debug: error( "A debug version of Python must be used when " "--debug is specified.") elif self.py_debug: error( "--debug must be specified when a debug version of " "Python is used.") self.debug = opts.debug # Get the target Python version. if opts.target_py_version is not None: self.py_version = opts.target_py_version # Get the system root. if opts.sysroot is not None: self.sysroot = opts.sysroot # Determine how to run qmake. if opts.qmake is not None: self.qmake = opts.qmake # On Windows add the directory that probably contains the Qt DLLs # to PATH. if sys.platform == 'win32': path = os.environ['PATH'] path = os.path.dirname(self.qmake) + ';' + path os.environ['PATH'] = path if self.qmake is None: error( "Use the --qmake argument to explicitly specify a working " "Qt qmake.") if opts.qmakespec is not None: self.qmake_spec = opts.qmakespec if opts.sipincdir is not None: self.sip_inc_dir = opts.sipincdir def apply_post_options(self, opts): """ Apply options from the command line that override the previous configuration. opts are the command line options. """ self.pyqt_disabled_features.extend(opts.disabled_features) if opts.assumeshared: self.qt_shared = True if opts.bindir is not None: self.pyqt_bin_dir = opts.bindir if opts.licensedir is not None: self.license_dir = opts.licensedir if opts.link_full_dll: self.link_full_dll = True if opts.designerplugindir is not None: self.designer_plugin_dir = opts.designerplugindir if opts.qmlplugindir is not None: self.qml_plugin_dir = opts.qmlplugindir if opts.destdir is not None: self.pyqt_module_dir = opts.destdir if len(opts.modules) > 0: self.pyqt_modules = opts.modules if opts.nodesignerplugin: self.no_designer_plugin = True if opts.nodocstrings: self.no_docstrings = True if opts.nopydbus: self.no_pydbus = True if opts.noqmlplugin: self.no_qml_plugin = True if opts.notools: self.no_tools = True if opts.protispublic is not None: self.prot_is_public = opts.protispublic if opts.pydbusincdir is not None: self.pydbus_inc_dir = opts.pydbusincdir if opts.pyuicinterpreter is not None: self.pyuic_interpreter = opts.pyuicinterpreter if opts.qml_debug: self.qml_debug = True if opts.qsciapidir is not None: self.qsci_api_dir = opts.qsciapidir # Assume we want to install the API file if we have provided an # installation directory. self.qsci_api = True if opts.qsciapi is not None: self.qsci_api = opts.qsciapi if opts.qsciapidir is not None: self.qsci_api_dir = opts.qsciapidir if opts.qtconf_prefix is not None: self.qtconf_prefix = opts.qtconf_prefix if opts.stubsdir is not None: self.pyqt_stubs_dir = opts.stubsdir elif not opts.install_stubs: self.pyqt_stubs_dir = '' if opts.sip is not None: self.sip = opts.sip if opts.sipdir is not None: self.pyqt_sip_dir = opts.sipdir elif not opts.install_sipfiles: self.pyqt_sip_dir = '' if opts.static: self.static = True if opts.vendenabled: self.vend_enabled = True if opts.vendincdir is not None: self.vend_inc_dir = opts.vendincdir if opts.vendlibdir is not None: self.vend_lib_dir = opts.vendlibdir # Handle any conflicts. if not self.qt_shared: if not self.static: error( "Qt has been built as static libraries so the " "--static argument should be used.") if self.vend_enabled and self.static: error( "Using the VendorID package when building static " "libraries makes no sense.") def get_pylib_link_arguments(self, name=True): """ Return a string to append to qmake's LIBS macro to link against the Python interpreter library. """ args = qmake_quote('-L' + self.py_pylib_dir) if name: args += ' -l' + self.py_pylib_lib return args def add_sip_h_directives(self, pro_lines): """ Add the directives required by sip.h to a sequence of .pro file lines. """ # Make sure the include directory is searched before the Python include # directory if they are different. pro_lines.append('INCLUDEPATH += %s' % qmake_quote(self.sip_inc_dir)) if self.py_inc_dir != self.sip_inc_dir: pro_lines.append('INCLUDEPATH += %s' % qmake_quote(self.py_inc_dir)) # Python.h on Windows seems to embed the need for pythonXY.lib, so tell # it where it is. if not self.static: pro_lines.extend(['win32 {', ' LIBS += ' + self.get_pylib_link_arguments(name=False), '}']) @staticmethod def _find_exe(*exes): """ Find an executable, ie. the first on the path. """ path_dirs = os.environ.get('PATH', '').split(os.pathsep) for exe in exes: # Strip any surrounding quotes. if exe.startswith('"') and exe.endswith('"'): exe = exe[1:-1] if sys.platform == 'win32': exe = exe + '.exe' for d in path_dirs: exe_path = os.path.join(d, exe) if os.access(exe_path, os.X_OK): return exe_path return None def create_optparser(target_config): """ Create the parser for the command line. target_config is the target configuration containing default values. """ def store_abspath(option, opt_str, value, parser): setattr(parser.values, option.dest, os.path.abspath(value)) def store_abspath_dir(option, opt_str, value, parser): if not os.path.isdir(value): raise optparse.OptionValueError("'%s' is not a directory" % value) setattr(parser.values, option.dest, os.path.abspath(value)) def store_abspath_exe(option, opt_str, value, parser): if not os.access(value, os.X_OK): raise optparse.OptionValueError("'%s' is not an executable" % value) setattr(parser.values, option.dest, os.path.abspath(value)) def store_abspath_file(option, opt_str, value, parser): if not os.path.isfile(value): raise optparse.OptionValueError("'%s' is not a file" % value) setattr(parser.values, option.dest, os.path.abspath(value)) def store_version(option, opt_str, value, parser): version = version_from_string(value) if version is None: raise optparse.OptionValueError( "'%s' is not a valid version number" % value) setattr(parser.values, option.dest, version) p = optparse.OptionParser(usage="python %prog [opts] [name=value] " "[name+=value]", version=PYQT_VERSION_STR) # Note: we don't use %default to be compatible with Python 2.3. p.add_option("--static", "-k", dest='static', default=False, action='store_true', help="build modules as static libraries") p.add_option("--no-docstrings", dest='nodocstrings', default=False, action='store_true', help="disable the generation of docstrings") p.add_option("--trace", "-r", dest='tracing', default=False, action='store_true', help="build modules with tracing enabled") p.add_option("--debug", "-u", dest='debug', default=False, action='store_true', help="build modules with debugging symbols") p.add_option("--qml-debug", dest='qml_debug', default=False, action='store_true', help="enable the QML debugging infrastructure") p.add_option("--verbose", "-w", dest='verbose', default=False, action='store_true', help="enable verbose output during configuration") p.add_option("--concatenate", "-c", dest='concat', default=False, action='store_true', help="concatenate each module's C++ source files") p.add_option("--concatenate-split", "-j", dest='split', type='int', default=1, metavar="N", help="split the concatenated C++ source files into N pieces " "[default: 1]") # Configuration. g = optparse.OptionGroup(p, title="Configuration") g.add_option("--confirm-license", dest='license_confirmed', default=False, action='store_true', help="confirm acceptance of the license") g.add_option("--license-dir", dest='licensedir', type='string', default=None, action='callback', callback=store_abspath, metavar="DIR", help="the license file can be found in DIR [default: " "%s]" % target_config.license_dir) g.add_option("--target-py-version", dest='target_py_version', type='string', action='callback', callback=store_version, metavar="VERSION", help="the major.minor version of the target Python [default: " "%s]" % version_to_string(target_config.py_version, parts=2)) g.add_option("--link-full-dll", dest='link_full_dll', default=False, action='store_true', help="on Windows link against the full Python DLL rather than the " "limited API DLL") g.add_option("--sysroot", dest='sysroot', type='string', action='callback', callback=store_abspath_dir, metavar="DIR", help="DIR is the target system root directory") g.add_option("--spec", dest='qmakespec', default=None, action='store', metavar="SPEC", help="pass -spec SPEC to qmake") g.add_option("--disable", dest='disabled_modules', default=[], action='append', metavar="MODULE", help="disable the specified MODULE [default: checks for all " "modules will be enabled]") g.add_option("--disable-feature", dest='disabled_features', default=[], action='append', metavar="FEATURE", help="disable the specified FEATURE") g.add_option("--enable", "-e", dest='modules', default=[], action='append', metavar="MODULE", help="enable checks for the specified MODULE [default: checks for " "all modules will be enabled]") g.add_option("--no-designer-plugin", dest='nodesignerplugin', default=False, action='store_true', help="disable the building of the Python plugin for Qt Designer " "[default: enabled]") g.add_option("--no-qml-plugin", dest='noqmlplugin', default=False, action='store_true', help="disable the building of the Python plugin for qmlscene " "[default: enabled]") g.add_option("--assume-shared", dest='assumeshared', default=False, action='store_true', help="assume that the Qt libraries have been built as shared " "libraries [default: check]") g.add_option("--qtconf-prefix", dest='qtconf_prefix', default=None, action='store', metavar="DIR", help="embed a qt.conf file in the QtCore module that has Prefix " "set to DIR") g.add_option("--no-timestamp", "-T", dest='notimestamp', default=False, action='store_true', help="suppress timestamps in the header comments of generated " "code [default: include timestamps]") g.add_option("--configuration", dest='config_file', type='string', action='callback', callback=store_abspath_file, metavar="FILE", help="FILE contains the target configuration") g.add_option("--protected-is-public", dest='protispublic', default=None, action='store_true', help="enable building with 'protected' redefined as 'public' " "[default: %s]" % "enabled" if target_config.prot_is_public else "disabled") g.add_option("--protected-not-public", dest='protispublic', default=None, action='store_false', help="disable building with 'protected' redefined as 'public'") g.add_option("--pyuic5-interpreter", dest='pyuicinterpreter', type='string', default=None, action='callback', callback=store_abspath_exe, metavar="FILE", help="the name of the Python interpreter to run the pylupdate5, " "pyrcc5 and pyuic5 wrappers is FILE [default: %s]" % target_config.pyuic_interpreter) g.add_option("--qmake", "-q", dest='qmake', type='string', default=None, action='callback', callback=store_abspath_exe, metavar="FILE", help="the pathname of qmake is FILE [default: " "%s]" % (target_config.qmake or "search PATH")) g.add_option("--sip", dest='sip', type='string', default=None, action='callback', callback=store_abspath_exe, metavar="FILE", help="the pathname of sip is FILE [default: " "%s]" % (target_config.sip or "None")) g.add_option("--sip-incdir", dest='sipincdir', type='string', default=None, action='callback', callback=store_abspath_dir, metavar="DIR", help="the directory containing the sip.h header file is DIR " "[default: %s]" % target_config.sip_inc_dir) g.add_option("--allow-sip-warnings", dest='fatal_warnings', default=True, action='store_false', help="allow sip to issue non-fatal warning messages " "[default: warning messages are treated as errors]") g.add_option("--no-python-dbus", dest='nopydbus', default=False, action='store_true', help="disable the Qt support for the standard Python DBus " "bindings [default: enabled]") g.add_option("--dbus", "-s", dest='pydbusincdir', type='string', default=None, action='callback', callback=store_abspath_dir, metavar="DIR", help="the directory containing the dbus/dbus-python.h header is " "DIR [default: supplied by pkg-config]") p.add_option_group(g) # Installation. g = optparse.OptionGroup(p, title="Installation") g.add_option("--bindir", "-b", dest='bindir', type='string', default=None, action='callback', callback=store_abspath, metavar="DIR", help="install pyuic5, pyrcc5 and pylupdate5 in DIR [default: " "%s]" % target_config.pyqt_bin_dir) g.add_option("--destdir", "-d", dest='destdir', type='string', default=None, action='callback', callback=store_abspath, metavar="DIR", help="install the PyQt5 Python package in DIR [default: " "%s]" % target_config.pyqt_module_dir) g.add_option("--designer-plugindir", dest='designerplugindir', type='string', default=None, action='callback', callback=store_abspath, metavar="DIR", help="install the Python plugin for Qt Designer in DIR " "[default: QT_INSTALL_PLUGINS/designer]") g.add_option("--qml-plugindir", dest='qmlplugindir', type='string', default=None, action='callback', callback=store_abspath, metavar="DIR", help="install the Python plugin for qmlscene in DIR " "[default: QT_INSTALL_PLUGINS/PyQt5]") g.add_option("--no-sip-files", action="store_false", default=True, dest="install_sipfiles", help="disable the installation of the " ".sip files [default: enabled]") g.add_option("--sipdir", "-v", dest='sipdir', type='string', default=None, action='callback', callback=store_abspath, metavar="DIR", help="install the PyQt5 .sip files in DIR [default: %s]" % target_config.pyqt_sip_dir) g.add_option("--no-stubs", action="store_false", default=True, dest="install_stubs", help="disable the installation of the PEP " "484 stub files [default: enabled]") g.add_option("--stubsdir", dest='stubsdir', type='string', default=None, action='callback', callback=store_abspath, metavar="DIR", help="install the PEP 484 stub files in DIR [default: " "%s]" % target_config.pyqt_stubs_dir) g.add_option("--no-tools", action="store_true", default=False, dest="notools", help="disable the building of pyuic5, pyrcc5 and pylupdate5 " "[default: enabled]") p.add_option_group(g) # Vendor ID. g = optparse.OptionGroup(p, title="VendorID support") g.add_option("--vendorid", "-i", dest='vendenabled', default=False, action='store_true', help="enable checking of signed interpreters using the VendorID " "package [default: %s]" % "enabled" if target_config.vend_enabled else "disabled") g.add_option("--vendorid-incdir", "-l", dest='vendincdir', type='string', default=None, action='callback', callback=store_abspath_dir, metavar="DIR", help="the VendorID header file is installed in DIR [default: " "%s]" % target_config.vend_inc_dir) g.add_option("--vendorid-libdir", "-m", dest='vendlibdir', type='string', default=None, action='callback', callback=store_abspath_dir, metavar="DIR", help="the VendorID library is installed in DIR [default: " "%s]" % target_config.vend_lib_dir) p.add_option_group(g) # QScintilla. g = optparse.OptionGroup(p, title="QScintilla support") g.add_option("--qsci-api", "-a", dest='qsciapi', default=None, action='store_true', help="always install the PyQt API file for QScintilla [default: " "install only if QScintilla installed]") g.add_option("--no-qsci-api", dest='qsciapi', default=None, action='store_false', help="do not install the PyQt API file for QScintilla [default: " "install only if QScintilla installed]") g.add_option("--qsci-api-destdir", "-n", dest='qsciapidir', type='string', default=None, action='callback', callback=store_abspath, metavar="DIR", help="install the PyQt5 API file for QScintilla in DIR [default: " "QT_INSTALL_DATA/qsci]") p.add_option_group(g) return p def check_modules(target_config, disabled_modules, verbose): """ Check which modules can be built and update the target configuration accordingly. target_config is the target configuration. disabled_modules is the list of modules that have been explicitly disabled. verbose is set if the output is to be displayed. """ target_config.pyqt_modules.append('QtCore') check_module(target_config, disabled_modules, verbose, 'QtGui') check_module(target_config, disabled_modules, verbose, 'QtHelp', 'qhelpengine.h', 'new QHelpEngine("foo")') check_module(target_config, disabled_modules, verbose, 'QtMultimedia', 'QAudioDeviceInfo', 'new QAudioDeviceInfo()') check_module(target_config, disabled_modules, verbose, 'QtMultimediaWidgets', 'QVideoWidget', 'new QVideoWidget()') check_module(target_config, disabled_modules, verbose, 'QtNetwork') check_module(target_config, disabled_modules, verbose, 'QtOpenGL', 'qgl.h', 'new QGLWidget()') check_module(target_config, disabled_modules, verbose, 'QtPrintSupport') check_module(target_config, disabled_modules, verbose, 'QtQml', 'qjsengine.h', 'new QJSEngine()') check_module(target_config, disabled_modules, verbose, 'QtQuick', 'qquickwindow.h', 'new QQuickWindow()') check_module(target_config, disabled_modules, verbose, 'QtSql', 'qsqldatabase.h', 'new QSqlDatabase()') check_module(target_config, disabled_modules, verbose, 'QtSvg', 'qsvgwidget.h', 'new QSvgWidget()') check_module(target_config, disabled_modules, verbose, 'QtTest', 'QtTest', 'QTest::qSleep(0)') check_module(target_config, disabled_modules, verbose, 'QtWebKit', 'qwebkitglobal.h', 'qWebKitVersion()') check_module(target_config, disabled_modules, verbose, 'QtWebKitWidgets', 'qwebpage.h', 'new QWebPage()') check_module(target_config, disabled_modules, verbose, 'QtWidgets', 'qwidget.h', 'new QWidget()') check_module(target_config, disabled_modules, verbose, 'QtXml', 'qdom.h', 'new QDomDocument()') check_module(target_config, disabled_modules, verbose, 'QtXmlPatterns', 'qxmlname.h', 'new QXmlName()') if target_config.qt_shared: check_module(target_config, disabled_modules, verbose, 'QtDesigner', ('QExtensionFactory', 'customwidget.h'), 'new QExtensionFactory()') else: inform("QtDesigner module disabled with static Qt libraries.") check_module(target_config, disabled_modules, verbose, 'QAxContainer', 'qaxobject.h', 'new QAxObject()') check_module(target_config, disabled_modules, verbose, 'QtDBus', 'qdbusconnection.h', 'QDBusConnection::systemBus()') if target_config.qt_version >= 0x050100: check_5_1_modules(target_config, disabled_modules, verbose) if target_config.qt_version >= 0x050200: check_5_2_modules(target_config, disabled_modules, verbose) if target_config.qt_version >= 0x050300: check_5_3_modules(target_config, disabled_modules, verbose) if target_config.qt_version >= 0x050400: check_5_4_modules(target_config, disabled_modules, verbose) if target_config.qt_version >= 0x050500: check_5_5_modules(target_config, disabled_modules, verbose) if target_config.qt_version >= 0x050600: check_5_6_modules(target_config, disabled_modules, verbose) if target_config.qt_version >= 0x050a00: check_5_10_modules(target_config, disabled_modules, verbose) def check_5_1_modules(target_config, disabled_modules, verbose): """ Check which modules introduced in Qt v5.1 can be built and update the target configuration accordingly. target_config is the target configuration. disabled_modules is the list of modules that have been explicitly disabled. verbose is set if the output is to be displayed. """ # Check the OpenGL functions. if 'PyQt_OpenGL' in target_config.pyqt_disabled_features: pass elif 'PyQt_Desktop_OpenGL' in target_config.pyqt_disabled_features: check_module(target_config, disabled_modules, verbose, '_QOpenGLFunctions_ES2', 'qopenglfunctions_es2.h', 'new QOpenGLFunctions_ES2()') else: desktop_versions = ( '1_0', '1_1', '1_2', '1_3', '1_4', '1_5', '2_0', '2_1', '3_0', '3_1', '3_2_Compatibility', '3_2_Core', '3_3_Compatibility', '3_3_Core', '4_0_Compatibility', '4_0_Core', '4_1_Compatibility', '4_1_Core', '4_2_Compatibility', '4_2_Core', '4_3_Compatibility', '4_3_Core', '4_4_Compatibility', '4_4_Core', '4_5_Compatibility', '4_5_Core') for ogl in desktop_versions: ogl_module = '_QOpenGLFunctions_' + ogl ogl_h = 'qopenglfunctions_' + ogl.lower() + '.h' ogl_ctor = 'new QOpenGLFunctions_' + ogl + '()' check_module(target_config, disabled_modules, verbose, ogl_module, ogl_h, ogl_ctor) check_module(target_config, disabled_modules, verbose, 'QtSensors', 'qsensor.h', 'new QSensor(QByteArray())') check_module(target_config, disabled_modules, verbose, 'QtSerialPort', 'qserialport.h', 'new QSerialPort()') check_module(target_config, disabled_modules, verbose, 'QtX11Extras', 'QX11Info', 'QX11Info::display()') def check_5_2_modules(target_config, disabled_modules, verbose): """ Check which modules introduced in Qt v5.2 can be built and update the target configuration accordingly. target_config is the target configuration. disabled_modules is the list of modules that have been explicitly disabled. verbose is set if the output is to be displayed. """ check_module(target_config, disabled_modules, verbose, 'QtBluetooth', 'qbluetoothaddress.h', 'new QBluetoothAddress()') check_module(target_config, disabled_modules, verbose, 'QtMacExtras', 'qmacpasteboardmime.h', 'class Foo : public QMacPasteboardMime {}') check_module(target_config, disabled_modules, verbose, 'QtPositioning', 'qgeoaddress.h', 'new QGeoAddress()') check_module(target_config, disabled_modules, verbose, 'QtWinExtras', 'QtWin', 'QtWin::isCompositionEnabled()') def check_5_3_modules(target_config, disabled_modules, verbose): """ Check which modules introduced in Qt v5.3 can be built and update the target configuration accordingly. target_config is the target configuration. disabled_modules is the list of modules that have been explicitly disabled. verbose is set if the output is to be displayed. """ check_module(target_config, disabled_modules, verbose, 'QtQuickWidgets', 'qquickwidget.h', 'new QQuickWidget()') check_module(target_config, disabled_modules, verbose, 'QtWebSockets', 'qwebsocket.h', 'new QWebSocket()') check_module(target_config, disabled_modules, verbose, 'Enginio', 'enginioclient.h', 'new EnginioClient()') def check_5_4_modules(target_config, disabled_modules, verbose): """ Check which modules introduced in Qt v5.4 can be built and update the target configuration accordingly. target_config is the target configuration. disabled_modules is the list of modules that have been explicitly disabled. verbose is set if the output is to be displayed. """ check_module(target_config, disabled_modules, verbose, 'QtWebChannel', 'qwebchannel.h', 'new QWebChannel()') check_module(target_config, disabled_modules, verbose, 'QtWebEngineWidgets', 'qwebengineview.h', 'new QWebEngineView()') def check_5_5_modules(target_config, disabled_modules, verbose): """ Check which modules introduced in Qt v5.5 can be built and update the target configuration accordingly. target_config is the target configuration. disabled_modules is the list of modules that have been explicitly disabled. verbose is set if the output is to be displayed. """ check_module(target_config, disabled_modules, verbose, 'QtLocation', 'qplace.h', 'new QPlace()') check_module(target_config, disabled_modules, verbose, 'QtNfc', 'qnearfieldmanager.h', 'new QNearFieldManager()') def check_5_6_modules(target_config, disabled_modules, verbose): """ Check which modules introduced in Qt v5.6 can be built and update the target configuration accordingly. target_config is the target configuration. disabled_modules is the list of modules that have been explicitly disabled. verbose is set if the output is to be displayed. """ check_module(target_config, disabled_modules, verbose, 'QtWebEngineCore', 'qtwebenginecoreversion.h', 'const char *v = QTWEBENGINECORE_VERSION_STR') # This may have appeared in an earlier version but this is as far back as # choose to go. check_module(target_config, disabled_modules, verbose, 'QtWebEngine', 'qtwebengineversion.h', 'const char *v = QTWEBENGINE_VERSION_STR') def check_5_10_modules(target_config, disabled_modules, verbose): """ Check which modules introduced in Qt v5.10 can be built and update the target configuration accordingly. target_config is the target configuration. disabled_modules is the list of modules that have been explicitly disabled. verbose is set if the output is to be displayed. """ check_module(target_config, disabled_modules, verbose, 'QtNetworkAuth', 'qtnetworkauthversion.h', 'const char *v = QTNETWORKAUTH_VERSION_STR') def generate_makefiles(target_config, verbose, parts, tracing, fatal_warnings): """ Generate the makefiles to build everything. target_config is the target configuration. verbose is set if the output is to be displayed. parts is the number of parts the generated code should be split into. tracing is set if the generated code should include tracing calls. fatal_warnings is set if warnings are fatal. """ # For the top-level .pro file. toplevel_pro = 'PyQt5.pro' subdirs = [] # Set the SIP platform, version and feature flags. sip_flags = get_sip_flags(target_config) # Go through the modules. pyqt_modules = list(target_config.pyqt_modules) # Add the internal modules if they are required. if not target_config.no_tools: pyqt_modules.append('pylupdate') pyqt_modules.append('pyrcc') for mname in pyqt_modules: metadata = MODULE_METADATA[mname] if metadata.qpy_lib: sp_qpy_dir = source_path('qpy', mname) qpy_c_sources = [os.path.relpath(f, mname) for f in matching_files(os.path.join(sp_qpy_dir, '*.c'))] qpy_cpp_sources = [os.path.relpath(f, mname) for f in matching_files(os.path.join(sp_qpy_dir, '*.cpp'))] qpy_headers = [os.path.relpath(f, mname) for f in matching_files(os.path.join(sp_qpy_dir, '*.h'))] qpy_sources = qpy_c_sources + qpy_cpp_sources else: qpy_sources = [] qpy_headers = [] generate_sip_module_code(target_config, verbose, parts, tracing, mname, fatal_warnings, sip_flags, metadata.public, qpy_sources, qpy_headers) subdirs.append(mname) # Generate the composite module. qtmod_sipdir = os.path.join('sip', 'Qt') mk_clean_dir(qtmod_sipdir) qtmod_sipfile = os.path.join(qtmod_sipdir, 'Qtmod.sip') f = open_for_writing(qtmod_sipfile) f.write('''%CompositeModule PyQt5.Qt ''') for mname in COMPOSITE_COMPONENTS: if mname in target_config.pyqt_modules: f.write('%%Include %s/%smod.sip\n' % (mname, mname)) f.close() generate_sip_module_code(target_config, verbose, parts, tracing, 'Qt', fatal_warnings, sip_flags, False) subdirs.append('Qt') wrappers = [] if not target_config.no_tools: # Generate the pylupdate5 and pyrcc5 wrappers. for tool in ('pylupdate', 'pyrcc'): wrappers.append((tool, generate_tool_wrapper(target_config, tool + '5', 'PyQt5.%s_main' % tool))) # Generate the pyuic5 wrapper. wrappers.append(('pyuic', generate_tool_wrapper(target_config, 'pyuic5', 'PyQt5.uic.pyuic'))) # Generate the Qt Designer plugin. if not target_config.no_designer_plugin and 'QtDesigner' in target_config.pyqt_modules: if generate_plugin_makefile(target_config, verbose, 'designer', target_config.designer_plugin_dir, "Qt Designer"): subdirs.append('designer') # Generate the qmlscene plugin. if not target_config.no_qml_plugin and 'QtQml' in target_config.pyqt_modules: if generate_plugin_makefile(target_config, verbose, 'qmlscene', target_config.qml_plugin_dir, "qmlscene"): subdirs.append('qmlscene') rewrite_qmldir(target_config, 'Charts', source_path('examples', 'quick', 'tutorials', 'extending', 'chapter6-plugins')) # Generate the QScintilla API file. if target_config.qsci_api: inform("Generating the QScintilla API file...") f = open_for_writing('PyQt5.api') for mname in target_config.pyqt_modules: if MODULE_METADATA[mname].public: api = open(mname + '.api') for l in api: f.write('PyQt5.' + l) api.close() os.remove(mname + '.api') f.close() # Generate the Python dbus module. if target_config.pydbus_module_dir != '': mname = 'dbus' mk_dir(mname) sp_src_dir = source_path(mname) lib_dirs = ['-L' + l for l in target_config.dbus_lib_dirs] lib_names = ['-l' + l for l in target_config.dbus_libs] libs = ' '.join(lib_dirs + lib_names) generate_module_makefile(target_config, verbose, mname, include_paths=target_config.dbus_inc_dirs, libs=libs, install_path=target_config.pydbus_module_dir, src_dir=sp_src_dir) subdirs.append(mname) # Generate the top-level .pro file. inform("Generating the top-level .pro file...") out_f = open_for_writing(toplevel_pro) root_dir = qmake_quote(target_config.pyqt_module_dir + '/PyQt5') out_f.write('''TEMPLATE = subdirs CONFIG += ordered nostrip SUBDIRS = %s init_py.files = %s init_py.path = %s INSTALLS += init_py ''' % (' '.join(subdirs), source_path('__init__.py'), root_dir)) # Install the uic module. out_f.write(''' uic_package.files = %s uic_package.path = %s INSTALLS += uic_package ''' % (source_path('pyuic', 'uic'), root_dir)) # Install the tool main scripts and wrappers. if wrappers: wrapper_exes = [] for tool, wrapper in wrappers: if tool != 'pyuic': out_f.write(''' %s.files = %s %s.path = %s INSTALLS += %s ''' % (tool, source_path('sip', tool, tool + '_main.py'), tool, root_dir, tool)) wrapper_exes.append(wrapper) out_f.write(''' tools.files = %s tools.path = %s INSTALLS += tools ''' % (' '.join(wrapper_exes), qmake_quote(target_config.pyqt_bin_dir))) # Install the .sip files. if target_config.pyqt_sip_dir: for mname, metadata in MODULE_METADATA.items(): if metadata.public and mname != 'Qt': sip_files = matching_files(source_path('sip', mname, '*.sip')) if len(sip_files) != 0: out_f.write(''' sip%s.path = %s sip%s.files = %s INSTALLS += sip%s ''' % ( mname, qmake_quote(target_config.pyqt_sip_dir + '/' + mname), mname, ' '.join(sip_files), mname )) # Install the stub files. if target_config.py_version >= 0x030500 and target_config.pyqt_stubs_dir: out_f.write(''' pep484_stubs.files = %s Qt.pyi pep484_stubs.path = %s INSTALLS += pep484_stubs ''' % (' '.join([mname + '.pyi' for mname in target_config.pyqt_modules]), qmake_quote(target_config.pyqt_stubs_dir))) # Install the QScintilla .api file. if target_config.qsci_api: out_f.write(''' qscintilla_api.files = PyQt5.api qscintilla_api.path = %s INSTALLS += qscintilla_api ''' % qmake_quote(target_config.qsci_api_dir + '/api/python')) out_f.close() # Make the wrappers executable on platforms that support it. If we did it # after running qmake then (on Linux) the execute bits would be stripped on # installation. if target_config.py_platform != 'win32': for tool, wrapper in wrappers: inform("Making the %s wrapper executable..." % wrapper) sbuf = os.stat(wrapper) mode = sbuf.st_mode mode |= (stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH) os.chmod(wrapper, mode) # Generate the makefiles. inform("Generating the Makefiles...") run_qmake(target_config, verbose, toplevel_pro, recursive=True) def generate_plugin_makefile(target_config, verbose, plugin_dir, install_dir, plugin_name): """ Generate the makefile for a plugin that embeds the Python interpreter. target_config is the target configuration. verbose is set if the output is to be displayed. plugin_dir is the name of the directory containing the plugin implementation. install_dir is the name of the directory that the plugin will be installed in. plugin_name is a descriptive name of the plugin to be used in user messages. Returns True if the makefile could be generated. """ # Check we have a shared interpreter library. if target_config.py_pyshlib == '': inform("The %s plugin was disabled because a dynamic Python library couldn't be found." % plugin_name) return False # Create the qmake project file. inform("Generating the %s plugin .pro file..." % plugin_name) sp_plugin_dir = source_path(plugin_dir) fin = open(os.path.join(sp_plugin_dir, '%s.pro-in' % plugin_dir)) prj = fin.read() fin.close() prj = prj.replace('@QTCONFIG@', 'debug' if target_config.debug else 'release') prj = prj.replace('@PYINCDIR@', qmake_quote(target_config.py_inc_dir)) prj = prj.replace('@SIPINCDIR@', qmake_quote(target_config.sip_inc_dir)) prj = prj.replace('@PYLINK@', target_config.get_pylib_link_arguments()) prj = prj.replace('@PYSHLIB@', target_config.py_pyshlib) prj = prj.replace('@QTPLUGINDIR@', qmake_quote(install_dir)) pro_name = os.path.join(plugin_dir, '%s.pro' % plugin_dir) mk_dir(plugin_dir) fout = open_for_writing(pro_name) fout.write(prj) if sp_plugin_dir != plugin_dir: fout.write(''' INCLUDEPATH += %s VPATH = %s ''' % (qmake_quote(sp_plugin_dir), qmake_quote(sp_plugin_dir))) fout.write('\n'.join(target_config.qmake_variables) + '\n') fout.close() return True def pro_sources(src_dir, other_headers=None, other_sources=None): """ Return the HEADERS, SOURCES and OBJECTIVE_SOURCES variables for a .pro file by introspecting a directory. src_dir is the name of the directory. other_headers is an optional list of other header files. other_sources is an optional list of other source files. """ pro_lines = [] headers = [os.path.basename(f) for f in matching_files('%s/*.h' % src_dir)] if other_headers is not None: headers += other_headers if len(headers) != 0: pro_lines.append('HEADERS = %s' % ' '.join(headers)) sources = [os.path.basename(f) for f in matching_files('%s/*.c' % src_dir)] for f in matching_files('%s/*.cpp' % src_dir): f = os.path.basename(f) # Exclude any moc generated C++ files that might be around from a # previous build. if not f.startswith('moc_'): sources.append(f) if other_sources is not None: sources += other_sources if len(sources) != 0: pro_lines.append('SOURCES = %s' % ' '.join(sources)) objective_sources = [ os.path.basename(f) for f in matching_files('%s/*.mm' % src_dir)] if len(objective_sources) != 0: pro_lines.append('OBJECTIVE_SOURCES = %s' % ' '.join(objective_sources)) return pro_lines def generate_tool_wrapper(target_config, wrapper, module): """ Create a platform dependent executable wrapper for a tool module. target_config is the target configuration. wrapper is the name of the wrapper without any extension. module is the tool module. Returns the platform specific name of the wrapper. """ if target_config.py_platform == 'win32': wrapper += '.bat' inform("Generating the %s wrapper..." % wrapper) exe = quote(target_config.pyuic_interpreter) wf = open_for_writing(wrapper) if target_config.py_platform == 'win32': wf.write('@%s -m %s %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9\n' % (exe, module)) else: wf.write('#!/bin/sh\n') wf.write('exec %s -m %s ${1+"$@"}\n' % (exe, module)) wf.close() return wrapper def rewrite_qmldir(target_config, module, module_dir): """ Re-write a qmldir file for a module that used the qmlscene plugin. target_config is the target configuration. module is the name of the QML module. module_dir is the name of the directory containing the QML module. """ qmldir_fn = os.path.join(module_dir, module, 'qmldir') inform("Re-writing %s..." % qmldir_fn) qmldir = open_for_writing(qmldir_fn) qmldir.write('module %s\nplugin pyqt5qmlplugin %s\n' % (module, target_config.qml_plugin_dir)) qmldir.close() def quote(path): """ Return a path with quotes added if it contains spaces. path is the path. """ if ' ' in path: path = '"%s"' % path return path def qmake_quote(path): """ Return a path quoted for qmake if it contains spaces. path is the path. """ if ' ' in path: path = '$$quote(%s)' % path return path def inform_user(target_config, sip_version): """ Tell the user the values that are going to be used. target_config is the target configuration. sip_version is the SIP version string. """ inform("Qt v%s is being used." % version_to_string(target_config.qt_version)) inform("The qmake executable is %s." % target_config.qmake) inform( "Qt is built as a %s library." % ( "shared" if target_config.qt_shared else "static")) if target_config.sysroot != '': inform("The system root directory is %s." % target_config.sysroot) inform("SIP %s is being used." % sip_version) inform("The sip executable is %s." % target_config.sip) inform("These PyQt5 modules will be built: %s." % ', '.join(target_config.pyqt_modules)) inform("The PyQt5 Python package will be installed in %s." % target_config.pyqt_module_dir) if target_config.debug: inform("A debug version of PyQt5 will be built.") if target_config.py_debug: inform("A debug build of Python is being used.") if target_config.no_docstrings: inform("PyQt5 is being built without generated docstrings.") else: inform("PyQt5 is being built with generated docstrings.") if target_config.prot_is_public: inform("PyQt5 is being built with 'protected' redefined as 'public'.") if target_config.no_designer_plugin: inform("The Designer plugin will not be built.") else: inform("The Designer plugin will be installed in %s." % target_config.designer_plugin_dir) if target_config.no_qml_plugin: inform("The qmlscene plugin will not be built.") else: inform("The qmlscene plugin will be installed in %s." % target_config.qml_plugin_dir) if target_config.qsci_api: inform( "The QScintilla API file will be installed in %s." % os.path.join( target_config.qsci_api_dir, 'api', 'python')) if target_config.py_version >= 0x030500 and target_config.pyqt_stubs_dir: inform("The PyQt5 PEP 484 stub files will be installed in %s." % target_config.pyqt_stubs_dir) if target_config.pydbus_module_dir: inform( "The dbus support module will be installed in %s." % target_config.pydbus_module_dir) if target_config.pyqt_sip_dir: inform("The PyQt5 .sip files will be installed in %s." % target_config.pyqt_sip_dir) if target_config.no_tools: inform("pyuic5, pyrcc5 and pylupdate5 will not be built.") else: inform("pyuic5, pyrcc5 and pylupdate5 will be installed in %s." % target_config.pyqt_bin_dir) inform("The interpreter used by pyuic5 is %s." % target_config.pyuic_interpreter) if target_config.vend_enabled: inform("PyQt5 will only be usable with signed interpreters.") def run_qmake(target_config, verbose, pro_name, makefile_name='', fatal=True, recursive=False): """ Run qmake against a .pro file. target_config is the target configuration. verbose is set if the output is to be displayed. pro_name is the name of the .pro file. makefile_name is the name of the makefile to generate (and defaults to Makefile). fatal is set if a qmake failure is considered a fatal error, otherwise False is returned if qmake fails. recursive is set to use the -recursive flag. """ # qmake doesn't behave consistently if it is not run from the directory # containing the .pro file - so make sure it is. pro_dir, pro_file = os.path.split(pro_name) if pro_dir != '': cwd = os.getcwd() os.chdir(pro_dir) else: cwd = None mf = makefile_name if makefile_name != '' else 'Makefile' remove_file(mf) args = [quote(target_config.qmake)] if target_config.qmake_spec != target_config.qmake_spec_default: args.append('-spec') args.append(target_config.qmake_spec) if makefile_name != '': args.append('-o') args.append(makefile_name) if recursive: args.append('-recursive') args.append(pro_file) run_command(' '.join(args), verbose) if not os.access(mf, os.F_OK): if fatal: error( "%s failed to create a makefile from %s." % (target_config.qmake, pro_name)) return False # Restore the current directory. if cwd is not None: os.chdir(cwd) return True def run_make(target_config, verbose, exe, makefile_name): """ Run make against a makefile to create an executable. target_config is the target configuration. verbose is set if the output is to be displayed. exe is the platform independent name of the executable that will be created. makefile_name is the name of the makefile. Returns the platform specific name of the executable, or None if an executable wasn't created. """ # Guess the name of make and set the default target and platform specific # name of the executable. if target_config.py_platform == 'win32': if target_config.qmake_spec == 'win32-g++': make = 'mingw32-make' else: make = 'nmake' if target_config.debug: makefile_target = 'debug' platform_exe = os.path.join('debug', exe + '.exe') else: makefile_target = 'release' platform_exe = os.path.join('release', exe + '.exe') else: make = 'make' makefile_target = '' if target_config.py_platform == 'darwin': platform_exe = os.path.join(exe + '.app', 'Contents', 'MacOS', exe) else: platform_exe = os.path.join('.', exe) remove_file(platform_exe) args = [make, '-f', makefile_name] if makefile_target != '': args.append(makefile_target) run_command(' '.join(args), verbose) return platform_exe if os.access(platform_exe, os.X_OK) else None def run_command(cmd, verbose): """ Run a command and display the output if requested. cmd is the command to run. verbose is set if the output is to be displayed. """ if verbose: sys.stdout.write(cmd + "\n") fout = get_command_output(cmd, and_stderr=True) # Read stdout and stderr until there is no more output. lout = fout.readline() while lout: if verbose: if sys.hexversion >= 0x03000000: sys.stdout.write(str(lout, encoding=sys.stdout.encoding)) else: sys.stdout.write(lout) lout = fout.readline() fout.close() try: os.wait() except: pass def remove_file(fname): """ Remove a file which may or may not exist. fname is the name of the file. """ try: os.remove(fname) except OSError: pass def check_vendorid(target_config): """ See if the VendorID library and include file can be found. target_config is the target configuration. """ if target_config.py_version >= 0x030000: # VendorID doesn't support Python v3. target_config.vend_enabled = False elif target_config.vend_enabled: if os.access(os.path.join(target_config.vend_inc_dir, 'vendorid.h'), os.F_OK): if glob.glob(os.path.join(target_config.vend_lib_dir, '*vendorid*')): inform("The VendorID package was found.") else: target_config.vend_enabled = False inform( "The VendorID library could not be found in %s and so " "signed interpreter checking will be disabled. If the " "VendorID package is installed then use the " "--vendorid-libdir argument to explicitly specify the " "correct directory." % target_config.vend_lib_dir) else: target_config.vend_enabled = False inform( "vendorid.h could not be found in %s and so signed " "interpreter checking will be disabled. If the VendorID " "package is installed then use the --vendorid-incdir " "argument to explicitly specify the correct directory." % target_config.vend_inc_dir) def get_command_output(cmd, and_stderr=False): """ Return a pipe from which a command's output can be read. cmd is the command. and_stderr is set if the output should include stderr as well as stdout. """ try: import subprocess except ImportError: if and_stderr: _, sout = os.popen4(cmd) else: _, sout, _ = os.popen3(cmd) return sout if and_stderr: stderr = subprocess.STDOUT else: stderr = subprocess.PIPE p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=stderr) return p.stdout def source_path(*names): """ Return the native path for a list of components rooted at the directory containing this script. names is the sequence of component names. """ path = [os.path.dirname(os.path.abspath(__file__))] + list(names) return os.path.join(*path) def check_dbus(target_config, verbose): """ See if the DBus support module should be built and update the target configuration accordingly. target_config is the target configuration. verbose is set if the output is to be displayed. """ if target_config.no_pydbus or not os.path.isdir(source_path('dbus')): return inform("Checking to see if the dbus support module should be built...") cmd = 'pkg-config --cflags-only-I --libs dbus-1' if verbose: sys.stdout.write(cmd + "\n") sout = get_command_output(cmd) iflags = sout.read().strip() if not iflags: inform("DBus v1 does not seem to be installed.") return if sys.hexversion >= 0x03000000: iflags = iflags.decode() for f in iflags.split(): if f.startswith('-I'): target_config.dbus_inc_dirs.append(f[2:]) elif f.startswith('-L'): target_config.dbus_lib_dirs.append(f[2:]) elif f.startswith('-l'): target_config.dbus_libs.append(f[2:]) try: import dbus.mainloop except: inform("The Python dbus module doesn't seem to be installed.") return target_config.pydbus_module_dir = dbus.mainloop.__path__[0] # Try and find dbus-python.h. We don't use pkg-config because it is broken # for dbus-python (at least for versions up to and including v0.81.0). # Instead we look where DBus itself is installed - which in most cases will # be where dbus-python is also installed. if target_config.pydbus_inc_dir != '': target_config.dbus_inc_dirs = [target_config.pydbus_inc_dir] for d in target_config.dbus_inc_dirs: if os.access(os.path.join(d, 'dbus', 'dbus-python.h'), os.F_OK): break else: inform( "dbus/dbus-python.h could not be found and so the DBus " "support module will be disabled. If dbus-python v0.80 or " "later is installed then use the --dbus argument to " "explicitly specify the directory containing " "dbus/dbus-python.h.") target_config.pydbus_module_dir = '' def check_module(target_config, disabled_modules, verbose, mname, incfile=None, test=None): """ See if a module can be built and, if so, add it to the target configurations list of modules. target_config is the target configuration. disabled_modules is the list of modules that have been explicitly disabled. verbose is set if the output is to be displayed. mname is the name of the module. incfile is the name of the include file (or sequence of multiple include files) needed for the test. test is a C++ statement being used for the test. If either incfile or test are None then there is a test program that needs to be run and its output captured. """ if mname in disabled_modules: return # Check the module's main .sip file exists. if not os.access(source_path('sip', mname, mname + 'mod.sip'), os.F_OK): return if verbose: sys.stdout.write('\n') inform("Checking to see if the %s module should be built..." % mname) if incfile is None or test is None: source = None else: if isinstance(incfile, str): incfile = [incfile] incfile = ['#include<%s>' % i for i in incfile] source = '''%s int main(int, char **) { %s; } ''' % ('\n'.join(incfile), test) test = compile_test_program(target_config, verbose, mname, source) if test is None: return # If there was an explicit test program then run it to get the disabled # features. if source is None: for disabled in run_test_program(mname, test, verbose): if disabled: inform("Disabled %s feature: %s" % (mname, disabled)) target_config.pyqt_disabled_features.append(disabled) # Include the module in the build. target_config.pyqt_modules.append(mname) def compile_test_program(target_config, verbose, mname, source=None, debug=None, uses_sip_h=False): """ Compile the source of a Qt program and return the name of the executable or None if it couldn't be created. target_config is the target configuration. verbose is set if the output is to be displayed. mname is the name of the PyQt module being tested. source is the C++ source of the program. If it is None then the source is expected to be found in the config-tests directory. debug is set if debug, rather than release, mode is to be used. If it is None then the mode is taken from the target configuration. uses_sip_h is set if the test program uses sip.h. """ metadata = MODULE_METADATA[mname] # The derived file names. name = 'cfgtest_' + mname name_pro = name + '.pro' name_makefile = name + '.mk' name_source = name + '.cpp' # Create the source file if necessary. if source is None: name_source = source_path('config-tests', name_source) else: f = open_for_writing(name_source) f.write(source) f.close() # Create the .pro file. pro_lines = [] pro_add_qt_dependencies(target_config, metadata, pro_lines, debug) pro_lines.append('TARGET = %s' % name) if uses_sip_h: target_config.add_sip_h_directives(pro_lines) pro_lines.append('SOURCES = %s' % name_source) f = open_for_writing(name_pro) f.write('\n'.join(pro_lines)) f.close() if not run_qmake(target_config, verbose, name_pro, name_makefile, fatal=False): return None return run_make(target_config, verbose, name, name_makefile) def run_test_program(mname, test, verbose): """ Run a test program and return the output as a list of lines. mname is the name of the PyQt module being tested. test is the name of the test executable. verbose is set if the output is to be displayed. """ out_file = 'cfgtest_' + mname + '.out' # Create the output file, first making sure it doesn't exist. remove_file(out_file) run_command(test + ' ' + out_file, verbose) if not os.access(out_file, os.F_OK): error("%s failed to create %s. Make sure your Qt installation is correct." % (test, out_file)) # Read the details. f = open(out_file) lines = f.read().split('\n') f.close() return lines def pro_add_qt_dependencies(target_config, metadata, pro_lines, debug=None): """ Add the Qt dependencies of a module to a .pro file. target_config is the target configuration. metadata is the module's meta-data. pro_lines is the list of lines making up the .pro file that is updated. debug is set if debug, rather than release, mode is to be used. If it is None then the mode is taken from the target configuration. """ if debug is None: debug = target_config.debug add = [] remove = [] for qt in metadata.qmake_QT: if qt.startswith('-'): remove.append(qt[1:]) else: add.append(qt) if len(remove) != 0: pro_lines.append('QT -= %s' % ' '.join(remove)) if len(add) != 0: pro_lines.append('QT += %s' % ' '.join(add)) pro_lines.append( 'CONFIG += %s' % ('debug' if debug else 'release')) if metadata.cpp11: pro_lines.append('CONFIG += c++11') pro_lines.extend(target_config.qmake_variables) def get_sip_flags(target_config): """ Return the SIP platform, version and feature flags. target_config is the target configuration. """ sip_flags = [] # If we don't check for signed interpreters, we exclude the 'VendorID' # feature if target_config.py_version < 0x030000 and not target_config.vend_enabled: sip_flags.append('-x') sip_flags.append('VendorID') # Handle Python debug builds. if target_config.py_debug: sip_flags.append('-D') # Handle the platform tag. if target_config.py_platform == 'win32': plattag = 'WS_WIN' elif target_config.py_platform == 'darwin': plattag = 'WS_MACX' else: plattag = 'WS_X11' sip_flags.append('-t') sip_flags.append(plattag) # Handle the Qt version tag. sip_flags.append('-t') sip_flags.append(version_to_sip_tag(target_config.qt_version)) # Handle any feature flags. for xf in target_config.pyqt_disabled_features: sip_flags.append('-x') sip_flags.append(xf) # Handle the version specific Python features. if target_config.py_version < 0x030000: sip_flags.append('-x') sip_flags.append('Py_v3') return ' '.join(sip_flags) def mk_clean_dir(name): """ Create a clean (ie. empty) directory. name is the name of the directory. """ try: shutil.rmtree(name) except: pass try: os.makedirs(name) except: error("Unable to create the %s directory." % name) def mk_dir(name): """ Ensure a directory exists, creating it if necessary. name is the name of the directory. """ try: os.makedirs(name) except: pass def generate_sip_module_code(target_config, verbose, parts, tracing, mname, fatal_warnings, sip_flags, doc_support, qpy_sources=None, qpy_headers=None): """ Generate the code for a module. target_config is the target configuration. verbose is set if the output is to be displayed. parts is the number of parts the generated code should be split into. tracing is set if the generated code should include tracing calls. mname is the name of the module to generate the code for. fatal_warnings is set if warnings are fatal. sip_flags is the string of flags to pass to sip. doc_support is set if documentation support is to be generated for the module. qpy_sources is the optional list of QPy support code source files. qpy_headers is the optional list of QPy support code header files. """ inform("Generating the C++ source for the %s module..." % mname) mk_clean_dir(mname) # Build the SIP command line. argv = [quote(target_config.sip), '-w', sip_flags] if fatal_warnings: argv.append('-f') # Make sure any unknown Qt version gets treated as the latest Qt v5. argv.append('-B') argv.append('Qt_6_0_0') if target_config.prot_is_public: argv.append('-P'); if parts != 0: argv.append('-j') argv.append(str(parts)) if tracing: argv.append('-r') if doc_support: if not target_config.no_docstrings: argv.append('-o'); if target_config.qsci_api: argv.append('-a') argv.append(mname + '.api') if target_config.py_version >= 0x030500 and target_config.pyqt_stubs_dir: argv.append('-y') argv.append(mname + '.pyi') # Pass the absolute pathname so that #line files are absolute. argv.append('-c') argv.append(os.path.abspath(mname)) argv.append('-I') argv.append('sip') sp_sip_dir = source_path('sip') if sp_sip_dir != 'sip': # SIP assumes POSIX style separators. sp_sip_dir = sp_sip_dir.replace('\\', '/') argv.append('-I') argv.append(sp_sip_dir) # The .sip files for the Qt modules will be in the out-of-tree directory. if mname == 'Qt': sip_dir = 'sip' else: sip_dir = sp_sip_dir # Add the name of the .sip file. argv.append('%s/%s/%smod.sip' % (sip_dir, mname, mname)) run_command(' '.join(argv), verbose) # Check the result. if mname == 'Qt': file_check = 'sip%scmodule.c' % mname else: file_check = 'sipAPI%s.h' % mname if not os.access(os.path.join(mname, file_check), os.F_OK): error("Unable to create the C++ code.") # Embed the sip flags. if mname == 'QtCore': inform("Embedding sip flags...") in_f = open(source_path('qpy', 'QtCore', 'qpycore_post_init.cpp.in')) out_f = open_for_writing( os.path.join('QtCore', 'qpycore_post_init.cpp')) for line in in_f: line = line.replace('@@PYQT_SIP_FLAGS@@', sip_flags) out_f.write(line) in_f.close() out_f.close() # Generate the makefile. include_paths = [] libs = '' if target_config.vend_enabled: if mname == 'QtCore': include_paths.append(target_config.vend_inc_dir) libs = '-L%s -lvendorid' % target_config.vend_lib_dir generate_module_makefile(target_config, verbose, mname, include_paths=include_paths, libs=libs, qpy_sources=qpy_sources, qpy_headers=qpy_headers) def generate_module_makefile(target_config, verbose, mname, include_paths=None, libs='', install_path='', src_dir='', qpy_sources=None, qpy_headers=None): """ Generate the makefile for a module. target_config is the target configuration. verbose is set if the output is to be displayed. mname is the name of the module. include_paths is an optional list of values of INCLUDEPATH. libs is an optional additional value of LIBS. install_path is the optional name of the directory that the module will be installed in. src_dir is the optional source directory (by default the sources are assumed to be in the module directory). qpy_sources is the optional list of QPy support code source files. qpy_headers is the optional list of QPy support code header files. """ if verbose: sys.stdout.write('\n') inform("Generating the .pro file for the %s module..." % mname) if src_dir == '': src_dir = mname target_name = mname metadata = MODULE_METADATA[mname] if metadata.qmake_TARGET != '': target_name = metadata.qmake_TARGET pro_lines = ['TEMPLATE = lib'] # Note some version of Qt5 (probably incorrectly) implements # 'plugin_bundle' instead of 'plugin' so we specify both. pro_lines.append('CONFIG += warn_on exceptions_off %s' % ('staticlib hide_symbols' if target_config.static else 'plugin plugin_bundle')) pro_add_qt_dependencies(target_config, metadata, pro_lines) if target_config.qml_debug: pro_lines.append('CONFIG += qml_debug') # Work around QTBUG-39300. pro_lines.append('CONFIG -= android_install') pro_lines.append('TARGET = %s' % target_name) if not target_config.static: debug_suffix = target_config.get_win32_debug_suffix() # For Qt v5.5 make sure these frameworks are already loaded by the time # the libqcocoa.dylib plugin gets loaded. This problem seems to be # fixed in Qt v5.6. extra_lflags = '' if mname == 'QtGui': # Note that this workaround is flawed because it looks at the PyQt # configuration rather than the Qt configuration. It will fail if # the user is building a PyQt without the QtDBus module against a # Qt with the QtDBus library. However it will be fine for the # common case where the PyQt configuration reflects the Qt # configuration. fwks = [] for m in ('QtPrintSupport', 'QtDBus', 'QtWidgets'): if m in target_config.pyqt_modules: fwks.append('-framework ' + m) if len(fwks) != 0: extra_lflags = 'QMAKE_LFLAGS += "%s"\n ' % ' '.join(fwks) # Without the 'no_check_exist' magic the target.files must exist when # qmake is run otherwise the install and uninstall targets are not # generated. shared = ''' win32 { PY_MODULE = %s%s.pyd PY_MODULE_SRC = $(DESTDIR_TARGET) } else { PY_MODULE = %s.so macx { PY_MODULE_SRC = $(TARGET).plugin/Contents/MacOS/$(TARGET) QMAKE_LFLAGS += "-undefined dynamic_lookup" equals(QT_MINOR_VERSION, 5) { %sQMAKE_RPATHDIR += $$[QT_INSTALL_LIBS] } } else { PY_MODULE_SRC = $(TARGET) } } QMAKE_POST_LINK = $(COPY_FILE) $$PY_MODULE_SRC $$PY_MODULE target.CONFIG = no_check_exist target.files = $$PY_MODULE ''' % (target_name, debug_suffix, target_name, extra_lflags) pro_lines.extend(shared.split('\n')) if install_path == '': install_path = target_config.pyqt_module_dir + '/PyQt5' install_path = install_path.replace('\\', '/') pro_lines.append('target.path = %s' % install_path) pro_lines.append('INSTALLS += target') # This optimisation could apply to other platforms. if 'linux' in target_config.qmake_spec and not target_config.static: if target_config.py_version >= 0x030000: entry_point = 'PyInit_%s' % target_name else: entry_point = 'init%s' % target_name exp = open_for_writing(os.path.join(mname, target_name + '.exp')) exp.write('{ global: %s; local: *; };' % entry_point) exp.close() pro_lines.append('QMAKE_LFLAGS += -Wl,--version-script=%s.exp' % target_name) if target_config.prot_is_public: pro_lines.append('DEFINES += SIP_PROTECTED_IS_PUBLIC protected=public') if mname == 'QtCore' and target_config.qtconf_prefix != '': pro_lines.append('DEFINES += PYQT_QTCONF_PREFIX=\\\\\\"%s\\\\\\"' % target_config.qtconf_prefix) # This is needed for Windows. pro_lines.append('INCLUDEPATH += .') target_config.add_sip_h_directives(pro_lines) if metadata.qpy_lib: # This is the easiest way to make sure it is set for handwritten code. if not target_config.py_debug: pro_lines.append('DEFINES += Py_LIMITED_API=0x03040000') pro_lines.append('INCLUDEPATH += %s' % qmake_quote(os.path.relpath(source_path('qpy', mname), mname))) if include_paths: pro_lines.append( 'INCLUDEPATH += ' + ' '.join( [qmake_quote(p) for p in include_paths])) if libs != '': pro_lines.append('LIBS += %s' % libs) if src_dir != mname: pro_lines.append('INCLUDEPATH += %s' % qmake_quote(src_dir)) pro_lines.append('VPATH = %s' % qmake_quote(src_dir)) pro_lines.extend(pro_sources(src_dir, qpy_headers, qpy_sources)) pro_name = os.path.join(mname, mname + '.pro') pro = open_for_writing(pro_name) pro.write('\n'.join(pro_lines)) pro.write('\n') pro.close() def fix_license(src_lfile, dst_lfile): """ Fix the license file, if there is one, so that it conforms to the SIP v5 syntax. src_lfile is the name of the license file. dst_lfile is the name of the fixed license file. """ f = open(src_lfile) f5 = open_for_writing(dst_lfile) for line in f: if line.startswith('%License'): anno_start = line.find('/') anno_end = line.rfind('/') if anno_start < 0 or anno_end < 0 or anno_start == anno_end: error("%s has missing annotations." % name) annos = line[anno_start + 1:anno_end].split(', ') annos5 = [anno[0].lower() + anno[1:] for anno in annos] f5.write('%License(') f5.write(', '.join(annos5)) f5.write(')\n') else: f5.write(line) f5.close() f.close() def check_license(target_config, license_confirmed): """ Handle the validation of the PyQt5 license. target_config is the target configuration. license_confirmed is set if the user has already accepted the license. """ try: import license ltype = license.LicenseType lname = license.LicenseName try: lfile = license.LicenseFile except AttributeError: lfile = None except ImportError: ltype = None if ltype is None: ltype = 'GPL' lname = "GNU General Public License" lfile = 'pyqt-gpl.sip' inform( "This is the %s version of PyQt %s (licensed under the %s) for " "Python %s on %s." % (ltype, PYQT_VERSION_STR, lname, sys.version.split()[0], sys.platform)) # Confirm the license if not already done. if not license_confirmed: loptions = """ Type 'L' to view the license. """ sys.stdout.write(loptions) sys.stdout.write("""Type 'yes' to accept the terms of the license. Type 'no' to decline the terms of the license. """) while 1: sys.stdout.write("Do you accept the terms of the license? ") sys.stdout.flush() try: resp = sys.stdin.readline() except KeyboardInterrupt: raise SystemExit except: resp = "" resp = resp.strip().lower() if resp == "yes": break if resp == "no": sys.exit(0) if resp == 'l': os.system('more LICENSE') # Check that the license file exists and fix its syntax. sip_dir = 'sip' mk_dir(sip_dir) src_lfile = os.path.join(target_config.license_dir, lfile) if os.access(src_lfile, os.F_OK): inform("Found the license file %s." % lfile) fix_license(src_lfile, os.path.join(sip_dir, lfile + '5')) else: error( "Please copy the license file %s to %s." % (lfile, target_config.license_dir)) def check_qt(target_config): """ Check the Qt installation. target_config is the target configuration. """ # Starting with v4.7, Qt (when built with MinGW) assumes that stack frames # are 16 byte aligned because it uses SSE. However the Python Windows # installers are built with 4 byte aligned stack frames. We therefore need # to tweak the g++ flags to deal with it. if target_config.qmake_spec == 'win32-g++': target_config.qmake_variables.append('QMAKE_CFLAGS += -mstackrealign') target_config.qmake_variables.append('QMAKE_CXXFLAGS += -mstackrealign') def check_python(target_config): """ Check the Python installation. target_config is the target configuration. """ # Check the Python version number. This allows us to assume relative # imports and ElemenTree are available. if target_config.py_version < 0x020600: error("PyQt5 requires Python v2.6 or later.") def check_sip(target_config): """ Check that the version of sip is good enough and return its version. target_config is the target configuration. """ if target_config.sip is None: error( "Make sure you have a working sip on your PATH or use the " "--sip argument to explicitly specify a working sip.") pipe = os.popen(' '.join([quote(target_config.sip), '-V'])) for l in pipe: version_str = l.strip() break else: error("'%s -V' did not generate any output." % target_config.sip) pipe.close() if '.dev' not in version_str and 'snapshot' not in version_str: version = version_from_string(version_str) if version is None: error( "'%s -V' generated unexpected output: '%s'." % ( target_config.sip, version_str)) min_version = version_from_string(SIP_MIN_VERSION) if version < min_version: error( "This version of PyQt5 requires sip %s or later." % SIP_MIN_VERSION) return version_str def version_from_string(version_str): """ Convert a version string of the form m.n or m.n.o to an encoded version number (or None if it was an invalid format). version_str is the version string. """ parts = version_str.split('.') if not isinstance(parts, list): return None if len(parts) == 2: parts.append('0') if len(parts) != 3: return None version = 0 for part in parts: try: v = int(part) except ValueError: return None version = (version << 8) + v return version def open_for_writing(fname): """ Return a file opened for writing while handling the most common problem of not having write permission on the directory. fname is the name of the file to open. """ try: return open(fname, 'w') except IOError: error( "There was an error creating %s. Make sure you have write " "permission on the parent directory." % fname) def matching_files(pattern): """ Return a reproducable list of files that match a pattern. """ return sorted(glob.glob(pattern)) def main(argv): """ Create the configuration module module. argv is the list of command line arguments. """ # Create the default target configuration. target_config = TargetConfiguration() # Parse the command line. parser = create_optparser(target_config) opts, target_config.qmake_variables = parser.parse_args() target_config.apply_pre_options(opts) # Query qmake for the basic configuration information. target_config.get_qt_configuration() # Update the target configuration. if opts.config_file is not None: target_config.from_configuration_file(opts.config_file) else: target_config.from_introspection(opts.verbose, opts.debug) target_config.post_configuration() target_config.apply_post_options(opts) # Check the licenses are compatible. check_license(target_config, opts.license_confirmed) # Check Python is what we need. check_python(target_config) # Check SIP is what we need. sip_version = check_sip(target_config) if target_config.sip_h_version is not None: if target_config.sip_h_version != sip_version: error("%s has version %s but %s has version %s." % ( os.path.join(target_config.sip_inc_dir, 'sip.h'), target_config.sip_h_version, target_config.sip, sip_version)) # Check Qt is what we need. check_qt(target_config) # Check for the VendorID package. check_vendorid(target_config) # Check which modules to build if we haven't been told. if len(target_config.pyqt_modules) == 0: check_modules(target_config, opts.disabled_modules, opts.verbose) else: # Check that the user supplied module names are valid. for mname in target_config.pyqt_modules: if mname not in MODULE_METADATA: error("'%s' is not a valid module name." % mname) check_dbus(target_config, opts.verbose) # Tell the user what's been found. inform_user(target_config, sip_version) # Generate the makefiles. generate_makefiles(target_config, opts.verbose, opts.split if opts.concat else 0, opts.tracing, opts.fatal_warnings) ############################################################################### # The script starts here. ############################################################################### if __name__ == '__main__': try: main(sys.argv) except SystemExit: raise except: sys.stderr.write( """An internal error occured. Please report all the output from the program, including the following traceback, to support@riverbankcomputing.com. """) raise PyQt5_gpl-5.10.1/dbus/0000755000076500000240000000000013245231431014434 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/dbus/dbus.cpp0000644000076500000240000002651713245233151016111 0ustar philstaff00000000000000// This is the SIP interface definition for the Qt support for the standard // Python DBus bindings. // // Copyright (c) 2014 Riverbank Computing Limited // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, copy, // modify, merge, publish, distribute, sublicense, and/or sell copies // of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. #include #include #include #include #include #include "helper.h" // The callback to add a watch. extern "C" {static dbus_bool_t add_watch(DBusWatch *watch, void *data);} static dbus_bool_t add_watch(DBusWatch *watch, void *data) { pyqt5DBusHelper *hlp = reinterpret_cast(data); int fd = dbus_watch_get_fd(watch); unsigned int flags = dbus_watch_get_flags(watch); dbus_bool_t enabled = dbus_watch_get_enabled(watch); pyqt5DBusHelper::Watcher watcher; watcher.watch = watch; if (flags & DBUS_WATCH_READABLE) { watcher.read = new QSocketNotifier(fd, QSocketNotifier::Read, hlp); watcher.read->setEnabled(enabled); hlp->connect(watcher.read, SIGNAL(activated(int)), SLOT(readSocket(int))); } if (flags & DBUS_WATCH_WRITABLE) { watcher.write = new QSocketNotifier(fd, QSocketNotifier::Write, hlp); watcher.write->setEnabled(enabled); hlp->connect(watcher.write, SIGNAL(activated(int)), SLOT(writeSocket(int))); } hlp->watchers.insertMulti(fd, watcher); return true; } // The callback to remove a watch. extern "C" {static void remove_watch(DBusWatch *watch, void *data);} static void remove_watch(DBusWatch *watch, void *data) { pyqt5DBusHelper *hlp = reinterpret_cast(data); int fd = dbus_watch_get_fd(watch); pyqt5DBusHelper::Watchers::iterator it = hlp->watchers.find(fd); while (it != hlp->watchers.end() && it.key() == fd) { pyqt5DBusHelper::Watcher &watcher = it.value(); if (watcher.watch == watch) { if (watcher.read) delete watcher.read; if (watcher.write) delete watcher.write; hlp->watchers.erase(it); return; } ++it; } } // The callback to toggle a watch. extern "C" {static void toggle_watch(DBusWatch *watch, void *data);} static void toggle_watch(DBusWatch *watch, void *data) { pyqt5DBusHelper *hlp = reinterpret_cast(data); int fd = dbus_watch_get_fd(watch); unsigned int flags = dbus_watch_get_flags(watch); dbus_bool_t enabled = dbus_watch_get_enabled(watch); pyqt5DBusHelper::Watchers::const_iterator it = hlp->watchers.find(fd); while (it != hlp->watchers.end() && it.key() == fd) { const pyqt5DBusHelper::Watcher &watcher = it.value(); if (watcher.watch == watch) { if (flags & DBUS_WATCH_READABLE && watcher.read) watcher.read->setEnabled(enabled); if (flags & DBUS_WATCH_WRITABLE && watcher.write) watcher.write->setEnabled(enabled); return; } ++it; } } // The callback to add a timeout. extern "C" {static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data);} static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data) { // Nothing to do if the timeout is disabled. if (!dbus_timeout_get_enabled(timeout)) return true; // Pretend it is successful if there is no application instance. This can // happen if the global application gets garbage collected before the // dbus-python main loop does. if (!QCoreApplication::instance()) return true; pyqt5DBusHelper *hlp = reinterpret_cast(data); int id = hlp->startTimer(dbus_timeout_get_interval(timeout)); if (!id) return false; hlp->timeouts[id] = timeout; return true; } // The callback to remove a timeout. extern "C" {static void remove_timeout(DBusTimeout *timeout, void *data);} static void remove_timeout(DBusTimeout *timeout, void *data) { pyqt5DBusHelper *hlp = reinterpret_cast(data); pyqt5DBusHelper::Timeouts::iterator it = hlp->timeouts.begin(); while (it != hlp->timeouts.end()) if (it.value() == timeout) { hlp->killTimer(it.key()); it = hlp->timeouts.erase(it); } else ++it; } // The callback to toggle a timeout. extern "C" {static void toggle_timeout(DBusTimeout *timeout, void *data);} static void toggle_timeout(DBusTimeout *timeout, void *data) { remove_timeout(timeout, data); add_timeout(timeout, data); } // The callback to delete a helper instance. extern "C" {static void dbus_qt_delete_helper(void *data);} static void dbus_qt_delete_helper(void *data) { delete reinterpret_cast(data); } // The callback to wakeup the event loop. extern "C" {static void wakeup_main(void *data);} static void wakeup_main(void *data) { pyqt5DBusHelper *hlp = reinterpret_cast(data); QTimer::singleShot(0, hlp, SLOT(dispatch())); } // The callback to set up a DBus connection. extern "C" {static dbus_bool_t dbus_qt_conn(DBusConnection *conn, void *data);} static dbus_bool_t dbus_qt_conn(DBusConnection *conn, void *data) { bool rc; Py_BEGIN_ALLOW_THREADS pyqt5DBusHelper *hlp = reinterpret_cast(data); hlp->connections.append(conn); if (!dbus_connection_set_watch_functions(conn, add_watch, remove_watch, toggle_watch, data, 0)) rc = false; else if (!dbus_connection_set_timeout_functions(conn, add_timeout, remove_timeout, toggle_timeout, data, 0)) rc = false; else rc = true; dbus_connection_set_wakeup_main_function(conn, wakeup_main, hlp, 0); Py_END_ALLOW_THREADS return rc; } // The callback to set up a DBus server. extern "C" {static dbus_bool_t dbus_qt_srv(DBusServer *srv, void *data);} static dbus_bool_t dbus_qt_srv(DBusServer *srv, void *data) { bool rc; Py_BEGIN_ALLOW_THREADS if (!dbus_server_set_watch_functions(srv, add_watch, remove_watch, toggle_watch, data, 0)) rc = false; else if (!dbus_server_set_timeout_functions(srv, add_timeout, remove_timeout, toggle_timeout, data, 0)) rc = false; else rc = true; Py_END_ALLOW_THREADS return rc; } // Create a new helper instance. pyqt5DBusHelper::pyqt5DBusHelper() : QObject() { } // Handle a socket being ready to read. void pyqt5DBusHelper::readSocket(int fd) { Watchers::const_iterator it = watchers.find(fd); while (it != watchers.end() && it.key() == fd) { const Watcher &watcher = it.value(); if (watcher.read && watcher.read->isEnabled()) { watcher.read->setEnabled(false); dbus_watch_handle(watcher.watch, DBUS_WATCH_READABLE); // The notifier could have just been destroyed. if (watcher.read) watcher.read->setEnabled(true); break; } ++it; } dispatch(); } // Handle a socket being ready to write. void pyqt5DBusHelper::writeSocket(int fd) { Watchers::const_iterator it = watchers.find(fd); while (it != watchers.end() && it.key() == fd) { const Watcher &watcher = it.value(); if (watcher.write && watcher.write->isEnabled()) { watcher.write->setEnabled(false); dbus_watch_handle(watcher.watch, DBUS_WATCH_WRITABLE); // The notifier could have just been destroyed. if (watcher.write) watcher.write->setEnabled(true); break; } ++it; } } // Handoff to the connection dispatcher while there is data. void pyqt5DBusHelper::dispatch() { for (Connections::const_iterator it = connections.constBegin(); it != connections.constEnd(); ++it) while (dbus_connection_dispatch(*it) == DBUS_DISPATCH_DATA_REMAINS) ; } // Reimplemented to handle timer events. void pyqt5DBusHelper::timerEvent(QTimerEvent *e) { DBusTimeout *timeout = timeouts.value(e->timerId()); if (timeout) dbus_timeout_handle(timeout); } PyDoc_STRVAR(DBusQtMainLoop__doc__, "DBusQtMainLoop([set_as_default=False]) -> NativeMainLoop\n" "\n" "Return a NativeMainLoop object.\n" "\n" "If the keyword argument set_as_default is given and is True, set the new\n" "main loop as the default for all new Connection or Bus instances.\n"); extern "C" {static PyObject *DBusQtMainLoop(PyObject *, PyObject *args, PyObject *kwargs);} static PyObject *DBusQtMainLoop(PyObject *, PyObject *args, PyObject *kwargs) { if (PyTuple_Size(args) != 0) { PyErr_SetString(PyExc_TypeError, "DBusQtMainLoop() takes no positional arguments"); return 0; } int set_as_default = 0; static char *argnames[] = {"set_as_default", 0}; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i", argnames, &set_as_default)) return 0; pyqt5DBusHelper *hlp = new pyqt5DBusHelper; PyObject *mainloop = DBusPyNativeMainLoop_New4(dbus_qt_conn, dbus_qt_srv, dbus_qt_delete_helper, hlp); if (!mainloop) { delete hlp; return 0; } if (set_as_default) { PyObject *func = PyObject_GetAttrString(_dbus_bindings_module, "set_default_main_loop"); if (!func) { Py_DECREF(mainloop); return 0; } PyObject *res = PyObject_CallFunctionObjArgs(func, mainloop, 0); Py_DECREF(func); if (!res) { Py_DECREF(mainloop); return 0; } Py_DECREF(res); } return mainloop; } // The table of module functions. static PyMethodDef module_functions[] = { {"DBusQtMainLoop", (PyCFunction)DBusQtMainLoop, METH_VARARGS|METH_KEYWORDS, DBusQtMainLoop__doc__}, {0, 0, 0, 0} }; // The module entry point. #if PY_MAJOR_VERSION >= 3 PyMODINIT_FUNC PyInit_pyqt5() { static PyModuleDef module_def = { PyModuleDef_HEAD_INIT, "pyqt5", NULL, -1, module_functions, }; // Import the generic part of the Python DBus bindings. if (import_dbus_bindings("dbus.mainloop.pyqt5") < 0) return 0; return PyModule_Create(&module_def); } #else PyMODINIT_FUNC initpyqt5() { // Import the generic part of the Python DBus bindings. if (import_dbus_bindings("dbus.mainloop.pyqt5") < 0) return; Py_InitModule("pyqt5", module_functions); } #endif PyQt5_gpl-5.10.1/dbus/helper.h0000644000076500000240000000402313245233151016064 0ustar philstaff00000000000000// This is the declaration of the helper class for the Qt specific support for // the standard Python DBus bindings. // // Copyright (c) 2014 Riverbank Computing Limited // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, copy, // modify, merge, publish, distribute, sublicense, and/or sell copies // of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. #include #include #include #include #include #include #include class QTimerEvent; class pyqt5DBusHelper : public QObject { Q_OBJECT public: struct Watcher { Watcher() : watch(0), read(0), write(0) {} DBusWatch *watch; QPointer read; QPointer write; }; typedef QMultiHash Watchers; typedef QHash Timeouts; typedef QListConnections; pyqt5DBusHelper(); Watchers watchers; Timeouts timeouts; Connections connections; public slots: void readSocket(int fd); void writeSocket(int fd); void dispatch(); protected: void timerEvent(QTimerEvent *e); }; PyQt5_gpl-5.10.1/designer/0000755000076500000240000000000013245231431015277 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/designer/designer.pro-in0000644000076500000240000000066313245233151020233 0ustar philstaff00000000000000CONFIG += plugin @QTCONFIG@ warn_on QT += designer # Work around QTBUG-39300. CONFIG -= android_install TARGET = pyqt5 TEMPLATE = lib INCLUDEPATH += @PYINCDIR@ LIBS += @PYLINK@ DEFINES += PYTHON_LIB=\\\"@PYSHLIB@\\\" SOURCES = pluginloader.cpp HEADERS = pluginloader.h # Install. target.path = @QTPLUGINDIR@ python.path = @QTPLUGINDIR@ python.files = python INSTALLS += target python PyQt5_gpl-5.10.1/designer/pluginloader.cpp0000644000076500000240000002160713245233151020477 0ustar philstaff00000000000000/* * This is the Qt Designer plugin that collects all the Python plugins it can * find as a widget collection to Designer. * * Copyright (c) 2018 Riverbank Computing Limited * * This file is part of PyQt5. * * This file may be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * following information to ensure the GNU General Public License version 3.0 * requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * If you do not wish to use this file under the terms of the GPL version 3.0 * then you may purchase a commercial license. For more information contact * info@riverbankcomputing.com. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include "pluginloader.h" #include #include #include #include #include #include #include #include #include #include "../qpy/QtDesigner/qpydesignercustomwidgetplugin.h" // Construct the collection of Python widgets. PyCustomWidgets::PyCustomWidgets(QObject *parent) : QObject(parent), sys_path(0), sip_unwrapinstance(0), qtdesigner_custom(0) { // Get the default list of directories to search. These correspond to a // standard "python" subdirectory of all the places that Designer looks for // its own plugins. QStringList default_dirs; QStringList path_list = QCoreApplication::libraryPaths(); foreach (const QString &path, path_list) default_dirs.append(path + QDir::separator() + QLatin1String("designer") + QDir::separator() + QLatin1String("python")); default_dirs.append(QDir::homePath() + QDir::separator() + QLatin1String(".designer") + QDir::separator() + QLatin1String("plugins") + QDir::separator() + QLatin1String("python")); // Get the list of directories to search. QStringList dirs; char *pyqt_path = getenv("PYQTDESIGNERPATH"); if (pyqt_path) { #if defined(Q_OS_WIN) QLatin1Char sep(';'); #else QLatin1Char sep(':'); #endif QStringList pyqt_dirs = QString::fromLatin1(pyqt_path).split(sep); for (QStringList::const_iterator it = pyqt_dirs.constBegin(); it != pyqt_dirs.constEnd(); ++it) if ((*it).isEmpty()) dirs << default_dirs; else dirs.append(QDir(*it).canonicalPath()); } else dirs = default_dirs; // Go through each directory. for (int i = 0; i < dirs.size(); ++i) { QString dir = dirs.at(i); // Get a list of all candidate plugin modules. We sort by name to // provide control over the order they are imported. QStringList candidates = QDir(dir).entryList(QDir::Files, QDir::Name); QStringList plugins; for (int p = 0; p < candidates.size(); ++p) { QStringList parts = candidates.at(p).split('.'); if (parts.size() != 2) continue; if (!parts.at(1).startsWith("py")) continue; const QString &plugin = parts.at(0); if (!plugin.endsWith("plugin")) continue; if (plugins.contains(plugin)) continue; plugins.append(plugin); } // Skip if there is nothing of interest in this directory. if (!plugins.size()) continue; // Make sure the interpreter is initialised. Leave this as late as // possible. if (!Py_IsInitialized()) { QLibrary library(PYTHON_LIB); library.setLoadHints(QLibrary::ExportExternalSymbolsHint); if (!library.load()) return; Py_Initialize(); } // Import the plugins with the GIL held. #if defined(WITH_THREAD) PyGILState_STATE gil_state = PyGILState_Ensure(); #endif bool fatal = importPlugins(dir, plugins); #if defined(WITH_THREAD) PyGILState_Release(gil_state); #endif if (fatal) break; } } // Import the plugins from a directory. bool PyCustomWidgets::importPlugins(const QString &dir, const QStringList &plugins) { // Make sure we have sys.path. if (!sys_path) { sys_path = getModuleAttr("sys", "path"); if (!sys_path) return true; } // Make sure we have sip.unwrapinstance. if (!sip_unwrapinstance) { sip_unwrapinstance = getModuleAttr("sip", "unwrapinstance"); if (!sip_unwrapinstance) return true; } // Convert the directory to a Python object with native separators. QString native_dir = QDir::toNativeSeparators(dir); #if PY_VERSION_HEX >= 0x03030000 PyObject *dobj = PyUnicode_FromKindAndData(PyUnicode_2BYTE_KIND, native_dir.constData(), native_dir.length()); if (!dobj) { PyErr_Print(); return false; } #elif PY_VERSION_HEX >= 0x03000000 #if defined(Py_UNICODE_WIDE) QVector ucs4 = native_dir.toUcs4(); PyObject *dobj = PyUnicode_FromUnicode(0, ucs4.size()); if (!dobj) { PyErr_Print(); return false; } memcpy(PyUnicode_AS_UNICODE(dobj), ucs4.constData(), ucs4.size() * sizeof (Py_UNICODE)); #else PyObject *dobj = PyUnicode_FromUnicode(0, native_dir.length()); if (!dobj) { PyErr_Print(); return false; } memcpy(PyUnicode_AS_UNICODE(dobj), native_dir.utf16(), native_dir.length() * sizeof (Py_UNICODE)); #endif #else PyObject *dobj = PyString_FromString(native_dir.toLatin1().constData()); if (!dobj) { PyErr_Print(); return false; } #endif // Add the directory to sys.path. int rc = PyList_Append(sys_path, dobj); Py_DECREF(dobj); if (rc < 0) { PyErr_Print(); return false; } // Import each plugin. for (int plug = 0; plug < plugins.size(); ++plug) { PyObject *plug_mod = PyImport_ImportModule(plugins.at(plug).toLatin1().data()); if (!plug_mod) { PyErr_Print(); continue; } // Make sure we have QPyDesignerCustomWidgetPlugin. We make sure this // is after the import of the first plugin to allow that plugin to // change any API versions. if (!qtdesigner_custom) { qtdesigner_custom = getModuleAttr("PyQt5.QtDesigner", "QPyDesignerCustomWidgetPlugin"); if (!qtdesigner_custom) return true; } // Go through the module looking for types that implement // QDesignerCustomWidgetInterface (ie. by deriving from // QPyDesignerCustomWidgetPlugin). PyObject *mod_dict = PyModule_GetDict(plug_mod); PyObject *key, *value; Py_ssize_t pos = 0; while (PyDict_Next(mod_dict, &pos, &key, &value)) { if (!PyType_Check(value)) continue; if (value == qtdesigner_custom) continue; if (!PyType_IsSubtype((PyTypeObject *)value, (PyTypeObject *)qtdesigner_custom)) continue; // Create the plugin instance. Note that we don't give it a // parent, which make things easier. It also means that Python // owns the instance so we don't decrement the reference count so // that it doesn't get garbage collected. PyObject *plugobj = PyObject_CallObject(value, NULL); if (!plugobj) { PyErr_Print(); continue; } // Get the address of the C++ instance. PyObject *plugaddr = PyObject_CallFunctionObjArgs(sip_unwrapinstance, plugobj, NULL); if (!plugaddr) { Py_DECREF(plugobj); PyErr_Print(); continue; } void *addr = PyLong_AsVoidPtr(plugaddr); Py_DECREF(plugaddr); widgets.append(reinterpret_cast(addr)); } Py_DECREF(plug_mod); } // No fatal errors. return false; } // Return the list of custom widgets. QList PyCustomWidgets::customWidgets() const { return widgets; } // Return the named attribute object from the named module. PyObject *PyCustomWidgets::getModuleAttr(const char *module, const char *attr) { PyObject *mod = PyImport_ImportModule(module); if (!mod) { PyErr_Print(); return 0; } PyObject *obj = PyObject_GetAttrString(mod, attr); Py_DECREF(mod); if (!obj) { PyErr_Print(); return 0; } return obj; } PyQt5_gpl-5.10.1/designer/pluginloader.h0000644000076500000240000000367613245233151020152 0ustar philstaff00000000000000/* * This is the interface of the Qt Designer plugin. * * Copyright (c) 2018 Riverbank Computing Limited * * This file is part of PyQt5. * * This file may be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * following information to ensure the GNU General Public License version 3.0 * requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * If you do not wish to use this file under the terms of the GPL version 3.0 * then you may purchase a commercial license. For more information contact * info@riverbankcomputing.com. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _PLUGINLOADER_H #define _PLUGINLOADER_H #include #include #include #include QT_BEGIN_NAMESPACE class QDesignerCustomWidgetInterface; QT_END_NAMESPACE class PyCustomWidgets : public QObject, public QDesignerCustomWidgetCollectionInterface { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetCollectionInterface") Q_INTERFACES(QDesignerCustomWidgetCollectionInterface) public: PyCustomWidgets(QObject *parent = 0); virtual QList customWidgets() const; private: bool importPlugins(const QString &dir, const QStringList &plugins); static PyObject *getModuleAttr(const char *module, const char *attr); // The sys.path object if we need it. PyObject *sys_path; // The sip.unwrapinstance object if we need it. PyObject *sip_unwrapinstance; // The PyQt5.QtDesigner.QPyDesignerCustomWidgetPlugin object if we need it. PyObject *qtdesigner_custom; QList widgets; }; #endif PyQt5_gpl-5.10.1/examples/0000755000076500000240000000000013245231431015315 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/activeqt/0000755000076500000240000000000013245231431017135 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/activeqt/README0000644000076500000240000000140513245231431020015 0ustar philstaff00000000000000On Windows PyQt provides support for integration with ActiveX controls. These examples demonstrate the basic techniques used to take advantage of ActiveX in PyQt applications. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/activeqt/webbrowser/0000755000076500000240000000000013245231431021316 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/activeqt/webbrowser/icons/0000755000076500000240000000000013245231431022431 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/activeqt/webbrowser/icons/image0.xpm0000644000076500000240000000233213245231431024321 0ustar philstaff00000000000000/* XPM */ static char *image0[]={ "32 32 3 1", ". c None", "a c #000080", "# c #808080", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", ".......#aaaaaaaaa...............", "......#aaaaaaaaaaa.........a....", ".....#aaa.......aaa.......aa....", "....#aaa.........aaaa....aaa....", "....aaa...........aaaa..aaaa....", "....aa..............aaaaaaaa....", "....aa...............aaaaaaa....", "....aa...............aaaaaaa....", "....aa..............aaaaaaaa....", "....aa.............aaaaaaaaa....", "....#aa...........aaaaaaaaaa....", ".....#aa.........aaaaaaaaaaa....", "......aa#.......................", ".......aa#......................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................"}; PyQt5_gpl-5.10.1/examples/activeqt/webbrowser/icons/image1.xpm0000644000076500000240000001061713245231431024327 0ustar philstaff00000000000000/* XPM */ static char *image1[]={ "32 32 142 2", "Qt c None", "#O c #0010f7", "#P c #0021ef", "#R c #0021f7", "#S c #0021ff", "#T c #0029ff", "ah c #0031ff", "#N c #0829f7", "#x c #0831ff", "#C c #0839ff", "#E c #1029e7", "#r c #1039ff", "#o c #1042ff", "#Q c #1831de", "ak c #1831e7", "#k c #1842ff", "#H c #184aff", "aj c #2139e7", "#s c #2142de", "#G c #214aff", ".9 c #2152ff", "#2 c #2939c6", "ag c #2939d6", "a# c #2942ce", "#p c #2942de", "#U c #2952ff", "ae c #295aff", "#y c #3152de", ".2 c #3152e7", "#I c #315aff", "#z c #3163ff", "#1 c #394abd", "#L c #394ade", "#B c #3963ff", "#w c #396bff", "#V c #4252d6", "#l c #4252de", "#W c #4263ef", "#q c #426bff", ".1 c #4273ff", "#5 c #4a5ad6", "#J c #4a73ff", "#K c #4a7bff", "ac c #4a84ff", "ab c #5263c6", ".T c #5263ce", ".M c #5273d6", ".c c #5273e7", ".U c #527bde", "#t c #527bf7", "#A c #5284ff", "#X c #5a63ad", ".V c #5a84ef", "#F c #5a84ff", "#v c #5a8cff", "ad c #636bbd", ".e c #637bc6", ".W c #637bce", ".3 c #637bd6", ".Q c #6384de", ".5 c #638cef", "#b c #638cff", "#j c #6394ff", "af c #6b73bd", "#0 c #6b73c6", ".S c #6b84ce", "#u c #6b94ff", ".C c #6b9cff", "ai c #737bce", ".z c #7384b5", ".j c #7384c6", "#6 c #738cce", ".4 c #738cd6", ".b c #739ce7", ".I c #73a5ff", "#n c #73adff", "#Z c #7b84b5", ".R c #7b8cbd", ".J c #7b94bd", ".n c #7ba5e7", ".P c #7badff", "#c c #7bb5ff", "#M c #84849c", "#3 c #8484ad", ".i c #848cc6", "al c #8494bd", "aa c #849cc6", ".y c #84adff", ".O c #84b5ff", "#a c #84bdff", ".t c #8c94ad", ".a c #8c94b5", ".D c #8c9cbd", ".m c #8c9cce", ".A c #8ca5ef", ".f c #8cadf7", ".H c #8cbdff", "#D c #9494a5", "#8 c #9494bd", "#9 c #9494c6", "a. c #949cbd", ".r c #94c6ff", "#d c #94ceff", "#4 c #9ca5ad", "#7 c #9ca5b5", ".u c #9cbdf7", ".6 c #9cc6ff", ".0 c #9cceff", ".x c #9cd6ff", ".L c #a5a5b5", "#Y c #a5a5bd", "#e c #a5ceff", "## c #a5d6ff", ".X c #adadb5", ".k c #adc6ff", "#i c #add6ff", ".E c #b5b5b5", ".d c #b5b5bd", ".K c #b5bdc6", ".F c #b5ceff", ".N c #b5d6ff", ".B c #b5deff", ".s c #bdbdbd", ".# c #bdbdc6", "#. c #bdd6ff", ".G c #bde7ff", "#h c #c6e7ff", "#f c #c6efff", ".w c #c6f7ff", ".h c #ced6ff", ".Y c #cee7ff", ".q c #ceefff", ".Z c #cef7ff", ".l c #d6efff", ".8 c #d6f7ff", ".o c #deefff", ".7 c #def7ff", "#m c #deffff", "#g c #e7ffff", ".v c #efffff", ".p c #f7ffff", ".g c #ffffff", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQt.#.a.b.c.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQt.d.e.f.g.h.iQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.d.j.k.g.g.l.mQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQt.a.n.o.g.p.q.r.mQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQt.s.t.u.g.g.v.w.x.y.mQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQt.z.A.g.g.v.B.x.r.C.DQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQt.E.a.F.g.g.v.G.r.H.H.I.JQtQtQtQtQtQtQtQtQtQt.s.s.K.K.KQtQt", "QtQt.L.M.N.g.g.q.x.H.O.y.P.P.Q.LQtQtQt.s.s.K.a.R.S.T.U.V.V.Q.W.X", "Qt.#.Q.Y.g.g.Z.0.O.y.P.P.P.P.1.2.3.4.S.e.c.5.f.6.N.l.7.8.Z.0.9.T", ".s.W#..g.p.Z###a.O.P.P.I.I.P#b#c#d#e.B#f#g.7.8.8.q#h#i.r.H#j#k#l", ".e#e.g#m.G#d.O.y.P.I.I.I.I.I.I.H.6####.0.r.H#a.O#c.I#n.I#j.1#o#p", ".5.p#f.x.0.O.y.P.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.I.C.C.C#b#q#r#s", "#t##.r.H.O#c.P.I.I.I.I.I.I.C.I.C.C.I.C.I.C.C.C.C#u.C#j#j#v#w#x#p", "#y#z#j.I.I.P.I.I.C.C.C.I.I.C.C#j#b#v#v#b#j#j#j#b#j#v#b#v#A#B#C#p", "#D#E#k#q#A#j.C.I.C.I.C.C.C.I#F#G#k#k#H#G#I#B.1.1#J#K#K.1#q#z#x#L", ".s#M#N#r#z#K#b#u.C#u.C.C.I.I#B#O#P#Q#E#P#R#S#T#x#r#r#H.9#U#G#T#V", "QtQt.z#N#r#I.1#v#j#u#j.C#u.I#W#X#D.s#Y#D#Z#0#1#2#Q#P#P#N#N#T#E#3", "QtQt.s#4#5#x#H#B#K#v#j#j#j#j#6QtQtQtQtQtQtQt.s.s.d.X#7#8#9a..X.s", "QtQtQtQt.da##S#k#z#J#v#b#j#vaaQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQt.Eab#x#o#I#K#v#vac.iQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQt.sad#E#rae#q#K#wafQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQt.#.Lagah#k#U#kafQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQt#4#Q#T#xahaiQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQt#4adajakalQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; PyQt5_gpl-5.10.1/examples/activeqt/webbrowser/icons/image2.xpm0000644000076500000240000001061713245231431024330 0ustar philstaff00000000000000/* XPM */ static char *image2[]={ "32 32 142 2", "Qt c None", "#Y c #0018e7", "aa c #0018ef", "#E c #0018ff", "#Q c #0021ef", "#K c #0021ff", "a# c #0029ff", "a. c #0829ff", "#P c #0831ff", "#4 c #1021d6", "#R c #1021de", "#L c #1029d6", "#V c #1029e7", "#n c #1039f7", "#W c #1039ff", "#O c #1042ff", "ah c #1831ce", "#y c #1842ff", "aj c #2131c6", "#S c #2131ce", "#z c #2139de", ".0 c #2142de", "ai c #2142e7", ".t c #214aef", "#D c #214aff", ".x c #2152ff", "al c #2939de", "#d c #294ae7", "#I c #2952ff", "#J c #295aff", "#T c #3142bd", "#N c #315aff", "#s c #3163ff", "#F c #394ac6", "#G c #3952d6", "ag c #395ae7", ".B c #3963f7", "ae c #3963ff", ".g c #396bff", "#U c #424ab5", "#2 c #4252b5", ".J c #425ace", "#A c #4263de", ".b c #426be7", "#p c #426bef", "#x c #426bff", ".n c #4273ff", ".o c #4a63ce", "#t c #4a6be7", ".Q c #4a73de", "#3 c #4a73ff", "#C c #4a7bff", "#Z c #525abd", ".1 c #526bbd", ".W c #526bc6", ".R c #526bce", ".P c #527be7", "#w c #5284ff", "#m c #528cff", "ac c #5a63bd", "ak c #5a6bbd", ".O c #5a7bf7", "#H c #5a84ff", "#9 c #5a8cff", "af c #636bb5", ".h c #636bbd", "ab c #6384ef", "#v c #638cff", ".w c #6394ff", ".s c #639cff", "#M c #6b73b5", ".C c #6b73bd", "#u c #6b9cff", ".c c #737bb5", ".S c #7384ce", ".N c #738ce7", ".a c #7394de", ".8 c #7394ef", "#8 c #739cf7", "#B c #739cff", ".A c #73a5ff", "#0 c #7b84b5", ".T c #7b8cbd", ".9 c #7b94c6", "#. c #7b94d6", ".7 c #7ba5ff", ".X c #7badff", ".I c #7bb5ff", "#5 c #848ca5", ".y c #848cad", ".M c #8494b5", "## c #849cd6", "#c c #84adff", ".G c #84b5ff", ".Z c #84bdff", "#o c #8c8cad", "#a c #8ca5ce", ".Y c #8cb5ff", ".H c #8cbdff", "#1 c #9494a5", ".U c #9494ad", "#7 c #949cad", "#b c #94ade7", ".z c #94c6ff", ".v c #94ceff", ".j c #9c9cad", ".u c #9ca5ad", "#r c #9cc6ff", ".m c #9cceff", ".d c #a5a5a5", "#6 c #a5a5ad", ".V c #a5a5b5", ".K c #a5adb5", ".2 c #a5ceff", ".r c #a5d6ff", ".L c #adadad", ".i c #adadb5", ".p c #adadbd", ".q c #addeff", "#e c #ade7ff", "#X c #b5b5b5", ".D c #b5b5bd", ".E c #b5b5c6", ".F c #b5bdc6", ".f c #b5deff", "#q c #b5efff", ".# c #bdbdbd", "ad c #bdbdc6", ".6 c #bddeff", "#i c #bde7ff", "#h c #bdefff", "#g c #c6f7ff", "#l c #cee7ff", "#j c #cef7ff", "#f c #ceffff", ".k c #d6efff", "#k c #d6f7ff", ".l c #d6ffff", ".e c #deefff", ".5 c #e7ffff", ".4 c #efffff", ".3 c #f7ffff", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.b.c.#QtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.d.e.f.g.h.iQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.j.k.l.m.n.o.pQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.d.f.q.r.m.s.t.cQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.u.q.v.m.r.m.w.x.y.#QtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.u.z.z.z.z.m.m.A.B.C.DQtQtQtQt", "QtQt.#.E.F.#.#QtQtQtQtQtQtQtQtQtQt.j.G.H.z.H.z.m.m.I.n.J.KQtQtQt", ".L.M.N.O.P.Q.R.S.T.U.E.#.#QtQtQt.V.W.X.H.Y.H.H.z.z.z.Z.g.0.VQtQt", ".1.2.3.4.5.k.6.2.Y.7.8.a.9#.###a#b.Y.G.G.G.G.Y.G.Y.H.z#c.n#d.u.#", ".b#e#f#g#h#i.f#h#g#g#j#k#k#k.e.4.4#l#c.X.G.G.G.G.G.G.G.H.H#m#n#o", "#p.m#q.r.m.m.m.z#r.m.z.m.r.q.q.q.m.H.G.G.X#c.G.G.G.X.X.X.X.7#s.J", "#t.v.q.m.z.H.H.H.H.H.Z.Y.G.G.G.G.G.G.G.X#c.I#c.X.X.X.A.A#u#u.n#d", "#t.H.r.z.Y.G#c.X.X.X.7.X.X.X.X.X.X.X.X.X.X.X.X.X.7.A#u#v#w#x#y#z", "#A.I.m.H.X.X.X.A.A#B.A#B#u#u#u#u#B.X#c.X.X.X.X.A.A#u.w#C.g#D#E#F", "#G.s.G.A.w#v#H#w#C.n#x#s#I#y#y#y#J#H.X.7.X.X.7.A#u.w#w#J#y#K#L.U", "#M.x.n#N#D#O#P#K#K#Q#Q#R#S#T#U#U#V#W.A.X.A.A#B#u.w.n#D#P#E#L.VQt", "#X.h#V#Q#Y#R#S#U#Z#0#1.p.#.#.#.#.V#2.s.7.A#u#u.w#3#D#P#E#4#5QtQt", "QtQt#6#1#7.D.#.#QtQtQtQtQtQtQtQtQt#6#8#B#u.w#9#s#ya.#E#F.V.#QtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.8#9#H#w#s#Wa#aa#2#XQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#ab#w#C#N#W#K#Eac.#QtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtad.Pae#J#Wa##Vaf#XQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#ag#W#P#Eah#6QtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#ai#K#Eaj.jQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#akalak.iQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; PyQt5_gpl-5.10.1/examples/activeqt/webbrowser/icons/image3.xpm0000644000076500000240000000144313245231431024326 0ustar philstaff00000000000000/* XPM */ static char *image3[]={ "25 25 2 1", "# c #000000", ". c #ffffff", ".........................", ".........................", ".........................", ".........######..........", ".......##########........", "......####....####.......", ".....###........###......", "....#####........###.....", "....##.###........##.....", "...###..###.......###....", "...##....###.......##....", "...##.....###......##....", "...##......###.....##....", "...##.......###....##....", "...###.......###..###....", "....##........###.##.....", "....###........#####.....", ".....###........###......", "......####....####.......", ".......##########........", ".........######..........", ".........................", ".........................", ".........................", "........................."}; PyQt5_gpl-5.10.1/examples/activeqt/webbrowser/icons/image4.xpm0000644000076500000240000000233213245231431024325 0ustar philstaff00000000000000/* XPM */ static char *image4[]={ "32 32 3 1", ". c None", "# c #000080", "a c #808080", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "...............#########a.......", "....#.........###########a......", "....##.......###.......###a.....", "....###....####.........###a....", "....####..####...........###....", "....########..............##....", "....#######...............##....", "....#######...............##....", "....########..............##....", "....#########.............##....", "....##########...........##a....", "....###########.........##a.....", ".......................a##......", "......................a##.......", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................", "................................"}; PyQt5_gpl-5.10.1/examples/activeqt/webbrowser/icons/image5.xpm0000644000076500000240000001273713245231431024340 0ustar philstaff00000000000000/* XPM */ static char *image5[]={ "32 32 211 2", "Qt c None", "aJ c #000000", "#W c #080800", "#N c #100800", "#V c #101000", "#E c #101008", "#M c #181000", "#L c #181800", "#D c #181808", "#F c #181810", "as c #211800", "#K c #211808", "#J c #212110", "#G c #212118", "#q c #212121", "an c #292100", "#I c #292110", "aN c #292910", "#H c #292918", "#y c #292921", "aF c #312900", "#C c #312918", "#i c #312929", ".0 c #313131", "#7 c #393100", "#U c #393108", "aG c #393931", ".M c #393939", "#u c #423939", "#c c #424a42", "aE c #4a4200", "aY c #4a4210", ".V c #4a4239", "#B c #4a4a39", ".m c #4a4a42", "aP c #4a5218", ".G c #4a5252", ".z c #4a5a52", "aO c #524200", "am c #524a00", "#T c #524a08", "#p c #524a4a", ".s c #525252", "#a c #525a52", ".7 c #52635a", "#b c #526363", "az c #5a4a00", "#6 c #5a5208", "aw c #5a5210", ".Z c #5a524a", ".L c #5a5a52", ".y c #5a5a5a", ".F c #5a635a", "#S c #635208", "ax c #635a10", ".U c #635a52", ".r c #635a5a", "aZ c #636321", "## c #63635a", ".A c #636363", "#h c #636b6b", "aL c #637329", "af c #6b5a00", ".6 c #6b635a", "#o c #6b6363", ".E c #6b6b63", "a4 c #6b7321", "aS c #6b7329", "aR c #6b7331", "aX c #736300", "al c #736308", "#R c #736b10", ".T c #736b63", "a5 c #737329", ".i c #73736b", ".K c #737373", "a7 c #737b29", "#g c #737b73", "a9 c #7b7318", "#A c #7b7373", "a8 c #7b7b21", "aV c #7b7b29", "aQ c #7b7b5a", ".J c #7b7b73", ".1 c #7b7b7b", "b# c #7b8431", "a3 c #7b844a", ".8 c #7b847b", "ay c #847308", "#5 c #847310", "aT c #847b21", "b. c #847b29", ".S c #847b73", ".d c #847b7b", "aW c #848421", "a1 c #848429", "a0 c #848431", "bq c #84844a", ".H c #848484", "ae c #8c7b08", "ak c #8c7b10", "#j c #8c8484", "ba c #8c8c63", "a2 c #8c8c7b", ".x c #8c8c84", ".2 c #8c948c", ".9 c #8cada5", "aC c #947b08", ".Y c #947b73", "aK c #948c10", "#Q c #948c18", "a6 c #948c29", "#m c #948c84", "bp c #949442", "aH c #949484", ".D c #94948c", ".n c #949494", "bn c #949c4a", "bl c #949c5a", "bj c #949c63", ".u c #949c94", ".v c #94a59c", "aI c #9c8c10", "#4 c #9c8c18", "#O c #9c8c29", "aM c #9c9418", "#r c #9c948c", "bo c #9c9c4a", "bm c #9c9c52", "bk c #9c9c5a", "bh c #9c9c6b", ".k c #9c9c94", ".a c #9c9c9c", "bi c #9ca56b", "bf c #9ca573", ".h c #9ca59c", "#f c #9ca5a5", ".B c #9cbdb5", "#P c #a59400", "aB c #a59418", "#k c #a5948c", "ar c #a59c29", ".N c #a59c8c", ".P c #a59c94", ".W c #a59c9c", "bg c #a5a573", "bd c #a5a584", ".q c #a5a59c", ".c c #a5a5a5", "be c #a5ad7b", ".o c #a5ada5", ".C c #a5adad", ".I c #a5b5ad", "#d c #a5bdb5", ".w c #a5c6bd", "ad c #ad9c10", "aj c #ad9c18", "#w c #ad9c94", ".f c #ada59c", "bc c #adad7b", "bb c #adad84", ".# c #adada5", ".t c #adadad", ".4 c #adb5ad", "ai c #b5a518", "aq c #b5a529", "aD c #b5a542", "ao c #b5a54a", ".O c #b5a594", "#v c #b5a59c", "at c #b5ad52", "#z c #b5ad9c", ".5 c #b5ada5", ".j c #b5b5ad", ".e c #b5b5b5", ".3 c #b5bdb5", ".Q c #b5bdbd", "#e c #b5cec6", "#8 c #bda539", "#x c #bda59c", "#3 c #bdad29", "#X c #bdad31", "ag c #bdad42", "#n c #bdb5ad", ".b c #bdbdbd", ".X c #bdcec6", "aU c #c6b510", "#. c #c6c6bd", ".p c #c6cece", ".g c #c6ded6", "ac c #cebd31", "#l c #ced6ce", "#s c #ced6d6", "#t c #cedede", "#9 c #d6c610", "#2 c #d6c631", "ap c #dec608", "ah c #dece10", "ab c #dece31", ".l c #deefe7", ".R c #deefef", "au c #e7ce08", "a. c #e7d621", "a# c #e7d631", "aa c #e7d639", "#1 c #e7de39", "#Y c #efde10", "av c #efde21", "aA c #efde29", "#Z c #f7e729", "#0 c #f7e739", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.aQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQt.b.c.d.eQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.g.h.i.bQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQt.j.k.l.e.m.nQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQt.b.a.o.p.q.r.s.tQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQt.u.v.w.k.x.y.z.A.bQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQt.t.k.B.C.k.D.E.F.G.HQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQt.b.#.#.o.I.b.c.J.K.L.M.tQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQt.a.N.O.P.Q.R.o.S.T.U.V.s.bQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQt.t.N.P.W.k.X.R.P.Y.i.A.Z.0.1QtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.b.x.2.w.3.4.I.j.#.5.6.L.F.7.0.cQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.n.8.9.p#..o.4.x.x.x##.s#a#b.s#c.bQtQtQtQtQtQtQt", "QtQtQtQtQtQtQt.t.D.##d#e.h#f.o.P.2.2#g###h.A.z#i.KQtQtQtQtQtQtQt", "QtQtQtQtQtQt.b#j.P.f.P#k.q.4.X#l#m#n.n#o.J.6#p#i#q.cQtQtQtQtQtQt", "QtQtQtQtQtQt.W#m#k.O#m#r.5.k#s#t#m.q#r.U.E.T#p#u#i.M.eQtQtQtQtQt", "QtQtQtQtQt.b.x#r.o.t#v.f.o.4.l#l#w#x.f.i#o.E###a.m#y.nQtQtQtQtQt", "QtQtQtQtQt.b.e.c#d.o#z.u.q#f.I.q.#.#.2#A.U.m#B#h.h.j.bQtQtQtQtQt", "QtQtQtQtQtQtQtQt.b#C#D#E#F#G#G#G#H#I#J#K#L#M#N.iQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.b#O#P#Q#R#S#T#U#L#M#V#W#N#V#V.iQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.b#X#Y#Z#0#0#1#2#3#4#5#6#7#M#V#AQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.b#8#9a.a#aaaaabac#3adaeaf#7#M.JQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.bagaha.a##1aaaa#2aiajakalaman#AQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtaoapa.a#aaaqaraq#3aj#5afamas.JQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtatauava#aw#V#W#Max#4ayafazan.JQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtatahaAaB#W#N#M#V#V#RaCalazas.JQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQt.baDap#Z#Q#N#M#V#M#N#6akafaEaFaG.E#h.JQtQtQtQtQt", "QtQtQtQtQtQtQtQtaHaIahaAaB#W#W#N#WaJ#6aKalamaF#WaJaJ#yQtQtQtQtQt", "QtQtQtQtQtQtQt.qaLaIahavaM#WaJ#W#DaN#RaealaOan#NaNaPaQQtQtQtQtQt", "QtQtQtQtQtQt.jaRaSaTaUavaB#WaNaPaLaVaWaeaX#6aYaZa0a1a2QtQtQtQtQt", "QtQtQtQtQt.ba3a4a5a5aVa6a1aZa7aSaSa5a8a9a4a5b.b#a5a5.kQtQtQtQtQt", "QtQtQtQtQtbaa7a7aVa0b.b#a7b#a0a7a7a7aSaSa7b.aVa0aVaR.#QtQtQtQtQt", "QtQtQtQtQtbbbcbdbebebfbgbhbhbibjbjbkbkblbmbmbnbobpbq.bQtQtQtQtQt"}; PyQt5_gpl-5.10.1/examples/activeqt/webbrowser/icons/image6.xpm0000644000076500000240000000723713245231431024340 0ustar philstaff00000000000000/* XPM */ static char *image6[]={ "22 22 165 2", "Qt c None", ".h c #000000", ".o c #010101", "aF c #030303", "#n c #060606", ".H c #080808", ".r c #0c0c0c", ".q c #121212", "#V c #124e7f", "#m c #131313", ".G c #161615", "aI c #172cac", ".6 c #181818", "aH c #1841b2", ".p c #191919", "#8 c #1928ba", "#W c #1929ba", "aj c #192aba", "av c #1a31c2", "aE c #1b1b1b", "aD c #1b2bc8", "at c #1c79d2", "ah c #1c7dd4", "aA c #1d1d1d", "aC c #1d7ad7", "#6 c #1d7eda", ".5 c #1e1e1e", "#7 c #1e8ae0", "ai c #1e8de0", "au c #1e90e0", ".g c #242424", "#5 c #313b6c", "aB c #343d8d", "#3 c #393939", ".f c #3d3d3d", "ak c #433967", "#C c #434442", "aw c #443c6e", "#l c #454643", "as c #454fa3", ".4 c #474845", "#R c #474846", ".e c #484848", "aG c #4856a0", ".d c #4a4a4a", "#9 c #4c416a", ".c c #4c4c4c", "ag c #4c5cae", "#X c #4d4669", "#z c #4dc2b2", "#P c #4e445a", "#G c #53504e", ".l c #545454", ".b c #555555", "#Q c #595274", "#i c #62b2a2", ".a c #676767", "#j c #69b6a3", ".F c #6f6f6a", ".K c #6f8b89", "ax c #747474", "#a c #76a1a0", ".# c #797979", "#A c #7bd7e8", "ay c #7d7d7d", "#U c #7e7d73", ".I c #808080", ".O c #81a3b8", "az c #828282", "#y c #82d1c0", "#S c #848484", "#O c #857e7c", "#F c #86add2", "#k c #86cdda", "#N c #89b1bd", "#h c #8acec3", "#o c #8c8c8c", "#L c #8cbbca", "al c #8d8d8d", ".s c #8f8f8f", "#H c #909090", "#K c #90bac9", "#M c #91c4cf", "#t c #929292", ".X c #94c2cf", ".N c #94c2d0", ".W c #959595", "#B c #96b9cb", ".3 c #97bede", ".L c #98c2ce", ".P c #9b9b9b", "a. c #9c9c9c", "am c #9d9d9d", "#s c #9dbdc4", "#b c #9e9e9e", "#Y c #a0a0a0", "an c #a6a6a6", "#v c #a6d1d6", ".Z c #a7a1a1", "#I c #a7a7a7", "#D c #a7edde", ".M c #a8d8e5", "#u c #aeaeae", "ac c #b1b1b1", "a# c #b2b2b2", ".2 c #b5cbd6", ".V c #b6b6b6", "ar c #b7b7b7", "#Z c #b8b8b8", "#2 c #bababa", ".Q c #babbb9", "aq c #bbbbbb", "#c c #bcbcbc", ".8 c #bfbfbf", "ap c #c0c0c0", ".1 c #c1d9d2", "aa c #c8c8c8", "ab c #cacaca", "ao c #cbcbcb", ".Y c #ccf8f1", "#J c #cdcdcd", ".R c #cecece", "#p c #d1f9f4", "#4 c #d5d5d5", "#w c #d5ece4", ".9 c #d5f6f5", "#0 c #d6d6d6", ".U c #d7d7d7", "af c #d8d8d8", ".x c #dadada", ".y c #dbdbdb", ".w c #dcdcdc", "#e c #dcf7f4", "#1 c #dddddd", "ae c #dedede", ".E c #dfdfdf", ".z c #e0e0e0", "#g c #e0ebe4", "#q c #e1edea", "#d c #e2e2e2", "#x c #e2ebe2", ".0 c #e2eee5", ".v c #e3e3e3", "## c #e3e7d5", "#r c #e4ebd9", "#E c #e4f2ec", ".u c #e5e5e5", ".S c #e7e7e7", ".k c #e9e9e9", ".A c #ebebeb", ".D c #ededed", ".t c #f0f0f0", "#T c #f4f4f4", ".n c #f6f6f6", ".C c #f7f7f7", "#f c #f8f5f2", ".m c #f8f8f8", ".7 c #f9f9f9", "ad c #fafafa", "#. c #fbf0eb", ".J c #fbfbfb", ".T c #fcfcfc", ".B c #fdfdfd", ".j c #fefefe", ".i c #ffffff", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQt.#.a.b.c.d.d.e.f.g.hQtQtQtQtQtQtQt", "QtQtQtQt.#.i.i.i.i.i.i.i.i.i.h.hQtQtQtQtQtQt", "QtQtQtQt.a.j.j.j.j.j.j.i.i.i.h.k.hQtQtQtQtQt", "QtQtQtQt.l.m.n.o.p.q.r.s.j.i.h.t.u.hQtQtQtQt", "QtQtQtQt.e.v.w.x.y.z.A.n.B.B.h.C.D.E.hQtQtQt", "QtQtQt.h.h.h.h.h.F.G.H.I.n.J.h.h.h.h.h.hQtQt", "QtQt.h.K.L.M.N.O.h.P.Q.R.S.n.T.j.U.V.W.hQtQt", "Qt.h.X.Y.Z.0.1.2.3.h.4.5.6.q.r.s.7.v.8.hQtQt", "Qt.h.9#..###.F.F.F#a.h#b#c#d.m.j.7.v#c.hQtQt", "Qt.h#e#f.a#g#h#i#j#k.h#l#m.r#n#o.7.v#c.hQtQt", "Qt.h#p#q.a#r.F.F.F#s.h#t#u.x.n.j.7.v#c.hQtQt", "Qt.h#v#w.##x#y#z#A#B.h#C#m#m.q#o.7.v#c.hQtQt", "QtQt.h#D.Z#E.F.F#F.h#G#H#I#J.A.7.m.v#c.hQtQt", "QtQtQt.h#K#L#M#N.h#O#P#Q#R#m.q#S#T#d#c.hQtQt", "QtQtQtQt.h.h.h.h.Z#U#V#W#X#Y#Z#0.S#1#2.hQtQt", "QtQtQtQt#3.t.v.x#4#5#6#7#8#9a.a#aaabac.hQtQt", "QtQtQtQt.6ad.kae.yafagahaiajakalamana..oQtQt", "QtQtQtQt.haeaoapaqaqarasatauavawaxayaz.oQtQt", "QtQtQtQtQt.h.h.h.h.haA.oaBaCaiaD.HaEaFQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtaGaHaIQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"}; PyQt5_gpl-5.10.1/examples/activeqt/webbrowser/mainwindow.qrc0000644000076500000240000000050413245231431024200 0ustar philstaff00000000000000 icons/image0.xpm icons/image1.xpm icons/image2.xpm icons/image3.xpm icons/image4.xpm icons/image5.xpm icons/image6.xpm PyQt5_gpl-5.10.1/examples/activeqt/webbrowser/mainwindow.ui0000644000076500000240000001326013245231431024033 0ustar philstaff00000000000000 MainWindow 0 0 812 605 Qt WebBrowser 0 6 QFrame::StyledPanel QFrame::Sunken 1 0 Qt::StrongFocus {8856F961-340A-11D0-A96B-00C04FD705A2} Navigation Qt::Horizontal 4 Address Qt::Horizontal 4 0 0 812 26 &File New &Help :/icons/image0.xpm Go :/icons/image1.xpm Back Backspace :/icons/image2.xpm Forward :/icons/image3.xpm Stop :/icons/image4.xpm Refresh :/icons/image5.xpm Home C&lose Close :/icons/image6.xpm Search About About Qt Window Ctrl+N QAxWidget QWidget
qaxwidget.h
1
PyQt5_gpl-5.10.1/examples/activeqt/webbrowser/mainwindow_rc.py0000644000076500000240000015040113245231431024531 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Thu May 2 15:37:04 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x00\xa7\ \x00\ \x00\x03\x23\x78\x9c\xd3\xd7\x52\x88\x08\xf0\x55\xd0\xd2\xe7\x2a\ \x2e\x49\x2c\xc9\x4c\x56\x48\xce\x48\x2c\x52\xd0\xca\xcc\x4d\x4c\ \x4f\x35\x8e\x8e\xb5\xad\xe6\x52\x32\x32\x55\x00\x21\x05\x43\x25\ \x1d\x2e\x25\x65\x85\x64\x05\x65\x03\x30\x00\x71\xf5\x40\xdc\x34\ \x30\x00\x73\x71\x01\x2a\x49\x2a\x83\x01\x56\x49\x65\x38\xc0\x94\ \x84\x89\x22\xc9\xc2\x25\x91\x34\xc0\x99\x30\x49\x14\xe3\x60\x4c\ \x84\x24\xaa\x5e\x64\x49\xb0\x04\x42\x16\xca\x82\x4b\xa2\xda\x8b\ \x45\x12\x21\x8b\x4d\x12\x2e\x8b\x55\x52\x0f\xee\x59\x74\x07\x21\ \x64\x51\x1d\xa4\x87\xea\x49\x0c\x7f\x22\xcb\xa2\x49\xe2\x0d\x3e\ \xfc\x01\x8f\x3f\xca\xe0\xd2\x70\x2e\xb5\xd2\x10\x69\x92\xb5\xd6\ \x5c\x00\xe0\x4d\x89\x7e\ \x00\x00\x05\x19\ \x00\ \x00\x11\x8f\x78\x9c\xe5\x96\x5b\x4f\x23\x47\x10\x85\xdf\xf9\x15\ \xd6\xd6\xdb\x2a\xaa\xc5\xe3\xb9\x2a\xca\x03\x77\x03\xcb\xc5\x5c\ \x8c\x21\xca\x43\xcf\x8c\x6f\x80\xcd\xc5\x06\x83\xa3\xfc\xf7\x54\ \xf7\xa9\xee\x45\xbb\xfb\xb0\x6c\xa4\x48\x51\x54\x80\xf8\x5c\x5d\ \xa7\x4e\xd7\xf4\x8c\xe7\xd3\xc7\x46\xef\xf8\xa0\xf1\xf1\xd3\xca\ \x6c\x6e\xe6\xe3\xaa\x51\x8d\xcc\x63\xe3\xe3\x78\x62\x86\xfd\xe8\ \xf7\x3f\x7e\xfb\x73\xe5\x43\x2b\x6a\xc8\x4f\x33\x8e\x1a\xd1\x87\ \x5f\x56\x3e\x74\xe6\x8d\xaa\x71\x78\x37\xed\x5b\xa0\x4b\x01\x5a\ \x5d\x6d\xe6\xfd\xcc\xb2\x31\x81\x07\x2e\xbf\xe5\x79\x00\xee\x80\ \xa3\xa6\xe6\xf7\x3d\x23\x6f\x48\xb9\x50\x66\xc7\xb9\x67\x3a\x06\ \xb7\x74\x3d\xc5\x96\x9b\x52\x5f\xa7\x8e\x4f\x02\xc3\xdf\x67\xe5\ \x42\xf3\x5d\xcf\xf0\x4b\x53\x70\xab\x18\x80\x2f\x02\x43\xff\x08\ \x1c\x47\xea\x67\xe4\x58\xfa\x57\xd0\x7f\x05\x87\xfc\xb5\xe5\xa8\ \x29\x79\xf4\x3b\x0d\x8c\xf5\x4b\xe5\x02\xfe\x78\x15\x1c\x47\x60\ \x33\xf6\x0c\x7f\x3c\x57\x36\x3a\xaf\x4d\xcf\xe8\xc7\x2f\xe0\xc4\ \xf7\xbf\x75\x5c\x78\x7d\xaa\xc1\x52\x8f\xfd\xed\x82\xfd\x7a\xda\ \x53\x56\x3d\x3a\xb3\xdc\x92\xfe\x65\xed\xf8\x10\x1c\xf2\x33\x70\ \xda\x52\xde\x76\x2c\xfa\xba\xdf\x1d\x70\x12\x61\xde\x66\xa8\xac\ \xfd\x79\x1d\x2c\xf5\x38\x2f\xfd\xc0\xd8\x8f\xae\x4f\x4b\xd5\x3f\ \xb7\x1c\x47\xb1\x29\x13\xc7\x11\x38\x89\xc0\xbc\xa7\x6c\x74\xbe\ \x6b\xe0\xb4\xa5\xf3\x2d\x95\x4b\xdd\xff\x7d\x60\xe8\xbf\x78\xd6\ \xfe\x53\x70\xe6\xfd\xdc\x39\x36\x69\x4b\xf5\xe7\xca\xaa\xc7\x1d\ \x70\xa6\xfd\xa8\xe5\x59\xfd\x6f\x28\xfb\xfd\x5c\x59\x4e\xc4\x2f\ \xe6\xcb\x4d\x70\x5a\x2a\x5f\x78\xc6\x3c\xf9\x24\x30\xf6\x73\x0c\ \xce\xfc\x7e\x16\xe0\x3c\x56\xfd\x89\x72\xa5\xe7\xa1\x72\x2c\xfe\ \xa1\x6f\x6e\x94\x7d\xbf\x23\xb0\xf8\x83\x5e\x1b\x1c\xf4\x0a\x65\ \xaf\x37\xb0\x9c\xb6\xa4\x1e\xf3\x1f\x05\x86\x7e\x09\xce\x63\x9d\ \xef\xb3\xb2\xd6\xf3\x02\x5c\xa8\x3e\xcf\x94\x35\x4f\x07\x8e\xcb\ \xac\xa5\xfa\x1b\x81\x71\x1e\x9f\xc0\x7e\x3d\xbb\xfd\x65\xad\xcc\ \xfb\x39\x05\xe7\xb1\xce\xeb\x50\xb9\xd2\xeb\x65\xc0\x45\xac\xe7\ \x23\xf7\xac\x7e\x3d\x57\x3a\x8f\xf5\xc0\xe8\xb7\x06\x36\x89\xfa\ \x75\xf7\x6f\x56\xe6\xb1\xf6\x3f\x53\xae\x74\xbe\x05\xb8\x88\xf5\ \xfe\x60\xcf\xb8\x3f\x38\x03\x7b\x3d\xee\x29\xd7\xca\xbb\xe0\xd2\ \xf7\x4b\x2c\xe7\x71\x5e\x19\xf4\x7b\x0d\x8c\x7e\x07\xe0\x42\xfd\ \x10\x29\x57\xfa\xfc\xab\xc0\x41\x7f\x07\xec\xf5\xf9\x4a\x59\xf3\ \xe4\xce\x7f\x5e\x79\x7d\x32\x60\x93\xe8\x7c\x2f\xc1\xa1\xbe\xad\ \xec\xeb\xdd\xf9\x2e\xc4\x8f\xfa\x3d\x0f\x0c\xbd\x4c\xd9\xeb\x97\ \x60\x53\xeb\xf5\x5a\x82\xab\x54\xf5\x9f\x95\xfb\xca\xee\x79\x5b\ \x54\xbe\x9e\x9f\xc0\x26\x51\xbd\x47\x70\xa8\x9f\x28\xfb\x7a\xf7\ \x7c\x94\xd5\x09\xfc\x51\x1a\x18\x7a\x5d\xcf\x7a\x7d\xf7\x95\x6b\ \xe5\x08\x1c\xf4\x1e\xc1\xb5\xef\xe7\xbe\x7f\x4c\x6d\xc3\xf1\xd8\ \xb3\xd6\xdf\x07\x46\xfe\x01\x5c\xab\x1e\xf5\xc1\xfd\x4c\xd9\x9d\ \x8f\x32\x29\xbd\x9f\xcd\xc0\xa8\xdf\xf2\xac\xcf\x8f\x6d\xe5\x5a\ \x79\x00\x0e\xfa\x0f\x60\x41\xf8\x75\xe7\xa5\xac\x4b\xf5\x63\x6a\ \xcf\x5a\x9f\x82\x43\xfd\x18\x1c\xfc\x8d\x94\x55\x8f\xdc\xf3\x5c\ \xa6\xef\xf3\xee\xfb\xa9\xea\x87\xf5\xd7\xe0\x90\x1f\x28\x7b\x3f\ \xee\x79\x55\xa7\x41\x4f\xd9\xaf\xe7\x5b\x65\xbf\xde\xcd\xab\xee\ \x87\xfd\xb8\xfb\xc5\x76\x53\x76\xef\x0b\x4e\x1e\xec\x9e\xd7\x83\ \x90\xef\xcc\xff\x59\xfc\xff\x34\x98\xd8\x70\xc9\x15\xd3\x3f\xd0\ \xa8\xb9\xcf\x03\x1e\xf2\x88\xc7\x3f\xad\x71\xcd\x37\x7c\xcb\x13\ \x9e\xf2\x1d\xdf\xff\xb4\x8f\x01\x3f\xf0\xa3\xa8\xcc\x78\xce\xd5\ \x4f\x69\x3c\x89\xc2\xb3\x28\x58\x95\x05\xbf\xf0\xeb\xdb\xc9\xfc\ \xb0\xc6\x52\x63\x22\xb1\xc6\xeb\xbc\xc1\x9b\x5f\x6b\xc8\xe4\xb7\ \x78\x5b\xfe\x7e\x77\xf2\x32\x8f\x1d\x6e\x8b\x42\x5b\x55\x76\x65\ \x32\x7b\xbc\xff\x45\x83\x3f\xf3\x01\x1f\xf2\x11\x1f\x73\x87\x4f\ \xf8\x94\xcf\xf8\x5c\x14\x83\x1e\x77\xf9\x82\x7b\x52\x7f\x29\xbf\ \x6d\xf5\x73\x25\x57\x69\x95\xbb\x41\xa3\xc9\x11\xb7\x38\xe6\x44\ \xa6\x9f\xca\xff\x97\x9c\x71\x2e\x27\xa2\x10\x19\x22\x43\xa5\x7c\ \xb2\xa3\x71\xe9\x7e\x45\x89\x2a\x9e\x52\x2d\xbb\x24\xbc\xa3\x51\ \x9f\x06\x34\xa4\x11\x8d\x79\x20\x7f\x87\x12\xd7\x74\x63\x43\xce\ \x45\xcc\x31\xdd\x4a\x45\x2f\xe8\x20\xc4\x13\x4d\x68\x4a\x77\x78\ \xaf\xe3\x09\xe1\xca\xd9\x58\x92\xfd\x6f\xe9\xae\xc2\x83\x8b\x89\ \xac\xb7\x55\x3d\x51\x42\x7d\x4f\x23\xa3\x19\xef\xe1\xdd\x4e\xae\ \xdb\x83\xab\x6b\x87\xb8\x7a\xe3\x7f\x27\x28\xec\x3a\x3f\x36\xd6\ \x78\x8d\x9e\xe8\xc9\xee\x47\x35\xda\xd2\x73\x69\xab\xc2\x9a\x2c\ \xf4\xfa\x36\x32\x57\xff\x4c\x0b\x7a\xa1\x57\x5a\xe2\x1d\x56\xae\ \x95\xf5\xfb\xa5\xc3\xba\xfd\xb5\x7d\x5c\xac\x3b\x0f\xbd\xb7\x0e\ \x78\x41\x1b\x3c\xa4\x4d\xda\xa2\x6d\xbc\x87\xcb\x09\xde\x91\xdc\ \x42\xb4\xdb\x64\xb3\x53\xe9\x30\xa3\x5d\xe9\x62\x63\x8f\xda\xc1\ \x59\xa6\x0a\x0b\xf9\xf4\x95\xf6\xe9\x33\x9f\xe3\x5d\x4c\x4e\xef\ \x94\x0e\x45\xf5\x88\x8e\xe5\xf3\x7d\xea\x48\x9c\xd0\x29\x9d\xd1\ \xb9\x44\x97\x2e\xa4\x83\x3a\xb4\x0a\xb2\x7a\x53\x56\x6e\x89\x42\ \x17\xe7\x83\x7a\x3c\x92\x75\x1d\xba\x74\x75\xe7\x74\x45\xab\xd4\ \xe4\x7b\x7b\xca\x5c\x74\x29\x12\xa7\x99\x4e\x71\x41\x2d\x55\x88\ \x29\x79\x7b\xd6\x29\xa5\x26\x65\xbc\xf9\xfd\xd3\x2e\xd9\x1c\x0e\ \xa8\x90\x3d\xbe\x1a\xb6\x73\x90\xf3\x4b\xef\xb8\xe7\x88\x73\xa9\ \xb6\xb3\x9a\xd1\x85\x21\x63\x28\xa2\xde\x3b\xef\x5b\x32\xa5\x9d\ \xb5\xcc\xec\x42\xa6\xb5\x65\xaa\xf7\xdf\xfb\xa6\xe6\x63\xd3\x97\ \x2b\x21\x1e\xa8\x6b\x06\x5f\x3c\xbc\xcb\xc7\x50\x1c\xc8\x1c\xcd\ \x88\xd2\xaf\xb3\x3f\xac\x31\x76\x7b\xb8\xe6\xeb\x6f\xb3\x3f\xac\ \x71\x63\x6e\xcd\xcd\xf7\x9e\xea\xff\xb5\xef\xb9\x7f\x41\xe3\xaf\ \x5f\x57\xfe\x06\xf5\x23\xb8\x71\ \x00\x00\x0e\x9f\ \x2f\ \x2a\x20\x58\x50\x4d\x20\x2a\x2f\x0a\x73\x74\x61\x74\x69\x63\x20\ \x63\x68\x61\x72\x20\x2a\x69\x6d\x61\x67\x65\x36\x5b\x5d\x3d\x7b\ \x0a\x22\x32\x32\x20\x32\x32\x20\x31\x36\x35\x20\x32\x22\x2c\x0a\ \x22\x51\x74\x20\x63\x20\x4e\x6f\x6e\x65\x22\x2c\x0a\x22\x2e\x68\ \x20\x63\x20\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x22\x2e\x6f\ \x20\x63\x20\x23\x30\x31\x30\x31\x30\x31\x22\x2c\x0a\x22\x61\x46\ \x20\x63\x20\x23\x30\x33\x30\x33\x30\x33\x22\x2c\x0a\x22\x23\x6e\ \x20\x63\x20\x23\x30\x36\x30\x36\x30\x36\x22\x2c\x0a\x22\x2e\x48\ \x20\x63\x20\x23\x30\x38\x30\x38\x30\x38\x22\x2c\x0a\x22\x2e\x72\ \x20\x63\x20\x23\x30\x63\x30\x63\x30\x63\x22\x2c\x0a\x22\x2e\x71\ \x20\x63\x20\x23\x31\x32\x31\x32\x31\x32\x22\x2c\x0a\x22\x23\x56\ \x20\x63\x20\x23\x31\x32\x34\x65\x37\x66\x22\x2c\x0a\x22\x23\x6d\ \x20\x63\x20\x23\x31\x33\x31\x33\x31\x33\x22\x2c\x0a\x22\x2e\x47\ \x20\x63\x20\x23\x31\x36\x31\x36\x31\x35\x22\x2c\x0a\x22\x61\x49\ \x20\x63\x20\x23\x31\x37\x32\x63\x61\x63\x22\x2c\x0a\x22\x2e\x36\ \x20\x63\x20\x23\x31\x38\x31\x38\x31\x38\x22\x2c\x0a\x22\x61\x48\ \x20\x63\x20\x23\x31\x38\x34\x31\x62\x32\x22\x2c\x0a\x22\x2e\x70\ \x20\x63\x20\x23\x31\x39\x31\x39\x31\x39\x22\x2c\x0a\x22\x23\x38\ \x20\x63\x20\x23\x31\x39\x32\x38\x62\x61\x22\x2c\x0a\x22\x23\x57\ \x20\x63\x20\x23\x31\x39\x32\x39\x62\x61\x22\x2c\x0a\x22\x61\x6a\ \x20\x63\x20\x23\x31\x39\x32\x61\x62\x61\x22\x2c\x0a\x22\x61\x76\ \x20\x63\x20\x23\x31\x61\x33\x31\x63\x32\x22\x2c\x0a\x22\x61\x45\ \x20\x63\x20\x23\x31\x62\x31\x62\x31\x62\x22\x2c\x0a\x22\x61\x44\ \x20\x63\x20\x23\x31\x62\x32\x62\x63\x38\x22\x2c\x0a\x22\x61\x74\ \x20\x63\x20\x23\x31\x63\x37\x39\x64\x32\x22\x2c\x0a\x22\x61\x68\ \x20\x63\x20\x23\x31\x63\x37\x64\x64\x34\x22\x2c\x0a\x22\x61\x41\ \x20\x63\x20\x23\x31\x64\x31\x64\x31\x64\x22\x2c\x0a\x22\x61\x43\ \x20\x63\x20\x23\x31\x64\x37\x61\x64\x37\x22\x2c\x0a\x22\x23\x36\ \x20\x63\x20\x23\x31\x64\x37\x65\x64\x61\x22\x2c\x0a\x22\x2e\x35\ \x20\x63\x20\x23\x31\x65\x31\x65\x31\x65\x22\x2c\x0a\x22\x23\x37\ \x20\x63\x20\x23\x31\x65\x38\x61\x65\x30\x22\x2c\x0a\x22\x61\x69\ \x20\x63\x20\x23\x31\x65\x38\x64\x65\x30\x22\x2c\x0a\x22\x61\x75\ \x20\x63\x20\x23\x31\x65\x39\x30\x65\x30\x22\x2c\x0a\x22\x2e\x67\ \x20\x63\x20\x23\x32\x34\x32\x34\x32\x34\x22\x2c\x0a\x22\x23\x35\ \x20\x63\x20\x23\x33\x31\x33\x62\x36\x63\x22\x2c\x0a\x22\x61\x42\ \x20\x63\x20\x23\x33\x34\x33\x64\x38\x64\x22\x2c\x0a\x22\x23\x33\ \x20\x63\x20\x23\x33\x39\x33\x39\x33\x39\x22\x2c\x0a\x22\x2e\x66\ \x20\x63\x20\x23\x33\x64\x33\x64\x33\x64\x22\x2c\x0a\x22\x61\x6b\ \x20\x63\x20\x23\x34\x33\x33\x39\x36\x37\x22\x2c\x0a\x22\x23\x43\ \x20\x63\x20\x23\x34\x33\x34\x34\x34\x32\x22\x2c\x0a\x22\x61\x77\ \x20\x63\x20\x23\x34\x34\x33\x63\x36\x65\x22\x2c\x0a\x22\x23\x6c\ \x20\x63\x20\x23\x34\x35\x34\x36\x34\x33\x22\x2c\x0a\x22\x61\x73\ \x20\x63\x20\x23\x34\x35\x34\x66\x61\x33\x22\x2c\x0a\x22\x2e\x34\ \x20\x63\x20\x23\x34\x37\x34\x38\x34\x35\x22\x2c\x0a\x22\x23\x52\ \x20\x63\x20\x23\x34\x37\x34\x38\x34\x36\x22\x2c\x0a\x22\x2e\x65\ \x20\x63\x20\x23\x34\x38\x34\x38\x34\x38\x22\x2c\x0a\x22\x61\x47\ \x20\x63\x20\x23\x34\x38\x35\x36\x61\x30\x22\x2c\x0a\x22\x2e\x64\ \x20\x63\x20\x23\x34\x61\x34\x61\x34\x61\x22\x2c\x0a\x22\x23\x39\ \x20\x63\x20\x23\x34\x63\x34\x31\x36\x61\x22\x2c\x0a\x22\x2e\x63\ \x20\x63\x20\x23\x34\x63\x34\x63\x34\x63\x22\x2c\x0a\x22\x61\x67\ \x20\x63\x20\x23\x34\x63\x35\x63\x61\x65\x22\x2c\x0a\x22\x23\x58\ \x20\x63\x20\x23\x34\x64\x34\x36\x36\x39\x22\x2c\x0a\x22\x23\x7a\ \x20\x63\x20\x23\x34\x64\x63\x32\x62\x32\x22\x2c\x0a\x22\x23\x50\ \x20\x63\x20\x23\x34\x65\x34\x34\x35\x61\x22\x2c\x0a\x22\x23\x47\ \x20\x63\x20\x23\x35\x33\x35\x30\x34\x65\x22\x2c\x0a\x22\x2e\x6c\ \x20\x63\x20\x23\x35\x34\x35\x34\x35\x34\x22\x2c\x0a\x22\x2e\x62\ \x20\x63\x20\x23\x35\x35\x35\x35\x35\x35\x22\x2c\x0a\x22\x23\x51\ \x20\x63\x20\x23\x35\x39\x35\x32\x37\x34\x22\x2c\x0a\x22\x23\x69\ \x20\x63\x20\x23\x36\x32\x62\x32\x61\x32\x22\x2c\x0a\x22\x2e\x61\ \x20\x63\x20\x23\x36\x37\x36\x37\x36\x37\x22\x2c\x0a\x22\x23\x6a\ \x20\x63\x20\x23\x36\x39\x62\x36\x61\x33\x22\x2c\x0a\x22\x2e\x46\ \x20\x63\x20\x23\x36\x66\x36\x66\x36\x61\x22\x2c\x0a\x22\x2e\x4b\ \x20\x63\x20\x23\x36\x66\x38\x62\x38\x39\x22\x2c\x0a\x22\x61\x78\ \x20\x63\x20\x23\x37\x34\x37\x34\x37\x34\x22\x2c\x0a\x22\x23\x61\ \x20\x63\x20\x23\x37\x36\x61\x31\x61\x30\x22\x2c\x0a\x22\x2e\x23\ \x20\x63\x20\x23\x37\x39\x37\x39\x37\x39\x22\x2c\x0a\x22\x23\x41\ \x20\x63\x20\x23\x37\x62\x64\x37\x65\x38\x22\x2c\x0a\x22\x61\x79\ \x20\x63\x20\x23\x37\x64\x37\x64\x37\x64\x22\x2c\x0a\x22\x23\x55\ \x20\x63\x20\x23\x37\x65\x37\x64\x37\x33\x22\x2c\x0a\x22\x2e\x49\ \x20\x63\x20\x23\x38\x30\x38\x30\x38\x30\x22\x2c\x0a\x22\x2e\x4f\ \x20\x63\x20\x23\x38\x31\x61\x33\x62\x38\x22\x2c\x0a\x22\x61\x7a\ \x20\x63\x20\x23\x38\x32\x38\x32\x38\x32\x22\x2c\x0a\x22\x23\x79\ \x20\x63\x20\x23\x38\x32\x64\x31\x63\x30\x22\x2c\x0a\x22\x23\x53\ \x20\x63\x20\x23\x38\x34\x38\x34\x38\x34\x22\x2c\x0a\x22\x23\x4f\ \x20\x63\x20\x23\x38\x35\x37\x65\x37\x63\x22\x2c\x0a\x22\x23\x46\ \x20\x63\x20\x23\x38\x36\x61\x64\x64\x32\x22\x2c\x0a\x22\x23\x6b\ \x20\x63\x20\x23\x38\x36\x63\x64\x64\x61\x22\x2c\x0a\x22\x23\x4e\ \x20\x63\x20\x23\x38\x39\x62\x31\x62\x64\x22\x2c\x0a\x22\x23\x68\ \x20\x63\x20\x23\x38\x61\x63\x65\x63\x33\x22\x2c\x0a\x22\x23\x6f\ \x20\x63\x20\x23\x38\x63\x38\x63\x38\x63\x22\x2c\x0a\x22\x23\x4c\ \x20\x63\x20\x23\x38\x63\x62\x62\x63\x61\x22\x2c\x0a\x22\x61\x6c\ \x20\x63\x20\x23\x38\x64\x38\x64\x38\x64\x22\x2c\x0a\x22\x2e\x73\ \x20\x63\x20\x23\x38\x66\x38\x66\x38\x66\x22\x2c\x0a\x22\x23\x48\ \x20\x63\x20\x23\x39\x30\x39\x30\x39\x30\x22\x2c\x0a\x22\x23\x4b\ \x20\x63\x20\x23\x39\x30\x62\x61\x63\x39\x22\x2c\x0a\x22\x23\x4d\ \x20\x63\x20\x23\x39\x31\x63\x34\x63\x66\x22\x2c\x0a\x22\x23\x74\ \x20\x63\x20\x23\x39\x32\x39\x32\x39\x32\x22\x2c\x0a\x22\x2e\x58\ \x20\x63\x20\x23\x39\x34\x63\x32\x63\x66\x22\x2c\x0a\x22\x2e\x4e\ \x20\x63\x20\x23\x39\x34\x63\x32\x64\x30\x22\x2c\x0a\x22\x2e\x57\ \x20\x63\x20\x23\x39\x35\x39\x35\x39\x35\x22\x2c\x0a\x22\x23\x42\ \x20\x63\x20\x23\x39\x36\x62\x39\x63\x62\x22\x2c\x0a\x22\x2e\x33\ \x20\x63\x20\x23\x39\x37\x62\x65\x64\x65\x22\x2c\x0a\x22\x2e\x4c\ \x20\x63\x20\x23\x39\x38\x63\x32\x63\x65\x22\x2c\x0a\x22\x2e\x50\ \x20\x63\x20\x23\x39\x62\x39\x62\x39\x62\x22\x2c\x0a\x22\x61\x2e\ \x20\x63\x20\x23\x39\x63\x39\x63\x39\x63\x22\x2c\x0a\x22\x61\x6d\ \x20\x63\x20\x23\x39\x64\x39\x64\x39\x64\x22\x2c\x0a\x22\x23\x73\ \x20\x63\x20\x23\x39\x64\x62\x64\x63\x34\x22\x2c\x0a\x22\x23\x62\ \x20\x63\x20\x23\x39\x65\x39\x65\x39\x65\x22\x2c\x0a\x22\x23\x59\ \x20\x63\x20\x23\x61\x30\x61\x30\x61\x30\x22\x2c\x0a\x22\x61\x6e\ \x20\x63\x20\x23\x61\x36\x61\x36\x61\x36\x22\x2c\x0a\x22\x23\x76\ \x20\x63\x20\x23\x61\x36\x64\x31\x64\x36\x22\x2c\x0a\x22\x2e\x5a\ \x20\x63\x20\x23\x61\x37\x61\x31\x61\x31\x22\x2c\x0a\x22\x23\x49\ \x20\x63\x20\x23\x61\x37\x61\x37\x61\x37\x22\x2c\x0a\x22\x23\x44\ \x20\x63\x20\x23\x61\x37\x65\x64\x64\x65\x22\x2c\x0a\x22\x2e\x4d\ \x20\x63\x20\x23\x61\x38\x64\x38\x65\x35\x22\x2c\x0a\x22\x23\x75\ \x20\x63\x20\x23\x61\x65\x61\x65\x61\x65\x22\x2c\x0a\x22\x61\x63\ \x20\x63\x20\x23\x62\x31\x62\x31\x62\x31\x22\x2c\x0a\x22\x61\x23\ \x20\x63\x20\x23\x62\x32\x62\x32\x62\x32\x22\x2c\x0a\x22\x2e\x32\ \x20\x63\x20\x23\x62\x35\x63\x62\x64\x36\x22\x2c\x0a\x22\x2e\x56\ \x20\x63\x20\x23\x62\x36\x62\x36\x62\x36\x22\x2c\x0a\x22\x61\x72\ \x20\x63\x20\x23\x62\x37\x62\x37\x62\x37\x22\x2c\x0a\x22\x23\x5a\ \x20\x63\x20\x23\x62\x38\x62\x38\x62\x38\x22\x2c\x0a\x22\x23\x32\ \x20\x63\x20\x23\x62\x61\x62\x61\x62\x61\x22\x2c\x0a\x22\x2e\x51\ \x20\x63\x20\x23\x62\x61\x62\x62\x62\x39\x22\x2c\x0a\x22\x61\x71\ \x20\x63\x20\x23\x62\x62\x62\x62\x62\x62\x22\x2c\x0a\x22\x23\x63\ \x20\x63\x20\x23\x62\x63\x62\x63\x62\x63\x22\x2c\x0a\x22\x2e\x38\ \x20\x63\x20\x23\x62\x66\x62\x66\x62\x66\x22\x2c\x0a\x22\x61\x70\ \x20\x63\x20\x23\x63\x30\x63\x30\x63\x30\x22\x2c\x0a\x22\x2e\x31\ \x20\x63\x20\x23\x63\x31\x64\x39\x64\x32\x22\x2c\x0a\x22\x61\x61\ \x20\x63\x20\x23\x63\x38\x63\x38\x63\x38\x22\x2c\x0a\x22\x61\x62\ \x20\x63\x20\x23\x63\x61\x63\x61\x63\x61\x22\x2c\x0a\x22\x61\x6f\ \x20\x63\x20\x23\x63\x62\x63\x62\x63\x62\x22\x2c\x0a\x22\x2e\x59\ \x20\x63\x20\x23\x63\x63\x66\x38\x66\x31\x22\x2c\x0a\x22\x23\x4a\ \x20\x63\x20\x23\x63\x64\x63\x64\x63\x64\x22\x2c\x0a\x22\x2e\x52\ \x20\x63\x20\x23\x63\x65\x63\x65\x63\x65\x22\x2c\x0a\x22\x23\x70\ \x20\x63\x20\x23\x64\x31\x66\x39\x66\x34\x22\x2c\x0a\x22\x23\x34\ \x20\x63\x20\x23\x64\x35\x64\x35\x64\x35\x22\x2c\x0a\x22\x23\x77\ \x20\x63\x20\x23\x64\x35\x65\x63\x65\x34\x22\x2c\x0a\x22\x2e\x39\ \x20\x63\x20\x23\x64\x35\x66\x36\x66\x35\x22\x2c\x0a\x22\x23\x30\ \x20\x63\x20\x23\x64\x36\x64\x36\x64\x36\x22\x2c\x0a\x22\x2e\x55\ \x20\x63\x20\x23\x64\x37\x64\x37\x64\x37\x22\x2c\x0a\x22\x61\x66\ \x20\x63\x20\x23\x64\x38\x64\x38\x64\x38\x22\x2c\x0a\x22\x2e\x78\ \x20\x63\x20\x23\x64\x61\x64\x61\x64\x61\x22\x2c\x0a\x22\x2e\x79\ \x20\x63\x20\x23\x64\x62\x64\x62\x64\x62\x22\x2c\x0a\x22\x2e\x77\ \x20\x63\x20\x23\x64\x63\x64\x63\x64\x63\x22\x2c\x0a\x22\x23\x65\ \x20\x63\x20\x23\x64\x63\x66\x37\x66\x34\x22\x2c\x0a\x22\x23\x31\ \x20\x63\x20\x23\x64\x64\x64\x64\x64\x64\x22\x2c\x0a\x22\x61\x65\ \x20\x63\x20\x23\x64\x65\x64\x65\x64\x65\x22\x2c\x0a\x22\x2e\x45\ \x20\x63\x20\x23\x64\x66\x64\x66\x64\x66\x22\x2c\x0a\x22\x2e\x7a\ \x20\x63\x20\x23\x65\x30\x65\x30\x65\x30\x22\x2c\x0a\x22\x23\x67\ \x20\x63\x20\x23\x65\x30\x65\x62\x65\x34\x22\x2c\x0a\x22\x23\x71\ \x20\x63\x20\x23\x65\x31\x65\x64\x65\x61\x22\x2c\x0a\x22\x23\x64\ \x20\x63\x20\x23\x65\x32\x65\x32\x65\x32\x22\x2c\x0a\x22\x23\x78\ \x20\x63\x20\x23\x65\x32\x65\x62\x65\x32\x22\x2c\x0a\x22\x2e\x30\ \x20\x63\x20\x23\x65\x32\x65\x65\x65\x35\x22\x2c\x0a\x22\x2e\x76\ \x20\x63\x20\x23\x65\x33\x65\x33\x65\x33\x22\x2c\x0a\x22\x23\x23\ \x20\x63\x20\x23\x65\x33\x65\x37\x64\x35\x22\x2c\x0a\x22\x23\x72\ \x20\x63\x20\x23\x65\x34\x65\x62\x64\x39\x22\x2c\x0a\x22\x23\x45\ \x20\x63\x20\x23\x65\x34\x66\x32\x65\x63\x22\x2c\x0a\x22\x2e\x75\ \x20\x63\x20\x23\x65\x35\x65\x35\x65\x35\x22\x2c\x0a\x22\x2e\x53\ \x20\x63\x20\x23\x65\x37\x65\x37\x65\x37\x22\x2c\x0a\x22\x2e\x6b\ \x20\x63\x20\x23\x65\x39\x65\x39\x65\x39\x22\x2c\x0a\x22\x2e\x41\ \x20\x63\x20\x23\x65\x62\x65\x62\x65\x62\x22\x2c\x0a\x22\x2e\x44\ \x20\x63\x20\x23\x65\x64\x65\x64\x65\x64\x22\x2c\x0a\x22\x2e\x74\ \x20\x63\x20\x23\x66\x30\x66\x30\x66\x30\x22\x2c\x0a\x22\x23\x54\ \x20\x63\x20\x23\x66\x34\x66\x34\x66\x34\x22\x2c\x0a\x22\x2e\x6e\ \x20\x63\x20\x23\x66\x36\x66\x36\x66\x36\x22\x2c\x0a\x22\x2e\x43\ \x20\x63\x20\x23\x66\x37\x66\x37\x66\x37\x22\x2c\x0a\x22\x23\x66\ \x20\x63\x20\x23\x66\x38\x66\x35\x66\x32\x22\x2c\x0a\x22\x2e\x6d\ \x20\x63\x20\x23\x66\x38\x66\x38\x66\x38\x22\x2c\x0a\x22\x2e\x37\ \x20\x63\x20\x23\x66\x39\x66\x39\x66\x39\x22\x2c\x0a\x22\x61\x64\ \x20\x63\x20\x23\x66\x61\x66\x61\x66\x61\x22\x2c\x0a\x22\x23\x2e\ \x20\x63\x20\x23\x66\x62\x66\x30\x65\x62\x22\x2c\x0a\x22\x2e\x4a\ \x20\x63\x20\x23\x66\x62\x66\x62\x66\x62\x22\x2c\x0a\x22\x2e\x54\ \x20\x63\x20\x23\x66\x63\x66\x63\x66\x63\x22\x2c\x0a\x22\x2e\x42\ \x20\x63\x20\x23\x66\x64\x66\x64\x66\x64\x22\x2c\x0a\x22\x2e\x6a\ \x20\x63\x20\x23\x66\x65\x66\x65\x66\x65\x22\x2c\x0a\x22\x2e\x69\ \x20\x63\x20\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x2e\x23\x2e\x61\x2e\x62\x2e\x63\ \x2e\x64\x2e\x64\x2e\x65\x2e\x66\x2e\x67\x2e\x68\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x23\x2e\x69\x2e\x69\x2e\x69\x2e\x69\ \x2e\x69\x2e\x69\x2e\x69\x2e\x69\x2e\x69\x2e\x68\x2e\x68\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x61\x2e\x6a\x2e\x6a\x2e\x6a\x2e\x6a\ \x2e\x6a\x2e\x6a\x2e\x69\x2e\x69\x2e\x69\x2e\x68\x2e\x6b\x2e\x68\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x6c\x2e\x6d\x2e\x6e\x2e\x6f\x2e\x70\ \x2e\x71\x2e\x72\x2e\x73\x2e\x6a\x2e\x69\x2e\x68\x2e\x74\x2e\x75\ \x2e\x68\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x65\x2e\x76\x2e\x77\x2e\x78\x2e\x79\ \x2e\x7a\x2e\x41\x2e\x6e\x2e\x42\x2e\x42\x2e\x68\x2e\x43\x2e\x44\ \x2e\x45\x2e\x68\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x2e\x68\x2e\x68\x2e\x68\x2e\x68\x2e\x68\x2e\x46\ \x2e\x47\x2e\x48\x2e\x49\x2e\x6e\x2e\x4a\x2e\x68\x2e\x68\x2e\x68\ \x2e\x68\x2e\x68\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x2e\x68\x2e\x4b\x2e\x4c\x2e\x4d\x2e\x4e\x2e\x4f\x2e\x68\ \x2e\x50\x2e\x51\x2e\x52\x2e\x53\x2e\x6e\x2e\x54\x2e\x6a\x2e\x55\ \x2e\x56\x2e\x57\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x2e\x68\x2e\x58\x2e\x59\x2e\x5a\x2e\x30\x2e\x31\x2e\x32\x2e\x33\ \x2e\x68\x2e\x34\x2e\x35\x2e\x36\x2e\x71\x2e\x72\x2e\x73\x2e\x37\ \x2e\x76\x2e\x38\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x2e\x68\x2e\x39\x23\x2e\x2e\x23\x23\x23\x2e\x46\x2e\x46\x2e\x46\ \x23\x61\x2e\x68\x23\x62\x23\x63\x23\x64\x2e\x6d\x2e\x6a\x2e\x37\ \x2e\x76\x23\x63\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x2e\x68\x23\x65\x23\x66\x2e\x61\x23\x67\x23\x68\x23\x69\x23\x6a\ \x23\x6b\x2e\x68\x23\x6c\x23\x6d\x2e\x72\x23\x6e\x23\x6f\x2e\x37\ \x2e\x76\x23\x63\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x2e\x68\x23\x70\x23\x71\x2e\x61\x23\x72\x2e\x46\x2e\x46\x2e\x46\ \x23\x73\x2e\x68\x23\x74\x23\x75\x2e\x78\x2e\x6e\x2e\x6a\x2e\x37\ \x2e\x76\x23\x63\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x2e\x68\x23\x76\x23\x77\x2e\x23\x23\x78\x23\x79\x23\x7a\x23\x41\ \x23\x42\x2e\x68\x23\x43\x23\x6d\x23\x6d\x2e\x71\x23\x6f\x2e\x37\ \x2e\x76\x23\x63\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x2e\x68\x23\x44\x2e\x5a\x23\x45\x2e\x46\x2e\x46\x23\x46\ \x2e\x68\x23\x47\x23\x48\x23\x49\x23\x4a\x2e\x41\x2e\x37\x2e\x6d\ \x2e\x76\x23\x63\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x2e\x68\x23\x4b\x23\x4c\x23\x4d\x23\x4e\x2e\x68\ \x23\x4f\x23\x50\x23\x51\x23\x52\x23\x6d\x2e\x71\x23\x53\x23\x54\ \x23\x64\x23\x63\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x68\x2e\x68\x2e\x68\x2e\x68\x2e\x5a\ \x23\x55\x23\x56\x23\x57\x23\x58\x23\x59\x23\x5a\x23\x30\x2e\x53\ \x23\x31\x23\x32\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x23\x33\x2e\x74\x2e\x76\x2e\x78\x23\x34\ \x23\x35\x23\x36\x23\x37\x23\x38\x23\x39\x61\x2e\x61\x23\x61\x61\ \x61\x62\x61\x63\x2e\x68\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x36\x61\x64\x2e\x6b\x61\x65\x2e\x79\ \x61\x66\x61\x67\x61\x68\x61\x69\x61\x6a\x61\x6b\x61\x6c\x61\x6d\ \x61\x6e\x61\x2e\x2e\x6f\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x68\x61\x65\x61\x6f\x61\x70\x61\x71\ \x61\x71\x61\x72\x61\x73\x61\x74\x61\x75\x61\x76\x61\x77\x61\x78\ \x61\x79\x61\x7a\x2e\x6f\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x2e\x68\x2e\x68\x2e\x68\x2e\x68\ \x2e\x68\x61\x41\x2e\x6f\x61\x42\x61\x43\x61\x69\x61\x44\x2e\x48\ \x61\x45\x61\x46\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x61\x47\x61\x48\x61\x49\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x7d\x3b\x0a\ \x00\x00\x05\x1a\ \x00\ \x00\x11\x8f\x78\x9c\xe5\x96\x49\x73\x32\x47\x0c\x86\xef\xfe\x15\ \x94\x75\x73\xa5\xf4\xc1\xcc\x30\xcc\x54\x2a\x07\xef\x60\xbc\x80\ \x8d\xd7\x54\x0e\x3d\x1b\x06\xbc\xb1\x18\x2f\xa9\xfc\xf7\xa8\x5b\ \x52\xdb\xf9\xca\x17\x93\x5b\x52\x32\x86\x07\x49\xaf\xa4\xee\x9e\ \x19\x7e\x6c\xd4\xae\x7a\x47\xb5\x8d\x1f\x6b\xf3\x85\x59\x8c\xf2\ \x5a\x7e\x6b\x66\xb5\x8d\xd1\xbd\x19\x96\x8d\xdf\xff\xf8\xed\xcf\ \xb5\xf5\x30\xa8\xd1\x5f\x23\x0a\x6a\xc1\xfa\x2f\x6b\xeb\xfd\x45\ \x2d\xaf\x1d\x3f\x3e\x94\x16\xe0\x84\x00\xea\xf5\x46\xbd\x6a\x39\ \xee\x31\x07\x8d\xb2\x72\x7c\xaa\x2c\xfe\x33\xcf\xec\x1f\x08\xa7\ \xcc\xe6\x96\x39\x54\xff\xb1\xe3\x84\xfc\x9c\xff\xca\xec\xfd\xdb\ \xc2\x92\x0f\xbb\x96\x1b\xa4\x57\x72\xfc\x8c\xd9\xfb\x1f\x99\xa3\ \x40\xb8\xef\x98\xf4\x0a\x37\x8f\x99\x28\x4b\xbe\xb0\x8f\x6f\x0b\ \x1b\xe9\x77\x6c\x39\x68\x84\x5a\x6f\xce\x1c\x05\xac\x07\xfb\xc2\ \x12\x8f\x29\x73\x53\xf5\x02\xc7\x69\x98\xe6\xb1\xd3\x1b\x2a\x17\ \xcc\xc0\x1c\x05\x39\xeb\x3d\x29\x8b\xfe\x39\xb3\xea\x99\x52\x58\ \xea\xc1\x9b\xe5\x90\xea\x71\x3c\x06\xca\xd2\x6f\x47\x58\xe3\xdf\ \x99\xe3\x50\xb8\xe1\x38\x8d\x4c\x56\x38\x3e\x54\x96\xfa\x5b\xcc\ \x3e\xfe\x45\x38\x13\xbe\xb0\x1c\x05\x54\xdf\xcd\x03\x77\x9e\x39\ \xff\x92\x39\x0e\xe5\xbc\x4c\x85\x25\x1f\x1b\xcc\x2d\xd5\x6f\x3a\ \x36\x4d\x23\x7a\x07\xcc\xde\xdf\x15\x96\x7c\x93\x33\x27\x91\x70\ \x66\xb9\x49\xf5\x78\xbd\x71\xe0\x99\xd7\xe7\x88\xb9\x15\xb2\x3e\ \xe6\xca\xbc\x5e\x78\x2e\x9c\x49\xff\x0b\x65\x39\x9f\x9b\xcc\x5a\ \x0f\xae\x1c\x9b\x38\x34\x6e\xfd\xf0\x82\x39\x89\x64\xde\x3d\x65\ \x89\x5f\x0a\xe7\xd2\x6f\x61\x39\x0e\xe3\x8c\xd7\x1f\x4b\xe6\x56\ \x26\xfd\x5f\x7a\xe6\xfe\x43\x65\xe9\xbf\xcf\x9c\x44\xb2\xff\x4d\ \xe1\x5c\xea\x67\xca\x52\x7f\xcc\x9c\xea\x7a\x55\x8e\xb3\x56\x28\ \xfb\x5f\x57\x96\xfa\x67\xcc\x49\x24\xe7\xf3\x99\x59\xf3\x71\x5b\ \x58\xe7\x19\x59\x6e\x7d\xf4\xfb\xce\x9c\x44\x59\xd3\xf1\x58\x99\ \xf5\x21\x16\xce\x25\x3e\x52\x96\xf9\x32\xe6\x34\x97\xfd\xe9\x30\ \x9b\xa6\xcc\xf3\x20\x5c\x08\xdf\x38\xce\x7c\xbd\x53\xe1\x5c\xd6\ \xf7\x80\x39\x8d\x84\x39\x3f\x33\x4d\xd1\xef\x09\xab\x5e\xce\x9c\ \x69\x3d\x77\x7e\x92\x28\x89\xd2\xdc\x71\xa8\x2c\xfb\x3f\x12\xce\ \xe5\x7a\xbf\x63\xd6\x7a\xc6\x08\x8b\x1f\xdf\x98\xb5\x1e\x9e\x30\ \xfb\x7a\x12\x9f\xa9\xdf\x9d\xc7\x24\x4f\xb5\x9e\x51\x96\x79\x77\ \x84\x75\xde\x7b\x65\x59\xdf\x4d\x66\x9a\x97\xf5\x2a\xe1\x82\xcf\ \x37\xb6\x99\xb5\x1e\x38\xbd\x94\xfa\x37\x4e\x1f\x12\x65\x39\x2f\ \xa9\xb2\xcc\x8b\xc2\x5a\x7f\xc6\x9c\xc7\xa2\x57\x08\x97\xc2\x6e\ \xbf\xd3\xdc\x5e\xf0\x8e\x5b\xca\x32\xcf\x33\x73\xa6\xfd\xc5\xcc\ \xaa\x87\x75\x61\xd1\xc3\x57\xe6\x42\xfd\xee\x7e\x46\xea\xa2\x07\ \xd7\x9e\xb9\x5e\xc9\xec\xfb\x01\x66\x9f\xef\xae\x6f\x53\x98\x42\ \xfa\x99\x30\xfb\x79\x46\xcc\x3e\xde\x3d\x9f\xb2\x66\xa6\xfd\x17\ \x9e\x79\x3d\xba\xc2\x85\xec\xff\x1e\xb3\xef\xff\x98\xd9\xeb\x6d\ \x09\xab\xdf\x3d\x7f\xb2\xc2\x9a\x63\x50\x96\xeb\x09\x99\x7d\xfe\ \x3e\x73\xd9\x92\x7e\xdd\xf3\x37\x8f\x3d\x57\xc2\x95\xc4\xbf\x30\ \x57\xe2\x47\x8e\x2f\xbd\xde\x35\xb3\xe6\xe3\x54\x58\xf3\x6f\x98\ \x7d\xbe\x3b\xff\xc5\x87\x7e\xc2\xec\xfd\xee\x79\x5d\x7c\xe4\xb7\ \x98\xd5\x0f\xf7\xc2\xe2\x07\xf7\xfc\xb4\xd5\x25\xde\xdd\x4f\x9d\ \x9b\xd9\x3d\x3f\xab\x0f\xbf\x8b\xaf\xbc\xbf\xbf\xf8\x77\xf6\x7f\ \xd0\x40\x40\x83\x19\xe6\x68\x56\xd5\xc0\x02\x4b\xac\x70\x88\xb7\ \x38\x5a\x4d\x83\x14\xc6\x38\x21\x85\x21\xde\xe1\xfd\x2a\x1a\x34\ \xc3\x03\x3e\x52\xfe\x13\x4e\x71\xf6\x7d\x0d\x9c\xe3\x02\x9f\x5d\ \x07\x4b\x7c\xc1\x57\x7c\x5b\x41\xe3\x1d\x37\x45\x61\x8b\x14\x66\ \xb8\x8d\x3b\xdf\xd1\xc0\x5d\x9a\x62\x4f\x14\xf6\x29\xbf\x4d\xd6\ \xc1\x83\xaf\xb2\xa8\xdf\x39\x76\xad\x7d\xd6\xc0\x43\x3c\xc2\x63\ \xa7\x30\xa5\x0e\xda\x78\x42\x73\xf4\xc8\xfa\x78\xf8\x8f\x3c\x83\ \xa7\x78\x86\x03\x3c\xc7\x0b\xb2\x3e\x5e\xe2\x15\x6b\xd0\x69\xe8\ \xe3\xb5\x53\xb8\xc1\xba\xcf\xb7\xd6\xc0\x00\x43\x8c\x28\xaf\xa4\ \xd3\xd2\xa4\x1d\x8f\xa9\xd6\x1d\xb6\x30\x71\xb1\x29\x0e\xf8\x9e\ \x85\x97\x80\x6e\x27\x6e\x00\xc0\x90\x86\xcd\xee\x90\xf5\x20\x83\ \x1c\x0a\x28\x71\x0b\x2a\x18\xba\xcc\x04\xa7\x70\x0b\x23\x3b\x2d\ \x8c\x61\x02\x77\xfc\xbb\x88\x62\x86\x70\x8f\xfb\x50\x48\x0f\x9d\ \x4f\xd6\xc6\x98\x94\x81\x6a\xda\x2c\xaa\x00\x39\x76\xe0\x81\x5e\ \x63\x6c\xc0\x23\x3c\xf1\x6f\x23\x7c\x82\x8a\x56\xa1\xfe\x85\xc2\ \xd7\xb6\x6d\x8d\x7a\x9c\xc2\x0c\xe6\xfc\x7b\x90\xaa\xd8\x7d\xb0\ \x15\x7a\x3f\xc5\x72\xfc\xc7\x27\x9b\xfb\x4c\xaf\x31\xd9\x12\x5e\ \xe0\x95\xfb\x80\x37\x78\xa7\xbe\xdc\xfc\x1f\x55\xf4\x13\xc5\x66\ \x14\xbd\xa4\xff\x63\x67\x99\xcb\xb6\xdf\x6d\xc2\x16\x6c\x8b\xc6\ \x0e\xec\xd2\xda\x4c\xe9\xbb\xf1\x4f\x35\x3b\xb0\x07\xfb\xe4\x9b\ \x40\x9b\xde\x3b\xb0\x45\xfb\xd4\x80\x03\xe8\x42\x97\xde\xa7\x54\ \xfb\x15\x0e\x79\x5f\xe0\x08\x8e\x69\xb2\x77\xf2\x65\xae\xd3\x67\ \xed\x84\x2a\x9d\x40\x0f\xfa\x54\xa5\x07\xa7\x70\x06\x03\xca\x9a\ \x91\xb5\x31\x85\x73\xd2\x1d\xc0\x85\x3f\x63\xef\x4e\xa5\x43\xea\ \x4b\xea\xf5\xd9\x76\x44\x4a\x1d\xb8\x84\x2b\xd8\xa1\x2a\xd7\xd4\ \xed\x0d\xd4\xa1\x01\x01\x29\xf6\xc8\x8e\xc9\x06\xa4\x1d\x7a\x8d\ \x39\x44\xd0\xa4\x1a\x6d\xaa\xdc\x75\x3a\x6c\xf1\x17\xa7\xbc\xc0\ \x2b\x68\x41\x02\xa9\x41\xbc\xc2\xf9\xe7\x6b\x0e\x0b\x03\xd4\xed\ \x84\x66\x3a\x90\x35\x5c\x9a\x6f\xdf\xc7\x70\xd7\x64\xd4\xcb\x23\ \xad\x9e\xed\x65\x69\xf2\x55\xee\x63\x38\x37\x05\xcd\x38\x33\x25\ \xad\x7a\x17\x5e\x4c\xf5\x7d\x0d\x77\xfd\x1d\x9a\xa1\xb9\xa5\x99\ \xce\x61\xb2\x9a\x86\x35\x5a\xdf\xbe\xdd\x45\x73\x6b\x56\xbc\x27\ \xb3\x0a\xfd\x16\x1a\x9b\x89\xb9\x5b\x5d\xe3\x3b\xf6\x9f\xd2\xf8\ \xeb\xd7\xb5\xbf\x01\xda\x3f\xb9\x0e\ \x00\x00\x15\xdf\ \x2f\ \x2a\x20\x58\x50\x4d\x20\x2a\x2f\x0a\x73\x74\x61\x74\x69\x63\x20\ \x63\x68\x61\x72\x20\x2a\x69\x6d\x61\x67\x65\x35\x5b\x5d\x3d\x7b\ \x0a\x22\x33\x32\x20\x33\x32\x20\x32\x31\x31\x20\x32\x22\x2c\x0a\ \x22\x51\x74\x20\x63\x20\x4e\x6f\x6e\x65\x22\x2c\x0a\x22\x61\x4a\ \x20\x63\x20\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x22\x23\x57\ \x20\x63\x20\x23\x30\x38\x30\x38\x30\x30\x22\x2c\x0a\x22\x23\x4e\ \x20\x63\x20\x23\x31\x30\x30\x38\x30\x30\x22\x2c\x0a\x22\x23\x56\ \x20\x63\x20\x23\x31\x30\x31\x30\x30\x30\x22\x2c\x0a\x22\x23\x45\ \x20\x63\x20\x23\x31\x30\x31\x30\x30\x38\x22\x2c\x0a\x22\x23\x4d\ \x20\x63\x20\x23\x31\x38\x31\x30\x30\x30\x22\x2c\x0a\x22\x23\x4c\ \x20\x63\x20\x23\x31\x38\x31\x38\x30\x30\x22\x2c\x0a\x22\x23\x44\ \x20\x63\x20\x23\x31\x38\x31\x38\x30\x38\x22\x2c\x0a\x22\x23\x46\ \x20\x63\x20\x23\x31\x38\x31\x38\x31\x30\x22\x2c\x0a\x22\x61\x73\ \x20\x63\x20\x23\x32\x31\x31\x38\x30\x30\x22\x2c\x0a\x22\x23\x4b\ \x20\x63\x20\x23\x32\x31\x31\x38\x30\x38\x22\x2c\x0a\x22\x23\x4a\ \x20\x63\x20\x23\x32\x31\x32\x31\x31\x30\x22\x2c\x0a\x22\x23\x47\ \x20\x63\x20\x23\x32\x31\x32\x31\x31\x38\x22\x2c\x0a\x22\x23\x71\ \x20\x63\x20\x23\x32\x31\x32\x31\x32\x31\x22\x2c\x0a\x22\x61\x6e\ \x20\x63\x20\x23\x32\x39\x32\x31\x30\x30\x22\x2c\x0a\x22\x23\x49\ \x20\x63\x20\x23\x32\x39\x32\x31\x31\x30\x22\x2c\x0a\x22\x61\x4e\ \x20\x63\x20\x23\x32\x39\x32\x39\x31\x30\x22\x2c\x0a\x22\x23\x48\ \x20\x63\x20\x23\x32\x39\x32\x39\x31\x38\x22\x2c\x0a\x22\x23\x79\ \x20\x63\x20\x23\x32\x39\x32\x39\x32\x31\x22\x2c\x0a\x22\x61\x46\ \x20\x63\x20\x23\x33\x31\x32\x39\x30\x30\x22\x2c\x0a\x22\x23\x43\ \x20\x63\x20\x23\x33\x31\x32\x39\x31\x38\x22\x2c\x0a\x22\x23\x69\ \x20\x63\x20\x23\x33\x31\x32\x39\x32\x39\x22\x2c\x0a\x22\x2e\x30\ \x20\x63\x20\x23\x33\x31\x33\x31\x33\x31\x22\x2c\x0a\x22\x23\x37\ \x20\x63\x20\x23\x33\x39\x33\x31\x30\x30\x22\x2c\x0a\x22\x23\x55\ \x20\x63\x20\x23\x33\x39\x33\x31\x30\x38\x22\x2c\x0a\x22\x61\x47\ \x20\x63\x20\x23\x33\x39\x33\x39\x33\x31\x22\x2c\x0a\x22\x2e\x4d\ \x20\x63\x20\x23\x33\x39\x33\x39\x33\x39\x22\x2c\x0a\x22\x23\x75\ \x20\x63\x20\x23\x34\x32\x33\x39\x33\x39\x22\x2c\x0a\x22\x23\x63\ \x20\x63\x20\x23\x34\x32\x34\x61\x34\x32\x22\x2c\x0a\x22\x61\x45\ \x20\x63\x20\x23\x34\x61\x34\x32\x30\x30\x22\x2c\x0a\x22\x61\x59\ \x20\x63\x20\x23\x34\x61\x34\x32\x31\x30\x22\x2c\x0a\x22\x2e\x56\ \x20\x63\x20\x23\x34\x61\x34\x32\x33\x39\x22\x2c\x0a\x22\x23\x42\ \x20\x63\x20\x23\x34\x61\x34\x61\x33\x39\x22\x2c\x0a\x22\x2e\x6d\ \x20\x63\x20\x23\x34\x61\x34\x61\x34\x32\x22\x2c\x0a\x22\x61\x50\ \x20\x63\x20\x23\x34\x61\x35\x32\x31\x38\x22\x2c\x0a\x22\x2e\x47\ \x20\x63\x20\x23\x34\x61\x35\x32\x35\x32\x22\x2c\x0a\x22\x2e\x7a\ \x20\x63\x20\x23\x34\x61\x35\x61\x35\x32\x22\x2c\x0a\x22\x61\x4f\ \x20\x63\x20\x23\x35\x32\x34\x32\x30\x30\x22\x2c\x0a\x22\x61\x6d\ \x20\x63\x20\x23\x35\x32\x34\x61\x30\x30\x22\x2c\x0a\x22\x23\x54\ \x20\x63\x20\x23\x35\x32\x34\x61\x30\x38\x22\x2c\x0a\x22\x23\x70\ \x20\x63\x20\x23\x35\x32\x34\x61\x34\x61\x22\x2c\x0a\x22\x2e\x73\ \x20\x63\x20\x23\x35\x32\x35\x32\x35\x32\x22\x2c\x0a\x22\x23\x61\ \x20\x63\x20\x23\x35\x32\x35\x61\x35\x32\x22\x2c\x0a\x22\x2e\x37\ \x20\x63\x20\x23\x35\x32\x36\x33\x35\x61\x22\x2c\x0a\x22\x23\x62\ \x20\x63\x20\x23\x35\x32\x36\x33\x36\x33\x22\x2c\x0a\x22\x61\x7a\ \x20\x63\x20\x23\x35\x61\x34\x61\x30\x30\x22\x2c\x0a\x22\x23\x36\ \x20\x63\x20\x23\x35\x61\x35\x32\x30\x38\x22\x2c\x0a\x22\x61\x77\ \x20\x63\x20\x23\x35\x61\x35\x32\x31\x30\x22\x2c\x0a\x22\x2e\x5a\ \x20\x63\x20\x23\x35\x61\x35\x32\x34\x61\x22\x2c\x0a\x22\x2e\x4c\ \x20\x63\x20\x23\x35\x61\x35\x61\x35\x32\x22\x2c\x0a\x22\x2e\x79\ \x20\x63\x20\x23\x35\x61\x35\x61\x35\x61\x22\x2c\x0a\x22\x2e\x46\ \x20\x63\x20\x23\x35\x61\x36\x33\x35\x61\x22\x2c\x0a\x22\x23\x53\ \x20\x63\x20\x23\x36\x33\x35\x32\x30\x38\x22\x2c\x0a\x22\x61\x78\ \x20\x63\x20\x23\x36\x33\x35\x61\x31\x30\x22\x2c\x0a\x22\x2e\x55\ \x20\x63\x20\x23\x36\x33\x35\x61\x35\x32\x22\x2c\x0a\x22\x2e\x72\ \x20\x63\x20\x23\x36\x33\x35\x61\x35\x61\x22\x2c\x0a\x22\x61\x5a\ \x20\x63\x20\x23\x36\x33\x36\x33\x32\x31\x22\x2c\x0a\x22\x23\x23\ \x20\x63\x20\x23\x36\x33\x36\x33\x35\x61\x22\x2c\x0a\x22\x2e\x41\ \x20\x63\x20\x23\x36\x33\x36\x33\x36\x33\x22\x2c\x0a\x22\x23\x68\ \x20\x63\x20\x23\x36\x33\x36\x62\x36\x62\x22\x2c\x0a\x22\x61\x4c\ \x20\x63\x20\x23\x36\x33\x37\x33\x32\x39\x22\x2c\x0a\x22\x61\x66\ \x20\x63\x20\x23\x36\x62\x35\x61\x30\x30\x22\x2c\x0a\x22\x2e\x36\ \x20\x63\x20\x23\x36\x62\x36\x33\x35\x61\x22\x2c\x0a\x22\x23\x6f\ \x20\x63\x20\x23\x36\x62\x36\x33\x36\x33\x22\x2c\x0a\x22\x2e\x45\ \x20\x63\x20\x23\x36\x62\x36\x62\x36\x33\x22\x2c\x0a\x22\x61\x34\ \x20\x63\x20\x23\x36\x62\x37\x33\x32\x31\x22\x2c\x0a\x22\x61\x53\ \x20\x63\x20\x23\x36\x62\x37\x33\x32\x39\x22\x2c\x0a\x22\x61\x52\ \x20\x63\x20\x23\x36\x62\x37\x33\x33\x31\x22\x2c\x0a\x22\x61\x58\ \x20\x63\x20\x23\x37\x33\x36\x33\x30\x30\x22\x2c\x0a\x22\x61\x6c\ \x20\x63\x20\x23\x37\x33\x36\x33\x30\x38\x22\x2c\x0a\x22\x23\x52\ \x20\x63\x20\x23\x37\x33\x36\x62\x31\x30\x22\x2c\x0a\x22\x2e\x54\ \x20\x63\x20\x23\x37\x33\x36\x62\x36\x33\x22\x2c\x0a\x22\x61\x35\ \x20\x63\x20\x23\x37\x33\x37\x33\x32\x39\x22\x2c\x0a\x22\x2e\x69\ \x20\x63\x20\x23\x37\x33\x37\x33\x36\x62\x22\x2c\x0a\x22\x2e\x4b\ \x20\x63\x20\x23\x37\x33\x37\x33\x37\x33\x22\x2c\x0a\x22\x61\x37\ \x20\x63\x20\x23\x37\x33\x37\x62\x32\x39\x22\x2c\x0a\x22\x23\x67\ \x20\x63\x20\x23\x37\x33\x37\x62\x37\x33\x22\x2c\x0a\x22\x61\x39\ \x20\x63\x20\x23\x37\x62\x37\x33\x31\x38\x22\x2c\x0a\x22\x23\x41\ \x20\x63\x20\x23\x37\x62\x37\x33\x37\x33\x22\x2c\x0a\x22\x61\x38\ \x20\x63\x20\x23\x37\x62\x37\x62\x32\x31\x22\x2c\x0a\x22\x61\x56\ \x20\x63\x20\x23\x37\x62\x37\x62\x32\x39\x22\x2c\x0a\x22\x61\x51\ \x20\x63\x20\x23\x37\x62\x37\x62\x35\x61\x22\x2c\x0a\x22\x2e\x4a\ \x20\x63\x20\x23\x37\x62\x37\x62\x37\x33\x22\x2c\x0a\x22\x2e\x31\ \x20\x63\x20\x23\x37\x62\x37\x62\x37\x62\x22\x2c\x0a\x22\x62\x23\ \x20\x63\x20\x23\x37\x62\x38\x34\x33\x31\x22\x2c\x0a\x22\x61\x33\ \x20\x63\x20\x23\x37\x62\x38\x34\x34\x61\x22\x2c\x0a\x22\x2e\x38\ \x20\x63\x20\x23\x37\x62\x38\x34\x37\x62\x22\x2c\x0a\x22\x61\x79\ \x20\x63\x20\x23\x38\x34\x37\x33\x30\x38\x22\x2c\x0a\x22\x23\x35\ \x20\x63\x20\x23\x38\x34\x37\x33\x31\x30\x22\x2c\x0a\x22\x61\x54\ \x20\x63\x20\x23\x38\x34\x37\x62\x32\x31\x22\x2c\x0a\x22\x62\x2e\ \x20\x63\x20\x23\x38\x34\x37\x62\x32\x39\x22\x2c\x0a\x22\x2e\x53\ \x20\x63\x20\x23\x38\x34\x37\x62\x37\x33\x22\x2c\x0a\x22\x2e\x64\ \x20\x63\x20\x23\x38\x34\x37\x62\x37\x62\x22\x2c\x0a\x22\x61\x57\ \x20\x63\x20\x23\x38\x34\x38\x34\x32\x31\x22\x2c\x0a\x22\x61\x31\ \x20\x63\x20\x23\x38\x34\x38\x34\x32\x39\x22\x2c\x0a\x22\x61\x30\ \x20\x63\x20\x23\x38\x34\x38\x34\x33\x31\x22\x2c\x0a\x22\x62\x71\ \x20\x63\x20\x23\x38\x34\x38\x34\x34\x61\x22\x2c\x0a\x22\x2e\x48\ \x20\x63\x20\x23\x38\x34\x38\x34\x38\x34\x22\x2c\x0a\x22\x61\x65\ \x20\x63\x20\x23\x38\x63\x37\x62\x30\x38\x22\x2c\x0a\x22\x61\x6b\ \x20\x63\x20\x23\x38\x63\x37\x62\x31\x30\x22\x2c\x0a\x22\x23\x6a\ \x20\x63\x20\x23\x38\x63\x38\x34\x38\x34\x22\x2c\x0a\x22\x62\x61\ \x20\x63\x20\x23\x38\x63\x38\x63\x36\x33\x22\x2c\x0a\x22\x61\x32\ \x20\x63\x20\x23\x38\x63\x38\x63\x37\x62\x22\x2c\x0a\x22\x2e\x78\ \x20\x63\x20\x23\x38\x63\x38\x63\x38\x34\x22\x2c\x0a\x22\x2e\x32\ \x20\x63\x20\x23\x38\x63\x39\x34\x38\x63\x22\x2c\x0a\x22\x2e\x39\ \x20\x63\x20\x23\x38\x63\x61\x64\x61\x35\x22\x2c\x0a\x22\x61\x43\ \x20\x63\x20\x23\x39\x34\x37\x62\x30\x38\x22\x2c\x0a\x22\x2e\x59\ \x20\x63\x20\x23\x39\x34\x37\x62\x37\x33\x22\x2c\x0a\x22\x61\x4b\ \x20\x63\x20\x23\x39\x34\x38\x63\x31\x30\x22\x2c\x0a\x22\x23\x51\ \x20\x63\x20\x23\x39\x34\x38\x63\x31\x38\x22\x2c\x0a\x22\x61\x36\ \x20\x63\x20\x23\x39\x34\x38\x63\x32\x39\x22\x2c\x0a\x22\x23\x6d\ \x20\x63\x20\x23\x39\x34\x38\x63\x38\x34\x22\x2c\x0a\x22\x62\x70\ \x20\x63\x20\x23\x39\x34\x39\x34\x34\x32\x22\x2c\x0a\x22\x61\x48\ \x20\x63\x20\x23\x39\x34\x39\x34\x38\x34\x22\x2c\x0a\x22\x2e\x44\ \x20\x63\x20\x23\x39\x34\x39\x34\x38\x63\x22\x2c\x0a\x22\x2e\x6e\ \x20\x63\x20\x23\x39\x34\x39\x34\x39\x34\x22\x2c\x0a\x22\x62\x6e\ \x20\x63\x20\x23\x39\x34\x39\x63\x34\x61\x22\x2c\x0a\x22\x62\x6c\ \x20\x63\x20\x23\x39\x34\x39\x63\x35\x61\x22\x2c\x0a\x22\x62\x6a\ \x20\x63\x20\x23\x39\x34\x39\x63\x36\x33\x22\x2c\x0a\x22\x2e\x75\ \x20\x63\x20\x23\x39\x34\x39\x63\x39\x34\x22\x2c\x0a\x22\x2e\x76\ \x20\x63\x20\x23\x39\x34\x61\x35\x39\x63\x22\x2c\x0a\x22\x61\x49\ \x20\x63\x20\x23\x39\x63\x38\x63\x31\x30\x22\x2c\x0a\x22\x23\x34\ \x20\x63\x20\x23\x39\x63\x38\x63\x31\x38\x22\x2c\x0a\x22\x23\x4f\ \x20\x63\x20\x23\x39\x63\x38\x63\x32\x39\x22\x2c\x0a\x22\x61\x4d\ \x20\x63\x20\x23\x39\x63\x39\x34\x31\x38\x22\x2c\x0a\x22\x23\x72\ \x20\x63\x20\x23\x39\x63\x39\x34\x38\x63\x22\x2c\x0a\x22\x62\x6f\ \x20\x63\x20\x23\x39\x63\x39\x63\x34\x61\x22\x2c\x0a\x22\x62\x6d\ \x20\x63\x20\x23\x39\x63\x39\x63\x35\x32\x22\x2c\x0a\x22\x62\x6b\ \x20\x63\x20\x23\x39\x63\x39\x63\x35\x61\x22\x2c\x0a\x22\x62\x68\ \x20\x63\x20\x23\x39\x63\x39\x63\x36\x62\x22\x2c\x0a\x22\x2e\x6b\ \x20\x63\x20\x23\x39\x63\x39\x63\x39\x34\x22\x2c\x0a\x22\x2e\x61\ \x20\x63\x20\x23\x39\x63\x39\x63\x39\x63\x22\x2c\x0a\x22\x62\x69\ \x20\x63\x20\x23\x39\x63\x61\x35\x36\x62\x22\x2c\x0a\x22\x62\x66\ \x20\x63\x20\x23\x39\x63\x61\x35\x37\x33\x22\x2c\x0a\x22\x2e\x68\ \x20\x63\x20\x23\x39\x63\x61\x35\x39\x63\x22\x2c\x0a\x22\x23\x66\ \x20\x63\x20\x23\x39\x63\x61\x35\x61\x35\x22\x2c\x0a\x22\x2e\x42\ \x20\x63\x20\x23\x39\x63\x62\x64\x62\x35\x22\x2c\x0a\x22\x23\x50\ \x20\x63\x20\x23\x61\x35\x39\x34\x30\x30\x22\x2c\x0a\x22\x61\x42\ \x20\x63\x20\x23\x61\x35\x39\x34\x31\x38\x22\x2c\x0a\x22\x23\x6b\ \x20\x63\x20\x23\x61\x35\x39\x34\x38\x63\x22\x2c\x0a\x22\x61\x72\ \x20\x63\x20\x23\x61\x35\x39\x63\x32\x39\x22\x2c\x0a\x22\x2e\x4e\ \x20\x63\x20\x23\x61\x35\x39\x63\x38\x63\x22\x2c\x0a\x22\x2e\x50\ \x20\x63\x20\x23\x61\x35\x39\x63\x39\x34\x22\x2c\x0a\x22\x2e\x57\ \x20\x63\x20\x23\x61\x35\x39\x63\x39\x63\x22\x2c\x0a\x22\x62\x67\ \x20\x63\x20\x23\x61\x35\x61\x35\x37\x33\x22\x2c\x0a\x22\x62\x64\ \x20\x63\x20\x23\x61\x35\x61\x35\x38\x34\x22\x2c\x0a\x22\x2e\x71\ \x20\x63\x20\x23\x61\x35\x61\x35\x39\x63\x22\x2c\x0a\x22\x2e\x63\ \x20\x63\x20\x23\x61\x35\x61\x35\x61\x35\x22\x2c\x0a\x22\x62\x65\ \x20\x63\x20\x23\x61\x35\x61\x64\x37\x62\x22\x2c\x0a\x22\x2e\x6f\ \x20\x63\x20\x23\x61\x35\x61\x64\x61\x35\x22\x2c\x0a\x22\x2e\x43\ \x20\x63\x20\x23\x61\x35\x61\x64\x61\x64\x22\x2c\x0a\x22\x2e\x49\ \x20\x63\x20\x23\x61\x35\x62\x35\x61\x64\x22\x2c\x0a\x22\x23\x64\ \x20\x63\x20\x23\x61\x35\x62\x64\x62\x35\x22\x2c\x0a\x22\x2e\x77\ \x20\x63\x20\x23\x61\x35\x63\x36\x62\x64\x22\x2c\x0a\x22\x61\x64\ \x20\x63\x20\x23\x61\x64\x39\x63\x31\x30\x22\x2c\x0a\x22\x61\x6a\ \x20\x63\x20\x23\x61\x64\x39\x63\x31\x38\x22\x2c\x0a\x22\x23\x77\ \x20\x63\x20\x23\x61\x64\x39\x63\x39\x34\x22\x2c\x0a\x22\x2e\x66\ \x20\x63\x20\x23\x61\x64\x61\x35\x39\x63\x22\x2c\x0a\x22\x62\x63\ \x20\x63\x20\x23\x61\x64\x61\x64\x37\x62\x22\x2c\x0a\x22\x62\x62\ \x20\x63\x20\x23\x61\x64\x61\x64\x38\x34\x22\x2c\x0a\x22\x2e\x23\ \x20\x63\x20\x23\x61\x64\x61\x64\x61\x35\x22\x2c\x0a\x22\x2e\x74\ \x20\x63\x20\x23\x61\x64\x61\x64\x61\x64\x22\x2c\x0a\x22\x2e\x34\ \x20\x63\x20\x23\x61\x64\x62\x35\x61\x64\x22\x2c\x0a\x22\x61\x69\ \x20\x63\x20\x23\x62\x35\x61\x35\x31\x38\x22\x2c\x0a\x22\x61\x71\ \x20\x63\x20\x23\x62\x35\x61\x35\x32\x39\x22\x2c\x0a\x22\x61\x44\ \x20\x63\x20\x23\x62\x35\x61\x35\x34\x32\x22\x2c\x0a\x22\x61\x6f\ \x20\x63\x20\x23\x62\x35\x61\x35\x34\x61\x22\x2c\x0a\x22\x2e\x4f\ \x20\x63\x20\x23\x62\x35\x61\x35\x39\x34\x22\x2c\x0a\x22\x23\x76\ \x20\x63\x20\x23\x62\x35\x61\x35\x39\x63\x22\x2c\x0a\x22\x61\x74\ \x20\x63\x20\x23\x62\x35\x61\x64\x35\x32\x22\x2c\x0a\x22\x23\x7a\ \x20\x63\x20\x23\x62\x35\x61\x64\x39\x63\x22\x2c\x0a\x22\x2e\x35\ \x20\x63\x20\x23\x62\x35\x61\x64\x61\x35\x22\x2c\x0a\x22\x2e\x6a\ \x20\x63\x20\x23\x62\x35\x62\x35\x61\x64\x22\x2c\x0a\x22\x2e\x65\ \x20\x63\x20\x23\x62\x35\x62\x35\x62\x35\x22\x2c\x0a\x22\x2e\x33\ \x20\x63\x20\x23\x62\x35\x62\x64\x62\x35\x22\x2c\x0a\x22\x2e\x51\ \x20\x63\x20\x23\x62\x35\x62\x64\x62\x64\x22\x2c\x0a\x22\x23\x65\ \x20\x63\x20\x23\x62\x35\x63\x65\x63\x36\x22\x2c\x0a\x22\x23\x38\ \x20\x63\x20\x23\x62\x64\x61\x35\x33\x39\x22\x2c\x0a\x22\x23\x78\ \x20\x63\x20\x23\x62\x64\x61\x35\x39\x63\x22\x2c\x0a\x22\x23\x33\ \x20\x63\x20\x23\x62\x64\x61\x64\x32\x39\x22\x2c\x0a\x22\x23\x58\ \x20\x63\x20\x23\x62\x64\x61\x64\x33\x31\x22\x2c\x0a\x22\x61\x67\ \x20\x63\x20\x23\x62\x64\x61\x64\x34\x32\x22\x2c\x0a\x22\x23\x6e\ \x20\x63\x20\x23\x62\x64\x62\x35\x61\x64\x22\x2c\x0a\x22\x2e\x62\ \x20\x63\x20\x23\x62\x64\x62\x64\x62\x64\x22\x2c\x0a\x22\x2e\x58\ \x20\x63\x20\x23\x62\x64\x63\x65\x63\x36\x22\x2c\x0a\x22\x61\x55\ \x20\x63\x20\x23\x63\x36\x62\x35\x31\x30\x22\x2c\x0a\x22\x23\x2e\ \x20\x63\x20\x23\x63\x36\x63\x36\x62\x64\x22\x2c\x0a\x22\x2e\x70\ \x20\x63\x20\x23\x63\x36\x63\x65\x63\x65\x22\x2c\x0a\x22\x2e\x67\ \x20\x63\x20\x23\x63\x36\x64\x65\x64\x36\x22\x2c\x0a\x22\x61\x63\ \x20\x63\x20\x23\x63\x65\x62\x64\x33\x31\x22\x2c\x0a\x22\x23\x6c\ \x20\x63\x20\x23\x63\x65\x64\x36\x63\x65\x22\x2c\x0a\x22\x23\x73\ \x20\x63\x20\x23\x63\x65\x64\x36\x64\x36\x22\x2c\x0a\x22\x23\x74\ \x20\x63\x20\x23\x63\x65\x64\x65\x64\x65\x22\x2c\x0a\x22\x23\x39\ \x20\x63\x20\x23\x64\x36\x63\x36\x31\x30\x22\x2c\x0a\x22\x23\x32\ \x20\x63\x20\x23\x64\x36\x63\x36\x33\x31\x22\x2c\x0a\x22\x61\x70\ \x20\x63\x20\x23\x64\x65\x63\x36\x30\x38\x22\x2c\x0a\x22\x61\x68\ \x20\x63\x20\x23\x64\x65\x63\x65\x31\x30\x22\x2c\x0a\x22\x61\x62\ \x20\x63\x20\x23\x64\x65\x63\x65\x33\x31\x22\x2c\x0a\x22\x2e\x6c\ \x20\x63\x20\x23\x64\x65\x65\x66\x65\x37\x22\x2c\x0a\x22\x2e\x52\ \x20\x63\x20\x23\x64\x65\x65\x66\x65\x66\x22\x2c\x0a\x22\x61\x75\ \x20\x63\x20\x23\x65\x37\x63\x65\x30\x38\x22\x2c\x0a\x22\x61\x2e\ \x20\x63\x20\x23\x65\x37\x64\x36\x32\x31\x22\x2c\x0a\x22\x61\x23\ \x20\x63\x20\x23\x65\x37\x64\x36\x33\x31\x22\x2c\x0a\x22\x61\x61\ \x20\x63\x20\x23\x65\x37\x64\x36\x33\x39\x22\x2c\x0a\x22\x23\x31\ \x20\x63\x20\x23\x65\x37\x64\x65\x33\x39\x22\x2c\x0a\x22\x23\x59\ \x20\x63\x20\x23\x65\x66\x64\x65\x31\x30\x22\x2c\x0a\x22\x61\x76\ \x20\x63\x20\x23\x65\x66\x64\x65\x32\x31\x22\x2c\x0a\x22\x61\x41\ \x20\x63\x20\x23\x65\x66\x64\x65\x32\x39\x22\x2c\x0a\x22\x23\x5a\ \x20\x63\x20\x23\x66\x37\x65\x37\x32\x39\x22\x2c\x0a\x22\x23\x30\ \x20\x63\x20\x23\x66\x37\x65\x37\x33\x39\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x23\x2e\x61\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\ \x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x62\ \x2e\x63\x2e\x64\x2e\x65\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x2e\x66\x2e\x67\x2e\x68\x2e\x69\x2e\x62\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x2e\x6a\x2e\x6b\x2e\x6c\x2e\x65\x2e\x6d\x2e\x6e\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x62\x2e\x61\x2e\x6f\x2e\x70\x2e\x71\ \x2e\x72\x2e\x73\x2e\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\ \x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x75\x2e\x76\x2e\x77\ \x2e\x6b\x2e\x78\x2e\x79\x2e\x7a\x2e\x41\x2e\x62\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x74\x2e\x6b\ \x2e\x42\x2e\x43\x2e\x6b\x2e\x44\x2e\x45\x2e\x46\x2e\x47\x2e\x48\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x62\ \x2e\x23\x2e\x23\x2e\x6f\x2e\x49\x2e\x62\x2e\x63\x2e\x4a\x2e\x4b\ \x2e\x4c\x2e\x4d\x2e\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x2e\x61\x2e\x4e\x2e\x4f\x2e\x50\x2e\x51\x2e\x52\x2e\x6f\ \x2e\x53\x2e\x54\x2e\x55\x2e\x56\x2e\x73\x2e\x62\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\ \x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x2e\x74\x2e\x4e\x2e\x50\x2e\x57\x2e\x6b\x2e\x58\ \x2e\x52\x2e\x50\x2e\x59\x2e\x69\x2e\x41\x2e\x5a\x2e\x30\x2e\x31\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x62\x2e\x78\x2e\x32\x2e\x77\x2e\x33\ \x2e\x34\x2e\x49\x2e\x6a\x2e\x23\x2e\x35\x2e\x36\x2e\x4c\x2e\x46\ \x2e\x37\x2e\x30\x2e\x63\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x6e\x2e\x38\x2e\x39\ \x2e\x70\x23\x2e\x2e\x6f\x2e\x34\x2e\x78\x2e\x78\x2e\x78\x23\x23\ \x2e\x73\x23\x61\x23\x62\x2e\x73\x23\x63\x2e\x62\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x74\x2e\x44\ \x2e\x23\x23\x64\x23\x65\x2e\x68\x23\x66\x2e\x6f\x2e\x50\x2e\x32\ \x2e\x32\x23\x67\x23\x23\x23\x68\x2e\x41\x2e\x7a\x23\x69\x2e\x4b\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\ \x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x62\ \x23\x6a\x2e\x50\x2e\x66\x2e\x50\x23\x6b\x2e\x71\x2e\x34\x2e\x58\ \x23\x6c\x23\x6d\x23\x6e\x2e\x6e\x23\x6f\x2e\x4a\x2e\x36\x23\x70\ \x23\x69\x23\x71\x2e\x63\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x2e\x57\x23\x6d\x23\x6b\x2e\x4f\x23\x6d\x23\x72\x2e\x35\ \x2e\x6b\x23\x73\x23\x74\x23\x6d\x2e\x71\x23\x72\x2e\x55\x2e\x45\ \x2e\x54\x23\x70\x23\x75\x23\x69\x2e\x4d\x2e\x65\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x2e\x62\x2e\x78\x23\x72\x2e\x6f\x2e\x74\x23\x76\ \x2e\x66\x2e\x6f\x2e\x34\x2e\x6c\x23\x6c\x23\x77\x23\x78\x2e\x66\ \x2e\x69\x23\x6f\x2e\x45\x23\x23\x23\x61\x2e\x6d\x23\x79\x2e\x6e\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x2e\x62\x2e\x65\x2e\x63\x23\x64\ \x2e\x6f\x23\x7a\x2e\x75\x2e\x71\x23\x66\x2e\x49\x2e\x71\x2e\x23\ \x2e\x23\x2e\x32\x23\x41\x2e\x55\x2e\x6d\x23\x42\x23\x68\x2e\x68\ \x2e\x6a\x2e\x62\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\ \x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x2e\x62\x23\x43\x23\x44\x23\x45\x23\x46\x23\x47\x23\x47\ \x23\x47\x23\x48\x23\x49\x23\x4a\x23\x4b\x23\x4c\x23\x4d\x23\x4e\ \x2e\x69\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x2e\x62\x23\x4f\x23\x50\x23\x51\x23\x52\ \x23\x53\x23\x54\x23\x55\x23\x4c\x23\x4d\x23\x56\x23\x57\x23\x4e\ \x23\x56\x23\x56\x2e\x69\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x62\x23\x58\x23\x59\ \x23\x5a\x23\x30\x23\x30\x23\x31\x23\x32\x23\x33\x23\x34\x23\x35\ \x23\x36\x23\x37\x23\x4d\x23\x56\x23\x41\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x62\ \x23\x38\x23\x39\x61\x2e\x61\x23\x61\x61\x61\x61\x61\x62\x61\x63\ \x23\x33\x61\x64\x61\x65\x61\x66\x23\x37\x23\x4d\x2e\x4a\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\ \x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x2e\x62\x61\x67\x61\x68\x61\x2e\x61\x23\x23\x31\x61\x61\ \x61\x61\x23\x32\x61\x69\x61\x6a\x61\x6b\x61\x6c\x61\x6d\x61\x6e\ \x23\x41\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x61\x6f\x61\x70\x61\x2e\x61\x23\ \x61\x61\x61\x71\x61\x72\x61\x71\x23\x33\x61\x6a\x23\x35\x61\x66\ \x61\x6d\x61\x73\x2e\x4a\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x61\x74\x61\x75\ \x61\x76\x61\x23\x61\x77\x23\x56\x23\x57\x23\x4d\x61\x78\x23\x34\ \x61\x79\x61\x66\x61\x7a\x61\x6e\x2e\x4a\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x61\x74\x61\x68\x61\x41\x61\x42\x23\x57\x23\x4e\x23\x4d\x23\x56\ \x23\x56\x23\x52\x61\x43\x61\x6c\x61\x7a\x61\x73\x2e\x4a\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\ \x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x2e\x62\x61\x44\x61\x70\x23\x5a\x23\x51\x23\x4e\x23\x4d\ \x23\x56\x23\x4d\x23\x4e\x23\x36\x61\x6b\x61\x66\x61\x45\x61\x46\ \x61\x47\x2e\x45\x23\x68\x2e\x4a\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x61\x48\x61\x49\x61\x68\x61\x41\x61\x42\ \x23\x57\x23\x57\x23\x4e\x23\x57\x61\x4a\x23\x36\x61\x4b\x61\x6c\ \x61\x6d\x61\x46\x23\x57\x61\x4a\x61\x4a\x23\x79\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x2e\x71\x61\x4c\x61\x49\x61\x68\ \x61\x76\x61\x4d\x23\x57\x61\x4a\x23\x57\x23\x44\x61\x4e\x23\x52\ \x61\x65\x61\x6c\x61\x4f\x61\x6e\x23\x4e\x61\x4e\x61\x50\x61\x51\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x6a\x61\x52\x61\x53\ \x61\x54\x61\x55\x61\x76\x61\x42\x23\x57\x61\x4e\x61\x50\x61\x4c\ \x61\x56\x61\x57\x61\x65\x61\x58\x23\x36\x61\x59\x61\x5a\x61\x30\ \x61\x31\x61\x32\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x2c\ \x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x2e\x62\x61\x33\ \x61\x34\x61\x35\x61\x35\x61\x56\x61\x36\x61\x31\x61\x5a\x61\x37\ \x61\x53\x61\x53\x61\x35\x61\x38\x61\x39\x61\x34\x61\x35\x62\x2e\ \x62\x23\x61\x35\x61\x35\x2e\x6b\x51\x74\x51\x74\x51\x74\x51\x74\ \x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\ \x62\x61\x61\x37\x61\x37\x61\x56\x61\x30\x62\x2e\x62\x23\x61\x37\ \x62\x23\x61\x30\x61\x37\x61\x37\x61\x37\x61\x53\x61\x53\x61\x37\ \x62\x2e\x61\x56\x61\x30\x61\x56\x61\x52\x2e\x23\x51\x74\x51\x74\ \x51\x74\x51\x74\x51\x74\x22\x2c\x0a\x22\x51\x74\x51\x74\x51\x74\ \x51\x74\x51\x74\x62\x62\x62\x63\x62\x64\x62\x65\x62\x65\x62\x66\ \x62\x67\x62\x68\x62\x68\x62\x69\x62\x6a\x62\x6a\x62\x6b\x62\x6b\ \x62\x6c\x62\x6d\x62\x6d\x62\x6e\x62\x6f\x62\x70\x62\x71\x2e\x62\ \x51\x74\x51\x74\x51\x74\x51\x74\x51\x74\x22\x7d\x3b\x0a\ \x00\x00\x00\xad\ \x00\ \x00\x04\xda\x78\x9c\xd3\xd7\x52\x88\x08\xf0\x55\xd0\xd2\xe7\x2a\ \x2e\x49\x2c\xc9\x4c\x56\x48\xce\x48\x2c\x52\xd0\xca\xcc\x4d\x4c\ \x4f\x35\x88\x8e\xb5\xad\xe6\x52\x32\x36\x52\x00\x21\x05\x43\x25\ \x1d\x2e\x25\x3d\x85\x64\x05\xbf\xfc\xbc\x54\x10\x3b\x11\xc8\x56\ \x36\x00\x02\x0b\x03\x10\x57\x19\xc4\xb5\x30\xb0\x80\x72\xf5\x08\ \x80\x51\x35\x60\xa0\x9c\x08\x03\x38\xd5\x20\x94\x20\x29\x4a\x44\ \x51\xa3\x8c\x90\x42\x66\x21\xab\x51\x46\xd1\x0d\xe5\x24\xa2\xaa\ \x41\x75\x05\x44\x51\x22\x86\x1a\x54\x77\x22\xbb\x0c\x97\x1a\x3d\ \x2a\xa9\x21\xc2\xae\x44\x6c\x6a\x94\x31\xfc\x85\xa9\x06\x45\x51\ \x22\x0e\x35\x40\x09\x65\x3d\xec\x00\x29\x4e\x71\x2a\x1a\xc4\xe9\ \x70\x78\xa9\xa9\xb5\xe6\x02\x00\x3d\x48\xf5\x6a\ \x00\x00\x00\xad\ \x00\ \x00\x04\xda\x78\x9c\xd3\xd7\x52\x88\x08\xf0\x55\xd0\xd2\xe7\x2a\ \x2e\x49\x2c\xc9\x4c\x56\x48\xce\x48\x2c\x52\xd0\xca\xcc\x4d\x4c\ \x4f\x35\x89\x8e\xb5\xad\xe6\x52\x32\x36\x52\x00\x21\x05\x43\x25\ \x1d\x2e\x25\x3d\x85\x64\x05\xbf\xfc\xbc\x54\x10\x5b\x19\xc8\x56\ \x36\x00\x02\x0b\x03\x10\x37\x11\xc4\xb5\x30\xb0\x80\x72\xf5\x08\ \x80\x51\x35\x24\xab\x51\x86\x81\x44\x34\x35\xca\x98\x4a\xe0\x8a\ \xe0\x6a\x94\x11\x4a\x10\xac\x44\x34\x35\xca\x30\x43\x90\x4d\x4c\ \x44\x53\xa3\x8c\xa6\x04\xae\x11\x59\x0d\x9a\x0a\xb8\x0b\xd0\xd4\ \x60\x78\x91\x4c\x35\xc4\xd8\x85\xa6\x08\x87\x1a\x54\x7f\x61\xf8\ \x1d\x5d\x11\x7a\x18\x62\x01\x89\x30\xe5\xb8\xd5\xc0\x95\x0c\x74\ \x1a\x1b\x1e\x6a\x6a\xad\xb9\x00\xc3\x36\xd8\x5e\ " qt_resource_name = b"\ \x00\x05\ \x00\x6f\xa6\x53\ \x00\x69\ \x00\x63\x00\x6f\x00\x6e\x00\x73\ \x00\x0a\ \x0d\x8c\x59\x8d\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x33\x00\x2e\x00\x78\x00\x70\x00\x6d\ \x00\x0a\ \x0d\x8b\x59\x8d\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x32\x00\x2e\x00\x78\x00\x70\x00\x6d\ \x00\x0a\ \x0d\x87\x59\x8d\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x36\x00\x2e\x00\x78\x00\x70\x00\x6d\ \x00\x0a\ \x0d\x8e\x59\x8d\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x31\x00\x2e\x00\x78\x00\x70\x00\x6d\ \x00\x0a\ \x0d\x8a\x59\x8d\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x35\x00\x2e\x00\x78\x00\x70\x00\x6d\ \x00\x0a\ \x0d\x8d\x59\x8d\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x30\x00\x2e\x00\x78\x00\x70\x00\x6d\ \x00\x0a\ \x0d\x89\x59\x8d\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x34\x00\x2e\x00\x78\x00\x70\x00\x6d\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x02\ \x00\x00\x00\x44\x00\x00\x00\x00\x00\x01\x00\x00\x05\xc8\ \x00\x00\x00\xac\x00\x01\x00\x00\x00\x01\x00\x00\x30\x1d\ \x00\x00\x00\x78\x00\x00\x00\x00\x00\x01\x00\x00\x19\x89\ \x00\x00\x00\x2a\x00\x01\x00\x00\x00\x01\x00\x00\x00\xab\ \x00\x00\x00\x10\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x92\x00\x01\x00\x00\x00\x01\x00\x00\x2f\x6c\ \x00\x00\x00\x5e\x00\x01\x00\x00\x00\x01\x00\x00\x14\x6b\ " 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() PyQt5_gpl-5.10.1/examples/activeqt/webbrowser/ui_mainwindow.py0000644000076500000240000001615513245231431024551 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'mainwindow.ui' # # Created: Fri Jul 26 06:46:58 2013 # by: PyQt5 UI code generator 5.0.1-snapshot-2a99e59669ee # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(812, 605) self.centralWidget = QtWidgets.QWidget(MainWindow) self.centralWidget.setObjectName("centralWidget") self.hboxlayout = QtWidgets.QHBoxLayout(self.centralWidget) self.hboxlayout.setContentsMargins(0, 0, 0, 0) self.hboxlayout.setSpacing(6) self.hboxlayout.setObjectName("hboxlayout") self.Frame3 = QtWidgets.QFrame(self.centralWidget) self.Frame3.setFrameShape(QtWidgets.QFrame.StyledPanel) self.Frame3.setFrameShadow(QtWidgets.QFrame.Sunken) self.Frame3.setObjectName("Frame3") self.vboxlayout = QtWidgets.QVBoxLayout(self.Frame3) self.vboxlayout.setContentsMargins(1, 1, 1, 1) self.vboxlayout.setSpacing(0) self.vboxlayout.setObjectName("vboxlayout") self.WebBrowser = QAxContainer.QAxWidget(self.Frame3) self.WebBrowser.setFocusPolicy(QtCore.Qt.StrongFocus) self.WebBrowser.setControl("{8856F961-340A-11D0-A96B-00C04FD705A2}") self.WebBrowser.setObjectName("WebBrowser") self.vboxlayout.addWidget(self.WebBrowser) self.hboxlayout.addWidget(self.Frame3) MainWindow.setCentralWidget(self.centralWidget) self.tbNavigate = QtWidgets.QToolBar(MainWindow) self.tbNavigate.setOrientation(QtCore.Qt.Horizontal) self.tbNavigate.setObjectName("tbNavigate") MainWindow.addToolBar(4, self.tbNavigate) self.tbAddress = QtWidgets.QToolBar(MainWindow) self.tbAddress.setOrientation(QtCore.Qt.Horizontal) self.tbAddress.setObjectName("tbAddress") MainWindow.addToolBar(4, self.tbAddress) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 812, 26)) self.menubar.setObjectName("menubar") self.PopupMenu = QtWidgets.QMenu(self.menubar) self.PopupMenu.setObjectName("PopupMenu") self.FileNewGroup_2 = QtWidgets.QMenu(self.PopupMenu) self.FileNewGroup_2.setObjectName("FileNewGroup_2") self.unnamed = QtWidgets.QMenu(self.menubar) self.unnamed.setObjectName("unnamed") MainWindow.setMenuBar(self.menubar) self.actionGo = QtWidgets.QAction(MainWindow) icon = QtGui.QIcon() icon.addFile(":/icons/image0.xpm") self.actionGo.setIcon(icon) self.actionGo.setObjectName("actionGo") self.actionBack = QtWidgets.QAction(MainWindow) icon1 = QtGui.QIcon() icon1.addFile(":/icons/image1.xpm") self.actionBack.setIcon(icon1) self.actionBack.setObjectName("actionBack") self.actionForward = QtWidgets.QAction(MainWindow) icon2 = QtGui.QIcon() icon2.addFile(":/icons/image2.xpm") self.actionForward.setIcon(icon2) self.actionForward.setObjectName("actionForward") self.actionStop = QtWidgets.QAction(MainWindow) icon3 = QtGui.QIcon() icon3.addFile(":/icons/image3.xpm") self.actionStop.setIcon(icon3) self.actionStop.setObjectName("actionStop") self.actionRefresh = QtWidgets.QAction(MainWindow) icon4 = QtGui.QIcon() icon4.addFile(":/icons/image4.xpm") self.actionRefresh.setIcon(icon4) self.actionRefresh.setObjectName("actionRefresh") self.actionHome = QtWidgets.QAction(MainWindow) icon5 = QtGui.QIcon() icon5.addFile(":/icons/image5.xpm") self.actionHome.setIcon(icon5) self.actionHome.setObjectName("actionHome") self.actionFileClose = QtWidgets.QAction(MainWindow) self.actionFileClose.setObjectName("actionFileClose") self.actionSearch = QtWidgets.QAction(MainWindow) icon6 = QtGui.QIcon() icon6.addFile(":/icons/image6.xpm") self.actionSearch.setIcon(icon6) self.actionSearch.setObjectName("actionSearch") self.actionAbout = QtWidgets.QAction(MainWindow) self.actionAbout.setObjectName("actionAbout") self.actionAboutQt = QtWidgets.QAction(MainWindow) self.actionAboutQt.setObjectName("actionAboutQt") self.FileNewGroup = QtWidgets.QActionGroup(MainWindow) self.FileNewGroup.setObjectName("FileNewGroup") self.actionNewWindow = QtWidgets.QAction(self.FileNewGroup) self.actionNewWindow.setObjectName("actionNewWindow") self.tbNavigate.addAction(self.actionBack) self.tbNavigate.addAction(self.actionForward) self.tbNavigate.addAction(self.actionStop) self.tbNavigate.addAction(self.actionRefresh) self.tbNavigate.addAction(self.actionHome) self.tbNavigate.addSeparator() self.tbNavigate.addAction(self.actionSearch) self.tbAddress.addAction(self.actionGo) self.FileNewGroup_2.addAction(self.actionNewWindow) self.PopupMenu.addAction(self.FileNewGroup_2.menuAction()) self.PopupMenu.addSeparator() self.PopupMenu.addAction(self.actionFileClose) self.unnamed.addAction(self.actionAbout) self.unnamed.addAction(self.actionAboutQt) self.menubar.addAction(self.PopupMenu.menuAction()) self.menubar.addAction(self.unnamed.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Qt WebBrowser")) self.tbNavigate.setWindowTitle(_translate("MainWindow", "Navigation")) self.tbAddress.setWindowTitle(_translate("MainWindow", "Address")) self.PopupMenu.setTitle(_translate("MainWindow", "&File")) self.FileNewGroup_2.setTitle(_translate("MainWindow", "New")) self.unnamed.setTitle(_translate("MainWindow", "&Help")) self.actionGo.setIconText(_translate("MainWindow", "Go")) self.actionBack.setIconText(_translate("MainWindow", "Back")) self.actionBack.setShortcut(_translate("MainWindow", "Backspace")) self.actionForward.setIconText(_translate("MainWindow", "Forward")) self.actionStop.setIconText(_translate("MainWindow", "Stop")) self.actionRefresh.setIconText(_translate("MainWindow", "Refresh")) self.actionHome.setIconText(_translate("MainWindow", "Home")) self.actionFileClose.setText(_translate("MainWindow", "C&lose")) self.actionFileClose.setIconText(_translate("MainWindow", "Close")) self.actionSearch.setIconText(_translate("MainWindow", "Search")) self.actionAbout.setIconText(_translate("MainWindow", "About")) self.actionAboutQt.setIconText(_translate("MainWindow", "About Qt")) self.actionNewWindow.setIconText(_translate("MainWindow", "Window")) self.actionNewWindow.setShortcut(_translate("MainWindow", "Ctrl+N")) from PyQt5 import QAxContainer PyQt5_gpl-5.10.1/examples/activeqt/webbrowser/webbrowser.py0000755000076500000240000001266413245231431024065 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import pyqtSlot from PyQt5.QtWidgets import (QApplication, QLabel, QLineEdit, QMainWindow, QMessageBox, QProgressBar) import mainwindow_rc from ui_mainwindow import Ui_MainWindow class MainWindow(QMainWindow, Ui_MainWindow): # Maintain the list of browser windows so that they do not get garbage # collected. _window_list = [] def __init__(self): super(MainWindow, self).__init__() MainWindow._window_list.append(self) self.setupUi(self) # Qt Designer (at least to v4.2.1) can't handle arbitrary widgets in a # QToolBar - even though uic can, and they are in the original .ui # file. Therefore we manually add the problematic widgets. self.lblAddress = QLabel("Address", self.tbAddress) self.tbAddress.insertWidget(self.actionGo, self.lblAddress) self.addressEdit = QLineEdit(self.tbAddress) self.tbAddress.insertWidget(self.actionGo, self.addressEdit) self.addressEdit.returnPressed.connect(self.actionGo.trigger) self.actionBack.triggered.connect(self.WebBrowser.GoBack) self.actionForward.triggered.connect(self.WebBrowser.GoForward) self.actionStop.triggered.connect(self.WebBrowser.Stop) self.actionRefresh.triggered.connect(self.WebBrowser.Refresh) self.actionHome.triggered.connect(self.WebBrowser.GoHome) self.actionSearch.triggered.connect(self.WebBrowser.GoSearch) self.pb = QProgressBar(self.statusBar()) self.pb.setTextVisible(False) self.pb.hide() self.statusBar().addPermanentWidget(self.pb) self.WebBrowser.dynamicCall('GoHome()') def closeEvent(self, e): MainWindow._window_list.remove(self) e.accept() def on_WebBrowser_TitleChange(self, title): self.setWindowTitle("Qt WebBrowser - " + title) def on_WebBrowser_ProgressChange(self, a, b): if a <= 0 or b <= 0: self.pb.hide() return self.pb.show() self.pb.setRange(0, b) self.pb.setValue(a) def on_WebBrowser_CommandStateChange(self, cmd, on): if cmd == 1: self.actionForward.setEnabled(on) elif cmd == 2: self.actionBack.setEnabled(on) def on_WebBrowser_BeforeNavigate(self): self.actionStop.setEnabled(True) def on_WebBrowser_NavigateComplete(self, _): self.actionStop.setEnabled(False) @pyqtSlot() def on_actionGo_triggered(self): self.WebBrowser.dynamicCall('Navigate(const QString&)', self.addressEdit.text()) @pyqtSlot() def on_actionNewWindow_triggered(self): window = MainWindow() window.show() if self.addressEdit.text().isEmpty(): return; window.addressEdit.setText(self.addressEdit.text()) window.actionStop.setEnabled(True) window.on_actionGo_triggered() @pyqtSlot() def on_actionAbout_triggered(self): QMessageBox.about(self, "About WebBrowser", "This Example has been created using the ActiveQt integration into Qt Designer.\n" "It demonstrates the use of QAxWidget to embed the Internet Explorer ActiveX\n" "control into a Qt application.") @pyqtSlot() def on_actionAboutQt_triggered(self): QMessageBox.aboutQt(self, "About Qt") if __name__ == "__main__": a = QApplication(sys.argv) w = MainWindow() w.show() sys.exit(a.exec_()) PyQt5_gpl-5.10.1/examples/animation/0000755000076500000240000000000013245231431017274 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/animation/animatedtiles/0000755000076500000240000000000013245231431022117 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/animation/animatedtiles/animatedtiles.py0000755000076500000240000002074313245231431025325 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (pyqtProperty, pyqtSignal, QEasingCurve, QObject, QParallelAnimationGroup, QPointF, QPropertyAnimation, qrand, QRectF, QState, QStateMachine, Qt, QTimer) from PyQt5.QtGui import (QBrush, QLinearGradient, QPainter, QPainterPath, QPixmap) from PyQt5.QtWidgets import (QApplication, QGraphicsItem, QGraphicsPixmapItem, QGraphicsRectItem, QGraphicsScene, QGraphicsView, QGraphicsWidget, QStyle) import animatedtiles_rc # PyQt doesn't support deriving from more than one wrapped class so we use # composition and delegate the property. class Pixmap(QObject): def __init__(self, pix): super(Pixmap, self).__init__() self.pixmap_item = QGraphicsPixmapItem(pix) self.pixmap_item.setCacheMode(QGraphicsItem.DeviceCoordinateCache) def _set_pos(self, pos): self.pixmap_item.setPos(pos) pos = pyqtProperty(QPointF, fset=_set_pos) class Button(QGraphicsWidget): pressed = pyqtSignal() def __init__(self, pixmap, parent=None): super(Button, self).__init__(parent) self._pix = pixmap self.setAcceptHoverEvents(True) self.setCacheMode(QGraphicsItem.DeviceCoordinateCache) def boundingRect(self): return QRectF(-65, -65, 130, 130) def shape(self): path = QPainterPath() path.addEllipse(self.boundingRect()) return path def paint(self, painter, option, widget): down = option.state & QStyle.State_Sunken r = self.boundingRect() grad = QLinearGradient(r.topLeft(), r.bottomRight()) if option.state & QStyle.State_MouseOver: color_0 = Qt.white else: color_0 = Qt.lightGray color_1 = Qt.darkGray if down: color_0, color_1 = color_1, color_0 grad.setColorAt(0, color_0) grad.setColorAt(1, color_1) painter.setPen(Qt.darkGray) painter.setBrush(grad) painter.drawEllipse(r) color_0 = Qt.darkGray color_1 = Qt.lightGray if down: color_0, color_1 = color_1, color_0 grad.setColorAt(0, color_0) grad.setColorAt(1, color_1) painter.setPen(Qt.NoPen) painter.setBrush(grad) if down: painter.translate(2, 2) painter.drawEllipse(r.adjusted(5, 5, -5, -5)) painter.drawPixmap(-self._pix.width() / 2, -self._pix.height() / 2, self._pix) def mousePressEvent(self, ev): self.pressed.emit() self.update() def mouseReleaseEvent(self, ev): self.update() class View(QGraphicsView): def resizeEvent(self, event): super(View, self).resizeEvent(event) self.fitInView(self.sceneRect(), Qt.KeepAspectRatio) if __name__ == '__main__': import sys import math app = QApplication(sys.argv) kineticPix = QPixmap(':/images/kinetic.png') bgPix = QPixmap(':/images/Time-For-Lunch-2.jpg') scene = QGraphicsScene(-350, -350, 700, 700) items = [] for i in range(64): item = Pixmap(kineticPix) item.pixmap_item.setOffset(-kineticPix.width() / 2, -kineticPix.height() / 2) item.pixmap_item.setZValue(i) items.append(item) scene.addItem(item.pixmap_item) # Buttons. buttonParent = QGraphicsRectItem() ellipseButton = Button(QPixmap(':/images/ellipse.png'), buttonParent) figure8Button = Button(QPixmap(':/images/figure8.png'), buttonParent) randomButton = Button(QPixmap(':/images/random.png'), buttonParent) tiledButton = Button(QPixmap(':/images/tile.png'), buttonParent) centeredButton = Button(QPixmap(':/images/centered.png'), buttonParent) ellipseButton.setPos(-100, -100) figure8Button.setPos(100, -100) randomButton.setPos(0, 0) tiledButton.setPos(-100, 100) centeredButton.setPos(100, 100) scene.addItem(buttonParent) buttonParent.setScale(0.75) buttonParent.setPos(200, 200) buttonParent.setZValue(65) # States. rootState = QState() ellipseState = QState(rootState) figure8State = QState(rootState) randomState = QState(rootState) tiledState = QState(rootState) centeredState = QState(rootState) # Values. for i, item in enumerate(items): # Ellipse. ellipseState.assignProperty(item, 'pos', QPointF(math.cos((i / 63.0) * 6.28) * 250, math.sin((i / 63.0) * 6.28) * 250)) # Figure 8. figure8State.assignProperty(item, 'pos', QPointF(math.sin((i / 63.0) * 6.28) * 250, math.sin(((i * 2)/63.0) * 6.28) * 250)) # Random. randomState.assignProperty(item, 'pos', QPointF(-250 + qrand() % 500, -250 + qrand() % 500)) # Tiled. tiledState.assignProperty(item, 'pos', QPointF(((i % 8) - 4) * kineticPix.width() + kineticPix.width() / 2, ((i // 8) - 4) * kineticPix.height() + kineticPix.height() / 2)) # Centered. centeredState.assignProperty(item, 'pos', QPointF()) # Ui. view = View(scene) view.setWindowTitle("Animated Tiles") view.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate) view.setBackgroundBrush(QBrush(bgPix)) view.setCacheMode(QGraphicsView.CacheBackground) view.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform) view.show() states = QStateMachine() states.addState(rootState) states.setInitialState(rootState) rootState.setInitialState(centeredState) group = QParallelAnimationGroup() for i, item in enumerate(items): anim = QPropertyAnimation(item, b'pos') anim.setDuration(750 + i * 25) anim.setEasingCurve(QEasingCurve.InOutBack) group.addAnimation(anim) trans = rootState.addTransition(ellipseButton.pressed, ellipseState) trans.addAnimation(group) trans = rootState.addTransition(figure8Button.pressed, figure8State) trans.addAnimation(group) trans = rootState.addTransition(randomButton.pressed, randomState) trans.addAnimation(group) trans = rootState.addTransition(tiledButton.pressed, tiledState) trans.addAnimation(group) trans = rootState.addTransition(centeredButton.pressed, centeredState) trans.addAnimation(group) timer = QTimer() timer.start(125) timer.setSingleShot(True) trans = rootState.addTransition(timer.timeout, ellipseState) trans.addAnimation(group) states.start() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/animation/animatedtiles/animatedtiles.qrc0000644000076500000240000000050413245231431025450 0ustar philstaff00000000000000 images/Time-For-Lunch-2.jpg images/centered.png images/ellipse.png images/figure8.png images/kinetic.png images/random.png images/tile.png PyQt5_gpl-5.10.1/examples/animation/animatedtiles/animatedtiles_rc.py0000644000076500000240000141366113245231431026014 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Thu May 2 15:49:03 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x36\xe2\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x64\x00\x00\x00\x64\x08\x06\x00\x00\x00\x70\xe2\x95\x54\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\ \x95\x2b\x0e\x1b\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x03\x03\ \x0e\x1c\x24\x7c\x1a\xa6\xff\x00\x00\x20\x00\x49\x44\x41\x54\x78\ \xda\xed\x9d\x77\x98\x9d\x65\x9d\xf7\x3f\xf7\x53\x4e\x9f\x99\x33\ \x33\x99\x4c\x66\x12\x32\xa9\xa4\x03\x91\x90\x10\x6a\xe8\x48\xd9\ \x05\xa5\x88\xc8\xba\xeb\xcb\xb2\xae\x04\x51\x57\x5f\x57\x5d\x5d\ \x76\x5d\x45\x51\x56\x50\x71\x59\x75\xa5\x59\xc0\x12\x3a\x16\x88\ \x94\x00\x09\x29\xa4\x4d\xea\xb4\x4c\xa6\xcf\x9c\x39\xbd\x3d\xf5\ \x7e\xff\x38\xf3\x3c\x99\x41\x94\x34\x7d\xdf\xeb\xbd\xb8\xaf\x2b\ \x57\x32\xc9\xc9\x79\xca\xf7\xfe\xb5\xef\xaf\xdc\xf0\xee\x7a\x77\ \xbd\xbb\xde\x5d\xef\xae\x77\xd7\xbb\xeb\xdd\xf5\xee\x7a\x77\xfd\ \x7f\xbf\xc4\xb1\xfc\xe7\xba\xba\xba\xab\x0c\xc3\x08\x4e\x99\x32\ \xe5\x73\x2b\x57\xae\x3c\x51\x51\x14\xb6\x6d\xdb\x46\x6d\x6d\xed\ \xa1\x0b\xb8\x02\x09\x20\xe4\x1f\x5c\x4d\x55\xd5\x94\xa2\x28\xf9\ \x72\xb9\xac\xbf\xfa\xea\xab\xb3\xfe\x6f\xbf\x8c\xda\xda\xda\x9f\ \x5d\x77\xdd\x75\x57\x97\xcb\x65\x17\x40\x41\xe0\x48\x89\xf8\x23\ \x6f\xc9\x71\x1c\x02\x81\x00\xaf\xbf\xfe\xba\xb3\x60\xc1\x82\xc2\ \xc0\xc0\x40\x6c\xcb\x96\x2d\xd3\x2d\xcb\x4a\x1e\xed\x3d\x68\xc7\ \xf2\x00\x8b\x16\x2d\xfa\xe1\xcc\x99\x33\xeb\x37\x6f\xde\x4c\xa9\ \x54\xc2\xb6\x6d\xea\xeb\xeb\x69\x68\x68\x40\x08\x41\xbf\x95\x62\ \xda\x05\x45\xaa\xa2\x3a\x4e\x3a\x88\x93\xd1\x71\x73\x3a\x76\x4a\ \x43\x16\x35\x80\xb0\x94\xf2\x0f\xbe\x77\xda\xb4\x69\xa2\xb7\xb7\ \x57\xfe\x25\x40\xa8\xaa\xaa\xba\x60\xc5\x8a\x15\x6b\x74\x5d\x37\ \x1d\xc7\xa9\xe9\xef\xed\xd3\x6d\x0b\x84\x22\x31\x30\x09\xc5\x04\ \xb2\xa0\x4d\xd8\x4c\x42\x08\xf6\xee\xdd\xcb\xd2\xa5\x4b\xbd\x8d\ \x85\xa6\x69\xb1\x58\x2c\x86\xeb\xba\xa7\x85\x42\xa1\x6c\x6d\x6d\ \xed\xae\x81\x81\x81\xec\x9f\x1d\x90\x45\x8b\x16\xb1\x77\xef\xde\ \x90\xe3\x38\x28\x8a\xe2\x94\x4a\x25\x5c\xd7\xc5\x34\x4d\x6c\xdb\ \xc6\xb2\x2c\xca\xe5\x32\x42\x08\x8a\xdd\x09\xba\xba\xc3\x48\x69\ \x22\x30\x91\xaa\x8b\x40\x80\xa8\x3c\xf0\x38\x19\x95\x67\x9c\x71\ \x86\x04\xc8\x66\xb3\xb4\xb6\xb6\x8a\xbf\x94\x54\x94\xcb\xe5\xe6\ \xc9\x93\x27\x57\x9b\xa6\x89\x82\xe0\x60\xb8\x87\x85\x17\x2a\xd8\ \xc3\x41\xec\x44\x10\x67\x34\x88\x8c\x0a\xa4\xa9\x20\x2d\xa5\xf2\ \xd2\x34\x0d\x55\x55\x31\x4d\x13\x45\x51\x70\x5d\x17\xc3\x30\x30\ \x4d\x53\x5e\x75\xd5\x55\xbf\x11\x42\xf0\xda\x6b\xaf\x5d\x00\xfc\ \xfe\xcf\x0e\x48\x47\x47\xc7\x9c\xd3\x4e\x3b\xad\xad\xb6\xb6\x96\ \x42\xa1\x80\x69\x9a\x13\x00\xf1\x6e\x4e\x51\x14\xa6\x4c\x6d\x22\ \x1c\x0e\xa3\x08\x41\xab\x71\x80\xe5\x1f\x82\x40\x40\xc1\x1e\xd5\ \xb1\x7a\xa3\x98\x83\x01\x9c\xe1\x20\x42\xa9\x28\x05\x29\x25\xc1\ \x60\xf0\x2f\xab\xb3\x85\xf0\x37\x92\x86\x8a\x3b\x3f\x43\x20\x5e\ \x43\x20\x5e\x82\x13\x4b\x13\x3e\x3b\xf4\xe8\x24\xdc\xa2\x8a\xeb\ \xba\x48\x29\x31\x0c\x03\x21\x04\x52\x4a\x2c\xcb\xc2\x75\x5d\x61\ \x18\x06\x9a\xa6\x01\xb8\x7f\x11\x95\x55\x2e\x97\x1b\x1a\x1a\x1a\ \x08\x85\x42\xe4\xf3\x79\x0c\xc3\xf0\x6f\xce\x71\x1c\x1c\xc7\xf1\ \x6f\x34\x10\x08\x54\xc0\x11\x82\x5e\x7b\x84\xf3\x62\x4d\xb8\x46\ \x90\x25\x4b\x4e\x61\xe7\xe4\x57\x89\x08\x89\xa2\xe8\xa4\x5f\xae\ \xa2\xb0\x27\x8c\x94\x12\xd7\x75\xff\xec\x20\x44\xa3\xd1\xb3\xae\ \xb9\xe6\x9a\x75\xa5\x52\xa9\xf2\x42\x5d\x29\x43\xf5\x42\xb8\x29\ \x9d\x19\xbb\x4e\x61\x74\x97\xac\x48\xf0\x5b\xe4\xb4\x6d\xef\x2e\ \x66\xcc\x98\xe1\x03\x32\x5e\x42\xca\xe5\xb2\xbf\x31\xa5\x94\x94\ \xcb\xe5\x8f\x57\x55\x55\x5d\x57\x55\x55\xf5\x40\x7f\x7f\xff\xa6\ \x3f\xab\x0d\xb1\x6d\x1b\xc3\x30\x7c\x69\xf0\x6e\xc4\x71\x1c\x7f\ \xb7\x09\x21\x50\x55\x15\xcb\xb2\x90\xae\x4b\x7d\x3a\xc4\xc1\xa7\ \x15\x4e\x08\x2e\x26\x57\x3f\x05\x3b\x31\x17\xac\x30\x49\x3a\x29\ \x0c\x98\x38\x79\xc7\x07\xe4\xec\xb3\xcf\xfe\x1f\x29\x65\x20\x99\ \x4c\x86\x7b\x7b\x7b\xff\x36\x9b\xcd\xe6\x8f\x27\x20\x52\xca\xb0\ \xaa\xaa\x15\x89\x96\x92\x5d\x93\x77\x8a\xf3\xaf\xac\xc3\x95\x36\ \x76\x56\x43\x64\xc3\xd8\x59\x0d\x27\xab\x51\xde\x1f\x41\x3a\xc2\ \x97\xa6\x72\xb9\x8c\xa2\x54\x54\x97\x07\x88\x27\x21\x8e\xe3\x54\ \x9e\x57\x4a\xb9\x6a\xd5\xaa\xab\x9b\x9b\x9b\x79\xf0\xc1\x07\xd7\ \x03\x7f\x1e\x40\xa6\x4d\x9b\xb6\xb0\x54\x2a\xcd\xb7\x6d\x1b\x29\ \x25\x8e\xe3\x4c\x50\x59\x8e\xe3\x00\xf8\x2a\x4b\xd3\x34\xff\x33\ \x0b\x1b\x66\x13\x4d\x55\x91\x24\x41\x77\x7f\x37\xf1\xf7\x14\xd0\ \xcc\x00\xd1\x44\x9c\x48\xbd\x86\xac\x11\x48\x43\x01\x57\x80\xe0\ \x23\x00\xe1\x70\x98\xdd\xbb\x77\x7f\x14\x38\x26\x40\x9a\x9a\x9a\ \x18\x18\x18\x18\x0f\x88\x34\x4d\x13\xd3\x34\x31\x5d\x9b\x58\xb5\ \x0e\xb6\xc2\xf2\xc9\xef\xa7\xaa\x25\xc4\x4b\x9d\xbf\x62\xfa\xbc\ \x26\x86\x8c\x2e\xf2\x1d\x2a\x4e\xa9\x02\x80\xf7\x9c\xe3\xed\x86\ \xf7\x67\x4f\x32\xc6\xde\x87\xc8\x66\xb3\x44\xa3\x51\x14\x45\x91\ \x7f\x36\x95\x55\x5b\x5b\xbb\x66\xd9\xb2\x65\xf3\xd2\xe9\xb4\x6f\ \x2f\x1c\xa7\xb2\xb3\x3d\x2f\x2b\x18\x0c\x32\x66\xf0\x09\x06\x83\ \xb8\xae\x8b\x65\x59\xbe\xb1\x57\x51\xd8\x17\xee\xe0\xc2\x05\xd5\ \x40\xf1\x2d\x0a\x5d\x92\x5e\x57\x43\xb9\x2d\x02\x80\x65\x59\xc7\ \x45\x22\x06\x06\x06\x68\x6a\x6a\x9a\x04\x2c\x01\x1c\xc3\x30\x4e\ \x4e\x24\x12\x64\xb3\x59\x6c\x5c\xec\x11\x9b\x9d\xcf\x17\xb8\xf2\ \x7d\xf3\x79\xfa\xd5\x35\xcc\x6b\xbe\x82\xf7\xd4\xaf\xe4\xbf\xb6\ \x7f\x8a\x6c\x2a\x87\x2e\xc3\xbe\x9b\xeb\x01\x02\x50\x28\x14\x70\ \x1c\x07\xd7\x75\x29\x95\x4a\x9e\xed\xc0\xf3\x1c\x3d\x4d\xf1\x67\ \x03\x44\x4a\xa9\x14\x0a\x05\x1f\x08\xdb\xb6\xc9\xe5\x72\xd8\xb6\ \x4d\x3e\x9f\xf7\x75\x6b\xa9\x54\x42\x51\x14\xc2\xe1\x30\xb6\x6d\ \x63\xdb\xf6\xa1\x87\x91\x02\xc2\x15\xf1\xff\xc8\xc2\xbb\x91\x8a\ \x4b\xda\xed\x64\xe3\xd6\x2e\x92\x55\xeb\x18\x1d\xfb\x9c\xb7\x23\ \x8f\xd7\x2a\x95\x4a\x37\x9f\x7f\xfe\xf9\x77\xaa\xaa\x8a\x40\x90\ \x30\x33\x4c\x3f\xbd\x1a\x77\x38\x8c\x33\xda\x82\x48\xc3\x8f\xbe\ \xf3\x53\x14\x55\xf0\x1a\x5b\x78\x55\x6e\x26\xa0\xcd\x27\x9f\x6c\ \x27\x1a\x55\x91\x52\x7a\xb6\xc1\x07\xa4\x58\x2c\xfa\xef\x22\x9b\ \xcd\x12\x8b\xc5\x7c\x30\xc6\x49\x4b\x63\x2c\x16\x9b\x95\xcf\xe7\ \x3b\xff\x1c\x80\xf8\x2f\xd8\xb2\x2c\x6c\xdb\xf6\x5f\x9e\xa6\x69\ \x3e\x10\xaa\xaa\xfa\xde\x4b\xb1\x58\xf4\x8d\xbd\x27\x21\x58\x92\ \xd1\x5e\x83\xa9\xef\x99\xcb\x75\x3f\x5a\xca\xcf\x3e\xb2\x81\xa6\ \x93\xd2\xac\xed\xc9\xb2\x27\xfb\x2a\xf9\x9c\xe9\xab\x3e\xa0\xce\ \xbb\xfe\xf4\xe9\xd3\x93\x07\x0f\x1e\x74\x8f\xd2\x6e\x44\xbd\x0d\ \x53\x74\x4d\xb4\x73\xfa\xa9\x9d\x1f\xc1\x92\x83\x48\x1b\x44\x36\ \x86\x9d\x51\x71\x52\x3a\xf9\x2d\xd5\xa0\x48\x1c\x69\xfb\xb6\xc2\ \x93\x90\x54\x2a\x85\xaa\xaa\x38\x8e\xe3\xc5\x1f\x08\x21\xd0\x34\ \x0d\x45\x51\xc8\xe5\x72\x04\x83\x41\x22\x91\x08\xa6\x69\xca\x93\ \x4f\x3e\xf9\x9b\xaa\xaa\xde\xf1\xca\x2b\xaf\x54\xfd\x39\x00\x91\ \x1e\x10\xde\x4e\x51\x14\x05\xdb\xb6\x99\x34\x69\x12\x37\xdd\x74\ \x13\xdf\xf9\xce\x77\xa8\xad\xad\x65\xfa\xf4\xe9\x74\x75\x75\x91\ \xcd\x66\x7d\x63\xed\x38\x0e\x96\x10\xa8\xdb\x5c\x8a\xf9\xa9\xdc\ \xf4\xab\x0f\x50\x1b\x38\x95\x9b\xd6\xdd\x88\xae\xa9\xa8\x76\x08\ \x4d\x6b\x24\x5e\xe3\xc7\x28\xf2\xca\x2b\xaf\xdc\xe7\xfd\xff\xf5\ \xeb\xd7\xcf\x07\xf6\x1d\xad\x94\x78\x2a\xc4\x74\x4d\xe2\xe1\x00\ \x85\x8c\xcb\x4d\x27\xdf\x81\xab\x16\x59\xb3\xf7\x5e\x26\x37\x34\ \x32\x9c\xef\x65\xf4\xd5\x30\x4a\x40\x4e\x50\xc9\xde\x86\x54\x55\ \xd5\x07\x24\x16\x8b\x21\x84\xf0\x37\xa1\xa2\x28\xfe\x35\x02\x81\ \x00\x96\x65\x09\x21\x04\xe1\x70\xb8\x70\xb8\xf7\xa8\x1c\xce\x87\ \xa6\x4c\x99\x32\x69\xca\x94\x29\x2f\xb9\xae\x3b\xcd\xb3\x05\xd9\ \x6c\x25\x08\xbd\xea\xaa\xab\x68\x6c\x6c\xe4\x57\xbf\xfa\x15\xcd\ \xcd\xcd\x00\xac\x5d\xbb\x96\xdb\x6f\xbf\x9d\x50\x28\x84\xa6\x69\ \xbe\x71\x37\x0c\x83\x72\xa9\x84\xd0\x04\xa1\x58\x90\xda\xda\x5a\ \xba\xd5\x21\x16\x7c\xbc\xcc\xac\x8f\x16\x69\xb9\x75\x94\xc9\xd7\ \x24\x89\x9f\x6e\x10\x69\x16\x04\x83\x01\x11\x0c\x06\x09\x06\x83\ \xd4\xd7\xd7\xe3\x38\xce\x31\xe9\x30\xc3\x30\xbc\x00\x0e\x45\x28\ \x9c\x14\x7e\x3f\xa1\x6a\x9b\xe7\xdf\x78\x9d\x45\xda\xf5\xac\x3e\ \xe3\x6e\x6a\x42\xf5\x94\xcb\xe5\xca\xbd\x96\xcb\x98\xa6\x49\x36\ \x9b\xf5\x37\x56\x20\x10\xf0\xa5\xe1\xb2\xcb\x2e\x23\x12\x89\x50\ \x5f\x5f\xcf\xdc\xb9\x73\x7d\x60\x34\x4d\xf3\xb5\x87\xe7\x7d\x1d\ \x57\x40\x92\xc9\x64\xed\x05\x17\x5c\x70\x6e\x28\x14\x8a\x58\x96\ \xe5\x5f\xb8\x5c\x2e\xf3\xe1\x0f\x7f\x18\xc3\x30\xb8\xff\xfe\xfb\ \x59\xbe\x7c\xb9\xaf\x3b\xbd\x1b\x5f\xb0\x60\x01\xb7\xdd\x76\xdb\ \x04\xe3\xee\xc5\x2d\xa6\x61\xe2\x04\x4c\x34\x4d\x25\x9b\x74\xb8\ \x6a\xe1\xc7\xa8\x9b\x1a\x23\xb2\x38\x4b\xed\x15\xc3\xe8\x0b\x52\ \x18\xa5\x31\x6f\xc8\x34\x8f\xd8\x40\x36\x34\x34\x5c\x1e\x8d\x46\ \x6f\x8a\xc5\x62\x37\x4a\x29\x97\x0c\x0d\x0d\x31\x38\x38\x48\x62\ \x68\x84\x81\x37\xb3\xf4\xed\x18\xe0\xb9\x35\x6b\xd9\xf1\xfa\x0e\ \xf6\x6d\xda\xc3\xfd\x0f\x7c\x97\x9d\x2f\x76\x91\x2f\x64\x7d\xe0\ \x3c\x0f\xca\xf3\xa2\xce\x3e\xfb\x6c\xaa\xab\xab\x91\x52\x92\x48\ \x24\x7c\xa3\x9e\x48\x24\x18\x93\x06\x5f\x75\x65\xb3\x59\x5f\x5d\ \x1f\x57\xa3\xee\xf9\xdf\xde\xc5\x15\x45\xe1\xfc\xf3\xcf\xa7\xb5\ \xb5\x95\xc7\x1f\x7f\x9c\xba\xba\x3a\x9e\x7a\xea\x29\x9e\x79\xe6\ \x19\x42\xa1\x10\x57\x5d\x75\x15\xa7\x9f\x7e\x3a\xa9\x54\x8a\xfb\ \xef\xbf\x9f\xbe\xbe\x3e\x0c\xc3\x20\x99\x4c\xfa\xd1\xb8\x69\x9a\ \x20\x41\x6a\x92\x72\xc9\xe1\xae\xf7\x3e\xc5\xa3\xad\xdf\xe0\xa6\ \xf9\x5f\x65\xed\x8e\x17\x50\x1b\xfa\x78\xcd\xde\x56\xb1\x23\x4a\ \x65\x67\x1e\xe9\x9a\x3c\x79\xf2\xb7\x97\x2d\x5b\x36\xcb\xb2\x2c\ \x54\xa1\x50\xac\x4e\xcb\x58\xb5\x26\xdc\xac\x8e\x9d\xd4\xe9\xdb\ \x36\x0c\x02\xea\xb5\x69\x8c\xa6\x73\x24\x64\x96\xa6\xc0\x0a\xf6\ \x8f\xbe\x44\x53\xa0\xc9\x7f\x91\x9e\x4d\xb4\x2c\x8b\x48\x24\xe2\ \x7b\x91\x1b\x37\x6e\x24\x16\x8b\x91\x48\x24\xa8\xae\xae\x46\x08\ \xc1\xb4\x69\xd3\x18\x1e\x1e\x26\x9f\xcf\xfb\x31\xdb\x91\x48\xb6\ \x72\xb8\x80\x78\x60\x14\x8b\x45\xa6\x4d\x9b\xc6\xbf\xfc\xcb\xbf\ \xa0\x69\x1a\xcf\x3d\xf7\x1c\x7d\x7d\x7d\xc4\x62\x31\x82\xc1\xa0\ \xef\xee\x6e\xdb\xb6\x0d\x4d\xd3\x26\xf8\xff\x9e\xcd\x39\x24\x21\ \x95\x28\x3f\xa0\x46\x98\xd6\x38\x85\x84\xd8\x85\xb4\x42\x48\x09\ \x8e\xb4\x70\x1d\x07\xc3\x34\x7c\xd1\xb7\xde\xe2\x07\x37\x35\x35\ \xbd\xd3\x7d\x3b\xe5\x72\x99\x72\xb9\xcc\xee\x6c\x17\x91\x73\x07\ \x45\xe8\xac\x7e\x42\x97\x75\x50\xf5\xe1\x7d\xd4\x7c\xf0\x00\xa1\ \x73\xfb\x11\x33\x93\x95\xeb\x58\x26\x96\x7b\x28\x9e\xf0\x24\xbd\ \xbe\xbe\x1e\x4d\xd3\xd0\x75\x9d\x97\x5e\x7a\xc9\xb7\x29\xba\xae\ \xfb\x52\x14\x0e\x87\x31\x0c\xc3\x07\xcf\xb3\x35\x63\x80\x34\xad\ \x5c\xb9\x52\xd6\xd7\xd7\xcf\x3f\x6e\x46\xdd\x8b\x3b\x4c\xd3\xa4\ \x54\x2a\x31\x30\x30\x40\x24\x12\x61\x68\x68\x08\xc7\x71\xe8\xef\ \xef\xf7\xe9\xe8\xd1\xd1\xd1\x0a\x97\x35\x65\x0a\x9f\xfd\xec\x67\ \x71\x1c\x87\x60\x30\x88\xaa\x1e\x72\x1f\xbd\x77\xeb\xb4\x97\xd8\ \xf0\xef\x2a\xa7\xfe\xdb\xa9\x00\x3c\xcf\x87\xde\xf6\xfa\xd9\x6c\ \x96\xf9\xf3\xe7\x77\x79\xee\xf0\xd0\xd0\xd0\xbf\x0d\x0c\x0c\xdc\ \xf1\x4e\x5e\xa1\x07\xa6\x29\x2d\x14\x14\xc8\x4c\xe6\x8e\xcb\xbf\ \x47\x7b\x7a\x33\xdf\x7b\xf9\xdf\x58\xbc\x64\x0e\xdd\x75\x9d\x64\ \x77\x69\xbe\x34\x18\x86\x41\x2a\x95\xf2\x8d\xf3\xf5\xd7\x5f\xcf\ \x9a\x35\x6b\xc8\x64\x32\xd4\xd5\x55\x9c\xbe\xd1\xd1\x51\xff\x1a\ \xf5\xf5\xf5\x98\xa6\x49\x38\x1c\x66\x68\x68\x08\x55\x55\x89\xc7\ \xe3\xe8\xba\x4e\x2e\x97\x03\x60\xee\xdc\xb9\xec\xda\xb5\xcb\x39\ \x2e\x80\x58\x96\x55\xf0\x5e\xa0\xa2\x28\x14\x8b\x45\x3e\xf3\x99\ \xcf\x50\x5d\x5d\xed\xe7\x3e\xc6\x7b\x22\xde\x9f\x93\xc9\x24\x81\ \x40\xc0\x07\xe4\x87\x3f\xfc\x21\x86\x61\xf0\xf1\x8f\x7f\xdc\xe7\ \xbb\x54\x54\x96\x2c\x59\x52\x51\x89\xd2\x21\x39\xf7\x00\x73\x16\ \x46\x70\x72\x2a\xd6\x70\x08\x7b\x28\x88\x35\x18\x44\x48\x05\xa1\ \xbb\xfe\x35\x86\x86\x86\x0e\xdb\x90\xdb\x96\x8d\xab\x3a\x08\x45\ \x70\xdd\x82\x4f\xb3\xbe\xf7\x49\x9c\x91\x69\x5c\x37\xf7\x4b\x9c\ \x7f\xea\x99\xdc\xfe\xe8\xe5\xbe\x6b\xab\xaa\xaa\x1f\x03\x79\x6c\ \xc3\x96\x2d\x5b\x2a\xe4\xe3\x98\x73\x32\x69\xd2\x24\xa4\x94\x08\ \x21\x28\x95\x4a\xfe\xc6\x54\x55\x95\x50\x28\x44\xb1\x58\x24\x12\ \x89\xf8\xa1\x80\x65\x59\xfe\xf7\x1f\x33\x20\xb5\xb5\xb5\xb7\x2c\ \x5d\xba\xf4\x2e\x8f\x2e\x39\xe1\x84\x13\x48\xa5\x52\x04\x02\x01\ \xd2\xe9\xb4\xaf\x82\xa4\x94\x28\x8a\xe2\xb3\x9f\xde\xee\x1a\xa3\ \x16\x5c\x65\x2c\x9a\x9a\x36\x6d\x1a\x8e\xe3\x50\x28\x14\x10\x08\ \x6c\x69\x51\x2c\x16\x29\x97\xcb\xf4\x59\x49\x5a\xa6\x3b\xc8\x48\ \x89\xc6\x49\xd3\x49\x4d\xed\x43\x0a\x07\xd3\x35\x51\x4a\x61\x86\ \x1e\x99\x5c\x49\x74\x1d\x01\x45\x62\x59\x16\xb6\x65\x21\x15\x89\ \xa2\x09\x1a\xaa\x9b\x39\x58\xfa\x3d\xc9\x24\x64\xdd\x7e\xea\x4e\ \x30\x08\x07\x23\x5e\xcc\x33\x41\xe5\x78\x2a\xb6\xa7\xa7\x87\x50\ \x28\x84\xeb\xba\xac\x5e\xbd\x9a\xad\x5b\xb7\xd2\xd9\xd9\xe9\x7b\ \x52\xaa\x5a\x61\x80\x6b\x6a\x6a\xc8\x66\xb3\xa8\xaa\x4a\x2c\x16\ \xf3\xd5\x9e\x17\xbb\x1d\x8e\x53\xf2\x8e\x80\x98\xa6\x39\xb5\xa9\ \xa9\xa9\xa6\xa7\xa7\x07\xd3\x34\xb9\xe7\x9e\x7b\xd8\xb3\x67\x0f\ \x37\xde\x78\x23\x3f\xf8\xc1\x0f\x48\x24\x12\xd4\xd6\xd6\x12\x0c\ \x06\x79\xe9\xa5\x97\x58\xb8\x70\x21\xbb\x76\xed\xa2\xa7\xa7\x87\ \xb9\x73\xe7\xb2\x6d\xdb\x36\xf6\xef\xdf\x7f\xfb\x82\x05\x0b\xbe\ \xf3\xec\xb3\xcf\x72\xd1\x45\x17\x51\x2e\x97\x7d\x95\x25\x74\xc5\ \xf7\xbe\x5c\xc7\x45\x55\x04\xa1\xec\x7c\x3e\x71\xd1\x9d\x68\x32\ \xca\x17\x9e\xf8\x08\x1f\x3e\xfb\x46\x7e\xb6\xfd\x6e\x2c\xcb\xac\ \xe4\x52\xfe\xc8\x83\x0d\x0c\x0c\x30\x6b\xd6\xac\x3b\xa3\xd1\xe8\ \x54\x00\xe9\xca\x29\xc9\xd1\x14\xd2\x75\x41\xb7\xe9\xfc\xa5\xc2\ \x77\x5f\xf8\x16\x69\xf7\x20\x46\x36\x88\x4d\x89\xee\x75\x9d\x74\ \x0d\xe6\x30\xcd\xb0\x0f\x48\x38\x1c\x66\xc6\x8c\x19\x0c\x0e\x0e\ \x62\x9a\x66\xaa\x54\x2a\xf5\x38\x8e\xb3\x44\x51\x14\x71\xd7\x5d\ \x77\x49\xd7\x75\x85\xb7\x01\x3d\x1b\x0b\xf8\x86\x1c\x20\x95\x4a\ \x11\x8b\xc5\xfc\x4d\x7a\xb8\x34\x8a\x76\x38\x06\xdd\x34\x4d\x0a\ \x85\x02\xaa\xaa\xf2\xa3\x1f\xfd\x88\x6f\x7f\xfb\xdb\xfc\xf4\xa7\ \x3f\x65\xfd\xfa\xf5\xa8\xaa\x8a\xae\xeb\x68\x9a\x46\x2a\x95\x62\ \xef\xde\xbd\xe4\xf3\x79\xca\xe5\x32\x89\x44\xc2\x53\x5f\x21\x55\ \x55\xd9\xb0\x61\x03\xaf\xbf\xfe\xba\xef\xab\x8f\xbd\x34\xdf\xdf\ \xb7\xb1\x71\x71\x59\xd6\x70\x19\x8f\x6c\xfb\x2a\xb3\xb4\xf3\xb9\ \xf6\xa4\xd5\xb4\xd4\x4c\x41\xa0\x54\xd4\x9c\x22\xde\xc9\xb3\xfa\ \xfb\xe9\xd3\xa7\xd7\x0b\x21\x28\x38\x65\x58\x38\x4c\x7d\x3c\x8c\ \xd3\x1f\xc1\xea\x0b\x93\x19\x4d\x22\x88\x11\xaa\x98\x65\x8a\x43\ \x92\x46\x71\x22\x1d\x66\x87\xcf\x38\x54\x57\x57\x13\x8f\xc7\x49\ \xa5\x52\x98\xa6\xf9\xec\x9e\x3d\x7b\x6e\x8a\xc7\xe3\xd7\x5a\x96\ \x35\xcb\xb2\xac\xaf\x5d\x70\xc1\x05\xac\x58\xb1\x82\x47\x1f\x7d\ \xd4\xb7\xab\x5e\x10\xe9\x51\x4a\x8a\xa2\x30\x3c\x3c\x4c\x34\x1a\ \x3d\x22\x5e\xeb\xb0\x00\xf1\xbe\xcc\x73\xf5\x4e\x3b\xed\x34\x5f\ \x2d\x8d\xb7\x1f\x42\x08\x7a\x7b\x7b\xfd\x3f\x1f\x38\x70\xc0\xf3\ \xbc\xd2\xfb\xf7\xef\xff\xab\xb1\xe8\x95\x50\x28\xf4\xf8\x89\x27\ \x9e\xa8\x7e\xf1\x8b\x5f\xe4\x73\x9f\xfb\x1c\xa6\x69\x56\xf2\x29\ \xaa\x8d\x10\x10\xd0\x22\x38\xae\x8d\x61\x9a\x64\x64\x8a\xae\x4c\ \xe2\x10\x85\x21\xf0\x77\xe6\xdb\x2d\x8f\x85\x05\x78\x23\xbf\x9f\ \xeb\x4f\xaf\xc1\xb2\x73\x94\x5a\x06\xa9\xd6\xc2\x08\x47\x45\x1a\ \x2a\xc5\x3d\x51\xf2\xdb\x62\x20\x2a\x3b\x3d\x95\x4a\xf9\xd7\x28\ \x95\x4a\xa4\x52\xa9\x09\xcf\x98\x4e\xa7\x7f\x01\x9c\xb8\x6a\xd5\ \xaa\xaf\xdd\x79\xe7\x9d\xe8\xba\x8e\x61\x18\x74\x75\x75\xb1\x74\ \xe9\x52\x7e\xf9\xcb\x5f\xf2\xbe\xf7\xbd\x8f\x2d\x5b\xb6\xb0\x67\ \xcf\x1e\x2e\xbd\xf4\x52\x86\x86\x86\x58\xbb\x76\xad\xbf\xa9\x17\ \x2c\x58\xf0\x66\x6b\x6b\xeb\xaa\x6c\x36\xbb\xe5\x98\x25\xc4\x33\ \x70\x93\x27\x4f\x66\x68\x68\xc8\xb7\x15\xde\x4d\xbb\xae\xeb\xff\ \xf2\x78\xac\xb1\x07\x7c\x42\xd7\xf5\xbd\xc3\xc3\xc3\xaf\x7a\xdf\ \xd9\xd2\xd2\x22\x9f\x7b\xee\x39\x5e\x7c\xf1\x45\x96\x2f\x5f\xce\ \x86\x0d\x1b\x2a\xbb\x2c\xe4\x32\xb4\xce\xe2\xf9\xf8\xd3\xc8\xc8\ \x28\xfd\xca\x1b\x18\x56\x89\xaa\x1a\x9d\x83\x43\x06\x85\xa2\xed\ \xdf\x53\x2c\x16\x3b\x77\xf1\xe2\xc5\x5f\x02\x84\x61\x18\x76\x5b\ \x5b\xdb\x57\x3c\xbe\xc9\xf7\x8e\x85\x44\x22\x59\x20\xae\x67\xc5\ \x7b\x4e\x21\x6d\xf6\xb3\x61\xdf\x6b\x64\x42\xfb\x29\x06\x6c\x2c\ \xcb\x44\x22\xd1\x34\xcd\x27\x32\x5d\xd7\x95\xaa\xaa\x0a\xc7\x71\ \x88\xc7\xe3\x24\x12\x89\xf1\xe8\x2b\x43\x43\x43\xec\xde\xbd\x9b\ \xe6\xe6\x66\x3c\x97\x7a\xe3\xc6\x8d\x00\xbc\xf6\xda\x6b\x94\xcb\ \x65\x74\x5d\xe7\xb5\xd7\x5e\xa3\xa1\xa1\xc1\xbf\x5f\xc3\x30\xa8\ \xa9\xa9\x89\x59\x96\xa5\x1f\xab\x97\x25\x6d\xdb\x46\x55\x55\x1e\ \x7e\xf8\x61\xa6\x4e\x9d\xca\x23\x8f\x3c\xc2\xce\x9d\x3b\x09\x85\ \x42\x24\x93\x49\xa2\xd1\x28\x83\x83\x83\x04\x02\x01\x62\xb1\x18\ \x23\x23\x23\x64\x32\x19\xd2\xe9\x34\x6d\x6d\x6d\x57\xbf\xdd\x2e\ \x7e\xf6\xd9\x67\xa9\xad\xad\x25\x97\xcb\xf9\x34\x45\xa9\x54\xa4\ \x2e\xb9\x08\x07\x0b\x91\xa9\xa1\xcf\x19\x22\x34\xbd\x8c\x99\x0d\ \xd0\xc8\x3c\x26\xaf\xa8\xe4\xb5\xa5\x25\x40\x61\x95\x10\xac\x1a\ \x8b\x69\x4a\x1e\x20\xe3\x25\x44\x00\x03\xfd\x79\xfe\xf3\x6f\x3e\ \xce\xc7\x7f\x7d\x36\x5f\x3e\xe7\x69\x6a\xec\x79\xa8\x35\x29\xbe\ \xb5\xe9\xab\x18\x86\x09\xa2\xc2\x59\x79\x2a\x54\xd3\x34\x31\x38\ \x38\xd8\x39\x38\x38\xb8\x4d\x08\xe1\x06\x02\x81\xb5\x6f\xdd\xa0\ \xab\x57\xaf\xc6\xb6\x6d\x42\xa1\xd0\x04\x35\x74\xf0\xe0\xc1\x09\ \x3f\x1f\x38\x70\xc0\xb7\x21\x85\x42\xe1\x0f\x3e\x7f\x54\x80\x28\ \x8a\x32\xc7\xb2\x2c\x54\x55\xa5\x54\x2a\x51\x2c\x16\x99\x3b\x77\ \x2e\x6f\xbe\xf9\x26\x4b\x96\x2c\x61\x78\x78\x98\xda\xda\x5a\xb2\ \xd9\x2c\xe5\x72\x99\x48\x24\xc2\x39\xe7\x9c\xc3\x33\xcf\x3c\xf3\ \x47\x2f\xae\x69\x1a\x5f\xfa\xd2\x97\x7c\x43\xe8\xc5\x0b\x05\xa5\ \x4c\xa9\x54\x42\xa4\x05\x42\x08\x76\xe8\xfb\x78\xef\x19\x35\xd8\ \xd6\x78\xcf\x4a\xe2\x18\x0a\x99\x17\xea\x30\x87\x03\x80\xfc\x03\ \xb0\x7d\x9a\x45\x07\xc7\x86\x80\xae\xa3\x29\x01\x10\x90\xc8\x0f\ \xf2\x46\xff\x03\x48\x57\x8e\xa9\xc0\x8a\x94\x37\x34\x34\xf8\x36\ \x40\x51\x94\x5f\x67\x32\x99\xd5\x6f\x17\x8e\x79\xae\xbc\xb7\xeb\ \x0f\x33\xed\xed\x7f\xff\xb1\x02\x32\xbd\xb6\xb6\xf6\x46\xc3\x30\ \xa4\xa6\x69\xe2\xee\xbb\xef\xa6\xb1\xb1\x91\xbd\x7b\xf7\xe2\xba\ \x2e\x83\x83\x83\x18\x86\x41\x38\x1c\xa6\x50\x28\x20\xa5\x64\x74\ \x74\x94\x5d\xbb\x76\xfd\x49\xee\xa9\x58\x2c\xe6\xa5\x94\xde\xb5\ \x83\xe1\x70\x58\x77\x1c\x07\xdd\x52\x71\xdc\x43\x2a\x47\x09\x09\ \x2c\xc7\x66\x45\xf4\x16\x16\xcf\x5c\xc0\x96\xe4\xe3\xe4\x92\x1a\ \xbb\xdd\xe7\x70\xb4\x18\x96\x09\x12\x39\xc1\xa6\xb8\xae\x2b\x7d\ \x03\x1a\x12\xc4\x27\x85\x28\x18\x65\x02\x21\x95\x9a\xaa\x5a\x4c\ \xa5\x88\x16\xd2\x40\xa9\x00\x22\x91\xbe\xfa\x6d\x6e\x6e\x66\x68\ \x68\x88\xb7\x2b\x4d\x02\x08\x04\x02\xed\x1d\x1d\x1d\x8d\xf3\xe7\ \xcf\x1f\x9a\x32\x65\x0a\x37\xdc\x70\x03\x8f\x3d\xf6\x98\x6f\x7b\ \xbc\x80\xd7\xdb\x60\x1e\xc3\xa1\xeb\xba\xcf\x8a\x1f\x2b\x20\x11\ \x21\x04\xb9\x5c\x4e\xd4\xd7\xd7\x33\x3c\x3c\xcc\xe0\xc0\x10\x20\ \x10\x02\x1f\xf1\x72\xb9\xec\x07\x54\xde\x36\x8e\xc5\x62\xa2\x54\ \x2a\xbd\x6d\xf4\x2c\x84\xf0\x2b\xe9\x66\xce\x9c\xf9\xa0\xaa\xaa\ \x1f\xbe\xfc\xf2\xcb\xfd\x00\xec\x90\x2b\x29\x49\x0d\x0a\xfe\xee\ \xe6\x9b\xb9\xe9\x67\x4b\xf9\x97\xb3\x1f\xa3\x18\x2f\x30\xd3\x6c\ \xe6\x27\xbf\x79\x02\xc3\x90\x9e\x0d\x08\x5d\x74\xd1\x45\x23\x80\ \x14\x8e\xa8\xb3\x2c\x89\xa2\xc0\x22\x3b\xc2\xf0\xc3\x0a\xd7\x3f\ \x74\x2d\x52\x09\x71\xfd\x7f\x5d\x83\x65\x5b\x04\xb5\x08\xdb\x5b\ \x7b\xa9\x8a\xc4\x7d\x4a\xdd\x23\x3f\xff\x18\x18\xe3\xf2\x22\x32\ \x16\x8b\xf1\xe2\x8b\x2f\xb2\x71\xe3\x46\x5a\x5a\x5a\xd8\xba\x75\ \x2b\xe1\x70\x98\xf5\xeb\xd7\xfb\x36\x31\x12\x89\xd0\xd2\xd2\xc2\ \xae\x5d\xbb\x18\x1d\x1d\xf5\x93\x74\xc7\xac\xb2\xa4\x94\xe8\xba\ \xce\xbe\x7d\xfb\x90\xae\xa4\x66\xb1\x4e\x24\xac\x92\xeb\xb7\x29\ \x0e\x39\x48\xf7\x6d\xd5\x9c\x28\x97\xcb\x9d\x8a\xa2\x7c\xf3\xed\ \x9c\x84\xb7\xb0\x00\xfa\x07\x3e\xf0\x01\xe6\xcc\x99\xc3\x07\x3f\ \xf8\x41\x6e\xbd\xf5\x56\x3f\xcf\x20\x10\x54\x05\xe3\xd8\xb2\x44\ \xbc\xaa\x8a\xe6\xda\xa9\x3c\xbf\xe3\xd7\x3c\xd1\x77\x1f\xb6\xd5\ \x88\x69\xb9\x50\xd9\xe1\xa2\xa6\xa6\x66\x92\x40\xd0\x35\x6d\x0f\ \xa7\x5d\x14\xc6\x18\xac\xd4\x55\xd9\x83\x01\x9c\xac\x06\x96\x8e\ \x5b\x52\x50\x75\x0d\x4d\x53\x29\xe5\x4d\x6c\x23\xe5\x25\xdd\x64\ \x34\x1a\x15\x23\x23\x23\x84\x42\xa1\x77\xe4\xf8\x1c\xc7\xe1\x95\ \x57\x5e\x21\x1e\x8f\xe3\xba\x2e\xfd\xfd\xfd\x7e\xa2\xca\x4b\xc8\ \x79\xec\x6f\x5d\x5d\x1d\x03\x03\x03\x68\x9a\xe6\x05\x91\xb1\xe3\ \x02\xc8\xec\xd9\xb3\x2b\x14\x40\xb2\x22\x9a\x51\x29\x89\xd4\xcb\ \x09\xa5\x3b\x9e\x97\x35\xb6\xe3\x7a\x06\x06\x06\xfe\xeb\x70\xe9\ \x8d\xb9\x73\xe7\xfa\x51\xed\x21\x75\x27\xb0\x5d\x13\x45\x68\x80\ \xa0\x64\x15\xd1\x54\x8d\xa0\x16\xc5\x71\x5c\x4c\xd3\xf2\x83\x39\ \xcb\xb2\x28\x38\x65\x6a\xa7\x29\x48\x5b\x25\x5a\x1f\x46\x99\x62\ \x61\xcc\x4f\xf8\x9b\x60\xe0\xa1\x49\x48\x5b\xf1\x3d\x41\x8f\x5b\ \x53\x55\x55\x74\x75\x75\x3d\xe0\xed\x11\x5d\xd7\x7f\xfd\xa7\xee\ \xd7\x75\x5d\x3e\xf9\xc9\x4f\xfa\xdf\x33\x7e\xed\xdb\x77\x28\x7f\ \xd6\xdf\xdf\xef\x7b\xa1\xf1\x78\x1c\xc7\x71\xa8\xaa\xaa\xfa\x72\ \x3a\x9d\x7e\xe1\x98\x00\x59\xb1\x62\x05\x97\x5d\x76\x19\x67\x9f\ \x7d\x36\xdf\xfb\xde\xf7\x68\x6d\x6d\xe5\xe4\x93\x4f\xe6\xf5\xd7\ \x5f\x67\xee\xdc\xb9\x64\x32\x19\x5a\x5b\x5b\x09\x87\xc3\xcc\x9c\ \x39\x93\x37\xde\x78\xe3\xb0\x29\xf2\x40\x20\xc0\x0b\x2f\xbc\xc0\ \xde\xbd\x7b\xe9\xed\xed\xf5\x19\x54\x21\x04\x85\xd6\x1c\x43\x46\ \x23\xff\xeb\xa5\x5b\x18\xcc\xea\x7c\xea\xb1\x4f\x60\x18\x36\x79\ \x27\x8e\x5d\x14\x44\x22\x87\xa4\xae\xa2\x1e\x25\xca\xeb\x93\x39\ \xf8\x86\xe0\xc1\x07\x7e\xc4\xfe\x9e\x2e\x7e\xbb\xf7\xa7\xfc\xed\ \xaa\x8f\x72\xf7\xba\x5b\x31\x4d\x0b\x69\x1f\x02\x42\xd7\x75\x9f\ \x4a\x1f\x19\x19\xf9\xc8\xe1\xde\x73\x3e\x9f\x27\x12\x89\x1c\x02\ \xc3\x01\xcb\x74\xc7\xee\x05\x84\x2a\x50\xd4\x31\x6d\x30\xf6\x91\ \xd1\xd1\x51\x5f\x3d\x1e\x8b\x84\xb8\xde\x2e\x88\xc7\xe3\x84\xc3\ \x61\x9f\x74\x0b\x04\x02\x2c\x5d\xba\x94\xee\xee\x6e\xaa\xab\xab\ \x7d\xa3\xa5\xeb\xfa\x3b\x5e\xf4\x2d\x2a\x2b\xa0\x28\x0a\x07\x0f\ \x1e\xf4\x8a\x06\x64\xb9\x5c\x16\x00\xe5\x62\x91\x69\x2b\x66\x92\ \xcb\xe5\x88\x69\x75\xa4\x67\x1c\xa0\x69\x46\x80\xaa\xb4\x8e\x93\ \x1d\xfb\x95\xd6\x70\x73\x1a\x62\xec\x49\xc2\xe1\x30\xe9\x54\x9a\ \xf5\x3d\xcf\xb2\xe9\xcd\x2e\x2e\x3e\xf9\x06\x1a\x63\xd3\x11\x28\ \x95\x58\xc7\xaa\x48\xd4\xbc\x79\xf3\xfc\x6c\xe6\xe1\x12\x95\x00\ \x35\x35\x35\x23\x1d\x1d\x1d\x4d\xa7\x9c\x72\xca\x40\x2a\x95\x42\ \x48\x70\x67\x0b\x96\x5f\x59\x43\x7e\xc0\xa1\x38\x6c\x93\x1b\x70\ \x28\x0e\xd9\x18\x19\x17\xcf\x24\x79\xef\xf0\x4f\xd9\xa8\x77\x04\ \x24\x1a\x8d\x2e\x07\xd8\xb6\x6d\x1b\x89\x44\x82\xe1\xe1\x61\x8a\ \xc5\x4a\xe9\xce\xee\xdd\xbb\xfd\xc0\xd0\x03\xcd\x75\x5d\x5e\x7e\ \xf9\xe5\x23\x4a\x26\x25\x93\xc9\x2f\x0e\x0d\x0d\x7d\x77\xcc\x8d\ \x9c\xbe\x60\xc1\x82\x87\x0f\x79\x23\x95\x0a\x96\x72\xb9\x4c\xca\ \xcd\x31\x75\xae\x89\xa8\xb2\x69\x9c\xd6\x44\xd9\xcd\x51\x72\x12\ \x28\x0a\xd8\x79\x95\xe1\x9f\x4e\xf6\x1f\x5c\x4a\x89\x57\xb2\x9e\ \x29\x8d\x92\x35\x12\x08\x45\x4c\x00\x24\x93\xc9\x70\xf5\xd5\x57\ \xf3\xf4\xd3\x4f\xfb\x31\xc8\xe1\xac\x4c\x26\x83\xae\xeb\x52\xd3\ \x34\x9a\x9a\x9a\x2a\x36\xa2\x7f\x80\x8e\x07\x15\x2c\xc7\x45\x28\ \x3a\xae\xab\xa2\x11\x40\x09\xbb\x7e\x4e\xc4\x53\xe5\xc7\x04\x88\ \xae\xeb\x7f\xe3\x65\xf8\xfa\xfa\xfa\xfc\xa4\xcc\xf8\xdf\x8f\x75\ \x15\x0a\x85\xbd\xc0\xde\xb1\x1f\xe7\x7b\x8c\x80\x10\x02\xa5\x50\ \x79\x89\xa6\x61\x62\x2b\x0e\xaa\xaa\xd0\xa2\xae\xe2\xef\x56\xde\ \x4a\x4d\xa0\x9e\x0f\x7c\xef\x7c\x6e\xbb\xea\x56\x7e\xb1\xfe\xfb\ \x13\xe8\x73\xdb\xb1\x59\x30\xe9\x34\x92\x53\x54\x06\x72\xdd\x04\ \xd5\xd3\x51\x50\x30\xcd\x32\xae\x55\x89\x83\x32\x99\x0c\x4f\x3f\ \xfd\xb4\xef\x96\x1e\xe9\x52\x14\x85\x07\x1e\x78\x80\xe1\xe1\x61\ \x84\x10\x3c\xfe\xf8\xe3\xc4\xe3\x71\x3a\x3b\x3b\x69\x6e\x6e\x66\ \xcb\x96\x2d\xcc\x9a\x35\x0b\xc7\x71\xd8\xb7\x6f\x1f\xcd\xcd\xcd\ \x74\x74\x74\x1c\x1b\x97\x25\xa5\x54\x63\xb1\x18\x7b\xf6\xec\x41\ \x08\x41\xf4\x7c\x9d\x15\x17\xd5\x20\x01\x23\x27\x49\xee\x35\x18\ \x6d\xb7\xc8\x74\x98\x98\x85\x43\xf9\x90\x9a\x9a\x9a\x11\xe0\x7d\ \x47\x5b\xa6\xfa\xd3\x9f\xfe\x94\x42\xa1\xc0\xe7\x3f\xff\x79\xbf\ \x30\xc1\x52\x4d\x84\x90\x9c\x3c\xe5\x6c\x7e\xd7\xfe\x00\xa9\xce\ \x06\xae\x58\xf8\xb7\xcc\xa8\x59\x84\xed\x54\xaa\x60\x3c\x09\xe9\ \xee\xee\xe6\x6b\xff\xfb\xbb\x95\xc4\x56\x29\xc5\xc6\x9f\xec\xe2\ \xc0\x20\x64\x53\x79\x8f\x02\x92\x8a\xa2\x08\xaf\x8e\xea\x9d\x76\ \xed\xdb\xd9\x55\x8f\x5d\x9e\x3f\x7f\x3e\x5d\x5d\x5d\x8c\x8c\x8c\ \x78\xcf\xce\xc9\x27\x9f\xcc\xe6\xcd\x9b\x19\x19\x19\x61\xd1\xa2\ \x45\xa4\x52\x29\x46\x47\x47\xd1\x34\xed\xd8\x24\xc4\x8b\xaa\x3d\ \xef\xc9\xd9\xa9\xf1\x66\x47\x96\x7c\xbf\x83\x55\x94\x28\x9e\xf1\ \x52\x55\x54\x55\xfa\xb9\x91\x40\x20\xe0\x0e\x0c\x0c\x1c\x55\xd3\ \xca\xbc\x79\xf3\x68\x6e\x6e\x66\x74\x74\x94\xe6\xe6\xe6\x4a\x85\ \xbd\x65\xe2\xe0\x00\x02\x4d\x09\x60\x4b\x0b\xdb\xb1\x18\x48\x0f\ \xd3\x95\x0e\xa3\x09\xdd\x8f\x5f\x34\x4d\x03\xcd\xa1\xa4\xa6\x70\ \xb2\x1a\x8a\xd4\xc9\xe6\xb2\xc4\xf4\x38\xb9\x5c\x07\x8a\xa2\xa0\ \xeb\xba\x28\x14\x0a\x3b\x37\x6d\xda\xf4\x4f\x42\x08\x55\x51\x94\ \x23\x2e\x91\x54\x55\x95\xaf\x7c\xe5\x2b\xcc\x9f\x3f\x9f\xcd\x9b\ \x37\xa3\xeb\x3a\x1d\x1d\x1d\xb8\xae\xcb\xab\xaf\xbe\x8a\xa6\x69\ \x24\x93\x49\xda\xdb\xdb\xc7\x9b\x00\xa4\x94\x35\xc7\x22\x21\x48\ \x29\xf9\xd1\x8f\x7e\xc4\xac\x59\xb3\xb8\xf7\xde\x7b\x2b\x65\x93\ \x73\x4a\x7e\x92\xaa\x58\x2c\x22\xa5\x64\xd2\xa4\x49\x74\x75\x75\ \x91\xc9\x64\x8e\xb8\x3a\x64\x42\x85\x79\x5b\x1b\x2f\xbd\xf4\x12\ \x2d\x2d\x2d\x1c\x38\x70\x80\x78\x3c\x5e\x49\xc3\x62\xa3\x6b\x21\ \x52\xc6\x20\xd3\xa7\xcc\xa3\x7e\x5a\x1d\x9b\x7a\xba\xa9\x8d\x4c\ \x1e\x8b\xba\x0f\xb9\xc0\x7a\x5c\x52\xf7\xfe\x01\x46\x9e\xae\xc3\ \xe8\xad\xd0\x2b\x8e\xe3\xf8\xe5\x3b\x63\xbf\x27\x8b\xc5\xe2\xf3\ \x47\x73\x8f\x63\x84\xab\xab\xeb\xba\xb2\x73\xe7\xce\x4a\x0b\x85\ \x00\x55\x55\x90\x12\x62\x91\x18\x96\x6b\x55\x1c\x2c\x81\x1f\xab\ \x8d\xd5\x78\x2d\x38\x26\x09\x99\x37\x6f\x1e\xb3\x67\xcf\xe6\x84\ \x13\x4e\x60\xd9\xb2\x65\x6c\xdd\xba\x95\x65\xcb\x96\xf1\xe4\x93\ \x4f\x72\xf1\xc5\x17\xb3\x7b\xf7\x6e\x36\x6c\xd8\xc0\x99\x67\x9e\ \x49\x73\x73\x33\xcf\x3e\xfb\xec\x9f\xa4\xc7\xdf\x69\x45\x22\x11\ \xbe\xf5\xad\x6f\x21\x84\x60\x68\x68\xa8\x52\x01\x68\x98\xd8\xaa\ \xcb\x86\xff\x1e\x64\x93\xf9\x55\xe6\x35\x2e\xc1\x95\x2e\x3b\xfa\ \x36\xd1\xfa\x68\x1b\x1d\x23\xbd\x14\x86\x0e\xbd\x2c\x4d\x53\x59\ \xf7\xb5\x61\x8c\xd1\x51\x9c\x92\x64\xc6\x8c\x19\xe8\xba\xce\xd1\ \xaa\xa8\xb7\xf1\x0c\x87\x76\xee\xdc\x79\xf1\xac\x59\xb3\x5e\x28\ \x95\x4a\xb8\x2a\x4c\xbd\x21\xca\xc9\xcb\x63\xd8\x8e\x43\x53\x78\ \x1e\xc3\x46\x3b\x8e\xe1\x72\xf0\xd5\x12\xfb\x9e\xc8\xa3\xa8\x15\ \xa7\x27\xe2\xf9\xea\x47\x0b\x48\x67\x67\x27\xbf\xfc\xe5\x2f\x39\ \xe5\x94\x53\x78\xe5\x95\x57\xc8\xe5\x72\xf4\xf4\xf4\x60\x18\x06\ \x4f\x3e\xf9\xa4\x5f\x99\xf1\x9b\xdf\xfc\x86\x40\x20\xe0\xa7\x3e\ \x8f\x72\x8d\x0e\x0d\x0d\x7d\x43\xd7\x75\x6b\xec\xc1\x3f\x98\x4a\ \xa5\x66\xe4\xf3\x79\x2c\x53\x32\x2b\x3c\x83\x19\x33\xa6\x57\xa4\ \x54\x1a\x2c\xbb\x7e\x16\x55\x91\x32\x0d\xc3\x27\x63\x0d\x06\x71\ \x46\x2b\x69\x27\xa1\x48\x50\x24\x4c\x83\x5c\x2e\xc7\xc8\xc8\x08\ \xd1\x68\x94\x78\x3c\xce\x69\xa7\x9d\xc6\xcb\x2f\xbf\x7c\x5c\x1c\ \x12\x3f\xcd\x2b\xa1\xd4\x6a\xb3\x63\x7f\x8e\x7c\xaf\x83\x6d\x6c\ \xc4\x2e\x4a\xec\x72\xa5\x3f\x51\x0f\x68\xbe\x23\x70\xac\xd4\x49\ \x34\x1a\x8d\xf2\xf4\xd3\x4f\xf3\xc4\xe3\x4f\x1c\xf2\x46\x84\xc7\ \x49\x29\x7e\x4f\x8b\x50\x2a\x89\xac\xea\xea\x6a\x69\xdb\xf6\xd1\ \xea\xac\x91\xde\xde\xde\xff\xed\xfd\x50\x5f\x5f\xbf\x5c\x51\x94\ \x19\xaa\xa2\x80\x03\xae\xe3\x92\xcf\xe7\x11\xc0\x66\xab\x8d\x4b\ \x5a\xa2\xb8\x4a\x8e\xe0\xd4\x22\x8a\x2c\xa1\x6a\x0a\x76\x5a\xa7\ \xbc\x2f\x46\x7e\x5b\xd4\x67\x01\xbc\xea\xc1\x7c\x3e\x5f\xc9\xe5\ \x8b\xe3\xd3\x31\x67\x59\x16\xb7\xdc\x72\x0b\x00\x2f\xae\x7d\x11\ \x51\x56\xd0\xb4\x02\x42\x17\x18\xba\x81\xac\x96\x7e\x6c\x94\x48\ \x24\x0e\x2b\x6b\xa8\xbd\x83\x41\xaf\xf7\x92\xf9\xae\x0a\x93\xe6\ \x05\xd0\x75\x81\xb4\x75\xe6\x4e\x5e\x48\x47\x6a\x07\x28\x50\x4e\ \x39\xa4\xbb\x7c\x1d\x2e\x6c\xdb\xee\xe0\xf8\x2c\x25\x10\x08\x30\ \x7d\xe1\xc2\x4a\x46\xcf\x1a\xa3\xd6\xbd\x88\x58\x11\xac\xac\xbe\ \x85\xf7\x9d\x7e\x2d\x3b\x86\x5f\xe6\x85\x2d\x2f\xa1\x35\x0f\xd3\ \xd6\x37\xe0\x13\x85\x5e\xc2\xca\x8b\x05\xd6\xaf\x5f\xef\xf1\x55\ \xc7\xbc\xce\x3e\xfb\x6c\x2e\xb8\xe0\x02\xe6\xcc\x99\x43\xa1\x50\ \xa0\xb7\xb7\x97\x8b\x2f\xbe\x98\xc7\x1f\x7f\x9c\xf3\xce\x3b\x8f\ \x62\xb1\xc8\xab\xaf\xbe\xca\xfc\xf9\xf3\x89\xc5\x62\x3c\xf5\xd4\ \x53\x7e\x09\xee\x51\x01\xa2\x28\x8a\xa8\xaf\xaf\xa7\x90\x2f\x60\ \x45\x24\x4b\x3f\x52\x47\x75\x8d\x86\x74\x25\xc9\xb6\x7e\xea\xf6\ \x55\x31\xbc\xdd\xc0\x1a\x75\x88\xc5\x82\xbe\x27\x31\x34\x34\xf4\ \xe6\xf1\x78\x60\xd7\x75\xb9\xfd\xf6\xdb\xa9\xae\xae\xe6\x8a\x2b\ \xae\xe0\xa2\x8b\x2e\xaa\xe4\x20\x24\x10\x82\x4c\xba\xc4\x65\x67\ \x5c\xcf\x2d\xbf\x3c\x93\x9f\xff\xcd\x2e\x4e\x08\x2d\x25\xe1\xec\ \x67\xf7\xfa\x3b\x30\x0c\xcd\x0f\x5a\xcb\xe5\x32\xd1\x68\x94\x60\ \x30\x78\x58\xae\xe7\xe1\xae\x6d\xdb\xb6\x31\x75\xea\x54\x06\x06\ \x06\x50\x55\x95\xda\xda\x5a\x76\xec\xd8\x81\x10\x82\x8e\x8e\x0e\ \xbf\x16\x78\xe7\xce\x9d\xac\x5c\xb9\xf2\xd8\xe9\x77\x8f\x7b\x29\ \x95\x4b\xe8\x8e\xce\x9b\x77\xa7\x91\x16\x58\xc5\x43\x39\x74\xa1\ \x4c\xd4\x8d\x47\x42\x9b\x1c\xce\x32\x4d\x93\xfa\xfa\x7a\xbf\xe2\ \xdc\xb2\xac\x4a\x27\x6f\x08\x0c\xc3\x25\x14\x0c\xe0\x52\xa9\x3f\ \xeb\x1e\x3a\xc8\xc6\xfc\x63\x28\xa8\x13\x92\x47\x1e\xf7\xd4\xd6\ \xd6\x36\xb7\x58\x2c\x8e\x00\xb2\xa1\xa1\xc1\x38\x1e\x36\xe4\xea\ \xab\xaf\x46\xd3\xb4\x3f\x48\x56\xb5\xb7\xb7\xfb\xc4\xa2\x94\x92\ \x5f\xfc\xe2\x17\x95\xf7\x75\xac\xf4\xfb\x25\x97\x5c\xc2\x87\x3e\ \xf4\x21\x5c\xd7\xe5\xc9\x27\x9f\xa4\xab\xab\x8b\x68\x34\xca\xc1\ \x83\x07\x89\xc5\x62\x54\x55\x55\x71\xe0\xc0\x01\x72\xb9\x1c\x8d\ \x8d\x8d\xf4\xf4\xf4\x1c\xb7\x1d\x28\x84\xe0\x87\x3f\xfc\x21\xcb\ \x96\x2d\xe3\x3f\xfe\xe3\x3f\x0e\x05\x7f\x08\xa4\x0b\xf1\x78\x88\ \x64\x26\x4d\x4d\xa0\xbe\xe2\x56\x4a\x9b\x80\x88\x20\x5d\x89\x65\ \xd9\x7e\xad\x98\x57\xd6\xa9\xeb\x7a\xce\x75\xdd\x0c\x70\x44\xfc\ \xd5\x1f\x91\x5e\x73\x7c\xbe\xc7\x09\x40\x75\x5c\xc5\x71\x5d\x26\ \x87\x67\x50\x72\xd3\x14\xac\x2c\x42\x48\x8c\xac\x8b\x5b\x92\x7e\ \xf6\xf0\xa8\x01\x19\x6b\xc0\xa4\xb5\xb5\x95\x1b\x6e\xb8\x81\x6d\ \xdb\xb6\x51\x2a\x95\xa8\xab\xab\x63\xd9\xb2\x65\x6c\xdc\xb8\x91\ \x60\x30\x48\x38\x1c\x26\x93\xc9\x1c\xf7\xb6\x66\x29\xa5\x5b\x55\ \x55\x25\x77\xec\xd8\x51\x29\x59\xf0\x4a\x50\x25\x48\x21\x89\x45\ \xc2\x3c\xbe\xfb\x7e\xbe\x75\xe5\x6f\xf8\xcd\xfe\x87\x78\xa9\xe3\ \x65\xce\x3a\xe9\x74\x5e\x73\x37\x62\x18\xa6\xcf\xe8\x7a\x54\x8c\ \x6d\xdb\xb3\xea\xeb\xeb\x03\xa3\xa3\xa3\x3d\xc7\x7a\x6f\xb6\x6d\ \xb7\x09\x21\x2a\xc5\x82\x08\x46\x96\x48\xfe\xee\xf6\x66\x24\x2e\ \x51\x33\x42\x50\x0f\x72\x70\xb8\x80\x55\x90\xbc\x7e\x57\x0a\xe9\ \x54\x34\xce\x31\xb9\xbd\x42\x08\xbe\xf9\xcd\x6f\x72\xfb\xed\xb7\ \xf3\xc9\x4f\x7e\x92\xb6\xb6\x36\x5c\xd7\x9d\xd0\x5f\x38\xd6\x9f\ \x8d\x94\x92\x9e\x9e\x9e\xe3\x0a\x48\x2a\x95\xba\xe8\xf9\xe7\x9f\ \xa7\xa5\xa5\xa5\x7d\xce\x9c\x39\xb3\xb3\xd9\x6c\xa5\x6e\x58\x28\ \x14\x6a\x24\x25\x33\xca\x7e\xf9\x1c\xdf\x79\x56\x67\xd5\xe9\xa7\ \x90\x50\x76\xf0\xcc\xbe\x5d\x0c\xb5\xe5\x48\xa5\x2a\x01\x6b\x28\ \x14\xa2\xa5\xa5\x85\x52\xa9\xc4\xb5\xd7\x5e\xfb\x7a\x5b\x5b\xdb\ \x86\x75\xeb\xd6\xad\x3c\x1e\x0e\x87\xef\xfa\x0a\x85\xba\x83\x92\ \x7d\x4f\x15\x18\xda\x6e\x90\xef\xdb\x38\x41\x35\xa9\x42\x03\x8d\ \xb7\xcd\x9f\x1c\xb1\x0d\x89\xc7\xe3\xdc\x77\xdf\x7d\x7e\xc2\xc8\ \x2b\x34\x00\xd0\x35\x1d\x5d\x3b\xe4\x0a\x7b\xe5\xa3\xfb\xf7\xef\ \x9f\x71\x3c\xed\x88\x57\x2d\xef\xbd\x00\x81\x40\x35\x5c\xb4\x30\ \xe4\x7b\xe1\xf5\xce\x9f\xf3\xe4\x4f\x7e\x4c\x79\x44\x62\x95\x5c\ \xca\x69\xd7\x8f\x85\x54\x55\x25\x9d\x4e\x13\x0a\x85\x18\x19\x19\ \x39\xa2\x5e\x8d\xc3\x21\x18\x2f\xbc\xf0\x42\x6e\xbc\xf1\x46\xbe\ \xf5\xad\x6f\xa1\xf6\xa9\x10\xcc\xd1\x38\x1b\xbf\x7f\xbf\x5c\x2e\ \x53\x55\x55\x45\x2a\x95\xc2\xeb\x8b\x3f\x6a\x40\x62\xb1\x98\xdc\ \xb4\x69\x53\xa5\x92\x23\x06\x0b\xcf\x8f\xa1\x07\x04\x4a\xa9\x9e\ \x0b\x16\x5f\xca\xef\x3a\x1f\x41\x0b\xa8\x8c\xee\x33\x19\xd8\x5c\ \xf6\x12\x4e\x52\xd7\xf5\x29\xc7\x13\x10\xd7\x75\x1d\x2f\x69\xa5\ \xaa\x2a\x8b\x17\x2f\xa6\xb3\xbd\x83\xd7\xfe\xa9\x5c\xd9\x1b\x0a\ \xa0\x54\x28\x12\xe1\xba\x84\x42\xd2\xa7\x2a\xbc\x11\x18\x63\x3d\ \x7f\xc7\xb5\x91\xb4\x58\x2c\xf2\xe9\x4f\x7f\x9a\x54\x2a\xc5\x27\ \x3f\xf9\x49\x1e\x7a\xe8\x21\x4e\x5f\x79\x3a\xdd\xdd\xdd\xcc\x9b\ \x37\x8f\xdf\xfe\xf6\xb7\xac\x5c\xb9\x12\x5d\xd7\xc9\x66\xb3\xec\ \xd8\xb1\xc3\xaf\x9a\x3f\x2a\x40\x42\x63\x4f\x66\xdb\x36\xb2\xda\ \x65\xc6\x39\x35\x68\x08\xac\xb2\xc1\xeb\x23\x3f\x43\xb5\xc3\x24\ \x5a\x0d\x92\xfb\x2b\xc1\xcf\x98\xdb\x2b\x86\x87\x87\x8f\xc9\xaa\ \xc7\xe3\xf1\x96\xb9\x73\xe7\x1e\x08\x04\x02\x15\x4f\x4f\x51\x71\ \x84\x4d\xa9\x54\xe2\xdb\xdf\xfe\x36\x4d\x4d\x4d\x24\x12\x09\x7e\ \xf7\xbb\xdf\xf9\x05\x04\x00\x23\x23\x23\x4c\x9d\x3a\x95\x64\x32\ \xc9\xc8\xc8\x08\xaa\xaa\x92\x4c\x26\x09\x85\x42\x94\xcb\x65\x02\ \x81\xc0\x71\x05\x24\x14\x0a\xb1\x63\xc7\x0e\x66\xcf\x9e\xcd\x0b\ \x2f\xbc\xe0\xf7\xd0\x8c\x8e\x8e\xfa\x95\x90\x83\x83\x83\xc4\xe3\ \x71\xbf\x78\xf0\x9d\x58\x8c\x77\xb4\x21\x9e\x1b\x5b\x9d\x83\x0d\ \x77\x64\xdf\x32\xaa\xa8\xa2\x46\x82\x11\x7d\x82\x18\x1f\x87\x9d\ \x17\x98\x3d\x7b\x36\xb6\x6d\xa3\x0a\x95\x56\x75\x3f\x67\xdd\x10\ \x64\xfd\x7f\x38\xbe\x2b\x3c\x6f\xde\x3c\x1e\x7b\xec\x31\x9a\x9b\ \x9b\xa9\xad\xad\x65\xde\xbc\x79\xdc\x73\xcf\x3d\x68\x9a\xc6\xc2\ \x85\x0b\xd1\x75\x9d\x5f\xff\xfa\xd7\x7e\x56\xd0\xab\x5e\x3f\x9e\ \x80\x84\xc3\x61\xbe\xfa\xd5\xaf\x4e\x50\x43\xad\xad\xad\x00\xec\ \xdf\xbf\xdf\xa7\xe8\xc7\xab\xde\x63\x02\x44\x4a\xc9\x3f\xfe\xe3\ \x3f\x32\x77\xee\x5c\x6a\x6b\x6b\x79\xe2\x89\x27\x38\x78\xf0\x20\ \x9a\xa6\xf9\x85\xd4\x73\xe7\xce\xa5\xbd\xbd\x9d\x44\x22\x41\x73\ \x73\x33\x07\x0e\x1c\x38\x2e\xee\xae\xd7\x68\xa3\x09\x95\x4c\x3c\ \x03\x72\x32\x91\x48\x84\xaf\x7f\xfd\xeb\x9c\x7a\xea\xa9\x7e\xed\ \x97\xc7\x24\xe8\xba\x4e\xb1\x58\x64\xd7\xae\x5d\x7e\x4f\xbc\xe7\ \xf7\x8f\xa7\x2c\x8e\x17\x20\xf1\x78\xfc\x1b\x5e\x40\x08\x20\x15\ \x89\xa6\x09\x5c\x17\xa2\xa1\x28\x05\x23\x57\x69\x10\x12\xe0\xda\ \x87\x18\xdf\x77\xba\xbe\xf6\x4e\x5c\xcd\xfc\xf9\xf3\xc9\xe5\x72\ \x5c\x7a\xe9\xa5\xfc\xfe\xf7\xbf\x67\xce\x9c\x39\xd4\xd7\xd7\x33\ \x73\xe6\x4c\x1e\x7a\xe8\x21\x74\x5d\x67\xd2\xa4\x49\x78\xcd\xa0\ \xc7\xc3\xcb\x1a\x3f\xa1\x47\x52\x29\x42\x28\x17\x25\xf9\xb4\x41\ \x44\x53\x59\xbb\xb6\x52\xdd\xa9\xab\x41\x14\xad\x52\x23\xe6\x35\ \x00\x79\x76\xc2\x8b\xc8\xbd\xde\x72\x2f\x4d\x6b\x59\xd6\xa4\x50\ \x28\x74\x9d\x10\x22\x00\x88\xba\xba\xba\x57\xfb\xfa\xfa\xba\x8e\ \xc2\xae\x4d\xaf\xaf\xaf\xaf\xd8\x04\x45\xa0\x9d\xaf\x73\xe9\xb5\ \x93\x28\x96\x0d\x2e\x3b\xf1\x66\xb6\x8c\x3e\x45\x62\x28\x49\xae\ \xdf\x61\xc3\x37\x93\x3e\xcb\x1c\x8d\x46\x87\x8f\x1a\x90\x60\x30\ \xc8\xbd\xf7\xde\xcb\xe7\x3e\xf7\x39\x3e\xf6\xb1\x8f\xd1\xdf\xdf\ \xef\x8b\xbd\x37\xdb\x24\x95\x4a\x61\x59\x16\xa5\x52\xc9\xcf\x85\ \xc8\xb1\xc8\xf0\xad\x0d\x34\x47\x0a\x88\x61\x18\x38\x28\xa8\xaa\ \x42\x6f\xa7\xc1\xdd\xf7\x7e\x95\x6f\x3c\xfb\x2f\x7c\xe1\xfc\x2f\ \x13\x8f\xc4\xf9\x9f\xad\x5f\xa4\xfd\x37\x39\x8c\x11\xc5\xaf\xec\ \x38\xe1\x84\x13\x68\x6c\x6c\x64\xfb\xf6\xed\xd4\x35\x55\x71\xc2\ \xcc\x46\x96\x4f\x5a\x86\xea\xea\x15\x07\x40\x30\x47\x22\x1f\xf3\ \xd2\xd0\x3f\xfc\xe1\x0f\xff\x06\xe8\x3a\x8a\x7b\x94\xe3\x55\xb4\ \x18\x81\xe1\x5d\x65\x12\x7b\x2d\xbe\xfa\xdd\x7b\x49\xee\xb3\x70\ \x4d\x89\xa2\x0b\x14\x4d\xf1\x35\x8e\x10\x42\x39\x26\x1b\x92\x48\ \x24\xb8\xfd\xf6\xdb\x0f\xeb\x26\xbd\x1e\x43\x21\xc4\xa2\xa6\x43\ \x9e\x9f\xf6\x00\x00\x16\x56\x49\x44\x41\x54\xa6\xa6\x53\x06\x06\ \x06\xb6\x1d\x43\xe0\x55\x01\x5d\x2a\xa8\x42\x05\x14\x96\x2e\x3b\ \x85\x86\xb6\x2a\x96\xaf\x38\x8d\x29\xb5\x4d\xac\x29\xa9\x54\x6d\ \x8c\xa0\xe4\x85\xaf\xd3\x67\xcc\x98\xe1\x79\x88\x4c\x3a\xdd\xa5\ \xf9\xec\x34\xd2\x4d\xe3\x00\xc6\x40\x00\xa3\x2d\x42\xb9\x33\x82\ \x10\x15\xde\x4d\x55\xd5\xa3\x76\x40\x54\x55\x65\xe1\xc2\x85\x9c\ \x74\xd2\x49\x6c\xd8\xb0\x81\x81\x35\x15\xa3\x1e\x70\x1c\x26\x37\ \xba\x7e\xac\xe6\x6d\x62\x6f\xb0\xdb\x51\x03\x32\x3c\x3c\xdc\xe5\ \xba\xee\x5c\xaf\x80\xa0\xe9\xac\x30\x91\x88\x82\xb4\x75\xde\x77\ \xd2\x2d\x3c\xb3\xef\x87\xd8\x18\xd8\x86\xe4\xc0\xef\x8b\x7e\x0a\ \xb5\xaa\xaa\x2a\x52\x2c\x16\xe3\x47\xf2\x70\x53\xa6\x4c\x79\x5f\ \xb1\x58\xbc\x10\x70\xa5\x94\xf1\xce\xce\xce\x8a\xee\x97\x82\xb2\ \x61\x32\xd0\x53\xe2\xab\x89\x6f\xb2\xa7\x6d\x98\x3b\xb6\xfd\x2b\ \xb1\x50\x35\x1b\x0e\x1e\xc4\xee\x8b\xa2\x58\x41\x7f\x07\xb6\xb6\ \xb6\xfa\x6d\x69\x81\x62\x33\x77\x5e\xf4\x23\x36\xf6\xfe\x96\x1f\ \xbc\xf8\x9f\xcc\x9c\x51\xc7\x50\x39\x4f\x76\x77\xa5\xb6\x57\xd7\ \xf5\x63\xa2\xe2\x83\xc1\x20\xdf\xfc\xe6\x37\x89\xc5\x62\x34\x35\ \x35\xb1\x63\xc7\x0e\xce\x3d\xf7\x5c\xd6\xac\x59\xc3\xca\x95\x2b\ \x69\x6b\x6b\x43\x08\xc1\xac\x59\xb3\xc8\x64\x32\xbc\xf2\xca\x2b\ \xc7\xc6\xf6\x5a\x96\xd5\x16\x0c\x06\x2f\xf6\xf2\xd5\xd3\x2f\x09\ \x13\x8f\x6b\xe4\xfa\x6d\x7e\x33\x70\x1f\xb6\x22\x28\x0c\x38\xa4\ \xbb\x0f\x19\x4d\x5d\xd7\x7d\x37\xf4\x08\x49\xc4\x5b\xaf\xbb\xee\ \xba\xf3\xa5\x94\xb8\x48\x32\x55\xa3\x34\x4d\x0f\xe0\x66\xbc\xfa\ \x2b\x9d\x74\x22\xc7\xa9\x0d\xe7\x60\x16\x6d\x92\xc5\x24\xa7\x37\ \x5d\xc9\xb3\x5b\x9f\x21\x18\x74\x7c\x09\x55\x14\x05\xe9\x4a\xa4\ \x25\xb8\x76\xf9\x87\xf8\xef\x0d\xff\xca\xf2\xd8\x87\x58\xd9\x70\ \x23\x2b\x17\x2c\xe0\x3b\xad\x5f\x99\xd0\xfb\x7e\xb4\x80\x48\x29\ \x9d\xf1\x05\xe5\x9e\x93\xe3\xb9\xd9\x5e\xc7\x59\x77\x77\x37\x81\ \x40\x80\xda\xda\x5a\x7f\x9c\xd3\xb1\x90\x8b\x0a\x40\x75\x75\x35\ \xb6\x6d\xb3\xe3\x6b\x45\xac\x9c\x44\x68\x20\x14\x10\xaa\x57\x81\ \xa1\xa2\x69\x87\x22\xe3\xa3\x1c\xab\xa4\x27\x93\x49\x5c\xd7\x25\ \x63\x17\x99\x73\x45\x06\x5b\xad\xa8\x7d\x29\x6c\x74\x4d\x85\xa4\ \x82\x71\x20\x4a\xfe\x8d\xb1\xe1\x30\x63\xde\xd4\xf8\x12\xa0\x48\ \x38\x4c\x32\x98\xe3\xcc\x8f\x45\x38\xff\xfc\x0b\xf8\xd1\xce\xe7\ \x18\x4a\x8d\xb0\xb7\x7f\x27\xc5\x9a\xed\xa8\x54\x6a\x6c\x85\x7a\ \x74\xe3\x93\x00\x1a\x1b\x1b\x4f\x94\x52\xae\x08\x85\x42\x5c\x73\ \xcd\x35\xc4\x62\x31\x7f\x13\x6e\xdd\xba\x15\x45\x51\xd8\xb3\x67\ \x8f\x5f\xf4\x31\x30\x30\xe0\x17\x18\x1e\x2b\x20\x9c\x7c\xf2\xc9\ \x7c\xe9\x4b\x5f\xc2\xb6\x6d\x1e\x7e\xf8\x61\x0e\x1c\x38\x30\x61\ \x8e\x47\x3c\x1e\x67\x70\x70\xd0\x8f\x46\xbd\xc1\x34\x47\x9b\x81\ \x73\x5d\x17\xcb\xb1\x51\x84\x42\xba\x27\xcc\x23\x7f\xff\x3b\xfa\ \x0b\xfb\xb9\xe3\xb7\x7f\xc7\xec\xc6\x79\x74\x96\xdb\x30\xca\x21\ \x14\xfd\xd0\x44\x37\xdf\xf5\xf4\x8a\xf6\x14\x85\x40\x40\xc7\xb2\ \x0c\x34\x25\x88\xaa\x68\x04\xb4\x20\x21\xad\x42\x85\x1b\xa6\x81\ \xa2\x8a\xa3\x9e\xc7\x55\x2a\x95\x5a\x9a\x9b\x9b\xc3\x85\x42\x81\ \xaa\xaa\x2a\x9f\x32\x1a\xbf\xfe\x58\xb1\xa0\x17\x30\x1e\x35\x20\ \x2b\x56\xac\x60\xf7\xee\xdd\xfc\xf5\x5f\xff\x35\x67\x9c\x71\x06\ \x42\x08\x22\x91\x4a\x1b\xb1\x97\x0e\x2d\x16\x8b\x0c\x0f\x0f\xd3\ \xdc\xdc\xcc\xe0\xe0\xa0\x6f\x97\x8f\xf4\x41\xbd\xb9\x8d\x16\x15\ \x55\xb0\x7a\xd5\xbf\xf2\xf3\x3d\x5f\x27\x79\xa0\x9a\x05\xda\x55\ \xdc\x72\xc6\xdf\xf3\x99\x9e\xf7\x57\x5c\x5c\xa7\xa2\x72\x82\xc1\ \xa0\x3f\xdb\xd1\x75\x5d\x0c\xd3\xc4\x2a\x18\x64\xd7\x2c\xe6\x8b\ \xbf\xfa\x22\x8e\xb4\xd9\xcb\xe3\x94\x0d\x8b\xcc\xcb\x02\xe4\x0c\ \x66\xcf\x96\x20\x2a\xb9\x8a\xcb\x2f\xbf\xfc\x7f\x84\x10\xdf\x07\ \xd8\xbc\x79\x73\xc7\xde\xbd\x7b\x97\x1c\xae\x27\x98\x4e\xa7\x2b\ \x1d\xc4\x01\xb8\xe4\xdf\x1a\x50\x54\x01\xa8\x34\xd7\x9f\x40\x7f\ \xea\x00\xa3\xfb\x4c\x0e\xbc\x58\x24\xd5\x5e\x91\xe0\xaa\xaa\x2a\ \xf2\xf9\xfc\xfd\xc7\x14\x18\xfe\xfc\xe7\x3f\xe7\x03\x1f\xf8\x00\ \x77\xdf\x7d\x37\xeb\xd7\xaf\xf7\xfd\xfd\x7c\x3e\xef\xd3\x25\xa9\ \x54\x6a\x42\xaa\x54\x4a\x49\x63\x63\xe3\x97\x14\x45\xb9\xa5\xaf\ \xaf\xef\xc0\x91\x4a\x88\x83\x83\x22\x55\xa6\xd4\x4d\x61\xff\x40\ \x91\xa2\x05\x1d\xc3\xfb\x79\x72\xef\x7d\xd8\xb6\x85\x65\x55\x74\ \xa9\x69\x9a\x04\x83\x41\x4e\x3d\xf5\x54\xf6\xee\xdd\x4b\x22\x91\ \x20\x9d\x4e\x63\xba\x26\x56\xd9\xc6\x30\x2a\x53\x91\x76\xd7\x6e\ \xe6\x9c\x6b\x63\x38\xb9\xca\x1c\x45\x37\x13\xc4\xc9\x6a\x38\x19\ \x0d\x6b\x20\x18\x40\xfa\x33\x15\x83\x47\x60\x43\xd0\xf5\x4a\x3d\ \x98\xee\x2a\x0c\x6c\x36\x29\x0e\x3b\x14\x86\x1c\x5e\x1d\x48\x50\ \x4e\xb9\x95\xba\x35\x4d\xf8\xb5\x08\x63\x36\xcb\x3e\x26\x1b\xe2\ \xba\x2e\x0f\x3c\xf0\xc0\xa1\x1b\xf1\x02\x4d\x01\x99\x74\x06\xcf\ \xad\x16\xa2\xc2\xdb\x78\x63\xfd\xe6\xcc\x99\x73\x51\x26\x93\xa9\ \x07\xfe\x28\x20\xf3\xe6\xcd\x7b\x8f\xae\xeb\x42\x51\x14\x67\x78\ \x78\x38\x56\x2e\x55\x26\x7b\x5a\x8a\x4d\xbe\x3f\xc0\xae\x5d\xbb\ \x48\xe4\x0a\xa4\x07\x6c\xb2\x89\x2c\xa3\x07\x8b\xe4\x07\x2d\x4c\ \x4b\xa2\xc8\x0a\x80\x86\x61\xd0\xdc\xdc\xcc\x8e\x1d\x3b\x50\x94\ \x4a\xeb\xb4\x23\x0f\x4d\x1e\x32\x5c\x8b\x70\x2d\x28\x8e\xc6\xb4\ \xfa\x05\xc4\x67\x54\xb1\x73\x70\x03\x75\x91\xc9\x64\xe5\x10\x03\ \x0f\x36\xe0\x14\x0e\xa9\xbc\x23\x49\x2f\x57\x55\x55\xb1\x7a\xf5\ \x6a\xf6\xec\xd9\xc3\x81\x7d\x07\x08\x18\x65\x54\xc7\x21\x56\xef\ \x62\xd7\xd8\xfe\x98\x0e\x2f\x6e\xf3\xbc\xbf\x63\x89\x43\xfe\xfb\ \xe0\xc1\x83\x17\xdb\xb6\x3d\x53\x08\x41\x31\x26\x39\xf5\xf2\x6a\ \xf4\x80\xa0\x30\x52\xc5\xfb\xcf\xb8\x9e\x67\xf6\xfd\x00\x4d\xd5\ \x19\xda\x6e\x30\xb8\xb5\x84\x50\x84\x3f\xed\xe7\x1d\x1e\xb0\xe1\ \xb4\xd3\x4e\xdb\xac\xaa\xaa\x10\x42\x20\x91\x50\x5b\x82\x6c\x10\ \xe1\xa8\xb0\x11\x9e\xd8\xf8\xd4\x21\xde\x88\x1a\x76\x1c\x18\x64\ \xf4\x60\x0c\x47\xe6\xb0\x4d\xe9\x1b\x73\xaf\x16\xcc\x9b\xec\xe6\ \x9a\xae\xdf\x6a\x6d\x49\x07\x45\x55\xe8\xde\x6f\xf3\x95\x5b\xbf\ \xc2\x0f\xd6\x7e\x97\x4b\x5a\x6e\xe1\x8a\x25\x1f\xe4\x53\xcf\x5f\ \x80\x65\x5a\xd8\xa6\x73\x44\x80\x78\x69\xd9\x6f\x7f\xfb\xdb\x24\ \x12\x09\x6e\xbe\xf9\x66\x9e\x7b\xee\x39\xbf\x72\xb1\xbd\xbd\x9d\ \x65\xcb\x96\x11\x0e\x87\xd9\xb6\x6d\x1b\xdb\xb6\x6d\x63\xe9\xd2\ \xa5\x6c\xd8\xb0\xe1\x1d\xbf\xfb\x4f\x02\x92\xcb\xe5\xb6\x36\x37\ \x37\x0f\x1b\x86\x31\x53\x08\x81\xa1\x3b\xb4\x9c\x57\x8d\x9d\x92\ \xa4\x3b\x0c\x1e\xfd\xed\x03\x14\x07\x04\x56\xd1\xa2\x9c\x92\x84\ \xc2\x21\xdf\xf5\x7d\xa7\xf6\x30\x40\x2f\x97\xcb\xc2\xb6\x6d\x10\ \xb0\x35\xb2\x8b\xf7\x9e\x5f\x87\x2b\x5d\x1c\xc3\x45\xb1\x83\x48\ \x4b\xc1\xc9\xab\xe4\x5e\xab\xc1\x29\xaa\x3e\xb1\x98\x4c\x26\xfd\ \xe0\xd1\xa3\x47\x5c\xd7\xa5\xb3\xb3\x53\xbe\xf1\xc6\x1b\xe2\xd1\ \x47\x1f\x65\xdb\xb6\x6d\x15\xc7\x43\x3a\xa8\x9a\xc2\x09\xd5\x4b\ \x38\x98\xdf\xcd\x48\xf9\x20\xff\xeb\xc4\xdb\x09\x6a\x21\x42\xa1\ \x20\x96\x63\x63\x99\xbe\x1a\x7a\x47\x44\x6a\x6a\x6a\x3e\x71\xde\ \x79\xe7\x7d\xa3\xb5\xb5\x95\x47\x1e\x79\x84\x2f\x7f\xf9\xcb\xf4\ \xf5\xf5\xb1\x77\xef\x5e\x72\xb9\x9c\x4f\xd3\xac\x5d\xbb\x96\x99\ \x33\x67\xd2\xd3\xd3\x83\xe3\x38\x8c\x8e\x8e\x1e\x9f\xc1\x01\x95\ \x0d\x21\x38\xe9\xa4\x93\xe8\xee\xea\x66\xe3\xe7\xca\x48\x7b\xcc\ \x21\x16\x1a\x08\x15\xe9\x38\x84\x42\xba\xff\x72\xbc\x12\xfc\x77\ \xba\x01\xbf\x3c\x07\x49\xa0\xae\xd2\xd9\x74\xd6\xa4\x0f\xd3\x32\ \xb9\x85\xa7\x3b\xbe\xc7\xcc\xaa\x53\xd8\x9a\xfa\x0d\xf6\xc6\x30\ \xb6\x75\xa8\x8a\x64\x7c\x1b\x44\xa1\x50\xb8\x63\xff\xfe\xfd\xff\ \x3e\x69\xd2\xa4\x81\x91\x91\x91\xc6\xb5\x6b\xd7\xb2\x68\xd1\x22\ \x36\x6e\xdc\x58\xe9\xc8\x52\x5d\x92\xbf\x2f\xd3\x3b\x75\x90\x7b\ \x36\x3f\x40\x32\x97\xe0\x0b\xbf\xfb\x12\xaa\xa2\xd2\x9d\x05\x2b\ \x7f\x48\x32\x26\x4f\x9e\x7c\xc2\xb4\x69\xd3\x5e\x05\x54\xc7\x71\ \xd8\xb9\x73\xe7\x75\xc9\x64\xb2\xe7\x2d\x6c\x44\xad\xa2\x28\x9a\ \x94\x92\x4d\x9b\x36\x71\xd1\x45\x17\xf9\xe4\xe6\x5b\xd7\xfe\xfd\ \xfb\x7d\x82\x73\xeb\xd6\xad\xc4\xe3\xf1\x63\x07\xc4\xb2\x2c\x6e\ \xbd\xf5\x56\xce\x3b\xef\x3c\x0c\xc3\xe0\xb1\xc7\x1e\xf3\x07\x41\ \x7a\x9e\xd6\x9c\x39\x73\xd8\xbb\x77\xaf\x4f\x0d\x0c\x0c\x0c\x78\ \x37\xb9\x70\xda\xb4\x69\xc9\xde\xde\xde\xb7\xe3\x8a\x1c\x8f\xaf\ \x92\x02\x14\x45\xd0\xbd\xcf\xe6\xdb\x7f\x75\x13\xff\xf0\xe3\x2b\ \xf8\xe2\xc5\xdf\x27\x1e\x6e\x60\x74\x7b\x27\x83\xd6\x08\x86\xe1\ \xf8\x80\x7b\xc4\xe1\xb8\x2a\x49\xa9\xaa\x2a\xb7\xde\x7a\x2b\x9f\ \xff\xfc\xe7\xb9\xff\xfe\xfb\xfd\x09\x3c\xb6\x70\xd1\x8a\x1a\xb1\ \x13\xaa\x28\x65\x2c\x0a\x96\x60\x64\xd9\x56\xe2\xb1\x10\x93\x46\ \xc2\xd8\xf5\x41\xdc\xb2\x8a\x34\x14\xa4\xa9\x84\x91\xe2\x4c\x2f\ \xf7\xfd\xe6\x9b\x6f\x86\xde\x4e\x5d\x8d\x4f\x5b\x2b\xaa\x4a\xb8\ \x4a\x23\x10\x14\x87\x3a\xa6\x04\xd8\x25\x17\xbb\xa4\xf8\x36\x57\ \x51\x14\x4a\xa5\x92\x65\x9a\x66\xe2\x98\x00\x71\x1c\x87\xd9\xb3\ \x67\x93\x4c\x26\x39\xe5\x94\x53\x08\x85\x42\x9c\x72\xca\x29\x44\ \xa3\x51\xa2\xd1\x28\x3f\xf9\xc9\x4f\xa8\xa9\xa9\xe1\xcc\x33\xcf\ \x24\x9d\x4e\xb3\x6e\xdd\x3a\x02\x81\x00\xb6\x6d\xf3\x9e\xf7\xbc\ \xe7\xe1\xf6\xf6\xf6\x1f\xf7\xf6\xf6\xde\x34\x46\x36\x36\x01\xab\ \x01\xd3\x75\xdd\xea\xde\xde\xde\x4a\x01\x32\x60\x5a\x26\xf9\x6c\ \x8c\x3b\xef\xfc\x1a\x3d\xed\x59\x1e\x1f\x7a\x86\x4c\x21\xc3\x2b\ \x7d\x6f\x52\xe8\x0a\x13\xd3\x6b\x3d\xb6\x94\xaa\xaa\x2a\x72\xb9\ \xdc\x84\xd1\x17\x42\x08\xda\xda\xda\xb8\xe9\xa6\x9b\xc8\xe5\x72\ \x54\x55\x55\x55\x66\x09\x0b\x17\xdc\xb1\x39\xed\xc0\x90\x36\xc2\ \xc2\x85\x01\x6c\xcb\x84\xa6\x89\x23\x93\xb2\x9b\xc7\x2a\x1e\x85\ \xf4\x0b\x23\xfe\x18\xf1\xd9\xd0\xd0\x30\xd6\x82\x00\xb5\xe7\x04\ \x59\x7c\x5a\x8c\xa1\xed\x65\x46\xf7\x59\x8c\xee\x36\x71\xed\xb7\ \x75\x04\x0e\x0c\x0e\x0e\xde\x77\x4c\x80\x44\x22\x11\xee\xbc\xf3\ \x4e\xce\x3c\xf3\x4c\xee\xb9\xe7\x1e\x8a\xc5\xe2\x84\xec\x97\x69\ \x9a\xac\x5d\xbb\x16\xdb\xae\x64\xf4\x82\xc1\xa0\xff\xef\xde\xf0\ \x2e\x6f\x8d\x8c\x8c\xac\xba\xf2\xca\x2b\x3f\xef\x51\xf4\x19\xb3\ \x28\x6b\x67\x3b\x42\x26\xc3\xb8\xc9\x00\xd8\x92\x3d\x6f\x76\x32\ \x59\x59\xc0\xa6\x8d\x95\xe9\xdc\xd3\xb4\xe5\x74\xba\x1d\x7e\x8e\ \x3a\x12\x89\x10\x0c\x06\xfd\x91\x47\xe3\xa8\x97\x7b\x86\x87\x87\ \xab\x84\x10\x6e\xb9\x5c\x5e\x2e\x84\xb8\xb8\x5c\x2e\xe3\x28\x2e\ \xa1\x50\x78\xac\xe2\x51\x80\x2a\x31\x4d\x87\x0f\xcc\xbc\x93\xee\ \xec\x2e\x4e\x9a\xb5\x98\xff\x7a\xee\x3e\xec\xba\x76\x1c\x27\x82\ \x65\x5a\xa0\xc8\xb7\x8d\xe2\x03\x81\xc0\x6c\x29\x65\x9d\x37\x48\ \x61\xd1\xa2\x45\x04\x02\x01\xfa\x5e\xeb\x65\xe7\xcb\x12\x49\x00\ \x29\x75\x62\x91\x90\xaf\x52\xbd\x5f\x5e\x61\xc8\x31\xab\x2c\xdb\ \xb6\x83\x8a\xa2\xf0\xda\x6b\xaf\x55\xf4\xa1\x64\xc2\x64\x05\x21\ \xc0\xb6\x1c\x84\x52\x31\xe6\x5e\x2e\xa2\x50\x28\x4c\x18\x2c\xec\ \x3d\x93\x33\x6e\x50\x72\x76\x61\xa7\x98\x79\x46\x14\xcb\x35\x71\ \x1c\x17\x25\x17\xab\xc4\x07\xde\xec\xdc\x31\xf7\xd2\x9b\x17\x2c\ \xa5\xf4\xe9\xfe\xfa\xfa\x7a\x12\x89\x43\xd2\x9f\x4c\x26\xbf\xe6\ \x19\xfb\xc9\x93\x27\x7f\x4c\xd3\xb4\x8b\xa5\x94\x08\x1b\xb0\x5d\ \xff\x50\x00\xcb\x34\x48\xec\x93\x54\x35\x57\xf3\xfc\x9b\x3f\xc6\ \x3a\xf0\x31\x16\x28\x67\x12\x53\x56\xf0\x58\xef\x4f\xc9\x8d\x06\ \x40\x48\x6f\xf0\xd8\x29\x81\x40\xa0\x5e\x55\x55\x51\x2a\x95\x76\ \x5f\x72\xc9\x25\xed\x3d\x3d\x3d\x58\x96\x25\x6b\x6b\x6b\xc5\x3f\ \xff\xf3\x3f\xb3\x78\xf1\x62\xee\xbd\xf7\x5e\xf6\xed\xdb\xc7\xe2\ \xc5\x8b\x79\xf3\xcd\x37\x69\x69\x69\xa1\xbf\xbf\x9f\x74\x3a\xcd\ \x94\x29\x53\x90\x52\xb2\x7d\xfb\x76\xd2\xe9\xf4\xb1\x03\x72\xe0\ \xc0\x81\xbf\xcb\xe5\x72\x9b\xd4\x31\x7e\x22\x1f\x72\x39\xff\x96\ \x3a\xca\x59\x07\xbb\x24\x29\xa5\x5c\xd2\x5d\x16\x99\x03\x36\xee\ \x38\xa0\x26\x4d\x9a\xe4\xd1\x2b\x55\xb1\x58\x6c\x46\x3e\x9f\x3f\ \x00\xb8\xe3\x77\x4a\x38\xa2\x61\x14\x25\x97\xcf\xfc\x27\x26\xd7\ \xd5\xf2\xf3\x3d\xdf\x20\x56\xd7\x48\xa2\xf9\x00\xc9\xf5\x21\x5f\ \xf7\x3a\x8e\x43\x3a\x9d\x46\x4a\x49\x38\x1c\xc6\xb2\x2c\x06\x06\ \x06\xbc\x06\x98\xb7\xf3\x1c\x54\x4d\xd3\x58\xbd\x7a\x35\xf9\x7c\ \x9e\x1f\xff\xf8\xc7\x7e\x02\xad\xae\x5c\x45\x68\xeb\x1c\xee\xda\ \x7c\x17\xaa\x32\x87\xdf\x06\x9e\x20\xa4\xeb\x48\x43\x65\x8a\xb3\ \x98\xa6\x13\xbd\x9d\x26\xb9\xfa\xea\xab\x7f\xee\x55\x8e\xac\x59\ \xb3\x66\xaa\x57\x13\x6c\xdb\xb6\x37\x8f\xd7\x1f\x36\xe3\xba\x2e\ \x93\x27\x4f\x66\xfa\xf4\xe9\x94\xcb\x65\x66\xcc\x98\xc1\xba\x75\ \xeb\xfc\x64\xde\xce\x9d\x3b\x8f\x8f\x97\x65\x59\xd6\xd6\x40\x20\ \x20\x3d\x35\x13\x01\x76\xfe\xc0\x7c\x4b\x6e\x5d\x27\xa4\xeb\xa0\ \x1f\x8a\x62\x35\x4d\xc3\xb2\x2c\x1a\x1b\x1b\xff\x7a\xc9\x92\x25\ \x97\xbd\xf8\xe2\x8b\x5f\xb5\x2c\xeb\xe4\xbe\xbe\xbe\x43\x63\x9d\ \xde\x28\xa0\xb5\x57\xb3\xeb\xc4\x36\xbe\xb1\xf9\x19\x66\x4e\x99\ \x89\x1e\x9f\x42\xdb\xe0\x4e\xf2\x43\xae\x5f\x1c\xf0\x16\xd1\x2f\ \x77\x74\x74\x3c\x34\x96\xf1\x33\x34\x4d\x7b\xe5\xed\x72\x29\xef\ \x7b\xdf\xfb\xa8\xaf\xaf\xe7\xb6\xdb\x6e\xe3\xd1\x47\x1f\xf5\x53\ \xba\xae\x74\x29\x9b\x15\xb5\xbb\x21\xdd\xca\x7b\x6f\x0d\x4f\x18\ \x33\x65\x0d\x07\x30\x7b\xc2\x98\x07\xc3\x38\x39\x8d\xf1\xb3\x54\ \xbc\x2a\x7a\x2f\xc6\xb9\xed\xb6\xdb\x08\x06\x83\x94\x4a\x25\xa4\ \x94\x7c\xff\xfb\xdf\x9f\xd0\x7f\x22\xa5\x64\xf7\xee\xdd\xb4\xb6\ \xb6\x1e\x36\x89\x79\x58\xed\xa7\xae\xeb\xf2\xd1\x8f\x7e\x94\x73\ \xce\x39\x87\x8e\x8e\x0e\x76\xee\xdc\x49\x67\x67\xa7\x3f\xdb\xc3\ \x34\x4d\x4e\x3f\xfd\x74\xf6\xef\xdf\xcf\x9e\x3d\x7b\x98\x3d\x7b\ \x36\x1d\x1d\x1d\x7e\x26\xb1\x5c\x2e\xeb\xe7\x9e\x7b\xee\xbf\x2a\ \x42\x61\x58\x1b\x96\xd3\x4f\x12\xc2\x1c\x0c\x63\x0f\x07\x71\x53\ \x3a\x3b\x36\xee\xa5\x45\x3d\x11\x67\xc4\xa5\x77\x78\x90\x26\x6d\ \x29\xeb\x13\xaf\xfb\xbd\xe0\x5e\x71\xc0\x18\x91\x98\x4f\x24\x12\ \x1f\xfd\x93\x0f\xa5\x69\xbc\xf2\xca\x2b\xac\x59\xb3\x86\x91\x91\ \x11\x8a\xc5\xa2\x3f\x4f\xd7\x2b\x0b\x02\x28\x0a\x93\x68\x6d\x0c\ \x92\xd3\xb8\xfd\x92\x2f\xf1\x8b\xd6\xff\x64\x24\x32\x82\x3d\x37\ \x4b\x62\xb3\x45\xea\xe5\x2a\x54\xad\xd2\xb2\x7d\xd6\x59\x67\xad\ \xf3\x00\x29\x95\x4a\x84\xc3\x95\xf3\x4e\x8a\xb9\x4a\x39\xa9\x50\ \x15\x94\x3f\x5e\xd6\x2c\x01\x91\x4a\xa5\xa2\xc7\x05\x10\x29\x25\ \xd7\x5c\x73\x0d\x5b\xb6\x6c\x61\xd5\xaa\x55\x24\x12\x09\x16\x2d\ \x5a\xc4\xf6\xed\xdb\x69\x68\x68\xa0\xb3\xb3\x93\x9a\x9a\x1a\x16\ \x2e\x5c\x48\x20\x10\xa0\xbd\xbd\xdd\x1f\x00\xe9\xbd\x80\xfe\xfe\ \x7e\x1c\x29\xa9\xbe\x3e\x2f\xc2\x8b\x63\x84\x97\x66\x41\x91\x48\ \x53\xc1\x4e\x6b\xb8\x59\x9d\xd4\xf3\xb5\x38\x96\x8b\xe6\x1e\xaa\ \x2e\xf1\x06\xa7\xd5\xd5\xd5\x4d\x98\x35\xff\x4e\x91\x74\xb1\x58\ \xe4\x9c\x73\xce\xf1\xc1\xf4\xf4\x77\x5d\x5d\x9d\xff\xbd\x4d\x3d\ \x2a\x7b\xbf\x5c\x87\xed\x66\xf8\x9b\xff\xfc\x18\x02\x9d\x40\x40\ \x45\x1a\x51\x14\x5d\x22\x74\x13\xd5\x55\xbc\xd1\xb8\xb3\x0c\xc3\ \xc0\xb6\x6d\xaa\xab\xab\x2b\xc9\x27\x04\xb5\x4b\x82\xe8\x08\xf2\ \x03\x0e\x46\xc6\x9d\x30\x9c\xc8\x93\x0a\x4d\xd3\x44\x36\x9b\x7d\ \xc3\xb6\xed\xf7\x1e\x17\x40\x74\x5d\xe7\xfa\xeb\xaf\xe7\xae\xbb\ \xee\xe2\xeb\x5f\xff\x3a\xdd\xdd\xdd\x13\x4e\xd2\x29\x16\x8b\x74\ \x75\x75\x91\xcb\xe5\xfc\x29\x9d\xaa\xaa\x92\xcd\x66\xa9\xad\xad\ \xc5\x75\x5d\x7f\xc8\xc0\xc0\x03\x36\x6f\x28\xde\xb0\x49\x65\x1c\ \x65\x61\x52\xb4\xda\x68\x69\x69\x99\x90\xb7\xf7\x26\xea\x7c\xf4\ \xa3\x1f\xe5\xfe\xfb\xef\x3f\xac\x32\x23\xc3\x30\x72\xb6\x6d\x77\ \x7b\x75\x5d\x42\x88\xe9\xaa\xaa\x0a\x4f\xda\xfd\x89\xa8\x01\x8d\ \x9a\x49\x31\x2c\xcb\x62\xb4\x6c\x53\x7d\xe9\x10\xb5\x93\x74\x64\ \x49\xc3\x1c\x0a\x52\xec\x08\x40\x22\xea\x57\x4e\x7a\xf1\x47\x28\ \x14\xe2\x13\x9f\xf8\x04\xc9\x64\x92\xed\xdb\xb7\x57\x1a\x95\x6a\ \x2d\x64\xfc\x90\xf3\xe1\xfd\xee\x15\x5d\x94\x4a\xa5\x72\x22\x91\ \x48\x1d\x17\x40\xbc\xb9\x8a\x5f\xf8\xc2\x17\xfe\xe8\x67\xf2\xf9\ \xbc\x4f\xcd\x4b\x29\x19\x3b\xb1\xcc\x67\x81\x87\x86\x86\x2a\x85\ \xda\x93\xe3\xa8\xaa\x4a\x5b\x5b\x9b\x3f\xcb\x77\xf1\xe2\xc5\x63\ \xd4\x47\xd9\xcf\x71\xd8\xb6\xed\xe7\x0e\xaa\xaa\xaa\xfc\xf9\x86\ \x87\x03\x48\x3a\x9d\x7e\x70\xd3\xa6\x4d\x0f\x7a\x3f\x4f\x9f\x3e\ \xdd\x52\x55\x55\x3b\xf1\xc4\x13\xe9\xee\xee\xf6\x81\xf6\x5e\x98\ \x61\x18\x24\x7b\x46\x68\x5e\x7f\x12\xd9\x52\x89\x75\xeb\xd6\xa1\ \x69\x1a\xcb\x97\x2f\xa7\xa1\xa1\x81\x36\xa5\x7d\xc2\x09\x3a\x17\ \x5e\x78\x21\x93\x27\x4f\xe6\x33\x9f\xf9\x0c\x8f\x3c\xf2\x08\x2f\ \xbf\xfc\x32\x97\x5d\x76\x19\xbf\xff\xfd\xef\x99\x35\x6b\x16\xc3\ \xc3\xc3\x6c\xd8\xb0\x81\x58\x2c\xc6\xa9\xa7\x9e\xca\x73\xcf\x3d\ \x77\xd8\xa4\xe5\x61\x01\x92\x4a\xa5\xfe\x2a\x9b\xcd\x7e\xa3\xa6\ \xa6\x66\x51\x3e\x9f\xf7\xcb\xfb\xc7\x1b\xaa\xb7\x1a\x2d\xaf\xc8\ \xce\x03\xc5\xcb\x75\x54\x55\x55\x11\x08\x04\x68\x6a\x6a\x62\xe6\ \xcc\x99\x0c\x0c\x0c\x4c\x38\xbf\x6a\xfc\x31\x42\xe3\x8b\x93\xbd\ \xe1\x68\x47\x93\xfc\x92\x52\xb2\x6e\xdd\x3a\x86\x86\x86\x58\xbd\ \x7a\xb5\x1f\x4b\x79\x52\xe8\x79\x4a\xb6\x6d\x93\x4e\xa7\x39\xeb\ \xac\xb3\x88\xc5\x62\x24\x93\x49\x32\x99\xcc\xf8\x53\xd8\x30\x4d\ \x93\xbd\x7b\xf7\x72\xdb\x6d\xb7\x31\x32\x32\xc2\x8e\x1d\x3b\x70\ \x5d\x97\xed\xdb\xb7\xe3\xba\x2e\xfb\xf6\xed\xf3\x9f\xbd\x50\x28\ \x30\x38\x38\x78\x44\x2c\xf2\x61\x01\x92\x4c\x26\x7f\x5d\x57\x57\ \xf7\xcf\xcb\x97\x2f\x67\xf5\xea\xd5\x74\x77\x77\xb3\x79\xf3\x66\ \xba\xba\xba\x08\x04\x02\x7e\xe2\x7e\xea\xd4\xa9\xf4\xf5\xf5\x91\ \x4e\xa7\x99\x34\x69\x92\xcf\x7e\xfa\x25\x3d\xe3\x62\x10\xcb\xb2\ \xc8\xe7\xf3\x3e\x4d\x3e\xfe\x40\xb1\xf1\xb3\x73\xc7\x5e\x5c\x6a\ \x60\x60\xe0\xe1\xb1\xff\x37\x72\x34\x65\x45\x86\x61\xf8\x52\x9b\ \xcd\x66\xfd\xef\x1f\x3f\x74\xdf\x53\x4b\xa6\x69\xfa\x07\xd5\x78\ \xff\xe6\xfd\xbd\xe3\x38\x8c\x8c\x8c\xb0\x6a\xd5\x2a\x5f\x9d\x43\ \xa5\x9b\xca\x1f\xeb\x31\x6e\x83\xbe\xf1\xc6\x1b\x47\xd4\x42\x77\ \x24\xe7\x87\x88\x8f\x7f\xfc\xe3\x0c\x0e\x0e\x72\xed\xb5\xd7\x62\ \xdb\x36\xb3\x67\xcf\xa6\xaf\xaf\x0f\xdb\xb6\xa9\xab\xab\x43\x88\ \x4a\x32\xa6\xbd\xbd\x9d\x62\xb1\x48\x30\x18\xf4\x87\x24\x7b\xb6\ \xc0\x03\xc4\x2f\xf3\x19\x03\x61\xbc\x24\xa9\xaa\x4a\x20\x10\xa0\ \xa5\xa5\xc5\x9b\x3b\x35\xd2\xd9\xd9\xf9\x89\xf1\x31\xce\xf8\xa0\ \xf0\x70\x54\xee\xc5\x17\x5f\xcc\x45\x17\x5d\xc4\xf0\xf0\xb0\xaf\ \xb2\x42\xa1\x90\x9f\x8a\xf6\xd4\xd7\x78\x06\x60\xfc\xe1\x67\xde\ \xdc\xc9\xb1\x0d\x3a\x81\x4c\x1c\x5f\x72\xfb\x76\xd7\x96\x52\x76\ \x49\x29\xfb\x8e\x37\x20\x7c\xfa\xd3\x9f\xe6\xa1\x87\x1e\xe2\x67\ \x3f\xfb\x19\x2f\xbe\xf8\xe2\x84\xf3\x38\x0c\xc3\x20\x1a\x8d\xfa\ \x65\xf7\xde\x91\x0e\x9e\x6b\xec\xa9\xaf\xf1\xa7\xd5\x8c\x3f\xe9\ \xcd\x7b\x21\xc5\x62\xd1\xaf\x32\x9c\x3a\x75\x2a\xe9\x74\xfa\x0f\ \x28\x87\x23\x01\xc3\x53\x59\x4d\x4d\x4d\xec\xde\xbd\xdb\x57\xb7\ \x9e\x5a\x1c\x7f\x14\x85\xf7\x67\x4f\x5a\xc7\xd7\x54\x99\xa6\x89\ \xae\xeb\xdc\x71\xc7\x1d\x5c\x70\xc1\x05\xfc\xfb\xbf\xff\xbb\x97\ \x5f\xf7\x59\x6b\x4f\xda\xab\xaa\xaa\xfc\x41\x3d\x52\x4a\x76\xed\ \xda\x35\xeb\xb8\x4b\x88\xe7\x3e\x7e\xf0\x83\x1f\x9c\xd0\x53\x38\ \xde\x76\x78\x93\x9d\x3d\xfd\x59\x55\x55\xe5\x9f\xc4\xe3\xed\x4a\ \x8f\x23\xf2\xa4\xc5\xf3\x46\x3c\x8a\xc4\xa3\xab\xa5\x94\x13\x06\ \x80\x1d\xcb\x4a\xa7\xd3\xb3\x36\x6f\xde\x8c\x65\x59\xf9\xe9\xd3\ \xa7\x77\xac\x5a\xb5\xaa\xf6\x53\x9f\xfa\x14\x37\xdf\x7c\x33\xf9\ \x7c\xde\xef\xb5\xf7\xdc\x5a\x6f\x1c\xdf\x78\x9a\x3f\x93\xc9\x30\ \x7b\xf6\x6c\xce\x3d\xf7\x5c\xa2\xd1\x28\xe7\x9c\x73\x0e\x1b\x36\ \x6c\xe0\x92\x4b\x2e\x61\xcd\x9a\x35\x5c\x79\xe5\x95\x3c\xf9\xe4\ \x93\x2c\x5c\xb8\x90\xda\xda\x5a\x54\x55\xe5\xb9\xe7\x9e\x9b\x30\ \xed\xfa\x78\x03\xf2\x8b\xee\xee\xee\xed\x8a\xa2\xac\x7e\xef\x7b\ \xdf\x8b\xa2\x28\xb4\xb7\xb7\x63\x18\x86\x3f\xef\xdc\xd3\xb7\x35\ \x35\x35\x38\x8e\xe3\x0f\x94\x14\x42\x90\x4a\xa5\xfc\x01\xf5\xe3\ \x55\x96\x57\xd1\xe7\x7d\x6e\xac\x5a\x5d\x3a\x8e\x23\x6c\xdb\xa6\ \xa6\xa6\x86\x4c\x26\xa3\x1e\x23\x20\x7e\x4e\xa3\x58\x2c\xba\x77\ \xdd\x75\x17\xeb\xd7\xaf\xa7\xba\xba\x9a\x91\x91\x11\x7f\xf7\x8f\ \xb7\x67\x1e\xd5\x32\x3e\xd1\x96\xcb\xe5\xd8\xbd\x7b\x37\x0d\x0d\ \x0d\x78\xe7\xff\x7a\x6e\xef\xd6\xad\x5b\xb1\x6d\x9b\x9e\x9e\x1e\ \x7f\x10\x8d\x37\x92\xe9\x88\xec\xdd\xe1\x7c\xc8\x3b\xab\x0f\xd0\ \x96\x2c\x59\x62\x6d\xdd\xba\x95\x9d\x3b\x77\xd2\xd3\xd3\xc3\x96\ \x2d\x5b\x58\xb1\x62\x05\x3f\xf8\xc1\x0f\xb8\xf0\xc2\x0b\xe9\xec\ \xec\x24\x18\x0c\x32\x7f\xfe\x7c\x3a\x3b\x3b\x79\xf5\xd5\x57\xc9\ \x66\xb3\x0c\x0f\x0f\x13\x8b\xc5\xfc\x72\x53\xef\x04\x01\x29\xa5\ \xdf\x9f\x18\x8d\x46\xfd\x03\x51\x06\x07\x07\x13\xe5\x72\xf9\xe5\ \x31\xbb\xb4\x67\x64\x64\xe4\x8b\x1c\x87\x75\xe2\x89\x27\x26\x6e\ \xbc\xf1\xc6\xfa\x4b\x2f\xbd\x94\xcf\x7e\xf6\xb3\x0c\x0c\x0c\x50\ \x2a\x95\xfc\x39\xed\x85\x42\x81\x29\x53\xa6\xf8\x07\x9c\x79\xe3\ \x6f\x55\x55\x65\xe6\xcc\x99\x64\x32\x19\xff\xb4\x87\xb7\x73\x1e\ \xde\x9a\xe6\xb5\x6d\x9b\x37\xdf\x7c\x53\x1c\x57\x09\x19\xa7\xc3\ \x15\xcb\xb2\x78\xf8\xe1\x87\xb9\xec\xb2\xcb\x78\xf4\xd1\x47\x49\ \x26\x93\xbc\xf0\xc2\x0b\x48\x29\x19\x1c\x1c\x64\xdf\xbe\x7d\x95\ \xb3\xa5\xba\xbb\x27\x64\x10\xbd\xc1\x2f\xe9\x74\x9a\x60\x30\xe8\ \x0f\x4f\x8e\x46\xa3\xbe\xd4\x18\x86\xc1\xec\xd9\xb3\xc9\x64\x32\ \x28\x8a\xb2\x2b\x93\xc9\x5c\xc3\x71\x5e\xba\xae\xf3\xe4\x93\x4f\ \xf2\xd4\x53\x4f\x91\xcf\xe7\x99\x3c\x79\x32\x9f\xfd\xec\x67\xf9\ \xf4\xa7\x3f\xed\x0f\x4b\xf3\x46\x8d\xc7\xe3\x71\x9f\x36\xff\xfc\ \xe7\x3f\xcf\x7d\xf7\xdd\xe7\x8f\x05\xf4\xc8\x4e\x4f\x9d\xd7\xd5\ \xd5\x91\xcf\xe7\x49\xa5\x52\x34\x36\x36\x32\x3c\x3c\x8c\x65\x59\ \x7d\x8a\xa2\xe4\xff\x2c\x2a\xcb\x5b\xa1\x50\x88\x7b\xee\xb9\x87\ \xfb\xee\xbb\xcf\x8f\x13\x3c\x75\xd3\xdd\xdd\x8d\x10\xc2\x1f\x76\ \xe6\xdd\x6c\x55\x55\x95\x4f\xc5\x7b\x27\x2d\x7b\xb6\xc6\x3b\xef\ \xd0\x8b\x3f\xf6\xec\xd9\x73\x5c\xfb\x00\xdf\xba\x46\x47\x47\x5f\ \x09\x87\xc3\xd5\x63\xf7\xb6\xf2\x1b\xdf\xf8\x46\xe4\xb5\xd7\x5e\ \xf3\xef\xcd\xb3\x61\xe3\x8f\xde\x70\x5d\x97\x55\xab\x56\x31\x75\ \xea\x54\x96\x2d\x5b\xc6\xd3\x4f\x3f\x4d\x75\x75\x35\x5b\xb6\x6c\ \xa1\xb9\xb9\x99\xad\x5b\xb7\xb2\x72\xe5\x4a\x0a\x85\x02\xed\xed\ \xed\x1c\x3c\x78\x90\x68\x34\x4a\x6f\x6f\xef\xe5\xdd\xdd\xdd\xdb\ \x8f\xa4\x0b\xe0\x48\xad\xa5\x36\x73\xe6\xcc\x27\xa3\xd1\x68\x40\ \xd7\xf5\x0b\x4f\x3c\xf1\x44\x42\xa1\x10\xaa\xaa\xb2\x6f\xdf\x3e\ \xbf\x05\x39\x1c\x0e\xfb\xd3\x0d\x42\xa1\x90\x7f\x1c\x50\x26\x93\ \x21\x97\xcb\x4d\xe0\xb9\x82\xc1\x20\x17\x5e\x78\x21\x2f\xbf\xfc\ \x32\xde\xbc\x75\x21\x04\xed\xed\xed\xaf\x0f\x0c\x0c\x9c\x79\x3c\ \xc1\x18\xb3\x47\xfe\xcf\x73\xe7\xce\xdd\x7b\xed\xb5\xd7\xce\xbb\ \xf9\xe6\x9b\xb9\xfc\xf2\xcb\x59\xb6\x6c\x19\x2d\x2d\x2d\x3c\xf9\ \xe4\x93\xbe\x6a\xfd\x87\x7f\xf8\x07\x1e\x79\xe4\x11\x0c\xc3\xe0\ \x86\x1b\x6e\x60\xd3\xa6\x4d\x8c\x8e\x8e\xfa\xae\xb0\xd7\x93\xa2\ \xeb\xba\x7f\x0c\x47\x30\x18\x44\xd7\x75\xba\xbb\xbb\x97\x1d\x3c\ \x78\x70\xcb\x91\xdc\xe3\x91\xf6\x9f\xd9\x5d\x5d\x5d\x97\xb7\xb6\ \xb6\x5e\x17\x0a\x85\x38\xf3\xcc\x33\xf9\xc2\x17\xbe\x40\x34\x1a\ \xa5\xb9\xb9\x99\xa9\x53\xa7\x52\x55\x55\xc5\x8c\x19\x33\xa8\xa9\ \xa9\xa1\xae\xae\x8e\x48\x24\x82\xeb\xba\x7e\xa0\xb5\x72\xe5\x4a\ \x02\x81\x00\x0d\x0d\x0d\xc4\xe3\x71\x82\xc1\x20\xd1\x68\x94\xb1\ \x81\xcd\x6f\x6e\xdf\xbe\xfd\x9f\xb6\x6f\xdf\xfe\x19\xe0\x2b\xc7\ \x5b\x3a\xc6\x83\x31\x26\xa1\xca\x0b\x2f\xbc\xc0\x25\x97\x5c\x82\ \x10\x82\x7b\xee\xb9\xc7\x3f\x9f\x70\xc3\x86\x0d\x18\x86\xc1\x15\ \x57\x5c\x41\x22\x91\x40\xd7\x75\x7e\xf9\xcb\x5f\xd2\xdd\xdd\x4d\ \xa1\x50\xa0\x58\x2c\x4e\x38\x39\xc7\x73\xed\x43\xa1\x90\xf4\xcb\ \x91\x5c\xf7\x88\xdd\xc3\xa3\x3a\x2d\x5a\xd3\xb4\x80\x10\x82\x07\ \x1f\x7c\x90\x87\x1e\x7a\xe8\x0f\xfe\xfd\xe0\xc1\x83\x7f\xd4\x39\ \x78\xab\x1b\xeb\x38\x0e\xbf\xfd\xed\x6f\xbd\x49\x6f\xbb\x72\xb9\ \xdc\x7f\x02\xef\x58\xb6\x7f\x3c\x56\x36\x9b\x95\x9e\x8a\x12\x42\ \xf0\xfc\xf3\xcf\x73\xfa\xe9\xa7\xb3\x63\xc7\x0e\x36\x6c\xd8\x40\ \x7d\x7d\x3d\x0f\x3e\xf8\x20\x0f\x3e\xf8\x20\x77\xdf\x7d\xb7\xef\ \xba\x7b\x41\xaf\x77\xc2\x90\x97\xbe\x1e\x53\x6f\xa2\xad\xad\xed\ \x5c\xc7\x71\xf6\xd4\xd5\xd5\x25\x8e\xf4\x9e\x8e\xca\xc1\x0f\x85\ \x42\xb1\xba\xba\xba\xcf\x85\x42\x21\x17\xb8\x2a\x1c\x0e\x2f\x3e\ \x1c\xbd\xef\x4d\x7a\xf0\xa6\x3c\x7b\x99\x36\xcf\xdf\x4f\xa7\xd3\ \x6b\x7a\x7a\x7a\xde\xcf\x5f\x7e\x45\x16\x2f\x5e\x5c\xf0\xfa\x45\ \x74\x5d\x67\xe9\xd2\xa5\xec\xdb\xb7\xcf\x77\xc9\x0f\xc7\x7d\xf5\ \xf8\xb1\xed\xdb\xb7\xcf\x2d\x14\x0a\xed\x47\x73\x23\xc7\x3c\x38\ \xaa\xb9\xb9\xf9\xe7\x4d\x4d\x4d\xd7\x1e\xce\x5c\x73\x0f\x14\x8f\ \xce\xae\xa9\xa9\xa1\x50\x28\x14\x5b\x5b\x5b\xa3\xe3\xbe\x8f\xfe\ \xfe\xfe\xbf\x34\x20\xc1\x96\x96\x96\x6d\xf1\x78\x5c\xe4\xf3\xf9\ \x48\x63\x63\xe3\x09\x52\x4a\x0a\x85\xc2\x61\x8f\x90\x2d\x14\x0a\ \x98\xa6\x79\x9f\xeb\xba\x56\xb9\x5c\xfe\x8f\xa1\xa1\xa1\xd1\xff\ \x2b\x80\x00\x81\xb1\xef\x09\x86\x42\xa1\xa5\x87\x1b\xd7\x78\x51\ \x7b\x38\x1c\x4e\x64\x32\x99\x5d\xfc\x3f\xb2\x82\xc1\x60\x6d\x38\ \x1c\xfe\x47\xd7\x75\x9d\x23\x60\x08\x64\x20\x10\x48\x9e\x7c\xf2\ \xc9\xff\xf3\xc2\x0b\x2f\x48\xde\x5d\xef\xae\x77\xd7\xbb\xeb\xdd\ \xf5\xee\x7a\x77\xbd\xbb\xde\x5d\xff\x8f\xad\xff\x03\x21\xf6\x70\ \xa0\xc1\x03\x97\x85\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x3a\x79\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x64\x00\x00\x00\x64\x08\x06\x00\x00\x00\x70\xe2\x95\x54\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\ \x95\x2b\x0e\x1b\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x03\x03\ \x0e\x1c\x1e\xba\x16\x7f\x4d\x00\x00\x20\x00\x49\x44\x41\x54\x78\ \xda\xed\xbd\x79\x9c\x5c\x55\x99\xff\xff\x3e\x77\xa9\x5b\xd5\xd5\ \xdd\xd5\xdd\xe9\x2d\x49\x77\xd2\x21\x1b\x09\x59\x00\x59\x02\x81\ \x08\x88\x40\x40\x10\x46\x5c\x66\x1c\xc1\x19\x01\xf9\x02\x83\xdf\ \x41\xe7\x0b\xe3\x38\x83\xc8\x57\x04\x74\x5c\x58\x64\x40\x51\x91\ \x4d\x04\xd9\x05\x21\x04\x08\x09\xd9\x43\x3a\x0b\x4d\xd6\x4e\xa7\ \xf7\xa5\xba\xf6\xed\xae\xe7\xf7\xc7\xed\xba\x49\x00\x35\x60\xc0\ \xef\xcc\x8f\xf3\x7a\xd5\xab\xb7\xea\x53\xf7\x9e\xe7\x9c\x67\xf9\ \x3c\x9f\xe7\xb9\xf0\xd1\xf8\x68\x7c\x34\x3e\x1a\x1f\x8d\x8f\xc6\ \x47\xe3\xa3\xf1\xd1\xf8\x68\xfc\x8f\x1f\xe2\x7f\xf2\xcd\x9d\x74\ \xd2\x49\x3b\xa7\x4c\x99\x32\x51\x4a\x89\x00\xa4\xad\x20\x25\xa0\ \x48\x50\x24\x42\xbc\x73\x05\x4a\xa5\x52\x78\xc9\x92\x25\x5f\x4c\ \xa7\xd3\x0f\xff\x35\xae\x59\xfb\x20\x26\xad\xaf\xaf\x5f\x94\xcf\ \xe7\x27\x1d\xf4\xae\x10\x02\xcf\xf3\xa8\xa9\xa9\x79\x6e\x70\x70\ \x30\x71\xa8\xae\x43\x55\xd5\xea\x42\xa1\x10\x01\xd8\x63\x0f\x32\ \xf3\x73\x05\x2a\xa3\x3a\x4e\x4a\xc3\x4b\x87\xf0\x72\xfe\xf7\x6e\ \x4a\xc3\x4d\x86\x00\xf0\x3c\x0f\x29\xa5\xf6\xd7\xda\x44\x1f\xc8\ \x07\xd7\xd5\xd5\xdd\xf5\xd9\xcf\x7e\x76\x36\x80\x27\x3d\xdc\x0a\ \x8b\xb0\xa1\x20\xad\xb1\x97\xad\x80\x1c\xdb\x9d\x63\x3b\xd4\x30\ \x0c\x1e\x7f\xfc\xf1\x63\x81\x43\x26\x10\x29\xa5\xb4\x2c\x0b\x01\ \x8c\xb8\x29\x3e\x16\xa9\x24\x24\xab\x38\xf6\x88\x05\x6c\x1f\x5d\ \x4f\x22\x93\xa4\xae\x2a\x42\x6e\xd8\x66\xf8\x77\x75\x07\x6c\x90\ \xff\x51\x02\xb1\x6d\xdb\x18\x1a\x1a\x02\x60\x67\xbe\x9f\x85\x57\ \x81\xed\xed\xbf\x50\x60\x0f\x86\x28\xee\x8c\x62\xee\x8e\x80\x90\ \x54\x55\x55\x81\x2f\xa6\x43\x36\x5c\xd7\xc5\xb2\x2c\x90\x20\x74\ \xf0\x84\xc3\x45\x33\xbe\xcf\x73\x3d\xb7\x71\xeb\x99\xbf\xe7\x47\ \x4f\xfe\x90\x89\xad\x1e\x4b\x06\x9e\xf1\xdf\x37\x26\x8c\xbf\xa6\ \x40\x94\x0f\x68\x5e\xcf\x34\x4d\x4c\xd3\xc4\x76\x5d\x74\x5d\x21\ \x37\x50\xc5\xb7\x3f\xfe\x5b\xce\x9e\x71\x31\x8a\x13\x61\xdc\xe4\ \x0a\x42\x93\xf3\x98\x25\x0b\xcb\xb2\x30\x4d\xf3\xa0\x17\xa2\xa5\ \xa5\xe5\xe0\x2e\xc2\xf3\xa4\x65\x59\xd8\xb6\x8d\x87\x24\x95\x31\ \x39\xfa\xf0\x23\xe9\x48\xaf\x40\x11\x0a\x9f\x38\xfa\x93\x54\x55\ \xc5\x50\x42\x12\xc7\x71\x30\x4d\x13\xc7\x71\xfe\xaa\x76\x4f\x7b\ \x1f\xea\xe8\xc2\x63\x8e\x39\xe6\x5f\x1c\xc7\xf1\x24\x12\x55\xaa\ \xb8\xb6\xf4\x45\xab\x48\x34\x5d\x75\x3b\x3b\x3b\x5b\x4d\xd3\xf4\ \x77\xa9\xe7\x62\x96\x14\xfe\xed\xcc\x3b\xf8\xe9\xfa\x6b\x38\xab\ \xf9\x1b\x4c\x51\xe2\x9c\x34\xeb\x28\xee\xde\x7e\xab\x2f\x08\x55\ \x12\x0a\x85\x90\xf2\xe0\x0e\x48\x6f\x6f\x2f\x6d\x6d\x6d\xab\x1a\ \x1b\x1b\x29\x1b\x6c\x3c\x05\x89\x24\x95\x4e\xd6\x4d\x39\x6c\xca\ \x0c\x45\x51\x40\x08\xa4\x2b\x11\x86\xcb\xdc\xfc\x14\x72\xbf\x84\ \xd3\x7e\xf6\x71\x2a\x42\xd3\x39\xf9\x8e\x93\xd1\x55\x0d\x81\x46\ \x28\x54\xc3\xce\x9d\x5b\x68\x6d\x6d\x45\x4a\x89\xeb\xba\x53\x43\ \xa1\xd0\x82\xf7\xb2\x2e\x15\x15\x15\x54\x57\x57\xaf\xe9\xee\xee\ \x96\x1f\xaa\x40\x2c\xcb\x9a\x7b\xd8\x61\x87\x1d\x97\x48\xf8\xaa\ \xbe\xaf\xae\x8b\xd9\x0b\x75\xac\x81\x08\xce\x48\x18\x91\x8b\xd0\ \xdd\xa3\x62\xdb\xb6\xbf\x4b\x85\x87\x6b\x4b\x66\xb5\xcd\x40\xd9\ \x03\x45\x3b\x4b\xb6\x98\xe3\xa5\xdd\x0f\xe0\x79\xbe\x4a\x11\xaa\ \x0c\xde\x7f\x90\x23\x5c\x5f\x5f\xbf\x60\xda\xb4\x69\x78\x9e\x47\ \x51\x9a\x68\x87\xa7\xa8\x0c\x87\xe8\x5c\xe1\x31\xae\xba\x1e\xcb\ \x32\xd1\x84\xca\xf6\xf1\x5b\x39\xe1\xec\x4a\x5c\xd7\xc3\x1e\xd1\ \x71\x07\xa3\x58\xc3\x50\x93\x19\x87\x9d\x52\x28\x16\x4a\xa8\xaa\ \x40\xd3\x34\x72\xb9\x1c\xae\xeb\xca\x93\x4e\x3a\xe9\xfa\xda\xda\ \xda\xeb\x01\x1c\xe9\xa2\x57\x79\xe0\x28\x60\x8f\xd9\xbf\xc0\xf6\ \xc9\x40\xcd\xed\xde\xbd\x9b\xb5\x6b\xd7\x46\x80\xd2\x87\x6e\x43\ \x4a\xa5\x12\xa6\x69\x92\x73\x4b\x44\x8e\x2d\xa2\x56\x2b\x44\xaa\ \x73\x30\x33\x87\x66\x08\xc4\x5a\x27\xd0\xc9\x9e\xe6\xa1\xaa\x2a\ \xa9\x5c\x1a\x45\x51\x51\x15\x1d\xdb\x33\xa9\xd2\x2b\xf1\x24\x58\ \xa6\x89\xd0\x08\xde\x7f\xb0\x8e\x99\xe7\x79\x94\x4a\x25\xf0\x24\ \x9d\x7a\x37\x0b\x8f\xd6\x81\x22\x46\x3c\x83\xbd\xc7\xc2\xb2\x2d\ \x3c\x54\x8c\x98\xc4\x35\x05\xf5\xea\x6c\x1a\x67\xd6\xd0\x51\xb3\ \x8a\x8a\xd9\x2a\x20\xd8\xf4\x23\x9b\xa9\x2d\x87\x53\x55\x55\x45\ \x6b\x6b\x2b\x00\x83\x83\x83\xa2\xac\x42\x55\x14\x76\x36\x6e\x63\ \xc1\xd9\x51\xbc\x31\x1b\xe8\x59\x02\x7b\xd0\xc0\xea\x89\x60\x76\ \x85\xc1\xf5\xb5\xbe\xae\xeb\x78\x9e\xf7\xe1\xdb\x10\x21\x04\x96\ \xe5\xeb\x7d\xc7\x71\x50\x55\x05\x37\x5d\xcf\x4d\xa7\x3f\xc3\x95\ \x47\xfd\x17\x7a\xb1\x85\xd6\xd8\xd4\xe0\x3d\x9e\xe7\x11\x8d\x86\ \xb8\xe5\xf1\xef\xf2\x37\xd3\xaf\x61\x7c\x53\x2d\x49\xaf\x93\x73\ \x66\x5c\x82\x22\xf7\xcd\xf5\x1e\x4f\x08\x52\xca\x31\xdb\x63\x21\ \x3d\xdf\x65\x3b\xa7\xf5\x1b\x2c\x9e\xf6\x0f\x98\xb6\x3f\xa7\x65\ \x9a\xa8\xaa\x82\x9a\x6f\xe2\xfa\xb3\xfe\x0b\x37\x3e\x81\x93\x9b\ \xbe\xcc\x37\x4f\x7a\x88\x90\x6a\x50\x32\x4b\x64\x32\x19\x86\x86\ \x86\x18\x1a\x1a\x62\x53\xec\x75\xe4\xc2\x1d\x38\xa6\x87\x69\x9a\ \x58\xa6\x85\xa2\x4b\x1c\xc7\x65\x6e\xf4\x5c\xbe\x76\xe2\x8f\x89\ \x44\x42\xd4\xb4\x54\x52\x7d\x52\x12\xcf\xf0\x37\x66\xf9\x3e\xff\ \x6a\x46\xbd\xbc\x83\x2c\xcb\x42\x08\x98\xa0\x1e\xc5\x8a\x9e\x27\ \xf9\xed\xf2\xdf\xf0\xa5\x23\xbf\x89\xeb\x3a\xa4\xd3\x69\x52\xa9\ \x14\xf9\x42\x1e\xc7\xb3\x49\xd6\x2e\x63\xeb\xee\xdd\xf4\xe4\x36\ \x43\x6d\x3f\x3f\x5a\x7b\x39\xe9\x64\x8e\x54\x3a\x4d\x3a\x9d\x26\ \x93\xc9\x20\x84\xf8\xb3\xc7\x64\xfc\xf8\xf1\x41\xbc\xe0\x0b\xd2\ \x02\x21\xd1\xc3\x1a\x9f\x9c\x73\x3e\xab\x07\x9f\x41\x7a\xbe\x0a\ \xb4\x6c\x1b\x3d\xac\x23\xac\x18\xbd\xc5\x1d\xb4\xf7\xaf\xe0\xb0\ \xfa\x79\x34\xd5\x34\xa1\x0a\x1d\xd7\x75\x71\x1c\x27\xd8\x14\x91\ \x2a\x81\xaa\x8a\xe0\xf7\xb6\x6d\x23\x74\x41\x85\xde\xc0\x95\x9f\ \xf8\x26\x3f\x7c\xf6\x07\x5c\x7a\xec\xad\x5c\xb3\xe8\x1e\xda\x1a\ \x67\xe0\xb8\x0e\x8e\xe3\xbf\x3c\xcf\x43\x51\x94\x0f\xdf\xa8\x97\ \x4f\x88\x6d\xdb\x38\xd8\x08\xa1\x10\xd6\x23\xb8\x9e\x8d\x2b\x5d\ \x92\xc5\x61\x14\x45\x0b\xbc\x15\xd7\x71\x91\x8a\x87\x6b\x49\x9e\ \xeb\xba\x85\xd2\x56\x97\xe2\x80\x20\xdf\xa5\x31\xb4\xb1\x88\x11\ \xd1\x41\x82\x65\xda\x54\x46\xab\x6e\x9e\x3b\x67\xee\xe8\x1f\xc3\ \x0f\x52\xa9\xd4\xeb\x3d\x3d\x3d\x77\x97\x05\x32\x38\x38\xe8\x7b\ \x66\xa3\x2e\xab\x6f\xca\x70\xfe\x0f\xcf\x63\x30\x91\x43\x9a\x05\ \x24\x1e\x02\x81\x7c\xda\x65\xad\xda\xc1\xe5\x8f\x5c\xc3\x68\x36\ \xc1\xe5\x77\x5f\xc1\x9a\x37\x5e\xc3\x74\x8b\xbe\x5d\xd9\xef\x64\ \x6a\x86\xc2\xf6\x9f\xbb\x54\xc7\x72\x60\xfa\x66\x42\x5f\x51\xc5\ \xea\x57\x93\xcc\xbd\x76\x1e\xd5\x91\x18\x5f\xfa\xd1\x57\x71\xa5\ \x8b\xa1\x46\xd0\x23\x1a\x42\xf8\x1b\x54\x55\xd5\x43\xe2\x2e\x6b\ \xef\xf7\x84\x58\x96\x85\x2d\x1c\x34\x45\x63\x30\xbf\x97\x33\x62\ \x0b\xe8\x89\x99\x24\x0a\x7e\xfc\xa1\x69\xfe\xd4\x75\x05\x95\xa5\ \xd7\x8d\x62\x67\x64\x10\x04\xda\xb6\xcd\xa2\x45\x8b\x68\x98\x6d\ \xa2\x0a\x85\x4e\x6d\x2f\x47\x2c\xd2\xb1\xfb\x2a\xce\xb6\x07\x22\ \xc8\x74\xe8\x5d\x41\x9d\x2d\x5b\xb6\x00\xdc\x5d\x56\x59\x93\x27\ \x4f\x26\x12\x89\x20\x84\xa0\xcf\x19\xa1\xee\xfc\x21\x26\xca\x2a\ \x9c\xfe\x0a\xac\xde\x0a\xdc\x78\x08\xe4\xbe\x89\x6a\xaa\xc6\xb1\ \x77\xef\x5e\x22\x54\x51\x1b\x6e\xc4\x73\x07\x71\x1c\x27\xf0\xee\ \xd4\x9c\x47\x7d\x63\x3d\xe3\xea\xc6\xa1\x28\x0a\x3b\x0b\xfd\xcc\ \xfc\x5c\x91\x58\x4c\xc7\x4d\xc7\xb0\x7a\x23\x38\x83\x35\x58\xfd\ \x61\x14\x45\x04\xaa\x13\xa0\xbb\xbb\xfb\xaf\x2b\x90\x52\xa9\x84\ \xad\x49\xa4\x0c\x63\xd7\x6c\x27\x31\xec\x70\xd2\xc7\x8e\xe4\x57\ \x9b\x6e\xa0\x2f\xd9\xc7\x59\x67\x9d\xc5\xa5\x97\x5e\xca\xf2\xe5\ \xcb\x69\x6f\x6f\x67\x68\x68\x08\xd7\x75\x71\x5d\x97\x81\x81\x01\ \xca\x71\x4a\xca\x29\x10\x3d\x39\x4b\xa8\x39\x8a\xd7\x90\x44\x3b\ \x4a\x10\x12\x15\x38\x25\x0f\x55\x68\x0c\x3d\xd0\xe8\x63\x4f\xfb\ \xdd\x7c\xf9\xfb\x72\xec\xa0\x08\x85\x2d\xd6\x1e\xe6\xd5\x36\x53\ \xb2\x0a\xd4\xcc\x0b\x51\x98\xdd\x0b\x48\x84\x13\x22\xbd\xaa\x9a\ \xe2\x8e\x30\x00\x21\x11\xe6\xba\x57\xcf\x23\x5b\xca\x60\xd9\x56\ \xa0\x72\x00\x2a\x84\x82\x3b\x36\xa7\x10\x82\xbe\xd2\x28\x27\x37\ \xd6\x51\x2c\xba\x1c\x39\xe3\x38\xb6\xd6\xac\x40\xce\x75\x11\xa8\ \xe4\x36\x45\xc9\xac\xa9\x02\x21\x51\x14\x05\xcf\xf3\x3e\x78\x81\ \x8c\x1f\x3f\x9e\x81\x81\x81\x03\x8d\x8e\xa2\x38\xc9\x64\x92\x54\ \x2a\x85\xad\x79\x94\xac\x18\x8e\x90\xdc\xf5\xc6\xd7\xf9\xc6\x19\ \x37\x23\xc3\x26\x96\x5b\xe0\xfa\xeb\xaf\x67\xd9\xb2\x65\x7c\xfe\ \xf3\x9f\x47\xd7\x75\x22\x91\x08\x3b\x76\xec\xa0\xb2\xb2\x92\xf6\ \xf6\x76\x5f\xa0\xb6\x8d\xed\xda\x18\x9a\x4a\x6a\x48\xe5\x07\x17\ \x3e\xcd\x60\x7a\x80\xfb\x36\x5d\xcf\xe2\x79\x7f\xc3\xf3\x5d\xf7\ \x8e\xb9\xc5\xbc\x43\x20\x65\xe1\x5a\x96\x85\x22\x04\x8a\xa2\x60\ \xd9\x36\x5f\x3d\xfc\x67\x64\x44\x17\x9a\xe1\x91\x1c\x75\x58\x91\ \xf8\x39\x49\x7c\x7b\x20\xa5\xc4\x93\x1e\xdd\xdb\x06\x48\xec\xb4\ \xc9\xc6\x4b\x38\xd5\xfb\x3c\xc2\xa8\x50\x02\x35\x26\x84\x00\x01\ \x25\xd3\xe4\x82\xe6\xef\x31\xaa\xb7\x73\xcd\x82\x7b\x78\x65\xf3\ \xcb\x64\x22\x1d\xb4\xb3\x0b\xdb\xb6\x90\x48\x34\x4d\xc3\xb6\x6d\ \x54\x55\x7d\xcf\xce\xc9\x7b\x12\xc8\xc0\xc0\x00\x6d\x6d\x6d\xff\ \xbb\xba\xba\xfa\x68\x3f\x00\x13\x8c\x26\x46\xe7\xab\xaa\x8a\xa2\ \x28\xe8\x52\xc1\xc9\x48\x72\x03\x2e\x76\x9f\xe0\xeb\xff\xf2\xcf\ \xa4\x77\x49\x4a\xa3\x82\xaf\x7c\xe5\x2b\x7c\xfb\xdb\xdf\xe6\x57\ \xbf\xfa\x15\xdb\xb7\x6f\x47\x4a\x49\x22\x91\x20\x16\x8b\xd1\xd9\ \xd9\x49\x7d\x7d\xbd\x1f\x19\x4b\x1b\x01\x1c\x1e\x5e\xcc\x9a\xc1\ \xa7\xd9\xd3\x35\xca\x39\xe3\xff\x0f\x0b\x0f\x3b\x96\x35\x43\xcf\ \xb2\xd3\x2c\xbd\xab\x40\xca\x27\xc4\x71\x1c\x14\x04\x4a\xa5\xa0\ \x73\x67\x96\x23\xcf\x9b\xcd\x65\xbf\xbd\x9c\xfb\xfe\x76\x1d\xc3\ \x75\x23\x78\x03\x23\x3c\xe4\xfc\x0e\xd3\x1c\xfb\x7f\xcd\x63\xe5\ \x77\x53\xa8\xba\x40\x11\x0a\xc5\x62\x91\x62\xb1\x08\x40\x95\x1b\ \xc2\x75\x55\xff\xd4\x29\x0a\x42\x48\x46\x86\x4a\x9c\xfd\xe9\x4f\ \x72\xe5\xd3\x37\x70\xe6\xd4\x8b\x99\xde\x30\x8f\x94\x6e\xb0\xc1\ \xdd\x8e\x69\xfa\x0e\x85\x94\xfe\xeb\x43\x31\xea\xe3\xc6\x8d\xfb\ \xc2\xb4\x69\xd3\x8e\x07\x70\xa5\xc7\xfa\x3d\x6f\xa0\x0a\x95\x89\ \x13\x27\x62\xdb\x36\xe9\x67\x2d\x52\xd2\x43\x4a\x81\x94\x61\x34\ \x40\xd3\x2d\xfa\xfa\xfa\xb8\xf4\xd2\x4b\xdf\x75\xce\x5c\x2e\x47\ \x2c\x16\xf3\x5d\x67\xe1\x20\x84\x42\xa5\x51\x83\xe5\x16\x71\x3d\ \x97\xba\x86\x10\x5d\xa9\xad\x64\xac\x04\x96\xa5\xa1\x68\xe2\x1d\ \x02\x51\x14\x25\x38\x25\x02\x81\xa2\xa8\xb8\x2e\x68\xaa\x8a\x10\ \xfe\xc2\x38\x8e\xc3\xea\x9e\xdf\xe3\xb9\x2e\x96\xe5\x05\xae\xf2\ \x9c\xf9\xb3\xe9\xe8\xe8\x20\x16\x8b\x05\xaa\x13\xc0\xf1\x94\x7d\ \xa7\x4e\x51\xc0\xd8\x87\x7e\x0a\x45\x41\x08\x41\xb6\x94\x65\xc3\ \xc8\x92\x60\x2e\xc4\xbe\xe0\xf0\x60\x91\x86\xbf\x48\x20\x9e\xe7\ \x09\xd3\x34\x91\x52\xf2\x96\xd9\x4b\xed\x14\x97\xe3\x9a\x8e\xe7\ \x9c\x73\xce\xe6\xe4\x93\x4f\xe6\xa7\x3f\xfd\x29\x5b\xb7\x6e\x65\ \xfe\xfc\xf9\xac\x5c\xb9\x92\x99\x33\x67\xb2\x66\xcd\x1a\xe2\xf1\ \x38\xe1\x70\x98\x7c\x3e\x1f\xec\x9c\x8c\x52\x62\xfc\x1c\x85\xfa\ \xc4\x54\x8a\xd9\x9c\xef\x18\x28\x0e\x8a\xa2\x32\x9c\xeb\x61\x7e\ \x74\x2e\x03\xc2\x64\xb4\xd0\xcf\x84\xc8\x44\x84\x14\x58\xa6\x85\ \x70\xdf\x79\x42\xf6\x07\x0f\x05\x02\x01\x34\x35\x45\xc8\x65\x1c\ \xa4\xeb\xab\x26\x17\x9b\xb0\x52\x85\xeb\x66\x30\x4d\xb7\x0c\x8b\ \x80\x84\x49\x93\x26\xa1\x69\x1a\xae\xeb\x06\xf3\x2a\x1b\x24\x39\ \x27\x03\x58\xbe\xca\x0a\x43\x7d\x7d\x84\xcd\x3b\x77\x20\x2d\x1d\ \x45\x51\x48\x17\xe3\x1c\x56\x7d\x34\x3b\xdc\x17\xb0\x2c\x5f\x65\ \x95\x6d\xc7\x87\x22\x10\x29\xe5\x3e\xfd\xeb\xf9\xae\xa4\x10\x82\ \x9a\x9a\x1a\x22\x91\x48\xe0\x7f\x87\x42\x21\x8e\x3a\xea\x28\xf6\ \xee\xdd\xcb\xd1\x47\x1f\xcd\xba\x75\xeb\x30\x0c\x83\x9a\x9a\x1a\ \xd2\xe9\x34\x42\x08\x52\x86\xc7\xb4\x4f\x45\x08\xaf\x9e\xc6\x96\ \xd5\xeb\x7c\xf0\x51\xf7\x50\x44\x98\x41\x63\x39\x13\xf5\x8b\x68\ \x9a\x3f\x9d\x7b\xd6\xff\x1b\xe7\x86\xfe\x91\xaa\x70\x2d\x25\xab\ \x0f\xe5\x5d\x04\x22\x84\x1f\x2f\x94\x4a\x25\x94\x31\x2c\x63\xc2\ \xc4\x6a\x7e\xf2\xca\xb7\xb8\xeb\xc2\x65\xdc\xf4\xda\xc5\x48\x33\ \x42\x63\x4d\x33\xb6\xd3\x45\xa9\x64\xf9\xaa\xc5\x15\x8c\x3f\x5d\ \x62\x0e\x55\xe1\x66\x75\x9c\xa4\x06\xb6\x82\x50\xfd\x13\x35\xe2\ \x24\x82\x13\xe2\x54\xba\x54\x55\x86\xb9\x73\xdd\xff\xe6\xa7\x9f\ \x5b\xca\x7f\x6d\xb8\x86\x1d\x99\x0e\x5a\xf4\x56\x6c\xd7\x22\x9f\ \x2f\x80\xf0\x05\xa2\x28\xca\x87\x76\x42\x28\x9f\x10\x4f\x78\x28\ \x42\xa1\xbd\xbd\x9d\xd1\xd1\x38\xc3\xc3\xc3\x14\x0a\x05\x00\x3a\ \x3a\x3a\x02\x5d\xea\xba\x6e\xb0\x6b\x4a\xa5\x12\x86\x61\xf8\x49\ \x28\xdd\xa3\xc2\x30\xd8\x34\xf4\x3a\x89\x44\x8e\x62\xb1\x88\x19\ \x92\x14\xad\x18\x46\x34\xc2\xb5\xbf\xbb\x98\xbb\xbf\xf2\x5b\x32\ \xde\x20\x8f\x75\xfc\x88\x52\xca\x63\x74\x64\x14\xcd\x50\xca\x6a\ \xca\xdb\x5f\x20\xc5\x62\x91\x54\x2a\x85\x40\x50\x30\x25\x25\xcb\ \xa4\xcb\x7b\x85\x5f\x2f\xbf\x87\x86\xda\x09\xac\x8b\x2f\xc5\x4b\ \x08\xba\x37\x26\xc9\xa7\x7d\xf7\x56\xc3\xa0\x75\x41\x05\xfd\xf1\ \xbd\xfe\x42\x86\x24\x89\x57\x63\x14\x3b\xa2\x41\x90\x58\x2c\x16\ \xfd\xf9\xab\x3c\x2c\xd7\x82\xaa\x38\x5f\xfb\xed\xe7\x39\x72\xc6\ \x0c\x52\xb9\x61\x92\xf1\x38\x3b\x96\x24\xc9\xe7\xfd\x39\x85\x10\ \x18\x86\xf1\xe1\xa0\xbd\xe5\x88\x18\x40\xea\x12\x90\xd4\x8f\x1b\ \x47\x3c\x1e\x47\x51\x14\x2a\x2b\x2b\xff\x64\x10\xd9\xdf\xdf\x4f\ \x32\x99\x44\x51\x14\x72\xc2\xa1\x64\x57\x10\xad\xcf\x93\x56\x55\ \x54\x55\x45\x43\x82\x10\x08\x45\x50\x69\x48\x2e\xfa\xe6\xa7\x19\ \xed\xb0\x49\xed\x2e\x20\x14\x81\x51\xa1\x07\xf3\x19\x86\x71\xf1\ \x84\x09\x13\xf6\xf4\xf7\xf7\xdf\x2a\x84\x40\x1d\x9b\x43\x11\x0a\ \x46\xc1\x45\xba\x92\x64\x07\x3c\xbc\xfd\x1e\x86\x37\x5b\x98\x69\ \x17\x31\x16\x2f\x68\x9a\xe6\x67\x03\x3d\x97\xd3\x26\xfc\x23\x62\ \xa2\x43\x7a\x58\xf0\x4a\xf2\x36\x46\x6c\x5f\xf5\xb9\xae\x8b\xa2\ \x28\x68\x9a\x86\xa2\x28\x44\xd3\x2e\xe9\x5e\x87\xfe\x0d\x26\x89\ \x1d\x9b\x78\x7e\xef\xfa\xfd\x5c\x5b\x81\xae\xeb\x48\x29\x83\xa0\ \xf0\x50\x9c\x10\xf5\xcf\xbd\xa1\xa1\xa1\xe1\x52\x55\x55\x27\xba\ \xae\x4b\x56\xb5\x98\xff\xe9\x28\x67\x1c\xfd\x0f\x94\x66\x6c\xe2\ \xb2\xcf\x5c\x87\xd1\xa2\x30\xfe\x38\x41\x32\xba\x87\xee\x35\x19\ \xf2\x85\x3c\x85\x42\x81\x81\x81\x01\x2b\x9b\xcd\x5a\xb6\x6d\xab\ \x8e\xe3\x08\x29\x25\xc5\x88\xc7\xec\x8f\x57\x92\xed\xb5\x29\xec\ \xd1\x88\x44\x22\x18\x42\xa3\xd8\x01\x5d\x2f\x9a\x0c\xac\xb4\xc9\ \x74\x4a\x9c\xac\x8f\xbe\xaa\xaa\x5a\x4e\xc5\x22\x84\x60\xe2\xc4\ \x89\x24\x12\x89\x64\x38\x1c\x56\x33\x99\xcc\xce\x58\x2c\x76\x7c\ \xb1\x58\x54\x9a\x9b\x9b\x09\x25\x25\x7b\x5f\xb2\x19\xdd\xec\x52\ \xe8\x07\x5c\x05\x4d\x53\xc7\xbc\x25\x7f\x3e\x21\x04\x9a\x30\xc8\ \x1f\xdd\xce\xff\x3a\xf6\x7b\x44\x8d\x2a\x06\x0a\xbb\xd9\xbd\xb9\ \x97\x5c\x9f\x87\xe3\x38\x14\x0a\x05\xc6\x8f\x1f\xcf\x55\x57\x5d\ \x45\xba\x6f\x84\xe4\x46\x0d\x67\x28\x44\xc8\xad\x20\x52\x11\xa1\ \xa2\xa2\x02\x45\x51\x08\x87\xc3\x01\xa0\x68\x18\x06\xf1\x78\xfc\ \x51\x55\x55\x1f\x2b\x14\x0a\xde\x07\x2e\x10\x60\xa2\xe7\x79\xe4\ \x0d\x87\x39\xa7\x56\x93\x74\x07\xb9\xee\x9c\x3b\x18\x12\x6f\xb1\ \x31\xf5\x02\x0b\xe7\x9c\xca\x9e\xc4\x56\x06\xd6\xfa\xd8\x96\xa2\ \x28\x4c\x9f\x32\x53\x9d\x75\xf8\x6c\x3d\x91\x4a\x88\x52\xa9\x44\ \xa9\x54\xa2\xca\x32\xc8\x74\xb9\xf4\xaf\xcb\x33\x67\xd6\x3c\x6e\ \xbd\xf5\x56\xae\xb8\xe2\x0a\xf6\xee\xe9\x26\x16\x8b\xb1\x60\xc1\ \xf1\x84\x42\x21\xe6\xcc\x99\xc3\xcc\x99\x33\x31\x4d\x93\x29\x53\ \xa6\x30\x69\xd2\x24\xe2\xf1\x38\x91\x48\x84\xda\x58\xdd\x2c\x4f\ \xba\x17\xcc\x99\x33\x67\x61\x32\x99\x54\xee\xbe\xfb\x6e\x2e\xbf\ \xfc\x72\x6a\x6a\x6b\xd1\x43\x3a\xf3\xe6\xcf\xa3\xb2\xaa\x92\xb9\ \x73\xe7\x00\x30\x6f\xde\x3c\xa6\x4d\x9b\x86\x94\x92\x48\x24\x42\ \x3e\x5b\x64\xea\xe2\x6a\xce\x9e\x71\x31\xd9\x42\x8e\xe7\x3a\xef\ \x22\xb1\xdd\x09\x04\x52\x2c\x16\x79\xf9\xe5\x97\x91\x52\x72\xd2\ \xc9\x27\x91\x2f\xe4\x99\x35\x7b\x16\x55\x55\x55\xcc\x9b\x37\x0f\ \x80\x73\xce\x39\x87\xe9\xd3\xa7\x07\x73\x16\x8b\x45\xb6\x6d\xdb\ \x36\xe7\x2f\x15\xc6\x41\x81\x8b\x8e\xe3\x30\x3a\x3a\xca\xe8\xe8\ \x28\xe9\x4c\x86\xa2\x55\xa4\x10\xd9\xc5\xf7\x9f\xfa\x2e\x9a\xae\ \x90\x55\xba\x79\xea\xad\xbb\xe9\xeb\x48\x92\x4c\x26\x48\x24\x12\ \xa4\x53\x19\xd4\xd3\x76\x23\x3e\xbe\x1d\x19\x29\x71\xc2\x09\x27\ \xb0\x7e\xfd\x7a\x3e\x76\xcc\xd1\xc4\xec\xf1\x54\x68\xd5\x4c\x99\ \x32\x85\x64\x32\x49\x73\x73\x33\xe3\xc7\x8f\xa7\xb6\xb6\x96\xa9\ \x53\xa7\x32\x7d\xfa\x74\x14\x45\x61\xf2\xe4\xc9\x68\x9a\x46\x38\ \x1c\xa6\xb1\xb1\x31\xd8\x8d\xea\xcc\x38\x42\x11\x54\x54\x54\xe0\ \x79\x1e\x8d\x8d\x8d\xc4\xe3\x71\x26\x4d\x9a\x84\xeb\xba\x4c\x98\ \x30\x81\x86\x86\x06\x66\xce\x9c\x19\xc0\x34\x75\x75\x75\x9c\x7e\ \xfa\xe9\x14\x0a\x05\x54\x45\xa1\x52\xaf\xc5\x76\x4d\x2c\xcf\xa4\ \xda\x68\x08\xbc\xb5\xb2\xda\xea\xea\xea\xc2\x75\x5d\x86\x87\x87\ \xf1\x3c\x8f\xda\xda\x5a\xf2\xf9\x3c\x9a\xa6\x91\x4c\x26\xe9\xeb\ \xeb\xc3\x71\x1c\x9a\x9b\x9b\x29\x95\x4a\xc1\x49\xfe\x50\x68\x40\ \x33\x67\xce\x5c\x63\x9a\xe6\x71\x8a\xa2\x90\xaa\x74\xf8\xd4\x37\ \x1b\x31\x0c\x41\x6a\xb7\xc3\xf0\x16\x93\xf8\x5b\x16\xf9\x61\xf7\ \x00\x6c\x47\x55\x35\xce\xb9\xe2\x54\xf4\x79\x7b\x78\xf1\x3b\x7b\ \xf8\xc9\x0d\x3f\x23\x9d\x4e\x73\xef\xbd\xf7\x52\x53\x53\x43\x67\ \x67\x27\xae\xeb\x72\xec\xb1\xc7\x92\x4c\x26\xe9\xef\xef\x0f\x9c\ \x01\xcf\xf3\xde\xf1\x2a\xbb\xa6\x95\x95\x95\x0c\x65\x7a\x50\x4c\ \x83\x19\x33\x66\x32\x3c\x3c\x4c\x65\x65\x25\x0b\x16\x2c\x60\xcd\ \x9a\x35\x7f\xf6\xff\x1d\xc7\x21\x97\xcb\xb1\x6b\xd7\x2e\xae\x7f\ \xf9\x73\x14\xf3\x50\x5d\xa3\xb1\xf2\x81\xdd\x0c\xac\xdd\x67\x43\ \xde\x4b\x5e\xbd\x7c\x4a\x56\xad\x5a\x25\x3e\x14\xa3\x5e\x1e\xcd\ \xcd\xcd\x18\x89\x24\x1b\x6f\x2e\xe2\x94\xe4\x18\x6b\x44\x22\xd1\ \x30\x0c\x35\xb8\x38\xcf\xf3\x50\x04\x7c\xe6\xd8\xbf\x27\xde\xb4\ \x89\x57\x42\x77\xf2\xfd\xef\x7f\x9f\x6f\x7e\xf3\x9b\x64\x32\x19\ \x22\x91\x08\xb6\x6d\x53\x55\x55\x45\x7b\x7b\xbb\x7f\xf3\x08\x3c\ \x57\xe2\x49\x17\x21\x14\xdf\xb0\x2a\x1a\x9e\x94\x28\x42\x09\x22\ \x75\xcb\xb2\x68\xaa\x6e\x65\x64\x64\xc4\x8f\x01\xa4\xc4\xb1\x1d\ \x96\xbd\xf2\x1a\xae\x74\xd0\x14\x1d\x4f\xfa\x71\x8d\x82\x8a\x16\ \xd2\x82\x6d\x27\x3c\x81\xeb\x4a\x9c\xa2\xc7\xcf\x97\xdf\x49\x63\ \xb4\x85\xcd\x85\xe5\x14\x6d\x95\x3d\x6f\xc4\x29\x26\xfd\x20\x33\ \x1c\x36\xd0\x09\x53\x74\xf2\x44\x42\x11\x2c\xdb\xf6\x6d\x11\x3a\ \x8a\x2e\x0f\xd8\xc2\x41\x7c\x95\xc9\x7c\x78\x39\x75\xdb\xb6\xb9\ \xfa\xea\xab\x59\xb4\x68\x11\x8e\xe3\xf0\xe8\xa3\x8f\x92\xc9\x64\ \x82\xa0\xaf\x50\x28\x30\x7d\xfa\x74\xde\x7c\xf3\x4d\x12\x89\x04\ \xf5\xf5\xf5\x6c\xdd\xba\x15\x4d\xd5\x58\xd3\xf3\x1c\x21\xcd\x20\ \x97\xcb\xf1\xf5\xaf\x7f\x9d\x42\xa1\x40\x4d\x4d\x0d\xd1\x68\x94\ \xad\x5b\xb7\xd2\xd8\xd8\xe8\xab\x0b\xc5\x65\xce\xe7\x22\x1c\x3b\ \xee\x42\xcc\x70\x1f\xa9\xbe\x30\xeb\x7b\x5e\xe5\xf4\x63\x4e\x66\ \xdd\x8e\x57\xd9\xf3\x8c\x83\xa2\x41\x43\x43\x03\xc5\x62\x31\xf0\ \xfc\x5c\xc7\xa1\xdb\xeb\x67\xde\x19\x95\x5c\x71\xc2\xcd\xfc\x62\ \xe3\xb7\x38\xa5\xf1\x32\x56\xed\x7a\x95\x7c\xc5\x36\xb6\x3c\x90\ \x21\x9f\x2d\x20\x10\xe4\xc6\x79\x2c\x38\x3b\x86\x18\xf6\x78\xfc\ \xf9\x9f\x92\xee\x76\x31\x47\x20\xdb\xe7\x60\xe7\xf7\x79\x4a\x9e\ \xa5\x70\xfa\x1d\x2d\xfc\xe8\xec\xdf\xf3\x99\xff\xfc\x24\xff\xf2\ \xe9\x7f\x47\x91\x21\x36\x24\x7f\xc7\x0b\xff\xf5\x06\xa5\x3e\x3d\ \x10\xca\x4b\x2f\xbd\xd4\x0c\x0c\x1f\x4a\xb6\xcc\x41\xb9\xbd\x93\ \x27\x4f\xa6\x58\x2c\x32\x73\xe6\x4c\x14\x45\x61\xda\xb4\x69\x54\ \x56\x56\x52\x55\x55\xc5\x53\x4f\x3d\x15\x18\xe2\x4c\x26\xc3\xc6\ \x8d\x1b\x09\x85\x42\x08\x04\xba\x88\x50\x74\xf2\xec\xdd\x35\xe2\ \xbb\x91\xd1\x68\x80\x13\x95\xed\x83\x6d\xdb\x48\xcd\x63\xe2\x91\ \xd5\xbc\x35\xf8\x2a\x3f\xb8\xe0\x01\x4c\x25\xc5\x7f\x3c\xbb\x86\ \xc5\x27\x9f\x4d\x9f\xda\x4e\xef\xf3\x69\xd4\x90\x4f\xa6\x2b\xc3\ \xe5\x96\x65\x11\x0e\x47\x30\xea\x1c\x5a\xe6\xd7\x70\xc6\x19\x67\ \xb0\x54\xf9\x21\xc7\xb7\x9e\xc8\x50\xa4\x8b\xe1\xe8\x5e\xba\xaa\ \x3c\x0c\x3d\x4c\x43\x43\x03\xc3\x83\x43\x74\x3d\x06\x42\x11\xc4\ \x55\x90\x63\xe6\x53\x78\x1a\x46\x58\x04\x2a\x53\x95\x1a\x8a\x5d\ \x85\xc4\x25\x4b\x2f\x4d\x35\xcd\x3c\xbf\xfa\x55\x76\x2a\x1b\xf1\ \xc6\xd4\x1e\xc2\xf7\xfc\xaa\xaa\xaa\xc8\x66\xb3\x87\x94\xba\xf4\ \x67\x05\x12\x89\x44\xb8\xe9\xa6\x9b\x38\xf7\xdc\x73\xf9\xde\xf7\ \xbe\x47\xa9\x54\x0a\x74\x72\x59\x3f\xf7\xf6\xf6\x1e\x60\x03\x14\ \xa1\xb0\xec\xad\xa5\xcc\x3d\xfe\x44\xd6\xb6\x75\xe3\x0c\x86\x89\ \x46\xa3\xa4\xd3\xe9\x03\xd2\xb5\x89\x44\xc2\x0f\xc6\x42\x12\xcb\ \x0d\x53\xd1\x58\xe2\x7b\x7f\xb8\x86\x1b\x3f\xf3\x13\x8c\x4a\x87\ \x5f\x6e\xfc\x0f\xe2\x03\x26\xa9\x74\x12\x45\x13\xd8\xb6\x1d\xc4\ \x13\x65\xbe\x95\x94\xe0\x78\x26\xb9\x62\x0e\x2b\x6b\xa0\x1a\x16\ \xaa\xaa\x53\x1f\x6a\xa3\x64\x6e\xe0\xb6\x1f\xdf\x41\x7d\x7d\x3d\ \xab\x56\xad\x62\xe3\xc6\x8d\x84\xc3\x61\x7a\x7a\x7a\x68\x6c\x6c\ \xa4\xab\xab\x8b\xd9\xb3\x67\x63\x59\x16\x1b\x36\x6c\xa0\xa2\xa2\ \x82\xbe\xae\x01\x14\x0d\x54\x55\xc7\x71\x05\xae\x74\x89\xe8\x61\ \xa4\xe7\xe1\xd8\x0e\xa6\xe5\x93\x1b\xca\xc1\xee\x87\x4e\x03\x72\ \x5d\x57\xaf\xac\xac\x64\xe9\xd2\xa5\xc1\x05\x94\x8d\x5e\x39\x30\ \x13\x12\xf6\x4f\x29\x3b\xb6\xc7\xda\xc4\x23\x74\xf7\x45\x48\x0d\ \x65\x49\xa7\x0b\x54\x55\x55\x51\x57\x57\x17\x08\xa4\x1c\x50\x79\ \x9e\x87\x82\x44\x0b\x0b\x8a\x09\x97\xc1\x9d\x5b\x39\xeb\xcb\x27\ \x91\xeb\xf5\xb0\xf3\x12\x2b\xe3\xa2\x85\xf6\xc5\x23\xe5\xcd\x50\ \x2a\x95\x90\x9e\xc4\x71\x3c\x22\x51\x95\x6b\x9f\xfd\x2c\x37\x9e\ \xf9\x30\xbf\xd8\x72\x1d\x83\xfa\x4e\x1a\xf4\x06\xa4\x84\x71\xe3\ \xc6\x91\xcd\x66\x69\x6d\x6d\x65\xdd\xba\x75\xcc\x9f\x3f\x1f\xcf\ \xf3\x98\x3d\x7b\x36\x43\x43\x43\xe4\xf3\x79\xda\xda\xda\x98\x35\ \x6b\x16\x0f\x3c\xf0\x00\x42\x51\x70\x34\x3f\xfa\xff\xdb\xa3\xff\ \x89\xbc\xec\x47\xa2\x72\xc6\x94\x7f\x60\xab\x73\x27\xd6\x98\x40\ \x0e\x55\x86\xf0\x3d\x7b\x59\x55\x55\x55\x0b\x3c\xcf\xab\x79\x9b\ \x67\x51\xdb\xda\xda\xfa\x50\x2e\x97\x43\x48\x70\xa7\x08\x8e\x3b\ \xb7\x9a\xfc\x90\x4b\x7e\xd8\xa5\x30\xe4\x11\xa9\xd2\x29\xa5\x3d\ \x92\xbb\x6c\x3c\xe9\x32\x79\xf2\x64\x74\x5d\x27\x97\xcb\x61\xdb\ \x36\xc3\xc3\xc3\x84\x42\x21\xe6\xcd\x9b\x47\x5f\x6f\x1f\x96\x6d\ \xe3\x99\x72\x8c\x08\xed\x3b\x0c\xae\xeb\x1e\xa0\x3a\xa3\xd1\x28\ \xa5\x52\x89\x7c\x3e\xef\x5f\xbc\x04\x73\x9a\xe0\x6f\xbe\xd1\x84\ \xeb\x42\x4b\xf8\x28\xc6\x37\xd7\xb2\x7a\xd7\x4b\xe4\xfa\x5d\xba\ \x1e\x0c\xd1\x32\xb1\x95\x63\x8f\x3d\x96\x17\x5e\x78\x21\x88\xa6\ \x2d\xcb\xc2\x30\x7c\xdb\x56\xce\x65\xf8\xfc\x00\x81\x5d\xf0\x38\ \xed\xce\x4a\xf2\x43\x06\x3f\xff\xfc\x52\x6e\x5a\xf1\x65\xba\xd2\ \x6f\x22\xf1\xd8\xfc\xd3\x12\xc9\x4e\x07\x90\xd4\xd6\xd6\xb2\x73\ \xe7\xce\xe6\x64\x32\x39\xf4\xa1\x0a\xe4\xdd\x86\xae\xeb\x4d\xf3\ \xe7\xcf\x1f\x4c\xa5\x52\xd4\xd4\xd4\x90\xcb\x66\x71\x2c\x3f\x5f\ \x82\x02\x8a\xcf\xb2\x39\x00\xdb\x6a\x69\x69\x61\x60\x60\x00\xcf\ \xf3\x13\x40\xa6\x69\x72\xdf\x7d\xf7\xd1\xd2\xd2\x82\xa2\x28\x3c\ \xf9\xe4\x93\xec\xde\xbd\x1b\xd7\x75\x03\x6f\x6c\xc2\x84\x09\x74\ \x76\x76\x92\x4c\x26\xd1\x34\x8d\x74\x3a\x4d\x22\x91\xc0\x34\xcd\ \x40\x75\x79\x8d\x82\x93\xff\xb1\x96\xf8\x0e\x9b\x54\xa7\xcd\xe8\ \x36\x0b\x33\xe5\xa1\x68\x82\xc6\xf1\xf5\x41\x2a\xf9\xcf\x79\xaf\ \xe5\xb5\xc8\xa5\x0a\x1c\xf5\x8d\x10\x4e\x49\x52\xa1\xd6\xa1\xaa\ \x1e\x59\x33\x49\xba\xc7\x61\xfb\x13\x39\x3c\xc7\x37\x19\xd5\xd5\ \xd5\xe4\xf3\xf9\x33\xc3\xe1\xf0\x68\x2a\x95\x32\x7b\x7a\x7a\xb6\ \xfe\x55\xb9\xbd\x42\x08\x1e\x7d\xf4\x51\xa4\x94\xac\x5c\xb9\x92\ \xdd\xbb\x77\xd3\xdb\xdb\xeb\x67\x01\xc7\x5e\xaa\xaa\x62\x18\x06\ \x9d\x9d\x9d\x44\x22\x11\x74\x5d\x3f\x80\xa1\x31\x7d\xfa\x74\x5e\ \x7f\xfd\x75\x3e\xfb\xd9\xcf\xd2\xda\xda\x4a\x24\x12\xa1\xbf\xbf\ \x9f\x19\x33\x66\xd0\xde\xde\x8e\x61\x18\x34\x34\x34\x90\xcd\x66\ \x49\xa5\x52\xe8\xba\xee\xa3\xbb\x8a\x82\x61\x18\x7c\xf1\x8b\x5f\ \xe4\xe5\x97\x5f\xa6\xe7\xa1\xb1\x39\x5d\x97\x71\x31\x0f\xb7\xd2\ \xb7\x65\xfb\x7b\x64\xb1\x58\x8c\xed\xdb\xb7\x9f\x52\x2a\x95\xf6\ \xbc\xed\x56\x8e\x3e\xfc\xf0\xc3\x9f\xc8\xe5\x72\x14\x0a\x05\x16\ \x2d\x5a\x84\xb2\xbc\x92\x10\x50\xf0\x6c\xb4\x3a\x0b\x2d\x35\x91\ \x06\x04\x0d\x27\xbe\x63\x19\x5e\x50\x55\x95\x8e\x8e\x8e\x1d\x3d\ \x3d\x3d\x33\xff\x6a\x27\x44\xd3\xb4\xa6\xa3\x8f\x3e\x7a\xf0\x96\ \x5b\x6e\xa1\xa9\xa9\x09\xc3\x30\xb8\xe1\x86\x1b\x68\x68\x68\x40\ \x55\x55\x16\x2c\x58\xc0\x5d\x77\xdd\x45\x55\x55\x15\x4d\x4d\x4d\ \x84\xc3\x61\x5e\x78\xe1\x85\x20\xc3\xd7\xd0\xd0\xc0\xde\xbd\x7b\ \x99\x3e\x7d\x3a\x47\x1e\x79\x24\x83\x83\x83\x24\x93\xc9\x20\xe1\ \x34\x56\x12\x80\xae\xeb\x14\x8b\x45\x1c\xc7\x21\x12\x89\x04\x64\ \x02\x45\x51\x78\xf3\xcd\x37\xd9\xbc\x79\x33\x00\x1b\x36\x6c\x40\ \xd3\x34\x56\xae\x5c\xc9\xe4\xc9\x93\xc9\x66\xb3\x4c\x99\x32\x85\ \x62\xb1\xc8\xfa\xf5\xeb\x91\x52\x32\x34\x34\xc4\x5b\x6f\xbd\x35\ \x7d\x74\x74\x74\x57\xf9\x3e\x1a\x1b\x1b\xaf\x2d\x14\x0a\xc7\xd4\ \xd6\xd6\x5e\x58\xbe\xf6\x6c\x36\x1b\x44\xde\x83\xc5\x61\x2a\x23\ \x3e\xac\x2e\xed\x31\xe6\xbe\x23\x98\x34\x69\x12\x55\xd5\x55\x3e\ \x89\x5b\x08\x1c\xc7\xb1\x84\x10\x5d\x63\xea\x5c\xdb\xb4\x69\xd3\ \x7d\xf1\x78\xfc\x3b\x1f\xea\x09\x51\x14\x85\x47\x1f\x7d\x94\xe3\ \x8f\x3f\x9e\x67\x9f\x7d\x96\x5c\x2e\x17\xa8\x93\xce\xce\xce\x20\ \x67\x1e\x8f\xc7\xf1\x3c\x8f\x48\x24\x42\x26\x93\xe1\x86\x1b\x6e\ \x60\xca\x94\x29\x5c\x7c\xf1\xc5\x98\xa6\xc9\xca\x95\x2b\x03\x1b\ \x51\x86\x47\xca\xc6\xb2\x9c\xdb\xd6\x75\x1d\xdb\xb6\x09\x87\xc3\ \x41\x00\xba\x71\xe3\x46\x9a\x9a\x9a\xd8\xb1\x63\x07\xa3\xa3\xa3\ \x81\x0b\x5d\x59\x59\xc9\xc6\x8d\x1b\x19\x1a\x1a\xa2\xa1\xa1\x01\ \x5d\xd7\xe9\xed\xed\x45\x55\x55\xa4\x94\xe2\x6d\xc1\xee\x25\x0b\ \x17\x2e\x9c\x66\xdb\xb6\x44\x22\x8a\xd5\x69\xaa\x62\x1a\x5e\x2a\ \x84\x9b\xd6\x11\x52\x01\x05\x84\x90\x01\xc8\x64\x95\x2c\x7a\xd8\ \x4c\xf3\x94\x5a\xdc\x8c\x8e\x9b\xd2\xf0\xb2\x5a\x48\x68\xcc\x00\ \x08\x87\xc3\x6c\xd8\xb0\xa1\xf1\xc3\x88\xd4\xeb\x92\xc9\xa4\x3e\ \x56\x5c\xd3\xe0\xba\x2e\x6b\xd6\xac\x61\xf5\xea\xd5\xef\xf0\x36\ \xca\xbc\xdf\xb2\x6a\xdb\x3f\xc5\x59\x55\x55\x45\xa9\x54\xe2\x17\ \xbf\xf8\x05\xf7\xde\x7b\x2f\xb6\x6d\x53\x53\x53\x43\x63\x63\x23\ \x2f\xbc\xf0\x02\xad\xad\xad\xe4\xf3\x79\xb2\xd9\x2c\x9e\xe7\x91\ \x4e\xa7\xc9\x66\xb3\xc4\x62\x31\x52\xc9\x14\x55\x95\xd5\x14\x4b\ \x05\x2e\xbb\xec\x32\x62\xb1\x98\x8f\x4f\x8d\xed\x68\x21\x04\x6f\ \xbd\xf5\x56\x90\xde\xdd\x1f\xde\x18\x37\x6e\xdc\xbb\xb2\xe3\x13\ \x89\x04\xb6\x6d\x8b\xbd\xf6\x10\xb3\x3f\x69\x22\xa3\x0a\x1e\x0e\ \xaa\xa6\xe0\xa5\x74\xac\x01\x03\xbb\x2f\x4c\xa9\xd3\x3f\xa1\xd2\ \x85\xda\x79\x61\xea\x16\x94\x28\xba\x71\x14\x05\x9c\x9c\xca\xf0\ \x43\x8d\xef\xb8\xe7\x0f\x54\x20\x8a\xa2\xac\xb9\xf0\xc2\x0b\xa7\ \xbd\x17\xca\x64\x28\x14\xe2\xc5\x17\x5f\x7c\xc2\x34\xcd\x27\x01\ \xea\xeb\xeb\x6f\xbd\xe9\xa6\x9b\x9a\xce\x3a\xeb\x2c\x56\xad\x5a\ \x15\xa8\xa7\x72\x1c\xa3\x28\x0a\xbd\xbd\xbd\x07\xe0\x50\xd1\x68\ \x94\xfa\xfa\x7a\xc6\x35\xd7\xc3\xbc\x21\xaa\x23\x21\x5e\xb9\x6d\ \x37\xb1\x58\x2c\x60\x9d\x1f\xcc\xd8\x3f\x95\xfc\x76\x3a\xaa\x6d\ \xdb\x58\xd2\x46\x41\x41\xcf\x4d\xe4\xe6\xf3\xee\xe1\x85\xdd\xbf\ \xe6\xf9\xd1\xc7\x99\x3c\xbf\x9e\xbe\xd8\x20\xd9\xed\x5a\x70\x6a\ \x3f\x31\xe1\x5c\xae\x38\xf5\x6a\xbe\xf0\xd3\xd3\xf8\xa7\xf3\xaf\ \xe4\xd1\x55\xf7\x04\x39\xa3\xbf\x94\xe8\x70\xd0\x02\xf1\x3c\xaf\ \xaa\x4c\xb1\x1c\x75\x33\x4c\xbc\x20\x4d\xa4\x42\x01\x4b\xc1\xb3\ \x15\xdc\x94\x86\x35\x60\xe0\x0c\x19\xb8\x19\x1d\x21\xfc\xaa\xa8\ \x50\x28\xd4\x3e\x30\x30\xf0\xeb\x31\x28\xff\x3f\xea\xeb\xeb\x1b\ \x57\xae\x5c\x29\xf6\x8f\x63\x74\x5d\xff\x93\xe0\x5d\x3e\x97\x67\ \x43\x7e\x07\x67\xcc\xaa\x40\xd5\x2d\x16\xde\x58\x81\xa6\x14\xd0\ \x55\x1d\xd7\x96\x38\x71\x83\xd4\xd2\xda\xe0\x7f\x5e\x7b\xed\xb5\ \xaf\xe6\xf3\xf9\x47\xde\xb6\xa1\xdc\xa6\xa6\xa6\xfc\xdb\xe7\x37\ \x4d\x13\xc7\x76\xf0\x54\x3f\x99\xf5\x99\xe9\xd7\xf0\x5f\xab\xff\ \x9d\x2f\xcc\xfa\x57\x66\x2d\xfc\x04\x7a\xb4\xc4\xcd\xbb\xaf\xde\ \x47\x06\xf7\x04\xaf\x74\x3f\x88\xf6\x6c\x8c\x4f\xcd\xfe\x32\x6d\ \xb1\x23\x70\x5c\xc7\x27\x7e\x8f\x09\xe4\x43\x39\x21\x65\x70\xcf\ \xb1\x1d\xb2\x4a\x9e\xca\x6a\x41\x36\x67\x72\xce\x11\x7f\xcf\xa8\ \xd9\xcd\x9b\x43\xab\xa9\x9a\xe6\x51\x18\xcd\x30\xf4\x70\x3d\x42\ \x0b\x6a\x3e\x82\xab\x8b\xc7\xe3\x09\xdb\xb6\xa7\x9a\xa6\x19\x40\ \x31\xe5\x2c\x5b\x52\x49\xd1\x38\x51\xc7\x4d\xeb\x78\x59\x1d\x69\ \xa9\x64\x0b\x29\x8c\xb0\xc1\xb8\xba\x71\x40\x06\x45\x15\xcc\x33\ \xbe\xc0\xe2\xc5\x67\x63\x91\xe3\x7b\x4f\xfd\x3b\xf3\x67\x4f\x66\ \xab\xb3\x35\x98\x67\x2c\xbf\x5d\xf4\x3c\x2f\xbd\xff\xb5\x47\xa3\ \xd1\xfa\xbe\xbe\xbe\xf0\xdb\x84\xa1\x96\xe3\x22\xcb\x30\x29\xa6\ \x15\xbc\x82\x4a\xef\xd0\x1e\x36\x29\x5b\x78\xab\xe7\x4d\x1a\x0e\ \xcf\xa1\x29\xa1\x80\x99\xa2\xa0\xa2\x22\x71\x5c\x9b\x81\xd4\x30\ \x7b\x52\x11\x34\xa1\x07\xe8\x43\x39\x9e\xf9\xf0\x04\xe2\x38\x78\ \xba\x8b\x50\x14\x3e\x5e\x7f\x19\xcd\xb1\x3a\x1a\x12\x47\xb1\x6e\ \x68\x3b\x9f\x3d\xf9\x42\x1e\x1f\xf4\xc9\x6d\x8a\xa4\x1c\x91\xef\ \x8f\xf5\x64\xc3\xe1\x30\xae\xeb\xa2\x69\x1a\x13\x27\x4e\xc4\x75\ \x5d\xd2\x4e\x81\x59\x17\xb9\x18\x61\x05\x17\x1b\xa1\x38\x78\x79\ \x85\xed\x77\xd7\x60\x88\x0a\x3f\x4a\xf0\x20\x95\x2a\x72\xfe\xf1\ \x17\x71\xdb\xda\xcb\xf8\xfc\xf4\xff\xe0\xdf\x17\xdf\x81\xad\x8f\ \xd2\xbe\xf5\xaa\x60\xc1\xfe\x48\x04\xad\xb4\xb4\xb4\x8c\x94\x13\ \x55\x00\x9e\xea\xa2\x69\x2a\x9e\x29\x10\x52\xd0\x20\x1a\xc8\x3d\ \x06\x37\x7b\xd7\xa3\x2b\x06\x3f\xf5\x6e\x43\x41\xc5\x99\xbb\x9b\ \x49\xb3\x9a\xf6\x95\xbc\xa1\xd0\x1a\x69\xe5\xb0\xe6\xc3\x58\xdf\ \xbb\x97\x1a\xa3\x11\x89\xc4\xb2\xec\x03\x28\xb4\x1f\x8a\x40\xca\ \xc7\xdb\x15\x0e\x0a\x61\x16\xcd\x5d\xc4\xca\xa1\x87\x19\xe9\xaa\ \xc0\x70\xea\xb1\xbd\x12\x48\xe1\x03\x88\x1e\xe5\x9c\xf3\xa9\xe3\ \xc7\x8f\x1f\x1c\x18\x18\xb8\xa7\x7c\xc1\xe5\x8b\x2e\xd3\xf8\x6d\ \xd7\x26\xa4\x6b\x24\x06\x5d\x7e\x70\xc1\xe3\x74\x66\xd6\xf1\xe0\ \xc6\xff\x44\x7a\xc2\x27\x19\x48\xc0\x00\xab\x24\x89\x46\x2a\xf0\ \x84\x43\xb6\x90\x67\xdd\xce\x0d\x54\xb4\xf4\xa3\x29\xa1\x7d\x05\ \x42\xef\x4e\xe9\x34\x2a\x2a\x2a\x88\x44\x22\x48\xcf\xa3\x47\x0e\ \x33\xff\x22\x6b\x1f\xe1\x6e\x34\x84\x33\x10\xa1\xd4\x6d\x10\x4e\ \x54\x8f\x91\x8a\xc2\x84\x8d\x30\xf3\xa7\x9f\xc4\x26\xf7\x09\x2c\ \x6b\xdf\xbe\x3a\xa5\xed\x52\x26\x4f\x8f\xf0\xfc\xf0\x2a\x56\x74\ \xd9\x50\xe6\x68\x8d\xdd\xdf\x5f\x72\x42\x0e\xda\x02\x95\x0d\xa0\ \x65\x59\x78\xae\x07\x63\xa5\xcc\x08\x51\xa6\x92\x51\x72\x72\x63\ \xef\x33\x83\x72\x85\xc3\x0f\x3f\xfc\x14\xc3\x30\xbe\x5a\x9e\x23\ \x16\x8b\x71\xd7\x5d\x77\x31\x7e\xfc\xf8\x7d\x75\x26\xb6\x83\x10\ \x82\xaf\x1c\xf3\x6d\xd6\x0c\x3d\xce\xce\x6d\x19\x66\xa9\x9f\xa5\ \xd2\xa8\x0e\xe6\x41\x42\xac\xc6\x60\x24\x35\x4a\xb5\x5e\xcf\xf8\ \xba\x46\x5c\xcf\xc6\x76\x6c\x84\x54\x02\xc2\xdb\x1f\xa3\x72\x4a\ \x29\xc7\x6a\x3e\x6c\xf2\x22\x0f\x12\x0a\x29\x95\x0b\x66\xff\x2f\ \xaa\x9b\x43\x18\xb3\xd3\x8c\x3b\x37\x4e\x78\x7e\x22\x98\xcb\x71\ \x5c\x96\x74\xdd\x87\x63\x7b\x24\x93\x49\x92\xc9\x24\xa5\x82\xc9\ \xa3\x9b\xee\xc2\x94\x39\x42\x95\x92\xce\xe2\x5a\x86\x77\xe7\x82\ \xbf\x8f\x51\x9e\x9c\x0f\xd5\x86\xb8\xae\x8b\x82\xc2\x8b\xed\x7f\ \xe0\xe4\x8f\x9d\x4c\x4a\xea\xbc\xd6\xf5\x34\x47\x36\x7e\x8d\x97\ \xc5\x73\x58\x56\x1e\x45\xfa\xe8\xec\x98\x57\xe6\x95\x77\xef\x75\ \xd7\x5d\x47\x3c\x1e\xa7\xa5\xa5\x85\x42\xa1\xe0\x9f\x10\x61\xa3\ \x48\x95\xc3\x9a\xa6\xf2\xda\xe0\x4a\x46\x0b\x25\x76\x0d\x75\x20\ \xf0\x17\x5a\x20\x90\x48\x2a\x2b\x22\x3c\xb2\xe5\x87\x7c\x79\xc1\ \x77\xe8\xcc\xad\xe6\xcd\xfc\xf3\x9c\x11\x39\x1b\x5b\xee\x63\x1f\ \xfe\x31\xb7\xb3\x1c\xb1\x4b\x57\xe2\x85\x7c\xa4\xe0\xc6\x33\x1f\ \xe6\xa9\xad\x3f\xe7\xba\x85\x0f\xb0\x64\xe3\x12\xcc\xea\x9d\x2c\ \x59\xff\x2a\xa6\xe9\x73\x03\x8c\x90\x4d\xff\x6a\x8b\x3d\x23\xa9\ \xa0\x20\xc7\x71\x6d\x92\x9b\x2c\x6e\xf8\xfa\xad\x28\xd2\x20\xdf\ \xef\x61\xe7\x75\x26\x8e\xaf\x06\x21\x51\x35\x85\x9a\x9a\x9a\xcf\ \xcf\x9d\x3b\xf7\xf8\xfd\x3f\x7f\x70\x70\x90\xee\xee\xee\x8f\xe7\ \x72\x39\xeb\x90\x09\xa4\x50\x28\xe0\xd8\x36\x66\xc4\xc3\xc3\x65\ \xb3\xf5\x30\x87\xf5\x4d\xa5\xae\x51\xa1\x6d\x96\xca\x7f\xae\xba\ \x04\xcb\x09\x91\xcb\xe5\x51\x74\x7f\x61\xca\xc1\x5c\xd9\x03\x59\ \xb9\x72\x25\x9f\xf9\xcc\x67\x02\x40\xcf\xf3\x3c\x6c\xc5\x46\x28\ \x1a\x99\x62\x86\x90\x6a\xa0\x8b\x10\x96\x6b\xe2\x38\x36\xa3\xa3\ \xa3\x28\x42\x21\x5b\xe5\x51\xb4\x2a\xe8\x0e\xbd\xc6\x0f\x9e\x4b\ \xf1\xa5\x4f\x7e\x11\x33\xd2\xc3\xb3\xdb\x7f\xce\x68\x57\x91\x64\ \x32\x1b\xb8\xc1\xef\xe6\x7a\x06\xfc\x32\x57\x42\x54\x22\xa4\x42\ \x4d\x64\x1c\x9b\xe3\xaf\x70\xf2\xf0\x67\xf0\x2c\x15\xd7\x75\x70\ \x5d\x89\x65\xfa\xc5\x21\x86\x61\x90\xee\x74\x31\x0c\x0d\x4d\xf3\ \xe7\xb4\x1d\x9b\xa6\xca\x49\x18\xd2\x40\x00\xb9\x89\x83\xcc\x3a\ \xcb\x81\x4c\x08\x37\x6e\xe0\x0c\x87\x91\xb6\xd2\x2c\x4d\xa5\x59\ \xda\x3e\x81\xaf\x4c\xea\xeb\xe8\xe8\x50\x0e\xe9\x09\xc9\xe7\xf3\ \x7e\x4e\xa0\x42\x62\xbb\x16\x9a\xaa\xf2\x78\xe7\x77\x39\xa2\x74\ \x0c\x96\x6d\x61\xa5\x15\xb6\xfd\x3e\x49\xc9\xb6\x10\xce\x81\xf6\ \xa2\x3c\x96\x2f\x5f\xce\xf3\xcf\x3f\xcf\xe0\xe0\x20\x2d\x2d\x2d\ \x7e\xb5\x92\xea\xa7\x6e\xef\x5b\x76\x0f\xff\x72\xc1\xb5\x94\x1a\ \x3c\x56\xfc\xee\x51\x2c\x3b\x12\xf0\xae\x34\xd7\x57\x8b\x9e\x25\ \xe8\x1b\x6e\xe7\x9a\x7f\x5d\xcb\xe8\x36\x93\xc2\xa0\x8b\x50\xc5\ \x01\x94\xa1\x77\xe3\x47\x05\x5c\x5c\x4f\xe2\x49\x89\x50\xfc\x53\ \xa7\x08\x05\x55\x55\x49\x66\x53\xa4\x43\x5d\xe0\x81\x65\xdb\x41\ \x21\x4e\x4b\x4b\x0b\xd1\x68\xb4\x5c\x10\x4a\x32\x99\x0c\xd4\xa2\ \x8a\x42\x69\x72\x82\xc8\xb8\x4a\x64\x5d\x11\xda\x8a\x07\x7c\xe6\ \xf0\xef\xc6\xe1\xa6\xb5\x80\xf6\x7a\xc8\x55\x56\x99\x0b\x1b\xc9\ \x29\xec\x7e\x31\x4f\x6a\xb7\x83\x99\xf6\x58\x55\x58\x82\x5b\x02\ \xd7\x94\x08\x55\xa0\x69\xfb\x16\x67\xff\x82\x18\xa0\xd0\xd3\xd3\ \x93\x97\x52\x4a\xdb\xb6\x23\xe9\x74\x5a\xb5\x6d\xdb\x4f\x50\x39\ \x06\xb2\xae\x9d\x47\x56\x3e\xc4\xe7\x4f\xfe\x3c\x8d\x93\xa0\xc7\ \x49\xe1\x38\x0e\x93\x26\x4d\xc2\x48\x24\x58\x7b\x63\x1e\xb7\x34\ \x06\xce\x0a\x90\x68\x84\xc2\xfb\xf2\xf9\x7f\x8a\x81\x5e\x16\x88\ \x74\x25\xd2\xf3\x91\xe9\x54\x21\xce\xec\xda\x53\x98\x32\x71\x02\ \x2f\xae\xf7\x38\xbe\xf9\x53\xbc\xe1\xfe\x38\x30\xe0\xe1\x70\x98\ \x68\x45\x94\xa6\xba\x09\x34\xd6\x4a\xde\xdc\xbe\x85\xb6\xb6\xb6\ \x7d\xf9\x1c\x1f\x57\xc1\x73\x42\x7c\xef\x93\x4f\xf2\xd2\x96\x17\ \x70\xaa\xf7\x92\xd8\x1b\x61\x93\xfd\x80\x5f\x16\x67\x79\x41\xeb\ \x90\x83\x21\xd3\xbd\x27\x81\xb4\xb5\xb5\x71\xe1\x85\x17\xb2\x7e\ \xfd\x7a\x06\x7a\x06\xf1\xac\x0c\x6e\xc8\x41\xea\x12\x2b\x62\x05\ \x09\x27\xcf\xf3\xc8\xe5\x72\xc1\xcf\x80\x33\x06\xa9\x9c\x5b\x86\ \x55\x62\xb1\xd8\x8b\xae\xeb\x7e\xd2\xcf\x3a\x7a\x28\x86\xbf\x6b\ \xdb\x47\x7e\x47\xc7\xfd\xaf\x30\xd8\x53\xc0\x2a\x48\xee\xbc\xf3\ \x4e\x26\x4f\x9e\xcc\xf0\xf0\x30\x4b\x96\x2c\xc1\x34\x4d\x5c\xd7\ \xa5\x50\x28\x90\xc9\x64\x98\x30\x61\x02\x7b\xf6\xec\x61\x64\x64\ \x84\xe6\xe6\x66\xba\xbb\xbb\xff\x68\x2a\x3a\x9f\xcf\x23\x5d\x0f\ \xcb\xf6\x09\x15\xdf\x7d\xf5\x62\xae\x3f\xf5\x11\x1e\xda\x74\x0b\ \x3b\xb4\x65\xf4\x77\x56\xe2\xd8\x2e\xb9\x5c\xa1\x9c\x66\xa0\xc7\ \x1b\xa1\xf9\xb2\x51\x22\xba\x8e\xbc\x67\x14\xe1\x34\x04\x20\xa8\ \x8a\x82\x22\x04\x21\x6b\x1c\xb1\x68\x8c\x1f\xbd\x74\x1d\xf7\x5e\ \xfc\x07\xea\x4f\xaa\x23\xd7\xbe\x85\x1e\x6b\x17\x96\xa9\x7c\x70\ \x02\xf9\xf5\xaf\x7f\xcd\xab\xaf\xbe\xca\x2d\xb7\xdc\xc2\xb2\x65\ \xcb\xd8\xb8\x71\x23\x42\x08\xba\xbb\xbb\x99\x34\x69\x12\x93\x27\ \x4f\x66\xf5\xea\xd5\x74\x74\x74\x70\xec\xb1\xc7\xb2\x71\xe3\x46\ \x8a\xc5\x22\xaa\xaa\x2e\x38\xf1\xc4\x13\x65\x40\x92\xf6\x3c\x34\ \x5d\x05\x47\x48\x84\xdf\x94\xa7\xfd\x5b\x1e\x12\x50\x14\x1d\xa1\ \xda\xa8\x7a\x2d\x8e\x19\x0f\xa2\xf8\xa9\x53\xa7\xf2\xc8\x23\x5f\ \x1c\x22\x28\x00\x00\x19\xed\x49\x44\x41\x54\x8f\x50\x57\x57\x47\ \x73\x73\x33\x8d\x8d\x8d\xdc\x7f\xff\xfd\x14\x0a\x05\xc2\xe1\x30\ \xb1\x58\xac\x5c\x38\x8a\xe7\x79\x6d\xb5\xb5\xb5\x1f\xdb\x8f\xa8\ \x11\x76\x5d\x37\xb0\x21\xb6\x09\x8e\xb4\x51\x2b\x6d\x7e\xb0\xfa\ \x2b\xb4\xd5\xcc\xa0\x94\xb6\xc9\x0f\x27\xe8\x7c\x2d\x45\xb1\xe8\ \xab\x97\x48\x38\x8c\x5d\x6d\x51\x53\x15\xc6\xce\x87\x69\xac\x99\ \x88\x3d\x60\xe3\x49\x1f\x8d\x76\xa5\x40\x11\x02\xe9\x29\x38\x9e\ \x0d\x02\x14\xdd\x65\xf7\xc0\x2e\xba\xd3\xdb\x70\x6c\xb0\x6d\x11\ \x6c\x88\x72\xa5\xd5\x21\x13\xc8\x13\x4f\x3c\xc1\x69\xa7\x9d\xc6\ \x9e\x3d\x7b\x18\x1a\x1a\xc2\xb6\x7d\xa3\xab\x69\x1a\x5b\xb7\x6e\ \xc5\xb2\x2c\x92\xc9\x64\x40\xb0\x03\x02\xe2\xf2\xc4\x89\x13\x7d\ \x6f\xa3\x94\xa2\x6e\xf1\x30\x13\x26\x86\x71\xb2\xaa\xb0\xfb\x22\ \x38\x03\x61\xac\xbe\x08\x65\x07\xba\xcc\xc1\x2a\x6c\xc9\x73\xe3\ \x8d\x37\x72\xc6\x19\x67\xf0\xfa\xeb\xaf\xe3\x79\x1e\xbb\x76\xed\ \xc2\xb6\x6d\x74\x5d\x67\xc2\x84\x09\x14\x0a\x05\x74\x5d\x0f\xc0\ \xc3\xe6\xe6\x66\x66\xce\x9c\xf9\x1d\xe0\x3b\xfb\x93\xfd\xb6\x6c\ \xd9\x82\xa6\x69\x48\x45\xa2\xc7\x61\xef\xcb\x45\x46\xb6\x9a\xa4\ \xba\x46\x11\x6c\x3b\x20\x23\x51\xb6\x7b\xaa\xea\x17\x75\x96\x8a\ \x2e\xb7\x9c\xf9\x3b\xfe\xfe\xa9\xf3\x28\x39\x2e\x12\x9f\x6c\x21\ \x3c\x40\x0a\xf4\x88\x43\x48\x35\x68\x8c\x4e\x22\x59\x1c\x42\x11\ \x51\xf0\x14\x6c\xc7\x0a\xd4\x5f\x99\x94\x7d\x48\x6d\xc8\x3d\xf7\ \xdc\xc3\x43\x0f\x3d\x44\x2e\x97\x7b\x87\x7e\x06\xd8\xb9\x73\x67\ \xf0\xbb\x35\x6b\xd6\x50\x5d\x5d\x1d\xfc\xbd\x8c\xf5\x8c\x94\x52\ \x1c\x39\xa5\x82\x62\xc9\x66\xf6\xe4\xe3\xd8\x53\xb3\x09\x67\x76\ \x16\xcf\x93\x98\x7b\x2a\x18\x7d\x31\x86\x50\x65\x90\xcc\x8a\x46\ \xa3\x41\x3e\x5f\x08\xe1\x97\xd2\xd9\x36\x93\x27\x4f\xc6\xb6\x6d\ \x14\x04\x3b\xd4\x3d\x1c\x73\xa1\x86\x90\x0a\xd2\x12\x78\x25\x15\ \x27\x1e\xc2\xea\x37\x70\x86\x0d\x9c\xb1\xce\x37\xc7\x1c\x73\x0c\ \x97\x5e\x7a\x29\xf7\xfd\xea\x3e\xe4\x28\x48\x75\x90\xba\x29\x5e\ \x60\x13\x4c\xd3\x24\x1a\x8d\x32\x86\x00\xa3\x69\x2a\x02\xbf\xe6\ \xb1\xae\xaa\x96\x82\x95\xc3\x71\xfc\x66\x39\xa5\x52\x09\x45\x0a\ \x42\x02\x6c\x2d\xc1\x8f\xff\xf0\x7f\xf9\xe5\xa5\x4f\x70\xd3\xeb\ \x17\x61\x78\x31\xaa\x23\x31\x4c\xb3\x97\x52\xc9\x0b\xec\xe9\xc1\ \x00\x8f\xef\x05\x5c\xdc\x65\x9a\xa6\x61\x59\x56\xcd\x3e\x86\xe2\ \x81\x30\xc5\xdb\x4b\xce\xb2\xd9\xec\x01\xb9\x0d\xff\xf7\x1e\x9e\ \x27\x39\x2e\x74\x39\x2d\x0d\x1a\x67\x4c\xba\x84\x5f\xbc\xfe\x9f\ \xcc\x98\xda\xcc\xaa\x3d\xab\xb0\x2d\x1b\xa1\xf9\x35\x29\x75\x8d\ \x31\x42\x5e\xa5\xaf\xd3\x14\x49\xae\x90\x65\xfc\xf8\xf1\x44\xa3\ \x51\xb2\xd9\x6c\xd0\x6d\x21\x57\x59\x40\xd3\xab\x89\x29\x93\x58\ \x38\xf7\x14\x5e\xda\xfd\x30\xce\x38\x17\x31\x2f\x41\xfc\xd5\x28\ \xf9\x2d\x7e\xb1\xcd\x1d\x77\xdc\xc1\x8a\x15\x2b\xf8\xc1\x7f\xfe\ \x80\x5f\xfd\xea\x57\xcc\x91\x47\xd0\xdd\xdd\xcd\xac\x59\xb3\x78\ \xe1\x85\x17\x98\x34\x69\x12\x96\x65\xa1\x69\x1a\xa1\x50\x88\x54\ \x32\x35\x56\x6b\x28\xf6\xab\x49\x71\xb0\x6c\xcb\x2f\x83\x70\xa1\ \xb2\x14\xc2\xf6\x74\x3a\xcc\x27\x59\xdd\x73\x18\x55\x15\x55\x0c\ \xe6\x77\x93\x1f\x74\x89\xf7\x25\xb1\x0b\xfb\x52\xbe\x07\x43\x39\ \x3d\x68\x81\x8c\x8c\x8c\x9c\x54\x2c\x16\x7f\x72\xce\x39\xe7\x5c\ \x7d\xdb\x6d\xb7\x91\xcd\x66\x79\xf8\xe1\x87\xd9\xb5\x6b\x17\x8a\ \xa2\x90\x4c\x26\x89\x44\x22\x28\x8a\xc2\xe8\xe8\x68\x90\xf5\x4b\ \xa5\x52\x94\x4a\xa5\x00\x5a\x70\xa5\x47\xa9\xe8\x71\xf1\x79\x7f\ \xcf\x4d\x2b\xfe\x1e\xad\x66\x02\x53\xab\x8e\x61\x76\x43\x2b\x2b\ \xe5\x2a\x4c\xcb\x44\xb8\x3e\x30\xd9\x74\x41\x96\xaa\x89\x05\xec\ \x11\x03\x77\x30\x02\x1d\x02\x67\xd8\x0b\xa8\x48\xb6\x6d\xe3\x4a\ \xdf\x08\x49\x04\xdf\x3c\xe5\x5e\x7e\xf4\xf2\xbf\xf2\xef\x67\x3c\ \xc4\xea\x8d\x6f\xb2\xc9\xf9\x35\x43\x76\x1f\xb6\xed\x2f\xe6\xd3\ \x4f\x3f\xcd\x82\x05\x0b\x68\x6f\x6f\x67\xe7\xce\x9d\xc1\x02\x25\ \x12\x09\x4a\xa5\x12\x89\x44\x22\x48\x3b\x17\x0a\x05\xca\x0d\x6c\ \x5c\x69\x32\x9a\x1e\xa5\xda\xa8\x23\xed\x24\x02\xc6\x0d\x02\x94\ \xbc\xa0\x30\xe2\x91\x1b\x76\xb9\xf5\xd9\x1b\x49\xec\x70\x49\x75\ \x3a\x20\xfd\xba\xf7\xb2\x0c\x0e\xb6\xa0\xe7\x3d\xa9\x2c\x21\x84\ \xbe\x70\xe1\x42\xd6\xad\x5b\xc7\x39\xe7\x9c\xc3\xe1\x87\x1f\x4e\ \x3e\x9f\xc7\xf3\x3c\x5a\x5b\x5b\x29\x14\x0a\x98\xa6\x49\x3a\x9d\ \x26\x1e\x8f\x53\x5b\x5b\x1b\x64\x01\x83\x1a\x13\xc5\x1b\xd3\xd3\ \xba\x8f\xcc\x0a\x85\xa1\xec\x00\xb9\xde\x4d\xfe\xfb\x4c\x2b\x38\ \x21\xb8\x82\x29\x91\xe3\x08\x1d\xee\xb2\xab\x61\x33\x66\x2c\xcf\ \xf0\x23\x3a\x20\x83\x40\x4f\x91\x3e\x15\x35\x1d\xf7\x88\x86\x2b\ \x58\xd6\xf9\x04\xd7\x6a\x37\xd3\x50\x57\x83\xd5\x6f\xe1\x38\x2e\ \xa6\xe9\x43\x33\x77\xde\x79\x27\x77\xdc\x71\xc7\x1f\xbd\xbf\xd1\ \xd1\xd1\x03\x7e\x8e\x55\x8f\xe5\x5c\xa2\x3a\xff\xe7\xf7\x9f\xa5\ \x36\x34\x89\xed\xc5\x5e\xa2\xd1\x28\x86\x61\xd0\xd4\xd4\x44\x6a\ \x73\x8a\x2d\x9b\xdd\x31\xb7\xdb\xef\x68\x54\x15\xf3\x0e\xa0\xd6\ \x96\x0b\x98\x0e\xb9\x40\xa4\x94\xfc\xf6\xb7\xbf\xa5\x9c\x60\xea\ \xe8\xe8\x08\x20\x8b\xb2\x8d\x10\x42\x50\x28\x14\x70\x5d\x37\x10\ \x56\x59\x3f\x03\xb8\x61\x8f\x48\x58\xe7\xe5\x0d\xcb\x09\x51\x4d\ \x6d\xb4\x9e\x81\x4c\x17\x67\x55\x7f\x9c\xad\x72\x07\xa6\x55\x42\ \xf1\x7c\x20\xb3\x3a\x7d\x2c\xe7\x1f\xfd\x45\x5e\x5a\xbd\x8e\x71\ \xd2\xe3\xf4\xd9\xa7\xf0\x7d\xeb\x76\xc2\xaa\xb1\x8f\x94\x37\x56\ \x61\xa8\x28\x82\x03\x6d\xa6\xc0\xf6\x8a\x63\x27\xc9\x25\x95\x4a\ \xf9\xe9\x80\xb1\x60\x50\x4a\xe9\x7f\xaf\xf9\x7c\xa2\xb0\x16\xa5\ \x60\x67\x51\x84\x8a\x6b\xfa\x0b\x97\x4e\xa5\x70\x5a\x1c\x4c\xa7\ \x84\x16\xf5\xd8\x38\xb4\x02\xd7\x11\x34\x36\x36\x72\xf7\xdd\x77\ \xe3\x79\x1e\xab\x57\xaf\x66\xd5\xaa\x55\xb4\xb6\xb6\xb2\x66\xcd\ \x1a\x8e\x3c\xf2\x48\x36\x6d\xf2\x37\x57\x5d\x5d\x1d\xf9\x7c\x9e\ \xde\xde\xde\x83\xe6\xff\xbe\x57\xac\x58\xd5\x34\x8d\x67\x9e\x79\ \x46\x0a\x21\x84\x22\x94\x80\x3d\xe8\x4a\x9f\xaf\xa4\x29\x21\x3f\ \x3f\xae\x86\x70\x1c\x87\x8a\x8a\x0a\xa4\x94\x41\xe9\xb1\xa5\xd8\ \x68\xba\xe0\xc1\xed\xff\xce\x2d\x67\x3f\xce\xda\xe1\x27\x08\x35\ \xf7\xd3\x93\xdf\x82\xed\x59\x14\xf2\x05\x14\xdd\x8f\x01\x8e\x9b\ \xbe\x80\xee\xd4\x76\xde\xec\x5f\xc7\xc2\x19\xa7\x11\x56\x8c\xb1\ \xb2\x33\x11\xb4\xf8\x50\xa4\x40\x22\xa8\xad\x0f\x91\xce\x67\x38\ \xf7\x88\x7f\x20\x51\x1c\x20\x97\x2b\x31\xb5\xf6\x28\xda\x9d\x3f\ \xe0\xba\xd2\xf7\xf2\x5c\x41\xa9\x26\xc1\xb4\xd8\x5c\x4a\xa5\x12\ \x03\x6e\x8a\x19\x5f\x34\x99\x56\xb1\x90\x8b\xcf\xf8\x12\x35\x6a\ \x2b\x37\x3d\x7e\x0d\xcf\x5e\xbf\x0e\x0f\x5f\xe0\x91\xa2\xce\xc0\ \x1b\x26\x99\x5e\x87\xd4\x9e\x02\xba\x5a\x5d\xce\xed\x30\x77\xee\ \x5c\xaa\xaa\xaa\xc8\xe5\x72\x74\x74\x74\xa0\xeb\x3a\xb1\x58\x0c\ \x29\x25\xc9\x64\x12\xd3\x34\x69\x6b\x6b\x63\xdb\xb6\x6d\x1f\x8c\ \xca\x52\x14\xe5\xd1\x37\xde\x78\x63\xda\xac\x59\xb3\x4e\x2b\x14\ \x0a\x58\xd2\x45\x9f\x9e\xa7\xae\xaa\x96\xb3\xe7\x7e\x8e\x92\x69\ \xb1\x74\xfb\x13\x9c\x39\xfb\x1c\x96\xee\xfe\x2d\xe9\xf5\x61\x0a\ \x85\x02\x42\x88\x60\x87\xe4\x85\x87\xed\x5a\x84\xaa\x3c\xfe\xed\ \xf7\x17\xb1\x78\xfe\xd9\x64\xf3\x29\xd6\xc7\x57\xb2\xf3\xe5\x2c\ \xd9\x82\x19\xec\xf4\x92\x69\xe2\x58\x2a\xae\xe3\x91\x2b\xa5\xf0\ \x1c\x1f\xcd\x95\x78\x68\x9a\xe6\xcf\x2d\xfd\xb8\x06\xe1\x71\xcd\ \xd3\xe7\xf3\xc3\xf3\x9e\xe2\xc6\xd7\x2f\x24\x53\x8a\xa3\xe9\x1a\ \x56\xc9\x22\x97\xdb\x97\x2b\x99\x14\x9d\x46\x3e\x9f\xf7\x53\xb7\ \xd8\xd8\xa6\xcb\xac\xc6\x45\x3c\xd9\xfe\x33\x0e\x53\x3f\xc1\x31\ \x0d\x8b\x79\x46\xae\xa6\xbe\xa1\x9e\xe3\x8f\x3f\x9e\xad\x5b\xb6\ \x12\xff\x83\x83\xe5\x98\xb8\x99\x0c\xd1\x6a\x9d\x64\x32\xc9\xd7\ \xbe\xf6\x35\x5a\x5b\x5b\xe9\xec\xec\xdc\x57\x2e\x27\x25\x3b\x76\ \xec\x08\x16\x3f\x95\x4a\x05\x2c\x99\x3f\x06\xe9\xfc\x45\x02\xc9\ \x64\x32\x2f\x55\x55\x55\x9d\xdc\xda\xda\x7a\x5a\x32\x99\xa4\x88\ \x45\xf5\xc9\x3a\xc7\x34\x9e\xc9\xdc\x63\x9a\x59\xb7\xb1\x93\xef\ \x7f\xe6\x6e\x8e\x9b\x79\x0c\x43\xcf\x2c\x63\x47\x4f\x08\xe1\xaa\ \xa4\x52\xa9\xc0\x80\x46\x4a\x2e\xd9\x21\x87\xc1\x8d\x16\xa3\xdb\ \xf6\xb0\xfa\x96\xbb\x83\x5e\x55\x4d\xa2\x99\xa6\xb9\xfb\x3e\xef\ \xf7\x0f\x3f\x05\x63\xcd\x5a\xfb\x78\x09\x80\x09\x13\xc7\x53\x2c\ \x16\xc9\x66\xb3\xe4\xf3\x79\x84\x14\x38\xa6\xf0\x85\x5c\x6d\x71\ \xe3\x6b\x7f\x47\x24\x5c\x41\x41\xd5\x48\x76\xda\x74\xae\x4c\x21\ \x9d\x80\xe0\xc7\xb8\xea\x71\xf4\xf7\xf7\xfb\xec\x79\xd5\x19\xab\ \xf8\xf2\xf1\x32\xd7\xf3\x48\x17\x13\xa8\xaa\xc6\xaa\x55\xab\x78\ \xf1\xc5\x17\xf9\xd2\x97\xbe\xc4\xb2\x65\xcb\xa8\xa8\xa8\xe0\xfe\ \xfb\xef\xa7\xad\xad\x8d\xae\xae\xae\xc0\x3d\xae\xa9\xa9\x39\xa8\ \xb5\x8b\xc7\xe3\x1f\x0c\x0d\x48\x55\xd5\x69\xe5\xf6\x4c\xb6\xf0\ \x6f\xa8\x52\x8f\x61\xba\x45\x4c\xa7\xc4\x50\xa6\x97\xbe\x6c\x2c\ \x80\xeb\x71\xf6\xf9\xde\xd7\x5e\x7b\x2d\x4b\x96\x2c\xa1\xe7\xbe\ \x04\xae\x6b\x13\x05\xf4\x4a\x2b\x28\x1c\xdd\x59\xe8\xe7\x88\xcf\ \x38\x54\x84\x35\xa4\xa9\x62\x27\x74\xdc\x11\x03\xab\x3f\x8c\x97\ \xd5\x10\x9a\x0c\x82\xc6\x6c\x36\xeb\xef\x4c\xd7\x23\xdc\x2d\xd8\ \xf6\xbb\x1c\xe9\xbd\x0e\x4e\x21\x81\x5d\x90\x38\x45\x89\x94\xa0\ \xa8\x6a\x50\xb8\x67\x84\x22\x6c\xea\x5a\x45\xb5\x6c\xf6\xf3\x1d\ \x86\x87\xae\x18\xec\x18\xdd\xc8\xf1\x47\x9f\xc0\x78\xed\x70\x36\ \xed\x5e\x13\x70\xbd\xda\xda\xda\xe8\xee\xee\xf6\x05\x3f\x86\xd8\ \x0e\x0c\x0c\x70\xc3\x0d\x37\x30\x3a\x3a\xca\x93\x4f\x3e\x19\x54\ \x28\xe7\x72\xb9\xe0\x24\x94\x49\xe5\xb5\xb5\xb5\xe5\x62\xa4\xd1\ \xe1\xe1\xe1\x85\x8d\x8d\x8d\x66\x6f\x6f\xef\xa1\x15\x88\x94\xf2\ \xb0\x80\x9d\xa8\xb8\xa8\x42\x63\xb4\x38\x40\x53\x74\x2e\x35\x15\ \x69\xb2\x56\x1a\x5d\x0d\xa3\xa0\x60\x5b\x26\xd2\x11\x38\x8e\xc3\ \x33\xcf\x3c\xc3\xe8\xe8\x28\x27\x9f\x7c\x32\xbf\xff\xfd\xef\x03\ \x2c\x6a\xd9\xb2\x65\x81\xc1\xef\x2d\xc5\x59\x34\x7e\x1c\x85\xac\ \xc7\x71\xd3\x3f\xce\xa6\xc1\x65\x38\x33\x72\x54\xa9\x92\xec\xe6\ \x0a\x32\xaf\x57\xfb\x86\x58\xf1\x8b\x7a\x16\x2f\x5e\xcc\xec\xd9\ \xb3\x79\x69\xc9\x4b\x78\x19\x09\x8c\x42\x05\x58\x9a\x85\x88\xf9\ \x0b\xa8\xeb\x3a\x99\x4c\x06\xc7\x71\xd0\x74\x85\x64\xb7\x83\x5e\ \x5f\xf4\x93\x55\x38\x78\x9e\xc1\x40\xe8\x55\xc2\xc5\xd3\xc9\xd7\ \xf6\xb0\xdb\x7a\x19\x5d\x35\xb8\xe8\xa2\x8b\x98\x3d\x7b\x76\xd0\ \xe5\xc7\xf3\x3c\x86\x86\x86\x98\x3a\x75\x2a\xdf\xf8\xc6\x37\x10\ \x42\x10\x0a\x85\xde\x35\x07\x53\x2e\x32\xcd\x64\x32\xd4\xd4\xd4\ \x50\x28\x14\x9c\xd1\xd1\xd1\xed\x1f\x14\x51\x4e\x09\x1a\x98\xa9\ \x7e\x6e\xb5\x50\xb9\x8d\xb6\xca\xeb\x38\x62\xf1\x09\x5c\xf3\xe4\ \x05\xb4\x4d\x6c\x06\x01\x96\x65\xe2\x8d\x61\x39\x6f\xbe\xf9\x26\ \x8d\x8d\x8d\x64\x32\x99\x72\xd3\x64\x86\x87\x87\x0f\xf0\xc0\x84\ \x10\x94\x6c\x93\x0b\x5a\x6e\x65\xc4\xdb\xc0\x3f\x2f\xb8\x9b\x97\ \xda\x97\x90\x8e\x6c\xa5\xdd\xde\x15\xf4\x16\x29\x0b\xe4\xf2\xcb\ \x2f\x27\x97\xcb\x71\xda\x69\xa7\x71\xfb\xed\xb7\x73\xc2\x89\x0b\ \xe8\xee\xee\xe6\xc8\x23\x8f\xe4\xd1\x47\x1f\x65\xf2\xe4\xc9\x7e\ \x7b\xc1\x54\x8a\x54\x2a\xc5\xe0\xe0\x20\x95\x95\x51\x32\x99\x0c\ \xa6\x69\x52\xf0\xfc\x32\x08\x4f\x95\xfc\xf4\x8d\x7f\xe2\xaa\x53\ \xbf\x8d\xed\x94\x30\x4d\x18\xd7\x54\x4b\x5f\x5f\x5f\xa0\x6a\x35\ \x4d\xc3\x30\x0c\x7a\x7a\x7a\x10\x9a\x40\xd5\xfc\x66\x01\x39\x33\ \x43\xa5\x51\xed\x57\x69\x45\x4d\xec\x3c\x63\x88\xf4\x81\xbd\xc5\ \x3e\x30\xe6\xa2\x10\x82\x44\x22\xe1\xe7\x05\x34\x49\xc9\x8a\x61\ \xab\x70\xe5\x6f\xcf\xe6\xd1\xaf\x6c\x44\x8b\x58\xdc\xb7\xe9\xdb\ \x78\x2e\xc4\x87\x92\x41\x50\x74\xeb\xad\xb7\xbe\x23\xdf\xbd\x3f\ \x1b\xdd\x87\x46\x60\x78\xa0\xc4\xd9\xe7\x9e\xc6\x95\xcf\x5c\xcf\ \xe2\x19\x17\x33\xa9\x76\x06\x03\xa4\x91\xde\xce\xa0\xb7\x48\xb9\ \x8e\xbc\xbb\xbb\x9b\x13\x4f\x3c\x91\xdf\xfc\xe6\x37\x01\x15\xb5\ \xdc\x4c\x40\x4a\x19\xb4\xf7\xd0\x75\xdd\x8f\xac\xc7\x3e\xaf\x6c\ \x84\x2b\x8a\x1e\xa5\xb8\x47\xcf\xae\x12\xf1\xad\x16\xff\xf0\xdd\ \xaf\xfb\xf9\x7b\x05\x46\x46\x46\x0e\x70\xf7\xcb\xc5\xa4\x0a\x82\ \xf8\x94\x0c\xc7\x9e\x59\xc5\xaf\xfe\x76\x25\x67\xde\x39\x85\x67\ \xae\x58\xc1\xe6\xce\x0e\x9e\xea\xbd\x91\xad\x8f\x8f\x32\xba\xc9\ \x37\xde\x86\x61\xb0\x7d\xfb\x76\x1a\x1b\x1b\x3f\x38\x81\x94\x17\ \x58\x51\x14\x34\x4f\xa2\xea\x02\xd7\xf1\x60\x54\x72\xca\xa5\x87\ \x93\xeb\xf2\xb0\xf2\x12\x33\xe3\x05\x1c\xa5\x62\xb1\x28\xcb\xb5\ \xea\x6f\x17\xae\x10\x62\xdf\x0e\x32\x7c\x17\x7a\xff\xbf\xdb\x8e\ \xcd\xae\xec\xc6\x31\xd6\xbc\x15\xb0\x91\x15\x45\xe1\x5b\xdf\xfa\ \x16\xd1\x68\x34\x20\xc1\x95\xe7\xdf\xbc\x79\x73\x80\x18\xec\xff\ \x99\xe5\xfa\x12\xc3\x30\xb8\xfa\xea\xab\x59\xbe\x7c\x39\x83\x2f\ \x0e\xe2\x7a\x1e\x21\xc7\xa6\xa9\x51\xee\x6b\xed\x37\xa6\xa6\xca\ \xbd\x7c\xcb\xc1\xad\x22\x05\x52\x08\x6a\xea\x74\xe2\x99\x11\xae\ \x38\xe9\x46\xfa\xb3\xbb\x18\x49\xa4\x38\x7e\xe2\xd9\xbc\x61\xff\ \x9c\x32\x85\xab\x6c\x53\xde\x0b\xe9\xe1\x7d\x09\x44\x08\xc1\xb4\ \x69\xd3\x48\xa5\x52\x0c\xdc\x6b\xd2\x63\x9a\x08\x45\xe2\xe7\x6d\ \xfd\xc0\x24\xa4\x4a\xa4\x22\xcb\xa4\x69\x31\x30\x30\xb0\x6c\x64\ \x64\xe4\x94\xb7\xcf\x35\x67\xce\x9c\xb8\x69\x9a\xe3\x84\x10\x60\ \x40\x4d\x4d\x98\x3d\x7d\x7d\x78\x8e\x82\xa6\xe8\x64\xcd\x24\x4d\ \x91\x36\x76\xba\x71\x4c\xd3\x0e\xba\xef\xd8\xb6\x4d\x34\x1a\x0d\ \xd2\xb6\xfb\x7b\x72\x65\xb8\xfb\x80\x93\xe8\x82\x65\xfa\xc4\xed\ \xab\xae\xba\x0a\x21\x04\x0f\x3e\xf8\x20\xdf\xfe\xf6\xb7\xe9\xea\ \xea\x62\xe6\xcc\x99\x8c\x8c\x8c\x60\xdb\x36\x4d\x4d\x4d\xbc\xf2\ \xca\x2b\x84\x42\x21\xc6\x8f\x1f\xcf\xba\x75\xeb\xb0\x6d\xdb\xc7\ \xe6\x3c\xb0\x2c\x70\xa5\xcd\xb5\x2f\x9e\xc7\xff\x3d\xf5\x29\xee\ \xdd\xfc\xcf\xf4\xa4\xde\x42\x4b\xa8\x94\x0a\x26\x99\x8c\x79\xc0\ \x26\x78\x2f\x6c\xc6\xf7\x63\xd4\x39\xf2\xc8\x23\xb9\xec\xb2\xcb\ \x38\xe2\x88\x23\xb8\xf9\xe6\x9b\xe9\xec\xec\xa4\xa6\xa6\x86\x91\ \x91\x11\x74\xdd\x6f\x2e\x39\x38\x38\x88\xae\xeb\x68\x9a\xc6\xe0\ \xe0\x20\xe9\x74\xda\xfb\x63\x89\xa3\x52\xa9\xe4\xef\xc8\x2a\xc9\ \xb8\x71\x95\xfc\x68\xd9\xbf\x70\xd7\xdf\x2d\xe3\x97\x6f\x5c\xcf\ \x9b\xa9\x2d\x1c\x31\x69\x0e\xae\x37\xc6\x0e\x1c\xb3\x21\x53\xa7\ \x4e\x0b\xe2\x15\x55\x55\x59\xb1\x62\x05\xcd\xcd\xcd\xef\xea\xeb\ \xab\x21\x08\xcd\x4d\xd2\xb7\xb2\x48\x21\xe9\xb0\x6b\xd7\x2e\xae\ \xbc\xf2\x4a\xf6\xee\xdd\x4b\xb1\x58\xa4\xb1\xb1\x91\xca\xca\x4a\ \x74\x5d\x67\xd9\xb2\x65\xd4\xd5\xd5\xd1\xda\xda\x4a\x4f\x4f\x4f\ \x50\x4e\x5d\x2c\x16\x83\xb8\xc7\x49\x0b\x92\xfd\x7e\x31\xe9\xbf\ \x3e\x79\x3e\x15\x46\x98\x6c\xce\x25\xdd\x63\xd2\xb9\x22\x8b\xaa\ \xa8\x07\x6c\x9a\xb1\xcd\x11\x06\x98\x34\x69\x92\xdd\xdd\xdd\xed\ \x1e\xb2\x72\x84\xda\xda\xda\x35\x4d\x4d\x4d\xc7\x1d\x2c\xa7\xb6\ \x3c\x5c\xd7\xa5\xbf\xbf\x7f\xc6\xc8\xc8\xc8\xce\xfd\x7f\x3f\x7d\ \xfa\xf4\x78\xa9\x54\x1a\xa7\x28\x0a\xc3\x13\x5c\xfe\xf1\x5b\x13\ \xb1\x2c\x97\x9a\xc2\xb1\x1c\x35\x67\x0a\x4b\x77\xff\x06\x4d\xd3\ \x58\xf5\x83\x04\xa9\x2e\x5f\x17\x54\x56\x54\xb1\xe8\x96\x2a\x86\ \xee\x6f\x44\x3a\xbe\x5a\x58\xbb\x76\x2d\xd1\x68\x94\x70\x38\x1c\ \x30\xef\xcb\x69\x5d\xc7\xb5\x31\xa2\x21\xdc\x92\x0c\x9a\x0b\xec\ \xcf\x52\xf9\x53\x19\xd2\xe6\xe6\xe6\xfd\xaa\x7a\x64\x90\xb3\xf9\ \x63\x9b\xb5\xa7\xa7\x87\x6d\xdb\xb6\x21\x84\xa0\xb2\xb2\x32\x28\ \x8e\x2d\x6f\xbe\xb5\x6b\xd7\x7e\x29\x99\x4c\x3e\x70\x48\x4f\x88\ \x61\x18\xcc\x98\x31\x03\x80\x7e\x33\xc1\xe4\xb3\xf3\x44\xc2\x1a\ \xc2\x34\xb0\x87\x42\x38\xc3\x61\x9c\xe1\x03\x1b\x59\x46\x22\x11\ \xee\xbd\xf7\xde\xf4\xbb\x4d\x59\x26\x97\x85\x73\x50\xca\x78\x0c\ \x6d\xb1\xe8\xd8\xf3\x0a\xcf\xdf\xb9\x04\xcf\x14\xd8\x79\x0f\xd7\ \xf4\x8d\xf1\xbe\xbc\xb9\xc0\x76\x1c\xa4\xed\xeb\xfa\x39\x73\xe6\ \xd0\xda\xda\x4a\x2c\x16\x63\xdb\xb6\x6d\x8c\x8e\x8e\xd2\xd4\xd4\ \xc4\xd0\xd0\x10\xfd\xfd\xfd\x78\xa6\xaf\xba\x4c\xd3\x0c\xe8\x47\ \x0a\x02\xc7\x94\xd8\xb2\x84\x42\x08\xcb\x2d\xa1\xab\x1a\x48\x05\ \x4d\xd5\x28\x95\x8a\x0c\x0d\x0d\x21\x10\xac\x2c\x6d\xe5\x9c\xcb\ \x62\x28\x52\xe0\x9a\x80\xa5\xfb\xd7\x36\x60\x50\xda\x5d\x81\x97\ \xf5\xaf\xad\x50\x28\x50\x5b\x5b\x1b\x54\x1b\x47\x8c\x8a\x20\xce\ \x8a\x46\xa3\x7f\xd6\xe3\x7a\x5f\x02\x29\xe7\xb4\x15\x04\xa3\x5a\ \x9c\xf9\x2d\x61\x32\xd9\x34\xed\x77\x58\x4c\xac\x99\x82\xeb\x65\ \x11\x8a\xc0\x72\x1d\x74\x5d\x20\x4d\x0d\x44\x82\xb3\xce\x5c\x3c\ \x54\xb6\x01\x65\xa3\xd7\xd5\xd5\x45\x28\x14\xe2\xf4\xd3\x4f\x67\ \xfd\xda\x75\xb4\xdf\xec\x20\x85\x0e\x42\x47\x93\x6e\xd9\xd1\xc6\ \x88\x2a\x81\x8b\x5c\x66\xa2\x58\xa6\xef\x56\xab\xaa\xca\xc0\xc0\ \x00\xae\xeb\x52\x59\x59\x49\x26\x93\x09\x58\x1e\x8e\xe3\x10\x0e\ \x87\x39\xef\xbc\xf3\x48\xa7\xd3\x2c\x5f\xbe\x3c\xc8\x08\x0e\x47\ \x8b\x9c\x7e\x55\x15\xc7\x1a\x57\xd1\x30\xc5\x64\x51\xeb\x17\xb8\ \x7f\xc5\x4f\xf9\xf8\x91\x0b\xb9\xf3\xb9\x6f\xd3\xff\x98\x87\xa5\ \xfa\x0d\xd2\x0a\x58\x18\xba\x42\x23\x47\x72\xfa\x51\xe7\xf0\xe4\ \xb6\xbb\x50\x9d\x4a\x72\x2d\xbd\x8c\xe4\x25\xa5\xd1\x48\xe0\x31\ \x1e\x73\xcc\x31\x6c\xdf\xbe\x9d\x7c\xa6\x80\x31\x37\x49\x69\x57\ \x04\xa1\xec\xf3\x0e\x0f\xa9\x40\xaa\xab\xab\x03\x86\xa0\x82\x00\ \x4d\x62\x3b\x2e\x7f\x33\xf1\x26\x12\x8d\x77\x05\xbb\x20\xe5\x66\ \x19\x77\x41\x9c\x71\x0d\x3a\x4e\x1e\xec\xa1\x0a\xdc\x11\x03\x7b\ \xd0\x40\x16\x55\xdc\xbc\x8a\xa6\x69\x94\x4a\x25\x7e\xf3\x9b\xdf\ \x00\x70\xc6\x19\x67\xb0\x7c\xf9\x72\x1c\xc7\x21\x1e\x8f\x53\x53\ \x53\x43\x4f\x4f\x0f\x8b\x16\x2d\x62\x64\x64\x84\x35\x6b\xd6\x10\ \x8d\x46\xd9\xbb\xa7\x1b\x81\xc0\xb2\x6c\x3c\x9b\x20\x3a\x0e\x87\ \xc3\xa4\x52\xa9\xe0\x5a\xfb\xfa\xfa\x08\x87\xc3\x58\x96\x45\x22\ \x91\x60\xca\x94\x29\x81\x6b\x2c\x84\xc0\x0d\xbb\xa8\x8a\xc6\x26\ \xef\x7e\x2e\x09\xdd\xce\x53\xbb\x7f\xc4\x4e\x6f\x29\x3b\xdf\x78\ \x0e\x4f\x2a\x7e\x1a\xda\x94\x7e\x4f\x47\x43\x30\x38\x94\xe3\x3b\ \x17\xdc\xca\xff\x7e\xf6\x0c\xee\xfe\xfc\x12\xf6\xf4\xf7\xf0\x74\ \xef\xad\x0c\xda\x5d\x81\x0a\xf4\x3c\x8f\x78\x3c\x3e\x86\xe1\x29\ \x78\x8e\x87\x6b\x9a\x08\x95\x03\x02\xc9\xbf\x98\x4a\x1a\x90\x64\ \x0d\x23\xd8\x09\x25\xd3\xf4\xdb\x7c\xdb\x06\xe7\x9d\xb8\x98\xbc\ \x99\x09\xe8\xa1\x23\x4e\x9a\x8a\x50\x08\x33\xab\xb0\x70\xca\xf9\ \xd4\x4e\xd1\x88\x1e\x95\xa1\xf6\xec\x11\x2a\x4f\x89\x07\xdd\xb1\ \xcb\x5e\xd0\xc8\xc8\x08\xe1\x70\x18\x45\x51\x98\x33\x67\x0e\x86\ \x61\x30\x69\xd2\x24\x6c\xdb\x0e\x3a\x44\x9c\x78\xe2\x89\xa4\xd3\ \xe9\x31\x57\x52\x39\xa0\x4d\xb9\xeb\xba\x41\xcb\xf0\x72\xb3\x9c\ \x78\x3c\x1e\xd4\x3d\x76\x74\x74\xf0\xec\xb3\xcf\xa2\xaa\x6a\xd0\ \x81\xa2\x50\x2c\x62\x3b\x16\x28\x36\x77\xb4\x5f\xc6\x70\xb6\x0f\ \x89\x24\x3f\xe2\xb2\xfe\xde\x38\xae\xb7\xaf\xeb\xb5\xa2\x28\x8c\ \x0c\x98\xc4\x6a\x42\x28\xaa\x4b\x44\xaf\xa4\xa6\xb2\x86\x78\xae\ \x2f\x48\x96\x95\x89\x7f\x5d\x5d\x5d\x7e\x73\x4e\x55\x41\xba\xde\ \x01\x34\xd7\x3f\xe7\x02\xbf\x2f\xb7\xb7\xac\x3a\x04\x7e\xa0\x55\ \xf6\x2a\xf6\xb5\xff\xb6\x71\x15\x17\x45\x15\x7c\x7a\xd2\x37\xc9\ \xc8\x5d\x5c\xbf\xe8\x31\x1e\x5d\xfd\x20\xcd\x93\x74\x9e\x58\x71\ \x5f\x70\x93\xd1\x68\x94\x2b\xaf\xbc\x92\xc9\x93\x27\xd3\xdf\xdf\ \x8f\xeb\xba\x2c\x5d\xba\x14\xcf\xf3\x68\x6f\x6f\xc7\x71\x9c\x40\ \x1d\x95\x03\xcb\x90\x66\x04\xf1\x8b\x6b\xf9\x49\xa0\x50\x28\x44\ \x5d\x5d\x1d\x42\x08\x6a\x6b\x6b\xdf\x76\xc1\x63\x24\x03\x45\x04\ \xa5\xd0\x9e\xe7\x51\x9d\x51\xe9\x5a\x52\x20\xd7\xed\x62\x65\x3d\ \xd6\x14\x56\xe2\x14\xc1\xb3\x25\x8a\x2a\x70\x0d\x77\x5f\x5b\x43\ \x14\x74\x5d\xc1\x19\xe3\x35\x83\xff\xf4\x20\x04\xb8\xae\x87\x69\ \xfa\xfc\x33\xd7\x71\xa8\x6d\xae\x27\x99\x8f\x13\x8a\x99\x84\x2a\ \x55\xd2\xb6\xdf\x37\xf2\x60\x4a\x15\xde\x57\xa4\x5e\x5e\x78\x81\ \xdf\x30\xc0\xf1\x6c\x4a\xa6\x89\xa6\xe8\xfb\x0a\x60\x0c\x0f\x4f\ \x0a\x5a\xab\x67\xf0\x9b\x3d\xbf\xa0\x2d\x74\x22\xf5\x91\x16\x0c\ \x25\x83\xf4\x08\x04\x52\x2a\x95\x64\x28\x14\x12\x9d\x9d\x9d\xfb\ \x47\xef\x52\x08\x21\x5c\xd7\x45\xda\x60\x7b\xde\x98\x43\xa8\x82\ \x02\x96\x63\x63\x3a\x92\xd1\x91\x04\x72\x8c\x65\x5f\xce\x4c\xe6\ \xf3\xf9\x75\x1d\x1d\x1d\x0f\xd6\xd7\xd7\xff\x58\xd3\x34\xbf\x0f\ \x7c\x9d\xc7\xe1\x0b\x2b\xc0\xae\xa2\x32\x57\x45\x75\x75\x35\x97\ \x5c\x72\x09\xcb\x97\x2f\x67\x78\x70\x18\xc5\xc9\xe1\x86\x5c\x3c\ \xcd\xc3\x8d\xba\x01\xe4\x51\xde\x78\xca\x58\x43\x9c\xa9\xd3\x6b\ \xd8\xd1\xb5\x97\xd3\x0f\xfb\x3b\xde\x1c\x5e\x4d\x32\x51\x64\x76\ \xc3\x09\xbc\xe5\xfc\x01\xcb\xf2\xb3\x86\x85\x7c\x81\x07\x7f\xf9\ \x30\x3f\x79\xea\xfb\xfc\xcd\x27\x4e\xe5\x67\x8f\xfd\xc4\xcf\x82\ \xaa\x7c\x30\x27\x44\x4a\xa9\x4a\x29\x65\xa9\x54\x12\x02\x81\xe7\ \xb9\x54\x44\x15\xfe\xf9\xe1\x8b\x91\x9e\xc0\xb6\x7d\x42\xb6\xa7\ \xb9\x08\x11\x02\x24\xaa\xe2\x1b\xb3\x91\x54\x9c\x5c\x65\x7f\xa0\ \x6e\x00\x1a\x1b\x1b\xc5\x1b\x6f\xbc\xf1\x95\x62\xb1\xf8\x10\xe0\ \x45\xa3\xd1\xeb\xa7\x4d\x9b\xf6\xcd\x64\x32\x89\xa3\x48\xa6\x7f\ \xa5\x92\xd6\x96\x30\x76\x41\x62\x17\x3d\x52\x9d\x36\x99\x6e\x87\ \x25\xff\x6c\x07\x5e\xfb\xd8\xb3\xa6\x44\x2c\x16\x43\xd3\xb4\x5d\ \xf9\x7c\xfe\xce\x96\x96\x96\x1f\x97\x79\x58\x6e\xb5\xa0\xed\xd4\ \x28\x5a\x58\xf2\xd2\xfa\x7e\x7e\xf6\xfd\x5f\xb1\x77\xef\x5e\x6e\ \xbf\xfd\x76\x6e\xb8\xe1\x06\x74\x5d\xa7\xbe\xbe\x9e\x62\xb1\xc8\ \xee\xdd\xbb\x59\xb4\x68\x11\xeb\xd6\xad\x63\xfd\xfa\xf5\xe4\x72\ \x39\xc4\x98\x47\xa7\xeb\x2a\xdf\x79\xf5\x0b\xdc\x7e\xc1\x0b\x7c\ \x7f\xcd\x97\xc8\x5a\x09\x14\x5d\x90\xcf\x9a\x64\xb3\x3e\xea\xeb\ \x58\x2e\x23\x72\x33\x4e\xdd\x56\x96\xed\x4e\x21\x5d\x49\xb1\x54\ \x44\x28\x3e\x13\xf2\x90\x0b\x64\xd7\xae\x5d\x9f\x6a\x69\x69\x19\ \x48\xa7\xd3\x7e\x13\xfd\x71\x02\xd3\x89\xe2\xd5\xee\x61\xb4\x90\ \x25\x22\x6b\x7c\x81\x44\x20\xa4\x84\xe8\x4a\x77\x30\xbf\xfe\x34\ \x8e\x9e\x3e\x8f\xd7\x77\xbc\xc2\x11\xb1\xa3\x59\xea\x3d\x8f\x65\ \x39\x41\x8e\x22\x12\x89\xd8\xc5\x62\xb1\x34\xf6\xb3\x13\x0e\x87\ \x31\x0c\x03\x03\xe8\xff\x95\x43\xbf\x92\x7b\x17\x5a\xab\xbe\x3f\ \xc5\x55\x64\xb3\xd9\x6d\xbb\x76\xed\xba\x41\xd7\xf5\x37\x01\xb5\ \x4c\x44\x90\x42\xe2\xb9\x3e\x27\xca\x35\x21\x6a\x84\x79\xfa\xe9\ \xa7\xb9\xf6\xda\x6b\x79\xe9\xa5\x97\x28\x95\x4a\x44\xa3\x51\xfa\ \xfb\xfb\x89\xc5\x62\x0c\x0f\x0f\xd3\xd9\xd9\x49\x38\xec\x27\xd7\ \x4a\xa5\x12\x8a\x50\xb0\x5d\x0f\xc7\xb3\xa9\xab\x37\xb8\xfe\xb5\ \x4f\xfb\xea\xaf\x4f\x32\xb4\xb9\xc8\x9e\x65\x79\x14\x6d\x8c\x9d\ \xe8\x29\x24\xf2\x43\xa0\xba\x0c\x15\xf6\xb2\x77\x6d\x9a\x5c\xae\ \x04\x82\x43\xef\x65\x8d\x31\xef\x06\x03\xd6\x05\x10\xb2\xa0\x98\ \xf6\x18\x79\xd3\xc4\xca\x7b\xb8\x5e\x0e\xc7\x71\x28\x19\x2e\xb6\ \x5b\xc1\x92\xa1\x9f\x70\x4e\xe3\xb7\x78\x78\xeb\x2d\xec\x16\x2f\ \x92\xd8\xbe\x02\x4f\xba\x64\xb3\xd9\x20\x3e\x79\x3b\x95\xa8\xad\ \xad\x8d\x1b\x6f\xbc\x91\x89\x13\x27\xf2\xcb\x5f\xfe\x92\xae\xae\ \x2e\xc6\x8f\x1f\xcf\xb6\x6d\xdb\xa8\xaf\xf7\xbb\x33\x74\x75\x75\ \x61\x18\x06\x91\x48\x84\xae\xae\x2e\x84\x10\x83\x89\x44\xe2\x37\ \xe5\xb0\xa7\x5c\x60\x34\x61\xc2\x04\xd2\xc3\x69\x5e\xbf\x3e\xe7\ \xc7\x22\x8a\xca\xcb\x2f\xbf\xcc\x86\x0d\x1b\x82\x16\x1d\xe5\xe8\ \xbe\xfc\xb5\x9c\xb3\x28\x63\x76\xae\xeb\x52\xdb\xa9\xb1\xe6\xc7\ \x29\xac\x8c\x87\x53\x92\x38\x79\x89\xf4\x7c\xb7\xa8\xdc\x8b\x45\ \x51\x14\x8c\x90\xc1\x75\x5f\xf8\x21\x6e\xc1\x8f\x9f\x24\xa0\xee\ \xc7\x75\x3e\xa4\xd0\xc9\xfe\xf8\x90\xae\xeb\x2c\x5e\xbc\x98\x75\ \x6b\xd6\xb1\xe9\x66\x0b\x94\x10\x6e\xd1\xc4\x74\x0b\x38\xb6\x43\ \xa9\x52\xe2\x48\x0b\x43\x53\x79\x76\xe8\x26\x4e\x98\x72\x1a\xf9\ \x64\x89\x91\xb7\x7a\xd9\xf3\x72\x81\x62\xf1\xdd\x9f\x8a\xe6\xba\ \x2e\x33\x66\xcc\x20\x1e\x8f\xf3\xc9\x4f\x7e\x92\x19\x33\x66\x90\ \x4a\xa5\x38\xee\xb8\xe3\x68\x6b\x6b\xa3\xbf\xbf\x9f\x50\x28\x14\ \xa4\x46\xcb\x4d\x64\xde\x8e\x3a\x94\x69\x3f\xe5\xf4\xf1\xaa\x55\ \xab\x48\xa5\x52\xbc\xfa\xea\xab\x18\x86\x41\xb1\x58\x0c\xc0\xbf\ \x72\x92\x69\x2c\x6e\x19\x50\x14\xa5\xcc\x48\x98\xfe\xb9\xcf\x7d\ \x4e\x39\xf5\xd4\x53\x79\xf8\xe1\x87\xc9\x66\xb3\xe4\xd4\x5c\x60\ \x43\xcb\x0d\x30\x5d\xd7\x27\x51\x94\x89\xe5\xd5\x4a\x03\x4e\xd8\ \xc1\x52\x2c\x22\x91\x08\x85\x42\x21\xe8\x6c\x71\x48\xb9\xbd\xfb\ \x0b\x66\xcd\x9a\x35\x6c\xd8\xb0\x81\x4f\x7d\xea\x53\x6c\xde\xbc\ \x99\x81\x81\x01\x96\x2e\x5d\x4a\x3e\x9f\xc7\x75\x5c\xa2\x49\x85\ \xa1\x0d\x16\x85\x3e\x87\xe4\xce\x04\xcf\x75\xdf\x87\xa2\x0b\x14\ \x15\x14\x6d\x7f\xba\xa6\xfa\x0e\x44\x76\xd5\xaa\x55\x2c\x58\xb0\ \x80\xdb\x6e\xbb\x8d\xa5\x4b\x97\x22\xa5\xe4\x91\x47\x1e\x21\x9f\ \xcf\x13\x0e\x87\x83\xee\x0e\xa5\x52\x89\xe5\xcb\x97\xbf\x2b\xd5\ \xbf\x0c\xb5\x4b\x29\x39\xec\xb0\xc3\x58\xb2\x64\x09\xba\xae\x73\ \xe2\x89\x27\xb2\x70\xe1\x42\xee\xbd\xf7\x5e\x2a\x2b\x2b\xa9\xaf\ \xaf\x27\x9f\xcf\xb3\x67\x8f\xdf\x71\x63\xeb\xd6\xad\x57\x27\x12\ \x89\xc7\x00\x66\xcc\x98\x51\xb8\xe4\x92\x4b\x22\xa3\xa3\xa3\x5c\ \x7e\xf9\xe5\xdc\x7b\xef\xbd\x9c\x7f\xfe\xf9\xb4\xb7\xb7\x33\x67\ \xce\x1c\x9e\x7b\xee\x39\x66\xce\x9c\x49\x43\x43\x03\xc9\x64\x92\ \x55\xab\x56\xd1\xdb\xdb\x1b\xb8\xe7\x1f\xfb\xd8\xc7\x58\xbb\x76\ \x2d\xbb\x77\xef\xe6\xb0\xc3\x0e\x63\xd7\xae\x5d\x1f\x8c\x40\xca\ \x5e\x48\x2e\x97\xa3\xa1\xa1\x01\x21\x04\xb3\x66\xcd\xe2\xd5\x57\ \x5f\xa5\xb1\xb1\x91\xeb\xaf\xbf\x9e\x07\x1f\x7c\x90\xc4\x8e\x04\ \x8a\x69\x12\x8e\x39\x34\xce\xf6\x4b\xaa\xcb\xcc\xf1\x72\xd3\xe2\ \x77\xab\x1d\x0f\x87\xc3\xdc\x7c\xf3\xcd\xef\xfa\xd9\x65\x1a\x6b\ \xb9\x9b\x36\x10\x60\x45\x6f\xbf\xc6\x2b\xae\xb8\x82\x33\xcf\x3c\ \x93\xe5\xcb\x97\x07\xde\x61\xb9\xe1\x81\x94\x92\xd1\xd1\x51\xf6\ \xec\xd9\x13\x08\x74\x6c\x9e\xa0\xc2\xa8\xb2\xb2\x52\xbc\xfe\xfa\ \xeb\x9c\x7b\xee\xb9\xdc\x70\xc3\x0d\x58\x96\xc5\xe6\xcd\x9b\xe9\ \xea\xea\xa2\xae\xae\x8e\x5c\x2e\xc7\xde\xbd\x7b\xe9\xec\xec\xc4\ \xb2\x2c\x0a\x85\x02\x52\x4a\x8e\x38\xe2\x08\x1e\x7b\xec\x31\x74\ \x5d\x27\x1a\x8d\x52\x51\x51\x41\x22\x91\x38\x28\xd4\xf7\x7d\x55\ \x27\xb6\xb5\xb5\xc9\xa6\xa6\x26\x26\x4f\x9e\xcc\xc0\xc0\x40\xe0\ \x31\xc5\xe3\x71\x1e\x7c\xf0\x41\xde\x78\xe3\x0d\xbe\xfa\xd5\xaf\ \x72\xfb\xed\xb7\x33\x38\x38\x48\x24\x12\xa1\xbe\xbe\x9e\x95\x2b\ \x57\xd2\xdc\xdc\xcc\xae\x5d\xbb\x18\x1d\x1d\xa5\xae\xae\x8e\x81\ \x81\x01\x76\xef\xde\x7d\x51\x22\x91\xb8\x7f\x6c\x51\x66\x56\x55\ \x55\xcd\x14\x42\xbc\x97\x4e\x6d\x9e\xeb\xba\x5d\x83\x83\x83\x6f\ \x96\x6d\xc8\xe1\x87\x1f\x5e\x68\x6e\x6e\x3e\xa0\xcb\xf6\x1f\x2b\ \x77\xdb\x5f\x0d\x6f\xd8\xb0\xe1\xcb\xc9\x64\xf2\x3e\x80\x13\x4e\ \x38\xa1\x58\x28\x14\xc2\x65\x0c\x6d\x7f\xd2\xf4\xfe\x5f\xdf\x4e\ \xa5\x0d\x85\x42\x41\xcc\x54\xee\xef\x55\x6e\x3a\xbd\x65\xcb\x96\ \x2f\x25\x12\x89\x07\x0e\xb9\xca\xca\x64\x32\x74\x74\x74\x04\x79\ \xeb\x32\xd7\xf7\xe9\xa7\x9f\xe6\xea\xab\xaf\xe6\xb5\xd7\x5e\x63\ \xc7\x8e\x1d\x81\x5d\x28\x43\x0a\xa1\x50\x28\xc8\xe2\xbd\xdb\x43\ \x1c\xb3\xd9\xec\xf6\x6c\x36\xbb\xfd\xfd\x5c\x57\x7d\x7d\x7d\x99\ \xdd\x61\x0e\x0d\x0d\x2d\xee\xe9\xe9\x79\xaf\x53\xd8\x35\x35\x35\ \x9b\xcb\x0c\xfe\xe1\xe1\xe1\xe7\xa3\xd1\xa8\x5a\x2c\x16\x8f\x55\ \x14\x65\x3c\x80\xab\x42\xdd\x14\x8d\xe1\xad\x05\xa4\x2b\x29\xd9\ \x25\xc2\x5a\x05\x20\xc7\xf0\xbb\x12\x4d\x4d\x4d\x07\x08\x6f\xff\ \xb6\xeb\x42\x08\xfd\x90\x9f\x90\xfa\xfa\xfa\xdd\xab\x56\xad\x3a\ \xac\xbd\xbd\x9d\xa3\x8f\x3e\x9a\x27\x9f\x7c\xb2\x8c\xe6\x06\x39\ \xec\x70\x38\xfc\x0e\xaf\xe2\xdd\x76\xaa\x61\x18\x6c\xdb\xb6\x2d\ \x38\x21\xff\x2f\x8e\xf1\xe3\xc7\x3f\x1a\x0a\x85\x2e\x04\xc8\x55\ \x78\x9c\xf1\xcd\x46\x22\x06\xe4\x87\xab\xf8\xfa\x79\xff\xc6\xed\ \x2b\xaf\x81\x92\xce\xc0\x86\x22\x6f\x3d\x96\xf5\x1f\xb0\xe9\x37\ \x46\x7b\xa8\xbf\xbf\xff\x8b\xfb\xa9\xc1\xd2\x21\xf5\xb2\xf6\xc3\ \xb3\xe4\x4d\x37\xdd\xc4\x2d\xb7\xdc\xc2\x4b\x2f\xbd\x44\x6f\x6f\ \xaf\xff\x28\x87\x74\x1a\x5d\xd7\x83\x27\xcd\x1c\x4c\x72\x3f\x9b\ \xcd\xfe\xc9\xd6\x1a\xff\x8f\x0c\x25\x70\xf3\x6d\x81\xe7\x49\x4a\ \x49\x41\x72\x47\x9c\xcb\xbe\x7c\x15\x99\x2e\x2b\xd8\xdb\x46\x24\ \x14\xe4\xed\x85\x28\x3f\x68\xe3\xe0\x1f\x36\xf9\xbe\x73\xea\xed\ \xed\xed\x2c\x5e\xbc\x38\x68\x3e\x2c\xa5\xa4\xba\xba\xfa\x8f\x16\ \x5c\xc6\x62\x31\x76\xee\xdc\x79\x6c\x7f\x7f\xff\x7a\xfe\x9b\x8e\ \x53\x4e\x39\x85\xae\xae\x2e\xf6\xdc\x99\xc3\x73\x25\x52\x1a\x08\ \xa9\x53\x5d\x1d\xf1\x0b\x78\xc6\x6c\x46\x39\x3c\xb0\x6d\xfb\x3d\ \xb7\xbc\x7e\x5f\x02\x31\x4d\xf3\x65\xd7\x75\xb7\x95\xbd\x93\x83\ \xe9\x10\x94\x4a\xa5\x6c\xcf\xf3\x46\xff\x3b\x0a\x42\x4a\x69\x5e\ \x72\xc9\x25\x9c\x72\xca\x29\xb4\xb4\xb4\x70\xc7\x1d\x77\x90\x4a\ \xa5\x68\x68\x68\xa0\xb7\xb7\x97\x9a\x9a\x1a\xda\xda\xda\x58\xb1\ \x62\x45\x90\xa2\xd8\xb0\x61\x03\xb6\x6d\xaf\xfb\xc0\x05\x52\x5d\ \x5d\xcd\xf0\xf0\xf0\x65\xc3\xc3\xc3\xfc\xff\x68\xc8\x32\x0e\x15\ \x0e\xfb\x7d\x80\xcb\x7d\xbd\xa6\x4c\x99\xc2\xe6\xcd\x9b\x99\x30\ \x61\x02\x53\xa7\x4e\xa5\xa7\xa7\x87\xee\xee\xee\x32\xb9\xc1\xfe\ \xc0\x05\x72\x28\xdb\x6a\xff\x77\x19\x9a\xa6\x71\xff\xfd\xf7\xf3\ \xc2\x0b\x2f\x90\xcd\x66\x83\xb8\xa5\x1c\x78\x4a\x29\xe9\xee\xee\ \x0e\xbe\xf7\x3c\xef\x7d\x37\xe8\xd7\xf8\x68\xfc\xd9\xe1\x38\x4e\ \xc8\x30\x0c\xd2\xe9\xf4\x01\x1e\xe2\x9f\x8a\x69\xc6\x82\xe7\xf7\ \xec\xad\x88\x8f\x96\xfb\xcf\x8f\x48\x24\xd2\x54\x2a\x95\xaa\xde\ \xe3\xba\xba\x75\x75\x75\x83\xa3\xa3\xa3\x85\x8f\x56\xf0\xa3\xf1\ \xd1\xf8\x68\x7c\x34\x3e\x1a\x1f\x8d\x8f\xc6\x47\xe3\xa3\xf1\xd1\ \x38\x60\xfc\x7f\xa7\x8c\x4b\xc9\xd0\xc3\x6c\x1c\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x1a\x78\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x64\x00\x00\x00\x69\x08\x06\x00\x00\x00\xcc\x7c\x86\x8a\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x88\x26\x00\x00\x88\x26\x01\ \xac\x91\x9d\x06\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x03\x03\ \x0e\x04\x3a\x04\x0e\x03\xc5\x00\x00\x19\xf8\x49\x44\x41\x54\x78\ \xda\xed\x9d\x7b\x74\x54\xf5\xbd\xe8\x3f\xbf\xbd\x67\xcf\x64\x92\ \x0c\x79\x12\xc2\x23\x01\x4a\x28\x8f\x4a\x90\xa2\x16\x6b\xc3\xa9\ \xa0\x02\xf5\xd4\x2e\xbd\xda\x2e\x5b\xee\xa5\x85\x7a\xb4\x75\xf5\ \xae\x16\xef\x83\xf6\xf6\x9c\x73\x5b\xd0\x7a\x7b\xaf\x4b\xaf\xbd\ \xb4\x97\xd5\x7a\x3d\x2a\xb7\xd6\x1e\x3d\xe7\xd4\x5a\xa1\x2a\x78\ \x05\x0f\x4a\x00\x51\x08\xa4\x09\xaf\xc8\x23\x04\xf2\x9a\x24\x33\ \x99\xcc\xec\xc7\xef\xfe\x31\xcc\x66\x1e\x7b\x87\x09\x4c\x12\x70\ \xe5\x3b\x6b\xaf\x64\xf6\xfe\xfd\x7e\xfb\xf7\xfb\xbe\xbf\xdf\xdf\ \x63\x04\x40\x65\x65\x65\x9d\x10\x62\x07\x63\x30\xea\xa0\x00\xaa\ \x65\x59\xda\x18\x2a\xae\x0e\xf0\x00\x85\xa6\x69\x16\xaa\xaa\x0a\ \x80\x94\x12\xcb\xb2\xc6\x30\x33\x42\x20\x84\x40\x51\x94\x14\x82\ \x94\x1b\x86\x51\xe6\xf5\x7a\x01\xc8\xcf\xcf\x67\xe5\xca\x95\x63\ \x98\x1a\x21\xd8\xbf\x7f\x3f\x7b\xf7\xee\x4d\x21\xc8\x44\xc3\x30\ \x2a\xd3\x0b\x9a\xa6\x89\xae\xeb\x63\x18\x1b\x46\xc9\xf0\xf9\x7c\ \x08\x21\x32\x54\xd6\xf8\x0b\x97\x0d\x52\x4a\xfa\xfb\xfb\x69\x6b\ \x6b\x1b\xc3\xdc\x30\x41\x5e\x5e\x1e\x53\xa6\x4c\x41\x4a\x99\x41\ \x90\x80\x65\x59\x81\xf4\x0a\xc3\x65\x4b\x84\x10\x28\x28\x08\x40\ \x20\x88\x19\x26\x31\xcb\x40\xf5\x9b\xf1\x3b\x31\x0f\xaa\xa5\x82\ \x00\xa1\x48\x10\x20\x91\x9f\x38\x82\xa4\x13\x22\x99\x20\x5e\x21\ \x84\xe6\x54\x30\x5d\x9c\x72\x01\x41\xa3\x8f\x93\xfa\x39\xba\x8d\ \x10\x03\x32\xc6\x67\x6e\xc8\x67\x76\x6d\x01\x49\x76\x8d\xfe\x1e\ \x89\x6c\xcf\x27\x76\xce\x87\xd5\xee\xc7\x33\x90\x17\x27\x90\xdd\ \xb1\x4f\x36\x41\x14\xcb\xb2\xd4\x64\x22\x58\x96\x95\x53\x09\x11\ \x40\x8f\x19\xa6\x61\xe0\x04\x1d\x66\x0f\x42\x2a\x4c\x9d\x9e\xc7\ \x8a\xa5\x65\xe4\xe5\x29\x98\x26\x48\x09\xe2\x82\x34\x14\x94\x0a\ \x28\xeb\x47\xcc\x09\x83\x02\xb1\x01\x89\xec\xd3\x30\x7a\x35\x64\ \x9f\x86\x19\xf2\x60\x85\x34\xac\xb0\x07\x2b\xa4\xa2\xe8\x9a\x2d\ \x4d\xf1\x4b\x5e\x13\x04\x49\xe0\x39\x9d\x20\xc2\x49\x12\xdc\x28\ \x78\x39\x10\xb2\x22\xfc\x6b\x7f\x03\x52\x4a\x54\xa9\x52\x31\xc9\ \xcb\x17\xbf\x54\x8a\xb4\xc0\x30\x24\x42\x08\x12\x5d\x10\x71\x1d\ \x05\x52\x20\x11\x60\x48\x34\x55\x81\x62\x13\x6f\xb1\x09\x0c\x10\ \xef\xda\x85\x72\xc0\x40\x48\x62\x9c\xcf\xc3\x68\xf7\xa1\xb7\xf9\ \xf0\x84\xf3\x6d\x4e\x10\x57\xa9\x44\x0d\x26\x21\xae\x94\xcb\x85\ \x84\x18\xd2\x64\x57\xff\xa1\x0b\x12\x20\xf0\xe5\x09\x6e\xbb\xab\ \x0c\x69\x65\xa9\x16\xed\xe7\xc2\xf1\x96\x04\xfc\x45\x02\x8a\x07\ \x10\xb3\x07\x40\x01\x3d\x66\x61\xf6\x7a\xb0\x7a\xbd\x18\xbd\x2a\ \xb2\xcf\x8b\x19\x56\x91\x21\x0f\x46\x48\x41\x89\x7a\x11\x42\xc6\ \xc3\xe2\x51\x92\xa8\xc1\x24\xc4\xb5\x42\x2e\xa4\xe4\xa4\x7e\x0e\ \x43\x9a\x28\x17\xb0\x58\x33\xb7\x00\x45\x11\xc8\x1c\x31\xae\xdd\ \x86\x14\x48\x13\xa4\x09\x1e\xa1\xe0\x29\x92\x50\x14\xbd\x30\x96\ \xfe\x14\x89\xd2\xa3\x92\x81\x36\x0d\xeb\x9c\x9f\x48\x9b\x07\x4f\ \x77\xbe\xad\xee\x46\x4a\xa2\xb2\x96\x90\x64\x62\xe4\x82\x20\xed\ \x46\x4f\x8a\x14\x54\x4e\xf6\x0e\xab\x5d\x16\x4e\xff\x25\x4b\x94\ \x94\x78\xfd\x02\xef\x0c\x1d\x51\xa3\x53\xa2\x48\x4c\xab\x83\x58\ \x8f\x02\x3d\x5e\x62\x3d\x2a\xf4\x7a\x31\xc2\x0a\x84\x35\x62\x21\ \x81\x12\xd1\x10\x6a\x6e\x25\xc9\x0d\xbf\xc3\x4e\x90\x90\x8c\xa4\ \x7c\x2f\x2c\x52\x47\x3d\x20\x03\xc0\x8a\x4b\xa9\x34\x40\x11\x0a\ \x79\x85\x12\x0a\x63\xe4\x4d\x06\x49\x04\x64\xc2\x96\x81\x65\x40\ \xd7\x9f\x4b\x90\x5d\x79\x39\x27\x48\x56\x2a\x2b\x97\x04\x31\x30\ \xe3\x86\xfa\x02\xf8\x7c\xa3\x4b\x10\x57\x02\xa5\xcb\x56\xc2\x63\ \x93\xa0\xfa\x40\xd1\xc0\x90\x72\xe4\x09\x92\x4b\xef\x8a\xf8\x78\ \x6c\xfb\x01\xa0\x88\x6b\x2c\x8c\x10\x49\x03\x19\x01\x18\x54\x42\ \xc6\xb2\xbe\xc3\x97\xb9\x18\x92\x0d\xc9\xb5\xa4\x64\xb6\x25\x87\ \x50\xf7\x82\x5a\x11\xf1\x7a\x71\xc4\x48\x5b\xdd\x08\x2e\xc6\x30\ \xc3\x4a\x90\x1c\x8b\xc8\x90\xbc\xac\x04\x27\xe4\x82\x23\x84\x88\ \x1b\xcd\x54\x50\xb2\xaa\xab\xa8\xd0\xd5\xae\x73\xea\x64\x1f\x35\ \x15\x73\xb8\x61\xc6\x4d\x54\x96\x4e\x60\x7a\xe5\xa7\x50\x15\xe8\ \xec\x6f\xe3\x64\xf0\x2f\xb4\x85\x3e\xe6\x78\x77\x03\x8a\x50\x1d\ \xde\x95\x33\x0c\xe6\x5c\x42\x86\x1c\x87\x0c\xb7\x63\x7a\x29\xc9\ \x78\xfb\x4f\xdd\xf4\xb4\xc3\xab\x3f\xfb\xbf\xcc\x9f\x3e\x1f\x8f\ \xea\x71\xec\xa7\x29\x0d\xce\xf4\x1e\xe5\xd7\x7b\xff\x96\xf3\xa1\ \x93\xa8\x8a\x73\xb9\x44\x46\xc0\x92\x56\x5c\xf2\x10\x59\xe7\xeb\ \xe4\x30\xa8\x40\x27\x3c\x2b\xd9\x78\x01\x57\x72\x5d\x0e\xc4\x06\ \x2c\x5e\x7d\xb1\x0d\x2d\x56\xc6\x47\xcf\xec\x60\x61\xcd\x42\x54\ \x45\x75\xf5\x92\x3c\x8a\xc6\xd4\xe2\x39\x6c\xb8\xed\x65\x6e\xfd\ \xd4\x7d\x18\x96\xee\x58\x2e\xd4\x6b\xb0\xed\x4f\xed\x4c\xb6\xea\ \xb8\xbf\x76\x2d\x4b\x3e\xf5\x55\xe6\x8c\xff\x5c\xd6\x0c\x92\x2b\ \x9c\x0c\x86\x97\x61\x77\x7b\x11\x82\xf4\x66\x06\x6b\xd7\xb2\xe0\ \xf5\x7f\xec\x24\xe0\x2f\xe5\xfd\x5f\xbe\x89\xdf\xeb\xcf\x2a\xc5\ \x92\x90\x80\xfb\x6b\xff\x23\xc5\x79\x15\xfc\x63\xc3\xff\xc4\xab\ \xfa\xec\xe7\xaa\x47\xd0\x72\x64\x80\xe6\xc3\x3d\xdc\xff\xf7\x7f\ \x43\xcd\xc4\x99\x00\xb4\x74\x1f\xe6\xf0\xf9\xf7\xb3\xa0\x88\x95\ \x53\xad\xe1\xa4\xae\x06\x55\x59\xb9\xf3\xf3\xe3\xae\x6e\x32\xa7\ \x2a\x8a\x3b\x72\x0f\x7f\xd0\x47\xa4\xdf\xe4\xe7\x0f\x3e\x62\x13\ \x23\x1d\xa2\x46\x84\xf7\xff\xb2\x1b\x4d\xf8\xb9\x61\xd6\x02\xbc\ \x1e\x6f\x0a\x61\x56\x7c\x7a\x15\x4d\x1d\x7b\x69\xee\xfc\xe0\x22\ \x41\x54\xc1\xc9\x63\x03\x54\x56\x94\x50\x33\x71\xa6\x4d\x40\x04\ \x29\x73\xda\x57\xaa\x6a\x73\xee\xf6\xe6\x42\xe5\x5c\xb6\x1f\x23\ \x05\x87\x3f\x0c\x51\x5e\x12\xe0\xdf\xde\x76\xbf\x63\xa9\x73\xa1\ \x53\xfc\xb7\x9d\xab\xe9\xe9\x0b\xb3\xf5\xe5\x4e\xaa\x27\x54\xf1\ \xde\x2f\xde\xca\x08\xf4\xfe\xcd\x67\xfe\x3d\x8f\xbd\xb3\xca\xfe\ \x1e\x09\x5b\xf4\xf5\x98\xdc\x3c\x6f\x61\x76\x49\xcd\x61\xca\xed\ \x5d\x4a\x0b\x29\x83\x89\x93\x65\x59\x57\x7c\x25\x5c\xc6\xc4\x27\ \xfd\x7b\xe2\xa3\xa8\x82\x86\x7d\x7d\x74\xf7\x84\xf9\xdf\x8f\x3c\ \xe1\x6a\x04\x5f\xf8\xf0\x51\x22\x46\x98\xbc\x7c\xc1\xed\x77\x97\ \x70\xf0\x48\x13\x77\xfe\xf8\xde\x0c\x04\x57\x15\xcd\xa4\xa6\x74\ \x3e\xa6\x65\x20\x91\x74\x77\xe8\x48\x24\xd7\xd7\x5c\xe7\xe8\xd2\ \x5e\xf2\x93\x23\x7c\x24\x2e\x37\x2f\x4b\x71\x32\x7e\xb9\xe4\x06\ \x91\xf6\x71\xba\x27\x10\x28\x42\xa1\xf9\x60\x3f\x15\xe5\x45\x2c\ \xb9\x7e\x89\xa3\x51\xee\x8e\x9c\xa3\xb1\xbd\x1e\x81\x40\x5a\x50\ \x50\xa8\x32\x73\xf6\x38\xde\xfb\x70\x3f\xef\x37\xd6\x67\xd4\x59\ \xb3\xf0\xa7\x58\xc4\xd0\x54\x85\x73\x6d\x61\xf4\x98\xc1\xbc\x4f\ \xcd\xc9\x70\x9f\x84\x14\x5c\xea\x93\x6b\x37\x2b\xeb\xc0\x30\xd9\ \x1d\xcb\xdd\x8c\xa1\xc8\x20\x51\x3a\x74\xb4\xc5\xd0\x63\xb0\xe2\ \xe6\xbf\x72\x8d\x25\xde\x39\xf1\x4f\xa8\xc2\x13\xaf\x7f\xa1\x89\ \x09\x93\x7d\x9c\x3c\x16\xe5\x9d\x8f\xfe\x95\x45\x73\x6e\x4a\x19\ \x47\xb1\x7f\x3c\x4d\x3b\x4b\x68\x3a\x76\x8a\xed\xbf\x78\x99\xfe\ \xaf\xc7\x98\x33\x25\x95\x20\x01\x5f\x09\x9f\xab\x5a\xce\x80\x11\ \x41\x37\x23\xb4\x87\x5b\xe9\xe8\x3f\xe3\x28\x45\xb9\x8e\x43\x46\ \xc7\xcb\xca\x12\xba\xda\x75\x84\x80\x05\x33\xe7\xb9\x96\x69\xee\ \xfc\x00\x55\xa4\xba\xbf\x25\x65\xf1\xe5\x00\x07\x8e\x35\x38\x26\ \x0d\xe7\x55\xcd\xa7\xe1\x2f\x1f\x33\xa9\x64\x32\x25\x53\xca\x33\ \xda\x2c\xcb\x9f\xc8\xaa\x05\x7f\x1b\x4f\xec\x4a\x8b\xff\x77\xe2\ \x65\x5e\x39\xf4\xf4\xd5\x65\x43\x86\x23\x0f\x94\xfa\x72\x99\x71\ \x85\x7a\x4d\xa4\x94\x54\x55\x4c\x74\x6d\xe7\x74\x4f\x33\x42\x28\ \x29\xf5\x0a\x02\x2a\x52\x4a\xce\x76\xb6\x3b\xd6\x99\x3b\xf5\x33\ \x59\x05\x76\x82\x78\x46\x41\x49\x6b\xff\xe2\x75\x15\x24\x17\x73\ \xc1\x11\x8a\x48\x55\x51\xc2\xc5\x7d\x0c\xf7\x59\x08\x21\xa8\x99\ \x3c\xd3\xb5\x2d\xc3\x32\x33\x8c\xb7\x3f\x5f\x41\x08\x41\x6b\xc7\ \x19\xc7\x3a\xd3\x26\x4d\xc6\x32\xa1\xc0\xe7\x4f\x89\x57\x06\x57\ \xaf\xc2\xd9\xf0\xcb\x51\x9a\xa0\x4a\xcf\x69\x5d\x79\x2c\x22\x2e\ \xe9\xd3\x87\x43\x71\x64\x57\x96\x95\x39\x47\xef\x66\xd4\x11\x91\ \xaa\x27\x9e\xfe\x08\x47\x23\xce\x12\x32\xb3\x9a\xaf\xfd\x4d\x25\ \x13\xef\x9b\x45\x59\x51\x11\x47\xfe\xe1\x50\xaa\x1b\xdd\x77\x8a\ \x7f\x3e\xf8\x0c\x9a\xe2\xa3\xc0\x57\x48\x47\xf4\x63\x67\x82\x58\ \x57\x81\x0d\x19\x49\xd0\x63\xf1\xc1\x96\x14\x16\x3b\x3f\x37\x07\ \x5c\x93\x4c\x9a\x4f\x10\x89\x39\x3f\x2f\xce\x1b\x8f\xc7\xa3\x90\ \xe7\xc9\xc7\x32\x32\x35\x74\xc4\xe8\xe3\x40\xc7\x9b\xa9\x32\xe2\ \xb4\x0a\x67\xd8\xd5\xf8\x20\x5e\x56\x6e\xd7\x65\x65\x17\x80\x99\ \x46\xbc\x63\xf9\xde\x80\xab\x84\xb8\x81\xd7\xab\x10\xee\x77\x5e\ \x87\xec\x55\xf3\x2e\xa6\x0c\x84\x73\xf7\x44\x36\x19\xe2\xd1\xcc\ \xf6\x26\x62\x91\x5c\xac\x5c\x8c\xe3\x41\xa4\x7d\x77\x20\x88\x39\ \x78\xf4\xac\x9b\x51\x57\xd2\xfa\x7c\x0a\xba\x61\x3a\x3e\xd3\x54\ \xef\xc5\xf5\x73\x0e\xed\x0b\x57\xab\x96\x8d\xea\xcd\xb5\x2a\x1f\ \x64\x3e\x64\xa4\x67\x0c\x0d\x43\x0e\x3a\xdf\x1e\x1b\x54\x65\x29\ \x18\xba\x85\x69\x99\x19\x59\x61\x4d\xf1\x5d\x94\x84\x2b\xc8\x47\ \xe5\x1a\x1f\xc9\x11\xfb\x88\x67\x7b\xb3\x51\xc0\x8a\x10\xf6\x4c\ \xe0\x50\xb8\x53\x42\xea\xaa\xc7\x61\xe2\xea\x38\x3e\x86\x3f\x52\ \x57\x46\x42\x34\xb3\x01\x55\x15\xe8\x86\x3b\x07\xda\xb6\xc0\x81\ \xde\x7a\xcc\x42\x55\xe3\x3b\x91\xd2\x07\x69\x5a\xc6\x05\x0c\x08\ \x57\x09\x1b\x2d\xc8\x5a\x65\xb9\xcd\x66\x5d\x49\x2e\x2b\xcd\x8a\ \x3a\xbb\xaf\x03\xee\x8c\xa0\xa9\x3e\xc7\x7a\x08\x81\x11\x13\x68\ \x9a\xc7\x71\x90\xba\x15\x03\x71\x31\x8b\xe6\x4a\xd5\x51\xca\xf6\ \x66\x6d\x43\x92\xb3\xb5\x23\x25\x21\x08\x88\x9a\x11\x7c\x6a\xe6\ \x3c\x88\x6d\x0b\x5c\x5c\x66\xaf\xe6\x71\x71\x06\x62\xb9\x41\x20\ \x16\xb9\x44\x47\xd6\xd9\xde\x5c\x4a\x87\x9b\x4d\x72\x4a\x6f\xfb\ \xfc\x71\x75\x73\xae\xfb\xbc\x8b\xca\xf2\x39\xd6\x13\x02\x62\x31\ \x49\x9e\xe6\x75\xce\x00\xc4\x82\x17\xd3\xfe\xd2\x0d\xd9\x97\xfe\ \x0c\x47\xb6\x77\x48\x81\x61\xee\x88\x92\x39\x43\xa8\x38\x98\xae\ \xfc\x02\x15\x45\x51\xe8\xea\x09\x52\x5d\x3e\xd5\x51\x65\x09\xe9\ \x10\xb4\x49\xe2\xa9\x91\x7c\x67\x1b\xd3\x1b\xed\x8e\xef\xd8\x12\ \x02\xb7\x89\x41\x25\x8b\x94\x9e\xcc\xf1\x14\xee\x90\x92\x8b\x39\ \x9d\x0f\x11\xd9\x39\x0c\xfe\xfc\xb8\xbb\xda\xda\xd9\x36\x88\x1d\ \xf1\x66\x1a\x6d\x23\xfe\x8e\xc2\xbc\x80\x0b\x41\x3a\x93\xe2\x53\ \x71\x45\x4a\x2b\xd7\x30\x6a\xb9\xac\x6c\xa0\x70\x5c\x9c\x20\xc7\ \x5b\x5b\x5c\xcb\x54\x17\xcf\xe2\x48\xc7\x47\x29\x29\xf8\x70\x28\ \x1e\x10\x56\x8f\x9f\xe2\x58\xa7\x2d\xd4\x92\x23\xe4\x31\xba\xb9\ \x2c\xb7\x55\x11\x97\x3d\x9a\x34\x9d\x9d\x0e\x25\xe5\x1a\x48\xc9\ \xfe\xa3\x07\x5c\x9b\x99\x51\x32\x9f\xa6\xf6\x0f\x52\x54\x4c\x7f\ \xc8\x02\x29\x19\x5f\x52\xea\x58\xe7\x6c\xdf\x09\xdb\x06\x38\x8e\ \x27\xcb\x4d\xa5\x72\x98\x56\x9d\x64\x6d\xd4\x73\x16\x8b\x08\x01\ \x8a\x62\x5f\x82\xf8\x2e\xdc\xf4\x4f\x69\xb9\x06\x8a\xc2\xa1\x13\ \xcd\xae\x1c\xf4\xb9\xaa\xe5\x58\xd2\x4c\xa9\x17\xec\x34\x40\x51\ \x58\x38\x6b\x81\xe3\x38\x4e\x06\x9b\xe2\x04\x54\x04\xc2\x61\xb5\ \x8b\xa6\xe6\xa1\xc8\xe4\x16\x9d\xfb\x37\x12\x69\x93\x41\x6d\x48\ \x32\x05\x47\x62\xa1\x9c\xd7\x27\x98\x32\xcd\xc7\xc1\xa3\xcd\x1c\ \x3d\xdb\x9c\xd1\x61\x29\x25\x13\x0a\xab\xa9\x2c\x9c\x9a\x82\xf0\ \xf3\xad\x31\x2c\xcb\xa2\xae\xf6\x73\x19\x03\x6e\x09\x1e\xe6\x7c\ \xe8\x54\xdc\xad\x56\x04\xb1\x68\x66\x02\x72\x42\x41\x15\xba\x15\ \x45\x37\x74\x4e\x9f\xee\xa3\x37\xe8\x9c\x13\x93\x96\xcc\xe9\x42\ \xb9\xac\x25\xc4\x2d\x1e\xb9\xa2\x55\x27\xe9\x04\x72\x98\x90\x33\ \x0d\x58\xb0\x28\x80\x47\xd5\xf8\xbb\xff\xf3\xb8\x2b\x47\xdd\x32\ \xf5\x2e\x4c\xcb\x44\x51\x05\xbd\x41\x83\xa3\xcd\xbd\x2c\xbd\x71\ \x11\xb5\xd3\x6b\x33\xea\xbc\xd6\xf8\x1b\x3c\x8a\x06\x12\xbc\x3e\ \x85\x48\x34\x13\xd9\xaa\xe2\xe1\x3f\xd7\x3d\xcb\xd4\xe8\xdd\xac\ \xb9\xfe\x67\xac\xff\xeb\x67\x1d\xfb\x37\x1c\xab\x4e\xb2\xb6\x21\ \x09\x24\xe6\x26\xdb\xeb\xb0\x3a\x5d\x38\xc7\x02\xf9\x85\x2a\x53\ \xa7\x17\xb0\x6d\xdf\x7b\x1c\x6d\x3d\x4a\xcd\xa4\x9a\x8c\x72\x77\ \xd4\xac\xa4\xab\xff\x2c\xbf\xdd\xf9\x02\x3b\xdf\xe8\xe3\xcb\x75\ \xb7\xf3\xcc\x7f\xf8\x5f\x19\xe5\x4e\x74\x1f\xa2\xa9\x73\x9f\xbd\ \xce\xb7\xb8\xd4\x43\x4f\xb7\x41\xd3\xe9\x26\x66\x4d\x99\x95\x32\ \xce\x69\xa5\xb3\x59\xf7\xb5\xd9\x00\x9c\xea\x69\x1a\x24\xa0\x1f\ \xfe\x94\x92\x32\x98\x77\x95\x2b\x09\x89\x13\x45\x5c\xdc\x56\xe0\ \x70\xd9\x8b\x12\x6e\x28\x04\x09\x3f\xfb\xed\x53\xae\xb6\xe4\xfe\ \xf9\xff\x89\x8d\x5f\x7b\x9d\xc3\xcf\xed\x64\xf3\x0f\x7f\x8d\x4f\ \xf3\x65\x38\x0c\x6f\x1c\x7d\x21\xe5\x7d\x53\x6b\xf2\x40\xc2\x3f\ \xed\x7c\x6d\x50\x5b\x29\x50\x1c\xfb\x97\x58\x75\x32\xe2\xeb\xb2\ \x46\xc3\xe5\x4d\x86\xf2\x4a\x8d\x1b\x6e\x19\xc7\x2b\xdb\xff\xcc\ \xaf\xfe\xb4\x29\x13\x61\x17\xbe\x57\x8f\xaf\x62\x52\x49\x55\xc6\ \x80\x04\x82\x57\x0e\xfd\x82\x03\x6d\xef\xa6\xdc\x9f\x54\xed\xe3\ \xc6\xc5\xe3\x78\xea\xa5\x67\xf8\xf5\x96\xe7\x1c\x6d\xd4\xbb\x2d\ \x7f\xe0\xf9\x0f\x1f\xcd\xc6\x51\xcc\x99\xdb\x9b\x55\xfa\x3d\x97\ \xfb\x43\x86\xec\x0e\x9a\x92\x9a\xb9\x7e\x06\x06\x8a\xf9\x2f\x9b\ \xfe\x3b\x05\xbe\x00\xff\xee\xb6\xfb\x5d\x83\xba\x64\xc4\x1a\x96\ \xce\x96\xe6\x7f\x60\xdb\xf1\xdf\xc5\x6d\x47\xca\x98\x24\x33\x66\ \xfb\x99\x3e\xd3\xcf\x96\x8f\x7f\xc1\x9f\x36\x6e\xe4\xf3\x73\x6f\ \xa4\xbc\xa8\x9c\x96\xee\xc3\x9c\xed\x6b\xc1\xa3\x78\xf0\x28\x5e\ \x67\xd5\x34\x4c\x33\x86\x23\x1e\x87\x88\xcb\xb0\x39\x52\xc2\xdc\ \xeb\xf3\x99\x5c\xed\xe3\xd1\x17\x1f\xe7\xb7\x6f\xfc\x0b\xcf\xae\ \x7b\x8a\x89\xa5\x93\x5c\xeb\xed\x6f\x7d\x9b\xd7\x9b\x9f\xe5\x6c\ \xa8\x25\x83\x18\xc9\xed\x0a\x05\xa6\x54\x15\x02\x92\x93\xe1\x83\ \x9c\x0c\x4b\x04\xf1\x39\xf7\xc1\x6c\x84\x35\x42\xab\x4e\x94\x6c\ \xf3\x2d\x23\xb9\x3f\x24\x81\xc0\xe2\x32\x0f\x7f\xfd\xb5\x32\x2a\ \xae\x3b\xc3\xc2\x87\x3f\xcf\xb2\x75\x77\xd3\xda\x75\xd6\xb1\xfc\ \xef\x0e\x3e\xc1\xb9\xf0\xc9\x21\xec\xa0\x12\x17\xd6\x61\xa9\x17\ \xed\xdb\x10\x82\xdb\x2b\xc5\x99\x5b\xc4\x7e\xc9\x19\x43\xd3\x34\ \x87\x1c\xfe\xa7\xa4\xbf\x0d\x23\x65\xbf\xbd\x69\x19\x08\x4b\xb8\ \xe7\x8b\x64\x6a\xe6\xc8\x30\xa1\xb0\x04\x66\xce\x2e\x66\xf7\x9e\ \x8f\x78\x63\xef\x36\xbe\x79\x47\xe6\x89\x77\x9f\xa9\x58\xc4\xfb\ \xa7\x5e\xbf\x44\xe6\x49\x66\x9d\xaa\x92\x69\x37\x23\xfd\x11\xfa\ \xfb\x8d\xdc\x79\x53\x8a\x92\xbd\xca\xb2\x2c\x0b\x5d\xd7\x09\x87\ \xc3\x57\x2c\xa6\x51\xdd\x40\x58\xa9\xf3\x13\xf2\x32\xdc\xc7\x92\ \xf1\x60\x18\x06\xef\x35\xec\xe5\x9b\x77\xac\x8c\xa7\xde\x93\x14\ \xe2\x8a\x4f\x7f\x93\xe6\x8e\x0f\xe8\x8b\x06\x31\xa4\x8e\x31\xc8\ \x2a\x95\x6c\x74\x6b\xfa\x84\x56\xb4\xdf\xc0\x30\x72\x47\x10\xc3\ \x30\x18\x18\x18\xc8\x38\xb5\xcf\x51\xbe\x63\xb1\x18\xb1\x58\x2c\ \x67\x36\x24\xd9\xed\x4d\xec\xeb\x1b\xea\x35\xb1\xca\x87\xd7\xab\ \xf0\xcf\x17\xdc\xd6\x74\x8e\x1e\x5f\x30\x85\xbf\xbb\xf5\xb7\xfc\ \xd7\x25\xbf\xe3\xce\x4f\xaf\xc6\xb0\x62\x43\x7b\x47\xc6\x2a\x7d\ \x71\x31\x1e\x53\xa0\xaf\x2d\x77\xc4\x18\x72\x1c\x62\x9a\x66\x4e\ \xf7\x87\xe4\x2a\x3f\x79\xcb\xed\xc5\xb4\x77\xf5\xf1\xf7\x2f\x6c\ \x70\xd4\xf9\x5e\x4f\x1e\x25\xf9\x15\x14\xfa\x8a\x73\xb6\x8d\x59\ \x51\x05\x67\x0f\x45\x31\x42\x66\x4e\xe3\x10\xb7\x88\x5d\x19\x2e\ \x63\x6e\x1b\xaf\x1c\x05\xb7\x96\x25\x99\x54\xed\xa3\xf6\xb3\x25\ \xfc\x8f\xcd\x9b\x78\x6b\xff\xf6\xac\xed\xd8\x15\x31\x82\x80\xc3\ \x2f\xf6\xa2\x78\x73\x8b\x97\xcb\xf2\xb2\xae\x26\x48\x48\xc4\xe7\ \x97\x14\x31\x77\x41\x80\x6f\x3c\xb6\x9a\x97\x77\xbd\x44\x7b\xef\ \x79\x42\x03\xbd\xe8\x66\x94\xa8\x11\x21\xa2\x87\xe9\x8f\xf5\x72\ \xa5\x9c\x90\x60\xa6\x13\x6f\xf7\x13\x0b\x9a\x23\x36\x4e\x8f\x7b\ \xfe\x49\xe4\x26\x77\x93\x63\x0e\xb6\x2c\x58\x78\x4b\x80\x79\x0b\ \x0b\xf8\x7d\xf3\x63\xfc\xf9\xf4\x46\x4a\x03\x25\xf8\x7d\x7e\x4c\ \xcb\x24\x66\x46\x08\xc7\x7a\xd1\x14\xef\x15\xbd\x47\xf3\x2b\x9c\ \xd8\xd5\xcf\x91\x7f\x09\x0d\x4b\x0e\xcb\x0d\xbf\x1e\xae\x41\x90\ \x16\x68\x5e\x85\x12\x6f\x1e\x10\x25\x18\x6b\x23\x18\xbb\xcc\x44\ \xe0\x85\x55\x49\x52\x82\x11\x95\x98\x31\x0b\x23\x22\x39\xb6\xbd\ \x9f\x33\x3b\x22\xa8\x9a\x18\x56\x89\x77\x3a\xb7\x77\x78\x25\xe4\ \x6a\x52\x7b\x0a\x08\x35\x6e\xa8\x0d\x43\xd2\x73\x46\xa7\xb7\xc5\ \xa0\xe7\xb4\x4e\xff\x19\x13\xbd\x5f\xa2\xf7\x5b\xc4\xfa\x2c\xa4\ \x89\x4d\x8c\xe1\xc2\x43\x62\x0d\xf5\x35\x2f\x21\xd9\xc6\x13\x66\ \x4c\xda\x57\x34\x64\x11\x3c\x65\xd0\x73\x4c\xa7\xfb\x63\x9d\xc8\ \x19\x23\xce\x74\x4a\x9c\x50\xe9\xd6\x54\x0c\xb3\x75\x1d\x35\x09\ \x91\x62\xf8\xce\x98\xb4\x39\x5e\x11\x98\x52\xd2\x7b\xd6\xa0\xaf\ \xc5\xa0\xe7\x8c\x41\xf8\xb4\x41\x2c\x2c\x31\xc2\x16\xb1\x7e\x89\ \x19\x89\xaf\xe1\x4a\xa8\x28\x4f\xde\xe8\xfb\x33\x59\xdb\x90\x5c\ \x8a\x68\x7e\x97\x42\xa4\xd8\xe2\xb2\xd7\x9e\x27\x73\xbc\x2e\xb1\ \x62\x12\x53\x97\xc4\xfa\x25\xc1\xd3\x3a\xbd\xc7\x0c\xba\x3e\xd6\ \xe9\x3f\x69\xc6\xc3\x39\x9b\xe3\x45\x4a\xf4\xa8\x5c\x65\xba\xc0\ \x8d\xe9\x3d\x43\xa5\xe0\x50\x61\xdc\x79\x15\x8f\x2e\xe8\xad\x30\ \x11\x52\x64\xc5\xf1\x42\x11\x48\x24\xbd\xe7\x4d\x42\x1f\x27\x38\ \xde\x24\xd6\x67\xd9\x1c\x6f\xf4\x4b\x7b\xa9\x95\x10\xe0\xf1\x89\ \x1c\xe4\x9a\x47\x1f\x5c\x93\x8b\xb9\x5b\x75\x02\x05\xdd\xf1\xb3\ \xdc\x43\x65\x16\xc9\x7b\x2a\x2d\x23\xae\xdf\x2d\x5d\xa2\x0f\x48\ \x7a\x5a\x8d\x38\xc7\x9f\xd4\x09\xb7\x98\x60\xe2\xaa\xe3\x15\x95\ \x6b\x1e\xb2\x5e\x28\xe7\x66\x70\xae\x84\x28\x85\xdd\x2a\xaa\x2e\ \x68\xff\x4b\x8c\x70\x9b\x49\xf8\x94\x49\xb4\xcf\x42\x0f\x49\xf4\ \xb0\x85\x1e\x96\x71\x5b\xa3\xc4\x39\x5e\xf5\x88\x4f\xa2\xcb\x91\ \xa1\xb2\xb2\xf6\xb2\x72\xed\xea\x49\x01\xfe\x90\xca\xa1\x5f\x87\ \x3e\xb1\x1c\x9f\x0b\xc3\x3e\xb2\x71\x88\x00\x45\x13\x8c\x81\x7b\ \xa4\xae\x8c\xa1\xe6\x1a\x30\xea\x39\xb7\x21\x63\x70\x65\x6e\xaf\ \xc8\x72\x8b\x17\x80\xaa\xaa\x68\x9a\x86\x65\x59\xf6\x74\x6f\x2e\ \x37\x5a\x5e\x6d\x5e\x50\x2e\xeb\x0d\x29\xb9\xe8\xa6\xe3\x2c\xcb\ \x62\x60\x60\x80\x3b\xef\xbc\x93\x3b\xef\xbc\x93\xf1\xe3\xc7\x13\ \x08\x04\x88\xc5\x62\x04\x83\x41\x76\xef\xde\xcd\xee\xdd\xbb\xd1\ \x34\x2d\xc5\x8b\x70\xfa\x9b\xed\xb3\xa1\x96\x4b\xf4\x33\x19\x41\ \x6e\xe5\xae\xf4\x5d\x4e\x7f\x13\x53\xe0\xb1\x58\xcc\x95\x39\xdd\ \xee\x7b\xb2\x49\x78\x25\xc3\x67\x3f\xfb\x59\x7e\xf9\xcb\x5f\x52\ \x96\x76\x26\x49\x22\x76\xb9\xf5\xd6\x5b\xe9\xed\xed\xe5\xe9\xa7\ \x9f\xe6\xe8\xd1\xa3\x19\x03\x4f\xb4\x9d\x3e\x5b\x96\x3e\xd8\xc1\ \xbe\x67\x5b\x6e\xb0\xff\xdd\xbe\x5b\x96\x95\x72\x88\xdb\x60\xfd\ \x75\xeb\x97\xc7\xe3\xc1\xeb\xf5\xe2\xf7\xfb\xe9\xef\xef\xb7\x67\ \x60\xb3\x91\x24\xe5\x52\xfa\x2d\x71\x19\x86\xc1\x8f\x7e\xf4\x23\ \x5e\x7a\xe9\x25\x9b\x18\xe9\xcb\x45\x13\x10\x08\x04\x58\xb7\x6e\ \x1d\x5f\xff\xfa\xd7\x5d\x17\x06\xe4\xe7\xe7\x53\x57\x57\x47\xe2\ \x07\x2d\xaf\xc6\x20\x2d\x5d\x33\xdc\x7a\xeb\xad\x8c\x1f\x3f\x3e\ \x2b\x35\x24\xa5\x44\x51\x14\x0a\x0a\x0a\xc8\xcb\xcb\x73\x9d\xcb\ \x1f\xb2\x97\x95\xa8\xf4\xfd\xef\x7f\x9f\x55\xab\x56\xd9\x1d\xaf\ \xaf\xaf\x67\xf5\xea\xd5\x6c\xdd\xba\xd5\x2e\x6b\x18\x06\x3f\xff\ \xf9\xcf\x59\xb3\x66\x0d\x07\x0e\x1c\xe0\x8e\x3b\xee\xe0\x9e\x7b\ \xee\x71\x1c\xec\x8a\x15\x2b\xf8\xce\x77\xbe\xc3\x4d\x37\xdd\x34\ \xea\x84\x50\x14\x85\x69\xd3\xa6\x0d\x5a\x6e\xee\xdc\xb9\x6c\xd8\ \xb0\x81\x87\x1e\x7a\x68\xc8\xf6\xc1\xe7\xf3\xe1\xf3\xf9\x2e\xcf\ \xcb\xba\x78\x02\xb4\xb0\x7f\x20\x6c\xce\x9c\x39\x7c\xef\x7b\xdf\ \x4b\x79\xd1\xb9\x73\xe7\xf0\xf9\x7c\x4c\x99\x32\xc5\xae\xf7\xf4\ \xd3\x4f\xd3\xd8\xd8\xc8\xda\xb5\x6b\x99\x37\x2f\x7e\x32\xdc\x3d\ \xf7\xdc\xc3\xfe\xfd\xfb\x69\x69\x69\x49\xe9\xe4\xce\x9d\x3b\x89\ \x46\xa3\x1c\x3c\x78\x70\x54\x09\x12\x8d\x46\x79\xe8\xa1\x87\xb8\ \xf9\xe6\x9b\x79\xe0\x81\x07\x5c\xcb\x1d\x3f\x7e\x9c\x27\x9f\x7c\ \x92\x03\x07\x0e\x5c\x56\xe0\xe7\xf3\xf9\x30\x0c\xc3\x79\x01\xfa\ \x50\x24\xc4\x30\x0c\x36\x6d\xda\x94\x71\xff\xdc\xb9\x73\x48\x29\ \xa9\xac\xac\x44\x4a\xc9\x0b\x2f\xbc\x40\x53\x53\x13\xab\x57\xaf\ \x66\xde\xbc\x79\x29\x52\xb1\x76\xed\xda\x94\x05\x77\x7e\xbf\x9f\ \x50\x28\xc4\x5b\x6f\xbd\x45\x38\x1c\x76\x7c\xaf\xa6\x69\x68\x9a\ \x86\x94\x92\xbc\xbc\x3c\x02\x81\x00\xf9\xf9\xf9\x59\x9e\xb1\x1b\ \x7f\x47\x20\x10\xa0\xa0\xa0\xc0\x9d\x1b\x3d\x1e\xaa\xab\xab\x59\ \xb9\x72\x25\xcd\xcd\xcd\xe4\xe7\xe7\xe3\xf7\x67\xee\x91\xf7\xf9\ \x7c\x78\xbd\x5e\xb6\x6c\xd9\xc2\xf1\xe3\xc7\x07\x95\x36\x55\x55\ \x29\x2c\x2c\x64\xdc\xb8\x71\x14\x16\x16\xda\x2a\x59\x08\xe1\xd8\ \x76\x56\x46\x3d\xf9\x5a\xb4\x68\x11\x13\x26\x4c\xc8\x48\x38\xb6\ \xb5\xb5\x21\x84\xa0\xa2\xa2\x82\x17\x5f\x7c\x91\x37\xdf\x7c\x93\ \x07\x1e\x78\x80\xba\xba\xba\x0c\x5d\x5a\x52\x52\xc2\xdc\xb9\x73\ \x69\x6e\x6e\xa6\xa4\xa4\x84\xa7\x9e\x7a\xca\x26\xc4\xb7\xbf\xfd\ \x6d\x47\x3b\x72\xef\xbd\xf7\xe2\xf1\x78\xe8\xea\xea\xe2\xab\x5f\ \xfd\x2a\x7e\xbf\x9f\x48\x24\xc2\x9b\x6f\xbe\xc9\xb3\xcf\x3e\x3b\ \x28\x92\x1f\x7e\xf8\x61\x6e\xb9\xe5\x16\x2c\xcb\xc2\xe3\xf1\xb0\ \x67\xcf\x1e\x1e\x7d\x34\x75\x55\x7b\x2c\x16\xe3\xc1\x07\x1f\xe4\ \xde\x7b\xef\xb5\x55\xe8\xb2\x65\xcb\xa8\xaf\xaf\xe7\x87\x3f\xfc\ \xa1\x5d\x2e\x12\x89\xb0\x71\xe3\x46\x6a\x6a\x6a\x88\x46\xa3\xfc\ \xf8\xc7\x3f\x66\xff\xfe\xfd\x19\xef\xd5\x75\x9d\xeb\xae\xbb\x8e\ \x47\x1e\x79\x84\xda\xda\x5a\x2c\xcb\x42\x55\x55\x36\x6c\xd8\xc0\ \x1f\xff\xf8\x47\x9b\x58\xaa\xaa\xda\x8e\xc3\x65\x49\x48\x42\xc7\ \x27\x57\x94\x52\xd2\xda\xda\x4a\x75\x75\x35\x3b\x76\xec\x60\xfb\ \xf6\xed\xdc\x77\xdf\x7d\x2c\x5e\xbc\x38\x73\x7b\xc0\x85\x7a\xb3\ \x67\xc7\x37\xc4\x74\x77\x77\xb3\x6a\xd5\x2a\xf2\xf3\xf3\xe9\xec\ \xec\x74\xfd\xbd\xdd\xea\xea\x6a\x96\x2c\x59\xc2\xf2\xe5\xcb\x79\ \xf0\xc1\x07\x59\xbe\x7c\x39\x67\xce\x9c\xe1\xae\xbb\xee\xc2\xe3\ \xf1\xb8\x7a\x2d\x6b\xd7\xae\xe5\xb6\xdb\x6e\x63\xe3\xc6\x8d\x7c\ \xe5\x2b\x5f\x61\xf3\xe6\xcd\xd4\xd5\xd5\xb1\x64\x49\xea\xd1\xb3\ \x5e\xaf\x97\x4d\x9b\x36\xb1\x79\xf3\x66\x00\xd6\xad\x5b\xc7\xd2\ \xa5\x4b\x59\xb7\x6e\x5d\x86\xa4\x3d\xfc\xf0\xc3\xd4\xd7\xd7\x53\ \x5c\x5c\xcc\xd9\xb3\xce\x6b\x8b\x67\xcf\x9e\xcd\xf3\xcf\x3f\x4f\ \x51\x51\x11\x2b\x56\xac\xa0\xb6\xb6\x96\x65\xcb\x96\xd9\x2a\x2e\ \x81\x87\x4b\x39\x31\x97\xf4\xb2\x26\x4c\x98\x90\xf1\x3c\x18\x0c\ \xd2\xd7\xd7\xc7\xc0\xc0\x00\x9b\x37\x6f\x66\xd9\xb2\x65\xdc\x75\ \xd7\x5d\x83\xfa\xd7\x25\x25\x25\x36\xd2\x4a\x4b\x4b\x51\x55\x95\ \x8f\x3e\xfa\xc8\xb5\x83\x93\x26\x4d\xa2\xa0\xa0\x80\xf5\xeb\xd7\ \x13\x0e\x87\xf1\x7a\xbd\xec\xde\xbd\x1b\x80\xb2\xb2\xb2\x0c\x82\ \x18\x86\xc1\x82\x05\x0b\x58\xbc\x78\x31\x7f\xf8\xc3\x1f\xd8\xb2\ \x65\x0b\x3e\x9f\xcf\x56\x31\x45\x45\x45\x8e\x04\xac\xae\xae\x06\ \xe0\xe4\xc9\x93\x83\xaa\xa2\xa9\x53\xa7\x62\x9a\xa6\x63\x39\x29\ \x25\x3f\xf8\xc1\x0f\x6c\xf5\xdc\xd9\xd9\x49\x61\x61\x21\x5d\x5d\ \x5d\x9c\x38\x71\x22\x15\xe1\x8a\x32\x74\x2f\x2b\xb9\xe0\xb8\x71\ \xe3\x32\x9e\x1f\x3a\x74\x28\xbe\xd1\xb2\xae\x8e\x68\x34\x3a\xe8\ \x82\xec\x04\x24\x74\xb9\x69\x9a\xd4\xd6\xc6\xf7\x03\x1e\x3c\x78\ \x30\x83\x20\x09\x44\x4f\x9c\x38\x91\x96\x96\x16\x4e\x9c\x38\x61\ \x3b\x17\x55\x55\x55\x00\xb4\xb7\xb7\x67\x1e\x32\xa3\xeb\xb6\xe3\ \xf1\xcc\x33\xcf\x50\x58\x58\x48\x5e\x5e\x1e\xb7\xdf\x7e\x3b\x96\ \x65\xd1\xd8\xd8\xe8\x38\xce\xaa\xaa\x2a\x2c\xcb\xe2\xd4\xa9\x53\ \x83\x06\x71\xd3\xa6\x4d\xe3\xd0\xa1\x43\x19\x63\x95\x52\x52\x54\ \x54\xc4\x8d\x37\xde\xc8\x87\x1f\x7e\x48\x73\x73\xb3\x6d\xe7\x14\ \x45\xc9\xb0\x79\xc9\xef\xb8\xac\x19\xc3\x60\x30\x98\x71\xbf\xb1\ \xb1\x11\x55\x55\x59\xba\x74\x29\x07\x0e\x1c\x60\xdb\xb6\x6d\x2c\ \x5d\xba\x94\xf2\xf2\x72\xd7\xb6\x42\xa1\x90\x4d\x90\x84\x07\x96\ \xdc\xf9\x74\x6e\x04\xd8\xb1\x63\x07\x9a\xa6\xd9\xf5\xae\xbf\xfe\ \x7a\x82\xc1\x60\x4a\xf0\x96\x80\xc9\x93\x27\x53\x51\x51\x41\x24\ \x12\xe1\x27\x3f\xf9\x09\x81\x40\x80\xea\xea\x6a\xda\xda\xda\xd8\ \xb0\x61\x03\x0d\x0d\x0d\x78\x3c\x9e\x8c\xd8\x62\xfa\xf4\xe9\x34\ \x36\x36\xa2\xeb\xba\xfd\xae\xf4\x32\x09\x29\xaa\xaf\xaf\xcf\x60\ \x20\xc3\x30\x58\xbe\x7c\x39\x00\x2f\xbd\xf4\x12\x89\xdf\xa5\x1f\ \x4c\xda\x06\x4b\x2d\x79\x2e\x15\x24\x39\xe9\xcc\xc3\x87\x0f\x53\ \x59\x59\x89\xaa\xaa\x2c\x5e\xbc\x98\xe6\xe6\x66\xde\x7e\xfb\x6d\ \xee\xbb\xef\x3e\xd7\x17\x76\x74\x74\xd8\x03\xbc\xee\xba\xeb\xe8\ \xea\xea\xc2\x34\xcd\x0c\xc4\x26\x10\x0f\xa4\xa8\xb4\xd2\xd2\x52\ \xc6\x8d\x1b\x47\x43\x43\x83\x63\x36\x21\xc1\x0c\x67\xce\x9c\x61\ \xd7\xae\x5d\x74\x74\x74\xd0\xd0\xd0\x40\x30\x18\xc4\xe3\xf1\x64\ \x10\x43\x4a\xc9\xc4\x89\xf1\x33\x82\xf7\xec\xd9\x93\xf1\x3c\xb9\ \x3f\x8b\x16\x2d\x02\x60\xf7\xee\xdd\x19\x04\x31\x4d\x93\x19\x33\ \x66\x00\x70\xe2\xc4\x89\x4b\x7a\x81\xc9\x7b\x1b\x2f\x2b\x52\xaf\ \xaf\xaf\x4f\x69\x28\x12\x89\x10\x0e\x87\xed\xc1\xdc\x74\xd3\x4d\ \x04\x02\x01\xde\x79\xe7\x1d\x0c\xc3\x70\xdc\xbb\x97\x20\x62\x42\ \xff\xe7\xe7\xe7\xd3\xda\xda\xea\x8a\x80\xf9\xf3\xe7\x03\xa4\xa8\ \x91\xc9\x93\x27\xdb\x08\x1f\x6c\xa0\x47\x8e\x1c\xe1\xb5\xd7\x5e\ \xe3\xbd\xf7\xde\x23\x1c\x0e\x3b\x72\x7d\xfa\x7b\xf6\xec\xd9\xe3\ \x6a\xcb\x0c\xc3\xb0\x1d\x9b\xa6\xa6\xa6\x8c\x72\x42\x08\xa2\xd1\ \xa8\xad\x36\x5d\x4f\xbe\x4b\x4b\xcd\xb8\xd9\x5b\xe5\x52\xe9\xf7\ \x7d\xfb\xf6\x71\xe4\xc8\x11\xfb\x5e\xc2\xdd\x4d\x36\xf6\xab\x56\ \xad\x22\x18\x0c\xf2\xfb\xdf\xff\xde\xb1\xad\xd3\xa7\x4f\xd3\xd4\ \xd4\x64\x1b\x6b\x37\xc9\x4b\xc0\x9c\x39\x73\x6c\x82\x25\xde\x9b\ \x08\x40\xdd\x08\x72\xfe\xfc\x79\x5b\x05\x79\xbd\x5e\x54\x35\x7e\ \xba\x50\x79\x79\x39\x85\x85\x85\x99\x87\xd6\x98\x26\x73\xe7\xce\ \x4d\x41\xb4\xdb\x8f\x34\x2f\x58\xb0\x80\xd6\xd6\x56\xc7\xd5\xfc\ \xaa\xaa\xda\xc1\xed\x97\xbe\xf4\x25\x3b\x6f\xa5\x69\x1a\xaa\xaa\ \xa6\x48\x44\xe2\xd9\x60\x46\xfd\x92\x33\x86\x7e\xbf\x9f\xef\x7e\ \xf7\xbb\x6c\xdd\xba\x15\x55\x55\x39\x75\xea\x14\x91\x48\x84\x8a\ \x8a\x0a\xbb\xc3\xb5\xb5\xb5\x4c\x9f\x3e\x9d\xad\x5b\xb7\xb2\x64\ \xc9\x12\x2a\x2b\x2b\x53\x74\xf0\x13\x4f\x3c\x61\xeb\xd6\x04\x62\ \xdd\x08\x32\x69\xd2\x24\x54\x55\xa5\xad\x2d\xf5\x54\xa0\x84\x41\ \x77\x23\x48\x7b\x7b\x3b\xcf\x3d\xf7\x1c\xdf\xfa\xd6\xb7\x78\xfc\ \xf1\xc7\x39\x73\xe6\x0c\xe5\xe5\xe5\xcc\x9e\x3d\x9b\x35\x6b\xd6\ \x64\x72\xa2\xa2\xd8\x1e\xd8\x4f\x7f\xfa\x53\x0c\xc3\xe0\xf5\xd7\ \x5f\x67\xe7\xce\x9d\x29\xea\x6b\xca\x94\x29\xf8\x7c\x3e\x4e\x9f\ \x3e\xed\x1a\xf7\xbc\xf1\xc6\x1b\x7c\xe3\x1b\xdf\x60\xcd\x9a\x35\ \xcc\x98\x31\x83\x48\x24\xc2\xc2\x85\x0b\x59\xbf\x7e\x3d\xbb\x76\ \xed\xb2\xdd\x74\x5d\xd7\x6d\x95\xe6\x46\x10\x15\xb8\x41\xd3\xb4\ \xea\xbc\xbc\xbc\xda\x44\x47\xa7\x4d\x9b\xc6\xc0\xc0\x00\x3d\x3d\ \xf1\xdf\xb1\x0d\x87\xc3\x74\x76\x76\x52\x57\x57\x47\x69\x69\x29\ \x5f\xf8\xc2\x17\x98\x35\x6b\x96\x9d\x62\x07\x58\xb8\x70\x21\x75\ \x75\x75\x04\x02\x01\x3b\x6f\x23\xa5\xe4\xf9\xe7\x9f\xa7\xb1\xb1\ \xd1\x2e\x57\x54\x54\x44\x5f\x5f\x1f\xf5\xf5\xf5\xf4\xf6\xf6\x66\ \x74\x28\x10\x08\x20\xa5\xa4\xbe\xbe\x3e\x05\xf9\xa5\xa5\xa5\x74\ \x74\x74\xf0\xee\xbb\xef\xda\x2a\x22\x9d\x53\x0f\x1d\x3a\xc4\xbe\ \x7d\xfb\x28\x2b\x2b\x23\x10\x08\xd0\xd0\xd0\xc0\x63\x8f\x3d\x46\ \x5f\x5f\x5f\x66\x00\xa6\x28\x34\x36\x36\xd2\xd7\xd7\x47\x55\x55\ \x15\x67\xcf\x9e\x65\xfb\xf6\xed\x0c\x0c\x0c\xa4\x94\x4d\xb8\xcb\ \x3b\x76\xec\xa0\xa5\xa5\xc5\xd5\xf9\x79\xe5\x95\x57\x08\x87\xc3\ \x4c\x98\x30\x81\x68\x34\xca\xaf\x7e\xf5\x2b\xf6\xee\xdd\x6b\x4b\ \x89\xae\xeb\x29\x52\xaa\x69\x1a\xa5\xa5\xa5\x04\x83\x41\xba\xbb\ \xbb\x2f\xb6\x05\x3c\xe8\xf7\xfb\xbf\x50\x5c\x5c\xbc\x32\x41\xf1\ \x2f\x7e\xf1\x8b\x04\x83\xc1\x14\x9f\xdb\x30\x0c\xee\xbe\xfb\x6e\ \xd6\xaf\x5f\x9f\x75\xd2\xee\x37\xbf\xf9\x0d\x3b\x76\xec\xb0\x3b\ \x25\xa5\xc4\x30\x0c\x4c\xd3\x4c\x51\x11\xc9\x69\x6c\xd3\x34\x6d\ \x4e\x4a\xae\xa7\xeb\xba\x1d\x79\x3b\xa5\xc7\x93\xf7\x44\x26\x72\ \x46\x42\x08\x9b\xdb\xdd\xd2\xed\xb1\x58\xcc\xb6\x7d\x89\x54\x4d\ \x72\xfb\x96\x65\x11\x8b\xc5\x52\xfa\xe3\x96\x7e\x8f\xc5\x62\x29\ \xef\x4d\xd8\x1b\x5d\xd7\x6d\x07\x26\x39\xdb\x5d\x53\x53\xc3\xf1\ \xe3\xc7\x53\xd2\x31\x9e\x6c\x53\xd2\x1e\x8f\x87\x57\x5f\x7d\x95\ \xfa\xfa\x7a\x36\x6e\xdc\xc8\xf4\xe9\xd3\x1d\x0d\xa1\x65\x59\xb4\ \xb6\xb6\xf2\xe4\x93\x4f\xd2\xd9\xd9\x99\x51\x26\x91\x3e\x70\xdd\ \xb0\xa2\x28\x78\xbd\x99\x07\x95\xa5\x23\xd6\x35\xd2\x4d\xaa\x9f\ \xcd\xc9\x78\x9a\xa6\xa5\x44\xfe\x4e\x99\x06\x9f\xcf\x97\xd5\xae\ \xe2\x64\x97\x37\x79\xa2\x6a\x28\x27\xf4\x0d\x69\xc6\x50\x08\xc1\ \xd9\xb3\x67\xf9\xf2\x97\xbf\x4c\x6d\x6d\x2d\xb5\xb5\xb5\x4c\x9a\ \x34\x89\x8a\x8a\x0a\x42\xa1\x10\xed\xed\xed\x1c\x3b\x76\x8c\x63\ \xc7\x8e\x39\xba\x99\x83\xcd\xd4\x39\xfd\xbd\xd4\x0c\xa3\x5b\xbb\ \x43\xbd\x7f\xb9\xe5\x2e\x35\xbb\xe8\x34\x57\x74\xd9\x04\x71\x6b\ \x28\xc1\xe1\xcd\xcd\xcd\xb6\xe7\x94\xf3\x33\xb6\x3e\x01\x0b\x18\ \x2e\x85\x8f\x21\x4d\xe1\x66\xbb\x2e\x6b\x8c\x00\x57\x4e\xb8\x21\ \x67\x7b\xc7\x60\x78\xa5\x68\xc8\x71\xc8\x18\x8c\x2c\x51\xc6\x24\ \x64\x4c\x42\xc6\x60\x4c\x42\xae\x21\x4f\xcc\x55\x42\xc6\x8d\x1b\ \xc7\xac\x59\xb3\xc6\x30\x37\x4c\x90\x98\x39\x74\x54\x59\xe9\x01\ \x8f\x53\xae\x68\x0c\x72\x0b\x96\x65\x11\x8d\x46\x33\x16\x12\x7a\ \x00\x4b\x88\x8b\xfb\x64\x0d\xc3\x60\xdb\xb6\x6d\x63\x18\x1b\xa5\ \x58\xc4\x03\xe8\x40\x2c\x5d\x9c\xc6\x60\x94\x54\x19\x10\x16\x42\ \x0c\x8c\x79\x54\xa3\x0f\x52\xc6\x77\x16\x2f\x05\x26\x6a\x9a\x56\ \x21\xa5\xf4\x70\x2d\xee\x25\xbe\x76\xc0\x14\x42\xc4\x80\x5e\x45\ \x51\x3a\x54\x55\x3d\xa7\x69\x5a\x50\xd3\xb4\x88\xc7\xe3\x31\x00\ \xf9\xff\x01\xfa\x90\x4b\xa0\xc0\x4f\x7e\x35\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x3f\xd1\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x50\x00\x00\x00\x50\x08\x06\x00\x00\x00\x8e\x11\xf2\xad\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\ \x95\x2b\x0e\x1b\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x03\x03\ \x0e\x36\x08\x21\xa9\x06\x34\x00\x00\x20\x00\x49\x44\x41\x54\x78\ \xda\x9c\xbc\x69\x98\x24\x57\x79\xe7\xfb\x3b\xb1\xe6\x9e\x59\x99\ \x59\x5b\xd7\xd2\x55\x5d\xbd\xaa\x17\x49\x2d\xb5\xf6\xd6\x0e\x12\ \x12\x18\x8c\x6d\x60\x7c\x19\x6c\x23\x1b\xcc\xb0\x08\xcf\x18\xdb\ \x63\x3f\x9e\xe5\xde\x67\xbc\x8c\xf1\x78\x7b\xbc\x8c\x3d\x36\xc6\ \xf6\x18\x06\x63\x1b\x0c\xd8\x80\x05\x5a\x11\x12\xdd\x48\xa8\x5b\ \xea\x7d\x51\x55\xd7\xbe\xe4\x16\xfb\x7a\xee\x87\xac\xcc\xae\x06\ \xc6\x73\x9f\x9b\x1f\xba\xb3\x9e\x38\x71\xe2\x8d\x13\x27\x22\xce\ \xef\xfd\xff\xdf\x14\xef\x7a\xd7\xbb\xa4\xe3\x38\xd4\x6a\x35\x5e\ \x7f\xfd\x75\x7c\xdf\x67\x61\x61\xc1\xfa\xe8\x47\x3f\x5a\x2c\x97\ \xcb\x84\x61\xc8\x8b\x2f\xbe\x88\xaa\xaa\x84\x61\x48\x18\x86\x74\ \x3a\x1d\xd6\xd7\xd7\xa9\xd5\x6a\x9c\x39\x73\x66\x75\x68\x68\xa8\ \xf8\xfe\xf7\xbf\x3f\x5b\xab\xd5\xf8\xf4\xa7\x3f\xcd\xf0\xf0\x30\ \x17\x2f\x5e\x64\x68\x68\x88\xf9\xf9\x79\x4c\xd3\xc4\x34\x4d\x4e\ \x9e\x3c\x19\x25\x49\x12\xfc\xe2\x2f\xfe\x62\x61\x78\x78\x98\x67\ \x9e\x79\x06\xc7\x71\xb8\x72\xe5\x0a\x83\x83\x83\x34\x1a\x0d\x86\ \x87\x87\xd9\xd8\xd8\x60\x6e\x6e\x0e\xdb\xb6\x3b\xb7\xdf\x7e\xbb\ \x78\xc3\x1b\xde\x50\xac\xd7\xeb\x3c\xf3\xcc\x33\xac\xac\xac\x90\ \xa6\x29\x8e\xe3\x50\x2a\x95\xb8\x7c\xf9\x32\x51\x14\xe1\xba\x2e\ \xf3\xf3\xf3\xb3\xef\x79\xcf\x7b\xb6\x3f\xf0\xc0\x03\x7c\xe9\x4b\ \x5f\xe2\xca\x95\x2b\x14\x0a\x05\x82\x20\x20\x8a\x22\x66\x67\x67\ \xa9\x56\xab\x34\x9b\x4d\x2e\x5d\xba\x74\xee\xae\xbb\xee\xda\xf9\ \xb3\x3f\xfb\xb3\xca\x73\xcf\x3d\xc7\x4b\x2f\xbd\xc4\xf4\xf4\x34\ \x97\x2f\x5f\x46\xd3\x34\x6c\xdb\x66\x72\x72\x92\x73\xe7\xce\xb1\ \xb8\xb8\xb8\xb4\xb2\xb2\xb2\xfc\xeb\xbf\xfe\xeb\x37\x66\xb3\x59\ \x4e\x9c\x38\xc1\xfa\xfa\x3a\xb6\x6d\xa3\x0c\x0d\x0d\x91\xcb\xe5\ \x10\x42\x30\x39\x39\x89\xa6\x69\x08\x21\xc8\xe7\xf3\xfc\xc8\x8f\ \xfc\x08\x83\x83\x83\x54\xab\x55\xa6\xa6\xa6\xd8\xb1\x63\x07\xc5\ \x62\x91\x52\xa9\x84\xae\xeb\x8c\x8d\x8d\x01\x10\x86\x21\x0f\x3c\ \xf0\x00\xd7\x5f\x7f\x3d\xa6\x69\x32\x35\x35\xc5\xe0\xe0\x20\xdb\ \xb7\x6f\xa7\x5e\xaf\x63\x9a\x26\xfb\xf7\xef\x47\x08\x81\xef\xfb\ \xec\xdf\xbf\xbf\xbf\x6d\x6c\x6c\x8c\x52\xa9\xc4\xbe\x7d\xfb\xc8\ \xe7\xf3\x14\x0a\x05\x76\xee\xdc\x49\xa1\x50\x40\x55\x55\x56\x57\ \x57\xb9\xfd\xf6\xdb\x29\x95\x4a\xa4\x69\x4a\x26\x93\xa1\x54\x2a\ \x11\x04\x01\xba\xae\x23\x84\xa0\x5e\xaf\xa3\x69\x1a\x52\x4a\xf6\ \xee\xdd\xcb\x7d\xf7\xdd\x47\xb1\x58\x64\x70\x70\x90\xe9\xe9\x69\ \x06\x06\x06\x98\x9c\x9c\xc4\x30\x0c\x86\x87\x87\xc9\xe5\x72\x00\ \x68\x9a\xc6\xbe\x7d\xfb\x30\x0c\x83\x5c\x2e\xd7\xdf\x5e\x28\x14\ \x30\x0c\x83\x28\x8a\x28\x16\x8b\xa8\xaa\x8a\x10\x82\xc1\xc1\x41\ \x6e\xbe\xf9\x66\xc6\xc6\xc6\xd8\xbb\x77\x6f\x77\xdc\x0e\x1f\x3e\ \x2c\x01\xa4\x94\xfd\x00\x3b\x9d\x8e\x95\xcf\xe7\x8b\x99\x4c\x06\ \xd7\x75\x11\x42\x20\xa5\xa4\xf7\x91\x52\x22\x84\x40\x08\x41\xa7\ \xd3\x59\x1d\x1c\x1c\x2c\xa6\x69\x9a\x05\x88\xa2\xa8\xbf\x3d\x4d\ \xd3\xfe\xbe\x52\x4a\xe2\x38\x8e\xa2\x28\x0a\xf2\xf9\x7c\xa1\x58\ \x2c\x62\xdb\xf6\xf7\xf4\xbb\xf5\x7f\x4d\xd3\x3a\xed\x76\x5b\x94\ \x4a\xa5\x62\x92\x24\x28\x8a\x72\xcd\xf1\xb7\xf6\x5f\xad\x56\x79\ \xed\xb5\xd7\x66\xaf\xbb\xee\xba\xed\x8e\xe3\x90\xa6\x69\xff\x9c\ \x7a\x6d\x7a\xfb\xe8\xba\xce\xec\xec\xec\xb9\x3d\x7b\xf6\xec\x6c\ \xb7\xdb\x8a\xa6\x69\xd7\x1c\x77\xeb\x47\x4a\x89\xa2\x28\x4b\x6b\ \x6b\x6b\xcb\x43\x43\x43\x37\x9a\xa6\x89\xef\xfb\x08\x21\xba\x31\ \xa6\x89\x6c\x08\x01\x08\x50\x14\x05\xcf\xf3\x52\xcb\xb2\x2e\x67\ \xb3\x59\xdd\xb6\x6d\x04\x82\x34\x95\x80\x40\x08\x09\x9b\x6d\x7b\ \x07\x8b\xe3\x78\xa5\xd3\xe9\xec\xd1\x34\xad\x24\x10\x9b\x07\xdd\ \xfc\x47\x00\x9b\xfb\x6c\x1e\x30\xf4\x3c\x6f\x31\x93\xc9\x28\xed\ \x76\x1b\x05\xe5\xfb\xf6\xdd\x0b\xae\xd3\xe9\x34\x92\x24\xd1\xd3\ \x34\x2d\x0a\x04\x71\x9c\x76\x8f\x20\x05\x42\xa4\xdd\x38\xe8\xc6\ \xb1\xbe\xbe\x1e\x03\x8d\x76\xbb\x5d\x4d\xd3\x34\x12\x88\xee\x96\ \x14\xa4\x90\x88\xcd\xb6\x42\x08\x92\x24\x51\x84\x10\xad\x8d\x8d\ \x8d\xbf\x35\x0c\xc3\x90\x69\x4a\x9a\x00\xdd\x50\xba\x31\x28\xb2\ \x7b\x0a\x42\x08\xd7\x75\x97\xc2\x30\x2c\x48\x29\x35\xcf\x75\x13\ \xa4\x42\x2a\x53\x40\xa0\xed\xb9\x7b\xb4\x9a\xac\x99\xc8\x50\x41\ \x28\x82\x28\x8a\x08\xc3\x30\xbb\x6d\xdb\xb6\x7c\x1c\xc7\xc4\x15\ \x87\xc2\x64\x44\xe2\x81\x6c\xe6\x88\x1b\x3a\x32\x50\x51\x0c\x89\ \xa2\x28\x44\x51\xb4\x32\x33\x33\x53\x52\x55\x35\x1b\x11\x11\x4f\ \x34\xa9\xd6\x35\x22\x4f\x22\x5a\x05\xa2\x0d\x1d\x02\x15\xa1\x82\ \xeb\xba\xe1\xdc\xdc\x5c\x6e\x64\x64\xa4\xa4\x28\x0a\x6b\xe6\x3a\ \x3b\xae\xd3\x08\xda\x02\xd9\xca\x10\x37\x0d\x64\xa0\xa0\x18\xdd\ \x19\xdb\x6a\xb5\xbc\x34\x4d\xe3\xed\xdb\xb7\x17\x9d\xc8\xa3\x7c\ \xd8\x41\x20\x49\x5c\x05\xda\x39\xa2\x75\x1d\x22\x05\x54\x89\xa1\ \x1b\xac\xac\xac\xfc\xf3\xae\x5d\xbb\x8a\x32\x96\xac\x15\x97\x99\ \xdc\xab\x13\x78\x09\x58\x19\xd2\xa6\x49\xdc\xd2\x11\x0a\x18\x86\ \x4e\xa7\xd3\xb9\x65\x64\x64\xe4\xfa\x8c\x99\x31\x37\x42\x8b\xa1\ \xeb\x43\x14\x14\xe2\xa6\x4e\xda\xcc\x90\xb6\x55\x84\x01\x42\x01\ \xcb\xb2\x08\x82\xe0\x89\xd1\xd1\xd1\x83\x41\x18\x11\x8d\xb6\xa9\ \x8d\x2a\x44\x36\x68\xf9\xbb\x56\x21\x51\x69\x7f\xad\x4a\xb8\x6a\ \x20\x14\xd0\x34\x2d\xcd\x66\xb3\xd8\x9e\x8b\x32\x1d\x92\xbf\xa9\ \xc3\x9e\xea\x11\x4e\x2f\x1e\xc3\x4c\xf3\xd0\xc9\xd1\xfc\xe7\x01\ \x54\x55\x45\xd3\x34\xd1\xbb\x75\x6d\xcd\xc1\xd8\xb5\xc1\xd4\xae\ \x03\x8c\x57\xb7\xf3\xe4\xe9\xcf\x53\xd2\xca\xd8\x4f\xd7\x09\x16\ \x75\xa2\x28\x12\x9a\xa6\x29\xa6\x69\x22\x84\xc0\x38\xe0\x33\x70\ \xab\xc6\xb6\xdc\x1e\x2e\x2f\x9f\x45\xa4\x90\xce\xd6\xb0\x5e\xce\ \x23\x63\xc8\xe5\x72\x51\xa7\xd3\x11\x69\x9c\xb2\x21\x5b\x6c\x3b\ \xec\x30\x6a\xec\x43\xd3\x53\xe6\xd6\x2e\x10\x77\x34\xdc\x63\x55\ \xfc\x05\x0d\xd3\x30\x91\x52\x66\xd2\x34\x45\x06\x12\x6b\xef\x2a\ \xc5\x43\x75\x0e\x97\x8f\x70\x6e\xfd\x18\xad\xe6\x32\xb9\x76\x85\ \xc6\xd7\x4a\x28\x8a\xe8\x3d\xe7\x43\x53\xd5\xcd\x97\xc3\x59\x0e\ \xdf\x5f\x24\x8d\x15\x0a\x6a\x9e\xc5\x8d\xd7\xc9\xca\x2a\xd6\xf3\ \x65\xc2\x15\x83\x5c\x2e\x01\x28\x9b\xa6\x49\x33\x08\x98\xba\x1b\ \xcc\x41\x9b\x1d\x85\x9b\x50\x7e\x74\xdf\xaf\x70\xc3\x8e\x3b\x89\ \x65\x80\xe7\xf9\x04\x41\x80\x94\x12\xdf\xf7\xf1\x83\x80\x50\xba\ \xdc\x51\xf9\x71\xee\xdb\xfe\x4e\x7e\xe5\xc1\x2f\x71\xf3\xe4\x0f\ \x50\x1b\xeb\x3e\xc4\x83\x20\x20\x49\x12\xc2\x30\xc4\xf7\x7d\xa2\ \x24\xa4\xb1\x16\xf2\x8e\xeb\xfe\x1d\x39\x6f\x86\xf7\xdf\xfc\x9b\ \xbc\xe7\x9e\x9f\x21\x90\x6e\xbf\x7d\x9a\xa6\x5b\xf6\x8d\x79\x74\ \xfb\x87\xd9\xad\x3f\xcc\x8f\xdd\xf2\x4b\xdc\xbf\xe3\x31\x44\xd1\ \x27\x08\x7c\x7c\xdf\x27\x8e\x63\xa2\x38\xc2\x73\x5d\xa2\x24\x66\ \xbc\xb0\x9b\xa3\xa3\xef\xe4\x07\xa7\x7e\x81\x01\xef\x76\xee\xbf\ \xe1\xcd\xb8\x49\x1b\xdf\xf3\x89\xa2\x08\x00\x3f\xf0\x71\x5d\x17\ \x5d\xd3\x98\xd2\x6f\xe7\x81\xf1\x9f\xe0\x86\xf2\xdb\xf9\xaf\x6f\ \xf9\x12\xb2\xe0\xe1\xfb\x3e\x9e\xeb\x91\xa6\x69\x37\x6e\x2f\x20\ \x11\x09\xae\x1b\xf0\xa1\x83\x7f\xc2\x1b\x76\xbd\x9b\x8f\xde\xfe\ \xe7\x4c\x4c\x8f\x12\xe2\xe1\x7b\x3e\x61\x18\xf6\xc7\x24\x08\x03\ \xa4\xf0\xb9\x5d\x7b\x9c\x5b\x27\xde\x80\xa2\xc4\x3a\x6e\xe0\x10\ \x04\x11\xbe\xe7\xf5\x1b\x7b\x9e\xd7\x7d\xfd\x27\x01\xfb\x87\x6e\ \xe3\xb3\xaf\xfd\x2e\xf3\x4b\xeb\x1c\x1c\xb9\x15\x05\xa5\x3b\xc0\ \xbe\x4f\x92\x24\x44\x51\x84\xe7\x79\x84\x41\xc8\x80\x3e\xc1\xb2\ \x35\xcb\x8b\xb3\x4f\x70\xc7\xf4\x43\x78\x91\x43\x14\x84\xfd\xfe\ \x92\x24\xe9\xef\x6b\xaa\x79\x06\x72\x75\x9e\x5f\xfa\x1b\x6e\xa8\ \xbf\x81\x5a\x6e\x84\x92\x5e\xc7\xf3\xaf\x0e\x60\x12\x27\x78\xbe\ \x4f\x1c\x45\xe4\xf4\x02\x4a\xc6\xe5\x5b\xe7\xbe\x85\x48\x55\x6c\ \xbf\x49\x1c\x26\x78\x7e\x77\x60\x00\x02\x3f\xc0\x75\x3d\x34\x55\ \xc5\x69\x09\xbe\x7e\xfe\xf3\x28\x71\x9e\x6a\xa5\x40\x92\x24\x78\ \x9e\x87\xe7\x79\xf4\xee\x1a\xcf\x73\x51\x15\xc1\xc5\xb3\x16\x03\ \x43\x2a\x1b\xce\x32\xd7\x4f\xde\x4c\x35\x33\x46\x10\x76\xe3\x88\ \xa2\xa8\x7b\xe1\x37\xbf\xb7\x3a\x1e\x3f\xf5\xc8\x63\xfc\xd3\xf9\ \x4f\xa0\x24\x32\x25\xa3\x94\x88\xe2\x88\x20\x08\xfa\x03\xd8\x9b\ \x25\x0a\x2a\x7e\xe2\x50\xcf\x8e\x33\x50\xa8\x32\xb7\x3e\x8b\x84\ \xef\x19\xc0\x30\x0c\x89\x93\x18\x3f\xb1\x19\x2c\x6c\x43\x13\x59\ \x5a\xde\x1a\x59\x2d\x47\x14\xc7\x84\x61\x78\x35\x90\x20\xc0\xf7\ \x7d\x24\x29\x0a\x1a\x9e\x03\xa9\xea\xd1\x72\xdb\xac\xdb\x2b\x84\ \x9b\xdb\x93\x24\x21\x8e\xe3\xcd\x81\x4f\x49\x64\x42\x1a\x19\xcc\ \x8c\xee\xa2\xe3\xd8\x94\x33\x43\x84\x71\xd0\x8f\x15\x20\x08\x43\ \x7c\xdf\x43\x51\x14\xf2\x45\x9d\xbd\x43\x37\x62\xf9\x4d\x32\x4a\ \x09\x4d\x18\xdd\xb6\x61\xf7\x2e\x8b\xa2\x08\xcf\xf7\x91\x52\x50\ \x19\x30\x49\x02\x1d\x29\x05\x48\x85\x86\xbb\x4c\x12\xa7\xfd\x01\ \x94\x52\xe2\xf9\x3e\x61\x14\x62\xe8\x1a\x73\xcb\xcb\x18\x4a\x16\ \xed\x58\xfb\xd3\x78\x4a\x03\xdf\xf3\xb0\xec\x88\x6c\x9a\x41\x4a\ \x89\xe3\x38\xf8\x71\x44\x11\x83\x2f\xbf\xfe\x47\xbc\xf7\xd0\xaf\ \x72\xb2\xf3\x0f\x5c\x72\x4f\x10\x8b\x00\xc7\x71\x50\x55\xb5\x3f\ \x78\xae\xeb\x92\x1a\x30\x52\x57\xf8\xc6\x99\xe7\xf8\xf9\x47\xff\ \x1f\x7e\xeb\x9b\x1f\x64\x7c\x74\x9c\x34\x49\x71\x9c\xcd\x19\xb5\ \x39\x0b\xa4\x94\x0c\x68\x82\xa7\x2e\xfd\x1d\x3f\xff\xc6\xdf\xe4\ \x53\xaf\xfd\x1a\x96\xef\x50\xca\x54\x70\xdd\x79\xe2\x40\x62\x18\ \x06\x61\x18\x62\x5b\x16\xbe\x1e\xb3\x64\x5f\x62\x89\x45\xf6\x6f\ \xaf\x21\x07\x2f\x70\xa9\xd1\x5d\x20\x5b\x96\x8f\x61\xea\x00\xb8\ \x8e\x83\xdb\x71\xd1\x52\x9d\xa5\xe8\x3b\xdc\x9b\x7d\x2b\x51\x71\ \x8e\x8f\x3f\xfd\x41\x14\x15\x6c\xdb\x46\xd3\xf4\xab\x93\xc4\xf1\ \x89\xf2\x31\xdb\xb7\x0f\xf2\xd4\xa9\xaf\x32\xb3\x7d\x86\xdf\x7b\ \xf1\x71\x32\x46\x86\x30\x0e\xb0\xed\x18\xdd\xd4\x48\xd3\x14\x77\ \x73\x4c\xca\xf9\x22\xbf\xf5\xcc\xe3\x7c\xec\xc1\x3f\x40\x5b\x5c\ \x9b\xa5\xd1\x59\x63\xf9\x6c\x9b\xc8\x4d\x91\xa4\xa4\x69\x4a\xab\ \xd5\x22\x48\x22\x8a\x41\x1e\x57\x5b\xe4\xf7\xbe\xf5\x38\x8f\x5e\ \xff\xc3\x9c\x5d\x3d\xc6\xea\x0b\x92\x76\xdb\x46\x51\x14\xd2\x34\ \xc5\xb6\x6d\xda\xed\x36\x52\x15\x08\xa5\xc2\xf3\x8d\x4f\x30\x3e\ \x37\xca\x6a\x67\x8e\xc5\xd5\x39\x16\xce\x34\xf1\xda\x49\x7f\x0d\ \x16\x86\x21\x69\x9a\x52\x48\xf2\xcc\x06\xdf\xe2\xd9\x85\xcf\x62\ \xf9\x4d\x4e\x2f\xbc\xc2\xec\x31\x9f\x8d\x15\x07\x04\x94\x4a\xa5\ \x2e\xf9\x44\x29\x41\x26\x25\x51\x4a\x3c\xb3\xfa\x57\xb4\xd3\xa3\ \xf8\x9e\xc5\x4b\x17\x4f\xb0\x72\xda\xc1\x77\x62\x32\x59\x13\xe8\ \x0e\x90\x6d\xd9\x14\x92\x02\x8e\x58\xe5\x8b\xb3\xbf\x8d\x65\x59\ \x2c\xaf\x2d\xb0\xf2\x4a\x40\xbb\x61\x61\x64\xb5\xfe\x24\xb1\x1a\ \x6d\x9c\xa2\x24\x91\x15\xbe\xd5\xfc\x14\xcb\xfe\x8d\x5c\x6e\xbd\ \x8c\xe3\xb8\x5c\xfa\x66\x03\x99\xa6\xe4\x92\x1c\x69\x9a\xd2\x68\ \x34\xe9\xc8\x84\x30\x32\x71\x33\x97\xf9\x95\xaf\x7c\x04\x31\x3d\ \xb1\x53\x0a\x04\x66\x5e\x23\x8c\x42\xb2\xd9\x2c\x51\x14\x59\x69\ \x9a\x16\x6b\xd5\x3a\x72\xac\x43\x69\x58\x67\xe5\x3b\x1e\xeb\x17\ \x5d\x4c\xc3\x44\xa8\xa0\x1a\xdd\x37\x59\x10\x04\xab\x03\x03\x03\ \x45\x45\x51\xb2\x52\x4f\x29\xdd\x2c\x89\x97\x52\x16\x5e\xe9\x80\ \xa7\x21\x14\x81\x6a\x76\xd7\x60\x69\x9a\x46\x42\x88\xc0\x30\x8c\ \x42\xa5\x52\x41\xee\xb1\x28\x19\x3a\x57\x8e\x5b\x38\x4b\x09\x9a\ \xa6\x81\x2a\x51\x75\x41\x92\x24\x14\x0a\x85\x4e\xb3\xd9\x14\x3b\ \x67\x76\x16\x1b\x9d\x06\xa3\x37\x1b\xcc\xbf\x68\x63\x37\x42\x34\ \x45\x43\x92\xa2\x67\x54\xe2\x24\xa6\x52\xa9\x30\x3b\x3b\xfb\xec\ \xce\x9d\x3b\x8f\x2a\xa8\x24\x43\x16\x6a\x2a\x58\x7e\xd5\x21\x8d\ \x25\xaa\xa2\x22\x34\x50\xba\x6b\x66\xc2\x30\xa4\x5c\x2e\x5b\x02\ \x51\x6c\xe2\x73\xe3\x5b\x0a\x2c\x1c\x77\x59\x3f\xe7\x21\x43\x15\ \x64\x8a\x96\xed\x4e\x10\xc3\x30\xe8\x74\x3a\xc7\xf2\xf9\xfc\x11\ \x33\x5b\x64\xfb\x23\x12\x67\x21\x61\xfd\x9c\x8f\x76\xc7\xdd\xb7\ \xd2\x6c\x36\x19\x1d\x1d\xe5\xc2\x85\x0b\x78\x9e\xc7\xca\xca\x0a\ \x3f\xf6\x63\x3f\xc6\xbe\x7d\x7b\x99\xbb\x3c\xcf\xcb\x2f\xbf\x42\ \x7d\xbb\x24\x9d\xec\xbe\x00\x3c\xcf\xa3\xd1\x68\x50\x2c\x16\xb9\ \x74\xe9\x12\x9a\xa6\xf1\xd3\x3f\xfd\xd3\x0c\x54\x06\xf8\xab\x4f\ \xfe\x35\x95\x6a\x85\xf2\x9e\x25\x6a\xb5\x1a\x0b\x0b\x0b\x18\x86\ \x81\xa2\x28\x5c\xb8\x70\x81\x30\x0c\xf9\xc0\x07\x3e\xc0\xc1\x83\ \x07\xf9\xe4\x9f\xfe\x05\xaa\xd4\x30\x46\x97\x19\xbc\xbe\xce\xc6\ \xc6\x06\x03\x03\x03\x34\x9b\x4d\x16\x16\x16\x08\x82\x80\x3b\xef\ \xbc\x93\xc7\x1e\x7b\x8c\x30\x0c\x79\xe6\xc9\xe7\x18\xbd\x71\x19\ \x55\x53\xe9\x74\x3a\x14\x0a\x05\x16\x16\x16\x70\x5d\x97\x24\x49\ \x50\x55\x95\x87\x1e\x7a\x88\xb7\xbf\xfd\xed\x7c\xe1\x73\x5f\xe4\ \x95\x13\x27\x98\xbe\x53\x23\x9f\xcf\xb3\xb0\xb0\x80\xe3\x38\x64\ \xb3\x59\x9a\xcd\x26\xcb\xcb\xcb\x54\xab\x55\x3e\xf2\xf8\x47\xb8\ \x7c\xf1\x12\xcf\x3e\xf5\x4d\xf6\x0c\x64\xd9\x7d\x5b\xca\xfa\xc6\ \x3a\x85\x42\x01\x21\x04\x4b\x4b\x4b\x58\x96\x45\x92\x24\x7c\xe0\ \x03\x1f\x60\x6a\x6a\x3b\x4f\x7f\xed\x1b\x34\xd3\x06\x83\x13\x2e\ \xda\xe0\xe0\x20\x8e\xe3\x60\x18\x06\x53\x53\x53\x9c\x3b\x77\x8e\ \x24\x49\x98\x99\x99\xe1\xe8\xd1\xbb\x39\x55\x3b\xc5\x5a\x63\x95\ \xc1\xc1\x41\x14\x45\xe1\x95\x57\x5e\x61\x74\x74\x14\x80\xe1\xe1\ \x61\x2e\x5d\xba\x44\x9a\xa6\xdc\x76\xdb\x6d\x64\xb3\x59\xbe\xfc\ \x95\x2f\x73\xfd\xf5\xd7\x73\xe6\x4c\x16\xc3\x30\xfa\x57\xfb\xc0\ \x81\x03\x5c\xbc\x78\x11\x80\xc3\x87\x0f\x33\x3e\x3e\xce\x2d\x77\ \x1c\x61\x65\x65\x05\x2f\xb2\xd9\xb1\x63\x07\x69\x9a\x32\x34\x34\ \xc4\xae\x5d\xbb\xf8\xca\x57\xbe\xd2\x9b\x25\x94\x4a\x25\x86\x86\ \x86\x78\xf5\xd5\x57\x11\x9a\x24\x9f\xcf\x73\xfc\xf8\x71\xc6\xc6\ \xc6\x68\x36\x9b\xe4\xf3\x79\xd6\xd6\xd6\x10\x42\x50\x2a\x95\xd8\ \xbd\x7b\x37\x03\xf5\x0a\x95\x6a\x89\x72\xb9\x8c\x94\x92\x5a\xad\ \x86\x65\x59\x0c\x0d\x0d\x11\x04\x01\x42\x08\x0a\x85\x02\x37\x5c\ \x7f\x03\x19\x33\xc3\x99\xb3\x67\xd9\xbb\x77\x2f\x6b\x6b\x6b\x20\ \xa0\x50\x28\x30\x3a\x3a\x4a\x36\x9b\xe5\xe4\xc9\x93\x00\xdc\x71\ \xc7\x1d\x94\x4a\x25\x3a\x1d\x0b\xcf\xf3\x38\x79\xf2\x24\xe2\xc6\ \x1b\x6f\xec\x03\x60\x8f\x85\xdb\xed\xb6\x55\x2a\x95\x8a\x41\x10\ \xf4\xf9\xf3\xfb\x7d\x14\x45\xa1\xd3\xe9\xac\x0e\x0d\x0d\x15\x1d\ \xc7\xc9\xf6\x10\xec\x7f\xf7\x89\xe3\x38\x0a\xc3\x30\xc8\xe7\xf3\ \x85\xef\xc7\x9d\xdf\xcd\xda\x8a\xa2\x74\x3a\x9d\x8e\x28\x95\x4a\ \xc5\xff\x53\xfb\x72\xb9\xcc\xa9\x53\xa7\x9e\xdd\xb9\x73\xe7\x51\ \xcf\xf3\xf8\xdf\xc5\x22\xa5\x44\xd3\x34\x36\x36\x36\x18\x1c\x1c\ \xb4\x82\x20\x28\xfe\x4b\x71\xf7\x62\x59\x5b\x5b\x3b\x36\x34\x34\ \x74\xa4\xc7\xd6\xbd\x8f\xb6\x35\xae\x4d\x16\xc6\xb2\xac\x20\x9f\ \xcf\x67\x15\x45\x91\x48\x90\x89\xd8\xc2\xb4\x9b\x8d\x05\xa4\x69\ \x2a\xe2\x38\x8e\x3b\x9d\x0e\x3d\x20\x47\x0a\x64\x17\x53\x41\x91\ \xfd\xb6\x9b\xc1\x48\xdf\xf7\xe3\x4c\x26\x13\x2b\x8a\x22\x85\x14\ \x5d\x06\x15\x12\x94\xcd\x66\x5b\x58\xd8\xb2\x2c\xdf\xf7\xfd\x0d\ \x21\x44\x19\x90\x24\xa2\xcb\xd9\xca\xb5\xb1\x48\x29\x85\xe7\x79\ \x91\x94\x72\x61\x63\x63\x63\x5d\x4a\x19\x90\x8a\x2e\x27\xa7\x02\ \x94\x2e\x0b\x6f\xc6\x21\x36\x9f\xdd\x0d\xcb\xb2\xb6\x9b\xa6\x19\ \x0b\x90\x69\xb2\xd9\xd9\x26\x37\xb3\x25\x96\x20\x08\x94\x24\xe9\ \x36\x50\xc4\x26\xbf\xcb\xcd\x64\xc2\xf8\xae\x21\xa4\xa7\x76\x0f\ \xd4\x1d\x14\x96\x96\x96\x2e\xed\xd8\xb1\xe3\x80\xe7\x7a\x69\x98\ \x73\xc9\xef\x08\x10\xae\x46\xd2\x36\x49\x2d\x1d\x19\x75\x77\x56\ \x55\x55\x00\x72\x78\x78\x58\x64\x32\x19\x02\x11\xc2\x74\x8b\x52\ \x41\x25\xee\xe8\xd0\xce\x90\x5a\x1a\x32\x51\x40\x82\xe7\x79\x72\ \x71\x71\x31\x1a\x1b\x1b\x0b\x14\x45\x91\x8d\xcc\x06\x63\xbb\x35\ \xa2\xa6\x86\x6c\x9b\x24\x8e\x0a\x49\xff\xea\x8a\x76\xbb\x1d\x04\ \x41\x30\x36\x39\x31\x59\xf2\x93\x10\x75\x47\x9b\xac\xae\x93\x34\ \x0d\x12\x4b\x47\x06\xdd\x7e\x01\x4c\xd3\xe4\xc9\x27\x9f\xbc\x70\ \xe8\xd0\xa1\xba\x8c\x25\xab\xb9\x65\xb6\x1f\xd0\x08\xda\x20\xdb\ \x19\x92\x8e\x01\xbe\x8a\x4c\xc1\x30\x0c\x8e\x1f\x3f\xbe\x6d\x62\ \x62\x62\xde\x34\x4c\xa5\x15\xda\x72\xe0\x90\x8f\x96\xea\xc4\x0d\ \x9d\xb4\xd3\x65\xf2\x6e\x92\x03\x61\x59\x56\x9c\x24\xc9\xc4\xf4\ \xf4\x34\x96\xef\x93\xd9\x63\x51\xa8\x28\x04\x9d\x14\xad\xfe\x03\ \x1b\xe8\x8a\x49\xf3\xc9\x2e\xf7\x19\x86\x40\x55\xd5\x01\xd3\x34\ \x73\x9e\xe7\xa3\x6e\xf7\xa9\xdc\xee\xa0\x87\x45\xc2\x78\x0d\x25\ \x36\x90\x81\x46\xe3\x8b\xdd\x1c\xdc\xe6\x2d\xae\x26\x49\x82\x9d\ \xb1\x19\xbc\xbe\xc3\xee\xf1\xfd\x90\xa6\xcc\xad\x5c\x44\x55\x54\ \x3a\xcf\xd4\x09\x17\x75\xd2\x34\x55\x54\x55\xcd\x69\x9a\x96\x17\ \x42\xc0\x1e\x8b\x81\xdb\x35\x72\x69\x9d\x56\x7b\x1d\x21\x15\xc2\ \x73\x15\xac\x13\x39\x84\x90\x68\x9a\x96\x7a\x9e\x07\x52\xb2\x21\ \x5b\xec\xbf\xdf\x46\x4b\x32\x04\x6e\x03\x3d\xcd\x10\xb9\x02\xfb\ \x78\x99\x60\x51\x47\xc9\x2a\x48\x29\x37\x1f\xba\xe0\xee\x5d\xa7\ \x74\xc3\x00\x55\x75\x8a\x75\x6b\x0e\xcb\xb2\xd1\x3a\x55\x1a\x4f\ \x14\xe9\xa5\xc6\x0c\xc3\xa8\xe8\xaa\x9e\xbf\x98\xac\xf2\xe6\xbb\ \x73\x44\x81\x4f\x96\x12\x1d\x7b\x03\x43\xe4\xe8\x7c\xa3\x4c\xb8\ \x6c\xf4\x72\x8d\x91\x4c\x25\x56\xea\x30\x7a\x38\xc0\x53\xda\xbc\ \x71\xe7\x0f\xa2\x3c\xba\xfb\x71\x8a\xd5\x22\xb1\xec\xf2\xec\x26\ \x0b\x4b\xdf\xf7\xf1\x7c\x9f\x54\x84\x4c\x72\x37\x1f\xbc\xf3\xbf\ \xf2\xaf\xaf\xfb\x0d\xf6\x0c\x1d\x65\x78\xdb\x60\x9f\x26\x92\x24\ \x91\xbd\x4c\x75\x9c\x46\x24\xcd\x0a\xf7\x8e\xbf\x93\x43\x85\xb7\ \x72\xcf\xf6\x77\xf3\xa6\x5b\xde\x41\x78\x2d\x0b\xcb\xde\x71\xe2\ \x34\xe1\xd1\xed\x1f\x61\x52\x79\x80\x07\x0f\xbc\x8b\xa3\x33\xef\ \xc2\x11\x1b\x5b\x29\x47\xc6\x71\x8c\xe7\xfa\x84\x49\xc8\x48\x76\ \x9a\x47\x26\x3e\xca\xcf\xdd\xfd\x49\xbc\x66\x9d\x1d\xd3\x53\x84\ \xd2\xed\xf3\x6a\x8f\x85\x3d\xcf\xc5\x30\x54\xa6\xd5\xbb\x78\xcb\ \xd4\xe3\x1c\xaa\xbc\x95\x5f\x79\xcb\xdf\x93\xe6\xec\xcd\x55\x84\ \x8f\x94\x92\x30\x0c\xa5\xef\x7a\x44\x32\xc2\x73\x23\x3e\x7c\xfd\ \x27\xb8\x7f\xf7\xbb\xf8\xd0\x1d\x7f\x48\x65\x34\x47\x24\x83\x3e\ \x67\x4b\x29\xf1\x3d\x8f\x38\x89\x68\x76\x5a\xfc\xee\x43\x4f\xb3\ \xb4\xbe\x86\x32\x5e\xd8\xc3\xc1\x91\x3b\x37\x07\xa4\xcb\xc2\x42\ \x08\x3c\xcf\xc3\x0f\x7c\xc2\x38\xe0\xba\xa1\x5b\x79\x7e\xe1\xef\ \x79\xe1\xe4\x09\x6e\x9f\x7a\x08\x4d\xd1\xfb\x4c\x99\x24\x09\x41\ \x10\x74\x59\x38\x0a\x19\x2b\xee\x66\xb1\x73\x91\xf3\x6b\x27\xb9\ \x6d\xfa\x01\x92\x34\x21\x0e\x63\x7c\xbf\x7b\x92\x5b\xdb\x67\xd4\ \x3c\x95\xcc\x20\xaf\x7b\x2f\xb0\xbf\x7c\x3f\x3b\x87\x0e\x50\xd2\ \xeb\xf8\xbe\x8b\xe7\x79\xc4\x71\x4c\x1c\xc7\xf8\x7e\xf7\x7b\x29\ \x53\x21\x57\x4c\x78\xf6\xc4\xf3\x1c\x1c\xbd\x83\xdd\xb5\x9b\x70\ \x03\xe7\x7b\x59\xd8\xf3\x51\x55\x15\xa7\x2d\x78\x71\xee\x9f\xc9\ \x8a\x2a\x43\x03\x43\xa4\x49\x17\x41\x03\xdf\xef\x27\x13\x3c\xcf\ \x43\x51\x15\x2e\x9f\xb3\x18\x1a\xc9\xe2\x47\x2e\x37\x4c\xdc\xc2\ \x64\xe9\x3a\xfc\xb0\x1b\x47\x0f\x41\x3d\xdf\x27\x0a\x23\x34\x99\ \x61\xb8\x3a\xc4\x46\x7a\x06\xcd\x09\x6c\xce\xae\xbc\x4a\x14\xc5\ \xf8\x5e\xda\x7d\xa0\x43\x77\xc6\xf8\x01\x86\x14\xb8\xa1\xc5\x60\ \x69\x02\x59\xc8\xf3\xfa\xfa\xb9\xfe\x76\x55\x55\xfb\x2c\x1c\xc7\ \x31\x69\x92\xd2\xf4\xd7\x18\x2d\x3f\x4c\x73\x3d\x65\xc5\x9d\xc5\ \x54\xb3\x44\x51\x44\x10\x24\x7d\x02\xe9\x65\x74\x75\x52\x14\x45\ \xc1\x77\x25\x46\xce\x67\xfe\xd2\x02\x1b\xf6\x0a\x81\x6f\xf6\x5f\ \x3c\x71\x1c\x77\x93\x09\x5a\xd2\x7d\x46\x27\x0a\x23\x03\x23\xbc\ \x7c\xf9\x18\xb2\xa2\x40\xd2\x1d\xb4\x1e\xc3\x87\x61\x48\xe0\xfb\ \x18\x42\xa5\x50\x30\x98\xa9\xed\xe7\xcc\xc2\x59\x4c\x91\x45\x11\ \x4a\x3f\x23\xd4\xeb\x3b\xf6\x23\xc8\x40\xa9\x62\x92\x84\xda\x66\ \xf6\x1a\x96\x3a\x97\x49\xe2\x6e\x06\x46\x8a\xb4\x8f\x7e\xb1\x1a\ \x23\x45\x42\xe0\xc7\x04\xae\x8e\xf2\xcd\xf5\xbf\xc2\xc8\x4a\x82\ \xd0\xef\xb2\xde\xe6\x95\xec\xcd\x30\x91\x6a\x1c\x6f\xfc\x2d\x39\ \x6f\x86\xfc\xf8\x3a\x67\xed\x67\x71\x93\x36\x8e\xe3\xe0\x38\x4e\ \xf7\x04\x3d\x0f\xdb\xb6\x09\xfc\x90\x38\xbf\xc8\x2b\xe7\xcf\xf0\ \xc0\xf5\xf7\xf1\x77\x67\x7e\x9b\xb3\xad\x6f\x11\xc6\x21\x96\x65\ \xe1\x38\x4e\x3f\x1b\xe3\xba\x2e\x8a\x96\xf0\xb5\x8b\x9f\xe1\x67\ \xee\xff\x35\x3e\xf3\xea\x6f\x73\x39\x78\x8e\xac\x56\xc0\x71\x5d\ \x1c\xc7\xe9\x5f\x18\xcf\x75\x09\xc3\x88\x65\xfb\x75\xd6\x5b\x2d\ \x28\xb4\x48\xab\xb3\x04\x69\x17\xee\x1d\xc7\xe9\x67\x58\x1c\xc7\ \xc1\xea\x58\x24\x69\xca\x7c\xf4\x6d\x34\x91\xc1\xcf\x5d\xe4\x77\ \xbe\xf9\x33\xa8\x9a\x8a\x65\x59\x58\x1d\xab\x3f\xd8\xae\xe3\x12\ \xc7\x29\x53\x53\x15\xbe\xfc\xca\xe7\x19\x2a\x8d\xf0\x3b\x2f\xfe\ \x9b\xae\x26\x12\xfb\x38\x8e\xd3\xcf\x22\x59\x9d\x0e\xae\xeb\x91\ \xcf\x65\xf9\xb5\xa7\xdf\xcf\x2f\xdd\xf3\xe7\x68\xae\xb2\xce\xdc\ \x85\x39\x96\xce\xb5\x08\xac\x84\x84\x04\x80\x66\xb3\x49\xab\xd3\ \x21\xef\xe6\x09\x55\x95\xbf\xbb\xfc\x6b\xbc\xe5\xf0\x3b\x99\xbb\ \xf8\x1a\x6b\x2f\x49\xda\xed\x4e\x7f\x8d\xd8\x9b\x85\x94\x14\x14\ \xd5\xe0\x78\xe7\x53\xd4\xd7\x14\xda\xd1\x32\xf3\x5f\xd9\x60\xfe\ \x44\x9b\xc8\x4e\xbf\x2f\x0b\x2f\xf8\xdf\xe1\xb9\xa5\xff\x45\xa0\ \xd9\x5c\x7a\xfd\x3c\x57\x4e\x3b\xb4\x9a\x1e\x42\xe9\xb2\xb0\xef\ \xfb\xc4\x41\x44\xa0\x4b\xfc\x34\xc7\xb3\x4b\x7f\xcd\xbd\x7b\x7e\ \x00\x99\x6b\xf1\x9d\x6f\xaf\xb0\x7c\xce\xc2\xe9\x44\xe8\x66\x77\ \xf6\xd8\xb6\x8d\xdd\xb1\xc9\xa5\x05\x7c\x75\x9d\x63\xf6\x5f\xd3\ \xf1\x2c\x5e\xfe\xce\x2c\xcb\xaf\x04\x74\x5a\x0e\xba\xa9\xf6\x19\ \xde\x6a\xb6\xb1\x4b\x92\x58\x96\xf9\x8e\xfd\xf7\x74\x16\x6f\x60\ \xae\xf3\x2a\xeb\xb3\x0e\x97\xbf\xd5\x20\x89\x52\xb2\xd9\x2c\x69\ \x9a\xd2\xb1\x2c\xbc\x44\x92\x92\x65\x39\x7e\x95\x3f\x7c\xf9\xe7\ \x10\xe3\x43\x53\x52\x48\x05\xbd\xd0\x5d\xf7\xe4\xf3\x79\xd6\xd7\ \xd7\xcf\x55\xab\xd5\xdd\xaa\xa2\x62\x4e\x47\xd4\x76\x1a\x6c\x9c\ \x0e\x58\x3e\xe5\x90\x76\x34\xf4\x9c\x82\x96\xed\xb2\x70\x1c\xc7\ \xb6\xaa\xaa\x66\x2e\x97\xd3\x63\x23\x62\xec\x1e\x83\x60\x21\x61\ \xe9\x94\x83\x73\x05\xb4\x8c\x40\xcf\x8a\x3e\x0b\x2b\x8a\x12\xa8\ \xaa\x5a\xc8\xe5\x72\x18\x87\x22\x6a\x15\x9d\xc5\x93\x0e\x1b\xa7\ \x62\x44\x22\xd0\x73\x02\x61\x80\x4c\x25\x85\x42\xa1\xb3\xb1\xb1\ \x21\x86\x86\x86\x8a\x9d\xd8\xe6\xd0\x0f\x17\x59\x3b\x15\xb2\x7c\ \xd2\xc6\x5f\x56\x50\x0c\x30\xf2\x5d\x7d\xa2\x5a\xad\x32\x3b\x3b\ \xfb\xec\x8e\x1d\x3b\x8e\x8a\x54\x90\x4e\x38\xe4\x32\x1a\x8b\x2f\ \x3b\x78\xeb\x09\xba\xa9\xa2\x1a\x20\xb4\xee\xda\x2e\x0c\x43\x4a\ \xa5\x92\x15\x87\x71\xb1\x63\x46\xdc\xfc\xd6\x22\xab\xaf\xf9\xac\ \x9e\xf6\xf0\x57\xba\xed\x8c\x42\x97\x85\x4d\xd3\xc4\x75\xdd\xf5\ \x7c\x3e\x5f\xcf\x97\x8b\x54\x0e\x44\x74\xe6\x23\x5a\x97\x43\xb4\ \x3b\xee\xbd\x05\xc7\x71\xa8\x56\xab\x5c\xb9\x72\xa5\xa7\x0b\xf3\ \xe0\x83\x0f\x72\xf0\xe0\x41\x3a\x2d\x8b\x63\xdf\x3a\xce\xd8\x48\ \x96\xf1\x4c\x83\x62\xa9\xc0\xd2\xe2\x12\xcd\x66\xb3\xa7\x0b\x33\ \x3d\x3d\xcd\x23\x8f\x3c\xc2\xf0\xd0\x30\xff\xf3\x2f\x3f\xc5\xde\ \xc9\x09\x4a\x13\x0b\x8c\xde\x3a\xca\xca\xca\x0a\x61\x18\x92\xcb\ \xe5\x38\x79\xf2\x24\x69\x9a\xf2\xde\xf7\xbe\x97\x83\x07\x0f\xf2\ \x99\x4f\xfd\x0d\x19\x37\x8b\x9a\x9b\xe7\xae\x1f\x9e\xdc\xd4\x90\ \x0d\x54\x55\xe3\xdc\xb9\x73\x84\x61\xc8\xe1\xc3\x87\x79\xdb\xdb\ \xde\x46\x12\x27\x9c\x78\xf9\x55\x0a\x6a\x8b\x6d\xfb\x7d\xb4\x1b\ \xbb\x69\xfc\xd7\x5f\x7f\x1d\x45\x51\x70\x5d\x17\x55\x55\x79\xe3\ \x1b\xdf\xc8\xdb\x7f\xa8\xcb\xc2\xaf\x9e\x7c\x95\xd1\x1b\x54\x86\ \x86\x07\x39\x77\xf6\x1c\xae\xeb\x92\xcb\xe5\x68\xb5\x5a\x7d\x16\ \xfe\xc9\x9f\xfc\x49\x56\x96\x57\x78\xfa\xc9\xe7\xd8\x3b\x58\x65\ \xfb\xf5\x1e\xcd\x56\x83\x72\xb9\x8c\xa0\xcb\xc2\x8d\x46\x03\x21\ \x04\x1f\xff\xf8\xc7\x11\x42\xf0\xd4\xd7\x9e\x21\x2d\x27\x5c\xc8\ \x9c\x47\x1b\x1b\x1b\xe3\xd2\xa5\x4b\x14\x8b\x45\xb6\x6d\xdb\xc6\ \xe5\xcb\x97\x49\x92\x84\x3d\x7b\xf6\xf0\xf6\xb7\xbf\x9d\xb9\xb9\ \x39\x56\xd7\x57\xa8\x54\x2a\xb8\xae\xcb\xf2\xf2\x32\x03\x03\x03\ \x58\x96\x45\xa5\x52\xe9\xeb\xab\xef\x78\xc7\x3b\x50\x14\x85\x63\ \xc7\x8f\x31\x3d\x3d\x4d\xa1\x9c\x47\xd7\x75\xb2\xd9\x2c\xcb\xcb\ \xcb\xec\xd9\xb3\x87\xd7\x5e\x7b\x8d\x28\x8a\xb8\xe7\x9e\x7b\xb8\ \xe9\xa6\x9b\x38\x7f\xfe\x3c\xcd\x66\x13\xcb\x6d\x33\x39\x39\xd9\ \xcf\x5a\x6f\xdf\xbe\xbd\xcf\xcd\xdb\xb7\x6f\xef\xeb\xbc\xae\xe7\ \xb2\xb6\xb6\x46\xa5\x52\xe1\xc5\x17\x5f\x64\x68\x70\x88\x6a\xb5\ \xda\x17\xfc\x01\x6a\xb5\x1a\x07\xf6\x1f\xe0\xf9\x6f\x3c\x4f\xb9\ \x5a\xa2\x58\x2c\x02\x30\x30\x30\x80\xeb\xba\x94\xcb\x65\x7a\xa8\ \x57\x2e\x97\x79\xd3\x9b\xde\xc4\xf1\xe3\xc7\x39\x7b\xee\x2c\x3b\ \x77\xee\xc4\x75\x5d\x2e\x5c\xb8\x40\x3e\x9f\xa7\x56\xab\x21\x84\ \xa0\xd5\x6a\x91\xa6\x29\x53\x53\x53\x84\x61\xc8\xd0\x68\x1d\x29\ \x25\x8b\x4b\x0b\x88\x1b\x6e\xb8\xe1\x1a\x16\xce\x66\xb3\xcc\xce\ \xce\x9e\x9b\x9e\x9e\xde\xdd\x4b\x7c\xaa\xaa\xfa\x3d\x9a\x6d\x0f\ \xb7\x3c\xcf\xb3\x33\x99\x8c\xa9\xaa\xaa\xbe\xb5\xcd\xa6\x7c\xd8\ \x6f\x9b\x24\x09\x52\xca\x28\x8a\xa2\x40\x55\xd5\x42\x3e\x9f\x27\ \x8e\xe3\x7e\x3f\xbd\x37\x63\xef\x99\xaa\x28\x0a\xba\xae\x77\x1a\ \x8d\x86\xa8\xd5\x6a\x45\xdf\xf7\xd1\x75\xbd\xdf\x56\x51\x14\xe2\ \x38\x46\x51\x14\x92\x24\xa1\x56\xab\x71\xea\xd4\xa9\x67\xa7\xa6\ \xa6\x8e\xb6\xdb\x6d\xb2\xd9\xec\x35\xcc\xba\xf5\xbb\x61\x18\xac\ \xae\xae\x52\xaf\xd7\xad\x30\x0c\x8b\x3d\x51\xbe\xa7\x25\xf7\x74\ \xe4\x5e\x4c\x9b\xcc\xbf\x5e\x2c\x16\xeb\x61\x18\x62\x18\x46\x5f\ \x17\xd7\x0a\x85\x62\x2a\xb6\xf0\x6a\x18\x86\x8a\x10\x42\xc9\xe5\ \x72\x64\x32\x19\xc4\x26\xdb\xf6\xf4\xd2\x4d\x61\xb6\x1f\x94\xeb\ \xba\x81\xa6\x69\x6a\x26\x93\x51\x85\x10\x90\x6e\x8a\xf0\xdf\xc5\ \xcd\x9b\x4b\x9f\x68\x7d\x7d\xdd\xaf\xd7\xeb\x79\x21\x84\xcc\x9a\ \x59\xd2\x64\x53\x0f\xde\xc2\xc2\xbd\xcf\xfa\xfa\x7a\x92\xcd\x66\ \xf5\x4c\x26\x93\x66\x32\x99\x2e\x93\xb3\x45\x3f\xde\xd2\x7e\x73\ \xad\x16\x46\x51\x44\xbe\x90\x4f\x45\xda\xe3\x6c\xfa\x4b\xb3\x5e\ \x2c\x9b\x59\x74\x99\x24\x49\x52\x2c\x16\xbb\x2a\xf6\xbf\xd0\xb7\ \x65\x59\x22\x08\x02\xaf\x54\x2a\xc5\xa6\x69\x4a\x52\x90\x49\x57\ \x6f\xd6\x46\x76\x97\x93\xc4\xd2\x20\xee\xbf\x14\x12\xdb\xb6\x6b\ \x13\x13\x13\x84\x51\x44\x52\xf4\xc8\x8d\xc4\xa4\xbe\x02\xbe\x4e\ \xea\xa8\xa4\xae\xda\xbf\xa2\xb6\x6d\xaf\xd7\xeb\xf5\x9a\x69\x9a\ \x5a\x24\x62\xc4\xa8\x4d\x2e\xab\x75\xb5\x5b\xd7\x20\xb1\x55\x44\ \xd2\x1d\x1d\xcf\xf3\x9c\x20\x08\xd6\xea\xf5\xfa\x80\xaa\xaa\x69\ \x3b\xd3\x64\x68\x52\x25\x76\x14\xf0\x74\x12\x57\x45\xfa\x2a\x3d\ \x81\x3e\x0c\xc3\x28\x9b\xcd\x16\x6b\xb5\x5a\xe2\xa4\x1e\xa5\x5d\ \x01\x24\x0a\xa9\xab\x76\xdb\xdb\x2a\x24\x0a\x20\x31\x4d\x53\x5c\ \xba\x74\x29\x3e\x78\xf0\x20\x69\x94\x26\x8d\xfc\x2a\xdb\x76\x69\ \x84\x36\xe0\x99\xa4\xae\x42\xea\xe8\xc8\x50\x60\x9a\x26\xed\x76\ \x3b\x19\x1e\x1e\x8e\x73\x99\x6c\xd2\x0c\x6d\x59\xdb\x17\x23\xd2\ \x6e\xdf\xd2\xd3\x49\x6d\x15\x19\x2b\x28\xaa\xc0\x30\x0c\xc5\xf7\ \x7d\x67\xef\x9e\xbd\x81\x1f\x86\xa9\x1c\xb6\x29\xd6\x15\x12\x4f\ \xa2\x95\x1e\x5c\xd5\x55\x55\xa5\xf1\x85\x1a\xb1\xd5\x65\x5b\x21\ \x84\x6e\xdb\x36\x96\xef\x92\x8c\xad\x91\xd9\x1f\xb1\x2d\x3f\xcd\ \x4a\xeb\x75\x34\xa9\x90\xba\x3a\x8d\x2f\xd6\x7a\x6f\xb3\x2c\x90\ \x49\xd3\x54\xef\x18\x16\x43\x47\x9a\x8c\x56\x07\x51\x11\x34\x3a\ \xcb\xe8\x19\x95\x8d\x2f\xd6\x88\x9b\x1a\x49\x92\x64\x85\x10\x85\ \x34\x4d\x55\x40\xf5\x77\xac\x53\xbe\x25\x4b\x4d\x1f\x67\xa9\x79\ \x05\x45\xa8\x78\xa7\x0b\xd8\xaf\x14\x00\x89\xae\xeb\x39\x40\x13\ \x09\x2c\x69\xeb\x6c\xbf\x4b\x62\xa4\x25\x64\x9a\x10\x04\x6d\xd2\ \x40\xa1\xf3\x62\x89\x60\xde\x40\xcd\xa9\x24\x49\x92\xf3\x3c\x8f\ \xd4\x4d\xf5\xd5\xa9\x39\xa6\x0f\x0e\x30\xae\x4d\xb3\x62\xcd\x11\ \x79\x29\x71\x5b\x63\xe3\xcb\x15\xc2\x30\x42\x08\xa1\xab\xaa\x1a\ \x93\xa2\x9d\xf2\x17\x78\xeb\xd1\x3c\x22\x36\x30\x44\x86\xb6\xbd\ \x8e\xae\x99\xb4\x9e\x2a\x13\x2e\x19\xbd\x5b\xba\x1e\x45\x51\x7e\ \xd5\xea\x30\xfd\x88\x8d\x5a\xf6\x98\x2a\xed\x46\x79\x64\xe7\xe3\ \x0c\x54\x86\x08\x93\xb0\xbf\xa2\x07\x64\x10\x04\x84\x41\x48\xac\ \xfa\xdc\x5e\x7b\x37\x77\x6f\x7f\x27\xff\xe9\x0d\x7f\xcb\x74\xe5\ \x36\x06\xea\xa5\xfe\x83\xbb\xc7\x94\x41\x10\x10\xcb\x90\xd6\x1a\ \xbc\xeb\xe0\xcf\xf3\xd0\xc4\xe3\x1c\x9a\x38\xca\xdd\x07\x1f\xc6\ \x0f\x9d\x5e\x7b\xd9\xd3\x91\xc3\x30\x24\x8c\x23\xde\x3c\xf3\x41\ \x86\xd2\xdb\x79\xd3\x0d\xef\xe2\xc8\xe8\x0f\xe1\xd2\xc2\xdf\x8c\ \xa3\xc7\xc2\xbe\x1f\x90\xc8\x88\x89\x81\xdd\xfc\xc8\xde\x7f\xcf\ \xbf\x3b\xfa\xdf\x59\x9e\xd7\xd9\x31\x39\x43\x94\xfa\x04\xfe\x55\ \x55\xae\xcb\xc2\x1e\xba\xa1\x32\x63\x1c\xe5\x8d\x13\xff\x86\xbd\ \x85\x87\xf8\xc5\x37\x7e\x92\xd8\xb0\xfb\x9a\xf3\xa6\x2a\x27\x7d\ \xcf\x27\x25\xc6\x0f\x42\xde\x77\xf0\x0f\xb9\x77\xe7\x3b\xf9\xe0\ \xad\x7f\x40\xa9\x96\x23\x96\x5d\x1a\xbb\xaa\x26\xfa\x04\x51\x48\ \xa2\x7a\xdc\x5b\xfa\x59\xf6\x0e\xde\x8a\xb2\x7f\xe4\x30\x23\x95\ \xb1\x2e\x1d\x78\x2e\xfe\x26\x27\xf6\xde\x88\x71\x1c\xb0\xb7\x7e\ \x84\xaf\x5c\xfc\x73\x2e\x5f\x59\xe4\xd0\xb6\xdb\x50\x64\x77\xd9\ \xd0\xe3\xd5\x3e\x0b\x87\x21\xbb\xaa\x37\x71\x7e\xfd\x15\x8e\xcd\ \x3d\xc9\x1b\xa6\xff\x35\xba\x92\x21\x0c\xbb\xf6\xb3\x5e\xdf\x3d\ \x12\xc9\xe9\x45\x8a\x66\x95\x0b\xce\xb3\x5c\x57\xb8\x9f\xd1\xca\ \x24\x06\x19\x3c\xcf\xed\xaa\x7c\x69\xda\xd7\x6e\xd3\x24\x25\xa3\ \x64\x49\xf4\x16\x4f\x7c\xfb\x49\x0e\x8d\xdc\x41\x2d\xb3\x0d\x3f\ \xf0\xfa\x71\xf7\x58\xd8\x73\x5d\x34\x55\xc5\x6a\xc2\x4b\x8b\x4f\ \x52\x54\x87\x19\xa9\x0e\x41\x2a\xf0\x3d\x1f\xdf\xef\x0a\xeb\x41\ \x18\xe0\x79\x2e\x42\x11\x5c\x3c\x63\x31\x34\x6a\xe0\x86\x1d\x0e\ \x8e\xdf\x44\xc5\x1c\xee\x8a\xf4\x5b\x58\xd8\x75\x5d\xc2\x30\xa0\ \xdd\xf6\xf8\xf1\x87\xde\xcd\x4b\xcb\x5f\x41\xf1\x43\x1f\x3f\xec\ \x66\x1c\xc2\x4d\x1f\xdd\x56\x5d\x18\x54\xfc\xd8\x61\xa8\x30\xc1\ \x40\x7e\x80\xa6\xdd\x04\xa1\x74\x99\x73\x13\x71\xba\xac\x1b\x90\ \xc6\x29\x4e\xd8\x61\x20\x37\x48\xd1\xac\xd2\x8e\x56\x51\x95\xab\ \xbe\xc2\x28\x8a\xfa\xc9\x84\xee\xec\x4d\x11\x08\x94\x24\x4b\xa2\ \xdb\xb8\x5e\x80\x17\xba\x84\xc1\xb5\x7d\xf7\x66\x8c\x50\x54\x34\ \x91\x65\x64\x60\x94\x75\x6b\x0d\x2f\xb2\x49\xe2\x84\x30\xb8\xba\ \x8c\x09\xc2\x00\xcf\xf7\x51\x84\x4a\xbe\xa0\x33\x53\x3f\x84\x15\ \x36\x50\x31\x00\x05\x7f\x73\x06\x02\x44\x61\x57\x17\x46\x42\xa9\ \x6c\x92\x04\x1a\x9a\xa2\x23\x53\x08\x22\x97\x24\x4e\xfa\x62\x7a\ \x6f\x4c\xa2\x28\xc2\xd4\x35\xae\x2c\x2f\x51\xcc\x54\xd1\x3e\x77\ \xf1\xe3\x78\xda\x3a\x41\xe0\xe3\xba\x29\x19\x99\x5e\x75\x26\xc4\ \x11\x65\x25\xcb\x17\x2e\xff\x2e\x3f\x7d\xf8\xe3\x3c\xb9\xf8\xdf\ \x99\xeb\x9c\xc7\x4f\xec\x2e\xcb\x6e\x2e\x21\x7a\x59\x16\x19\x43\ \x98\x9f\xc3\xee\x24\x1c\xd9\x73\x23\x7f\x73\xea\xb7\xa8\x0c\x16\ \x88\xa2\x18\xd7\x0d\x89\xe3\xb8\x6f\x91\x00\xc8\x18\x0a\x4f\x5c\ \xf8\x5f\x7c\xe4\xde\xff\xc2\x5f\x9c\xfa\x45\xe2\x58\xa2\xa2\xe1\ \xba\x5d\x59\x53\xd7\xf5\x6e\xf0\x91\x24\x4d\x25\x0b\xed\x0b\x2c\ \x8a\x55\x4a\x25\x03\x6d\x78\x8e\x85\xb6\x4e\x1c\x77\x6d\x19\x99\ \x9c\xd9\x8d\xdb\xf5\x70\x2d\x17\x43\x6a\x5c\x09\x5f\x62\xc6\xbb\ \x81\x96\xf6\x1a\xbf\xf9\x8d\x0f\xa0\xeb\x1a\xb6\xd3\x46\x57\xf5\ \xbe\xb0\x1e\xba\x01\x69\x51\x32\x35\x35\xc0\x57\x4f\x7e\x81\x99\ \xc9\x51\x7e\xfd\xf9\x1f\x27\x10\x36\x51\x1c\xe1\xba\x11\xaa\xae\ \x5c\xbd\x2b\xe3\x88\x72\xa1\xcc\xef\x7c\xf3\x71\x3e\x72\xf4\xd7\ \xd1\x6c\x7d\x99\xf5\xc5\x16\x2b\xaf\x37\x89\x83\x94\x5c\xd4\xd5\ \x40\x9b\xcd\x26\x7e\x12\x91\x77\x73\x84\xea\x3a\x7f\xf0\xed\x8f\ \x72\xc3\xcc\x8d\xb4\x5a\x57\x38\xff\x4f\x01\xad\x96\xdb\xd7\x85\ \xdb\xed\x36\x71\x1c\x43\x4e\x20\x45\x95\xcf\x5f\xfe\x6f\x3c\x9c\ \xf9\x57\x34\xd3\x79\x16\x8f\xe9\xac\xce\x36\x89\x9c\xee\xba\x4a\ \xd3\xb4\xbe\xff\x26\x17\xe5\x58\x8e\x5e\xe5\xef\xce\xfe\x0e\x8e\ \x6c\xd2\xf6\x9a\x2c\x5d\xb4\x68\x6e\x61\x61\xcf\xf3\x48\xfc\x98\ \x70\x50\xe0\xcb\x0c\x5f\x5f\xf8\x53\x0e\x6b\x47\x49\x0b\x1d\xe6\ \x2f\x84\x2c\x9c\x6e\xe1\xb5\x63\x34\xa3\xbb\x32\xb0\x2c\xab\xcb\ \xc2\x71\x81\x40\x59\xe3\x45\xfb\x2f\x48\x8c\x80\x85\x53\xeb\xbc\ \xfe\xb4\x4b\xa7\xe9\x7e\x17\x0b\x77\xe8\x14\x52\x62\x4a\x1c\x6b\ \x7e\x86\xf9\x78\x27\x4d\xed\x32\xeb\x97\x5c\x2e\x7c\xa3\x2b\x30\ \x65\x32\x19\x92\x24\x61\x63\xa3\x41\x47\x26\x04\xa1\x8e\xa5\xbc\ \xce\xc7\x9f\xfe\x08\x62\xfb\xc4\xb4\x4c\x3c\xc8\x54\xba\x9d\xe6\ \x72\x39\xa2\x28\xb2\xa4\x94\x45\xdd\x30\x30\x27\x13\x8a\x83\x2a\ \xf6\x52\x44\x63\xd6\x23\x6a\xa8\x68\x86\x82\x9a\xe9\x2f\x90\xe7\ \x34\x4d\x1b\x30\x4d\xb3\x18\xeb\x11\x43\x87\x0d\xe2\x46\xc2\xc6\ \x15\x07\x7f\x59\x25\xf1\x25\x66\x59\x25\x4d\x13\x00\x0b\x68\x1a\ \x86\x31\xa9\x69\x1a\xe6\x9e\x84\x72\x51\xa7\x31\xe7\x61\xcf\x27\ \xf8\x1b\xa0\xe7\x15\x14\xbd\x6b\x6f\x2b\x16\x8b\x96\xe7\x79\xc5\ \x8c\x61\xe2\x19\x01\x33\x77\xe6\x68\xcf\x85\x34\xe7\x5d\xfc\x55\ \x95\xd8\x97\x64\x4a\x57\x59\x78\x6e\x6e\xee\xd9\x89\x89\x89\xa3\ \x49\x94\xa2\x8c\x85\xe4\x73\x2a\x8d\xd7\x03\xac\x85\x10\x81\x8a\ \x66\x8a\x4d\x5b\x9e\x4a\x10\x04\x94\xcb\x65\x2b\x0a\xc2\xa2\x65\ \xc4\xec\xbf\xa7\x40\x73\x36\xc0\x5a\x0a\x70\x16\x24\x69\x04\x66\ \x45\x21\x4d\xba\xba\xb0\xe7\x79\xeb\x86\x61\xd4\x51\x75\x26\xef\ \xd6\x88\xec\x14\x77\x2d\x46\x3b\x72\xcb\x4d\x34\x5b\x4d\x0a\x85\ \x02\xed\x76\x9b\x20\x08\x58\x58\x58\xe0\xb1\xc7\x1e\x23\x9f\xcf\ \x93\x84\x29\x2f\xbd\xfc\x32\x5a\x4d\xc5\xcd\x39\x28\xaa\x82\xe3\ \x38\xac\xae\xae\x52\xad\x56\x39\x7b\xf6\x2c\x33\x33\x33\xdc\x7f\ \xff\xfd\x0c\x0f\x0d\xf3\xe9\xff\xf9\x19\x76\x4d\x4d\xb0\xe0\x2e\ \xb0\xed\xe0\x28\x1b\x8d\x0d\x6c\xdb\xa6\x52\xa9\xf0\xca\x2b\xaf\ \x20\xa5\xe4\x7d\xef\x7b\x1f\xf5\x7a\x9d\x27\xbe\xf2\x35\x74\x0c\ \x32\xc6\x22\xe3\xf7\x8c\xb1\xba\xb6\x82\xd1\xb5\xa9\xf5\xfd\xda\ \x77\xde\x79\x27\x37\x1e\x3e\x8c\xa1\xe9\x7c\xfb\x5b\x2f\x33\x5c\ \x0a\x68\x8f\xb7\xd1\xa6\x55\xaa\xd5\x2a\x67\xce\x9c\x21\x93\xc9\ \x6c\x5a\x36\x34\xee\xbb\xef\x3e\x1e\x7d\xf3\xa3\xbc\xf0\x8d\x17\ \x79\xe9\xa5\x97\x98\xda\x97\xa1\x7c\x7b\x89\xd9\xd9\x59\x2c\xcb\ \xa2\x5c\x2e\xb3\xbe\xbe\xce\xd2\xd2\x12\xd5\x6a\x95\x77\xbf\xfb\ \xdd\x34\x36\x36\x78\xe6\xa9\xe7\xd9\x57\x1f\xc0\xcf\x7a\x34\x06\ \x1a\x0c\x0e\x0e\x12\x86\x21\x2b\x2b\x2b\xb4\xdb\x6d\x3c\xcf\xe3\ \xc3\x1f\xfe\x30\x99\x4c\x86\x57\x5f\x39\x4d\x4b\x69\xe2\x97\x3d\ \xb4\xa9\xe9\x29\xdc\x53\x2e\x9a\xa6\x31\x33\x33\xc3\x99\x33\x67\ \x48\xd3\x94\x5d\xbb\x76\xf1\xc8\x23\x8f\xf0\xe2\x8b\x2f\xb2\xde\ \x5c\xa3\x56\xab\x21\xa5\xe4\xfc\xf9\xf3\xd4\xeb\x75\x3c\xcf\x63\ \x60\x60\xa0\x6f\x9b\x7d\xec\xb1\xc7\xf0\x7d\x9f\x13\x27\x4f\x30\ \x33\x33\x43\xa1\x94\xa7\x5c\x2e\x53\x1f\xac\x73\xfa\xf4\x69\x6e\ \xba\xe9\x26\x4e\x9c\x38\x41\x10\x04\xdc\x7f\xff\xfd\x4c\x4d\x4d\ \xd1\x6e\xb7\xd9\xd8\xd8\xc0\x0b\x1d\xf6\xee\xdb\x0b\x02\x5c\xd7\ \x65\xf7\xee\xdd\xcc\xcf\xcf\x03\xb0\x6d\xdb\x36\xde\xf9\x8e\x77\ \xe0\x79\x1e\x17\x2e\x5e\x40\xd7\xab\xec\x1f\xb8\x8e\x6f\x7f\xfb\ \xdb\xd4\x6a\x35\xea\xf5\x3a\xba\xae\xf7\xb3\xe3\xbb\x77\xef\xe6\ \xbe\x7b\xef\xe3\xe4\x89\x93\xd4\x06\xab\x98\xa6\x49\xb9\x5c\xa6\ \xd5\x6a\xf5\x2f\xa4\x65\x59\x00\x94\xcb\x65\xde\xf6\xb6\xb7\xf1\ \xc2\x0b\x2f\x70\xfe\xc2\x05\xf6\xee\xdd\x8b\x65\x59\x5c\xbc\x78\ \x91\x81\x81\x01\x4a\xa5\x12\xa6\x69\xf2\xda\x6b\xaf\x21\xa5\xe4\ \xc8\x91\x23\x4c\x4c\x4c\xf4\x66\x24\xaf\xbd\xf6\x5a\xd7\x23\xdd\ \x63\xbf\x28\x8a\xc8\x66\xb3\x58\x96\x65\x65\x32\x99\xe2\xb6\x6d\ \xdb\x58\x5a\x5a\x42\xd3\xb4\x1e\xcb\xf6\x59\xb4\xb7\x8f\xeb\xba\ \x73\xd9\x6c\x76\x60\x64\x64\xa4\xd8\x4b\x3e\xf6\xb6\xa7\x69\xda\ \xff\xbe\xe9\xdf\xb3\xc2\x30\x6c\xe6\xf3\xf9\xc9\xf1\xf1\x71\x16\ \x17\x17\x7b\x0b\xf7\xee\x33\x74\x93\xa3\x7b\x8c\xab\x69\x9a\xe5\ \xba\x6e\x71\x66\x66\xa6\xef\x70\x48\xd3\xb4\xcf\xca\x3d\x96\x4e\ \x92\x84\x6a\xb5\xda\x67\xe1\x9e\x51\x60\x2b\xe3\xf7\x72\x97\xbd\ \x9c\x64\xa3\xd1\x60\x68\x68\xc8\xca\xe5\x72\xc5\xad\x2b\x84\xad\ \xb1\xf7\x58\x5e\x51\x14\xda\xed\xf6\x7a\xb5\x5a\xad\xd7\x6a\x35\ \x9a\xcd\x66\x9f\x99\xb5\x6c\x26\x1b\xf4\x98\x6f\xf3\xf9\x27\x6d\ \xdb\x6e\xd4\xeb\x75\xa3\xd1\x68\x90\xcd\xe6\x20\x05\x5d\xdd\xc2\ \xc1\x5b\x18\xdd\xb6\x6d\x3f\x93\xc9\x48\xc7\x71\x10\x42\x90\x35\ \x73\x7d\xdf\x72\x9f\x27\xaf\xb2\xb0\xf0\x3c\x8f\x4c\x26\x13\xae\ \xaf\xaf\xcb\x6c\x26\x4b\x9a\x82\x40\xa2\x6b\xc6\x35\xcc\x2a\x13\ \x6a\x82\x26\x00\x00\x1f\x45\x49\x44\x41\x54\x84\x60\x75\x75\xd5\ \xca\xe5\x72\x99\x76\xbb\xad\x17\x8b\xc5\x2e\x93\x7f\x9f\x7e\x7b\ \x03\x93\xa6\x69\x1b\xe8\x14\x8b\xc5\x10\x49\xbf\xfd\x77\xf3\xb0\ \xaa\xaa\x04\x41\x10\x85\x61\xa8\xab\xaa\x6a\x02\x52\x53\x74\x34\ \x45\xbf\xf6\x1c\x05\x08\x04\xb6\x6d\x8b\x24\x49\x56\x72\xb9\x5c\ \xd9\xb6\xed\xd4\xd0\xcd\xbe\x9c\xaa\x8d\xec\x2d\x99\xf1\x86\x81\ \x48\x05\xa8\x5d\x9d\xe0\xf2\xe5\xcb\xcd\xb1\xb1\xb1\xed\x9e\xe7\ \x93\x16\x3d\xb2\x63\x11\x69\x92\x82\xab\x93\xb4\x32\x24\x2d\xad\ \xef\x91\x76\x1c\xa7\x30\x31\x31\xa1\xaa\xaa\x4a\xac\x24\x24\xdb\ \xda\x94\xcb\x2a\x49\x24\x51\x82\x0c\x51\x43\x43\x3a\x3a\x02\x81\ \xe3\x38\xba\xe7\x79\xa5\x7a\xbd\x6e\xa8\xaa\x4a\x33\xdb\x60\x62\ \x87\x4e\xe4\x27\xc8\x4e\x96\xa4\xad\x21\x5d\xb5\x9f\xf4\x74\x5d\ \x37\xc9\x64\x32\xf6\xf6\xc9\xc9\x01\x37\x0e\xc8\xef\x75\x50\x84\ \x20\x75\x55\xd2\x8e\x49\xd2\xd4\x21\xa5\xeb\x91\x36\x0c\xce\x9c\ \x39\xa3\x4f\x4c\x4c\x94\x64\x22\x69\xe6\x36\x18\x99\xd6\x88\xfc\ \x14\x6c\x93\xa4\xad\x93\x74\xba\x71\x1b\x86\xce\xca\xca\x0a\x43\ \x43\x43\xcd\x5c\x36\x67\xac\x07\x1d\x86\x0f\x74\x0d\xec\xa9\xab\ \x20\x2d\x93\x68\xa3\x1b\xb3\xa2\x77\x97\x53\xed\x76\x7b\x6e\x68\ \x70\x70\xbf\x17\x46\x88\x6d\x36\xc5\xaa\x42\x1c\x26\x68\xe5\x37\ \xae\xa2\x48\x9d\xd6\xd7\xab\x44\x2b\x46\xaf\xf6\x22\xaf\x69\x1a\ \x71\x9a\x20\x47\x6d\xb4\xc3\x2d\xf6\xd5\x6e\x66\xc5\xbe\x8c\xed\ \x36\x50\xbc\x0c\x8d\x2f\x0c\xf6\xec\x17\x5a\x1c\xc7\x4a\x18\x86\ \x58\x9a\x83\xb9\x63\x89\xfd\x3b\x0f\x32\x59\x9d\xe6\xe9\x73\xff\ \x40\x25\x57\x63\xfd\xab\x39\x82\x05\x13\xd7\x75\x15\x45\x51\xb4\ \xde\xed\x14\xef\x6c\x52\xbc\x39\xc3\x74\xe9\x00\xe7\x57\x4e\x92\ \xa6\x92\xe8\x74\x15\xfb\x44\xbe\x97\x20\x50\xa3\x28\xd2\x7d\x37\ \x60\x21\x5d\xe1\xe0\x4d\x0e\x25\x31\x8c\x24\xc0\xf6\x56\x89\x2c\ \x81\x73\xac\x4a\xb0\xa0\xf7\x6e\xd1\x9c\xaa\xa9\xc8\x50\x62\x4f\ \xad\x31\x70\x7b\x99\xaa\x36\xc1\xba\x33\x8f\x65\x3b\x18\xd6\x00\ \x8d\x7f\x2e\x03\xa2\x97\x2e\xd3\x55\x29\x38\x1f\x2e\xb2\xff\x68\ \x19\x2d\xc9\x92\x33\xb2\xcc\x6f\xbc\x4e\x45\x14\xe8\x3c\x3b\x40\ \xb8\x64\xf4\xd2\x68\x75\x10\xb4\x02\x8f\x1d\xb7\xfa\x50\x6c\x73\ \xd3\xf0\x3d\x28\x6f\xde\xf1\xb3\x8c\x0c\x4e\x11\xa7\x61\xdf\x23\ \x0d\x48\xdf\xf7\xf1\x3d\x9f\x98\x80\x5d\xc6\x03\xfc\xab\x1b\x3e\ \xc6\x8f\x5d\xf7\x9b\x5c\x3f\xf8\x28\xa3\x63\xa3\x7d\xed\x36\xde\ \x74\x9f\x06\x41\x40\x9c\x44\xac\xaf\x06\xfc\xe8\xc1\x9f\x43\xb6\ \x07\xf9\xa9\x23\xbf\xce\x0f\x1d\x79\x1f\x41\xe2\x5f\xe3\x50\xf5\ \x3c\xaf\xef\xfc\x7c\xf3\xcc\x87\xd8\xa1\x3f\xc8\xdd\x3b\x7f\x90\ \x37\xed\xfc\x20\xa1\x66\xe3\x79\x57\xfb\xee\x89\x56\x51\x1a\x31\ \x9c\x9f\xe2\xa1\x89\x0f\xf1\x73\x77\xfd\x19\xf6\xd2\x20\x37\xee\ \xb9\x95\x20\xb5\xaf\xd5\x85\xfd\x00\xd7\x75\xd1\x74\xc1\x8e\xdc\ \xed\x7c\xf8\xc8\x1f\x70\xa0\xfa\x46\x7e\xe9\xbe\x4f\x11\x67\xba\ \x6d\xb7\x78\xa4\xa5\xeb\x7a\x24\xa4\x78\x81\xcf\xfb\x0e\xfc\x01\ \xf7\xed\xf8\x51\x7e\xe6\x96\x4f\x32\x36\xbe\x8d\x30\xbd\xd6\x23\ \xed\xf9\x1e\x7e\x10\x10\x0b\x97\xbb\x73\x1f\xe3\xc0\xf0\x9d\x28\ \x35\x73\x9c\xa1\xfc\x58\x9f\x67\x7b\xce\xa5\xfe\x49\xc6\x01\xd7\ \x0d\x1f\xe1\x89\x4b\x7f\xc1\x97\x5f\x78\x8a\xbd\x43\x37\xf4\x6c\ \x1a\xfd\x37\x5f\xdf\x23\x1d\xfa\xd4\x8c\x49\xe6\xdb\x17\x78\x75\ \xe5\x05\x6e\x99\x78\x00\x3f\xb6\xfb\xfa\xeb\x56\x8f\xb4\xe7\x79\ \x64\xf5\x22\xe5\x4c\x95\x67\x16\x3e\xcd\x91\x91\x47\x29\x64\x4a\ \x68\xa9\x89\xe7\x79\xb8\xae\xbb\xc5\xc7\xec\x11\x47\x11\xe5\xec\ \x00\x4a\xa1\xcd\x17\x5f\xfc\x12\x3b\x6b\x07\x29\x68\x15\xfc\x20\ \xc0\xf3\xbd\xab\x16\x5f\xdf\xbf\xea\x91\x6e\xe8\x7c\xe6\xe5\x3f\ \x24\x9f\x8e\x33\x33\x3e\x09\xa9\x8a\xe7\x5f\xf5\x48\x77\xe3\xea\ \x7a\xa4\x2f\x9c\xb6\xa8\x0d\x2b\xac\x3b\x8b\xec\x9f\x38\x44\x4e\ \x2d\x6f\xb2\xb2\x77\xcd\x85\x8f\xc2\x90\x76\xdb\xe3\xa7\x1e\xfd\ \x71\xbe\x7a\xe9\x93\x28\x61\x1c\x63\x79\x9d\x4d\x16\xbe\xea\x76\ \xef\x79\x89\x91\x02\x27\xb4\x19\x2e\x6c\x67\xa8\x32\x44\xcb\x6d\ \xf5\xf5\xd5\xad\xbc\x1a\x86\x21\x71\x94\x12\xa4\x0e\xb5\xdc\x08\ \x05\x7d\x80\x8e\xdf\x24\x6f\x94\xfb\x09\x87\x9e\x1a\xd7\x9b\xb1\ \xa9\x4c\x10\x28\x68\x69\x9e\x58\xb3\xf0\xbc\x08\x3f\xf2\x09\x43\ \xbf\xdf\x77\x92\x24\x04\xa1\x4f\x12\xa7\xa4\x52\x22\x63\x9d\xb1\ \xda\x04\xab\xad\x35\xc2\x34\xd8\xe4\xd5\x2d\x1e\xe9\x4d\x83\x80\ \xa2\xa8\x64\xb3\x1a\xe3\xe5\x19\x2c\xbf\x89\x21\xf2\x48\xb9\xe9\ \xcf\x0e\xba\x49\x8d\x5e\xa6\x47\x4a\x28\x57\x4c\xe2\x40\x43\x57\ \x0c\x04\x0a\x61\xe2\x13\x47\xc9\x35\x1e\xe9\x1e\x17\x1b\xba\xc6\ \xdc\xd2\x12\x45\xa3\x8a\x72\xac\xf9\x69\x7c\xd1\xda\xf4\x39\x7b\ \xdf\x57\x17\xfe\xc6\xca\xa7\xd9\x6e\xdc\xce\xf8\x4e\x85\x13\xcd\ \x7f\xc2\x89\xdb\xb8\x6e\x37\x63\xd2\xbb\x85\x5d\xd7\x25\x08\x43\ \x0a\xb5\x90\x97\x5f\xff\x36\x8f\x3f\xfc\x4b\x7c\xfc\xf9\xf7\xf1\ \xed\xc5\x27\x49\x93\xf4\x9a\x6c\x4c\xaf\x6f\xd5\x48\xf9\xfa\x85\ \xcf\xf2\xf8\xbd\xbf\xc2\xe7\x4e\xfd\x01\x67\xec\xaf\xa1\xa2\xe2\ \xba\xd7\xce\x6e\xd7\xf5\x88\xe2\x88\x25\xeb\x12\xed\x8e\x4d\x6d\ \xd8\x40\xd6\x2f\xb2\x61\xaf\x10\x27\xdd\x4c\x4f\x3f\x9d\xe5\xfb\ \xb8\x8e\x8b\x94\xd0\xe0\x2c\x7b\x86\x6e\xc0\xcb\x5f\xe4\x77\x9e\ \xf9\x18\xba\xa6\x5f\x33\xbb\xbb\x71\x3b\x24\x49\xca\xd4\xd4\x00\ \x4f\x9d\xfe\x67\xc6\x6b\x93\xfc\xc6\x73\xef\x07\x91\xf4\xfb\xee\ \x5d\x78\xd7\xeb\xde\xc2\x95\x7c\x99\xdf\x78\xe6\x83\x7c\xf0\xa6\ \xdf\x41\x6b\x27\x8b\xb4\xa3\x15\x96\xce\x35\xf0\x3b\x29\x71\x9a\ \x47\x08\x41\xb3\xd9\xa4\xdd\xb1\x28\xb8\x39\x84\xa9\xf2\x47\x2f\ \x3f\xce\x1b\xf6\xfe\x10\xab\xf1\x79\xd6\xbf\xd3\xe5\xdf\x5e\x32\ \xc1\xb6\x6d\x5a\xad\x56\x37\x87\x2f\x2a\x3c\xbb\xf6\x67\xa8\xaf\ \x25\xb4\xc3\x65\x5a\x97\x57\x59\x38\xd3\xc0\x6f\xa7\xdf\xc3\xc2\ \xf9\x28\xc7\x42\xf8\x32\x9f\x3f\xf3\x87\x58\x41\x93\x96\x7f\x9e\ \xd5\x79\x9b\x56\xd3\x05\x21\xb7\xe8\xc2\x31\x81\x96\x12\x93\xe7\ \x2b\xaf\xff\x0f\xee\xd1\xde\x02\x19\x87\xb3\xf3\x27\x58\x39\xdb\ \xd5\x85\x35\x43\x05\xa0\xdd\x6e\x63\x37\x6d\x32\x51\x81\x66\xf2\ \x3a\x5f\xb8\xf4\xbb\xb8\x71\x93\x8b\xce\x4b\x6c\x2c\xf8\x6c\x2c\ \x37\x31\xf2\x5d\x0d\xc4\xb6\x6d\xac\x46\x07\xbb\xd8\xd5\x85\x9f\ \x5f\xfb\x4b\x2e\xd9\x7b\x58\x8b\xcf\x11\x58\x3e\xe7\x9f\x5e\x43\ \xd1\xe9\xeb\xc2\xcd\x66\x93\x4e\x9a\x10\x44\x06\xe6\xc0\x02\xbf\ \xfc\xa5\x9f\x40\xec\xd8\xb9\x43\xc6\xb6\xc4\x2c\x68\x24\x69\x42\ \x2e\x97\x63\x7d\x7d\xfd\xdc\xe0\xe0\xe0\x6e\x5d\xd3\xd1\xb6\x85\ \xe4\xea\x82\x8d\xb3\x3e\x76\x23\x40\x7a\x3a\xc8\xae\xde\xbb\x99\ \x91\x5e\xad\x54\x2a\x45\x20\x8b\x2e\xc9\x5f\x97\x12\x2d\xa7\xb4\ \x96\x1c\x12\x57\x23\xf1\x40\xcf\x0a\x52\x99\xf6\x3d\xd2\xa6\x69\ \x16\x72\xb9\x1c\xca\x8c\x4f\x5e\x55\x59\x39\xef\x10\x75\x20\xf1\ \xe8\x56\x11\xe9\xdd\x75\x5d\x3e\x9f\x5f\x6c\xb5\x5a\xa5\x91\xe1\ \x91\x82\x15\x5a\xcc\x3c\x98\x63\xf9\x84\x47\x6b\xc9\x45\x09\x0c\ \x02\x27\xc1\xc8\x77\x39\xfb\x1a\x16\x0e\x12\xf4\xbd\x31\x85\xac\ \xca\xca\x69\x9b\xd0\x92\xa4\x9e\x82\x4c\x41\xcb\x82\xd8\x4c\xc7\ \x55\x2a\x15\x4b\xa6\xb2\xd8\xc1\x67\xef\xbd\x79\x56\x4e\xba\xd8\ \xab\x21\xa9\xaf\x10\x3a\x29\x66\x49\x25\x89\x93\x9e\xe9\xf4\x58\ \x3e\x9f\x3f\x62\x98\x59\xc6\xee\x56\xb0\x97\x23\xda\x73\x21\xda\ \xa1\x03\x87\x7a\x86\x6e\xe6\xe6\xe6\x48\xd3\x94\x85\x85\x05\x1e\ \x7e\xf8\x61\x0e\x1c\x38\x40\x6b\xa3\xcd\x73\xcf\x7e\x83\xc9\x5d\ \x19\x36\x1a\x1b\x14\x8b\x05\x36\x36\x36\x68\x34\x1a\x54\xab\x55\ \xce\x9d\x3b\x87\xa6\x69\xbc\xef\x7d\xef\xa3\x90\x2f\xf0\x99\x4f\ \x7d\x96\xda\xb6\x2a\x57\xd2\x39\x86\x86\x87\x58\x5a\x5a\xc2\x34\ \xbb\x0e\xfa\x8b\x17\x2f\x12\x86\x21\x8f\x3f\xfe\x38\xf5\x7a\x9d\ \x2f\x7e\xfe\x1f\xbb\x25\x57\x43\xcb\x8c\x1c\x1a\x61\x75\x75\x95\ \x6c\x2e\xdb\xd7\xa6\x3d\xcf\xe3\xd6\x5b\x6f\xe5\x91\x47\x1e\xc1\ \xd0\x0d\x9e\x7d\xea\x79\x0a\x03\x0d\xe2\x52\x44\x14\xc7\x0c\x0e\ \xd6\xb9\x70\xe1\x02\xaa\xaa\x76\x4d\x42\x8a\xc2\xbd\xf7\xde\xcb\ \xfd\xf7\xdf\xcf\xd3\x5f\x7f\x86\xd3\xa7\xce\x50\x9b\xd4\x31\x32\ \x26\xcd\x46\x03\xdb\xb5\xc9\x66\xb2\x74\x3a\x1d\x56\x56\x56\xa8\ \xd5\x6a\xbc\xef\xfd\xef\x63\x7e\x6e\x9e\xe7\x9e\x7a\x9e\xeb\x46\ \xf3\x44\x83\x01\x8d\x66\x93\x5a\xad\x4a\x14\x45\x2c\x2f\x2f\xf7\ \x2d\x29\x1f\xfa\xd0\x87\xa8\xd7\x6b\x7c\xeb\xf9\x97\x58\xd5\x57\ \x88\xb6\x07\x68\x3b\x76\xec\xe8\x83\x75\xa1\x50\xe0\xf4\xe9\xd3\ \x24\x49\xc2\xde\xbd\x7b\xb9\xfb\xee\xbb\x09\x82\x80\x95\xf5\x65\ \x06\x07\x07\xd9\xd8\xd8\xe8\xdf\xba\x96\x65\x5d\xe3\xa9\x7e\xe0\ \x81\x07\x50\x55\x95\xaf\x3f\xf5\x75\x6e\xbb\xf5\x36\xf4\xe3\x1a\ \xa3\xa3\xa3\xfd\x5b\xf6\xe6\x9b\x6f\xe6\xd2\xa5\x4b\x24\x49\xc2\ \xad\xb7\xde\x4a\xa1\xd0\xbd\x10\xcb\xcb\xcb\xf8\x91\xcb\xee\x3d\ \xbb\x31\x33\x26\x8e\xe3\x70\xd3\x4d\x37\xf1\xb9\xcf\x7d\x0e\xdf\ \xf7\xd9\xb1\x63\x07\x87\x0e\x1d\x62\xdf\xbe\x7d\xb4\xda\x2d\xd6\ \xd7\xd7\x29\x16\x8b\x3c\xf7\xdc\x73\x8c\x8d\x8d\xd1\xe9\x74\xd0\ \x75\x9d\x2b\x57\xae\xa0\x28\x0a\xd3\xd3\xd3\x3c\xfa\xe8\xa3\x34\ \x9b\x4d\x6c\xcf\xa2\x56\xab\x01\xb0\x52\xc8\x73\xee\xdc\x39\x66\ \x66\x66\xb8\x70\xe1\x02\xab\xab\xab\x14\x0a\x05\xee\xb8\xfd\x0e\ \x4e\x16\x4e\x72\xf6\xfc\x59\x0e\x1d\x3c\xc4\xfa\xfa\x3a\x97\x2e\ \x5d\xa2\x5e\xaf\x53\xad\x56\xb9\x78\xf1\x22\x27\x4e\x9c\x00\xd8\ \x52\xb7\xdc\x4d\xae\xbe\xf4\xd2\x4b\x57\x3d\xd2\x3d\x1d\xb4\xa7\ \x0b\xcf\xcc\xcc\xec\xce\xe7\xf3\x7d\xee\xdb\xaa\xdb\x6e\xf5\x09\ \x5b\x96\xb5\x3a\x38\x38\x58\xcc\x64\x32\xd9\x5e\x8e\x6d\x6b\x6d\ \xee\xd6\xbe\x93\x24\x89\xc2\x30\x0c\xaa\xd5\x6a\xa1\x52\xa9\xf4\ \x8d\xe1\x5b\x75\xe1\xad\x35\xbe\x42\x88\xc5\x4e\xa7\x53\xda\xb5\ \x6b\x57\xa1\xd5\x6a\x5d\xc3\xcb\x5b\x75\xe7\x34\x4d\x19\x18\x18\ \xe0\xd4\xa9\x53\xcf\x1e\x38\x70\xe0\xa8\xa2\x28\xdd\x67\xf2\x16\ \x9f\xf3\x56\x8e\xd7\x34\x8d\x66\xb3\xc9\xd0\xd0\x90\x95\xc9\x64\ \x8a\xbd\xaa\xa8\xad\xbc\xdf\xd3\xa7\x7b\xe8\xb7\xb6\xb6\x76\x6c\ \x64\x64\xe4\x48\xb9\x5c\xee\xd6\xc4\xf4\x6a\x9a\xd3\x44\x6e\x28\ \xaa\x10\x42\x88\x1e\x23\xca\x34\x4d\xd7\x3d\xcf\x2b\xb6\xdb\xed\ \x54\x11\x8a\x90\xa9\xb8\xea\x1d\xde\xc2\x9f\x42\x08\x91\x24\xc9\ \x7c\xa7\xd3\xa9\xd8\xb6\x9d\xef\x5a\x8c\x95\x6e\x9d\xad\x72\x0d\ \x33\xf7\x4e\xc4\x0f\xc3\xd0\x75\x5d\xb7\xe6\x38\x8e\x54\x85\x4a\ \x9a\xf2\x7d\xfb\xde\xac\x17\x5e\x54\x14\x45\xac\xac\xac\x44\x02\ \x21\xb7\xb2\xad\x10\xb2\x3f\xf8\xaa\xaa\x62\xdb\xb6\x04\x56\x1a\ \x8d\xc6\x46\x92\x24\xc1\xbf\xd4\xf7\xe6\x52\xca\x71\x1c\x27\xef\ \xfb\x7e\xac\x20\x64\x2a\xaf\xd6\x0b\xf7\xda\xab\xaa\x0a\x20\xa2\ \x28\x0a\xe3\x38\x76\xd3\x34\x6d\x6f\x6c\x6c\x24\x48\x01\x12\x54\ \x4d\xd5\xb4\xf1\xbd\x83\xb5\xa4\xa9\x23\xd4\x6e\x6d\x6c\x77\x6d\ \xe4\x8f\x0e\x0e\x0e\xc6\x49\x9c\x10\x16\x1d\x72\xdb\x03\x68\x65\ \x48\xd6\x4d\x92\x8e\xd6\x7d\xd9\x1a\x12\x40\x49\x92\xc4\xa9\xd5\ \x6a\x59\x4d\xd3\x32\x31\x09\xd1\x78\x83\x81\x5c\x96\x68\xcd\x20\ \xd9\x30\x91\x91\x82\x62\x76\x5d\xe7\x41\x10\xb8\xc0\xda\xe0\xe0\ \xe0\x80\xa2\x28\xe9\xba\xba\xce\xe4\x75\x2a\xc9\x86\x49\xbc\x62\ \x92\x3a\x3a\x42\x93\x08\xad\x3b\x63\x72\xb9\xdc\x36\x45\x51\x46\ \x2b\x95\x0a\x7e\x1c\x92\xb9\xae\x83\xa1\x2a\xc4\x2d\x83\xb4\xd1\ \xe5\x5b\xa1\x4b\x50\x24\xba\xd6\xbd\x8d\x47\x46\x46\x22\x99\xa4\ \xc9\x9a\xb2\xc1\xf6\xeb\x15\xc2\x55\x83\x68\xd5\x44\xda\x3a\x42\ \x91\x08\xbd\xeb\xd2\x6f\x34\x1a\xb9\xc9\xc9\xc9\x11\x24\xca\x62\ \xd0\x60\xea\x66\x20\x12\x24\x4d\x9d\xa4\x91\x21\xb1\x34\x54\x53\ \x22\x14\x41\xb3\xd9\x5c\x0f\xc3\x70\xdf\xb6\x6d\xdb\xca\x8e\xef\ \x63\xee\xb4\xc9\x55\x14\xc2\x0e\x68\xf5\xb7\xae\xa3\xa5\x19\xda\ \x4f\x55\x89\xd6\x34\x0c\xc3\x40\xd7\xf5\xc1\x72\xb9\x5c\xb0\x3d\ \x0f\x65\x8f\xc5\xe8\x6d\x11\x78\x0a\x9e\xdf\x22\x27\xca\xa4\x6d\ \x93\xd6\x53\x15\x14\x45\xa1\xd1\x68\xa4\x85\x42\xa1\xaa\xeb\x7a\ \xbe\x6d\xb4\xd9\x76\x9f\x4a\x21\x17\x90\x84\x1e\x7a\x9c\x27\x49\ \x13\x9c\xa7\x46\x88\x3b\x0a\xaa\xaa\x56\x2d\xcb\x2a\x17\x8b\xc5\ \x31\x21\x04\xde\x75\xab\x8c\xde\x2e\x49\x5d\x41\xea\xc7\xc8\x58\ \x12\x9f\xaf\xe1\x9c\xc9\xf4\x3c\x37\x51\x18\x86\x64\x74\x93\x0d\ \xdd\x62\xc7\x83\x21\x39\x59\xc5\xf7\x3d\x48\x23\xbc\x86\xc4\x7f\ \xa9\x8a\xbf\xa4\x53\x2c\x16\x10\x42\x8c\x54\x06\x2a\x23\xd2\x95\ \x34\xf7\x2e\xb2\xed\xee\x0c\x8d\x8d\x0d\x0a\x4a\x85\xc0\x0b\xd1\ \xdb\x55\x5a\xdf\x28\x62\x9a\x26\x9a\xa6\x91\xcb\xe5\xc2\xc8\x8f\ \x0c\xbb\x6a\x33\x7e\x6f\x91\xd8\x57\x29\x68\x05\xe6\xd6\x2e\x52\ \x52\x86\xd8\xf8\xc7\x32\x32\x50\x31\x0c\x43\x13\x42\xa4\xa6\x61\ \xd0\x4c\x5c\x26\xef\x04\x4f\x5f\xe3\xd6\xd1\x7b\x51\xde\xb6\xeb\ \xe7\x19\x1f\x9b\x21\xc6\xc7\xf7\xaf\xf5\x31\x7b\x81\x47\xa4\x78\ \xec\xd2\xdf\xc4\x2f\x3c\xf0\xa7\xfc\xc2\x83\x9f\x60\x62\xf0\x20\ \xe5\x09\xf3\xbb\x3d\xd2\xa9\xef\xfb\x04\x49\x40\xa7\x19\xf1\xe1\ \x5b\x7f\x9f\x8f\xde\xf1\xa7\x4c\x8c\xec\xe6\xae\x5b\xee\xc1\x4b\ \xec\x1e\xb9\xa4\x49\x92\x5c\xf5\x48\x13\x71\xef\xc8\x7b\x79\xd7\ \xae\x5f\xe5\xd6\xbd\xf7\x73\x64\xe6\x51\x3c\x63\x03\xdf\x0b\x7a\ \x04\x20\xbb\xb5\xc8\x01\x51\x12\x32\x94\x99\xe6\xd1\xc9\x9f\xe1\ \xe7\x8f\xfe\x05\x71\x73\x82\x9b\xf6\x1f\xc1\xc7\xea\x7b\xbb\xbb\ \x0c\xdf\x95\x35\xd5\x0c\x4c\x67\x6e\xe7\x4f\xde\xf6\x1d\xae\x1b\ \x3d\xca\x8f\xdf\xf9\x9f\x89\x2b\xad\x2e\x0b\x7b\x5e\xbf\x6a\xd4\ \xf3\x7d\x34\x1d\xe6\xe7\x3a\xfc\xf2\x5d\x9f\x61\x6f\xf5\x28\xff\ \xe5\x4d\x9f\x23\x3b\x92\x12\xc4\xdd\xed\x71\x1c\xcb\xae\x47\xda\ \x27\x4c\x43\x3a\x5e\x87\x5f\xb8\xf1\xb3\x8c\x99\x07\x51\x46\xf2\ \xd3\x4c\x0d\xec\x25\x08\xc2\x6b\x0a\xae\xbb\x2c\x1c\x10\xc6\x3e\ \x77\x6c\x7f\x94\xdf\x7f\xe1\x63\x84\x56\x86\x1f\xb9\xe1\x03\x64\ \xd4\x5c\x9f\x95\x7b\x32\xa5\xbf\x59\x0a\x3a\x5d\xb8\x99\x53\x6b\ \xcf\xf3\xe5\x93\x7f\xc3\x3b\xf7\xfe\x7b\x26\x2a\x7b\x88\xa3\xb8\ \xcf\xc2\x3d\x5d\xd8\xf3\x3c\x4c\x25\xc7\xc4\xc0\x0e\x3e\x77\xfe\ \xb7\xb9\xa1\xf8\x83\x3c\xb0\xf7\xad\x0c\x66\x27\x71\xbd\xab\x9a\ \x73\x4f\x17\x8e\xa3\x84\x72\x76\x00\x91\xed\xf0\xc4\x4b\x4f\xb0\ \xb3\x76\x3d\xa3\x85\x1d\x78\x81\xb7\xd5\x1c\x4f\xe0\xfb\x38\xae\ \x87\xae\x29\x04\xad\x3c\x9f\x3c\xf6\x1b\x4c\x9a\x47\x78\xf0\xba\ \xb7\x60\xaa\x79\x5c\xdf\xc5\x73\xb7\xb2\xb0\x07\x48\xf2\xe1\x14\ \xeb\xe9\x19\x2a\xf9\x12\xdb\x4a\x3b\xa8\x67\xc7\xf1\x7d\xaf\x8f\ \x6f\x5b\x3d\xd2\x44\x1a\x37\xee\x3e\xc4\xf3\xeb\x9f\x42\x73\x7c\ \x97\xb9\xe6\x25\xa2\x28\x26\xf0\x23\x24\x7a\x5f\x7a\x0c\xc3\x80\ \x2c\x0a\x71\x12\x52\xd0\x2b\xe8\x8a\xc9\x8b\x17\xbf\x42\x9c\x76\ \x1d\xfd\x5b\x65\x4d\x80\x24\x9f\x10\x24\x1e\x05\xa3\x8c\x2a\x3a\ \x38\x2c\xd3\x70\x97\xf1\x7d\x97\xc0\xd7\xae\xa9\x17\x06\x30\x00\ \x55\xa8\x04\x5e\x42\x75\x50\xe5\xc5\xb3\xc7\x98\x6b\x9c\x25\x08\ \xba\xd6\x0e\x4d\xd3\x7a\xcf\x64\x12\x23\x46\x00\x32\x51\xa8\x97\ \x07\x79\xe9\xf2\x4b\xc4\x25\x1f\x91\x76\x8b\xbf\x33\x81\xb9\xe9\ \x4c\x08\x08\xbc\x00\x43\x68\x98\x19\x9d\x4a\x66\x88\xe5\xf6\x3c\ \x31\x1e\x4e\x60\x11\xf8\x06\x32\x95\x57\xb5\x6f\xdf\x47\x20\xf0\ \xd2\x0e\x25\x7d\x90\x86\xf3\x3c\x0a\x0a\xeb\xce\x12\x51\x18\x11\ \xf9\xd1\x35\x72\x6c\xac\xc5\xa4\xa4\x90\x82\x63\xa5\x28\xc7\x5b\ \x9f\xc5\xc8\x48\x82\xc0\xc3\x71\x9d\xfe\xf4\xee\x95\xfc\x6b\x22\ \xcb\x57\x5f\xff\x33\xde\x73\xf0\x3f\x73\xca\xfd\x12\x1b\xf1\xe5\ \x9e\x51\xa8\xcf\xab\xbd\x92\xff\x24\x4a\xe9\x68\x17\xc8\xc8\x41\ \xee\x3b\x78\x2f\x9f\x3f\xfb\x47\xf8\xa9\x4d\x12\x5f\x4d\x61\x6d\ \x2d\xb8\x16\x5a\xc2\x8b\x73\x4f\xf0\x33\xf7\xfe\x06\x7f\x7f\xfa\ \xf7\xb1\xb8\x42\x35\x3b\x8a\xe7\x5d\x75\xc7\xf7\x06\x30\x8a\x62\ \x96\xad\x39\x9c\x4e\xc2\xe8\xb6\x02\x71\x61\x96\x91\xe2\x76\xbc\ \xa0\x3b\xa3\xae\x26\x13\x7c\x7c\xcf\x45\x22\xb0\xb5\xcb\x1c\x1e\ \x3f\x4a\x47\x3f\xc3\x17\x4f\xfe\x15\x05\xb3\xd8\xcd\xc6\xb8\x5e\ \x7f\x40\xba\x3e\xef\x94\xfa\x64\xc4\x4b\xe7\x5e\x65\xa2\x3e\xce\ \x9f\xbc\xfc\x0b\x54\x8b\x75\xdc\xc0\xc1\xb6\x9d\xbe\xee\xed\x38\ \x0e\x81\xef\x53\x2a\x64\xf9\xbf\xff\xf1\x23\xfc\xe6\xa3\x5f\x44\ \x6b\xf9\x8b\x2c\x2e\xcd\xb2\x7c\xb1\x8d\xdf\x8e\x89\x93\x3c\x52\ \x4a\x36\x36\x36\xf0\xe3\x88\x82\x97\xa7\xa5\x9e\xe3\xb7\x9f\xfc\ \x25\x7e\xe2\xc1\xc7\xf8\xc7\x8b\xff\x83\xd6\x49\x95\x66\xb3\xeb\ \x91\x96\x52\x5e\xf5\x48\x67\x04\x46\xb6\xc6\xef\x3e\xf7\x6f\xf9\ \xa3\x1f\xfd\x27\xce\x36\xbe\xc9\x95\xd5\xf3\xac\xce\x37\xf0\x5b\ \x57\x3d\xd2\x3d\xa7\x41\x2e\xc9\x73\xb2\xf5\x55\x0e\x78\xb7\xe1\ \x26\x1d\xce\x2e\x7d\x89\xb9\x4b\x0e\x8d\x75\x17\xa1\x42\xa5\x52\ \xe9\x9e\x60\x10\x13\x69\xe0\xc9\x0c\x4f\xcc\x7d\x92\xf7\x8c\x7c\ \x0c\x51\x6a\xf0\xf5\x57\xbe\x48\x63\xde\xa1\xd5\x0c\x51\xf5\x6e\ \x92\xb6\xd9\x68\x62\xaf\xdb\xe8\x51\x91\xa5\xe0\x14\xc7\xd6\xfe\ \x81\x62\x31\xcb\x17\xce\xfc\x31\x8d\xc5\x90\x8d\x95\x26\x7a\xa6\ \x2b\xe1\x5a\x96\x45\xb3\xd9\xea\x96\xe5\xaa\x79\x9e\x5c\xfe\x63\ \x26\x9d\x43\x9c\x59\xf9\x06\x7e\x27\x61\xe1\xd5\x26\x7a\x01\x4c\ \xb3\xab\x0b\x37\x9b\x4d\xfc\xbc\x24\x4e\x4d\x16\xd2\x17\xf8\xcd\ \xaf\xfd\x1c\x62\xfb\xd8\x0e\x29\x10\xa8\x99\xae\x3f\xae\x57\x2f\ \x1c\x45\x51\x31\x9b\xcd\x91\xbf\x21\x66\x6c\x6f\x8e\xd5\x93\x1e\ \x57\x5e\xea\x80\x65\xa2\xe8\xa0\x9a\xe2\x1a\x5d\x58\xd7\xf5\x62\ \x92\x8f\xd8\xfd\xf6\x02\xe1\x7c\xca\xe5\xe3\x1b\xf8\xb3\x5d\x9d\ \x43\xcb\xf4\xcb\xc8\x2c\x45\x51\x9a\x52\xca\xc9\x7c\x3e\x4f\xfe\ \x68\xca\xd8\x68\x86\xd9\xe3\x6d\xd6\xbf\x93\x90\x86\x02\xd5\x00\ \x45\xeb\x2e\xc2\x2b\x95\x4a\xd8\x6e\xb7\x8d\x5c\x36\x87\xad\xb8\ \xdc\xf5\xc1\x1a\x2b\x27\x7c\x66\x8f\xb5\x09\xe6\x75\x10\x29\x5a\ \x46\x45\x72\x55\x17\x1e\x1d\x1d\x3d\xea\x5b\x01\x95\x37\x2a\x4c\ \x4e\xe5\x98\x7d\xb1\xcd\xda\x89\x08\xe9\x75\x7f\x7a\x45\x35\xe9\ \xeb\xc2\xb5\x5a\x2d\x94\x89\x34\xa2\x91\x88\xe9\x1b\x33\x2c\x1e\ \x77\x68\x5e\x0c\x20\x56\x91\x48\xb4\xac\x20\x4d\x52\x74\x5d\x6f\ \x7a\x9e\x27\x33\x99\x4c\x35\x57\x2e\xb0\xed\x5e\x89\x75\x25\x66\ \xe3\x9c\x8f\x76\xe4\xf6\xc3\x58\x56\x17\x79\x66\x67\x67\x09\xc3\ \x6e\xd9\xc0\x5b\xde\xf2\x16\x76\xed\xda\xc5\xc2\xdc\x22\xa7\xbf\ \x79\x96\xba\x22\x29\xed\xf4\x51\x54\xa5\x5f\x2f\x5c\x28\x14\xb8\ \x72\xe5\x0a\xd5\x6a\x95\x77\xbc\xe3\x1d\x68\xaa\xc6\xe7\xff\xf6\ \x8b\x54\x6b\x03\x4c\xe4\x1b\x54\x8f\x0e\xd0\x6e\xb7\x09\xc3\x10\ \xd3\x34\xb9\x70\xe1\x02\x71\x1c\xf3\xde\xf7\xbe\x97\x1d\x3b\x76\ \xf0\x0f\x7f\xf7\x05\x94\x15\x8d\xaa\xbd\xce\xce\xdb\x06\x68\xb5\ \x5b\x18\x86\x41\x92\x24\x2c\x2e\x2e\x22\xa5\x64\xdf\xbe\x7d\x3c\ \xf2\xe8\x23\xf8\xae\xcf\x77\x9e\x7a\x95\x9c\xd5\x66\xa6\xea\xa3\ \x8f\x6a\x64\xb3\x59\x16\x16\x16\xfa\xd4\x20\x84\xe0\x8e\x3b\xee\ \xe0\xce\xbb\xee\xe4\xb9\xa7\xbe\xc1\xe5\xaf\xce\x52\xd7\x87\x99\ \xbc\x21\x4b\xb3\xd5\xec\xfe\xd0\x85\x69\x62\x59\x16\x2b\x2b\x2b\ \x8c\x8d\x8d\xf1\xe1\x0f\x7f\x98\xe7\x9e\x7e\x8e\x57\x4f\x9e\xe2\ \xfa\xf1\x32\xd6\x40\x87\x30\x0a\x49\xe2\x84\x62\xb1\xc8\xfc\xfc\ \x3c\xcd\x66\x13\x80\xff\xf8\x1f\xff\x23\x00\x2f\x3c\x77\x0c\x37\ \x63\xb3\x3c\xb2\x8c\xb6\x6d\xdb\x36\x66\x67\x67\x19\x18\xe8\xfe\ \x0e\xcc\x85\x0b\x17\x08\x82\x80\xfb\xee\xbb\x8f\xc3\x87\x0f\x33\ \x3b\x3b\x4b\x2c\x23\x86\x86\x86\x30\x4d\x93\x6f\x7e\xf3\x9b\x8c\ \x8e\x8e\x62\x9a\x66\xdf\x12\x3b\x3e\x3e\xce\x43\x0f\x3d\xc4\xd0\ \xd0\x10\x17\x2f\x5d\xec\x0e\xfc\x66\x32\x60\x6c\x6c\x8c\xa5\xa5\ \x25\x46\x46\x46\xb8\x7c\xf9\x32\x00\x0f\x3f\xfc\x30\x7b\xf6\xec\ \xa1\xd3\xe9\xb0\xb6\xb6\xc6\xb9\x73\xb0\x6f\xdf\x3e\x2e\x5f\xbe\ \x8c\xef\xfb\x8c\x8f\x8f\xb3\xb2\xb2\x42\x1c\xc7\xdc\x7c\xf3\xcd\ \xdc\x79\xc7\x9d\xec\xdc\xb9\x93\xbf\xfc\xcb\xbf\x64\x7e\x61\x9e\ \xd1\x91\x51\x9e\x78\xe2\x09\xea\xf5\x3a\x00\x6b\x6b\x6b\x44\x51\ \x84\xa6\x69\x1c\x3c\x78\x90\x77\xff\x5f\xef\xc6\x34\x4c\x9e\x78\ \xe2\x09\x86\x86\x86\x48\x92\x84\xf9\xf9\x79\xae\x5c\xb9\x42\x4f\ \xaa\xed\xb1\xf0\x2d\xb7\xdc\xc2\xdc\xdc\x1c\x4b\xab\x4b\xdc\x78\ \xe3\x8d\xbc\xf2\xca\x2b\x54\x2a\x15\xce\x9c\x39\xc3\xc1\x83\x07\ \xc9\x64\x32\x1c\x3f\x7e\x9c\x34\x4d\x79\xf8\xe1\x87\xb9\x70\xf1\ \x42\x3f\xb9\xf0\xfc\xf3\xcf\x7f\xff\x7a\xe1\x4e\xa7\x63\xe5\x72\ \xb9\x62\xad\x56\xa3\xdd\x6e\xf7\xb7\xf5\x98\x72\xab\x17\xda\xb6\ \xed\xb9\x7c\x3e\x3f\x50\xad\x56\x8b\x5b\xcd\xde\x5b\xf9\xb9\xf7\ \x3d\x8e\x63\x2b\x0c\xc3\x66\xb1\x58\x9c\x1c\x18\x18\xa0\xd3\xe9\ \x5c\xc3\xab\x3d\x1d\xb9\xf7\xb7\x61\x18\xa1\xe3\x38\xc6\xf0\xf0\ \x30\xb6\x6d\x7f\x8f\x77\x79\xeb\xef\x63\x55\x2a\x15\x4e\x9f\x3e\ \xfd\xec\xee\xdd\xbb\x8f\x6e\xb1\xfc\x5e\xb3\x4f\xef\x7f\x4d\xd3\ \x58\x5b\x5b\x63\x7c\x7c\x3c\xb4\x6d\xdb\xf8\x97\x6a\xa2\x37\xcf\ \xb7\x69\x59\x96\x2c\x97\xcb\xd5\xef\xde\xae\xa5\x49\x1a\x6d\xf5\ \x31\x3b\x8e\x83\x65\x59\x5e\xb5\x5a\xcd\xb4\x5a\xdd\xf4\xbd\x4c\ \x05\x8a\x10\x08\xe5\x7b\x78\x55\x58\x96\x95\x68\x9a\xd6\xcd\x5e\ \x23\xd0\x84\xde\xd5\x85\x95\xab\x35\x19\x5b\xfc\xd7\xd2\x75\xdd\ \x50\xd7\x75\x1c\xc7\x41\x57\xf5\x6b\xea\x85\x15\x5d\x5c\xd3\x7f\ \xa7\xd3\x91\x8a\xa2\x44\xbe\xef\x6b\x9a\xa6\x09\x12\x81\x14\xa0\ \x6a\x12\x45\xb9\xb6\xed\x26\xf8\xcb\x24\x49\x64\x9a\xa6\xb1\x82\ \xd2\x35\x5e\x23\x51\x94\x3e\xd7\xf6\xab\x0a\xe2\x38\x4e\x2c\xcb\ \x4a\x55\x55\x15\x02\xf8\x17\xea\x85\xc5\xe6\x7a\x37\xca\x66\xb3\ \x71\x9a\xa6\x52\xc8\xcd\xba\x65\x40\xdb\x36\x39\x12\xc8\x48\xd9\ \x2c\x90\xee\x16\x2f\xaf\xae\xae\x5e\xaa\xd7\xeb\x07\x7d\xcf\x97\ \xa1\xd1\xd5\x85\x71\x4d\xd2\x4e\xb7\x46\x57\x46\x0a\x42\x93\xbd\ \x3c\x9c\x51\x2a\x95\xf4\x4c\x26\x43\x44\x44\x3a\xde\xa6\x98\x35\ \x48\x5a\xbd\xba\xdb\xab\x81\x87\x61\x18\xb8\xae\xbb\x5a\x2c\x16\ \x67\x74\x5d\x17\x2d\xb5\xc5\xf0\x1e\x48\x6d\x8d\xb4\x65\x22\x1d\ \x6d\xd3\x48\xde\xbf\xfa\x9e\xeb\xb9\xb2\x5a\xad\x0e\x04\x49\x88\ \xb2\xa3\x4d\x4e\x33\x88\x5b\x3a\x69\x5b\x47\x46\x6a\xf7\xc7\xc5\ \x90\x64\x32\x19\x2e\x5e\xbc\x58\x19\x1e\x1e\x0e\x7c\xd7\x8f\xdb\ \x99\x16\x23\x13\x2a\xe1\x86\x41\x6a\x6b\xdd\x1a\xe7\x44\x20\x54\ \xd0\x75\x5d\x18\x86\xe1\x8f\x8c\x8c\x04\x19\x33\x53\xfe\x3f\xd4\ \x0b\x63\xdb\xb6\x7e\xe5\xca\x95\xb5\x72\xb9\x5c\x0c\xe3\x38\x0d\ \xca\x16\x95\xba\x4a\xda\xd1\xd1\x46\x7e\xa4\x55\xd0\x35\x9d\xe6\ \x53\x15\xa2\x55\x1d\x45\x15\x08\x21\x6a\xa5\x52\x29\x9f\x4a\x50\ \x76\x39\x8c\xde\x11\x11\x05\x2e\x22\xd2\xd0\x45\x86\x34\x50\x68\ \xfe\x63\x1d\x55\x55\xd1\x75\x5d\x98\xa6\xa9\xea\xba\x8e\x63\xb8\ \x0c\xde\xe5\x53\x2f\x6a\x10\x87\x84\x9e\x0b\xba\xa4\xfd\xe5\x21\ \xe2\x96\x8a\x94\x52\x68\x9a\xa6\x1b\x86\x21\x34\x4d\xc3\x1d\xeb\ \x30\x7c\xbf\x46\x51\x8e\xb2\xda\x58\x41\x93\x1a\xf1\x42\x91\xce\ \xf1\x02\x32\x06\xd3\x34\xd5\x3e\x0b\xab\x1d\xf6\xbf\x29\x42\x4b\ \x54\x7c\xc7\xc1\x24\x47\xe4\x82\x75\xac\x44\xb0\x68\xf4\x7e\x03\ \xb1\x52\x2e\x97\x33\x41\x94\x90\xb9\xc5\x65\xdb\x21\x13\xab\x6d\ \x91\xa1\x40\x10\x06\xe8\x4e\x99\xc6\xd7\xcb\x98\x86\x81\xa6\x69\ \x79\xd3\x34\xed\xff\x2f\xf5\xc2\xaa\xaa\xa2\xaa\x6a\xb5\x90\xcf\ \xe7\x96\xfd\x16\x13\x6f\x94\x14\x06\x7d\x22\xcf\x47\xb9\x63\xea\ \x1d\x88\x3c\xc4\xd2\xff\x2e\xa6\xec\xfe\x9d\xaa\x01\x35\x79\x80\ \xff\xf0\xe0\xa7\x78\xef\x91\x5f\xa5\x56\xdc\x41\x7d\xdb\xc0\x35\ \x35\xbd\x7d\x94\x4b\x03\xec\x35\x9d\x77\x1f\xfa\x65\xde\xbc\xe3\ \x63\x1c\x9c\xb8\x87\x7b\x6e\x78\x23\x5e\xe4\x5c\xf3\xdb\x59\xbd\ \xe3\xf8\x49\xc0\x7d\x23\x3f\xc1\xb0\x72\x23\x8f\xdd\xf1\x1f\xb8\ \x65\xf2\xed\x78\x7a\xa3\xef\x22\x4d\x92\x44\x76\x51\x31\x24\x4c\ \x23\x6a\xe6\x36\x1e\x19\xfb\xb7\xfc\xa7\x87\x3f\xcd\xeb\xf3\x1e\ \xa3\xe3\xc3\xc4\xe2\xaa\x8f\x59\x76\xa7\x2c\x9e\xe7\x63\xe4\x04\ \xdb\x94\xdb\xf9\xbd\x1f\x7c\x9a\x4a\x66\x86\x5f\x7e\xdb\x1f\xe3\ \x65\x1a\x04\x9b\x75\xd0\xff\x7f\xea\x85\x3d\xcf\x27\x88\x02\x94\ \x4c\xc0\xee\xf4\x9d\xfc\xe8\x4d\x3f\x87\x72\x78\xf8\x41\xee\x99\ \xf9\x81\x4d\x16\xbe\x56\x17\xf6\x3c\x9f\x28\x0a\x38\x3c\x7a\x3f\ \xff\xfc\xfa\x27\x78\xe1\xe5\xd3\xbc\xfd\xc0\xfb\x31\x14\xb3\x4f\ \x22\x3d\x55\xae\x27\xff\x4d\x57\x0e\x71\xb9\xf9\x1a\x27\x16\xbe\ \xc9\x43\x33\xef\xa1\x9c\x19\x24\xde\xd4\x76\xb7\x92\x88\xe7\x79\ \xa8\xe8\xd4\xf3\x63\xf8\xb9\x8b\xec\x1f\xb8\x97\x89\xca\x2e\x86\ \x72\x93\xf8\x5b\xfa\xee\x09\xeb\x71\x14\x51\xcb\x0f\x93\xad\x44\ \x7c\xe5\x85\xaf\xf3\x96\x7d\x3f\xc1\x8d\xa3\xf7\x62\x7b\x9d\xfe\ \xc5\x04\xfa\xb5\xc3\x42\x40\x31\xdd\xce\x27\x9e\xff\x6f\xfc\xbf\ \x6d\x9c\x6b\x8c\x5c\x65\x01\x86\x9f\x73\xbe\x73\xce\x5c\x76\xe7\ \xbe\xd3\xdd\x2e\xdd\xb2\xbd\xb0\xad\x6d\xb7\x58\x4b\xa9\x6c\xb1\ \x36\xa4\x0d\x26\x1a\x8c\x25\x26\x18\x2d\x58\x8c\x3f\x08\x5a\x34\ \x81\x5f\x68\x22\x09\xff\x88\x09\x09\x4a\x82\x09\x68\x34\x40\x0c\ \x8a\x60\x0c\x72\x91\x16\x50\xda\x02\x52\x2b\x4b\xaf\x3b\xed\x76\ \x2f\xdd\xeb\xcc\xec\xcc\xec\xcc\xb9\x5f\xfc\x71\x66\x4e\x97\xe2\ \xef\x99\x39\xf9\xe6\x3b\x97\xef\xbc\xdf\xfb\xbc\xef\x57\x6e\xf8\ \x36\x6b\x33\x43\xc4\xe5\x64\x5b\x67\xeb\x11\x4c\x65\x9a\x06\xe2\ \x73\x79\xe1\x5d\xdc\x98\xde\x82\x69\x1b\xd7\x3a\xbc\xda\x8d\x4b\ \x8e\xe3\xb0\x54\xd3\x79\xf8\xe0\x23\xbc\x56\xfa\x0d\x4a\xb5\x59\ \xe1\xa3\xb9\x77\x71\x1d\x17\xcb\x0c\x08\xb8\x96\x8d\xb5\x6d\x0b\ \x15\x70\x7c\x9b\x94\x56\xc0\x50\x54\xce\xcc\xfd\x1b\x9f\xd0\xdb\ \x15\x42\x44\x20\xb8\xe3\x38\x78\xdd\x5e\xc8\x48\x27\x7a\x58\x10\ \x26\x35\xf7\x2a\xb6\xdf\x6e\x81\xb3\x44\x98\x29\x6e\x4f\x60\xf8\ \x50\x0f\xda\x09\x4b\x07\x4f\x36\xa9\x2c\x2f\x32\x5b\x9f\xc4\xb2\ \x63\xf8\x76\x54\xf0\x88\x69\x99\x78\x8a\x87\x24\xc9\x48\xbe\x20\ \x9f\xca\xf3\xf6\xe8\x1b\x94\x63\x2d\x64\x5f\x44\x57\x77\xb8\x99\ \x60\x61\x5b\x16\x42\x56\xf0\x71\xe9\xe9\xea\x65\xb1\x35\x83\xe5\ \xe9\x18\x4e\x0b\xdb\x4e\x46\xab\xb1\xe3\x38\x04\xb6\x07\x71\x48\ \x74\xa9\x04\x6e\x48\xb9\x4a\xc8\x8c\xd7\x3e\x05\x2f\x9c\x07\x1f\ \xaf\x3d\x27\x26\x8e\xec\xa0\x08\xc1\x52\xbd\x81\x2a\x62\xc8\xa7\ \xea\x2f\x93\xee\x4e\x61\xbb\x76\x44\xda\xaf\x34\xa8\x45\xa0\x72\ \x72\xfe\xcf\x6c\x49\x1d\xa0\x6f\x83\xcb\x44\xeb\x54\x38\x98\xff\ \x93\x58\x77\x2c\x17\x23\x3e\xc1\xd2\x92\xc9\xce\xa1\x61\x5e\x39\ \xff\x2b\x26\x97\xcf\xe2\xd8\x4e\x94\xe9\x5d\x49\xe9\xab\x9a\xe0\ \xed\xcb\x2f\x72\xf8\x4b\x8f\xf1\xfb\xd1\xc7\xb8\x6c\x1e\x27\x9d\ \xc8\xa3\x5f\x97\x17\x36\x8d\x70\xd7\x67\x6e\xf9\x0a\xf5\x86\x45\ \xae\x28\x90\xf2\x33\xa8\x52\x02\xdb\xb5\x3e\x33\x6e\xd3\x34\x30\ \x6d\x0b\x09\x41\x5d\xb9\xc8\x70\xff\x97\x99\xf2\x4e\xf0\xd7\x33\ \xcf\xd1\xa5\x75\x87\xe3\xd6\x8d\x08\xb9\x33\x4c\x13\xcf\x87\x8d\ \x1b\xf3\xbc\x7f\xee\x7d\xfa\xb2\xfd\x3c\xfd\xe1\x23\x64\xe2\x85\ \x68\x4e\xae\x91\x09\x61\x8b\x5c\x21\x93\xe1\x89\xa3\x3f\xe5\x81\ \x9d\xbf\x44\x69\x2a\xd3\xcc\x2e\x4d\x33\x5b\xaa\xa0\xd7\x3c\xba\ \xdd\xd0\x17\x2e\x97\xcb\xd4\x1b\xcb\xc4\x9b\x49\x6c\x15\x9e\x3a\ \xf1\x30\xf7\xec\xb9\x8f\xe9\xb9\xd3\x2c\x9d\x81\x6a\xb5\x1e\x69\ \xe1\xce\x15\x48\x52\x42\xa8\x05\xfe\x78\xe6\x09\x7e\xb1\xfe\x19\ \x66\xec\xb3\xcc\x8d\x66\x29\x5f\xad\x61\xd5\xfd\xce\xbb\x5d\x84\ \x56\x74\xdb\x31\xaa\xfe\x25\x5e\x3d\xfb\x0c\x6e\xa2\xce\xe5\x85\ \xb3\x94\x3e\x30\xa8\xce\x1b\x91\x2f\x6c\x18\x06\x8e\xe9\x60\xc9\ \x3e\x86\x1f\xe3\xd8\xe4\x1f\xd8\xbf\xf9\x6e\xc8\x54\x38\x37\x39\ \xcf\xfc\xe5\x3a\x8d\x25\x07\x49\x84\xef\x6c\xe5\x72\x99\x4a\xbd\ \x41\xbf\x9d\x63\xd2\xf8\x98\x77\x27\xff\x44\x90\x68\xf2\xaf\x99\ \x97\x59\x98\x32\x29\xcf\xd7\x50\xe3\x4a\xa4\x85\x97\xab\x0d\x1a\ \x09\x1f\x2f\x48\xf1\xce\xdc\x73\x6c\xf5\xf7\x30\xee\x7c\x40\x63\ \xd1\xe0\xca\xa9\x32\x8e\xee\x13\x4f\x84\x5a\xb8\x5c\x2e\x63\x24\ \x7c\x4c\x5b\x50\xe9\x1e\xe5\xb9\xe3\x4f\xa2\x3c\xff\xc3\xd3\x98\ \x8b\x10\xcb\x48\xa8\xaa\x12\x35\xd6\xca\xb2\x4c\x4c\xd3\x70\x17\ \x02\xe6\xff\xe3\xd1\x98\x9a\xe3\xc7\x4f\x3d\x8a\x3e\xae\x41\x10\ \x10\x4b\x2b\x91\xb1\xd3\x6e\xc0\xc0\xb7\x7c\x96\xce\xb9\xc8\xad\ \x6e\xee\x7b\xe9\xfb\xe8\x25\x0d\xb3\x5e\x26\x91\x15\x88\x70\x75\ \x8f\x8e\x9d\xcf\xe7\xb1\x67\x5b\x4c\xbd\x1d\xf0\xe1\xe8\x9b\x2c\ \x8e\xda\xf8\x96\x84\x92\x04\x2d\xa6\x46\x50\x64\x10\x04\x68\x09\ \x0d\xcf\xb0\x99\x3f\xed\xb2\x3c\x3b\xc3\xb1\x5f\x3f\x8e\x7e\x59\ \xc5\x5c\x72\x89\x67\x15\x14\x45\x44\x81\x48\xa1\x28\xc4\x64\x15\ \x7d\xdc\xa7\x5a\x87\x17\x2f\xbe\xc4\xd2\x79\x9f\xc6\x15\x1f\x2d\ \x29\xa3\x25\xd5\xa8\xd2\x59\x08\x81\x1a\x53\xe9\xd6\x7d\x16\x47\ \x1d\x96\xe7\x17\x39\x7e\xee\x05\x96\xce\x05\xb8\x7a\x40\x3c\x2b\ \x50\x54\x39\x82\x33\x25\x49\x22\x21\x69\xd4\x2e\xb8\x34\x15\x9f\ \xb3\x93\xef\xa0\x6c\xda\xb0\x05\xe9\x26\xd0\xd4\x30\xc1\xe8\xfb\ \x3e\x33\x33\x33\xec\xd9\xb3\x87\x81\x81\x01\x2c\xdd\xe6\xf4\x07\ \x9f\xb0\x2a\x19\x43\x4a\x2c\x52\xdc\xd7\xc3\xfc\xc2\x3c\x8d\x7a\ \x83\x42\xa1\xc0\xd8\xd8\x18\xbd\xbd\xbd\xec\xdb\xb7\x8f\x54\x77\ \x8a\xbf\xff\xed\x0d\x7a\xfb\x7a\x59\xe5\xcc\xd3\xbb\x7b\x15\xf5\ \x46\x8d\x56\x4b\x27\x9d\x4e\x73\xe1\xc2\x05\x0c\xc3\xe0\xfe\xfb\ \xef\x67\xe7\xce\x9d\xbc\xf5\xfa\x3f\xb0\xaa\x36\x92\x32\xc3\xb6\ \x03\x39\x9a\xcd\x26\xb9\x5c\x8e\x5a\xad\xc6\xf4\xf4\x34\xad\x56\ \x8b\xe1\xe1\x61\x46\x46\x46\x88\x69\x31\x3e\x39\xf5\x29\x9e\xd1\ \xe2\x06\xa9\x45\x6c\xab\x46\x26\x97\xe1\x52\xe9\x12\xf1\x78\x3c\ \x4c\x27\xa9\x2a\x23\x23\x23\xdc\x7c\xf3\xcd\x9c\xf8\xe7\x49\x16\ \x2f\x56\x28\x6a\x82\xbe\x41\x19\x77\xad\x43\xb5\x52\xed\x10\xb8\ \x51\x6c\xf6\xd0\xa1\x43\x2c\x55\xaa\x7c\x7c\xec\x34\x99\x54\x8a\ \x78\xcc\x24\x7f\xd3\x32\xb9\x7c\x0e\xcb\xb2\xa8\x54\x2a\xb4\x5a\ \x2d\x74\x5d\xe7\xc8\x43\x47\x68\x35\x9b\x8c\x97\x26\x59\xaa\xd5\ \xc8\x3a\x16\xca\xf0\xf0\x36\xce\x9f\x3f\xcf\xe0\xe0\x20\xa9\x54\ \x2a\x12\xfc\x7b\xf7\xee\xe5\xf6\xdb\x6f\x0f\x21\x1f\x7e\x47\x2e\ \x97\xc3\xb6\xed\x08\xcb\xb5\x4c\x8b\x62\xb1\xc8\xd8\xd8\x18\xf9\ \x7c\x9e\x43\x87\x0e\x91\xcf\xe7\xb9\x3a\x73\x95\xa1\xa1\x21\x26\ \x26\x26\xe8\xd4\x28\x5f\xb9\x72\x85\xad\x5b\xb7\x52\x2a\x95\x30\ \x4d\x93\x3b\xee\xb8\x83\x4d\x9b\x36\x31\x31\x31\x11\x2e\x00\x9e\ \xc1\xf6\xed\xdb\x39\x7d\xfa\x34\xe9\x74\x9a\xfe\xfe\x7e\xe6\xe6\ \xe6\x00\xd8\xb1\x63\x07\x07\x0f\x1e\x64\xfd\xfa\xf5\x3c\xfb\xec\ \xb3\x2c\x2c\x2c\x50\x28\x14\x38\x79\xf2\x24\x7d\xbd\x7d\xed\xc6\ \xca\x90\xd1\x51\x14\x85\x91\x91\x11\xee\xbd\xf7\x5e\x1c\xc7\xa1\ \x54\x2a\x31\x34\x34\xc4\xa5\x4b\x97\xc8\x66\xb3\x1c\x3d\x7a\x94\ \xb5\x6b\xd7\x32\x35\x35\x45\xb9\x5c\x26\x97\xcb\x71\xf8\xf0\x61\ \x46\x47\x47\x29\x57\x2b\x6c\xde\xbc\x19\x5d\xd7\xb9\x70\xe1\x02\ \x99\x4c\x86\x62\xb1\x48\xa9\x54\x8a\x7c\xe1\x23\x47\x8e\x70\xee\ \xdc\x39\xc6\xc7\xc7\x99\x9d\x9d\x0d\x19\xe9\x5d\xbb\x76\x05\x1d\ \x9d\xe8\x38\x0e\xc9\x64\x92\xc9\xc9\xc9\x8b\x6b\xd6\xac\x19\xda\ \xbc\x79\x33\x63\x63\x63\xd1\xce\xf3\xf5\xdd\xcc\xed\xf8\x53\x53\ \xd3\xb4\xd8\xd6\xad\x5b\xd5\x6a\xb5\xca\xf2\xf2\x72\xa4\x55\x3b\ \x5e\x6b\x27\x62\x2f\x49\x52\xd9\x75\xdd\x71\x60\x57\x36\x9b\x8d\ \x68\x82\x95\xbb\x29\x2b\xfd\x67\x55\x55\x1b\xb3\xb3\xb3\xd2\xfe\ \xfd\xfb\x53\x63\x63\x63\x91\x36\xed\x3c\x36\x3a\x15\x2d\xae\xeb\ \x76\x18\xe9\x89\x91\x91\x91\x1b\x6d\xdb\x8e\xbc\xdb\xce\x6e\xf2\ \xca\xa6\x8e\x95\xbe\x70\x87\xed\x5e\xb9\x58\xac\x1c\xbb\xef\xfb\ \x08\x21\xa8\xd7\xeb\xe5\x62\xb1\xd8\x33\x38\x38\xc8\xe4\xe4\x64\ \x74\x4b\x2b\xa9\xee\x74\xa4\x29\xa5\x76\x96\xd6\x75\x5d\xaf\xbd\ \xbf\x46\x32\xd1\x15\x62\xb4\xda\xf5\x5c\x72\x88\xf8\x5a\x96\xe5\ \xa6\x52\x29\x75\x76\x76\x16\x59\x96\xdb\x8c\xf4\xf5\x1c\x73\xd0\ \x99\x44\x79\x66\x66\x46\x5a\xbd\x7a\xb5\x27\x84\x90\x62\x5a\xec\ \xb3\x59\x64\xae\x79\xbd\xed\x1a\xe4\xa0\x58\x2c\x2a\x53\x53\x53\ \x24\x12\x09\x3a\x5a\x58\x6a\x7f\xb7\xab\xab\x3b\xfa\x4d\xfb\x8f\ \x9a\xba\xae\x63\x3b\x36\x71\x2d\x8e\xef\x43\x5c\xfb\xfc\xf1\x85\ \x10\x94\xcb\x65\x84\x10\x52\xbd\x5e\x47\x42\x42\x15\x31\x34\x25\ \xb6\x82\x91\x96\x22\x4d\xdc\x68\x34\xf0\x7d\xbf\x99\x4e\xa7\x7b\ \x16\x16\x16\xe8\x4a\x74\x11\xf8\x61\x7d\x96\x92\x1b\x8c\x47\x5a\ \xb1\x73\x36\x65\x59\x76\xf3\xf9\x3c\x86\x6e\xe0\x74\x99\x24\xfb\ \xed\xb0\x94\xd0\x10\xf8\xba\x1a\xe6\x85\xdb\x98\x6c\xa5\x52\x69\ \x15\x0a\x05\x55\x08\x11\xf3\xf0\xf0\x56\x2d\xd3\x9d\x52\x42\xd6\ \xb8\x93\xe9\x75\xe5\x4e\x0d\x7c\x22\x16\x8b\xe5\x93\xc9\xa4\xa3\ \x28\x8a\x68\xca\x4d\x72\x03\x12\xbe\x29\x11\xb4\x54\x7c\x5d\x21\ \xb0\xe4\xd0\xeb\x0d\xaf\x02\x21\x84\x48\xe6\x72\x39\x5a\xbe\x41\ \x7a\xa3\x05\xae\x4c\xa0\x2b\x04\xa6\xd2\xee\xda\x92\x91\xa4\x10\ \x6b\x53\x14\x65\xb2\xa7\xa7\x67\x93\xa9\x9b\xd4\xe2\x55\xfa\x06\ \x05\x4e\xb3\x9d\x73\xd6\xc3\x9c\x73\x27\xb1\x2e\xcb\x32\x7d\x7d\ \x7d\x6a\xe0\x07\x94\x9d\x3a\x7d\x5b\x20\xb0\x24\x7c\x43\x21\x30\ \x04\x7e\x33\xe4\xaf\x65\x21\x77\x56\xf7\x4b\x99\x4c\x66\xd0\xb2\ \x1d\xfc\x55\x4d\x52\x05\x19\x57\x07\x25\x7b\xa0\x8c\x2c\x04\x4b\ \x6f\x65\x71\xe6\xb5\x4e\x0b\x5b\x5c\x08\x81\xe3\x7b\xf8\xfd\xcb\ \x24\x77\xb7\xe8\x4d\x0c\xd0\x34\xeb\x21\x74\x69\x2b\x54\x5e\x29\ \x46\x77\x9a\xa2\x28\xb2\xe7\x79\xe8\xaa\x41\x6c\x7b\x95\xe2\x9a\ \x1c\x29\x35\xcb\x4c\x75\x8a\x58\x5c\xa5\x7e\x2c\x8f\x3d\x13\xc3\ \xf7\x7d\x59\x51\x94\x64\x2c\x16\xd3\x14\x45\x91\xe7\x56\x4f\xb3\ \xe5\x4e\x8d\x44\x50\x60\xa9\x59\x41\xc8\x02\x77\xaa\x9b\xe5\x8f\ \x52\xf8\x6e\xd8\x20\x62\x59\x16\xb2\x2f\x05\x73\x4a\x45\x1a\xdc\ \x1b\x10\x0f\xb2\x58\x76\x0b\xd7\xb1\x09\x0c\x95\xfa\xf1\x0c\xce\ \xa2\x8a\xa6\x69\x04\x41\x10\x97\x65\x19\xd9\x95\x59\x5e\xb7\xc0\ \xe6\x3d\x69\x12\x41\x9e\xa6\x5e\xc3\xb6\x1d\x68\x24\xa9\xbe\x99\ \x5d\x59\xaf\x27\x39\xb6\xc3\x7c\x72\x91\xe1\xbd\x49\x02\x2b\x8e\ \x2a\x4b\x34\x5a\x15\x54\x45\x63\xf1\x95\x3c\xbe\x11\xed\xe4\xa4\ \x09\xa0\x6a\xe8\xac\xbb\x4d\x47\xc9\x18\x0c\xa4\x86\x90\x0f\xac\ \x7b\x80\x64\x57\xbb\x3b\xcb\xba\x96\x17\x0e\x2b\x92\x2c\x3c\xd9\ \x66\x7d\xec\xab\x7c\x6f\xc7\xa3\x7c\xe7\x0b\x8f\xb3\x2e\xb3\x3b\ \x2a\x31\xec\xd8\x9a\x51\xfe\xd7\x73\x58\xa8\x34\xf8\xd1\xee\x27\ \x19\xce\xde\xc5\x37\xb7\x3f\xc0\xb7\x6e\xfd\x01\xa6\xdb\x5a\x49\ \xa8\x06\x1d\x59\x67\x05\x06\xbb\x7a\xef\x66\x77\xf1\xbb\xdc\xb3\ \xfb\x41\xbe\xb8\xea\x1b\xe8\xa2\x82\x71\xad\x47\xba\x93\x17\x96\ \xbc\xc0\x61\x6d\x6e\x13\x5f\x1f\x7c\x88\x9f\xdf\xf9\x5b\x32\xe6\ \x6d\xac\xea\xed\xc1\xf6\xcc\x28\x45\x19\xf5\x5f\x1b\x26\x8a\x26\ \xb1\x31\xb9\x87\x07\x6f\x79\x9a\xa1\xfc\x5e\x7e\xb2\xf7\x19\x6c\ \x6d\xf9\x33\x34\x6b\xc7\x73\x96\x55\xb8\x32\x51\xe3\xd1\x7d\xcf\ \xb3\x21\xbb\x9b\x9f\xed\x7f\x01\x27\xd9\x88\x3e\xbf\x96\xd6\x6c\ \xe7\x85\x65\x83\x7d\xa9\x76\x5e\x78\x4d\x6a\x13\xeb\x0b\xdb\xb0\ \xed\x50\x79\x74\xb4\x70\x28\xf8\x4d\x5c\xd7\x64\x53\xe1\x16\x8e\ \xcf\xfc\x85\xf7\x4e\x7d\xc4\xce\x35\xfb\xc2\x64\xf9\x0a\x6d\x1b\ \x69\x61\xdb\x22\x2b\x06\x98\xaa\x95\x38\x71\xf9\x75\xbe\x36\x74\ \x08\x81\xc0\x75\xbd\x48\x67\x77\x1a\x83\x0c\xc3\x20\x70\x15\x06\ \x73\x37\x71\xd6\x7c\x95\x1d\xf9\xbb\xd8\x58\xdc\x46\x5f\xd7\x7a\ \xcc\xeb\x7c\x61\xd3\x34\xc2\xbc\xb0\x92\xa4\xea\x4c\xf3\xdf\xd2\ \x28\xb7\xae\xdb\x4b\x3e\xbe\x1a\xd3\x32\xae\x53\x22\xa1\xe7\xac\ \x08\x41\x73\x49\xf0\xda\xd9\xe7\x59\xad\x6d\x63\xfb\xda\xed\x68\ \x52\x22\xd4\xca\xc6\x0a\x4d\x6e\x1a\x04\x81\x47\xd6\xdb\x40\xd5\ \x2b\xd1\x97\xed\xa7\xb7\x7b\x80\xde\xe4\x40\x14\xde\xee\x48\x50\ \xbd\xcd\x48\x37\xda\x79\xe1\x33\x95\xf7\xf8\x1f\xcb\xb6\x8e\xf6\ \x8f\xf1\xef\x16\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x2a\x0f\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x64\x00\x00\x00\x64\x08\x06\x00\x00\x00\x70\xe2\x95\x54\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\ \x95\x2b\x0e\x1b\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x03\x03\ \x0e\x1c\x2b\xec\xa5\xbb\x6e\x00\x00\x20\x00\x49\x44\x41\x54\x78\ \xda\xed\x9d\x79\x94\x5d\x55\x9d\xef\x3f\xfb\x0c\x77\xae\x39\x35\ \xa5\x06\x2a\x21\x21\x09\x14\x15\x84\x88\xd1\x00\x09\x08\xad\x08\ \x1d\x5b\xec\x36\x60\x0b\x48\xd3\xf0\x1c\x68\xc4\xf5\xda\xd5\x4f\ \x78\x48\x83\xda\x93\xad\x48\xab\x4b\xb4\x15\x51\x40\x9f\xd8\x34\ \xad\x08\xd8\x0e\xc8\x20\x24\x81\x8c\x18\x92\x9a\x92\xaa\x54\xaa\ \xea\xd6\x70\xab\xea\xce\xc3\x99\xf6\xfb\xe3\xd6\x3e\xb9\xc9\x13\ \x03\x61\xce\xcb\x5e\x2b\x8b\x5b\xdc\xe1\x9c\xbb\xbf\xfb\x37\x7d\ \x7f\xc3\x85\xe3\xeb\xf8\x3a\xbe\x8e\xaf\xe3\xeb\xf8\x3a\xbe\x8e\ \xaf\xe3\xeb\xf8\x3a\xe6\x97\x78\x33\xdd\x4c\x75\x75\x75\x57\x26\ \x93\x31\xa5\x94\x5e\x5d\x5d\xdd\xfb\xd6\xac\x59\xf3\x39\xd3\x34\ \x5d\xd7\x75\xe5\xfe\xfd\xfb\x5b\x56\xac\x58\x81\xe7\x79\x24\x93\ \x49\x5a\x5b\x5b\x29\x95\x4a\x68\x9a\xc6\xae\x5d\xbb\xb0\x6d\xbb\ \xfc\x85\x84\x40\xd3\xb4\x83\x5f\x50\x08\x0b\x70\xd5\x63\xc3\x30\ \xfa\x00\x0d\x20\x1e\x8f\x7f\x30\x1e\x8f\x8f\xa8\xd7\xb6\xb6\xb6\ \x12\x8f\xc7\xdf\xd0\x3d\x30\xde\xc8\x8b\xb7\xb5\xb5\x2d\x9d\x9b\ \x9b\x7b\xa7\x94\xd2\x03\x58\xbe\x7c\xf9\xb7\xdb\xdb\xdb\xc3\x52\ \x4a\x86\xf6\x0d\x11\x0c\x06\xa5\xa6\x69\xc2\x95\x2e\x86\x61\xe0\ \x38\x0e\x48\xc9\x44\x3e\x41\x87\xd1\x41\x26\x93\x01\x5d\x90\x76\ \xf2\x9c\xbd\xea\x9d\x00\x4c\x27\xa6\xd1\x84\x86\xae\xeb\x00\xe8\ \xba\x1e\x90\x12\x44\xf9\xe8\x85\x81\x33\xd5\xf5\x1b\x1b\x1b\x77\ \xae\x5c\xb9\xd2\x11\x42\xb0\x67\xcf\x1e\x86\x87\x87\x1b\xdf\xe8\ \x43\xf9\xba\x03\x52\x55\x55\x65\x66\x32\x19\x1d\x60\x76\x76\xf6\ \xba\x8f\x7e\xf4\xa3\xd7\xab\xe7\xfa\xfb\xfb\xcb\x27\x5c\x08\xf2\ \x94\xb0\x4a\x96\x10\x9a\x20\xe7\x14\xf0\x3c\x0f\xcb\xb2\xc0\x83\ \x9c\x5b\xc4\xb2\x2c\x2c\xcb\xc2\xd6\x5d\x1c\xd7\x26\x9d\x4e\x03\ \x70\x60\x7a\x9c\xd3\x4e\xea\xa6\x58\x2a\xa1\xeb\x3a\x3b\x76\x3f\ \x4f\x55\x93\xc0\x9b\x0b\x21\x84\x00\x49\xf9\x9f\x00\x04\xb5\xea\ \xda\xd1\x68\x94\xee\xee\xee\x3e\x40\xb8\xae\x6b\xee\xd9\xb3\x67\ \xd1\xff\x17\x80\xb4\xb5\xb5\x3d\xb8\x78\xf1\xe2\x8b\xa4\x94\xf4\ \xf7\xf7\x33\x33\x33\x53\x3e\xf9\x40\xc9\x2e\x6f\xb2\x00\x8a\x9e\ \x85\xed\xd8\x08\x21\x70\x1c\x07\x29\x25\x96\x65\x21\x3d\x89\x94\ \x1e\xb6\x6d\x63\x59\x16\x8e\x21\x91\xe0\x7f\x86\xf4\x3c\x6c\xdb\ \xc1\xb6\x6d\xa4\xe7\x11\xa9\x8a\xb2\xb8\x61\x31\x62\x81\x20\x91\ \x99\xc3\x3a\x69\x94\x05\x75\x61\x9c\xb1\x28\xf6\x58\x08\xe1\xea\ \x95\x8a\xfb\x24\x29\x25\x52\x4a\x92\xc9\xe4\xba\x0a\xb5\x3e\x1a\ \x8f\xc7\x07\x8e\x19\x40\x1a\x1b\x1b\x3f\x58\x28\x14\x22\x80\x15\ \x0c\x06\x97\xc7\x62\x31\xa4\x94\x98\x01\xd3\xdf\x58\x00\xc7\x73\ \x28\x95\x4a\xfe\xc6\x5a\x96\x55\x06\x42\x5a\x78\x9e\x57\x7e\xce\ \x03\x29\x25\xa5\x52\xa9\x0c\x88\xe7\x95\x01\x2c\x16\x01\x70\x1d\ \xd7\xff\x4c\x57\xd3\x91\xea\x7d\x40\x7f\x6f\x1f\xe7\x37\x9e\x47\ \x6e\x34\x87\x29\xa0\x14\x4d\xb3\xa0\x43\xc3\x89\x87\x90\x39\x13\ \x74\x09\x9a\x44\x68\xc8\xb3\xce\x3a\xeb\xb7\x00\xa6\x69\xf2\xe8\ \xa3\x8f\xde\x09\x7c\xfc\x98\x01\x64\xc1\x82\x05\xf7\xbf\xed\x6d\ \x6f\xd3\x34\x4d\x63\xef\xde\xbd\x94\x4a\xa5\xf2\xa6\xba\x36\xb6\ \x65\x57\x80\x50\xde\x68\x81\x40\x4a\xcf\x07\xca\x96\xb6\x2f\x21\ \x78\x12\xcf\x93\x07\x37\x7d\xfe\x44\xab\xd7\xba\x5e\x59\x7a\x4a\ \xa5\x12\xba\xa6\xfb\xcf\x09\x21\x90\x9e\x87\x87\x87\x2b\x5d\x12\ \xb3\x33\x88\x25\x33\xa4\xa4\x09\x0b\x25\xd2\x16\x38\xc9\x00\x6e\ \xca\xc0\x4b\x1b\xa2\x6c\xd5\xc0\x30\x0c\xea\xea\xea\x4e\x6f\x6b\ \x6b\xbb\x45\x08\xc1\xec\xec\xec\xf3\x63\x63\x63\x0f\xbe\xe5\x00\ \xe9\xe8\xe8\x38\xa3\xa6\xa6\x86\x52\xa9\x84\xe7\x79\x5e\xa1\x50\ \xd0\x74\x5d\xc7\x75\xdd\x83\x00\x48\x0f\xcb\xb6\x7c\x0f\x49\xd9\ \x09\x21\x04\x9e\x47\x59\xed\x48\x89\x8d\x8d\x37\xbf\xd1\xd2\xf5\ \x90\x42\xfa\x9b\xee\x49\x81\x40\x1c\x04\xc4\x3d\x28\x21\xba\xa6\ \xf9\xd2\x24\x84\xf0\xc1\xb1\x6d\x9b\x03\xc3\x23\x9c\xbb\xe8\x5c\ \x64\x52\xe2\x49\x49\x36\x92\xa2\x61\xa9\x8e\x37\x17\x42\xda\x02\ \x69\x69\x48\xab\xec\xad\x75\x76\x76\x9e\x09\x9c\x69\x18\x06\x3b\ \x76\xec\xb8\xa7\x12\x90\x57\xdb\x33\x7b\xad\x00\x09\x34\x37\x37\ \x6f\xe9\xe9\xe9\xc1\x71\x1c\x36\x6f\xde\x8c\x6d\xdb\xb8\xae\x7b\ \x50\xf5\xcc\x03\x60\x5b\x07\x55\x96\xe7\x79\x58\xae\x5b\x36\xbe\ \xa0\xc0\xc4\x16\x0e\x42\x42\x3a\x9d\x2e\x4b\x51\xb0\x44\xb1\x58\ \x24\x9f\xcf\x23\x1d\x81\x44\x56\x7c\xc6\x41\x40\x34\xa1\xe1\x79\ \x15\x12\x32\x0f\x88\xfa\xdc\x54\x2a\x85\xe7\x79\x4c\xa7\x66\xd1\ \x16\x4d\x32\x33\x72\x58\x14\x60\x78\xd8\x89\x00\xd6\x81\x30\x42\ \x2b\xbb\xd4\xb3\xb3\xb3\x2b\x5b\x5b\x5b\x6f\x06\x74\xe0\xe1\x78\ \x3c\xfe\xdc\x9b\x56\x42\xda\xda\xda\x9a\xc7\xc6\xc6\x6a\x80\xa0\ \xfa\xc2\xae\xeb\xfa\x1b\xa1\x69\x1a\xae\xeb\xfa\x9b\x27\x3d\x89\ \xed\x1c\x04\xc4\xc5\x23\x9b\xca\xa0\x09\x0d\xdb\xb3\xc8\xd8\x19\ \x1c\xc7\xc1\xd1\x3d\x62\x66\xc4\x57\x59\x8e\x61\x93\xcd\x66\xc9\ \xe5\x72\x48\x47\xe0\x78\x2e\x73\x73\x73\x00\xe4\xbd\x22\xb6\x6d\ \x51\x28\x14\xd0\x84\x40\x9a\x07\xc1\x92\xe0\x7b\x67\xbe\xd7\x06\ \xe4\xe6\xd2\x2c\x6b\x3c\xcd\xb7\xe1\xe3\xc1\x71\x16\xad\x08\xe2\ \x4c\x86\x71\x73\x41\x64\xa7\x31\x6f\x5b\x24\x8b\x16\x2d\xea\x01\ \x7a\x34\x4d\x63\xfb\xf6\xed\x89\x37\x35\x20\x85\x42\xe1\x9e\x4b\ \x2f\xbd\xf4\x82\x5c\x2e\xc7\xe8\xe8\x28\xb6\x6d\xfb\x1e\x92\x0a\ \xe2\x2a\x37\xc2\x93\x92\x5c\x2e\x47\x2e\x97\x2b\x8b\x55\x38\xe8\ \x9f\x66\x57\x73\x31\x4c\x1d\xcf\xf3\x30\xe4\xc1\x80\xaf\x50\x2a\ \x10\x4c\x6b\x18\x55\xe5\x5b\x17\x36\xe8\x9e\x40\x33\xca\xea\x45\ \x77\x05\x99\x4c\x96\x74\x3a\x8d\x40\x10\xaa\x8f\x50\xb4\x8b\xf3\ \x12\xe2\xf9\xce\x80\xef\xb5\xc9\xb2\xfa\x2b\x96\xca\xaf\xd9\x9f\ \x9d\xa2\xed\xe2\x14\xd4\x07\x30\x3a\x25\x86\x06\x5e\x51\xc3\x4d\ \x1a\x38\x33\x01\x32\xcf\x55\x81\x26\xd1\x34\x8d\x7c\x3e\x1f\x01\ \x6a\xe7\xf7\x31\xf1\xa6\x03\xc4\xf3\x3c\x2d\x18\x0c\x52\x28\x14\ \x7c\xd5\xe4\x38\xce\x61\xb6\xc1\xa3\x50\x28\xcc\x3f\x76\xfd\x13\ \x0b\x10\x8c\x84\xd0\xe6\xf5\x7e\x20\xaf\x21\xea\x34\xce\x3d\xf7\ \x5c\x66\x67\x67\xe9\xeb\xeb\xe3\x82\x0b\x2e\xe0\xf2\xcb\x2f\xe7\ \xce\x3b\xef\x64\x70\x70\x90\xcb\x2f\xbf\x9c\x58\x2c\xc6\x9d\x77\ \xde\x89\xa6\x69\x74\x76\x76\x72\xe0\xc0\x01\x74\x43\xc7\x30\x0c\ \x04\xe0\x14\x6c\x72\xb9\x4c\x59\x3a\x1d\xd7\x57\x91\xea\x9e\x3c\ \xcf\xf3\xed\x13\x80\x91\xb4\xf1\x1e\x5d\x44\x42\x96\x25\xca\xd3\ \x9d\xb2\x2d\xb2\x34\x04\x02\xdd\xf4\x7c\x37\xb9\xa7\xa7\xe7\x9f\ \x4f\x3d\xf5\xd4\x7f\x2e\x95\x4a\xfc\xea\x57\xbf\x12\x6f\x0a\x40\ \x9a\x9b\x9b\x9b\x84\x10\x0f\x01\x05\xcb\xb2\x7a\xd4\x06\x2b\xa9\ \xa8\x54\x59\x2a\xa6\xc8\x66\xb3\x68\x9a\x86\x65\x59\x18\xba\x81\ \x61\x94\x6f\x43\x93\x82\xf7\xbc\xe7\x3d\xdc\x74\xd3\x4d\x5c\x7b\ \xed\xb5\x9c\x7b\xee\xb9\xbc\xfd\xed\x6f\xa7\xbb\xbb\x9b\x75\xeb\ \xd6\x71\xcb\x2d\xb7\xf0\xfc\xf3\xcf\x73\xe5\x95\x57\xf2\x9d\xef\ \x7c\x87\x77\xbc\xe3\x1d\x5c\x70\xc1\x05\xdc\x7f\xff\xfd\xdc\x78\ \xe3\x8d\x74\x76\x76\xf2\xcc\x33\xcf\x70\xcf\x3d\xf7\x50\x53\x53\ \x43\x34\x1a\x65\x7a\x7a\x1a\xd7\x30\xd0\x34\x0d\xcd\x12\x64\xb2\ \x19\xb2\xd9\xac\xaf\x3a\x3d\xcf\xf3\x1f\x3b\x8e\x43\x38\x12\x26\ \x18\x31\xd1\x34\x8d\x67\x8b\x7b\x78\xef\x35\x31\x04\xe5\x80\xd2\ \x4a\x98\x38\x13\x61\xac\x91\x10\xee\x6c\x60\xde\x31\x91\x04\x83\ \xc1\x37\x8f\xca\x9a\x9c\x9c\x5c\xf4\xfe\xf7\xbf\xff\xcc\x58\x2c\ \xc6\xe6\xcd\x9b\x29\x16\x8b\xb2\x54\x2a\x09\x05\x82\xeb\xba\x38\ \x8e\xc3\xdc\xdc\x1c\x42\x08\x74\x7d\xfe\xf4\x0a\x81\xe6\x69\x48\ \x24\x77\xdd\x75\x17\x89\x44\x82\x5b\x6f\xbd\x95\xab\xae\xba\x8a\ \xbe\xbe\x3e\xce\x39\xe7\x1c\x76\xec\xd8\xc1\x65\x97\x5d\x86\xe7\ \x95\x7d\xd0\x6f\x7d\xeb\x5b\xdc\x70\xc3\x0d\x7c\xe1\x0b\x5f\x20\ \x91\x48\xd0\xd3\xd3\x43\xb1\x58\x64\x66\x66\x86\x93\x4f\x3e\x99\ \xde\xde\x5e\x3a\x3b\x3b\x59\xbc\x78\x31\x9f\xfa\xd4\xa7\x58\xb5\ \x6a\x15\x67\x9f\x7d\x36\xae\xeb\xf2\x9e\xf7\xbc\x87\x87\x1e\x7a\ \x88\x52\xa9\x74\xd0\x59\x38\xcc\xd1\x70\xe7\x1d\x0a\xdb\xb6\x49\ \x26\x93\x94\x92\x73\xec\xb8\x37\x87\xe7\x49\x14\xfd\x22\xca\x11\ \x3e\xd6\x8c\x81\x35\x11\xf0\xf9\xb3\xea\xea\xea\xaf\x4b\x29\x09\ \x87\xc3\xcf\x4d\x4d\x4d\x7d\xff\x75\x05\xa4\xb9\xb9\x99\xc9\xc9\ \x49\xf5\x67\xde\xb6\xed\xca\x53\x27\xd4\xc9\x53\x5f\x58\x79\x50\ \x0a\x90\xaa\xaa\x2a\x2e\xbd\xf4\x52\x7e\xfc\xe3\x1f\xf3\xde\xf7\ \xbe\x17\x21\x04\x17\x5d\x74\x11\xdf\xf8\xc6\x37\x78\xf0\xc1\x07\ \xf9\xc8\x47\x3e\xc2\xf6\xed\xdb\xe9\xef\xef\xe7\xea\xab\xaf\xa6\ \x58\x2c\xa2\x69\x1a\x0f\x3e\xf8\x20\x3f\xfc\xe1\x0f\xf1\x3c\x8f\ \x45\x8b\x16\x71\xf1\xc5\x17\x63\x9a\xe5\xd3\x7c\xc5\x15\x57\x70\ \xd9\x65\x97\xf1\xe8\xa3\x8f\xb2\x60\xc1\x02\xaa\xaa\xaa\x08\x85\ \x42\xe4\x72\x39\xee\xbd\xf7\x5e\x22\x91\x08\x23\x23\x23\xec\xdf\ \xbf\xdf\x77\xa7\x93\xc9\x24\x8e\xe3\xf8\xae\xb2\xeb\xba\x68\x9a\ \x46\xa9\x54\xe2\xc0\x81\x03\xac\x3f\xff\xa2\x32\x18\x48\xa6\xf4\ \x04\x9d\x2b\x4c\xbc\x94\x89\x9b\x31\xf1\xaa\x4d\x64\x87\x86\xd0\ \x24\x18\x52\x22\xf9\xa4\x61\x18\x6c\xdd\xba\xf5\x47\xaf\x3b\x20\ \x93\x93\x93\x34\x36\x36\xfe\xd5\x89\x27\x9e\xf8\xdd\x7c\x3e\x8f\ \xeb\xba\x12\x10\x95\x7e\x7e\xa5\x97\x25\x84\x40\x08\x81\xb2\x2f\ \xb7\xdf\x7e\x3b\xd9\x6c\x96\xb5\x6b\xd7\xf2\xf4\xd3\x4f\xb3\x7e\ \xfd\x7a\xf6\xec\xd9\x83\xe3\x38\x3c\xf6\xd8\x63\x3c\xfa\xe8\xa3\ \xe4\xf3\x79\x5a\x5a\x5a\xfc\xd3\x5c\x28\x14\x58\xb0\x60\x01\xa1\ \x50\x88\x42\xa1\x40\x2a\x95\x22\x1a\x8d\xfa\x6a\x23\x10\x08\xf0\ \xc0\x03\x0f\x30\x37\x37\x47\xa9\x54\x92\x37\xdd\x74\x93\x08\x04\ \x02\x65\x6f\x4b\xd3\x48\xa5\x52\xe8\xba\xce\xc2\x85\x0b\xf9\xb7\ \x7f\xfb\x37\x3e\xf3\x99\xcf\x90\x4c\x26\xfd\xf7\x2b\x69\x0e\x04\ \x02\xbe\xb4\xcc\xcc\xce\x20\xa5\x24\xe7\x96\x08\x5f\x18\x47\x76\ \x04\xd1\x84\x86\xa6\x79\x48\xcd\xc3\xc9\xe8\xd8\xe3\x21\x52\xbf\ \xae\x13\xe8\x12\xc3\x30\x90\x52\xda\xaf\x24\x46\x39\x6a\x95\x65\ \x59\x56\x57\x5b\x5b\x1b\x73\x73\x73\xd8\xb6\x2d\x94\xf1\x56\x31\ \x80\x94\xd2\x3f\x7d\xae\xeb\x72\xdd\x75\xd7\x71\xf5\xd5\x57\xb3\ \x61\xc3\x06\x76\xed\xda\xc5\xfa\xf5\xeb\x79\xf2\xc9\x27\x71\x1c\ \x87\xeb\xaf\x2f\xf3\x8b\x13\x13\x13\x48\x29\xfd\x6b\xec\xdb\xb7\ \xef\x90\x6b\x1e\x38\x70\x40\x6d\xa0\xed\x38\xce\x01\x29\x25\xba\ \xae\x5b\xf9\x7c\xfe\xf2\xb1\xb1\xb1\x29\x80\x40\x20\x70\x49\x73\ \x73\xf3\xed\xb9\x5c\x8e\x42\xa1\x40\x2c\x16\xe3\xda\x6b\xaf\xa5\ \xa3\xa3\x83\x6d\xdb\xb6\xf1\xdd\xef\x7e\x97\x91\x91\x11\x9a\x9a\ \x9a\x7c\x42\xd2\x71\x1c\x92\xc9\x24\xae\xeb\xd2\xd0\xd0\x70\x30\ \x20\x9d\x97\xfc\xfd\x07\x46\x30\xa7\x1c\x06\x83\xd0\x12\x5c\x4a\ \x20\x28\x38\x90\x1e\x44\x22\x11\x1e\x94\xe2\x63\x88\x79\xc6\x3f\ \x9f\xcf\xff\x49\x73\x73\xf3\x63\x9a\xa6\x69\xf1\x78\x7c\xdd\xeb\ \x66\x43\xa4\x94\x56\xa9\x54\xc2\xb6\x6d\x3f\xbe\x80\x72\xf0\x96\ \x4e\xa7\x31\x4d\x13\x21\x04\xa5\x52\x89\x70\x38\xcc\xdf\xfe\xed\ \xdf\xf2\xf4\xd3\x4f\xd3\xdc\xdc\xcc\x8f\x7e\xf4\x23\x1e\x7f\xfc\ \x71\x06\x07\x07\x0f\x01\x20\x12\x89\xfc\xe1\xa4\x8d\x10\x58\x96\ \xb5\x4f\xd3\xb4\x21\x40\x3a\x8e\xb3\x2b\x1e\x8f\x7f\xfa\x0f\xbd\ \x36\x12\x89\x7c\x7b\xeb\xd6\xad\xff\x09\x48\xdb\xb6\xb3\x8b\x17\ \x2f\x1e\x6d\x68\x68\x88\x28\x09\xb9\xef\xbe\xfb\xe4\x97\xbe\xf4\ \x25\xf1\xbd\xef\x7d\x8f\x0f\x7c\xe0\x03\x7c\xe8\x43\x1f\xe2\xf3\ \x9f\xff\x3c\xdb\xb7\x6f\xf7\x3d\xae\x4a\xa7\x24\x91\x48\x70\xf6\ \x9a\xb3\x70\x1c\x07\x81\x60\xd4\x1c\xe3\x84\xf3\xa0\x6d\x7a\x39\ \x4e\x22\x84\x1d\x0f\x21\x5b\xe6\xe3\x14\x43\x02\xb4\x18\x86\xd1\ \xb2\x71\xe3\xc6\xa3\x8a\xe0\x5f\x36\x20\x75\x75\x75\xd7\xae\x59\ \xb3\xe6\x1f\x07\x07\x07\x43\x8e\x53\x66\x55\x75\x5d\x3f\x24\xde\ \xb0\x2c\x8b\x40\x20\xc0\x0d\x37\xdc\xc0\x8a\x15\x2b\xb8\xe6\x9a\ \x6b\xb8\xfe\xfa\xeb\xb9\xf0\xc2\x0b\x19\x1e\x1e\x66\x3e\x39\x44\ \x2c\x16\x3b\x12\xe8\x2e\x20\x85\x10\x64\x32\x99\x6f\xc4\xe3\xf1\ \xaf\x1c\xe9\xfe\xd2\xe9\x74\x1e\xf0\x93\x4e\xa3\xa3\xa3\xeb\x47\ \x46\x46\xcc\x79\xe9\xf9\xc7\xf1\xf1\xf1\xd3\x2e\xb8\xe0\x02\x12\ \x89\x04\xb7\xdd\x76\x1b\x13\x13\x13\x2c\x5e\xbc\x98\xe7\x9f\x7f\ \x9e\x7c\x3e\x8f\x6d\xdb\x14\x0a\x05\xd4\x77\x73\x5d\x97\x42\xa1\ \x50\xfe\x4e\xc2\xa0\xd0\x33\x81\xb6\xa0\x16\xad\x36\x47\xf4\x14\ \x0d\xa9\x49\xa4\x0d\x4e\x32\xc0\xec\xcf\xeb\xf1\x8a\x9a\x52\x5d\ \x1c\x8d\xea\x32\x8e\x42\x55\xb5\x2d\x5c\xb8\xb0\x7e\x6c\x6c\xcc\ \xb7\x17\x95\x34\x87\x4a\x0c\x01\xac\x5f\xbf\x9e\xbe\xbe\x3e\x4c\ \xd3\x64\xf3\xe6\xcd\x3c\xf5\xd4\x53\x04\x83\x41\x82\xc1\xa0\x4f\ \x8f\x1c\x8e\x81\xb2\x45\x55\x55\x55\x6c\xd9\xb2\xa5\x3d\x99\x4c\ \x4e\xbc\x12\x9d\x9c\xc9\x64\x7e\xa3\x1e\x87\xc3\xe1\x4b\x0e\x1c\ \x38\x60\x00\x9e\xeb\xba\x27\xde\x70\xc3\x0d\xd1\xaf\x7c\xe5\x2b\ \xf4\xf6\xf6\xd2\xd1\xd1\xc1\x9d\x77\xde\xc9\xfa\xf5\xeb\x29\x14\ \x0a\xbe\x5d\x71\x1c\x07\xc7\x71\x98\x9d\x9d\xc5\x2e\x59\x94\x4a\ \x3a\x2f\xf4\xe7\x79\xfb\xc2\x0b\x89\x85\xa3\x3c\xbe\xef\x3f\x08\ \xe9\xd5\xd8\x64\xc9\x1f\xb0\x91\x0e\x68\x9a\x86\x69\x9a\xf4\xf4\ \xf4\xdc\x9d\x4c\x26\x37\x8d\x8c\x8c\xdc\xf9\x9a\x49\x88\x52\x43\ \x95\xbe\xbb\xd2\xc1\xb6\x6d\xb3\x70\xe1\x42\xee\xb9\xe7\x1e\x3e\ \xfc\xe1\x0f\xf3\xaf\xff\xfa\xaf\xfc\xdd\xdf\xfd\x1d\xc1\x60\xb0\ \xcc\x3b\xcd\x4b\x90\xe7\x79\xa8\xbc\x83\x52\x13\xf3\xf6\x40\xa4\ \x52\xa9\x87\x80\x84\xae\xeb\xe9\x70\x38\x6c\x2b\xc3\xab\xa4\xea\ \x95\xac\x44\x22\x71\x6d\x22\x51\x0e\xa8\xeb\xeb\xeb\x9f\x8c\xc5\ \x62\x67\xdf\x7c\xf3\xcd\x8c\x8f\x8f\x73\xfb\xed\xb7\xb3\x73\xe7\ \x4e\x02\x81\x80\x4f\x5c\x56\x7e\xbf\xe9\xe9\x69\xba\xbb\xbb\xcb\ \x81\xab\x2b\x79\x7c\xfc\x71\xba\xcf\x09\xd2\xae\xb5\xe2\x4e\x84\ \xf0\x52\x0b\xa1\xed\x10\x72\x15\x5d\xd7\xaf\xec\xef\xef\xd7\x5f\ \x2b\x40\x42\xef\x7b\xdf\xfb\xf6\x1e\x38\x70\xa0\x5a\x89\xb2\xa2\ \x46\x94\xeb\x29\xa5\xe4\xd3\x9f\xfe\x34\x4f\x3d\xf5\x14\xf3\x5c\ \x0f\x1f\xfc\xe0\x07\xa9\xa9\xa9\x79\x49\x17\x30\x4d\x93\x2d\x5b\ \xb6\x7c\x3e\x93\xc9\xbc\xaa\xfc\xd0\x8b\x48\xfa\x8d\x03\x03\x03\ \xf5\x9a\xa6\x59\x52\xca\xff\xf5\x4f\xff\xf4\x4f\x6b\x6f\xba\xe9\ \x26\x2c\xcb\x62\xdd\xba\x75\xec\xdb\xb7\x8f\xb1\xb1\x31\x5f\x8d\ \x39\x8e\xe3\xb3\xc6\x39\xaf\x44\xdb\x7b\x4a\x84\xdb\xa1\xd0\x3c\ \x8b\x01\x04\xb5\x08\x6e\x09\x28\x98\x4c\xfd\xa4\x11\x61\x78\x18\ \x86\xe1\xc7\x50\xaf\x05\x20\xf5\xd5\xd5\xd5\x0b\x75\x5d\xf7\x25\ \xa4\x50\x28\x50\x2c\x16\x09\x04\x02\x84\xc3\x61\x34\x4d\xe3\x27\ \x3f\xf9\x09\x57\x5c\x71\x05\xb5\xb5\xb5\x14\x8b\x45\xdf\x5b\x39\ \x5c\x1a\xd4\xdf\xba\xae\x93\x4e\xa7\x77\x1a\x86\xf1\xb8\xeb\xba\ \x4e\x24\x12\x89\x67\x32\x99\xd7\x14\x0c\x4d\xd3\xc8\x66\xb3\xbf\ \xcb\x66\xb3\xea\x34\x5f\x61\x18\x06\xb7\xdc\x72\x0b\x86\x61\xc8\ \xbb\xee\xba\x4b\xac\x5e\xbd\xda\x7f\xbd\x72\xe3\x95\x26\xc8\x14\ \x73\x44\xb6\xe7\x98\xfa\x7d\x9a\xcb\xcf\xf8\x5b\x5c\xbd\xc0\x43\ \xbd\xdf\xa6\x29\xdc\xc5\x44\x66\x88\xb9\xb1\x22\xc2\x28\x5f\x67\ \x66\x66\x66\x51\x34\x1a\xfd\xcb\x5c\x2e\x77\xdf\xab\x02\x48\x85\ \xde\x76\x95\xaf\xae\x44\xd9\xb2\x2c\xf2\xf9\x3c\xed\xed\xed\x3c\ \xf4\xd0\x43\xbc\xff\xfd\xef\x67\xdf\xbe\x7d\x5c\x77\xdd\x75\x04\ \x02\x01\x34\x4d\xfb\x43\x55\x20\x87\x7c\x7e\x38\x1c\x26\x1e\x8f\ \x3f\x35\x33\x33\x73\xc3\xeb\x95\x46\x3e\xfc\xd4\xa6\xd3\xe9\xcd\ \x3b\x76\xec\x08\x7a\x9e\xa7\xb7\xb4\xb4\xbc\xff\xe9\xa7\x9f\x46\ \xd7\x75\x84\x10\x84\xc3\xe1\x43\x54\x97\x69\x9a\x9c\x7d\xda\x1a\ \xa4\x07\xae\x74\xd9\xd6\xbb\x11\xd3\xd0\x59\xea\x9c\x83\x3b\x23\ \x58\x6a\x2f\x86\xd5\xaa\x9e\x47\x02\xac\x29\x14\x0a\x6b\xee\xbe\ \xfb\xee\x57\x07\x90\x78\x3c\x4e\x6b\x6b\xeb\x59\xb6\x6d\x7f\x40\ \xc5\x15\x2a\x12\x37\x8c\x32\x0f\x55\x53\x53\xc3\xe6\xcd\x9b\x31\ \x4d\x93\x9d\x3b\x77\x1e\x02\xc0\x4b\x4a\x9e\x04\x02\x6f\x68\x39\ \x52\x2a\x95\xba\x03\xb8\x03\x08\x2c\x5e\xbc\xb8\xf4\x37\x7f\xf3\ \x37\x4c\x4e\x4e\xb2\x61\xc3\x06\xba\xba\xba\xf8\xee\x77\xbf\x4b\ \xb1\x58\x2c\xb3\xc2\xc5\x22\xf1\x78\x1c\x21\x04\x1b\x53\xbd\xfc\ \xd9\xa7\xab\xf1\x5c\xf0\x7c\xb0\xc1\x1a\x0b\x52\xe8\x8d\x61\x8d\ \x05\x01\xf9\x62\x0e\xcc\xd1\xab\xac\x50\x28\xf4\xd7\x67\x9e\x79\ \xe6\x95\x96\x65\x49\xd7\x75\x85\xba\x39\xcf\xf3\x38\xef\xbc\xf3\ \xd8\xbd\x7b\x37\xdf\xf8\xc6\x37\xe8\xea\xea\xf2\x6d\x8b\x0a\xb8\ \x0c\xc3\xf0\xa3\x60\x29\xcb\xd1\xac\xa2\x42\xb6\x6d\xdb\x16\x01\ \x0a\xbc\x79\x96\x4c\x24\x12\x39\xd3\x34\xa5\x6d\xdb\xe1\x0d\x1b\ \x36\xe8\x3f\xf8\xc1\x0f\x7c\x49\xaf\xe4\xe6\x00\x2c\xcd\x25\x54\ \x25\x88\x26\x4f\xe7\x86\x0b\x3f\xcb\x23\x83\xdf\x61\x60\x6c\x90\ \xd2\xa9\x93\x4c\xe4\x0b\xe4\x86\x34\x10\xf2\x65\x1d\xd0\x97\x04\ \x5d\x57\x57\xd7\x7d\x2b\x56\xac\xf8\xb0\x6d\xdb\xec\xdf\xbf\x9f\ \x68\x34\x4a\x3c\x1e\xe7\x93\x9f\xfc\x24\x1d\x1d\x1d\xfc\xcb\xbf\ \xfc\x0b\xe1\x70\xd8\x57\x49\xca\xc0\x7b\x9e\x57\x66\x59\xe7\xf3\ \x20\x95\x2e\x71\x3e\x9f\x67\xef\xde\xbd\xe1\x7c\x3e\x5f\xe4\x4d\ \xb8\xea\xea\xea\x1e\x3b\xe5\x94\x53\xce\x5d\xbe\x7c\x39\x5b\xb7\ \x6e\x65\x7a\x7a\x9a\xd6\xd6\x56\xa4\x94\x64\x32\x19\x16\x2d\x5a\ \x84\x8e\x86\x53\x82\xa2\x57\xc4\xa5\x84\x69\x47\xd0\x8d\x79\x35\ \x6d\x82\x30\xfc\x78\x4a\x9a\xa6\x29\xb6\x6f\xdf\xbe\x7a\x6c\x6c\ \x6c\xf3\x2b\xb5\x21\x31\xcf\xf3\xaa\xd4\xe9\x70\x5d\xd7\x67\x6b\ \xe3\xf1\x38\xe7\x9c\x73\x0e\x37\xdd\x74\x13\xdb\xb6\x6d\x23\x97\ \xcb\x31\x37\x37\x47\x2a\x95\x22\x10\x08\xd0\xda\xda\xca\xd8\xd8\ \x18\x63\x63\x63\xac\x58\xb1\x82\x6d\xdb\xb6\x51\x2c\x16\x7f\x35\ \x3e\x3e\x7e\x6b\x2c\x16\x4b\xd7\xd7\xd7\x97\xf2\xf9\xfc\x9b\x11\ \x0f\x84\x10\x01\xdb\xb6\x79\xe2\x89\x27\xe8\xee\xee\x96\x97\x5c\ \x72\x89\xb8\xeb\xae\xbb\xa8\xad\xad\xc5\xf3\x3c\x9f\x47\x1b\xd5\ \x67\x68\xff\x8b\x59\x16\x34\x06\x70\xf2\x56\x39\xcb\x38\x15\xc2\ \x9a\x08\x22\x0b\x3a\x5e\x5e\x07\x10\xd1\x68\x14\xc3\x30\x9c\x57\ \xac\xb2\xea\xeb\xeb\x6f\x6f\x6c\x6c\xfc\x53\xe5\xea\x2a\x40\xba\ \xba\xba\x78\xf6\xd9\x67\xd9\xb4\x69\xd3\x8b\xbe\x77\x74\x74\xd4\ \x97\x9a\xde\xde\x5e\x62\xb1\x18\x81\x40\x60\x72\xff\xfe\xfd\x4f\ \xcf\xcd\xcd\xf9\x69\xd7\x37\xe3\x72\x1c\xe7\xf3\x03\x03\x03\xcd\ \xb6\x6d\xaf\x59\xb3\x66\xcd\xb5\x43\x43\x43\x18\x86\x71\x48\x7e\ \x07\x20\x65\xe5\x38\xb3\x39\x4a\x21\x2f\x79\xd7\x09\xef\xa3\xaf\ \x6a\x33\xe9\x8e\x19\x40\x50\x18\x36\x99\xf9\x45\x0d\xe8\x65\xf2\ \xf3\x55\xb1\x21\xae\xeb\x46\x94\xfb\xaa\x0a\x0b\xde\xfd\xee\x77\ \x33\x3a\x3a\xca\x63\x8f\x3d\x46\x38\x1c\xf6\xcb\x3c\x15\xbd\xae\ \x0c\x7e\x85\x6b\x5b\x2e\x09\x75\x5d\xd2\xe9\x74\x94\x37\xf9\xaa\ \xae\xae\x26\x9d\x4e\xff\xf7\x3c\x37\xe6\x0e\x0d\x0d\x5d\x9b\x4c\ \x26\x51\x55\x33\x9e\xe7\xd1\xdf\xdf\x4f\x55\x55\x15\x86\x67\xb3\ \xed\x6b\x36\x94\xa2\xcc\xd5\xed\x44\x0a\x93\x78\xca\x21\x60\xea\ \x14\x0b\x19\x9c\x54\x39\x3d\x3d\x35\x35\x45\x2c\x16\xfb\x61\x53\ \x53\xd3\x0d\x53\x53\x53\x8f\x1e\x35\x20\x52\x4a\x57\x49\x86\xb2\ \x07\x13\x13\x13\xdc\x78\xe3\x8d\x7c\xf5\xab\x5f\xe5\xf6\xdb\x6f\ \x67\x78\x78\x98\x93\x4f\x3e\x99\x99\x99\x19\xe2\xf1\x38\x35\x35\ \x35\x3c\xff\xfc\xf3\x68\x9a\xc6\x49\x27\x9d\xc4\x96\x2d\x5b\xc4\ \xe8\xe8\xe8\x13\xd3\xd3\xd3\xeb\x00\x16\x2e\x5c\xc8\xf8\xf8\xf8\ \x9b\x16\x10\xc5\x02\xcf\x4b\xb7\xa9\xb2\x9c\xab\x56\xad\x92\xa3\ \xa3\xa3\x22\x99\x4c\xd2\xd0\xd0\xc0\xc9\x27\x9f\x5c\x26\x23\x3d\ \x1b\x4e\x9a\xa1\xa6\xae\x80\x97\x0e\x50\x93\x5a\x84\x97\x36\x71\ \x53\x06\xb4\x80\xd0\xa5\x22\x3e\x4f\xba\xf7\xde\x7b\x1b\x8e\x5a\ \x42\x9a\x9a\x9a\x16\xbb\xae\xfb\x6e\xe5\x39\x05\x02\x01\x02\x81\ \x00\x43\x43\x43\x6c\xd8\xb0\xc1\xf7\x9a\x00\x7e\xff\xfb\xdf\xfb\ \x39\xf3\xca\x78\x63\xd3\xa6\x4d\x84\x42\x21\xff\x75\xc0\x9b\x1a\ \x8c\x3f\x10\x44\x3e\xba\x65\xcb\x96\xb5\x81\x40\xe0\xea\xf3\xce\ \x3b\xef\x8a\x1f\xfc\xe0\x07\x7e\x6a\x21\x93\xc9\x20\x3d\x8f\x31\ \x99\xe0\x8c\xb7\x39\xd8\x8e\x4b\x55\xa8\x86\x82\x9b\x41\xe8\xe5\ \x82\xbe\xfc\xae\x18\xe9\x67\x6a\x40\x1c\x74\x72\xfe\xe8\xf5\x8e\ \x40\xcc\xad\x89\x44\x22\x0b\x5d\xd7\x25\x99\x4c\x22\xa5\xe4\xfa\ \xeb\xaf\xa7\x58\x2c\x12\x0e\x87\x89\x44\x22\x3e\x48\xa1\x50\x88\ \x60\x30\x48\x38\x1c\x26\x1c\x0e\x13\x0a\x85\x08\x85\x42\xc4\x62\ \xb1\x43\xbc\xab\xb7\xda\xca\x64\x32\x93\xa5\x52\xe9\x49\x4d\xd3\ \x46\xbe\xf5\xad\x6f\x1d\x22\x3d\x7e\x32\x4e\xba\x80\xc6\x62\x79\ \x11\x9f\x59\x7d\x37\x7f\x7f\xee\x8f\x18\xde\xe3\xd2\x11\x5b\x8e\ \x08\x96\x6b\xcf\x14\x7b\x7c\xa4\x98\xe4\x8f\x3e\x1b\x0e\x87\xaf\ \x5c\xb2\x64\xc9\xdd\x00\xc9\x64\x92\xa6\xa6\x26\x7e\xf2\x93\x9f\ \x30\x3d\x3d\xcd\x43\x0f\x3d\xc4\xfe\xfd\xfb\x59\xb7\x6e\x1d\x8f\ \x3c\xf2\x08\x2b\x57\xae\x24\x91\x48\x30\x38\x38\x48\x4f\x4f\x0f\ \x8d\x8d\x8d\xfc\xf0\x87\x3f\xa4\x58\x2c\xce\xbc\xf0\xc2\x0b\x8d\ \xcd\xcd\xcd\x81\xc9\xc9\xc9\xd2\x5b\x15\x98\x9a\x9a\x9a\x2f\xac\ \x5e\xbd\xfa\xa6\xd1\xd1\x51\x92\xc9\x24\xa1\x50\x88\xd3\x4f\x3f\ \x9d\x40\x20\x80\x04\x02\x86\x86\x74\x02\x38\x5e\x09\xc3\x30\x71\ \xa4\x8d\xa6\x97\x6b\xcf\x64\x05\x31\x30\x3c\x3c\x1c\x7f\xfa\xe9\ \xa7\x17\x1e\x95\xca\xd2\x34\x2d\xac\x54\x90\xae\xeb\x84\x42\x21\ \x3e\xf9\xc9\x4f\xd2\xd9\xd9\xc9\x0b\x2f\xbc\x80\x94\x92\xde\xde\ \x5e\x74\x5d\xf7\xf3\x1c\x00\x8f\x3c\xf2\x08\xae\xeb\xaa\x82\x06\ \x09\xc8\xb7\x32\x18\xf3\x74\xcb\xcf\x9e\x79\xe6\x99\xfd\x0b\x17\ \x2e\xbc\xbd\xbd\xbd\x3d\x3a\x3a\x3a\xea\xf3\x79\x1e\x1e\xdb\xeb\ \xfb\x38\xeb\x2f\x22\x18\x19\x13\x37\x6d\xa0\xa7\x82\xb8\x29\x03\ \x37\x6d\x60\x8d\x85\x10\x02\xc5\x68\x9b\x47\x6d\x43\x42\xa1\xd0\ \xa7\x65\xd9\xaa\x8b\x25\x4b\x96\xe0\x38\x0e\xf9\x7c\x9e\x3d\x7b\ \xf6\xf8\xd1\xab\xe2\x7c\x82\xc1\xa0\x9f\x94\x51\x65\x9b\x80\x4c\ \xa5\x52\x36\xc7\xc0\xca\x64\x32\xcf\x02\xcf\x1a\x86\xf1\x8f\x23\ \x23\x23\x51\x4d\xd3\x0e\x26\xe5\xa4\x43\xfd\x42\x03\xe1\xea\x2c\ \x6a\x3c\x85\x9a\x45\x55\xbc\x30\xb5\x89\x58\xa0\x96\xbc\x3e\xc5\ \xc8\x57\x5b\x11\x5a\x99\x50\x55\x99\xd5\xa3\x02\x44\x4a\x29\xa4\ \x94\xa2\x54\x2a\xf1\x89\x4f\x7c\x02\xc3\x30\xb8\xe8\xa2\x8b\xf8\ \xf2\x97\xbf\x8c\x69\x9a\x18\x86\x41\x2a\x95\x62\x64\x64\x84\xee\ \xee\x6e\x86\x87\x87\x49\xa7\xd3\xf4\xf7\xf7\x93\xcd\x66\xc9\x64\ \x32\x7f\x33\x30\x30\xf0\x0d\x8e\xa1\xa5\x3c\x4d\x28\xe7\xf8\xa5\ \x94\xb8\x48\x3c\xf2\x3c\xbb\xab\xc8\xa2\x77\x76\xf1\xf0\xf3\x4f\ \x10\xab\x8f\x12\x88\x2e\x66\xd7\xcc\x5e\x52\xa3\x36\x9a\x56\x3e\ \xa4\x85\x42\xa1\xee\xa8\x6d\x48\x7d\x7d\x7d\x7f\x53\x53\xd3\x52\ \xd7\x75\xa9\xab\xab\xe3\x8a\x2b\xae\xa0\xb7\xb7\xd7\x2f\x36\xf0\ \xdb\x0a\x4a\x25\x42\xa1\x10\xa5\x52\x89\x6c\x36\x4b\x34\x1a\x25\ \x95\x4a\x91\xcd\x66\xaf\x3b\xd6\x00\x69\x69\x69\xf9\x8c\x10\xe2\ \xb3\x42\x88\xba\x95\x2b\x57\xfa\xb9\x9e\xa2\x67\x11\x3a\x39\x85\ \xe1\x18\x78\xd3\x11\x9c\xc9\x30\x68\x1e\x42\x13\x2a\xd7\x8e\x94\ \x92\xe9\xe9\x69\x1e\x7b\xec\x31\x71\xb4\x71\x88\x50\x74\xb5\xae\ \xeb\xdc\x75\xd7\x5d\x87\x24\xa3\x2a\xdd\x5b\x15\xb9\x9a\xa6\x89\ \x6d\xdb\x32\x16\x8b\x89\x74\x3a\xad\x1f\x4b\x60\x54\x57\x57\x33\ \x31\x31\xf1\xa5\xd6\xd6\xd6\x6b\x81\x3a\xcf\xf3\xca\x44\xa9\xd0\ \x78\xac\xb8\x9d\xbf\x5c\xd5\x84\x23\x6d\x2c\xb7\x44\xcc\x08\xe3\ \x66\x74\xbc\x54\x90\xdc\xce\x18\x56\x3c\xf0\x07\xa9\xff\x97\xe5\ \xf6\x02\xa6\x6d\xdb\x5c\x70\xc1\x05\x34\x36\x36\x72\xf5\xd5\x57\ \xd3\xd4\xd4\x84\x69\x9a\x2c\x5e\xbc\x98\x8e\x8e\x0e\x4c\xd3\xa4\ \xb1\xb1\x91\x64\x32\x49\x2e\x97\x43\xd7\x75\xe2\xf1\xb8\xd8\xbd\ \x7b\xf7\x2f\x32\x99\xcc\x2f\x8f\x25\x40\x94\xcb\x2b\xe6\x4f\xa1\ \x4a\x45\x58\x96\x85\xd0\xca\xe5\xa6\xef\x8c\xfd\x35\x5f\x5c\xf7\ \x30\xcb\x6a\xcf\x64\x79\xc3\xd9\x44\x3b\x25\xc4\x4a\x07\x1b\x8c\ \x5e\x89\x0d\x01\xc4\x7c\x76\x8d\x7b\xef\xbd\x97\xa1\xa1\x21\xf6\ \xec\xd9\x83\x69\x9a\xd4\xd7\xd7\x93\xcd\x66\xd1\x75\x9d\xce\xce\ \x4e\x6a\x6b\x6b\xd9\xbb\x77\x2f\x3d\x3d\x3d\x64\x32\x19\x0a\x85\ \xc2\xe6\x78\x3c\xde\xcb\x31\xb8\x1c\xc7\x91\x7e\x57\x30\xa0\x21\ \xd0\x43\x82\x7d\x7b\x93\xfc\xcb\xff\xb8\x9c\xeb\x1e\x7c\x37\x77\ \x5f\xb6\x99\xc9\xb9\x69\x9e\x4b\xfc\x17\xdf\xfb\xd5\xbd\x58\x96\ \xe6\x07\x94\xaf\x88\xcb\xd2\x34\x8d\x81\x81\x01\x2e\xba\xe8\x22\ \x0a\x85\x82\xaf\x0b\x2b\xcb\x5c\xfa\xfa\xfa\xfc\xc7\x4f\x3f\xfd\ \xf4\x21\x51\xf9\xb1\xb8\x66\x66\x66\xde\xd5\xd2\xd2\x32\xa5\x78\ \x2d\x81\x40\x84\x05\x85\x9c\x47\x38\x74\xd0\xab\x75\x5c\x87\xc7\ \x87\xfe\x03\xcf\x95\xbe\xbd\x7d\xa5\x12\x42\x20\x10\xa0\xbe\xbe\ \x9e\x40\x20\xa0\xaa\x14\x09\x06\x83\x64\x32\x19\x6a\x6a\x6a\xfc\ \xbc\xba\xca\xa9\x67\x32\x19\x2c\xcb\xb2\x81\xb1\x63\x15\x10\xd7\ \x75\xb3\xf3\x92\x52\xa6\x43\x28\xe7\x80\x62\x31\x13\xdb\x02\xd7\ \x9b\xef\x08\xc6\xc5\xf5\x1c\x3c\xd7\xc5\xb2\xbc\x57\x0e\x88\xe7\ \x79\xac\x5b\xb7\x8e\x2b\xaf\xbc\x92\x33\xce\x38\x83\x87\x1f\x7e\ \x98\xdf\xfd\xee\x77\xe4\xf3\x79\x26\x26\x26\x38\xe3\x8c\x33\x98\ \x9c\x9c\xa4\xaf\xaf\x0f\xcf\xf3\x68\x6c\x6c\xe4\x85\x17\x5e\xc0\ \xf3\xbc\x7d\xf1\x78\xfc\xdf\xdf\x0c\x93\x11\x5e\xab\x35\xcf\x64\ \x4b\xcb\xb2\x84\x40\x20\x34\x9d\xa5\xcb\xea\x79\x64\xeb\xcf\xf9\ \xcc\x39\xdf\xe2\xbf\xf6\x7c\x13\x27\x17\xe6\xbc\xc5\x1b\xe8\x75\ \xbe\x43\xa9\xe4\x1c\xa2\x55\x8e\x5a\x42\x36\x6e\xdc\xc8\xf4\xf4\ \x34\x35\x35\x35\x0c\x0c\x0c\xf8\x28\x4b\x29\xf9\xe9\x4f\x7f\xea\ \x57\x92\x78\x9e\xc7\xd4\xd4\x94\x2a\xae\x16\xc0\x31\x0b\x06\x60\ \x15\x0a\x85\xd9\x42\xa1\x50\x9f\x4c\x26\xd1\x84\x46\xbe\xd9\xa3\ \x68\x55\xf1\x1f\x43\x7f\xcf\x27\x63\xdf\xe3\x40\xae\x9f\xe7\x27\ \x7e\x87\x11\xd0\x98\x19\x4b\x31\x37\x57\xae\x43\x50\x99\xd5\xa3\ \x06\xc4\x30\x0c\x46\x47\x47\x19\x1e\x1e\x46\xd7\x75\xdf\xe5\xd5\ \x34\xcd\xff\x5b\x45\xed\x2a\x0f\x32\x39\x39\xd9\xd2\xda\xda\xfa\ \xbe\x78\x3c\xfe\xc8\xb1\xaa\xb5\x84\x10\x96\x4a\x57\xab\x86\x1e\ \x23\x28\xa8\x22\xc2\x1d\x8f\x5d\x4b\xb2\xcf\x63\x66\x6f\x81\x52\ \xd2\x23\x37\xe9\x22\x34\xe1\xef\xd3\x51\x03\x12\x8d\x46\xf9\xc8\ \x47\x3e\x42\x7f\x7f\x3f\x17\x5f\x7c\x31\x4f\x3c\xf1\x04\x43\x43\ \x43\xd4\xd5\xd5\xe1\x38\x8e\xef\x06\x8e\x8c\x8c\x90\x4c\x26\x69\ \x69\x69\x61\x72\x72\x92\x5c\x2e\x57\x4d\xb9\x18\xe6\x98\x03\xa4\ \xa5\xa5\x45\x55\xe9\x4b\x75\x08\x6b\x6b\x6b\x31\x87\x8b\x3c\x71\ \x63\x9a\x42\xc2\x2d\x77\xec\x6a\x20\xf4\xb2\x0f\x66\x98\xf8\x07\ \xf6\x48\xf4\xfb\x1f\x05\x24\x12\x89\x30\x35\x35\xc5\xa7\x3e\xf5\ \x29\xa4\x94\x6c\xdc\xb8\x91\xba\xba\x3a\x6a\x6b\x6b\x71\x5d\x97\ \xd1\xd1\x51\xba\xba\xba\xfc\xc6\x97\xb6\xb6\x36\x72\xb9\x9c\x02\ \xca\x3b\x16\x45\x63\x62\x62\x82\xf6\xf6\xf6\xef\x06\x02\x81\x46\ \xd7\x75\xb9\xe3\x8e\x3b\x58\xb7\x6e\x1d\x5f\xfb\xda\xd7\x38\x70\ \xe0\x00\x9e\xe7\x91\xc9\x64\x30\x0c\x83\xd9\xd9\x59\xaa\xab\xab\ \x09\x85\x42\x0c\x0f\x0f\x53\x28\x14\x38\x52\x0d\xc1\x91\xd8\x5e\ \x7e\xf1\x8b\x5f\xf0\xf3\x9f\xff\xfc\x45\x5f\x53\x69\x27\x76\xed\ \xda\x45\x24\x12\x79\x49\xc6\xeb\xad\xbc\x02\x81\xc0\xda\x55\xab\ \x56\x19\xbf\xff\xfd\xef\x59\xb1\x62\x05\x7d\x7d\x7d\xac\x5d\xbb\ \x96\xef\x7f\xff\xfb\xf4\xf4\xf4\x30\x36\x36\x46\x57\x57\x17\x8f\ \x3c\xf2\x08\xd5\xd5\xd5\xb4\xb7\xb7\x73\xda\x69\xa7\x71\xdf\x7d\ \xf7\x1d\x31\x37\xf4\x47\x15\x5a\x6b\x6b\xeb\x70\x55\x55\xd5\x09\ \x95\x84\x5a\xa9\x54\x22\x12\x89\xf8\x95\x25\x91\x48\x84\x5c\x2e\ \x87\xe7\x79\xd4\xd5\xd5\xf9\xd2\xd2\xde\xde\x6e\xcf\xcd\xcd\xdd\ \xb3\x67\xcf\x9e\xab\x8f\x35\x40\x16\x2d\x5a\x34\x78\xea\xa9\xa7\ \x9e\x38\x31\x31\xc1\x92\x25\x4b\x58\xb3\x66\x0d\xbf\xfc\xe5\x2f\ \x29\x95\x4a\x04\x02\x01\xb2\xd9\x2c\xe1\x70\x98\x74\x3a\xed\xef\ \x9b\xe7\x79\xe4\x72\x39\x5c\xd7\x65\xe7\xce\x9d\x47\xc7\x65\x45\ \xa3\x51\xeb\x9b\xdf\xfc\x26\xa9\x54\x8a\x0f\x7c\xe0\x03\xdc\x7f\ \xff\xfd\xf4\xf6\xf6\xd2\xd0\xd0\x40\x55\x55\x15\xcf\x3d\xf7\x1c\ \x55\x55\x55\xf4\xf5\xf5\x31\x31\x31\x41\x57\x57\x17\x23\x23\x23\ \x0c\x0f\x0f\xe3\x38\x8e\x29\x84\x30\x8f\x41\x30\xfe\x2a\x10\x08\ \xd4\xcd\xcc\xcc\x20\x84\x60\x68\xdf\x10\x03\x03\x83\x18\xc6\xa1\ \x27\xdf\x1f\x86\x33\x1f\x77\x08\x21\x08\x85\x42\xfe\xff\x3f\x2a\ \x40\x74\x5d\xe7\x73\x9f\xfb\x1c\x5f\xfc\xe2\x17\xb9\xf5\xd6\x5b\ \xd9\xb1\x63\x87\x5f\x75\x91\xcf\xe7\xd1\x75\xdd\xaf\x46\x71\x1c\ \x87\xe1\xe1\x61\x3f\x8a\x9f\x77\x8d\xbd\x79\x49\x3b\x66\x5c\xe0\ \xb6\xb6\xb6\x7f\x5c\xba\x74\x69\x3d\xc0\x8e\x5d\xcf\xe3\x35\xa5\ \x89\x04\x4c\x64\x26\x80\xb4\x34\x3c\x4b\x43\xda\x1a\x42\x48\x5f\ \xff\x48\x29\xc9\xe7\xf3\x94\x4a\x25\x7f\x48\xc2\x2b\x8a\xd4\x6f\ \xbe\xf9\xe6\x17\xe3\x74\x7c\x5b\xa3\x7a\xb5\x43\xa1\x90\x7f\x32\ \x34\x4d\xbb\x72\xe9\xd2\xa5\x17\x0d\x0c\x0c\x34\x1e\x2b\x12\x62\ \x59\x96\xae\x5a\xbc\xc7\xab\xf3\xfc\xf9\x27\x1a\x70\x0f\xa3\xa7\ \x3c\x07\xb2\x5b\xaa\xc9\xef\x89\xa2\x6a\x7b\x67\x67\x67\xc9\x66\ \xb3\x94\x4a\xa5\xc4\x51\xb3\xbd\x63\x63\x63\xf7\x37\x35\x35\x71\ \xe9\xa5\x97\x72\xd3\x4d\x37\x71\xd6\x59\x67\xd1\xda\xda\x8a\x2a\ \xd5\x3f\xef\xbc\xf3\x68\x6f\x6f\x07\xca\xad\xd2\x4b\x96\x2c\x61\ \x72\x72\xd2\x77\x8b\xab\xab\xab\xe9\xe8\xe8\x38\x56\x24\x23\x02\ \x2c\xcc\xe7\xf3\x7a\x32\x99\x2c\x37\x28\x15\x2c\x32\x13\x25\xc4\ \xd0\x32\x3e\xdc\xf6\x45\x4e\x64\x0d\xda\x44\x3b\x6e\xca\x24\x53\ \x4a\x91\x9c\x2b\x33\xe0\xaa\xb7\xe4\xa5\xd4\xf8\xfe\x51\x09\xb1\ \x6d\xbb\xdf\xb2\x2c\xd6\xae\x5d\xcb\xb2\x65\xcb\x18\x1f\x1f\xa7\ \x54\x2a\x31\x37\x37\x47\x73\x73\x33\xe9\x74\x9a\xda\xda\x5a\x52\ \xa9\x14\x93\x93\x93\x54\x57\x57\xa3\xeb\x3a\xaa\x87\xc4\xb6\x6d\ \x4c\xd3\x94\x15\x4e\xc2\x5b\x56\x75\xe5\xf3\xf9\x8f\xfd\xe9\x9f\ \xfe\xe9\x97\x4d\xd3\x04\x29\xc9\xd8\x45\xde\xbd\x68\x39\xa9\x9f\ \x19\xcc\x15\x53\xfc\xc3\xc3\x5f\xc6\xd0\x0d\x34\x43\x20\x58\x80\ \xae\xc1\x82\x46\x9d\xa1\xa1\x21\x1a\x1b\x1b\x29\x16\x8b\x04\x83\ \x41\xe9\x79\x5e\xf8\x15\xd1\xef\x63\x63\x63\x6c\xd8\xb0\x01\xc3\ \x30\xfc\xfc\xb9\x5a\x83\x83\x83\xbe\xc1\x02\x78\xee\xb9\xe7\x30\ \x4d\x93\x4a\xe2\xcd\x75\xdd\xaa\x95\x2b\x57\xde\x35\x35\x35\x35\ \x18\x8f\xc7\xff\xe1\xad\x2a\x21\x9e\xe7\xd5\x29\x16\xbb\x20\x6d\ \xec\x35\x23\x2c\xe8\x89\xe1\xe2\x22\x6d\x70\x27\xa2\x58\x93\x01\ \x9c\xc9\x20\x56\xdc\xf0\xab\xde\x55\x43\x6c\x2a\x95\xa2\xb9\xb9\ \x59\x14\x8b\xc5\xab\xda\xda\xda\x18\x1b\x1b\x7b\xf9\x2a\x4b\xd3\ \x34\x4f\xa9\x9e\x48\x24\x42\x30\x18\xf4\xeb\xb0\x54\xd7\xd4\xe1\ \x35\x58\x6a\x7a\x82\x6a\x03\x03\x42\x3d\x3d\x3d\x57\x01\x7f\x72\ \x0c\xd8\x8f\x72\xff\xa1\x65\x51\x57\x13\xa2\x54\x70\x38\x77\xc1\ \x5f\xf3\xde\x25\x57\x10\x68\xb5\xa8\x7f\x9b\x43\xd5\x79\x09\x4a\ \x79\xfb\xe0\x4c\xc8\xf9\x7a\x2c\x55\xa0\x2e\x84\x08\xbe\x18\x18\ \x47\x94\x90\xaa\xaa\xaa\x7b\xc7\xc6\xc6\xd6\x7f\xf6\xb3\x9f\xfd\ \xf3\x9a\x9a\x1a\x2e\xbd\xf4\x52\x6e\xbb\xed\x36\x92\xc9\x24\x2b\ \x57\xae\xc4\xf3\x3c\x7e\xf9\xcb\x5f\xb2\x72\xe5\x4a\x76\xec\xd8\ \x01\x40\x30\x18\xa4\x58\x2c\x92\xcd\x66\xfd\xc1\x01\xf3\xae\x9e\ \xfb\x56\x54\x5d\xa1\x50\xe8\x2f\xd6\xaf\x5f\x7f\xff\x7c\x25\x8d\ \x74\x5d\x29\xc2\x55\x3a\xde\x2f\x1a\xc8\x08\xc9\x03\xda\x6f\x40\ \x80\xa6\x75\xfa\xef\xa9\xae\xd7\xd8\xbc\x79\x33\xcb\x96\x2d\xf3\ \x5b\xe1\x94\x2a\x3f\x52\xd0\xfc\x47\x01\x99\x9a\x9a\x92\x8b\x16\ \x2d\xb2\x1e\x78\xe0\x01\x3e\xfe\xf1\x8f\x73\xf3\xcd\x37\xd3\xd7\ \xd7\x87\xa6\x69\xc4\xe3\x71\x3f\x25\xb9\x65\xcb\x16\x0a\x85\x02\ \xc9\x64\x92\xe6\xe6\x66\x9f\x7c\x54\xee\xaf\x6d\xdb\x84\xc3\xe1\ \x33\x2e\xbc\xf0\xc2\x67\x06\x06\x06\xfe\x7b\x70\x70\xf0\xd6\xb7\ \x90\xaa\x0a\x29\x9b\x68\x08\x5d\x0c\x9d\xb0\x8b\x77\x9c\x5f\x85\ \xeb\xb9\xd8\x29\x0d\xd2\x11\xdc\xb4\x81\x9b\x34\x29\x0e\x86\x91\ \xae\x00\xb7\xac\xde\x2b\xa7\xd7\x05\x02\x01\x12\x89\xc4\xf3\x86\ \x61\xec\x7b\x45\x6e\xaf\x94\x52\x73\x5d\x97\x2f\x7d\xe9\x4b\x7e\ \xbd\x95\xf2\x16\xa4\x3c\xb4\x5d\x4b\xd3\x34\xa6\xa7\xa7\x7d\xf1\ \x54\xdd\x46\xf3\x11\x6c\x4d\x7d\x7d\xfd\x3b\x6b\x6b\x6b\xf7\xbe\ \x45\x48\xc4\xda\xfa\xfa\xfa\x25\x89\x44\x62\xd1\x7c\xd2\x0d\x5d\ \x6a\xe8\x96\x20\x35\x24\xa9\xd3\x4e\xa4\xb5\xae\x9a\x01\x6f\x3b\ \xa2\x4a\x43\x54\x0b\x72\x2f\x54\xe3\x15\x35\x7f\x22\xc5\xc1\xd9\ \x92\x52\xb5\x32\x7c\x73\x6a\x6a\xea\x99\x57\x04\xc8\xec\xec\xec\ \x57\xb3\xd9\x6c\xe7\x35\xd7\x5c\xf3\xae\x42\xa1\xc0\xbb\xde\xf5\ \x2e\x1e\x78\xe0\x01\x3c\xcf\x63\xc1\x82\x05\x8c\x8f\x8f\x13\x0e\ \x87\x89\xc5\x62\x3c\xf3\xcc\x33\xb4\xb7\xb7\xd3\xd2\xd2\x42\xb1\ \x58\xf4\x49\xb6\xca\x51\x15\x2f\xb7\x4d\xf8\x8d\x5a\xc5\x62\xf1\ \xe3\xa7\x9f\x7e\xfa\x3f\x28\x43\x5e\x92\x16\xc1\x06\x87\xa6\xd9\ \xb7\x23\x9e\x13\xe4\x80\x1c\x0e\x01\x4e\xf5\xdf\xd3\xde\x64\xb0\ \x7b\xf7\x6e\xbf\x15\x43\x55\xe2\xa8\x34\x05\xe5\x39\x8d\x47\xaf\ \xb2\x0c\xc3\x20\x9d\x4e\x6f\x5e\xb8\x70\xe1\xd0\xbe\x7d\xfb\xde\ \xf5\xef\xff\xfe\xef\xf4\xf7\xf7\xb3\x74\xe9\x52\x0c\xc3\xf0\xdb\ \xa3\x0d\xc3\x20\x1a\x8d\x72\xca\x29\xa7\x30\x37\x37\x47\x43\x43\ \xc3\x21\x05\x65\xaa\x49\x74\x9e\x07\xfb\xe0\x25\x97\x5c\x72\xfe\ \xcc\xcc\x8c\xd8\xbe\x7d\x7b\x77\x3a\x9d\x4e\xbc\x59\x40\xa8\xb4\ \x6d\x9e\xe7\x99\xf9\x7c\x1e\x21\x04\x79\xb7\x04\xe7\x1e\x60\xf1\ \xb2\x30\xd2\x03\x69\xcf\x47\xe4\x96\x86\x3d\x6d\x92\x7a\xbc\x0e\ \x29\x5c\xbf\xa1\x47\x1d\xc0\x64\x32\x49\x30\x18\x44\xd3\x34\x19\ \x08\x04\x84\x65\x59\xe6\x2b\x02\xa4\x22\x12\x17\x7d\x7d\x7d\xac\ \x5b\xb7\xce\x37\x50\x87\x97\x8d\x2a\xf5\x25\x84\xe0\xd7\xbf\xfe\ \xf5\xc1\x21\x65\x9a\x46\xb1\x58\xf4\x01\x11\x42\x84\x0d\xc3\x08\ \xd7\xd6\xd6\x62\x59\xd6\x9b\x8a\x16\x8e\xc7\xe3\x9c\x72\xca\x29\ \xff\xa7\xb9\xb9\xb9\xb3\x54\x2a\x75\x64\xd2\x69\xf0\x34\x1c\xcf\ \xc3\x78\xb2\x96\xa1\xcd\x82\xf9\x56\xe7\x0a\x5e\xd6\x25\x3b\x33\ \x4d\x75\x4d\x95\xdf\x61\xe6\xcf\x1b\xb6\x6d\x42\xa1\x10\xba\xae\ \x8b\x4d\x9b\x36\x9d\x58\x5f\x5f\x3f\xf1\x8a\x00\x51\xab\x54\x2a\ \x4d\x99\xa6\x39\xaa\xeb\x7a\x7b\x53\x53\x13\x86\x61\xf8\xdc\x8c\ \x9a\x5f\x15\x0a\x85\x7c\x23\xaf\x8a\xe9\xd4\x00\x80\xd9\xd9\x59\ \x7f\xca\x8e\x9a\xdb\xeb\x38\x0e\x5d\x5d\x5d\xd7\x04\x02\x81\xec\ \xc4\xc4\xc4\xf3\x53\x53\x53\x4f\xbe\xd1\x52\x31\xef\x59\x5e\xb0\ \x60\xc1\x82\x7a\x80\x84\x9d\xa6\x7a\xcd\x2c\xf5\xd5\x21\x9c\xc9\ \x30\xce\x64\x08\x59\xd2\xf1\x4a\xe5\xb9\xbe\x78\xe5\xc3\x18\x6d\ \x29\x77\x07\x54\x4e\x5d\x55\xd9\x53\x55\x74\x2e\xa5\xdc\x37\x33\ \x33\x73\xc4\xfb\x79\x49\x95\x85\xf9\x7c\xfe\xbf\xc7\xc7\xc7\x7f\ \xdc\xd4\xd4\xf4\x3f\xef\xbe\xfb\x6e\x56\xad\x5a\xe5\xab\xa3\x0f\ \x7d\xe8\x43\x4c\x4e\x4e\xb2\x7c\xf9\x72\xba\xba\xba\x98\x99\x99\ \x61\xed\xda\xb5\xac\x5e\xbd\xda\x1f\x4a\xa6\x5a\xdb\x22\x91\x88\ \x3f\x24\xcc\xf3\x3c\x5a\x5b\x5b\xcf\xef\xea\xea\x7a\xdf\xee\xdd\ \xbb\xf3\xc5\x62\xf1\x0d\xc9\x2e\x66\xb3\x59\x5a\x5b\x5b\x3b\xab\ \xaa\xaa\xde\x56\x5d\x5d\xdd\x68\x9a\xe6\x47\xa5\x94\xc1\x42\xa1\ \xc0\xae\xe4\x10\x4b\x4f\x35\x28\x16\x2c\x1c\x23\x87\x57\x9b\xc2\ \x6b\x48\x22\x9b\x67\x29\x58\x79\x72\xe3\xf8\x55\xed\x2a\x05\x91\ \x4e\xa7\x7d\xb2\x55\x0d\xda\x89\xc5\x62\x0c\x0f\x0f\xbf\x24\xcf\ \xf2\x65\x15\x50\x85\x42\x21\xae\xbd\xf6\x5a\x6a\x6a\x6a\x18\x1f\ \x1f\x47\x4a\xc9\xee\xdd\xbb\xf1\x3c\x8f\x7d\xfb\xf6\xf9\x0d\x29\ \x3f\xfd\xe9\x4f\x7d\x35\xa6\x69\x9a\x6f\x6f\x94\x28\x2b\x5e\xa7\ \x62\x60\x66\x8d\xa6\x69\x4b\x01\xb1\x70\xe1\xc2\xf8\xe8\xe8\x68\ \xe6\xf5\x04\x25\x14\x0a\xdd\xb2\x6a\xd5\xaa\xbf\x2a\x47\xca\x1a\ \x33\xcc\xb1\xa0\x5d\x67\xdd\x64\x0f\xf6\x6f\xcc\x72\x4b\x9a\x06\ \x68\x07\x35\x6c\x58\xc0\xc4\xec\x10\x4d\x4d\x4d\xfe\x58\xc0\xca\ \x31\xb8\xaa\xa0\x21\x9f\xcf\x3f\x3e\x3d\x3d\x7d\xdb\x4b\xbd\x97\ \x97\x05\x88\xda\xd4\x44\x22\x21\x3d\xcf\x13\xf3\x5c\x15\xba\xae\ \x53\x2c\x16\x0f\xe9\x51\x57\x34\x8b\x4a\x68\x25\x93\x49\x66\x66\ \x66\xa8\xa9\xa9\xc1\xb2\x2c\x4c\xd3\x54\x80\xc8\xce\xce\xce\x8f\ \x2c\x59\xb2\xe4\x23\xba\xae\xf3\xab\x5f\xfd\xea\x2a\xe0\xee\xd7\ \x41\x55\xb5\xa5\xd3\xe9\xf3\x3c\xcf\x2b\xe5\x72\xb9\xe5\xaa\x63\ \x38\x65\xe7\x09\xaf\x4c\xa1\x05\x83\xd0\x25\x91\x96\xc0\x4d\x99\ \x38\x49\x03\x37\x69\x10\xf6\x6a\xa9\xae\xa9\x46\x7a\xd2\xb7\x8b\ \xba\xae\xfb\x83\xdc\x94\x33\x54\x31\x28\xe1\xc0\xe8\xe8\xe8\x6f\ \x5f\x0b\x40\xe2\x5b\xb7\x6e\x0d\x06\x83\xc1\x5b\x3e\xf1\x89\x4f\ \xdc\x78\xf6\xd9\x67\x73\xfe\xf9\xe7\xf3\xed\x6f\x7f\x9b\xed\xbb\ \x25\x5f\xa5\x00\x00\x09\x83\x49\x44\x41\x54\xdb\xb7\xf3\x8e\x77\ \xbc\x83\x74\x3a\xcd\xe0\xe0\x20\x35\x35\x35\x3e\xaf\xb5\x7a\xf5\ \x6a\x9e\x7b\xee\x39\x1f\xac\xc3\x67\xf8\x5a\x96\x25\x94\x73\x30\ \xdf\x22\xd7\xd1\xdd\xdd\x7d\x86\x94\x92\x99\x99\x99\x3d\x13\x13\ \x13\xaf\x49\x23\x7b\xa1\x50\xf8\xcb\xcb\x2e\xbb\xec\x9f\x55\xbb\ \x72\x51\x2b\x12\xad\x13\x60\xe9\x78\x25\x0d\x99\x2e\xdb\x88\xb2\ \x62\x97\xc8\x06\x30\x9a\x0d\xb6\xef\xd8\x46\xc8\x3a\x98\x62\x50\ \x87\x2b\x99\x4c\x22\x84\xf0\x0f\x9c\x65\x59\x04\x83\x41\x6c\xdb\ \x7e\x59\x73\x46\x5e\x0e\x20\x92\xf2\xcf\x4d\x38\xdb\xb7\x6f\x47\ \x4a\xc9\x8f\x7f\xfc\x63\xa6\xa7\xa7\xf1\x3c\x8f\x07\x1e\x78\xc0\ \x4f\x5e\x55\x8e\xca\xdb\xb4\x69\x93\x5f\xfe\xa2\x4e\x4e\xa1\x50\ \x38\xc4\x45\xac\x9c\xd5\x78\xea\xa9\xa7\xde\xd6\xd1\xd1\x71\x5b\ \x24\x12\xe1\xe1\x87\x1f\x5e\x05\x6c\x7d\x15\xa5\xe2\x03\xc0\x69\ \xe5\xbd\x74\xdf\xbd\x73\xe7\xce\xf2\xc8\x0c\xcf\x41\x9c\x90\xa6\ \xa6\x74\xa8\x57\x6a\x27\x75\xec\xf1\x20\x26\x21\x9a\x9b\x9b\x39\ \xfc\xc7\x04\x0e\x3f\x5c\xca\x33\x8d\xc5\x62\x64\xb3\x59\x06\x07\ \x07\xfb\x75\x5d\x1f\x78\xad\x00\xf1\x1d\x81\x50\x28\xc4\xb6\x6d\ \xdb\xfc\x69\xa4\xaa\x5d\x41\x75\x54\x55\x26\xf2\x95\x64\xa8\xea\ \x8b\x5c\x2e\x47\xb1\x58\xf4\xd9\xe3\x4a\xcf\x4b\x4d\x11\x4d\xa7\ \xd3\x78\x9e\x47\x47\x47\xc7\x7f\x9e\x74\xd2\x49\x45\xd7\x75\xf5\ \xde\xde\xde\x3b\xe2\xf1\xf8\xd7\x5e\xce\x8d\x1e\x36\xce\x96\x6c\ \x36\x7b\xcd\x65\x97\x5d\x76\x61\x36\x9b\x45\x08\x41\xa2\x76\x5c\ \x76\x2e\x33\x85\x15\x0f\xe3\xcc\x04\x91\x19\xd3\xf7\x68\xa5\xe7\ \x21\x35\x49\x78\x69\x98\x8d\x9b\x36\x52\x5b\x5b\xeb\x03\x52\x39\ \xe4\x53\x4d\xe9\x56\x71\x57\x30\x78\x70\x5c\xfa\xf4\xf4\xf4\xb2\ \x97\xcb\xdd\xbd\x6c\x40\x74\x5d\xbf\xfb\xc9\x27\x9f\x7c\x4a\xd7\ \xf5\x2b\x2f\xba\xe8\xa2\xcb\xd6\xae\x5d\x4b\x5b\x5b\x1b\x9b\x36\ \x6d\x22\x9d\x4e\x93\x4c\x26\x99\x9b\x9b\x43\xd7\x75\x4e\x38\xe1\ \x04\x86\x87\x87\x99\x98\x98\xe0\xf4\xd3\x4f\xe7\x85\x17\x5e\x38\ \x04\x34\xdb\xb6\xfd\x21\x36\xa5\x52\x89\x60\x30\xe8\x7f\x61\xdb\ \xb6\xa9\xab\xab\xeb\x54\x3f\xfe\xb2\x6b\xd7\xae\x75\xe1\x70\x78\ \x06\xd0\x82\xc1\x60\x21\x99\x4c\x3e\x70\xa4\x7b\x9d\x9c\x9c\xe4\ \xe4\x93\x4f\x7e\x7c\xd1\xa2\x45\x6b\x95\x5d\xdb\x37\xb6\x57\x06\ \x82\x9a\x90\x05\x03\x7d\x26\x22\x0e\xf4\x83\xd0\x6c\x84\x66\xe3\ \x7a\xae\x1f\x3f\x00\xd4\xd4\xd4\xa0\xe9\x07\x8b\x3b\x2a\x01\x51\ \x01\xaf\x2a\x5c\x38\xf1\xc4\x13\x89\xc7\xe3\x94\x4a\x25\xaa\xaa\ \xaa\x0e\x99\x52\xf1\x72\x88\xd4\x97\x0d\xc8\xdc\xdc\xdc\x20\x30\ \x58\x53\x53\x73\xd6\xce\x9d\x3b\x59\xbe\x7c\x39\x03\x03\x03\xfe\ \x54\x4f\x25\xca\xae\xeb\x32\x36\x36\xe6\x73\x5d\x3b\x76\xec\xf0\ \xdb\xe0\x54\x10\x39\x37\x37\xc7\xe1\xe3\x65\x2b\xb8\x2f\x7f\x13\ \x00\xd9\xdd\xdd\x7d\xc9\x8a\x15\x2b\x2e\x01\xd8\xbf\x7f\x7f\x7e\ \x74\x74\xb4\x65\x5e\x45\xe8\x53\x53\x53\x4f\xba\xae\x1b\x9f\xe7\ \x8d\x16\xb5\xb5\xb5\x6d\xac\x2c\xd9\xac\xdc\x10\xe9\x49\xa1\xa4\ \x40\x49\x29\xc0\xf4\xf4\x34\x3d\x3d\x3d\x7e\x2c\x31\x3b\x3b\x5b\ \xe6\xaf\xe6\x27\x53\x54\x8e\x16\x51\x80\x54\xd2\x22\x4b\x96\x2c\ \x61\x7a\x7a\x9a\x52\xa9\x34\x37\x35\x35\x35\x52\x2c\x16\x9d\xa3\ \x51\xab\xaf\xa8\x6f\xa0\xad\xad\x8d\x8d\x1b\x37\x02\xfc\xc1\x59\ \x1e\x55\x55\x55\x87\xe7\x57\x08\x85\x42\xb8\xae\xcb\xd4\xd4\x94\ \x1f\xd9\x2b\x5d\xac\x86\x84\x29\x09\x51\x7f\x03\x22\x97\xcb\x31\ \x31\x31\xa1\xf4\x74\x64\xc5\x8a\x15\x5f\x57\xc4\xdd\xd6\xad\x5b\ \xa9\xae\xae\xf6\x83\xd0\xe9\xe9\xe9\x3f\x58\xb2\xe9\x38\x0e\x17\ \x5e\x78\xa1\xef\x11\x8d\x8f\x8f\xd3\xd8\xd8\xe8\xdf\xbf\x72\x5d\ \x95\x3a\x52\x3f\xb1\xa1\xa6\xe2\x29\x57\x5d\x55\x8e\xa8\x61\x97\ \xba\xae\x33\x32\x32\xa2\x00\x7a\x78\xf7\xee\xdd\x97\x1f\xed\x9e\ \x1e\x35\x20\x9e\xe7\x7d\xed\xd9\x67\x9f\xfd\xb1\x65\x59\x2b\x7b\ \x7a\x7a\xee\xbd\xf5\xd6\x5b\x69\x6b\x6b\xe3\x67\x3f\xfb\x19\x3b\ \x76\xec\x40\x08\x41\x36\x9b\x65\xd9\xb2\x65\xf4\xf6\xf6\xfa\xcd\ \x3d\x8d\x8d\x8d\xec\xdb\xb7\xcf\xd7\xbb\x8a\xda\x3e\x3c\xd2\x55\ \x29\x60\xe5\x4e\xab\x0d\x52\x41\xa6\xda\x14\x29\x25\xad\xad\xad\ \xb4\xb5\xb5\x21\x84\x60\x72\x72\x92\xd6\xd6\x56\x3f\x0e\xd8\xbb\ \x77\xaf\x9f\xd7\xdf\xb5\x6b\x97\xcf\xbf\xa9\x93\x7f\xb8\x81\x56\ \xb4\x90\xf2\x9e\x0e\xf7\x0c\xd5\xf5\x01\x9f\x48\x1d\x1c\x1c\x64\ \x6e\x6e\x8e\xaa\xaa\x2a\x2a\x87\x76\xbe\xae\x80\x64\x32\x99\x29\ \x60\x4a\xd7\xf5\x2a\x4d\xd3\xf8\xdc\xe7\x3e\x47\x43\x43\x03\x89\ \x44\xc2\xff\x52\x52\x4a\x26\x26\x26\x0e\xa1\xeb\x15\x58\xb1\x58\ \x8c\xee\xee\x6e\xe2\xf1\xb8\xaf\x12\x2a\x87\x6b\xaa\x7f\x4a\x8a\ \x94\xe1\xaf\xcc\xb1\x54\x66\xf2\x14\x11\xa8\x0c\xad\x72\x34\x14\ \xeb\xac\xdc\x54\xc5\x38\x2b\xf0\xd5\xe7\xa8\x83\xa0\x3c\xc2\xca\ \xc2\x84\xf9\xa1\x39\xfe\xf7\x50\x0e\xcc\xb2\x65\xcb\xe8\xeb\xeb\ \xc3\x30\x0c\xe2\xf1\xf8\x1d\x42\x08\xaf\x50\x28\x3c\xf3\x86\x00\ \x52\xa1\x86\x9c\x52\xa9\x54\x0c\x87\xc3\xc5\x64\x32\x19\x8d\x46\ \xa3\x66\x30\x18\x44\xd7\x75\x7f\x34\xac\x3a\x65\xca\xb0\xaa\x4d\ \x53\xd5\x8f\x2a\x9a\xd7\x75\xdd\x4f\xff\x56\x66\xd6\x54\x4f\xb8\ \x92\x10\x21\x84\x2f\x21\x95\x3a\x5e\x01\xa7\x1c\x05\xe5\xc1\xa9\ \x4d\x57\xaa\x47\x01\xa2\xc6\xc1\x56\x3e\xa7\x0e\x40\x25\x20\x95\ \x3f\xb7\x51\x55\x55\xe5\x17\x5c\xff\xf6\xb7\xbf\x25\x12\x89\x10\ \x89\x44\xd8\xb7\x6f\x9f\x3f\x33\xb2\xa9\xa9\x89\xa9\xa9\xa9\x37\ \x06\x10\xdb\xb6\x9f\xdb\xbe\x7d\x7b\x18\xa0\xbe\xbe\xfe\x37\xdd\ \xdd\xdd\xe7\x7d\xec\x63\x1f\xe3\xc9\x27\x9f\x64\x60\x60\xc0\x4f\ \x61\x2a\x43\xaf\x36\x44\xd7\x75\xb2\xd9\xac\xcf\xf7\xd4\xd4\xd4\ \xf8\x06\x5f\xc5\x33\x2a\xda\xad\x54\x1b\x2a\xd9\xa3\x00\x3b\x7c\ \xde\x7c\xa5\x24\x05\x02\x01\x7f\x63\xd5\xa6\x2b\xe6\xf9\x70\x8f\ \x49\x5d\x4f\x79\x81\x4a\x22\x54\x1b\x9f\xca\x8b\x74\x76\x76\xb2\ \x7c\xf9\x72\x1e\x7b\xec\x31\x3c\xcf\xa3\xa5\xa5\xe5\xff\xe9\x1b\ \x3c\x5a\x30\x5e\x15\x40\x0e\xcb\x2e\x8a\xba\xba\x3a\xbe\xfe\xf5\ \xaf\x2b\xf1\x9e\xaf\xda\x2f\x9f\x3a\xd3\x34\xfd\xaa\x14\xb5\x02\ \x81\x00\x96\x65\x11\x8d\x46\xfd\xd3\xaf\x3c\x17\x55\x90\x66\xcc\ \xff\x20\x8b\xda\x74\xb5\xb9\xea\xfd\x95\x9b\x5e\x19\x6c\x2a\x37\ \xfa\x70\x3b\xa1\x24\x44\x49\x9d\x7a\x4e\xc5\x27\x6a\xf3\x95\x9d\ \x33\x0c\x83\x70\x38\x8c\xe3\x38\xc4\xe3\x71\x9f\x3c\xcc\x66\xb3\ \x0f\x0d\x0c\x0c\xfc\x4f\xf3\xf0\x2f\xf5\x46\xaa\xac\xc3\xd4\xd7\ \x1d\xbf\xf9\xcd\x6f\x1e\x14\x42\xc8\x40\x20\xf0\xc5\xf6\xf6\xf6\ \xea\x8b\x2f\xbe\x98\x1d\x3b\x76\xf8\x11\xbd\x3a\x89\xea\x34\x3a\ \x8e\x43\x6d\x6d\xad\x5f\xf7\x1a\x0a\x85\x58\xba\x74\x29\xd3\xd3\ \xd3\x87\x8c\x99\x2d\x16\x8b\xbe\xc4\xd4\xd6\xd6\x1e\x12\x78\x56\ \x06\x6b\x95\x12\x52\x59\xf5\xa1\x40\x54\xaf\x53\x00\xab\xc1\x6b\ \xa6\x69\xfa\x41\x9e\x72\xcf\x55\xb0\x17\x0e\x87\x59\xbd\x7a\x35\ \xdb\xb6\x6d\xf3\x55\x5b\x5d\x5d\x1d\x85\x42\x21\x93\xcb\xe5\x5e\ \xd5\x5f\x00\x7d\x55\x01\x99\x99\x99\xf9\x69\x45\x94\xfc\xbf\x63\ \xb1\x58\xf5\x43\x0f\x3d\xe4\x7b\x2b\x95\xbf\xb0\x73\x98\xc7\x46\ \x2a\x95\xa2\xaa\xaa\x8a\x33\xcf\x3c\x93\xfd\xfb\xf7\xfb\x9b\x52\ \x39\xa5\x4e\x01\xe2\xba\x2e\xa9\x54\x0a\x28\xf7\xb0\x28\x6f\x4c\ \x6d\xb4\x02\xa4\x72\x22\xb5\x02\x24\x9b\xcd\x1e\x32\x1d\x55\x1d\ \x8c\xea\xea\xea\x43\xae\x57\x5d\x5d\x4d\x43\x43\x03\x73\x73\x73\ \xa4\xd3\x69\xa2\xd1\x28\xae\xeb\x92\xcb\xe5\x0e\xec\xdd\xbb\xf7\ \x59\x21\x84\x0c\x06\x83\xbf\x79\xb5\x39\xb6\xd7\xac\x7f\xd9\x75\ \xdd\xe1\xfe\xfe\xfe\x1c\xe0\x09\x21\x4e\xd0\x75\xdd\xac\xae\xae\ \xf6\x0d\x7d\xc5\x80\x9a\x43\x0c\x78\x22\x91\xa0\xbe\xbe\x1e\xdb\ \xb6\x89\xc5\x62\x2c\x5d\xba\x94\xdd\xbb\x77\xfb\xaa\x43\xa9\x1b\ \x15\x67\x08\x21\xfc\x71\xe0\x6a\x38\x65\x65\x85\x79\x3e\x9f\xf7\ \xd5\x92\x4a\x03\x54\xb2\xd1\x4a\xdb\x68\x9a\x46\x4d\x4d\x8d\xff\ \x39\xea\xf5\x81\x40\x00\xd7\x75\x79\xea\xa9\xa7\x30\x0c\x83\x50\ \x28\xf4\x44\x2a\x95\xba\xfc\xb5\xda\xb7\xd7\x0c\x90\x44\x22\xe1\ \xcf\xea\xee\xec\xec\x1c\xe8\xec\xec\x5c\xf2\x12\xed\x90\x4f\x3f\ \x78\x9e\xc7\xc2\x85\x0b\x19\x1c\x1c\x24\x12\x89\xf8\x53\xa6\xfd\ \xde\xbe\x0a\x1a\x46\xd9\x1d\x65\xaf\x14\x58\x87\x4f\xd6\x56\x91\ \xb9\xa6\x69\xbe\x87\xa7\x24\xa8\xb3\xb3\x13\xc3\x30\x18\x1c\x1c\ \xf4\x27\x1f\xcd\x57\xce\xa4\x67\x67\x67\x9f\x13\x42\x78\x96\x65\ \x6d\x7e\x2d\xd3\x02\xaf\x4b\x87\x7f\x2e\x97\xfb\xfe\xf8\xf8\xf8\ \x02\xca\x6d\x6e\xef\x0b\x87\xc3\xcb\x8e\xd4\xaf\x3d\x33\x33\x43\ \x20\x10\xe0\x99\x67\x9e\xf1\x37\xf0\xec\xb3\xcf\x66\xe3\xc6\x8d\ \x68\x9a\xe6\xf7\xa8\x24\x12\x09\xbf\x92\x52\xd9\x0a\xd3\x34\x0f\ \x99\xbc\x1d\x0c\x06\x7d\x4f\xaf\xb5\xb5\x95\xd9\xd9\xd9\x72\xea\ \x35\x1a\x65\xe9\xd2\xa5\x0c\x0f\x0f\x93\xcb\xe5\xd0\x34\x4d\xfd\ \x57\x0a\x21\x84\xe3\x38\xaa\x23\x6c\xdf\xd0\xd0\xd0\xf9\x2f\x96\ \xf6\x7d\x4b\x01\x32\x3f\x90\xfe\x0b\x2a\x9f\x7c\xc2\x09\x27\xb4\ \x2e\x58\xb0\x60\x59\x45\xe4\x2b\xc5\x1f\xe0\x39\x2a\xd5\x98\x8a\ \x69\x2a\xf3\xf8\xd1\x68\xd4\x1f\x31\x58\x5f\x5f\xcf\xf2\xe5\xcb\ \xd9\xb3\x67\x0f\x75\x75\x75\xe4\x72\x39\x82\xc1\x20\xb9\x5c\x8e\ \x13\x4f\x3c\x11\x21\x04\xa9\x54\x8a\x44\x22\x41\x47\x47\x07\xef\ \x7c\xe7\x3b\xf9\xf5\xaf\x7f\x4d\xa1\x50\xa0\xa1\xa1\x81\xde\xde\ \x5e\x34\x4d\x63\xff\xfe\xfd\x4a\x8d\x89\xc1\xc1\xc1\x6f\x39\x8e\ \xb3\x0f\x70\x23\x91\xc8\xc0\xe1\xc5\x10\xaf\xd5\x7a\xdd\x67\xae\ \x6b\x9a\xb6\x40\xd3\xb4\xc8\xfc\xe3\x0f\x76\x77\x77\x7f\xe5\x48\ \xf3\x3f\x94\x3e\x57\x76\x27\x10\x08\xf8\x86\xd9\xb2\xca\x3f\xb3\ \x7a\xd5\x55\x57\x71\xdf\x7d\xf7\x11\x0e\x87\xa9\xad\xad\x65\x7a\ \x7a\xda\x9f\x3e\xb1\x61\xc3\x06\x7e\xfe\xf3\x9f\x33\x37\x37\x47\ \x57\x57\x17\xdd\xdd\xdd\x3c\xfe\xf8\xe3\xaa\x3a\xdf\x57\x6d\xea\ \xf7\x15\x5d\xd7\x25\x93\xc9\x9c\x1b\x8f\xc7\x1f\x7f\xbd\xf7\xe7\ \x0d\x1d\x82\x1f\x0e\x87\x4f\x6b\x6c\x6c\xbc\x4c\xd7\x75\x07\x20\ \x1a\x8d\x7e\x2a\x18\x0c\x1e\x71\xae\xaf\x9a\x60\xa7\xd4\xd3\xd8\ \xd8\x18\xd5\xd5\xd5\x38\x8e\xe3\xe7\x24\x14\xf1\x37\x31\x31\x41\ \x5d\x5d\x9d\x3f\x73\x38\x16\x8b\xf9\x81\x61\xa1\x50\xf0\x6d\xca\ \xfc\xe8\xf3\x43\x66\xd1\xbf\x11\xe3\x6c\xdf\xd0\x29\x31\x85\x42\ \x61\xc7\xc8\xc8\xc8\x8e\x0a\xdd\xec\x45\xa3\xd1\x2a\x29\xa5\xb4\ \x6d\xbb\xcb\x30\x8c\x3f\x3b\x52\xa3\xbd\xb2\x05\xca\x63\x2a\x16\ \x8b\x7e\x90\xa9\x62\x09\xf5\x6b\x9c\xd9\x6c\x16\xcf\xf3\x76\x4b\ \x29\x75\xd7\x75\xdd\x64\x32\xf9\xf7\xe3\xe3\xe3\x3f\x79\xb1\xcf\ \x7e\x23\xc6\xd9\xbe\xa1\x12\x72\x24\xed\x06\xf8\x9c\x7e\x2c\x16\ \xbb\x5a\xd3\xb4\xd8\x8b\x81\xa2\x96\x69\x9a\x3e\x95\x21\x84\x28\ \x00\x7b\x8b\xc5\x62\x56\x4a\x29\x63\xb1\x58\x66\x76\x76\x76\xfb\ \x61\x69\xdd\x63\x79\x04\xc8\xf1\x75\x7c\x1d\x5f\xc7\xd7\xf1\x75\ \x7c\x1d\x5f\xc7\xd7\xf1\x05\xc0\xff\x05\xf4\xe6\xb0\x9e\xc6\x6e\ \xd0\xb8\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x03\x7c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x64\x00\x00\x00\x64\x08\x06\x00\x00\x00\x70\xe2\x95\x54\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\ \x95\x2b\x0e\x1b\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x03\x03\ \x0e\x1c\x0e\xa7\xa1\x6f\x29\x00\x00\x02\xfc\x49\x44\x41\x54\x78\ \xda\xed\xd6\xbf\x6f\x1c\x45\x18\xc6\xf1\xef\xcc\xed\xda\xb1\x0f\ \x9b\x93\x85\x90\x2d\xb0\x38\x12\x09\x77\x6e\xac\x14\x6e\x10\xe0\ \x8b\x90\x4b\x37\x14\xc8\x7f\x03\xfc\x01\x54\x27\x51\x42\x81\x28\ \xdd\xd0\x90\x36\x6d\x30\x8e\x70\x2a\x44\x44\x94\x20\x17\xc8\x0e\ \x06\x64\x90\xec\xe4\x02\xde\xf3\xde\x9e\xf7\xd7\xec\x50\x1c\x39\ \x89\x32\x52\xae\x58\xf1\x7c\xa4\xed\x76\xa4\x9d\x7d\xe7\x79\xdf\ \x01\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\ \x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\ \x11\x79\x31\x4c\x9d\x3e\x76\x71\x71\xf1\x13\x63\x4c\xf8\x9c\xcb\ \xa6\x80\xcf\x4e\x4f\x4f\xff\x56\x41\x5e\xb0\xf5\xf5\x75\xdf\x6e\ \xb7\xf1\xde\x53\x51\x51\xbe\xf9\x94\x97\xae\x4c\x53\x3e\x99\xc6\ \x9d\xcd\x8c\x5e\xb2\x60\xac\x1f\xef\x2c\x8e\x63\xf6\xf6\xf6\x56\ \xb2\x2c\x3b\xaa\xc3\x1e\x83\xba\x45\x3a\x4d\x53\x0c\x70\x3f\xff\ \x85\xce\xf5\x19\x1a\xe1\x05\x99\xbb\xa4\x19\x5e\x81\x24\xa0\x3c\ \x9f\x22\xfb\x75\x86\xe1\xe1\x2c\x00\x65\x59\x62\x8c\xf1\x75\xd9\ \x9f\xad\x53\x31\xaa\xaa\x22\xcf\x73\xf2\xbc\xc0\x53\x61\x8d\xe1\ \xaa\x79\x9f\xcf\x3b\x77\x78\xe7\xf5\x0f\x98\xe7\x1a\x8b\x57\x5b\ \xd8\x57\x32\x8a\xa2\xa0\x28\x0a\x9c\x73\xb5\x3a\x70\xb5\x4a\x88\ \x73\x8e\x3c\xcf\xc1\x8f\x26\xc3\x60\x90\xf2\xe1\x7b\x1f\xf3\xd1\ \xad\x1b\x7c\xbd\xfd\x90\x77\x5f\x3b\xe3\x24\x7d\xc0\x17\xf7\x3f\ \x25\xcf\x73\xbc\xf7\xcf\x12\xa2\x82\x4c\x82\xf7\x9e\x2c\xcb\x30\ \x18\x98\x82\xe1\xc0\x31\xd7\x6c\x92\x57\x29\x00\x87\x7f\x1e\xf2\ \x63\x72\x0b\xe3\x2d\x59\x96\x8d\x53\xa5\x82\x4c\xb8\x65\x19\x00\ \x0f\x73\xf3\x53\x0c\x86\x43\xa6\x1b\xa3\x79\x51\xe1\x29\x5d\x81\ \xf7\x8c\x92\xf4\xec\xe6\x52\xa3\x82\xd8\x3a\x26\x24\xcb\x72\x2a\ \x3c\x2f\xcf\x37\xb9\xfd\xf3\x4d\xba\x37\x6e\xf2\xe0\xf4\x2e\xf7\ \xfe\xf8\x96\xb7\xdf\xd8\xa2\x28\xf3\x7f\xdf\xcb\xd4\xb2\x26\xa9\ \x28\x0a\xe2\x38\xc6\x1a\x4b\x32\x57\x71\x99\x35\xf9\xc1\x7d\x45\ \x75\x6f\x8e\x57\xaf\x65\x1c\x97\xdf\xf0\xfb\x4f\x7b\x44\x8f\x13\ \xce\xcf\x13\xbc\xf7\xcc\xce\xce\x62\xad\x55\x41\x26\x16\x69\x6b\ \x31\x18\x4c\x05\x8d\x69\x43\xc3\x86\x7c\xf7\xdb\x97\x5c\xdc\x31\ \x3c\x79\x94\x90\xfe\xe5\x48\x1e\x3b\x8c\x31\xb5\x4a\x46\x6d\x0b\ \xe2\x9c\x63\x61\x61\x81\xf0\x6c\xc8\xf7\xdd\x0b\x2e\x9f\x56\x18\ \x03\xc6\x8e\x1e\x6f\x0c\x41\x10\x8c\x67\x4e\x9d\xd2\x51\xcb\x5b\ \x56\xb7\xdb\x65\x63\x63\x83\xfd\xfd\x7d\x0e\x0e\x0e\xe8\xf5\x7a\ \x94\x65\x49\x55\x55\x44\x51\x44\xab\xd5\x22\x49\x12\x7a\xbd\x1e\ \x8d\x46\x83\x7e\xbf\x8f\xf7\xbe\x3e\x1d\xa0\x6e\x33\xa4\xdd\x6e\ \x73\x72\x72\xc2\xe6\xe6\x26\x51\x14\xb1\xb4\xb4\xc4\xda\xda\x1a\ \xdb\xdb\xdb\x78\xef\x69\xb5\x5a\xac\xac\xac\xd0\xe9\x74\x28\xcb\ \x92\x30\x0c\x6b\x95\x90\x5a\x35\xd9\xd5\xd5\x55\xbf\xbc\xbc\xcc\ \xd6\xd6\x16\xbb\xbb\xbb\xa3\x01\x6f\xed\xf8\xc7\x47\x51\x44\x18\ \x86\x78\xef\x49\xd3\x14\xe7\x1c\xce\x39\x8e\x8e\x8e\xde\x1a\x0c\ \x06\x8f\xd4\xb2\x26\xa0\xdf\xef\xb3\xb3\xb3\x33\x9e\x13\xff\x39\ \x5d\xc6\x50\x14\xc5\x68\x63\x41\x40\x10\x04\x14\x45\xa1\x6b\xef\ \xa4\x1c\x1f\x1f\x3f\x04\xca\xe7\x59\x13\x86\xe1\x4c\xb3\xd9\x4c\ \xe3\x38\x46\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\ \x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\ \x44\x44\x44\xfe\x4f\xfe\x01\xd1\xc0\x51\x25\xbd\x25\x7f\x60\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x7e\xd7\ \xff\ \xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x00\x00\x01\x00\ \x01\x00\x00\xff\xdb\x00\x43\x00\x04\x02\x03\x03\x03\x02\x04\x03\ \x03\x03\x04\x04\x04\x04\x05\x09\x06\x05\x05\x05\x05\x0b\x08\x08\ \x06\x09\x0d\x0b\x0d\x0d\x0d\x0b\x0c\x0c\x0e\x10\x14\x11\x0e\x0f\ \x13\x0f\x0c\x0c\x12\x18\x12\x13\x15\x16\x17\x17\x17\x0e\x11\x19\ \x1b\x19\x16\x1a\x14\x16\x17\x16\xff\xdb\x00\x43\x01\x04\x04\x04\ \x05\x05\x05\x0a\x06\x06\x0a\x16\x0f\x0c\x0f\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\xff\xfe\x00\ \x10\x54\x69\x6d\x65\x20\x66\x6f\x72\x20\x4c\x75\x6e\x63\x68\xff\ \xc0\x00\x11\x08\x02\x00\x02\x00\x03\x01\x22\x00\x02\x11\x01\x03\ \x11\x01\xff\xc4\x00\x1b\x00\x00\x02\x03\x01\x01\x01\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x02\x03\x01\x04\x05\x00\x06\x08\xff\ \xc4\x00\x44\x10\x00\x02\x01\x02\x04\x04\x04\x03\x07\x02\x04\x05\ \x04\x01\x05\x01\x01\x02\x03\x00\x11\x04\x12\x21\x31\x05\x41\x51\ \x61\x13\x22\x32\x71\x42\x81\x91\x14\x23\x52\xa1\xb1\xc1\xd1\x62\ \xe1\x06\x33\x72\xf0\x24\x43\x82\x92\xf1\x15\x53\x73\xa2\x25\x34\ \x35\x54\x63\x93\xa3\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x03\x04\x05\ \xff\xc4\x00\x21\x11\x01\x01\x01\x00\x03\x01\x01\x01\x00\x03\x01\ \x01\x00\x00\x00\x00\x00\x01\x11\x02\x21\x31\x41\x12\x51\x22\x32\ \x61\x71\x42\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\ \x00\xfa\x73\xfc\x3c\xe0\xa6\x23\x07\x32\x67\x92\x16\xcc\xb9\xc5\ \xcd\xbf\x5a\xb1\x32\xca\xaa\x5e\x17\xce\xa0\x7a\x1f\x5b\x0e\xd5\ \x9f\x23\xb2\xc9\xf6\x98\x6e\x1c\xa8\x0c\x47\x50\x74\x3f\x3a\xbd\ \x82\xc5\x26\x29\x43\x0b\x09\x47\xa9\x3a\xfb\x57\xca\x97\xe3\xd5\ \x7f\xae\x86\x48\xa6\x8b\x35\x95\x18\x1b\x10\x4f\xe9\x44\x6e\x0d\ \x8d\xfe\xa6\xaa\x4e\xf2\x61\x84\xb0\xe5\xf2\x48\x6e\x1a\x9b\x83\ \x90\xcb\x85\xbb\x6a\x50\xe5\xbf\x5a\x74\x58\x6f\x97\xa0\xa9\x0a\ \x0d\xb5\x00\x93\x61\xae\xe6\x80\x9a\xe6\xf3\x44\xc8\x5b\x2d\xfd\ \x27\xa1\xa8\x0d\x49\xd8\xb1\xa6\x21\x1c\xd4\x30\x3b\x83\xad\xe9\ \x7e\x73\x1a\x99\x4a\x99\x2d\xe6\x20\xef\xd0\xd0\x7d\xe6\x6b\xf4\ \xfa\x54\x8d\xc3\x48\x22\x95\xf0\xb9\xf2\xe5\x6f\x21\xd8\x51\xba\ \x46\xc7\xcf\x18\xbe\xf7\x53\x63\x59\xf8\xec\xdf\x6b\x7c\xdb\x93\ \x7a\xbb\x87\xb8\xc2\x47\x98\xdc\x90\x48\x3d\xa9\x94\x9f\x11\x44\ \x16\x8d\x42\xdf\x73\xcc\xfc\xe8\x89\x04\x52\x41\xa9\x56\x07\x4b\ \xfb\x53\xa0\xdc\xce\x08\x2a\xda\x8a\xcb\xe2\x03\xc3\xc7\x4a\x8a\ \x6c\x03\x6d\xbd\x68\xc6\x0b\x38\x51\xcc\xda\xb2\xb8\x8c\x82\x4c\ \x7c\xae\xb7\xb1\x6e\x74\x72\xf0\xc0\xec\x6f\x7b\x93\xce\x8b\x0d\ \x27\x85\x88\x49\x00\x00\xab\x5e\xf6\xab\x58\x3c\x22\x18\x95\xe6\ \x04\x97\xf4\xa8\x36\xb0\xea\x6a\x31\x78\x03\x94\xbe\x1d\xf3\x00\ \x2e\x55\xb7\x1f\xcd\x67\x29\xd6\x93\x32\xba\x87\x8d\xae\x8d\xa8\ \xa5\x3b\x00\x7a\x9e\x95\x9d\xc3\x71\xde\x00\xf0\xa6\x1f\x76\x5a\ \xc4\x73\x53\xd6\xb4\xbd\x3a\x83\x70\xda\x86\x1c\xeb\x72\xeb\x38\ \x15\xb0\xf4\xef\x52\xa1\x6c\x43\x2a\xb0\x3b\xdc\x57\x7c\xbe\x94\ \x24\xf7\x1f\x5a\x90\xd4\x42\xa3\xcb\x12\x0f\x6b\xff\x00\x35\x24\ \xa9\x50\xa0\x00\x06\xc0\x0d\xa9\x57\x27\x9d\xba\x69\x44\xa4\xfc\ \xc5\x5a\x85\x1a\x90\xf7\x36\xb5\x54\xe3\x99\x1b\x18\x3c\x48\xd1\ \xfe\xed\x75\x61\xda\xae\x29\xaa\x1c\x70\xff\x00\xc6\x8f\xfe\x35\ \xfd\x2a\xe5\xe1\x9e\xab\xc6\x17\x35\x91\x42\x03\xba\x8d\x98\x7e\ \xc6\xb5\x78\xba\x80\xd1\x95\xd8\x2e\x5b\xf5\xaa\xbc\x12\x11\x28\ \x92\x47\x51\xa7\x95\x75\xd2\xe6\xac\xe3\xbe\xf3\x02\x8e\x3e\x12\ \x2e\x2f\xce\xd6\xfd\xa8\x93\xa5\x7d\x54\xb8\x03\x7a\xec\xca\x7e\ \x21\x4b\xf8\x87\x6a\x25\xbd\x0b\x13\xb9\x04\xec\x3b\x6e\x6b\x9a\ \x8a\xd4\x2c\x39\xd4\x80\x47\x31\xbd\x06\x30\xe6\xc0\xca\xed\x9b\ \x3a\x5b\xce\xbb\x81\xad\xff\x00\x6a\x61\xa8\x55\x0c\x59\x1a\xd9\ \x64\x52\xa6\xf5\x12\x7f\xc3\xae\x35\x8d\xe4\x42\xc6\x45\x60\xca\ \x2d\x98\x58\xef\xde\xb4\x25\x5b\x12\x1b\x4d\x6d\x58\x5c\x2d\x12\ \x3e\x26\x60\x9d\x6d\x73\x6c\xc7\x4d\x79\x56\xfc\x8b\x93\x10\x63\ \x72\x58\x91\x74\x66\xdc\xf6\xa3\x87\x70\x5f\x55\x9f\x43\x61\xa9\ \xed\x43\x6b\x6f\xb9\xab\x24\x03\x4b\x75\xa5\x69\x40\x51\x90\x0a\ \x65\x62\x74\x37\x52\x37\x53\xd4\x57\x05\xae\x22\xf5\x2d\x49\xb6\ \xed\x6b\x7e\x35\x1f\xa8\xe5\x43\xe2\xc4\x08\x50\xfe\x23\x1d\x95\ \x2b\x85\xd4\xdc\x13\x7a\x25\x20\x12\x42\x28\x62\x2c\x58\x0d\x6a\ \x43\x65\x2f\x13\xa8\x8a\x40\x59\x2d\xc8\xfe\x95\x9a\x3c\xad\x60\ \xac\xec\x3e\x1c\xa4\x0f\x99\x35\x78\x12\x0d\xc6\xe2\xaa\x71\x04\ \x64\x93\x30\x27\xc3\x7d\x46\xba\x03\x45\x51\xc1\xb7\xbb\x06\x62\ \x2c\x48\x16\x00\x74\x02\xac\xf0\xd9\x15\x49\x85\x8e\x8e\x7c\xbd\ \x8d\x67\x83\x46\xad\x6a\x25\x6a\xc6\xb9\x1a\xd7\x0b\x83\x71\xca\ \xab\xe1\xb1\x4b\x22\x65\x93\xd6\x07\xab\xf1\x7f\x7a\x31\x20\x2c\ \x43\xe9\x6d\x81\xad\xeb\x18\xa1\xc7\x11\x17\x1c\x4c\x7a\x19\x14\ \x35\xba\x13\x56\x38\x2c\xb7\x8d\xb0\xa7\x65\x05\x90\xfe\xb4\x9e\ \x3f\x28\x6c\x4c\x68\x2d\x71\x18\xd7\x99\xbd\x17\x04\x04\x45\x34\ \xa7\x73\x65\x1d\x7a\xd6\x3f\xfa\x6b\xe2\xe3\x9a\x84\x01\x89\x42\ \x4d\x9f\x43\x42\x58\x5e\xd7\xd7\xa5\x09\x6e\x95\xa6\x41\x26\x26\ \x31\x03\x86\x3f\x7c\x01\x51\xa6\xe7\xad\x23\x86\xe1\x8c\x83\xc6\ \x95\x88\x04\xd8\x2d\xae\x5a\x83\x8a\xa9\x13\x78\xc0\x8b\x4a\x6f\ \x6e\x95\x67\x0f\x2f\x8d\x1a\xac\x4a\xd0\xaa\x8b\x33\xff\x00\x15\ \x9f\x6f\x6d\x7c\x5c\x67\x55\xd6\x42\x16\xda\x05\x1a\x9f\xa5\x04\ \x99\xe7\x50\xa6\xf1\x45\xbe\xbb\xb5\x02\x14\x8c\x5a\x21\x6e\xad\ \xf1\x1f\x9d\x71\x90\x03\xa9\x37\xf6\xad\xeb\x23\x48\x9a\x31\xf7\ \x13\x1e\xeb\x20\xd0\xd1\x78\xae\x83\xfe\x22\x2c\xa3\xf1\xa6\xd4\ \xb5\x95\x76\xd4\x7b\x8a\x62\xb8\xea\xba\xf2\x3c\xea\x46\x73\xd0\ \xdc\x1d\x88\xe7\x52\x80\xad\xd0\x00\x5c\x1b\x12\x76\x5f\x7f\xe2\ \x94\x09\x51\x68\xe6\x55\x5e\x4b\x6b\x95\xf6\x34\x48\x6c\x81\x40\ \xb2\x8b\x9b\x53\xa8\xdb\xc9\xcb\x10\x49\xfc\x2c\xa3\x2d\x03\x62\ \x10\x3e\x49\x94\xc4\xdd\xb5\x53\x42\x5a\xba\x40\x25\x89\xa3\x6d\ \xac\x48\x3d\x2d\x56\xa3\x1a\x45\x44\x32\x31\xba\x81\x7d\x39\xd5\ \x19\xe6\x97\x13\x32\x85\x51\xd1\x54\x1d\xaa\xd4\x66\xd8\x78\xd4\ \x8f\xf9\x60\x10\x45\x70\xc8\xa6\xe9\x1a\x21\x3a\x5c\x51\x50\x62\ \xc3\x28\x60\x1d\xf3\xb3\x68\x75\xda\xf5\x54\x48\xfe\x3e\x43\x2b\ \x65\x24\xa9\x3f\x95\x5d\x8c\xfd\xea\xfb\x8a\xcc\x9c\xda\x57\xff\ \x00\x51\xa2\xd3\x1d\xc3\x6d\xf6\x93\x98\x5c\x05\x3a\x75\xa5\x63\ \x70\x46\x3b\xe2\x30\xac\x4a\x83\x7c\xbc\xd6\xbb\x86\xb9\x18\xc5\ \x5f\xc4\x32\x9f\xa5\x5e\x85\xf2\xbd\xef\xd4\x1a\xcc\xee\x35\x55\ \xa1\xe2\x90\xa2\x78\x38\xe9\x14\xc8\x79\xef\xcb\xe2\xa7\x60\xd3\ \x26\x0e\xf9\x95\x83\xbd\xee\xa7\x41\x61\xfd\xeb\x17\xfc\x49\xc3\ \x8c\x0e\x31\x50\xa9\x31\xc9\x7c\xd6\x37\xb1\xae\xe0\xd8\x99\xe1\ \xe1\xb6\x8a\x42\xa1\x24\xb6\x52\x34\x37\xd7\x5a\xcc\xe5\x65\xca\ \xb3\xae\x9b\x6e\xf6\xd1\x6c\x68\x4e\x6b\xf9\xaf\x7a\xa0\x9c\x4b\ \x12\x18\x1f\x0e\x0f\xfb\x05\x13\x71\x4c\x4b\x10\x7c\x38\x7f\xec\ \x15\xaf\xd4\x18\xd3\x43\x70\x0f\x5a\x2b\x58\xd5\x7c\x06\x26\x3c\ \x62\x15\x0b\xe1\xc8\x2e\x72\x03\x70\x45\x34\xe7\xb5\x81\xd2\xb4\ \x30\x73\x42\x93\x15\x2e\x4a\x95\xd2\xe0\x6e\x28\xa2\x8d\xa2\x4c\ \xb1\x48\x1d\x7f\x03\x8b\x7d\x0d\x04\x57\x53\xae\xa0\xfe\x54\x38\ \xfc\x60\xc3\x1f\x0e\x34\x57\x92\xda\x96\xd4\x2f\x6a\x91\xe4\x82\ \xac\x40\x2a\x40\xf3\x29\xdc\x7f\x6a\x35\x46\x71\x70\x85\x87\x61\ \x58\xd2\x71\x0c\x49\x95\x9f\xc4\xc8\xea\x97\x19\x74\x02\xda\xdb\ \xfd\xf5\xa3\xc5\x62\x67\x32\x12\xd3\x39\xb0\x07\xd5\xf3\xab\xf5\ \x17\xe6\xb4\x71\xb8\x85\xc1\xc4\x4b\x79\xe4\x20\x80\xb7\xf4\xf2\ \xd6\xb2\xf8\x72\x3e\x27\x14\x91\x90\x3c\xcd\xa9\xb5\x01\xbb\xef\ \x7d\x79\x5f\x53\x5a\x9c\x1f\x0c\x70\xf0\x99\x9a\xf9\xdc\x59\x54\ \xe9\x61\xd6\x8f\xf6\xa7\xc8\xb6\xe5\x73\x1c\xa2\xc3\x61\xed\x50\ \x09\x0d\x70\x6c\x6a\x06\xdb\x1f\xa5\x4d\xbb\x37\xd2\xb6\xca\x8f\ \x19\xc3\x02\x46\x2a\x35\x16\xd9\xc0\x1e\x93\xd6\x83\x84\xe3\x15\ \x41\x86\x66\x61\x1b\x7a\x58\x8d\x14\xd6\x88\x3b\x82\x0d\x98\x59\ \xae\x39\x56\x46\x3b\x0c\xd8\x69\xb2\xda\xe8\x7d\x27\xa8\xac\xde\ \xae\xc6\xa7\x7d\x35\x9d\x48\xb0\xb8\x20\xf3\x06\xe0\x8a\xeb\x5a\ \xb1\xf0\x38\xa9\xb0\xc0\x04\x71\x6e\x68\xfb\x1a\xbb\x17\x16\xc3\ \xb8\x1e\x2c\x45\x49\x3a\xe5\x3b\x55\x39\x41\x8b\x55\x23\x71\xdb\ \x5f\xf7\xfe\xf9\x50\xc5\x2e\x1e\x60\x0c\x53\x29\xec\x74\x34\x44\ \x32\xee\x08\x27\x5a\xd0\x48\x36\xac\xfe\x38\x6f\x8d\x5f\xfe\x35\ \xfd\x2a\xfa\x02\xcc\x00\xdc\x9a\xcd\xe2\xb2\x2c\xb8\xd3\x93\x50\ \xa0\x28\x3d\x6d\x47\x2f\x0c\xf5\x7f\x84\xa8\x5e\x1c\x08\xbd\xdd\ \xc9\x3f\x2f\xfc\xd3\xb1\x0b\x9e\x1c\x42\x87\xf4\xb6\x6b\x5b\x9f\ \x4a\x5f\x0e\x42\x9c\x3e\x3c\xc4\xf9\xae\xc0\x76\xd3\xf8\xa6\xb2\ \x33\x33\x34\x4c\x15\xdd\x6c\x41\xd8\xd6\xa7\x81\x9a\xa0\x58\x7b\ \x5e\x8d\x45\x71\x8d\x94\x90\x45\x99\x7c\xae\xbc\xd4\xd4\x81\x58\ \x29\x14\x2d\x72\x3c\xba\x5f\x99\xa2\x61\xa8\x53\xcf\x5a\x83\x50\ \x2d\x87\xbf\xd6\x81\xb5\xdf\x5e\xc6\x98\xfb\xd4\x11\x65\x66\xcb\ \x98\xa8\xbe\x51\xce\xa3\x15\x78\xa6\x1c\xe2\x62\x13\x46\x01\x96\ \x31\x66\x00\xea\xc3\x91\xab\x03\x12\x24\x68\x0b\xb1\x19\x72\x80\ \xe0\xe9\xca\xd7\xe9\xd2\x83\x0d\x24\xf2\x44\x25\xcf\x0c\x77\x24\ \x0f\xbb\xd6\xba\x7c\x1e\x21\xf0\x4c\xf0\xe4\x66\x6b\xa9\xfa\xdf\ \x4a\x3f\xec\x2d\x19\x90\xac\x84\x11\x6e\x63\xda\x82\xb3\xb8\x57\ \x11\x95\x30\x82\x2c\x4a\x67\x11\xbe\x43\x7d\xc0\xde\xb4\xe3\xc9\ \x2c\x62\x48\x5b\x3a\x1f\x91\x1e\xf4\xcb\xbe\x0b\x30\x04\x0a\x16\ \x02\xd4\xc6\x68\xc7\xc4\x5b\xba\xad\xc7\xd6\xa0\xa8\xb0\x20\x82\ \x0e\xc7\xad\x40\xa2\x05\x08\xb5\x31\x96\x84\x8b\x54\x90\x68\x5d\ \x16\x58\x8c\x6c\x6d\xcc\x1e\x95\xcd\xa6\xa6\x87\x29\x27\x36\xa0\ \xde\xf5\x15\x29\x50\xc7\x21\x46\xdd\x4d\xa8\x41\xe9\x57\xb1\x11\ \x89\xd4\x5c\x59\xc6\xc7\xaf\x6a\xa2\xc0\xab\x15\x61\x62\x37\xac\ \x59\x8d\x4a\x90\x4d\x3e\x2c\x49\xf4\xcb\xa8\xda\xe3\x71\x55\x6f\ \x5d\x7a\x34\xa7\x8f\xc8\x3e\xd0\xb6\xd4\x78\x6a\x01\x1b\x5e\xd5\ \x73\x87\x00\x38\x54\x40\xf3\x66\xfd\xab\x33\x8a\xbb\xae\x1e\x2c\ \x4a\x00\x42\xf9\x25\x16\xf5\x74\xbd\x68\xf0\xf9\x23\x6e\x15\x1f\ \x86\x49\x0a\xc7\x97\x5a\x65\xff\x00\x2a\x3e\x1a\xd6\xe5\xa1\xa8\ \x0e\x08\x25\xae\x00\xde\x96\xcf\x6e\xbf\x4a\x28\x88\xf2\x86\x1a\ \xb4\x83\xf2\xb9\xfd\x85\x68\x25\xd5\x64\x70\xf3\x29\x27\xe1\x4b\ \xe8\xa3\xa5\x10\x60\x14\x28\x00\x01\xb0\x14\xbb\xeb\x5d\x7a\xba\ \x43\x2c\x6d\xa5\x72\x30\xca\x29\x6c\x6d\xef\xca\xb8\x69\xa5\x5a\ \x8e\x06\x89\x5a\x92\x0d\x12\xb5\x29\x65\x5a\x8c\x30\x35\x5d\x4d\ \x12\x35\x4c\x9f\x5c\x40\x24\xa6\xe0\x7a\xf5\xff\x00\xeb\xfc\xd0\ \x17\x2a\x42\x8b\x67\x6f\x48\x3c\xbb\xd4\x82\x15\x02\x8f\x48\xff\ \x00\x77\xa9\x08\x9b\x9b\xd4\x11\xde\x84\x3d\xf6\xd6\xa0\xbd\xb7\ \x23\xeb\x52\x31\x48\x5b\xb1\x36\x0a\x09\x27\xa5\x63\x3b\x8b\xeb\ \x7b\x9e\xd5\x7f\x1d\x2e\x5c\x26\x50\x48\x69\x3f\x21\x59\x6e\xc1\ \x98\xef\xd0\x56\x79\x56\xb8\xc1\xe0\x64\xf0\xf1\x68\xcc\x35\x0c\ \x34\xeb\x5a\x39\x7c\xe5\x17\x5d\x6d\x59\x4e\x03\x32\xdb\x42\x35\ \xbd\x6a\xc2\x56\x58\xf3\xa9\xf5\x8b\x36\xba\x8e\xbf\x90\xfc\xea\ \xe2\x68\x64\x4f\x1a\x42\xc5\xc0\x86\xd9\x00\x23\xd6\x3a\x8a\xa7\ \x2f\x0c\xf0\x30\xe5\x70\x65\xa5\x42\xd9\x9a\xfe\xa1\xa7\x4a\xba\ \xc7\x31\xe9\xd2\xdc\xaa\x23\x2c\xb2\x7a\x8f\x63\x4d\x92\x86\x3b\ \xa3\xa7\xad\x19\x7d\xc5\xa8\x49\xb0\xbd\x6f\x78\xae\x48\x56\x39\ \xb9\xf9\x85\xff\x00\x5a\x5c\x98\x4c\x14\xda\x98\x8c\x6d\xf8\x90\ \xfe\x76\xac\xfe\x3f\x87\x59\x38\x49\x64\xc3\xe2\x04\xcb\xb8\x37\ \xb5\x6c\x61\xf1\x98\x4c\x42\x66\x0f\xe0\xb7\x30\xfb\x7c\x8d\x52\ \x9f\x86\x4c\x83\x3c\x4c\x26\x5e\x76\xdc\x7c\xaa\xab\x2b\x29\x21\ \x94\xa9\xee\x2d\x54\xde\x2b\x25\x6c\x4b\x8c\x82\x05\xbc\x72\x2c\ \xb2\x7c\x39\x76\x15\x9a\x03\x4b\x29\x21\x49\x66\xd7\x4d\xeb\xb0\ \x78\x69\xb1\x0f\x68\xd0\x91\xcc\xf2\x15\xb1\x82\x85\x30\x89\x64\ \x21\xa4\x3e\xa7\xfe\x29\x9b\xc8\x75\x08\x83\x85\x46\xb1\xb0\x9d\ \xdb\x33\xa9\xba\x0f\xad\x89\xf9\x55\xb6\x83\x0c\x14\x2f\xd9\xe3\ \x6f\x28\xd5\xb5\x3b\x51\x2f\x99\x48\xe6\xde\x50\x7d\xcd\xbf\x9a\ \x97\x20\xb9\x23\x6a\xdc\x92\x33\xb4\x2a\xb0\x2b\x02\x30\xd1\x29\ \x1b\x10\x2f\x4d\xb9\x66\x24\x9b\x93\x4b\x8f\xcc\xc4\x8e\x5b\x53\ \x29\x89\x1a\xe5\xa9\xb1\xae\x16\xe6\x6b\x98\xd9\x49\xed\xa5\x29\ \xd6\xa8\x3a\xae\x56\x50\xc3\x7b\x11\x7a\x9b\x2d\xb6\xbf\x73\x5c\ \xbb\x91\xc8\x54\x83\x68\xb6\xf0\x22\x3f\xf4\xd4\x18\xb0\xcc\x7c\ \xf8\x48\x4f\xfd\x34\xc0\xb6\xa8\x22\xf5\x62\x55\x93\x87\xe1\x1e\ \x5f\xba\xcd\x13\x5b\xad\xc7\xf6\xa0\x64\xe2\x38\x4d\x98\xbc\x63\ \x6f\x89\x4d\x5a\x37\x0d\x99\x45\x3a\x37\x36\x0c\xa4\x8b\xd1\x91\ \x6b\x2a\x4c\x76\x25\x90\xa5\xd5\x2f\xbe\x55\xb1\xaa\xca\x09\x6b\ \x0d\x49\x35\xb9\x2c\x30\x4b\xfe\x64\x22\xfd\x57\x43\x41\x87\xc2\ \x61\xe1\x93\xc4\x5c\xce\xc3\x60\xc0\x58\x51\xf9\xa7\x4e\x2a\x11\ \x55\x00\xb0\x55\x02\xdd\x2b\x80\xa9\x00\x93\x73\xb9\xa3\x51\x6a\ \xd8\x0c\xd8\x78\xe7\x00\xb1\x2b\x22\x8b\x07\x53\x62\x7b\x1a\xa2\ \xd1\x49\x1b\xb2\x4c\xcc\x59\x45\xc3\x6d\x98\x75\xf7\xad\x20\x34\ \xa9\x75\x57\xc8\x19\x43\x00\xd6\xb1\xe8\x7f\xf1\x55\xe3\xa2\x56\ \x4b\x58\x68\x05\xaa\x37\x15\xa3\x26\x16\x17\x37\x19\x93\xdb\x51\ \x48\x93\x04\xc3\xd0\xe8\x7d\xf4\xb5\x66\xf1\xa7\x54\x9c\x54\x29\ \x20\xdc\x55\x87\xc2\xce\x2f\x78\xc9\x03\x98\xda\x97\xe1\x3d\xfd\ \x24\x77\x22\xb3\x94\xe9\x4e\xa1\x73\x46\xa2\xc0\x79\xd7\x4e\x47\ \x7f\xce\xad\xe0\x98\xae\x0d\x2c\x6d\xe6\x6f\xda\xab\x61\xe1\x97\ \x13\x8a\x92\x65\x5b\x46\xab\x91\x6f\xa0\x35\x71\x63\x11\xc2\xb1\ \x83\x7b\x5e\xe7\xbd\x31\x52\x78\x86\x14\x62\x90\x98\xc0\x59\x46\ \xb6\x03\x47\xfe\xf5\x9d\x83\x90\xc3\x8b\x11\x9f\xf2\xd4\x5e\x71\ \xd7\xb5\x6c\x00\xf9\x08\x8d\x82\xbf\x22\x6b\x27\x1b\x1f\x87\x2b\ \x8c\x99\x4b\xbe\x63\xf4\x1f\xbd\xe8\xe5\xfd\x53\xf8\xd7\x39\xd5\ \x82\xa3\x10\xb6\xf2\xdb\x41\x6a\x5a\x15\x71\x29\x4b\x65\x12\x79\ \x6c\x3a\xd2\x70\x38\x94\x7c\x11\x85\x9b\x2c\x80\x64\x43\xd6\xfc\ \xbf\x5a\xbb\xe1\xd9\x02\x46\xb9\x94\x6d\x93\x51\x7a\xd4\xec\x2a\ \xc8\x72\xe9\x6b\x93\xb5\x09\x4e\xac\x6a\xc1\x85\xef\x72\x8d\x7e\ \xca\x68\x1d\x0a\x9b\x10\x47\xb8\xa3\x11\x05\x05\xef\xb9\xee\x76\ \xa8\x2b\x4d\x22\x81\x8e\xb4\x22\x8a\xd2\xe7\x84\x4c\x08\x26\xce\ \x3d\x2d\xd7\xb5\x3c\xda\xd7\xa0\x61\xa5\xf9\xd4\x65\x66\x3a\xb2\ \x39\x56\xb8\x23\x7b\xd0\x93\x57\x38\xa2\x66\x8c\x4c\x37\x1e\x56\ \xfd\xaa\x8b\x1b\x0a\xe7\x7a\x6e\x09\x54\x4b\x14\xb0\x1d\x9d\x0f\ \xc8\x8d\x69\x5f\xe1\x59\xbe\xe9\xa1\x61\xe5\x67\xca\x3b\x5c\x51\ \xc6\xc1\x23\x9a\x46\xf4\xa4\x64\x9e\xf5\x47\x81\xb6\x48\xd5\x94\ \xf9\xbc\x71\x6a\xcf\x96\x26\xe3\x1b\x1a\x82\xcc\x27\xc3\x00\x37\ \x72\x68\xa6\x53\xe3\xb2\x81\xf1\x1a\x01\x63\x2f\x8a\x0f\x96\x21\ \x95\x3b\x9e\x66\xba\x32\x33\xbf\x5a\x82\x75\xb0\xff\x00\xc5\x0d\ \xeb\x97\x46\x6d\x77\xa9\x27\xda\xbb\x9d\x75\x70\xde\xa4\x2a\x90\ \x6a\x39\x54\xd3\x10\xd0\xd3\x03\x64\x42\xf6\xb9\x1a\x28\xea\x4e\ \xd4\x90\x69\x80\xda\x4d\xae\x22\xd0\x77\x63\xfc\x0a\x52\x63\xfb\ \xbb\x82\x09\x63\xbb\x6e\x4d\x48\x24\xea\x7e\x40\xd0\x83\x7a\x9a\ \x90\x89\x07\x71\x52\x2c\x06\x77\xb2\xa8\xde\x84\x15\x55\x2e\xe6\ \xca\x39\xd5\x3c\x5e\x20\xcc\xd6\x02\xc8\x36\x14\x5b\x83\x03\x89\ \x93\xc6\x94\xb9\x03\xa0\x1d\x05\x21\x92\xcd\x75\x36\xa3\x35\x04\ \x8a\xc3\x65\x5f\xcc\xb5\x67\x0d\x2b\xc3\x2c\x65\x6d\xac\x4e\x4d\ \xc6\xf5\x5d\x56\xee\x14\x6a\x49\xb7\xbd\x4c\x72\x07\xc4\x62\x82\ \x6a\x11\x15\x45\xba\x03\x44\xa9\x7e\x3c\x5c\x0f\xeb\x56\x43\xdb\ \x51\x4f\x50\x1c\x5e\x36\x57\x1d\x8d\x64\x0a\x62\x31\x06\xe0\xdb\ \xda\xb5\x39\x0c\x69\x6c\xda\xe9\x71\x61\x44\x06\x97\xa4\x61\xf1\ \x80\x8c\xb3\xeb\xfd\x7c\xfe\x75\x64\xa8\xdc\x5a\xc4\x68\x46\x97\ \xad\xb3\x5c\xb7\x07\x43\x63\x4d\x12\x39\xd4\xe5\x3d\xca\x82\x69\ \x2c\x72\xdb\x98\xa9\x57\x61\xa9\x1e\x53\x50\xc3\x73\xb1\x16\x26\ \xc3\xa0\x16\x15\x22\x81\x5b\x37\xa4\x7c\xcd\x18\xbf\x36\x3f\x41\ \x4a\x74\x8f\x92\x48\x17\xf1\x3d\xea\x09\x62\xd6\x1a\x8e\x75\x2c\ \xa0\xcb\x19\x37\x25\x41\x35\x23\x7a\x90\xb3\x05\xd0\x2d\x16\xb7\ \xd5\x8f\xca\x84\x6d\x5c\x09\x02\xd7\x07\xde\x94\xe2\xa4\x9b\x96\ \xa8\x28\xdb\x02\x2a\x6f\xad\x10\xd4\x8d\x0d\xc9\xe9\x52\x72\xa8\ \x55\xb5\x16\x8a\x73\x3b\x2a\x29\x1b\xb1\xb5\x04\xf8\xa8\x20\x66\ \x4d\x65\x91\x77\x51\xa0\x53\xd0\x9f\xda\xb3\xb1\x12\xc9\x34\x85\ \xdd\xd2\xe7\x90\x52\x40\xf9\xdc\x55\x6e\x26\xce\x42\x40\x2b\x66\ \x07\x62\xa6\xf4\x8c\x77\x88\x90\x06\x8c\xb2\xea\x73\x5a\x83\x84\ \x43\x7c\x33\xb3\xb4\x85\x58\xf9\x47\xa7\xf4\xa7\xcb\x87\x71\x1b\ \x08\xe5\xf2\x91\xaa\xb6\xa4\x53\xec\x4a\x8b\x8e\x21\x72\xcb\x15\ \xcd\xbd\x6b\xa7\xe5\x56\x70\xe7\x34\x21\x85\xf2\x9d\x45\x72\x44\ \x90\xc2\x2d\xe6\x2c\x75\xa6\x40\xb9\x70\xca\xa3\x93\x35\xbd\xaf\ \x54\xd4\xe1\x44\x05\xeb\x82\xd1\x28\x26\xf6\xd0\x6d\x7a\xd2\x48\ \x5b\x0b\xd4\x8e\xc0\x9e\xfb\x57\x05\x51\xc8\x5f\xa9\xd4\xd4\xee\ \x69\x65\xda\xfe\x1f\xfe\xd5\xd7\xfb\xc4\x5d\x8e\x62\x6c\x7b\x0f\ \xef\x47\x6b\x0d\x28\x5e\xe6\x64\x51\xba\xdc\xb5\xb9\x02\x2a\x48\ \xa8\x22\x8f\x27\xf5\x1f\xca\xa0\xa1\xe4\x7e\xa2\xa4\x00\x0d\xe9\ \x38\xec\x49\x45\x31\x2b\x12\xe7\x43\xae\xd5\x65\x6e\x1b\x6d\x7d\ \xeb\x39\x22\x95\x66\x0e\xf0\x3b\x00\x6e\x47\x5a\xcd\xff\x00\x86\ \x1f\x02\xb2\xe1\x54\x35\xee\x4d\xcd\xeb\x88\xa3\x12\xac\xad\x65\ \xb8\x6e\x61\x86\xd5\x05\x3a\xde\xa2\x56\xec\x40\xb0\xb6\xe6\x93\ \x89\xc2\xfd\xa4\x12\x08\xf1\x53\x4d\x46\x8e\x3a\x1a\xb4\x16\xc2\ \xc0\x0a\x12\x32\xb6\x61\x7d\x4e\xb4\x62\x62\x48\x0a\xb5\x8d\xee\ \xa7\x40\x16\xc0\x1b\x5a\xfd\x4d\x44\x5e\x3d\xad\x11\x7d\x39\x29\ \x35\xbe\x58\x93\x72\x17\xe6\xa2\xa4\x3b\x0f\x4d\x97\xb8\x00\x7e\ \x95\x9f\xc1\xd6\x03\x3c\xe0\x0c\xcf\x28\xbf\x22\x48\xa6\x61\xf1\ \xf3\xc5\xe5\x73\xe2\x25\xad\x95\x8d\x6b\xc8\x24\x2d\x7b\x86\x1d\ \x1e\xc6\xdf\x5a\xcc\xe2\xf0\x2a\x05\x96\x34\x20\x31\xb3\x0e\x86\ \xb3\x65\x9d\xc3\x2e\xae\x12\xaf\x1a\xc8\x9e\x97\x17\x1d\xbb\x50\ \x30\xa4\xf0\x96\x27\x0d\x24\x7f\x81\x81\x1e\xd4\xf7\x36\x17\xa7\ \xde\xd9\xa4\xbe\x8e\xbf\x33\x42\xe6\xf4\xc6\x16\xd4\xee\x69\x46\ \xa3\x09\xc7\xe9\x82\x3d\xd8\x56\x73\x5c\xe8\x35\x26\xae\x71\x77\ \xb1\x48\x47\xc2\x2e\xde\xe6\xa9\x62\xa7\x4c\x14\x1e\x2b\x1b\xca\ \xeb\xf7\x4b\x6d\xbb\xd7\x3e\x57\xb6\xa2\xaf\x1d\x9b\xc2\x85\x70\ \x68\xd7\x6b\xde\x50\x0e\xe7\x90\xa3\xc3\x44\x62\x96\x08\x94\x5d\ \xa3\x21\x9d\xbb\x92\x0d\x67\x60\x95\xe7\xc6\x78\xb2\x02\xe1\x4e\ \x76\xef\x5b\x5c\x31\x95\xf1\xf9\xdf\x51\x18\x2d\x6f\xc4\xfc\xcf\ \xcb\x6a\xe7\x3b\xba\x6a\xd3\xc8\x71\x39\xb2\x02\x88\xc6\xee\xe7\ \x7f\x61\x52\xcc\x2c\x15\x45\x94\x0b\x01\xd2\x82\xe5\x9c\xb9\xe7\ \xb5\x41\x35\xd7\x46\x08\xb5\x85\xcd\x70\x3a\x77\x26\x80\xea\x40\ \x3c\xb5\x35\x20\xd5\xab\x0c\x06\xa6\xf4\xbb\xd4\x83\x56\xac\x30\ \x1a\x9b\xd0\x03\x5c\xc7\xc8\x6d\x48\x36\x36\xf3\x02\x3e\xa6\xa3\ \x0e\x4f\x84\x62\x63\x77\x8d\x89\x3a\xef\x7e\x74\x31\x9c\xc4\x5b\ \x9d\x4a\x10\x59\xa6\xe6\xf6\x0b\xfe\x91\xce\xa4\x60\x34\x59\x95\ \x10\xbc\x86\xca\x3f\x3a\x05\xb6\xb7\x36\x00\x5c\x9e\x95\x4b\x19\ \x3f\x8b\x2d\x97\xd0\xbe\x9a\x6d\xc4\x3c\x4e\x21\xa6\x6e\x8a\x36\ \x14\xb0\x69\x63\x7a\x9a\xe7\xad\x0c\xb5\x01\x3a\xd4\x1a\x83\xb6\ \xd5\x27\x2b\x59\xb4\xb8\x3c\xaf\x4c\xb2\x87\x18\x85\x40\xa7\x30\ \x59\x00\xf8\x81\xa1\xf0\xbc\xb6\xbe\xbd\x68\xd5\x5d\xa0\x75\x00\ \x06\xb8\x61\x7e\x76\x35\x62\x73\xa6\x59\x19\x46\xb6\x24\x5e\xba\ \xf6\xda\xb9\x87\x89\x69\xd5\x8f\x9c\x93\xa8\xdb\xb5\x72\x86\xce\ \x41\xb1\xef\x6a\x52\x41\xab\x7c\x3e\x7c\xad\xe1\x39\xf2\x36\xdd\ \x8d\x55\xd3\x99\x14\x2e\x5c\x37\x31\xd2\xad\xc5\x5b\x0e\x32\xdc\ \x30\xfa\xd1\x0b\x5a\xd5\x53\x09\x29\x9a\x1b\x31\xf3\xa0\xb6\xa7\ \x71\x56\x86\x80\x03\x5d\x18\xb0\x43\xb5\x4d\xc2\xa9\x63\xb2\x8b\ \xd4\x0a\x56\x39\x98\x61\xec\xa2\xe1\x8f\x98\xda\xa0\x6c\x0d\x9e\ \x1f\x14\xee\xe4\xdf\xb5\xb6\x14\x42\xa8\xe1\xa7\x96\x2f\x2a\xea\ \xa7\xe1\x3b\x56\x83\x03\x60\x76\xd3\x50\x29\x9d\x9a\xe0\x6a\x75\ \xa0\x37\xb5\xaf\xad\x12\x85\x03\xaf\xb9\xa4\x08\x0b\xd3\x10\x12\ \xac\x01\xb3\x5b\xca\x6f\xce\x81\x4f\x73\x44\x46\x9b\x9f\xad\x31\ \x31\xf1\x0a\xd0\x49\xe1\xce\xad\xab\x12\xb2\x01\xa1\xbe\xb6\x3d\ \x0d\x5d\xc0\x60\x1d\x8a\xc9\x88\x5c\x89\xbd\xb9\xb5\x5c\x8f\xcc\ \xb9\x5c\x93\xd6\xfa\xdb\xda\x8a\x16\x24\x34\x6e\xc1\x9a\x33\x6b\ \xf5\x1c\xa8\x9c\x61\xd1\x46\xd7\x94\x20\x00\x28\x16\x00\x72\xa7\ \x0d\x28\x10\x5b\x5b\x6b\x46\x2b\x71\x9a\x15\x48\xd5\x8b\x91\x60\ \x35\x3d\xab\x91\x6d\x1a\x8b\x58\xda\xf6\xe9\x7d\x69\x8c\xb7\x0a\ \xa7\x62\x75\xee\x00\xbf\xeb\x6a\xe6\x1a\x9d\x75\xa4\x16\xe3\xc8\ \x7a\xda\xa4\x0b\x00\x3a\x57\x38\xf2\xdb\xae\x82\x8c\x81\x7a\x92\ \x02\xde\x88\x0b\x54\xd7\x54\x9c\xc4\x2a\x96\x3b\x28\xb9\xa8\x41\ \x65\xd7\xd4\x75\x63\xd4\xd4\x4d\xfe\x4b\xdc\x5c\x65\x35\x26\xe0\ \xdb\xa6\xf5\x24\xd4\x13\x6a\x16\xbd\xea\x00\x26\xa4\xe3\xbd\x71\ \x2d\xc8\xfe\x75\x39\x4d\x2e\x50\xd2\x44\x52\x3b\x00\x77\x73\xb7\ \xb0\xeb\x52\x55\xe2\x52\xa3\x32\x84\x37\x65\xdd\x87\xe9\x44\x98\ \xd4\xca\x03\xa3\x16\xe7\x6e\x74\xa9\x30\x53\x2f\xa4\x07\x03\xf0\ \xd4\x70\xf4\x07\x17\xe6\xf8\x41\x36\x35\xcf\x6e\x95\xb5\x67\x71\ \x75\x80\x01\xcb\x3b\xd8\x9a\x0c\xe9\x98\xa4\x9f\x76\xdf\x85\xb9\ \xd3\x8e\xa6\xe6\xb9\x80\x6b\x66\x45\x6b\x6d\x71\xb5\x69\x00\x45\ \xa6\x9f\x91\xa9\x29\x6e\x67\xf2\xa9\x78\xe3\x65\x39\xa3\x5d\xb7\ \x02\xc4\x50\xc4\xd9\xe0\x46\xce\x3d\x3e\x6b\x9a\x52\x0a\xeb\xea\ \x34\xb9\x21\x57\x86\x44\x37\x62\xca\x48\xbf\x5a\x6a\xb2\x35\xc2\ \x48\xac\x57\x70\x2a\x50\x0c\xe3\xbe\x94\x16\x3f\x0a\x39\x71\x4c\ \xa6\xde\x64\x23\x5e\xb5\x66\xe0\xc9\xa6\xc2\xa8\xc8\x4c\x38\x9b\ \x8b\x82\x8f\x71\x7a\xbe\xb9\x58\x67\x8c\xdd\x48\xbd\xeb\x9c\x34\ \x12\x52\x98\x84\x46\x91\xfd\x2b\xaf\xbf\x6a\x73\x8b\xd6\x6f\x13\ \x9c\x3b\x78\x69\xe8\x53\xf5\xef\x45\xb9\x14\x21\x4f\x8d\x8c\xcc\ \xfa\xdc\x96\x3e\xc3\x5a\xc1\xe2\x18\x89\x31\x78\xb2\xe7\x5b\x9b\ \x28\xe8\x39\x0a\xdb\xc3\xb0\x13\x1c\xc6\xc0\xa9\x1f\x95\x52\x8b\ \x87\x4d\x83\x66\xc4\x4c\x97\x0a\x6d\x19\xe4\x4f\x5a\xe3\xca\x5b\ \x1b\x82\xc2\xa1\xc3\x44\xaa\x06\xb1\x83\x24\x96\xeb\xc8\x55\xbe\ \x10\xa0\x49\x3e\x97\x29\x18\x5b\xdf\xbe\xbf\x9d\x54\x04\x29\x8a\ \x36\xf5\x4a\x73\xb0\xe7\x94\x6d\xf9\xd5\xae\x18\x24\x2d\x3a\x44\ \xe3\xc4\xca\x0b\xb7\x25\x37\xda\x9e\x3e\xaa\xb2\xc0\x8f\x50\x23\ \xde\x84\xef\x40\x1a\x68\x0d\xb1\x0d\x9e\x36\x3a\x38\xd6\xd4\x63\ \x23\x1f\x2c\xa8\x49\xd8\x66\xad\x00\x8b\x8b\xe9\x7b\x9a\x91\xf4\ \xa2\x64\x65\x17\x2a\x6d\xd6\xa3\x42\x2a\x28\x6b\x01\x52\xa7\xad\ \x44\xa6\x28\x55\x5a\x5c\xde\x6d\x94\x6f\x45\x04\xb1\xcf\x71\x1e\ \x60\x47\x23\xce\xa0\x91\x6e\xf5\xc4\x12\x35\x36\xed\x53\xb5\x48\ \xda\xb4\x10\x54\x88\x88\x5d\x59\xfc\x8b\xee\x69\xae\x6e\xe6\xdb\ \x00\x05\x40\x03\xc6\x4e\xaa\x85\x80\xbf\x3b\xef\x43\x23\xac\x51\ \xf8\x8d\xaf\x41\xd6\xa4\x5f\x10\x97\x22\x78\x2a\x75\x6d\x5b\xf8\ \xaa\x60\x9a\xe7\x66\x77\x2e\xc6\xe4\x9b\x93\x52\x39\x56\x6b\x43\ \x02\xa7\x95\x08\x3a\x51\x0d\xeb\x29\x04\x50\xb0\x60\xd7\xb5\xc0\ \xa6\xd8\x74\xa8\x75\xb8\x22\xfb\xd3\x88\xef\x05\xf9\x21\x3d\xc6\ \xb5\x24\xac\x0c\x1a\x56\xb3\x0f\x4a\x0d\xc9\xac\xd7\x5c\x4c\x1e\ \x4b\x48\x8c\xdb\x00\x77\xab\x98\x18\x4e\x1d\x3c\x59\x35\x95\x87\ \x97\x36\xa5\x7b\xd3\x2a\x31\x87\x84\x8b\x13\x0b\x11\x76\x3e\xe7\ \x95\x72\x6a\x5a\xdf\x2a\xeb\xf5\xe7\xbd\x4d\xea\x4e\x51\x94\x00\ \x45\x8f\x5e\xb5\x22\xba\xbb\x2e\x9b\x9f\xad\x21\x31\xb9\x49\x43\ \x8d\xc7\x3a\xd2\x84\x89\x22\xce\x9a\x8b\xed\xcc\x56\x51\x36\x36\ \x3a\x53\x20\x91\xd1\xcb\x46\xc4\x5a\x99\x55\x8d\x4b\x54\xa1\x00\ \x12\xc7\xcb\x6b\x9b\xf3\x15\x49\x71\x92\x81\x62\x15\xbd\xc5\x41\ \xc4\xcb\x23\x58\x90\x01\xd0\xe5\x00\x56\xb5\x9c\x58\xc2\x61\x85\ \xbc\x56\x0d\x72\x6e\xa8\x3e\x1e\x97\xa7\x15\xb1\x25\x9e\xc7\x9d\ \xda\xb3\x56\x79\x64\x46\x57\x91\x89\x89\xb2\x93\xd7\xa5\x40\xd7\ \x5b\xd1\x2c\x58\xd4\x02\xfa\x06\x53\xff\x00\x50\xae\x60\x41\xda\ \xb3\x05\x36\x09\xe4\x8d\xb4\x37\x1f\x84\xed\x4f\xe9\x62\xfa\xd3\ \x06\xd4\xb8\xd8\x3a\x07\x5d\x9b\xf2\xa6\x2e\xd5\xa0\x20\x01\xde\ \xa0\x69\xc4\xd4\x2e\xc6\x31\x71\xf2\xa2\x5d\xaa\x20\xb1\xe2\x33\ \x5f\x70\x2c\xbe\xd5\xa4\xb1\xa0\x52\x49\xb0\x1b\x93\x47\x1d\x9a\ \xc5\x48\x61\xd4\x1a\x4e\x25\x4b\x61\xca\xdf\x42\xcb\x7f\xad\x48\ \xc3\xc6\x8f\x65\x2c\x17\x9a\xdf\x46\xa5\x91\xe6\x2e\xf7\x43\xa6\ \xc0\xf6\xbe\xff\x00\xef\xb5\x1e\x45\xb6\xda\xf5\xe7\x5d\x1f\xa6\ \xf6\xde\x8a\x94\x05\x8d\x43\x66\xd4\x9e\xf4\x43\x7a\x16\x34\x4a\ \x74\xd6\xa4\x9a\xea\xeb\x8a\x1c\xc2\x94\xe9\x54\xb2\x15\x07\x5e\ \x55\xc0\xb1\x17\x68\xf5\xff\x00\x58\xa1\x2c\x7a\xd4\x66\xd6\x84\ \x98\x9d\x1e\xfb\x02\x0e\xa0\x9d\xa8\xb3\x0b\x79\x6c\xdd\xf6\x1f\ \x5f\xe2\x80\xb2\x8f\x31\x03\xdf\x2d\xeb\xb3\x12\x6e\xdf\x2e\xd5\ \x21\x9b\x11\xad\xdf\xb5\xac\xbf\xef\xde\xf4\x2e\xe6\xfe\x60\x2d\ \xd6\xf5\xd7\xbd\x0b\x79\xc6\x50\x7d\xcf\x4a\x92\x6f\xad\x03\xa8\ \xfb\x44\x72\x58\x5c\xdd\x4f\x7d\x28\xc0\x00\x58\x72\xa8\x27\xfe\ \x2a\x34\xe8\xa4\x9a\xaa\x75\xaa\x40\xa3\xcb\x50\xc2\xc6\xa4\x5c\ \xc8\xcd\x19\x55\x60\xb9\xb4\x24\xf4\xa4\xc7\x87\x85\x37\x5c\xe7\ \xab\x6d\x56\x0d\x09\xd2\x8b\x09\x5e\x16\x49\x43\xc4\xaa\x0d\xac\ \xcb\x7b\x5c\x51\x33\x0c\xc0\x15\x74\x27\x6b\xda\xc7\xe6\x2a\x49\ \xa8\x60\x0a\x95\x61\x70\x68\x2a\x7c\x4f\x04\x66\x63\x34\x63\xcd\ \x6f\x32\xdb\x53\x59\x2a\xf3\xe1\xa5\x25\x4b\x46\xdb\x11\xd2\xb7\ \x46\x60\xc6\x27\x60\x40\x17\x43\x6d\xfb\x52\x78\x94\x69\x36\x19\ \xdd\x96\xef\x18\xba\xd8\x7a\x8f\x4a\xc7\x2e\x3b\xdc\x32\xa8\xcb\ \x8e\x57\x87\xc1\xb8\x49\xd8\x02\x75\xdc\x7f\x35\x9d\x38\x2a\x6c\ \x45\x88\xe5\x59\xf8\xa9\x1d\xe5\x69\x09\xb3\x5f\x97\x2a\xbd\x04\ \x87\x11\x82\x59\x08\xf3\x29\xc8\xdd\xfa\x57\x1f\xd7\xe9\xbc\xc1\ \x61\x20\x32\xbd\xce\x8a\x37\x35\x7c\xb9\x06\xc0\x0c\xbb\x65\x23\ \x4a\xe5\x8c\x43\x08\x8c\x6f\xbb\x77\x34\x27\x7a\xde\x63\x2c\xdf\ \xf1\x07\x0e\xcf\x3a\xe2\xa2\x94\x45\x1e\x50\xa7\xa8\xf6\xa6\x70\ \x22\x82\x39\xa1\x8c\x10\xa1\x6f\x73\xbb\x1b\xef\x57\x27\x8f\xc6\ \xc2\xcb\x0d\xae\x4a\xdd\x7d\xc5\x65\xf0\x79\x44\x38\xd0\x1b\x69\ \x01\x43\xaf\x5a\xc5\x92\x72\xd3\xf1\xa2\x48\xca\x54\x8b\xa9\xd0\ \x8a\x50\x83\x0a\x3f\xe4\x9f\xfb\xcd\x36\x45\x2a\xc5\x48\xb5\x42\ \x0b\xb0\x1d\x6b\x55\x17\x88\xfb\x98\x0c\xb0\xb3\x26\x52\x01\x52\ \xd7\x06\x81\x31\x98\x72\x2e\xca\xea\x7a\x0d\x41\xa1\xc5\xbb\xcf\ \x29\xc3\xc2\x9a\x29\xd7\xa9\x34\x71\x61\x22\x44\xfb\xe0\x5d\x8f\ \x20\x6c\x05\x1d\xef\x49\x59\xd9\xf1\x78\xbf\x28\xb6\x6d\x85\xf6\ \x14\xd9\x60\x6c\x32\x89\x92\x4b\xd8\xd8\xe9\x6a\x60\xc3\x45\x71\ \xe1\x33\xc6\xc0\xe8\x77\xae\xc7\x44\xde\x5f\x1b\x13\x7e\x8b\x60\ \x09\xa3\x3e\xa3\xa1\x94\x4d\x00\x93\x2e\x53\x7b\x1a\x9b\xda\xa8\ \xe0\x38\xa6\x0f\x33\x61\x56\x17\x36\x37\x52\xc6\xc4\x9a\x62\xf1\ \x34\xcc\x73\x61\x11\x11\x7d\x44\xb1\xbd\x33\x94\xfe\xac\x5a\x9a\ \xcb\x87\x33\x92\x57\xc2\x20\x83\xfb\x55\x4c\x64\xad\x24\xd7\x61\ \x6b\x01\xa7\x4a\xa9\x8d\xe3\x4d\x89\x4f\x0f\x09\x04\x6a\x11\xae\ \xaa\xe7\xd5\xdf\x5e\x74\x2f\xc5\x1d\x90\xc9\x16\x1a\x1c\xc3\xd6\ \x18\x6a\xa7\xb8\xac\xde\x70\xc9\x56\x2a\x41\xe5\x49\xc0\x71\x11\ \x89\xc4\x24\x32\xe1\xa3\x05\xcd\x8b\x2e\x96\xf9\x53\xf2\x9f\x10\ \xa2\x82\x4d\xed\xa5\x32\xcb\xe2\x12\xd1\xa8\xa7\xc1\x83\x00\x03\ \x33\x5b\xfa\x56\xad\x45\x1e\x1d\x76\x88\x1f\xf5\x1b\xd3\x38\x8d\ \x51\x14\x68\x8c\xc2\xe0\x6d\xb9\xab\x86\x08\x1e\xf6\x4c\xa6\xc4\ \xe8\x74\xdb\xa5\x67\x62\xa2\xc5\x62\x2f\xe1\x36\x74\x1b\x22\xe9\ \x6f\x95\x36\x62\xd5\xec\x3c\xb1\x4a\xf3\x0c\xa1\x4b\x1b\xc7\xdb\ \xda\xa8\xc6\xcd\x98\xa9\xdc\x1a\xb3\xe2\x69\x1e\x1c\xc5\x95\xa2\ \x6d\x5c\x0e\x55\x5d\x47\x9d\x18\x1b\xe6\x4b\x93\xd6\x8a\xa0\xc5\ \x10\xa8\x5a\x9a\x88\xb4\xb5\xed\x52\x37\xb6\x95\x0a\x68\x59\x19\ \xd8\xb0\xd8\x9d\x29\x64\x65\x14\x9b\x9b\xd7\x01\xc8\x0a\x88\x83\ \xa9\xf3\x03\x6f\xd2\x8c\x6a\x34\x37\xa5\x04\xae\xc3\xa9\xa2\x16\ \x45\xcf\x6d\x07\xa4\x75\x3d\x05\x43\x0b\x2e\x7b\x85\x09\xa9\x27\ \xa5\x70\x60\xe0\x4a\xc4\xa9\x22\xc8\xbf\x84\x75\xf7\x35\x27\x22\ \xf8\x51\xe5\x24\x66\x26\xec\x7b\xd7\x66\x3c\x87\xd6\xac\x43\x84\ \x77\x50\xc6\xc8\xa7\x9b\x6e\x69\xc9\x84\x81\x46\xa5\x98\xfd\x29\ \xca\xb5\x48\x13\xf8\x4f\xca\xb9\x58\xb3\x10\x45\xb4\xab\xb2\x61\ \x52\xc4\xc6\xc4\x11\xc8\xd5\x2d\x4c\x9a\x82\x32\xe8\x6f\x56\x25\ \xae\x1f\x29\x56\x31\x9d\x9b\x6f\x7a\xbd\x01\xba\xeb\x58\xf9\xd8\ \x3f\x90\x6c\x77\xad\xa5\xb1\x01\x80\xd0\x80\x45\xab\x5c\x45\x31\ \x05\xcd\xaa\xb9\x97\x2e\x3d\xa6\xb1\x2b\x9a\xd7\xb7\x2a\xb5\x0f\ \xa8\x77\xa1\x89\x8a\xc0\x97\x50\x57\x28\xfe\xf5\xb0\x31\x22\x3b\ \xaa\x23\x06\xbf\x98\xf6\x03\x5f\xd6\x8c\x6b\xf3\xaa\x39\xbe\xcf\ \x8b\xce\x05\xc1\x1b\x7b\xd5\xd6\x60\xa0\x1e\xa0\x10\x29\x94\x25\ \x5a\xea\x3d\xa8\xae\x6d\xbd\x2d\x76\xb7\x4d\x28\x81\xa4\x26\x88\ \x11\x6a\x1b\xd0\x96\xb5\x48\x4c\x45\x09\x34\x2c\xff\x00\x2a\x0c\ \xe3\x6b\x8f\xad\x1a\x70\xcb\xf7\xae\x2c\x05\x29\x9a\xc3\x5a\x12\ \xe4\xec\x3e\xb4\x69\xc1\xca\xcd\x75\x03\xad\xea\x73\x6b\x4b\x5d\ \xfa\x93\xce\x88\x54\x86\x4f\x97\xb5\xf5\x34\xd4\x17\x00\x2e\xdc\ \xad\x42\x8a\x58\x58\x0b\xde\x80\x2c\xda\xc5\x19\xd7\x62\xdf\x86\ \x90\x99\xa7\x0a\x08\x89\x73\x11\xbb\x72\x14\x58\x24\x60\x8d\x2c\ \x9e\xb9\x3f\x4a\x88\xb0\x8c\x8b\xe6\x90\x38\xbd\xec\x05\x81\xf7\ \xa6\xc6\x7c\xbb\x9b\x8a\x64\xbb\xda\x15\x03\xef\xbe\xd4\x67\x6a\ \x5c\x84\x09\x3c\xc7\x4b\x5c\x55\x40\x49\xb8\xb8\x04\xd0\x33\x5d\ \x8a\xda\xdf\x3a\xe9\x65\xb9\xb2\x7d\x6b\x88\x0a\x2c\x3e\x66\x83\ \x11\x41\x23\x85\x5b\xd4\xbb\x59\x49\xe9\x55\xee\xce\xf7\x35\x9b\ \x49\x81\x6e\xa4\x1d\x58\x8b\xdf\xa1\xaa\x78\xec\x40\x66\x40\x9b\ \x2f\xab\xdf\x9d\x5b\x53\xf7\x83\xde\xb2\xb1\x0d\x7c\x64\xeb\x71\ \x96\xf9\x94\x74\xbe\xf5\x9e\x57\xa3\x18\xdc\x6a\x1f\x07\x18\xf6\ \x5b\x23\x1b\xaf\x71\x45\xfe\x1c\x90\x0e\x21\xe1\xc8\x7e\xed\x81\ \x2c\x3a\x5b\x9d\x5e\xc5\xc2\xb8\xb8\x7c\x22\x40\x75\xf4\x13\xfa\ \x56\x56\x0d\x5a\x0e\x20\x61\x95\x4a\xb3\x02\xba\xf2\xbd\x70\xb3\ \x39\x6b\x7f\x1e\x8a\x60\x44\x87\x36\xf4\xa3\xbd\x55\xc1\xe3\x8a\ \x0f\x03\x11\x72\xb7\xd1\x8e\xeb\x57\x19\x48\x20\x8d\x41\xd8\x8e\ \x75\xd3\x75\x90\x83\x95\x83\x0e\x55\x9d\xc5\xb0\x6c\x92\x36\x22\ \x11\x78\x98\xdf\x4f\x84\xd6\x8b\x29\x1a\x10\x45\x72\x12\xbb\x73\ \xde\xfc\xe8\xb3\x54\xac\xfc\x16\x39\x72\x88\xb1\x37\x2a\x36\x7e\ \x62\xad\x23\xc0\xd6\x29\x89\x8c\xdf\x5d\x4d\x88\xa8\xc4\x61\x30\ \xb3\xfa\x94\xc4\xdd\x50\x68\x7e\x55\x56\x4e\x16\x6f\xf7\x58\x88\ \xdb\xb3\x79\x68\xff\x00\x28\x57\xd7\xcc\x09\x59\xa2\xb7\x36\x0c\ \x29\x12\x62\xb0\x48\x4e\x69\xcb\x11\xc9\x53\x7f\x9d\x51\x7e\x1d\ \x8b\x52\x09\x8b\x32\xdf\x52\xa6\xf5\x57\x1c\x78\x96\x1f\x10\x50\ \x61\x7e\xef\xe1\x1e\x1d\xc5\xa8\xbc\xac\xf8\xa4\x5d\xc4\x71\x57\ \x23\x26\x1a\x31\x10\x23\x56\xdd\xbe\xb5\x51\xdd\x84\xb9\x14\xe7\ \xc4\xb0\xcc\x4b\x1d\x10\x75\x34\x98\xb1\x2c\x49\x69\xf0\x91\x8c\ \xbb\xe5\x26\xff\x00\x41\x54\x31\x3c\x59\xa2\xe2\x06\x58\xf0\xec\ \x88\xde\xa2\x41\x0c\x47\x6e\x95\xca\xf2\xfb\x6b\x58\xb1\x89\xc2\ \xa6\x1d\xd5\xdf\x10\xac\xc4\xde\xda\xaf\xf2\x68\x31\xf8\xb9\x31\ \x01\x54\xbe\x60\xa3\x5b\x0b\x02\x7a\xda\x93\x2a\xf8\x89\xe3\xc4\ \xe6\x44\x6d\xcf\x31\xef\x4a\xbd\x62\xdf\xe1\xc1\x03\x56\xa3\x2e\ \x71\x38\x42\xba\xc9\x21\x2a\x6d\xbb\x27\x7a\xa8\x0d\x6d\xff\x00\ \x87\x11\x15\xd3\x13\x3a\x80\x21\xd1\x6f\xbe\xa6\xf4\xf1\x9b\x55\ \xab\x5c\x23\x87\x36\x1f\x33\x31\xb4\x8c\x37\xe4\x83\xf9\xad\x18\ \x55\x21\x5c\xb1\xdf\xbb\x1d\xcd\x40\x91\x65\x17\x8e\x55\x23\xa5\ \xec\x6a\x76\xd2\xbd\x32\x49\xe3\x14\x60\xd1\x03\x4b\x06\x8d\x01\ \x63\x60\x09\x34\x83\x22\x60\x1a\xe7\x60\x09\x3e\xd5\xd8\x13\x93\ \x04\xad\xac\x62\xec\xcd\xd6\xdc\xa9\x32\x9c\xc5\x70\xe8\x41\x67\ \x20\xc9\x6d\x40\x14\xeb\xac\x85\x93\x65\x71\x94\x76\x1c\xa9\x4a\ \x98\xb9\xd2\x46\x00\x2a\xbe\x5d\xd9\x86\xff\x00\x2a\x59\x66\x73\ \x76\x37\xa5\xa0\x14\xc1\x58\x68\x42\xa4\x50\xd7\x7c\x27\xda\xa4\ \x33\xf8\x79\x9e\x42\x8f\x9d\x00\xd0\xd8\x68\x28\x97\x6a\x60\xa2\ \xe7\x50\x45\xcf\x7a\xea\x95\x3e\x60\x06\xa7\x90\x1b\xd2\x02\xaa\ \xb2\xe2\x0c\x24\xb3\xac\x76\x39\x07\xc4\xd5\xa1\x87\xc3\xa4\x07\ \xc5\x94\x03\x21\xe5\xc9\x6a\xbc\x90\x7d\x90\x7d\xa8\x00\x25\x63\ \x62\x06\xb9\x68\xf0\xb3\x4f\x89\x3e\x75\x40\xa3\x98\x16\xb5\x33\ \xaa\xaa\xcb\x48\xa4\xdc\xb1\xd7\x99\x15\xc4\x81\xb9\x1f\x5a\x51\ \x56\x67\x0a\x4d\xc0\xfc\xaa\x7c\x21\x9a\xf7\xb0\xe9\x4b\x26\xd5\ \x7c\x72\x82\x4c\x80\x00\x6d\xaf\x7a\x70\x04\x68\x18\xfc\xea\x55\ \x41\x3e\x7d\x6f\xa1\x1d\xaa\x4c\xf1\x7a\xd2\xe1\x6d\x9b\x0c\xc2\ \xf7\x28\x74\xf6\xac\xe9\x30\xec\x98\x96\x41\x7c\xbc\xb5\xb5\xe9\ \xd8\x1c\xd0\xe2\x75\x07\x2b\x0b\x1a\xb8\xf5\x5a\xad\x50\xc5\x41\ \x3d\x05\xc5\x14\x63\x2d\xd0\xdb\xf1\x0f\xdc\x7d\x7f\x5a\x50\x0f\ \x7c\xad\x6b\x5f\x53\x45\x24\x81\x02\x3b\x1b\x0c\xc5\x49\xec\x45\ \x74\x64\xae\x27\x1d\xd2\x36\x52\x6f\xaa\xfc\xea\xc3\x00\xa7\x28\ \xdc\x00\x09\xf9\x50\x0c\xb3\x48\x1a\xf7\x8e\x3d\x8f\x26\x34\x4e\ \x75\x26\xa4\x90\x6d\x5c\x1a\x80\x1a\xea\x92\x58\x96\xbd\xc9\x02\ \xfb\x50\xb5\xed\xeb\x6f\xad\x40\x3e\x51\xdc\x57\x1a\x90\x6c\x4f\ \xa8\xde\xd5\x24\x0e\x82\xba\xf5\x0c\x68\x48\x20\x03\xa5\x75\xea\ \x2a\x54\x5c\xda\x84\x25\x37\x15\x18\xcc\x4a\xe1\x80\x45\x01\xe5\ \x22\xf6\x3b\x20\xea\x6b\x95\xd4\x11\x93\xef\x09\x3c\x81\xb0\xf9\ \xd6\x5c\xce\xcf\x33\xb3\x1b\xb3\x31\x2c\x7a\x9a\xad\xc8\xa2\xcb\ \x62\xf1\x32\x8b\x3e\x25\xb2\xfe\x18\xd7\x2d\xe8\xb0\xb8\x89\x62\ \x23\xc3\x62\x00\x37\xb7\x5a\xab\x1d\x59\xc1\x46\x65\x9d\x63\x51\ \xab\x1b\x51\xde\x9a\xdd\x27\xee\xc3\x81\xba\x83\x6a\x15\x4d\x2f\ \x7d\x4e\xa6\x9c\x40\xd8\x6c\x05\x85\x01\x16\x3a\x6d\xd2\xbb\xb0\ \x5b\xf9\x54\x9b\x6c\x2f\x4b\x68\xc1\xf5\x6a\x7a\xd3\x24\x04\xe8\ \x4e\x9d\x05\x41\xd3\x5a\x2a\x21\xa2\x50\x41\x51\xa8\xeb\x40\xf9\ \xb7\x16\x14\xe6\xa5\x3d\x66\x98\x53\x82\x7d\x76\xf6\x14\x04\xd3\ \x1c\xd2\x98\xd6\x69\x46\x62\x1a\xfd\x2b\x37\x8a\x2f\x83\x2f\x8e\ \x6f\xb8\x52\x79\x32\x9a\xd0\xaa\xdc\x4d\x5a\x54\x11\x78\x25\xd2\ \xd7\x24\x75\xac\x5f\x0c\x50\x93\x46\x20\x6d\x43\x3c\x29\x8c\x8c\ \x24\xa1\x83\x29\xf2\xc8\xa3\x51\xef\x44\xe2\x64\x16\x43\x13\x90\ \x2c\x33\x8b\x11\x55\x27\x4e\x22\xe4\xdc\x48\x47\xf4\x9f\xe2\xb9\ \xd6\x88\xc4\x1c\x46\x1d\x8a\xe2\x62\xf1\x50\x68\x24\x1b\xfd\x69\ \xf8\x3e\x27\x04\x70\x18\xb3\xba\x03\xb1\x61\x7c\xbf\x3a\x94\xc1\ \xe2\xda\x2f\xbe\x25\x54\xf2\x60\x49\x34\xb1\xc3\xb0\xef\x7f\x0a\ \x44\x27\x98\x91\x8a\x5b\xf5\xac\xf7\x3c\x3d\x35\xb0\xc6\x29\x30\ \xaa\xd1\xe2\x52\x4b\x5e\xe6\xfa\xd7\x1c\x9c\xe4\x4f\xfb\xab\xcf\ \x62\x70\xf8\x9c\x0c\x99\xd6\xe8\x2f\xa3\x2b\xdc\x1f\xca\x8a\x3e\ \x2d\x36\xd8\x80\xb3\x2f\x32\x56\xcd\xf5\xa7\xf7\x3e\x8c\x6e\xbf\ \x87\x6b\xf8\xd1\xe9\xfd\x54\x99\x24\x85\x75\x69\x47\xfd\x3a\xd5\ \x28\x24\xc3\x62\x85\xb0\xf2\x15\x7b\x5f\xc3\x7d\x3f\x3a\x19\x94\ \xa9\xb3\x0b\x11\x4d\xe5\xd2\xc5\xa6\xc5\xc2\x86\xe8\xae\xc7\xbe\ \x82\x82\x6e\x21\x24\xa9\xe1\x95\xca\x84\x58\x8c\xc4\xfe\xb5\x50\ \xd4\x56\x3f\x54\x86\x4c\x34\xa4\xfd\xd6\x3a\xea\x0e\xce\x4a\xda\ \x97\x34\x18\xd4\x5c\xca\xe9\x32\x0d\xf6\x20\x8e\xf7\xa7\x57\x2b\ \x14\x60\x54\xd8\xd1\x90\xeb\x35\x22\x84\xc8\x64\xc3\x01\x0c\x84\ \x1c\xd1\x1f\x44\x9e\xdd\x0d\x56\xc4\xc7\x97\x12\x63\x41\xec\x08\ \xd6\xb6\x71\x18\x13\x8b\x9d\x1a\x01\x95\x9f\x57\xe8\x2b\x51\x70\ \xf8\x68\xe1\x10\x01\xaa\x8b\x09\x40\xd5\x4d\x13\x86\xad\x79\xdc\ \x26\x0f\xc3\x0b\x2e\x24\x58\x9d\x55\x39\x9f\x7a\xbe\xb3\xc4\x8c\ \xa9\x3b\x64\x59\xd0\x59\xc0\xd8\x82\x77\xfa\xd0\x63\xf0\xd2\xe1\ \xe6\xb4\x87\x30\x6d\x43\xfe\x2a\x56\x2b\x0e\xf8\x98\x62\x58\x99\ \x3c\x80\xdf\x33\x58\xd1\xe7\x8b\xd6\xa6\x0b\x08\xe6\x70\xe5\xbc\ \x8b\x66\x0c\xba\xde\xae\x66\x0f\x3b\x2a\x87\x76\xbf\x9b\x28\x00\ \x2f\xcc\xd6\x3f\x0a\x3c\x4f\x02\xa5\x22\x78\x24\x43\xbc\x65\xef\ \x7f\x6a\xd6\xc0\xbc\x72\x42\x23\xb1\x8a\x76\xf3\x34\x64\xdf\xf3\ \xae\xbc\x2f\x4c\xd3\x4a\x91\x6b\x42\xef\xfe\x97\x1a\x7b\xd4\xa3\ \x5e\xe2\x42\x07\xff\x00\xd6\x87\x4f\x99\xe7\x42\x47\x6a\x95\x51\ \x7b\x90\x0d\x6c\x08\xb1\x0b\x95\x55\x54\x74\x51\x52\x80\x93\x43\ \x94\x11\x6d\x7e\xb4\x8c\x6b\x65\xfb\x95\x63\x7f\x8f\xf8\xab\x71\ \x2b\x83\xde\xd4\xc0\x53\x28\x2d\x2a\x29\x23\x66\x3a\xd2\x63\x8c\ \xbf\x94\x31\xa6\xaa\xa0\x3e\x33\x59\xf4\x01\x01\x1c\x86\x99\xab\ \x11\xa3\x4a\x84\x17\x91\x85\xb9\x65\x20\x93\xec\x2b\xac\x4a\x12\ \x30\xb3\xda\xdb\xdc\x54\x09\x5b\x93\x28\xee\x00\x15\xd7\xb9\xb9\ \x37\xfc\xe9\x06\xd9\xef\xe5\x85\x35\xe4\xf2\x58\xd4\x48\xd9\x06\ \x66\xc3\x4e\x07\x5b\x83\x40\xb7\xb0\x06\xa5\x4b\x03\x71\x71\x4a\ \xc0\x7d\xa8\xb7\x97\x0d\x03\xbb\x75\x61\x7a\xbf\xc3\x9a\x35\x16\ \x95\x44\x53\x30\xbd\x8e\xdf\xf9\xa8\xe1\xea\xce\xc5\xdf\xd2\xbc\ \x86\x97\x35\x66\x78\xa3\x9c\x5a\x54\xb9\xea\x34\x35\xa9\x2f\xa2\ \xd0\xca\xab\x88\x21\x33\x5e\x34\xd5\xcf\xe2\x3d\x05\x1a\xe8\x32\ \x8d\x14\x6c\x06\xc2\xb8\x21\x48\xc2\x20\xb2\x8d\xaf\x5d\x66\x3a\ \x11\x61\xce\x96\x51\x1f\xa3\xe7\x44\x05\x48\x15\xd6\xa9\x38\x54\ \xaa\xdc\xf4\x00\x5c\x9e\x82\x88\x21\x22\xf6\xd3\xa9\xaa\xdc\x47\ \x12\x91\x44\x61\x8d\x83\x3b\x8b\x31\x07\xd2\x29\xea\x7a\x99\x7f\ \xe2\x39\xde\x5c\x44\x6f\x1b\x11\x1b\x0c\xaa\x3a\x5a\x91\xc3\xb1\ \x72\xe1\xa5\xf5\x96\x46\xf5\x03\xaf\x3a\x2c\x59\xcf\x85\x0d\x63\ \xf7\x6c\x0f\xd7\x4a\xaa\xbe\xab\x74\xae\x36\xf7\xad\xe3\xd9\x42\ \xe2\x58\x04\x8b\xb7\xed\xca\xa2\x64\x12\xc2\x63\x26\xda\x82\x0d\ \x66\x7f\x87\xb1\x36\xc2\x80\x7f\xe5\xb1\x56\x17\xe4\x79\xd6\xa9\ \xec\x6e\x0e\xc6\xbd\x12\xec\x61\x2b\x65\x01\x57\x45\x5d\xab\x98\ \xde\xa2\xba\x94\xea\xe1\xb8\xae\xae\xa9\x05\x3d\x03\xda\xa1\x88\ \x02\xa2\x43\x96\xe7\x91\xde\x96\x5c\x6f\x63\x6e\xb4\x6a\x13\x35\ \xea\x2f\x43\x7b\xed\xad\x70\xa1\x08\x7f\x73\x40\x5c\xca\xb9\x22\ \x46\x2a\x4d\x99\xf9\x5a\x8b\x42\xac\xa4\x8f\x30\x22\x81\xa6\x8e\ \x1c\x22\xc8\xdb\x81\x60\xbd\xea\x49\xc7\x62\x57\x0d\x0e\x55\x3e\ \x72\x2c\x8b\xd0\x75\xac\xe4\x6b\xeb\x49\x9e\x57\x9a\x63\x23\x9b\ \x93\x4d\x48\xe4\x45\x0c\xc8\xc0\x75\x22\xb1\xfa\xda\xd6\x61\xa9\ \xbd\x6e\x70\x7c\x3f\x81\x17\x88\xe3\xef\x1f\x6e\xc2\xb0\xe1\xb6\ \x71\x7d\xaf\xad\x7a\x53\xea\x1d\x2c\x2d\xf4\xae\x9c\x27\x6c\xf2\ \x30\x1d\x2a\x0d\x4a\x54\x91\x5d\x59\x29\xc5\x03\xfa\x69\xac\x29\ \x6c\x39\x51\x51\x47\x7a\x5c\x83\xa9\x03\xdc\x8a\x29\xdf\xc2\x89\ \xa4\x3c\xb6\xf7\xac\xa4\xbc\xd8\x91\x9c\x17\xcc\x75\xb5\x63\x95\ \x31\x79\xd7\x4b\xdd\x6d\xfe\xa1\x49\x25\x4e\xc7\x37\xfa\x05\xff\ \x00\x3d\xa8\xca\x46\x86\xe9\x1a\x2d\xb9\xda\x85\x89\x3b\x92\x68\ \x20\x21\xef\xea\x11\x8e\xde\x66\xfe\x28\x48\xb1\x37\x79\x1b\xdc\ \x81\xfb\x51\x31\xa0\x63\x59\xa8\xb3\x06\x1b\x35\xfc\x22\x4f\x3b\ \xb5\x42\xbc\x71\xe9\x1a\xe4\xf6\x1a\xd4\xb1\xa0\x26\x82\x23\x3b\ \x6f\xe2\x3d\xfd\xcd\x04\x92\x17\x5b\x00\xbe\xf9\x05\x4e\x9d\x3f\ \x2a\x06\x00\xf2\xb7\xb5\x45\xca\xea\x17\x21\x8a\x36\x5e\x61\x96\ \xa9\x71\x0c\x0c\x0e\x9e\x26\x1f\x07\x11\xfc\x48\x14\xdc\x77\xab\ \x7a\xdb\xad\x40\x24\x1b\x8b\x82\x3a\x51\x64\xa9\x84\xcb\x00\x24\ \x1c\x32\x0e\xb6\xb8\x22\xb4\x70\x03\x0f\x89\x83\x2b\x02\x64\x5d\ \x02\x97\xd6\xdf\x4a\xb3\x89\x86\x1c\x40\x1e\x34\x76\x61\xf1\x2d\ \x81\xaa\x72\xf0\xdb\x31\x31\x62\x00\x3c\x83\x0b\x7e\x75\xcf\xf3\ \x65\x6b\x61\xcd\x86\xc3\x29\xb3\x40\xe0\x8e\xae\x69\x58\x98\x70\ \x91\x2e\x62\x18\x5f\x61\x7b\xd4\x88\xf8\xbc\x63\x2c\x72\x19\x07\ \xf4\xb0\x6b\x50\xcb\x3e\x35\x7c\x98\x8c\x1e\x7d\x39\x2d\xbf\x4a\ \x7a\xfe\x01\x61\xa3\xc2\x4b\x19\x61\x1b\x12\xbb\xdd\xad\x4e\x8d\ \x63\x12\x00\xb0\xc6\xba\xda\xe0\x6b\x55\x63\xe2\x10\x44\x32\x36\ \x19\x96\xfe\xa0\x0d\xa8\xcf\x11\xc1\x5e\xf9\x27\xfa\x8a\xb6\x21\ \xc4\xa0\x33\xce\x45\x99\xd8\x81\xfd\x20\x69\x52\x8a\xcc\xc0\x0d\ \x49\xa0\x18\xec\x26\x63\xe4\x93\x2b\xea\xb7\x61\x6c\xdd\x3b\x5e\ \xaa\x62\xf8\x94\x85\x5a\x28\xa2\x10\x83\xa1\xeb\x46\xc8\x85\xc6\ \xa6\x8d\x82\x40\x87\x31\x8c\x9c\xcd\xcb\xda\xa9\x28\xa1\x07\x5a\ \x35\x3a\x57\x3d\xde\xda\xc4\x93\x6a\xe4\x62\xae\x19\x4d\x88\xd8\ \xd7\x1a\x8e\x75\x44\xdd\xc3\x4d\xf6\x9c\x1a\x4c\x4f\x9c\x79\x5f\ \xdf\xad\x1a\x9a\xce\xe0\xb8\x85\x8e\x46\x86\x56\xb4\x72\x0d\xfa\ \x1e\x46\xb4\x8a\x95\x6b\x1a\xed\xc6\xec\x66\xa5\x9f\xc3\x85\xe5\ \xe6\xa3\x4f\x7a\xce\x04\x93\x73\xa9\x35\x77\x19\xff\x00\xed\xf2\ \x7f\xa9\x6b\x3f\x52\xb6\x1b\xde\xae\x4a\x2c\x46\xaa\x50\xeb\x9a\ \x31\xff\x00\xfd\x0f\xf1\xfa\xd1\x31\x2c\xd7\x63\x44\xe1\xcb\xf9\ \xc5\x8f\x4b\x5a\xd5\x39\x68\x41\x17\xe5\xa5\x4d\x8f\x3b\x9a\x20\ \xbd\x68\x82\xd3\x8b\x42\xa2\x8a\xd4\x40\x57\x01\x48\x5e\xc1\xae\ \x5c\x2a\xdb\xe2\x24\xd3\x00\x3a\xd8\x6b\x6d\x2f\xd6\x87\x00\x73\ \x61\xb2\xde\xe5\x0e\xdd\xa8\xe5\x0c\x19\x55\x05\xdc\xec\xbf\xb9\ \xad\xb2\xab\x84\x5c\x44\xa5\x9b\xc6\x65\x50\x75\x37\xe7\x56\x82\ \xb8\xf8\x8c\xab\xce\xfa\x30\xfe\x68\xa0\x87\xc2\x84\x25\xee\x49\ \xbb\x7b\xd1\xaa\xda\x99\x10\x14\x06\x17\x53\x7b\x6e\x2d\x62\x3d\ \xe8\x71\x32\xc7\x86\x8c\x33\x82\xcc\xde\x95\x15\x60\xda\xe1\xc8\ \xdb\x46\x3d\x8f\xf0\x6a\x97\x1e\x53\x68\x4d\xb4\x00\x8f\xce\xab\ \xd4\x4a\x38\xbc\x44\xb3\xb9\x2c\x48\x5e\x4a\x36\x15\x56\x6b\x86\ \x03\x91\xa6\xb6\xf4\x32\x8c\xc9\xa6\xe0\xd7\x2b\xdb\x63\x2b\x9a\ \x39\x13\x7c\xc8\x6c\x2b\x32\x31\x6a\xd6\xc3\xa4\x84\x24\x99\x18\ \xaf\x33\x6a\xcd\x99\x32\x4c\xeb\xd1\x88\xac\xf2\x89\x77\x80\x37\ \xdf\xc9\x17\xfe\xe2\x7e\x63\x51\x5b\x38\x2c\x46\x82\x29\x2d\x6f\ \x84\xf4\xaf\x3d\xc3\xa4\xf0\xb1\xd1\x49\x6d\x98\x56\xcc\xca\x15\ \xca\x8e\x46\xba\x70\xbd\x0a\xd2\x20\x8f\xe6\xa2\xb3\xe2\x9a\x58\ \xfd\x0e\x40\xe9\x4e\x18\xd9\x00\xf3\x22\x37\xca\xd5\xd3\xf5\x19\ \xc5\xaa\x83\xb5\x57\x18\xdd\x75\x85\x7e\x44\xd7\x1c\x62\x69\xf7\ \x47\xbf\x9a\xad\x8b\x0c\x7d\xe8\x0d\x29\xf1\x84\xe8\xb0\xaf\xd4\ \x9a\x53\xe3\xa4\x07\x41\x18\xed\x96\x8d\x87\x0f\xc8\x3b\xfd\x6a\ \x42\xad\xf6\xaa\x9f\x6c\x97\xf1\xaf\xd0\x51\x2e\x32\x41\xba\xa3\ \x0f\x6a\x36\x2c\x5b\x05\x63\x46\x91\xb4\x54\x17\xf7\xac\x8c\x4c\ \xad\x2c\xcd\x2d\xaf\x7d\xd0\x73\x1d\xbb\xd6\x9a\x62\x20\x91\x1a\ \x39\x03\x28\x75\xb1\xe9\x59\x93\xc4\x62\x90\xad\xee\xa7\xd2\x7a\ \xd6\x79\x18\xb1\xc2\x70\xcb\x2c\xa6\x56\xf3\x46\x9a\xfb\x9e\x95\ \xab\x9f\x30\x2a\xe0\x32\x9f\x84\xed\x59\x3c\x3b\x10\xd0\xc8\xc0\ \x65\xcb\x26\xe0\xec\x4f\x7a\xd5\x4b\x32\x07\x5f\x49\xfc\x8f\x4a\ \xd7\x0f\x05\x51\xc7\x41\xe0\x4a\x0a\xff\x00\x96\xfa\xaf\x6e\xd5\ \xb1\x80\x98\x4f\x83\x47\xbe\xaa\x32\xb5\x52\xc7\x28\x6c\x03\xdf\ \xe1\x21\x85\x07\xf8\x7e\x52\x27\x78\x4e\xce\xb7\x1e\xe2\xb5\x3a\ \xa2\xf8\xd8\x8d\xb5\xb1\xa6\x83\xa5\x57\x06\xfa\xd3\x11\xb4\xae\ \xac\x8d\xe9\x2f\xbd\x30\x9b\xd0\xb6\xba\x54\x95\xf1\x68\x1e\x02\ \xa4\x68\x59\x7f\x5a\x51\x45\x40\x42\x22\xa8\xec\x2a\xcc\x80\x98\ \xd8\x0d\xed\x71\xdf\x9d\x2d\xc0\x3a\x8d\x8e\xa2\xb1\x61\x55\x90\ \x69\x6a\x5b\x69\x56\x1d\x75\xa4\xc8\xa4\x56\x69\x25\xa8\x1f\x4a\ \x61\x14\xb7\x15\x84\x5b\x9d\x68\x68\xce\xf5\x0c\x2a\x32\x80\xef\ \x43\xa5\xe8\x88\xd2\x84\xd4\x50\x68\x6b\x89\xa8\xbd\x1a\x93\x42\ \xdb\x57\x72\xa8\x6b\x05\x2c\xcc\xaa\xa3\x99\x34\x20\x10\x2f\xb5\ \x48\x69\x14\x59\x64\x70\x3b\x35\x46\x68\x7f\xf7\xd0\x7b\xd1\x32\ \x90\x3b\x75\x07\x4a\x93\xbc\x57\x1b\x90\x7d\xd4\x1f\xda\x93\x24\ \x78\x69\x2e\x24\xc3\x47\xee\x83\x29\xa3\x61\xce\x85\xa8\xa6\x14\ \xd8\x4c\x13\x23\x28\x59\x10\x1d\xfc\xc1\x81\xf9\x50\xae\x0b\x09\ \x75\x52\xf2\xca\x3e\x1c\xda\x11\xfd\x34\xeb\x50\xca\xa4\x02\x14\ \x7d\xe3\x8f\x20\xef\xd6\xb3\x90\x99\x19\x48\x85\xa1\x85\x23\xe5\ \xe9\xb9\xa3\xce\x24\x19\x65\x8e\x37\x1d\x0a\x8f\xda\x97\x23\x03\ \x26\xfa\xf3\xf7\xa9\x43\xad\x86\xf5\xa0\xa7\xc5\x70\x89\x08\x59\ \xa1\x2d\xe1\xb9\x37\x07\xe1\x3d\x2a\x90\xad\x4e\x35\x2a\xc7\x85\ \x18\x60\xc0\xbb\x36\x67\x03\x90\xe5\x59\x43\x38\x37\xbe\x9d\xab\ \x9f\x39\x34\xc3\x2d\xa5\x5a\xc3\x71\x0c\x4c\x4a\x13\x30\x74\x02\ \xc1\x5c\x5c\x0a\xa6\xcc\x2e\x32\xde\xe3\xad\x19\x3a\x5f\x29\x17\ \xa2\x74\xbd\x6b\xc5\x8a\x87\x17\x87\x92\x30\x9e\x1c\x85\x7d\x37\ \xd0\xfb\x55\x58\xe3\x66\x6c\x80\x6b\xfa\x52\x38\x79\x61\x89\x89\ \x81\xd4\xb8\xd6\xb5\xf1\x50\x09\x99\xd6\x18\xec\xaa\x7c\xe8\x3e\ \x3d\x34\x1e\xdd\xab\xa4\xff\x00\x28\x3c\x5e\x6c\xad\xe4\x91\x03\ \x0e\xa7\x7a\x54\xd8\x20\x7c\xd0\xb5\xff\x00\xa4\xef\x56\x05\x88\ \x2d\x96\xc6\xe4\x10\x77\x16\xa9\xb7\x3d\x2f\x5d\x71\x86\x6b\x23\ \x23\x65\x60\x41\x1b\x83\x51\x6a\xd2\x9d\x12\x58\xfc\xe8\x73\x5b\ \x46\xb6\xd5\x9f\x30\x68\xc9\x52\x3c\xc3\x4b\x56\x6c\x6a\x22\xa4\ \x0a\x08\xcb\xde\xe7\x5f\x7a\x60\x64\x04\x29\x0e\xcc\x75\x08\xa3\ \x5a\x91\x98\x67\x68\x98\x32\x9b\x66\x60\xbf\xef\xe5\x5a\x3e\x81\ \x68\xc5\xc1\xd7\x37\x36\xee\x6b\x32\xc7\x38\x67\x00\x65\xf4\x20\ \x37\xd7\xa9\xab\x58\x09\xf4\xf0\xa4\x3a\x7c\x24\xf2\xad\x71\xa2\ \xac\x80\x48\xe9\x5d\x62\x07\x5a\x3b\x5b\x43\x5d\x5b\x08\x16\x23\ \x5d\x54\x8b\x1a\x46\x22\x29\xe6\x84\xc2\x02\xb8\x02\xea\xd7\xb1\ \x27\xa5\x3f\x28\xde\xd5\x0c\x0a\xea\x9a\x1d\xed\x45\x4c\x09\x4b\ \x47\x7f\xf8\x69\x49\x1c\x88\xfe\x2b\x94\x87\x85\x64\x00\x8b\xe8\ \x47\x42\x2b\x5f\x88\x61\x9a\x71\xe2\xc1\xfe\x67\xc4\x2f\xbf\x71\ \x54\x57\x0f\x2b\x4c\x10\xc6\x47\x8b\xdb\x98\xfe\x47\xe9\x5c\xef\ \x1c\xad\x4a\xd2\xc2\x1f\x0f\x86\x21\x51\xb4\x45\x88\xeb\xad\x60\ \x71\xa8\xc0\xc5\x78\xaa\x34\x70\x09\xf7\xb5\x7a\x0c\x53\x2a\xe0\ \xce\x5d\xb2\x84\x51\x59\xfc\x6b\x0c\x17\xc2\x4b\x82\x64\x8c\xe5\ \x27\xad\xf4\xfe\x29\xe7\x36\x08\xc4\xad\xd5\x7f\x17\x0f\x14\xa3\ \xe2\x40\x0f\xb8\xac\x47\x5f\x2e\x70\x08\x04\x90\x41\xf8\x4f\x31\ \x5a\x7c\x20\x93\xc3\x98\x1f\x86\x4d\x3e\x95\x8e\x3e\xe3\x55\x61\ \x45\xc8\x02\xa4\xa9\xcb\x7d\x0d\xba\x1b\xd0\x48\xc5\x30\xee\xe3\ \x70\x2c\x3e\x75\x21\x12\x28\xe3\x91\x17\xd3\x6c\xdf\xd4\x0d\x6c\ \x3a\xb9\xb4\x15\x2c\x32\xb1\x1d\x2a\x18\x12\x45\xad\x61\xca\xf5\ \x00\x15\x36\xd7\x5a\x19\x0a\xc7\x11\x76\x07\x28\x36\xd0\x53\x09\ \x6c\xd9\x42\xeb\xef\x43\x32\x13\x86\x93\x31\xbf\x97\x6b\x54\x41\ \x19\x49\x14\xb4\x6c\x0d\xb7\x16\xd4\x57\x65\xe9\x4a\xc1\xe1\xa4\ \xc8\x25\x49\x42\x13\xe9\x16\xde\xac\x44\xfe\x20\x60\xcb\x96\x44\ \xf5\x2f\xef\x44\xff\x00\xa8\x20\x75\x15\x24\x02\x2c\x45\xc5\x16\ \x95\x1f\x5a\x51\x7f\x67\x66\x04\xa0\xcc\x2d\xa8\x1b\xd1\xe0\xb1\ \x72\xe1\x9f\x2c\x77\x65\xb8\xcf\x13\x7c\x5e\xdd\x0d\x1c\x32\x34\ \x52\x07\x4d\xc5\x5c\x9e\x1c\x3e\x2e\x21\x29\x05\x5b\x9b\x2f\x2f\ \x7a\xa4\xfe\x2d\x51\xe2\x1c\x60\x3e\x58\x63\x8c\x04\x27\xef\x05\ \x8d\xea\xd7\x03\x8f\x36\x29\x67\x43\x78\xd0\x5e\xff\x00\xb5\x4a\ \x70\x9c\x37\xda\x04\xcd\x3b\x16\x03\x5f\x2e\xe7\xad\x5c\x8a\x35\ \x89\x6d\x0e\x97\xd4\x92\x3d\x5e\xe2\xb5\x25\xdd\xa2\xe7\xc5\x85\ \x24\x53\x01\xb8\xa4\x23\x66\x21\x6d\x95\xed\xe9\xeb\xdc\x75\xa3\ \x0d\x63\xa9\xb5\x74\x60\xca\xeb\xd7\x02\x0d\x56\x9b\x14\xd1\x4a\ \xc8\xf1\x03\x6d\x88\x3b\xd5\x6e\x25\x9b\xeb\x42\xe2\xde\x65\x17\ \xe6\x54\x73\xf6\xef\x41\x87\xc4\x47\x30\xb0\xf2\xb7\xe1\x3c\xe8\ \xf3\x6b\x56\xea\x29\x80\x6f\x4d\xc8\x3b\x11\x48\x11\xda\xf9\x97\ \xe7\x56\x25\xba\x13\x2c\x6a\x48\xf8\xd0\x7e\xa2\xa1\xca\x90\x19\ \x48\x65\x3b\x11\xce\x8b\x0c\x54\x91\x2d\xb5\x2d\x94\xf2\xb5\x5a\ \x75\x06\x94\xc9\x58\xb0\xab\x32\x91\xc8\x7c\x8d\x03\xe6\x03\xd2\ \x6a\xc3\x2d\xa8\x6d\x59\x4a\xb9\x81\xed\x42\xe5\x6d\xbd\x14\xb1\ \x95\x6b\x5b\x4a\xe0\x05\xb6\x15\x34\x43\xb0\x1d\x6a\x01\xb8\xb8\ \xd0\x51\xca\x97\x3a\x69\x4b\x54\x65\x3b\xdc\x56\x6a\x49\x02\xdb\ \x5f\xde\x86\x50\x81\xa2\x76\x00\x05\x72\x09\xe9\x71\x44\x76\xae\ \xd0\x82\xad\xaa\xb0\xb1\x15\x20\xc8\x5b\x35\x9c\x66\x1c\xc1\xd6\ \x80\x8f\x08\xf8\x90\x6a\xa7\xd7\x1f\xf1\x44\x97\xcf\xe0\xbe\xac\ \xa2\xea\xdf\x8c\x54\xae\x8c\x0e\x97\x15\x17\x2b\x24\xa9\x9e\x32\ \x48\xe6\x08\xda\x84\xad\x74\x51\x04\xc4\x4d\x97\x45\x75\x0c\xa0\ \x1e\xf5\x24\x74\x63\x42\x27\x15\x2b\x40\xea\x88\x80\x16\xb7\x9d\ \x85\xc5\x31\x62\x60\xe5\x54\x34\x92\x36\xef\xcc\xfb\x76\xa9\x0c\ \x1a\x3c\xb2\x00\x50\xee\x0d\x54\xe3\x12\xcd\x87\x85\x30\xb8\x7c\ \x59\x8d\x59\x73\x12\x45\xcd\x8d\x17\xae\xd2\xd4\x91\x88\x96\xf3\ \xba\xc6\xbd\xcd\xef\x55\x66\xe2\x49\x1d\xd7\x0a\xa4\x9b\x7a\xdf\ \x97\xb5\x50\x88\xb1\xf2\xac\xcc\xe3\xf0\xcc\x74\x6f\x63\xca\xad\ \xe1\x38\x78\x95\x81\x93\x34\x00\x9d\x15\xac\x4b\x7b\x56\x76\xdf\ \x0a\xb2\xe6\x91\xaf\x62\xce\x4e\xbc\xcd\x5e\xc3\x70\xc9\x99\x33\ \x4a\xcb\x08\x23\x4c\xda\x93\xf2\xab\xf8\x68\xe2\xc3\x8c\x98\x68\ \x80\x6e\x6e\xda\xb7\xf6\xae\x79\x61\x56\x39\xe5\x24\x8d\xca\xae\ \x6b\x7c\xe9\x9c\x27\xd1\xaa\x91\xf0\x60\xe4\x01\x8c\x4b\x9d\x00\ \xc8\x75\xaa\x33\x06\x8e\x46\x8d\xac\x72\x92\x2f\xd6\xb7\xf0\xcd\ \x1e\x51\x88\x0d\x78\xd2\xec\x49\x16\xda\xb1\x1c\x78\xd2\xb1\x03\ \xd6\xd7\x03\xde\x9e\x5c\x64\xf1\x4a\x77\x02\x84\xcb\x8d\x0c\x7d\ \x11\xf9\x9e\xb7\x20\x8c\x04\x90\xa9\xd5\xa4\xd7\xb5\xa9\x38\x5c\ \x32\xe1\x30\x8b\x11\xf5\xb6\xb2\x69\xf9\x55\xc4\x06\xf9\x94\x8b\ \x91\x62\x1b\x66\xe9\xec\x6b\x7c\x78\xe4\xc6\x6d\x42\x92\x54\x16\ \x3e\x66\x25\x9b\xb5\xff\x00\xd8\xa9\x06\x93\x01\xcf\x96\x55\x1e\ \x52\xa3\xf4\xb5\x36\xb4\x04\x0d\x74\xa8\x26\x8f\x21\xb6\x61\xe9\ \x6e\x86\x86\xf5\x20\xd2\x99\xec\x0a\xb1\x07\x71\x52\x4f\xfc\x4b\ \x8d\x8f\x82\xb6\xfa\xd5\xae\x20\x83\xc3\x38\x83\xb2\x0f\x38\xeb\ \x58\xf1\x4e\xff\x00\x6b\x38\x86\x42\x55\xae\x0e\x9a\x5a\xb1\x7a\ \x6a\x2e\x8a\x35\xa1\x4c\xae\x99\xa3\x60\xcb\xfa\x51\x8e\x94\xa6\ \x86\x0a\x6f\x16\x3c\xac\x46\x75\x1a\x77\x14\xda\xce\x81\xcc\x72\ \x87\x07\x63\x5a\x4c\x3c\xda\x6c\x75\x15\xb9\x59\xa9\xa8\x22\xa4\ \x6d\x5c\x69\x45\x95\x2a\x6e\xbf\x4f\xe2\xa6\xe5\xd3\x29\x73\x66\ \xd8\xf4\x3d\x68\x88\xa0\x65\x20\xdd\x34\x3d\x3a\xd4\x95\xe3\x49\ \x65\xc4\x2a\x4a\xbe\x55\x62\x49\xb6\xfa\xd4\x7f\x88\xd4\xb6\x06\ \x39\x47\xc2\xf6\x3d\xaa\xcc\x57\x08\x01\xb8\xae\xc6\x28\x7c\x04\ \x88\xcb\x71\xa1\xac\xe7\x49\x82\xf8\x49\x64\x8f\xed\x09\x18\x39\ \xc7\xde\xa0\xdd\xba\x30\xef\x56\xb0\x91\x78\x18\x35\x8c\x9b\xb3\ \x9c\xe7\xf6\xa6\x66\x21\x81\x5d\x2d\xa5\xab\xac\x02\x15\x1b\x29\ \xba\xff\x00\xa4\xff\x00\xb3\x58\x93\x1a\xd7\x05\x0e\x8c\x8c\x6c\ \x18\x5a\xfd\x2a\xa3\x62\x4c\x70\x18\x0a\xdc\xdb\x2a\x91\xef\x56\ \x74\xcc\x09\xda\xd5\x2e\xb0\xbc\xaa\xcd\x18\x62\x39\xd5\x40\x97\ \x3b\x46\xac\xc1\x41\x65\x04\xde\xa0\x82\x39\xaf\xbd\xa8\x9d\xff\ \x00\x2e\x54\x05\xa9\x4e\x1a\x0b\x0b\xf7\x35\x28\x03\x5d\x18\x68\ \xc2\xc6\x82\xfa\xd7\x4a\xe6\x38\x19\xc6\xe3\x41\xda\xf5\x27\x46\ \x2d\x87\x41\xcc\x5c\x7e\x74\x13\xab\xf8\xab\x88\x8c\xdd\x90\x79\ \xd7\xa8\xa6\x40\x19\xf0\xf1\x04\x17\x25\x2d\xa7\x5a\xb5\x86\xc2\ \x28\x23\xc6\x24\x96\xd3\x28\x36\xb5\xea\xcd\x4a\x6e\x41\x01\x94\ \xdd\x58\x5c\x50\xd5\xfc\x3a\xe1\x9e\x20\x82\x38\x83\x47\x71\x66\ \x3c\xaf\x4a\xc4\xc3\x87\x22\xf0\xc8\xa5\xbf\x00\xd6\x9c\x5a\xab\ \x4d\xc3\xca\x62\x7b\xee\xa7\x42\x3a\xd2\xb5\x04\x82\x2c\x6a\x77\ \x34\x16\x9c\x46\xf1\xa9\x06\xe0\xec\x68\xef\x54\xb8\x7b\xb3\x46\ \x50\x1f\x49\x24\x03\xd2\xad\x8a\xdc\xac\x98\x32\xba\xe5\x71\x71\ \xf9\x8e\xe2\x97\x2c\xb2\xc5\x20\x49\xc9\x92\x36\xd5\x5f\x98\xf7\ \xa2\x5a\x62\x3e\x53\x72\x74\x3a\x1a\x50\xa3\x7f\x28\x2b\xe6\x1e\ \xf5\xd8\x88\xd7\x11\x1f\xf5\x0d\x8f\xec\x6a\xbe\x2c\xf8\x0c\xb3\ \xc4\x72\x82\x6c\x40\xf4\x9a\x6e\x16\x5f\x19\x4b\x65\xca\xcb\xbd\ \xb9\x8a\xb7\xe5\x0a\x48\xae\xd2\x05\x4f\x55\xf4\xab\xe2\x56\x5b\ \x2e\x23\xca\xc7\x66\xf8\x5b\xe7\xd6\x95\x2c\x46\x2c\x40\xc4\x47\ \x72\xb7\xf3\x2d\xef\x6a\x6b\x32\x11\x63\x62\x0e\xd7\xe7\x54\x98\ \x85\x72\x06\x61\xb7\x51\x49\x90\xe4\x6c\xcb\xa2\xc8\x6c\x47\x2c\ \xdd\x6a\x56\x24\x56\xcc\x85\x93\xfd\x26\xd4\xbc\x44\x02\x4d\x4c\ \xd2\x5f\x95\xf5\x15\x5d\x43\x06\xf4\x2f\x42\x09\x03\x5f\x50\x16\ \x36\xd9\xbb\xd4\x92\x0a\xdf\xad\x04\x04\xde\x81\x85\x11\xde\x85\ \xa8\x41\x61\xa5\x25\xc6\xb4\xe6\x34\xa6\x35\x94\x4c\x82\x96\x69\ \xce\x39\x52\xd8\x6b\x53\x40\x61\x42\x45\x19\xa1\xac\xa2\xe7\x42\ \xf1\x66\x53\x69\x22\xd5\x4f\xed\x52\xb9\x65\x8d\x65\x5d\x2f\xbd\ \xb9\x1a\x35\xd1\xae\x39\x52\x9e\x19\x52\x63\x26\x1e\x40\x81\x86\ \xa0\x9d\x8d\x45\xd3\x12\x98\xac\x39\x20\x9c\xca\x41\x15\xd7\x63\ \x7b\x0f\x9d\x32\x30\x14\x16\xbe\x79\x1b\xd4\xe7\xf4\x1d\xa8\x58\ \x00\x2e\x36\xe9\x42\x2c\x29\x1b\xd5\x4f\xf1\x08\x6f\x16\x27\x03\ \xca\x63\x02\xfe\xd5\x7c\xed\x4a\xe2\x31\x78\xbc\x3d\xf6\xcd\x17\ \x98\x1e\xdc\xe8\xb3\xa5\xac\xfe\x0b\x1a\xcb\x8e\x51\x20\xb8\x00\ \x9b\x56\xb3\xbf\x8a\x32\xc9\xe9\xf8\x6d\xf0\xfb\x56\x67\x04\x36\ \xc7\x82\x7f\x09\xfd\x2a\xfa\x99\x5d\xc8\x81\x63\xc8\x86\xc5\x9f\ \x99\xa3\x87\x8a\x8d\x56\x76\x19\x67\x99\x5a\x3f\xe9\xf5\x37\x63\ \x4d\x57\xd3\x2e\x55\xc9\xf8\x6d\xa5\x0a\xa9\x63\x94\x80\xaf\xbe\ \x50\x6e\x1b\xb8\x35\xda\x83\x62\x2d\x5b\x05\x71\x29\x46\x1f\x02\ \xd8\x54\x56\x19\x9a\xe0\xf2\x2a\x75\xa5\xff\x00\x87\xe2\x0d\x88\ \x69\x98\x5d\x62\x17\x00\xf3\x3c\xa9\x9c\x63\xcc\x72\x58\xe9\x11\ \x00\xf2\xba\x9f\xe2\x8f\x81\x9f\xff\x00\x1d\x25\xbf\xf7\x47\xe9\ \x47\xff\x00\x47\xe2\xf0\x39\xef\x7e\x74\xd8\x90\x0f\x88\xe9\xa9\ \xa4\x47\x47\x88\x7c\x98\x29\x9b\x63\x96\xc0\xf7\x35\xb6\x04\xa5\ \x40\x01\x54\x01\xca\xc2\x8a\x92\x9a\x0f\x2e\x9d\xb9\x1a\x60\x61\ \x60\x7a\xd4\x85\x7a\x91\x40\x0d\xe8\x85\x49\xd3\x58\xe0\xe6\x56\ \x1a\x3a\x65\xff\x00\x7f\x4a\xa2\x80\xc5\x12\x46\x0e\xca\x2f\xde\ \xae\x62\xce\x5c\x04\xff\x00\x89\x92\xca\x3b\xd5\x18\x24\x12\xc4\ \xac\xcc\xaa\xca\x2c\xe0\x9b\x5a\xab\xe9\x89\xca\xab\x8b\x81\x96\ \xca\x5e\xf9\x80\xd8\xd3\x4e\xf4\x99\xd1\xe6\x64\x31\xb0\x44\x4d\ \x9c\xf3\xee\x05\x1f\x88\x43\x85\x94\x7a\x8d\x84\x8b\xb1\xf7\xa2\ \x13\x2b\x4f\x0c\xd9\xb0\xc8\xda\x6d\x63\x59\x7b\x1b\x1d\xc5\x5f\ \xe1\xcc\x0e\x19\x97\x9a\x9b\xd6\xb8\xfa\x29\xe4\xd7\x03\x51\x5d\ \x5b\x02\xae\x35\xc2\xba\xa4\x1a\x92\x33\x44\xeb\xd5\x48\xa9\x22\ \xba\x2f\x58\x1d\x74\xa9\x32\x69\x8b\xa8\xf7\x4d\xbd\x8f\xf7\xa8\ \x98\x65\x91\x97\xa1\x22\xa0\xb8\x46\x88\x9d\x03\x12\xa7\xe7\x5c\ \xcb\x98\xe9\x60\x37\xae\xf4\x8b\x57\x35\xd5\x85\xc5\xb7\xa1\x26\ \xf5\x24\x31\xae\xd0\x2b\x33\x1b\x2a\x8b\x9a\x93\x50\x50\x3c\x61\ \x0e\xcc\xd7\x3e\xc0\x5f\xf8\xa8\x82\x19\xe1\x95\xb2\xa1\x60\x79\ \x06\xe7\x57\x70\xf8\x4c\xe8\x7c\x6d\x10\xfc\x36\xd4\xd0\x43\x85\ \x18\x84\x0e\x55\x54\x21\xf2\x5b\x4f\x95\x5b\xc3\xc8\xef\x9d\x25\ \x5b\x3c\x7c\xfa\x8a\x64\xfe\x8b\x5d\x0c\x71\x61\x80\x48\x97\x2c\ \x6f\xb1\x26\xe5\x5b\xdf\xbd\x17\xa5\xae\x46\xa0\xd4\x92\x2c\x41\ \x17\x07\x71\xd6\xa2\xc4\x28\x55\x90\x10\x3f\x1a\xdf\x4e\x97\xde\ \xb6\x19\xb8\xf8\x72\x62\x2c\xb7\x21\xc5\xc5\x0e\x59\xb0\xd2\xab\ \xb2\x15\x23\x51\x71\x57\xd2\x39\x3c\x7f\x1a\x56\x4b\x80\x42\x2a\ \xeb\x6a\x31\x7b\x65\x36\x20\xee\x0e\xd5\x9c\x3a\xcb\xc5\xe2\x13\ \xc4\x0e\xf1\x39\x32\x0b\xf9\x0d\xea\x22\x78\xe5\x04\xc6\x4e\x61\ \xba\xb0\xd4\x53\xf8\xb8\x5c\x2c\xb0\xcf\x1a\xdd\x42\x90\xca\x0e\ \xab\x7a\xcd\x77\x93\x11\x8e\x0f\x87\x52\xad\x6e\x7f\xa9\xac\x5b\ \x94\xc5\xfc\x1b\x14\xc4\xa9\x02\xe0\x9b\x69\x57\xa3\xf1\x33\x9b\ \xdc\x0e\xf5\x47\x0e\x59\x5d\x5a\x50\x8d\x62\x09\x68\xf9\x7c\xab\ \x51\xc7\x98\x90\x41\x5b\xe8\x45\x6f\x88\xa1\x19\xba\x8f\xa5\x12\ \xb6\xe0\x8a\x8a\xe5\xf5\x8f\x7a\xd0\x06\x28\x2c\xa5\x70\xcb\xa1\ \xbd\xd8\x81\xb5\x33\x0f\x14\x31\xae\x58\xc3\x2b\x1d\xc9\x35\x53\ \x0d\x37\x87\x8d\x71\x29\x23\x35\xc1\x35\x70\xd8\xe8\x75\xf6\x34\ \x4f\xea\x10\x72\x0d\x8e\xff\x00\xad\x0e\x89\xa0\x07\xc3\xfa\xe4\ \xfe\xd4\x19\x6e\xc7\x33\x1d\x0e\x95\x20\x10\x74\x66\xa5\x08\xf9\ \x40\x20\xdd\x08\xd0\x8d\xa8\x58\xd0\xc8\x59\x15\x98\x05\x2a\x7d\ \x63\xf7\x15\xce\x6c\x05\x8d\xc1\xd8\xf5\xa9\x21\xbd\x54\x27\x7f\ \x7a\xe6\x3a\x7b\xd0\xb1\x36\xd3\x71\x59\x4e\x34\x2d\x44\x35\x17\ \x1b\x50\xbd\x15\x16\xc7\x7a\x07\xda\x88\xef\x40\xf4\x20\x9a\x17\ \xa2\xa1\x6a\x9a\x03\x0a\x13\x47\x42\x45\x15\x06\xd5\xc4\x03\xa5\ \x49\xd0\x57\x0c\xdd\x85\x08\x20\x11\xa0\xd4\x54\x10\x49\xd6\xd6\ \xa9\x62\x46\xeb\xf4\xa3\x58\x99\x97\x35\xac\xb6\xf5\x1d\x05\x48\ \xa5\x60\xd5\x18\x86\x58\xb0\x92\xbb\x91\xe6\x52\xaa\x0f\x33\x4a\ \xc4\x62\x20\xc3\x7c\x42\x57\xe4\x14\xe9\xf5\xaa\x38\xa9\xe7\xc5\ \x38\x0e\x6f\xaf\x95\x40\xd2\xb3\x79\x61\xc1\xf0\x78\xd9\xf1\x7a\ \x72\x46\xb9\xe9\xa5\x68\xc2\x99\x21\x64\xb5\x8a\xc9\xaf\x7b\xed\ \x43\x81\x80\xe1\x70\xc5\x5a\xde\x24\x9e\xa1\xd0\x53\x88\x62\x33\ \xa2\xe6\x60\x2c\xcb\xf8\x87\xf2\x29\xe3\x32\x2b\x43\xe5\x65\xc8\ \xe2\xeb\x7f\x98\xf6\xa9\x80\x3b\x19\x22\x63\x9a\x48\x9a\xda\x6e\ \x45\x28\xca\x89\xe6\x6c\xe0\x77\x4b\x52\x10\xc9\x89\xc7\xb1\x52\ \x63\xce\x6e\x48\x3b\x0a\xb5\x62\xdf\x12\x2a\x20\x45\x76\xca\xea\ \x49\x23\xaa\xda\xc6\xff\x00\x2d\x7e\x55\x5f\x81\x4e\x23\x99\xb0\ \xf2\x1b\x24\x9a\x7b\x1e\x55\x6e\x18\xa0\x89\x83\x14\xce\x79\xb3\ \x9d\x4d\x63\x71\xbc\x46\x27\x09\xc5\xa5\x82\x19\x59\x62\x43\x74\ \x17\xe5\xca\x8e\x5d\x76\xa7\xf1\xbc\x64\xcb\x70\x07\x9a\xfc\xc6\ \xd4\x67\x58\xd5\x5c\x96\x56\x7b\x9b\x74\x03\x5f\xda\xab\xae\x35\ \x25\x8e\x27\x92\x36\x66\x96\x30\xc0\x82\x2f\xd3\x5f\xa5\x58\x52\ \xe0\x16\x75\xc8\x58\x65\x55\xe6\xa3\xbd\x74\x96\x56\x52\xba\x0a\ \xeb\xdb\x6d\xb9\x8a\x59\x6b\x30\x1c\x88\xa9\x27\x43\x52\xc3\x97\ \xda\x8a\xe1\x53\x33\x9b\x2f\x7a\xab\x2c\xa2\x30\x19\xda\xec\x46\ \x8b\xfc\xd5\x77\x9a\x49\x48\x32\x1d\x46\x80\x0d\x80\xa3\x62\xc3\ \xa6\x99\xa5\x92\xe3\x45\x1b\x0e\x94\x24\x86\x3e\x75\x56\x3d\xc5\ \x2c\x1a\x2b\xd1\xa4\x45\xae\x75\xa0\xc6\x10\x30\x4f\x7e\xa2\xde\ \xf4\x57\x19\x80\xe6\x6a\x9f\x13\xc4\x23\x48\xb0\xa9\x39\x57\x9f\ \x22\x6a\xb7\xa5\x17\x60\x72\xf8\x68\xdd\x8d\xc9\x1a\x9a\xbb\xc2\ \x5b\xef\x99\x09\xf5\x2e\xdd\x4d\x64\xf0\xb7\xf2\x3c\x6c\x74\x1a\ \x8b\x9a\xb9\x0c\x85\x5c\x3a\x5e\xe3\x9e\xd5\xae\x35\x56\xbe\xbc\ \xaa\x6c\x29\x65\x54\xd9\x94\xe8\xc2\xe0\xde\x89\x43\x03\x7c\xd5\ \xd1\x91\x8a\x9a\x81\xa8\xb8\xa9\xa9\x22\xbb\xbd\x71\xae\xa9\x28\ \xf1\x24\xcb\x89\x2d\xc9\xf5\x15\x5d\xd1\x64\x88\xc6\xe6\xc0\xea\ \x0f\x43\x5a\x18\xf4\xcf\x86\xcc\x37\x8f\x5f\x95\x67\xd6\x39\x4e\ \xcc\x20\x26\x36\x26\xf2\xdd\xd5\x76\xd6\xe0\xd3\xc3\x23\xb9\x0a\ \x0a\xb8\xdd\x1b\x7a\xe3\xa8\xf9\xd0\x63\x43\x18\x44\xab\xeb\x8d\ \xb7\xea\x2b\x3e\x11\xda\xf4\xd8\x21\x69\x65\x65\x03\x45\xb2\xdf\ \xa7\x33\xfb\x7d\x2a\x93\x62\xe7\xd1\x44\x4a\x19\xb4\x0d\x6a\xd9\ \xe1\xd1\x78\x58\x04\x51\xab\x90\x4b\x9d\xf5\xa7\x8f\x74\x51\x80\ \xaa\xa1\x14\x59\x57\x6a\xed\x06\x20\x72\x2f\x1f\xd6\xc6\xa4\x82\ \x37\x04\x50\x49\xa6\x2b\x0c\x7b\x91\x5d\x00\x8e\xd4\x35\x26\xd6\ \x24\x9b\x00\x2e\x4f\x4a\xa3\x89\xe2\x45\x5e\xd0\x22\x65\x1f\x13\ \x0b\x93\x45\xb2\x25\xda\xe1\xa9\xb5\x56\xe1\xf8\xdf\xb4\x4a\x21\ \x95\x50\x33\x7a\x59\x45\xb5\xe9\x6a\xb2\x18\x28\x2e\x4d\x82\x82\ \x6f\x54\xb2\xa5\x0e\x34\x7c\x44\x9d\x41\x16\x4b\x58\xf5\x02\x93\ \x1c\x6b\x04\x62\x34\xdc\x80\x59\xb9\x9a\x94\x39\x99\xcb\x5a\xc5\ \x49\x6b\xed\x40\xaf\xe2\x43\x1c\x82\xc7\x32\xeb\x6e\xda\x56\x3e\ \xeb\x46\x43\xa4\xab\xee\x2b\x46\x42\xb0\xe2\x80\xd5\x63\x92\xe0\ \xf4\x06\xa8\x60\x54\x3e\x32\x35\x61\x70\x5a\xaf\xe2\x54\xc9\x87\ \x71\xf1\x0f\x30\xd2\xb5\x3c\x14\x6c\x08\x36\x3c\xab\x85\xb5\x63\ \xb2\x8b\x9a\xa7\x1e\x2e\x61\x95\x06\x56\x3b\x00\x56\xe6\x9b\x8a\ \x13\xb4\x2a\xc5\x95\x90\x1b\xba\xa0\xb5\xbd\xe9\xd0\x08\xf0\xc6\ \x60\x66\x95\xca\x97\x24\x81\x6a\xb6\x00\x3e\x5b\x82\xca\x35\xbe\ \xf5\xce\x41\x20\x8f\x49\x1e\x5f\x6a\x16\x8d\x1e\x65\x94\xb3\x06\ \x51\x6f\x2f\x3a\xb1\x05\x1a\xc4\x8b\x12\x29\x9b\xeb\x41\x89\xb7\ \xa8\x69\x73\xad\x44\x4c\x72\xdb\x29\x20\x73\x15\x21\x5e\xc6\x84\ \x00\xb9\xd1\x76\x04\x38\x16\xd8\x1a\x92\x45\xed\x7d\x68\x26\x57\ \x62\xad\x1b\x5a\x44\xd0\x03\xb3\x0e\x95\x54\x82\x68\x49\xa5\x7d\ \xad\x09\x2a\xf0\xb0\x6b\xec\xa6\x8f\xc4\x87\xf1\x38\xee\xc8\x40\ \x15\x9d\x43\x24\x8b\xb5\xc1\x52\x06\x9d\x08\xff\x00\xcd\x09\x52\ \x76\xd6\x85\xf1\x18\x74\xff\x00\x98\x58\x8e\x40\x68\x7e\x75\x4a\ \x58\xf1\x0e\xc6\x61\xa6\x6d\x40\x07\x51\x55\xa7\x16\xa4\xb2\x30\ \x56\x04\xb3\x6c\xa3\x7a\x16\x23\x36\x42\xa5\x09\xf4\xdc\xdc\x37\ \xce\xab\x0c\x54\x58\x58\x8e\x70\x5e\x56\xe5\x7f\xd6\xb9\x38\x84\ \x33\x44\xe9\x24\x45\x34\x26\xe0\xdc\x0a\xce\xac\x3c\x8b\x1b\x1a\ \x83\x41\x0c\xa1\x80\x49\x18\x6b\xe8\x93\x93\x0a\x36\x04\x0b\xee\ \x3b\x6b\x49\x06\x80\x16\x3b\x28\xb9\xaa\xd8\x7c\x53\xc9\x89\xc9\ \x27\xa1\xcd\x80\xfc\x35\x65\xf2\xb4\x4e\xa4\xd8\x32\x91\x7e\x95\ \x99\x2e\x1e\x78\x4e\x7f\x84\x1f\x50\x3a\x56\x79\x69\x8d\x09\x06\ \x51\xdc\x1a\xe1\x72\x2e\x45\xa9\x31\xe3\x22\x68\xc3\x4a\xcd\x9c\ \x0b\x1b\x0d\xe9\xb0\x49\x2c\xaa\x1d\x63\x8e\x38\xfa\xb6\xa5\xa9\ \xd0\x0c\x7c\xc7\x0d\x84\x56\x50\x0b\xbb\x58\x5f\x5b\x0a\xc9\x96\ \x59\x24\xbe\x77\x2d\x7d\xee\x6b\x5b\x89\x2b\xbe\x04\x93\x87\x8d\ \xb2\x38\xb5\xa4\xeb\xde\xb2\x64\x31\x89\x04\x72\x2b\x42\xcd\xe9\ \xb9\xba\x9f\x9d\x73\xe7\xe9\x85\xac\x2d\x2c\x81\x62\x42\x49\xe5\ \x5b\x38\x2c\x32\x61\x63\x1b\x3c\xbc\xd8\x8d\xbd\xa9\x7c\x16\x33\ \x16\x1e\x49\x34\xcc\x5b\x28\xed\x4f\x7b\x8d\x47\x3a\x78\xcc\xed\ \x54\x9d\xf5\x3a\x9a\x9f\x6a\xe5\x51\x6d\x45\xfb\xd7\x59\xbb\x56\ \xc0\x96\x47\x3e\x5d\x5a\xdc\x9b\x51\x55\xe7\x88\x41\x8f\x8d\x97\ \x28\x0f\x6b\xad\xce\x9d\x45\x3e\x30\x55\xee\x0d\xef\xbf\xf3\x54\ \x4a\x48\xb8\xc0\xa4\x33\x30\x6d\xba\xd1\x4c\x5f\x58\x4a\xcd\x96\ \xf7\x0a\x4d\xcf\x40\x2b\x17\x8d\x83\x8f\xe3\xea\xb1\x82\x04\x81\ \x7e\x55\xa3\xc5\x78\xb6\x0e\x0c\xf0\xa5\xe4\x91\xbf\xcc\x03\x61\ \xda\xaa\xe1\x63\x68\x10\xe2\x26\x00\x62\x27\xd4\x0b\xea\x8a\x6b\ \x3c\xb2\xf4\xa2\xfe\x04\xab\x63\xce\x50\x32\xa4\x64\x2e\x9d\x06\ \xf5\x64\x58\xef\x54\x78\x41\xff\x00\x89\x6f\xfe\x36\xfd\x2a\xe0\ \x35\xae\x3e\x0a\x00\x33\x35\xce\xc3\x6e\xf4\x5e\x55\x46\x76\x1e\ \x55\x17\xb7\x53\x45\x90\xa9\x0a\x75\x3f\xad\x56\xe2\x32\x02\xc2\ \x25\x20\x85\xde\xdc\xcd\x37\xa4\x44\xae\xd2\x39\x66\x37\x26\xb8\ \x54\x0a\x90\x2b\x0d\x0d\x4d\xa9\x80\xd2\x41\xb5\x4e\x6a\x74\x60\ \xb1\x12\x98\x85\x94\x5d\xdc\x59\x47\xef\x54\x1b\x09\x89\x92\x75\ \x41\x13\x0d\x37\x23\x41\x57\xdc\xf9\xe6\x6b\xf9\xae\x32\xf5\x0b\ \x6d\x28\x92\x46\x0b\x94\xb1\xef\xad\x16\x6a\xd0\x88\xca\x20\x45\ \x4d\xb7\x6e\xb4\xf0\x75\xa0\x0d\x44\x0d\x6e\x05\xac\x1e\x27\xc3\ \x19\x1c\x5d\x39\x5b\x71\x5a\x09\x62\xb9\x94\xdd\x7a\xd6\x3a\xd3\ \x60\x95\xe2\x37\x46\x23\xb5\x6a\x51\x8d\x45\xd3\xdb\xf4\xa2\x1b\ \x8a\x46\x1f\x15\x1c\x9a\x3f\x91\xbf\x23\x4e\x22\xde\xd5\xb8\x04\ \x45\xe8\x48\xa2\x5d\xaa\x6d\x7a\x40\x2d\x7d\x0e\xaa\x74\x22\xb3\ \x71\x31\x18\xa5\x2b\xcb\x91\xeb\x5a\x85\x74\xa0\x91\x12\x44\xcb\ \x20\xb8\xe5\xd4\x56\x6c\xd3\x2b\x2f\x99\xed\x52\x85\xaf\x65\xd4\ \x9a\xb8\xd8\x38\x80\xb8\x77\xbd\xf4\xd2\x9d\x1c\x51\x45\xe8\x5d\ \x7f\x11\xde\x8f\xcd\x3a\xa7\x88\x85\xd2\x14\x91\xf5\x60\x79\xfc\ \x34\xcc\x2c\x4e\x22\x25\xdd\x95\x5b\x65\x06\xd7\xa7\xcc\x03\x64\ \x8d\xbe\x23\x98\x8e\xc2\x86\x47\x24\xf7\xab\x02\x02\x5b\x44\x96\ \x45\xf9\xde\x97\x1c\x32\x7d\xa5\x64\x92\x5c\xc1\x75\xbf\x3a\x2c\ \xda\x5c\x9a\x25\x34\xa2\xf8\xab\x95\xc0\x1b\x7f\xcc\x6b\x56\x39\ \x17\xda\xb6\xb1\xe9\xe2\xe0\x1d\x46\xe9\xe7\x15\x8c\x6b\x1c\xfd\ \x31\x38\x42\xcb\x8a\x8d\x94\x90\x43\x8d\x6b\x6b\x88\x9c\xb0\xcd\ \x61\xb9\xcb\xf9\xd6\x18\x62\x08\x23\x71\x5b\x78\xe1\x9f\x08\xc4\ \x10\x6e\xaa\xd7\xbe\xfa\x6b\xf9\xd5\xc7\xca\xaf\xac\xb2\x85\xe0\ \x96\x30\x45\xd9\x0d\xbf\x5f\xda\x87\x0e\x99\x70\x71\x03\xcc\x16\ \x16\xe8\x69\xd1\x30\x52\x58\xe8\xa1\x4d\xc9\xe5\xa5\x09\x37\xca\ \xb6\xb1\x08\x05\xbe\x55\x13\x78\x71\xb6\x36\x22\xd6\xdf\x7a\xd2\ \xbe\x53\x73\xcb\x7a\xc9\x43\x96\x45\x27\x91\xb9\xad\x49\x08\x63\ \x9b\x93\x6b\x5a\xe2\x2a\xa3\xdb\x0d\x8f\x59\x00\x39\x0b\x66\x1e\ \xd5\x61\xb1\x10\xa4\x6c\x43\x86\x26\xf6\x51\xce\xf4\x18\xb4\xcd\ \x11\x1b\x91\xaa\xf5\x15\x45\x2d\x9d\x73\x6d\x7e\x74\x78\x9a\x58\ \x5c\xdf\x64\x8f\x36\xfa\xdb\xda\x8a\xe6\xf6\x16\xbf\x7e\x54\x33\ \x92\x24\xb2\xb5\x94\xed\xd8\x57\x0b\x28\xb0\xf9\xd6\x82\x58\x66\ \xf5\x12\x7d\xb4\xa9\x16\x0b\x61\x43\x9a\xa4\x1b\xd4\x9c\xe7\x63\ \xd0\xd0\xb0\x37\xbd\x49\x60\x7c\xa3\x73\xa5\x11\xb0\x1a\x9b\x7b\ \xd4\x80\x59\xaf\x7d\x01\xeb\x6d\x7e\xb5\x05\xd8\x0f\x33\x5c\x73\ \x07\x51\x52\x59\x3a\x8e\xe7\x61\x49\x9f\x11\x85\x45\x39\xde\x4d\ \xb4\xfb\xb2\x2f\xf3\xa1\x2a\x71\x18\xd5\x66\x53\x10\xb8\x93\x60\ \x39\x1a\x64\xb8\x94\x8a\x20\xcb\xe6\x90\x2d\x89\xbf\x95\x2c\x39\ \x9a\xab\x89\xc6\x99\x2f\x1a\xa6\x44\xe5\x66\xd4\xfc\xeb\x37\x1d\ \x02\x2a\xc7\xe1\x33\x2a\xc8\xd6\x2a\x5a\xff\x00\x3a\xe7\x79\x67\ \x8d\x48\x63\xa9\x99\xcb\xa4\x89\x2b\x1d\xf2\x9b\xd0\xba\xb4\x78\ \x69\x8b\xa9\x19\x93\x28\xb8\xb5\xc9\xa3\xc9\x0c\x0f\x91\x20\x43\ \x94\xd8\xb1\xbd\xcd\x41\x2a\xba\xac\x44\x13\xb1\x72\x5b\xe9\x7a\ \xcb\x48\xe1\xe2\x4c\x3c\x19\x27\x70\x50\x9b\x15\xdc\xa5\xf6\x35\ \x77\xc3\xc4\x61\xe3\xf1\x95\xac\x2f\x6b\x75\xaa\x31\x0f\x10\xbc\ \x6d\x7f\x3a\x9b\x9b\xfc\xe9\xff\x00\xe1\xe9\xc6\x30\x0c\x3c\xcd\ \xe6\x88\x5d\x6e\x7d\x42\xa9\xfc\x15\x78\xd9\x91\x58\x8b\x07\x50\ \x48\xe9\x42\x9e\x47\x22\xe3\x5e\xb4\xd9\x83\x03\x66\x16\x3d\x29\ \x6c\x9d\xf5\xae\x81\x5e\x7c\x28\x7c\x75\x94\x05\x52\xa1\x9b\xb5\ \x58\x36\xb0\x55\x16\x55\x16\x15\x28\xa0\x48\x0d\xcd\xda\x36\xbf\ \xc8\x8b\x7e\xf5\xce\xcb\x04\x46\x69\x6c\x00\xf4\x83\xf1\x1a\x27\ \x49\x5b\x8c\xb8\x8f\x06\x20\xbf\x9a\x43\x98\x8e\xd5\x9b\x2c\x26\ \x60\x98\x7b\xfa\x48\x77\x62\x3d\x3d\x05\x14\xaf\x26\x27\x11\x99\ \xdb\xcc\xc6\xde\xd5\xab\x81\x81\x53\x0e\x31\x0e\xbe\x77\x76\x65\ \x53\xf9\x13\xf2\xae\x7f\xed\x4f\x82\x0a\x23\x88\x26\x97\x3e\x66\ \xb5\x75\xaf\x44\x41\x2d\x73\xa9\x34\x4a\x2d\xef\x5d\x70\x01\x12\ \xc6\xf7\xd3\xa5\x11\x14\x56\xae\xa9\x04\x21\x24\x00\x09\x27\xa5\ \x54\xe3\x73\x5b\x0c\xeb\x86\x65\x33\xc6\x9f\x78\xc3\x9a\xf4\x1e\ \xd5\x67\x1f\x2b\x41\x81\x2c\x9a\x34\x8d\x92\xfd\x05\xab\x37\x05\ \x1f\x8d\x21\x42\x33\x07\xd1\x87\x51\xbf\xec\x07\xce\xb3\xca\xfc\ \x30\x8f\xf0\xde\x03\xc5\xc5\x7d\xa7\x14\xb6\x46\x6f\x28\x27\x57\ \x35\xb4\xf1\x45\x33\xf9\xb0\xeb\x72\x7e\x0d\x0d\x09\xc2\xb7\x88\ \xae\x31\x08\x85\x3d\x2a\xaa\x6c\xbd\xab\xa6\x4c\x63\xbe\x51\x2a\ \x88\xce\xec\xa2\xc2\x8e\x33\xf3\x33\x15\xba\xad\x12\x18\xf8\xa0\ \x8e\x27\x06\xcf\x60\x6a\xe3\x6a\xc7\x2e\xd7\xd2\x97\x1e\x12\x34\ \x90\x3c\x53\xb2\xba\x9b\xdd\xd7\x4f\xca\x98\xd2\xb4\x6c\x7c\x40\ \x8e\x83\x76\x45\xca\x57\xe5\x4c\xe8\x16\x71\x1e\x1e\x0d\x2d\x6f\ \x13\x2d\x87\x61\xfc\xd5\x46\x94\xa6\x2e\x38\x40\x41\x9c\x02\xcc\ \xc2\xfb\xd5\x63\xc4\x30\xb8\x62\x13\x19\x88\x46\x3b\xd9\x63\x24\ \x8d\x7a\xd0\xe3\xf1\xb8\x39\x22\x47\x11\x4a\x1d\x96\xe1\xae\x34\ \x1c\x85\x66\xf2\xff\x00\xad\x62\xfc\x8c\x06\x29\x60\x70\x2e\xe2\ \xea\x42\x80\x54\xf7\xa0\xbd\x67\xe0\xb1\xf8\x48\xdb\x34\x89\x2b\ \x39\xd0\x35\xc6\x95\x64\x62\xb8\x7b\x35\x97\x18\xc2\xfb\x66\x8c\ \x80\x3d\xcd\x13\x94\xa8\xeb\xd7\x5e\x83\x36\x1f\xff\x00\xe7\x61\ \xbf\xef\xfe\xd4\x48\x82\x40\x7c\x19\xe2\x97\x5d\x91\xbf\x9a\x50\ \xc3\x31\x65\xcb\x6c\xc0\x11\xae\xcc\x3a\x54\xab\x44\xf6\x2b\x2a\ \xad\xfe\x16\xdc\x52\xb5\x56\x01\xb4\x20\xd3\x16\x57\x1a\x83\xaf\ \x5b\x6b\xf5\xa8\x05\xf1\x29\x19\xb2\xc3\x23\x0e\x6c\x45\x85\x58\ \x56\x0c\xa1\xd0\x92\xad\xb1\xa5\x09\x5f\xf1\x93\xf3\xa9\x8e\xc0\ \xdd\x0e\x42\x4e\xb6\xd5\x4f\xb8\xa6\x2a\x78\x34\x6a\x69\x2a\x7c\ \xd9\x48\xca\xc7\x61\x7b\x86\xf6\x34\x52\xc8\x21\x8f\x3c\x8a\xc7\ \x5b\x58\x69\x5a\xd0\x70\x37\xab\x38\x4c\x51\x8c\x64\x71\x99\x7d\ \xf5\x15\x4e\x09\x23\x99\x43\x44\xc2\xfc\xd5\x8e\xa2\x9b\x91\xaf\ \xcb\x5e\x57\xa6\x54\xd4\x56\x05\x43\xa1\xba\x9a\x35\x70\x45\x67\ \x60\x24\x29\x88\x08\x76\x6d\x08\xab\xbb\x1b\x8a\xdc\xac\xd8\x63\ \x1d\x28\x76\xa8\x56\xbd\x71\x34\xa0\xb9\x6c\xe0\x1f\x4d\xea\x24\ \x9a\x14\x62\xae\xe7\x30\xdc\x01\x45\x7b\x29\xbf\x4a\xce\xc2\xc6\ \x65\x66\x67\xf3\x2a\xeb\x6e\x67\xde\x8b\x52\xea\x31\x75\x32\x95\ \xb1\x7b\x65\xec\x05\x2d\x8d\xc9\x00\xd4\xa1\x24\x90\x4f\xf6\xa0\ \xcc\x10\x1b\xee\x0d\x15\x25\x88\x28\x00\x3b\xd1\x03\xad\x21\x49\ \xce\x0f\x7a\x60\x27\xa5\x11\x2c\x42\xc2\xfa\xec\x74\x3e\xc6\xb1\ \x31\x89\xe1\x62\x5e\x3f\xc2\x48\xad\x68\xc9\x3e\xe4\xda\xb2\xf8\ \xc3\x2b\x71\x19\x8a\x9b\x8c\xd4\x72\xf0\xf1\xf5\x5e\xf5\x73\x07\ \xc4\x0c\x71\x78\x32\xa0\x74\xd8\x1e\x6a\x2a\x8d\xcd\x1e\x1f\x0f\ \x34\xe6\xd1\xa5\xc7\x53\xb0\xac\x4b\x67\x8d\x55\x9c\xd0\xb3\x08\ \xcb\xe4\xcb\x62\xca\xfa\x66\x27\x61\x7e\x95\x0e\xcc\x65\x21\xd4\ \x8b\xeb\x73\xce\x87\x89\x70\xb7\x91\x51\xc4\xd1\x99\x32\x65\x65\ \x23\x47\xb6\xc2\xfc\xa9\x38\x61\xc4\x70\xa9\x67\xc2\x46\xd1\x74\ \x12\xde\xfe\xd7\xa7\x6e\xf6\x16\x01\xab\xfc\x3e\x6c\xf1\xf8\x2d\ \x6b\xaf\xa3\xbf\x6a\xce\x8f\x11\x85\x90\xd9\xcb\xe1\xdf\xa3\xa9\ \xb5\x19\x93\x0c\x84\x13\x8c\x86\xfc\x80\x7b\x7e\xb6\xad\x4a\x9a\ \xc0\xd8\x82\x37\x06\x96\xf8\x6c\x33\x36\x6c\xac\xb7\x37\x21\x4e\ \x87\xf8\xa4\x47\xc4\xb0\xf2\x58\x11\x63\xd4\x87\xf3\x7b\x1b\x5a\ \x8f\xed\x98\x5b\x5e\xed\xed\x63\x7f\xa5\xab\x5b\x19\xca\x73\xaa\ \x93\xd3\x4b\x6f\x51\xcb\xb8\xa5\x2e\x26\x16\xbd\x96\x40\x06\xec\ \x08\x36\xa1\x97\x13\x02\x59\xbc\x4c\xf7\xdc\x2e\xf5\x6c\x47\x0a\ \x25\x22\x90\xb3\xc6\xe2\xe8\x49\x1c\xef\xb8\xa3\x92\x68\x61\x8b\ \xc4\x95\xec\x0e\xca\x06\xa6\xad\x46\xb1\x5f\x9f\x6a\x8b\x80\x6f\ \xcf\xa9\xac\xe9\xb8\xab\xe6\xfb\x98\xa3\x55\xfe\xa1\x72\x6b\x93\ \x8a\x3d\x8f\x89\x04\x6f\xd2\xde\x5f\xd2\x8f\xd4\x39\x57\xa5\x62\ \xaf\x98\x12\x3b\x8a\x57\x15\x7f\x17\x86\xc8\x49\xb9\x0e\xb9\x6f\ \xb8\xaa\xe7\x89\x86\x5b\x7d\x95\x07\xfd\x66\x93\x8a\x9e\x4c\x51\ \x16\x50\xaa\xa3\xd2\x0e\x9e\xf4\x5e\x53\xe2\x92\xaa\x85\x2c\x40\ \x1b\xdc\x55\x9c\x16\x08\xe2\xe4\x13\xb0\x0b\x1c\x77\x11\xe6\x1a\ \x7b\xf7\xa8\xc2\x44\xcf\x32\xf8\x56\x77\xbe\x83\x5b\x03\xdc\xed\ \x5a\xcf\x00\x8e\x34\x89\x1a\xe2\x35\x03\xdc\xf3\x35\x9e\x3c\x74\ \xda\x4a\x43\x87\x87\x58\xe2\x52\xc3\xe3\x71\x72\x6b\x9a\x42\x56\ \xed\x1a\xb2\x5b\x62\xa2\x89\xa3\x76\xdc\xfd\x68\x5a\x0d\x34\x6a\ \xdb\x2c\xfc\x7e\x13\xec\xee\x31\x10\x8c\xd1\x13\xa8\xfc\x3d\xab\ \x23\xec\xf3\x41\xc4\x55\xa1\x52\x54\xb5\xd5\x80\xe5\x5e\x9d\x15\ \xd4\xda\xde\x52\x3c\xc1\xb6\x34\xac\x46\x02\x27\xb9\x86\x66\x86\ \xff\x00\x0e\xb9\x6b\x1c\xb8\x6f\x8d\x4e\x4c\xd6\xc6\xe2\x61\x93\ \x2a\x38\x65\x04\x80\x18\x66\x00\x51\xe2\x78\xba\x43\x87\x0e\xf8\ \x54\x66\x7f\x48\x0c\x45\xfb\xd5\x96\xe1\x98\x60\xb6\x33\x4a\x48\ \xd6\xe1\x45\xa9\x27\x85\xc5\x36\x30\x93\x3a\xe5\x85\x00\x0a\xea\ \x4d\x8f\x5f\xad\x59\xc9\x6c\x26\x2e\x29\x24\x90\x1c\x40\x82\x38\ \xcb\x9c\xaa\x2e\x58\x58\x55\x77\x79\x31\x58\x90\x65\x62\xd9\x88\ \xf9\x55\xfc\x47\x0f\xf0\xd0\x49\xf6\x88\x88\x26\xcd\xf7\x66\xdd\ \xb4\xe4\x7b\xd4\xe0\x61\xc8\x59\xe0\x88\xc8\xdc\x98\x0d\x17\xeb\ \x46\x5f\x29\xd8\x8c\x06\x10\x78\x4c\xf2\xbe\x53\xb0\x55\xf8\x3f\ \xbd\x59\xb0\x0a\x15\x6f\x65\x16\xd6\x8e\x08\x7c\x28\x8a\x12\x0b\ \x33\x5d\x88\xda\x88\xad\x6a\x4c\x66\xd2\x80\xa9\x02\x8e\xd5\xda\ \x52\xb4\x36\xee\x2a\x00\xd6\x8c\x81\x5c\x05\x43\x55\xb8\xc2\x16\ \xe1\xaa\x40\xf4\x49\x73\xf3\x15\x4b\x84\x3a\xc7\x8c\x57\x7f\x40\ \x23\x31\xb6\xdc\xbf\x5b\x56\x9c\xf2\xc5\x10\x31\x3a\x97\x2e\x2c\ \xca\x0e\xd5\x56\x6e\x1b\x30\xb1\x8c\x2b\x20\x20\xf8\x69\xea\x3d\ \x2f\x59\xb3\xbd\x6a\x78\xb5\x20\x21\xf2\x8d\xaf\xa3\x6e\x0f\xb5\ \x09\x17\xde\xe6\xb3\x44\xb8\xcc\x2c\x8c\x4a\xba\xdc\xea\xac\x34\ \x26\xad\xc5\xc4\x70\xf2\x1f\xbd\x8d\xa3\x3d\x57\x51\xf4\xa6\x72\ \x8b\x0e\x39\x86\xda\xfb\xf2\xae\xd3\x0f\x19\x92\x43\x61\x63\xbf\ \xc5\xda\xa7\xc6\xc3\x88\x5a\x54\xc4\x26\xd6\x01\xae\x0d\xea\xa6\ \x27\xec\xeb\x08\x92\x4c\x6a\x34\xcc\x2e\x11\x8f\x3a\xad\x4a\x32\ \xf0\xfc\x1c\xb3\x45\x23\x46\xf2\x85\x16\x32\x33\xd8\xad\xba\x8e\ \x74\xc9\xdb\x0e\xcf\x98\x60\xa0\x37\x3a\x0c\xa6\xf6\xfa\xd0\x1b\ \xf2\xb1\xf9\xd0\xb6\xe7\xb5\x85\x73\x68\x77\xc3\x5b\x5c\x0e\x1c\ \x7f\xd1\xfd\xe9\x72\x61\xb8\x74\xb7\xfb\xb7\x89\x89\xff\x00\x96\ \xd7\xfc\x8d\x75\x45\x81\x7c\xdd\x3f\x3a\x2e\x22\xcf\x0b\x81\x89\ \x30\xe3\x2d\xa6\x8b\x22\x9b\xfd\x76\xaa\x78\xac\x3e\x27\x07\x20\ \x12\x29\x53\xf0\xb0\x3a\x1f\x63\x5a\x20\xda\x98\xcb\xf6\x9c\x1c\ \xb8\x63\xa9\xca\x5a\x3d\x79\x8f\xf7\xf9\x51\x78\x4f\x8b\x41\xc3\ \x71\x5f\x6b\xc3\xb4\x52\xff\x00\x9b\x1a\xdd\x5b\x9b\x0a\x76\x6a\ \xc4\xc1\x4e\x70\xf8\x94\x94\x7c\x27\x5e\xe2\xb7\x4a\xab\xc2\xb3\ \xc5\xac\x6d\xff\x00\xd7\xb1\xab\x8d\xd8\xab\x81\xa3\x53\x4b\x5d\ \xef\x44\x34\xad\xa3\x95\xc6\x5c\xac\x2e\x0e\xe2\x95\x89\x86\x49\ \x2d\xe1\xc8\xce\xa3\xe1\x66\xd4\x7b\x57\x5e\xa4\x1e\x86\xa1\x83\ \xc1\x26\x1e\x4c\x3e\x52\x80\xc8\xbe\xa1\xb3\x54\x4f\x86\x60\x33\ \xc2\xec\xd6\xd4\x83\xb8\xa2\x46\x25\xc3\x05\xbb\x01\x60\x46\xf5\ \x6f\x0b\x0b\xe6\x0f\x25\xd4\x74\xe7\x5a\x93\x55\xe8\x1c\x17\x14\ \xf9\xb3\x4f\xe6\x45\xd0\x13\xb8\xad\x65\x65\x65\xcc\xac\x18\x1e\ \x62\xb3\xe7\x84\x36\x28\x22\x79\x55\x85\xfb\x0a\x38\xe2\x9e\x07\ \xcd\x13\x09\x07\x30\x39\xfc\xab\x7c\x76\x33\x57\x74\xb5\x0b\xca\ \xaa\xf9\x0c\x8b\x7e\xe3\x6a\x1c\xd7\x50\xc0\x11\x7e\x47\x71\x5d\ \x98\x2c\xb7\x36\x02\x40\x06\x63\xc8\x8e\x47\xde\xb5\xa0\xac\x76\ \x20\x78\x5e\x1a\x4a\xad\x9b\x72\xbc\xa9\x1e\x22\xc4\xaa\x60\x91\ \xb3\x11\x67\xb8\xa9\xe2\x51\xa2\x15\x65\x00\x16\xbd\xc7\x2a\x3e\ \x1c\x88\x22\xf1\x48\x05\xb3\x5b\x5e\x55\x9f\xa5\x6a\x26\x49\x23\ \x0f\x1f\x31\xa8\xe9\x49\x9d\x6f\xa8\x1a\x93\x46\xde\x6f\x32\xd9\ \x5c\x6c\x6d\x6f\x91\xed\x49\xc6\x49\x29\x4f\x0d\x21\x65\x6f\x88\ \x8d\x40\x1d\xa9\xa1\x31\x80\x07\x23\x7a\x23\xf9\xf2\xa4\xe1\x6f\ \xe0\xa5\x81\xf2\x5c\x1f\xf7\xf3\xa6\xa1\x0c\xc4\xd1\x10\xd0\x88\ \xa3\x69\x0e\xbe\x1a\x96\xac\x29\x1b\x33\x96\x3b\x93\x7a\xd6\xe2\ \x72\x78\x7c\x39\xb6\xbc\x87\x27\xef\x55\xf8\x54\x28\xb0\xfd\xa1\ \xd4\x16\x63\x65\xbf\x2a\xcf\x2e\xee\x35\x3a\x80\xc1\x60\x4c\x8a\ \x24\x95\xb2\x2d\xf4\x5b\x6a\x6b\x44\x65\x54\x08\x8b\x95\x06\xc2\ \x96\xce\x49\xb9\x35\x19\xe9\x9d\x0b\x74\xc0\xd6\xda\xdf\x31\x43\ \x2a\x89\x2e\xca\xc5\x24\xfc\x43\x9f\xbd\x0e\x6d\x2a\x03\x54\x15\ \xe7\x52\x3c\x93\x46\x3b\x15\x39\x4f\xc8\x8a\x57\x85\x87\xfc\x33\ \x7f\xfe\xe6\xae\xbb\x23\xa6\x57\x19\x87\x6e\x55\x56\x48\x98\x5c\ \xa0\x2c\x3f\x31\x45\x87\x49\x38\x6c\x16\x6c\xc2\x19\x2f\xd7\xc5\ \x34\x66\x34\x90\x91\xe2\xba\x5f\x6b\xd8\x8f\x9d\xa8\x0b\xdb\x90\ \x34\x25\xbb\x0a\x3a\x21\x6f\xb4\x61\x58\x30\x24\x03\xb1\x1b\x1a\ \xbb\x82\xe2\x10\xc8\xbe\x1c\xa1\x22\x70\x3d\x45\x46\x53\x55\xc4\ \xc4\xc7\xe1\xbd\x99\x3a\x1a\x19\x70\x0e\xcb\x9f\x0f\xf7\x8b\xd3\ \x9d\x53\x67\x87\xff\x00\x56\xf1\x73\xc1\x14\x82\x68\xd9\x64\xcc\ \x9a\xaa\x6c\x75\xb5\x67\xcf\x3b\xca\xe5\xdc\xdd\x8d\x48\x56\x55\ \x55\x70\x54\x32\xb2\x6a\x39\xdc\x11\xfb\xd5\x76\x24\x12\x0e\x96\ \xa3\x95\xaa\x41\x86\xa2\x07\xa5\x29\x4e\xb4\x6b\x59\x26\x03\xf9\ \xd5\x84\x8c\xbc\x82\x30\xb9\xb2\x90\x15\x6d\xa3\x36\xe4\x9e\xb6\ \xa4\x44\x06\x60\x5b\xd2\x35\x3e\xd5\xab\xc2\xa3\x29\x84\x18\x89\ \x57\xef\x24\x62\xc9\x71\xa8\x07\x9d\x6f\x8c\xd1\x6a\xd4\x00\xe1\ \xe1\x11\x83\xe6\xb7\x9c\x8e\xbd\x2a\x43\x03\x4b\x1b\xd1\xa0\xd6\ \xba\x30\xe2\x0f\x4a\x13\xa1\xa6\x69\x7d\xea\x1b\x28\xd4\x91\xf2\ \xab\x11\x7a\x54\x15\xa6\x05\x0c\x2e\x2a\x4a\x91\x52\x21\x85\x01\ \x8b\xef\x3c\x48\xd8\x23\x9f\x50\x23\x46\xab\x05\x6f\x49\xc5\x32\ \xc7\x26\x42\xe7\x35\xb5\x55\x17\xb7\xbd\x18\x8a\x92\x39\xe5\x53\ \x13\xa2\xc4\x81\x86\x63\x9a\xf9\xbd\xa9\xb9\x54\x28\x44\x16\x45\ \xd8\x52\x92\x78\x90\xf9\xd2\x40\x4f\x33\x4d\x61\xa5\xc1\xb8\x3b\ \x1e\xb4\x17\x1b\x0a\x12\xdd\xab\xac\xc4\x5e\x84\x9a\x82\x49\xa8\ \x2d\x42\x4d\xe8\x6a\x38\x3c\xc2\x97\x8d\x96\x48\xa0\x46\x89\xca\ \xdd\x88\x36\xe7\x53\x7a\x5e\x30\xd8\x43\x21\x52\xd1\xa1\x39\x87\ \x7a\xaf\x8b\x15\x15\x99\x66\x56\x7b\x8d\x41\xd6\xb4\xa7\xbe\x72\ \x79\x31\xf2\x9e\xb7\xaa\x78\x89\x5b\x1b\x32\xaa\x29\x55\x1f\x11\ \xd6\xde\xf4\x79\x9f\x0a\xaa\x4b\x09\x62\x2d\xb1\x16\x3b\x72\xac\ \xc3\x56\x04\x8f\xcd\xb3\x0e\x8c\x2e\x3f\x3a\x07\xc3\x61\x5d\x73\ \x49\x87\x54\x1b\xdd\x5b\x2d\xff\x00\x9a\x4b\xe3\xa2\x0b\xf7\x71\ \x31\x6f\xeb\x3a\x55\x69\x25\x92\x46\x0e\xe4\x34\x92\x1b\x46\xa7\ \x6f\x7b\x74\xa6\xf2\x8b\x1d\x88\x8b\x0d\xe2\x59\x1e\x45\x54\x37\ \x16\x50\x48\xbe\xd7\xd7\x7a\xab\x26\x0b\x07\x23\x97\x79\xb1\x04\ \x9f\xe9\x5a\x6c\xac\x01\xc8\xa6\xea\x0e\xe7\xe2\x3c\xc9\xa5\xb3\ \xa8\x6c\xa4\xd8\xfe\x95\xce\xb4\xe8\xf0\xef\x31\xb4\x71\x13\xa6\ \xe2\x82\x58\x65\xc3\xf9\x64\x52\xa4\xeb\xad\x6b\xb8\x1a\xa2\x59\ \x63\x4f\xa0\xee\x6b\x3f\x1f\x30\x96\x50\x17\xd0\x82\xcb\x7f\xd6\ \xab\xc7\x04\xaa\xeb\x7d\xcd\x72\xe9\xa7\x4d\xaa\x6b\xbb\xf4\xa0\ \xba\x9d\x82\x36\xc5\xa0\x3b\x31\xca\x7e\x7a\x7e\xf4\xa0\x2f\xd7\ \xe9\x44\xa2\xcd\x71\x7d\x3a\x5b\xf9\xa6\x26\x3e\x21\x04\x78\x99\ \x10\x03\x65\x72\x07\xb5\x3b\x05\x8a\x9f\x0a\xf7\x8a\x4c\xb9\xbe\ \x13\xb1\xad\x2c\x46\x1f\x0b\x8b\x9c\xcd\x2f\x8b\x1b\x9f\x51\x40\ \x0e\x63\xd7\x5a\x98\xb0\xbc\x3e\x16\x0c\xb0\x34\xac\x07\xaa\x56\ \xd3\xe9\x58\x9c\x6c\xa7\x4a\x8b\x8b\x21\xb0\x9b\x08\x84\xfc\x45\ \x09\x1f\x96\xd4\xf4\xc6\xf0\xf7\x5b\xf8\xb2\xc6\x7a\x32\x66\xfd\ \x2a\x5a\x3c\x24\x82\xcf\x83\x8c\x5c\xef\x1d\xd4\xd4\x45\xc1\xe0\ \xc4\x4b\x9b\x0f\x23\x28\x06\xe5\x1f\x6f\x60\x6b\x73\xf4\x0f\x89\ \x23\x98\x06\x86\x65\x65\x3d\x74\x35\x6d\x30\xf8\x44\x8d\x5e\x59\ \x90\xdf\xab\x7f\x15\x9b\x8b\x86\x68\x9f\x2c\x91\x14\x03\x61\x6d\ \x00\xa4\xd3\xb9\xf0\x36\x86\x33\x05\x18\xca\xb3\x10\x07\x25\x8f\ \x7f\x9d\x70\xc7\xe0\xd5\x0c\x85\xa4\xb2\xf3\x22\xb2\xe0\xc3\x4b\ \x2a\x66\x58\xe4\x61\x7b\x79\x56\xac\x37\x09\x92\x58\x8c\x52\xc8\ \x89\x73\x71\xe6\xd4\x7b\x8a\xd6\xf2\xf9\x06\x45\xa8\x31\xf0\x29\ \x2d\x20\x92\xf2\x0b\xdf\xa0\xa7\x47\x8f\xc0\xb7\xfc\xe6\x07\xba\ \x55\x01\xc3\x8c\x91\xae\x7c\x42\x29\x5f\x21\xb0\x3a\xda\xa3\xff\ \x00\x4d\x60\x72\xa6\x22\x33\x61\xbe\xa2\xf5\x4b\xc9\x64\x6c\xa1\ \x59\x17\x34\x52\x2c\x83\xaa\x9b\xd7\x5f\x75\x22\xe0\xee\x0d\x62\ \x9c\x16\x36\x23\x9e\x3f\x31\xe6\x63\x6b\xfd\x69\x90\xf1\x4c\x44\ \x44\x47\x89\x84\x32\xed\x98\x8b\x1f\xad\x3f\xaf\xe8\xc6\x89\x86\ \x03\xae\x43\xa7\xf5\x69\x53\x9e\x35\x5c\xaa\x00\x1d\xa9\x11\x62\ \xb0\xf8\x96\xc8\xb2\x80\xc0\x5e\xcd\xa7\xe7\x4f\x58\xd9\x45\xd5\ \x2e\x3a\x8d\x69\x9f\xf1\x09\x1e\xe3\x45\x35\x21\x9f\x36\x6b\xdb\ \xe7\x4b\xcf\x6a\x8c\xf7\xab\x40\xda\x45\x8a\x47\x32\x12\x16\x42\ \x18\x10\x36\x36\xb5\xa8\x23\x99\x1a\x7b\x05\x74\xcd\xe9\xcd\xb3\ \x51\x26\x76\xf4\x82\x7e\x57\xa5\x62\xe4\x48\x94\xb4\xee\x3b\x28\ \x3a\xdf\x95\x45\x5f\xfc\x44\xf7\x58\xa0\xda\xc3\x31\xf7\x34\xdc\ \x3c\x80\x60\x60\x04\x58\xe4\xe5\xef\x59\x53\x62\xa6\x93\x16\x44\ \x90\xab\x48\x41\x2a\xf9\xb4\xb7\x5a\xd2\x0d\x96\x18\x45\xf3\x11\ \x18\xcd\xde\xb3\x2e\xdb\x4e\x74\x66\x75\xfc\x55\x19\xd6\xfa\x30\ \xa5\xdd\x4d\xed\x6a\x02\x7c\xd6\x14\xea\x58\xcd\x6a\xe7\x63\x94\ \xd8\xda\x96\x49\xa8\x6b\xe5\x34\xa3\x81\xb0\x16\xe9\x50\x5c\x82\ \x08\xde\x96\xad\x71\x53\x98\xdc\x5e\xa4\x99\x60\x8e\x7f\x31\x39\ \x1f\xa8\xd8\xfb\xd5\x3c\x42\x3c\x4d\x66\x5f\xa5\x5d\x06\xa5\xb2\ \xb2\xe5\x71\x99\x7a\x1a\x2c\xd4\xce\x07\x9d\x33\x0f\x88\x78\x5a\ \xe8\x74\xe6\x0e\xd5\x38\xac\x2b\x20\x2f\x11\x2c\xbc\xc7\x31\x55\ \x43\x9b\xd8\xd6\x3c\x6b\xd6\xbc\x58\xb5\x99\x4d\x88\x70\x47\x99\ \x1b\x5f\xa5\xe8\x13\x3d\xf2\xc3\xe1\x15\xfe\xa1\x62\x2b\x2d\x49\ \x49\x33\xa1\xb1\x15\x7b\x01\x8a\x59\x49\x0e\x32\xbf\x23\xc8\xd6\ \xa5\xd6\x71\x63\xec\xf1\x6a\x71\x11\xa3\x06\x3a\xc8\xba\x65\xfe\ \x28\x26\xe1\x8b\x7b\xc3\x25\xbf\xa5\xbf\x9a\xb1\x11\x21\xec\x47\ \xb8\xeb\x54\x9a\x79\x17\x34\x71\xb9\xc8\x09\xb7\xb5\x37\x14\xd0\ \x47\x10\x17\x59\x2c\x56\xfa\x80\x77\xfe\xd5\xae\x1b\x3c\x51\xb5\ \xad\x74\x1a\x74\xac\x85\x37\xad\x4c\x3b\xe7\xc2\xc6\xcb\xf0\x8c\ \xa6\x9e\x22\x9a\xa3\x5a\x25\xb9\x24\x03\x60\x37\x22\x97\x7b\x0a\ \x6c\x43\x2a\x81\x5a\x80\x59\x53\xf0\x0a\x90\x00\xf4\x80\x3d\xab\ \xaa\x6c\x6b\x49\x04\x03\xb8\x07\xdc\x54\x65\x53\xf0\x8f\xa5\x15\ \xab\x97\x46\x07\xa1\xa9\x05\x97\xc3\x06\x46\x19\x02\x8b\xde\xd6\ \xaa\xd8\x51\x6c\x32\xb1\xb8\x67\x62\x49\xe6\x69\x8b\x08\xf1\xe5\ \xf1\x49\x65\x46\xd0\x13\xa5\x11\x60\xcc\x06\x5b\x0e\x5c\xa8\x40\ \x7c\xb2\x0c\xb2\x8c\xc2\xd6\xb9\x1a\x8a\xa4\x9e\x3c\x38\xaf\xb3\ \x29\x04\x16\xb0\xb8\xd3\xde\xae\xb5\x81\xb7\x3e\x82\xab\xe3\xd5\ \xef\x0c\xab\xa1\x0d\x97\xde\xb3\x4c\x1b\x95\x0f\xa6\x5d\x09\x2b\ \x7e\x54\x82\xc4\x9b\x20\xbd\xb7\x35\x62\x45\x01\x99\x40\xd2\xfb\ \x52\x9b\xca\xa4\xa8\x1a\x50\x00\x7a\x8a\x8a\x30\xa0\x0d\x2e\x7b\ \xd0\xb0\x00\x5c\x9d\x2a\x3a\x12\x2b\x90\x90\x74\xf9\xd4\xfb\x6b\ \x50\xdb\x5b\xad\x45\x25\xcb\x02\xa2\xd6\xe7\x61\x6b\xd0\xe2\x23\ \x59\xa1\x11\xb3\xe5\xb3\x5c\x1b\x5e\xa4\xda\xdd\x85\x42\x92\x58\ \x00\x37\xa9\x13\x26\x0b\x0e\xb1\xb4\x9e\x24\x96\x51\xcc\x00\x0d\ \x50\x9c\x5b\x13\xf6\x8f\x13\x33\x0f\x4d\x86\x8b\xf5\xab\x5c\x52\ \x6c\xcf\xe0\xaf\xa5\x37\x23\x99\xaa\x65\xac\x6b\x9d\xcd\xe8\xc0\ \xe7\x62\x7d\x63\xfe\x91\x40\xcc\x11\xb4\xdc\x8d\x6f\x44\xc0\x36\ \xbb\x1e\x44\x0a\xe8\xa1\x69\xb1\x48\xa4\x8b\x31\x02\xb3\x49\xf3\ \x4f\x3c\xa9\x95\xa4\x25\x7f\x08\xa4\x53\x0d\x71\x53\xae\x97\xf9\ \xd3\xa8\xba\x90\x28\x97\x53\x63\xa1\xa2\x0a\x4e\x9c\xea\x40\xb5\ \x10\x5a\x24\x0d\x94\x92\x01\xb1\xd4\x73\xa3\xca\x4a\x82\x96\xf9\ \xd4\x8b\x17\xa9\xa6\x15\xe9\x50\x16\xac\x41\x15\xa9\x87\x4f\x0b\ \x0e\xa9\xf1\x37\x99\xbf\x6a\xa5\x84\x88\x49\x89\x44\xd8\x13\xad\ \x68\xb0\xbb\x93\xca\xf5\xbe\x30\x5a\xe5\x77\xcb\x96\xf7\x1d\x0e\ \xa3\xf3\xa8\x6c\x84\xdd\xa1\x88\x91\xcc\xad\x48\xf6\xae\x22\xf5\ \xa6\x50\x5d\xed\x60\xc4\x0e\x83\x4a\x53\x13\x7a\x32\x2d\x42\xd5\ \x17\x06\x3e\x21\x1f\x0c\x9a\x8e\xcd\xd2\x96\x58\xe7\x35\x33\x06\ \x31\xa2\x25\xb3\x3c\x82\xd7\xed\xad\x74\xa6\xf2\x16\x1d\x68\x42\ \x0c\x46\xa0\xda\x8f\xc5\x63\xeb\xb3\x8f\xea\x17\xa4\x13\x5d\x9a\ \xad\x4e\x97\x0b\x81\x94\xdc\xc1\x90\xf5\x8c\xd8\x0f\x95\x25\x70\ \x53\xc4\x6f\x85\xc7\x01\x6d\x81\x25\x69\xad\x73\xb3\x11\x50\xb9\ \xc1\xd4\x82\x28\xe9\x25\x5f\x8c\xaf\x34\x9b\xd8\x83\x4b\x9b\x1b\ \xc4\xd1\xb2\xb4\x45\x4f\x68\xe9\xd7\xa2\x59\x64\x51\x65\x91\x80\ \xe8\x1a\xac\xff\x00\xa9\x49\xa6\xe2\x73\xe8\x7c\x73\x7d\xbc\xa4\ \x52\x8e\x0f\x1c\xce\x41\x85\xef\xcc\x9a\xd1\x92\x57\x6f\x29\x76\ \x6f\x73\xb5\x43\x3d\x97\x56\x36\x14\x7e\x67\xf4\xea\xb4\x78\x27\ \x45\x47\x9d\xd0\x04\x24\x35\xbc\xc7\x29\xdf\x6d\xaa\xd6\x21\x46\ \x7f\x2e\xd6\xf2\xf7\x1c\xa9\x62\x51\x7d\x14\x91\xb1\xa8\x88\xe4\ \x2f\x16\x62\x46\x50\xe9\x7e\x5d\x45\x33\x27\x81\x39\x0d\xaf\x7b\ \x1a\x94\x52\x0d\xc9\xbd\x0e\x6a\x82\xd7\x39\x41\xf7\xa9\x19\x7a\ \xeb\xd2\x55\x9b\x35\x81\xd0\x75\xa3\x2c\xdf\x87\xe9\x56\xac\x1d\ \xec\x6f\xf5\xae\xbf\x2a\x58\x25\xb4\x0b\xda\x89\x4a\x33\x65\x59\ \x55\x98\x7c\x20\xeb\x56\xa1\x23\xdc\x5e\xf4\x79\xcd\x27\x55\x3b\ \x7b\x8a\x95\x6b\x8a\x75\x1a\x1a\xc6\xe3\x43\x49\xc5\x61\xd2\x62\ \x5d\x3c\xaf\xd3\x91\xa2\x26\xc2\xf5\x19\x88\x3b\x1a\x92\x83\x02\ \xad\x94\x82\x08\xe4\x6b\x81\xf3\x5c\x68\x6a\xf4\xea\xb3\x80\x18\ \x59\x86\xcd\x54\xa5\x56\x8e\x42\xae\xba\x8e\x87\x7a\xc5\x8d\x2e\ \xe0\xb1\x6c\x06\x49\x2e\xc3\x61\xd4\x55\xdc\x19\x5f\xb1\x21\x4c\ \xac\xba\x86\xd3\x9f\x7a\xc5\x8c\xd9\x89\xd7\x5a\xb9\x86\x9d\xe3\ \x7c\xc8\xd6\x63\xa1\xbe\xa1\xbb\x1f\xe6\x99\xc8\x58\xb9\x2e\x16\ \x27\x6c\xc8\xde\x19\x3c\xad\x71\x52\x15\xf0\x6a\x64\x57\x12\x27\ \xc4\xb6\xb5\x0f\xdb\x20\x24\x28\x56\x59\x0f\xfc\xb6\x3f\xa1\xe7\ \x51\x36\x22\x16\x56\x5b\x3d\xd9\x6d\x62\x2b\x5d\x33\xda\xe4\x6c\ \xae\xe0\xc7\x72\xac\x34\xa7\xa5\xf9\x8d\x6a\xa6\x15\x55\xb0\x28\ \x14\x58\xe5\x20\x1e\x60\xd3\xb8\x79\x90\xc0\xa5\xe5\x62\x0e\xc0\ \x80\x6b\x70\x2c\x2d\x10\x17\xa8\x19\xbf\x1c\x7f\xf6\x1f\xe6\x8c\ \x1b\x0f\x30\x00\x7e\x25\x3a\x7c\xfa\x56\x83\x80\xa9\x2b\x70\x45\ \x15\xba\xd4\xd8\xf4\xad\x05\x59\x62\x65\xfb\xc3\x72\xa0\x59\xc0\ \xdc\x8e\xbf\x2b\xd7\x10\xac\xb7\x52\x19\x7a\x8a\xb5\x1f\xac\x03\ \xb5\xf5\xaa\x78\x38\xb2\x89\x7f\xd6\x40\x17\xe5\x7a\xcd\x87\x5c\ \x14\x0d\x86\xf4\xa6\x2a\xd8\xd0\x83\xfe\x52\x93\xf3\xab\x25\x7b\ \x81\xef\xa5\x56\x96\x48\x53\x1b\xe2\x86\x04\x37\x95\xc8\x1a\x5c\ \xf3\xa2\x94\x30\xa0\x2b\x4d\x0f\x13\x1b\x2b\x8b\xf4\x3a\x57\x3a\ \xdb\x71\x59\xc4\x41\x45\x1b\x28\xa0\x74\x0c\x2d\x76\xfd\x69\xe4\ \x50\xb2\xd0\x88\xc8\x14\x69\x70\x6a\x08\xf3\x5c\x9b\xd3\x1a\x81\ \xad\x7a\x8c\x09\x1a\x5a\x82\x67\xf0\x30\xed\x27\xc4\x7c\xab\x4d\ \x51\x73\x6f\xf6\x2a\x87\x11\x97\xc5\x94\x85\xf4\x26\x8b\x47\x2b\ \x90\xab\x7b\xd0\x91\xda\x8a\xa2\xb9\x34\x1b\x0a\xe4\xcc\xac\x18\ \x1b\x11\xb1\xa2\xa9\xb5\x3a\x9c\x6c\x05\xe8\xe3\xb3\x0f\x28\x27\ \xf2\xa2\xcb\xe5\x3a\x5f\x4d\xa9\x9c\x3a\x13\x23\x14\xb5\x94\x6a\ \x5b\xa5\x32\x22\x63\xc2\xcf\x34\xb9\x51\x33\x13\xae\x9c\xaa\xf4\ \x3c\x3f\x28\x02\x59\x46\x9b\xe5\xd6\xaf\x22\x24\x71\x84\x41\x61\ \x6d\x7a\x9a\x12\x40\xd8\x5e\xb7\x38\xc6\x6f\x25\x77\xc0\x46\xc2\ \xf1\xcc\xca\xc3\xf1\x0d\xea\xab\xc0\xd0\x93\x1b\xea\x6f\xca\xb5\ \x14\xad\xaf\x7b\x54\xcb\x08\x9e\x1c\xbf\x16\xe8\x6d\xf9\x55\xf9\ \x83\x59\x16\xed\x5d\x96\xfc\xa9\xe5\x2c\x6c\x46\xb5\x19\x68\xc6\ \xb4\x7c\x2d\x7f\xe2\x4e\x9f\x01\xab\x65\x6d\xca\xf5\x5f\x87\x69\ \x8a\x02\xde\xa0\x54\x55\xb3\xbd\x33\xc6\x69\x2c\x2b\x81\xeb\x4d\ \x65\xa5\x95\xa4\x3a\xc2\xc4\xda\xf9\x45\xec\x39\xd5\x27\xc6\x81\ \x70\x60\x1f\xf7\x1a\xba\x2e\x0d\xc6\xf5\x9d\xc5\x54\x2e\x36\x50\ \x05\x80\x34\x72\xdc\x6a\x1b\x0b\xb6\x21\x84\xec\x02\xa4\x67\xc8\ \xa3\x99\xa9\x3b\xd4\xe1\xd1\x93\x09\x1a\xb0\x00\xea\x48\xf7\xa1\ \x7c\xdc\x80\xab\xe2\x76\xde\xd5\x07\xf2\xa1\x0c\xe4\x1b\x28\xa0\ \x05\x96\xf9\x86\x9d\xb9\x50\x70\xc9\x1e\x28\x80\x32\xbe\x5b\xec\ \x00\xb9\x35\x1e\x2c\x44\x5f\x39\x5e\xee\x84\x0a\x5c\xca\xb3\x2a\ \x82\xc1\x59\x4d\xd5\x88\xa9\x94\xcf\x24\x45\x24\x68\x54\x11\xa9\ \x04\xb7\xe5\x46\xa3\x58\xd8\x03\x7b\x83\xb1\x1b\x1a\x8b\xd2\x60\ \x41\x0a\x14\x59\x1d\xef\xca\xd6\x14\x46\xe0\xea\x08\xab\x56\x25\ \x9b\x29\xb8\x3b\xef\x52\x1e\xe3\x51\x4a\x66\xf3\x0b\xf2\xa6\x01\ \xa6\x62\x42\x8e\xa4\xd8\x55\xa9\x0c\xf4\xac\x54\xe6\x17\x8d\x86\ \xae\x01\x05\x4e\xd9\x7b\xd1\xea\x5f\x42\x51\x7f\x15\xac\xcd\xed\ \xd0\x54\xfd\xd2\x5e\xd1\xae\xbb\xe6\xd4\x9a\x12\x19\xae\x15\x97\ \x40\xe2\xe0\x57\x2f\x99\xb5\xa8\x6d\x40\xb0\xb2\x8d\x00\x14\x4a\ \x54\x0d\xef\x51\x12\xd9\x5b\x53\xbd\x49\x7f\xc3\xad\x05\xb3\x0b\ \x93\xf2\xa8\xd5\x45\xd7\x7e\x94\x83\x12\xeb\x20\x20\xea\x75\xa0\ \x91\x62\x86\xee\xca\x0c\x4e\x75\x36\xb9\x53\x5c\xa4\xde\xe7\x7f\ \xd2\x88\xe5\x74\x68\xdf\xd2\xfb\xf6\xa9\x07\x0d\x3f\x8d\x19\xd4\ \xe7\x8c\x6a\x4f\xc4\x3a\xd1\x0b\xdf\xcb\x54\x07\x8b\x83\xc4\x66\ \x2b\xdb\x5d\x88\xa6\xcf\x8d\x56\x8b\x2c\x28\xca\xcd\x6b\x92\x76\ \xf6\xac\xfe\xbf\xa9\x6a\xe6\xfa\xd1\x66\x14\xac\x3c\xab\x88\x4e\ \x62\x45\x1e\x60\x79\xf7\xa2\xb9\xad\x6a\x15\xea\x64\x55\x95\x32\ \x3f\xc8\xf4\xa0\xa9\x53\x6a\xb5\x62\xa4\x8a\xd1\x49\x95\xfe\x47\ \xad\x10\x6b\x55\xa9\x51\x66\x4c\x87\xd4\x3d\x26\xa8\x6a\xa4\x83\ \xc8\xd8\xd1\x61\x58\xba\xc9\x1e\x47\x06\xdc\x88\xdc\x51\x0f\x17\ \x25\x83\x24\xd6\xda\xfa\x30\xaa\xea\xda\xd3\x15\xaa\xd4\xb1\x0f\ \x15\x38\x7b\xc6\x20\x36\x3b\x86\x3b\x1a\xd2\xe1\xb8\xc8\x64\xc1\ \xc6\x58\x14\xb1\x23\xa8\x15\x98\x72\x3d\xbc\x6f\x0c\xdc\x69\x9b\ \x7f\x95\x16\x09\x44\x73\x4d\x02\x9b\xa6\x50\xc0\x74\x35\xa9\x6e\ \xb3\x63\xd0\xae\xa9\x98\x10\xc0\xf3\x14\x71\x9a\xc7\xc2\xce\xf0\ \xb5\xc3\x58\x74\x3b\x1a\xd3\xc2\xcc\x93\x26\x75\x20\x11\xea\x17\ \xda\xba\xca\xcd\x8b\x08\x0a\xd8\x25\xad\xf8\x4f\x2f\x63\xca\x8d\ \x5d\x49\xb1\xf2\xb0\xf8\x5b\x4a\x5a\x3a\xdf\x9f\xbd\x14\xae\xa6\ \xca\x40\x61\xdf\x5a\xdb\x26\x01\x67\x06\xd6\xd6\x90\xb1\xa1\x8d\ \x6c\x0e\xbd\x34\xbe\xb4\xc3\x1a\x15\x39\x4b\x2d\xc7\x23\xa7\xd2\ \x82\x72\x21\xc3\x31\x5d\x32\x2d\x85\x49\x9d\x8e\x25\xa5\x31\x86\ \xba\x2f\xe6\x6a\x9e\xd2\x18\xed\xe5\x7f\x2d\xaa\xc3\x1b\x9d\x69\ \x2f\xa1\xcd\xcc\x57\x1a\xdc\x00\x6c\xf1\xab\x5f\x5b\x59\xbd\xc6\ \x94\xc8\x71\x0f\x19\xb1\xf3\x2f\x43\x4b\x72\xa1\x09\x1b\x2b\xb5\ \xfe\x7a\x8f\xd6\x95\x09\x25\x0d\xce\xc6\x8d\x2d\x28\xa4\x49\x41\ \xc8\x6c\x7f\x09\xa2\x61\xae\xa2\xb3\x01\x21\xb4\x36\xa7\x47\x8a\ \x99\x16\xd7\x0c\x3f\xa8\x5e\x9d\x18\xb0\xe3\x5a\x0c\xa5\x8e\x9f\ \xf8\xa5\x49\x8e\xd3\xfc\x95\xbf\xb9\xaa\xd3\xe2\x65\x94\x59\x98\ \x01\xd1\x45\x85\x1b\x14\x94\xcc\x74\xea\x23\xf0\xa2\x37\x27\xd4\ \xc3\xf4\xaa\x4f\xb5\x1d\xa8\x5c\x69\x58\xb7\x5b\x2a\xa6\x8b\x2d\ \x48\x5a\xce\x20\x5b\x5a\x9a\x92\x2a\x42\xd3\x89\x66\x38\xc9\x60\ \x06\xf5\xaa\xb0\xac\x71\x08\x80\xbd\xbd\x47\xa9\xa4\xf0\xa8\xaf\ \x39\x73\xff\x00\x2c\x5e\xae\x85\xae\xdc\x63\x16\x91\x94\x07\x00\ \xb5\xc5\xa9\x80\x0e\xab\xf5\x14\x52\x45\x98\xdc\x1b\x1a\x01\x11\ \xce\x14\xd3\x80\x56\x1b\x58\x37\x60\x2a\x51\x32\xa8\x1f\xbd\x31\ \x50\x01\x60\x2a\x72\xd3\x89\x47\x89\xc3\xaf\x8e\xa3\xd5\xea\xec\ \x6a\x99\x15\xb5\x94\x10\x55\x85\xd5\x85\x8d\x66\xe2\xe1\x68\x64\ \xca\x57\x36\x6f\x4d\xb9\x8a\x2c\x31\x5d\x09\x57\x0c\xa7\x50\x6e\ \x2b\x47\x47\x41\x22\xec\xc2\xfe\xd5\x9e\x79\xf9\x0e\x9f\x95\x5a\ \xe1\xf2\x00\x3c\x26\x3e\x56\xd5\x49\x3b\x1a\x22\xa6\x91\x6a\x12\ \x2f\x4e\x28\x79\xd0\x32\xda\xac\x05\x65\x25\xac\x06\xa6\xab\x49\ \x0f\x8b\x8b\x92\x72\x2f\x18\x6b\x8b\xfc\x56\xab\x8c\x0e\x5d\x3d\ \x4f\x75\x5d\x3e\xa7\xe5\x42\xea\x2d\x94\x68\xa0\x58\x0e\xd4\x58\ \x62\xbc\x9a\xb1\x26\x94\xe2\xd4\xf9\x01\x51\xa8\xbd\xb9\x8e\x74\ \xa3\xe6\xd2\xd6\xa8\x93\x6d\x49\xa1\x61\x4d\x22\xd4\x2c\x2b\x28\ \x86\x16\x3d\x8d\x0d\xc5\xed\x4e\x65\x14\x21\x2d\xb5\x18\x74\x9c\ \x54\xb2\x46\xd1\xaa\x3f\x86\x8e\x35\x7b\x52\xb1\x38\x86\x81\xc0\ \x8f\x11\xe3\xa1\x1a\x83\xad\x5a\x9a\x21\x2c\x26\x36\x6c\xba\xdc\ \x35\xb6\xa4\xe0\xe0\xf0\x26\x3e\x2d\xb3\x7c\x04\xec\x68\xba\x81\ \x0c\x92\xcd\xac\x78\x5b\x13\xbb\x35\xec\x29\xc4\xfd\xe7\xa8\xb1\ \x03\x56\xfe\x3a\x53\x24\x67\x6d\x19\x8f\xb7\x2a\x5a\x7a\x6d\x51\ \x71\x37\x37\x22\xf5\xc2\xd6\xb5\x87\xd2\xa6\xd5\xd5\x27\x0e\xd4\ \x5a\xda\x86\xe0\x1d\x6a\x0b\x12\x6c\x34\xa9\x08\xd4\x57\x1a\xea\ \x93\xaa\x49\xbd\x09\x35\x17\xbd\x48\x77\x05\x72\xba\x86\x5e\x86\ \x96\x23\x8e\x07\xfb\x44\x6a\x4a\x8f\x52\x9d\x6c\x3a\x8a\x20\x6a\ \x64\x91\x61\x81\xa4\x61\x7c\xc3\x28\x5e\xb5\x22\x31\xb3\xc4\x65\ \x8a\x48\xdb\x33\x29\xf3\x10\x2d\xa5\x5a\x70\x58\xe7\x40\x4a\xb6\ \xa0\x8a\xcf\xc1\xe1\x9e\x6f\x31\x39\x50\x6e\xc6\x9f\x8a\x85\x70\ \xf0\xe7\x8e\x69\x03\x5f\x40\x4d\xaf\x44\xb7\xd4\xb1\x66\x02\xe5\ \x48\x1d\x6d\x51\x71\x55\x70\x12\x62\x1f\x14\xa3\x3b\x30\x3e\xab\ \x9b\x8b\x55\xa2\x2e\xf6\x51\x7d\x74\xa6\x76\x84\xa7\xa1\xaa\xdc\ \x4b\x49\xd5\xbf\x12\xeb\x56\x42\x30\x17\x20\x7d\x6a\xb7\x12\x20\ \xca\x88\x06\xa8\xba\x9a\xaf\x80\x9a\x34\x3a\x50\x81\x73\x47\x10\ \xf3\x00\x39\x6a\x68\x22\x96\x3f\x16\x48\x16\xf6\x24\x35\x58\xc0\ \x42\x60\x8d\xf3\x90\x5d\x8d\xbe\x54\x97\x76\x8e\x48\x1d\x23\x2e\ \xc0\x36\x80\x55\x9c\x39\x12\x47\x9d\x41\x52\x0d\x99\x4e\xe2\x99\ \xe8\xa6\xaf\xad\x47\x7a\xbb\xc3\x74\xc5\xa8\x03\x46\xd0\xd5\x35\ \xbe\x60\x40\x27\xda\xb4\xb8\x7c\x3e\x18\xf1\x18\xf9\x88\xb2\x8e\ \x95\xd7\x8f\xac\xd5\xc8\xb6\xa3\x74\x04\x5c\x0d\x4d\x25\xa4\xf0\ \xec\xc7\x61\xbd\x14\x18\x98\xa4\x75\x4d\x54\x93\xa5\xf9\xd7\x4d\ \x9e\x32\x72\x5c\x79\x4f\x2a\xaf\xc5\x0d\xa1\x09\xf8\x8d\xea\xd1\ \x03\x37\x7a\xa3\xc5\x9b\xef\x55\x7a\x2d\x5c\xba\x8a\x28\xb5\x2d\ \xbb\xd1\xb9\x16\xde\x96\xfb\x57\x26\xa1\x13\xa3\x11\x9e\x3d\x5c\ \x0d\x54\xec\xc2\xa3\x0f\x66\x80\xb0\x04\x10\xd6\x65\xe8\x68\xce\ \xfa\x53\x06\x1a\x56\x1f\x68\x44\xd6\xde\x60\x74\x12\x0f\xe6\x8c\ \x24\xf3\xa8\x6a\xb0\x70\x93\x11\x99\x56\xe0\xea\x35\xd6\x97\x26\ \x1e\x70\x0f\xdd\x9d\x2a\xca\x95\x9c\xd0\xd3\x1a\x19\x83\x10\x62\ \x6d\x3b\x50\x15\x60\x2e\x54\x81\xd4\x8a\xc3\x48\xae\x22\xbb\xf2\ \xfd\x68\x80\xf7\xff\x00\xb8\xd4\x83\x96\xb8\x8a\x62\x8f\xea\x3f\ \x3d\x6b\xb2\x83\xb9\x3f\x2d\x29\xc1\xa5\x65\xa9\x00\x02\x37\xb9\ \xda\x9b\x91\x4f\x23\xef\x7a\xe8\xe3\xc8\x73\x6e\x3f\x4a\xb1\x6b\ \x63\x86\xa6\x5c\x1e\x6b\x83\x98\xe8\x47\x41\x56\x00\xa4\x70\xf5\ \xb6\x15\x5a\x32\x10\x96\x3e\x5f\x84\xf6\x23\xf7\xa7\x86\x05\x73\ \x00\x45\x8d\x88\x3b\xa9\xe8\x6b\xb4\xf1\x87\x5a\xba\x50\x91\x47\ \xe2\xc8\xe1\x00\xd0\x5f\xe2\xed\x51\x34\xb1\xe1\xe2\xf1\x24\xd4\ \x9f\x4a\xf5\xac\xdc\x64\xef\x89\x6c\xd2\x01\x61\xb2\xf2\x15\x5b\ \x89\x6e\x4e\x25\x1a\xbd\xa2\x83\x30\x1c\xdc\xd0\x2f\x13\x7c\xb6\ \x78\x51\xbb\x8d\x3f\x4a\xa4\xaa\xc4\x90\x01\x6b\x7d\x68\x95\x24\ \xbf\xf9\x6f\x6e\xb9\x4d\xab\x3f\xaa\x72\x34\x62\xc6\xe1\xa4\xd1\ \xb3\x44\x7b\xea\x28\xe4\x48\xf1\x29\x95\x24\x46\xc9\xb1\x53\xad\ \xfa\x56\x77\x81\x27\xfe\xd3\xff\x00\xda\x68\x4c\x52\x03\x70\x8e\ \x08\xe6\x06\xd4\xea\xc3\x9a\x09\x6e\x54\xc6\xe6\xda\x6d\x40\x90\ \xc8\xad\x90\x8c\xa4\x6d\x98\x81\x7f\xad\x54\xc6\x89\xe4\x52\x22\ \x95\xc4\x8a\x2f\xe5\x3e\xa1\xfc\xd6\x6e\x20\x4a\x04\x71\xbb\x33\ \x3c\xc6\xc0\x9b\x9b\x0b\xf2\xae\x77\x96\x7c\x32\x3d\x5c\x0e\x1d\ \x0f\x88\xea\x19\x46\xa7\x91\xae\x70\x48\x3e\x12\x67\x3b\x66\x3a\ \x28\xaf\x3d\x04\x86\x2c\x6c\x62\x2b\x00\xac\x00\x36\xf5\x0b\xd7\ \xa2\xf1\xd6\x59\x99\x0e\x8e\x09\x00\x72\x35\xd3\x8f\x2d\x16\x61\ \x79\x4a\x82\x5d\x83\x3b\x68\x48\xd8\x0e\x82\x81\x85\x39\xc6\x96\ \xa4\xc8\x72\xa7\x7d\x85\x54\x16\xe5\x7a\x8a\x43\xaa\xf8\x83\x21\ \xf7\xa7\x20\x19\x4d\xc8\xd7\xf2\xa1\xb0\x58\xaf\xd7\x7a\xc9\x85\ \x3a\xeb\x4b\x6b\x03\x6e\x74\xf6\x04\x8e\x42\x96\xc8\x09\xd6\xf7\ \xeb\x51\x28\x8a\x82\xb4\xc6\xd3\x7f\xad\x0d\x18\x80\x45\x04\xca\ \x0e\x16\x55\x22\xf6\x52\x47\xbd\x3a\xb9\x00\x2c\x57\xf1\x02\x28\ \xc4\x54\xc3\xcc\x17\x9d\x85\xf5\xed\x50\x16\x89\x98\x30\x43\x6b\ \x12\xa2\xff\x00\x4a\x86\x20\x0b\x93\x41\x09\x1a\xd0\x9b\x57\x3c\ \x82\xfb\x50\x9b\x9d\x49\xb7\x61\x41\x71\x55\xbd\xcd\x4a\x82\x4d\ \x95\x6f\xec\x2a\x15\x03\x30\x5e\xa6\xab\x4f\x88\x91\xa4\xf0\x60\ \x2c\x17\x6d\x0e\xad\x45\xb8\x96\xe4\xc9\x18\xbc\xb2\x2a\x76\xbd\ \xcf\xd2\x85\xed\x94\x32\xe6\x21\x86\x84\xad\xa8\x70\xf0\x24\x3e\ \x67\x01\xe5\x3b\xdf\x50\xb4\x6e\x4b\x35\xc9\xb9\xa5\x16\x73\x54\ \x44\x18\x9b\x93\xa5\x18\x17\xf6\xfd\x68\xd5\x49\x36\x03\xd8\x54\ \x83\x6a\xaf\xc5\x3f\xcd\x45\xbe\xcb\xb7\x4a\xba\x88\xc4\x7d\xd2\ \xab\x9e\x6c\x7d\x2b\xfc\xd4\xa4\x10\xc6\xe5\xdb\xef\x64\x3b\xb3\ \x6d\xf2\x15\x66\x8d\x66\xc3\x2e\x22\x24\xb4\x6c\xca\xb4\xdc\x3e\ \x1e\x4c\x43\x78\xb3\x31\xc9\xd4\x9d\x4f\xb5\x68\x34\x84\xef\x6f\ \x6b\x50\xc8\xdb\x17\xb9\xcd\xa2\xa8\xe7\xfc\x55\xf9\x5a\x04\x50\ \x13\x24\x4a\x11\x79\xff\x00\x73\x48\x9a\x62\x5b\xc1\xc3\x0b\xb1\ \xd0\xb7\xf1\x56\x99\x54\xaf\xde\x6a\xa3\x52\xa3\x44\x1e\xfd\x69\ \x18\x63\x0c\x0c\xee\x54\xdd\xbd\x23\x98\x14\xd4\xe8\x50\x61\x22\ \x2e\xde\x67\x6f\xd7\xa5\x55\xb3\xbc\x85\xc9\xb9\x63\x73\x7a\x6c\ \xce\xf3\x49\x99\xb4\x1c\x80\xe5\x5c\xab\x61\xa5\x66\x90\xaa\x91\ \xfd\xaa\xce\x0f\x0c\xd2\xb5\x94\x58\x0d\xcf\x21\x4c\xc1\x60\xda\ \x4f\x3c\x9e\x54\xeb\xd6\xb4\x11\x00\x50\xaa\x2c\xa3\xf3\xad\x4e\ \x3f\x68\xb5\x38\x60\x21\x5c\xb1\x0b\x77\xb6\xa6\x8c\x24\x47\x16\ \x19\xa3\x5c\xd2\x21\xbf\x42\x46\xd5\x2a\xb6\xda\x83\x17\x13\xb2\ \x2c\x88\x7d\x1c\xbf\x7a\xe8\xc1\xe9\x1a\x81\x65\x40\xbe\xc2\x99\ \x15\x93\x36\x76\xb0\x1a\xde\x86\x09\x63\x68\x95\xd9\xc6\x6b\x6a\ \xa3\x7b\xfb\x54\x82\x64\x90\x31\x1a\x8f\x48\xe4\xbf\xde\xb4\x83\ \x8b\x49\x5c\x09\x32\xd9\x57\x40\xbc\xc7\xbd\x06\x10\x67\xc4\x22\ \xf5\x61\x57\xa3\xf2\x8b\x6f\x4b\x8a\x20\x98\xd2\xc0\x79\x42\xe6\ \x1d\xb9\x55\x78\xf6\x34\xf6\xca\x75\xb7\x3a\xa1\xc5\x54\x78\xe0\ \xda\xfe\x51\xbe\xb5\x74\x1a\xa5\xc5\x35\xc4\xfb\x28\xa7\x97\x8a\ \x2a\xb1\xd2\x90\x49\x00\x8e\x86\xd4\xd9\x0d\x28\x9b\xfc\xcd\xeb\ \x9b\x50\xec\x04\x41\x98\xc8\xc2\xea\xbb\x0e\xa6\x9f\x8a\x62\x30\ \xce\xc4\xea\xde\x51\x53\x87\x19\x30\x88\x3a\xdd\xab\xa4\xb1\x78\ \x94\x81\x60\x0b\xeb\xcc\xed\x5a\xf8\x91\x7c\xa0\x06\x16\xd0\x7e\ \x94\x12\x1e\x94\x52\x90\xd7\xcc\x6f\x7a\x51\x1d\xcd\x14\x27\x33\ \x6c\x09\xd3\xbd\x48\x91\x8e\xfb\x0e\x47\x5a\x0b\x80\x2c\x2b\x94\ \x92\x6c\x01\x26\x84\xe9\x62\x86\x4f\x52\x05\x27\xe2\x5a\xa7\x3c\ \x4d\x0b\xe5\x61\x70\x76\x23\x63\x57\xb4\x0c\x14\xba\x06\x3b\x02\ \xd4\x18\xb0\x87\x0c\x44\x92\x22\x95\xd5\x75\xbf\xe9\x45\x86\x29\ \x0b\x72\xa2\x50\x49\xb0\xd4\xd0\x23\xc1\xcf\x13\x17\xd4\xd0\x89\ \x96\x69\xd3\x0f\x09\x21\x5c\xf9\xda\xda\x9f\xed\x46\x93\x90\xa6\ \x6c\xab\x9a\x46\x1f\x0a\x0b\xfe\x74\xc1\x95\x45\xe4\x8a\x48\x87\ \xe2\x6b\x11\xf9\x54\x02\x02\xe5\x40\x15\x7a\x0a\x34\x62\xbb\x73\ \xe5\x4c\x4b\xdc\x39\xc3\x61\x32\xf3\x46\xbe\xfb\xde\x8f\x15\x30\ \x86\x45\x7b\x5c\xb2\x80\x41\x36\x04\xea\x45\xfe\x42\xa8\x60\x24\ \x11\x62\xb3\x92\x6c\xe3\x2b\x0e\xd4\x7f\xe2\x58\x25\x93\x04\x92\ \x46\x0b\x04\x7f\x35\xba\x01\x5a\xdf\xf1\x1f\x49\x96\x79\xb1\x38\ \x96\x58\xbc\xf2\xf3\x6b\xf9\x53\xda\xb4\x21\xc1\xb4\x08\x1b\x13\ \x31\x9d\x86\xad\x1d\xb6\xf9\xd5\x5f\xf0\x8a\x34\x65\xf3\xad\x89\ \xbb\x2d\xc6\xfa\x6f\x5a\xc4\x02\xc1\xb9\x8e\x74\xf1\x9b\x35\x5b\ \xf0\x11\x95\xb2\xac\x2a\xa8\x1b\x50\x40\xb1\xa6\x80\xe1\x6e\x25\ \x72\x07\x22\x69\x2a\x8f\x1b\x05\x6d\x81\x25\x1f\x71\x6e\x86\x9d\ \x1b\x07\x25\x43\xad\xf9\x81\xbd\x6e\x32\x3f\x12\x66\x5f\x29\x20\ \x1e\xad\x43\x92\x5b\x1b\xc8\x75\xdc\x5e\xf7\xa6\x0a\x25\x50\x6b\ \x58\x08\x58\x54\x91\xe2\x47\x1b\x01\xa8\xf2\xdb\xf4\xac\x2f\xf1\ \x06\x0d\x61\xe2\x8f\x2c\x60\xe5\xf0\x96\xc3\x90\x26\xbd\x13\x34\ \x48\x49\x79\x05\x97\x53\x6d\x4d\xab\x23\x12\xed\x89\x9d\x8b\xaf\ \xf9\xc7\xd3\xd0\x72\x15\xcf\x9c\x99\x8d\x4b\xdb\x1f\x83\x61\xdc\ \xce\x64\x91\x09\x8e\x3d\x4d\xfa\xf2\x15\xa4\xcd\x9c\x97\xd8\xdf\ \x5a\xb4\xf8\x6f\xb1\xc6\xb0\x0b\xdb\x72\x7a\x9a\x44\x82\xcf\xee\ \x2b\x19\x9d\x1d\xd1\xc1\x8a\x01\x42\x4d\xa8\x1b\x30\xde\x9a\xea\ \x08\xb8\xb3\x29\xd8\xf2\xaa\x4e\x35\xae\x8e\x57\x88\xdd\x0f\xb8\ \x3b\x1a\x75\x62\xd3\x28\xbd\xec\x3e\x94\x0f\x72\xc0\x5b\x63\x72\ \x68\xe3\x92\x39\x63\x2c\xba\x11\xea\x1d\x2a\x06\xe4\xf5\xab\x01\ \x4c\x2c\x68\x1c\x53\xa4\xda\x96\xda\x8a\x11\x46\x94\xc2\xcc\x7a\ \x1a\x75\x2e\x41\x53\x41\xa8\xcd\x91\x1d\xf9\xaa\x93\x5d\x6e\xe6\ \xa0\xd8\x5c\x1d\x98\x10\x6b\x28\xb4\x92\x03\x02\x31\x99\x14\x05\ \x02\xd7\xd4\x50\xab\xc3\x2d\xc4\x66\x59\x0f\x50\x9a\x55\x7f\xb1\ \x44\x8f\x98\xb9\x71\xf8\x6d\x6a\x79\x26\xc0\x1d\x00\xd9\x46\xc2\ \xb3\xb7\xe9\x10\x8a\xdf\x04\x97\xf6\x5f\xe6\xa3\x28\xd6\xe0\xff\ \x00\xd4\xc0\x7e\x97\xa1\x35\x16\xbd\x25\x33\x06\x28\x56\x29\x23\ \x42\x45\x8d\x81\xfd\x6a\xae\x12\x29\x60\xc7\x20\x65\x07\x36\xc4\ \x1d\x3d\xea\xd2\xad\xcd\x80\xd4\xd1\xaf\x99\x83\x28\xb8\x00\xaa\ \x77\xea\x68\xcd\xed\x00\xee\x40\xae\xb6\x94\x41\x2c\x2e\xcc\xa0\ \x75\x2c\x29\x89\x16\x72\x08\x05\x97\xae\x81\x4f\xcc\xef\x56\x22\ \xe3\x17\x51\xa5\x31\x14\x0d\x6c\x3e\x62\xa3\x10\x71\x10\xa0\x65\ \x48\x72\xed\xa1\xcd\x4c\xb1\x08\xb9\xc8\x2f\x6f\x35\x86\xd5\xa0\ \xe6\x62\xdb\x9d\xb6\xed\x42\x75\xa2\xae\xb7\x5d\x6a\x01\x02\xf4\ \x6b\x14\x9f\x6b\xf1\x33\x47\x95\x54\xaa\x0d\xcd\xbe\x55\x20\x00\ \xa5\x98\x85\x51\xb9\x35\x5f\x11\x89\xcd\x74\x8b\xca\x9c\xcf\x33\ \x55\xc8\x85\x8a\x91\x41\xca\xa7\x3b\x0e\xde\x51\xfe\xfe\x7e\xf5\ \x57\x29\x26\xe7\x73\x46\x05\xa9\x98\x78\x9e\x56\xb2\x0d\x39\x9e\ \x95\x9f\x5a\xf0\xb4\x42\x4e\x55\x04\x93\x57\xf0\xb8\x05\x5b\x34\ \xda\xb7\xe0\x1f\xbd\x3b\x0f\x1c\x70\x0b\x26\xad\xcd\xbf\x8a\x66\ \x6a\xdc\x98\xcd\xa9\xb5\xed\xca\xdc\x85\x12\x8a\x1b\x82\x2c\x6a\ \x56\xca\xb6\x17\xa5\x91\x8b\x5e\xd7\xa6\xa1\x51\xcc\x77\xaa\xac\ \x75\x00\x6e\x68\xe3\x00\x6e\x6f\x5a\x95\x1b\x68\xd4\xe5\x8d\x40\ \xbe\xe7\xad\x14\x5e\x49\x6d\x7b\xe9\x42\xac\x2d\x63\x4c\x52\x00\ \xd3\x4a\x50\xc3\x50\xcb\x23\x27\xde\x04\xcc\xa1\x6c\xc0\x1d\x46\ \xb5\x05\xa8\x59\xc8\x46\x23\x73\xe5\x1e\xe7\x4a\x75\x1d\x04\xa9\ \x2a\x07\x50\x40\x26\xda\xd6\x7e\x2e\x5f\x12\x77\x6e\xa6\xac\x4a\ \xe2\x0c\x29\x50\x76\x19\x57\xbf\x7a\xce\x26\xe3\x53\xf2\xac\xf2\ \xaa\x44\x3b\x5f\x40\x68\x4b\x54\x33\x5a\x82\x23\x9e\x74\x51\xcd\ \x85\x63\x5a\x6a\x31\xb2\xaa\xdf\x40\xa0\x7e\x54\x8c\x63\x95\x30\ \xba\x9d\x43\xe5\xa2\x99\xc6\x63\x6d\xaf\x49\x91\x81\x40\xcc\x2e\ \x23\x70\xde\xc3\x9d\x36\x88\x37\x6f\x39\xe9\x7a\x16\x7a\x17\xbe\ \x72\x07\xd6\x96\x59\x7f\x18\x62\x3e\x14\x37\x35\x23\x01\x19\x4b\ \x31\xca\xa3\x73\x55\x71\x18\xdb\xdd\x61\x05\x57\xaf\x33\x4d\x6f\ \x31\x0d\x20\x04\x8d\x97\x92\xff\x00\x26\x97\x26\x1e\x29\x1f\x35\ \xca\x75\x00\x69\x59\xbb\xf0\xac\x41\x1c\x22\x04\x26\x35\x72\xeb\ \x98\x96\xde\x8e\x3c\x3e\x1a\xe7\xc8\xc2\xea\x6f\xe6\xed\x42\x18\ \x58\x28\x16\x0a\x2c\x28\xe2\xdc\xff\x00\xa4\xfe\x95\xa4\xcc\x8b\ \x0f\x85\x51\xe8\x67\xff\x00\x51\xb5\xa9\xb0\xc5\x04\x73\x2c\xb1\ \x87\x05\x76\x17\xb8\xa0\x5a\x25\x22\xf5\x89\x84\xe5\x34\x57\xa5\ \xa9\xa2\x06\xb5\x00\x85\x68\x60\x1d\x71\x18\x76\xc3\x48\x75\xb7\ \x94\xed\x59\xe0\x12\x36\x34\x50\xb3\x23\x86\x06\xc4\x1a\xd4\xaa\ \x8e\x09\x64\xc3\x63\x41\x63\x66\x43\x95\x81\x35\xab\x81\x99\xb1\ \x31\x34\x99\x57\x2d\x81\x16\xf8\x4f\x30\x7d\xa9\x18\xec\x32\x63\ \xb0\xeb\x22\x0b\x4b\x6b\x82\x39\xf5\x15\x9d\x85\x69\x30\xf2\x96\ \x89\xca\xb6\xc7\xca\x35\xf7\xeb\x4e\xde\x35\x9f\x5b\xea\x48\xd8\ \x91\xed\x51\x1a\x83\x8b\x92\x4f\xc2\x32\xfb\x9b\x6a\x6a\x84\x3c\ \x4e\x41\x61\x2a\x44\xfa\xea\x40\x20\xd5\xdc\x06\x25\x31\x39\xc0\ \x39\x5f\x31\x60\x87\x72\x39\xfb\xd6\xe5\x94\x61\xf4\x9c\x74\xb2\ \x20\x54\x5f\x2a\xb6\xed\xd7\xb5\x3a\xab\xf1\x17\x55\x54\x56\xb1\ \x0a\x0b\x9d\x7f\x2a\x6f\x82\x3b\x8a\x4c\x90\x61\x7c\x08\xf7\x90\ \x0b\x91\xd2\x93\xc2\x21\xb1\xfb\x4b\xec\xa7\xc8\x2d\xb9\xeb\x54\ \x73\x34\x85\x09\xdd\xc5\xfe\x64\xff\x00\x7a\xda\x08\x22\x81\x63\ \x03\xd1\x61\xf3\xac\xce\xee\x9f\x11\x32\x78\xb1\x95\x36\xd7\x6b\ \xf2\x35\x97\x2a\x14\x25\x4f\xa8\x1d\x6b\x58\x9a\xa3\xc5\x96\xcc\ \xae\x3e\x21\xad\x5c\xe7\xd5\x14\x5f\x6a\x51\xfd\xe9\x8f\x4b\xae\ \x6d\x40\xe1\xdc\xa6\x2d\x6e\x6f\xae\xa3\xad\x5f\x7d\x18\xdb\xad\ \x67\x46\xb9\xa5\x04\xef\x9a\xb4\x64\xd6\x43\xef\x54\xf1\x52\xdf\ \x51\x4b\x90\xe9\x6a\x63\x02\x74\x1a\xd2\x64\x68\xc1\xb7\x88\x3e\ \x40\x90\x3e\x75\x00\xd0\xbe\xd4\x4b\x94\x93\x96\x45\x6b\x6e\x06\ \xe2\x84\x82\xc4\xdb\xff\x00\x15\x34\x59\xde\x85\xaa\x25\x95\x82\ \xe6\x8a\x02\xe8\x37\x73\xcf\xda\xa6\xe1\x91\x5c\x02\x03\x0b\xd8\ \xd6\x51\x4e\x35\xa8\x6a\x63\x2d\xec\x6f\x50\x10\x66\x1c\xfa\xd1\ \x87\x40\x14\x9a\x2c\xb6\xa6\x65\xa9\xcb\x56\x2d\x28\x28\x2a\xca\ \x4b\x2e\x61\x6b\x8d\xc5\x14\x71\xc6\xb1\xf8\x65\xe5\x75\xe8\x4e\ \x5b\x7d\x29\x81\x68\x82\xd3\x80\x0a\xa9\x18\xb4\x51\x2a\x9e\x46\ \xd7\x35\x2c\x5e\xd7\x73\x6e\x57\x34\xc8\x94\x5c\xb1\x04\xf6\x1c\ \xea\x70\xe2\x62\xec\xf3\x46\xca\x76\x4f\x29\x21\x7e\x94\xe2\x05\ \xac\xc1\x9d\x48\xb7\xa1\x5b\xf5\x3f\xc5\x47\x3a\x6b\x5b\x35\x83\ \x02\x77\xb6\xb4\x06\x94\x1d\x7a\x57\x3b\xc7\x12\xe7\x96\xe3\xf0\ \x8e\xb5\x2e\xc9\x14\x5e\x23\xeb\xf8\x47\x53\x54\x26\x91\xe5\x90\ \xbb\x1b\x9f\xd2\xb3\x6e\x24\xe2\x71\x0d\x33\x6f\xec\xa3\x61\x4b\ \x42\xc3\x73\xf2\xa8\xb6\xba\x1a\x76\x16\x23\x2b\x1b\x90\xaa\x37\ \x35\x8e\xeb\x46\xe1\x30\xe6\x5f\x3b\x9c\xa8\x39\xf5\xf6\xab\xc0\ \x85\x5c\x88\x32\xa8\xe5\x4a\x04\x9b\x6b\x60\x05\x80\xa2\x26\xba\ \x48\xc8\xf3\x1a\xec\xc6\x97\x9a\xba\xe6\x95\x86\x86\xa9\xce\x00\ \xb9\x34\x9c\xe3\xdf\xb0\xa8\x05\xcb\x5e\xd6\xa8\x62\xc4\x6d\xb9\ \xe6\x69\x81\xc5\x56\xbd\x10\x6e\xf5\x2c\x59\x06\x8c\x3d\x56\x57\ \xa6\x23\x16\x36\x02\xe6\x9d\x06\xe6\xbd\x0e\x22\x41\x14\x51\xb9\ \x22\xe6\x41\x61\x7d\x4d\x26\x6c\x54\x10\x86\xbb\x66\x2b\xea\xb6\ \xcb\x54\xa7\x9d\xe7\x91\x66\x94\xda\xc2\xf1\xa7\xe1\xee\x7b\xd1\ \x79\x19\x0e\xc5\x4e\xd3\x49\xad\x85\xb4\x03\xa0\xa4\xbb\xd2\xf3\ \x80\x34\x34\xb7\x92\xb3\x79\x35\x83\x76\xbd\x1e\x00\xdf\x12\x0f\ \xe1\x05\xaa\xa3\xc9\xad\x85\xc9\xab\x1c\x3a\xe2\x39\x1e\xfb\xd9\ \x45\x12\xf6\xbe\x2d\x96\xd2\xe7\x41\xd4\xd0\x19\x54\x5e\xec\x08\ \x22\xc6\xd4\xb6\x60\x35\xa0\x2d\x7d\x6b\x5a\x12\x4b\x15\xca\x5d\ \xdd\x47\x27\x3a\x7f\x7a\x92\xee\x45\x89\xb0\xe8\x28\x0b\x50\x93\ \x59\xd3\x86\x73\x05\x4d\xa8\x81\x6b\x5e\xff\x00\x51\x48\xbb\x5c\ \x5b\xe7\x46\x49\x23\x4f\x9d\x5a\xb0\xe5\x62\x45\xf2\xe9\x4f\x84\ \xf9\x88\xec\x7f\x4a\xac\x5c\x11\xe5\x3b\xd3\x62\x62\xa6\xd6\xb9\ \xca\x7f\x4a\xd4\xa1\x48\x1a\x90\x75\xa5\x67\xca\x2e\x41\x3e\xd4\ \x68\xc1\xb5\x17\xac\x34\x7c\x66\x8c\x52\xe3\xa6\x2d\x69\x94\x8b\ \x74\xbf\x7a\x24\x37\x72\x37\xb5\x56\x92\x6b\x68\x01\x04\xef\x7a\ \x98\x4b\x13\xa5\xea\xd3\x8d\x9e\x17\x29\xb1\x88\x9e\xeb\xef\x43\ \xc4\x70\x8c\xef\xe3\xc0\xb7\xbf\xad\x40\xd8\xf5\xaa\x51\x4b\x6b\ \x16\x24\x30\x3d\x2b\x57\x0f\x88\x59\x62\xf1\x43\x00\xc3\xd4\x01\ \xfc\xeb\xa4\xb2\xcc\x65\x93\xa8\x36\x3a\x1a\x38\x5d\xd2\x55\x78\ \xdb\x2b\xae\xa1\xbb\xd6\xb4\xc9\x16\x25\x2d\x2a\xef\xa8\x60\x2c\ \x45\x65\xe3\x30\xef\x87\x97\x2b\x6a\x0e\xaa\xc3\x63\x45\x98\xa5\ \x6c\xc5\x8c\x8a\x58\x83\x94\x71\x26\xcc\x80\x73\xa8\xc4\x44\xad\ \x85\x99\xe6\x5b\xb9\x5c\xc7\x5d\xba\x0a\xcb\xe1\xb8\xaf\xb3\x4c\ \x49\x17\x56\x16\x60\x37\xab\xd8\xbc\x76\x1d\xb0\xae\x91\xbb\x33\ \x38\xb5\x8a\xda\xd5\xb9\xcb\x67\x63\x19\xc8\xe4\x48\xad\xa6\x84\ \x56\xec\xad\xf7\x82\xfc\xc6\x6a\xc0\x17\x2c\x15\x45\xc9\xda\xb7\ \x4a\x02\x40\x3a\x9c\xa2\xe4\xfb\x51\xc1\x72\x43\x30\x2e\x14\x1d\ \x46\xa6\xaa\xf1\x66\x45\x85\x03\xba\xa9\xb9\xde\x89\x8b\x16\x26\ \x2b\xaa\xde\xc2\x43\xcf\xda\xa3\x1e\x8a\x30\xcc\xc8\x35\x0d\xb9\ \xd4\x9b\xf5\xa6\xdd\x81\x9d\x2d\x94\xf9\x9d\x47\x4d\x6e\x4f\xb5\ \x2d\x8a\x9f\x2a\x2c\x8c\xd6\xbf\xa6\xc0\x7c\xcd\x1e\x6c\xb7\x2a\ \x02\xf5\xb0\xb5\x2d\xdd\x8a\x9b\xb1\xd7\xbd\x73\x6c\x58\x50\xfe\ \x38\x26\x38\xd9\x13\x52\x15\xae\x6a\xdb\x32\x9b\x95\x0e\xc7\xba\ \xe5\xfc\xcd\x27\x00\xb6\x89\x9f\xf1\x1b\x0f\x95\x35\xc3\x91\xa2\ \xb1\xaa\x0a\x53\x9b\xe8\xd6\x61\xf8\x7e\x1f\xef\x40\xee\xd6\xd1\ \x88\xf6\xa9\x9d\xa2\x89\x6f\x34\xca\xbd\x86\xa6\x93\x16\x27\x0b\ \x34\xa2\x24\x66\x0c\x76\x2c\x34\x35\x6a\x82\x36\x76\xb9\x16\x61\ \xb3\x8d\xc5\x57\xc4\x3c\xc9\x2a\xa6\x22\x4b\xc4\xc7\x52\x39\x8a\ \xb6\x14\xe6\x20\xe9\x61\xaf\x6a\xad\x28\x49\xe5\x12\xbd\xcc\x6b\ \xa4\x6b\xf8\xbb\xd1\x48\x89\x12\x21\x0b\x70\x84\x58\xb5\xad\xa7\ \x45\x1f\xbd\x73\x9b\x9b\xec\x06\xc3\xa0\xae\x66\xb9\xeb\xd0\x74\ \xae\xb5\xf7\xa9\x04\x02\x7b\x0a\x35\x4b\x6c\x2a\x54\x51\x9d\x2a\ \xc4\x10\x95\xd9\x45\x10\xa9\x03\xa5\x28\x39\x6a\x72\xf7\xa3\x60\ \x91\xae\x69\xa4\x58\xc7\x7d\xea\xac\xfc\x4a\x24\x16\x82\x3c\xc7\ \xf1\x3e\xdf\x4a\x91\xc1\x09\x16\x5b\x9e\x82\xa5\xad\x10\x1e\x34\ \x89\x1f\x42\xc6\xb3\xe5\xe2\x38\xa7\x5b\x66\x54\xff\x00\x42\xda\ \xa8\xcd\x21\x24\xdc\x96\x27\x72\x6b\x17\x9c\x87\x1b\x6f\x8a\xc2\ \xb9\x03\xc6\x67\x2a\xe2\xc7\x2e\xda\xf2\xa2\x4c\x92\xdd\xa2\x91\ \x58\x73\xed\x59\x31\x00\x11\x46\x9f\x11\x07\xbd\x80\x1f\xa9\xaa\ \xd2\xe3\x0e\x1a\x4c\x98\x7f\x33\x83\xe6\x6f\xda\x8f\xde\x7a\xb1\ \xa3\x8f\x90\x4b\x3f\x94\xdd\x54\x58\x55\x72\x47\x33\xf2\x14\x42\ \x48\xf1\x10\x09\xe1\x16\xbe\x8e\xbf\x84\xd0\x5f\xf2\xa3\xd2\xe2\ \xdd\xad\xf3\xad\x28\x50\x47\x02\x27\xc5\x6b\x9a\xcf\xc3\x29\x93\ \x10\x8b\xd5\xab\x49\xc8\x2e\x48\xeb\x5a\xe3\xd0\xa8\x2e\x41\xf4\ \xde\x84\xca\x2f\xb5\xaa\x76\xa5\x4c\x09\x7e\x80\xd3\xa0\xdc\xeb\ \xd6\xa6\xf7\xdf\xe9\x48\x45\xb3\x5c\x9d\xa8\xcb\x81\xdc\xf4\x15\ \x6a\x30\x9e\xa6\xbb\x38\xef\xf4\xa5\xa9\x20\x6b\xa9\xa3\x8c\x33\ \x9b\x28\xf7\xed\x4e\xa1\x06\x1d\x0f\xd2\x89\x6e\x4e\x83\xf3\xa5\ \x3c\xd8\x74\x62\xa2\x68\xe4\x90\x7c\x0a\x6a\x9e\x23\x19\x2b\xdd\ \x41\xc8\xbf\x84\x51\xfa\x4b\xf2\xcc\x90\xfa\x9d\x58\xfe\x10\x75\ \xaa\xf3\xe3\x65\x71\x95\x3e\xed\x7a\x2f\xf3\x54\x73\x1a\x90\xd5\ \x9b\x6d\x38\xb0\x35\x55\x46\x17\x04\x97\x3d\xc0\xe5\xf5\x35\xd9\ \xd9\x98\x93\x49\x6c\x42\xa6\x3c\xc5\x21\xb2\xb2\x00\x1a\xf7\xb5\ \x1b\x5c\x3e\x5d\x49\xed\xce\x8d\x29\x73\x40\x4f\x7a\x62\xe1\xe7\ \x71\x70\x84\x03\xcd\xb4\x14\x47\x0a\x8b\xeb\x72\xe4\xf2\x5d\x05\ \x59\x52\xbc\x28\xd3\x4a\x72\xe8\x0f\x33\xc8\x55\xdb\x85\x40\x89\ \xb2\x8a\x92\x48\x50\xa0\x05\x1d\x05\x2c\x9a\x7c\x0e\x26\xb8\x9a\ \x12\x7b\x9f\x6a\x16\x63\x7d\xf4\xa8\xa5\x9a\xa0\x35\x05\x48\x1a\ \xd1\xa8\xc5\xa6\x21\x03\x52\x69\x4b\xbd\x1a\xd2\x8c\x50\x73\x66\ \x5b\x0e\x97\xa6\x40\xcc\x24\xcc\xc2\x96\xa7\x4a\x34\xad\x46\x55\ \x71\xe8\xd0\xb9\x16\xf2\xb6\xc7\xb5\x0e\x18\x31\xd4\x5b\x5d\x35\ \xad\x06\x41\x34\x46\x33\xbd\xbc\xa6\xa8\x94\x78\xd8\xad\xac\x6f\ \xb1\xe5\x45\x98\x62\x52\x56\x0d\x6b\x0d\xfa\x53\x73\xbd\xaf\x6b\ \x52\x61\x42\xad\x99\x88\xf6\xa3\xbd\xee\x3a\xd1\x0a\x74\x61\x63\ \xa8\xa7\x42\x86\xde\x45\x36\xa5\xa2\xd8\xd8\x00\x5b\x73\x7d\x97\ \xdf\xf8\xa2\x96\x35\x93\x43\x34\x99\xb9\x36\xc0\x7c\xa9\x82\x9a\ \x8a\x19\x8e\x6d\x02\xe9\x4e\x85\xbc\x39\x03\x28\xb6\xba\xf7\xa4\ \xa3\x1b\x28\x60\x3c\x45\x16\x65\xfc\x43\xa8\xa2\x57\xcc\x6c\x10\ \x83\xdf\x95\x6a\x06\xb6\x1d\x95\x96\xe8\x6e\xbb\xdb\x9a\xf6\xa6\ \x90\xb2\x46\x63\x91\x43\x29\xfa\x8f\x6a\xcf\xe1\xb2\x78\x73\x65\ \x63\xe5\x7d\x0d\x68\x01\x63\xde\xba\xca\xcd\x66\x63\x30\x92\x40\ \xd9\x87\x99\x0e\xcc\x29\x1a\x1d\x6f\xad\x6e\x03\xa5\xb7\x07\x71\ \xd6\x90\xd8\x3c\x2b\xbe\x6c\xac\xa4\xf2\x07\x4a\x2f\x1f\xe2\x95\ \x5b\x83\x42\x5a\x63\x3b\xdc\xaa\x0d\x3b\x9a\xd1\x94\x93\x0c\x86\ \xe7\xd2\x4d\x72\x85\x54\x08\x83\x2a\x8d\x85\x73\x6b\x1b\x8e\xaa\ \x7f\x4a\xd4\x99\x06\xf6\x06\x8f\x2b\x80\x1a\xea\xb4\x38\xd7\x8a\ \x3c\x3b\xac\xa7\x56\x5b\x85\x1b\xd3\x66\x91\x62\x8d\xa6\x6d\x94\ \x5c\x77\x35\x8a\x5a\x4c\x46\x2f\x31\xbb\x16\x3a\xfb\x51\xca\xe2\ \x9d\xa9\xcd\xc4\xe3\x5d\x23\xc3\x82\x35\x3e\x76\xaa\xf2\x71\x59\ \xb4\xcb\x14\x40\xff\x00\xa6\xf5\x64\xe0\x30\xe9\x33\x09\x5d\x9c\ \x8b\xf9\x46\x80\x51\xa2\x41\x1b\x7d\xd4\x08\xa7\xa9\x17\x35\xc3\ \x39\x37\xd1\x7f\x6d\xc5\xa4\x68\x04\xa5\x5b\x28\x2d\x6e\xa6\x91\ \x36\x27\x11\x26\x8f\x33\x90\x4d\xce\xb5\xbc\xd6\x51\x91\x51\x00\ \xb0\xd3\x28\xa4\xcb\x0e\x1d\xc1\xcd\x87\x8c\x9e\xa0\x58\xd6\xaf\ \x1b\xfd\x5a\xf3\x6e\xec\x58\xe9\xa9\xe7\x51\x77\x8c\x82\xa7\x5b\ \xd6\xe8\xc3\xe1\x51\x48\x18\x54\xee\x49\xbd\x56\xc5\x70\xe8\xe5\ \xf3\xe1\xce\x56\xff\x00\xdb\x3c\xfd\xab\x17\x85\x3a\x9c\x3e\x39\ \x71\x11\xa4\x78\x80\x10\x1d\x59\xaf\xea\x02\xdb\xfd\x45\x58\x90\ \x66\x5b\xa1\x42\x08\xf2\xd9\x86\xd5\x91\x30\x29\x9e\x33\xff\x00\ \x2d\x55\x2d\xdc\x9b\x9a\x47\x85\x26\x5c\xd9\x18\x0e\xb6\xab\xf5\ \x62\xc6\xc1\x78\x21\x07\xc6\x9d\x10\xf4\x1a\x9a\x4b\xf1\x28\x14\ \xda\x28\x19\xf5\xdd\xcd\xbf\x4a\xcc\xb5\x12\xa8\xe9\x47\xee\xfc\ \x58\xd2\x4e\x27\x11\xd2\x4c\x3e\x5e\x99\x5b\xf9\xa7\xae\x23\x06\ \xc3\x37\xda\x32\xf6\x23\x5a\xce\x87\x05\x3c\xab\x9a\x38\x0b\x03\ \xce\xd4\xd4\xe1\x78\x92\xd6\x78\x84\x63\xab\x5a\xb5\x2f\x25\xd2\ \xeb\x63\x30\x6a\x09\x12\xbb\x9e\x81\x6d\xf9\xd2\xbe\xdd\x88\x98\ \xe4\xc2\x41\x97\x4d\xed\x73\xf5\xae\xc2\xf0\xec\x34\x63\x34\x8e\ \xd2\x37\x41\xa2\x8a\xb6\x32\x85\xca\x8a\x15\x7a\x0a\xd7\x63\xa5\ \x13\x82\x9a\x43\x9f\x11\x38\x56\x3b\x86\xb9\x34\x63\x87\x41\x94\ \x03\x33\x5c\x6e\x72\xe8\x7d\xaa\xdd\x8d\x71\x01\x57\x33\xb0\x51\ \xd4\xd5\x91\x6a\xaf\xfe\x99\x87\x2c\x2d\x3c\x84\x7e\x1c\xbb\xfd\ \x28\xfc\x3e\x1d\x85\xda\x10\xcd\xd0\x9c\xc7\xfb\x52\xf1\x58\x92\ \xde\x58\xae\xab\xd7\x99\xaa\xc0\x58\x97\x63\xa2\xea\x4d\x66\xd9\ \x3c\x38\x6c\xd3\x34\xae\x5b\x2e\x51\x1a\x8b\x5b\x99\x27\xfb\x52\ \x25\xc3\xe1\xf1\x6b\x91\xd3\x24\x9f\x0b\x8d\x01\xf7\x15\xcc\xc5\ \x57\x33\x7a\xa4\x39\x98\x74\x1c\x85\x75\xae\x34\xac\xd2\xcd\xc1\ \xcb\x27\x0f\xc7\x94\x9c\x30\x53\xa3\xaf\x51\x5a\x33\x20\x52\x0a\ \x9c\xca\xc2\xe0\xf5\x15\x5f\x8f\xa6\x7c\x3c\x13\x5b\xcd\xaa\x13\ \x6d\xfa\x55\x8e\x03\x1c\xb3\xe1\x4c\x33\x02\xa1\x35\x46\x6d\xed\ \xcc\x51\x3d\xc5\xff\x00\x4e\xe1\x91\xfd\xe9\x97\x92\x0f\xce\xad\ \x11\x52\x02\xaa\x04\x41\x65\x1f\x9d\x41\xda\xba\x66\x46\x50\x45\ \x0b\x0b\xd4\x9a\x83\x52\x09\x5d\x2c\x49\xb5\x47\x6d\xbe\x54\x44\ \x8a\x8b\x83\x52\x71\xd0\x0d\x0b\x13\xb2\x8e\x75\x57\x17\x8d\x77\ \x06\x3d\x90\x1f\x42\xe8\x3e\x7a\xdc\xd3\xf1\x44\xae\x14\xb8\x36\ \x28\x41\x07\x6f\x7a\xcc\x7b\xe6\x37\xde\xf5\x9e\x57\x0c\x11\x48\ \xe5\xb6\x48\xd2\x39\x14\xdd\x4a\x8b\x03\xd8\xd3\x24\x1e\x21\x32\ \x2a\x90\x6f\xe7\x5e\x6a\x69\x17\x14\x78\x9c\x40\xc3\xe1\x52\x6b\ \xa8\x99\x89\x11\xb1\x1b\x0e\xf5\x82\x91\x7b\x5e\xc6\xdd\x6a\xcc\ \x18\x57\x70\x19\xce\x45\x3c\xce\xe6\xa8\x60\x31\xbc\x52\x66\x76\ \x9b\x13\x85\xc8\x8b\xba\x1e\x7c\xaf\x57\xb0\xdc\x4e\x53\x88\x48\ \x31\x30\xc4\xcb\x26\x89\x2a\x8b\x0b\xf7\xa7\x8d\x95\x76\xb4\x70\ \xf8\x36\xb6\x78\x33\x30\x16\xce\xc6\xe7\xe9\x4c\x8d\xb2\x05\x88\ \x15\x03\x64\x60\xb6\xbf\x63\xde\x80\x99\xd4\x5a\x48\x23\x24\x6e\ \x11\xac\xdf\x4a\x15\x9b\x0f\x22\xb2\x34\x99\x3a\xac\x9a\x11\x5d\ \x3a\x64\xc6\x24\x9d\x77\xef\x40\xc6\xe7\xd8\xeb\x4a\x93\x17\x1a\ \x49\x91\x88\x91\x46\xce\xa7\x5f\x9d\x13\x9d\x99\x4e\x65\x61\x71\ \xde\x8d\x38\x96\x6a\x02\xd5\x04\xdf\x9d\xbb\x50\xb9\xb7\x3b\x50\ \x5c\xcd\x50\x6a\x2e\x2f\xa0\xbf\xb5\x46\x60\x76\xbe\xb4\x24\xeb\ \x7a\x82\x58\x5b\x4b\x51\xc8\x22\x8d\x7e\xf1\x82\x9e\x97\xb9\xa8\ \xc3\x78\x53\x12\x15\xce\x6e\x4a\x74\xbd\x48\x71\x5b\x2e\x9b\xf3\ \xa3\x03\x5a\x0f\x0b\x5d\xed\xef\x46\xa2\xca\x05\xef\x4a\x1a\xd3\ \x12\x82\x31\x4c\x02\xd5\xa8\xc8\xd2\x98\xf1\xac\xcb\x95\xf4\x3c\ \x9b\xa5\x29\x69\xe9\xbd\x69\x33\xe6\x8d\xe2\x72\x8e\x35\x1f\x9d\ \x08\xad\x39\x23\x59\x93\x23\xef\xf0\xb7\x4a\xce\x91\x19\x24\x28\ \xc0\x82\x0d\x62\xcc\x32\xe9\xae\xb9\x4f\x87\xbd\x8e\xa4\x9d\xcf\ \x33\x5c\x05\x1c\xdf\xe7\x37\xb9\xb5\x0d\xe9\x02\x53\x70\x15\xaf\ \x61\xb7\x51\xdc\x53\x16\xec\x72\x9f\x58\x17\xb0\xd9\x87\x51\xfc\ \x52\x81\xa9\x92\xed\x87\x70\x2f\x75\x19\x92\xdb\x83\x4c\x47\x29\ \x37\x16\xde\xb5\x0c\xf1\x05\x52\xee\x01\x20\x68\x35\xaf\x3f\x06\ \x2b\x17\x31\x11\xa1\x05\x8f\xc5\x6d\x7e\xb5\xbd\x87\x89\x61\x85\ \x50\x85\x66\xb0\xcc\x6d\x7a\xd7\x1b\xa2\x9a\x45\x8e\x86\xa4\x5c\ \xd2\xd4\xaa\x7d\xd9\xd1\x6f\xe4\x27\x6f\x6a\x60\x16\xde\xb6\x04\ \x2a\x31\x04\x58\x44\x0d\x8b\xee\x7a\x0a\x0c\x54\xf1\xe1\x94\x67\ \xbb\x3b\x0b\xac\x60\x6a\x47\x5e\xd5\x9d\x36\x26\x69\x59\x89\x01\ \x2e\x2c\x15\x4d\xc9\xf7\xaa\xf2\x90\x48\x77\x10\x99\xb1\x58\x85\ \x82\x1b\x95\x1a\x0e\xe6\x9b\x0c\x71\xe1\x90\xc6\x08\xb9\x1e\x66\ \xeb\x4b\xc1\xc0\x62\x87\x3b\x2b\x09\x1f\x6e\xc2\x98\xca\xbb\x9d\ \x7d\xe8\xff\x00\xa5\x4b\x8a\x80\x31\x02\x40\x2c\x24\x17\xf9\xf3\ \xaa\x97\xd6\xb4\x31\xe9\x9f\x0d\xa0\xd6\x33\x7f\x95\x67\x1d\xeb\ \x1c\xbd\x31\xa6\x5b\x32\x2b\x8f\x89\x45\x2c\x92\xca\x6d\xa5\xff\ \x00\x3a\x5e\x0d\xf3\x41\x97\x9a\x7e\x94\x43\xa0\x36\xa8\x16\x49\ \x36\xb8\xd3\xad\x14\x7a\x4a\xa7\xa1\xa2\x2b\xe4\xca\x35\xcd\xce\ \xb8\x47\x76\x00\x54\x75\x8f\xc4\x6e\xb8\xa6\x70\x80\x17\x21\x9b\ \xb9\x06\xa8\xe2\x23\x9d\x65\xf1\xf0\xec\xc7\x5b\x94\xbd\xed\xf2\ \xad\x4e\x2d\x22\xc9\x8a\x7c\xa3\xc9\x1a\xe4\xbd\xb7\x6e\x75\x44\ \xe6\x04\x10\x6c\x6f\xbd\x72\xe5\x3b\x6e\x22\x71\x63\x72\x02\x92\ \xb7\x20\x72\x34\xce\x16\x10\xe3\x61\x32\x80\xc9\x9b\x51\x4b\x75\ \xcf\xb9\xf9\xd0\x46\x5a\x39\x01\x53\xa8\x34\x79\x53\xd1\x4a\x49\ \x94\x8e\x9a\x1d\x2d\x51\x63\x41\x81\xc4\x2e\x2e\x30\x09\x02\x65\ \x1a\x8b\x7a\xbb\xd3\xc2\x9b\x5f\x61\xde\xbb\x30\x55\xad\xca\x89\ \x41\x27\x4a\x87\x96\x04\xde\x4c\xc7\xa2\x8b\xd5\x79\xb1\x2e\xc3\ \x2c\x63\x20\xeb\xce\x8d\x5d\xac\xcb\x24\x71\x03\x9d\x81\x6f\xc2\ \x37\xaa\x38\xdc\x43\x34\x2d\x29\x4c\xd9\x48\x01\x6f\xa0\x14\x36\ \x24\xde\x89\x55\x4a\x95\x7f\x4b\x0b\x1a\x2d\xb4\xe4\x84\x47\x39\ \x91\x6e\x30\x8f\x6e\x45\x4d\xe9\x18\x99\x64\x98\x18\xa3\x85\x94\ \x73\x16\xb9\xad\x08\xd4\xa4\x69\x11\x36\x2a\x2c\xa4\x1d\x1b\xfb\ \xd4\xb1\x6b\xdc\x92\x1b\x6b\xf3\xac\xe6\xc3\xaa\xb6\x26\x24\x2e\ \x2c\xc5\x7c\xc2\xd5\xd1\xa3\x19\x02\xa0\x27\x31\xb5\xa9\xae\x09\ \x37\x26\x9f\x80\x0a\xaa\x64\xb7\x9a\xf6\x14\xc8\x8a\xe2\x31\x24\ \x18\x35\xcd\xe6\x7f\x13\x4b\x8d\x2f\x6a\xa9\x81\x91\xd7\x88\x46\ \xd9\x89\x25\xad\xa9\xab\xdc\x6e\xc7\x07\x10\x36\xf5\x1a\xad\xc1\ \xe2\x0f\x8a\xf1\x18\x79\x62\x19\xbe\x7c\xa8\xbf\xec\xa7\x8b\xd2\ \x8c\xb2\x30\x1b\x03\x42\x68\x98\xdd\x89\x3c\xe8\x6b\xa0\x41\xa1\ \x22\x8c\xd4\x11\x59\x40\xcb\xda\xba\xdd\xa8\xab\x8e\xd5\x24\x04\ \x8e\x55\xf0\xa4\x24\x03\xcc\x72\xd2\xb3\x71\x11\x15\x95\xa3\x60\ \x04\xa9\xb8\xe4\xc3\xa8\xad\x2a\xab\xc4\xcf\xdf\xea\xc4\x1d\x19\ \x1b\xa7\x6f\x6a\xcf\x29\xd1\x8c\xf2\x29\x7c\x62\x31\x2f\x08\x12\ \x58\xe6\x81\xec\x35\xe4\x6a\xd4\xaa\xa4\x16\x5d\x34\xb9\x43\xb8\ \xfe\x47\x71\x4a\xc5\xdb\xff\x00\x47\xc4\xdc\x1b\x1c\xb6\xb8\xef\ \x5c\xec\xe8\xb3\xb8\x3b\x5e\x39\xe3\xfe\x90\xdf\x4a\xb2\x8c\xa5\ \x32\x48\x09\x5b\xdc\x58\xd8\x83\xd4\x56\x7e\x12\x53\x06\x21\x64\ \x1b\x0d\xfb\x8a\xd0\x9d\x02\xbf\x94\xf9\x48\xba\x9e\xd5\x89\x7a\ \x6a\xb4\xe3\xc7\x4c\x70\xba\xb2\xbb\x47\x6b\x31\x1e\xa5\xeb\xd8\ \xd5\x59\x1c\xc9\x31\x77\xe6\x6e\x6d\x4e\xe0\x20\x3a\x4e\x8e\x33\ \x28\x50\x6d\x56\xc4\x38\x61\xa8\x83\x5e\xec\x48\xae\xb3\x6c\xd6\ \x4a\x9a\x2c\x33\xe1\xcb\x40\x09\x60\x34\x02\xe4\xfc\xc5\x27\x0d\ \x8a\x68\x87\x87\x22\x66\x5e\x9b\x11\x57\x73\x90\x00\x5f\x28\x1b\ \x05\xd0\x0a\x09\x95\x66\x89\xfc\x45\x04\xaa\x92\x18\x0d\x69\xb3\ \xf8\x80\xb8\x8c\x33\x9d\x59\x90\xf5\x23\xf8\xae\x02\x37\x92\xd1\ \xb7\x88\x6d\x7d\x36\x1e\xe4\xd5\x48\xb0\xd3\x49\x1e\x74\x8c\x95\ \xeb\x57\x30\x51\x34\x38\x76\x0e\xb6\x77\x23\x9e\xb6\xa2\x5b\x7d\ \x54\x72\x00\xab\x72\x83\x2f\x36\x46\xbd\xbd\xc5\xab\x92\x10\x40\ \x28\x33\x03\xb1\x06\xf7\xa3\x8c\x95\x37\x06\xb9\xa2\x85\xbe\x12\ \x87\xf1\x21\xb5\x6f\x02\xb6\x32\x0f\x1b\x1a\xa9\x18\xf3\x10\x33\ \xdb\x61\x56\x06\x1a\x0b\x04\x55\x0a\x57\xd3\x27\x3b\xd3\x22\x48\ \xe2\x8f\x24\x40\xd8\xfa\x98\xee\xd4\x56\xaa\x45\xa8\x61\x71\x98\ \x80\x1a\xf9\x5c\x03\xb1\xa5\xa6\x6c\xf6\xb0\xbf\x7a\xb1\xb8\xcc\ \x6e\x54\x8b\x35\xb5\xb5\xb6\x3f\x4b\x83\x5c\x22\xb9\x00\x26\x6b\ \xec\x46\xb7\xfa\x53\x80\x2a\xa7\xf1\x0f\xa5\x15\xb5\xb5\x19\x8e\ \x45\x5b\xb2\xb0\x1f\xd4\xbf\xbd\x42\x03\x7b\x90\x05\xb6\xad\x27\ \x20\xa6\xa0\xa8\x51\x46\x2a\x16\x8d\x57\x4a\x4f\x10\x8e\xea\xb3\ \x00\x09\x0a\x46\xbc\xcf\x2f\xd6\x9e\x9b\x0a\xec\x55\x86\x02\x52\ \x76\x16\xf9\x6b\x50\x8c\xcc\x44\x8d\x98\xe4\x5b\xd8\x74\xd8\x54\ \x07\xba\x86\x1c\xe8\x1c\xb2\x5c\xdb\x51\xb8\x35\x03\x45\x03\xe7\ \x58\xd6\xf0\xd5\x6a\x34\x62\x0d\xc1\xd6\x90\x0d\x1a\xb6\xb5\x6a\ \xc5\xcc\x10\xf1\x27\x55\xb0\x00\x9b\xb5\x85\x69\x06\xb9\xbd\x53\ \xc0\xc7\xe1\x45\x99\xbd\x6e\x3e\x82\xac\x29\xae\x93\xa8\xcd\x3d\ \x4e\x96\x3a\x83\xc8\xd2\xf1\x52\xb6\x16\x0c\xf1\xc8\x00\x26\xca\ \xac\x2f\x63\x52\xa6\xa9\xf1\x32\xd3\x71\x05\x81\x6e\x42\xd9\x40\ \xef\xce\xb5\x6f\x41\xd8\x3c\x3c\x98\x96\x32\x3b\xb6\x52\x7c\xce\ \xdb\xb1\xab\xf0\xc7\x0c\x2b\x68\xd0\x7f\xa8\xee\x6b\x88\x54\x02\ \x34\x16\x55\xd0\x5a\xa2\xe6\xa9\x31\x22\x46\xcb\xa1\xbd\xb9\x1a\ \x02\x74\xa9\x90\xe9\x40\x08\xd8\xde\xfb\x55\x52\x01\xf3\x6a\x2e\ \x0e\xe2\xb3\x71\x91\x18\xa6\x2a\x76\xdc\x1e\xa2\xb4\x89\xd7\x63\ \x49\xc5\xc4\x26\x87\x2f\xc6\xba\xaf\x7e\xd5\x9b\x34\xc6\x7c\x32\ \x98\xa5\x0e\x35\x1b\x11\xd6\xae\xdd\x4a\x86\x53\x75\x3b\x56\x71\ \xd0\xdb\xa5\x1e\x12\x73\x11\xca\xd7\x28\x77\x1d\x2b\x12\x9b\x17\ \xc6\xa2\xa5\xe5\xf0\x20\x79\x88\xcd\x94\x69\xf3\xa1\x5b\x10\x1d\ \x4d\xd4\xd2\xe7\x99\xfc\x76\xc2\xb2\xab\x2b\xec\x6d\xaf\x6a\xd0\ \x8c\xb9\x41\x22\xda\x79\x18\x83\xae\xf7\xd4\x1f\xce\x94\xa3\x3b\ \x65\x22\xc0\x9d\x7b\x55\x8c\x4c\x18\x88\x03\x09\xf5\x77\x6c\xd7\ \x1b\x6d\xa5\x20\xdc\x6a\x2d\x5c\xab\x6d\x75\xe1\xd8\x45\xb4\x6d\ \x03\x35\xc7\xac\x36\xf5\x9d\xc5\xf0\x70\xe0\x98\x66\x72\x43\x6a\ \xa2\xda\xfc\xe8\xb0\xf8\x9c\x42\x59\x44\xec\x14\x6b\x60\x6b\x37\ \x13\x3c\xb3\xc9\x9a\x59\x19\xcd\xf9\xd3\xcb\x94\xcf\x04\x94\xc8\ \x31\xd2\xc2\xe1\xa1\x0a\xb6\xfe\x9b\x9a\xd4\x79\x8e\x22\x24\x9e\ \xe4\x86\x1a\x8b\xec\x79\xd6\x22\x29\x76\x0a\xa2\xe4\xec\x05\x6d\ \x61\x22\x68\x70\x29\x13\xfa\xae\x49\x1d\x2f\xca\x8e\x16\xd3\x62\ \x10\x86\x17\x15\x36\x14\x4a\x8a\xa6\xe0\x57\x11\x5b\x64\x26\xf5\ \xd5\x35\xd6\xa9\x39\x4e\x99\x48\x0c\xa7\x91\x1b\xd1\x7c\x36\xb9\ \x60\x36\x3f\x10\xf7\xeb\xef\x43\x6a\xed\x8d\x48\x2e\xba\x66\x04\ \x10\x76\x20\xdc\x1a\xb1\x82\x17\xc3\x9e\xaa\xd4\xab\x82\x6e\x49\ \x04\xee\x47\x3f\x71\xb1\xa6\xe0\x0d\xa7\x31\xb6\x50\x59\x74\xe8\ \xdd\xc5\x53\xd5\x7c\x27\x8e\x1f\xf8\x58\x56\xda\x96\x26\xbb\x85\ \x47\x93\x04\xd2\x5f\x59\x1a\xdf\x4a\x57\x18\x94\x4d\x89\x58\xa3\ \x20\xaa\x0b\x0f\x7a\xbc\x23\xf0\xa1\x48\x41\x07\x22\xd8\xfb\xd5\ \x3f\xdb\x57\xc2\xce\xf5\x07\x6a\x93\x73\x7d\x28\x4e\xf4\xd4\xeb\ \x9a\xed\xeb\xaa\x39\x50\x9c\x4d\x09\x35\x26\x84\xd4\x90\x5b\xa5\ \x56\xe2\xba\xf8\x6d\xd5\x48\xab\x06\x91\xc5\x01\xf0\x22\x16\x3a\ \xdc\xd6\x6f\x85\x55\x1b\x41\x1b\x6c\x0d\xc1\xe6\x3b\x8a\x2c\x52\ \x99\x70\x18\x88\x55\x7e\xf1\x6d\x70\x36\x24\x6b\xa7\xb8\xa4\xb0\ \x24\xe5\xda\xd4\xd4\x6b\x62\x1a\x3b\xe5\x91\x95\x5d\x0f\xca\xd6\ \xac\x42\xc0\x65\x60\xcd\x71\x6d\x76\x3b\xd6\x86\x05\xbc\x5c\x0d\ \x89\xf3\x42\x6d\xff\x00\x49\xab\xf3\x47\x06\x20\x9f\xb4\xc1\x67\ \xe6\xe9\xa1\xfa\x50\x61\xb8\x77\x85\x24\x86\x09\x44\xa8\xe8\x46\ \x5d\x9a\xfc\xb4\xac\xce\x16\x53\xa7\x70\x01\xac\xe7\x96\x4f\xde\ \xae\x1d\xa9\x5c\x26\x16\x8b\x0b\x23\x3a\x95\x32\x10\xa0\x11\x6d\ \xa9\xc4\x76\xae\xb3\xc0\x00\x09\x36\x02\xf4\x38\xb7\x10\xe1\xdf\ \x31\xb3\xb8\xb0\x1c\xed\x5d\x88\x38\x87\xc5\x88\x22\x93\x22\xb2\ \x06\xf6\x16\xa1\x9f\x06\x83\x0e\xef\x79\x0b\x28\xbe\x76\xd8\xf6\ \xab\xff\x00\x01\x18\x2c\x48\x48\xc4\x72\x29\x28\x35\x04\x6e\x2a\ \xca\xcb\x86\x94\x12\x98\x80\x00\x3f\x10\xb5\xeb\x39\x04\x92\x9f\ \x06\x25\x2c\x58\xed\x6a\xb6\x9c\x39\x96\xe0\xcc\x99\xbf\x09\x16\ \xfc\xeb\x32\xdc\x2b\x48\x84\x0c\xc0\x82\xa7\x40\x41\xbd\xe8\xd4\ \x69\x4b\xc2\x44\xd0\x21\x8d\xca\x92\xc7\x37\x94\xdf\x91\xa6\xd6\ \xe0\xa9\x14\x4c\x52\x38\xcc\xb2\xb6\x54\x1c\xed\x72\x7d\xaa\x10\ \x28\x53\x24\x87\x2a\x2f\xa8\xfe\xd5\x99\x8b\x9e\x4c\x5e\x23\x41\ \xa0\x36\x45\x1c\x85\x56\xe0\x5b\x6e\x26\x43\xe5\xc2\xc0\x2f\xc9\ \x9b\xcc\x4f\xca\x8a\x57\xc7\xaa\x91\x24\xb9\x21\x91\x6f\x90\xb8\ \x56\x53\xda\x9f\x84\xc3\x47\x83\x50\x02\x86\x9b\x76\x72\x3d\x3d\ \x85\x76\x35\x4c\xd8\x62\xbe\xa6\x53\x98\x5c\xdf\xde\x9c\xb9\xda\ \x26\x0c\x37\x14\x8c\xf8\x89\x88\x1a\x8f\x4f\x8b\x76\xb7\xb5\x1a\ \x63\xe6\x89\xc4\x78\xc8\x73\x10\x6c\x58\xe8\xc3\xf9\xa6\xc3\x89\ \x56\x44\x56\x8e\x42\xcb\x60\xc5\x75\xfc\xaa\xc3\x2c\x73\xc6\x52\ \x4b\x4a\x9f\x46\x5a\x64\xfe\x55\xbf\xd4\xc2\x63\x9d\x73\x41\x20\ \x71\xd0\xe8\x47\xca\xa4\x82\xa6\xc4\x5b\xde\xa9\x62\x78\x6c\x89\ \xf7\x98\x66\x2e\xa0\x7b\x30\xae\x83\x88\x4b\x1d\x93\x10\x9e\x22\ \x8e\xba\x30\xf9\xd5\xbf\xd1\x9f\xc5\xe5\x26\x97\xc4\xcf\xfc\x1a\ \xc2\x0f\x9a\x76\x20\xff\x00\xa7\x99\xa6\x46\xd1\xcd\x1e\x78\x5b\ \x30\x03\x51\xcd\x6a\xb7\x13\x90\x7d\xa5\x23\x3b\x04\x28\x18\xf2\ \x6b\xde\xd4\xdf\x14\xf5\x51\x81\x92\x14\x63\x60\x59\x75\xb7\x22\ \x34\xa5\xc4\xc4\xa5\xb2\x93\x97\x4d\x28\xf1\x09\x96\x49\x63\x24\ \x8b\x36\x70\x0e\xe0\x1f\xef\x53\x83\x86\x59\x17\xd2\x04\x77\xf5\ \x1a\xe7\xf5\xa4\x00\x4f\x23\xfa\xd5\xdc\x16\x16\xd6\x92\x51\x71\ \xb8\x5e\xbe\xf4\xdc\x2c\x70\x44\x40\x52\xa2\x53\x7b\x16\x3a\xff\ \x00\x6a\x64\x88\x54\x16\x98\x65\x03\x76\x23\x5a\xdc\xe2\x2d\x33\ \x52\x46\xd7\x3b\x0a\xec\xc0\x10\x0d\x66\xcf\x36\x69\xfc\x41\x7c\ \xab\x6c\xa7\xb7\x7a\xd1\x23\xc4\x54\x90\x69\x9d\x73\x53\x28\xc3\ \x90\xf4\x35\x4e\x56\xf0\xf8\xe1\x3c\x84\xb5\x66\x25\xd4\x29\x27\ \x53\xb5\x66\x62\x8e\x6e\x2e\xcd\x60\x4f\x8a\x36\xe7\xad\x36\xf4\ \xa3\x66\x4d\x24\x60\x39\x1a\x8b\xe9\x43\x35\x8c\xcf\xa0\xdc\xf2\ \xa8\x0c\x47\x7f\x9d\x6b\x42\x0b\x5c\x91\x44\xbc\xe8\x52\xc4\x74\ \x23\xad\x70\x37\xed\x6d\xe8\x48\x7e\x7d\x28\x2f\xa5\xea\x64\x36\ \x5d\x4d\x46\xf4\x54\xa9\xc4\x60\xce\xa6\x64\x1a\x8f\x58\x1f\xad\ \x51\xb0\xad\x70\x1b\x3d\xd4\x12\x7b\x55\x7c\x56\x0f\x31\xbc\x6b\ \x91\xb9\xa9\xe7\xed\x59\xb3\xeb\x52\xaa\x61\xe5\x78\x49\xca\x6e\ \x0e\xe0\xec\x6a\xdc\x13\x47\x26\x24\x16\x21\x18\xc7\xe5\xbe\xdb\ \xf5\xaa\x45\x48\x36\x3b\xd4\xb0\x6f\x23\x80\x4e\x4b\x86\x03\x7b\ \x1a\x25\xa6\xb4\x58\x39\x1e\x19\x4c\xea\x77\x04\x5c\x52\xfe\xc3\ \x85\x63\x7f\xb2\xb0\x3c\xf2\x35\x87\xd2\xa8\xea\x23\x0f\x1c\xbe\ \x5e\xa0\xfe\xa2\xa0\x4f\x23\xe8\x5d\xaf\xef\x57\xea\x7d\x18\x6e\ \x22\x0c\x34\x2e\x55\x73\x3d\xc5\x8f\x9b\x6a\x54\x71\xe1\xd1\xc1\ \x8f\x0a\xa0\xff\x00\x56\xb5\xc0\x51\xa8\xd2\x82\x2c\xc4\x9d\x95\ \x40\xfc\x20\x54\x85\x5b\xfa\x45\x08\xa9\xbd\x20\x56\xf7\xfa\xd4\ \x1f\x7a\x8b\xd7\x6a\x6a\x4e\x3b\xee\x3e\x95\xd6\x3d\x45\x4d\xab\ \xaa\x48\x1b\xdb\x63\x5c\x74\xa9\xde\xba\xc7\xb1\xa9\x20\x94\x48\ \x8c\xb2\xb6\x54\x1c\xfa\xd5\x29\xf8\x89\x91\xbc\x28\x07\x86\x3e\ \x16\x27\x5b\xf7\xae\xe3\xce\xde\x2c\x71\x0d\x15\x50\x1b\x77\x34\ \xee\x19\x86\x8e\x2c\x32\xe2\x24\x50\x59\x86\x60\x4f\xc0\xbd\x7d\ \xeb\x3b\x6d\xc8\x73\xad\x3b\x04\xb0\x9c\x42\xe2\x66\x5f\x0f\x38\ \xcc\xaa\xdb\x5e\xad\xcb\x7c\xc6\xfb\xd2\xf0\x91\xc6\xf0\x09\x64\ \x19\x9f\x31\x39\x49\xd1\x6f\xa8\xa6\x4a\xda\x92\x6b\x70\x7d\x2f\ \xe1\x14\x24\x54\xee\x2f\xb0\xae\x53\x7d\x41\x20\x76\xa5\x04\x8e\ \xd4\x07\xc4\xbe\xc2\xdd\xa8\xc9\x39\xf2\xef\x50\xc6\xc4\x0e\xb4\ \x20\x9a\x13\x46\x68\x1b\x40\x4f\x4a\x10\x4e\xa6\xf5\x53\x8a\x13\ \x26\x24\x22\x7c\x20\x00\x07\x33\x57\xa1\x1e\x23\x6a\x3c\xab\xa9\ \x17\xde\xa8\x46\xc1\xb1\x99\xdb\x7b\x97\xfa\x6b\x59\xe4\xd4\x2a\ \x00\x7c\x67\x48\x99\x57\xc2\xb6\x79\x48\xbe\xbd\x05\x0e\x23\x06\ \x26\x97\xc4\x8f\x16\xc5\xfa\xca\x2c\x4f\xcc\x69\x4f\x2b\xe1\x40\ \xa9\x6b\x34\x87\xc4\x93\xdc\xf2\xa8\x55\xbe\xf5\x9c\xeb\xb4\x98\ \xe3\x9f\xc1\x3f\x68\x42\x19\x3d\x2e\x35\x0c\x2a\xc7\x0b\x4f\xf3\ \x24\x3f\x08\xb0\x3d\xea\xae\xe0\xe5\x1b\x75\x35\xa3\xc3\x93\xfe\ \x04\x58\x80\x59\x89\x60\xcc\x05\xad\xa5\x6a\x0a\x8c\x6e\x21\x20\ \x11\x19\x95\x9f\xc4\x04\xe6\xcd\xa8\xd6\xd4\x50\xaa\x4e\xb9\xb0\ \xce\x24\xed\xb3\x0f\x95\x27\x8b\x64\x64\x80\x85\x0f\x95\x4f\x99\ \x9b\x2a\x03\x7f\xce\xa9\x78\xe1\x08\xfb\xc7\x62\x0e\x9e\x19\xc8\ \xa3\xdb\xad\x57\x96\x5e\xd6\x74\x6f\x13\x90\x8c\x68\x31\xbd\x8a\ \x28\x17\x1d\x45\x36\x18\x04\x98\x70\xf8\x89\x24\xcd\x26\xa3\x5d\ \x87\xb5\x57\x82\x07\xc6\x67\x95\x0a\xa9\x07\xcc\x09\xb7\xce\xb4\ \x25\x3e\x7d\x35\xb0\x00\x77\xa2\x77\xda\x56\xc0\xe1\xcc\x12\x34\ \x99\xd7\x2e\x56\x02\xc7\x52\x4d\x34\x0f\x95\x48\x50\xa2\xc3\xf3\ \xa1\x93\x53\x6e\x94\xe6\x21\x8b\x16\xd3\x97\x3a\x62\x85\x08\x5e\ \x46\xca\x8b\xbb\x54\x44\xaa\x22\xcf\x21\xca\x8a\x35\x35\x43\x15\ \x34\xb8\xe9\x84\x50\xa1\xc8\x0d\x95\x47\xea\x69\xb7\x10\x71\xd8\ \x97\xc5\x4a\x23\x8d\x48\x8c\x1b\x22\x0e\x7d\xeb\x43\x87\xe1\x57\ \x06\xa1\x9e\xc6\x73\xff\x00\xd3\xfb\xd1\x61\x30\xf1\xe0\xd0\x65\ \x0a\xf3\x73\x7f\xc3\xd8\x53\x54\x5c\xdc\xd3\x38\xfd\xa3\x5c\x54\ \xb0\xef\xde\xa7\x0c\x72\xb9\x16\xbe\x61\x6a\x34\x5a\x60\x5c\xdf\ \xcd\x68\x6b\xa2\x51\x1d\xfc\x24\x09\x7d\xed\xbd\x0e\x25\x0a\xa3\ \x4e\xac\x55\x97\x9f\x5e\xd4\xe8\xc1\x2a\x6f\xb8\x36\x35\x18\x98\ \xcc\xb6\x86\xf6\x55\x37\x76\xfd\xaa\xc4\x4e\x0f\x16\x24\x60\xae\ \xb6\x63\xa0\x75\xda\x9b\x8a\x82\x2c\x52\xda\x51\x67\xd6\xce\x34\ \xd7\xbd\x28\x60\xa3\x59\x96\x45\x9a\xca\x1a\xe4\x15\xd4\xd5\x96\ \x39\x98\x9b\x6e\x6f\x54\xdc\xed\x7f\xe3\x28\x24\xfc\x36\x76\x95\ \x80\x20\x21\x3d\x43\x0a\x87\x03\x11\x11\x64\x24\xa4\xea\x4a\xf6\ \x3d\x3d\xeb\x47\x89\x46\xb3\x70\xf3\x03\xb1\x1e\x23\x59\x48\xe5\ \xfd\xab\x0b\x86\xca\xd8\x4c\x63\x61\xa5\xd1\x59\xac\x6f\xf0\x91\ \xb1\xac\x5e\xae\x19\xda\xc7\x09\x55\x9e\x73\x1c\xce\x49\x78\xd4\ \xa9\x36\xb1\xb0\x1e\x5b\xf5\xb8\x3f\xec\x56\x8a\x07\x13\x08\x94\ \x05\x7c\xb7\xb7\xe0\x15\x93\x82\x85\x5e\x18\x62\x11\x96\x77\xb3\ \x02\xbb\x8d\x6b\x68\x44\x90\xca\xcc\xac\x59\x88\xb1\xd0\x00\x4f\ \x33\x4f\x1f\x15\x23\x11\x83\x52\xb7\x80\x5c\x8d\xc1\x1a\x9e\xe2\ \xaa\x9f\x14\xb0\x46\x2e\xdc\xac\x4e\xbf\x4a\xd1\x04\x8a\x89\x50\ \x4c\xca\xf9\x8a\x48\x9b\x35\xaf\x7a\x6c\x12\xa9\x34\x6d\x1d\xbc\ \x45\x2b\x7f\xc5\xa5\x68\x70\xe9\x56\x4c\x3a\x44\x74\x74\x04\x2d\ \xf9\x8a\x5e\x26\x19\xe6\x20\x2f\x85\x65\xd7\x43\x6b\x9e\xba\xd2\ \xf0\x0a\xc9\x8f\x8d\x58\x10\x43\x73\xa6\x75\x53\x46\x1f\xf3\x54\ \x9d\x81\xbf\xd2\xb1\x61\x19\xf1\xe0\xa9\xd1\xa5\xba\xdf\x90\xbd\ \x6c\xc2\x7e\xf5\x7d\xed\x58\xa2\xe9\x8e\x00\x5b\xcb\x26\x97\x36\ \xb6\xb5\x72\xf8\xa3\x66\x7d\x66\x6f\xf5\x1a\x85\x15\x33\x5f\xc5\ \x7d\x47\xa8\xf2\xef\x43\xaf\x61\xf9\xd6\x80\xd4\x29\x2c\x58\x79\ \x46\xa7\xe4\x2b\x29\xb8\x96\x20\x4c\xe2\x30\x42\x83\xa0\xab\x9c\ \x4d\xcc\x7c\x38\xda\xf7\x76\x00\xd6\x41\x3a\xdf\xeb\x58\xe5\x73\ \xc6\xa4\x5f\x87\x88\x2c\x8d\x7c\x4c\x36\xe4\x0a\xff\x00\x15\x2f\ \xc4\xa0\x53\x95\x61\x76\x3f\xd4\x6c\x2b\x38\x11\xf8\x87\xd6\xb8\ \xe6\x3b\x58\x0e\x57\xa3\xf5\x4e\x43\xf1\x38\xcc\x44\xd7\x19\xb2\ \x2f\x45\xd2\x82\x1c\x6e\x2a\x11\x65\x94\x95\xfc\x2d\xa8\xa0\xe5\ \xb8\xbf\xb5\x5f\xc0\xe1\xa2\x38\x41\x23\xc6\x24\x67\x26\xdd\xa8\ \x9b\x6a\xb9\x0b\x18\xcc\x36\x20\x85\x99\x7c\x37\xfc\x43\x6a\x39\ \x30\x6e\x14\x34\x6c\x24\x07\xf0\x9d\x68\xce\x03\x0d\x20\xb9\x56\ \x8c\xff\x00\x4e\xb4\xb5\xc0\xe2\xf0\xe7\x3e\x12\x51\x27\x60\x6c\ \x7e\x9c\xeb\x5d\xfd\x1d\x2b\x4f\x01\x2d\x9d\x33\x2c\xab\xea\x1b\ \x67\x14\xa5\x4c\xc7\x32\x03\x6b\xfd\x3d\xea\xf2\xe3\xca\x9c\x98\ \xbc\x31\xb8\x3b\x81\x63\x53\x2b\x60\xe6\x91\x1e\x19\x32\x3b\x1c\ \xad\x71\x6c\xda\x6d\x46\x45\xb5\x5d\x52\xdc\xc9\xf7\x34\x40\x5a\ \x9c\xf8\x59\x46\xa9\x67\x07\x9a\x9a\x53\xab\x21\xb3\x29\x1e\xf5\ \x62\x45\x75\x45\xeb\xaa\x4e\x22\xe6\xa4\x57\x0a\x9a\x92\x40\xae\ \xae\xae\xa5\x3a\xdd\xab\xad\xad\x4d\x75\xaa\xc4\xa7\xc7\x63\xce\ \xb1\x4e\xa2\xc4\xae\x46\x37\xe6\x36\xd3\xfd\xef\x4d\xc1\xb1\x97\ \x0e\x80\x90\x52\x15\xd1\x6d\xcc\x31\x02\xff\x00\x91\xa7\x49\x1f\ \x8f\x87\x93\x0f\xcd\x85\xd7\xdc\x55\x6e\x1e\xcc\x85\xe0\x73\x6c\ \xe8\x96\x1c\xb3\x6a\x7e\x5a\x00\x2b\x39\xda\xf8\xbd\xc3\xc9\x2b\ \x2a\x12\x2f\xa3\x0b\xf3\xa2\x90\x5c\x58\xfe\x54\x8e\x1c\xc0\x63\ \x2c\x7e\x20\x54\x55\x87\xb1\xad\x4f\x05\xf5\x5d\x94\x96\xcb\x5c\ \x17\x21\x1a\xe8\x69\x84\x73\x1b\xfe\xb5\x04\xa8\x4c\xee\xe1\x54\ \x73\x35\x12\xda\xec\xd7\x5e\x5b\x9a\x9c\xba\xdc\xb5\xcd\x4c\x6f\ \x0c\xa4\x84\x97\x6e\x45\x6d\x45\x94\x13\x65\x74\x24\x6e\x2f\x6f\ \xd6\xa4\x59\x15\xd9\x46\x52\x58\x85\x51\xb9\x3b\x53\x0c\x4d\xb8\ \x1a\x75\xbe\x9f\x5a\x8b\x2b\x1b\xe8\xc2\x2d\x06\xb7\x05\x8d\x58\ \x95\xe4\x56\x4c\x24\x8c\x8c\xb6\x60\x00\x21\xc0\x1a\xf3\xfc\xaa\ \x9c\x30\x9c\x99\x94\x11\x9b\x43\x2b\x68\x00\xe7\x6e\xb5\x7f\x1f\ \xe4\x81\x5d\x15\x43\x33\x58\xf9\x46\xba\x55\x2b\x97\x62\x59\x8b\ \x1e\x75\x8e\x53\xb3\x13\x29\x0f\x29\x61\xb6\xc2\x84\x81\x6d\x6a\ \x76\xae\x35\x92\x18\x90\x34\x81\x54\x1b\x13\xa8\xbe\xf4\xec\x04\ \x0a\xd2\x33\x38\xba\xc5\xa1\x1d\x5b\xff\x00\x34\xdc\x36\x1c\xa6\ \x11\xe7\x26\xcd\x94\x95\x16\xe5\x56\x32\x2c\x68\xb1\xa0\xd2\xc0\ \x93\xd4\x91\x5b\x9c\x46\x93\xc4\xd0\xe2\x38\x79\x03\x78\x9b\x30\ \x00\x72\xac\x60\x3a\x0a\xf4\x11\xb1\x57\xb8\x17\xb6\xe3\xf6\x35\ \x9b\xc5\xb0\x9e\x0c\xbe\x2a\x29\x31\xbe\xa0\x9e\x47\xa5\x1c\xf8\ \xfd\x52\x87\x82\x39\x18\xf5\x8c\x1b\x2c\xbe\x53\xde\xae\x85\x02\ \x52\x3a\x0e\x75\x9b\xc3\xe3\x69\x31\xf1\x22\x9b\x12\xe3\x5a\xd8\ \x97\x2b\x48\xc5\x45\x81\x26\xd5\x70\x9d\x2a\x55\xaa\x5a\x35\xf0\ \xcc\x8d\xe5\x55\xdc\xd1\x48\xd1\x41\x18\x92\x72\x40\x3e\x95\x1b\ \xb5\x51\x69\x26\xe2\x38\x85\x88\x2d\x90\x1d\x15\x74\x0a\x29\xb4\ \x47\x4c\xd3\xf1\x0c\x42\xc3\x12\x15\x8c\x6c\x39\x7b\x9a\xd0\x82\ \x38\xf0\xb0\xf8\x50\x9d\x4f\xad\xc6\xed\xfd\xaa\x62\x54\x81\x0c\ \x30\x8b\x20\xe7\xcd\xbb\x9a\x9b\x53\x26\x76\x82\x06\xb4\xd8\xd7\ \x95\x42\x8b\x53\x10\x56\x85\x12\x8d\x6d\x4c\x41\x50\x83\x4a\x35\ \x14\xc0\x9b\x84\x90\x30\x17\xd2\xe4\x75\xa3\x28\x42\x05\x3a\x93\ \xe6\x63\xd4\x9d\x6b\x94\x03\xa3\x6c\x41\x14\x69\x73\x18\xcf\xeb\ \x5f\x2b\x58\x74\xd8\xfd\x2b\x51\x14\x56\xc0\x9b\x6c\x2a\x02\xe5\ \x50\x29\xd7\x5b\xdb\xf2\xb5\x00\x07\x2e\xa3\x51\x46\x25\x3e\x28\ \x40\x78\xd3\xa2\xdc\xfc\xeb\x23\x8f\xc7\x71\x16\x25\x45\x8b\x79\ \x58\xf7\x15\xaf\xc5\x74\xc4\x8f\xf4\x0f\xd2\xb3\xb8\xbe\x5f\xfd\ \x28\xe6\xdf\xc4\x19\x3d\xf9\xfe\x55\xcf\x9c\xf5\xae\x2d\x3c\x1c\ \x0b\x86\xc3\xa1\x0b\x69\x1d\x05\xcf\xe1\x16\xda\xb8\xdc\x9a\x7e\ \x28\x7d\xe6\x51\xb0\x00\x7d\x00\x14\x83\xa5\x69\x97\x0a\x25\x34\ \x35\x2b\x52\x18\xda\x89\x81\x91\x40\x06\xce\xba\xa3\x5f\x63\x42\ \xb4\x40\xeb\x4c\x43\x0d\x9d\x44\x83\x42\x77\xec\x79\xd6\x6f\x1b\ \x8d\x93\x18\x66\x1b\x4b\xe6\x06\xb4\x09\xca\xcc\xe1\x4b\x2b\x6a\ \xe0\x6e\x0f\x5a\x99\x16\x39\x22\xc9\x20\x12\x46\x76\x20\xed\xed\ \x55\x9b\x0c\xea\xab\x61\xb1\xf0\xc8\x80\x62\x2e\x8e\x05\xb3\x01\ \x7b\xd3\xda\x6c\x28\x5c\xc7\x13\x19\x03\xa6\xff\x00\x4a\xac\xfc\ \x32\x26\x6b\xc7\x88\xca\x3a\x32\x9b\xfe\x54\xa9\xb8\x64\xf1\xdc\ \x96\x8f\x2f\x22\x5a\xd7\xa3\x79\x45\xd0\x78\xa6\x29\x67\xcb\x1c\ \x57\xc8\x97\xd4\xf3\xaa\x95\x63\xec\x73\x88\x4c\x9e\x04\xae\xa3\ \xf0\x2e\x9f\x5a\x42\x14\x75\x25\x43\x02\xbe\xa5\x61\xa8\xac\x5d\ \xfa\xd4\xc7\x0b\xd7\x58\xd4\x8a\x90\x3c\xb7\xa0\x86\xc6\xb5\x78\ \x6d\x9f\x87\x2d\xbe\x06\x20\xfc\xeb\x2f\xe5\x57\xf8\x1c\x83\xc4\ \x78\x0f\xfc\xc0\x32\xfb\xd6\xb8\xfa\x2f\x8b\x56\xae\xb5\x19\x17\ \x14\x24\x6b\x5d\x18\x43\xda\x45\xc9\x2a\x89\x01\xd2\xcc\x2f\x55\ \x8e\x0b\x0e\xf2\xfd\xde\x68\xc2\x12\x49\xbd\xc5\xc8\xb5\xaa\xd1\ \x16\x89\x8e\x6c\xbb\x00\x7d\xcd\xaa\x5d\x42\x9c\x8a\x3c\xab\xa0\ \xa3\x16\xb3\x1f\x0b\x8b\xc1\xfd\xec\x12\xe6\x41\xbd\x8e\xde\xe2\ \xad\x60\x31\x23\x15\xf7\x4e\xa0\x48\x06\x9a\x68\xd5\x65\x09\x56\ \xb8\xff\x00\xcd\x51\xe2\x78\x51\x1f\xfc\x4c\x07\x28\xbf\x99\x7f\ \x09\xa3\x33\xc3\xba\xb0\xf8\x58\xe4\xbe\x51\xe1\xb7\x3e\x9f\xda\ \xa9\xcc\x8b\x13\x65\x92\x44\x53\xca\xe7\x7a\xb5\x83\x91\xf1\x8e\ \xc9\x2c\x8c\x72\x0c\xc5\x41\xb6\x70\x76\x3f\xcf\xb5\x49\xc2\xc6\ \xd8\x93\x11\x04\xc2\x10\x31\x07\x52\x2f\xd2\xac\xdf\x12\x93\x29\ \x53\x63\xf9\x57\x0a\xb1\x8d\x84\xc5\x2f\x55\x61\xe5\xb7\x4a\x4f\ \xb5\x18\x5c\x05\x75\xaa\x46\x82\xa0\x1b\xd2\x93\x50\x6a\x6b\x8e\ \xa2\xa4\x10\x4a\xb0\x61\xb8\x3a\x55\x3e\x34\x1a\x2c\x44\x8e\x9e\ \x51\x94\x49\x19\x07\xa6\x9f\xb8\xab\x6d\x53\x2c\x51\x62\x03\x44\ \xe3\xcc\x51\x42\xb5\xbd\x37\xfe\xe0\x56\x6c\xde\x90\x38\x64\x8b\ \x89\x9a\x29\xd2\xd9\x81\xb4\x8a\x39\x1e\xb5\x64\xd7\x9e\xc1\xb4\ \xf8\x4e\x26\xa2\x13\x66\x12\x65\x3a\xdb\x4a\xf4\x12\x32\xb4\xbe\ \x22\xb7\x92\x41\x99\x7d\xaa\xe1\x76\x1a\x9b\xd2\x38\x92\x5f\x07\ \x98\x35\xad\x25\xed\xd7\x4a\x2b\xf9\xf3\x0d\x40\xa6\xe4\xf1\x3c\ \x10\xc3\xca\x25\x24\xdc\x5e\xfa\x53\xe8\x27\x0c\x7c\x18\x11\x14\ \x10\xc4\x5d\x88\xef\x4c\x2c\x58\x11\x20\x0e\x3f\xa8\x5e\x80\x7f\ \x9b\xf3\xe7\x4c\x37\xbd\x51\x06\xd1\x65\xcb\xe0\x47\x6e\x9a\xff\ \x00\x35\x20\x8b\x05\x00\x28\x1b\x28\xda\xa6\xc6\xa4\x0b\xd2\x89\ \xe2\x5a\x60\xd0\x85\xbd\xa4\x3f\xa5\x66\xc6\x72\xb5\xcf\x3d\xeb\ \x57\x1e\x3f\xe1\x93\xff\x00\x90\xfe\x95\x9c\xa8\x19\xcf\x6a\xc7\ \x2f\x4c\x41\xd7\x50\x34\xef\x45\x86\x88\xcb\x88\x58\xee\x06\x63\ \xc8\x5e\x8a\xd5\x6b\x85\xc6\x73\x3b\x80\x6e\x05\x87\xce\x89\x36\ \x9a\x9e\x20\xfe\x1e\x1f\x22\x9d\x24\xd0\x0b\x6b\x94\x54\x60\x09\ \x93\x0c\x55\x8d\xcc\x67\x4b\xf4\xa8\xe2\x65\x4f\x86\x80\xdd\x94\ \x1b\xd8\xde\xd5\x30\xc5\x2e\x12\xd2\xba\x82\x8e\x2c\x40\x35\xaf\ \xac\xfc\x37\x2d\x2f\x89\x18\xd3\x07\xe0\xc8\xda\xca\xea\x6d\xd0\ \x75\xab\x12\xbc\x50\xe1\x8e\x20\xd9\xd7\xe1\x1d\x4d\x63\x62\xa5\ \x79\xe6\x32\x48\x75\x3f\x95\x36\xa8\x4c\x38\xf9\x30\x9c\x5c\x09\ \x11\x04\x71\xb7\xa4\x0d\xbb\xd6\x8c\xdc\x45\x50\x0c\xb8\x54\x37\ \x17\x0d\x98\x91\xee\x2b\x33\x8a\xa7\x89\x83\x49\x88\xbb\x23\x65\ \x27\xb7\x2a\x77\x0e\xe1\xdc\x56\xc1\x51\x13\xc3\xb5\xfe\xf0\xf9\ \x47\xf7\xae\x72\xf2\x97\x23\x5d\x02\x77\x9b\x15\x88\xcc\xe7\x33\ \xb6\x80\x01\xfa\x56\xbe\x12\x0f\xb2\x61\x7c\x2f\xf9\x8f\xac\x9d\ \xbb\x51\xe0\xe0\x4c\x39\x20\x46\x04\xfb\xdc\xdf\x6f\xe9\xa2\xb5\ \xeb\x7c\x78\xe7\x75\x9b\x41\x6b\x58\xd1\x01\x53\x96\xed\x6f\x99\ \xa3\x55\xad\x0d\x42\xad\x35\x56\xb9\x16\x98\x05\x41\xca\x28\xd4\ \x6b\x50\xbb\xda\x88\x9b\x68\xba\xb7\xb6\xd5\xa4\x24\x5a\x6a\x8f\ \x30\xe8\xfe\x53\xd8\x8d\x8f\xed\x49\x89\xb3\x1f\x31\xdb\x96\xd4\ \xd8\x8f\xde\x2a\x83\xe5\xcc\x48\xee\x40\xdb\xf3\xad\x44\xe3\x7b\ \x6e\x68\x5a\x9a\x46\x9a\xd0\x30\xa9\x33\x78\xb7\xff\x00\xaa\x1f\ \xe8\x5f\xd2\xb2\xb8\xf3\x11\x85\x82\x3b\x68\xc4\xb9\xf7\xda\xb6\ \x78\xba\x7d\xea\x3d\xfd\x4b\xfa\x69\x59\x3c\x69\x03\x3e\x0d\x0e\ \xcd\x70\x7f\xee\xae\x5c\xe7\x55\xae\x2d\xc9\xbc\xc1\x5f\x6c\xea\ \x1b\xda\x90\xc0\xde\x8b\x87\x16\x9f\x85\xc0\x43\x67\x65\x05\x0d\ \xbb\x7f\xe6\x89\x81\x07\x51\xaf\xb5\x6a\xff\x00\x59\x2c\x2f\x5a\ \x21\x5d\x51\x7e\xd4\x21\x0f\x7a\x9a\x10\x6a\x41\x35\x21\x02\x41\ \x04\x6e\x29\x44\x4d\x16\x2b\x2c\x00\x15\x94\x66\x00\x8b\x81\x4c\ \x15\x32\x5c\x46\xd2\xa5\xc3\xc6\xbe\xe0\x8e\x96\xa5\x03\x10\xf8\ \xc8\xe2\x2d\x9a\x35\x00\xea\x63\xb5\x1e\x19\x32\xc2\xae\x7c\xce\ \xe2\xe4\xb6\xb6\xaa\x32\x4b\x88\x9d\x6e\x73\xba\x83\xf0\x8d\x05\ \x5d\x49\x84\xa1\x72\x02\x0a\xd8\x15\x3b\xe9\x54\xa4\xd0\xd2\x66\ \xcd\x98\xdf\xad\xea\xbc\xb0\x26\x23\x89\x4a\x19\x72\xda\xf7\x75\ \x1a\xfc\xea\xc6\x66\x12\x00\xaa\x73\x7c\x2b\xd7\xdf\xb5\x74\x71\ \xac\x20\x85\x39\x8b\x1f\x33\x1e\x67\xb7\x6a\x7d\x0c\x9c\x66\x19\ \xf0\xf2\xe5\x3a\xa9\xd5\x58\x6c\x69\x56\x35\xbb\x3c\x5e\x3e\x19\ \xa2\xe7\xba\x7b\xd6\x31\x5b\x12\x08\x37\x15\x8e\x5c\x71\xa9\x41\ \x6d\x2d\x56\x38\x40\xff\x00\xf2\x50\xff\x00\xaa\x92\x6c\x37\x20\ \x7b\xd5\x8e\x12\x3f\xfc\x8c\x27\xfa\xaa\x9e\xa6\x89\x02\xda\x52\ \xcd\x31\x98\x6c\x01\x27\xda\x81\xae\x01\xd0\x56\xd9\x71\x00\xca\ \xa9\x73\x64\x5f\x10\x81\xcc\xec\x2a\x05\xed\x6d\xed\xce\xa1\x81\ \x2a\xac\x1a\xef\x6b\x65\x3b\x30\xe9\xd8\xd3\x22\x0a\x45\x95\x80\ \x23\x70\xda\x11\x52\x0d\x8d\x12\x73\xd0\x32\x9d\x18\x72\x34\xc5\ \x8c\xf2\x19\xbd\x8d\xe9\x25\x6c\xe5\x46\x52\x06\xec\x4e\x9e\xda\ \x6e\x6a\x4c\xfe\x2a\x92\x60\x18\x62\xa0\x3e\x54\x6b\x2e\xbb\x83\ \xc8\xfc\xe9\xdc\x1b\x1d\x1e\x36\x49\x73\x30\x49\x99\x75\x52\x74\ \x36\x3c\x8d\x59\x9a\x05\xc4\xc2\xd8\x76\x94\x80\xe2\xd6\x0a\x00\ \xbf\x5a\xf3\x85\x25\xc0\x63\xd9\x1d\x7c\xcb\x70\xc3\x91\x15\x8b\ \x6f\x1b\xbf\x0c\xed\xe9\xa7\x89\x9e\x06\x46\x1c\xae\xa6\xb3\x2d\ \x47\x82\xc5\xbc\x79\x64\x8d\xd8\xc4\xc7\x55\x34\xdc\x5a\x05\x9c\ \xd8\x68\xda\x8a\xd6\xea\x22\xc6\xbb\x2d\x34\x2d\x71\x5a\x16\xaa\ \xe3\xe6\x92\x08\xd0\x44\x72\x97\xb9\x27\xb7\x4a\x94\xc5\x61\xde\ \x30\xce\xf9\x5a\xde\x60\x16\xfa\xd3\xa7\x8e\x39\x23\xfb\xc4\x24\ \xa0\xd0\x83\x6a\x4b\xe0\x62\x71\xe4\x63\x1b\x7f\x56\xa2\x8e\xf7\ \xa3\xd3\x96\x48\x24\x6c\xb1\xcb\x73\xfd\x42\xd4\x4a\xd9\xe5\x31\ \x23\x03\x95\x2c\x4f\x72\x74\xb5\x56\x7e\x1f\x38\x04\xfd\xd3\x76\ \x56\xd7\xe9\x4e\xc0\x14\x83\x06\xce\x48\x56\x8e\xec\xc0\xef\xdb\ \x4a\x3b\xde\xd3\x3b\x10\x56\x4f\xf1\x31\xc8\x43\x5e\x4f\xae\x95\ \xb2\x61\x11\xc3\x1c\x6d\xea\x44\x00\xf6\x35\x99\xfe\x1e\x84\xcb\ \xc6\x17\x12\xea\x08\x4d\x4d\xf9\x9a\xd6\x93\x31\xb9\x2a\x6e\x68\ \xe1\xe6\xaa\x51\xb2\xad\x42\xc8\x4a\x94\x07\x29\x24\x10\x7a\x11\ \xb5\x11\x40\x39\x6b\xd6\x81\xd4\x12\x2c\x35\xad\x23\x34\x20\x48\ \xab\x6c\xdb\x8e\x87\x98\xa1\x66\xb1\xb5\xa8\x92\xd7\x24\x79\x49\ \xdf\x4b\x86\xf7\x1f\xb8\xa9\xb5\xcd\xad\x66\x1a\xe5\xbe\xfd\xc7\ \x5a\x52\x28\xd4\x50\xae\xf4\x6b\x50\xa0\xc7\x2e\x6c\x18\x23\xe1\ \x7d\x7e\x75\x9c\x10\x2e\xa0\xed\xbd\x69\xe2\x41\x6c\x1c\x80\x6e\ \x2c\x4f\xb5\x51\x50\x2d\x59\xbe\x99\x42\x12\xe6\xdb\x73\x27\xa5\ \x5c\xc0\x25\xf0\xcc\xc4\xb2\x29\x60\x02\x8d\x0b\x0b\x1d\x4f\x4a\ \x42\x80\x14\x2b\x5a\xce\x72\xfc\x86\xa7\xf2\x1f\x9d\x5c\xc0\xdd\ \xa0\x91\x8e\xe6\x4b\xfe\x55\x48\xa8\xac\xa5\x72\x18\xd3\x2f\xe1\ \xcb\x50\xd8\x44\x98\x04\xf1\x64\x50\x3d\x2a\x75\x02\x99\x61\x4c\ \x87\xd6\x47\x55\x20\x7d\x0d\x69\x96\x0e\x35\xc3\x48\x51\x49\xca\ \xa4\xdb\xa0\x1b\x0f\xd2\xff\x00\x3a\xb1\xc3\xb8\x78\x78\x84\xd8\ \x82\xc1\x0f\xa5\x46\xed\x54\x9c\x10\xc5\x48\xd4\x1b\x1a\xdf\x6d\ \x42\x64\xb6\x4c\x82\xc4\x7b\x56\x38\xf7\x75\xaa\x52\x41\x86\x8d\ \x72\x24\x00\x5c\xdf\x31\x39\x88\x34\xb4\x79\x12\x5f\xb3\xce\xd7\ \x0d\xe8\x6e\x5f\xf8\xa7\xb0\x23\x98\x3f\x95\x2d\xf2\x99\x21\x72\ \x40\xc9\x25\x89\x27\x60\x7f\xbd\x6c\x39\x94\x98\xd8\x0d\x59\x7c\ \xcb\xae\xc4\x57\x40\xc9\x32\xe7\x42\x01\xf8\x94\x9d\xa8\xe2\x17\ \x97\x2f\x33\x70\x79\xf6\xac\xf8\x96\x21\x23\xac\x8c\xde\x51\xe5\ \xcb\x45\xaa\x34\x02\x1b\x92\x74\x27\xb7\x2a\x25\x5b\x54\x61\x03\ \x8c\x22\x67\x37\x27\x51\x7e\x42\x9a\x10\x9f\xee\x6d\x5a\xc0\x85\ \x14\x5c\xab\x88\x23\x71\xa7\x23\xd6\xa4\x52\x9c\xbe\xaa\x38\xf4\ \x5b\x03\xcc\xdf\xeb\x41\x6d\x6b\xae\x43\x79\x4d\x89\x3a\x8a\x90\ \xa6\xb6\x9d\x4d\x1c\x79\x64\x87\x2b\x72\xe6\x39\x1e\xb5\x20\x8e\ \x82\xb8\x1c\xa4\xe5\x1a\x1d\xc5\x69\x25\x24\x61\x27\x85\x3d\xae\ \x7d\x2f\xc9\xa8\xd9\x4d\xed\x6f\x95\x2d\x99\x5d\x32\xb4\x64\xaf\ \x7d\xc5\x04\x73\x98\xdf\xc2\x98\x92\xa7\xd0\xc7\x97\x6a\x90\x78\ \x9a\x5f\x0c\xad\x6f\x4b\x6b\x58\xfc\x60\x5b\x09\x0c\xd9\x6f\xe1\ \x4b\xa9\xe8\x37\xfd\x6b\x73\x1a\xc8\x20\x78\xdd\xd4\x31\x17\x00\ \x9e\x95\x95\x8c\x48\xdf\x01\x34\x66\x45\x37\x00\x8b\x1e\x63\x6f\ \xd6\xb1\xce\x18\xff\xd9\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0b\ \x08\x52\xaa\xc7\ \x00\x66\ \x00\x69\x00\x67\x00\x75\x00\x72\x00\x65\x00\x38\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x0b\x53\x47\xc7\ \x00\x72\ \x00\x61\x00\x6e\x00\x64\x00\x6f\x00\x6d\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x0a\x12\x5e\xc7\ \x00\x6b\ \x00\x69\x00\x6e\x00\x65\x00\x74\x00\x69\x00\x63\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x00\x28\x58\x27\ \x00\x74\ \x00\x69\x00\x6c\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x07\x50\x31\x47\ \x00\x65\ \x00\x6c\x00\x6c\x00\x69\x00\x70\x00\x73\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x05\x8f\xe2\xc7\ \x00\x63\ \x00\x65\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x14\ \x00\x22\x00\x47\ \x00\x54\ \x00\x69\x00\x6d\x00\x65\x00\x2d\x00\x46\x00\x6f\x00\x72\x00\x2d\x00\x4c\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x2d\x00\x32\x00\x2e\ \x00\x6a\x00\x70\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x02\ \x00\x00\x00\xb4\x00\x00\x00\x00\x00\x01\x00\x00\xf9\x47\ \x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x8b\xdf\ \x00\x00\x00\x96\x00\x00\x00\x00\x00\x01\x00\x00\xf5\xc7\ \x00\x00\x00\x7a\x00\x00\x00\x00\x00\x01\x00\x00\xcb\xb4\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x48\x00\x00\x00\x00\x00\x01\x00\x00\x71\x63\ \x00\x00\x00\x2e\x00\x00\x00\x00\x00\x01\x00\x00\x36\xe6\ " 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() PyQt5_gpl-5.10.1/examples/animation/animatedtiles/images/0000755000076500000240000000000013245231431023364 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/animation/animatedtiles/images/centered.png0000644000076500000240000000157413245231431025672 0ustar philstaff00000000000000‰PNG  IHDRddpâ•TsRGB®ÎébKGDÿÿÿ ½§“ pHYsÄÄ•+tIMEÙ§¡o)üIDATxÚíÖ¿oEÆñïÌíÚ±›“…-°8 wn¬nà‹K7ÈüT'QB(ÝÐ6m0Žp*DD” ÈdìäÞóÞž÷×ìP9‰2R®Xñ|¤ív¤}çyßy1L>vqqñcLøœË¦€ÏNOOÿVA^°õõußn·ñÞSQQ¾ù”—®LS>™ÆÍŒ^²`¬ï,ŽcöööV²,;ªÃƒºE:MS p?ÿ…Îõá™»¤^$ <Ÿ"ûu†áá,eYbŒñuÙŸ­S1ªª"Ïsò¼ÀSaáªyŸÏ;wxçõ˜ç‹W[ØW2Š¢ ( œsµ:pµJˆsŽ<ÏÁ&Ã`òá{óÑ­|½ýw_;ã$}À÷?%Ïs¼÷Ï¢‚L‚÷ž,Ë0˜‚áÀ1×l’W)‡òcr ã-Y–S¥‚L¸esóS †C¦£yQá)]÷Œ’ôìæR£‚Ø:&$Ër* n3¤ÝnsrrÂææ&Q±´´ÄÚÚÛÛÛxïiµZ¬¬¬Ðét(Ë’0 k•Z5ÙÕÕU¿¼¼ÌÖÖ»»»£oíøÇGQD†xïIÓçÎ9ŽŽŽÞ Ô²& ßï³³³3žÿ9]ÆPÅhcA@E¡kï¤?ÊçY†áL³ÙLã8FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDþOþÑÀQ%½%`IEND®B`‚PyQt5_gpl-5.10.1/examples/animation/animatedtiles/images/ellipse.png0000644000076500000240000002501713245231431025534 0ustar philstaff00000000000000‰PNG  IHDRddpâ•TsRGB®ÎébKGDÿÿÿ ½§“ pHYsÄÄ•+tIMEÙ+쥻n IDATxÚíy”]Uï?û w®95¥*!! „ˆÑ ­[ì6` HÓðhÄõÚÕOxHƒÚ“­H«K´Q@ŸØ4­ØÈ $Œ’š’ªTªêÖp«êÎÙöûãÖ>¹ÉaÎË^+‹[Ü᜻¿û7}Ã…ãëø:¾Ž¯ãëø:¾Ž¯ãëø:æ—x3ÝLuuuW&“1¥”^]]ÝûÖ¬Yó9Ó4]×uåþýû[V¬Xçy$“IZ[[)•JhšÆ®]»°m»ü…„@Ó´ƒ_P pÕcÃ0ú 0¨×¶¶¶ÇßÐ=0ÞÈ‹·µµ-››{§”ÒX¾|ù·ÛÛÛÃRJ†ö  ¥¦i•.†aà8HÉD>A‡ÑA&“]vòœ½êL'¦Ñ„†®ëèºDùè…3Õõw®\¹ÒB°gφ‡‡ßèCùºRUUef2`vvöº~ô£×«çúûûË'\ò”°J–š çð<˲Àƒœ[IJ,,ËÂÖ]×&Np`zœÓNê¦X*¡ë:;v?OU“À› !„IùŸµêÚÑh”îîî>@¸®kîÙ³gÑÿ€´µµ=¸xñ⋤”ô÷÷333S>ù@É.o²Šž…íØ!p)%–e!=‰”¶mcYŽ!‘à†ôÇŽ@?X("€ —Çb1¤”˜ÓßXÇs(•JþÆZ–UBZxžW~Î)%¥R© ˆç•,p×ÿLWÓ‘ê}@oç7žGn4‡) M³ Cɇ9t šDhȳÎ:ë·¦iòè£Þ |ü˜dÁ‚÷¿ímoÓ4McïÞ½”J¥ò¦º6¶eW€PÞh@JÏÊ–¶/!xÏ“7}þD«×º^YzJ¥º¦ûÏ !ž‡‡‡+]³3ˆ%3¤¤ %Ò8ÉnÊÀK¢lÕÀ0 êêêNokk»EÁìììóccc¾åéèè8£¦¦†R©„çy^¡PÐt]Çu݃H˶|IÙ !žGYíH‰7¿ÑÒõBú›îI@Ä=(!º¦ùÒ$„ðÁ±m›Ã#œ»è\dRâII6’¢a©Ž7BÚiiH«ì­uvvž œi;v츧WÛ3{­ 477oéééÁq6oÞŒmÛ¸®{PõÌ`[U–çyX®[6¾ ÀÄBB:.KQ°D±X$ŸÏ#DV|ÆA@4¡áy2ˆúÜT*…çyL§fÑM23rX`x؉Ö0B+»Ô³³³+[[[otàáx<þÜ›VBÚÚÚšÇÆÆj€ ú®ëú¡i®ëú›'=‰íÄÅ#›Ê  Û³ÈØÇÁÑ=bfÄWYŽa“ÍfÉårHGàx.sssä½"¶mQ(Є@šÁ’à{g¾×äæÒ,k<Í·áãÁq­âL†qsAd§1o[$‹-êz4Mcûöí‰75 …BážK/½ô‚\.Çèè(¶mû’ â*7“’\.G.—+‹U8èŸfWs1LÏó0äÁ€¯P*LkUå[6èž@3ÊêEw™L–t:@ªP´‹óâù΀ïµÉ²ú+–ʯٟ¢íâÔ0:%†^QÃM832ÏU&Ñ4|>jç÷1ñ¦Äó<- R(|Õä8Îa¶Á£P(Ì?vý Œ„Ðæõ~ ¯!ê4Î=÷\fggéëëã‚ .àòË/çÎ;ïdppË/¿œX,ÆwÞ‰¦itvvràÀtCÇ0 àlr¹LY:×W‘êž<Ïó퀑´ñ]DB–%ÊÓ²-²4Ýô|7¹§§çŸO=õÔ.•JüêW¿o @š›››„˲zÔ+©¨TY*¦Èf³hš†eYºa”oC“‚÷¼ç=ÜtÓM\{íµœ{î¹¼ýío§»»›uëÖqË-·ðüóÏså•Wòï|‡w¼ã\pÁÜÿýÜxãtvvòÌ3ÏpÏ=÷PSSC4ezz×0Ð4 Íd²²Ù¬¯:=Ïó;ŽC8&1Ñ4g‹{xï51å€ÒJ˜8a¬‘îl`Þ1‘ƒÁ7Êšœœ\ôþ÷¿ÿÌX,ÆæÍ›)‹²T* ‚ëº8ŽÃÜÜBt}þô æiH$wÝu‰D‚[o½•«®ºŠ¾¾>Î9çvìØÁe—]†ç•}Ðo}ë[Üpà |á _ ‘HÐÓÓC±Xdff†“O>™ÞÞ^:;;Y¼x1ŸúÔ§XµjgŸ}6®ëòž÷¼‡‡zˆR©tÐY8ÌÑpç Û¶I&“”’sì¸7‡çIý"Ê>ÖŒ5ðù³êêê¯K) ‡ÃÏMMM}ÿu¤¹¹™ÉÉIõgÞ¶íÊS'ÔÉS_XyP ªª*.½ôR~üãóÞ÷¾!]tßøÆ7xðÁùÈG>ÂöíÛéïïçꫯ¦X,¢i>ø ?üáñ뺕~~¥—%„@²/·ß~;Ùl–µk×òôÓO³~ýzöìÙƒã8<öØc<úè£äóyZZZüÓ\(X°`¡PˆB¡@*•"új#ðÀ077G©T’7Ýt“eoKÓH¥RèºÎÂ… ù·û7>ó™ÏL&ý÷+i¾´ÌÌÎ ¥$ç–_GvÑ„†¦yHÍÃÉèØã!R¿®èÃ0RÚ¯$F9j•eYVW[[sssض-”ñV1€”Ò?}®ërÝu×qõÕW³aÃvíÚÅúõëyòÉ'q‡ë¯/ó‹H)ýkìÛ·ïk8p@m í8Î)%º®[ù|þò±±±)€@ pIssóí¹\ŽB¡@,ãÚk¯¥££ƒmÛ¶ñÝï~—‘‘ššš|BÒq’É$®ëÒÐÐp0 —üýF0§ƒÐ\J (8D"”âcˆyÆ?ŸÏÿIssócš¦iñx|ÝëfC¤”V©T¶m?¾€rð–N§1M!¥R‰p8ÌßþíßòôÓOÓÜÜÌ~ô#üq ‰üá¤X–µOÓ´!@:޳+ú½6‰|{ëÖ­ÿ HÛ¶³‹/mhhˆ( ¹ï¾ûä—¾ô%ñ½ï}|à|èCâóŸÿ<Û·o÷=®J§$‘Hpöš³p`Ôã„ó mz9N"„![æãC´†Ñ²qãÆ£Šà_6 uuu×®Y³æCŽSfUu]?$Þ°,‹@ À 7ÜÀŠ+¸æšk¸þúë¹ð f>9D,;è. …d2™oÄãñ¯éþÒétð“N£££ëGFFÌyéùÇñññÓ.¸à‰·Ýv,^¼˜çŸž|>mÛ Ôws]—B¡PþN Ð3¶ ­6Gô ©I¤ N2ÀìÏëñŠšR]ê2ŽBUµ-\¸°~llÌ·•4‡J ¬_¿ž¾¾>LÓdóæÍ<õÔSƒA‚Á O޲EUUUlÙ²¥=™LN¼œÉd~£‡ÃáK8`žëº'Þpà ѯ|å+ôööÒÑÑÁwÞÉúõë) ¾]qÇq˜Å.Y”J:/ôçyû ‰…£<¾ï?éÕØdɰ‘hš†išôôôÜL&7ŒŒÜùšIˆRC•¾»ÒÁ¶m³páBî¹ç>üáó¯ÿú¯üÝßýÁ`°Ì;ÍKçy¨¼ƒRóö@¤R©‡€„®ëép8l+ë¤ê•¬D"qm"Q¨ëë럌Åbgß|óÍŒsûí·³sçN€O\V~¿ééiº»»Ë«+y|üqºÏ Ò®µâN„ðR ¡ír]ׯìïï×_+@Bï{ßûö8p Z‰²¢F”ë)¥äÓŸþ4O=õó\üà©©©yI0M“-[¶|>“ɼªüЋHúõš¦YRÊÿõOÿôOkoºé&,ËbݺuìÛ·±±1_9Žã³Æ9¯DÛ{J„Û¡Ð<‹µn (˜Lý¤ax†áÇP¯ õÕÕÕ u]÷%¤P(P, „Ãa4Mã'?ù W\qµµµ‹Eß[9\Ôߺ®“N§w†ñ¸ëºN$‰g2™× MÓÈf³¿Ëf³ê4_a·Ür †aÈ»îºK¬^½Ú½rã•&ÈsD¶ç˜ú}šËÏø[\½ÀC½ß¦)ÜÅDfˆ¹±"Â(_gfffQ4ýË\.wß«H…Þv•¯®DÙ²,òù<ííí<ôÐC¼ÿýïgß¾}\wÝu4MûCU ‡|~8&?533sÃë•F>üÔ¦ÓéÍ;vìzž§·´´¼ÿé§ŸF×u„„ÃáCT—išœ}Ú¤®tÙÖ»ÓÐY꜃;#Xj/†ÕªžG¬) kî¾ûîWxŸgïÞ½á|>_äM¸êêê;å”SÎ]¾|9[·nezzšÖÖV¤”d2-Z„ކS‚¢WÄ¥„iGÐy5m‚0üxJš¦)¶oß¾zllló+µ!1ÏóªÔép]×gkãñ8çœs7ÝtÛ¶m#—Ë177G*•"ÐÚÚÊØØccc¬X±‚mÛ¶Q,5>>~k,K×××—òùü›„Û¶yâ‰'èîî–—\r‰¸ë®»¨­­Åó<ŸGÕghÿ‹Y4pòV9Ë8š" :^^ÑhÃ0œW¬²êëëoollüSåê*@ºººxöÙgÙ´iÓ‹¾wttÔ—šÞÞ^b±@`rÿþýOÏÍÍùi×7ãrçóͶm¯Y³f͵CCC†qH~ eå8³9J!/y× ï£¯j3éŽ@P6™ùE èeòóU±!®ëF”ûª Þýîw3::Êc=F8öË<½® ~…k[. u]Òét”7ùª®®&Nÿ÷<7æ ]›L&QU3žçÑßßOUU†g³ík6”¢ÌÕíD “xÊ!`ê œT9==55E,ûaSSÓ SSS5 RJWI†²Üxã|õ«_åöÛogxx˜“O>™™™âñ8555<ÿüóhšÆI'Ä–-[ÄèèèÓÓÓë.\Èøøø›ÅÏK·©²œ«V­’£££"™LÒÐÐÀÉ'Ÿ\&#=N𡦮€—P“Z„—6qS´€Ð¥">Oº÷Þ{ŽZBššš»®ûnå9CCClذÁ÷š~ÿûßû9óÊxcÓ¦M„B!ÿuÀ›Œ?D>ºeË–µ@àêóÎ;ïŠüà~j!“É =1™àŒ·9ØŽKU¨†‚›Aè傾ü®égj@trþèõŽ@Ì­‰D" ]×%™L"¥äú믧X,‡‰D">H¡Pˆ`0H8& ……BÄb±C¼«·ÚÊd2“¥RéIMÓF¾õ­o"=~2Nº€ÆbyŸY}7îÞãÒ[Ž–kÏ{|¤˜ä>‡¯\²dÉÝÉd’¦¦&~ò“Ÿ0==ÍC=ÄþýûY·n<ò+W®$‘H088HOOüð‡?¤X,μð ÍÍÍÉÉÉÒ[˜ššš/¬^½ú¦ÑÑQ’É$¡PˆÓO?@ €††t8^ Ã0q¤¦—kÏd10<<úé§•ÊÒ4-¬T®ë„B!>ùÉOÒÙÙÉ /¼€”’ÞÞ^t]÷ó<ò®ëª‚ È·2ótËÏžyæ™ý .¼½½½=:::êóyÛëû8ë/"7m §‚¸)7m`…Åh›GmCB¡Ð§eÙª‹%K–à8ù|ž={öøÑ«â|‚Á Ÿ”Qe›€L¥R6ÇÀÊd2Ïφñ###QMÓ&å¤CýBáê,j<…šEU¼0µ‰X –¼>ÅÈW[Z™PU™Õ£DJ)¤”¢T*ñ‰O|Ã0¸è¢‹øò—¿Œiš†A*•bdd„îîn†‡‡I§Óô÷÷“ÍfÉd2300ð Ž¡¥¤…B¡î¨mH}}}SSÓR×u©««ãŠ+® ··×/6ðÛ J%B¡¥R‰l6K4%•J‘Íf¯;ÖiiiùŒâ³Bˆº•+Wú¹ž¢g:9…áxÓœÉ0hB*׎”’ééi{ì1q´qˆPtµ®ëÜu×]‡$£*Ý[¹š¦‰mÛ2‹‰t:­K`TWW311ñ¥ÖÖÖk:ÏóÊD©Ðx¬¸¿\Õ„#m,·DÌãft¼TÜÎV<ð©ÿ—åö¦mÛ\pÁ466rõÕWÓÔÔ„iš,^¼˜ŽŽLÓ¤±±‘d2I.—C×uâñ¸Ø½{÷/2™Ì/%@”Ë+æO¡JEX–…ÐÊå¦ïŒý5_\÷0ËjÏdyÃÙD;%ÄJŒ^‰ Ä|v{ï½—¡¡!öìÙƒišÔ×דÍfÑuÎÎNjkkÙ»w/===d2 …Âæx<ÞË1¸Ç‘~W0 !ÐC‚}{“üËÿ¸œë|7w_¶™É¹ižKüßûÕ½X–支ˆËÒ4.ºè" …‚¯ +Ë\úúúüÇO?ýô!Qù±¸fffÞÕÒÒ2¥x-@„…œG8tЫu\‡Ç‡þÏ•¾½}¥B  ¾¾ž@  ª ƒd2jjjü¼ºÊ©g2,˲±c×u³ó’R¦C(ç€b1Û×›ïÆÅõ<×Ų¼Wˆçy¬[·Ž+¯¼’3Î8ƒ‡~˜ßýîwäóy&&&8ãŒ3˜œœ¤¯¯Ïóhllä…^Àó¼}ñxüßß “^«5ÏdK˲„@ 4¥ËêydëÏùÌ9ßâ¿ö|'æ¼Åèu¾C©ä¢UŽZB6nÜÈôô4555 ø(K)ùéOêW’xžÇÔÔ”*®À1 ` …ÙB¡PŸL&Ñ„F¾Ù£hUñCÏ'cßã@®Ÿç'~‡ИK17W®CP™Õ£Ä0 FGGF×ußåÕ4Íÿ[Eí*299ÙÒÚÚú¾x<þȱªµ„–JW«†#(¨"Â]K²ÏcfoRÒ#7é"4áïÓQFùÈG>B?_|1O<ñCCCÔÕÕá8ŽïŽŒŒL&iiiarr’\.WM¹æ˜¤¥¥EUéKukkk1‡‹õ)¤”lܸ‘ºº:jkkq]—ÑÑQºººüÆ—¶¶6r¹œÊ;Ecbb‚öööïF×u¹ãŽ;X·n_ûÚ×8pàžç‘Éd0 ƒÙÙYª«« …B S(8R Á‘Ø^~ñ‹_ðóŸÿüE_Si'víÚE$yIÆë­¼ÀÚU«V¿ÿýïY±b}}}¬]»–ïÿûôôô066FWW<òÕÕÕ´··sÚi§qß}÷17ôGZkkëpUUÕ •„Z©T"‰ø•%‘H„\.‡çyÔÕÕùÒÒÞÞnÏÍÍݳgÏž«5@-Z4xê©§ž811Á’%KX³f ¿üå/)•J²Ù,áp˜t:íï›çyär9\×eçÎGÇeE£Që›ßü&©TŠ|àÜÿýôööÒÐÐ@UUÏ=÷UUUôõõ111AWW### ã8Ž)„0A0þ*ÔÍÌÌ „`h߃ơ'߆3w!…Bþÿ?*@t]çsŸû_üâ¹õÖ[Ù±c‡_u‘ÏçÑuݯFq‡ááa?ŠŸw½yI;f\à¶¶¶\ºti=ÀŽ]Ïã5¥‰Ld&€´4ÜöENd ÚD;nÊ$SJ‘œ+3ષä¥ÔøþQ ±m»ß²,Ö®]˲e˧T*177Gss3étšÚÚZR©“““TWW£ë:ª‡Ä¶mLÓ”NÂ[VuåóùýéŸþé—MÓ)ÉØEÞ½h9©ŸÌSüÃÃ_ÆÐ 4C X€®Á‚F¡¡!)‹ƒAéy^øÑïccclذÃ0üü¹Zƒƒƒ¾Áxî¹ç0M“JâÍuݪ•+WÞ5555Çÿá­*!žçÕ)» mì5#,è‰áâ"mp'¢X“œÉ VÜð«ÞUCl*•¢¹¹Y‹Å«ÚÚÚ{ù*KÓ4O©žH$B0ôë°T×Ôá5Xjz‚jB===Wr Ørÿ¡eQW¢Tp8wÁ_óÞ%Whµ¨›CÕy JyûàLÈùz,U .„¾G”ªªª{ÇÆÆÖö³Ÿýóšš.½ôRn»í6’É$+W®Äó<~ùË_²råJvìØ@0¤X,’ÍfýÁó®žûVT]¡Pè/Ö¯_ÿ|%t])ÂU:Þ/ÈÉÚo@€¦uúï©®×Ø¼y3Ë–-ó[á”*?RÐüG™šš’‹-²xà>þñsóÍ7Ó×ׇ¦iÄãq?%¹eË …Éd’ææfŸ|Tî¯mÛ„Ãá3.¼ðÂgþ{ppðÖ·ª )›h] °‹wœ_…ë¹Ø) ÒÜ´›4)†‘®·¬Þ+§×‰Äó†aì{En¯”Rs]—/}éK~½•ò¤<´]KÓ4¦§§}ñTÝFólM}}ý;kkk÷¾EHÄÚúúú%‰DbÑ|Ò ]jè– 5$©ÓN¤µ®šo;¢JCT r/Tã5"ÅÁÙ’Rµ2|sjjê™WÈìììW³Ùlç5×\ó®B¡À»Þõ.xà<ÏcÁ‚Œ‡‰Åb<óÌ3´··ÓÒÒB±XôI¶ÊQ/·MøZÅbñã§Ÿ~ú?(C^’Á‡¦Ù·#žä€NõßÓÞd°{÷n¿CUâ¨4å9G¯² à No^¸páо}ûÞõïÿþïô÷÷³téR ÃðÛ£ à rÊ)§077GCCÃ!eªItžûà%—\rþÌ̌ؾ}{w:N¼Y@¨´mžç™ù|!y·ç`ñ²0ÒiÏGä–†=m’z¼)\¿¡GÀd2I0DÓ4„eYæ+¤"}}}¬[·Î7P‡—*õ%„à׿þõÁ!ešF±XôB„ Ã×ÖÖbYÖ›ŠŽÇãœrÊ)ÿ§¹¹¹³T*udÒið4ÏÃx²–¡Í‚ùVç ^Ö%;3MuM•ßaæÏ¶mB¡º®‹M›6X__?ñŠQ«T*M™¦9ªëz{SS†aøÜŒš_ …|#¯ŠéÔ€ÙÙYÊŽšÛë8]]]×ìÄÄÄóSSSO¾ÑR1ïY^°`Á‚z€„¦zÍ,õÕ!œÉ0ÎdYÒñJå¹¾xåÃm)wTN]UÙSUt.¥Ü733sÄûyI•…ù|þ¿ÇÇÇÜÔÔô?ï¾ûnV­Zå«£}èCLNN²|ùrººº˜™™aíÚµ¬^½ÚJ¦ZÛ"‘ˆ?$Ìó==}ÛK½——ˆÚÔD"!=Ïó\º®S,éQW4‹Jh%“Ifff¨©©Á²,LÓT€ÈÎÎÎ,Y²ä#º®ó«_ýê*àî×AUµ¥Óéó<Ï+år¹åªc8eç ¯L¡ƒÐ%‘–ÀM™8I7iöj©®©FzÒ·‹º®ûƒÜ”3T1(áÀèèèo_ @â[·n ƒÁ[>ñ‰OÜxöÙgsþùçóío›í»%_¥ ƒIDATÛ·óŽw¼ƒt:Íàà 555>¯µzõjž{î9¬ÃgøZ–%”s0ß"×ÑÝÝ}†”’™™™=¯I#{¡PøËË.»ìŸU»rQ+­`éx% ™.Ûˆ²b—È0š ¶ïØFÈ:˜bP‡+™L"„ðœeYƒAlÛ~YsF^ ’òÏM8Û·oGJÉüc¦§§ñ<xÀO^UŽÊÛ´i“_þ¢NN¡P8ÄE¬œÕxê©§ÞÖÑÑq[$áá‡^l}¥âÀiå½tß½sçÎòÈ ÏAœ¦¦t¨Wj'uìñ &!š››9üÇ?\Ê3Åbd³Yûu]x­ñP(ĶmÛüi¤ª]AuTU&ò•d¨ê‹\.G±XôÙãJÏKMM§ÓxžGGGÇžtÒIE×uõÞÞÞ;âñø×^Î6Ζl6{Íe—]va6›EA¢v\v.3…ãÌ‘Ó÷h¥ç!5Ixi˜›6R[[ëR9äSMéVqW0xp\úôôô²—Ëݽl@t]¿ûÉ'Ÿ|J×õ+/ºè¢ËÖ®]K[[›6m"N“L&™››C×uN8ᆇ‡™˜˜àôÓOç…^84Û¶ý!6¥R‰`0èaÛ¶©««ëT?þ²k×®uápxЂÁ`!™L>p¤{œœää“O~|Ñ¢Ek•]Û7¶W‚š}&"ôƒÐl„fãz®?ÔÔÔ é‹;*Q¯*\8ñĉÇã”J%ªªª™RñrˆÔ— ÈÜÜÜ 0XSSsÖÎ;Y¾|9þTO%Ê®ë266æs];vìðÛàT977Çáãe+¸/ÙÝÝ}ÉŠ+.Ø¿~tt´e^EèSSSOº®Ÿçµµµm¬,Ù¬ÜéI¡¤@I)Àôô4===~,1;;[æ¯æ'STŽQ€TÒ"K–,azzšR©47555R,£Q«¯¨o ­­7üÁYUUU‡çW…B¸®ËÔÔ”Ù+]¬†„) Q"—Ë111¡ôtdÅŠ_WÄÝÖ­[©®®öƒÐééé?X²é8^x¡ïÓØØèß¿r]•:R?±¡¦â)W]Uލa—º®322¢zx÷îÝ—íž5 žç}íÙgŸý±eY+{zzî½õÖ[ikkãg?û;vì@A6›eÙ²eôööúÍ=ìÛ·Ï×»ŠÚ><ÒU)`åN« RA¦Ú)%­­­´µµ!„`rr’ÖÖV?Ø»w¯Ÿ×ßµk—Ï¿©“¸V´òž÷ ÕõŸHdnnŽªª**‡v¾®€d2™)`J×õ*MÓøÜç>GCC‰DÂÿRRJ&&&¡ëX±XŒîînâñ¸¯*‡kªJŠ”á¯Ì±Tfò¨ ­r4ë¬ÜTÅ8+ðÕ稃 <ÂÊ„ù¡9þ÷P̲eËèëëÃ0 âñøB¯P(<ó†R¡†œR©T ‡ÃÅd2F£f0D×u4¬:eʰªMSÕ*š×uÝOÿVfÖTO¸’!„/!•:^§åÁ©MWªG¢ÆÁV>§@% •?·QUUå\ÿö·¿%‰‰DØ·oŸ?3²©©‰©©©7Û¶ŸÛ¾}{ ¾¾þ7ÝÝÝç}ìcãÉ'Ÿd``ÀOa*C¯6D×u²Ù¬Ï÷ÔÔÔø_Å3*Ú­T*Ù£;|Þ|¥$cÕ¦+æùpI]OyJ"TŸÊ‹tvv²|ùr{ì1<Ï£¥¥åÿéŸ÷Õ’JT²ÑJÛhšFMMÿ9êõ@×uyê©§0 ƒP(ôD*•ºüµÚ·× D"áÏêîììèìì\òíO?xžÇÂ… $‰øS¦ýÞ¾ FÙe¯X‡OÖV‘¹¦i¾‡§$¨³³Ã0ô'ÍWΤgggŸBx–em~-Ó¯K‡.—ûþøøøÊmnï ‡ÃËŽÔ¯=33C à™gžñ7ðì³ÏfãÆhšæ÷¨$ ¿’RÙ Ó4™¼ }O¯µµ•ÙÙÙrê5eéÒ¥ “ËåÐ4MýW !„ã8ª#lßÐÐÐù/–ö}K2?þ *Ÿ| '´.X°`YEä+Åà9*Õ˜Ši*óøÑhÔ1X__ÏòåËÙ³guuuär9‚Á ¹\ŽO<!©TŠD"AGGï|ç;ùõ¯M¡P ¡¡ÞÞ^4McÿþýJ‰ÁÁÁo9޳p#‘ÈÀáůÕzÝg®kš¶@Ó´ÈüãvwwåHó?”>Wv'ø†Ù²Ê?³zÕUWqß}÷‡©­­ezzÚŸ>±aÃ~þóŸ377GWWÝÝÝ<þøãª:ßWmê÷]×%“ɜǽ÷ç ‚‡Okll¼L×u ~* q®¯š`§ÔÓØØÕÕÕ8Žãç$ñ711A]]?s8‹ùa¡PðmÊüèóCfÑ¿ãlßÐ)1…BaÇÈÈÈŽ ÝìE£Ñ*)¥´m»Ë0Œ?;R£½²Êc*‹~©b õkœÙlÏóvK)u×uÝd2ù÷ããã?y±Ï~#ÆÙ¾¡r$íøœ~,»ZÓ´Ø‹¢–iš>•!„({‹ÅbVJ)c±XfvvvûaiÝcyÈñu|_Ç×ñu|_Ç×ñÀÿôæ°žÆnиIEND®B`‚PyQt5_gpl-5.10.1/examples/animation/animatedtiles/images/figure8.png0000644000076500000240000003334213245231431025450 0ustar philstaff00000000000000‰PNG  IHDRddpâ•TsRGB®ÎébKGDÿÿÿ ½§“ pHYsÄÄ•+tIMEÙ$|¦ÿ IDATxÚíw˜e÷?÷SNŸ™33™Lf2©¤‘jèHÙ¥ˆÈºë˲®QW_W]]v]EQVPqYu¥YÀ:ˆ” )¤Mê´L¦Ïœ9½=õ~ÿ8ó<™A”4}ß뽸¯+W2ÉÉyÊ÷þµï¯Üðîzw½»Þ]ï®w×»ëÝõîzwý¿Ä±ü纺º« ÃN™2ås+W®;ôè$Ü¢ŠëºH)1 !RJ,ËÂu]a𦏕U.—…Bäóy ÃðoÎqÇño4TÀ‚^{„óbM¸F%KNaçäW‰‰¢è¤_®¢°'Œ”×uÿì D£Ñ³®¹æšu¥R©òB])CõB¸)»Nat—¬Hð[ä´mï.f̘á2^BÊ岿1¥””ËåWUU]WUUõ@ÿ¦?« ±mÃ0|iðnÄq· !PU˲®K}:ÄÁ§N.&W?;1¬0I:) ˜8yÇäì³Ïþ)e ™L†{{{ÿ6›Íæ' Rʰªª‰–’]“wŠó¯¬Ã•6vVCdÃØY '«QÞA:—¦r¹Œ¢TT—ˆ'!ŽãTžWJ¹jÕª«›››yðÁ×@¦M›¶°T*Í·m)%ŽãLPYŽãø*KÓ4ÿ3 fMU‘$Aw7ñ÷ÐÌÑDœH½†¬HCW€à#áp˜Ý»w8&@šššˆ4MÓ41]›Xµ¶ÂòÉ離%ÄK¿bú¼&†Œ.ò*N©€÷œãí†÷gO2ÆÞ‡Èf³D£QE‘6•U[[»fÙ²eóÒé´o/§²³=/+ 2f𠃸®‹eY¾±WQØîàÂÕ@ñ- ]’^WC¹-€eYÇE"hjjš,Ã0NN$d³Yl\ì›Ï¸ò}óyúÕ5Ìk¾‚÷ԯ俶Šl*‡.þ›ëP(p×u)•JžíÀó=MñgDJ© Û¶ÉårضM>Ÿ÷uk©TBQÂá0¶mcÛö¡‡‘ÂñÿÈ»‘ŠKÚídãÖ.’Uëûœ·#×*•J7ŸþùwªªŠ@03L?½w8Œ3Ú‚HþóSUð[xUn& Í'Ÿl'U‘Rz¶Á¤X,úï"›Í‹Å|0ÆIKc,›•Ïç;ÿ€ø/ز,lÛö_ž¦i>ªªúÞK±Xô½'!X’Ñ^ƒ©ï™Ëu?ZÊÏ>²¦“Ò¬íɲ'û*ùœé«> Î»þôéÓ“tÒnD½ StM´sú©Á’ƒHD6†QqR:ù-Õ Hiû¶Â“T*…ªª8ŽãÅ!Ð4 EQÈårƒA"‘¦iÊ“O>ù›ªªÞñÊ+¯Tý9‘ÞNQÛ¶™4i7ÝtßùÎw¨­­eúôétuu‘Íf}cí8–¨Û\Šù©Üô«P8•›Ö݈®©¨vMk$^ãÇ(òÊ+¯Üçýÿõë×Ïö­”x*ÄtMâá…ŒËM'ß«Y³÷^&742œïeôÕ0J@NPÉÞ†TUÕ$‹!„ð7¡¢(þ5–e !áp¸p¸÷¨·¦L™2iÊ”)/¹®;ͳÙl%½êª«hlläW¿úÍÍͬ]»–Ûo¿P(„¦i¾q7 ƒr©„СXÚÚZºÕ!|¼Ì¬i¹u”É×$‰Ÿniƒ  ƒÔ××ã8Î1é0Ã0¼E(œ~?¡j›çßxEÚõ¬>ãnjBõ”Ëåʽ–˘¦I6›õ7V ð¥á²Ë.#‰P__Ïܹs}`4Móµ‡ç}W@’Édí\pn(ŠX–å_¸\.óáÃ0¸ÿþûY¾|¹¯;½_°`·ÝvÛãîÅ-¦aâL4M%›t¸jáǨ›#²8KíÃè R¥1oÈ4Ø@644\FoŠÅb7J)— 188Hbh„7³ôíà¹5kÙñúömÚÃý|—/v‘/d}à<Êó¢Î>ûlª««‘R’H$|£žH$“_ue³Y_]W£îùßÞÅEáüóϧµµ•Çœºº:žzê)žyæB¡W]u§Ÿ~:©TŠû￟¾¾> à ™LúѸiš Aj’rÉá®÷>Å£­ßà¦ù_eíŽPúxÍÞV±#Jegéšó™ÏP]]íç>Æ{"ÞŸ“É$@Àä‡?ü!†aðñÜç»TT–,YRQ‰Ò!9÷sFpr*Öp{(ˆ5DH¡»þ5†††ÛÛ–«:EpÝ‚O³¾÷Iœ‘i\7÷Kœê™Üþèå¾k«ªªylÖ-[*äã˜s2iÒ$¤”!(•JþÆTU•P(D±X$‰ø¡€eYþ÷3 µµµ·,]ºô..9á„H¥RÒé´¯‚¤”(Šâ³ŸÞî£\e,šš6mŽãP(liQ,)—ËôYIZ¦;ÈH‰ÆIÓIMíC Ó5QJa†™\ItEbY¶e!‰¢ ª›9Xú=É$dÝ~êN0#^Ì3Aåx*¶§§‡P(„뺬^½š­[·ÒÙÙé{RªZa€kjjÈf³¨ªJ,óÕž»ŽSòŽ€˜¦9µ©©©¦§§Ó4¹çž{سg7Þx#?øÁH$ÔÖÖ y饗X¸p!»ví¢§§‡¹sç²mÛ6öïßû‚ ¾óì³ÏrÑEQ.—}•%tÅ÷¾\ÇEU¡ì|>qÑh2Êžø>ûF~¶ýn,ˬäRþȃ 0kÖ¬;£ÑèTéÊ)ÉÑÒuA·éü¥Âw_øi÷ F6ˆM‰îut æ0ͰH8fÆŒ bšfªT*õ8޳DQq×]wI×u…·= ø† •J‹ÅüMz¸4Šv8Ý4M …ªªò£ýˆoûÛüô§?eýúõ¨ªŠ®ëhšF*•bïÞ½äóyÊå2‰DÂS_!UUÙ°a¯¿þºï«½4ßß·±qqYÖplû*³´ó¹ö¤Õ´ÔLA TÔœ"ÞɳúûéÓ§× !(8eX8L}<ŒÓÁê “M"ˆª˜eŠC’Fq"f‡Ï8TWWÇI¥R˜¦ùìž={nŠÇã×Z–5˲¬¯]pÁ¬X±‚G}Ô·«^éQJŠ¢0<ÎÇ}6_>çijìy¨5)¾µé«† ¢ÂYy*TÓ4188Ø988¸MáµoÝ «W¯Æ¶mB¡Ð5tðàÁ ?8pÀ·!…Bá>T€(Š2Dz,TU¥T*Q,™;w.o¾ù&K–,axx˜ÚÚZ²Ù,år™H$Â9çœÃ3Ï<óG/®i_úÒ—|CèÅ ¥L©TB¤Bvèûxï5ØÖxÏJâ ™ê0‡€ü°}šEdž€®£)ÈòFÿHWŽ©ÀŠ”744ø6@Q”_g2™ÕoŽy®¼·ë3ííÿ±2½¶¶öFÃ0¤¦iâî»ï¦±±‘½{÷âº.ƒƒƒ†A8¦P( ¥dtt”]»výIî©X,楔޵ƒápXwÝRqÜC*G ,ÇfEôÏ\À–äãä’»Ýçp´– 9Á¦¸®+}Ä'…(e!•šªZL¥ˆÒ@©"‘¾úmnnfhhˆ·+MíóçÏš2e 7Üp=ö˜o{¼€×Û`áëºÏŠ+ !¹\NÔ××3<<ÌàÀ ñr¹ìTÞ6ŽÅb¢T*½mô,„ð+éfΜù ªª¾üòËýì+)I þîæ›¹égKù—³£/0Ólæ'¿yÞ ]tÑE#€ލ³,‰¢À";Âðà ×?t-R qý]ƒe[µÛ[{©ŠÄ}JÝ#?ÿãò"2‹ñâ‹/²qãFZZZغu+áp˜õë×û61‰ÐÒÒ®]»õ“tǬ²¤”èºÎ¾}û®¤f±N$¬’ë·)9H÷mÕœ(—ËŠ¢|ó휄·°ú>ðæÌ™Ã?øAn½õV?Ï TãØ²D¼ªŠæÚ©<¿ã×<Ñw¶Õˆi¹PÙᢦ¦f’@Ð5m§]ƬÔUÙƒœ¬–Ž[RPu MS)åMl#å%Ýd4###„B¡wäøÇá•W^!ãº.ýýý~¢ÊKÈyìo]]h𿑱ãÈìÙ³+@²"šQ)‰ÔË ¥;ž—5¶ãzþëpé¹sçúQí!u'°]Eh€ dÑT Åq\LÓòƒ9˲(8ej§)H[%ZF™baÌOø›`à¡IH[ñ=A[SUUtuu=àí]×ý§î×u]>ùÉOúß3~íÛw(Ößßï{¡ñxÇq¨ªªúr:~á˜Y±b—]vgŸ}6ßûÞ÷hmmåä“Oæõ×_gîܹd2Z[[ ‡ÃÌœ9“7Þxã°)ò@ À /¼ÀÞ½{éííõT!…ÖCF#ÿë¥[Ìê|ê±O`6y'Ž]D"‡¤®¢%Êë“9ø†àÁ~Äþž.~»÷§üíªr÷º[1M iB×uŸJùÈáÞs>Ÿ'‰ÃËtÇî„*PÔ1m0ö‘ÑÑQ_=‹„¸Þ.ˆÇã„ÃaŸt ,]º”îînª««}£¥ëú;^ô-*+ ( ôŠd¹\åb‘i+f’Ëåˆiu¤g iF€ª´Ž“û•ÖpsbìIÂá0éTšõ=ϲéÍ..>ùcÓ(•XǪHÔ¼yóülæá•555#M§œrÊ@*•BHpg –_YC~À¡8l“p(ÙÏ$yïðOÙ¨w$.ضm‰D‚ááaŠÅJéÎîÝ»ýÀÐÍu]^~ùå#J&%“É/ }wÌœ¾`Á‚‡y#• –r¹LÊÍ1u®‰¨²iœÖDÙÍQr( Øy•áŸNö\J‰W²ž)’5EL$“ÉpõÕWóôÓOû1Èá¬L&ƒ®ëRÓ4ššš*6¢€Ž,ÇE(:®«¢@ »~NÄSåLj®ëãeøúúúü¤Ìøßu …½ÀÞ±ç{Œ€¥Py‰¦ab+ªªÐ¢®âïVÞJM ž|ï|n»êV~±þûèsÛ±Y0é4’STrÝÕÓQP0Í2®U‰ƒ2™ O?ý´ï–éR…x€ááa„<þøãÄãq:;;innfË–-Ìš5 ÇqØ·oÍÍÍttt—%¥Tc±{öìAAô|Õ #'Iî5m·Èt˜˜…Cùšššà}G[¦úÓŸþ”B¡Àç?ÿy¿0ÁRM„œ<ål~×þ©Î®Xø·Ì¨Y„íTª`< éîîækÿû»•ÄV)ÅÆŸìâÀ dSy’Š¢¯ŽêvíÛÙU]ž?>]]]ŒŒŒxÏÎÉ'ŸÌæÍ›aÑ¢E¤R)FGGÑ4íØ$Ä‹ª=ïÉÙ©ñfG–|¿ƒU”(žñRUTUú¹‘@ à UÓʼyóhnnftt”æææJ…½eâàM `K Û±HÓ•£ Ý_4MÍ¡¤¦p²ŠÔÉæ²Äô8¹\Š¢ ëº( ;7mÚôOBUQ”#.‘TU•¯|å+ÌŸ?ŸÍ›7£ë:¸®Ë«¯¾Š¦i$“IÚÛÛÇ›¤”5Ç"!H)ùÑ~ĬY³¸÷Þ{+e“sJ~’ªX,"¥dÒ¤Ituu‘Édޏ:dB…y[/½ô---8p€x<^IÃb£k!RÆ Ó§Ì£~Z›zº©L‹º¹Àz\R÷þFž®Ãè­Ð+Žãøå;c¿'‹ÅâóGsc„««ëº²sçÎJ …UUb‘–kU,«Õx-8& ™7o³gÏæ„N`Ù²elݺ•eË–ñä“Orñų{÷n6lØÀ™gžIss3Ï>û쟤ÇßiE"¾õ­o!„`hh¨Rh˜ØªË†ÿd“ùUæ5.Á•.;ú6Ñúh#½†½,MSY÷µaŒÑQœ’dÆŒèºÎѪ¨·ñ ‡vîÜyñ¬Y³^(•J¸*L½!ÊÉËcØŽCSxÃF;ŽárðÕûžÈ£¨§'âùêG Hgg'¿üå/9å”Sxå•WÈårôôô`O>ù¤_™ñ›ßü†@ à§>r }C×ukìÁ?˜J¥fäóy,S2+<ƒ3¦W¤T,»~U‘2 Ã'c qF+i'¡HP$Lƒ\.ÇÈÈÑh”x<Îi§ÆË/¿|\?Í+¡Ôj³cŽ|¯ƒmlÄ.Jìr¥?Qh¾#p¬ÔI4òôÓOóÄãOòF„ÇI)~O‹P*‰¬êêjiÛöÑꬑÞÞÞÿíýP__¿\Q”ª¢€®ã’ÏçÀf«KZ¢¸JŽàÔ"Š,¡j vZ§¼/F~[Ôg¼êÁ|>_Éå‹ãÓ1gY·Ür /®}QVдBº¬–~l”H$+k¨½ƒA¯÷’ù® “æÐu´uæN^HGj(PN9¤»|.lÛîàø,%0}áÂJFÏ£Ö½ˆX¬¬¾…÷~-;†_æ…-/¡5ÓÖ7à…^Âʋ֯_ïñUǼÎ>ûl.¸àæÌ™C¡P ··—‹/¾˜ÇœóÎ;b±È«¯¾Êüùó‰Åb<õÔS~ îQ¢(Ѝ¯¯§/`E$K?RGu†t%ɶ~êöU1¼ÝÀuˆÅ‚¾'144ôæñx`×u¹ýöÛ©®®æŠ+®à¢‹.ªä $‚LºÄeg\Ï-¿<“ŸÿÍ.N-%áìg÷ú;0 ÍZËå2Ñh”`0xX®çá®mÛ¶1uêTPU•ÚÚZvìØ‚ŽŽ¿xçά\¹òØéw{)•KèŽÎ›w§‘XÅC9t¡LÔGB›Î2M“úúz¿âܲ¬J'o Ã% àR©?ë:ÈÆüc(¨’G÷ÔÖÖ6·X,޲¡¡Á86äꫯFÓ´?HVµ··ûÄ¢”’_üâ•÷u¬ôû%—\‡>ô!\×åÉ'Ÿ¤««‹h4ÊÁƒ‰ÅbTUUqàÀr¹ôôô·(„à‡?ü!Ë–-ã?þã?¤ ñxˆd&MM ¾âVJ›€ˆ ]‰eÙ~­˜WÖ©ëzÎuÝ pDüÕ‘^s|¾Ç @u\Åq]&‡gPrÓ¬,BHŒ¬‹[’~öð¨kÀ¤µµ•n¸mÛ¶Q*•¨««cÙ²elܸ‘`0H8&“É÷¶f)¥[UU%wìØQ)YðJP%H!‰EÂ<¾û~¾uåoøÍþ‡x©ãeÎ:ét^s7b¦ÏèzTŒmÛ³êë룣£=Çzo¶m· !*Å‚F–Hþîöf$.Q3BPrp¸€U¼~W éT4Î1¹½B¾ùÍorûí·óÉO~’¶¶6\×Ð_8ÖŸ”’žžžã H*•ºèù矧¥¥¥}Μ9³³Ùl¥nX(j$%3Ê~ùßyVgÕé§Pvð̾] µåH¥*k(¢¥¥…R©Äµ×^ûz[[Û†uëÖ­<‡ïú …ºƒ’}OÚnïÛ8A5©B·ÍŸ± ‰ÇãÜwß}~ÂÈ+4Ð5];ä {å£û÷ïŸq<íˆW-ï½@5\´0ä{áõΟóäO~LyDb•\Êi×…TU%N …9¢^Ã!/¼ðBn¼ñF¾õ­o¡ö©ÌÑ8¿¿\.SUUE*•Âë‹?j@b±˜Ü´iS¥’# Ï¡J©ž _Êï:A ¨Œî3Ø\öNR×õ)Ç×u/i¥ª*‹/¦³½ƒ×þ©\Ù  T(ẄBÒ§*¼c=ǵ‘´X,òéOšT*Å'?ùIzè!N_y:ÝÝÝÌ›7ßþö·¬\¹]×Éf³ìرïš?*@BcOfÛ6²ÚeÆ95h¬²Áë#?CµÃ$Z ’û+ÁϘÛ+†‡‡ÉªÇãñ–¹sçOOQq„M©TâÛßþ6MMM$ ~÷»ßù###L:•d2ÉÈȪª’L& …B”ËeÀq$ ±cÇfÏžÍ /¼à÷ÐŒŽŽú•ƒƒƒÄãq¿xðXŒw´!ž[ƒ wdß2ª¨¢F‚}‚‡˜={6¶m£ •Vu?gÝdý8¾+Eb(I®ßaÃ7“>ËF‡`0Ƚ÷ÞËç>÷9>ö±Ñßß7Û$•JaY¥RÉυȱÈð­ 4G ˆa8(¨ªBo§ÁÝ÷~•o<û/|áü/ÄùŸ­_¤ý79Œůì8á„hlldûöíÔ5UqÂÌF–OZ†êê@0G"óÒÐ?üáÿè:Š{”ãU´á]e{-¾úÝ{Iî³pM‰¢ Mñ5ŽB9&’H$¸ýöÛë&½C!Ä¢¦CžŸöVIDAT¦¦S¶CàU]*¨B–.;…†¶*–¯8)µM¬)©TmŒ ä…¯Óg̘áyˆL:Ý¥ùì4ÒMãÆ@£-B¹3‚ÞMUÕ£v@TUeáÂ…œtÒIlذ5£p&7º~¬æmbo°ÛQ2<<Üåºî\¯€ é¬0‘ˆ‚´uÞwÒ-<³ï‡Ø؆äÀï‹~ µªª*R,ãGòpS¦Ly_±X¼p¥”ñÎÎΊ²a2ÐS⫉o²§m˜;¶ý+±P5Äî‹¢XA¶¶¶úmib3w^ô#6öþ–¼øŸÌœQÇP9Ovw¥¶W×õc¢âƒÁ ßüæ7‰Åb455±cÇÎ=÷\Ö¬YÃÊ•+ikkCÁ¬Y³Èd2¼òÊ+ÇÆöZ–Õ /öòÕÓ/ käúm~3p¶"( 8¤»M]×}7ôIÄ[¯»îºó¥”¸H2U£4Màf¼ú+t"Ç© ç`m’Å$§7]ɳ[Ÿ!t| UéJ¤%¸vù‡øï ÿÊò؇XÙp#+,à;­_™Ðû~´€H)ñåž“ã¹Ù^ÇYww7@€ÚÚZœÓ±‹ @uu5¶m³ãkE¬œDh ªW¡¢i‡"㣫¤'“I\×%c™sE[­¨})ltM…¤‚q Jþ±á0cÞÔø H8L2˜ãÌE8ÿü øÑÎçJ°·'Åší¨Tjl…ztã“O”R®…B\sÍ5Äb1nݺEQسg_ô100à+ œ|òÉ|éK_¶m~øa80aŽG<gppÐF½Á4G›s]˱Q„Bº'Ì#ÿ;ú û¹ã·ÇìÆyt–Û0Ê!ýÐD7ßõôŠö…@@Dz 4%ˆªh´ !­B…¦¢Š£žÇU*•Zš››Ã…Bªª*Ÿ2¿þX± 05 +V¬`÷îÝüõ_ÿ5gœqB"‘J±—-‹ ÓÜÜÌàà o—ôA½¹U°zÕ¿òó=_'y šÚUÜrÆßó™ž÷W\\§¢r‚Á ?ÛÑu] ÓÄ*d×,æ‹¿ú"Ž´ÙËã” ‹ÌËä fÏ– *¹ŠË/¿ü„ßؼysÇÞ½{—®'˜N§+ĸäßPT¨4ן@ê£ûL¼X$Õ^‘પ*òùüýÇþüç?çøwß}7ëׯ÷ýý|>ïÓ%©TjBªTJIccã—E¹¥¯¯ïÀ‘Jˆƒƒ"U¦ÔMaÿ@‘¢Ãûyrï}ض…eUt©išƒAN=õTöîÝK"‘ Ncº&VÙÆ0*S‘v×næœkc8¹ÊE7ÄÉj8 k @ú3ƒG`CÐõJ=˜î* l6);†^HPN¹•º5Møµc6Ë>&âº.<ðÀ¡ñM™tÏ­¢ÂÛxcýæÌ™sQ&“©þ( óæÍ{®ëBQgxx8V.U&{ZŠM¾?À®]»Hä ¤l²‰,£‹ä-LK¢È €†aÐÜÜÌŽ;P”Jë´#M2\‹p-(ŽÆ´úÄgT±spu‘Édå6੼#I/WUU±zõjöìÙÃ}eTÇ!Vïbרþ˜/nó¼¿c‰CþûàÁƒÛ¶=SA1&9õòjô€ 0RÅûϸžgöýMÕÚn0¸µ„P„?íç°á´ÓNÛ¬ªªB ‘P[‚lᨰžØøÔ!Þˆvdô` Gæ°Més¯Ì›ìæš®ßjmIEUèÞoó•[¿ÂÖ~—KZnáŠ%äSÏ_€eZئsD€xiÙoûÛ$ n¾ùfž{î9¿r±½½eË–‡Ù¶mÛ¶mcéÒ¥lذá¿ûO’Ëå¶677†1S¡;´œW’¤; ýíVÑ¢œ’„Â!ßõ}§ö0@/—˶m°5²‹÷ž_‡+]ÃE±ƒHKÁÉ«ä^«Á)ª>±˜L&ýàÑ£G\×¥³³S¾ñÆâÑGeÛ¶mÇC:¨šÂ ÕK8˜ßÍHù ÿëÄÛ j!B¡ –cc™¾zGDjjj>qÞyç}£µµ•Gy„/ùËôõõ±wï^r¹œOÓ¬]»–™3gÒÓÓƒã8ŒŽŽŸÁ• !8餓èîêfãçÊH{Ì!é8„Bºÿr¼üwº¿<I ®ÒÙtÖ¤Ó2¹…§;¾Ç̪SØšú öÆ0¶u¨Šd|D¡P¸cÿþýÿ>iÒ¤‘‘‘ƵkײhÑ"6nÜXéÈR]’¿/Ó;u{6?@2—à ¿ûª¢Ò+H2&Ož|´iÓ^TÇqعsçuÉd²ç-lD­¢(š”’M›6qÑEùäæ[×þýû}‚sëÖ­ÄãñcIJ,n½õVÎ;ï< Ãà±ÇóAzžÖœ9sØ»w¯O x7¹pÚ´iÉÞÞ޷㊯’EÐ½ÏæÛuÿðã+øâÅß'n`t{'ƒÖ†áø€{Äá¸*I©ª*·Þz+Ÿÿüç¹ÿþûý <¶pÑŠ±ª(e, –`dÙVⱓFÂØõAܲŠ4¤©„‘âL/÷ýæ›o†ÞN]O[+ªJ¸J#‡:¦Ø%»¤ø6WQJ¥’ešfâ˜q‡Ù³g“L&9å”S…BœrÊ)D£Q¢Ñ(?ùÉO¨©©áÌ3Ï$N³nÝ:¶móž÷¼çáööö÷ööÞ4F66«ÓuÝêÞÞÞJ2`Z&ùlŒ;ïü=íYz†L!Ã+}oRè Ók=¶”ªª*r¹Ü„ÑBÚÚڸ馛ÈårTUUUf ܱ9íÀ6ÂÂ…lË„¦‰#“²›Ç*…ô #þñÙÐÐ0Ö‚µçY|ZŒ¡íeF÷YŒî6qí·u ÞwL€D"î¼óNÎ<óLî¹çŠÅâ„ì—iš¬]»Û®dô‚Á ÿïÞð.oŒŒ¬ºòÊ+?ïQô³(kg;B&Ã¸ÉØ’=ov2YYÀ¦•éÜÓ´åtº~Ž:‰ ý‘G㨗{†‡‡«„n¹\^.„¸¸\.ã(.¡Px¬âQ€*1M‡̼“îì.Nšµ˜ÿzî>ìºv'‚eZ È·âÀl)e7HaÑ¢Eú^ëeçËI)ub‘¯R½_^aÈ1«,Û¶ƒŠ¢ðÚk¯Uô¡dÂd!À¶„R1æ^.¢P(L,ì=“3nPrva§˜yFË5q%«ÄÞìÜ1÷Ò›,¥ôéþúúz‰CÒŸL&¿æûÉ“'LÓ´‹¥”°]ÿPË4Hì“T5Wóü›?Æ:ð1(gSVðXïOÉ@HoðØ)@ ^UUQ*•v_rÉ%í===X–%kkkÅ?ÿó?³xñbî½÷^öíÛÇâÅ‹yóÍ7iii¡¿¿Ÿt:Í”)SR²}ûvÒéô±ràÀ¿Ëår›Ô1~"r9ÿ–:ÊY»$)¥\Ò]™6î8 &MšäÑ+U±XlF>Ÿ?¸ãwJ8¢a%—Ïü'&×Õòó=ß V×H¢ùÉõ!_÷:ŽC:FJI8Ʋ,¼˜·óTMÓX½z5ù|žÿøÇ~­®\EhëîÚ|ª2‡ßž ¤ëHCeг˜¦½&¹úê«îUެY³fªWlÛ¶7×6ãº.“'Ofúôé”Ëef̘ÁºuëüdÞÎ;—eYÖÖ@ =5vþÀ|Kn]'¤ë Šb5Mò,ÿzÉ’%—½øâ‹_µ,ëä¾¾¾CcÞ( µW³ëÄ6¾±ùfN™‰ŸBÛàNòC®_ðÑ/wtt<4–ñ34M{åír)ï{ßû¨¯¯ç¶ÛnãÑGõSº®t)›µ»!ÝÊ{o O3e 0{˜Ã89ñ³T¼*z/ƹí¶Ûƒ”J%¤”|ÿûߟÐ"¥d÷îÝ´¶¶6‰yXí§®ëòÑ~”sÎ9‡ŽŽvîÜIgg§?ÛÃ4MN?ýtöïßÏž={˜={6~&±\.ëçž{î¿*BaX–ÓO cqS:;6î¥E=gÄ¥wx&m)ë¯û½à^qÀ‘˜O$ý“¥i¼òÊ+¬Y³†‘‘ŠÅ¢?O×+ ( “hm ’Ó¸ý’/ñ‹Öÿd$2‚=7Kb³Eêå*T­Ò²}ÖYg­ó)•J„ÕóNйJ9©P”?^Ö,‘J¥¢Ç)%×\s [¶laÕªU$ -ZÄöíÛihh ³³“šš.\H  ½½Ýé½€þþ~)©¾>/‹c„—fA‘HSÁNk¸YÔóµ8–‹æª.ñ§ÕÕÕM˜5ÿN‘t±XäœsÎñÁôôw]]ÿ½M=*{¿\‡ífø›ÿü@@EQ]"tÕU¼Ñ¸³ ÃÀ¶mª««+É'µK‚èòFÆ0œÈ“ MÓD6›}öí÷@t]çúë¯ç®»îâë_ÿ:ÝÝÝNÒ)‹tuu‘Ëåü)ªª’Íf©­­Åu]ÈÀÀ6o(Þ°IeeaR´Úhii™·÷&ê|ô£åþûï?¬2#Ã0r¶mw{u]Bˆéªª OÚý‰¨šI1,Ëb´lS}鵓tdIà Rì@"êWNzñG(âŸøÉd’íÛ·W•j-düóáýî]”J¥r"‘H@¼¹Š_øÂþègòù¼OÍK);±Ìg‡††*…ړ㨪J[[›?ËwñâÅcÔGÙÏqضí窪ªüù†‡H:~pÓ¦Mz?OŸ>ÝRUU;ñÄéîîöö^˜a${Fh^ÙR‰uëÖ¡iË—/§¡¡6¥} :^x!“'Oæ3Ÿù <ò/¿ü2—]v¿ÿýï™5kÃÃÃlذX,Æ©§žÊsÏ=wؤåa’J¥þ*›Í~£¦¦fQ>Ÿ÷ËûǪ·-¯ÈÎÅËuTUUhjjbæÌ™ L8¿jü1Bã‹“½áhG“ü’R²nÝ:†††X½zµKyRèyJ¶m“N§9묳ˆÅb$“I2™ÌøSØ0M“½{÷rÛm·122ÂŽ;p]—íÛ·ãº.ûöíóŸ½P(088xD,òa’L&]WW÷ÏË—/gõêÕtww³yófººº~â~êÔ©ôõõ‘N§™4i’Ï~ú%=ãb˲Èçó>M>þ@±ñ³sÇ^\j``àá±ÿ7r4eE†aøR›Ífýï?tßSK¦iúÕxÿæý½ã8ŒŒŒ°jÕ*_C¥›Êë1nƒ¾ñÆGÔBw$燈üã ríµ×bÛ6³gϦ¯¯Û¶©««CˆJ2¦½½b±H0ô‡${¶ÀÄ/óa¼$©ªJ  ¥¥Å›;5ÒÙÙù‰ñ1Îø ðpTîÅ_ÌE]Äð𰯲B¡ŸŠöÔ×x`üágÞÜɱ :L_rûv×–RvI)ûŽ7 |úӟ桇âg?û/¾øâ„ó8 à úe÷Þ‘žk쩯ñ§ÕŒ?éÍ{!Åbѯ2œ:u*étú(‡#ÃSYMMMìÞ½ÛW·žZ…÷gOZÇ×T™¦‰®ëÜqÇ\pÁüû¿ÿ»—_÷YkOÚ«ªªüA=RJvíÚ5ë¸Kˆç>~ðƒœÐS8Þvx“=ýYUUåŸÄãíJ#ò¤ÅóF<ŠÄ£«¥”€ËJ§Ó³6oÞŒeYùéÓ§w¬ZµªöSŸú7ß|3ù|Þïµ÷ÜZoßxš?“É0{ölÎ=÷\¢Ñ(çœs6là’K.aÍš5\yå•<ùä“,\¸ÚÚZTUå¹çž›0íúxò‹îîî튢¬~ï{ß‹¢(´··c†?ïÜÓ·5558Žã”BJ¥üõãU–WÑç}n¬Z]:Ž#lÛ¦¦¦†L&£# ~N£X,ºwÝuëׯ§ººš‘‘÷·gÕ2>Ñ–Ë娽{7 xçÿznïÖ­[±m›žž7’éˆìÝá|È;«Ж,Ybmݺ•;wÒÓÓÖ-[X±b?øÁ¸ð éìì$ 2þ|:;;yõÕWÉf³ ‹ÅürSï)¥ßŸFýQårùå1»´gdd䋇uâ‰'&n¼ñÆúK/½”Ï~ö³ P*•ü9í…B)S¦øœyãoUUeæÌ™d2ÿ´‡·sÞšæµm›7ß|SW §Ã˲xøá‡¹ì²ËxôÑGI&“¼ð H)dß¾}•³¥º»'d½Á/étš`0èOŽF£¾Ô†ÁìÙ³Éd2(в+“É\Ãq^º®óä“OòÔSO‘Ï癿9ûÓ B¡P&“!—ËMโÁ ^x!/¿ü2Þ¼u!ííí¯ œy<Á³GþÏsçÎÝ{íµ×λù曹üòËY¶l---<ù䓾jý‡øyä Ãà†n`Ó¦MŒŽŽú®°×“¢ëº G0D×uº»»—ø >ø wß}·ïº{A¯w—¾So¢­­í\ÇqöÔÕÕ%ŽôžŽÊÁ…B±ºººÏ…B!¸*/>½ïMzð¦<{™6ÏßO§ÓkzzzÞÏ_~E/^\ðúEt]géÒ¥ìÛ·ÏwÉÇ}õø±íÛ·Ï- íGs#Ç<8ª¹¹ùçMMM×Î\sή©©¡P([[[£ã¾þþþ¿4 Á–––mñx\äóùHccã RJ …Âa- ˜¦yŸëºV¹\þ¡¡¡Ñÿ+€±ï †B¡¥‡×xQ{8Nd2™]ü?²‚Á`m8þG×u#`d Hž|òÉÿó /HÞ]ï®w×»ëÝõîzw½»Þ]ÿ­ÿ!öp Á—…IEND®B`‚PyQt5_gpl-5.10.1/examples/animation/animatedtiles/images/kinetic.png0000644000076500000240000001517013245231431025524 0ustar philstaff00000000000000‰PNG  IHDRdiÌ|†ŠsRGB®ÎébKGDÿÿÿ ½§“ pHYsˆ&ˆ&¬‘tIMEÙ:ÅøIDATxÚí{tTõ½è?¿½gÏd’ yÂ#J(J¢ké õÔ.½Ú.[z´uõ®ïƒööœs[Ðz{¯K¯½´—Õz=*·Ö=çÔZ¡*xJQ¤ ¯È#òš$3™ÌìÇïþ1Ìf{‡ Lpå;k¯döþý~û÷û¾¿ßßc@eeebc0ê ªeYÚ*®ð…¦iªª €”˲Æ03B „@Q”‚”†QæõzÈÏÏgåÊ•c˜!Ø¿?{÷îM!ÈDÃ0*Ó š¦‰®ëcFÉðù|!2TÖø — RJúûûikkÃÜ0A^^S¦LAJ™A€eYô ÃeK„((@ ˆ&1Ë@õ›ñ;1ª¥‚¡H ‘Ÿ8‚¤"™ ^!„æT0]œrA£“ú9º2ÆgnÈgvmIvþ‰lÏ'v·ÕîÇ3'ݱO6A˲Ôd"X–•S @¦aàfB*LžÇŠ¥eäå)˜&H â‚4” (ëGÌ ƒ±‰ìÓ0z5dŸ†ò`…4¬°+¤¢èš-MñK^Ià9 ÂIÜ(x9²"ükRJT©R1ÉË¿TŠ´À0$B]qR `H4Ubo± ïÚ…rÀ@HbœÏÃh÷¡·ùð„ómNW©D &!®”Ë…„ÒdWÿ¡  ðå n»« ie©íçÂñ–üEг@=faöz°z½½*²Ï‹V‘!FHA‰zBÆÃâQ’¨Á$ĵB.¤ä¤~Cš(°X3·EÈ1®Ý†H¤ ¡à)’P½0–þ‰Ò£’6 뜟H›Ow¾­îFJ¢²–dbä‚ íFOŠTNö«]Nÿ%K””xýï Q£S¢HL«ƒX=^b=*ôz1 „5b!Ñjn%É ¿ÃNŒ¤|/,RG= ÀŠK©4@ y… cäMId–e@ןK]y9'HV*+—10ã†úø|£KW¥ËVÂc“ ú@ÑÀrä ’KïŠøxlû ˆk,ŒITBƲ¾Ã—¹’ ɵ¤d¶%‡P÷‚ZñzqÄH[Ý.Æ0ÃJ‹È¼¬'ä‚#„ˆÍTP²ª«¨ÐÕ®sêd5s¸aÆMT–N`zå§Pèìoãdð/´…>æxwŠPÞ•3 æ\B†‡ ·cz)ÉxûOÝô´Ã«?û¿ÌŸ>êqì§) Îôå×{ÿ–󡓨Šs¹DFÀ’V\òYçëä0¨@'<+ÙxWr]Ä,^}± -VÆGÏì`aÍBTEuõ’<ŠÆÔâ9l¸íenýÔ}–îX.Ôk°íOíL¶ê¸¿v-K>õUæŒÿ\Ö ’+œ †—aw{‚ôfkײàõì$à/åý_¾‰ßëÏ*Å’€ûkÿ#ÅyücÃÿÄ«úìçªGÐrd€æÃ=Üÿ÷CÍÄ™´tæðù÷³ ˆ•S­á¤®UY¹óóã®n2§*Š;rÐG¤ßäç>b#¢F„÷ÿ²Mø¹aÖ¼o aV|zM{iîüà"ATÁÉcTV”P3q¦M@)sÚWªjsîöæBå\¶#‡? Q^àßÞv¿c©s¡Sü·«éé ³õåNª'TñÞ/ÞÊôþÍgþ=½³Êþ [ôõ˜Ü¦e ‘twèH$××\çèÒ^ò“#|$.7/Kq2~¹ä‘öqº'(B¡ù`?åE,¹~‰£Q£±½@ZPP¨2sö8Þûp?ï7ÖgÔY³ð§XÄÐT…smaô˜Á¼OÍÉpŸ„\ê“k7+ëÀ0ÙËÝŒ¡È Q:t´ÅÐc°âæ¿r%Þ9ñO¨Â¯¡‰ “}œ<åþ•EsnJG±ø šâ£ÀWHGôcg‚XW IÐcñÁ–;?7\“LšO‰9?/ÎÇ£çÉÇ225tÄèã@Ç›©2â´ gØÕø ^Vn×ee€™F¼cùÞ€«„¸×«îw^‡ìUó.¦ „s÷D6âÑÌö&b‘\¬\ŒãA¤}w ˆ9xô¬›QWÒú| ºa:>ÓTïÅõsí W«–ê͵*d>d¤g C:ßTe)º…i™YaMñ]”„+ÈGåÉûˆg{³QÀŠöLàP¸SBêªÇaâê8>†?RWFB4³Uè†;Ú¶ÀÞzÌBUã;‘ÒiZÆ W -ÈZe¹Íf]I.+ÍŠ:»¯©>ÇzhšÇqºq1‹æJÕQÊöfmC’³µ#%!ˆš|jæ<ˆm \\f¯æqqb¹A ¹DGÖÙÞ\J‡›MrJoûüqus®û¼‹Êò9Öb1IžæuÎÄ‚ÓþÒ Ù—þ G¶wHa9C¨8˜®üEQèê R]>ÕQe é´Iâ©‘|gÓíŽïØ·‰A%‹”žÌñî’‹9Ù9 þü¸»ÚÚÙ6ˆñfm#þŽÂ¼€ A:“âSqEJ+×0j¹¬l p\œ Ç[[\ËTÏâHÇG))øp(VŸâX§-Ô’#ä1º¹,·U—=š4%åHÉþ£\›™Q2Ÿ¦öRTLÈ)_RêXçlß Û8Ž'ËM¥r˜VdmÔs‹Šb_‚ø.ÜôOi¹ŠÂ¡Í®ô¹ªåXÒL©ì4@QX8kã8N›âTÂaµ‹¦æ¡Èäû7i“AmH2Gb¡œ×'˜2ÍÇÁ£Í=ÛœÑa)% «©,œš‚ðó­1,Ë¢®ösn æ|èTÜ­V±hfrBAºE7tNŸî£7蜓–ÌéB¹¬%Ä-¹¢U'ér˜3 X°(€GÕø»ÿó¸+GÝ2õ.LËDQ½Aƒ£Í½,½qµÓk3ê¼Öø<м>…H4Ùªâá?×=ËÔèݬ¹þg¬ÿëgû7«N²¶! $æ&Ûë°:]8Çù…*S§°mß{m=JͤšŒrwÔ¬¤«ÿ,¿Ýù;ßèãËu·óÌø_åNt¢©sŸ½Î·¸ÔCO·AÓé&fM™•2Îi¥³Y÷µÙœêi$ þ”’2˜w•+ ‰E\ÜVàpÙ‹n( ?ûíS®¶äþùÿ‰_{ÃÏídóOóe8 o}!å}Skò@Â?í|mP[)Pû—Xu2âë²FÃåM†òJnÇ+Ûÿ̯þ´)a¾W¯bRIUÆ€‚Wý‚mï¦ÜŸTíãÆÅãxê¥gøõ–çmÔ»-àùÍÆQ̙ۛUú=—ûC†ìš’š¹~Šù/›þ;¾ÿî¶û]ƒºdÄ–Ζæ`ÛñßÅmGʘ$3fû™>ÓÏ–ÁŸ6näóso¤¼¨œ–îÜíkÁ£xð(^gÕ4L3†#‡ˆË°9RÂÜëó™\íãÑç·oü Ï®{Љ¥“\ëío}›×›Ÿål¨%ƒÉí ¦T’“ნ Kñ9÷Ál„5B«N”ló-#¹?$Àâ2ýµ2*®;Ç?ϲuwÓÚuÖ±üï>Á¹ðÉ!ì Öa©íÛ‚Û+Å™[Ä~ÉCÓ4‡þ§¤¿ #e¿½iK¸ç‹djæÈ0¡°fÎ.f÷žxcï6¾yGæ‰wŸ©XÄû§^¿DæIfª’i7#ýúûÜySŠ’½Ê², ]× ‡ÃW,¦QÝ@X©óò2ÜÇ’ñ`ï5ìå›w¬Œ§Þ“âŠO“æŽè‹1¤Ž1È*•ltkú„V´ßÀ0rGÃ0È8µÏQ¾c±±X,g6$ÙíMìëê5±Ê‡×«ðÏÜÖtŽ_0…¿»õ·ü×%¿ãÎO¯Æ°bC{GÆ*}q1S ¯-wÄrbšfN÷‡ä*?yËíÅ´wõñ÷/lpÔù^O%ùúŠs¶YQgE1BfNã·ˆ].cn¯·–%™Tí£ö³%üÍ›xkÿö¬íØ1‚€Ã/ö¢xs‹—Ëò²®&HHÄç—1wA€o<¶š—w½D{ïyB½èf”¨!¢‡éõr¥œ`¦o÷ š#6N{þIä&w“c¶,XxK€y ø}ócüùôFJ%ø}~LË$fFÇzÑï½Gó+œØÕÏ‘ KË ¿®Ah^…o%k#»ÌDà…UIR‚•˜1 #"9¶½Ÿ3;"¨šV‰w:·wx%äjR{ 5n¨ CÒsF§·Å ç´Nÿ½_¢÷[Äú,¤‰MŒáÂCb õ5/!ÙÆfLÚW4dÖé?iÆÃ9›ãEJô¨\eºÀé=C¥àPaÜy.è­0RdÅñBH$½çMB'8Þ$ÖgÙoôK{©•àñ‰äšG\“‹¹[uÝñ³ÜCeÉ{*-#®ß-]¢HzZ8ÇŸÔ ·˜`âªã•k²^(çfp®„(…Ý*ª.hÿKŒp›Iø”I´ÏBIô°…–q[£Ä9^õˆO¢Ë‘¡²²ö²ríêIþÊ¡_‡>±Ÿ Ã>²qˆEŒ{¤®Œ¡æ0ê9·!cpen¯Èr‹€ªªhš†eYöto.7Z^m^P.ë )¹è¦ã,Ëb``€;3;3ñãLjÅbƒAvïÞÍîÝ»Ñ4-Å‹pú›í³¡–Kô3Anå®ô]NSà±XÌ•9Ýî{²Ix%Ãg?ûY~ùË_R–v&I"v¹õÖ[éííåé§ŸæèÑ£O´>[–>ØÁ¾g[n°ÿݾ[–•rˆÛ`ýuë—ÇãÁëõâ÷ûéïï·g`³‘$åRú-q†Á~ô#^zé%›éËEX·n_ÿú×]äççSWWGâ-¯Æ -]3Üzë­Œ?>+5$¥DQ ÈËËs˲—•¨ôýïŸU«VÙ¯¯¯gõêÕlݺÕ.k?ÿùÏY³f àŽ;îàž{îqìŠ+øÎw¾ÃM7Ý4ê„P…iÓ¦ Znîܹlذ‡zhÈöÁçóáóù.Ï˺x´° lΜ9|ï{ßKyѹsçðù|L™2Å®÷ôÓOÓØØÈÚµk™7/~2Ü=÷ÜÃþýûiiiIéäÎ;‰F£;(’~øan¹å,ËÂãñ°gÏ}4uU{,ãÁäÞ{ïµUè²e˨¯¯ç‡?ü¡].‰°qãFjjjˆF£üøÇ?fÿþýïÕuë®»ŽGy„ÚÚZ,ËBUU6lØÀÿøG›XªªÚŽÃeIHBÇ'W”RÒÚÚJuu5;vì`ûöíÜwß},^¼8s{À…z³gÇ7Ätww³jÕ*òóóéììtý½Ýêêj–,YÂòåËyðÁY¾|9gΜᮻîÂãñ¸z-k×®å¶ÛncãÆ|å+_aóæÍÔÕÕ±dIêѳ^¯—M›6±yófÖ­[ÇÒ¥KY·n]†¤=üðÃÔ××S\\ÌÙ³Îk‹gÏžÍóÏ?OQQ+V¬ ¶¶–eË–Ù*.‡K91—ô²&L˜ñ< Ò××ÇÀÀ›7ofÙ²eÜu×]ƒú×%%%6ÒJKKQU•>úȵƒ“&M¢  €õëׇñz½ìÞ½€²²² ‚†Á‚ X¼x1øÃزe >ŸÏV1EEEެ®®àäÉ“ƒª¢©S§bš¦c9)%?øÁlõÜÙÙIaa!]]]œ8q"áŠ2t/+¹à¸qã2ž:t(¾Ñ²®Žh4:è‚ì$t¹išÔÖÆ÷×vttؼîºëèêêÂ4Í Ä&¤¨´ÒÒRÆGCCƒc6!Á gΜa×®]tttÐÐÐ@0ÄãñdCJÉĉñ3‚÷ìÙ“ñ<¹?‹-`÷îÝ1M“3fpâĉKzÉ{/+R¯¯¯Oi(‰‡íÁÜtÓMÞyç ÃpÜ»— bBÿçççÓÚÚꊀùó礨‘É“'Ûl GŽáµ×^ã½÷Þ#;r}ú{öìÙãjË Ã°›¦¦¦ŒrB¢Ñ¨­6]O¾KK͸Ù[åRé÷}ûöqäÈû^ÂÝM6ö«V­" òûßÿÞ±­Ó§OÓÔÔdk7ÉKÀœ9sl‚%Þ›@Ýrþüy[y½^T5~ºPyy9………™‡Ö˜&sçÎMA´Û4/X°€ÖÖVÇÕüªªÚÁí—¾ô%;o¥iªª¦HDâÙ`Fý’3†~¿Ÿï~÷»lݺUU9uê‘H„ŠŠ »ÃµµµLŸ>­[·²dÉ*++StðONŸ>í÷¼ñÆ|ãß`Íš5̘1ƒH$ÂÂ… Y¿~=»ví²Ýt]×m•æF¸AÓ´ê¼¼¼ÚDG§M›ÆÀÀ==ñß± ‡ÃtvvRWWGii)_øÂ˜5k–bX¸p!uuu;o#¥äù矧±±Ñ.WTTD__õõõôööft( ¥¤¾¾>ù¥¥¥tttðî»ïÚ*"S:ľ}û(++#ÐÐÐÀc=F___f¦(466Ò××GUUgÏžeûöí ¤”M¸Ë;vì ¥¥ÅÕùyå•W‡ÃL˜0h4ʯ~õ+öîÝkK‰®ë)Rªi¥¥¥ƒAº»»/¶<è÷û¿P\\¼2Añ/~ñ‹ƒÁŸÛ0 î¾ûnÖ¯_ŸuÒî7¿ù ;vì°;%¥Ä0 LÓLQÉilÓ4mNJ®§ëºy;¥Ç“÷D&rFB›ÛÝÒí±X̶}‰TMrû–e‹ÅRúã–~Åb)ïMØ]×m&9Û]SSÃñãÇSÒ1žlSÒ‡W_}•úúz6nÜÈôéÓ ¡eY´¶¶òä“OÒÙÙ™Q&‘>pݰ¢(x½™•¥#Ö5ÒMªŸÍÉxš¦¥DþN™ŸÏ—Õ®âd—7y¢j('ô iÆPÁÙ³gùò—¿Lmm-µµµLš4‰ŠŠ B¡ííí;vŒcÇŽ9º™ƒÍÔ9ý½Ô £[»C½¹å.5»è4WtÙqk(ÁáÍÍͶç”ó3¶> .…!Máf».kŒWN¸!g{Ç`x¥hÈqÈŒ,QÆ$dLBÆ`LB®!OÌUBÆǬY³Æ07L˜9tTYéS®h r –eF3zKˆ‹ûd Ã`Û¶mc¥XÄè@,]œÆ`”TB ŒyT£RÆw/&jšV!¥ôp-î%¾vÀBÄ€^EQ:TU=§iZPÓ´ˆÇã1ùÿúK ÀO~5IEND®B`‚PyQt5_gpl-5.10.1/examples/animation/animatedtiles/images/random.png0000644000076500000240000003517113245231431025361 0ustar philstaff00000000000000‰PNG  IHDRddpâ•TsRGB®ÎébKGDÿÿÿ ½§“ pHYsÄÄ•+tIMEÙºM IDATxÚí½yœ\U™ÿÿ>w©[ÕÕÝÕÝé-IwÒ! YYˆ@@F\fÁùƒßAç ã8ƒÈWt\Xd@Q‘MÙ! ÙC: MÖN§÷¥ºöí®ç÷ÇíºI5`ÀïÌózÕ«·êS÷žçœgù<Ÿç¹ðÑøh|4>ÆGã£ñÑøhüâòÍtÒI;§L™2QJ‰¤­ % HP$B¼sJ¥RxÉ’%_L§Óÿ5®Yû &­¯¯_”Ïç'ô®Ï󨩩ynpp0q¨®CUÕêB¡Øc2ós*£:NJÃK‡ðrþ÷nJÃM†ð<)¥ö×ÚDÈ×ÕÕÝõÙÏ~v6€'=Ü ‹°¡ ­±—­€Ûc;Ô0 üñcC&)¥´, Œ¸)>©$$«8öˆl]O"“¤®*BnØføwulÿQ±mÛ`g¾Ÿ…Wíí¿P`†(îŒbTUU/¦C6\×Ų, tð„ÃE3¾Ïs=·q뙿çGOþ‰­Kžñß7&Œ¿¦@”h^Ï4MLÓÄv]t]!7PÅ·?þ[Ξq1ŠaÜä B“ó˜% ˲0Mó ¢¥¥åà.Âó¤eYض‡$•19úð#éH¯@ Ÿ8ú“TUÅPBÇq0MÇqþªvO{êèÂcŽ9æ_Çñ$Uª¸¶ôE«H4]u;;;[MÓôw©çb–þíÌ;øéúk8«ùLQâœ4ë(îÞ~«/U …òàHoo/mmm«)l<‰$•NÖM9lÊ EQ@¤+†ËÜür¿„Ó~öq*BÓ9ùŽ“ÑU F(TÃÎ[hmmEJ‰ëºSC¡Ð‚÷².TWW¯éîî–ª@,Ëš{Øa‡—Høª¾¯®‹Ù u¬ÎH‘‹ÐÝ£bÛ¶¿K…‡kKfµÍ@ÙE;K¶˜ã¥Ýày¾Jª Þ#\__¿`Ú´ixžGQšh‡§¨ ‡è\á1®ºË2Ñ„Êöñ[9áìJ\×ÃÑq£XÃP“‡R(J¨ª@Ó4r¹®ëÊ“N:éúÚÚÚëé¢Wyà(`Ù¿ÀöÉ@ÍíÞ½›µk×F€Ò‡nCJ¥¦i’sKDŽ-¢V+Dªs03‡fÄZ'Ðɞ桪*©\EQQÛ3©Ò+ñ$X¦‰ÐÞ°Ž™çy”J%ð$z7 Ö"F<ƒ½Ç²-“›¾Ì7OzˆjP2Kd2†††bSìuäÂ8¦‡išX¦…¢KÇenô\¾vâ‰DBÔ´TR}RÏð7fù>ÿjF½¼ƒ,ËB˜ ÅŠž'ùíòßð¥#¿‰ë:¤ÓiR©ùBdzIÖ.cëîÝôä6Cm??Z{9édŽT:M:&“É „ø³ÇdüøñA¼à Ò!Ñßœs>«ŸAz¾ ´l=¬#¬½Å´÷¯à°úy4Õ4¡ ×uq'Ø‘*ªŠà÷¶m#tA…ÞÀ•Ÿø&?|ö\zì­\³èÚgฎã¿<ÏCQ”ߨ—OˆmÛ8Ø¡Ö#¸ž+]’ÅaE ¼×q‘ЇkIžëº…ÒV—†ߥ1´±ˆÑA‚eÚTF«nž;gîèÃR©Ôë===w—288è{f£.«oÊpþÏc0‘Cš$|Úe­ÚÁå\Ãh6Áåw_Áš7^Ãt‹¾]Ùïdj†ÂöŸ»TÇr`úfB_QÅêW“̽vÕ‘_úÑWq¥‹¡FÐ#BøTUÕCâ.kï÷„X–…-4Ec0¿—3b 艙$ ~ü¡iþÔu•¥×bgdÚ¶Í¢E‹h˜m¢ …Nm/G,Ò±û*ζ"Ètè]A-[¶Ü]VY“'O&‰ „ Ï¡îü!&Ê*œþ ¬Þ Üx侉jªÆ±wï^"TQnÄsq'ðîÔœG}c=ãêÆ¡( ; ýÌü\‘XLÇMǰz#8ƒ5XýaEª »»û¯+R©„­I¤ c×l'1ìpÒÇŽäW›n /ÙÇYgÅ¥—^ÊòåËiooghh×uq]—ÊqJÊ)=9K¨9Š×D;J8%Uh =ÐècOûÝ|ùûrì …-ÖæÕ6S² ÔÌ Q˜Ý H„"½ªšâŽ0!æºWÏ#[Ê`ÙV r*„‚;6§‚¾Ò('7ÖQ,º9ã8¶Ö¬@Îu¨ä6Eɬ©!QÏó>xŒ?žŽ¢8Éd’T*…­y”¬ŽÜõÆ×ùÆ7#Ã&–[àúë¯gÙ²e|þóŸG×u"‘;vì ²²’ööv_ ¶íÚšJjHå>Í`z€û6]ÏâyÃó]÷޹żC eáZ–…"Š¢`Ù6_=ügdDšá‘uX‘ø9I|{ ¥Ä“ÝÛHì´ÉÆK8Õû<¨P5&„%Ó䂿ï1ª·sÍ‚{xeóËd"´³ Û¶H4MömTU}ÏÎÉ{ÈÀÀmmmÿ»ººúh?Œ&Fç«ªŠ¢(èRÁÉHr.vŸàëÿòϤwIJ£‚¯|å+|ûÛßæW¿úÛ·oGJI"‘ ‹ÑÙÙI}}½K^ÌšÁ§ÙÓ5Ê9ãÿ ;–5CϲÓ,½«@Ê'ÄqJ¥ sg–#Ï›Íe¿½œûþvÃu#x#<äüÓûÍcåwS¨º@ Åb‘b±@•ÂuUÿÔ) BHF†JœýéOråÓ7pæÔ‹™Þ0”n°ÁÝŽiú…”þëC1êãÆû´iÓŽp¥Çú=o  •‰'bÛ6ég-RÒCJ”a4@Ó-úúú¸ôÒKßuÎ\.G,ó]gá „B¥Qƒåq=—º†]©­d¬–¥¡hâQ%8%¢¨¸.hªŠþÂ8ŽÃêžßã¹.–å®òœù³éèè ‹ªÀñ”}§NQÀ؇~ EAA¶”eÃÈ’`.ľàð`‘†¿H žç Ó4‘Rò–ÙKí—㚎çœsÎæä“Oæ§?ý)[·neþüù¬\¹’™3g²fÍâñ8áp˜|>윌Rbü…úÄTŠÙœï(Š¢2œëa~t.Âd´ÐÏ„ÈD„X¦…pßyBö45EÈe¤ë«&›°R…ëf0M· ‹€„I“&¡i®ëó*$9'X¾Ê C}}„Í;w -EQHãV}4;ܰ,_e•mLJ")å>ýëù®¤‚šš"‘Hà‡B!Ž:ê(öîÝËÑGͺuë0 ƒššÒé4BR†Ç´OE¯žÆ–Õë|ðQ÷PD˜Ac9õ‹hš?{Öÿç†þ‘ªp-%«å]"„/”J%”1,cÂÄj~òÊ·¸ëÂeÜôÚÅH3BcM3¶ÓE©dùªÅŒ?]bUáfuœ¤¶‚Pý5â$‚âTºTU†¹sÝÿæ§Ÿ[Êm¸†™ZôVl×"Ÿ/€ð¢(ʇvB(ŸOx(B¡½½ÑÑ8ÃÃà :::]êºn°kJ¥†aøI(Ý£Â0Ø4ô:‰DŽb±ˆ’­F4µ¿»˜»¿ò[2Þ uüˆRÊctdÍPÊjÊÛ_ Åb‘T*…@P0%%ˤË{…_/¿‡†Ú ¬‹/ÅKº7&ɧ}÷VàuAýñ½þB†$‰Wc;¢AX,ýù«<,ׂª8_ûíç9rÆ R¹a’ñ8;–$Éçý9…†ñá ½åˆ@êÔG<GQ*++ÿdÙßßO2™DQr¡dW­Ï“VUTUEC‚EPiH.úæ§í°Ií. Q¡ó†qñ„ öô÷÷ß*„@›C FÁEº’d<¼ý†7[˜i1/hšæg=—Ó&ü#b¢CzXðJò6Fl_õ¹®‹¢(hš†¢(DÓ.é^‡þ &‰›x~ïúý\[®ëH)ƒ ðPœõϽ¡¡¡áRUU'º®KVµ˜ÿé(gý”flâ²Ï\‡Ñ¢0þ8A2º‡î5ò…<…B+›ÍZ¶m«Žã)%ňÇìW’íµ)ìшD"B£Ø]/š ¬´ÉtJœ¬¾ªªZNÅ"„`âĉ$‰d8V3™ÌÎX,v|±XTš›› %%{_²ÝìRè\MSǼ%>!š0ÈÝÎÿ:ö{D* »Ù½¹—\Ÿ‡ã8 ÆÏUW]Eºo„äF g(DÈ­ R¡¢¢EQ‡Ã hñxüQUU+ Þ.`¢çyä ‡9§V“t¹îœ;o±1õ çœÊžÄVÖúØ–¢(LŸ2Suøl=‘JˆR©D©T¢Ê2Èt¹ô¯Ë3gÖ[dêâjΞq1ÙBŽç:ï"±Ý R,yùå—‘RrÒÉ'‘/ä™5{UUUÌ›7€sÎ9‡éÓ§s‹E¶mÛ6ç/ÆA‹Žã0::Êèè(éL†¢U¤ÙÅ÷Ÿú.š®Uºyê­»éëH’L&H$¤SÔÓv#>¾)q '°~ýz>vÌÑÄìñThÕL™2…d2Iss3ãǧ¶¶–©S§2}útEaòäÉhšF8¦±±1ØêÌ8BTTTàyÄãq&Mš„ëºL˜0††fΜÀ4uuuœ~úé TE¡R¯ÅvM,ϤÚh¼µ²ÚêêêÂu]†‡‡ñ<ÚÚZòù<š¦‘L&éëëÃqš››)•JÁIþPh@3gÎ\cšæqŠ¢ªtøÔ71 Aj·Ãð“ø[ùa÷lGU5ιâTôy{xñ;{øÉ ?#Nsï½÷RSSCgg'®ërì±Ç’L&éïïœÏóÞñ*»¦••• ezPLƒ3f2<£^ÍÍ͉$o.â”äkD"Ñ0 5¸8ÏóP|æØ¿'Þ´‰WBwòýïŸo~ó›d2"‘¶mSUUE{{»ó=ÊK/½Ô J¶ÌA¹½“'O¦X,2sæLEaÚ´iTVVRUUÅSO=âL&ÃÆ …BºˆPtòìÝ5⻑Ñh€•íƒmÛHÍcâ‘Õ¼5ø*?¸àL%Å<»†Å'ŸMŸÚNïóiÔO¦+Ãå–eG0êZæ×pÆg°Tù!Ç·žÈP¤‹áè^ºª< =LCCÃCt=BÄUcæSxFX*S•Š]…Ä%K/M5Í<¿úUv*ñÆÔÂ÷üªªªÈf³‡”ºôg‰D¸é¦›8÷ÜsùÞ÷¾G©T trY?÷öö`¡°ì­¥Ì=þDÖ¶uã †‰F£¤ÓéÒµ‰DÂÆBË SÑXâ{¸†?óŒJ‡_nüâ&©tEضÄe¾•”àx&¹b+k ªªSj£dnà¶ßA}}=«V­bãÆ„Ãazzzhll¤««‹Ù³gcY6l ¢¢‚¾® TUÇq®t‰èa¤çáØ¦å“ÊÁî‡Nr]W¯¬¬déÒ¥Á”^90öO);¶ÇÚÄ#t÷EH eI§ TUUQWW¤Pyž‡‚D Š —Á[9ëË'‘ëõ°ó+㢅öÅ#åÍP*•žÄq<"Q•kŸý,7žù0¿ØrƒúNô¤„qãÆ‘ÍfimmeݺuÌŸ?Ïó˜={6CCCäóyÚÚÚ˜5k<ðBQp4?úÿÛ£ÿ‰¼ìG¢rÆ”`«s'Ö˜@U†ð={YUUU <Ï«y›gQÛÚÚúP.—CHp§Ž;·šüK~Ø¥0ä©Ò)¥=’»l<é2yòdt]'—ËaÛ6ÃÃÄB!æÍ›G_o–mã™rŒí; ®ë :£Ñ(¥R‰|>ï_¼sšào¾Ñ„ëBKø(Æ7ײz×Käú]º Ñ2±•c=–^x!ˆ¦-ËÂ0|ÛVÎeøü]ð8íÎJòC?ÿüRnZñeºÒo"ñØüÓÉNÔÖÖ²sçÎæd29ô¡ ä݆®ëMóçÏL¥RÔÔÔËfq,?_‚ŠÏ²9Ûjiia``Ïó@¦irß}÷ÑÒÒ‚¢(<ùä“ìÞ½×uol„ tvv’L&Ñ4t:M"‘À4Í@uy‚“ÿ±–ø›T§Íè6 3å¡h‚ÆñõA*ùÏy¯åµÈ¥ õNIR¡Ö¡ªY3IºÇaû9<Ç7ÕÕÕäóù3Ãáðh*•2{zz¶þU¹½B}ôQ¤”¬\¹’Ý»wÓÛÛëgÇ^ªªbD"t]?€¡1}út^ýu>ûÙÏÒÚÚJ$¡¿¿Ÿ3fÐÞÞŽa444ÍfI¥Rèºî£»Š‚a|ñ‹_äå—_¦ç¡±9]—q1·Ò·eû{d±XŒíÛ·ŸR*•ö¼íVŽ>üðßÈår -Z„²¼’Pðl´: -5‘ '¾c^PU•ŽŽŽ===3ÿj'DÓ´¦£>zð–[n¡©© Ã0¸á†hhh@UU,XÀ]wÝEUUMMM„Ãa^xá… Ã×ÐÐÀÞ½{™>}:Gy$ƒƒƒ$“É á4V€®ë‹EÇ!‰dEQxóÍ7Ù¼y36l@Ó4V®\ÉäÉ“Éf³L™2…b±Èúõë‘R244Ä[o½5}tttWù>¯- ÇÔÖÖ^X¾öl6DÞƒÅa*#>¬.í1æ¾#˜4iUÕU>‰[DZ„]cê\Û´iÓ}ñxü;ê Q…G}”ã?žgŸ}–\.¨“ÎÎÎ gÇñV\Óàº.kÖ¬aõêÕïð6ʼ߲jÛ?ÅYUUE©Tâ¿ø÷Þ{/¶mSSSCcc#/¼ð­­­äóy²Ù,žç‘N§Éf³Äb1RÉU•ÕK.»ì2b±˜Oíh!o½õVÞÝÞ7nÜ»²ã‰¶m‹½ö³?i"£ ª¦à¥t¬»/L©Ó?¡Ò…Úyaê”(ºqœœÊðCï¸çT Š¢¬¹ð §½Êd(âÅ_|Â4Í'êëëo½é¦›šÎ:ë,V­Z¨§r£( ½½½àPÑh”úúzÆ5×ü!ª#!^¹m7±X,`ÌØ?•üv:ªmÛXÒFAAÏMäæóîá…Ý¿æùÑÇ™<¿ž¾Ø ÙíZpj?1á\®8õj¾ðÓÓø§ó¯äÑU÷9£¿”èpÐñ<¯ªL±u3L¼ M¤BKÁ³Ü”†5`à ¸!üª¨P(Ô>00ðë1(ÿ?êëëW®\)öct]ÿ“à]>—gC~g̪@Õ-ÞX¦ÐU×–8qƒÔÒÚà^{íµ¯æóùGÞ¶¡Ü¦¦¦üÛç7MÇvðT?™õ™é×ð_«ÿ/ÌúWf-üz´ÄÍ»¯ÞG÷¯t?ˆölŒOÍþ2m±#p\Ç'~ äC9!epϱ²JžÊjA6grÎϨÙÍ›C«©šæQÍ0ôp=B j>‚«‹Çã Û¶§š¦@1å,[RIÑ8QÇMëxYi©d )Œ°Á¸ºq@EÌ3¾ÀâÅgc‘ã{Oý;ógOf«³5˜g,¿]ô^ͱ:G±nh;Ÿ=ùBôÉmФ‘ïõdÃá0®ë¢i'NÄu]ÒNY¹a¡8xy…íw×`ˆ ?Jð •*rþñqÛÚËøüôÿàßß­Ò¾õª`ÁþH­´´´Œ”Užê¢i*ž)RÐ È=7{×£+?õnCAÅ™»›I³šö•¼¡Ðiå°æÃXß»—£‰Ä²ì(´Š@ÊÇÛ aÍ]ÄÊ¡‡éªÀpê±½Háˆåœó©ãǸ§|Áå‹.Óøm×&¤k$]~pÁãtfÖñàÆÿDzÂ'HÀ«$‰F*ð„C¶gÝÎ T´ô£)¡}BïNé4***ˆD"HÏ£G3ÿ"kán4„3¡ÔmNT‘ŠÂ„0ó§ŸÄ&÷ ,kß¾:¥íR&Oðüð*VtÙPæhÝß_rBÚ•  eYx®c¥ÌQ¦’Qrrcï3ƒr…Ã?üÃ0¾Zž#‹q×]w1~üø}u&¶ƒ‚¯ómÖ =ÎÎmf©Ÿ¥Ò¨æAB¬Æ`$5Jµ^ÏøºF\ÏÆvl„TÂÛ£rJ)Çj>lò" )• fÿ/ª›C³ÓŒ;7Nx~"˜Ëq\–t݇c{$“I’É$¥‚É£›î”9B•’ÎâZ†wç‚¿QžœÕ†¸®‹‚‹íàäLJê¼Öõ4G6~—ÅsXVEúèì˜Wæ•wïu×]G<§¥¥…B¡àŸa£H•Ú¦òÚàJF %v u ðZ H*+"<²å‡|yÁwèÌ­æÍüóœ9[îcþ1·³±KWâ…|¤àÆ3æ©­?纅°dãÌê,Yÿ*¦ésŒMÿj‹=#©  Çqm’›,nøú­(Ò ßïaçu&ޝ!Q5…šššÏÏ;÷øý?ppîîîçr9ë ¤P(àØ6fÄÃÃe³õ0‡õM¥®Q¡m–Ê®ºË ‘ËåQtaÊÁ\ÙY¹r%ŸùÌg@Ïó¯LêëèèPé Éçó~N Bb»šªòxçw9¢t –ma¥¶ý>IɶÎö¢<–/_ÎóÏ?Ïàà ---~µ’ê§nï[vÿrÁµ”ÄçOþ<“ ÇIá8“&MÂH$X{c·4Î h„ÂûòùŠ^ˆt%Òó‘éT!ÎìÚS˜2q/®÷8¾ùS¼áþ80àáp˜hE”¦º 4ÖJÞܾ…¶¶¶}ùWÁsB|ï“OòÒ–pª÷’Øa“ý€_gyAëƒ!Ó½'´µµqá…²~ýzzñ¬ nÈAê+b 'ÏóÈårÁÏ€3©œ[†Ub±Ø‹®ë~ÒÏ:z(†¿kÛG~GÇý¯0ØSÀ*Hî¼óN&OžÌðð0K–,Á4M\×¥P(Éd˜0a{öìadd„ææfº»»ÿh*:ŸÏ#]Ëö ß}õb®?õÚt ;´eôwVâØ.¹\¡œf Ç¡ù²Q"ºŽ¼gá4 ¨Š‚"!k±hŒ½t÷^üêOª#×¾…k–©|pùõ¯Í«¯¾Ê-·Ü²eËØ¸q#Bº»»™4i“'OfõêÕtttpì±Ç²qãFŠÅ"ªª.8ñÄe@’ö<4]GH„ß”§ý[P¡Ú¨z-Ž¢ø©S§òÈ#_"(íIDATPWWGss3Üÿý Âá0±X¬\8ŠçymµµµÛ¨v]7°!¶ Ž´Q+m~°ú+´ÕÌ ”¶É'è|-E±è«—H8Œ]mQSÆÎ‡i¬™ˆ=`ãIv¥@é)8ž Ýe÷À.ºÓÛpl°mlˆr¥Õ!ÈO<Ái§Æž={¶}£«i[·nŲ,’Éd@°âòĉ}o£”¢nñ0&†q²ª°û"8a¬¾eºÌÁ*lÉsã7rÆgðúë¯ãy»ví¶mt]g„  t]ÀÃææffΜùà;û“ý¶lÙ‚¦iHE¢ÇaïËEF¶š¤ºFl; #Q¶{ªêu–Š.·œù;þþ©ó(9.Ÿl!<@ ôˆCH5hŒN"YBQðlÇ Ô_™”}HmÈ=÷ÜÃC=D.—{‡~عsgð»5kÖP]]ü½ŒõŒ”R9¥‚bÉföäãØS³ gvÏ“˜{*}1†PeÌŠF£A>_á—ÒÙ6“'Oƶm;Ô=s¡† Òx%'Âê7p† œ±Î7Çs —^z)÷ýê>ä(Huº)^`LÓ$2†£i*¿æ±®ª–‚•Ãqüf9¥R E Bl-Áÿðùå¥OpÓëax1ª#1L³—RÉ ìéÁï\Üeš¦aYVÍ>†â0ÅÛKβÙì¹ ÿ÷ž'9.t9- gLº„_¼þŸÌ˜Ú̪=«°-¡ù5)u1B^¥¯ÓI®eüøñD£Q²ÙlÐm!WY@Ó«‰)“X8÷^Úý0Î81/AüÕ(ù-~±ÍwÜÁŠ+øÁþ€_ýêWÌ‘GÐÝÝͬY³xá…˜4i–e¡i¡PˆT25Vk(ö«Iq°lË/ƒp¡²Âöt:Ì'YÝsUU æw“t‰÷%± ûR¾C9=hŒŒŒœT,rÎ9ç\}Ûm·‘Ífyøá‡ÙµkŠ¢L&‰D"(ŠÂèèhõK¥R”J¥Zp¥G©èqñyÏM+þ­fS«ŽavC++å*LËD¸>0ÙtA–ª‰ìw0gØ ¨H¶mãJßIß<å^~ôò¿òïg<Äêo²Éù5Cv¶í/æÓO?Í‚ hoogçÎÁ% J¥‰D"H; Ê l\i2š¥Ú¨#í$Æ ”¼ 0â‘v¹õÙIìpIu: ýº÷² ¶ ç=©,!„¾páBÖ­[Ç9çœÃá‡N>ŸÇó5÷ˆ†+XÖù×j7ÓPWƒÕoá8.¦éC3wÞy'wÜqǽ¿ÑÑÑ~ŽUå\¢:ÿç÷Ÿ¥64‰íÅ^¢Ñ(†aÐÔÔDjsŠ-›Ý1·ÛïhTó Ö– ˜¹@¤”üö·¿¥œ`êèè ‹²BP(p]7VY?¸aHXçå Ë QMm´žLgUœ­r¦UBñ| ³:},çýE^Z½ŽqÒãôÙ§ð}ëvª±”7Va¨(‚m¦ÀöŠc'É%•Jù週`PJé¯ù|¢°¥`gQ„Škú —N¥pZL§„õØ8´×466r÷Ýwãy«W¯fÕªU´¶¶²fÍŽ<òH6mò7W]]ù|žÞÞÞƒæÿ¾W¬XÕ4gžyF !„"”€=èJŸ¯¤)!??®†p‡ŠŠ ¤”Aé±¥ØhºàÁíÿÎ-g?ÎÚá'5÷Ó“ß‚íYòÝŽ›¾€îÔvÞì_ǧVŒ±²3´øP¤@"¨­‘Îg8÷ˆ Q —+1µö(Ú?àºÒ÷ò\A©&Á´Ø\J¥nŠ_4™V±‹Ïø5j+7=~ Ï^¿_à‘¢ÎÀ&™^‡ÔžºZ]Îí0wî\ªªªÈårttt ë:±X )%ÉdÓ4ikkcÛ¶mŒÊRåÑ7ÞxcÚ¬Y³N+ XÒEŸž§®ª–³ç~Ž’i±tûœ9û–îþ-éõa …Bˆ`‡ä…‡íZ„ª<þí÷±xþÙdó)ÖÇW²óå,Ù‚ìô’iâX*®ã‘+¥ðÍ•xhšæÏ-ý¸áqÍÓçóÃóžâÆ×/$SŠ£éVÉ"—Û—+™F>Ÿ÷S·ØØ¦Ë¬ÆE<Ùþ3S?Á1 ‹yF®¦¾¡žã?ž­[¶ÿƒƒå˜¸™ Ñjd2É×¾ö5Z[[éììÜW.'%;vì?•J,™?éüEÉd2/UUUÜÚÚzZ2™¤ˆEõÉ:Ç4žÉÜcšY·±“ïænŽ›y CÏ,cGO᪤R©À€FJ.Ù!‡Á£Ûö°ú–»ƒ^UM¢™¦¹û>ï÷?cÍZûx € ÇS,Éf³äóy„8¦ð…\mqãkG$\AAÕHvÚt®L!€àǸêqô÷÷ûìyÕ«øòñ2×óH¨ªÆªU«xñÅùÒ—¾Ä²e˨¨¨àþûï§­­®®®À=®©©9¨µ‹Çã HUÕiåöL¶ðo¨RaºEL§ÄP¦—¾l,€ëqöùÞ×^{-K–,¡ç¾®kôJ+(ÝYèçˆÏ8T„5¤©b'tÜ«?Œ—Õš ‚Æl6ëïL×#Ü-Øö»é½N!]8E‰” ¨jP¸g„"lêZEµlö󆇮ìÝÈñGŸÀxíp6í^p½ÚÚÚèîîö?†Ø pà 70::Ê“O>T(çr¹à$”Iåµµµåb¤Ñááá…foo”ò°€¨¸¨Bc´8@St.5i²V] £ `[&Ò8ŽÃ3Ï<Ãèè('Ÿ|2¿ÿýï,jÙ²eÁï-ÅY4~…¬ÇqÓ?ΦÁe83rT©’ìæ 2¯Wû†Xñ‹z/^ÌìÙ³yiÉKx ŒBXš…ˆù ¨ë:™LÇqÐt…d·ƒ^_ô“U8xžÁ@èUÂÅÓÉ×ö°Ûz]5¸è¢‹˜={vÐåÇó<†††˜:u*ßøÆ7B …Þ5S.2Íd2ÔÔÔP(œÑÑÑíQN ˜©~nµP¹¶Êë8bñ \óä´Ml–eâa9o¾ù&d2™rÓd†‡‡ðÀ„”l“ ZneÄÛÀ?/¸›—Ú—Žl¥ÝÞô) äòË/'—ËqÚi§qûí·s‰ èîîæÈ#äÑGeòäÉ~{ÁTŠT*Åàà ••Q2™ ¦iRðü2O•üôâªS¿í”0M×TK___ j5MÃ0 zzzš@Õüf93C¥QíWiEMì0梂D"áç4IÉŠa«påoÏæÑ¯lD‹XÜ·éÛx.ć’APtë­·¾#ß½?݇F`x ÄÙçžÆ•Ï\Ïâ3©v¤‘ÞΠ·H¹Ž¼»»›O<‘ßüæ7µÜL@J´÷ÐuݬÇ>¯l„+Š¥¸GÏ®ñ­ÿðݯûù{FFFp÷ËŤ ‚ø” ÇžYůþv%gÞ9…g®XÁæÎžê½‘­2ºÉ7Þ†a°}ûv?8”XQ4O¢ê×ñ`TrÊ¥‡“ëò°ò3ã¥b±(˵êo®bß2|zÿ¿ÛŽÍ®ìÆ1Ö¼°‘Eá[ßúÑh4 Á•çß¼ys€ìÿ™åúÃ0¸úê«Y¾|9ƒ/âz!Ǧ©Qîkí7¦¦Ê½|ËÁ­"Rjêtâ™®8éFú³»I¤8~âÙ¼aÿœ2…«lSÞ éá} DÁ´iÓH¥R ÜkÒcšEâçmýÀ$¤J¤"ˤi100°lddä”·Ï5gΜ¸išã„`@MM˜=}}xŽ‚¦èdÍ$M‘6vºqLÓºïضM4 Ò¶û{re¸û€“è‚eúÄí«®º !>ø ßþö·éêêbæÌ™ŒŒŒ`Û6MMM¼òÊ+„B!ÆϺuë°mÛÇæ<°,p¥Íµ/žÇÿ=õ)îÝüÏô¤ÞBK¨” &™ŒyÀ&x/lÆ÷cÔ9òÈ#¹ì²Ë8âˆ#¸ùæ›éì줦¦†‘‘tÝo.988ˆ®ëhšÆàà étÚûc‰£R©äïÈ*ɸq•ühÙ¿p×ß-ã—o\Ï›©-1i®7Ƴ!S§N âUUY±bÍÍÍïêë«!ÍMÒ·²H!é°k×.®¼òJöîÝK±X¤±±‘ÊÊJt]gÙ²eÔÕÕÑÚÚJOOOPN],ƒ¸ÇI ’ý~1é¿>y>F˜lÎ%ÝcÒ¹"‹ª¨lš±Í˜4i’ÝÝÝí²r„ÚÚÚ5MMMÇ,§¶<\×¥¿¿ÆÈÈÈÎý?}úôx©T§( Ã\þñ[±,—šÂ±5g KwÿMÓXõƒ©._TVT±è–*†îoD:¾ZX»v-Ñh”p80ïËi]ǵ1¢!Ü’ š ìÏRùSÒæææýªzd³ùc›µ§§‡mÛ¶!„ ²²2(Ž-o¾µk×~)™L>pHOˆa̘1€~3Áä³óDÂÂ4°‡B8ÃaœáYF"î½÷Þô»MY&—…sPÊx m±èØó Ïß¹ÏØy×ôñ¾¼¹Àv¤íëú9sæÐÚÚJ,cÛ¶mŒŽŽÒÔÔÄÐÐýýýx¦¯ºLÓ èG ǔز„BË-¡«HMÕ(•Š !¬,måœËb(Ràš€¥û×6`PÚ]—õ¯­P(P[[TGŒŠ ΊF£Öãz_)ç´£Zœù-a2Ù4íwXL¬™‚ëeŠÀrt] M D‚³Î\†á)xއkš•É¿˜Jd #Ø %ÓôÛ|Û縘¼™ è¡#NšŠP3«°pÊùÔNш•¡öì*O‰ݱË^ÐÈÈápEQ˜3g†a0iÒ$lÛ:Dœx≤Óé1WR9 M¹ëºAËðr³œx<Ô=vttðì³Ï¢ªjТP,b;(6w´_Æp¶‰$?â²þÞ8®·¯ëµ¢(Œ ˜ÄjB(ªKD¯¤¦²†x®/H–•‰]]]~sNUAºÞ4×?ç¿/··¬:~ Uö*öµÿ¶qE|zÒ7ÉÈ]\¿è1]ý Í“tžXq_p“Ñh”+¯¼’É“'Óßßëº,]ºÏóhooÇqœ@•Ëfñ‹kùI P(D]]BjkkßvÁc$E¥ÐžçQQéZR ×íbe=ÖVâÁ³%Š*p w_[Ct]Áã5ƒÿô ¸®‡iúü3×q¨m®'™Š™„*UÒ¶ß7ò`JÞW¤^^xß0ÀñlJ¦‰¦èû ` O Z«gð›=¿ -t"õ‘ %ƒôR*•d(ûGïR!\×EÚ`{Þ˜C¨‚–cc:’Ñ‘rŒe_ÎLæóùuÖ××ÿXÓ4¿|Çá +À®¢2WEuu5—\r Ë—/gxpÅÉá†\<ÍúäQÞxÊXCœ©ÓkØÑµ—Óû;Þ^M2Qdvà ¼åüËò³†…|ù0?yêûüÍ'NågýÄÏ‚ª|0'DJ©J)e©Tç¹TDþùá‹‘žÀ¶}B¶§¹$ªâ³‘Tœ\e nÅo¼ñ•b±øàE£Ñë§M›öÍd2‰£H¦¥’Ö–0vAb=R6™n‡%ÿl^ûس¦D,CÓ´]ù|þΖ––—yXnµ íÔ(ZXòÒú~~öý_±wï^n¿ývn¸át]§¾¾žb±ÈîÝ»Y´hëÖ­cýúõär9ĘG§ë*ßyõ Ü~Á |Í—ÈZ ]Ïšd³>êëX.#r3NÝV–íN!]I±TD(>ò d×®]ŸjiiH§Ó~ýqÓ‰âÕîa´%"k|D ¤„èJw0¿þ4Žž>×w¼Â±£Yê=e9AŽ"‰ØÅb±4ö³‡1 èÿ•C¿’{Z«¾?ÅUd³Ùm»víºA×õ7µLDBâ¹>'Ê5!j„yúé§¹öÚky饗(•JD£Qúûû‰Åb ÓÙÙI8ì'×J¥ŠP°]dz©«7¸þµOûê¯O2´¹ÈžeymŒè)$òC º ö²wmš\®‚Cïe1ïÖ² ˜öyÓÄÊ{¸^Çq(.¶[Á’¡ŸpNã·xxë-ì/’ؾOºd³Ù >y;•¨­­o¼‘‰'òË_þ’®®.Æ϶mÛ¨¯÷»3tuua‘H„®®.„ƒ‰Dâ7å°§\`4aÂÒÃi^¿>çÇ"ŠÊË/¿Ì† ‚åè¾üµœ³(cv®ëRÛ©±æÇ)¬Œ‡S’8y‰ô|·¨Ü‹EQŒÁu_ø!nÁŸ$ îÇu>¤ÐÉþø®ë,^¼˜ukÖ±éf ”nÑÄt 8¶C©RâH CSyvè&N˜rùd‰‘·zÙórbñÝŸŠæº.3fÌ óÉO~’3fJ¥8î¸ãhkk£¿¿ŸP(¤FËMdÞŽ:”i?åôñªU«H¥R¼ú꫆A±X À¿r’i,nP¥ÌH˜þ¹Ï}N9õÔSyøá‡Éf³äÔ\`CË 0]×'Q”‰åÕJNØÁR,"‘…B!èlqH¹½û fÍš5lذO}êSlÞ¼™–.]J>ŸÇu\¢I…¡ …>‡äÎÏu߇¢ mº¦úDvÕªU,X°€Ûn»¥K—"¥ä‘G!ŸÏ‡ƒî¥R‰åË—¿+Õ¿ µK)9ì°ÃX²d º®sâ‰'²páBî½÷^*++©¯¯'ŸÏ³gßqcëÖ­W'‰Çf̘Q¸ä’K"£££\~ùåÜ{|þù´··3gΞ{î9fΜICCÉd’U«VÑÛÛ¸çûØÇX»v-»wïæ°Ãc×®]Œ@Ê^H.—£¡¡!³fÍâÕW_¥±±‘믿ž|ÄŽŠiŽ94ÎöKªËÌñrÓâw«‡ÃÜ|óÍïúÙek¹›6`Eo¿Æ+®¸‚3Ï<“åË—Þa¹á”’ÑÑQöìÙtlž Â¨²²R¼þúëœ{î¹Üpà X–ÅæÍ›éêꢮ®Ž\.ÇÞ½{éììIJ, …RJŽ8â{ì1t]'RQQA"‘8(Ô÷}U'¶µµÉ¦¦&&OžÌÀÀ@à1Åãq|ðAÞxã ¾úÕ¯rûí·388H$¡¾¾ž•+WÒÜÜÌ®]»¥®®ŽvïÞ}Q"‘¸lQfVUUÍB¼—Nmžëº]ƒƒƒo–mÈá‡^hnn> Ëö+wÛ_ oذáËÉdò>€N8¡X(Âe mÒôþ_ßN¥ …BAÌTîïUn:½eË–/%‰¹ÊÊd2tttyë2×÷é§Ÿæê«¯æµ×^cÇŽ](C ¡P(Èâ½ÛC³Ùìöl6»ýý\W}}}™Ýa -îééy¯SØ555›Ë þáááç£Ñ¨Z,Ue<€«BÝá­¤+)Ù%ÂZ Çð»MMMoÿ¶ëBýŸúúúÝ«V­:¬½½£>š'Ÿ|²Œæ9ìp8ü¯âÝvªalÛ¶-8!ÿ/ŽñãÇ? ….ÈUxœñÍF"䇫øúyÿÆí+¯’ÎÀ†"o=–õ°é7F{¨¿¿ÿ‹û©ÁÒ!õ²öóäM7ÝÄ-·ÜÂK/½Doo¯ÿ(‡t]׃'ÍLr?›ÍþÉÖÿ %pómçIJIArGœË¾|™.+ØÛF$äí…(?hãà6ù¾sêííí,^¼8h>,¥¤ººú\Æb1vîÜylÿzþ›ŽSN9…®®.öÜ™Ãs%R©S]ñ xÆlF9<°mû=·¼~_1Móe×u·•½“ƒé”J¥lÏóFÿ; BJi^rÉ%œrÊ)´´´pÇwJ¥hhh ··—ššÚÚÚX±bE¢Ø°a¶m¯ûÀR]]ÍðððeÃÃÃüÿhÈ2û}€Ë}½¦L™ÂæÍ›™0aS§N¥§§‡îîî2¹ÁþÀr(Ûjÿwš¦qÿý÷ó /Ífƒ¸¥xJ)éîî¾÷<ï}7è×øhüÙá8NÈ0 Òéô⟊iÆ‚ç÷ì­ˆ–ûÏH$ÒT*•ªÞ㺺uuuƒ£££…Vð£ñÑøh|4>ÆGã£ñÑ8`ü§ŒKÉÐÃlIEND®B`‚PyQt5_gpl-5.10.1/examples/animation/animatedtiles/images/tile.png0000644000076500000240000003772113245231431025041 0ustar philstaff00000000000000‰PNG  IHDRPPŽò­sRGB®ÎébKGDÿÿÿ ½§“ pHYsÄÄ•+tIMEÙ6!©4 IDATxÚœ¼i˜$Wyçû;±æžY™Y[×ÒU]½ªI-µöÖŒm`|l#̰ÏÛc?žåÞg¼Œñx{¼Œ=6Æöc Ø€ZÝH¨[ê}QU×¾äûz̮ÆsŸ›º³ž8qâ'"Îïýÿßïz×»¤ã8Ôj5^ýu|ßgaaÁúèG?Z,—Ë„aÈ‹/¾ˆªª„aH†t:Ö×שÕjœ9sfuhh¨øþ÷¿?[«Õøô§?Íðð0/^dhhˆùùyLÓÄ4MNž<%Iüâ/þbaxx˜gžyÇq¸rå ƒƒƒ4 †‡‡ÙØØ`nnÛ¶;·ß~»xÃÞP¬×ë<óÌ3¬¬¬¦)ŽãP*•¸|ù2Qáº.óóó³ïyÏ{¶?ðÀ|éK_âÊ•+ ‚ Š"fgg©V«4›M.]ºtî®»îÚù³?û³ÊsÏ=ÇK/½Äôô4—/_FÓ4lÛfrr’sçα¸¸¸´²²²üë¿þë7f³YNœ8Áúú:¶m£ ‘ËåB099‰¦i!ÈçóüÈüƒƒƒT«U¦¦¦Ø±cÅb‘R©„®ëŒ†!<ð×_=¦i255Åàà Û·o§^¯cš&û÷ïGïûìß¿¿¿mllŒR©Ä¾}ûÈçó vîÜI¡P@UUVWW¹ýöÛ)•J¤iJ&“¡T*º®#„ ^¯£iRJöîÝË}÷ÝG±Xdppééi˜œœÄ0 †‡‡ÉårhšÆ¾}û0 ƒ\.×ß^(0 ƒ(Š(‹¨ªŠ‚ÁÁAn¾ùfÆÆÆØ»wowÜ>,¤”ý;Ž•Ïç‹™L×uB ¥¤÷‘R"„@A§ÓY,¦išˆ¢¨¿=MÓþ¾RJâ8Ž¢( òù|¡X,bÛö÷ô»õMÓ:ív[”J¥b’$(ŠrÍñ·ö_­Vyíµ×f¯»îºíŽã¦iÿœzmzûèºÎììì¹={öìl·ÛЦi×wëGJ‰¢(KkkkËCCC7š¦‰ïû!º1¦‰lPÏóR˲.g³Yݶm‚4•€@ ›m{‹ãx¥ÓéìÑ4­$›ÝüG›ûl0ôă IÂ0Ä÷}¢$¤±òŽëþ9o†÷ßü›¼çžŸ!n¿}š¦[öytû‡Ù­?ÌÝòKÜ¿ã1DÑ'||ß'Žc¢8Âs]¢$f¼°›££ïä§~ïvî¿á͸Ißó‰¢?ðq]]Ó˜ÒoçñŸà†òÛù¯où²àáû>žë‘¦i7n/  ®ð¡ƒÂv½›ÞþçLLâá{>aöÇ$¤ð¹]{œ['Þ€¢Ä:nà¾çõ{ž×}ý'û‡n㳯ý.óKë¹¥;À¾O’$DQ„çy„AÈ€>Á²5Ë‹³OpÇôCx‘C„ýþ’$éïkªyruž_ún¨¿Zn„’^Çó¯`'x¾OEäôJÆå[ç¾…HUl¿I&x~w`?Àu=4UÅi ¾~þó(qžj¥@’$xž‡çyôîÏsQÁųC*Î2×OÞL53Fv㈢¨{á7¿·:?õÈcüÓùO $2%£”ˆâˆ úØ›% *~âPÏŽ3P¨2·>‹„ïÀ0 ‰“?±,lCYZÞY-GÇ„ax5 À÷}$) ž©êÑrÛ¬Û+„›Û“$!ŽãÍOIdBÌŒî¢ãØ”3C„qÐ C|ßCQòE½C7bùM2J Mݶa÷.‹¢Ï÷‘RP0I)H…†»L§ý”Râù>abèsËËJíXûÓxJßó°ìˆlšAJ‰ã8øqDƒ/¿þG¼÷Яr²ó\rO‹ÇqPUµ?x®ë’0RWøÆ™çøùGÿ~ë›d|tœ4IqœÍµ9 ¤” h‚§.ý?ÿÆßäS¯ý–ïPÊTpÝyâ@bab[¾³d_b‰Eöo¯!/p©Ñ] [–a긎ƒÛqÑR¥è;Ü›}+QqŽ?ýAlÛFÓô«“Äñ‰ò1Û·òÔ©¯2³}†ß{ñq2F†0°íÝÔHÓwsLÊù"¿õÌã|ìÁ?@[\›¥ÑYcùl›ÈM‘¤¤iJ«Õ"H"ŠAW[ä÷¾õ8^ÿÜ]=Æê ’vÛFQÒ4ŶmÚí6R¥ÂóO0>7ÊjgŽÅÕ9Î4ñÚI †!išRHòÌßâÙ…ÏbùMN/¼Âì1Ÿ”J¥.ùD)A&%QJ<³úW´Ó£øžÅKO°rÚÁwb2YèmÙ’ŽX勳¿eY,¯-°òJ@»aadµþ$±mœ¢$‘¾ÕüËþ\n½Œã¸\úf™¦ä’išÒh4éÈ„02q3—ù•¯|1=±S f^#ŒB²Ù,QYiškÕ:r¬CiXgå;ë]LÃD¨ Ý7Y«EEQ²RO)Ý,‰—R^逧!jv×`išFBˆÀ0ŒB¥RAî±(:WŽ[8K š¦*QuA’$ …N³Ù;gv£7Ì¿hc7B4EC’¢gTâ$¦R©0;;ûìÎ;*¨$Cj*X~Õ!%ª¢"4PºkfÂ0¤\.[Qlâsã[ ,wY?ç!CdŠ–íNÃ0èt:Çòùü3[dû#g!aýœvÇÝ·Òl6åÂ… xžÇÊÊ ?öc?ƾ}{™»<ÏË/¿B}»$ì¾<Ï£ÑhP,¹t隦ñÓ?ýÓ Tø«Oþ5•j…òž%jµ †¢(\¸p0 ùÀ>ÀÁƒùäŸþªÔ0F—¼¾ÎÆÆ4›M‚€;3Ç{Œ0 yæÉç½qUSét: p]—$IPU•‡zˆ·¿ýí|ás_ä•'˜¾S#ŸÏ³°°€ã8d³YšÍ&ËËËT«U>òøG¸|ñÏ>õMö dÙ}[ÊúÆ:…B!KKKX–E’$|à`jj;Oí4Óƒ.Úàà Žã`SSSœ;wŽ$I˜™™áèÑ»9U;ÅZc•ÁÁAEá•W^att€ááa.]ºDš¦ÜvÛmd³Y¾ü•/sýõ×sæLÃ0úWûÀ\¼x€Ã‡3>>Î-waee/²Ù±ciš244Ä®]»øÊW¾Ò›%”J%†††xõÕWš$ŸÏsüøqÆÆÆh6›äóyÖÖÖBP*•ؽ{7õ •j‰r¹Œ”’Z­†eY B …7\3Ù³gÙ»w/kkk  P(0::J6›åäÉ“ÜqÇ”J%: Ïó8yò$âÆoì`…Ûí¶U*•ŠAôùóû}E¡Óé¬ ÇÉöì÷‰ã8 Ã0Èçó…ïÇßÍÚŠ¢t:Ž(•JÅÿSûr¹Ì©S§žÝ¹sçQÏóøßÅ"¥DÓ4666´‚ (þKq÷bY[[;644t¤ÇÖ½¶5®MƲ¬ ŸÏgE‘H‰ØÂ´›¤i*â8Ž;= G dSA‘ý¶›ÁHß÷ãL&+Š"…]”Íf[Xز,ß÷ý !D$¢ËÙʵ±H)…çy‘”raccc]JŠ.'§”. oÆ!6ŸÝ ˲¶›¦ i²ÙÙ&7³%– ”$é6PÄ&¿ËÍdÂø®!¤§vÔ–––.íØ±ã€çzi˜sÉï®FÒ6I-uwVUUrxxXd2Ât‹RA%îèÐÎZ2Q@‚çyrqq1 E‘Ìc»5¢¦†l›$Ž IÿêŠv»A0691Yò“uG›¬®“4 KGÝ~LÓäÉ'Ÿ¼pèСºŒ%«¹e¶ÐÚ Û’Ž¾ŠLÁ0 Ž?¾mbbbÞ4L¥Úrà–êÄ ´Óeòn’aYVœ$ÉÄôô4–ï“ÙcQ¨(­þèŠIóÉ.÷†@UÕÓ4sžç£n÷©Üî ‡EÂx %6Fã‹ÝÜæ-®&I‚±¼¾Ãîñý¦Ì­\DUT:ÏÔ uÒ4UTUÍiš–BÀ‹Û5riV{!Âs¬9„hš–zžR²![ì¿ßFK2n=͹ûx™`QGÉ*H)7ºàî]§tÃUuŠuk˲Ñ:UO饯 è語¿˜¬òæ»sDO–{Cäè|£L¸lôr‘L%Vê0z8ÀSÚ¼qç¢<ºûqŠÕ"±ìòì& Kß÷ñ|ŸT„Lr7¼ó¿ò¯¯û ö exÛ`Ÿ&’$‘½LuœF$Í ÷Ž¿“C…·rÏöwó¦[ÞAx- ËÞqâ4áÑíaRy€¼‹£3ïÂ[)GÆqŒçú„IÈHvšG&>ÊÏÝýI¼fÓS„Òíój…=ÏÅ0T¦Õ»xËÔ㪼•_yËß“æìÍU„”’0 ¥ïzD2Âs#>|ý'¸÷»øÐHe4G$ƒ>gK)ñ=8‰hvZüîCO³´¾†2^ØÃÁ‘;7¤ËÂB<ÏÃ|Â8ມ[y~áïyáä nŸzMÑûL™$ AtY8 +îf±s‘ók'¹mú’4!c|¿{’[ÛgÔ<•Ì ¯{/°¿|?;‡PÒëø¾‹çyÄqLÇø~÷{)S!WLxöÄó½ƒÝµ›pç{YØóQU§-xqîŸÉŠ*CC¤IAßï'<ÏCQ.Ÿ³ÉâG.7LÜÂdé:ü°GA=ß' #4™a¸:ÄFzÍ lή¼JÅø^Ú} CwÆø†¸¡Å`iYÈóúú¹þvUUû,Ç1i’Òô×-?Ls=eÅÅT³DQD$}éetuREÁw%FÎgþÒö oö_óêos9xެVÀq]Çé_Ïu ÈeûuÖ[-(´H«³iîÇégXÇÁêX$iÊ|ôm4‘ÁÏ]äw¾ù3¨šŠeYX«?Ø®ãÇ)SS¾üÊç*ð;/þ›®&û8ŽÓÏ"Y®ë‘Ïeùµ§ßÏ/Ýóçh®²ÎÜ…9–嬄„€f³I«Ó!ïæ U•¿»ük¼åð;™»øk/IÚíNØ›…”ÕàxçSÔ×ÚÑ2ó_Ù`þD›ÈN¿/ /øßá¹¥ÿE Ù\zýåv4ôœ‚–í²pǶªªf.—Óc#bìƒ`!a锃s´Œ@ÏŠ> +ЍªZÈår‡"jÅ“§bD"Ðsa€L%…B¡³±±!†††ŠØæÐY;²|ÒÆ_VP 0ò]}¢Z­2;;ûìŽ;ŽŠTN8ä2‹/;xë º©¢ ´îÚ. CJ¥’‡q±cFÜüÖ"«¯ù¬žöðWºíŒB—…MÓÄuÝõ|>_Ï—‹TDtæ#Z—C´;î½Çq¨V«\¹r¥§ óàƒrðàA:-‹cß:ÎØH–ñLƒb©ÀÒâÍf³§ 3==Í#<ÂðÐ0ÿó/?ÅÞÉ J ŒÞ:ÊÊÊ a’Ëå8yò$išòÞ÷¾—ƒò™Oý 7‹š›ç®žÜÔ TUãܹs„aÈáÇyÛÛÞF'œxùU j‹mû}´»iü×_EQp]UUyãßÈۨ˯ž|•ÑT††9wö®ë’ËåhµZ}þÉŸüIV–WxúÉçØ;XeûõÍVƒr¹Œ ËÂF!ÿøÇBðÔמ!-'\ÈœGãÒ¥K‹E¶mÛÆåË—I’„={öðö·¿¹¹9V×W¨T*¸®Ëòò2X–E¥Réë«ïxÇ;P…cÇ1==M¡œG×u²Ù,ËËËìÙ³‡×^{(Џçž{¸é¦›8þ<ÍfËm399ÙÏZoß¾½ÏÍÛ·oï뼮粶¶F¥RáÅ_dhpˆjµÚüjµöàùoŸ§V«!„ Õj‘¦)SSS„aÈÐh)%‹K ˆn¸áÎf³ÌÎΞ›žžÞÝK|ªªú=šm·<ϳ3™Œ©ªª¾µÍ¦|Øo›$ RÊ(Š¢@UÕB>Ÿ'Žã~?½7c( º®w†¨ÕjEß÷Ñu½ßVQâ8FQ’$¡V«qêÔ©g§¦¦Ž¶Ûm²Ùì5̺õ»a¬®®R¯×­0 ‹=Q¾§%÷tä^L›Ì¿^,ëabF_× …b*¶ðj†ŠBÉård2Ä&ÛöôÒMa¶”뺦ij&“Q…nŠðßÅÍ›KŸh}}ݯ×ëy!„ÌšYÒdSÞ½Ïúúz’ÍfõL&“f2™.“³E?ÞÒ~s­FQD¾OEÚãlúK³^,›Yt™$IR,»*ö¿Ð·eY"¯T*ŦiJRIWoÖFv—“ÄÒ î¿Û¶k„QDRôÈĤ¾¾Nꨤ®Ú¿¢¶m¯×ëõšišZ$bĨM.«uµ[× ±UDÒÏóœ Öêõú€ªªi;ÓdhR%vðtWEú*=> Ã(›ÍkµZ⤥]$ ©«vÛÛ*$ 1MS\ºt)>xð i”&ü*Ûvi„6à™¤®BêèÈP`š&ív;Žs™lÒ mYÛ#ÒnßÒÓIm+(ªÀ0 Å÷}gïž½†©¶)ÖO¢•\ÕUU¥ñ…±Õe[!„nÛ6–ï’Œ­‘Ù±-?ÍJëu4©º:/Özo³,IÓTïCGšŒVQ4:Ëè•/Öˆ›I’d……4MU@õw¬S¾%KMg©yE¨x§ د‰®ë9@ ,iël¿Kb¤%dšmÒ@¡ób‰`Þ@Í©$I’ó<ÔMõÕ©9¦0®M³bÍy)q[cãËÂ0B¡«ª“¢òxëÑ<"60D†¶½Ž®™´ž*.½[ºEQ~Õê0ýˆZö˜*íFydçã T†“°¿¢d„AH¬úÜ^{7wo'ÿé Ëtå6ê¥þƒ»Ç”AËÖ¼ëàÏóÐÄãš8ÊÝÆ^{ÙÓ‘Ã0$Œ#Þ<óA†ÒÛyÓ ïâÈèáÒÂߌ£Ç¾Ȉ‰ÝüÈÞÏ¿;úßYž×Ù19C”úþUU®Ëº¡2cåÿ†½…‡øÅ7~’ذûšó¦*'}Ï'%ÆBÞwð¹wç;ùà­@©–#–]»ª&úQH¢zÜ[úYöÞŠ²ä0#•±.x.þ&'öÞˆq°·~„¯\üs._YäжÛPdwÙÐãÕ> ‡!»ª7q~ýŽÍ=ɦÿ5º’! »ö³^ß=ÉéEŠf• γ\W¸ŸÑÊ$<Ïíª|iÚ×nÓ$%£dIôO|ûIÜA-³ ?ðúq÷XØs]4UÅjÂK‹ORT‡©A*ð=ßï ëAày.B\wñãxÚ:Aàãº)™^u&Äe%Ë.ÿ.?}øã<¹øß™ëœÇOì.Ën.!zYC˜ŸÃî$Ùs#sê·¨ ˆ¢× ‰ã¸o‘È O\ø_|äÞÿÂ_œúEâX¢¢áº]YS×õnð‘$M% í ,ŠUJ%mxŽ…¶Nwm™œÙÛõp-Cj\ _bÆ»–ö¿ù ë¶ÓFWõ¾°ºiQ255ÀWO~™ÉQ~ýù'6QẪ®\½+ãˆr¡Ìï|óq>rô×Ñl}™õÅ+¯7‰ƒ”\ÔÕ@›Í&~‘ws„ê:ðírÃÌ´ZW8ÿO­–Û×…Ûí6qCN E•Ï_þo<œùW4Óyé¬Î6‰œîºJÓ´¾ÿ&åXŽ^åïÎþŽlÒöš,]´hnaaÏóHü˜pPàË __øSkGI æ/„,œnáµc4£»2°,«ËÂq@YãEû/HŒ€…Së¼þ´K§é~ wèRbJk~†ùx'Mí2ë—\.|£+0e2’$ac£AG&¡Ž¥¼ÎÇŸþbûÄ´L<ÈTºær9¢(²¤”EÝ00'Šƒ*öRDcÖ#j¨h†‚šé/ç4M0M³ëC‡ âFÂÆY%ñ%fY%M h†1©iæž„rQ§1çaÏ'ø ç½ko+‹–çyÅŒaâ3wæhÏ…4ç]üU•Ø—dJWYxnnîÙ‰‰‰£I”¢Œ…äs*׬…ŠfŠM[žJ”Ëe+ ¢eÄì¿§@s6ÀZ p$ifE!Mºº°çyë†aÔQu&ïÖˆìw-F;rËM4[M …ív› XXXà±Ç#ŸÏ“„)/½ü2ZMÅÍ9(ª‚ã8¬®®R­V9{ö,333Üÿý  óéÿùvMM°à.°íà( lÛ¦R©ðÊ+¯ ¥ä}ï{õz'¾ò5t 2Æ"ã÷Œ±º¶‚ѵ©õýÚwÞy'7>Œ¡é|û[/3\ h·Ñ¦UªÕ*gΜ!“ÉlZ64î»ï>}ó£¼ðy饗˜Ú—¡|{‰ÙÙY,Ë¢\.³¾¾ÎÒÒÕj•w¿ûÝ466xæ©çÙWÀÏz4 †!+++´Ûm<ÏãÃþ0™L†W_9MKiâ—=´©é)ÜS.š¦133Ù3gHÓ”]»vñÈ#ðâ‹/²Þ\£V«!¥äüùóÔëu<Ïc`` o›}ì±Çð}Ÿ'O033C¡”§\.S¬súôinºé&Nœ8AÜÿýLMMÑn·ÙØØÀ öîÛ \×e÷îÝÌÏϰmÛ6ÞùŽwày.^@׫츎oûÛÔj5êõ:º®÷³ã»wïæ¾{ïã䉓Ô«˜¦I¹\¦Õjõ/¤eY”ËeÞö¶·ñ /pþÂöîÝ‹eY\¼x‘J¥¦iòÚk¯!¥äÈ‘#LLLôf$¯½öZ×#Ýc¿(ŠÈf³X–ee2™â¶mÛXZZBÓ´ËöY´·ëºsÙlv`dd¤ØK>ö¶§iÚÿ¾éß³Â0læóùÉññq{ ÷î3t“£{Œ«išåºnqff¦ïpHÓ´ÏÊ=–N’„jµÚgážQ`+ã÷r—½œd£Ñ`hhÈÊårÅ­+„­±÷X^QÚíözµZ­×j5šÍfŸ™µl&ô˜oóù'mÛnÔëu£ÑhÍæ ]ÝÂÁ[ݶm?“ÉHÇqB5s}ßrŸ'¯²°ðÆ]÷›\?ø(£c£}í6ÞtŸA@œD¬¯üèÁŸC¶ù©#¿ÎyAâ_ãPõ<¯ïü|ó̇ء?ÈÝ;7íü ¡fãyWûî‰VQ1œŸâ¡‰ñswýöÒ 7 µ¯Õ…ý×uÑtÁŽÜí|øÈp úF~é¾Ogºm·x¤¥ëz$¤xÏûü÷íøQ~æ–O26¾0½Ö#íù~ —»sãÀð(5sœ¡üXŸg{Î¥þIÆ× á‰KÁ—_xнC7ôlý7_ß#úÔŒIæÛxuån™x?¶ûúëV´çydõ"åL•g>Í‘‘G)dJh©‰çy¸®»ÅÇìGåìJ¡Í_ü;k)hü Àó½«_ß¿ê‘nè|æå?$ŸŽ33> ©Šç_õHwãêz¤/œ¶¨ +¬;‹ìŸ8DN-o²²wÍ…ÂvÛã§ýq¾zé“(acyM¾êvïy‰‘'´.lg¨2DËmõõÕ­¼†!q”¤µÜ}€Žß$o”û ‡ž×›±©L(hižX³ð¼?ò C¿ßw’$¡O§¤R"c±Ú«­5Â4ØäÕ-éMƒ€¢¨d³ãå,¿‰!òH¹éϺI^¦GJ(WLâ@CW  aâGÉ5éºÆÜÒE£Šr¬ùi|ÑÚô9{ßWþÆÊ§ÙnÜÎøN…͉۸n7cÒ»…]×%C µ—_ÿ6?üK|üù÷ñíÅ'I“ôšlL¯oÕHùú…Ïòø½¿ÂçNýg쯡¢âº×În×õˆâˆ%ëíŽMmØ@Ö/²a¯'ÝLO?åû¸Ž‹”Ðà,{†nÀË_äwžùº¦_3»»q;$IÊÔÔOþgÆk“üÆsï‘ôûî]x×ëÞ•|™ßxæƒ|ð¦ßAk'‹´£–Î5ð;)qšGA³Ù¤Ý±(¸9„©òG/?Îöþ«ñyÖ¿Óåß^2Á¶mZ­V7‡/*<»ög¨¯%´ÃeZ—WY8ÓÀo§ßÃÂù(ÇBø2Ÿ?ó‡XA“–žÕy›VÓ!·èÂ1–“ç+¯ÿîÑÞ‡³ó'X9ÛÕ…5C Ýnc7m2Qfò:_¸ô»¸q“‹ÎKl,øl,71ò] Ķm¬F»ØÕ…Ÿ_ûK.Ù{X‹ÏX>çŸ^CÑéëÂÍf“NšDæÀ¿ü¥Ÿ@ìØ¹CƶÄ,h$iB.—c}}ýÜàààn]ÓѶ…äꂳ>v#@z:Ȯ޻™‘^­T*E ‹.É_—-§´–W#ñ@Ï R™ö=Ò¦ir¹ÊŒO^UY9ïu ñèVéÝu]>Ÿ_lµZ¥‘á‘‚ZÌ<˜cù„GkÉE 'ÁÈw9ûô½1…¬ÊÊi›Ð’¤ž‚LAË‚ØLÇU*K¦²ØÁgï½yVNºØ«!©¯:)fI%‰“žéôX>Ÿ?b˜YÆîV°—#Ús!Ú¡‡z†næææHÓ”……~øa8@k£ÍsÏ~ƒÉ]6‹666h4T«UÎ;‡¦i¼ï}ï£/ð™O}–Ú¶*WÒ9††‡XZZÂ4»ú‹/†!?þ8õz/~þ»%WCËŒauu•l.Ûצ=ÏãÖ[oå‘GÁÐ ž}êy  âRDÇ Ö¹p᪪vMBŠÂ½÷ÞËý÷ßÏÓ_†Ó§ÎP›Ô12&ÍFÛµÉf²t:VVV¨Õj¼ïýïc~nžçžzžëFóDƒf“Z­JE,//÷-)úЇ¨×k|ëù—XÕWˆ¶h;vìèƒu¡PàôéÓ$IÂÞ½{¹ûî» ‚€•õeÙØØèߺ–e]ã©~àPU•¯?õun»õ6ô㣣£ý[öæ›oæÒ¥K$I­·ÞJ¡Ð½ËËËø‘Ëî=»13&ŽãpÓM7ñ¹Ï}ß÷Ù±c‡bß¾}´Ú-Ö××)‹<÷ÜsŒÑétÐu+W® ( ÓÓÓ<úè£4›MlÏ¢V«°RÈsîÜ9fff¸pá««« î¸ýNNröüY<Äúú:—.]¢^¯S­V¹xñ"'NœØR·ÜM®¾ôÒKW=Ò=´§ ÏÌÌìÎçó}îÛªÛnõ [–µ:88XÌd2Ù^ŽmkmîÖ¾“$‰Â0 ªÕj¡R©ôá[uá­5¾BˆÅN§SÚµkW¡Õj]ÃË[uç4MàÔ©SÏ8pਢ(ÝgòŸóVŽ×4f³ÉÐЕÉdнª¨­¼ßÓ§{è·¶¶vlddäH¹\îÖÄôjšÓDn(ªBˆ#Ê4M×=Ï+¶ÛíTŠ©¸êÞŸB‘$É|§Ó©Ø¶ïZŒ•n­r 3÷NÄÃÐu]·æ8ŽT…Jšò}ûÞ¬^TE¬¬¬D!·²­²?øªªbÛ¶VÆF’$Á¿Ô÷æRÊq'ïû~¬ d*¯Ö ÷Ú«ª ¢( ã8vÓ4moll$HTMÕ´ñ½ƒµ¤©#ÔnmlwmäÆIœrÛheHÖM’ŽÖ}Ù@I’Ä©ÕjYMÓ21 Ñxƒ\–hÍ Ù0‘‘‚bv]çA¸ÀÚààà€¢(麺Îäu*ɆI¼b’::B“­;cr¹Ü6EQF+• ~’¹®ƒ¡*Ä-ƒ´Ñå[¡KP$ºÖ½GFF"™¤Éš²ÁöëÂUƒhÕDÚ:B‘½ëÒo4¹ÉÉÉ$ÊbÐ`êf $M¤‘!±4TS"A³Ù\Ãpß¶mÛÊŽïcî´ÉUÂhõ·®£¥ÚOU‰Ö4 Ã@×õÁr¹\°=eÅèmx žß"'ʤm“ÖSE¡Ñh¤…B¡ªëz¾m´ÙvŸJ!„zœ'Iœ§Fˆ; ªªV-Ë*‹Å1!Þu«ŒÞ.I]AêÇÈXŸ¯áœÉô<7Q†dt“ Ýbǃ!9YÅ÷=H#¼†Ä©Š¿¤S,BŒT*#Ò•4÷.²íî J…À ÑÛUZß(bš&š¦‘ËåÂÈ »j3~o‘ØW)hæÖ.RR†ØøÇ22P1 CB¤¦aÐL\&ïO_ãÖÑ{QÞ¶ëç›!ÆÇ÷¯õ1{G¤xìÒßÄ/<ð§üƒŸ`bð å ó»=Ò©ïûI@§ñá[ŸÞñ§LŒìæ®[îÁK칤I’\õHqïÈ{y×®_åÖ½÷sdæQwl”ßác„V†¹ádÔ\Ÿ•{2¥¿Y :]¸™SkÏóå“Ã;÷þ{&*{ˆ£¸ÏÂ=]Øówþ·¹¡øƒ<°÷­ f'q½«šsOŽ£„rv‘íðÄKO°³v=£…x·ÕOàû8®‡®)­<Ÿ<öLšGxðº·`ªy\ßÅs·²°Hòáëé*ùÛJ;¨gÇñ}¯o[=ÒD7î>ÄóëŸBs|—¹æ%¢(&ð#$z_z À, qRÐ+èŠÉ‹¿Bœvý[eM€$Ÿ$£Œ*:8,Óp—ñ}—À×®©0U¨^BuPåųǘkœ%ºÖMÓzÏd#F2Q¨—yéòKÄ%‘v‹¿3¹éL¼Ch˜Jfˆåö<1N`ø2•WµoßG ðÒ%}†ó< ëÎQùÑ5rl¬Å¤¤‚c¥(Ç[ŸÅÈH‚ÀÃqþôî•ük"ËW_ÿ3Þsð?sÊýñåžQ¨Ï«½’ÿ$JéhÈÈAî;x/Ÿ?ûGø©M_Mam-¸Z‹sOð3÷þú÷±¸B5;Šç]uÇ÷0Šb–­9œNÂè¶qa–‘âv¼ ;£®&||ÏE"°µË?JG?ÃOþ³ØÍƸ^@º>ï”údÄKç^e¢>Ο¼ü T‹uÜÀÁ¶¾îí8ïS*dù¿ÿñ#üæ£_Dkù‹,.Ͳ|±ßމ“÷où£ý'Î6¾É•Õó¬Î7ð[W=Ò=§A.És²õUx·á&Î.}‰¹Ku¡B¥Réž`iàÉ OÌ}’÷Œ| QjðõW¾HcÞ¡Õ Qõn’¶Ùhb¯ÛèQ‘¥àÇÖþb1ËÎü1Å•&z¦+áZ–E³Ùê–åªyž\þc&CœYù~'aáÕ&zL³« 7›Mü¼$NMÒøÍ¯ýbûØ)¨™®?®W/EQ1›Í‘¿!floŽÕ“W^ê€e¢è šâ]X×õb’Øýöá|Êåãø³]CËôËÈ,EQšRÊÉ|>OþhÊØh†ÙãmÖ¿“†ÕEë.Â+•JØn·\6‡­¸ÜõÁ+'|fµ æu)ZFErU=ê[•7*LNå˜}±ÍÚ‰éuzE5éëµZ-”‰4¢‘ˆé3,wh^ V‘H´¬ MRt]ozž'3™L5W.°í^‰u%fãœväöÃXVyfgg ÃnÙÀ[ÞòvíÚÅÂÜ"§¿y–º")íôQT¥_/\(¸rå Õj•w¼ãhªÆçÿö‹TkLäTÐn· ÃÓ4¹páqóÞ÷¾—;vð÷”ª½ÎÎÛhµ[†A’$,.."¥dß¾}<òè#ø®Ïwžz•œÕf¦ê£jd³YúÔ „àŽ;îàλîä¹§¾Áå¯ÎRׇ™¼!K³ÕìþÐ…ibY+++Œñá˜çž~ŽWOžâúñ2Ö@‡0 Iâ„b±Èüü<Íf€ÿøÿ#/>ÎC=ÄÐÐ/]ìüf2`llŒ¥¥%FFF¸|ù2?ü0{öì¡Óé°¶¶Æ¹s°oß>._¾ŒïûŒ³²²BÇÜ|óÍÜyÇìܹ“¿üË¿d~ažÑ‘Qžxâ êõ:kkkDQ„¦i?P­V‹[ÍÞ[ù¹÷=Žc+ Ãf±Xœ Óé\ë=¹÷·a¡ã8Æðð0¶mwyëïcU*NŸ>ýìîÝ»n±ü^³OïMÓX[[c||<´mÛø—j¢7Ï·iY–,—ËÕïÞ®¥Imõ1;ŽƒeY^µZÍ´ZÝô½LŠå{xUX–•hšÖÍ^#ЄÞÕ…•«5[ü×ÒuÝP×uÇAWõkê…]\Ó§Ó‘Š¢D¾ïk𦠠jE¹¶í&øË$Id𦱂Ò5^#Q”>×ö« â8N,ËJUUøê…Åæz7Êf³qš¦RÈͺe@Û69ÈHÙ,î/¯®®^ª×ë}Ï—¡ÑÕ…qMÒN·FWF B“½<œQ*•ôL&CDD:Þ¦˜5HZ½ºÛ«‡a¸®»Z,gt]-µÅðHm´e"mÓHÞ¿úžë¹²Z­Iˆ²£MN3ˆ[:i[GFj÷ÇÅd2.^¼X|×Û™#*á†AjkÝçD TÐu]†áŒŒ3Sþ?Ô cÛ¶~åÊ•µr¹\ ã8 Ê•ºJÚÑÑF~¤UÐ5æS¢UE!j¥R)ŸJPv9ŒÞ."ÒÐE†4PhþcUUÑu]˜¦©êºŽc¸ ÞåS/j‡„ž º¤ýå!â–Š”Rhš¦†!4MÃë0|¿FQ޲ÚXA“ñB‘Îñ2Ó4Õ> «ö¿)BKT|ÇÁ$Gä‚u¬D°hô~±R.—3A”¹ÅeÛ!«m‘¡@èN™Æ×˘†¦iyÓ4íÿ/õªª¢ªjµÏç–ýo”}"ÏG¹cêˆ<ÄÒÿ.¦ìþª5y€ÿðà§xï‘_¥VÜA}ÛÀ55½}”Kì5wúeÞ¼ãcœ¸‡{nx#^ä\óÛY½ãøIÀ}#?Á°r#Ýñ¸eòíxz£ï"M’DvQ1$L#jæ6û·ü§‡?Íëó£ãÃÄâªYv§,žçcäÛ”Ûù½|šJf†_~Ûãe›uÐÿê…=Ï'ˆ”LÀîôüèM?‡rxøAî™ùM¾Vö<Ÿ( 8/œ¯='&Žì ÁR½*bȧê/“îNa»vDÚ¯4¨E rrþÏlI oƒËDëT8˜ÿ“Xw,#>ÁÒ’ÉΡa^9ÿ+&—ÏâØN”é]I髚àíË/røKñûÑǸl'È£_—6p×gnù õ†E®(ò3¨RÛµ>3nÓ40m A]¹Èpÿ—™òNð×3ÏÑ¥u‡ãÖ¹3Lχó¼î}ú²ý<ýá#dâ…hN®‘ a‹\!“ባ?å¿Di*ÓÌ.M3[ª ×<ºÝÐ.—ËÔËÄ›Ilž:ñ0÷ì¹é¹Ó,jµiáÎHRB¨þxæ ~±þfì³Ìf)_­aÕýλ]„VtÛ1ªþ%^=û n¢Îå…³”>0¨Î‘/lŽé`É>†ãØäØ¿ùnÈT879Ïüå:%I„ïlår™J½A¿cÒø˜w'ÿDhò¯™—Y˜2)Ï×PãJ¤…—«  /HñÎÜslõ÷0î|@cÑàÊ©2ŽîO„Z¸\.c$|L[Péå¹ãO¢<ÿÃÓ˜‹ËH¨ª5ÖʲLLÓpæÿãјšãÇO=Š>®AK+‘±ÓnÀÀ·|–ιȭnî{éûè% ³^&‘ˆpuŽÏç±g[L½ðáè›,ŽÚø–„’-¦FPdh ϰ™?í²<;ñ_?Ž~YÅ\r‰gEDH¡(Äd}ܧZ‡/¾ÄÒyŸÆ-)£%Õ¨ÒYSéÖ}G–ç9~î–θz@<+PT9‚3%I"!iÔ.¸4Ÿ³“ï lÚ°é&ÐÔ0Áèû>333ìÙ³‡,ÝæôŸ°*CJ,RÜ×ÃüÂ9õ)žÑâ©El«F&—áRéñx¿–Ölç…eƒ}©v^xMjë Û°íPyt´p(øM\×dSáŽÏü…÷N}ÄÎ5ûÂdù miaÛ"+˜ª•8qùu¾6tÀu½Hgwƒ à ps7qÖ|•ù»ØXÜF_×zÌë|aÓ4¼°’¤êLóßÒ(·®ÛK>¾Ó2®S"¡ç¬AsIðÚÙçY­mcûÚíhR"ÔÊÆ MnGÖÛ@Õ+Ñ—í§·{€Þä@ÞîHP½ÍH7Úyá3•÷ø˶ŽöñïIEND®B`‚PyQt5_gpl-5.10.1/examples/animation/animatedtiles/images/Time-For-Lunch-2.jpg0000644000076500000240000007732713245231431026736 0ustar philstaff00000000000000ÿØÿàJFIFÿÛC    ÿÛC   ÿþTime for LunchÿÀ"ÿÄÿÄD!1AQa"2qB‘#R¡±ÁÑbá3rð$C‚’ñSs¢%45Tc“£ÿÄÿÄ!!1AQ"2aqBÿÚ ?úsü<à¦#2g’̹ÅÍ¿Z±2ʪ^Πz[ÕŸ#²Éö˜n¨ GPt?:½‚Å&)C G©:ûWÊ—ãÕ®†H¦‹5•OéDn þ¦ªNòa„°åòHn›ƒË…»jPå¿ZtXo— © µ“a®æ€šæóDÈ[-ý'¡¨ Iر¦!Ô0;ƒ­é~s™J™-æ ïÐÐ}ækôúTÃH"•ð¹òåo!ØQºFÇϾ÷ScYøìßk|Û“z»‡¸ÂG˜ÜH=©”ŸDBßsÌüè‰RA©VKûS ÜÎ*ÚŠËâÃÇJŠlm½hÆ 8QÌÚ²¸Œ‚L|®·±ntrðÀìo{“΋ '…ˆI«^ö«X<"•æ—ô¨6°êj1x”¾ó.U·Íg)Ö“2º‡®¨¥;zž•ÃqÞð¦vZÄsSÖ´½:ƒpÚ†ërë8°ôïR¡lC*°;ÜW|¾”$÷ZÔB£Ëkÿ5$©P À ©W'ºiD¤üÅZ…÷6µTã™./ÎÖý¨“¥}T¸zìÊ~!Kø‡j%½ ¹ì;nkšŠÔ,9Ô€G1½0æÀÊí›:[λ­ÿja¨U YÙdR¦õî5äBÆE`Ê-˜XïÞ´%[MmX\->&`mslÇMyVü‹“crX‘tfÜö£‡p_UŸCa©íCko¹«$Ku¥i@Q ebt7R7SÔW®"õ-I¶ík~5¨åCâÄPþ#•+…ÔÜz% B(b,X jCe/¨Š@Y-Èþ•š<­`¬ì>¤™5x Æâªqd“0'Ã}FºEQÁ·»b,Ht¬ðÙI…ŽŽ|½gƒF­j%jƹ× ƒqÊ«á±K"e“Ö«ñz1 ,Cém­ë¡ÇLz5ºV8,·°§eþ´ž?(lLh-q×™½E4§sezÖ?úkâãš„‰BMŸCBX^××¥ n•¦A&&1†?|Q¦ç­#†áŒƒÆ•ˆØ-®ZƒŠ©xÀ‹Jon•g/¬JЪ‹3ÿŸom|\gUÖBÚŸ¥™çP¦ñE¾»µŒZ!n­ñq©7ö­ë#Hš1÷ë ÐÑx®ƒþ",£ñ¦Ôµ•vÔ{Šb¸êºò<êFsÐ܈çR€­Ð\v_â” QhæU^Kk•ö4Hl@²‹›S¨ÛÉËIü,£-b>I”ÄݵSBZº@%‰£m¬H=-V£ED21º}9Õæ—2…QÑTªÔfØxÔù`EpȦé!:\QPbÃ(`ó³huÚõTHþ>C+e$©?•]ŒýêûŠÌœÚWÿQ¢ÓÃmö“˜\:u¥cpF;â0¬Jƒ|¼Ö»†¹Å_Ä2Ÿ¥^…ò½ïÔÌî5U¡â¢x8éÈyïËâ§`Ó&ù•ƒ½î§AaýëüIÃŒ1P©1É|Ö7±®àØ™áá¶ŠB¡$¶R47×ZÌåeʳ®›nöÑlhNkù¯z œKûqLK|8ì¯ÔÓCpZ+XÕ|&'‘<Í©µ»ï}y_SZœ pð™šùÜYTéaÖö§È¶ås¢ÃaíP pljÛ¥M»7Ò¶ÊÃF*5ÙÀ“Öƒ„ãA†fazXÖˆ;‚ ˜Y®9VF; Øi²Úè}'¨¬Þ®Æ§}5H°¸ óàŠëZ±ð8©°Àqnhû»ø,EI:å;U9A‹U#qÛ_÷þùPÅ.` S)ìt4D2î'ZÐH6¬þ8o_þ5ý*úÌÜšÍâ²,¸Ó“P (=mG/ õ„¨^½ÝÉ?/üÓ± žB‡ô¶k[ŸJ_Bœ><Äù®ÀvÓø¦²334LÝlAØÖ§š X{^Eq”E™|®¼ÔÔX)-r<º_™¢a¨SÏZƒP-‡¿Öµß^ƘûÔef˘¨¾QΣx¦âbF–1fêÑ«$h ±r€àéÊ×éÒƒ $òD%Ï w$»Öº|!ðLðäfk©úßJ?ì-¬„ncÚ‚³¸W•0‚,Jg¾C}ÀÞ´ãÉ,bH[:‘ô˾ 0 ÔÆhÇÄ[º­ÇÖ ¨° ‚Ç­@¢µ1–„‹Th]XŒlmÌ•ͦ¦‡)'6 Þõ)PÇ!FÝM¨AéW±‰Ô\YÆÇ¯j¢À«ab7¬YJM>,Iô˨ÚãqUo]z4§È>жÔxj^Õs‡8T@ófý«3Š»®,JBù%õt½hðù#n†I Ç—Zeÿ*>Ö塨%®Þ–Ïn¿J(ˆò†´ƒò¹ý…h%Õdpó)'áK裥`(°»ë]zºC,m¥r0Ê)lmïʸi¥ZމZ’ µ)eZŒ05]M5LŸ\@$¦àzõÿëüÐ*B‹goH<»Ô‚Hÿw©››ÔÞ„=öÖ ½·#ëR1H[±6 '¥c;‹ë{žÕ.\&PHi?!YnÁ˜ïÐVyV¸ÁàdðñhÌ5 4ëZ9|å]mYN2ÛB5½jÂVXó©õ‹6ºŽ¿üêâhdOBÅÀ†Ù#Ö:Ч/ ð0åpe¥BÙšþ¡§JºÇ1éÒܪ#,²zcM’†;£§­}ŨI°½ox®HV9¹ù…ÿZ\˜LÚ˜Œmøþv¬þ?‡Y8IdÃâ˸7µlañ˜LBfà·0û|RŸ†Lƒ§þ)›Èuƒ…F±°Û3©º­‰ùU¶ƒ /Ùão(Õµ;Q/™HæÞP}Í¿š— ¹#jÜ’3´*°+0Ñ)/M¹f$›“KÌÄŽ[S)‰婱®æk˜ÙIí¥)Ö¨:®VPÃ{z›-¶¿s\»‘ÈTƒh¶ð"?ôÔ°Ì|øHOý4À¶¨"õbU“‡á_ºÍ[­Çö dâ8M˜¼co‰MZ7 ™E:76 ¤‹Ñ‘k*Lv%¥Õ/¾U±ªÊ k I5¹,0Kþd"ýWCA‡Âaá“Ä\ÎÃ`ÀXQù§N*U°UÝ+€©“s¹£QjØ Øxç±+"‹Sb{¢ÑI²LÌYEÃm˜u÷­ 4©uWÈCÖ±èñUã¢VKXhª7£&7“ÛQH“ÃÐè}ôµfñ§TœT) ÜU‡ÂÎ/xɘڗá=ý$w"³”éN¡sF¢Ày×NGÎ­à˜® ,mæoÚ«aá—Š’e[F«‘o 5qc±ƒ{^ç½1Rx†b˜ÀYF¶GþõƒÃ‹ŸòÔ^q×µlù‚¿"k'‡+Œ™K¾cô½èåýSø×9Õ‚£¶òÛAjZq)Keyl:Òp8”|…›,€dCÖü¿Z»áÙF¹”m“QzÔì*Èrék“µ N¬jÁ…ïr~Êh ›G¸£ï¹îv¨+M"Ž´"ŠÒç„L&Î=-×µ<Ú× a¥ùÔef:²9V¸#{ГW8¢fŒL7Výª‹ çzn TK°Èi_áY¾é¡aågÊ;\QÆÁ#šFô¤džõG¶HÕ”ù¼qjÏ–&ã‚Ì'Ã7rh¦Sã²ñc/Š–!•;žfº23¿Z‚u°ÿÅ ë—Fmw©'Ú»upÞ¤*j9TÓÐÓdBö¹(êNÔi€ÚM®"Ðwcü Rcû»‚ c»nMH$ê~@Ѓzš‰qR,w²¨Þ„U.æÊ9Õ<^ ÌÖÈ6[ƒ‰“Æ”¹ !’Íu6£5ŠÃe_̵g +Ã,em¬NMÆõ]VîjI·½LrÄb‚jEºD©~<\ëVCÛQOP^6Wd b1àÛÚµ9 ilÚéqaD—¤añ€Œ³ëý|þud¨ÜZÄhF—­³\·CcM9Ôå=Ê‚i,rÛ˜©Wa©SPÃs±&à"[7¤|Í¿6?AJt’Hñ=ê bÖŽu, Ë7%A5#z³Ð-·ÕÊ„m\ ×ޔ⤛–¨(Û*o­Ô ÉéRr¨UµŠs;*)±µø¨ fMe‘wQ SПڳ±É4…ÝÒçR@ùÜUn&ÎB@+fb¦ôŒwˆŒ²êsZƒ„C|3³´…XùG§ô§Ë‡qåò‘ª¶¤SìJ‹Ž!rËͽk§åVpç4!…òErDÂ-æ,u¦@¹pÊ£“5½¯TÔáDë‚Ñ(&öÐmzÒH[ ÔŽÀžûWQÈ_©ÔÔîieÚþþÕ×ûÄ]Žbl{ïGk (^ædQºÜµ¹*H¨"'õÊ ¡ä~¢¤ é8ìIE1+çC®Õenm}ë9"•fð;nGZÍÿ†²áT5îMÍ눣¬­e¸na†Õ:Þ¢Vì@°¶æ“‰Âý¤ñSMFŽ:´ÂÀ 2¶a}N´bbH µî§@ÀZýMD^=­}9)5¾X“r梤;M—¸~•ŸÁÖ<à Ï(¿"H¦añóÅåsâ%­•kÈ$-{†ÆßZÌâð*–4 1³†³eÃ.®¯Èž—»P0¤ð–' $Ô÷6§ÞÙ¤¾Ž¿3BæôÆÔîiF£ Çé‚=ØVs\è5&®qw±HGÂ.Þæ©b§L+Êë÷Km»×>W¶¢¯›Â…ph×kÞPç£ÃDb–”]£!»’ g`•çÆx²áNvï[\1•ñùßQ-oÄüÏËjç;ºjÓÈq9²ˆÆîçaRÌ,E” ҂圹çµA5×Fµ…Íp:w&€ê@<µ5 Õ« ¦ô»ÔƒV¬0›Ð\ÇÈmH66ó>¦£O„bcw‰:ï~t1œÄ[JY¦æö þ‘Τ`4Y•¼†Ê?:¶·6\ž•K?‹-—оšmÄ|­á9ò6ÝUÓ™.\71Ò­Å[2Ü0úÑ ZÕS )š1ó ¶§qV†€]°CµM©c²‹Ô V9˜aì¢á˜Ú l žîäßµ¶B¨á§–/*ê§á;Vƒ`vÓP)šàju 7µ¯­…¯¹¤ Ó¬³[ÊoÎOsDF›Ÿ­11ñ ÐIáέ«²¡¾¶= ]À`ŠÉˆ\‰½¹µ\̹\“ÖúÛÚŠ$4nÁš3kõ¨œaÑF×” (r§ ([[kF+qšHÕ‹‘`5=«‘m‹XÚöé}iŒ· §buî¿ëjæu¤ãÈzÚ¤ :W8òÛ®‚Œz’Þˆ T×TœÄ*–;(¹¨Ae×ÔucÔÔMþKÜ\e5&àÛ¦õ$Ôj½ê&¤ã½q-Èþu9M.PÒDR;ws·°ëRUâR£2„7e݇éD˜ÔÊ£çnt©0S/¤ðÔpôæøA65Ïn•µgqu€Ë;Øš 阤Ÿvß…¹ÓŽ¦æ¹€kfEkmqµiE¦Ÿ‘©)ngò©xãe9£]·ÄPÄÙàFÎ=>kšR ëê4¹!W†D7bÊH¿Zj²5ÂH¬Wp*P ã¾”? 9qL¦Þd#^µfàɦ¨ÈL8›‹‚qz¾¹XgŒÝH½ëœ4R˜„F‘ý+¯¿js‹Öoœ;xièSõïE¹!OŒÌúÜ–>ÃZÁâ‰1x²ç[›(è9 ÛðÆÀ©•R‹‡MƒfÄL— mäOZãÊ[‚¡ÃDª±ƒ$–ëÈU¾ I>—)[ß¾¿T)Š6õJs°ç”mùÕ®$-:DãÄÊ ·%7Úž>ª²ÀP#Þ„ï@h ± ž6:8ÖÔc#,¨IØf­‹‹é{š‘ô¢de*mÖ£B*(kR§­D¦(UZ\Þm”oE±Ïq`G#Π‘nõÄ56íSµHÚ´Tˆˆ]Yü‹îi®næÛ@ÆNª…€¿;ïC#¬Qø¯AÖ¤_—"x*um[øª`šçfw.Æä›“R9VkC§•:Q ë)P°`×µÀ¦Øt¨u¸"ûÓˆïù!=Ƶ$¬ V³J ɬ×\LKHŒÛw«˜Nç•rjZß*ëõç½MêNQ”E^µ"º».›Ÿ­!1¹ICÇ:Ò„‰"Κ‹íÌVQ66:S ‘ÑËFÄZ™UKT¡ÇËk›óIq’b½ÅAÄË#XÐåVµœXÂa…¼V rn¨>—§±%žÇÚ³VydFW‘‰‰²“×¥@×[Ñ,XÔúSÿP®`AÚ³6 ä´7„íOébúÓÔ¸Ø:]›ò¦.Õ  Þ iÄÔ.Æ1qò¢]ª ±â3_p,¾Õ¤± RI°“GšÅHaÔN%KaÊßBË­HÃÆe,šßF¥‘æ.÷C¦Àö¾ÿïµE¶Úõç]¦öÞŠ”CfÔžôCz4JtÖ¤šê는éT²^UÀ±hõÿX¡,zÔfÖ„˜û ¨³ ylÝö_′1ß-ë³nß.Õ!›­ßµ¬¿ïÞô.æþ`-Öõ×½ yÆP}ÏJ’o­¨ûDrX\ÝO}(ÀXr¨'þ*4褚ªuª@£ËPÂÆ¤\ÈÍU`¹´$ô¤Ç‡…7\ç«mV Ò‹ ^ICĪ ¬Ë{\Q3 Àt'kÚÇæ*I¨` •aph*|Ofc4cÍo2ÛSY*óá¥%KFÛÒ·F`Æ'`@CmûRx”i6Ý–ïºØzJÇ.;Ü2¨ËŽW‡Á¸IØuÜ58*lEˆåYø©åi ³_—*½‡‚Yó)ÈÝúW×é¼Áa 2½ÎŠ75|¹À »e#JåŒCŒo»w4'zÞc,ßñÏ:⢔EP§¨ö¦p"‚9¡Œ¡os»ïW'ÆÂË ®JÝ}ÅeðyD8ÐiC¯ZÅ’rÓñ¢HÊT‹©ÐŠPƒ ?äŸûÍ6E*ÅHµB °kUˆû˜ °³&RR×1˜r.Êêz A¡Å»Ï)Ú)ש4qa"Dûà] lïIYÙñx¿(¶m…öÙ`l2‰’KØØéj`ÃEqá3ÆÀèw®ÇDÞ_~‹` £>£¡”M“.S{›Ú¨à8¦3aV67RÆÄšbñ4Ìsa}D±½3”þ¬ZšË‡3’W ƒûULd­$×ak§J©ãM‰O j®ªçÕß^t/ÅÉÃÖj§¸¬ÞpÉV*AåIÀq‰Ä$2á£Í‹.–ùSòŸ¢‚Mí¥2ËâѨ§Áƒ3[úV­EvˆõÓ8QhŒÂàm¹«†öL¦ÄètÛ¥gb¢Åb/á6t"éo•6bÕì<±Jó ¡KÇÛÚ¨ÆÍ˜©Ü³âiÅ•¢m\U]GæK“ÖŠ Å¨Zšˆ´µíR7¶• hYذØ)de››×È ˆƒ©óoÒŒj47¥®Ã©¢EÏm¤u=C .{… ©'¥p`àJÄ©"È¿„u÷5'"øQå$f&ì{×f<‡Ö¬C„wPÆÈ§›niÉ„F¥˜ý)ʵHøOʹX³E´«²aRÄÆÄÈÕ-Lš‚2èoV%®)V1›oz½ºëXùØ?lw­¥±€Ð€E«\E1ͪ¹—.=¦±+š×·*µ¨w¡‰ŠÀ—PW(þõ°1";ª#¿˜ö_ÖŒkóª9¾Ï‹ÎÁ{ÕÖ`  )”%Zê=¨®m½-v·M(¤&ˆjЖµHLE 4,ÿ* ãk­pË÷®,)šÃZäì>´iÁÊÍu­êskK]ú“ΈT†O—µõ4Ô.Ü­BŠXX Þ€,ÚÅ×b߆™§ ‰s»rX$`,ž¹?Jˆ°Œ‹æ8½ì÷¦Æ|»›Šd»Úï¾Ôgj\„ <ÇK\U@I¸¸Ð3]ŠÚß:ée¹²}kˆ ,>fƒA#…[Ô»YIéUîÎ÷5›In¤X‹ß¡ªxì@f@›/«ß[S÷ƒÞ²± |dëq–ù”t¾õžW£Üjö[#¯qEþ!áÈ~í,:[^Ÿ¸|"@uôúVV Z a•J³ºò½p³9kŠ`D‡6ô£½UÁãŠr·ÑŽëWH AØŽuÓuƒ•ƒUŰl’6"x˜ßO„Ö‹)Er»sÞüè³T¬ü9rˆ±7*6~b­#ÀÖ)‰Œß]Mˆ¨Äa0³ú”ÄÝPh~UVNo÷XˆÛ³yhÿ(W×Ì Y¢·6 )b°HNiËÉSQ~‹R ‹2ßR¦õWx–Pa~ïáŨ¼¬ø¤]ÄqW#&1#VݾµQÝ„¹çİÌKu4˜±,Ii𑌻å&ÿAT1ÕØ“­¬bìÍÖÜ©2œÅpèAg Ém@묅“eq”v©J˜¹ÒF*¾]Ù†ÿ*Yfsv7¥ ÁXhB¤P×|'Ú¤3øyžBÐØh(—j`¢çPEÏzê•>`§Òª²â $³¬v9ÄÕ¡‡Ã¤Å”!åÉj¼}}¨%cb¹hð³O‰>u@£˜µ3ªªËH¤Ü±×™ĹZQVg MÀüª|!š÷°éK&Õ|r‚L€m¯zphüêUA>}o¡ªLñzÒám› Â÷(tö¬é0옖A|¼µµéØÐâu+ ¸õZ­PÅA=Åc-ÐÛñÜ}ZP|­k_SE$; ÅIìEtd®'Ò6Roªüêç(Ü ùP ³H÷Ž=&4Nu&¤m\€ê’X–½ÉûPµíëo­@>QÜWlO¨ÞÕ$‚ºõ hH ¥uê*T\Ú„%7ÌJá€Eå"ö; êk•Ô“ï <°ùÖ\ÎÏ3³³1,zš­È¢Ëbñ2‹>%²þ×-è°¸‰b#Ãb7·Z«YÁFecQ«QÞšÝ'îúƒjM/}N¦œ@Øl…:mÒ»°[ùT›l/KhÁõjzÓ$èNAÓZ*!¢PAQ¨ë@ù·æ¥=f˜S‚}vöÓÒ˜ÖiFbý+7Š/ƒ/Žo¸Ry2šÐªÜMZTx%Ò×$u¬_ P“F mC<)ŒŒ$¡ƒ)òÈ£QïDâdC,3‹U'N"äÜHGôŸâ¹ÖˆÄFŠâbñPh$ýiø>'p³º±a|¿:”ÁâÚ/¾%Tò`I4±Ã°ï D'˜‘Š[õ¬÷<=5°Æ)0ªÑâRK^æúלäOû«Ïbpøœ ™Öè/£+ÜÊŠ>-6Ø€³/2VÍõ§÷>Œn¿‡køÑéýT™$…uiGý:Õ($Ãb…°ò{_Ã}?:”©³ MåÒŦņè®Ç¾‚‚n!$©á•Ê„XŒÄþµPÔV?T†L4¤ýÖ:êÎJÚ—4Ô\Êé2 ö Ž÷§W+`TØÑë5"„Èdà „ÑDžÝ VÄÇ—cAìÖ¶q‹•ŸWè+Qpøh᪋ @ÕM†­yÜ&à .$XU9Ÿz¾³ÄŒ©;dYÐYÀØ‚wúÐcðÒáæ´‡0mCþ*V+ø˜bX™<€ß3XÑç‹Ö¦ æp弋f ºÞ®f;*‡v¿›(/ÌÖ? 3Yô†™«£J„‘…¹e “ì+¬J0³ÚÛÜT [“(î×¹¹7üéÙïå…5äòXÔHÙfÃN[ƒ@·°¥KqqJÀ}¨·— »uaz¿Ãš5•DS0½Žßù¨áêÎÅßÒ¼†—5fx£œZT¹ê45©/¢ÐÊ«ˆ!3^4ÕÏâ=è2l¸!H ²¯]f:aΖQ£çDHÖ©8TªÜô\ž‚ˆ!"öÓ©ªÜG‘Daƒ;‹1Ò)êz™â9Þ\Do ª:Z‘ñrá¥õ–Fõ¯:,YÏ… c÷l×Jª¾«t®6÷­ãÙBâX‹·íÊ¢dÂc&Ú‚ f‡±6€å±VäyÖ©ìnƽìa+eWE]«˜Þ¢º”êḮ®©=Ú¡ˆ¢C–ç‘Þ–\ocn´j5ê/C{í­p¡s@\ʹ"F*M™ùZ‹B¬¤0"¦Ž"ÈÛ`½êIÇbW U>r,‹Ðu¬äkëIžWšc#›“MHäE ÈÀu"±úÚÖa©½np|?ˆãïn°á¶q}¯­zSê,-ô®œ'lò0* JT‘]Y)Åúi¬)l9QQGz\ƒ©ÜŠ)߉¤<¶÷¬¤¼Ø‘œÌuµc•1y×KÝmþ¡I%NÇ7úÿ=¨ÊF†é-¹Ú…‰;’h !ïêŽÞfþ(H±7yÜûQ1 cY¨³5ü"O;µB¼qéäöÔ± &‚#;oâ=ýÍ’[¾ùN?*ò·µEÊê!Š6^a–©q ž&üHÜw«zÛ­@$‹‚:Qd©„Ë$2¶¸"´p‰ƒ+d]—ÖßJ³‰†@4vañ-ªrðÛ11b<ƒ ~uÏóeka͆Ã)³@àŽ®iX˜p‘.b_a{Ôˆø¼c,rô°kPË>5|˜Œ}9-¿Jzþa£ÂKa»Ý­Nc°ÆºÚàkUcâD26–þ  ¨ÏÁ^ù'úж!Ä 3ÎE™Øý iRŠÌÀ I ì&cä“+ê·alÝ;^ªbø”…Z(¢ƒ¡ëFȅƦ‚@‡1ŒœÍËÚ©(¡Z5:W=ÞÚÄ“jäb®MˆØ×ŽuDÝÃMöœLOœy_ß­šÎฅŽF†V´r úF´Š•kíÆìf¥ŸÃ…忣OzΓs©5wÿíò©k?R¶Þ®J,FªPëš1ÿýñúÑ1,×cDáËùÅKZÕ9hAå¥M;š ½h‚Ó‹B¢ŠÔ@WH^Á®\*Ûâ$Ó:Økm/Ö‡sa²Þåݨå UÜ쿹­²«„\D¥›ÆePu7çV‚¸øŒ«Îú0þh ‡Â„%îI»{ѪڙS{n-b=èq2džŒ3‚ÌÞ•`ÚáÈÛF=ðj—ShM´Î«ÔJ8¼D³¹,H^J6Vk†‘¦¶ô2ŒÉ¦à×+Ûc+š9|Èl+21jÖä„$™¯3jÍ™2Lëш¬ò‰w€7ßÉþâ~cQ[8,F‚)-o„ô¯=äð±ÑIm˜VÌÊÊŽFºp½ Ò æ¢³âšXý@éNÙó"7ÊÕÓõŪƒµWÝu…~D×bi÷G¿š­‹ }è )ñ„è°¯ÔšSã¤Aí–‡È;ýjB­öªŸl—ñ¯ÐQ.2Aº£j6,[cF‘´T÷¬ŒL­,Í-¯}Ðs»Öšb ‘9(u±éY“Äb­î§ÒzÖy±ÂpË,¦VóFšûž•«Ÿ0*à2Ÿ„íY<;ÐÈÀeË&àìOzÕK2_IüJ×QÇAàJ ÿ–ú¯nÕ±€˜OƒG¾ª2µRÇ(lßá!…ø~R'xNηâµ:¢øØµ±¦ƒ¥WúÓ´®¬é/½0›Ð¶ºT•ñh¤hYZQE@B"¨ì*Ì€˜Ø íqß-À:Ž¢±aUij[iVu¤È¤Vi%¨Ja·„[hhÎõ *2€ïC¥èˆÒ„ÔPhk‰¨½“BÛWr¨k,̪£™4 /µHiYdp;5Fh÷Ð{Ñ2;uJ“¼W}ÔÚ“$xi.$ÃGîƒ)£aÎ…¨¦ØL#(YüÁùP® uRòÊ>Úý4ëPʤ}ã ïÖ³™H…¡…#åé¹£Î$eŽ7 Ú—#&úó÷©C­†õ §Åp‰Y¡-á¹7á=*­N5*Ç…`À»6gåYC87¾«Ÿ94Ã-¥ZÃq LJ0tÁ\\ ¦Ì.2Þã­:_)¢t½kÅŠ‡‡’0ž…}7ÐûUXãfl€kúR8ya‰‰Ô¸ÖµñP ™Öìª|è>=4Ý«¤ÿ(<^l­ä‘§zTØ |еÿ¤ïVˆ-–Æäw©·=/]q†k##e`AƒQjÒXüès[F¶ÕŸ0hÉR<ÃKVlj"¤ ËÞç_z`d)Ìu£Z‘˜gh˜2›f`¿ïåZ>hÅÁ×76îk2Ç8geô 7ש«X ôð¤:|$ò­q¢¬€Hé]bZ;[C][#]T‹F")愸ê×±'¥?(ÞÕ êšíEL KGøiIˆþ+”‡…d‹èGB+_ˆašqâÁþgÄ/¿qTW+LÆG‹Û˜þGé\ï­JÒ†!Q´Eˆë­`q¨ÀÅxª4p ÷µz S*àÎ]²„QYük ÂK‚dŒå'­ôþ)ç6Ä­Õ£â@¸¬G_.pAøO1Z| “؆M>•Ž>ãUaEȤ©Ë} ºÐHÅ0îãp,>u!(ã‘ÓlßÔ l:¹´,2±*E­aÊõ6×Z Çv(6ÐS lÙBëïC2†“1¿—kTAI´l ·ÔWeéJÁá¤È%IBéÞ¬Dþ `Ë–Dõ/ïDÿ¨ u$,EÅ•ZQgf Ì-¨Ñà±ráŸ,we¸Ï|^Ý 24RMÅ\ž>.!)[›//z¤þ-Qâ`>XcŒ'ïê×6)gCxÐ^ÿµJpœ7ÚÍ;_.ç­\Š5‰m—Ô’=^âµ%Ý¢çÅ…$S¸¤#f!m•íéëÜu£ c©µt`Êë× V›ÑJÈñmˆ;Õn%›ëBâÞeæTsöïA‡ÄG0°ò·á<èókVê)€oMÈ;HÚù—çV%º,jHøÐ~¢¡ÊHe;΋ T‘-µ-”òµZu”ÉX°«2‘È|æÒjÃ-¨mYJ¹íBåm½±•k[Jà¶4C°j¸¸ÐQÊ—:iKTe;ÜVjIÛ_Þ†P¢vr éqDv®Ð‚­ª°± È[5œfÁÖ€øj§×ñD—Ïྫྷ¢êߌT®Œ—+$©ž2HæÚ„­tQÄM—Eu  õ$tcB'+@ꈀ·…Å1b`åT4’6ïÌûv© <²Pî Tã͇…0¸|YYsEÍ®ÒÔ‘ˆ–óºÆ½ÍïUfâI× ¤›zß—µPˆ±ò¬ÌãðÌtocÊ­á8x•“4¬K{Vvß ²æ‘¯bÎN¼Í^ÃpÉ™3JË#LÚ“ò«øhâÃŒ˜h€nnÚ·ö®yaV9å$Ê®k|éœ'Ѫ‘ð`äŒKÈuª3ŽF¬r’/Ö·ðÍQˆ xÒìIÚ±xÒ±Ö×Þž\dñJw„Ë }ùž· Œ©Õ¤×µ©8\2á0‹õ¶²iùUÄù”‹‘bféìk|xäÆmB’T>f%›µÿØ©“Ï–UR£ôµ6´ t¨&!¶aén††õ Ò™ì ±qROüK‚¶úÕ® ƒÃ8ƒ²8ëXñNÿk8†BU®šZ±zj.Š5¡L®™£`ËúQŽ”¦† o<¬FuwÚÎÌr‡cZL<Úlu¹Y©¨"¤m\iE•*n¿Oâ¦åÓ)sfØô=hˆ e Ý4=:Ô•ãIeÄ*J¾UbI¶úÔˆÔ¶9GÂö=ªÌW¸®Æ(|ˆËq¡¬çI‚øIdí 9Çޠݺ0ïV°‘x5Œ›³œçö¦f!]-¥«¬)ºÿ¤ÿ³X“׌ŒlZý*£bLp ÜÛ*‘ïVtÌ ÚÕ.°¼ªÍb9Õ@—;F¬ÁAeÞ ‚9¯½¨ÿ.T©N ÷5(]hÂÆ‚ú×Jæ8ÆãAÚõ'F-‡AÌ\~t«ø«ˆŒÝyר¦@ðñ%-§Zµ†Â(#Æ$–Ó(6µêÍJnA”ÝX\PÕü:áž ‚8ƒGqf<¯JÄÇ"ðÈ¥¿ÖœZ«MÃÊb{î§B:Òµ‚,jw4œFñ©àìhïT¸{³FPI$Ò­ŠÜ¬˜2ºåqqùŽâ—,²Å IÉ’6Õ_˜÷¢Zb>Srt:P£(+æõ؈×õ ìj¾,ø ³Är‚l@ôšn_KeÊ˽¹Š·å H®ÒOUô«âV[.#ÊÇfø[çÖ•,F,@ÄGr·ó-ïjk2cb×çT˜…ra·QIälË¢ÈlG,ÝjV$VÌ…“ý&Ô¼DMLÒ_•õ]Cô/B _P6Ù»Ô’ ß­Þ…Þ…¨Aa¥%Æ´æ4¦5”L‚–iÎ9RØkS@aBE¡¬¢çBñfSi"ÕOíR¹ee]/½¹5Ñ®9RžRc&@† EÓ˜¬9 œÊA×c{20¾yÔçô¨X.6éB,)ÕOño'ÊcþÕ|íJâ1x¼=ö͘Üè³¥¬þ ËŽQ ¸›V³¿Š2ÉéømðûVg6Ç‚ ý*ú™]ÈcȆş™£‡ŠVvg™Z?éõ7cMWÓ.UÉøm¥ ©c”€¯¾Pn¸5Úƒb-[q)FØTVšàò*u¥ÿ‡â ˆi˜]bó<©œcÌrXéòºŸâŸÿ%¿÷GéGÿGâð9ï~t؈驤GGˆ|˜)›c–À÷5¶¥@TÊŠ’š.¹`a`zÔ…z‘@ è…IÓXàæV:eÿJ¢€ÅFÊ/Þ®bÎ\ÿ‰’Ê;Õ$Ĭ̪Ê,à›Z«é‰Ê«‹–Ê^ù€ØÓNô™Ñæd1°DMœóîˆC…”z„‹±÷¢+O Ù°ÈÚmcY{Å_áÌ—š›Ö¸ú)ä×Q][®5º¤’3DëÕH©"º/Xt©2i‹¨÷M½÷¨˜e‘—¡" ¸Fˆ§ç\˘é`7®ô‹W5Õ…Å·¡&õ$1®Ð+3*‹š“PPÀ_ø¨‚ᕲ¡`yçWpøLè|mü6ÔÐC…„UT!ò[O•[ÃÈï%[<|úŠdþ‹] qa€H—,o±&å[ß½¥®F Ô’,AqÖ¢Ä(U?ßN—Þ¶¸ørb,·!ÅÅY°Ò«²#QqWÒ9<VK€B*ëj1{e6 îÕœ:ËÅâÄñ92 ù ê"xåÆNaº°ÔSø¸\,°ÏÝBÊ«zÍw“އR­n©¬[”ÅüÄ©à›iW£ñ3›ÜõGY]ZPb hù|«QǘA[èEoˆ¡º¥¶àŠŠåõzÐ(,¥pË¡½Øµ31®XÃ+É5S 7‡q)#5Á5pØèuö4Oêr Žÿ­‰ ÃúäþÔnÇ3• tf¥ù@ ÝШXÐÈY˜*}c÷ÎlÁØõ©!½T'zæ:{б6ÓqYN4-D5P½ÇzÚˆï@ô š¢¡jš GBEÕÄ¥IÐW Ý…  ÔTIÖÖ©bFëô£X™—5¬¶õH¥`Õ†X°’»‘æRª3JÄb Ã|BWäéõª8©çÅ8o¯•@Ò³yaÁðxÙñzrF¹é¥h™!dµŠÉ¯{íC€ápÅZÞ$ž¡ÐSˆb3¢æ`,Ëø‡ò)ã2+CåeÈâë˜ö©€;"cšHšÚnE(ʉælàwKRɉDZRcÎnH; µbß* EvÊêI#ªÚÆÿ-~U_N#™°ò$š{Un ‰ƒÎy³Mcq¼F' Å¥‚YbCtåÊŽ]v§ñ¼dËpšüÆÔgXÕ\–V{›t_Ú«®5%Ž'’6f–0À‚/Ó_¥XRàuÈXeU棽t–VRº ëÛm¹ŠYk0ˆ©'CR×ڊáS3›/z«,¢0ÚìF‹üÕwšIH2F€ €£b晥’ãE”$†>uV=Å,+ѤE®u Æ0O~¢ÞôW€æjŸÄ#H°©9WŸ"j·¥`røhÝÉš»Â[ï™ õ.ÝMdð·òÚôØ!ieeE²ß§3û}*“bçÑDJ´ jÙáÑxXQ«Kõ§tQ€ª¡YWjí r/ÖÆ¤‚7PI¦+ {‘]ŽÔ5&Ö$›.OJ£‰âE^Ð"e “E²%Ú᩵Váøß´J!•P3zYEµéj²(.M‚‚oT²¥4|DAKXõ“kb4Ü€Y¹š”9™ËZÅIkí@¯âC‚Ç2ënÚV>ëFC¤«î+FB°â€Õc’àô¨`T>25apZ¯âTɇqñ0Òµ<l6<«…µc²‹š§.a•V;V曊´*Å•º µ½éÐðÆ`f•Ê—$j¶>[‚Ê5¾õÎA I_je”³Qo/:±Ä‹)›ëA‰·¨is­DLrÛ) s!^Æ„¹Ñv8Ø’Eí}h&Wb­ZDг•T‚hI¥}­ *ð°kì¦Ä‡ñ8îÈ@C$‹µÁRÿÍ RvÖ…ñtÿ˜XŽ@h~uJXñÆa¦m@QU§¤²0V³l£z#6B¥ ôÜÜ7Ϋ TXXŽp^VåÖ¹8„3Dé$E4&àÜ Î¬<‹ƒA ¡€Ikè““ 6 î;kI€;(¹ªØ|SɉÉ'¡Í€ü5eò´N¤Ø2‘~•™.xN„P:Vyi QÜár.E©1ã"hÃJÍœ  é°I,ªcŽ8ú¶¥©Ð |Ç „VP »X_[ É–Y$¾w-}îk[‰+¾“‡²8µ¤ëÞ²d1‰r+BÍ鹺Ÿsçé…¬-,bBIå[8,2ac<¼Ø½©|3I4Ì[(íO{G:xÌíTõ:šŸjåQmEû×Y»VÀ–G>]ZÜ›QUçˆA—(k­ÎE>0Uî ï¿óTJH¸À¤30mºÑL_XJÍ–÷ MÏ@+ƒã걂~U£Åx¶ ð¥ä‘¿ÌaÚªáchâ&b'Ô êŠk<²ô¢þ«cÎP2¤d.õdXïTxAÿ‰oþ6ý*à5®> 35ÎÃnô^UFvU·SE© u?­Vâ2Â% …ÞÜÍ7¤D®Ò9f7&¸T + M©€ÒAµNjt`±˜…”]ÜYGïT ‰’uA 7#AWÜùækù®2õ m(’F ”±ï­jÐˆÊ EM·n´ðu  D n¬'Ã]9[qZ b¹”ÝzÖ:Ó`•â7F#µjQEÓÛô¢ŠFš?‘¿#N"ÞÕ¸EèH¢]ªmz@-}ªt"³q1¥+Ë‘ëZ…t ‘DË ¸åÔVlÓ+/™íR…¯eÔš¸Ø8€¸w½ôÒQEè]ÞÍ:§ˆ…Ò‘õ`yü4Ì,N"%Ý•[e×§Ìd¾#˜ŽÂ†G$÷«[D–EùÞ—2}¥d’\Áu¿:,Ú\š%4¢ø«•ÀÌkV9Ú¶±éâàFéçŒký18BËŠ”Ckkˆœ°Ía¹ËùÖb#q[xáŸÄnª×¾úkùÕÇʯ¬²…à–0EÙ ¿_Ú‡™pqÌèiÑ0RXè¡MÉå¥ 7ʶ±¾Uxq¶6"ÖßzÒ¾SsËzÉC–E'‘¹­Ic›“kZâ*£Û Y9 fÕa±¤lC†&öQÎô´Í‘ªõE-sm~txšX\ßd6úÛÚŠæö¿~T3’$²µ”íØW (°ùÖ‚Xfõ}´© aCš¤ÔœçcÐа7½I`|£s¥°›{Ô€Y¯}ëm~µØ3\sQRY:ŽçaIŸ…E9ÞM´û²/ó¡*qÕfS¸“`9d¸”Š Ëæ-‰¿•,9𫉯™/¦DåfÔüë7*Çá3*ÈÖ*Zÿ:çygHc©™Ë¤‰+ò›Ðº´xi‹©“(¸µÉ£É ‘ C”ر½ÍA*º¬D±r[ézËHáâL<'pP›Ü¥ö5wÃÄaãñ•¬/kuª1¼m:››üéÿáéÆ0 <Íæˆ]n}B©üxÙ‘X‹PHéBžG"ã^´Ùƒf=)lõ®^|(|u”R¡›µX6°UU( H ÍÚ6¿È‹~õÎËFilôƒñ'I[Œ¸ ¿šC˜ŽÕ›,&`˜{úHwb==¯&'™ÛÌÆÞÕ«S1¾wveSùò®íO‚ #ˆ&—>fµu¯DA-s©4J-ï]pÆ÷Ó¥V®©!$ '¥Tãs[ ë†e3ÆŸxÚôÕg+A,š4’ý«7!B3чQ¿ìγÊü0ðÞÅÅ}§¶Fo('W5´ñE3ù°ër~ ·ˆ®1…=*ªl½«¦Lc¾Q*ˆÎì¢ÂŽ3ó3º­ø Ž'Ï`jãjÇ.×Ò—4Ʊ1‰áb^?ÂH­hÉ>äÚ²øÃ+qŠ›ŒÔrðñõ^õsÄ qx2 tØj*Í4æÑ¥ÇS°¬KgUœÐ³ËäËbÊúf'a~•Ìe!Ô‹ës·‰p·‘QÄÑ™2ee#G¶Âü©8aÄp©gÂFÑtÞþ×§nö«ü>lñø-k¯£¿jÎ…ÙËáߣ©µ“ „Œ†ü€{~¶­JšÀØ‚7–øl36l¬·7!N‡ø¤GİòXcÔ‡ó{Zí˜[^ííc¥«[Êsª“ÓKoQ˸¥.&½–@ì6¡—Y¼L÷Ü.õlG %"³ÆâèI︣’ha‹Ä•ìʦ­F±_Ÿj‹€oÏ©¬é¸«æû˜£Uþ¡rk“Š=‰oÒÞ_ÒÔ9W¥b¯˜;ŠW†ÈI¹¹o¸ªç‰†[}•ýf“ŠžLQPª£Òžô^Sâ’ª…,@ÜUœâä° wæ{÷¨ÂDÏ2øVw¾ƒ[ÜíZÏŽ4‰â5Üó5ž' )Sð°:cZ Ú˜Ëöœ¸c©ÊZ=y÷ùQxO‹AÃq_kôRÿ›Ý[› vjÄÁNpø””|'^â·J«Â³Å¬mÿ×±«Ø«£SK]ïD4­£•Æ\¬.╉†I-áÈΣáfÔ{W^¤†¡ƒÁ&L>R€È¾¡³TO†`3ÂìÖÔƒ¸¢F%û`Fõo æ%ÔtçZ“Uèù³OæEи­eee̬b³ç„6("yU…û 8âžÍ 09ü«|v3Wtµ ʪù ‹~ãj×PÀ~Gq]˜,·6@cÈŽGÞµ ¬v x^J­›r¼©"Ī`‘³g¸©âQ¢e½Ç*>ˆ"ñH³[^UŸ¥j&I#1¨éIo¨“FÞo2Ù\lmo‘íIÆI)O !eoˆ@©¡1€#z#ùò¤áoà¥ò\÷ó¦¡ ÄÑЈ£i¾–¬)3–;“zÖârx|9¶¼‡'ïUøT(°ý¡Ôce¿*Ï.î5:€Á`LŠ$•²-ô[jkDeT‹•–ÎI¹5é tÀÖÚß1C*‰.ÊÅ$üCŸ½m*TçR<“F;9OÈŠW…‡ü3þæ®»#¦W‡nUVH˜\ ,?1E‡I8llÂ/×Å4f4‘âº_kب Û4%» :!o´aX0$±»‚âȾ¡"p=EFSUÄÄÇá½™:pËŸ÷‹ÓSg‡ÿVñsÁ‚hÙdÌšªluµgÏ;ÊåÜÝHVUUpT2²j9ÜûÕv$–£•ªA†¢¥)N´kY&ùÕ„Œ¼‚0¹²m£6äž¶¤D`[Ò5>ի£)„‰Wï$bÉq¨oŒÑjÔááƒæ·œŽ½*CKÑ Öº0âJ¡¦i}ê(Ô‘ò«zT¦ .*J‘R!…‹ï!x™erµ;ŠŸ ÷ŠL¹¾±­,F ‹œÍ/‹ŸQ@c×Z˜°¼> °4¬ªVÓéXœl§J‹‹!°›„üE –ÔôÆð÷[ø²Æz2fý*Z<$‚σŒ\ïÔÔEÁàÄK›#(åo`ksô‰#˜†ee=t5m0øD^Yß«›‹†hŸ,‘am¤Ó¹ð6†3ʳ%pÇàÕ …¤²ó"²àÃK*fXäa{yV¬7 ’XŒRȉsqæÔ{ŠÖòùE¨1ð)- ’ò ß §GÀ·üæºUÃŒ‘®|B)_!°:Ú£ÿM`r¦"3a¾¢õKÉdl¡Y4R,ƒª›×_u"àî bœ6#ž?1æckýiñLDDG‰„2혋­?¯èƉ†®C§õiSž5\ª©b°ø–Ȳ€À^ͧçOXÙEÕ.:iŸñ ãE5!Ÿ6kÛçKÏjŒ÷«@ÚEŠG2B66µ¨#™{tÍéͳQ&vô‚~W¥bäH”´î;(:ß•E_üD÷X ÚÃ1÷4Ü<€``XäåïYSb¦“D«HA*ù´·ZÒ –EóÍÞ³.ÛNtfuüUÖú0¥ÝMíj|ÖêXÍjçc”ØÚ–I¨kå4£°éP\‚Þ–­qS˜Ü^¤™`Ž19¨ØûÕ‚«ãÕï «¡ —Þ³L•¦] +~T‚Ä› ½·5bE™@ÒûR›Ê¤¨PzŠŠ0  .{а\*:+tùÔûkPÛ[­E%Ë¢ÖçakÐâ#Y¡³å³\^¤ÚÝ…B’X7©& ±´ž$–QÌ Pœ[ö3M†‹õ«\RlÏ௥7#™ªe¬kÍèÀçb}cþ‘@Ì´ÜoDÀ6»D è¡i±H¤‹1³IóO<©•¤%¤S qS®—ùÓ¨º(—Sc¡¢ Nœê@µZ$ ”’±Ôs£ÊJ‚–ùÔ‹©¦éP¬A©‡O ©ñ7™¿j¥„ˆI‰DØ­h°»“Êõ¾0ZåwË–÷£ó¨l„Ý¡ˆ‘Ì­Hö®"õ¦P]í`ăJSz2-BÕ>! šŽÍÒ–Xç531¢%³<‚×í­t¦òhB F ÚÅcë³ê¤]š­N— ”ÜÁõŒØ•%pSÄo…Çm%i­s³P¹ÁÔ‚(é%_Œ¯4›ØƒK›ÄѲ´EOhé×¢YdQe‘€è¬ÿ©I¦âsè|s}¼¤RŽÎA…ï̚ђWo)vosµC=—V6~gôê´x'EGÐ$5¼Ç)ßmªÖ!F.Öò÷©bQ}‘±¨ˆä/bFPé~]E3'9 ¯{”R ɽj‚×9A÷©zëÒU›5Ðu£,߇éV¬ìoõ®¿*X%´ Ú‰J3eYU˜| ëV¡#Ü^ôyÍ'U;{Š•kŠuÆãCIÅaÒb]<¯Ó‘¢&Âõˆ;’ƒ­”‚äkó\hjôê³€Y†ÍT¥VŽB®ºŽ‡zÅ.à±lI.ÃaÔUÜ_±!L¬º†ÓŸzŌى×Z¹†ã|ÈÖc¡¾¡»æ™ÈX¹.'lÈÞ<­qRðjdW'͵Û $(VYü¶?¡çQ6"V[=Ùmb+]3Úäl®àÇr¬4§¥ùj¦U°(Xå `Ó¸yÀ¥åbÀ€kp,-¨¿öæŒ0~%:|úVƒ€©+pEºÔØô­YbeûÃr YÀÜŽ¿+׬·Rz嬵õªx8²‰Ö@åz͇\ †ô¦*ØÐƒþR“ó«%{ï¥V–HSâ†7•È\ó¢”0 +M+‹ô:W:ÛqYÄAE( t -výiäP²ÐˆÈipjó\›Ó­zŒ Z‚gð0í'Ä|«MQsoö*‡—Å”…ô&‹G+«{Бڊ¢¹4 ä̬±¢©µ:œlèã³('ò¢Ëå:_M©œ:#µ”j[¥2"cÂÏ4¹Q3®œªôVÕI;"¦‘j/N(yÐ2Ú¬e%¬¦«I‹‹’r/k‹üV«Œ]=Ou]>§åBê-”h XÔXb¼š±&”âÔùQ¨½¹Žt£æÒÖ¨“mI¡aM"Ô,+(†= ÅíNe!-µtœT²FѪ?†Ž5{R±8†À㡃­Zš!,&6lºÜ5¶¤ààð&>-³|ìhº ’ͬx[»5ì)Äý稱Vþ:S$gm·*ZzmQq77"õÂÖµ‡Ò¦ÕÕ'ÔZÚ†àj l4©ÔWꓪI½ 5½Hwrº†^†–#ŽûDjJRl:Š jd‘a¤a|Ã(^µ"1³ÄeŠHÛ3)ó-¥ZpXç@J¶ ŠÏÁážo19PnÆŸŠ…pðçŽi_@M¯D·Ô±fåHmQqUpb£;0>«›‹U¢.öQ}t¦v„§¡ªÜKIÕ¿ëVB0 }j· ʈ¨ºš¯€š4:PsGó9jh"–?Hö$5XÀB`ó]¾T—vŽH#.À6€Uœ9GAR ™Nâ™è¦¯­Gz»ÃtŨFÐÕ5¾`@'Ú´¸|>ñùˆ²Ž•׬Õȶ£t\ M%¤ðìÇa½˜¤uMT“¥ù×Mž2r\yO*¯Å ¡ øêÑ7z£Å›ïUz-\ºŠ(µ-»Ñ¹Þ–ûW&¡£ž=\ Tì£f€°ÖeèhÎúSVhDÖÞ`tæŒ$ó¨j°p“™Vàê5Ö—&pÝ*Ê•œÐÓƒbm;P`.TÔŠÃH®"»òýh€÷ÿ¸Ôƒ–¸Šbê?=k²ƒ¹?-)Á¥e©7¹Ú›‘O#ïzèãÈsn?J±kc†¦\kƒ˜èGAV¤põ¶Z2–>_„ö#÷§†sEˆ;©èk´ñ‡ZºP‘GâÈáÐ_âíQ4±áâñ$ÔŸJõ¬Üdï‰lÒa²ò[‰nN%½¢ƒ0ÜÐ/|¶xQ»?J¤ªÄk}h•$¿ùon¹M«?ªr4bÆá¤Ñ³D{ê(äHñ)•$FɱS­úVw'þÓÿÚhLRpŽæÔêÚ nTÆæÚm@È­Œ¤m˜­TƉäR"•ÄŠ/å>¡üÖn Jq»3<ÆÀ›› ò®w–|2=\ˆêF§‘®pH>g;f:(¯=†,lb+¬6õ ×¢ñÖY™Ž r5Ó-ayJ‚]ƒ;hHØ‚…9Æ–¤Èr§}…TåzŠCªøƒ!÷§ MÈ×ò¡°X¯×zÉ…:ëKkntöŽB–È Ö÷ëQ(Š‚´ÆÓ­ €EÊU"öRG½:¹,Wñ(ÄTÃÌ…õíP‰˜0Ck¢ÿJ† “A ЛW<‚ûP›I·aAqU½ÍJ‚M•oì*0^¦«Oˆ‘¤ð`,m­E¸–äɼ²*v½ÏÒ…í”2æ!†„­¨pð$>gå;ßP´nK5ɹ¥sTD›“¥öýhÕI6ØTƒj¯Å?ÍE¾Ë·JºˆÄ}Ò«žl}+üÔ¤ÆåÛïd;³mòffÃ."$´lÊ´Ü>LCx³1ÉÔOµh4„ïokPÈ۹͢¨çüUùZP$JyÿsHšb[Áà ±Ð·ñV™T¯Þj£R£Dýic îTݽ#˜ÔèPa".Þgo×¥U³¼…ɹcszlÎóI™´€å\«a¥fª‘ýªÎ Òµ”X Ï!LÁ`ÚO<žTëÖ´Pª,£ó­N?hµ8`!\± w¶¦Œ$G£\Ò!¿BFÕ*¶Úƒ²,ˆ}¿zèÁée@¾Â™“6v°Þ† ch•ÙÆkj£{ûT‚d1Hä¿Þ´ƒ‹I\ 2ÙW@¼Ç½gÄ"õaW£ò‹oKŠ ˜ÒÀyBæ¹Uxö4öÊu·:¡ÅTxàÚþQ¾µt¥Å5Äû(§—Š*±ÒIކÔÙ (›üÍë›PìA˜ÈÂ껦ŸŠb0ÎÄêÞQS‡0ˆ:Ý«¤±x”` ëÌíZø‘| Ð~””R×ÌozQÍ'3l Ó½H‘ŽûGZ €,+”’l&„éb†OR'âZ§”rÀ[crhã’9c,ºê*äõ«L,hS¤Ú–ÚŠF”ÂÌzu.ASA¨Í‘ùª“]næ Ø\˜k(´’1™×ÔP«Ã-ÄfYPšU±D˜¹qømjy&ÀÙF³·éŠß—ö_æ£(ÖàÿÔÀ~—¡5½%3(V)#BEýj®)`Ç e6Ä=êÒ­Í€Ôѯ™ƒ(¸ªwêhÍíî@®¶”A,.Ì u,)‰r—®OÌïV"ãQ¥1 l>b£q eHrí¡ÍL±¹È/o5†Õ æbÛ¶íBu¢®·]jôkŸkñ3G•Tª ;U ¥˜…Q¹5_‰Ít‹ÊœÏ3UÈ…Š‘Aʧ;ÞQþþ~õW)&çsF©˜xžV² 9ž•ŸZð´BNU“Wð¸[4Ú·à½;p &­Í¿ŠfjܘͩµíÊÜ…Š‚,jVʶ¥‘‹^צ¡QÌwª¬unhãnoZ•hÔå@¾ç­^Im{éB¬-cLRÓJPÃPË#'ÞÌ¡lÀFµ¨YÈF#såçJu©*P@&ÚÖ~._wn¦¬Jâ )PvW¿zÎ&ãSò¬òªD;_@hKT3Z‚#žtQÍ…cZj1²ªß@ ~TŒc•0ºC墙Æcm¯I‘@Ì.#pÞÃ6ˆ7o9ézz¾rÖ–Yb>75#K1Ê£sUqÛÝaW¯3Mo1 —’ÿ&—&)5ÊuiY»ð¬A"&5r똖ގ<>çÈÂêoæíBX( ,(âÜÿ¤þ•¤Ì‹…QègÿQµ©°Ås,±‡v¸ Z%"õ‰„å4W¥©¢µ…h`qvÃHu·”íYà64P³#†ÄÔªŽ dÃcAcfC•5«™±14™W-øO0}©ì2c°ë" Kk‚9õ…i0ò–‰Ê¶ÇÊ5÷ëNÞ5Ÿ[êHØ‘íQƒ‹’OÂ2û›jj„!­\çÕ_jQýéK®m@áܦ-no®£­_}Û­gF¹¥ïš´dÖCïTñRßQKéjctÒdhÁ·ˆ>@>uоÔK”“–Eknâ„‚ÄÛÿ4YÞ…ª%•‚æŠè7sÏÚ¦á‘\ ØÖQN5¨jc-ìoPfúч@š,¶¦e©ËV-((*ÊK.akÅqƱøeåuèN[})h‚Ó€ ©´Q*žF×5,^×snW4È”\±öêpâbìóFÊvO)!~”â¬ÁH·¡[õ?ÅG:k[5ƒw¶´”zW;Çç–ãð޵.É^#ëøGST&‘廟ҳn$âq 3oì£aKBÃsò¨¶ºv#+ª75ŽëFá0æ_;œ¨9õö«À…\ˆ2¨åJ›k`€¢&ºHÈóìÆ—šºæ•††©Î¹4œãß°¨Ë^Ö¨bÄm¹æiÅV½nõ,YŒ=VW¦#6ææ½"AQ¹"æAa}M&lT†»f+ê¶ËT§ç‘f”ÚÂñ§áî{ÑyÅNÓI­…´ ¤»Òó€44·’³y5ƒv½ß᪣ɭ…É«:â9ûÙEö¾-–ÒçAÔÐT^ì"ÆÔ¶`5 -}kZKÊ]ÝG':z’îE‰°è( P“YÓ†sM¨k^ÿQH»\[çFI#OZ°åbEòéO„ùˆìJ¬\å;Óbb¦Ö¹ÊJÔ¡Hu¥gÊ.A>ÔhÁµ¬4|fŒRã¦-i”‹t¿z$7r7µV’khïz˜K¥êÓž)±ˆžëïCÄpŒïãÀ·¿­@ØõªQKk$0=+WˆYbñCÃÔü뤲Ìe“¨6:8]ÒUxÛ+®¡»Ö´É%-*ï¨`,Eeã0+jªÃcE˜¥lÅŒŠXƒ”q&Ì€s¨ÄD­…™æ[¹\Ç]º Ëḯ³LIV`7«Ø¼v°®‘»38µŠÚÕ¹ËgcÈäH­¦„Vì­÷‚üÆjÀ,EÉÚ·J@:œ¢äûQÁrC0.F¦ªñfE…º©¹Þ‰‹&+ªÞÂCÏÚ£Š0ÌÈ5 ¹Ô›õ¦Ý-”ùGMnOµ-ŠŸ*,ŒÖ¿¦À|Íl·*õ°µ-ÝŠ›±×½slXPþ8&8ÙR®jÛ2›•ǺåüÍ'¶‰Ÿñ•5Ñ¢±ª S›èÖaø~ï@îÖшö©¢‰o4ʽ†¦“' 4¢$f v,45j‚6v¹a³ÅWÄ<É*¦"KÄÇR9жæ éa¯j­(Iå½Ìk¤kø»ÑH‰! p„Xµ­§E½s››ìà®f¹ëÐt®µ÷©{ 5Kl*TQ*Ä•ÙE©¥(9jr÷£`‘®i¤XÇ}ê¬üJ$‚<Çñ>ßJ‘Á [ž‚¥­4‰BƳåâ8§[fTÿBÚ¨Í!$Ü–'rkœ‡oŠÂ¹Æg*âÇ.Úò¢L’Ý¢‘XsíY1FŸ½€©ªÒãL˜3ƒæoÚÞz±£K?”ÝTXUrG3òBHñ ᾎ¿„Ð_ò£ÒâÝ­ó­(PG'ÅkšÏÃ)“‹Õ«IÈ.HëZãШ.AôÞ„Ê/µªv¥L ~€Ó ÜëÖ¦÷ßéHE³\¨ËÜôj0ž¦»8ïô¥© k©£Œ3›(÷íN¡Ò‰nNƒó¥<Øtb¢hä| jž#+ÝAÈ¿„QúKòÌúXþuªóãeq•>íz/óTsÕ›m8°5UF—=Àåõ5ÙÙ˜“IlB¦<Å!²²÷µ\>]IíÎ)s@Ozbáçqp„Í´G ‹ëräò]YR¼(ÓJrè3ÈUÛ…@‰²Š’HP ,š|&¸š{Ÿjc}ô¨¥š 5HѨŦ!RiK½ÒŒPsf[—¦@Ì$Ì–§J4­FUqèйò¶Çµ1Ô[]5­A4F3½¼¦¨”xØ­¬o±åE˜bRV k úSs½¯kRaB­™ˆö£½î:Ñ tac¨§B†ÞE6¥¢ØØ[s}—ßø¢–5“C4™¹6À|©‚šŠŽméN…¼9(¶º÷¤£(`vªòqY´Ë@ÿ¦õdà0é3 ]œ‹ùF€Q¢A}Ô§©5Ã97ÑmŤh¥[(-n¦‘6'&3Mε¼ÖQ‘Q°Ó(¤ËÁ͇Œž XÖ¯ýZónìXé©çQwŒ‚§[ÖèÃáQHTîI½VÅpèåóáÎVÿÛ<ý«…:œ>9q¤x€Y¯êÛýEXf[¡BòÙ†Õ‘0)ž3ÿ-U-Ü›šG…&\Ù¶«õbÆÁx!ÆôšKñ(Ú(õÝÍ¿J̵¨éGîüXÒN'ÒL>^™[ù§®#Ã7Ú2ö#Z·<«š8 ÎÔÔáx’Öx„c«Zµ/%Òëc0j »žmùҾ݈˜äÂA—Mísõ®Âðì4c4ŽÒ7A¢Š¶2…ÊŠz ×c¥‚šCŸ8V;†¹4c‡A”3\nrè}ªÝqW3°QÔÕ‘j¯þ™‡,-<„~»ý(ü>…ÚÍМÇûRñX’ÞX®«×™ªÀX—c¢êMfÙ<8lÓ4®[.Q‹[™'ûR%Ãáñk‘Ó$Ÿ ÷ÌÅW3z¤9˜t…u®4¬ÒÍÁË'Ç”œ0S£¯QZ3 R œÊÂàõ_¦|<[ͪmúU޳áL3¡5FmíÌQ=ÅÿNá‘ýé—’έRªAeAÚºfFPE ÔšƒR ],IµGm¾TDŠ‹ƒRqÐ ²ŽuWw=Bè>zÜÓñD®¸6(AozÌ{æ7ÞõžW Hå¶HÒ9ÝJ‹ØÓ$!2*oç^jixœ@ÃáRk¨™‰±õ‚‘{^ÆÝjÌWpÎE<Îæ¨`1¼Rfv›…È‹º|¯W°ÜNSˆH10ÄË&‰*‹ ÷§•v´pø6¶x30ÎÆçéL²ˆd`¶¿cÞ€™ÔZH#$n¬ßJ›"²4™:¬š]:dÆ$wï@ÆçØëJ“I‘ˆ‘FΧ_™NeaqÞ8–jÕß»P¹·;P\ÍPj./ ¿µF`v¾´$ëz‚X[KQÈ"~ñ‚ž—¹¨ÃxSÎnJt½Hq[.›ó£Z ]íïF¢ÊïJÓ‚1LÕ¨ÈÒ˜ñ¬Ë•ô<›¥)ié½i3æârŽ5­9#Y“#ïð·JΑ$(À‚ bÌ2鮹O‡½Ž¤Ï3\ßç7¹µ éSp¯a·QÜSìrŸX°Ù‡QüR©’í‡p/u’ÛƒLG)7Þµ ñRî h5¯?+1¡Åm~µ½‡‰a…P…f°Ìmz×¢šEކ¤\ÒÔª}ÙÑoä'oj`Þ¶*1XD ‹îz Tñá”g»; ¬`jG^Õ6&iY‰.,MÉ÷ªòHw™±X…‚•æ› qáÆ¹fëKÁÀb‡;+ n˜ʻ}èÿ¥KŠ€1@,$ùóª—Ö´1éŸ  Ö3•gë½1¦[2+‰E,’Êm¥ÿ:^ óA—š~”C 6¨I6¸Ó­zJ§¡¢+äÊ5ÍθGvTuÄn¸¦p€!›¹¨â#eñðìÇ[”½íò­N-"ÉŠ|£Éä½·nuDælo½rå;n"qcr’· r4Îãa2€É›QKuϹùÐFZ9S¨4ySÑJI”Žš-QcAÄ..0 e‹z»Ó›_aÞ»0U­Ê‰A'J‡–ÞLÇ¢‹Õy±.Ã,c ëÎ]¬Ë$qoÂ7ª8ÜC4-)LÙHo 6$Þ‰UJ•K -´ä„G9‘n0nEMé™d˜£…”s¹­Ô¤i6*,¤ûÔ±kÜ’kó¬æÃª¶&$.,Å|ÂÕÑ£ '1µ©® 7&Ÿ€ ªd·šöÈŠâ1$5ÍæK/j©‘׈FÙ‰%­©«ÜnÇ6õ­ÁâŠñyb¾|¨¿ì§‹ÒŒ²0Bh˜Ý‰<èk A¡"ŒÔY@Ëںݨ«ŽÕ$ŽUð¤$ÌrÒ³q•£`©¸äè­*«ÄÏßêħojÏ)ÑŒò)|b1/Xæì5äjÔª¤]4¹C¸þGqJÅÛÿGÄܶ¸ï\ì賸;^9ãþßJ²Œ¥2H [ÜX؃ÔV~S!d ûŠÐ¿”ùHºžÕ‰zj´ãÇLpº²»Gk1¥ëØÕYÉ1wænmNà :NŽ3(PmVÄ8a¨ƒ^ìH®³lÖJš,3áË@ `4äüÅ' Šh‡‡"f^›Ws_(Ð •f‰üEª’ i³ø€¸Œ3Yõ#ø®7’Ñ·ˆm}6äÕH°ÓItŒ•ëW0Q48v¶w#ž¶¢[}Tr«rƒ/6F½½Å«’@(3±÷£Œ•7¹¢…¾‡ñ!µo¶2©ó3ÛaV U WÓ';Ó"Hâ$@Øú˜îÔVªE¨aq˜€ù\±¥¦lö°¿z±¸ÌnT‹5µµ¶?Kƒ\"¹&kìF·úS€*§ñ¥µµŽE[²°Ô¿½B{¶­' ¦ ¨QF*WJOŽê³ F¼Ï/Öž› ìU†RvùkPŒÌD˜ä[ØtØTº†è²\ÛQ¸5EçXÖðÕj4b ÁÖ ¶µjÅÌñ'U°›µ…i¹½SÀÇáE™½n>‚¬)®“¨Í=N–:ƒÈÒñR¶ ñÈ&ʬ/cR¦©ñ2ÓqnBÙ@ïεoAØ<<˜–2;¶R|ÎÛ±«ðÇ +hШîkˆT4UÐZ¢æ©1"FË¡½¹t©é@ØÞûURój.â³q‘¦*vÜ¢´‰×cIÅÄ&‡/ƺ¯~Õ›4Æ|2˜¥5Ö®ÝJ†Su;VqÐÛ¥sÊ×(w+›Æ¢¥åð yˆÍ”ió¡[MÔÒç™üv²«+ìm¯jÐŒ¹A"Úyƒ®÷ÔΔ£;e"À{UŒLˆ õwl×m¥ Üj-\«muáØE´m5Ǭ6õÅðpà˜frCj¢Úüè°øœBYDìk`k7<³ÉšYÍùÓ˔ϔÈ1ÒÂá¡ ¶þ›šÔyŽ"$žä†‹ìyÖ")v ¢äìma"hp)ú®I/ÊŽÓb†6JЦàW[d&õÕ5Ö©9N™H §‘Ñ|6¹`6?÷ëïCjíH.ºfv ܱ‚ÞªÔ«‚nIîG?q±¦à §1¶PYtèÝÅSÕ|'ŽøXVÚ–&»…G“Ò_YßJW”M‰X£ ª z¼#ð¡HA"ØûÕ?ÛWÂÎõj“s}(NôÔëšíëª9PœM 5&„Ô[¥VâºømÕH«‘Åð":ÜÖo…UAl Áæ;Š,R™pˆU~ñmp6$k§¸¤°$åÚÔÔkb;å‘•]ÊÖ¬BÀe`Íqmv;Ö†¼\ ‰óBmÿI«óG Ÿ´Ágæé¡úPa¸w…$† D¨èF]šü´¬ÎS§p¬ç–OÞ®©\&‹ #:•2 m©Äv®³À 6ô8·áß1³¸°í]ˆ8‡Åˆ"“"²ö¡Ÿƒïy (¾vØö«ÿ,HHÄr)(5n*ʈ”˜€?µë9’Ÿ%,Xíj¶œ9–àÌ™¿ üë2Ü+H„ À‚§@A½èÔiKÂDÐ!Ê’Ç7”ß‘¦Öà©LR8̲¶Tír}ª(S$‡*/¨þÕ™‹žL^#A 6E…Và[n&CåÂÀ/É›ÌOÊŠWǪ‘$¹!‘o¸VSÚŸ„ÃGƒP†›vr==…v5LØb¾¦S˜\ßÞœ¹Ú& 7Œø‰ˆO‹v·µcæ‰ÄxÈslXèÃù¦Ã‰VDVŽBË`ÅuüªÃ,sÆRKJŸFZdþU¿ÔÂcsA qÐèGʤ‚¦Ä[Þ©bxl‰÷˜f. {0®ƒˆK“ž"Žº0ùÕ¿ÑŸÅå&—ÄÏüšv ÿ§™¦FÑÍx[0QÍj·}¥#;(òkÞÔßõQ’c`Yu·"4¥ÄÄ¥²“—M(ñ –Ic$‹6pàïSƒ†YÒwõçõ¤O#úÕÜÖ’Qq¸^¾ôÜ,pD@R¢S{:ÿjdˆT˜ev#ZÜâ-3RF×; ìÀ fÏ6iüA|«l§·zÑ#ÄTisS(Ãô5NVðøá<„µf%Ô)'SµfbŽn.Í`OŠ6ç­6ô£fM$`9‹éC5ŒÏ Üò¨ GkB \‘D¼èRÄt#­p7ímèH~}(/¥êd6]MFôT©Ä`ΦdX­Q°­p=Ô{U|V1¼k‘¹©çíY³ëRªaåxIÊnàìjÜG&$!Çå¾ÛõªEH6;Ô°o#€NK†{%¦´X9Lêw\RþÃ…c²°<ò5‡Ò¨ê#¾^ þ¢ O#è]¯ïWê}n" 4.Us=Å›jTqáÑÁ  ÿVµÀQ¨Ò‚,Ä•@ü T…[úE©½ V÷úÔz‹×jjN;î>•Ö=EM«ªHÛc\t©ÞºÇ±© ”HŒ²¶TúÕ)ø‰‘¼(†>'[÷®ãÎÞ,q Pw4,2â$PY†`OÀ½}ë;mÈs­;°œBâf_8̪Û^­Ë|ÆûÒð‘Æð dŸ19IÑo¨¦JÚ’kp}/á$Tî/°®S}A v¥ŽÔľÂݨÉ9òïPÆÄ´ šFh@OJN¦õSŠ&$"| 3W¡#j<«©Þ¨FÁ±™Û{—úkYäÔ*|gH™W¶yH¾½#&—ÄÅúÊ,OÌiO+á@©k4‡Ä“Üò¨U¾õœë´˜ãŸÁ?hB=.5 *Ç Oó$?°=ê®àåu5£Ã“þX€Y‰`Ì­¥j Œn! •ŸÄæÍ¨ÖÔPªN¹°Î$í³•'‹dd€…•O™›*ΩxáûÇbžÈ£Û­W–^ÖtoŒh1½Š(E6˜pø‰$Í&£]‡µW‚Æg• ©Ì ·Î´%>}5°w¢wÚVÀáÌ4™×.VÇRM4•HP¢Ãó¡“Sn”æ!‹Ó—:b…^FÊ‹»TDª"Ï!ÊŠ55C4¸é„P¡È •Gêi·qØ—ÅJ#HŒ"}ëC‡áW¡žÆsÿÓûÑa0ñàÐe ósÃØST\ÜÓ8ý£\T°ïÞ§ r¹¾aj4Z`\ßÍhk¢Qü$ }í½% £N¬U—Ÿ^ÔèÁ*o¸65˜Ì¶†öU7výªÄN$`®¶c uÚ›Š‚,RÚQgÖÎ4×½(`£Y–EšÊäÔÕ–9˜›noTÜíã($ü6v•€ !=C ‡d$¤êJö==ëG‰F³pó±#YHåý« †ÊØLca¥ÑY¬o𑱬^®ÚÇ UžsÎIxÔ©6±°[õ¸?ìVŠ”|··à“‚…^b–w³»khDÊ̬Yˆ±ÐO3O#ƒR·€\ÁžâªŸ°F.ܬN¿JÑЉPLÊùŠH›5¯zl©4m¼E+Å¥hpéVL:Dtt-ùŠ^&æ /…e×CkžºÒð ÉXCs¦uSFóT¿Ò±añà©Ñ¥ºß½lÂ~õ}íX¢éŽ[Ë&—6¶µrø£f}foõ…3_Å}G¨òïC¯aùÖ€Ô),XyF§ä+)¸– Lâ0Bƒ «œMÌ|8Ú÷vÖA:ßëXåsƤ_‡ˆ,|L6ä ÿ/Ä S•av?Ôl+8ø‡Ö¸æ;XW£õNCñ8ÌDײ/EÒ‚n*e”•ü-¨ å¸¿µ_Àá¢8A#Æ$g&ݨ›j¹ Ì6 …™|7üCj90n4l$ðhÎ ¹VŒÿN´µÀâðç>Q'`l~œë]ý+O-3,«êg¥LÇ2ký=êòãÊœ˜¼1¸;cS+`æ‘2;­qlÚmFEµ]RÜÉ÷4@ZœøYF©gššS«!³)õbEuEëªN"æ¤W š’@®®®¥:Ý«­­MuªÄ§ÇcαN¢Ä®F7æ6ÓýïMÁ±—€RÑmÌ1ÿ‘§I‡“Í…×ÜUnÌ…àslè–³j~Z+9Úø½ÃÉ+*/£ ó¢\XþTŽÀc,~ TU‡±­Oõ]”–Ë\!èi„sþµ¨LîáTs5Úì×^[šœºÜµÍLo ¤„—nEmE”et$n/oÖ¤YÙFRX…Q¹;S M¸u¾ŸZ‹+èÂ-·X•äVL$ŒŒ¶`!Àóüªœ0œ™”›C+hçnµä]C3XùFºU+—bY‹uŽS³))a¶Â„mjv®5’4T¨¾ôì Ò38ºÅ¡[ÿ4Ü6¦ç&Í”•åV2,h± ÒÀ“Ô‘[œF“ÄÐâ8yx›0r¬`: ô±W¸¶ãö5›Å°ž ¾*)1¾ žG¥øýR‡‚9õŒ,¾SÞ®…R:u›Ããi1ñ"›ãZØ—+HÅE&Õp*UªZ5ðÌåUÜÑHÑA’r@>•µQi&â8…ˆ-t )´GLÓñ BÃŒl9{šÐ‚8ð°øPO­ÆíýªbT 0‹ çÍ»š›S&v‚´Ø×•B‹SV…mLAPƒJ5À›„0Òäu£(B:“æcÔk”£lAisÏë_+XtØý+QVÀ›l*åP)×[Ûòµ.£QF%>(@xÓ¢Üüë#Çq%E‹yX÷¯ÅtÄôÒ³¸¾_ý(æßÄ=ùþUÏœõ®-< †Ã¡ iÏáڸܚ~(}æQ°}ƒ¥i— %45+RÚ‰‘@κ£_cB´@ëLC DƒBwìyÖo“fKæ´ ÊÌáK+jànZ™9"É Fv ííU› ê«a±ðÈ€b.޳{ÓÚl(\ǦÿJ¬ü2&kLjÊ:2›þT©¸dñÜ–/"Z×£yEÐx¦)gËWÈ—Ôóª•cìsˆLž®£ð.ŸZBu%C¾¥a¨¬]úÔÇ ×XÔŠ<· †ÆµxmŸ‡-¾ üë/åWøƒÄxüÀ2ûÖ¸ú/‹V®µ$k]CÚEÉ*‰ÒÌ/UŽ òýÞhÂI½ÅȵªÑ‰Žl»}ͪ]BœŠ<« £³ ‹ÁýìæA½ŽÞâ­`1#÷N HšhÕe V¸ÿÍQâxQüL(¿™ £3ú°øXä¾Qá·>ŸÚ©Ì‹e’DSÊçzµƒ‘ñŽÉ,Œr ÅA¶pv?ϵIÂÆØ“Â1R/Ҭߓ)ScùW ±„Å/Uaå·JOµ\uªF‚ Ò“PjkŽ¢¤J°a¸:U>4,DŽžQ”I¦Ÿ¸«mS,QbDãÌQBµ½7þàVlÞ8d‹‰š)ÒÙ´Š9µdמÁ´øN&¢fe:ÛJô2´¾"·’A™}ªáv›Ò8’_˜5­%í×J+ùó @¦äñ<ÃÊ%$Ü^úSè' |Ä]ˆïL,X ?¨^€›óçL7½QÑeËàGnšÿ5 ‹((ڦƤ Ò‰âZ`Ð…½¤?¥fÆrµÏ=ëW?á“ÿþ•œ¨ÏjÇ/LA×P4ïE†ˆËˆXîcÈ^ŠÕk…Æs;€n‡Î‰6šž þ"$Ð k”T` “ UÌgKô¨âeO†€Ý”ØÞÕ0Å.Òº‚Ž,@5¯¬ü7-/‰ÓàÈÚÊêmÐu«¼PᎠÙ×áMcb¥yæ2Hu?•6¨L8ù0œ\ q·¤ »ÖŒÜEP ¸T7 ˜‘î+3Ч‰ƒIˆ»#e'·*wáÜVÁQõþðùG÷®rò—#]w›ˆÌç3¶€úV¾²a|/ù¬»QààL9 FûÜßo颵ë|xçu›AkXÑS–ío™£U­ B­5V¹˜AÊ(ÔkP»Úˆ›hº·¶Õ¤$Zj0èþSØíI‰³1Û–ÔØÞ*ƒåÌHî@Ûó­Dã{nhZšFšÐ0©3x·ÿªè_Ò²¸ó…‚;hĹ÷Ú¶xº}ê=ýKúiY Ípî®\çU®-ɼÁ_lêÚÀÞ‹‡Ÿ…ÀCge »æ‰Q¯µjÿY,/Z!]Q~Ô!zšjA5!An)DM+,”f‹L2\FÒ¥ÃÆ¾àŽ–¥øÈâ-š5êcµ2®|Îâä¶¶ª2Kˆnsºƒð]I„¡r Ø;éT¤ÐÒf߭͘꼰&#‰JrÚ÷uüêÆfªs|+×ßµtq¬ …9‹3g·j} œfðòå:©ÕXliV5»<^>¢çº{Ö1[7Ž\q©Am-V8@ÿòPÿª’l7 {ÕŽ?üŒ'úªž¦‰ÚRÍ1˜l'Ú®ÐVÙqÊ©sd_Ìì*ímíΡ*¬ïke;0éØÓ" E•€#pÚR sÐ2r4ÅŒò½é%låFRìNžÚnjLþ*’`b >Tk.»ƒÈüéÜ6Is0I™uRt6ª'ÛÂ7¼èžÔq¥Eþ³þ›Û·Cð§ÖâvSû.Á°ü13˜!{ÝI˜§ 4é¶æ,Ì+ hÒJ$•†ÜR™M[I«~úTKT;qB»„&ÚA^2Úï5|ý.Ú,cˆá©~,ÀR®TE9ŽKçlŸ!×qæÛ•LÀ‡•è(zY‡šæî·¹@8¦hÜÙR2‰íŸÛ°!‰°V“hk.„Þ¯×ñ–Ò`­\¦B.Oç^"ˆÿb±ËâñÝGôj?. «AàºB  ÒµZJˆîöȈÒbõØQŠšâÔQFäiEAˆ–º¾ƒ°\Qmäh²2BÒû©H@~- ƒB¤Q ð¸PZ6’Ô‘Ú;)µ04鮀¨,JÚ ü{ÝØØêû…Ž1E¦Þ‘9ºa Ä54³…x,] ð"%1!›[Ò DÀËs"Ú–<¯EsN|]ùéÏ_OW=ñO=‚Zùˆ´†RŒ0šk²­}À­ ±ÖMïÝMÕ…yð|Ñ‘ ´¶£±JQ%Tƒ#眳â&éC¿óÛ4uà aNç2Ù0u1‘m‰ ´z±ÄXÙ¤T™  ð§äû J®Kã[6Cy²2Z»€PPnZDØÛÛfè#ùuò8@ ý|„Ãßý.Í~ÿ)2m›+Gm)Í÷WD7ùÕïëÀ4zÏÆSÚY @¢µ¸€[ôý¼N…A±HeÂøÈ:mÒ 2"¹ú ︃&.»Œì‰Éåʼn–ÞéÒ?%n‰±Q}ï,Ñí Ñ9AØ‹&‘u¦¹¿ 7óMà"OÅ3g8p^oר^Œ¶<ŸÀsÜοé&eÑó‘–ÇO·ô”’`oÒ»M»OuHÕ¨\©D÷#"ª$î' (œtÝ9-€J¥JelcíK/!btX•lǰqZxæiJÂ]&ýôóã$røTG=PŸ;CÜR›6“üïç•ö<ÇQÖ`Y\ŒQ hñDziÇÍ7ÓøîÝ”šœ -[¨„ÍÕ¯ºZ @[ã¬Kb³# zg'€?/ˆSaei)¬\W»ÀŠ®0¸e+_æþúQâ¶ëÖ[aN—”òªdNÏÌP[áz"A›gðüØ'~ƒŠÕ*Ó¶¸ ÖÒÕˆ#ÏýÞýÌuôÚ¯^I‡.ÿÑóÏaÅ/>‚aè³s .Ж œJb^l½V#‡FÐd;ќ޻j煉gæhá?~@“W^IñééviPùðašúØÇè’ûï§_ù½kik­D[·o£+î½—~÷ÀkÛ¶M“WÂøèãSá¾M~òå’iÊ%RôæÜ"=ÿå?£ ¼¶€™ÏŒŽ¦ ´µ@g·.DA°¿Â47LOQ û+‘èöQöýæ1õè…ªxAs>LÜöÜv›w$ÙDõÐA²ZçùxäQzþÛÿH¯Üt#¾å ¢«¿ó’ÃÃêÙ‘}ûhÝyçÑÑç~DBÊ6Ÿ¯Zö2y’×°ö ì^«Èe ‚%¡¶Å¨vœOul†ìtºM󂡃—eqÄó¾š;òÞû”{î9š¸â JlÝÖnÎ@ý½÷ˆ[ÖàA`0x*&SôÚ>C³O|â8]Ú|Í5êÙ±Í窥5‚ ¼†è ¯‘ Úß x€S‚¼>Ù01ŽT8Oqø¡ÎýÜËe4´y39ˆúÖùçÓðG6ñ‹”Úº•¸í½ývXA£Í êÍ}Erjª­bt “rO>AhìBjÎ2 @Ó»÷¨^µAv“Ws±0œ ´ÖZË©·ÅssdŽò§.u#`‘#ðÿ1µ‹/¹˜v —²/üÖÛT|õ¿ôRÜ·w¹à©Jäà›SW]Œ¨o…ïÅÙÒ0—ÿÛ¿Q½‡õ¾åfr ´íŸþ4}êÇ/чøsÚõ§B×<û_4™¡÷_~µËp=rçúõ›ÖjðŽ;ά>áZ ÆGä™Aö•v ðÿm[©|èy¾¯I,›µƒÏÏ~óëÄíÃ_½‡\7 OR½“ÙñO~’ª¥2y®KU¤Ýón¹…{˜¾þÆ2™ƒ… ýìêS龯’<~Œ¦öï§-Ó“äßs7½ùµ¯“ošzñmAq]"±o­“Í-qÕâR¦kXT u K*z"h+ÇþªGßWÖ€Ö~&€ö³gDÓHœÊöÝu½ùo„Ky "/ºˆ®|è!Ú{ã”;p€†Qá‰'¿G/>ñ¹v¬­¼=X÷èÈcÓÈ·&[•ãIhÚêŠ zl‡™àŸÙKÝÅj´iΓ矇Z`‰bHOuÄÝ:M^ó[4ÿúëTľa¨¹¡T®¿ð¡¯‘ í–Ÿ}†&“qÊÞtýÏ“OQî¡èÄý!e°uŽeÒä—+ôö™YÊÇÈgò!-•%æp¿“(°âY–Êk¶€¦¸˜ämñ®];iþøIŠƒ ÀÞ€Û ”K`®éÁ Å! ?ø½ü•»I¶“Ãuæo½™ŽÁ5VLð Cõ§ø¾• ÊIÜd"-~‚Ôƒx眅³f m-àV[ja<‚¨<ž]Oôî;až}ûM:õÙëèLß3-ò-‹„o;0ôЉ ÙÑf-·[…$­N”[OKñ-ŸI¿P(ö ‚Q-C‹:p*,χ©ÐðÂʼãÑû 7‹ .KPÑ´[ÿÕFtL¦{)Ûvl¢cŒE3tëjŒî °½(ÒÏFs&Jâ=ku}0²\ 8\ ‹ds}Ωº¶~dõq·;çºÝ ·Öõ|×µs |èáç‹AÓ¨Tka*\·ŽL½·_¡ÉÎëÕ„ÐiâÏ÷pƒh®· °ŒµX€¼¨Ї›ÔuÔún©DoŠ\·›p/­Æ*‚éÖx7ñþƒ""`[ ì!€È Nã`Ä—ÒIis-°ž»¶«ba¡·ö™pÿn{¹AçA\•Ä=ƒàJ»BlA‹:lÚy>UQ¾&²Y4]ŒÖk¢^AoÕà&£ûÑ5£Ç°+(â¼mbbóº‹úˆü\äú*4ŸX¿^ŸùwGëιUH©~5uÆ-ïŠ1€Z,pж÷¯IÚP ,ÁmT ŸBUW™ŸW„h'½qM¸ÔJ}ôÜZ¬çzç7 {A‰ÆÁB—ÕÖs|>L…ØRò¢Öõ¸g6è]Q­w6Ìîi*[œuÜ ‹!§P z¥Â ¿Ô;v5éÞÙ 7ñnaꬅœ‚8¾/È4çø n­§t-Ph­*Uª;yÕª:)˜£^Ú×VÒËz¤A]V+bø]½'„ôÙZ‰ÀH ;•–öðLŽŽÑàä„ÞDS»vÈ¿¸óË×ýÛ»ï¾Ü³Xñ`ÄóæZkåpƒR¡\Zê&݇¸My÷ˆAcˆÇ#‘F&ÃÿxR ŒËÑÉIcdzÚ™·m;f™øŸmÙ‹Åȶ-ôqâëd2ICXçy““ ÎœzÔÝðx£1+ðŽþ#Éäöj JŽ‘€V{ïh-isd c­ ™JI+“1l¤Õl‰3ããæðô”™Éfm2ÔÆÂæåZ–EqE$ãq5Ž'¸‡¤c˜·cüœza¨gÒ©4í?wRé­g)¼Ò®Y C• wìÀ¶ø¸ §‹µZègx6°¬@ÄbB&R H™Î XŽÉĆsÌÔøFcÝä¤=8:fAU&/Î4”C’É‹L›&€&Œ{!iÀbà®êY }ä‡y~Wƒ¤æ&’™n÷Ú¯ž ù$I!2®ãѶ©)ùêñÍÌHû⣛6Ùƒƒ&~ÈÔ d­`¬4€Y²sùøÔ1xÌ‹W൙ü4 è9uøÉ‚7|—c÷ü “ …Øü]4¾ÖÙ,ÜÅÖënÌ”©5œug‚Š¡)§8òŸ)¼‰Ï}ç"#”I§@2Á Q„AE½&˜ŒŽâ£iY¼xŒ-@l¢Çš„z>Z…&¬5ÝšºY0<×ö ¾®‹eË™5l‡£Z@[@¥y.°åäž}Ö¦éiÊŽ’ÝÔ4± “;mªšDD޼Ð0¥:.kW/XC›4£mŽßÑB@k޵@W.óùÛ|¾JÂO³qôk,µó VBC“ÓÒ×ZÔÚ×d;›N›&uÓµöô³:#t¶r>ïξóN=ô¨S:y¯ž™•A¡`Xº= E|ÈŽ¥2©d2–ˆ¿ž[ü×>²@” O9΂’=;ЋnÕ¨‚Ö4Òµh\k´¥¯ÖÆïq+ærÎé#Gê Gޏ…ãÇýòéÓÒYX0übÑ6DÜ÷S¶iÆñ¸ †Q L£ä ` ¢œCÑuèéÓ³O¾ÏëW:4ê¾_ò¤ŒkrÚ„[ÍUC]©fgÈ-;æ,=êWggy—¹L.!DÊ„,Àï5)K|(ƒZ¤XÇÖœÿ cYˆ|›´<sÔuç0_gWeèÌÔ€P çû€ Ôq@zl|qqG°Yƒ¶ÝEä¹C‡êyÃ_ƒ käD©Sš"ÍädÙ†~CÊJ“œ"Vñý|Ä|?‡|;Ñ2ê Çð[´÷z=««ÀXµp€Ò{ÆK›—–ö¾ôàƒ‹‰zÕ<5Ÿ¯á€T‚œm6ÉŠ_þod€:ÿY­.e¡æûKh¬èy ‹8f?‰ÍÕ‚ë–4¡>ˆ1 ÏÜúþ¿ÎB&…æ¸RÚ~óääoL&w§Ò)ÿ¹ÜOª¨J@Äp€š;㺋ݤ€Þ¤¸Œä(w·ÕÈö+-]† ÎF[kÔ}0Ä>xè,&Þ„¡k„_.bý·ÿÇýçÛ#]8IEND®B`‚PyQt5_gpl-5.10.1/examples/animation/appchooser/akregator.png0000644000076500000240000001141113245231431024122 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞbKGDÿÿÿ ½§“ pHYs¯¯^‘tIME× I†pA–IDATxÚí[ t\Õyþî{³k´Z²%Ù–dclƒ16¶á°4ÂÚ”†ÒBr ] hKH ‡Ú­sRR$­{ ä°•Í@°V/€±-ÛØ²llÙ²,ÉKiöåm÷ö3ïðô:š&=Éi~O÷½ûî›yßwÿå¾+´?Úÿoc8»uRíô‹]3—\·ï<¡¤<гÃBÍ q5J"ÄSã!‘…„À€áèÔŸCùƒ@üØ•h]v7çXÆÓQ™BpáªÀe?„ì`n‚ \‚Ü×Òº2. mHèjHhJHèÙWÓ$T|HhÙ0…M ™ß;Äž?Çù÷¿ˆæEÌ$®&9C2€Ä€šÌCÏ@hðl‚W’à¦P²\HSNÐÁu-'@× $ A ®‡C 6•3¡ n„„:GòÿN€§.îÄ™·,…°Ès#ǹ(֧硘âdí>Ó„W3¤£BÈ‚snpÖP29 RÏĺ&Ìn€<‰ 'h`N<Äd˜ØÙq)ºÙÅ•à…kSXxm ?óF œb8Æ‹Ü5¢ÈXò@NÜ€ËGðçÍô–Ô§âH4Æc •?Ù Ô׳.…Þ4—œìèC«Á³Ô8®ÈŒˆU¢_c PÒ$”5ˆ‰x¢×E1‘Š|Ö±~¶iZH¿×¾5¨ZºžéË– ξÚó8N>¯BLpÝ"3iyDÙ‡çå½€Pþ³íky¼ ¬½zfRCéa5)˜¡bI%(|8΋Ìl1aŽ‘8/Z“'òé1äì“Õ0^¤šäó·BÀ_ ÉØ„J’q— %^FœBñlòöD1Ý,¯Ö#òÏ-@¡ÛxA±Øu•ÂDYÆÃâƒD>Œã„żr@Íè6ãMˆE®’-pw˜¡C ÒA0Ž=£†Jù$È1)ÆK'¦Lœ· à$[¾Ô•_”ÿ¬B‹õ©Q”4C·‰W8,WžL‘k(¨&ÅE.OÈ/“á eÐA¶E26l¢¹~˜un`÷MšËϼ3 6D%@ÉD5¹°ˆ±c$nÂ>¶¿'jÎüŽÕ×-â*äeVz"ň•Ãês ‡X_ù²f8Ê`%(ÛN!œd =Â&n dXà@œÈgˆ¼Tä}µtp Ò+Á‚8·`“ÿÛ ,bÂáæ6Y‚ã8~ˆÈ²5TXà(gö:Àö‚ ¯=U@ý ù§ÑÓ@& $ZÒ™èìX.ˆ9£S¨xož¼d==³E°ýºt°Ë`åÖ¶þ)ÀÜKá4‘al/ú(ç¾…îOú„Ãåóm⓼MÖÙò̬$Xéu€#»‚-y´_˜ààkÀH§36y³µÉ›3Ôrû2ÀSr M‚°PÎj:€Ónθ¨ž>!Îí|`Ÿ[ä³y ÔZÊ€¡øË¨dÀ$ßPʯ2êçç,:.s„„ “üA"²I•+-‚0ôÊW"j'ªH°în@èùso5l&²'Ó–Ñy}Áv"Nº¨›ì\ š• ‰€b‘“ŽDh·§­ ¸æŒQé2ˆ‰åO²aÂ00ºèyh\Ìþ3 ºk9ðXš ${ì™%’œpv’f œûU±`Κ?Y³¶ºG¶›|²Šº²pØ”ÅÀ’ûtŸI¾xÌÛýǦÙeP©$QX×mò…«>Sˆ5$Ä@jk:8õûdË‚MÿÎ~ö;] Zý@û€»*oHñƒÀx`¨D 6uØJ",y¨™‹Omþߣ‡žP&þQÂõ%GžÈƒëöí¢2ëçÌûê€Ö³`ÛRò+Á¡w€¾Õt±;ZØ~‰ðÏNÎ|y׬ýÅãŸõO'iÉ>ñЇ€í;´_œõS q©óåf|+°þr@‹Ùã= ¤ÝOÊ×|f·6Š„›Ä¡*#€s%XÒ<õÀâû€¶+ò^Ø(G€T°ýV8¬ýZ á´ÏPûK±¢bp Pb@x0² HNò- ˜û] ñL ;h?xÿStÏ;†Qç)÷g",qÌœÄ*—ìú?¾ØpÝ ë©ãJ`ÆÅÎ¥ÙÂáß‘NûAwß\¸Õ×Jal’ýÎØg6 c½€Ï¶'øà}7-ÜòöO¥ÒU€ÀUç’„LØû°ý‡€‘™ðÉnà ¿\.{ãۀщ^ íß,;óNïì3怷7÷®~kþ_¬h(Üós.Æ:o´ú,«ž´]çŒãþ_ÂaÓ¯.AºLÜ£à܃ãÉ㊞íÜ58ÇîÁ%Jo‰;„°wo÷‡Ÿö¬„ÃæÝå$7º0ÒöõÚÅ€jéã$n >ƒ$3CûÎ×ßìºæPÿØCÅß àŒ=Oí 83O>=€œí¥š¯Å'xÁÉ@Í|›” òÑIsÊÙ…¤Q6Þ É3'q!¹åc •É)ÝÈŽE’·<»zë=k_xðžÂ?ñ|æ^r'PoruÔž¾Âv{†üâçÈ«pØÔ‹3Û ‡Õ.:¢eD€úµËwú/–?pëë=üÃïüì'÷N/Z2Š¢'ÒÿöM›^Zºtékϼ¼ù¡ÿ{åÈÙ—üÃ*G¬™ TµÀaîàäïÛ¿o÷n:¾9Á NqºwfVuÂñ‘G‰¾ %pã¦.φ¡ý—7Ô×^>sf‹øêÕWìš6mÚ{UU5ë3Yõƒ{äç£9Mã~qÎÿvgwÿ¹/½±íqÊÃ8ü¤-€–)²ùq –€Ã|Í·V‡à0oKY‚åÉ;cŸƒaj÷­ÚTí&¹Z‡G¢ll<¹¨·oh‘,Ë·©ªÊçÌ™s{N]×Y:› €lÇŽƒ ,ø»5oï|ºeZís'0SrÃÚÁéÒG@3–< ç\†Ã\µÎ5¿‘‚Ãä*—±ÉûF²>¼©ÃÁL-gk0K_¤ëIÄb1(äå„}ĵ•s^oùâ,ó¸Œò@–uww?cÆÓÿùôºÀk‘¹rZxnýãÈõ·åWƒ°,; ì|ÈI°ªÓãpîï{P`öýÇeãY7~µ·׿½ËûÏÅ{±™ØÜ¯àÀÞ.Ô%ºQ§ô?ZSSsáÊ•+gKgÏžÝ#I¬oz˲€ÏÓ”U•FL0à&U5N^þØÚÓ<·\†Ë›úà3_{“}$õ&`î×óö<¨$‚<áá[.ƒÃR½6yFëá0mÇ!‚™àFªðìî©ØžM×CDßÃås ÌYäɳÚà­m¦<}A_û•÷ ?ü0#[,D.k_MxÃuÏß_ƒÇÖîlJ¦ÕË-8L·µµ}%Il]ñËß6É7~—d‡à–ëÛþ/€y,ãÓílƬ‡ßùàÀ£fÉÌ#ü.À'¸¯o¦Z8E˜´oó`«¶5cÓa/¢Ñb‘ñ¥9 ~tž„óΫ›‡=ƒ@dè¢;îÝyðpó|ÅŠËÈ<$Àër¥ÊÕØX#e­ßÐ5 †&h1»¿ÿpô„¦ë‡ŽŒ¬Yñä&–¹újœo¼¬A–ÍJH V¦–YçŒÂ]`‚œ¯œ)]Æ¡±ŽÄ<Šzzõ¿Ó×!ͦ#eÔ$l-ï@ÏÀÔj s›2X6#…)~¦ 'ÜØp°/uMÁǃÂá0"ããø‹¥À7pâ¼/䱈1´‘}1¤‘O7n·5E`---›ù€ìyXæºýÞU^ÿ¨Y“üB!FÈø™ÓG×m<\÷`oß‘û~IBôO¯Â2u5<..Wž¼ËÛPÚ‹Á¸ýQŽ$ƒØ?ìBoHC:“E6›…ªf D>_À(‚òÔ7ð—O¼É°ÿ¤ó5ytKÊ`® ¯ªÆå®ž‚¨„1Žhúè#ÏÀÀÀ©z‹íè„8AµD¨N"ðz¢'5#|Þ¬Èïö5³ÞÞÞ›ÍX"o´f…áœ9®È½_ŸåŸµèBo°u!sû‚H Ä 1‚ªÐa<ÙŸÛ,‘”$=™ ÈB@fËÐ=\ 97Û7ž|ëlPhýB-f4$—ÛàJ+HíZ ‘ÎÐ}fü #•T³'eøyd}ººuzý¿÷ôôÔùLòå6D¸ÿ#E)S;ûÛÖ/Æ[•ïiš6àÛ„6¼n¹wÙ‰5÷¶_ùèu5SZÚT%-¥3 ·¦¦]Jr£ý½™pÿÇn#¾¿Z6â¾€WTy=Âð)àa¹Êâ"¸À àÝ9H$º0³[‚nìymj=.Q'?ïpúÇ=Ɉ¿*óx·ÌßöT*µÐãõ¾ÜqúÕïÏ>åì¯ . CSâ‘p÷ÞwoüÍ“£ªšöAW}† Ý[%¸VE¡dB¯—™Þà–ŒÚjŸA-Ƥ™ó;û¤*UQâ æàƒ#««ðeTá󻸧ûˆ±dÍ;ÏÊ.Öxƒ ÂÇ`¸‡”Hç¸r$*¼šgÚ;æÌ˜ÑÕÕ•…B÷xô³l‰„„% 3Ã0ƶd2™…þ@p×Wn¼wšËí5³íû]»÷¼±£sk”C—Oú2ã\e¤‰Äõ,3Ô´¤+)IW“2eoY£–gSî1-íc ÝÍËÝÙõ:$†;¦b›j¸LéÄ¥Þ>,Ø[O®›uá²YÏ·4øÓã±Ô´Ñhú„pLŸoHþ™ž@]£«ÆŒ†ÃêÎî÷^Öu}9€]íóü¯1f‰UK˜j•Ê$ÕÕ›¨&ßÖÜÜü z‡PÒétâ7ÞØ=É–†€Ó˜œÃàB7èH冚Û¶í¨†·zíÞ½ŸÌëììÜàL‚þÖ-KƒEc{ì,ºóy·ÛÝìõzUj™Ëår“Èñx|¿¢(küZÑ]@¼œ” !(„&ÂUUãæºšÚ¦—ÉÈ+8—SçŸ=cŒA¢xÜðñw7|Ôî÷W=‘ˆÆæmÛ¶mÀ5Öx™ð1d«*ÕäwTp 塳µÖs… û ¦p}ÖbNTfW¸0$’Ö—fiÆ7’J"‘8ãÀ¯Qyät.I’U!räó/ «•H,±nݺ6º~=-O¿sèÐ!ÿ¦M›ÆéÚ_ÈÚ&|§6Á “„Ý„NBб&E/Gºtÿ}2!àñx¾M°œÂ`å©§žºž’£›\“Q‚ääš: ¢rÎ #(_Èããã3ü~ÿ)4æ"j—Q‚b”¡ êÿÀ*ÂQ‹PÂ*ɱQ'AnAàs«Àý&®cŒ=L¤j«ªª†‰XŠÚ self.orig.size().width(): self.p = self.orig.scaled(rect.size().toSize()) else: self.p = QPixmap(self.orig) def createStates(objects, selectedRect, parent): for obj in objects: state = QState(parent) state.assignProperty(obj, 'geometry', selectedRect) parent.addTransition(obj.clicked, state) def createAnimations(objects, machine): for obj in objects: animation = QPropertyAnimation(obj, b'geometry', obj) machine.addDefaultAnimation(animation) if __name__ == '__main__': import sys app = QApplication(sys.argv) p1 = Pixmap(QPixmap(':/digikam.png')) p2 = Pixmap(QPixmap(':/akregator.png')) p3 = Pixmap(QPixmap(':/accessories-dictionary.png')) p4 = Pixmap(QPixmap(':/k3b.png')) p1.setGeometry(QRectF(0.0, 0.0, 64.0, 64.0)) p2.setGeometry(QRectF(236.0, 0.0, 64.0, 64.0)) p3.setGeometry(QRectF(236.0, 236.0, 64.0, 64.0)) p4.setGeometry(QRectF(0.0, 236.0, 64.0, 64.0)) scene = QGraphicsScene(0, 0, 300, 300) scene.setBackgroundBrush(Qt.white) scene.addItem(p1) scene.addItem(p2) scene.addItem(p3) scene.addItem(p4) window = QGraphicsView(scene) window.setFrameStyle(0) window.setAlignment(Qt.AlignLeft | Qt.AlignTop) window.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) window.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) machine = QStateMachine() machine.setGlobalRestorePolicy(QStateMachine.RestoreProperties) group = QState(machine) selectedRect = QRect(86, 86, 128, 128) idleState = QState(group) group.setInitialState(idleState) objects = [p1, p2, p3, p4] createStates(objects, selectedRect, group) createAnimations(objects, machine) machine.setInitialState(group) machine.start() window.resize(300, 300) window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/animation/appchooser/appchooser.qrc0000644000076500000240000000030313245231431024305 0ustar philstaff00000000000000 accessories-dictionary.png akregator.png digikam.png k3b.png PyQt5_gpl-5.10.1/examples/animation/appchooser/appchooser_rc.py0000644000076500000240000026262513245231431024655 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Thu May 2 16:14:11 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x13\x09\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ \xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\ \x1b\xaf\x01\x5e\x1a\x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ \xd7\x09\x17\x17\x15\x19\x49\x86\x70\x41\x00\x00\x12\x96\x49\x44\ \x41\x54\x78\xda\xed\x5b\x09\x74\x5c\xd5\x79\xfe\xee\x7b\xb3\x6b\ \xb4\x5a\xb2\x25\xd9\x96\x64\x63\x6c\x83\x31\x36\xb6\x81\x00\xe1\ \xb0\x34\x14\xc2\xda\x94\x86\x04\xd2\x90\x42\x72\x20\x5d\x20\x14\ \x68\x08\x4b\x48\x09\x87\xda\xad\x73\x52\x52\x02\x24\xad\x7b\x20\ \xe4\xb0\x95\xcd\x40\xb0\x1b\x56\x2f\x80\xb1\x2d\xdb\xd8\xb2\x6c\ \x6c\xd9\xb2\x2c\xc9\x1a\x4b\x1a\x69\xf6\xe5\x6d\xf7\xf6\x7f\x33\ \xef\xf0\xf4\x3a\x9a\x19\x1b\x26\x3d\xc9\x69\x7e\x9d\x4f\xf7\xbd\ \xfb\xee\x9b\x79\xdf\x77\xff\xe5\xbe\x2b\x1b\x7f\xb4\x3f\xda\xff\ \x6f\x63\x38\x0e\x1b\xbb\x05\x75\x52\xed\xf4\x8b\x5d\x33\x97\x5c\ \x06\xb7\xef\x3c\xa1\xa4\x3c\xd0\xb3\xc3\x42\xcd\x0c\x71\x35\x15\ \x12\x4a\x22\xc4\x53\xe3\x21\x91\x8d\x85\x84\xc0\x10\x80\x10\xe1\ \xe8\xd4\x9f\x43\xf9\x83\x16\x40\xfc\xd8\x7f\x95\x68\x5d\x76\x37\ \xe7\x58\xc6\xd3\x51\x99\x08\x42\x70\x01\xe1\x0e\x12\xaa\xc0\x65\ \x3f\x84\xec\x81\x60\x6e\x82\x0b\x90\x5c\x10\x82\x03\xdc\x00\xd7\ \xd2\x02\xba\x32\x2e\x0c\x6d\x48\xe8\x6a\x48\x68\x4a\x48\xe8\xd9\ \x10\x57\xd3\x24\x54\x7c\x48\x68\xd9\x90\x30\x85\x12\x08\x4d\x7f\ \x0c\x99\xdf\x3b\x01\xc4\x03\x9e\x3f\xc7\xf9\xf7\xbf\x88\xe6\x45\ \xcc\x24\x04\xae\x03\x26\x39\x43\x05\x32\x11\x80\xc4\x80\x9a\xcc\ \x43\xcf\x40\x68\x19\xf0\x6c\x82\x90\x02\x57\x92\xe0\xa6\x50\xb2\ \x0f\x5c\x48\x04\x53\x13\x4e\xd0\xc1\x75\x2d\x27\x14\x40\xd7\x0d\ \x03\x24\x0a\x41\x8d\x0a\xae\x87\x08\x43\xc2\xa0\x36\x07\x95\x04\ \x33\xa1\x0c\x09\x6e\x84\x00\x84\x3a\x1e\x47\xf2\xff\x4e\x80\xa7\ \x2e\xee\xc4\x99\xb7\x2c\x85\xb0\xc8\x73\x23\x07\xc7\xb9\x28\xd6\ \xa7\xe7\xa1\x98\xe2\x64\xed\x3e\xd3\x84\x00\x57\x33\xa4\xa3\x42\ \xc8\x82\x73\x0e\x03\x6e\x70\x12\xd6\x50\x32\x39\x01\x0d\x12\x52\ \xcf\xc4\x01\xba\x26\xcc\x1f\x6e\x80\x3c\x89\xa0\x27\x68\x60\x4e\ \x90\x1c\x04\x0f\x01\x3c\xc4\x64\x98\xd8\xd9\x71\x29\xba\xd9\xc5\ \x10\x95\x11\xe0\x85\x6b\x53\x58\x78\x6d\x20\x3f\xf3\x46\x09\x01\ \x9c\x62\x38\xc6\x8b\xdc\x35\x1b\xa2\xc8\x58\xf2\x1e\x40\x00\x14\ \x4e\x90\xdc\x80\xcb\x47\xf0\xe7\x3c\x46\xd7\x75\x18\x9a\x96\xf3\ \x20\x9d\x33\x12\x27\x09\x3d\x35\x06\x75\xa4\x07\x7a\xa2\x0f\xae\ \x00\x03\xf3\xe4\x6f\x37\x14\xf1\x3a\x35\xdf\xe8\x58\x81\x04\xca\ \x98\x0b\x65\x8d\xb9\x72\x0f\x97\x8b\x69\x82\x63\xc6\xb9\x89\x82\ \x63\xc7\x78\x61\x58\x2d\xb7\xfa\x8b\x8c\x35\x21\xc9\xf9\x3e\xcd\ \xf4\x96\xd4\xa7\xe2\x48\x34\xc6\x63\x0b\x95\x0f\x3f\xd9\x0b\xd4\ \xd7\x00\xb3\x2e\x85\xde\x34\x97\x9c\xec\x03\xe8\x43\xab\xc1\xb3\ \x06\xd4\x38\xae\xc8\x8c\x88\x55\xa2\x1b\x5f\x63\x0b\x50\xd2\x24\ \x94\x35\x0e\x88\x89\x04\x78\x01\x81\xa2\xd7\x45\x31\x91\x8a\x7c\ \xd6\xb1\x7e\xb6\x69\x5a\x1a\x48\x1c\x01\x0e\xbf\x0f\xd7\xbe\x35\ \xa8\x5a\xba\x02\x9e\xe9\xcb\x00\x96\x1f\x0a\xce\xbe\xda\xf3\x38\ \x4e\x00\x3e\xaf\x00\x42\x4c\x70\xdd\x22\x33\x69\x79\x44\xd9\x87\ \xe7\xe5\xbd\x80\x50\xfe\xb3\xed\x6b\x79\x11\x0e\xbc\x09\xac\xbd\ \x13\x7a\x66\x16\x52\x43\x02\xe9\x61\x01\x35\x29\x98\xa1\x62\x49\ \x25\x04\x28\x7c\x38\xce\x8b\xcc\x6c\x31\x61\x8e\x91\x38\x2f\x15\ \x5a\x93\x08\x13\x27\xf2\xe9\x31\xe4\xec\x93\xd5\x30\x12\x5e\xa4\ \x8f\x9a\xe4\xf3\xb7\x42\xc0\x5f\x81\x1c\x20\x0a\xc9\xd8\x84\x4a\ \x92\x71\x1e\x97\x0a\x25\x5e\x46\x9c\x42\xf1\x6c\xf2\xf6\x44\x31\ \xdd\x2c\xaf\xd6\x23\xc3\xb2\xcf\x2d\x40\xa1\xdb\x15\x78\x41\xb1\ \xd8\x75\x1e\x17\x0f\x95\xc2\x44\x59\xc6\xc3\xe2\x83\x44\x3e\x8c\ \x02\xe3\x1a\x84\xc5\xbc\x72\x02\x40\x14\xcd\xe8\x36\x81\xe3\x4d\ \x88\x45\xae\x17\x92\x2d\x1c\x1f\x1b\x70\x90\x77\x98\xa1\x43\xa0\ \xd2\x02\x08\x41\x30\x8e\x3d\xa3\x17\x86\x4a\xf9\x24\xc8\x8f\x31\ \x29\xc6\x4b\x90\x27\x13\xa6\x07\x4c\x9c\xb7\x0a\x09\xe0\x24\x5b\ \xbe\xd4\x95\x5f\x03\x94\xff\xac\x42\x0f\x8b\xf5\x03\xa9\x51\x94\ \x34\x43\xb7\x89\x57\x38\x04\x2c\x18\x05\x0f\x57\x9e\x4c\x91\x6b\ \x28\xa8\x26\xc5\x45\x8d\x1d\x2e\x4f\x1e\xc8\x2f\x93\xe1\x14\xa0\ \x12\x65\xd0\x41\xb6\x10\x45\x32\x36\x6c\xa2\xb9\x7e\x10\x98\x75\ \x0e\x6e\x9d\x13\x60\xf7\x4d\x9a\x10\xcb\xcf\xbc\x33\x09\x02\x36\ \x44\x25\x04\x40\xc9\x44\x35\xb9\x10\xb0\x88\xb1\x63\x24\x6e\xc2\ \x3e\xb6\xbf\x27\x6a\xce\xfc\x08\x8e\xd5\x04\xd7\x2d\xe2\x16\x2a\ \xe4\x01\x65\x56\x7a\x0e\x22\xc5\x88\x95\x12\xc3\xea\x73\x0a\x87\ \x58\x5f\x01\xf9\xb2\x66\x38\xca\x60\x25\x05\x28\x1f\xdb\x4e\x21\ \x9c\x64\x0a\x3d\xc2\x26\x6e\x0b\x64\x58\xe0\x40\x9c\xc8\x67\x88\ \xbc\x54\xe4\x7d\xb5\x74\x15\x70\xa0\xd2\x2b\xc1\x82\x38\xb7\x60\ \x93\x13\xff\xdb\x0b\x2c\x62\xc2\xe1\xe6\x36\x59\x82\xe3\x38\x7e\ \x88\xc8\x0f\x03\xb2\x35\x54\x58\xe0\x28\x67\xf6\x3a\xc0\xf6\x82\ \x0a\xaf\x04\x3d\x55\x40\xfd\x09\xf9\xa7\xd1\xd3\x40\x26\x0c\x24\ \x8f\x02\x5a\xd2\x99\xe8\xec\x58\x2e\x14\x88\x39\x12\xa3\x53\xa8\ \x78\x6f\x9e\xbc\x64\x3d\x3d\xb3\x45\xb0\xfd\xba\x74\x15\xb0\xcb\ \x60\xe5\xd6\x01\xb6\x08\xfe\x29\xc0\xdc\x4b\xe1\x34\x91\x17\x61\ \x6c\x2f\x10\xfa\x28\xe7\xbe\x85\xee\x4f\x10\x13\xfa\x84\xc3\xe5\ \xf3\x6d\xe2\x90\x93\xbc\x4d\xd6\xd9\xf2\x12\xcc\xac\x24\x58\xe9\ \x75\x80\x23\xbb\x17\x1a\x03\x82\x2d\x79\xb4\x5f\x98\x17\xe0\xe0\ \x6b\xc0\x48\xa7\x33\x1c\x18\x01\x36\x79\xb3\xb5\xc9\x9b\x33\x7f\ \xd4\x72\xfb\x32\x02\xc0\x1e\x53\x72\x1d\x20\x08\x15\x4d\x82\xb0\ \x50\xce\x6a\x3a\x80\xd3\x6e\x05\xce\xb8\x17\xa8\x9e\x3e\x21\xce\ \xed\x7c\x60\x9f\x5b\xe4\xb3\x16\x79\x09\xd4\x5a\x90\xca\x80\xa1\ \xf8\xcb\x90\xa8\x64\x15\xc0\x24\x19\xdf\x50\xca\xaf\x32\xea\xe7\ \x01\xe7\x2c\x07\x3a\x2e\x73\x84\x84\x0d\x93\xfc\x41\x22\x1f\xb2\ \x49\x95\x03\x2b\x2d\x82\x30\xf4\xca\x57\x01\x22\x6a\x27\xaa\x48\ \x0f\xb0\xee\x6e\x40\xe8\xf9\x73\x6f\x35\x10\x6c\x26\xb2\x27\x02\ \xd3\x96\xd1\x79\x7d\xc1\x76\x22\x4e\xba\x01\xa8\x9b\x03\xec\x5c\ \x09\x18\x9a\x95\x00\x09\x89\x03\x80\x62\x91\x17\x93\x00\x8e\x44\ \x68\x1b\xb7\xa7\xad\x20\x1c\xb8\xe6\x8c\x16\x51\xe9\x32\x88\x89\ \xe5\x4f\x07\xb2\x61\xc2\x30\x30\xba\x1d\xe8\x79\x16\x68\x5c\x04\ \xcc\xfe\x33\xa0\xba\x1d\x0e\x6b\x39\x17\xf0\x90\x58\x9d\x14\x16\ \x9a\x0a\x24\x7b\xec\x99\x17\x25\x92\x9c\x70\x10\x76\x92\x66\x13\ \x20\x9c\x1e\x90\xfb\x55\xb1\x10\x60\x02\xce\x9a\x3f\x59\x19\xb3\ \xb6\xba\x47\xb6\x00\x9b\x7f\x00\x7c\xb2\x8a\xba\xb2\x70\xd8\x94\ \xc5\xc0\x92\xfb\x81\x74\x9f\x49\xbe\x78\xcc\xdb\xfd\xc7\x17\x1a\ \xa6\xd9\x65\x90\x50\xa9\x24\x08\x51\x58\xd7\x6d\xf2\x85\xab\x3e\ \x53\x88\x81\x35\x24\xc4\x1d\x40\x6a\x10\x0e\x6b\x3a\x13\x38\xf5\ \xfb\x05\x64\xcb\x82\x4d\x1a\xff\xce\x7e\xf6\x3b\x5d\x09\x5a\x04\ \xfd\x8d\x40\xfb\x05\x80\xbb\x2a\x17\x6f\x48\x0f\x01\xf1\x83\xc0\ \x78\x17\x60\xa8\x13\x44\xa0\x36\x75\x18\xd8\x4a\x22\x2c\x79\x10\ \xa8\x99\x8b\x4f\x6d\xfe\xdf\x00\xa3\x1f\x00\x87\x9e\x01\x50\x26\ \xfe\x51\xc2\xf5\x25\x47\x9e\xc8\x83\xeb\xf6\xed\xa2\x32\xeb\x00\ \xe7\xcc\xfb\xea\x80\xd6\xb3\x60\xdb\x52\x02\xf2\x2b\xc1\xa1\x77\ \x80\xbe\xd5\x74\x1c\xb1\x17\x3b\x5a\x14\xd8\x7e\x17\x89\xf0\xcf\ \x4e\x11\xce\x7c\x04\x18\x79\xd7\xac\xfd\xc5\xe3\x9f\x17\xf5\x4f\ \x27\x69\xc9\x3e\x17\x10\x16\xf1\x8a\x87\x80\xed\xee\x93\x9a\x3b\ \x08\xb4\x5f\x05\x9c\xf5\x53\xa0\x71\xa9\xf3\xe5\x66\x7c\x2b\xb0\ \xfe\x72\x40\x8b\xd9\xe3\x3d\x0d\xa4\xdd\x4f\xca\xd7\x7c\x66\xb7\ \x36\x8a\x84\x06\x9b\xc4\xa1\x2a\x23\x80\x73\x25\x58\xd2\x3c\xf5\ \xc0\xe2\xfb\x80\xb6\x2b\xf2\x5e\x90\xd8\x07\x28\x47\x80\x54\x0f\ \xb0\xfd\x56\x38\xac\xfd\x5a\xa0\xe1\xb4\xcf\x50\xfb\x4b\xc2\xb1\ \x12\x14\xa2\x62\x02\x70\x0b\x02\x50\x62\x40\x78\x17\x30\xb2\x0d\ \x48\x0e\x4e\xf2\x2d\x0c\x98\xfb\x5d\xa0\xf1\x4c\x20\x3b\x68\x3f\ \x78\xff\x53\x74\xcf\x3b\x13\x86\x51\xe7\x29\xf7\x1d\x67\x22\x2c\ \x71\xcc\x9c\xc4\x05\x2a\x97\x03\xec\xfa\x3f\xbe\x17\xd8\x70\x1b\ \x00\xdd\x0a\x09\xeb\x05\xa9\xe3\x4a\x60\xc6\xc5\xce\xa5\xd9\xc2\ \x1f\x11\xe1\xdf\x02\x91\x4e\xfb\x41\x77\xdf\x05\x5c\xb8\xd5\x1e\ \xd7\x4a\x61\x13\x6c\x03\x92\xfd\xce\xd8\x67\x36\x0a\x63\xbd\x04\ \x80\xcf\xb6\x27\xf8\xe0\x7d\x37\x2d\xdc\xf2\xf6\x4f\xa5\xd2\x55\ \x80\xc0\x55\xe7\x92\x18\x84\x4c\x08\xd8\xfb\x18\xb0\xfd\x87\x80\ \x91\x99\xf0\xc9\x6e\xe0\x0b\xbf\x06\x5c\x2e\x7b\x16\xe3\xdb\x80\ \xd1\x89\x5e\x20\x03\xed\xdf\x2c\x3b\xf3\x4e\x14\xef\x17\xec\x33\ \xe6\x80\xb7\x37\xf7\xae\x7e\x6b\xc3\xbe\x5f\x90\x08\xac\x68\x0e\ \x28\xdc\xf3\x73\x2e\x90\xc6\x3a\x81\x0f\x6f\xb4\xfa\x2c\xab\x9e\ \x0f\xb4\x5d\xe7\x8c\xe3\xfe\x5f\xc2\x61\xd3\xaf\x2e\x41\xba\x4c\ \xdc\xa3\xe0\xdc\x0e\x83\xe3\xc9\x01\xe3\x8a\x9e\xed\xdc\x35\x38\ \x7f\xc7\xee\xc1\x7f\x25\x11\x4a\x6f\x89\x81\x3b\x84\xb0\x77\x6f\ \xf7\x00\x87\x9f\x03\xf6\xac\x84\xc3\xe6\xdd\xe5\x24\x37\xba\x06\ \x30\xd2\xf6\xf5\xda\xc5\x80\x7f\x6a\x01\xe9\xe3\x24\x6e\x0b\x20\ \x3e\x83\x07\x24\x33\x19\x43\x81\xfb\xce\xd7\xdf\xec\xba\xe6\x50\ \xff\xd8\x43\xc5\xdf\x06\x09\x81\x16\xe0\x8c\x1f\x03\x17\x3d\x4f\ \xed\x0a\x20\x38\x33\x4f\x3e\x3d\x80\x9c\xed\xa5\x9a\xaf\xc5\x27\ \x78\xc1\xc9\x40\xcd\x7c\x9b\x94\x20\xf2\xd1\x0f\x9d\x49\x73\xca\ \xd9\x85\xa4\x51\x36\xde\x0b\xc9\x33\x27\x71\x21\xb9\xe5\x63\x12\ \x20\x95\xc9\x1a\x29\xdd\xc8\x8e\x45\x92\xb7\x3c\xbb\x7a\xeb\x3d\ \x6b\x5f\x78\xf0\x9e\xc2\x3f\x8d\xf1\x7c\xe6\x5e\x72\x27\x50\x6f\ \x12\x72\x01\x75\xd4\x9e\xbe\xc2\x76\x7b\x86\xfc\xe2\xe7\xc8\xab\ \x70\xd8\xd4\x8b\x9d\x33\x1b\xdb\x0c\x87\xd5\x2e\x3a\x0e\xa2\x65\ \x44\x80\x05\xfa\xb5\xcb\x77\xfa\x2f\x96\x3f\x70\xeb\xeb\x8f\x3d\ \xfc\xc3\xef\xfc\xec\x27\xf7\x4e\x2f\x5a\x05\x32\x8a\xa2\x27\xd2\ \x19\xff\xf6\x4d\x9b\x5e\x5a\xba\x74\xe9\x6b\xcf\xbc\xbc\xf9\xa1\ \x0f\xff\x7b\xe5\xc8\xd9\x97\xfc\xc3\x2a\x47\x12\xac\x99\x0d\x54\ \xb5\xc0\x61\xee\x1a\xe0\xe4\xef\x01\xdb\xbf\x6f\xf7\x8d\x6e\x00\ \x3a\xbe\x39\xc1\x0b\x4e\x71\xba\x77\x66\x1f\x1c\x56\x75\xc2\xf1\ \x91\x47\x89\xbe\x09\x25\x70\xe3\xa6\x2e\xcf\x86\xa1\xfd\x97\x37\ \xd4\xd7\x5e\x3e\x73\x66\x8b\xf8\xea\xd5\x57\xec\x9a\x36\x6d\xda\ \x7b\x55\x55\x35\xeb\x33\x59\xf5\x83\x7f\x7b\xe4\xe7\xa3\x39\x01\ \x14\x4d\xe3\x14\x06\x7e\x90\x71\xce\xff\x76\x67\x77\xff\xb9\x2f\ \xbd\xb1\xed\x71\xca\x07\xc3\x38\xfc\xa4\x2d\x80\x96\x29\xb2\xf9\ \x71\x0a\x1c\x96\x19\x80\xc3\x7c\xcd\xce\x87\x56\x87\xe0\x30\x6f\ \x4b\x59\x82\xe5\xc9\x3b\x63\x9f\x83\x61\x6a\x9d\xf7\xad\xda\x54\ \xed\x02\x26\xb9\x5a\x87\x47\xa2\x6c\x6c\x3c\xb9\xa8\xb7\x6f\x68\ \x91\x2c\xcb\xb7\xa9\xaa\xca\xe7\xcc\x99\x73\x7b\x4e\x00\x5d\xd7\ \x59\x3a\x9b\x0d\x80\x6c\xc7\x8e\x1d\x83\x0b\x16\x2c\xf8\xbb\x35\ \x6f\xef\x7c\xba\x65\x5a\xed\x73\x27\x9d\x30\x53\x0e\x72\xc3\xda\ \xc1\xe9\x07\xd2\x47\x81\x40\x33\x1c\x96\x3c\x0c\xe7\x02\x5c\x86\ \xc3\x5c\xb5\xce\x35\xbf\x91\x82\xc3\xe4\x2a\x1c\x97\xb1\xc9\xfb\ \x46\xb2\x3e\xbc\x1f\xa9\xc3\xc1\x4c\x2d\x0e\x67\x6b\x30\x1e\x4b\ \x5f\xa4\xeb\x49\xc4\x62\x31\x28\xe4\xe5\x84\x7d\xc4\xb5\x95\x73\ \x5e\x6f\xf9\xe2\x2c\xf3\x17\xb8\x10\x8c\xf2\x40\x10\x96\x75\x77\ \x77\x3f\x63\x18\xc6\xd3\xff\xf9\xf4\xba\xc0\x6b\x91\xb9\x72\x5a\ \x78\x00\x6e\xfd\xe3\xc8\xf5\xb7\xe5\x57\x83\xb0\x2c\x3b\x0a\xec\ \x7c\xc8\x49\xb0\xaa\x03\x0e\xd3\xe3\x70\xee\xef\x7b\x50\x60\xf6\ \xfd\xc7\x65\xe3\x59\x37\x7e\xb5\xb7\x19\xd7\xbf\xbd\x00\xcb\xfb\ \xcf\xc5\x7b\xb1\x99\xd8\xdc\xaf\xe0\xc0\xde\x2e\xd4\x25\xba\x51\ \xa7\xf4\x3f\x5a\x53\x53\x73\xe1\xca\x95\x2b\x67\x90\x00\x4b\x67\ \xcf\x9e\xdd\x23\x49\x12\xac\x6f\x7a\xcb\x05\xb2\x80\xcf\xd3\x94\ \x55\x95\x46\x4c\x30\x12\xe0\x26\x55\x35\x4e\x5e\xfe\xd8\xda\xd3\ \x3c\xb7\x5c\x86\xcb\x9b\xfa\xe0\x33\x5f\x7b\x93\x7d\x24\xf5\x26\ \x60\xee\xd7\xf3\x1a\xf6\x3c\x01\xa8\x24\x82\x3c\xe1\xe1\x5b\x2e\ \x83\xc3\x52\xbd\x36\x79\x46\x90\xeb\xe1\x30\x6d\x1c\x10\xc7\x21\ \x82\x99\xe0\x46\xaa\xf0\xec\xee\xa9\xd8\x12\x9e\x06\x4d\xd7\x10\ \x8f\x8f\x43\x44\xdf\xc3\xe5\x73\x0d\xcc\x59\xe4\xc3\x89\xb3\xda\ \xe0\xad\x6d\xa6\x3c\x7d\x41\x5f\xfb\x95\xf7\x0c\x03\x10\x0f\x3f\ \xfc\x30\x23\x5b\x2c\x44\x2e\x6b\x5f\x4d\x78\xc3\x75\xcf\xdf\x5f\ \x83\xc7\xd6\xee\x6c\x4a\xa6\xd5\x16\xcb\x2d\x38\x01\x07\x0f\x1e\ \x4c\xb7\xb5\xb5\x7d\x25\x1a\x49\x6c\x5d\xf1\xcb\xdf\x36\xc9\x37\ \x7e\x11\x97\x64\x87\xe0\x96\x00\x16\xeb\x07\xdb\xfe\x2f\x80\x79\ \x2c\xe3\xd3\xed\x6c\xc6\xac\x87\xdf\xf9\x03\xe0\xc0\xa3\x66\xc9\ \xcc\x23\xfc\x2e\xc0\x27\xb8\xaf\x6f\x0e\x1c\xa6\x5a\x02\x38\x45\ \x98\xb4\x6f\xf3\x60\x10\xab\xb6\x35\x63\xd3\x61\x2f\xa2\xd1\x08\ \x62\x91\x8f\xf1\xa5\x39\x0a\x7e\x74\x9e\x84\xf3\x17\xce\x04\xab\ \x9b\x87\x3d\x83\x40\x64\xe8\x10\xa2\x07\x3b\x11\xee\xdd\x79\xf0\ \x9d\x70\xf3\x01\x00\x7c\xc5\x8a\x15\xcb\xc8\x1b\x3c\x24\xc0\xeb\ \x00\x72\xa5\xca\xd5\xd8\x58\x23\x65\x15\xad\xdf\xd0\x35\x0e\xa0\ \x86\x90\x26\x68\x04\x31\xbb\xbf\xff\x70\xf4\x84\xa6\xeb\x87\x8e\ \x8c\xac\x59\xf1\xe4\x26\x96\xb9\xfa\x6a\x9c\x6f\xbc\x08\x8f\xac\ \x41\x96\xcd\x4a\x48\xa0\x56\xa6\x96\x59\xe7\x8c\x13\xc2\x5d\x60\ \x11\x82\x9c\xaf\x9c\x29\x5d\xc6\xa1\xb1\x00\x8e\xc4\x3c\x18\x8a\ \x7a\x10\x7a\xf5\xbf\x10\xd3\xd7\x21\xcd\xa6\x23\x65\xd4\x01\x24\ \x6c\x2d\xef\x40\x8d\xcf\xc0\xd4\x6a\x0d\x73\x9b\x32\x58\x36\x23\ \x85\x29\x7e\x1d\xa6\x0d\x27\xdc\xd8\x70\xb0\x1a\x2f\x75\x4d\xc1\ \xc7\x83\x12\xc2\xe1\x30\x22\xe3\xe3\xf8\x8b\xa5\xc0\x03\x37\x07\ \x70\xe2\xbc\x2f\xe4\x12\xb1\x88\x1d\x81\x31\xb4\x1d\x91\x7d\x31\ \xa4\x14\x91\x4f\x37\x6e\xb7\x35\x45\x60\x2d\x2d\x2d\x17\x9b\xf9\ \x80\xec\x79\x58\xe6\xba\xfd\xde\x55\x1c\x5e\xff\x12\xa8\x59\x93\ \xfc\x14\x42\x15\x21\x46\xc8\x10\xf8\x99\xd3\x47\xd7\x6d\x3c\x5c\ \xf7\x60\x6f\xdf\x91\xfb\x1f\x7e\x49\x42\xf4\x4f\xaf\xc2\x32\x75\ \x35\x3c\x2e\x1d\x2e\x57\x9e\xbc\xcb\x12\x81\x13\xdb\x50\xda\x8b\ \xc1\xb8\x17\xfd\x51\x1f\x8e\x24\x83\xd8\x3f\xec\x42\x6f\x48\x43\ \x3a\x93\x45\x36\x9b\x85\xaa\x66\x20\x44\x1a\x3e\x5f\x06\x81\xc0\ \x28\x82\xf2\x18\x3c\x48\x23\x6f\x12\x09\xe4\x42\x46\xf7\xc0\xef\ \xaf\xc7\xec\x66\x2f\x3d\x5a\x35\x14\xe1\x43\x86\xee\x1f\x0a\x8d\ \x20\x3c\x36\x86\xa0\x17\x78\xed\x8e\x7a\x5c\xf2\x27\xe7\x03\xb5\ \x27\x43\x28\x29\x18\x07\xd7\xe6\x04\x10\x06\xc0\x49\x79\xc1\x04\ \x84\xe0\x74\xec\xca\x15\x5f\xf3\xbb\xeb\xeb\xeb\xaf\xef\xeb\xeb\ \xcb\x80\x6e\x77\xbe\x0d\x2a\xf4\xe9\x00\xb7\x50\x47\xf0\x13\xa2\ \x9b\x81\x44\xbb\x0e\x76\x61\x7b\xf4\xb9\xf7\x0e\xd7\xce\x3e\xd4\ \x37\xf0\x97\x4f\xbc\xc9\xb0\xff\xa4\xf3\x35\x79\x74\x4b\xca\x60\ \xae\xa0\xaf\xaa\xc6\xe5\xae\x9e\x82\x81\xa8\x84\x81\x31\x8e\x68\ \x3c\x8d\x54\x2a\x83\x44\x32\x8d\x80\x34\x88\x93\x5a\x75\x5c\xbb\ \x54\xc2\xbc\x19\x40\x5b\xb3\x84\xf6\xd6\x20\x9a\xbf\xf4\x22\x24\ \x33\x51\xba\x48\xf3\x9d\x37\x83\x99\x9b\x26\xba\x02\x28\x49\x30\ \x35\x85\xa7\xd6\xeb\xb8\xf1\x3f\x52\x18\x19\xe1\x85\xc9\x9e\x01\ \xab\x6f\x0b\xe0\xbc\x2b\xbe\x05\xe1\x69\x82\x48\x0e\x43\xdb\xf7\ \x12\x90\x49\x12\x61\x19\x0c\xc8\x91\xe7\xd6\x96\x92\x90\x68\xa6\ \x00\xf6\xca\x2b\xaf\xdc\x10\x08\x04\x66\x47\xa3\xd1\x55\x20\x5e\ \xc5\x0a\x8a\x8b\x10\x24\x34\x10\xbc\x84\x64\x73\x10\x89\xf3\xe7\ \x81\x35\x04\x51\xfb\x9b\xfd\x0d\x77\x29\xdc\xfd\xdd\xd6\xd6\x56\ \xf4\xf7\xf7\xa1\x2a\xe0\x05\x37\x34\x84\x86\x23\x30\x0c\x8e\x69\ \xb5\x14\x87\xf3\x25\x9c\x3b\x8f\xe1\x82\xa5\x4d\x68\x9f\x3d\x8b\ \x2a\x5c\x13\x98\xbf\x01\xcc\x5b\x0b\xe6\x0e\x82\x41\x03\xb8\x92\ \x03\x33\xb2\x10\x6a\x14\x2c\x3d\x08\xa4\x87\x73\xdb\xec\x4c\xcb\ \xe2\xd0\x51\x81\xb3\x97\xd7\x62\x24\x1c\x01\x59\x6e\xc6\x3b\x1a\ \x25\xec\x09\x01\xa7\xb5\x09\x7c\xf0\xb3\x0b\x20\xd1\xeb\x37\x4f\ \x47\xa0\xed\x79\x06\x22\x9b\xb4\x37\xaa\x75\x81\x4d\x07\x38\x14\ \x8d\x83\x09\xae\x27\x1b\x16\x2f\x7c\xba\xa7\x4e\x27\xf2\x5b\x3e\ \xfa\xe8\x23\xcf\xc0\xc0\xc0\xa9\x00\x7a\x8b\xed\x07\xe8\x84\x38\ \x41\xb5\x44\xa8\x1d\x4e\x22\xf0\x7a\x17\xa2\x27\x35\x23\x7c\xde\ \xac\xc8\x9d\xef\xf6\x35\xb3\xde\xde\xde\x9b\xcd\x58\x22\x6f\xb4\ \x66\x85\xe1\x9c\x39\xae\xc8\xbd\x5f\x9f\xe5\x9f\xb5\xe8\x42\x6f\ \xb0\x75\x21\x73\xfb\x82\x48\x0b\x05\xc4\x90\xa0\x10\x31\x82\xaa\ \xd0\x61\x14\x3c\xd9\x9f\xdb\x2c\x91\x94\x10\x24\x3d\x01\x99\x09\ \xc8\x42\x40\x12\x66\xcb\xd0\x3d\x5c\x0d\x0e\x39\x37\xdb\x37\x9e\ \x03\x7c\xeb\x6c\x50\x68\x00\x7f\xfd\x42\x2d\x66\x34\x24\x10\x97\ \xdb\xe0\x4a\x2b\x48\xed\x5a\x0d\x91\xce\xd0\x7d\x66\xfc\x09\x08\ \x9d\x23\x95\x11\x54\x1a\x01\xb3\x27\x65\xf8\x1e\x79\x64\x7d\xba\ \xba\x75\x7a\xfd\xbf\xf7\xf4\xf4\xd4\x11\xf9\x1b\x4c\xf2\xe5\x36\ \x44\xb8\x15\xff\x23\x04\x45\x00\x8d\x29\x15\x53\x3b\xfb\x11\xdb\ \xd6\x2f\xc6\x5b\x1b\x95\xef\x69\x9a\x36\x04\xe0\xdb\x84\x36\x02\ \xbc\x6e\xb9\x77\xd9\x89\x35\xf7\xb6\x5f\xf9\xe8\x75\x35\x53\x5a\ \xda\x54\x25\x2d\xa5\x33\x09\xb7\xa6\xa6\x5d\x4a\x72\x14\xa3\xfd\ \xbd\x99\x70\xff\xc7\x6e\x23\xbe\xbf\x5a\x36\xe2\xbe\x80\x57\x54\ \x79\x3d\xc2\x13\xf0\x08\x29\xe0\x61\xb9\xca\xe2\x22\xb8\x19\xc0\ \x0d\xe0\xdd\x81\x39\x48\x24\xba\x30\xb3\x1e\x5b\x82\x6e\xec\x79\ \x6d\x07\x6a\x3d\x2e\x51\x27\x04\x3f\xef\x70\x18\xfa\xc7\x3d\x11\ \xc9\x88\xbf\x2a\xf3\x78\x04\x01\xb7\xcc\x3c\x4c\x80\x71\x01\x45\ \x15\x62\xdf\x30\xd4\xa3\x09\x36\x7a\x28\xea\xde\xf8\xe1\xa0\xdf\ \x35\xeb\xc4\xa6\xd5\x54\xd1\x9a\xf7\xee\xdd\x7b\x37\x80\x5f\x1d\ \xeb\x8e\x90\xb0\xbc\x60\xdc\x6a\x1b\x09\x0d\x02\x08\x1c\x09\x8f\ \x87\x01\xac\x90\x65\xf9\x9f\x7c\x3e\xdf\xf6\x54\x2a\xb5\xd0\xe3\ \xf5\xbe\xdc\x71\xfa\xd5\xef\xcf\x3e\xe5\xec\xaf\x09\x2e\x06\x0c\ \x43\x53\xe2\x91\x70\xf7\xde\x1d\x1b\x77\x6f\xfc\xcd\x93\xa3\xaa\ \x9a\xf6\x41\x57\x7d\x86\x11\x0c\x08\xdd\x5b\x25\xb8\x56\x45\xa1\ \x13\x64\x42\xaf\x97\x99\xde\xe0\x96\x8c\xda\x6a\x9f\x41\x2d\x0f\ \xc6\xa4\x99\xf3\x3b\xfb\xa4\x2a\x55\x51\xe2\x0b\xe6\xe0\x0e\x83\ \x23\xab\xab\xf0\x65\x54\xe1\xf3\xbb\xb8\xa7\xfb\x88\xb1\x64\xcd\ \x3b\x9d\xcf\xca\x2e\xd6\x00\x78\x83\x0c\xc2\xc7\x60\xb8\x05\x87\ \x94\x48\xc3\x08\xa7\xb8\x72\x24\x2a\xbc\x9a\x67\xda\x17\x3b\xe6\ \xcc\x98\xd1\xd5\xd5\x95\x08\x85\x42\xf7\x00\x78\xf4\xb3\x6c\x89\ \x19\x84\x84\x25\xc2\x14\x0b\x33\x08\x11\xc3\x30\xc6\x1a\x1a\x1a\ \xb6\x64\x32\x99\x85\xfe\x40\x70\xd7\x57\x6e\xbc\x77\x9a\xcb\xed\ \x35\xb3\xed\xfb\x5d\xbb\xf7\xbc\xb1\xa3\x73\x6b\x94\x43\x97\x1a\ \x4f\xfa\x32\xe3\x5c\x65\xa4\x89\xc4\xf5\x2c\x33\xd4\xb4\xa4\x2b\ \x29\x49\x57\x93\x32\x65\x6f\x59\xa3\x96\x67\x53\xee\x31\x2d\xed\ \x19\x1c\x63\x0b\xdd\xcd\xcb\x1e\xdd\xd9\xf5\x3a\x24\x86\x07\x3b\ \xa6\x62\x9b\x00\x1d\x6a\x90\xb8\x4c\xe9\xc4\xa5\xde\x3e\x2c\xd8\ \x5b\x4f\xae\x1f\x9b\x75\xe1\xb2\x59\xcf\xb7\x34\xf8\xd3\xe3\xb1\ \xd4\xb4\xd1\x68\xfa\x84\x70\x4c\x9f\x6f\x48\xfe\x99\x9e\x40\x5d\ \xa3\xab\xc6\x1f\x8c\x86\xc3\xea\xce\xee\xf7\x5e\xd6\x75\x7d\x39\ \x80\x5d\x04\xed\xf3\xfc\xaf\x31\x66\x89\x55\x4b\x98\x6a\x95\xca\ \x24\xd5\xd5\x9b\xa8\x26\xdf\xd6\xdc\xdc\xfc\x0d\x7a\x87\x50\xd2\ \xe9\x74\xe2\x8d\x37\xde\xd8\x3d\xc9\x96\x86\x80\x05\xd3\x98\x10\ \x9c\xc3\xe0\x42\x37\xe8\x48\xe5\x86\x9a\x11\xdb\xb6\xed\xa8\x86\ \xb7\x7a\xed\xde\xbd\x9f\xcc\xeb\xec\xec\xdc\x0e\xe0\x4c\x82\xfe\ \x8f\x00\xd6\x2d\x06\x4b\x8d\x83\x45\x63\x90\x7b\x13\xec\x2c\xba\ \xf3\x79\xb7\xdb\xdd\xec\xf5\x7a\x55\x6a\x99\xcb\xe5\x72\x93\x81\ \xc8\x1a\xf1\x78\x7c\xbf\xa2\x28\x6b\x01\xfc\x5a\x08\xd1\x5d\x40\ \xbc\x9c\x07\x94\x08\x09\x8d\x10\x21\x28\x84\x26\xc2\x14\x55\x55\ \xe3\xe6\xba\x9a\xda\xa6\x97\xc9\xc8\x2b\x38\x00\x97\x53\x00\xe7\ \x9f\x3d\x18\x63\x1c\x8c\x41\xa2\x1f\x78\xdc\x02\xf0\xf1\x77\x37\ \x7c\xd4\xee\xf7\x57\x3d\x91\x88\xc6\xe6\x6d\xdb\xb6\x6d\x14\xc0\ \x35\xd6\x78\x99\x04\x90\xf0\x31\x64\xab\x2a\xd5\xe4\x77\x54\x70\ \x0b\xe5\xa1\xb3\x08\xb5\xd6\x73\x85\x09\xfb\x09\xa6\x70\x7d\xd6\ \x62\x4e\x54\x66\x57\xb8\x30\x24\x92\xd6\x97\x66\x69\xc6\x37\x92\ \x00\x4a\x22\x91\x38\xe3\xc0\x81\x03\xaf\x51\x79\xe4\x74\x2e\x13\ \x49\x13\x92\x55\x21\x72\xe4\xf3\x13\x2f\x0c\xab\x95\x48\x2c\xb1\ \x6e\xdd\xba\x36\xba\x7e\x3d\x2d\x4f\xbf\x73\xe8\xd0\x21\xff\xa6\ \x4d\x9b\xc6\xe9\xda\x5f\x01\xc8\x12\xda\x26\x7c\xa7\x36\xc1\x0b\ \x93\x84\xdd\x84\x4e\x42\x8a\x90\xb1\x26\x45\x2f\x47\xba\x74\x08\ \x1c\xff\x7d\x32\x21\xe0\xf1\x78\xbe\x4d\x1e\xb0\x9c\xc2\x60\xe5\ \xa9\xa7\x9e\xba\x9e\x92\xa3\x9b\x5c\x93\x51\x82\xe4\xe4\x9a\x3a\ \x09\xa2\x72\xce\x0d\x1a\x23\x28\x5f\xc8\xe3\xe3\xe3\x33\xfc\x7e\ \xff\x29\x34\xe6\x22\x6a\x97\x51\x82\x62\x94\xa1\x0d\xea\xff\x10\ \xc0\x2a\xc2\x51\x8b\x50\xc2\x2a\xc9\xb1\x1c\x51\x27\x41\x6e\x41\ \xe0\x73\x1a\xab\xc0\xfd\x26\xae\x63\x8c\x3d\x4c\xa4\x6a\xab\xaa\ \xaa\x86\x89\x58\x8a\xda\x0c\x09\x20\x3c\x79\xf3\xd1\xf5\x06\x42\ \x8d\x39\xfb\xe4\x39\x88\x44\x22\xc6\xd0\xd0\x50\x2f\x79\xc2\x06\ \x6b\x69\x3a\x60\x11\x4d\x12\xd2\x96\x08\x9a\x4d\xf6\x77\x63\x0c\ \x95\xb3\x2a\xc2\x97\x09\xa7\x13\xda\x2c\xc2\x75\x04\x37\xe7\x5c\ \xb2\x5e\x41\x23\x84\x83\x84\x6e\xc2\xfb\x84\x7e\x6b\xa6\x8d\x72\ \x7f\xd6\xfb\x03\x10\xa0\xf0\xf3\x1c\xff\x0a\xc0\xf9\x17\x56\x81\ \xdf\x13\xfb\x1f\x84\xaf\xe2\x02\x22\xe6\xe9\x93\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x20\x1c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ \xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\ \x1b\xaf\x01\x5e\x1a\x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ \xd7\x08\x12\x14\x39\x28\x29\x91\x7c\x0e\x00\x00\x1f\xa9\x49\x44\ \x41\x54\x78\xda\xe5\x9b\x09\xb0\x5c\x57\x99\xdf\xff\xb7\xf7\xbd\ \x5f\xbf\xfd\xe9\xe9\x3d\x49\xd6\x2e\xd9\xda\x2c\x79\xc1\x78\xc0\ \x76\x42\x81\xc1\x03\x64\x0c\x13\x1c\x42\x65\x02\x4e\xb1\x84\x78\ \x5c\xc5\x14\x55\x49\x2a\x54\x48\x05\x2a\x03\xc3\x14\x03\x55\x33\ \x13\x43\x2a\xae\x21\x9e\x01\x26\x05\x43\x80\xd8\xb2\x0d\x78\xc3\ \x96\x25\x6b\xb1\xf5\xb4\x3d\x6b\x7d\xd2\xdb\xb7\xde\xb7\xdb\xb7\ \xf3\x3b\xa7\xbb\x35\x12\x1a\x0a\x18\xb0\x81\x4a\xcb\x9f\xcf\xed\ \xbb\x9c\x77\xbe\xed\xff\x2d\xf7\xb4\xfe\x7f\xff\x38\xaf\xe7\xdf\ \x59\xb3\x66\x8d\xaf\xab\xab\xcb\xd7\xdb\xdb\x6b\x29\x91\x48\x38\ \xd5\x6a\x55\xb9\x5c\xce\x5b\x58\x58\xf0\x96\x97\x97\xbd\x0b\x17\ \x2e\x78\xd9\x6c\xb6\x29\x09\xfa\x2d\x16\x40\x24\x12\xf1\x6d\xdd\ \xba\x35\xb0\x7b\xf7\xee\xf8\xdd\x77\xdf\xbd\xb5\xaf\xaf\x6f\x67\ \x34\x1a\x5d\xcf\xf9\x75\x7e\xbf\xbf\xd7\x71\x9c\x04\x14\x6f\xf2\ \x69\x34\x1a\x05\x43\x08\x63\xa6\x5c\x2e\x9f\x2a\x16\x8b\xe3\xd3\ \xd3\xd3\xfb\xbf\xfd\xed\x6f\x9f\x3c\x70\xe0\x40\x0d\xa1\x34\x8c\ \x40\x7e\x1b\x04\xe0\x6c\xda\xb4\x29\x74\xef\xbd\xf7\xf6\xbe\xf5\ \xad\x6f\xbd\x07\x2d\xbf\x3d\x16\x8b\xdd\x1c\x0e\x87\xfb\x60\x5a\ \xf0\x2a\xd7\x75\x2d\xc1\xb0\x3c\xcf\xb3\x0f\xf9\x7c\x3e\x4b\xc1\ \x60\x50\xdc\x67\xcf\x57\x2a\x15\x15\x0a\x85\x49\xac\xe1\xd9\xa9\ \xa9\xa9\x6f\x3d\xca\xe7\x5b\xdf\xfa\x56\xde\x58\xca\xaf\x52\x18\ \xce\xaf\x4a\xdb\xd7\x5f\x7f\x7d\xf4\x13\x9f\xf8\xc4\xae\x6d\xdb\ \xb6\x7d\x34\x9d\x4e\xdf\x0d\xd3\x29\xc3\x08\x1a\x15\x1a\x55\xa9\ \x54\x52\x15\xa6\x6a\xb5\x9a\xdc\x7a\xbd\x25\x00\x08\xa1\x40\xad\ \x95\xc0\xbc\x15\x42\x38\x1a\x55\x2a\x95\xb2\x14\xe5\xb8\xce\xfd\ \x8b\x8b\x8b\xf3\x33\x33\x33\xff\x7b\x6c\x6c\xec\xcf\x3e\xf7\xb9\ \xcf\x8d\x4f\x4e\x4e\xba\x46\x10\xbf\x6e\x01\x38\x1b\x37\x6e\x8c\ \x7e\xfa\xd3\x9f\xbe\x79\xc7\x8e\x1d\x7f\x94\xc9\x64\xde\xe2\xe7\ \x03\xd3\xc6\xaf\x55\x2c\x14\x54\xe1\xd8\x50\x15\x2a\x23\x04\xc8\ \x0a\xa2\x8e\x20\x1a\x58\x82\xe1\xde\xe7\x38\xf2\x07\x02\x0a\x05\ \x43\x0a\x86\x42\x0a\x84\x43\xf2\x9b\x63\xc6\x68\x3c\xae\x9e\xbe\ \x3e\xf5\x41\x21\xae\x2d\x2d\x2d\xd5\x2f\x5d\xba\xf4\xcd\x23\x47\ \x8e\x7c\x96\xbf\x7b\x22\x9f\xcf\xbb\xbf\x16\x01\xa0\x9d\xe0\x87\ \x3f\xfc\xe1\x91\xf7\xbf\xff\xfd\xff\x7e\x68\x68\xe8\x03\x98\x70\ \x10\x4d\x5b\xc6\x4b\x30\x6e\x28\xbb\xbc\xac\x85\xb9\x79\xcd\xce\ \xcd\x6a\x6e\x76\x56\x4b\x8b\x4b\xca\xe6\xb2\xd6\x1a\x3a\x02\xf0\ \x49\x0a\xfa\xfc\x8a\x84\x82\x4a\x18\xcd\x27\x12\xea\x4a\xa7\xd5\ \x95\xe9\x56\x2a\xd3\xa5\x68\x2a\xad\x50\x22\xae\x70\x2c\xa6\x6e\ \x84\x30\xbc\x72\xa5\x62\x1c\xcf\xce\xce\x96\xcf\x9c\x39\xf3\xc5\ \x6f\x7c\xe3\x1b\x9f\xfb\xfa\xd7\xbf\xbe\x2c\xc9\x7b\xbd\x04\xe0\ \x8c\x8e\x8e\xc6\xbe\xf4\xa5\x2f\xbd\x63\xcf\x9e\x3d\x7f\x8a\x89\ \x0e\x5d\xd6\x78\x3e\xaf\x1c\x4c\x4f\x4f\x4d\xe9\xfc\xb9\xf3\x3a\ \x73\xf6\x8c\x26\x26\x26\x34\x03\xf3\xf8\x72\x87\x71\x6b\xfa\xc2\ \x3d\x1c\xa3\x7d\x49\x01\xc7\xa7\x00\x18\x10\x0a\xf8\x15\x45\xcb\ \x89\x48\x54\x19\xcc\xbf\xaf\xa7\x5b\x83\x83\x83\xea\x5f\xb1\x42\ \xe9\x81\x01\x45\x33\x19\x85\xcd\x79\xce\xad\x5a\xb5\x4a\xc2\x72\ \xce\x9d\x3b\xf7\xea\xc1\x83\x07\xff\xf5\x27\x3f\xf9\xc9\xe7\x5d\ \x3e\xaf\xb5\x00\x7c\xb7\xdc\x72\x4b\xf7\x97\xbf\xfc\xe5\xff\x40\ \x48\xfb\xb7\x66\xed\x98\xa0\x0a\x50\x76\x71\x51\x13\x17\x2e\xe8\ \xc4\xf1\x13\x1a\x3b\x7e\x4c\x68\xc7\x32\x5e\x2e\x96\xd4\xdb\xdb\ \xa3\x95\x2b\x86\xd5\xc7\xd8\xdd\xd5\xa5\x58\x24\xa2\x30\xbe\xde\ \x6c\x78\x06\x0f\xb8\xa7\xa0\x02\x02\x5c\x5a\x58\xd0\xfc\xf4\x0c\ \x34\x8d\x60\x9a\x8a\xe0\x06\x29\x5c\xa0\xbf\xa7\x47\x2b\x56\x0e\ \x6b\xc5\xea\xd5\xca\x8c\x8c\x2a\xda\xdb\xab\x38\xc2\x19\xe5\x7b\ \x5f\x7f\xbf\xc0\x86\x2a\xd8\xf0\x1f\x1f\x7c\xf0\xc1\x2f\xe3\x22\ \x95\xd7\x4a\x00\xfe\xb7\xbf\xfd\xed\x2b\x3e\xff\xf9\xcf\xff\x05\ \x5a\xb9\x1b\x60\xb2\x8c\xe7\xd0\xec\xe4\xc5\x8b\x3a\xfa\xca\x2b\ \x3a\xf0\xd2\x4b\x3a\x7e\xf2\xa4\x66\xa6\xa6\xf1\xd9\x5e\x6d\xdb\ \xba\x55\x9b\x37\x6d\x52\x22\x1c\x91\xaf\xe9\xc9\xef\xb5\xc8\x31\ \x04\xf3\x62\x84\xac\x45\x34\x0c\x71\xec\x72\x5f\xb5\x5a\xb3\x73\ \x9e\x3e\x76\x4c\x0b\x08\xd1\x80\x63\x12\xb3\xef\x87\xf1\x95\x30\ \xbd\x62\xfd\x7a\xa5\x56\x8d\x2a\xc2\xf7\x01\x5c\x62\xf5\x75\xd7\ \x59\xa0\x45\x08\x5f\xf9\xd4\xa7\x3e\xf5\xe0\xc9\x93\x27\x8b\x3f\ \x2f\x40\xfa\x7f\x5e\xe6\x3f\xf0\x81\x0f\xac\xf9\xcc\x67\x3e\xf3\ \x48\x7f\x7f\xff\x9d\x26\x44\xe5\xdb\x1a\x3b\x31\x36\xa6\x1f\xfe\ \xf0\x87\x7a\xe2\x07\x3f\xd0\xcb\x2f\xbf\xac\x01\x16\xf5\xce\x77\ \xdc\xa3\xbb\x6e\xbf\x5d\xd7\xa1\xf5\x0c\xbe\x9d\xc4\x54\xd3\x6a\ \x51\xaa\x43\x9c\x4b\x4a\x4a\x74\x88\x73\x71\xc6\x18\x6e\x11\xe7\ \x5a\x6f\x32\xa5\x75\x1b\xd6\x69\x04\x06\x6b\x08\xb9\xb0\xb0\xa8\ \x12\x02\x2f\xf2\x37\x6b\x4b\x4b\xf2\x55\xaa\x0a\x20\x98\x4a\xdd\ \x55\xae\x84\x95\x81\x0f\x03\x03\x03\xbb\x6e\xb8\xe1\x86\xad\x58\ \xc4\x63\xe7\xcf\x9f\xaf\xfe\xaa\x04\xe0\xbf\xf3\xce\x3b\x57\x7e\ \xf6\xb3\x9f\xfd\x5f\xc4\xf5\x5b\x0d\x8a\x1b\xb3\x9f\xc3\x4c\x5f\ \xda\x7f\x40\x8f\x3d\xbe\x57\xcf\x3e\xfb\xac\x5c\x7c\xfb\xbd\xbf\ \xf7\x7b\xba\xe3\x8d\x6f\xd4\x20\xc0\x95\xc2\xa7\xd3\x4e\x87\xe9\ \x0e\xb3\x0e\x0c\xc2\xa4\xa4\xa8\x31\xf1\x26\x24\x99\x11\xe2\x9c\ \x19\xa1\x98\xbd\xc6\x79\xac\x22\x01\x26\x5c\xb7\x6e\xbd\xba\x01\ \xc4\xfc\xf4\x94\xaa\x68\xba\x9c\xcb\xab\xba\xbc\x24\x87\xb5\x84\ \x88\x1e\x0d\x9f\xa3\x3c\xc7\x19\x5c\x05\x21\x6c\x02\xa3\x36\xee\ \xdb\xb7\xef\xbb\xe0\x52\xfd\x97\x15\x80\x8f\x30\xd7\xff\xd0\x43\ \x0f\x7d\x85\x89\xef\x00\xc4\xac\xd9\x4f\x5d\xba\xa4\xe7\x9f\x7f\ \x5e\xff\xf7\xb1\x47\x75\xe8\xe0\x41\xed\xda\xb1\x43\xff\xfc\xde\ \x7b\xb5\xb2\xa7\x57\xe9\x0e\xe3\x57\x68\x38\x0a\x85\x61\x0c\xaf\ \x57\x00\xc6\x02\x8c\xfe\xa6\x20\x46\xaf\x75\xec\x33\xc7\xf6\xba\ \x21\x29\xc8\x18\x16\xe4\xf1\x9c\x5b\x07\x3b\x12\x1a\xc1\x22\xaa\ \x33\x73\xaa\xb1\x86\x5a\x89\xd0\x4a\x44\xb1\x42\xf0\x33\x23\x96\ \x96\x03\x8c\xbb\x00\x4a\x42\xe6\x26\xb2\xd0\x81\xef\x7f\xff\xfb\ \x8f\xe3\x5a\xee\x3f\x56\x00\x0e\x79\x7b\xea\xe1\x87\x1f\xfe\xcf\ \x6b\xd7\xae\xbd\x8f\x58\x6e\x32\x33\x4d\xc3\xfc\x8f\x9f\x7b\x4e\ \x8f\xed\xdd\xab\xb3\xa7\x4f\xeb\xdd\xef\x7c\xa7\x6e\xdb\xbd\x47\ \x5d\x80\x5a\x86\x85\x74\x18\x8f\x59\xa6\x61\xb6\xcd\xa4\x45\x7c\ \x33\x1a\xbf\x6f\x42\x1c\x37\x6d\x24\x68\x8d\x6a\x9f\x77\xec\xbd\ \x8c\x1d\xe1\x58\x30\x6c\x32\x59\xdd\x5a\xcf\xf0\x9a\x0d\x6a\x10\ \x4e\xdd\x42\x8e\x30\x5a\x53\x3d\x57\x40\x08\x65\x2c\x21\x88\xa4\ \x23\x2a\xd6\x6a\xd6\x1d\x58\xfb\x2e\x92\xb3\x65\x84\xb0\x5f\xcc\ \xfe\x0b\x0b\x80\xb8\x1e\xf9\xc2\x17\xbe\x70\xef\x6d\xb7\xdd\xf6\ \x5f\x00\x3c\x1f\xcc\x5b\xb3\x7f\xe1\xf9\x17\xb4\xf7\xf1\xc7\x75\ \x11\xc4\xbf\xef\xf7\x7f\x5f\x1b\x09\x47\x5d\xf8\x62\x06\xcd\xe3\ \xd7\x76\x91\x21\x18\x68\x69\xb5\xcd\x58\x9b\xa9\xa6\x65\x9a\xb1\ \x7d\xac\xf6\xb1\xda\xc7\xba\xea\xd8\x8e\xac\xc3\x53\x20\x0d\x40\ \x3a\x9e\x42\x45\xc9\x29\xd7\x35\xb4\xf6\x3a\x35\x96\xc1\x02\x37\ \x27\xa7\xee\x22\x84\xa2\xfc\x60\x42\x08\xb0\x6d\x1a\x21\x10\x0d\ \x07\x08\x95\xe4\x0b\xbf\x43\x8e\xf2\x14\x2e\x3a\x21\x66\xfc\x45\ \x04\xe0\xa7\x80\xd9\xf4\x91\x8f\x7c\xe4\xaf\x40\xe0\xa4\xc9\xe8\ \x96\x09\x73\x07\x0f\x1c\x40\xf3\x8f\xeb\x3c\x21\xce\x30\xbf\x66\ \x60\x00\xcd\xfb\xd4\xed\xf7\x29\xe9\x39\xd6\x7f\x03\x2d\x2d\x42\ \xad\x58\xaf\x0e\xa3\x57\x33\x79\x95\x15\xa8\x6d\x05\x96\x38\xee\ \x8c\x1c\x28\x18\xa7\x2e\xe8\x8a\x28\x56\x73\xe5\xe5\x4c\xf4\x80\ \x88\x40\xfd\x6b\x56\x03\x86\x17\xb9\xa7\x2a\xaf\x84\x80\x8a\x65\ \xf9\x39\x1f\x8a\xc7\xd4\x20\xcc\xba\x92\x86\x56\xac\x08\x90\xa7\ \xdc\x76\xe2\xc4\x89\x47\x00\xc6\xf2\xcf\x2d\x00\x24\xd7\xf5\xc5\ \x2f\x7e\xf1\xb3\x84\xbb\x5b\x08\x2f\x36\xc1\x39\x41\x48\x7a\xfc\ \x89\x27\x34\x06\xd2\xbf\xfb\x77\xef\xd1\xda\xa1\x15\xea\x86\xf9\ \x54\x44\xea\x92\x8f\xe4\x25\x2e\x11\xbe\x3a\xcc\x59\x26\x1a\x10\ \x82\x40\xcb\x57\x6a\xfe\xaa\x31\x68\xb4\xe6\xba\xc4\xf7\x11\xad\ \xba\x79\x8f\xfa\xd6\xae\x55\x1f\xbe\xde\x47\xa8\xeb\xdf\xb8\x56\ \xf1\x35\xbd\x0a\xf7\xf4\x6b\xd5\x75\x5b\xd4\xbf\xe1\x06\x0d\x6e\ \xde\xac\x9e\xd1\x51\x2d\x9c\x1a\x57\xdf\x48\x9f\x16\x16\x27\x14\ \xab\x53\x64\x95\x5d\x35\x89\x4e\x01\x39\x0a\xa6\x92\xaa\x01\x9e\ \x41\x04\xd1\xc3\x07\x2b\xf0\xbe\xf7\xbd\xef\x3d\x2d\xa9\x71\x8d\ \xa5\xeb\xda\x4f\xf0\x81\x07\x1e\x78\x13\x7e\xff\x1e\xc2\x9d\xcd\ \xe3\xa7\x88\xc9\xa0\xaa\x8e\x1e\x79\x59\xb7\xec\xd9\xad\x75\xc3\ \xc3\x4a\x4b\x84\x38\xc1\x78\x40\x41\x98\x1b\x20\x16\xa7\x07\xfb\ \x5b\x0c\x37\x5a\xc4\xf1\x15\x82\xb8\x96\x12\x84\xcc\x55\x37\xed\ \x91\x83\xfb\xa8\x69\xdc\xe4\xea\xcc\xc4\xf1\xd7\x55\x27\x19\x8a\ \x45\xc3\xdc\x1f\x30\x67\x3a\xff\xc9\x2b\x57\x14\x4b\x74\x6b\x64\ \xeb\xf5\x44\x08\xbf\xe2\xc2\x32\x4c\x74\xc0\x3a\x6b\x27\x4e\xca\ \x9b\x5f\xd0\x0c\x19\x29\x25\xb7\xe0\xe5\x81\x0f\x7e\xf0\x83\x9b\ \xcd\x04\x3f\x4b\x00\x0e\xda\xcf\x50\xca\xfe\x21\x26\x18\xb0\xf1\ \x9e\xd4\x76\xec\xe8\x98\x8e\x1c\x3a\xa4\x34\xfe\x75\xeb\xce\x5d\ \x4a\x35\x05\xd8\x11\xaf\xc3\x3e\x28\x24\xc7\x6d\x58\x06\x52\x83\ \x43\x56\x83\xfc\x55\xc3\x34\x74\x25\xf3\x8d\xd6\xb1\x71\x11\x09\ \x0d\xaf\xd3\x10\x89\x12\xcc\x9b\x73\x96\x3c\xa8\xf3\x8c\xb8\xbf\ \xd1\x2c\x2b\x90\xea\x95\xcf\x0a\x51\x10\xff\xb3\xd7\x20\xc6\xfa\ \x72\x4e\xab\x6f\xbc\x49\xc9\xe1\x5e\x25\x03\xb8\x20\xcf\x08\x57\ \x75\x4f\x9f\x55\x1d\x41\xd4\xb3\x39\xcd\xce\xcc\xa8\xbb\xbb\x3b\ \x7a\xeb\xad\xb7\xfe\x91\xa4\xf0\xcf\x12\x40\xe0\x43\x1f\xfa\xd0\ \x1b\x30\x99\xdb\x0d\xf3\xb5\x72\x19\xb0\x9b\xd0\x91\xc3\x87\x34\ \x4b\x4e\xff\x4f\xde\x7c\x87\x92\x86\x51\x28\x0e\x85\x78\x9a\xe5\ \x4b\x56\xe3\xae\x65\x32\x92\x4c\x6a\x68\xcb\x66\x05\x11\x56\xc7\ \x0a\x3a\xcc\x73\xc0\xf9\x80\x86\x77\x6e\x53\x7a\x68\xa8\xe3\x16\ \x1d\x21\x5d\x1e\xbd\xf6\x33\x35\xaf\xa6\x68\xba\x5b\xf8\xc8\x35\ \x56\x64\x05\x56\xab\x2a\x46\x6a\xdd\x7b\xfd\x76\xd2\xeb\x16\x77\ \x81\x5a\x5d\x4d\xc0\xba\x81\x00\x3c\xb2\xc8\x02\x0a\x34\x25\xf8\ \xca\x95\x2b\xdf\x73\xdf\x7d\xf7\x6d\x90\xe4\xfc\x54\x01\x50\x8b\ \x27\xdf\xf6\xb6\xb7\xdd\x4f\x1d\xef\x33\x0f\xe5\xc9\xc0\xc6\x4f\ \x9e\xd0\x19\xd2\xdb\x35\xc3\x2b\xb5\xb2\x3b\xa3\x64\x87\x79\x16\ \xe4\x73\x01\xa6\x96\x6a\x34\x73\xfc\x24\x7e\x58\xb1\x4c\x53\xda\ \xe2\xab\xa4\xc0\x7d\xbd\x57\xb9\x43\x72\x20\xad\xe4\x86\x21\x85\ \x13\x21\xfb\xbd\x01\x68\x4d\x1d\x79\x45\x2e\xc2\xbe\xc6\x6d\x9a\ \x8c\x12\xf7\xa6\x25\xe6\x6b\xaa\x7e\xf9\x9a\xd7\x06\x53\x5f\x90\ \x68\x43\xe1\xd4\xbd\x79\xbb\xc2\x71\x8a\x29\x2c\x2f\x64\xc2\x2d\ \xb9\x81\x26\xa7\xe4\x52\x8c\x09\x25\x2e\x92\x3d\xd2\xa3\x08\xdd\ \x7e\xfb\xed\x1f\x35\x6c\xfe\x14\x01\xd8\xa4\x67\xd5\xf0\xf0\xf0\ \x9b\x6d\xd3\x02\x9a\x45\x92\xe3\xc7\x8f\x2b\x37\x33\xab\x3d\xdb\ \xb7\x2b\xe1\xb5\x98\x0f\x7b\x6d\x34\xae\xd4\x44\x1b\x0b\x33\x6e\ \xa8\x92\x5d\xd6\xa5\x23\x47\x54\x5e\x5a\x6a\x23\xbb\xd4\x43\xde\ \xde\x0b\x36\x38\x8e\x0f\xd7\x58\xad\xae\xf5\x83\x72\x9d\x96\x36\ \x2b\xa4\xd2\xe7\x5f\x78\x41\x59\xf2\x8a\x2b\x35\xeb\x59\x17\x60\ \x6c\x0b\xc3\x4f\x7c\x0f\xf6\xad\x92\x17\xc8\x09\x6e\x38\x57\x63\ \xee\x9a\x82\x31\x4f\x91\x95\x09\xa5\x46\x37\x2a\x3e\x30\xc2\xf7\ \xa0\x65\xc6\x2f\x59\xc5\x80\x8e\x6a\x5e\xbc\x64\xb1\xa0\x8a\x40\ \x5c\xce\x01\xea\xef\x06\x13\xd3\x3f\x4d\x00\xa1\xfb\xef\xbf\xff\ \x1e\xc2\x5e\xcc\xdc\x5c\x06\xfd\x2f\x9e\x3b\xa7\x4b\x50\x17\x68\ \xba\xb2\xaf\xcf\x32\x1f\x31\xc9\x89\xf5\x41\x34\x58\xc2\x02\xaa\ \x2c\xca\x6f\x17\x6b\x35\x39\x05\x5e\x2c\x9d\xbf\x60\x90\xdd\x32\ \x11\x27\x3d\x1d\xdd\xbd\x4b\xc9\x15\x5d\x2a\xe3\xef\x31\xc2\xd4\ \xf2\xc4\xa4\x2e\xec\xdb\xaf\x6a\xbe\xd0\x36\xfd\x46\x27\x62\x40\ \xae\x25\xbe\x5b\x6c\xa9\x15\x73\xea\x1e\xdd\x2c\x67\x78\xbd\x6a\ \xf1\xaa\xea\xe1\x05\x79\xf1\xac\xba\x6e\x5a\xa3\xfe\x37\xbf\x13\ \xdc\x59\x05\x58\xc2\x38\x40\xe9\x48\x90\xcd\x2a\xad\xe6\x1d\x98\ \xaf\x9d\x3f\x2f\x1f\xf3\x93\xbe\x1b\x2b\xe8\xff\xd8\xc7\x3e\xf6\ \x96\x2b\xf9\x0e\x74\x0e\x4c\xbc\x5f\xb7\x6e\xdd\x3f\xb5\xfd\x3a\ \xc8\x80\xdf\xc4\xd9\x73\xca\xcf\xcd\x69\x23\x05\x89\x61\x3e\x6a\ \xd2\x52\x99\x2c\xcd\x11\xff\xc1\xb0\xf1\x39\x4f\x35\xbf\x83\x96\ \x1b\x62\xdd\x36\x7e\x2f\xf2\x5c\x79\x69\x59\x7d\xeb\xd6\xca\x47\ \x8d\x2f\x01\x58\x2a\x29\xda\xb7\x5a\x0b\x2f\x3d\xa5\xec\x89\x39\ \xee\xbd\x3a\x3a\x74\xa2\x87\xeb\x95\xe4\x73\x4c\x1e\x11\x56\x80\ \x46\x49\x61\xfa\xac\x62\x3d\x03\xea\xb9\xee\x06\x35\x86\xd7\xa9\ \x5e\x29\xda\x7b\xd3\x3c\xeb\x0f\x84\x54\x2f\xcd\x6b\xf9\xcc\x01\ \xf9\x38\xbe\xaa\xbc\x75\x11\x22\x19\x63\x63\x72\x52\x3e\x5c\xb3\ \x1a\x29\x8b\x2e\xb4\x46\x46\x46\xee\x91\xf4\xb7\x50\xf5\x4a\x01\ \xf8\xe8\xeb\xf5\x51\xec\x6c\x43\x00\xb6\x46\x5f\x9a\x9f\xd7\x0c\ \xc0\xe7\x15\x8a\x1a\x1d\x18\x84\x79\x4f\xe0\x7d\x0b\xf4\xd4\x12\ \x00\xa7\x14\x2a\x4b\x95\x4c\x42\x3d\x23\x61\x92\x91\x90\xb8\x6c\ \x85\x20\xa8\x00\x08\x25\xfa\xfb\x59\x5c\x55\x0d\xe2\x7d\x94\x92\ \x36\x68\xd2\x65\xaa\x44\x0b\x1d\xed\x4c\x11\x8b\x69\x9b\xbd\xcb\ \xbc\xf4\x06\xca\x05\x25\x82\x43\x6a\x54\x29\x74\x66\x2f\xa8\xd0\ \x33\xc8\x3c\x2b\x69\x93\x05\x99\x2b\x6d\x05\x40\x6f\x0d\x21\x56\ \x55\xbc\xf4\x8c\xca\xf3\x17\x98\x2c\x70\x75\xaa\x67\xc0\xb5\x84\ \x30\x97\xb3\xaa\xd3\x91\x0a\x66\xba\x2c\x18\x92\x22\xdf\x2a\x29\ \x7e\x8d\x00\xde\xf7\xbe\xf7\xed\xa4\xe7\x96\x32\x75\x7e\x1d\xbf\ \x5e\x64\xf1\xb9\xf9\x39\x85\x78\xa8\x2f\x95\xb4\xa6\x1f\xb8\x42\ \xfb\x12\xa3\x44\x4e\x8e\x65\xf4\xd3\xcc\x1c\x1a\x54\xaa\xe6\x80\ \xcc\x2d\x21\x48\x56\x10\x2d\xcd\x3a\x15\x85\x32\xd7\x59\xbb\x4b\ \x76\xf7\x90\xae\x26\x61\xfc\xef\x05\xb5\x6c\x05\xd0\x10\x12\xc0\ \xd7\xc1\x1f\xa7\x2e\xa9\xc6\x5c\x01\x42\x20\x45\xce\xd8\x8f\xd1\ \xf4\x0d\x4a\xaf\x24\xc4\xca\x69\x27\x57\x2e\x65\xf2\x69\x15\x27\ \x9e\x43\x18\x01\x6b\x8d\x57\x49\x80\x63\x38\x96\x43\x16\x5b\xa3\ \x3f\x11\xdb\xb8\xd1\xe2\x55\x32\x99\x1c\x7d\xef\x7b\xdf\xbb\x96\ \x56\xda\x92\xb9\xab\xe3\x0b\xc1\xcd\x9b\x37\xef\x68\x58\xe0\xf1\ \x6c\x03\x73\x79\x76\x4e\x55\xe2\x68\x8c\xef\x69\x90\x36\xc8\x1f\ \xf5\x75\x90\xda\x35\xe4\x5a\x72\x2b\x1c\x67\xb3\x30\x38\x48\xd2\ \xe2\x5a\xc1\xe2\xfb\x68\xc7\xf8\xb1\xa1\xba\xdc\x26\x85\x4c\x77\ \x9f\xd5\x78\xc7\xd4\xbd\xcb\x73\xb9\x1d\x74\x87\x60\x3c\x88\x30\ \x09\x7d\xcc\x63\xae\x63\x05\x7e\xf9\xf2\x21\x95\x4f\x1d\xd0\xc2\ \xab\x87\x39\xc7\xf9\xa6\xc1\x9e\x25\x15\xce\x3f\xa6\xc2\x1c\xbd\ \x01\x04\x5f\xcf\x5f\x5b\xf9\xda\x39\xc1\x19\x17\x6b\x0e\x4a\x82\ \x3f\xdb\x7e\xa7\x48\xba\xd1\x28\xfd\x4a\x0b\x08\x63\x1a\xd7\x99\ \xf0\x02\x59\xd4\x2c\x90\x50\x08\x41\x24\xda\xa5\x6c\x80\xf3\x72\ \x98\x54\x90\x73\xd9\xd3\x6c\xde\xdf\x58\x32\xa5\xe9\x9c\xa2\x83\ \x6b\x94\x3d\xf4\x8c\x2a\x97\x6a\x1d\x3c\xb0\xc5\x4c\x78\x75\x4c\ \x99\x70\x54\x24\x16\x5a\x9a\x9c\xe0\xba\x07\xe3\xcd\xcb\xe9\xb0\ \x5b\xad\xd1\xe8\x98\x57\xe0\x62\x45\xd1\xeb\xd7\x60\xe6\x61\x2d\ \x1e\x3b\xa2\xca\x82\x1f\x86\x5b\xf7\xf8\xfc\x35\x85\xce\x9d\x56\ \xa3\x56\x51\xd7\xaa\xf5\x98\xfe\xb3\xaa\xcc\x8f\xa9\xb4\x80\x5b\ \x16\xa5\x7a\xe1\xda\xfe\x07\xcc\xd8\xf4\x98\x57\x4e\x56\x79\x00\ \x9d\x3d\x0d\x18\xae\x6f\x0b\xa0\x61\x05\x40\xba\x18\xe5\xe4\x68\ \x5b\x00\x36\x01\x2a\xe7\x73\xf2\xd7\xea\xb6\x3b\x13\x70\xeb\x98\ \x62\xf8\x1f\x2c\xa8\x3c\xa8\x56\xc0\xdf\x27\x4e\xab\x67\xe3\x0e\ \xe5\x87\x46\xc9\xc2\x9e\x57\x79\xc1\x33\x8b\x87\x19\x68\x68\xc0\ \x40\x33\xa1\x2a\x8e\x35\xc0\x2c\x9d\xe2\x46\xa5\x53\x00\x59\x37\ \xc1\xda\x96\x54\xca\xe4\x94\x19\xb8\x9d\x67\x69\xa2\x5e\xbc\xa0\ \xfc\xc5\xc6\x55\x40\x19\x8c\x73\x5f\xed\xbb\xf2\x6e\xbd\x59\x95\ \xc9\xa7\x54\x5e\xac\xa9\x59\x8c\xaa\x3c\x57\x27\xa7\xa8\xf2\xb7\ \xac\x17\x5d\xbd\x4c\x5c\x5a\x46\x08\xf4\x26\xa9\x8c\xac\x52\x00\ \xc3\x75\x6d\xe5\xd7\x6d\x82\xcd\xc9\x08\xfe\xdf\xdd\xa9\xc4\xea\ \xa0\xa6\xcb\x03\x41\xd3\x91\x09\x88\x73\x39\x72\x11\x34\x68\x7c\ \xfc\x27\xd2\x69\x66\xc4\x4c\x9b\xf4\xec\x12\xe4\xe7\x45\x0d\x6c\ \xd8\xae\xd2\xf8\x51\x98\x58\xb4\x02\x18\xde\xb3\x4b\x4e\xb7\x2b\ \x07\x21\x86\x58\x40\x64\xc5\x88\x4a\xaf\xce\x6a\x74\xcf\x1b\x25\ \xaf\x85\x01\x67\x9e\x79\x56\x7e\xea\xfd\x08\x7d\xbe\xee\x61\x22\ \x45\x31\xcf\xf5\x9b\x55\xdf\x1c\x63\x0e\x33\x7f\x15\x4d\x2f\x68\ \xe1\xf4\xb8\x8a\x67\xa6\x34\xe1\xfe\x9d\x32\x83\x39\x84\x44\xb4\ \x28\x86\x55\x99\xcb\x2b\x10\xa9\xcb\x09\xb3\xf6\x25\x3f\x56\x72\ \x79\x6d\xd6\x0d\x7d\x75\x97\x90\x5d\xc4\x00\xfa\xad\x1b\xc0\x6b\ \x7f\xc7\xfa\x2f\x63\x00\xbe\x11\x45\x00\xd6\x02\xdc\x3a\x92\x05\ \x40\xa8\xeb\x61\xcc\x91\x8b\xf9\x05\x42\x36\x5e\x5f\x4d\xae\x6b\ \x47\xaf\x8e\x58\x08\x87\x15\x6a\xf4\x10\x5a\x0e\x0f\x0e\x81\xd8\ \xd6\xcf\x6d\xb8\x13\x0c\xd4\x8b\x59\xeb\x42\x19\xac\x24\x3c\x14\ \x15\x27\x3b\x58\x80\xe6\x5c\xc5\x46\x42\xea\xd9\x76\x8b\xfc\xa1\ \x20\xf3\x56\xed\x73\x16\x6b\xcc\x75\x4c\x37\xde\xdf\xa7\x91\x9b\ \x6e\x26\x5b\xcd\xc0\x64\x5e\xf9\x19\xae\xe5\xfd\x58\x4e\x90\x28\ \xb0\x48\x32\x86\x9b\x76\xb9\x8a\x64\x58\xcb\x95\x3a\x6a\x97\xe6\ \x5e\x0d\x1e\x02\x81\x4e\xc8\x8f\x9b\xe1\x2a\x01\x70\x32\x72\xb9\ \x16\x77\x5b\x80\x17\x96\x14\x89\xf9\x31\xdd\x28\x8b\xd4\x15\x49\ \xcb\xb5\x82\xf0\x4c\x49\x5a\x5a\xb6\xb1\x21\xdc\x3d\x80\x46\xdb\ \x80\xe7\x1a\xe1\x34\x31\xfb\x49\xc1\x15\x89\xcb\x0a\x65\x76\xdd\ \x22\x5f\x2c\xcb\x12\x4a\x24\x31\x45\x25\x56\x39\xca\xec\xbe\x55\ \x99\xd5\x6b\xdb\x00\x57\x62\xc1\xb8\xa3\x4d\xa6\xda\x64\xc1\xd2\ \x53\xff\xa6\x75\xd6\x2a\x4a\x53\x92\x9b\x8d\x20\xd8\xba\xaa\x26\ \xde\x57\x1d\x18\xa4\x14\xee\x62\xed\xc1\xab\x2c\x14\x62\xe4\x79\ \x9a\xa8\x1d\x01\xc4\x7e\x12\x04\x1d\x4c\xc3\xf1\x0c\x83\xf6\x4a\ \xd3\x5e\x08\x3a\x52\x18\xb2\xe8\x0f\x98\xd9\x30\xe5\x75\x26\xbe\ \x3a\xe6\x34\xeb\x46\xca\x06\xa1\xeb\x36\x7d\xc5\x96\xda\xd6\x01\ \x92\x97\x7d\xf2\xa6\xcf\xab\xb1\x9a\x50\x18\x0a\xab\xff\x86\xdd\ \xca\x12\x59\x34\x77\xc6\x3c\x49\x65\x78\x17\xf8\xb1\x0d\x2d\x8a\ \x79\xd0\x7e\x39\xaf\x06\x02\x38\xfd\xa3\xa7\x2c\xd3\xe1\x78\x5c\ \x83\x37\x5c\x8f\x55\x31\xab\x93\xc5\x22\x82\x6a\xe4\x04\x78\x86\ \x55\x26\x5a\x79\xf8\x39\x38\x06\xcc\x98\x05\x7b\xf8\x7a\x93\xe7\ \x9d\x2b\x85\x60\xad\x08\x2b\xef\x84\xe7\x4e\xd2\xd8\x11\x00\x42\ \xe7\xc3\x85\x76\x3b\xcc\x4f\xa3\x11\x62\x45\x7e\x18\xf0\xe1\x54\ \x75\xb7\x80\xb6\x42\x52\xbd\x3d\xe7\x55\x42\x68\xb6\x42\x98\x5a\ \x3e\xe7\x96\x0b\xb8\x90\x09\x93\x56\x8b\x00\x1e\x52\x07\x89\x0b\ \x53\x17\x94\x1a\x59\x85\x80\x7c\xea\xdd\xb8\x55\x8d\x35\x68\x5c\ \x20\xbc\x31\x7b\xeb\xaf\x35\x35\x8c\xf6\x4b\x05\xc6\x20\xb1\xbf\ \x64\x05\x50\xcb\x17\x48\x84\x7a\x94\x59\x13\xa3\x29\x7b\x09\x2c\ \xc1\xdd\x96\x22\xcc\x5b\x47\x00\xb3\xed\x90\x07\xb9\x0e\x2e\xd4\ \xb4\x02\xa8\xe6\x6c\xc8\xb2\x82\x11\x14\x08\x87\x6d\xe9\xcd\x77\ \x53\x17\x94\x0c\xcf\x57\xba\x80\x0b\xff\x95\x8e\x00\x02\xc1\x80\ \xc2\xc1\x90\x15\x40\xb3\xcc\x12\x17\xa7\xd4\xe0\x38\x94\x34\x3c\ \xa3\xd5\x2b\xfc\x1f\xe2\x24\xa3\x9f\x3e\x7d\x2c\x69\x05\x51\x5b\ \x9c\x36\xa6\xd9\xbe\xee\xb6\xcc\xb9\xe8\xd3\xd2\xf1\x83\x68\xc6\ \x30\x55\x13\x92\xc4\x4d\x70\x2f\x88\x63\x90\xd8\x16\x39\x30\x4b\ \x31\x55\x2a\xa3\xd5\xcb\xee\x86\xe6\xfd\xa4\xc3\x21\x55\xaa\x13\ \xe4\x13\x45\x04\xd0\x24\x22\x04\x40\xff\x29\xee\xab\xb5\x75\xd0\ \xae\x03\x1c\xc1\x2c\x7e\xcf\xd8\xd6\x26\x6b\xf3\x29\x9c\x4c\x5e\ \x16\x00\xd6\x5e\x96\xe4\x5d\x69\x01\x55\x8a\x85\x2c\x17\xe4\xf0\ \x2f\x88\xb4\xa2\xd4\xf3\x05\x53\x86\x56\x1c\x55\x2f\x4d\x2a\x0a\ \x6a\xbb\x4b\x53\x0a\xa7\x43\xaa\x2e\xb9\x1d\xe5\x63\x15\x14\x48\ \x5d\x52\x33\x19\x55\xbc\xb7\x4f\x75\xb4\x5f\x9e\xba\x88\x00\x0c\ \x00\x36\x21\xd7\x2c\x02\x01\x38\x2a\x2d\x9e\x52\x61\xc3\x46\xac\ \x60\xd4\x6a\x85\xa7\xda\xeb\x68\xf9\x37\x44\xec\x9f\x46\x0e\x4d\ \x0b\x82\xa3\xb7\xdc\x6c\x05\x10\x8c\xfa\x15\x88\xcf\xca\xf5\x16\ \x50\x42\x59\x71\x94\x51\x9e\xe1\x38\x32\xaf\x6a\x10\x86\xea\x6a\ \x15\x44\x30\x6e\x4a\x82\x9a\x8d\x6d\x86\xe0\x06\x1e\x3c\x53\x84\ \x51\x94\x75\xde\x99\xa1\xec\x79\x06\xb7\x63\x01\x4d\x88\x28\xb3\ \x30\xe9\xb5\x93\x9d\x40\x84\xbc\x9d\xc2\x21\x84\x69\xca\x63\xc2\ \x19\xfa\x82\x17\x4f\x29\xb3\x69\xbb\xe2\x1b\x57\x28\x71\x5d\x58\ \xb1\x15\x94\xc6\x2b\xa5\xd4\xfa\xa8\xd2\x3b\x37\x72\x6d\x27\x9a\ \x0a\xa8\x34\x37\xad\xda\xec\x02\xe6\xd9\xd2\x1e\x02\x80\x18\xb1\ \x82\xf2\xa5\xa2\x96\x8e\x1e\xe0\xb8\x24\x54\x67\x1b\x9a\x6a\x6b\ \xbe\x69\xc8\xa5\x09\x33\x8f\xb5\x95\x1c\x2e\x5b\xf4\xc7\xa4\x03\ \x54\x7a\xa4\xb3\xd5\x29\x3a\x3f\xe4\x23\x7c\x0f\xc5\x68\x84\xa4\ \x27\x94\x1c\xad\xaa\x6b\x6d\x43\xd1\x6e\x62\xfb\x30\x58\x91\xa0\ \x44\x4e\x19\x16\x3a\xd6\x60\x5c\x22\x24\x7f\x3c\x81\xe2\xd2\xea\ \x58\x38\xca\x3e\xcb\xe0\x5e\x69\x01\x15\x5e\x37\x5f\x68\xa7\x8a\ \x56\x00\x71\x3a\x2d\x61\x80\xca\x71\x72\xaa\x2e\x37\x95\x3b\xfa\ \x8a\x86\x6e\xbc\x59\xdd\xeb\x37\xca\xb9\x7e\x37\xfe\x99\x67\x81\ \xb8\x45\x22\x69\xcd\x2b\xc4\xbd\x1e\x0c\x94\x2e\x9e\xc5\x05\x4c\ \x62\xd2\xb0\x21\xc8\x46\x08\x00\x94\x0f\x7e\x4b\x59\xfa\xea\xb8\ \x4a\x37\x6c\x53\x6a\x68\x58\xb0\x29\x62\x94\x05\x4e\xdb\xe2\x22\ \x6f\xaf\x13\x4a\xdd\x52\xc8\x0a\x8e\x05\x83\x17\x75\xc6\x59\xc5\ \x7a\xa9\x27\xd2\x31\xd6\xd3\x24\xaf\x99\x50\x62\x10\x54\xc7\xdf\ \xb3\xb1\xba\x92\x83\x8e\x55\x54\xac\xdf\xa3\x36\xc1\xcc\xc9\xf0\ \xf9\x87\xc9\x1b\xcb\x89\xcb\x47\x63\xc6\x6f\x92\x20\xe6\xe7\x63\ \x36\x5b\x9c\x66\x68\x5c\x89\x01\xb5\x31\x3e\x6e\xfb\x8f\xfa\x90\ \x5a\x82\xfa\x3f\xc2\xc3\x4c\x62\x4d\xac\x7c\x3e\xaf\xe9\xe7\x7f\ \x04\x43\x25\xf9\x9d\x0a\x85\xc9\x08\x4c\x0c\x21\x71\xee\x71\x6c\ \x1e\x4f\x3c\x9e\x21\xef\x9e\xc5\x8f\x6d\x28\x6d\xbd\xf4\xb4\x16\ \x00\xd5\x4d\xdd\x40\x9a\x3d\x57\x50\x69\xf2\x02\xf7\x57\xed\x33\ \x1e\xd4\x74\x49\x9d\x99\xb7\x78\xe1\x04\xe8\x5e\x36\xf7\xd9\x6e\ \xd1\xf9\x67\x9f\xd3\xf4\xb1\x1f\xab\xb4\x7c\x46\xd1\x01\x3f\x16\ \x66\xc2\xd5\x8c\x22\xe9\xb8\x42\xa9\xa8\x62\x03\x41\xf5\x6d\x75\ \xd4\xb3\xc9\x53\xcf\x96\x06\x02\x90\x4d\xd6\x1c\xd7\x47\x04\xf3\ \xb5\x36\x5c\xa0\x9c\x38\x1d\x67\xe1\x0a\x9d\x4c\xf7\xa5\x97\x5e\ \x3a\x72\x0d\x08\x3e\xf9\xe4\x93\x87\x79\x97\x56\x32\x37\x38\x94\ \x9d\x71\x04\x10\xc5\x0a\x8c\x09\x35\x25\xea\x7b\x29\x77\xf8\xa8\ \xe6\xc7\x0e\x61\xde\x79\x62\xef\x84\x8d\xd9\x96\xbc\x9a\x05\xb7\ \xfc\xe9\x63\xc4\xe6\x26\xd7\x3d\xcb\x7c\xc7\x05\x3a\x84\x50\xb8\ \x86\x20\xb0\x1e\x98\xb7\x66\xcf\x09\xc2\x24\xf5\xc1\xf4\x5e\xcd\ \xef\x7f\xc2\x6a\xd0\xab\x59\x90\x45\x08\x15\x18\x68\xd0\xf1\x09\ \x71\xef\x12\xe7\x2f\xe2\xe7\x30\x97\x48\x51\x7c\xf5\x70\x2d\x4e\ \xe1\x14\xa2\x90\xf1\x81\xfc\xed\x30\x58\x43\xf7\x35\xbf\x22\x4e\ \x00\x1c\x8b\xc9\x0b\x85\x08\xbb\xf4\x12\x4c\x94\x81\x30\xff\x69\ \xb6\x1b\x9d\xfc\x49\x10\xf4\xf8\x5c\x64\x33\xc3\xab\xd4\x04\xdb\ \x48\x15\x49\x66\x32\x4a\x50\xe2\xe6\xe9\xa8\xd8\x5c\xda\xe5\xe1\ \x0b\x35\xcd\x3d\xff\x14\xdd\x9d\x21\xc5\xfa\xfa\x55\x5d\x30\x66\ \x69\xea\xfd\x10\xe0\x35\xa7\x3a\x55\x57\x2d\x17\x31\xcc\xb6\xa3\ \x83\xc9\x0f\x60\x1e\x57\x41\x8a\x9c\x73\xad\xc9\xe3\x9b\x30\x58\ \x80\xa1\x79\x79\x95\x33\xb8\xd8\x51\xac\x62\x99\xe2\x86\x34\x35\ \xe0\xb4\xdc\x47\x02\xe9\x23\x58\x98\x41\xf5\x79\x70\x61\x49\xa1\ \xae\x1e\x1a\x17\x71\x14\x94\xa0\x59\x02\x40\xc3\xa4\x70\x51\xb1\ \x36\x61\x31\x6e\x1d\xed\x57\xc0\x8c\x0a\xd1\x05\x73\xf1\x27\x53\ \xaa\x74\xa5\x71\xdb\xf5\xca\xb6\x37\x66\xcd\xcf\xcf\x1f\x94\x94\ \xfd\xc9\x96\x58\x13\x9a\xc7\x0b\x9e\x05\x21\xad\x99\xf8\x31\x9d\ \xf4\x9a\x35\x0a\xa6\x52\xed\xa6\xa4\xd0\x9c\xa3\xfc\x49\x1a\x25\ \xfb\x9e\x46\x71\x86\x81\x32\x42\xb8\x00\xd3\x33\xaa\x2d\x2f\x81\ \x65\xa1\xab\xc2\x97\x07\xb5\xcd\x1f\x42\xe3\x6a\xa0\x41\x97\x89\ \x2e\xaa\x3a\xbf\x17\xac\xd8\x8b\xc6\x8f\x32\x4f\x56\x45\x84\x0b\ \xd6\xd8\x8c\xce\x41\x60\xe4\x06\x3c\x5f\x67\xfe\xf3\xcc\x3b\x4b\ \x68\x0e\xc2\x78\x44\x0e\xc2\xf6\x05\xad\x10\xf0\xeb\x2e\xe6\x8b\ \xf3\xbd\xdd\xaa\xc9\xe1\xf7\x65\x42\x78\x1d\xed\x93\x70\x05\x33\ \x19\xa5\xae\xdf\x2a\x5f\x3c\x66\x9b\x21\xa6\xd7\xc1\xde\x81\xc7\ \x84\x4a\xff\xa1\x9e\x60\xe9\x3b\xdf\xf9\xce\xf7\x30\x91\xaa\xc1\ \x02\x87\x50\x18\xe7\x0d\x4c\x64\x90\xb4\x36\x16\xb5\x21\x05\xb9\ \x80\xf2\xd2\xf2\xe1\x63\x5a\x3a\x31\x66\x72\x76\xa8\x26\x37\x3f\ \xa7\xe5\xb1\x7d\x2a\x4d\x2f\xb0\xc0\xa0\x01\x1c\x8b\x1d\x3c\x70\ \xd9\xfc\x1b\x90\xcf\xef\xa2\x4d\x63\xf6\x27\x08\xaf\x17\x44\xc5\ \xc5\xb1\xc9\x14\x49\x6d\x67\xc8\xeb\x0b\x71\xc1\x91\x15\x58\x85\ \x0c\xaf\x1b\x8c\x49\xf6\x0d\x12\x96\xbb\x15\x80\xe9\x96\x19\xc9\ \xb6\xcd\x85\xf6\x1d\x5f\x08\x0e\x18\x9b\x30\x8e\xe9\x8b\x42\xc8\ \x57\xc0\xfc\x3d\x08\xe4\x5f\x0e\xfa\xb4\xfa\xce\x3b\x55\x67\x1d\ \xed\x0d\x1d\xcb\xff\xf3\xab\x5f\x7d\x54\x92\x7b\x4d\x4f\x50\x2c\ \x85\xed\x25\x63\x48\xe8\x50\x3c\x1e\xbf\x85\x92\x51\x41\xd0\x33\ \x45\x27\x25\x4b\x77\x55\x24\x27\xcc\x62\x2b\xad\xdc\xb9\x3a\xfe\ \xba\x4f\x09\x5c\x21\x94\x4e\x09\x75\x63\xa2\x05\x15\xcf\x03\x82\ \xe5\x59\xe5\xa7\xd1\x98\x79\x3e\x81\x76\x22\x61\xae\xdb\x82\x04\ \x90\x42\x33\x69\xa8\x2f\x20\xc0\xc5\x76\x8b\xb9\x04\xb3\x2e\x89\ \x48\x85\x50\x9b\x27\xf5\xbe\x84\x15\xd4\x5a\xcf\xf8\x4d\x76\x88\ \x40\x8a\x97\x6b\x14\xdc\xa3\x6c\xdd\x11\x0d\xb5\xdc\xac\x0e\x55\ \xb8\x37\x8f\xd5\x2c\x04\x14\xc8\x13\x26\x11\x8c\x47\xdc\x0f\x6c\ \xda\xa0\x24\x2f\x6f\xe7\x0a\x79\xdb\x0d\x62\xd3\xc4\xe3\xf9\x62\ \x71\xca\x4a\xf2\x5a\x01\xd8\x93\xb3\x7b\xf7\xee\x7d\x84\xf6\xb8\ \xd9\xdc\xe8\x04\x89\x02\x49\x04\x50\xe4\xbd\xa0\x72\x79\x28\x67\ \xb5\x5a\x2b\x38\xca\x9d\x9e\xd7\x12\xe7\xfb\xf7\xec\x84\x11\x59\ \x8d\x37\x1d\x17\x01\xd5\x29\x54\xa6\x68\x5e\x56\x6c\x1c\x0f\x63\ \xce\x84\x22\x50\x1b\xad\x24\x73\x8a\x0f\x61\x5d\x32\x61\xcf\xb1\ \x59\x9c\xc7\xc2\xb2\x2f\x5f\xd2\xfc\xcb\x0d\x30\xc6\xa7\x64\x66\ \xb0\x53\x9e\xd8\x66\x4b\xad\x14\xc6\x5d\x7c\x8a\x90\x03\x78\x80\ \x26\x21\x02\xa1\x76\xf3\xf7\x10\x08\x2e\xa8\xb2\xd1\x08\xb8\x32\ \x8b\xf6\x97\x30\xff\x32\x18\x80\xdb\x9e\x25\xc3\xdc\xf0\xcf\xde\ \xad\xba\xcf\xe9\xec\x55\x74\xbf\xff\xdd\xef\x7e\x05\x26\x4b\xe2\ \x73\x8d\x00\x3a\x49\xd2\xfe\xfd\xfb\x1f\xc7\x0a\x5e\xd9\xbe\x7d\ \xfb\x36\xfa\x67\x0a\x00\x84\x5d\xbb\x76\x69\x79\x0e\xf3\x86\xa9\ \x26\xa4\x86\x30\x59\x72\x83\x53\xa7\xd4\xbd\x69\x2d\x0c\x46\xf0\ \xd7\x12\x3d\xfe\x57\xb4\x34\x0e\x63\x2d\x03\xb3\xa6\x7f\xfe\x99\ \xe7\x8c\x55\xab\x7b\xa3\xc7\xcb\x4d\x97\x4c\x2e\x88\xb5\xa0\x79\ \x00\x8b\x66\x08\x02\x80\xc9\x2c\xe9\x33\x9a\xf3\xc8\x00\x27\x5e\ \xdc\x7f\xe5\x0e\x26\xee\x97\x46\x76\x01\x8e\xfd\x54\x99\x7d\x30\ \x69\xe6\x75\x0a\x08\x1d\xa0\x2d\x92\x3c\x65\x6b\xf2\x2f\x32\xd7\ \x14\x82\xce\x05\x01\xbf\xa8\xf2\x7d\xdd\x8a\xdc\xb2\x5b\x29\xc0\ \x6f\x1e\xed\x9b\x8d\x1d\x67\x4e\x9f\x7e\xe2\x99\xa7\x9e\x3a\x20\ \x56\xff\x53\xdf\x0e\x77\xb2\x42\x5e\x8b\xf9\xb6\x6c\xd9\xf2\x16\ \x3a\xc5\x8e\x49\x8a\x82\x50\x9d\xee\x6a\x93\x56\xb7\x8c\x00\x6c\ \xda\xea\x90\xa2\xd6\xd0\x68\x17\x3e\x38\x21\x77\xf9\x15\xb0\xa0\ \x2c\x8c\x11\x80\x74\xac\x69\x63\xe1\x24\x55\x52\x7a\xb5\xa7\xde\ \x55\xae\x7a\x77\x05\x40\x72\x98\x08\xf9\xb0\x0e\x23\x00\x21\x08\ \xfc\xff\xac\xa7\xec\xb4\x0f\x30\x75\xae\x69\x3a\xe1\x5d\x60\x90\ \xa3\x44\xcc\x53\xa8\xa7\xfd\x72\xd4\xb6\xa1\x58\xc3\x32\xda\x9f\ \x02\x57\x26\xb9\xe7\x22\x20\x59\x00\x24\xfb\x07\x75\xaa\x2f\xa5\ \x1d\x0f\xfe\xa1\x6a\x91\x90\x49\x7a\x44\x92\x57\xfb\xc6\x23\x8f\ \x3c\x38\x7e\xf6\xec\x31\x33\xe5\xcf\x7a\x3d\xee\xb2\x0d\x75\x86\ \x77\x69\xdb\xd9\x6a\xb2\x26\x12\x8d\xb2\x80\x98\xc2\x50\x69\x6e\ \x16\x90\xa1\x2f\x8f\xd9\xa2\x3d\x00\xad\x81\xc4\x27\x15\x0c\x9d\ \xc5\xa5\x2b\x80\x95\x09\x18\xd4\x06\xa4\xa6\x80\x34\xcd\x89\xa6\ \xba\x60\xbe\x67\x65\x83\x66\x87\x0f\x40\x0d\x60\xbe\x41\x9b\x5b\ \xd8\xac\xa6\x2d\x80\xfa\x82\x47\xb2\xe3\x53\x69\xde\x0a\xa5\xa3\ \xfd\x4e\x25\x6b\x29\xc1\x5c\xb1\x3e\xb5\xdc\xad\xc1\x89\x3c\x37\ \xce\x50\xfa\xe2\xd1\xc1\x69\x7c\x3f\x6b\x36\x47\xf4\xea\x04\x09\ \xd2\xba\x7f\xf7\x51\x45\x79\xf9\xba\x48\x64\x9a\x9b\x9b\x63\x2f\ \xd3\xfe\xaf\xfd\xcd\xc3\x0f\x3f\x64\xf2\xb9\x9f\x77\x83\x44\x89\ \x0d\x88\xb3\xec\xb8\x7a\x07\x1b\x0c\xc2\x30\x6f\x22\x01\x42\x88\ \xab\x44\xf9\xe9\x00\x88\x04\x5d\x5b\x76\xc6\xd3\x15\x16\xd6\x80\ \x29\x07\x40\x74\x38\x86\xf1\x98\xc7\xf9\xa6\x52\x7d\x9e\xd2\xc3\ \x4d\xa5\xb7\xf8\x31\x5f\x7c\x33\x12\x82\xa2\x58\x40\xbc\x85\xe0\ \x4d\x59\x60\x13\x0c\xb9\xcb\x9e\x0a\x0b\x3e\xac\x47\xd7\x7e\x9a\ \xcc\xdb\x83\x10\x98\xd3\x66\x83\x26\xdd\x5d\xa0\xc4\x9d\x26\xde\ \xcf\x60\x55\xb9\x30\x80\x99\xd1\x59\xf2\xfd\xf0\xbb\xde\xae\x91\ \xb7\xbd\x55\xd9\x72\xc9\x68\xde\x00\xdf\xe4\x9f\xfd\xf1\x1f\x7f\ \x14\x0c\xb8\xe4\x32\xd3\xcf\x2b\x80\x06\x7e\x33\x07\x72\x3a\xec\ \xc8\xbc\xdd\xb8\x42\x10\x21\x18\x30\x0b\x43\x65\xfa\x73\xbe\x4a\ \x99\xa2\xa4\xa6\x44\x0f\x9d\xa3\x5e\x13\x8d\xa0\xa0\x6c\x46\x16\ \xee\xf6\x51\x2c\xf9\x14\x1d\xf6\xa3\x75\x3f\x11\xc1\x68\x3e\x0c\ \xf3\x09\xf0\x20\x45\x0c\xa7\x34\x05\xc5\x65\x30\xc0\xad\xdb\xf6\ \x99\x93\x6d\x08\x78\xa4\xd1\x69\x31\xe4\xca\x8f\x2d\x61\xa3\xcc\ \x99\x49\xca\xbe\x2d\xf2\x2d\xa2\xf1\x59\xfc\x7d\x0e\xca\x86\xb9\ \x9e\xd6\x85\x44\x46\xb9\x9b\x76\x6b\xcb\x07\xff\x40\x45\x22\xce\ \x2c\x9a\x27\xb3\x73\xbf\xfd\xcd\xbf\x7d\x60\xec\xd0\xa1\xa7\x8b\ \x92\xfb\x8b\x6e\x92\x32\xfb\xf4\xcf\xd0\x2e\x5f\xcb\x0b\xc5\x8d\ \xc6\x15\x82\x26\xb4\x25\x13\xb6\xf8\xa9\xd0\xc5\x4d\xc6\x4b\x8a\ \x67\xaa\x14\x44\x4d\x2b\x00\x27\xe0\x20\x04\x53\x81\xf9\x18\x61\ \x3a\x1c\xe0\xd8\x6a\x1d\x4a\xf2\x3d\x0d\xf3\x90\x2f\x81\x2a\x5a\ \x4d\x10\xe2\x9a\xb5\x82\x00\x56\x13\x2c\x21\x04\x62\x77\x35\x27\ \xce\x31\x9f\x98\xcb\x41\xd3\xe0\x45\x17\x00\x98\x89\xa0\xf1\x3a\ \xf9\xfd\x42\x58\x21\x28\x98\x37\xf9\x46\x5a\xe7\x48\x17\x67\xe8\ \x18\xed\x78\xe0\xe3\xaa\x04\xfc\x2d\xe6\xd9\xd4\xf1\xdc\xd3\xcf\ \xfc\xf9\xb7\xbe\xf6\x57\x7f\xce\x74\xc5\x7f\xcc\x2e\xb1\x26\x54\ \x38\x76\xec\xd8\x89\x15\x2b\x56\xec\x21\x22\x0c\x21\x04\x6b\x05\ \x81\x54\xca\x36\x29\x6b\xe5\x9c\x52\xdd\xe6\x5d\x5e\xcd\x34\x25\ \x21\x41\x7e\xcc\xd1\x6f\xb2\x33\x98\x07\x94\xc2\x31\x4c\x3e\xc1\ \xf7\x14\xe7\x93\x5c\x8f\x73\x53\xa8\x95\x83\xd9\x1e\xa3\x6b\xdd\ \xc9\x71\xc0\x93\x18\x7e\x5e\x47\x10\x29\x1f\x58\x40\x37\x0a\x0a\ \xd3\x0c\x49\x67\x82\x1a\xec\x0e\x28\x19\x20\x45\x07\xe8\x42\xf8\ \x7b\xa0\x4c\xc7\x38\xd8\xa3\x13\xfe\x08\x9a\xbf\x49\x3b\x3e\xfe\ \x31\x55\x10\xfa\x0c\xcc\xa3\x38\xb3\x9f\xe9\xd1\xbf\xfc\x93\x2f\ \x7c\xb2\x5b\x9a\x5b\xfe\x25\xf6\x09\x7a\x68\x69\xe1\xf8\xf1\xe3\ \x63\xbc\x36\xbf\x0d\x3c\xe8\x09\x1b\x50\x8c\xc7\xa1\x24\x05\xd3\ \xb0\xf2\x4b\xa0\x30\xd5\xa1\xdf\xd6\xf6\x08\x41\x62\x0c\x30\xfa\ \xa1\x90\x80\x3e\x04\x84\x20\xcc\xc8\x79\x35\xfc\x26\x77\x87\xcc\ \x66\xa7\x06\x63\x83\xb1\x2e\x51\x00\xc1\x36\xd6\xe4\x28\xe9\x49\ \x5d\x34\x63\xbb\x32\x01\xf5\x76\xc3\x3c\x05\x4f\x97\x2f\xac\x70\ \x93\x88\x54\x04\x43\xdc\x84\xaa\x80\xcd\x8b\x3c\x1f\x7d\xd7\xbb\ \xb4\xf9\x5f\xfd\x4b\x15\xb1\x94\xe9\x99\x19\xcb\xfc\xcb\x87\x0f\ \xbf\xf0\x97\x9f\xff\xc2\xbf\x49\x36\xea\x13\xe7\xe0\xe1\x97\xdd\ \x29\x4a\x16\xeb\xce\x8c\x8f\x8f\x1f\x23\x2a\x98\x04\xa9\x27\x1c\ \x89\xd8\x4c\xaf\x19\x89\x53\xa7\xaf\x22\xcb\x4a\xab\x9c\xaf\x90\ \x81\xd5\x2d\x53\x0c\xb6\x2a\x73\xaa\x50\x05\x43\x2e\x0b\xe0\x84\ \xd9\xa2\x2b\x15\xb0\x96\x62\x95\xe3\x0a\x54\x6b\x51\xc1\x05\xd8\ \x1a\x8c\xb8\x50\x09\xcc\x00\xe9\xa2\x50\x02\x9c\x48\xf9\xe8\x4d\ \x40\xa1\x26\xd6\x57\x8f\x23\xdb\x8c\x26\x7c\x51\x1d\x66\x0d\x9b\ \x1f\x7c\x50\x43\x77\xdd\xa1\x2c\x51\x69\x6a\x7a\xda\x00\x1e\xbb\ \x59\x0e\xbf\xf8\xb5\xbf\xf8\xef\xf7\x47\xf2\xd9\xf1\xb3\xac\xfd\ \x57\xb9\x59\x3a\x82\x05\xdc\xc4\xcf\x61\xfe\x94\x24\x69\x17\xdb\ \x68\x44\xe5\x68\x37\x48\x85\xca\x00\x62\x7e\x5e\xc5\xf1\x17\x15\ \x29\x8f\x29\x1d\x98\x57\xa8\x51\x6d\xed\x0a\x35\x8d\x55\xfe\xf9\ \x9a\x10\xff\x1c\x4b\x9d\xfd\x4e\xed\x37\xc4\xed\x1e\x23\x9e\xd4\ \x29\x67\xa1\x20\xc2\x0c\xa2\x6d\x46\x2f\x2c\x4c\x4e\x34\xc1\x34\ \x56\xa6\x17\x71\xd7\x5d\xda\xf8\x9e\x7b\xd5\xc0\x12\x17\xb3\xcb\ \x76\x57\x3a\x95\xac\x8e\x1c\x3c\xf4\xf8\x5f\x3f\xf4\x95\x8f\x77\ \x57\x4a\xa7\x8f\x4b\xee\x6b\xb1\x5d\x3e\x44\xc7\x68\x2b\x7b\x08\ \x3f\xc5\x6f\x05\x7e\x97\x5c\xc1\x61\x03\x92\x22\x21\x80\x09\x33\ \x8e\x19\x7f\xa6\xa7\x57\x3e\x7d\x08\x3f\x3d\xa5\x1e\x65\x11\x48\ \x49\x81\x6a\xc3\xee\x23\xf0\xd7\x01\x4b\x5b\x11\x43\xcd\x76\xba\ \x6b\x81\xc3\x69\x63\x82\x9f\xf3\x86\x60\xda\xe4\xfa\x68\xde\xa3\ \x08\xba\x58\x71\x75\xae\xe1\xd1\x97\xdc\xa3\x4d\xec\x47\x0e\xb2\ \x1b\x2d\x47\x42\xb6\x40\x92\xc3\xfe\x3f\xa3\xf9\xc6\x81\x7d\xfb\ \xfe\xc7\xf7\xfe\xfa\x6f\xfe\xeb\x48\xd3\xbb\x78\x04\x91\xbe\x96\ \x3f\x98\x08\x40\xc3\x3b\x77\xee\xfc\x83\x37\xbd\xe9\x4d\x0f\x12\ \x26\x53\xec\x20\x17\x20\xa9\xb0\xc9\xfd\x59\x68\xdc\x41\x61\xc5\ \x9c\x0a\xaf\x9e\x94\x26\xc7\x15\x9a\xbf\xa4\x1e\x9a\x1b\x09\xf2\ \xf6\x40\x89\xd4\xb5\x4a\xee\x6e\x84\xc0\x3f\xf1\x8c\x7c\x50\x20\ \x88\x79\x87\x60\x38\xa2\x1a\xe3\x54\xa9\xaa\x59\xee\xa9\x62\x69\ \x03\x6f\x78\x83\x46\xd8\x7d\xee\x74\xa5\xf1\xa0\xaa\x96\xb2\x59\ \x9b\xe1\x4d\x63\xf6\x67\xcf\x9c\x99\x7b\xe6\xc9\x1f\xfc\xa7\xa3\ \xcf\x3d\xff\xcd\x95\xd4\x73\x07\x25\xef\xf5\xf8\xc9\x8c\x03\xa5\ \xf9\xdc\x7a\xc7\x1d\x77\x7c\x82\xd7\xcd\x6f\xc6\x25\x7c\x84\x4b\ \xc5\x63\x31\xbb\x83\x3b\x2c\x29\xee\x0f\x28\xe6\x43\xb3\xe4\xe3\ \x45\x4c\xb4\x3a\x35\xa9\xe6\xec\x8c\x7c\x30\xa0\x82\x79\x77\x50\ \xb7\x55\x5e\xc3\x54\x85\xe1\x88\x5c\x00\xd6\x4b\x53\xe3\x0f\xf4\ \xab\x7f\xcb\x56\xf5\x6e\xdd\x22\x1f\x6e\x46\xd9\xa0\x3c\x6e\x96\ \xe3\x99\x2c\xcf\xd2\xd4\x10\xd9\xaa\xcb\xa6\xcd\xbf\xfb\xc1\xf7\ \x1f\xfd\x6f\xde\xe2\xe2\xd1\xf5\xf2\x2a\x3f\x92\x9a\xaf\xf7\x8f\ \xa6\x82\xd0\x8a\x0d\x1b\x36\xdc\x73\xe3\x8d\x37\xde\xbf\x7e\xfd\ \xfa\x1b\x00\x4a\xb3\xc9\xda\x6e\x47\x09\xe3\x1a\x21\x63\x15\x50\ \x14\x0d\x47\x8c\x60\x10\x4a\xc0\x74\x6b\x3b\x11\x83\x63\x87\xeb\ \xe2\x9a\x82\x41\x46\xbf\x5c\x47\xb6\x86\x2f\x03\x6e\x14\x26\x2a\ \x96\x4a\xc8\xab\xd0\xc9\xeb\xbd\xd3\xe3\xe3\x2f\x1c\xdc\xf7\xe2\ \x97\xce\x1d\x1d\x7b\x22\xd3\x6c\x2c\x8d\x4b\x8d\x5f\xe7\xcf\xe6\ \x1c\x28\x02\x0d\xaf\x5b\xbb\xf6\x2d\x3b\x76\xee\xfc\x17\xb8\xc5\ \x6e\x04\x11\xc2\x42\xac\x20\x00\x4f\x11\x3d\x14\x0c\xc0\x3c\xcc\ \xf2\xfb\x20\x2c\x3f\x00\x01\x78\x68\x9f\xff\xd9\xa4\xa8\xe1\x79\ \x96\xea\x00\x62\x0d\xe6\xcb\x30\x6f\x18\xe7\x17\xa5\x26\xa7\x2f\ \x4f\x9c\x3f\xff\xdc\xe1\xfd\x07\xbe\x7a\xe1\xd4\xf8\xd3\x51\xcf\ \x9d\x0f\x49\xb5\x73\xbf\x41\x3f\x9c\x74\xa0\x30\xec\xf4\x26\x62\ \xb1\x2d\xdb\x77\xee\x7c\xc7\xc8\xe8\xe8\xef\x80\x0f\x1b\x32\xec\ \xd4\x64\x07\xea\xdf\x0b\x02\x4d\x07\x10\x46\xe7\x5d\x9d\xda\xbb\ \x37\x08\xb7\xb6\x75\x45\x35\x6a\x4b\xd8\xa5\xc5\xc5\xc2\xfc\xdc\ \xdc\x31\x36\x6b\x3e\x79\xe4\xc5\x17\xff\x4f\xad\x54\x79\x35\xe8\ \xd5\x97\x03\xa6\x60\x93\x9a\xbf\xa9\x3f\x9d\x75\xd4\x2a\x0d\xa2\ \xb0\xd7\x8d\x81\x0f\xaf\xdd\xb0\xfe\xc6\x15\xc3\xc3\xd7\x03\x94\ \xab\x12\xc9\xd4\xca\x70\x24\x9c\xa6\xf1\x8a\x57\x04\xc3\xdc\x6c\ \x18\xaf\xd0\xb2\x2a\xc1\xfc\x32\x6d\xab\x0b\xec\x4e\x3f\x37\x39\ \x31\x71\xf8\xec\xa9\xf1\x83\x5c\x9f\xa6\xfa\xcb\x8a\x3e\xd1\xb2\ \xe4\xfd\x36\xfe\x78\x9a\xba\x0f\xb7\x97\xc8\xf2\x15\x91\x15\x8c\ \xc3\xe8\x84\x9a\x9c\xc7\xfc\x3d\x47\xb8\x3d\x90\xc8\xf5\x32\x9b\ \x54\xcb\xa0\x80\xcd\x08\x0c\xd7\xaf\xf5\x8f\xa8\x9d\xdf\xb0\x5f\ \xad\x37\xf5\x3a\x7f\xfe\x1f\x5f\xbc\xdd\xe6\x1a\x53\x0c\xc2\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x0d\x06\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xec\x00\x00\x06\xec\ \x01\x1e\x75\x38\x35\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ \x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x0c\x83\x49\x44\ \x41\x54\x78\xda\xed\x9b\x5b\x68\x55\xd9\x19\xc7\xd7\x49\x4e\xa2\ \x26\x26\x1a\xe3\x35\x31\x5e\xc6\x54\xad\x97\x4a\x95\x29\x38\x14\ \xc4\x22\xb6\xcc\x73\x9f\x2a\xf4\x61\x5e\x7c\x10\xc4\xc2\x0c\x08\ \x7d\x28\xf8\x54\x4a\x1f\x15\xa4\x4f\xf6\x51\x0a\x52\x90\x4e\x07\ \x41\x94\xfa\xe0\xfd\xd6\xaa\x03\x5e\xc6\xfb\x35\x51\x63\x2e\x46\ \xcd\xc5\x7e\xbf\x0d\xbf\x61\xcf\x31\x92\x8c\x1c\x83\xc1\x2c\x58\ \xec\xbd\xd7\x59\x7b\xad\xef\xfb\x7f\xf7\xb5\x93\xc2\xeb\xd7\xaf\ \xd3\xc7\xdc\x2a\xa2\x8f\x03\x30\x0e\xc0\x38\x00\xe3\x00\x8c\x03\ \x30\x0e\xc0\x47\xda\x8a\x1f\x1a\x41\xc7\x8e\x1d\xdb\x53\x5d\x5d\ \xfd\xb3\x69\xd3\xa6\x7d\xe1\x98\xad\xad\xad\xed\x8f\x95\x95\x95\ \xf3\x57\xaf\x5e\xfd\x8b\x72\xed\xf7\x41\x24\x42\xdb\xb6\x6d\x5b\ \x50\x2c\x16\xff\x10\xb7\x9f\xcd\x9e\x3d\xbb\x65\xf2\xe4\xc9\x93\ \x18\x87\x36\xaf\xb6\x81\x81\x81\xc1\x4b\x97\x2e\xdd\x1a\x1c\x1c\ \xbc\xd4\xd1\xd1\xf1\xb7\xbd\x7b\xf7\x1e\x1a\xd3\x00\x6c\xd9\xb2\ \xe5\xb3\xfa\xfa\xfa\xc3\x21\xf5\xaa\x21\x09\x2c\x14\xd2\xdb\xc6\ \x03\x84\x74\xfd\xfa\xf5\x43\x15\x15\x15\xbf\xd9\xb3\x67\xcf\xab\ \xb1\x64\x02\x32\xff\xcb\x9a\x9a\x9a\x43\x21\x84\xe2\xcb\x97\x2f\ \x87\x63\x78\xc8\xb1\x96\x96\x96\xf5\xd7\xae\x5d\xfb\x26\x1e\x7f\ \x35\x96\x9c\xa0\x0c\xfc\xb3\xbf\xbf\x3f\x13\x42\x00\x91\xaa\xaa\ \xaa\x52\x98\x02\x3d\xbb\xb7\x3b\x6e\x9f\x38\x71\x62\xc6\x3c\xa0\ \xd1\x9b\x9a\x9a\xd6\x6f\xd8\xb0\x61\xdd\x98\xd2\x80\xcd\x9b\x37\ \xff\x39\x98\x69\xec\xeb\xeb\x4b\xcf\x9e\x3d\x4b\x0f\x1e\x3c\x40\ \xa5\x47\x0a\x5c\x0a\x27\x99\x1a\x1b\x1b\x93\xad\xae\xae\xee\xaf\ \x71\xf9\x74\xac\x00\x00\xb3\x5f\x04\xf3\x48\x10\xef\x9e\x16\x2d\ \x5a\x94\xc2\xf9\xa5\xe7\xcf\x9f\x23\x65\xe7\xa4\xce\xce\xce\xd4\ \xd0\xd0\x90\x31\xfc\xf4\xe9\xd3\x34\x69\xd2\xa4\x74\xfa\xf4\xe9\ \xf4\xe4\xc9\x93\x44\x0b\xff\x91\x68\x53\xa6\x4c\xf9\xf9\xc6\x8d\ \x1b\x8b\x07\x0e\x1c\xe8\xff\xe0\x01\xd8\xb4\x69\x53\x75\xb4\xe9\ \x71\x0b\xc3\x78\xf6\xb4\x6a\xd5\xaa\x34\x61\xc2\x84\x74\xe3\xc6\ \x8d\x34\x6b\xd6\xac\x74\xea\xd4\xa9\xd4\xda\xda\x9a\xe6\xcf\x9f\ \x8f\x9d\xc3\x60\xba\x7a\xf5\x6a\x5a\xb8\x70\x61\x3a\x7b\xf6\x6c\ \xf6\x4e\x77\x77\xb7\xe6\x00\x68\x95\x2f\x5e\xbc\xd8\x14\x4b\xfe\ \xfd\x83\x88\x02\xdb\xb7\x6f\x6f\x7c\xf4\xe8\xd1\xba\x20\xbc\x3f\ \x88\x9d\x17\xd2\x5b\x31\x73\xe6\xcc\xdf\xde\xb9\x73\xa7\x2b\x88\ \x9e\x1c\x63\xd3\x83\xe0\x84\x16\x00\x42\xc4\xf7\x77\xd1\xa2\x4c\ \x33\x02\xcc\x0c\x84\x5b\xb7\x6e\xed\x0b\x8d\xd9\x4f\x38\x8d\x7e\ \x34\xd6\xfc\xf7\x89\x13\x27\x1e\xbc\x17\x00\x7e\x1d\x6d\xc5\x8a\ \x15\x95\xc1\x54\x6d\x30\xd3\x7a\xe6\xcc\x99\xdf\xaf\x59\xb3\xa6\ \x39\x18\x7d\x10\xd2\x68\xba\x70\xe1\x42\xed\xb2\x65\xcb\xd2\xdd\ \xbb\x77\xd3\xd4\xa9\x53\x53\x57\x57\x57\x7a\xfc\xf8\x71\x46\x6c\ \x84\xad\xc4\xbe\xd8\x3e\x12\x0c\xa0\x90\xa8\x9e\x7e\xc4\x0d\x4d\ \x61\x1d\x1c\x28\x66\xc3\xfd\xe5\xcb\x97\xf1\x07\x98\x13\xfb\xbc\ \x0e\xad\xba\x1c\x4e\xf4\x1f\x3d\x3d\x3d\xff\xda\xbf\x7f\xff\x89\ \x98\x33\x38\x62\x00\x76\xec\xd8\xb1\xf4\xe6\xcd\x9b\x5f\xc5\x6d\ \xcb\xe2\xc5\x8b\x6f\xd6\xd6\xd6\xd6\x04\xa1\x8b\x7a\x7b\x7b\x5b\ \xcf\x9f\x3f\xdf\xc8\x26\xa8\x24\x92\x84\x51\x18\xc0\x63\xf3\x8c\ \x6d\xbf\x7a\xf5\xca\xae\x27\x77\x69\xa4\xce\x38\x44\xd2\x99\xcf\ \x18\x4c\x0c\x1b\x0e\x01\x2d\x68\x51\x0b\x78\x3f\x63\xd8\xe7\x90\ \x7a\x8a\xe8\x82\xf9\x00\x3e\x7e\x22\xdb\x3b\xe8\xee\x6c\x6f\x6f\ \xff\x26\xf6\xfd\x32\xe6\xdc\x1e\x12\x80\xdd\xbb\x77\xa3\x8b\xbf\ \x7b\xf8\xf0\xe1\x5f\x8e\x1f\x3f\x3e\x3b\xd4\x88\x97\x0d\x37\x10\ \x08\xe1\x79\x06\x91\x1e\x1b\xdb\xdf\x78\x46\x42\x74\x1b\x6b\xe0\ \xd0\x64\x9e\x3d\x60\x8c\x7b\xae\xf9\x6e\xf3\x3d\xaf\xac\xeb\x95\ \x0e\x00\x79\xe7\x19\x1a\x09\x08\x00\xc5\xfa\x38\x4f\xfc\x48\xe6\ \x67\x42\x1b\xae\x1f\x3d\x7a\xf4\x93\x37\x00\xd8\xb5\x6b\x57\x4d\ \xd8\xd0\xd7\xa1\xaa\xeb\x62\x92\x4c\xb2\x10\x1d\xc6\xd8\x14\xbb\ \x85\x38\x09\x18\x16\x00\x36\x86\x39\x1b\xce\x0b\x2d\x81\x30\xc6\ \xed\x23\x01\x80\x2e\x93\x79\x10\x58\xcb\x88\xe0\xef\x87\x0f\x1f\ \x66\x1f\x98\x56\x08\xdc\xd3\xfb\xc3\x24\xeb\x6f\xdf\xbe\xdd\x5b\ \xf4\x85\x9d\x3b\x77\xb6\x44\x38\xfa\x36\x54\xb9\x96\xd0\x93\x27\ \x02\x64\x91\x18\xe3\x61\xf3\x69\xee\xdc\xb9\x29\x5e\x06\x08\x36\ \x96\x30\x89\xcb\xe6\x00\x60\xe4\xea\x3f\x20\xd6\xe6\xfa\x00\x25\ \x08\x6a\x80\xfb\x39\xce\x9a\x39\x40\x87\xd4\x00\x3b\xcc\xf1\x1e\ \xfe\x06\x8d\x20\x7a\x60\x56\x08\x12\x20\x42\xab\x11\x24\xeb\x17\ \xc3\x17\xfd\x09\x5f\x9d\x01\xb0\x6f\xdf\xbe\xc6\x90\xca\xb5\x28\ \x32\xaa\x64\x3a\xcf\x3c\x49\xca\xca\x95\x2b\x13\xed\xc8\x91\x23\ \x20\x9d\x81\x10\x7e\x00\xe9\xe6\x01\xc8\x88\x8e\x82\x86\x8d\x01\ \x8d\x35\xb2\x4d\x6d\x6a\x14\x8d\xb9\x30\xc7\x1e\xd3\xa7\x4f\xc7\ \x79\xf1\x9b\x1a\x02\xe1\x43\x81\x24\x20\xa5\x20\xc8\x38\xe0\x2b\ \x79\xd6\xc0\x0c\xe8\xd6\x0f\xfc\x86\xe3\xfd\x2a\x9e\xf7\x64\x00\ \xdc\xbb\x77\xef\x3f\x11\x77\xab\x54\x53\x99\xd7\xfe\xc9\xb8\x02\ \x31\x9c\x48\x46\xa4\xf3\x24\x16\xfb\x82\x10\xcd\x23\x22\x00\x8c\ \xf2\x2c\x00\xae\x9b\xad\x41\x13\x00\x12\x20\xd6\x46\xa3\xc8\x01\ \xf2\x4e\x50\xa6\x35\x3d\x9b\x29\x71\xe9\x6f\xac\x8d\x83\xc4\xe1\ \x42\x07\xeb\xd2\xb6\x6e\xdd\x9a\xdd\x9f\x3b\x77\x0e\x67\x4d\xa4\ \x40\x0b\x2b\x02\x88\x4f\x8b\x21\xfd\xda\x50\x8d\x9f\xe6\xbd\xac\ \xc4\xa9\x8a\x84\x29\x50\x43\xa2\x80\x81\x84\x4f\x9e\x3c\xc9\x34\ \xc6\xd9\x54\x00\x40\x18\x86\x95\x8e\x25\xec\x0f\x34\x80\x36\x6f\ \xde\x3c\x9c\x2a\x5a\x04\x31\xec\x07\xb8\x86\x34\x9e\x5d\x03\x1a\ \x74\xb6\xec\x87\x76\x71\xcd\xfb\x09\xe6\xb0\xaf\xeb\x93\x1f\x08\ \x36\x91\x20\xfb\x7d\xce\x9c\x39\x19\x38\x57\xae\x5c\x31\x5a\x4d\ \x2b\xc6\x4b\xad\x11\x8f\x0b\xbc\xa8\x63\x73\x41\x91\x9e\x31\x63\ \x46\xb6\xb0\xa9\xea\xc1\x83\x07\x9d\x87\x8a\xb1\xd1\x1b\x6a\xc9\ \x06\xda\xbf\x44\x0a\xc4\xf2\xe5\xcb\x49\x65\x31\x27\x18\x05\x54\ \xcc\x0a\xa2\x19\xd7\x9e\x95\x24\xb4\x20\x41\x34\x0d\x3a\x98\x03\ \xb3\xa8\x3c\x57\x23\x13\x82\x50\x20\x8c\xab\x45\xf8\x37\xae\xbc\ \x57\xea\x5c\x0b\xc5\xd8\xa0\x10\x8d\x7c\x9b\x8d\xf3\x5e\x7f\x48\ \xc6\x68\x10\xc6\x6f\x3c\x03\x00\x0b\x43\x30\x44\xd2\x35\x0d\x43\ \x9f\xef\x31\x8e\x2f\x21\xa5\x25\x09\x82\x69\xf6\x05\x60\xd6\x40\ \xc3\xb8\xc2\xb4\x0e\xcf\x7d\xd5\x4a\xf6\x31\x17\xc0\xff\xb0\x26\ \x6b\x01\x12\x7b\xd2\xa0\x01\x3e\xbc\xd7\x17\xd9\xf3\x0d\x0d\xe0\ \x65\x88\xd0\x86\xe9\x82\x90\x0f\x7f\x02\x61\x1e\xfe\x86\x5d\x6a\ \x7f\x02\xa0\x59\xd8\xc8\xed\x2f\x5e\xbc\x08\x68\x48\x1d\x89\x03\ \x00\x3e\x08\x69\xb2\x2f\x84\xeb\x00\xe9\x32\x8b\xf4\x55\x5b\xe6\ \x40\x07\x6b\xe0\xf0\x58\x83\x88\xc3\x3c\x0b\x26\x53\xeb\x61\x53\ \xec\xa2\x2a\xf4\xae\x4d\x2f\x9d\x6b\x10\x85\xa4\x4a\xd3\x56\x9c\ \x1c\x0c\x10\x26\x91\x0c\x73\xd0\x06\x00\x83\x01\x1c\x14\x6b\xe1\ \xb1\xd1\x1e\xf3\x07\x01\x61\x5d\x68\x45\x73\xb8\x47\x0b\x99\x03\ \xe3\x80\x00\xf3\xbc\x8b\x43\x25\x04\x1a\xc5\xb8\xda\x87\x01\xa0\ \x4c\x0d\xc2\x60\xc0\x06\x51\x48\x18\x55\x85\x50\x7d\x47\x14\x46\ \x5c\x61\x1c\x8d\xc1\x31\xf2\x1e\x0c\xb3\x06\x0c\x41\x1b\x0c\xd2\ \x01\x4d\xed\x83\x31\xd6\xa5\x94\xc6\x79\x5a\x1a\xb3\x47\x36\x7e\ \xff\xfe\x7d\x9c\xec\xb0\xf5\x05\x3e\x20\x95\xbb\x69\x32\x46\x15\ \x98\x8a\x63\x2b\x33\x31\x4d\x0b\x46\xa8\xe0\x32\x82\x97\x2c\x59\ \x42\xb1\xc4\x19\x5f\x69\x46\x88\xb4\x61\x1e\xa6\x59\x03\x86\x01\ \x8e\xe8\x01\xd3\x5c\x71\xd0\xac\xc9\x95\x75\x19\xc3\x54\x4c\xb3\ \x05\xe2\xfd\x6b\x80\x9b\xda\xb0\x47\xc2\x28\x04\x40\xac\x21\x92\ \x2b\xb6\x8f\x39\x00\x00\xe6\x01\xe1\xe6\x0d\xe6\x21\x26\x2f\xfa\ \x03\x7d\x92\x76\x0e\x38\x80\x82\xc6\xa8\x25\x8c\x13\xfa\x58\x1f\ \xad\x1a\xd6\x07\x94\xb3\x11\x26\x21\x02\x50\xb5\x41\xd4\xbf\x94\ \x79\x54\x17\x82\x91\x26\x7e\x40\x4d\xe4\x1d\x23\x8a\x79\x88\xe9\ \x30\x73\x60\xd4\xb9\xcc\x43\x5b\xe4\x81\x39\x00\x05\x20\x79\xc7\ \x6d\x1b\x15\x0d\x30\x03\x63\x63\x25\x44\x83\x59\x01\x80\x09\xa4\ \x4d\xb9\x8a\xad\x32\x66\x4a\x8c\x64\x35\x15\xcf\x0e\x64\xce\x08\ \x01\xc8\x98\x0b\x8e\xd5\x04\x88\xf7\xd4\x06\x43\x26\x9a\x85\x1f\ \x61\x9d\xd1\xd2\x00\xe3\x36\x1d\x86\x70\x4a\x84\xaf\x7c\xa6\x08\ \xf1\x84\x5d\x3d\x39\x0c\xe8\xd4\xb0\x61\xa3\x00\xa0\x31\x6e\x78\ \x86\x79\xde\xb1\xe0\xa1\x13\x05\x04\x3e\x9f\x00\xc1\xb4\x7b\x51\ \x67\x70\xff\x56\x27\x58\x56\x0d\x90\x51\x9a\xea\x8e\x9a\xe7\x55\ \xd2\x3a\x9d\x28\xc0\xb8\x67\x06\x8c\x31\x17\xa6\xb8\x1a\xfb\xcd\ \xf4\x90\x3c\xcf\xfa\x05\x8b\x1f\x9a\xd9\xa2\x69\x35\x60\xd0\x0c\ \x9b\x68\x1c\xfb\x8e\xaa\x06\x68\xab\x4a\xd1\x31\x98\x70\x1e\xfb\ \x43\x38\x04\xeb\xe1\x71\x60\xf3\x66\x2c\x49\x4d\xd3\x3e\x49\x03\ \x13\x42\xdd\xbb\x6f\xa3\x29\x30\x6c\x8d\x60\xde\x6f\xea\xab\x84\ \x87\xca\x1e\xc9\x31\x00\xd5\x7c\xe2\xfd\xfa\x80\x3c\x21\x82\x9b\ \xaf\xda\x54\x55\x88\xb7\xb4\x05\x00\x41\x50\x0b\xe6\xcf\x5c\x9a\ \xfa\x6b\x1f\xa7\xe6\xa6\x96\x54\xdd\x96\x85\x4c\xed\x1d\x46\x74\ \xb6\xac\xc7\x3b\xae\x6f\x04\x92\x27\xfd\x0a\xa6\x88\x29\x00\x40\ \x59\x35\x60\xd8\x23\x2b\x01\xb0\xa9\x01\xee\x2b\xd1\x8c\xe5\x35\ \xa1\x50\xf7\x32\x2d\x58\xb4\x34\x15\xeb\xfa\x52\xb1\xba\x39\x75\ \x90\x2a\xc7\x3b\x66\x99\x9e\x31\xa2\x19\xac\xaf\x29\x5b\xd0\xe5\ \xa3\x10\xe1\xd0\xcc\xb3\xb4\x55\x94\xd3\x07\xc8\xa8\x04\x20\x95\ \x52\x60\xf2\x67\x0e\xf9\x7b\x9f\x3d\x23\x7c\xde\xdf\x1e\xcc\x3e\ \x4a\xb5\x55\xf5\xa9\x3e\xca\xd8\x89\x75\x93\x53\xfd\xec\xc8\x19\ \x1a\xa6\x38\xcf\xf7\x5c\xc3\xee\xfe\x76\x35\x0d\xb0\xde\x04\xa0\ \xdc\x3e\x20\x4f\x40\xbe\xa2\xf3\xde\x4c\xd0\xef\x7f\x30\xeb\x5c\ \xfb\xf7\x31\xbf\xa7\x37\x75\x84\xea\x77\xb5\xb7\xa5\xee\xb6\xf6\ \xd4\x1b\x6a\x3c\x21\xbe\x9c\x0f\xe6\x34\x8c\xf5\x2c\x99\x05\x54\ \xe9\x6b\x86\x66\x93\xac\x5b\xda\x8a\x12\x53\x6e\x00\x8c\xdd\x3a\ \x2d\x9a\xa1\xd1\x33\x02\x55\x9f\x79\x3a\x35\xed\x1b\x6f\x5e\xc5\ \x07\x8f\xfa\xba\xd4\xf7\xbc\x27\x3d\x8d\x32\xb9\xb3\xa7\x3b\xf5\ \x15\x99\xfb\x7d\xc5\x0a\x00\xbc\x83\xa7\x57\xd2\xa5\x25\x38\x7b\ \x50\x83\x70\x1d\x1d\x00\x24\x40\x00\x2c\xb9\x75\x4a\x82\xc2\xbd\ \x85\x92\xcc\x6b\xe3\xcc\xc9\xca\xe3\xca\x42\x7a\x45\x32\x55\x5d\ \x91\xba\xba\x3b\x23\xb7\x4e\xa9\xab\xb3\xcb\x13\x6b\x22\x06\x60\ \x19\xf7\x65\xdc\xc6\x98\xc5\xd2\x90\xad\xa8\x57\x2e\x57\xf3\x24\ \x57\x42\xcc\xe3\x21\x42\x7f\x03\xb1\x66\x7e\x48\x0e\xdb\xa4\x9b\ \xfe\xe6\x6d\x96\x10\x56\x37\xb3\x21\x4d\xa8\x9c\x98\xba\x7a\xbb\ \xd2\xa3\x2b\x0f\x01\x0c\x2d\x61\x4d\xee\xcd\x1a\x3d\x87\x54\xab\ \xbc\x1f\xdd\x54\x18\x06\xf2\x84\xc0\x84\xa0\xd0\x4c\x7a\x90\x9a\ \x80\x51\x10\x91\x12\x23\xfd\x7c\xf1\x83\x60\x3c\x95\xce\x67\x82\ \xda\x33\x8c\x73\x82\xb4\x60\xc1\x02\xcf\x27\x05\xd8\xc4\x89\x44\ \x69\x74\x8b\x21\x9d\x9a\xcd\xb3\x3a\x80\x80\x60\x6d\x14\xd5\x67\ \x0c\x66\x01\x8a\xda\x3d\x3e\x5b\x65\xc0\x18\xeb\xad\x05\xb4\x65\ \x41\xf0\x9c\x32\x3e\xdb\x71\x40\x2b\xd0\xcc\xc9\x3b\x42\xb5\x84\ \x3d\x47\x4f\x03\x4c\x47\x05\x82\x67\x08\xf1\x68\x8b\x31\x99\xf6\ \xd0\xd3\x12\x1a\x10\x50\x79\x6b\x04\xab\x41\xdf\xf1\xec\x12\x9a\ \xa9\x20\x39\x12\xf3\x5c\xd0\x33\x4a\x80\xf5\xd3\x1d\xe6\x05\xf3\ \xa3\x75\x20\x62\xfd\xaf\xf3\xd3\x0c\x60\xca\x6a\x4d\x02\x21\x1a\ \x40\xf2\x1f\x47\x19\x83\x21\x8b\x17\xa4\xed\x3c\xc3\x27\x5f\x77\ \x00\x94\x4a\x12\x06\xd9\x03\xe6\x35\x09\xfd\x0f\x42\xe0\x58\x8c\ \xdf\x46\xd7\x07\x58\xcf\xeb\x84\x54\x77\x2b\x40\x98\x32\x13\xb4\ \x74\x36\x1c\xf2\x9b\x45\x8b\x15\x9d\x1f\x52\x61\x44\x8f\x1e\x5f\ \xaa\xd1\x0e\x4f\x95\x00\x8f\xf7\x33\xa0\x3c\x29\x6a\x6e\x6e\x36\ \xed\x1d\x55\x1f\x20\xc3\x1e\x45\xeb\x18\x01\x85\x7c\xdc\x83\x4e\ \xf3\x7a\x01\x31\xf4\xe1\x20\x61\x54\xd3\x00\x00\xde\xa1\xf6\x67\ \x1d\xd7\xd4\x21\x5a\x4c\xb1\x27\x63\x74\xd6\xc0\xf9\x01\xfa\x88\ \x00\xe0\x0b\x71\xb9\x01\xc0\xa1\x69\xbf\x66\x6c\x48\x0b\xf5\xd5\ \x57\xc0\xb8\xde\xde\x52\xd7\x44\x4a\xa6\x4a\x73\x0b\x55\xde\x22\ \x27\x9f\x0c\x79\x62\x84\xf4\x31\xbb\x11\x29\x6c\x31\x50\xae\x61\ \xd1\x72\x54\x7f\x36\x88\xb3\x04\x2e\x05\x06\x10\x20\x54\xe7\x05\ \x13\xac\x81\xdd\x23\x71\xa5\x6a\x6d\x60\x46\x49\xb7\xb6\x27\xf9\ \xf1\x54\x29\xff\x75\x8a\x77\xf9\xd6\xc0\xbc\xb5\x6b\xd7\x72\xec\ \xa6\x06\xe9\x24\xf9\x2e\x21\xdd\x00\xde\x87\x06\x34\xf0\xf0\x0e\ \xcd\x8c\xee\x6d\x5a\x80\x2d\x2a\x39\xbb\xc7\xde\x10\xe7\x87\x0d\ \x08\xf1\x4b\x8e\xa7\xba\x1e\x8c\x70\xc6\x0f\x53\x00\xc5\xf1\x39\ \x6b\xc8\x98\xef\x20\x6d\x00\x63\x3d\x2b\x4e\x2a\x40\xd6\xf6\x3d\ \x40\xf5\xbc\x01\xba\xa0\x01\x20\x6f\x15\xf9\xdb\x5b\xff\x14\xed\ \xc7\xb6\x7c\xf5\xa5\xbd\xea\xfd\xd9\xc0\xdf\x4a\x9b\x4e\x12\x8f\ \x0e\x51\x48\x15\xa2\xf3\x69\x33\x34\xd1\x79\x9f\x64\xc7\x46\xe6\ \x67\x68\x33\x29\xe2\x7d\x4b\x5d\x01\xf8\xee\xbb\xef\x86\x22\x59\ \x00\xd1\xd0\xb3\x11\x49\xfe\x5b\x8c\x81\x9b\x64\x5a\x6c\xca\x22\ \xf9\xd8\x9b\xaf\xeb\xed\x2c\x6e\x4d\x0f\x61\x7e\xa8\x90\x28\x8f\ \xb8\xec\x6e\xea\xb5\xa4\x79\x86\xef\x91\xd8\x70\x69\xb9\x66\x82\ \xcf\xf0\x0b\xb6\xe7\x83\x23\x31\x57\xfd\xc7\x85\xf8\xfb\x86\x2f\ \x63\xa8\xad\x18\x52\xea\x08\x6f\x79\x28\x08\x5f\xef\x5f\x58\x04\ \x83\x32\xe2\x55\xe2\x65\x12\x2f\x3f\x10\x44\x7c\x1b\x8f\xcf\xf2\ \x69\xae\xcd\xf8\x3e\x82\x26\x38\x95\x01\xe8\xd4\x58\x63\x7a\xd0\ \x50\x13\x9d\xbf\x57\x80\x3e\xf6\x1b\x88\xf1\xbe\xb8\xbc\x88\xa9\ \x8f\xc3\x41\x3e\x09\xa0\x7e\x6c\x02\x83\xd0\x3a\xc2\x9c\x2e\x45\ \x38\xfe\x3a\xd6\xbb\xc0\x29\x7e\x21\xfe\xf6\x7e\x52\x2c\xbc\x3a\ \x54\xf6\xf3\x40\x77\x59\xfc\xf0\x13\xfe\xcc\x8d\xf9\x79\xc9\x4b\ \x67\x34\xa0\xbe\x1d\xb6\x74\x24\x88\xf8\x5f\xbc\xdb\x99\xde\x4f\ \x73\xc3\x42\xb4\xd7\x65\xc8\x4f\x90\x0e\xb4\x12\x1b\xef\x45\x7f\ \x12\x7f\x71\xfa\x3a\x0b\x81\xf1\xf7\x7d\xd3\x02\xed\x96\x60\x66\ \x6e\x3c\x83\x7e\x7d\x00\x41\xfd\xca\xef\x48\xb2\x10\x9d\x7b\xfa\ \x60\xdc\xb3\x50\x7b\xcc\xb9\x16\xd7\xa7\x69\x6c\x34\x40\xec\x23\ \x68\x04\xe3\x7d\x0e\x9a\x03\x00\x42\x15\x99\x6c\xf4\x9a\xe8\x18\ \xa2\xfa\xeb\xb5\x40\x67\x21\x54\x07\x7f\x44\x07\xc5\x34\x86\xdb\ \xf8\xbf\xce\xa6\x34\xfe\x5f\x63\xe3\x00\x8c\x03\xf0\x11\xb7\xff\ \x03\x7f\x19\x0a\xe4\xd7\x62\x63\xda\x00\x00\x00\x00\x49\x45\x4e\ \x44\xae\x42\x60\x82\ \x00\x00\x15\x14\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xec\x00\x00\x06\xec\ \x01\x1e\x75\x38\x35\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ \x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x14\x91\x49\x44\ \x41\x54\x78\xda\xe5\x5b\x79\x8c\x64\xc5\x7d\xfe\xbd\xa3\x8f\xe9\ \xee\x39\x76\xa6\x97\xdd\xb9\x96\x3d\x66\x61\xef\x05\x61\x6c\xae\ \xa0\x38\xb6\x20\x4e\x2c\x22\x27\x32\x09\x92\x0f\x14\x20\xc6\x81\ \x18\x84\x92\x08\x59\x8a\x30\x7f\x18\x04\x09\xe0\xf8\x08\x47\x24\ \xa2\x24\x76\x14\x9b\x80\xf3\x4f\x0e\x27\x86\x80\xc3\x61\x60\x31\ \xe6\xb0\x21\xbb\xec\xb2\xf7\xce\xf4\x4c\xcf\xf4\xdd\xfd\xae\xaa\ \x7c\xbf\x7a\x5d\xf3\xfa\x98\x49\xef\xb4\x90\x65\x29\x65\x7d\x54\ \xbd\x7a\x47\xd7\xf7\xbb\xab\x66\x6d\x48\x29\xe9\xff\x73\xb3\xe9\ \x97\xb8\xbd\x74\xed\xb5\x03\x9e\xeb\x66\x09\xf0\x84\x18\x23\xe9\ \x67\xa5\x2f\xb3\x42\x88\xac\x14\x18\x63\x4e\x04\x22\x2d\xfd\xe0\ \xdf\x7f\xf3\x95\x57\xfe\x8a\xfa\x68\xbf\x30\x0b\x78\xef\x4b\x5f\ \x4a\x54\x3d\x2f\xeb\x48\x37\x6b\xf8\x41\x96\x04\x88\x04\x04\x02\ \x41\x56\x92\xc8\x52\x20\x43\x52\x52\x8c\xc9\x40\xe0\x9e\x60\x82\ \x29\x89\x87\x70\x4d\x18\x87\x08\x02\x12\xd1\xb8\xd9\x8b\xc6\x46\ \x21\x86\x2e\x3a\x70\xc0\xfb\x85\x58\xc0\xcf\xef\xbe\x3b\x6e\xd5\ \x6a\x59\xd7\xf3\xc6\x4c\xc3\xc8\x0a\x62\x12\x06\x2f\x18\x3d\x8d\ \x19\x22\xc8\x0a\x49\x59\x92\x4c\x42\x86\x7d\x20\xd3\x20\x47\x06\ \x6e\xa0\x03\xd0\xf3\x80\x00\x26\x21\x19\x12\x64\x00\xdc\x23\xd9\ \x84\x7a\xae\x1d\xb4\x0c\xd2\x73\xc9\x63\x52\xee\xbc\x88\xe8\xcd\ \x0f\x44\x00\xef\xdc\x79\xe7\xed\xe5\xb8\xbd\x29\x79\xe2\xe4\x88\ \xb1\x6e\x24\x26\x0d\xca\x1a\x64\x8c\x11\x48\x12\x49\x80\x06\x7d\ \xe2\x26\xa1\x38\xee\x42\x32\x7a\x61\x22\xec\x43\xed\xf0\x98\xfb\ \xe6\x75\x04\xb9\x32\xa4\x86\x88\xde\xd7\x08\xaf\x43\x88\xf6\xdf\ \x34\xa4\x7f\x01\x7d\x10\x02\x78\xec\xc2\x0b\xbf\x72\xc5\x95\x97\ \xdf\xe5\x98\x43\x94\x1a\x18\xa0\x40\x88\x90\xaa\xc1\xff\x55\xff\ \xa1\x50\xf4\x7a\x28\xc3\x61\xa4\x9d\x88\x74\x34\x56\xef\x5a\xa9\ \x34\x05\x8d\x3a\x5c\x99\xcd\xda\x65\x33\x50\x30\x63\x36\xe6\x1b\ \xe1\xb5\xd0\xc4\xf1\x46\x32\x41\xa4\x85\x55\xa9\xb4\x0b\xa3\xc3\ \x2a\x84\x30\x2e\x30\x0c\xe3\xef\x25\x5a\x5f\x02\x30\xd0\xee\x98\ \x9e\x4e\xce\x0c\x0f\xdf\x5e\x2f\x95\xa9\x54\x2c\x53\x76\x7c\x9c\ \xfc\x72\x89\xc8\x34\x69\xb5\x66\x26\x12\x24\xea\xf5\x48\x10\xe1\ \xe2\x99\x8c\xd6\x54\x48\xcc\x60\x01\x0c\xa0\xc7\x3b\x98\x0b\x6a\ \xfc\xb2\xa5\xe6\xfc\x5a\x83\xac\xc1\x21\xf4\x35\xb2\x86\x06\xc9\ \xcd\xcd\x13\xa5\x53\xca\xf7\x85\x03\xc1\x60\x5e\x13\xee\xd6\xbe\ \xb6\x00\xb1\xbf\xa9\xa1\xb5\x0b\x80\xc9\xf3\x72\x3c\xa2\x6d\x41\ \x10\x0c\xd7\xf0\x83\x85\xa5\x22\xc5\x76\xee\xa4\x5a\x6e\x8e\xcc\ \x64\x52\x4b\x49\x6b\x5d\x75\xf1\x6c\x96\xbc\x42\x81\x12\x1b\x36\ \x52\x50\xad\x84\x6b\xf1\x3d\x32\x62\x31\xe2\x4f\x06\x9e\x47\xd6\ \x40\x4a\x09\xa8\x31\x3f\xaf\x34\xeb\xd7\x41\x36\x99\xc4\x3b\x1b\ \xc8\xc9\xe5\x48\xb2\x65\xc0\xd2\xbc\x7a\x95\xc8\x32\xc9\xaf\xd6\ \xc8\x84\x50\x02\xd7\xa3\x00\xe4\xf9\x5d\xe9\xba\x91\xf6\x05\xf7\ \x1d\xae\x80\x1e\x2a\xda\xcb\x2b\xec\xd7\x05\x0c\x20\x31\x57\xaf\ \xaf\x9f\x49\xa5\xa8\x86\x1f\x75\xaa\x55\xb2\x86\x47\x28\x60\xe9\ \xc7\xe2\x78\xa2\xfd\xeb\x12\x30\x2c\x1b\x8b\x74\x48\xb8\x0e\x34\ \x08\xcd\x2d\x2c\x28\x72\x36\xb4\xe9\x2c\x2e\xc2\xb4\xe3\xea\x9e\ \xa4\xd0\xff\xb5\x00\xdd\xa5\x25\x08\x6e\x89\x04\x5c\x21\x58\x2a\ \x34\x4d\xbe\x33\x3e\x04\xaa\x27\xdb\xc2\x37\xbc\xe8\x9e\xd4\x71\ \xa5\x45\x18\x00\xfe\xb3\xfe\x9b\xdb\xb7\x8f\x43\xf0\xa7\xd6\xe2\ \x06\x76\x53\xfb\x16\x90\x2e\x04\xc1\x04\x07\xb0\x06\xfc\x31\x33\ \x98\x21\x7b\xdd\x08\x49\x98\xa7\x1c\x0c\x34\xe9\xb6\xe6\x2c\xcc\ \x2b\xc2\x0d\x68\xd2\x4a\x24\x95\x86\xdc\x52\x99\x4d\x5b\x49\xab\ \x7e\xfa\x54\x4b\x1c\x90\x54\x3b\x71\x42\xbb\x84\x26\xda\x41\x5e\ \x32\xda\xef\x35\x7c\xfd\x8d\x2e\x17\x00\xda\x2c\x63\x90\x88\x03\ \xe1\xa9\x7e\x2c\xc0\x04\x52\xae\x54\x45\x06\x39\x8e\x4b\xe7\x6c\ \x9f\x21\xd7\x07\x71\x19\xe6\xdb\x95\x4c\xc0\x87\x95\xe8\x00\x28\ \x3c\x8f\x47\xa1\x99\x57\xca\xad\x01\x31\x22\x2d\x23\x82\x3a\x4b\ \x44\x02\x88\xae\x89\xc1\xf9\xde\xf7\x29\xf0\xb9\xf7\xd4\xd8\xc7\ \x98\x94\xba\x2c\x32\x01\xb8\x5a\x28\x6c\xdc\x93\x58\x0b\xc8\xec\ \xc3\xdd\x7f\xe9\x57\x00\x31\x43\xca\x14\x2f\xd2\x81\xcf\x4d\xcf\ \x6c\xa3\xea\x7c\x8e\xcc\x78\x3c\x5c\x54\x77\xd3\xe4\xa3\x6c\xa0\ \x53\x22\xe9\x34\x18\x09\x81\x05\x20\x02\xc1\x71\x21\x04\x2f\x1a\ \x40\xaf\x82\xac\x61\x59\x80\x0d\x60\x8c\xdf\x34\x6c\x9b\x6c\xcc\ \xc7\x00\xa4\x60\xf0\xe4\x9e\xf8\x79\x95\x31\x82\x3a\xe0\x38\xe1\ \x98\xdd\x8c\xb3\x89\x94\xfb\x74\x20\xec\x27\x0d\x9a\xf0\xd1\x18\ \x2f\xd6\xf3\x7c\x15\x7c\x2a\xe5\x1a\x0d\x20\x1a\x3b\xda\x02\xba\ \x9a\x04\x09\x90\x0a\x3c\x28\xc1\x67\x2b\x08\xb5\x16\x04\x4c\x46\ \x91\xb0\x00\xee\xc9\x8e\x21\x63\x58\xb8\xb6\xe0\xd6\x36\x00\xc2\ \x26\x60\x19\xca\xc7\x03\xfc\x9e\xd0\x84\x18\xd0\xa8\xaf\x2d\xa4\ \x37\x94\x0b\x58\x3a\x10\xf6\x15\x04\x81\x79\xdf\x2f\xa2\x57\x64\ \x3c\x04\xb1\x52\xb5\x4e\x83\x08\x84\x8d\xc5\x3c\xd5\x0a\x45\x12\ \x2c\xa5\x78\x8c\x4d\x4f\x59\x86\x65\xa1\xcf\xc4\xc8\x42\xb0\x8b\ \xc7\x98\x5c\x1c\x81\x2f\xd4\xa2\x6c\x92\x11\x8a\x90\x43\x3e\x7a\ \x59\x87\x90\x9a\xe6\xee\xb7\xb9\x40\x38\xa6\x68\xdc\x01\xd9\x1b\ \x52\x32\x89\xed\x9f\xdb\xb0\x21\x89\xb0\x56\x93\x68\x6b\x2e\x84\ \xde\xaf\xd7\x17\xf1\x96\xd2\x60\xad\x5c\xa6\x42\x2e\x4f\xe7\x5e\ \x3c\x4d\xf2\xd4\x29\x1a\xdb\xb5\x8b\xcd\x34\x24\xa5\xc9\xb9\x0e\ \x08\x42\x73\x24\x55\x40\xf6\xa8\xc5\x0d\x80\xee\x9e\xc9\x74\x8e\ \x55\xdf\x4d\x3e\x22\x06\x88\xff\x1b\x62\x19\xb1\xcb\xe2\xf1\xdd\ \x7f\x47\xf4\x6a\x3f\x2e\x20\xab\x41\xe0\xba\x42\xa0\x0b\xd2\xb5\ \x5a\x9d\x4a\x88\xee\xf6\xc8\x88\xd2\x62\xf5\xd8\x51\x8a\x9a\xe2\ \xd4\x51\x15\x46\xe4\x69\x45\x41\x88\x96\xba\xbe\x83\xb0\x5c\x51\ \x00\x6d\xe4\x68\x19\xb2\x1b\x32\x42\xd2\x90\xfb\xa9\x0f\x01\x48\ \x40\x00\x7e\x2d\x08\x0a\x83\x42\xa4\x51\x0b\xf0\x02\xb8\x16\x50\ \x5a\x36\x06\x92\xd4\x91\x06\xda\x3b\x29\xb5\x30\x34\xe9\xae\x80\ \xa8\x02\x2c\x4a\xda\x0a\xfc\x7b\xdd\xd8\xd8\xea\xfb\x85\x8e\x31\ \x45\xa6\xde\x91\x39\xba\x61\x0a\xc4\x81\x35\x34\xb3\x85\x8d\x0f\ \x78\x2c\x00\x5d\x0b\xf0\x22\x25\x07\x31\x21\x9b\x5b\xd2\x20\x44\ \xc0\x10\xcb\x73\x22\xda\x96\x02\x3c\x0e\xaf\x45\x73\x4e\x00\x7c\ \x5d\x02\xf9\xe9\xcf\x5f\x4f\x57\x3d\xf1\x4f\x3d\x82\x5a\x07\xf9\ \x88\xb4\x86\x16\x52\x17\x8c\x30\x15\x9a\x6b\xb2\x00\xad\x7d\xc0\ \xad\x0a\xb1\x14\xd6\x02\x1e\x4d\xef\xdd\x4d\xd5\x85\x79\x15\xf0\ \x7c\xd1\x91\x09\xb4\xb6\xa3\xb1\x4a\x51\x25\x54\x83\x23\xe7\x9c\ \xb3\xe2\x26\xe9\x43\xbf\xf3\xdb\x34\x75\xc3\x0d\x61\x4e\xe7\x32\ \xd9\x30\x75\x31\x13\x91\x6d\x89\x0d\xb4\x7a\xb1\xc4\x58\xd9\x02\ \xa4\x54\x99\xa0\x1f\x0b\xf0\x00\xa7\xe4\xfb\x0b\x4a\x00\xae\x4b\ \xe3\x5b\x36\x43\x00\x79\xb2\x32\x19\x12\x5a\xbb\x80\x50\x50\x1a\ \x6e\x5a\x44\xd8\xdb\xdb\x66\xe8\x23\x7f\xf9\x75\xf2\x38\x40\x0a\ \xfd\x7c\x84\xc3\xdf\xfd\x2e\xcd\x7e\xff\x29\x32\x6d\x9b\x2b\x47\ \x6d\x29\xcd\xf7\x57\x44\x37\xf9\xd5\xef\xeb\xc0\x34\x7a\xcf\xc6\ \x8d\x53\x06\xda\x59\x09\x40\xa2\xb5\xb8\x80\x5b\xf4\xfd\xbc\x4e\ \x85\x41\xb1\x48\x65\x04\xc2\xf8\xc8\x3a\x6d\xd2\x0a\x32\x22\x17\ \xb9\x01\xfa\x0b\xef\xb8\x83\x26\x2e\xbb\x8c\xec\x89\xc9\xe5\xc5\ \x89\x96\xde\x01\xe9\xd2\x1b\x3f\x25\x6e\x89\xb1\x51\x7d\xef\x2c\ \xd1\xed\x0a\xd1\x39\x41\xd8\x8b\x26\x91\x75\xa6\xb9\xbf\x1f\x0b\ \x08\x00\x37\x1f\x04\xf3\x4d\x01\xe0\x22\x4f\xc5\x33\x67\x38\x13\ \x70\x5e\x6f\xd7\xa8\x5e\x8c\xb6\x06\x3c\x9f\xc0\x73\xdc\xce\xbf\ \xe9\x26\x65\x05\xd1\xf3\x91\x96\x1b\xc7\x4f\x10\xb7\xf4\x94\x12\ \x92\x16\x60\x6f\xd2\x00\xbb\x4d\x19\xbb\x4f\x07\x75\x48\xd5\x0f\ \xa8\x5c\xa9\x44\xf7\x23\x22\xaa\x24\xee\x27\x0b\x28\x01\x9c\x74\ \xdd\x39\x2d\x80\x4a\xa5\x4a\x65\x6c\x63\xed\x4b\x2f\x21\x62\x01\ \x74\x58\x95\x6c\x19\xc7\xb0\x71\x5a\x78\xe6\x69\x4a\xc2\x5d\x26\ \x7f\xfd\x13\xf4\xf3\x8d\xe3\x24\x72\xf8\x54\x47\x3d\x50\x9f\x3b\ \x43\xdc\x52\x9b\x36\x93\xfc\xef\xe7\x95\xf6\x3c\xc7\x51\xd6\x60\ \x59\x5c\x8c\x1a\x51\x0c\x68\xf1\x7f\xc7\xb2\x69\xc7\xcd\x37\xd3\ \xf8\xee\xdd\x94\x9a\x9c\xa0\x81\x2d\x5b\xa8\x84\xcd\xd5\x0f\xaf\ \xba\x5a\x0b\x40\x5b\x00\x7f\xe3\xac\x4b\x62\xb3\x23\x0d\x7a\x67\ \x1c\x27\x1f\x80\x3f\x2f\x88\x53\x61\x65\x69\x29\xac\x05\x5c\x57\ \xbb\xc0\x8a\xae\x30\xb8\x65\x2b\x15\x5f\x7f\x8d\xe6\xfe\xfa\x51\ \xe2\xb6\xeb\xd6\x5b\x61\x05\x4e\x97\x1b\x94\x17\xf2\xaa\x64\x4e\ \xcf\xcc\x50\x15\x5b\xe1\x7a\x22\x41\x9b\x10\x18\x67\xf0\xfc\xd8\ \x27\x7e\x83\x8a\xd5\x2a\x07\xd3\xb6\xb8\x20\xd6\x8d\xd2\xd5\x88\ \x1f\x23\xcf\xfd\x90\xde\xfd\xcc\x75\xf4\xda\xaf\x5e\x49\x87\x2e\ \xff\x08\xd1\xf3\xcf\x61\xc5\x1e\x2f\x3e\x82\x61\xe8\xb3\x01\x73\ \x0d\x2e\xd0\x96\x09\x9c\x1a\x4a\x62\x5e\x6c\xbd\x56\x23\x1b\x87\ \x15\x46\x12\xd0\x64\x3b\xd1\x9c\x1f\xde\xbb\x8f\x6a\xef\x1d\xa6\ \x93\x67\xe6\x68\xe1\x3f\x7e\x40\x93\x57\x5e\x49\xf1\xe9\xe9\x76\ \x17\x00\x1c\x69\x50\xf9\xf0\x61\x9a\xfa\xd8\xc7\xe8\x92\xfb\xef\ \xa7\x5f\xf9\xbd\x6b\x69\x6b\xad\x44\x5b\xb7\x6f\xa3\x2b\xee\xbd\ \x97\x7e\xf7\xc0\x6b\x14\xdb\xb6\x4d\x93\x57\xc2\xf8\xe8\xe3\x8f\ \x53\xe1\x1f\xbe\x4d\x07\x7e\xf2\x16\xe5\x92\x69\xca\x25\x52\xf4\ \xe6\xdc\x22\x3d\xff\xe5\x3f\xa3\xa0\x9d\xbc\xb6\x80\x99\xcf\x8c\ \x8e\xa6\x0c\xb4\xb5\x08\x40\x67\x02\xb7\x2e\x44\x41\xb0\xbf\xc2\ \x34\x37\x4c\x4f\x51\x0d\xfb\x02\x2b\x91\xe8\xf6\x51\xf6\xfd\xe6\ \x31\xf5\xe8\x85\x17\xaa\x78\x11\x90\x41\x73\x8f\x3e\x4c\xdc\xf6\ \xdc\x76\x1b\x9b\x77\x18\x24\x01\xd9\x44\xf5\xd0\x41\xb2\x90\x5a\ \xe7\x1f\xf9\x16\x1d\x78\xe4\x51\x7a\xfe\xdb\xff\x48\xaf\xdc\x74\ \x23\x9d\xbe\xe5\x0b\x14\x1f\x1a\xa2\xab\xbf\xf3\x1d\x92\xc3\xc3\ \xea\xd9\x91\x7d\xfb\x68\xdd\x79\xe7\xd1\xd1\xe7\x7e\x44\x42\xca\ \x36\x9f\xaf\x5a\xf6\x32\x79\x11\x92\xd7\xb0\xf6\x0d\x0c\xec\x5e\ \xab\x05\xc8\x65\x0b\x08\x82\x25\xa1\xb6\xc5\xa8\x05\x76\x9c\x4f\ \x75\x6c\x86\xec\x74\xba\x4d\xf3\x82\xa1\x83\x97\x65\x71\x90\xc4\ \xf3\xbe\x9a\x3b\xf2\xde\xfb\x94\x7b\xee\x39\x9a\xb8\xe2\x0a\x4a\ \x6c\xdd\xd6\x6e\xce\x40\xfd\xbd\xf7\x88\x5b\x11\xd6\xe0\x41\x60\ \x30\x78\x2a\x26\x53\xf4\xda\x7f\x3e\x43\xb3\x4f\x7c\x8f\xe2\x38\ \x5d\xda\x7c\xcd\x35\xea\xd9\xb1\xcd\xe7\xaa\xa5\x35\x82\xa0\x8d\ \xbc\x86\xe8\x20\xaf\x91\x20\xda\xdf\x8f\x0b\x78\x80\x53\x0e\x82\ \xbc\x3e\x18\xd9\x30\x31\x8e\x54\x38\x4f\x71\xf8\xa1\xce\xfd\xdc\ \xcb\x65\x04\x34\xb4\x79\x33\x39\x88\xfa\xd6\xf9\xe7\xd3\xf0\x47\ \x7f\x8d\x36\x7f\xf1\x8b\x94\xda\xba\x95\xb8\xed\xbd\xfd\x76\x58\ \x41\xa3\xcd\x0d\xea\xcd\x7d\x45\x72\x6a\xaa\xad\x62\x74\x0d\x93\ \x72\x4f\x3e\x41\x68\xec\x42\x6a\xce\x32\x0d\x15\x40\xd3\xbb\xf7\ \xa8\x5e\x10\xb5\x41\x76\x93\x57\x73\xb1\x30\x13\x9c\x9d\x0b\xb4\ \xd6\x02\x5a\x00\xcb\xa9\x90\xb7\xc5\x73\x73\x64\x8f\x8e\xf2\x81\ \xa7\x2e\x75\x23\x60\x91\x23\xf0\xff\x31\x04\xb5\x8b\x2f\xb9\x98\ \x76\x0a\x97\xb2\x2f\x3c\x4b\xf9\x9b\x7f\x9f\x4a\xaf\x1d\xa0\x89\ \xcb\x2f\xa7\xd4\x8e\x9d\xad\x6e\x00\x01\x1c\x0b\x53\x21\x22\x79\ \xe7\x5f\x7e\x4e\x1f\x3c\x48\xaa\x35\x35\x5e\x7b\xe9\x45\x95\x48\ \x66\xbe\xf0\x07\xe4\x0a\xd1\x45\x94\xd7\x68\x66\x32\x5d\x71\x80\ \x4c\x53\x95\xc4\xfd\xb8\x80\xbb\x84\x5a\xa0\x55\x00\x95\x85\x05\ \x95\x09\x60\xe3\x6a\xb1\x11\x42\x52\x59\x14\x3f\x07\xaf\xff\x2c\ \xfd\xf8\xe1\x47\xe8\x85\x1f\x3c\x4d\xaf\xbc\xf5\x0e\xfd\xf4\x64\ \x8e\x4e\xdf\x77\x2f\x71\xdb\x87\x02\x89\x33\x82\x7e\xaf\x78\xf2\ \x64\x28\x80\x6d\x33\x1d\x55\x20\x22\xc8\xba\x31\xe2\xe6\xe7\xe6\ \xd4\xdc\xc9\xa3\x27\xa8\xf8\xc2\xf3\xb4\xfe\x82\x0b\xe8\xa2\xfb\ \xef\x23\xc7\xe0\xc0\xef\xa9\x2d\x7b\x1d\x19\x63\xe6\xfa\xeb\xe9\ \xdc\x5d\x3b\xda\xc8\x03\x4c\x6c\x37\x77\x06\xda\x5a\x04\x10\x00\ \xde\xac\xeb\xe6\x42\x25\x04\x61\x2d\x80\x54\x68\x8d\x0c\xf3\x2f\ \x33\xe1\x08\xbc\x78\x32\x68\x74\xcf\x1e\x3a\x8e\xe8\xef\xe1\x73\ \xa2\xa5\x34\x3e\xfc\xd6\xdb\x54\x7c\xf5\x15\x1a\xbf\xf4\x52\x1a\ \xdc\xb7\x77\xb9\xe0\xa9\x14\x4a\xe4\xe0\x9b\x53\x57\x5d\x15\x1e\ \x8c\xa8\x6f\x85\xef\xc5\xd9\xd2\x30\x97\xff\xdb\xbf\x51\xbd\x87\ \xf5\x1f\xbe\xe5\x66\x72\x20\xb4\xed\x9f\xfe\x34\x7d\xea\xc7\x2f\ \xd1\x87\x1e\xf8\x73\xda\xf5\xa7\x7f\x42\xd7\x3c\xfb\x5f\x34\x99\ \x1d\xa1\xf7\x5f\x7e\xb5\xcb\x15\x70\x3d\x72\xe7\xfa\xf5\x9b\xd6\ \x6a\x01\x02\xf0\x8e\x3b\xce\xac\x3e\x18\xe1\x5a\xa0\xc6\x47\xe4\ \x99\x41\xf6\x95\x76\x0b\x10\xf0\xff\x6d\x5b\xa9\x7c\xe8\x10\x79\ \xbe\xaf\x49\x2c\x9b\xb5\x83\xcf\xcf\x7e\xf3\xeb\xc4\xed\xc3\x5f\ \xbd\x87\x5c\x37\x14\xa0\x4f\x52\xbd\x93\x04\xd9\xf1\x4f\x7e\x92\ \xaa\xa5\x32\x79\xae\x4b\x55\xa4\xdd\xf3\x6e\xb9\x85\x16\x1e\x7b\ \x98\x0e\xbe\xfe\xc6\x32\x99\x83\x85\x0a\xfd\xec\xea\x8f\x53\xe9\ \xbe\xaf\x92\x3c\x7e\x8c\xa6\xf6\xef\xa7\x2d\xd3\x93\xe4\xdf\x73\ \x37\xbd\xf9\xb5\xaf\x93\x6f\x9a\x7a\xf1\x6d\x41\x71\x5d\x22\xb1\ \x6f\xad\x7f\x1a\x93\xcd\x2d\x71\xd5\x05\xe2\x52\xa6\x6b\x58\x54\ \x06\x0b\x75\x0a\x4b\x2a\x15\x7a\x22\x68\x2b\x03\xc7\x90\xfe\xaa\ \x47\xdf\x57\xd6\x80\xd6\x7e\x26\x80\xf6\xb3\x67\x7f\x44\xd3\x48\ \x8f\x9c\xca\xf6\xdd\x75\x17\xbd\xf9\x8d\x6f\x90\x84\x4b\x79\x20\ \x22\x2f\xba\x88\xae\x7c\xe8\x21\xda\x7b\xe3\x8d\x94\x3b\x70\x80\ \x86\x51\xe1\x89\x27\xbf\x47\x2f\x3e\xf1\x14\xb9\x76\xac\xad\xbc\ \x3d\x58\xf7\xe8\xc8\x63\x8f\xd3\xc8\xb7\x1e\x26\x5b\x08\x95\x02\ \x17\xe3\x49\x68\xda\xea\x8a\x0b\x7a\x6c\x87\x99\xe0\x9f\x01\xd9\ \x4b\x00\xdd\xc5\x10\x6a\x81\xb4\x10\x69\xce\x04\x93\xe7\x9f\x87\ \x5a\x60\x89\x62\x48\x4f\x75\xc4\x04\xdd\x1a\x8d\x3a\x4d\x5e\xf3\ \x5b\x34\xff\xfa\xeb\x54\xc4\xbe\x61\xa8\xb9\x17\x90\xa1\x10\x54\ \xae\xbf\xf0\xa1\xaf\x91\x09\xed\x96\x9f\x7d\x86\x26\x93\x71\xca\ \xde\x74\x03\xfd\xcf\x93\x4f\x51\xee\xa1\x07\xe8\xc4\x1f\xfd\x21\ \x65\xb0\x75\x8e\x65\xd2\xe4\x97\x2b\xf4\xf6\x99\x59\xca\xc7\x07\ \xc8\x67\xf2\x11\x21\x2d\x04\x95\x25\xe6\x70\xbf\x93\x28\xb0\xe2\ \x1c\x59\x96\xca\x04\x6b\xb6\x80\xa6\x00\xb8\x16\x98\xe4\x6d\xf1\ \xae\x5d\x3b\x69\xfe\xf8\x49\x8a\x83\xa0\xc0\xde\x80\xdb\x10\x0a\ \x94\x4b\x60\xae\xe9\xc1\x0c\xc5\x21\xa0\x8f\x3f\xf8\x00\xbd\xfc\ \x95\xbb\x49\xb6\x1e\x93\xc3\x75\xe6\x6f\xbd\x99\x8e\xc1\x35\x1a\ \x56\x4c\x11\xf0\x0d\x43\xf5\xa7\xf8\xbe\x95\x20\xca\x17\x49\x02\ \xdc\x64\x22\x15\x2d\x7e\x05\x82\xd4\x83\x78\xe7\x9c\x85\xb3\x81\ \x66\x20\x14\x12\x6d\x2d\x16\xe0\x56\x5b\x6a\x81\x61\x90\x3c\x82\ \xa8\x3c\x9e\x5d\x4f\xf4\xee\x3b\x61\x9e\x7d\xfb\x4d\x3a\xf5\xd9\ \xeb\xe8\x10\x4c\xdf\x33\x2d\xf2\x2d\x8b\x84\x1d\x6f\x3b\x30\xf4\ \xd0\x1f\x89\x0d\x10\xd9\xd1\x66\x08\x2d\x1c\xb7\x12\x5b\x85\x24\ \xad\x4e\x94\x5b\x4f\x4b\x00\xf1\x2d\x9f\x1a\x19\x49\x7f\xbf\x50\ \x28\xf6\x0a\x82\x51\x2d\x10\x15\x43\x8b\x3a\x13\x70\x2a\x2c\xcf\ \x87\xa9\xd0\xf0\xc2\x8d\xca\xbc\xe3\xd1\xfb\x20\x37\x8b\x0a\x2e\ \x1f\x4b\x50\xd1\xb4\x5b\xff\xd5\x46\x74\x4c\xa6\x7b\x29\xdb\x76\ \x6c\xa2\x63\x8c\x45\x33\x74\x00\xeb\x0e\x6a\x8c\xee\x0a\xb0\xbd\ \x28\xd2\xcf\x46\x73\x26\x4a\xe2\x3d\x6b\x75\x01\x7d\x30\xb2\x5c\ \x0b\x38\x5c\x0b\x14\x8b\x64\x73\x7d\xce\xa9\x90\xba\x1b\x18\xb6\ \x7e\x64\xf5\x71\xb7\x06\x3b\xe7\xba\xdd\xa0\xb7\xd6\xf5\x7c\xd7\ \xb5\x1d\x8f\x73\x20\x7c\x11\xe8\xe1\x02\x1d\xe7\x02\x8b\x41\x90\ \xd3\x02\xa8\x54\x6b\x61\x2a\x5c\xb7\x8e\x4c\xbd\xb7\x5f\xa1\xc9\ \xce\xeb\xd5\x84\xd0\x69\xe2\x9d\xcf\xf7\x70\x83\x68\xae\xb7\x1b\ \x20\x0e\xb0\x00\x8c\xb5\x58\x80\x00\xbc\x13\xa8\x05\xd0\x87\x9b\ \x17\xd4\x02\x75\xd4\xfa\x6e\xa9\x44\x16\x6f\x8a\x5c\xb7\x9b\x70\ \x2f\xad\x1b\xc6\x2a\x82\xe9\xd6\x78\x37\xf1\xfe\x83\x22\x22\x60\ \x5b\x20\xec\x21\x80\xc8\x0d\x4e\xe3\x60\xc4\x97\xd2\x8f\x49\x69\ \x73\x2d\xb0\x1e\x1b\x9e\x06\xbb\x01\xb6\xab\x62\x61\xa1\xb7\xf6\ \x99\x70\xff\x6e\x10\x8d\x7b\xb9\x41\x8f\xe7\x41\x5c\x95\xc4\x3d\ \x83\xe0\x4a\xbb\x42\x6c\x41\x8b\x3a\x13\x6c\xda\x79\x3e\x55\x51\ \xbe\x26\xb2\x59\x0e\x34\x5d\x90\x8c\xd6\x6b\xa2\x5e\x41\x6f\xd5\ \xe0\x26\xa3\xfb\xd1\x35\xa3\xc7\x0e\xb0\x2b\x28\xe2\x1a\x02\x18\ \xbc\x6d\x62\x62\xf3\x1a\x04\x10\x05\xc2\xba\x10\x8b\xfa\x88\xfc\ \x5c\xe4\xfa\x2a\x34\x9f\x58\xbf\x5e\x9f\xf9\x77\x47\xeb\xce\xb9\ \x55\x48\xa9\x7e\x35\x01\x75\x13\x8f\xc6\x2d\xef\x8a\x1e\x31\x80\ \x5a\x2c\x70\xd0\xb6\xf7\xaf\x49\x00\xda\x02\x50\x0b\x2c\xc1\x6d\ \x54\x0d\x9f\x42\x55\x57\x99\x9f\x57\x81\x90\x84\x68\x27\xbd\x1a\ \x71\x4d\xb8\x9d\xd4\x4a\x7d\xf4\xdc\x5a\xac\x81\xe7\x7a\x90\xe7\ \x16\x37\x0c\x15\x08\x7b\x06\x41\x89\xc6\xc1\x42\x97\xc3\x95\xd6\ \x73\x81\x7c\x3e\x4c\x85\xd8\x17\x18\x52\xf2\xa2\xd6\x16\x08\xf5\ \xb8\x67\x36\xe8\x5d\x10\x51\x0f\xad\x77\x36\xcc\xee\x69\x2a\x5b\ \x9c\x75\x10\x04\xdc\x12\x04\xa0\x8b\x21\xa7\x50\xa0\x7a\xa5\xc2\ \x16\xa0\xbf\xd4\x3b\x10\x76\x8d\x35\xe9\xde\xd9\xa0\x37\xf1\x6e\ \x61\xea\xac\x85\x8d\x9c\x82\x0f\x38\xbe\x2f\xc8\x34\xe7\xf8\x09\ \x6e\x12\xad\xa7\x00\x74\x2d\x50\x68\xad\x05\x2a\x55\xaa\x3b\x0e\ \x79\xd5\xaa\x3a\x29\x16\x98\xa3\x5e\xda\xd7\x56\xd2\xcb\x12\x7a\ \xa4\x41\x5d\x56\x2b\x62\xf8\x5d\x0f\xbd\x27\x84\xf4\xd9\x5a\x13\ \x89\xc0\x1a\x48\x0a\x3b\x95\x96\xf6\xf0\x90\x4c\x8e\x8e\xd1\xe0\ \xe4\x84\x1c\x9d\xde\x44\x53\xbb\x76\xc8\xbf\xb8\xf3\xcb\xd7\xfd\ \xdb\xbb\xef\xbe\xdc\xb3\x0e\x58\xf1\x60\xc4\xf3\xe6\x5a\x6b\x01\ \xe5\x17\x70\x83\x18\x52\xa1\x5c\x5a\xea\x26\xdd\x87\x1b\xb8\x4d\ \x8d\x79\x00\xf7\x0e\x88\x41\x63\x81\x88\xc7\x03\x23\x91\x10\x46\ \x26\xc3\xff\x78\x52\x9d\x1d\x0c\x8c\x8f\xcb\xd1\xc9\x49\x63\x64\ \x7a\xda\x1e\x99\x18\xb7\x6d\x3b\x66\x99\xf8\x9f\x6d\xd9\x14\x8b\ \xc5\xc8\xb6\x2d\xf4\x71\xe2\xeb\x64\x32\x49\x43\x58\xe7\x79\x93\ \x93\x15\x08\xa0\xce\x9c\x7a\xd4\x01\xdd\x81\xf0\x78\xa3\x31\x2b\ \xf0\x8e\xfe\x23\xc9\xe4\xf6\x19\x6a\xa0\x18\x4a\x8e\x8d\x91\x80\ \x00\x56\x7b\x11\xef\x68\x2d\x69\x73\x64\x0d\x0a\x11\x12\x63\xad\ \x09\x99\x4a\x49\x2b\x93\x31\x6c\xa4\xd5\x01\x6c\x89\x33\xe3\xe3\ \xe6\xf0\xf4\x94\x99\xc9\x66\x6d\x32\xd4\xc6\xc2\xe6\xe5\x5a\x96\ \x45\x71\x45\x0e\x24\xe3\x71\x35\x8e\x27\xb8\x8f\x87\xa4\x63\x98\ \xb7\x63\xfc\x9c\x7a\x06\x02\x61\x01\xa8\x67\xd2\xa9\x34\xed\x3f\ \x77\x52\xe9\xad\x67\x29\xbc\xd2\xae\x10\x59\xa0\x02\x12\x15\x14\ \x43\x19\x95\x0a\x77\xec\xc0\xb6\xf8\xb8\x0a\xa7\x8b\xb5\x5a\xe8\ \x67\x78\x36\xb0\xac\x40\xc4\x62\x42\x26\x12\x52\x0e\x0c\x48\x99\ \xce\x20\x58\x8e\xc9\xc4\x86\x73\xcc\xd4\xf8\x46\x63\xdd\xe4\xa4\ \x3d\x38\x3a\x66\x41\x55\x26\x2f\xce\x34\x94\x43\x92\xc9\x8b\x06\ \x4c\x1e\x9b\x26\x19\x80\x26\x8c\x7b\x21\x69\xc0\x62\xe0\x1e\xae\ \x19\xea\x59\x0d\x7d\xe4\x87\x79\x7e\x57\x83\x05\xa4\xe6\x26\x92\ \x99\x18\x6e\xf7\xda\x0e\xaf\x9e\x0a\xf9\x8f\x24\x49\x21\x32\xae\ \xe3\xd1\xb6\xa9\x29\xf9\xea\xf1\x13\x1e\xcd\xcc\x48\xfb\xe2\x0f\ \x1b\xa3\x9b\x36\xd9\x03\x83\x83\x26\x7e\xc8\xd4\x0b\x64\xad\x60\ \xac\x34\x80\x59\xb2\x15\x19\x73\xf9\xf8\x1b\xd4\x31\x0e\x78\xcc\ \x8b\x57\xe0\xb5\x99\xfc\x0e\x34\x0c\xe8\x39\x75\xf8\xc9\x82\x37\ \x00\x7c\x97\x63\x11\xf7\xfc\x0c\x93\x0c\x85\xd8\xfc\x5d\x34\xbe\ \xd6\xd9\x2c\xdc\xc5\xd6\xeb\x6e\xcc\x94\xa9\x35\x9c\x08\x75\x67\ \x82\x1a\x8a\xa1\x11\x29\xa7\x38\xf2\x9f\x29\x14\xbc\x89\xcf\x7d\ \x1e\xe7\x22\x23\x94\x49\xa7\x40\x32\xc1\x0b\x51\x84\x41\x45\xbd\ \x26\x98\x8c\x8e\xe2\x18\xa3\x0f\x17\x69\x59\xbc\x78\x8c\x2d\x40\ \x11\x6c\x03\x04\xa2\xc7\x9a\x84\x7a\x3e\x11\x5a\x85\x26\xac\x35\ \xdd\x9a\xba\x59\x30\x3c\xd7\xf6\x0d\xbe\xae\x17\x8b\x65\xcb\x13\ \x99\x35\x6c\x87\xa3\x5a\x40\x5b\x40\xa5\x79\x2e\xb0\x1e\x01\xe5\ \xe4\x9e\x7d\xd6\xa6\xe9\x69\xca\x8e\x8d\x92\xdd\xd4\x34\xb1\x16\ \x0c\x93\x3b\x6d\xaa\x9a\x44\x44\x8e\x11\x04\xbc\xd0\x30\xa5\x3a\ \x2e\x6b\x57\x2f\x58\x43\x9b\x34\xa3\x6d\x8e\xdf\xd1\x42\x40\x6b\ \x8e\xb5\x40\x57\x2e\xf3\xf9\xdb\x8d\x7c\xbe\x4a\xc2\x4f\xb3\x71\ \xf4\x6b\x01\x2c\x00\xb5\xf3\x09\x3c\x4f\x66\xa6\xa7\x51\x06\x8c\ \xd0\xf0\xf0\x30\xff\x78\xf3\xbb\xa1\xf6\x74\xbd\x00\x62\x7a\xcc\ \xe0\x7b\x0a\xda\x2c\xd1\xba\xc9\x47\xd0\x1a\xe6\xbe\x6d\x0c\xa2\ \xda\x0a\xf8\xdd\xd0\xc4\x9b\xbb\x52\xad\x71\xfd\x8c\x16\x4a\xe5\ \xf4\xa9\x1a\x1e\x4c\xaf\xc1\x02\xba\x53\x61\xc9\xf7\x95\x00\x6a\ \xae\x1b\x0c\x25\x93\x76\x22\x9e\x20\x5d\x1b\x60\x31\x6d\x64\xb5\ \x00\x22\xd2\x91\x70\xb4\x56\x5b\x7d\x94\x7b\x4d\x46\x2f\x5e\x9b\ \xb4\xe3\x38\xfa\x0f\x20\xda\xf4\xbb\x02\x1d\xe6\x75\x1c\x50\xdf\ \xd1\xef\xeb\x00\xb9\xf8\xea\x2b\x0d\xc3\xf3\xfa\xb6\x00\xd1\xfc\ \x17\x23\x73\xfc\xb6\x67\xdb\x42\xfd\xa8\x69\x68\xcd\x6a\xad\x69\ \x82\xda\x2c\x79\xac\x89\x30\xb4\x50\x34\xda\xde\xd1\x66\xaf\xef\ \xe9\x6b\xf4\xfa\x5b\x3c\xcf\xdf\x60\x8d\xab\xf9\x0c\x6a\x83\x81\ \x81\x01\x95\xeb\x13\xcd\x38\xd4\xd9\x1a\xa5\x62\xc3\x39\x72\x78\ \xc4\xf5\x7c\xd9\x87\x05\x44\xa9\x10\x07\x23\x67\x78\x11\x3e\x56\ \x8d\x42\x43\x93\xd3\xd2\xd7\x5a\xd4\xda\xd7\x64\x3b\x03\x9b\x16\ \x4e\x9b\x26\x75\xd3\x04\xb5\xf6\xf4\xb3\x3a\x23\x74\xb6\x72\x3e\ \xef\xce\xbe\xf3\x4e\x3d\x7f\xf4\xa8\x53\x3a\x79\xc2\xaf\x9e\x99\ \x95\x41\xa1\x60\x58\x8d\xba\x3d\x20\x45\x7c\xc8\x8e\xa5\x32\xa9\ \x64\x32\x96\x88\x0f\xbf\x9e\x5b\xfc\xd7\x3e\xb2\x40\x94\x0a\x4f\ \x39\xce\x82\x90\x92\x3d\x3b\xd0\x8b\x6e\xd5\xa8\x16\x82\xd6\x1a\ \x34\xd2\xb5\x68\x5c\x6b\xb4\xa5\xaf\xd6\xc6\xef\x71\x2b\xe6\x72\ \xce\xe9\x23\x47\xea\x0b\x47\x8e\xb8\x85\xe3\xc7\xfd\xf2\xe9\xd3\ \xd2\x59\x58\x30\xfc\x62\xd1\x36\x1a\x8d\x44\xdc\xf7\x53\xb6\x69\ \xc6\xf1\x8d\xb8\x0a\x90\x86\x51\x0b\x4c\xa3\xe4\x1a\x0a\x05\x60\ \x09\xa2\x9c\x43\xd1\x75\xe8\xe9\xd3\xb3\x4f\xbe\x9d\xcf\x1f\xeb\ \x57\x00\x3a\x13\x34\xea\xbe\x5f\xf2\xa4\x8c\x6b\x72\xda\x84\x5b\ \xcd\x55\x43\x13\x5d\xa9\x15\x66\x67\x9d\x1c\xc8\x2d\x1d\x3b\xe6\ \x2c\x1e\x3d\xea\x57\x67\x67\x79\x97\xb9\x4c\x2e\x21\x44\xca\x84\ \x2c\x08\xc0\xef\x35\x1c\x29\x4b\x7c\x28\x83\x5a\xa4\x58\xc7\xd6\ \x9c\xff\x0d\x63\x59\x88\x7c\x01\x9b\xb4\x3c\x14\x73\xd4\x75\xe7\ \x30\x5f\x67\x57\x65\xe8\xcc\x05\xd4\x80\x02\x50\x0c\xe7\xfb\x17\ \x80\x0b\xd4\x71\x40\x7a\x6c\x7c\x71\x71\x47\x12\x02\xb0\x59\x83\ \xb6\xdd\x45\x12\xe4\x1a\xb9\x43\x87\xea\x79\x90\xc3\x5f\x7f\x83\ \x0a\x6b\x0e\xe4\x44\xa9\x14\x53\x9a\x13\x22\xcd\xe4\x02\x64\xd9\ \x86\x10\x7e\x43\xca\x4a\x93\x9c\x22\x56\xf1\xfd\x7c\x11\xc4\x16\ \x7c\x3f\x87\x12\x7c\x1e\x3b\xd1\x32\x13\xea\x20\xc7\xf0\x5b\x10\ \xb4\xf7\x7a\x1c\x3d\xab\xab\xc0\x1e\x02\x58\xb5\x16\x70\x80\xd2\ \x7b\x8d\xc6\x4b\x9b\x97\x96\xf6\xbe\xf4\xe0\x83\x8b\x89\x7a\xd5\ \x3c\x35\x9f\xaf\xe1\x80\x54\x82\x9c\x6d\x36\x1a\xc9\x18\x8a\x5f\ \xfe\x16\x6f\x64\x80\x3a\xff\x59\xad\x2e\x65\xa1\xe6\xfb\x4b\x15\ \x68\xac\xe8\x79\x0b\x8b\x38\x66\x3f\x89\xcd\xd5\x82\xeb\x96\x34\ \xa1\x3e\x88\x31\x04\x20\xcf\x06\xdc\xfa\xfe\xbf\xce\x42\x00\x26\ \x85\xe6\xb8\x11\x52\xda\x7e\xf3\xe4\xe4\x1f\x6f\x4c\x26\x77\xa7\ \xd2\x29\xff\x8d\xb9\xdc\x4f\xaa\xa8\x0f\x4a\x40\x1e\xc4\x70\x80\ \x9a\x3b\xe3\xba\x8b\xdd\xa4\x80\xde\xa4\xb8\x17\x8c\x1e\xe4\x28\ \x1a\x77\xb7\xd5\xc8\xf6\x2b\x00\x2d\x04\x1b\x5d\x1a\x18\x05\x86\ \x81\x18\x20\xce\x46\x5b\x6b\xd4\x18\x7d\x30\xc4\x3e\x78\x01\x18\ \xe8\x2c\x26\xde\x84\xa1\x6b\x84\x5f\x2e\x62\xfd\xb7\xff\x05\xc7\ \xfd\xe7\xdb\x23\x5d\x13\x38\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ " qt_resource_name = b"\ \x00\x0d\ \x0b\x34\x2d\xe7\ \x00\x61\ \x00\x6b\x00\x72\x00\x65\x00\x67\x00\x61\x00\x74\x00\x6f\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x07\ \x0e\x95\x57\x87\ \x00\x6b\ \x00\x33\x00\x62\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x01\xad\xab\x47\ \x00\x64\ \x00\x69\x00\x67\x00\x69\x00\x6b\x00\x61\x00\x6d\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x1a\ \x08\xdd\xe1\xa7\ \x00\x61\ \x00\x63\x00\x63\x00\x65\x00\x73\x00\x73\x00\x6f\x00\x72\x00\x69\x00\x65\x00\x73\x00\x2d\x00\x64\x00\x69\x00\x63\x00\x74\x00\x69\ \x00\x6f\x00\x6e\x00\x61\x00\x72\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\ \x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x33\x2d\ \x00\x00\x00\x50\x00\x00\x00\x00\x00\x01\x00\x00\x40\x37\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x20\x00\x00\x00\x00\x00\x01\x00\x00\x13\x0d\ " 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() PyQt5_gpl-5.10.1/examples/animation/appchooser/digikam.png0000644000076500000240000000640613245231431023560 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞsBIT|dˆ pHYsììu85tEXtSoftwarewww.inkscape.org›î< ƒIDATxÚí›[hUÙÇ×IN¢&&ã51^ÆT­—J•)8Ä"¶ÌsŸ*ôa^|Ä }(øTJ¤OöQ RNA”úàýÖª^Æû5Qc.FÍÅ~¿ ¿aÏ1’ŒƒÁ,Xì½×Y{­ïû÷µ“ÂëׯÓÇÜ*¢0À8ãŒ0ÀGÚŠAÇŽÛS]]ý³iÓ¦}ᘭ­­í•••óW¯^ý‹rí÷A$BÛ¶m[P,ÿ·ŸÍž=»eòäÉ“‡6¯¶ÁK—.ݼÔÑÑñ·½{÷ÓlÙ²å³úúúÃ!õª! ,ÒÛÆ„týúõC¿Ù³gÏ«±d2ÿËšššC!„âË—/‡cxȱ–––õ×®]û&5–œ  ü³¿¿?B‘ªªªR˜=»·;nŸ8qbÆ< Ñ›ššÖoذaݘҀ͛7ÿ9˜iìëëKÏž=K<@¥G \ '™“­®®î¯qùt¬³_óHïž-Z”Âù¥çÏŸ#eç¤ÎÎÎÔÐÐ1üôéÓ4iÒ¤túôéôäÉ“D ÿ‘hS¦LùùÆ‹èÿàØ´iSu´éq Ãxö´jÕª4a„tãÆ4kÖ¬têÔ©ÔÚÚšæÏŸÃ`ºzõjZ¸pa:{ölöNww·æh•/^¼ØKþýƒˆÛ·oo|ôèѺ ¼?ˆÒ[1sæÌßÞ¹s§+ˆžcÓƒà„BÄ÷wÑ¢L3Ì „[·ní ÙO8~4Öü÷‰'¼~mÅŠ•ÁTm0ÓzæÌ™ß¯Y³¦9}ÒhºpáBí²eËÒÝ»wÓÔ©SSWWWzüøqFl„­Ä¾Ø>  ¨ž~Ä Ma(fÃýåË—ñ˜û¼­ºNô===ÿÚ¿ÿ‰˜38bvìØ±ôæÍ›_ÅmËâÅ‹oÖÖÖÖ¡‹z{{[ÏŸ?ßÈ&¨$’„QÀcóŒm¿zõÊ®'wi¤Î8DÒ™ÏL -hQ x?cØçzŠè‚ù>~"Û;èîlooÿ&öý2æÜ€Ý»w£‹¿{øðá_Ž?>;Ôˆ— 7áy‘ÛßxFBtkàÐdž=`Œ{®ùnó=¯¬ë•yç Åú8OüHægB®=zô“7صkWMØÐסªëb’L²ÆØ»…8 6†9Î -0Æí#€.“yXˈàï‡f˜VÜÓûÃ$ëoß¾Ý[ô…;w¶D8ú6T¹–Г'd‘ãaóiîܹ)^6–0‰Ëæ`äê? Öæú%j€û9Κ9@‡Ô;Ìñþ z`V B«$ëÃý _°oß¾ÆÊµ(2ªd:ϼ×Ùó àeˆÐ†é‚aþ†]j YØÈí/^¼hH‰>i²/„ëé2‹ôU[æ@kàðXƒˆÃ< &SëaSì¢*ô®M/k…¤JÓVœ &‘ sЃká±Ñóa]hEs¸G ™ã€ó¼‹C%Ÿڇ L Â`ÀQHU…P}GF\aÁ1ò ³ A ÒMíƒ1Ö¥”ÆyZ³G6~ÿþ}œì°õ> •»i2F˜Šc+31M F¨à2‚—,YB±Ä_iFˆ´a¦Y†ŽèÓ\qЬɕuÃTL³âýk€›Ú°GÂ(@¬!’+¶9æáæ æ!&/ú}’v8€‚ƨ%ŒúX­Ö”³&!PµAÔ¿”yT‚‘&~@Mä#Šyˆé0s`Ô¹ÌC[ä9 yÇm 0cc%DƒY€ ¤M¹Š­2fJŒd5ÏdÎȘ ŽÕˆ÷ÔC&š…aÑÒã6†pJ„¯|¦ñ„]=9 èÔ°a£ 1nx†yÞ±à¡>ŸÁ´{QgpÿV'XV QšêŽšçUÒ:(À¸gŒ1¦¸ûÍô<Ïú‹šÙ¢i5`Ð ›hûŽªh«JÑ1˜pûC8ëáq`óf,IMÓ>IBÝ»o£)0l`Þoê«„‡ÊÉ1Õ|âýú€JµUõ©>ÊØ‰u“SýìȦ8Ï÷\Ãîþv5 °Þ Ü> O@¾¢óÞLÐï0ë\û÷1¿§7u„êwµ·¥î¶öÔj[eÀë­´eAðœ2>Ûq@+ÐÌÉ;Bµ„=GOLG‚gñh‹1™öÐÓPyk«Aßñìš© 9ó\Ð3J€õÓæó£u bý¯óÓ `ÊjM!@òGƒ!‹¤í<Ã'_w”JÙæ5 ýBàXŒßF×XÏë„Tw+@˜2´t6ò›E‹RaD_ªÑO•÷3 <)jnn6íU ÃEë…|܃Nóz1ôá aTÓÞ¡ög×Ô!ZL±'ctÖÀùúˆà q¹À¡i¿flH õÕWÀ¸ÞÞR×DJ¦Js UÞ"'Ÿ yb„ô1»)l1P®aÑrT6ˆ³. Tç¬Ý#q¥jm`FI·¶'ùñT)ÿuŠwùÖÀ¼µk×rì¦é$ù.!ÝÞ‡4ððÍŒîmZ€-*9»ÇÞç‡ ñKާºŒpÆSÅñ9kȘï mc=+N*@Öö=@õ¼º  oùÛ[ÿíǶ|õ¥½êýÙÀßJ›NQH¢ói34ÑyŸdÇFægh3)â}K]øî»ï†"YÑгIþ[Œ›dZlÊ"ùØ›¯ëí,nMa~¨(¸ìn굤y†ï‘Øpi¹f‚Ïð ¶çƒ#1WýÇ…øû†/c¨­Rêoy(_ï_Xƒ2âUâe/?D|Ïòi®Íø>‚&8•èÔXczÐP¿W€>öˆñ¾¸¼ˆ©ÃA>  ~lƒÐ:œ.E8þ:Ö»À)~!þö~R,¼:Töó@wYüðþÌùyÉKg4 ¾¶t$ˆø_¼Û™ÞOsÃB´×eÈO´ïEqú: ñ÷}Óí–`fn<ƒ~}AýÊïH²{ú`ܳP{̹×§il4@ì#hã}šB™lôšè¢úëµ@g!TDÅ4†Ûø¿Î¦4þ_cãŒð·ÿ ä×bcÚIEND®B`‚PyQt5_gpl-5.10.1/examples/animation/appchooser/k3b.png0000644000076500000240000002003413245231431022623 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞbKGDÿÿÿ ½§“ pHYs¯¯^‘tIME×9()‘|©IDATxÚå› °\W™ßÿ·÷½_¿ýéé=IÖ.ÙÚ,yÁxÀvBÁd BeN±„x\ÅUI*TH*ÃU3C*®!ž&C€Ø² xÖ%k±õ´=k}ÒÛ·Þ·Û·ó;§»5 °JËŸÏí»œw¾íÿ-÷´þÿ8¯çßY³f¯««Ë×ÛÛk)‘H8ÕjU¹\Î[XXð–——½ .xÙl¶) ú-@$ñmݺ5°{÷îøÝwß½µ¯¯og4]Ïùu~¿¿×qœoòi4Cc¦\.Ÿ*‹ãÓÓÓû¿ýíoŸKÁ`PÜgÏW* …I¬áÙ©©©o=Êç[ßúVÞXʯRίJÛ×_}ôŸøÄ®mÛ¶}4Nß Ó)ÃU©TR¦jµšÜz½%¡@­•À¼B8U*•²å¸Îý‹‹‹ó333ÿ{llìÏ>÷¹ÏONNºF¿n87nŒ~úÓŸ¾yÇŽ”ÉdÞâçÓÆ¯U,TáØP*#È ¢Ž X‚áÞç8ò C †B „Cò›cÆh<®ž¾>õA!®---Õ/]ºôÍ#GŽ|–¿{"ŸÏ»¿ à‡?üá‘÷¿ÿýÿ~hhè˜pM[ÆK0n(»¼¬…¹yÍÎÍjnvVK‹KÊæ²Ö:ðI úüŠ„‚JÍ'êJ§Õ•éV*Ó¥h*­P"®p,¦n„0¼r¥bÏÎΖϜ9óÅo|ãŸûú׿¾,É{½àŒŽŽÆ¾ô¥/½cÏž=Љ]Öx>¯LOOMéü¹ó:söŒ&&&4óør‡qkúÂ=£}Iǧ øEˉHTÌ¿¯§[ƒƒƒê_±BéE3…ÍyέZµJÂrÎ;÷êÁƒÿõ'?ùÉç]>¯µ|·ÜrK÷—¿üåÿ@Hû·f혠 PvqQ.èÄñ;~LhÇ2^.–ÔÛÛ£•+†ÕÇØÝÕ¥X$¢0¾Þlx¸§ \ZXÐüô 4`šŠà)\ ¿§G+VkÅêÕÊŒŒ*ÚÛ«8Âå{_¿À†*Øð|ðÁ/ã"•×Jþ·¿ýí+>ÿùÏÿZ¹`²ŒçÐìäÅ‹:úÊ+:ðÒK:~ò¤f¦¦ñÙ^mÛºU›7mR"‘¯éÉïµÈ1ób„¬E4 qìr_µZ³sž>vL Ñ€c³ï‡ñ•0½býz¥V*Â÷\bõu×Y E_ùÔ§>õàÉ“'‹?/@ú^æ?ð¬ùÌg>óHÿ&DåÛ;16¦þð‡zâ?ÐË/¿¬õÎwÜ£»n¿]סõ ¾ÄTÓjQªCœKJJtˆsqÆnçZo2¥uÖik¹°°¨/ò7kKKòUª ˜JÝU®„•»n¸á†­XÄcçÏŸ¯þªà¿óÎ;W~ö³Ÿý_Äõ[ гŸÃL_Ú@=¾WÏ>û¬\|û½¿÷{ºãoÔ À•§ÓN‡é³ ¤¤¨1ñ&$™âœ¡˜½Æy¬"&\·n½ºÄüô”ªhºœË«º¼$‡µ„ˆ Ÿ£<Ç\!l£6îÛ·ï»àRý—€0×ÿÐC}…‰ïĬÙO]º¤çŸ^ÿ÷±GuèàAíÚ±CÿüÞ{µ²§WéãWh8 …a ¯WÆŒþ¦ F¯uì3Çöº!)Èäñœ[;Á"ª3sª±†Z‰ÐJD±Bð3#––Œ»JBæ&²ÐïÿûãZî?Vy{êá‡þÏk×®½Xn23MÃüŸ{NíÝ«³§OëÝï|§nÛ½G]€Z†…tY¦a¶Í¤E|3¿oB7m$hjŸw콌áX0l2YÝZÏðš jNÝBŽ0ZS=W@e,!ˆ¤#*ÖjÖXû.’³e„°_Ìþ €¸ù¾pïm·Ýö_<Ì[³áù´÷ñÇuÄ¿ï÷_ G]øbÍã×v‘!hiµÍX›©¦eš±}¬ö±ÚÇºêØŽ¬ÃS @:žBEÉ)×5´ö:5–Á7'§î"„¢ü`B°m! •ä ¿CŽò.:!füEà§€Ùô‘|ä¯@à¤Éè– s@óë($ÇmXRƒCVƒüUÃ4t%óÖ±q ¯Ó‰Ì›s–<¨óŒ¸¿Ñ,+ê•Ï Qÿ³× ÆúrN«o¼IÉá^%¸ ÏWuOŸUAÔ³9ÍĮ̂»»;zë­·þ‘¤ðÏ@àCúÐ0™Û óµr°›Ð‘Ç4KNÿOÞ|‡’†Q(…xšåKVã®e2’LjhËfVÇ :ÌsÀù€†wnSzh¨ã!]½ö35¯¦hº[øÈ5VdV«*FjÝ{ývÒëwZ]MÀº<²È 4%øÊ•+ßsß}÷mäüTP‹'ßö¶·ÝOï3åÉÀÆOžÐÒÛ5Ã+µ²;£d‡yäs¦–j4sü$~X±LSÚ⫤À}½W¹Cr ­ä†!…!û½hMyE.¾ÆmšŒ÷¦%ækª~ùš×S_hCáÔ½y»ÂqŠ),/dÂ-¹&§äRŒ %.’=Ò£Ý~ûí5lþؤgÕððð›mÓšE’ãÇ+73«=Û·+ᵘ{m4®ÔD 3n¨’]Ö¥#GT^Zj#»ÔCÞÞ 68Ž×X­®õƒr–6+¤Òç_xAYòŠ+5ëY`l ÃO|ö­’È n8Wcîš‚1O‘• ¥F7*>0Â÷ eÆ/YÅ€Žj^¼d± Š@\ÎêïÓ?M¡ûï¿ÿÂ^ÌÜ\ý/ž;§KPhº²¯Ï21ɉõA4Xª,Êok59^,¿`Ý2'=ݽKÉ]*ãï1ÂÔòĤ.ìÛ¯j¾Ð6ýF'b@®%¾[l©sêÝ,gx½jñªêáyñ¬ºnZ£þ7¿ÜYXÂ8@éHÍ*­æ˜¯?/ó“¾+èÿØÇ>ö–+ùtL¼_·nÝ?µý:È€ßÄÙsÊÏÍi#‰a>jÒR™,ÍÿÁ°ñ9O5¿ƒ–bÝ6~/ò\yiY}ëÖÊG/X*)Ú·Z /=¥ì‰9î½::t¢‡ë•äsLV€FIaú¬b=ê¹î5†×©^)Ú{Ó<ë„T/ÍkùÌù8¾ª¼u"ccrR>\³)‹.´FFFî‘ô·PõJøèëõQìlC¶F_šŸ× À犄yOà} ôÔ§*K•LB=#a’‘¸l… ¨%úûY\U â}”’6hÒeªD íL‹i›½Ë¼ôÊ%‚CjT)tf/¨Ð3È<+i“™+m@o !VU¼ôŒÊó˜,puªgÀµ„0—³ªÓ‘ fº,’"ß*)~Þ÷¾÷í¤ç–2u~¿^dñ¹ù9…x¨/•´¦¸Bû£DNŽeôÓÌTªæ€Ì-!HV-Í:…2×Y»Kv÷®&aüïµlÐÀ×Á§.©Æ\B EÎØÑô J¯$ÄÊi'W.eòi'žCkWI€c8–C[£?Û¸ÑâU2™}ï{ß»–VÚ’¹«ã ÁÍ›7ïhXàñlsyvNUâhŒïi6ÈõuÚ5äZr+g³08HÒâZÁâûhÇø±¡ºÜ&…LwŸÕxÇÔ½Ës¹t‡`<ˆ0 }Ìc®c~ùò!•OЫ‡9Çù¦Áž%Î?¦Â½_Ï_[ùÚ9ÁkJ‚?Û~§HºÑ(ýJ c×™ðYÔ,PA$Ú¥l€ór˜TsÙÓlÞßX2¥éœ¢ƒk”=ôŒ*—j<°ÅLxuL™pT$ZšœàºãÍËé°[­Ñè˜WàbEÑë×`æa-;¢Ê‚†[÷øü5…ÎV£VQתõ˜þ³ªÌ©´€[¥záÚþÌØô˜WNVy= ®o  a@ºåäh[6*çsò×ê¶;pë˜bø,¨<¨VÀß'N«gãå‡FÉžWyÁ3‹‡hhÀ@3¡*Ž5À,âF¥SY7ÁÚ–TÊ䔸gi¢^¼ üÅÆU@Œs_í»òn½Y•ɧT^¬©YŒªç– ¸ “V‹R‰ S”Y…€|êݸU5h\ ¼1{ë¯55ŒöKÆ ±¿dPËH„z”Y£){ ,ÁÝ–"Ì[G³í¹.Ô´¨ælȲ‚‡méÍwS” ÏWº€ ÿ•ŽÁ€ÂÁ@³Ì§Ôà8”4<£Õ+üâ$£Ÿ>},iQ[œ6¦Ù¾î¶Ì¹èÓÒñƒhÆ0U’ÄMp/ˆcØ90K1U*£ÕËî†æý¤Ã!UªäEÐ$"@ÿ)uЮÁ,~ÏØÖ&kó)œL^Ö^–ä]iUŠ…,äð/ˆ´¢ÔóS†VU/M* j»KS §Cª.¹åcH]R3U¼·Ou´_žºˆ 6!×,8*-žRaÃF¬`Ôj…§Úëhù7DìŸFM ‚£·ÜlŒúˆÏÊõPBYq”Qžá82¯j†êjD0nJ‚šm†àËà^i^7_h§ŠVq:-a€Êqrª.7•;úІn¼YÝë7ʹ~7þ™g¸E"iÍ+Ľ ”.žÅLbÒ°!ÈF”~KYúê¸J7lSjhX°)b”NÛâ"o¯JÝRÈ ŽƒuÆYÅz©'Ò1ÖÓ$¯™PbTÇß³±º’ƒŽUT¬ß£6ÁÌÉðù‡ÉˉËGcÆo’ æçc6[œfh\‰µ1>nûúZ‚ú?ÂÃLbM¬|>¯éçC%ù …ÉL !qîqlO<ž!ïžÅm(m½ô´ÕMÝ@š=WPiò÷Wí3ÔtI™·xáè^6÷ÙnÑùgŸÓô±«´|FÑ?fÂÕŒ"é¸B©¨bAõmuÔ³ÉSÏ–MÖ×Góµ6\ œ8gá L÷¥—^:r >ù䓇y—V278”qÅ Œ 5%ê{)wø¨æÇaÞybï„Ù–¼š·üécÄæ&×=Ë|Ç:„P¸† °˜·fÏ Â$õÁô^ÍïÂjЫYEhÐñ qïç/âç0—HQ|õp-Ná¢ñüí0XC÷5¿"N‹É …»ôL”0ÿi¶üIôø\d3ëÔÛHIf2JPâæé¨Ø\Úåá 5Í=ÿÝ!ÅúúU]0fiêýà5§:UW-1̶£ƒÉ`WAŠœs­Éã›0X€¡yy•3¸ØQ¬b™â†45à´ÜGé#X˜AõypaI¡®q” Y@äpQ±6a1níWÀŒ Ñsñ'Sªt¥qÛõʶ7fÍÏÏ””ýÉ–XšÇ ž!­™ø1ôš5 ¦Rí¦¤Ðœ£üI%ûžFq†2B¸Ó3ª-/e¡«Â—µÍBãj A—‰.ª:¿¬Ø‹Æ2OVE„ ÖØŒÎA`ä<_gþóÌ;KhÂxDÂö­ðë.æ‹ó½ÝªÉá÷eBxí“p3¥®ß*_v"a®Û‚B3i¨/ ÀÅv‹¹³.‰H…P›'õ¾„ÔZÏøMvˆ@Š—kÜ£lÝ µÜ¬U¸7Õ,È&ŒGÜlÚ $/oç yÛ bÓÄãùbqÊJòZØ“³{÷î}„ö¸ÙÜè‰IPä½ ry(gµZ+8Êž×çû÷ì„Y7Õ)T¦h^Vlc΄"P­$sŠa]2aϱYœÇ²/_ÒüË 0Ƨdf°SžØfK­Æ]|Šx€&!¡vó÷.¨²Ñ¸2‹ö—0ÿ2€Ûž%ÃÜðÏÞ­ºÏéìUt¿ÿÝï~&Kâs:IÒþýûÇ ^Ù¾}û6úg „]»viyó†©&¤†0YrƒS§Ô½i- Fð×=þW´4c-³¦þ™çŒU«{£ÇËM—L.ˆµ y‹f€É,é3šóÈ'^Üå&î—FvŽýT™}0iæu  -’8!wù° ,Œ€t¬icá$URzµ§ÞU®zw@r˜ù°#!üÿ¬§ì´0u®i:á]`£DÌS¨§ýrÔ¶¡XÃ2ÚŸW&¹ç" Y$ûuª/¥þ¡j‘IzD’WûÆ#<8~öì13åÏz=î² u†wiÛÙj²&²€˜ÂPin¡/Ù¢=­Ä' Å¥+€• Ô¤¦€4͉¦º`¾geƒf‡@ `¾A›[ج¦-€ú‚G²ãSiÞ ¥£ýN%k)Á\±>µÜ­Á‰<7ÎPúâÑÁi|?k6Gôê Òº÷QEyùºHdš››c/Óþ¯ýÍÃ?dò¹ŸwƒD‰ ˆ³ì¸z Â0o"Bˆ«Dùéˆ][vÆÓÖ€)@t8†ñ˜Çù¦R}žÒÃM¥·ø1_|3‚¢X@¼…àMY` ¹Ëž >¬G×~šÌÛƒ˜Ófƒ&Ý] Ä&ÞÏ`U¹0€™ÑYòýð»Þ®‘·½UÙrÉhÞßäŸýñ ¸ä2ÓÏ+€~3r:ìȼݸB!0 Ceús¾J™¢¤¦D£^  lFîöQ,ùö£u?Áh> ó ð E §4Åe0À­Ûö™“mx¤Ñi1äÊ-a£Ì™Iʾ-ò-¢ñYü}ʆ¹žÖ…DF¹›vkËÿ@E"Î,š'³s¿ýÍ¿}`ìС§‹’û‹n’2ûôÏÐ._Ë ÅÆ‚&´%¶ø©ÐÅMÆKŠgªDM+'à Sùa:àØjJò= ó/*ZMâšµ‚V,!bw5'Î1Ÿ˜ËAÓàE˜‰ ñ:ùýBX!(˜7ùFZçHgèíxàãªü-æÙÔñÜÓÏüù·¾öWÎtÅÌ.±&T8vìØ‰+Vì!" !kTÊ6)kåœRÝæ]^Í4%!A~ÌÑo²3˜”Â1L>Á÷ç“\sS¨•ƒÙ£kÝÉqÀ“~^G)X@7 Ó Ig‚ì( EèBø{ LÇ8Ø£þš¿I;>þ1Uú Ì£8³ŸéÑ¿ü“/|²[š[þ%ö zhiáøñãc¼6¿ <è PŒÇ¡$Ó°òK 0Õ¡ßÖöAb 0ú¡€>„ ÌÈy5ü&w‡Ìf§cƒ±.QÁ6Öä(éI]4c»2õvÃ<O—/¬p“ˆTCÜ„ª€Í‹<}×»´ù_ýK±”é™Ëüˇ¿ð—Ÿÿ¿I6êçàá—Ý)JëÎŒ#*˜©'‰ØL¯‰S§¯"ËJ«œ¯Õ-S ¶*sªPC. à„Ù¢+°–b•ã TkQÁØŒ¸P Ìé¢PœHùèM@¡&ÖW#ÛŒ&|Qf ›|PCwÝ¡,QijzÚ»Y¿øµ¿øï÷GòÙñ³¬ýW¹Y:‚ÜÄÏaþ”$iÛhDåh7H…Êb~^Åñ))˜W¨Qmí 5UþùšÿKýNí7Äí#žÔ)g¡  ¢mF/,LN4Á4V¦q×]Úøž{ÕÀ³ËvW:•¬Ž<ôø_?ô•wWJ§Kîk±]>DÇh+{?Åo~—\Áa’"!€ 3ަ§W>}?=¥eHIjÃî#ð×K[CÍvºkÃic‚Ÿó†`ÚäúhÞ£ºXqu®áÑ—Ü£MìG²-GB¶@’Ãþ?£ùÆ}ûþÇ÷þúoþëHÓ»x‘¾–?˜@Ã;wîüƒ7½éM&Sì  ©°ÉýYhÜAaÅœ ¯ž”&Çš¿¤š òö@‰ÔµJîn„À?ñŒ|P ˆy‡`8¢ãT©ªYî©bioxƒFØ}ît¥ñ ª–²Y›áMcögÏœ™{æÉü§£Ï=ÿÍ•Ôs%ïõøÉŒ¥ùÜzÇw|‚×ÍoÆ%|„KÅc1»ƒ;,)î(æC³äãEL´:5©æìŒ|0 ‚ywP·U^ÃT…áˆ\ÖKSãô«ËVõnÝ"nFÙ yäÅÿO­Ty5èÕ—¦`“š¿©?uÔ* ¢°×¯Ý°þÆÃÃ×”«ÉÔÊp$œ¦ñŠWÃÜl¯Ð²*Áü2m« ìN?791qøì©ñƒ\Ÿ¦úËŠ>Ѳäý6þxšº·—Èò‘ŒÃ脚œÇü=G¸=Èõ2›TË €Í ׯõ¨ß°_­7õ:þ_¼ÝæS ÂIEND®B`‚PyQt5_gpl-5.10.1/examples/animation/easing/0000755000076500000240000000000013245231431020542 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/animation/easing/easing.py0000755000076500000240000002373013245231431022372 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (pyqtProperty, QEasingCurve, QObject, QPoint, QPointF, QPropertyAnimation, QRect, QRectF, QSize, Qt) from PyQt5.QtGui import (QBrush, QColor, QIcon, QLinearGradient, QPainter, QPainterPath, QPixmap) from PyQt5.QtWidgets import (QApplication, QGraphicsPixmapItem, QGraphicsScene, QListWidgetItem, QWidget) import easing_rc from ui_form import Ui_Form class Animation(QPropertyAnimation): LinearPath, CirclePath = range(2) def __init__(self, target, prop): super(Animation, self).__init__(target, prop) self.setPathType(Animation.LinearPath) def setPathType(self, pathType): self.m_pathType = pathType self.m_path = QPainterPath() def updateCurrentTime(self, currentTime): if self.m_pathType == Animation.CirclePath: if self.m_path.isEmpty(): end = self.endValue() start = self.startValue() self.m_path.moveTo(start) self.m_path.addEllipse(QRectF(start, end)) dura = self.duration() if dura == 0: progress = 1.0 else: progress = (((currentTime - 1) % dura) + 1) / float(dura) easedProgress = self.easingCurve().valueForProgress(progress) if easedProgress > 1.0: easedProgress -= 1.0 elif easedProgress < 0: easedProgress += 1.0 pt = self.m_path.pointAtPercent(easedProgress) self.updateCurrentValue(pt) self.valueChanged.emit(pt) else: super(Animation, self).updateCurrentTime(currentTime) # PyQt doesn't support deriving from more than one wrapped class so we use # composition and delegate the property. class PixmapItem(QObject): def __init__(self, pix): super(PixmapItem, self).__init__() self.pixmap_item = QGraphicsPixmapItem(pix) def _set_pos(self, pos): self.pixmap_item.setPos(pos) pos = pyqtProperty(QPointF, fset=_set_pos) class Window(QWidget): def __init__(self, parent=None): super(QWidget, self).__init__(parent) self.m_iconSize = QSize(64, 64) self.m_scene = QGraphicsScene() self.m_ui = Ui_Form() self.m_ui.setupUi(self) self.m_ui.easingCurvePicker.setIconSize(self.m_iconSize) self.m_ui.easingCurvePicker.setMinimumHeight(self.m_iconSize.height() + 50) self.m_ui.buttonGroup.setId(self.m_ui.lineRadio, 0) self.m_ui.buttonGroup.setId(self.m_ui.circleRadio, 1) dummy = QEasingCurve() self.m_ui.periodSpinBox.setValue(dummy.period()) self.m_ui.amplitudeSpinBox.setValue(dummy.amplitude()) self.m_ui.overshootSpinBox.setValue(dummy.overshoot()) self.m_ui.easingCurvePicker.currentRowChanged.connect(self.curveChanged) self.m_ui.buttonGroup.buttonClicked[int].connect(self.pathChanged) self.m_ui.periodSpinBox.valueChanged.connect(self.periodChanged) self.m_ui.amplitudeSpinBox.valueChanged.connect(self.amplitudeChanged) self.m_ui.overshootSpinBox.valueChanged.connect(self.overshootChanged) self.createCurveIcons() pix = QPixmap(':/images/qt-logo.png') self.m_item = PixmapItem(pix) self.m_scene.addItem(self.m_item.pixmap_item) self.m_ui.graphicsView.setScene(self.m_scene) self.m_anim = Animation(self.m_item, b'pos') self.m_anim.setEasingCurve(QEasingCurve.OutBounce) self.m_ui.easingCurvePicker.setCurrentRow(int(QEasingCurve.OutBounce)) self.startAnimation() def createCurveIcons(self): pix = QPixmap(self.m_iconSize) painter = QPainter() gradient = QLinearGradient(0, 0, 0, self.m_iconSize.height()) gradient.setColorAt(0.0, QColor(240, 240, 240)) gradient.setColorAt(1.0, QColor(224, 224, 224)) brush = QBrush(gradient) # The original C++ code uses undocumented calls to get the names of the # different curve types. We do the Python equivalant (but without # cheating). curve_types = [(n, c) for n, c in QEasingCurve.__dict__.items() if isinstance(c, QEasingCurve.Type) and c != QEasingCurve.Custom] curve_types.sort(key=lambda ct: ct[1]) painter.begin(pix) for curve_name, curve_type in curve_types: painter.fillRect(QRect(QPoint(0, 0), self.m_iconSize), brush) curve = QEasingCurve(curve_type) if curve_type == QEasingCurve.BezierSpline: curve.addCubicBezierSegment(QPointF(0.4, 0.1), QPointF(0.6, 0.9), QPointF(1.0, 1.0)) elif curve_type == QEasingCurve.TCBSpline: curve.addTCBSegment(QPointF(0.0, 0.0), 0, 0, 0) curve.addTCBSegment(QPointF(0.3, 0.4), 0.2, 1, -0.2) curve.addTCBSegment(QPointF(0.7, 0.6), -0.2, 1, 0.2) curve.addTCBSegment(QPointF(1.0, 1.0), 0, 0, 0) painter.setPen(QColor(0, 0, 255, 64)) xAxis = self.m_iconSize.height() / 1.5 yAxis = self.m_iconSize.width() / 3.0 painter.drawLine(0, xAxis, self.m_iconSize.width(), xAxis) painter.drawLine(yAxis, 0, yAxis, self.m_iconSize.height()) curveScale = self.m_iconSize.height() / 2.0; painter.setPen(Qt.NoPen) # Start point. painter.setBrush(Qt.red) start = QPoint(yAxis, xAxis - curveScale * curve.valueForProgress(0)) painter.drawRect(start.x() - 1, start.y() - 1, 3, 3) # End point. painter.setBrush(Qt.blue) end = QPoint(yAxis + curveScale, xAxis - curveScale * curve.valueForProgress(1)) painter.drawRect(end.x() - 1, end.y() - 1, 3, 3) curvePath = QPainterPath() curvePath.moveTo(QPointF(start)) t = 0.0 while t <= 1.0: to = QPointF(yAxis + curveScale * t, xAxis - curveScale * curve.valueForProgress(t)) curvePath.lineTo(to) t += 1.0 / curveScale painter.setRenderHint(QPainter.Antialiasing, True) painter.strokePath(curvePath, QColor(32, 32, 32)) painter.setRenderHint(QPainter.Antialiasing, False) item = QListWidgetItem() item.setIcon(QIcon(pix)) item.setText(curve_name) self.m_ui.easingCurvePicker.addItem(item) painter.end() def startAnimation(self): self.m_anim.setStartValue(QPointF(0, 0)) self.m_anim.setEndValue(QPointF(100, 100)) self.m_anim.setDuration(2000) self.m_anim.setLoopCount(-1) self.m_anim.start() def curveChanged(self, row): curveType = QEasingCurve.Type(row) self.m_anim.setEasingCurve(curveType) self.m_anim.setCurrentTime(0) isElastic = (curveType >= QEasingCurve.InElastic and curveType <= QEasingCurve.OutInElastic) isBounce = (curveType >= QEasingCurve.InBounce and curveType <= QEasingCurve.OutInBounce) self.m_ui.periodSpinBox.setEnabled(isElastic) self.m_ui.amplitudeSpinBox.setEnabled(isElastic or isBounce) self.m_ui.overshootSpinBox.setEnabled(curveType >= QEasingCurve.InBack and curveType <= QEasingCurve.OutInBack) def pathChanged(self, index): self.m_anim.setPathType(index) def periodChanged(self, value): curve = self.m_anim.easingCurve() curve.setPeriod(value) self.m_anim.setEasingCurve(curve) def amplitudeChanged(self, value): curve = self.m_anim.easingCurve() curve.setAmplitude(value) self.m_anim.setEasingCurve(curve) def overshootChanged(self, value): curve = self.m_anim.easingCurve() curve.setOvershoot(value) self.m_anim.setEasingCurve(curve) if __name__ == '__main__': import sys app = QApplication(sys.argv) w = Window() w.resize(400, 400) w.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/animation/easing/easing.qrc0000644000076500000240000000015113245231431022514 0ustar philstaff00000000000000 images/qt-logo.png PyQt5_gpl-5.10.1/examples/animation/easing/easing_rc.py0000644000076500000240000005326313245231431023057 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Thu May 2 16:22:48 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x14\x1d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x2e\x00\x00\x00\x37\x08\x06\x00\x00\x00\x73\x60\x78\x64\ \x00\x00\x13\xe4\x49\x44\x41\x54\x78\x9c\x62\xfc\xff\xff\x3f\xc3\ \xdf\x7f\x7f\x99\x99\x99\x98\xff\x3e\x78\xf1\x58\x66\xe9\x9e\x55\ \x09\x87\x2f\x9e\xb6\x79\xf7\xe9\xad\x98\xa4\xf2\x3f\x7e\x51\xb9\ \xbf\xfc\xcc\x1c\x3f\xf8\xfe\xfd\xff\xc7\xca\xc5\xc6\xf7\x46\x9c\ \x5b\xf6\x96\x24\xaf\xd2\x35\x29\x3e\xa5\xcb\xd2\xbc\x4a\xd7\xc4\ \x78\x64\xef\x08\x70\x8a\x3e\x63\x63\x66\xff\xc5\x80\x05\xfc\x67\ \xf8\xcf\xf4\xef\xff\x3f\x26\x06\x86\xff\x0c\x8c\x0c\x8c\xff\x19\ \x19\x18\xff\x33\x30\x42\x69\x0a\x00\x00\x00\x00\xff\xff\x62\xfc\ \xfb\xf7\x2f\x33\x13\x13\xd3\xdf\x59\x9b\x17\xa6\x54\xcf\x6d\xed\ \x7d\xf3\xe6\x0d\x1f\x17\x2f\xdb\x7f\x7b\x2f\x61\x46\x59\x45\x4e\ \x06\x86\x7f\x8c\x0c\x0c\xff\x99\x18\x18\x18\x18\x18\xfe\xfd\xff\ \xc7\xf0\xe7\xdf\x6f\x86\x7f\xff\xff\x30\x30\x30\x30\x32\xb0\x30\ \xb1\x32\x70\xb2\xf0\x7c\xe3\x63\x17\x7a\x26\xcc\x25\x75\x5f\x9c\ \x47\xee\xa6\x04\x8f\xc2\x75\x09\x5e\x85\x9b\xa2\x5c\x52\xf7\x05\ \x38\xc5\x9e\xb1\xb3\x70\xfc\xc0\x6e\xf5\x7f\xc6\x7f\xff\xff\x31\ \xc3\x39\x24\x7a\x08\x00\x00\x00\xff\xff\x62\xfc\xff\xff\x3f\xc3\ \xa4\xb5\xb3\x73\xf2\xbb\xf3\x26\x73\xf2\x09\xff\x63\x67\x63\xfb\ \xef\x1e\x2c\xc4\x20\x21\xc3\xc6\xf8\xed\xeb\x3f\x46\x46\x88\x39\ \x8c\x70\x0b\x18\x99\xfe\x33\x32\x30\xfc\x67\x60\x60\x60\xf8\xff\ \xff\x3f\xd3\xbf\xff\x7f\x19\xff\xfc\xff\x03\xf1\xd0\xbf\x3f\x0c\ \xff\x19\xfe\x33\xb0\x30\xb2\x32\xb0\xb3\x70\xff\xe5\x67\x17\x7e\ \x21\xcc\x25\x79\x5f\x8c\x47\xee\xa6\x14\xaf\xe2\x75\x09\x1e\x85\ \xeb\xa2\x3c\x32\x77\x85\x39\x25\x9e\x70\xb0\x72\x7d\xc5\xe7\xa1\ \xff\x70\x4b\x19\xff\x31\x62\xf1\x10\x00\x00\x00\xff\xff\x6c\x92\ \xbd\x0a\xc2\x30\x14\x46\xbf\x2f\x16\x7f\xd2\x06\x21\x83\xc6\x41\ \xc5\x5d\x70\xec\xa8\xbb\xcf\xe2\x6b\xba\x76\x70\x28\xa8\x83\xe0\ \xd6\xb1\x88\x20\x24\xf7\x3a\x88\x5b\x5e\xe0\x1c\x0e\x1c\x36\xb7\ \xcb\x76\x7f\x3a\x9e\x85\xea\xe2\x87\xb2\xab\x4b\x53\x1f\xa6\x78\ \xbf\x04\x66\x90\x03\x67\x4c\xa0\xfe\x0a\xa9\xc4\x7f\x8f\x64\xa2\ \x44\x24\x89\x48\x1a\xa1\x2a\x30\x2c\x30\x2e\xac\xb8\x91\xef\xfc\ \x24\x3c\x66\xe5\xf2\xba\x70\x9b\x36\x54\xeb\x76\x5e\xad\xee\xde\ \x86\xa7\x1d\xba\x9e\x79\x0f\x45\xc5\x28\x94\x04\xf0\x05\x00\x00\ \xff\xff\x62\x99\xbc\x76\x56\xee\xa7\xef\x5f\x79\xf9\xb9\xf9\xfe\ \x32\xb2\xff\x65\x56\xd6\xe4\x62\xf8\xfd\xeb\x3f\x03\x23\x13\x51\ \x8e\x66\x60\x60\x60\x60\xfc\xcf\xf0\x9f\xf1\xff\x7f\xf4\x18\x66\ \xfc\xcf\xca\xc4\xf6\x9f\x8d\x99\x1d\xc9\x43\x0c\x8c\xff\xfe\xff\ \x65\xfe\xf8\xe3\xb5\xc4\xbb\xef\xcf\x24\x6e\xbc\x39\x65\x01\xf1\ \x10\x33\x03\x3b\x33\xe7\x7f\x1e\x36\xc1\xb7\x82\x9c\xe2\x0f\xc5\ \x79\x64\x6f\x8b\xf3\x28\x5c\x97\xe4\x55\xb8\x2e\xce\x23\x77\x5b\ \x98\x4b\xe2\x11\x0f\x9b\xc0\x3b\x26\x46\xa6\xbf\x30\xd3\x01\x00\ \x00\x00\xff\xff\x62\x54\x89\x34\xbe\xfb\xf4\xed\x0b\x25\x86\xff\ \xcc\xff\x85\x44\x58\x18\xbd\xc3\x45\x88\x76\x31\xb9\x00\x9a\x9e\ \xff\x31\xa2\x79\xe8\xef\x7f\x48\x0c\xfd\xf9\xf7\x9b\xe1\xff\xff\ \x7f\x0c\x8c\x8c\xcc\x0c\x6c\xcc\x1c\x0c\x3c\xac\xfc\x1f\x04\x39\ \xc5\x1e\x89\x72\xcb\xde\x91\xe0\x51\xb8\x26\xc9\xab\x70\x03\x00\ \x00\x00\xff\xff\xbc\xd1\xb1\x0d\x80\x30\x10\x03\x40\x3b\x05\x54\ \x54\xb4\x91\x32\x0e\xa2\x65\xff\x45\xc8\xff\xdb\x54\x94\xb4\x8c\ \x70\x3a\x6e\xe7\xb8\x01\x2f\x73\x1a\x7d\xac\x38\xae\x1d\x11\x06\ \x3f\xbe\x7e\x00\x99\xa0\x5e\x90\xad\x56\x4e\x96\x02\xa9\x84\x5c\ \x20\x1b\x1e\x00\x00\x00\xff\xff\xb4\x92\x21\x12\x00\x20\x0c\xc3\ \xda\x5b\x81\xff\x7f\x98\xa0\x26\x70\x18\x2a\x73\x11\x11\x0d\x30\ \xdd\xd6\xfb\x3d\xbe\x0c\x61\x81\x91\xae\x92\x72\xa8\x0c\x96\xbc\ \x9b\x1d\x00\x00\x00\xff\xff\x94\x94\xb1\x0d\x00\x20\x0c\xc3\xdc\ \x96\xff\x4f\x76\x19\xd8\x10\x42\x70\x40\x6c\x79\xc9\xd8\x96\x7f\ \x22\x21\x33\xa8\x2a\x6c\xd1\x05\xc8\x08\xd6\x27\x34\xb6\x57\xc6\ \x93\xe7\x10\x34\x01\x00\x00\xff\xff\x8c\x91\xc1\x0a\x80\x20\x10\ \x05\x67\xdd\x35\xa5\xfe\xff\x3b\x83\x28\x41\xad\xad\x4b\x67\xeb\ \xdd\x67\x18\x78\x36\x02\x46\xc1\x6a\x42\x9e\x8d\xbd\x1c\xac\x5b\ \x21\x6a\x24\x4d\x09\x01\xaa\x37\x4e\xef\x68\x30\xb2\x2d\x04\x51\ \xfc\xbe\x3e\xac\xef\xed\x3f\xf7\x00\x00\x00\xff\xff\x22\xd9\xe1\ \xff\xff\x31\x30\x70\x70\x32\x33\x7c\xfb\xfa\x87\xe1\xf4\xc9\xc7\ \x0c\x52\x5c\xea\x0c\x5e\x26\x3e\x0c\xc6\xaa\x86\x0c\xa2\x02\x22\ \x0c\x8c\x8c\x0c\x0c\x5f\x7e\x7d\x60\x78\xf6\xe9\x1e\xc3\xb5\xd7\ \x27\x19\xae\xbe\x3a\xc1\xf0\xf5\xf7\x27\x06\x6e\x56\x3e\x9c\x8e\ \x67\x64\x64\x60\x80\x95\x4a\x4c\x8c\x4c\x0c\xff\xff\xff\x67\xf8\ \x4f\xc0\x13\x00\x00\x00\x00\xff\xff\x22\xc9\xe1\xff\xff\x43\x1c\ \x7d\xe7\xc6\x17\x86\xa3\xfb\xde\x32\x54\x84\x54\x30\x14\x85\x67\ \x30\xb0\xb3\xb3\x32\xfc\x87\x54\xe9\x70\xb5\x5a\x62\x16\x0c\xae\ \x2a\xd1\x0c\xcf\x3f\x3f\x60\x58\x73\x75\x22\xc3\xe9\x27\x3b\x19\ \xb8\xd8\xf8\x18\x30\x8b\x4d\x06\x86\x5f\x3f\xff\x31\xb0\xb0\xb0\ \x30\x30\x32\xfd\x65\xf8\xf6\xfb\x0b\x03\x0b\x13\x0b\x03\x2b\x13\ \x3b\x5e\xc7\x03\x00\x00\x00\xff\xff\x22\x3a\x3b\xfe\xff\xc7\xc0\ \xc0\xce\xc1\xc4\x70\xe3\xf2\x57\x86\x9d\x6b\x5f\x30\xcc\x2e\x9c\ \xce\x50\x19\x97\xcb\xc0\xc2\xca\xc4\xf0\xf7\xdf\x5f\x86\xff\xff\ \xff\xc1\x2b\x9b\x3f\x7f\x7f\x33\xfc\xfe\x03\x29\xd2\x24\x79\xe5\ \x19\x72\x2d\xfa\x19\x42\x74\xf2\x19\xbe\xfd\xfa\xcc\xc0\x04\x2d\ \x01\xfe\xff\x67\x60\x60\x65\x63\x64\x78\xf5\xec\x0f\xc3\x92\x59\ \x0f\x18\x3c\xc4\x4b\x18\xba\xbc\x36\x32\xd4\xd8\x2f\x66\x30\x94\ \x74\x64\xf8\xf1\xe7\x1b\x5c\x2d\x36\x00\x00\x00\x00\xff\xff\x8c\ \xd4\x21\x0e\xc2\x40\x10\x40\xd1\x3f\x33\xbb\x75\x0d\x06\x01\x0e\ \x53\x82\x44\x35\x58\x24\xa6\x12\x8d\x20\xe1\x04\x78\x6e\xc4\x01\ \xb8\x0c\x69\x10\x08\x0c\x49\x31\x5d\xb6\x83\x42\x92\x70\x82\xff\ \xd4\xff\x0b\xfe\x8d\x3c\xee\x99\xcb\xf9\xca\x69\x7f\x64\xbb\x6e\ \xe8\x53\x42\x45\x31\x35\x44\x14\xd3\x80\x49\x20\x58\xa4\x08\x05\ \x0e\x0c\xee\x64\xcf\x34\x8b\x03\x9b\xf9\x8e\xae\x7f\xa2\x62\xb8\ \x3b\xaa\xc2\xad\x7d\x11\xbd\xa4\xae\x56\x8c\xe2\x94\x6a\xbc\x64\ \x52\xce\x78\x0f\x09\xf8\xfd\xe4\x0f\x00\x00\x00\xff\xff\x22\x3a\ \xc4\x19\x19\x99\x18\x0e\xee\x7e\xce\xa0\xa9\xac\xcb\x50\x16\x95\ \xcb\xc0\xc0\xc0\xc0\xc0\xca\xc2\xc2\xc0\xc8\xc8\xc8\xf0\xff\x3f\ \x24\x99\xdc\x78\x7b\x92\xa1\x66\x43\x3a\x83\x4f\x65\x04\xc3\xda\ \x43\x5b\xa0\x21\xc6\x08\x0f\xb9\x10\xed\x3c\x06\x45\x41\x6d\x86\ \x9f\x7f\xbe\x31\x30\x33\x31\x33\xfc\xff\xc7\xc8\xf0\xf4\xf1\x17\ \x06\x6d\x25\x55\x06\x19\x51\x69\xa8\x63\x19\x18\xfe\x13\x51\x12\ \x01\x00\x00\x00\xff\xff\x84\xd4\x2b\x0e\xc2\x40\x14\x46\xe1\xf3\ \xdf\xa6\x4c\x05\xeb\x40\xa0\x50\x2c\x02\x0d\x49\x75\x05\x0e\xc9\ \x1e\x58\x09\x8a\x2d\x90\x60\x70\x24\x78\x12\x14\x62\x12\x02\x02\ \x0c\x8f\xb6\x77\xb0\x18\xc2\x0e\x8e\xf8\x72\xfe\x86\xa7\x04\x9d\ \x20\xe2\xe9\x4d\x3c\xde\x99\x4d\x2a\x42\x5e\xd0\xb4\x0d\x92\xf0\ \xe4\x48\xe2\x70\xdd\xb3\xd8\x4c\x89\xb6\xe5\xd6\xdd\x31\x9e\x97\ \x2c\xd7\x2b\x4c\xc2\xdd\xf1\xd4\x92\x67\x81\x51\xaf\xa2\xf6\x1a\ \x99\x78\x3d\xc4\xe5\xfc\x64\xd8\x1f\x00\x7c\xed\x34\xc3\x64\x98\ \x0c\xfd\xe0\xf2\x01\x00\x00\xff\xff\x22\x1c\xe2\xff\x21\x65\xf5\ \x8d\x2b\x1f\x19\x04\x84\xc4\x19\xfc\xad\x3d\x19\x18\x18\x18\x18\ \x98\xa1\x2d\x30\x58\x64\x6e\xbe\x31\x8b\xe1\xdf\xff\xbf\x0c\xec\ \x0c\x02\x0c\xa6\xe6\x92\x0c\x72\x9a\x22\x0c\x55\x33\xda\x18\xbe\ \xff\x82\x84\x2e\x23\xb4\x08\x36\x94\x74\x60\x90\xe1\x57\x66\x60\ \x62\xfd\xc5\xf0\xf2\xc5\x67\x86\xdf\x2f\xdf\x33\x58\xe9\x98\x20\ \x2c\x63\x60\x60\xf8\xf5\xf7\x3b\xc3\xd7\xdf\x9f\x18\xbe\xff\xf9\ \xca\xf0\xeb\x2f\xf6\x56\x31\x00\x00\x00\xff\xff\x22\xe8\x70\x26\ \x66\x06\x86\x9f\xdf\x19\x18\xee\xdf\xfb\xc8\x60\xa9\x63\xc4\x20\ \x25\x2c\x09\x0f\xe5\xff\x0c\xff\x19\x18\x19\x99\x18\x3e\xfc\x78\ \xcd\xf0\xe0\xfd\x55\x06\x0e\x16\x2e\x86\x3f\xff\x7e\x33\xfc\xfe\ \xf3\x87\x41\x53\x47\x90\xe1\xe1\xe3\xfb\x0c\x07\x2e\x1c\x85\x84\ \xe6\xff\x7f\x0c\x7f\xff\xfd\x65\x60\x67\xe1\x64\xe0\xfd\x64\xc4\ \xb0\x62\xfe\x43\x86\x64\xd3\x46\x86\xcd\x33\x76\x30\xb8\x98\x38\ \x40\x03\x03\x52\xc8\x29\x08\x6a\x33\x98\xc9\xb8\x33\x68\x88\x98\ \x30\x48\xf2\x28\x60\x75\x17\x00\x00\x00\xff\xff\xc2\x5b\x1c\xfe\ \xff\xcf\xc0\xc0\xc2\xc2\xc8\xf0\xfe\xdd\x5f\x86\xef\xef\x7f\x30\ \x58\xe9\x9a\x42\x1c\xf1\xef\x1f\x03\x13\x33\xa4\xbc\x65\x64\x64\ \x64\x78\xf9\xe5\x21\xc3\x97\x5f\x1f\x19\xd8\x59\xb8\x20\xc9\xe2\ \xef\x7f\x06\x61\x31\x36\x06\x06\xe6\x7f\x0c\xa7\xae\x9d\x63\xf0\ \x34\x73\x85\xe7\x03\x06\x06\x06\x06\x4d\x51\x33\x86\x77\x8f\xfa\ \x19\x54\xc5\xb4\x19\x34\xe5\xd5\x18\xfe\xfe\xfb\x0b\x75\x38\x24\ \x16\x2d\x65\xbd\x19\x2c\x64\x3c\x19\x18\x19\x99\x18\x9e\x7f\xbe\ \xcf\xd0\xb0\x2f\x02\xc3\x6d\x00\x00\x00\x00\xff\xff\xc2\x1f\xe2\ \xff\x19\x18\x98\x98\x19\x19\xde\xbf\xfd\xcd\xc0\xf0\x8f\x99\x41\ \x5f\x45\x8b\x81\x81\x81\x81\x81\x11\xde\x02\x83\x44\xed\x9b\x6f\ \xcf\x19\xfe\xfc\xfb\xcd\xc0\xc8\xc0\xc8\xc0\xc8\x08\x49\xab\x9c\ \xdc\x4c\x0c\xcc\x5c\x2c\x0c\x37\x1f\xdf\x83\xeb\x61\x64\x82\xe8\ \xd3\x53\xd1\x64\xe0\xe2\xe3\x67\xf8\xf3\xf7\x0f\x6e\x8b\x09\x54\ \x40\x00\x00\x00\x00\xff\xff\x22\x98\x54\x18\x19\x19\x18\x3e\xbc\ \xff\xc5\xc0\xc4\xce\xc9\xa0\x20\x21\x07\x11\x83\x86\x1c\xcc\xe8\ \x4f\x3f\xde\x42\x9a\xa1\x50\xfe\xbf\x7f\x0c\x0c\xac\xac\x0c\x0c\ \xdc\xdc\xac\x0c\xcf\xdf\xbc\x84\x58\xc4\xc8\x04\xd7\x27\x25\x2c\ \xc1\xa0\xa9\x26\xc5\x70\xf1\xfe\x25\x86\xa7\xaf\x9f\xc3\x43\x1a\ \x06\xfe\xfc\xfd\xcb\xf0\xfb\xcf\x3f\x14\xbb\xd0\x01\x00\x00\x00\ \xff\xff\x22\x5c\x73\xfe\x67\x60\xf8\xfc\xe9\x37\x03\x2f\x17\x37\ \x83\x28\xbf\x30\xd4\x33\xd0\x4e\x15\x54\xc9\xb7\xdf\x9f\x51\x3c\ \xc2\xc0\x00\xc9\x1b\x1c\x1c\x2c\x0c\xef\x3f\x7f\x82\xeb\xf9\x0f\ \x0d\x49\x4e\x76\x4e\x86\x88\x28\x2d\x86\xd4\xce\x64\x06\x13\x69\ \x17\x86\xc3\x53\x37\x32\xfc\xff\xff\x9f\xe1\x1f\xc3\x3f\x06\x66\ \x46\x66\x86\xed\x37\x17\x32\xec\xba\xbd\x82\x41\x84\x5b\x92\x01\ \xa9\xef\x80\x02\x00\x00\x00\x00\xff\xff\x7c\x95\x4d\x0a\x80\x20\ \x18\x44\x9f\xf9\x43\x88\x50\xf7\xbf\x5b\x27\x88\x36\x2d\x34\x31\ \xfd\x5a\xb8\x11\x8a\xf6\x03\xf3\x86\x19\x98\x7f\x70\xd5\x77\x9e\ \x62\x21\xf8\x85\xe0\xc3\xa7\x2c\xdf\x91\xf1\x2c\x44\x7a\x53\xce\ \x69\xe2\x95\x28\xb5\x60\xb5\x05\x81\x86\x30\x29\x85\xb7\x2b\xd6\ \x18\x8c\x1e\x11\x7a\xf4\xd4\x4e\xf6\xbc\x91\xe4\xa0\xb6\x8a\xd3\ \xf3\xcb\xf3\x01\x00\x00\xff\xff\x84\x97\xc1\x0a\x80\x30\x0c\x43\ \x5f\xb7\xae\x9b\xc5\xff\xff\x57\xad\x16\x0f\x9e\x64\x03\xef\x21\ \x79\x10\x08\xe4\x7f\xc7\x81\x88\x64\xb3\x41\x57\x5b\x6a\x22\x63\ \x3a\x1e\x22\xa0\x5a\x38\xe2\xe4\xba\x63\x82\xf3\xb6\x93\x99\x7c\ \x7b\x7a\x4d\x8a\x54\x9a\x0c\xac\x3a\x5d\x7d\x99\xf9\x00\x00\x00\ \xff\xff\x22\xaa\x1c\xff\xfb\xf7\x3f\x03\x0b\x33\x33\x03\x13\x13\ \x13\xb2\xf9\x70\x00\x69\xf5\xa1\xbb\x1c\x92\xb1\xff\xfe\xfb\x0b\ \x75\x20\x2a\x60\x65\x62\x83\x26\x1d\x6c\x69\x18\xd2\x3a\xfc\xff\ \xff\x1f\xce\x5a\x14\x00\x00\x00\xff\xff\x22\xb2\xad\x02\x29\xf6\ \x18\x71\xf6\xe7\xb0\x97\x00\x8c\x50\x29\x6c\xb2\x4c\x8c\xc4\x0d\ \x21\xe0\x02\x00\x00\x00\x00\xff\xff\x22\xca\xe1\x4c\x4c\x8c\x0c\ \x7f\xff\xfd\x63\xf8\x87\xa5\x49\xca\xc0\xc0\x80\xbd\x5a\x86\x3a\ \x98\x91\x11\x7b\xb9\x40\x69\xcf\x08\x00\x00\x00\xff\xff\x22\xaa\ \x38\x64\x61\x85\xa4\xd5\xdf\x7f\x7e\xc3\x1d\x85\x0c\x58\x18\x59\ \xb1\xb6\x9d\xff\xfd\xfd\xcf\xc0\xcc\xc4\xc4\xc0\x84\x65\x80\xe6\ \xf7\xbf\x9f\xd0\xa2\x8e\xbc\x91\x38\x00\x00\x00\x00\xff\xff\x22\ \x1c\xe2\x8c\x0c\x0c\xec\xec\x2c\x0c\xdf\x7e\x7c\x67\xf8\xf1\x0b\ \x7b\xbb\x81\x95\x99\x1d\xc3\xfe\xff\x0c\x0c\x0c\x7f\xfe\xfe\x63\ \x60\x65\x65\x65\x60\x61\x46\x76\x38\x24\xfc\x7f\xfc\xf9\x06\x2d\ \x22\xc9\x03\x00\x00\x00\x00\xff\xff\x22\x58\x73\x32\x32\x32\x30\ \x70\x73\x43\xfa\x96\x1f\xbf\x7e\x82\x0a\xff\x87\x3b\x8e\x81\x81\ \x81\x81\x93\x95\x9b\x01\x32\xa8\x89\x70\xda\xff\x7f\x0c\x0c\xbf\ \x7f\xfd\x65\xe0\x64\xe7\x80\x14\x85\x50\x09\x58\x3e\xf9\xfa\xeb\ \x23\x24\x89\x91\xe9\x72\x00\x00\x00\x00\xff\xff\x22\x2a\x8d\xf3\ \xf2\xb1\x32\x7c\xff\xf1\x8d\xe1\xe5\xfb\xd7\x10\x07\xff\x47\x38\ \x90\x81\x81\x81\x81\x87\x4d\x80\x81\x81\x01\x29\xf4\x18\x21\x0e\ \xff\xf9\xf3\x2f\x03\x1f\x17\x2f\x44\x0e\xaa\x89\x91\x81\x91\xe1\ \xcf\xbf\xdf\x0c\x9f\x7e\xbe\x63\x60\x66\x64\x21\xd8\xb7\xc4\x05\ \x00\x00\x00\x00\xff\xff\xc2\xef\x70\xa8\x03\xf8\x05\xd9\x18\x18\ \xfe\xfc\x64\xb8\xf7\xec\x21\xd4\xe1\xa8\x96\x09\x70\x88\xa2\x74\ \xb3\x18\x19\x19\x18\xfe\xfc\x81\x54\x5c\x62\x82\x42\x0c\x0c\x0c\ \x90\x9e\x10\xcc\x8d\x9f\x7e\xbe\x83\x38\x9c\x89\x85\x81\xdc\x20\ \x07\x00\x00\x00\xff\xff\x22\x18\xe2\x7f\xff\xfd\x67\xe0\x17\x64\ \x61\x60\x60\x61\x60\xb8\x78\xe7\x2a\x9a\xbf\x20\x61\x2e\xc2\x25\ \xc5\xc0\xc6\xc2\x09\x29\x29\xa0\xed\xf7\x9f\x3f\xfe\x33\xfc\xfc\ \xf6\x87\x41\x5e\x42\x06\xee\x59\x58\xe8\xbe\xfc\xf2\x88\xe1\xeb\ \xaf\x8f\x0c\xcc\x8c\xcc\x64\xa7\x71\x00\x00\x00\x00\xff\xff\xc2\ \xeb\x70\x46\x46\x06\x86\xbf\x7f\xfe\x33\xf0\xf0\x31\x31\xf0\x0a\ \x73\x32\x9c\xbc\x7a\x8e\x81\x81\x81\x81\x81\x19\x5e\x11\x41\x1c\ \x2e\xca\x2d\xc3\x20\xc0\x2e\xc2\xf0\x17\xda\x4f\x64\x62\x66\x60\ \xf8\xfc\xe1\x0f\x03\xc3\xaf\xff\x0c\xba\xca\x9a\x50\xd3\x10\x2d\ \xbe\x7b\xef\x2e\x33\xfc\xfe\xfb\x0b\x9a\xc6\x91\x9d\x8e\x48\x4e\ \x4c\x8c\x4c\x0c\xac\x2c\x2c\x0c\xcc\xcc\xd8\xcb\x7b\x00\x00\x00\ \x00\xff\xff\x22\x5c\xe5\xff\x63\x60\x60\x65\x67\x60\x50\x50\xe2\ \x67\x38\x7b\xe3\x32\xc3\xa3\x57\x8f\xa1\x5d\x36\x48\xfb\xfa\xdf\ \xff\x7f\x0c\x9c\xac\x3c\x0c\x4a\x42\x3a\x0c\xbf\xfe\xfd\x64\x60\ \x64\x60\x62\x60\x62\x62\x64\x78\xfa\xe8\x3b\x03\x2b\x27\x2f\x83\ \x8d\xae\x05\xc4\x22\xa4\x6e\xd8\xb5\x57\x27\x18\x58\xa0\xc9\x04\ \xa5\x3c\x87\xfa\x81\x87\x4d\x90\xe1\xeb\xef\x8f\x0c\x2f\xdf\xbd\ \x61\x78\xf7\xf1\x23\xd6\x16\x22\x00\x00\x00\xff\xff\x22\xaa\x38\ \xfc\xf7\xf7\x3f\x83\x9a\x06\x2f\xc3\xe7\x8f\x6f\x18\x36\x1f\xdb\ \xc9\xc0\xc0\xc0\x80\x51\x8d\xdb\x2b\x86\x30\xfc\xfb\xfb\x97\x81\ \x99\xed\x1f\xc3\xcf\x6f\x4c\x0c\xa7\x8e\x3e\x60\x08\x75\xf2\x66\ \x50\x93\x51\x61\xf8\xf7\xef\x1f\x03\x23\x23\x24\x24\x9f\x7c\xba\ \xc3\x70\xfb\xed\x45\x06\x0e\x56\x2e\x06\x56\x36\x26\x86\xcf\xdf\ \xbe\x30\x30\x30\x40\x6a\x66\x58\x6d\x6a\x25\xef\xc5\x60\x2d\x92\ \xc0\xa0\xfc\x27\x80\x21\x55\x77\x02\x83\x28\x8f\x34\x24\x86\x90\ \x3c\x00\x00\x00\x00\xff\xff\x22\xaa\x02\xfa\xfd\xeb\x3f\x83\x84\ \x0c\x1b\x83\x84\x12\x1f\xc3\xf4\xf5\x8b\x18\x7e\xfd\xf9\xc5\xc0\ \xc2\xcc\xcc\xf0\x9f\xe1\x3f\x7c\xe4\x49\x5b\xcc\x82\x21\x4c\x2f\ \x9f\xe1\xd3\xa7\xef\x0c\x5b\xd6\x3d\x64\xb0\xd5\x73\x61\x98\x98\ \xd7\x0a\x35\x83\x91\xe1\x1f\x03\xc4\xa3\xfb\xef\xad\x62\xf8\xfa\ \xeb\x13\x03\x0b\x0b\x33\x83\x98\x18\x27\xc3\xc3\x17\x4f\x19\x9e\ \xbf\x7b\x01\x0d\x70\x48\x90\xf3\xb2\x09\x33\x14\xb9\xb6\x30\xb4\ \x25\xb4\x31\x38\xe9\x3a\x33\xc0\x87\xe7\x90\x9a\x1c\x00\x00\x00\ \x00\xff\xff\x22\xae\xad\xc2\xc0\xc0\xf0\x9f\xf1\x1f\x83\xad\x93\ \x04\xc3\xd5\x5b\x17\x19\xa6\xac\x9b\xcd\xc0\xc0\xc0\xc0\xf0\xfb\ \xcf\x1f\xb8\xc3\xfe\xff\xff\xcf\xe0\xa7\x91\xc1\x50\x67\xb7\x86\ \x61\x4d\xf9\x46\x86\xbd\x13\xd7\x30\x88\xf0\x8b\x40\xc6\x56\x18\ \xfe\x32\x30\x33\xb2\x30\xdc\x7b\x77\x99\xe1\xd0\x83\xf5\x0c\xdc\ \x6c\x7c\x0c\xbf\x7e\xfd\x66\x50\xd7\xe1\x67\xf8\xf8\xf1\x15\xc3\ \xca\x3d\x9b\x20\xf6\xfc\x83\xe5\x03\xb4\x21\x38\x2c\x39\x18\x00\ \x00\x00\xff\xff\x22\x6a\x08\x8e\x91\x91\x81\xe1\xf7\xcf\xff\x0c\ \x12\x32\x2c\x0c\xd6\xee\x32\x0c\x95\x53\xdb\x18\x4c\x35\x8d\x18\ \x6c\x75\x2d\x19\x7e\xff\xf9\xcd\xc0\xc4\xc4\xc4\xc0\xcc\xc4\xc4\ \xf0\xff\xff\x3f\x06\x55\x29\x55\x06\x55\x29\x48\x29\x02\x49\xbf\ \xff\x19\x98\x19\x59\x18\x3e\xfd\x7c\xc7\x30\xe7\x6c\x2d\xc3\xdf\ \x7f\xbf\x19\xd8\x59\x38\x19\x7e\xff\xfe\xc7\x20\x24\xc6\xcc\xe0\ \x1a\x28\xcb\xd0\xb1\xaa\x9b\x41\x5c\x58\x94\x21\xc4\xde\x9f\x81\ \x99\x81\x91\xe1\xff\xff\x7f\x0c\x9f\x7f\x7d\x60\x78\xf8\xe1\x3a\ \xc3\xa9\x27\x3b\x19\xde\x7c\x7b\xc6\xc0\xca\xcc\x86\xd2\x52\x04\ \x00\x00\x00\xff\xff\x62\xe4\xf1\x90\xfb\xcf\xc8\xc8\xc0\xf0\xeb\ \xe7\x7f\x06\x59\x45\x76\x06\xb7\x40\xdc\x03\xfb\xff\xff\x33\x30\ \x70\x70\x30\x33\x9c\x3a\xf2\x96\xe1\xe6\xf9\xbf\x0c\x4b\x6b\x66\ \x33\x78\x59\x3a\x42\xca\x75\x68\x1a\xfe\xf7\xff\x1f\xc3\xff\xff\ \x90\x92\x07\x36\x9e\xf8\xe4\xe3\x6d\x86\xe9\xa7\xca\x18\x9e\x7e\ \xba\xcb\xc0\xc9\xca\x03\x1f\xfc\xfc\xff\x9f\x81\x81\x9d\x9d\x89\ \xe1\xcb\x97\x5f\x0c\x2f\x5f\x7e\x65\x50\x93\x51\x66\x10\x17\x12\ \x63\xf8\xf1\xe7\x1b\xc3\xfb\xef\x2f\x19\x3e\xfe\x78\x03\xcf\xfc\ \xe8\x19\x14\x00\x00\x00\xff\xff\x22\xc9\xe1\x30\xcb\x38\x39\x59\ \x18\x1e\xde\xff\xcc\x70\xf1\xf4\x47\x06\x6f\xfd\x50\x86\x64\xcf\ \x78\x06\x1d\x25\x4d\x06\x56\x68\x6f\x06\xe6\xe0\x6f\xbf\x3f\x33\ \xac\xbd\x3a\x99\xe1\xf0\x83\x0d\x0c\x7f\xfe\xfd\x82\x8c\x02\xa0\ \x8d\xd8\xc2\x86\xac\x59\x58\x98\x18\x7e\xfc\xfa\xc1\xf0\xfb\xcf\ \x1f\xc8\x8c\x03\x13\x2b\xb4\xe4\x61\xc4\x3a\xca\x0b\x00\x00\x00\ \xff\xff\x22\x79\x0e\x82\x91\x91\x81\xe1\xfb\xb7\x3f\x0c\x32\x72\ \xdc\x0c\x7e\xe1\xd2\x0c\x77\x19\x37\x31\x18\x25\x58\x31\xb4\x2e\ \xee\x63\x60\x60\x60\x60\xf8\xfb\x17\x61\xc9\x9f\x7f\xbf\x18\x0e\ \xde\x5f\xcb\xc0\xc0\xc0\xc0\xc0\xc5\xca\x8b\xd5\x01\x8c\x4c\x90\ \x51\x81\x9f\x3f\xff\x32\x30\x33\xb0\x31\x70\xb0\x72\x33\xb0\xb3\ \x70\x32\x30\x33\x42\x27\x0b\xb0\x0f\x4d\xff\x07\x00\x00\x00\xff\ \xff\x22\x6b\xf2\x84\x91\x89\x81\xe1\xd7\xaf\x7f\x0c\x3f\xbe\xfd\ \x65\x50\x53\x15\x67\x10\x94\xe0\x65\xd8\x7a\x6c\x0f\x03\x03\x03\ \x03\x03\x13\x33\x33\x3c\xc9\xf0\xb1\x0b\x33\xb8\xa9\xc6\x30\x7c\ \xf8\xf1\x8a\xe1\xe3\xcf\xb7\xd0\x34\x8f\x3d\x2a\x19\x19\x19\x50\ \x7a\x3d\x78\xdb\x30\xff\x19\xfe\x00\x00\x00\x00\xff\xff\x22\x6b\ \x46\x02\x6e\xd1\x3f\x06\x86\xff\x8c\x7f\x18\xd4\x35\x04\x19\xce\ \x1c\xbd\xca\x70\xe9\xde\x15\x06\x3d\x25\x1d\xc8\x80\x11\xb4\x76\ \x0d\xd4\xca\x66\x90\xe1\x53\x65\x78\xf1\xe9\x11\xc3\xb1\x27\x9b\ \x19\x3e\xfc\x78\x85\xb3\xfd\x4e\x84\xad\xff\xff\xfd\xff\xc3\xc8\ \xcf\x2e\xfa\x0c\x00\x00\x00\xff\xff\xa2\x6c\xba\x8a\x91\x81\xe1\ \xf7\xef\xff\x0c\xea\xba\xbc\x0c\x7f\xfe\x7f\x63\x98\xb1\x71\x21\ \x03\x03\x03\x03\xc3\x9f\xbf\x7f\xe0\x0d\x31\x16\x46\x56\x06\x2b\ \x39\x1f\x86\x20\x9d\x2c\x06\x5e\x36\x01\x86\xbf\xff\xfe\x30\xe0\ \xcc\x40\x04\x00\x13\x23\xe3\xbf\xdf\x7f\x7f\x32\xa8\x0a\x1b\xed\ \x07\x00\x00\x00\xff\xff\xa2\xc8\xe1\x8c\x8c\x0c\x0c\x7f\x7f\xff\ \x67\xe0\x15\x60\x64\x70\x74\x97\x65\x98\xb9\x76\x31\xc3\xf6\x13\ \x7b\x19\xd8\x58\xd9\xe0\x0e\xff\xcf\xf0\x9f\x88\xf9\x1f\xa2\xc0\ \xff\xff\x0c\xff\x99\x98\x99\xd8\x7e\x3b\x28\x06\xcf\x02\x00\x00\ \x00\xff\xff\xa2\x78\x82\x90\x91\x89\x81\xe1\xe7\x8f\x7f\x0c\xda\ \x86\x3c\x0c\xf6\x3e\xc2\x0c\x69\x93\x32\x19\x66\x6c\x9a\xcf\xf0\ \xe1\xf3\x67\x86\xff\xff\x11\x6d\x94\x6f\xbf\x3f\x33\xfc\xf9\xff\ \x1b\xe7\xc8\x14\x0e\xd3\xff\x33\x32\x32\xfd\x63\x62\x64\xfe\xc3\ \xc2\xc4\xfa\xfb\xfd\xf7\x57\x8c\x0e\x0a\xa1\x53\xd4\x45\x8d\x8e\ \x03\x00\x00\x00\xff\xff\x22\xb9\x38\xc4\x05\x60\x65\xfc\xb7\xef\ \xbf\x19\x9e\x3c\xfd\xc0\x20\x29\x20\xc5\xa0\x28\x29\xc7\xc0\xce\ \xc6\xce\xf0\xfd\xf7\x67\x86\x8f\x3f\xde\x41\x47\xbc\x30\xd3\x36\ \x64\x62\x16\xba\x82\x02\xba\xd8\xe0\x3f\xc3\x3f\xe6\x7f\xff\x20\ \x0b\x1c\xfe\xfe\xfb\xfd\xef\xf7\xdf\x5f\x4c\xb6\xf2\x41\x2b\x52\ \x4d\x5b\x62\x58\x98\x58\xfe\x02\x00\x00\x00\xff\xff\x22\x3b\x73\ \x62\x58\xce\xc8\xc0\xf0\xe3\xfb\x5f\x06\x16\x66\x66\x06\x35\x15\ \x31\x86\x5f\xbf\xbf\x31\xdc\xff\x78\x09\x3e\xb5\x0d\x9d\x66\xf9\ \x0f\x59\x09\xc1\x04\x6f\xe3\xfe\x67\xf8\xc7\xfc\xf7\xdf\x5f\xc6\ \xbf\xff\x7e\x33\xfe\xfd\xf7\x87\xe1\xef\xbf\xbf\x0c\x8c\x0c\x90\ \x7e\x2c\x17\x2b\xdf\x17\x71\x4e\xb1\xc7\xa2\x5c\x32\xb7\xcd\x64\ \xdc\x97\x9a\xcb\x7a\xac\x82\x0c\xb4\xff\x67\x04\x00\x00\x00\xff\ \xff\x62\x81\xac\x7a\xf8\x4f\x95\x09\x70\x48\xf3\xfa\x3f\xc3\xcf\ \x1f\x7f\xfe\x33\x32\xb2\xfc\xe7\x64\x65\x83\x2f\xd7\xf8\xf7\xff\ \x2f\xf3\xdf\x7f\x7f\x18\x7f\xff\xfb\xcd\xf8\xe7\xdf\x1f\x86\x7f\ \xff\x20\x6b\x5e\xd8\x20\x0e\xfc\x2a\xc0\x21\xff\x58\x94\x5b\xe6\ \xb6\x24\xaf\xc2\x75\x49\x5e\xc5\xab\x92\xbc\x0a\x37\x45\xb8\xa4\ \x1e\xf0\x71\x08\xbd\x66\x62\x64\xfe\xc7\xc0\xc0\xc0\xf0\xff\xff\ \x3f\x26\x06\x68\xac\x00\x00\x00\x00\xff\xff\x62\xf9\xf3\xe7\x0f\ \x03\x1b\x1b\xdb\x3f\x06\x86\xdf\x4c\x24\x25\x3f\x88\x53\xff\x33\ \x32\x32\xa0\x85\xe0\x7f\xe6\x7f\xff\xff\x30\xfe\xfe\xfb\x8b\xf1\ \xef\x9f\xdf\xf0\x10\x64\x61\x66\x67\xe0\x66\xe5\xfb\x2a\xc6\x21\ \xff\x58\x94\x5b\xfa\x0e\xc4\x81\x4a\x57\x25\x78\x14\x6e\x8a\x72\ \x4b\xdd\x47\x76\x20\x3a\x80\x2c\xc8\xf9\xcf\xc0\xc4\xc8\x0c\xcf\ \xe5\x00\x00\x00\x00\xff\xff\x62\x11\x13\x10\x7e\xf2\xf4\xed\x73\ \x59\x76\x66\xee\xbf\xff\xff\x33\x30\x63\x77\x3c\xe3\x7f\xa4\xc5\ \x2e\x28\x69\x10\x11\x82\x10\x33\x59\x61\x0e\xe4\x16\x7d\x22\xca\ \x2d\x73\x5b\x82\x57\xe1\xba\x14\xaf\xe2\x35\x09\x1e\x85\x9b\x22\ \xdc\xd2\xf7\xf9\x39\x84\x5e\xe1\x72\xe0\xff\xff\xff\x98\xff\xc3\ \x63\x1f\xba\x18\x81\x91\xf1\x3f\x13\x96\x21\x5b\x00\x00\x00\x00\ \xff\xff\x62\xd9\xd3\xbf\xc1\x2e\xa4\x2e\x6e\xd3\xc5\x2b\x97\x74\ \x59\x98\xa5\xfe\x42\x06\x53\x99\xfe\x33\x31\x22\x56\x01\xfd\xfd\ \xff\x87\xf1\xcf\x5f\xc8\x0a\x86\xbf\xff\xa1\x21\xc8\xc4\xce\xc0\ \xcd\xc6\xf7\x5d\x94\x43\x0e\x12\x82\x3c\x8a\xd7\x24\x79\x15\xaf\ \x49\xf0\xca\xdf\x10\xe5\x96\xb9\xcf\xcf\x2e\xf4\x8a\x89\x09\xb7\ \x03\xff\x41\x17\xcc\x40\x03\x05\xb2\x04\x84\x91\xe9\x2f\xb1\x91\ \x0e\x00\x00\x00\xff\xff\x62\xfc\xff\xff\x3f\xc3\xeb\x8f\x6f\x84\ \xbd\x4a\xa2\x37\x3f\xfe\x76\xd9\x32\x38\x46\xee\xdf\xd7\x6f\xdf\ \x99\xfe\x33\x40\x06\x32\x59\x99\xd8\x18\xb8\x58\x79\x3f\x09\x70\ \x88\x3d\x11\xe1\x96\xbe\x23\xc1\xa3\x70\x43\x92\x57\xe1\x9a\x38\ \x8f\xfc\x4d\x51\x6e\xa9\x07\xfc\xec\xc2\x78\x1d\x88\x2d\x04\x89\ \x74\x1b\x5e\x00\x00\x00\x00\xff\xff\x62\xfc\xf3\xf7\x0f\x33\x33\ \x13\xf3\xdf\x57\xef\xde\xf3\x66\xcf\x4e\xde\x2e\xa1\xfd\x56\x4f\ \x96\x4f\xfd\xac\x04\xaf\xc2\x75\x69\x3e\x95\x4b\x52\xbc\x8a\xd7\ \xc4\xb8\x65\xef\x08\x70\x8a\xbe\x64\x66\x62\xc6\xde\xe2\xf9\xff\ \x8f\xf9\x1f\xc3\x3f\x68\xc3\x96\x11\x69\xa9\x13\xd9\x9d\x78\x82\ \x00\x00\x00\x00\xff\xff\x03\x00\x3c\x1e\x17\xa6\x18\xe4\xa8\x9e\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0b\ \x05\x52\xbf\x27\ \x00\x71\ \x00\x74\x00\x2d\x00\x6c\x00\x6f\x00\x67\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \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\x12\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() PyQt5_gpl-5.10.1/examples/animation/easing/form.ui0000644000076500000240000001743713245231431022060 0ustar philstaff00000000000000 Form 0 0 545 471 Easing curves 0 0 16777215 120 Qt::ScrollBarAlwaysOff QListView::Static false QListView::IconMode false 16777215 16777215 Path type 16777215 40 Qt::LeftToRight Line true buttonGroup 16777215 40 Circle buttonGroup 0 0 Properties QFormLayout::AllNonFixedFieldsGrow 0 0 0 30 Period false 0 0 0 30 -1.000000000000000 0.100000000000000 -1.000000000000000 false 0 30 -1.000000000000000 0.100000000000000 -1.000000000000000 0 30 Overshoot false 0 30 -1.000000000000000 0.100000000000000 -1.000000000000000 0 30 Amplitude Qt::Vertical 20 40 0 0 PyQt5_gpl-5.10.1/examples/animation/easing/images/0000755000076500000240000000000013245231431022007 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/animation/easing/images/qt-logo.png0000644000076500000240000001203513245231431024100 0ustar philstaff00000000000000‰PNG  IHDR.7s`xdäIDATxœbüÿÿ?Ãß™™™˜ÿ>xñXféžU ‡/ž¶y÷é­˜¤ò?~Q¹¿üÌ?øþýÿÇÊÅÆ÷Fœ[ö–$¯Ò5)>¥ËÒ¼J×ÄxdïpŠ>ccfÿÅ€ügøÏôïÿ?&†ÿ Œ Œÿÿ30Bi ÿÿbüû÷/3ÓßY›¦TÏmí}óæ /Û{/aFYEN†Œ ÿ™þýÿÇðçßo†ÿÿ00002°0±2p²ð|ãcz&Ì%u_œGî¦Âu ^…›¢\R÷8Åž±³püÀnõÆÿÿ1Ã9$zÿÿbüÿÿ?äµ³sò»ó&sò ÿcgcûï,Ä !ÃÆøíë?FFˆ9Œp ™þ320üg```øÿÿ?Ó¿ÿÿüÿñп? ÿþ3°0²2°³pÿåg~!Ì%y_ŒGâu …ë¢<2w…9%žp°r}Åç¡ÿpKÿ1bñÿÿl’½ Â0F¿/Ò!ƒÆAÅ]p쨻Ïâkºvp(¨ƒàÖ±ˆ $÷:ˆ[^à6·Ëv:ž…ê⇲«KS¦x¿fgL þ ©Äd¢D$‰H¡*0,0.¬¸‘ïü$¬ïí?÷ÿÿ"Ùáÿÿ10pp23|ûú‡áôÉÇ R\ê ^&> ƪ† ¢" ŒŒ _~}`xöéõ×'®¾:Áðõ÷'nV>œŽgdd`€•JLŒL ÿÿÿgøOÀÿÿ"ÉáÿÿC}çÆ†£ûÞ2T„T0…g0°³³2ü‡TépµZb ®*Ñ Ï??`Xsu"Ãé';¸Øø0‹M†_?ÿ1°°°002ýeøöû   +;^Çÿÿ":;þÿÇÀÀÎÁÄpãòW†k_0Ì.œÎP—ËÀÂÊÄð÷ß_†ÿÿÿÁ+›?3üþ)Ò$yår-úBtò¾ýúÌÀ-þÿg``ecdxõìÃ’Y<ÄKº¼62ÔØ/f0”tdøñç\-6ÿÿŒÔ!Â@@Ñ?3»u S‚D5X$¦ áxnĸ i I1]¶ƒB’p‚ÿÔÿ þ<î™ËùÊid»nèSBE15DÓ€I X¤ îdÏ4‹›ùŽ®¢b¸;ªÂ­}½¤®VŒâ”j¼dRÎx øýäÿÿ":Ä™î~Π©¬ËP•ËÀÀÀÀÀÊÂÂÀÈÈÈðÿ?$™Üx{’¡fC:ƒOeÃÚC[ !ƹí<EAm†Ÿ¾10313üÿÇÈðôñm%UQi¨cþQÿÿ„Ô+Â@FáóߦLë@ P, IuÉX Š-`p$xb ¶w°ÂŽørþ†§ âéM<Þ™M*B^д ’ðäHâpݳØL‰¶åÖÝ1ž—,×+LÂÝñÔ’gQ¯¢ö™x=ÄåüdØ|í4Ãd˜ ýàòÿÿ"âÿ!eõ+„Äü­=˜¡-0Xdn¾1‹áßÿ¿ ì  ¦æ’ rš" U3Ú¾ÿ‚„.#´6”t`áWf`býÅðòÅg†ß/ß3Xé˜ ,c``øõ÷;Ã×ߟ¾ÿùÊðë/öV1ÿÿ"èp&f†ŸßîßûÈ`©cÄ %, åÿ ÿ™>üxÍðàýU.†?ÿ~3üþó‡ASGááãû .…„æÿ ÿýe`gádàýdİbþC†dÓF†Í3v0¸˜8@RÈ)j3˜É¸3hˆ˜0Hò(`uÿÿÂ[þÿÏÀÀÂÂÈðþÝ_†ïï0XéšBñï3¤¼edddxùå!×_ØY¸ Éâïa16æ §®cð4s…çMQ3†wúTÅ´4åÕþþû u8$-e½,d<™ž¾Ïа/ÃmÿÿÂâÿ˜˜Þ¿ýÍÀð™A_E‹ÞƒDí›oÏþüûÍÀÈÀÈÀÈI«œÜL Ì\, 7߃ëad‚èÓSÑdàâãgøó÷n‹ T@ÿÿ"˜T>¼ÿÅÀÄÎÉ  !ƒ†ÌèO?ÞBš¡Pþ¿ ¬¬ Üܬ Ïß¼„XÄÈ×'%,Á ©&Åpñþ%†§¯ŸÃCþüýËðûÏ?»Ðÿÿ"\sþg`øüé7/7ƒ(¿0Ô3ÐNTɷߟQ<ÂÀÉ, ï?‚ëù INvN†ˆ(-†ÔÎdi†ÃS72üÿÿŸáÃ?fFf†í72캽‚A„[’©ï€ÿÿ|•M € DŸùCˆP÷¿['ˆ6-41ýZ¸Šöó†˜pÕwžb!ø…àç,ß‘ñ,DzSÎiâ•(µ`µ†0)…·+ÖŒzôÔNö¼‘ä ¶ŠÓóËóÿÿ„—Á €0 C_·®›ÅÿÿW­ždï!yäLjd³AW[j"c:" Z8âäºc‚ó¶“™|{zMŠTš ¬:]}™ùÿÿ"ªÿû÷? 33²ùpiõ¡»’±ÿþû u *`ebƒ&liÒ:üÿÿÎZÿÿ"²­)öqöç°—ŒP)l²LŒÄ !àÿÿ"ÊáLLŒ ÿýcø‡¥IÊÀÀ€½Z†:˜‘{¹@iÏÿÿ"ª8da…¤Õß~Ã… XY±¶ÿýýÏÀÌÄÄÀ„e€æ÷¿ŸÐ¢Ž¼‘8ÿÿ"⌠ìì, ß~|gøñ {»•™Ãþÿ þþc`eee`aFv8$üüù-"Éÿÿ"Xs2220psCú–¿~‚ ÿ‡;Ž“•›2¨‰pÚÿ ¿ýeàd瀅P X>ùúë#$‰‘érÿÿ"*óò±2|ÿñáåû×ÿG8‡M€)ô!ÿùó//Dª‰‘‘áÏ¿ß Ÿ~¾c`fd!Ø·ÄÿÿÂïp¨øÙþüd¸÷ì!Ôᨖ pˆ¢t³þüT\b‚B žÌŸ~¾ƒ8œ‰…Ü ÿÿ"âÿýgàda``a`¸xç*š¿ a.Â%ÅÀÆÂ )) í÷Ÿ?þ3üüö‡A^BîYXè¾üòˆáë¯ ÌŒÌd§qÿÿÂëpFF†¿þ3ðð11ð s2œ¼zŽ^A.Ê-à À.ÂðÚOdbf`øüáïÿ ºÊšPÓ-¾{ï.3üþû šÆ‘ŽHNLŒL ¬,, ÌÌØË{ÿÿ"\åÿc``eg`PPâg8{ã2ãW¡]6Hûúßÿ œ¬< JB: ¿þýd`d`b`bbdxúè;+'/ƒ®Ä"¤nصW'X É¥<‡ú‡Máëï /ß½ax÷ñ#Ö"ÿÿ"ª8ü÷÷?ƒš/Ãço6ÛÉÀÀÀ€QÛ+†0üûû—™íÃÏoL §Ž>`uòfP“Qaø÷ï##$$Ÿ|ºÃpûíEV.V6&†Ïß¾000@jfXmj%ïÅ`-’À ü'€!Uwƒ(4$†<ÿÿ"ªúýë?ƒ„ ƒ„Ãôõ‹~ýùÅÀÂÌÌðŸá?|äI[Ì‚!L/ŸáÓ§ï [Ö=d°Õsa˜˜× 5ƒ‘áÄ£ûï­bøúë 3ƒ˜'ÃÃOž¿{ pHó² 3¹¶0´%´18é:3À‡çšÿÿ"®­ÂÀÀðŸñƒ­“ÃÕ[¦¬›ÍÀÀÀÀðûϸÃþÿÿÏà§‘ÁPg·†aMùF†½×0ˆð‹@ÆVþ203²0Ü{w™áЃõ Ül| ¿~ýfP×ágøøñÃÊ=› öüƒå´!8,9ÿÿ"jŽ‘‘á÷Ïÿ 2, Öî2 •SÛL5lu-~ÿùÍÀÄÄÄÀÌÄÄðÿÿ?U)UU)H)I¿ÿ˜Y>ý|Ç0çl-Ãß¿ØY8~ÿþÇ $ÆÌà(Ëбª›A\X”!ÄÞŸ™‘áÿÿ Ÿ}`xøá:é';Þ|{ÆÀÊ̆ÒRÿÿbäñûÏÈÈÀðëçYEv·@Üûÿÿ30pp03œ:ò–áæù¿ Kkf3xY:BÊuhþ÷ÿÃÿÿ’6žøäãm†é§Êž~ºËÀÉÊüüÿŸ‰áË—_ /_~eP“QfcøñçÃûï/>þxÏüèÿÿ"Éá0Ë89YÞÿÌpñôGoýP†dÏx%MVhoæào¿?3¬½:™áðƒ þý‚Œ ØÂ†¬YX˜~üúÁðûÏÈŒ+´äaÄ:Ê ÿÿ"y‚‘‘áû·? 2rÜ ~áÒ w71%X1´.îc````øûaÉŸ¿Þ_ËÀÀÀÀÀÅʋՌLQŸ?ÿ203°1p°r3°³p203B' °Mÿÿÿ"kò„‘‰áׯ ?¾ýePSg”àeØzl33<Éð± 3¸©Æ0|øñŠáãÏ·Ð4=*Pz=xÛ0ÿþÿÿ"kFnÑ?†ÿŒÔ5νÊpéÞ=%È€´v ÔÊfáSexñéñ'›>üx…³ýN„­ÿÿýÿÃÈÏ.ú ÿÿ¢lºŠ‘á÷ïÿ 꺼 þc˜±q!ß¿à 1FV+9† ,^6†¿ÿþ0àÌ@#ã¿ß2¨ íÿÿ¢Èጌ ÿgà`dpt—e˜¹v1Ãö{ØXÙàÿÏðŸˆù¢Àÿÿ ÿ™˜™Ø~;(Ïÿÿ¢x‚‘‰áç Ú†< ö> i“2flšÏðáóg†ÿÿm”o¿?3üùÿçÈÓÿ322ýcbdþÃÂÄúûý÷WŒ ¡SÔEŽÿÿ"¹8Ä`eü·ï¿ž<ýÀ ) Å ()ÇÀÎÆÎðý÷g†?ÞAG¼0Ó6dbº‚ºØà?Ã?æÿ þþûýï÷ß_L¶òA+RM[bX˜Xþÿÿ";sbXÎÈÀðãû_ff51†_¿¿1Üÿx >µ fùY ÁoãþgøÇü÷ß_Æ¿ÿ~3þý÷‡áï¿¿ Œ ~,+ßqN±Ç¢\2·ÍdÜ—šËz¬‚ ´ÿgÿÿb¬zøO• pHóú?ÃÏþ32²üçdeƒ/×ø÷ÿ/óßÿûÍøç߆ÿ k^Ø ü*À!ÿX”[æ¶$¯ÂuI^Å«’¼ 7E¸¤ðq½fbdþÇÀÀÀðÿÿ?&h¬ÿÿbùóçÛ?†ßL$%?ˆSÿ322 …àæÿÿ0þþû‹ñïŸßðdafgàfåû*Æ!ÿX”[úÄJW%xnŠrKÝGv :€,ÈùÏÀÄÈ Ïåÿÿb~òôísYvfî¿ÿÿ30cw<ã¤Å.(i‚3Yaä}"Ê-s[‚Wắâ5 …›"ÜÒ÷ù9„^áràÿÿÿ˜ÿÃcº‘ñ?–![ÿÿbÙÓ¿Á.¤.nÓÅ+—tY˜¥þBS™þ31"Výýÿ‡ñÏ_È †¿ÿ¡!ÈÄÎÀÍÆ÷]”C‚<Š×$y¯IðÊßå–¹ÏÏ.ôЉ ·ÿAÌ@²„‘é/±‘ÿÿbüÿÿ?Ãëo„½J¢7?þvÙ28Fîß×oß™þ3@2Y™Ø¸Xy? pˆ=á–¾#Á£pC’Wáš8üMQn©üìÂxˆ-‰t^ÿÿbüó÷33óßWïÞófÏNÞ.¡ýVO–Oý¬¯Âui>•KR¼Š×ĸeïpоdfbÆÞâùÿùÃ?hÖi©Ùx‚ÿÿ<¦䨞IEND®B`‚PyQt5_gpl-5.10.1/examples/animation/easing/ui_form.py0000644000076500000240000001702313245231431022557 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'form.ui' # # Created: Thu May 2 16:46:55 2013 # by: PyQt5 UI code generator snapshot-5.0-e46cc7cf20da # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(545, 471) self.gridLayout = QtWidgets.QGridLayout(Form) self.gridLayout.setObjectName("gridLayout") self.easingCurvePicker = QtWidgets.QListWidget(Form) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.easingCurvePicker.sizePolicy().hasHeightForWidth()) self.easingCurvePicker.setSizePolicy(sizePolicy) self.easingCurvePicker.setMaximumSize(QtCore.QSize(16777215, 120)) self.easingCurvePicker.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.easingCurvePicker.setMovement(QtWidgets.QListView.Static) self.easingCurvePicker.setProperty("isWrapping", False) self.easingCurvePicker.setViewMode(QtWidgets.QListView.IconMode) self.easingCurvePicker.setSelectionRectVisible(False) self.easingCurvePicker.setObjectName("easingCurvePicker") self.gridLayout.addWidget(self.easingCurvePicker, 0, 0, 1, 2) self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") self.groupBox_2 = QtWidgets.QGroupBox(Form) self.groupBox_2.setMaximumSize(QtCore.QSize(16777215, 16777215)) self.groupBox_2.setObjectName("groupBox_2") self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_2) self.gridLayout_2.setObjectName("gridLayout_2") self.lineRadio = QtWidgets.QRadioButton(self.groupBox_2) self.lineRadio.setMaximumSize(QtCore.QSize(16777215, 40)) self.lineRadio.setLayoutDirection(QtCore.Qt.LeftToRight) self.lineRadio.setChecked(True) self.lineRadio.setObjectName("lineRadio") self.buttonGroup = QtWidgets.QButtonGroup(Form) self.buttonGroup.setObjectName("buttonGroup") self.buttonGroup.addButton(self.lineRadio) self.gridLayout_2.addWidget(self.lineRadio, 0, 0, 1, 1) self.circleRadio = QtWidgets.QRadioButton(self.groupBox_2) self.circleRadio.setMaximumSize(QtCore.QSize(16777215, 40)) self.circleRadio.setObjectName("circleRadio") self.buttonGroup.addButton(self.circleRadio) self.gridLayout_2.addWidget(self.circleRadio, 1, 0, 1, 1) self.verticalLayout.addWidget(self.groupBox_2) self.groupBox = QtWidgets.QGroupBox(Form) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth()) self.groupBox.setSizePolicy(sizePolicy) self.groupBox.setObjectName("groupBox") self.formLayout = QtWidgets.QFormLayout(self.groupBox) self.formLayout.setFieldGrowthPolicy(QtWidgets.QFormLayout.AllNonFixedFieldsGrow) self.formLayout.setObjectName("formLayout") self.label = QtWidgets.QLabel(self.groupBox) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth()) self.label.setSizePolicy(sizePolicy) self.label.setMinimumSize(QtCore.QSize(0, 30)) self.label.setObjectName("label") self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label) self.periodSpinBox = QtWidgets.QDoubleSpinBox(self.groupBox) self.periodSpinBox.setEnabled(False) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.periodSpinBox.sizePolicy().hasHeightForWidth()) self.periodSpinBox.setSizePolicy(sizePolicy) self.periodSpinBox.setMinimumSize(QtCore.QSize(0, 30)) self.periodSpinBox.setMinimum(-1.0) self.periodSpinBox.setSingleStep(0.1) self.periodSpinBox.setProperty("value", -1.0) self.periodSpinBox.setObjectName("periodSpinBox") self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.periodSpinBox) self.amplitudeSpinBox = QtWidgets.QDoubleSpinBox(self.groupBox) self.amplitudeSpinBox.setEnabled(False) self.amplitudeSpinBox.setMinimumSize(QtCore.QSize(0, 30)) self.amplitudeSpinBox.setMinimum(-1.0) self.amplitudeSpinBox.setSingleStep(0.1) self.amplitudeSpinBox.setProperty("value", -1.0) self.amplitudeSpinBox.setObjectName("amplitudeSpinBox") self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.amplitudeSpinBox) self.label_3 = QtWidgets.QLabel(self.groupBox) self.label_3.setMinimumSize(QtCore.QSize(0, 30)) self.label_3.setObjectName("label_3") self.formLayout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.label_3) self.overshootSpinBox = QtWidgets.QDoubleSpinBox(self.groupBox) self.overshootSpinBox.setEnabled(False) self.overshootSpinBox.setMinimumSize(QtCore.QSize(0, 30)) self.overshootSpinBox.setMinimum(-1.0) self.overshootSpinBox.setSingleStep(0.1) self.overshootSpinBox.setProperty("value", -1.0) self.overshootSpinBox.setObjectName("overshootSpinBox") self.formLayout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.overshootSpinBox) self.label_2 = QtWidgets.QLabel(self.groupBox) self.label_2.setMinimumSize(QtCore.QSize(0, 30)) self.label_2.setObjectName("label_2") self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_2) self.verticalLayout.addWidget(self.groupBox) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem) self.gridLayout.addLayout(self.verticalLayout, 1, 0, 1, 1) self.graphicsView = QtWidgets.QGraphicsView(Form) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.graphicsView.sizePolicy().hasHeightForWidth()) self.graphicsView.setSizePolicy(sizePolicy) self.graphicsView.setObjectName("graphicsView") self.gridLayout.addWidget(self.graphicsView, 1, 1, 1, 1) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Easing curves")) self.groupBox_2.setTitle(_translate("Form", "Path type")) self.lineRadio.setText(_translate("Form", "Line")) self.circleRadio.setText(_translate("Form", "Circle")) self.groupBox.setTitle(_translate("Form", "Properties")) self.label.setText(_translate("Form", "Period")) self.label_3.setText(_translate("Form", "Overshoot")) self.label_2.setText(_translate("Form", "Amplitude")) PyQt5_gpl-5.10.1/examples/animation/moveblocks.py0000755000076500000240000001772613245231431022032 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (QAbstractTransition, QEasingCurve, QEvent, QParallelAnimationGroup, QPropertyAnimation, qrand, QRect, QSequentialAnimationGroup, qsrand, QState, QStateMachine, Qt, QTime, QTimer) from PyQt5.QtWidgets import (QApplication, QGraphicsScene, QGraphicsView, QGraphicsWidget) class StateSwitchEvent(QEvent): StateSwitchType = QEvent.User + 256 def __init__(self, rand=0): super(StateSwitchEvent, self).__init__(StateSwitchEvent.StateSwitchType) self.m_rand = rand def rand(self): return self.m_rand class QGraphicsRectWidget(QGraphicsWidget): def paint(self, painter, option, widget): painter.fillRect(self.rect(), Qt.blue) class StateSwitchTransition(QAbstractTransition): def __init__(self, rand): super(StateSwitchTransition, self).__init__() self.m_rand = rand def eventTest(self, event): return (event.type() == StateSwitchEvent.StateSwitchType and event.rand() == self.m_rand) def onTransition(self, event): pass class StateSwitcher(QState): def __init__(self, machine): super(StateSwitcher, self).__init__(machine) self.m_stateCount = 0 self.m_lastIndex = 0 def onEntry(self, event): n = qrand() % self.m_stateCount + 1 while n == self.m_lastIndex: n = qrand() % self.m_stateCount + 1 self.m_lastIndex = n self.machine().postEvent(StateSwitchEvent(n)) def onExit(self, event): pass def addState(self, state, animation): self.m_stateCount += 1 trans = StateSwitchTransition(self.m_stateCount) trans.setTargetState(state) self.addTransition(trans) trans.addAnimation(animation) def createGeometryState(w1, rect1, w2, rect2, w3, rect3, w4, rect4, parent): result = QState(parent) result.assignProperty(w1, 'geometry', rect1) result.assignProperty(w1, 'geometry', rect1) result.assignProperty(w2, 'geometry', rect2) result.assignProperty(w3, 'geometry', rect3) result.assignProperty(w4, 'geometry', rect4) return result if __name__ == '__main__': import sys app = QApplication(sys.argv) button1 = QGraphicsRectWidget() button2 = QGraphicsRectWidget() button3 = QGraphicsRectWidget() button4 = QGraphicsRectWidget() button2.setZValue(1) button3.setZValue(2) button4.setZValue(3) scene = QGraphicsScene(0, 0, 300, 300) scene.setBackgroundBrush(Qt.black) scene.addItem(button1) scene.addItem(button2) scene.addItem(button3) scene.addItem(button4) window = QGraphicsView(scene) window.setFrameStyle(0) window.setAlignment(Qt.AlignLeft | Qt.AlignTop) window.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) window.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) machine = QStateMachine() group = QState() timer = QTimer() timer.setInterval(1250) timer.setSingleShot(True) group.entered.connect(timer.start) state1 = createGeometryState(button1, QRect(100, 0, 50, 50), button2, QRect(150, 0, 50, 50), button3, QRect(200, 0, 50, 50), button4, QRect(250, 0, 50, 50), group) state2 = createGeometryState(button1, QRect(250, 100, 50, 50), button2, QRect(250, 150, 50, 50), button3, QRect(250, 200, 50, 50), button4, QRect(250, 250, 50, 50), group) state3 = createGeometryState(button1, QRect(150, 250, 50, 50), button2, QRect(100, 250, 50, 50), button3, QRect(50, 250, 50, 50), button4, QRect(0, 250, 50, 50), group) state4 = createGeometryState(button1, QRect(0, 150, 50, 50), button2, QRect(0, 100, 50, 50), button3, QRect(0, 50, 50, 50), button4, QRect(0, 0, 50, 50), group) state5 = createGeometryState(button1, QRect(100, 100, 50, 50), button2, QRect(150, 100, 50, 50), button3, QRect(100, 150, 50, 50), button4, QRect(150, 150, 50, 50), group) state6 = createGeometryState(button1, QRect(50, 50, 50, 50), button2, QRect(200, 50, 50, 50), button3, QRect(50, 200, 50, 50), button4, QRect(200, 200, 50, 50), group) state7 = createGeometryState(button1, QRect(0, 0, 50, 50), button2, QRect(250, 0, 50, 50), button3, QRect(0, 250, 50, 50), button4, QRect(250, 250, 50, 50), group) group.setInitialState(state1) animationGroup = QParallelAnimationGroup() anim = QPropertyAnimation(button4, b'geometry') anim.setDuration(1000) anim.setEasingCurve(QEasingCurve.OutElastic) animationGroup.addAnimation(anim) subGroup = QSequentialAnimationGroup(animationGroup) subGroup.addPause(100) anim = QPropertyAnimation(button3, b'geometry') anim.setDuration(1000) anim.setEasingCurve(QEasingCurve.OutElastic) subGroup.addAnimation(anim) subGroup = QSequentialAnimationGroup(animationGroup) subGroup.addPause(150) anim = QPropertyAnimation(button2, b'geometry') anim.setDuration(1000) anim.setEasingCurve(QEasingCurve.OutElastic) subGroup.addAnimation(anim) subGroup = QSequentialAnimationGroup(animationGroup) subGroup.addPause(200) anim = QPropertyAnimation(button1, b'geometry') anim.setDuration(1000) anim.setEasingCurve(QEasingCurve.OutElastic) subGroup.addAnimation(anim) stateSwitcher = StateSwitcher(machine) group.addTransition(timer.timeout, stateSwitcher) stateSwitcher.addState(state1, animationGroup) stateSwitcher.addState(state2, animationGroup) stateSwitcher.addState(state3, animationGroup) stateSwitcher.addState(state4, animationGroup) stateSwitcher.addState(state5, animationGroup) stateSwitcher.addState(state6, animationGroup) stateSwitcher.addState(state7, animationGroup) machine.addState(group) machine.setInitialState(group) machine.start() window.resize(300, 300) window.show() qsrand(QTime(0, 0, 0).secsTo(QTime.currentTime())) sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/animation/README0000644000076500000240000000153613245231431020161 0ustar philstaff00000000000000The animation framework aims to provide an easy way for creating animated and smooth GUI's. By animating PyQt properties, the framework provides great freedom for animating widgets and other QObjects. The framework can also be used with the Graphics View framework. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/animation/states/0000755000076500000240000000000013245231431020577 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/animation/states/accessories-dictionary.png0000644000076500000240000001242413245231431025756 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞsBIT|dˆ pHYsììu85tEXtSoftwarewww.inkscape.org›î<‘IDATxÚå[yŒdÅ}þ½£éî9v¦—ݹ–=faïal® 8¶ N,"'2 ’ Æ„’YŠ0 àøG$¢$v›€óO'†€Ãa`1æ°!»ì²÷ÎôLÏôÝý®ª|¿z]óú˜Iï´e)e}T½zG×÷»«fmH)éÿs³é—¸½tíµžëf ð„#ég¥/³Bˆ¬cN"-ýàßó•WþŠúh¿0 xïK_JT=/ëH7køA–ˆAV’ÈR CRRŒÉ@àž`‚)‰‡pM‡ѸًÆF!†.:pÀû…XÀÏï¾;nÕjY×óÆLÃÈ b/="È IY’LB†} Ó Gn Ðó€&!dÜ#Ù„z®´ ÒsÉcRèÍDïÜyçí帽)yâ䈱n$& ÊdŒHI€}â&¡8îB2za"ìCíð˜ûæu¹2¤†ˆÞׯCˆöß4¤}xì ¿rÅ•—ßå˜C” @ˆªÁÿUÿ¡Pôz(Ãa¤ˆt4VïZ©4:\™ÍÚe3P0c6æáµÐÄñF2A¤…U©´ £Ã*„0.0 ãï%Z_0ÐNÎ ß^/•©T,Sv|œür‰È4iµf&$êõHá♌ÖTHÌ`  Ç;˜ jü²¥æüZƒ¬Á!ô5²†ÉÍÍ¥SÊ÷…Á`^îÖ¾¶±¿©¡µ €Éór<¢mA ×ðƒ…¥"Åvî¤ZnŽÌdRKIk]uñl–¼B6RP­„kñ=2b1âOžGÖ@J ¨1?¯4ë×A6™Ä;ÈÉåH²eÀÒ¼z•È2ɯÖÈ„P×£äù]麑ö÷®€*ÚË+ì× 1W¯¯ŸI¥¨†uªU²†G(`éÇâx¢ýë0,‹tH¸4Í-,(r6´é,.´ãꞤÐÿµÝ¥%n‰\!X*4M¾3>ª'ÛÂ7¼èžÔq¥Eþ³þ›Û·Cð§ÖâvSû.Á°ü13˜!{ÝI˜§ 4é¶æ,Ì+ hÒJ$•†ÜR™M[I«~úTKT;qB»„&ÚA^2Úï5|ý.Ú,cˆá©~,ÀR®TE9ŽKçlŸ!×qæÛ•LÀ‡•è(zY‡šæî·¹@8¦hÜÙR2‰íŸÛ°!‰°V“hk.„Þ¯×ñ–Ò`­\¦B.Oç^"ˆÿb±ËâñÝGôj?. «AàºB  ÒµZJˆîöȈÒbõØQŠšâÔQFäiEAˆ–º¾ƒ°\Qmäh²2BÒû©H@~- ƒB¤Q ð¸PZ6’Ô‘Ú;)µ04鮀¨,JÚ ü{ÝØØêû…Ž1E¦Þ‘9ºa Ä54³…x,] ð"%1!›[Ò DÀËs"Ú–<¯EsN|]ùéÏ_OW=ñO=‚Zùˆ´†RŒ0šk²­}À­ ±ÖMïÝMÕ…yð|Ñ‘ ´¶£±JQ%Tƒ#眳â&éC¿óÛ4uà aNç2Ù0u1‘m‰ ´z±ÄXÙ¤T™  ð§äû J®Kã[6Cy²2Z»€PPnZDØÛÛfè#ùuò8@ ý|„Ãßý.Í~ÿ)2m›+Gm)Í÷WD7ùÕïëÀ4zÏÆSÚY @¢µ¸€[ôý¼N…A±HeÂøÈ:mÒ 2"¹ú ︃&.»Œì‰Éåʼn–ÞéÒ?%n‰±Q}ï,Ñí Ñ9AØ‹&‘u¦¹¿ 7óMà"OÅ3g8p^oר^Œ¶<ŸÀsÜοé&eÑó‘–ÇO·ô”’`oÒ»M»OuHÕ¨\©D÷#"ª$î' (œtÝ9-€J¥JelcíK/!btX•lǰqZxæiJÂ]&ýôóã$røTG=PŸ;CÜR›6“üïç•ö<ÇQÖ`Y\ŒQ hñDziÇÍ7ÓøîÝ”šœ -[¨„ÍÕ¯ºZ @[ã¬Kb³# zg'€?/ˆSaei)¬\W»ÀŠ®0¸e+_æþúQâ¶ëÖ[aN—”òªdNÏÌP[áz"A›gðüØ'~ƒŠÕ*Ó¶¸ ÖÒÕˆ#ÏýÞýÌuôÚ¯^I‡.ÿÑóÏaÅ/>‚aè³s .Ж œJb^l½V#‡FÐd;ќ޻j煉gæhá?~@“W^IñééviPùðašúØÇè’ûï§_ù½kik­D[·o£+î½—~÷ÀkÛ¶M“WÂøèãSá¾M~òå’iÊ%RôæÜ"=ÿå?£ ¼¶€™ÏŒŽ¦ ´µ@g·.DA°¿Â47LOQ û+‘èöQöýæ1õè…ªxAs>LÜöÜv›w$ÙDõÐA²ZçùxäQzþÛÿH¯Üt#¾å ¢«¿ó’ÃÃêÙ‘}ûhÝyçÑÑç~DBÊ6Ÿ¯Zö2y’×°ö ì^«Èe ‚%¡¶Å¨vœOul†ìtºM󂡃—eqÄó¾š;òÞû”{î9š¸â JlÝÖnÎ@ý½÷ˆ[ÖàA`0x*&SôÚ>C³O|â8]Ú|Í5êÙ±Í窥5‚ ¼†è ¯‘ Úß x€S‚¼>Ù01ŽT8Oqø¡ÎýÜËe4´y39ˆúÖùçÓðG6ñ‹”Úº•¸í½ývXA£Í êÍ}Erjª­bt “rO>AhìBjÎ2 @Ó»÷¨^µAv“Ws±0œ ´ÖZË©·ÅssdŽò§.u#`‘#ðÿ1µ‹/¹˜v —²/üÖÛT|õ¿ôRÜ·w¹à©Jäà›SW]Œ¨o…ïÅÙÒ0—ÿÛ¿Q½‡õ¾åfr ´íŸþ4}êÇ/чøsÚõ§B×<û_4™¡÷_~µËp=rçúõ›ÖjðŽ;ά>áZ ÆGä™Aö•v ðÿm[©|èy¾¯I,›µƒÏÏ~óëÄíÃ_½‡\7 OR½“ÙñO~’ª¥2y®KU¤Ýón¹…{˜¾þÆ2™ƒ… ýìêS龯’<~Œ¦öï§-Ó“äßs7½ùµ¯“ošzñmAq]"±o­“Í-qÕâR¦kXT u K*z"h+ÇþªGßWÖ€Ö~&€ö³gDÓHœÊöÝu½ùo„Ky "/ºˆ®|è!Ú{ã”;p€†Qá‰'¿G/>ñ¹v¬­¼=X÷èÈcÓÈ·&[•ãIhÚêŠ zl‡™àŸÙKÝÅj´iΓ矇Z`‰bHOuÄÝ:M^ó[4ÿúëTľa¨¹¡T®¿ð¡¯‘ í–Ÿ}†&“qÊÞtýÏ“OQî¡èÄý!e°uŽeÒä—+ôö™YÊÇÈgò!-•%æp¿“(°âY–Êk¶€¦¸˜ämñ®];iþøIŠƒ ÀÞ€Û ”K`®éÁ Å! ?ø½ü•»I¶“Ãuæo½™ŽÁ5VLð Cõ§ø¾• ÊIÜd"-~‚Ôƒx眅³f m-àV[ja<‚¨<ž]Oôî;až}ûM:õÙëèLß3-ò-‹„o;0ôЉ ÙÑf-·[…$­N”[OKñ-ŸI¿P(ö ‚Q-C‹:p*,χ©ÐðÂʼãÑû 7‹ .KPÑ´[ÿÕFtL¦{)Ûvl¢cŒE3tëjŒî °½(ÒÏFs&Jâ=ku}0²\ 8\ ‹ds}Ωº¶~dõq·;çºÝ ·Öõ|×µs |èáç‹AÓ¨Tka*\·ŽL½·_¡ÉÎëÕ„ÐiâÏ÷pƒh®· °ŒµX€¼¨Ї›ÔuÔún©DoŠ\·›p/­Æ*‚éÖx7ñþƒ""`[ ì!€È Nã`Ä—ÒIis-°ž»¶«ba¡·ö™pÿn{¹AçA\•Ä=ƒàJ»BlA‹:lÚy>UQ¾&²Y4]ŒÖk¢^AoÕà&£ûÑ5£Ç°+(â¼mbbóº‹úˆü\äú*4ŸX¿^ŸùwGëιUH©~5uÆ-ïŠ1€Z,pж÷¯IÚP ,ÁmT ŸBUW™ŸW„h'½qM¸ÔJ}ôÜZ¬çzç7 {A‰ÆÁB—ÕÖs|>L…ØRò¢Öõ¸g6è]Q­w6Ìîi*[œuÜ ‹!§P z¥Â ¿Ô;v5éÞÙ 7ñnaꬅœ‚8¾/È4çø n­§t-Ph­*Uª;yÕª:)˜£^Ú×VÒËz¤A]V+bø]½'„ôÙZ‰ÀH ;•–öðLŽŽÑàä„ÞDS»vÈ¿¸óË×ýÛ»ï¾Ü³Xñ`ÄóæZkåpƒR¡\Zê&݇¸My÷ˆAcˆÇ#‘F&ÃÿxR ŒËÑÉIcdzÚ™·m;f™øŸmÙ‹Åȶ-ôqâëd2ICXçy““ ÎœzÔÝðx£1+ðŽþ#Éäöj JŽ‘€V{ïh-isd c­ ™JI+“1l¤Õl‰3ããæðô”™Éfm2ÔÆÂæåZ–EqE$ãq5Ž'¸‡¤c˜·cüœza¨gÒ©4í?wRé­g)¼Ò®Y C• wìÀ¶ø¸ §‹µZègx6°¬@ÄbB&R H™Î XŽÉĆsÌÔøFcÝä¤=8:fAU&/Î4”C’É‹L›&€&Œ{!iÀbà®êY }ä‡y~Wƒ¤æ&’™n÷Ú¯ž ù$I!2®ãѶ©)ùêñÍÌHû⣛6Ùƒƒ&~ÈÔ d­`¬4€Y²sùøÔ1xÌ‹W൙ü4 è9uøÉ‚7|—c÷ü “ …Øü]4¾ÖÙ,ÜÅÖënÌ”©5œug‚Š¡)§8òŸ)¼‰Ï}ç"#”I§@2Á Q„AE½&˜ŒŽâ£iY¼xŒ-@l¢Çš„z>Z…&¬5ÝšºY0<×ö ¾®‹eË™5l‡£Z@[@¥y.°åäž}Ö¦éiÊŽ’ÝÔ4± “;mªšDD޼Ð0¥:.kW/XC›4£mŽßÑB@k޵@W.óùÛ|¾JÂO³qôk,µó VBC“ÓÒ×ZÔÚ×d;›N›&uÓµöô³:#t¶r>ïξóN=ô¨S:y¯ž™•A¡`Xº= E|ÈŽ¥2©d2–ˆ¿ž[ü×>²@” O9΂’=;ЋnÕ¨‚Ö4Òµh\k´¥¯ÖÆïq+ærÎé#Gê Gޏ…ãÇýòéÓÒYX0übÑ6DÜ÷S¶iÆñ¸ †Q L£ä ` ¢œCÑuèéÓ³O¾ÏëW:4ê¾_ò¤ŒkrÚ„[ÍUC]©fgÈ-;æ,=êWggy—¹L.!DÊ„,Àï5)K|(ƒZ¤XÇÖœÿ cYˆ|›´<sÔuç0_gWeèÌÔ€P çû€ Ôq@zl|qqG°Yƒ¶ÝEä¹C‡êyÃ_ƒ käD©Sš"ÍädÙ†~CÊJ“œ"Vñý|Ä|?‡|;Ñ2ê Çð[´÷z=««ÀXµp€Ò{ÆK›—–ö¾ôàƒ‹‰zÕ<5Ÿ¯á€T‚œm6ÉŠ_þod€:ÿY­.e¡æûKh¬èy ‹8f?‰ÍÕ‚ë–4¡>ˆ1 ÏÜúþ¿ÎB&…æ¸RÚ~óääoL&w§Ò)ÿ¹ÜOª¨J@Äp€š;㺋ݤ€Þ¤¸Œä(w·ÕÈö+-]† ÎF[kÔ}0Ä>xè,&Þ„¡k„_.bý·ÿÇýçÛ#]8IEND®B`‚PyQt5_gpl-5.10.1/examples/animation/states/akregator.png0000644000076500000240000001141113245231431023262 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞbKGDÿÿÿ ½§“ pHYs¯¯^‘tIME× I†pA–IDATxÚí[ t\Õyþî{³k´Z²%Ù–dclƒ16¶á°4ÂÚ”†ÒBr ] hKH ‡Ú­sRR$­{ ä°•Í@°V/€±-ÛØ²llÙ²,ÉKiöåm÷ö3ïðô:š&=Éi~O÷½ûî›yßwÿå¾+´?Úÿoc8»uRíô‹]3—\·ï<¡¤<гÃBÍ q5J"ÄSã!‘…„À€áèÔŸCùƒ@üØ•h]v7çXÆÓQ™BpáªÀe?„ì`n‚ \‚Ü×Òº2. mHèjHhJHèÙWÓ$T|HhÙ0…M ™ß;Äž?Çù÷¿ˆæEÌ$®&9C2€Ä€šÌCÏ@hðl‚W’à¦P²\HSNÐÁu-'@× $ A ®‡C 6•3¡ n„„:GòÿN€§.îÄ™·,…°Ès#ǹ(֧硘âdí>Ó„W3¤£BÈ‚snpÖP29 RÏĺ&Ìn€<‰ 'h`N<Äd˜ØÙq)ºÙÅ•à…kSXxm ?óF œb8Æ‹Ü5¢ÈXò@NÜ€ËGðçÍô–Ô§âH4Æc •?Ù Ô׳.…Þ4—œìèC«Á³Ô8®ÈŒˆU¢_c PÒ$”5ˆ‰x¢×E1‘Š|Ö±~¶iZH¿×¾5¨ZºžéË– ξÚó8N>¯BLpÝ"3iyDÙ‡çå½€Pþ³íky¼ ¬½zfRCéa5)˜¡bI%(|8΋Ìl1aŽ‘8/Z“'òé1äì“Õ0^¤šäó·BÀ_ ÉØ„J’q— %^FœBñlòöD1Ý,¯Ö#òÏ-@¡ÛxA±Øu•ÂDYÆÃâƒD>Œã„żr@Íè6ãMˆE®’-pw˜¡C ÒA0Ž=£†Jù$È1)ÆK'¦Lœ· à$[¾Ô•_”ÿ¬B‹õ©Q”4C·‰W8,WžL‘k(¨&ÅE.OÈ/“á eÐA¶E26l¢¹~˜un`÷MšËϼ3 6D%@ÉD5¹°ˆ±c$nÂ>¶¿'jÎüŽÕ×-â*äeVz"ň•Ãês ‡X_ù²f8Ê`%(ÛN!œd =Â&n dXà@œÈgˆ¼Tä}µtp Ò+Á‚8·`“ÿÛ ,bÂáæ6Y‚ã8~ˆÈ²5TXà(gö:Àö‚ ¯=U@ý ù§ÑÓ@& $ZÒ™èìX.ˆ9£S¨xož¼d==³E°ýºt°Ë`åÖ¶þ)ÀÜKá4‘al/ú(ç¾…îOú„Ãåóm⓼MÖÙò̬$Xéu€#»‚-y´_˜ààkÀH§36y³µÉ›3Ôrû2ÀSr M‚°PÎj:€Ónθ¨ž>!Îí|`Ÿ[ä³y ÔZÊ€¡øË¨dÀ$ßPʯ2êçç,:.s„„ “üA"²I•+-‚0ôÊW"j'ªH°în@èùso5l&²'Ó–Ñy}Áv"Nº¨›ì\ š• ‰€b‘“ŽDh·§­ ¸æŒQé2ˆ‰åO²aÂ00ºèyh\Ìþ3 ºk9ðXš ${ì™%’œpv’f œûU±`Κ?Y³¶ºG¶›|²Šº²pØ”ÅÀ’ûtŸI¾xÌÛýǦÙeP©$QX×mò…«>Sˆ5$Ä@jk:8õûdË‚MÿÎ~ö;] Zý@û€»*oHñƒÀx`¨D 6uØJ",y¨™‹Omþߣ‡žP&þQÂõ%GžÈƒëöí¢2ëçÌûê€Ö³`ÛRò+Á¡w€¾Õt±;ZØ~‰ðÏNÎ|y׬ýÅãŸõO'iÉ>ñЇ€í;´_œõS q©óåf|+°þr@‹Ùã= ¤ÝOÊ×|f·6Š„›Ä¡*#€s%XÒ<õÀâû€¶+ò^Ø(G€T°ýV8¬ýZ á´ÏPûK±¢bp Pb@x0² HNò- ˜û] ñL ;h?xÿStÏ;†Qç)÷g",qÌœÄ*—ìú?¾ØpÝ ë©ãJ`ÆÅÎ¥ÙÂáß‘NûAwß\¸Õ×Jal’ýÎØg6 c½€Ï¶'øà}7-ÜòöO¥ÒU€ÀUç’„LØû°ý‡€‘™ðÉnà ¿\.{ãۀщ^ íß,;óNïì3怷7÷®~kþ_¬h(Üós.Æ:o´ú,«ž´]çŒãþ_ÂaÓ¯.AºLÜ£à܃ãÉ㊞íÜ58ÇîÁ%Jo‰;„°wo÷‡Ÿö¬„ÃæÝå$7º0ÒöõÚÅ€jéã$n >ƒ$3CûÎ×ßìºæPÿØCÅß àŒ=Oí 83O>=€œí¥š¯Å'xÁÉ@Í|›” òÑIsÊÙ…¤Q6Þ É3'q!¹åc •É)ÝÈŽE’·<»zë=k_xðžÂ?ñ|æ^r'PoruÔž¾Âv{†üâçÈ«pØÔ‹3Û ‡Õ.:¢eD€úµËwú/–?pëë=üÃïüì'÷N/Z2Š¢'ÒÿöM›^Zºtékϼ¼ù¡ÿ{åÈÙ—üÃ*G¬™ TµÀaîàäïÛ¿o÷n:¾9Á NqºwfVuÂñ‘G‰¾ %pã¦.φ¡ý—7Ô×^>sf‹øêÕWìš6mÚ{UU5ë3Yõƒ{äç£9Mã~qÎÿvgwÿ¹/½±íqÊÃ8ü¤-€–)²ùq –€Ã|Í·V‡à0oKY‚åÉ;cŸƒaj÷­ÚTí&¹Z‡G¢ll<¹¨·oh‘,Ë·©ªÊçÌ™s{N]×Y:› €lÇŽƒ ,ø»5oï|ºeZís'0SrÃÚÁéÒG@3–< ç\†Ã\µÎ5¿‘‚Ãä*—±ÉûF²>¼©ÃÁL-gk0K_¤ëIÄb1(äå„}ĵ•s^oùâ,ó¸Œò@–uww?cÆÓÿùôºÀk‘¹rZxnýãÈõ·åWƒ°,; ì|ÈI°ªÓãpîï{P`öýÇeãY7~µ·׿½ËûÏÅ{±™ØÜ¯àÀÞ.Ô%ºQ§ô?ZSSsáÊ•+gKgÏžÝ#I¬oz˲€ÏÓ”U•FL0à&U5N^þØÚÓ<·\†Ë›úà3_{“}$õ&`î×óö<¨$‚<áá[.ƒÃR½6yFëá0mÇ!‚™àFªðìî©ØžM×CDßÃås ÌYäɳÚà­m¦<}A_û•÷ ?ü0#[,D.k_MxÃuÏß_ƒÇÖîlJ¦ÕË-8L·µµ}%Il]ñËß6É7~—d‡à–ëÛþ/€y,ãÓílƬ‡ßùàÀ£fÉÌ#ü.À'¸¯o¦Z8E˜´oó`«¶5cÓa/¢Ñb‘ñ¥9 ~tž„óΫ›‡=ƒ@dè¢;îÝyðpó|ÅŠËÈ<$Àër¥ÊÕØX#e­ßÐ5 †&h1»¿ÿpô„¦ë‡ŽŒ¬Yñä&–¹újœo¼¬A–ÍJH V¦–YçŒÂ]`‚œ¯œ)]Æ¡±ŽÄ<Šzzõ¿Ó×!ͦ#eÔ$l-ï@ÏÀÔj s›2X6#…)~¦ 'ÜØp°/uMÁǃÂá0"ããø‹¥À7pâ¼/䱈1´‘}1¤‘O7n·5E`---›ù€ìyXæºýÞU^ÿ¨Y“üB!FÈø™ÓG×m<\÷`oß‘û~IBôO¯Â2u5<..Wž¼ËÛPÚ‹Á¸ýQŽ$ƒØ?ìBoHC:“E6›…ªf D>_À(‚òÔ7ð—O¼É°ÿ¤ó5ytKÊ`® ¯ªÆå®ž‚¨„1Žhúè#ÏÀÀÀ©z‹íè„8AµD¨N"ðz¢'5#|Þ¬Èïö5³ÞÞÞ›ÍX"o´f…áœ9®È½_ŸåŸµèBo°u!sû‚H Ä 1‚ªÐa<ÙŸÛ,‘”$=™ ÈB@fËÐ=\ 97Û7ž|ëlPhýB-f4$—ÛàJ+HíZ ‘ÎÐ}fü #•T³'eøyd}ººuzý¿÷ôôÔùLòå6D¸ÿ#E)S;ûÛÖ/Æ[•ïiš6àÛ„6¼n¹wÙ‰5÷¶_ùèu5SZÚT%-¥3 ·¦¦]Jr£ý½™pÿÇn#¾¿Z6â¾€WTy=Âð)àa¹Êâ"¸À àÝ9H$º0³[‚nìymj=.Q'?ïpúÇ=Ɉ¿*óx·ÌßöT*µÐãõ¾ÜqúÕïÏ>åì¯ . CSâ‘p÷ÞwoüÍ“£ªšöAW}† Ý[%¸VE¡dB¯—™Þà–ŒÚjŸA-Ƥ™ó;û¤*UQâ æàƒ#««ðeTá󻸧ûˆ±dÍ;ÏÊ.Öxƒ ÂÇ`¸‡”Hç¸r$*¼šgÚ;æÌ˜ÑÕÕ•…B÷xô³l‰„„% 3Ã0ƶd2™…þ@p×Wn¼wšËí5³íû]»÷¼±£sk”C—Oú2ã\e¤‰Äõ,3Ô´¤+)IW“2eoY£–gSî1-íc ÝÍËÝÙõ:$†;¦b›j¸LéÄ¥Þ>,Ø[O®›uá²YÏ·4øÓã±Ô´Ñhú„pLŸoHþ™ž@]£«ÆŒ†ÃêÎî÷^Öu}9€]íóü¯1f‰UK˜j•Ê$ÕÕ›¨&ßÖÜÜü z‡PÒétâ7ÞØ=É–†€Ó˜œÃàB7èH冚Û¶í¨†·zíÞ½ŸÌëììÜàL‚þÖ-KƒEc{ì,ºóy·ÛÝìõzUj™Ëår“Èñx|¿¢(küZÑ]@¼œ” !(„&ÂUUãæºšÚ¦—ÉÈ+8—SçŸ=cŒA¢xÜðñw7|Ôî÷W=‘ˆÆæmÛ¶mÀ5Öx™ð1d«*ÕäwTp 塳µÖs… û ¦p}ÖbNTfW¸0$’Ö—fiÆ7’J"‘8ãÀ¯Qyät.I’U!räó/ «•H,±nݺ6º~=-O¿sèÐ!ÿ¦M›ÆéÚ_ÈÚ&|§6Á “„Ý„NBб&E/Gºtÿ}2!àñx¾M°œÂ`å©§žºž’£›\“Q‚ääš: ¢rÎ #(_Èããã3ü~ÿ)4æ"j—Q‚b”¡ êÿÀ*ÂQ‹PÂ*ɱQ'AnAàs«Àý&®cŒ=L¤j«ªª†‰XŠÚ   ¨ž~Ä Ma(fÃýåË—ñ˜û¼­ºNô===ÿÚ¿ÿ‰˜38bvìØ±ôæÍ›_ÅmËâÅ‹oÖÖÖÖ¡‹z{{[ÏŸ?ßÈ&¨$’„QÀcóŒm¿zõÊ®'wi¤Î8DÒ™ÏL -hQ x?cØçzŠè‚ù>~"Û;èîlooÿ&öý2æÜ€Ý»w£‹¿{øðá_Ž?>;Ôˆ— 7áy‘ÛßxFBtkàÐdž=`Œ{®ùnó=¯¬ë•yç Åú8OüHægB®=zô“7صkWMØÐסªëb’L²ÆØ»…8 6†9Î -0Æí#€.“yXˈàï‡f˜VÜÓûÃ$ëoß¾Ý[ô…;w¶D8ú6T¹–Г'd‘ãaóiîܹ)^6–0‰Ëæ`äê? Öæú%j€û9Κ9@‡Ô;Ìñþ z`V B«$ëÃý _°oß¾ÆÊµ(2ªd:ϼ×Ùó àeˆÐ†é‚aþ†]j YØÈí/^¼hH‰>i²/„ëé2‹ôU[æ@kàðXƒˆÃ< &SëaSì¢*ô®M/k…¤JÓVœ &‘ sЃká±Ñóa]hEs¸G ™ã€ó¼‹C%Ÿڇ L Â`ÀQHU…P}GF\aÁ1ò ³ A ÒMíƒ1Ö¥”ÆyZ³G6~ÿþ}œì°õ> •»i2F˜Šc+31M F¨à2‚—,YB±Ä_iFˆ´a¦Y†ŽèÓ\qЬɕuÃTL³âýk€›Ú°GÂ(@¬!’+¶9æáæ æ!&/ú}’v8€‚ƨ%ŒúX­Ö”³&!PµAÔ¿”yT‚‘&~@Mä#Šyˆé0s`Ô¹ÌC[ä9 yÇm 0cc%DƒY€ ¤M¹Š­2fJŒd5ÏdÎȘ ŽÕˆ÷ÔC&š…aÑÒã6†pJ„¯|¦ñ„]=9 èÔ°a£ 1nx†yÞ±à¡>ŸÁ´{QgpÿV'XV QšêŽšçUÒ:(À¸gŒ1¦¸ûÍô<Ïú‹šÙ¢i5`Ð ›hûŽªh«JÑ1˜pûC8ëáq`óf,IMÓ>IBÝ»o£)0l`Þoê«„‡ÊÉ1Õ|âýú€JµUõ©>ÊØ‰u“SýìȦ8Ï÷\Ãîþv5 °Þ Ü> O@¾¢óÞLÐï0ë\û÷1¿§7u„êwµ·¥î¶öÔj[eÀë­´eAðœ2>Ûq@+ÐÌÉ;Bµ„=GOLG‚gñh‹1™öÐÓPyk«Aßñìš© 9ó\Ð3J€õÓæó£u bý¯óÓ `ÊjM!@òGƒ!‹¤í<Ã'_w”JÙæ5 ýBàXŒßF×XÏë„Tw+@˜2´t6ò›E‹RaD_ªÑO•÷3 <)jnn6íU ÃEë…|܃Nóz1ôá aTÓÞ¡ög×Ô!ZL±'ctÖÀùúˆà q¹À¡i¿flH õÕWÀ¸ÞÞR×DJ¦Js UÞ"'Ÿ yb„ô1»)l1P®aÑrT6ˆ³. Tç¬Ý#q¥jm`FI·¶'ùñT)ÿuŠwùÖÀ¼µk×rì¦é$ù.!ÝÞ‡4ððÍŒîmZ€-*9»ÇÞç‡ ñKާºŒpÆSÅñ9kȘï mc=+N*@Öö=@õ¼º  oùÛ[ÿíǶ|õ¥½êýÙÀßJ›NQH¢ói34ÑyŸdÇFægh3)â}K]øî»ï†"YÑгIþ[Œ›dZlÊ"ùØ›¯ëí,nMa~¨(¸ìn굤y†ï‘Øpi¹f‚Ïð ¶çƒ#1WýÇ…øû†/c¨­Rêoy(_ï_Xƒ2âUâe/?D|Ïòi®Íø>‚&8•èÔXczÐP¿W€>öˆñ¾¸¼ˆ©ÃA>  ~lƒÐ:œ.E8þ:Ö»À)~!þö~R,¼:Töó@wYüðþÌùyÉKg4 ¾¶t$ˆø_¼Û™ÞOsÃB´×eÈO´ïEqú: ñ÷}Óí–`fn<ƒ~}AýÊïH²{ú`ܳP{̹×§il4@ì#hã}šB™lôšè¢úëµ@g!TDÅ4†Ûø¿Î¦4þ_cãŒð·ÿ ä×bcÚIEND®B`‚PyQt5_gpl-5.10.1/examples/animation/states/help-browser.png0000644000076500000240000001551013245231431023720 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞsBIT|dˆ pHYsììu85tEXtSoftwarewww.inkscape.org›î<ÅIDATxÚÍ{ \Ï÷÷¿ùîÆ0Û×ý2fÆfÃØìŠQQ*B®¹5„¹3†æº”kÉ¥t/©$•Šä¾Ür EIJJ÷˧Ëçù?Ï×GóÝwßÿwû}ÇðxœõÞûó~ó<çu^çõzŸsÞ5üeZ¿~½¾‡‡ÇHwwwË­[·¶_°`AÍÿöü¦M›j¹DÎñ9zÏÊ;&e¢G@øO2vÒÎ;­\\\Æ Mš¼cÇ^puuí-ü›qìÓ¦¿48((¨öîÝ»‡‡‡GGGãèÑ£¿±±±Zù-óÀ9 û÷ïOºòàСC111Ú[ÉwP\V©èÆ­dÈ5öÔ©Sˆˆˆ(8qâÂÂÂɳü[ ¡"á·aÆV/„¼½½`…(+3d-³8ÕÇÇg¿¿à®]»¢EáÛøJXp`Ž·Ý’‡{÷•îÚXæâ¹·lùÖ°ò¹Î§*ço;S¹Ö=®l“gLá6C™ÞWÃg˜¯Úã°l¢ðìçç7UäÌž»öíÛwNŒS)ƪoò\ ³PÿرcZuê?ý~Ò°Q—cn:2P/9f`CíÑÁMq9%WÓ x¯ÉE¸IÒ]' ݸWˆ«w pmXk$˜¼¥ýÅPÿ—óz ãûéu¨æ+K¬cpppŠx]Îs5׬¸l•§§§Uõ½«ýë5Œ7Ò_o wûâ€F¸6¸ nh‰;Vï ÍæCdç—!·Pƒüâr”訰¤‚Õ½Ü" r 4¸?óc¤Ywà8ŽW|Î h|›¼)CŒ§}®—Ü-k¦ÙI‹fµâ ô3Ð/¸lú6nZ¶@Êøv¸?õ}<œÕ9 { oe_TTV¡²J‹*’V ­"^«{üM=“·Ö¹¶_rÇ“ù)¾—Lß.ˆ™cqí`p`ñs5€¯¯ïQYŸÚ ßš(Ê? â·F¶ÂÝIïâÁ÷ çQzEo8 @Ñ–!(q³BYP¢Š„ ËtTPªû[$T,÷KË…|¿C‰ËHŽãxò!?ò%%çüðvÚó '챨ñçb·-›nnurÂ¥83 XÖÌñhÉçÈ·3PàKÝÇBã?A³P¹ @F>p?HW¤»ÎÊ”ûYòLÕѨ ÿã8ž|È|ÉŸr(r¹4®œ7ªßòo5À9ß;¯X¤Ý°~=n[µEæôÎx´øSâÎCQæ3ûg¢*b³ ˆ^íáqû!”Ü|ÜÈŸºwK~K–g´ €È…ÇñäC~äKþ”Cy”«ä'˜5Í%¦¿Å¿êMZJâ5ïñ·Þ_õ>°Õ¨]Ê‘¡í+ªÇŸùÒ'ÕAÞôWÈŸr(ruò/b€¤ˆ8Þ‹æÙÔá6ÀñþN_1û'÷\u)Ü8e~Ö8í·‘¸ê»Øù%`û 4 dÖg¾ŒÔIõptø;ˆÖáCÚ”,ëÓ.¾k×®D¹9¢ì¹þìCÝ¿v]ºtiJâ5oð7>Ãg9fÚWܦ˜¼È3y\}äL}r(ruòƒ'Q‹é ÄGœÄ«pŸÔäôÿd€¸~úÆŒøÉcÚ {ÎGÈ_kˆRÏq( [Œ¨ˆ0„ÊÐîüXVS¹fþ÷¯àú¸8dÑ‘­´s¾iV”X+ §r¢”¾Ð+ä’|†Ïr Ç’‡Í—NF i]EÞ—Gëááä×(r)Ÿ;=1(â$^âVøã ß6þ¿À¶FÍãý§ÊÞª[÷Ë¿‘£éT„ÌFÔ>™ýpœqž ,ýWåÏÖGÈà–Ü\cܳ“·ÌäXQ¤³Ðëÿë)cɃ¼Œ>éìjÞ¢’2ÎŽh„¬ï^¯6‚¯þÀÁi4q/q+üñCZ¦R§?m€˜~§&7æ _Hd›1ƒf ìT‰‹ˆ¶¨\ÝH¹a€¸9®.ö™5ƒçÀf»ué²Ffî+^÷i%-È‹O‚‹)°ömºœ:¤\ó¼Ö׎èõž—«ÎÏRy’¤ÈL<ˆÕ«W{šôèìê1 öܰzÈœô:ñ—‡=ÃÕi±*r±ò‚¼Õ}•>1ã?Ehhhs–{÷îú~ÑôÍxC½JFΨ ! Lø¸#Ñ{6*‚¬¹å¨ƒHÑ엕몋Ž›Ÿå?åÕ{ù3¦š2{Ù’„)–åp{‰ñGŒë!M·ˆ‹øˆSç1âÓÔQ9{~7Üݦ’:ž’”Zéï ðm›KfMd;!:â"öù"Û{´<{ï84§•Õ$m\m¸Ô­ÅÇ )wú;H’®ïK2æºd£5K–,Ñl7h€[–u1¡qq¯:Tœ¯Û–}©ÞƒŒšÙÈ2ØÊ¬³¤Û»ü†yˆIû³¡^Û!ÉNݹù.ø–t‘ÕÛˆkLIJ§¼†“CkáçÞ®uëÖ­-Ç>êÕ«W»Å_¾}ñè 7èÄE|ÄI¼Õ;‚Ê#äÿÜ_½'Dš¶:!ùÌ‘’jÏŒy’áY5­v°çmä¡0œX7yë Q¾GÝØÖ®Œ´ÜvÔšóðZ•QÎVÕ‡›çA”ýY÷Gîü¶¶æÎÈ:ÄE|ÄI¼ÄMü\<ªƒÑ•‘mJÝ]¶~E˜bû+3/W—˜¨Èpĺ¬FÞŽÉ(Þo‹²8g”œqCáa¹ç1éö_áú²¯pföר4 iV÷îÝUây1ØõkžqdroœŸ÷ ’äð“µþxEqÔjhκ¡ü¸3Jƒl‘»} î¬×…SLYt‘zÃzÝ컹ñ€~8†éifh™¤d*fkTÃWÞ×ׄ<ÀÔ·1zÔŒH™:ÏÛÄ0vØÔ+ç[Xp.Góq¥gî×îi€Ü@’Í(ÕT"=§ìXq’x⡘Hv7êàÁЊĔ,•VÐekÓsÄ •²bæ†É õ?~Û-ôd3S„süs%bøÊÄzîðM‰˜ï—†-‡sqàb9N&—Ó” §(¯4UÈÊ+Ã'‡}²ÃŠÞ¾ŠÉáÇ5A{ößË.A‰XIy%´žÎŠgnábÕGò°xw:F;^ÇŸ~Û‰c_"–Á ˜å•Š ‡²™ybú9H&b%Måi„*Uœ‰tu:#uF­`o Ÿ˜;Óò Kµs7†—ÝÏ)E©˜Šî’[ ¤æWÒSb€ÐKåpŽÊÅ‚]icw\#–ûE1±Œ^]5ÝýìCbÏÙRÄÝb‚U—eÎ*Põ]TåÉkï±¼ô¹Øs²†”¨g²B;ctiæ£Rº‰<<*¦û(7Rî"nåùó|ïbIJª÷@oÒBß2·;°;…]§K˜|eZ¥áü‹j௡!üÄøÕ 6FV=1×Ío |A£ 0×ç.F®ˆÈ¡õ^ Ô³ZXÎà̼" ûo(ùW-§|‚Eѵ÷n>¸ÓUûg=ÀÒþ\¥}ã2ÀƒWžÖÒÆ½ݳ%”xxù¬©~Ë rt¨b (ûO1 ùI `¤eÄýl¬}ÛÅ]‡Ù·5±»Œê°ûLÉA®[ð ´}ûöAм\ÜõrXUöï»ÀÝÙ]®Äö˜<,’]`”Ó Nq5Q `iõÓxóuWÝöÅÿ~({² H=ïX^ˆÒ½¼¼jÕ~ž—¥Ì­Ù¼bÙ;ñ§‘—x•÷®¡ð^¦¥!%9W/ßÀÙ¸“ :‚­n‡°Ô>‹&LwyQ ðÃ(kŸ9+öbÝ–PìòFlÔ $œ>¤ÄÈHME~F4™I(M½‚¸°8yò$AþËF‡ÉbªyS¬˜4HØ^¥•‹wX¢2l³+|¿VièÒyº$È=«Ú8fªwýE1@H¿·ÏÞZ¸ˆ8‰—¸‰_éQì2BŽù«~þÞî÷ÅýÕ; _/ƒ¥ÇGknnÞóªU{ »2r~Âü:+²L2²HÉ:KUL<¨WÏ$˺8mÔ ÃóV>¶o£ÖÕ¯L<ÄE|ÄI¼ÄMüÉ»—"l¯"Âb—³F Ô£z<¢äDt_"iãý¦í’ïŒkÇú;‹Ž¬Íóu’Z•d¨”:óoLF¦Ž~§LõÜŸ¯X»ÐJü&ññ§à•·À•ˆ<°ò–‡°Áð_8’)ûêZ=ž;@œ,¹ùšõgï9ß•%À––ž™NbZ‰åiU˜\Q[¹×#›W‘. ‘kCë•Æ7©ýw)+ÿ^’¾Á%xµàÿ_ê¯ÿñe“Ú¤auž›×pmy„¹Ø"`·‚ƒö#xÿ^­›S?FÊäð0ïF]«yòMpx@ÆñãÇ_’ä†á «v©Ú©„"g T늞lùàלÀëב2Jyÿ³V|Ë–-u¤-.JþVØÙÙU:;;cÛ¶m^.Û*üÖ/‡Ÿ“\6ÛÃÁÞ«V­Â6ç-Øå挧ÙHZg‚öFJŸÛ“;Vú¼ëov/Áµ’czèù×<ܬÍýT †lNâ2`©‰Ë@eW|°#¥ë'^<¼..7ý¬”·µµ}U&)cåÊ•U¢ô]1ÄÁìïë²õV€·öx»!(p/wy"T‚Ü)‡!ÈØÔy^£P:—ø©‡ZÖ—Çw(¤Žÿn€þ’#ËgvD\£öô/:xßµ~÷¾{•VÝn:ïI0tê„ )UÎd,x w%3œhQ¯ìªqÃ÷Ÿ…Da·5kÖ`›ü«¾wÁ¨Q— ÆúùI–õ‘6¾ž*¿çÏ©…²E¯@ëØ©:ø7ñS©T¿÷Ac¨ãïê’ÑÈNpïÖ² LŽ iŸ2¡½J!¬Èú»Î "æ²úÂ-†%)F\•†J•¥`^ÿ.{øžûgmÞ¼9‹×¤‹ >¿8°AÑ!õ(·:%N<ÄE|ÄI¼Ä­ð?Ù¿1þÝò]»¢Ž¿3€¤šOH–õ!ƒË|ÐIJgGOž h5åÛ‡³Þ¦ó‚Щܘx¬^ Ü~$ÔÁÕÁoÞ¿b¬×ýi®}ICß!5óŒ. hPFå)r)Ÿ8ˆ‡¸ˆ¯º>Hܹ˾PU⟠Þ§nÿ.£:%Ö›ÍÈ{öì  Ք¬A¨Ië)ã$ÌîÂJ+[Qt=@‡ö[1 ÊvÃ~Ýáèþc#$y³â¢qýéO×zJЫ®ñ•ñ†ú#6¬¨Vžò(—ò‰ƒxˆ‹øˆ“x‰›‘K£Û•P'êöÿ-ÉH ܘ%ïÍù~Ý¿[çõIcÚh¹A 7«éã¥0OwÊÚÔžñ€ 'L¬¥öã[r*KÔ0ð‚AýV±{ÜÆá:i@æ5ÓúZò%Ê¡<Ê¥|â âª.ŒïÃùÝqgÜ;˜Ûç}êô_‹£NNNŸGGG±ùù2׉:¿ØÖ¿mâí±muqù×t)žYqaŽîl°¾Ap&ØÊÂ5©rô·-é õ´—Lê‡_4j0°º<ýg‰.xÁØØõë°cìäG¾äO9”G¹”OÄC\ħpæHÓÔé!Œ¶x'‹ºP§?¬K  Ú_ìáá¾I¼)%¯Y‡Œ[å°T–aÓIUZKvŽFå9@ô#pxúâZÌ—€Ä2ÕýñÊÔ6I·½hªwoœãi“)ž«ßŸs²ÿû³N¾ÓÕ:þ¯yÏx²÷ª1“OÇ›è'ÉŒ#v¶!¤+Þ¿$?ò%Ê¡<Ê­VžxˆKáË[Õ<Ñ^ùNégݻΥ.ªA‚'-ñ€4Y ZY¾²#¼Û³ÛÇk⇴(KÕY³>äºbë*[ÔžT,ç. D,Mñ8ÊYâÑ”ÀÕVyK:;Ì®bÀš|»â"¾ùé¾^vNKâu_¹g¸:ƒÖ^A¢¥>Xè8µ /ÖÚÙ!`ZßêF)ò§Ê£\Ê'â!.Ág€”‰ípcdë*“O»l”r}»ÿS‹Œ¼%Õ–`xÓÓË£ÒÑisù¬Ù³Î›}Óëеa-ªØ¤ü`¦ì(Œ‘öqà| h<àÞ› Jrd~bÎ\úwoâ{ÏLq½ Û’À<þ˜-7u¾©Ríß¹$«¤FÚÄúÊÕ/-ú ?ýôBæIù»&ù’?åPåR>qè”ÿÙ©³nh…é_uÜ/Q¿ÛU¬ÿ[)zº¯¯OæZ{»Ša–C1cÐךëÃZà†4(§s9ذSSÖÜ÷ <,D²"Ë®N65²Ó“½}ÜŸuñav¬ ËV…•å™X*EŒ÷¤“XÐ`½ýƒ*£“ó}]]çɲ.]ËÌP¹¼.ù’?åPåR¾Â‘³¼7’F·|-aÿmû³²îûþ™²ÝŸ9‰½+^±Ëú;ëÜéfßj,Z€ý´tîª>(Þ:Œíiª#ÑÊt K»Ì€=X¯×-k!à—RV—T—èÎØVq¹ÆªnQvªtVéµÕ;ÇýUíáä¸Qk­På3ˆ|ÉŸr(r•ü {âÆðæ¸>¬¹viŸwOŠÛå‰ï©¶Ê Ãúýúõ›>l@ÿk'¥OçºES$j…ìÅŸ©ú{©‡#ð“FinI<”pz jG/æé˜­U}ÁQתyUG‡åš}Ã,¿1™Yµé]5ÛYž# Gœç üÀ÷Õ Ó”£äl0Á]›Î,ì ¬Ý«#Ï1Èõ™t‹³';C¿î]?Ú2 E6?e¹.”2^Î +zW·Ê«7H-½Aˆ*íÁïU’ò|ª®ÔvöÎo©ºcœ™\m°µ2ޣбÛß±nK ‘:?ù’Ñ dÌév±ÃI³Ž?ùЙ؈ñ™¶Ë‹€WÅÅzÙ:|Ýúê%ó¦Ul¦¼*@R­;ÊVÙ_¢Ôk<Ê÷M×¥ÕŽØB{d9’³€[Õß dןPõ7LcË,ÿ¤‚[NÄj~2‡87[î¥øfþð¥‹2¯˜7Ñú¶Ní*Xˆ‰Øþ–&x¤”ûžX|ZÏ®]ܽû·¼wÙôŸÚ˃ÞÂUv[<"sÁ§â¢¦ìÎPÇÒ²}3‘õ¯_‹ä÷É5)¿érøå!óÔi.Ís&"$‰ybã4¤Mÿ@)N—¥C,t`‹ìþŸ|èK ÄBLë'3O‹Äò}ä¼° O÷λC ›e`‚Ic’zKžÓgwC®½±ÊÍiž|+”¯ˆ×ŠTI¾D#׎x°äK_1R¸Eì÷ýe¶u|7-Þóý`ʤlb –çðáäo¼¡©ÌÄ@c;°{§`—¾­ÓN˜¶À%“·øM‘¢óf,Lü拱ê¼&U9Æg9æàæ•`ÓÆY‹–š=†-îü´c8ePeRö_ÅÿT…Z ™ ÀÙÒ¿ã:ÂÂ<Ïqð§ˆ6nYyÞ¬yUNnòŠ/XZ¢'Äïuß”á‚yóªƒÖßj¢¢ÃÓÝ-OfÚ<É›2(ëù~:ûdžЗ™ú@Œ`nmm}nÒ¤IEBUC‡Ím9}ú '/ò|¨ÏºhYS¨©´´•cm_n˜¸ ‹ˆB®x)ñf2‹0]*_…VIš.A Ö‚<ž%Fþço¥åË—ÿSÒ{ö{­Þ±çˆ÷Î}±þ.¾ÁëåÞ,I|Lâ§ò¬Ùý]xþTÇg2 )|åIEND®B`‚PyQt5_gpl-5.10.1/examples/animation/states/k3b.png0000644000076500000240000002003413245231431021763 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞbKGDÿÿÿ ½§“ pHYs¯¯^‘tIME×9()‘|©IDATxÚå› °\W™ßÿ·÷½_¿ýéé=IÖ.ÙÚ,yÁxÀvBÁd BeN±„x\ÅUI*TH*ÃU3C*®!ž&C€Ø² xÖ%k±õ´=k}ÒÛ·Þ·Û·ó;§»5 °JËŸÏí»œw¾íÿ-÷´þÿ8¯çßY³f¯««Ë×ÛÛk)‘H8ÕjU¹\Î[XXð–——½ .xÙl¶) ú-@$ñmݺ5°{÷îøÝwß½µ¯¯og4]Ïùu~¿¿×qœoòi4Cc¦\.Ÿ*‹ãÓÓÓû¿ýíoŸKÁ`PÜgÏW* …I¬áÙ©©©o=Êç[ßúVÞXʯRίJÛ×_}ôŸøÄ®mÛ¶}4Nß Ó)ÃU©TR¦jµšÜz½%¡@­•À¼B8U*•²å¸Îý‹‹‹ó333ÿ{llìÏ>÷¹ÏONNºF¿n87nŒ~úÓŸ¾yÇŽ”ÉdÞâçÓÆ¯U,TáØP*#È ¢Ž X‚áÞç8ò C †B „Cò›cÆh<®ž¾>õA!®---Õ/]ºôÍ#GŽ|–¿{"ŸÏ»¿ à‡?üá‘÷¿ÿýÿ~hhè˜pM[ÆK0n(»¼¬…¹yÍÎÍjnvVK‹KÊæ²Ö:ðI úüŠ„‚JÍ'êJ§Õ•éV*Ó¥h*­P"®p,¦n„0¼r¥bÏÎΖϜ9óÅo|ãŸûú׿¾,É{½àŒŽŽÆ¾ô¥/½cÏž=Љ]Öx>¯LOOMéü¹ó:söŒ&&&4óør‡qkúÂ=£}Iǧ øEˉHTÌ¿¯§[ƒƒƒê_±BéE3…ÍyέZµJÂrÎ;÷êÁƒÿõ'?ùÉç]>¯µ|·ÜrK÷—¿üåÿ@Hû·f혠 PvqQ.èÄñ;~LhÇ2^.–ÔÛÛ£•+†ÕÇØÝÕ¥X$¢0¾Þlx¸§ \ZXÐüô 4`šŠà)\ ¿§G+VkÅêÕÊŒŒ*ÚÛ«8Âå{_¿À†*Øð|ðÁ/ã"•×Jþ·¿ýí+>ÿùÏÿZ¹`²ŒçÐìäÅ‹:úÊ+:ðÒK:~ò¤f¦¦ñÙ^mÛºU›7mR"‘¯éÉïµÈ1ób„¬E4 qìr_µZ³sž>vL Ñ€c³ï‡ñ•0½býz¥V*Â÷\bõu×Y E_ùÔ§>õàÉ“'‹?/@ú^æ?ð¬ùÌg>óHÿ&DåÛ;16¦þð‡zâ?ÐË/¿¬õÎwÜ£»n¿]סõ ¾ÄTÓjQªCœKJJtˆsqÆnçZo2¥uÖik¹°°¨/ò7kKKòUª ˜JÝU®„•»n¸á†­XÄcçÏŸ¯þªà¿óÎ;W~ö³Ÿý_Äõ[ гŸÃL_Ú@=¾WÏ>û¬\|û½¿÷{ºãoÔ À•§ÓN‡é³ ¤¤¨1ñ&$™âœ¡˜½Æy¬"&\·n½ºÄüô”ªhºœË«º¼$‡µ„ˆ Ÿ£<Ç\!l£6îÛ·ï»àRý—€0×ÿÐC}…‰ïĬÙO]º¤çŸ^ÿ÷±GuèàAíÚ±CÿüÞ{µ²§WéãWh8 …a ¯WÆŒþ¦ F¯uì3Çöº!)Èäñœ[;Á"ª3sª±†Z‰ÐJD±Bð3#––Œ»JBæ&²ÐïÿûãZî?Vy{êá‡þÏk×®½Xn23MÃüŸ{NíÝ«³§OëÝï|§nÛ½G]€Z†…tY¦a¶Í¤E|3¿oB7m$hjŸw콌áX0l2YÝZÏðš jNÝBŽ0ZS=W@e,!ˆ¤#*ÖjÖXû.’³e„°_Ìþ €¸ù¾pïm·Ýö_<Ì[³áù´÷ñÇuÄ¿ï÷_ G]øbÍã×v‘!hiµÍX›©¦eš±}¬ö±ÚÇºêØŽ¬ÃS @:žBEÉ)×5´ö:5–Á7'§î"„¢ü`B°m! •ä ¿CŽò.:!füEà§€Ùô‘|ä¯@à¤Éè– s@óë($ÇmXRƒCVƒüUÃ4t%óÖ±q ¯Ó‰Ì›s–<¨óŒ¸¿Ñ,+ê•Ï Qÿ³× ÆúrN«o¼IÉá^%¸ ÏWuOŸUAÔ³9ÍĮ̂»»;zë­·þ‘¤ðÏ@àCúÐ0™Û óµr°›Ð‘Ç4KNÿOÞ|‡’†Q(…xšåKVã®e2’LjhËfVÇ :ÌsÀù€†wnSzh¨ã!]½ö35¯¦hº[øÈ5VdV«*FjÝ{ývÒëwZ]MÀº<²È 4%øÊ•+ßsß}÷mäüTP‹'ßö¶·ÝOï3åÉÀÆOžÐÒÛ5Ã+µ²;£d‡yäs¦–j4sü$~X±LSÚ⫤À}½W¹Cr ­ä†!…!û½hMyE.¾ÆmšŒ÷¦%ækª~ùš×S_hCáÔ½y»ÂqŠ),/dÂ-¹&§äRŒ %.’=Ò£Ý~ûí5lþؤgÕððð›mÓšE’ãÇ+73«=Û·+ᵘ{m4®ÔD 3n¨’]Ö¥#GT^Zj#»ÔCÞÞ 68Ž×X­®õƒr–6+¤Òç_xAYòŠ+5ëY`l ÃO|ö­’È n8Wcîš‚1O‘• ¥F7*>0Â÷ eÆ/YÅ€Žj^¼d± Š@\ÎêïÓ?M¡ûï¿ÿÂ^ÌÜ\ý/ž;§KPhº²¯Ï21ɉõA4Xª,Êok59^,¿`Ý2'=ݽKÉ]*ãï1ÂÔòĤ.ìÛ¯j¾Ð6ýF'b@®%¾[l©sêÝ,gx½jñªêáyñ¬ºnZ£þ7¿ÜYXÂ8@éHÍ*­æ˜¯?/ó“¾+èÿØÇ>ö–+ùtL¼_·nÝ?µý:È€ßÄÙsÊÏÍi#‰a>jÒR™,ÍÿÁ°ñ9O5¿ƒ–bÝ6~/ò\yiY}ëÖÊG/X*)Ú·Z /=¥ì‰9î½::t¢‡ë•äsLV€FIaú¬b=ê¹î5†×©^)Ú{Ó<ë„T/ÍkùÌù8¾ª¼u"ccrR>\³)‹.´FFFî‘ô·PõJøèëõQìlC¶F_šŸ× À犄yOà} ôÔ§*K•LB=#a’‘¸l… ¨%úûY\U â}”’6hÒeªD íL‹i›½Ë¼ôÊ%‚CjT)tf/¨Ð3È<+i“™+m@o !VU¼ôŒÊó˜,puªgÀµ„0—³ªÓ‘ fº,’"ß*)~Þ÷¾÷í¤ç–2u~¿^dñ¹ù9…x¨/•´¦¸Bû£DNŽeôÓÌTªæ€Ì-!HV-Í:…2×Y»Kv÷®&aüïµlÐÀ×Á§.©Æ\B EÎØÑô J¯$ÄÊi'W.eòi'žCkWI€c8–C[£?Û¸ÑâU2™}ï{ß»–VÚ’¹«ã ÁÍ›7ïhXàñlsyvNUâhŒïi6ÈõuÚ5äZr+g³08HÒâZÁâûhÇø±¡ºÜ&…LwŸÕxÇÔ½Ës¹t‡`<ˆ0 }Ìc®c~ùò!•OЫ‡9Çù¦Áž%Î?¦Â½_Ï_[ùÚ9ÁkJ‚?Û~§HºÑ(ýJ c×™ðYÔ,PA$Ú¥l€ór˜TsÙÓlÞßX2¥éœ¢ƒk”=ôŒ*—j<°ÅLxuL™pT$ZšœàºãÍËé°[­Ñè˜WàbEÑë×`æa-;¢Ê‚†[÷øü5…ÎV£VQתõ˜þ³ªÌ©´€[¥záÚþÌØô˜WNVy= ®o  a@ºåäh[6*çsò×ê¶;pë˜bø,¨<¨VÀß'N«gãå‡FÉžWyÁ3‹‡hhÀ@3¡*Ž5À,âF¥SY7ÁÚ–TÊ䔸gi¢^¼ üÅÆU@Œs_í»òn½Y•ɧT^¬©YŒªç– ¸ “V‹R‰ S”Y…€|êݸU5h\ ¼1{ë¯55ŒöKÆ ±¿dPËH„z”Y£){ ,ÁÝ–"Ì[G³í¹.Ô´¨ælȲ‚‡méÍwS” ÏWº€ ÿ•ŽÁ€ÂÁ@³Ì§Ôà8”4<£Õ+üâ$£Ÿ>},iQ[œ6¦Ù¾î¶Ì¹èÓÒñƒhÆ0U’ÄMp/ˆcØ90K1U*£ÕËî†æý¤Ã!UªäEÐ$"@ÿ)uЮÁ,~ÏØÖ&kó)œL^Ö^–ä]iUŠ…,äð/ˆ´¢ÔóS†VU/M* j»KS §Cª.¹åcH]R3U¼·Ou´_žºˆ 6!×,8*-žRaÃF¬`Ôj…§Úëhù7DìŸFM ‚£·ÜlŒúˆÏÊõPBYq”Qžá82¯j†êjD0nJ‚šm†àËà^i^7_h§ŠVq:-a€Êqrª.7•;úІn¼YÝë7ʹ~7þ™g¸E"iÍ+Ľ ”.žÅLbÒ°!ÈF”~KYúê¸J7lSjhX°)b”NÛâ"o¯JÝRÈ ŽƒuÆYÅz©'Ò1ÖÓ$¯™PbTÇß³±º’ƒŽUT¬ß£6ÁÌÉðù‡ÉˉËGcÆo’ æçc6[œfh\‰µ1>nûúZ‚ú?ÂÃLbM¬|>¯éçC%ù …ÉL !qîqlO<ž!ïžÅm(m½ô´ÕMÝ@š=WPiò÷Wí3ÔtI™·xáè^6÷ÙnÑùgŸÓô±«´|FÑ?fÂÕŒ"é¸B©¨bAõmuÔ³ÉSÏ–MÖ×Góµ6\ œ8gá L÷¥—^:r >ù䓇y—V278”qÅ Œ 5%ê{)wø¨æÇaÞybï„Ù–¼š·üécÄæ&×=Ë|Ç:„P¸† °˜·fÏ Â$õÁô^ÍïÂjЫYEhÐñ qïç/âç0—HQ|õp-Ná¢ñüí0XC÷5¿"N‹É …»ôL”0ÿi¶üIôø\d3ëÔÛHIf2JPâæé¨Ø\Úåá 5Í=ÿÝ!ÅúúU]0fiêýà5§:UW-1̶£ƒÉ`WAŠœs­Éã›0X€¡yy•3¸ØQ¬b™â†45à´ÜGé#X˜AõypaI¡®q” Y@äpQ±6a1níWÀŒ Ñsñ'Sªt¥qÛõʶ7fÍÏÏ””ýÉ–XšÇ ž!­™ø1ôš5 ¦Rí¦¤Ðœ£üI%ûžFq†2B¸Ó3ª-/e¡«Â—µÍBãj A—‰.ª:¿¬Ø‹Æ2OVE„ ÖØŒÎA`ä<_gþóÌ;KhÂxDÂö­ðë.æ‹ó½ÝªÉá÷eBxí“p3¥®ß*_v"a®Û‚B3i¨/ ÀÅv‹¹³.‰H…P›'õ¾„ÔZÏøMvˆ@Š—kÜ£lÝ µÜ¬U¸7Õ,È&ŒGÜlÚ $/oç yÛ bÓÄãùbqÊJòZØ“³{÷î}„ö¸ÙÜè‰IPä½ ry(gµZ+8Êž×çû÷ì„Y7Õ)T¦h^Vlc΄"P­$sŠa]2aϱYœÇ²/_ÒüË 0Ƨdf°SžØfK­Æ]|Šx€&!¡vó÷.¨²Ñ¸2‹ö—0ÿ2€Ûž%ÃÜðÏÞ­ºÏéìUt¿ÿÝï~&Kâs:IÒþýûÇ ^Ù¾}û6úg „]»viyó†©&¤†0YrƒS§Ô½i- Fð×=þW´4c-³¦þ™çŒU«{£ÇËM—L.ˆµ y‹f€É,é3šóÈ'^Üå&î—FvŽýT™}0iæu  -’8!wù° ,Œ€t¬icá$URzµ§ÞU®zw@r˜ù°#!üÿ¬§ì´0u®i:á]`£DÌS¨§ýrÔ¶¡XÃ2ÚŸW&¹ç" Y$ûuª/¥þ¡j‘IzD’WûÆ#<8~öì13åÏz=î² u†wiÛÙj²&²€˜ÂPin¡/Ù¢=­Ä' Å¥+€• Ô¤¦€4͉¦º`¾geƒf‡@ `¾A›[ج¦-€ú‚G²ãSiÞ ¥£ýN%k)Á\±>µÜ­Á‰<7ÎPúâÑÁi|?k6Gôê Òº÷QEyùºHdš››c/Óþ¯ýÍÃ?dò¹ŸwƒD‰ ˆ³ì¸z Â0o"Bˆ«Dùéˆ][vÆÓÖ€)@t8†ñ˜Çù¦R}žÒÃM¥·ø1_|3‚¢X@¼…àMY` ¹Ëž >¬G×~šÌÛƒ˜Ófƒ&Ý] Ä&ÞÏ`U¹0€™ÑYòýð»Þ®‘·½UÙrÉhÞßäŸýñ ¸ä2ÓÏ+€~3r:ìȼݸB!0 Ceús¾J™¢¤¦D£^  lFîöQ,ùö£u?Áh> ó ð E §4Åe0À­Ûö™“mx¤Ñi1äÊ-a£Ì™Iʾ-ò-¢ñYü}ʆ¹žÖ…DF¹›vkËÿ@E"Î,š'³s¿ýÍ¿}`ìС§‹’û‹n’2ûôÏÐ._Ë ÅÆ‚&´%¶ø©ÐÅMÆKŠgªDM+'à Sùa:àØjJò= ó/*ZMâšµ‚V,!bw5'Î1Ÿ˜ËAÓàE˜‰ ñ:ùýBX!(˜7ùFZçHgèíxàãªü-æÙÔñÜÓÏüù·¾öWÎtÅÌ.±&T8vìØ‰+Vì!" !kTÊ6)kåœRÝæ]^Í4%!A~ÌÑo²3˜”Â1L>Á÷ç“\sS¨•ƒÙ£kÝÉqÀ“~^G)X@7 Ó Ig‚ì( EèBø{ LÇ8Ø£þš¿I;>þ1Uú Ì£8³ŸéÑ¿ü“/|²[š[þ%ö zhiáøñãc¼6¿ <è PŒÇ¡$Ó°òK 0Õ¡ßÖöAb 0ú¡€>„ ÌÈy5ü&w‡Ìf§cƒ±.QÁ6Öä(éI]4c»2õvÃ<O—/¬p“ˆTCÜ„ª€Í‹<}×»´ù_ýK±”é™Ëüˇ¿ð—Ÿÿ¿I6êçàá—Ý)JëÎŒ#*˜©'‰ØL¯‰S§¯"ËJ«œ¯Õ-S ¶*sªPC. à„Ù¢+°–b•ã TkQÁØŒ¸P Ìé¢PœHùèM@¡&ÖW#ÛŒ&|Qf ›|PCwÝ¡,QijzÚ»Y¿øµ¿øï÷GòÙñ³¬ýW¹Y:‚ÜÄÏaþ”$iÛhDåh7H…Êb~^Åñ))˜W¨Qmí 5UþùšÿKýNí7Äí#žÔ)g¡  ¢mF/,LN4Á4V¦q×]Úøž{ÕÀ³ËvW:•¬Ž<ôø_?ô•wWJ§Kîk±]>DÇh+{?Åo~—\Áa’"!€ 3ަ§W>}?=¥eHIjÃî#ð×K[CÍvºkÃic‚Ÿó†`ÚäúhÞ£ºXqu®áÑ—Ü£MìG²-GB¶@’Ãþ?£ùÆ}ûþÇ÷þúoþëHÓ»x‘¾–?˜@Ã;wîüƒ7½éM&Sì  ©°ÉýYhÜAaÅœ ¯ž”&Çš¿¤š òö@‰ÔµJîn„À?ñŒ|P ˆy‡`8¢ãT©ªYî©bioxƒFØ}ît¥ñ ª–²Y›áMcögÏœ™{æÉü§£Ï=ÿÍ•Ôs%ïõøÉŒ¥ùÜzÇw|‚×ÍoÆ%|„KÅc1»ƒ;,)î(æC³äãEL´:5©æìŒ|0 ‚ywP·U^ÃT…áˆ\ÖKSãô«ËVõnÝ"nFÙ yäÅÿO­Ty5èÕ—¦`“š¿©?uÔ* ¢°×¯Ý°þÆÃÃ×”«ÉÔÊp$œ¦ñŠWÃÜl¯Ð²*Áü2m« ìN?791qøì©ñƒ\Ÿ¦úËŠ>Ѳäý6þxšº·—Èò‘ŒÃ脚œÇü=G¸=Èõ2›TË €Í ׯõ¨ß°_­7õ:þ_¼ÝæS ÂIEND®B`‚PyQt5_gpl-5.10.1/examples/animation/states/kchart.png0000644000076500000240000001142713245231431022566 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞsBIT|dˆ pHYsììu85tEXtSoftwarewww.inkscape.org›î<”IDATxÚí› \GyÇÿÝïšsgöÒ®V»º½²„ Q² lŽ@œ@H ÊT€p䨊S`Š"EHGEc(S©ØØ±b‚mŽ T0’ É–¬ÓÒ®v%K{h¯™ÝÙyóŽî|¯_Ç3{i%°W¡Oúëë×;õf~ÿïë~o4³LJ‰ßåà¤k\3àš× ¸fÀ5^ú`Qàÿ9®Ê}»îs­FÒy•Dx$ï’yÎÑhšFcÒ6šR 3ÏÏ€I7 Q  ¾/ U_LTªþø¶u©ƒ‡ÿ«{ñ„ùÛ— ¯øÚ-Yë5‰„µ£T¶·,oY™r,¤“&2) Ù´…\ÆBÂ1`[LƒÃˆÄY†1dt ¸^ˆ=‡Æƒ¡¾_Z^Þ°î]ÑÝ•ÿ›íï°ßÝ7ë\×ÕÎÇæ$ ;†¥c=¦ùH¶©Æ–É”Œ¡ª¿ïèZóá‘Þýgr xÙÀ^÷K3¿mÓšÜ]ÉdíM F¡TŪŽ&0‚±m’lÇÐc–Ï™&‡É`ª}$!1íJLVŒÊɽw8ÿ²3ÀÚùÝ×n_›¿/Ÿm_74VA{kãÓŒ@Ü€P04À%,ààI¾`p}Àà‘$±KH %?”8ÚWFÇgJ…›@ñ²1€Ýòè²\"ùÕ6´ÝyqÂÅȤO8g%‚ÁŠÊàK/Œ*Í`ú$ƒÅÐÀçPðSðBJ”]T29õÔOî8ÀøËÃvóÏ·´æѶZÏ úa ƒ$Å  ʾàà>2+xFÀ ””Pwå’‘×ãȉžÓžW½ d.˜(>sóÍ+f†‡ïï?,CœdG¿&eõj@ð»w€'~\ªò¦BY*xS0½{fTQÉ TWV¨@KB,0]ÌØ„ú2ž÷B‰íëì±Ý¿ks žD‘äü³v[ÛÎÖ+vzÓÓpK%¸SSÁGÓéC~¹ü˜ÿW)¿è÷ì÷~Ý fC¶nvVÖpªÂ¼.se€Vü@•âj )Z>’²D÷ Ö侃‡÷~ï&Ï8(?þ-…OÒ9åW­2yôØ0DèyJëbfl ¥ÁÁ(Ÿq§§ÿ À=_’òÜ‹cÀëŽÿ„Ò›fA³z#.1f—ÿsÇbøã|ðá{>ÒNàü8üß¶Ë·m{Sª¥"‚®T@U‡O9 ¬•ÊdÆä¹s[,>Ä„øü§¤<ñ/v[ÿÁHüÕL<ó??ºnv(xpDyg“hÉçr77äóBÀdÑÒ3`X̨HÁÿI8MMhH&M2à=3ƒƒïþ"cØ]wK9qåï ñ§X4Ø‹¦æ,ÇÊæ ÿô³On³fÜRzß:¹¹¡©‰…ðI¢Phýsª¶éº0}ÁÛ¼”HH2†l"ÖåËÙ²öö;“†qô›Œ½áÊ7AÉnØo|_|9aÀk¶Zxò‰Ë º¶öñ†e!ÖX~Π—Ñšª¨NA³ '˜ç)ñj š×ÝÛ¶‘hlìŠÅŸÞÏØ§Þ#å?_¾Œ­üM XœaëZ[V³™‘á¡ÃΞ¸E [Ÿs}½£Xüøz*´©LÆ;(Ó&H'„ïÇF‘&)¤±:ŽcYŒŒù§ï1Vz»”_½<DpÜ~^İMFÐ[×Ó½ýC§|ø™ ]ËÌ<Øìê¿w@Ûø„SS঩:Jr®¯›Jd€ÔB\y•È êƒ–‰ˆ– +àâËO06ôF)w-m@P,Á^¶d{/ŒÀAcË*>Ý{nèôwvÚàÁ+ –À©ª¯áÇ» ì¿Ï¨ “ôm# èÐ]‚¦*+P°¤ÊóH5๙12áÇŒ=öf)«—6 tº-í`W¬“çØ²’O÷ôŸ~à?]‚À9À :„I9’¡ôñ- ‰§~··\É'1è=@‹I©æŒ9[3æ×çŽ ð÷,±ª×ÁݧýÖËf]×·®fØ¼Š—zÎõ<ðȳÜÀ¬ÍBšz®%aà]k%¦=†Pߺ˜!%çÁè¼ðâ¦Ü¹´Ü&ì@ë²àæ¦Å€çƒCŸîê}à‘㸩«©…ÚXÈЉ °ðÅÚ¶­AÃûßÒÃC–Ë/ ‘ªÚ/J´.½ÂÆè/–7¯}ã±ñsó¢à6½nlêDéTß…þ9Õr»ª´ApR@dè¹þÔdý£žoïÓýèZÕ€pR;wbê¾ûPݿΒž'¥IYR†”×b¸²(MKÞ ³Wÿ@"¬Â…inÐxû³étêÕ3n}Åcð+ÂéS½çÏ8|f]JÂD#ͪu›'ÓãX-éiwìâ@"2ëm#¿B‹7ü–pÇ»þ7m^ ï©§ð«o~c…‚=hér¶ ¦âX:öþLÊ—6`çR U•×oèÞ_M¾bÍÅIÞv_Oà'Nö8Ò¿:¬NZ&ãÇJègz\ž;×è½ÂøE;2àÃ?Dzê$B˶nœ|Ó{ßit¬ìÌœþÖ·0ø³Ÿ]r!š¤R'ÉÆâñaàJùúKpË“’ PÁ“\5¶-9ýÖß¿u`¤P¶öèYV§L¥yÕÕš37ߌœ9êOÇ-ÀÄ»ˆvw42€„” eó†à­ï}ëñÜW¾‚Êðð¢F0­6ÒJR³c (¾HöH™XzÔ×\=Pòüjfzø@ç©>™+%ý®-ƒ1²v銃/ ¯ ¼ð4É€I0% €'Ž6¿ý±DÛ–ë÷üí‡ÐÙsŠ>öóŠÅMР(Vë®Ð|ÖÓˆÛ—Þy¢\gცM)m" ˜™9@W8†€€ ˜‘&R\Á‘ÙÚ(Ž>g|çèg±lËÆðÍÿÖò]»Xåùç±X\ M“Ö‘îEb_ìö,¨XºdwSñ†ÆÍ¨.<`)ÀçT–Ïiw>\Fã¬%…#ãg Hj&À¢±¡—ƒT™EYñàÇÿ­[7…øÑa½_5†z“Ï<³à]J%™Äç+b̃}k! 0 IqéË ¤’‚£¹%’Ù,@d€¨«ÌkclvIì9!8`dÕy-Ûã[ðEW2$‡PÈ@¨³¨ËSGN÷è“hݶ)¼ã/>ˆíwgáÄ8m–2 ÁÞìfY¨¶xH|Xcö4€Ì1pû}/P˜Eã4eSIp.•&€œYK¬VyÆ8rYÙ•gùù _ë߆|IV“pœ)Ï…˜0$ÁJB ZeÒ#JÏž4¼ëhÞºQÜq×äwßm ïÚ…'OõT/ë·ZÜ U¡’2à Hç¤î˜5xE‘V@2ˆ—‚)Uë#$‰¨Bž¥ùÙ µ*/TùHêüÈel4®_¿ÕeM$uÂnXf½~Oò»MdÆ]Pñ ”€P&HëcÈY†HRéÈ)þÐ_~ Md„cACqÆiJ%Q¿ÏÇ4$œ¸ ›õ¶?Ë=ΓtÛÛºòZd‚`.Bé\CƒÍU¡RWn!·z|ÝA„ÙTàù° ä¦ßs{ ‰÷%°rw •a ,Õ²ÑcIcY«c0L“™îå<™´·‰T™Q–Alž¾w^Ì€V0V›6te‚Z‚Ù³a£!ǼÊ3hHÛÈ­:¶f_ AUÂ$ p0+Ü”À¡ÛÊ8AFlޗνi¸QGø¬††î ®@Å †$l )ljÁiB«,በ$c¡=ÀŠ;€éÂÆV$<¡Æ~àªãùÿ? ëŠÏMs4t[½AzAø3’2Á‡B $MZP&” +lò;>gÕxú538ö*Ž-O§±foÕB¾ëìê •ÕòPÇŽcCu€6 ^FÙêYù<ô$‘J,l‚/ä4^øLgLdWô]{¤âJ—"h Ä/ Ù^D‘’èaEŒ™.:½ r¡Ï[5î(áè6†­‡3X¿? ¯XU{„êˆ"6A+™ H8`\sH`JˆIT‹]ªCp:št•g™àKKëBgR&2Þ±^b †"hUm BŸ'Œ ÐxÈŸ&$àÆ—ºqTP`.™…ÎJ 9ߪuéÀ¦*ެc¸áx݇“tþ€ "^訬 H9 ¼&© ©zîy%R0Ï=9™3çXÑ9wCÁð8ç <Ýv²À µŠqÕu_Ɔ31tÃs÷?* }S)m„‡‚å£Qèš¶‘ó pÁàØ¿¶ŒÃ]ÛOå°ñd~ð$ôrd€TR€¸õ¡;ad&<`lÁû=9éÇÐüÚíʲY&U_*ðt’\^Ö Ù²®U\èŠK„$@Ákð2AŸ ªWL’\R©a!#Ò9G×$CÞÕŸ=±]38ÜNFôå°¹§¾´É¶AE‰ ô` ~ÈuÏî*^üÅ‹0г÷}ío œöæ¹&ø!`''Ñ|Ý^T“½˜®–QuCš×U–uà\ƒgN×À=Ý€.jêš´ ©z#€qC ò ³ä\ÄKC„Ø·jÏ­¨àÆcÍX5ÙÎ9Ž¥ à’FEÞÃç¿ í.-x+Ls‚16oô8žûä×±õŸ³Ìz¼@ÊÀÂÅñCpŒuȧ²ö¦Ã"füiÂ[=Cà©<ˆûÓ×ïL<,^ìmBr¶Plr «ÄÑdÐáå‘è-â8+aƒÝË0$ç,º(øjz œûò¡ÉÂ/\$ù—z3䑆0òÓŸàü¿¯ÇÊÞ p¦Mˆ74: ½.?…I_"eµ Ñ^‡Õ \¶µ÷J/9ÈG+Àh¹åèƒËÉ2„'°`0,z‰(¬¤…´“Fs²MÉ&‘CÃp¥8Sî»Ðtþâ@S¦ïðÍ<‡*op“qD1c°Ò§Ÿ>ôùŸ;÷Cý±")5@wA @N}úTG¦±þ#æØ`€êûZª)PÆ”ßÇ@¢—%|×Ù×lÌmÄmÍ·¥ÚÓíNsC³Y ªÌ \”½2fª3˜ªN¡ä–0åNQÅ,d,’V);…„•€c:° [Š@„ã¥qo¤2Rî/õ»=zǦÆ:à#Þò@ƒÍÐVbàHp¶a„d‚uøâè‘ؽ÷+†G÷$ÍHŠËûxœ1‹RŽ´­¯#6}îðۚMÈ 2¥²÷VȲ½4Hº¢~µ$'á #Ñ!:NÑh7ÊŒay;/sfŽ5Ø ÂÅJ…JA–ª%Lº“l¨2Ä.”/…r!>_ ×¯{-< yÂzösåÎÎó‘¾þï~ûYõ¿^TÕ¨¸WðEIýÎðHí0²qý§Þ‡¦[w";˜Bûß§îl‡ÐÙªÁêˆÎ$A| è/1§P!k?Ó{Ì£xŸAEÒ¸~ÓHŠ+þŠŒ”2T›"PEX*àøßõ#Ó*¬?ÞU•/€éX('Z|NÖR!µ„ž“:Ï›ÓÇ\KÔ×cq5{ªîU…ªê¿Í—¤ô *d„Gy Ńϣ6„Þ¨x ZKÏ…^Â9ç¸=_Lçú%[CW^Ü/KënÐ'.á$~~| 3œ ºÄñ¢ª7ÏÌ¥Mp1AÍÿ<îf¢¸j_–¦ssý!M;i ¶àvlÂ[Љn$`Ú·ök2ØüÙY—>ö z°Çñ\œÐ—¹"ñøWË€zmDc¼Ib9¶áUX‡Wb6ÐQ;Wl€‰¹"Є܇!ÁiìG}úÆf´v©7¼«fÀ|#LmFRßÑç•)I´ ›ìèIJ¢Íh'5#’°U¯Úø/¨ “ô§@¸$¼sxž`Ç0  U$•õNä‘„é_@¯¹HF!6)Q»©U9Q× †«Ûú‚ZV`•Rç JÒ½±ôÕ7`iCÙÎPËÚ€8D-«¹PC-¹ðËÉ€¥¹ÌP /Q\ûÕYàÚo]3àš¿Ãñ¿Ò®âZïiNIEND®B`‚PyQt5_gpl-5.10.1/examples/animation/states/states.py0000755000076500000240000002754113245231431022470 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (QPointF, QPropertyAnimation, QRect, QRectF, QSequentialAnimationGroup, QSizeF, QState, QStateMachine, Qt) from PyQt5.QtGui import QPixmap from PyQt5.QtWidgets import (QApplication, QGraphicsLinearLayout, QGraphicsObject, QGraphicsProxyWidget, QGraphicsScene, QGraphicsView, QGraphicsWidget, QGroupBox, QPushButton, QRadioButton, QTextEdit, QVBoxLayout) import states_rc class Pixmap(QGraphicsObject): def __init__(self, pix): super(Pixmap, self).__init__() self.p = QPixmap(pix) def paint(self, painter, option, widget): painter.drawPixmap(QPointF(), self.p) def boundingRect(self): return QRectF(QPointF(0, 0), QSizeF(self.p.size())) if __name__ == '__main__': import sys app = QApplication(sys.argv) # Text edit and button. edit = QTextEdit() edit.setText("asdf lkjha yuoiqwe asd iuaysd u iasyd uiy " "asdf lkjha yuoiqwe asd iuaysd u iasyd uiy " "asdf lkjha yuoiqwe asd iuaysd u iasyd uiy " "asdf lkjha yuoiqwe asd iuaysd u iasyd uiy!") button = QPushButton() buttonProxy = QGraphicsProxyWidget() buttonProxy.setWidget(button) editProxy = QGraphicsProxyWidget() editProxy.setWidget(edit) box = QGroupBox() box.setFlat(True) box.setTitle("Options") layout2 = QVBoxLayout() box.setLayout(layout2) layout2.addWidget(QRadioButton("Herring")) layout2.addWidget(QRadioButton("Blue Parrot")) layout2.addWidget(QRadioButton("Petunias")) layout2.addStretch() boxProxy = QGraphicsProxyWidget() boxProxy.setWidget(box) # Parent widget. widget = QGraphicsWidget() layout = QGraphicsLinearLayout(Qt.Vertical, widget) layout.addItem(editProxy) layout.addItem(buttonProxy) widget.setLayout(layout) p1 = Pixmap(QPixmap(':/digikam.png')) p2 = Pixmap(QPixmap(':/akregator.png')) p3 = Pixmap(QPixmap(':/accessories-dictionary.png')) p4 = Pixmap(QPixmap(':/k3b.png')) p5 = Pixmap(QPixmap(':/help-browser.png')) p6 = Pixmap(QPixmap(':/kchart.png')) scene = QGraphicsScene(0, 0, 400, 300) scene.setBackgroundBrush(scene.palette().window()) scene.addItem(widget) scene.addItem(boxProxy) scene.addItem(p1) scene.addItem(p2) scene.addItem(p3) scene.addItem(p4) scene.addItem(p5) scene.addItem(p6) machine = QStateMachine() state1 = QState(machine) state2 = QState(machine) state3 = QState(machine) machine.setInitialState(state1) # State 1. state1.assignProperty(button, 'text', "Switch to state 2") state1.assignProperty(widget, 'geometry', QRectF(0, 0, 400, 150)) state1.assignProperty(box, 'geometry', QRect(-200, 150, 200, 150)) state1.assignProperty(p1, 'pos', QPointF(68, 185)) state1.assignProperty(p2, 'pos', QPointF(168, 185)) state1.assignProperty(p3, 'pos', QPointF(268, 185)) state1.assignProperty(p4, 'pos', QPointF(68 - 150, 48 - 150)) state1.assignProperty(p5, 'pos', QPointF(168, 48 - 150)) state1.assignProperty(p6, 'pos', QPointF(268 + 150, 48 - 150)) state1.assignProperty(p1, 'rotation', 0.0) state1.assignProperty(p2, 'rotation', 0.0) state1.assignProperty(p3, 'rotation', 0.0) state1.assignProperty(p4, 'rotation', -270.0) state1.assignProperty(p5, 'rotation', -90.0) state1.assignProperty(p6, 'rotation', 270.0) state1.assignProperty(boxProxy, 'opacity', 0.0) state1.assignProperty(p1, 'opacity', 1.0) state1.assignProperty(p2, 'opacity', 1.0) state1.assignProperty(p3, 'opacity', 1.0) state1.assignProperty(p4, 'opacity', 0.0) state1.assignProperty(p5, 'opacity', 0.0) state1.assignProperty(p6, 'opacity', 0.0) # State 2. state2.assignProperty(button, 'text', "Switch to state 3") state2.assignProperty(widget, 'geometry', QRectF(200, 150, 200, 150)) state2.assignProperty(box, 'geometry', QRect(9, 150, 190, 150)) state2.assignProperty(p1, 'pos', QPointF(68 - 150, 185 + 150)) state2.assignProperty(p2, 'pos', QPointF(168, 185 + 150)) state2.assignProperty(p3, 'pos', QPointF(268 + 150, 185 + 150)) state2.assignProperty(p4, 'pos', QPointF(64, 48)) state2.assignProperty(p5, 'pos', QPointF(168, 48)) state2.assignProperty(p6, 'pos', QPointF(268, 48)) state2.assignProperty(p1, 'rotation', -270.0) state2.assignProperty(p2, 'rotation', 90.0) state2.assignProperty(p3, 'rotation', 270.0) state2.assignProperty(p4, 'rotation', 0.0) state2.assignProperty(p5, 'rotation', 0.0) state2.assignProperty(p6, 'rotation', 0.0) state2.assignProperty(boxProxy, 'opacity', 1.0) state2.assignProperty(p1, 'opacity', 0.0) state2.assignProperty(p2, 'opacity', 0.0) state2.assignProperty(p3, 'opacity', 0.0) state2.assignProperty(p4, 'opacity', 1.0) state2.assignProperty(p5, 'opacity', 1.0) state2.assignProperty(p6, 'opacity', 1.0) # State 3. state3.assignProperty(button, 'text', "Switch to state 1") state3.assignProperty(p1, 'pos', QPointF(0, 5)) state3.assignProperty(p2, 'pos', QPointF(0, 5 + 64 + 5)) state3.assignProperty(p3, 'pos', QPointF(5, 5 + (64 + 5) + 64)) state3.assignProperty(p4, 'pos', QPointF(5 + 64 + 5, 5)) state3.assignProperty(p5, 'pos', QPointF(5 + 64 + 5, 5 + 64 + 5)) state3.assignProperty(p6, 'pos', QPointF(5 + 64 + 5, 5 + (64 + 5) + 64)) state3.assignProperty(widget, 'geometry', QRectF(138, 5, 400 - 138, 200)) state3.assignProperty(box, 'geometry', QRect(5, 205, 400, 90)) state3.assignProperty(p1, 'opacity', 1.0) state3.assignProperty(p2, 'opacity', 1.0) state3.assignProperty(p3, 'opacity', 1.0) state3.assignProperty(p4, 'opacity', 1.0) state3.assignProperty(p5, 'opacity', 1.0) state3.assignProperty(p6, 'opacity', 1.0) t1 = state1.addTransition(button.clicked, state2) animation1SubGroup = QSequentialAnimationGroup() animation1SubGroup.addPause(250) animation1SubGroup.addAnimation(QPropertyAnimation(box, b'geometry', state1)) t1.addAnimation(animation1SubGroup) t1.addAnimation(QPropertyAnimation(widget, b'geometry', state1)) t1.addAnimation(QPropertyAnimation(p1, b'pos', state1)) t1.addAnimation(QPropertyAnimation(p2, b'pos', state1)) t1.addAnimation(QPropertyAnimation(p3, b'pos', state1)) t1.addAnimation(QPropertyAnimation(p4, b'pos', state1)) t1.addAnimation(QPropertyAnimation(p5, b'pos', state1)) t1.addAnimation(QPropertyAnimation(p6, b'pos', state1)) t1.addAnimation(QPropertyAnimation(p1, b'rotation', state1)) t1.addAnimation(QPropertyAnimation(p2, b'rotation', state1)) t1.addAnimation(QPropertyAnimation(p3, b'rotation', state1)) t1.addAnimation(QPropertyAnimation(p4, b'rotation', state1)) t1.addAnimation(QPropertyAnimation(p5, b'rotation', state1)) t1.addAnimation(QPropertyAnimation(p6, b'rotation', state1)) t1.addAnimation(QPropertyAnimation(p1, b'opacity', state1)) t1.addAnimation(QPropertyAnimation(p2, b'opacity', state1)) t1.addAnimation(QPropertyAnimation(p3, b'opacity', state1)) t1.addAnimation(QPropertyAnimation(p4, b'opacity', state1)) t1.addAnimation(QPropertyAnimation(p5, b'opacity', state1)) t1.addAnimation(QPropertyAnimation(p6, b'opacity', state1)) t2 = state2.addTransition(button.clicked, state3) t2.addAnimation(QPropertyAnimation(box, b'geometry', state2)) t2.addAnimation(QPropertyAnimation(widget, b'geometry', state2)) t2.addAnimation(QPropertyAnimation(p1, b'pos', state2)) t2.addAnimation(QPropertyAnimation(p2, b'pos', state2)) t2.addAnimation(QPropertyAnimation(p3, b'pos', state2)) t2.addAnimation(QPropertyAnimation(p4, b'pos', state2)) t2.addAnimation(QPropertyAnimation(p5, b'pos', state2)) t2.addAnimation(QPropertyAnimation(p6, b'pos', state2)) t2.addAnimation(QPropertyAnimation(p1, b'rotation', state2)) t2.addAnimation(QPropertyAnimation(p2, b'rotation', state2)) t2.addAnimation(QPropertyAnimation(p3, b'rotation', state2)) t2.addAnimation(QPropertyAnimation(p4, b'rotation', state2)) t2.addAnimation(QPropertyAnimation(p5, b'rotation', state2)) t2.addAnimation(QPropertyAnimation(p6, b'rotation', state2)) t2.addAnimation(QPropertyAnimation(p1, b'opacity', state2)) t2.addAnimation(QPropertyAnimation(p2, b'opacity', state2)) t2.addAnimation(QPropertyAnimation(p3, b'opacity', state2)) t2.addAnimation(QPropertyAnimation(p4, b'opacity', state2)) t2.addAnimation(QPropertyAnimation(p5, b'opacity', state2)) t2.addAnimation(QPropertyAnimation(p6, b'opacity', state2)) t3 = state3.addTransition(button.clicked, state1) t3.addAnimation(QPropertyAnimation(box, b'geometry', state3)) t3.addAnimation(QPropertyAnimation(widget, b'geometry', state3)) t3.addAnimation(QPropertyAnimation(p1, b'pos', state3)) t3.addAnimation(QPropertyAnimation(p2, b'pos', state3)) t3.addAnimation(QPropertyAnimation(p3, b'pos', state3)) t3.addAnimation(QPropertyAnimation(p4, b'pos', state3)) t3.addAnimation(QPropertyAnimation(p5, b'pos', state3)) t3.addAnimation(QPropertyAnimation(p6, b'pos', state3)) t3.addAnimation(QPropertyAnimation(p1, b'rotation', state3)) t3.addAnimation(QPropertyAnimation(p2, b'rotation', state3)) t3.addAnimation(QPropertyAnimation(p3, b'rotation', state3)) t3.addAnimation(QPropertyAnimation(p4, b'rotation', state3)) t3.addAnimation(QPropertyAnimation(p5, b'rotation', state3)) t3.addAnimation(QPropertyAnimation(p6, b'rotation', state3)) t3.addAnimation(QPropertyAnimation(p1, b'opacity', state3)) t3.addAnimation(QPropertyAnimation(p2, b'opacity', state3)) t3.addAnimation(QPropertyAnimation(p3, b'opacity', state3)) t3.addAnimation(QPropertyAnimation(p4, b'opacity', state3)) t3.addAnimation(QPropertyAnimation(p5, b'opacity', state3)) t3.addAnimation(QPropertyAnimation(p6, b'opacity', state3)) machine.start() view = QGraphicsView(scene) view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/animation/states/states.qrc0000644000076500000240000000040113245231431022604 0ustar philstaff00000000000000 accessories-dictionary.png akregator.png digikam.png help-browser.png k3b.png kchart.png PyQt5_gpl-5.10.1/examples/animation/states/states_rc.py0000644000076500000240000042321313245231431023145 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Thu May 2 17:13:38 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x15\x14\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xec\x00\x00\x06\xec\ \x01\x1e\x75\x38\x35\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ \x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x14\x91\x49\x44\ \x41\x54\x78\xda\xe5\x5b\x79\x8c\x64\xc5\x7d\xfe\xbd\xa3\x8f\xe9\ \xee\x39\x76\xa6\x97\xdd\xb9\x96\x3d\x66\x61\xef\x05\x61\x6c\xae\ \xa0\x38\xb6\x20\x4e\x2c\x22\x27\x32\x09\x92\x0f\x14\x20\xc6\x81\ \x18\x84\x92\x08\x59\x8a\x30\x7f\x18\x04\x09\xe0\xf8\x08\x47\x24\ \xa2\x24\x76\x14\x9b\x80\xf3\x4f\x0e\x27\x86\x80\xc3\x61\x60\x31\ \xe6\xb0\x21\xbb\xec\xb2\xf7\xce\xf4\x4c\xcf\xf4\xdd\xfd\xae\xaa\ \x7c\xbf\x7a\x5d\xf3\xfa\x98\x49\xef\xb4\x90\x65\x29\x65\x7d\x54\ \xbd\x7a\x47\xd7\xf7\xbb\xab\x66\x6d\x48\x29\xe9\xff\x73\xb3\xe9\ \x97\xb8\xbd\x74\xed\xb5\x03\x9e\xeb\x66\x09\xf0\x84\x18\x23\xe9\ \x67\xa5\x2f\xb3\x42\x88\xac\x14\x18\x63\x4e\x04\x22\x2d\xfd\xe0\ \xdf\x7f\xf3\x95\x57\xfe\x8a\xfa\x68\xbf\x30\x0b\x78\xef\x4b\x5f\ \x4a\x54\x3d\x2f\xeb\x48\x37\x6b\xf8\x41\x96\x04\x88\x04\x04\x02\ \x41\x56\x92\xc8\x52\x20\x43\x52\x52\x8c\xc9\x40\xe0\x9e\x60\x82\ \x29\x89\x87\x70\x4d\x18\x87\x08\x02\x12\xd1\xb8\xd9\x8b\xc6\x46\ \x21\x86\x2e\x3a\x70\xc0\xfb\x85\x58\xc0\xcf\xef\xbe\x3b\x6e\xd5\ \x6a\x59\xd7\xf3\xc6\x4c\xc3\xc8\x0a\x62\x12\x06\x2f\x18\x3d\x8d\ \x19\x22\xc8\x0a\x49\x59\x92\x4c\x42\x86\x7d\x20\xd3\x20\x47\x06\ \x6e\xa0\x03\xd0\xf3\x80\x00\x26\x21\x19\x12\x64\x00\xdc\x23\xd9\ \x84\x7a\xae\x1d\xb4\x0c\xd2\x73\xc9\x63\x52\xee\xbc\x88\xe8\xcd\ \x0f\x44\x00\xef\xdc\x79\xe7\xed\xe5\xb8\xbd\x29\x79\xe2\xe4\x88\ \xb1\x6e\x24\x26\x0d\xca\x1a\x64\x8c\x11\x48\x12\x49\x80\x06\x7d\ \xe2\x26\xa1\x38\xee\x42\x32\x7a\x61\x22\xec\x43\xed\xf0\x98\xfb\ \xe6\x75\x04\xb9\x32\xa4\x86\x88\xde\xd7\x08\xaf\x43\x88\xf6\xdf\ \x34\xa4\x7f\x01\x7d\x10\x02\x78\xec\xc2\x0b\xbf\x72\xc5\x95\x97\ \xdf\xe5\x98\x43\x94\x1a\x18\xa0\x40\x88\x90\xaa\xc1\xff\x55\xff\ \xa1\x50\xf4\x7a\x28\xc3\x61\xa4\x9d\x88\x74\x34\x56\xef\x5a\xa9\ \x34\x05\x8d\x3a\x5c\x99\xcd\xda\x65\x33\x50\x30\x63\x36\xe6\x1b\ \xe1\xb5\xd0\xc4\xf1\x46\x32\x41\xa4\x85\x55\xa9\xb4\x0b\xa3\xc3\ \x2a\x84\x30\x2e\x30\x0c\xe3\xef\x25\x5a\x5f\x02\x30\xd0\xee\x98\ \x9e\x4e\xce\x0c\x0f\xdf\x5e\x2f\x95\xa9\x54\x2c\x53\x76\x7c\x9c\ \xfc\x72\x89\xc8\x34\x69\xb5\x66\x26\x12\x24\xea\xf5\x48\x10\xe1\ \xe2\x99\x8c\xd6\x54\x48\xcc\x60\x01\x0c\xa0\xc7\x3b\x98\x0b\x6a\ \xfc\xb2\xa5\xe6\xfc\x5a\x83\xac\xc1\x21\xf4\x35\xb2\x86\x06\xc9\ \xcd\xcd\x13\xa5\x53\xca\xf7\x85\x03\xc1\x60\x5e\x13\xee\xd6\xbe\ \xb6\x00\xb1\xbf\xa9\xa1\xb5\x0b\x80\xc9\xf3\x72\x3c\xa2\x6d\x41\ \x10\x0c\xd7\xf0\x83\x85\xa5\x22\xc5\x76\xee\xa4\x5a\x6e\x8e\xcc\ \x64\x52\x4b\x49\x6b\x5d\x75\xf1\x6c\x96\xbc\x42\x81\x12\x1b\x36\ \x52\x50\xad\x84\x6b\xf1\x3d\x32\x62\x31\xe2\x4f\x06\x9e\x47\xd6\ \x40\x4a\x09\xa8\x31\x3f\xaf\x34\xeb\xd7\x41\x36\x99\xc4\x3b\x1b\ \xc8\xc9\xe5\x48\xb2\x65\xc0\xd2\xbc\x7a\x95\xc8\x32\xc9\xaf\xd6\ \xc8\x84\x50\x02\xd7\xa3\x00\xe4\xf9\x5d\xe9\xba\x91\xf6\x05\xf7\ \x1d\xae\x80\x1e\x2a\xda\xcb\x2b\xec\xd7\x05\x0c\x20\x31\x57\xaf\ \xaf\x9f\x49\xa5\xa8\x86\x1f\x75\xaa\x55\xb2\x86\x47\x28\x60\xe9\ \xc7\xe2\x78\xa2\xfd\xeb\x12\x30\x2c\x1b\x8b\x74\x48\xb8\x0e\x34\ \x08\xcd\x2d\x2c\x28\x72\x36\xb4\xe9\x2c\x2e\xc2\xb4\xe3\xea\x9e\ \xa4\xd0\xff\xb5\x00\xdd\xa5\x25\x08\x6e\x89\x04\x5c\x21\x58\x2a\ \x34\x4d\xbe\x33\x3e\x04\xaa\x27\xdb\xc2\x37\xbc\xe8\x9e\xd4\x71\ \xa5\x45\x18\x00\xfe\xb3\xfe\x9b\xdb\xb7\x8f\x43\xf0\xa7\xd6\xe2\ \x06\x76\x53\xfb\x16\x90\x2e\x04\xc1\x04\x07\xb0\x06\xfc\x31\x33\ \x98\x21\x7b\xdd\x08\x49\x98\xa7\x1c\x0c\x34\xe9\xb6\xe6\x2c\xcc\ \x2b\xc2\x0d\x68\xd2\x4a\x24\x95\x86\xdc\x52\x99\x4d\x5b\x49\xab\ \x7e\xfa\x54\x4b\x1c\x90\x54\x3b\x71\x42\xbb\x84\x26\xda\x41\x5e\ \x32\xda\xef\x35\x7c\xfd\x8d\x2e\x17\x00\xda\x2c\x63\x90\x88\x03\ \xe1\xa9\x7e\x2c\xc0\x04\x52\xae\x54\x45\x06\x39\x8e\x4b\xe7\x6c\ \x9f\x21\xd7\x07\x71\x19\xe6\xdb\x95\x4c\xc0\x87\x95\xe8\x00\x28\ \x3c\x8f\x47\xa1\x99\x57\xca\xad\x01\x31\x22\x2d\x23\x82\x3a\x4b\ \x44\x02\x88\xae\x89\xc1\xf9\xde\xf7\x29\xf0\xb9\xf7\xd4\xd8\xc7\ \x98\x94\xba\x2c\x32\x01\xb8\x5a\x28\x6c\xdc\x93\x58\x0b\xc8\xec\ \xc3\xdd\x7f\xe9\x57\x00\x31\x43\xca\x14\x2f\xd2\x81\xcf\x4d\xcf\ \x6c\xa3\xea\x7c\x8e\xcc\x78\x3c\x5c\x54\x77\xd3\xe4\xa3\x6c\xa0\ \x53\x22\xe9\x34\x18\x09\x81\x05\x20\x02\xc1\x71\x21\x04\x2f\x1a\ \x40\xaf\x82\xac\x61\x59\x80\x0d\x60\x8c\xdf\x34\x6c\x9b\x6c\xcc\ \xc7\x00\xa4\x60\xf0\xe4\x9e\xf8\x79\x95\x31\x82\x3a\xe0\x38\xe1\ \x98\xdd\x8c\xb3\x89\x94\xfb\x74\x20\xec\x27\x0d\x9a\xf0\xd1\x18\ \x2f\xd6\xf3\x7c\x15\x7c\x2a\xe5\x1a\x0d\x20\x1a\x3b\xda\x02\xba\ \x9a\x04\x09\x90\x0a\x3c\x28\xc1\x67\x2b\x08\xb5\x16\x04\x4c\x46\ \x91\xb0\x00\xee\xc9\x8e\x21\x63\x58\xb8\xb6\xe0\xd6\x36\x00\xc2\ \x26\x60\x19\xca\xc7\x03\xfc\x9e\xd0\x84\x18\xd0\xa8\xaf\x2d\xa4\ \x37\x94\x0b\x58\x3a\x10\xf6\x15\x04\x81\x79\xdf\x2f\xa2\x57\x64\ \x3c\x04\xb1\x52\xb5\x4e\x83\x08\x84\x8d\xc5\x3c\xd5\x0a\x45\x12\ \x2c\xa5\x78\x8c\x4d\x4f\x59\x86\x65\xa1\xcf\xc4\xc8\x42\xb0\x8b\ \xc7\x98\x5c\x1c\x81\x2f\xd4\xa2\x6c\x92\x11\x8a\x90\x43\x3e\x7a\ \x59\x87\x90\x9a\xe6\xee\xb7\xb9\x40\x38\xa6\x68\xdc\x01\xd9\x1b\ \x52\x32\x89\xed\x9f\xdb\xb0\x21\x89\xb0\x56\x93\x68\x6b\x2e\x84\ \xde\xaf\xd7\x17\xf1\x96\xd2\x60\xad\x5c\xa6\x42\x2e\x4f\xe7\x5e\ \x3c\x4d\xf2\xd4\x29\x1a\xdb\xb5\x8b\xcd\x34\x24\xa5\xc9\xb9\x0e\ \x08\x42\x73\x24\x55\x40\xf6\xa8\xc5\x0d\x80\xee\x9e\xc9\x74\x8e\ \x55\xdf\x4d\x3e\x22\x06\x88\xff\x1b\x62\x19\xb1\xcb\xe2\xf1\xdd\ \x7f\x47\xf4\x6a\x3f\x2e\x20\xab\x41\xe0\xba\x42\xa0\x0b\xd2\xb5\ \x5a\x9d\x4a\x88\xee\xf6\xc8\x88\xd2\x62\xf5\xd8\x51\x8a\x9a\xe2\ \xd4\x51\x15\x46\xe4\x69\x45\x41\x88\x96\xba\xbe\x83\xb0\x5c\x51\ \x00\x6d\xe4\x68\x19\xb2\x1b\x32\x42\xd2\x90\xfb\xa9\x0f\x01\x48\ \x40\x00\x7e\x2d\x08\x0a\x83\x42\xa4\x51\x0b\xf0\x02\xb8\x16\x50\ \x5a\x36\x06\x92\xd4\x91\x06\xda\x3b\x29\xb5\x30\x34\xe9\xae\x80\ \xa8\x02\x2c\x4a\xda\x0a\xfc\x7b\xdd\xd8\xd8\xea\xfb\x85\x8e\x31\ \x45\xa6\xde\x91\x39\xba\x61\x0a\xc4\x81\x35\x34\xb3\x85\x8d\x0f\ \x78\x2c\x00\x5d\x0b\xf0\x22\x25\x07\x31\x21\x9b\x5b\xd2\x20\x44\ \xc0\x10\xcb\x73\x22\xda\x96\x02\x3c\x0e\xaf\x45\x73\x4e\x00\x7c\ \x5d\x02\xf9\xe9\xcf\x5f\x4f\x57\x3d\xf1\x4f\x3d\x82\x5a\x07\xf9\ \x88\xb4\x86\x16\x52\x17\x8c\x30\x15\x9a\x6b\xb2\x00\xad\x7d\xc0\ \xad\x0a\xb1\x14\xd6\x02\x1e\x4d\xef\xdd\x4d\xd5\x85\x79\x15\xf0\ \x7c\xd1\x91\x09\xb4\xb6\xa3\xb1\x4a\x51\x25\x54\x83\x23\xe7\x9c\ \xb3\xe2\x26\xe9\x43\xbf\xf3\xdb\x34\x75\xc3\x0d\x61\x4e\xe7\x32\ \xd9\x30\x75\x31\x13\x91\x6d\x89\x0d\xb4\x7a\xb1\xc4\x58\xd9\x02\ \xa4\x54\x99\xa0\x1f\x0b\xf0\x00\xa7\xe4\xfb\x0b\x4a\x00\xae\x4b\ \xe3\x5b\x36\x43\x00\x79\xb2\x32\x19\x12\x5a\xbb\x80\x50\x50\x1a\ \x6e\x5a\x44\xd8\xdb\xdb\x66\xe8\x23\x7f\xf9\x75\xf2\x38\x40\x0a\ \xfd\x7c\x84\xc3\xdf\xfd\x2e\xcd\x7e\xff\x29\x32\x6d\x9b\x2b\x47\ \x6d\x29\xcd\xf7\x57\x44\x37\xf9\xd5\xef\xeb\xc0\x34\x7a\xcf\xc6\ \x8d\x53\x06\xda\x59\x09\x40\xa2\xb5\xb8\x80\x5b\xf4\xfd\xbc\x4e\ \x85\x41\xb1\x48\x65\x04\xc2\xf8\xc8\x3a\x6d\xd2\x0a\x32\x22\x17\ \xb9\x01\xfa\x0b\xef\xb8\x83\x26\x2e\xbb\x8c\xec\x89\xc9\xe5\xc5\ \x89\x96\xde\x01\xe9\xd2\x1b\x3f\x25\x6e\x89\xb1\x51\x7d\xef\x2c\ \xd1\xed\x0a\xd1\x39\x41\xd8\x8b\x26\x91\x75\xa6\xb9\xbf\x1f\x0b\ \x08\x00\x37\x1f\x04\xf3\x4d\x01\xe0\x22\x4f\xc5\x33\x67\x38\x13\ \x70\x5e\x6f\xd7\xa8\x5e\x8c\xb6\x06\x3c\x9f\xc0\x73\xdc\xce\xbf\ \xe9\x26\x65\x05\xd1\xf3\x91\x96\x1b\xc7\x4f\x10\xb7\xf4\x94\x12\ \x92\x16\x60\x6f\xd2\x00\xbb\x4d\x19\xbb\x4f\x07\x75\x48\xd5\x0f\ \xa8\x5c\xa9\x44\xf7\x23\x22\xaa\x24\xee\x27\x0b\x28\x01\x9c\x74\ \xdd\x39\x2d\x80\x4a\xa5\x4a\x65\x6c\x63\xed\x4b\x2f\x21\x62\x01\ \x74\x58\x95\x6c\x19\xc7\xb0\x71\x5a\x78\xe6\x69\x4a\xc2\x5d\x26\ \x7f\xfd\x13\xf4\xf3\x8d\xe3\x24\x72\xf8\x54\x47\x3d\x50\x9f\x3b\ \x43\xdc\x52\x9b\x36\x93\xfc\xef\xe7\x95\xf6\x3c\xc7\x51\xd6\x60\ \x59\x5c\x8c\x1a\x51\x0c\x68\xf1\x7f\xc7\xb2\x69\xc7\xcd\x37\xd3\ \xf8\xee\xdd\x94\x9a\x9c\xa0\x81\x2d\x5b\xa8\x84\xcd\xd5\x0f\xaf\ \xba\x5a\x0b\x40\x5b\x00\x7f\xe3\xac\x4b\x62\xb3\x23\x0d\x7a\x67\ \x1c\x27\x1f\x80\x3f\x2f\x88\x53\x61\x65\x69\x29\xac\x05\x5c\x57\ \xbb\xc0\x8a\xae\x30\xb8\x65\x2b\x15\x5f\x7f\x8d\xe6\xfe\xfa\x51\ \xe2\xb6\xeb\xd6\x5b\x61\x05\x4e\x97\x1b\x94\x17\xf2\xaa\x64\x4e\ \xcf\xcc\x50\x15\x5b\xe1\x7a\x22\x41\x9b\x10\x18\x67\xf0\xfc\xd8\ \x27\x7e\x83\x8a\xd5\x2a\x07\xd3\xb6\xb8\x20\xd6\x8d\xd2\xd5\x88\ \x1f\x23\xcf\xfd\x90\xde\xfd\xcc\x75\xf4\xda\xaf\x5e\x49\x87\x2e\ \xff\x08\xd1\xf3\xcf\x61\xc5\x1e\x2f\x3e\x82\x61\xe8\xb3\x01\x73\ \x0d\x2e\xd0\x96\x09\x9c\x1a\x4a\x62\x5e\x6c\xbd\x56\x23\x1b\x87\ \x15\x46\x12\xd0\x64\x3b\xd1\x9c\x1f\xde\xbb\x8f\x6a\xef\x1d\xa6\ \x93\x67\xe6\x68\xe1\x3f\x7e\x40\x93\x57\x5e\x49\xf1\xe9\xe9\x76\ \x17\x00\x1c\x69\x50\xf9\xf0\x61\x9a\xfa\xd8\xc7\xe8\x92\xfb\xef\ \xa7\x5f\xf9\xbd\x6b\x69\x6b\xad\x44\x5b\xb7\x6f\xa3\x2b\xee\xbd\ \x97\x7e\xf7\xc0\x6b\x14\xdb\xb6\x4d\x93\x57\xc2\xf8\xe8\xe3\x8f\ \x53\xe1\x1f\xbe\x4d\x07\x7e\xf2\x16\xe5\x92\x69\xca\x25\x52\xf4\ \xe6\xdc\x22\x3d\xff\xe5\x3f\xa3\xa0\x9d\xbc\xb6\x80\x99\xcf\x8c\ \x8e\xa6\x0c\xb4\xb5\x08\x40\x67\x02\xb7\x2e\x44\x41\xb0\xbf\xc2\ \x34\x37\x4c\x4f\x51\x0d\xfb\x02\x2b\x91\xe8\xf6\x51\xf6\xfd\xe6\ \x31\xf5\xe8\x85\x17\xaa\x78\x11\x90\x41\x73\x8f\x3e\x4c\xdc\xf6\ \xdc\x76\x1b\x9b\x77\x18\x24\x01\xd9\x44\xf5\xd0\x41\xb2\x90\x5a\ \xe7\x1f\xf9\x16\x1d\x78\xe4\x51\x7a\xfe\xdb\xff\x48\xaf\xdc\x74\ \x23\x9d\xbe\xe5\x0b\x14\x1f\x1a\xa2\xab\xbf\xf3\x1d\x92\xc3\xc3\ \xea\xd9\x91\x7d\xfb\x68\xdd\x79\xe7\xd1\xd1\xe7\x7e\x44\x42\xca\ \x36\x9f\xaf\x5a\xf6\x32\x79\x11\x92\xd7\xb0\xf6\x0d\x0c\xec\x5e\ \xab\x05\xc8\x65\x0b\x08\x82\x25\xa1\xb6\xc5\xa8\x05\x76\x9c\x4f\ \x75\x6c\x86\xec\x74\xba\x4d\xf3\x82\xa1\x83\x97\x65\x71\x90\xc4\ \xf3\xbe\x9a\x3b\xf2\xde\xfb\x94\x7b\xee\x39\x9a\xb8\xe2\x0a\x4a\ \x6c\xdd\xd6\x6e\xce\x40\xfd\xbd\xf7\x88\x5b\x11\xd6\xe0\x41\x60\ \x30\x78\x2a\x26\x53\xf4\xda\x7f\x3e\x43\xb3\x4f\x7c\x8f\xe2\x38\ \x5d\xda\x7c\xcd\x35\xea\xd9\xb1\xcd\xe7\xaa\xa5\x35\x82\xa0\x8d\ \xbc\x86\xe8\x20\xaf\x91\x20\xda\xdf\x8f\x0b\x78\x80\x53\x0e\x82\ \xbc\x3e\x18\xd9\x30\x31\x8e\x54\x38\x4f\x71\xf8\xa1\xce\xfd\xdc\ \xcb\x65\x04\x34\xb4\x79\x33\x39\x88\xfa\xd6\xf9\xe7\xd3\xf0\x47\ \x7f\x8d\x36\x7f\xf1\x8b\x94\xda\xba\x95\xb8\xed\xbd\xfd\x76\x58\ \x41\xa3\xcd\x0d\xea\xcd\x7d\x45\x72\x6a\xaa\xad\x62\x74\x0d\x93\ \x72\x4f\x3e\x41\x68\xec\x42\x6a\xce\x32\x0d\x15\x40\xd3\xbb\xf7\ \xa8\x5e\x10\xb5\x41\x76\x93\x57\x73\xb1\x30\x13\x9c\x9d\x0b\xb4\ \xd6\x02\x5a\x00\xcb\xa9\x90\xb7\xc5\x73\x73\x64\x8f\x8e\xf2\x81\ \xa7\x2e\x75\x23\x60\x91\x23\xf0\xff\x31\x04\xb5\x8b\x2f\xb9\x98\ \x76\x0a\x97\xb2\x2f\x3c\x4b\xf9\x9b\x7f\x9f\x4a\xaf\x1d\xa0\x89\ \xcb\x2f\xa7\xd4\x8e\x9d\xad\x6e\x00\x01\x1c\x0b\x53\x21\x22\x79\ \xe7\x5f\x7e\x4e\x1f\x3c\x48\xaa\x35\x35\x5e\x7b\xe9\x45\x95\x48\ \x66\xbe\xf0\x07\xe4\x0a\xd1\x45\x94\xd7\x68\x66\x32\x5d\x71\x80\ \x4c\x53\x95\xc4\xfd\xb8\x80\xbb\x84\x5a\xa0\x55\x00\x95\x85\x05\ \x95\x09\x60\xe3\x6a\xb1\x11\x42\x52\x59\x14\x3f\x07\xaf\xff\x2c\ \xfd\xf8\xe1\x47\xe8\x85\x1f\x3c\x4d\xaf\xbc\xf5\x0e\xfd\xf4\x64\ \x8e\x4e\xdf\x77\x2f\x71\xdb\x87\x02\x89\x33\x82\x7e\xaf\x78\xf2\ \x64\x28\x80\x6d\x33\x1d\x55\x20\x22\xc8\xba\x31\xe2\xe6\xe7\xe6\ \xd4\xdc\xc9\xa3\x27\xa8\xf8\xc2\xf3\xb4\xfe\x82\x0b\xe8\xa2\xfb\ \xef\x23\xc7\xe0\xc0\xef\xa9\x2d\x7b\x1d\x19\x63\xe6\xfa\xeb\xe9\ \xdc\x5d\x3b\xda\xc8\x03\x4c\x6c\x37\x77\x06\xda\x5a\x04\x10\x00\ \xde\xac\xeb\xe6\x42\x25\x04\x61\x2d\x80\x54\x68\x8d\x0c\xf3\x2f\ \x33\xe1\x08\xbc\x78\x32\x68\x74\xcf\x1e\x3a\x8e\xe8\xef\xe1\x73\ \xa2\xa5\x34\x3e\xfc\xd6\xdb\x54\x7c\xf5\x15\x1a\xbf\xf4\x52\x1a\ \xdc\xb7\x77\xb9\xe0\xa9\x14\x4a\xe4\xe0\x9b\x53\x57\x5d\x15\x1e\ \x8c\xa8\x6f\x85\xef\xc5\xd9\xd2\x30\x97\xff\xdb\xbf\x51\xbd\x87\ \xf5\x1f\xbe\xe5\x66\x72\x20\xb4\xed\x9f\xfe\x34\x7d\xea\xc7\x2f\ \xd1\x87\x1e\xf8\x73\xda\xf5\xa7\x7f\x42\xd7\x3c\xfb\x5f\x34\x99\ \x1d\xa1\xf7\x5f\x7e\xb5\xcb\x15\x70\x3d\x72\xe7\xfa\xf5\x9b\xd6\ \x6a\x01\x02\xf0\x8e\x3b\xce\xac\x3e\x18\xe1\x5a\xa0\xc6\x47\xe4\ \x99\x41\xf6\x95\x76\x0b\x10\xf0\xff\x6d\x5b\xa9\x7c\xe8\x10\x79\ \xbe\xaf\x49\x2c\x9b\xb5\x83\xcf\xcf\x7e\xf3\xeb\xc4\xed\xc3\x5f\ \xbd\x87\x5c\x37\x14\xa0\x4f\x52\xbd\x93\x04\xd9\xf1\x4f\x7e\x92\ \xaa\xa5\x32\x79\xae\x4b\x55\xa4\xdd\xf3\x6e\xb9\x85\x16\x1e\x7b\ \x98\x0e\xbe\xfe\xc6\x32\x99\x83\x85\x0a\xfd\xec\xea\x8f\x53\xe9\ \xbe\xaf\x92\x3c\x7e\x8c\xa6\xf6\xef\xa7\x2d\xd3\x93\xe4\xdf\x73\ \x37\xbd\xf9\xb5\xaf\x93\x6f\x9a\x7a\xf1\x6d\x41\x71\x5d\x22\xb1\ \x6f\xad\x7f\x1a\x93\xcd\x2d\x71\xd5\x05\xe2\x52\xa6\x6b\x58\x54\ \x06\x0b\x75\x0a\x4b\x2a\x15\x7a\x22\x68\x2b\x03\xc7\x90\xfe\xaa\ \x47\xdf\x57\xd6\x80\xd6\x7e\x26\x80\xf6\xb3\x67\x7f\x44\xd3\x48\ \x8f\x9c\xca\xf6\xdd\x75\x17\xbd\xf9\x8d\x6f\x90\x84\x4b\x79\x20\ \x22\x2f\xba\x88\xae\x7c\xe8\x21\xda\x7b\xe3\x8d\x94\x3b\x70\x80\ \x86\x51\xe1\x89\x27\xbf\x47\x2f\x3e\xf1\x14\xb9\x76\xac\xad\xbc\ \x3d\x58\xf7\xe8\xc8\x63\x8f\xd3\xc8\xb7\x1e\x26\x5b\x08\x95\x02\ \x17\xe3\x49\x68\xda\xea\x8a\x0b\x7a\x6c\x87\x99\xe0\x9f\x01\xd9\ \x4b\x00\xdd\xc5\x10\x6a\x81\xb4\x10\x69\xce\x04\x93\xe7\x9f\x87\ \x5a\x60\x89\x62\x48\x4f\x75\xc4\x04\xdd\x1a\x8d\x3a\x4d\x5e\xf3\ \x5b\x34\xff\xfa\xeb\x54\xc4\xbe\x61\xa8\xb9\x17\x90\xa1\x10\x54\ \xae\xbf\xf0\xa1\xaf\x91\x09\xed\x96\x9f\x7d\x86\x26\x93\x71\xca\ \xde\x74\x03\xfd\xcf\x93\x4f\x51\xee\xa1\x07\xe8\xc4\x1f\xfd\x21\ \x65\xb0\x75\x8e\x65\xd2\xe4\x97\x2b\xf4\xf6\x99\x59\xca\xc7\x07\ \xc8\x67\xf2\x11\x21\x2d\x04\x95\x25\xe6\x70\xbf\x93\x28\xb0\xe2\ \x1c\x59\x96\xca\x04\x6b\xb6\x80\xa6\x00\xb8\x16\x98\xe4\x6d\xf1\ \xae\x5d\x3b\x69\xfe\xf8\x49\x8a\x83\xa0\xc0\xde\x80\xdb\x10\x0a\ \x94\x4b\x60\xae\xe9\xc1\x0c\xc5\x21\xa0\x8f\x3f\xf8\x00\xbd\xfc\ \x95\xbb\x49\xb6\x1e\x93\xc3\x75\xe6\x6f\xbd\x99\x8e\xc1\x35\x1a\ \x56\x4c\x11\xf0\x0d\x43\xf5\xa7\xf8\xbe\x95\x20\xca\x17\x49\x02\ \xdc\x64\x22\x15\x2d\x7e\x05\x82\xd4\x83\x78\xe7\x9c\x85\xb3\x81\ \x66\x20\x14\x12\x6d\x2d\x16\xe0\x56\x5b\x6a\x81\x61\x90\x3c\x82\ \xa8\x3c\x9e\x5d\x4f\xf4\xee\x3b\x61\x9e\x7d\xfb\x4d\x3a\xf5\xd9\ \xeb\xe8\x10\x4c\xdf\x33\x2d\xf2\x2d\x8b\x84\x1d\x6f\x3b\x30\xf4\ \xd0\x1f\x89\x0d\x10\xd9\xd1\x66\x08\x2d\x1c\xb7\x12\x5b\x85\x24\ \xad\x4e\x94\x5b\x4f\x4b\x00\xf1\x2d\x9f\x1a\x19\x49\x7f\xbf\x50\ \x28\xf6\x0a\x82\x51\x2d\x10\x15\x43\x8b\x3a\x13\x70\x2a\x2c\xcf\ \x87\xa9\xd0\xf0\xc2\x8d\xca\xbc\xe3\xd1\xfb\x20\x37\x8b\x0a\x2e\ \x1f\x4b\x50\xd1\xb4\x5b\xff\xd5\x46\x74\x4c\xa6\x7b\x29\xdb\x76\ \x6c\xa2\x63\x8c\x45\x33\x74\x00\xeb\x0e\x6a\x8c\xee\x0a\xb0\xbd\ \x28\xd2\xcf\x46\x73\x26\x4a\xe2\x3d\x6b\x75\x01\x7d\x30\xb2\x5c\ \x0b\x38\x5c\x0b\x14\x8b\x64\x73\x7d\xce\xa9\x90\xba\x1b\x18\xb6\ \x7e\x64\xf5\x71\xb7\x06\x3b\xe7\xba\xdd\xa0\xb7\xd6\xf5\x7c\xd7\ \xb5\x1d\x8f\x73\x20\x7c\x11\xe8\xe1\x02\x1d\xe7\x02\x8b\x41\x90\ \xd3\x02\xa8\x54\x6b\x61\x2a\x5c\xb7\x8e\x4c\xbd\xb7\x5f\xa1\xc9\ \xce\xeb\xd5\x84\xd0\x69\xe2\x9d\xcf\xf7\x70\x83\x68\xae\xb7\x1b\ \x20\x0e\xb0\x00\x8c\xb5\x58\x80\x00\xbc\x13\xa8\x05\xd0\x87\x9b\ \x17\xd4\x02\x75\xd4\xfa\x6e\xa9\x44\x16\x6f\x8a\x5c\xb7\x9b\x70\ \x2f\xad\x1b\xc6\x2a\x82\xe9\xd6\x78\x37\xf1\xfe\x83\x22\x22\x60\ \x5b\x20\xec\x21\x80\xc8\x0d\x4e\xe3\x60\xc4\x97\xd2\x8f\x49\x69\ \x73\x2d\xb0\x1e\x1b\x9e\x06\xbb\x01\xb6\xab\x62\x61\xa1\xb7\xf6\ \x99\x70\xff\x6e\x10\x8d\x7b\xb9\x41\x8f\xe7\x41\x5c\x95\xc4\x3d\ \x83\xe0\x4a\xbb\x42\x6c\x41\x8b\x3a\x13\x6c\xda\x79\x3e\x55\x51\ \xbe\x26\xb2\x59\x0e\x34\x5d\x90\x8c\xd6\x6b\xa2\x5e\x41\x6f\xd5\ \xe0\x26\xa3\xfb\xd1\x35\xa3\xc7\x0e\xb0\x2b\x28\xe2\x1a\x02\x18\ \xbc\x6d\x62\x62\xf3\x1a\x04\x10\x05\xc2\xba\x10\x8b\xfa\x88\xfc\ \x5c\xe4\xfa\x2a\x34\x9f\x58\xbf\x5e\x9f\xf9\x77\x47\xeb\xce\xb9\ \x55\x48\xa9\x7e\x35\x01\x75\x13\x8f\xc6\x2d\xef\x8a\x1e\x31\x80\ \x5a\x2c\x70\xd0\xb6\xf7\xaf\x49\x00\xda\x02\x50\x0b\x2c\xc1\x6d\ \x54\x0d\x9f\x42\x55\x57\x99\x9f\x57\x81\x90\x84\x68\x27\xbd\x1a\ \x71\x4d\xb8\x9d\xd4\x4a\x7d\xf4\xdc\x5a\xac\x81\xe7\x7a\x90\xe7\ \x16\x37\x0c\x15\x08\x7b\x06\x41\x89\xc6\xc1\x42\x97\xc3\x95\xd6\ \x73\x81\x7c\x3e\x4c\x85\xd8\x17\x18\x52\xf2\xa2\xd6\x16\x08\xf5\ \xb8\x67\x36\xe8\x5d\x10\x51\x0f\xad\x77\x36\xcc\xee\x69\x2a\x5b\ \x9c\x75\x10\x04\xdc\x12\x04\xa0\x8b\x21\xa7\x50\xa0\x7a\xa5\xc2\ \x16\xa0\xbf\xd4\x3b\x10\x76\x8d\x35\xe9\xde\xd9\xa0\x37\xf1\x6e\ \x61\xea\xac\x85\x8d\x9c\x82\x0f\x38\xbe\x2f\xc8\x34\xe7\xf8\x09\ \x6e\x12\xad\xa7\x00\x74\x2d\x50\x68\xad\x05\x2a\x55\xaa\x3b\x0e\ \x79\xd5\xaa\x3a\x29\x16\x98\xa3\x5e\xda\xd7\x56\xd2\xcb\x12\x7a\ \xa4\x41\x5d\x56\x2b\x62\xf8\x5d\x0f\xbd\x27\x84\xf4\xd9\x5a\x13\ \x89\xc0\x1a\x48\x0a\x3b\x95\x96\xf6\xf0\x90\x4c\x8e\x8e\xd1\xe0\ \xe4\x84\x1c\x9d\xde\x44\x53\xbb\x76\xc8\xbf\xb8\xf3\xcb\xd7\xfd\ \xdb\xbb\xef\xbe\xdc\xb3\x0e\x58\xf1\x60\xc4\xf3\xe6\x5a\x6b\x01\ \xe5\x17\x70\x83\x18\x52\xa1\x5c\x5a\xea\x26\xdd\x87\x1b\xb8\x4d\ \x8d\x79\x00\xf7\x0e\x88\x41\x63\x81\x88\xc7\x03\x23\x91\x10\x46\ \x26\xc3\xff\x78\x52\x9d\x1d\x0c\x8c\x8f\xcb\xd1\xc9\x49\x63\x64\ \x7a\xda\x1e\x99\x18\xb7\x6d\x3b\x66\x99\xf8\x9f\x6d\xd9\x14\x8b\ \xc5\xc8\xb6\x2d\xf4\x71\xe2\xeb\x64\x32\x49\x43\x58\xe7\x79\x93\ \x93\x15\x08\xa0\xce\x9c\x7a\xd4\x01\xdd\x81\xf0\x78\xa3\x31\x2b\ \xf0\x8e\xfe\x23\xc9\xe4\xf6\x19\x6a\xa0\x18\x4a\x8e\x8d\x91\x80\ \x00\x56\x7b\x11\xef\x68\x2d\x69\x73\x64\x0d\x0a\x11\x12\x63\xad\ \x09\x99\x4a\x49\x2b\x93\x31\x6c\xa4\xd5\x01\x6c\x89\x33\xe3\xe3\ \xe6\xf0\xf4\x94\x99\xc9\x66\x6d\x32\xd4\xc6\xc2\xe6\xe5\x5a\x96\ \x45\x71\x45\x0e\x24\xe3\x71\x35\x8e\x27\xb8\x8f\x87\xa4\x63\x98\ \xb7\x63\xfc\x9c\x7a\x06\x02\x61\x01\xa8\x67\xd2\xa9\x34\xed\x3f\ \x77\x52\xe9\xad\x67\x29\xbc\xd2\xae\x10\x59\xa0\x02\x12\x15\x14\ \x43\x19\x95\x0a\x77\xec\xc0\xb6\xf8\xb8\x0a\xa7\x8b\xb5\x5a\xe8\ \x67\x78\x36\xb0\xac\x40\xc4\x62\x42\x26\x12\x52\x0e\x0c\x48\x99\ \xce\x20\x58\x8e\xc9\xc4\x86\x73\xcc\xd4\xf8\x46\x63\xdd\xe4\xa4\ \x3d\x38\x3a\x66\x41\x55\x26\x2f\xce\x34\x94\x43\x92\xc9\x8b\x06\ \x4c\x1e\x9b\x26\x19\x80\x26\x8c\x7b\x21\x69\xc0\x62\xe0\x1e\xae\ \x19\xea\x59\x0d\x7d\xe4\x87\x79\x7e\x57\x83\x05\xa4\xe6\x26\x92\ \x99\x18\x6e\xf7\xda\x0e\xaf\x9e\x0a\xf9\x8f\x24\x49\x21\x32\xae\ \xe3\xd1\xb6\xa9\x29\xf9\xea\xf1\x13\x1e\xcd\xcc\x48\xfb\xe2\x0f\ \x1b\xa3\x9b\x36\xd9\x03\x83\x83\x26\x7e\xc8\xd4\x0b\x64\xad\x60\ \xac\x34\x80\x59\xb2\x15\x19\x73\xf9\xf8\x1b\xd4\x31\x0e\x78\xcc\ \x8b\x57\xe0\xb5\x99\xfc\x0e\x34\x0c\xe8\x39\x75\xf8\xc9\x82\x37\ \x00\x7c\x97\x63\x11\xf7\xfc\x0c\x93\x0c\x85\xd8\xfc\x5d\x34\xbe\ \xd6\xd9\x2c\xdc\xc5\xd6\xeb\x6e\xcc\x94\xa9\x35\x9c\x08\x75\x67\ \x82\x1a\x8a\xa1\x11\x29\xa7\x38\xf2\x9f\x29\x14\xbc\x89\xcf\x7d\ \x1e\xe7\x22\x23\x94\x49\xa7\x40\x32\xc1\x0b\x51\x84\x41\x45\xbd\ \x26\x98\x8c\x8e\xe2\x18\xa3\x0f\x17\x69\x59\xbc\x78\x8c\x2d\x40\ \x11\x6c\x03\x04\xa2\xc7\x9a\x84\x7a\x3e\x11\x5a\x85\x26\xac\x35\ \xdd\x9a\xba\x59\x30\x3c\xd7\xf6\x0d\xbe\xae\x17\x8b\x65\xcb\x13\ \x99\x35\x6c\x87\xa3\x5a\x40\x5b\x40\xa5\x79\x2e\xb0\x1e\x01\xe5\ \xe4\x9e\x7d\xd6\xa6\xe9\x69\xca\x8e\x8d\x92\xdd\xd4\x34\xb1\x16\ \x0c\x93\x3b\x6d\xaa\x9a\x44\x44\x8e\x11\x04\xbc\xd0\x30\xa5\x3a\ \x2e\x6b\x57\x2f\x58\x43\x9b\x34\xa3\x6d\x8e\xdf\xd1\x42\x40\x6b\ \x8e\xb5\x40\x57\x2e\xf3\xf9\xdb\x8d\x7c\xbe\x4a\xc2\x4f\xb3\x71\ \xf4\x6b\x01\x2c\x00\xb5\xf3\x09\x3c\x4f\x66\xa6\xa7\x51\x06\x8c\ \xd0\xf0\xf0\x30\xff\x78\xf3\xbb\xa1\xf6\x74\xbd\x00\x62\x7a\xcc\ \xe0\x7b\x0a\xda\x2c\xd1\xba\xc9\x47\xd0\x1a\xe6\xbe\x6d\x0c\xa2\ \xda\x0a\xf8\xdd\xd0\xc4\x9b\xbb\x52\xad\x71\xfd\x8c\x16\x4a\xe5\ \xf4\xa9\x1a\x1e\x4c\xaf\xc1\x02\xba\x53\x61\xc9\xf7\x95\x00\x6a\ \xae\x1b\x0c\x25\x93\x76\x22\x9e\x20\x5d\x1b\x60\x31\x6d\x64\xb5\ \x00\x22\xd2\x91\x70\xb4\x56\x5b\x7d\x94\x7b\x4d\x46\x2f\x5e\x9b\ \xb4\xe3\x38\xfa\x0f\x20\xda\xf4\xbb\x02\x1d\xe6\x75\x1c\x50\xdf\ \xd1\xef\xeb\x00\xb9\xf8\xea\x2b\x0d\xc3\xf3\xfa\xb6\x00\xd1\xfc\ \x17\x23\x73\xfc\xb6\x67\xdb\x42\xfd\xa8\x69\x68\xcd\x6a\xad\x69\ \x82\xda\x2c\x79\xac\x89\x30\xb4\x50\x34\xda\xde\xd1\x66\xaf\xef\ \xe9\x6b\xf4\xfa\x5b\x3c\xcf\xdf\x60\x8d\xab\xf9\x0c\x6a\x83\x81\ \x81\x01\x95\xeb\x13\xcd\x38\xd4\xd9\x1a\xa5\x62\xc3\x39\x72\x78\ \xc4\xf5\x7c\xd9\x87\x05\x44\xa9\x10\x07\x23\x67\x78\x11\x3e\x56\ \x8d\x42\x43\x93\xd3\xd2\xd7\x5a\xd4\xda\xd7\x64\x3b\x03\x9b\x16\ \x4e\x9b\x26\x75\xd3\x04\xb5\xf6\xf4\xb3\x3a\x23\x74\xb6\x72\x3e\ \xef\xce\xbe\xf3\x4e\x3d\x7f\xf4\xa8\x53\x3a\x79\xc2\xaf\x9e\x99\ \x95\x41\xa1\x60\x58\x8d\xba\x3d\x20\x45\x7c\xc8\x8e\xa5\x32\xa9\ \x64\x32\x96\x88\x0f\xbf\x9e\x5b\xfc\xd7\x3e\xb2\x40\x94\x0a\x4f\ \x39\xce\x82\x90\x92\x3d\x3b\xd0\x8b\x6e\xd5\xa8\x16\x82\xd6\x1a\ \x34\xd2\xb5\x68\x5c\x6b\xb4\xa5\xaf\xd6\xc6\xef\x71\x2b\xe6\x72\ \xce\xe9\x23\x47\xea\x0b\x47\x8e\xb8\x85\xe3\xc7\xfd\xf2\xe9\xd3\ \xd2\x59\x58\x30\xfc\x62\xd1\x36\x1a\x8d\x44\xdc\xf7\x53\xb6\x69\ \xc6\xf1\x8d\xb8\x0a\x90\x86\x51\x0b\x4c\xa3\xe4\x1a\x0a\x05\x60\ \x09\xa2\x9c\x43\xd1\x75\xe8\xe9\xd3\xb3\x4f\xbe\x9d\xcf\x1f\xeb\ \x57\x00\x3a\x13\x34\xea\xbe\x5f\xf2\xa4\x8c\x6b\x72\xda\x84\x5b\ \xcd\x55\x43\x13\x5d\xa9\x15\x66\x67\x9d\x1c\xc8\x2d\x1d\x3b\xe6\ \x2c\x1e\x3d\xea\x57\x67\x67\x79\x97\xb9\x4c\x2e\x21\x44\xca\x84\ \x2c\x08\xc0\xef\x35\x1c\x29\x4b\x7c\x28\x83\x5a\xa4\x58\xc7\xd6\ \x9c\xff\x0d\x63\x59\x88\x7c\x01\x9b\xb4\x3c\x14\x73\xd4\x75\xe7\ \x30\x5f\x67\x57\x65\xe8\xcc\x05\xd4\x80\x02\x50\x0c\xe7\xfb\x17\ \x80\x0b\xd4\x71\x40\x7a\x6c\x7c\x71\x71\x47\x12\x02\xb0\x59\x83\ \xb6\xdd\x45\x12\xe4\x1a\xb9\x43\x87\xea\x79\x90\xc3\x5f\x7f\x83\ \x0a\x6b\x0e\xe4\x44\xa9\x14\x53\x9a\x13\x22\xcd\xe4\x02\x64\xd9\ \x86\x10\x7e\x43\xca\x4a\x93\x9c\x22\x56\xf1\xfd\x7c\x11\xc4\x16\ \x7c\x3f\x87\x12\x7c\x1e\x3b\xd1\x32\x13\xea\x20\xc7\xf0\x5b\x10\ \xb4\xf7\x7a\x1c\x3d\xab\xab\xc0\x1e\x02\x58\xb5\x16\x70\x80\xd2\ \x7b\x8d\xc6\x4b\x9b\x97\x96\xf6\xbe\xf4\xe0\x83\x8b\x89\x7a\xd5\ \x3c\x35\x9f\xaf\xe1\x80\x54\x82\x9c\x6d\x36\x1a\xc9\x18\x8a\x5f\ \xfe\x16\x6f\x64\x80\x3a\xff\x59\xad\x2e\x65\xa1\xe6\xfb\x4b\x15\ \x68\xac\xe8\x79\x0b\x8b\x38\x66\x3f\x89\xcd\xd5\x82\xeb\x96\x34\ \xa1\x3e\x88\x31\x04\x20\xcf\x06\xdc\xfa\xfe\xbf\xce\x42\x00\x26\ \x85\xe6\xb8\x11\x52\xda\x7e\xf3\xe4\xe4\x1f\x6f\x4c\x26\x77\xa7\ \xd2\x29\xff\x8d\xb9\xdc\x4f\xaa\xa8\x0f\x4a\x40\x1e\xc4\x70\x80\ \x9a\x3b\xe3\xba\x8b\xdd\xa4\x80\xde\xa4\xb8\x17\x8c\x1e\xe4\x28\ \x1a\x77\xb7\xd5\xc8\xf6\x2b\x00\x2d\x04\x1b\x5d\x1a\x18\x05\x86\ \x81\x18\x20\xce\x46\x5b\x6b\xd4\x18\x7d\x30\xc4\x3e\x78\x01\x18\ \xe8\x2c\x26\xde\x84\xa1\x6b\x84\x5f\x2e\x62\xfd\xb7\xff\x05\xc7\ \xfd\xe7\xdb\x23\x5d\x13\x38\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x13\x17\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xec\x00\x00\x06\xec\ \x01\x1e\x75\x38\x35\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ \x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x12\x94\x49\x44\ \x41\x54\x78\xda\xed\x9b\x09\x90\x5c\x47\x79\xc7\xff\xdd\xef\x9a\ \x73\x67\xf6\xd2\xae\x56\xbb\xba\xbd\xb2\x84\x0e\x0b\x1b\x51\xb2\ \x1d\x0a\x6c\x8e\x40\x9c\x40\x48\x0a\xca\x54\x80\x70\xe4\xa8\x8a\ \x53\x60\x08\x15\x8a\x22\x45\x48\x02\x14\x47\x01\x45\x05\x63\x28\ \x53\xa9\xd8\xd8\xb1\x62\x82\x6d\x8e\x02\x0c\x54\x30\x92\x15\x09\ \xc9\x96\xac\xd3\xd2\xae\x76\x25\x4b\x7b\x68\xaf\x99\xdd\xd9\x9d\ \x79\xf3\x8e\xee\x7c\xaf\x5f\xc7\x33\x7b\x69\x25\xb0\x1c\x57\xa1\ \x4f\xfa\xeb\xeb\xd7\x3b\xf5\x66\x7e\xff\xef\xeb\x7e\x6f\x34\xb3\ \x4c\x4a\x89\xdf\xe5\xe0\xa4\x6b\x06\x5c\x33\xe0\x9a\x01\xd7\x0c\ \xb8\x66\xc0\x35\x03\x5e\xfa\x60\x51\xe0\xff\x39\xae\xca\x7d\x00\ \xbb\xee\x73\xad\x46\xd2\x79\x95\x44\x78\x13\x24\xef\x92\x12\x79\ \xce\xd1\x68\x9a\x46\x63\xd2\x36\x9a\x52\x09\x33\xcf\x18\xcf\x80\ \x49\x37\x0c\x51\x0c\x05\x0a\xbe\x2f\x0a\x55\x5f\x4c\x54\xaa\xfe\ \xf8\xb6\x75\xa9\x83\x87\x1f\xff\xab\x7b\xf1\x12\x84\xf9\xdb\x97\ \x11\x0c\xaf\xf8\xda\x2d\x8d\x59\xeb\x35\x89\x84\xb5\xa3\x54\x0e\ \xb6\xb7\x2c\x6f\x59\x99\x72\x2c\xa4\x93\x26\x32\x29\x0b\xd9\xb4\ \x85\x5c\xc6\x42\xc2\x31\x60\x5b\x06\x4c\x83\xc3\x88\xc4\x59\x86\ \x31\x64\x00\x74\x0a\x01\xb8\x5e\x88\x3d\x87\xc6\x83\xa1\xbe\x5f\ \x5a\x00\x5e\xde\x06\xb0\x1b\xee\x5d\xd1\xdd\x95\xff\x9b\xed\xef\ \xb0\xdf\xdd\x37\x90\xeb\x5c\xd7\xd5\x00\xce\x01\xc7\xe6\x24\x03\ \x09\x3b\x86\xa5\x63\x3d\xa6\xf9\x48\xb6\xa9\xc6\x96\xc9\x94\x11\ \x8c\x01\xa1\x00\xaa\x04\xbf\xef\xe8\x04\x5a\xf3\xe1\x91\xde\xfd\ \x67\x72\xa0\x78\xd9\x19\xc0\x5e\xf7\x4b\x33\x17\x0e\xbf\x6d\xd3\ \x9a\xdc\x5d\xc9\x64\xc3\xad\x4d\x8d\x0d\x46\xa1\x54\xc5\xaa\x8e\ \x26\x30\x82\xb1\x6d\x05\x1c\x03\x92\x6c\xc7\xd0\x63\x03\x96\x1d\ \xcf\x99\x26\x87\x11\xc9\x60\xaa\x7d\x04\x24\x02\x21\x31\xed\x4a\ \x4c\x56\x8c\xca\xc9\xbd\x8f\x77\x02\x38\xff\xb2\x33\xc0\xda\xf9\ \xdd\xd7\x6e\x5f\x9b\xbf\x2f\x9f\x6d\x5f\x37\x34\x56\x41\x7b\x6b\ \x0e\xe3\xd3\x8c\x40\x12\x90\xdc\x80\x50\x30\x1c\x81\x34\xc0\x25\ \x03\x17\x1c\x2c\xe0\x90\xe0\x08\x49\xbe\x60\x70\x7d\xc0\xe0\x91\ \x24\xb1\x4b\x48\x09\x25\x3f\x94\x38\xda\x57\x46\x02\x13\xc7\x67\ \x4a\x85\x9b\x40\xf1\xb2\x31\x80\xdd\xf2\xe8\xb2\x5c\x22\xf9\xd5\ \x1b\x36\xb4\xdd\x79\x71\xc2\xc5\xc8\xa4\x4f\x00\x16\x38\x67\x08\ \x25\x00\x82\x05\xc1\x8a\x00\x04\xca\xe0\x4b\x0e\x2f\x8c\x2a\xcd\ \x60\xfa\x24\x83\xc5\xd0\x06\xc0\x19\x03\xe7\x50\xf0\x00\x53\xf0\ \x42\x4a\x94\x5d\x81\x54\x32\x39\xf5\xd4\x4f\x1f\xee\x06\x38\xc0\ \xf8\xcb\xc3\x00\x76\xf3\xcf\xb7\xb4\xe6\x1a\x7f\xd1\x90\xb6\x5a\ \xcf\x0c\xfa\x04\x61\x13\x0c\x83\x90\x04\x24\x19\x01\xc5\xe3\x80\ \x80\x0d\xca\xbe\xe0\xe0\x3e\x08\x32\x12\x81\x2b\x78\x46\xc0\x0c\ \x94\x94\x50\x77\xe5\x13\x92\x91\x00\xd7\xe3\xc8\x89\x9e\xd3\x9e\ \x57\xbd\x09\x64\x2e\x98\x81\x28\x3e\x73\xf3\xcd\x2b\x66\x86\x87\ \x1f\x19\xef\xef\x3f\x2c\x81\x43\x9c\x64\x03\x47\xbf\x26\x65\xf5\ \x6a\x1b\x40\xf0\xbb\x77\x80\x27\x7e\x5c\xaa\xf2\xa6\x42\x59\x2a\ \x78\x53\x30\xbd\x7b\x03\x66\x54\x51\xc9\x09\x54\x57\x56\x12\xa8\ \x40\x04\x4b\x42\x2c\x30\x5d\xcc\xd8\x84\xfa\x90\x32\x9e\xf7\x42\ \x89\xed\xeb\xec\xb1\x1f\xdd\xbf\x6b\x73\x0d\x9e\x44\x91\xe4\xfc\ \xb3\x76\x5b\xdb\xce\xd6\x15\x2b\x76\x7a\xd3\xd3\x70\x4b\x25\xb8\ \x53\x53\xc1\x47\xd3\xe9\x43\x7e\xb9\xfc\x98\x00\x1e\xff\x57\x29\ \x8f\xbf\xe8\xf7\x01\xec\xf7\x7e\xdd\x0d\x66\x1c\x04\x43\xb6\x6e\ \x76\x56\xd6\x70\xaa\xc2\xbc\x2e\x73\x65\x80\x56\xfc\x40\x95\x05\ \xe2\x6a\x0b\x11\x29\x5a\x3e\x92\xb2\x44\xf7\x0a\x0b\xd6\xe4\xbe\ \x83\x87\xf7\x7e\xef\x26\x05\xcf\x38\x28\x3f\xfe\x8d\x2d\x85\x4f\ \xd2\x39\x0e\xe5\x57\xad\x32\x79\xf4\xd8\x30\x44\xe8\x79\x4a\x81\ \xeb\x62\x66\x6c\x0c\xa5\xc1\xc1\x28\x9f\x71\xa7\xa7\xff\x0b\xc0\ \x3d\x5f\x92\xf2\xdc\x8b\x63\xc0\xeb\x8e\xff\x84\xd2\x9b\x66\x41\ \xb3\x7a\x23\x2e\x31\x66\x97\xff\x73\xc7\x62\xf8\xe3\x9d\x7c\xf0\ \xe1\x7b\x3e\xd2\x4e\xe0\xfc\x05\x03\x38\x7f\xfc\xdf\xb6\x15\x13\ \xcb\xb7\x6d\x7b\x53\xaa\xa5\x05\x22\x82\xae\x54\x40\x55\x87\x4f\ \x39\xa0\xac\x8f\x95\xca\x64\xc6\xe4\xb9\x73\x81\x5b\x2c\x3e\xc4\ \x84\xf8\xfc\xa7\xa4\x3c\xf1\x1b\x2f\x01\x76\x5b\xff\x1f\xc1\x48\ \x12\xfc\xd5\x8f\x1d\x1b\x4c\x3c\xf3\x3f\x3f\xba\x08\x6e\x76\x28\ \x78\x70\x44\x79\x67\x93\x68\xc9\xe7\x72\x37\x37\xe4\xf3\x90\x42\ \xc0\x64\xd1\xd2\x33\x60\x58\x16\xcc\xa8\x13\x48\xc1\xff\x49\x08\ \x38\x4d\x4d\x68\x48\x26\x4d\x32\xe0\x3d\x33\x83\x83\xef\xfe\x22\ \x63\x0f\x13\xd8\x5d\x77\x4b\x39\x71\xe5\xef\x05\x0c\xf1\xa7\x58\ \x34\xd8\x8b\xa6\xe6\x2c\xc7\xca\xe6\xa0\xff\xf4\xb3\x4f\x6e\x07\ \xb3\x00\x66\x02\xdc\x52\x7a\xdf\x3a\xb9\xb9\xa1\xa9\x89\x85\x13\ \x13\xf0\x49\xa2\x50\x00\x68\xfd\x73\xaa\xb6\xe9\xba\x30\x7d\x1f\ \x16\xc1\xdb\x11\xbc\x94\x48\x02\x48\x32\x86\x6c\x22\x81\xd6\xe5\ \xcb\xd9\xb2\xf6\xf6\x3b\x93\x86\x71\xf4\x9b\x8c\xbd\xe1\xca\x37\ \x41\xc9\x6e\x04\xd8\x6f\x7c\x5f\x7c\x39\x61\x19\xc0\x6b\xb6\x5a\ \x78\xf2\x89\x07\xcb\x0a\xba\xb6\xf6\xf1\x86\x65\x21\xd6\x58\x7e\ \xce\xa0\x16\x97\xd1\x9a\x8f\xaa\x0f\xa8\x4e\x00\x41\xb3\x20\x00\ \x27\x03\x98\xe7\x29\xf1\x6a\x15\x06\x1d\x0b\x9a\xd7\xdd\x01\xdb\ \xb6\x91\x68\x6c\xec\x08\x8a\xc5\x9f\xde\xcf\xd8\xa7\xde\x23\xe5\ \x3f\x5f\xbe\x01\x8c\xad\xfc\x4d\x0d\x58\x1a\x9c\x61\xeb\x5a\x13\ \x5b\x56\xb3\x99\x91\xe1\xa1\xc3\x17\xce\x9e\xb8\x45\x19\xa0\x5b\ \x9f\x73\x13\x7f\x7d\xbd\x07\xa3\x58\x06\xfc\xf8\x7a\x2a\xb4\xa9\ \x4c\xc6\x3b\x28\xd3\x26\x48\x12\x27\x03\x84\xef\xc7\x46\x91\x11\ \x26\x29\xa4\xb1\x3a\x8e\x1e\x63\x59\x8c\x8c\xf9\xa7\xef\x31\x56\ \x7a\xbb\x94\x5f\xbd\x3c\x03\x44\x70\x0e\xdc\x7e\x05\x5e\xc4\xb0\ \x4d\x46\xd0\x1c\x5b\xd7\x18\xd3\xbd\xfd\x43\xa7\x1f\x7c\xf8\x99\ \x0d\x5d\xcb\xcc\x3c\xd8\xec\xea\xbf\x77\x8d\x40\xdb\xf8\x05\x84\ \x53\x53\xe0\xa6\xa9\x3a\x4a\x72\x0e\xae\xaf\x9b\x4a\x64\x80\xd4\ \x42\x5c\x79\x95\x8d\xc8\x0c\xea\x1a\x83\x96\x89\x88\x96\x09\x1d\ \x2b\xc3\xa0\xe2\xcb\x4f\x30\x36\xf4\x46\x29\x77\x2d\x6d\x40\x50\ \x2c\xc1\x5e\xb6\x64\x7b\x2f\x1d\x8c\xc0\x11\x41\x63\xcb\x2a\x3e\ \xdd\x7b\x6e\xe8\xf4\x77\x76\x1d\xda\xe0\x07\xc1\x2b\x09\x96\xc0\ \x1c\xa9\xaa\xaf\xe1\x13\x06\xc7\x07\xbb\x09\xec\xbf\xcf\xa8\x0d\ \x8f\x93\xf4\x6d\x23\x0c\xe8\xd0\x5d\x00\x82\xa6\x2a\x2b\x50\x10\ \xb0\xa4\xca\xf3\x48\x35\xe0\xb9\x99\x31\x32\xe1\xc7\x8c\x3d\xf6\ \x66\x29\xab\x97\x36\xa0\x74\xba\x19\x2d\xed\x1e\x00\x1b\x60\x57\ \x04\xac\x93\x06\xe7\xd8\xb2\x92\x4f\xf7\xf4\x0f\x9f\x7e\xe0\x3f\ \x0f\x5d\x1f\x04\x82\xc0\x39\xc0\x13\x0a\x3a\x84\x49\x39\x92\xa1\ \xf4\xf1\x2d\x0c\x89\xa7\x7e\x0e\xb7\xb7\x17\x1a\x5c\xc9\x27\x31\ \xe8\x3d\x40\x8b\x49\xa9\xe6\x8c\x39\x5b\x33\xe6\x1f\xd7\xe7\x8e\ \x0c\xf0\x01\x00\xf7\x2c\xb1\x04\xaa\xd7\xc1\x1b\xdd\x03\xa7\xfd\ \xd6\xcb\x02\x06\x66\x5d\xd7\xb7\xae\x66\xd8\xbc\x8a\x97\x7a\xce\ \x0e\xf5\x3c\xf0\xc8\xb3\x1a\xdc\xc0\xac\xcd\x0e\x1c\x42\x9a\x1c\ \x7a\xae\x25\x61\xe0\x5d\x6b\x25\xa6\x1f\x3d\x86\x14\x50\xdf\xba\ \x98\x21\x25\xe7\xc1\xe8\xbc\x18\xf0\xe2\xa6\xdc\xb9\xb4\x01\xdc\ \x01\x26\x8f\xec\x40\xeb\xb2\x13\xe0\xe6\xa6\xc5\x80\xe7\x83\x43\ \x81\x9f\xee\x1b\xea\x7d\xe0\x91\xe3\x04\x1e\x12\xb8\xa9\xab\xa9\ \x85\xda\x58\xc8\xd0\x89\x0d\xb0\xf0\xc5\x9d\x16\xda\xb6\xad\x41\ \xc3\xfb\xdf\x8f\xd2\xc3\x0f\x43\x96\xcb\x2f\x00\x0c\x91\x12\xaa\ \xda\x2f\x4a\xb4\x2e\xbd\x07\x18\x0e\x10\xc2\xc6\xe8\x2f\x96\x37\ \xaf\x7d\xe3\xb1\xf1\x19\x73\xf3\xa2\xe0\x36\x03\xbd\x6e\x6c\xea\ \x44\xe9\x54\xdf\x85\xfe\x07\x1e\x39\xd5\x1d\x04\x72\xbb\xaa\xb4\ \x41\x70\x52\x90\x02\x40\x90\x64\x08\x1a\xe8\xb9\x10\xfe\xd4\x64\ \x13\xfd\xa3\x9e\x6f\xef\xd3\xfd\xe8\x5a\xd5\x80\x1d\x7f\x70\x07\ \x52\x3b\x77\x62\xea\xbe\xfb\x50\xdd\xbf\x1f\x13\x00\xce\x92\x9e\ \x27\xa5\x49\x59\x52\x86\x94\xd7\x62\xb8\xb2\x28\x02\x4d\x4b\xde\ \x0a\xb3\x57\xff\x40\x22\xac\x02\xc2\x85\x69\x04\x6e\xd0\x78\xfb\ \xb3\xe9\x74\xea\xd5\x33\x6e\x7d\xc5\x63\xf0\x8d\x2b\xc2\xe9\x53\ \xbd\xe7\xcf\x1f\x38\x7c\x66\x5d\x18\x4a\x1b\xc2\x05\x44\x05\x08\ \x23\xcd\x90\xaa\x75\x9b\x27\xd3\xe3\x58\x2d\xe9\x69\x77\xec\xe2\ \x40\x22\x32\xeb\x6d\x23\xbf\x42\x8b\x37\x81\xfc\x96\x1b\x70\xc7\ \xbb\xfe\x04\x37\x6d\x5e\x0b\xef\xa9\xa7\xf0\xab\x6f\x7e\x13\x63\ \x85\xc2\x82\x3d\x68\xe9\x72\xb6\x20\xa6\xe2\x58\x3a\xf6\x00\x07\ \xfe\x4c\xca\x1d\x97\x36\x60\xe7\x13\x52\x1b\xa0\x55\x95\xd7\x6f\ \xe8\xde\x5f\x4d\xbe\x62\xcd\xc5\x49\xde\x76\x03\x81\x5f\x4f\xe0\ \x27\x4e\xf6\x0f\x1d\x38\xd2\xbf\x3a\xac\x4e\x5a\x08\x26\xe3\xc7\ \x4a\xe8\x16\x67\x7a\x5c\x03\x9e\x3b\xd7\xe8\x14\xbd\xc2\xf8\x45\ \x3b\x32\xe0\x9d\xc3\x3f\xc7\xb2\xea\x18\x04\x24\x42\x00\xcb\xb6\ \x6e\x9c\x7c\xd3\x7b\xdf\x69\x74\xac\xec\xcc\x9c\xfe\xd6\xb7\x30\ \xf8\xb3\x9f\x5d\x72\x21\x9a\xa4\x0e\x52\x27\xc9\xc6\xe2\xf1\x61\ \xe0\x17\x8f\x4a\xf9\xfa\x4b\x1b\x70\xcb\x93\x92\xa0\x81\x50\xc1\ \x93\x5c\x35\xb6\x2d\x39\xfd\xd6\xdf\xbf\x75\x60\xa4\x50\xb6\xf6\ \x1c\xe8\x59\x19\x56\xa7\x4c\x04\xa5\x79\xd5\xd5\x9a\x33\x37\xdf\ \x8c\x9c\x39\xea\x4f\x16\xc7\x2d\xc0\xc4\xbb\x07\x7f\x88\x76\x77\ \x34\x32\x80\x04\x84\x94\x07\x10\xa0\x65\xf3\x86\xe0\xad\xef\x7d\ \x17\xeb\x12\x81\xf1\xdc\x57\xbe\x82\xca\xf0\xf0\xa2\x46\x30\xad\ \x36\xd2\x4a\x52\x02\xb3\x63\x0c\x28\xbe\x03\x48\xf6\x48\x99\x58\ \x7a\x13\xd4\xd7\x5c\x3d\x50\xf2\xfc\x6a\x66\x7a\xf8\x40\xe7\xa9\ \x3e\x99\x0e\x2b\x25\xfd\xae\x2d\x15\x83\x31\x00\xb2\x76\xe9\x8a\ \x83\x2f\x0c\xaf\x0d\x90\xbc\x04\xf0\x34\xc9\x80\x03\x13\x49\x30\ \x08\x25\xa0\x80\x10\x06\x8d\x27\x8e\x9d\x36\xbf\xfd\xb1\x7f\x44\ \xdb\x96\xeb\xc3\xb7\xfc\xed\x87\xd0\xd9\x73\x8a\x0f\x3e\xf6\x18\ \xf3\x8a\xc5\x05\x4d\xd0\xa0\x28\x90\x56\xeb\xae\xd0\x11\x7c\x16\ \xd6\xd3\x19\x88\xdb\x97\xde\x04\x79\xa2\x0e\x5c\x67\xe1\x83\xaa\ \x4d\x29\x6d\x05\x22\x0d\x98\x99\x39\x40\x57\x38\x86\x80\x80\x0d\ \x98\x91\x81\x26\x1c\x52\x02\x5c\xc1\x07\x91\xd9\x90\xda\x10\x28\ \x15\x8e\x3e\x67\x7c\xe7\xe8\x67\xb1\x6c\xcb\xc6\xf0\xcd\x1f\xff\ \x04\xd6\x8f\x8f\xf2\x81\x5d\xbb\x58\xe5\xf9\xe7\xb1\x58\x5c\x20\ \x4d\x93\xd6\x91\xee\x45\x62\x5f\x05\xec\xf6\x2c\x02\xa8\x58\xba\ \x03\x64\x9d\x77\x53\xf1\x86\xc6\xcd\xa8\x2e\x3c\x60\x29\xc0\x08\ \xe7\x54\x96\xcf\x69\x77\x3e\x07\x5c\x46\x7f\xe3\xac\x25\x85\x23\ \xe3\x67\x8f\x0d\x48\x6a\x03\x26\x10\xc0\xa2\xb1\xa1\x97\x83\x54\ \x99\x45\x59\x19\xf1\xe0\xc7\xff\x05\xad\x5b\x37\x85\x7f\xf8\xd1\ \x8f\x61\xbd\x5f\x35\x86\x1e\x7a\x08\x93\xcf\x3c\xb3\xe0\x5d\x4a\ \x25\x99\xc4\xe7\x2b\x62\xcc\x83\x7d\x6b\x16\x21\x04\x0c\x30\x0a\ \x49\x71\xe9\xcb\x20\xa4\x92\x82\x07\xa3\xb9\x14\x25\x03\x92\xd9\ \x2c\x40\x64\x80\xa8\x01\xab\xcc\x6b\x63\x15\x6c\x76\x07\x49\x12\ \xc3\xac\x39\x21\x38\x60\x64\xd5\x79\x2d\xdb\x81\xe3\x5b\xf0\x45\ \x08\x57\x32\x24\x04\x87\x50\xc8\x40\xa8\xb3\xa8\xcb\x53\x47\x4e\ \x1a\xf7\x7f\xe8\x93\x68\xdd\xb6\x29\xbc\xe3\x2f\x3e\x88\xed\x77\ \x67\x8d\xe1\x07\x1f\xc4\x38\x6d\x96\x32\x0c\xc1\x1d\x07\xc3\x9e\ \x1f\xec\x66\x59\x0f\xa8\xb6\x78\x90\x48\x13\x7c\x58\x63\xf6\x17\ \x34\x80\xcc\x31\x70\xfb\x19\x7d\x2f\x50\x06\x98\x45\xe3\x34\x65\ \x53\x49\x70\x2e\x95\x01\x26\x16\x00\x17\x80\x9c\x05\x59\x4b\xac\ \x56\x79\xc6\x38\x72\x59\x07\xd9\x95\x67\xf9\xf9\x0d\x5f\x07\xeb\ \xdf\x86\x7c\x49\x56\x93\x70\x9c\x29\xcf\x85\x15\x98\x30\x24\xc1\ \x4a\x42\x15\x0a\x5a\x65\x01\xd2\x1c\x23\x4a\xcf\x9e\x34\x1e\xbc\ \xeb\x13\x68\xde\xba\x51\xdc\x71\xd7\x07\xe4\x8d\x77\xdf\x6d\x0c\ \xef\xda\x85\x27\x4f\xf5\x54\x2f\x1c\xeb\xb7\x5a\xdc\x20\x55\x81\ \xa1\x1e\x1d\x92\x32\xe0\xa0\x48\x13\xe7\xa4\xee\x02\x98\x35\x78\ \x45\x91\x56\x40\x32\x88\x97\x82\x29\x55\xeb\x23\x24\x89\xa8\x03\ \x04\x42\x9e\xa5\xf9\xd9\xa0\xb5\x2a\x2f\x54\xf9\x48\xea\xfc\xc8\ \x65\x6c\x34\xae\x1d\x01\x5f\xbf\x07\xd5\x65\x07\x4d\x24\x0e\x81\ \x75\x1f\xc2\x0f\x6e\x58\x66\xbd\x7e\x4f\x13\xf2\xbb\x4d\x64\xc6\ \x5d\x50\xf1\x20\x94\x01\x80\x50\x26\x48\x1a\xeb\x63\xc8\x59\x86\ \x48\x52\xe9\xc8\x29\xfe\xd0\x5f\x7e\x0c\x4d\x64\x84\x63\x04\x41\ \x43\x71\xc6\x69\x4a\x25\x51\x81\x1b\xbf\x06\xcf\xc7\x34\x24\x9c\ \xb8\x0d\x9b\xf5\x1d\xb6\x3f\xcb\x00\x3d\xce\x93\x74\xdb\xdb\xba\ \xf2\x5a\x64\x82\x60\x2e\x42\xe9\x00\x5c\x43\x83\xcd\x06\x55\xa1\ \x8d\x90\x52\x57\x1c\x04\x6e\x21\xb7\x7a\x08\x7c\xdd\x41\x84\xd9\ \x01\x54\x05\xe0\xf9\x02\xb0\xa0\xe4\xa6\x05\xdf\x73\x7b\x09\x89\ \x9d\x1c\x1b\xf7\x25\xb0\x72\x77\x0a\x95\x02\x19\x11\x90\x11\x61\ \x0c\x2c\xd5\xb2\xd1\x63\x49\x63\x59\x1b\xab\x63\x30\x4c\x93\x11\ \x99\xee\xe5\x3c\x99\xb4\x11\xb7\x89\x54\x99\x51\x96\x41\x6c\x9e\ \xbe\x77\x1a\x5e\xcc\x80\x56\x30\x56\x9b\x36\x74\x07\x08\x65\x82\ \x5a\x8f\x82\xd9\xb3\x61\xa3\x21\xc7\xbc\xca\x33\x03\x68\x48\xdb\ \xc8\xad\x3a\x0f\xb6\x66\x5f\x0c\x1e\x02\x41\x55\xc2\x0f\x24\x08\ \x0d\x70\x30\x2b\xdc\x94\xc0\xa1\xdb\xca\x38\x41\x46\x6c\xde\x97\ \xc4\xaa\xbd\x69\xb8\x13\x51\x47\xf8\x11\xac\x86\x86\xee\x0e\x0d\ \xae\x40\xc5\x0b\x86\x24\x6c\x0b\x29\xc7\x89\xc1\x69\x0e\x42\xab\ \x2c\xe1\x89\x10\x14\x0d\x24\x63\xa1\x3d\xc0\x8a\x3b\x80\xe9\xc2\ \xc6\x15\x56\x24\x3c\xa1\xc6\x7e\xe0\xaa\xe3\xf9\xff\x3f\x20\xeb\ \x8a\xcf\x90\x4d\x73\x34\x74\x9d\x05\x5b\xbd\x17\x41\x7a\x00\x41\ \x08\xf8\x33\x92\x32\xc1\x87\x42\x19\x20\x24\x4d\x5a\x50\x26\x94\ \x11\x20\x2b\x6c\xf2\x3b\x3e\x67\xd5\x16\x78\xfa\x35\x33\x38\xf6\ \x2a\x8e\x2d\x4f\xa7\xb1\x66\x6f\x12\xd5\x42\x15\xbe\x1f\x10\xeb\ \xec\xea\x0b\x95\xd5\xf2\x50\xc7\x8e\x63\x43\x75\x80\x36\xa0\x5e\ \x46\xd9\x13\x90\xea\x59\xf9\x3c\x03\xf4\x24\x91\x4a\x2c\x6c\x82\ \x03\x2f\xe4\x34\x5e\xf8\x1e\x4c\x81\x67\x4c\x64\x57\xf4\x01\x5d\ \x7b\x10\xa4\x06\xe2\x4a\x97\x22\x68\x0d\x1f\xc4\x2f\x16\x20\xd9\ \x5e\x44\x0e\x91\x92\xe8\x61\x45\x8c\x99\x2e\x3a\xbd\x0c\x72\x01\ \x19\xa1\xcf\x5b\x35\x05\x0e\xee\x28\xe1\xe8\x36\x86\xad\x87\x33\ \x58\xbf\x3f\x09\xaf\x58\x55\x7b\x84\xea\x88\x08\x1a\x22\x36\x41\ \x2b\x99\xa0\x0e\x48\x38\x60\x02\x1a\x5c\x73\x48\x60\x4a\x88\x49\ \x54\x10\x00\x10\x8b\x5d\x06\x05\xaa\x43\x13\x70\x3a\x9a\x74\x95\ \x67\x99\xe0\x4b\x4b\x8d\xeb\x42\x81\x67\x52\x26\x32\x1d\x04\xde\ \xb1\x07\x5e\x62\x20\x86\x9d\x22\x68\x55\x6d\x20\x14\x42\x9f\x27\ \x04\x8c\x0a\xd0\x78\x02\xc8\x9f\x04\x26\x24\xe0\xc6\x97\xba\x71\ \x54\x50\x60\x2e\x1a\x99\x85\xce\x4a\x0a\x39\xdf\xaa\x75\x04\xe9\ \xc0\xa6\x2a\x8e\xac\x63\xb8\xe1\x78\x16\xdd\x87\x93\x74\xfe\x80\ \x0a\x22\x5e\xe8\x08\xa8\xac\x0d\x48\x39\x0a\xbc\x26\xa9\x0c\xa9\ \x7a\xee\x79\x00\x25\x52\x30\xcf\x00\x3d\x39\x8d\x99\x33\xe7\x90\ \x58\xd1\x04\x39\x77\x43\x03\xc1\xf0\x1a\x38\xe7\x0a\x3c\xdd\x76\ \x06\xb2\x8d\xc0\x9d\x0b\xb5\x8a\x07\x71\xd5\x75\x5f\xc6\x86\x1b\ \x33\x31\x74\xc3\x73\x00\xf7\x01\x3f\x2a\x09\x00\x7d\x53\x29\x01\ \x6d\x84\x87\x82\xe5\xa3\x51\x18\xe8\x9a\xb6\x91\xf3\x0c\x70\x05\ \xc1\xe0\x01\xd8\xbf\xb6\x8c\xc3\x5d\x1c\xdb\x4f\xe5\xb0\xf1\x64\ \x06\x7e\x19\xf0\x24\xf4\x72\x10\x64\x80\x8d\x54\x52\x1b\x80\xb8\ \xf5\xa1\x3b\x61\x64\x26\x3c\x00\x60\x6c\xc1\xfb\x00\x3d\x39\x81\ \xe9\x13\xc7\xd0\xfc\xda\xed\xca\xb2\x59\x26\x00\x55\x5f\x2a\xf0\ \x74\x92\x5c\x5e\xd6\x0b\xd9\xb2\x1b\xae\x15\x55\x5c\xe8\x8a\x4b\ \x84\x24\x40\xc1\x6b\xf0\x32\x41\x9f\x20\x9d\xaa\x81\x57\x01\x4c\ \x92\x5c\x52\x1f\xa9\x61\x21\x23\x02\x14\xd2\x01\x1a\x39\x47\xd7\ \x24\x43\xde\xd5\x9f\x3d\x02\xb1\x11\x5d\x33\x38\xdc\x4e\x46\xf4\ \xe5\xb0\xb9\xa7\x11\xbe\xb4\xc9\x08\x03\xb6\x41\x45\x89\x0c\x00\ \xf4\x12\x60\x0a\x7e\xc8\x75\xcf\xee\x2a\x5e\xfc\x0f\xc5\x08\x04\ \x8b\x19\x30\x8a\xb3\xf7\x7d\x1f\xed\x6f\x7f\x0b\x9c\xf6\xe6\xb9\ \x26\xf8\x21\x60\x27\x27\xd1\x7c\xdd\x5e\x54\x93\xbd\x98\xae\x96\ \x51\x75\x43\x9a\xd7\x55\x96\x75\xe0\x5c\x83\x67\x4e\xd7\xc0\x3d\ \xdd\x80\x2e\x6a\x11\xea\x9a\x14\xb4\x09\xa9\x7a\x23\x80\x71\x43\ \xa0\x90\x07\xf2\x15\xa0\xb3\x08\xe4\x5c\xc4\x4b\x43\x02\x15\x84\ \xd8\xb7\x6a\x1c\xcf\xad\xa8\xe0\xc6\x63\xcd\x58\x35\xd9\x04\xce\ \x39\x12\x8e\xa5\x0c\xe0\x92\x04\x46\x45\x11\xde\x03\xc3\xe7\xbf\ \xa0\xed\x2e\x2d\x78\x2b\x4c\x73\x82\x31\x36\x05\x6f\xf4\x38\x9e\ \xfb\xe4\xd7\xb1\xf5\x1b\x9f\x00\xb3\xcc\x7a\x13\xbc\x40\xca\xc0\ \x18\xc2\xc5\xf1\x43\x70\x8c\x75\xc8\xa7\xb2\x90\xf6\x08\xa6\xc3\ \x22\x66\xfc\x69\x04\xc2\x8f\x5b\x3d\x43\xe0\xa9\x08\x3c\x88\xfb\ \xd3\xd7\xef\x4c\x3c\x2c\x1e\x81\x5e\xec\x05\x6d\x42\x72\xb6\x11\ \x13\x06\x50\x6c\x02\x72\x15\xa0\xab\xc4\xd1\x11\x64\xd0\xe1\xe5\ \x90\x1c\x91\xe8\x2d\x8d\xe2\x38\x2b\x61\x83\xdd\x06\xcb\x30\x24\ \xe7\x2c\xba\x12\x28\xf8\x6a\x10\x7a\x0f\x0d\x9c\xfb\xf2\xa1\xc9\ \xc2\x2f\x01\x5c\x24\xf9\x97\x7a\x33\xe4\x91\x86\x30\xf2\xd3\x9f\ \xe0\xfc\xbf\xaf\xc7\xca\x0f\xde\x09\x70\xa6\x4d\x88\x37\x34\x3a\ \x0c\xbd\x00\x2e\x3f\x85\x49\x5f\x22\x65\xb5\xa0\xd1\x5e\x87\xd5\ \x0d\x5c\xb6\xb5\xf7\x4a\x2f\x39\xc8\x47\x2b\xc0\x68\xb9\x11\xe5\ \xe8\x83\xcb\xc9\x32\x84\x27\xb0\x60\x30\x2c\x18\x7a\x89\x28\x13\ \xac\xa4\x85\xb4\x93\x46\x73\xb2\x19\x4d\xc9\x26\x91\x43\xc3\x70\ \xa5\x38\x53\x1e\xee\xbb\xd0\x74\xfe\xe2\x40\x53\xa6\x12\xef\xf0\ \xcd\x3c\x03\x87\x2a\x6f\x70\x0e\x93\x71\x44\x31\x63\xb0\xd2\xa7\ \x9f\x3e\xf4\xf9\x1f\x9f\x3b\xf7\x43\xfd\x06\xb1\x22\x29\x16\x35\ \x40\x77\x41\x09\x40\x0f\x4e\x7d\xfa\x1e\x54\x47\xa6\xb1\xfe\x23\ \x7f\x0e\xe6\xd8\x60\x80\x1f\xea\xfb\x5a\x11\xaa\x04\x29\x50\xc6\ \x19\x94\x13\xdf\xc7\x40\xa2\x97\x25\x7c\x03\xd7\xd9\xd7\x8d\x6c\ \xcc\x6d\xc4\x6d\xcd\xb7\xa5\xda\xd3\xed\x4e\x73\x43\xb3\x59\x0d\ \xaa\xcc\x0d\x5c\x94\xbd\x32\x66\xaa\x33\x98\xaa\x4e\xa1\xe4\x96\ \x30\xe5\x4e\x51\xc5\x2c\x64\x9d\x2c\x92\x56\x12\x29\x3b\x85\x84\ \x95\x80\x63\x3a\xb0\x0d\x5b\x8a\x40\x84\xe3\xa5\x71\x6f\xa4\x32\ \x52\xee\x2f\xf5\xbb\x3d\x17\x7a\x1a\xc7\xa6\xc6\x3a\xe0\x23\xde\ \x0f\xf2\x40\x83\xcd\xd0\x56\x62\x90\xe0\x48\x70\x1b\xb6\x61\x84\ \x64\x82\x75\xf8\xe2\xe8\x91\x7f\xd8\xbd\xf7\x2b\x07\x86\x47\xf7\ \x01\x18\x24\xcd\x48\x8a\xcb\xfb\x78\x9c\x31\x8b\x52\x8e\xb4\x16\ \xad\xaf\x7f\x23\x36\x7d\xee\xc3\xb0\xdb\x9a\x4d\x7f\xc8\x0d\x32\ \xa5\x04\xb2\xf7\x03\x56\x19\xc8\x1c\x03\xb2\xbd\x34\x0e\x48\xba\ \xa2\x7e\x9d\xb5\x24\x27\xe1\xa0\x23\xd1\x21\x3a\x8d\x4e\xd1\x68\ \x37\xca\x8c\x9d\x61\x79\x3b\x2f\x73\x66\x8e\x35\xd8\x0d\x08\xc2\ \x00\xc5\x4a\x11\x85\x4a\x41\x96\xaa\x25\x4c\xba\x93\x6c\xa8\x32\ \xc4\x2e\x94\x2f\x18\x85\x72\x21\x3e\x5f\xa0\xd7\x01\xaf\x7b\x0e\ \x2d\x16\x90\x3c\xa0\x79\xc2\x7a\xf6\x73\xe5\x1b\x8d\xce\xce\x16\ \xf3\x91\xbe\xfe\xef\x7e\xfb\x59\xf5\x11\x7f\xbf\x5e\x54\xd5\xa8\ \xb8\x57\xf0\x45\x49\xfd\xce\x90\xf0\x48\xed\x30\xb2\x1b\x71\xfd\ \xa7\xde\x87\xa6\x5b\x77\x22\x3b\x98\x42\xfb\xdf\xa7\x90\xee\x07\ \x6c\x05\x1e\x87\xd0\xd9\xaa\xc1\xc3\xaa\xcb\x86\xce\x24\x15\x41\ \x9d\x7c\x0d\xe8\x2f\x31\xa7\x8d\x50\x21\x6b\x3f\xd3\x7b\xcc\xa3\ \x78\x02\x9f\x41\x1c\x45\xd2\xb8\x7e\xd3\x13\x48\x8a\x2b\xfe\x8a\ \x8c\x94\x32\x54\x9b\x22\x50\x45\x58\x2a\xe0\xf8\xdf\xf5\x23\x7f\ \xd3\x2a\xac\x3f\xde\x8d\x55\x95\x2f\x80\xe9\x17\x13\x90\x58\x1d\ \x28\x27\x19\x5a\x7c\x4e\xd6\x52\x21\xb5\x84\x9e\x93\x3a\xcf\x9b\ \xd3\xc7\x5c\x4b\xd4\x81\xd7\x63\x71\x35\x7b\xaa\xee\x55\x85\xaa\ \xea\xbf\xcd\x97\xa4\xf4\x09\x2a\x64\x84\x47\x79\x0a\xc5\x83\xcf\ \xa3\x01\x36\x84\xde\xa8\x78\x0d\x5a\x4b\x03\xcf\x85\x5e\xc2\x00\ \x39\xe7\xb8\x06\x3d\x5f\x4c\xe7\xfa\x02\x08\x25\x5b\x43\x57\x5e\ \xdc\x2f\x4b\xeb\x6e\xd0\x27\x2e\xe1\x24\x7e\x8d\x7e\x7c\x0d\x33\ \x18\x9c\x0b\xba\xc4\xf1\xa2\xaa\x19\x37\xcf\xcc\xa5\x4d\x90\x70\ \x31\x41\xcd\xff\x3c\xee\x8d\x66\xa2\xb8\x6a\x5f\x96\xa6\x73\x73\ \xfd\x21\x4d\x3b\x69\x0d\xb6\xe0\x76\x6c\xc2\x5b\xd0\x89\x6e\x24\ \x60\xc3\x9a\xb7\xf6\x6b\x32\x17\xd8\x03\xfc\xd9\x59\x8f\x97\x3e\ \xf6\x20\x09\x7a\x04\x17\xb0\x1b\xc7\xf1\x18\x5c\x9c\xd0\x97\xb9\ \x22\xf1\xf8\x57\xcb\x80\x7a\x13\x1c\x6d\x44\x63\xbc\x49\x62\x39\ \xb6\xe1\x55\x58\x87\x57\x62\x05\x36\xd0\x51\x3b\x1c\x18\x57\x6c\ \x80\x7f\x89\xb9\x22\x8a\x84\xdc\x87\x21\x1c\xc1\x69\xec\x47\x01\ \x7d\xfa\xc6\x66\xb4\x76\x7f\xa9\x37\xbc\xab\x66\xc0\x7c\x23\x4c\ \x6d\x46\x52\xdf\xd1\xe7\x95\x29\x49\xb4\xa0\x9b\xec\xe8\xc4\x1a\ \xb2\xa2\x03\xcd\x68\x27\x35\x23\x8d\x04\x92\xb0\x55\xaf\x18\xda\ \x16\x17\x02\x15\xf8\x2f\xa8\x0c\x0f\x93\xf4\xa7\x40\xb8\x13\x18\ \x24\xbc\x73\x78\x9e\x60\xc7\x30\x00\xa0\xa0\x55\x24\x95\xf5\x4e\ \xe4\x91\x84\x06\x7f\xe9\x7f\x5f\x40\xaf\xb9\x48\x46\x9d\x21\x36\ \x29\x51\xbb\xa9\x55\x39\x51\xd7\x0b\x86\x16\xab\xdb\xfa\x82\x5a\ \x56\x60\x95\x08\x52\xe7\x19\x0d\x4a\xd2\xbd\xb1\x14\xf4\xd5\x37\ \x60\x69\x43\x16\xd9\xce\x50\xcb\xda\x80\x38\x44\x2d\xab\xb9\x50\ \x8f\x43\x2d\xb9\x10\xf0\xcb\xc9\x80\xa5\x8d\xb9\xcc\x50\xa0\x2f\ \x51\x5c\xfb\xd5\x59\xe0\xda\x6f\x8d\x5d\x33\xe0\x9a\x01\xbf\xc3\ \xf1\xbf\x9d\xd2\xae\xe2\x5a\xef\x69\x4e\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ \x00\x00\x1b\x48\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xec\x00\x00\x06\xec\ \x01\x1e\x75\x38\x35\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ \x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x1a\xc5\x49\x44\ \x41\x54\x78\xda\xcd\x7b\x0b\x5c\xcf\xf7\xf7\xbf\xf9\xee\xc6\x30\ \x14\xdb\xd7\xfd\x32\x66\xc6\x66\xc3\xd8\xec\x8a\x51\x51\x2a\x42\ \xae\xb9\x35\x84\xb9\x33\x86\xe6\xba\x94\x6b\xc9\xa5\x74\x2f\x11\ \xa9\x24\x95\x8a\xe4\xbe\xdc\x72\x0b\x45\x49\x4a\x4a\xf7\xcb\xa7\ \xcb\xe7\xf9\x3f\xcf\xd7\x47\xf3\xdd\x77\xdf\xff\x77\xfb\x7d\xc7\ \xf0\x78\x9c\xf5\xde\xfb\xf3\x7e\x9d\xf3\x3c\xe7\x75\x5e\xe7\xf5\ \x7a\x9f\x73\xde\x35\x00\xfc\x65\x5a\xbf\x7e\xbd\xbe\x87\x87\xc7\ \x48\x77\x77\x77\xcb\xad\x5b\xb7\xb6\x5f\xb0\x60\x41\xcd\xff\xf6\ \xfc\xa6\x4d\x9b\x6a\xb9\x07\x44\xce\xf1\x39\x7a\xcf\xca\x3b\x26\ \x65\xa2\x47\x40\xf8\x4f\x32\x76\xd2\xce\x9d\x3b\xad\x5c\x5c\x5c\ \xc6\x0a\x4d\x12\x9a\xbc\x63\xc7\x0e\x5e\x8f\x70\x75\x75\xed\x2d\ \xfc\x9b\x71\xec\xd3\xa6\xbf\x34\x38\x28\x28\xa8\xf6\xee\xdd\xbb\ \x8f\x87\x87\x87\x17\x47\x47\x47\xe3\xe8\xd1\xa3\x90\xbf\x15\xb1\ \xb1\xb1\x5a\xf9\x2d\xf3\xc0\x81\x03\x39\x01\x01\x01\x09\xfb\xf7\ \xef\x4f\x15\xba\x11\x12\x12\xf2\xe0\xd0\xa1\x43\x05\x31\x31\x31\ \xda\x5b\xc9\x77\x50\x5c\x56\xa9\xe8\xc6\xad\x64\xc8\x18\x35\xf6\ \xd4\xa9\x53\x88\x88\x88\x28\x38\x71\xe2\x04\xc2\xc2\xc2\x1e\xc9\ \xb3\xfc\x5b\x10\x19\x19\x09\xa1\x22\xe1\x1b\xb7\x61\xc3\x86\x56\ \x2f\x84\x01\xbc\xbd\xbd\x03\x05\x60\x85\x28\x19\x2b\x33\x64\x2d\ \xb3\x38\xd5\xc7\xc7\x67\x9d\xbf\xbf\x7f\xe0\xae\x5d\xbb\xa2\x45\ \xe1\xdb\x02\xf8\x4a\x58\x70\x60\x8e\xb7\xdd\x92\x87\x7b\xf7\x05\ \x95\xee\xda\x1d\x58\xe6\xe2\xb9\xb7\x6c\xf9\xd6\xb0\xf2\xb9\xce\ \xa7\x2a\xe7\x6f\x3b\x53\xb9\xd6\x3d\xae\x6c\x93\x67\x4c\xe1\x36\ \x8f\x43\x99\xde\x1e\x81\x57\xc3\x67\x98\xaf\xda\xe3\xb0\x6c\xa2\ \xf0\x1c\xec\xe7\xe7\x37\x55\xe4\xcc\x17\x9e\xbb\xf6\xed\xdb\x77\ \x4e\x8c\x53\x29\xc6\xaa\x14\x6f\x19\xf2\x5c\x0d\x20\xb3\x50\xff\ \xd8\xb1\x63\x5a\x01\x75\xea\x3f\xfd\x7e\xd2\xb0\x51\x97\x63\x03\ \x1a\x6e\x3a\x32\x50\x2f\x39\x66\x60\x43\xed\xd1\xc1\x4d\x71\x39\ \x25\x1f\x57\xd3\x0a\x90\x78\xaf\x08\xc9\x19\x45\xb8\x9d\x49\xd2\ \x5d\x27\x09\xdd\xb8\x57\x88\xab\x77\x0b\x70\x6d\x58\x6b\x24\x98\ \xbc\xa5\xfd\xc5\x50\xff\x97\xf3\x06\x7a\x0b\xe3\xfb\xe9\x75\xa8\ \xe6\x2b\x4b\xac\x63\x70\x70\x70\x8a\x78\x5d\xce\x73\x35\x00\xd7\ \xac\xb8\x6c\x95\xa7\xa7\xa7\x55\xf5\xbd\xab\xfd\xeb\x35\x8c\x37\ \xd2\x5f\x15\x6f\xa0\x77\xfb\xe2\x80\x46\xb8\x36\xb8\x09\x6e\x8d\ \x68\x89\x3b\x56\xef\x20\xcd\xe6\x43\x64\xe7\x97\x21\xb7\x50\x83\ \xfc\xe2\x72\x14\x94\xe8\xa8\xb0\xa4\x82\x7f\xd5\xbd\xdc\x22\x0d\ \x72\x0a\x34\xb8\x3f\xf3\x63\xa4\x59\x77\xe0\x38\x8e\x57\x7c\xce\ \x0d\x68\x7c\x9b\xbc\x29\x43\x8c\x1e\x15\x17\x17\xa7\x7d\xae\x06\ \x10\x97\xdc\x2d\x6b\x1c\x02\xa6\xd9\x49\x8b\x66\xb5\xe2\x0d\xf4\ \x17\x9d\x33\xd0\x2f\xb8\x6c\xfa\x36\x6e\x5a\xb6\x40\xca\xf8\x76\ \xb8\x3f\xf5\x7d\x3c\x9c\xd5\x05\x39\x0b\x7b\x20\x6f\x65\x5f\x54\ \x54\x56\xa1\xb2\x4a\x8b\x2a\x92\x56\x0b\xad\x22\x5e\xab\x7b\xfc\ \x4d\x3d\x93\xb7\xd6\x08\xb9\xb6\x5f\x72\x1c\xc7\x93\x0f\xf9\x29\ \xbe\x97\x4c\xdf\x2e\x88\x99\x63\x71\xed\x60\x70\x60\xf1\x73\x35\ \x80\xaf\xaf\xef\x51\x59\x9f\xda\x0b\x03\xdf\x9a\x28\xca\x3f\xa0\ \xe2\xb7\x46\xb6\xc2\xdd\x49\xef\xe2\xc1\xf7\x1f\x20\xe7\x07\x51\ \x7a\x45\x6f\x14\x38\x0c\x40\xd1\x96\x21\x28\x71\xb3\x42\x59\x05\ \x50\xa2\x01\x8a\x84\x0a\xcb\x74\x54\x50\xaa\xfb\x5b\x24\x54\x2c\ \xf7\x4b\xcb\x85\x7c\xbf\x43\x89\xcb\x48\x8e\xe3\x78\xf2\x21\x3f\ \xf2\x25\x7f\x25\xe7\xfc\xf0\x76\xda\xf3\x06\x0d\x27\xec\xb1\xa8\ \xf1\x8f\xe7\x62\x00\xb7\x2d\x9b\x6e\x6e\x75\x72\xc2\xa5\x81\x8d\ \x38\x33\x0a\x58\xd6\xcc\x0f\xf1\x68\xc9\xe7\xc8\xb7\x33\x50\xe0\ \x4b\xdd\xc7\x42\xe3\x3f\x19\x15\x41\xb3\x50\x19\xb9\x04\x0f\x0b\ \x81\x07\x05\x40\x46\x3e\x70\x3f\x0f\x48\x57\xa4\xbb\xce\x10\xca\ \x94\xfb\x59\xf2\x4c\xd5\xd1\x15\xa8\x0a\xff\x81\xe3\x38\x9e\x7c\ \xc8\x8f\x7c\xc9\x9f\x72\x28\x8f\x72\xb9\x34\xae\x9c\x37\xaa\xdf\ \xf2\x6f\x35\xc0\x39\xc3\x06\x9f\x3b\xaf\x58\xa4\xdd\xb0\x7e\x3d\ \x6e\x5b\xb5\x45\xe6\xf4\xce\x78\xb4\xf8\x53\x9d\xe2\xce\x43\x51\ \xe6\x33\x11\x15\xfb\x67\xa2\x2a\x62\x11\x10\xb3\x0c\x88\x5e\x02\ \xed\xe1\x1f\x71\xfb\x21\x90\x94\x05\xdc\x7c\x00\xdc\xc8\x04\x12\ \x9f\x90\xba\x77\x4b\x7e\x4b\x96\x67\xb4\x11\x0b\x80\xc8\x85\x1c\ \xc7\xf1\xe4\x43\x7e\xe4\x4b\xfe\x94\x43\x79\x94\xab\xe4\x27\x98\ \x35\xcd\x25\xa6\xbf\xc5\x00\xbf\x18\xea\x4d\x3c\x6f\xa8\x5f\xe1\ \xb2\x6a\x11\xdc\x76\x6c\x45\xf6\xdc\x8f\x65\x7d\xf7\x41\x91\xd3\ \x60\x94\x79\x4f\x50\xb3\xa6\x7d\xac\x34\x22\x45\x91\xb0\x19\x40\ \xd0\x04\x68\x03\x46\xe0\xd2\x3d\xe0\xc2\x5d\xe0\x5c\x2a\x10\x9f\ \x02\xfc\xf2\x84\xd4\xbd\xf3\xf2\xdb\xc5\x34\x40\xeb\x63\x02\xec\ \xb6\xe0\x38\x8e\x27\x1f\xf2\x23\x5f\xf2\xa7\x1c\xca\xa3\x5c\xca\ \x57\x01\x33\x71\x58\xf3\x0a\x62\x7b\x66\x06\x90\x47\x5f\x3a\x6b\ \xa0\xb7\xe9\x82\x91\xbe\x8a\xcc\xbe\x9b\xed\x10\x12\x1c\xa4\xd6\ \x68\x89\xeb\x28\x94\xef\x9d\xc6\x59\xd6\x29\x1e\x31\x0f\x08\xf9\ \x4e\xa7\x84\xdb\xd7\xc0\xe6\x0e\xa8\x5a\xd3\x08\xc7\x93\x80\x63\ \x37\x81\xa3\x37\x80\x23\x42\x31\x89\x5a\x44\x5f\xd7\xf2\x5a\x51\ \xac\xfc\x76\xfc\x16\x50\xb1\xec\x75\x60\x65\x5d\x8e\xe3\x78\xf2\ \x21\x3f\xf2\xad\xf6\x26\xca\xa3\x5c\x25\x3f\x67\x51\x4f\xa4\x4f\ \xe9\xa8\x70\x9d\x35\x6c\xb4\x89\x58\x9f\xba\x01\x4e\x19\x34\xb6\ \xbb\x38\x40\x1f\x49\x12\x80\x32\xa6\x75\x82\xff\x16\x3b\xec\xf7\ \xf7\x56\xb3\x51\x19\x3a\x57\xb4\x59\xaa\x73\xdb\x03\x53\x00\xff\ \xc1\xc0\xb6\xee\xc0\x9a\x86\xa8\x5a\x5c\x03\x9a\x85\x35\x51\xb4\ \xe0\x0d\x04\x9e\x2b\x83\xff\x99\x12\x78\x9f\x28\x82\x47\x5c\x21\ \xdc\x8e\x15\x28\x72\x97\x6b\x2f\xb9\xe7\x77\xaa\x18\x7b\xe3\x4b\ \x51\x30\xaf\x0e\x4a\xe6\xfe\x83\xe3\x38\x9e\x7c\xc8\x8f\x7c\xc9\ \x9f\x72\x28\x8f\x72\x95\xfc\xc2\x4d\xa6\x78\xb4\xf4\x0b\xe2\x52\ \xf8\x4e\x19\x35\xb6\x7b\xaa\x06\x38\x6d\xa8\x37\xe2\x82\xa1\x1e\ \x99\x73\xdd\xa9\x2d\x2a\xd8\xcf\x1d\xe1\x07\xf6\x73\x7d\xea\x66\ \x3d\x7c\x36\xb0\x77\x24\xe0\xda\x0b\x58\x5d\x1f\x95\x8b\x5e\x42\ \xe9\xfc\x9a\x28\x9c\xf5\x32\xb2\x6c\xea\xe0\xe6\xc4\x36\xd8\x28\ \x67\x97\xb5\xa1\x59\x58\x15\xf4\x00\x3f\x05\x66\xc0\x76\x5f\x06\ \x96\xed\xbd\xaf\xae\x57\x06\x65\xe2\xe7\x90\x2c\xac\x0f\xcb\x46\ \xe2\x84\x36\xc8\x9c\x5c\x17\x79\x33\x5e\xe1\x78\xf2\x21\x3f\xf2\ \x25\x7f\xca\xa1\x3c\xca\x55\xf2\x35\xbb\xbe\xe3\x92\x20\x2e\xe2\ \x53\x38\x89\xf9\xa9\x18\xe0\xac\x91\x7e\xb7\x73\x06\x7a\xe5\x37\ \x2d\x5b\xd2\xc2\x14\xa2\x22\x72\x58\xa0\x3f\x0e\xf8\xb9\x00\x51\ \xe2\xf6\xa1\x36\x80\x9f\x09\xb0\xa1\x2d\xaa\x7e\xac\x81\xb2\xc7\ \x8a\xdf\x9b\x5c\x1f\x97\xc6\xb6\xc1\xa9\x51\x9d\x71\x7a\x54\x27\ \xcc\xf1\xbe\x8b\x99\x3b\x2e\x6b\xa7\xd9\x47\x95\x58\x2d\xd9\xf5\ \xd0\x74\x86\xd3\x6d\xb3\xe9\x4e\xb7\xc7\x2d\xf1\xcb\xb6\xb1\x8f\ \x2c\x9d\xb1\x2d\x41\x3b\xd3\x33\x85\xcf\xaa\x31\x17\xc7\xb4\x45\ \xea\xc4\x06\xc8\x9d\xf6\x2a\xf9\x91\x2f\xf9\x53\x0e\xe5\x51\xae\ \x92\xaf\x8d\x5a\x02\xcd\xee\x29\xc4\x45\x7c\x0a\xe7\x75\xcb\x96\ \xe5\xc4\xfe\x97\x0c\x10\xdf\x5f\xff\x9f\x67\x0c\xf4\xb3\x13\x87\ \x36\xe3\x1a\x53\x5b\x50\x91\xa3\x39\x72\xbd\xac\x71\x3c\x2e\x0e\ \xe1\x5e\x1b\x80\x10\x6b\xc0\xa3\xaf\x9a\x9d\xf2\x1f\x5e\x42\xf1\ \x9c\x7f\x20\x6b\x6a\x6d\x9c\x1d\xd5\x16\xc7\x2c\x3b\x2a\x8a\x1b\ \xde\xae\xd2\x75\x60\xbb\xb4\x6f\xbe\xec\x73\xe0\xe3\x8f\x3f\x76\ \x16\x5a\x2f\xb4\xea\xa3\x8f\x3e\x5a\x4a\xe2\x35\xef\xf1\xb7\xde\ \x5f\xf5\x3e\xb0\xd5\xa8\x5d\xca\x91\xa1\xed\x2b\xaa\xc7\x9f\x19\ \xf9\x0e\xd2\x27\xd5\x41\xde\xf4\x57\xc8\x9f\x72\x28\x8f\x72\x75\ \xf2\x0f\x2f\x62\x80\xa4\x11\x88\x8f\x38\x15\xde\x04\x8b\xe6\xd9\ \xd4\xe1\x7f\x36\xc0\xf1\xfe\x8d\x4e\x5f\x31\xfb\x27\xf7\x5c\x75\ \x10\x29\xdc\x38\x08\x65\x7e\xd6\x38\xed\xb7\x06\x91\x11\x11\xb8\ \xea\xbb\x10\xd8\xf9\x25\x60\xfb\x0a\x34\x0b\x64\xd6\x67\xbe\x8c\ \xd4\x49\xf5\x70\x74\xf8\x3b\x88\x1e\xd6\x0e\xe1\x43\xda\x94\x2c\ \xeb\xd3\x2e\xbe\x6b\xd7\xae\x1b\x44\xb9\x39\xa2\xec\x10\xb9\xfe\ \xec\x43\xdd\xbf\x76\x5d\xba\x74\x69\x4a\xe2\x35\x6f\xf0\x37\x3e\ \xc3\x67\x39\x66\xda\x57\x1d\x8f\x1f\x1c\xdc\xa6\x98\xbc\xc8\x33\ \x79\x5c\x7d\xe4\x4c\x7d\x8d\x72\x28\x8f\x72\x75\xf2\x83\x27\x01\ \x51\x8b\xe9\x09\xc4\x47\x9c\xc4\xab\x70\x9f\x19\xd4\xe4\xf4\xff\ \x64\x80\xb8\x7e\xfa\xc6\x8c\xf8\xc9\x63\xda\x20\x7b\xce\x47\xc8\ \x5f\x6b\x88\x52\xcf\x71\x28\x0d\x5b\x8c\xa8\x88\x30\x84\xca\x12\ \xd0\xee\xfc\x1a\x58\x56\x53\xb9\x66\xfe\xf7\xaf\xe0\xfa\xb8\x06\ \x38\x64\xd1\x06\x91\x16\xad\xb4\x73\xbe\x69\x7f\x56\x94\x58\x2b\ \x0a\x0e\xa7\x72\xa2\x94\xbe\xd0\x2b\x7f\xe4\x92\x7c\x86\xcf\x72\ \x0c\xc7\x92\x87\xcd\x97\x1d\x4e\x46\x0c\x69\x5d\x45\xde\x97\x47\ \xeb\xe1\xe1\xe4\xd7\x28\x8f\x72\x29\x9f\x3b\x05\x3d\x81\x31\x81\ \x07\x28\xe2\x24\x5e\xe2\x56\xf8\xe3\x0c\xdf\x36\xfe\xbf\x19\xc0\ \xb6\x46\xcd\xe3\xfd\x1b\xa7\xca\xde\xaa\x5b\xf7\xcb\xbf\x91\xa3\ \xe9\x08\x54\x84\xcc\x46\xd4\x3e\x0f\x99\xfd\x70\x9c\x71\x9e\x0c\ \x2c\x7f\xfd\x57\xe5\xcf\x8f\xd6\x47\xc8\xe0\x96\x08\x1d\xdc\x5c\ \x63\xdc\xb3\x93\xb7\xcc\xe4\x58\x51\xa4\xb3\xd0\xeb\xff\xeb\x29\ \x8d\x63\xc9\x83\xbc\x8c\x3e\xe9\xec\x15\x6a\xde\xa2\x92\x32\xce\ \x8e\x68\x84\xac\xef\x5e\xaf\x36\x82\xc2\x01\xaf\xfe\xc0\xc1\x69\ \x34\x02\x71\x12\x2f\x71\x2b\xfc\xf1\x43\x5a\xa6\x52\xa7\x3f\x6d\ \x80\x98\x7e\x8d\xa7\x26\x18\x37\xe6\x0b\x08\x5f\x48\x64\x9b\x31\ \x83\x66\x8f\x0d\x0e\x07\xec\x54\x89\x8b\x88\x1d\xb6\xa8\x5c\xdd\ \x48\xb9\x61\x81\x80\xb8\x39\xae\x2e\xf6\x99\x35\x83\xe7\xc0\x66\ \x0f\xbb\x75\xe9\xb2\x46\x66\xee\x2b\x01\x5e\xf7\x69\x25\x2d\xc8\ \x8b\x3c\x47\x0f\x1b\x7a\x29\xd0\xbc\xb5\x96\xb2\xae\x8e\xac\x47\ \x23\x50\xbe\xc2\x81\x9f\x1b\x01\x7e\xa6\x40\xf8\x1c\x9e\x1e\x89\ \x97\xb8\x89\x5f\xe9\x71\xd4\xe8\xed\xa9\x7f\xca\x00\x47\xbe\x6e\ \xf5\xfa\x29\x83\x46\x8f\x6e\x0c\x6f\x81\xcc\x19\x9d\x91\xbf\xe6\ \x5b\x14\x7a\x4c\x40\xa0\xef\x4e\x04\xf8\xfb\x21\xcc\xdd\x1e\x9a\ \xf5\x1d\x50\x21\x81\x88\x91\x39\x53\x40\xec\x37\x6b\x2c\xca\x37\ \x79\x24\x20\x17\xca\x6c\x75\x11\xc0\x2f\x3f\xed\xd4\x15\x79\x3a\ \x38\x38\xc4\x2e\x5e\xf4\x03\x7c\x07\x34\xc9\x0f\x34\x7d\x0b\xa9\ \x63\x6b\x73\x39\x10\x87\xc2\x03\xc7\x8e\x40\xe0\x18\x06\x45\xd9\ \x1e\x65\x29\x78\x8c\x25\x7e\xa5\xc7\xc5\xa1\xad\x1e\x51\xb7\x3f\ \x34\xc0\xa1\x7e\x8d\xe7\x5d\xaa\x9e\x7d\x9e\xb0\x9c\xc7\x62\xfb\ \xe6\x75\x70\x74\x74\xc4\x41\xd7\x35\x28\x75\xee\x05\xed\x92\x1a\ \x28\x96\x83\x4a\xce\xd4\x57\x11\x65\xd1\x00\xfe\x26\x8d\xca\x7b\ \x7c\xd4\xd9\x56\x40\xbe\x23\xa4\x4e\x61\xcf\x82\x24\xf7\xb0\x55\ \xa8\xf8\xf3\x5e\x9f\xae\xf3\x1c\xf0\x56\x59\x84\x59\x43\xa4\x8f\ \xaf\x45\x1c\xc4\x43\x5c\x8c\x07\x8f\x97\xc2\x52\x94\x07\xce\xe0\ \xf9\x80\x7a\x28\x7d\x82\xe6\x8e\x4a\x92\xd7\xf8\x63\x92\xad\xf2\ \x93\x3c\x66\xad\xff\x68\x80\xf0\x7e\x6f\x5d\xe1\xb6\xc7\xb5\x93\ \xb0\x61\x12\x7c\xbc\xbd\xb0\x6d\xeb\x56\x1c\xdb\x3e\x4f\x82\x8b\ \x29\xb0\xf6\x6d\xba\x9c\x3a\xa4\x5c\x1e\xf3\x06\xbc\x06\xd6\xd7\ \x8e\xe8\xf5\x9e\x97\x04\xab\xce\xcf\x52\x79\x92\xa4\xc8\x4c\x0e\ \x1e\x3c\x88\xd5\xab\x57\x7b\x9a\xf4\xe8\xec\xea\x31\xa0\x81\xf6\ \xdc\xb0\x7a\xc8\x9c\xf4\x3a\xf1\x10\x97\xc2\x87\x3d\xc3\xd5\x69\ \xb1\x2a\x72\xb1\xf2\x82\xbc\xd5\x7d\x95\x3e\x31\xe3\x3f\x45\x68\ \x68\x68\x16\x73\x96\x7b\xf7\xee\x8d\xfa\x9d\x01\x0e\x7e\xd1\xf4\ \xcd\x78\x43\xbd\x4a\x46\xce\xa8\x8d\x0b\x21\x09\x4c\x04\xf8\xb8\ \x23\xd1\x7b\x36\x2a\x82\xac\xb9\xe5\xa8\x83\x48\xd1\xec\x97\x95\ \xeb\x05\x0e\xaa\x8b\xc5\xbd\x9b\x9f\x13\xe5\x3f\x17\xe5\xd5\x7b\ \xf9\x33\xa6\x9a\x32\x7b\xd9\x92\x84\x29\x96\xe5\x70\x7b\x89\xf1\ \x47\x8f\x02\x8c\xeb\x21\x4d\xb7\x14\x88\x8b\xf8\x88\x53\xe7\x05\ \x31\xe2\x05\x01\xd3\xd4\x51\x39\x7b\x7e\x37\xdc\x1c\xdd\xa6\x92\ \x3a\x06\x06\x06\x9e\x92\x94\x5a\xe9\xef\x0c\x10\xf0\x6d\x13\x9b\ \x4b\x66\x4d\x64\x9d\x3b\x21\x3a\xe2\x10\x22\xf6\xf9\x22\xdb\x7b\ \x12\xb4\x3c\x7b\xef\x1b\x05\x38\x34\xa7\x95\xd5\x81\x24\x6d\x5c\ \x6d\xb8\x18\xd4\xad\x10\xc5\xc7\x09\x29\x77\xfa\x3b\x48\x92\xae\ \xef\x4b\x32\xe6\xba\x64\xa3\x35\x4b\x96\x2c\xd1\x6c\x37\x68\x80\ \x5b\x96\x75\x90\x31\xa1\x16\x71\x11\x1f\x71\x12\xaf\x3a\x1b\x54\ \x1e\x9c\xaf\xdb\x11\x96\x7d\xa9\xde\x1a\x83\x8c\x9a\xd9\xc8\x32\ \xd8\xca\xac\xb3\xa4\xdb\xbb\xfc\x86\x79\x88\x49\xfb\xb3\xa1\x5e\ \xdb\x21\xc9\x4e\x1c\xdd\xb9\x1a\xf9\x2e\xc3\xb8\x96\x74\x91\xd5\ \xdb\x88\x6b\x4c\x9d\xc4\xb2\xa7\xbc\x86\x93\x43\x6b\xe1\xe7\xde\ \x8d\xae\x75\xeb\xd6\xad\x2d\xc7\x3e\x0f\xea\xd5\xab\x57\xbb\xc5\ \x5f\xbe\x7d\xf1\xe8\xa0\x37\xe8\x05\xc4\x45\x7c\xc4\x49\xbc\xd5\ \x3b\x82\xca\x23\xe4\xff\xdc\x5f\xbd\x27\x44\x9a\xb6\x3a\x21\xf9\ \xcc\x91\x92\x6a\xcf\x17\x03\x8c\x79\x92\xe1\x59\x35\xad\x76\xb0\ \xe7\x0e\x6d\xe4\xa1\x30\x9c\x58\x37\x1d\x79\xeb\x0c\x51\xbe\x47\ \x05\x13\xdd\x1b\xd8\xd6\xae\x8c\xb4\xdc\x76\xd4\x9a\xf3\x1f\xf0\ \x5a\x95\x51\x8f\xce\x56\xd5\x87\x9b\xe7\x41\x94\xfd\x59\xf7\x0f\ \x47\xee\xfc\xb6\xb6\xe6\xce\xc8\x3a\xc4\x45\x7c\xc4\x49\xbc\xc4\ \x4d\xfc\x5c\x06\x3c\x1d\xaa\x83\xd1\x95\x91\x6d\x4a\xdd\x5d\xb6\ \x7e\x45\x0f\x90\x98\x62\xfb\x2b\x33\x2f\x57\x97\x98\xa8\xc8\x70\ \xc4\xba\xac\x46\xde\x8e\xc9\x28\xde\x6f\x8b\xb2\x38\x67\x94\x9c\ \x71\x43\xe1\x61\xb9\xe7\x31\x14\xe9\xf6\x5f\xe1\xfa\xb2\xaf\x70\ \x66\xf6\xd7\xd8\x34\xa0\x69\x56\xf7\xee\xdd\x55\x81\xe2\x79\x12\ \x31\xd8\xf5\x6b\x9e\x71\x64\x72\x6f\x9c\x9f\xf7\x0d\x92\xe4\xf0\ \x93\xb5\xfe\x1b\x14\x78\x0e\x45\x71\xd4\x6a\x68\xce\xba\xa1\xfc\ \xb8\x33\x4a\x83\x6c\x91\xbb\x7d\x0a\xee\xac\x18\x0e\xd7\x85\x53\ \x4c\x59\x74\x91\x7a\xc3\x7a\xdd\xec\xbb\xb9\x19\xf1\x80\x13\x7e\ \x38\x86\xe9\x69\x66\x68\x99\xa4\x64\xee\x8e\xa9\x2a\x66\x6b\x54\ \x12\xc3\x57\xde\xd7\xd7\x84\x3c\xc0\xd4\x9d\xb7\x31\x7a\xd4\x8c\ \x48\x99\x81\x3a\xcf\xdb\x00\xc4\x30\x76\xd8\xd4\x18\x2b\xe7\x5b\ \x58\x12\x70\x1f\x2e\x47\xf3\x11\x71\xa5\x12\x67\xee\x00\xd7\xee\ \x03\x69\x8f\x80\xdc\x12\x40\x92\xcd\x28\xd5\x54\x22\x3d\xa7\x04\ \x01\x1b\xec\x1c\x58\x71\x92\x78\xe2\xa1\x98\x48\x76\x37\xea\xe0\ \xc1\xd0\x8a\xc4\x94\x2c\x14\x95\x56\x00\xd0\x65\x6b\xd3\x73\x81\ \xc4\x0c\x95\xb2\x62\xe6\x86\xc9\x0b\xf5\x0e\x3f\x7e\xdb\x2d\xf4\ \x1a\x64\x33\x53\x84\x73\xfc\x73\x25\x62\xf8\xca\xc4\x7a\xee\xf0\ \x4d\x89\x98\xef\x97\x86\x2d\x87\x73\x71\xe0\x62\x39\x4e\x26\x03\ \x97\xd3\x81\x94\x1c\x20\xa7\x08\x28\xaf\x04\x34\x15\x55\xc8\xca\ \x2b\xc3\x01\x27\x87\x7d\xb2\xc3\x15\x8a\xde\xbe\x8a\xc9\xe1\xc3\ \x87\x35\x41\x7b\xf6\x14\xdf\xcb\x2e\x41\x89\x58\x49\x1c\x00\x79\ \x25\xb4\x9e\xce\x8a\x67\x6e\x03\xe1\x62\xd5\x1d\x47\xf2\xb0\x78\ \x77\x3a\x46\x3b\x5e\xc7\x07\x9f\x7e\xdb\x89\x63\x5f\x04\x22\x96\ \xc1\x0e\x09\x98\xe5\x95\x8a\x0d\x87\xb2\x99\x79\x62\xfa\x8d\x39\ \x48\x26\x62\x25\x1b\x4d\xe5\x69\x84\x2a\x55\x9c\x89\x74\x75\x3a\ \x23\x75\x46\xad\x18\x60\x6f\x0d\x9f\x98\x3b\xd3\xf2\x0a\x4b\xb5\ \x73\x37\x86\x97\xdd\xcf\x29\x45\xa9\x98\x8a\xee\x92\x5b\x0c\xa4\ \xe6\x00\x57\xd2\x81\x53\x62\x80\xd0\x4b\xe5\x70\x8e\xca\xc5\x82\ \x5d\x69\x18\x63\x77\x5c\x23\x96\x7f\xfb\x45\x31\x00\xb1\x8c\x5e\ \x1e\x5d\x35\xdd\xfd\x0e\xec\x43\x1f\x62\xcf\xd9\x52\xc4\xdd\x62\ \x82\x55\x97\x65\xce\x2a\x50\xf5\x06\x16\x5d\x54\xe5\xc9\x6b\xef\ \xb1\xbc\xf4\x07\xb9\xd8\x15\x1c\x73\xb2\x86\x94\xa8\x67\xb2\x42\ \x3b\x7f\x63\x74\x69\xe6\xa3\x52\xba\x89\x3c\x08\x3c\x2a\xa6\xfb\ \x28\x37\x52\xee\x14\x22\x6e\xe5\x18\xf9\x08\xf3\x7c\xef\x62\xc4\ \xb2\x90\x1c\x11\xaa\xf7\x02\x19\x40\x6f\xd2\x42\xdf\x32\x1b\xb7\ \x3b\xb0\x3b\x90\x85\x5d\xa7\x4b\x98\x7c\x65\x06\x5a\xa5\xe1\x1f\ \xfc\x8b\x01\x1e\x15\x6a\xe0\x19\x1c\xaf\xa1\x21\xfc\x0e\xc4\x9d\ \xf8\xd5\x00\x0b\x36\x46\x56\x3d\x31\x00\xd7\xcd\x6f\x0d\x10\x7c\ \x41\xa3\x0c\x30\xd7\xe7\x2e\x46\xae\x88\xc8\x17\xa1\xf5\x5e\x20\ \x03\xd4\xb3\x5a\x1c\x58\xce\xe0\xcc\xbc\x22\x0d\x10\xfb\x6f\x06\ \x28\xf9\x57\x03\x04\x9d\x2d\xa7\x01\x7c\x82\x8f\x45\xd1\x00\xb5\ \xf7\x05\x06\x6e\x3e\xb8\xd3\x55\xfb\x67\x3d\xc0\xd2\xfe\x5c\xa5\ \x08\x7d\xe3\x05\x32\xc0\x1b\x83\x57\x9e\xd6\xd2\x00\x7f\xc6\x03\ \xc2\xbd\xdd\xb3\x25\x06\x94\x78\x78\xf9\xac\xa9\x7e\xcb\x0a\x0e\ \x72\x74\xa8\x62\x0c\x28\xfb\x4f\x31\x20\xf9\x49\x0c\x60\xa4\x65\ \xc4\xfd\x6c\xac\x7d\xdb\x17\xc5\x00\x5d\x87\xd9\xb7\x35\xb1\xbb\ \x8c\xea\x18\xb0\xfb\x4c\xc9\x7f\x8d\x01\x41\xae\x5b\x1e\xf0\x20\ \xb4\x7d\xfb\xf6\x41\x8a\x81\xbc\x5c\xdc\xf5\x72\x58\x55\xf6\xef\ \xbb\xc0\xdd\x7f\xd9\x05\x0e\x5d\xae\xc4\xf6\x98\x3c\x2c\x92\x5d\ \x60\x94\xd3\x0d\x18\x4e\x71\x35\x7f\x51\x0c\x60\x69\xf5\xd3\x78\ \xf3\x75\x57\x7f\xdd\x05\xf6\xc5\xff\x7e\x17\x28\x7b\xb2\x0b\x48\ \x3d\xc3\xaf\x58\x5e\x88\xd2\xbd\xbc\xbc\x6a\xd5\x90\x7e\x9e\x97\ \xa5\xcc\xad\xd9\xbc\x62\xd9\x9d\x3b\xf1\xa7\x91\x97\x78\x1e\x95\ \xf7\xae\xa1\xf0\x5e\x12\x1e\xa6\xa5\x21\x25\x39\x15\x57\x2f\xdf\ \xc0\xd9\xb8\x93\x08\x0a\x3a\x82\xad\x6e\x87\xb0\xd4\x3e\x10\x8b\ \x26\x4c\x77\x79\x51\x0c\xf0\xc3\x28\x6b\x9f\x39\x2b\xf6\x62\xdd\ \x96\x50\xec\xf2\x8f\x46\x6c\xd4\x09\x24\x9c\x3e\x8d\xa4\xc4\x1b\ \xc8\x48\x4d\x45\x7e\x46\x1a\x34\x99\x49\x28\x4d\xbd\x82\xb8\xb0\ \x03\x38\x79\xf2\x24\x0f\x41\xfe\x1c\xcb\x46\x87\xc9\x62\x8d\xaa\ \x79\x53\xac\x9d\x98\x34\x48\x9d\xd8\x5e\xa5\x95\x8b\x77\x58\xa2\ \x32\x6c\x01\xb3\x2b\x7c\xbf\x56\x69\xe8\xd2\x79\xba\x24\xc8\x3d\ \xab\xda\x38\x66\xaa\x77\xfd\x45\x31\x40\x48\xbf\xb7\xcf\xde\x1c\ \x5a\x8f\xb8\x88\x8f\x38\x89\x97\xb8\x89\x5f\xe9\x51\xec\x32\x42\ \x8e\xf9\xab\x10\x19\x7e\x08\xfe\xde\xee\xf7\xc5\xfd\xd5\x3b\x0c\ \x5f\x2f\x83\xa5\xc7\x47\x6b\x6e\x6e\xde\xf3\xaa\x55\x7b\x0d\xbb\ \x32\x72\x16\x7e\xc2\xfc\x3a\x2b\xb2\x4c\x32\xb2\x48\xc9\x3a\x1d\ \x4b\x55\x4c\x3c\xa8\x57\xcf\x24\xcb\xba\x38\x6d\xd4\xa0\xc3\xf3\ \x56\x3e\xb6\x6f\xa3\xd6\x17\x07\xd5\xaf\x4c\x16\x3c\xc4\x45\x7c\ \xc4\x49\xbc\xc4\x4d\xfc\xc9\xbb\x97\x22\x6c\xaf\x0f\x22\xc2\x0e\ \x62\x97\xb3\x03\x46\x0d\x1e\xd4\xa3\x7a\x3c\x1b\x9d\xa2\xe4\x44\ \x74\x5f\x22\x69\xe3\xfd\xa6\xed\x92\xef\x8c\x6b\xc7\xfa\x3b\x8b\ \x8e\xac\xcd\xf3\x75\x92\x15\x5a\x95\x64\xa8\x94\x3a\x1d\xf3\x6f\ \x4c\x46\xa6\x8e\x7e\x03\xa7\x4c\xf5\xdc\x9f\xaf\x01\x58\xbb\xd0\ \x0f\x4a\x1c\xfc\x26\xf1\x10\x17\xf1\x11\xa7\xe0\x95\x17\xb7\xc0\ \x95\x88\x3c\xb0\x17\xf2\x96\x87\xb0\x03\xc1\xf0\x5f\x38\x92\x29\ \xfb\x02\xea\x5a\x3d\x9e\x3b\x40\x9c\x2c\x81\x12\xb9\xf9\x9a\xf5\ \x67\xef\x39\xdf\x95\x25\xc0\x96\x14\x96\x9e\x99\x4e\x62\x5a\x89\ \xe5\x69\x55\x98\x5c\x51\x5b\xb9\xd7\x23\x9b\x57\x91\x2e\x09\x91\ \x6b\x43\xeb\x95\xc6\x1b\x37\xa9\xfd\x77\x29\x2b\xff\x5e\x92\xbe\ \xc1\x0f\x25\x78\xb5\xe0\xff\x5f\xea\xaf\xff\xf1\x65\x93\x06\xda\ \xa4\x61\x75\x15\x9e\x1c\x9b\xd7\x70\x6d\x79\x0f\x84\xb9\xd8\x22\ \x60\xb7\x1f\x82\x83\xf6\x23\x78\xff\x5e\x04\xad\x9b\x8f\x13\x53\ \x3f\x46\xca\xe4\x0e\xf0\x30\xef\x14\x46\x5d\xab\x79\xf2\x4d\x70\ \x8f\x78\x40\xc6\xf1\xe3\xc7\x5f\x92\xe4\x86\xe1\x0d\xab\x76\x15\ \xa9\x13\xda\xa9\x06\x84\x22\x67\x0b\x54\x04\xeb\x8a\x90\x08\x9e\ \x08\x6c\xf9\xe0\xd7\x9c\xc0\x03\xeb\xd7\x91\x32\x4a\x79\x81\xff\ \xb3\x56\x7c\xcb\x96\x2d\x75\xa4\x2d\x2e\x4a\xfe\x56\xd8\xd9\xd9\ \x55\x3a\x3b\x3b\x63\xdb\xb6\x6d\x05\x5e\x2e\xdb\x2a\xfc\xd6\x2f\ \x87\x9f\x93\x1d\x5c\x36\xdb\xc3\xc1\xde\x1e\xab\x56\xad\xc2\x36\ \xe7\x2d\xd8\xe5\xe6\x8c\x18\xa7\xd9\x48\x5a\x67\x82\x07\xf6\x46\ \x4a\x9f\xdb\x93\x3b\x56\x0e\xfa\xbc\xeb\x6f\x76\x2f\x06\xc1\xb5\ \x92\x1f\x63\x7a\xe8\x13\xf9\xd7\x3c\xdc\xac\xcd\xfd\x54\x09\x86\ \x6c\x4e\xe2\x32\x60\xa9\x89\xcb\x40\x65\x57\x7c\x06\xb0\x12\x23\ \xa5\xeb\x27\x5e\x90\x3c\xbc\x2e\x2e\x19\x37\x18\xfd\xac\x94\xb7\ \xb5\xb5\x7d\x55\x26\x29\x63\xe5\xca\x95\x55\xa2\xf4\x5d\x31\xc4\ \x0e\xc1\xec\xef\xeb\xb2\xf5\x56\x80\xb7\x07\xf6\x78\xbb\x21\x28\ \x70\x2f\x02\x77\x79\x22\x54\x82\xdc\x29\x87\x21\xc8\xd8\xd4\x1b\ \x79\x5e\xa3\x50\x16\x3a\x97\xf8\xa9\x87\x5a\xd6\x97\xc7\x77\x28\ \xa4\x8e\xff\x6e\x80\xfe\x92\x23\xcb\x67\x76\x44\x5c\xa3\xf6\xf4\ \x2f\x3a\x78\xdf\xb5\x7e\x17\xf7\xbe\x7b\x8f\x95\x56\xdd\x6e\x10\ \x3a\xef\x49\x30\x74\xea\x84\x0a\x29\x55\x17\xce\x64\x2c\x78\x0d\ \x77\x25\x33\x9c\x68\x51\xaf\xec\xaa\x71\xc3\xf7\x9f\x85\x01\x44\ \x61\xb7\x35\x6b\xd6\x60\x9b\xfc\xab\xbe\x77\xc1\xa8\x51\x97\x0b\ \xc6\xfa\xf9\x49\x96\xf5\x91\x36\xbe\x9e\x2a\xbf\xe7\xcf\xa9\x85\ \xb2\x45\xaf\x40\xeb\xd8\xa9\x3a\xf8\x11\x37\xf1\x53\x0f\xa9\x54\ \xbf\x07\xf7\x41\x1d\x63\xa8\xe3\xef\xea\x02\x92\x1d\xd1\xc8\x4e\ \x70\x9d\xef\xd6\xb2\x0c\x4c\x8e\x0d\x69\x9d\x9f\x32\xa1\xbd\x4a\ \x21\x15\xac\x1b\xc8\xfa\xbb\xce\x0b\x22\xe6\xb2\xfa\xc2\x2d\x86\ \x25\x29\x46\x5c\x95\x86\x4a\x95\xa5\x90\x60\x5e\xff\x2e\x7b\xf8\ \x9e\x81\xfb\x67\x6d\xde\xbc\x39\x8b\xd7\xa4\x8b\x06\x0d\x3e\xbf\ \x38\xb0\x41\xd1\x8d\x21\xf5\x28\xb7\x3a\x25\x4e\x3c\xc4\x45\x7c\ \xc4\x49\xbc\xc4\xad\xf0\x3f\x90\xd9\xbf\x31\xfe\xdd\xf2\x1e\x5d\ \xbb\x0e\xa2\x8e\xbf\x33\x80\xa4\x9a\x4f\x48\x96\xf5\x21\x83\xcb\ \x07\x1f\x7c\xd0\xc4\xb2\x67\x47\x4f\x9e\x09\x68\x35\xe5\x05\xdb\ \x87\xb3\xde\xa6\xf3\x82\xd0\xa9\xdc\x11\x98\x78\xac\x5e\x0a\xdc\ \x7e\x24\x1e\xd4\xc1\xd5\xc1\x6f\xde\xbf\x62\xac\xd7\xfd\x69\xae\ \x7d\x49\x7f\x43\x02\xdf\x21\x35\xf3\x06\x8d\x8c\x2e\x0d\x68\x50\ \x46\xe5\x29\x8f\x72\x29\x9f\x38\x88\x87\xb8\x88\xaf\xba\x3e\x48\ \xdc\xb9\xcb\xbe\x50\x55\xe2\x9f\x0d\xde\x0f\xa7\x6e\xff\x2e\xa3\ \x3a\x25\xd6\x9b\xcd\xc8\x7b\xf6\xec\x09\x14\x0b\xd5\x94\xc2\xac\ \x41\xa8\x49\xeb\x07\x29\xe3\x24\x16\xcc\xee\xc2\x4a\x2b\x5b\x51\ \x74\x3d\x40\x87\x7f\x00\xf6\x5b\x31\x20\xca\x76\xc3\x7e\x00\xdd\ \xe1\xe8\xfe\x63\x23\x24\x0e\x79\xb3\xe2\xa2\x71\xfd\xe9\x4f\xc3\ \x00\x12\x97\x7a\x4a\xd0\xab\x90\xae\xf1\x95\xf1\x86\xfa\x23\x13\ \x06\x36\xac\xa8\x56\x9e\xf2\x28\x97\xf2\x89\x83\x78\x88\x8b\xf8\ \x88\x93\x78\x89\x9b\x05\x91\x4b\xa3\xdb\x95\x50\x27\xea\xf6\xff\ \x2d\x8d\xc9\x12\x48\x0a\xdc\x1f\x98\x25\xef\x05\xcd\xf9\x7e\xdd\ \xbf\x5b\xe7\xf5\x49\x63\xda\x68\xb9\x14\x18\x41\x0b\x37\xab\x02\ \xe9\xe3\xa5\x30\x4f\x77\xca\xda\xd4\x9e\xf1\x80\x05\x09\x9d\x27\ \x4c\xac\xa5\xf6\xe3\x5b\x72\x2a\x4b\x18\xd4\x30\xf0\x82\x41\xfd\ \x56\x7f\xb1\x19\x7b\xdc\xc6\x8d\x1b\xe1\x3a\x69\x40\xe6\x35\xd3\ \xfa\x5a\xf2\x25\x7f\xca\xa1\x3c\xca\xa5\x7c\xe2\x20\x1e\xe2\xaa\ \x2e\x8c\x12\xef\xc3\xf9\xdd\x71\x67\xdc\x3b\x98\xdb\xe7\x7d\x1f\ \xea\xf4\x5f\x8b\xa3\x4e\x4e\x4e\x9f\x47\x47\x47\xb1\xf9\xf9\x32\ \xd7\x89\x14\x3a\xbf\xd8\xd6\xbf\x6d\xe2\xed\xb1\x6d\x75\x01\x71\ \xf9\xd7\x74\x29\x9e\x0e\x59\x71\x61\x8f\x8e\xee\x6c\xb0\xbe\x15\ \x41\x70\x26\xd8\xca\xc2\x35\xa9\x72\xf4\xb7\x2d\xe9\x0d\xf5\xb4\ \x97\x4c\xea\x87\x5f\x34\x6a\x30\xb0\xba\x3c\xfd\x67\x89\x81\x2e\ \x78\xc1\xd8\xd8\xf5\xeb\x1c\xb0\x63\xec\x17\xe4\x47\xbe\xe4\x4f\ \x39\x94\x47\xb9\x94\x4f\x1c\xc4\x43\x5c\xc4\xa7\x70\xe6\x48\xd3\ \xd4\x1d\xe9\x21\x8c\xb6\x78\x27\x8b\xba\x50\xa7\x3f\xac\x0e\x4b\ \x0c\x08\x0e\x0a\xda\x5f\xec\xe1\xe1\xbe\x49\x06\xbc\x29\x25\xaf\ \x59\x87\x8c\x5b\xe5\xb0\x54\x96\x61\xd3\x49\x55\x5a\x4b\x76\x8e\ \x46\xe5\x81\x39\x40\xf4\x13\x23\x70\x06\x78\xfa\xe2\x5a\xcc\x97\ \x80\xc4\x32\xd5\xfd\xf1\xca\x1b\xd4\x36\x49\xb7\xbd\x68\xaa\x77\ \x6f\x9c\x8d\xe3\x69\x93\x29\x9e\xab\xdf\x9f\x73\xb2\xff\xfb\xb3\ \x4e\xbe\xd3\xd5\x3a\xfe\x15\x12\xaf\x79\xcf\x78\xb2\xf7\xaa\x31\ \x93\x1d\x4f\xc7\x9b\xe8\x27\xc9\x8c\x23\x76\xb6\x21\xa4\x2b\x1d\ \xde\x13\xbf\x24\x3f\xf2\x25\x7f\xca\xa1\x3c\xca\xad\x56\x9e\x78\ \x88\x4b\xe1\xcb\x5b\xd5\x17\x3c\xd1\x5e\x1c\xf9\x4e\xe9\x67\xdd\ \xbb\xce\xa5\x2e\x7f\xaa\x41\x82\x27\x2d\xf1\x80\x34\x59\x0a\x5a\ \x59\x7f\xbe\xb2\x23\xbc\xdb\xb3\xdb\xc7\x6b\xe2\x87\xb4\x28\x4b\ \x1e\xd5\x1a\x59\xb3\x3e\xe4\xba\x62\xeb\x2a\x5b\xd4\x9e\x54\x8d\ \x02\x2c\x01\xe7\x2e\x0c\x44\x2c\x4d\xf1\x38\xca\x59\xe2\xd1\x94\ \xc0\xd5\x56\x79\x4b\x3a\x3b\xcc\x1c\xae\x62\xc0\x9a\x04\x7c\xbb\ \xe2\x22\xbe\xf9\xe9\x02\xbe\x5e\x76\x4e\x4b\xe2\x75\x5f\xb9\x67\ \xb8\x3a\x01\x83\xd6\x5e\x41\xa2\xa5\x3e\x58\xe8\x38\xb5\xa0\x2f\ \xd6\xda\xd9\x21\x60\x5a\xdf\xea\x46\x29\xf2\xa7\x1c\xca\xa3\x5c\ \xca\x27\x0e\xe2\x21\x2e\xc1\x67\x80\x94\x89\xed\x70\x63\x64\xeb\ \x2a\x93\x4f\xbb\x6c\x94\x72\x7d\xbb\xff\x53\x8b\x8c\xbc\x25\xd5\ \x96\x60\x78\xd3\xd3\xcb\xa3\xd2\xd1\x69\x73\xf9\xac\xd9\xb3\xce\ \x9b\x7d\xd3\xeb\xd0\xb5\x61\x2d\xaa\xd8\xa4\xfc\x60\xa6\x1c\x90\ \xec\x8d\x28\x8c\x91\xf6\x71\x7f\xe0\x7c\x20\x68\x3c\xe0\xde\x9b\ \x8d\x0a\x0c\x4a\x72\x64\x7e\x62\x08\xce\x5c\xfa\x77\x6f\xe2\x7b\ \xcf\x14\x4c\x71\xbd\x8d\x09\xdb\x92\xc0\x3c\xfe\x98\x2d\x37\x15\ \x8d\x75\xbe\xa9\x52\xed\xdf\xb9\x24\xab\xa4\x46\xda\xc4\xfa\xca\ \xd5\x2f\x2d\xfa\x0c\x3f\xfd\xf4\x13\x42\xe6\x1b\x49\xf9\xbb\x26\ \xf9\x92\x3f\xe5\x50\x1e\xe5\x52\x3e\x71\xe8\x94\xff\xd9\x00\xa9\ \x12\xb3\x6e\x8d\x68\x85\xe9\x5f\x75\xdc\x2f\x51\xbf\xdb\x1f\x55\ \xac\xff\x5b\x29\x7a\xba\xaf\xaf\x4f\xe6\x5a\x7b\xbb\x8a\x61\x96\ \x43\x31\x63\xd0\xd7\x9a\xeb\xc3\x5a\xe0\x86\x34\x28\xa7\x73\x39\ \xd8\x19\xb0\x53\x53\xd6\xdc\xf7\x0c\x3c\x2c\x44\xb2\x22\xcb\xae\ \x4e\x36\x35\xb2\xd3\x93\xbd\x7d\xdc\x9f\x75\xf1\x61\x76\x1d\xac\ \x0b\xcb\x56\x85\x95\xe5\x81\x99\x58\x2a\x45\x8c\x1f\xf7\xa4\x93\ \x58\xd0\x60\xbd\x81\xfd\x83\x2a\xa3\x93\xf3\x7d\x5d\x5d\xe7\xc9\ \xb2\x2e\x90\x5d\x00\x11\xcb\xcc\x50\xb9\xbc\x2e\xf9\x92\x3f\xe5\ \x50\x1e\xe5\x52\xbe\xc2\x91\xb3\xbc\x37\x92\x46\xb7\x11\x7c\x2d\ \x61\xff\x6d\xfb\xb3\xb2\xee\xfb\xfe\x99\xb2\xdd\x9f\x39\x89\xbd\ \x2b\x5e\xb1\xcb\xfa\x3b\xeb\xdc\xe9\x66\xdf\x6a\x13\x2c\x5a\x80\ \xfd\x03\xb4\x74\xee\xaa\x3e\x28\xde\x3a\x8c\xed\x69\xaa\x23\x03\ \xd1\xca\x1b\x74\x0d\x4b\xbb\xcc\x80\x1d\x3d\x58\xaf\xd7\x2d\x8d\ \x1f\x6b\x21\xe0\x97\x52\x56\x97\x54\x97\xe8\xce\xd8\x02\x56\x71\ \x14\xb9\xc6\xaa\x6e\x51\x76\x90\xaa\x74\x56\xe9\x0f\xb5\xd5\x3b\ \xc7\xfd\x55\xed\xe1\xe4\xb8\x19\x51\x6b\xad\x50\xe5\x33\x88\x7c\ \xc9\x9f\x72\x28\x8f\x72\x95\xfc\x07\x0b\x7b\xe2\xc6\xf0\xe6\xb8\ \x3e\xac\xb9\x76\x69\x9f\x77\x4f\x8a\xdb\x0f\xe5\x89\xef\xa9\xb6\ \xca\x0a\xc3\xfa\xfd\xfa\xf5\x9b\x3e\x6c\x40\xff\x6b\x27\xa5\x4f\ \xe7\xba\x45\x53\x24\x8d\x6a\x85\xec\xc5\x9f\xa9\xfa\x7b\xa9\x87\ \x15\x23\xf0\x93\x46\x69\x6e\x49\x3c\x94\x70\x9d\x7a\x19\xa0\x6a\ \x47\x2f\xe6\xe9\x98\xad\x55\x7d\xc1\x51\xd7\xaa\x10\x79\x55\x47\ \x87\xe5\x9a\x7d\xc3\x2c\xbf\x31\x99\x59\xb5\xe9\x5d\x35\xdb\x59\ \x9e\x23\x20\x81\x19\x47\x9c\xe7\xa0\xfc\xc0\xf7\xd5\x0d\xd3\x94\ \xa3\xe4\x15\x6c\x30\xc1\x5d\x9b\xce\x10\x2c\xec\x09\xac\x18\xdd\ \xab\x23\xcf\x31\xc3\x88\xf5\x99\x74\x8b\xb3\x0e\x27\x3b\x43\xbf\ \xee\x5d\x3f\xda\x14\x32\xa0\x45\x36\x3f\x65\xb9\x2e\x94\x32\x5e\ \xce\x0a\x2b\x7a\x57\xb7\xca\xab\x37\x48\x2d\xbd\x41\x88\x19\x19\ \x06\x2a\xed\xc1\xef\x55\x92\xf2\x7c\xaa\xae\xd4\x76\xf6\xce\x6f\ \xa9\xba\x63\x9c\x99\x5c\x6d\xb0\xb5\x32\xde\xa3\xd0\x1f\xb1\xdb\ \xdf\x0f\xb1\x6e\x4b\xa0\x91\x3a\x3f\xf9\x92\x7f\xd1\x16\x0b\x64\ \xcc\xe9\x0e\x76\xb1\x11\xc3\x49\xb3\x16\xc5\xbd\x3f\xf9\xd0\x99\ \xd8\x88\xf1\x99\xb6\xcb\x8b\x80\x57\xc5\xc5\x7a\x08\xd9\x3a\x7c\ \xdd\xfa\xea\x25\xf3\xa6\x55\x6c\xa6\xbc\x2a\x40\x52\xad\x3b\xca\ \x56\xd9\x5f\x19\xa2\xd4\x6b\x3c\xca\xf7\x4d\xd7\xa5\xd5\x8e\xd8\ \x42\x7b\x64\x39\x92\xb3\x80\x5b\xd5\xdf\x0a\x64\x00\xd7\x9f\x50\ \xf5\x37\x03\x4c\x63\xcb\x2c\xff\xa4\x82\x5b\x4e\xc4\x6a\x7e\x32\ \x87\x38\x37\x5b\x14\xee\x1c\xa5\xf8\x66\xfe\xf0\x19\x12\xa5\x81\ \x8b\x32\xaf\x98\x37\xd1\xfa\x18\xb6\x4e\xed\x2a\x58\x88\x89\xd8\ \xfe\x96\x0f\x26\x78\xa4\x94\x08\xfb\x9e\x58\x7c\x5a\xcf\xae\x5d\ \xdc\xbd\xfb\xb7\xbc\x77\xd9\xf4\x9f\xda\xcb\x83\xde\xc2\x55\x01\ \x76\x5b\x3c\x22\x73\xc1\xa7\xe2\xa2\xa6\xec\xce\x50\xc7\xd2\xb2\ \x7d\x33\x91\xf5\xaf\x5f\x8b\xe4\x02\xf7\x14\xc9\x35\x29\x8f\xbf\ \xe9\x72\xf8\xe5\x21\xf3\xd4\x69\x2e\xcd\x73\x26\x22\x24\x89\x79\ \x62\xe3\x34\xa4\x4d\xff\x40\x29\x4e\x19\x97\xa5\x43\x2c\x74\x60\ \x8b\xec\xfe\x9f\x7c\xe8\x4b\x0c\xc4\x42\x4c\x7f\xeb\x27\x33\x8f\ \x4f\x8b\x8d\xc4\xf2\x7d\xe4\xbc\xb0\xa0\x4f\xf7\xce\xbb\x43\x0c\ \x9b\x65\x13\x60\x82\x49\x63\x92\x02\x7a\x4b\x1a\x9e\xd3\x67\x77\ \x43\xae\xbd\xb1\xca\xcd\x17\x69\x9e\x7c\x2b\x94\xaf\x88\xd7\x8a\ \x54\x49\xbe\x44\x23\xd7\x8e\x16\x78\xb0\xe4\x4b\x1c\x5f\x31\x01\ \x52\xb8\x45\xec\xf7\xfd\x65\xb6\x75\x7c\x8f\x18\x37\x2d\x1c\xde\ \xf3\xfd\x60\xca\xa4\x6c\x62\x20\x96\xe7\xf0\xe1\xe4\x6f\xbc\xa1\ \xa9\xcc\xc4\x40\x01\x63\x3b\xb0\x7b\xa7\x60\x97\xbe\xad\xd3\x4e\ \x98\xb6\xc0\x25\x93\xb7\xf8\x4d\x91\xa2\x04\xf3\x66\x2c\x4c\xfc\ \xe6\x8b\xb1\xea\x7f\xbc\x26\x55\x7f\x39\xc6\x67\x39\xe6\xe0\xe6\ \x95\x60\xd3\xc6\x59\x8b\x96\x9a\x3d\x86\x2d\xee\x8f\xfc\xb4\x63\ \x38\x65\x50\x16\x65\x52\xf6\x5f\xc5\xff\x54\x1b\x19\x85\x5a\x0b\ \x99\x09\xc0\xd9\xd2\xbf\xe3\x3a\xc2\xc2\x3c\xcf\x71\xf0\xa7\x88\ \x36\x6e\x59\x79\xde\xac\x79\x55\x4e\x6e\x11\xf2\x8a\x1e\x7f\x2f\ \x58\x5a\x81\xa2\x27\xc4\xef\x07\x75\xdf\x0e\x16\x94\xe1\x82\x79\ \xf3\xaa\x83\xd6\xdf\x6a\xa2\xa2\x0e\xc3\xd3\xdd\x2d\x4f\x66\xda\ \x81\x3c\xc9\x9b\x32\x28\xeb\xf9\x7e\x3a\xfb\xc7\x86\xd0\x97\x99\ \xfa\x40\x8c\x60\x6e\x6d\x6d\x7d\x6e\xd2\xa4\x49\x45\x42\x55\x43\ \x87\x0e\xcd\x1e\x6d\x39\x3c\x75\xe9\xc4\x11\x29\x9b\x57\xda\xe7\ \x3a\xba\x86\x6a\x1c\xdd\xc2\x35\x5b\xd6\x6f\xcb\xb5\x9b\x63\x73\ \x73\xde\x8c\x69\xf1\xf3\xe6\xcf\x3f\x2f\x87\xb0\x6c\xf9\x3a\xb4\ \x54\x52\x75\x9a\x3e\x7d\xfa\x0c\x27\x2f\xf2\x7c\x16\x1d\xa8\xcf\ \xba\x68\x59\x53\xa8\x81\x8d\x8d\x8d\xa9\xb4\xb4\x1d\x95\x63\x6d\ \x16\x5f\x6e\x98\xb8\x0c\x8b\x88\x42\xae\x78\x03\x29\xf1\x66\x32\ \x1b\x18\x8b\x1f\x7f\x30\x5d\x2a\x5f\x85\x56\x49\x9a\x2e\x41\x0c\ \xd6\x82\x3c\x9e\x25\x46\xfe\xe7\x6f\xa5\xe5\xcb\x97\xff\x53\xd2\ \x7b\xc3\xb6\x7b\x07\xad\xde\xb1\xe7\x88\xf7\xce\x7d\xb1\xfe\x2e\ \xbe\xc1\xeb\xe5\xde\x2c\x49\x7c\x4c\xe2\xa7\xf2\xac\xd9\xfd\x5d\ \x78\xfe\x1f\x54\xc7\x67\x32\x0b\x29\x7c\xe5\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x20\x1c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ \xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\ \x1b\xaf\x01\x5e\x1a\x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ \xd7\x08\x12\x14\x39\x28\x29\x91\x7c\x0e\x00\x00\x1f\xa9\x49\x44\ \x41\x54\x78\xda\xe5\x9b\x09\xb0\x5c\x57\x99\xdf\xff\xb7\xf7\xbd\ \x5f\xbf\xfd\xe9\xe9\x3d\x49\xd6\x2e\xd9\xda\x2c\x79\xc1\x78\xc0\ \x76\x42\x81\xc1\x03\x64\x0c\x13\x1c\x42\x65\x02\x4e\xb1\x84\x78\ \x5c\xc5\x14\x55\x49\x2a\x54\x48\x05\x2a\x03\xc3\x14\x03\x55\x33\ \x13\x43\x2a\xae\x21\x9e\x01\x26\x05\x43\x80\xd8\xb2\x0d\x78\xc3\ \x96\x25\x6b\xb1\xf5\xb4\x3d\x6b\x7d\xd2\xdb\xb7\xde\xb7\xdb\xb7\ \xf3\x3b\xa7\xbb\x35\x12\x1a\x0a\x18\xb0\x81\x4a\xcb\x9f\xcf\xed\ \xbb\x9c\x77\xbe\xed\xff\x2d\xf7\xb4\xfe\x7f\xff\x38\xaf\xe7\xdf\ \x59\xb3\x66\x8d\xaf\xab\xab\xcb\xd7\xdb\xdb\x6b\x29\x91\x48\x38\ \xd5\x6a\x55\xb9\x5c\xce\x5b\x58\x58\xf0\x96\x97\x97\xbd\x0b\x17\ \x2e\x78\xd9\x6c\xb6\x29\x09\xfa\x2d\x16\x40\x24\x12\xf1\x6d\xdd\ \xba\x35\xb0\x7b\xf7\xee\xf8\xdd\x77\xdf\xbd\xb5\xaf\xaf\x6f\x67\ \x34\x1a\x5d\xcf\xf9\x75\x7e\xbf\xbf\xd7\x71\x9c\x04\x14\x6f\xf2\ \x69\x34\x1a\x05\x43\x08\x63\xa6\x5c\x2e\x9f\x2a\x16\x8b\xe3\xd3\ \xd3\xd3\xfb\xbf\xfd\xed\x6f\x9f\x3c\x70\xe0\x40\x0d\xa1\x34\x8c\ \x40\x7e\x1b\x04\xe0\x6c\xda\xb4\x29\x74\xef\xbd\xf7\xf6\xbe\xf5\ \xad\x6f\xbd\x07\x2d\xbf\x3d\x16\x8b\xdd\x1c\x0e\x87\xfb\x60\x5a\ \xf0\x2a\xd7\x75\x2d\xc1\xb0\x3c\xcf\xb3\x0f\xf9\x7c\x3e\x4b\xc1\ \x60\x50\xdc\x67\xcf\x57\x2a\x15\x15\x0a\x85\x49\xac\xe1\xd9\xa9\ \xa9\xa9\x6f\x3d\xca\xe7\x5b\xdf\xfa\x56\xde\x58\xca\xaf\x52\x18\ \xce\xaf\x4a\xdb\xd7\x5f\x7f\x7d\xf4\x13\x9f\xf8\xc4\xae\x6d\xdb\ \xb6\x7d\x34\x9d\x4e\xdf\x0d\xd3\x29\xc3\x08\x1a\x15\x1a\x55\xa9\ \x54\x52\x15\xa6\x6a\xb5\x9a\xdc\x7a\xbd\x25\x00\x08\xa1\x40\xad\ \x95\xc0\xbc\x15\x42\x38\x1a\x55\x2a\x95\xb2\x14\xe5\xb8\xce\xfd\ \x8b\x8b\x8b\xf3\x33\x33\x33\xff\x7b\x6c\x6c\xec\xcf\x3e\xf7\xb9\ \xcf\x8d\x4f\x4e\x4e\xba\x46\x10\xbf\x6e\x01\x38\x1b\x37\x6e\x8c\ \x7e\xfa\xd3\x9f\xbe\x79\xc7\x8e\x1d\x7f\x94\xc9\x64\xde\xe2\xe7\ \x03\xd3\xc6\xaf\x55\x2c\x14\x54\xe1\xd8\x50\x15\x2a\x23\x04\xc8\ \x0a\xa2\x8e\x20\x1a\x58\x82\xe1\xde\xe7\x38\xf2\x07\x02\x0a\x05\ \x43\x0a\x86\x42\x0a\x84\x43\xf2\x9b\x63\xc6\x68\x3c\xae\x9e\xbe\ \x3e\xf5\x41\x21\xae\x2d\x2d\x2d\xd5\x2f\x5d\xba\xf4\xcd\x23\x47\ \x8e\x7c\x96\xbf\x7b\x22\x9f\xcf\xbb\xbf\x16\x01\xa0\x9d\xe0\x87\ \x3f\xfc\xe1\x91\xf7\xbf\xff\xfd\xff\x7e\x68\x68\xe8\x03\x98\x70\ \x10\x4d\x5b\xc6\x4b\x30\x6e\x28\xbb\xbc\xac\x85\xb9\x79\xcd\xce\ \xcd\x6a\x6e\x76\x56\x4b\x8b\x4b\xca\xe6\xb2\xd6\x1a\x3a\x02\xf0\ \x49\x0a\xfa\xfc\x8a\x84\x82\x4a\x18\xcd\x27\x12\xea\x4a\xa7\xd5\ \x95\xe9\x56\x2a\xd3\xa5\x68\x2a\xad\x50\x22\xae\x70\x2c\xa6\x6e\ \x84\x30\xbc\x72\xa5\x62\x1c\xcf\xce\xce\x96\xcf\x9c\x39\xf3\xc5\ \x6f\x7c\xe3\x1b\x9f\xfb\xfa\xd7\xbf\xbe\x2c\xc9\x7b\xbd\x04\xe0\ \x8c\x8e\x8e\xc6\xbe\xf4\xa5\x2f\xbd\x63\xcf\x9e\x3d\x7f\x8a\x89\ \x0e\x5d\xd6\x78\x3e\xaf\x1c\x4c\x4f\x4f\x4d\xe9\xfc\xb9\xf3\x3a\ \x73\xf6\x8c\x26\x26\x26\x34\x03\xf3\xf8\x72\x87\x71\x6b\xfa\xc2\ \x3d\x1c\xa3\x7d\x49\x01\xc7\xa7\x00\x18\x10\x0a\xf8\x15\x45\xcb\ \x89\x48\x54\x19\xcc\xbf\xaf\xa7\x5b\x83\x83\x83\xea\x5f\xb1\x42\ \xe9\x81\x01\x45\x33\x19\x85\xcd\x79\xce\xad\x5a\xb5\x4a\xc2\x72\ \xce\x9d\x3b\xf7\xea\xc1\x83\x07\xff\xf5\x27\x3f\xf9\xc9\xe7\x5d\ \x3e\xaf\xb5\x00\x7c\xb7\xdc\x72\x4b\xf7\x97\xbf\xfc\xe5\xff\x40\ \x48\xfb\xb7\x66\xed\x98\xa0\x0a\x50\x76\x71\x51\x13\x17\x2e\xe8\ \xc4\xf1\x13\x1a\x3b\x7e\x4c\x68\xc7\x32\x5e\x2e\x96\xd4\xdb\xdb\ \xa3\x95\x2b\x86\xd5\xc7\xd8\xdd\xd5\xa5\x58\x24\xa2\x30\xbe\xde\ \x6c\x78\x06\x0f\xb8\xa7\xa0\x02\x02\x5c\x5a\x58\xd0\xfc\xf4\x0c\ \x34\x8d\x60\x9a\x8a\xe0\x06\x29\x5c\xa0\xbf\xa7\x47\x2b\x56\x0e\ \x6b\xc5\xea\xd5\xca\x8c\x8c\x2a\xda\xdb\xab\x38\xc2\x19\xe5\x7b\ \x5f\x7f\xbf\xc0\x86\x2a\xd8\xf0\x1f\x1f\x7c\xf0\xc1\x2f\xe3\x22\ \x95\xd7\x4a\x00\xfe\xb7\xbf\xfd\xed\x2b\x3e\xff\xf9\xcf\xff\x05\ \x5a\xb9\x1b\x60\xb2\x8c\xe7\xd0\xec\xe4\xc5\x8b\x3a\xfa\xca\x2b\ \x3a\xf0\xd2\x4b\x3a\x7e\xf2\xa4\x66\xa6\xa6\xf1\xd9\x5e\x6d\xdb\ \xba\x55\x9b\x37\x6d\x52\x22\x1c\x91\xaf\xe9\xc9\xef\xb5\xc8\x31\ \x04\xf3\x62\x84\xac\x45\x34\x0c\x71\xec\x72\x5f\xb5\x5a\xb3\x73\ \x9e\x3e\x76\x4c\x0b\x08\xd1\x80\x63\x12\xb3\xef\x87\xf1\x95\x30\ \xbd\x62\xfd\x7a\xa5\x56\x8d\x2a\xc2\xf7\x01\x5c\x62\xf5\x75\xd7\ \x59\xa0\x45\x08\x5f\xf9\xd4\xa7\x3e\xf5\xe0\xc9\x93\x27\x8b\x3f\ \x2f\x40\xfa\x7f\x5e\xe6\x3f\xf0\x81\x0f\xac\xf9\xcc\x67\x3e\xf3\ \x48\x7f\x7f\xff\x9d\x26\x44\xe5\xdb\x1a\x3b\x31\x36\xa6\x1f\xfe\ \xf0\x87\x7a\xe2\x07\x3f\xd0\xcb\x2f\xbf\xac\x01\x16\xf5\xce\x77\ \xdc\xa3\xbb\x6e\xbf\x5d\xd7\xa1\xf5\x0c\xbe\x9d\xc4\x54\xd3\x6a\ \x51\xaa\x43\x9c\x4b\x4a\x4a\x74\x88\x73\x71\xc6\x18\x6e\x11\xe7\ \x5a\x6f\x32\xa5\x75\x1b\xd6\x69\x04\x06\x6b\x08\xb9\xb0\xb0\xa8\ \x12\x02\x2f\xf2\x37\x6b\x4b\x4b\xf2\x55\xaa\x0a\x20\x98\x4a\xdd\ \x55\xae\x84\x95\x81\x0f\x03\x03\x03\xbb\x6e\xb8\xe1\x86\xad\x58\ \xc4\x63\xe7\xcf\x9f\xaf\xfe\xaa\x04\xe0\xbf\xf3\xce\x3b\x57\x7e\ \xf6\xb3\x9f\xfd\x5f\xc4\xf5\x5b\x0d\x8a\x1b\xb3\x9f\xc3\x4c\x5f\ \xda\x7f\x40\x8f\x3d\xbe\x57\xcf\x3e\xfb\xac\x5c\x7c\xfb\xbd\xbf\ \xf7\x7b\xba\xe3\x8d\x6f\xd4\x20\xc0\x95\xc2\xa7\xd3\x4e\x87\xe9\ \x0e\xb3\x0e\x0c\xc2\xa4\xa4\xa8\x31\xf1\x26\x24\x99\x11\xe2\x9c\ \x19\xa1\x98\xbd\xc6\x79\xac\x22\x01\x26\x5c\xb7\x6e\xbd\xba\x01\ \xc4\xfc\xf4\x94\xaa\x68\xba\x9c\xcb\xab\xba\xbc\x24\x87\xb5\x84\ \x88\x1e\x0d\x9f\xa3\x3c\xc7\x19\x5c\x05\x21\x6c\x02\xa3\x36\xee\ \xdb\xb7\xef\xbb\xe0\x52\xfd\x97\x15\x80\x8f\x30\xd7\xff\xd0\x43\ \x0f\x7d\x85\x89\xef\x00\xc4\xac\xd9\x4f\x5d\xba\xa4\xe7\x9f\x7f\ \x5e\xff\xf7\xb1\x47\x75\xe8\xe0\x41\xed\xda\xb1\x43\xff\xfc\xde\ \x7b\xb5\xb2\xa7\x57\xe9\x0e\xe3\x57\x68\x38\x0a\x85\x61\x0c\xaf\ \x57\x00\xc6\x02\x8c\xfe\xa6\x20\x46\xaf\x75\xec\x33\xc7\xf6\xba\ \x21\x29\xc8\x18\x16\xe4\xf1\x9c\x5b\x07\x3b\x12\x1a\xc1\x22\xaa\ \x33\x73\xaa\xb1\x86\x5a\x89\xd0\x4a\x44\xb1\x42\xf0\x33\x23\x96\ \x96\x03\x8c\xbb\x00\x4a\x42\xe6\x26\xb2\xd0\x81\xef\x7f\xff\xfb\ \x8f\xe3\x5a\xee\x3f\x56\x00\x0e\x79\x7b\xea\xe1\x87\x1f\xfe\xcf\ \x6b\xd7\xae\xbd\x8f\x58\x6e\x32\x33\x4d\xc3\xfc\x8f\x9f\x7b\x4e\ \x8f\xed\xdd\xab\xb3\xa7\x4f\xeb\xdd\xef\x7c\xa7\x6e\xdb\xbd\x47\ \x5d\x80\x5a\x86\x85\x74\x18\x8f\x59\xa6\x61\xb6\xcd\xa4\x45\x7c\ \x33\x1a\xbf\x6f\x42\x1c\x37\x6d\x24\x68\x8d\x6a\x9f\x77\xec\xbd\ \x8c\x1d\xe1\x58\x30\x6c\x32\x59\xdd\x5a\xcf\xf0\x9a\x0d\x6a\x10\ \x4e\xdd\x42\x8e\x30\x5a\x53\x3d\x57\x40\x08\x65\x2c\x21\x88\xa4\ \x23\x2a\xd6\x6a\xd6\x1d\x58\xfb\x2e\x92\xb3\x65\x84\xb0\x5f\xcc\ \xfe\x0b\x0b\x80\xb8\x1e\xf9\xc2\x17\xbe\x70\xef\x6d\xb7\xdd\xf6\ \x5f\x00\x3c\x1f\xcc\x5b\xb3\x7f\xe1\xf9\x17\xb4\xf7\xf1\xc7\x75\ \x11\xc4\xbf\xef\xf7\x7f\x5f\x1b\x09\x47\x5d\xf8\x62\x06\xcd\xe3\ \xd7\x76\x91\x21\x18\x68\x69\xb5\xcd\x58\x9b\xa9\xa6\x65\x9a\xb1\ \x7d\xac\xf6\xb1\xda\xc7\xba\xea\xd8\x8e\xac\xc3\x53\x20\x0d\x40\ \x3a\x9e\x42\x45\xc9\x29\xd7\x35\xb4\xf6\x3a\x35\x96\xc1\x02\x37\ \x27\xa7\xee\x22\x84\xa2\xfc\x60\x42\x08\xb0\x6d\x1a\x21\x10\x0d\ \x07\x08\x95\xe4\x0b\xbf\x43\x8e\xf2\x14\x2e\x3a\x21\x66\xfc\x45\ \x04\xe0\xa7\x80\xd9\xf4\x91\x8f\x7c\xe4\xaf\x40\xe0\xa4\xc9\xe8\ \x96\x09\x73\x07\x0f\x1c\x40\xf3\x8f\xeb\x3c\x21\xce\x30\xbf\x66\ \x60\x00\xcd\xfb\xd4\xed\xf7\x29\xe9\x39\xd6\x7f\x03\x2d\x2d\x42\ \xad\x58\xaf\x0e\xa3\x57\x33\x79\x95\x15\xa8\x6d\x05\x96\x38\xee\ \x8c\x1c\x28\x18\xa7\x2e\xe8\x8a\x28\x56\x73\xe5\xe5\x4c\xf4\x80\ \x88\x40\xfd\x6b\x56\x03\x86\x17\xb9\xa7\x2a\xaf\x84\x80\x8a\x65\ \xf9\x39\x1f\x8a\xc7\xd4\x20\xcc\xba\x92\x86\x56\xac\x08\x90\xa7\ \xdc\x76\xe2\xc4\x89\x47\x00\xc6\xf2\xcf\x2d\x00\x24\xd7\xf5\xc5\ \x2f\x7e\xf1\xb3\x84\xbb\x5b\x08\x2f\x36\xc1\x39\x41\x48\x7a\xfc\ \x89\x27\x34\x06\xd2\xbf\xfb\x77\xef\xd1\xda\xa1\x15\xea\x86\xf9\ \x54\x44\xea\x92\x8f\xe4\x25\x2e\x11\xbe\x3a\xcc\x59\x26\x1a\x10\ \x82\x40\xcb\x57\x6a\xfe\xaa\x31\x68\xb4\xe6\xba\xc4\xf7\x11\xad\ \xba\x79\x8f\xfa\xd6\xae\x55\x1f\xbe\xde\x47\xa8\xeb\xdf\xb8\x56\ \xf1\x35\xbd\x0a\xf7\xf4\x6b\xd5\x75\x5b\xd4\xbf\xe1\x06\x0d\x6e\ \xde\xac\x9e\xd1\x51\x2d\x9c\x1a\x57\xdf\x48\x9f\x16\x16\x27\x14\ \xab\x53\x64\x95\x5d\x35\x89\x4e\x01\x39\x0a\xa6\x92\xaa\x01\x9e\ \x41\x04\xd1\xc3\x07\x2b\xf0\xbe\xf7\xbd\xef\x3d\x2d\xa9\x71\x8d\ \xa5\xeb\xda\x4f\xf0\x81\x07\x1e\x78\x13\x7e\xff\x1e\xc2\x9d\xcd\ \xe3\xa7\x88\xc9\xa0\xaa\x8e\x1e\x79\x59\xb7\xec\xd9\xad\x75\xc3\ \xc3\x4a\x4b\x84\x38\xc1\x78\x40\x41\x98\x1b\x20\x16\xa7\x07\xfb\ \x5b\x0c\x37\x5a\xc4\xf1\x15\x82\xb8\x96\x12\x84\xcc\x55\x37\xed\ \x91\x83\xfb\xa8\x69\xdc\xe4\xea\xcc\xc4\xf1\xd7\x55\x27\x19\x8a\ \x45\xc3\xdc\x1f\x30\x67\x3a\xff\xc9\x2b\x57\x14\x4b\x74\x6b\x64\ \xeb\xf5\x44\x08\xbf\xe2\xc2\x32\x4c\x74\xc0\x3a\x6b\x27\x4e\xca\ \x9b\x5f\xd0\x0c\x19\x29\x25\xb7\xe0\xe5\x81\x0f\x7e\xf0\x83\x9b\ \xcd\x04\x3f\x4b\x00\x0e\xda\xcf\x50\xca\xfe\x21\x26\x18\xb0\xf1\ \x9e\xd4\x76\xec\xe8\x98\x8e\x1c\x3a\xa4\x34\xfe\x75\xeb\xce\x5d\ \x4a\x35\x05\xd8\x11\xaf\xc3\x3e\x28\x24\xc7\x6d\x58\x06\x52\x83\ \x43\x56\x83\xfc\x55\xc3\x34\x74\x25\xf3\x8d\xd6\xb1\x71\x11\x09\ \x0d\xaf\xd3\x10\x89\x12\xcc\x9b\x73\x96\x3c\xa8\xf3\x8c\xb8\xbf\ \xd1\x2c\x2b\x90\xea\x95\xcf\x0a\x51\x10\xff\xb3\xd7\x20\xc6\xfa\ \x72\x4e\xab\x6f\xbc\x49\xc9\xe1\x5e\x25\x03\xb8\x20\xcf\x08\x57\ \x75\x4f\x9f\x55\x1d\x41\xd4\xb3\x39\xcd\xce\xcc\xa8\xbb\xbb\x3b\ \x7a\xeb\xad\xb7\xfe\x91\xa4\xf0\xcf\x12\x40\xe0\x43\x1f\xfa\xd0\ \x1b\x30\x99\xdb\x0d\xf3\xb5\x72\x19\xb0\x9b\xd0\x91\xc3\x87\x34\ \x4b\x4e\xff\x4f\xde\x7c\x87\x92\x86\x51\x28\x0e\x85\x78\x9a\xe5\ \x4b\x56\xe3\xae\x65\x32\x92\x4c\x6a\x68\xcb\x66\x05\x11\x56\xc7\ \x0a\x3a\xcc\x73\xc0\xf9\x80\x86\x77\x6e\x53\x7a\x68\xa8\xe3\x16\ \x1d\x21\x5d\x1e\xbd\xf6\x33\x35\xaf\xa6\x68\xba\x5b\xf8\xc8\x35\ \x56\x64\x05\x56\xab\x2a\x46\x6a\xdd\x7b\xfd\x76\xd2\xeb\x16\x77\ \x81\x5a\x5d\x4d\xc0\xba\x81\x00\x3c\xb2\xc8\x02\x0a\x34\x25\xf8\ \xca\x95\x2b\xdf\x73\xdf\x7d\xf7\x6d\x90\xe4\xfc\x54\x01\x50\x8b\ \x27\xdf\xf6\xb6\xb7\xdd\x4f\x1d\xef\x33\x0f\xe5\xc9\xc0\xc6\x4f\ \x9e\xd0\x19\xd2\xdb\x35\xc3\x2b\xb5\xb2\x3b\xa3\x64\x87\x79\x16\ \xe4\x73\x01\xa6\x96\x6a\x34\x73\xfc\x24\x7e\x58\xb1\x4c\x53\xda\ \xe2\xab\xa4\xc0\x7d\xbd\x57\xb9\x43\x72\x20\xad\xe4\x86\x21\x85\ \x13\x21\xfb\xbd\x01\x68\x4d\x1d\x79\x45\x2e\xc2\xbe\xc6\x6d\x9a\ \x8c\x12\xf7\xa6\x25\xe6\x6b\xaa\x7e\xf9\x9a\xd7\x06\x53\x5f\x90\ \x68\x43\xe1\xd4\xbd\x79\xbb\xc2\x71\x8a\x29\x2c\x2f\x64\xc2\x2d\ \xb9\x81\x26\xa7\xe4\x52\x8c\x09\x25\x2e\x92\x3d\xd2\xa3\x08\xdd\ \x7e\xfb\xed\x1f\x35\x6c\xfe\x14\x01\xd8\xa4\x67\xd5\xf0\xf0\xf0\ \x9b\x6d\xd3\x02\x9a\x45\x92\xe3\xc7\x8f\x2b\x37\x33\xab\x3d\xdb\ \xb7\x2b\xe1\xb5\x98\x0f\x7b\x6d\x34\xae\xd4\x44\x1b\x0b\x33\x6e\ \xa8\x92\x5d\xd6\xa5\x23\x47\x54\x5e\x5a\x6a\x23\xbb\xd4\x43\xde\ \xde\x0b\x36\x38\x8e\x0f\xd7\x58\xad\xae\xf5\x83\x72\x9d\x96\x36\ \x2b\xa4\xd2\xe7\x5f\x78\x41\x59\xf2\x8a\x2b\x35\xeb\x59\x17\x60\ \x6c\x0b\xc3\x4f\x7c\x0f\xf6\xad\x92\x17\xc8\x09\x6e\x38\x57\x63\ \xee\x9a\x82\x31\x4f\x91\x95\x09\xa5\x46\x37\x2a\x3e\x30\xc2\xf7\ \xa0\x65\xc6\x2f\x59\xc5\x80\x8e\x6a\x5e\xbc\x64\xb1\xa0\x8a\x40\ \x5c\xce\x01\xea\xef\x06\x13\xd3\x3f\x4d\x00\xa1\xfb\xef\xbf\xff\ \x1e\xc2\x5e\xcc\xdc\x5c\x06\xfd\x2f\x9e\x3b\xa7\x4b\x50\x17\x68\ \xba\xb2\xaf\xcf\x32\x1f\x31\xc9\x89\xf5\x41\x34\x58\xc2\x02\xaa\ \x2c\xca\x6f\x17\x6b\x35\x39\x05\x5e\x2c\x9d\xbf\x60\x90\xdd\x32\ \x11\x27\x3d\x1d\xdd\xbd\x4b\xc9\x15\x5d\x2a\xe3\xef\x31\xc2\xd4\ \xf2\xc4\xa4\x2e\xec\xdb\xaf\x6a\xbe\xd0\x36\xfd\x46\x27\x62\x40\ \xae\x25\xbe\x5b\x6c\xa9\x15\x73\xea\x1e\xdd\x2c\x67\x78\xbd\x6a\ \xf1\xaa\xea\xe1\x05\x79\xf1\xac\xba\x6e\x5a\xa3\xfe\x37\xbf\x13\ \xdc\x59\x05\x58\xc2\x38\x40\xe9\x48\x90\xcd\x2a\xad\xe6\x1d\x98\ \xaf\x9d\x3f\x2f\x1f\xf3\x93\xbe\x1b\x2b\xe8\xff\xd8\xc7\x3e\xf6\ \x96\x2b\xf9\x0e\x74\x0e\x4c\xbc\x5f\xb7\x6e\xdd\x3f\xb5\xfd\x3a\ \xc8\x80\xdf\xc4\xd9\x73\xca\xcf\xcd\x69\x23\x05\x89\x61\x3e\x6a\ \xd2\x52\x99\x2c\xcd\x11\xff\xc1\xb0\xf1\x39\x4f\x35\xbf\x83\x96\ \x1b\x62\xdd\x36\x7e\x2f\xf2\x5c\x79\x69\x59\x7d\xeb\xd6\xca\x47\ \x8d\x2f\x01\x58\x2a\x29\xda\xb7\x5a\x0b\x2f\x3d\xa5\xec\x89\x39\ \xee\xbd\x3a\x3a\x74\xa2\x87\xeb\x95\xe4\x73\x4c\x1e\x11\x56\x80\ \x46\x49\x61\xfa\xac\x62\x3d\x03\xea\xb9\xee\x06\x35\x86\xd7\xa9\ \x5e\x29\xda\x7b\xd3\x3c\xeb\x0f\x84\x54\x2f\xcd\x6b\xf9\xcc\x01\ \xf9\x38\xbe\xaa\xbc\x75\x11\x22\x19\x63\x63\x72\x52\x3e\x5c\xb3\ \x1a\x29\x8b\x2e\xb4\x46\x46\x46\xee\x91\xf4\xb7\x50\xf5\x4a\x01\ \xf8\xe8\xeb\xf5\x51\xec\x6c\x43\x00\xb6\x46\x5f\x9a\x9f\xd7\x0c\ \xc0\xe7\x15\x8a\x1a\x1d\x18\x84\x79\x4f\xe0\x7d\x0b\xf4\xd4\x12\ \x00\xa7\x14\x2a\x4b\x95\x4c\x42\x3d\x23\x61\x92\x91\x90\xb8\x6c\ \x85\x20\xa8\x00\x08\x25\xfa\xfb\x59\x5c\x55\x0d\xe2\x7d\x94\x92\ \x36\x68\xd2\x65\xaa\x44\x0b\x1d\xed\x4c\x11\x8b\x69\x9b\xbd\xcb\ \xbc\xf4\x06\xca\x05\x25\x82\x43\x6a\x54\x29\x74\x66\x2f\xa8\xd0\ \x33\xc8\x3c\x2b\x69\x93\x05\x99\x2b\x6d\x05\x40\x6f\x0d\x21\x56\ \x55\xbc\xf4\x8c\xca\xf3\x17\x98\x2c\x70\x75\xaa\x67\xc0\xb5\x84\ \x30\x97\xb3\xaa\xd3\x91\x0a\x66\xba\x2c\x18\x92\x22\xdf\x2a\x29\ \x7e\x8d\x00\xde\xf7\xbe\xf7\xed\xa4\xe7\x96\x32\x75\x7e\x1d\xbf\ \x5e\x64\xf1\xb9\xf9\x39\x85\x78\xa8\x2f\x95\xb4\xa6\x1f\xb8\x42\ \xfb\x12\xa3\x44\x4e\x8e\x65\xf4\xd3\xcc\x1c\x1a\x54\xaa\xe6\x80\ \xcc\x2d\x21\x48\x56\x10\x2d\xcd\x3a\x15\x85\x32\xd7\x59\xbb\x4b\ \x76\xf7\x90\xae\x26\x61\xfc\xef\x05\xb5\x6c\x05\xd0\x10\x12\xc0\ \xd7\xc1\x1f\xa7\x2e\xa9\xc6\x5c\x01\x42\x20\x45\xce\xd8\x8f\xd1\ \xf4\x0d\x4a\xaf\x24\xc4\xca\x69\x27\x57\x2e\x65\xf2\x69\x15\x27\ \x9e\x43\x18\x01\x6b\x8d\x57\x49\x80\x63\x38\x96\x43\x16\x5b\xa3\ \x3f\x11\xdb\xb8\xd1\xe2\x55\x32\x99\x1c\x7d\xef\x7b\xdf\xbb\x96\ \x56\xda\x92\xb9\xab\xe3\x0b\xc1\xcd\x9b\x37\xef\x68\x58\xe0\xf1\ \x6c\x03\x73\x79\x76\x4e\x55\xe2\x68\x8c\xef\x69\x90\x36\xc8\x1f\ \xf5\x75\x90\xda\x35\xe4\x5a\x72\x2b\x1c\x67\xb3\x30\x38\x48\xd2\ \xe2\x5a\xc1\xe2\xfb\x68\xc7\xf8\xb1\xa1\xba\xdc\x26\x85\x4c\x77\ \x9f\xd5\x78\xc7\xd4\xbd\xcb\x73\xb9\x1d\x74\x87\x60\x3c\x88\x30\ \x09\x7d\xcc\x63\xae\x63\x05\x7e\xf9\xf2\x21\x95\x4f\x1d\xd0\xc2\ \xab\x87\x39\xc7\xf9\xa6\xc1\x9e\x25\x15\xce\x3f\xa6\xc2\x1c\xbd\ \x01\x04\x5f\xcf\x5f\x5b\xf9\xda\x39\xc1\x19\x17\x6b\x0e\x4a\x82\ \x3f\xdb\x7e\xa7\x48\xba\xd1\x28\xfd\x4a\x0b\x08\x63\x1a\xd7\x99\ \xf0\x02\x59\xd4\x2c\x90\x50\x08\x41\x24\xda\xa5\x6c\x80\xf3\x72\ \x98\x54\x90\x73\xd9\xd3\x6c\xde\xdf\x58\x32\xa5\xe9\x9c\xa2\x83\ \x6b\x94\x3d\xf4\x8c\x2a\x97\x6a\x1d\x3c\xb0\xc5\x4c\x78\x75\x4c\ \x99\x70\x54\x24\x16\x5a\x9a\x9c\xe0\xba\x07\xe3\xcd\xcb\xe9\xb0\ \x5b\xad\xd1\xe8\x98\x57\xe0\x62\x45\xd1\xeb\xd7\x60\xe6\x61\x2d\ \x1e\x3b\xa2\xca\x82\x1f\x86\x5b\xf7\xf8\xfc\x35\x85\xce\x9d\x56\ \xa3\x56\x51\xd7\xaa\xf5\x98\xfe\xb3\xaa\xcc\x8f\xa9\xb4\x80\x5b\ \x16\xa5\x7a\xe1\xda\xfe\x07\xcc\xd8\xf4\x98\x57\x4e\x56\x79\x00\ \x9d\x3d\x0d\x18\xae\x6f\x0b\xa0\x61\x05\x40\xba\x18\xe5\xe4\x68\ \x5b\x00\x36\x01\x2a\xe7\x73\xf2\xd7\xea\xb6\x3b\x13\x70\xeb\x98\ \x62\xf8\x1f\x2c\xa8\x3c\xa8\x56\xc0\xdf\x27\x4e\xab\x67\xe3\x0e\ \xe5\x87\x46\xc9\xc2\x9e\x57\x79\xc1\x33\x8b\x87\x19\x68\x68\xc0\ \x40\x33\xa1\x2a\x8e\x35\xc0\x2c\x9d\xe2\x46\xa5\x53\x00\x59\x37\ \xc1\xda\x96\x54\xca\xe4\x94\x19\xb8\x9d\x67\x69\xa2\x5e\xbc\xa0\ \xfc\xc5\xc6\x55\x40\x19\x8c\x73\x5f\xed\xbb\xf2\x6e\xbd\x59\x95\ \xc9\xa7\x54\x5e\xac\xa9\x59\x8c\xaa\x3c\x57\x27\xa7\xa8\xf2\xb7\ \xac\x17\x5d\xbd\x4c\x5c\x5a\x46\x08\xf4\x26\xa9\x8c\xac\x52\x00\ \xc3\x75\x6d\xe5\xd7\x6d\x82\xcd\xc9\x08\xfe\xdf\xdd\xa9\xc4\xea\ \xa0\xa6\xcb\x03\x41\xd3\x91\x09\x88\x73\x39\x72\x11\x34\x68\x7c\ \xfc\x27\xd2\x69\x66\xc4\x4c\x9b\xf4\xec\x12\xe4\xe7\x45\x0d\x6c\ \xd8\xae\xd2\xf8\x51\x98\x58\xb4\x02\x18\xde\xb3\x4b\x4e\xb7\x2b\ \x07\x21\x86\x58\x40\x64\xc5\x88\x4a\xaf\xce\x6a\x74\xcf\x1b\x25\ \xaf\x85\x01\x67\x9e\x79\x56\x7e\xea\xfd\x08\x7d\xbe\xee\x61\x22\ \x45\x31\xcf\xf5\x9b\x55\xdf\x1c\x63\x0e\x33\x7f\x15\x4d\x2f\x68\ \xe1\xf4\xb8\x8a\x67\xa6\x34\xe1\xfe\x9d\x32\x83\x39\x84\x44\xb4\ \x28\x86\x55\x99\xcb\x2b\x10\xa9\xcb\x09\xb3\xf6\x25\x3f\x56\x72\ \x79\x6d\xd6\x0d\x7d\x75\x97\x90\x5d\xc4\x00\xfa\xad\x1b\xc0\x6b\ \x7f\xc7\xfa\x2f\x63\x00\xbe\x11\x45\x00\xd6\x02\xdc\x3a\x92\x05\ \x40\xa8\xeb\x61\xcc\x91\x8b\xf9\x05\x42\x36\x5e\x5f\x4d\xae\x6b\ \x47\xaf\x8e\x58\x08\x87\x15\x6a\xf4\x10\x5a\x0e\x0f\x0e\x81\xd8\ \xd6\xcf\x6d\xb8\x13\x0c\xd4\x8b\x59\xeb\x42\x19\xac\x24\x3c\x14\ \x15\x27\x3b\x58\x80\xe6\x5c\xc5\x46\x42\xea\xd9\x76\x8b\xfc\xa1\ \x20\xf3\x56\xed\x73\x16\x6b\xcc\x75\x4c\x37\xde\xdf\xa7\x91\x9b\ \x6e\x26\x5b\xcd\xc0\x64\x5e\xf9\x19\xae\xe5\xfd\x58\x4e\x90\x28\ \xb0\x48\x32\x86\x9b\x76\xb9\x8a\x64\x58\xcb\x95\x3a\x6a\x97\xe6\ \x5e\x0d\x1e\x02\x81\x4e\xc8\x8f\x9b\xe1\x2a\x01\x70\x32\x72\xb9\ \x16\x77\x5b\x80\x17\x96\x14\x89\xf9\x31\xdd\x28\x8b\xd4\x15\x49\ \xcb\xb5\x82\xf0\x4c\x49\x5a\x5a\xb6\xb1\x21\xdc\x3d\x80\x46\xdb\ \x80\xe7\x1a\xe1\x34\x31\xfb\x49\xc1\x15\x89\xcb\x0a\x65\x76\xdd\ \x22\x5f\x2c\xcb\x12\x4a\x24\x31\x45\x25\x56\x39\xca\xec\xbe\x55\ \x99\xd5\x6b\xdb\x00\x57\x62\xc1\xb8\xa3\x4d\xa6\xda\x64\xc1\xd2\ \x53\xff\xa6\x75\xd6\x2a\x4a\x53\x92\x9b\x8d\x20\xd8\xba\xaa\x26\ \xde\x57\x1d\x18\xa4\x14\xee\x62\xed\xc1\xab\x2c\x14\x62\xe4\x79\ \x9a\xa8\x1d\x01\xc4\x7e\x12\x04\x1d\x4c\xc3\xf1\x0c\x83\xf6\x4a\ \xd3\x5e\x08\x3a\x52\x18\xb2\xe8\x0f\x98\xd9\x30\xe5\x75\x26\xbe\ \x3a\xe6\x34\xeb\x46\xca\x06\xa1\xeb\x36\x7d\xc5\x96\xda\xd6\x01\ \x92\x97\x7d\xf2\xa6\xcf\xab\xb1\x9a\x50\x18\x0a\xab\xff\x86\xdd\ \xca\x12\x59\x34\x77\xc6\x3c\x49\x65\x78\x17\xf8\xb1\x0d\x2d\x8a\ \x79\xd0\x7e\x39\xaf\x06\x02\x38\xfd\xa3\xa7\x2c\xd3\xe1\x78\x5c\ \x83\x37\x5c\x8f\x55\x31\xab\x93\xc5\x22\x82\x6a\xe4\x04\x78\x86\ \x55\x26\x5a\x79\xf8\x39\x38\x06\xcc\x98\x05\x7b\xf8\x7a\x93\xe7\ \x9d\x2b\x85\x60\xad\x08\x2b\xef\x84\xe7\x4e\xd2\xd8\x11\x00\x42\ \xe7\xc3\x85\x76\x3b\xcc\x4f\xa3\x11\x62\x45\x7e\x18\xf0\xe1\x54\ \x75\xb7\x80\xb6\x42\x52\xbd\x3d\xe7\x55\x42\x68\xb6\x42\x98\x5a\ \x3e\xe7\x96\x0b\xb8\x90\x09\x93\x56\x8b\x00\x1e\x52\x07\x89\x0b\ \x53\x17\x94\x1a\x59\x85\x80\x7c\xea\xdd\xb8\x55\x8d\x35\x68\x5c\ \x20\xbc\x31\x7b\xeb\xaf\x35\x35\x8c\xf6\x4b\x05\xc6\x20\xb1\xbf\ \x64\x05\x50\xcb\x17\x48\x84\x7a\x94\x59\x13\xa3\x29\x7b\x09\x2c\ \xc1\xdd\x96\x22\xcc\x5b\x47\x00\xb3\xed\x90\x07\xb9\x0e\x2e\xd4\ \xb4\x02\xa8\xe6\x6c\xc8\xb2\x82\x11\x14\x08\x87\x6d\xe9\xcd\x77\ \x53\x17\x94\x0c\xcf\x57\xba\x80\x0b\xff\x95\x8e\x00\x02\xc1\x80\ \xc2\xc1\x90\x15\x40\xb3\xcc\x12\x17\xa7\xd4\xe0\x38\x94\x34\x3c\ \xa3\xd5\x2b\xfc\x1f\xe2\x24\xa3\x9f\x3e\x7d\x2c\x69\x05\x51\x5b\ \x9c\x36\xa6\xd9\xbe\xee\xb6\xcc\xb9\xe8\xd3\xd2\xf1\x83\x68\xc6\ \x30\x55\x13\x92\xc4\x4d\x70\x2f\x88\x63\x90\xd8\x16\x39\x30\x4b\ \x31\x55\x2a\xa3\xd5\xcb\xee\x86\xe6\xfd\xa4\xc3\x21\x55\xaa\x13\ \xe4\x13\x45\x04\xd0\x24\x22\x04\x40\xff\x29\xee\xab\xb5\x75\xd0\ \xae\x03\x1c\xc1\x2c\x7e\xcf\xd8\xd6\x26\x6b\xf3\x29\x9c\x4c\x5e\ \x16\x00\xd6\x5e\x96\xe4\x5d\x69\x01\x55\x8a\x85\x2c\x17\xe4\xf0\ \x2f\x88\xb4\xa2\xd4\xf3\x05\x53\x86\x56\x1c\x55\x2f\x4d\x2a\x0a\ \x6a\xbb\x4b\x53\x0a\xa7\x43\xaa\x2e\xb9\x1d\xe5\x63\x15\x14\x48\ \x5d\x52\x33\x19\x55\xbc\xb7\x4f\x75\xb4\x5f\x9e\xba\x88\x00\x0c\ \x00\x36\x21\xd7\x2c\x02\x01\x38\x2a\x2d\x9e\x52\x61\xc3\x46\xac\ \x60\xd4\x6a\x85\xa7\xda\xeb\x68\xf9\x37\x44\xec\x9f\x46\x0e\x4d\ \x0b\x82\xa3\xb7\xdc\x6c\x05\x10\x8c\xfa\x15\x88\xcf\xca\xf5\x16\ \x50\x42\x59\x71\x94\x51\x9e\xe1\x38\x32\xaf\x6a\x10\x86\xea\x6a\ \x15\x44\x30\x6e\x4a\x82\x9a\x8d\x6d\x86\xe0\x06\x1e\x3c\x53\x84\ \x51\x94\x75\xde\x99\xa1\xec\x79\x06\xb7\x63\x01\x4d\x88\x28\xb3\ \x30\xe9\xb5\x93\x9d\x40\x84\xbc\x9d\xc2\x21\x84\x69\xca\x63\xc2\ \x19\xfa\x82\x17\x4f\x29\xb3\x69\xbb\xe2\x1b\x57\x28\x71\x5d\x58\ \xb1\x15\x94\xc6\x2b\xa5\xd4\xfa\xa8\xd2\x3b\x37\x72\x6d\x27\x9a\ \x0a\xa8\x34\x37\xad\xda\xec\x02\xe6\xd9\xd2\x1e\x02\x80\x18\xb1\ \x82\xf2\xa5\xa2\x96\x8e\x1e\xe0\xb8\x24\x54\x67\x1b\x9a\x6a\x6b\ \xbe\x69\xc8\xa5\x09\x33\x8f\xb5\x95\x1c\x2e\x5b\xf4\xc7\xa4\x03\ \x54\x7a\xa4\xb3\xd5\x29\x3a\x3f\xe4\x23\x7c\x0f\xc5\x68\x84\xa4\ \x27\x94\x1c\xad\xaa\x6b\x6d\x43\xd1\x6e\x62\xfb\x30\x58\x91\xa0\ \x44\x4e\x19\x16\x3a\xd6\x60\x5c\x22\x24\x7f\x3c\x81\xe2\xd2\xea\ \x58\x38\xca\x3e\xcb\xe0\x5e\x69\x01\x15\x5e\x37\x5f\x68\xa7\x8a\ \x56\x00\x71\x3a\x2d\x61\x80\xca\x71\x72\xaa\x2e\x37\x95\x3b\xfa\ \x8a\x86\x6e\xbc\x59\xdd\xeb\x37\xca\xb9\x7e\x37\xfe\x99\x67\x81\ \xb8\x45\x22\x69\xcd\x2b\xc4\xbd\x1e\x0c\x94\x2e\x9e\xc5\x05\x4c\ \x62\xd2\xb0\x21\xc8\x46\x08\x00\x94\x0f\x7e\x4b\x59\xfa\xea\xb8\ \x4a\x37\x6c\x53\x6a\x68\x58\xb0\x29\x62\x94\x05\x4e\xdb\xe2\x22\ \x6f\xaf\x13\x4a\xdd\x52\xc8\x0a\x8e\x05\x83\x17\x75\xc6\x59\xc5\ \x7a\xa9\x27\xd2\x31\xd6\xd3\x24\xaf\x99\x50\x62\x10\x54\xc7\xdf\ \xb3\xb1\xba\x92\x83\x8e\x55\x54\xac\xdf\xa3\x36\xc1\xcc\xc9\xf0\ \xf9\x87\xc9\x1b\xcb\x89\xcb\x47\x63\xc6\x6f\x92\x20\xe6\xe7\x63\ \x36\x5b\x9c\x66\x68\x5c\x89\x01\xb5\x31\x3e\x6e\xfb\x8f\xfa\x90\ \x5a\x82\xfa\x3f\xc2\xc3\x4c\x62\x4d\xac\x7c\x3e\xaf\xe9\xe7\x7f\ \x04\x43\x25\xf9\x9d\x0a\x85\xc9\x08\x4c\x0c\x21\x71\xee\x71\x6c\ \x1e\x4f\x3c\x9e\x21\xef\x9e\xc5\x8f\x6d\x28\x6d\xbd\xf4\xb4\x16\ \x00\xd5\x4d\xdd\x40\x9a\x3d\x57\x50\x69\xf2\x02\xf7\x57\xed\x33\ \x1e\xd4\x74\x49\x9d\x99\xb7\x78\xe1\x04\xe8\x5e\x36\xf7\xd9\x6e\ \xd1\xf9\x67\x9f\xd3\xf4\xb1\x1f\xab\xb4\x7c\x46\xd1\x01\x3f\x16\ \x66\xc2\xd5\x8c\x22\xe9\xb8\x42\xa9\xa8\x62\x03\x41\xf5\x6d\x75\ \xd4\xb3\xc9\x53\xcf\x96\x06\x02\x90\x4d\xd6\x1c\xd7\x47\x04\xf3\ \xb5\x36\x5c\xa0\x9c\x38\x1d\x67\xe1\x0a\x9d\x4c\xf7\xa5\x97\x5e\ \x3a\x72\x0d\x08\x3e\xf9\xe4\x93\x87\x79\x97\x56\x32\x37\x38\x94\ \x9d\x71\x04\x10\xc5\x0a\x8c\x09\x35\x25\xea\x7b\x29\x77\xf8\xa8\ \xe6\xc7\x0e\x61\xde\x79\x62\xef\x84\x8d\xd9\x96\xbc\x9a\x05\xb7\ \xfc\xe9\x63\xc4\xe6\x26\xd7\x3d\xcb\x7c\xc7\x05\x3a\x84\x50\xb8\ \x86\x20\xb0\x1e\x98\xb7\x66\xcf\x09\xc2\x24\xf5\xc1\xf4\x5e\xcd\ \xef\x7f\xc2\x6a\xd0\xab\x59\x90\x45\x08\x15\x18\x68\xd0\xf1\x09\ \x71\xef\x12\xe7\x2f\xe2\xe7\x30\x97\x48\x51\x7c\xf5\x70\x2d\x4e\ \xe1\x14\xa2\x90\xf1\x81\xfc\xed\x30\x58\x43\xf7\x35\xbf\x22\x4e\ \x00\x1c\x8b\xc9\x0b\x85\x08\xbb\xf4\x12\x4c\x94\x81\x30\xff\x69\ \xb6\x1b\x9d\xfc\x49\x10\xf4\xf8\x5c\x64\x33\xc3\xab\xd4\x04\xdb\ \x48\x15\x49\x66\x32\x4a\x50\xe2\xe6\xe9\xa8\xd8\x5c\xda\xe5\xe1\ \x0b\x35\xcd\x3d\xff\x14\xdd\x9d\x21\xc5\xfa\xfa\x55\x5d\x30\x66\ \x69\xea\xfd\x10\xe0\x35\xa7\x3a\x55\x57\x2d\x17\x31\xcc\xb6\xa3\ \x83\xc9\x0f\x60\x1e\x57\x41\x8a\x9c\x73\xad\xc9\xe3\x9b\x30\x58\ \x80\xa1\x79\x79\x95\x33\xb8\xd8\x51\xac\x62\x99\xe2\x86\x34\x35\ \xe0\xb4\xdc\x47\x02\xe9\x23\x58\x98\x41\xf5\x79\x70\x61\x49\xa1\ \xae\x1e\x1a\x17\x71\x14\x94\xa0\x59\x02\x40\xc3\xa4\x70\x51\xb1\ \x36\x61\x31\x6e\x1d\xed\x57\xc0\x8c\x0a\xd1\x05\x73\xf1\x27\x53\ \xaa\x74\xa5\x71\xdb\xf5\xca\xb6\x37\x66\xcd\xcf\xcf\x1f\x94\x94\ \xfd\xc9\x96\x58\x13\x9a\xc7\x0b\x9e\x05\x21\xad\x99\xf8\x31\x9d\ \xf4\x9a\x35\x0a\xa6\x52\xed\xa6\xa4\xd0\x9c\xa3\xfc\x49\x1a\x25\ \xfb\x9e\x46\x71\x86\x81\x32\x42\xb8\x00\xd3\x33\xaa\x2d\x2f\x81\ \x65\xa1\xab\xc2\x97\x07\xb5\xcd\x1f\x42\xe3\x6a\xa0\x41\x97\x89\ \x2e\xaa\x3a\xbf\x17\xac\xd8\x8b\xc6\x8f\x32\x4f\x56\x45\x84\x0b\ \xd6\xd8\x8c\xce\x41\x60\xe4\x06\x3c\x5f\x67\xfe\xf3\xcc\x3b\x4b\ \x68\x0e\xc2\x78\x44\x0e\xc2\xf6\x05\xad\x10\xf0\xeb\x2e\xe6\x8b\ \xf3\xbd\xdd\xaa\xc9\xe1\xf7\x65\x42\x78\x1d\xed\x93\x70\x05\x33\ \x19\xa5\xae\xdf\x2a\x5f\x3c\x66\x9b\x21\xa6\xd7\xc1\xde\x81\xc7\ \x84\x4a\xff\xa1\x9e\x60\xe9\x3b\xdf\xf9\xce\xf7\x30\x91\xaa\xc1\ \x02\x87\x50\x18\xe7\x0d\x4c\x64\x90\xb4\x36\x16\xb5\x21\x05\xb9\ \x80\xf2\xd2\xf2\xe1\x63\x5a\x3a\x31\x66\x72\x76\xa8\x26\x37\x3f\ \xa7\xe5\xb1\x7d\x2a\x4d\x2f\xb0\xc0\xa0\x01\x1c\x8b\x1d\x3c\x70\ \xd9\xfc\x1b\x90\xcf\xef\xa2\x4d\x63\xf6\x27\x08\xaf\x17\x44\xc5\ \xc5\xb1\xc9\x14\x49\x6d\x67\xc8\xeb\x0b\x71\xc1\x91\x15\x58\x85\ \x0c\xaf\x1b\x8c\x49\xf6\x0d\x12\x96\xbb\x15\x80\xe9\x96\x19\xc9\ \xb6\xcd\x85\xf6\x1d\x5f\x08\x0e\x18\x9b\x30\x8e\xe9\x8b\x42\xc8\ \x57\xc0\xfc\x3d\x08\xe4\x5f\x0e\xfa\xb4\xfa\xce\x3b\x55\x67\x1d\ \xed\x0d\x1d\xcb\xff\xf3\xab\x5f\x7d\x54\x92\x7b\x4d\x4f\x50\x2c\ \x85\xed\x25\x63\x48\xe8\x50\x3c\x1e\xbf\x85\x92\x51\x41\xd0\x33\ \x45\x27\x25\x4b\x77\x55\x24\x27\xcc\x62\x2b\xad\xdc\xb9\x3a\xfe\ \xba\x4f\x09\x5c\x21\x94\x4e\x09\x75\x63\xa2\x05\x15\xcf\x03\x82\ \xe5\x59\xe5\xa7\xd1\x98\x79\x3e\x81\x76\x22\x61\xae\xdb\x82\x04\ \x90\x42\x33\x69\xa8\x2f\x20\xc0\xc5\x76\x8b\xb9\x04\xb3\x2e\x89\ \x48\x85\x50\x9b\x27\xf5\xbe\x84\x15\xd4\x5a\xcf\xf8\x4d\x76\x88\ \x40\x8a\x97\x6b\x14\xdc\xa3\x6c\xdd\x11\x0d\xb5\xdc\xac\x0e\x55\ \xb8\x37\x8f\xd5\x2c\x04\x14\xc8\x13\x26\x11\x8c\x47\xdc\x0f\x6c\ \xda\xa0\x24\x2f\x6f\xe7\x0a\x79\xdb\x0d\x62\xd3\xc4\xe3\xf9\x62\ \x71\xca\x4a\xf2\x5a\x01\xd8\x93\xb3\x7b\xf7\xee\x7d\x84\xf6\xb8\ \xd9\xdc\xe8\x04\x89\x02\x49\x04\x50\xe4\xbd\xa0\x72\x79\x28\x67\ \xb5\x5a\x2b\x38\xca\x9d\x9e\xd7\x12\xe7\xfb\xf7\xec\x84\x11\x59\ \x8d\x37\x1d\x17\x01\xd5\x29\x54\xa6\x68\x5e\x56\x6c\x1c\x0f\x63\ \xce\x84\x22\x50\x1b\xad\x24\x73\x8a\x0f\x61\x5d\x32\x61\xcf\xb1\ \x59\x9c\xc7\xc2\xb2\x2f\x5f\xd2\xfc\xcb\x0d\x30\xc6\xa7\x64\x66\ \xb0\x53\x9e\xd8\x66\x4b\xad\x14\xc6\x5d\x7c\x8a\x90\x03\x78\x80\ \x26\x21\x02\xa1\x76\xf3\xf7\x10\x08\x2e\xa8\xb2\xd1\x08\xb8\x32\ \x8b\xf6\x97\x30\xff\x32\x18\x80\xdb\x9e\x25\xc3\xdc\xf0\xcf\xde\ \xad\xba\xcf\xe9\xec\x55\x74\xbf\xff\xdd\xef\x7e\x05\x26\x4b\xe2\ \x73\x8d\x00\x3a\x49\xd2\xfe\xfd\xfb\x1f\xc7\x0a\x5e\xd9\xbe\x7d\ \xfb\x36\xfa\x67\x0a\x00\x84\x5d\xbb\x76\x69\x79\x0e\xf3\x86\xa9\ \x26\xa4\x86\x30\x59\x72\x83\x53\xa7\xd4\xbd\x69\x2d\x0c\x46\xf0\ \xd7\x12\x3d\xfe\x57\xb4\x34\x0e\x63\x2d\x03\xb3\xa6\x7f\xfe\x99\ \xe7\x8c\x55\xab\x7b\xa3\xc7\xcb\x4d\x97\x4c\x2e\x88\xb5\xa0\x79\ \x00\x8b\x66\x08\x02\x80\xc9\x2c\xe9\x33\x9a\xf3\xc8\x00\x27\x5e\ \xdc\x7f\xe5\x0e\x26\xee\x97\x46\x76\x01\x8e\xfd\x54\x99\x7d\x30\ \x69\xe6\x75\x0a\x08\x1d\xa0\x2d\x92\x3c\x65\x6b\xf2\x2f\x32\xd7\ \x14\x82\xce\x05\x01\xbf\xa8\xf2\x7d\xdd\x8a\xdc\xb2\x5b\x29\xc0\ \x6f\x1e\xed\x9b\x8d\x1d\x67\x4e\x9f\x7e\xe2\x99\xa7\x9e\x3a\x20\ \x56\xff\x53\xdf\x0e\x77\xb2\x42\x5e\x8b\xf9\xb6\x6c\xd9\xf2\x16\ \x3a\xc5\x8e\x49\x8a\x82\x50\x9d\xee\x6a\x93\x56\xb7\x8c\x00\x6c\ \xda\xea\x90\xa2\xd6\xd0\x68\x17\x3e\x38\x21\x77\xf9\x15\xb0\xa0\ \x2c\x8c\x11\x80\x74\xac\x69\x63\xe1\x24\x55\x52\x7a\xb5\xa7\xde\ \x55\xae\x7a\x77\x05\x40\x72\x98\x08\xf9\xb0\x0e\x23\x00\x21\x08\ \xfc\xff\xac\xa7\xec\xb4\x0f\x30\x75\xae\x69\x3a\xe1\x5d\x60\x90\ \xa3\x44\xcc\x53\xa8\xa7\xfd\x72\xd4\xb6\xa1\x58\xc3\x32\xda\x9f\ \x02\x57\x26\xb9\xe7\x22\x20\x59\x00\x24\xfb\x07\x75\xaa\x2f\xa5\ \x1d\x0f\xfe\xa1\x6a\x91\x90\x49\x7a\x44\x92\x57\xfb\xc6\x23\x8f\ \x3c\x38\x7e\xf6\xec\x31\x33\xe5\xcf\x7a\x3d\xee\xb2\x0d\x75\x86\ \x77\x69\xdb\xd9\x6a\xb2\x26\x12\x8d\xb2\x80\x98\xc2\x50\x69\x6e\ \x16\x90\xa1\x2f\x8f\xd9\xa2\x3d\x00\xad\x81\xc4\x27\x15\x0c\x9d\ \xc5\xa5\x2b\x80\x95\x09\x18\xd4\x06\xa4\xa6\x80\x34\xcd\x89\xa6\ \xba\x60\xbe\x67\x65\x83\x66\x87\x0f\x40\x0d\x60\xbe\x41\x9b\x5b\ \xd8\xac\xa6\x2d\x80\xfa\x82\x47\xb2\xe3\x53\x69\xde\x0a\xa5\xa3\ \xfd\x4e\x25\x6b\x29\xc1\x5c\xb1\x3e\xb5\xdc\xad\xc1\x89\x3c\x37\ \xce\x50\xfa\xe2\xd1\xc1\x69\x7c\x3f\x6b\x36\x47\xf4\xea\x04\x09\ \xd2\xba\x7f\xf7\x51\x45\x79\xf9\xba\x48\x64\x9a\x9b\x9b\x63\x2f\ \xd3\xfe\xaf\xfd\xcd\xc3\x0f\x3f\x64\xf2\xb9\x9f\x77\x83\x44\x89\ \x0d\x88\xb3\xec\xb8\x7a\x07\x1b\x0c\xc2\x30\x6f\x22\x01\x42\x88\ \xab\x44\xf9\xe9\x00\x88\x04\x5d\x5b\x76\xc6\xd3\x15\x16\xd6\x80\ \x29\x07\x40\x74\x38\x86\xf1\x98\xc7\xf9\xa6\x52\x7d\x9e\xd2\xc3\ \x4d\xa5\xb7\xf8\x31\x5f\x7c\x33\x12\x82\xa2\x58\x40\xbc\x85\xe0\ \x4d\x59\x60\x13\x0c\xb9\xcb\x9e\x0a\x0b\x3e\xac\x47\xd7\x7e\x9a\ \xcc\xdb\x83\x10\x98\xd3\x66\x83\x26\xdd\x5d\xa0\xc4\x9d\x26\xde\ \xcf\x60\x55\xb9\x30\x80\x99\xd1\x59\xf2\xfd\xf0\xbb\xde\xae\x91\ \xb7\xbd\x55\xd9\x72\xc9\x68\xde\x00\xdf\xe4\x9f\xfd\xf1\x1f\x7f\ \x14\x0c\xb8\xe4\x32\xd3\xcf\x2b\x80\x06\x7e\x33\x07\x72\x3a\xec\ \xc8\xbc\xdd\xb8\x42\x10\x21\x18\x30\x0b\x43\x65\xfa\x73\xbe\x4a\ \x99\xa2\xa4\xa6\x44\x0f\x9d\xa3\x5e\x13\x8d\xa0\xa0\x6c\x46\x16\ \xee\xf6\x51\x2c\xf9\x14\x1d\xf6\xa3\x75\x3f\x11\xc1\x68\x3e\x0c\ \xf3\x09\xf0\x20\x45\x0c\xa7\x34\x05\xc5\x65\x30\xc0\xad\xdb\xf6\ \x99\x93\x6d\x08\x78\xa4\xd1\x69\x31\xe4\xca\x8f\x2d\x61\xa3\xcc\ \x99\x49\xca\xbe\x2d\xf2\x2d\xa2\xf1\x59\xfc\x7d\x0e\xca\x86\xb9\ \x9e\xd6\x85\x44\x46\xb9\x9b\x76\x6b\xcb\x07\xff\x40\x45\x22\xce\ \x2c\x9a\x27\xb3\x73\xbf\xfd\xcd\xbf\x7d\x60\xec\xd0\xa1\xa7\x8b\ \x92\xfb\x8b\x6e\x92\x32\xfb\xf4\xcf\xd0\x2e\x5f\xcb\x0b\xc5\x8d\ \xc6\x15\x82\x26\xb4\x25\x13\xb6\xf8\xa9\xd0\xc5\x4d\xc6\x4b\x8a\ \x67\xaa\x14\x44\x4d\x2b\x00\x27\xe0\x20\x04\x53\x81\xf9\x18\x61\ \x3a\x1c\xe0\xd8\x6a\x1d\x4a\xf2\x3d\x0d\xf3\x90\x2f\x81\x2a\x5a\ \x4d\x10\xe2\x9a\xb5\x82\x00\x56\x13\x2c\x21\x04\x62\x77\x35\x27\ \xce\x31\x9f\x98\xcb\x41\xd3\xe0\x45\x17\x00\x98\x89\xa0\xf1\x3a\ \xf9\xfd\x42\x58\x21\x28\x98\x37\xf9\x46\x5a\xe7\x48\x17\x67\xe8\ \x18\xed\x78\xe0\xe3\xaa\x04\xfc\x2d\xe6\xd9\xd4\xf1\xdc\xd3\xcf\ \xfc\xf9\xb7\xbe\xf6\x57\x7f\xce\x74\xc5\x7f\xcc\x2e\xb1\x26\x54\ \x38\x76\xec\xd8\x89\x15\x2b\x56\xec\x21\x22\x0c\x21\x04\x6b\x05\ \x81\x54\xca\x36\x29\x6b\xe5\x9c\x52\xdd\xe6\x5d\x5e\xcd\x34\x25\ \x21\x41\x7e\xcc\xd1\x6f\xb2\x33\x98\x07\x94\xc2\x31\x4c\x3e\xc1\ \xf7\x14\xe7\x93\x5c\x8f\x73\x53\xa8\x95\x83\xd9\x1e\xa3\x6b\xdd\ \xc9\x71\xc0\x93\x18\x7e\x5e\x47\x10\x29\x1f\x58\x40\x37\x0a\x0a\ \xd3\x0c\x49\x67\x82\x1a\xec\x0e\x28\x19\x20\x45\x07\xe8\x42\xf8\ \x7b\xa0\x4c\xc7\x38\xd8\xa3\x13\xfe\x08\x9a\xbf\x49\x3b\x3e\xfe\ \x31\x55\x10\xfa\x0c\xcc\xa3\x38\xb3\x9f\xe9\xd1\xbf\xfc\x93\x2f\ \x7c\xb2\x5b\x9a\x5b\xfe\x25\xf6\x09\x7a\x68\x69\xe1\xf8\xf1\xe3\ \x63\xbc\x36\xbf\x0d\x3c\xe8\x09\x1b\x50\x8c\xc7\xa1\x24\x05\xd3\ \xb0\xf2\x4b\xa0\x30\xd5\xa1\xdf\xd6\xf6\x08\x41\x62\x0c\x30\xfa\ \xa1\x90\x80\x3e\x04\x84\x20\xcc\xc8\x79\x35\xfc\x26\x77\x87\xcc\ \x66\xa7\x06\x63\x83\xb1\x2e\x51\x00\xc1\x36\xd6\xe4\x28\xe9\x49\ \x5d\x34\x63\xbb\x32\x01\xf5\x76\xc3\x3c\x05\x4f\x97\x2f\xac\x70\ \x93\x88\x54\x04\x43\xdc\x84\xaa\x80\xcd\x8b\x3c\x1f\x7d\xd7\xbb\ \xb4\xf9\x5f\xfd\x4b\x15\xb1\x94\xe9\x99\x19\xcb\xfc\xcb\x87\x0f\ \xbf\xf0\x97\x9f\xff\xc2\xbf\x49\x36\xea\x13\xe7\xe0\xe1\x97\xdd\ \x29\x4a\x16\xeb\xce\x8c\x8f\x8f\x1f\x23\x2a\x98\x04\xa9\x27\x1c\ \x89\xd8\x4c\xaf\x19\x89\x53\xa7\xaf\x22\xcb\x4a\xab\x9c\xaf\x90\ \x81\xd5\x2d\x53\x0c\xb6\x2a\x73\xaa\x50\x05\x43\x2e\x0b\xe0\x84\ \xd9\xa2\x2b\x15\xb0\x96\x62\x95\xe3\x0a\x54\x6b\x51\xc1\x05\xd8\ \x1a\x8c\xb8\x50\x09\xcc\x00\xe9\xa2\x50\x02\x9c\x48\xf9\xe8\x4d\ \x40\xa1\x26\xd6\x57\x8f\x23\xdb\x8c\x26\x7c\x51\x1d\x66\x0d\x9b\ \x1f\x7c\x50\x43\x77\xdd\xa1\x2c\x51\x69\x6a\x7a\xda\x00\x1e\xbb\ \x59\x0e\xbf\xf8\xb5\xbf\xf8\xef\xf7\x47\xf2\xd9\xf1\xb3\xac\xfd\ \x57\xb9\x59\x3a\x82\x05\xdc\xc4\xcf\x61\xfe\x94\x24\x69\x17\xdb\ \x68\x44\xe5\x68\x37\x48\x85\xca\x00\x62\x7e\x5e\xc5\xf1\x17\x15\ \x29\x8f\x29\x1d\x98\x57\xa8\x51\x6d\xed\x0a\x35\x8d\x55\xfe\xf9\ \x9a\x10\xff\x1c\x4b\x9d\xfd\x4e\xed\x37\xc4\xed\x1e\x23\x9e\xd4\ \x29\x67\xa1\x20\xc2\x0c\xa2\x6d\x46\x2f\x2c\x4c\x4e\x34\xc1\x34\ \x56\xa6\x17\x71\xd7\x5d\xda\xf8\x9e\x7b\xd5\xc0\x12\x17\xb3\xcb\ \x76\x57\x3a\x95\xac\x8e\x1c\x3c\xf4\xf8\x5f\x3f\xf4\x95\x8f\x77\ \x57\x4a\xa7\x8f\x4b\xee\x6b\xb1\x5d\x3e\x44\xc7\x68\x2b\x7b\x08\ \x3f\xc5\x6f\x05\x7e\x97\x5c\xc1\x61\x03\x92\x22\x21\x80\x09\x33\ \x8e\x19\x7f\xa6\xa7\x57\x3e\x7d\x08\x3f\x3d\xa5\x1e\x65\x11\x48\ \x49\x81\x6a\xc3\xee\x23\xf0\xd7\x01\x4b\x5b\x11\x43\xcd\x76\xba\ \x6b\x81\xc3\x69\x63\x82\x9f\xf3\x86\x60\xda\xe4\xfa\x68\xde\xa3\ \x08\xba\x58\x71\x75\xae\xe1\xd1\x97\xdc\xa3\x4d\xec\x47\x0e\xb2\ \x1b\x2d\x47\x42\xb6\x40\x92\xc3\xfe\x3f\xa3\xf9\xc6\x81\x7d\xfb\ \xfe\xc7\xf7\xfe\xfa\x6f\xfe\xeb\x48\xd3\xbb\x78\x04\x91\xbe\x96\ \x3f\x98\x08\x40\xc3\x3b\x77\xee\xfc\x83\x37\xbd\xe9\x4d\x0f\x12\ \x26\x53\xec\x20\x17\x20\xa9\xb0\xc9\xfd\x59\x68\xdc\x41\x61\xc5\ \x9c\x0a\xaf\x9e\x94\x26\xc7\x15\x9a\xbf\xa4\x1e\x9a\x1b\x09\xf2\ \xf6\x40\x89\xd4\xb5\x4a\xee\x6e\x84\xc0\x3f\xf1\x8c\x7c\x50\x20\ \x88\x79\x87\x60\x38\xa2\x1a\xe3\x54\xa9\xaa\x59\xee\xa9\x62\x69\ \x03\x6f\x78\x83\x46\xd8\x7d\xee\x74\xa5\xf1\xa0\xaa\x96\xb2\x59\ \x9b\xe1\x4d\x63\xf6\x67\xcf\x9c\x99\x7b\xe6\xc9\x1f\xfc\xa7\xa3\ \xcf\x3d\xff\xcd\x95\xd4\x73\x07\x25\xef\xf5\xf8\xc9\x8c\x03\xa5\ \xf9\xdc\x7a\xc7\x1d\x77\x7c\x82\xd7\xcd\x6f\xc6\x25\x7c\x84\x4b\ \xc5\x63\x31\xbb\x83\x3b\x2c\x29\xee\x0f\x28\xe6\x43\xb3\xe4\xe3\ \x45\x4c\xb4\x3a\x35\xa9\xe6\xec\x8c\x7c\x30\xa0\x82\x79\x77\x50\ \xb7\x55\x5e\xc3\x54\x85\xe1\x88\x5c\x00\xd6\x4b\x53\xe3\x0f\xf4\ \xab\x7f\xcb\x56\xf5\x6e\xdd\x22\x1f\x6e\x46\xd9\xa0\x3c\x6e\x96\ \xe3\x99\x2c\xcf\xd2\xd4\x10\xd9\xaa\xcb\xa6\xcd\xbf\xfb\xc1\xf7\ \x1f\xfd\x6f\xde\xe2\xe2\xd1\xf5\xf2\x2a\x3f\x92\x9a\xaf\xf7\x8f\ \xa6\x82\xd0\x8a\x0d\x1b\x36\xdc\x73\xe3\x8d\x37\xde\xbf\x7e\xfd\ \xfa\x1b\x00\x4a\xb3\xc9\xda\x6e\x47\x09\xe3\x1a\x21\x63\x15\x50\ \x14\x0d\x47\x8c\x60\x10\x4a\xc0\x74\x6b\x3b\x11\x83\x63\x87\xeb\ \xe2\x9a\x82\x41\x46\xbf\x5c\x47\xb6\x86\x2f\x03\x6e\x14\x26\x2a\ \x96\x4a\xc8\xab\xd0\xc9\xeb\xbd\xd3\xe3\xe3\x2f\x1c\xdc\xf7\xe2\ \x97\xce\x1d\x1d\x7b\x22\xd3\x6c\x2c\x8d\x4b\x8d\x5f\xe7\xcf\xe6\ \x1c\x28\x02\x0d\xaf\x5b\xbb\xf6\x2d\x3b\x76\xee\xfc\x17\xb8\xc5\ \x6e\x04\x11\xc2\x42\xac\x20\x00\x4f\x11\x3d\x14\x0c\xc0\x3c\xcc\ \xf2\xfb\x20\x2c\x3f\x00\x01\x78\x68\x9f\xff\xd9\xa4\xa8\xe1\x79\ \x96\xea\x00\x62\x0d\xe6\xcb\x30\x6f\x18\xe7\x17\xa5\x26\xa7\x2f\ \x4f\x9c\x3f\xff\xdc\xe1\xfd\x07\xbe\x7a\xe1\xd4\xf8\xd3\x51\xcf\ \x9d\x0f\x49\xb5\x73\xbf\x41\x3f\x9c\x74\xa0\x30\xec\xf4\x26\x62\ \xb1\x2d\xdb\x77\xee\x7c\xc7\xc8\xe8\xe8\xef\x80\x0f\x1b\x32\xec\ \xd4\x64\x07\xea\xdf\x0b\x02\x4d\x07\x10\x46\xe7\x5d\x9d\xda\xbb\ \x37\x08\xb7\xb6\x75\x45\x35\x6a\x4b\xd8\xa5\xc5\xc5\xc2\xfc\xdc\ \xdc\x31\x36\x6b\x3e\x79\xe4\xc5\x17\xff\x4f\xad\x54\x79\x35\xe8\ \xd5\x97\x03\xa6\x60\x93\x9a\xbf\xa9\x3f\x9d\x75\xd4\x2a\x0d\xa2\ \xb0\xd7\x8d\x81\x0f\xaf\xdd\xb0\xfe\xc6\x15\xc3\xc3\xd7\x03\x94\ \xab\x12\xc9\xd4\xca\x70\x24\x9c\xa6\xf1\x8a\x57\x04\xc3\xdc\x6c\ \x18\xaf\xd0\xb2\x2a\xc1\xfc\x32\x6d\xab\x0b\xec\x4e\x3f\x37\x39\ \x31\x71\xf8\xec\xa9\xf1\x83\x5c\x9f\xa6\xfa\xcb\x8a\x3e\xd1\xb2\ \xe4\xfd\x36\xfe\x78\x9a\xba\x0f\xb7\x97\xc8\xf2\x15\x91\x15\x8c\ \xc3\xe8\x84\x9a\x9c\xc7\xfc\x3d\x47\xb8\x3d\x90\xc8\xf5\x32\x9b\ \x54\xcb\xa0\x80\xcd\x08\x0c\xd7\xaf\xf5\x8f\xa8\x9d\xdf\xb0\x5f\ \xad\x37\xf5\x3a\x7f\xfe\x1f\x5f\xbc\xdd\xe6\x1a\x53\x0c\xc2\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x13\x09\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ \xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\ \x1b\xaf\x01\x5e\x1a\x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ \xd7\x09\x17\x17\x15\x19\x49\x86\x70\x41\x00\x00\x12\x96\x49\x44\ \x41\x54\x78\xda\xed\x5b\x09\x74\x5c\xd5\x79\xfe\xee\x7b\xb3\x6b\ \xb4\x5a\xb2\x25\xd9\x96\x64\x63\x6c\x83\x31\x36\xb6\x81\x00\xe1\ \xb0\x34\x14\xc2\xda\x94\x86\x04\xd2\x90\x42\x72\x20\x5d\x20\x14\ \x68\x08\x4b\x48\x09\x87\xda\xad\x73\x52\x52\x02\x24\xad\x7b\x20\ \xe4\xb0\x95\xcd\x40\xb0\x1b\x56\x2f\x80\xb1\x2d\xdb\xd8\xb2\x6c\ \x6c\xd9\xb2\x2c\xc9\x1a\x4b\x1a\x69\xf6\xe5\x6d\xf7\xf6\x7f\x33\ \xef\xf0\xf4\x3a\x9a\x19\x1b\x26\x3d\xc9\x69\x7e\x9d\x4f\xf7\xbd\ \xfb\xee\x9b\x79\xdf\x77\xff\xe5\xbe\x2b\x1b\x7f\xb4\x3f\xda\xff\ \x6f\x63\x38\x0e\x1b\xbb\x05\x75\x52\xed\xf4\x8b\x5d\x33\x97\x5c\ \x06\xb7\xef\x3c\xa1\xa4\x3c\xd0\xb3\xc3\x42\xcd\x0c\x71\x35\x15\ \x12\x4a\x22\xc4\x53\xe3\x21\x91\x8d\x85\x84\xc0\x10\x80\x10\xe1\ \xe8\xd4\x9f\x43\xf9\x83\x16\x40\xfc\xd8\x7f\x95\x68\x5d\x76\x37\ \xe7\x58\xc6\xd3\x51\x99\x08\x42\x70\x01\xe1\x0e\x12\xaa\xc0\x65\ \x3f\x84\xec\x81\x60\x6e\x82\x0b\x90\x5c\x10\x82\x03\xdc\x00\xd7\ \xd2\x02\xba\x32\x2e\x0c\x6d\x48\xe8\x6a\x48\x68\x4a\x48\xe8\xd9\ \x10\x57\xd3\x24\x54\x7c\x48\x68\xd9\x90\x30\x85\x12\x08\x4d\x7f\ \x0c\x99\xdf\x3b\x01\xc4\x03\x9e\x3f\xc7\xf9\xf7\xbf\x88\xe6\x45\ \xcc\x24\x04\xae\x03\x26\x39\x43\x05\x32\x11\x80\xc4\x80\x9a\xcc\ \x43\xcf\x40\x68\x19\xf0\x6c\x82\x90\x02\x57\x92\xe0\xa6\x50\xb2\ \x0f\x5c\x48\x04\x53\x13\x4e\xd0\xc1\x75\x2d\x27\x14\x40\xd7\x0d\ \x03\x24\x0a\x41\x8d\x0a\xae\x87\x08\x43\xc2\xa0\x36\x07\x95\x04\ \x33\xa1\x0c\x09\x6e\x84\x00\x84\x3a\x1e\x47\xf2\xff\x4e\x80\xa7\ \x2e\xee\xc4\x99\xb7\x2c\x85\xb0\xc8\x73\x23\x07\xc7\xb9\x28\xd6\ \xa7\xe7\xa1\x98\xe2\x64\xed\x3e\xd3\x84\x00\x57\x33\xa4\xa3\x42\ \xc8\x82\x73\x0e\x03\x6e\x70\x12\xd6\x50\x32\x39\x01\x0d\x12\x52\ \xcf\xc4\x01\xba\x26\xcc\x1f\x6e\x80\x3c\x89\xa0\x27\x68\x60\x4e\ \x90\x1c\x04\x0f\x01\x3c\xc4\x64\x98\xd8\xd9\x71\x29\xba\xd9\xc5\ \x10\x95\x11\xe0\x85\x6b\x53\x58\x78\x6d\x20\x3f\xf3\x46\x09\x01\ \x9c\x62\x38\xc6\x8b\xdc\x35\x1b\xa2\xc8\x58\xf2\x1e\x40\x00\x14\ \x4e\x90\xdc\x80\xcb\x47\xf0\xe7\x3c\x46\xd7\x75\x18\x9a\x96\xf3\ \x20\x9d\x33\x12\x27\x09\x3d\x35\x06\x75\xa4\x07\x7a\xa2\x0f\xae\ \x00\x03\xf3\xe4\x6f\x37\x14\xf1\x3a\x35\xdf\xe8\x58\x81\x04\xca\ \x98\x0b\x65\x8d\xb9\x72\x0f\x97\x8b\x69\x82\x63\xc6\xb9\x89\x82\ \x63\xc7\x78\x61\x58\x2d\xb7\xfa\x8b\x8c\x35\x21\xc9\xf9\x3e\xcd\ \xf4\x96\xd4\xa7\xe2\x48\x34\xc6\x63\x0b\x95\x0f\x3f\xd9\x0b\xd4\ \xd7\x00\xb3\x2e\x85\xde\x34\x97\x9c\xec\x03\xe8\x43\xab\xc1\xb3\ \x06\xd4\x38\xae\xc8\x8c\x88\x55\xa2\x1b\x5f\x63\x0b\x50\xd2\x24\ \x94\x35\x0e\x88\x89\x04\x78\x01\x81\xa2\xd7\x45\x31\x91\x8a\x7c\ \xd6\xb1\x7e\xb6\x69\x5a\x1a\x48\x1c\x01\x0e\xbf\x0f\xd7\xbe\x35\ \xa8\x5a\xba\x02\x9e\xe9\xcb\x00\x96\x1f\x0a\xce\xbe\xda\xf3\x38\ \x4e\x00\x3e\xaf\x00\x42\x4c\x70\xdd\x22\x33\x69\x79\x44\xd9\x87\ \xe7\xe5\xbd\x80\x50\xfe\xb3\xed\x6b\x79\x11\x0e\xbc\x09\xac\xbd\ \x13\x7a\x66\x16\x52\x43\x02\xe9\x61\x01\x35\x29\x98\xa1\x62\x49\ \x25\x04\x28\x7c\x38\xce\x8b\xcc\x6c\x31\x61\x8e\x91\x38\x2f\x15\ \x5a\x93\x08\x13\x27\xf2\xe9\x31\xe4\xec\x93\xd5\x30\x12\x5e\xa4\ \x8f\x9a\xe4\xf3\xb7\x42\xc0\x5f\x81\x1c\x20\x0a\xc9\xd8\x84\x4a\ \x92\x71\x1e\x97\x0a\x25\x5e\x46\x9c\x42\xf1\x6c\xf2\xf6\x44\x31\ \xdd\x2c\xaf\xd6\x23\xc3\xb2\xcf\x2d\x40\xa1\xdb\x15\x78\x41\xb1\ \xd8\x75\x1e\x17\x0f\x95\xc2\x44\x59\xc6\xc3\xe2\x83\x44\x3e\x8c\ \x02\xe3\x1a\x84\xc5\xbc\x72\x02\x40\x14\xcd\xe8\x36\x81\xe3\x4d\ \x88\x45\xae\x17\x92\x2d\x1c\x1f\x1b\x70\x90\x77\x98\xa1\x43\xa0\ \xd2\x02\x08\x41\x30\x8e\x3d\xa3\x17\x86\x4a\xf9\x24\xc8\x8f\x31\ \x29\xc6\x4b\x90\x27\x13\xa6\x07\x4c\x9c\xb7\x0a\x09\xe0\x24\x5b\ \xbe\xd4\x95\x5f\x03\x94\xff\xac\x42\x0f\x8b\xf5\x03\xa9\x51\x94\ \x34\x43\xb7\x89\x57\x38\x04\x2c\x18\x05\x0f\x57\x9e\x4c\x91\x6b\ \x28\xa8\x26\xc5\x45\x8d\x1d\x2e\x4f\x1e\xc8\x2f\x93\xe1\x14\xa0\ \x12\x65\xd0\x41\xb6\x10\x45\x32\x36\x6c\xa2\xb9\x7e\x10\x98\x75\ \x0e\x6e\x9d\x13\x60\xf7\x4d\x9a\x10\xcb\xcf\xbc\x33\x09\x02\x36\ \x44\x25\x04\x40\xc9\x44\x35\xb9\x10\xb0\x88\xb1\x63\x24\x6e\xc2\ \x3e\xb6\xbf\x27\x6a\xce\xfc\x08\x8e\xd5\x04\xd7\x2d\xe2\x16\x2a\ \xe4\x01\x65\x56\x7a\x0e\x22\xc5\x88\x95\x12\xc3\xea\x73\x0a\x87\ \x58\x5f\x01\xf9\xb2\x66\x38\xca\x60\x25\x05\x28\x1f\xdb\x4e\x21\ \x9c\x64\x0a\x3d\xc2\x26\x6e\x0b\x64\x58\xe0\x40\x9c\xc8\x67\x88\ \xbc\x54\xe4\x7d\xb5\x74\x15\x70\xa0\xd2\x2b\xc1\x82\x38\xb7\x60\ \x93\x13\xff\xdb\x0b\x2c\x62\xc2\xe1\xe6\x36\x59\x82\xe3\x38\x7e\ \x88\xc8\x0f\x03\xb2\x35\x54\x58\xe0\x28\x67\xf6\x3a\xc0\xf6\x82\ \x0a\xaf\x04\x3d\x55\x40\xfd\x09\xf9\xa7\xd1\xd3\x40\x26\x0c\x24\ \x8f\x02\x5a\xd2\x99\xe8\xec\x58\x2e\x14\x88\x39\x12\xa3\x53\xa8\ \x78\x6f\x9e\xbc\x64\x3d\x3d\xb3\x45\xb0\xfd\xba\x74\x15\xb0\xcb\ \x60\xe5\xd6\x01\xb6\x08\xfe\x29\xc0\xdc\x4b\xe1\x34\x91\x17\x61\ \x6c\x2f\x10\xfa\x28\xe7\xbe\x85\xee\x4f\x10\x13\xfa\x84\xc3\xe5\ \xf3\x6d\xe2\x90\x93\xbc\x4d\xd6\xd9\xf2\x12\xcc\xac\x24\x58\xe9\ \x75\x80\x23\xbb\x17\x1a\x03\x82\x2d\x79\xb4\x5f\x98\x17\xe0\xe0\ \x6b\xc0\x48\xa7\x33\x1c\x18\x01\x36\x79\xb3\xb5\xc9\x9b\x33\x7f\ \xd4\x72\xfb\x32\x02\xc0\x1e\x53\x72\x1d\x20\x08\x15\x4d\x82\xb0\ \x50\xce\x6a\x3a\x80\xd3\x6e\x05\xce\xb8\x17\xa8\x9e\x3e\x21\xce\ \xed\x7c\x60\x9f\x5b\xe4\xb3\x16\x79\x09\xd4\x5a\x90\xca\x80\xa1\ \xf8\xcb\x90\xa8\x64\x15\xc0\x24\x19\xdf\x50\xca\xaf\x32\xea\xe7\ \x01\xe7\x2c\x07\x3a\x2e\x73\x84\x84\x0d\x93\xfc\x41\x22\x1f\xb2\ \x49\x95\x03\x2b\x2d\x82\x30\xf4\xca\x57\x01\x22\x6a\x27\xaa\x48\ \x0f\xb0\xee\x6e\x40\xe8\xf9\x73\x6f\x35\x10\x6c\x26\xb2\x27\x02\ \xd3\x96\xd1\x79\x7d\xc1\x76\x22\x4e\xba\x01\xa8\x9b\x03\xec\x5c\ \x09\x18\x9a\x95\x00\x09\x89\x03\x80\x62\x91\x17\x93\x00\x8e\x44\ \x68\x1b\xb7\xa7\xad\x20\x1c\xb8\xe6\x8c\x16\x51\xe9\x32\x88\x89\ \xe5\x4f\x07\xb2\x61\xc2\x30\x30\xba\x1d\xe8\x79\x16\x68\x5c\x04\ \xcc\xfe\x33\xa0\xba\x1d\x0e\x6b\x39\x17\xf0\x90\x58\x9d\x14\x16\ \x9a\x0a\x24\x7b\xec\x99\x17\x25\x92\x9c\x70\x10\x76\x92\x66\x13\ \x20\x9c\x1e\x90\xfb\x55\xb1\x10\x60\x02\xce\x9a\x3f\x59\x19\xb3\ \xb6\xba\x47\xb6\x00\x9b\x7f\x00\x7c\xb2\x8a\xba\xb2\x70\xd8\x94\ \xc5\xc0\x92\xfb\x81\x74\x9f\x49\xbe\x78\xcc\xdb\xfd\xc7\x17\x1a\ \xa6\xd9\x65\x90\x50\xa9\x24\x08\x51\x58\xd7\x6d\xf2\x85\xab\x3e\ \x53\x88\x81\x35\x24\xc4\x1d\x40\x6a\x10\x0e\x6b\x3a\x13\x38\xf5\ \xfb\x05\x64\xcb\x82\x4d\x1a\xff\xce\x7e\xf6\x3b\x5d\x09\x5a\x04\ \xfd\x8d\x40\xfb\x05\x80\xbb\x2a\x17\x6f\x48\x0f\x01\xf1\x83\xc0\ \x78\x17\x60\xa8\x13\x44\xa0\x36\x75\x18\xd8\x4a\x22\x2c\x79\x10\ \xa8\x99\x8b\x4f\x6d\xfe\xdf\x00\xa3\x1f\x00\x87\x9e\x01\x50\x26\ \xfe\x51\xc2\xf5\x25\x47\x9e\xc8\x83\xeb\xf6\xed\xa2\x32\xeb\x00\ \xe7\xcc\xfb\xea\x80\xd6\xb3\x60\xdb\x52\x02\xf2\x2b\xc1\xa1\x77\ \x80\xbe\xd5\x74\x1c\xb1\x17\x3b\x5a\x14\xd8\x7e\x17\x89\xf0\xcf\ \x4e\x11\xce\x7c\x04\x18\x79\xd7\xac\xfd\xc5\xe3\x9f\x17\xf5\x4f\ \x27\x69\xc9\x3e\x17\x10\x16\xf1\x8a\x87\x80\xed\xee\x93\x9a\x3b\ \x08\xb4\x5f\x05\x9c\xf5\x53\xa0\x71\xa9\xf3\xe5\x66\x7c\x2b\xb0\ \xfe\x72\x40\x8b\xd9\xe3\x3d\x0d\xa4\xdd\x4f\xca\xd7\x7c\x66\xb7\ \x36\x8a\x84\x06\x9b\xc4\xa1\x2a\x23\x80\x73\x25\x58\xd2\x3c\xf5\ \xc0\xe2\xfb\x80\xb6\x2b\xf2\x5e\x90\xd8\x07\x28\x47\x80\x54\x0f\ \xb0\xfd\x56\x38\xac\xfd\x5a\xa0\xe1\xb4\xcf\x50\xfb\x4b\xc2\xb1\ \x12\x14\xa2\x62\x02\x70\x0b\x02\x50\x62\x40\x78\x17\x30\xb2\x0d\ \x48\x0e\x4e\xf2\x2d\x0c\x98\xfb\x5d\xa0\xf1\x4c\x20\x3b\x68\x3f\ \x78\xff\x53\x74\xcf\x3b\x13\x86\x51\xe7\x29\xf7\x1d\x67\x22\x2c\ \x71\xcc\x9c\xc4\x05\x2a\x97\x03\xec\xfa\x3f\xbe\x17\xd8\x70\x1b\ \x00\xdd\x0a\x09\xeb\x05\xa9\xe3\x4a\x60\xc6\xc5\xce\xa5\xd9\xc2\ \x1f\x11\xe1\xdf\x02\x91\x4e\xfb\x41\x77\xdf\x05\x5c\xb8\xd5\x1e\ \xd7\x4a\x61\x13\x6c\x03\x92\xfd\xce\xd8\x67\x36\x0a\x63\xbd\x04\ \x80\xcf\xb6\x27\xf8\xe0\x7d\x37\x2d\xdc\xf2\xf6\x4f\xa5\xd2\x55\ \x80\xc0\x55\xe7\x92\x18\x84\x4c\x08\xd8\xfb\x18\xb0\xfd\x87\x80\ \x91\x99\xf0\xc9\x6e\xe0\x0b\xbf\x06\x5c\x2e\x7b\x16\xe3\xdb\x80\ \xd1\x89\x5e\x20\x03\xed\xdf\x2c\x3b\xf3\x4e\x14\xef\x17\xec\x33\ \xe6\x80\xb7\x37\xf7\xae\x7e\x6b\xc3\xbe\x5f\x90\x08\xac\x68\x0e\ \x28\xdc\xf3\x73\x2e\x90\xc6\x3a\x81\x0f\x6f\xb4\xfa\x2c\xab\x9e\ \x0f\xb4\x5d\xe7\x8c\xe3\xfe\x5f\xc2\x61\xd3\xaf\x2e\x41\xba\x4c\ \xdc\xa3\xe0\xdc\x0e\x83\xe3\xc9\x01\xe3\x8a\x9e\xed\xdc\x35\x38\ \x7f\xc7\xee\xc1\x7f\x25\x11\x4a\x6f\x89\x81\x3b\x84\xb0\x77\x6f\ \xf7\x00\x87\x9f\x03\xf6\xac\x84\xc3\xe6\xdd\xe5\x24\x37\xba\x06\ \x30\xd2\xf6\xf5\xda\xc5\x80\x7f\x6a\x01\xe9\xe3\x24\x6e\x0b\x20\ \x3e\x83\x07\x24\x33\x19\x43\x81\xfb\xce\xd7\xdf\xec\xba\xe6\x50\ \xff\xd8\x43\xc5\xdf\x06\x09\x81\x16\xe0\x8c\x1f\x03\x17\x3d\x4f\ \xed\x0a\x20\x38\x33\x4f\x3e\x3d\x80\x9c\xed\xa5\x9a\xaf\xc5\x27\ \x78\xc1\xc9\x40\xcd\x7c\x9b\x94\x20\xf2\xd1\x0f\x9d\x49\x73\xca\ \xd9\x85\xa4\x51\x36\xde\x0b\xc9\x33\x27\x71\x21\xb9\xe5\x63\x12\ \x20\x95\xc9\x1a\x29\xdd\xc8\x8e\x45\x92\xb7\x3c\xbb\x7a\xeb\x3d\ \x6b\x5f\x78\xf0\x9e\xc2\x3f\x8d\xf1\x7c\xe6\x5e\x72\x27\x50\x6f\ \x12\x72\x01\x75\xd4\x9e\xbe\xc2\x76\x7b\x86\xfc\xe2\xe7\xc8\xab\ \x70\xd8\xd4\x8b\x9d\x33\x1b\xdb\x0c\x87\xd5\x2e\x3a\x0e\xa2\x65\ \x44\x80\x05\xfa\xb5\xcb\x77\xfa\x2f\x96\x3f\x70\xeb\xeb\x8f\x3d\ \xfc\xc3\xef\xfc\xec\x27\xf7\x4e\x2f\x5a\x05\x32\x8a\xa2\x27\xd2\ \x19\xff\xf6\x4d\x9b\x5e\x5a\xba\x74\xe9\x6b\xcf\xbc\xbc\xf9\xa1\ \x0f\xff\x7b\xe5\xc8\xd9\x97\xfc\xc3\x2a\x47\x12\xac\x99\x0d\x54\ \xb5\xc0\x61\xee\x1a\xe0\xe4\xef\x01\xdb\xbf\x6f\xf7\x8d\x6e\x00\ \x3a\xbe\x39\xc1\x0b\x4e\x71\xba\x77\x66\x1f\x1c\x56\x75\xc2\xf1\ \x91\x47\x89\xbe\x09\x25\x70\xe3\xa6\x2e\xcf\x86\xa1\xfd\x97\x37\ \xd4\xd7\x5e\x3e\x73\x66\x8b\xf8\xea\xd5\x57\xec\x9a\x36\x6d\xda\ \x7b\x55\x55\x35\xeb\x33\x59\xf5\x83\x7f\x7b\xe4\xe7\xa3\x39\x01\ \x14\x4d\xe3\x14\x06\x7e\x90\x71\xce\xff\x76\x67\x77\xff\xb9\x2f\ \xbd\xb1\xed\x71\xca\x07\xc3\x38\xfc\xa4\x2d\x80\x96\x29\xb2\xf9\ \x71\x0a\x1c\x96\x19\x80\xc3\x7c\xcd\xce\x87\x56\x87\xe0\x30\x6f\ \x4b\x59\x82\xe5\xc9\x3b\x63\x9f\x83\x61\x6a\x9d\xf7\xad\xda\x54\ \xed\x02\x26\xb9\x5a\x87\x47\xa2\x6c\x6c\x3c\xb9\xa8\xb7\x6f\x68\ \x91\x2c\xcb\xb7\xa9\xaa\xca\xe7\xcc\x99\x73\x7b\x4e\x00\x5d\xd7\ \x59\x3a\x9b\x0d\x80\x6c\xc7\x8e\x1d\x83\x0b\x16\x2c\xf8\xbb\x35\ \x6f\xef\x7c\xba\x65\x5a\xed\x73\x27\x9d\x30\x53\x0e\x72\xc3\xda\ \xc1\xe9\x07\xd2\x47\x81\x40\x33\x1c\x96\x3c\x0c\xe7\x02\x5c\x86\ \xc3\x5c\xb5\xce\x35\xbf\x91\x82\xc3\xe4\x2a\x1c\x97\xb1\xc9\xfb\ \x46\xb2\x3e\xbc\x1f\xa9\xc3\xc1\x4c\x2d\x0e\x67\x6b\x30\x1e\x4b\ \x5f\xa4\xeb\x49\xc4\x62\x31\x28\xe4\xe5\x84\x7d\xc4\xb5\x95\x73\ \x5e\x6f\xf9\xe2\x2c\xf3\x17\xb8\x10\x8c\xf2\x40\x10\x96\x75\x77\ \x77\x3f\x63\x18\xc6\xd3\xff\xf9\xf4\xba\xc0\x6b\x91\xb9\x72\x5a\ \x78\x00\x6e\xfd\xe3\xc8\xf5\xb7\xe5\x57\x83\xb0\x2c\x3b\x0a\xec\ \x7c\xc8\x49\xb0\xaa\x03\x0e\xd3\xe3\x70\xee\xef\x7b\x50\x60\xf6\ \xfd\xc7\x65\xe3\x59\x37\x7e\xb5\xb7\x19\xd7\xbf\xbd\x00\xcb\xfb\ \xcf\xc5\x7b\xb1\x99\xd8\xdc\xaf\xe0\xc0\xde\x2e\xd4\x25\xba\x51\ \xa7\xf4\x3f\x5a\x53\x53\x73\xe1\xca\x95\x2b\x67\x90\x00\x4b\x67\ \xcf\x9e\xdd\x23\x49\x12\xac\x6f\x7a\xcb\x05\xb2\x80\xcf\xd3\x94\ \x55\x95\x46\x4c\x30\x12\xe0\x26\x55\x35\x4e\x5e\xfe\xd8\xda\xd3\ \x3c\xb7\x5c\x86\xcb\x9b\xfa\xe0\x33\x5f\x7b\x93\x7d\x24\xf5\x26\ \x60\xee\xd7\xf3\x1a\xf6\x3c\x01\xa8\x24\x82\x3c\xe1\xe1\x5b\x2e\ \x83\xc3\x52\xbd\x36\x79\x46\x90\xeb\xe1\x30\x6d\x1c\x10\xc7\x21\ \x82\x99\xe0\x46\xaa\xf0\xec\xee\xa9\xd8\x12\x9e\x06\x4d\xd7\x10\ \x8f\x8f\x43\x44\xdf\xc3\xe5\x73\x0d\xcc\x59\xe4\xc3\x89\xb3\xda\ \xe0\xad\x6d\xa6\x3c\x7d\x41\x5f\xfb\x95\xf7\x0c\x03\x10\x0f\x3f\ \xfc\x30\x23\x5b\x2c\x44\x2e\x6b\x5f\x4d\x78\xc3\x75\xcf\xdf\x5f\ \x83\xc7\xd6\xee\x6c\x4a\xa6\xd5\x16\xcb\x2d\x38\x01\x07\x0f\x1e\ \x4c\xb7\xb5\xb5\x7d\x25\x1a\x49\x6c\x5d\xf1\xcb\xdf\x36\xc9\x37\ \x7e\x11\x97\x64\x87\xe0\x96\x00\x16\xeb\x07\xdb\xfe\x2f\x80\x79\ \x2c\xe3\xd3\xed\x6c\xc6\xac\x87\xdf\xf9\x03\xe0\xc0\xa3\x66\xc9\ \xcc\x23\xfc\x2e\xc0\x27\xb8\xaf\x6f\x0e\x1c\xa6\x5a\x02\x38\x45\ \x98\xb4\x6f\xf3\x60\x10\xab\xb6\x35\x63\xd3\x61\x2f\xa2\xd1\x08\ \x62\x91\x8f\xf1\xa5\x39\x0a\x7e\x74\x9e\x84\xf3\x17\xce\x04\xab\ \x9b\x87\x3d\x83\x40\x64\xe8\x10\xa2\x07\x3b\x11\xee\xdd\x79\xf0\ \x9d\x70\xf3\x01\x00\x7c\xc5\x8a\x15\xcb\xc8\x1b\x3c\x24\xc0\xeb\ \x00\x72\xa5\xca\xd5\xd8\x58\x23\x65\x15\xad\xdf\xd0\x35\x0e\xa0\ \x86\x90\x26\x68\x04\x31\xbb\xbf\xff\x70\xf4\x84\xa6\xeb\x87\x8e\ \x8c\xac\x59\xf1\xe4\x26\x96\xb9\xfa\x6a\x9c\x6f\xbc\x08\x8f\xac\ \x41\x96\xcd\x4a\x48\xa0\x56\xa6\x96\x59\xe7\x8c\x13\xc2\x5d\x60\ \x11\x82\x9c\xaf\x9c\x29\x5d\xc6\xa1\xb1\x00\x8e\xc4\x3c\x18\x8a\ \x7a\x10\x7a\xf5\xbf\x10\xd3\xd7\x21\xcd\xa6\x23\x65\xd4\x01\x24\ \x6c\x2d\xef\x40\x8d\xcf\xc0\xd4\x6a\x0d\x73\x9b\x32\x58\x36\x23\ \x85\x29\x7e\x1d\xa6\x0d\x27\xdc\xd8\x70\xb0\x1a\x2f\x75\x4d\xc1\ \xc7\x83\x12\xc2\xe1\x30\x22\xe3\xe3\xf8\x8b\xa5\xc0\x03\x37\x07\ \x70\xe2\xbc\x2f\xe4\x12\xb1\x88\x1d\x81\x31\xb4\x1d\x91\x7d\x31\ \xa4\x14\x91\x4f\x37\x6e\xb7\x35\x45\x60\x2d\x2d\x2d\x17\x9b\xf9\ \x80\xec\x79\x58\xe6\xba\xfd\xde\x55\x1c\x5e\xff\x12\xa8\x59\x93\ \xfc\x14\x42\x15\x21\x46\xc8\x10\xf8\x99\xd3\x47\xd7\x6d\x3c\x5c\ \xf7\x60\x6f\xdf\x91\xfb\x1f\x7e\x49\x42\xf4\x4f\xaf\xc2\x32\x75\ \x35\x3c\x2e\x1d\x2e\x57\x9e\xbc\xcb\x12\x81\x13\xdb\x50\xda\x8b\ \xc1\xb8\x17\xfd\x51\x1f\x8e\x24\x83\xd8\x3f\xec\x42\x6f\x48\x43\ \x3a\x93\x45\x36\x9b\x85\xaa\x66\x20\x44\x1a\x3e\x5f\x06\x81\xc0\ \x28\x82\xf2\x18\x3c\x48\x23\x6f\x12\x09\xe4\x42\x46\xf7\xc0\xef\ \xaf\xc7\xec\x66\x2f\x3d\x5a\x35\x14\xe1\x43\x86\xee\x1f\x0a\x8d\ \x20\x3c\x36\x86\xa0\x17\x78\xed\x8e\x7a\x5c\xf2\x27\xe7\x03\xb5\ \x27\x43\x28\x29\x18\x07\xd7\xe6\x04\x10\x06\xc0\x49\x79\xc1\x04\ \x84\xe0\x74\xec\xca\x15\x5f\xf3\xbb\xeb\xeb\xeb\xaf\xef\xeb\xeb\ \xcb\x80\x6e\x77\xbe\x0d\x2a\xf4\xe9\x00\xb7\x50\x47\xf0\x13\xa2\ \x9b\x81\x44\xbb\x0e\x76\x61\x7b\xf4\xb9\xf7\x0e\xd7\xce\x3e\xd4\ \x37\xf0\x97\x4f\xbc\xc9\xb0\xff\xa4\xf3\x35\x79\x74\x4b\xca\x60\ \xae\xa0\xaf\xaa\xc6\xe5\xae\x9e\x82\x81\xa8\x84\x81\x31\x8e\x68\ \x3c\x8d\x54\x2a\x83\x44\x32\x8d\x80\x34\x88\x93\x5a\x75\x5c\xbb\ \x54\xc2\xbc\x19\x40\x5b\xb3\x84\xf6\xd6\x20\x9a\xbf\xf4\x22\x24\ \x33\x51\xba\x48\xf3\x9d\x37\x83\x99\x9b\x26\xba\x02\x28\x49\x30\ \x35\x85\xa7\xd6\xeb\xb8\xf1\x3f\x52\x18\x19\xe1\x85\xc9\x9e\x01\ \xab\x6f\x0b\xe0\xbc\x2b\xbe\x05\xe1\x69\x82\x48\x0e\x43\xdb\xf7\ \x12\x90\x49\x12\x61\x19\x0c\xc8\x91\xe7\xd6\x96\x92\x90\x68\xa6\ \x00\xf6\xca\x2b\xaf\xdc\x10\x08\x04\x66\x47\xa3\xd1\x55\x20\x5e\ \xc5\x0a\x8a\x8b\x10\x24\x34\x10\xbc\x84\x64\x73\x10\x89\xf3\xe7\ \x81\x35\x04\x51\xfb\x9b\xfd\x0d\x77\x29\xdc\xfd\xdd\xd6\xd6\x56\ \xf4\xf7\xf7\xa1\x2a\xe0\x05\x37\x34\x84\x86\x23\x30\x0c\x8e\x69\ \xb5\x14\x87\xf3\x25\x9c\x3b\x8f\xe1\x82\xa5\x4d\x68\x9f\x3d\x8b\ \x2a\x5c\x13\x98\xbf\x01\xcc\x5b\x0b\xe6\x0e\x82\x41\x03\xb8\x92\ \x03\x33\xb2\x10\x6a\x14\x2c\x3d\x08\xa4\x87\x73\xdb\xec\x4c\xcb\ \xe2\xd0\x51\x81\xb3\x97\xd7\x62\x24\x1c\x01\x59\x6e\xc6\x3b\x1a\ \x25\xec\x09\x01\xa7\xb5\x09\x7c\xf0\xb3\x0b\x20\xd1\xeb\x37\x4f\ \x47\xa0\xed\x79\x06\x22\x9b\xb4\x37\xaa\x75\x81\x4d\x07\x38\x14\ \x8d\x83\x09\xae\x27\x1b\x16\x2f\x7c\xba\xa7\x4e\x27\xf2\x5b\x3e\ \xfa\xe8\x23\xcf\xc0\xc0\xc0\xa9\x00\x7a\x8b\xed\x07\xe8\x84\x38\ \x41\xb5\x44\xa8\x1d\x4e\x22\xf0\x7a\x17\xa2\x27\x35\x23\x7c\xde\ \xac\xc8\x9d\xef\xf6\x35\xb3\xde\xde\xde\x9b\xcd\x58\x22\x6f\xb4\ \x66\x85\xe1\x9c\x39\xae\xc8\xbd\x5f\x9f\xe5\x9f\xb5\xe8\x42\x6f\ \xb0\x75\x21\x73\xfb\x82\x48\x0b\x05\xc4\x90\xa0\x10\x31\x82\xaa\ \xd0\x61\x14\x3c\xd9\x9f\xdb\x2c\x91\x94\x10\x24\x3d\x01\x99\x09\ \xc8\x42\x40\x12\x66\xcb\xd0\x3d\x5c\x0d\x0e\x39\x37\xdb\x37\x9e\ \x03\x7c\xeb\x6c\x50\x68\x00\x7f\xfd\x42\x2d\x66\x34\x24\x10\x97\ \xdb\xe0\x4a\x2b\x48\xed\x5a\x0d\x91\xce\xd0\x7d\x66\xfc\x09\x08\ \x9d\x23\x95\x11\x54\x1a\x01\xb3\x27\x65\xf8\x1e\x79\x64\x7d\xba\ \xba\x75\x7a\xfd\xbf\xf7\xf4\xf4\xd4\x11\xf9\x1b\x4c\xf2\xe5\x36\ \x44\xb8\x15\xff\x23\x04\x45\x00\x8d\x29\x15\x53\x3b\xfb\x11\xdb\ \xd6\x2f\xc6\x5b\x1b\x95\xef\x69\x9a\x36\x04\xe0\xdb\x84\x36\x02\ \xbc\x6e\xb9\x77\xd9\x89\x35\xf7\xb6\x5f\xf9\xe8\x75\x35\x53\x5a\ \xda\x54\x25\x2d\xa5\x33\x09\xb7\xa6\xa6\x5d\x4a\x72\x14\xa3\xfd\ \xbd\x99\x70\xff\xc7\x6e\x23\xbe\xbf\x5a\x36\xe2\xbe\x80\x57\x54\ \x79\x3d\xc2\x13\xf0\x08\x29\xe0\x61\xb9\xca\xe2\x22\xb8\x19\xc0\ \x0d\xe0\xdd\x81\x39\x48\x24\xba\x30\xb3\x1e\x5b\x82\x6e\xec\x79\ \x6d\x07\x6a\x3d\x2e\x51\x27\x04\x3f\xef\x70\x18\xfa\xc7\x3d\x11\ \xc9\x88\xbf\x2a\xf3\x78\x04\x01\xb7\xcc\x3c\x4c\x80\x71\x01\x45\ \x15\x62\xdf\x30\xd4\xa3\x09\x36\x7a\x28\xea\xde\xf8\xe1\xa0\xdf\ \x35\xeb\xc4\xa6\xd5\x54\xd1\x9a\xf7\xee\xdd\x7b\x37\x80\x5f\x1d\ \xeb\x8e\x90\xb0\xbc\x60\xdc\x6a\x1b\x09\x0d\x02\x08\x1c\x09\x8f\ \x87\x01\xac\x90\x65\xf9\x9f\x7c\x3e\xdf\xf6\x54\x2a\xb5\xd0\xe3\ \xf5\xbe\xdc\x71\xfa\xd5\xef\xcf\x3e\xe5\xec\xaf\x09\x2e\x06\x0c\ \x43\x53\xe2\x91\x70\xf7\xde\x1d\x1b\x77\x6f\xfc\xcd\x93\xa3\xaa\ \x9a\xf6\x41\x57\x7d\x86\x11\x0c\x08\xdd\x5b\x25\xb8\x56\x45\xa1\ \x13\x64\x42\xaf\x97\x99\xde\xe0\x96\x8c\xda\x6a\x9f\x41\x2d\x0f\ \xc6\xa4\x99\xf3\x3b\xfb\xa4\x2a\x55\x51\xe2\x0b\xe6\xe0\x0e\x83\ \x23\xab\xab\xf0\x65\x54\xe1\xf3\xbb\xb8\xa7\xfb\x88\xb1\x64\xcd\ \x3b\x9d\xcf\xca\x2e\xd6\x00\x78\x83\x0c\xc2\xc7\x60\xb8\x05\x87\ \x94\x48\xc3\x08\xa7\xb8\x72\x24\x2a\xbc\x9a\x67\xda\x17\x3b\xe6\ \xcc\x98\xd1\xd5\xd5\x95\x08\x85\x42\xf7\x00\x78\xf4\xb3\x6c\x89\ \x19\x84\x84\x25\xc2\x14\x0b\x33\x08\x11\xc3\x30\xc6\x1a\x1a\x1a\ \xb6\x64\x32\x99\x85\xfe\x40\x70\xd7\x57\x6e\xbc\x77\x9a\xcb\xed\ \x35\xb3\xed\xfb\x5d\xbb\xf7\xbc\xb1\xa3\x73\x6b\x94\x43\x97\x1a\ \x4f\xfa\x32\xe3\x5c\x65\xa4\x89\xc4\xf5\x2c\x33\xd4\xb4\xa4\x2b\ \x29\x49\x57\x93\x32\x65\x6f\x59\xa3\x96\x67\x53\xee\x31\x2d\xed\ \x19\x1c\x63\x0b\xdd\xcd\xcb\x1e\xdd\xd9\xf5\x3a\x24\x86\x07\x3b\ \xa6\x62\x9b\x00\x1d\x6a\x90\xb8\x4c\xe9\xc4\xa5\xde\x3e\x2c\xd8\ \x5b\x4f\xae\x1f\x9b\x75\xe1\xb2\x59\xcf\xb7\x34\xf8\xd3\xe3\xb1\ \xd4\xb4\xd1\x68\xfa\x84\x70\x4c\x9f\x6f\x48\xfe\x99\x9e\x40\x5d\ \xa3\xab\xc6\x1f\x8c\x86\xc3\xea\xce\xee\xf7\x5e\xd6\x75\x7d\x39\ \x80\x5d\x04\xed\xf3\xfc\xaf\x31\x66\x89\x55\x4b\x98\x6a\x95\xca\ \x24\xd5\xd5\x9b\xa8\x26\xdf\xd6\xdc\xdc\xfc\x0d\x7a\x87\x50\xd2\ \xe9\x74\xe2\x8d\x37\xde\xd8\x3d\xc9\x96\x86\x80\x05\xd3\x98\x10\ \x9c\xc3\xe0\x42\x37\xe8\x48\xe5\x86\x9a\x11\xdb\xb6\xed\xa8\x86\ \xb7\x7a\xed\xde\xbd\x9f\xcc\xeb\xec\xec\xdc\x0e\xe0\x4c\x82\xfe\ \x8f\x00\xd6\x2d\x06\x4b\x8d\x83\x45\x63\x90\x7b\x13\xec\x2c\xba\ \xf3\x79\xb7\xdb\xdd\xec\xf5\x7a\x55\x6a\x99\xcb\xe5\x72\x93\x81\ \xc8\x1a\xf1\x78\x7c\xbf\xa2\x28\x6b\x01\xfc\x5a\x08\xd1\x5d\x40\ \xbc\x9c\x07\x94\x08\x09\x8d\x10\x21\x28\x84\x26\xc2\x14\x55\x55\ \xe3\xe6\xba\x9a\xda\xa6\x97\xc9\xc8\x2b\x38\x00\x97\x53\x00\xe7\ \x9f\x3d\x18\x63\x1c\x8c\x41\xa2\x1f\x78\xdc\x02\xf0\xf1\x77\x37\ \x7c\xd4\xee\xf7\x57\x3d\x91\x88\xc6\xe6\x6d\xdb\xb6\x6d\x14\xc0\ \x35\xd6\x78\x99\x04\x90\xf0\x31\x64\xab\x2a\xd5\xe4\x77\x54\x70\ \x0b\xe5\xa1\xb3\x08\xb5\xd6\x73\x85\x09\xfb\x09\xa6\x70\x7d\xd6\ \x62\x4e\x54\x66\x57\xb8\x30\x24\x92\xd6\x97\x66\x69\xc6\x37\x92\ \x00\x4a\x22\x91\x38\xe3\xc0\x81\x03\xaf\x51\x79\xe4\x74\x2e\x13\ \x49\x13\x92\x55\x21\x72\xe4\xf3\x13\x2f\x0c\xab\x95\x48\x2c\xb1\ \x6e\xdd\xba\x36\xba\x7e\x3d\x2d\x4f\xbf\x73\xe8\xd0\x21\xff\xa6\ \x4d\x9b\xc6\xe9\xda\x5f\x01\xc8\x12\xda\x26\x7c\xa7\x36\xc1\x0b\ \x93\x84\xdd\x84\x4e\x42\x8a\x90\xb1\x26\x45\x2f\x47\xba\x74\x08\ \x1c\xff\x7d\x32\x21\xe0\xf1\x78\xbe\x4d\x1e\xb0\x9c\xc2\x60\xe5\ \xa9\xa7\x9e\xba\x9e\x92\xa3\x9b\x5c\x93\x51\x82\xe4\xe4\x9a\x3a\ \x09\xa2\x72\xce\x0d\x1a\x23\x28\x5f\xc8\xe3\xe3\xe3\x33\xfc\x7e\ \xff\x29\x34\xe6\x22\x6a\x97\x51\x82\x62\x94\xa1\x0d\xea\xff\x10\ \xc0\x2a\xc2\x51\x8b\x50\xc2\x2a\xc9\xb1\x1c\x51\x27\x41\x6e\x41\ \xe0\x73\x1a\xab\xc0\xfd\x26\xae\x63\x8c\x3d\x4c\xa4\x6a\xab\xaa\ \xaa\x86\x89\x58\x8a\xda\x0c\x09\x20\x3c\x79\xf3\xd1\xf5\x06\x42\ \x8d\x39\xfb\xe4\x39\x88\x44\x22\xc6\xd0\xd0\x50\x2f\x79\xc2\x06\ \x6b\x69\x3a\x60\x11\x4d\x12\xd2\x96\x08\x9a\x4d\xf6\x77\x63\x0c\ \x95\xb3\x2a\xc2\x97\x09\xa7\x13\xda\x2c\xc2\x75\x04\x37\xe7\x5c\ \xb2\x5e\x41\x23\x84\x83\x84\x6e\xc2\xfb\x84\x7e\x6b\xa6\x8d\x72\ \x7f\xd6\xfb\x03\x10\xa0\xf0\xf3\x1c\xff\x0a\xc0\xf9\x17\x56\x81\ \xdf\x13\xfb\x1f\x84\xaf\xe2\x02\x22\xe6\xe9\x93\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x0d\x06\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x06\x00\x00\x00\xaa\x69\x71\xde\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x06\xec\x00\x00\x06\xec\ \x01\x1e\x75\x38\x35\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ \x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x0c\x83\x49\x44\ \x41\x54\x78\xda\xed\x9b\x5b\x68\x55\xd9\x19\xc7\xd7\x49\x4e\xa2\ \x26\x26\x1a\xe3\x35\x31\x5e\xc6\x54\xad\x97\x4a\x95\x29\x38\x14\ \xc4\x22\xb6\xcc\x73\x9f\x2a\xf4\x61\x5e\x7c\x10\xc4\xc2\x0c\x08\ \x7d\x28\xf8\x54\x4a\x1f\x15\xa4\x4f\xf6\x51\x0a\x52\x90\x4e\x07\ \x41\x94\xfa\xe0\xfd\xd6\xaa\x03\x5e\xc6\xfb\x35\x51\x63\x2e\x46\ \xcd\xc5\x7e\xbf\x0d\xbf\x61\xcf\x31\x92\x8c\x1c\x83\xc1\x2c\x58\ \xec\xbd\xd7\x59\x7b\xad\xef\xfb\x7f\xf7\xb5\x93\xc2\xeb\xd7\xaf\ \xd3\xc7\xdc\x2a\xa2\x8f\x03\x30\x0e\xc0\x38\x00\xe3\x00\x8c\x03\ \x30\x0e\xc0\x47\xda\x8a\x1f\x1a\x41\xc7\x8e\x1d\xdb\x53\x5d\x5d\ \xfd\xb3\x69\xd3\xa6\x7d\xe1\x98\xad\xad\xad\xed\x8f\x95\x95\x95\ \xf3\x57\xaf\x5e\xfd\x8b\x72\xed\xf7\x41\x24\x42\xdb\xb6\x6d\x5b\ \x50\x2c\x16\xff\x10\xb7\x9f\xcd\x9e\x3d\xbb\x65\xf2\xe4\xc9\x93\ \x18\x87\x36\xaf\xb6\x81\x81\x81\xc1\x4b\x97\x2e\xdd\x1a\x1c\x1c\ \xbc\xd4\xd1\xd1\xf1\xb7\xbd\x7b\xf7\x1e\x1a\xd3\x00\x6c\xd9\xb2\ \xe5\xb3\xfa\xfa\xfa\xc3\x21\xf5\xaa\x21\x09\x2c\x14\xd2\xdb\xc6\ \x03\x84\x74\xfd\xfa\xf5\x43\x15\x15\x15\xbf\xd9\xb3\x67\xcf\xab\ \xb1\x64\x02\x32\xff\xcb\x9a\x9a\x9a\x43\x21\x84\xe2\xcb\x97\x2f\ \x87\x63\x78\xc8\xb1\x96\x96\x96\xf5\xd7\xae\x5d\xfb\x26\x1e\x7f\ \x35\x96\x9c\xa0\x0c\xfc\xb3\xbf\xbf\x3f\x13\x42\x00\x91\xaa\xaa\ \xaa\x52\x98\x02\x3d\xbb\xb7\x3b\x6e\x9f\x38\x71\x62\xc6\x3c\xa0\ \xd1\x9b\x9a\x9a\xd6\x6f\xd8\xb0\x61\xdd\x98\xd2\x80\xcd\x9b\x37\ \xff\x39\x98\x69\xec\xeb\xeb\x4b\xcf\x9e\x3d\x4b\x0f\x1e\x3c\x40\ \xa5\x47\x0a\x5c\x0a\x27\x99\x1a\x1b\x1b\x93\xad\xae\xae\xee\xaf\ \x71\xf9\x74\xac\x00\x00\xb3\x5f\x04\xf3\x48\x10\xef\x9e\x16\x2d\ \x5a\x94\xc2\xf9\xa5\xe7\xcf\x9f\x23\x65\xe7\xa4\xce\xce\xce\xd4\ \xd0\xd0\x90\x31\xfc\xf4\xe9\xd3\x34\x69\xd2\xa4\x74\xfa\xf4\xe9\ \xf4\xe4\xc9\x93\x44\x0b\xff\x91\x68\x53\xa6\x4c\xf9\xf9\xc6\x8d\ \x1b\x8b\x07\x0e\x1c\xe8\xff\xe0\x01\xd8\xb4\x69\x53\x75\xb4\xe9\ \x71\x0b\xc3\x78\xf6\xb4\x6a\xd5\xaa\x34\x61\xc2\x84\x74\xe3\xc6\ \x8d\x34\x6b\xd6\xac\x74\xea\xd4\xa9\xd4\xda\xda\x9a\xe6\xcf\x9f\ \x8f\x9d\xc3\x60\xba\x7a\xf5\x6a\x5a\xb8\x70\x61\x3a\x7b\xf6\x6c\ \xf6\x4e\x77\x77\xb7\xe6\x00\x68\x95\x2f\x5e\xbc\xd8\x14\x4b\xfe\ \xfd\x83\x88\x02\xdb\xb7\x6f\x6f\x7c\xf4\xe8\xd1\xba\x20\xbc\x3f\ \x88\x9d\x17\xd2\x5b\x31\x73\xe6\xcc\xdf\xde\xb9\x73\xa7\x2b\x88\ \x9e\x1c\x63\xd3\x83\xe0\x84\x16\x00\x42\xc4\xf7\x77\xd1\xa2\x4c\ \x33\x02\xcc\x0c\x84\x5b\xb7\x6e\xed\x0b\x8d\xd9\x4f\x38\x8d\x7e\ \x34\xd6\xfc\xf7\x89\x13\x27\x1e\xbc\x17\x00\x7e\x1d\x6d\xc5\x8a\ \x15\x95\xc1\x54\x6d\x30\xd3\x7a\xe6\xcc\x99\xdf\xaf\x59\xb3\xa6\ \x39\x18\x7d\x10\xd2\x68\xba\x70\xe1\x42\xed\xb2\x65\xcb\xd2\xdd\ \xbb\x77\xd3\xd4\xa9\x53\x53\x57\x57\x57\x7a\xfc\xf8\x71\x46\x6c\ \x84\xad\xc4\xbe\xd8\x3e\x12\x0c\xa0\x90\xa8\x9e\x7e\xc4\x0d\x4d\ \x61\x1d\x1c\x28\x66\xc3\xfd\xe5\xcb\x97\xf1\x07\x98\x13\xfb\xbc\ \x0e\xad\xba\x1c\x4e\xf4\x1f\x3d\x3d\x3d\xff\xda\xbf\x7f\xff\x89\ \x98\x33\x38\x62\x00\x76\xec\xd8\xb1\xf4\xe6\xcd\x9b\x5f\xc5\x6d\ \xcb\xe2\xc5\x8b\x6f\xd6\xd6\xd6\xd6\x04\xa1\x8b\x7a\x7b\x7b\x5b\ \xcf\x9f\x3f\xdf\xc8\x26\xa8\x24\x92\x84\x51\x18\xc0\x63\xf3\x8c\ \x6d\xbf\x7a\xf5\xca\xae\x27\x77\x69\xa4\xce\x38\x44\xd2\x99\xcf\ \x18\x4c\x0c\x1b\x0e\x01\x2d\x68\x51\x0b\x78\x3f\x63\xd8\xe7\x90\ \x7a\x8a\xe8\x82\xf9\x00\x3e\x7e\x22\xdb\x3b\xe8\xee\x6c\x6f\x6f\ \xff\x26\xf6\xfd\x32\xe6\xdc\x1e\x12\x80\xdd\xbb\x77\xa3\x8b\xbf\ \x7b\xf8\xf0\xe1\x5f\x8e\x1f\x3f\x3e\x3b\xd4\x88\x97\x0d\x37\x10\ \x08\xe1\x79\x06\x91\x1e\x1b\xdb\xdf\x78\x46\x42\x74\x1b\x6b\xe0\ \xd0\x64\x9e\x3d\x60\x8c\x7b\xae\xf9\x6e\xf3\x3d\xaf\xac\xeb\x95\ \x0e\x00\x79\xe7\x19\x1a\x09\x08\x00\xc5\xfa\x38\x4f\xfc\x48\xe6\ \x67\x42\x1b\xae\x1f\x3d\x7a\xf4\x93\x37\x00\xd8\xb5\x6b\x57\x4d\ \xd8\xd0\xd7\xa1\xaa\xeb\x62\x92\x4c\xb2\x10\x1d\xc6\xd8\x14\xbb\ \x85\x38\x09\x18\x16\x00\x36\x86\x39\x1b\xce\x0b\x2d\x81\x30\xc6\ \xed\x23\x01\x80\x2e\x93\x79\x10\x58\xcb\x88\xe0\xef\x87\x0f\x1f\ \x66\x1f\x98\x56\x08\xdc\xd3\xfb\xc3\x24\xeb\x6f\xdf\xbe\xdd\x5b\ \xf4\x85\x9d\x3b\x77\xb6\x44\x38\xfa\x36\x54\xb9\x96\xd0\x93\x27\ \x02\x64\x91\x18\xe3\x61\xf3\x69\xee\xdc\xb9\x29\x5e\x06\x08\x36\ \x96\x30\x89\xcb\xe6\x00\x60\xe4\xea\x3f\x20\xd6\xe6\xfa\x00\x25\ \x08\x6a\x80\xfb\x39\xce\x9a\x39\x40\x87\xd4\x00\x3b\xcc\xf1\x1e\ \xfe\x06\x8d\x20\x7a\x60\x56\x08\x12\x20\x42\xab\x11\x24\xeb\x17\ \xc3\x17\xfd\x09\x5f\x9d\x01\xb0\x6f\xdf\xbe\xc6\x90\xca\xb5\x28\ \x32\xaa\x64\x3a\xcf\x3c\x49\xca\xca\x95\x2b\x13\xed\xc8\x91\x23\ \x20\x9d\x81\x10\x7e\x00\xe9\xe6\x01\xc8\x88\x8e\x82\x86\x8d\x01\ \x8d\x35\xb2\x4d\x6d\x6a\x14\x8d\xb9\x30\xc7\x1e\xd3\xa7\x4f\xc7\ \x79\xf1\x9b\x1a\x02\xe1\x43\x81\x24\x20\xa5\x20\xc8\x38\xe0\x2b\ \x79\xd6\xc0\x0c\xe8\xd6\x0f\xfc\x86\xe3\xfd\x2a\x9e\xf7\x64\x00\ \xdc\xbb\x77\xef\x3f\x11\x77\xab\x54\x53\x99\xd7\xfe\xc9\xb8\x02\ \x31\x9c\x48\x46\xa4\xf3\x24\x16\xfb\x82\x10\xcd\x23\x22\x00\x8c\ \xf2\x2c\x00\xae\x9b\xad\x41\x13\x00\x12\x20\xd6\x46\xa3\xc8\x01\ \xf2\x4e\x50\xa6\x35\x3d\x9b\x29\x71\xe9\x6f\xac\x8d\x83\xc4\xe1\ \x42\x07\xeb\xd2\xb6\x6e\xdd\x9a\xdd\x9f\x3b\x77\x0e\x67\x4d\xa4\ \x40\x0b\x2b\x02\x88\x4f\x8b\x21\xfd\xda\x50\x8d\x9f\xe6\xbd\xac\ \xc4\xa9\x8a\x84\x29\x50\x43\xa2\x80\x81\x84\x4f\x9e\x3c\xc9\x34\ \xc6\xd9\x54\x00\x40\x18\x86\x95\x8e\x25\xec\x0f\x34\x80\x36\x6f\ \xde\x3c\x9c\x2a\x5a\x04\x31\xec\x07\xb8\x86\x34\x9e\x5d\x03\x1a\ \x74\xb6\xec\x87\x76\x71\xcd\xfb\x09\xe6\xb0\xaf\xeb\x93\x1f\x08\ \x36\x91\x20\xfb\x7d\xce\x9c\x39\x19\x38\x57\xae\x5c\x31\x5a\x4d\ \x2b\xc6\x4b\xad\x11\x8f\x0b\xbc\xa8\x63\x73\x41\x91\x9e\x31\x63\ \x46\xb6\xb0\xa9\xea\xc1\x83\x07\x9d\x87\x8a\xb1\xd1\x1b\x6a\xc9\ \x06\xda\xbf\x44\x0a\xc4\xf2\xe5\xcb\x49\x65\x31\x27\x18\x05\x54\ \xcc\x0a\xa2\x19\xd7\x9e\x95\x24\xb4\x20\x41\x34\x0d\x3a\x98\x03\ \xb3\xa8\x3c\x57\x23\x13\x82\x50\x20\x8c\xab\x45\xf8\x37\xae\xbc\ \x57\xea\x5c\x0b\xc5\xd8\xa0\x10\x8d\x7c\x9b\x8d\xf3\x5e\x7f\x48\ \xc6\x68\x10\xc6\x6f\x3c\x03\x00\x0b\x43\x30\x44\xd2\x35\x0d\x43\ \x9f\xef\x31\x8e\x2f\x21\xa5\x25\x09\x82\x69\xf6\x05\x60\xd6\x40\ \xc3\xb8\xc2\xb4\x0e\xcf\x7d\xd5\x4a\xf6\x31\x17\xc0\xff\xb0\x26\ \x6b\x01\x12\x7b\xd2\xa0\x01\x3e\xbc\xd7\x17\xd9\xf3\x0d\x0d\xe0\ \x65\x88\xd0\x86\xe9\x82\x90\x0f\x7f\x02\x61\x1e\xfe\x86\x5d\x6a\ \x7f\x02\xa0\x59\xd8\xc8\xed\x2f\x5e\xbc\x08\x68\x48\x1d\x89\x03\ \x00\x3e\x08\x69\xb2\x2f\x84\xeb\x00\xe9\x32\x8b\xf4\x55\x5b\xe6\ \x40\x07\x6b\xe0\xf0\x58\x83\x88\xc3\x3c\x0b\x26\x53\xeb\x61\x53\ \xec\xa2\x2a\xf4\xae\x4d\x2f\x9d\x6b\x10\x85\xa4\x4a\xd3\x56\x9c\ \x1c\x0c\x10\x26\x91\x0c\x73\xd0\x06\x00\x83\x01\x1c\x14\x6b\xe1\ \xb1\xd1\x1e\xf3\x07\x01\x61\x5d\x68\x45\x73\xb8\x47\x0b\x99\x03\ \xe3\x80\x00\xf3\xbc\x8b\x43\x25\x04\x1a\xc5\xb8\xda\x87\x01\xa0\ \x4c\x0d\xc2\x60\xc0\x06\x51\x48\x18\x55\x85\x50\x7d\x47\x14\x46\ \x5c\x61\x1c\x8d\xc1\x31\xf2\x1e\x0c\xb3\x06\x0c\x41\x1b\x0c\xd2\ \x01\x4d\xed\x83\x31\xd6\xa5\x94\xc6\x79\x5a\x1a\xb3\x47\x36\x7e\ \xff\xfe\x7d\x9c\xec\xb0\xf5\x05\x3e\x20\x95\xbb\x69\x32\x46\x15\ \x98\x8a\x63\x2b\x33\x31\x4d\x0b\x46\xa8\xe0\x32\x82\x97\x2c\x59\ \x42\xb1\xc4\x19\x5f\x69\x46\x88\xb4\x61\x1e\xa6\x59\x03\x86\x01\ \x8e\xe8\x01\xd3\x5c\x71\xd0\xac\xc9\x95\x75\x19\xc3\x54\x4c\xb3\ \x05\xe2\xfd\x6b\x80\x9b\xda\xb0\x47\xc2\x28\x04\x40\xac\x21\x92\ \x2b\xb6\x8f\x39\x00\x00\xe6\x01\xe1\xe6\x0d\xe6\x21\x26\x2f\xfa\ \x03\x7d\x92\x76\x0e\x38\x80\x82\xc6\xa8\x25\x8c\x13\xfa\x58\x1f\ \xad\x1a\xd6\x07\x94\xb3\x11\x26\x21\x02\x50\xb5\x41\xd4\xbf\x94\ \x79\x54\x17\x82\x91\x26\x7e\x40\x4d\xe4\x1d\x23\x8a\x79\x88\xe9\ \x30\x73\x60\xd4\xb9\xcc\x43\x5b\xe4\x81\x39\x00\x05\x20\x79\xc7\ \x6d\x1b\x15\x0d\x30\x03\x63\x63\x25\x44\x83\x59\x01\x80\x09\xa4\ \x4d\xb9\x8a\xad\x32\x66\x4a\x8c\x64\x35\x15\xcf\x0e\x64\xce\x08\ \x01\xc8\x98\x0b\x8e\xd5\x04\x88\xf7\xd4\x06\x43\x26\x9a\x85\x1f\ \x61\x9d\xd1\xd2\x00\xe3\x36\x1d\x86\x70\x4a\x84\xaf\x7c\xa6\x08\ \xf1\x84\x5d\x3d\x39\x0c\xe8\xd4\xb0\x61\xa3\x00\xa0\x31\x6e\x78\ \x86\x79\xde\xb1\xe0\xa1\x13\x05\x04\x3e\x9f\x00\xc1\xb4\x7b\x51\ \x67\x70\xff\x56\x27\x58\x56\x0d\x90\x51\x9a\xea\x8e\x9a\xe7\x55\ \xd2\x3a\x9d\x28\xc0\xb8\x67\x06\x8c\x31\x17\xa6\xb8\x1a\xfb\xcd\ \xf4\x90\x3c\xcf\xfa\x05\x8b\x1f\x9a\xd9\xa2\x69\x35\x60\xd0\x0c\ \x9b\x68\x1c\xfb\x8e\xaa\x06\x68\xab\x4a\xd1\x31\x98\x70\x1e\xfb\ \x43\x38\x04\xeb\xe1\x71\x60\xf3\x66\x2c\x49\x4d\xd3\x3e\x49\x03\ \x13\x42\xdd\xbb\x6f\xa3\x29\x30\x6c\x8d\x60\xde\x6f\xea\xab\x84\ \x87\xca\x1e\xc9\x31\x00\xd5\x7c\xe2\xfd\xfa\x80\x3c\x21\x82\x9b\ \xaf\xda\x54\x55\x88\xb7\xb4\x05\x00\x41\x50\x0b\xe6\xcf\x5c\x9a\ \xfa\x6b\x1f\xa7\xe6\xa6\x96\x54\xdd\x96\x85\x4c\xed\x1d\x46\x74\ \xb6\xac\xc7\x3b\xae\x6f\x04\x92\x27\xfd\x0a\xa6\x88\x29\x00\x40\ \x59\x35\x60\xd8\x23\x2b\x01\xb0\xa9\x01\xee\x2b\xd1\x8c\xe5\x35\ \xa1\x50\xf7\x32\x2d\x58\xb4\x34\x15\xeb\xfa\x52\xb1\xba\x39\x75\ \x90\x2a\xc7\x3b\x66\x99\x9e\x31\xa2\x19\xac\xaf\x29\x5b\xd0\xe5\ \xa3\x10\xe1\xd0\xcc\xb3\xb4\x55\x94\xd3\x07\xc8\xa8\x04\x20\x95\ \x52\x60\xf2\x67\x0e\xf9\x7b\x9f\x3d\x23\x7c\xde\xdf\x1e\xcc\x3e\ \x4a\xb5\x55\xf5\xa9\x3e\xca\xd8\x89\x75\x93\x53\xfd\xec\xc8\x19\ \x1a\xa6\x38\xcf\xf7\x5c\xc3\xee\xfe\x76\x35\x0d\xb0\xde\x04\xa0\ \xdc\x3e\x20\x4f\x40\xbe\xa2\xf3\xde\x4c\xd0\xef\x7f\x30\xeb\x5c\ \xfb\xf7\x31\xbf\xa7\x37\x75\x84\xea\x77\xb5\xb7\xa5\xee\xb6\xf6\ \xd4\x1b\x6a\x3c\x21\xbe\x9c\x0f\xe6\x34\x8c\xf5\x2c\x99\x05\x54\ \xe9\x6b\x86\x66\x93\xac\x5b\xda\x8a\x12\x53\x6e\x00\x8c\xdd\x3a\ \x2d\x9a\xa1\xd1\x33\x02\x55\x9f\x79\x3a\x35\xed\x1b\x6f\x5e\xc5\ \x07\x8f\xfa\xba\xd4\xf7\xbc\x27\x3d\x8d\x32\xb9\xb3\xa7\x3b\xf5\ \x15\x99\xfb\x7d\xc5\x0a\x00\xbc\x83\xa7\x57\xd2\xa5\x25\x38\x7b\ \x50\x83\x70\x1d\x1d\x00\x24\x40\x00\x2c\xb9\x75\x4a\x82\xc2\xbd\ \x85\x92\xcc\x6b\xe3\xcc\xc9\xca\xe3\xca\x42\x7a\x45\x32\x55\x5d\ \x91\xba\xba\x3b\x23\xb7\x4e\xa9\xab\xb3\xcb\x13\x6b\x22\x06\x60\ \x19\xf7\x65\xdc\xc6\x98\xc5\xd2\x90\xad\xa8\x57\x2e\x57\xf3\x24\ \x57\x42\xcc\xe3\x21\x42\x7f\x03\xb1\x66\x7e\x48\x0e\xdb\xa4\x9b\ \xfe\xe6\x6d\x96\x10\x56\x37\xb3\x21\x4d\xa8\x9c\x98\xba\x7a\xbb\ \xd2\xa3\x2b\x0f\x01\x0c\x2d\x61\x4d\xee\xcd\x1a\x3d\x87\x54\xab\ \xbc\x1f\xdd\x54\x18\x06\xf2\x84\xc0\x84\xa0\xd0\x4c\x7a\x90\x9a\ \x80\x51\x10\x91\x12\x23\xfd\x7c\xf1\x83\x60\x3c\x95\xce\x67\x82\ \xda\x33\x8c\x73\x82\xb4\x60\xc1\x02\xcf\x27\x05\xd8\xc4\x89\x44\ \x69\x74\x8b\x21\x9d\x9a\xcd\xb3\x3a\x80\x80\x60\x6d\x14\xd5\x67\ \x0c\x66\x01\x8a\xda\x3d\x3e\x5b\x65\xc0\x18\xeb\xad\x05\xb4\x65\ \x41\xf0\x9c\x32\x3e\xdb\x71\x40\x2b\xd0\xcc\xc9\x3b\x42\xb5\x84\ \x3d\x47\x4f\x03\x4c\x47\x05\x82\x67\x08\xf1\x68\x8b\x31\x99\xf6\ \xd0\xd3\x12\x1a\x10\x50\x79\x6b\x04\xab\x41\xdf\xf1\xec\x12\x9a\ \xa9\x20\x39\x12\xf3\x5c\xd0\x33\x4a\x80\xf5\xd3\x1d\xe6\x05\xf3\ \xa3\x75\x20\x62\xfd\xaf\xf3\xd3\x0c\x60\xca\x6a\x4d\x02\x21\x1a\ \x40\xf2\x1f\x47\x19\x83\x21\x8b\x17\xa4\xed\x3c\xc3\x27\x5f\x77\ \x00\x94\x4a\x12\x06\xd9\x03\xe6\x35\x09\xfd\x0f\x42\xe0\x58\x8c\ \xdf\x46\xd7\x07\x58\xcf\xeb\x84\x54\x77\x2b\x40\x98\x32\x13\xb4\ \x74\x36\x1c\xf2\x9b\x45\x8b\x15\x9d\x1f\x52\x61\x44\x8f\x1e\x5f\ \xaa\xd1\x0e\x4f\x95\x00\x8f\xf7\x33\xa0\x3c\x29\x6a\x6e\x6e\x36\ \xed\x1d\x55\x1f\x20\xc3\x1e\x45\xeb\x18\x01\x85\x7c\xdc\x83\x4e\ \xf3\x7a\x01\x31\xf4\xe1\x20\x61\x54\xd3\x00\x00\xde\xa1\xf6\x67\ \x1d\xd7\xd4\x21\x5a\x4c\xb1\x27\x63\x74\xd6\xc0\xf9\x01\xfa\x88\ \x00\xe0\x0b\x71\xb9\x01\xc0\xa1\x69\xbf\x66\x6c\x48\x0b\xf5\xd5\ \x57\xc0\xb8\xde\xde\x52\xd7\x44\x4a\xa6\x4a\x73\x0b\x55\xde\x22\ \x27\x9f\x0c\x79\x62\x84\xf4\x31\xbb\x11\x29\x6c\x31\x50\xae\x61\ \xd1\x72\x54\x7f\x36\x88\xb3\x04\x2e\x05\x06\x10\x20\x54\xe7\x05\ \x13\xac\x81\xdd\x23\x71\xa5\x6a\x6d\x60\x46\x49\xb7\xb6\x27\xf9\ \xf1\x54\x29\xff\x75\x8a\x77\xf9\xd6\xc0\xbc\xb5\x6b\xd7\x72\xec\ \xa6\x06\xe9\x24\xf9\x2e\x21\xdd\x00\xde\x87\x06\x34\xf0\xf0\x0e\ \xcd\x8c\xee\x6d\x5a\x80\x2d\x2a\x39\xbb\xc7\xde\x10\xe7\x87\x0d\ \x08\xf1\x4b\x8e\xa7\xba\x1e\x8c\x70\xc6\x0f\x53\x00\xc5\xf1\x39\ \x6b\xc8\x98\xef\x20\x6d\x00\x63\x3d\x2b\x4e\x2a\x40\xd6\xf6\x3d\ \x40\xf5\xbc\x01\xba\xa0\x01\x20\x6f\x15\xf9\xdb\x5b\xff\x14\xed\ \xc7\xb6\x7c\xf5\xa5\xbd\xea\xfd\xd9\xc0\xdf\x4a\x9b\x4e\x12\x8f\ \x0e\x51\x48\x15\xa2\xf3\x69\x33\x34\xd1\x79\x9f\x64\xc7\x46\xe6\ \x67\x68\x33\x29\xe2\x7d\x4b\x5d\x01\xf8\xee\xbb\xef\x86\x22\x59\ \x00\xd1\xd0\xb3\x11\x49\xfe\x5b\x8c\x81\x9b\x64\x5a\x6c\xca\x22\ \xf9\xd8\x9b\xaf\xeb\xed\x2c\x6e\x4d\x0f\x61\x7e\xa8\x90\x28\x8f\ \xb8\xec\x6e\xea\xb5\xa4\x79\x86\xef\x91\xd8\x70\x69\xb9\x66\x82\ \xcf\xf0\x0b\xb6\xe7\x83\x23\x31\x57\xfd\xc7\x85\xf8\xfb\x86\x2f\ \x63\xa8\xad\x18\x52\xea\x08\x6f\x79\x28\x08\x5f\xef\x5f\x58\x04\ \x83\x32\xe2\x55\xe2\x65\x12\x2f\x3f\x10\x44\x7c\x1b\x8f\xcf\xf2\ \x69\xae\xcd\xf8\x3e\x82\x26\x38\x95\x01\xe8\xd4\x58\x63\x7a\xd0\ \x50\x13\x9d\xbf\x57\x80\x3e\xf6\x1b\x88\xf1\xbe\xb8\xbc\x88\xa9\ \x8f\xc3\x41\x3e\x09\xa0\x7e\x6c\x02\x83\xd0\x3a\xc2\x9c\x2e\x45\ \x38\xfe\x3a\xd6\xbb\xc0\x29\x7e\x21\xfe\xf6\x7e\x52\x2c\xbc\x3a\ \x54\xf6\xf3\x40\x77\x59\xfc\xf0\x13\xfe\xcc\x8d\xf9\x79\xc9\x4b\ \x67\x34\xa0\xbe\x1d\xb6\x74\x24\x88\xf8\x5f\xbc\xdb\x99\xde\x4f\ \x73\xc3\x42\xb4\xd7\x65\xc8\x4f\x90\x0e\xb4\x12\x1b\xef\x45\x7f\ \x12\x7f\x71\xfa\x3a\x0b\x81\xf1\xf7\x7d\xd3\x02\xed\x96\x60\x66\ \x6e\x3c\x83\x7e\x7d\x00\x41\xfd\xca\xef\x48\xb2\x10\x9d\x7b\xfa\ \x60\xdc\xb3\x50\x7b\xcc\xb9\x16\xd7\xa7\x69\x6c\x34\x40\xec\x23\ \x68\x04\xe3\x7d\x0e\x9a\x03\x00\x42\x15\x99\x6c\xf4\x9a\xe8\x18\ \xa2\xfa\xeb\xb5\x40\x67\x21\x54\x07\x7f\x44\x07\xc5\x34\x86\xdb\ \xf8\xbf\xce\xa6\x34\xfe\x5f\x63\xe3\x00\x8c\x03\xf0\x11\xb7\xff\ \x03\x7f\x19\x0a\xe4\xd7\x62\x63\xda\x00\x00\x00\x00\x49\x45\x4e\ \x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x1a\ \x08\xdd\xe1\xa7\ \x00\x61\ \x00\x63\x00\x63\x00\x65\x00\x73\x00\x73\x00\x6f\x00\x72\x00\x69\x00\x65\x00\x73\x00\x2d\x00\x64\x00\x69\x00\x63\x00\x74\x00\x69\ \x00\x6f\x00\x6e\x00\x61\x00\x72\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x08\x99\x64\x87\ \x00\x6b\ \x00\x63\x00\x68\x00\x61\x00\x72\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x10\ \x0f\xad\xca\x47\ \x00\x68\ \x00\x65\x00\x6c\x00\x70\x00\x2d\x00\x62\x00\x72\x00\x6f\x00\x77\x00\x73\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x07\ \x0e\x95\x57\x87\ \x00\x6b\ \x00\x33\x00\x62\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x0b\x34\x2d\xe7\ \x00\x61\ \x00\x6b\x00\x72\x00\x65\x00\x67\x00\x61\x00\x74\x00\x6f\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x01\xad\xab\x47\ \x00\x64\ \x00\x69\x00\x67\x00\x69\x00\x6b\x00\x61\x00\x6d\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\ \x00\x00\x00\xae\x00\x00\x00\x00\x00\x01\x00\x00\x76\xac\ \x00\x00\x00\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x15\x18\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x63\x9f\ \x00\x00\x00\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x43\x7f\ \x00\x00\x00\x54\x00\x00\x00\x00\x00\x01\x00\x00\x28\x33\ " 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() PyQt5_gpl-5.10.1/examples/animation/stickman/0000755000076500000240000000000013245231431021105 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/animation/stickman/animations/0000755000076500000240000000000013245231431023247 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/animation/stickman/animations/chilling0000644000076500000240000001455413245231431024774 0ustar philstaff00000000000000ÿÿÿÿ@8LÊ?J$ÞÀb—2]ó@:%ÎEÀX° Ý †TÀ@Ã1Ê-çèÀNNÆ…/bØ@P ²Ä]ÀCšŽÊ>¬/À>ƒj±`;±@E5/n0\@2S™ËÅü@JÇžÓì˜ÀD~}ñ-~À`]Ë·ÖÞÕ@"¢ä7ZÀciáya˜G@Px ZúÄÀ[yn{ºÓw@<ŽU@8LËu|äÀb—ËFž@:ù ¡ÀX°CæÆÀ@Ã7)°­qÀNN )ø¯c@P ÷zuùÀCš£ÇÿŽçÀ>ƒ$Lj1@E5‚B˜#@2S¾5úñ@Jë†~©çÀD~sD±áQÀ`]ÂZUÇc@"¢ËiYPMÀcià¹2Þ@Px¹תÀ[yzf³yk@ƒ$Lj1@E5‚B˜#@2S¾5úñ@Jë†~©çÀD~sD±áQÀ`]ÂZUÇc@"¢ËiYPMÀcià¹2Þ@Px¹תÀ[yzf³yk@ƒ´6N‘@E5Q»@2SsH‚¸³@J¡ÞÌ‘ÀD~ˆÈ™ÌãÀ`]ÕŒâÔÖ@"¢þAs“³ÀciâCDi×@PxÕ°—±À[yb%íB@ƒ¸)h¬@E5Ræˆ @2Sq5V'¾@JŸ×³:dÀD~‰_ûÖ¦À`]ÖöÍ”@"¢ÿ§,§ÀciâṄ@Px˜ ËÀ[ya}¼À3@ƒ»S@E5TAŒô@2So§š^Õ@JžSæ ÀD~‰ÑLIìÀ`]ÖyáA@"£²ðe÷ÀciâV5¾=@PxiñPNÀ[y`ÿìËg@¡R@P 8äŒÀCšuÕæ¡\À>ƒ¾ýl@E5VÖ>¶@2SmžÜ{|@JœVsŽ{ÀD~Še›šÂÀ`]Öýhðj@"£eò€Àciâ`ÒÍ@Px-¢ SÀ[y`[\Ål@ƒÀ:¢›@E5V™nûÒ@2Sl÷óoY@J›³qÙ~ÀD~Š•"ÃÀ`]×'Ðÿ$@"£³jÀciâd9w@PxPñÔÀ[y`&§v+@-ÀX°&¡tåbÀ@Ã*¾HÉÀNNöï÷5Ö@P '!0sÀCšt¤QÑ À>ƒÃ Âô@E5Wå 4_@2Sk{Ç‘a@Jš@7}ÁÀD~‹\qÀ`]׈co@"£qÝÀciâkø.Œ@PxîWè9À[y_®«5"@ƒÃEŸM/@E5Wþ§ž³@2Sk^h/2@Jš#‰Ã"ÀD~‹ ¸^lÀ`]רÈF@"£•2©€Àciâl‘XÃ@Pxêò‰ªÀ[y_¥gà@ƒÃ޾C@E5X /êJ@2Sk7öo@J™þKŸÀD~‹©¿KÀ`]×™œqÀ@"£¯X2ÀciâmYÑ÷@Px怱…À[y_™FE=@Q ÀgŸ%É™Q@ijôt¡ê@aˆ öÑ@^ÜûW>e@`¡âãÎñ„@kê4xΑ,@8LÈÁ2äùÀb— .øÞ@:\fÆê ÀX°&©×2}À@Ã*³ÉßÀNN÷6“–@P $îQeÀCšt~u‘‘À>ƒÃ޾C@E5X /êJ@2Sk7öo@J™þKŸÀD~‹©¿KÀ`]×™œqÀ@"£¯X2ÀciâmYÑ÷@Px怱…À[y_™FE=@Q ÀgŸ%É™Q@ijôt¡ê@aˆ öÑ@^ÜûW>e@`¡âãÎñ„@kê4xΑ,@8LÈ¿Ïü<Àb— ¢7¼@:\›9”zÀX°&¯Lê—À@Ã*¬ô1cÀNN÷dš%@P #ÐÀCšteÍÿÐÀ>ƒÃâ¾%@E5XFµ³…@2Sk Ë ’@J™ÒàíBÀD~‹!;ðöÀ`]פÔ¯@"£ÌÂöÏÀciân@3@PxáežœÀ[y_‹WÀò@ƒÃÄ×Î @E5X8ÿi¦@2SkƒÁÐ@J™â:ZDÀD~‹ÂpôÀ`]× ÕçH@"£Â0#\Àciâmî%«@Pxã6ÛhÀ[y_M6@ƒÃΫÊT@E5X=?&@2SkXÖ,@J™Ý.ÀÀD~‹:÷´À`]×¢%à|@"£ũ߀Àciân Ÿ@PxâîÀ[y_Ž«ïò@ƒÃÛˆê)@E5XCgzG@2Sk•Iµ@J™Ö”2ÀD~‹ 'ËÀ`]ףݠ3@"£Ê6mÛÀciân,\7@PxáÕÅïÀ[y_Œ‰Çn@ïÀd|ð²Rœ$@Z˜< {U­ÀgŸ%ÊKŽ@ij÷#¶ö@aˆ ý@˜^@^ÜûZjPÌ@`¡âã»XÄ@kê4yÞ‘@8LȿݞÀb— ¢Çâ@:\™LYÏÀX°&¯’À@Ã*­4yyÀNN÷bß*¡@P #EïÀCštfµ×éÀ>ƒÃߨ4²@E5XEKoB@2Sk jhä@J™Ôvs6ÀD~‹ ŹEÀ`]פj‹z@"£Ë«tÀciân7©u@Pxá•¡ÛÀ[y_‹ÚÃ*@ƒÃëëXz@E5XJë Þ@2Sk÷áÚ@J™Î*í-ÀD~‹"›{ËÀ`]צ Çl@"£ÐÒ_ÀciânYH®@PxàÖéÆÀ[y_‰Ñý@Ž@*âÕŒTÖ@N\»ï±’fÀC¿û¦™K!À_…Ѝž%@ ãÍ_òhâÀcZŸwâby@`Öã¬Ì_À4¥¥H®Â@dã€k!'–ÀP #©ÃäÀI‰Ë[¾gÓ@Q&ó@Ò Á@0S=ì+Ëã@Uß¶‡ƒrÉÀePzyì@Z³]ýu»Àg¬#…L>Á@i¤PýÁ¾@a,€5@^²Øië™@`¢°r20H@kÛL´r4@9yæØ–u:ÀaÀ‡í@8ìÙÇQ·ÀW¸™› wÀBó‡œ •ÀKÈ/Ëo@N[{_¬À?kIŸï¨ÀAõ¿vÜ@GÁ°3>‡@)5éBào&@MË7m¦Ä½ÀCÂÒ1[ñ®À_‹ùeK³¹@ ò8êaµhÀc[%±)sD@`t°ñ¯‡À<+[ŸÕÌ:@_Ñÿ³´iÀTùŸr3ùÀIÓúW­ò„@QVæ0­6÷@0EzŽ×Uù@UÏÌ*-Àej0X<Ó@Z·>1ûÀ¼Àg­Z.Ì—»@iªÒvÏÆ@a'ý­©@^­ík$¹\@`¢¾šÿ@kÙ[x™™@:ºÜú]À`õÈAôæ@Aú»ôJÀUª&éìLðÀ;!LÆT?\ÀK[P |˜@PùË ®À7“KO;óXÀAAhø T@H ™…,@*do~ªp@OÕ¤&kàaÀCt‹±˜òÀ_äŽ|m@ Bå5º¾LÀcTdè¨^@aSHÄðÀ8‰×çËÄC@evn?¯ "ÀQe§Úª&uÀIæF‚Ð$¹@Q/gÜòõ@-pnáóËú@V¢‘à?Àehrrû%@Z·שÀ&Àg­Iø•"1@iªqíÅ/‰@`ýÖ=@^«†6ëÅ@`¢ÇV5Fé@kØ5OäÄR@:" ÀÈŒhÀazáqWâÐ@7ˆW+´'eÀVz’-$lÀBª/í›!4ÀJô¥…ïû@MÃÆ¬EyÀ= £Á³p¿ÀBýv8@H•SìTæ@$æ¼Lù´÷@NÌOâ€jNÀC{ n} ÀÀ_&›à-p@ W܆àÓìÀcU)G9³@`G nâ{åÀ=Žy³ÅØ@YôÙn£}ÊÀS´®‹¸æ-ÀJð²cs%@Q¹‰®NëÍ@+Ù,©Ð±p@V„çPÀe¾`ܹ‡K@ZÄšž& ²Àg°Óˆ›î @i¿JCQÂ@`Òp)–@Ä@^ž]íœA@`¢ä_¿ïQ@kÒÔõÚ@9“|WÀaí8Hö@9ÎÔ=OáÀWZy€ÑîÀAZ°[Ù„§ÀLkK¦Åg@O1yiÊÄÀ@r؇?JÛÀA03½m@G’ö_‡@,V·’LT@M̆"óbÀCíh†mñ÷À_×!IUO@!xÇÊÝ®3Àc`h7”}@UaFì·¼ÀXíÝŸÝ1ö@M4Õ]ÎsÀb“t‡ŒàÀI cC¾Ä@QˆÁkn@1ä¯dÒ«@U8r€µ¬Àe,RW8Ö@Z­D…1þÕÀgª(߇‘Ð@iš€ MI„@a,J’ d @^º’¸Õ2@`¢ŽyGõð@kÞR{Íÿv@9 ‡˜¸àìÀb.›ô š@8;™!WÀWÞvx uÀAÛÉÎÛLÀLýVkÄ@NÝcgèƒ6ÀAÃV’UoÌÀ@ç~üC‚@FŠWAÖÑ@-ÔbTàY@L'VÂÍ‹ÀBZðMZËæÀ`Ú G‰B1Àb˜[©ˆÃ:ÀH•O9}ð@PÌùßéÖ@3 Ô ^¯Ž@Tº„5AØÀe®mVZ;@Z§}~—Å´Àg§þ£Ú`i@i22à÷C@a;ªx·Á@^ÀGr^#¶@`¢uF„VÃ@kàxÕÌŒPyQt5_gpl-5.10.1/examples/animation/stickman/animations/dancing0000644000076500000240000000445413245231431024604 0ustar philstaff00000000000000ÿÿÿÿ À6Á1÷qÍÀbÄ1e–4À"Yu^?ðÀY€šé ÀGRÉ/zÀE)*g1y@Idä6ŒþÀP"qdå?Ë?É~F‚tA@Hâ|g§ò@Hu¸Úlä¬@CCŒ±c—öÀY”2×svó?øÑk,‚%À_‚¿ µ­@Jm‡@U2sª”ìwÀNIhæ•Ó@`åÞbl•À:»_©†~ÀhÊÛÜÝ6@S:tVQ@Pµoa\@NRX Ó mÀ8¾i44 ×@i>ª:NóÀ=ÿ©¥N§@rÀiÌ ²@?¢¯î²z£@f· ‡ö-@=®š@ß_ž£@`eTSÄ8q@@ ³„ŸÒœÀPö,•½Ÿ@O;°Q‘–?õ¶»L‰û§@R@MË@®À>EšvVû¬@fÃKœâË À=sµ;!2¶@q£—¼yß„@<Õø'bd@hkm i~@=µ7v±î@rw¦¦!Î_¿ãTùÑû–Àb9]H@baÀ¤@þ#AfÀWþžzZŒeÀQS‡/˜Ÿ/ÀP±§¿W@8M§9šÀ?•mjröMÀTE‹/WŽ'@AÑS«n÷ÀA$GÅ0›@J ª„ü Àa&Ú®Z¾ ÀG‡­1æVIÀeñ«¢qzÀUïŸ#&¿ý@D¤4I™´@B­Å9üÃÉ@TwcUÝU?Ò;{"jÖÀXÏÁµT@KÂbc«bÀ@ÛúF"‡‰@T dòš€*ÀDë)š/”I@dà65L~J;{™ý@p§Ê ªHÙ@9F¥2Fü@gÔÀl7ª@=“à0Õ æ@r+.Ú‘Ò¿×ç¡—9ÀÀb¼Õ¤8+3À+$¢÷¼:ÀYk9H-ÀPü"]˜ØàÀL;€F¯Ü@@?£á7¼|ÀG§3°Ö8ÀJŸËáH@F³¼ÆÎþÀNÇvÇ@Hýõ3~KÀ`bÐ7Ð>%À8¥úSüz}ÀdRŒŽÞðmÀQµ{ðã…!@RaŽ;ëÑÞ@#TrM~f¶@ZÆ0xe^ÀA„5­È„ÀPá<ïA–@QXA'§"@¤‹¥L@Ròâ¾”À:­ÛöàÍ)@gž¨n¤CÀ=¤ÊKF@r Î Ñ@=í¹{õŠ@hׯ֝1P@=´¦2³r @r­â=èØÀ4÷Jè17Àcç<×RnÀ2‡Î"TÀY•ŠÃɸÀQ5Éܰ߷ÀJSºªYém@?'ã!w¼ÀJG¦<'ÑÀF<('}r{@G¿Ì²›u÷@¾}E!‰@Gé+õi©zÀ^úäRâî=À ŸÃÅ*Àc-gÔhÙÕÀKæ÷ÆÓ²@VšðŠaÀ*ÞÜΙ†Â@]5â ‰ºÀOX•…„ÔÀKQBú+¥ï@R„4­6ß@.ºv¥±¸E@R9Iª0>À7¹o‡ýÐw@h>µ¹èÍŠÀ=ß/@zÈÐ@r^TÐ¥4D@=ýáRŠ@h¯ˆÿØü0@=´–áÉG@r™ÃíÀDŰÿøÀb×ÌÛQ7éÀ8p&?ÝÑÀYÓÊÑmfÀP›_ßT˜‚ÀG58Þ>YÑ@@:KÞ±^ÀN¨ãsÂÀ:ͤ<œ£J@H^éÈAJ@6£g\ßr@D¥Ô0»¾ÀXÈ¡R)¤@0Gáª1d>Àc]²éÌzâ@)é—[pª@XP oïÀ@€õ_U5Q@`ê&ÌÃbÀR|‡”TÍÀ@{™šX}N@R¼ùGtœÓ@B TK㇠@P!GPX%À5Ø EŒÝ@hûtBLPÀ>MŸ ®:Ë@r¹ÿ­’Z@=kø:þ[Ì@g·v ƒ+@=¯.$¥@r¹JƒZ6ÀV!{-'tÀ]÷r—ëÀEjÎKJYÀXk˜ÊÎ[ÀPy!í À>Õò\@ @8Ô,y{·ÀR§Þf°ªB?×µâ{‰¤Ê@Hƒ[3@F©Bp‚òü@::B¹…7)ÀTâÅ'Qj@BÑ{*¡Àa ‹#zÀ@3GšI‚æ@W¬ë›y0úÀSå>@`C«Q¿‡ïÀ]ã\ió-‰@€t`¹ê@R¾t -@PP›â¥ºN@F)’ØëQ²À2g¹_Ë™@hÔÌŸc/!À>ygC[@r¡¯-†è@C8T9‰_ö@dÚRè¾½@>ªeÚ³ÙÏ@pªRô™ÿ PyQt5_gpl-5.10.1/examples/animation/stickman/animations/dead0000644000076500000240000000041413245231431024066 0ustar philstaff00000000000000ÿÿÿÿÀruмJ~;@n¨:vÌJOÀnÄÛŠ@m‘•J¯qÀiLþPlwn@rAõ)£DÊÀgÑ»kfôü@h|A«'ðÀY AðÖ)I@qrhx``„ÀWŽK6^‹o@l° ÎÅ"Àpõ˧x•@qDNzP…ŸÀtrfZ®@qñäö~Àd.W[ãol@pS^[jzÀ`-É5&¯Ð@rñ„¶ðØ®ÀS !-d[³@r@ —¿UÀQ ÏH<@kѨ*ßb@Dw{ì@oüeii@a!ò2¡ØÙ@qA%DШ@LˆçN»ë¸@l{ä(z @b‡Œ«µ•ñ@pÔKLƒPyQt5_gpl-5.10.1/examples/animation/stickman/animations/jumping0000644000076500000240000000243413245231431024646 0ustar philstaff00000000000000ÿÿÿÿÀbÀÀYÀIÀI@IÀIÀ9@I@9@IÀYÀ_@@I@Y@_@@IÀA€@RÀ@A€@RÀÀ9@iÀ>@rÀ@9@i@>@rÀÀ<‰xïdAùÀfÙèá}À1ã$n5KÀ`¾¨Ë£˜èÀK&œÝ¶ÎÀRUó^šÌ@E\ú›}ÀXcBMȪÀ_Á²Òm@1÷/Ù@l@EVQì®}î@(¾:.j6ÀUŽ?†6DÀ$}âåV]ŽÀ]8å°cV2@B?+±3æ«@G'u²ÿáÀe€iÉEä@F¥‹:l§¨Àl¦sÿ¼À#»µµQ}@F$'Þ7®e@M4Ê €ú@;d½!_€À7éV—Y @e/†´MÀ<µµÅZÕ0@pÍÀ;ïÖ@CÎ834Ý@bìºqb@?^r%@oe:MíÀÙÀ<‰¸§ë©ÀfÚ S1À1áŒðºßuÀ`¾Ñ¦dC‚ÀK&ˆ’Ê¿ÀRV”ª0]r@E]RmWœÙÀXbÌ`tþTÀi¤ _Ï@1 ÐÐbí@ETÃEîÒÌ@#Ó8Öi(ÀUŽqn1À$‚ÛyÃnÀ]8ŠÇÊt@B>P3@G'U²j¥-Àe>¨@F¥ýfg#ÀlΪBFÀ#9Œ•¥@F&àµ4^^@M4­IA^@;_ù(K¦bÀ7êl“ü¦³@eì°{¨üÀ<µþÒ»óK@pÎm7^}@CÎÌG&Â@bës€:‹¯@?^â·®_¶@od‘,&Ê!À80kºÜÀdë¾ô™ò›À£0Û¶À^JŸ€ï¸ÀHöŒ}é½òÀP¨~&[m@HÏzY¡$ÅÀS 5 ´»À/ j5—Ó~@>ˆ {Á´/@A TQ.~@9Éž÷²ØÆÀUþÆ#°O%À`=f’çÀ]ºÎ^*T%@CÄ$Ob@X ÎKÙ"áÀ6íÞ´@,s@ZÑNïÄk@?ܼ¥˜À7ê5¦fÿ@L.-(†@GI£Õâð@HÝoöðhÀ8Á2)dû[@f·êa^±WÀ=ELïoP@qœS€Kd @BŒ˜U6H*@eصyöƒ‰@=¦ÃTI+˜@q)ê~]Ã@1Â`ˆ‹NÀh<ìßÉ\/@ZƒÊÉÅÀb'6´›R`ÀH`£Æt´ÀY9CÒù{K@IU¦;‹±ÉÀVˆ»3ÜkÀAS³œ…ÿ%?óp„íé›@.¾°HRy@_‰Û[EÀÀPÀ΢ÃåDÀe&œ@í ÀT¢rÞ/HÉÀkÝΞV³@UÜ6i´niÀ=½/ðNq×@Z9 à¹!Ç@7^çæFÀG¤t¸¯·î@8þª-—~@6O˜É8}@@C f0RÜÀ?Óðˇ8@b®SÞŒÀ=%„’ÒE@o0¼X¼ß@AD¦À )Ø@cªjz Ù4@>«˜ ÙBW@pæ/ PyQt5_gpl-5.10.1/examples/animation/stickman/stickman.py0000755000076500000240000004627613245231431023312 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import math from PyQt5.QtCore import (pyqtProperty, pyqtSignal, QDataStream, QDateTime, QEvent, QEventTransition, QFile, QIODevice, QParallelAnimationGroup, QPointF, QPropertyAnimation, qrand, QRectF, QSignalTransition, qsrand, QState, QStateMachine, Qt, QTimer) from PyQt5.QtGui import QColor, QPen, QPainter, QPainterPath, QPixmap from PyQt5.QtWidgets import (QApplication, QGraphicsItem, QGraphicsObject, QGraphicsScene, QGraphicsTextItem, QGraphicsView) import stickman_rc class Node(QGraphicsObject): positionChanged = pyqtSignal() def __init__(self, pos, parent=None): super(Node, self).__init__(parent) self.m_dragging = False self.setPos(pos) self.setFlag(QGraphicsItem.ItemSendsGeometryChanges) def boundingRect(self): return QRectF(-6.0, -6.0, 12.0, 12.0) def paint(self, painter, option, widget): painter.setPen(Qt.white) painter.drawEllipse(QPointF(0.0, 0.0), 5.0, 5.0) def itemChange(self, change, value): if change == QGraphicsItem.ItemPositionChange: self.positionChanged.emit() return super(Node, self).itemChange(change, value) def mousePressEvent(self, event): self.m_dragging = True def mouseMoveEvent(self, event): if self.m_dragging: self.setPos(self.mapToParent(event.pos())) def mouseReleaseEvent(self, event): self.m_dragging = False Coords = ( # Head: 0 (0.0, -150.0), # Body pentagon, top->bottom, left->right: 1 - 5 (0.0, -100.0), (-50.0, -50.0), (50.0, -50.0), (-25.0, 50.0), (25.0, 50.0), # Right arm: 6 - 7 (-100.0, 0.0), (-125.0, 50.0), # Left arm: 8 - 9 (100.0, 0.0), (125.0, 50.0), # Lower body: 10 - 11 (-35.0, 75.0), (35.0, 75.0), # Right leg: 12 - 13 (-25.0, 200.0), (-30.0, 300.0), # Left leg: 14 - 15 (25.0, 200.0), (30.0, 300.0)) Bones = ( # Neck. (0, 1), # Body. (1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5), # Right arm. (2, 6), (6, 7), # Left arm. (3, 8), (8, 9), # Lower body. (4, 10), (4, 11), (5, 10), (5, 11), (10, 11), # Right leg. (10, 12), (12, 13), # Left leg. (11, 14), (14, 15)) class StickMan(QGraphicsObject): def __init__(self): super(StickMan, self).__init__() self.m_sticks = True self.m_isDead = False self.m_pixmap = QPixmap('images/head.png') self.m_penColor = QColor(Qt.white) self.m_fillColor = QColor(Qt.black) # Set up start position of limbs. self.m_nodes = [] for x, y in Coords: node = Node(QPointF(x, y), self) node.positionChanged.connect(self.childPositionChanged) self.m_nodes.append(node) self.m_perfectBoneLengths = [] for n1, n2 in Bones: node1 = self.m_nodes[n1] node2 = self.m_nodes[n2] dist = node1.pos() - node2.pos() self.m_perfectBoneLengths.append(math.hypot(dist.x(), dist.y())) self.startTimer(10) def childPositionChanged(self): self.prepareGeometryChange() def setDrawSticks(self, on): self.m_sticks = on for node in self.m_nodes: node.setVisible(on) def drawSticks(self): return self.m_sticks def boundingRect(self): # Account for head radius of 50.0 plus pen which is 5.0. return self.childrenBoundingRect().adjusted(-55.0, -55.0, 55.0, 55.0) def nodeCount(self): return len(self.m_nodes) def node(self, idx): if idx >= 0 and idx < len(self.m_nodes): return self.m_nodes[idx] return None def timerEvent(self, e): self.update() def stabilize(self): threshold = 0.001 for i, (n1, n2) in enumerate(Bones): node1 = self.m_nodes[n1] node2 = self.m_nodes[n2] pos1 = node1.pos() pos2 = node2.pos() dist = pos1 - pos2 length = math.hypot(dist.x(), dist.y()) diff = (length - self.m_perfectBoneLengths[i]) / length p = dist * (0.5 * diff) if p.x() > threshold and p.y() > threshold: pos1 -= p pos2 += p node1.setPos(pos1) node2.setPos(pos2) def posFor(self, idx): return self.m_nodes[idx].pos() @pyqtProperty(QColor) def penColor(self): return QColor(self.m_penColor) @penColor.setter def penColor(self, color): self.m_penColor = QColor(color) @pyqtProperty(QColor) def fillColor(self): return QColor(self.m_fillColor) @fillColor.setter def fillColor(self, color): self.m_fillColor = QColor(color) @pyqtProperty(bool) def isDead(self): return self.m_isDead @isDead.setter def isDead(self, isDead): self.m_isDead = isDead def paint(self, painter, option, widget): self.stabilize() if self.m_sticks: painter.setPen(Qt.white) for n1, n2 in Bones: node1 = self.m_nodes[n1] node2 = self.m_nodes[n2] painter.drawLine(node1.pos(), node2.pos()) else: # First bone is neck and will be used for head. path = QPainterPath() path.moveTo(self.posFor(0)) path.lineTo(self.posFor(1)) # Right arm. path.lineTo(self.posFor(2)) path.lineTo(self.posFor(6)) path.lineTo(self.posFor(7)) # Left arm. path.moveTo(self.posFor(3)) path.lineTo(self.posFor(8)) path.lineTo(self.posFor(9)) # Body. path.moveTo(self.posFor(2)) path.lineTo(self.posFor(4)) path.lineTo(self.posFor(10)) path.lineTo(self.posFor(11)) path.lineTo(self.posFor(5)) path.lineTo(self.posFor(3)) path.lineTo(self.posFor(1)) # Right leg. path.moveTo(self.posFor(10)) path.lineTo(self.posFor(12)) path.lineTo(self.posFor(13)) # Left leg. path.moveTo(self.posFor(11)) path.lineTo(self.posFor(14)) path.lineTo(self.posFor(15)) painter.setPen(QPen(self.m_penColor, 5.0, Qt.SolidLine, Qt.RoundCap)) painter.drawPath(path) n1, n2 = Bones[0] node1 = self.m_nodes[n1] node2 = self.m_nodes[n2] dist = node2.pos() - node1.pos() sinAngle = dist.x() / math.hypot(dist.x(), dist.y()) angle = math.degrees(math.asin(sinAngle)) headPos = node1.pos() painter.translate(headPos) painter.rotate(-angle) painter.setBrush(self.m_fillColor) painter.drawEllipse(QPointF(0, 0), 50.0, 50.0) painter.setBrush(self.m_penColor) painter.setPen(QPen(self.m_penColor, 2.5, Qt.SolidLine, Qt.RoundCap)) # Eyes. if self.m_isDead: painter.drawLine(-30.0, -30.0, -20.0, -20.0) painter.drawLine(-20.0, -30.0, -30.0, -20.0) painter.drawLine(20.0, -30.0, 30.0, -20.0) painter.drawLine(30.0, -30.0, 20.0, -20.0) else: painter.drawChord(QRectF(-30.0, -30.0, 25.0, 70.0), 30.0 * 16, 120.0 * 16) painter.drawChord(QRectF(5.0, -30.0, 25.0, 70.0), 30.0 * 16, 120.0 * 16) # Mouth. if self.m_isDead: painter.drawLine(-28.0, 2.0, 29.0, 2.0) else: painter.setBrush(QColor(128, 0, 64 )) painter.drawChord(QRectF(-28.0, 2.0 - 55.0 / 2.0, 57.0, 55.0), 0.0, -180.0 * 16) # Pupils. if not self.m_isDead: painter.setPen(QPen(self.m_fillColor, 1.0, Qt.SolidLine, Qt.RoundCap)) painter.setBrush(self.m_fillColor) painter.drawEllipse(QPointF(-12.0, -25.0), 5.0, 5.0) painter.drawEllipse(QPointF(22.0, -25.0), 5.0, 5.0) class GraphicsView(QGraphicsView): keyPressed = pyqtSignal(int) def keyPressEvent(self, e): if e.key() == Qt.Key_Escape: self.close() self.keyPressed.emit(Qt.Key(e.key())) class Frame(object): def __init__(self): self.m_nodePositions = [] def nodeCount(self): return len(self.m_nodePositions) def setNodeCount(self, nodeCount): while nodeCount > len(self.m_nodePositions): self.m_nodePositions.append(QPointF()) while nodeCount < len(self.m_nodePositions): self.m_nodePositions.pop() def nodePos(self, idx): return QPointF(self.m_nodePositions[idx]) def setNodePos(self, idx, pos): self.m_nodePositions[idx] = QPointF(pos) class Animation(object): def __init__(self): self.m_currentFrame = 0 self.m_frames = [Frame()] self.m_name = '' def setTotalFrames(self, totalFrames): while len(self.m_frames) < totalFrames: self.m_frames.append(Frame()) while totalFrames < len(self.m_frames): self.m_frames.pop() def totalFrames(self): return len(self.m_frames) def setCurrentFrame(self, currentFrame): self.m_currentFrame = max(min(currentFrame, self.totalFrames() - 1), 0) def currentFrame(self): return self.m_currentFrame def setNodeCount(self, nodeCount): frame = self.m_frames[self.m_currentFrame] frame.setNodeCount(nodeCount) def nodeCount(self): frame = self.m_frames[self.m_currentFrame] return frame.nodeCount() def setNodePos(self, idx, pos): frame = self.m_frames[self.m_currentFrame] frame.setNodePos(idx, pos) def nodePos(self, idx): frame = self.m_frames[self.m_currentFrame] return frame.nodePos(idx) def name(self): return self.m_name def setName(self, name): self.m_name = name def save(self, device): stream = QDataStream(device) stream.writeQString(self.m_name) stream.writeInt(len(self.m_frames)) for frame in self.m_frames: stream.writeInt(frame.nodeCount()) for i in range(frame.nodeCount()): stream << frame.nodePos(i) def load(self, device): self.m_frames = [] stream = QDataStream(device) self.m_name = stream.readQString() frameCount = stream.readInt() for i in range(frameCount): nodeCount = stream.readInt() frame = Frame() frame.setNodeCount(nodeCount) for j in range(nodeCount): pos = QPointF() stream >> pos frame.setNodePos(j, pos) self.m_frames.append(frame) class KeyPressTransition(QSignalTransition): def __init__(self, receiver, key, target=None): super(KeyPressTransition, self).__init__(receiver.keyPressed) self.m_key = key if target is not None: self.setTargetState(target) def eventTest(self, e): if super(KeyPressTransition, self).eventTest(e): key = e.arguments()[0] return key == self.m_key return False class LightningStrikesTransition(QEventTransition): def __init__(self, target): super(LightningStrikesTransition, self).__init__() self.setEventSource(self) self.setEventType(QEvent.Timer) self.setTargetState(target) qsrand(QDateTime.currentDateTime().toTime_t()) self.startTimer(1000) def eventTest(self, e): return (super(LightningStrikesTransition, self).eventTest(e) and (qrand() % 50) == 0) class LifeCycle(object): def __init__(self, stickMan, keyReceiver): self.m_stickMan = stickMan self.m_keyReceiver = keyReceiver # Create animation group to be used for all transitions. self.m_animationGroup = QParallelAnimationGroup() stickManNodeCount = self.m_stickMan.nodeCount() self._pas = [] for i in range(stickManNodeCount): pa = QPropertyAnimation(self.m_stickMan.node(i), b'pos') self._pas.append(pa) self.m_animationGroup.addAnimation(pa) # Set up intial state graph. self.m_machine = QStateMachine() self.m_machine.addDefaultAnimation(self.m_animationGroup) self.m_alive = QState(self.m_machine) self.m_alive.setObjectName('alive') # Make it blink when lightning strikes before entering dead animation. lightningBlink = QState(self.m_machine) lightningBlink.assignProperty(self.m_stickMan.scene(), 'backgroundBrush', Qt.white) lightningBlink.assignProperty(self.m_stickMan, 'penColor', Qt.black) lightningBlink.assignProperty(self.m_stickMan, 'fillColor', Qt.white) lightningBlink.assignProperty(self.m_stickMan, 'isDead', True) timer = QTimer(lightningBlink) timer.setSingleShot(True) timer.setInterval(100) lightningBlink.entered.connect(timer.start) lightningBlink.exited.connect(timer.stop) self.m_dead = QState(self.m_machine) self.m_dead.assignProperty(self.m_stickMan.scene(), 'backgroundBrush', Qt.black) self.m_dead.assignProperty(self.m_stickMan, 'penColor', Qt.white) self.m_dead.assignProperty(self.m_stickMan, 'fillColor', Qt.black) self.m_dead.setObjectName('dead') # Idle state (sets no properties). self.m_idle = QState(self.m_alive) self.m_idle.setObjectName('idle') self.m_alive.setInitialState(self.m_idle) # Lightning strikes at random. self.m_alive.addTransition(LightningStrikesTransition(lightningBlink)) lightningBlink.addTransition(timer.timeout, self.m_dead) self.m_machine.setInitialState(self.m_alive) def setDeathAnimation(self, fileName): deathAnimation = self.makeState(self.m_dead, fileName) self.m_dead.setInitialState(deathAnimation) def start(self): self.m_machine.start() def addActivity(self, fileName, key): state = self.makeState(self.m_alive, fileName) self.m_alive.addTransition(KeyPressTransition(self.m_keyReceiver, key, state)) def makeState(self, parentState, animationFileName): topLevel = QState(parentState) animation = Animation() file = QFile(animationFileName) if file.open(QIODevice.ReadOnly): animation.load(file) frameCount = animation.totalFrames() previousState = None for i in range(frameCount): animation.setCurrentFrame(i) frameState = QState(topLevel) nodeCount = animation.nodeCount() for j in range(nodeCount): frameState.assignProperty(self.m_stickMan.node(j), 'pos', animation.nodePos(j)) frameState.setObjectName('frame %d' % i) if previousState is None: topLevel.setInitialState(frameState) else: previousState.addTransition(previousState.propertiesAssigned, frameState) previousState = frameState previousState.addTransition(previousState.propertiesAssigned, topLevel.initialState()) return topLevel if __name__ == '__main__': import sys app = QApplication(sys.argv) stickMan = StickMan() stickMan.setDrawSticks(False) textItem = QGraphicsTextItem() textItem.setHtml("Stickman" "

" "Tell the stickman what to do!" "

" "

" "

  • Press J to make the stickman jump.
  • " "
  • Press D to make the stickman dance.
  • " "
  • Press C to make him chill out.
  • " "
  • When you are done, press Escape.
  • " "

    " "

    If he is unlucky, the stickman will get struck by lightning, and never jump, dance or chill out again." "

    ") w = textItem.boundingRect().width() stickManBoundingRect = stickMan.mapToScene(stickMan.boundingRect()).boundingRect() textItem.setPos(-w / 2.0, stickManBoundingRect.bottom() + 25.0) scene = QGraphicsScene() scene.addItem(stickMan) scene.addItem(textItem) scene.setBackgroundBrush(Qt.black) view = GraphicsView() view.setRenderHints(QPainter.Antialiasing) view.setTransformationAnchor(QGraphicsView.NoAnchor) view.setScene(scene) view.show() view.setFocus() # Make enough room in the scene for stickman to jump and die. sceneRect = scene.sceneRect() view.resize(sceneRect.width() + 100, sceneRect.height() + 100) view.setSceneRect(sceneRect) cycle = LifeCycle(stickMan, view) cycle.setDeathAnimation(':/animations/dead') cycle.addActivity(':/animations/jumping', Qt.Key_J) cycle.addActivity(':/animations/dancing', Qt.Key_D) cycle.addActivity(':/animations/chilling', Qt.Key_C) cycle.start() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/animation/stickman/stickman.qrc0000644000076500000240000000031713245231431023426 0ustar philstaff00000000000000 animations/chilling animations/dancing animations/dead animations/jumping PyQt5_gpl-5.10.1/examples/animation/stickman/stickman_rc.py0000644000076500000240000012666713245231431023776 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Thu May 2 17:29:21 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x19\x6c\ \xff\ \xff\xff\xff\x00\x00\x00\x19\x00\x00\x00\x10\x40\x38\x4c\xca\x3f\ \x4a\x24\xde\xc0\x62\x97\x1b\x32\x01\x5d\xf3\x40\x3a\x05\x25\x01\ \xce\x14\x45\xc0\x58\xb0\x20\xdd\x20\x86\x54\xc0\x40\xc3\x31\xca\ \x2d\xe7\xe8\xc0\x4e\x4e\xc6\x85\x2f\x62\xd8\x40\x50\x0a\x03\xb2\ \x01\xc4\x5d\xc0\x43\x9a\x8e\xca\x3e\xac\x2f\xc0\x3e\x83\x6a\xb1\ \x60\x3b\xb1\x40\x45\x35\x2f\x6e\x30\x18\x5c\x40\x32\x53\x99\xcb\ \xc5\x8d\xfc\x40\x4a\x8f\xc7\x9e\xd3\xec\x98\xc0\x44\x7e\x7d\xc3\ \xb1\x2d\x7e\xc0\x60\x5d\xcb\xb7\xd6\xde\xd5\x40\x22\xa2\xe4\x37\ \x5a\x12\x12\xc0\x63\x69\xe1\x79\x61\x98\x47\x40\x50\x78\x0c\x5a\ \xfa\x18\xc4\xc0\x5b\x79\x6e\x7b\xba\xd3\x77\x40\x3c\x78\x0c\xfd\ \x1b\x24\x7a\xc0\x62\xee\x0e\xa0\x41\x5e\x50\xc0\x46\xd1\x51\x1c\ \xc7\x57\xf6\x40\x50\x2c\x59\x00\x05\x07\x96\x40\x36\xbd\x5a\xba\ \x55\x33\x3c\x40\x53\xeb\xd5\xdc\x95\x84\x02\xc0\x64\x7c\xe6\xa7\ \x82\xd4\x73\x40\x5a\x98\x3a\x9d\x99\xd2\x25\xc0\x67\x9f\x24\xfc\ \xa8\x8b\x88\x40\x69\x6a\x0c\xdc\x04\x07\xad\x40\x61\x88\x18\xa6\ \x50\x33\xdf\x40\x5e\xdc\xf7\xac\x43\x1d\x93\x40\x60\xa1\xe2\xfa\ \x78\x8e\x27\x40\x6b\xea\x33\x3e\x3c\x8e\x55\x00\x00\x00\x10\x40\ \x38\x4c\xcb\x75\x7c\x04\xe4\xc0\x62\x97\x16\xcb\x46\x05\x9e\x40\ \x3a\x04\xf9\x90\xa0\xa1\x90\xc0\x58\xb0\x1c\x43\xe6\x16\xc6\xc0\ \x40\xc3\x37\x29\xb0\xad\x71\xc0\x4e\x4e\xa0\x29\xf8\xaf\x63\x40\ \x50\x0a\x04\xf7\x7a\x75\xf9\xc0\x43\x9a\xa3\xc7\xff\x8e\xe7\xc0\ \x3e\x83\x24\xc7\x88\x06\x31\x40\x45\x35\x0f\x82\x42\x98\x23\x40\ \x32\x53\xbe\x35\xfa\x10\xf1\x40\x4a\x8f\xeb\x86\x7e\xa9\xe7\xc0\ \x44\x7e\x73\x44\xb1\xe1\x51\xc0\x60\x5d\xc2\x5a\x55\xc7\x63\x40\ \x22\xa2\xcb\x69\x59\x50\x4d\xc0\x63\x69\xe0\xb9\x0f\x32\xde\x40\ \x50\x78\x10\xb9\x1c\xd7\xaa\xc0\x5b\x79\x7a\x66\xb3\x79\x6b\x40\ \x3c\x77\xfd\x1b\x3d\x06\x10\xc0\x62\xee\x10\xd4\xaa\xf0\xf0\xc0\ \x46\xd1\x4e\xde\x36\xe2\x04\x40\x50\x2c\x31\x73\xb4\xd5\x4d\x40\ \x36\xbd\x01\xb5\xb5\x00\xbf\x40\x53\xeb\xec\x32\x09\x0f\xf3\xc0\ \x64\x7c\xde\xd4\xf9\xea\x5a\x40\x5a\x98\x39\x7f\xc7\xf1\x43\xc0\ \x67\x9f\x24\x5c\x76\xd5\xf3\x40\x69\x6a\x0a\x70\x9e\x4e\xa4\x40\ \x61\x88\x12\x1f\x05\xdd\x03\x40\x5e\xdc\xf4\xca\xc1\xac\x79\x40\ \x60\xa1\xe3\x0c\x44\xff\x6e\x40\x6b\xea\x32\x47\x27\x58\xb5\x00\ \x00\x00\x10\x40\x38\x4c\xcb\x75\x7c\x04\xe4\xc0\x62\x97\x16\xcb\ \x46\x05\x9e\x40\x3a\x04\xf9\x90\xa0\xa1\x90\xc0\x58\xb0\x1c\x43\ \xe6\x16\xc6\xc0\x40\xc3\x37\x29\xb0\xad\x71\xc0\x4e\x4e\xa0\x29\ \xf8\xaf\x63\x40\x50\x0a\x04\xf7\x7a\x75\xf9\xc0\x43\x9a\xa3\xc7\ \xff\x8e\xe7\xc0\x3e\x83\x24\xc7\x88\x06\x31\x40\x45\x35\x0f\x82\ \x42\x98\x23\x40\x32\x53\xbe\x35\xfa\x10\xf1\x40\x4a\x8f\xeb\x86\ \x7e\xa9\xe7\xc0\x44\x7e\x73\x44\xb1\xe1\x51\xc0\x60\x5d\xc2\x5a\ \x55\xc7\x63\x40\x22\xa2\xcb\x69\x59\x50\x4d\xc0\x63\x69\xe0\xb9\ \x0f\x32\xde\x40\x50\x78\x10\xb9\x1c\xd7\xaa\xc0\x5b\x79\x7a\x66\ \xb3\x79\x6b\x40\x3c\x77\xfd\x1b\x3d\x06\x10\xc0\x62\xee\x10\xd4\ \xaa\xf0\xf0\xc0\x46\xd1\x4e\xde\x36\xe2\x04\x40\x50\x2c\x31\x73\ \xb4\xd5\x4d\x40\x36\xbd\x01\xb5\xb5\x00\xbf\x40\x53\xeb\xec\x32\ \x09\x0f\xf3\xc0\x64\x7c\xde\xd4\xf9\xea\x5a\x40\x5a\x98\x39\x7f\ \xc7\xf1\x43\xc0\x67\x9f\x24\x5c\x76\xd5\xf3\x40\x69\x6a\x0a\x70\ \x9e\x4e\xa4\x40\x61\x88\x12\x1f\x05\xdd\x03\x40\x5e\xdc\xf4\xca\ \xc1\xac\x79\x40\x60\xa1\xe3\x0c\x44\xff\x6e\x40\x6b\xea\x32\x47\ \x27\x58\xb5\x00\x00\x00\x10\x40\x38\x4c\xc9\x02\x38\xef\xcd\xc0\ \x62\x97\x1f\xb1\x2b\xf9\x2a\x40\x3a\x05\x52\xd2\x95\xd7\xab\xc0\ \x58\xb0\x25\xaa\x53\xdb\xfb\xc0\x40\xc3\x2b\xf2\x52\x75\x9c\xc0\ \x4e\x4e\xee\xcf\x9b\x90\x20\x40\x50\x0a\x02\x68\x2b\x0a\x79\xc0\ \x43\x9a\x79\x01\x1a\xe6\xb9\xc0\x3e\x83\xb4\x36\x4e\x91\x1d\x40\ \x45\x35\x51\x17\x06\xbb\x13\x40\x32\x53\x73\x48\x82\xb8\xb3\x40\ \x4a\x8f\xa1\xde\xcc\x91\x1f\xc0\x44\x7e\x88\xc8\x99\xcc\xe3\xc0\ \x60\x5d\xd5\x8c\xe2\xd4\xd6\x40\x22\xa2\xfe\x41\x73\x93\xb3\xc0\ \x63\x69\xe2\x43\x44\x69\xd7\x40\x50\x78\x07\xd5\xb0\x97\xb1\xc0\ \x5b\x79\x62\x25\xed\x42\x8d\x40\x3c\x78\x1d\x6d\x64\xc2\xa2\xc0\ \x62\xee\x0c\x58\x0f\x63\xac\xc0\x46\xd1\x53\xa5\xee\xcf\x4a\x40\ \x50\x2c\x82\x94\x9a\xd5\x79\x40\x36\xbd\xb8\x76\x84\x73\x91\x40\ \x53\xeb\xbe\x59\x7d\x1d\xee\xc0\x64\x7c\xee\xed\xf6\x5d\x09\x40\ \x5a\x98\x3b\xcb\xed\xe6\x6c\xc0\x67\x9f\x25\xa6\x1c\x6e\xe9\x40\ \x69\x6a\x0f\x6b\x3b\xad\xe5\x40\x61\x88\x1f\x86\x72\xb7\xce\x40\ \x5e\xdc\xfa\xb5\x02\x69\xbf\x40\x60\xa1\xe2\xe7\xb9\x5c\x6a\x40\ \x6b\xea\x34\x42\x75\x16\xa6\x00\x00\x00\x10\x40\x38\x4c\xc8\xf1\ \x73\x46\x04\xc0\x62\x97\x1f\xee\x0c\xf5\x37\x40\x3a\x05\x55\x49\ \x9a\x94\xdf\xc0\x58\xb0\x25\xec\x1f\xd6\x66\xc0\x40\xc3\x2b\xa0\ \x8b\xcc\x68\xc0\x4e\x4e\xf0\xf9\x4c\x7d\xc5\x40\x50\x0a\x02\x56\ \xcf\x1b\x74\xc0\x43\x9a\x77\xd7\x9d\x67\xb9\xc0\x3e\x83\xb8\x29\ \x68\x18\xac\x40\x45\x35\x52\xe6\x88\x0c\x08\x40\x32\x53\x71\x35\ \x56\x27\xbe\x40\x4a\x8f\x9f\xd7\xb3\x3a\x64\xc0\x44\x7e\x89\x5f\ \xfb\xd6\xa6\xc0\x60\x5d\xd6\x13\xf6\xcd\x94\x40\x22\xa2\xff\xa7\ \x2c\xa7\x01\xc0\x63\x69\xe2\x4e\x19\xcc\x87\x40\x50\x78\x07\x98\ \x0d\x09\xcb\xc0\x5b\x79\x61\x7d\xbc\xc0\x33\x40\x3c\x78\x1e\x4d\ \x88\xf4\x35\xc0\x62\xee\x0c\x38\xf1\xc4\xe8\xc0\x46\xd1\x53\xca\ \x0b\x08\xfb\x40\x50\x2c\x84\xd0\x5d\x55\x8c\x40\x36\xbd\xbd\x80\ \x5a\xad\x4a\x40\x53\xeb\xbd\x15\xf5\x07\xab\xc0\x64\x7c\xef\x60\ \x1c\x2f\x98\x40\x5a\x98\x3b\xdc\x37\xef\xe9\xc0\x67\x9f\x25\xaf\ \x3d\xbf\xd4\x40\x69\x6a\x0f\x8e\x89\x77\x9f\x40\x61\x88\x1f\xe5\ \x0f\x7e\xd1\x40\x5e\xdc\xfa\xde\xc3\x4f\x44\x40\x60\xa1\xe2\xe6\ \xb7\x5f\xeb\x40\x6b\xea\x34\x50\x71\xf2\x5e\x00\x00\x00\x10\x40\ \x38\x4c\xc8\xe4\xe9\x4a\xe6\xc0\x62\x97\x20\x1b\x90\x2c\x4f\x40\ \x3a\x05\x57\x22\x0c\x24\x7d\xc0\x58\xb0\x26\x1d\x5d\x86\x5d\xc0\ \x40\xc3\x2b\x63\x3b\xcf\x8c\xc0\x4e\x4e\xf2\x97\xc3\x66\xc7\x40\ \x50\x0a\x02\x49\xd6\x8c\x4d\xc0\x43\x9a\x76\xf9\x0d\x28\xdf\xc0\ \x3e\x83\xbb\x1e\x53\x10\x07\x40\x45\x35\x54\x41\x8c\xf4\x10\x40\ \x32\x53\x6f\xa7\x9a\x5e\xd5\x40\x4a\x8f\x9e\x53\x1a\xe6\x20\xc0\ \x44\x7e\x89\xd1\x4c\x49\xec\xc0\x60\x5d\xd6\x79\x12\xe1\x41\x40\ \x22\xa3\x00\xb2\xf0\x65\xf7\xc0\x63\x69\xe2\x56\x35\xbe\x3d\x40\ \x50\x78\x07\x69\xf1\x50\x4e\xc0\x5b\x79\x60\xff\xec\xcb\x67\x40\ \x3c\x78\x1e\xf5\x33\x9c\xb3\xc0\x62\xee\x0c\x21\xab\x29\xe4\xc0\ \x46\xd1\x53\xe5\x27\x99\x97\x40\x50\x2c\x86\x7c\x61\xad\xa6\x40\ \x36\xbd\xc1\x45\xf8\xa0\x3f\x40\x53\xeb\xbc\x23\xbf\xbf\x32\xc0\ \x64\x7c\xef\xb5\x95\x62\x2d\x40\x5a\x98\x3b\xe8\x6a\x6d\xa5\xc0\ \x67\x9f\x25\xb6\x13\xea\x8f\x40\x69\x6a\x0f\xa8\xf8\xea\x0c\x40\ \x61\x88\x20\x2b\xe3\xfb\xb4\x40\x5e\xdc\xfa\xfe\x05\x65\x16\x40\ \x60\xa1\xe2\xe5\xf6\x3c\x86\x40\x6b\xea\x34\x5a\xea\xb2\xfe\x00\ \x00\x00\x10\x40\x38\x4c\xc8\xd4\x84\xf3\x4d\xc0\x62\x97\x20\x57\ \x0f\x3b\xd7\x40\x3a\x05\x59\x8c\x8a\x5e\xce\xc0\x58\xb0\x26\x5d\ \xcd\x2f\x15\xc0\x40\xc3\x2b\x12\xda\xcc\x87\xc0\x4e\x4e\xf4\xb6\ \x3e\xa1\x52\x40\x50\x0a\x02\x38\xe4\x10\x8c\xc0\x43\x9a\x75\xd5\ \xe6\xa1\x5c\xc0\x3e\x83\xbe\xfd\x1d\x6c\x0f\x40\x45\x35\x56\x07\ \xd6\x3e\xb6\x40\x32\x53\x6d\x9e\xdc\x7b\x7c\x40\x4a\x8f\x9c\x56\ \x73\x8e\x7b\xc0\x44\x7e\x8a\x65\x9b\x9a\xc2\xc0\x60\x5d\xd6\xfd\ \x68\xf0\x6a\x40\x22\xa3\x02\x11\x65\xf2\x80\xc0\x63\x69\xe2\x60\ \xd2\xcd\x1f\x40\x50\x78\x07\x2d\xa2\x09\x53\xc0\x5b\x79\x60\x5b\ \x5c\xc5\x6c\x40\x3c\x78\x1f\xd0\x82\x80\xbc\xc0\x62\xee\x0c\x03\ \x39\x4a\xd4\xc0\x46\xd1\x54\x08\xbe\xbb\x9e\x40\x50\x2c\x88\xac\ \xa3\x4c\x7c\x40\x36\xbd\xc6\x35\xfc\x61\x64\x40\x53\xeb\xba\xe6\ \xb1\x05\x48\xc0\x64\x7c\xf0\x25\x7e\x80\x23\x40\x5a\x98\x3b\xf8\ \x62\xb1\x2e\xc0\x67\x9f\x25\xbf\x07\x67\xde\x40\x69\x6a\x0f\xcb\ \x95\x87\xec\x40\x61\x88\x20\x88\x9b\xc5\x2f\x40\x5e\xdc\xfb\x26\ \xf0\x4e\x91\x40\x60\xa1\xe2\xe4\xf9\x69\xcb\x40\x6b\xea\x34\x68\ \x9f\xdc\x0a\x00\x00\x00\x10\x40\x38\x4c\xc8\xcf\x45\x6d\x70\xc0\ \x62\x97\x20\x6a\x1b\x9c\x23\x40\x3a\x05\x5a\x52\xc4\x7b\x1c\xc0\ \x58\xb0\x26\x72\x72\x66\xea\xc0\x40\xc3\x2a\xf9\x10\xed\xb9\xc0\ \x4e\x4e\xf5\x64\x15\x69\xb0\x40\x50\x0a\x02\x33\x77\xa5\x56\xc0\ \x43\x9a\x75\x78\xa3\x77\x6b\xc0\x3e\x83\xc0\x3a\xa2\x9b\x18\x40\ \x45\x35\x56\x99\x6e\xfb\xd2\x40\x32\x53\x6c\xf7\xf3\x6f\x59\x40\ \x4a\x8f\x9b\xb3\x71\xd9\x7e\xc0\x44\x7e\x8a\x95\x22\x08\xc3\xc0\ \x60\x5d\xd7\x27\xd0\xff\x24\x40\x22\xa3\x02\x81\xb3\x6a\x1c\xc0\ \x63\x69\xe2\x64\x39\x77\x1e\x40\x50\x78\x07\x1a\x50\xf1\xd4\xc0\ \x5b\x79\x60\x26\xa7\x76\x2b\x40\x3c\x78\x20\x16\xc0\xae\xfd\xc0\ \x62\xee\x0b\xf9\x78\xf7\x9a\xc0\x46\xd1\x54\x14\x2c\xd4\x30\x40\ \x50\x2c\x89\x60\x2e\x92\x45\x40\x36\xbd\xc7\xcb\x13\x78\x86\x40\ \x53\xeb\xba\x81\x14\xb0\x4f\xc0\x64\x7c\xf0\x49\x5d\x6b\x81\x40\ \x5a\x98\x3b\xfd\x81\x19\xae\xc0\x67\x9f\x25\xc1\xe5\xe5\x65\x40\ \x69\x6a\x0f\xd6\xad\x9f\xef\x40\x61\x88\x20\xa6\x52\x94\x24\x40\ \x5e\xdc\xfb\x34\x0d\x4b\xd1\x40\x60\xa1\xe2\xe4\xa8\x63\x78\x40\ \x6b\xea\x34\x6d\x04\x78\x67\x00\x00\x00\x10\x40\x38\x4c\xc8\xc3\ \x53\xf0\xd7\xc0\x62\x97\x20\x95\x74\xbf\xc7\x40\x3a\x05\x5c\x16\ \x3e\x0f\x2d\xc0\x58\xb0\x26\xa1\x74\xe5\x62\xc0\x40\xc3\x2a\xbe\ \x48\x1a\xc9\xc0\x4e\x4e\xf6\xef\xf7\x35\xd6\x40\x50\x0a\x02\x27\ \x21\x30\x73\xc0\x43\x9a\x74\xa4\x51\xd1\x0d\xc0\x3e\x83\xc3\x0d\ \xc2\x0e\xf4\x40\x45\x35\x57\xe5\x09\x34\x5f\x40\x32\x53\x6b\x7b\ \xc7\x91\x61\x40\x4a\x8f\x9a\x40\x37\x7d\xc1\xc0\x44\x7e\x8b\x01\ \x5c\x12\x71\xc0\x60\x5d\xd7\x88\x63\x00\x6f\x40\x22\xa3\x03\x81\ \x71\x1e\xdd\xc0\x63\x69\xe2\x6b\xf8\x2e\x8c\x40\x50\x78\x06\xee\ \x57\xe8\x39\xc0\x5b\x79\x5f\xae\xab\x35\x22\x40\x3c\x78\x20\xb6\ \xa7\x72\x0b\xc0\x62\xee\x0b\xe3\x46\x4f\xd6\xc0\x46\xd1\x54\x2e\ \x40\x0a\x1b\x40\x50\x2c\x8a\xf9\x12\xa8\xf6\x40\x36\xbd\xcb\x65\ \xa5\xcc\xd1\x40\x53\xeb\xb9\x99\xaa\xcf\x03\xc0\x64\x7c\xf0\x9b\ \x11\xbc\x05\x40\x5a\x98\x3c\x09\x29\xdc\x73\xc0\x67\x9f\x25\xc8\ \x6e\xde\xfd\x40\x69\x6a\x0f\xef\xf2\x9d\x38\x40\x61\x88\x20\xe9\ \xfe\xa9\x62\x40\x5e\xdc\xfb\x51\xea\xa9\x9f\x40\x60\xa1\xe2\xe3\ \xef\xdb\xd6\x40\x6b\xea\x34\x77\x05\xb5\xb1\x00\x00\x00\x10\x40\ \x38\x4c\xc8\xc2\x67\xdd\x57\xc0\x62\x97\x20\x98\xcd\x94\x1a\x40\ \x3a\x05\x5c\x39\x1f\x5d\xdb\xc0\x58\xb0\x26\xa5\x16\x7d\x84\xc0\ \x40\xc3\x2a\xb9\xbc\xba\x60\xc0\x4e\x4e\xf7\x0e\x8c\x4a\xb1\x40\ \x50\x0a\x02\x26\x2d\x64\x0a\xc0\x43\x9a\x74\x93\xeb\xe8\x2d\xc0\ \x3e\x83\xc3\x45\x9f\x4d\x2f\x40\x45\x35\x57\xfe\xa7\x9e\xb3\x40\ \x32\x53\x6b\x5e\x68\x2f\x32\x40\x4a\x8f\x9a\x23\x89\xc3\x22\xc0\ \x44\x7e\x8b\x09\xb8\x5e\x6c\xc0\x60\x5d\xd7\x8f\xd8\xc8\x46\x40\ \x22\xa3\x03\x95\x32\xa9\x80\xc0\x63\x69\xe2\x6c\x91\x58\xc3\x40\ \x50\x78\x06\xea\xf2\x89\xaa\xc0\x5b\x79\x5f\xa5\x67\x05\xe0\x40\ \x3c\x78\x20\xc3\x00\xcb\xb0\xc0\x62\xee\x0b\xe1\x8f\x72\x2a\xc0\ \x46\xd1\x54\x30\x44\x61\xe5\x40\x50\x2c\x8b\x18\xa9\x44\x23\x40\ \x36\xbd\xcb\xac\xeb\xcc\x19\x40\x53\xeb\xb9\x87\xca\x0f\x26\xc0\ \x64\x7c\xf0\xa1\x61\xc8\xea\x40\x5a\x98\x3c\x0a\x10\x78\x9d\xc0\ \x67\x9f\x25\xc8\xf0\x21\x1c\x40\x69\x6a\x0f\xf1\xe6\x6c\xcd\x40\ \x61\x88\x20\xef\x39\x09\x1b\x40\x5e\xdc\xfb\x54\x39\x4e\x8a\x40\ \x60\xa1\xe2\xe3\xe1\x9a\x53\x40\x6b\xea\x34\x77\xcb\x94\x20\x00\ \x00\x00\x10\x40\x38\x4c\xc8\xc1\x32\xe4\xf9\xc0\x62\x97\x20\x9d\ \x2e\xf8\xde\x40\x3a\x05\x5c\x66\xc6\xea\x0b\xc0\x58\xb0\x26\xa9\ \xd7\x32\x7d\xc0\x40\xc3\x2a\xb3\xc9\xdf\x14\xc0\x4e\x4e\xf7\x36\ \x93\x96\x7f\x40\x50\x0a\x02\x24\xee\x51\x65\xc0\x43\x9a\x74\x7e\ \x75\x91\x91\xc0\x3e\x83\xc3\x8e\xbe\x00\x43\x40\x45\x35\x58\x20\ \x2f\xea\x4a\x40\x32\x53\x6b\x37\xf6\x02\x6f\x40\x4a\x8f\x99\xfe\ \x00\x4b\x9f\xc0\x44\x7e\x8b\x14\xa9\xbf\x4b\xc0\x60\x5d\xd7\x99\ \x9c\x71\xc0\x40\x22\xa3\x03\xaf\x0e\x58\x32\xc0\x63\x69\xe2\x6d\ \x59\xd1\xf7\x40\x50\x78\x06\xe6\x80\xb1\x85\xc0\x5b\x79\x5f\x99\ \x46\x45\x3d\x40\x3c\x78\x20\xd3\x2a\x6b\xb5\xc0\x62\xee\x0b\xdf\ \x51\x0d\x21\xc0\x46\xd1\x54\x32\xe8\x5b\x66\x40\x50\x2c\x8b\x42\ \x01\xb4\x84\x40\x36\xbd\xcc\x0a\x35\xc8\xee\x40\x53\xeb\xb9\x70\ \x63\x9a\x1b\xc0\x64\x7c\xf0\xa9\xa5\x0c\xbe\x40\x5a\x98\x3c\x0b\ \x3e\x51\xa0\xc0\x67\x9f\x25\xc9\x99\x51\x18\x40\x69\x6a\x0f\xf4\ \x74\xa1\xea\x40\x61\x88\x20\xf6\x10\xd1\x9d\x40\x5e\xdc\xfb\x57\ \x3e\x65\x10\x40\x60\xa1\xe2\xe3\xce\xf1\x84\x40\x6b\xea\x34\x78\ \xce\x91\x2c\x00\x00\x00\x10\x40\x38\x4c\xc8\xc1\x32\xe4\xf9\xc0\ \x62\x97\x20\x9d\x2e\xf8\xde\x40\x3a\x05\x5c\x66\xc6\xea\x0b\xc0\ \x58\xb0\x26\xa9\xd7\x32\x7d\xc0\x40\xc3\x2a\xb3\xc9\xdf\x14\xc0\ \x4e\x4e\xf7\x36\x93\x96\x7f\x40\x50\x0a\x02\x24\xee\x51\x65\xc0\ \x43\x9a\x74\x7e\x75\x91\x91\xc0\x3e\x83\xc3\x8e\xbe\x00\x43\x40\ \x45\x35\x58\x20\x2f\xea\x4a\x40\x32\x53\x6b\x37\xf6\x02\x6f\x40\ \x4a\x8f\x99\xfe\x00\x4b\x9f\xc0\x44\x7e\x8b\x14\xa9\xbf\x4b\xc0\ \x60\x5d\xd7\x99\x9c\x71\xc0\x40\x22\xa3\x03\xaf\x0e\x58\x32\xc0\ \x63\x69\xe2\x6d\x59\xd1\xf7\x40\x50\x78\x06\xe6\x80\xb1\x85\xc0\ \x5b\x79\x5f\x99\x46\x45\x3d\x40\x3c\x78\x20\xd3\x2a\x6b\xb5\xc0\ \x62\xee\x0b\xdf\x51\x0d\x21\xc0\x46\xd1\x54\x32\xe8\x5b\x66\x40\ \x50\x2c\x8b\x42\x01\xb4\x84\x40\x36\xbd\xcc\x0a\x35\xc8\xee\x40\ \x53\xeb\xb9\x70\x63\x9a\x1b\xc0\x64\x7c\xf0\xa9\xa5\x0c\xbe\x40\ \x5a\x98\x3c\x0b\x3e\x51\xa0\xc0\x67\x9f\x25\xc9\x99\x51\x18\x40\ \x69\x6a\x0f\xf4\x74\xa1\xea\x40\x61\x88\x20\xf6\x10\xd1\x9d\x40\ \x5e\xdc\xfb\x57\x3e\x65\x10\x40\x60\xa1\xe2\xe3\xce\xf1\x84\x40\ \x6b\xea\x34\x78\xce\x91\x2c\x00\x00\x00\x10\x40\x38\x4c\xc8\xbf\ \xcf\xfc\x3c\xc0\x62\x97\x20\xa2\x37\x18\xbc\x40\x3a\x05\x5c\x9b\ \x39\x94\x7a\xc0\x58\xb0\x26\xaf\x4c\xea\x97\xc0\x40\xc3\x2a\xac\ \xf4\x31\x63\xc0\x4e\x4e\xf7\x64\x8f\x9a\x25\x40\x50\x0a\x02\x23\ \x7f\xd0\x06\xc0\x43\x9a\x74\x65\xcd\xff\xd0\xc0\x3e\x83\xc3\xe2\ \xbe\x25\x12\x40\x45\x35\x58\x46\xb5\xb3\x85\x40\x32\x53\x6b\x0b\ \xcb\x0d\x92\x40\x4a\x8f\x99\xd2\xe0\xed\x42\xc0\x44\x7e\x8b\x21\ \x3b\xf0\xf6\xc0\x60\x5d\xd7\xa4\xd4\x07\xaf\x40\x22\xa3\x03\xcc\ \xc2\xf6\xcf\xc0\x63\x69\xe2\x6e\x40\x1f\x33\x40\x50\x78\x06\xe1\ \x65\x9e\x9c\xc0\x5b\x79\x5f\x8b\x57\xc0\xf2\x40\x3c\x78\x20\xe5\ \xbb\x6d\x77\xc0\x62\xee\x0b\xdc\xbd\x3a\x54\xc0\x46\xd1\x54\x35\ \xf1\x1f\xf9\x40\x50\x2c\x8b\x71\x81\x27\x09\x40\x36\xbd\xcc\x75\ \x61\x96\xaf\x40\x53\xeb\xb9\x55\x81\xb9\x30\xc0\x64\x7c\xf0\xb3\ \x23\x22\x31\x40\x5a\x98\x3c\x0c\x99\x17\x47\xc0\x67\x9f\x25\xca\ \x5b\xaf\x44\x40\x69\x6a\x0f\xf7\x64\x34\xea\x40\x61\x88\x20\xfd\ \xed\x47\xed\x40\x5e\xdc\xfb\x5a\xb6\x86\x41\x40\x60\xa1\xe2\xe3\ \xb9\x81\xe1\x40\x6b\xea\x34\x79\xf8\x18\x55\x00\x00\x00\x10\x40\ \x38\x4c\xc8\xc0\x4e\x4f\x3d\xc0\x62\x97\x20\xa0\x6c\x9c\x10\x40\ \x3a\x05\x5c\x88\x8e\x66\x1c\xc0\x58\xb0\x26\xad\x5b\x68\x24\xc0\ \x40\xc3\x2a\xaf\x63\x02\x46\xc0\x4e\x4e\xf7\x54\x31\x68\xc3\x40\ \x50\x0a\x02\x24\x02\x43\xaf\xc0\x43\x9a\x74\x6e\x94\x89\x25\xc0\ \x3e\x83\xc3\xc4\xd7\xce\x09\x40\x45\x35\x58\x38\xff\x69\xa6\x40\ \x32\x53\x6b\x1b\x83\xc1\xd0\x40\x4a\x8f\x99\xe2\x3a\x5a\x44\xc0\ \x44\x7e\x8b\x1c\xc2\x70\xf4\xc0\x60\x5d\xd7\xa0\xd5\xe7\x48\x40\ \x22\xa3\x03\xc2\x30\x23\x5c\xc0\x63\x69\xe2\x6d\xee\x25\xab\x40\ \x50\x78\x06\xe3\x36\xdb\x68\xc0\x5b\x79\x5f\x90\x4d\x36\x90\x40\ \x3c\x78\x20\xdf\x1f\xa6\xa9\xc0\x62\xee\x0b\xdd\xa8\x15\x8e\xc0\ \x46\xd1\x54\x34\xdc\x9c\x16\x40\x50\x2c\x8b\x60\x99\x08\x6c\x40\ \x36\xbd\xcc\x4f\x3b\xe3\xde\x40\x53\xeb\xb9\x5f\x13\x4e\xf5\xc0\ \x64\x7c\xf0\xaf\xc2\x25\x0e\x40\x5a\x98\x3c\x0c\x1d\xa8\x48\xc0\ \x67\x9f\x25\xca\x16\x7f\xd6\x40\x69\x6a\x0f\xf6\x58\xaf\x08\x40\ \x61\x88\x20\xfb\x20\xf3\x53\x40\x5e\xdc\xfb\x59\x7a\x65\xa7\x40\ \x60\xa1\xe2\xe3\xc1\x23\x31\x40\x6b\xea\x34\x79\x8e\x30\xd7\x00\ \x00\x00\x10\x40\x38\x4c\xc8\xc0\x24\xc9\x42\xc0\x62\x97\x20\xa1\ \x03\x51\x04\x40\x3a\x05\x5c\x8e\xb1\x4a\x18\xc0\x58\xb0\x26\xad\ \xfe\xf0\x2a\xc0\x40\xc3\x2a\xae\x96\x4c\x84\xc0\x4e\x4e\xf7\x59\ \x92\xb9\xe9\x40\x50\x0a\x02\x23\xd7\x61\x93\xc0\x43\x9a\x74\x6b\ \xb2\x17\xa4\xc0\x3e\x83\xc3\xce\xab\xca\x54\x40\x45\x35\x58\x3d\ \x81\x3f\x26\x40\x32\x53\x6b\x16\x58\xd6\x2c\x40\x4a\x8f\x99\xdd\ \x2e\xc0\x07\xc0\x44\x7e\x8b\x1e\x3a\xf7\xb4\xc0\x60\x5d\xd7\xa2\ \x25\xe0\x7c\x40\x22\xa3\x03\xc5\xa9\xdf\x80\xc0\x63\x69\xe2\x6e\ \x09\x17\x9f\x40\x50\x78\x06\xe2\x9d\xee\x8d\xc0\x5b\x79\x5f\x8e\ \xab\xef\xf2\x40\x3c\x78\x20\xe1\x4b\xbe\x79\xc0\x62\xee\x0b\xdd\ \x5a\xe2\xd6\xc0\x46\xd1\x54\x35\x37\x7f\x10\x40\x50\x2c\x8b\x66\ \x27\xb0\x54\x40\x36\xbd\xcc\x5b\xc5\xe0\xc4\x40\x53\xeb\xb9\x5b\ \xee\x21\x36\xc0\x64\x7c\xf0\xb0\xde\x77\x49\x40\x5a\x98\x3c\x0c\ \x46\x3a\xd9\xc0\x67\x9f\x25\xca\x2d\x3d\x92\x40\x69\x6a\x0f\xf6\ \xb0\x9e\x4b\x40\x61\x88\x20\xfc\x0c\x68\x9b\x40\x5e\xdc\xfb\x59\ \xe2\x4e\xeb\x40\x60\xa1\xe2\xe3\xbe\xa1\x23\x40\x6b\xea\x34\x79\ \xb1\x00\x66\x00\x00\x00\x10\x40\x38\x4c\xc8\xbf\xee\x70\x14\xc0\ \x62\x97\x20\xa1\xc8\x92\x26\x40\x3a\x05\x5c\x96\xb9\x6c\xbd\xc0\ \x58\xb0\x26\xae\xd4\xfb\x26\xc0\x40\xc3\x2a\xad\x8a\x57\xfb\xc0\ \x4e\x4e\xf7\x60\x9d\x78\x70\x40\x50\x0a\x02\x23\x9f\x41\xd1\xc0\ \x43\x9a\x74\x67\xeb\x91\x0b\xc0\x3e\x83\xc3\xdb\x88\xea\x29\x40\ \x45\x35\x58\x43\x67\x7a\x47\x40\x32\x53\x6b\x0f\x95\x49\xb5\x40\ \x4a\x8f\x99\xd6\x94\x32\x19\xc0\x44\x7e\x8b\x20\x27\xcb\x9d\xc0\ \x60\x5d\xd7\xa3\xdd\xa0\x33\x40\x22\xa3\x03\xca\x36\x6d\xdb\xc0\ \x63\x69\xe2\x6e\x2c\x5c\x37\x40\x50\x78\x06\xe1\xd5\xc5\xef\xc0\ \x5b\x79\x5f\x8c\x89\xc7\x6e\x40\x3c\x78\x20\xe4\x23\x98\x6b\xc0\ \x62\xee\x0b\xdc\xf5\xd8\x14\xc0\x46\xd1\x54\x35\xae\x76\x39\x40\ \x50\x2c\x8b\x6d\x6d\xc6\x31\x40\x36\xbd\xcc\x6c\x2f\x5e\xd3\x40\ \x53\xeb\xb9\x57\xd0\x3e\xef\xc0\x64\x7c\xf0\xb2\x52\x9c\x24\x40\ \x5a\x98\x3c\x0c\x7b\x55\xad\xc0\x67\x9f\x25\xca\x4b\x01\x8e\x40\ \x69\x6a\x0f\xf7\x23\xb6\xf6\x40\x61\x88\x20\xfd\x40\x98\x5e\x40\ \x5e\xdc\xfb\x5a\x6a\x50\xcc\x40\x60\xa1\xe2\xe3\xbb\x58\xc4\x40\ \x6b\xea\x34\x79\xde\x90\x91\x00\x00\x00\x10\x40\x38\x4c\xc8\xbf\ \xdd\x05\x9e\xc0\x62\x97\x20\xa2\x07\xc7\xe2\x40\x3a\x05\x5c\x99\ \x4c\x59\xcf\xc0\x58\xb0\x26\xaf\x19\x92\x90\xc0\x40\xc3\x2a\xad\ \x34\x79\x79\xc0\x4e\x4e\xf7\x62\xdf\x2a\xa1\x40\x50\x0a\x02\x23\ \x8d\x45\xef\xc0\x43\x9a\x74\x66\xb5\xd7\xe9\xc0\x3e\x83\xc3\xdf\ \xa8\x34\xb2\x40\x45\x35\x58\x45\x4b\x6f\x42\x40\x32\x53\x6b\x0d\ \x6a\x68\xe4\x40\x4a\x8f\x99\xd4\x76\x73\x36\xc0\x44\x7e\x8b\x20\ \xc5\xb9\x45\xc0\x60\x5d\xd7\xa4\x6a\x8b\x7a\x40\x22\xa3\x03\xcb\ \xab\x9d\x74\xc0\x63\x69\xe2\x6e\x37\xa9\x75\x40\x50\x78\x06\xe1\ \x95\xa1\xdb\xc0\x5b\x79\x5f\x8b\xda\xc3\x2a\x40\x3c\x78\x20\xe5\ \x0c\xd5\xed\xc0\x62\xee\x0b\xdc\xd5\x77\x11\xc0\x46\xd1\x54\x35\ \xd4\x96\x1e\x40\x50\x2c\x8b\x6f\xc2\x7c\x13\x40\x36\xbd\xcc\x71\ \x71\xc0\xb2\x40\x53\xeb\xb9\x56\x7e\x86\x5a\xc0\x64\x7c\xf0\xb2\ \xc9\xdd\x72\x40\x5a\x98\x3c\x0c\x8c\x5a\x33\xc0\x67\x9f\x25\xca\ \x54\x8b\x69\x40\x69\x6a\x0f\xf7\x48\x99\x09\x40\x61\x88\x20\xfd\ \xa3\x5a\xc4\x40\x5e\xdc\xfb\x5a\x95\xe6\x4c\x40\x60\xa1\xe2\xe3\ \xba\x4b\x77\x40\x6b\xea\x34\x79\xed\x2a\x63\x00\x00\x00\x10\x40\ \x38\x4c\xc8\xbf\xa9\x3c\xf7\xc0\x62\x97\x20\xa2\xc3\xba\x2f\x40\ \x3a\x05\x5c\xa0\xf4\xb7\xf1\xc0\x58\xb0\x26\xaf\xe5\x96\xe4\xc0\ \x40\xc3\x2a\xac\x34\xe6\xf4\xc0\x4e\x4e\xf7\x69\x95\xca\xcd\x40\ \x50\x0a\x02\x23\x57\xdb\x46\xc0\x43\x9a\x74\x63\x1c\x4c\x49\xc0\ \x3e\x83\xc3\xeb\xeb\x58\x7a\x40\x45\x35\x58\x4a\xeb\x0b\xde\x40\ \x32\x53\x6b\x06\xf7\xe1\xda\x40\x4a\x8f\x99\xce\x2a\xed\x2d\xc0\ \x44\x7e\x8b\x22\x9b\x7b\xcb\xc0\x60\x5d\xd7\xa6\x0d\xc7\x6c\x40\ \x22\xa3\x03\xd0\x01\xd2\x5f\xc0\x63\x69\xe2\x6e\x59\x48\xae\x40\ \x50\x78\x06\xe0\xd6\xe9\xc6\xc0\x5b\x79\x5f\x89\xd1\xfd\x18\x40\ \x3c\x78\x20\xe7\xc2\xd5\xed\xc0\x62\xee\x0b\xdc\x75\x1f\x54\xc0\ \x46\xd1\x54\x36\x45\xdf\xf2\x40\x50\x2c\x8b\x76\xb1\x88\xd7\x40\ \x36\xbd\xcc\x81\x16\xe5\x42\x40\x53\xeb\xb9\x52\x91\xe6\x77\xc0\ \x64\x7c\xf0\xb4\x2c\x9e\xd1\x40\x5a\x98\x3c\x0c\xbe\x99\x62\xc0\ \x67\x9f\x25\xca\x70\xda\x68\x40\x69\x6a\x0f\xf7\xb6\x0f\x69\x40\ \x61\x88\x20\xfe\xc9\x33\xea\x40\x5e\xdc\xfb\x5b\x17\x3b\x26\x40\ \x60\xa1\xe2\xe3\xb7\x2f\x1f\x40\x6b\xea\x34\x7a\x18\x57\x7f\x00\ \x00\x00\x10\x40\x39\x3a\xfb\x80\x37\xf3\x20\xc0\x61\xfc\xcb\xa3\ \xcd\x26\xb3\x40\x36\xe1\xc0\x3b\x54\x6a\xc7\xc0\x57\x7d\x1f\x83\ \x86\xf3\x1c\xc0\x42\x8a\xc6\x53\xae\xe3\x90\xc0\x4c\x3d\xf4\x90\ \xee\x6c\x3f\x40\x4e\x2d\x2a\x66\xb7\xf4\x4a\xc0\x40\xfe\x98\xb5\ \x59\x0c\x29\xc0\x41\x9c\x26\x3c\x27\x7a\x60\x40\x47\x49\xd1\x47\ \xd2\xac\x49\x40\x2a\xff\x46\x2d\x2a\xf5\xdd\x40\x4c\xe9\x81\x90\ \xd0\x9c\x7c\xc0\x43\xec\x12\xf4\xe3\xc3\x79\xc0\x5f\xc9\x03\x0f\ \xff\x7b\x76\x40\x21\x4c\x2e\x53\x8d\xf5\xb6\xc0\x63\x5e\x70\x2e\ \xf1\x12\x4a\x40\x60\x35\xaf\x9d\x23\xb9\xb3\xc0\x47\xf5\xbd\xee\ \x88\x2b\x80\x40\x5f\x27\xde\x05\x0a\xe0\xcd\xc0\x59\xe5\xec\x76\ \x6e\x20\x9e\xc0\x49\x4b\x2f\xeb\x9c\x1a\x49\x40\x51\x2b\xee\x40\ \x71\xae\x98\x40\x31\x9e\x54\x8b\xa5\x0f\x9e\x40\x55\x1b\xb6\xcb\ \xa1\xcb\x36\xc0\x65\x42\x19\x74\x05\x9a\xf9\x40\x5a\xb0\xf1\x49\ \x6b\xdf\x29\xc0\x67\xab\x60\x4e\xa0\x19\x85\x40\x69\xa0\x71\xdc\ \x2e\x28\xe1\x40\x61\x1f\xc5\xf2\x50\xd7\x8a\x40\x5e\xb5\x77\xa5\ \x7e\x2d\xd8\x40\x60\xa2\xa4\x00\xc9\xca\x1b\x40\x6b\xdc\x49\x66\ \x6f\x08\x2d\x00\x00\x00\x10\x40\x39\x6d\xdd\x13\x57\xa1\xd5\xc0\ \x61\x88\xae\xf7\xb1\x07\xb9\x40\x3d\xcf\xf4\x8d\x6a\x17\x82\xc0\ \x56\x9d\xa9\x7a\xdd\x4a\xee\xc0\x3f\xd1\x0f\xe0\xc8\xca\x1b\xc0\ \x4b\xe5\xb8\x99\x8a\x88\x81\x40\x50\x1e\xc0\x45\x2f\x34\x10\xc0\ \x3c\xd5\xaf\x28\x25\x54\xfa\xc0\x41\x59\xfd\x10\xd6\x49\xbe\x40\ \x47\x9e\x2c\x2b\x96\x3e\x8e\x40\x2a\xe2\xd5\x8c\x54\xd6\x15\x40\ \x4e\x5c\xbb\xef\xb1\x92\x66\xc0\x43\xbf\xfb\xa6\x99\x4b\x21\xc0\ \x5f\x85\x8a\xa8\x9e\x7f\x25\x40\x20\xe3\xcd\x5f\xf2\x68\xe2\xc0\ \x63\x5a\x9f\x77\xe2\x62\x79\x40\x60\xd6\xe3\xac\xcc\x5f\x90\xc0\ \x34\xa5\x13\xa5\x48\xae\xc2\x40\x64\xe3\x80\x6b\x21\x27\x96\xc0\ \x50\x8d\x0b\x23\xa9\xc3\xe4\xc0\x49\x89\xcb\x5b\xbe\x67\xd3\x40\ \x51\x26\xf3\x40\xd2\x0d\xc1\x40\x30\x53\x3d\xec\x2b\xcb\xe3\x40\ \x55\xdf\xb6\x87\x83\x72\xc9\xc0\x65\x50\x90\x7a\x79\xec\x90\x40\ \x5a\xb3\x5d\xfd\x75\x1b\xbb\xc0\x67\xac\x23\x85\x4c\x3e\xc1\x40\ \x69\xa4\x50\xfd\xc1\x1a\xbe\x40\x61\x15\x08\x2c\x04\x80\x35\x40\ \x5e\xb2\x16\xd8\x69\xeb\x99\x40\x60\xa2\xb0\x72\x32\x30\x48\x40\ \x6b\xdb\x00\x4c\xb4\x72\x34\x00\x00\x00\x10\x40\x39\x79\xe6\xd8\ \x96\x75\x3a\xc0\x61\xc0\x16\x90\x87\x0e\xed\x40\x38\x8f\xec\xd9\ \xc7\x51\xb7\xc0\x57\x00\xb8\x99\x9b\x0c\x77\xc0\x42\x03\xf3\x87\ \x9c\x0b\x95\xc0\x4b\xc8\x06\x2f\x17\xcb\x6f\x40\x4e\x81\x5b\x7b\ \x07\x5f\xac\xc0\x3f\x6b\x1b\x49\x9f\xef\xa8\xc0\x41\xf5\x1a\xbf\ \x81\x76\xdc\x40\x47\xc1\xb0\x33\x3e\x15\x87\x40\x29\x35\xe9\x42\ \xe0\x6f\x26\x40\x4d\xcb\x37\x6d\xa6\xc4\xbd\xc0\x43\xc2\xd2\x31\ \x5b\xf1\xae\xc0\x5f\x8b\xf9\x65\x4b\xb3\xb9\x40\x20\xf2\x38\xea\ \x61\xb5\x68\xc0\x63\x5b\x25\xb1\x29\x73\x44\x40\x60\x74\xb0\xf1\ \xaf\x14\x87\xc0\x3c\x2b\x5b\x9f\xd5\xcc\x3a\x40\x5f\xd1\xff\x1a\ \xb3\xb4\x69\xc0\x54\xf9\x9f\x72\x33\xf9\x81\xc0\x49\xd3\xfa\x57\ \xad\xf2\x84\x40\x51\x56\xe6\x30\xad\x36\xf7\x40\x30\x45\x7a\x8e\ \xd7\x55\xf9\x40\x55\x90\xcf\xcc\x04\x2a\x2d\xc0\x65\x6a\x17\x30\ \x58\x3c\xd3\x40\x5a\xb7\x3e\x31\xfb\xc0\xbc\xc0\x67\xad\x5a\x2e\ \xcc\x97\xbb\x40\x69\xaa\xd2\x12\x76\xcf\xc6\x40\x61\x08\x27\xfd\ \xad\x8d\xa9\x40\x5e\xad\xed\x6b\x24\xb9\x5c\x40\x60\xa2\xbe\x9a\ \x9d\xff\x01\x40\x6b\xd9\x5b\x1b\x78\x99\x99\x00\x00\x00\x10\x40\ \x3a\x1c\xba\xdc\xfa\x1a\x5d\xc0\x60\xf5\xc8\x41\xf4\x13\xe6\x40\ \x41\xfa\x03\xbb\xf4\x1d\x4a\xc0\x55\xaa\x26\xe9\xec\x4c\xf0\xc0\ \x3b\x21\x4c\xc6\x54\x3f\x5c\xc0\x4b\x5b\x50\x0c\x7c\x8f\x98\x40\ \x50\xf9\x7f\xcb\x19\x0b\xae\xc0\x37\x93\x4b\x4f\x3b\xf3\x58\xc0\ \x41\x41\x68\xf8\x0c\x13\x54\x40\x48\x0c\x99\x85\x2c\x7f\x15\x40\ \x2a\x01\x64\x6f\x7e\xaa\x70\x40\x4f\xd5\xa4\x26\x6b\xe0\x61\xc0\ \x43\x74\x8b\x1b\xb1\x98\xf2\xc0\x5f\x1b\xe4\x8e\x02\x7c\x6d\x40\ \x20\x42\xe5\x35\xba\xbe\x4c\xc0\x63\x54\x64\xe8\xa8\x03\x5e\x40\ \x61\x53\x48\x12\x1c\xc4\xf0\xc0\x38\x89\xd7\xe7\xcb\xc4\x43\x40\ \x65\x76\x6e\x3f\xaf\x20\x22\xc0\x51\x65\xa7\xda\xaa\x26\x75\xc0\ \x49\xe6\x46\x82\xd0\x24\xb9\x40\x51\x2f\x67\xdc\xf2\x10\xf5\x40\ \x2d\x70\x6e\xe1\xf3\xcb\xfa\x40\x56\xa2\x91\x0e\xe0\x3f\x9d\xc0\ \x65\x68\x72\x72\x08\xfb\x25\x40\x5a\xb7\x12\xd7\xa9\xc0\x26\xc0\ \x67\xad\x49\xf8\x95\x22\x31\x40\x69\xaa\x71\xed\xc5\x2f\x89\x40\ \x60\xfd\xd6\x05\x90\x17\x3d\x40\x5e\xab\x02\x86\x36\xeb\xc5\x40\ \x60\xa2\xc7\x56\x35\x46\xe9\x40\x6b\xd8\x35\x4f\xe4\xc4\x52\x00\ \x00\x00\x10\x40\x3a\x22\xa0\xc0\xc8\x8c\x68\xc0\x61\x7a\xe1\x71\ \x57\xe2\xd0\x40\x37\x88\x57\x2b\xb4\x27\x65\xc0\x56\x7a\x19\x92\ \x2d\x24\x6c\xc0\x42\xaa\x2f\xed\x9b\x21\x34\xc0\x4a\xf4\xa5\x85\ \xef\xfb\x8d\x40\x4d\xc3\xc6\xac\x45\x1a\x79\xc0\x3d\x0b\xa3\xc1\ \xb3\x70\xbf\xc0\x42\xfd\x76\x03\x11\x38\x1a\x40\x48\x95\x81\x53\ \xec\x54\xe6\x40\x24\xe6\xbc\x4c\xf9\xb4\xf7\x40\x4e\xcc\x4f\xe2\ \x80\x6a\x4e\xc0\x43\x7b\x0d\x6e\x7d\x0a\xc0\xc0\x5f\x26\x9b\xe0\ \x90\x2d\x70\x40\x20\x57\xdc\x86\xe0\xd3\xec\xc0\x63\x55\x29\x47\ \x39\xb3\x08\x40\x60\x47\xa0\x6e\xe2\x7b\xe5\xc0\x3d\x8e\x03\x79\ \xb3\xc5\xd8\x40\x59\xf4\xd9\x6e\xa3\x7d\xca\xc0\x53\xb4\xae\x8b\ \xb8\xe6\x2d\xc0\x4a\xf0\xb2\x63\x73\x25\x8f\x40\x51\xb9\x89\xae\ \x4e\xeb\xcd\x40\x2b\xd9\x2c\xa9\xd0\xb1\x70\x40\x56\x13\x03\x84\ \xe7\x17\x50\xc0\x65\xbe\x60\xdc\xb9\x87\x4b\x40\x5a\xc4\x9a\x9e\ \x26\x0d\xb2\xc0\x67\xb0\xd3\x88\x9b\xee\x09\x40\x69\xbf\x4a\x43\ \x04\x51\xc2\x40\x60\xd2\x70\x29\x96\x40\xc4\x40\x5e\x9e\x5d\xed\ \x9c\x03\x41\x40\x60\xa2\xe4\x5f\xbf\xef\x51\x40\x6b\xd2\xd4\x01\ \xf5\xda\x8f\x00\x00\x00\x10\x40\x39\x93\x07\x18\x7c\x00\x57\xc0\ \x61\xed\x38\x48\x04\xf6\x05\x40\x39\xce\xd4\x3d\x16\x4f\xe1\xc0\ \x57\x5a\x79\x80\xd1\xee\x90\xc0\x41\x5a\xb0\x5b\xd9\x84\xa7\xc0\ \x4c\x6b\x4b\xa6\xc5\x05\x67\x40\x4f\x31\x11\x79\x69\xca\xc4\xc0\ \x40\x72\xd8\x87\x3f\x4a\xdb\xc0\x41\x30\x33\x06\x0e\xbd\x6d\x40\ \x47\x1e\x92\xf6\x5f\x87\x9d\x40\x2c\x56\xb7\x92\x4c\x0f\x54\x40\ \x4d\x1a\xcc\x86\x22\xf3\x62\xc0\x43\xed\x68\x86\x6d\xf1\xf7\xc0\ \x5f\xd7\x21\x49\x55\x4f\x8d\x40\x21\x78\xc7\xca\xdd\xae\x33\xc0\ \x63\x60\x08\x68\x37\x94\x7d\x40\x55\x61\x16\x46\xec\xb7\xbc\xc0\ \x58\xed\xdd\x9f\xdd\x31\xf6\x40\x4d\x34\xd5\x5d\xce\x73\x18\xc0\ \x62\x93\x74\x7f\x87\x8c\xe0\xc0\x49\x09\x16\x63\x43\xbe\xc4\x40\ \x51\x07\x88\xc1\x11\x6b\x6e\x40\x31\xe4\xaf\x64\x08\xd2\xab\x40\ \x55\x38\x17\x72\x80\xb5\xac\xc0\x65\x2c\x52\x57\x7f\x38\xd6\x40\ \x5a\xad\x44\x85\x31\xfe\xd5\xc0\x67\xaa\x28\xdf\x87\x91\xd0\x40\ \x69\x9a\x80\x20\x4d\x49\x84\x40\x61\x2c\x4a\x92\x0c\x64\x0a\x40\ \x5e\xba\x92\xb8\xd5\x32\x10\x40\x60\xa2\x8e\x79\x47\xf5\xf0\x40\ \x6b\xde\x52\x7b\xcd\xff\x76\x00\x00\x00\x10\x40\x39\xa0\x87\x98\ \xb8\xe0\xec\xc0\x62\x2e\x9b\xf4\x0c\x9a\x1f\x40\x38\x3b\x99\x1e\ \x7f\x21\x57\xc0\x57\xde\x76\x78\x0a\x75\x02\xc0\x41\xdb\xc9\xce\ \x7f\xdb\x4c\xc0\x4c\xfd\x56\x17\x6b\xc4\x02\x40\x4e\xdd\x63\x67\ \xe8\x83\x36\xc0\x41\xc3\x56\x92\x55\x6f\xcc\xc0\x40\xe7\x7e\x05\ \xfc\x43\x82\x40\x46\x8a\x57\x00\x41\xd6\xd1\x40\x2d\xd4\x62\x54\ \xe0\x04\x59\x40\x4c\x27\x56\xc2\xcd\x8b\x08\xc0\x42\x5a\xf0\x4d\ \x5a\xcb\xe6\xc0\x60\x15\xda\x3c\x46\xaf\x80\x40\x2e\xe6\x21\xc4\ \x8c\x1a\x04\xc0\x62\x99\x50\xe9\xf4\x73\xa0\x40\x50\x8a\xee\x4b\ \xfe\x05\x2c\xc0\x5a\x86\x37\xad\x7c\x15\x19\x40\x3e\x0c\x8f\x47\ \x89\x42\x31\xc0\x62\x98\x5b\xa9\x88\xc3\x3a\xc0\x48\x95\x4f\x39\ \x7f\x7d\xf0\x40\x50\xcc\x9d\xf9\xdf\xe9\xd6\x40\x33\x0b\xd4\x0c\ \x5e\xaf\x8e\x40\x54\xba\x84\x35\x41\xd8\x1e\xc0\x65\x06\xae\x6d\ \x56\x5a\x3b\x40\x5a\xa7\x7d\x7e\x97\xc5\xb4\xc0\x67\xa7\xfe\xa3\ \xda\x60\x69\x40\x69\x90\x32\x32\xe0\xf7\x43\x40\x61\x3b\xaa\x06\ \x78\xb7\xc1\x40\x5e\xc0\x47\x72\x5e\x23\xb6\x40\x60\xa2\x75\x46\ \x84\x56\xc3\x40\x6b\xe0\x78\xd5\xcc\x8c\x07\ \x00\x00\x05\x1c\ \xff\ \xff\xff\xff\x00\x00\x00\x05\x00\x00\x00\x10\x00\x00\x00\x00\x00\ \x00\x00\x00\xc0\x62\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\xc0\x59\x00\x00\x00\x00\x00\x00\xc0\x49\x00\x00\x00\ \x00\x00\x00\xc0\x49\x00\x00\x00\x00\x00\x00\x40\x49\x00\x00\x00\ \x00\x00\x00\xc0\x49\x00\x00\x00\x00\x00\x00\xc0\x39\x00\x00\x00\ \x00\x00\x00\x40\x49\x00\x00\x00\x00\x00\x00\x40\x39\x00\x00\x00\ \x00\x00\x00\x40\x49\x00\x00\x00\x00\x00\x00\xc0\x59\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x5f\x40\x00\x00\ \x00\x00\x00\x40\x49\x00\x00\x00\x00\x00\x00\x40\x59\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x5f\x40\x00\x00\ \x00\x00\x00\x40\x49\x00\x00\x00\x00\x00\x00\xc0\x41\x80\x00\x00\ \x00\x00\x00\x40\x52\xc0\x00\x00\x00\x00\x00\x40\x41\x80\x00\x00\ \x00\x00\x00\x40\x52\xc0\x00\x00\x00\x00\x00\xc0\x39\x00\x00\x00\ \x00\x00\x00\x40\x69\x00\x00\x00\x00\x00\x00\xc0\x3e\x00\x00\x00\ \x00\x00\x00\x40\x72\xc0\x00\x00\x00\x00\x00\x40\x39\x00\x00\x00\ \x00\x00\x00\x40\x69\x00\x00\x00\x00\x00\x00\x40\x3e\x00\x00\x00\ \x00\x00\x00\x40\x72\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x10\xc0\ \x3c\x89\x78\xef\x64\x41\xf9\xc0\x66\xd9\xe8\x90\xe1\x7d\x15\xc0\ \x31\xe3\x24\x6e\x1a\x35\x4b\xc0\x60\xbe\xa8\xcb\xa3\x98\xe8\xc0\ \x4b\x26\x9c\xdd\x08\xb6\xce\xc0\x52\x55\xf3\x5e\x1e\x9a\xcc\x40\ \x45\x5c\xfa\x9b\x0f\x7d\x05\xc0\x58\x63\x42\x06\x4d\xc8\xaa\xc0\ \x17\x5f\xc1\xb2\xd2\x1c\x6d\x40\x31\x9d\xf7\x2f\xd9\x40\x6c\x40\ \x45\x56\x51\xec\xae\x7d\xee\x40\x16\x28\xbe\x3a\x2e\x6a\x36\xc0\ \x55\x8e\x3f\x19\x86\x36\x44\xc0\x24\x7d\xe2\xe5\x56\x5d\x8e\xc0\ \x5d\x38\xe5\xb0\x63\x56\x32\x40\x42\x3f\x2b\xb1\x33\xe6\xab\x40\ \x47\x27\x75\x17\xb2\xff\xe1\xc0\x65\x05\x80\x69\xc9\x45\xe4\x40\ \x46\xa5\x8b\x3a\x6c\xa7\xa8\xc0\x6c\x02\x0f\xa6\x73\xff\xbc\xc0\ \x23\x07\xbb\xb5\xb5\x51\x7d\x40\x46\x24\x27\xde\x37\xae\x65\x40\ \x4d\x34\xca\x20\x80\xfa\x8f\x40\x3b\x64\xbd\x21\x5f\x80\x81\xc0\ \x37\xe9\x56\x97\x59\x09\x15\x40\x65\x1b\x2f\x86\xb4\x04\x4d\xc0\ \x3c\xb5\xb5\xc5\x5a\xd5\x30\x40\x70\xcd\xc0\x3b\x0e\xef\xd6\x40\ \x43\xce\x38\x01\x33\x34\xdd\x40\x62\xec\x1a\xba\x71\x62\x00\x40\ \x3f\x5e\x72\xef\x9e\x8c\x25\x40\x6f\x65\x3a\x4d\xed\xc0\xd9\x00\ \x00\x00\x10\xc0\x3c\x89\xb8\xa7\xeb\xa9\x01\xc0\x66\xda\x0d\x17\ \x53\x31\x17\xc0\x31\xe1\x8c\xf0\xba\xdf\x75\xc0\x60\xbe\xd1\xa6\ \x64\x43\x82\xc0\x4b\x26\x88\x07\x92\xca\xbf\xc0\x52\x56\x94\xaa\ \x30\x5d\x72\x40\x45\x5d\x52\x6d\x57\x9c\xd9\xc0\x58\x62\xcc\x60\ \x74\xfe\x54\xc0\x17\x69\xa4\x0b\x5f\xcf\x0e\x40\x31\xa0\xd0\x0e\ \xd0\x62\xed\x40\x45\x54\xc3\x45\xee\xd2\xcc\x40\x16\x23\xd3\x38\ \xd6\x69\x28\xc0\x55\x8e\x03\x71\x6e\x9d\x31\xc0\x24\x82\xdb\x79\ \xc3\x1b\x6e\xc0\x5d\x38\x8a\xc7\x14\xca\x74\x40\x42\x3e\x16\x8f\ \x10\x50\x33\x40\x47\x27\x55\xb2\x6a\xa5\x2d\xc0\x65\x05\x3e\xa8\ \x00\x01\x15\x40\x46\xa5\x8f\xfd\x66\x67\x23\xc0\x6c\x01\xce\x0e\ \xaa\x42\x46\xc0\x23\x05\x39\x8c\x95\xa5\x0f\x40\x46\x26\xe0\xb5\ \x34\x5e\x5e\x40\x4d\x34\xad\x03\x49\x41\x5e\x40\x3b\x5f\xf9\x28\ \x4b\xa6\x62\xc0\x37\xea\x6c\x93\xfc\xa6\xb3\x40\x65\x1b\xec\xb0\ \x7b\xa8\xfc\xc0\x3c\xb5\xfe\xd2\xbb\xf3\x4b\x40\x70\xce\x1f\x6d\ \x37\x5e\x7d\x40\x43\xce\xcc\x1c\x47\x26\xc2\x40\x62\xeb\x73\x80\ \x3a\x8b\xaf\x40\x3f\x5e\xe2\xb7\xae\x5f\xb6\x40\x6f\x64\x91\x2c\ \x26\xca\x21\x00\x00\x00\x10\xc0\x38\x01\x30\x6b\xba\xdc\x1b\xc0\ \x64\xeb\xbe\xf4\x99\xf2\x9b\xc0\x13\xa3\x04\x1c\x30\xdb\xb6\xc0\ \x5e\x4a\x12\x9f\x80\xef\xb8\xc0\x48\xf6\x8c\x7d\xe9\xbd\xf2\xc0\ \x50\xa8\x10\x7e\x26\x5b\x6d\x40\x48\xcf\x7a\x59\xa1\x24\xc5\xc0\ \x53\x09\x35\x0a\x19\xb4\xbb\xc0\x2f\x0b\x6a\x35\x97\xd3\x7e\x40\ \x3e\x88\x20\x7b\xc1\xb4\x2f\x40\x41\x20\x0b\x54\x51\x2e\x7e\x40\ \x39\xc9\x9e\xf7\xb2\xd8\xc6\xc0\x55\xfe\xc6\x23\xb0\x4f\x25\xc0\ \x1c\x1c\x60\x3d\x66\x92\xe7\xc0\x5d\xba\xce\x5e\x2a\x54\x25\x40\ \x43\xc4\x24\x4f\x00\x90\x62\x40\x58\x0b\xce\x4b\xd9\x22\xe1\xc0\ \x36\xed\xde\xb4\x40\x2c\x73\x40\x5a\xd1\x4e\xef\xc4\x03\x6b\x40\ \x3f\xdc\xbc\xa5\x13\x81\x98\xc0\x37\x1b\xea\x35\xa6\x66\xff\x40\ \x4c\x2e\x2d\x1e\x28\x01\x86\x40\x47\x49\xa3\x1a\xd5\xe2\xf0\x40\ \x48\xdd\x6f\xf6\xf0\x01\x68\xc0\x38\xc1\x32\x29\x64\xfb\x5b\x40\ \x66\xb7\xea\x61\x5e\xb1\x57\xc0\x3d\x45\x4c\x15\xef\x6f\x50\x40\ \x71\x9c\x53\x80\x4b\x64\x0c\x40\x42\x8c\x98\x55\x36\x48\x2a\x40\ \x65\xd8\xb5\x79\xf6\x83\x89\x40\x3d\xa6\xc3\x54\x49\x2b\x98\x40\ \x71\x29\xea\x7e\x10\x5d\xc3\x00\x00\x00\x10\x40\x31\xc2\x13\x60\ \x88\x8b\x4e\xc0\x68\x3c\xec\xdf\xc9\x5c\x2f\x40\x19\x5a\x83\xca\ \x1f\xc9\xc5\xc0\x62\x27\x36\xb4\x9b\x52\x60\xc0\x48\x60\x10\xa3\ \xc6\x74\xb4\xc0\x59\x39\x43\xd2\xf9\x7b\x4b\x40\x49\x55\xa6\x3b\ \x8b\xb1\xc9\xc0\x56\x88\xbb\x33\x01\xdc\x6b\xc0\x41\x53\xb3\x9c\ \x85\xff\x25\x3f\xf3\x70\x84\x8f\xed\xe9\x9b\x40\x2e\x1c\xbe\xb0\ \x48\x52\x79\x40\x1a\x5f\x89\xdb\x5b\x45\xc0\xc0\x50\xc0\xce\xa2\ \xc3\xe5\x44\xc0\x65\x26\x9c\x40\xed\xa0\x1a\xc0\x54\xa2\x72\xde\ \x2f\x48\xc9\xc0\x6b\xdd\x16\xce\x9e\x56\xb3\x40\x55\xdc\x36\x69\ \xb4\x6e\x69\xc0\x3d\xbd\x2f\xf0\x4e\x71\xd7\x40\x5a\x39\x0b\xe0\ \xb9\x21\xc7\x40\x37\x5e\x81\xe7\xe6\x46\x06\xc0\x47\xa4\x74\xb8\ \xaf\xb7\xee\x40\x38\xfe\xaa\x2d\x0e\x97\x7e\x40\x36\x4f\x1c\x98\ \xc9\x38\x7d\x40\x40\x43\x0a\x66\x30\x52\xdc\xc0\x3f\xd3\xf0\xcb\ \x87\x9d\x38\x40\x62\xae\x04\x10\x53\xde\x8c\xc0\x3d\x00\x25\x84\ \x92\xd2\x45\x40\x6f\x30\xbc\x58\x1f\xbc\xdf\x40\x41\x44\xa6\xc0\ \x0b\x29\xd8\x40\x63\xaa\x6a\x7a\x0d\xd9\x34\x40\x3e\xab\x98\x09\ \xd9\x42\x57\x40\x70\x16\x03\x15\xe6\x2f\x0a\ \x00\x00\x09\x2c\ \xff\ \xff\xff\xff\x00\x00\x00\x09\x00\x00\x00\x10\xc0\x36\xc1\x31\xf7\ \x71\x07\xcd\xc0\x62\xc4\x31\x65\x15\x96\x34\xc0\x22\x59\x75\x1b\ \x5e\x3f\xf0\xc0\x59\x80\x9a\x15\x13\xe9\x09\xc0\x47\x52\xc9\x1c\ \x2f\x1a\x7a\xc0\x45\x06\x29\x2a\x67\x31\x79\x40\x49\x64\xe4\x36\ \x8c\xfe\x06\xc0\x50\x22\x71\x64\xe5\x3f\xcb\x3f\xc9\x7e\x46\xc2\ \x82\x74\x41\x40\x48\xe2\x7c\x67\xa7\x02\xf2\x40\x48\x75\xb8\xda\ \x6c\xe4\xac\x40\x43\x43\x8c\xb1\x63\x97\xf6\xc0\x59\x94\x32\xd7\ \x73\x76\xf3\x3f\xf8\xd1\x11\x6b\x2c\x82\x25\xc0\x5f\x82\xbf\x09\ \xb5\x16\xad\x40\x4a\x15\x6d\x1b\x87\x1c\x19\x40\x55\x32\x73\xaa\ \x94\xec\x77\xc0\x04\x4e\x49\x68\xe6\x95\xd3\x40\x60\xe5\xde\x62\ \x15\x6c\x95\xc0\x3a\xbb\x5f\xa9\x86\x06\x7e\xc0\x0f\x68\xca\xdb\ \xdc\xdd\x36\x40\x53\x18\x3a\x74\x13\x56\x51\x40\x50\x12\x0e\xb5\ \x6f\x61\x5c\x40\x4e\x52\x58\x0d\xd3\x0c\x6d\xc0\x38\xbe\x69\x34\ \x34\x0d\xd7\x40\x69\x01\x3e\xaa\x3a\x4e\xf3\xc0\x3d\xff\xa9\xa5\ \x4e\x81\xa7\x40\x72\xc0\x69\xcc\x0a\xb2\x0e\x40\x3f\xa2\xaf\xee\ \xb2\x7a\xa3\x40\x66\xb7\x06\x0c\x87\xf6\x2d\x40\x3d\xae\x9a\x40\ \x3c\x67\x56\x40\x71\x9d\x34\xa4\xbb\x47\x7d\x00\x00\x00\x10\xc0\ \x30\xaf\xc1\x69\x97\x5a\x95\xc0\x63\x49\x63\x4e\x8e\x9f\xdc\xc0\ \x1e\xaf\xb7\x04\x39\xf0\x0c\xc0\x5a\x46\x95\xdc\xfb\x24\x8e\xc0\ \x49\x9c\xd2\x5c\x93\x47\x4c\xc0\x48\xb5\xcf\xe8\x99\x9c\xdd\x40\ \x48\x02\x8f\xa5\xd6\xdc\x31\xc0\x4e\xc7\x1a\x4e\x1b\x4a\x1c\xc0\ \x2c\x94\xbf\x13\x77\x29\x41\x40\x47\x68\xf0\xdd\xb4\xba\x6a\x40\ \x41\xac\x5d\x06\x4f\x13\x18\x40\x44\x62\x29\x5f\x79\x2c\x69\xc0\ \x58\x78\xf9\x10\x42\x39\x8c\x40\x0d\x9e\x34\x27\x91\xbd\x70\xc0\ \x63\x03\xb5\x2e\x0b\xf6\xb5\x40\x31\x49\xc5\x70\x34\x57\xdc\x40\ \x55\x55\x0b\xb2\x96\x65\xb2\xbf\xf7\xd0\xc3\xa3\x37\x60\x82\x40\ \x60\xe6\x74\x90\x7c\xd3\xd5\xc0\x3a\xbd\xb7\xf4\x49\xd6\x6d\xc0\ \x35\x33\x14\x59\x01\x4b\xa9\x40\x52\x36\xaa\xf8\xcd\xd9\x51\x40\ \x48\x24\x95\xbf\x77\x92\xaf\x40\x50\x19\x5d\x72\x39\xa4\xee\xc0\ \x38\x3c\x43\x48\x09\x4c\x70\x40\x68\xc7\x21\x6e\x01\xfb\xd3\xc0\ \x3d\xe6\x09\x44\x84\xd2\x4f\x40\x72\xa2\xff\xdd\x04\x92\x32\x40\ \x3d\x30\xda\x3a\xb4\x2e\xfe\x40\x67\x8a\xdf\x98\x83\xb8\xf6\x40\ \x3d\xa4\x89\x7f\x23\xcd\xd5\x40\x72\x07\x6b\x4d\x22\x90\x7e\x00\ \x00\x00\x10\x3f\xe8\xdc\xd8\x6c\x4e\xe2\x7a\xc0\x63\x6c\xe1\x17\ \xf2\xa0\xbf\xc0\x1c\xa0\x1f\x76\xa3\x67\x0e\xc0\x5a\x82\x4b\xa2\ \xc3\x07\x44\xc0\x4e\x6a\xa4\x92\xae\xdd\x89\xc0\x4e\x00\xb1\x06\ \xb8\xfd\xe4\x40\x43\x6f\xe2\x4f\x4e\xd0\x7e\xc0\x4a\x2d\xf6\xac\ \x0f\xbe\x52\xc0\x45\xc6\xbd\x2e\xcf\xf5\x06\x40\x44\xce\x84\x52\ \x4a\x5a\x37\x40\x19\x34\x31\x96\xfb\x44\x7f\x40\x46\xb7\xe1\xb0\ \xec\xbd\xa9\xc0\x58\xfd\xf7\xfd\x56\xdc\x11\xbf\xf1\xca\x67\x3c\ \x06\x01\x31\xc0\x63\x1e\x02\x33\x3c\x22\x49\xc0\x32\xfa\x9d\x13\ \x66\xaf\x41\x40\x54\x9e\xa9\xbe\x7c\x61\xe3\x40\x0a\x72\xb1\x55\ \x98\x28\x33\x40\x61\x32\xb3\x01\xb0\xbc\x2d\xc0\x18\x63\x1b\xa0\ \x7e\x49\xee\xc0\x4b\xb7\xac\x9e\xf7\xef\xea\x40\x50\x71\xa3\x37\ \xe4\x2e\xa7\x40\x2c\xb8\x60\xb8\xfe\xc6\xc2\x40\x51\xc8\x31\x75\ \xbd\x97\x6c\xc0\x3b\x25\x5d\xe3\x55\xb6\xc3\x40\x67\x7e\x28\x3a\ \x2f\xcf\x04\xc0\x3d\x79\xfb\x74\x2a\xf4\x86\x40\x72\x00\xa4\xae\ \xf2\x81\x95\x40\x3c\xfa\x8b\x66\xc9\x22\x30\x40\x68\x75\x84\x1e\ \x7d\x6d\xd4\x40\x3d\xb5\xf8\x8b\xe7\x75\x6d\x40\x72\x7c\xb6\xc6\ \x9a\xe9\x9a\x00\x00\x00\x10\x3f\xe4\x9d\xa9\x42\x5e\xe7\x43\xc0\ \x63\x56\x3a\x89\xf9\xf5\x03\xc0\x1b\xb9\xb9\x7a\xc0\xda\x37\xc0\ \x5a\x51\x6d\x68\xd6\x38\x91\xc0\x4f\xf0\xb8\xf8\x76\x60\x54\xc0\ \x4f\xad\xc6\x15\x51\x43\xe4\x40\x41\x7d\xdd\x1f\xa6\x7e\x97\xc0\ \x48\x29\x8c\x8c\x88\xc5\xd5\xc0\x4b\x19\x1c\xf8\xef\x04\xe9\x40\ \x43\xa1\x52\x38\x86\xcc\xe1\xc0\x13\x11\x86\xaf\xfa\x18\xd1\x40\ \x47\x64\x45\xcd\x84\x52\xf0\xc0\x5d\x6b\xc7\x4d\xed\xcd\x82\xc0\ \x31\x79\xa5\x95\x16\x3c\x6c\xc0\x64\x78\xba\xa8\x85\x58\x74\xc0\ \x48\x8e\x36\x95\x37\x4b\xa5\x40\x54\xcc\x34\x76\x69\xe8\x4e\x40\ \x0b\x3e\xdf\x5f\x9e\x8d\xa3\x40\x60\x65\x54\x53\xc4\x38\x71\x40\ \x40\x0c\xb3\x84\x9f\xd2\x9c\xc0\x50\xf6\x2c\x1c\x95\xbd\x9f\x40\ \x4f\x3b\xb0\x51\x91\x96\x07\x3f\xf5\xb6\xbb\x4c\x89\xfb\xa7\x40\ \x52\x40\x4d\xcb\x0f\x40\xae\xc0\x3e\x45\x9a\x76\x56\xfb\xac\x40\ \x66\xc3\x4b\x9c\xe2\xcb\x0b\xc0\x3d\x73\xb5\x3b\x21\x32\xb6\x40\ \x71\xa3\x97\xbc\x79\xdf\x84\x40\x3c\xd5\xf8\x27\x62\x64\x9d\x40\ \x68\x6b\x6d\x0c\x69\x1b\x7e\x40\x3d\xb5\x37\x81\x76\xb1\xee\x40\ \x72\x77\xa6\xa6\x21\xce\x5f\x00\x00\x00\x10\xbf\xe3\x54\xf9\xd1\ \xc3\xbb\x96\xc0\x62\x39\x5d\x48\x40\x62\x61\xc0\x13\xa4\x40\xfe\ \x23\x41\x66\xc0\x57\xfe\x9e\x7a\x5a\x8c\x65\xc0\x51\x53\x87\x2f\ \x98\x9f\x2f\xc0\x50\xb1\x13\x00\xa7\xbf\x57\x40\x38\x4d\x1d\xa7\ \x39\x9a\x03\xc0\x3f\x95\x6d\x6a\x72\xf6\x4d\xc0\x54\x45\x8b\x2f\ \x57\x8e\x27\x40\x41\xd1\x53\x04\xab\x6e\xf7\xc0\x41\x24\x47\xc5\ \x1a\x30\x9b\x40\x4a\x9d\x0a\xaa\x84\xfc\x0d\xc0\x61\x26\xda\xae\ \x5a\xbe\x0d\xc0\x47\x87\xad\x31\xe6\x56\x49\xc0\x65\xf1\xab\xa2\ \x9d\x71\x7a\xc0\x55\xef\x9f\x23\x26\xbf\xfd\x40\x44\x02\xa4\x34\ \x49\x99\xb4\x40\x42\xad\xc5\x39\xfc\xc3\xc9\x40\x54\x77\x1a\x63\ \x55\xdd\x55\x3f\xd2\x3b\x7b\x22\x6a\xd6\x1f\xc0\x58\xcf\x8d\xc1\ \xb5\x07\x54\x40\x4b\xc2\x62\x63\xab\x19\x62\xc0\x40\xdb\xfa\x46\ \x22\x87\x89\x40\x54\x09\x64\xf2\x9a\x80\x2a\xc0\x44\xeb\x29\x9a\ \x2f\x94\x49\x40\x64\xe0\x36\x35\x4c\x3c\x43\xc0\x3e\x7e\x4a\x3b\ \x7b\x99\xfd\x40\x70\xa7\xca\x20\xaa\x48\xd9\x40\x39\x90\x46\xa5\ \x32\x46\xfc\x40\x67\xd4\xc0\x6c\x37\x15\xaa\x40\x3d\x93\xe0\x30\ \xd5\xa0\xe6\x40\x72\x2b\x16\x2e\xda\x91\xd2\x00\x00\x00\x10\xbf\ \xd7\x9d\xe7\xa1\x97\x39\xc0\xc0\x62\xbc\xd5\xa4\x38\x2b\x33\xc0\ \x2b\x24\x07\xa2\xf7\xbc\x3a\xc0\x59\x6b\x39\x1d\x48\x8d\x2d\xc0\ \x50\xfc\x22\x5d\x98\xd8\xe0\xc0\x4c\x3b\x80\x46\xaf\xdc\x40\x40\ \x3f\xa3\xe1\x10\x37\xbc\x7c\xc0\x47\xa7\x33\xb0\x1d\xd6\x38\xc0\ \x4a\x1a\x00\x9f\xcb\xe1\x48\x40\x46\xb3\xbc\xc6\xce\x1c\xfe\xc0\ \x03\x4e\xc7\x08\x76\xc7\x1c\x40\x48\xfd\xf5\x33\x7e\x4b\x81\xc0\ \x60\x62\xd0\x37\xd0\x3e\x25\xc0\x38\xa5\xfa\x53\xfc\x7a\x7d\xc0\ \x64\x52\x8c\x8e\xde\xf0\x6d\xc0\x51\xb5\x7b\xf0\xe3\x85\x21\x40\ \x52\x61\x8e\x3b\xeb\xd1\xde\x40\x23\x54\x72\x4d\x7e\x66\xb6\x40\ \x5a\xc6\x30\x18\x78\x65\x5e\xc0\x41\x84\x35\xad\x81\xc8\x84\xc0\ \x50\x1c\xe1\x3c\xef\x41\x96\x40\x51\x58\x7f\x41\x27\xa7\x22\x40\ \x15\x04\xa4\x11\x8b\xa5\x4c\x40\x52\xf2\xe2\x10\x1d\xbe\x94\xc0\ \x3a\xad\xdb\xf6\xe0\xcd\x29\x40\x67\x9e\xa8\x6e\xa4\x7f\x43\xc0\ \x3d\xa4\xca\x4b\x1f\x0f\x46\x40\x72\x10\xa0\x16\xce\x0d\xd1\x40\ \x3d\xed\xb9\x7b\x1d\xf5\x8a\x40\x68\xd7\xc6\xd6\xaf\x31\x50\x40\ \x3d\xb4\xa6\x32\xb3\x72\x09\x40\x72\xad\xe2\x15\x3d\xe8\xd8\x00\ \x00\x00\x10\xc0\x34\xf7\x01\x4a\xe8\x31\x37\xc0\x63\x08\xe7\x3c\ \xd7\x52\x6e\xc0\x32\x87\x01\x16\xce\x22\x54\xc0\x59\x95\x8a\xc3\ \xc9\x1c\xb8\xc0\x51\x35\xc9\xdc\xb0\xdf\xb7\xc0\x4a\x53\xba\xaa\ \x59\xe9\x6d\x40\x3f\x27\xe3\x21\x77\x13\xbc\xc0\x4a\x03\x47\xa6\ \x3c\x27\xd1\xc0\x46\x3c\x28\x27\x7d\x72\x7b\x40\x47\xbf\xcc\xb2\ \x9b\x75\xf7\x40\x16\x1c\xbe\x7d\x45\x21\x89\x40\x47\xe9\x2b\xf5\ \x69\xa9\x7a\xc0\x5e\xfa\xe4\x52\xe2\xee\x3d\xc0\x20\x9f\xc3\x12\ \xc5\x03\x2a\xc0\x63\x2d\x67\xd4\x68\xd9\xd5\xc0\x4b\xe6\x04\xf7\ \xc6\xd3\xb2\x40\x56\x9a\x17\x7f\xf0\x8a\x61\xc0\x2a\xde\xdc\xce\ \x99\x86\xc2\x40\x5d\x35\xe2\x20\x89\xba\x10\xc0\x4f\x58\x95\x85\ \x01\x84\xd4\xc0\x4b\x51\x42\xfa\x2b\xa5\xef\x40\x52\x1b\x84\x34\ \xad\x36\xdf\x40\x2e\xba\x76\xa5\xb1\xb8\x45\x40\x52\x39\x02\x49\ \xaa\x30\x3e\xc0\x37\xb9\x6f\x87\xfd\xd0\x77\x40\x68\x3e\xb5\xb9\ \xe8\xcd\x8a\xc0\x3d\xdf\x2f\x40\x7a\xc8\xd0\x40\x72\x5e\x54\xd0\ \xa5\x34\x44\x40\x3d\x8f\xfd\xe1\x90\x52\x8a\x40\x68\xaf\x88\xff\ \xd8\xfc\x30\x40\x3d\xb4\x96\xe1\xc9\x47\x14\x40\x72\x99\xc3\xc3\ \x16\xad\x07\x00\x00\x00\x10\xc0\x44\x1f\xc5\xb0\x8d\xff\xf8\xc0\ \x62\xd7\xcc\xdb\x51\x37\xe9\xc0\x38\x70\x1f\x26\x3f\xdd\xd1\xc0\ \x59\xd3\xca\x12\xd1\x6d\x66\xc0\x50\x9b\x5f\xdf\x54\x98\x82\xc0\ \x47\x35\x38\xde\x3e\x59\xd1\x40\x40\x3a\x4b\xde\xb1\x11\x5e\xc0\ \x4e\xa8\xe3\x73\xc2\x1e\x04\xc0\x3a\xcd\xa4\x3c\x9c\xa3\x4a\x40\ \x48\x5e\xe9\xc8\x41\x4a\x06\x40\x36\xa3\x67\x5c\xdf\x00\x72\x40\ \x44\xa5\x11\xd4\x30\xbb\xbe\xc0\x58\xc8\x06\xa1\x52\x29\xa4\x40\ \x30\x47\xe1\xaa\x31\x64\x3e\xc0\x63\x5d\xb2\xe9\xcc\x7a\xe2\x40\ \x29\xe9\x00\x97\x5b\x70\xaa\x40\x58\x50\x0c\x6f\xef\x08\x06\xc0\ \x40\x80\xf5\x5f\x55\x35\x51\x40\x60\xea\x26\xcc\x19\xc3\x62\xc0\ \x52\x7c\x87\x94\x54\x11\xcd\xc0\x40\x7b\x99\x9a\x58\x7d\x4e\x40\ \x52\xbc\xf9\x47\x74\x9c\xd3\x40\x42\x20\x54\x4b\xe3\x87\xa0\x40\ \x50\x21\x47\x81\x50\x58\x25\xc0\x35\xd8\x1b\x0b\x45\x8c\xdd\x40\ \x68\xfb\x74\x42\x1b\x4c\x50\xc0\x3e\x4d\x9f\x09\xae\x3a\xcb\x40\ \x72\xb9\xff\x8f\xad\x92\x5a\x40\x3d\x6b\xf8\x3a\xfe\x5b\xcc\x40\ \x67\xb7\x76\x0a\x83\x1d\x2b\x40\x3d\xaf\x2e\x02\x24\x00\xa5\x40\ \x72\x1d\xb9\x4a\x83\x5a\x36\x00\x00\x00\x10\xc0\x56\x21\x7b\x1a\ \x2d\x27\x74\xc0\x5d\x7f\x81\xf7\x72\x97\xeb\xc0\x45\x6a\xce\x4b\ \x4a\x59\x0e\xc0\x58\x6b\x98\xca\x1a\xce\x5b\xc0\x50\x79\x21\x8d\ \x02\xed\x0a\xc0\x3e\xd5\xf2\x5c\x01\x40\xa0\x40\x38\x02\xd4\x2c\ \x79\x7b\xb7\xc0\x52\xa7\xde\x66\xb0\xaa\x42\x3f\xd7\xb5\xe2\x7b\ \x89\xa4\xca\x40\x48\x0f\x83\x05\x1a\x5b\x33\x40\x46\xa9\x42\x70\ \x82\xf2\xfc\x40\x3a\x3a\x42\xb9\x85\x37\x29\xc0\x54\xe2\xc5\x27\ \x1d\x51\x6a\x40\x42\xd1\x7b\x2a\xa1\x08\x15\xc0\x61\x0b\x0a\x8b\ \x23\x7a\xc0\x40\x33\x47\x9a\x49\x82\xe6\x81\x40\x57\xac\xeb\x9b\ \x79\x30\xfa\xc0\x53\x13\x15\xe5\x3e\x1d\x05\x40\x60\x43\xab\x51\ \xbf\x87\xef\xc0\x5d\xe3\x5c\x69\xf3\x2d\x89\x40\x02\x9d\x80\x74\ \x60\xb9\xea\x40\x52\xbe\x74\x1e\x0d\x17\x2d\x40\x50\x50\x9b\xe2\ \xa5\xba\x4e\x40\x46\x29\x92\xd8\xeb\x51\xb2\xc0\x32\x67\x07\xb9\ \x5f\xcb\x99\x40\x68\xd4\xcc\x9f\x63\x2f\x21\xc0\x3e\x08\x79\x67\ \x07\x43\x5b\x40\x72\xa1\x8d\xaf\x2d\x86\xe8\x40\x43\x38\x54\x39\ \x89\x5f\xf6\x40\x64\xda\x52\xe8\xbe\xbd\x10\x40\x3e\xaa\x65\xda\ \xb3\xd9\xcf\x40\x70\xaa\x52\xf4\x99\xff\x0c\ \x00\x00\x01\x0c\ \xff\ \xff\xff\xff\x00\x00\x00\x01\x00\x00\x00\x10\xc0\x72\x75\xd0\xbc\ \x4a\x7e\x3b\x40\x6e\xa8\x3a\x76\xcc\x4a\x4f\xc0\x6e\xc4\x15\x8d\ \xdb\x8a\x81\x40\x6d\x91\x95\x4a\xaf\x90\x71\xc0\x69\x4c\xfe\x50\ \x6c\x77\x6e\x40\x72\x41\xf5\x29\xa3\x44\xca\xc0\x67\xd1\xbb\x6b\ \x66\xf4\xfc\x40\x68\x1a\x7c\x41\xab\x27\xf0\xc0\x59\x09\x41\xf0\ \xd6\x29\x49\x40\x71\x72\x68\x78\x60\x60\x84\xc0\x57\x8e\x4b\x36\ \x5e\x8b\x6f\x40\x6c\xb0\x0b\xce\x10\xc5\x22\xc0\x70\xf5\x12\xcb\ \xa7\x78\x95\x40\x71\x44\x4e\x7a\x50\x85\x9f\xc0\x74\x72\x66\x5a\ \x1e\x1b\xae\x40\x71\x17\xf1\xe4\xf6\x7f\x7e\xc0\x64\x2e\x57\x5b\ \xe3\x6f\x6c\x40\x70\x14\x53\x5e\x5b\x6a\x7a\xc0\x60\x2d\xc9\x35\ \x26\xaf\xd0\x40\x72\xf1\x84\xb6\xf0\xd8\xae\xc0\x53\x20\x21\x2d\ \x64\x5b\xb3\x40\x72\x40\xa0\x97\xbf\x55\x8f\xc0\x51\x0d\xcf\x0f\ \x1b\x48\x3c\x40\x6b\xd1\x05\xa8\x2a\xdf\x62\x40\x44\x77\x7b\xec\ \x05\x04\x13\x40\x6f\x01\xfc\x1b\x65\x69\x69\x40\x61\x21\xf2\x32\ \xa1\xd8\xd9\x40\x71\x41\x25\x0f\x44\xd0\xa8\x40\x4c\x88\xe7\x4e\ \xbb\xeb\xb8\x40\x6c\x7b\xe4\x15\x28\x7a\x0a\x40\x62\x87\x8c\xab\ \xb5\x95\xf1\x40\x70\xd4\x4b\x4c\x03\x9d\x83\ " qt_resource_name = b"\ \x00\x0a\ \x03\x88\x10\x53\ \x00\x61\ \x00\x6e\x00\x69\x00\x6d\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x73\ \x00\x08\ \x0f\x03\x25\x67\ \x00\x63\ \x00\x68\x00\x69\x00\x6c\x00\x6c\x00\x69\x00\x6e\x00\x67\ \x00\x07\ \x01\xc4\x70\xa7\ \x00\x6a\ \x00\x75\x00\x6d\x00\x70\x00\x69\x00\x6e\x00\x67\ \x00\x07\ \x0a\x84\xa0\x87\ \x00\x64\ \x00\x61\x00\x6e\x00\x63\x00\x69\x00\x6e\x00\x67\ \x00\x04\ \x00\x06\xab\x74\ \x00\x64\ \x00\x65\x00\x61\x00\x64\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x02\ \x00\x00\x00\x58\x00\x00\x00\x00\x00\x01\x00\x00\x27\xc0\ \x00\x00\x00\x30\x00\x00\x00\x00\x00\x01\x00\x00\x19\x70\ \x00\x00\x00\x44\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x90\ \x00\x00\x00\x1a\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() PyQt5_gpl-5.10.1/examples/dbus/0000755000076500000240000000000013245231431016252 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/dbus/chat/0000755000076500000240000000000013245231431017171 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/dbus/chat/chat.py0000755000076500000240000001517513245231431020476 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import pyqtSignal, pyqtSlot, Q_CLASSINFO from PyQt5.QtWidgets import QApplication, QDialog, QMainWindow, QMessageBox from PyQt5.QtDBus import (QDBusAbstractAdaptor, QDBusAbstractInterface, QDBusConnection, QDBusMessage) from ui_chatmainwindow import Ui_ChatMainWindow from ui_chatsetnickname import Ui_NicknameDialog class ChatAdaptor(QDBusAbstractAdaptor): Q_CLASSINFO("D-Bus Interface", 'org.example.chat') Q_CLASSINFO("D-Bus Introspection", '' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' '') action = pyqtSignal(str, str) message = pyqtSignal(str, str) def __init__(self, parent): super(ChatAdaptor, self).__init__(parent) self.setAutoRelaySignals(True) class ChatInterface(QDBusAbstractInterface): action = pyqtSignal(str, str) message = pyqtSignal(str, str) def __init__(self, service, path, connection, parent=None): super(ChatInterface, self).__init__(service, path, 'org.example.chat', connection, parent) class ChatMainWindow(QMainWindow, Ui_ChatMainWindow): action = pyqtSignal(str, str) message = pyqtSignal(str, str) def __init__(self): super(ChatMainWindow, self).__init__() self.m_nickname = "nickname" self.m_messages = [] self.setupUi(self) self.sendButton.setEnabled(False) self.messageLineEdit.textChanged.connect(self.textChangedSlot) self.sendButton.clicked.connect(self.sendClickedSlot) self.actionChangeNickname.triggered.connect(self.changeNickname) self.actionAboutQt.triggered.connect(self.aboutQt) QApplication.instance().lastWindowClosed.connect(self.exiting) # Add our D-Bus interface and connect to D-Bus. ChatAdaptor(self) QDBusConnection.sessionBus().registerObject('/', self) iface = ChatInterface('', '', QDBusConnection.sessionBus(), self) QDBusConnection.sessionBus().connect('', '', 'org.example.chat', 'message', self.messageSlot) iface.action.connect(self.actionSlot) dialog = NicknameDialog() dialog.cancelButton.setVisible(False) dialog.exec_() self.m_nickname = dialog.nickname.text().strip() self.action.emit(self.m_nickname, "joins the chat") def rebuildHistory(self): history = '\n'.join(self.m_messages) self.chatHistory.setPlainText(history) @pyqtSlot(str, str) def messageSlot(self, nickname, text): self.m_messages.append("<%s> %s" % (nickname, text)) if len(self.m_messages) > 100: self.m_messages.pop(0) self.rebuildHistory() @pyqtSlot(str, str) def actionSlot(self, nickname, text): self.m_messages.append("* %s %s" % (nickname, text)) if len(self.m_messages) > 100: self.m_messages.pop(0) self.rebuildHistory() @pyqtSlot(str) def textChangedSlot(self, newText): self.sendButton.setEnabled(newText != '') @pyqtSlot() def sendClickedSlot(self): msg = QDBusMessage.createSignal('/', 'org.example.chat', 'message') msg << self.m_nickname << self.messageLineEdit.text() QDBusConnection.sessionBus().send(msg) self.messageLineEdit.setText('') @pyqtSlot() def changeNickname(self): dialog = NicknameDialog(self) if dialog.exec_() == QDialog.Accepted: old = self.m_nickname self.m_nickname = dialog.nickname.text().strip() self.action.emit(old, "is now known as %s" % self.m_nickname) @pyqtSlot() def aboutQt(self): QMessageBox.aboutQt(self) @pyqtSlot() def exiting(self): self.action.emit(self.m_nickname, "leaves the chat") class NicknameDialog(QDialog, Ui_NicknameDialog): def __init__(self, parent=None): super(NicknameDialog, self).__init__(parent) self.setupUi(self) if __name__ == '__main__': import sys app = QApplication(sys.argv) if not QDBusConnection.sessionBus().isConnected(): sys.stderr.write("Cannot connect to the D-Bus session bus.\n" "Please check your system settings and try again.\n") sys.exit(1) chat = ChatMainWindow() chat.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/dbus/chat/chatmainwindow.ui0000644000076500000240000001114513245231431022546 0ustar philstaff00000000000000 ChatMainWindow 0 0 800 600 Qt D-Bus Chat 9 6 0 6 false Messages sent and received from other users true 0 6 Message: messageLineEdit 1 0 0 0 Sends a message to other people Send 0 0 800 31 Help File Quit Ctrl+Q About Qt... Change nickname... Ctrl+N chatHistory messageLineEdit sendButton messageLineEdit returnPressed() sendButton animateClick() 299 554 744 551 actionQuit triggered(bool) ChatMainWindow close() -1 -1 399 299 PyQt5_gpl-5.10.1/examples/dbus/chat/chatsetnickname.ui0000644000076500000240000000646613245231431022705 0ustar philstaff00000000000000 NicknameDialog 0 0 396 105 1 1 0 0 Set nickname 9 6 0 6 1 1 0 0 New nickname: 0 6 Qt::Horizontal 131 31 OK Cancel Qt::Horizontal 40 20 okButton clicked() NicknameDialog accept() 278 253 96 254 cancelButton clicked() NicknameDialog reject() 369 253 179 282 PyQt5_gpl-5.10.1/examples/dbus/chat/ui_chatmainwindow.py0000644000076500000240000001231513245231431023256 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'chatmainwindow.ui' # # Created: Fri Jul 26 06:48:06 2013 # by: PyQt5 UI code generator 5.0.1-snapshot-2a99e59669ee # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_ChatMainWindow(object): def setupUi(self, ChatMainWindow): ChatMainWindow.setObjectName("ChatMainWindow") ChatMainWindow.resize(800, 600) self.centralwidget = QtWidgets.QWidget(ChatMainWindow) self.centralwidget.setObjectName("centralwidget") self.hboxlayout = QtWidgets.QHBoxLayout(self.centralwidget) self.hboxlayout.setContentsMargins(9, 9, 9, 9) self.hboxlayout.setSpacing(6) self.hboxlayout.setObjectName("hboxlayout") self.vboxlayout = QtWidgets.QVBoxLayout() self.vboxlayout.setContentsMargins(0, 0, 0, 0) self.vboxlayout.setSpacing(6) self.vboxlayout.setObjectName("vboxlayout") self.chatHistory = QtWidgets.QTextBrowser(self.centralwidget) self.chatHistory.setAcceptDrops(False) self.chatHistory.setAcceptRichText(True) self.chatHistory.setObjectName("chatHistory") self.vboxlayout.addWidget(self.chatHistory) self.hboxlayout1 = QtWidgets.QHBoxLayout() self.hboxlayout1.setContentsMargins(0, 0, 0, 0) self.hboxlayout1.setSpacing(6) self.hboxlayout1.setObjectName("hboxlayout1") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setObjectName("label") self.hboxlayout1.addWidget(self.label) self.messageLineEdit = QtWidgets.QLineEdit(self.centralwidget) self.messageLineEdit.setObjectName("messageLineEdit") self.hboxlayout1.addWidget(self.messageLineEdit) self.sendButton = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy(1), QtWidgets.QSizePolicy.Policy(0)) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.sendButton.sizePolicy().hasHeightForWidth()) self.sendButton.setSizePolicy(sizePolicy) self.sendButton.setWhatsThis("") self.sendButton.setObjectName("sendButton") self.hboxlayout1.addWidget(self.sendButton) self.vboxlayout.addLayout(self.hboxlayout1) self.hboxlayout.addLayout(self.vboxlayout) ChatMainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(ChatMainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 31)) self.menubar.setObjectName("menubar") self.menuQuit = QtWidgets.QMenu(self.menubar) self.menuQuit.setObjectName("menuQuit") self.menuFile = QtWidgets.QMenu(self.menubar) self.menuFile.setObjectName("menuFile") ChatMainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(ChatMainWindow) self.statusbar.setObjectName("statusbar") ChatMainWindow.setStatusBar(self.statusbar) self.actionQuit = QtWidgets.QAction(ChatMainWindow) self.actionQuit.setObjectName("actionQuit") self.actionAboutQt = QtWidgets.QAction(ChatMainWindow) self.actionAboutQt.setObjectName("actionAboutQt") self.actionChangeNickname = QtWidgets.QAction(ChatMainWindow) self.actionChangeNickname.setObjectName("actionChangeNickname") self.menuQuit.addAction(self.actionAboutQt) self.menuFile.addAction(self.actionChangeNickname) self.menuFile.addSeparator() self.menuFile.addAction(self.actionQuit) self.menubar.addAction(self.menuFile.menuAction()) self.menubar.addAction(self.menuQuit.menuAction()) self.label.setBuddy(self.messageLineEdit) self.retranslateUi(ChatMainWindow) self.messageLineEdit.returnPressed.connect(self.sendButton.animateClick) self.actionQuit.triggered['bool'].connect(ChatMainWindow.close) QtCore.QMetaObject.connectSlotsByName(ChatMainWindow) ChatMainWindow.setTabOrder(self.chatHistory, self.messageLineEdit) ChatMainWindow.setTabOrder(self.messageLineEdit, self.sendButton) def retranslateUi(self, ChatMainWindow): _translate = QtCore.QCoreApplication.translate ChatMainWindow.setWindowTitle(_translate("ChatMainWindow", "Qt D-Bus Chat")) self.chatHistory.setToolTip(_translate("ChatMainWindow", "Messages sent and received from other users")) self.label.setText(_translate("ChatMainWindow", "Message:")) self.sendButton.setToolTip(_translate("ChatMainWindow", "Sends a message to other people")) self.sendButton.setText(_translate("ChatMainWindow", "Send")) self.menuQuit.setTitle(_translate("ChatMainWindow", "Help")) self.menuFile.setTitle(_translate("ChatMainWindow", "File")) self.actionQuit.setText(_translate("ChatMainWindow", "Quit")) self.actionQuit.setShortcut(_translate("ChatMainWindow", "Ctrl+Q")) self.actionAboutQt.setText(_translate("ChatMainWindow", "About Qt...")) self.actionChangeNickname.setText(_translate("ChatMainWindow", "Change nickname...")) self.actionChangeNickname.setShortcut(_translate("ChatMainWindow", "Ctrl+N")) PyQt5_gpl-5.10.1/examples/dbus/chat/ui_chatsetnickname.py0000644000076500000240000000652413245231431023410 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'chatsetnickname.ui' # # Created: Fri Jul 26 06:48:20 2013 # by: PyQt5 UI code generator 5.0.1-snapshot-2a99e59669ee # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_NicknameDialog(object): def setupUi(self, NicknameDialog): NicknameDialog.setObjectName("NicknameDialog") NicknameDialog.resize(396, 105) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy(1), QtWidgets.QSizePolicy.Policy(1)) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(NicknameDialog.sizePolicy().hasHeightForWidth()) NicknameDialog.setSizePolicy(sizePolicy) self.vboxlayout = QtWidgets.QVBoxLayout(NicknameDialog) self.vboxlayout.setContentsMargins(9, 9, 9, 9) self.vboxlayout.setSpacing(6) self.vboxlayout.setObjectName("vboxlayout") self.vboxlayout1 = QtWidgets.QVBoxLayout() self.vboxlayout1.setContentsMargins(0, 0, 0, 0) self.vboxlayout1.setSpacing(6) self.vboxlayout1.setObjectName("vboxlayout1") self.label = QtWidgets.QLabel(NicknameDialog) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy(1), QtWidgets.QSizePolicy.Policy(1)) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth()) self.label.setSizePolicy(sizePolicy) self.label.setObjectName("label") self.vboxlayout1.addWidget(self.label) self.nickname = QtWidgets.QLineEdit(NicknameDialog) self.nickname.setObjectName("nickname") self.vboxlayout1.addWidget(self.nickname) self.vboxlayout.addLayout(self.vboxlayout1) self.hboxlayout = QtWidgets.QHBoxLayout() self.hboxlayout.setContentsMargins(0, 0, 0, 0) self.hboxlayout.setSpacing(6) self.hboxlayout.setObjectName("hboxlayout") spacerItem = QtWidgets.QSpacerItem(131, 31, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.hboxlayout.addItem(spacerItem) self.okButton = QtWidgets.QPushButton(NicknameDialog) self.okButton.setObjectName("okButton") self.hboxlayout.addWidget(self.okButton) self.cancelButton = QtWidgets.QPushButton(NicknameDialog) self.cancelButton.setObjectName("cancelButton") self.hboxlayout.addWidget(self.cancelButton) spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.hboxlayout.addItem(spacerItem1) self.vboxlayout.addLayout(self.hboxlayout) self.retranslateUi(NicknameDialog) self.okButton.clicked.connect(NicknameDialog.accept) self.cancelButton.clicked.connect(NicknameDialog.reject) QtCore.QMetaObject.connectSlotsByName(NicknameDialog) def retranslateUi(self, NicknameDialog): _translate = QtCore.QCoreApplication.translate NicknameDialog.setWindowTitle(_translate("NicknameDialog", "Set nickname")) self.label.setText(_translate("NicknameDialog", "New nickname:")) self.okButton.setText(_translate("NicknameDialog", "OK")) self.cancelButton.setText(_translate("NicknameDialog", "Cancel")) PyQt5_gpl-5.10.1/examples/dbus/listnames.py0000755000076500000240000000671713245231431020641 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import QCoreApplication from PyQt5.QtDBus import QDBusConnection, QDBusInterface def method1(): sys.stdout.write("Method 1:\n") reply = QDBusConnection.sessionBus().interface().registeredServiceNames() if not reply.isValid(): sys.stdout.write("Error: %s\n" % reply.error().message()) sys.exit(1) # Mimic the output from the C++ version. for name in reply.value(): sys.stdout.write('"%s"\n' % name) def method2(): sys.stdout.write("Method 2:\n") bus = QDBusConnection.sessionBus() dbus_iface = QDBusInterface('org.freedesktop.DBus', '/org/freedesktop/DBus', 'org.freedesktop.DBus', bus) names = dbus_iface.call('ListNames').arguments()[0] # Mimic the output from the C++ version. sys.stdout.write('QVariant(QStringList, ("%s") )\n' % '", "'.join(names)) def method3(): sys.stdout.write("Method 3:\n") names = QDBusConnection.sessionBus().interface().registeredServiceNames().value() # Mimic the output from the C++ version. sys.stdout.write('("%s")\n' % '", "'.join(names)) if __name__ == '__main__': app = QCoreApplication(sys.argv) if not QDBusConnection.sessionBus().isConnected(): sys.stderr.write("Cannot connect to the D-Bus session bus.\n" "To start it, run:\n" "\teval `dbus-launch --auto-syntax`\n"); sys.exit(1) method1() method2() method3() sys.exit() PyQt5_gpl-5.10.1/examples/dbus/pingpong/0000755000076500000240000000000013245231431020073 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/dbus/pingpong/ping.py0000644000076500000240000000574113245231431021411 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import QCoreApplication from PyQt5.QtDBus import QDBusConnection, QDBusInterface, QDBusReply if __name__ == '__main__': app = QCoreApplication(sys.argv) if not QDBusConnection.sessionBus().isConnected(): sys.stderr.write("Cannot connect to the D-Bus session bus.\n" "To start it, run:\n" "\teval `dbus-launch --auto-syntax`\n"); sys.exit(1) iface = QDBusInterface('org.example.QtDBus.PingExample', '/', '', QDBusConnection.sessionBus()) if iface.isValid(): msg = iface.call('ping', sys.argv[1] if len(sys.argv) > 1 else "") reply = QDBusReply(msg) if reply.isValid(): sys.stdout.write("Reply was: %s\n" % reply.value()) sys.exit() sys.stderr.write("Call failed: %s\n" % reply.error().message()) sys.exit(1) sys.stderr.write("%s\n" % QDBusConnection.sessionBus().lastError().message()) sys.exit(1) PyQt5_gpl-5.10.1/examples/dbus/pingpong/pong.py0000644000076500000240000000573513245231431021422 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import pyqtSlot, QCoreApplication, QMetaObject, QObject from PyQt5.QtDBus import QDBusConnection class Pong(QObject): @pyqtSlot(str, result=str) def ping(self, arg): QMetaObject.invokeMethod(QCoreApplication.instance(), 'quit') return "ping(\"%s\") got called" % arg if __name__ == '__main__': app = QCoreApplication(sys.argv) if not QDBusConnection.sessionBus().isConnected(): sys.stderr.write("Cannot connect to the D-Bus session bus.\n" "To start it, run:\n" "\teval `dbus-launch --auto-syntax`\n"); sys.exit(1) if not QDBusConnection.sessionBus().registerService('org.example.QtDBus.PingExample'): sys.stderr.write("%s\n" % QDBusConnection.sessionBus().lastError().message()) sys.exit(1) pong = Pong() QDBusConnection.sessionBus().registerObject('/', pong, QDBusConnection.ExportAllSlots) sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/dbus/remotecontrolledcar/0000755000076500000240000000000013245231431022321 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/dbus/remotecontrolledcar/car/0000755000076500000240000000000013245231431023066 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/dbus/remotecontrolledcar/car/car.py0000755000076500000240000001460113245231431024212 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import math from PyQt5.QtCore import pyqtSlot, Q_CLASSINFO, QRectF, Qt from PyQt5.QtGui import QBrush, QPainter, QTransform from PyQt5.QtWidgets import (QApplication, QGraphicsItem, QGraphicsObject, QGraphicsScene, QGraphicsView) from PyQt5.QtDBus import QDBusAbstractAdaptor, QDBusConnection class Car(QGraphicsObject): def __init__(self): super(Car, self).__init__() self.color = QBrush(Qt.green) self.wheelsAngle = 0.0 self.speed = 0.0 self.startTimer(1000 // 33) self.setFlag(QGraphicsItem.ItemIsMovable, True) self.setFlag(QGraphicsItem.ItemIsFocusable, True) def accelerate(self): if self.speed < 10: self.speed += 1 def decelerate(self): if self.speed > -10: self.speed -= 1 def turnLeft(self): if self.wheelsAngle > -30: self.wheelsAngle -= 5 def turnRight(self): if self.wheelsAngle < 30: self.wheelsAngle += 5 def boundingRect(self): return QRectF(-35, -81, 70, 115) def timerEvent(self, event): axelDistance = 54.0 wheelsAngleRads = (self.wheelsAngle * math.pi) / 180 turnDistance = math.cos(wheelsAngleRads) * axelDistance * 2 turnRateRads = wheelsAngleRads / turnDistance turnRate = (turnRateRads * 180) / math.pi rotation = self.speed * turnRate self.setTransform(QTransform().rotate(rotation), True) self.setTransform(QTransform.fromTranslate(0, -self.speed), True) self.update() def paint(self, painter, option, widget): painter.setBrush(Qt.gray) painter.drawRect(-20, -58, 40, 2) # Front axel painter.drawRect(-20, 7, 40, 2) # Rear axel painter.setBrush(self.color) painter.drawRect(-25, -79, 50, 10) # Front wing painter.drawEllipse(-25, -48, 50, 20) # Side pods painter.drawRect(-25, -38, 50, 35) # Side pods painter.drawRect(-5, 9, 10, 10) # Back pod painter.drawEllipse(-10, -81, 20, 100) # Main body painter.drawRect(-17, 19, 34, 15) # Rear wing painter.setBrush(Qt.black) painter.drawPie(-5, -51, 10, 15, 0, 180 * 16) painter.drawRect(-5, -44, 10, 10) # Cockpit painter.save() painter.translate(-20, -58) painter.rotate(self.wheelsAngle) painter.drawRect(-10, -7, 10, 15) # Front left painter.restore() painter.save() painter.translate(20, -58) painter.rotate(self.wheelsAngle) painter.drawRect(0, -7, 10, 15) # Front right painter.restore() painter.drawRect(-30, 0, 12, 17) # Rear left painter.drawRect(19, 0, 12, 17) # Rear right class CarInterfaceAdaptor(QDBusAbstractAdaptor): Q_CLASSINFO("D-Bus Interface", 'org.example.Examples.CarInterface') Q_CLASSINFO("D-Bus Introspection", '' ' \n' ' \n' ' \n' ' \n' ' \n' ' \n' '') def __init__(self, parent): super(CarInterfaceAdaptor, self).__init__(parent) self.setAutoRelaySignals(True) @pyqtSlot() def accelerate(self): self.parent().accelerate() @pyqtSlot() def decelerate(self): self.parent().decelerate() @pyqtSlot() def turnLeft(self): self.parent().turnLeft() @pyqtSlot() def turnRight(self): self.parent().turnRight() if __name__ == '__main__': import sys app = QApplication(sys.argv) scene = QGraphicsScene() scene.setSceneRect(-500, -500, 1000, 1000) scene.setItemIndexMethod(QGraphicsScene.NoIndex) car = Car() scene.addItem(car) view = QGraphicsView(scene) view.setRenderHint(QPainter.Antialiasing) view.setBackgroundBrush(Qt.darkGray) view.setWindowTitle("Qt DBus Controlled Car") view.resize(400, 300) view.show() a = CarInterfaceAdaptor(car) connection = QDBusConnection.sessionBus() connection.registerObject('/Car', car) connection.registerService('org.example.CarExample') rc = app.exec_() # Make sure things get destroyed in the right order. del view sys.exit(rc) PyQt5_gpl-5.10.1/examples/dbus/remotecontrolledcar/controller/0000755000076500000240000000000013245231431024504 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/dbus/remotecontrolledcar/controller/controller.py0000755000076500000240000000705613245231431027254 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtDBus import QDBusAbstractInterface, QDBusConnection from ui_controller import Ui_Controller class CarInterface(QDBusAbstractInterface): def __init__(self, service, path, connection, parent=None): super(CarInterface, self).__init__(service, path, 'org.example.Examples.CarInterface', connection, parent) def accelerate(self): self.asyncCall('accelerate') def decelerate(self): self.asyncCall('decelerate') def turnLeft(self): self.asyncCall('turnLeft') def turnRight(self): self.asyncCall('turnRight') class Controller(QWidget): def __init__(self, parent=None): super(Controller, self).__init__(parent) self.ui = Ui_Controller() self.ui.setupUi(self) self.car = CarInterface('org.example.CarExample', '/Car', QDBusConnection.sessionBus(), self) self.startTimer(1000) def timerEvent(self, event): if self.car.isValid(): self.ui.label.setText("connected") else: self.ui.label.setText("disconnected") def on_accelerate_clicked(self): self.car.accelerate() def on_decelerate_clicked(self): self.car.decelerate() def on_left_clicked(self): self.car.turnLeft() def on_right_clicked(self): self.car.turnRight() if __name__ == '__main__': import sys app = QApplication(sys.argv) controller = Controller() controller.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/dbus/remotecontrolledcar/controller/controller.ui0000644000076500000240000000276213245231431027235 0ustar philstaff00000000000000 Controller 0 0 255 111 Controller 9 6 Controller Qt::AlignCenter Decelerate Accelerate Right Left PyQt5_gpl-5.10.1/examples/dbus/remotecontrolledcar/controller/ui_controller.py0000644000076500000240000000407713245231431027746 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'controller.ui' # # Created: Fri May 31 18:58:37 2013 # by: PyQt5 UI code generator 5.0-snapshot-dd808c1bcced # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Controller(object): def setupUi(self, Controller): Controller.setObjectName("Controller") Controller.resize(255, 111) self.gridlayout = QtWidgets.QGridLayout(Controller) self.gridlayout.setContentsMargins(9, 9, 9, 9) self.gridlayout.setSpacing(6) self.gridlayout.setObjectName("gridlayout") self.label = QtWidgets.QLabel(Controller) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.gridlayout.addWidget(self.label, 1, 1, 1, 1) self.decelerate = QtWidgets.QPushButton(Controller) self.decelerate.setObjectName("decelerate") self.gridlayout.addWidget(self.decelerate, 2, 1, 1, 1) self.accelerate = QtWidgets.QPushButton(Controller) self.accelerate.setObjectName("accelerate") self.gridlayout.addWidget(self.accelerate, 0, 1, 1, 1) self.right = QtWidgets.QPushButton(Controller) self.right.setObjectName("right") self.gridlayout.addWidget(self.right, 1, 2, 1, 1) self.left = QtWidgets.QPushButton(Controller) self.left.setObjectName("left") self.gridlayout.addWidget(self.left, 1, 0, 1, 1) self.retranslateUi(Controller) QtCore.QMetaObject.connectSlotsByName(Controller) def retranslateUi(self, Controller): _translate = QtCore.QCoreApplication.translate Controller.setWindowTitle(_translate("Controller", "Controller")) self.label.setText(_translate("Controller", "Controller")) self.decelerate.setText(_translate("Controller", "Decelerate")) self.accelerate.setText(_translate("Controller", "Accelerate")) self.right.setText(_translate("Controller", "Right")) self.left.setText(_translate("Controller", "Left")) PyQt5_gpl-5.10.1/examples/designer/0000755000076500000240000000000013245231431017115 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/designer/calculatorform/0000755000076500000240000000000013245231431022132 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/designer/calculatorform/calculatorform.py0000755000076500000240000000544213245231431025531 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import pyqtSlot from PyQt5.QtWidgets import QApplication, QWidget from ui_calculatorform import Ui_CalculatorForm class CalculatorForm(QWidget): def __init__(self, parent=None): super(CalculatorForm, self).__init__(parent) self.ui = Ui_CalculatorForm() self.ui.setupUi(self) @pyqtSlot(int) def on_inputSpinBox1_valueChanged(self, value): self.ui.outputWidget.setText(str(value + self.ui.inputSpinBox2.value())) @pyqtSlot(int) def on_inputSpinBox2_valueChanged(self, value): self.ui.outputWidget.setText(str(value + self.ui.inputSpinBox1.value())) if __name__ == '__main__': import sys app = QApplication(sys.argv) calculator = CalculatorForm() calculator.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/designer/calculatorform/calculatorform.ui0000644000076500000240000001575613245231431025524 0ustar philstaff00000000000000 CalculatorForm CalculatorForm 0 0 400 300 5 5 0 0 Calculator Form 9 6 horizontalSpacer 239 9 152 52 Qt::Horizontal 40 20 label_3_2 169 9 20 52 = Qt::AlignCenter 1 6 label_2_2_2 1 1 36 17 Output outputWidget 1 24 36 27 QFrame::Box QFrame::Sunken 0 Qt::AlignAbsolute|Qt::AlignBottom|Qt::AlignCenter|Qt::AlignHCenter|Qt::AlignHorizontal_Mask|Qt::AlignJustify|Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing|Qt::AlignVCenter|Qt::AlignVertical_Mask verticalSpacer 89 67 20 224 Qt::Vertical 20 40 1 6 label_2 1 1 46 19 Input 2 inputSpinBox2 1 26 46 25 label_3 63 9 20 52 + Qt::AlignCenter 1 6 label 1 1 46 19 Input 1 inputSpinBox1 1 26 46 25 PyQt5_gpl-5.10.1/examples/designer/calculatorform/ui_calculatorform.py0000644000076500000240000001221313245231431026215 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'calculatorform.ui' # # Created: Fri Jul 26 06:41:48 2013 # by: PyQt5 UI code generator 5.0.1-snapshot-2a99e59669ee # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_CalculatorForm(object): def setupUi(self, CalculatorForm): CalculatorForm.setObjectName("CalculatorForm") CalculatorForm.resize(400, 300) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy(5), QtWidgets.QSizePolicy.Policy(5)) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(CalculatorForm.sizePolicy().hasHeightForWidth()) CalculatorForm.setSizePolicy(sizePolicy) self.gridlayout = QtWidgets.QGridLayout(CalculatorForm) self.gridlayout.setContentsMargins(9, 9, 9, 9) self.gridlayout.setSpacing(6) self.gridlayout.setObjectName("gridlayout") spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.gridlayout.addItem(spacerItem, 0, 6, 1, 1) self.label_3_2 = QtWidgets.QLabel(CalculatorForm) self.label_3_2.setGeometry(QtCore.QRect(169, 9, 20, 52)) self.label_3_2.setAlignment(QtCore.Qt.AlignCenter) self.label_3_2.setObjectName("label_3_2") self.gridlayout.addWidget(self.label_3_2, 0, 4, 1, 1) self.vboxlayout = QtWidgets.QVBoxLayout() self.vboxlayout.setContentsMargins(1, 1, 1, 1) self.vboxlayout.setSpacing(6) self.vboxlayout.setObjectName("vboxlayout") self.label_2_2_2 = QtWidgets.QLabel(CalculatorForm) self.label_2_2_2.setGeometry(QtCore.QRect(1, 1, 36, 17)) self.label_2_2_2.setObjectName("label_2_2_2") self.vboxlayout.addWidget(self.label_2_2_2) self.outputWidget = QtWidgets.QLabel(CalculatorForm) self.outputWidget.setGeometry(QtCore.QRect(1, 24, 36, 27)) self.outputWidget.setFrameShape(QtWidgets.QFrame.Box) self.outputWidget.setFrameShadow(QtWidgets.QFrame.Sunken) self.outputWidget.setAlignment(QtCore.Qt.AlignAbsolute|QtCore.Qt.AlignBottom|QtCore.Qt.AlignCenter|QtCore.Qt.AlignHCenter|QtCore.Qt.AlignHorizontal_Mask|QtCore.Qt.AlignJustify|QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignRight|QtCore.Qt.AlignTop|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignVertical_Mask) self.outputWidget.setObjectName("outputWidget") self.vboxlayout.addWidget(self.outputWidget) self.gridlayout.addLayout(self.vboxlayout, 0, 5, 1, 1) spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.gridlayout.addItem(spacerItem1, 1, 2, 1, 1) self.vboxlayout1 = QtWidgets.QVBoxLayout() self.vboxlayout1.setContentsMargins(1, 1, 1, 1) self.vboxlayout1.setSpacing(6) self.vboxlayout1.setObjectName("vboxlayout1") self.label_2 = QtWidgets.QLabel(CalculatorForm) self.label_2.setGeometry(QtCore.QRect(1, 1, 46, 19)) self.label_2.setObjectName("label_2") self.vboxlayout1.addWidget(self.label_2) self.inputSpinBox2 = QtWidgets.QSpinBox(CalculatorForm) self.inputSpinBox2.setGeometry(QtCore.QRect(1, 26, 46, 25)) self.inputSpinBox2.setObjectName("inputSpinBox2") self.vboxlayout1.addWidget(self.inputSpinBox2) self.gridlayout.addLayout(self.vboxlayout1, 0, 3, 1, 1) self.label_3 = QtWidgets.QLabel(CalculatorForm) self.label_3.setGeometry(QtCore.QRect(63, 9, 20, 52)) self.label_3.setAlignment(QtCore.Qt.AlignCenter) self.label_3.setObjectName("label_3") self.gridlayout.addWidget(self.label_3, 0, 1, 1, 1) self.vboxlayout2 = QtWidgets.QVBoxLayout() self.vboxlayout2.setContentsMargins(1, 1, 1, 1) self.vboxlayout2.setSpacing(6) self.vboxlayout2.setObjectName("vboxlayout2") self.label = QtWidgets.QLabel(CalculatorForm) self.label.setGeometry(QtCore.QRect(1, 1, 46, 19)) self.label.setObjectName("label") self.vboxlayout2.addWidget(self.label) self.inputSpinBox1 = QtWidgets.QSpinBox(CalculatorForm) self.inputSpinBox1.setGeometry(QtCore.QRect(1, 26, 46, 25)) self.inputSpinBox1.setObjectName("inputSpinBox1") self.vboxlayout2.addWidget(self.inputSpinBox1) self.gridlayout.addLayout(self.vboxlayout2, 0, 0, 1, 1) self.retranslateUi(CalculatorForm) QtCore.QMetaObject.connectSlotsByName(CalculatorForm) def retranslateUi(self, CalculatorForm): _translate = QtCore.QCoreApplication.translate CalculatorForm.setWindowTitle(_translate("CalculatorForm", "Calculator Form")) self.label_3_2.setText(_translate("CalculatorForm", "=")) self.label_2_2_2.setText(_translate("CalculatorForm", "Output")) self.outputWidget.setText(_translate("CalculatorForm", "0")) self.label_2.setText(_translate("CalculatorForm", "Input 2")) self.label_3.setText(_translate("CalculatorForm", "+")) self.label.setText(_translate("CalculatorForm", "Input 1")) PyQt5_gpl-5.10.1/examples/designer/plugins/0000755000076500000240000000000013245231431020576 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/designer/plugins/plugins.py0000755000076500000240000000701213245231431022634 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Riverbank Computing Limited nor the names of ## its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import sys import os from PyQt5.QtCore import QLibraryInfo, QProcess, QProcessEnvironment from PyQt5.QtWidgets import QApplication, QMessageBox app = QApplication(sys.argv) QMessageBox.information(None, "PyQt Designer Plugins", "

    This example will start Qt Designer when you click the OK " "button.

    " "

    Before doing so it sets the PYQTDESIGNERPATH environment " "variable to the python directory that is part of this " "example. This directory contains all the example Python plugin " "modules.

    " "

    It also sets the PYTHONPATH environment variable to the " "widgets directory that is also part of this example. This " "directory contains the Python modules that implement the example " "custom widgets.

    " "

    All of the example custom widgets should then appear in " "Designer's widget box in the PyQt Examples group.

    ") # Tell Qt Designer where it can find the directory containing the plugins and # Python where it can find the widgets. base = os.path.dirname(__file__) env = QProcessEnvironment.systemEnvironment() env.insert('PYQTDESIGNERPATH', os.path.join(base, 'python')) env.insert('PYTHONPATH', os.path.join(base, 'widgets')) # Start Designer. designer = QProcess() designer.setProcessEnvironment(env) designer_bin = QLibraryInfo.location(QLibraryInfo.BinariesPath) if sys.platform == 'darwin': designer_bin += '/Designer.app/Contents/MacOS/Designer' else: designer_bin += '/designer' designer.start(designer_bin) designer.waitForFinished(-1) sys.exit(designer.exitCode()) PyQt5_gpl-5.10.1/examples/designer/plugins/python/0000755000076500000240000000000013245231431022117 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/designer/plugins/python/analogclockplugin.py0000644000076500000240000001273413245231431026174 0ustar philstaff00000000000000#!/usr/bin/env python """ analogclockplugin.py An analog clock custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. 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 St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin from analogclock import PyAnalogClock class PyAnalogClockPlugin(QPyDesignerCustomWidgetPlugin): """PyAnalogClockPlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super(PyAnalogClockPlugin, self).__init__(parent) self.initialized = False # The initialize() and isInitialized() methods allow the plugin to set up # any required resources, ensuring that this can only happen once for each # plugin. def initialize(self, core): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): return PyAnalogClock(parent) # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "PyAnalogClock" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon(_logo_pixmap) # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' \ ' \n' \ ' The current time\n' \ ' \n' \ ' \n' \ ' The analog clock widget displays the current ' \ 'time.\n' \ ' \n' \ '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "analogclock" # Define the image used for the icon. _logo_16x16_xpm = [ "16 16 58 1", "L c #2d2d2d", "N c #4f4f4f", "K c #636363", "J c #666666", "I c #696969", "D c #727272", "F c #737373", "O c #757575", "G c #7f7f7f", "o c #878787", "t c #888888", "Y c #898989", "c c #8a8a8a", "d c #8b8b8b", "H c #8d8d8d", "Q c #8f8f8f", "b c #909090", "M c #959595", "g c #979797", "n c #989898", "x c #999999", "0 c #9a9a9a", "X c #9b9b9b", "a c #9d9d9d", "E c #9e9e9e", "1 c #9f9f9f", "T c #a0a0a0", "v c #a1a1a1", "r c #a2a2a2", "B c #a6a6a6", "R c #a7a7a7", "3 c #a8a8a8", "z c #aaaaaa", "A c #ababab", "m c #acacac", "h c #adadad", "u c #b1b1b1", "q c #b2b2b2", "V c #bfbfbf", "W c #c6c6c6", "w c #c7c7c7", "s c #c8c8c8", "p c #c9c9c9", "k c #cdcdcd", "l c #cfcfcf", "2 c #d3d3d3", "S c #d4d4d4", "C c #d5d5d5", "y c #d8d8d8", "# c #d9d9d9", "e c #dadada", "i c #dbdbdb", "P c #dcdcdc", "U c #dfdfdf", "j c #e1e1e1", "f c #fbfbfb", "Z c #fcfcfc", ". c #ffffff", "....#abcdbae....", "..fghijkljimnf..", ".fopjjjqrjjjstf.", ".gsjjjjuvjjjjwx.", "yvjjjjjzbjjjjjAi", "BCjjjjjaDjjjjjiE", "bjjjjjjEFjjjjjjG", "HjjjjjjIJjjjjjjc", "HjjjjjjnKLtjjjjc", "bjjjjjjj#MNOPjjQ", "RSjjjjjjjj#mdPiE", "#TjjjjjjjjjjUjzP", ".nVjjjjjjjjjjWX.", ".fEVjjjjjjjjWYZ.", "..f012jjjj2EXZ..", "....i3QccQ3P...."] _logo_pixmap = QPixmap(_logo_16x16_xpm) PyQt5_gpl-5.10.1/examples/designer/plugins/python/bubbleswidgetplugin.py0000644000076500000240000001203413245231431026532 0ustar philstaff00000000000000#!/usr/bin/env python """ bubbleswidgetplugin.py A bubbles widget custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. 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 St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin from bubbleswidget import BubblesWidget class BubblesPlugin(QPyDesignerCustomWidgetPlugin): """BubblesPlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super(BubblesPlugin, self).__init__(parent) self.initialized = False # The initialize() and isInitialized() methods allow the plugin to set up # any required resources, ensuring that this can only happen once for each # plugin. def initialize(self, core): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): return BubblesWidget(parent) # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "BubblesWidget" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon(_logo_pixmap) # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' \ ' \n' \ ' Click and drag here\n' \ ' \n' \ ' \n' \ ' The bubbles widget displays colorful ' \ 'bubbles.\n' \ ' \n' \ '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "bubbleswidget" # Define the image used for the icon. _logo_16x16_xpm = [ "16 16 48 1", "O c #d0cfcf", "d c #d0d0d0", "i c #d3d3d2", "q c #d3d3d3", "M c #dad7d7", "g c #dad8d7", "e c #dcd9d9", "f c #e0dcdc", "c c #e0e0e0", "L c #e1dddb", "D c #e1dddc", "E c #e1e0e0", "R c #e1e1e1", "Q c #e2dedc", "p c #e2dedd", "j c #e3dfdf", "b c #e7e7e7", "S c #ebe4e3", "z c #ebe5e3", "r c #ece6e8", "a c #eeeeee", "N c #f6edeb", "I c #f6eeed", "o c #f6eeee", "h c #f7f7f7", "K c #f8efee", "C c #f8efef", "T c #f8f8f8", "y c #f9f1f0", "H c #f9f1f1", "n c #f9f1f2", "m c #f9f1f3", "k c #f9f2f4", "x c #faf3f5", "l c #faf3f6", "w c #faf3f7", "G c #faf3f8", "v c #fbf5fa", "s c #fbf5fb", "u c #fbf5fc", "t c #fbf5fd", "# c #fbfbfb", "J c #fcf6fe", "B c #fcf7fe", "P c #fcfcfc", "F c #fdf8ff", "A c #fefbff", ". c #ffffff", ".....#abba#.....", "...#cdeffgdc#...", "..hijkllmnopqh..", ".#irstuvwxnyzq#.", ".cjs.ABuvwknCDE.", "#dktAAFtsGlmHId#", "aeluBFJusGlmHKga", "bflvutusvGlmHKLb", "bfmwvssvGwxmHKLb", "agnxwGGGwlmnyKMa", "#donklllxmnHCNOP", ".cpynmmmmnHCKQR.", ".#qzCHHHHyCKSqP.", "..hqDIKKKKNQqT..", "...#EdgLLMORP...", ".....#abbaP....."] _logo_pixmap = QPixmap(_logo_16x16_xpm) PyQt5_gpl-5.10.1/examples/designer/plugins/python/counterlabelplugin.py0000644000076500000240000000664613245231431026403 0ustar philstaff00000000000000#!/usr/bin/env python """ counterlabelplugin.py A counter label custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. 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 St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt5.QtGui import QIcon from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin from counterlabel import CounterLabel class CounterLabelPlugin(QPyDesignerCustomWidgetPlugin): """CounterLabelPlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super(CounterLabelPlugin, self).__init__(parent) self.initialized = False def initialize(self, formEditor): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): widget = CounterLabel(parent) widget.setValue(1) return widget # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "CounterLabel" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon() # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "counterlabel" PyQt5_gpl-5.10.1/examples/designer/plugins/python/datetimeeditplugin.py0000644000076500000240000001054113245231431026353 0ustar philstaff00000000000000#============================================================================# # Designer plugins for PyDateEdit and PyDateTimeEdit # #----------------------------------------------------------------------------# # Copyright (c) 2008 by Denviso GmbH, # # # # All Rights Reserved # # # # Permission to use, copy, modify, and distribute this software and its # # documentation for any purpose and without fee is hereby granted, # # provided that the above copyright notice appear in all copies and that # # both that copyright notice and this permission notice appear in # # supporting documentation. # # # # DENVISO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS # # SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY # # AND FITNESS, IN NO EVENT SHALL DENVISO BE LIABLE FOR ANY # # SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, # # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER # # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE # # OR PERFORMANCE OF THIS SOFTWARE. # #----------------------------------------------------------------------------# from PyQt5.QtGui import QIcon from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin from datetimeedit import PyDateEdit, PyDateTimeEdit #============================================================================# # The group name in designer widgetbox # #----------------------------------------------------------------------------# DESIGNER_GROUP_NAME = "PyQt Examples" #============================================================================# # Plugin for PyDateEdit # #----------------------------------------------------------------------------# class PyDateEditPlugin(QPyDesignerCustomWidgetPlugin): def __init__(self, parent=None): super(PyDateEditPlugin, self).__init__(parent) self.initialized = False def initialize(self, formEditor): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized def isContainer(self): return False def icon(self): return QIcon() def domXml(self): return '\n\n' def group(self): return DESIGNER_GROUP_NAME def includeFile(self): return "datetimeedit" def name(self): return "PyDateEdit" def toolTip(self): return "" def whatsThis(self): return "" def createWidget(self, parent): return PyDateEdit(parent) #============================================================================# # Plugin for PyDateTimeEdit # #----------------------------------------------------------------------------# class PyDateTimeEditPlugin(QPyDesignerCustomWidgetPlugin): def __init__(self, parent=None): super(PyDateTimeEditPlugin, self).__init__(parent) self.initialized = False def initialize(self, formEditor): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized def isContainer(self): return False def icon(self): return QIcon() def domXml(self): return '\n\n' def group(self): return DESIGNER_GROUP_NAME def includeFile(self): return "datetimeedit" def name(self): return "PyDateTimeEdit" def toolTip(self): return "" def whatsThis(self): return "" def createWidget(self, parent): return PyDateTimeEdit(parent) PyQt5_gpl-5.10.1/examples/designer/plugins/python/helloglwidgetplugin.py0000644000076500000240000000703613245231431026550 0ustar philstaff00000000000000#!/usr/bin/env python """ helloglwidgetplugin.py A simple OpenGL custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. 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 St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt5.QtGui import QIcon from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin from helloglwidget import HelloGLWidget class HelloGLWidgetPlugin(QPyDesignerCustomWidgetPlugin): """HelloGLWidgetPlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super(HelloGLWidgetPlugin, self).__init__(parent) self.initialized = False # The initialize() and isInitialized() methods allow the plugin to set up # any required resources, ensuring that this can only happen once for each # plugin. def initialize(self, core): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): return HelloGLWidget(parent) # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "HelloGLWidget" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon() # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "helloglwidget" PyQt5_gpl-5.10.1/examples/designer/plugins/python/multipagewidgetplugin.py0000644000076500000240000001214113245231431027102 0ustar philstaff00000000000000#============================================================================# # PyQt5 port of the designer/containerextension example from Qt v4.x # #----------------------------------------------------------------------------# import sip from PyQt5.QtGui import QIcon from PyQt5.QtDesigner import (QDesignerFormWindowInterface, QExtensionFactory, QPyDesignerContainerExtension, QPyDesignerCustomWidgetPlugin, QPyDesignerPropertySheetExtension) from multipagewidget import PyMultiPageWidget Q_TYPEID = { 'QDesignerContainerExtension': 'org.qt-project.Qt.Designer.Container', 'QDesignerPropertySheetExtension': 'org.qt-project.Qt.Designer.PropertySheet' } #============================================================================# # ContainerExtension # #----------------------------------------------------------------------------# class MultiPageWidgetContainerExtension(QPyDesignerContainerExtension): def __init__(self, widget, parent=None): super(MultiPageWidgetContainerExtension, self).__init__(parent) self._widget = widget def addWidget(self, widget): self._widget.addPage(widget) def count(self): return self._widget.count() def currentIndex(self): return self._widget.getCurrentIndex() def insertWidget(self, index, widget): self._widget.insertPage(index, widget) def remove(self, index): self._widget.removePage(index) def setCurrentIndex(self, index): self._widget.setCurrentIndex(index) def widget(self, index): return self._widget.widget(index) #============================================================================# # ExtensionFactory # #----------------------------------------------------------------------------# class MultiPageWidgetExtensionFactory(QExtensionFactory): def __init__(self, parent=None): super(MultiPageWidgetExtensionFactory, self).__init__(parent) def createExtension(self, obj, iid, parent): if iid != Q_TYPEID['QDesignerContainerExtension']: return None if isinstance(obj, PyMultiPageWidget): return MultiPageWidgetContainerExtension(obj, parent) return None #============================================================================# # CustomWidgetPlugin # #----------------------------------------------------------------------------# class MultiPageWidgetPlugin(QPyDesignerCustomWidgetPlugin): def __init__(self, parent=None): super(MultiPageWidgetPlugin, self).__init__(parent) self.initialized = False def initialize(self, formEditor): if self.initialized: return manager = formEditor.extensionManager() if manager: self.factory = MultiPageWidgetExtensionFactory(manager) manager.registerExtensions(self.factory, Q_TYPEID['QDesignerContainerExtension']) self.initialized = True def isInitialized(self): return self.initialized def createWidget(self, parent): widget = PyMultiPageWidget(parent) widget.currentIndexChanged.connect(self.currentIndexChanged) widget.pageTitleChanged.connect(self.pageTitleChanged) return widget def name(self): return "PyMultiPageWidget" def group(self): return "PyQt Examples" def icon(self): return QIcon() def toolTip(self): return "" def whatsThis(self): return "" def isContainer(self): return True def domXml(self): return ('' ' ' '') def includeFile(self): return "multipagewidget" def currentIndexChanged(self, index): widget = self.sender() if widget and isinstance(widget, PyMultiPageWidget): form = QDesignerFormWindowInterface.findFormWindow(widget) if form: form.emitSelectionChanged() def pageTitleChanged(self, title): widget = self.sender() if widget and isinstance(widget, PyMultiPageWidget): page = widget.widget(widget.getCurrentIndex()) form = QDesignerFormWindowInterface.findFormWindow(widget) if form: editor = form.core() manager = editor.extensionManager() sheet = manager.extension(page, Q_TYPEID['QDesignerPropertySheetExtension']) # This explicit cast is necessary here sheet = sip.cast(sheet, QPyDesignerPropertySheetExtension) propertyIndex = sheet.indexOf('windowTitle') sheet.setChanged(propertyIndex, True) #============================================================================# # EOF # #----------------------------------------------------------------------------# PyQt5_gpl-5.10.1/examples/designer/plugins/python/polygonwidgetplugin.py0000644000076500000240000001123213245231431026602 0ustar philstaff00000000000000#!/usr/bin/env python """ polygonwidgetplugin.py A polygon widget custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. 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 St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin from polygonwidget import PolygonWidget class PolygonWidgetPlugin(QPyDesignerCustomWidgetPlugin): """PolygonWidgetPlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super(PolygonWidgetPlugin, self).__init__(parent) self.initialized = False # The initialize() and isInitialized() methods allow the plugin to set up # any required resources, ensuring that this can only happen once for each # plugin. def initialize(self, core): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): return PolygonWidget(parent) # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "PolygonWidget" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon(_logo_pixmap) # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "polygonwidget" # Define the image used for the icon. _logo_16x16_xpm = [ "16 16 46 1", ". c #a5a5dc", "l c #a69fd6", "k c #a7a5da", "h c #a7a6dc", "a c #a7a7de", "Q c #a8a5da", "s c #a9a7d7", "R c #a9a9e0", "z c #abaad4", "E c #afafda", "M c #afafdb", "K c #b0a8e2", "o c #b1afe4", "p c #b2b2d7", "# c #b2b2ed", "i c #b39eb6", "F c #b3b3e1", "e c #b4b4ef", "t c #b58bab", "d c #b6b6f2", "n c #b798b8", "P c #b798b9", "c c #b8b6f2", "D c #b8b89c", "m c #b9648d", "J c #ba84b0", "A c #bdbdfb", "f c #bfbffe", "g c #c06996", "b c #c0c0ff", "B c #cbb889", "L c #cbb989", "O c #cfcf87", "I c #d09585", "w c #d0cf86", "x c #dede81", "G c #e8e87c", "q c #edde7b", "N c #f1e07b", "v c #f2e07b", "H c #f6e57c", "j c #fb917e", "u c #ffb580", "r c #ffda80", "C c #fffe80", "y c #ffff80", ".##############a", "#bbbbbbbbcdbbbbe", "#bbbbbbbfghbbbbe", "#bbbbbbbijkbbbbe", "#blmnobpqrsbbbbe", "#bbtuvwxyyzbbbbe", "#bbABCyyyyDEfbbe", "#bbbFGyyyyyHIJKe", "#bbbFGyyyyyHIJKe", "#bbALCyyyyDMfbbe", "#bbtuNOxyyzbbbbe", "#blmPobpqrsbbbbe", "#bbbbbbbijQbbbbe", "#bbbbbbbfghbbbbe", "#bbbbbbbbcdbbbbe", "aeeeeeeeeeeeeeeR"] _logo_pixmap = QPixmap(_logo_16x16_xpm) PyQt5_gpl-5.10.1/examples/designer/plugins/python/pydemoplugin.py0000644000076500000240000001015213245231431025204 0ustar philstaff00000000000000# A demonstration custom widget plugin for Qt Designer. # # Copyright (c) 2013 Riverbank Computing Limited from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin from pydemo import PyDemo # This class implements the interface expected by Qt Designer to access the # custom widget. See the description of the QDesignerCustomWidgetInterface # class for full details. class PyDemoPlugin(QPyDesignerCustomWidgetPlugin): # Initialise the instance. def __init__(self, parent=None): super(PyDemoPlugin, self).__init__(parent) self._initialized = False # Initialise the custom widget for use with the specified formEditor # interface. def initialize(self, formEditor): if self._initialized: return self._initialized = True # Return True if the custom widget has been intialised. def isInitialized(self): return self._initialized # Return a new instance of the custom widget with the given parent. def createWidget(self, parent): return PyDemo(parent) # Return the name of the class that implements the custom widget. def name(self): return "PyDemo" # Return the name of the group to which the custom widget belongs. A new # group will be created if it doesn't already exist. def group(self): return "PyQt Examples" # Return the icon used to represent the custom widget in Designer's widget # box. def icon(self): return QIcon(_logo_pixmap) # Return a short description of the custom widget used by Designer in a # tool tip. def toolTip(self): return "PyQt demonstration widget" # Return a full description of the custom widget used by Designer in # "What's This?" help for the widget. def whatsThis(self): return "PyDemo is a demonstration custom widget written in Python " \ "using PyQt." # Return True if the custom widget acts as a container for other widgets. def isContainer(self): return False # Return an XML fragment that allows the default values of the custom # widget's properties to be overridden. def domXml(self): return '\n' \ ' \n' \ ' PyQt demonstration widget\n' \ ' \n' \ ' \n' \ ' PyDemo is a demonstration custom widget written ' \ 'in Python using PyQt.\n' \ ' \n' \ '\n' # Return the name of the module containing the class that implements the # custom widget. It may include a module path. def includeFile(self): return "pydemo" # Define the image used for the icon. _logo_16x16_xpm = [ "16 16 61 1", "6 c #5bbd7c", "a c #7aaada", "h c #7eaddb", "n c #7faddb", "E c #82afdc", "x c #83b0dd", "C c #84b0dd", "z c #84b1dd", "B c #85b1dd", "u c #87b2de", "U c #9ec1e4", "Z c #9fc1e4", "H c #a1c3e5", "Y c #a5c5e4", "V c #a6c6e4", "P c #afcbe2", "S c #afcbe3", "O c #b1cde9", "T c #b2cee9", "t c #b4cee3", "r c #b5cee3", "q c #c2d8ee", "0 c #c7dbef", "f c #cedddb", "b c #cfdddb", "1 c #d0e1f2", "J c #d8e2d2", "I c #d9e2d2", "# c #dfeaf6", "g c #e3edf7", "K c #ecf2f9", "N c #ecf3f9", "o c #eeecbb", "i c #f2edb2", "l c #f2edb3", "w c #f6eea6", "v c #f7eea6", "W c #fcee8c", "m c #fcfdfe", "L c #fdec73", "k c #fedd00", "e c #fede06", "p c #fede07", "j c #fee013", "X c #fee015", "s c #fee223", "d c #fee32c", "A c #fee749", "Q c #fee850", "R c #fee851", "D c #fee854", "y c #feea65", "M c #feec74", "c c #feed7c", "F c #feee85", "G c #feee86", "5 c #fef095", "4 c #fef195", "3 c #fef6bb", "2 c #fefdf5", ". c #fefefe", "..#abcdeedcfa#..", ".ghijkkkkkkjlhg.", "mnopkkkkkkkkponm", "qrskkkkkkkkkkstq", "uvkkkkkkkkkkkkwu", "xykkkkkkkkkkkkyx", "zAkkkkkkkkkkkkAB", "CDkkkkkkkkkkkkDC", "EFkkkkkkkkkkkkGE", "HIekkkkkkkkkkeJH", "KBLkkkkkkkkkkMBN", ".OPQkkkkkkkkRST.", "..UVWXkkkkXWYZ..", "...0123453210...", "6666666666666666", "BBBBBBBBBBBBBBBB"] _logo_pixmap = QPixmap(_logo_16x16_xpm) PyQt5_gpl-5.10.1/examples/designer/plugins/python/pythonconsoleplugin.py0000644000076500000240000001106413245231431026616 0ustar philstaff00000000000000#!/usr/bin/env python """ pythonconsoleplugin.py A Python console custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. 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 St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtDesigner import QPyDesignerCustomWidgetPlugin from pythonconsolewidget import PythonConsoleWidget class PythonConsolePlugin(QPyDesignerCustomWidgetPlugin): """PythonConsolePlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super(PythonConsolePlugin, self).__init__(parent) self.initialized = False # The initialize() and isInitialized() methods allow the plugin to set up # any required resources, ensuring that this can only happen once for each # plugin. def initialize(self, core): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): return PythonConsoleWidget(parent) # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "PythonConsoleWidget" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon(_logo_pixmap) # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' \ ' \n' \ ' Python console\n' \ ' \n' \ ' \n' \ ' The Python console widget can be used to explore ' \ 'Qt Designer.\n' \ ' \n' \ '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "pythonconsolewidget" # Define the image used for the icon. _logo_16x16_xpm = [ "16 16 6 1", " c None", ". c #FFFFFF", "a c #000000", "b c #808080", "c c #C0C0C0", "d c #404040", "................", "................", "................", ".aa..aa..aa.....", "..aa..aa..aa....", "...aa..aa..aa...", "....aa..aa..aa..", ".....aa..aa..aa.", ".....aa..aa..aa.", "....aa..aa..aa..", "...aa..aa..aa...", "..aa..aa..aa....", ".aa..aa..aa.....", "................", "................", "................"] _logo_pixmap = QPixmap(_logo_16x16_xpm) PyQt5_gpl-5.10.1/examples/designer/plugins/widgets/0000755000076500000240000000000013245231431022244 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/designer/plugins/widgets/analogclock.py0000755000076500000240000001417413245231431025105 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (pyqtProperty, pyqtSignal, pyqtSlot, QPoint, QSize, Qt, QTime, QTimer) from PyQt5.QtGui import QBrush, QColor, QPainter, QPen, QPolygon from PyQt5.QtWidgets import QApplication, QWidget class PyAnalogClock(QWidget): """PyAnalogClock(QWidget) Provides an analog clock custom widget with signals, slots and properties. The implementation is based on the Analog Clock example provided with both Qt and PyQt. """ # Emitted when the clock's time changes. timeChanged = pyqtSignal(QTime) # Emitted when the clock's time zone changes. timeZoneChanged = pyqtSignal(int) def __init__(self, parent=None): super(PyAnalogClock, self).__init__(parent) self.timeZoneOffset = 0 timer = QTimer(self) timer.timeout.connect(self.update) timer.timeout.connect(self.updateTime) timer.start(1000) self.setWindowTitle("Analog Clock") self.resize(200, 200) self.hourHand = QPolygon([ QPoint(7, 8), QPoint(-7, 8), QPoint(0, -40) ]) self.minuteHand = QPolygon([ QPoint(7, 8), QPoint(-7, 8), QPoint(0, -70) ]) self.hourColor = QColor(0, 127, 0) self.minuteColor = QColor(0, 127, 127, 191) def paintEvent(self, event): side = min(self.width(), self.height()) time = QTime.currentTime() time = time.addSecs(self.timeZoneOffset * 3600) painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing) painter.translate(self.width() / 2, self.height() / 2) painter.scale(side / 200.0, side / 200.0) painter.setPen(Qt.NoPen) painter.setBrush(QBrush(self.hourColor)) painter.save() painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0))) painter.drawConvexPolygon(self.hourHand) painter.restore() painter.setPen(self.hourColor) for i in range(0, 12): painter.drawLine(88, 0, 96, 0) painter.rotate(30.0) painter.setPen(Qt.NoPen) painter.setBrush(QBrush(self.minuteColor)) painter.save() painter.rotate(6.0 * (time.minute() + time.second() / 60.0)) painter.drawConvexPolygon(self.minuteHand) painter.restore() painter.setPen(QPen(self.minuteColor)) for j in range(0, 60): if (j % 5) != 0: painter.drawLine(92, 0, 96, 0) painter.rotate(6.0) painter.end() def minimumSizeHint(self): return QSize(50, 50) def sizeHint(self): return QSize(100, 100) def updateTime(self): self.timeChanged.emit(QTime.currentTime()) # The timeZone property is implemented using the getTimeZone() getter # method, the setTimeZone() setter method, and the resetTimeZone() method. # The getter just returns the internal time zone value. def getTimeZone(self): return self.timeZoneOffset # The setTimeZone() method is also defined to be a slot. The @pyqtSlot # decorator is used to tell PyQt which argument type the method expects, # and is especially useful when you want to define slots with the same # name that accept different argument types. @pyqtSlot(int) def setTimeZone(self, value): self.timeZoneOffset = value self.timeZoneChanged.emit(value) self.update() # Qt's property system supports properties that can be reset to their # original values. This method enables the timeZone property to be reset. def resetTimeZone(self): self.timeZoneOffset = 0 self.timeZoneChanged.emit(0) self.update() # Qt-style properties are defined differently to Python's properties. # To declare a property, we call pyqtProperty() to specify the type and, # in this case, getter, setter and resetter methods. timeZone = pyqtProperty(int, getTimeZone, setTimeZone, resetTimeZone) if __name__ == "__main__": import sys app = QApplication(sys.argv) clock = PyAnalogClock() clock.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/designer/plugins/widgets/bubbleswidget.py0000755000076500000240000002417413245231431025453 0ustar philstaff00000000000000#!/usr/bin/env python """ bubbleswidget.py A PyQt custom widget example for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. 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 St, Fifth Floor, Boston, MA 02110-1301 USA """ import random from PyQt5.QtCore import (pyqtProperty, pyqtSignal, pyqtSlot, QPointF, QRectF, QSize, QSizeF, Qt, QTimer) from PyQt5.QtGui import QBrush, QColor, QPainter, QPen, QRadialGradient from PyQt5.QtWidgets import QApplication, QWidget class BaseClass(QWidget): """BaseClass(QWidget) Provides a base custom widget class to show that properties implemented in Python can be inherited and shown as belonging to distinct classes in Qt Designer's Property Editor. """ def __init__(self, parent=None): super(BaseClass, self).__init__(parent) self.resetAuthor() # Define getter, setter and resetter methods for the author property. def getAuthor(self): return self._author def setAuthor(self, name): self._author = name def resetAuthor(self): self._author = "David Boddie" author = pyqtProperty(str, getAuthor, setAuthor, resetAuthor) class Bubble: """Bubble Provides a class to represent individual bubbles in a BubblesWidget. Each Bubble instance can render itself onto a paint device using a QPainter passed to its drawBubble() method. """ def __init__(self, position, radius, speed, innerColor, outerColor): self.position = position self.radius = radius self.speed = speed self.innerColor = innerColor self.outerColor = outerColor self.updateBrush() def updateBrush(self): gradient = QRadialGradient( QPointF(self.radius, self.radius), self.radius, QPointF(self.radius*0.5, self.radius*0.5)) gradient.setColorAt(0, QColor(255, 255, 255, 255)) gradient.setColorAt(0.25, self.innerColor) gradient.setColorAt(1, self.outerColor) self.brush = QBrush(gradient) def drawBubble(self, painter): painter.save() painter.translate(self.position.x() - self.radius, self.position.y() - self.radius) painter.setBrush(self.brush) painter.drawEllipse(0.0, 0.0, 2*self.radius, 2*self.radius) painter.restore() class BubblesWidget(BaseClass): """BubblesWidget(BaseClass) Provides a custom widget that shows a number of rising bubbles. Various properties are defined so that the user can customize the appearance of the widget, and change the number and behaviour of the bubbles shown. """ # We define two signals that are used to indicate changes to the status # of the widget. bubbleLeft = pyqtSignal() bubblesRemaining = pyqtSignal(int) def __init__(self, parent=None): super(BubblesWidget, self).__init__(parent) self.pen = QPen(QColor("#cccccc")) self.bubbles = [] self.backgroundColor1 = self.randomColor() self.backgroundColor2 = self.randomColor().darker(150) self.newBubble = None random.seed() self.animation_timer = QTimer(self) self.animation_timer.setSingleShot(False) self.animation_timer.timeout.connect(self.animate) self.animation_timer.start(25) self.bubbleTimer = QTimer() self.bubbleTimer.setSingleShot(False) self.bubbleTimer.timeout.connect(self.expandBubble) self.setMouseTracking(True) self.setMinimumSize(QSize(200, 200)) self.setWindowTitle("Bubble Maker") def paintEvent(self, event): background = QRadialGradient(QPointF(self.rect().topLeft()), 500, QPointF(self.rect().bottomRight())) background.setColorAt(0, self.backgroundColor1) background.setColorAt(1, self.backgroundColor2) painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing) painter.fillRect(event.rect(), QBrush(background)) painter.setPen(self.pen) for bubble in self.bubbles: if QRectF(bubble.position - QPointF(bubble.radius, bubble.radius), QSizeF(2*bubble.radius, 2*bubble.radius)).intersects(QRectF(event.rect())): bubble.drawBubble(painter) if self.newBubble: self.newBubble.drawBubble(painter) painter.end() def mousePressEvent(self, event): if event.button() == Qt.LeftButton and self.newBubble is None: self.newBubble = Bubble(QPointF(event.pos()), 4.0, 1.0 + random.random() * 7, self.randomColor(), self.randomColor()) self.bubbleTimer.start(50) event.accept() def mouseMoveEvent(self, event): if self.newBubble: self.update( QRectF(self.newBubble.position - \ QPointF(self.newBubble.radius + 1, self.newBubble.radius + 1), QSizeF(2*self.newBubble.radius + 2, 2*self.newBubble.radius + 2)).toRect() ) self.newBubble.position = QPointF(event.pos()) self.update( QRectF(self.newBubble.position - \ QPointF(self.newBubble.radius + 1, self.newBubble.radius + 1), QSizeF(2*self.newBubble.radius + 2, 2*self.newBubble.radius + 2)).toRect() ) event.accept() def mouseReleaseEvent(self, event): if self.newBubble: self.bubbles.append(self.newBubble) self.newBubble = None self.bubbleTimer.stop() self.bubblesRemaining.emit(len(self.bubbles)) event.accept() def expandBubble(self): if self.newBubble: self.newBubble.radius = min(self.newBubble.radius + 4.0, self.width()/8.0, self.height()/8.0) self.update( QRectF(self.newBubble.position - \ QPointF(self.newBubble.radius + 1, self.newBubble.radius + 1), QSizeF(2*self.newBubble.radius + 2, 2*self.newBubble.radius + 2)).toRect() ) self.newBubble.updateBrush() def randomColor(self): red = 205 + random.random() * 50 green = 205 + random.random() * 50 blue = 205 + random.random() * 50 alpha = 91 + random.random() * 100 return QColor(red, green, blue, alpha) def animate(self): bubbles = [] left = False for bubble in self.bubbles: bubble.position = bubble.position + QPointF(0, -bubble.speed) self.update( QRectF(bubble.position - QPointF(bubble.radius + 1, bubble.radius + 1), QSizeF(2*bubble.radius + 2, 2*bubble.radius + 2 + bubble.speed)).toRect()) if bubble.position.y() + bubble.radius > 0: bubbles.append(bubble) else: self.bubbleLeft.emit() left = True if self.newBubble: self.update( QRectF(self.newBubble.position - QPointF( self.newBubble.radius + 1, self.newBubble.radius + 1), QSizeF(2*self.newBubble.radius + 2, 2*self.newBubble.radius + 2)).toRect()) self.bubbles = bubbles if left: self.bubblesRemaining.emit(len(self.bubbles)) def sizeHint(self): return QSize(200, 200) # We provide getter and setter methods for the numberOfBubbles property. def getBubbles(self): return len(self.bubbles) # The setBubbles() method can also be used as a slot. @pyqtSlot(int) def setBubbles(self, value): value = max(0, value) while len(self.bubbles) < value: newBubble = Bubble(QPointF(random.random() * self.width(), random.random() * self.height()), 4.0 + random.random() * 20, 1.0 + random.random() * 7, self.randomColor(), self.randomColor()) newBubble.updateBrush() self.bubbles.append(newBubble) self.bubbles = self.bubbles[:value] self.bubblesRemaining.emit(value) self.update() numberOfBubbles = pyqtProperty(int, getBubbles, setBubbles) # We provide getter and setter methods for the color1 and color2 # properties. The red, green and blue components for the QColor # values stored in these properties can be edited individually in # Qt Designer. def getColor1(self): return self.backgroundColor1 def setColor1(self, value): self.backgroundColor1 = QColor(value) self.update() color1 = pyqtProperty(QColor, getColor1, setColor1) def getColor2(self): return self.backgroundColor2 def setColor2(self, value): self.backgroundColor2 = QColor(value) self.update() color2 = pyqtProperty(QColor, getColor2, setColor2) # The stop() and start() slots provide simple control over the animation # of the bubbles in the widget. @pyqtSlot() def stop(self): self.animation_timer.stop() @pyqtSlot() def start(self): self.animation_timer.start(25) if __name__ == "__main__": import sys app = QApplication(sys.argv) widget = BubblesWidget() widget.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/designer/plugins/widgets/counterlabel.py0000755000076500000240000001207413245231431025304 0ustar philstaff00000000000000#!/usr/bin/env python """ counterlabel.py A PyQt custom widget example for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. 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 St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QRectF, QSize, Qt from PyQt5.QtGui import QFont, QFontMetricsF, QPainter from PyQt5.QtWidgets import QApplication, QWidget class CounterLabel(QWidget): """CounterLabel(QWidget) Provides a custom label widget to be used as a counter, with signals similar to those provided by QAbstractSlider subclasses and properties similar to those provided by QLabel. """ # We define two signals that are used to indicate changes to the status # of the widget. valueChanged = pyqtSignal((int, ), (str, )) def __init__(self, parent=None): super(CounterLabel, self).__init__(parent) self.setAutoFillBackground(False) self._font = QFont() self._minimum = 1 self._maximum = 1 self._value = 1 self._offset = 0 self.rescale() self.reposition() def paintEvent(self, event): p = QPainter() p.begin(self) p.setRenderHint(QPainter.Antialiasing) p.setFont(self._font) p.translate(self.width()/2.0, self.height()/2.0) p.scale(self._scale, self._scale) p.drawText(self._xpos, self._ypos, str(self._value)) p.end() def sizeHint(self): return QSize(32, 32) def rescale(self): fm = QFontMetricsF(self._font, self) maxRect = fm.boundingRect(QRectF(self.rect()), Qt.AlignCenter, str(self._maximum)) xscale = float(self.width())/maxRect.width() yscale = float(self.height())/maxRect.height() self._scale = min(xscale, yscale) def reposition(self): fm = QFontMetricsF(self._font, self) rect = fm.boundingRect(QRectF(self.rect()), Qt.AlignCenter, str(self._value)) self._xpos = -rect.width()/2.0 self._ypos = rect.height()/2.0 - fm.descent() self.update() # Provide getter and setter methods for the font property. def getFont(self): return self._font def setFont(self, font): self._font = font self.rescale() self.reposition() font = pyqtProperty(QFont, getFont, setFont) # Provide getter and setter methods for the minimum and maximum properties. def getMinimum(self): return self._minimum def setMinimum(self, value): self._minimum = value if self._minimum > self._maximum: self.setMaximum(self._minimum) if self._minimum > self._value: self.setValue(self._minimum) minimum = pyqtProperty(int, getMinimum, setMinimum) def getMaximum(self): return self._maximum def setMaximum(self, value): self._maximum = value self._minimum = min(self._minimum, self._maximum) if self._maximum < self._value: self.setValue(self._maximum) self.rescale() self.reposition() maximum = pyqtProperty(int, getMaximum, setMaximum) # We provide an offset property to allow the value shown to differ from # the internal value held by the widget. def getOffset(self): return self._offset def setOffset(self, value): self._offset = value offset = pyqtProperty(int, getOffset, setOffset) # The value property is implemented using the getValue() and setValue() # methods. def getValue(self): return self._value # The setter method for the value property can also be used as a slot. @pyqtSlot(int) def setValue(self, value): if not self._minimum <= value <= self._maximum: return self._value = value self.valueChanged[int].emit(value + self._offset) self.valueChanged[str].emit(str(value + self._offset)) self.reposition() value = pyqtProperty(int, getValue, setValue) # Like QAbstractSpinBox, we provide stepUp() and stepDown() slots to # enable the value to be incremented and decremented. @pyqtSlot() def stepUp(self): self.setValue(self._value + 1) @pyqtSlot() def stepDown(self): self.setValue(self._value - 1) if __name__ == "__main__": import sys app = QApplication(sys.argv) widget = CounterLabel() widget.setValue(123) widget.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/designer/plugins/widgets/datetimeedit.py0000755000076500000240000003671013245231431025272 0ustar philstaff00000000000000#!/usr/bin/env python #============================================================================# # (Re)Implementation of QDateEdit and QDateTimeEdit. These classes force the # # use of the calendar popup. # #----------------------------------------------------------------------------# # Copyright (c) 2008 by Denviso GmbH, # # # # All Rights Reserved # # # # Permission to use, copy, modify, and distribute this software and its # # documentation for any purpose and without fee is hereby granted, # # provided that the above copyright notice appear in all copies and that # # both that copyright notice and this permission notice appear in # # supporting documentation. # # # # DENVISO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS # # SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY # # AND FITNESS, IN NO EVENT SHALL DENVISO BE LIABLE FOR ANY # # SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, # # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER # # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE # # OR PERFORMANCE OF THIS SOFTWARE. # #----------------------------------------------------------------------------# from PyQt5.QtCore import pyqtProperty, Qt from PyQt5.QtWidgets import (QApplication, QCalendarWidget, QDateEdit, QDateTimeEdit, QHBoxLayout, QWidget) #============================================================================# # PyDateEdit # #----------------------------------------------------------------------------# class PyDateEdit(QDateEdit): # # Initialize base class # Force use of the calendar popup # Set default values for calendar properties # def __init__(self, *args): super(PyDateEdit, self).__init__(*args) self.setCalendarPopup(True) self.__cw = None self.__firstDayOfWeek = Qt.Monday self.__gridVisible = False self.__horizontalHeaderFormat = QCalendarWidget.ShortDayNames self.__verticalHeaderFormat = QCalendarWidget.ISOWeekNumbers self.__navigationBarVisible = True # # Call event handler of base class # Get the calendar widget, if not already done # Set the calendar properties # def mousePressEvent(self, event): super(PyDateEdit, self).mousePressEvent(event) if not self.__cw: self.__cw = self.findChild(QCalendarWidget) if self.__cw: self.__cw.setFirstDayOfWeek(self.__firstDayOfWeek) self.__cw.setGridVisible(self.__gridVisible) self.__cw.setHorizontalHeaderFormat(self.__horizontalHeaderFormat) self.__cw.setVerticalHeaderFormat(self.__verticalHeaderFormat) self.__cw.setNavigationBarVisible(self.__navigationBarVisible) # # Make sure, the calendarPopup property is invisible in Designer # def getCalendarPopup(self): return True calendarPopup = pyqtProperty(bool, fget=getCalendarPopup) # # Property firstDayOfWeek: Qt::DayOfWeek # Get: getFirstDayOfWeek() # Set: setFirstDayOfWeek() # Reset: resetFirstDayOfWeek() # def getFirstDayOfWeek(self): return self.__firstDayOfWeek def setFirstDayOfWeek(self, dayOfWeek): if dayOfWeek != self.__firstDayOfWeek: self.__firstDayOfWeek = dayOfWeek if self.__cw: self.__cw.setFirstDayOfWeek(dayOfWeek) def resetFirstDayOfWeek(self): if self.__firstDayOfWeek != Qt.Monday: self.__firstDayOfWeek = Qt.Monday if self.__cw: self.__cw.setFirstDayOfWeek(Qt.Monday) firstDayOfWeek = pyqtProperty(Qt.DayOfWeek, fget=getFirstDayOfWeek, fset=setFirstDayOfWeek, freset=resetFirstDayOfWeek) # # Property gridVisible: bool # Get: isGridVisible() # Set: setGridVisible() # Reset: resetGridVisible() # def isGridVisible(self): return self.__gridVisible def setGridVisible(self, show): if show != self.__gridVisible: self.__gridVisible = show if self.__cw: self.__cw.setGridVisible(show) def resetGridVisible(self): if self.__gridVisible != False: self.__gridVisible = False if self.__cw: self.__cw.setGridVisible(False) gridVisible = pyqtProperty(bool, fget=isGridVisible, fset=setGridVisible, freset=resetGridVisible) # # Property horizontalHeaderFormat: QCalendarWidget::HorizontalHeaderFormat # Get: getHorizontalHeaderFormat() # Set: setHorizontalHeaderFormat() # Reset: resetHorizontalHeaderFormat() # def getHorizontalHeaderFormat(self): return self.__horizontalHeaderFormat def setHorizontalHeaderFormat(self, format): if format != self.__horizontalHeaderFormat: self.__horizontalHeaderFormat = format if self.__cw: self.__cw.setHorizontalHeaderFormat(format) def resetHorizontalHeaderFormat(self): if self.__horizontalHeaderFormat != QCalendarWidget.ShortDayNames: self.__horizontalHeaderFormat = QCalendarWidget.ShortDayNames if self.__cw: self.__cw.setHorizontalHeaderFormat(QCalendarWidget.ShortDayNames) horizontalHeaderFormat = pyqtProperty(QCalendarWidget.HorizontalHeaderFormat, fget=getHorizontalHeaderFormat, fset=setHorizontalHeaderFormat, freset=resetHorizontalHeaderFormat) # # Property verticalHeaderFormat: QCalendarWidget::VerticalHeaderFormat # Get: getVerticalHeaderFormat() # Set: setVerticalHeaderFormat() # Reset: resetVerticalHeaderFormat() # def getVerticalHeaderFormat(self): return self.__verticalHeaderFormat def setVerticalHeaderFormat(self, format): if format != self.__verticalHeaderFormat: self.__verticalHeaderFormat = format if self.__cw: self.__cw.setVerticalHeaderFormat(format) def resetVerticalHeaderFormat(self): if self.__verticalHeaderFormat != QCalendarWidget.ISOWeekNumbers: self.__verticalHeaderFormat = QCalendarWidget.ISOWeekNumbers if self.__cw: self.__cw.setVerticalHeaderFormat(QCalendarWidget.ISOWeekNumbers) verticalHeaderFormat = pyqtProperty(QCalendarWidget.VerticalHeaderFormat, fget=getVerticalHeaderFormat, fset=setVerticalHeaderFormat, freset=resetVerticalHeaderFormat) # # Property navigationBarVisible: bool # Get: isNavigationBarVisible() # Set: setNavigationBarVisible() # Reset: resetNavigationBarVisible() # def isNavigationBarVisible(self): return self.__navigationBarVisible def setNavigationBarVisible(self, visible): if visible != self.__navigationBarVisible: self.__navigationBarVisible = visible if self.__cw: self.__cw.setNavigationBarVisible(visible) def resetNavigationBarVisible(self): if self.__navigationBarVisible != True: self.__navigationBarVisible = True if self.__cw: self.__cw.setNavigationBarVisible(True) navigationBarVisible = pyqtProperty(bool, fget=isNavigationBarVisible, fset=setNavigationBarVisible, freset=resetNavigationBarVisible) #============================================================================# # PyDateTimeEdit # #----------------------------------------------------------------------------# class PyDateTimeEdit(QDateTimeEdit): # # Initialize base class # Force use of the calendar popup # Set default values for calendar properties # def __init__(self, *args): super(PyDateTimeEdit, self).__init__(*args) self.setCalendarPopup(True) self.__cw = None self.__firstDayOfWeek = Qt.Monday self.__gridVisible = False self.__horizontalHeaderFormat = QCalendarWidget.ShortDayNames self.__verticalHeaderFormat = QCalendarWidget.ISOWeekNumbers self.__navigationBarVisible = True # # Call event handler of base class # Get the calendar widget, if not already done # Set the calendar properties # def mousePressEvent(self, event): super(PyDateTimeEdit, self).mousePressEvent(event) if not self.__cw: self.__cw = self.findChild(QCalendarWidget) if self.__cw: self.__cw.setFirstDayOfWeek(self.__firstDayOfWeek) self.__cw.setGridVisible(self.__gridVisible) self.__cw.setHorizontalHeaderFormat(self.__horizontalHeaderFormat) self.__cw.setVerticalHeaderFormat(self.__verticalHeaderFormat) self.__cw.setNavigationBarVisible(self.__navigationBarVisible) # # Make sure, the calendarPopup property is invisible in Designer # def getCalendarPopup(self): return True calendarPopup = pyqtProperty(bool, fget=getCalendarPopup) # # Property firstDayOfWeek: Qt::DayOfWeek # Get: getFirstDayOfWeek() # Set: setFirstDayOfWeek() # Reset: resetFirstDayOfWeek() # def getFirstDayOfWeek(self): return self.__firstDayOfWeek def setFirstDayOfWeek(self, dayOfWeek): if dayOfWeek != self.__firstDayOfWeek: self.__firstDayOfWeek = dayOfWeek if self.__cw: self.__cw.setFirstDayOfWeek(dayOfWeek) def resetFirstDayOfWeek(self): if self.__firstDayOfWeek != Qt.Monday: self.__firstDayOfWeek = Qt.Monday if self.__cw: self.__cw.setFirstDayOfWeek(Qt.Monday) firstDayOfWeek = pyqtProperty(Qt.DayOfWeek, fget=getFirstDayOfWeek, fset=setFirstDayOfWeek, freset=resetFirstDayOfWeek) # # Property gridVisible: bool # Get: isGridVisible() # Set: setGridVisible() # Reset: resetGridVisible() # def isGridVisible(self): return self.__gridVisible def setGridVisible(self, show): if show != self.__gridVisible: self.__gridVisible = show if self.__cw: self.__cw.setGridVisible(show) def resetGridVisible(self): if self.__gridVisible != False: self.__gridVisible = False if self.__cw: self.__cw.setGridVisible(False) gridVisible = pyqtProperty(bool, fget=isGridVisible, fset=setGridVisible, freset=resetGridVisible) # # Property horizontalHeaderFormat: QCalendarWidget::HorizontalHeaderFormat # Get: getHorizontalHeaderFormat() # Set: setHorizontalHeaderFormat() # Reset: resetHorizontalHeaderFormat() # def getHorizontalHeaderFormat(self): return self.__horizontalHeaderFormat def setHorizontalHeaderFormat(self, format): if format != self.__horizontalHeaderFormat: self.__horizontalHeaderFormat = format if self.__cw: self.__cw.setHorizontalHeaderFormat(format) def resetHorizontalHeaderFormat(self): if self.__horizontalHeaderFormat != QCalendarWidget.ShortDayNames: self.__horizontalHeaderFormat = QCalendarWidget.ShortDayNames if self.__cw: self.__cw.setHorizontalHeaderFormat(QCalendarWidget.ShortDayNames) horizontalHeaderFormat = pyqtProperty(QCalendarWidget.HorizontalHeaderFormat, fget=getHorizontalHeaderFormat, fset=setHorizontalHeaderFormat, freset=resetHorizontalHeaderFormat) # # Property verticalHeaderFormat: QCalendarWidget::VerticalHeaderFormat # Get: getVerticalHeaderFormat() # Set: setVerticalHeaderFormat() # Reset: resetVerticalHeaderFormat() # def getVerticalHeaderFormat(self): return self.__verticalHeaderFormat def setVerticalHeaderFormat(self, format): if format != self.__verticalHeaderFormat: self.__verticalHeaderFormat = format if self.__cw: self.__cw.setVerticalHeaderFormat(format) def resetVerticalHeaderFormat(self): if self.__verticalHeaderFormat != QCalendarWidget.ISOWeekNumbers: self.__verticalHeaderFormat = QCalendarWidget.ISOWeekNumbers if self.__cw: self.__cw.setVerticalHeaderFormat(QCalendarWidget.ISOWeekNumbers) verticalHeaderFormat = pyqtProperty(QCalendarWidget.VerticalHeaderFormat, fget=getVerticalHeaderFormat, fset=setVerticalHeaderFormat, freset=resetVerticalHeaderFormat) # # Property navigationBarVisible: bool # Get: isNavigationBarVisible() # Set: setNavigationBarVisible() # Reset: resetNavigationBarVisible() # def isNavigationBarVisible(self): return self.__navigationBarVisible def setNavigationBarVisible(self, visible): if visible != self.__navigationBarVisible: self.__navigationBarVisible = visible if self.__cw: self.__cw.setNavigationBarVisible(visible) def resetNavigationBarVisible(self): if self.__navigationBarVisible != True: self.__navigationBarVisible = True if self.__cw: self.__cw.setNavigationBarVisible(True) navigationBarVisible = pyqtProperty(bool, fget=isNavigationBarVisible, fset=setNavigationBarVisible, freset=resetNavigationBarVisible) if __name__ == "__main__": import sys app = QApplication(sys.argv) w = QWidget() lay = QHBoxLayout() lay.addWidget(PyDateEdit()) lay.addWidget(PyDateTimeEdit()) w.setLayout(lay) w.show() sys.exit(app.exec_()) #============================================================================# # EOF # #----------------------------------------------------------------------------# PyQt5_gpl-5.10.1/examples/designer/plugins/widgets/helloglwidget.py0000755000076500000240000001774113245231431025465 0ustar philstaff00000000000000#!/usr/bin/env python """ helloglwidget.py A simple OpenGL custom widget for Qt Designer. Copyright (C) 2007 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. 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 St, Fifth Floor, Boston, MA 02110-1301 USA """ import math from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QPoint, QSize, Qt from PyQt5.QtGui import QColor from PyQt5.QtWidgets import QApplication, QOpenGLWidget class HelloGLWidget(QOpenGLWidget): """HelloGLWidget(QOpenGLWidget) Provides a custom widget to display an OpenGL-rendered Qt logo. Various properties and slots are defined so that the user can rotate the logo, and signals are defined to enable other components to react to changes to its orientation. """ # We define three signals that are used to indicate changes to the # rotation of the logo. xRotationChanged = pyqtSignal(int) yRotationChanged = pyqtSignal(int) zRotationChanged = pyqtSignal(int) def __init__(self, parent=None): super(HelloGLWidget, self).__init__(parent) self.object = 0 self.xRot = 0 self.yRot = 0 self.zRot = 0 self.lastPos = QPoint() self.trolltechGreen = QColor.fromCmykF(0.40, 0.0, 1.0, 0.0) self.trolltechPurple = QColor.fromCmykF(0.39, 0.39, 0.0, 0.0) self.setWindowTitle("Hello GL") # The rotation of the logo about the x-axis can be controlled using the # xRotation property, defined using the following getter and setter # methods. def getXRotation(self): return self.xRot # The setXRotation() setter method is also a slot. @pyqtSlot(int) def setXRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.xRot: self.xRot = angle self.xRotationChanged.emit(angle) self.update() xRotation = pyqtProperty(int, getXRotation, setXRotation) # The rotation of the logo about the y-axis can be controlled using the # yRotation property, defined using the following getter and setter # methods. def getYRotation(self): return self.yRot # The setYRotation() setter method is also a slot. @pyqtSlot(int) def setYRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.yRot: self.yRot = angle self.yRotationChanged.emit(angle) self.update() yRotation = pyqtProperty(int, getYRotation, setYRotation) # The rotation of the logo about the z-axis can be controlled using the # zRotation property, defined using the following getter and setter # methods. def getZRotation(self): return self.zRot # The setZRotation() setter method is also a slot. @pyqtSlot(int) def setZRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.zRot: self.zRot = angle self.zRotationChanged.emit(angle) self.update() zRotation = pyqtProperty(int, getZRotation, setZRotation) def minimumSizeHint(self): return QSize(50, 50) def sizeHint(self): return QSize(200, 200) def initializeGL(self): self.gl = self.context().versionFunctions() self.gl.initializeOpenGLFunctions() self.setClearColor(self.trolltechPurple.darker()) self.object = self.makeObject() self.gl.glShadeModel(self.gl.GL_SMOOTH) self.gl.glEnable(self.gl.GL_DEPTH_TEST) self.gl.glEnable(self.gl.GL_CULL_FACE) def paintGL(self): self.gl.glClear(self.gl.GL_COLOR_BUFFER_BIT | self.gl.GL_DEPTH_BUFFER_BIT) self.gl.glLoadIdentity() self.gl.glTranslated(0.0, 0.0, -10.0) self.gl.glRotated(self.xRot / 16.0, 1.0, 0.0, 0.0) self.gl.glRotated(self.yRot / 16.0, 0.0, 1.0, 0.0) self.gl.glRotated(self.zRot / 16.0, 0.0, 0.0, 1.0) self.gl.glCallList(self.object) def resizeGL(self, width, height): side = min(width, height) self.gl.glViewport((width - side) / 2, (height - side) / 2, side, side) self.gl.glMatrixMode(self.gl.GL_PROJECTION) self.gl.glLoadIdentity() self.gl.glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0) self.gl.glMatrixMode(self.gl.GL_MODELVIEW) def mousePressEvent(self, event): self.lastPos = QPoint(event.pos()) def mouseMoveEvent(self, event): dx = event.x() - self.lastPos.x() dy = event.y() - self.lastPos.y() if event.buttons() & Qt.LeftButton: self.setXRotation(self.xRot + 8 * dy) self.setYRotation(self.yRot + 8 * dx) elif event.buttons() & Qt.RightButton: self.setXRotation(self.xRot + 8 * dy) self.setZRotation(self.zRot + 8 * dx) self.lastPos = QPoint(event.pos()) def makeObject(self): genList = self.gl.glGenLists(1) self.gl.glNewList(genList, self.gl.GL_COMPILE) self.gl.glBegin(self.gl.GL_QUADS) x1 = +0.06 y1 = -0.14 x2 = +0.14 y2 = -0.06 x3 = +0.08 y3 = +0.00 x4 = +0.30 y4 = +0.22 self.quad(x1, y1, x2, y2, y2, x2, y1, x1) self.quad(x3, y3, x4, y4, y4, x4, y3, x3) self.extrude(x1, y1, x2, y2) self.extrude(x2, y2, y2, x2) self.extrude(y2, x2, y1, x1) self.extrude(y1, x1, x1, y1) self.extrude(x3, y3, x4, y4) self.extrude(x4, y4, y4, x4) self.extrude(y4, x4, y3, x3) Pi = 3.14159265358979323846 NumSectors = 200 for i in range(NumSectors): angle1 = (i * 2 * Pi) / NumSectors x5 = 0.30 * math.sin(angle1) y5 = 0.30 * math.cos(angle1) x6 = 0.20 * math.sin(angle1) y6 = 0.20 * math.cos(angle1) angle2 = ((i + 1) * 2 * Pi) / NumSectors x7 = 0.20 * math.sin(angle2) y7 = 0.20 * math.cos(angle2) x8 = 0.30 * math.sin(angle2) y8 = 0.30 * math.cos(angle2) self.quad(x5, y5, x6, y6, x7, y7, x8, y8) self.extrude(x6, y6, x7, y7) self.extrude(x8, y8, x5, y5) self.gl.glEnd() self.gl.glEndList() return genList def quad(self, x1, y1, x2, y2, x3, y3, x4, y4): self.setColor(self.trolltechGreen) self.gl.glVertex3d(x1, y1, -0.05) self.gl.glVertex3d(x2, y2, -0.05) self.gl.glVertex3d(x3, y3, -0.05) self.gl.glVertex3d(x4, y4, -0.05) self.gl.glVertex3d(x4, y4, +0.05) self.gl.glVertex3d(x3, y3, +0.05) self.gl.glVertex3d(x2, y2, +0.05) self.gl.glVertex3d(x1, y1, +0.05) def extrude(self, x1, y1, x2, y2): self.setColor(self.trolltechGreen.darker(250 + int(100 * x1))) self.gl.glVertex3d(x1, y1, +0.05) self.gl.glVertex3d(x2, y2, +0.05) self.gl.glVertex3d(x2, y2, -0.05) self.gl.glVertex3d(x1, y1, -0.05) def normalizeAngle(self, angle): while angle < 0: angle += 360 * 16 while angle > 360 * 16: angle -= 360 * 16 return angle def setClearColor(self, c): self.gl.glClearColor(c.redF(), c.greenF(), c.blueF(), c.alphaF()) def setColor(self, c): self.gl.glColor4f(c.redF(), c.greenF(), c.blueF(), c.alphaF()) if __name__ == "__main__": import sys app = QApplication(sys.argv) widget = HelloGLWidget() widget.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/designer/plugins/widgets/multipagewidget.py0000755000076500000240000000770013245231431026020 0ustar philstaff00000000000000#!/usr/bin/env python #============================================================================# # PyQt5 port of the designer/containerextension example from Qt v5.x # #----------------------------------------------------------------------------# from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QSize from PyQt5.QtWidgets import (QApplication, QComboBox, QLabel, QStackedWidget, QVBoxLayout, QWidget) #============================================================================# # Implementation of a MultiPageWidget using a QComboBox and a QStackedWidget # #----------------------------------------------------------------------------# class PyMultiPageWidget(QWidget): currentIndexChanged = pyqtSignal(int) pageTitleChanged = pyqtSignal(str) def __init__(self, parent=None): super(PyMultiPageWidget, self).__init__(parent) self.comboBox = QComboBox() # MAGIC # It is important that the combo box has an object name beginning # with '__qt__passive_', otherwise, it is inactive in the form editor # of the designer and you can't change the current page via the # combo box. # MAGIC self.comboBox.setObjectName('__qt__passive_comboBox') self.stackWidget = QStackedWidget() self.comboBox.activated.connect(self.setCurrentIndex) self.layout = QVBoxLayout() self.layout.addWidget(self.comboBox) self.layout.addWidget(self.stackWidget) self.setLayout(self.layout) def sizeHint(self): return QSize(200, 150) def count(self): return self.stackWidget.count() def widget(self, index): return self.stackWidget.widget(index) @pyqtSlot(QWidget) def addPage(self, page): self.insertPage(self.count(), page) @pyqtSlot(int, QWidget) def insertPage(self, index, page): page.setParent(self.stackWidget) self.stackWidget.insertWidget(index, page) title = page.windowTitle() if title == "": title = "Page %d" % (self.comboBox.count() + 1) page.setWindowTitle(title) self.comboBox.insertItem(index, title) @pyqtSlot(int) def removePage(self, index): widget = self.stackWidget.widget(index) self.stackWidget.removeWidget(widget) self.comboBox.removeItem(index) def getPageTitle(self): cw = self.stackWidget.currentWidget() return cw.windowTitle() if cw is not None else '' @pyqtSlot(str) def setPageTitle(self, newTitle): cw = self.stackWidget.currentWidget() if cw is not None: self.comboBox.setItemText(self.getCurrentIndex(), newTitle) cw.setWindowTitle(newTitle) self.pageTitleChanged.emit(newTitle) def getCurrentIndex(self): return self.stackWidget.currentIndex() @pyqtSlot(int) def setCurrentIndex(self, index): if index != self.getCurrentIndex(): self.stackWidget.setCurrentIndex(index) self.comboBox.setCurrentIndex(index) self.currentIndexChanged.emit(index) pageTitle = pyqtProperty(str, fget=getPageTitle, fset=setPageTitle, stored=False) currentIndex = pyqtProperty(int, fget=getCurrentIndex, fset=setCurrentIndex) #============================================================================# # Main for testing the class # #----------------------------------------------------------------------------# if __name__ == "__main__": import sys app = QApplication(sys.argv) widget = PyMultiPageWidget() widget.addPage(QLabel('This is page #1')) widget.addPage(QLabel('This is page #2')) widget.show() sys.exit(app.exec_()) #============================================================================# # EOF # #----------------------------------------------------------------------------# PyQt5_gpl-5.10.1/examples/designer/plugins/widgets/polygonwidget.py0000755000076500000240000001334313245231431025520 0ustar philstaff00000000000000#!/usr/bin/env python """ polygonwidget.py A PyQt custom widget example for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. 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 St, Fifth Floor, Boston, MA 02110-1301 USA """ import math from PyQt5.QtCore import pyqtProperty, pyqtSlot, QPointF, QSize from PyQt5.QtGui import QBrush, QColor, QPainter, QPainterPath, QRadialGradient from PyQt5.QtWidgets import QApplication, QWidget class PolygonWidget(QWidget): """PolygonWidget(QWidget) Provides a custom widget to display a polygon with properties and slots that can be used to customize its appearance. """ def __init__(self, parent=None): super(PolygonWidget, self).__init__(parent) self._sides = 5 self._innerRadius = 20 self._outerRadius = 50 self._angle = 0 self.createPath() self._innerColor = QColor(255, 255, 128) self._outerColor = QColor(255, 0, 128) self.createGradient() def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing) painter.setBrush(QBrush(QColor(192, 192, 255))) painter.drawRect(event.rect()) painter.translate(self.width()/2.0, self.height()/2.0) painter.rotate(self._angle) painter.setBrush(QBrush(self.gradient)) painter.drawPath(self.path) painter.end() def sizeHint(self): return QSize(2*self._outerRadius + 20, 2*self._outerRadius + 20) def createPath(self): self.path = QPainterPath() angle = 2*math.pi/self._sides self.path.moveTo(self._outerRadius, 0) for step in range(1, self._sides + 1): self.path.lineTo( self._innerRadius * math.cos((step - 0.5) * angle), self._innerRadius * math.sin((step - 0.5) * angle) ) self.path.lineTo( self._outerRadius * math.cos(step * angle), self._outerRadius * math.sin(step * angle) ) self.path.closeSubpath() def createGradient(self): center = QPointF(0, 0) self.gradient = QRadialGradient(center, self._outerRadius, center) self.gradient.setColorAt(0.5, QColor(self._innerColor)) self.gradient.setColorAt(1.0, QColor(self._outerColor)) # The angle property is implemented using the getAngle() and setAngle() # methods. def getAngle(self): return self._angle # The setAngle() setter method is also a slot. @pyqtSlot(int) def setAngle(self, angle): self._angle = min(max(0, angle), 360) self.update() angle = pyqtProperty(int, getAngle, setAngle) # The innerRadius property is implemented using the getInnerRadius() and # setInnerRadius() methods. def getInnerRadius(self): return self._innerRadius # The setInnerRadius() setter method is also a slot. @pyqtSlot(int) def setInnerRadius(self, radius): self._innerRadius = radius self.createPath() self.createGradient() self.update() innerRadius = pyqtProperty(int, getInnerRadius, setInnerRadius) # The outerRadius property is implemented using the getOuterRadius() and # setOuterRadius() methods. def getOuterRadius(self): return self._outerRadius # The setOuterRadius() setter method is also a slot. @pyqtSlot(int) def setOuterRadius(self, radius): self._outerRadius = radius self.createPath() self.createGradient() self.update() outerRadius = pyqtProperty(int, getOuterRadius, setOuterRadius) # The numberOfSides property is implemented using the getNumberOfSides() # and setNumberOfSides() methods. def getNumberOfSides(self): return self._sides # The setNumberOfSides() setter method is also a slot. @pyqtSlot(int) def setNumberOfSides(self, sides): self._sides = max(3, sides) self.createPath() self.update() numberOfSides = pyqtProperty(int, getNumberOfSides, setNumberOfSides) # The innerColor property is implemented using the getInnerColor() and # setInnerColor() methods. def getInnerColor(self): return self._innerColor def setInnerColor(self, color): self._innerColor = max(3, color) self.createGradient() self.update() innerColor = pyqtProperty(QColor, getInnerColor, setInnerColor) # The outerColor property is implemented using the getOuterColor() and # setOuterColor() methods. def getOuterColor(self): return self._outerColor def setOuterColor(self, color): self._outerColor = color self.createGradient() self.update() outerColor = pyqtProperty(QColor, getOuterColor, setOuterColor) if __name__ == "__main__": import sys app = QApplication(sys.argv) window = PolygonWidget() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/designer/plugins/widgets/pydemo.py0000755000076500000240000001305213245231431024117 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Riverbank Computing Limited nor the names of ## its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot from PyQt5.QtWidgets import QApplication, QTextEdit # The purpose of this class is to show that Designer's property editor shows # all Python classes in the hierarchy that define properties. class PyTextViewer(QTextEdit): # Initialise the instance. def __init__(self, parent=None): super(PyTextViewer, self).__init__(parent) self.setReadOnly(True) # Initialise the author property by calling it's reset function. self.resetAuthor() # The getter for the author property. Note that we cannot follow the Qt # naming convention (ie. by using the naming the getter "author") because # it would conflict with the property name. def getAuthor(self): return self._author # The setter for the author property. def setAuthor(self, name): self._author = name # The resetter for the author property. Only Qt Designer uses this. Qt # Designer does not use the deleter function of the property. def resetAuthor(self): self._author = "David Boddie" # Define the author property. This will look like a C++ property to Qt # Designer and a Python property to Python. author = pyqtProperty(str, getAuthor, setAuthor, resetAuthor) # This is the class that implements the custom widget. class PyDemo(PyTextViewer): # Define the Qt signals as a sequence of C++ function signatures excluding # the return type. These may be connected to other signals or slots in Qt # Designer. zoomChanged = pyqtSignal(int) # Initialise the instance. def __init__(self, parent=None): super(PyDemo, self).__init__(parent) self.setWindowTitle("PyQt Demonstration Widget") self.setText(_demo_text) # Initialise the zoom property. We don't just call the resetter # because it assumes that this has already been initialised. self._zoom = 0 # The getter for the zoom property. def getZoom(self): return self._zoom # The setter for the zoom property. We also make define this as a Qt slot # which can be connected to Qt signals in Qt Designer. @pyqtSlot(int) def setZoom(self, zoom): # Don't do anything if nothing has changed. if self._zoom == zoom: return # Zoom in or out according to the relative zoom levels. if self._zoom < zoom: self.zoomIn(zoom - self._zoom) elif self._zoom > zoom: self.zoomOut(self._zoom - zoom) # Remember the new zoom level. self._zoom = zoom # Emit the Qt signal to say that the zoom level has changed. self.zoomChanged.emit(zoom) # The resetter for the zoom property. def resetZoom(self): self.setZoom(0) # Define the zoom property. Changing the value of this in Qt Designer's # property editor causes the zoom level to change dynamically. zoom = pyqtProperty(int, getZoom, setZoom, resetZoom) # The text displayed in the custom widget. _demo_text = """

    PyQt Demonstration Widget

    This simple example demonstrates the following features.

    • The definition of properties that behave as C++ properties to Qt and Python properties to Python.
    • The definition of new Qt signals that can be connected to other signals and Qt slots in Designer.
    • The definition of new Qt slots that can be connected to signals in Designer.
    """ # Display the custom widget if the script is being run directly from the # command line. if __name__ == "__main__": import sys app = QApplication(sys.argv) demo = PyDemo() demo.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/designer/plugins/widgets/pythonconsolewidget.py0000755000076500000240000000575413245231431026744 0ustar philstaff00000000000000#!/usr/bin/env python """ pythonconsolewidget.py A Python console custom widget for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. 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 St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt5.QtCore import pyqtSignal, QEvent, Qt from PyQt5.QtWidgets import QApplication, QLineEdit class PythonConsoleWidget(QLineEdit): """PythonConsoleWidget(QLineEdit) Provides a custom widget to accept Python expressions and emit output to other components via a custom signal. """ pythonOutput = pyqtSignal(str) def __init__(self, parent=None): super(PythonConsoleWidget, self).__init__(parent) self.history = [] self.current = -1 self.returnPressed.connect(self.execute) def keyReleaseEvent(self, event): if event.type() == QEvent.KeyRelease: if event.key() == Qt.Key_Up: current = max(0, self.current - 1) if 0 <= current < len(self.history): self.setText(self.history[current]) self.current = current event.accept() elif event.key() == Qt.Key_Down: current = min(len(self.history), self.current + 1) if 0 <= current < len(self.history): self.setText(self.history[current]) else: self.clear() self.current = current event.accept() def execute(self): # Define this here to give users something to look at. qApp = QApplication.instance() self.expression = self.text() try: result = str(eval(str(self.expression))) # Emit the result of the evaluated expression. self.pythonOutput.emit(result) # Clear the line edit, append the successful expression to the # history, and update the current command index. self.clear() self.history.append(self.expression) self.current = len(self.history) except: pass if __name__ == "__main__": import sys app = QApplication(sys.argv) widget = PythonConsoleWidget() widget.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/designer/README0000644000076500000240000000147513245231431020004 0ustar philstaff00000000000000Qt Designer is a capable graphical user interface designer that lets you create and configure forms without writing code. GUIs created with Qt Designer can be converted to Python code or created at run-time. Some of the examples in this directory can be run from the example launcher; others can only be used from within Qt Designer. Documentation for these examples can be found via the "Tutorial and Examples" link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/desktop/0000755000076500000240000000000013245231431016766 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/desktop/README0000644000076500000240000000161613245231431017652 0ustar philstaff00000000000000PyQt provides features to enable applications to integrate with the user's preferred desktop environment. Features such as system tray icons, access to the desktop widget, and support for desktop services can be used to improve the appearance of applications and take advantage of underlying desktop facilities. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/desktop/screenshot.py0000755000076500000240000001460713245231431021530 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDir, Qt, QTimer from PyQt5.QtGui import QPixmap from PyQt5.QtWidgets import (QApplication, QCheckBox, QFileDialog, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QPushButton, QSizePolicy, QSpinBox, QVBoxLayout, QWidget) class Screenshot(QWidget): def __init__(self): super(Screenshot, self).__init__() self.screenshotLabel = QLabel() self.screenshotLabel.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.screenshotLabel.setAlignment(Qt.AlignCenter) self.screenshotLabel.setMinimumSize(240, 160) self.createOptionsGroupBox() self.createButtonsLayout() mainLayout = QVBoxLayout() mainLayout.addWidget(self.screenshotLabel) mainLayout.addWidget(self.optionsGroupBox) mainLayout.addLayout(self.buttonsLayout) self.setLayout(mainLayout) self.shootScreen() self.delaySpinBox.setValue(5) self.setWindowTitle("Screenshot") self.resize(300, 200) def resizeEvent(self, event): scaledSize = self.originalPixmap.size() scaledSize.scale(self.screenshotLabel.size(), Qt.KeepAspectRatio) if not self.screenshotLabel.pixmap() or scaledSize != self.screenshotLabel.pixmap().size(): self.updateScreenshotLabel() def newScreenshot(self): if self.hideThisWindowCheckBox.isChecked(): self.hide() self.newScreenshotButton.setDisabled(True) QTimer.singleShot(self.delaySpinBox.value() * 1000, self.shootScreen) def saveScreenshot(self): format = 'png' initialPath = QDir.currentPath() + "/untitled." + format fileName, _ = QFileDialog.getSaveFileName(self, "Save As", initialPath, "%s Files (*.%s);;All Files (*)" % (format.upper(), format)) if fileName: self.originalPixmap.save(fileName, format) def shootScreen(self): if self.delaySpinBox.value() != 0: QApplication.instance().beep() screen = QApplication.primaryScreen() if screen is not None: self.originalPixmap = screen.grabWindow(0) else: self.originalPixmap = QPixmap() self.updateScreenshotLabel() self.newScreenshotButton.setDisabled(False) if self.hideThisWindowCheckBox.isChecked(): self.show() def updateCheckBox(self): if self.delaySpinBox.value() == 0: self.hideThisWindowCheckBox.setDisabled(True) else: self.hideThisWindowCheckBox.setDisabled(False) def createOptionsGroupBox(self): self.optionsGroupBox = QGroupBox("Options") self.delaySpinBox = QSpinBox() self.delaySpinBox.setSuffix(" s") self.delaySpinBox.setMaximum(60) self.delaySpinBox.valueChanged.connect(self.updateCheckBox) self.delaySpinBoxLabel = QLabel("Screenshot Delay:") self.hideThisWindowCheckBox = QCheckBox("Hide This Window") optionsGroupBoxLayout = QGridLayout() optionsGroupBoxLayout.addWidget(self.delaySpinBoxLabel, 0, 0) optionsGroupBoxLayout.addWidget(self.delaySpinBox, 0, 1) optionsGroupBoxLayout.addWidget(self.hideThisWindowCheckBox, 1, 0, 1, 2) self.optionsGroupBox.setLayout(optionsGroupBoxLayout) def createButtonsLayout(self): self.newScreenshotButton = self.createButton("New Screenshot", self.newScreenshot) self.saveScreenshotButton = self.createButton("Save Screenshot", self.saveScreenshot) self.quitScreenshotButton = self.createButton("Quit", self.close) self.buttonsLayout = QHBoxLayout() self.buttonsLayout.addStretch() self.buttonsLayout.addWidget(self.newScreenshotButton) self.buttonsLayout.addWidget(self.saveScreenshotButton) self.buttonsLayout.addWidget(self.quitScreenshotButton) def createButton(self, text, member): button = QPushButton(text) button.clicked.connect(member) return button def updateScreenshotLabel(self): self.screenshotLabel.setPixmap(self.originalPixmap.scaled( self.screenshotLabel.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation)) if __name__ == '__main__': import sys app = QApplication(sys.argv) screenshot = Screenshot() screenshot.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/desktop/systray/0000755000076500000240000000000013245231431020504 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/desktop/systray/images/0000755000076500000240000000000013245231431021751 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/desktop/systray/images/bad.png0000644000076500000240000000470013245231431023206 0ustar philstaff00000000000000‰PNG  IHDRœ²€ÀV9sRGB®Îé pHYs × ×B(›xtIMEÜ 0D&N¦ÓPLTE              !"#$%&'()*+,-./012345 6 7!8"9":#;#<$=%>%?&@&A'B(C(D)E)F*G+I,J,K-L.M.N/O/P0Q1R1S2U3W4X5Y5Z6[7\7]8^8_9`:a:c;e=g>h>i?j@k@lAmAnBoCpCqDsEtFuFvGwGyIzI{J|J|K}K~LL€MM‚NƒO„O†P‡QˆRŠS‹SŽUV‘W“X”Y•Y–Z˜[™\œ^^ž_Ÿ_ `¡a¢a£b¤b¥c¦d§dªf¬g­h¯i°j±j²k³k´lµm¶m¸nºp»p¼q½q¾r¿sÀsÁtÂtÃuÅvÇwÈxÉyÊyËzÌzÎ|Ï|Ð}Ñ}Ò~ÓÔՀրר‚قڃۃ܄݅ޅ߆à†á‡âˆãˆä‰å‰æŠç‹è‹éŒêŒëìŽíŽîïðñ‘ò‘ó’ô’õ“ö”÷”ø•ù•ú–û—ü—ý˜þ˜ÿ™ÿÿÿs¶ÇútRNS (=\rîu#ËbKGDð5¸ïTRIDATxÚíœù_”UÆ­¬fmTPÀÄ…EÁ ÉPÑÈ\ZµÅ$Ê4Ë4ËJÍÊÒÔRJÍÊ4²ÍÊL± DS@öMöF™aæ!Ö˜å]îrî0Ÿ¼ÏÏœ÷~™yß÷žóœs§_?...........WÕw»ˆú‹ÀÝ©rÝÅán)¸dcŸª@.ÅÒ§*ãpŽÃÁÁ™]®0äGâ¥uŒáÊBTÚS„lY¾;˜ÂU„¶ÿÍ3Dl†«T›ÂU…un~î¿°¥{w„¾Í ®6¢{kv?‹Í–æÝºI`Wù_âà~“íO¯žÐ—pMÑViÇy,¶T¯ÞЗÌðpÍsm’.ÏT ¶dëи6h¸–»”Ð+ ™íœ‡mè³m°p7qHX½ÒÙÎz؇>c„„k}L$ö¾€ÄvÆÝ1tI+œq¹h²ïÀö«»Xèã7¡àÚž–(E|²ÙN}ô œùyÉBÉ÷¢ÛÉAR¡óš àÌ/Ê”q~9²l'´Ò¡1:z8al‘éwI†-I+UG ÷šB <ò²$Ûq­|èŒZJ¸7 tÿ$Ø~¨YM÷‚}06_”-Q£:©œn'’¹pM„í JhX1Ü.Dë%°Àíˆ-4¸€îcdc(°ÐŽík jhP>Ü~5ºmTdÃvXƒGwƒM¥ µ¾y¾tà õÏÁ†;е@;]9ÑGÞù"ÏÆ„KÔ¨05±¢;ô35n¨ïßxpËðíÒÈ:‚ï´{ŸÅƒ3.Å_"¼²=0AQyÏb ©±ì#`‹ªÇ~Z Kð—™þ.{>³žà=gXìgVÑqc‘Øf7î­ú…ÌÙ¢‰³ýÆlµPäsúùLÙæ·PeÂ-ó²-l¡¬!tÑÌØé©KÃÆYŒØÖÕ3™°‰ù%vDC¶ØV #§á~p¶¥0 ¬f0Ûr yX=”íI¨íz} ÛS ÎfÝd0¶çLàVÕ$ ¶xƒ&Ie8Û &&í¥Ò l«LŒs%ã©ÙV›™µ4‹ÇQ²­6ƒ‹ƒ©Ø^˜¶ÑóÆP°m ä’ÓmTb£ÝÈMÈöº"À\ÉÕQDl[3ôò×=lÛœ3‘Óü É·É)pM1d·Ü›N€kz€ôaÝÎN7—ü5÷!c¸zªZg'S¸:ÊJç#†pµ3h“’]ìÆ…î£Oçö0‚«‰È5Õ LધƒdéêOÀU@Õ7êýàpá*(©Õ‡ÖÔꃠpeAݷÀp¥¡À>ŽÛ0¸Â`´4Gà ‚x‡šD¸kL\WÍ·pùlØÚéŽQÃå0sú&QÂåŽeØ#Ñž ‚»äÏ´»¤=I—3’q_Î~î¢óŽæ Ÿá²Ù³Ù@†ËòÅ_j0þøÍ>*\Çñ\y¦ nXá#Â¥{㳠ϰXöá‡y$cÂ¥°ÝÛ9Ó¼—€î<Ü’ï´+t;~è„6,8ÓjÜFdöüûŸ`‡faÞsÂz¼|2{oë0o‡Lì§U؈³€¿Í´ðû8¡ÃRI^Âï /0ÊnVxzèвí ùÖ}Å>½ØŠü¤þAºñï!e³X¶ n)§ÉS&¤aÜ1WÅÊÍHûþ/4Éæåí(¸P´6 äÂÇéÒôÏ•&0ÇIÈÊ/£ßÓ8_ÈÓ/–4>„uØ•5vixl€ÜÆS,ch ¯È²}QT'}®!¤DÖ¨Öʸ9‡`ìˆSƒ%-U0 Í«$á ŒœŸÅÏGM®Tl,Hž|Ú g%¹þ”*„†‘)^”m¤yøû0‡ëO½ŽtšÏ‡ÑB$´]S<í®? ­n¥ÛhÃ:c„Íõ#ª‘OšVر½oõgúX]ßjd[YÆe¨ãäM’˽ísë‘m¬¬˜´—®ô FÌÆc³9"ofÔ˜+ìȱÙF£ëÂ31kiuŒZÍÑYðÕúD'Û ÃfpI¨ÃÈ6¢:Ä™¶Ñ‹W6ZȤ_ Zl`?WB(Ýúf‹ËÂ9g"‡Ãq8çp»“úT‡dá\Aî–»­¿‹èvþƒ¬\\\\\\\\\\\ÿCý ™¥\~Gq`BIEND®B`‚PyQt5_gpl-5.10.1/examples/desktop/systray/images/heart.png0000644000076500000240000006226413245231431023574 0ustar philstaff00000000000000‰PNG  IHDRèè*ZsRGB®Îé pHYs × ×B(›xtIMEÜ 4hfÙ|bKGDÿÿÿ ½§“d4IDATxÚì¸UŹ¿÷içÐËTz•¦ ½‹E@Q¤AADªTéçhÔ«&Æ$¶ÄDM¢&{‰5±wÙk§ÜMŒÆ6÷öJ‚W„µöÙkÖ¬µß÷yÞç¹÷ÿ÷FÏžùæ·gÏ|“H@.Q(Öum"¶;Š=Ä>âqâ(ñx÷¿ÖöuÿçÚ£Üÿzîÿ-€ªRM¬ïÖ–îûÕ›~ûÕ¡Ñâ÷¿îíþÏÛ»ÿ;÷«kùü9ÀjŠÝÄ“Äâ*±Büxø”øŽø¨²ì?Åß‹oŠŠ7‰;Ååâ,qŒ»ÖãcÈ)‰½Ä±âq…[—nßÿ(~@]ú‹[“~#þBü¾[—VŠçºu©“Xƒ ªB³Dz÷h¶¸^¼Ù]|þÀ┊/ˆwŠ»Ä ÄÄæ|¼‘CïT·ljŠWˆ?_?ŠP]J‰»křⱉô/Œû¨žHï8ëEBïø _ʰ”Zâ q±x‹ø.µè+þK|ÞÝL˜&¶eÈD} JŸ}Ü(>š#;PAø¶xµx¦xà  J´H¤ÏˆÏ[ÔÿþÝ­éÝϯ£;賌›Å§ìŽáçⳉôOÐúXLu†ÀA)sC¤¾°©µû’:’u?K¤Ï´ë_þ vá¢Ï/I¤Ï-ÑØŸqw²t`§$°Qž ݹñu¸¹kÂy .ÅAŸ#×­Ä6‰/²Yçq‡8 AdÈ ÝP~U"Ý•Z`_¸_”V‹]ªÙå˜Dúè ¨¢£#VŠCüä ñCï”ëÆ®ÿ—ù_uÃz'†0@fèîôÏÄ\¤ŠGû4ÖõùÐ<†6Dý«Ð°DºõáߘבW÷×)udhœ–‰ôEŸ7YÞ©ïΔ3À$ºè\áîPŒÑ?I¤/þ5dzæ,úKÚõî—6æÚà?ĉtÇ €À¨–H·%ã´ùÒÖj±Œéš3Ôw¿œ}ÂøGKý½8[,`º@¶ŸH÷¦¦ØbÜ+NI¤Ç‚x¢:Gü3ã#âïÄc™º tk²_SX1¢>&Ã4ŽCÅßQõˤm™Æ úœ¹îeNgŒCÇ}™¹1Ó:òè~Ó·1¦1ê;\[¸2¸U±½8@œ Η‰ÛÅkÝšr·ø¨[kV‹žÙ¯nÝ»_=»I¼B\+.ÏOûˆ­Åb> ¯:âD¦8 ©é‰‡(˜_µ‰8Dœ!®pÃò/ÄDÇßï¯Wº_‰‡ñùÈü¼%º‹Ï1nÿk¾ØL:~‹¡ž3ã(1^üsœ~Áëë^p|•ºº¿Ï[į.½ŸH¿¤ ¦šxe\ SC÷<ôƒ,>Öú˜¸(^gC¿+\ÔÊ&¥qªK-Ý3åO3ÿ­õ·_|íx½Ž¼:A;F€H¢ž"»RƒÜÇv³ÐDêl¨¾Èu\|Ú7êÇÊ)+U¦ƒøjÔǃn‡8ÖíãÍ]—h]|×ïAôŠOPÿ™X—²†ˆˆrá)w{?Á¢yõÎâñØUß+ö£¼dŒ>ÒòaÔwË—Ó¦5>è¶Ý­ýºô–Øò`7ú箉ôÏò‘,6Ǹ;¯{£üØFa¡JÕ®­RM›*§m[åt릒ýú)gÄ北vÒ$åLž¬œ)S”3kÖ×LqFú®=é$匩œÁƒ•Ó«—rºvMÿßmÜX9ÅÅ‘ù»ìu?ÛÑ^ ?O¤{óÓ²wôñ «£ú™ç¹>J¨¥»Ý]õˆ_,ÕÙÎ£ÔØIMñÖ¨}Œåæp§¼\9G©œAƒ”3~¼rfÏVÎÒ¥ÊÙ²E9W\aÔäÖ­ÊY¾\9óç+gêT匥œ=”Ó¬™rJJ¬üê°s¼{„)¢cö‡b ÊÎ!Ñ'îŽâg¬±œ,þ’›ê „ëÜM¢õ+é»g` mÄW¢VLt{>ýœó}6î:u”Ó©Ó¾ÝïÔÌ™û‚pª¢Âx¯’7*çüóÓ»öýû+§E •ªVÍŠ¿ïÃnŠè9õg´b<ú¼ù›Qû\«¹¯Vré3wÕ½ÕGE÷½‡ÇÅÆ”€ðѯ‚þ)JDµ­0—•)§sg匣œ ”³ys´‚¸++•³bž÷}Çoôq™¼¼P»¿LŠfOuùÇOô¢ }‘â_£ôY»>xLÿí/ÝãM éï‰)CáqZ"ýòadÎržàö§µ¡ø¦š4Q©URBjjåÊø†q¯ê/$gŸ­œaÔsÄ¡vÝ×þ¤è}ÑsðtÊÑÐga?ÒQ–©âóRüæÃŒXHÿ›8œr`ýyd.ƒêv{÷†]hõ±Ž®]UJ_¼\»–@î%°ë[Ê‘/1NÆF?+}ìiXôú¥_šã5I_œ­ˆÒ†Á8÷×B(zñv±w´êÒ§âlâ€tG„ë£R Žt{‡VT4HïÏŸ¯R;wº«¢¾ˆ:fŒJê˧†v×½Jõ£F9X—ŠÅ›£ò9 àò'VÁë¢÷B©îî–G|Ž:âýQ(úÕÏËÝkB¹Øyì±Ê¹ðBBuP^v™rN9E9-[ÖõC0Ñê£~»X’cué(|6ºùw ˜˜¥öŒ—е¢S—nͱº`Œú‰t×ë; œ#¾nºõ¡¾à©[.\˜¾Iˆ6fjõj匭œFýŒß‰%ÑX M¤[ ÆÝÅæÛ?¢Vñ1à‹â™ÑéD¥ëRmâ@öh"¾hûä->i²8æç§[ Ι£œ]»Ë6„õ /Üwñ6ÈþëOG§³Â+îÜ+íÅ÷mÿÆóò'ð~÷èTêÒ3bb@Õi+î¶ýgã›ì¾¢_è<å•Òý½ ÅvªÏûëWQ»tI‘ `Ü&¶ŠF»³Ö1¬K=Å¿Øü·oÏ럂úµäÆö×¥×Ä#ˆWUÛ¡Úcë$×]Î_3Qøô9çÎUêœs8µ]õK/U©ÁƒÓ]t²<.ÞgÙß–ñ±eŒêÒQâmý{붉ç‰ï1$'޵?¤¿AHÈŒnâlÜ-ÜL#­‡UΚ5„݈›Üº5ýËG½zY'úœæv/†ú‹v;v΃ïEw´ÅïˆåüÂ+úغêÊ³Ü {·5TjäH•Ú°p·õ;UêŒ3T2Ë—JßgØý<·~u4ʯû ?°u×ü.¢…ê_˜Oµ;¤'ÅÄ.€CÓ[üÐÆ‰ÜØDOóš5•3a‚r¶m#ÌÆÝŠ •œ>]9Mšdu ýÈîÝô?‰]"X—‰±kŽ˜™×ˆuì­KïÇì@ ÇZ¬Ü9×Z^ ²€Õ®­ýÂ' å¦ú!)ÝS=KãéM»w­~ŸHß/aÓ Šw`Îf×#ä³b»ïÊN ø:G‹µmÒÖ¯²hév|'ž˜>ŸLPÍm++UJw~iØ0«g@ëÚ¹êû%GFäXË?lü5ïG>Œ úáµÍö¾ç ;Æ5'Žü— û ë'Ö ªP)gäHålÙB0ůª{ÚOš”>î”…±¦{ów·÷‚V3‹ëRg÷HŽU·Áâo zqï[ÛY—ôÃcõ‰e‰DSñ-Û&é·‚úéX·KìÑC9k×DñÐ]_Ž?>ýe. Ïrϰ·±†´J¤/µZuA}±»IÀÃ8¨›-L°³.=àÅQÈqôÂü²M³†xeP©Må,]JøD]_Ö¯WNïÞé/wUƒ;ÅbûÃ߈¥Õ¥†‰tdkþFµÄïè0¦^æv"²¬.=jY]0F‰ø„M²¥û\q@“S§òÀVÍyó²r>ý^ñpûÃ_ˆEÔ¥2ñ)›þ6ÄÇ qsï°³gúbq r‰|ñv›&∠^Õ;žƒ)‡  ˜ÅêÎèÑ*YXX¥±ù’x¬}‹á b^ˆuIA¸Ç¦¿Éx·#sA}·¢}u©’ȹÄv›&àqo¶‹MóæÊY¶ŒP‰Á¸fJvèP¥1ú¾8˾Åpcˆué[þº…âEœ7Çô=ñdûêÒ"bäÚ2éô™·íÙ.0ÅÅéçÜ+*‘¼º-cYY•ÆìvûΞB]ZeË¿Mñû5Ìq׸£-™—_ŠS‰ogƉŸÛ0áÊij\PôC3©K/%4¢Y/»¬Ê»é?KíY ÿ%1X—&ˆ_Øðï^_¼‹p†¸Ï]vmüSìGŒƒ8Ò_ü؆‰v„ø`6 ‰>|Ê)\Åp6-ý N†ãø±©=‹á‰tò ékK]Ò=¡C(CüŠ?ÚS—þ&v!ÎAœÐÏç¦l˜`Äç²Y@5RÎEÑš³éN«Vç'ÜnF–,†¯Šu¬Kú †½6ü»vŸ'Œ!ÐGÄöÔ¥×®KÆ(NXÒNñ˜lwjéÞ]9—_N(ÄÀ^MmØ œåËUráBåÌ™£œ3ÎP©ñã•3nܾn.©#”3|¸r ø¯ªTõêëízyôÞD0mÎt›×gløwìD)Ę©¿À¶³§.Ý•Hw£ˆ4ß¶aBõÏf»2ý²ã”)H¬š[¶ì{¸*5{¶rtè–`íy¤J6jT¥€ ß°«ÝÙúê’[F‰ï¾=·‡ílO]ZA¼ƒ(s¶ é÷©ó¬‰ ”sñÅ„Kô×»\¿ ««6L9íÛW¹óŠ©vg#íY 'e±.oÿөn«K‚¢wߨÓÙådbD™C‰OÞD§dsìÔ‰#-xð0®Ûkê0~ê©ÊéÕK9Mš¨d~~dÃÝî\ ÿ‹²P—‰Ÿ…ýï3ƒçˆû¶8ÄŽºô¡Ø‘¸Q¢¾ø^Ø“G¿Â·'[/‚ŽM—üºú ÛÙg+gäHå´m[¥.*6‡ôãíX _K«P—‰ï‡ýï1%ˆ‡ÑsÌwìy ùy±±¢€¾ÐuoØ“fL¶vÎkÔPμyQL«¿¤éò±c•Óºµr"¼;î7¤²c1üa†uI_èº/ìþ©ìœ#fµ.gG]úÑ¢Àê°'Ëðl9¯_Ÿ‡‡P9Û¶)ç[ßRNß¾*U»vN/†–ìXÍÌ .-ûŸ{;çˆì¤÷·£.Í&þÍô û|ç`÷r[•'~›6ÊÙ¼™pš£&·nM?ü£_èÌ‘]r¯‹¡´þ!¶÷Q—†]—Ær!1ЮSÝí¨Kíˆ`#µÄ·Ãœ }ÜË#Užð={¦;oTsËíÛÓ¡¼K—t+M¾oì¢Ð+üÅð¹Dú/÷aö„ùÏ:"›]¤ñ€¾*~]zZ,"‚m|7̉ÑÃý]å‰>t(—As­óÊŠûÚ&#ÐúЦŰCø‹á¶CÔ¤<ñÎ0ÿ{¹¿:0fƒ÷±uøuiqlâ”0'D[70T¹SË„ Ö\ å;v(çÌ3UJebaËÈçÄÃÂïC<ê uiv˜u©}6ê"úò±<ܺô¹{¬ tZˆ k24I¤Ÿ®j8OvÁ5‚¹¾ô;hrJJX̲àãb£pÃ?Šå¨KmÄÂúçj)¾Èø@ ÅÅZáÖ¥½îñ:€ÐЭËîkTïªêd.(PÎÌ™„×8«š5+Ý‘Å+ëê9XlWëE}´%´–ŠeâýŒ ÄP½A,·.ÝHD„0YÖà—oêêªNb}pî\lœ/}žrŠJ6hÀ‚°WŠyá.†§ìW—æ†õÏ¡Á÷ˆV¸.üóè'! š%ÒÏo‡2ð/©âÄM*笳±q æ'¤œZµX¤ º0Ü…ðObc±e˜ué2Æ¢U~+ܺ¤;HÕ".‚i~Ö Ÿœóùó ²q¼ø9nœrJKY˜BP¿9&ÜÅðñ×aýçÏ` Z§~`x¸ué â"˜äô°{÷ª>D¤Ïœ³s¯`®{Öë`^³& ’uÿgeãä!"Dk}Ml^}ø"AW0„¾™ü‡0z·…R•Z)N™B¨“sæ(§qc!‹|R¬“Cá\·š|‰ÏÑjõÅíáÕ ùލN|„ ùa¼¨ª[t8Ÿ:•@-RÉfÍXx,õ6±0Ây [#ãw½Ì~9ñ‚dxX á¥UœúÁ6úÇY6nTNÿþÊÉÏgÁ±ÜÅ9Ð7ó9#riÔ›ŸŠÝˆ‘ÕÄ×ÃØcÜ hOÊ¡C ·q8g®;³T¯Î"÷ŠCbÎ'ñ#FÎÝbïðêÆ#‰ô; YeQºøfU&d¯^Ê©¬$äF9œŸ{®rê×gq‰ ¿K„þÒh`ué->_ÄHú[±<¼úqq²‰¬±‰¿…qîüÞªLÄv픣w^ ¹Ñ æ›6)§{w”ˆ{K"ý°X\Ây1çÎ#ïÃ;¾[,!VB¶¸>Œ…peU&`y¹r6o&èFQý‹ÇäÉÊ©Qƒ…$&.ŠQ@ßÊç‰ ç†WGÖ+!èK Ÿ›À}Ý3¬M<ýPÍŠÝ(º~½rºveñˆ™{Ä1ç#ø,cã»b‡pjÉGâáÄK¨*˜¼µÄ§3tº»Ç‚Ý(:w®J–•±pÄÔGݶ„Q çõܳ«|–ˆñê^-œšòâ%T…“ÃX¯¬Ê„›8‘ 5·mSNïÞ,9àºô«øücéªpjÊ—b?b&dB‘ø–éA{RU&ZŸ>„ݨ]]¼˜-9¤n—: ‚á|Ÿb¬ëRÿpjËDMÈ„9aü„üb¦“¬I“ôN,¡7:Nš¤œ¢"ˆS_«¡p®Û±½Ìç†k«‡ScÆ7ÁÅâÓuW¦“KŸ[^»–À·lQN—., u‰„×ðy!æ„Ë©1Ï%x¼|0ßô R•‰5g¡7*®\©œ¦MY r\Ý¡©{Âùp>+Äœê6Õ)œZs2±¼ è;&g ñ7™NªÁƒ ½QqæLå³àº'YÎK«ÒM #éÝbùzó¢˜Oü„C±ÈôB¸*Óɤ#Ú¾à…‡‡FRN^ ~Ås,è«ù|sҳ©9“‰Ÿp0ÊÄ?š”GŠïg2‰ŠŠTò’K¿¶»u«r:v¤èã}Glna8ïši]BÄÈû–ØÄ|ÝyM, †Â7±ÔôBø£L'Ñøñ„_Û½ì2Λã!½Þ²pž'ÞÅ炘ÓV†S¦Cá›:·={>:É“jÓF9`›û›¯X¡œ (ôèÉô |ˆôF{„³‹ÎYtø³LDù6 žÌ$œW¯®’´T´Û¹s¹ о|@,´ œë ëÏñy ¢øs1ß|K…ýÑ=8_69çg:i&L Ûì¬Y*YXHqGßΰ  /ás@Äýœd¾=L$…ý9ÑäÔ/ó½‘ÉdiÝ:Ý„ lïË tjÁ Õ¯uÖ 1œëKaïò9 â~>ï¶\5\zKáßJ”ä‰ƒ?^dø×½¿‹µ‰©¹ËZ“߯ͤ­b×®aûœGÑÆÀÜn°.}¿7"ÚùëÞ¹ÄÔܤHL™hGe°K¥Ûõ¥V¯&Û¦nuI±ÆÕ¿´µ4P—ºñ·FDKÝ_ ªæ&F[+^—É„8öX°mž~:ÝZЈ Ô¥«ù;#¢×›ßE?†¸š{Üa²CÂ^¿¡F ålÞL ¶É9sT2?Ÿ"F|ÏíMT]j—I]BÄœö±¾Ù€~5q5·8LüÌÔÛ”ÉD˜8‘@l‘É… Ó½è)ÐhÐˬKWð÷EÄ \d6 (–[s‡U¦W¹»æk4h œ]»ƶ¸l™rªW§0c(»èåÔ¥Vìž#b†¾’0þºèÙÄÖÜ @|ßÔÀº(“ 0e ¡Ø×­S©:u(Êš'x5ír†Ù€þ,Ñ57ajPU_ô;ðËË•SQA0¶ÁmÛ”sÄc }·ª,‹u©‘ø.WD¬‚ŠùfCzgâkü¹ÑÔ€š‘ÉÀŸ6`lCŸsù’”êÔ‰BŒVxNëÒ¥ü=1 žh6 o$¾Æ›bñ¯&SžøˆÏÁžlÔh_0$ [ÐGޤ£5>'e¡.Õ_ãYð'fú›DØxs’©Á4$ƒÁžœ>plI;Ez£mNÍB]:Ÿ¿#"fÑNfCzObl|ù¾©tU&gÏ++ Ça»t)íÑJ©â™Ïbñ·ü1‹®6Ð7cãI©ø‘‰AÔ ‘~×Ï Ová8lõÃPõëStÑZÇš¾ƒˆxõ‘¹s}˜GœM}Ë›ç÷hKY™JíØA@ÓŠ •ìЂ‹V{Ÿ{¿ÅoMÒçןá8Áì.z?âlü¸ÍÔåÐGýp}!‘®ãÆQh1Í .Mäù#³}'q6^”ˆÿ01xzùÜEE*µi9ÌŽ-‹«d~>…#á-lÜÇß 2)6ç˜ dÈñ¦¾Ýmõ;¸ $‡éÖ­ÊiЀ"‹‘²›št,/D Ø Íî¢E¬&MµLz /[FHSý‰âŠózuégü½1`ŸÈð~L†^B¬ï˜4Ãýê–- Èa:s&…#û“r{5©7+D´ð—½*ú±6´6õ³Ë¿zÊBrH&×®UNI E#ë5é;üÑ—˜ 蟊µˆ·Ñg‰S]|ÃÏ`..VI}þ™°Ž]»RP1Òê·?HMêÌß úŒÙc.‰·Ñç&Ëñ>rjà@BrXNŸN1ÅX¸æ 5é þ>ˆhØæúµÄÛhSlª½b¥ß¬Ÿ”',›wãFå”–RH1ê_íê žðÿš1"bU]a. ï&âF›á&Š~¥ïu?ƒ¸iS‚rXöéCÅX¹ð5i-D Á'Ͷ[ìDÌ.L ’~~ñI'”øzÖYPŒ/Š%ûÕ£zâÛü]1$[› èó‰¹Ñå1ƒäR¿çÏW¯&0›vûvåÔ¯OñÄX:g¿z´”¿"†èYæú­ÄÜhR]üÄÄ ùµŸÁÛ¢a9 Gޤpbl}Ö=jWËïq;DÄ,{³¹€ž$êF“¾&HãDúÑσw²i׬QNQ…cíDw犿"†é;‰tëiC!½9q7z,218Nó3póò”³nÙôÙóîÝ)š{pwÒù[ bØk. O&îFÛM Žkü ÚV­̦]¸b‰ˆˆhеæz%q7zü>èQ ¾F÷{­¬T©–-)–ˆˆˆ}Ä\@ž¸-Ú™üÚK.!4›<Ú‹¡ˆˆˆ¡Xn& !Ö!öF‡©&ú4?ƒµ^=B³AS;wª”þ›S${¼¹]ôáÄÞè°ÍÄ ¸ÒÏ`0€àlr÷|Ò$ $""bH®2Ð/"öF‡_™Oû¬sæœ >J”ª]›‰ˆˆ’?7Ðo$örAô?–û¨……*¹u+ÁÙ”ãÇSCtwÂX?t.ŠF„Æ&¾±õ3PÛ¶%4Ü=OÖ¬IqDDD Ù¾fú§b5â¯ýg" ¯ò3HO8àlʱc)Šˆˆˆ8ÏÜ1—NÄ_û1ò‚èm~é‚gC»çNi)Eѯ4ÐO'þÚÏwM †W<Îd~~:8 ƒ÷´Ó(ˆˆˆˆ–ø€¹€¾øk?ÏXuAôˆ#Ά^ u5¢ """ZtQ´ÈL@¿‹øk?z ö3@‡ !<›è{~ÖYCDDDËìh& ¿Eüµ›†&~J™ëgpΜI€6¡î”C!DDD´Ê“Íur) ÛKo½ÂÇÀL®]KxÚ‹/¦"""ZèrsçЛƒíåTƒàW^¦î(B€Þ¾})‚ˆˆˆú}s}1Ø^–=òÄ·½Ìöí ÏA{ùåÊ)*¢"""Zè“æú4b°½\ôhäg`J€úrè¤I@DDDKÝc®“Ë*b°½Üôèág`N™BˆÚã"""Zl33ýb°½¼ô8ÉÇ€L-YB€Ò‹.¢ð!""Zn3ý!b°ä‰=Îõ: óóUjÇBtöïOáCDD´ÜSÍô÷ˆÂvR×Ä%„M^¤~Õ’œÛ·+§¤„‡ˆˆh¹‹ÍôOˆÂvÒÆD@¿Éë€ìÔ‰¤ú(Š""¢õî2×É¥Œ8l}L|ø{=>x0!:H:Š¢‡ˆˆd. · Ûlj&>ü—½Èñã ÑA¹u+½Ï#âæú1Äaû˜ô_ îõºƒ>{6A:(§O§à!""FÄßš è#‰Ãö±(辞Ÿ¹t)A: S]»Rð#âîDú%vý â°}¬úƒoíg@nÞL˜Â-[T²°‚‡ˆˆ!k™ è ˆÃöquÐ|O¯Ç[ªW'Hµ{N÷DDÄÈÙÂL@_M¶Û‚þàGx„Iz gÏž:DDĈy´™€^A¶_ýÁŸêu ¶lIÂÊJ唕Qè#æ03ýzâ°}Üô?Ëë@ìÒ…0„^H‘CDDŒ cÍô‡íãá ?øy^bŸ>„é =š"‡ˆˆA'š è·‡íã7AðçyˆÃ†¦ƒ¸ ªQä#çéfúÄaûx>è~±×8v,:Ûê¶•ùù9DDÄ:ÃL@¿—8l/ýÁ/ó:O?@mçÌ¡À!""FÔ9fúÄaûx+è~•ÇA¸¯W7¡:«&;އˆˆQÏ5Ð'ÛÇž ?øu^¢Þí%Tsþ÷y™€þ qØ>RAð—{ˆs窳éöíÊ)( À!""FÔ%fú Äaûp‚þà7{=â2>¡:›Ç[.¤¸!""FØ Íô߇sðˆËz¯QJ‚uöŽ·ŒGqCDDäˆ G\"È;Aðk½ÄÅ‹ ÖÙ è]»RÜ#ì3ý â°}¼ô¿Òë@\º”`Mkצ¸!""FØyfú#Äaûx%è~¹×¸l¡:›QØ郞 zy1è~);èæ=ï< ""bÄi& ÿ’8lÏýÁ/ö:/ºˆ`-O9…†ˆˆqÏ4ÐA¶§ƒþà/ðÚf‘K¢Ùk±Ø¯… 1âN6Ðï ÛÇãAðs=Â$m³g‹6DDĈ;ÖL@¿8l¿ úƒŸêu ž>Á:VV*§¸˜Â†ˆˆq5Я'ÛÇO‚þà'x=âÂK¢ÙqÝ:Š""b ìi& ï$ÛÇAð#¼ôsÎ!\gà . ¨!""ÆÀŽfúeÄaû¸2è~€×€>{6á:N›FQCDDŒÍÌô%ÄaûØô´×K¢S§®³áèÑ5DDÄXÏL@ŸK¶Aðí¼ÄI“×Ù°o_Š""b ¬f& O%ÛÇAðM½q7Žp Û¶¥¨!""FÜwÌ„sí8â°}Ì úƒ/ñ:G"\gÃúõ)lˆˆˆ÷7æú±Äaû˜dâÃÛË`:”pWD )lˆˆˆ÷çæz7â°} 5ñá?åe0êçé ØUsÛ6Š""b ¼Á\@oL¶.&>ü»½ ÆnÝØUuÍŠ""b Üb&œ!‡í£±‰€þ}/—DÛ´!`WÕ%K(jˆˆˆ1p©™€þG¢°‰_=vyŒååì*š:÷\Š""b ü–™€þQØ^þôXåe0––²«êôé5DDÄ8ÎL@ÿ51Ø^ÞzÌó2óò”SQAÈ®Š§œBQCDDŒ=Íô›‰ÁöòXÐà$ƒ1µi!»*ŽCQCDDŒÍôÄ`{ùiР—×¹|9!»*è“'Sà#êÝæÎŸ¯#öF‡ƒõ¼ÒåË Ü™8k1¢n1ÐÏ$öF‡kL Šç¼ Ò3Û™8>1¢N3Ð&öF‡…&Åtr Î%K(pˆˆˆµ»™pþ \¢Å±&úÅ^iÇŽ„íL\½š‡ˆˆÑ ¢ÕÍôgˆ¼Ñ¢¾‰€>ÖË@­]›°‰[¶Pä#èÏÍo¹†È=ö=0Zy¨© Ü™tr©^B‡ˆˆ1W™ ès‰»Ñã® Fžø²—€~î¹îL,/§Ð!""FÌÑæzoânô¸ÌÄàøž—Áz „íLlßžB‡ˆˆ1™ 矉%ÄÝè1ÑD@?‹¢ÁÙ»7…1B>nn÷ü¢n4ikb€xzQ´¤D9••n¿gÐGޤØ!""FÈæúuDÝh’'þ%èR&¾ïeЮXAèöë¤I;DDÄyš¹€>“¨]î11Hîó2h§L!pûÝA?çŠ""b„<Ì\@oGÌ.«L ’õ^íÀ„n¿®ZE±CDDŒˆ˜ çpOJ@Deb œèeàê–„nVT¨da!E1®3ÐLÄ6uÅ/ƒ(ò¢öz¼ëֺ酎ˆˆKGš èq£ÏË&Ë=^ï´in¿çлv¥è!""Zîn·q†¡€~ ñ6ú\ob°¬ð2€ûö%tûuØ0 ""¢åÞa.œÿC,"ÞFŸ9&Ì0/¸A·_O?‡ˆˆh¹ç™ èwmãÁ‘&L©ûóΡpjõjB·/ºˆÂ‡ˆˆh¹8>ÑmxR&ͽ âÉ“ Ý~ܾ]9yy?DDDK}Ü\8×v&ÚÆ‡˜4ó¼ äÎ ÝtrADDŒ«Ì…ó$ýÏãÅ §—\T”Þ&x{6Ù½;ÑR{™ è×iãEKS?½üÆË`ž7àíDZc)€ˆˆˆú²X`. ŸA¤o›<ë¼ è!CÝ~<ûlŠ ""¢…n7ÎõÓåÄÙøñ?¶´[LÕ«GèöãÆADDD d. ?G”'“M  êâ›^õòåo?Ö¯O!DDD´È߉…æúJ¢l<©'~nbUzØÇOèöaªgOŠ!""¢E®5Û^± Q6¾eÕeÑñã ß^2„¢‰ˆˆhÀafúÍÄSÐl15èN÷2ôÎpe%üPΛGÑDDD ØûͶVÔ'š‚¦«©AWC|ÍË„˜=›~¨v‹;w*§zuŠ'""b€žl6œ¿— ÷9ìÇs¦ßj/¢U+B¸“úVŠ'""b þF,4ÐWIaÎ75øŽ÷x™‹ÂåŒPDDÄ€œi6œÿKlL$…ýi$~fj^奣‹Þ&„Ü-[”SXHEDD̲/Š%fú÷‰£p ~jjv÷29 ”sÙe„ðCséÐBŠˆˆ˜eš çÚ>DQ8£LÄ;¼LÁƒ á‡ròd )""bÕ -j™ çOCá›Ð·†ß25÷0ARÕªñpÑ¡º¹¬_¯œ¼< *""btwϧCá`\dj0ˆy9‹~ÜqñCÙ®1 ¾,Ö4Îÿ Aá`4H¤Ÿ˜52(Oõ2YØE?ô.:Ç\³â|ó»çk‰Ÿà…M Ê"ñI/æøã âSÑ—j)¬ˆˆˆUêÜRj6œëMÑ&DOðB?“ß§z™4¥¥*¹u+Aü`vìHqEDD¬‚sÍïž_Mì?½ßí.g8 ÷ nB&œor Nö2‰ô³ökÖĿɳ΢Ð"""ú´¿ùpþ b&dJmñC“gÑ÷2‘úö%ˆS»ÅŠ •¬Y“b‹ˆˆèÑ[͇síqÄL¨ ;LØ ^&“n'¸bü›<˜‚‹ˆˆèÁ¤ØÕ|8Šx U¥•{ËØÈ ÍwÏjB¥:u"ˆ“_LÑEDDôàá잟@¼„lpƒÉ;Òã¤J{.aü›<ì0 /""âA|Klb>œ?I¬„lÑAüÂä¾ÃËäjÜxß™kù<ùdŠ/""âAñk>š0þ(‘öAâ$d›Ž¦wÑ·{9æR»¶r¶m#”èeÑ£Ž¢#""Àáìž%NBÜar ësao{™hC‡Èä‚aDDD;Ú*>LŒ„ 8JüÒä€>ßËdËÏOw.!”ÕÊJ•lÔˆbŒˆˆ¸ßÅÐÃ͇ó/Ü w›Ô5Äç¼LºV­öR‚ùÿ;‹>~<Ñõ‚pvÏo#>BÐô0½‹>ÉëÄ›:•PþÿÝ´I% )ʈˆ˜ó>,V3Î?ÛÁ7™þöy›—ÉW«–r¶l!”ÿ»w§0#"bN«;Ãug÷|;±LÑÖýFhl€·w{™„ƒÈÿ¿çGqFDÄœvc8áüÏb]b#˜ä;¦úe^&a^žræÏ'”ó²(""â>_ë†ЗÁ4-Ä™èµÄßy™Œ©ÔŽ„òý=ã Š4""æ¤'†Î÷Š¥ÄEƒ]¦ü)^'䈄òý»¹è/,¥¥jDDÌ)¯'œkO'&BX4?0=èoö0!“º7ú’%„óýCºþÒB±FDÄñ%±A8áü1˜a²ØôÀ?L|ÃËälÞ\¥**çÿvõêô}Š6""æ€# 纉ƑÄC›êâ{¦'À\¯tÌ‚ùþ»è]»R´1ö^ÞÑ–+‰†` “MO€Bñ^¯G].ºˆpîš\¸Âˆˆ±öE±Qxmë Áô9«'MO„.â/“µqcåÐÕå¿¶hAGDÄØ:*¼ÝóyDB°þâ—¦'ÃR¯vøp‚ù¿¹ÌœIGDÄXº-¼pþ”X@¹Ùô„(åñ¨Kê èÚ]»”S§…cåbY8áüs±;1l¥\ü«é‰ÑF|ÇËä­[W9›7е&PÌ16·{¾™¶³8ŒÉ1ßë$>úh¹¾,ºu«rJJ(ꈈ //œëCkÿÀvôù«ßšž ùâ=Nâ}g° éÊ:”¢Žˆˆ‘÷.·»[Hýx¢D…¡aL’ÖâÛ^&sq±J­\ÉeÑ ”STDqGDÄȪ.l^8ÿ‘¢ÆØ,g{Ô­Zñʨ>êÒ¯#ëÄðÂùb3âD¦â‡au¹ÍëÄ2„€¾v­r )òˆˆ9w†εgõ ª, cÒ4_ñ:Á§Mã,zß¾zDDŒ”Š¥á…óûéG"I¡øL“g´×I^\¬œåËsû,úêÕûúÄSð1 êûfG†Îÿ.¶$âAÔé ~Æ$Zïu²——+G·Ìå]ôcŽ¡è#"b$îÑ–ÙD;ˆ ë˜D5ć½Nø=r; ë_òò(üˆˆhµ—‡Îó‰uª‹¯…1™:xm½¨4)·Cz·nDD´Ö{Åâp¶´&ÒAÜ(~Ƥ:Õëä/(P΢E¹З.e­ôU±Y¸»ç³ˆrW®kbíôZêÖU©M›r÷Âh§N,ˆˆh•Iqx¸áü§D8ˆ3eâÛaGÐk1hß^9¹úˆÑâÅ,ˆˆh•‹Ã ç¿á î ë¨K{?çÑÇŒÉÝ]ô6mXÑ ¿›H?Bb@?‘è¹Âΰ&Ú¯E!/O%§OÏ;`‹""†îCbÍpÃùÕD6È%jˆo„5áÖx-Õª)çâ‹ss½eKDD Í×ÄÖá†ó·ÄR"äýÃ:êR$þÄk‘¨UK9—]–{!ý‚ X 1÷ŠÇ…Îÿ%ö$ªA®²)¬É×H|Þk±8üpålßNGDDD.7œkÑ —ѯq=Öì$¾ãµ`èG|*+s+¤/[F_tDD4êÆðÃùOÄ<"ä:úU®Úˆ3|ÔÈ‘¹wÔ¥G DD4¢>~Z-Üp.ÿ‰FD3€4g†ùmy‡Ÿ~ƹÐW®L¿°Êˆˆú¸X/Üp®ïÅ #’|•›Âš”úÛúO½VÏ??·Bú€,ˆˆ˜¯„ß±E»ž(ðuêˆï…51ë‹Oz-&¥¥*µzuî\]¿^¥tËIDD̲»Åþá‡ó‡ÄB¢À ~ÖÕ/¾î£³KrëÖÜÙE:”…³î©á‡ó”Ø„pp–‡9Qû¸ßæ=–6m”³cGnôË/WN,&ˆˆ˜5…Îu¿óÞD/€CS þ:Ì ;ËϥѮ]Uª¢"7Bú˜1,(ˆˆ˜¯óÃ軼ÓPÜæ¤]ã§ÐèK”¹зoWÉš5YX±JÞ–H¿êr8¿‘¸àŸãé–G¡L\]8nñSpN8!7Bú)§°¸ "bÆ>•H¿ær8S¬MÔÈŒÕaN`™¹ê?…G‡×¸ô;•Ó ‹ ""úö5±Cøá\?ŽØ‰ˆPµóè÷‡9‘[ºýY½žd~¾ræÎHŸ:•…}ùŽØ;üpþ¥8žxPu$Bì®í'¾ëµ*gþüxôÊJå´jÅ‚ƒˆˆžÜ#?œ+÷—yÈ=ÄÜÔ'ˆï{-FÕ«+çâ‹ãÒ/VN^ ""ü×eq’áü1ŸH]&‡=¹Ov §¢T»¶rÖ¬‰uHOvïÎ⃈ˆušáü±Œ( W…=Éùé‘Þ¤‰JmÚß¾jUúH ""Àåv„ó¿ˆí‰PÁQ(>öd_å§@•—«ÔÆñ é#F°!"â×\cG8×ÇcûŸ‚çpñaNøñ:?…ê°Ã”³ys<¹lݪœZµXŒñ?^/ÚÐg›Ì1DüW˜“¾Xü‰Ÿ‚uÄʹüòxî¢OžÌ‚„ˆˆûü±»FZÎ7—Ì3)‘îgÚä/ïõS¸Z¶Tζmñ èÊiÚ”… 1ǽS,±#œOÌ#*„ú°‹@}ñQ?¬}{•Ú±#~!}Á'DÄö!±®áü×b5"@xè—Fï »´_öSÈ:vT©;ãÒ;wf‘BDÌAŸ›ÙÎß§DüMØE¡«ø†Ÿ‚Ö­›rvíŠU@O­X¡œ‚+DÄR`uíà4vq8.‘~ÎØsa;úh•Òç·ã´‹>x0 "bŽø‚ØÖŽpþ™8Š8`G‹ÿ»HŒòÒS*§²2>]÷|/)aáBDŒ¹Ï‹­ìç´S°œ âaŠÅ÷ýºcŽIwB‰ËQ—ÓNcñBDŒ±/‰í ç´SˆËm(§Š{ý¼=âsÜEÿ"Т‹"b }E<ÒžpþÃí"ž¨·ÚP8æù-|q éK–('/Å 1F¾)ö´'œ?%–{¢Cuñq ÈŸÅ/Ù½{|Bú€,hˆˆ1Qw*ëaO8^¬M܈MÅwm($Ëý£ŽG ÆÍ›U²¬Œ… 1âÊbªÙÎß›s¢K+1eCA¹ÄïNúQGÅ#¤Ÿq‹"b„}GhO8×kzkâ @ôé"þ5좒'®÷[;wŽþ‹£úÂhË–,rˆˆÝ9lO8×kyWb @|8^ü4ìâR ^á·@vꤜ;¢Ò—.UN~>‹"b„ÔozŒµ'œÿKAœˆ§&,葞ŸAHOÅ!¤óÂ("b¤vε'œëWBÇcâËE6›"ñ¿!½k×hwÙ¼Y9\ED´Þ݉ô«Ø {<‡ø6ØPpôq—í~Cz›6ÊÙ²%º!ýÌ3Yü-ïsÞ×®p¾”Ø臌®µ¡ðè‹£üÐ#ŽP©M›¢{a´m[ADDKÃy»Âù" @nQ ÞnKH÷ÝÝ¥qcå¬[;|¹r X -{„¨—]áü:wC rŒšâ36¢ü Ž»8ååÑ éC‡² ""Zâ[b»Âù½b5b @îR_|Å–ôµ~Ϥ׮­’—\¹€žÒi6daDD YYUW»ÂùÏ ç Ñ¯:¶„ôM~ li©r.¼0z»è矯œ¼<HDÄ|]ìiW8L,#–À¿i#&m)RKýÚ’å,Z½ô>}X$Cð%±“]áü!±qþ?G‰‰ìq—jÕ”sî¹Ñë^³&‹%"¢A_»ÙΟëCà›è%~`KH_•IHŸ7/R!=9u* &"¢ÁsËΜ¿(6 ~À¡(~dKñZî·çç+çôÓ£µ“Þ¥ '"bÀ>/¶³+œ¿*–;À+ýÄ¿ÛRÄfˆI?…X_¾=::»èk×*§¸˜1 ³+œ¿$6$n€_Ž?¶¥˜M÷ú-ÊC†¤_ïŒBP?ùdQDÄü•ØÀ®pþ ;çPF‰ŸØRÔNwû-νz)g×.ûºþ"Ѳ%‹)"b½S¬eW8[<œxUe‚ø™-Åm¸ø®ß"ݹ³r¶o·?¤ëG— XT³àMb »Â¹,_‰fÄ ÈsÄ/m)r#Ä÷üë-Òm mé#F°°""Vш%v…ó?ˆ‰mγ¨Ð©â[~‹v“&ÊY·ÎîÇ‹vîTNy9 ,"b†^#ÙÎÿWìNŒ€ ¸Ø¦®Ÿh~ÍgáN6j¤œ5kìÞE×.éN4,´ˆˆ¾Ü.ØÎÿ(v#>@Ð\hSHïâ><áëA£:uTRŸ÷¶¹õb¿~,¶ˆˆ>Ô/PçÙÎ/v&6€)&,:“ÞÎ}€ÂW1/.V©sα7¤oß®’ °è""zðB»‚¹Vþ±8sæ™%~aK1ÔP<æ·¨ªäôéö†ôóÎ㨠"âAÜ#žj_8×­› ,æÙ´“ÞD|Øo×ø¤“ì½4:p ‹0"âÔïbœl_8—ï ‰6Ä›É ‹ú¤ë)~’I±:ÔÎWGuÿvŽº "~Å×Åþö…ó7Å#ˆ` §ÚÒ«‰×fRô{öTŽnsh[H_°€£.ˆˆ®/ŠÝì ç/‹‰`“l éºÍÖÖLŠûöÊÙºÕ¾Þ¿? 3"æ¼O‹mì çò!QN [™(~jKÑÔí¶–g²4mj߃Fò¥!U¯ 4"æ¬÷‹åö…óÄF,ÿ`;'ÛÒµ³ôE~ƒúõ•³bG]-ð.±Ž}áü·bC–}ˆ VI×N÷ú]JK•³h‘]!Œ1ǼÝm`Y8ZlÀrw©¢cݶ\¾‡’’ôε-}óf•ª]›EsÂÄêö…ó‡ÅZ,óUN?±©°ßô»Häç«Ôi§ÙÒçÏç¨ "ÆÞb¡}áü±Ë;Dáâ?l*°G‰/eò Ñ˜1ö„ô^½XÀ1¶®r/ú[Îo‹YÖ .ôÿjS¡mã¶ëò½pè`lC¯tý€QÆ,äˆ+õ…þyösíb!Ë9Ä£Å?ÚTpŠ÷fÚ+}Ë–ðCº¾ÀšŸÏ¢Žˆ±Pßšhg8ÿ¶˜Ï2q¥¥ø–M…·Ä½„ä{1iÒD%×® ?¤ÁÂŽˆ‘÷5±Ÿá| K7äMéW׬)ÀúÕÑM,(ûº©,]n@ßµK9Í›³À#bd}Flo_0ÿR<—%r ýêÚó¶í”œ“ÉâR\¬œyóB é©K/UNQ ="F·ÅÃí ç_ˆsXª ©#>j[H?UÜã÷R“>>yr¸;é'²Ø#b¤ü©XÛ¾p®ßï˜Ì ¹Œî%{¯m!}„øv&mGVNee8]ÿçy$‹>"FÂkÄjö…óÅYšÒ!ýnÛBz÷Ò’ï…§OŸô¹ð0BúºuÊ)-eñGD«Ý%ÙÎ?G³$ü—jâl éÅç3Y€:tPÎÖ­á„ô3ˆh­Ëí|€è/b?–b€‡ô›m éúòÒC™,DM›¦w´ÃéÇC@D«Ü+~ËÎ6Šò–èÌ ðÍè‡ ®°­€×ï̤ c:ÊY¶Ì|@ß²E¥êÕ# ¢¾+ޱ3œ¿&6géðÆJÛ yuñ»™,N%%Ê9ÿ|ó!}Á‚ôÅUÂ"†è«bo;ÃùÓbC–[L?³© ës“‹2Y¤tòÙ³Í÷G<˜€€ˆ¡ù¨ØÜÎpþ³DºAdÀñŸ¶÷YîyÊŒÚ0š è;w*çˆ# ˆhÜ;Ýã†ókÅ–W€ª1Hü›mE~T&½Òµ}ûªTE…ÑWFSÕªј7ˆ5ì ç›Ä<–U€ìÐ)‘¾ioU±ï.¾ÉÖ±£JlØүœÑ€’€U}ÁüKñ<–R€ìÓR|öÞÜ=gé{!kÕJ9›7›{e´S'Â"ê9vîšë»Lg²„G¹øœm €>gyG& ZýúÊY±ÂLH¿ürZ/"b îOµ3œë;LcX:‚§žø„m A™øƒL·ÒRå\p™®Û=æç(1«=ÎO°7œŸÈ’ `ŽÒDºM–U B¡¸5ƒ.YX¨œY³Ì„ôáà ˆ˜_{ÙÎÿ,öc©0n“uµ… ƒZ¨C·ßÅ.?_%'M > ïÚ¥œ-ˆX%ŸÛÚÎw‹Y"ÂźWGµ“Üs™¾¾¡CÓ—:ƒìê²zµJU¯NÈ@ÄŒü•Xng8A<ŒeÀ¦ˆŸÚ¶Xô_Êd<úhåìØìNú”) DŒSó_$ÒÇÀ"†‰ضh´Ïd!lß^9[¶Ò{ô p ¢g7ÚÙãü߯ƒ² ØI—„…5ïÉäòh³f*µqcp}Ó&åÔ®Mð@ă×"{{œkW%xÀzôƒF¯Ù¶ˆÔpö½8ê½lYpçÑ/¼P9„DŒZó/Ä,yÑA÷J̶Eÿ4¼!“E²¤$ÝÃ<¨ô±c "ˆø5ßÙÎ?'°ÔD+{¥kg‰{ý.–……*9}z0]w騑@‚ˆÿñwb7;ÃùßÄ¡,qÑE÷J¿ÆÆ>Æ}Ï×¢™—§œÑ£ƒ éú¬;çÑQ|Dlfg8_ìÌÒ}òÅm6†ôcÅ73Y@‡ ¦Wº>F“ŸO@AÌaioówÄö,iñbQ"}©ÈªE§‹ø|& i·n*D¯ôã'¤ æ¨7‹ev†ógÅÆ,cñd¬ø‘m‹O¹»kåw1Mµl™n•˜íóèº;a‘çvx§Xƒå Þ ÿlÛ"T[¼=“…µaCå¬Z•ݾnrÊÊ-ˆ9âr1ÏÎpþ]±ˆe 7èHŸg´j1ª&^›É[«–r–.ÍnHŸ7/})•ð‚ëˆæÚûѺäºWúö-Jzë’LÛâât¨ÎfH6ŒƒSßGÙÌ?Ïd‰È]ŠÅ›lÜ=ʤWzRw`9ýôìô]»”£Ï¹fcåKb;Ãùâq,M BÝhcH?ÞÝåòÝ+}„ì…ô•+UªzuB bL|Zlgg8ß+veI€ý9/aaF½Ëõb& ñqÇe¯WúÌ™ÄxŸ½=Î_[² À/þÓ¶Å«…øX†½ÒlõJç<:b¤Õ]¢jÙÎI¤ï|#}Ä?Ú¶ˆ5ïÎdanÛV9[¶T9 §**”Óº5A1‚^åv‰²0œßšHß8$­Å×m[Ìjˆ7dò QÓ¦éÞæY螤?:b¤\gïDWˆ,7à‡ú⣶-jz¡ÝÉB]¿¾rV¬¨zH_°@9º[ ÁÑúç³ì æ_&Òw~2¢¦x¯m œî•¾$“E»´T9‹U=¤ŸpÑbßÏ´3œ.žÅÒUE?3}½… š"îñ»xW«Võtw˜Ž Bˆ<@äÇı,)M¬lÃ8@|-“Î8£j—F7mRN:"D‹|Aìfoó.,#'‹Û¶øuŸÉäA£Ñ£«¶“¾x±r Fˆ¨[±6··Çy –’~âŸl[õã#¿Êda5ªjK8B Ù{ÜV¬†szœ€1Žß³m1,˜Éß³§rvíÊü<úQG’Còûn V Ã9=ÎÀ8Ågl[‹ÄŠLú£V©;3 é›7+§^=¢a·Š…v†óÊ=Î $JÅŸÙ¶8ê6Œ‹2yШM›Ì_]¶L¥t‡B¢¹sݲú£/ÒÓãBGï}ÛÂ,59ƒ6ŒúÕÑÔúõ™…ôéÓ Nˆ»Wœiç®ù§âT–°…eÛâªû&_á7,äå)gÂÿuêDÐBÌÀ‹µì çß‹(ïeôKz7Ù¶ÈfÔ+]‡ôñãý]Ý´I9uë¸}øm÷Ñ1 ÃùJ:Ä݆q“…‹­šáöUö †ç#Ä€\içDŸ‰3(åGô {_ØÒÏ WzjàÀô¯!}Ú4Ââ!<ÇÎ]óŠc)ßg&¸ žU‹p?ñ5¿bÐ !½woBâ7¼:ÍÎpþ'±7er¾îÂgÕbÜA|Îo¸èÑC9»vy èòÿ/Õ¦ q?õ¯W£ì ç»ÅŽ”kÈ%Žß³mQ>B|ÔoÈèÜY9;vx»4ºaƒJÕ©C0C_ûÛΟ›P¦ Ñ à³¶-ÎuÅ»ü†v픳m›·ôÅ‹U²°€†9í‹b7;ÃùCbÊ3ä2ú±_ضH×ÈàA£}ÇW¶nõÒ'O&¤aÎú´ØÆÎp~K"Ý çÑ âͶ-ÖÕÄÿñ>š5SÎæÍÞBú€„5Ì9›Ùί )ÇÿE÷J_eÛ¢­û1_â7„4i¢œõë=]u¸4Š9äbmû‚ù—  8(VöJ_(&ý„‘òrå¬[wèK£7*‡K£˜þX¬i_8ÿ\œGÙ84'‹ÛÒ'‰{|†ô”‡ôäÂ…Ê)( ÄalÕ÷9Jì 绵<ÒSü½m!}€ø†ŸpR¯žrV¯>ôq—3Ï$Èa,Ý.ØÎÿèÖðIKñ5ÛBúQâK~º»HHOy éè0V®vïqX6‡ß[S^2§žøˆm!½­ø¬Ÿ°R·®rV­:ô¥Ñ¶m v ϱ³SËsbcÊ*@ÕÑmo±m±?Üï«£ú2è!B:—F1ê&í ç÷&Òï.@–(+m[ôŠ¿ô`jÕRÎòåßI_ºT9EE„=Œœ{Å3í ç7‰Õ(£Á°Ê¶Å¿Žø3?;Œ5k:¤O›FàÃHù¾8ÙÎp~¥ûdªø/›B@©x“Ÿ@#!=yÉ%?î2x0Á#ánq¬á|%åÀ#Ŀۊī|†tç`!K£ß‡ÙÌõcgçP&ÌsŒø›‚î÷¼ÉÏq—²2å,[vðK£º A-ôu±¯}á\ÿº6™òÍÅW- ûºXx:5j¨Ô’%½4šªV@ˆVù¼ØÎ¾pþ8˜²>º¯ñs¶…ô9nË9ÏÇ]vqtòdB!ZÎÛÛÎÿ,ö¥ØC-ñ>ÛBú©nw OÁ§¬ìàG‡ !bè>-¶°/œËwáDgÊ €}èVjÿc[H.¾›…ôTE…rÚµ#$bh>(6²/œÿNlBù°—¼„…½Òû‰oz Bõê)gíÚ_ÏK£Š¿væ²ln=&Ö¥ìDƒù‰t«5kÂD/·ë…§@¤;·¬Ysà®»¾pi z¿ØÀ¾p~·XJ©ˆÄm ]Å—<†¢ÔÁvÒçÌQN^á÷çbmûÂùÍb5J@4šH·^³&\´s»`x H©”>Ör >z4õ.±–}áüÛ‰ô}ˆ0}Ä¿Ø2:ˆ¿õ”ÊËUjƯôÊJåôèAÄ@¼ÛÎóËé{&:Š{l ‡‹{ LM›*góæ¯wvÙ±C9Íš(1«Þ*Ö°+˜)žKˆÍÄ×l éÜîž‚Óá‡0¤ï;§®Û3,1 Þ,–ØÎ?§R¾âKSñ›Bz¹Û_ÚS€jÑB9[·~=¤/Z¤’……LŒÛιçgR¶âO™øK›Bz-÷Bž§ Õª•r¶mûzHŸ:•‰{XdW8ÿ§xå w(dSH×;—·x T;+g×®¯‡ôþý ›èÛÿ±/œëÎKƒ(S¹‡î£|“M!½Ô=fà)Xuë¦R_½4ªÿûöí èÙëí çûSžrݲm³M!]‡¥k½¬¾¾‹®/’6lHøÄCúm±À®p¾7‘î¸X’H·r³"¨èÐt¥× 5jÔ×Û/®X¡œ’B(Fiçü-±¥ögZ"Ý5š~…×À5aÂ×wÒÏ:K9yy„Qüšß±/œëÎJM(Ap N?¶)¤Wz ]:ˆO™òõ>f ¿âwí çOŠõ(=p0†ŠÚÒ+¼„¯ü|åÌžýÕ€^Y©œcŽ!˜â>o°/œ?"֦䀊³%ȹ­ðÂŠŠ”³páWCúŽÊiÞœ€šãþȾBkRjÀº›D2aÑNúN/a¬zuå,]úÕK£ë׫T:ÕõF±š]áüŽDú-ß´÷ØÒwxdɲ2åèN.û‡ôÅ‹U²°Àšcê¾úÕí ç·'ÒodL[q·-§Ðí_}ÈpV·®r.»ì«Ç]Î<“КCÞ)–ÙÎå‰sÈÍÄ7‰ˆµ`lÒ$ýpÑþ!ýØc ¯9à]bM»Âùìœ@–Ñ­à~cKàÉ×{ kíÚ©ÔÎÿ è»víû#Är!Ԡ׋”‚:âc‘ é]º(§¢â¿!ýòËU²Q#Âl ½]¬aW8¯ó($µm éù/Ž:Æ}õ¨‹¾DZRB¨‘÷еí ç׊ù” 0A©xŸM!ÝÓ‹£'~5¤Ÿ{nú#Âmä}@¬kW8¿2ÁÎ9F_x»Í¦¾ëPA./ï믞t7â>(Ö·+œ¯¡<@Xè‹oß±%éî.WzymtÑ¢¯†ô¾} ºõI±±]á| eÂFÿŒ¿Ë¦~Õ¡‚]i©J­\ù߀¾c‡rZ´ ðFÌçÅ„s€¢/Â]aKP*o9TÀkÐ@97þ÷¥Ñ ”S§Á7"¾&v¶+œ¯¦ €mèôu¶&ÝûLJ zÍ›«ÿkïþcí®ë;ŽoÑÖÚŸhK¯¦¸Dª-mˆsͺF”TƦ€£¹Ä”‹ØÉÀ*kµ+íí6Ü2æ¶f,àdÙ–1AÁX!nÈHQA„Þs£›f*´_ßßãN[î½ííýñùœsäõoÓœó=ɳ§ßóùÖöìi~“þþ÷—Ó¦ àÌ÷ÍØ«óŠó>þ@ήÏ%œ¦ÇîééW^)‚3óWùA(Àˆõ­ôMúºuÇÿhtýz1œážŽ½&¯8¿ÕGh%7åRÕÃkîÉéû÷—µóÏÅípìÍyÅyõÃhçœ-gK.A5;vß0Ø_=°èïhFú®]emáBqœIœoÊ+ÎoóÑZÙ{cGs‰ôOžìŒô÷½¯éÛ·—µY³Drâ]Wœÿ±4Ðþ —H_Ðx,üA8gNYÛ±£éï~wýÛu¡œd[ÜÖ0nzr‰ô…±‡‰Âîî²¶wo3Ò7nË vc^qÞ'΀vt].ÁuNìËÃâªUÇŸì²fhžÀíMÊ'Î?VÔÆЖ6ÇŽä^K‹2/½´è·ß^Ö–.ϰ;c“ó‰ó?+|st€kr‰ô±Ç‡ŠÅ®®²¿§§éúPýu=nûçÆ¦2‰ó;Ä9ÐI~?—H_ÙxBå ÷£OŸ^Ö>ðf¤_w]Y›2ELÊÍs[ @Rï,2ùáèëbÏ ”;w6#}Ó&A=Æ{4¶4Ÿ8¿'6ÅÇèTo/2ù&ý‡â ‘Ë—w²KÿÚµÂzŒv¨q«Q&q~wl²%ÐéÞUdòMúUÃÅdu’K#ЪX÷£ÑQïéØÚ|âü¾Ø4G€º÷fieï0AÙ_ÝÞâG£c²ê+~+Ÿ8(6ÓÇàxÙœ“¾m¨@¯ž*úž÷4¿Iïíõ£ÑÓÜ•ùÄùñ9>~ƒÛ™C´UçpÿÕPq9sfY»ùæf¤_~¹àá¶ççߌ½ÔÇ`x;rˆ·©±CEæâÅå@õð¢_ÞîR=yTxŸÒöĺòˆó§b‹}ÜNMߤψýÓP±¹re3Ð÷í+º»øIv ñŸ ÞÛøëË}ÌN]õÇ?Í!ÒgÇ*:/»¬y«Ëm·•sç ñ!ö/ðdðž~?v¾ÀéEú9DúY±/ ž“'—µ-[šß¤÷ö–ý~4ú‚}66?8ÿïØ«}´N_õИ»sˆô—Å,@çÏ/k»v5#½úV]”ÿÿ‹-Ï#ÎûM)€Ñ›»7‡H_ûÖ`!úò——µ¾¾f¤_x¡8o<ˆhUqþ\ì>Jc§ú&ýrˆôõ±g Ò š^ðröÙÿ ¢7äçoò{Ócäé×¥]]emóæf¤Wg¥Ï˜Ñ±~Cq~4v­Àø™QÔËž<þn,L#ȶmkFzOO=Ü;,Î÷åsÖùu>2ã¯z,û#©ãoRì/†xˆQmÏžf¤¯[×Qqþñ|Î:ßí£0qÎŒ=‘:ÏêAF]Ô<}ïÞ²¶dIGÄùÁؼ<âüo‹ú1L s‹ú!“Æà¼Æ9ß/Ö+®h~‹~ë­eíE/jë8?ëÎ#Îï/ê'ÿÀ+b?H…çÄþó„`­X4pà ÍoÒ«¶iœ?{MqþÕØl €´Öõ‡Ð$ÃUƒ‘¾paYûÈGšß¤¯^Ý–¾98?;ÇÇ ¯ý}l¯YSô·½-»@ïÍãG¡ïrÙ´·ÞÔѹ,öø±1|Í5eÿ-·dçb“ÓÇùG]®¡/u¤_{æ—A#}jã!@9ú¦óꔕ.K€Î–üŒô…±‡Çù]c ¾Gb¿ír ’üŒôóbO&Šó¯Ä^’þÛó­.CŽU‘þ\ÊH}S‚8:vãÈÔ–Ä¡ZÞ2ÁÞ“>Î?WÔ° ƒÚ—2X§Ä>>Aq~G¬+mœ+¶Ð%Àp&ÅîMésc_ç8ÿLlfÚ8ÿQl…Ë €S1#ö¥"ñFŸ§8ÿzlyú[6ºÌ‰—õ‡æ$ Ùß§@¿4ý}çÛ\^œŽê¡9?I³»Ç8Îÿ$}œßëripºÞ;š*hψÝ7Fq~ãÏKç_‹ÍrI0ZLµåâØc£Œó'bËÒÆù÷ŠúS[`Ôª“]>‘2Ò×Ç"Ð7¥ÿQè%.#ÆRukÆ£)#½÷4ã¼/ý}ç;\>Œ‡êd—þT¡;)v`„qþ`úóÎÿµ¨ÿŒ‹µ±Ÿ bôÅSŒóêõiãü±¹.ÆÛ• £·|eìÛ§èW§óÇ^áR`¢ô¥Œôž“Äùéï;ÿ—iJìÓ©¸+ö—CÄù—bsÒÆù>—)Ì/ê÷Y' áÙ±ƒ'Äù³±ÕiãüÁØT—©\ûßTA|Á ÷£oMçßí’ µ«Fñÿý´ŠóMI÷÷8»Ø¥@.nOé»bKÒ~{¾Í%@N¦Å>_$üÑhÂ8¨¨ÿh²rVìp‘þˆÃ‰\õdÕ3½õäêÂØÏ:$Οýš·€Ü½³CýFo5­âÎ6óûb“¼Í´ŠY±Cmç߉-òÐjÎý¤Íâ¼:ï|ƒ·€Vµ©Í}‡·€V××&q~°pÞ9m`jìs-ç?Œ-óVÐ.ÎŽ}¯…ý2o!íæu±#-çí­ ]íj±826ÇÛ@»ªîGÿb‹Äùs±UÞ2ÚݹEýG—¹úMÞ*:Eîç£;R€ŽóÑLãüb˽=tš3b_É0Ðßê­ SuÇ~”Qœßå- Ó½%“8ÿvl®·ŠâïÇùÑ¢þ % Ì‹=“0ÐïðÀñ^;’ ÎŸŠ½ØË/´m‚ãüùØ/; ®z8ÐÁ ô]^rÞ¹ÅĽøµ¢~;pWsœÿ<öJ/3œº»Æ1з{y`d^ë‡8¬pk œ–êáAG‹±=µe•—NßÞ1 ô[¼œ0:Õí(ŽAœWÆ4/'Œ^uâÊÏ §¶@6¶Ž"ÐoóòÀØšûLáÔÈÆ²bdO­NmYíe€ñóöú./Œ¿»O!Îÿ«pk Lˆê)£Åð·¶\èe€‰³¡ú)£»½<0ñþ|8ÿzl†—&ÞÌØ¡âø[[ÖxY •EýI¡U ïõr@zŒ}£¨£$6-v—€ò @;„ÇY ÓIEND®B`‚PyQt5_gpl-5.10.1/examples/desktop/systray/images/trash.png0000644000076500000240000002754013245231431023610 0ustar philstaff00000000000000‰PNG  IHDR[\fÊUsRGB®Îé pHYs × ×B(›xtIMEÜ %ÍÈÏbKGDÿÿÿ ½§“.àIDATxÚí tU¶þ¯¶CÛ-Ü›bÛ´¢¶ö Ý¶¢>q ª’0*Š ¢ˆŠ8·-ˆ 8a§EQ[['"!u+„H ¦@˜Ç€!̉„©W»‚Hn†›[uëÔù~ÿõ­÷_½^?ªÎ>ç˹§öÙÛá@Y¼2PºÈB_—,u¹ÅQNEüXûŸášâ4¥¸ÜBº¦µ 5Óþÿǵÿ©Ö—þŸ«ýßûé¿£ÿ÷WjÿÙM“ni<ý;ôïÑ¿(‹wÑs v ërq€üwÍàèç¿q*‚Z+6L¿©âìsÍ×ôµK‘^wÉRÿ¹Ûßè=L€ÿQº¥›œ²0PÛ1†jf• )ÏbfÚZåé諒½'½/½7‚0މ½/ ŒºÛéGkæ3WÛæÚÌX›)ý½é¸c‡8b^‚Éðš6Jp;—[z0À-|ªË*ÍdOòi®ë츤й3· ïˆÙhtçJf¡™kØÙS0Sïw¿ô‘î+Í€Ch\1¹àœÀ(±“¶3{V3ˆYg¿èÃ(}o¼Gµ?`3]²4¬ô{Ì:ø9¸±öƒ–þfh¾ù¦Óø·•»Ý€Ù€Ípºƒ®‡ÁZ×x!×a–À(bº^ærKOi‹z©¦Ó06K‹â³8@‡t–Å_cöÀÂ.VC)Ù̪ԥH‘úÇ5€åÎaÛi‹sŒf°;aVö:f ¸" ?ã’ÅΔbä¹nd•hšà º³“ j¯Ç g`D\ít)Þ ‘â½XE²xQí/a LÒ´™æƒ#f௰8ð¡¡ÈÒ`¤mA”¦ýÒDó‹oÐv,N·ô‚¶˜2`(P3j4ìÂN€– :.ÐËb' y§4P €FpEJ‚¶XVÃ0 |L[‰iœu8{Ó &ùZK4Ó½« pÍå÷u¨-i(Và uŠæY›h±=Vàíã×%t3e !³Ë=ºq¥bû¸¥{´‰ŸŠ…ù3G—: c5[Bõ ¨@ :dÕPÁÔ]¶âl©Ã|,pÈ‚ù¹‡ŠøV)`j;s¶Å76ÃúGìãêK«Æ«Ò¢Õy™+Õ-…»Ô½%‡ÔŒÒ­¸%ÖÞ3m{£g³ÂãÚ.„Y±©î ^Q¿ß9[Í9Q zCQe‰ªì¯>¼x´¨°b¼BÓ-=ŠÕ ˜9›Õ&î{"S|vå8}§êKh÷;rÝê‘!lŒ…"ÄÒ<ÆjÖÝÍÊRœÍ²©ž‰ÿò¹ÉžÏ~Ít-}›™³Ü@Yì…U ¬ÅÄÞ—Öñk`\l©ãÔîꤱjöÿÌ‚Î};G÷e#cA›×”ŽEüµ¤Ö&ä{ºqfuCÁÕжÛç ae—»€_q)âÓh¬È¦ºÎ}FÍöòã—¯(®*Uû.Éʘ•éÕÄ0•°.Ÿ­iãbPÝâŸWKªÊT+Pu¦Z°äMv.Bб®û3øíäàŽT¾¦ÅêÑÁÃ^§sEé©rõθ§YÇäË#{\7ÆÏ*Awj-¦Å¦Ú+Áêêümª¡3Ü?LëÃÒxfµ•…;à ÀçP²·6ÁNÀ´ØÕ'Ûܪ•™¶o!kcZæ’¥þpàBC/<›ÖÃbXôå¿òt•¥Í–ÒÏî_8‚½‚6²Š6< UtŠéz*uÙC ²V«,~ìC×{ëHÝÈÇ^A](¿Fžî‹ÎÔK ­eÈò±¬Žõjtƒ-¢ÍéOÚÄÙ£²‡è,”%Öäogy¼÷ÑE¸h—ÒíVº“²‡~Õ[-;UΔÙÒ.ü–Ù³Ü~'7@ þ;ÜxÎ8ˆ BƽD?ÉYä½Mß±>ö%AwÃU@}£•…îÚ_är”½4yW“f»$g½Æÿ„SCà. ÎÑô61*aNö“Ñe‚®Û$Úº’„˺¬0@ÛÑVÁ˜ì'jMS^}ReºZl“êU¸üÀýŽVxFk_ýqF?•eBæ¿l£xhëLû ×ásGK×oOÔì«[c3m¶¿a·˜œF™FÎÐ~^Þ­ýu÷¼aL›-×ÝáRû(¸G²(jA¯€ñÑ‚œeú/mרT¸"%ndçm¤x/òhqf‹3[Kìp£D£}Ïh»P¢5Lˆ¯l„RÆnÕ…þX؈‰5˜œPS¢‚Ü9' ,e´t¥øÎ¸§̨J\Î FÙíZ-(Ç0)¡–Ô¹=\^d £¥ààù/!.«0 2äj¸? ër±ˆÍ˜ŒPKÕuî3j¶Ÿw¸ÅU¥jßE#æ]xXãH/‚éáœbòH¡¿º¡`‡ßÎh)Cqh‰¤÷ázþ0ÚHIÀŨµj§©¡›ÃÔSgªMKïš´3Ví8µÆ¿åªT„®p? ŒêÝVøƒ˜|¯Ô3ñ_†·=ß<[´ômŒwë>˜ õ4kW«H‘˜t¯¨Hê³+ÇùÜt÷i&;rÝê‘!gß'DÀÍ0ZYì‡É­î ^Q¿ß9Ûë41*þ­ì¯>¼x´nâS_¬ú äòÈWh]„É™)jùÒªñê7é1ê²ÜMêÒ5£4ï¥Þª*±ösõÿæ>­·äÁتü¶á=áŠ8>€ õoÙ¤m¤Ô ‚ :ªq*bÜчtˆ/G5/¨µêÝ·IQî-4%ª‘+&¼Ð¨¨y¿¤QMjð²wÕ¡+BÕ“ÉcƵ¯SL×Ëà’>û(&ü“ê\ý%æuÔº ê„´hú*mº*ïIhR3ö'©qÉMŠ:$çmnTkò·ë_ó›}¡?ÿÜó|e•åë·¬šRåéS*ümö Ìý¤ín?†Kú"§VºâòBãoÞÚ𵺾 ©n å|ñc漇Ë(6ÞZTÇN·¸“©y¢ÊQl™lxr>ð…'‹ÕßEõÄ\oø²ÃJfërj‡by§ë¦?¨§+-Ê^«V™tOè–0¿=æÞJƒášÞ_ÉÍÇ$j½®Šê¥>¶ìýl–µ¶Þà\JªÊÔk¢À¼nX9#{üîÙBœ²ð&ïEPÈxéÃØíg)`O¶¹1—=ICáž-1ÚÈn×¢C®9¯z%¾ªW¡Ê+/„‹1uv¸vz_Ìá†Uá º.ÚܳZ·8 “Æ|Ý5w¨¾k¢Z«™ 즂 Óà¢ÍNõB?1+/ÕyEJ™5)¯>©÷SÃ\m¸o™3R¼nÚô®v5&‹õŒ÷íSÔmE{árâë31?=k)Ü´±³ZE Á$±¶®ŸþRÊ,?5¯Ä¼ôø±L„«z¸À  ÐFL¶j н}¤”ù™c.zÖjkÈRLvuåÔžH)ógjjÔnñÏcz®›€ª`õwµÂLû¥”./‚#Ìâìõ˜wžÌÖ-®…ÁÖý(¦HabØ·¯•¬M)Ë‚3ăI#1ß<]ãU„ÞpÙ_2pVËaJð› w¡În›È@ˆ ÂdàSŸýØÏå!éì´Ž!ËQ`¼‘‘÷Ála&ôÇýRÖJ蘦½ŒùÔpØ\¾o‹Eÿ·Å ÆRÊNTWÀE[Àð5ŸayèWÖNÿÌoº—"ý€I5'¥ŒŒ—Ê ‚Æ¡ì÷”™ }Ç¥ÑvÅ+µ¨Ä$€¼I)˯@J™'è$æKƒ5ÊÛD‹íùË@ÅPòEJ5¿@¿P‚ÑÓÙ­0–/§ ër±öây>äëòè¿VË—iÓ1/¤Ñ™µ”ð"â^_ÙŽ˜¿²ñY­ô ‚ìÝ0£_£×Z3ËòÔ¯Ò¦«Ášñ¢@I}õ^8œ›Ýí²ÜMˆ9oÕÀ´œ ûF㶆7{±eŸ(P¿MÑ/àîü/JÊ^ÇáÒļއ²éö¼šâÄ1ßèŠÈ¯oPUלÖBOH‹Vû%Òÿoñ:ŽBÂóܤ†-ÉAñ†n”uˆ/·á1áI×7¶â?>[„…'‹õ³ß77LÔw¾¦õáj,ã3S¸ÙÝöÁî¶Ò‹âcv²dŒzó¬Gõºf\Á½-ö SÇóÞøg¹ÙÝ®ÈÛ‚5T_sle´mÃ{j[ö*¶õ¢ Xþ€>Æ‘ /Ïݤ7u Ýòƒ¾ÃYðOõö9Cšvvuôýúͦ»ç Ó‹]Ýô½±'^ÝP°ãç½f§°-ÈZÍÍîöþ…#°ŽÎ=·=Õ»­ŠÎ E`ퟲDÝŠ«J=ª¹˜}QƒºÓò²»]™·k©ÞºŸ@7è ^ö.†Ð}Á+¦íÒÜÜìn{&þ ëéÜeó…“°»8“ 3¸gÞ0ÓǷܘíªÃ©XSç%Ø"+Áé–E@[¯¶LææÆÓ5Ñøåˆ&ýØn —2O°®lV Ìå–"ÌÖ鱫'OWra{Kùmœ©:n•ñzn+„±í´ªãÔBhýŽkuþ6nL€²ü5Ö"CÔÜò#ÜŒ5uºÀ«S+é]íé±uz‘£ÝÝnûKÌ#Ì\ƒf9ÉXcuó¼ÝÒMì~“Å·DïugÜÓjyõIn¿Z¹P±qêrÀË7êjµö³F±œ_»ôNÔŽz[Ñ^nŒö`i®eZpÏ:°”›qÿa׬·_´„唯jлsZú‰Ç Ô –.XeüXô7c_Q]‰N¼¿äÛV1™Fµ"<ïD¹xŽIz$¾b¹?vt5™ÞÙø-ÖÝO9·ŠÂ^~­,|„àµ\Tw–èËÿÝ~¸À€eõp¨ÖŸ¾»ýÎk98:àiGK;G+7#¤¬ˆÓ5g¸‰ÇÀ¥c°kµ”-§x‰öÐ\óó;§ïOâfaGï_ÄDÝ\žê%ÌË\‰µX«Ždñ"vJ**Aw"hÍ¿ÆKÖAAÅQ½#0+±y!å#nÌ–ÒÝüqMÚšµ¤. ]ÑF"hMëÑ¥oéx€nÁQ[–âCµwkªi7^[û9Ö¥.i8;ÚD”HÎK³AJ-¢EÌj‡ßä¼ÍܘíšüíXŸµuf²d¶9Z÷“è#؉ê .ïž’LKåÏz#J‹â*þ~ƒ6G±V…CLíå‘=®@°Îu ›:¼\½¥2‰“wÅ©WNíÉ|ì(5'¨Ö¬¨¶Q‚Û±P¿6Áú%Ë`SáN®+<•ü¾­RòŠ*K¸‰ßŒýIX»$YñqŒ1Q3C^ l)áEÛŧ†yå…X·ºÙ ¯¢X8c¢6à´Û³;´û»kîP[Æð³í‘\ý:¡, î?’)Ò,|Û “=WÔ®ÛÞ9š§l]ˆú¹”q\™­U¯P›j¶²¸ÞÚN›,^DÍÓ`°çª½¬®ÍßnÛÅ9>5ÂÖñ ™ÿ2WfÛñh¬[ºIz¡e½¶,þAòœö•Y–g»…I5¨ó¯cwGÜS\™­?ZÉ[ó&YÐõV.>ÓAjü2CF©½ ÷íߨ>ntóÍî$9' ÔîÓëAtœÚëU?·°®Ù*ÒëRãúsÌuÓ‘tÛ,Ô[cÛ>f·Å>ÁL<(—;[3Nª·AÆI]'Âvƪ§Êêèõ_ªÃV~ öK¥ç~Ó;äBsymW3Û‰Póòo¿J›Î| ?º Çê5Ü–ˆŠç˜Í©3Õj~E‘šZ´G]”½VϤ™æ'ÛÜê[¾ÖÛ®“iRý‡ib¶_X9!j¾„„çÕU‡S™5[ÚAñ§w[ye÷äéJ=5ýØ=Þñ™)ª²w¾~uûýÍ“ÔW×üW}bù{jŸ…ÃÕ®sŸÑÍÓîçàŒhŽ•Í6 òÎt#÷.PËN•ûÕ•»±ýƒE‹V©Ͷ•Ÿ€Ñ|¿s¶)1O8”ÂÙyxŒµác„*k9mhè…vpªIÊÛÇ«Bµt͈ù¾ãÙ\knùkêq¨Ž ,ãµeñ×vô%9ëát~†ŠÂ˜Ñ.†ê³Þ®¥l?Šºžäˆx‰eÌ60ªw[»øqO©%UepMý:ÅK¨ñ"0êev|÷”dr7ÎÃ×|ce"õËæ—Î×3+Bá‚&A&ÍŒ-e;øª…ce§}K,6¤¬²|¸¡Áì8vÀô¸~œ*s9ÖWGßcmXQ<ÜÏ¢|[`,‹³×›רŒåÜ3Õ †©²U<|%OA 6-ÀX"öě׏ç¼òB˜ªg-·žÙ*B,OA½þK¸¡Á|¸uй7…”`µŠÃL„zꮫH1–3[í¡~à)ý’FÁ æåU›^ÿ‚GèH ÆÚ°œnñ{ f#Hãy ÂM³…̃I#Mé“Éc¹gº cõ¨qV̳ÅÕÏ ·¤ž¨®€#5Ú43¦tlÁ#ߥς©z’,¾f=³•Å¡¼‚j€ã |f3ã9ëÀR.ÇùÔEhÄl…'­wf+ }y DìÁepDƒ8ZyÜôx¦ÝÏåXXû9LÕÓ/XYêc½3Ûˆ Ûx Ä'ÛÜpE›|!o§é}¸xdð²wa¬ž4EºÅrfÛ6¼g oxvå8¸¢A,ÌZcj,é|˜Wz$¢.‚'Qc‡Ñ®„§@ Ïà bÊƒvwø Wá¨Ãª¸qOÁ ŠT5* ÒÙŬéßã•k¢€±6l¶[¬k¶²8—·€P hà{^\5ÞÔ8ÎØŸÄå8Ó9˜ªGͶ²Ù~É[@Väm3À‹^35Ž©E{¸çÃåE0UÏúÜÊfûo ß=Îh·Æ6ï#ˆ"é­Òy„ÒÝ`ªž..‰¯XÙlûñ1&Â} ƒwœÚÝ´þ#öqnÇz9ê"4R„F|À²fÛVîvo°ø ¸£9r²ØÔZú6·cM·æ`¬¯êv¶¬Ùžmi~‚§€ümö ¸£ÙV´×Ôþ{ó$nÇúû³aª g"·\ óŠˆoà*é™ãó>£XµÚÔNÛ·Û±·5ÆÚaÃêh:™·ÀP¯,à;~Ø5ÇÔøm.ÜÅíX¿†ºìÔ±­o¶ÒpÞ—‘ ‡ô!¡›ÃP*Ó$žXþ̵á ÿ´¾ÙÊ¢È[`>Û ‡ô!Ï¥ŒÃ™»IôLü̵Áj_Â}–7[ Ò¼òÒ‡ô^8Ü´Ø=²d ×c};ê"4¤š€°§ƒ´‡Íá)8Aó_‚Cú[f?nZìÞÛô×cÝ9º/̵~&Â!+Èâ ž‚ÓiZ¤ñgjjÔ+"CL‹]äÞÜŽõ©3Õú™5Ìõ¼cŠ0³uÉ«¼(¿¢Né *Žš·Gvp;Ö4ga®Œ~ã¹kêépJ°¥p—©™¥§Ê¹kJY„¹2ÒÁ#1¥=t)OŠØ§ô ‡RL‹Ù_cr=ÖT±æZO%tÖÁÚC/å)HïlüNé&íŒ5-fýæz¬gD]„ú)_â"k¸ÜÂx ÒÀ¥cà”>àýÍ“L‹ÙÛ¿Á6ìù­ËÇ2g¶ŠÐ›§ ñ\¦Ï— [ù·G?…'‹Mý÷>J€¹ÖËDC˜3ÛŽ‘=~«=|%Oixm…íK̼Ѵ®àG˼wåéSê}ñÏémjÌbäÚÿÁ`Ïͯ-ï,‹¿v°ˆöKx ֮⠸e+¹yÖ£¦Å«¸ªÔ2ïý¿£LOE{2y, öÜâ3‰VÑ^`OÁŠÏL[¶‚Ó5gÔöJ°)±úÓÌ–y¹ê•S{êÏ5áÇi¦ý»½_…Éž#i8³füWž‚õ…¶;ÞcfóÁ‡’^·Ì{SV„?>´Þ÷$ ¶ŽÚ(Á7:XÆ¥ˆ™¼ëåUÃ1[Á¦Â¦ÅêM‹ôŽ‹ÍX~ÎsýaZ}‡o×NG]„:Úï`·ÆKÀBæ¿ Çls3W˜«)èŠ\RU¦Þ8³¿_Úª£.Âyçµ²ð-ófëR„‡y Ø5ÑÀ1[Áw鳸º^My¾ =õ3³kP0P¿¶/û;Û°'O)`GLΕ´ïnüÖ´8­<î×w¥¬JlèÙ¨{‚Ѥ£.BÝ,„“bÄËv@{¡8^·6;\ÓK†®5%FœÑÏïYT¹±ç3ºdçʼ­0Ú_4Ëadi0/Sö·kzI÷¯˜£¾‹Fúõ=¿MiòÓ n"{pLö—óÚ¶1[Ú¢k/UÁCàÆnú®é%T…ËŒ^ÿ¥ßÞñPÙaõwQ=›|ÆÉ»â }ÔEøYeW…õýÃN¸!–‡à Zú6\Ó ªkN«í” SbîÇL„æv³}fE¨¡ÏñáÖ)0ÚÚ*_3v鈃x^—9Càœ^s¢À´­Îßæ—w\µºÙÏH)aFòÚÚÏa¶úÇ1i€íÌ–¶êÚ˰{ð躩™ÅDì}7+FE•%¦¿ß‰ê õ¦Ö}Øw<Û°ç²u\ná8³…gš‘•0›‡ î-9÷l!s2’M‰Í ~ÊD .¾-}V÷žÞÇÌêjNùšî°+m#¥ž<‘~.‚–ñõŽ™¦ÄæE¯™þnÛîõªÀÎ )öLtÜŽÙFÙÖl©·ö’vâ—iÓáž-ÄÓm*Ö3šÊ©õW´«£ïçÝl÷9TÇ;Cm'ìÈ­ùîÙBžJ~ß–™Tƒ¡5ÏK©b¾† •sŸ…àÞvØvJÐïµ—=mç@öH|îÙB‚½ÜýY9JFR¯Ö<ïôýI>®Üò#¼›í©²x¥ƒ´—M°s0ý}”Eþóˆ)±1³Ï—/ú©½ºæ¿†œ!sn¶q^p¹¥íP:a *÷ç©( «“²×ùä™o‹}Âç϶4w#çGÒýܘ­#¬ËÅÚKçÙ9  vÀE› KÚ)áäéJõÖØÁ>{n:Žð%3ö'ñl¶9Ždñ"OÈâ[vjÔ¾D¸h3Y“¿Ý”˜ŒZ7Á”÷·5ܧÏMEcXL³³hÑ™7¼áœvo°kPC7‡ÁE›IÌ%¶ÉDØ]œ©^âÓç~ÝÇ$hnrj¶%Q½Û:xD{ù¯íØÁËÞ…‹6ê(k‡î Tƒ¶÷Âá>î»æõésRj"§Ýs¿pðŠ3²ÛµvM»#î)¸h3¡Ÿ÷vÈD £#ƒ>èø´U¦ãÐl«]áA×8xÆ®¥é§$• ÖXüFg"‘Ù­6>3…¹œf”R´AwÛ5Àû ¬Úd'îÖðXÜ¿p„¡ïðÏÕŸúüomøÚgÏzËìÇùû0)ÞîúÙíF;xQöZ8i30rGhF&õó2º-x·øç}ö¼WEõâÍlWÃem^ lâŽpÒ& :¯fĨ63Tgàv*hÑ¥’ª²V?oyõIþÎkA‚Ëž³»VÚ-ÈÃ×|7mªýËr&ÂgÛ#™ú¥dÖ i9ܵþ‡2Én¦4 Ð8Ër7™‹#d"ì-ÉR;NínÚ|zó¤V?óæÂ]\™-}‚»6|v»ÜN¾iš$rïf3^<ÚÔù2ÿåV?3íŽ9*£˜Wå(3¡¸ªŽÚ§ÊLf"Ì>¸Ô/ýíÊN•[2Ø‚ªABS5´¿Fv ú¦ÂpÔFxeµñ·™|}Ý•þ€Þ8óa¿Ì§å¹›ZõìÒ¢y1ÛùpÓ¦v·ŠÐ•þ*Ù%èF¶ý’Fƒ°±>}æ77LôÛ|ŸѪg÷¦ñ$ƒ]sÏ`WÛüÌÅ.ÿ`Ëd8j#Ü÷¤á1H9¼ÕgÏK¥3ͨ½kÔG×WçaWm&¿Ü‘zºÛ!ðO&…£6Âï¢z2“‰@EÎïž7̯ó‰²*OWyý¿aûÊ^—Gö¸.ڲ̄÷ì|_Wl²ÔÍÂèñ¿~úC>{Þ¯Ò¦[bNµ¦šð¼½¯åº¥7áž-¤³,þÚmÏi'Bí¬A}Ìè…ÕÇG¹Î¥y¦ì›£O·)^¿µG·±ÙîuÄ ¼îéNEd‡I@ Ô'1k 3™–¼i™ùD½ÅÌK¦KûÁ5½Eu\àt‹ëXŸKrÖÃY€ê=ö?ìšÓê眗¹ÒRó‰vØUgª[üÇ«NØ9a% ³µy·‘âÍÚ@V±<¾M³6€íYZ›‰@Å_þ4s€åæÔÆ#-o(J%?íyN+žl£ß·ôIÝé–'Ãȵÿƒ³6À³+Ç>öǘͩmLt9Á›´5›îl߃KúЉ½/Õv·é¬N³Zh³F¯ÄW-‰°éHº_sjÓÀ¥cZü>󭲣ѦrךÜð›e²xÝ aqBÐÏPPŸ›g=jÙLjitŸsjÓ¦õiq–‹¼'ÁnF{º­t'Üшì·ø=«£´•DìV±j&Âwé³,?§R‹ö´è̬½kNQpi"\ѨÝmTï¶Ú g³81¶í†ÃÖ!·üˆe3rN¨´£Ý>¼Ž±èù³—:Ø1²ÇoáŠF~,“Å~,NŽ™Ãaë@_Ósê æ O,‰9EÏiµ’æuËú M9N¾cmr|¸u ¶s2’-™‰° k53sŠež©©iö»=”ôº]rj¿‚ š{•7¥ 2tE(¶Ô Ój™Ô|ò&ƒ?ÚùZ;‹6ûýî¶ð¿ívÊN‚ šš{ÛíV–.;Зm`Þù¡7¥ßÝø-sæÓ’®Á7ÎìÏüå…@·tÜÏ?µư2Q®œÚ³E?ùìÎåc½H²î‹=϶¢½j;%ˆ9z¦™¿˜hî±ø~çe¼×󡡺a+“%«,.{1áËtg 44)áE& ˆv«Í¡¨²„õ]m"ÕJéùswÙíZ-ÇX˜0ËZÙ?ÊNPça«d"PŠËF´ïxv“︧$“åw, ˆ ¹ngà ÒRmõI3Éǽ°X…: ¸%ƒ3Ž6ëYòÊ õÛX,›­{OB“ïIÇ}¿SÔu.g­t°7­>qFù¸Ë+«(Í1tœ¯›þ`³Ÿ…²DXÿBO}Åš"΄T;œÓò‚ê¸ À-Ì´òÄ¡Åm§Š„›±q~;Àªå©É!ï¼¶ösCÇxEÞ–Fÿýî3¼â˜ÙzuÍ}ç§“ÿÍÊÑÁ—"=cËp_°âdš}p)÷fûÈ’1~ËD äþàù/Ù®ˆöm±O4:æTÛ—‰|ZE|îÅ .YüÒj“éãT™{³½kîP¿e"D쉷mÓÃÃåEßûθ§Yx‡ÏáZ¬B7ÌÜbœ•&Ô°•po¶FÖŠm,Ìèêèûmk¶±—y|wú#dí/!–Ö+L‹a:Åt½,@×[eRu‹žk£5ºvcÍ5ŸKg[£m¬3µø1úI+¯â®¥u ·²Qb'-¨9V˜XWEõRkT~ ÒPI@ÜÒ[œ½ÞÖFK¢ã™† 3l ?wVû)ݯ‚KÙJ%Ñ›g… F-axÅhÓk(áäéJý’ÝÍ–v¯GN×{ÿÇX5ó ×éºîdC"Å›µ ù{’%çmæÖlþ@•_Qÿ#uɰ»Ñþ¤øÌ”zïOó͂ϚO9ñp%{g(üÃßUÂZRðÙnŒÛnh›˜óÙ]œ©^ÂÙ¾µáëzc@é†ÛÑuM‘nñp†«]µ —ùk²½¹a"·fûÒªñ†k¯ÄWÏù·èl¼7#ù¥F~€ý~çl+=ci ,Þâ§[ ¦6þ˜pýæÖlXôši™S÷&re´¤@ERKªÊLû5ÑÒ¶6TîÃã‘‚"<ì>f›=ˆ[³½5v°)™ô¡ˆŽx3[RRöºsÆ|„Á×£›ytP…k¸¼n¤$˜}¤@»ŠêJ~ÖwœÚݰqM8ôËÇ¡ák>ãÒhITd§.O,ÏïG.wP7¸  ,…{µ¿¼ÇÍœ€iG÷sg¶Ç Ó¾‹FꭇƧFX:‰ßŒRžKs6èírd­ÖÛºûñyJ´XÜ—uÏp»˜™6'#™;³ÝR¸‹[äT…Έ Ûà.ÀSZسªëS‡YžÔeÎ?Ê Œþ+\4òѬۭN·x‹‚¼¿ ÿnš¤ýÔû~§MšÍX4Ôbmì ‹WÂE@³¡þGÚĉÇâ fJç¢oðŽ˜¿r)ÒD,$jÒhC©Ã5L´òW¡M¨ÓXTTOÕNYx.|™ö¨6±N`qAÐÏ*sÉR¸ð9mån7hl‰ih7 ¥CŒx¹6Ñfc±A¼*@‘bhÀ €ñ¨Ž œŠ8ç¸oç³ôý€éÊb/"‡ “.*PÑ&¬zàçs\a#dWQ÷[gDÈuXíÀÿ„†^X›f~m\2¶-Ž €%w¹ÂÚ݃E ±ÿLÜM•ð°ªeéÓõ2Íp¿Â‚…ÞÑ~Eó«0A€[xœêybáB,}£Ë;X½€=à qj¦¦Mä,dÈÂ&{†v³4_±jÛ¦+ ÷Ñ5dÁLƒ]Ô «Øê,7@?ÁEÈ2™²ÚYÕ lz–+Ý£MöT,vÈÚ(‹wa5ûC×}ea K3±ð!• }±w\Ö÷7gk,”Á UJó é\€{Ú)A¿w)R$² _gP6Lû)ݯÂ* TèC[$«aŒv%² hÞG´å0 ¨ÅR„eŠÐ«€àTÄj °“ÀhBC/ ¥ÁÚbJ‡¡@ µ§Ñþ(¢y‚Å€¯Ž´‹¶¸ð!{Qü°“À`Î,ÿÊéOÂx¸RÅ0—,v®-ç(‡ÙZ%š&¸Âƒ®Á¬ÀŸLì}©~#Í-.Áƒ­Ž –P\1/Á$À‚G µo„“Ê¢18*€j;FHOÝíVÃĬÝ"<À-$(âTá€a¨ 9{%øÌÍ:Añ ¸P|0K°m”àvNE|ŽvRØñš®SN·¸Ð%KÃÚ†÷ Äl€££†Ú[jÂW(÷h`'Yü„ÆU·:Έë4ÓQ{Î+TÁ,½R%]8pº¥h<1«M7¸ÜÒƒnáSÍQuit in the " "context menu of the system tray entry.") self.hide() event.ignore() def setIcon(self, index): icon = self.iconComboBox.itemIcon(index) self.trayIcon.setIcon(icon) self.setWindowIcon(icon) self.trayIcon.setToolTip(self.iconComboBox.itemText(index)) def iconActivated(self, reason): if reason in (QSystemTrayIcon.Trigger, QSystemTrayIcon.DoubleClick): self.iconComboBox.setCurrentIndex( (self.iconComboBox.currentIndex() + 1) % self.iconComboBox.count()) elif reason == QSystemTrayIcon.MiddleClick: self.showMessage() def showMessage(self): icon = QSystemTrayIcon.MessageIcon( self.typeComboBox.itemData(self.typeComboBox.currentIndex())) self.trayIcon.showMessage(self.titleEdit.text(), self.bodyEdit.toPlainText(), icon, self.durationSpinBox.value() * 1000) def messageClicked(self): QMessageBox.information(None, "Systray", "Sorry, I already gave what help I could.\nMaybe you should " "try asking a human?") def createIconGroupBox(self): self.iconGroupBox = QGroupBox("Tray Icon") self.iconLabel = QLabel("Icon:") self.iconComboBox = QComboBox() self.iconComboBox.addItem(QIcon(':/images/bad.png'), "Bad") self.iconComboBox.addItem(QIcon(':/images/heart.png'), "Heart") self.iconComboBox.addItem(QIcon(':/images/trash.png'), "Trash") self.showIconCheckBox = QCheckBox("Show icon") self.showIconCheckBox.setChecked(True) iconLayout = QHBoxLayout() iconLayout.addWidget(self.iconLabel) iconLayout.addWidget(self.iconComboBox) iconLayout.addStretch() iconLayout.addWidget(self.showIconCheckBox) self.iconGroupBox.setLayout(iconLayout) def createMessageGroupBox(self): self.messageGroupBox = QGroupBox("Balloon Message") typeLabel = QLabel("Type:") self.typeComboBox = QComboBox() self.typeComboBox.addItem("None", QSystemTrayIcon.NoIcon) self.typeComboBox.addItem(self.style().standardIcon( QStyle.SP_MessageBoxInformation), "Information", QSystemTrayIcon.Information) self.typeComboBox.addItem(self.style().standardIcon( QStyle.SP_MessageBoxWarning), "Warning", QSystemTrayIcon.Warning) self.typeComboBox.addItem(self.style().standardIcon( QStyle.SP_MessageBoxCritical), "Critical", QSystemTrayIcon.Critical) self.typeComboBox.setCurrentIndex(1) self.durationLabel = QLabel("Duration:") self.durationSpinBox = QSpinBox() self.durationSpinBox.setRange(5, 60) self.durationSpinBox.setSuffix(" s") self.durationSpinBox.setValue(15) durationWarningLabel = QLabel("(some systems might ignore this hint)") durationWarningLabel.setIndent(10) titleLabel = QLabel("Title:") self.titleEdit = QLineEdit("Cannot connect to network") bodyLabel = QLabel("Body:") self.bodyEdit = QTextEdit() self.bodyEdit.setPlainText("Don't believe me. Honestly, I don't have " "a clue.\nClick this balloon for details.") self.showMessageButton = QPushButton("Show Message") self.showMessageButton.setDefault(True) messageLayout = QGridLayout() messageLayout.addWidget(typeLabel, 0, 0) messageLayout.addWidget(self.typeComboBox, 0, 1, 1, 2) messageLayout.addWidget(self.durationLabel, 1, 0) messageLayout.addWidget(self.durationSpinBox, 1, 1) messageLayout.addWidget(durationWarningLabel, 1, 2, 1, 3) messageLayout.addWidget(titleLabel, 2, 0) messageLayout.addWidget(self.titleEdit, 2, 1, 1, 4) messageLayout.addWidget(bodyLabel, 3, 0) messageLayout.addWidget(self.bodyEdit, 3, 1, 2, 4) messageLayout.addWidget(self.showMessageButton, 5, 4) messageLayout.setColumnStretch(3, 1) messageLayout.setRowStretch(4, 1) self.messageGroupBox.setLayout(messageLayout) def createActions(self): self.minimizeAction = QAction("Mi&nimize", self, triggered=self.hide) self.maximizeAction = QAction("Ma&ximize", self, triggered=self.showMaximized) self.restoreAction = QAction("&Restore", self, triggered=self.showNormal) self.quitAction = QAction("&Quit", self, triggered=QApplication.instance().quit) def createTrayIcon(self): self.trayIconMenu = QMenu(self) self.trayIconMenu.addAction(self.minimizeAction) self.trayIconMenu.addAction(self.maximizeAction) self.trayIconMenu.addAction(self.restoreAction) self.trayIconMenu.addSeparator() self.trayIconMenu.addAction(self.quitAction) self.trayIcon = QSystemTrayIcon(self) self.trayIcon.setContextMenu(self.trayIconMenu) if __name__ == '__main__': import sys app = QApplication(sys.argv) if not QSystemTrayIcon.isSystemTrayAvailable(): QMessageBox.critical(None, "Systray", "I couldn't detect any system tray on this system.") sys.exit(1) QApplication.setQuitOnLastWindowClosed(False) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/desktop/systray/systray.qrc0000644000076500000240000000025613245231431022734 0ustar philstaff00000000000000 images/bad.png images/heart.png images/trash.png PyQt5_gpl-5.10.1/examples/desktop/systray/systray_rc.py0000644000076500000240000051002313245231431023261 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sat May 4 14:55:18 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x09\xc0\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x9c\x00\x00\x00\xb2\x08\x03\x00\x00\x00\x80\xc0\x56\x39\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01\x42\x28\ \x9b\x78\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x03\x09\x08\x1d\ \x30\x44\x26\x4e\xa6\x00\x00\x02\xd3\x50\x4c\x54\x45\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x02\x01\x00\x03\x02\ \x00\x04\x02\x00\x05\x03\x00\x06\x03\x00\x06\x04\x00\x07\x04\x00\ \x08\x05\x00\x09\x05\x00\x0a\x06\x00\x0b\x07\x00\x0c\x07\x00\x0d\ \x08\x00\x0e\x08\x00\x0f\x09\x00\x10\x0a\x00\x11\x0a\x00\x12\x0b\ \x00\x13\x0b\x00\x14\x0c\x00\x15\x0d\x00\x16\x0d\x00\x17\x0e\x00\ \x18\x0e\x00\x19\x0f\x00\x1a\x10\x00\x1b\x10\x00\x1c\x11\x00\x1d\ \x11\x00\x1e\x12\x00\x1f\x13\x00\x20\x13\x00\x21\x14\x00\x22\x14\ \x00\x23\x15\x00\x24\x16\x00\x25\x16\x00\x26\x17\x00\x27\x17\x00\ \x28\x18\x00\x29\x19\x00\x2a\x19\x00\x2b\x1a\x00\x2c\x1a\x00\x2d\ \x1b\x00\x2e\x1c\x00\x2f\x1c\x00\x30\x1d\x00\x31\x1d\x00\x32\x1e\ \x00\x33\x1f\x00\x34\x1f\x00\x35\x20\x00\x36\x20\x00\x37\x21\x00\ \x38\x22\x00\x39\x22\x00\x3a\x23\x00\x3b\x23\x00\x3c\x24\x00\x3d\ \x25\x00\x3e\x25\x00\x3f\x26\x00\x40\x26\x00\x41\x27\x00\x42\x28\ \x00\x43\x28\x00\x44\x29\x00\x45\x29\x00\x46\x2a\x00\x47\x2b\x00\ \x49\x2c\x00\x4a\x2c\x00\x4b\x2d\x00\x4c\x2e\x00\x4d\x2e\x00\x4e\ \x2f\x00\x4f\x2f\x00\x50\x30\x00\x51\x31\x00\x52\x31\x00\x53\x32\ \x00\x55\x33\x00\x57\x34\x00\x58\x35\x00\x59\x35\x00\x5a\x36\x00\ \x5b\x37\x00\x5c\x37\x00\x5d\x38\x00\x5e\x38\x00\x5f\x39\x00\x60\ \x3a\x00\x61\x3a\x00\x63\x3b\x00\x65\x3d\x00\x67\x3e\x00\x68\x3e\ \x00\x69\x3f\x00\x6a\x40\x00\x6b\x40\x00\x6c\x41\x00\x6d\x41\x00\ \x6e\x42\x00\x6f\x43\x00\x70\x43\x00\x71\x44\x00\x73\x45\x00\x74\ \x46\x00\x75\x46\x00\x76\x47\x00\x77\x47\x00\x79\x49\x00\x7a\x49\ \x00\x7b\x4a\x00\x7c\x4a\x00\x7c\x4b\x00\x7d\x4b\x00\x7e\x4c\x00\ \x7f\x4c\x00\x80\x4d\x00\x81\x4d\x00\x82\x4e\x00\x83\x4f\x00\x84\ \x4f\x00\x86\x50\x00\x87\x51\x00\x88\x52\x00\x8a\x53\x00\x8b\x53\ \x00\x8e\x55\x00\x8f\x56\x00\x91\x57\x00\x93\x58\x00\x94\x59\x00\ \x95\x59\x00\x96\x5a\x00\x98\x5b\x00\x99\x5c\x00\x9c\x5e\x00\x9d\ \x5e\x00\x9e\x5f\x00\x9f\x5f\x00\xa0\x60\x00\xa1\x61\x00\xa2\x61\ \x00\xa3\x62\x00\xa4\x62\x00\xa5\x63\x00\xa6\x64\x00\xa7\x64\x00\ \xaa\x66\x00\xac\x67\x00\xad\x68\x00\xaf\x69\x00\xb0\x6a\x00\xb1\ \x6a\x00\xb2\x6b\x00\xb3\x6b\x00\xb4\x6c\x00\xb5\x6d\x00\xb6\x6d\ \x00\xb8\x6e\x00\xba\x70\x00\xbb\x70\x00\xbc\x71\x00\xbd\x71\x00\ \xbe\x72\x00\xbf\x73\x00\xc0\x73\x00\xc1\x74\x00\xc2\x74\x00\xc3\ \x75\x00\xc5\x76\x00\xc7\x77\x00\xc8\x78\x00\xc9\x79\x00\xca\x79\ \x00\xcb\x7a\x00\xcc\x7a\x00\xce\x7c\x00\xcf\x7c\x00\xd0\x7d\x00\ \xd1\x7d\x00\xd2\x7e\x00\xd3\x7f\x00\xd4\x7f\x00\xd5\x80\x00\xd6\ \x80\x00\xd7\x81\x00\xd8\x82\x00\xd9\x82\x00\xda\x83\x00\xdb\x83\ \x00\xdc\x84\x00\xdd\x85\x00\xde\x85\x00\xdf\x86\x00\xe0\x86\x00\ \xe1\x87\x00\xe2\x88\x00\xe3\x88\x00\xe4\x89\x00\xe5\x89\x00\xe6\ \x8a\x00\xe7\x8b\x00\xe8\x8b\x00\xe9\x8c\x00\xea\x8c\x00\xeb\x8d\ \x00\xec\x8e\x00\xed\x8e\x00\xee\x8f\x00\xef\x8f\x00\xf0\x90\x00\ \xf1\x91\x00\xf2\x91\x00\xf3\x92\x00\xf4\x92\x00\xf5\x93\x00\xf6\ \x94\x00\xf7\x94\x00\xf8\x95\x00\xf9\x95\x00\xfa\x96\x00\xfb\x97\ \x00\xfc\x97\x00\xfd\x98\x00\xfe\x98\x00\xff\x99\x00\xff\xff\xff\ \x73\xb6\xc7\xfa\x00\x00\x00\x08\x74\x52\x4e\x53\x00\x09\x0e\x1b\ \x28\x3d\x5c\x72\xee\x75\x23\xcb\x00\x00\x00\x01\x62\x4b\x47\x44\ \xf0\x35\xb8\xef\x54\x00\x00\x06\x52\x49\x44\x41\x54\x78\xda\xed\ \x9c\xf9\x5f\x94\x55\x14\xc6\xad\xac\x66\x18\x6d\x54\x50\xc0\x04\ \xc4\x85\x45\x05\xc1\x0d\xc9\x50\xd1\xc8\x5c\x5a\x15\xb5\xc5\x24\ \xca\x34\xcb\x34\xcb\x4a\xcd\xca\xd2\xd4\x52\x4a\xcd\xca\x34\xb2\ \x12\xcd\xca\x4c\xb1\x20\x90\x08\x44\x53\x40\xf6\x4d\xf6\x01\x46\ \x99\x61\xe6\x9d\x7f\x21\xd6\x98\xe5\x5d\xee\x72\xee\x30\x9f\xbc\ \xcf\xcf\x9c\xf7\x7e\x99\x79\xdf\xf7\x9e\xf3\x9c\x73\xa7\x5f\x3f\ \x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x57\xd5\x1d\x77\xbb\ \x88\xfa\x8b\xc0\xdd\xa9\x72\x11\xdd\xc5\xe1\x6e\x29\xb8\x64\x63\ \x9f\xaa\x40\x16\x2e\xc5\xd2\xa7\x2a\xe3\x70\x1c\x8e\xc3\xc1\xc1\ \x99\x5d\x18\xae\x30\xe4\x47\xe2\xa5\x75\x8c\xe1\xca\x42\x54\xda\ \x53\x84\x6c\x59\xbe\x3b\x98\xc2\x55\x84\xb6\xff\xcd\x90\x33\x44\ \x6c\x17\x86\xab\x54\x9b\x19\xc2\x55\x85\x75\x6e\x7e\xee\xbf\x11\ \xb0\xa5\x7b\x77\x84\xbe\xcd\x0c\xae\x36\xa2\x7b\x6b\x76\x3f\x8b\ \xcd\x96\xe6\xdd\x15\xba\x49\x60\x03\x57\x17\xf9\x5f\xe2\xe0\x7e\ \x0e\x93\xed\x4f\xaf\x9e\xd0\x97\x05\x16\x70\x4d\xd1\x56\x69\x8d\ \xc7\x79\x2c\xb6\x54\xaf\xde\xd0\x97\xcc\xf0\x70\xcd\x73\x6d\x92\ \x2e\xcf\x54\x0c\xb6\x64\x0f\xeb\xd0\xb8\x36\x68\xb8\x96\x18\xbb\ \x94\xd0\x2b\x0d\x99\xed\x9c\x87\x6d\xe8\xb3\x6d\xb0\x70\x37\x1f\ \x71\x48\x58\xbd\xd2\x11\xd9\xce\x7a\xd8\x87\x3e\x63\x84\x84\x6b\ \x7d\x4c\x24\x9d\xf6\xbe\x80\xc4\x76\xc6\xdd\x31\x74\x49\x2b\x1c\ \x9c\x71\xb9\x68\xb2\xef\x9d\x81\xc0\xf6\xab\xbb\x58\xe8\xe3\x37\ \xa1\xe0\xda\x9e\x96\x28\x45\x7c\xb2\x15\xd9\x4e\x0f\x11\x0f\x7d\ \xf4\x06\x0c\x9c\xf9\x79\xc9\x42\xc9\xf7\xa2\x02\xdb\xc9\x41\x52\ \xa1\xf3\x9a\x20\xe0\xcc\x2f\xca\x94\x71\x7e\x39\xb2\x6c\x27\xb4\ \xd2\xa1\x31\x3a\x7a\x38\x61\x8d\x6c\x91\xe9\x77\x49\x86\x2d\x49\ \x2b\x17\x1a\x55\x47\x0d\xf7\x9a\x42\x09\x3c\xf2\xb2\x24\xdb\x71\ \xad\x7c\xe8\x8c\x5a\x4a\xb8\x37\x14\x0b\x74\xff\x7f\x24\xd8\x7e\ \x18\xa8\x14\x1a\x59\x4d\x05\xf7\x1e\x82\x7d\x30\x36\x5f\x94\x2d\ \x51\xa3\x1c\x3a\xa9\x9c\x02\x6e\x27\x92\xb9\x11\x70\x4d\x84\xed\ \x1b\x0d\x4a\x68\x58\x19\x31\xdc\x2e\x44\xeb\x25\xb0\xc0\x81\xed\ \x88\x06\x2d\x34\xb8\x80\x10\xee\x63\x64\x63\x28\xb0\xd0\x8e\xed\ \x6b\x0d\x6a\x68\x50\x3e\x11\xdc\x7e\x35\xba\x6d\x15\x54\x64\xc3\ \x76\x58\x83\x1e\x1a\x90\x47\x00\x77\x10\x83\x4d\xa5\x0a\xb5\xbe\ \x79\xbe\x74\xc3\x09\xf5\xcf\xc1\x86\x3b\x8a\xb5\x40\x3b\x5d\x39\ \xd1\x47\xde\xf9\x22\xcf\xc6\x84\x4b\xd4\xa8\x30\x35\xb1\xa2\x3b\ \xf4\x33\x35\x6e\xa8\xef\xdf\x78\x70\xcb\xf0\xed\xd2\xc8\x3a\x82\ \xef\xb4\x7b\x9f\xc5\x83\x33\x2e\xc5\x5f\x22\xbc\xb2\x3d\x30\x41\ \x8d\x1f\x18\x51\x8d\x79\xcf\x19\x62\x09\x16\xa9\xb1\xec\x23\x60\ \x8b\xaa\xc7\x7e\x5a\x0d\x4b\xf0\x97\x99\xfe\x2e\x81\x7b\x3e\xb3\ \x9e\xe0\x3d\x67\x58\xec\x14\x67\x7f\x56\x03\xd1\x0e\x71\x63\x91\ \x13\xd8\x66\x37\x12\xee\xad\xfa\x85\xcc\xd9\xa2\x1b\x89\xb3\x12\ \xfd\x02\xc6\x6c\x0f\xb5\x50\xe4\x73\xfa\xf9\x4c\xd9\xe6\xb7\x50\ \x65\xc2\x2d\xf3\x18\xb2\x2d\x6c\xa1\xac\x21\x74\xd1\xcc\xd8\x16\ \xe9\xa9\x4b\xc3\xc6\x59\x8c\xd8\x1e\xd6\x03\x14\xd5\x8d\x33\x99\ \xb0\x89\xf9\x25\x04\x76\x44\x43\x14\x03\xb6\xd8\x56\x20\x23\xa7\ \xe1\x7e\x70\xb6\xa5\x06\x30\x0b\xac\x66\x1a\x30\xdb\x72\x03\xa0\ \x79\x58\x3d\x15\x94\xed\x49\x03\xa8\xed\x7a\x7d\x0a\x20\xdb\x53\ \xa0\xce\x66\x07\xdd\x64\x30\xb6\xe7\x4c\xe0\x56\x7f\xd5\x24\x20\ \xb6\x78\x13\x83\x26\x49\x65\x38\x08\xdb\x0b\x26\x26\xed\xa5\xd2\ \x09\x00\x6c\xab\x4c\x8c\x1a\x73\x25\xe3\xa9\xd9\x56\x9b\x99\xb5\ \x34\x8b\xc7\x51\xb2\xad\x13\x18\x36\x83\x8b\x83\xa9\xd8\x5e\x15\ \x98\xb6\xd1\xf3\xc6\x50\xb0\x6d\x10\x18\x0f\x20\xe4\x92\xd3\x6d\ \x54\x62\xa3\x1f\xdd\xc8\x1d\x4d\xc8\xf6\xba\x22\x1b\xc0\x5c\xc9\ \xd5\x51\x44\x6c\x5b\x9d\x33\xf4\xf2\xd7\x3d\x04\x6c\xdb\x9c\x33\ \x91\xd3\xfc\x20\xc9\x07\xb7\xc9\x29\x70\x4d\x31\x64\xb7\xdc\x9b\ \x4e\x80\x6b\x7a\x80\xf4\x61\xdd\xce\x1c\x4e\x37\x97\xfc\x35\xf7\ \x21\x63\xb8\x7a\xaa\x5a\x67\x27\x53\xb8\x3a\xca\x4a\xe7\x23\x86\ \x70\xb5\x33\x68\x93\x92\x5d\xec\xc6\x85\xee\xa3\x4f\xe7\xf6\x30\ \x82\xab\x89\x04\xc8\x35\xd5\x09\x4c\xe0\xaa\xa7\x83\x64\xe9\xea\ \x4f\x19\xc0\x55\x40\xd5\x37\xea\xfd\xe0\x70\x15\xe1\x2a\x28\xa9\ \x0f\x00\xc3\x95\x87\x01\xd6\xd4\xea\x83\xa0\x70\x65\x13\x41\xdd\ \x08\xb7\xc3\x80\x70\xa5\xa1\xc0\x3e\x8e\xdb\x11\x30\xb8\xc2\x60\ \x15\xb4\x34\x47\x81\xe0\x0a\x82\x18\x78\x87\x9a\x44\x10\xb8\x6b\ \x81\x4c\x5c\x57\xcd\xb7\x00\x70\xf9\x6c\xd8\xda\xe9\x8e\x51\xc3\ \xe5\x05\x30\x73\xfa\x07\x26\x51\xc2\xe5\x8e\x65\xd8\x23\xd1\x9e\ \xa0\x82\xbb\xe4\xcf\xb4\xbb\xa4\x3d\x49\x01\x97\x33\x92\x71\x5f\ \xce\x7e\x08\x1f\x03\xee\xa2\x1f\xf3\x8e\xe6\xa0\x9f\x08\xe1\xb2\ \xd9\xb3\xd9\x1f\x11\x40\x86\xcb\xf2\xc5\x5f\x6a\x30\xfe\xf8\x81\ \xcd\x10\x3e\x2a\x5c\xc7\xf1\x05\x5c\x79\xa6\x10\x0c\x6e\x58\x0f\ \xe1\x23\xc2\xa5\x7b\xe3\xb3\x0d\xcf\xb0\x58\xf6\xe1\x87\x79\x24\ \x63\xc2\xa5\x11\xb0\xdd\xdb\x39\xd3\xbc\x97\x80\xee\x3c\x1e\xdc\ \x1a\x92\xef\xb4\x2b\x74\x3b\x7e\xe8\x84\x36\x2c\x38\xd3\x6a\xdc\ \x05\x46\x64\xf6\xfc\xfb\x9f\x60\x87\x66\x61\xde\x73\xc2\x7a\xbc\ \x05\x7c\x32\x7b\x6f\xeb\x0f\x30\x6f\x87\x4c\xec\xa7\x55\xd8\x88\ \xb3\x80\xbf\xcd\xb4\xf0\xfb\x38\xa1\xc3\x52\x49\x5e\xc2\xef\xa0\ \x2f\x30\xca\x6e\x56\x78\x1b\x7a\xe8\xd0\x14\xb2\xed\x0b\xf9\xd6\ \x1e\x7d\xc5\x3e\xbd\xd8\x8a\xfc\xa4\xfe\x41\xba\xf1\xef\x21\x65\ \xb3\x58\xb6\x20\x6e\x29\xa7\xc9\x53\x26\xa4\x61\xdc\x31\x57\xc5\ \xca\x81\xcd\x48\xfb\xfe\x2f\x34\xc9\xe6\x01\xe5\xed\x28\xb8\x50\ \xb4\x90\x12\x36\x20\xe4\xc2\xc7\xe9\xd2\xf4\xcf\x95\x26\x30\xc7\ \x15\x49\x14\xc8\xca\x2f\xa3\x01\xdf\xd3\x16\x38\x5f\xc8\xd3\x8d\ \x2f\x96\x34\x3e\x84\x75\xd8\x95\x35\x76\x69\x78\x6c\x80\xdc\xc6\ \x53\x2c\x63\x68\x09\xaf\xc8\xb2\x7d\x05\x51\x54\x7f\x27\x7d\xae\ \x21\xa4\x44\xd6\xa8\x14\xd6\xca\xb8\x39\x87\x60\xec\x88\x53\x83\ \x25\x16\x08\x2d\x55\x30\xa0\xcd\xab\x24\xe1\x12\xa0\x8c\x9c\x9f\ \xc5\xcf\x47\x4d\xae\x54\x6c\x2c\x48\x9e\x7c\xda\x0b\x67\x81\x25\ \x0f\x15\xb9\xfe\x94\x2a\x84\x86\x91\x29\x5e\x94\x6d\x07\xa4\x79\ \xf8\xfb\x30\x87\xeb\x4f\xbd\x8e\x74\x9a\xcf\x14\x87\xd1\x42\x24\ \xb4\x5d\x53\x3c\xed\xae\x3f\x0d\x8d\xad\x9d\x6e\xa5\x03\xdb\x16\ \x68\xc3\x3a\x63\x84\xcd\xf5\x23\xaa\x91\x4f\x90\x9a\x56\xd8\xb1\ \xbd\x05\x6f\xf5\x67\xfa\x58\x5d\xdf\x6a\x64\x5b\x59\xc6\x65\xa8\ \xe3\x1b\xe4\x4d\x92\xcb\xbd\xed\x73\xeb\x91\x6d\x04\x19\xac\x8f\ \x08\xac\x15\x98\xb4\x97\xae\xf4\x0c\x46\xcc\xc6\x63\xb3\x39\x22\ \x10\x6f\x66\xd4\x98\x2b\xec\x1a\xc8\xb1\x1d\xd9\x46\xa3\xeb\x19\ \xc2\x8f\x33\x31\x6b\x69\x16\x75\x8c\x5a\xcd\xd1\x59\xf0\xd5\xfa\ \x44\x27\xdb\x0a\x13\xc3\x66\x70\x49\xa8\xc3\xc8\x36\xa2\x3a\x8f\ \x08\xc4\x1a\x99\xb6\xd1\x8b\x57\x36\x5a\xc8\xa4\x5f\xa0\x5a\x6c\ \x60\x3f\x57\x42\x28\xdd\xfa\x66\x8b\xcb\xc2\x39\x67\x22\x87\xc3\ \x71\x38\x0e\xe7\x02\x70\xbb\x93\xfa\x54\x87\x64\xe1\x5c\x41\x1c\ \xee\x96\x81\xbb\xad\xbf\x8b\xe8\x76\xfe\x83\xac\x5c\x5c\x5c\x5c\ \x5c\x5c\x5c\x5c\x5c\x5c\x5c\xff\x43\xfd\x0b\x99\xa5\x5c\x7e\x47\ \x71\x60\x42\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x2f\x60\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x01\x5b\x00\x00\x01\x5c\x08\x06\x00\x00\x00\x66\xca\x1d\x55\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01\x42\x28\ \x9b\x78\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x03\x09\x08\x1f\ \x25\x1b\xcd\xc8\xcf\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\ \xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x2e\xe0\x49\x44\x41\x54\x78\ \xda\xed\x9d\x09\x74\x15\x55\xb6\xfe\xaf\xb6\x43\xdb\x2d\xdc\x9b\ \x00\x62\xdb\xb4\xa2\xb6\xf6\xa0\xdd\xb6\xa2\x3e\x71\xa0\xaa\x92\ \x30\x2a\x8a\x20\xa2\x88\x8a\x38\xb7\x2d\x88\xa0\x38\x61\xa7\x45\ \x51\x5b\x5b\x14\x27\x22\x21\x75\x2b\x84\x00\x81\x10\x48\x20\x10\ \xa6\x40\x98\xc7\x80\x21\xcc\x90\x90\x89\x84\x04\x12\x12\x12\x12\ \x02\xa9\x57\xbb\x82\x1a\x48\x6e\x86\x9b\x5b\x75\xeb\xd4\xf9\x7e\ \xff\xf5\xad\xf7\x5f\xbd\x5e\x3f\xaa\xce\x3e\xe7\xcb\xb9\xa7\xf6\ \xd9\xdb\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x18\x40\x07\x59\xbc\x32\x50\x11\xba\x06\xc8\x42\x5f\x97\x2c\ \x0e\x75\xb9\xc5\x51\x4e\x45\xfc\x58\xfb\x9f\xe1\x9a\xe2\x34\xa5\ \xb8\xdc\x42\xba\xa6\x03\xb5\x12\x0b\x35\x1d\xd3\xfe\xff\xc7\xb5\ \xff\xa9\xd6\x97\xfe\x9f\x1f\xab\xfd\xdf\xfb\xe9\xbf\xa3\xff\xf7\ \x57\x6a\xff\xd9\x1c\x4d\x93\x9d\x6e\x69\x3c\xfd\x3b\xf4\xef\xd1\ \xbf\x1b\x28\x8b\x77\xd1\x73\x20\x1a\x00\x00\x76\x09\xeb\x72\x71\ \x80\x12\xfc\x77\xcd\xe0\x06\xe8\x06\xe7\x16\xbf\x71\x2a\xc2\x82\ \x5a\x03\x14\x2b\x1a\x36\x4c\xbf\xa9\xe2\xec\x73\xcd\xd7\xf4\xb5\ \x4b\x91\x5e\x77\xc9\x52\xff\x00\xb9\xdb\xdf\xe8\x3d\x10\x4c\x00\ \x80\xff\x51\x1d\x17\x04\xba\xa5\x9b\x9c\xb2\x30\x50\xdb\x31\x86\ \x6a\x66\x95\xa0\x29\xcf\x62\x66\xda\x5a\xe5\xe9\xef\xa5\xbd\x1f\ \xbd\x27\xbd\x2f\xbd\x37\x82\x0f\x00\x30\x8e\x89\xbd\x2f\x0d\x8c\ \x08\xba\xdb\xe9\x16\x47\x6b\xe6\x33\x57\xdb\x11\xe6\xda\xcc\x58\ \x9b\x29\xfd\xbd\xe9\xb8\x63\x14\x1d\x87\x38\x62\x06\x5e\x82\xc9\ \x01\x00\xf0\x9a\x36\x4a\x70\x3b\x97\x5b\x7a\x30\xc0\x2d\x7c\xaa\ \x19\xcb\x2a\xcd\x64\x4f\xf2\x69\xae\x8d\xeb\xec\xb8\xa4\xd0\xb9\ \x33\x9d\x07\xb7\x0d\xef\x19\x88\xd9\x03\x00\x68\x74\xe7\x4a\x66\ \xa1\x99\x6b\xd8\xd9\x0f\x53\x30\x53\xef\x77\xbf\xf4\x91\xee\x2b\ \xcd\x80\x43\x68\x5c\x31\xb9\x00\xe0\x9c\xc0\x28\xb1\x93\xb6\x33\ \x7b\x56\x33\x88\x59\x67\xbf\xe8\xc3\x28\x7d\x6f\xbc\x47\xb5\x3f\ \x60\x33\x5d\xb2\x34\xac\x9d\x12\xf4\x7b\xcc\x3a\x00\xf8\x39\x1e\ \xb8\xb1\xf6\x83\x96\xfe\x15\x1e\x66\x68\xbe\xf9\xa6\xd3\xf8\xb7\ \x95\xbb\xdd\x80\xd9\x08\x80\xcd\x70\xba\x83\xae\x87\xc1\x5a\xd7\ \x78\x9d\x11\x21\xd7\x61\x96\x02\xc0\x28\x9d\x62\xba\x5e\xe6\x72\ \x4b\x4f\x69\x8b\x7a\xa9\xa6\xd3\x30\x36\x4b\x8b\xe2\xb3\x38\x40\ \x11\x87\x74\x96\xc5\x5f\x63\xf6\x02\xc0\xc2\x2e\x56\x11\x43\x02\ \x14\x29\x06\xd9\x03\xcc\xaa\xd4\xa5\x48\x91\xfa\xc7\x35\x00\x80\ \xe5\xce\x61\xdb\x69\x8b\x73\x8c\x66\xb0\x3b\x61\x56\xf6\x3a\x66\ \xa0\xb8\x22\x9d\x0c\x00\x3f\xe3\x92\xc5\xce\x94\x62\xe4\xb9\x6e\ \x00\x64\x13\x95\x68\x9a\xe0\x0a\x0f\xba\x06\xb3\x1e\x00\x93\x8f\ \x0a\x6a\xaf\xc7\x0a\x67\x60\x44\x5c\xed\x74\x29\xde\x09\x01\x91\ \xe2\xbd\x58\x05\x00\x18\x45\xb2\x78\x51\xed\x07\x2f\x61\x0b\x4c\ \x07\xd2\xb4\x99\xe6\x83\x23\x66\xe0\xaf\xb0\x38\x00\xf0\x05\xa1\ \xa1\x17\x06\xc8\xd2\x60\xa4\x6d\x41\x1e\x94\xa6\xfd\xd2\x19\x44\ \xf3\x04\x8b\x05\x00\x6f\xd0\x76\x2c\x4e\xb7\xf4\x82\xb6\x98\x32\ \x60\x28\x50\x33\x6a\x34\xec\xc2\x4e\x17\x80\x96\xa0\x3a\x2e\xd0\ \xcb\x16\x62\x27\x0b\x79\xa7\x1d\x34\x7f\x50\x0a\x12\x80\x46\x70\ \x45\x4a\x82\xb6\x58\x56\xc3\x30\x20\x1f\x7c\x4c\x5b\x89\x0f\x69\ \x00\x9c\x07\x75\x06\x38\x7b\xd3\x0b\x26\x01\xf9\x5a\x4b\x34\xd3\ \xbd\x19\xab\x0c\x70\xcd\xe5\x11\xf7\x75\xa8\x2d\x69\x28\x56\xc3\ \x14\x20\x03\x75\x8a\xe6\x59\x9b\x68\xb1\x3d\x56\x1d\xe0\xed\xe3\ \xd7\x25\x74\x33\x08\x65\x0d\x21\xb3\xcb\x3d\xba\x14\x71\x04\xa5\ \x11\x62\x11\x02\xfb\x1f\x19\xb8\xa5\x7b\xb4\x89\x9f\x8a\x85\x0f\ \xf9\x33\x47\x97\x3a\x0c\x63\x35\x02\x5b\x42\xf5\x0b\xa8\x40\x0c\ \x16\x3a\x64\x11\xd5\x50\xc1\x1b\xd4\x5d\x00\xb6\xe2\x6c\xa9\xc3\ \x7c\x2c\x70\xc8\x82\xf9\xb9\x87\x9d\x8a\xf8\x08\x56\x29\x60\x1a\ \x6a\x3b\x73\xb6\xc5\x37\x16\x36\xc3\xfa\x47\xec\xe3\xea\x4b\xab\ \xc6\xab\x13\xd2\xa2\xd5\x79\x99\x2b\xd5\x2d\x85\xbb\xd4\xbd\x25\ \x87\xd4\x8c\xd2\x3c\x75\xdf\xf1\x6c\x35\xb5\x68\x8f\x9a\x98\xb5\ \x46\xfd\x26\x3d\x46\x1d\xb1\xf6\x73\xf5\xff\xe6\x3e\xad\x06\xb8\ \x25\xd6\xde\x33\x01\x6d\x7b\x00\xa3\x67\xb3\xc2\xe3\xda\x04\x2e\ \x84\x59\xb1\xa9\xee\x0b\x5e\x51\xbf\xdf\x39\x5b\xcd\x39\x51\xa0\ \x7a\x43\x51\x65\x89\xaa\xec\x9d\xaf\x3e\xbc\x78\xb4\x1a\xa8\xb0\ \x62\xbc\x42\x81\xd3\x2d\x3d\x8a\xd5\x0b\x98\x39\x9b\xd5\x26\xee\ \x1c\x18\x16\x7b\x22\x53\x7c\x76\xe5\x38\x7d\xa7\xea\x4b\x68\xf7\ \x3b\x72\xdd\x17\xea\x15\x91\x21\x6c\x8c\x85\x22\xc4\xd2\x3c\xc6\ \x6a\x06\xd6\xdd\xcd\xca\x52\x1f\x9c\xcd\xb2\xa9\x9e\x89\xff\xf2\ \xb9\xc9\x9e\xcf\x7e\xcd\x74\x07\x2d\x7d\x9b\x99\xb3\xdc\x40\x59\ \xec\x85\x55\x0d\xac\xc5\xc4\xde\x97\xd6\x16\xf1\x16\x6b\x60\x5c\ \x6c\xa9\xe3\xd4\xee\xea\xa4\x9d\xb1\x6a\x8d\xf6\xff\xcc\x82\xce\ \x7d\x3b\x47\xf7\x65\x23\x63\x41\x9b\xd7\x94\x17\x8e\x45\x0e\xfc\ \x0e\xb5\xa4\xd6\x26\xe4\x06\x18\x17\x7b\xba\x71\x66\x7f\x75\x43\ \xc1\x0e\xd5\x1f\xd0\x07\xb6\xdb\xe7\x0c\x61\x65\x97\xbb\x16\x1d\ \x80\x81\x5f\x71\x29\xe2\xd3\x68\xac\xc8\xa6\xba\xce\x7d\x46\xcd\ \xf6\xf2\xe3\x97\xaf\x28\xae\x2a\x55\xfb\x2e\x1a\xc9\xca\x98\x95\ \xe9\xd5\xc4\x00\x30\x95\xb0\x2e\x17\x9f\xad\x69\x00\xe3\x62\x50\ \xdd\xe2\x9f\x57\x4b\xaa\xca\x54\x2b\x50\x75\xa6\x5a\x1d\xb0\xe4\ \x4d\x76\x2e\x42\xd0\xb1\x02\xae\xfb\x02\x33\xf8\xed\xe4\xe0\x8e\ \x54\xbe\x0e\xa6\xc5\xea\xd1\xc1\xc3\x5e\xa7\x73\x19\x45\xe9\xa9\ \x72\xf5\xce\xb8\xa7\x59\x1a\xc7\xe4\xcb\x23\x7b\x5c\x01\x37\x00\ \xc6\x9d\xcf\x2a\x41\x77\x6a\x13\x2d\x1b\xa6\xc5\xa6\xda\x2b\xc1\ \xea\xea\xfc\x6d\xaa\x15\xa1\x33\xdc\x3f\x4c\xeb\xc3\xd2\x78\x66\ \xb5\x95\x85\x3b\xe0\x0a\xc0\xe7\x50\xb2\xb7\x36\xc1\x4e\xc0\xb4\ \xd8\xd5\x27\xdb\xdc\xaa\x95\x99\xb6\x6f\x21\x6b\x63\x5a\xe6\x92\ \xa5\xfe\x70\x07\xe0\x1b\x42\x43\x2f\x3c\x9b\xd6\x05\xc3\x62\x58\ \xf4\xe5\xbf\xf2\x74\x95\xa5\xcd\x96\xd2\xcf\xee\x5f\x38\x82\xbd\ \x82\x36\xb2\x18\x8a\x36\x3c\xa0\x55\x74\x8a\xe9\x7a\x19\x2a\x75\ \xd9\x43\x0b\xb2\x56\xab\x2c\x90\x7e\xec\x00\x43\xd7\x7b\xeb\x48\ \x16\xdd\xc8\xc7\x05\x5e\x41\x5d\x14\x28\xbf\x10\x46\xc5\xbe\xee\ \x8b\x7f\xce\xd4\x4b\x0b\xad\x65\xc8\xf2\xb1\xac\x8e\xf5\x6a\x74\ \x83\x00\x2d\xa2\xcd\x14\xe9\x4f\xda\xc4\xd9\x0f\xa3\xb2\x87\xe8\ \x2c\x94\x25\xd6\xe4\x6f\x67\x79\xbc\xf7\xd1\x45\x1f\xb8\x08\x68\ \x12\x97\xd2\xed\x56\xba\x17\x0e\x93\xb2\x87\x7e\x1f\xd5\x5b\x2d\ \x3b\x55\xce\x94\xd9\xd2\x2e\xfc\x96\xd9\x8f\xb3\xdc\x7e\x27\x37\ \x40\x09\xfe\x3b\xdc\x04\x78\xce\x38\x88\x08\x0a\x42\xc6\x81\xbd\ \x44\x3f\xc9\x59\xe4\xbd\x4d\xdf\xb1\x3e\xf6\x25\x81\x11\x41\x77\ \xc3\x55\x40\x7d\xa3\x95\x85\xee\xda\x5f\xe4\x72\x18\x94\xbd\x34\ \x79\x57\x1c\x93\x66\xbb\x24\x67\xbd\x1d\xc6\xff\x84\x53\x11\x43\ \xe0\x2e\xa0\xce\xd1\x81\xf4\x90\x36\x31\x2a\x61\x4e\xf6\x93\xd1\ \x65\x13\x8d\x82\xae\x13\xdb\x24\x06\xda\xba\x92\x1e\x84\xcb\x00\ \xba\xac\x30\x40\xdb\xd1\x56\xc1\x98\xec\x27\x6a\x4d\x53\x5e\x7d\ \x52\x65\x15\xba\x5a\x6c\x93\x16\xea\x55\xb8\xfc\xc0\xfd\x8e\x56\ \x78\x18\x46\x6b\x5f\xfd\x71\x46\x3f\x95\x65\x42\xe6\xbf\x6c\xa3\ \x78\x68\xeb\x4c\xfb\x05\x09\xd7\xe1\x73\x47\x4b\xd7\x6f\x4f\xc3\ \x94\xec\xab\x5b\x63\x07\x33\x6d\xb6\x03\x16\xbf\x61\xb7\x98\x9c\ \x46\x99\x46\xce\xd0\x7e\x5e\xde\x8f\x1d\xad\xfd\x75\xf7\xbc\x61\ \x4c\x9b\x2d\xc3\x97\x1b\x1a\xdd\xe1\x52\xfb\x28\xb8\x10\x0f\x47\ \x07\xb2\x28\x6a\x41\xaf\x80\x19\xf1\xd1\x82\x9c\x65\xfa\x2f\x1e\ \x6d\xd7\xd8\x54\xb8\x22\x25\x01\x6e\x64\xe7\x1d\x6d\xa4\x78\x2f\ \xf2\x68\x71\x66\x8b\x33\x5b\x4b\xec\x70\x8f\xa3\x44\xa3\x7d\xcf\ \x68\xbb\x50\xa2\x35\x4c\x88\xaf\x6c\x84\x52\xc6\x6e\x8f\xd5\x85\ \xfe\x58\xd8\x3c\x46\xc5\x74\x63\x13\xee\x64\x23\x02\xa3\xc4\x4e\ \x5a\x60\x73\x60\x40\xfc\x69\x73\xe1\x2e\x26\x8d\xb6\xa8\xb2\x84\ \x97\x18\x65\xb5\x9f\xd2\xfd\x2a\xb8\x94\x1d\x76\xb4\xd3\xee\x0d\ \x70\xba\xc5\x9d\x30\x1e\xdc\x20\xc3\x0d\x32\xcb\x1e\x29\xa4\xbb\ \x64\xd1\x05\xb7\x62\x99\x89\xbd\x2f\xd5\x82\xb8\x02\xa6\xc3\xaf\ \x1e\x5b\xf6\x0e\x93\x66\x3b\x66\xc3\x44\xde\x62\x95\x8c\x7a\xb8\ \x2c\x67\x1e\xb8\x45\x19\x86\x83\xaa\x5f\xa8\xfa\xc5\x88\x14\x61\ \x0a\x5c\x8b\x4d\xa3\x7d\x0f\x66\x03\x91\x22\xf6\xc4\x33\x65\xb6\ \xcb\x73\x37\xf1\xfb\x51\x53\x16\xdf\x82\x7b\xb1\x95\x79\x40\xf5\ \x0e\xce\xc0\x68\x20\x74\x6a\x60\xee\xfc\xf6\x0c\xae\xf5\x32\x94\ \xe2\xe5\x74\x8b\x27\x61\x32\x50\x5d\xc5\x1e\x5c\xc6\x84\xd1\x6e\ \x3c\xb2\x03\xf1\x72\x8b\x15\xce\x88\xa0\xdb\xe0\x66\x16\x86\xfa\ \x1f\xb9\x14\x31\x13\x93\x15\x42\x77\x5d\xe6\x95\xd1\x46\x09\x6e\ \x07\x57\xb3\x22\x31\x03\x7f\xa5\x05\x68\x09\x26\x29\xe4\x49\xef\ \x6f\x9e\x64\x69\xb3\x0d\xdf\x3d\x17\x71\x3a\xe7\x52\x8a\x90\x44\ \xeb\x1a\xe6\x66\xbd\x0f\x62\xe3\x30\x41\xa1\xc6\xd4\x5e\x09\x56\ \x57\xe7\x6f\xb3\xa4\xd1\xee\x2d\x39\xa4\xfe\x61\x5a\x1f\xc4\xa9\ \x5e\x86\x82\xf8\x6f\xb8\x9b\xe5\x3e\x88\x89\x35\x98\x9c\x50\x53\ \xa2\x82\xdc\x39\x27\x0a\x2c\x65\xb4\x74\xa5\xf8\xce\xb8\xa7\x11\ \x1f\x0f\x1f\xcc\xa8\x4a\x1f\x5c\xce\x0a\x46\x1b\xd9\xed\x5a\x2d\ \x28\xc7\x30\x29\xa1\x96\xd4\xb9\x3d\x5c\x5e\x64\x09\xa3\xa5\x1c\ \xe0\xe0\xf9\x2f\x21\x2e\x8d\xab\x30\x20\x32\xe4\x6a\xb8\x9d\x3f\ \x09\xeb\x72\xb1\x16\x88\xcd\x98\x8c\x50\x4b\xd5\x75\xee\x33\x6a\ \xb6\x9f\x77\xb8\xc5\x55\xa5\x6a\xdf\x45\x23\x11\x8f\xe6\x5d\x78\ \x58\xe3\x48\x16\x2f\x82\xe9\xe1\x9c\x16\x62\xf2\x48\xa1\xbf\xba\ \xa1\x60\x87\xdf\xce\x68\x29\x43\x02\x71\x68\x89\xa4\xf7\xe1\x7a\ \xfe\x30\xda\x48\x49\xc0\xc5\x05\xa8\xb5\x6a\xa7\x04\xa9\xa1\x9b\ \xc3\xd4\x53\x67\xaa\x4d\x4b\xef\x9a\xb4\x33\x56\xed\x38\xb5\x07\ \xc6\xbf\xe5\xaa\x0e\x54\x84\xae\x70\x3f\x13\x09\x8c\xea\xdd\x56\ \x1b\xf8\x83\x98\x7c\x90\xaf\xd4\x33\xf1\x5f\x86\xb7\x3d\xdf\x7f\ \x3c\x5b\x1d\xb4\xf4\x6d\x8c\x77\xeb\x3e\x98\x1d\xa0\xf5\x0f\x17\ \x34\x6b\x57\xab\x48\x91\x98\x74\x90\xaf\x15\xa8\x48\xea\xb3\x2b\ \xc7\xf9\xdc\x74\xf7\x69\x26\x3b\x72\xdd\x17\xea\x15\x91\x21\x18\ \x67\xdf\x1c\x27\x44\xc0\x05\xcd\x30\x5a\x59\xec\x87\xc9\x06\x19\ \xad\xee\x0b\x5e\x51\xbf\xdf\x39\xdb\xeb\x34\x31\x2a\xfe\xad\xec\ \x9d\xaf\x3e\xbc\x78\xb4\x6e\xe2\x18\x53\x5f\x17\xac\x11\xfa\xc2\ \x0d\x0d\xe4\xf2\xc8\x1e\x57\x68\x03\x5d\x84\xc9\x06\x99\x29\x6a\ \x1c\xf9\xd2\xaa\xf1\xea\x37\xe9\x31\xea\xb2\xdc\x4d\xea\x81\xd2\ \x1c\x35\xa3\x34\xef\x1c\xa5\x1c\xde\xaa\x17\x2a\x1f\xb1\xf6\x73\ \xf5\xff\xe6\x3e\xad\xb7\xe4\xc1\xd8\x19\xaa\xfc\xb6\xe1\x3d\x03\ \xe1\x8a\x38\x3e\x80\x20\x08\xf5\x6f\xd9\xa4\x6d\xa4\xd4\x13\x13\ \x0c\x82\xa0\x3a\xaa\x71\x2a\x62\x08\xdc\xd1\x87\x74\x88\x11\x2f\ \x47\x35\x2f\xa8\xb5\xea\x1c\xdd\xb7\x49\x51\xee\x2d\x1d\x1b\x34\ \x25\xaa\x91\x2b\x26\xbc\xd0\xa8\xa8\x15\x79\xbf\xa4\x51\x4d\x6a\ \xf0\xb2\x77\xd5\xa1\x2b\x42\x1b\xd5\x93\xc9\x63\x11\xc3\x86\xb5\ \xaf\x53\x4c\xd7\xcb\xe0\x92\x3e\xfb\x28\x26\xfc\x0f\x93\xea\x5c\ \xfd\x25\xe6\x11\x75\xd4\xba\x09\xea\x84\xb4\x68\x8f\xfa\x2a\x6d\ \xba\x2a\xef\x49\x68\x52\x33\xf6\x27\xa9\x71\x19\xc9\x4d\x8a\x3a\ \x08\x24\xe7\x6d\x6e\x54\x6b\xf2\xb7\xeb\x5f\xf3\x9b\x12\x7d\xa1\ \x3f\xff\xdc\xf3\x7c\x65\x95\xe5\xeb\xb7\xac\x9a\x52\xe5\xe9\x53\ \x2a\x0f\xfc\x6d\xf6\x20\xcc\xfd\x06\xa4\xed\x6e\x3f\x86\x4b\xfa\ \x22\xa7\x56\x11\xba\xe2\xf2\x42\xe3\x1f\x6f\xde\xda\xf0\xb5\xba\ \xbe\x20\x8d\xa9\x6e\x04\xa0\xe5\x7c\xf1\x63\x14\xe6\xbc\x87\xcb\ \x0e\x28\x36\xde\x5a\x54\xc7\x05\x4e\xb7\xb8\x0e\x93\xa9\x79\xa2\ \xca\x51\x1f\x6c\x99\x6c\x78\x72\x3e\xf0\x0f\x85\x27\x8b\xd5\xdf\ \x45\xf5\xc4\x5c\x6f\xf8\xb2\xc3\x4a\x18\x66\xeb\x72\x6a\x87\x62\ \x12\x79\xa7\xeb\xa6\x3f\xa8\xa7\x2b\x2d\xca\x5e\xab\x56\x99\x74\ \x15\x15\x18\x4f\xe8\x96\x1f\x30\xbf\x3d\xe6\xde\x4a\x83\xe1\x9a\ \xde\x5f\xc9\xcd\xc7\x24\x6a\xbd\xae\x8a\xea\xa5\x3e\xb6\xec\x1d\ \xfd\x6c\x96\xb5\xb6\xde\xe0\x5c\x4a\xaa\xca\xd4\x6b\xa2\x1f\xc0\ \xbc\x6e\x58\x39\x1d\x23\x7b\xfc\x16\xee\xd9\x42\x9c\xb2\xf0\x11\ \x26\x8f\xef\x45\x05\x50\xc8\x78\xe9\xc3\xd8\x11\xed\x67\x29\x60\ \x8f\x4f\xb6\xb9\x31\x97\x3d\x49\x16\x43\xe1\x9e\x2d\x31\xda\xc8\ \x6e\xd7\xa2\x43\xae\x39\x15\xaf\x7a\x25\xbe\xaa\x57\xa1\xca\x2b\ \x2f\x84\x8b\x31\x02\x75\x76\xb8\x76\x7a\x5f\xcc\xe1\x86\x55\xe1\ \x0a\x0f\xba\x06\x2e\xda\xdc\xb3\x5a\xb7\x38\x0b\x93\xc6\x7c\xdd\ \x35\x77\xa8\xbe\x6b\xa2\x5a\xab\x00\x99\x09\xec\xa6\x82\x09\xd3\ \xe0\xa2\xcd\x4e\xf5\x42\x3f\x31\x2b\x18\x2f\xd5\x79\x45\x4a\x99\ \x35\x29\xaf\x3e\xa9\xf7\x53\xc3\x5c\x6d\xb8\x6f\x99\x33\x52\xbc\ \x1d\x6e\xda\xf4\xae\x76\x35\x26\x8b\xf5\x8c\xf7\xc3\xad\x53\xd4\ \x6d\x45\x7b\xe1\x72\x16\xe2\xeb\x1d\x33\x31\x3f\x3d\x6b\x29\xdc\ \xb4\xb1\xb3\x5a\x45\x0c\xc1\x24\xb1\xb6\xae\x9f\xfe\x10\x52\xca\ \x2c\x02\x8d\x3f\x35\xaf\xc4\xbc\xf4\xf8\xb1\x4c\x84\xab\x7a\xb8\ \xc0\xa0\x0d\xd0\x46\x4c\x12\xb6\x6a\x0d\xd0\xbd\x7d\xa4\x94\xf9\ \x8f\x99\x07\x16\x63\x2e\x7a\xd6\x6a\x18\x6b\x03\x04\xc8\x52\x1f\ \x4c\x0e\x76\x75\xe5\xd4\x9e\x48\x29\xf3\x03\x67\x6a\x6a\xd4\x6e\ \xf1\xcf\x63\x0e\x7a\xae\x9b\x80\xaa\x60\xf5\x77\xb5\xc2\x16\x4c\ \x0e\xfb\xa5\x94\x1d\x2e\x2f\x82\x23\x1a\xcc\xe2\xec\xf5\x98\x77\ \x9e\xcc\xd6\x2d\xae\x85\xc1\xd6\xfd\x28\xa6\x48\x0f\x61\x62\xd8\ \xb7\xaf\x17\x95\x1b\xac\x4d\x29\xcb\x82\x33\x1a\xc4\x83\x49\x23\ \x31\xdf\x3c\x5d\xe3\x55\x84\xde\x70\xd9\x5f\x32\x10\x70\x56\xcb\ \x61\x4a\x19\xf0\x1d\x9b\x0b\x77\xa1\x15\x0f\xce\x6e\x9b\xc8\x40\ \x88\x08\x0a\xc2\x64\xe0\x53\x7f\x9f\xfd\xd8\xcf\xe5\x21\xe9\xec\ \x11\xb4\x8e\x21\xcb\x51\x60\xbc\x91\x06\x91\xf7\xc1\x6c\x15\x61\ \x01\x26\x03\xf4\xc7\x19\xfd\x90\x52\xd6\x4a\xe8\x98\xa6\xbd\x12\ \x8c\xf9\xd4\x70\x1a\xd8\x5c\xbe\x6f\x8b\x45\x04\xff\x15\xb7\xc5\ \xa0\xc6\x52\xca\x4e\x54\x57\xc0\x45\x5b\xc0\xf0\x35\x9f\x61\x0e\ \x79\xe8\x57\xd6\x4e\x16\xff\xcc\x6f\xba\x97\x22\xfd\x80\x49\x00\ \x35\x27\xa5\x8c\x8c\x97\xca\x0b\x82\xc6\xa1\xec\x0f\x14\x18\xf7\ \x94\x99\x20\x7d\xc7\xa5\xd1\x76\x90\xc5\x2b\xb5\x01\xa8\xc4\x24\ \x80\xbc\x49\x29\xcb\xaf\x40\x4a\x99\x27\xe8\x03\x24\xe6\x4b\x83\ \x35\x13\xca\xdb\x44\x8b\xed\xf9\xcb\x40\x90\xc5\x50\x04\x1f\xf2\ \x45\x4a\x19\x35\x8f\x04\xbf\x40\xbf\x00\x50\x82\xd1\xd3\xd9\xad\ \x30\x96\x2f\xa7\x0d\xeb\x72\xb1\xf6\xe2\x79\x08\x3e\xe4\xeb\xf2\ \x90\xe8\xbf\x56\xcb\x97\x69\xd3\x31\x2f\x3c\x74\x73\x70\x24\x8b\ \x17\xf1\x93\x81\x20\x0b\x03\x11\x74\xc8\x28\xdd\x32\x1b\x1d\x87\ \x2b\x4f\x57\xa9\x37\xcd\x7a\x14\xf3\xa1\x21\x29\xc2\xc3\x3c\x5d\ \x62\x58\x8c\xa0\x43\x66\xa7\x94\x9d\xe2\x2c\xa5\x4c\xd9\x3b\x1f\ \x73\xa0\xe1\x2b\xbc\x89\x7c\xec\x6a\xdd\x41\xd7\x23\xdd\xcb\x47\ \x89\xda\x6e\x49\xbd\x2f\xfe\x39\x8c\x45\x33\xf5\xe7\x98\x01\xea\ \xeb\xeb\x26\xa8\x39\x27\x0a\xb8\x30\x5b\xfa\xe3\xd2\x65\xce\x10\ \xc4\xbe\x81\xe2\xe2\x5c\xb4\xce\xd1\xfe\xaa\x7c\x88\x60\xfb\x46\ \x03\x16\xbf\xf1\x73\x32\x3b\x7d\x81\xa6\xf6\xe5\x18\x97\xa6\xf5\ \x54\xf2\xfb\xdc\xec\x6e\x13\x0e\xa5\x20\xe6\x5c\x36\x86\x0c\xeb\ \x72\xb1\x66\xb6\x87\x11\x6c\xdf\x28\x36\x63\xf9\x39\x0b\x8b\x6a\ \xca\x46\xec\x9e\xa7\x06\xcd\x7f\x09\xe3\xd3\xc4\x2f\x02\x5e\x3e\ \xa4\xd1\x99\xb5\x94\xf0\x22\xe2\x5e\x5f\xd9\x8e\x98\x81\xbf\xb2\ \xf1\x59\xad\xf4\x20\x82\xec\x1b\xdd\x30\xa3\x5f\xa3\xd7\x5a\x33\ \xcb\xf2\xd4\xaf\xd2\xa6\xab\xc1\x9a\xf1\xa2\x40\x49\x7d\xf5\x5e\ \x38\x9c\x9b\xdd\xed\xb2\xdc\x4d\x88\x39\x6f\xd5\xc0\xb4\x17\x9c\ \x8d\x20\xfb\x46\xe3\xb6\x86\x37\x7b\xb1\x65\x9f\x28\x50\xbf\x4d\ \x8f\xd1\x2f\x04\xe0\xee\xfc\x2f\x4a\xca\x5e\xc7\x8d\xe1\xd2\x1f\ \x17\xc4\xbc\xde\x87\xb2\xe9\xf6\xbc\x9a\x1b\x16\xe2\xc4\x8d\x31\ \xdf\xe8\x8a\xc8\x10\xaf\x6f\x50\x55\xd7\x9c\xd6\x7f\x42\x4f\x48\ \x8b\x56\xfb\x25\x8d\xd2\xff\x6f\xf1\x3a\x8e\x42\xc2\xf3\xdc\xa4\ \x86\x2d\xc9\x41\x81\xf1\x86\x6e\x94\x75\x88\x11\x2f\xb7\xe1\x8d\ \x31\xe1\x49\x04\xd7\x37\x1a\xb6\xe2\x3f\x3e\x5b\x84\x85\x27\x8b\ \xf5\xb3\xdf\x37\x37\x4c\xd4\x77\xbe\x9d\xa6\xf5\xe1\x6a\x2c\xe3\ \x33\x53\xb8\xd9\xdd\xf6\xc1\xee\xb6\x81\xd2\x8b\xe2\x63\x76\x3c\ \x42\x88\x47\x70\x7d\xf3\x71\x67\x6b\xd1\x6e\x43\x3f\xa8\x1c\x28\ \xcd\x51\xe3\x32\x92\xd5\xff\x6c\x99\xac\x3e\xb2\x64\x8c\x7a\xf3\ \xac\x47\xf5\xba\x04\x66\x5c\xc1\xbd\x2d\xf6\x09\x53\xc7\xf3\xde\ \xf8\x67\xb9\xd9\xdd\xae\xc8\xdb\x82\x35\x54\x5f\x73\x6c\x65\xb4\ \x6d\xc3\x7b\x06\x6a\x5b\xf6\x2a\x04\xb6\xf5\xa2\x0a\x58\xfe\x80\ \x3e\xc6\x91\x09\x2f\xcf\xdd\xa4\x37\x75\x0c\xdd\xf2\x83\xbe\xc3\ \x0e\x59\xf0\x4f\xf5\xf6\x39\x43\x9a\x9d\x76\x76\x75\xf4\xfd\xfa\ \xcd\xa6\xbb\xe7\x0d\xd3\x8b\x5d\x8f\xdd\xf4\xbd\x1a\xb1\x27\x5e\ \xdd\x50\xb0\xe3\xe7\x0e\xbd\x66\xa7\xb0\x2d\xc8\x5a\xcd\xcd\xee\ \xf6\xfe\x85\x23\xb0\x8e\xce\x3d\xb7\x3d\x19\x18\xd5\xbb\xad\x9d\ \x8a\xce\x0c\x45\x60\xed\x9f\xb2\x44\xdd\x16\x8a\xab\x4a\x3d\xaa\ \xb9\x98\x7d\x51\x83\xba\xd3\xf2\xb2\xbb\x5d\x99\xb7\x15\x6b\xa9\ \xde\xba\x12\x9f\x40\x37\x06\xe8\x1c\x0d\x5e\xf6\x2e\x17\x86\xd0\ \x7d\xc1\x2b\xa6\x8f\xed\xd2\xdc\x8d\xdc\xec\x6e\x7b\x26\xfe\x0b\ \xeb\xe9\xdc\x0f\x65\xf3\x90\x85\x00\x9d\x93\x81\xb0\xbb\x38\x93\ \x0b\x33\xb8\x67\xde\x30\xd3\xc7\xb7\xef\xa2\x91\xdc\x98\xed\xaa\ \xc3\xa9\x58\x53\xe7\x1d\x25\xd8\x22\x2b\xc1\xe9\x96\x1e\x45\x40\ \x5b\xaf\x0f\xb6\x4c\xe6\xe6\xc6\xd3\x35\xd1\x0f\xf8\xe5\x88\x26\ \xfd\xd8\x01\x6e\x0c\x97\x32\x4f\xb0\xae\x6c\x56\x09\xcc\xe5\x96\ \x22\x10\xcc\xd6\xe9\x1f\xb1\x8f\xab\x27\x4f\x57\x72\x61\x02\x7b\ \x4b\x0e\xf9\x6d\x9c\xa9\x3a\x18\x6e\x95\xf1\x7a\x6e\x2b\x84\xb1\ \xed\xb4\xaa\xe3\x02\xd4\x42\x68\xfd\x8e\x6b\x75\xfe\x36\x6e\x4c\ \x80\xb2\x1c\xfc\x35\xd6\x1d\x22\x43\xd4\xdc\xf2\x23\xdc\x8c\x35\ \x75\xba\xc0\x1a\xab\x53\x2b\x81\xe9\x5d\xed\x14\xe9\x16\x04\xb1\ \x75\x7a\x91\xa3\xdd\x16\xdd\x6e\xfb\x4b\xcc\x23\xcc\x5c\x83\x66\ \x9d\x39\x19\xc9\x58\x63\x75\xf3\xbc\xdd\xd2\x4d\xec\x7e\x1c\x93\ \xc5\xb7\x10\x44\xef\x75\x67\xdc\xd3\x6a\x79\xf5\x49\x6e\x16\xbf\ \x15\x5a\xb9\x50\xb1\x71\xea\x72\xc0\xcb\x1f\x37\xea\x6a\x81\xb5\ \xf6\xb3\x46\xb1\x9c\x5f\xbb\x02\x01\xf4\x4e\xd4\x8e\x7a\x5b\xd1\ \x5e\x6e\x8c\xf6\x60\x69\xae\x65\x5a\x70\xcf\x3a\xb0\x94\x9b\x71\ \xff\x61\xd7\x1c\xac\xb7\x5f\xb4\x84\xe5\x94\xaf\x6a\x04\xd0\xbb\ \x73\x5a\xfa\x89\xc7\x0b\xd4\x0d\x96\x2e\x16\x58\x65\xfc\x1f\x58\ \xf4\x1a\x37\x63\x5f\x51\x5d\x89\x4e\xbc\xbf\xe4\xdb\x56\x31\x99\ \x02\x46\xb5\x22\x11\x3c\xef\x44\x15\xb9\x78\x81\x8e\x49\x7a\x24\ \xbe\x62\xb9\x3f\x76\x74\x35\x99\x17\xde\xd9\xf8\x2d\xd6\xdd\x4f\ \x39\xb7\x8a\x18\xc2\x5e\x7e\xad\x2c\x7c\x84\xe0\xb5\x5c\x54\x77\ \x96\x17\xe8\xcb\xff\xdd\x7e\xb8\xc0\x80\x0f\x65\xf5\x8f\x70\xa8\ \x08\x10\xd6\x9f\xbe\xbb\xfd\x0f\xce\x6b\x39\x38\x3a\xe0\x69\x47\ \x4b\x3b\x47\x2b\x37\x23\xa4\xac\x88\xd3\x35\x67\xb8\x89\xc7\xc0\ \xa5\x63\xb0\x0e\x6b\xb5\x94\x2d\xa7\x8d\x19\x78\x89\xf6\xd0\x15\ \x08\x5c\xf3\xf3\x3b\xa7\xef\x4f\xe2\x66\x61\x47\xef\x5f\xc4\x44\ \xdd\x5c\x9e\xea\x25\xcc\xcb\x5c\x89\xb5\x58\xab\x13\x8e\x64\xf1\ \x22\x76\x4a\x2a\x2a\x41\x77\x22\x68\xcd\xbf\x1d\xc6\x4b\xd6\x41\ \x41\xc5\x51\xbd\x23\x30\x2b\xb1\x79\x21\xe5\x23\x6e\xcc\x96\xd2\ \xdd\xfc\x71\x4d\xda\x9a\xb5\x12\xa4\x2e\x0c\x5d\xd1\x15\x46\x22\ \x68\x4d\xeb\xd1\xa5\x6f\xe9\x9d\x12\x78\x80\x6e\xc1\x51\x1d\x5b\ \x96\xe2\x43\xb5\x77\x1b\x6b\xaa\x69\x37\x5e\x5b\xfb\x39\xd6\xa5\ \x2e\x69\x38\x1a\x3b\xda\x44\x94\x48\xce\x4b\xb3\x41\x4a\x2d\xa2\ \x45\xcc\x6a\x87\xdf\xe4\xbc\xcd\xdc\x98\xed\x9a\xfc\xed\x58\x9f\ \xb5\x75\x12\x66\xb2\x64\xb6\x39\x08\x5a\xc3\xb7\x93\xe8\x23\xd8\ \x89\xea\x0a\x2e\x16\xef\x9e\x92\x4c\x4b\xe5\xcf\x7a\x23\x4a\x8b\ \xe2\x05\x2a\xfe\x7e\x83\x36\x47\xb1\x56\x85\x43\x4c\x18\xed\xe5\ \x91\x3d\xae\x40\xb0\xce\x15\x75\x1e\xa0\x9b\x3a\xbc\x5c\xbd\xa5\ \x32\x89\x93\x77\xc5\xa9\x57\x4e\xed\xc9\x7c\xec\x28\x35\x8d\x27\ \xa8\x16\x07\xd6\xac\xa8\xb6\x51\x82\xdb\xb1\x50\xbf\x36\x18\xc1\ \xfa\x25\xcb\x60\x53\xe1\x4e\xae\x16\x2b\x1d\x1b\x3c\x95\xfc\xbe\ \xad\x52\xf2\x8a\x2a\x4b\xb8\x89\xdf\x8c\xfd\x49\x58\xbb\x24\x59\ \x14\xf1\x71\x8c\x31\x51\x33\x43\x5e\xa0\x6c\x03\x29\xe1\x45\xdb\ \xc5\x90\xa7\x86\x90\x79\xe5\x85\x58\xb7\xba\xd9\x0a\xaf\xa2\x58\ \x38\x63\xa2\x36\xe0\xb4\xdb\xb3\x3b\xb4\xfb\xbb\x6b\xee\x50\x5b\ \xc6\xf0\xb3\xed\x91\x5c\xfd\x3a\xa1\x2c\x0c\xee\x3f\x92\x29\xd2\ \x0f\x2c\x7c\x1c\xdb\x0c\x93\x3d\x57\xd4\xae\xdb\xde\x39\x9a\xa7\ \x6c\x5d\x88\xfa\xb9\x94\x71\x5c\x99\xad\x55\xaf\x50\x9b\x6a\xb6\ \xb2\xb8\xde\xda\x4e\x9b\x2c\x5e\x44\xcd\xd3\x60\xb0\xe7\xaa\xbd\ \x12\xac\xae\xcd\xdf\x6e\xdb\xc5\x39\x3e\x35\xc2\xd6\xf1\x0b\x99\ \xff\x32\x57\x66\xdb\x7f\xf1\x68\xac\x5b\xba\x49\x16\x1a\x7a\xa1\ \x65\xbd\xb6\x9d\x2c\xfe\x19\x41\xf2\x9c\xf6\x95\x59\x96\x67\xbb\ \x85\x49\x35\x0e\xa8\xf3\xaf\x9d\x63\x77\x47\xdc\x53\x5c\x99\xad\ \x3f\x5a\xc9\x5b\xf3\x26\x59\xd0\xf5\x56\x2e\x3e\xd3\x0f\x41\x6a\ \xfc\x32\x43\x46\xa9\xbd\x0c\xf7\xed\x8d\xdf\xd8\x3e\x6e\x74\xf3\ \xcd\xee\x19\x24\x39\x27\x0a\xd4\x1f\x8f\xee\xd3\xeb\x41\x74\x9c\ \xda\x1d\xeb\x55\x3f\xb7\x15\x1f\xb0\xae\xd9\x2a\xd2\xeb\x08\x52\ \xe3\xfa\x73\xcc\x00\x75\xd3\x91\x74\xdb\x2c\xd4\x5b\x63\x07\xdb\ \x3e\x66\xb7\xc5\x3e\xc1\x4c\x3c\x28\x97\x3b\x5b\x33\x4e\xaa\xb7\ \x41\xc6\x49\x5d\x27\xc2\x76\xc6\xaa\x1f\xa7\xca\xea\xe8\xf5\x5f\ \xaa\xc3\x56\x7e\xa0\xf6\x4b\x1a\xa5\xe7\x7e\xd3\x1f\x11\x3b\xe4\ \x42\x73\x79\x6d\x57\x33\xdb\x89\x08\x50\xf3\xf2\x6f\xbf\x4a\x9b\ \xce\x7c\x09\x3f\xba\x09\xc7\xea\x35\xdc\x96\x88\x8a\xe7\x98\xcd\ \xa9\x33\xd5\x6a\x7e\x45\x91\x9a\x5a\xb4\x47\x5d\x94\xbd\x56\xcf\ \x7f\x9d\xa4\x99\xe6\x27\xdb\xdc\xea\x5b\x1b\xbe\xd6\xdb\xae\x93\ \x69\x52\x06\x08\xfd\x01\x87\x69\x1a\x62\xb6\x5f\x58\x39\x13\x21\ \x1e\x01\x6a\xbe\x84\x84\xe7\xd5\x55\x87\x53\x99\x35\x5b\xda\x41\ \xf1\x10\xa7\x77\x5b\x79\x65\xf7\xe4\xe9\x4a\x3d\x7f\x35\xfd\xd8\ \x01\x3d\xde\xf1\x99\x29\xaa\xb2\x77\xbe\x7e\x75\xfb\xfd\xcd\x93\ \xd4\x57\xd7\xfc\x57\x7d\x62\xf9\x7b\x6a\x9f\x85\xc3\xd5\xae\x73\ \x9f\xd1\xcd\xd3\xee\xe7\xe0\x8c\x68\x8e\x95\xcd\x36\x0d\x01\xf2\ \xce\x74\x23\xf7\x2e\x50\xcb\x4e\x95\xfb\xd5\x3c\x69\xa7\x7d\xb8\ \xbc\x48\xdd\x52\xb8\x4b\x2f\xc0\xf2\x93\x56\xe4\x6d\x51\x77\x68\ \x46\x41\x97\x16\xea\xee\xc6\x8f\x9c\x2c\xe6\xa2\xa8\x7b\xda\xd1\ \xfd\xfa\xfb\x56\x9d\xdd\x6d\xee\x2a\xce\xd0\xb3\x4b\xe6\x1f\x5a\ \xa5\x4e\xdd\x9b\xa8\x4e\xdc\x31\x43\xfd\xcf\x96\xc9\xea\x88\xb5\ \x9f\xeb\xb7\xe7\xa8\x87\xd9\x3d\xf3\x86\xa9\x7f\x8d\x19\x68\x99\ \x26\x96\x90\x57\x4a\xb5\xb2\xd9\x96\x21\x40\xde\xeb\xf7\x51\xbd\ \xd5\x21\xcb\xc7\xaa\xe1\xbb\xe7\xea\x1f\x2b\x4e\xf9\xa8\xbc\x1f\ \xed\xac\xb2\xca\xf2\xd5\x8d\x47\x76\xa8\x89\x59\x6b\x54\x79\x4f\ \x82\xfe\x73\x94\xaa\x71\x3d\xb6\xec\x1d\x3d\x47\xf6\x4f\x33\x07\ \x34\xab\x35\x0a\xd5\x3c\x25\x43\x21\xa3\x21\xe3\xbd\x2a\xaa\x97\ \xad\x63\x42\x85\x74\x68\x47\xba\xbe\x20\x4d\x3f\x03\x8d\xcb\x48\ \x56\xa3\xf6\x25\xea\x31\xa2\x9d\x29\xb5\xcf\xa1\x9d\x2f\x8d\x25\ \x9d\x87\xd2\x0e\x95\x7e\xde\x07\xcf\x7f\x49\xcf\x57\xa5\x7a\xc5\ \xd7\x4d\x7f\x10\xa6\xcb\xa6\x8a\x2d\x69\xb4\x6d\xa2\xc5\xf6\x08\ \x8e\x6f\x45\x5f\x85\xef\x8c\x7b\x5a\x5f\xbc\x2f\xaf\xfa\x58\xfd\ \x28\x35\x42\x5f\xe4\x64\x96\x75\x45\xff\xd9\x17\x3f\x46\xa9\xa1\ \x9b\xc3\xf4\x45\xff\x74\xf2\xbf\xd5\xde\xda\x4f\xd2\x3b\xe2\x9e\ \x34\xb4\x23\x02\xfd\xec\xbd\xc7\xe6\x09\xf0\xaf\xac\xfe\xd4\x80\ \x4b\x20\x55\x6a\x71\x55\xa9\xbe\x4b\xde\x5d\x9c\xa9\x1b\x39\xfd\ \x82\xf8\xe9\x6c\x96\x62\xfa\xd3\xf9\x2c\xc5\xf4\xa7\x33\xda\xa1\ \x2b\x42\xf5\x3f\x8e\xbd\x12\x5f\xd5\xff\x40\xfe\x74\x5e\xdb\x39\ \xba\x2f\x7a\x88\x19\x57\x23\xc1\x65\xbd\x02\x34\x91\xe2\xed\x08\ \x0e\x64\x37\x7d\x99\x36\x9d\x99\x8f\x95\x54\x88\x9e\x52\x0b\xe9\ \xd8\x83\x32\x5e\xc8\xc0\xe9\x7c\x38\xe6\xc0\x12\xdd\xc0\xe9\xb8\ \xe3\xbf\xdb\x14\xdd\xc0\x47\xae\xfb\x42\xff\x03\x4e\x06\xfe\xf0\ \xe2\xd1\x3f\x1b\x38\x0f\x1f\x3c\x5b\x24\xa5\xdb\xad\xd6\x6b\x5d\ \x2e\x0b\x7d\x11\x1c\xc8\x6e\x5a\x9c\xbd\x9e\x9b\xcb\x0c\x74\xdc\ \x84\x98\x9f\x7f\x6d\x57\xea\x63\xc5\x6a\x5f\xcf\x20\x38\x90\xdd\ \x74\xa8\xec\x30\x37\x66\x9b\xc3\x49\x76\x49\x0b\xd3\xbf\x9e\xb2\ \xde\x31\x82\x2c\xbc\x81\xc0\x40\x76\xfb\x60\x49\x85\xd0\x79\x81\ \x2e\x42\x20\xee\xe7\x1f\x23\x48\xaf\x5b\xf0\x18\x41\xfc\x04\xc1\ \x81\xec\x24\xaa\xcd\xcb\x13\x4b\x73\x36\x20\xee\xe7\xd7\x47\x90\ \x85\x8f\xac\x98\xf6\x35\x19\xc1\x81\xec\x24\xca\x00\xe0\x09\x74\ \x69\x68\xb0\xd4\xe2\x24\x2b\x9a\x6d\x1c\x0f\x83\xff\x50\xd2\xeb\ \xfa\x97\xdd\x65\xb9\x9b\xf4\xab\x94\x90\x31\xa2\x76\x42\x0b\xb3\ \xd6\xa8\x13\x7e\x9c\xa6\xdf\xe3\xf7\x47\xac\xe9\xdf\xe6\x89\x6f\ \xd2\x63\x60\xb0\xf5\x35\xdb\x8a\x66\x9b\x62\xe7\x41\xa7\xa4\x74\ \xca\x83\x04\xe6\x43\xe7\xa6\x54\x4c\xa5\x9d\x12\x64\x6a\xcc\xe9\ \x02\x08\x4f\x84\x6e\xf9\x01\xe6\x5a\x5f\xc9\x56\xcc\x46\x48\xb7\ \xf3\xa0\x47\xef\x5f\x04\xd7\xf3\x33\x9f\x6e\x53\x4c\x8d\xf9\xc1\ \xd2\x5c\xae\xc6\x97\x6a\x34\xc0\x5c\xeb\xe9\x47\x2b\x9a\xed\x21\ \xbb\x0e\x78\x97\x39\x43\xb8\xfa\x2a\x6d\x55\xa8\xfd\x0e\xd5\x1b\ \x30\x23\xe6\x54\x45\xeb\x4c\x0d\x5f\x31\xa7\xdb\x69\x30\xd7\x7a\ \xca\xb0\xe2\x31\x42\xbe\x5d\x07\x7c\xcc\x86\x89\x70\x3a\x8b\xf0\ \xce\xc6\x6f\x4d\xab\x89\xc0\x1b\x21\x0b\xfe\x09\x73\xad\x27\x21\ \xd7\x8a\x66\x7b\xcc\xae\x03\x4e\x1f\x0e\x80\x35\xa0\xe3\x1c\x33\ \x62\xfe\x7c\xca\x87\xdc\x8d\x2d\x0f\x85\xe0\xbd\x50\x91\x15\xcd\ \xf6\x84\x5d\x07\x9c\xce\x0a\x81\x35\x98\x93\x91\x6c\x4a\xcc\x3f\ \xdf\x3e\x95\xbb\xb1\xfd\x83\x81\x45\x8b\x18\x56\xa9\x15\xcd\xb6\ \x1a\x95\x9f\x80\xd1\x7c\xbf\x73\xb6\x29\x31\x4f\x38\x94\xc2\xd9\ \x79\x78\x15\x8c\xb5\xe1\x63\x84\x2a\x6b\x39\x6d\x68\xe8\x85\x76\ \x1e\x70\xaa\x49\xca\xdb\xc7\x12\xab\x42\xb5\x74\xcd\x88\xf9\xbe\ \xe3\xd9\x5c\x8d\x6b\x6e\xf9\x11\x18\x6b\xc3\xaa\x71\xa8\x8e\x0b\ \x2c\xe3\xb5\x9d\x65\xf1\xd7\x76\x1f\xf4\x25\x39\xeb\xe1\x74\x7e\ \x86\x8a\xc2\x98\xd1\x2e\x86\xea\x08\xb3\xde\x1f\xae\xa5\x6c\x3f\ \x8a\xba\x08\x9e\xe4\x88\x19\x78\x89\x65\xcc\x36\x30\xaa\x77\x5b\ \xbb\x0f\xf8\x1d\x71\x4f\xa9\x25\x55\x65\x70\x3c\x3f\x41\xed\xb6\ \xa9\x20\xba\x19\xb1\xa6\x82\xe8\xbc\x41\x5d\x28\x60\xac\x0d\xab\ \xfd\x94\x7b\xda\xc0\x6c\x4d\x16\x55\xc6\xa7\x6b\xba\xd5\x35\xa7\ \xe1\x7e\x26\x41\x1d\x0d\xe6\x65\xae\xd4\x1b\x21\x9a\x15\x67\x6a\ \x6f\xc3\x1b\x33\x0f\x2c\x86\xb1\xb2\x60\xb6\x3c\x1c\x23\xd4\xd5\ \xd6\xa2\xdd\x70\x41\x93\x18\x9f\x1a\x81\xec\x13\x13\xf8\x16\x75\ \x11\xd8\x38\x46\xb0\xfb\x07\xb2\xf3\x45\x6d\x46\x80\x39\x50\x26\ \x88\xd9\xf1\x9d\x9b\xb9\x82\xbb\x71\xa6\xee\xc0\x30\x56\x06\x3e\ \x90\x9d\x4d\xfd\x3a\xc5\x4b\x00\xa8\xf1\x22\x30\x07\xea\x8f\x65\ \x76\x7c\xf7\x94\x64\x72\x37\xce\xc3\xd7\x7c\x06\x63\x65\x22\xf5\ \xcb\xe6\x97\x1a\xce\xd7\x33\x2b\x42\xe1\x82\x26\x41\x1f\x26\xcd\ \x8c\x2d\x65\x3b\xf8\xaa\x85\x3c\x4b\x3c\x8e\xba\x08\x4c\x5d\x6a\ \x38\xc6\x4b\x00\xee\x8d\x7f\x16\x2e\x68\x12\x57\x45\xf5\x32\xfd\ \x23\x28\x8f\x74\x5f\xf0\x0a\x8c\xb5\x61\x15\x5a\xaf\x07\x99\x5b\ \x3c\xcc\x4b\x00\x78\xac\x08\xe5\xaf\x4c\x04\xb3\x63\x3b\x94\xd3\ \x5f\x2d\xb7\xc5\x3e\x01\x63\x65\xa7\x10\x8d\x7d\x4b\x2c\x36\xa4\ \xac\xb2\x7c\xb8\xa1\xc1\xec\x38\x76\xc0\xf4\xb8\x7e\x9c\x2a\x73\ \x39\xd6\x57\x47\xdf\x0f\x63\x6d\x58\x07\x51\x3c\xdc\xcf\xa2\x7c\ \x5b\x60\x2c\x8b\xb3\xd7\x9b\x1e\xd7\xd8\x8c\xe5\xdc\x8d\x33\xd5\ \x09\x86\xa9\xb2\x55\x3c\x7c\x25\x4f\x41\xa0\x36\x2d\xc0\x58\x22\ \xf6\xc4\x9b\x1e\xd7\x9d\xc5\x07\xb9\x1b\xe7\xbc\xf2\x42\x98\xaa\ \x67\x2d\xb7\x9e\xd9\x2a\x42\x2c\x4f\x41\x18\xbd\xfe\x4b\xb8\xa1\ \xc1\x7c\xb8\x75\x8a\xb9\x37\x85\x94\x60\xb5\x8a\xc3\x4c\x84\x1f\ \x8f\xee\x83\xa9\x7a\xea\xae\xab\x48\x31\x96\x33\x5b\xed\xa1\x7e\ \xe0\x29\x08\xfd\x92\x46\xc1\x0d\x0d\xe6\xe5\x55\x1f\x9b\x5e\xff\ \x82\x47\xe8\x48\x0c\xc6\xda\xb0\x9c\x6e\xf1\x7b\x0b\x66\x23\x48\ \xe3\x79\x0a\xc2\x4d\xb3\x1e\x85\x1b\x1a\xcc\x83\x49\x23\x4d\x8d\ \xe9\x93\xc9\x63\xb9\x1c\x67\xba\x11\x09\x63\xf5\xa8\x71\x56\xcc\ \xb3\x1d\xc5\xd5\xcf\x0b\xb7\xa4\x9e\xa8\xae\x80\x23\x1a\x08\x35\ \xda\x34\x33\xa6\x74\x6c\xc1\x23\xdf\xa5\xcf\x82\xa9\x7a\x92\x2c\ \xbe\x66\x3d\xb3\x95\xc5\xa1\xbc\x05\x82\x6a\x80\x02\xe3\xa0\x7c\ \x66\x33\xe3\x39\xeb\xc0\x52\x2e\xc7\xf9\x03\xd4\x45\x68\xc4\x6c\ \x85\x27\xad\x77\x66\x2b\x0b\x7d\x79\x0b\x44\xec\xc1\x65\x70\x44\ \x83\x38\x5a\x79\xdc\xf4\x78\xa6\x1d\xdd\xcf\xe5\x58\x8f\x58\xfb\ \x39\x4c\xd5\xd3\x2f\x58\x59\xea\x63\xbd\x33\xdb\x88\xa0\xdb\x78\ \x0b\xc4\x27\xdb\xdc\x70\x45\x9b\x7c\x21\x6f\xa7\x04\xe9\x7d\xb8\ \x78\x64\xf0\xb2\x77\x61\xac\x9e\x34\x45\xba\xc5\x72\x66\xdb\x36\ \xbc\x67\x20\x6f\x81\x78\x76\xe5\x38\xb8\xa2\x41\x2c\xcc\x5a\x63\ \x6a\x2c\xe9\x7c\x98\x57\x7a\x24\xa2\x2e\x82\x27\x51\x63\x04\x87\ \x15\xd1\x1e\xae\x84\xa7\x40\x08\x09\xcf\xc3\x15\x0d\x62\xca\xee\ \xb9\xa6\xc6\x92\x76\x77\xf8\x10\x09\x9d\x57\x17\xe1\xa8\xc3\xaa\ \xb8\x14\x71\x1b\x4f\xc1\xa0\x8a\x54\x35\x2a\x0a\xd2\x18\x81\xd9\ \xc5\xac\xe9\xdf\xe3\x95\x6b\xa2\x1f\x80\xb1\x36\x6c\xb6\x5b\xac\ \x6b\xb6\xb2\x38\x97\xb7\x80\x50\x0b\x68\xe0\x7b\x5e\x5c\x35\xde\ \xd4\x38\xce\xd8\x9f\xc4\xe5\x38\xd3\x8d\x39\x98\xaa\x47\xcd\xb6\ \xb2\xd9\x7e\xc9\x5b\x40\x56\xe4\x6d\x81\x33\x1a\xc0\x03\x8b\x5e\ \x33\x35\x8e\xa9\x45\x7b\xb8\x1c\xe7\xc3\xe5\x45\x30\x55\xcf\xfa\ \xdc\xca\x66\xfb\x1a\x6f\x01\x09\xdf\x3d\x17\xce\x68\x00\xb7\xc6\ \x0e\x36\xef\x23\x88\x22\xe9\xad\xd2\x79\x84\xd2\xdd\x60\xaa\x9e\ \x2e\x2e\x89\xaf\x58\xd9\x6c\xfb\xf1\x16\x90\x31\x1b\x26\xc2\x19\ \x7d\x0c\x9d\x83\x77\x9c\xda\xdd\xb4\x18\xfe\x23\xf6\x71\x6e\xc7\ \x7a\x39\xea\x22\x34\x52\x84\x46\x7c\xc0\xb2\x66\xdb\x56\xee\x76\ \x03\x6f\x01\x19\xb0\xf8\x0d\xb8\xa3\x8f\x39\x72\xb2\xd8\xd4\x18\ \x0e\x5a\xfa\x36\xb7\x63\x4d\xb7\xe6\x60\xac\x1e\xaf\xea\x76\xb6\ \xac\xd9\x9e\x6d\x69\x7e\x82\xa7\x80\xfc\x6d\xf6\x20\xb8\xa3\x8f\ \xd9\x56\xb4\xd7\xd4\x18\xfe\x7b\xf3\x24\x6e\xc7\xfa\xfb\x9d\xb3\ \x61\xaa\x0d\x67\x22\x1c\xb7\x5c\x0b\xf3\x06\x8a\x88\x6f\xe0\x2a\ \xe9\x99\xe3\xf3\x3e\xa3\x58\x90\xb5\xda\xd4\x18\x4e\xdb\xb7\x90\ \xdb\xb1\x1e\xb7\x35\x1c\xc6\xda\x90\x14\x61\x8d\xc3\xea\x68\x0f\ \x3a\x99\xb7\xc0\x50\xaf\x2c\xe0\x3b\x7e\xd8\x35\xc7\xd4\xf8\x6d\ \x2e\xdc\xc5\xed\x58\xbf\x86\xba\x08\xec\xd4\xb1\xad\x6f\xb6\xd2\ \x70\xde\x02\x13\x97\x91\x0c\x87\xf4\x21\xa1\x9b\xc3\x50\x2a\xd3\ \x24\x9e\x58\xfe\x1e\xcc\xb5\xe1\x0e\x0d\xff\xb4\xbe\xd9\xca\xa2\ \xc8\x5b\x60\x3e\xdb\x1e\x09\x87\xf4\x21\xcf\xa5\x8c\xc3\x99\xbb\ \x49\xf4\x4c\xfc\x17\xcc\xb5\xc1\x6a\x5f\xc2\x7d\x96\x37\x5b\x1e\ \x0b\xd2\xbc\x90\xf2\x11\x1c\xd2\x87\xf4\x5e\x38\xdc\xb4\xd8\x3d\ \xb2\x64\x0c\xd7\x63\x7d\x3b\xea\x22\x34\xa4\x9a\x80\xb0\x10\xa7\ \x83\x05\xb4\x87\xcd\xe1\x29\x38\x41\xf3\x5f\x82\x43\xfa\x90\x5b\ \x66\x3f\x6e\x5a\xec\xde\xdb\xf4\x1d\xd7\x63\xdd\x39\xba\x2f\xcc\ \xb5\x7e\x26\xc2\x21\x07\x2b\x04\xc8\xe2\x0c\x9e\x82\xd3\x69\x5a\ \x1f\x14\xa4\xf1\x11\x67\x6a\x6a\xd4\x2b\x22\x43\x4c\x8b\x5d\xe4\ \xde\x05\xdc\x8e\xf5\xa9\x33\xd5\xfa\x99\x35\xcc\xf5\xbc\x8f\x63\ \x8a\x30\x8d\x19\xb3\x75\xc9\xc2\xab\xbc\x05\x28\xbf\xa2\x08\x4e\ \xe9\x03\x0a\x2a\x8e\x9a\x1a\xb7\x8d\x47\x76\x70\x3b\xd6\x34\x67\ \x61\xae\x8c\x7e\x1c\xe3\xb9\x6b\xc3\xaa\xc3\xa9\x70\x4a\x1f\xb0\ \xa5\x70\x97\xa9\x99\x08\xa5\xa7\xca\xb9\x1d\x6b\x4a\x59\x84\xb9\ \x32\xd2\x9d\xc1\x23\x31\x03\x7f\xa5\x3d\x74\x29\x4f\x01\x8a\xd8\ \x13\x0f\xa7\xf4\x01\x09\x87\x52\x4c\x8b\xd9\x5f\x63\x06\x72\x3d\ \xd6\x54\xb1\x0e\xe6\x5a\x4f\x25\x74\x13\xd6\xc1\x12\xda\x43\x2f\ \xe5\x29\x48\xef\x6c\xfc\x16\x4e\xe9\x03\x26\xed\x8c\x35\x2d\x66\ \xfd\x17\x8f\xe6\x7a\xac\x67\x1f\x44\x5d\x84\xfa\x29\x5f\xe2\x22\ \x07\x6b\xb8\xdc\xc2\x7f\x78\x0a\xd2\xc0\xa5\x63\xe0\x94\x3e\xe0\ \xfd\xcd\x93\x4c\x8b\xd9\xdb\x1b\xbf\xc1\x1f\x36\x18\xec\xf9\xad\ \xcb\xc7\x32\x67\xb6\x01\x8a\xd0\x9b\xa7\x20\xf1\x5c\xa6\xcf\x97\ \x0c\x5b\xf9\x01\xb7\x47\x3f\x85\x27\x8b\x4d\xfd\xf7\x3e\x4a\x8d\ \x80\xb9\xd6\xcb\x44\x10\x43\x98\x33\xdb\x8e\x91\x3d\x7e\xab\x3d\ \x7c\x25\x4f\x05\x69\x78\x6d\x85\xed\x4b\xcc\xbc\xd1\xb4\xae\xe0\ \x47\xcb\xbc\x77\xe5\xe9\x53\xea\x7d\xf1\xcf\xe9\x6d\x6a\xcc\x62\ \xe4\xda\xff\xc1\x60\xcf\xcd\xaf\x2d\xef\x2c\x8b\xbf\x76\xb0\x88\ \xf6\x02\x4b\x78\x0a\xd6\xae\xe2\x0c\xb8\x65\x2b\xb9\x79\xd6\xa3\ \xa6\xc5\xab\xb8\xaa\xd4\x32\xef\xfd\xbf\x1f\xa3\x4c\x4f\x45\x7b\ \x32\x79\x2c\x0c\xf6\xdc\xe2\x33\x89\x0e\x56\xd1\x5e\x60\x14\x4f\ \xc1\x8a\xcf\x4c\x81\x5b\xb6\x82\xd3\x35\x67\xd4\xf6\x4a\xb0\x29\ \xb1\xfa\xd3\xcc\x01\x96\x79\xef\x83\xa5\xb9\xea\x95\x53\x7b\xea\ \xcf\x35\xe1\xc7\x69\xa6\xfd\xbb\xbd\x12\x5f\x85\xc9\x9e\x23\x69\ \x38\xb3\x66\x1b\x18\x11\xfc\x57\x9e\x82\xf5\x85\xb6\x3b\x01\xde\ \x63\x66\xf3\xc1\x87\x92\x5e\xb7\xcc\x7b\x53\x56\x84\x3f\x3e\xb4\ \xde\x11\xf7\x24\x0c\xb6\x8e\xda\x28\xc1\x37\x3a\x58\xc6\xa5\x88\ \x99\xbc\x04\xeb\xe5\x55\x1f\xc3\x31\x5b\xc1\xa6\xc2\x9d\xa6\xc5\ \xea\x4d\x8b\xf4\x8e\x8b\xcd\x58\x7e\xce\x73\xfd\x61\x5a\x1f\x7d\ \x87\x6f\x06\xd7\x4e\x47\x5d\x84\x3a\xda\xef\x60\x9d\x00\xb7\x10\ \xc6\x4b\xc0\x42\xe6\xbf\x0c\xc7\x6c\x05\x73\x33\x57\x98\x16\xab\ \x29\x16\xe8\x8a\x5c\x52\x55\xa6\xde\x38\xb3\xbf\x5f\xda\xaa\xa3\ \x2e\xc2\x79\xe7\xb5\xb2\xf0\x2d\xf3\x66\xeb\x52\x84\x87\x79\x09\ \xd8\x35\xd1\x0f\xc0\x31\x5b\xc1\x77\xe9\xb3\xb8\xba\x5e\x4d\x79\ \xbe\x0d\x3d\x1b\xf5\x05\x33\x1a\xb3\x6b\x50\x30\x50\xbf\xb6\x2f\ \xfb\x3b\xdb\xb0\x10\x27\x4f\x29\x60\x47\x4c\xce\x95\xb4\x13\xef\ \x6e\xfc\xd6\xb4\x38\x1d\xad\x3c\xee\xd7\x77\xa5\xac\x03\x4a\x17\ \x6c\xe8\xd9\xa8\x7b\x82\xd1\xa4\xa3\x2e\x42\xdd\x2c\x84\x93\x1d\ \x62\xc4\xcb\x1d\x76\x40\x7b\xa1\x38\x5e\x02\xb7\x36\x7f\x3b\x5c\ \xd3\x4b\x86\xae\x08\x35\x25\x46\x7f\x9c\xd1\xcf\xef\x59\x17\x54\ \x03\xb9\xb1\xe7\x33\xba\x64\xe7\xca\xbc\xad\x30\xda\x5f\x34\xcb\ \x61\x17\x02\x64\x69\x30\x2f\x81\x53\xf6\xce\x87\x6b\x7a\x49\xf7\ \x05\xaf\x98\x12\xa3\xbe\x8b\x46\xfa\xf5\x3d\xbf\x4d\x8f\x69\xf2\ \x19\xd3\x0d\x6e\x22\x1a\x7b\x70\x19\x4c\xf6\x97\xf3\xda\x81\xb6\ \x31\x5b\xda\xa2\x6b\x2f\x55\xc1\x43\xe0\xc6\x6e\xfa\x1e\xae\xe9\ \x25\x54\x85\xcb\x8c\x18\x8d\x5e\xff\xa5\xdf\xde\xf1\x50\xd9\x61\ \xf5\x77\x51\x3d\x9b\x7c\xc6\xc9\xbb\xe2\x0c\x7d\x0e\xd4\x45\xf8\ \x59\x65\x57\x85\xf5\xfd\x8d\xc3\x4e\xb8\x14\x21\x96\x87\xe0\x0d\ \x5a\xfa\x36\x5c\xd3\x0b\xaa\x6b\x4e\xab\xed\x94\x20\x53\x62\x14\ \xee\xc7\x4c\x84\xe6\x76\xb3\x7d\x66\x45\xa8\xa1\xcf\xf1\xe1\xd6\ \x29\x30\xda\xda\x2a\x5f\x33\x1c\x76\xc3\xa9\x88\x83\x78\x08\x5e\ \x97\x39\x43\xe0\x9c\x5e\x90\x73\xa2\xc0\xb4\x18\xad\xce\xdf\xe6\ \x97\x77\x5c\x90\xb5\xba\xd9\xcf\x48\x29\x61\x46\xf2\xda\xda\xcf\ \x61\xb6\xfa\xc7\x31\x69\x80\xed\xcc\x96\xb6\xea\xda\xcb\x9d\xb0\ \x7b\xf0\xe8\xba\xa9\x99\xc5\x44\xec\x02\x7d\x9d\x37\x2b\x46\x45\ \x95\x25\xa6\xbf\xdf\x89\xea\x0a\xf5\xa6\x16\xd6\x7d\xd8\x77\x3c\ \xdb\xb0\xe7\x19\xb2\x1c\x75\x11\x5c\x6e\xe1\x38\xb3\x85\x67\x9a\ \x91\x95\x30\x9b\x87\x20\xee\x2d\x39\x04\xf7\x6c\x21\x73\x32\x92\ \x4d\x89\xcd\x0d\x7e\xca\x44\xa0\x2e\xbe\x2d\x7d\x56\xf7\x9e\x04\ \xc3\x9e\xc7\xcc\xea\x6a\x16\x4e\xf9\x9a\xee\xb0\x2b\x6d\x23\xa5\ \x9e\x3c\x04\x91\x7e\x2e\x82\x96\xf1\xf5\x8e\x99\xa6\xc4\xe6\x81\ \x45\xaf\x99\xfe\x6e\xdb\x8f\xee\xf5\xaa\xc0\xce\x0b\x29\x1f\x19\ \xf6\x4c\x74\xdc\xc5\xbd\xd9\x46\x04\x05\xd9\xd6\x6c\xa9\xb7\x8f\ \xf6\x92\x19\x76\x0f\xe2\x97\x69\xd3\xe1\x9e\x2d\xc4\xd3\x6d\x2a\ \xd6\x33\x11\x9a\xca\xa9\xf5\x57\x8f\xb4\xab\xa3\xef\xe7\xdd\x6c\ \xf7\x39\x54\xc7\x05\x0e\x3b\x43\x6d\x27\xec\x1e\xc8\x7f\xad\xf9\ \x14\xee\xd9\x42\x9e\x4a\x7e\xdf\x96\x99\x08\x54\x83\xa1\x35\xcf\ \x4b\xa9\x62\xbe\x86\x0a\x95\x73\x9f\x85\xe0\x16\xde\x76\xd8\x9d\ \x76\x4a\xd0\xef\xb5\x97\x3d\x6d\xe7\x40\xf6\x48\x7c\x05\xee\xd9\ \x42\x82\xbd\xdc\xfd\x59\x39\x13\x81\x4a\x46\x52\x15\xaf\xd6\x3c\ \xef\xf4\xfd\x49\x3e\x7f\xae\xdc\xf2\x23\xbc\x9b\xed\xa9\x0e\xb2\ \x78\xa5\x83\x07\xb4\x97\x4d\xb0\x73\x30\xfd\x7d\x1d\x94\x45\xfe\ \x12\xf3\x88\x29\xb1\x31\xb3\xcf\x97\x2f\xfa\xa9\xbd\xba\xe6\xbf\ \x86\x9c\x21\x73\x6e\xb6\x71\x0e\x5e\x70\xb9\xa5\x07\xed\x1e\x50\ \x7f\x17\x3a\x61\x09\x2a\xf7\xe7\xa9\x28\x0b\xab\x7f\x04\x93\xb2\ \xd7\xf9\xe4\x99\x6f\x8b\x7d\xc2\xe7\xcf\xb6\x34\x77\x23\xe7\x47\ \x08\xd2\xfd\xdc\x98\xad\x23\xac\xcb\xc5\xda\x4b\xe7\xd9\x39\xa0\ \x1b\x0a\x76\xc0\x45\x9b\x09\x9d\x4b\xda\x29\x13\xe1\xe4\xe9\x4a\ \xf5\xd6\xd8\xc1\x3e\x7b\x6e\x3a\x8e\xf0\x25\x33\xf6\x27\xf1\x6c\ \xb6\x39\x8e\x64\xf1\x22\x07\x4f\x04\xc8\xe2\x5b\x76\x0e\x6a\xd4\ \xbe\x44\xb8\x68\x33\x59\x93\xbf\xdd\x94\x98\x8c\x5a\x37\xc1\x94\ \xf7\x19\xb7\x35\xdc\xa7\xcf\x4d\x45\x63\x58\x4c\xb3\xb3\x68\xd1\ \x99\x37\x1c\xbc\xe1\x9c\x76\x6f\x00\x15\x81\xb0\x6b\x50\x43\x37\ \x87\xc1\x45\x9b\x49\xcc\x81\x25\xb6\xc9\x44\xd8\x5d\x9c\xa9\x5e\ \x11\x19\xe2\xd3\xe7\x7e\xdd\xc7\x7f\x24\x68\x6e\x72\x6a\xb6\x25\ \x81\x51\xbd\xdb\x3a\x78\x44\x7b\xf9\xaf\xed\x1a\xd8\xc1\xcb\xde\ \x85\x8b\x36\x13\xea\x28\x6b\x87\xee\x0c\x54\x83\xb6\xf7\xc2\xe1\ \x3e\x7f\xee\xbb\xe6\x0e\xf5\xe9\x73\x52\x6a\x22\xa7\xdd\x73\xbf\ \x70\xf0\x8a\x33\xb2\xdb\xb5\x76\x4d\x03\xbb\x23\xee\x29\xb8\x68\ \x33\xa1\x9f\xf7\x76\xc8\x44\xa0\xa3\x23\x83\x3e\xe8\xf8\xb4\x03\ \x08\x55\xa6\xe3\xd0\x6c\xab\x5d\xe1\x41\xd7\x38\x78\xc6\xae\xa5\ \x17\xe9\xa7\x24\x95\x0d\x04\xd6\x58\xfc\x46\x67\x22\x90\x91\x1b\ \xd9\xad\x36\x3e\x33\x85\xb9\x9c\x66\x94\x52\xb4\x18\x81\x11\x41\ \x77\xdb\x35\xc0\xfb\x0d\xac\xda\x64\x27\xee\x8d\x7f\xd6\xf0\x58\ \xdc\xbf\x70\x84\xa1\xef\xf0\xcf\xd5\x9f\x18\xfa\xfc\x6f\x6d\xf8\ \xda\x67\xcf\x7a\xcb\xec\xc7\xf9\xfb\x30\x16\x29\xde\xee\x00\xfa\ \xd9\xed\x46\x3b\x06\x78\x51\xf6\x5a\x38\x69\x33\x30\x72\x47\x68\ \x46\x26\x02\xf5\xf3\x32\xba\x2d\x78\xb7\xf8\xe7\x7d\xf6\xbc\x57\ \x45\xf5\xe2\xcd\x6c\x57\xc3\x65\x6d\x5e\x0d\x6c\xe2\x8e\x19\x70\ \xd2\x26\xa0\x3a\xaf\x66\xc4\xc2\xa8\x36\x33\x54\x67\xe0\x76\x13\ \x2a\x68\xd1\xa5\x8f\x92\xaa\xb2\x56\x3f\x6f\x79\xf5\x49\xfe\xce\ \x6b\x15\x41\x82\xcb\x9e\xb3\xbb\x15\x56\xda\x2d\xc8\xc3\xd7\x7c\ \x06\x37\x6d\x02\xaa\xfd\xcb\x72\x26\xc2\x67\xdb\x23\x99\xfa\xa5\ \x64\xd6\x05\x12\x0b\x69\x39\xdc\xb5\xfe\x87\x32\xc9\x6e\x81\xa6\ \x34\x20\xd0\x38\xcb\x72\x37\x99\x12\x8b\x23\x06\x64\x22\xec\x2d\ \xc9\x52\x3b\x4e\xed\x6e\xda\x7c\x7a\x7f\xf3\xa4\x56\x3f\xf3\xe6\ \xc2\x5d\x5c\x99\x2d\x7d\x13\x82\xbb\x36\x7c\x76\xbb\xdc\x4e\x81\ \xbe\x01\x05\x69\x9a\x24\x72\xef\x02\x66\x33\x11\x1e\x5e\x3c\xda\ \xd4\xf9\x14\x32\xff\xe5\x56\x3f\x33\xed\x8e\x39\x2a\xa3\x98\x04\ \x57\xe5\x28\x33\xa1\xb8\xaa\x14\x8e\xda\x08\x1f\xa7\xca\x4c\x66\ \x22\xcc\x3e\xb8\xd4\x2f\xfd\xed\xca\x4e\x95\x5b\x32\x17\xd8\x82\ \xaa\x41\x06\x42\x53\x35\x13\xb4\xbf\x46\x76\x0a\xfa\xa6\xc2\x9d\ \x70\xd4\x46\x78\x65\xb5\xf1\xb7\x99\x7c\x7d\xdd\x95\xfe\x80\xde\ \x38\xf3\x61\xbf\xcc\xa7\xe5\xb9\x9b\x5a\xf5\xec\x13\xd2\xa2\x79\ \x31\xdb\xf9\x70\xd3\xa6\x76\xb7\x8a\xd0\x95\xfe\x2a\xd9\x25\xe8\ \x46\x14\x7f\xb6\x13\xfd\x92\x46\x19\x1e\x83\xb0\x9d\xb1\x3e\x7d\ \xe6\x37\x37\x4c\xf4\xdb\x7c\x1a\x9f\x1a\xd1\xaa\x67\xf7\xa6\xf1\ \x24\x83\x5d\x73\xcf\x60\x57\xdb\xfc\xcc\x04\xc5\x2e\x81\xff\x60\ \xcb\x64\x38\x6a\x23\xdc\x11\xf7\xa4\xe1\x31\x48\x39\xbc\xd5\x67\ \xcf\x4b\xa5\x33\xcd\xa8\xbd\x6b\xd4\x47\xd7\x17\x57\x8d\xe7\x61\ \x57\x1b\x0e\x17\x6d\x26\xbf\x9d\x1c\xdc\x91\x7a\xba\xdb\x21\xf0\ \x4f\x26\x8f\x85\xa3\x36\xc2\xef\xa2\x7a\x32\x93\x89\x40\x45\xce\ \xef\x9e\x37\xcc\xaf\xf3\x89\xb2\x1f\x2a\x4f\x57\x79\xfd\x0e\x03\ \x16\xbf\x61\xfb\xca\x5e\x97\x47\xf6\xb8\x02\x2e\xda\xb2\xcc\x84\ \xf7\xec\x10\x7c\x5f\x57\x6c\xb2\x13\xd4\xcd\xc2\xe8\xf1\xbf\x7e\ \xfa\x43\x3e\x7b\xde\xaf\xd2\xa6\x5b\x62\x4e\xb5\xa6\x8f\x9a\x90\ \xf0\xbc\xbd\xaf\xe5\xba\xa5\x37\xe1\x9e\x2d\xa4\xb3\x2c\xfe\xda\ \x0e\x6d\xcf\x69\x27\x42\xed\xac\x41\x7d\xcc\xe8\x85\xd5\xc7\x47\ \xb9\xce\x19\xa5\x79\xa6\xec\xc2\x9b\xa3\x4f\xb7\x29\x5e\xbf\x07\ \xb5\x47\xb7\xb1\xd9\xee\x75\xc4\x0c\xbc\x04\xee\xe9\x05\x4e\x45\ \x1c\x64\x87\x49\x40\x0b\x15\xd4\x27\x31\x6b\x0d\x33\x99\x08\x03\ \x96\xbc\x69\x99\xf9\x44\x1f\x15\xbd\xc5\xcc\x4b\x18\xa6\x4b\x16\ \xfb\xc1\x35\xbd\x45\x75\x5c\xe0\x74\x8b\xeb\x58\x9f\x04\x4b\x72\ \xd6\xc3\x59\x1b\x80\xea\x15\x18\x3d\xf6\x3f\xec\x9a\xd3\xea\xe7\ \x9c\x97\xb9\xd2\x52\xf3\x89\x76\xd8\x55\x67\xaa\x5b\xfc\x1e\xc7\ \xab\x4e\xd8\x39\x03\x61\x25\x0c\xb3\xb5\x79\xb7\x91\xe2\xcd\xda\ \x40\x56\xb1\x3c\x11\xbe\x4d\x8f\x81\xb3\x36\x80\x19\xed\x59\x5a\ \x9b\x89\x40\xc5\x5f\xfe\x34\x73\x80\xe5\xe6\xd4\xc6\x23\x2d\x6f\ \x28\x4a\x25\x3f\xed\x79\x4e\x2b\x9e\x6c\xa3\x04\xdf\x08\xb7\xf4\ \x49\xdd\x04\xe9\x03\x96\x27\xc3\xc8\xb5\xff\x83\xb3\x36\xc0\xb3\ \x2b\xc7\x19\x3e\xf6\x05\x15\xc7\x98\xcd\xa9\x6d\x4c\x74\x39\xc1\ \x9b\xb4\x35\x9b\xee\x6c\xdf\x83\x4b\xfa\x8a\x89\xbd\x2f\xd5\x76\ \xb7\xe9\xac\x4e\x06\xb3\x5a\x68\xb3\x46\xaf\xc4\x57\x2d\x9d\x89\ \xb0\xe9\x48\xba\x5f\x73\x6a\x1b\xd3\xc0\xa5\x63\x5a\xfc\x3e\xf3\ \x0f\xad\xb2\xa3\xd1\xa6\x72\xd7\x9a\xdc\xf0\x9b\x65\xb2\x78\x17\ \xdd\x0c\x61\x71\x42\xd0\xcf\x50\x50\x9f\x9b\x67\x3d\x6a\xd9\x4c\ \x04\x6a\x69\x74\x8f\x9f\x73\x6a\x1b\xd3\x1f\xa6\xf5\x69\x71\x96\ \x8b\xbc\x27\xc1\x6e\x46\x7b\xba\xad\x12\x74\x27\xdc\xd1\x88\xec\ \x04\xb7\xf8\x3d\xab\x13\xa3\xb4\x95\x05\x44\xec\x06\x19\x05\x15\ \x56\xb1\x6a\x26\xc2\x77\xe9\xb3\x2c\x3f\xa7\x52\x8b\xf6\xb4\xe8\ \x9d\xcc\xac\xbd\x6b\x4e\x51\x70\x69\x22\x5c\xd1\xa8\xdd\x6d\x54\ \xef\xb6\xda\x20\x67\xb3\x38\x31\xb6\x16\xed\x86\xc3\xd6\x21\xb7\ \xfc\x88\x65\x33\x11\x72\x4e\x14\xa8\x9d\xb4\x9d\xa3\xdd\x3e\xbc\ \x8e\xb1\xe8\xf9\xb3\x97\x3a\xd8\x31\xb2\xc7\x6f\xe1\x8a\x46\x7e\ \x2c\x93\xc5\x7e\x2c\x4e\x8e\x99\x07\x16\xc3\x61\xeb\x40\x5f\xd3\ \x8d\x1e\x73\xea\x0d\xe6\x0d\x4f\x2c\x7f\x8f\x89\x39\x45\xcf\x69\ \xb5\x0f\x92\xe6\x75\xcb\x15\xfa\xc2\x0d\x4d\x39\x4e\x90\xbe\x63\ \x6d\x72\x7c\xb8\x75\x0a\x1c\xb6\x0e\x73\x32\x92\x2d\x99\x89\xb0\ \x20\x6b\x35\x33\x73\x8a\x1a\x65\x9e\xa9\xa9\x69\xf6\xbb\x3d\x94\ \xf4\xba\x5d\x72\x6a\xbf\x82\x0b\x9a\x7b\x95\x37\x8d\xa5\x09\x32\ \x74\x45\x28\x1c\xb6\x0e\xd4\x0c\xd3\x6a\x99\x08\xd4\x7c\xf2\x26\ \x83\x3f\xda\xf9\x5a\x3b\x8b\x0f\x36\xfb\xfd\xee\xb6\xf0\x07\xbf\ \x16\x18\xed\x76\xca\x4e\x82\x0b\x9a\x9a\x7b\xdb\xed\x56\x96\x2e\ \x3b\xd0\x97\x6d\x60\xde\xf9\xa1\x37\xa5\x08\xdf\xdd\xf8\x2d\x73\ \xe6\xd3\x92\xae\xc1\x37\xce\xec\xcf\xfc\xe5\x85\x40\xb7\x74\x13\ \xdc\xcf\x3f\xb5\x13\xc6\xb0\x32\x51\xae\x9c\xda\xb3\x45\x3f\xf9\ \xec\xce\x90\xe5\x63\x8d\xbd\x48\xb2\xee\x8b\x16\x3d\xcf\xb6\xa2\ \xbd\x6a\x3b\x25\x88\x39\x03\x7a\xa6\x99\xbf\x98\x68\xee\xb1\xf8\ \x7e\xe7\x65\x1f\xbc\x0e\xd7\xf3\x17\xa1\xa1\x17\xba\x14\x61\x19\ \x2b\x93\x25\xab\x2c\x1f\x2e\x7b\x16\x31\xe1\x05\xcb\x74\x67\xa0\ \x34\x34\x29\xe1\x45\x26\x0d\x88\x76\xab\xcd\xa1\xa8\xb2\x84\xf5\ \x5d\x6d\x22\xd5\x4a\x81\xe9\xf9\x73\x77\x1b\xd9\xed\x5a\x2d\x18\ \xc7\x58\x98\x30\xcb\x5a\xd9\x3f\xca\x4e\x50\xe7\x61\xab\x64\x22\ \x50\x8a\x18\xcb\x46\xb4\xef\x78\x76\x93\xef\xb8\xa7\x24\x93\xe5\ \x77\x2c\x0c\x88\x0c\xb9\x1a\x6e\x67\x05\xc3\x8d\x08\x0a\xd2\x02\ \x52\x6d\xf5\x49\x33\xc9\xc7\xbd\xb0\x58\x85\x3a\x0d\x04\xb8\x25\ \x83\x33\x11\x8e\x36\xeb\x59\xf2\xca\x0b\xf5\xdb\x58\x2c\x9b\xad\ \x7b\x4f\x42\x93\xef\x49\x05\xc7\x19\x7d\xbf\x53\xd4\x75\x1b\x2e\ \x67\xad\x74\xb0\x37\xad\x3e\x71\x46\xf9\xb8\xcb\x2b\xab\x1c\x28\ \xcd\x31\x74\x9c\xaf\x9b\xfe\x60\xb3\x9f\x85\xb2\x44\x58\xff\x42\ \x4f\x7d\xc5\x9a\x22\xce\x84\x54\x3b\x9c\xd3\xf2\x82\xea\xb8\x20\ \xc0\x2d\xcc\xb4\xf2\xc4\xa1\x3c\x47\xa0\xea\x65\x0f\xad\x90\x89\ \xb0\xd0\x84\xe2\xe5\x66\x88\xd2\xd5\x9a\x22\x7c\xf7\x5c\x16\xd3\ \xbc\x14\x18\x9b\x45\xe9\x10\x23\x5e\xae\x05\x69\x87\x55\x27\x0f\ \xb5\x24\x01\xaa\x1a\xbd\x7f\x91\xdf\x33\x11\xca\xab\x4f\x1a\x5e\ \x08\xc7\x4c\x1d\x2a\x3b\xdc\xe8\xfb\x7e\xb2\xcd\xcd\xda\x3b\xa5\ \xe1\x3a\xae\xc5\xa1\x22\xc2\xd4\x61\xd3\x92\x57\x0c\xdd\x92\x9e\ \x38\xcf\x3b\x46\x17\x44\x69\x4e\x26\x82\x19\x85\xcb\xcd\xd4\xf4\ \xfd\x49\x8d\xbe\x2f\x1d\x61\x31\xf4\x3e\xc5\x6d\xa7\x8a\x7f\x84\ \x9b\xb1\x71\x7e\x3b\xc0\xaa\xe5\x18\xa9\xc9\x21\xef\xbc\xb6\xf6\ \x73\x43\xc7\x78\x45\xde\x96\x46\xff\xfd\x1f\x8f\xee\x33\xbc\xe2\ \x98\xd9\x7a\x75\xcd\x7f\x1b\x7d\xe7\xa7\x93\xff\xcd\xca\xd1\xc1\ \x19\x97\x22\x3d\x04\x17\x63\xcb\x70\x5f\xb0\xe2\x64\x9a\x7d\x70\ \x29\xf7\x66\xfb\xc8\x92\x31\x7e\xcb\x44\xa0\xe4\xfe\xe0\xf9\x2f\ \xd9\xae\x88\xf6\x6d\xb1\x4f\x34\x3a\xe6\x54\xdb\x97\x89\x7c\x5a\ \x45\x7c\x0e\xee\xc5\x20\x2e\x59\xfc\xd2\x6a\x93\xe9\xe3\x54\x99\ \x7b\xb3\xbd\x6b\xee\x50\xbf\x65\x22\x44\xec\x89\xb7\x6d\xd3\xc3\ \xc3\xe5\x45\x1e\xdf\xfb\xce\xb8\xa7\x59\x78\x87\xcf\xe1\x5a\xac\ \x42\x37\xcc\xdc\x62\x9c\x95\x26\xd4\xb0\x95\x1f\x70\x6f\xb6\x46\ \xd6\x8a\x6d\x2c\x13\x81\xcc\xe8\xea\xe8\xfb\x6d\x6b\xb6\xb1\x07\ \x97\x79\x7c\x77\xfa\x23\x64\xed\x14\x2f\x21\x96\xd6\x2b\x4c\x8b\ \x61\x3a\xc5\x74\xbd\x2c\x40\x16\xd7\x5b\x65\x52\x75\x8b\x7f\x9e\ \x6b\xa3\x35\xba\x9d\x76\x63\xcd\x35\x9f\x4b\x19\x67\x5b\xa3\x6d\ \xac\x33\x05\xb5\xf8\x31\xfa\x12\x49\x2b\xaf\xe2\xae\xa5\x75\x0a\ \xb7\xb2\x01\x81\x51\x62\x27\x2d\xa8\x39\x56\x98\x58\x57\x45\xf5\ \x52\x6b\x54\x7e\x0b\xd2\x50\x49\x40\x7f\xdc\xd2\x5b\x9c\xbd\xde\ \xd6\x46\x4b\xa2\xe3\x99\x86\xa0\x33\x6c\x0b\x3f\x77\x56\xfb\x29\ \xdd\xaf\x82\x4b\xd9\x08\x4a\x25\xd1\x02\x9b\x67\x85\x09\x46\x2d\ \x61\x78\xc5\x68\xd3\x6b\x28\x13\xe1\xe4\xe9\x4a\xfd\x03\x92\xdd\ \xcd\x96\x76\xaf\x47\x4e\x16\xd7\x7b\xff\x1d\xc7\x0e\x58\x35\xf3\ \x20\xd7\xe9\x0e\xba\x1e\xee\x64\x43\x02\x22\xc5\x9b\xb5\x20\x17\ \xf9\x7b\x92\x25\xe7\x6d\xe6\xd6\x6c\x8d\xfe\x40\x95\x5f\x51\xff\ \x23\x11\x75\xc9\xb0\xbb\xd1\xfe\xa4\xf8\xcc\x94\x7a\xef\x4f\xf3\ \xcd\x82\xcf\x9a\x4f\x39\xf1\x70\x25\x7b\x67\x28\xfc\xc3\xdf\x55\ \xc2\x5a\x52\xf0\xd9\x6e\x8c\xdb\x1a\x6e\x68\x9b\x98\xf3\xd9\x5d\ \x9c\xa9\x5e\x11\x19\xc2\x8d\xd9\xbe\xb5\xe1\xeb\x7a\x63\x40\xe9\ \x86\x16\xdb\xd1\x1e\x75\x4d\x91\x6e\x81\x1b\xf1\x70\x86\xab\x08\ \x5d\xb5\xa0\x97\xf9\x6b\xb2\xbd\xb9\x61\x22\xb7\x66\xfb\xd2\xaa\ \xf1\x86\x8d\x6b\xaf\xc4\x57\xcf\xf9\xb7\xe8\x6c\xbc\x37\x23\xf9\ \xa5\x46\x7e\x80\xfd\x7e\xe7\x6c\x2b\x3d\x63\x69\xa0\x2c\xde\x05\ \x17\xe2\x08\xa7\x5b\x0a\xa6\x36\x1b\xfe\x98\x70\xfd\x17\x8f\xe6\ \xd6\x6c\x1f\x58\xf4\x9a\x69\x99\x08\x53\xf7\x26\x72\x65\xb4\xa4\ \x40\x45\x52\x4b\xaa\xca\x4c\xfb\x35\xd1\xd2\xb6\x36\x54\x0e\x15\ \xee\xc3\xe3\x91\x82\x22\x3c\xec\x8f\x3e\x66\x7f\x9b\x3d\x88\x5b\ \xb3\xbd\x35\x76\xb0\x29\x99\x08\xf4\xa1\x88\x8e\x15\x78\x33\x5b\ \x52\x52\xf6\xba\x73\xc6\x7c\x84\xc1\xd7\xa3\x9b\x79\x74\x50\x85\ \x6b\xb8\xbc\x1b\x6e\xa4\x24\x98\x7d\xa4\x40\xbb\x8f\x8a\xea\x4a\ \xee\x8c\x96\x7e\xd6\x77\x9c\xda\xdd\xb0\x71\x4d\x38\xf4\xcb\xc7\ \xa1\xe1\x6b\x3e\xe3\xd2\x68\x49\x54\x64\xa7\x2e\x4f\x2c\x7f\xcf\ \xef\x47\x07\x2e\x77\x50\x37\xb8\x0d\xa0\x2c\x85\x7b\xb5\xbf\xbc\ \xc7\xcd\x9c\x80\x69\x47\xf7\x73\x67\xb6\x05\x15\xc7\x0c\x1d\xd3\ \xbe\x8b\x46\xea\xad\x87\xc6\xa7\x46\x58\x3a\x89\xdf\x8c\x52\x9e\ \x4b\x73\x36\xe8\xed\x72\x16\x64\xad\xd6\xdb\xba\xfb\xf1\x79\x4a\ \xb4\x58\xdc\x03\x97\x01\x75\xcf\x70\xbb\x98\x99\x16\x36\x27\x23\ \x99\x3b\xb3\xdd\x52\xb8\x8b\x5b\x03\xe4\x54\x85\xce\x88\xa0\xdb\ \xe0\x2e\xc0\x53\x5a\xd8\x11\xb3\xaa\xeb\x53\x87\x59\x9e\xd4\x65\ \xce\x10\x18\x10\x3f\xca\x0b\x8c\x08\xfe\x2b\x5c\x05\x34\xf2\xd1\ \xac\xdb\xad\x4e\xb7\x78\x18\x8b\x05\x82\xbc\xbf\x19\x16\xa0\x04\ \xff\x1d\x6e\x02\x9a\xa4\xfd\xd4\xfb\x7e\xa7\x4d\x9a\xcd\x58\x34\ \x10\xd4\x62\x6d\xec\x20\x8b\x57\xc2\x45\x40\xb3\xa1\xfe\x47\xda\ \xc4\x89\xc7\xe2\x81\xa0\x66\x4a\x16\xe7\xa2\x6f\x18\xf0\x8e\x98\ \x81\xbf\x72\x29\xd2\x44\x2c\x24\x08\x6a\xd2\x68\x43\xa9\xc3\x35\ \x4c\x03\xb4\xf2\x1c\x57\x1c\xa1\x4d\xa8\xd3\x58\x54\x10\x54\x4f\ \xd5\x4e\x59\x78\x1e\x2e\x01\x7c\x99\x1a\xf6\xa8\x36\xb1\x4e\x60\ \x71\x41\xd0\xcf\x2a\x73\xc9\x52\x7f\xb8\x03\xf0\x39\x6d\xe5\x6e\ \x37\x68\x13\x6c\x07\x16\x19\x04\x89\x69\x68\x37\x0e\x0c\xa5\x43\ \x8c\x78\xb9\x36\xd1\x66\x63\xb1\x41\xbc\x2a\x40\x91\x62\x68\x1d\ \xc0\x0d\x80\xf1\xa8\x8e\x0b\x9c\x8a\x38\x06\xe7\xb8\x10\x6f\xe7\ \xb3\xf4\xfd\x02\x1f\xc2\x80\xe9\x04\xca\x62\x2f\x7f\x17\x22\x87\ \x20\x93\x2e\x2a\x14\x50\xd1\x26\xac\x7a\xe0\xe7\x73\x5c\x61\x03\ \x16\x23\x64\x57\x51\xf7\x5b\x67\x44\xc8\x75\x58\xed\xc0\xff\x84\ \x86\x5e\x58\x9b\x1e\x66\x7e\x6d\x5c\x08\x32\xb6\x06\x2d\x8e\x0d\ \x80\x25\x77\xb9\xc2\x1d\xda\x04\xdd\x83\x45\x0a\xb1\xff\x11\x4c\ \xdc\x4d\x95\xf0\xb0\xaa\x81\x65\xe9\x14\xd3\xf5\x32\xcd\x70\xbf\ \xc2\x82\x85\x18\xde\xd1\x7e\x45\xf3\x18\xab\x19\x30\x41\x80\x5b\ \x78\x9c\xea\x79\x62\xe1\x42\x2c\x7d\x04\xa3\xcb\x3b\x58\xbd\x80\ \x3d\xc3\x0d\x0b\x71\x6a\xa6\x1b\xa6\x4d\xe4\x1a\x2c\x64\xc8\xc2\ \x26\x7b\x86\x76\xb3\x34\x5f\xb1\x6a\x01\xdb\xa6\x2b\x0b\xf7\xd1\ \x19\x18\x16\x35\x64\xc1\x4c\x83\x5d\xd4\x16\x0a\xab\x14\xd8\xea\ \x2c\x37\x40\x16\x3f\xc1\x45\x08\xc8\x32\x99\x06\xb2\x18\xda\x59\ \x16\x7f\x8d\xd5\x09\x6c\x7a\x96\x2b\xdd\xa3\x4d\xf6\x54\x2c\x76\ \xc8\x8f\xda\x1c\x28\x8b\x77\x61\x35\x02\xfb\x43\xd7\x7d\x65\x61\ \xa0\x4b\x11\x33\xb1\xf0\x21\x13\x95\x11\x20\x0b\x7d\xb1\x00\x01\ \x77\x5c\x15\xd6\xf7\x37\x67\x6b\x2c\x94\xc1\x08\x20\x03\x55\x4a\ \xf3\x0c\xe9\x5c\x80\x7b\xda\x29\x41\xbf\x77\x29\x52\x24\xb2\x16\ \x20\x5f\x67\x19\x50\x36\x4c\xfb\x29\xdd\xaf\xc2\x2a\x03\xa0\x0e\ \x54\xe8\x43\x5b\x24\xab\x61\x12\x90\x0f\x8c\x76\x25\xb2\x0c\x00\ \x68\xde\x47\xb4\xe5\x30\x0c\xa8\xc5\x52\x84\x65\x81\x8a\xd0\x15\ \xab\x08\x80\x16\xe0\x54\xc4\x10\x6a\x0d\x0d\x13\x81\xb0\x93\x05\ \xc0\x68\x42\x43\x2f\x0c\x90\xa5\xc1\xda\x62\x4a\x87\xa1\x40\x0d\ \xb5\xa7\xd1\xfe\x28\x0f\xa2\x79\x82\xc5\x02\x80\xaf\x8e\x17\xb4\ \x9d\x8b\xb6\xb8\x12\xf0\x21\x8d\x7b\x51\xfc\x13\xb0\x93\x05\xc0\ \x60\xce\x16\x2c\xff\xca\xe9\x16\x4f\xc2\x78\xb8\x52\x05\xc5\x1d\ \x8d\x16\x01\x30\x19\x97\x2c\x76\xae\x2d\xe7\x28\x1c\x87\x11\xd9\ \x5a\x25\x9a\x26\xb8\xc2\x83\xae\xc1\xac\x07\xc0\x9f\x4c\xec\x7d\ \xa9\x7e\x23\xcd\x2d\x2e\xc1\x11\x83\xad\x8e\x0a\x96\x50\x5c\x1d\ \x31\x03\x2f\xc1\x24\x07\xc0\x82\x47\x0c\xb5\x05\x6f\x84\x02\x18\ \x16\x93\xca\xa2\x02\x31\x38\x2a\x00\x80\x11\x6a\x3b\x46\x48\x4f\ \x9d\xdd\xed\x56\xc3\xc4\xac\xdd\x22\x3c\xc0\x2d\x24\x05\x28\xe2\ \x10\x54\xe1\x02\x80\x61\xa8\x06\x03\x15\x20\x39\x7b\x25\xf8\x04\ \xcc\xcd\x12\x3a\x41\xf1\xa0\xb8\x50\x7c\x30\x4b\x01\xb0\x19\x6d\ \x94\xe0\x76\x4e\x45\x7c\x8e\x76\x52\xd8\xf1\x9a\xae\x53\x4e\xb7\ \xb8\xd0\x25\x4b\xc3\xda\x86\xf7\x0c\xc4\x6c\x04\x80\xa3\xa3\x86\ \xda\x5b\x6a\xc2\x57\x28\xf7\x68\x60\x27\x04\x59\xfc\x84\xc6\x19\ \x55\xb7\x00\x00\x3a\xce\x88\x90\xeb\x34\xd3\x1d\x51\x7b\xce\x2b\ \x54\xc1\x2c\xbd\x52\x25\x5d\x38\x70\xba\xa5\x17\x68\x3c\x31\xab\ \x00\x00\x4d\x1e\x37\xb8\xdc\xd2\x83\x01\x6e\xe1\x53\xcd\x3c\x56\ \xe1\x02\x85\xc7\x9d\x2b\x8d\x4b\x8a\xb6\x73\xfd\x98\xce\x5f\x71\ \x3c\x00\x00\x68\x1d\x13\x7b\x5f\x1a\x18\x11\x74\xb7\x66\x2e\xa3\ \x5d\xb2\x38\x57\xdb\xf9\xe6\x72\x5a\xf0\x85\xde\x3b\x4e\xd3\x28\ \xbd\xba\x16\x72\x60\x01\x00\x46\xd3\x7e\xca\x3d\x6d\xb4\x9f\xcb\ \x5d\x6a\x53\xcc\xe8\x26\x9b\x5e\x8b\xd7\x2e\x5d\x27\xca\x6a\xdf\ \x87\xde\x4b\x7a\x8a\xde\x93\xde\x17\x51\x07\x00\x58\x83\xb0\x2e\ \x17\x07\x28\xc1\x7f\xd7\xcc\x69\x00\xed\xfe\x34\x7d\xe3\x54\x84\ \x05\x67\xab\x96\x55\x58\xb0\xd6\x00\x3d\xd7\x7c\x4d\x5f\xbb\x14\ \xe9\x75\x97\x2c\xf5\x0f\x90\xbb\xfd\x8d\xde\x03\xc1\x04\x00\x30\ \x4b\x07\x59\xbc\x92\x7e\x7e\xeb\x79\xbf\xb2\x38\x94\x0c\x99\xce\ \x3b\xb5\xff\x19\x7e\xf6\xe7\x79\x4a\xad\x01\x0a\x07\x6a\x25\x16\ \x6a\x3a\xe6\xb9\xfe\x83\xfe\x9f\x1f\xab\xfd\xdf\xfb\xe9\xbf\xa3\ \xff\xf7\x57\x6a\xff\xd9\x1c\x4d\x93\x35\xe3\x1f\xaf\x1b\xbf\xf6\ \xef\xd1\xbf\x4b\x9d\x65\xe9\x39\x10\x0d\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x8c\xe0\xff\x01\x2f\x9b\xa0\xe9\xec\ \x30\x8e\x92\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x64\xb4\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x02\xe8\x00\x00\x02\xe8\x08\x06\x00\x00\x00\x2a\x5a\x00\x90\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01\x42\x28\ \x9b\x78\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x03\x09\x08\x1e\ \x34\x68\x66\xd9\x7c\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\ \xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x64\x34\x49\x44\x41\x54\x78\ \xda\xec\x9d\x07\xb8\x55\xc5\xb9\xbf\xf7\x69\x1c\x0e\xe7\xd0\xcb\ \x01\x54\x7a\x95\xa6\x20\xbd\x8b\x14\x45\x40\x10\x51\x14\xa4\x05\ \x14\x14\x14\x41\x41\x44\xaa\x54\xe9\xe7\x68\xd4\xab\x26\xc6\x24\ \xb6\xc4\x44\x4d\xa2\x26\x1a\x7b\x89\x35\xb1\x77\x05\xd9\x6b\xa7\ \xdc\x14\x4d\x8c\xc6\x36\xf7\x1b\xf6\x4a\x82\x57\x84\xb5\xf6\xd9\ \x6b\xd6\xac\xb5\xdf\xf7\x79\xde\xe7\xb9\xf7\x7f\xff\xf7\x46\xcf\ \x9e\xf9\xe6\xb7\x67\xcf\x7c\x93\x48\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x40\x2e\x51\x28\xd6\x75\x6d\x22\xb6\x12\x3b\x8a\x3d\xc4\ \x3e\xe2\x71\xe2\x28\xf1\x78\xf7\xbf\xd6\xf6\x75\xff\xe7\xda\xa3\ \xdc\xff\x9d\x7a\xee\xff\x2d\x00\x80\xaa\x52\x4d\xac\xef\xd6\x96\ \xee\xfb\xd5\x9b\x7e\xfb\xd5\xa1\xd1\xe2\x08\xf7\xbf\xee\xed\xfe\ \xcf\xdb\xbb\xff\x3b\x8d\xf7\xab\x6b\xf9\xfc\x39\x01\x00\xc0\x06\ \x6a\x8a\xdd\xc4\x93\xc4\x05\xe2\x2a\xb1\x42\xfc\x81\x78\x8f\xf8\ \x94\xf8\x8e\xf8\x81\xa8\xb2\xec\x3f\xc5\xdf\x8b\x6f\x8a\x0f\x8a\ \x37\x89\x3b\xc5\xe5\xe2\x2c\x71\x8c\xbb\x90\xd6\xe3\x63\x02\xc8\ \x29\x1a\x89\xbd\xc4\xb1\xe2\x1c\x71\x85\x5b\x97\x6e\x13\x1f\x16\ \xdf\x12\xff\x28\x7e\x1c\x40\x5d\xfa\x8b\x5b\x93\x7e\x23\xfe\x42\ \xfc\xbe\x5b\x97\x56\x8a\xe7\xba\x75\xa9\x93\x58\x83\x8f\x09\x00\ \x00\xaa\x42\xb3\x44\x7a\xf7\x68\xb6\xb8\x5e\xbc\xd9\x5d\x7c\xfe\ \x14\xc0\xe2\x16\x94\x1f\x8a\x2f\x88\x77\x8a\xbb\xc4\x0b\xc4\x13\ \xc4\xe6\x7c\xbc\x00\x91\x43\xef\x54\xb7\x16\xc7\x89\x17\x8a\x57\ \x88\x3f\x17\x5f\x16\x3f\x8a\x50\x5d\x4a\x89\x8f\xbb\x1b\x1a\x6b\ \xc5\x99\xe2\xb1\x89\xf4\x2f\x8c\x00\x00\x00\xfb\xa8\x9e\x48\xef\ \x38\xeb\x45\x42\xef\xf8\x3c\x90\x48\xef\x06\xa9\x98\xfb\x81\xbb\ \x48\x5e\x93\x48\xff\x0a\xa0\x7f\xc6\xae\xc3\x70\x00\xb0\x82\x86\ \x89\xf4\xd1\xb7\x45\xe2\xf5\x89\xf4\xaf\x72\xff\xc8\x81\xba\xa4\ \x77\xf8\x7f\x25\x5e\x2e\x4e\x15\xbb\x8a\x45\x0c\x07\x00\x80\x78\ \x93\x97\x48\xff\xcc\xaa\x77\xc5\xbf\x23\xbe\x24\x7e\x96\x03\x8b\ \x9e\x57\xbf\x14\x5f\x17\x6f\x74\x43\xbb\x3e\x0b\x5f\xca\xb0\x01\ \x08\x94\x5a\xe2\x20\x71\xb1\x78\x8b\xf8\x2e\xb5\xe8\x2b\xfe\x4b\ \x7c\xde\xdd\x4c\x98\x26\xb6\x65\xc8\x00\x00\x44\x1b\x7d\x09\x4a\ \x9f\x7d\xdc\x28\x3e\x9a\x23\x3b\x50\x41\xf8\xb6\x78\xb5\x78\xa6\ \x78\x04\xc3\x0a\xa0\x4a\xb4\x48\xa4\xcf\x88\x7f\xcf\x9d\x5b\xd4\ \x18\xff\xfe\xdd\xad\xe9\x1b\xdd\x1a\xcf\xaf\x7f\x00\x00\x16\xa3\ \x3b\x13\xe8\xb3\x8c\x9b\xc5\xa7\x13\xec\x8e\x07\xe1\xe7\xe2\xb3\ \x89\xf4\x4f\xd0\xfa\x58\x4c\x75\x86\x1d\xc0\x41\x29\x73\x43\xa4\ \xbe\xb0\xa9\x7f\xb5\xfb\x92\x3a\x92\x75\x3f\x11\x1f\x4b\xa4\xcf\ \xb4\xeb\x5f\xfe\x0a\x18\x76\x00\x00\xe1\xa2\xcf\x8f\x2f\x49\xa4\ \xcf\x2d\x06\xd1\x9d\x00\x0f\x1d\xd8\x9f\x71\x77\xb2\x74\x60\xa7\ \x15\x24\xb0\x51\x90\x9e\x0b\x1b\xdd\xb9\xf1\x05\x75\xc2\xb8\x1f\ \xb9\x6b\xc2\x79\x09\x2e\xc5\x03\x00\x18\x41\x9f\x23\xd7\xad\xc4\ \x36\x89\x2f\xb2\x10\x59\xe7\x1e\x71\x87\x38\x20\x41\x7f\x64\xc8\ \x1d\x0a\xdd\x50\x7e\x55\x22\xdd\x06\x95\x5a\x60\x8f\x5f\xb8\x5f\ \x94\x56\x8b\x5d\x18\xaa\x00\x00\xd9\xe5\x98\x44\xfa\xe8\x0a\x17\ \xa8\xa2\xa3\x23\x56\x8a\x43\x13\xfc\xe4\x0c\xf1\x43\xef\x94\xeb\ \x07\xc6\xae\x15\xff\x97\xf9\x1e\x19\x5f\x75\xc3\x7a\x27\x86\x30\ \x00\x40\x66\xe8\x17\xee\xf4\xcf\xc4\x5c\xa4\x8a\x47\xfb\x34\x1d\ \xd6\xf5\xf9\xd0\x3c\x86\x36\x44\x14\xfd\xab\xd0\xb0\x44\xba\xf5\ \xe1\xdf\x98\xd7\x91\x57\xf7\x90\xd7\x8f\x29\x75\x64\x68\x03\x00\ \x1c\x9c\x96\x89\xf4\x45\x9f\x37\x59\x3c\x62\xab\x7e\xd1\x70\x4d\ \x22\xfd\x6c\x38\x40\x14\x38\x4a\xdc\x22\xee\x65\xfe\xc6\x56\x7d\ \x64\xf2\xe2\x04\x0f\x26\x01\x00\xfc\x07\xfd\x10\xc5\xc9\xe2\x3d\ \x09\x2e\x54\xe5\x9a\x0f\x89\x93\xc5\x62\xa6\x01\x58\x86\x7e\x03\ \x40\x3f\x60\xf6\x34\xf3\x34\xa7\xd4\xdd\xbf\x6e\x4f\xa4\x8f\x2f\ \x71\x8f\x06\x00\x72\x12\xfd\x6c\xf5\x86\x44\xfa\xe9\x67\x16\x86\ \xdc\xf6\x4f\x89\x74\xeb\xc6\x76\x4c\x0b\x08\x99\x6e\xe2\x15\x09\ \x8e\xb0\x60\x22\xf1\x9e\x78\xa9\x78\x18\xd3\x02\x00\xe2\x8e\x3e\ \x7f\x3c\x52\xfc\x65\x82\xdd\x72\x3c\xf0\x6b\xa6\xf7\x8b\x27\xb2\ \x7b\x05\x06\xd1\x5d\x58\x4e\x13\x9f\x64\x0e\x62\xe2\xc0\xbb\xea\ \x3f\x15\x07\x32\x55\x00\x20\x6e\xe8\x07\x6d\xbe\x95\x48\x3f\xd4\ \x41\xc1\x47\x2f\xea\x7b\x08\x0b\xc4\x9a\x4c\x1f\x08\x88\xda\xe2\ \x62\x71\x37\xf3\x0d\x3d\xaa\x8f\x3c\xe9\x63\x79\x45\x4c\x1f\x00\ \x88\x32\x8d\xc4\x55\xe2\x1f\x28\xec\x98\xa1\x1f\x24\xd2\xbd\xd5\ \x5b\x33\x9d\x20\x4b\xe8\xcb\xe8\xdb\xc5\x0f\x99\x5f\x98\xa1\xfa\ \xcd\x87\x0b\xc5\x3a\x4c\x27\x00\x88\x12\xba\xc7\xec\xff\x24\x78\ \xdd\x13\xb3\xfb\x33\xf3\xf7\x12\x9c\x53\x87\xcc\xd1\xdd\x58\xf4\ \x05\xc0\x2f\x99\x4f\x98\x25\xf5\x97\xbc\x9d\x62\x2b\xa6\x17\x00\ \xd8\x1e\xcc\x6f\x63\x01\xc4\x00\xfd\x5c\xfc\x7e\x82\xde\xc5\xe0\ \x9d\x1e\xe2\x1d\xd4\x25\x0c\x78\x03\x41\xf7\xc7\x6f\xc1\x74\x03\ \x00\x9b\x68\xeb\x86\x26\x2e\x7e\xa2\xc9\x27\xbc\x6f\x22\xa8\xc3\ \x41\xe8\x25\xfe\x8c\xb9\x82\x06\xfd\x97\xf8\x6d\xf1\x70\xa6\x1f\ \x00\x84\x89\xde\x2d\xb8\xce\xdd\x3d\xa0\x38\x63\x58\x3b\xea\xdf\ \x11\x9b\x31\x1d\xc1\x45\x7f\x69\xe3\x28\x0b\x86\xa9\x3e\xde\xa9\ \xef\xce\x94\x33\x1d\x01\xc0\x24\xba\xe8\x5c\xe1\xee\x16\x50\x8c\ \xd1\x06\x3f\x49\xa4\x2f\xfe\x35\x64\x7a\xe6\x2c\xfa\x4b\xda\xf5\ \xee\x97\x36\xe6\x04\xda\xe0\x3f\xc4\x8d\x89\x74\xc7\x20\x00\x80\ \xc0\xa8\x96\x48\xb7\x25\xe3\x11\x0f\xb4\xf9\xd2\xd6\x6a\xb1\x8c\ \xe9\x9a\x33\xd4\x77\xbf\x9c\x7d\xc2\xf8\x47\x4b\xfd\xbd\x38\x5b\ \x2c\x60\xba\x02\x40\xb6\x19\x9f\x48\xf7\xa6\xa6\xd8\x62\x14\xdc\ \x2b\x4e\x49\xa4\x1f\xc7\x82\x78\xa2\x1f\x18\x3a\x47\xfc\x33\xe3\ \x1d\x23\xe2\xef\xc4\x63\x99\xba\x00\x90\x0d\x74\x6b\xb2\x5f\x53\ \x58\x31\xa2\x3e\x26\x1e\xc3\x34\x8e\x1d\x43\xc5\x17\x18\xdf\x18\ \x51\xf5\xcb\xa4\x6d\x99\xc6\x00\x90\x09\xfa\x9c\xb9\xee\x65\x4e\ \x67\x16\x8c\x43\xc7\x17\x7d\x99\xb9\x31\xd3\x3a\xf2\xe8\x7e\xd3\ \xb7\x31\xa6\x31\x06\xea\x3b\x5c\x5b\x13\x3c\x76\x04\x00\x1e\xd1\ \x47\x02\xe6\x88\x7f\xa5\x80\x1e\xda\xea\x62\x3b\xb1\xaf\x38\x46\ \x9c\x2e\x5e\x20\x5e\x26\x5e\x29\xde\x2a\xde\xe3\xfa\x2b\xf1\x09\ \xd7\xe7\xc4\x57\x0f\xe2\xf3\xe2\xc3\xe2\xcf\xc5\x5b\xc4\x6b\xc4\ \x6d\xe2\x12\x71\x96\x38\xce\xfd\xcf\xd4\xff\xd9\xf5\xf8\x1c\xbc\ \xfa\x17\x71\x56\x82\x63\x2f\x51\x44\x1f\x67\xd1\x2f\x37\x7e\xc4\ \x38\x3e\xb8\x32\xb8\x55\x03\xb1\xbd\x38\x40\x9c\x20\xce\x16\x97\ \x89\xdb\xc5\x6b\xdd\x9a\x72\xb7\xf8\xa8\x5b\x6b\x0e\x56\x8b\x9e\ \xd9\xaf\x6e\xdd\xbb\x5f\x3d\xbb\x49\xbc\x42\x5c\x2b\x2e\x14\xcf\ \x14\x4f\x10\xfb\x88\xad\xc5\x62\x3e\x0b\xaf\x3a\xe2\x44\xa6\x38\ \x00\x1c\x0c\xa9\xe9\x89\x87\x28\x98\x5f\xb5\x89\x38\x44\x9c\x21\ \xae\x70\xc3\xf2\x2f\xc4\x17\x44\xc7\x12\xdf\x16\xef\x17\xaf\x17\ \x57\xba\x5f\x14\x06\x89\x87\xf1\xf9\x1d\xc8\x07\x12\xfc\xbc\x1c\ \x25\xba\x8b\xcf\x31\x6e\xff\x6b\xbe\xd8\x4c\x3c\x56\x9c\x29\xae\ \x11\x6f\x10\xa5\x78\xab\x77\x2d\xaa\x4b\x3a\xfc\xdf\x25\x7e\x5b\ \xbc\x44\x9c\x26\x0e\x14\x1b\xf2\x19\x1e\x48\xfd\x98\x16\xfd\xd3\ \x01\xe0\x2b\x14\x89\xcb\x13\xe9\xde\xad\x39\x5b\x20\x6b\x89\x3d\ \xc5\xa9\xe2\x7a\xf1\x76\x77\x07\xc9\x89\xb8\x6f\xb8\x5f\x28\x76\ \x8a\x73\xc5\xfe\xee\xbf\x6b\x8e\x2f\x86\x7a\xac\x2f\x13\x8b\x99\ \xfe\xd6\x52\x2a\x5e\x9e\xc8\xf1\x77\x16\xf4\x2f\x64\x83\xc5\x73\ \xdd\x5f\xe5\x7e\xe9\x7e\x21\x8f\x7a\x5d\x7a\xd1\xfd\x85\x51\x7f\ \xb9\x38\x5d\x3c\x5a\x2c\xa5\x2e\x7d\x90\x48\x5f\x7c\xce\x67\xfa\ \x03\x40\x1f\xf1\xc5\x5c\x2c\x86\xfa\x67\xd8\xc9\xe2\x0e\xf1\xf1\ \x18\x2c\x78\x7e\x4c\xba\xff\xce\x57\x89\x67\x89\xdd\xc4\x82\xdc\ \x5c\x10\x5f\x4e\x70\x89\xd4\x46\x24\x93\x26\xde\xc9\xb5\xf1\x58\ \xe4\x6e\x12\xcc\x17\xaf\x13\x9f\xca\xc1\xba\xa4\x7f\x05\x90\x6f\ \x65\x6a\xa2\x78\x44\x6e\x5f\x6e\xef\x44\x19\x00\xc8\x4d\x4a\xc4\ \x9d\x89\x1c\xb9\x04\xaa\xc3\xe7\x51\xee\x59\xcc\x6b\x2d\x3b\x9e\ \x62\x8b\xaf\x8b\xdf\x13\xe7\x89\xdd\xc5\xc2\xdc\x59\x0c\xf5\x0e\ \xed\x2a\xf7\x97\x24\x08\xbf\x2e\x6d\xcb\x95\xba\x54\x4d\xec\xed\ \x9e\xe1\xbe\x25\x26\x3b\xe3\xd9\xf6\x59\xf7\x97\x83\xe9\x62\x47\ \xf7\x8c\x7d\x8e\xd4\xa5\x7f\x51\x97\x00\x72\x8f\xfe\xe2\xbb\x71\ \x2f\x70\x87\xbb\x17\x2a\x59\xf8\x32\xf3\x1d\xf7\x6f\x77\x8e\xd8\ \x35\x37\x16\xc6\x97\xc4\x1e\x94\x87\xd0\x18\x12\xf7\xba\x94\xef\ \xee\x90\x5f\xe2\x5e\xb4\x7c\x9f\x3a\xe3\xdb\x37\xdd\xf3\xf6\x53\ \xdc\xfb\x41\x89\xdc\xa8\x4b\x5d\x29\x0f\x00\xf1\x46\x9f\x6b\xd3\ \x2f\x81\xc6\xf2\xc5\x3d\xbd\xf8\x1d\xe3\x76\x3a\xb9\xd7\xfd\xb9\ \x94\x05\x2d\x7b\xea\x2e\x0e\x17\xbb\xbf\x44\xc4\x38\xac\xeb\xb3\ \xe9\x92\x9f\x78\xf1\xcf\x20\xfa\x6f\xbd\x32\x11\xd3\xb3\xe6\x05\ \x6e\x67\x93\x95\x6e\xf7\x26\x6a\x49\xf6\xd4\x5f\x70\xee\x14\xcf\ \x17\xbb\xc4\x3b\xa4\xff\x3d\x91\xee\x40\x05\x00\x31\xe4\x30\xf1\ \x57\x71\x2c\x5e\x47\xb9\x8b\xdf\xb3\x2c\x58\x46\x7f\x76\x5e\xe7\ \xb6\x71\x8b\xe9\x51\x98\x07\x13\x74\x54\x30\xc1\x11\xe2\xc3\x71\ \x1b\x3f\xfa\xe8\xca\x70\x71\xab\x7b\x19\x92\x9a\x61\xc6\xc7\xdd\ \x0d\x9a\x0e\xf1\x0d\xea\xfa\x0d\x80\x7a\x94\x0d\x80\xf8\x30\x41\ \xfc\xdf\x38\x15\xaa\x0e\x6e\x21\x7e\x9c\x45\x29\x74\x7f\xe7\xf6\ \x42\x3e\x3a\x7e\x8b\xa1\x9e\x33\xe3\x28\x1f\x81\x31\x5e\xfc\x73\ \x9c\x7e\xc1\xeb\xeb\x5e\x70\x7c\x95\xba\x10\xba\xbf\x16\xcf\x13\ \x5b\xc4\xaf\x2e\xbd\x9f\x48\xbf\xa4\x0b\x00\x11\xa6\x9a\x78\x65\ \x5c\x0a\x53\x43\xf7\x3c\xf4\x83\x2c\x3e\xd6\xfa\x98\xb8\x28\x5e\ \x67\x43\xbf\x14\x2b\x13\x5c\xd4\xca\x26\xa5\x71\xaa\x4b\x2d\xdd\ \x33\xe5\x4f\x33\xff\xad\xf5\x1e\xb7\x5f\x7c\xed\x78\xbd\x8e\xbc\ \x3a\x41\x3b\x46\x80\x48\xa2\x7f\x9e\x7f\x22\x0e\xbb\x52\x83\xdc\ \xc7\x81\x76\xb3\xd0\x44\xea\x6c\xa8\xbe\xc8\x75\x5c\x7c\xda\x37\ \xea\xc7\x8d\xca\x29\x2b\x55\xa6\x83\xf8\x6a\xd4\xc7\x83\x6e\x87\ \x38\xd6\xed\xe3\xcd\x5d\x97\x68\x5d\x7c\xd7\xef\x41\xf4\x8a\x4f\ \x50\xff\x99\x58\x97\xb2\x02\x10\x1d\x86\x88\x7f\x88\x72\xe1\x29\ \x77\x7b\x01\x3f\xc1\xa2\x12\x79\xf5\xce\xe2\x05\xf1\xd8\x55\xdf\ \x2b\xf6\xa3\xbc\x64\x8c\x3e\xd2\xf2\x61\xd4\x77\xcb\x97\xd3\xa6\ \x35\x16\x3e\xe8\xb6\xdd\xad\x1b\xfd\xba\xf4\x96\xd8\x8d\xf2\x02\ \x60\x37\xfa\xe7\xae\x8d\x89\xf4\xcf\xf2\x91\x2c\x36\xc7\xb8\x3b\ \xaf\x7b\xa3\xfc\xd8\x46\x61\xa1\x4a\xd5\xae\xad\x52\x4d\x9b\x2a\ \xa7\x6d\x5b\xe5\x74\xeb\xa6\x92\xfd\xfa\x29\x67\xc4\x08\xe5\x8c\ \x1b\x97\x76\xd2\x24\xe5\x4c\x9e\xac\x9c\x29\x53\x94\x33\x6b\xd6\ \xd7\x4c\x9d\x71\x46\xfa\x7f\xae\x3d\xe9\x24\xe5\x8c\x1c\xa9\x9c\ \xc1\x83\x95\xd3\xab\x97\x72\xba\x76\x4d\xff\xdf\x6d\xdc\x58\x39\ \xc5\xc5\x91\xf9\xbb\xec\x75\x3f\xdb\x81\xd1\x5e\x0c\x3f\x4f\xa4\ \x7b\x13\xf3\xd3\xb2\x77\xf4\xf1\xa0\xab\xa3\xfa\x99\xe7\xb9\x17\ \x3e\x7f\x4a\xa8\x8d\xa5\xbb\xdd\x5d\xf5\x88\x5f\x2c\xd5\x9d\xd9\ \xce\xa3\xd4\x00\xd8\x49\x4d\xf1\xd6\xa8\x16\x18\x7d\x8c\xe5\xe6\ \x08\x05\x70\xa7\xbc\x5c\x39\x47\x1e\xa9\x9c\x41\x83\x94\x33\x7e\ \xbc\x72\x66\xcf\x56\xce\xd2\xa5\xca\xd9\xb2\x45\x39\x57\x5c\x61\ \xd4\xe4\xd6\xad\xca\x59\xbe\x5c\x39\xf3\xe7\x2b\x67\xea\x54\xe5\ \x8c\x1a\xa5\x9c\x1e\x3d\x94\xd3\xac\x99\x72\x4a\x4a\xac\xfc\x1b\ \xea\xb0\x73\xbc\x7b\x84\x29\xa2\x63\xf6\x87\x62\x0d\xca\xce\x21\ \xd1\x1d\x27\xee\x8e\xe2\x67\xac\x8f\xb1\x9c\x2c\xfe\x92\x10\x9b\ \x13\xea\x0d\x84\xeb\xdc\x4d\xa2\x08\x07\xf5\x2b\x12\xe9\xbb\x67\ \x00\x60\x09\x6d\xc4\x57\xa2\x56\x4c\x74\x7b\x3e\xfd\x9c\xf3\x7d\ \x36\x17\xee\x3a\x75\x94\xd3\xa9\xd3\xbe\xdd\xef\xd4\xcc\x99\xfb\ \x82\x70\xaa\xa2\xc2\x78\x08\xaf\x92\x1b\x37\x2a\xe7\xfc\xf3\xd3\ \xbb\xf6\xfd\xfb\x2b\xa7\x45\x0b\x95\xaa\x56\xcd\x8a\xbf\xef\xc3\ \x6e\x08\x8a\xe8\x39\xf5\x67\x13\xb4\x62\x3c\x18\xfa\xbc\xf9\x9b\ \x51\xfb\x5c\xab\xb9\xaf\x56\x72\xe9\x33\x77\xd5\xbd\xd5\x47\x45\ \xf7\xbd\x87\xc7\xc5\xc6\x94\x1f\x80\xf0\xd1\xaf\x82\xfe\x29\x4a\ \x05\x44\xef\x9a\x8e\x17\x1f\xb5\xad\x30\x97\x95\x29\xa7\x73\x67\ \xe5\x8c\x19\xa3\x9c\x05\x0b\x94\xb3\x79\x73\xb4\x82\xb8\x1f\x2b\ \x2b\x95\xb3\x62\xc5\xbe\x1d\xf7\x7d\xc7\x6f\xf4\x71\x99\xbc\xbc\ \x50\xbb\xbf\x4c\x8a\x66\x4f\x75\xf9\xc7\x4f\xf4\xa2\x0c\x7d\x8d\ \x91\xe2\x5f\xa3\xf4\x59\x16\xbb\x9d\x3e\x78\x4c\x08\xff\xed\x2f\ \xdd\xe3\x4d\x11\x0c\xe9\xef\x89\x9d\x29\x43\x00\xe1\x71\x5a\x22\ \xfd\xf2\x61\x64\xce\x72\x9e\xe0\xf6\xa7\xb5\xa1\xf8\xa6\x9a\x34\ \x51\xa9\x81\x03\x55\x52\x42\x6a\x6a\xe5\xca\xf8\x86\x71\xaf\xea\ \x2f\x24\x67\x9f\xad\x9c\x61\xc3\x94\x73\xc4\x11\xa1\x04\x76\xdd\ \xd7\xfe\xa4\xe8\x1d\x7d\xd1\x73\xf0\x74\xca\xd1\x7f\xd0\x67\x61\ \x3f\x8f\xd2\x51\x96\xa9\xe2\xf3\x04\x52\xfc\x06\x7f\xe6\x1e\xc3\ \x8c\x58\x48\xff\x9b\x38\x9c\x72\x04\x60\x1e\xfd\x1c\x79\x64\x2e\ \x83\xea\x76\x7b\xf7\x86\x5d\x68\xf5\xb1\x8e\xae\x5d\x55\x4a\x5f\ \xbc\x5c\xbb\x96\x40\xee\x25\xb0\x7f\xeb\x5b\xca\x91\x2f\x31\x4e\ \xc3\x86\x46\x3f\x2b\x7d\xec\x69\x58\xf4\xfa\xa5\x5f\x9a\xe3\x35\ \x49\x5f\x9c\xad\x88\xd2\x86\xc1\x38\xf7\xd7\x1b\x42\x28\x7a\xf1\ \x76\xb1\x77\xb4\xea\xd2\xa7\xe2\x6c\xe2\x12\x80\x19\x74\x47\x84\ \xeb\xa3\x52\x20\x8e\x74\x7b\x05\x87\x56\x54\x1b\x34\x48\xef\x08\ \xcf\x9f\xaf\x52\x3b\x77\x12\xba\xab\xa2\xbe\x88\x3a\x66\x8c\x4a\ \xea\xcb\xa7\x86\x76\xd7\x7f\x12\xbd\x17\x4a\xf5\xa3\x46\x05\x39\ \x58\x97\x8a\xc5\x9b\xa3\xf2\x39\x0d\xe0\xf2\x27\x56\xc1\xeb\xa2\ \xf7\x42\xa9\xee\xee\x96\x47\x7c\x02\x08\x8e\x3a\xe2\xfd\x51\x28\ \x08\xfa\xd5\xcf\xcb\xdd\x07\x6b\x42\xb9\xd8\x79\xec\xb1\xca\xb9\ \xf0\x42\x42\x75\x50\x5e\x76\x99\x72\x4e\x39\x45\x39\x2d\x5b\x06\ \x1e\xd6\xf5\x43\x30\x15\xd1\xea\xa3\x7e\xbb\x58\x92\x63\x75\xe9\ \x81\x28\x7c\x36\xba\x8f\xf9\x77\x09\x98\x98\xa5\xf6\x8c\x97\x8a\ \xb5\xa2\x53\x97\x6e\xcd\xb1\xba\x04\x60\x8c\xfa\x89\x74\xd7\x08\ \xeb\x3b\x20\x9c\x23\xbe\x6e\xba\xf5\xa1\xbe\xe0\xa9\x5b\x1e\x2e\ \x5c\x98\xbe\x00\x49\x88\x36\x66\x6a\xf5\x6a\xe5\x8c\x1e\xad\x9c\ \x46\x8d\x02\xfd\x8c\xdf\x16\x17\x89\x25\xd1\x58\x0c\x1f\x4d\xa4\ \x5b\x0c\xc6\x1d\xdd\xc5\xe6\x05\xdb\x3f\x0f\x1d\xa2\x56\xf1\x1a\ \x31\x06\xe0\x8b\xe2\x99\xd1\xe9\x44\xa5\xeb\x52\x6d\xe2\x14\x40\ \xf6\x68\x22\xbe\x68\xfb\xe4\x1f\x2d\x3e\x69\xb2\x38\xe6\xe7\xa7\ \x5b\x20\xce\x99\xa3\x9c\x5d\xbb\x08\xcb\x36\x84\xf5\x0b\x2f\xdc\ \x77\xf1\x36\xc8\xfe\xeb\x4f\x47\xa7\xb3\xc2\x2b\xee\xdc\x8d\x2b\ \xed\xc5\xf7\x6d\xff\x1c\xc6\xf3\xf2\x27\x1a\xf0\x7e\xf7\xe8\x54\ \x04\xea\xd2\x33\x62\x03\x62\x15\x40\xd5\x69\x2b\xee\xb6\xfd\x67\ \xe3\x1f\x9b\xec\xbe\xa2\x5f\xe8\x3c\xe5\x14\x95\xd2\xfd\xbd\x09\ \xc5\x76\xaa\xcf\xfb\xeb\x57\x51\xbb\x74\x49\x7f\x91\x0a\x60\x1c\ \xdc\x26\xb6\x8a\x46\xbb\xb3\xd6\x31\xac\x4b\x3d\xc5\xbf\xd8\xfc\ \xb7\x6f\xcf\xeb\x9f\x18\x82\xfa\xb5\xe4\xc6\xf6\xd7\xa5\xd7\xc4\ \x23\x88\x57\x00\x55\xdb\xa1\xda\x63\xeb\x24\xd7\x5d\x10\xce\x10\ \x5f\x33\x51\xf8\xf4\x39\xe7\xce\x9d\x55\xea\x9c\x73\x38\xc2\x12\ \xb5\x5d\xf5\x4b\x2f\x55\xa9\xc1\x83\xd3\x5d\x74\xb2\x3c\x2e\xde\ \x10\x67\xd9\xdf\x96\xf1\x1d\xb1\x65\x8c\xea\xd2\x51\xe2\x1f\x6d\ \xfd\x7b\xeb\xb6\x89\xe7\x89\xef\x10\x16\x31\x24\x7f\x27\x8e\xb5\ \x3f\xa4\xbf\x41\x48\x07\xc8\x8c\x6e\xe2\x1f\x6c\x9d\xdc\x2d\xdc\ \x1d\x4c\x23\xad\x11\x87\x0e\x55\xce\x9a\x35\x84\xdd\x88\x9b\xdc\ \xba\x35\xfd\xcb\x47\xbd\x7a\x59\x1f\x27\xfa\x17\x9c\xe6\x76\x2f\ \x86\xfa\x8b\x76\x3b\x76\xce\x83\xef\x1a\x45\x77\x16\xb4\xc5\xef\ \x88\xe5\xfc\xc2\x07\x10\x2b\xfa\xd8\xba\x08\xea\x9d\xca\xb3\xdc\ \x0b\x7b\x81\x16\xb7\x1a\x35\x54\x6a\xe4\x48\x95\xda\xb0\x81\x70\ \x1b\xb7\x1d\xf5\x9d\x3b\x55\xea\x8c\x33\x54\x32\xcb\x97\x4a\xdf\ \x12\x67\xd8\xfd\x3c\xb7\x7e\x75\x34\xca\xaf\xfb\x0d\x10\x3f\xb0\ \x75\xd7\xfc\x02\x2e\x81\xa2\x85\xea\x5f\x98\x4f\xb5\x3b\xa4\x27\ \xc5\x0e\xc4\x2e\x80\x43\xd3\x5b\xfc\xd0\xc6\x89\xdc\xd8\x44\x4f\ \xf3\x9a\x35\x95\x33\x61\x82\x72\xb6\x6d\x23\xcc\xc6\xdd\x8a\x0a\ \x95\x9c\x3e\x5d\x39\x4d\x9a\x64\x75\x0c\xfd\xc8\xee\xdd\xf4\x3f\ \x89\x5d\x22\x58\x97\x06\x89\x1f\xb1\x6b\x8e\x98\x99\xd7\x88\x75\ \xec\xad\x4b\xef\xc7\xec\x18\x1e\x40\x20\xc7\x5a\xac\xdc\x39\xd7\ \x1d\x5a\x5e\x09\xb2\x80\xd5\xae\xad\x1c\xfd\xc2\x27\x8f\x09\xe5\ \xa6\xfa\x21\x29\xdd\x53\x3d\x4b\xe3\xe9\x4d\xbb\x77\xad\x7e\x9f\ \x48\xdf\x2f\x61\xd3\xa0\x8a\x77\x60\xce\x66\xd7\x1c\x23\xe4\xb3\ \x62\x7f\xbb\xef\xca\x1c\x4e\x0c\x03\xf8\x3a\x47\x8b\x7f\xb5\x6d\ \xd2\xd6\x16\xaf\x0e\xb2\x68\xe9\x76\x7c\x27\x9e\x98\x3e\x9f\x4c\ \x50\xcd\x6d\x2b\x2b\x55\x4a\x77\x7e\x69\xd8\x30\xab\x67\x40\xeb\ \xda\xb9\x18\xea\xfb\x25\x47\x46\xe4\x58\xcb\x3f\x6c\xfc\x35\xef\ \x47\x04\x3e\x8c\xa0\xfa\xe1\xb5\xcd\xf6\xbe\xe7\xa0\x3b\xc6\x35\ \x27\x8e\x01\xfc\x97\x16\x09\x0b\xfb\x09\xeb\x27\xd6\x1f\x0b\xaa\ \x50\x15\x15\x29\x67\xe4\x48\xe5\x6c\xd9\x42\x30\xc5\xaf\xaa\x7b\ \xda\x4f\x9a\x94\x3e\xee\x94\x85\xb1\xa6\x7b\xf3\x77\xb7\xf7\x82\ \x56\x33\x8b\xeb\x52\x67\xf7\x48\x8e\x55\x7f\xb7\xc1\xe2\x6f\x09\ \x7a\x18\x71\xef\x16\x5b\xdb\x59\x97\xf4\xc3\x63\xf5\x89\x65\x00\ \x89\x44\x53\xf1\x2d\xdb\x26\xe9\xb7\x82\xfa\xe9\x58\xb7\x4b\xec\ \xd1\x43\x39\x6b\xd7\x12\x44\xf1\xd0\x5d\x5f\x8e\x3f\x3e\xfd\x65\ \x2e\x0b\xcf\x72\xcf\xb0\xb7\x1f\xb1\x8d\x8f\x86\xb4\x4a\xa4\x2f\ \xb5\x5a\x75\x41\x7d\xb1\xbb\x03\x49\xc0\xc3\x38\xa8\x9b\x2d\x4c\ \xb0\xb3\x2e\x3d\x9d\xe0\xc5\x51\xc8\x71\xf4\xc2\xfc\xb2\x4d\x13\ \xb3\x86\x78\x65\x50\x05\xa9\x4d\x1b\xe5\x2c\x5d\x4a\xf8\x44\x7f\ \x5d\x5f\xd6\xaf\x57\x4e\xef\xde\xe9\x2f\x77\x55\x1c\x83\x3b\xc5\ \x62\xfb\x16\xc3\xdf\x88\xa5\x16\xd5\xa5\x86\x89\x74\x8f\x64\x6b\ \xfe\x46\xb5\xc4\xef\x11\xe8\x30\xa6\x5e\xe6\x76\x22\xb2\xac\x2e\ \x3d\x6a\x59\x5d\x02\x30\x46\x89\xf8\x84\x4d\x13\xb2\xa5\xfb\x5c\ \x71\x10\x17\x40\x93\x53\xa7\xf2\xc0\x10\x56\xcd\x79\xf3\xb2\x72\ \x3e\xfd\x5e\xf1\x70\xfb\x16\xc3\x5f\x88\x45\x16\xd4\xa5\x32\xf1\ \x29\x9b\xfe\x36\x1d\xc4\xc7\x09\x71\x18\x73\xef\xb0\xb3\x67\xfa\ \x9d\x62\x01\x71\x0d\x72\x89\x7c\xf1\x76\x9b\x26\xe2\x88\x20\x5e\ \x04\xd5\x3b\x9e\x83\x06\x29\x87\x0b\xa0\x98\xc5\x1e\xea\xce\xe8\ \xd1\x2a\x59\x58\x58\xa5\xb1\xf9\x92\x78\xac\x7d\x8b\xe1\x0d\x62\ \x5e\x88\x75\x49\x7f\x41\xb8\xc7\xa6\xbf\xc9\x78\xb7\x23\x0f\x01\ \x0e\x73\x41\x7d\xb7\xa2\x8f\x7d\x75\xa9\x92\xc8\x06\xb9\xc4\x76\ \x9b\x26\xe0\x1c\x71\x6f\xb6\x8b\x4d\xf3\xe6\xca\x59\xb6\x8c\x50\ \x89\xc1\xb8\x66\x8d\x4a\x76\xe8\x50\xa5\x31\xfa\xbe\x38\xcb\xbe\ \xc5\x70\x63\x88\x75\xe9\x06\x5b\xfe\x0e\xba\x85\xe2\x45\x9c\x37\ \xc7\x1c\xf4\x3d\xf1\x64\xfb\xea\xd2\x22\x62\x1b\xe4\x02\x17\xda\ \x32\xe9\xf4\x99\xb7\xed\xd9\x2e\x30\xc5\xc5\xe9\xe7\xdc\x2b\x2a\ \x08\x91\x18\xbc\xba\x2d\x63\x59\x59\x95\xc6\xec\x76\xfb\xce\x7f\ \x9e\x13\x42\x5d\x5a\x65\xcb\xbf\x7f\x4d\xf1\xfb\x04\x35\xcc\x71\ \xd7\xb8\x17\xa3\x2d\x99\x97\x5f\x8a\x53\x89\x6f\x10\x67\xc6\x89\ \x9f\xdb\x30\xe1\xca\xc4\x1b\xb3\x5c\x50\xf4\x43\x33\xa9\x4b\x2f\ \x25\x34\xa2\x59\x2f\xbb\xac\xca\xbb\xe9\x3f\x10\x4b\xed\x59\x0c\ \xff\x25\x0e\x31\x58\x97\x26\x88\x5f\xd8\xf0\xef\x5e\x5f\xbc\x8b\ \x70\x86\xb8\xcf\x5d\x76\x6d\x1e\xfc\x53\xec\x47\x8c\x83\x38\xd2\ \x5f\xfc\xd8\x86\x89\x76\x84\xf8\x60\x36\x0b\x89\x3e\x0f\x7c\xca\ \x29\x5c\x02\xc5\x70\x9d\x36\x2d\xfd\x0b\x4e\x86\xe3\xf8\x01\xb1\ \xa9\x3d\x8b\xe1\x07\x89\x74\x1f\xf2\xa0\xe9\x6b\x4b\x5d\xd2\x3d\ \xa1\x7f\x43\x28\x43\xfc\x8a\x3f\x13\x1b\xda\x53\x97\xfe\x26\x76\ \x21\xce\x41\x9c\xd0\xcf\xe7\xa6\x6c\x98\x60\x9d\xc4\xe7\xb2\x59\ \x40\x1a\x35\x52\xce\x45\x17\x11\x0e\xd1\x9a\xb3\xe9\x4e\xab\x56\ \x19\x8f\xe7\x27\xdc\x6e\x46\x96\x2c\x86\xaf\x8a\x75\x02\xac\x4b\ \xfa\x0d\x86\xbd\x36\xfc\xbb\x76\x14\x9f\x27\x8c\x21\x1e\xd0\x47\ \xc4\x16\xf6\xd4\xa5\xd7\x03\xae\x4b\x00\xc6\x28\x4e\x58\xd2\x4e\ \xf1\x98\x6c\x77\x6a\xe9\xde\x5d\x39\x97\x5f\x4e\x28\xc4\xc0\x5e\ \x14\x4d\x6d\xd8\xa0\x9c\xe5\xcb\x55\x72\xe1\x42\xe5\xcc\x99\xa3\ \x9c\x33\xce\x50\xa9\xf1\xe3\x95\x33\x6e\xdc\xbe\x6e\x2e\xa9\x11\ \x23\x94\x33\x7c\xb8\x72\x06\x0c\xf8\xaf\x03\x07\xaa\x54\xf5\xea\ \x19\x8f\xeb\x17\xed\x7a\x79\xf4\xde\x44\x30\x6d\xce\x74\x9b\xd7\ \x67\x6c\xf8\x77\xec\x1b\x44\x07\x29\xc4\x98\xa9\xbf\xc0\xb6\xb3\ \xa7\x2e\xdd\x95\x48\x77\xa3\x03\x88\x34\xdf\xb6\x61\x42\xf5\xcf\ \x66\xbb\x32\xfd\xb2\xe3\x94\x29\x04\x48\xac\x9a\x5b\xb6\xec\x7b\ \xb8\x2a\x35\x7b\xb6\x72\x74\xe8\x96\x60\xed\x1c\x79\xa4\x4a\x36\ \x6a\x54\xa5\x80\x9d\x0d\xdf\xb0\xab\xdd\xd9\xfa\x00\xea\x92\x15\ \x1d\x5b\x46\x89\xef\x12\xbe\x10\x3d\xb7\x87\xed\x6c\x4f\x5d\x5a\ \x41\xbc\x83\x28\x73\xb6\x0d\x13\xe9\x04\xf7\xa9\xf3\xac\x14\x89\ \x06\x0d\x94\x73\xf1\xc5\x84\x4b\xf4\xd7\xbb\x5c\xbf\x20\xab\x1f\ \xab\x1a\x36\x4c\x39\xed\xdb\x57\xb9\xf3\x8a\xa9\x76\x67\x23\xed\ \x59\x0c\x27\x65\xb1\x2e\x9d\x6f\xc3\xbf\xd3\xa9\x6e\xab\x4b\x82\ \x17\xa2\x77\xdf\x12\x07\xd8\xd3\xd9\xe5\x64\x62\x1e\x44\x11\x99\ \x43\x89\x4f\xc3\x9e\x44\xa7\x64\x73\x11\xec\xd4\x89\x23\x2d\x78\ \xf0\x30\xae\xdb\x6b\xea\x30\x7e\xea\xa9\xca\xe9\xd5\x4b\x39\x4d\ \x9a\xa8\x64\x7e\x7e\x64\x17\xc3\xdd\xee\x17\x5c\x0b\x16\xc3\xbf\ \x8b\x9d\xb2\x50\x97\x06\x89\x9f\x85\xfd\xef\x33\x83\x1e\xe7\x88\ \x19\xfb\xb6\x38\xc4\x8e\xba\xf4\xa1\xd8\x91\xb8\x07\x51\xa2\xbe\ \xf8\x5e\xd8\x93\x47\xbf\xc2\xb7\x27\x5b\x2f\x82\x8e\x1e\x4d\x97\ \x16\xfc\xba\xfa\x0b\xdb\xd9\x67\x2b\x67\xe4\x48\xe5\xb4\x6d\x5b\ \xa5\x2e\x2a\x36\x87\xf4\xe3\xed\x58\x0c\x5f\x14\x4b\xab\x50\x97\ \x1a\x89\xef\x87\xfd\xef\x31\x25\x88\x87\xd1\x10\x73\xcc\x77\xec\ \x79\x0d\xf9\x79\xb1\x06\xb1\x0f\xa2\x80\xbe\xd0\x75\x6f\xd8\x93\ \x66\x4c\xb6\x76\xce\x6b\xd4\x50\xce\xbc\x79\x04\x51\x4c\xab\xbf\ \xa4\xe9\x1d\xf2\xb1\x63\x95\xd3\xba\xb5\x72\x22\xbc\x3b\xee\x37\ \xa4\x8f\xb2\x63\x31\xfc\x61\x86\x75\x49\x5f\xe8\xba\x2f\xec\x7f\ \xfe\xa9\xec\x9c\x23\x66\xb5\x2e\x1d\x67\x47\x5d\xfa\x1e\xd1\x0f\ \xa2\xc0\xea\xb0\x27\xcb\xf0\x6c\x9d\x39\xaf\x5f\x9f\x87\x87\x50\ \x39\xdb\xb6\x29\xe7\x5b\xdf\x52\x4e\xdf\xbe\x2a\x55\xbb\x76\x4e\ \x2f\x86\x96\xec\x58\xcd\xcc\xa0\x2e\x2d\x0f\xfb\x9f\x7b\x12\x3b\ \xe7\x88\x81\xec\xa4\xf7\xb7\xa3\x2e\xcd\x26\xfe\x81\xcd\xf4\x0b\ \xfb\x7c\xe7\x60\xf7\x72\x5b\x95\x27\x7e\x9b\x36\xca\xd9\xbc\x99\ \x70\x9a\xa3\x26\xb7\x6e\x4d\x3f\xfc\xa3\x5f\xe8\xcc\x91\x5d\x72\ \xaf\x8b\xa1\x05\x17\xb4\xfe\x21\xb6\xf7\x51\x97\x06\x86\x5d\x97\ \xc6\x72\x21\x14\x31\xd0\xae\x53\xdd\xed\xa8\x4b\xed\x88\x81\x60\ \x23\xb5\xc4\xb7\xc3\x9c\x20\x7d\xdc\xcb\x23\x55\x9e\xf0\x3d\x7b\ \xa6\x3b\x6f\x10\x54\x73\xcb\xed\xdb\xd3\xa1\xbc\x4b\x97\x74\x2b\ \x4d\x16\xbe\x6f\xec\xa2\xd0\x2b\xfc\xc5\xf0\xb9\x44\xfa\x8d\x05\ \x2f\xf7\x61\xf6\x84\xf9\xcf\x3a\x22\x9b\x5d\xa4\x10\xf1\x80\xbe\ \x2a\x1e\x19\x7e\x5d\x7a\x5a\x2c\x22\x0e\x82\x6d\x7c\x37\xcc\x89\ \xd1\xc3\xfd\x16\x5d\xe5\x89\x3e\x74\x28\x97\x41\x73\xad\xf3\xca\ \x8a\x15\xfb\xda\x1f\x26\x23\xd0\xfa\xd0\xa6\xc5\xb0\x43\xf8\x8b\ \xe1\xb6\x43\xd4\xa4\x3c\xf1\xce\x30\xff\x19\x7b\xb9\xbf\x3a\x30\ \x66\x10\x83\xf7\x05\xb1\x75\xf8\x75\x69\x1d\x71\x10\x6c\xe2\x94\ \x30\x27\x44\x5b\x37\x30\x54\xb9\x53\xcb\x84\x09\x04\xd6\x5c\x09\ \xe5\x3b\x76\x28\xe7\xcc\x33\x55\x4a\x1f\x65\x62\x61\xcb\xc8\xe7\ \xc4\xc3\xc2\xef\x43\x3c\xea\x20\x75\x69\x76\x98\x75\xa9\x7d\x36\ \xea\x12\x22\xfa\xf2\x19\xb1\x3c\xdc\xba\xf4\xb9\x7b\xac\x0e\x20\ \x74\x5a\x88\x7f\x0b\x6b\x32\x34\x49\xa4\x9f\x00\xae\x6a\x38\x4f\ \x9d\x76\x1a\xc1\x35\x17\x82\xb9\xbe\xf4\x3b\x68\x90\x72\x4a\x4a\ \x58\xcc\xb2\xe0\xe3\x62\xa3\x70\x17\xc3\x3f\x8a\xe5\x07\xa8\x4b\ \x6d\xc4\x8f\xc2\xfa\xe7\x6a\x29\xbe\xc8\xf8\x40\x0c\xc5\x07\xc5\ \x5a\xe1\xd6\xa5\xbd\xee\xf1\x3a\x80\xd0\xd0\xad\xcb\xee\x0f\x6b\ \x12\x54\x17\xef\xaa\xea\x64\x2e\x28\x50\xce\xcc\x99\x84\xd7\x38\ \xab\x1f\x0f\x9a\x35\x2b\xdd\x16\x91\xc5\x2b\xeb\xea\x39\x58\x6c\ \x57\xeb\x45\x7d\xb4\x25\xb4\x96\x8a\x65\xe2\xfd\x8c\x0b\xc4\x50\ \xbd\x41\x2c\x08\xb7\x2e\xdd\x48\x44\x84\x30\x59\x10\xd6\xe0\x97\ \x6f\x06\xea\xea\xaa\x4e\x62\x7d\x11\x70\xee\x5c\x02\x6c\x9c\x2f\ \x7d\x9e\x72\x8a\x4a\x36\x68\xc0\x82\x15\xb0\x57\x8a\x79\xe1\x2e\ \x86\xa7\xec\x57\x97\xe6\x86\xf5\xcf\xa1\x03\xc1\xf7\x18\x0f\x88\ \x56\xb8\x2e\xfc\xf3\xe8\x27\x12\x13\x21\x0c\x9a\x25\xd2\xcf\x6f\ \x87\x32\xf0\x2f\xa9\xe2\xc4\x4d\x16\x16\x2a\xe7\xac\xb3\x08\xb1\ \x71\x0d\xe6\x27\x9d\xa4\x9c\x5a\xb5\x58\xa4\x0c\xba\x30\xdc\x85\ \xf0\x4f\x62\x63\xb1\x65\x98\x75\xe9\x32\xc6\x01\xa2\x55\x7e\x2b\ \xdc\xba\xa4\x3b\x48\xd5\x22\x2e\x82\x69\x7e\x1e\xd6\xa0\x9f\x9c\ \x8d\x9d\xf3\xf9\xf3\x09\xb2\x71\xbc\xf8\x39\x6e\x9c\x72\x4a\x4b\ \x59\x98\x42\x50\xbf\x90\x39\x26\xdc\xc5\xf0\x16\xf1\xd7\x61\xfd\ \xe7\xcf\x60\x0c\x20\x5a\xa7\x7e\x7f\x60\x78\xb8\x75\xe9\x0a\xe2\ \x22\x98\xe4\xf4\xb0\x06\x7b\xf7\xaa\x3e\x44\xa4\xcf\x9c\xb3\x73\ \x1e\xaf\x60\xae\x7b\xd6\xeb\x60\x5e\xb3\x26\x0b\x92\x05\x0f\x19\ \x75\x0e\xff\x67\x65\xe3\x0e\xe4\x21\x22\x44\x6b\x7d\x4d\x6c\x11\ \x5e\x7d\xf8\x22\x41\x57\x17\x30\x84\xbe\x99\xfc\x87\x30\x06\x7a\ \x03\xb7\x85\x52\x95\x5a\x29\x4e\x99\x42\xa8\x8d\x93\x73\xe6\x28\ \xa7\x71\x63\x16\x21\x8b\x7c\x52\xac\x93\x43\xe1\x5c\xb7\x9a\x7c\ \x89\xcf\x1d\xd1\x6a\xf5\xc5\xed\x1a\xe1\xd5\x09\xf9\x8e\x90\xa8\ \x4e\x7c\x84\xa0\xf9\x61\x18\x03\xbc\xa8\xaa\x1d\x5b\x74\x38\x9f\ \x3a\x95\x40\x1b\x17\x17\x2d\x52\xc9\x66\xcd\x58\x78\x2c\xf5\x36\ \xb1\x30\x07\xc2\x79\x09\x1d\x5b\x10\x23\xe3\x77\xc2\xbd\xcc\x7e\ \x39\xf1\x11\x82\x64\x78\x58\x0b\xe1\xa5\x55\x9d\x9c\xfa\x08\x04\ \xc1\x36\xfa\xc7\x59\x36\x6e\x54\x4e\xff\xfe\xca\xc9\xcf\x67\xc1\ \xb1\xdc\xc5\x39\x10\xd0\x37\xf3\x39\x23\x72\x69\xd4\x9b\x9f\x8a\ \xdd\x88\x91\x10\x04\xd5\xc4\xd7\xc3\x18\xd8\x63\xdc\x0b\x68\x19\ \x4f\xca\xa1\x43\x09\xb7\x71\x38\x67\xae\x3b\xb3\x54\xaf\xce\x22\ \x13\x11\xf7\x8a\x43\x62\x1c\xce\x27\xf1\x19\x23\x46\xce\xdd\x62\ \xef\xf0\xea\xc6\x23\x89\xf4\x3b\x0d\x00\x59\x65\x51\x18\x03\xba\ \x8d\xf8\x66\x55\x26\x64\xaf\x5e\xca\xa9\xac\x24\xe4\x46\x39\x9c\ \x9f\x7b\xae\x72\xea\xd7\x67\x71\x89\xa0\xbf\x4b\x84\xfe\xd2\x68\ \x60\x75\xe9\x2d\x3e\x5f\xc4\x48\xfa\x5b\xb1\x3c\xbc\xfa\x71\x1a\ \x71\x12\xb2\x89\xac\xb1\x89\xbf\x85\x71\xee\xfc\xde\xaa\x4c\xc4\ \x76\xed\x94\xa3\x77\x5e\x09\xb9\xd1\x0c\xe6\x9b\x36\x29\xa7\x7b\ \x77\x16\x94\x88\x7b\x4b\x22\xfd\xb0\x58\x5c\xc2\x79\x31\xe7\xce\ \x11\x23\xef\x0f\xc3\x3b\x8f\xbe\x5b\x2c\x21\x56\x42\xb6\xb8\x3e\ \x8c\x85\x70\x65\x55\x26\x60\x79\xb9\x72\x36\x6f\x26\xe8\x46\x51\ \xfd\x8b\xc7\xe4\xc9\xca\xa9\x51\x83\x85\x24\x26\x2e\x8a\x51\x40\ \xdf\xca\xe7\x89\x18\x0b\xe7\x86\x57\x47\xd6\x12\x2b\x21\x1b\xe8\ \x4b\x0d\x9f\x9b\x1e\xc0\x7d\xdd\x33\xac\x19\x4d\x3c\xfd\x50\xcd\ \x8a\x15\x04\xdd\x28\xba\x7e\xbd\x72\xba\x76\x65\xf1\x88\x99\x7b\ \xc4\x1e\x31\x08\xe7\x23\xf8\x2c\x11\x63\xe3\xbb\x62\x87\x70\x6a\ \xc9\x47\xe2\xe1\xc4\x4b\xa8\x2a\x0f\x98\x1e\xbc\xb5\xc4\xa7\x33\ \x9d\x74\xba\xbb\xc7\x82\x05\x04\xdd\x28\x3a\x77\xae\x4a\x96\x95\ \xb1\x70\xc4\xd4\x47\xdd\xb6\x84\x51\x0d\xe7\xf5\xdc\xb3\xab\x7c\ \x96\x88\xf1\xea\x8f\x5e\x2d\x9c\x9a\xf2\x03\xe2\x25\x54\x85\x93\ \xc3\x58\x08\xaf\xac\xca\x84\x9b\x38\x91\xa0\x1b\x35\xb7\x6d\x53\ \x4e\xef\xde\x2c\x16\x39\xe0\xba\x08\x07\xf4\xab\xf8\xfc\x10\x63\ \xe9\xaa\x70\x6a\xca\x97\x62\x3f\x62\x26\x64\x42\x91\xf8\x96\xe9\ \x41\x7b\x52\x55\x26\x5a\x9f\x3e\x84\xdd\xa8\x5d\x04\x5d\xbc\x98\ \x0e\x2d\x39\xa4\x6e\x97\x3a\x20\x82\xe1\x7c\x1c\x9f\x1d\x62\xac\ \xeb\x52\xff\x70\x6a\xcb\x13\x44\x4d\xc8\x84\x39\x61\xfc\x84\xfc\ \x62\xa6\x93\xac\x49\x93\xf4\x4e\x2c\xa1\x37\x3a\x4e\x9a\xa4\x9c\ \xa2\x22\x16\x88\x1c\x53\x1f\x5f\xab\x19\xa1\x70\xae\xdb\xb1\xbd\ \xcc\xe7\x86\x18\x6b\x1f\x13\xab\x87\x53\x63\xc6\x10\x37\xc1\x0f\ \xc5\xe2\x1e\xd3\x03\x75\x57\xa6\x93\x4b\x9f\x5b\x5e\xbb\x96\xc0\ \x1b\x15\xb7\x6c\x51\x4e\x97\x2e\x2c\x0a\x1c\x75\x89\x84\xd7\xf0\ \x79\x21\xe6\x84\xcb\xc2\xa9\x31\xcf\x25\x78\xbc\x08\x7c\x30\xdf\ \xf4\x20\x1d\x52\x95\x89\x35\x67\x0e\xa1\x37\x2a\xae\x5c\xa9\x9c\ \xa6\x4d\x59\x0c\x72\x5c\xdd\xa1\xa9\x7b\x04\xc2\xf9\x70\x3e\x2b\ \xc4\x9c\xea\x36\xd5\x29\x9c\x5a\x73\x32\xb1\x13\xbc\xa0\x1b\xe8\ \x3b\x26\x07\x67\x0d\xf1\x37\x99\x4e\xaa\xc1\x83\x09\xbd\x51\x71\ \xe6\x4c\xe5\x14\x17\xb3\x10\xe0\x7f\xba\x27\x14\x59\x1c\xce\x4b\ \xab\xd2\x4d\x0a\x11\x23\xe9\xdd\x62\x81\xf9\x7a\xf3\xa2\x98\x4f\ \xfc\x84\x43\xb1\xc8\xf4\x42\xb8\x2a\xd3\xc9\xa4\x1f\x23\xda\xbe\ \x9d\xe0\x1b\x85\x87\x87\x46\x8d\x52\x4e\x5e\x1e\x0b\x00\x7e\xc5\ \x73\x2c\x0e\xe8\xab\xf9\x7c\x10\x73\xd2\xb3\xc2\xa9\x39\x93\x89\ \x9f\x70\x30\xca\xc4\x3f\x9a\x1c\x94\x47\x8a\xef\x67\x32\x89\x8a\ \x8a\x54\xf2\x92\x4b\x08\xbf\xb6\xbb\x75\xab\x72\x3a\x76\xa4\xe8\ \xe3\x01\x7d\x47\x6c\x6e\x61\x38\xef\x9a\x69\x5d\x42\xc4\xc8\xfb\ \x96\xd8\xc4\x7c\xdd\x79\x4d\x2c\x20\x86\xc2\x37\xb1\xd4\xf4\x42\ \xf8\xa3\x4c\x27\xd1\xf8\xf1\x84\x5f\xdb\xbd\xec\x32\xce\x9b\xe3\ \x21\xbd\xde\xb2\x70\x9e\x27\xde\xc5\xe7\x82\x98\xd3\x56\x86\x53\ \x7f\xa6\x11\x43\xe1\x9b\x3a\xb7\x18\x3d\x7b\x3e\x3a\xc3\x89\x93\ \x6a\xd3\x46\x39\x15\x15\x04\x60\x9b\xfb\x9b\xaf\x58\xa1\x9c\x06\ \x0d\x28\xf4\xe8\xc9\x81\x16\x05\xf4\x09\x7c\x1e\x88\xf4\x46\x17\ \x7b\x84\xb3\x8b\xce\x59\x74\xf8\x1a\xb3\x4c\x0e\x44\xf9\x36\xa0\ \x9e\xcc\x24\x9c\x57\xaf\xae\x92\xb4\x54\xb4\xdb\xb9\x73\xb9\x0c\ \x8a\xbe\x7c\x40\x2c\xb4\x20\x9c\xeb\x0b\xeb\xcf\xf1\x79\x20\xa2\ \xf8\x73\x31\xdf\x7c\x1d\x1a\x4b\x1c\x85\xfd\xd1\x3d\x38\x5f\x36\ \x39\x08\xe7\x67\x3a\x69\x26\x4c\x20\x00\xdb\xec\xac\x59\x2a\x59\ \x58\x48\x71\x47\xdf\xce\xb0\x20\xa0\x2f\xe1\x73\x40\xc4\xfd\x9c\ \x64\xbe\x0e\x3d\x4c\x24\x85\xfd\x39\xd1\xe4\x00\xd4\x2f\xf3\xbd\ \x91\xc9\x64\x69\xdd\x3a\xdd\x11\x84\x20\x6c\xef\xcb\xa0\x74\x6a\ \xc1\x0c\xd5\xaf\x75\xd6\x0a\x31\x9c\xeb\x4b\x61\xef\xf2\x39\x20\ \xe2\x7e\x3e\xef\xb6\x5c\x35\x5c\x8f\x7a\x11\x4b\xe1\xdf\x3c\x68\ \x72\xf0\x6d\xc9\xb0\x6b\x8b\xa3\xcf\x35\x13\x84\xed\xf4\xe4\x93\ \x09\xe7\x58\x65\x2f\x0a\x31\xa0\x6f\xe1\xef\x8f\x88\x07\xf0\x42\ \xf3\xf5\xe8\x56\x62\x29\x68\x7a\x9a\x1c\x78\x2d\x12\xe9\xd7\xba\ \x7c\x4f\x92\xd1\xa3\x09\xc1\xb6\xaa\x3f\x1b\x8a\x38\x66\xc1\x37\ \xc5\x86\x21\x84\xf3\xd6\x99\xd6\x25\x44\x8c\xbd\xfa\x17\xff\x7a\ \x66\x6b\xd2\xe7\x62\x4b\xe2\x29\xdc\x6a\x72\x21\xac\xc8\x64\x82\ \x94\x97\xab\xd4\xce\x9d\x04\x61\x1b\x1d\x3b\x96\x02\x8e\x59\x75\ \x5d\x08\x01\xfd\x1a\xfe\xee\x88\x78\x10\x97\x9b\xaf\x4b\x3b\x89\ \xa7\xb9\x4d\x33\xf7\x9b\x9a\x91\x01\xd7\x36\x91\xe1\xe3\x1f\xf3\ \xe6\x11\x84\x09\xe7\x98\x23\xee\x16\x9b\x25\xcc\x3e\x4a\x94\xe4\ \xef\x8e\x88\x89\x83\x3f\x5e\x64\xf8\xd7\xbd\xbf\x8b\xb5\x89\xa9\ \xb9\xcb\x5a\x93\xdf\x08\xaf\xcd\xa4\xad\x62\xd7\xae\x04\x61\x1b\ \xfb\x9c\x8f\x1b\x47\xd1\xc6\xc0\xdc\x6e\xb0\x2e\x7d\x8f\xbf\x37\ \x22\xda\xf9\xeb\xde\xb9\xc4\xd4\xdc\xa4\x48\x4c\x99\x1a\x68\x47\ \x65\xb0\x4b\xa5\xdb\xf5\xa5\x56\xaf\x26\x10\xdb\xa6\x6e\x75\x49\ \xb1\xc6\x00\xd5\xbf\xb4\xb5\x34\x50\x97\xba\xf1\xb7\x46\x44\x4b\ \x7f\xdd\x13\x5f\x20\xaa\xe6\x26\x46\x5b\x2b\x5e\x97\xc9\x84\x38\ \xf6\x58\xc2\xb0\x6d\x9e\x7e\x3a\xdd\x5a\xd0\x88\x1b\x0d\xd4\xa5\ \xab\xf9\x3b\x23\xa2\x0f\xd7\x9b\xdf\x45\x3f\x86\xb8\x9a\x7b\xdc\ \x61\xb2\x43\xc2\x5e\xbf\x13\xa1\x46\x0d\xe5\x6c\xde\x4c\x20\xb6\ \xc9\x39\x73\x54\x32\x3f\x9f\x22\x8d\x46\x7c\xcf\xed\x4d\x1e\x54\ \x5d\x6a\x97\x49\x5d\x42\xc4\x9c\xf6\x1d\xb1\xbe\xd9\x80\x7e\x35\ \x71\x35\xb7\x38\x4c\xfc\xcc\xd4\x00\xdb\x94\xc9\x44\x98\x38\x91\ \x40\x6c\x91\xc9\x85\x0b\xd3\xbd\xe8\x29\xd0\x68\xd0\xcb\x02\xac\ \x4b\x57\xf0\xf7\x45\xc4\x0c\x5c\x64\x36\xa0\x7f\x28\x96\x11\x5b\ \x73\x87\x55\xa6\x06\x57\xb9\xbb\x13\xe6\x6b\x02\x34\x68\xa0\x9c\ \x5d\xbb\x08\xc6\xb6\xb8\x6c\x99\x72\xaa\x57\xa7\x30\x63\x28\xbb\ \xe8\xe5\x01\xd4\xa5\x56\xec\x9e\x23\x62\x86\xbe\x92\x30\xfe\xba\ \xe8\xd9\xc4\xd6\xdc\xa0\x40\x7c\xdf\xd4\xc0\xba\x28\x93\x09\x30\ \x65\x0a\xa1\xd8\x16\xd7\xad\x53\xa9\x3a\x75\x28\xca\x18\x9a\x17\ \x27\x78\x35\x14\x11\xed\x72\x86\xd9\x80\xfe\x2c\xd1\x35\x37\x18\ \x61\x6a\x50\x55\x17\x5f\xf4\x3b\xf0\xcb\xcb\x95\x53\x51\x41\x30\ \xb6\xc1\x6d\xdb\x94\x73\xc4\x11\x14\x63\x0c\x7d\xb7\xaa\x2c\x8b\ \x75\xa9\x91\xf8\x2e\x7f\x57\x44\xac\x82\x8f\x8a\xf9\x66\x43\x7a\ \x67\xe2\x6b\xfc\xb9\xd1\xd4\x80\x9a\x91\xc9\xc0\x9f\x36\x8d\x60\ \x6c\x43\x9f\x73\xf9\x92\x94\xea\xd4\x89\x42\x8c\x56\x78\x4e\x16\ \xeb\xd2\xa5\xfc\x3d\x11\x31\x0b\x9e\x68\x36\xa0\x6f\x24\xbe\xc6\ \x9b\x62\xf1\xaf\x26\x06\x53\x9e\xf8\x88\xcf\xc1\x9e\x6c\xd4\x68\ \x5f\x30\x24\x20\x5b\x10\xd0\x47\x8e\xa4\x00\xa3\x35\x3e\x27\x16\ \x65\xa1\x2e\xd5\x12\x5f\xe3\xef\x89\x88\x59\xf0\x27\x66\x03\xfa\ \x9b\x44\xd8\x78\x73\x92\xa9\xc1\x34\x24\x83\xc1\x9e\x9c\x3e\x9d\ \x70\x6c\x49\x3b\x45\x7a\x9d\xa3\x6d\x4e\xcd\x42\x5d\x3a\x9f\xbf\ \x23\x22\x66\xd1\x4e\x66\x43\x7a\x4f\x62\x6c\x7c\xf9\xbe\xa9\x81\ \x74\x55\x26\x67\xcf\x2b\x2b\x09\xc7\x61\xbb\x74\x29\xed\x14\xd1\ \x4a\x1f\xa9\xe2\x99\xcf\x62\xf1\xb7\xfc\x1d\x11\x31\x8b\xae\x36\ \x1b\xd0\x37\x11\x63\xe3\x49\xa9\xf8\x91\x89\x41\xd4\x20\x91\x7e\ \x12\xd7\xcf\x20\x4f\x9d\x76\x1a\xe1\x38\x6c\xf5\xc3\x50\xf5\xeb\ \x53\x74\xd1\x5a\xc7\x9a\xbe\x13\x83\x88\x78\x10\xf5\x91\xb9\x12\ \x73\x01\x7d\x8f\x98\x47\x9c\x8d\x1f\x13\x4d\x7d\xcb\x9b\xe7\xf7\ \x68\x4b\x59\x99\x4a\xed\xd8\x41\x40\x0e\xd3\x8a\x0a\x95\xec\xd0\ \x81\x82\x8b\x56\x7b\x9f\x7b\xbf\xc5\x6f\x4d\xd2\xe7\xd7\x9f\xe1\ \xef\x87\x88\x01\x38\xc1\xec\x2e\x7a\x3f\xe2\x6c\xfc\xb8\xcd\xd4\ \xe5\xd0\x47\xfd\x0e\x70\x7d\x21\x91\x90\x1c\xae\xe3\xc6\x51\x68\ \x31\x12\x0e\xcd\xa0\x2e\x4d\xe4\xef\x86\x88\x01\xf9\x23\xb3\x01\ \x7d\x27\x71\x36\x5e\x94\x88\xff\x30\x31\x78\x7a\xf9\x1d\xdc\x45\ \x45\x2a\xb5\x69\x13\x01\x39\xcc\x8e\x2d\x8b\x17\xab\x64\x7e\x3e\ \x85\x16\x23\xe1\x2d\x19\x6c\x1a\xdc\xc7\xdf\x0d\x11\x03\x32\x29\ \x36\xe7\x98\x0b\x64\xc8\xf1\xa6\xbe\xdd\x6d\xf5\x3b\xb8\x07\x0c\ \x20\x24\x87\xe9\xd6\xad\xca\x69\xd0\x80\x22\x8b\x91\xb2\x9b\x8f\ \x9a\x74\x2c\x7f\x2f\x44\x0c\xd8\x0b\xcd\xee\xa2\x1f\x45\xac\x8d\ \x0f\x15\x26\x06\x4d\xb5\x4c\x7a\x0c\x2f\x5b\x46\x48\x0e\x53\xfd\ \x05\x89\xe2\x8a\x11\xf3\x7a\x1f\x75\xe9\x67\xfc\xbd\x10\x31\x60\ \x9f\xc8\xf0\x7e\x4c\x86\x5e\x42\xac\x8d\x0f\xef\x98\x18\x34\xc3\ \xfd\x0e\xea\x96\x2d\x09\xc8\x61\x3a\x73\x26\x85\x15\x23\xfb\x93\ \x72\x7b\x0f\x35\xa9\x37\x7f\x2b\x44\xb4\xf0\x97\xbd\x2a\xfa\x08\ \xb1\x36\x1e\xb4\x36\xf5\xb3\xcb\x0e\xbf\x03\x7a\xca\x14\x42\x72\ \x48\x26\xd7\xae\x55\x4e\x49\x09\x45\x15\x23\xeb\x16\x0f\x35\xe9\ \x3b\xfc\x9d\x10\xd1\x90\x97\x98\x0b\xe8\x9f\x8a\xb5\x88\xb7\xd1\ \x67\x81\x89\x01\x53\x5d\x7c\xc3\xcf\x60\x2e\x2e\x56\x49\x7d\xfe\ \x99\xb0\x1c\x8e\x5d\xbb\x52\x50\x31\xd2\xea\xb7\x16\x0e\x3f\x48\ \x4d\xea\xcc\xdf\x08\x11\x0d\xfa\x8c\xd9\x63\x2e\x13\x89\xb7\xd1\ \xe7\x17\x26\x06\xcb\xf1\x3e\x07\x72\x6a\xe0\x40\x42\x72\x58\x4e\ \x9f\x4e\x31\xc5\x58\xb8\xe6\x20\x35\xe9\x0a\xfe\x3e\x88\x68\xd8\ \x1e\xe6\x02\xfa\xb5\xc4\xdb\x68\x53\x6c\xaa\xbd\x62\xa5\xdf\x81\ \xac\x9f\x94\x27\x2c\x9b\x77\xe3\x46\xe5\x94\x96\x52\x48\x31\x16\ \xea\x5f\xed\xea\x1c\xa0\x1e\x1d\x9e\xf0\xff\x9a\x31\x22\x62\x55\ \x5d\x61\x2e\xa0\xef\x26\xe2\x46\x9b\xe1\x26\x06\x8a\x7e\xa5\xef\ \x75\x3f\x83\xb8\x69\x53\x82\x72\x58\xf6\xe9\x43\x11\xc5\x58\xb9\ \xf0\x00\x35\x69\x2d\x7f\x17\x44\x0c\xc1\x27\xcd\xb6\x5b\xec\x44\ \xcc\x8d\x2e\x1b\x4c\x0c\x92\x7e\x7e\x07\xf1\x49\x27\x11\x94\xc3\ \xb8\x18\x7a\xd6\x59\x14\x50\x8c\x9d\x2f\x8a\x25\xfb\xd5\xa3\x7a\ \xe2\xdb\xfc\x5d\x10\x31\x24\x5b\x9b\x0b\xe8\xf3\x89\xb9\xd1\xe5\ \x31\x13\x83\xe4\x52\xbf\xe7\xcf\x57\xaf\x26\x30\x9b\x76\xfb\x76\ \xe5\xd4\xaf\x4f\xf1\xc4\x58\x3a\x67\xbf\x7a\xb4\x94\xbf\x07\x22\ \x86\xe8\x59\xe6\x02\xfa\xad\xc4\xdc\x68\x52\x5d\xfc\xc4\xc4\x20\ \xf9\xb5\x9f\xc1\xdb\xa2\x05\x61\x39\x0c\x47\x8e\xa4\x70\x62\x6c\ \x7d\xd6\x3d\x6a\x57\xcb\xef\x71\x3b\x44\xc4\x2c\x7b\xb3\xb9\x80\ \x9e\x24\xea\x46\x93\xbe\x26\x06\x48\xe3\x44\xfa\xd1\x10\xcf\x83\ \x77\xc2\x04\xc2\xb2\x69\xd7\xac\x51\x4e\x51\x11\x85\x13\x63\xed\ \x44\x77\xe7\x8a\xbf\x05\x22\x86\xe9\x3b\x89\x74\xeb\x69\x43\x21\ \xbd\x39\x71\x37\x7a\x2c\x32\x31\x38\x4e\xf3\x33\x70\xf3\xf2\x94\ \xb3\x6e\x1d\x81\xd9\xf4\xd9\xf3\xee\xdd\x29\x9a\x18\x7b\x1f\x70\ \x77\xd2\xf9\x5b\x20\x62\xd8\x1e\x6b\x2e\xa0\x4f\x26\xee\x46\x8f\ \xdb\x4d\x0c\x8e\x6b\xfc\x0c\xda\x56\xad\x08\xcc\xa6\x5d\xb8\x90\ \x62\x89\x88\x88\x68\xd0\xb5\xe6\x02\x7a\x25\x71\x37\x7a\xfc\x3e\ \xe8\x81\x51\x20\xbe\x46\xf7\x16\x7b\xad\xac\x54\xa9\x96\x2d\x29\ \x96\x88\x88\x88\x06\x7d\xc4\x5c\x40\x7f\x9e\xb8\x1b\x2d\xda\x99\ \x18\x18\x9d\xfc\x0e\xda\x4b\x2e\x21\x34\x9b\x3c\xda\xc2\x8b\xa1\ \x88\x88\x88\xa1\x58\x6e\x26\xa0\x7f\x21\xd6\x21\xf6\x46\x87\xa9\ \x26\x02\xfa\x34\x3f\x83\xb5\x5e\x3d\x42\xb3\x41\x53\x3b\x77\xaa\ \x94\xfe\x9b\x53\x24\x11\x11\x11\x8d\x7b\xbc\xb9\x5d\xf4\xe1\xc4\ \xde\xe8\xb0\xcd\xc4\xa0\xb8\xd2\xcf\x60\x1d\x30\x80\xe0\x6c\x72\ \xf7\x7c\xd2\x24\x0a\x24\x22\x22\x62\x48\xae\x32\x17\xd0\x2f\x22\ \xf6\x46\x87\x5f\x99\x18\x14\x4f\xfb\x19\xac\x73\xe6\x10\x9c\x0d\ \x3e\x4a\x94\xaa\x5d\x9b\x02\x89\x88\x88\x18\x92\x3f\x37\x17\xd0\ \x6f\x24\xf6\x72\x41\xf4\x3f\x96\xfb\x19\xa8\x85\x85\x2a\xb9\x75\ \x2b\xc1\xd9\x94\xe3\xc7\x53\x1c\x11\x11\x11\x43\x74\x77\xc2\x58\ \x3f\x74\x2e\x8a\x46\x84\xc6\x26\xbe\xb1\x8d\xf5\x33\x50\xdb\xb6\ \x25\x34\x1b\xdc\x3d\x4f\xd6\xac\x49\x71\x44\x44\x44\x0c\xd9\xbe\ \x66\x02\xfa\xa7\x62\x35\xe2\xaf\xfd\x1c\x67\x22\xa0\xaf\xf2\x33\ \x48\x4f\x38\x81\xe0\x6c\xca\xb1\x63\x29\x8a\x88\x88\x88\x16\x38\ \xcf\xdc\x31\x97\x4e\xc4\x5f\xfb\x31\xf2\x82\xe8\x6d\x7e\x06\xe9\ \x82\x05\x04\x67\x43\xbb\xe7\x4e\x69\x29\x45\x11\x11\x11\xd1\x02\ \xaf\x34\x17\xd0\x4f\x27\xfe\xda\xcf\x77\x4d\x0c\x86\x57\x3c\x0e\ \xce\x64\x7e\x7e\x3a\x38\x12\xa0\x83\xf7\xb4\xd3\x28\x88\x88\x88\ \x88\x96\xf8\x80\xb9\x80\xbe\x81\xf8\x6b\x3f\xcf\x58\x75\x41\xf4\ \x88\x23\x08\xce\x86\x5e\x0d\x75\x1a\x35\xa2\x20\x22\x22\x22\x5a\ \x74\x51\xb4\xc8\x4c\x40\xbf\x8b\xf8\x6b\x3f\x7f\x0f\x7a\x20\x0c\ \xf6\x33\x40\x87\x0c\x21\x3c\x9b\xe8\x7b\x7e\xd6\x59\x14\x43\x44\ \x44\x44\xcb\xec\x68\x26\xa0\xbf\x45\xfc\xb5\x9b\x86\x26\x7e\x4a\ \x99\xeb\x67\x70\xce\x9c\x49\x80\x36\xa1\xee\x94\x43\x21\x44\x44\ \x44\xb4\xca\x93\xcd\x75\x72\x29\x20\x06\xdb\x4b\x6f\x13\x01\xbd\ \xc2\xc7\xc0\x4c\xae\x5d\x4b\x78\x0e\xda\x8b\x2f\xa6\x08\x22\x22\ \x22\x5a\xe8\x72\x73\xe7\xd0\x9b\x13\x83\xed\xe5\x54\x13\x83\xe0\ \x57\x5e\x07\xa6\xee\x28\x42\x80\x0e\xde\xbe\x7d\x29\x82\x88\x88\ \x88\x16\xfa\x7d\x73\x01\x7d\x10\x31\xd8\x5e\x96\x04\x3d\x00\xf2\ \xc4\xb7\xbd\x0e\xcc\xf6\xed\x09\xcf\x41\x7b\xf9\xe5\xca\x29\x2a\ \xa2\x08\x22\x22\x22\x5a\xe8\x93\xe6\x02\xfa\x34\x62\xb0\xbd\x5c\ \x1d\xf4\x00\x68\xe4\x67\x60\x0e\x1d\x4a\x80\x0e\xfa\x72\xe8\xa4\ \x49\x14\x40\x44\x44\x44\x4b\xdd\x63\xae\x93\xcb\x2a\x62\xb0\xbd\ \xdc\x1b\xf4\x00\xe8\xe1\x67\x60\x4e\x99\x42\x88\x0e\xda\xc3\x0e\ \xa3\x00\x22\x22\x22\x5a\x6c\x33\x33\x01\xfd\x06\x62\xb0\xbd\xbc\ \x11\xf4\x00\x38\xc9\xc7\x80\x4c\x2d\x59\x42\x80\x0e\xd2\x8b\x2e\ \xa2\xf0\x21\x22\x22\x5a\x6e\x7f\x33\x01\xfd\x21\x62\xb0\x9d\xe4\ \x89\x1f\x07\x3d\x00\xce\xf5\x3a\x20\xf3\xf3\x55\x6a\xc7\x0e\x42\ \x74\x90\xf6\xef\x4f\xe1\x43\x44\x44\xb4\xdc\x53\xcd\x04\xf4\xf7\ \x88\xc2\x76\x52\xd7\xc4\x25\x84\x4d\x5e\x07\xa4\x7e\xd5\x92\x10\ \x1d\x9c\xdb\xb7\x2b\xa7\xa4\x84\xc2\x87\x88\x88\x68\xb9\x8b\xcd\ \x04\xf4\x4f\x88\xc2\x76\xd2\xc6\x44\x40\xbf\xc9\xeb\x80\xec\xd4\ \x89\x10\x1d\xa4\xfa\x01\x28\x8a\x1e\x22\x22\xa2\xf5\xee\x32\xd7\ \xc9\xa5\x8c\x38\x6c\x1f\x7d\x4c\x7c\xf8\x0f\x7b\x3d\x7f\x3e\x78\ \x30\x21\x3a\x48\x8f\x3a\x8a\xa2\x87\x88\x88\x18\x01\x7f\x64\x2e\ \xa0\xb7\x20\x0e\xdb\xc7\x89\x26\x3e\xfc\x97\xbd\x0e\xc8\xf1\xe3\ \x09\xd1\x41\xb9\x75\x2b\xbd\xcf\x11\x11\x11\x23\xe2\x03\xe6\x02\ \xfa\x31\xc4\x61\xfb\x98\x16\xf4\x07\x5f\x20\xee\xf5\xba\x83\x3e\ \x7b\x36\x41\x3a\x28\xa7\x4f\xa7\xe0\x21\x22\x22\x46\xc4\xdf\x9a\ \x0b\xe8\x23\x89\xc3\xf6\xb1\x28\xe8\x0f\xbe\x9e\x9f\x01\xb9\x74\ \x29\x41\x3a\x20\x53\x5d\xbb\x52\xf0\x10\x11\x11\x23\xe2\xee\x44\ \xfa\x25\x76\x03\x01\xfd\x0c\xe2\xb0\x7d\xac\x0f\xfa\x83\x6f\xed\ \x67\x40\x6e\xde\x4c\x98\x0e\xc2\x2d\x5b\x54\xb2\xb0\x90\x82\x87\ \x88\x88\x18\x21\x6b\x99\x09\xe8\x0b\x88\xc3\xf6\x71\x75\xd0\x1f\ \x7c\x4f\xaf\xc7\x5b\xaa\x57\x27\x48\x07\xb5\x7b\x4e\xf7\x16\x44\ \x44\xc4\xc8\xd9\xc2\x4c\x40\x5f\x4d\x1c\xb6\x8f\xdb\x82\xfe\xe0\ \x47\x78\x1c\x84\x49\x7a\xa0\x07\x67\xcf\x9e\x14\x3a\x44\x44\xc4\ \x88\x79\xb4\x99\x80\x5e\x41\x1c\xb6\x8f\x5f\x04\xfd\xc1\x9f\xea\ \x75\x20\xb6\x6c\x49\x90\x0e\xc2\xca\x4a\xe5\x94\x95\x51\xe8\x10\ \x11\x11\x23\xe6\x30\x33\x01\xfd\x7a\xe2\xb0\x7d\xdc\x17\xf4\x07\ \x3f\xcb\xeb\x40\xec\xd2\x85\x30\x1d\x84\x17\x5e\x48\x91\x43\x44\ \x44\x8c\xa0\x63\xcd\x04\xf4\x1f\x10\x87\xed\xe3\xe1\xa0\x3f\xf8\ \x79\x5e\x07\x62\x9f\x3e\x84\xe9\x20\x1c\x3d\x9a\x22\x87\x88\x88\ \x18\x41\x27\x9a\x09\xe8\xb7\x11\x87\xed\xe3\x37\x41\x7f\xf0\xe7\ \x79\x1d\x88\xc3\x86\x11\xa6\x83\xb8\x20\xaa\x8f\x0e\x51\xe4\x10\ \x11\x11\x23\xe7\xe9\x66\x02\xfa\x9d\xc4\x61\xfb\x78\x3e\xe8\x0f\ \x7e\xb1\xd7\x81\x38\x76\x2c\x81\x3a\xdb\xea\xb6\x95\xf9\xf9\x14\ \x39\x44\x44\xc4\x08\x3a\xc3\x4c\x40\xbf\x97\x38\x6c\x1f\x2f\x07\ \xfd\xc1\x2f\xf3\x3a\x10\x4f\x3f\x9d\x40\x9d\x6d\xe7\xcc\xa1\xc0\ \x21\x22\x22\x46\xd4\x39\x66\x02\xfa\x03\xc4\x61\xfb\x78\x2b\xe8\ \x0f\x7e\x95\xc7\x41\xb8\xaf\x57\x37\xa1\x3a\xab\x26\x8f\x3b\x8e\ \x02\x87\x88\x88\x18\x51\xcf\x35\x13\xd0\x1f\x27\x0e\xdb\xc7\x9e\ \xa0\x3f\xf8\x75\x5e\x07\xa2\xde\xed\x25\x54\x73\xfe\x1c\x11\x11\ \x11\xf7\x79\x81\x99\x80\xfe\x0c\x71\xd8\x3e\x52\x41\x7f\xf0\x97\ \x7b\x1d\x88\x73\xe7\x12\xaa\xb3\xe9\xf6\xed\xca\x29\x28\xa0\xc0\ \x21\x22\x22\x46\xd4\x25\x66\x02\xfa\x0b\xc4\x61\xfb\x70\x82\xfe\ \xe0\x37\x7b\x3d\xe2\x32\x7f\x3e\xa1\x3a\x9b\xc7\x5b\x16\x2e\xa4\ \xb8\x21\x22\x22\x46\xd8\x0b\xcd\x04\xf4\xdf\x12\x87\x73\xf0\x88\ \xcb\x7a\xaf\x03\x51\x07\x4a\x82\x75\xf6\x8e\xb7\x8c\x1b\x47\x71\ \x43\x44\x44\xe4\x88\x0b\x47\x5c\x22\xc8\x3b\x41\x7f\xf0\x6b\xbd\ \x0e\xc4\xc5\x8b\x09\xd6\xd9\x0c\xe8\x5d\xbb\x52\xdc\x10\x11\x11\ \x23\xec\x02\x33\x01\xfd\x09\xe2\xb0\x7d\xbc\x11\xf4\x07\xbf\xd2\ \xeb\x40\x5c\xba\x94\x60\x9d\x4d\x6b\xd7\xa6\xb8\x21\x22\x22\x46\ \xd8\x79\x66\x02\xfa\x23\xc4\x61\xfb\x78\x25\xe8\x0f\x7e\xb9\xd7\ \x81\xb8\x6c\x19\xa1\x3a\x9b\x0f\x14\x51\xd8\x10\x11\x11\xe9\x83\ \x9e\xa0\x0f\x7a\x14\x79\x31\xe8\x0f\x7e\x29\x3b\xe8\xe6\x3d\xef\ \x3c\x0a\x1b\x22\x22\x62\xc4\x9d\x69\x26\xa0\xff\x92\x38\x6c\x1f\ \xcf\x07\xfd\xc1\x2f\xf6\x3a\x10\x2f\xba\x88\x60\x9d\x2d\x4f\x39\ \x85\xc2\x86\x88\x88\x18\x71\xcf\x34\x13\xd0\x7f\x41\x1c\xb6\x8f\ \xa7\x83\xfe\xe0\x2f\xf0\xda\x66\x91\x4b\xa2\xd9\x6b\xb1\xd8\xaf\ \x1f\x85\x0d\x11\x11\x31\xe2\x4e\x36\x13\xd0\xef\x20\x0e\xdb\xc7\ \xe3\x41\x7f\xf0\x73\x3d\x0e\xc2\x24\x6d\x16\xb3\x67\x8b\x16\x14\ \x36\x44\x44\xc4\x88\x3b\xd6\x4c\x40\xbf\x8d\x38\x6c\x1f\xbf\x0a\ \xfa\x83\x9f\xea\x75\x20\x9e\x7f\x3e\xc1\x3a\x1b\x56\x56\x2a\xa7\ \xb8\x98\xc2\x86\x88\x88\x18\x71\x8f\x35\x13\xd0\xaf\x27\x0e\xdb\ \xc7\x4f\x82\xfe\xe0\x27\x78\x3d\xe2\xc2\x4b\xa2\xd9\x71\xdd\x3a\ \x8a\x1a\x22\x22\x62\x0c\xec\x69\x26\xa0\xef\x24\x0e\xdb\xc7\x8d\ \x41\x7f\xf0\x23\xbc\x06\xf4\x73\xce\x21\x5c\x67\xc3\x0b\x2e\xa0\ \xa8\x21\x22\x22\xc6\xc0\x8e\x66\x02\xfa\x65\xc4\x61\xfb\xb8\x32\ \xe8\x0f\x7e\x80\xd7\x80\x3e\x7b\x36\xe1\x3a\x1b\x4e\x9b\x46\x51\ \x43\x44\x44\x8c\x81\xcd\xcc\x04\xf4\x25\xc4\x61\xfb\xd8\x1c\xf4\ \x07\x7f\xb4\xd7\x4b\xa2\x53\xa7\x12\xae\xb3\xe1\xe8\xd1\x14\x35\ \x44\x44\xc4\x18\x58\xcf\x4c\x40\x9f\x4b\x1c\xb6\x8f\x15\x41\x7f\ \xf0\xed\xbc\x0e\xc4\x49\x93\x08\xd7\xd9\xb0\x6f\x5f\x8a\x1a\x22\ \x22\x62\x0c\xac\x66\x26\xa0\x4f\x25\x0e\xdb\xc7\x05\x41\x7f\xf0\ \x4d\xbd\x1e\x71\x19\x37\x8e\x70\x9d\x0d\xdb\xb6\xa5\xa8\x21\x22\ \x22\x46\xdc\x77\xcc\x84\x73\xed\x38\xe2\xb0\x7d\xcc\x09\xfa\x83\ \x2f\xf1\x3a\x18\x47\x8d\x22\x5c\x67\xc3\xfa\xf5\x29\x6c\x88\x88\ \x88\x11\xf7\x37\xe6\x02\xfa\xb1\xc4\x61\xfb\x98\x64\xe2\xc3\x7f\ \xdb\xcb\x60\x1c\x3a\x94\x70\x9d\x8d\x57\x44\x0b\x0b\x29\x6c\x88\ \x88\x88\x11\xf7\xe7\xe6\x02\x7a\x37\xe2\xb0\x7d\x0c\x35\xf1\xe1\ \x3f\xe5\x65\x30\xea\xe7\xe9\x09\xd8\x55\x73\xdb\x36\x8a\x1a\x22\ \x22\x62\x0c\xbc\xc1\x5c\x40\x6f\x4c\x1c\xb6\x8f\x2e\x26\x3e\xfc\ \xbb\xbd\x0c\xc6\x6e\xdd\x08\xd8\x55\x75\xcd\x1a\x8a\x1a\x22\x22\ \x62\x0c\xdc\x62\x26\x9c\x7f\x21\x16\x10\x87\xed\xa3\xb1\x89\x80\ \xfe\x7d\x2f\x97\x44\xdb\xb4\x21\x60\x57\xd5\x25\x4b\x28\x6a\x88\ \x88\x88\x31\x70\xa9\x99\x80\xfe\x47\xa2\xb0\x9d\x14\x89\x5f\x06\ \x3d\x00\x76\x79\x19\x8c\xe5\xe5\x04\xec\x2a\x9a\x3a\xf7\x5c\x8a\ \x1a\x22\x22\x62\x0c\xfc\x96\x99\x80\xfe\x12\x51\xd8\x5e\xfe\x1a\ \xf4\x00\x58\xe5\x65\x30\x96\x96\x12\xb2\xab\xea\xf4\xe9\x14\x35\ \x44\x44\xc4\x18\x38\xce\x4c\x40\xff\x35\x31\xd8\x5e\xde\x08\x7a\ \x00\xcc\xf3\x32\x18\xf3\xf2\x94\x53\x51\x41\xc8\xae\x8a\xa7\x9c\ \x42\x51\x43\x44\x44\x8c\x81\x3d\xcd\x04\xf4\x9b\x89\xc1\xf6\xf2\ \x58\xd0\x03\xe0\x24\x8f\x83\x31\xb5\x69\x13\x21\xbb\x2a\x8e\x19\ \x43\x51\x43\x44\x44\x8c\x81\x8d\xcd\x04\xf4\x9d\xc4\x60\x7b\xf9\ \x69\xd0\x03\xa0\x97\xd7\x01\xb9\x7c\x39\x21\xbb\x2a\x1e\x7f\x3c\ \x45\x0d\x11\x11\x31\xe2\xee\x16\xf3\xcd\x04\xf4\xa5\xc4\x60\x7b\ \xb9\x22\xe8\x01\xd0\xd4\xeb\xa0\x5c\xb0\x80\x90\x5d\x95\x4b\xa2\ \x23\x46\x50\xd8\x10\x11\x11\x23\xee\xe3\x09\x63\x3d\xd0\x4f\x23\ \x06\xdb\xcb\xd2\xa0\x07\x40\x81\xb8\xc7\xcb\xa0\x9c\x3a\x95\xa0\ \x5d\x15\x8f\x3d\x96\xc2\x86\x88\x88\x18\x71\x6f\x35\x17\xd0\xfb\ \x10\x83\xed\xe5\x74\x13\x83\xe0\x19\x2f\x83\x72\xf4\x68\x42\x76\ \x55\x76\xd0\x07\x0f\xa6\xb0\x21\x22\x22\x46\xdc\x6d\xe6\x02\x7a\ \x13\x62\xb0\xbd\x0c\x32\x31\x08\xee\xf2\x30\x20\x93\xfd\xfa\x11\ \xb4\xab\xe0\xbe\xbf\x1f\x85\x0d\x11\x11\x31\xd2\x5e\x60\x26\x9c\ \x7f\x22\xe6\x13\x83\xed\xa5\x85\x89\x80\x7e\x95\x97\x41\xd9\xb1\ \x23\x41\xbb\x2a\xf6\xee\x4d\x61\x43\x44\x44\x8c\xb8\x63\xcd\x04\ \xf4\x37\x89\xc0\x76\xa3\x5f\x13\xfd\x22\xe8\x81\x70\x91\x97\x41\ \xd9\xa4\x09\x21\xbb\x2a\x47\x5c\x7a\xf6\xa4\xb0\x21\x22\x22\x46\ \xdc\x8e\x66\x02\xfa\x7d\x44\x60\xfb\xd9\x1b\xf4\x40\x98\xe8\x61\ \x40\xa6\xaa\x57\x27\x68\xb3\x83\x8e\x88\x88\x98\xb3\xbe\x2f\x16\ \x9b\x09\xe8\xd7\x11\x7f\xed\xe7\xf1\xa0\x07\x42\x77\xaf\x83\x73\ \xe3\x46\x82\x36\x67\xd0\x11\x11\x11\x69\xb1\x18\xac\x97\x10\x7f\ \xed\xe7\x07\x41\x0f\x84\xda\x5e\x07\xe7\x05\x17\x10\xb6\x33\x75\ \xd0\x20\x8a\x1b\x22\x22\x62\x84\xbd\xc1\x5c\x40\x3f\x99\xf8\x6b\ \x3f\x2b\x4c\x0c\x86\x17\xbc\x0c\xce\x33\xce\x20\x68\x67\xea\xd0\ \xa1\x14\x37\x44\x44\xc4\x08\xbb\xdc\x5c\x40\xef\x48\xfc\xb5\x9f\ \xc9\x26\x06\xc3\x1d\x5e\xce\xa1\xeb\xd7\x30\x09\xdb\x99\x1d\x71\ \x39\xee\x38\x8a\x1b\x22\x22\x62\x84\x3d\xcd\x4c\x38\xff\x4c\xac\ \x46\xfc\xb5\x9f\x1e\x26\x02\xfa\x76\x2f\x83\xb3\x5b\x37\xc2\x76\ \xa6\x8e\x1c\x49\x71\x43\x44\x44\x8c\xb0\x9d\xcd\x04\xf4\xd7\x88\ \xbe\xd1\xa0\xa6\xf8\x65\xd0\x03\xe2\x2c\x2f\x3b\xe8\xb4\x5a\xcc\ \xdc\x71\xe3\x28\x6e\x88\x88\x88\x11\x75\xb7\x58\x64\x26\xa0\xff\ \x84\xe8\x4b\xab\xc5\xff\x38\xc0\xcb\x00\x2d\x2a\x52\x4e\x45\x05\ \x61\x3b\x93\x3e\xe8\x93\x27\x53\xe0\x10\x11\x11\x23\xea\xdd\xe6\ \xce\x9f\xaf\x23\xf6\x46\x87\x07\x83\x1e\x10\xf5\xbc\x0e\xd2\xe5\ \xcb\x09\xdc\x99\x38\x6b\x16\x05\x0e\x11\x11\x31\xa2\x6e\x31\x17\ \xd0\xcf\x24\xf6\x46\x87\x6b\x4c\x0c\x8a\xe7\xbc\x0c\xd2\x19\x33\ \x08\xdb\x99\x38\x7f\x3e\x05\x0e\x11\x11\x31\xa2\x4e\x33\x17\xd0\ \x8f\x26\xf6\x46\x87\x85\x26\x06\xc5\x8d\x74\x72\x09\xce\x25\x4b\ \x28\x70\x88\x88\x88\x11\xb5\xbb\x99\x70\xfe\x09\x1d\x5c\xa2\xc5\ \xb1\x26\x02\xfa\xc5\x5e\x06\x69\xc7\x8e\x84\xed\x4c\x5c\xbd\x9a\ \x02\x87\x88\x88\x18\xd1\x0b\xa2\xd5\xcd\x04\xf4\x67\x88\xbc\xd1\ \xa2\xbe\x89\x80\x3e\xd6\xcb\x40\xad\x5d\x9b\xb0\x9d\x89\x5b\xb6\ \x50\xe4\x10\x11\x11\x23\xe8\xcf\xcd\x1d\x6f\xb9\x86\xc8\x1b\x3d\ \xf6\x04\x3d\x30\x5a\x79\x1c\xa8\xa9\x8d\x1b\x09\xdc\x99\x74\x72\ \xa9\x5e\x9d\x42\x87\x88\x88\x18\x31\x57\x99\x0b\xe8\x73\x89\xbb\ \xd1\xe3\xae\xa0\x07\x46\x9e\xf8\xb2\x97\x80\x7e\xee\xb9\x04\xee\ \x4c\x2c\x2f\xa7\xd0\x21\x22\x22\x46\xcc\xd1\xe6\x02\x7a\x6f\xe2\ \x6e\xf4\xb8\xcc\xc4\xe0\xf8\x9e\x97\xc1\x7a\xc2\x09\x84\xed\x4c\ \x6c\xdf\x9e\x42\x87\x88\x88\x18\x31\x1b\x99\x09\xe7\x9f\x89\x25\ \xc4\xdd\xe8\x31\xd1\x44\x40\x3f\x8f\x8b\xa2\xc1\xd9\xbb\x37\x85\ \x0e\x11\x11\x31\x42\x3e\x6e\x6e\xf7\xfc\x05\xa2\x6e\x34\x69\x6b\ \x62\x80\x78\x7a\x51\xb4\xa4\x44\x39\x95\x95\x04\x6e\xbf\x67\xd0\ \x47\x8e\xa4\xd8\x21\x22\x22\x46\xc8\x1d\xe6\x02\xfa\x75\x44\xdd\ \x68\x92\x27\xfe\x25\xe8\x01\x52\x26\xbe\xef\x65\xd0\xae\x58\x41\ \xe8\xf6\xeb\xa4\x49\x14\x3b\x44\x44\xc4\x08\x79\x9a\xb9\x80\x3e\ \x93\xa8\x1b\x5d\xee\x31\x31\x48\xee\xf3\x32\x68\xa7\x4c\x21\x70\ \xfb\xdd\x41\x3f\xe7\x1c\x8a\x1d\x22\x22\x62\x84\x3c\xcc\x5c\x40\ \x6f\x47\xcc\x8d\x2e\xab\x4c\x0c\x92\xf5\x5e\x06\xed\xc0\x81\x84\ \x6e\xbf\xae\x5a\x45\xb1\x43\x44\x44\x8c\x88\x8f\x98\x0b\xe7\x7f\ \x70\x4f\x4a\x40\x44\x19\x65\x62\xa0\x9c\xe8\x65\xe0\xea\x96\x81\ \x84\x6e\x7f\x56\x54\xa8\x64\x61\x21\x45\x0f\x11\x11\x31\x02\xae\ \x33\x17\xd0\x7f\x4c\xc4\x8d\x36\x75\xc5\x2f\x83\x1e\x28\xf2\x1f\ \xa2\xf6\x7a\x19\xbc\xeb\xd6\x11\xba\xe9\x85\x8e\x88\x88\x18\x4b\ \x47\x9a\x0b\xe8\x17\x10\x71\xa3\xcf\xcb\x26\x06\xcb\x3d\x5e\x06\ \xef\xb4\x69\x04\x6e\xbf\xe7\xd0\xbb\x76\xa5\xe8\x21\x22\x22\x5a\ \xee\x6e\xb7\x71\x86\xa1\x80\x7e\x0c\xf1\x36\xfa\x5c\x6f\x62\xb0\ \xac\xf0\x32\x80\xfb\xf6\x25\x74\xfb\x75\xd8\x30\x0a\x1f\x22\x22\ \xa2\xe5\xde\x61\x2e\x9c\xff\x43\x2c\x22\xde\x46\x9f\x39\x26\x06\ \xcc\x30\x2f\x03\xb8\x41\x03\x02\xb7\x5f\x4f\x3f\x9d\xc2\x87\x88\ \x88\x68\xb9\xe7\x99\x0b\xe8\x77\x13\x6d\xe3\xc1\x91\x26\x06\x4c\ \xa9\xfb\xf3\xce\xa1\x06\x70\x6a\xf5\x6a\x42\xb7\x1f\x2f\xba\x88\ \xc2\x87\x88\x88\x68\xb9\x1d\x38\x7f\x0e\x3e\xd1\x6d\x78\x52\x26\ \x06\xcd\x8f\xbd\x0c\xe2\xc9\x93\x09\xdd\x7e\xdc\xbe\x5d\x39\x79\ \x79\x14\x3f\x44\x44\x44\x4b\x7d\xdc\x5c\x38\xd7\x76\x26\xda\xc6\ \x87\x1f\x98\x18\x34\xf3\xbc\x0c\xe4\xce\x9d\x09\xdd\x74\x72\x41\ \x44\x44\x8c\x8d\xab\xcc\x85\xf3\x24\xfd\xcf\xe3\xc5\x0c\x13\x03\ \xa7\x8d\x97\x81\x5c\x54\x94\xde\x15\x26\x78\x7b\x36\xd9\xbd\x3b\ \x05\x10\x11\x11\xd1\x52\x7b\x99\x0b\xe8\xd7\x13\x69\xe3\x45\x4b\ \x53\x3f\xbd\xfc\xc6\xcb\x60\x9e\x37\x8f\xe0\xed\xc7\xb1\x63\x29\ \x80\x88\x88\x88\x16\xfa\xb2\x58\x60\x2e\xa0\x9f\x41\xa4\x8d\x1f\ \x6f\x9b\x18\x3c\xeb\xbc\x0c\xe8\x21\x43\x08\xdd\x7e\x3c\xfb\x6c\ \x8a\x20\x22\x22\xa2\x85\x6e\x37\x17\xce\xf5\xc3\x93\xe5\xc4\xd9\ \xf8\xf1\x3f\xb6\xb4\x5b\x4c\xd5\xab\x47\xe8\xf6\xe3\xc6\x8d\x14\ \x41\x44\x44\x44\x0b\x1d\x64\x2e\xa0\x3f\x47\x94\x8d\x27\x93\x4d\ \x0c\xa0\xea\xe2\x9b\x5e\x06\xf5\xf2\xe5\x04\x6f\x3f\xd6\xaf\x4f\ \x21\x44\x44\x44\xb4\xc8\xdf\x89\x85\xe6\x02\xfa\x4a\xa2\x6c\x3c\ \xa9\x27\x7e\x6e\x62\x10\x55\x7a\x19\xd8\xc7\x1f\x4f\xe8\xf6\x61\ \xaa\x67\x4f\x8a\x21\x22\x22\xa2\x45\xae\x35\xdb\x5e\xb1\x0b\x51\ \x36\xbe\x3c\x61\x62\x10\x8d\xf6\x30\xa8\x93\x8d\x1a\x11\xbc\xfd\ \x38\x69\x12\xc5\x10\x11\x11\xd1\x22\x7b\x9a\x0b\xe7\xef\x12\x61\ \xe3\xcd\xc5\x26\x06\x52\xb1\xf8\xba\x97\xc1\x7d\xc9\x25\x04\x6f\ \xaf\x3b\xe8\x4b\x96\x50\x0c\x11\x11\x11\x2d\xf1\x49\x31\xcf\x5c\ \x40\xdf\x4a\x84\x8d\x37\x47\x99\xfa\x29\xe6\x6a\x8e\xb9\x64\xd7\ \x5d\xbb\x54\xaa\x5a\x35\x8a\x22\x22\x22\xa2\x05\x2e\x37\x7b\xbc\ \x65\x08\x11\x36\xde\xe8\xd7\xa7\xde\x37\x31\x98\xc6\x7a\x19\xe0\ \x4d\x9a\x10\xbc\xfd\xd8\xba\x35\x45\x11\x11\x11\xd1\x02\x3b\x9a\ \x0b\xe7\xff\x2b\x16\x12\x61\xe3\xcf\xd5\x26\x06\x54\x0d\xf1\x6d\ \x2f\x67\xd1\x39\xe6\xe2\xdd\x51\xa3\x28\x8a\x88\x88\x88\x21\xfb\ \x0b\xb3\xbb\xe7\xdf\x21\xba\xe6\x06\x63\x4d\x0d\xaa\xab\xbc\x0c\ \xf4\x61\xc3\x08\xde\x5e\x5d\xb0\x80\xc2\x88\x88\x88\x18\xb2\x67\ \x9a\x0d\xe8\x23\x89\xae\xb9\x41\x89\xf8\x77\x13\x83\xea\x38\x2f\ \x03\xbd\x66\xcd\x7d\xe7\xab\x09\xe0\x1e\xdc\xb1\x43\x39\x45\x45\ \x14\x47\x44\x44\xc4\x90\xd4\xa7\x03\x6a\x99\x0b\xe7\x7f\xe4\x78\ \x4b\x6e\x71\xb3\x89\x81\xa5\x9b\xf7\xff\xd6\xcb\x80\x9f\x3b\x97\ \xf0\xed\xd5\x36\x6d\x28\x90\x88\x88\x88\x21\xb9\xcb\xec\xee\xf9\ \x15\x44\xd6\xdc\xe2\x24\x53\x83\x6b\xb9\x97\x01\xdf\xbd\x3b\xc1\ \xdb\xab\x27\x9c\x40\x81\x44\x44\x44\x0c\xc9\x5e\x66\x03\x7a\x5f\ \x22\x6b\x6e\x51\x43\xfc\x87\x89\xc1\xd5\xd1\xcb\x80\xd7\xc7\x36\ \x2e\xbf\x9c\xf0\xed\xc5\xf3\xce\xa3\x40\x22\x22\x22\x86\xe0\x23\ \x09\xa3\xbd\xcf\xf7\x88\xf9\x44\xd6\xdc\xe3\x87\xa6\xbe\x01\xde\ \xe3\x65\xe0\x4f\x9e\x4c\xf8\xf6\xf2\x60\x11\xe7\xd0\x11\x11\x11\ \x43\x71\x9a\xd9\xdd\xf3\x8d\x44\xd5\xdc\x64\xa2\xa9\x41\xf6\x2d\ \x2f\x03\xff\xb0\xc3\x08\xe0\x5e\xed\xd4\x89\x42\x89\x88\x88\x68\ \xd0\x37\xc4\x9a\x66\x03\x7a\x77\xa2\x2a\xc7\x5c\x02\xb5\xb6\xf8\ \x8e\x97\x09\xb0\x68\x11\xe1\xdb\x8b\x93\x26\x51\x2c\x11\x11\x11\ \x0d\xba\xce\x6c\x38\xff\x1d\x31\x35\xb7\xb9\xc9\xd4\x60\xdb\xee\ \x65\x02\xf4\xea\x45\xf8\xf6\xe2\x9a\x35\x14\x4b\x44\x44\x44\x43\ \x26\xc5\xd6\x66\x03\xfa\x02\x22\x6a\x6e\x73\x82\xa9\xc1\x76\xb4\ \x97\x09\x50\x58\xa8\x52\x9b\x36\x11\xc0\xbd\xd8\xa8\x11\x45\x13\ \x11\x11\xd1\x80\x3f\x34\x1b\xce\x3f\x11\xeb\x13\x51\x73\x1b\xdd\ \xfc\x3e\x65\xd5\x65\xd1\xf1\xe3\x09\xdf\x5e\x1c\x32\x84\xa2\x89\ \x88\x88\x68\xc0\x61\x66\x03\xfa\xcd\xc4\x53\xd0\x6c\x31\x35\xe8\ \x4e\xf7\x32\x11\xf4\xce\x70\x65\x25\x01\xfc\x50\xce\x9b\x47\xd1\ \x44\x44\x44\x0c\xd8\xfb\xcd\xb6\x56\xd4\x0e\x27\x9a\x82\xa6\xab\ \xa9\x41\x57\x43\x7c\xcd\xcb\x84\x98\x3d\x9b\x00\x7e\xa8\x76\x8b\ \x3b\x77\x2a\xa7\x7a\x75\x8a\x27\x22\x22\x62\x80\x9e\x6c\x36\x9c\ \xbf\x97\xa0\xf7\x39\xec\xc7\x73\xa6\x06\xdf\x6a\x2f\x13\xa2\x55\ \x2b\x42\xb8\x07\x93\xfa\x05\x56\x8a\x27\x22\x22\x62\x20\xfe\x46\ \x2c\x34\x1b\xd0\x57\x12\x49\x61\x7f\xce\x37\x35\xf8\x8e\x10\xf7\ \x78\x99\x18\x8b\x17\x13\xc2\x0f\xe5\x8c\x19\x14\x50\x44\x44\xc4\ \x80\x9c\x69\x36\x9c\xff\x4b\x6c\x4c\x24\x85\xfd\x69\x24\x7e\x66\ \x6a\x10\x5e\xe5\xa5\xa3\x8b\xde\x1d\x26\x84\x1f\xdc\x2d\x5b\x94\ \x53\x58\x48\x11\x45\x44\x44\xcc\xb2\x2f\x8a\x25\x66\x03\xfa\xf7\ \x89\xa3\x70\x20\x7e\x6a\x6a\x10\x76\xf7\x32\x39\x0a\x0a\x94\x73\ \xd9\x65\x84\xf0\x43\x1d\x73\xe9\xd0\x81\x42\x8a\x88\x88\x98\x65\ \x17\x9a\x0d\xe7\xda\x3e\x44\x51\x38\x10\xa3\x4c\x0e\xc4\x3b\xbc\ \x4c\x90\xc1\x83\x09\xe1\x87\x72\xf2\x64\x0a\x29\x22\x22\x62\x16\ \xd5\x0d\x2d\x6a\x99\x0d\xe7\x4f\x11\x43\xe1\x9b\xd0\xb7\x86\xdf\ \x32\x35\x18\x8f\xf7\x30\x41\x52\xd5\xaa\xf1\x70\xd1\xa1\xba\xb9\ \xac\x5f\xaf\x9c\xbc\x3c\x0a\x2a\x22\x22\x62\x74\x77\xcf\xa7\x12\ \x43\xe1\x60\x5c\x64\x6a\x30\x16\x88\x8f\x79\x39\x8b\x7e\xdc\x71\ \x04\xf1\x43\xd9\xae\x1d\x05\x15\x11\x11\x31\x0b\xbe\x2c\xd6\x34\ \x1b\xce\xff\x20\x16\x13\x41\xe1\x60\x34\x48\xa4\x9f\x98\x35\x32\ \x28\x4f\xf5\x32\x59\xd8\x45\x3f\xf4\x2e\x3a\xc7\x5c\x10\x11\x11\ \xb3\xe2\x7c\xf3\xbb\xe7\x6b\x89\x9f\xe0\x85\x1b\x4d\x0d\xca\x22\ \xf1\x49\x2f\x13\xe6\xf8\xe3\x09\xe2\x07\x53\x7f\x81\xd1\x97\x6a\ \x29\xac\x88\x88\x88\x55\xea\xdc\x52\x6a\x36\x9c\xeb\x4d\xd1\x26\ \x44\x4f\xf0\x42\x3f\x93\xdf\x1c\xa7\x7a\x99\x34\xa5\xa5\x2a\xb9\ \x75\x2b\x41\xfc\x60\x76\xec\x48\x71\x45\x44\x44\xac\x82\x73\xcd\ \xef\x9e\x5f\x4d\xec\x04\x3f\x3c\x6a\xdd\x2e\xfa\xa8\x51\x84\xf0\ \x83\xb5\x5b\x9c\x3a\x95\xe2\x8a\x88\x88\x98\xa1\x4f\xb8\x99\xc4\ \x60\x38\xd7\xef\xcf\xb4\x24\x72\x82\x1f\x4e\x35\xf9\x0d\x72\x86\ \xd7\xb3\xe8\x1b\x37\x12\xc6\xbf\x49\xfd\x0b\x43\x51\x11\x45\x16\ \x11\x11\x31\x03\x4f\x35\xbf\x7b\x7e\x2b\x71\x13\xfc\x52\x28\xee\ \x36\x35\x48\x8b\xc5\xe7\xbc\x4c\x20\x3a\xba\x1c\xdc\xae\x5d\x29\ \xb2\x88\x88\x88\x3e\xbd\xdf\xed\x2e\x67\x38\xa0\xf7\x20\x6e\x42\ \x26\x9c\x6f\x72\xa0\x4e\xf6\x32\x89\xf4\xb3\xf6\x6b\xd6\x10\xc4\ \xbf\xc9\xb3\xce\xa2\xd0\x22\x22\x22\xfa\xb4\xbf\xf9\x70\xfe\x0b\ \x62\x26\x64\x4a\x6d\xf1\x43\x93\x67\xd1\x1f\xf7\x32\x91\xfa\xf6\ \x25\x88\x7f\x53\xbb\xc5\x8a\x0a\x95\xac\x59\x93\x62\x8b\x88\x88\ \xe8\xd1\x5b\xcd\x87\x73\xed\x71\xc4\x4c\xa8\x0a\x3b\x4c\x0e\xd8\ \x09\x5e\x26\x93\x6e\x27\xb8\x62\x05\x81\xfc\x9b\x1c\x3c\x98\x82\ \x8b\x88\x88\xe8\xc1\xa4\xd8\xd5\x7c\x38\x7f\x8a\x78\x09\x55\xa5\ \x95\x7b\xcb\xd8\xc8\xa0\xcd\x77\xcf\x81\x1d\x6a\x42\xa5\x3a\x75\ \x22\x88\x7f\x93\x17\x5f\x4c\xd1\x45\x44\x44\xf4\xe0\x15\xe1\xec\ \x9e\x9f\x40\xbc\x84\x6c\x70\x83\xc9\x81\x3b\xd2\xe3\xa4\x4a\x9d\ \x7b\x2e\x61\xfc\x9b\x3c\xec\x30\x0a\x2f\x22\x22\xe2\x41\x7c\x4b\ \x6c\x62\x3e\x9c\x3f\x49\xac\x84\x6c\xd1\x41\xfc\xc2\xe4\x00\xbe\ \xc3\xcb\xe4\x6a\xdc\x78\xdf\x99\x6b\x02\xf9\x01\x3c\xf9\x64\x8a\ \x2f\x22\x22\xe2\x41\x3c\x3f\x9c\xdd\xf3\x51\xc4\x4a\xc8\x26\xdf\ \x37\x39\x80\x3b\x89\x7b\xbd\x4c\xb0\x29\x53\x08\xe3\x07\xba\x2c\ \xba\x61\x43\xfa\xac\x3e\x05\x18\x11\x11\xf1\x6b\x3e\x9a\x30\xfe\ \x28\x91\xf6\x41\xe2\x24\x64\x9b\x8e\xa6\x77\xd1\xb7\x7b\x39\xe6\ \x52\xbb\xb6\x72\xb6\x6d\x23\x94\x1f\xe8\x65\xd1\xa3\x8e\xa2\x08\ \x23\x22\x22\x1e\xc0\x11\xe1\xec\x9e\x0f\x25\x4e\x42\x10\xdc\x61\ \x72\x20\xeb\x73\x61\x6f\x7b\x99\x68\x43\x87\x12\xc8\x0f\xe4\x82\ \x05\x14\x61\x44\x44\x44\x3b\xda\x2a\x3e\x4c\x8c\x84\xa0\x38\x4a\ \xfc\xd2\xe4\x80\x3e\xdf\xcb\x64\xcb\xcf\x4f\x77\x2e\x21\x94\x7f\ \xd5\xca\x4a\x95\x6c\xd4\x88\x62\x8c\x88\x88\xb8\xdf\xc5\xd0\xc3\ \xcd\x87\xf3\x2f\xdc\x0c\x05\x10\x18\x77\x9b\x1c\xd4\x35\xc4\xe7\ \xbc\x4c\xba\x56\xad\xf6\x05\x52\x82\xf9\xff\x3b\x8b\x3e\x7e\x3c\ \x05\x19\x11\x11\xd1\xf5\x82\x70\x76\xcf\x6f\x23\x3e\x42\xd0\xf4\ \x30\xbd\x8b\x3e\xc9\xeb\xc4\x9b\x3a\x95\x50\xfe\xff\xdd\xb4\x49\ \x25\x0b\x0b\x29\xca\x88\x88\x98\xf3\x3e\x2c\x56\x33\x1f\xce\x3f\ \x15\xdb\x12\x1f\xc1\x04\x37\x99\xfe\xf6\x79\x9b\x97\xc9\x57\xab\ \x96\x72\xb6\x6c\x21\x94\xff\x7f\xbb\x77\xa7\x30\x23\x22\x62\x4e\ \xab\x3b\xc3\x75\x0f\x67\xf7\x7c\x3b\xb1\x11\x4c\xd1\xd6\xfd\x46\ \x68\x6c\x80\xb7\x13\x77\x7b\x99\x84\x83\x06\x11\xc8\xff\xbf\xe7\ \x9d\x47\x71\x46\x44\xc4\x9c\x76\x63\x38\xe1\xfc\xcf\x62\x5d\x62\ \x23\x98\xe4\x3b\xa6\x07\xfa\x65\x5e\x26\x61\x5e\x9e\x72\xe6\xcf\ \x27\x94\xf3\xb2\x28\x22\x22\xe2\x3e\x5f\x10\xeb\x86\x13\xd0\x97\ \x13\x17\xc1\x34\x2d\xc4\x7f\x99\x1c\xe8\xb5\xc4\xdf\x79\x99\x8c\ \x8d\x1a\xa9\xd4\x8e\x1d\x84\xf2\xfd\x3d\xe3\x0c\x8a\x34\x22\x22\ \xe6\xa4\x27\x86\x13\xce\xf7\x8a\xa5\xc4\x45\x08\x83\x5d\xa6\x07\ \xfc\x29\x5e\x27\xe4\x88\x11\x84\xf2\xfd\xbb\xb9\xe8\x2f\x2c\xa5\ \xa5\x14\x6a\x44\x44\xcc\x29\xaf\x0e\x27\x9c\x6b\x4f\x27\x26\x42\ \x58\x34\x12\x3f\x30\x3d\xe8\x6f\xf6\x30\x21\x93\xba\x37\xfa\x92\ \x25\x84\xf3\xfd\x43\xba\xfe\xd2\x42\xb1\x46\x44\xc4\x1c\xf1\x25\ \xb1\x41\x38\xe1\xfc\x11\x31\x8f\x98\x08\x61\xb2\xd8\xf4\xc0\x3f\ \x4c\x7c\xc3\xcb\xe4\x6c\xde\x5c\xa5\x2a\x2a\x08\xe7\xff\x76\xf5\ \xea\xf4\x19\x7d\x8a\x36\x22\x22\xe6\x80\x23\xc2\x09\xe7\xba\x89\ \xc6\x91\xc4\x43\x08\x9b\xea\xe2\x7b\xa6\x27\xc0\x5c\xaf\x13\x74\ \xcc\x18\x82\xf9\xfe\xbb\xe8\x5d\xbb\x52\xb4\x11\x11\x31\xf6\x5e\ \x1f\xde\xd1\x96\x2b\x89\x86\x60\x0b\x93\x4d\x4f\x80\x42\xf1\x5e\ \xaf\x47\x5d\x2e\xba\x88\x70\xee\x9a\x5c\xb8\x90\xc2\x8d\x88\x88\ \xb1\xf6\x45\xb1\x51\x78\x6d\x15\xeb\x13\x0b\xc1\x16\xf4\x39\xab\ \x27\x4d\x4f\x84\x2e\xe2\x1e\x2f\x93\xb5\x71\x63\xe5\xd0\xd5\xe5\ \xbf\xb6\x68\x41\x01\x47\x44\xc4\xd8\x3a\x2a\xbc\xdd\xf3\x79\x44\ \x42\xb0\x8d\xfe\xe2\x97\xa6\x27\xc3\x52\xaf\x13\x76\xf8\x70\x82\ \xf9\xbf\x8f\xb9\xcc\x9c\x49\x01\x47\x44\xc4\x58\xba\x2d\xbc\x70\ \xfe\x94\x58\x40\x1c\x04\x1b\xb9\xd9\xf4\x84\x28\x12\x7f\xe5\xf1\ \xa8\x4b\xea\xc2\x0b\x09\xe8\xda\x5d\xbb\x94\x53\xa7\x0e\x85\x1c\ \x11\x11\x63\xe5\x13\x62\x59\x38\xe1\xfc\x73\xb1\x3b\x31\x10\x6c\ \xa5\x5c\xfc\xab\xe9\x89\xd1\x46\x7c\xc7\xcb\xe4\xad\x5b\x57\x39\ \x9b\x37\x13\xd0\xb5\x13\x26\x50\xcc\x11\x11\x31\x36\xee\x16\xbb\ \x86\xb7\x7b\xbe\x99\x08\x08\xb6\xb3\x38\x8c\xc9\x31\xdf\xeb\x24\ \x3e\xfa\x68\xc2\xb9\xbe\x2c\xba\x75\xab\x72\x4a\x4a\x28\xea\x88\ \x88\x18\x0b\x2f\x0e\x2f\x9c\xeb\x17\x43\x6b\x12\xff\xc0\x76\xf4\ \xf9\xab\xdf\x9a\x9e\x20\xf9\xe2\x8f\x3d\x4e\xe2\x7d\x67\xb0\x09\ \xe9\xca\x19\x3a\x94\xa2\x8e\x88\x88\x91\xf7\x2e\xb7\xbb\x5b\x48\ \x01\xfd\x78\xa2\x1f\x44\x85\xa1\x61\x4c\x92\xd6\xe2\xdb\x5e\x26\ \x73\x71\xb1\x4a\xad\x5c\xc9\x65\xd1\x0d\x1b\x94\x53\x54\x44\x71\ \x47\x44\xc4\xc8\xaa\x1f\x2e\x6c\x19\x5e\x38\xff\x19\x91\x0f\xa2\ \xc6\x0f\xc3\x98\x2c\x67\x7b\x9d\xd4\xad\x5a\xf1\xca\xa8\x3e\xea\ \xd2\xaf\x1f\x05\x1e\x11\x11\x23\xeb\xc4\xf0\xc2\xf9\x07\x62\x33\ \xe2\x1e\x44\x8d\xa6\xe2\x87\x61\x1c\x75\xb9\xcd\xeb\xc4\x1e\x32\ \x84\x80\xbe\x76\xad\x72\x0a\x0b\x29\xf2\x88\x88\x18\x39\x77\x86\ \x17\xce\xb5\x67\x11\xf5\x20\xaa\x2c\x0a\x63\xd2\x34\x11\x5f\xf1\ \x3a\xc1\xa7\x4d\xe3\x2c\x7a\xdf\xbe\x14\x7a\x44\x44\x8c\x94\x8f\ \x8a\xa5\xe1\x85\xf3\xfb\x12\xe9\x47\x1a\x01\x22\x49\xa1\xf8\x4c\ \x18\x93\x67\xb4\xd7\x49\x5e\x5c\xac\x9c\xe5\xcb\x73\xfb\x2c\xfa\ \xea\xd5\xfb\xfa\xc4\x53\xf0\x11\x11\x31\x0a\xea\xfb\x66\x47\x86\ \x17\xce\xff\x2e\xb6\x24\xe2\x41\xd4\xe9\x20\x7e\x12\xc6\x24\x5a\ \xef\x75\xb2\x97\x97\x2b\x47\xb7\x1d\xcc\xe5\x5d\xf4\x63\x8e\xa1\ \xe8\x23\x22\x62\x24\x1c\x1b\xee\xd1\x96\xd9\x44\x3b\x88\x0b\xeb\ \xc2\x98\x44\x35\xc4\x87\xbd\x4e\xf8\x1e\x3d\x72\x3b\xa0\xeb\x5f\ \x11\xf2\xf2\x28\xfc\x88\x88\x68\xb5\x97\x87\x1b\xce\x1f\x14\xf3\ \x89\x75\x10\x17\xaa\x8b\xaf\x85\x31\x99\x3a\x78\x6d\xbd\xa8\x9d\ \x34\x29\xb7\x43\x7a\xb7\x6e\x14\x7f\x44\x44\xb4\xd6\x7b\xc5\xe2\ \x70\x8f\xb6\xb4\x26\xd2\x41\xdc\x18\x28\x7e\x11\xc6\xa4\x3a\xd5\ \xeb\xe4\x2f\x28\x50\xce\xa2\x45\xb9\x1b\xd0\x97\x2e\x65\x17\x1d\ \x11\x11\xad\xf4\x55\xb1\x59\xb8\xbb\xe7\xb3\x88\x72\x10\x57\xae\ \x08\x6b\x62\xed\xf4\x5a\x04\xea\xd6\x55\xa9\x4d\x9b\x72\xf7\xc2\ \x68\xa7\x4e\x2c\x04\x88\x88\x68\x95\x49\x71\x78\xb8\xe1\xfc\xa7\ \x44\x38\x88\x33\x65\xe2\xdb\x61\x9d\x47\x7f\xd0\x6b\x31\x68\xdf\ \x5e\x39\xb9\xfa\x88\xd1\xe2\xc5\x2c\x06\x88\x88\x68\x95\x8b\xc3\ \x0d\xe7\xbf\x17\x1b\x12\xe1\x20\xee\x0c\x0e\xeb\xa8\x4b\x7b\x3f\ \xe7\xd1\xc7\x8c\xc9\xdd\x5d\xf4\x36\x6d\x58\x10\x10\x11\xd1\x0a\ \xbf\x9b\x48\x3f\x42\x18\x62\x40\x3f\x91\xe8\x06\xb9\xc2\xce\xb0\ \x26\xda\x04\xaf\x45\x21\x2f\x4f\x25\xa7\x4f\xcf\xcd\x90\xbe\x60\ \x01\x8b\x02\x22\x22\x86\xee\x43\x62\xcd\x70\xc3\xf9\xd5\x44\x36\ \xc8\x25\x6a\x88\x6f\x84\x35\xe1\xd6\x78\x2d\x0e\xd5\xaa\x29\xe7\ \xe2\x8b\x73\x73\x17\xbd\x65\x4b\x16\x07\x44\x44\x0c\xcd\xd7\xc4\ \xd6\xe1\x86\xf3\xb7\xc4\x52\x22\x1b\xe4\x1a\xfd\xc3\x3a\xea\x52\ \x24\xfe\xc4\x6b\x91\xa8\x55\x4b\x39\x97\x5d\x96\x7b\x21\xfd\x82\ \x0b\x58\x20\x10\x11\x31\x14\xf7\x8a\xc7\x85\x1b\xce\xff\x25\xf6\ \x24\xaa\x41\xae\xb2\x29\xac\xc9\xd7\x48\x7c\xde\x6b\xb1\x38\xfc\ \x70\xe5\x6c\xdf\x4e\x47\x17\x44\x44\x44\x03\x2e\x08\x37\x9c\x6b\ \x17\x13\xd1\x20\x97\xd1\xaf\x71\x3d\x10\xd6\x04\xec\x24\xbe\xe3\ \xb5\x60\xe8\x47\x7c\x2a\x2b\x73\x2b\xa4\x2f\x5b\x46\x5f\x74\x44\ \x44\x34\xea\xc6\xf0\xc3\xf9\x4f\xc4\x3c\x22\x1a\xe4\x3a\xfa\x55\ \xae\x0f\xc3\x9a\x88\x33\x7c\x14\x8d\xd4\xc8\x91\xb9\x77\xd4\xa5\ \x47\x0f\x16\x0c\x44\x44\x34\xa2\x3e\x7e\x5a\x2d\xdc\x70\x2e\xff\ \x18\x89\x46\x44\x33\x80\x34\x67\x86\xf9\x6d\x79\x87\x9f\x90\x7e\ \xc6\x19\xb9\x15\xd0\x57\xae\x4c\xbf\xb0\xca\xc2\x81\x88\x88\x01\ \xfa\xb8\x58\x2f\xdc\x70\xae\xef\xc5\x0d\x23\x92\x01\x7c\x95\x9b\ \xc2\x9a\x94\xfa\xdb\xfa\x4f\xbd\x16\x11\x1d\x56\xcf\x3f\x3f\xb7\ \x42\xfa\x80\x01\x2c\x1e\x88\x88\x18\x98\xaf\x84\xdf\xb1\x45\xbb\ \x9e\x28\x06\xf0\x75\xea\x88\xef\x85\x35\x31\xeb\x8b\x4f\x7a\x2d\ \x26\xa5\xa5\x2a\xb5\x7a\x75\xee\x5c\x16\x5d\xbf\x5e\xa5\x74\xcb\ \x49\x16\x11\x44\x44\xcc\xb2\xbb\xc5\xfe\xe1\x87\xf3\x87\xc4\x42\ \xa2\x18\xc0\x81\x19\x20\x7e\x1e\xd6\x04\xd5\x2f\x8d\xbe\xee\xa3\ \xb3\x4b\x72\xeb\xd6\xdc\xd9\x45\x1f\x3a\x94\x85\x04\x11\x11\xb3\ \xee\xa9\xe1\x87\xf3\x94\xd8\x84\x08\x06\x70\x70\x96\x87\x39\x51\ \xfb\xb8\xdf\xe6\x3d\x15\x96\x36\x6d\x94\xb3\x63\x47\x6e\x04\xf4\ \xcb\x2f\x57\x4e\x8d\x1a\x2c\x26\x88\x88\x98\x35\x17\x85\x1f\xce\ \x75\xbf\xf3\xde\x44\x2f\x80\x43\x53\x20\xfe\x3a\xcc\x09\x3b\xcb\ \xcf\xa5\xd1\xae\x5d\x55\xaa\xa2\x22\x37\x42\xfa\x98\x31\x2c\x28\ \x88\x88\x98\x15\xaf\x11\xf3\xc3\x0f\xe8\x17\x11\xbb\x00\xbc\xd3\ \x50\xdc\x1b\xe6\xa4\x5d\xe3\xa7\xd0\xe8\x4b\x94\xb9\x10\xd0\xb7\ \x6f\x57\xc9\x9a\x35\x59\x58\x10\x11\xb1\x4a\xde\x96\x48\xbf\xea\ \x1d\x72\x38\xbf\x91\xb8\x05\xe0\x9f\xe3\x12\xe9\x96\x47\xa1\x4c\ \x5c\x5d\x38\x6e\xf1\x53\x70\x4e\x38\x21\x37\x42\xfa\x29\xa7\xb0\ \xb8\x20\x22\x62\xc6\x3e\x95\x48\xbf\xe6\x1d\x72\x38\x7f\x53\xac\ \x4d\xd4\x02\xc8\x8c\xd5\x61\x4e\x60\x99\xb9\xea\x11\x3f\x85\x47\ \x87\xd7\xb8\x07\xf4\x9d\x3b\x95\xd3\xa0\x01\x8b\x0c\x22\x22\xfa\ \xf6\x35\xb1\x43\xf8\xe1\x5c\x3f\x8e\xd8\x89\x88\x05\x50\xb5\xf3\ \xe8\xf7\x87\x39\x91\x5b\xba\xfd\x59\xbd\x14\x9e\x64\x7e\xbe\x72\ \xe6\xce\x8d\x7f\x48\x9f\x3a\x95\x85\x06\x11\x11\x7d\xf9\x8e\xd8\ \x3b\xfc\x70\xfe\xa5\x38\x9e\x78\x05\x50\x75\x1a\x24\x42\xec\x8f\ \xae\xed\x27\xbe\xeb\xb5\x08\x15\x16\x2a\x67\xfe\xfc\x78\x07\xf4\ \xca\x4a\xe5\xb4\x6a\xc5\x82\x83\x88\x88\x9e\xdc\x23\x0e\x0f\x3f\ \x9c\x2b\xf7\x97\x79\x00\xc8\x12\x3d\xc4\x8f\xc3\x9c\xd4\x27\x88\ \xef\x7b\x2d\x46\xd5\xab\x2b\xe7\xe2\x8b\xe3\x1d\xd2\x17\x2f\x56\ \x4e\x5e\x1e\x0b\x0f\x22\x22\x1e\xfc\xd7\x65\x71\x92\x1d\xe1\xfc\ \x0e\x31\x9f\x48\x05\x90\x5d\x26\x87\x3d\xb9\x4f\x76\x0b\x8d\xa7\ \xa2\x54\xbb\xb6\x72\xd6\xac\x89\x75\x48\x4f\x76\xef\xce\xe2\x83\ \x88\x88\x07\x75\x9a\x1d\xe1\xfc\x05\xb1\x8c\x28\x05\x10\x0c\x57\ \x85\x3d\xc9\x17\xf9\xe9\x91\xde\xa4\x89\x4a\x6d\xda\x14\xdf\x90\ \xbe\x6a\x55\xfa\x48\x0f\x0b\x10\x22\x22\x1e\xc0\xe5\x76\x84\xf3\ \xbf\x88\xed\x89\x50\x00\xc1\x51\x28\x3e\x14\xf6\x64\x5f\xe5\xa7\ \x40\x95\x97\xab\xd4\xc6\x8d\xf1\x0d\xe9\x23\x46\xb0\x08\x21\x22\ \xe2\xd7\x5c\x63\x47\x38\xd7\xc7\x63\xfb\x13\x9f\x00\x82\xe7\x70\ \xf1\x0f\x61\x4e\xf8\x02\xf1\x3a\x3f\x85\xea\xb0\xc3\x94\xb3\x79\ \x73\x3c\x8f\xb9\x6c\xdd\xaa\x9c\x5a\xb5\x58\x8c\x10\x11\xf1\x3f\ \x5e\x2f\x16\xda\x11\xd0\x67\x10\x9b\x00\xcc\x31\x44\xfc\x57\x98\ \x93\xbe\x58\xfc\x89\x9f\x82\x75\xc4\x11\xca\xb9\xfc\xf2\x78\xee\ \xa2\x4f\x9e\xcc\x82\x84\x88\x88\xfb\xfc\xb1\xbb\x46\x5a\x10\xce\ \x37\x10\x97\x00\xcc\x33\x29\x91\xee\x67\x1a\xda\xe4\x2f\x13\xef\ \xf5\x53\xb8\x5a\xb6\x54\xce\xb6\x6d\xf1\x0b\xe8\x15\x15\xca\x69\ \xda\x94\x85\x09\x11\x31\xc7\xbd\x53\x2c\xb1\x23\x9c\x7f\x4f\xcc\ \x23\x2a\x01\x84\xc3\xba\xb0\x8b\x40\x7d\xf1\x51\x3f\x05\xac\x7d\ \x7b\x95\xda\xb1\x23\x7e\x21\x7d\xc1\x02\x16\x27\x44\xc4\x1c\xf6\ \x21\xb1\xae\x1d\xe1\xfc\xd7\x62\x35\x22\x12\x40\x78\xe8\x97\x46\ \xef\x0c\xbb\x18\xb4\x11\x5f\xf6\x53\xc8\x3a\x76\x54\xa9\x9d\x3b\ \xe3\x17\xd2\x3b\x77\x66\x91\x42\x44\xcc\x41\x9f\x15\x9b\xd9\x11\ \xce\xdf\x13\x1b\x13\x8f\x00\xc2\xa7\x44\xfc\x4d\xd8\x45\xa1\xab\ \xf8\x86\x9f\x82\xd6\xad\x9b\x72\x76\xed\x8a\x55\x40\x4f\xad\x58\ \xa1\x9c\x82\x02\x16\x2b\x44\xc4\x1c\x52\x16\x60\x75\x18\xed\x14\ \x01\xe0\x00\x34\x17\x7f\x1f\x76\x71\x38\x2e\x91\x7e\xce\xd8\x73\ \x61\x3b\xfa\x68\x95\xd2\xe7\xb7\xe3\xb4\x8b\x3e\x78\x30\x0b\x16\ \x22\x62\x8e\xf8\x82\xd8\xd6\x8e\x70\xfe\x99\x38\x8a\x38\x04\x60\ \x1f\x47\x8b\xff\x08\xbb\x48\x8c\xf2\x19\xd2\x53\x03\x07\x2a\xa7\ \xb2\x32\x3e\x01\x5d\xf7\x7c\x2f\x29\x61\xe1\x42\x44\x8c\xb9\xcf\ \x8b\xad\xec\x08\xe7\xb4\x53\x04\xb0\x9c\x09\xe2\x17\x61\x17\x8a\ \x13\xc5\xf7\xfd\x14\xba\x63\x8e\x49\x77\x42\x89\xcb\x51\x97\xd3\ \x4e\x63\xf1\x42\x44\x8c\xb1\x2f\x89\x1d\xed\x09\xe7\xb4\x53\x04\ \x88\x00\xcb\x6d\x28\x18\xa7\x8a\x7b\xfd\x14\xbc\x1e\x3d\xe2\x73\ \xdc\x45\xff\x22\xd0\xa2\x05\x8b\x18\x22\x62\x0c\x7d\x45\x3c\xd2\ \x9e\x70\xfe\xc3\x04\xed\x14\x01\x22\x81\x9e\xa8\xb7\xda\x50\x38\ \xe6\xf9\x2d\x7c\x71\x0a\xe9\x4b\x96\x28\x27\x2f\x8f\xc5\x0c\x11\ \x31\x46\xbe\x29\xf6\xb4\x27\x9c\x3f\x25\x96\x11\x7b\x00\xa2\x43\ \x75\xf1\x71\x1b\x0a\xc8\x1c\x9f\xc5\x2f\xd9\xbd\x7b\x7c\x42\xfa\ \x80\x01\x2c\x68\x88\x88\x31\x51\x77\x2a\xeb\x61\x4f\x38\x7f\x5e\ \xac\x4d\xdc\x01\x88\x1e\x4d\xc5\x77\x6d\x28\x24\xcb\xfd\x16\xc2\ \xa3\x8f\x8e\x47\x0b\xc6\xcd\x9b\x55\xb2\xac\x8c\x85\x0d\x11\x31\ \xe2\xca\x62\xaa\x06\xd9\x13\xce\xdf\x17\x9b\x11\x73\x00\xa2\x4b\ \x2b\x31\x65\x43\x41\xb9\xc4\xef\x4e\xfa\x51\x47\xc5\x23\xa4\x9f\ \x71\x06\x8b\x1b\x22\x62\x84\x7d\x47\x1c\x68\x4f\x38\xd7\x6b\x7a\ \x6b\xe2\x0d\x40\xf4\xe9\x22\xfe\x35\xec\xa2\x92\x27\xae\xf7\x5b\ \x18\x3b\x77\x8e\xfe\x8b\xa3\xfa\xc2\x68\xcb\x96\x2c\x72\x88\x88\ \x11\xdd\x39\x1f\x6c\x4f\x38\xd7\x6b\x79\x57\x62\x0d\x40\x7c\x38\ \x5e\xfc\x34\xec\xe2\x52\x20\x5e\xe1\xb7\x40\x76\xea\xa4\x9c\x1d\ \x3b\xa2\x1d\xd2\x97\x2e\x55\x4e\x7e\x3e\x8b\x1d\x22\x62\x84\xd4\ \x6f\x7a\x8c\xb5\x27\x9c\xff\x4b\x1c\x41\x9c\x01\x88\x1f\xa7\x26\ \x2c\xe8\x91\x9e\x9f\x41\x48\x4f\xc5\x21\xa4\xf3\xc2\x28\x22\x62\ \xa4\x76\xce\x8f\xb5\x27\x9c\xeb\x57\x42\xc7\x12\x63\x00\xe2\xcb\ \x45\x36\x14\x9b\x22\xf1\x1a\xbf\x21\xbd\x6b\xd7\x68\x1f\x77\xd9\ \xbc\x59\x39\x5c\x18\x45\x44\xb4\xde\xdd\x89\xf4\xab\xd8\x09\x7b\ \x3c\x87\xf8\x02\x10\x7f\x36\xd8\x50\x70\xf4\x71\x97\xed\x7e\x43\ \x7a\x9b\x36\xca\xd9\xb2\x25\xba\x21\xfd\xcc\x33\x59\xfc\x10\x11\ \x2d\xef\x73\xde\xd7\xae\x70\xbe\x94\xd8\x02\x90\x1b\xe8\x87\x8c\ \xae\xb5\xa1\xf0\xe8\x8b\xa3\x1b\xfc\x16\xd0\x23\x8e\x50\xa9\x4d\ \x9b\xa2\x7b\x61\xb4\x6d\x5b\x16\x41\x44\x44\x4b\xc3\x79\x1f\xbb\ \xc2\xf9\x16\x22\x0b\x40\x6e\x51\x20\xde\x6e\x4b\x48\xf7\xdd\xdd\ \xa5\x71\x63\xe5\xac\x5b\x17\xcd\x90\xbe\x7c\xb9\x72\x0a\x0a\x58\ \x0c\x11\x11\x2d\x7b\x84\xa8\x97\x5d\xe1\xfc\x3a\x77\x43\x0d\x00\ \x72\x8c\x9a\xe2\x33\x36\x14\xa2\xfc\x0c\x8e\xbb\x38\xe5\xe5\xd1\ \x0d\xe9\x43\x87\xb2\x20\x22\x22\x5a\xe2\x5b\x62\x7f\xbb\xc2\xf9\ \xbd\x62\x35\x62\x0a\x40\xee\x52\x5f\x7c\xc5\x96\x9d\xf4\xb5\x7e\ \xcf\xa4\xd7\xae\xad\x92\x97\x5c\x12\xb9\x80\x9e\xd2\x1d\x69\x1a\ \x36\x64\x61\x44\x44\x0c\x59\x59\x00\x55\x57\xbb\xc2\xf9\xcf\x09\ \xe7\x00\xa0\xd1\xaf\x8d\x3a\xb6\x84\xf4\x4d\x7e\x0b\x6c\x69\xa9\ \x72\x2e\xbc\x30\x7a\xbb\xe8\xe7\x9f\xaf\x9c\xbc\x3c\x16\x48\x44\ \xc4\x90\x7c\x5d\xec\x69\x57\x38\x7f\x4c\x2c\x23\x96\x00\xc0\xbf\ \x69\x23\x26\x6d\x29\x52\x4b\xfd\x16\xda\x92\x12\xe5\x2c\x5a\x14\ \xbd\x9d\xf4\x3e\x7d\x58\x24\x11\x11\x43\xf0\x25\xb1\x93\x5d\xe1\ \xfc\x21\xb1\x06\x71\x04\x00\xfe\x3f\x47\x89\x7f\x89\xec\x71\x97\ \x6a\xd5\x94\x73\xee\xb9\xd1\xeb\x8d\x5e\xb3\x26\x8b\x25\x22\xa2\ \x41\x5f\x15\xbb\xd9\x15\xce\x9f\x17\xeb\x12\x43\x00\xe0\x9b\xe8\ \x25\x7e\x60\x4b\x48\x5f\x95\x49\x48\x9f\x37\x2f\x52\x21\x3d\x39\ \x75\x2a\x0b\x26\x22\xa2\xc1\x9d\x73\xcb\xce\x9c\xbf\x28\x36\x20\ \x7e\x00\xc0\xa1\x18\x28\x7e\x64\x4b\xf1\x5a\xee\xb7\x00\xe7\xe7\ \x2b\xe7\xf4\xd3\xa3\xb5\x93\xde\xa5\x0b\x0b\x27\x22\x62\xc0\x3e\ \x2f\xb6\xb3\x2b\x9c\xbf\x2a\x96\x13\x3b\x00\xc0\x2b\xfd\xc4\xbf\ \xdb\x52\xc4\x66\x88\x49\x3f\x85\x58\x5f\xbe\x1c\x3d\x3a\x3a\xbb\ \xe8\x6b\xd7\x2a\xa7\xb8\x98\x05\x14\x11\x31\x20\x1f\x11\x0f\xb3\ \x2b\x9c\xbf\x24\x36\x24\x6e\x00\x80\x5f\x8e\x13\x3f\xb6\xa5\x98\ \x4d\x11\xf7\xfa\x2d\xca\x43\x86\xa4\x5f\xef\x8c\x42\x50\x3f\xf9\ \x64\x16\x51\x44\xc4\x00\xfc\x95\xd8\xc0\xae\x70\xfe\x0a\x3b\xe7\ \x00\x50\x15\x46\x89\x9f\xd8\x52\xd4\x4e\x12\x77\xfb\x2d\xce\xbd\ \x7a\x29\x67\xd7\x2e\xfb\x03\xba\xfe\x22\xd1\xb2\x25\x8b\x29\x22\ \x62\x16\xbd\x53\xac\x65\x57\x38\x7f\x5b\x3c\x9c\x78\x01\x00\x55\ \x65\x82\xf8\x99\x2d\xc5\x6d\xb8\xf8\xae\xdf\x22\xdd\xb9\xb3\x72\ \xb6\x6f\xb7\x3f\xa4\xeb\x47\x97\x0a\x0a\x58\x54\x11\x11\xb3\xe0\ \x4d\x62\x0d\xbb\xc2\xb9\x2c\x5f\x89\x66\xc4\x0a\x00\xc8\x16\x73\ \xc4\x2f\x6d\x29\x72\x23\xc4\xf7\xfc\x16\xeb\x16\x2d\xd2\x6d\x0d\ \x6d\x0f\xe9\x23\x46\xb0\xb0\x22\x22\x56\xd1\x1f\x88\x25\x76\x85\ \xf3\x3f\x88\x1d\x89\x13\x00\x90\x6d\xce\xb3\xa8\xd0\xa9\x81\xe2\ \x5b\x7e\x8b\x76\x93\x26\xca\x59\xb7\xce\xee\xc7\x8b\x76\xee\x54\ \x4e\x79\x39\x0b\x2c\x22\x62\x86\x5e\x23\x16\xd9\x15\xce\xff\x57\ \xec\x4e\x8c\x00\x80\xa0\xb8\xd8\xa6\x90\xae\x9f\x68\x7e\xcd\x67\ \xe1\x4e\x36\x6a\xa4\x9c\x35\x6b\xec\xde\x45\xd7\x0f\x2e\xe9\x4e\ \x34\x2c\xb4\x88\x88\xbe\xdc\x2e\x16\xd8\x15\xce\xff\x28\x76\x23\ \x3e\x00\x40\xd0\x5c\x68\x53\x48\xef\xe2\x3e\x3c\xe1\xeb\x41\xa3\ \x3a\x75\x54\x52\x9f\xf7\xb6\xb9\xf5\x62\xbf\x7e\x2c\xb6\x88\x88\ \x3e\xd4\x2f\x50\xe7\xd9\x15\xce\x7f\x2f\x76\x26\x36\x00\x80\x29\ \x16\x26\x2c\x3a\x93\xde\xce\x7d\x80\xc2\x57\x31\x2f\x2e\x56\xa9\ \x73\xce\xb1\x37\xa4\x6f\xdf\xae\x92\x0d\x1a\xb0\xe8\x22\x22\x7a\ \xf0\x42\xbb\x82\xb9\x56\xfe\xb1\x38\x73\x0e\x00\xe6\x99\x25\x7e\ \x61\x4b\x31\xd4\x0f\x50\x3c\xe6\xb7\xa8\x17\x16\xaa\xe4\xf4\xe9\ \xf6\x86\xf4\xf3\xce\xe3\xa8\x0b\x22\xe2\x41\xdc\x23\x9e\x6a\x5f\ \x38\xd7\xad\x14\x9b\x13\x13\x00\x20\x2c\xe6\xd9\xb4\x93\xde\x44\ \x7c\xd8\x6f\x81\xd7\x01\xf8\xa4\x93\xec\xbd\x34\x3a\x70\x20\x8b\ \x30\x22\xe2\x01\xd4\xef\x62\x9c\x6c\x5f\x38\x97\xef\x0c\x89\x36\ \xc4\x03\x00\x08\x9b\xc9\x09\x8b\xfa\xa4\xeb\x07\x29\x7e\x92\x49\ \xb1\x1f\x3a\xd4\xce\x57\x47\x75\xff\x76\x8e\xba\x20\x22\x7e\xc5\ \xd7\xc5\xfe\xf6\x85\xf3\x37\xc5\x23\x88\x05\x00\x60\x0b\xa7\xda\ \x14\xd2\xab\x89\xd7\x66\x52\xf4\x7b\xf6\x54\x8e\x6e\x73\x68\x5b\ \x48\x5f\xb0\x80\xa3\x2e\x88\x88\xae\x2f\x8a\xdd\xec\x0b\xe7\x2f\ \x8b\x8d\x89\x03\x00\x60\x1b\x93\x6c\x0a\xe9\xba\xcd\xd6\xd6\x4c\ \x8a\x7f\xfb\xf6\xca\xd9\xba\xd5\xbe\x90\xde\xbf\x3f\x0b\x33\x22\ \xe6\xbc\x4f\x8b\x6d\xec\x0b\xe7\xf2\x9d\x21\x51\x4e\x0c\x00\x00\ \x5b\x99\x28\x7e\x6a\x4b\xd1\xd4\xed\xb6\x96\x67\xb2\x08\x34\x6d\ \x6a\xdf\x83\x46\xf2\xa5\x21\x55\xaf\x1e\x0b\x34\x22\xe6\xac\xf7\ \x8b\xe5\xf6\x85\xf3\x17\xc4\x46\x2c\xff\x00\x60\x3b\x27\xdb\x14\ \xd2\xb5\xb3\xf4\x03\x45\x7e\x17\x83\xfa\xf5\x95\xb3\x62\x05\x47\ \x5d\x10\x11\x2d\xf0\x2e\xb1\x8e\x7d\xe1\xfc\xb7\x62\x43\x96\x7d\ \x00\x88\x0a\x56\x9d\x49\xd7\x4e\x17\xf7\xfa\x5d\x14\x4a\x4b\x95\ \xb3\x68\x91\x5d\x21\x9d\x07\x8c\x10\x31\xc7\xbc\xdd\x6d\x00\x60\ \x59\x38\x7f\x5a\x6c\xc0\x72\x0f\x00\x1c\x77\xa9\xa2\x63\xdd\xb6\ \x5c\xbe\x16\x87\x92\x92\xf4\xce\xb5\x2d\x01\x7d\xf3\x66\x95\xaa\ \x5d\x9b\x45\x1b\x11\x73\xc2\x1b\xc4\xea\xf6\x85\xf3\x87\xc5\x5a\ \x2c\xf3\x00\x10\x55\x4e\x12\x3f\xb1\xa9\xb0\x0e\x12\xdf\xf4\xbb\ \x48\xe4\xe7\xab\xd4\x69\xa7\xd9\x13\xd2\xe7\xcf\xe7\xa8\x0b\x22\ \xc6\xde\x1d\x62\xa1\x7d\xe1\xfc\x1e\xb1\x06\xcb\x3b\x00\x44\x9d\ \xe1\xe2\x3f\x6c\x2a\xb0\x47\x89\x2f\x65\xf2\xa0\xd1\x98\x31\xf6\ \x84\xf4\x5e\xbd\x58\xc0\x11\x31\xb6\xae\x72\x2f\xfa\x5b\x16\xce\ \x6f\x17\x8b\x59\xd6\x01\x20\x2e\xf4\x17\xff\x6a\x53\xa1\x6d\xe3\ \xb6\xeb\xf2\xbd\x70\xe8\x60\x6c\x43\xaf\x74\xfd\x80\x51\xc3\x86\ \x2c\xe4\x88\x18\x2b\xf5\x85\xfe\x79\xf6\x05\x73\xed\x8d\x62\x21\ \xcb\x39\x00\xc4\x8d\xa3\xc5\x3f\xda\x54\x70\x1b\x8a\xf7\x66\xda\ \x2b\x7d\xcb\x96\xf0\x43\xba\xbe\xc0\x9a\x9f\xcf\xa2\x8e\x88\xb1\ \x50\xdf\x11\x9a\x68\x67\x38\xff\xb6\x98\xcf\x32\x0e\x00\x71\xa5\ \xa5\xf8\x96\x4d\x85\xb7\xc4\xbd\x84\xe4\x7b\x31\x69\xd2\x44\x25\ \xd7\xae\x0d\x3f\xa4\x8f\x18\xc1\xc2\x8e\x88\x91\xf7\x35\xb1\x9f\ \x9d\xe1\x7c\x09\x4b\x37\x00\xe4\x02\x4d\x12\xe9\x57\xd7\xac\x29\ \xc0\xfa\xd5\xd1\x4d\x19\x2c\x28\xfb\xba\xa9\x2c\x5d\x1a\x6e\x40\ \xdf\xb5\x4b\x39\xcd\x9b\xb3\xc0\x23\x62\x64\x7d\x46\x6c\x6f\x5f\ \x30\xff\x52\x3c\x97\x25\x1b\x00\x72\x09\xfd\xea\xda\xf3\xb6\xed\ \x94\x9c\x93\xc9\xe2\x52\x5c\xac\x9c\x79\xf3\x42\x0d\xe9\xa9\x4b\ \x2f\x55\x4e\x51\x11\x0b\x3d\x22\x46\xce\x87\xc5\xc3\xed\x0b\xe7\ \x5f\x88\x73\x58\xaa\x01\x20\x17\xa9\x23\x3e\x6a\x5b\x48\x3f\x55\ \xdc\xe3\xf7\x52\x93\x3e\x07\x3e\x79\x72\xb8\x3b\xe9\x13\x27\xb2\ \xd8\x23\x62\xa4\xfc\xa9\x58\xdb\xbe\x70\xae\xdf\xef\x98\xcc\x12\ \x0d\x00\xb9\x8c\xee\x25\x7b\xaf\x6d\x21\x7d\x84\xf8\x76\x26\x6d\ \x18\x47\x8f\x56\x4e\x65\x65\x38\x01\x5d\xff\xe7\x1e\x79\x24\x8b\ \x3e\x22\x46\xc2\x6b\xc4\x6a\xf6\x85\xf3\x8f\xc5\x13\x59\x9a\x01\ \x00\xd2\x21\xfd\x6e\xdb\x42\x7a\x7f\xf7\xd2\x92\xef\x85\xa7\x4f\ \x9f\xf4\xb9\xf0\x30\x42\xfa\xba\x75\xca\x29\x2d\x65\xf1\x47\x44\ \xab\xdd\x25\x16\xd9\x17\xce\x3f\x12\x47\xb3\x24\x03\x00\xfc\x97\ \x6a\xe2\x8f\x6c\x0b\xe9\x1d\xc5\xe7\x33\x59\x80\x3a\x74\x50\xce\ \xd6\xad\xe1\x84\xf4\x19\x33\x08\x00\x88\x68\xad\xcb\xed\x7c\x80\ \xe8\x2f\x62\x3f\x96\x62\x00\x80\x03\x87\xf4\x9b\x6d\x0b\xe9\xfa\ \xf2\xd2\x43\x99\x2c\x44\x4d\x9b\xa6\x77\xb4\xc3\x08\xe9\xc7\x1c\ \x43\x10\x40\x44\xab\xdc\x2b\x7e\xcb\xce\x36\x8a\xf2\x8f\x96\xe8\ \xcc\x12\x0c\x00\xf0\xcd\xe8\x87\x20\xae\xb0\xad\x80\xd7\x15\xef\ \xcc\xa4\x0d\x63\x9d\x3a\xca\x59\xb6\xcc\x7c\x40\xdf\xb2\x45\xa5\ \xea\xd5\x23\x14\x20\xa2\x15\xbe\x2b\x8e\xb1\x33\x9c\xbf\x26\x36\ \x67\xe9\x05\x00\xf0\xc6\x4a\xdb\x0a\x79\x75\xf1\xbb\x99\x2c\x4e\ \x25\x25\xca\x39\xff\x7c\xf3\x21\x7d\xc1\x82\xf4\xc5\x55\xc2\x01\ \x22\x86\xe8\xab\x62\x6f\x3b\xc3\xf9\xd3\x62\x43\x96\x5b\x00\x00\ \x7f\x4c\x15\x3f\xb3\xa9\xa0\xeb\x73\x93\x8b\x32\x59\xa4\x74\x8f\ \xf2\xd9\xb3\xcd\xf7\x47\x1f\x3c\x98\x80\x80\x88\xa1\xf9\xa8\xd8\ \xdc\xce\x70\xfe\xb3\x44\xba\x41\x01\x00\x00\x64\xc0\x18\xf1\x9f\ \xb6\x15\xf7\x59\xee\x79\xca\x8c\xda\x30\x9a\x0c\xe8\x3b\x77\x2a\ \xe7\x88\x23\x08\x0a\x88\x68\xdc\x3b\xdd\xe3\x81\x16\x86\xf3\x6b\ \xc5\x02\x96\x57\x00\x80\xaa\x31\x48\xfc\x9b\x6d\x45\x7e\x54\x26\ \xbd\xd2\xb5\x7d\xfb\xaa\x54\x45\x85\xd1\x57\x46\x53\xd5\xaa\x11\ \x18\x10\xd1\x98\x37\x88\x35\xec\x0c\xe7\x9b\xc4\x3c\x96\x55\x00\ \x80\xec\xd0\x29\x91\xbe\x69\x6f\x55\xb1\xef\x2e\xbe\x90\xc9\x02\ \xd6\xb1\xa3\x4a\x1a\x6c\xc3\x98\xd2\xaf\x9c\x12\x1a\x10\xd1\x80\ \x92\x80\x55\x81\x7d\xc1\xfc\x4b\xf1\x3c\x96\x52\x00\x80\xec\xd3\ \x52\x7c\xc3\xb6\x90\xde\xdc\x3d\x67\xe9\x7b\x21\x6b\xd5\x4a\x39\ \x9b\x37\x9b\x7b\x65\xb4\x53\x27\xc2\x03\x22\x06\xea\x39\x76\xee\ \x9a\xeb\xbb\x4c\x67\xb2\x84\x02\x00\x04\x47\xb9\xf8\x9c\x6d\x0b\ \x80\x3e\x67\x79\x47\x26\x0b\x5a\xfd\xfa\xca\x59\xb1\xc2\x4c\x48\ \xbf\xfc\x72\x5a\x2f\x22\x62\x20\xee\x16\x4f\xb5\x33\x9c\xeb\x3b\ \x4c\x63\x58\x3a\x01\x00\x82\xa7\x9e\xf8\x84\x6d\x0b\x41\x99\xf8\ \x83\x4c\x16\xb7\xd2\x52\xe5\x5c\x70\x81\x99\x90\xae\xdb\x3d\xe6\ \xe7\x13\x28\x10\x31\xab\x3d\xce\x4f\xb0\x37\x9c\x9f\xc8\x92\x09\ \x00\x60\x8e\xd2\x44\xba\x4d\x96\x55\x0b\x42\xa1\xb8\x35\x83\x05\ \x2e\x59\x58\xa8\x9c\x59\xb3\xcc\x84\xf4\xe1\xc3\x09\x15\x88\x98\ \x15\x5f\x11\x7b\xd9\x19\xce\xff\x2c\xf6\x63\xa9\x04\x00\x30\x8f\ \x6e\x93\x75\xb5\x85\x0b\x83\x5a\xa8\x43\xb7\xdf\xc5\x2e\x3f\x5f\ \x25\x27\x4d\x0a\x3e\xa0\xef\xda\xa5\x9c\x16\x2d\x08\x17\x88\x58\ \x25\x9f\x12\xdb\xda\x19\xce\x77\x8b\x1d\x59\x22\x01\x00\xc2\xc5\ \xba\x57\x47\xb5\x93\xdc\x73\x99\xbe\x17\xbe\xa1\x43\xd3\x97\x3a\ \x83\xec\xea\xb2\x7a\xb5\x4a\x55\xaf\x4e\xc8\x40\xc4\x8c\xfc\x95\ \x58\x6e\x67\x38\x7f\x41\x3c\x8c\x65\x11\x00\xc0\x0e\xa6\x88\x9f\ \xda\xb6\x58\xf4\x10\x5f\xca\x64\x01\x3c\xfa\x68\xe5\xec\xd8\x11\ \xec\x4e\xfa\x94\x29\x04\x0d\x44\x8c\x53\x8f\xf3\x5f\x24\xd2\xc7\ \x1f\x01\x00\xc0\x22\x86\x89\x1f\xd8\xb6\x68\xb4\x10\x1f\xcf\x64\ \x21\x6c\xdf\x5e\x39\x5b\xb6\x04\x1b\xd2\x7b\xf4\x20\x70\x20\xa2\ \x67\x37\xda\xd9\xe3\xfc\xdf\xaf\x83\x16\xb2\x0c\x02\x00\xd8\x49\ \x97\x84\x85\x0f\x1a\x35\x12\xef\xc9\xe4\xf2\x68\xb3\x66\x2a\xb5\ \x71\x63\x70\x01\x7d\xd3\x26\xe5\xd4\xae\x4d\xf0\x40\xc4\x83\xd7\ \x22\x7b\x7b\x9c\x6b\x57\x25\x78\x1d\x14\x00\xc0\x7a\xf4\x83\x46\ \xaf\xd9\xb6\x88\xd4\x70\x7f\x1a\xf6\xbd\x38\xea\x00\xbd\x6c\x59\ \x70\xe7\xd1\x2f\xbc\x50\x39\x05\x05\x84\x10\x44\x8c\x5a\x8f\xf3\ \x2f\xc4\x05\x2c\x79\x00\x00\xd1\x41\xf7\x4a\x7f\xcc\xb6\x05\x45\ \xff\x34\xbc\x21\x93\x45\xb2\xa4\x24\xdd\xc3\x3c\xa8\x9d\xf4\xb1\ \x63\x09\x22\x88\xf8\x35\xdf\x10\x07\xd9\x19\xce\x3f\x16\x27\xb0\ \xd4\x01\x00\x44\x0f\x2b\x7b\xa5\x6b\x67\x89\x7b\xfd\x2e\x96\x85\ \x85\x2a\x39\x7d\x7a\x30\x01\x5d\x77\x8d\xe9\xd8\x91\x40\x82\x88\ \xff\xf1\x77\x62\x37\x3b\xc3\xf9\xdf\xc4\xa1\x2c\x71\x00\x00\xd1\ \x45\xf7\x4a\xbf\xc6\xc6\x90\x3e\xc6\x7d\x81\xcf\xd7\xa2\x99\x97\ \xa7\x9c\xd1\xa3\x83\x09\xe9\xfa\xac\x3b\xe7\xd1\x11\x51\x7c\x44\ \x6c\x66\x67\x38\x7f\x5f\xec\xcc\xd2\x06\x00\x10\x7d\xf2\xc5\x6d\ \x36\x86\xf4\x63\xc5\x37\x33\x59\x40\x87\x0c\x09\xa6\x57\xba\x3e\ \x46\x93\x9f\x4f\x40\x41\xcc\x61\x7f\x69\x6f\x8f\xf3\x77\xc4\xf6\ \x2c\x69\x00\x00\xf1\x62\x51\x22\x7d\xa9\xc8\xaa\x45\xa7\x8b\xf8\ \x7c\x26\x0b\x69\xb7\x6e\x2a\x15\x44\xaf\xf4\xe3\x8f\x27\xa4\x20\ \xe6\xa8\x37\x8b\x65\x76\x86\xf3\x67\xc5\xc6\x2c\x63\x00\x00\xf1\ \x64\xac\xf8\x91\x6d\x8b\x4f\xb9\xbb\x6b\xe5\x77\x31\x4d\xb5\x6c\ \x99\x6e\x95\x98\xed\xf3\xe8\xba\x07\x3b\x61\x05\x91\x1e\xe7\x76\ \x78\xa7\x58\x83\xe5\x0b\x00\x20\xde\x0c\x14\xff\x6c\xdb\x22\x54\ \x5b\xbc\x3d\x93\x85\xb5\x61\x43\xe5\xac\x5a\x95\xdd\x90\xbe\x6e\ \x9d\x72\xca\xca\x08\x2d\x88\x39\xe2\x72\x31\xcf\xce\x70\xfe\x5d\ \xb1\x88\x65\x0b\x00\x20\x37\xe8\x90\x48\x9f\x67\xb4\x6a\x31\xaa\ \x26\x5e\x9b\xc9\x02\x5b\xab\x96\x72\x96\x2e\xcd\x6e\x48\x9f\x37\ \x2f\x7d\x29\x95\xf0\x82\x18\xeb\x07\x88\xe6\xda\xfb\x00\xd1\xba\ \x04\x0f\x10\x01\x00\xe4\x1c\xba\x57\xfa\xc3\xb6\x2d\x4a\x7a\x17\ \xeb\x92\x4c\x16\xdb\xe2\xe2\x74\xa8\xce\x66\x48\x1f\x36\x8c\x10\ \x83\x18\x53\xdf\x11\x47\xd9\x19\xcc\x3f\x15\xcf\x64\x89\x02\x00\ \xc8\x5d\x8a\xc5\x9b\x6c\xdc\x3d\xca\xa4\x57\x7a\x52\x77\x60\x39\ \xfd\xf4\xec\x05\xf4\x5d\xbb\x94\xa3\xcf\xb9\x13\x66\x10\x63\xe5\ \x4b\x62\x0f\x3b\xc3\xf9\x07\xe2\x71\x2c\x4d\x00\x00\xa0\x7f\x42\ \xdd\x68\x63\x48\x3f\xde\xdd\xe5\xf2\xdd\x2b\x7d\xc2\x84\xec\x85\ \xf4\x95\x2b\x55\xaa\x7a\x75\x42\x0d\x62\x4c\x7c\x5a\x6c\x67\x67\ \x38\xdf\x2b\x76\x65\x49\x02\x00\x80\xfd\x39\x2f\x61\x61\x1b\x46\ \xbd\xcb\xf5\x62\x26\x0b\xf1\x71\xc7\x65\xaf\x57\xfa\xcc\x99\x04\ \x1b\xc4\x18\x78\x9f\xbd\x3d\xce\x5f\x15\x5b\xb2\x0c\x01\x00\xc0\ \x81\x18\x2f\xfe\xd3\xb6\xc5\xab\x85\xf8\x58\x86\xbd\xd2\x9d\x6c\ \xf5\x4a\xe7\x3c\x3a\x62\xa4\xd5\x5d\xa2\x6a\xd9\x19\xce\x1f\x49\ \xa4\xef\x04\x01\x00\x00\x7c\x23\x7d\xc4\x3f\xda\xb6\x88\x35\x14\ \xef\xce\x64\x61\x6e\xdb\x56\x39\x5b\xb6\x54\x39\xa0\xa7\x2a\x2a\ \x94\xd3\xba\x35\x41\x07\x31\x82\x5e\xe5\x76\x89\xb2\x30\x9c\xdf\ \x9a\x48\xdf\x05\x02\x00\x00\x38\x24\xad\xc5\xd7\x6d\x5b\xcc\x6a\ \x88\x37\x64\xf2\xa0\x51\xd3\xa6\xe9\xde\xe6\x59\xe8\x8f\x9e\xa4\ \x3f\x3a\x62\xa4\x5c\x67\xef\x03\x44\x57\x88\x05\x2c\x37\x00\x00\ \xe0\x87\xfa\xe2\xa3\xb6\x2d\x6a\x7a\xa1\xdd\x90\xc9\x42\x5d\xbf\ \xbe\x72\x56\xac\xa8\x7a\x48\x5f\xb0\x40\x39\xba\x5b\x0c\xc1\x07\ \xd1\xfa\x1e\xe7\xb3\xec\x0c\xe6\x5f\x26\xd2\x77\x7e\x00\x00\x00\ \x32\xa2\xa6\x78\xaf\x6d\x0b\x9c\xee\x95\xbe\x24\x93\x45\xbb\xb4\ \x54\x39\x8b\x16\x55\x3d\xa4\x9f\x70\x02\x01\x08\xd1\x62\xdf\x17\ \xcf\xb4\x33\x9c\x7f\x2e\x9e\xc5\xd2\x02\x00\x00\x55\x45\x3f\x33\ \x7d\xbd\x85\x0b\x9d\x9a\x22\xee\xf1\xbb\x78\x57\xab\x56\xf5\x07\ \x8d\x74\x77\x98\x8e\x1d\x09\x42\x88\x3c\x40\xe4\xc7\x8f\xc4\xb1\ \x2c\x29\x00\x00\x90\x4d\xac\x6c\xc3\x38\x40\x7c\x2d\x93\x07\x8d\ \xce\x38\xa3\x6a\x97\x46\x37\x6d\x52\x4e\x9d\x3a\x04\x22\x44\x8b\ \x7c\x41\xec\x66\x6f\x8f\xf3\x2e\x2c\x23\x00\x00\x10\x04\x27\x8b\ \x1f\xdb\xb6\xf8\x75\x10\x9f\xc9\xe4\x41\xa3\xd1\xa3\xab\xb6\x93\ \xbe\x78\xb1\x72\x0a\x0b\x09\x46\x88\x16\xa8\x5b\xb1\x36\xb7\xb7\ \xc7\x79\x0b\x96\x0f\x00\x00\x08\x92\x7e\xe2\x9f\x6c\x5b\x04\xf5\ \xe3\x23\xbf\xca\x64\x61\x1f\x35\xaa\x6a\x0f\x1a\x8d\x1d\x4b\x38\ \x42\x0c\xd9\x7b\xdc\x56\xac\x16\x86\x73\x7a\x9c\x03\x00\x80\x31\ \x8e\x14\xdf\xb3\x6d\x31\x2c\x13\x7f\x98\xc9\x02\xdf\xb3\xa7\x72\ \x76\xed\xca\xfc\x3c\xfa\x51\x47\x11\x92\x10\x43\xf2\xfb\x6e\x0b\ \x56\x0b\xc3\x39\x3d\xce\x01\x00\xc0\x38\x8d\xc5\x67\x6c\x5b\x14\ \x8b\xc4\x8a\x4c\x16\xfa\xa3\x8f\x56\xa9\x9d\x3b\x33\x0b\xe9\x9b\ \x37\x2b\xa7\x5e\x3d\xc2\x12\xa2\x61\xb7\x8a\x85\x76\x86\xf3\xca\ \x04\x3d\xce\x01\x00\x20\x24\x4a\xc5\x9f\xd9\xb6\x38\xea\x36\x8c\ \x8b\x32\x79\xd0\xa8\x4d\x9b\xcc\x5f\x1d\x5d\xb6\x4c\xa5\x74\x87\ \x18\x42\x13\xa2\x11\x17\xb9\x73\xdd\xb2\xfa\xa3\x2f\xd2\xd3\xe3\ \x1c\x00\x00\x42\x47\xef\x12\x7d\xdb\xc2\x1d\x2c\x35\x39\x83\x36\ \x8c\xfa\xd5\xd1\xd4\xfa\xf5\x99\x85\xf4\xe9\xd3\x09\x4e\x88\x01\ \xbb\x57\x9c\x69\xe7\xae\xf9\xa7\xe2\x54\x96\x04\x00\x00\xb0\x85\ \x3c\x71\x9d\x8d\x21\x7d\x8c\xf8\x6e\x26\xaf\x8e\xae\x5a\x95\x59\ \x48\x1f\x30\x80\x10\x85\x18\x90\xbb\xc5\x89\x76\x86\xf3\x0f\xc5\ \x13\x58\x0a\x00\x00\xc0\x46\xce\x4e\xa4\x5f\xca\xb3\x6a\xf1\xec\ \x25\xbe\xe2\x37\x0c\xd4\xaa\xb5\xef\xd8\x8a\xef\xfe\xe8\xfa\x1c\ \x7b\xf3\xe6\x84\x29\xc4\x2c\xfb\xa6\x38\xd8\xce\x70\xfe\x7b\xb1\ \x07\xe5\x1f\x00\x00\x6c\xe6\x38\xf1\x03\xdb\x16\xd1\x66\xe2\x23\ \x7e\x43\x41\x49\x89\x72\x2e\xb8\xc0\x77\x48\x4f\xae\x5d\xab\x9c\ \xb2\x32\x42\x15\x62\x96\xd4\xef\x1c\xb4\xb7\x33\x9c\xff\x4e\x6c\ \x4a\xd9\x07\x00\x80\x28\xa0\x5f\xcc\xdb\x6b\xdb\x62\x5a\x47\xfc\ \xa9\xdf\x33\xe9\xfa\xe2\xe7\xbc\x79\xfe\x8f\xba\x2c\x58\xa0\x1c\ \xfd\x62\x29\xe1\x0a\xb1\x4a\xde\xef\xbe\x73\x60\x61\x38\xd7\x3d\ \xce\xeb\x52\xee\x01\x00\x20\x4a\xb4\x15\xdf\xb2\x6d\x51\x2d\x75\ \xfb\x26\xfb\x09\x08\x49\x1d\xb4\xa7\x4e\xf5\x1f\xd2\xf5\x4b\xa5\ \x04\x2c\xc4\x8c\xbd\x57\x6c\x60\x67\x38\xbf\x47\x2c\xa3\xcc\x03\ \x00\x40\x14\x69\x24\x3e\x65\xdb\xe2\xaa\xfb\x26\x5f\xe1\x37\x2c\ \xe4\xe5\x29\x67\xc2\x04\xff\x8f\x18\x75\xea\x44\xd0\x42\xcc\xc0\ \x1f\x8b\xb5\xec\x0c\xe7\xdf\x13\x8b\x28\xef\x00\x00\x10\x65\xf4\ \x4b\x7a\x37\xd9\xb6\xc8\x66\xd4\x2b\x5d\x87\xf4\xf1\xe3\xfd\x5d\ \x1a\xdd\xb4\x49\x39\x75\xeb\x12\xb8\x10\x7d\xf8\x6d\xf7\xd1\x31\ \x0b\xc3\xf9\x12\x4a\x3a\x00\x00\xc4\x05\xdd\x86\x71\x93\x85\x8b\ \xad\x9a\xe1\xf6\x55\xf6\x15\x20\x86\x0f\xe7\x11\x23\xc4\x80\x5c\ \x69\xe7\x03\x44\x9f\x89\x33\x28\xe5\x00\x00\x10\x47\xf4\x0b\x7b\ \x5f\xd8\x16\xd2\x8f\xcf\xa0\x57\x7a\x6a\xe0\xc0\xf4\x11\x16\xaf\ \x21\x7d\xda\x34\xc2\x17\xe2\x21\x3c\xc7\xce\x5d\xf3\x7f\x8a\x63\ \x29\xdf\x00\x00\x10\x67\x26\xb8\x0b\x9e\x55\x8b\x70\x3f\xf1\x35\ \xbf\x81\x62\xd0\x20\x7f\x21\xbd\x77\x6f\x42\x18\xe2\x37\xbc\x0e\ \x3a\xcd\xce\x70\xfe\x27\xb1\x37\x65\x1b\x00\x00\x72\x81\xbe\xee\ \xc2\x67\xd5\x62\xdc\x41\x7c\xce\x6f\xb8\xe8\xd1\x43\x39\xbb\x76\ \x79\x0b\xe8\xf2\xff\x2f\xd5\xa6\x0d\x81\x0c\x71\x3f\xf5\xaf\x57\ \xa3\xec\x0c\xe7\xbb\xc5\x8e\x94\x6b\x00\x00\xc8\x25\x8e\x14\xdf\ \xb3\x6d\x51\x3e\x42\x7c\xd4\x6f\xc8\xe8\xdc\x59\x39\x3b\x76\x78\ \xbb\x34\xba\x61\x83\x4a\xd5\xa9\x43\x30\x43\x14\x5f\x17\xfb\xdb\ \x19\xce\x9f\x17\x9b\x50\xa6\x01\x00\x20\x17\xd1\x0b\xe0\xb3\xb6\ \x2d\xce\x75\xc5\xbb\xfc\x86\x8d\x76\xed\x94\xb3\x6d\x9b\xb7\x9d\ \xf4\xc5\x8b\x55\xb2\xb0\x90\x80\x86\x39\xed\x8b\x62\x37\x3b\xc3\ \xf9\x43\x62\x1d\xca\x33\x00\x00\xe4\x32\xfa\xb1\x8f\x5f\xd8\xb6\ \x48\xd7\xc8\xe0\x41\xa3\x7d\xc7\x57\xb6\x6e\xf5\x16\xd2\x27\x4f\ \x26\xa4\x61\xce\xfa\xb4\xd8\xc6\xce\x70\x7e\x4b\x22\xdd\x1a\x16\ \x00\x00\x20\xe7\xd1\x0b\xe2\xcd\xb6\x2d\xd6\xd5\xc4\xff\xf1\x1b\ \x3e\x9a\x35\x53\xce\xe6\xcd\xde\x42\xfa\x80\x01\x84\x35\xcc\x39\ \x1f\x13\x9b\xd9\x19\xce\xaf\x13\x0b\x29\xc7\x00\x00\x00\xff\x45\ \xf7\x4a\x5f\x65\xdb\xa2\xad\xfb\x31\x5f\xe2\x37\x84\x34\x69\xa2\ \x9c\xf5\xeb\x3d\x5d\x1a\x75\xb8\x34\x8a\x39\xe4\x1d\x62\x6d\xfb\ \x82\xf9\x97\x09\x1e\x20\x02\x00\x00\x38\x28\x56\xf6\x4a\x5f\x28\ \x26\xfd\x84\x91\xf2\x72\xe5\xac\x5b\x77\xe8\x4b\xa3\x1b\x37\x2a\ \x87\x4b\xa3\x98\x03\xfe\x58\xac\x69\x5f\x38\xff\x5c\x9c\x47\xd9\ \x05\x00\x00\x38\x34\x27\x8b\x1f\xdb\x16\xd2\x27\x89\x7b\x7c\x86\ \xf4\x94\x87\x9d\xf4\xe4\xc2\x85\xca\x29\x28\x20\xc4\x61\x6c\xd5\ \xf7\x39\x4a\xec\x0b\xe7\x1f\xbb\xb5\x06\x00\x00\x00\x3c\xd2\x53\ \xfc\xbd\x6d\x21\x7d\x80\xf8\x86\x9f\x70\x52\xaf\x9e\x72\x56\xaf\ \x3e\xf4\x71\x97\x33\xcf\x24\xc8\x61\x2c\xdd\x2e\x16\xd8\x17\xce\ \xff\xe8\xd6\x18\x00\x00\x00\xf0\x49\x4b\xf1\x35\xdb\x42\xfa\x51\ \xe2\x4b\x7e\xba\xbb\x48\x48\x4f\x79\x09\xe9\x03\x07\x12\xe8\x30\ \x56\xae\x76\xef\x71\x58\x36\x87\xdf\x14\x5b\x53\x5e\x01\x00\x00\ \x32\xa7\x9e\xf8\x88\x6d\x21\xbd\xad\xf8\xac\x9f\xb0\x52\xb7\xae\ \x72\x56\xad\x3a\xf4\xa5\xd1\xb6\x6d\x09\x76\x18\x0b\xcf\xb1\xb3\ \x53\xcb\x73\x62\x63\xca\x2a\x00\x00\x40\xd5\xd1\x6d\x18\x6f\xb1\ \x6d\xb1\x3f\xdc\xef\xab\xa3\xfa\x32\xe8\x21\x42\x3a\x97\x46\x31\ \xea\x26\xed\x0d\xe7\xf7\x26\xd2\xef\x2e\x00\x00\x00\x40\x96\x28\ \x10\x2b\x6d\x5b\xf4\x1b\x8a\xbf\xf4\x13\x60\x6a\xd5\x52\xce\xf2\ \xe5\x07\xdf\x49\x5f\xba\x54\x39\x45\x45\x84\x3d\x8c\x9c\x7b\xc5\ \x33\xed\x0c\xe7\x37\x89\xd5\x28\xa3\x00\x00\x00\xc1\xb0\xca\xb6\ \xc5\xbf\x8e\xf8\x33\x3f\x3b\x8c\x35\x6b\x1e\x3a\xa4\x4f\x9b\x46\ \xe0\xc3\x48\xf9\xbe\x38\xd9\xce\x70\x7e\xa5\xfb\x05\x1f\x00\x00\ \x00\x02\x64\xaa\xf8\x2f\x9b\x42\x40\xa9\x78\x93\x9f\x40\x23\x21\ \x3d\x79\xc9\x25\x07\x3f\xee\x32\x78\x30\xc1\x0f\x23\xe1\x6e\x71\ \xac\x9d\xe1\x7c\x25\xe5\x12\x00\x00\xc0\x1c\x23\xc4\xbf\xdb\x14\ \x06\x8a\xc4\xab\x7c\x86\x74\xe7\x60\x21\x9d\x4b\xa3\x18\x01\xdf\ \x11\x87\xd9\x17\xcc\xf5\x63\x67\xe7\x50\x26\x01\x00\x00\xcc\x73\ \x8c\xf8\x07\x9b\x82\x81\xee\xf7\xbc\xc9\xcf\x71\x97\xb2\x32\xe5\ \x2c\x5b\x76\xf0\x4b\xa3\xba\x03\x0c\x41\x10\x2d\xf4\x75\xb1\xaf\ \x7d\xe1\x5c\xff\xba\x36\x99\xf2\x08\x00\x00\x10\x1e\xcd\xc5\x57\ \x2d\x0b\x08\xfb\xba\x58\x78\x0e\x3a\x35\x6a\xa8\xd4\x92\x25\x07\ \xbd\x34\x9a\xaa\x56\x8d\x40\x88\x56\xf9\xbc\xd8\xce\xbe\x70\xfe\ \x81\x38\x98\xb2\x08\x00\x00\x10\x3e\xba\xaf\xf1\x73\xb6\x85\xf4\ \x39\x6e\xcb\x39\xcf\xc7\x5d\x0e\x76\x71\x74\xf2\x64\x42\x21\x5a\ \x15\xce\xdb\xdb\x17\xce\xff\x2c\xf6\xa5\x1c\x02\x00\x00\xd8\x43\ \x2d\xf1\x3e\xdb\x42\xfa\xa9\x6e\x77\x0b\x4f\xc1\xa7\xac\xec\xe0\ \x17\x47\x87\x0c\x21\x1c\x62\xe8\x3e\x2d\xb6\xb0\x2f\x9c\xcb\x77\ \xe1\x44\x67\xca\x20\x00\x00\x80\x7d\xe8\x56\x6a\xff\x63\x5b\x48\ \x1f\x2e\xbe\x9b\x85\x9d\xf4\x54\x45\x85\x72\xda\xb5\x23\x24\x62\ \x68\x3e\x28\x36\xb2\x2f\x9c\xff\x4e\x6c\x42\xf9\x03\x00\x00\xb0\ \x97\xbc\x84\x85\xbd\xd2\xfb\x89\x6f\x7a\x0d\x42\xf5\xea\x29\x67\ \xed\xda\x03\xef\xa2\xaf\x5f\xcf\x4b\xa3\x18\x8a\xbf\x76\x1f\xe6\ \xb2\x6c\x6e\x3d\x26\xd6\xa5\xec\x01\x00\x00\x44\x83\xf9\x89\x74\ \xab\x35\x6b\xc2\x44\x2f\xb7\xeb\x85\xa7\x40\xa4\x3b\xb7\xac\x59\ \x73\xe0\x90\xae\xbb\xbe\x70\x69\x14\x0d\x7a\xbf\xd8\xc0\xbe\x70\ \x7e\xb7\x58\x4a\xa9\x03\x00\x00\x88\x16\x13\xc4\x8f\x6d\x0a\x15\ \x5d\xc5\x97\x3c\x86\xa2\xd4\xc1\x76\xd2\xe7\xcc\x51\x4e\x5e\x1e\ \xe1\x11\x03\xf7\xe7\x62\x6d\xfb\xc2\xf9\xcd\x62\x35\x4a\x1c\x00\ \x00\x40\x34\x19\x9a\x48\xb7\x5e\xb3\x26\x5c\xb4\x73\xbb\x60\x78\ \x0a\x48\x8d\x1a\xa9\x94\x3e\xd6\x72\xa0\x90\x3e\x7a\x34\x01\x12\ \x03\xf5\x2e\xb1\x96\x7d\xe1\xfc\xdb\x89\xf4\x7d\x13\x00\x00\x00\ \x88\x30\x7d\xc4\xbf\xd8\x14\x32\x3a\x88\xbf\xf5\x1a\x94\xca\xcb\ \x55\x6a\xc3\x86\xaf\x07\xf4\xca\x4a\xe5\xf4\xe8\x41\x90\xc4\x40\ \xbc\xdb\xce\x9d\xf3\xcb\x13\xe9\x7b\x26\x00\x00\x00\x10\x03\x3a\ \x8a\x7b\x6c\x0a\x1b\x87\x8b\x8f\x7b\x0d\x4c\x4d\x9b\x2a\x67\xf3\ \xe6\xaf\x77\x76\xd9\xb1\x43\x39\xcd\x9a\x11\x28\x31\xab\xde\x2a\ \xd6\xb0\x2b\x98\x7f\x29\x9e\x4b\x19\x03\x00\x00\x88\x1f\xcd\xc4\ \xd7\x6c\x0a\xe9\x8d\xdc\xee\x18\x9e\x82\xd3\xe1\x87\x1f\x30\xa4\ \xef\x3b\xa7\xae\xdb\x33\x12\x2c\x31\x0b\xde\x2c\x96\xd8\x15\xce\ \x3f\x13\xa7\x52\xbe\x00\x00\x00\xe2\x4b\x53\xf1\x05\x9b\x42\x7a\ \xb9\xdb\x5f\xda\x53\x80\x6a\xd1\x42\x39\x5b\xb7\x7e\x3d\xa4\x2f\ \x5a\xa4\x92\x85\x85\x04\x4c\x8c\xdb\xce\xb9\x0e\xe7\x67\x52\xb6\ \x00\x00\x00\xe2\x4f\x99\xf8\x4b\x9b\x42\x7a\x2d\xf7\x42\x9e\xa7\ \x20\xd5\xaa\x95\x72\xb6\x6d\xfb\x7a\x48\x9f\x3a\x95\x90\x89\x19\ \x7b\x9d\x58\x64\x57\x38\xff\xa7\x78\x02\xe5\x0a\x00\x00\x20\x77\ \x28\x16\x7f\x64\x53\x48\xd7\x3b\x97\xb7\x78\x0d\x54\x9d\x3b\x2b\ \x67\xd7\xae\xaf\x87\xf4\xfe\xfd\x09\x9b\xe8\xdb\xff\xb1\x2f\x9c\ \xeb\xce\x4b\x83\x28\x53\x00\x00\x00\xb9\x87\xee\xa3\x7c\x93\x4d\ \x21\xbd\xd4\x3d\x66\xe0\x29\x58\x75\xeb\xa6\x52\x15\x15\x5f\xbd\ \x34\xaa\xff\xfb\xf6\xed\x09\x9d\xe8\xd9\xeb\xed\x0b\xe7\x7f\x15\ \xfb\x53\x9e\x00\x00\x00\x72\x17\xdd\xb2\x6d\xb3\x4d\x21\x5d\x87\ \xa5\x6b\xbd\x06\xac\x01\x03\xbe\xbe\x8b\xae\x2f\x92\x36\x6c\x48\ \xf8\xc4\x43\xfa\x6d\xb1\xc0\xae\x70\xbe\x37\x91\xee\xb8\x04\x00\ \x00\x00\x90\x58\x92\x48\xb7\x72\xb3\x22\xa8\xe8\xd0\x74\xa5\xd7\ \xa0\x35\x6a\xd4\xd7\xdb\x2f\xae\x58\xa1\x9c\x92\x12\x42\x28\x46\ \x69\xe7\xfc\x2d\xb1\x05\xa5\x08\x00\x00\x00\xf6\x67\x5a\x22\xdd\ \x35\xc2\x9a\x90\x7e\x85\xd7\xc0\x35\x61\xc2\xd7\x77\xd2\xcf\x3a\ \x4b\x39\x79\x79\x84\x51\xfc\x9a\xdf\xb1\x2f\x9c\xeb\xce\x4a\x4d\ \x28\x41\x00\x00\x00\x70\x20\x4e\x12\x3f\xb6\x29\xa4\x57\x7a\x09\ \x5d\x3a\x88\x4f\x99\xf2\xf5\x90\x3e\x66\x0c\x81\x14\xbf\xe2\x77\ \xed\x0b\xe7\x4f\x8a\xf5\x28\x3d\x00\x00\x00\x70\x30\x86\x8a\x1f\ \xda\x14\xd2\x2b\xbc\x84\xaf\xfc\x7c\xe5\xcc\x9e\xfd\xd5\x80\x5e\ \x59\xa9\x9c\x63\x8e\x21\x98\xe2\x3e\x6f\xb0\x2f\x9c\x3f\x22\xd6\ \xa6\xe4\x00\x00\x00\x80\x17\x06\x8a\x7f\xb3\x25\xc8\x14\xb9\xad\ \xf0\x0e\x19\xc2\x8a\x8a\x94\xb3\x70\xe1\x57\x43\xfa\x8e\x1d\xca\ \x69\xde\x9c\x80\x9a\xe3\xfe\xc8\xbe\x17\x42\x1f\x12\x6b\x52\x6a\ \x00\x00\x00\xc0\x0f\xba\x9b\x44\x32\x61\xd1\x4e\xfa\x4e\x2f\x61\ \xac\x7a\x75\xe5\x2c\x5d\xfa\xd5\x4b\xa3\xeb\xd7\xab\x54\x9d\x3a\ \x04\xd5\x1c\xf5\x46\xb1\x9a\x5d\xe1\xfc\x8e\x44\xfa\x2d\x02\x00\ \x00\x00\x00\xdf\xb4\x13\xf7\xd8\x14\xd2\x77\x78\x08\x64\xc9\xb2\ \x32\xe5\xe8\x4e\x2e\xfb\x87\xf4\xc5\x8b\x55\xb2\xb0\x90\xc0\x9a\ \x63\xea\xbe\xfa\xd5\xed\x0a\xe7\xb7\x27\xd2\x6f\x10\x00\x00\x00\ \x00\x64\x4c\x5b\x71\xb7\x2d\x01\xa7\xd0\xed\x5f\x7d\xc8\x70\x56\ \xb7\xae\x72\x2e\xbb\xec\xab\xc7\x5d\xce\x3c\x93\xd0\x9a\x43\xde\ \x29\x96\xd9\x15\xce\xe5\x1f\x89\x9d\x73\x00\x00\x00\xc8\x0e\xcd\ \xc4\x37\x12\x89\x88\xb5\x60\x6c\xd2\x24\xfd\x70\xd1\xfe\x21\xfd\ \xd8\x63\x09\xaf\x39\xe0\x5d\x62\x4d\xbb\xc2\xf9\x8f\x13\xec\x9c\ \x03\x00\x00\x40\x96\xd1\xad\xe0\x7e\x63\x4b\xe0\xc9\x13\xd7\x7b\ \x09\x6b\xed\xda\xa9\xd4\xce\x9d\xff\x0d\xe8\xbb\x76\xed\xfb\x7f\ \x23\xc4\x72\x21\xd4\xa0\xd7\x8b\x05\x94\x10\x00\x00\x00\x08\x82\ \x3a\xe2\x63\x91\x0b\xe9\x5d\xba\x28\xa7\xa2\xe2\xbf\x21\xfd\xf2\ \xcb\x55\xb2\x51\x23\xc2\x6c\x0c\xbd\x5d\xac\x61\x57\x38\xaf\x14\ \xf3\x28\x1d\x00\x00\x00\x10\x24\xb5\x6d\x0a\xe9\xf9\x1e\x2f\x8e\ \x3a\xc3\x86\x7d\xf5\xa8\x8b\xbe\x44\x5a\x52\x42\xa8\x8d\x91\xf7\ \x8a\xb5\xed\x0a\xe7\xd7\x8a\xf9\x94\x0c\x00\x00\x00\x30\x41\xa9\ \x78\x9f\x4d\x21\xdd\xd3\x8b\xa3\x13\x27\x7e\x35\xa4\x9f\x7b\x6e\ \xfa\x81\x23\xc2\x6d\xe4\x7d\x40\xac\x6b\x57\x38\xbf\x32\xc1\xce\ \x39\x00\x00\x00\x18\x46\x5f\x78\xbb\xcd\xa6\x90\xbe\xeb\x50\x41\ \x2e\x2f\xef\xeb\xaf\x8d\x9e\x74\x12\x01\x37\xe2\x3e\x28\xd6\xb7\ \x2b\x9c\xaf\xa1\x3c\x00\x00\x00\x40\x58\xe8\x8b\x6f\xdf\xb1\x25\ \x18\xe9\xee\x2e\x57\x7a\x79\x6d\x74\xd1\xa2\xaf\x86\xf4\xbe\x7d\ \x09\xba\x11\xf5\x49\xb1\xb1\x5d\xe1\x7c\x09\x65\x01\x00\x00\x00\ \xc2\x46\xff\x8c\xbf\xcb\xa6\x90\x7e\xd5\xa1\x82\x5d\x69\xa9\x4a\ \xad\x5c\xf9\xdf\x80\xbe\x63\x87\x72\x5a\xb4\x20\xf0\x46\xcc\xe7\ \xc5\x16\x84\x73\x00\x00\x00\x80\x03\xa2\x2f\xc2\x5d\x61\x4b\x50\ \x2a\x16\x6f\x39\x54\xc0\x6b\xd0\x40\x39\x1b\x37\xfe\xf7\xa5\xd1\ \x0d\x1b\x94\x53\xa7\x0e\xc1\x37\x22\xbe\x26\x76\xb6\x2b\x9c\xaf\ \xa6\x0c\x00\x00\x00\x80\x6d\xe8\x9d\xf4\x75\xb6\x04\x26\xdd\x07\ \xfb\xc7\x87\x0a\x7a\xcd\x9b\xab\xff\x6b\xef\xfe\x63\xed\xae\xeb\ \x3b\x8e\x7f\x6f\x7f\xd1\xd6\xda\x9f\x16\x1a\x1b\x68\x4b\xaf\xa6\ \x19\xb8\x44\xaa\x2d\x6d\x88\x73\xcd\xba\x46\x94\x15\x9d\x54\xc6\ \xa6\x80\xa3\xb9\x13\x7f\xc4\x94\x8b\xd8\xc9\xc0\x16\x2a\x6b\xb5\ \x2b\xed\xed\x36\xdc\x32\xe6\xb6\x66\x2c\xe0\x64\xd9\x96\x31\x41\ \x13\xc1\x58\x7f\x21\x6e\xc8\x48\x51\x41\x84\xde\x73\x8d\x1a\xa3\ \x9b\x66\x2a\xb4\x5f\xdf\xdf\x9d\xe3\x4e\x5b\xee\xbd\xed\xed\xfd\ \xf1\xf9\x9c\x73\x1e\x8f\xe4\xf5\x6f\xd3\x9c\xf3\x3d\xc9\xb3\xa7\ \xdf\xf3\xf9\xd6\xf6\xec\x69\x7e\x93\xfe\xfe\xf7\x97\x03\xd3\xa6\ \x09\xe0\xcc\xf7\xcd\xd8\xab\xf3\x8a\xf3\x9d\x3e\xfe\x00\x40\xce\ \xae\xcf\x25\x9c\xa6\xc7\xee\x19\xe9\x19\xe9\x57\x5e\x29\x82\x33\ \x8f\xf3\x57\xf9\x41\x28\x00\xc0\x88\xf5\x16\xad\xf4\x4d\xfa\xba\ \x75\xc7\xff\x68\x74\xfd\x7a\x31\x9c\xe1\x9e\x8e\xbd\x26\xaf\x38\ \xbf\xd5\x47\x1d\x00\x68\x25\x37\xe5\x12\x52\xd5\xc3\x6b\xee\x1f\ \xc9\x19\xe9\xfb\xf7\x97\xb5\xf3\xcf\x17\xc5\x19\xed\x70\xec\xcd\ \x79\xc5\x79\xf5\xc3\x68\xe7\x9c\x03\x00\x2d\x67\x4b\x2e\x41\x35\ \x3b\x76\xdf\x30\x01\xd8\x5f\x3d\xb0\xe8\x1d\xef\x68\x46\xfa\xae\ \x5d\x65\x6d\xe1\x42\x71\x9c\x49\x9c\x6f\xca\x2b\xce\x6f\xf3\xd1\ \x06\x00\x5a\xd9\x7b\x63\x47\x73\x89\xf4\x4f\x9e\xec\x8c\xf4\xf7\ \xbd\xaf\x19\xe9\xdb\xb7\x97\xb5\x59\xb3\x44\x72\xe2\x5d\x9d\x57\ \x9c\xff\xb1\x8f\x34\x00\xd0\x0e\xfe\x20\x97\x48\x5f\xd0\x78\x2c\ \xfc\x90\x41\x38\x67\x4e\x59\xdb\xb1\xa3\x19\xe9\xef\x7e\x77\xfd\ \xdb\x75\xa1\x9c\x64\x5b\xdc\xd6\x02\x00\x30\x6e\x7a\x72\x89\xf4\ \x85\xb1\x07\x87\x89\xc2\x81\xee\xee\xb2\xb6\x77\x6f\x33\xd2\x37\ \x6e\x14\xcb\x09\x76\x63\x5e\x71\xde\x27\xce\x01\x80\x76\x74\x5d\ \x2e\xc1\x75\x4e\xec\xcb\xc3\x05\xe2\xaa\x55\xc7\x9f\xec\xb2\x66\ \x8d\x68\x9e\xc0\xed\x8f\x4d\xca\x27\xce\x3f\x56\xd4\x1f\xc6\x05\ \x00\xd0\x96\x36\xc7\x8e\xe4\x10\x5e\x4b\x1a\x8f\x8b\x1f\x32\x14\ \x2f\xbd\xb4\x19\xe8\xb7\xdf\x5e\xd6\x96\x2e\x15\xcf\x13\xb0\x3b\ \x63\x93\xf3\x89\xf3\x3f\x2b\x7c\x73\x0e\x00\x74\x80\x6b\x72\x89\ \xf4\x15\xb1\xc7\x87\x8a\xc5\xae\xae\xb2\xbf\xa7\xa7\x19\xe9\x1f\ \xfa\x50\xfd\x1e\x75\x11\x3d\x6e\xfb\xe7\xc6\x03\xa6\x32\x89\xf3\ \x3b\xc4\x39\x00\xd0\x49\x7e\x3f\x97\x48\x5f\xd9\x78\x42\xe5\xa0\ \xf7\xa3\x4f\x9f\x5e\xd6\x3e\xf0\x81\x66\xa4\x5f\x77\x5d\x59\x9b\ \x32\x45\x4c\x8f\xc3\x1e\x8a\xcd\x73\x5b\x0b\x00\x40\x52\xef\x2c\ \x32\xf9\xe1\xe8\xeb\x62\xcf\x0e\x15\x8f\x0b\x16\x94\x03\x3b\x77\ \x36\x23\x7d\xd3\x26\x41\x3d\xc6\x7b\x34\xb6\x34\x9f\x38\xbf\x27\ \x36\xc5\xc7\x13\x00\xe8\x54\x6f\x2f\x32\xf9\x26\xfd\x8d\x8d\x87\ \xe2\x0c\x1a\x91\xcb\x97\x1f\x77\xb2\x4b\xff\xda\xb5\xc2\x7a\x8c\ \x76\xa8\x71\xab\x51\x26\x71\x7e\x77\x6c\xb2\x8f\x25\x00\xd0\xe9\ \xde\x55\x64\xf2\x4d\xfa\x55\xc3\xc5\x64\x75\x92\x4b\x23\xd0\x07\ \xaa\x58\xf7\xa3\xd1\x51\xef\xe9\xd8\xda\x7c\xe2\xfc\xbe\xd8\x34\ \x1f\x47\x00\x80\xba\xf7\x66\x12\x69\x65\xef\x30\x41\xd9\x5f\xdd\ \xde\xe2\x47\xa3\x63\xb2\xea\x7f\x2b\x7e\x2b\x9f\x38\x7f\x28\x36\ \xd3\xc7\x10\x00\xe0\x78\xd9\x9c\x93\xbe\x6d\xa8\x40\xaf\x9e\x2a\ \xfa\x9e\xf7\x34\xbf\x49\xef\xed\xf5\xa3\xd1\xd3\xdc\x95\xf9\xc4\ \xf9\xc3\xb1\x39\x3e\x7e\x00\x00\x83\xdb\x99\x43\xb4\x55\xe7\x70\ \xff\xd5\x50\x71\x39\x73\x66\x59\xbb\xf9\xe6\x66\xa4\x5f\x7e\xb9\ \xe0\x1e\xe1\xb6\xe7\x13\xe7\xdf\x8c\xbd\xd4\xc7\x0e\x00\x60\x78\ \x3b\x72\x88\xb7\xa9\xb1\x03\x43\x45\xe6\xe2\xc5\xe5\x40\xf5\xf0\ \xa2\x5f\xde\xee\x52\x3d\x79\x54\x78\x9f\xd2\xf6\xc4\xba\xf2\x88\ \xf3\xa7\x62\x8b\x7d\xdc\x00\x00\x4e\x4d\x16\xdf\xa4\xcf\x88\xfd\ \xd3\x50\xb1\xb9\x72\x65\x33\xd0\xf7\xed\x2b\x07\xba\xbb\x05\xf8\ \x49\x76\xa0\xf1\x0f\x9f\x0c\xde\xdb\xf8\xeb\x14\xcb\x7d\xcc\x00\ \x00\x4e\x5d\xf5\x04\xc7\x3f\xcd\x21\xd2\x67\xc7\x1e\x18\x2a\x3a\ \x2f\xbb\xac\x79\xab\xcb\x6d\xb7\x95\x03\x73\xe7\x0a\xf1\x21\xf6\ \x2f\x8d\x7f\xf0\x64\xf0\x9e\x7e\x3f\x76\xbe\x8f\x18\x00\xc0\xe9\ \x45\xfa\x1d\x39\x44\xfa\x59\xb1\x2f\x0c\x16\x9e\x93\x27\x97\xb5\ \x2d\x5b\x9a\xdf\xa4\xf7\xf6\x96\xfd\x7e\x34\xfa\x82\x7d\x36\x36\ \x3f\x8f\x38\xff\xef\xd8\xab\x7d\xb4\x00\x00\x4e\x5f\xf5\xd0\x98\ \xbb\x73\x88\xf4\x97\xc5\x1e\x1f\x2c\x40\xe7\xcf\x2f\x6b\xbb\x76\ \x35\x23\xbd\xfa\x56\x5d\x94\xff\xff\x1e\x8b\x2d\xcf\x23\xce\x7f\ \x1a\xfb\x4d\x1f\x29\x00\x80\xd1\x9b\x1a\xbb\x37\x87\x48\x5f\x1d\ \xfb\xd6\x60\x21\xfa\xf2\x97\x97\xb5\xbe\xbe\x66\xa4\x5f\x78\xa1\ \x38\x6f\x3c\x88\x68\x55\x1e\x71\xfe\x5c\xec\x8d\x3e\x4a\x00\x00\ \x63\xa7\xfa\x26\xfd\x1f\x72\x88\xf4\xf5\xb1\x67\x07\x0b\xd2\x0d\ \x1b\x9a\x81\x5e\x9d\xf0\x72\xf6\xd9\x1d\xff\x20\xa2\x37\xe4\x13\ \xe7\x6f\xf2\x11\x02\x00\x18\x7b\xd3\x63\x0f\xe4\x10\xe9\xd7\x0e\ \x16\xa5\x5d\x5d\x65\x6d\xf3\xe6\x66\xa4\x57\x67\xa5\xcf\x98\xd1\ \xb1\x81\x7e\x43\x1e\x71\x7e\x34\x76\xad\x8f\x0e\x00\xc0\xf8\x99\ \x51\xd4\x1f\xcb\x9e\x3c\xfe\x6e\x1e\x2c\x4c\x23\xc8\x07\xb6\x6d\ \x6b\x46\x7a\x4f\x4f\x3d\xdc\x3b\x2c\xce\xf7\xe5\x73\xd6\xf9\x75\ \x3e\x32\x00\x00\xe3\xaf\x7a\x2c\xfb\x23\xa9\xe3\x6f\x52\xec\x2f\ \x86\x78\x88\x51\x6d\xcf\x9e\x66\xa4\xaf\x5b\xd7\x51\x71\xfe\xf1\ \x7c\xce\x3a\xdf\xed\xa3\x02\x00\x30\x71\xce\x8c\x3d\x91\x3a\x02\ \xcf\x18\xea\x41\x46\x17\x5d\xd4\x3c\x1f\x7d\xef\xde\xb2\xb6\x64\ \x49\x47\xc4\xf9\xc1\xd8\xbc\x3c\xe2\xfc\x6f\x8b\xfa\x31\x9d\x00\ \x00\x4c\xa0\x73\x8b\xfa\x13\x21\x93\xc6\xe0\xbc\xc6\x39\xdf\x2f\ \x08\xd6\x2b\xae\x68\x7e\x8b\x7e\xeb\xad\x65\xed\x45\x2f\x6a\xeb\ \x38\x3f\x14\xeb\xce\x23\xce\xef\x2f\xea\x27\xff\x00\x00\x90\xc0\ \x2b\x62\x3f\x48\x1d\x85\xe7\xc4\xfe\xf3\x84\x60\xad\x1e\x58\x34\ \x70\xc3\x0d\xcd\x6f\xd2\xab\x1f\x90\xb6\x69\x9c\x3f\x13\x7b\x4d\ \x1e\x71\xfe\xd5\xd8\x6c\x1f\x0b\x00\x80\xb4\xd6\x15\xf5\x87\xd0\ \x24\x8d\xc3\x55\x83\x9d\x91\xbe\x70\x61\x59\xfb\xc8\x47\x9a\xdf\ \xa4\xaf\x5e\xdd\x96\x81\xbe\x39\x8f\x38\x3f\x1c\x3b\xc7\xc7\x01\ \x00\x20\x0f\xaf\x8f\xfd\x3c\x75\x24\xfe\x46\xe3\xdb\xe4\xe3\x02\ \xf6\xbc\xf3\xca\xda\xfe\xfd\xf5\x40\xaf\x7e\x3c\xba\x68\x51\x5b\ \xc5\xf9\xf6\x3c\xe2\xfc\xbb\xb1\x6e\x1f\x03\x00\x80\xbc\x5c\x11\ \x3b\x92\x3a\x16\x7f\xef\x64\xf7\xa3\x57\xb7\xbd\x4c\x99\xd2\x16\ \x71\xfe\xb1\xc6\x69\x36\x89\x5f\xf3\x1f\xc7\x56\xb9\xfc\x01\x00\ \xf2\x74\x6d\x91\xc1\x37\xba\x7f\x34\xc8\xfd\xe8\xb5\xad\x5b\x9b\ \x91\xbe\x71\x63\xcb\xc7\xf9\xa7\x62\xb3\xf2\x78\x4a\xe8\x1b\x5c\ \xf6\x00\x00\x79\xdb\x9e\x3a\xd0\xab\x87\xf4\xec\x3f\x31\x6a\xcf\ \x3c\xb3\xec\xdf\xbd\xbb\x1e\xe8\x7d\x7d\x65\x6d\xe9\xd2\x96\x8d\ \xf3\x47\x62\x8b\xf2\xb8\xb5\x65\xb3\xcb\x1d\x00\xa0\x35\xdc\x5e\ \x64\x78\x46\x7a\xff\xda\xb5\xcd\x53\x5d\x6e\xba\xa9\xac\x4d\x9d\ \xda\x72\x71\xfe\x64\xec\x57\xf3\x88\xf3\xed\x2e\x73\x00\x80\xd6\ \x31\x39\xf6\x89\xd4\x11\xb9\x20\xf6\xf9\x13\x23\xfd\xaa\xab\x9a\ \xb7\xba\x5c\x72\x49\xcb\x05\xfa\x5b\xf2\x88\xf3\xbf\x2b\x3c\x88\ \x08\x00\xa0\xe5\x54\x0f\xab\xf9\xb7\xd4\x31\xb9\x24\xf6\xd8\xb1\ \x91\x5b\x3d\xb0\xa8\x7a\x70\x51\x15\xe8\xd5\x53\x46\xcf\x3a\xab\ \x65\xe2\xfc\xe6\x3c\xe2\xfc\xde\xc6\x3f\xc0\x00\x00\x68\x41\xd5\ \x43\x6b\x1e\x4e\x1d\x95\xbf\x1e\x7b\xf6\xd8\xd8\xed\xee\xae\xdf\ \x87\x5e\x45\x7a\x4f\x4f\x4b\xc4\xf9\x3f\xc6\xa6\xa6\x8f\xf3\x47\ \x62\x2f\x76\x59\x03\x00\xb4\xb6\x05\xb1\x43\xa9\x23\xfd\xf2\x13\ \xa3\xf7\xe2\x8b\x9b\xb7\xba\xac\x58\x91\x75\x9c\x1f\x8c\xcd\x49\ \x1f\xe7\x4f\xc7\x16\xb9\x9c\x01\x00\xda\xc3\xb2\xd8\x77\x52\x47\ \xfa\xf6\x63\xc3\x77\xf2\xe4\xb2\x76\xfd\xf5\xf5\x40\xef\xed\x2d\ \x6b\x5d\x5d\x59\xc6\xf9\x13\xb1\x97\xa5\x8f\xf3\x1f\xc6\x7e\xc5\ \x65\x0c\x00\xd0\x5e\x5e\x55\xd4\x1f\x6a\x93\x2c\x34\xab\x87\xfa\ \xfc\xcd\xb1\x01\x3c\x6f\x5e\x59\xfb\xf0\x87\xb3\xfd\x16\xfd\x70\ \x6c\x43\x1e\x67\x9d\x6f\x70\xf9\x02\x00\xb4\xa7\xd7\xc7\x9e\x4f\ \x19\x9c\xd5\xc3\x7d\x3e\x7d\x6c\x08\xaf\x59\x53\x0f\xf4\xb7\xbd\ \x2d\xbb\x40\xef\xcd\xe3\x47\xa1\xef\x72\xd9\x02\x00\xb4\xb7\xde\ \xd4\xd1\xb9\x2c\xf6\xf8\xb1\x31\x7c\xcd\x35\x65\xff\x2d\xb7\x64\ \x15\xe7\x07\x62\x93\xd3\xc7\xf9\x47\x5d\xae\x00\x00\x9d\xa1\x2f\ \x75\xa4\x5f\x14\x7b\xe6\x97\x41\x3c\x73\x66\x59\xbb\xf1\xc6\x6c\ \xe2\xfc\xa1\xd8\xec\xf4\x71\xfe\x40\x51\x3f\x2a\x13\x00\x80\x0e\ \x50\x3d\xe4\xe6\x40\xea\x48\x7f\xeb\xb1\x61\x3c\x67\x4e\x16\x71\ \x7e\x28\xb6\x34\x7d\x9c\xff\x47\xe1\x38\x45\x00\x80\x8e\x33\x3d\ \xf6\xd9\xd4\x91\xbe\x33\xa3\xdb\x5a\xfa\x63\xeb\xd3\xc7\xf9\xe1\ \xd8\x62\x97\x27\x00\x40\x67\x9a\x5f\x24\x3e\x23\x7d\x6a\xe3\x21\ \x40\x39\x04\xfa\x1f\xa6\x8f\xf3\xea\x94\x9d\x95\x2e\x4b\x00\x80\ \xce\x96\xfc\x8c\xf4\x85\xb1\x87\x13\xc7\xf9\x5d\x8d\x63\x20\x13\ \xbe\x0e\x47\x62\xbf\xed\x72\x04\x00\xa0\x92\xfc\x8c\xf4\xf3\x62\ \x4f\x26\x8a\xf3\xaf\xc4\x5e\x92\xfe\xdb\xf3\xad\x2e\x43\x00\x00\ \x8e\x55\x9d\x91\xfe\x5c\xca\x48\x7d\x53\x82\x38\x7f\x3a\x76\x81\ \xe3\x14\x01\x00\xc8\xd4\x96\xc4\xa1\x5a\xde\x32\xc1\x81\xde\x93\ \x3e\xce\x3f\x57\xd4\x7f\xb0\x0b\x00\x00\x83\xda\x97\x32\x58\xa7\ \xc4\x3e\x3e\x41\x71\x7e\x47\xac\x2b\x6d\x9c\x7f\x2b\xb6\xd0\x25\ \x07\x00\xc0\x70\x26\xc5\xee\x4d\x19\xe9\x73\x63\x5f\x18\xe7\x38\ \xff\x4c\x6c\x66\xda\x38\xff\x51\x6c\x85\xcb\x0d\x00\x80\x53\x31\ \x23\xf6\xa5\x22\xf1\x8f\x46\x9f\x1a\xa7\x38\xff\x7a\x6c\x79\xfa\ \x13\x5b\x36\xba\xcc\x00\x00\x18\x89\x97\x16\xf5\x87\xe6\x24\x0b\ \xd9\xdf\x1d\xa7\x40\xbf\x34\xfd\x7d\xe7\xdb\x5c\x5e\x00\x00\x9c\ \x8e\xea\xa1\x39\x3f\x49\x19\xb3\xbb\xc7\x38\xce\xff\x24\x7d\x9c\ \xdf\x13\xeb\x72\x69\x01\x00\x70\xba\xde\x1c\x3b\x9a\x2a\x68\xcf\ \x88\xdd\x37\x46\x71\x7e\x7f\xe3\xcf\x4b\x18\xe7\x5f\x8b\xcd\x72\ \x49\x01\x00\x30\x5a\x1f\x4c\x18\xb5\xe5\xe2\xd8\x63\xa3\x8c\xf3\ \x27\x62\xcb\xd2\xc6\xf9\xf7\x8a\xfa\x53\x5b\x01\x00\x60\xd4\xaa\ \x93\x5d\x3e\x91\x32\xd2\xd7\xc7\x0e\x8f\x22\xd0\x37\xa5\xff\x51\ \xe8\x25\x2e\x23\x00\x00\xc6\x52\x75\x6b\xc6\xa3\x29\x23\xbd\xf7\ \x34\xe3\xbc\x2f\xfd\x7d\xe7\x3b\x5c\x3e\x00\x00\x8c\x87\xea\x64\ \x97\xfe\x54\xa1\x3b\x29\x76\x60\x84\x71\xfe\x60\xfa\xf3\xce\xff\ \xb5\xa8\xff\x0f\x04\x00\x00\x8c\x8b\xb5\xb1\x9f\x16\x09\x1f\x62\ \xf4\xc5\x53\x8c\xf3\xea\x1c\xf5\x15\x69\xe3\xfc\x1b\xb1\xb9\x2e\ \x19\x00\x00\xc6\xdb\x95\x09\xa3\xb7\x7c\x65\xec\xdb\xa7\x10\xe8\ \x57\xa7\x8d\xf3\x1f\xc7\x5e\xe1\x52\x01\x00\x60\xa2\xf4\xa5\x8c\ \xf4\x9e\x93\xc4\xf9\x9d\xe9\xef\x3b\xff\x1d\x97\x08\x00\x00\x13\ \x69\x4a\xec\xd3\xa9\x02\xb8\x2b\xf6\x97\x43\xc4\xf9\x97\x62\x73\ \xd2\xc6\xf9\x3e\x97\x07\x00\x00\x29\xcc\x2f\xea\xf7\x59\x27\x09\ \xe1\xd9\xb1\x83\x27\xc4\xf9\xb3\xb1\xd5\x69\xe3\xfc\xc1\xd8\x54\ \x97\x06\x00\x00\xa9\x5c\x10\xfb\xdf\x54\x41\x7c\xc1\x09\xf7\xa3\ \x6f\x4d\x1b\xe7\xdf\x8f\x9d\xed\x92\x00\x00\x20\xb5\xab\x13\x46\ \xf1\xff\xfd\x18\xb4\x8a\xf3\x7f\x8f\x4d\x49\xf7\xf7\x38\x1a\xbb\ \xd8\xa5\x00\x00\x40\x2e\x6e\x4f\x19\xe9\xbb\x62\x4b\xd2\x7e\x7b\ \xbe\xcd\x25\x00\x00\x40\x4e\xa6\xc5\x3e\x5f\x24\xfc\xd1\x68\xc2\ \x38\x7f\xa8\xa8\xff\x68\x16\x00\x00\xb2\x72\x56\xec\x70\x91\xfe\ \x88\xc3\x89\x5c\xf5\x64\xd5\x33\xbd\xf5\x00\x00\xe4\xea\xc2\xd8\ \xcf\x3a\x24\xce\x9f\x8f\xfd\x9a\xb7\x1c\x00\x80\xdc\xbd\xb3\x43\ \x02\xfd\x46\x6f\x35\x00\x00\xad\xe2\xce\x36\x8f\xf3\xfb\x62\x93\ \xbc\xcd\x00\x00\xb4\x8a\x59\xb1\x43\x6d\x1a\xe7\xdf\x89\x2d\xf2\ \x16\x03\x00\xd0\x6a\xce\x8f\xfd\xa4\xcd\xe2\xbc\x3a\xef\x7c\x83\ \xb7\x16\x00\x80\x56\xb5\xa9\xcd\x02\x7d\x87\xb7\x14\x00\x80\x56\ \xd7\xd7\x26\x71\x7e\xb0\x70\xde\x39\x00\x00\x6d\x60\x6a\xec\x73\ \x2d\x1e\xe7\x3f\x8c\x2d\xf3\x56\x02\x00\xd0\x2e\xce\x8e\x7d\xaf\ \x85\x03\xfd\x32\x6f\x21\x00\x00\xed\xe6\x75\xb1\x23\x2d\x18\xe7\ \x7f\xed\xad\x03\x00\xa0\x5d\xed\x6a\xb1\x38\x7f\x32\x36\xc7\xdb\ \x06\x00\x40\xbb\xaa\xee\x47\xff\x62\x8b\xc4\xf9\x73\xb1\x55\xde\ \x32\x00\x00\xda\xdd\xb9\x45\xfd\x47\x97\xb9\x07\xfa\x4d\xde\x2a\ \x00\x00\x3a\x45\xee\xe7\xa3\x3b\x52\x11\x00\x80\x8e\xf3\xd1\x4c\ \xe3\xfc\x7f\x62\xcb\xbd\x3d\x00\x00\x74\x9a\x33\x62\x5f\xc9\x30\ \xd0\xdf\xea\xad\x01\x00\xa0\x53\x75\xc7\x7e\x94\x51\x9c\xdf\xe5\ \x2d\x01\x00\xa0\xd3\xbd\x25\x93\x38\xff\x76\x6c\xae\xb7\x03\x00\ \x00\x8a\xe2\xef\x13\xc7\xf9\xd1\xa2\xfe\x20\x25\x00\x00\x20\xcc\ \x8b\x3d\x93\x30\xd0\xef\xf0\x16\x00\x00\xc0\xf1\x5e\x1b\x3b\x92\ \x20\xce\x9f\x8a\xbd\xd8\xcb\x0f\x00\x00\x2f\xb4\x6d\x82\xe3\xfc\ \xf9\xd8\x1a\x2f\x3b\x00\x00\x0c\xae\x7a\x38\xd0\xc1\x09\x0c\xf4\ \x5d\x5e\x72\x00\x00\x18\xde\xb9\xc5\xc4\x1c\xbd\xf8\xb5\xa2\x7e\ \x16\x3b\x00\x00\x70\x12\x57\x8d\x73\x9c\xff\x3c\xf6\x4a\x2f\x33\ \x00\x00\x9c\xba\xbb\xc6\x31\xd0\xb7\x7b\x79\x01\x00\x60\x64\x5e\ \x12\xeb\x1f\x87\x38\x7f\xac\x70\x6b\x0b\x00\x00\x9c\x96\xea\xe1\ \x41\x47\x8b\xb1\x3d\xb5\x65\x95\x97\x15\x00\x00\x4e\xdf\xde\x31\ \x0c\xf4\x5b\xbc\x9c\x00\x00\x30\x3a\xd5\xed\x28\x8f\x8e\x41\x9c\ \x57\x7f\xc6\x34\x2f\x27\x00\x00\x8c\x5e\x75\xe2\xca\xcf\x0a\xa7\ \xb6\x00\x00\x40\x36\xb6\x8e\x22\xd0\x6f\xf3\xf2\x01\x00\xc0\xd8\ \x9a\x14\xfb\x4c\xe1\xd4\x16\x00\x00\xc8\xc6\xb2\x62\x64\x4f\x19\ \xad\x4e\x6d\x59\xed\x65\x03\x00\x80\xf1\xf3\xf6\x11\x04\xfa\x2e\ \x2f\x17\x00\x00\x8c\xbf\xbb\x4f\x21\xce\xff\xab\x70\x6b\x0b\x00\ \x00\x4c\x88\xea\x29\xa3\x03\xc5\xf0\xb7\xb6\x5c\xe8\x65\x02\x00\ \x80\x89\xb3\xa1\x18\xfa\x29\xa3\xbb\xbd\x3c\x00\x00\x30\xf1\xfe\ \x7c\x90\x38\xff\x7a\x6c\x86\x97\x06\x00\x00\x26\xde\xcc\xd8\xa1\ \xe2\xf8\x5b\x5b\xd6\x78\x59\x00\x00\x20\x9d\x95\x45\xfd\x49\xa1\ \x55\xa0\xef\xf5\x72\x00\x00\x40\x7a\x1f\x8c\x7d\xa3\xa8\x7f\xa3\ \x0e\x00\x00\x24\x36\x2d\x76\x81\x97\x01\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x0e\xf2\x0b\x40\ \x3b\x84\xc7\x9d\x59\x0c\xd3\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x07\ \x08\x77\x57\x87\ \x00\x62\ \x00\x61\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x08\x9b\xa0\x47\ \x00\x74\ \x00\x72\x00\x61\x00\x73\x00\x68\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x08\x97\x8a\x27\ \x00\x68\ \x00\x65\x00\x61\x00\x72\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x39\x28\ \x00\x00\x00\x26\x00\x00\x00\x00\x00\x01\x00\x00\x09\xc4\ " 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() PyQt5_gpl-5.10.1/examples/dialogs/0000755000076500000240000000000013245231431016737 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/dialogs/classwizard/0000755000076500000240000000000013245231431021265 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/dialogs/classwizard/classwizard.py0000755000076500000240000003575613245231431024210 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDir, QFile, QRegExp from PyQt5.QtGui import QPixmap from PyQt5.QtWidgets import (QApplication, QCheckBox, QGridLayout, QGroupBox, QLabel, QLineEdit, QMessageBox, QRadioButton, QVBoxLayout, QWizard, QWizardPage) import classwizard_rc class ClassWizard(QWizard): def __init__(self, parent=None): super(ClassWizard, self).__init__(parent) self.addPage(IntroPage()) self.addPage(ClassInfoPage()) self.addPage(CodeStylePage()) self.addPage(OutputFilesPage()) self.addPage(ConclusionPage()) self.setPixmap(QWizard.BannerPixmap, QPixmap(':/images/banner.png')) self.setPixmap(QWizard.BackgroundPixmap, QPixmap(':/images/background.png')) self.setWindowTitle("Class Wizard") def accept(self): className = self.field('className') baseClass = self.field('baseClass') macroName = self.field('macroName') baseInclude = self.field('baseInclude') outputDir = self.field('outputDir') header = self.field('header') implementation = self.field('implementation') block = '' if self.field('comment'): block += '/*\n' block += ' ' + header + '\n' block += '*/\n' block += '\n' if self.field('protect'): block += '#ifndef ' + macroName + '\n' block += '#define ' + macroName + '\n' block += '\n' if self.field('includeBase'): block += '#include ' + baseInclude + '\n' block += '\n' block += 'class ' + className if baseClass: block += ' : public ' + baseClass block += '\n' block += '{\n' if self.field('qobjectMacro'): block += ' Q_OBJECT\n' block += '\n' block += 'public:\n' if self.field('qobjectCtor'): block += ' ' + className + '(QObject *parent = 0);\n' elif self.field('qwidgetCtor'): block += ' ' + className + '(QWidget *parent = 0);\n' elif self.field('defaultCtor'): block += ' ' + className + '();\n' if self.field('copyCtor'): block += ' ' + className + '(const ' + className + ' &other);\n' block += '\n' block += ' ' + className + ' &operator=' + '(const ' + className + ' &other);\n' block += '};\n' if self.field('protect'): block += '\n' block += '#endif\n' headerFile = QFile(outputDir + '/' + header) if not headerFile.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(None, "Class Wizard", "Cannot write file %s:\n%s" % (headerFile.fileName(), headerFile.errorString())) return headerFile.write(block) block = '' if self.field('comment'): block += '/*\n' block += ' ' + implementation + '\n' block += '*/\n' block += '\n' block += '#include "' + header + '"\n' block += '\n' if self.field('qobjectCtor'): block += className + '::' + className + '(QObject *parent)\n' block += ' : ' + baseClass + '(parent)\n' block += '{\n' block += '}\n' elif self.field('qwidgetCtor'): block += className + '::' + className + '(QWidget *parent)\n' block += ' : ' + baseClass + '(parent)\n' block += '{\n' block += '}\n' elif self.field('defaultCtor'): block += className + '::' + className + '()\n' block += '{\n' block += ' // missing code\n' block += '}\n' if self.field('copyCtor'): block += '\n' block += className + '::' + className + '(const ' + className + ' &other)\n' block += '{\n' block += ' *this = other;\n' block += '}\n' block += '\n' block += className + ' &' + className + '::operator=(const ' + className + ' &other)\n' block += '{\n' if baseClass: block += ' ' + baseClass + '::operator=(other);\n' block += ' // missing code\n' block += ' return *this;\n' block += '}\n' implementationFile = QFile(outputDir + '/' + implementation) if not implementationFile.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(None, "Class Wizard", "Cannot write file %s:\n%s" % (implementationFile.fileName(), implementationFile.errorString())) return implementationFile.write(block) super(ClassWizard, self).accept() class IntroPage(QWizardPage): def __init__(self, parent=None): super(IntroPage, self).__init__(parent) self.setTitle("Introduction") self.setPixmap(QWizard.WatermarkPixmap, QPixmap(':/images/watermark1.png')) label = QLabel("This wizard will generate a skeleton C++ class " "definition, including a few functions. You simply need to " "specify the class name and set a few options to produce a " "header file and an implementation file for your new C++ " "class.") label.setWordWrap(True) layout = QVBoxLayout() layout.addWidget(label) self.setLayout(layout) class ClassInfoPage(QWizardPage): def __init__(self, parent=None): super(ClassInfoPage, self).__init__(parent) self.setTitle("Class Information") self.setSubTitle("Specify basic information about the class for " "which you want to generate skeleton source code files.") self.setPixmap(QWizard.LogoPixmap, QPixmap(':/images/logo1.png')) classNameLabel = QLabel("&Class name:") classNameLineEdit = QLineEdit() classNameLabel.setBuddy(classNameLineEdit) baseClassLabel = QLabel("B&ase class:") baseClassLineEdit = QLineEdit() baseClassLabel.setBuddy(baseClassLineEdit) qobjectMacroCheckBox = QCheckBox("Generate Q_OBJECT ¯o") groupBox = QGroupBox("C&onstructor") qobjectCtorRadioButton = QRadioButton("&QObject-style constructor") qwidgetCtorRadioButton = QRadioButton("Q&Widget-style constructor") defaultCtorRadioButton = QRadioButton("&Default constructor") copyCtorCheckBox = QCheckBox("&Generate copy constructor and operator=") defaultCtorRadioButton.setChecked(True) defaultCtorRadioButton.toggled.connect(copyCtorCheckBox.setEnabled) self.registerField('className*', classNameLineEdit) self.registerField('baseClass', baseClassLineEdit) self.registerField('qobjectMacro', qobjectMacroCheckBox) self.registerField('qobjectCtor', qobjectCtorRadioButton) self.registerField('qwidgetCtor', qwidgetCtorRadioButton) self.registerField('defaultCtor', defaultCtorRadioButton) self.registerField('copyCtor', copyCtorCheckBox) groupBoxLayout = QVBoxLayout() groupBoxLayout.addWidget(qobjectCtorRadioButton) groupBoxLayout.addWidget(qwidgetCtorRadioButton) groupBoxLayout.addWidget(defaultCtorRadioButton) groupBoxLayout.addWidget(copyCtorCheckBox) groupBox.setLayout(groupBoxLayout) layout = QGridLayout() layout.addWidget(classNameLabel, 0, 0) layout.addWidget(classNameLineEdit, 0, 1) layout.addWidget(baseClassLabel, 1, 0) layout.addWidget(baseClassLineEdit, 1, 1) layout.addWidget(qobjectMacroCheckBox, 2, 0, 1, 2) layout.addWidget(groupBox, 3, 0, 1, 2) self.setLayout(layout) class CodeStylePage(QWizardPage): def __init__(self, parent=None): super(CodeStylePage, self).__init__(parent) self.setTitle("Code Style Options") self.setSubTitle("Choose the formatting of the generated code.") self.setPixmap(QWizard.LogoPixmap, QPixmap(':/images/logo2.png')) commentCheckBox = QCheckBox("&Start generated files with a comment") commentCheckBox.setChecked(True) protectCheckBox = QCheckBox("&Protect header file against multiple " "inclusions") protectCheckBox.setChecked(True) macroNameLabel = QLabel("&Macro name:") self.macroNameLineEdit = QLineEdit() macroNameLabel.setBuddy(self.macroNameLineEdit) self.includeBaseCheckBox = QCheckBox("&Include base class definition") self.baseIncludeLabel = QLabel("Base class include:") self.baseIncludeLineEdit = QLineEdit() self.baseIncludeLabel.setBuddy(self.baseIncludeLineEdit) protectCheckBox.toggled.connect(macroNameLabel.setEnabled) protectCheckBox.toggled.connect(self.macroNameLineEdit.setEnabled) self.includeBaseCheckBox.toggled.connect(self.baseIncludeLabel.setEnabled) self.includeBaseCheckBox.toggled.connect(self.baseIncludeLineEdit.setEnabled) self.registerField('comment', commentCheckBox) self.registerField('protect', protectCheckBox) self.registerField('macroName', self.macroNameLineEdit) self.registerField('includeBase', self.includeBaseCheckBox) self.registerField('baseInclude', self.baseIncludeLineEdit) layout = QGridLayout() layout.setColumnMinimumWidth(0, 20) layout.addWidget(commentCheckBox, 0, 0, 1, 3) layout.addWidget(protectCheckBox, 1, 0, 1, 3) layout.addWidget(macroNameLabel, 2, 1) layout.addWidget(self.macroNameLineEdit, 2, 2) layout.addWidget(self.includeBaseCheckBox, 3, 0, 1, 3) layout.addWidget(self.baseIncludeLabel, 4, 1) layout.addWidget(self.baseIncludeLineEdit, 4, 2) self.setLayout(layout) def initializePage(self): className = self.field('className') self.macroNameLineEdit.setText(className.upper() + "_H") baseClass = self.field('baseClass') is_baseClass = bool(baseClass) self.includeBaseCheckBox.setChecked(is_baseClass) self.includeBaseCheckBox.setEnabled(is_baseClass) self.baseIncludeLabel.setEnabled(is_baseClass) self.baseIncludeLineEdit.setEnabled(is_baseClass) if not is_baseClass: self.baseIncludeLineEdit.clear() elif QRegExp('Q[A-Z].*').exactMatch(baseClass): self.baseIncludeLineEdit.setText('<' + baseClass + '>') else: self.baseIncludeLineEdit.setText('"' + baseClass.lower() + '.h"') class OutputFilesPage(QWizardPage): def __init__(self, parent=None): super(OutputFilesPage, self).__init__(parent) self.setTitle("Output Files") self.setSubTitle("Specify where you want the wizard to put the " "generated skeleton code.") self.setPixmap(QWizard.LogoPixmap, QPixmap(':/images/logo3.png')) outputDirLabel = QLabel("&Output directory:") self.outputDirLineEdit = QLineEdit() outputDirLabel.setBuddy(self.outputDirLineEdit) headerLabel = QLabel("&Header file name:") self.headerLineEdit = QLineEdit() headerLabel.setBuddy(self.headerLineEdit) implementationLabel = QLabel("&Implementation file name:") self.implementationLineEdit = QLineEdit() implementationLabel.setBuddy(self.implementationLineEdit) self.registerField('outputDir*', self.outputDirLineEdit) self.registerField('header*', self.headerLineEdit) self.registerField('implementation*', self.implementationLineEdit) layout = QGridLayout() layout.addWidget(outputDirLabel, 0, 0) layout.addWidget(self.outputDirLineEdit, 0, 1) layout.addWidget(headerLabel, 1, 0) layout.addWidget(self.headerLineEdit, 1, 1) layout.addWidget(implementationLabel, 2, 0) layout.addWidget(self.implementationLineEdit, 2, 1) self.setLayout(layout) def initializePage(self): className = self.field('className') self.headerLineEdit.setText(className.lower() + '.h') self.implementationLineEdit.setText(className.lower() + '.cpp') self.outputDirLineEdit.setText(QDir.toNativeSeparators(QDir.tempPath())) class ConclusionPage(QWizardPage): def __init__(self, parent=None): super(ConclusionPage, self).__init__(parent) self.setTitle("Conclusion") self.setPixmap(QWizard.WatermarkPixmap, QPixmap(':/images/watermark2.png')) self.label = QLabel() self.label.setWordWrap(True) layout = QVBoxLayout() layout.addWidget(self.label) self.setLayout(layout) def initializePage(self): finishText = self.wizard().buttonText(QWizard.FinishButton) finishText.replace('&', '') self.label.setText("Click %s to generate the class skeleton." % finishText) if __name__ == '__main__': import sys app = QApplication(sys.argv) wizard = ClassWizard() wizard.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/dialogs/classwizard/classwizard.qrc0000644000076500000240000000050013245231431024315 0ustar philstaff00000000000000 images/background.png images/banner.png images/logo1.png images/logo2.png images/logo3.png images/watermark1.png images/watermark2.png PyQt5_gpl-5.10.1/examples/dialogs/classwizard/classwizard_rc.py0000644000076500000240000075612113245231431024665 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sat May 4 14:59:27 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x58\x32\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\xdc\x00\x00\x01\x7c\x08\x06\x00\x00\x00\xa4\x31\xd5\xdb\ \x00\x00\x57\xf9\x49\x44\x41\x54\x78\x5e\xec\xdd\xc1\x4b\x55\x69\ \x18\xc7\xf1\xdf\xb9\xd7\xeb\x95\x0b\x95\x61\x10\x3a\xad\x24\x50\ \x50\x08\x12\x0a\x71\x56\x21\x83\x25\x48\x10\x11\x2d\x6c\x51\x11\ \x42\x81\x04\xdd\x6a\x46\xbc\xaf\x60\x50\xa3\xb6\x28\x89\x20\x72\ \x71\x21\x5c\xb4\x90\xac\x08\x93\x36\xcd\xb4\x72\x06\x23\x62\x86\ \x1a\x37\x52\xdc\xc8\x82\xb1\xc2\x6c\x91\xf2\xf4\x6c\x82\x10\xbc\ \x48\x59\x69\x7e\x3f\xf0\xe5\xf9\x0b\x7e\xbc\x8b\xb3\x38\xfa\x11\ \x00\x00\x00\x00\x00\x00\x00\x00\x82\xf4\x8b\xb7\x43\x79\x00\x31\ \x7d\x11\x9c\x94\xd6\x06\xa9\x5f\xd2\xed\xa8\xa0\xa0\x45\x5f\x0f\ \x18\x1c\xaf\x5a\x52\x7a\x68\xd2\x9e\x9f\xb6\x6e\x1d\x4a\x4f\x4c\ \x3c\x30\xb3\x94\xe6\x01\x14\xe8\x73\x30\xb4\x94\x49\xbf\x4b\x3a\ \x1c\x4f\x24\x26\xea\xbb\xbb\xfb\x6a\x5b\x5b\x9f\x4a\xba\xeb\xbd\ \xd3\xa2\x01\x18\xdb\x16\xef\x91\x67\xbd\x15\x15\x7f\x4c\x8e\x8f\ \x9f\x36\xb3\xc3\x5e\x99\x16\x07\x80\x43\x52\x22\x48\x1d\x19\xe9\ \x7d\x47\x2c\x36\x39\x7c\xfc\x78\xd6\xcc\x82\xb7\xdd\x2b\xf8\x64\ \x90\x45\xde\x21\xaf\x72\xb7\x14\xf7\x3b\xe4\x1d\xd3\xc2\x00\x08\ \x52\xa5\x37\xe2\x59\x4f\x69\xe9\xdf\xb9\xd1\xd1\xb3\x66\x76\xd4\ \x2b\xd7\x1c\xbf\x4a\xeb\x83\x34\x15\xa2\xe8\x49\x46\xea\x0c\x92\ \xf5\xd5\xd5\x75\x69\x41\x00\xc6\x76\xd0\x9b\xf6\x01\x4d\x0f\x34\ \x37\x5f\x9d\x9d\x9d\xed\x30\xb3\x5d\x5e\x91\xe6\x71\xa7\xad\xad\ \xcb\x5f\xc1\x99\x20\x59\x67\x32\xf9\xf6\xbf\x5b\xb7\xba\x42\x08\ \x31\xe5\x07\xc0\x87\x76\xfd\x4c\x49\xc9\xfd\xb1\xe1\xe1\x73\x66\ \x76\xc2\xab\x56\x1e\xed\x52\xcd\xa9\x54\xea\x5e\x90\x6c\x4e\x37\ \x95\x1f\x00\x33\xab\xf1\x82\xd7\xec\xad\x56\x7e\xca\x48\x17\x7d\ \xa4\x53\x17\xaa\xaa\xfe\x0a\x92\x5d\xae\xad\xbd\xdf\xdf\xd4\x74\ \x63\x60\xdf\xbe\x1e\x33\x4b\x28\x2f\xf0\x59\x00\x8f\xbd\x97\x51\ \x14\x3d\xd1\x02\x1c\x18\x19\xe9\x2e\xdb\xb4\xe9\xc5\x9b\x5c\x2e\ \x71\xbe\xbc\xbc\x26\x59\x5c\xfc\x7a\xef\xe0\xe0\xa0\xa4\x42\x6f\ \x95\xf7\xbf\x56\x2c\x44\x5a\x54\x30\xb3\xa4\xa4\x6a\x6f\x2c\x5b\ \x5f\x9f\xdd\xd8\xd0\x90\xfb\x39\x9d\x3e\xa2\xaf\x0e\x60\x7c\xdb\ \xbc\x16\x7d\x13\x00\x83\x8b\xb4\x52\x01\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\ \x47\x1f\x80\x8c\xd4\x16\xa4\x57\x7e\xc3\xca\x18\x1e\x62\xfa\x6e\ \xb0\x7a\xc3\x86\x7f\x24\xad\x89\x45\x51\x26\x23\xdd\x0b\x52\x8b\ \x96\x13\x30\xb8\x20\x15\xfe\x26\x95\x6a\x19\x98\x7a\xfe\xfc\x48\ \x2c\x1e\x9f\x29\xdd\xbc\xf9\xdf\xd4\xba\x75\x25\x51\x14\xf5\x06\ \x69\x67\xbb\x54\xb7\x5b\x8a\x6b\x29\x02\x32\x52\x3a\x48\x5d\x92\ \x22\xbf\x97\xbc\x67\x5a\xe2\x82\xd4\xe4\xd9\x95\xc6\xc6\x3f\xcd\ \x2c\x5c\xdb\xbf\x7f\x28\x48\xf6\xb1\x8c\x94\xd5\x52\x04\x7c\x68\ \xef\x2a\xa0\xaa\xca\xda\xf6\xbe\xa2\x82\xd9\x1d\x60\x8c\x9d\x63\ \x8d\xdd\xdd\x39\xea\x98\x63\xd7\xd8\x8d\x88\x08\x16\x12\x62\x61\ \xa0\x98\x01\x82\x8d\x05\x82\x01\x8a\x8a\x58\x58\x18\x08\x62\x22\ \x29\x20\xa1\xf2\x3f\xef\x5d\xfb\xac\x75\xbf\xfb\xe3\xcc\xe0\x10\ \xd7\x99\xf7\x59\xeb\x59\x87\xb3\xcf\x61\x3e\xef\xb7\x79\xef\xde\ \xfb\x8d\xe7\x5d\x96\x23\xc7\x7a\xf9\x47\x7a\x08\xd7\xaf\x1b\x6b\ \xd5\xa2\x3f\xe2\xc2\x3a\x6a\x68\x79\xc1\xc9\x60\xa0\x79\xae\x5c\ \x51\xd1\xaf\x5e\x99\x7b\x5b\x5a\x56\x82\x81\x85\xad\x2e\x5a\xf4\ \xbd\xfb\x82\x05\x07\xb6\x36\x6e\xec\x4b\x46\xb7\x2c\x67\xce\xea\ \x42\xd7\xc0\x60\xc4\x85\x85\x35\xb4\x2e\x53\xe6\x95\xb2\x3a\xec\ \xeb\xd1\xc3\x7b\x47\xdb\xb6\xdd\x74\xd4\xe0\x9a\xc0\xb8\xbe\x90\ \x41\xed\xea\xd0\xc1\x17\xab\x5b\x07\xdc\xdb\xd2\xfd\x15\x5b\xdb\ \x3d\xb8\x1f\xb3\xae\x6a\xd5\xeb\xa6\x2a\xd5\xd7\xd7\xfe\xfe\xad\ \x31\x5e\x07\xdc\x6d\x22\x44\x4f\xc1\x60\xe8\xc0\x8a\xf1\x13\x56\ \x87\x5b\xd2\xd8\xb4\xf9\x93\xd0\x41\x5c\xb5\xb5\x5d\x67\x55\xaa\ \xd4\x9b\x35\xa5\x4a\x85\x5a\x97\x2d\x5b\x1b\x06\x95\xb4\xbe\x7a\ \xf5\x07\x30\xb6\x29\x66\xfa\xfa\x6d\xc9\xf8\xb6\xb7\x68\xe1\x8f\ \xfb\xe6\x78\xd6\x50\x63\x9b\x69\x2f\xb2\x12\x0c\x76\x9a\x7c\x11\ \x22\x57\x76\x7d\xfd\x6c\x3f\x75\xe9\xe2\x9a\xa7\x58\xb1\xb0\x7c\ \xa5\x4b\xbf\x1d\xe4\xea\xba\xb9\xd7\xf6\xed\x9b\xe6\x44\x44\xe4\ \x12\x3a\x88\x26\x33\x66\x6c\x9d\xf1\xf2\xa5\xed\x8c\xe7\xcf\x1d\ \x12\xa2\xa3\xcd\x31\x94\x23\x6f\xc9\x92\x71\x31\x61\x61\xee\x5f\ \x13\x13\xad\xb3\xe5\xc8\xf1\xa9\xfb\xa6\x4d\x1e\x18\x7f\x96\xb7\ \x44\x89\x10\x01\xe4\x29\x5e\x3c\xac\xec\x2f\xbf\xe4\x81\x11\xaa\ \xe7\x2c\xcb\x9c\x2a\x0c\x06\x56\x82\xd9\xe0\xc2\x0d\x35\x6a\xf8\ \xaf\xc8\x9f\x3f\x1a\xf7\x5d\xc0\xbe\x60\xa5\xbf\x58\x1d\xab\x61\ \xd5\x70\xc4\xb5\x49\x16\xfc\x9b\x73\x81\xb5\x2e\x59\x59\x55\xd9\ \xd3\xa5\x8b\xb7\xf3\xc0\x81\x47\xb0\x82\x8d\xa3\x95\xcc\x75\xe8\ \x50\x77\x3c\xeb\x25\x57\xf0\xf2\x34\x76\x68\xd0\xa0\xf3\x18\x5b\ \x02\x16\xc1\xbd\x33\x9d\xf9\xc0\x49\x59\x11\xbf\x63\xb0\xc1\x15\ \x02\x73\x7a\x2c\x5c\x38\xe0\xc6\x96\x2d\x8e\xb8\x2f\x2b\xfe\x1c\ \xe4\xcd\x9c\x06\xc6\xe3\xac\x14\xbb\xbd\x79\xf3\x5f\xb3\xf0\xdf\ \x5e\x18\x1c\x06\x1a\xc3\x89\xe2\x44\xc6\x65\x5f\xaf\xde\x5d\xdc\ \xe7\x95\x06\x57\x8b\xc6\x5c\x7e\xfb\xed\x30\xc6\x72\x90\x81\xad\ \x2c\x58\x70\xab\xc6\x36\x73\x8a\xc8\x22\x30\xd8\xf0\xf2\xc9\x3f\ \xde\xc2\x7f\xb2\xaa\x95\xc5\xca\xe0\x8e\x6b\xca\xca\xc2\x85\x03\ \x9e\x5f\xb8\x60\x8b\xf7\x47\xea\xc0\x2a\x9d\x13\xac\xe3\xbf\x7d\ \xfb\xf6\x9b\xdb\xb6\x59\xe2\x3e\xbb\x00\x4c\x84\x68\x4a\x86\x75\ \x74\xec\xd8\x3d\x8b\x85\xa8\x0d\x03\xf3\xa1\x7b\x72\x12\x9d\x9a\ \x31\xe3\xd8\xfd\x23\x47\x86\xcb\xcf\xe3\x02\x56\x14\x3a\x04\x06\ \xc7\xeb\x86\x82\x91\xe4\xa4\xd8\xdf\xb3\xe7\x91\xe4\xc4\x44\x33\ \x18\xdb\x6f\x60\x5e\x1d\x59\xa9\xf5\xc0\xa6\xe0\x10\x30\x87\x34\ \xb8\x8e\x64\x60\x70\xb0\x3c\xc1\x35\x69\xa9\x4a\x15\x77\xb0\x5f\ \x3f\xe7\xe4\x4f\x9f\xe8\xdf\x3e\x09\xec\x62\xae\xaf\xef\x2b\x57\ \xbb\x8f\xb8\x56\x11\x59\x09\x06\x63\x81\x10\x45\x60\x68\xea\xed\ \x9a\x45\xee\xdc\xcf\x03\x9c\x9c\x36\xc2\xc8\x16\x81\x0d\x85\x8e\ \x61\xa1\x10\xc5\xb0\x92\x55\xd7\x58\x91\x27\x2a\xdb\xc7\x35\x25\ \x4b\xde\x7c\xe1\xed\x4d\x2b\xf2\x02\xb0\x11\xa8\x12\x80\xb9\x81\ \xc1\xdb\x55\x85\x0b\x47\x38\x0d\x18\x70\xea\xd1\x99\x33\xd5\x44\ \x16\x82\xc1\x61\x83\x2e\x30\x36\x8a\xd1\x7d\xdd\xf6\xcb\x2f\x67\ \xe2\xc2\xc3\x2d\x28\xd6\xa5\xc3\x81\x71\x17\xf0\x33\xb8\x19\xdc\ \x44\x31\x3b\x9c\xed\x62\xdd\xe7\xcf\x77\xa5\x8c\x14\x70\x10\x98\ \x4f\xe3\xfd\x1a\x60\x0a\x1c\x2f\x57\x2e\x2d\x5f\xbe\x6d\x65\xa1\ \x42\x37\xe4\xd6\xd3\x09\xf4\xa1\x2d\xe9\xb7\x52\xe0\x44\x7a\x81\ \xc1\x98\x0d\x4f\x3a\xfd\xc1\x82\x5f\x91\x89\xf2\xe6\xea\xda\xb5\ \xdb\x60\x64\x26\x60\x2b\x50\x67\xc3\x21\x5e\xa6\xa6\xf5\x90\x29\ \xe3\xaf\xac\x6a\xcb\xf3\xe6\x7d\xf3\xe1\xf1\xe3\xd5\x30\xb2\x59\ \x60\xf5\x54\xb6\xc9\xb3\xe9\xbd\x0d\xd5\xab\x3f\x96\x86\x9a\xb2\ \xb2\x48\x91\x29\xab\x8a\x16\x35\xa1\x71\x32\xd8\xd4\x82\xe6\x78\ \xe6\x09\xee\x98\x2f\x44\x01\xc1\x60\xfc\xd3\x6d\x19\xa5\x4e\x81\ \x29\xc8\xda\xb8\x1c\xf9\xe2\xc5\x4a\x0a\x2a\x83\xa5\x7f\x10\xc7\ \xcf\x78\xf2\xb6\x5a\x95\x2e\xfd\x86\x56\x66\x04\xca\xa7\x61\xcc\ \x40\xa4\x02\x78\x59\x3d\x14\xe3\x34\xcb\x91\x23\x96\xae\xa7\xa7\ \x4f\xdf\x82\xb4\xb0\x17\xb8\x4f\xda\xdd\xa9\xd3\xe5\x8b\x16\x16\ \xbd\x35\xd2\xca\x72\x92\x91\x2d\xd3\xd7\xf7\xc1\xf6\x3a\xc8\x71\ \xe4\x48\x03\xf1\x0f\xc1\xe0\x6d\xa4\xc1\x8a\x02\x05\xce\x21\x4c\ \xb0\x53\x6e\xc3\xba\x82\xd9\x7f\x20\x6f\xab\x0a\xac\x9f\x94\x90\ \x30\xef\x99\xa7\xe7\x3a\x72\xa4\x7c\xeb\x73\xc2\xe0\x12\xd4\xe9\ \x6c\xdd\xbb\x7b\xef\xea\xd4\x49\xed\x3c\xc1\x99\x2e\x0a\xce\x95\ \xc4\x2b\x36\x36\x8e\xf2\xbc\xd7\x5f\xbe\x7f\x17\x2b\x5e\x10\x38\ \x30\x39\x39\xb9\xdf\xdb\x80\x80\x35\xf4\xbf\x23\x18\x8c\x74\x58\ \x29\x86\x83\x33\xc1\x8a\x3f\xf0\x67\x30\x00\x5b\xff\xd9\xca\xec\ \xbe\x70\xe1\xcc\xf3\x26\x26\x87\xf0\xce\x62\x38\x55\xae\x92\xc1\ \x2d\xcd\x96\xed\xf3\xc5\xe5\xcb\x77\x63\x6c\x9a\xe6\x79\xcf\xa1\ \x79\xf3\xd1\x58\xd5\xc2\xe9\x1d\x18\xea\x41\x3c\x6b\x9c\x5e\xdb\ \x6b\x06\x1b\x9c\xfe\x7f\xe4\x73\xd6\x04\x27\x82\x86\x70\xae\xdc\ \x81\xb1\x7d\xf1\x5a\xba\xd4\x09\xf7\x33\xc0\x02\x5a\xef\x56\x76\ \x19\x32\xe4\x2c\x19\x9c\x53\xff\xfe\xb6\x72\x9b\xfa\x3d\x60\x30\ \x18\x2f\x7d\x7d\xdb\xf9\x6d\xdd\xba\x43\x3a\x58\x0a\xa5\xb2\x05\ \x2d\x89\x95\x2d\xc6\xa6\x5c\xb9\xd0\xcf\x49\x49\x73\x28\xd8\x2e\ \xfe\x11\x18\x0c\x4e\x71\xeb\x07\x16\x55\x9c\x47\x32\x0b\x65\x32\ \x98\x1d\x3f\x6f\xc7\xf5\xeb\xad\x9d\x3b\x1d\xf0\x4e\x3d\xf1\x37\ \x20\x43\x0c\xa7\xf1\x7b\x7f\x51\xee\xc4\x60\xb0\xf3\xa8\x20\xb2\ \x50\x02\x64\x78\xe0\x21\xf8\x65\x73\x83\x06\xb7\x60\x6c\xe3\x40\ \x95\xd6\xbb\x55\x64\x22\xf7\x75\x32\x30\x70\xa0\x34\xb8\xea\x66\ \x7a\x7a\xef\xe4\x7f\x63\x9c\xf8\x36\x18\x0c\x46\x62\x6c\xec\xe8\ \xe3\xe3\xc7\xbb\x21\x4c\xf0\x91\x8c\x06\x75\x77\x4f\x8e\x4f\x9e\ \xdc\x42\xbb\x6a\x02\x8c\x90\x31\xcb\x30\x7a\x4f\x72\x86\xa9\x91\ \x91\x01\xb2\x58\x3e\x58\xe4\xc9\x13\xfb\xca\xdf\xbf\xb7\x60\x30\ \x18\x7f\x59\x06\xd4\x2d\xfc\xe9\xd3\x15\xbb\xda\xb7\xbf\x46\x4e\ \x95\x25\xb0\x43\x13\x21\x7a\x6b\x18\xdc\x51\x8c\x27\x5c\x34\x37\ \xdf\x47\x61\x94\x88\x67\xcf\x56\x91\x61\xca\xca\xf4\x93\x60\xca\ \xa9\x69\xd3\x8e\xe1\x59\x27\xf1\xb7\xc0\x60\xb0\xe1\x15\x07\x87\ \x3f\x3e\x71\x62\x23\xca\x7f\x6e\xed\xed\xd9\x73\x94\x90\x40\xcc\ \xee\x93\xad\x91\x51\x88\xf4\x6c\x56\x03\xeb\x86\x3d\x7e\x3c\x1e\ \x21\x04\x75\x20\x7d\x4d\x89\x12\x2f\xe1\x64\x99\x9b\x76\xcf\x2f\ \x83\xc1\x86\x57\x15\xfc\x03\x9c\x24\x24\xb0\xdd\x8c\xa2\xac\x96\ \x57\x01\x01\x86\x1a\xef\x65\xc7\xf9\x2f\x8e\xb6\x99\xe4\xf9\xfc\ \xfe\x00\x39\x83\xc1\x46\x97\x4d\x33\xf3\xc6\xbe\x6e\xdd\x63\xb4\ \x92\xc1\xc0\x76\x2d\x10\xa2\x90\x2c\xd0\x9d\x45\x63\x70\xb2\x04\ \xe0\xdd\x09\xa0\x8a\xb6\xa1\xe4\xf5\x04\xef\xe0\x99\x03\x1c\x2a\ \x55\x45\xda\xc0\x60\x30\x9e\x79\x78\xb4\x44\xce\xe9\x33\x0d\x67\ \xc9\x07\xba\xc2\x3b\x99\x18\x72\xf5\x2a\x05\xc8\x8d\x70\x3f\x55\ \x66\xb1\xc4\x99\x65\xcf\x1e\xa9\xfe\x59\xa5\x7a\x89\x6b\x5a\xf3\ \x53\x19\x0c\x5e\xf1\x12\x3f\x7d\x1a\xeb\x63\x6d\xbd\x77\x4f\xd7\ \xae\xc7\x51\xa1\x40\x86\x94\x02\x7d\xcc\x3b\x78\x36\x80\x92\x9d\ \x71\x9f\x00\x6f\xe5\x0b\xd4\xe3\xad\xc5\x98\xe9\xdd\x7d\xfb\xb6\ \xc2\xf0\x92\x60\x80\x81\xb2\x0a\xbd\xb1\xf8\xdb\x60\x30\xd8\xe8\ \xb2\x83\xed\xc0\xb1\xa8\xab\xdb\x4b\x62\x4c\x6a\x51\xdd\x7a\xf5\ \x5a\x2b\x2a\xd1\xa4\x0e\x2d\xab\xd1\xcb\x83\xf5\xf7\x76\xeb\xe6\ \xa5\xa1\xad\x92\x2c\x6b\xef\xd2\x08\x06\x83\x8d\xaf\xe4\xc7\x77\ \xef\xcc\x7c\xd7\xad\xdb\x99\x98\x98\x58\x1f\x06\xd5\x01\x4c\x39\ \xd0\xa7\xcf\x49\xa1\x01\x24\x4b\xef\x95\x82\xb6\xd7\x8e\x8c\x1a\ \x75\xf2\xd9\x85\x0b\x8d\xc4\x77\x81\xc1\x60\xa3\x2b\x00\xf6\x04\ \x7f\xfa\x43\x08\x7d\xac\x78\x51\x38\xd3\xd1\x2a\xd6\x9f\x72\x32\ \xc1\xc1\x38\xc3\x45\xd3\x78\xec\xfb\xf7\x54\x02\x35\xea\x7d\x60\ \x20\xad\x86\xe3\xb1\xda\x1d\xc1\xf5\x28\xae\x53\x70\xcd\x2f\xd2\ \x06\x06\x83\x81\xf3\xdd\x52\x25\x2e\xa7\x49\x0f\x63\x63\x17\x18\ \x5b\x9b\xf1\x42\xe4\xa0\x94\x30\xe9\x58\x89\x05\xe3\xe5\x3b\x81\ \x7f\xd3\x9b\xc9\xca\xcb\x0c\x06\xad\x6e\xa4\x1c\x56\x6f\xe4\xc8\ \x6d\x93\xee\xdc\xb1\xe9\x64\x65\xb5\xab\x6c\x93\x26\x9e\x02\x28\ \x58\xbe\x7c\x48\x1b\x33\xb3\x2b\x64\x8f\x25\x85\xf8\x4d\x25\x44\ \x17\xbd\x9c\x39\x13\xbb\xad\x5f\xef\x32\x3f\x3c\xdc\xba\xd9\xec\ \xd9\x47\x55\xd9\xb2\x55\xcc\xa1\xa7\x77\x38\x35\xa5\x68\xf2\x70\ \x82\x79\x05\x83\xc1\x50\x8c\x42\x8c\x90\x4e\x91\x9b\xeb\x6b\xd6\ \x1c\x1c\xe0\xec\x3c\xca\xba\x5c\xb9\x07\xd4\x6c\xe4\x9e\xb3\xf3\ \x16\x52\x8f\x96\xef\xed\xc5\x16\xf3\x8b\x65\xc9\x92\xef\xe8\xd9\ \xaa\x22\x45\x0e\x23\xab\x65\xb0\xcb\xd0\xa1\xe7\xe8\xf7\x2d\x8b\ \x15\xeb\x22\x24\x34\x2a\x19\xde\x81\xd6\x72\x88\xc1\x60\xf8\xf9\ \xf9\xe5\x80\xcc\xfa\x61\x24\x35\xc7\x29\xdb\x48\x18\x54\xfc\x99\ \x59\xb3\xa8\xca\x7c\xb4\x90\x80\x5a\xd8\x0e\x7a\x16\xe4\xe5\xb5\ \x16\xc9\xd2\xc7\xf0\x7e\x34\xe9\x64\xae\x2a\x54\xe8\x3c\x8d\xef\ \xef\xd3\x67\xb9\x14\x3d\x1a\x88\x7b\x5f\xf0\x14\x8d\x5f\x58\xb6\ \x0c\x17\x4d\x30\x18\xec\x40\xe9\x0c\xe5\xb0\x55\xc7\xc6\x8c\x39\ \xe9\xd8\xba\xb5\xdb\x03\x57\x57\x8a\xc5\xcd\x01\x4b\x08\x89\xfd\ \x7d\xfb\xf6\xa2\x95\x0d\x4e\x94\x47\x4f\xcf\x9d\x1b\x42\xc9\xd2\ \x3b\x5a\xb5\xba\x80\x31\xb5\x92\x18\x56\xc6\x59\x02\x30\x33\x30\ \x68\xa9\x04\xce\x51\x81\x10\xf3\xe8\xf8\xf1\x25\xe2\xff\x83\xc1\ \xe0\x50\x01\x38\x00\x9c\x0d\x8e\x00\xf3\x69\x3d\xcf\xed\x3a\x6c\ \x98\x1b\x19\x1d\x18\xb1\x3c\x7f\xfe\x9d\x3e\x56\x56\x66\x8f\xdd\ \xdc\x36\x62\x75\xbb\x84\xe7\x7d\xe4\x7b\xf9\xd7\x56\xaa\xf4\x9c\ \x3c\x9e\xa4\xbd\x82\x77\x93\x60\x7c\x56\x73\x85\xc8\x27\xd2\x04\ \x06\x83\x8d\xb2\xd1\x75\x7b\xfb\x9d\xd0\xc8\xbc\x2d\x0d\x29\x05\ \x2b\x9e\xa7\x4c\x96\xfe\x49\x9e\xf5\x06\xd0\x38\xe4\xda\x2f\x04\ \x9e\x39\xb3\x61\x5d\x95\x2a\x8f\xe4\x19\xd1\x5d\xa4\x19\x0c\x06\ \x1b\x5d\x6d\x70\xf6\x87\x27\x4f\x56\xe3\x2c\x77\xf4\xd4\x1f\x7f\ \x2c\xc3\x7d\x2e\x45\xd6\x8f\x64\xfa\x48\x39\x8c\x02\xeb\x18\xff\ \x19\x9c\x0a\x91\xde\xdd\x57\xd7\xad\x5b\xf1\x5f\x28\xff\x51\x89\ \x74\x06\x83\x21\xa5\xf7\x2a\x82\x75\xc0\x62\xe0\x41\x15\x82\xe4\ \x14\x2c\xc7\xfd\x81\xa6\x33\x67\x1e\xeb\x6c\x63\x63\x87\x31\x2f\ \xf9\xee\x2f\xe0\x4f\xa0\x2b\xc6\xe2\xc5\x3f\x07\x83\xc1\x90\x1e\ \xca\x14\xc7\x36\x6d\x2e\x07\x04\x04\x64\xa4\x62\x18\x83\xc1\x08\ \x0c\x0c\xd4\x27\x99\x07\x19\x5e\x78\x01\x03\x5c\x8f\x6b\x8f\xef\ \x6d\x9f\xbc\x58\x88\x9f\xf1\xfb\xfd\xbe\xb1\x53\x63\x30\x18\x90\ \x58\xef\x7a\x62\xf2\xe4\x93\x56\xa5\x4a\xdd\x57\x9a\x8f\x98\x08\ \xd1\xf6\x3b\x83\xf2\xbb\xa5\xf1\x7a\x53\x20\x5d\xa4\x0a\x06\x83\ \xcf\x78\x1d\xc1\x45\xd4\x15\x28\xf8\xca\x15\x2b\xdc\xb7\x11\xdf\ \x81\xb3\xf3\xe7\xb7\xa3\xec\x16\xd4\xe9\x05\x7e\x08\x0c\xfc\x93\ \x24\x69\x06\x83\x8d\x2e\x87\x14\x2c\xea\x00\x96\x15\xdf\x81\xa5\ \x7a\x7a\xfb\xd4\xc2\xb6\xbb\x76\x39\x90\xf0\x91\x48\x3b\x18\x0c\ \x06\x55\x8f\x93\x4a\xb4\xb1\x10\xe5\xfe\xe4\x9d\x26\xe0\xd7\x0d\ \x35\x6a\x3c\x7c\x70\xe4\x88\x89\xf3\xc0\x81\x7a\xe2\xbb\xc0\x60\ \xb0\xc1\xed\x04\x53\xcc\x72\xe6\xdc\x2e\x52\x87\x0a\x06\xa9\x76\ \xbe\x28\xc4\x7d\x30\xae\x15\xb9\x3c\x47\xfd\x7f\x8e\xa0\x6e\x9c\ \xad\xc4\xdf\x00\x83\xd1\xc1\xca\x6a\x7d\xd5\x3e\x7d\x2e\x0f\x3d\ \x75\x2a\xe4\x1b\x06\x39\x5c\x85\x55\xd0\xb0\x55\x2b\xff\xee\x1b\ \x37\x3a\xa0\x74\x68\x97\x5e\x8e\x1c\xc5\x54\x7a\x7a\x67\xfe\xf3\ \x29\x62\xb2\xea\x37\x65\x75\xb1\x62\x4b\x71\xcd\x6f\x2c\x44\x25\ \xc1\x60\xfc\x75\x5f\xbc\x31\xe0\x20\xcd\x71\x2a\x72\x85\xb1\x15\ \xa7\x9e\xed\x10\x3a\xfa\x10\xfb\xe1\x03\x55\x9a\x0f\x04\xfb\x61\ \x4b\xa9\x2e\x03\xb2\x2a\x57\xae\xe3\x7f\x75\x5b\x50\x1f\xac\x02\ \xc6\xa2\x36\x2a\x34\x36\x2c\x6c\x1e\x8c\xcf\x0b\xf7\x97\xc4\xf7\ \x81\xc1\x81\x73\xd2\xcf\x4c\x02\x53\x3c\x97\x2c\x71\xa6\x7e\xed\ \x42\x02\xe9\x62\x97\x28\x21\xfa\xe5\x8d\x1b\x03\xfe\x73\x5b\x4a\ \x18\x15\xb9\x79\x6f\x82\x77\x85\x4a\x65\x80\x65\xdf\x6d\x7f\x8f\ \x1e\xe5\x54\x18\xaf\xde\xb7\x6f\xc4\xf7\xf4\x25\x63\x30\x0c\x9b\ \x35\xdb\xae\x9f\x3f\x7f\x98\x00\x9e\x9e\x39\x63\x84\xcb\x15\x50\ \x98\x08\xd1\x3d\x39\x3e\xbe\x65\xa5\x4e\x9d\xae\x97\x6d\xd8\x30\ \x42\xfc\x17\x61\x5b\xb1\xe2\x75\xe5\x40\x6b\xf7\xd3\x4f\x77\xb0\ \xba\x7d\x42\xb0\xf3\x39\xfa\x56\x1b\xcb\xd2\x8e\xb4\x82\xc1\x5b\ \xcd\xd2\x09\xb1\xb1\x8b\xa8\x1b\xd0\xb9\xb9\x73\xad\x97\xe5\xcb\ \x57\x15\xab\xde\x1a\xf0\x31\xfa\x9a\x47\x47\x86\x84\x58\xe0\x9d\ \xc2\xff\xa5\x6d\x64\x5e\x18\x96\x19\x29\x3b\x21\x46\x92\x00\xbd\ \xfa\xd7\xdb\x5b\xb4\xb8\xa9\x18\xde\x8e\xd6\xad\xfd\x92\x92\x92\ \xfe\x89\x94\x1a\x83\x8d\x2e\x37\xd8\x03\x9c\xba\xb2\x48\x11\x92\ \x5e\x4f\x56\x4b\xb2\xd7\xaf\x7f\x1f\x59\x2c\x9d\xff\x6b\xe7\xb6\ \xf2\xa8\x83\x8a\x52\x0c\xec\xfa\xc6\x8d\x3b\x0f\xf6\xed\x7b\x82\ \xee\x91\x0d\x10\x41\x7b\x6c\xe8\xd7\x57\x10\x40\x2a\xcd\x00\x2f\ \xa6\x55\xbd\x97\xc1\x7d\xdc\xef\xbb\xb8\x6c\xb4\xab\x54\x29\x08\ \x2b\xdc\x27\xc7\x6e\xdd\x4a\x8a\xff\x1a\x76\x77\xea\x74\x52\x31\ \x38\x74\x65\x89\xc3\x35\xc1\xb6\x7c\xf9\x67\x5f\x92\x93\x97\x46\ \x04\x05\xad\xc2\x92\xdf\x44\xbb\x3c\x88\xb4\x0c\x29\x45\x67\x79\ \xbe\x7c\xcb\x44\xda\xc0\x60\xa3\xab\x02\x4e\x8f\x0b\x0b\xb3\xc0\ \xf5\x67\xf1\x5f\x02\xb5\xa7\xc5\x0a\x97\x60\x63\x64\xf4\xf2\xda\ \x86\x0d\xbb\xc8\x88\xd4\x8a\x4d\xc5\x8b\xbf\x7b\x78\xe4\x48\x67\ \x18\x5b\x03\xb0\x80\x3c\xe8\xb6\xc4\xaa\x16\x86\xe7\x4b\xae\x6e\ \xdb\x56\x02\xda\x16\xeb\xe3\xc3\xc3\xe7\xcb\xae\x2e\x69\x05\x83\ \x65\xda\xeb\x81\xb9\xff\x6b\x6e\x5b\x1f\xea\xa4\xf9\xf4\xec\xd9\ \xf5\x10\x9b\xd9\xa7\x6e\x08\xd1\xa4\xc9\x9d\x75\x95\x2b\x07\xee\ \xeb\xd1\xa3\x9a\xb6\x4c\x1a\xb6\x99\xb7\x95\x52\x8d\xc3\xa3\x46\ \x0d\x24\x83\x14\x7f\x0f\x0c\x06\x03\xc1\xc8\x63\xe7\xe6\xcd\x73\ \xf1\xdf\xb1\x63\x11\xb5\xb5\xc5\x56\xf2\xf1\xe7\xcf\x9f\x17\xc1\ \x90\x16\xa7\xd6\xae\x36\x29\x2e\x6e\x0a\x49\x65\x2f\xd3\xd7\x8f\ \xbd\xb0\x6a\x55\x75\x91\x66\x30\x18\x5c\x76\x31\x17\x86\x67\x4b\ \xba\x84\xb2\xb5\x51\x6d\x30\x0f\xa8\x12\x5a\x80\x03\xe5\x0f\x5a\ \xe1\xc8\xcd\x8b\xe7\x5d\xff\x4a\x01\xf8\xff\xab\xf4\x32\x18\xbc\ \x97\xce\xfb\xf0\xe8\xd1\xd2\xef\x1f\x3e\x5c\x8d\xfb\xc1\x5a\xde\ \xc8\x6e\x14\x37\x59\x20\x44\x11\xfc\x5c\x18\xfc\xb0\xba\x48\x91\ \xd7\x49\xf1\xf1\x0b\x14\xa1\x19\xad\xf7\xf3\xcb\x74\x9e\x3a\xb2\ \xeb\x66\x12\x78\x05\x1c\x25\xfe\x07\x0c\x06\x1b\x5e\x4b\x50\x5f\ \xeb\x8c\x37\x57\x66\x76\x87\xe3\x7a\x01\x4c\x81\x5a\xd3\x6e\xbc\ \x97\x5a\x38\x40\x85\xe7\xa1\x14\xd4\xc4\xf5\x2d\xc4\x43\x43\xe0\ \x01\x75\x86\x78\x68\xb0\x3c\xf7\xed\x07\xff\x24\x53\x86\xc1\x60\ \x43\x2c\x4f\xde\x4b\xe8\xcc\xbf\x92\x61\x83\xc4\x8b\x2b\x56\xac\ \xc3\x78\xaa\x86\xb3\xa3\x4d\x9b\xe9\x66\x39\x72\xc4\xd3\xbb\x36\ \xe5\xca\x85\xa2\xee\xc9\x22\x3e\x22\xc2\x74\x67\xbb\x76\xd7\x69\ \xcb\xba\xaa\x54\x29\x43\xf1\xa7\x60\x30\xd8\xe8\x1a\x20\xbd\x6b\ \xc1\x89\x89\x13\x4f\x5a\xe4\xca\x15\xa7\xac\x56\xa9\x09\xc9\x5c\ \x30\x33\xeb\x4a\xc1\x72\x0a\x9a\x23\x73\x85\xf4\x2f\x92\x70\xee\ \xb3\xfa\x9c\x98\x38\x98\xe2\x7a\x30\xd4\xa6\xe2\x2f\xc1\x60\xb0\ \xd1\xe5\x02\xbb\x86\x3f\x7f\xbe\x62\x77\xc7\x8e\x57\xd0\xf0\xe1\ \xbe\x5d\xe3\xc6\xf9\x53\xcd\x0e\x87\x36\x7d\xe0\xa9\x53\x1b\x9e\ \x79\x7a\xae\x83\xa2\xef\x7d\x6c\x2d\xa3\x97\xe7\xc9\x53\x82\x94\ \x7c\xd3\x96\x93\xc9\x60\xb0\xe1\x15\x03\x87\x81\xa6\x60\x03\x19\ \x10\xa7\xfc\xb8\x91\xb8\x76\xa6\xd5\x6f\x67\x87\x0e\x57\xe4\x3b\ \x95\xc0\xc9\xc9\x9f\x3e\x99\x29\x67\x3e\x3c\xef\x03\xfe\x1d\x01\ \x1a\x06\x83\x1b\x32\x42\x65\x37\x0c\xdc\x8b\x9b\xcd\xa0\xbf\xcc\ \xf5\x1a\x05\xee\x04\x4f\xa2\xb9\x5f\x6c\xcf\xad\x5b\x2f\x60\xf8\ \x2c\xde\x7b\x46\xef\x65\x37\x30\x70\xc2\xf5\x1e\x0c\x2d\x27\xae\ \x6b\x41\x4f\xfc\x3c\x55\xde\xa7\x05\x0c\x06\xe3\x43\x50\x50\x93\ \xc3\x23\x46\x9c\x93\xce\x92\xaf\x6b\x2b\x54\xf0\x4a\x4d\x4c\x86\ \x3c\x94\xd8\x8a\x3e\x91\x2d\x6e\x93\x70\xfd\x4c\x5b\xd0\xb4\xc7\ \xea\x18\x0c\x96\x4f\xeb\xf9\x36\x20\xc0\x92\x4a\x7b\xd4\xed\x8f\ \x84\x88\xa1\x3c\x4d\xad\xf3\xdd\x18\x59\x96\x11\xe0\x36\x65\x8a\ \xd3\xc6\xda\xb5\xcf\x90\x81\xc2\xf8\xce\xa7\x3d\x5c\xc0\x60\xb0\ \xe1\x95\x02\x7f\xbf\x7f\xe8\xd0\xe6\x5d\x1d\x3a\x78\xfa\xda\xdb\ \xd7\xd5\x88\xcf\xe5\x07\xdf\xae\x28\x50\x20\xec\x53\x74\x34\x9d\ \xe9\xc6\x83\x13\xa1\x59\x7f\x83\x8c\x10\xc1\xf4\xef\x6c\xe2\xce\ \x60\xb0\xe1\xd5\x02\xa7\x83\xad\xe4\xca\xe6\x46\x01\x71\x30\xe5\ \x82\x85\xc5\x41\x8c\xb7\x10\x12\xd8\x62\x5e\xa7\xd8\xde\x9b\x7b\ \xf7\xda\xfe\x45\xdd\x5e\x3d\xea\x2d\xbd\x48\x88\x32\x42\x57\xc1\ \x60\xc8\x7c\xc6\x1a\x22\x0b\xb1\xa6\x74\xe9\xb9\x54\x4d\x4e\x06\ \x77\x74\xf4\x68\x27\x18\x9c\x9e\x92\x36\x46\x63\x7b\xbb\x76\xf5\ \x21\x23\x94\x63\xa5\x61\x58\xcb\x65\x56\xca\x0a\x6c\x4b\x2b\x2b\ \x5d\x5c\x40\x2a\x1d\x8a\xa5\x32\x21\xa1\x8b\x60\xb0\x97\xb2\xb0\ \x10\x8e\x29\xea\x9c\x46\x91\x65\x75\x47\x73\x5e\xbd\x3a\x33\xc6\ \xc7\x67\xa3\x61\x8b\x16\xfe\x30\xac\xc0\x79\x2a\x55\x6e\xea\xaa\ \x89\x47\x36\xf0\x60\xc6\x74\xdf\xb2\xc5\x0b\x3f\x07\x60\xac\x46\ \x8a\x10\xf7\x55\x42\x2c\xc2\xfd\x10\x70\x21\x3e\x2c\x95\x03\x35\ \x6e\x6b\x6a\x7a\x59\x3f\x6f\xde\x78\xfd\x7c\xf9\x12\xc7\xfb\xfb\ \xc7\x08\x5d\x05\x83\x7b\x7b\x6d\x69\xd0\xe0\x32\xa4\x13\x1a\xe1\ \x67\x5f\xb0\x4a\x16\x6d\x33\x0d\xe5\xb9\x6d\x36\x32\x51\xfa\x2a\ \x15\xe6\x07\xfa\xf6\xbd\x28\xcb\x80\x94\xda\xbc\x78\x94\x0b\x1d\ \xa4\x4a\xf3\x1b\x9b\x37\x3b\xa2\x8a\x21\x0a\x63\x1f\xa4\xb2\xaf\ \x22\xb5\xd6\x5a\xe8\x10\x18\x6c\x68\xd6\x30\xac\x33\xb8\x86\x41\ \xfb\xef\x03\x94\x91\x56\x20\xd3\x83\xee\xbf\xec\xef\xdb\xb7\xbb\ \x0e\x24\x49\xab\xdc\xa6\x4e\x3d\x80\x7f\xd3\x47\xa8\x82\xbd\xc4\ \xbd\xfe\x42\x21\x4a\x90\xc7\x72\x4b\xc3\x86\x77\x65\x13\xf8\x5f\ \xc0\x8e\x77\xf6\xec\xb1\x92\x5e\xcf\x14\x92\x7d\x40\xad\xde\x4c\ \x9d\xaa\x30\x67\x30\xe0\x09\x9c\x43\xee\x76\x30\x05\x8d\x13\x02\ \x77\xb6\x6f\x6f\x4f\x3f\x23\x73\xdf\x9b\x14\x6f\x75\xc4\xb1\xd2\ \x02\x3d\xa3\x97\x45\xbf\x7a\x45\xfd\xa4\xa9\xf4\xa7\x28\x98\xb2\ \xad\x69\xd3\xdb\xb8\x2f\x28\x24\x7c\xd7\xad\xab\x40\xe3\x64\x74\ \x10\x9f\xd9\x8c\x67\x35\x85\x2e\x80\xc1\xa0\x73\x1a\x0e\x3f\xa5\ \x1c\x9a\x37\x27\x83\x4b\x59\x59\xa8\x50\xa4\x86\x38\x50\x2c\xfe\ \xb8\x49\xb4\xa5\xa4\x0e\x79\x33\x0b\x83\x4d\xe4\x8a\xa5\x5a\x53\ \xb2\xe4\x53\xf9\x45\xf1\xab\xc6\x67\x9a\x01\xa6\x6c\x6f\xd5\xea\ \x26\xde\x1b\x25\x75\x58\x6a\x62\xcc\x02\x2b\xb6\x2d\x38\x08\xcf\ \x0d\x44\x16\x80\xc1\x06\xe7\x4c\xe2\xad\xb8\x46\x61\x95\x7b\xf7\ \xf1\xcd\x9b\xe5\x36\x86\x86\xa1\x8a\xd1\xad\xab\x56\xcd\x45\xe8\ \x30\x7c\xac\xac\xa6\xe0\xcc\x16\x43\x46\x07\x43\x7a\x09\xde\x94\ \x5f\x16\xf1\xef\x1f\x3c\xa0\xe2\xd8\x92\x18\x9b\xa0\xac\xde\xca\ \x15\x63\xcf\x32\xdd\x13\xcb\x60\xb8\x8e\x1c\xd9\x84\xfe\x38\xc9\ \xb8\x20\x5f\x17\x63\x57\xa5\xca\x49\xb5\xdb\xbd\x7b\x77\x9f\x33\ \x33\x67\x1e\x45\x5d\xdb\xec\xbf\x30\xd8\x8a\xf3\x85\x28\x90\x85\ \x2b\x5e\xfe\xd7\x37\x6f\x2e\x77\x1d\x36\xec\x2c\x54\xc4\x7c\x10\ \x4a\x20\xe3\x4b\x39\xd8\xbf\xff\x05\xca\x64\x21\x0d\x4d\xf0\x33\ \x6d\x2f\x4f\x4e\x9e\x7c\x0c\x46\x68\x89\xeb\x09\xbc\x97\x04\xc7\ \xca\xbb\x4c\x4d\x11\x63\x30\xb0\x25\x9b\x48\x06\xb6\xa9\x4e\x9d\ \x87\xca\x76\x92\x64\xef\x20\x77\xb7\x01\xab\x43\x6f\x70\x24\xa8\ \x47\xb1\x39\x8a\x65\x81\x6d\x35\xb7\x63\x58\x29\xa2\xc1\x77\xe0\ \xb8\x2c\xde\x66\x0e\x07\x17\x1e\xe8\xd3\xe7\x22\x0c\xe9\x0b\x09\ \x86\xba\x0e\x1d\x5a\x56\x26\x3c\xa7\x90\xb3\x85\x3e\x17\x9c\x28\ \x87\x5f\xf8\xf8\x0c\xf7\x58\xb4\xc8\x49\x76\xfb\x99\xfb\x27\xab\ \x7f\xc1\x74\x4b\x1f\x63\x30\x28\x03\x03\x86\x12\xb9\xb2\x60\xc1\ \xd7\x10\xd8\x5c\xb6\xae\x4a\x95\x40\xfa\x63\xa5\x2c\x0e\xc8\x97\ \x7b\x0b\x09\x18\x59\x7b\x25\xeb\x43\x32\x82\xce\x41\x02\x70\x68\ \xd6\x6c\x25\x8d\x61\x3b\x7a\x5c\x07\xce\x77\x2a\xb0\xe9\xe3\x13\ \x27\x36\xc2\xa3\xe9\x14\xf7\xe1\x43\x19\xd4\xd5\xa9\xbf\x50\x2e\ \x2c\x5b\x76\xf0\xf0\xf0\xe1\x27\x11\x5e\xf8\x48\x9f\xd9\xba\x6c\ \x59\x7b\x1a\xdf\xd2\xa8\xd1\x71\xa1\x01\xd2\x61\xa1\xab\xdc\x86\ \xc6\x4a\x99\x88\xc3\xe9\xb1\xfd\x64\x70\x28\x60\x12\x0c\x2c\xf1\ \xf6\xde\xbd\xdb\x76\xb5\x6f\xbf\x86\x0c\xc7\x69\xe0\x40\x2f\x6a\ \x82\x1e\xfb\xee\xdd\x42\xea\xdf\x85\x31\x43\x90\xe2\x5a\x9f\xa0\ \x39\x79\x6c\x4f\x97\x2e\x9e\x48\xad\x0a\xc5\x6a\x91\x48\x86\x88\ \x6a\x6e\x7f\x64\xfc\x27\x85\x5e\xbb\x66\x83\xf7\x8b\x0a\x1d\x80\ \xec\x29\x3d\x16\xac\xb4\xa9\x61\xc3\xaa\x30\xba\x24\x54\x93\x07\ \x3f\x3e\x7d\x7a\x14\x9d\xeb\xb6\x36\x6e\xec\x4d\xdb\x4c\xa9\x24\ \xe6\xa4\xb1\xa2\xb5\x93\x67\x3c\x7a\x9e\x02\xa3\x3c\x8f\x90\x83\ \x1b\xc5\xf9\xf0\x79\xe3\x30\x36\x58\x7c\x2f\x18\x8c\xdb\xbb\x77\ \xe7\x09\xf6\xf1\xb1\x8c\x78\xf1\x62\x1a\x65\xea\x63\x7b\x15\x82\ \xae\x25\x26\x32\xaf\xb1\x29\x48\x5d\x4d\x17\x92\x21\x5e\xb1\xb5\ \xdd\x83\xfb\xb9\xe0\x64\x64\xf8\xaf\x86\xd1\x45\xe0\x5c\x94\xa4\ \x36\xd2\x01\x03\xbc\x30\xde\x5f\xe8\x28\x60\x54\xce\x6a\x75\x68\ \x95\xea\x3d\x7a\xd8\xad\x0d\x70\x71\x59\xf0\xc0\xd5\xd5\x7e\x43\ \xcd\x9a\x8f\xde\x3d\x78\xb0\x50\xc3\xe0\x72\xa2\xda\xfc\x8c\xb2\ \x92\xe3\xcb\xc5\x3b\xfa\xf5\xeb\x99\x24\x78\x8b\xad\xf7\x6b\xec\ \x04\xce\x08\x06\xe3\x1f\x6e\xc1\x5a\x45\x44\x44\x14\x40\xf0\xd8\ \x3e\xe4\xea\x55\x5b\xad\x9e\x00\x02\x5b\xb0\xcd\x64\x54\x21\x57\ \xae\xcc\x53\xa4\x0e\x70\x35\xd8\xd7\xb3\xe7\x49\x1a\x87\x87\x30\ \x22\xf6\xfd\x7b\x53\x8c\x15\xd0\xe1\xcf\x59\xf3\xea\xda\xb5\xbb\ \xe1\x7d\x55\x87\x10\x88\x70\x10\x5d\x87\x6c\xdf\x2c\x0a\x94\x0b\ \x0d\xec\xea\xd8\x71\x3f\x19\x1b\x04\x90\xde\x4b\xc3\x0b\x45\xf9\ \xd0\xb0\xcf\x49\x49\x33\x65\xc5\x7a\xba\x39\x59\x18\x2c\xee\x3a\ \x50\x5b\xc8\x15\x4e\x86\x25\xd2\xa9\xb2\x5f\x73\x1c\x4e\x88\xa3\ \x34\x7e\xde\xd8\xf8\x10\x7e\xa7\x8d\xd2\xc6\x4a\xc6\xbb\x0c\x75\ \xd1\xe8\xc0\x05\x2f\x2e\x5d\x5a\x0b\xc7\xca\x99\xcd\x3f\xff\x7c\ \x28\x32\x28\xa8\xa0\xa6\xc4\x9f\x4c\x82\xfe\x88\xad\xe4\x8b\x2f\ \x5f\xbe\x2c\xf5\x5a\xba\xd4\x09\x8a\xd1\x61\x30\xce\xa3\x52\x9f\ \xa5\x0a\xa8\x27\x32\x0a\x0c\xc6\xbd\x03\x07\xca\x91\x9a\x96\x8c\ \x73\xed\x01\x49\x45\x79\x37\x98\x82\x66\x8c\xc1\x48\x9b\xa2\x55\ \x82\x44\x5c\xe7\x81\x51\x1a\xb1\x2e\x5f\x13\x21\x1a\xe8\x60\xd1\ \x6b\x6d\xa9\x9d\x62\x0c\x56\x95\x95\x11\x0b\x64\x29\xcf\x2e\xfa\ \x9c\x74\xa6\xc5\xb3\xfa\x60\x4b\xac\x82\xc6\x58\xdd\x4c\x32\x6d\ \x65\x63\x30\x5e\xf9\xf9\x4d\xb7\xaf\x5b\xf7\x01\x9c\x0f\xb1\x64\ \x50\x4a\xda\xd4\x3d\x67\xe7\x2d\x74\xde\xc3\xfd\x68\x1a\x43\x0e\ \xe6\x4b\xac\x1e\x87\xe0\x94\xb8\x88\x77\x3f\xe2\x1d\x8a\xef\xb5\ \xd0\xd1\x15\x3d\x9b\xc6\xaa\x16\x89\xeb\x67\x99\x97\x79\x8b\x1c\ \x2e\x1a\xef\xe5\x03\xab\x89\xcc\x02\x83\x41\xe7\x33\x70\x02\x69\ \x44\x92\x7b\x9d\x8c\x8b\x74\x24\xb1\x9d\xb4\x95\x5b\x31\x7f\x1a\ \x83\x91\x25\xef\xeb\xde\xdd\x1d\x8e\x86\xd9\x10\x73\xb5\x27\x3d\ \x4a\xc4\xc3\xee\x09\x1d\xc7\x93\x73\xe7\x66\xdb\xd7\xab\x77\x97\ \x3e\x03\xc5\xef\xac\xcb\x95\x5b\x4a\xd2\xeb\x22\x0b\xc1\x60\xa3\ \xd3\x03\x0d\xc1\xa6\xd7\x37\x6d\xda\x8c\xb3\x5d\xb0\x43\x8b\x16\ \x2b\x05\x80\xac\x8d\x08\x4a\x07\x43\xd8\xe0\x12\x85\x0b\xc8\xd1\ \x00\x6f\xdf\x34\xc4\xb8\xfc\xc8\x10\x4f\x4e\x9a\x54\xe8\x1b\x61\ \x89\xa1\xa0\x2b\x38\xdd\x58\x88\x0a\x59\xf8\xd9\x4a\x82\x13\x6e\ \x6c\xd9\xe2\x88\x4a\x84\x57\x32\xf5\xcb\xeb\x3b\x53\xe5\x4a\x4b\ \xd9\xf6\xb5\x60\x41\xf1\x4f\xc1\x60\xc8\xf3\xcd\x1c\x70\x81\x00\ \x2c\x4b\x94\xb8\x8d\x56\x54\x09\xf7\x0f\x1f\x9e\x1b\x74\xf1\xa2\ \x1d\x02\xe8\xfe\x72\xdb\x99\x40\x4a\xca\x2f\x7d\x7d\x9b\x68\xf6\ \x1d\x00\xed\xf0\x7c\x83\xcc\x79\x0c\x92\xe7\xc3\x38\x70\x4c\x16\ \x7b\x6c\xeb\x43\x2d\x7a\x1e\xa5\xb4\x1d\xe8\xd7\x6f\x07\xee\xf5\ \xbf\x27\x19\x1c\xab\x7f\xb4\xdc\x7a\xa7\x5f\x1e\x2a\x83\xfb\x2e\ \x2b\xa1\x80\xb3\xf3\xe6\x4d\x40\x70\xf8\x33\xb6\x99\xe1\x28\x5c\ \x9d\x1a\x17\x11\xf1\x07\x4a\x64\x76\x22\x55\xec\xe5\xc6\x5a\xb5\ \x1e\x6b\x86\x1a\xd0\x2b\x40\x1d\x60\x97\xfd\xc0\x43\x48\xf0\x95\ \x32\x43\xd6\x94\x28\xf1\x4a\x8e\xb7\xd2\x81\xcf\xd5\x49\xd6\xd7\ \x95\xf8\x0e\x83\x1b\xa0\x7c\xbe\xad\x8d\x1a\x5d\x26\x47\x8d\x48\ \x67\x30\xd8\xf8\xf2\xa1\x3a\x7c\x1b\x9c\x26\x31\x4a\xea\x17\xb6\ \x9c\x2e\x38\x1b\x59\xbe\xbd\x7b\x77\x0d\x29\x73\x69\xbc\x5b\x4f\ \xb3\x1a\x61\x99\x81\xc1\x53\xa7\xfe\xfd\xc7\xc5\x86\x85\xcd\x25\ \x37\x7c\xd0\x85\x0b\x6d\x7f\xe0\xca\x0b\x03\xac\xd2\x41\x74\xbe\ \x95\x95\xe9\x94\x40\xad\x52\xf2\x32\x97\xe0\x92\x5e\x5b\x67\x06\ \x1b\x5d\xe5\x84\x98\x18\xe3\x0b\xe6\xe6\x07\xd0\x7a\xd8\x8f\xce\ \x72\xc8\xcc\x58\xac\xdd\x88\x43\xca\x96\xa7\xc0\xb9\xe2\x7d\x62\ \xf2\xe4\x93\xd8\x8a\xaa\x4b\x6b\x90\xc9\xd1\x4a\x26\x4b\x37\x14\ \x1a\x30\x11\xa2\x2b\x55\x24\xfc\x20\xa9\x72\xc6\x64\x68\x48\x93\ \xbb\x46\x57\xb4\x57\x3e\x22\x8d\xad\x15\xf8\x42\x9e\x0d\x3f\x81\ \x83\x04\x83\x91\x2e\x59\xfb\x72\x3b\x96\xf8\xf1\xe3\x32\x5c\xa7\ \x08\x80\x3c\x7e\x24\x87\x20\x63\x5e\x4f\xe1\xbd\x8c\x44\x61\xab\ \x39\x9e\xf7\x08\x7f\xfa\x74\xc5\xb9\xf9\xf3\x0f\x45\x05\x07\x37\ \x48\x65\xc5\xc8\x4b\xc9\xc3\x60\x1c\xf5\x0a\xd7\xf5\x44\x70\x19\ \x34\x0f\xf2\x34\x31\xd9\x41\xc6\xe5\xf6\xc7\x1f\x8e\xb8\x5a\x80\ \x9f\x35\xb6\xd1\xef\xb0\xcd\x36\xc7\xfd\x1c\x70\x98\x5a\xf5\x9d\ \xc1\xf8\xa7\x31\x2e\xd9\xf5\xc6\x48\x1a\xce\x66\xf9\xcd\x7e\x9e\ \x56\x80\xb3\x73\xe6\x1c\xc1\xb3\xf6\xf2\xdd\xa2\xe0\xaf\x60\x3d\ \x0d\x43\x1b\x8d\x77\x7f\xc7\x35\x9b\xcb\xb0\x61\x53\x91\xab\x79\ \x8a\x12\x91\x85\x8e\x42\x26\x3d\x1f\x24\xfd\x97\xbb\x07\x0e\x6c\ \x45\x1c\xd2\x54\x86\x18\xa2\xa5\x91\x3d\xc1\xd9\x35\x11\x69\x70\ \x1f\xa3\x43\x43\x57\xc4\x7e\xf8\xb0\x04\x0e\xa5\x00\xb9\xe2\x5d\ \x4c\x57\x75\x34\x06\x63\x7f\xaf\x5e\x3f\xe3\x9b\xff\x81\x52\x6b\ \x77\x7a\xfa\xf4\x03\x81\x81\x81\xdf\xf4\x00\xe2\x9d\xb3\x72\xfb\ \x75\xf3\xe8\xef\xbf\xff\x2e\x93\xa6\x4b\x0a\x1d\x84\xb1\x10\x46\ \x52\xfb\x32\xc5\xb6\x42\x85\xe7\xc8\xbc\x19\x6b\x9a\x2d\xdb\x22\ \x25\x39\x00\x09\xd0\x67\x50\x97\xe7\x4e\xf7\xe4\xfd\xc4\xe7\xe8\ \x0c\xe6\x83\xca\xf4\x5e\x59\x91\xe0\xef\xd8\xad\x9b\xfa\xb3\xc9\ \xde\x79\xff\x1c\x0c\x0e\x9c\xe3\x0f\x71\x9a\x97\x99\x99\x13\x55\ \x19\x48\x63\xba\xaa\x34\xef\xd0\x06\x64\x1e\xda\xec\xee\xdc\xf9\ \x2a\xbd\x87\xd2\x9f\xd3\xba\xae\xb8\x75\x72\xea\xd4\x15\x38\xaf\ \x86\x93\x01\xc1\xdb\x6a\x8d\x1a\xc1\xaa\x0e\x4d\x9b\xde\xba\x6e\ \x6f\xbf\xf3\xed\xbd\x7b\x2b\x11\x1a\x89\xc5\x19\x35\x04\x29\x62\ \x73\x94\x50\x83\x55\x99\x32\xd3\xe9\x7d\x5a\x11\xe9\x9c\x8b\x9f\ \x3b\x81\x51\xe0\x22\xda\x7a\x8b\xf4\x00\x83\xfb\x81\xa3\x95\xb0\ \x89\xcb\x90\x21\x1e\x88\xbf\xc5\xac\x2e\x51\x62\xd0\x37\xde\xcd\ \x69\x5d\xa6\x8c\x1f\xc5\xf0\x9e\xb9\xbb\xdb\xe2\xbe\xa0\x8e\x7f\ \xb6\xba\xf4\xb9\x50\x06\xe4\x86\xaa\x84\xc9\xb8\xcf\x85\x78\xe4\ \x02\xa4\xc4\x2d\x5c\x91\x2f\xdf\x3e\x72\x0a\xf9\x3b\x3a\x6e\xc7\ \xf8\xcf\x42\x02\xdb\xcb\x7e\x64\x70\x90\x7b\x30\xa5\xf3\x2d\x56\ \xc9\x6d\x74\x2f\x57\x76\x57\x91\x5e\x60\x70\x08\x01\xec\x4b\xd9\ \xf8\xb8\x8e\xd4\x38\x07\xd5\x07\x0d\x14\x39\x73\xa5\x1e\x0d\xef\ \x0c\x49\xe5\xcc\x94\x53\x47\x3f\x57\x1f\x70\x84\xfc\x0c\x0f\xc8\ \x89\x02\x7e\x41\x6c\xf2\xb6\x14\xb4\x55\x69\x7c\x86\x66\xea\xf3\ \x5d\xd1\xa2\x8f\x70\x8d\x57\xb6\xa4\x47\xc7\x8e\x3d\x7d\x7a\xe6\ \x4c\x1b\xac\x8a\x4e\x18\x3b\x07\xd6\x11\xe9\x04\x06\x77\xcd\x29\ \x22\xcf\x41\x95\x14\x25\x2d\xa9\xfc\xfc\x88\x1c\x0e\x10\xa3\xb5\ \x50\xde\x51\x40\xed\xac\xe4\x1f\xf2\x65\xbc\xa7\xb3\x49\xc5\x27\ \xa6\x4c\xe9\x8b\x34\xb1\xe7\x64\x48\xc8\xbc\x79\x06\x63\x2b\xa7\ \xe5\x68\x69\x42\xcf\x64\x48\xe4\xaa\xdf\xd6\xad\x9b\x64\xbd\xdd\ \x14\x22\x62\x9a\xe7\xe8\xb9\xec\x87\xb7\x5c\xa4\x27\x18\x0c\xe8\ \x8d\xac\x32\xcf\x95\x2b\x42\xd9\x56\x39\x0f\x1a\xe4\x49\x21\x86\ \xd4\x1a\x34\x22\x76\xf7\x9a\xde\x81\xe7\xef\x24\xae\x5b\xc1\x66\ \x3a\xb8\xe2\x95\xc6\x99\x6d\xb6\xc7\xc2\x85\x2e\xa7\x67\xcc\xd8\ \x47\xdb\x64\x0a\x8f\x28\x31\x45\x18\x11\x49\x37\x24\xdf\xda\xb5\ \xcb\x41\x1a\xda\x68\xb0\xb2\x12\x40\x47\x22\x78\x94\x65\xc9\x92\ \xef\x50\xa5\x71\x0f\xe7\x5e\x3f\x8d\x26\x2b\xe9\x72\x9e\x65\xf0\ \x8a\xd7\x10\xce\x12\xb3\xfd\xbd\x7b\x53\x69\x4f\x32\x79\x33\x61\ \x50\x5b\xb4\x65\xec\x70\x3f\x58\x51\xe1\x5a\x53\xaa\xd4\x13\x2a\ \x01\x92\xba\x9a\xed\x74\xd0\xe8\x72\x82\xed\xc0\x3f\xc0\x22\x24\ \x27\x0f\x26\x83\xc7\xe4\x96\xd9\x47\x6e\x35\x8d\xb4\x3e\xe3\x28\ \x7a\xee\x36\x6d\xda\x71\x38\x9b\x66\xa3\x37\x9e\x39\x85\x59\xf0\ \x7b\xb7\x68\xab\x0a\x76\x11\xe9\x00\x06\x1b\x5d\x41\xf0\xd7\x17\ \xde\xde\x6b\xe9\x9b\x5d\x86\x11\x96\x6b\x26\x06\xc3\xb8\x82\x2d\ \xf2\xe4\x89\x80\xe4\xf9\x72\x5a\x19\x42\xaf\x5f\xb7\x81\x87\x30\ \x12\x46\xfa\x46\xe8\x38\x8e\x8d\x19\xf3\xd3\xfa\x6a\xd5\xfc\x94\ \x55\xdc\xf9\xd7\x5f\x3d\xde\x3c\x7d\x5a\x3c\x95\x8c\x95\x1b\xa4\ \x15\xfa\xe1\xc9\x13\x63\x7c\xfe\x3d\xf8\x6c\x41\x26\x42\xfc\xb2\ \xa9\x6e\xdd\x29\x18\x8f\x91\xdb\xef\x2d\x22\x9d\xc0\x60\xc3\x2b\ \x0f\x4e\x24\xa1\x1f\xe8\xa5\x50\x31\x28\x89\x19\xcd\x07\xf7\x91\ \x11\xba\x2f\x58\xe0\x8a\xe7\xdd\xc1\x22\x60\x05\x78\x34\x5f\x50\ \xed\x5d\x74\x74\x74\x11\x1d\xff\x5c\xb9\xc0\x71\x14\x2e\xc0\xea\ \xfc\x56\x1a\xde\x32\xa1\x01\x32\x2c\x1a\xa7\xb0\x02\x44\x9d\x14\ \xe3\xa4\xea\xfa\x09\xc8\x57\x6d\x4d\x2b\x3b\x09\xf6\x42\xc6\x7d\ \x33\x25\x18\xe0\x59\xe1\xf4\x12\xb3\x65\xb0\xc0\x51\x03\x19\xa3\ \x32\xc0\xd6\xf1\x85\x2c\xe7\x49\x40\x42\xb4\x89\x92\x85\x8f\xb1\ \x36\x34\xbe\xab\x53\x27\x5f\x8c\xd5\xd4\x4c\xb5\x82\x83\xa5\x36\ \x9e\xe5\xd7\xc1\xcf\xd5\x10\x65\x40\xf3\xcf\x9b\x98\x1c\x7a\x74\ \xfc\xf8\x58\xad\xed\xe4\x6e\xe5\x73\x92\x87\x13\x61\x85\x70\xba\ \x0f\x38\x74\xc8\x04\xd7\x4b\x38\xf7\x25\xdd\x3b\x78\x90\x2a\xed\ \x17\x82\x25\x31\x16\xa8\x08\xf1\xa6\x9b\x68\x2d\x83\xf1\xfa\xf6\ \xed\x11\x14\x0c\xa7\x32\xa0\xed\xcd\x9b\x2f\x55\x32\x33\x60\x50\ \xb7\xa9\xe9\x08\xb4\x34\x57\x91\x6b\x7e\x81\x10\x85\xb0\x12\x9e\ \xd0\xe8\x21\x10\x87\xab\x83\xae\xad\x02\xa4\x7c\x26\xb3\x4e\xfa\ \x0a\x09\xca\x17\x85\xd1\x24\x28\x15\xf5\x70\xb8\xec\xb5\xfb\xe9\ \xa7\x67\x54\x85\x6e\x5f\xbf\xbe\x2b\x8d\x1f\x1b\x37\xee\x38\xad\ \x92\x4a\x32\x00\x2a\x2d\x86\xad\x2c\x50\xe0\xb5\x5c\x09\xfd\xd3\ \xb3\xd3\x2b\x83\x65\x1e\x86\x42\xbe\x61\x05\xae\x23\x61\x48\xb3\ \xc1\x68\xd9\x92\xf8\x34\x6d\x31\xe5\xf9\xc7\x8b\xc6\x50\x02\xe4\ \x8b\x1c\x4c\x67\x6c\xc5\xee\xc8\x34\x2b\x7f\x5d\xcf\xe0\x80\xc1\ \x8c\x00\x53\xcc\xf5\xf5\x3f\xd1\xb6\x93\x1c\x26\xa4\x23\x43\x4a\ \xd8\x14\x3e\x40\xd2\x33\x75\x03\x9a\xaf\x99\x08\x40\x5b\xea\x67\ \x9e\x9e\x6b\x94\x7e\x78\x44\xda\x7a\xcf\x16\x22\x8f\x48\x07\x30\ \xd8\xf0\x2a\x81\x46\x96\x65\xca\xd4\x41\xb6\x86\xba\xae\x6e\x77\ \xc7\x8e\x54\xe8\x99\x5b\x4a\xf4\xa5\x10\x21\xf8\x1a\xee\xbe\x70\ \xa1\x3d\xc6\x17\x28\xb9\x8c\x88\x6d\xcd\xd5\xf5\x6c\x9c\x8b\xcb\ \x97\xef\x78\x78\xf4\x28\xc5\xe4\xa6\x20\xdf\xb2\xa1\x62\x44\x28\ \xe6\x7d\x47\x89\xcf\x18\xaf\x2a\xb4\x00\xa3\x3c\x44\x5e\x5d\xd2\ \xde\xdc\xd1\xb2\xe5\x0d\x32\x52\x8b\x02\x05\xea\x89\x74\x04\x83\ \x0d\x2f\x2f\xea\xef\xe6\x9d\x98\x38\xf1\xa4\xaf\x9d\x1d\x95\x02\ \xa9\xc8\x5d\x2e\xdd\xed\x57\xd6\x56\xa8\xf0\x48\x7a\x39\xdd\x2f\ \x5a\x58\x8c\xa2\x2d\x9a\x4d\xf9\xf2\x57\x7e\x00\xdd\x98\xa6\x52\ \xc6\x2f\x17\x0c\xed\x37\x29\xce\x94\x44\xa2\x4c\xa9\xc5\x25\x69\ \x0b\x49\xab\x1f\x19\x9a\xdc\x6a\x8e\x4a\x4e\x4c\x34\xc3\xb5\x8b\ \x4c\x19\x3b\x44\xff\x9d\xf4\x28\x03\x62\xb0\xd1\xe5\x01\x7b\x82\ \x63\xc0\xec\x94\xb9\x4f\xcd\x48\x50\x00\x7b\x3f\xe1\xe3\xc7\x99\ \x30\xb4\xfd\xf0\xea\xbd\xa6\xd8\x17\x9d\xfd\x36\xd7\xaf\x7f\x8f\ \x3c\x7b\x3f\x50\x05\x79\x71\x24\x42\xfb\x9e\x9a\x31\xe3\x98\x0c\ \x8c\x67\xd3\x4e\x02\xa0\x8a\x0a\xc4\x2b\xe3\x94\x5e\x78\x02\x90\ \xa5\x51\xf9\xe8\xf7\xf1\xb9\xdf\xc8\x55\xd2\x1b\x6c\x28\xd2\x13\ \x0c\xc6\x8e\xd6\xad\x3d\x94\x95\xed\xfc\xe2\xc5\xa3\x29\xa9\x18\ \xf1\xae\x53\x08\xa2\x7f\x22\xaf\x20\x6d\x3d\x7f\x30\xa5\xb4\x51\ \xb2\x3c\x29\xbf\x46\x0e\xe6\x00\x5a\xb1\x70\x1d\x0b\xa6\x1c\x19\ \x35\xea\x2c\x7d\xf1\xa4\x62\xb0\xe5\xb1\xb2\x27\xae\x2e\x52\xe4\ \x03\xae\x9f\xc8\xeb\x09\x62\x38\x9d\xc0\x60\x24\xc5\xc5\xfd\xb2\ \xbf\x4f\x1f\x92\xeb\x53\xd7\xa8\x61\x65\xbb\x8f\xb3\x90\x23\x32\ \xf7\xad\x92\x3e\x7d\xfa\x23\x8d\x2b\x4c\x13\x92\xf0\xcb\x6a\x67\ \x0b\xad\x56\x1a\x41\x71\x27\x8d\x15\xeb\x2d\x82\xfe\x6f\x49\xda\ \x82\x56\xfb\x54\x02\xe8\xea\xb3\x1d\x6d\x47\xf1\xf9\xad\x6d\x8d\ \x8c\x14\x99\x87\x99\x22\x1d\xc1\xe0\xf8\x5d\xf7\x37\x77\xee\x58\ \x51\x3f\x38\xfc\x41\x3e\x87\xd1\xc5\x1e\x19\x37\xae\x59\x5a\x15\ \x94\x61\x70\xeb\xa4\xd7\xef\x09\xae\x65\x85\x0e\xe0\x5d\x40\x40\ \x3d\xac\xd8\xe7\x69\xc5\x22\xe3\x59\x5f\xb5\xea\xd3\x07\x87\x0f\ \xf7\x48\xe5\x6c\xd7\x9a\x9e\x3b\xb6\x6e\x7d\x5d\x36\xd5\x2c\x47\ \x0d\x59\x90\xa5\x13\x8b\x5c\xd4\x0f\xe9\x1e\xb3\x63\xb0\xa8\x11\ \x38\x08\x5c\x2c\xf5\x55\xd2\x1c\x9f\x82\xa7\xf3\xa0\xe2\x25\xdc\ \xdf\xbf\x7f\x43\x1d\xca\xcf\xec\x47\x2b\x16\xa4\x1c\xee\x4a\x4d\ \xcf\x68\xe5\x7c\xa6\xc4\x27\x31\x76\x0b\xc5\xbb\xb1\xef\x1f\x3e\ \x5c\xad\xc8\xfd\xe1\xaa\x8f\x33\xe1\x65\x32\xc4\x8b\x56\x56\xe5\ \x04\x83\x91\x41\xe9\x54\x75\xc0\x7c\x22\x0d\x40\x88\xe1\x67\x45\ \x3a\x81\x88\x9e\x78\xbd\x84\x04\x62\x0b\x14\x60\x2f\x92\xc5\x86\ \x57\x0e\x1c\x77\x6b\xe7\x4e\x07\xc8\xb4\xdf\x70\x1e\x38\xb0\x8b\ \x52\x2b\x08\x8e\xd7\x88\x4f\xf6\x10\x1a\xc0\x0a\x77\x9d\x3c\xb6\ \x58\x29\x5b\x68\xac\xe4\x75\xc0\xb1\xd4\xf5\x35\x2b\x56\x72\x06\ \x43\xa5\x4e\xa3\xd2\xd3\x4b\x40\xeb\xe5\x37\xd4\xe1\x95\xdc\xf5\ \x1a\x75\x6c\x4f\x65\x2b\xe2\xb1\x3a\xb0\xe2\xd5\x03\x67\x82\x43\ \x28\xd8\x2d\x6b\x05\x93\xd5\x67\xbb\xd8\xd8\x45\xd2\x49\xa4\x18\ \x56\x49\x6c\xaf\xe3\xa8\x31\x0b\xc6\x1b\x4b\x1d\x4d\x27\x25\x2b\ \x47\xa3\xfe\x6e\x3d\xeb\xab\x30\x32\xd3\x1d\xff\xab\xd2\xd9\xd5\ \xa6\x5c\xb9\x17\xa4\xc3\x12\x1b\x19\x59\x0f\x63\x4b\x28\xc4\xa0\ \xac\x7a\x72\x05\x2c\xad\x0b\xe2\xae\xb2\x6f\x9d\x6a\x7d\x8d\x1a\ \x9b\x28\xdf\x12\xfc\xb2\xb6\x52\x25\x8a\xc1\x15\x97\x45\xbe\x15\ \x60\x48\xf7\x29\x23\xc5\x7f\xfb\xf6\xed\xb1\xb1\xb1\x94\x87\xe9\ \x02\xa6\x20\x91\xfa\x36\x72\x3a\xd7\x93\xbe\x0a\xad\x96\x8a\x4c\ \x3b\x15\x03\x8b\x0c\x06\x83\x8d\x2d\x37\xf8\x02\xf1\xbb\x70\xea\ \xec\x6a\x9e\x3b\x77\x28\xf5\xc7\x43\x96\x8a\x9f\x14\x35\x8a\xa5\ \x2b\x4a\x65\x1e\x52\x73\x47\xbb\x4a\x95\x1c\xa4\x01\x1e\x05\x4b\ \xeb\x80\xe1\xb5\xa2\xfe\x0e\xf4\xef\x93\x86\x93\x40\x82\x4d\x60\ \x38\xdd\xbb\x0e\x1b\x46\x92\x83\x63\x95\x2f\x95\x6d\x4d\x9b\x5e\ \x91\x81\xf2\x81\x60\x5b\x70\x02\x54\xd6\x2e\x2b\x5f\x28\x14\x3c\ \x17\x19\x04\x06\x1b\xdb\x32\xac\x02\x6f\x34\x3b\xbb\x92\xe2\x96\ \xb2\x9a\x41\x51\xf9\x2c\x0c\x4c\x2d\x65\x4e\xc6\x86\xe7\x5d\x1f\ \x9f\x3d\x5b\x8f\x56\x0d\x99\x11\xb2\x55\x47\xce\xad\x15\xc1\x49\ \x74\xbe\x43\xbf\xbb\xab\xe8\xe2\xfa\x00\x32\x0e\x3e\x3e\xd6\xd6\ \x3b\x65\x95\x41\x71\x0a\x2b\xa0\xa4\x29\x3a\x2e\x2c\x8c\x8c\xad\ \x81\xd0\xc0\xd9\xb9\x73\x27\x4b\x63\xa4\xdc\xcd\x46\xf8\x79\x15\ \x8c\x6f\x65\xba\x56\x5e\x30\x18\xab\x8b\x17\xef\x85\x00\xb9\x3a\ \x21\x1a\x5b\x2b\x7f\xe7\xc9\x93\xf3\xae\x2e\x5a\xf4\x1e\x09\xb8\ \x5e\xb5\xb3\xdb\x75\xd1\xdc\x7c\x1f\x3d\x43\x7f\xf3\x4b\xe4\x01\ \x55\xf2\x1f\x91\xcd\x1f\x83\xc2\xd2\xa7\x90\x54\x98\x86\x7b\x15\ \x75\x08\x52\x84\x6c\xb3\x58\x8c\xb7\xa1\xd4\x48\x31\x95\x9c\x04\ \x1a\x51\xe5\x04\xf8\x15\xf1\xc9\x6b\xb8\x6f\x23\xab\x2e\x7a\x51\ \xa5\x85\x52\xb5\x80\x8a\x0c\xef\x88\xe7\xcf\x57\x92\x54\x04\xbe\ \x48\x76\xcb\xd5\xf2\x2d\x38\x3a\x5d\x3e\x17\x83\x41\xee\xf3\xb0\ \xc0\xc0\xe5\x08\x94\xfb\x22\x24\xf0\x1c\xa5\x31\xc5\x92\x93\x93\ \x7b\x51\x85\x42\x5c\x64\xe4\x0c\xac\x6c\x41\x1a\x32\xed\x85\x84\ \x04\x0a\x42\x83\x71\x5e\x7a\x41\x2b\x05\x79\x09\x11\x6c\x56\xb6\ \x73\xbe\x60\x71\x1d\x91\xa0\xcf\xaf\xd1\x58\xc4\x80\x56\x65\xfb\ \x9f\x7f\x0e\x20\x2f\x2e\x25\x7d\xcb\x2c\x94\x30\x3c\x9b\x48\x06\ \x28\xd3\xe5\x3a\xcb\xec\x1d\x2b\x32\x38\xc4\xef\x94\xd5\xfe\x86\ \x89\x10\xcd\x45\x3a\x80\xc1\x46\x57\x0c\x1c\x2e\x57\x84\x26\x58\ \xdd\x5a\xe2\xfc\x16\x08\x27\x84\xab\xb6\x4c\xbb\x02\xa4\x4e\xdd\ \xa6\xea\x04\xd4\xa5\xcd\xc5\x3b\x21\x60\xca\x8a\x02\x05\xa2\xf0\ \xbb\xef\x56\x97\x2c\x49\x92\x7f\x8b\xa5\xe8\xad\xce\x00\x2b\xf2\ \x45\x69\x3c\xa6\x02\x70\x5f\xb4\x68\x35\x79\x36\x15\x83\x52\x56\ \x3b\xba\x92\x21\xe2\x33\xbe\x87\xe6\xcc\xf2\xc3\x23\x46\x9c\xc3\ \x39\x36\x5e\xae\x78\xfb\xd3\xeb\x73\x31\xd8\xf0\x4a\x83\xd9\x48\ \xc2\x0f\xf5\x69\xc1\x64\x44\x38\xcf\x25\xbd\xbc\x7e\x9d\x82\xe8\ \x39\x85\x06\x2c\x8b\x17\x3f\xaf\xd1\x7e\xeb\x39\x2a\x18\xf6\x24\ \xc6\xc5\xd1\x7b\xa6\x10\x02\x32\x53\x0a\x61\x41\x13\x5d\x51\xdd\ \xba\x7b\xf0\x60\x1f\x48\x38\x84\x49\x03\xdb\x75\x70\xc0\x80\x09\ \xa8\xb2\x50\x1b\x21\x2a\x2d\x6e\xec\xed\xd6\x4d\xe9\x0b\xb1\x96\ \xc6\xce\xcc\x9a\x75\x14\xfa\x31\xbd\xae\xae\x5f\x3f\x1d\x15\xf7\ \x96\x78\x27\x88\xc6\x97\x66\xcf\x3e\x5f\x30\x18\xe9\x79\x16\x8a\ \x8f\x8c\x9c\x87\x34\xb1\x73\x70\x3e\x44\x1d\x1e\x39\x72\xa2\x90\ \x50\x56\x00\x6a\xb9\x8c\x7a\xb5\x48\x24\x4b\xef\xa5\x3e\xe8\x32\ \x2e\xd6\x04\x2c\x05\xbd\x95\x81\x64\x70\x08\x38\x2b\xbd\xf3\x26\ \xea\x4a\xed\x5d\xe4\x8b\x17\x73\x51\x41\x11\xa0\x19\x87\x93\x1a\ \x9a\xa6\x60\x2b\xd2\x00\xc5\x58\x92\x74\x08\x25\x52\x58\x01\xbc\ \x15\xe4\xe5\x55\x9e\x1c\x2e\xb4\xaa\x53\xf3\x4d\xbc\xab\x68\xce\ \x0c\x4a\x97\x32\x20\x06\xd7\xde\x81\xbd\xc0\x25\xe0\x10\xd9\x46\ \xeb\xac\x5c\xb1\x36\x83\x29\x54\xfc\x29\xe5\xf0\xea\x83\x7a\x1a\ \x09\xc4\xa7\xc9\xab\x89\xf2\x19\x4b\x92\x3b\x8f\xfb\xf0\x81\x24\ \xce\xab\xd1\xaa\x82\x6b\x7d\x1d\x28\x6f\x1a\xf5\xcc\xc3\x63\x1d\ \x2a\x0e\x4e\x6f\x6f\xd1\xc2\xeb\xb1\x9b\xdb\x46\xa4\xc2\xd5\xa1\ \x95\x98\xfe\xed\x38\x8f\x26\x53\xa3\x4c\x88\xda\xbe\x24\xc3\x83\ \xcc\x85\xc7\x33\x3f\xbf\x02\xb8\x3f\x49\x5e\x50\xfc\x7e\x73\x8c\ \x57\xc1\xbb\x89\xd2\x68\x2f\xa5\xd7\xe7\x62\xb0\xe1\x15\x07\xf3\ \x51\xf5\x00\x9c\x27\x17\x95\x55\x01\xab\x58\x08\xe4\x10\xa6\xa4\ \x52\xaf\x46\x5a\x92\x5f\xb6\x36\x69\x72\x27\xf2\xe5\xcb\xfe\x38\ \x37\x39\xa1\xf1\x07\x69\x4e\x36\x83\x63\x25\x8e\x9e\x49\x21\xdb\ \xdc\x59\xec\xcd\xac\x0d\x8e\x00\x67\x81\xc3\x61\x30\x7b\x49\x98\ \x48\x6d\x60\x9d\x3a\x5d\xc1\xd8\x38\x68\xaa\xdc\xa0\x15\x5e\x3a\ \x8c\x0a\xca\x2f\xa0\x89\x20\x79\x38\x4f\x92\x61\xd2\xbb\x94\x9d\ \x23\xb3\x55\xb6\xa5\x5b\x0c\x8f\xc1\x80\xf7\xb2\x3f\xc5\xea\xa0\ \xaa\x15\x49\x46\x07\x4f\xe5\x65\x52\x56\xd6\x2a\x8f\xb1\xa6\x67\ \x97\x57\xae\xdc\x8f\x70\xc3\x75\xa9\xad\xf2\xc1\xcb\xcb\x2b\x3b\ \xa4\xfe\x9c\xe4\x7d\x92\x59\xce\x9c\x7d\x85\x0e\x01\xd9\x2a\xbd\ \xb0\x65\x54\x9f\xef\xd0\x3a\x3a\xd8\xa1\x55\xab\xb6\x57\xd6\xad\ \x6b\x4c\x1a\xa0\x41\x97\x2f\xf7\x25\xcf\xab\xac\xd5\xcb\x81\x03\ \x5c\x01\x5a\xdd\x70\xe6\xa3\x50\xc9\x6c\xca\xce\xd1\x48\x13\x8b\ \x02\xe7\xa4\x57\x2f\x08\x06\x77\x03\x6a\x43\xd9\x28\x48\x1c\xf6\ \x44\xce\xa5\x1f\xae\x05\x34\x33\x56\xb0\x8a\x45\x22\x46\x17\x8f\ \x95\xe1\x2d\xad\x66\xb2\x9c\x26\xd0\xdb\xd2\xb2\x1e\x56\x82\xb7\ \x64\xac\x48\x8a\x5e\x43\xd9\xff\x26\x42\x34\x92\x0d\x2b\x7b\xe8\ \xc0\x67\x2b\x83\xcf\xb5\x84\x8c\x87\xce\x6e\xb4\x62\xe1\x4b\xc1\ \xf1\xe1\xf1\xe3\xbf\xe1\x33\xdd\xa3\x15\x4d\x68\x00\xa9\x62\xd3\ \x92\xe2\xe3\x4d\x4f\x4e\x9f\x5e\x1d\xde\x5c\xea\x02\xfb\x0a\xbd\ \x12\x76\xc0\x99\xf4\x4a\x1a\xde\x3a\x91\x1e\x60\x30\x64\x7c\x6b\ \x00\x68\xaa\xd9\x9f\x5c\xa9\xc6\x96\x0e\x87\x4f\x54\x9b\x47\xf7\ \x94\x36\x05\xaf\x27\x15\xc8\x26\xcb\x33\xd0\xaf\x60\x71\xd2\xd0\ \xc4\x7b\x8a\xd7\xf0\x2c\xae\x35\x74\x40\x25\xad\x7f\xe8\xb5\x6b\ \x36\x70\xac\xdc\x26\xc7\x8a\x92\x47\xea\x3a\x62\xc4\x4e\x5a\xdd\ \xb4\x4a\xa1\x6a\x49\x39\x42\xa5\x35\x57\x1f\x74\x03\x7a\x4a\x7a\ \x2c\x81\x67\xce\xcc\x90\xe7\xda\xf4\x03\x83\x65\xfc\xb4\xb6\x93\ \xb7\xa4\x77\x32\xf6\xee\xfe\xfd\x5b\xdc\xa6\x4c\xd9\x43\xf7\x48\ \xb1\x7a\x2d\x73\x1a\xdd\xe4\x19\x28\xbb\x92\x7c\x1c\x15\x12\xb2\ \x64\x43\x8d\x1a\x8f\xa5\xa1\x26\xc1\xf0\xec\x68\xcb\x96\xc5\x86\ \x67\x08\x8e\xa7\x84\x67\xcb\x12\x25\x42\xd0\x70\xf2\x25\x44\x6c\ \xe7\x69\x87\x46\xb0\x42\x37\xd0\x68\xcd\x35\x0e\x8e\xa2\xf6\x64\ \x9c\x07\xfb\xf5\xbb\x80\xfb\x0c\x4d\x82\x66\x30\x54\x9b\xea\xd5\ \x5b\x84\xf3\x4f\x08\x5c\xe8\x76\xf4\x07\x8b\xad\xa5\xbd\xb2\xe2\ \xc1\x79\x72\x07\x4e\x96\x85\xda\xad\xb8\x7c\xb7\x6e\x2d\x8b\xb3\ \x53\x38\x55\x27\x6c\xa8\x59\xf3\xbe\x92\x14\xad\x23\x55\xf4\x3f\ \x23\x75\x6d\x2e\x55\xd2\x93\x27\x56\xa3\x9b\x4f\x79\x29\x45\x7f\ \x99\x1c\x26\x74\xce\xa3\x5a\x3d\x8c\xe7\x47\xee\xe9\xb1\xf8\xa8\ \x28\x53\x5a\x2d\xff\x8b\x89\xb9\xad\x44\xa6\x81\x21\xc3\x03\x8b\ \x65\xd6\x4a\x4e\xc5\x69\x42\xc6\x14\x11\x14\xb4\x4a\x91\x65\xd7\ \x5a\x15\xcd\xe9\x1d\x6a\xcd\x8c\xe7\xf3\x6e\x6c\xde\xec\x18\xe0\ \xec\x4c\xa1\x88\x1c\x18\x37\xcc\xea\x74\x2a\xaa\x18\x07\x9b\x69\ \xa4\x88\x6d\x92\x2b\xb1\x1b\x7d\x36\x3a\xcb\xd2\x36\x54\xe3\xfd\ \x51\x60\x13\xf1\x5f\x04\x26\x3c\x48\x5d\x0f\x25\xc4\x2c\x91\x99\ \xe0\x6e\x40\x7a\x52\xae\x41\x1d\x8f\x93\x7d\x01\xba\xa5\xa6\xb0\ \x45\x6d\xb7\x90\xc1\xf1\x04\xcf\xa7\x4b\x29\x85\xc6\xb2\x6c\x86\ \xaa\xb8\x15\xb9\x87\xc3\x60\x45\xa1\x03\x38\xfa\xfb\xef\x35\x90\ \x6f\x7a\x5b\x59\xb9\x91\xf6\xe5\x16\x19\x14\x44\xaa\xd0\x0c\x2a\ \x2d\x41\xae\x9f\x72\x3e\x98\x27\x32\x1b\x6c\x7c\xad\x43\xae\x5e\ \xb5\x95\x62\xad\x7a\xd2\xc8\xf2\xa6\xa6\xb0\x85\xe7\xd5\x85\x16\ \xd6\x55\xab\xb6\x40\xd9\x92\xca\x7e\x78\x4b\xc1\x6c\x3a\x10\x38\ \x9f\x78\xc5\xd6\x76\x0f\x3c\x92\xef\xff\xe9\xdf\x16\xad\xe2\xa4\ \x92\xf6\xaf\xe8\x06\x44\x5b\x14\xc8\xa9\x2d\x41\x90\xf6\x15\xf6\ \xda\xf1\x9c\x82\x93\x25\x01\xe6\xc6\x60\x41\x69\x6c\x0d\x29\x7e\ \x05\xba\x82\x23\xc9\x90\x90\x95\x7f\x4d\xe9\x7b\xae\x40\x31\x4c\ \xc4\xeb\x5e\xa3\x10\x36\x9c\x56\x48\x5a\x05\xa5\xe1\x1d\xd0\x91\ \xcf\xf5\x0b\xc9\x39\x50\x5c\xf2\x99\xbb\xfb\xd0\x7f\x60\x70\x13\ \xa5\xd1\xbe\x06\x7b\x89\x1f\x1d\x81\x81\x81\xfa\xc8\x62\x7f\x09\ \x46\xc5\xc7\xc7\x1b\x8a\x2c\x03\x83\x82\xc1\xeb\xab\x57\x77\x85\ \x21\x7d\x96\xc2\xb5\x5f\x42\x7c\x7c\x6c\xa4\xc2\x96\xf6\xbb\x2b\ \xc0\x14\x28\x49\x1f\xa0\x98\x5d\x42\x74\xf4\x4c\x1b\x23\xa3\x97\ \x34\x66\xa6\xaf\xdf\x56\x47\x56\xf0\xdc\x60\x57\xb0\x9b\xf8\x4e\ \xe0\xef\x72\x86\x6c\xd5\x15\x87\x52\x20\xf2\xf2\x66\x47\xb8\xa4\ \xaa\xf8\x51\x81\xe5\x7a\xb8\x74\x49\xbb\x6b\x1e\xda\xe5\x81\xbc\ \x3d\x29\x55\x89\x4c\x03\x83\x62\x55\x08\x26\x6f\x5a\x5b\xb1\xa2\ \x7a\xc5\x82\x27\x33\x1c\xf3\xd0\x5b\xcb\xd8\x2a\xd2\x16\x12\x95\ \xe6\x81\x78\x7f\x1a\xa8\x47\x84\x33\x65\xb6\xf4\x78\xee\x11\x3a\ \x86\x34\x0b\xe7\x6a\x97\x01\xa1\xbb\xed\xa7\xc8\x48\xb3\x55\x45\ \x8b\x5a\xca\x3a\x3d\x0a\xa9\x94\x14\x3f\x12\x60\x4c\x75\x31\x71\ \xaf\x90\xf5\xf0\x9e\xe4\xbf\xa9\x3f\x99\x54\xa7\x5a\xa7\x04\x34\ \x25\x1f\x64\xaa\xe1\xb1\xd1\x55\x43\x88\x60\xfa\x05\x0b\x8b\x83\ \xa8\x47\x7b\x07\xe7\xd6\x63\x2d\xcf\xa5\x7a\x15\x24\xc3\xd4\x14\ \xb2\x45\xc8\xe1\x17\xf5\x36\xb4\x55\x2b\x2f\xa1\x85\x99\x42\xe4\ \xca\x2a\xd5\x2d\x5a\x95\x40\x6f\x70\x56\x5a\x52\xba\x94\x32\xa0\ \x73\x73\xe7\x1e\xa6\x7a\x43\xf0\xe7\x33\xc6\xc6\xe5\x10\x4e\xf9\ \x28\x53\xe0\xae\xfc\x68\x5b\x98\x14\x8d\x0f\xd4\x42\x4e\xa6\x09\ \x8d\x61\xa2\x9f\x21\x13\xe2\xb0\x43\xf3\xe6\x3e\xd4\x43\x1a\x13\ \x1c\x83\x67\x43\xa8\x3c\x43\xfb\x2c\x41\xab\x24\xf7\x1e\xcb\x90\ \x1e\x02\x2d\x60\x78\x8b\xa0\x31\xb2\x8c\xb6\x95\x58\xe9\x3a\x53\ \x81\x27\x98\xe2\xd8\xb6\xad\x2f\xc6\x46\x08\x40\x3b\x93\xc5\xd3\ \xc4\x64\xb7\xbc\x2f\x0c\x5a\x91\x4c\x9e\x3c\xdf\xbd\x04\xcd\xb3\ \x22\x8f\x31\x3c\x28\xa8\x29\xbc\x97\x54\x25\xee\x87\xcf\xd1\x5d\ \xfc\x05\x94\x32\x20\x29\xd2\x94\x80\x1a\x3b\x63\xdc\x1b\x98\xe7\ \xc9\x33\x84\xc6\xd0\x5e\xf9\x26\x52\xc5\xac\x7e\xa4\xbe\x10\x02\ \xe9\x39\x3e\x54\x56\x0f\x35\x27\x12\x86\xc9\x2e\xcb\x2f\xc2\x20\ \x91\x16\x14\x17\x1e\x6e\x21\xf5\x2e\x66\x51\x79\x06\x2a\x95\x95\ \xda\x2d\x17\xad\x49\xee\xa3\x31\x99\x43\xd9\xf1\x92\xfe\x3d\x04\ \xc0\x06\x60\x0e\x72\xa4\x28\xf9\x97\x48\x0c\xbe\xfc\xe4\xcc\x99\ \x72\x1a\xbb\x95\xaa\x78\x16\x8c\x79\x8a\x46\x3d\xda\x54\x12\xa6\ \xc5\xbd\x5a\xde\x0e\x5b\x32\x7f\xa8\x2b\xbb\xc2\x6b\xf8\x50\xae\ \x0c\x1e\x52\xfc\x47\x95\xc9\xe5\x4c\x7d\x82\x2e\x5d\x9a\x8c\x6a\ \xf9\x03\x32\x4e\x57\xed\x4f\x16\x83\x33\x38\xc3\x52\xc7\x57\x17\ \x38\xf5\x94\xfe\x07\xcf\xc0\x97\xa4\x9e\x86\x2f\x21\xaa\x31\x1c\ \x0c\xe6\xfa\x91\x26\x73\x04\x6d\x4b\xa0\xb8\x3b\x9f\x0c\x8e\x26\ \x49\xc9\xed\x93\xf2\x68\x2a\xf9\x5e\xc9\x2d\x8d\x1a\xf9\xd1\xb3\ \xcb\x96\x96\xf6\x14\x03\xd2\xf4\x48\xa1\xc8\x72\xa7\xa2\x6d\x41\ \xfa\xf5\x22\xc3\xc0\x52\x0f\xa4\x13\x89\x06\x1c\x21\x72\xc5\x0a\ \xc6\x75\x31\xae\x33\xc1\x70\x72\xb2\x5c\xb1\xb1\xd9\x23\x7b\xa0\ \xef\x00\xbf\xee\xeb\xd1\xc3\x53\x4a\xde\xcd\x02\x17\xa1\xda\xfc\ \x38\x6d\x47\x65\xdb\x65\xcb\xac\x48\x82\x06\x47\x5d\x30\x33\x9b\ \x86\xa4\xe6\xcb\x30\x20\x5b\x18\x53\x41\x8d\xed\xf2\x7c\xdc\x87\ \x6a\x94\x01\x8d\xa7\xae\xaf\xe7\xe6\xcd\x3b\xac\xfc\x8d\x91\x11\ \x62\xbc\xcd\x8f\x3a\x89\xb5\xc1\x4e\xb2\x6e\x4b\x85\xf3\xdc\x6b\ \x7c\x03\xc5\x52\x1e\x9c\xd0\x00\x56\xc1\xf9\x94\x29\x4e\xab\x9e\ \xd0\xc2\x55\x5b\xdb\x7e\x08\x2b\x7c\xc6\x61\xfd\x09\x19\xaa\xc8\ \x48\xb0\xd1\xd5\xc4\x36\x73\x16\x4a\x79\x5c\xa1\x1e\xa6\xfe\xe6\ \x97\x5e\xbc\x77\x1e\xc6\xc6\x4e\xe4\x44\xb1\xaa\x50\xa1\x8a\xcc\ \x61\xa4\x9d\x8b\x31\xf8\xb3\xfc\xdd\x1c\x60\x2b\x6c\xed\x9e\xcb\ \x2c\x10\x0b\x5c\x0d\xc0\x1e\x54\x46\x94\xd9\x7f\x77\x30\xa4\x89\ \x3b\xdb\xb7\x5f\x4c\x7d\xc8\xc1\xb1\x52\x9a\xa2\x03\x0c\x4b\x1d\ \xbf\x43\x0e\x69\x60\x4c\x4c\x4c\x31\x0a\xf2\xdf\x77\x71\x19\x84\ \xb3\x6c\x22\xa5\xc6\xd1\xe7\x97\x89\xd2\x3f\x3e\x4e\x4e\x99\xb2\ \x8c\x14\x7a\xe9\xcc\x86\x89\x18\x06\xe6\x54\xfa\x46\x83\x26\x60\ \xf9\x54\x3c\x9d\xc7\x68\xf9\x0f\x3c\x75\x6a\x03\x9e\x57\x11\x19\ \x0a\x86\x34\x9c\xb6\xe0\x22\xca\xcb\x24\x91\x57\xd9\x9c\x64\x36\ \x48\x4d\xf8\xd5\x01\x71\x19\x30\x57\x14\xa0\x55\x42\x02\xca\xd1\ \x9e\xf4\xc7\x0c\xc3\x9d\x61\x9a\x2d\xdb\x60\x69\xb4\x8f\xc0\x6e\ \x59\xf1\x39\xa2\x42\x43\xa7\x38\xb4\x6c\x39\x4a\x59\xc5\x63\xde\ \xbe\x35\x3d\xd8\xbf\xff\x85\x8d\xb5\x6b\xdf\x80\xb7\xd6\x90\x02\ \xe7\xa0\x0b\x1d\x7f\x64\x56\x4e\xed\x7f\xd5\xb6\xe5\xa6\x83\x83\ \x03\x56\xba\x48\x45\x77\x50\xf9\x06\xd2\xce\x06\x27\x28\x2d\x7d\ \x77\x76\xe8\x40\xcb\xff\x30\x91\x99\x60\xc3\x33\x90\x3a\x93\xed\ \xe5\x35\x87\x00\xb0\xdb\x50\x17\xb9\x7e\x78\xfa\xf4\x77\xb9\x4d\ \x5b\x2f\xdb\x6b\xf5\x11\x40\x62\x6c\x6c\x5d\x59\x3a\x54\xd3\xd9\ \xd9\x59\x0f\x19\xff\xea\x2d\x9c\xe4\x29\x3a\x0f\x66\x45\xd9\x0f\ \x98\x5f\x23\xfd\x6d\x20\x68\x0a\x79\xc2\x89\x8a\xbe\x0a\xe2\x8c\ \xc1\x18\x1b\xfd\x6f\x9c\xc8\xaa\x28\xb7\x58\xe8\x63\x65\xb5\x67\ \x43\xf5\xea\x57\xb0\xcc\x5f\x74\x1e\x34\x68\xd4\x37\xdc\xbd\x01\ \xd8\x02\xc4\x84\x3f\x7f\xbe\x82\x8c\x55\x64\x39\x18\x76\x95\x2b\ \x8f\x97\x32\x0f\x27\x70\xcd\x86\x3e\xe6\xbd\x51\x6f\xa7\x7c\x81\ \x7a\xac\xab\x55\xab\x1a\xcd\xb1\x9c\xc3\x0e\x34\xee\xd0\xb4\xe9\ \x2d\x68\x93\x78\x63\x77\x93\x2c\xb5\x48\x6c\xc0\x82\x3a\xa0\x1b\ \xa3\x77\xdd\xde\x7e\x1b\x1c\x79\xea\x12\xa6\x7d\xdd\xbb\x77\xfe\ \xd7\xd6\x72\x81\xed\x64\xd2\xac\x29\x38\x41\xb6\x3d\x9a\xa6\x44\ \xfa\x31\x31\x7f\xd0\x64\x9d\x98\x3c\xf9\x24\x9e\x77\xd1\x32\xc6\ \x2a\xe0\x92\xcc\x6f\xe1\xc4\x88\x8c\x8c\x2c\x48\x32\x08\xd2\xc0\ \x36\x5f\xb6\xb1\xa9\x89\x04\x62\x73\x94\xf9\xc4\xc9\xe2\xd7\x3d\ \x02\x90\x5e\xe9\x7b\x38\xff\xc5\x7e\x78\xfc\x78\x15\x39\xd1\x48\ \x3c\x08\x67\xf1\x07\xca\xee\x86\x6a\xef\x74\xc1\xcf\x80\x32\xa0\ \x79\x4f\xcf\x9e\x5d\x4f\x0e\xa1\xff\x4c\x21\x25\x09\x7c\x52\x4c\ \x47\x29\x84\x04\xc3\x2d\x8b\x15\x7b\x85\xd5\x90\xbc\x9c\x06\x5a\ \x06\x37\x5a\x7a\xd2\xc2\x33\xbf\x84\x84\xf1\xfe\xf1\xe3\x21\x90\ \x66\x7f\x20\xe7\x20\x19\x46\x76\x47\x29\x97\x91\x4e\x07\x32\xb6\ \x29\x32\x9b\x25\x7e\x57\xa7\x4e\x5b\x70\x7f\xcb\x75\xe8\xd0\xbe\ \x57\xac\xad\xd7\xd2\x38\x7a\x10\x90\xb7\xba\xb4\x94\x3d\x6f\xa6\ \x03\x65\x40\xad\xc1\x32\xe2\xbf\x84\x80\x43\x87\xe6\xc3\x1b\xa9\ \x8e\xe7\x10\x31\x51\xbe\x71\x51\x51\x8d\x05\xa0\xa5\x69\x51\x0c\ \xe7\xc0\x68\x78\x3c\xa3\x1e\xba\xb9\xd5\x56\x14\xab\x44\xa6\x81\ \x9b\x4e\xc2\xb0\x46\x52\xb6\x0a\xbc\x92\x01\x58\xc5\xde\xa3\xee\ \x4e\xe9\xfd\x5d\x4f\x06\xc5\x3f\x20\xc1\xe1\x3d\x2a\xce\xdf\x2a\ \xf3\x79\xb0\x6f\xdf\xc1\x70\xa4\x2c\xc1\xbc\x45\x43\xc6\x6f\x35\ \xe9\x68\x6a\x24\x10\x3b\x83\xe5\x45\xa6\x82\x27\xb2\x2c\x38\x05\ \x5d\x57\xf6\x6a\xa8\xf4\xde\xd2\x3e\x68\x63\xcc\x98\x9e\x9d\x9d\ \x3d\x9b\x64\xc0\x3b\xe0\x7e\x88\x9c\xb4\xe3\x78\xb7\xb2\xc8\x2c\ \x70\x35\x42\x2b\x70\x2e\x68\xfa\xe5\xcb\x97\xa5\xd8\x96\x75\xa5\ \x6d\x26\xe6\xe3\x08\xcd\x07\xc5\xed\x5e\x5c\xbc\x68\x2d\x9b\x95\ \x04\x50\x43\x92\xa0\x6b\xd7\x4a\x42\x10\x96\x9a\x76\xf4\x54\xf2\ \x19\x29\x06\x46\x71\x3e\xca\xe1\x04\xcd\x33\x3f\xb3\x88\x27\xb2\ \x09\xbe\x2d\x17\x51\x0b\x5b\xea\x8f\x86\x6f\xca\x45\x42\x82\xb4\ \x07\x69\xeb\x09\xd5\xaa\x60\xec\xbd\xe7\x90\x77\x13\x8d\xdc\x0d\ \x10\xff\xb9\x2e\xcf\x10\x0e\x22\xb3\xc1\x6a\x62\x65\xc0\x1a\x88\ \xdd\x55\x86\xe1\xa8\xbf\x28\x29\xde\xfa\xdc\xd3\x73\xc9\x95\x6d\ \xdb\x0a\xc3\x69\xe2\x25\xd5\xc2\xca\x83\x2a\x59\x36\x94\x43\xa9\ \x38\xa7\xfa\xb6\x87\x47\x8f\x6e\xc2\x4a\x99\x40\xf7\x32\x38\x3d\ \x8c\x33\x8b\x32\xbf\xfc\xa2\x07\x32\x19\x96\xe2\x3a\x4d\xe3\xfc\ \x36\x0d\x4c\xf1\x5e\xb3\x66\x1f\x6d\x5f\xe4\x58\x36\xa4\x18\x3d\ \x83\xb7\xec\xd3\xeb\xdb\xb7\x4d\xc9\x08\xff\xa2\x97\xf6\x90\x8c\ \x29\xa6\x64\xbc\xb9\x7b\x77\xbe\x63\x9b\x36\x37\x68\xc5\x02\xa9\ \x70\x75\x59\x64\x70\xf0\x28\x64\xb1\x8c\xa7\x46\x8d\x9a\x3d\xbd\ \x57\x16\x2d\xda\x0a\x95\x24\x27\x68\x57\xb3\xbb\x63\xc7\x69\x4a\ \xe3\x49\x1c\x17\x94\xdd\xcd\xd5\xac\x11\x77\x65\xf5\xe1\x72\x42\ \x02\x67\x80\x59\x34\x19\x68\x60\xb1\x03\xe3\x2a\x4d\x27\xca\x91\ \x91\x23\xcf\xd2\x56\x45\x29\xbf\xc0\xd8\x54\x70\x19\xd8\x47\xc9\ \x76\xc0\x24\x2a\xe2\x3a\x7e\x19\xd2\x41\x94\xe7\xab\x28\x38\x92\ \x02\xe3\x24\x5b\xa7\x91\x0b\x7b\x93\x44\x68\x0f\xfe\xfa\x6b\x7d\ \x2d\x6f\xf5\xbc\x97\xfe\xfe\x95\xa9\x8f\x39\x56\xc5\x48\x74\xcc\ \x59\x16\xec\xe3\xb3\x9a\x12\x24\x50\x00\xfb\xf4\x43\x60\x60\x56\ \x36\x65\x64\xb8\x9b\x9a\x1a\x62\x3b\xf9\x9a\xb2\x4f\xe8\xcc\x26\ \x35\x37\xa2\xa8\xd4\x44\x1e\xda\xf3\x48\x09\x35\x75\x6c\x48\x21\ \x4d\x38\xe5\x73\x7a\x59\x58\x34\x91\x93\x19\x14\x7c\xf7\x6e\x21\ \x91\x51\x60\xc3\xab\x0e\x4e\xa7\x3e\x01\x50\x89\x0e\x53\x92\xa2\ \xbf\xa1\xaf\xb2\x40\xb3\x35\x17\xce\x74\x3b\x71\xaf\xee\x0d\x2e\ \x53\xc7\x18\x59\x29\xa1\x16\x7a\xe3\xc6\xac\x1d\x2d\x5b\xde\x80\ \xd1\xdc\xa6\x4e\x32\x34\x59\xc8\xf5\x73\x21\x85\x27\xe9\x66\x7e\ \x01\xa3\x8a\x87\x36\xa3\xd3\x8d\x2d\x5b\x1c\x0f\xfd\xf6\x9b\x3b\ \xa5\xee\x60\x8c\xae\xbb\xe9\x7d\x1a\x97\xad\x6f\x33\x16\x7c\xbe\ \x6b\x19\xfb\xe1\xc3\x12\xea\xf3\x16\xfd\xf2\xa5\x39\xee\x0b\x0b\ \x0d\xe0\x70\x4e\x9e\xca\x18\x9c\xc9\x5f\x50\x22\x31\x1d\x07\x70\ \x96\x73\x46\x89\x90\x3a\xb9\x18\xd4\x91\x73\x1c\x9f\xef\xc6\x91\ \x67\x0c\x1d\x58\x6e\xd2\xb7\x21\xca\x81\xae\xcb\x46\x0f\x2d\xc0\ \x14\xa7\x81\x03\xbd\x70\x3f\x07\xec\x0c\x0e\x73\x19\x3a\xf4\x1c\ \x8d\x4b\x8f\xd9\x5d\x0a\xb6\x67\xea\x64\x72\x19\x50\x5f\xb0\x83\ \x5c\xd1\x0a\x82\x1e\xd8\x75\x2c\xc4\x75\x2f\xf8\xf5\xf6\xee\xdd\ \xdb\xf0\xbc\xae\x7c\xbf\x21\xb8\x04\xe4\xe6\x8b\x3a\x98\xb1\xd2\ \x9a\xce\x0b\x61\x0f\x1f\xce\x25\x83\x53\xd2\x89\x8e\x8d\x1b\x47\ \x85\xaf\x79\x85\xc4\x89\x29\x53\x46\x4a\x2f\x66\x12\xb4\x3c\x48\ \xcd\xca\x48\x64\x09\x18\x54\x21\x8e\x80\xf8\x55\x65\xbb\x0f\x39\ \x07\xea\x11\x37\x56\x33\xf1\x58\x87\x8d\x8d\xb7\x98\x60\x5d\xb0\ \x23\xa8\xa2\x06\xed\xd8\x92\x24\x52\x03\x3f\x63\x21\x8c\x34\x62\ \x77\xa6\x34\xb9\x07\xfa\xf6\xbd\x28\xa5\xb0\x95\xec\x96\x31\xe0\ \xb8\xcc\xd5\x5e\x64\x60\xfb\x38\x98\xd4\x00\xa8\xa8\x55\x1d\x46\ \xc8\x9b\xf7\xdc\x3f\xf1\x1c\xd3\xf9\x3c\x8b\xba\xbd\x32\xe0\x6a\ \xde\xaf\x3e\xb3\xa9\x54\xe1\x94\xa1\xae\x28\xf5\xe2\xf0\x1e\x05\ \xc1\x18\x2a\x98\xa4\x2d\xcd\x0c\xa5\xcc\x5e\xf2\xab\x6c\x5a\x68\ \x20\x32\x0b\x5c\x06\xd4\x1e\x5e\x49\xb3\x03\x7d\xfa\x5c\xb4\x2a\ \x5b\xf6\xea\x29\x3b\x3b\x7d\xf1\x1d\x20\x43\x05\xdf\x4b\xe1\xe1\ \x4e\x22\xd3\xc1\x93\x59\x83\xb2\x1c\xec\xeb\xd6\xf5\x43\x6c\xee\ \xa5\x52\x82\xe1\x3e\x7f\xbe\x2b\xd5\x48\x51\xfe\x25\x8d\x91\x5e\ \xa6\xc7\xe2\xc5\xfb\x29\xf0\x8a\x73\xdd\x2d\x29\x1f\xe7\x2a\x32\ \x1b\xac\x16\xfd\x2b\x68\xfa\x4f\x6a\xd1\x10\x52\xb8\xab\x7c\x71\ \x66\x76\xed\x1d\xc0\x90\xdb\xcc\x79\xe4\x58\x51\x34\x15\x91\xe5\ \xfe\x44\xea\xe6\xaf\x93\x06\xf7\x19\x5b\x9a\x08\x97\xdf\x7e\x5b\ \x85\xac\x95\xc9\x70\xc0\xf8\xd3\x7b\xd8\x8e\x36\x14\x99\x0e\x6e\ \xc3\x25\xbe\x13\xca\xb9\x7d\x5b\xd3\xa6\xb7\x4f\x4c\x98\x70\xfc\ \xc1\xb1\x63\x1d\x65\x8b\xe6\x35\x99\x5f\x91\xc0\x13\x59\x04\x15\ \xcb\xc3\xd0\x7a\xf7\x04\x5a\x19\x39\x91\xdb\x19\x07\xf6\xed\x64\ \x70\x7e\x0e\x0e\x3b\xd6\x56\xaa\xa4\x68\xd5\x7b\x6f\x6b\xd6\x4c\ \x1d\x32\x80\x4c\xbb\x89\xc8\x74\x30\x4c\x84\xe8\x89\x79\xf8\x2d\ \x2d\x29\x5d\x4a\xdd\xa4\x46\x19\xd0\xb0\x4f\x1f\x3f\xb6\x35\xcf\ \x95\xeb\x8c\xa2\xaa\x9c\x35\xe2\xae\x5c\xbd\xdc\x05\x9c\x07\x96\ \xda\xda\xa8\xd1\x1f\x32\x8d\xe8\x34\x56\xb6\x29\xd8\x52\xee\x46\ \x3a\x51\x08\x8d\x11\xcf\x9b\x98\x58\x88\x4c\x07\x83\xb2\x83\x90\ \xc0\x40\x3d\xc8\x2f\x50\x87\xd6\xbf\x69\x70\x53\xe5\xae\x24\xee\ \x40\xbf\x7e\xb6\x8a\xe3\x05\x9d\x5f\xcf\xd2\x2e\x06\xbb\x9a\x87\ \x07\x7a\xf7\x6e\x29\xb2\x0e\x8c\xa8\xa8\xa8\x42\x1b\x6b\xd5\x7a\ \xac\xc8\xba\x39\xf5\xef\x3f\x07\x2d\x6f\x17\xa3\x3b\xcb\x71\x2a\ \x27\x81\x4c\xc0\x08\x91\x55\xe0\x2f\xc6\xa1\x7e\xdb\xb7\x4f\x41\ \xf8\x86\xb6\x84\x8e\x14\x18\xff\x13\x63\x2b\x4c\x35\x91\x90\x2c\ \x0f\x43\xb7\xa0\x70\x9a\x4f\x29\xdf\x37\x1e\xd7\x2f\xf8\x62\xbd\ \x2b\xcf\x86\xfd\x44\xd6\x82\x91\x10\x17\xd7\x17\x92\x7d\x97\xa0\ \xd6\x14\x27\x9d\x25\x61\x50\x15\xde\x01\x77\x35\x4d\x50\x23\x91\ \x95\x60\xc3\xab\x02\x8e\x77\x19\x32\x64\x2e\xe6\xe5\x26\xc9\xdb\ \x69\xca\x99\x53\x5e\x2c\xc6\x4c\x35\xcb\x80\x3e\x45\x47\x9b\x41\ \x5c\xf8\x1c\xaa\x4b\xe2\x69\x4c\xa3\x59\xe3\x4f\xa0\x8e\x84\x0b\ \x38\xed\xa8\x0f\x89\xd2\x42\x4d\xd8\x09\x89\xb6\xfe\xd6\x86\x86\ \x3b\x31\x56\x42\x67\x64\xd2\x58\x1d\xba\xe9\xa7\xa8\xa8\xc9\x28\ \x4a\x5e\x4d\xb9\xb0\x8a\x50\x11\xae\x45\xb1\x33\x51\xcb\xdd\x41\ \xb8\xf5\x63\xd8\xe3\xc7\x73\x65\xef\xf3\x5e\x6e\x53\xa7\x1e\xd7\ \x6a\xd6\xa8\x63\xe0\x89\x2d\x0d\x76\x55\x0a\x29\x53\xe9\x26\xc3\ \xc8\xfa\x9e\x70\x3d\xb1\x5a\x4d\xc6\x39\x9b\x9a\x6c\x34\x11\x40\ \x88\xaf\xef\x14\x4a\xeb\xa3\x78\xab\x5d\x95\x2a\x56\x18\xcf\x0f\ \x16\xc6\xca\x16\x4a\xaa\x70\xc8\xdf\x34\x95\x9e\x4f\x5d\x05\x17\ \xbe\xea\xf4\x04\xf1\xfc\x94\x02\x47\x82\xcd\x15\xef\x33\xf8\xfb\ \x2b\x3f\x3f\x6b\x1c\x03\x46\x63\x05\x7c\x08\xaa\x8f\x07\xd4\x37\ \x0e\xcf\xfe\x6d\x2a\xdd\x0c\x92\x02\xa0\x8c\x15\x4c\xf4\xef\xb8\ \xf6\x21\x29\x76\xea\x1a\x84\x31\x43\x4a\x35\xe2\x8a\xe5\x8c\x91\ \xb7\xd3\x4e\x72\x00\x6b\x22\x94\x33\x1a\xdb\x4b\x75\x19\x10\x14\ \x00\x2e\xfd\x4b\xcf\x6d\x0c\xc4\x7f\xb6\xd2\x24\x7f\x83\xb1\x94\ \xaf\x29\x32\x03\x6c\x88\x95\x69\x1b\x49\x8e\x93\xd3\x33\x66\x58\ \xfd\x4b\x2b\x41\x18\xd8\xd2\x74\xa2\x0e\xaf\xd4\x01\x08\x7d\x10\ \xec\xd1\x48\x62\x13\x0e\xee\x5b\x0e\x0d\x1e\xbc\x0d\x9a\x2c\x56\ \x51\xc1\xc1\x15\x05\x20\xeb\xf4\xea\x53\x70\x17\x46\x58\x49\x64\ \x08\x38\x5b\x05\xec\x07\xce\x00\x73\x89\xff\x10\x54\xff\xa5\xb3\ \xdf\x85\xa5\x4b\x6d\x60\x68\xd3\x2b\x74\xe8\xb0\x7f\xa4\xbb\xbb\ \x0b\x86\xf5\xc1\x9c\x60\x76\xd0\x7b\x89\x4a\x55\x06\xd1\x58\x3b\ \xdc\x6b\xe6\x0a\x5e\x04\x07\x98\x09\xf1\x41\xa4\x0d\x0c\x06\xeb\ \xae\x20\x2d\xcc\xdf\x4c\x4f\x2f\x51\x5b\x1f\x13\x2b\x5a\x53\x92\ \x7f\x23\x49\x88\x3d\x5d\xba\xb8\x5c\x5a\xb1\xc2\x01\x9a\xf6\xe7\ \x65\xec\xef\xde\x77\x74\x0e\x65\x30\x18\xc1\x97\x2f\xf7\xa4\x6d\ \x25\xb2\xd6\xbd\x35\x57\x78\x18\xdb\x63\x64\x4d\xc4\x40\xc3\x9e\ \x62\x7c\xf3\x65\x66\xfc\xa8\x6d\x4d\x9a\xa8\x73\x38\x91\x21\xf1\ \x9b\x48\x3b\x18\x0c\x0e\x2b\xa0\xfc\x47\xad\x08\x86\x92\xa0\x2e\ \xb2\xc0\xb5\x92\x54\x18\x3b\x49\x52\x70\x9a\x7a\x1e\xc1\xbe\xbe\ \xbd\x65\x9f\x32\x17\x8d\x96\xbe\x07\xd3\x70\xbe\x63\x30\x38\x88\ \xee\x6d\x65\xb5\xfb\xdd\xc3\x87\x9d\xa5\x11\x8d\x07\x53\x1e\x1c\ \x3e\xbc\x46\xbb\x3f\x02\xda\xf4\xe6\xa3\x67\xdb\x5b\xb6\xf4\x16\ \x00\xb6\x97\x76\x74\x0f\x26\x80\x4b\xff\x5e\xf5\x33\x83\xc1\x46\ \xd7\x04\x6c\x2c\x00\x53\x3d\xbd\x6e\x64\x44\xf0\x5a\x9a\xa4\x92\ \x78\x3b\x40\x4a\xc3\x39\x09\x00\xdb\x51\x1f\xe4\x01\x26\xa1\x1d\ \xd4\x63\x64\x4b\xc4\xa4\xb1\x33\x10\x83\xc1\xf0\xda\xb0\x21\x2f\ \x95\x8d\x58\xe4\xc9\xf3\x8a\x82\xe4\x5a\x05\x93\x11\xa8\xd9\x8a\ \x89\x0c\x09\x99\x8d\xfb\x6a\xe0\x57\x2a\x80\x85\xb1\x2e\x46\x22\ \xae\x39\xae\xa4\xad\x69\x8d\xf1\x2b\x7f\xd1\x5d\x86\xc1\x60\x90\ \xf7\x91\x3c\x94\xd0\xdb\x57\xf7\xbc\x86\x07\xf3\x2a\x0c\x88\x8c\ \x6b\x9d\x6c\xf1\x14\x45\x7a\xfa\xd4\xc0\x9d\xc6\xc0\x94\x7b\x07\ \x0e\x6c\x46\x1b\xdc\x89\x10\xd4\xb9\x67\x63\x68\xd8\x6e\x55\xb1\ \x62\x23\xb1\xda\xc5\x4a\xbd\x95\x6d\xbc\xcd\x64\x30\xbe\x5d\xab\ \xb5\x0a\x4c\x21\x42\x33\xf3\xbe\x75\xd9\xb2\xf7\xd5\xdd\x3f\x55\ \xaa\xd7\x48\xb6\x75\x97\x3d\xb2\xc7\x20\xab\xbd\x30\xc6\x62\xd0\ \x1b\x3b\x74\x4f\xb7\x6e\x07\x15\xfd\x15\x6c\x31\xed\xa2\xde\xbd\ \xab\xb4\xae\x4a\x95\x67\x10\xb0\xfd\x8c\x3a\x3d\x6f\x34\x2c\x49\ \x4d\x64\x87\xc1\x60\x6c\xaa\x5d\xbb\xc1\xa6\x3a\x75\x7c\x50\x6f\ \x47\x46\xf6\x15\x86\xe5\x0e\xc5\xb0\xe5\xa4\xb1\x22\xab\x12\x46\ \x82\xfa\x30\xc2\x49\x52\x51\x2c\x86\xae\x48\x15\xfb\x48\x57\x8f\ \x45\x8b\xf6\xe1\x99\x19\x8d\x1d\x19\x35\xea\xac\xfc\x9d\x3a\x1a\ \x06\xdd\x49\x3a\x57\x72\x0b\x35\x18\x0c\x16\xa9\xfd\x23\x3a\x34\ \x74\xc5\x8e\xd6\xad\xaf\xc8\xda\xad\x9b\x90\xf4\x3e\x74\xc9\xce\ \x4e\xe9\x57\xae\xa2\xb6\xbc\x1a\x8a\xd0\x97\xa9\x09\x25\xdd\x43\ \xea\x6f\x37\x55\x2d\x43\x2a\xe0\x36\xb2\xe1\x17\x6a\x77\xe7\x54\ \x8a\x2f\x4d\x84\xe8\x2b\x14\x30\x18\x82\x0d\xcf\x90\x44\x4f\x49\ \x5b\x1f\x5d\x42\x9f\x41\xc0\xe8\xce\xd6\xc6\x8d\xcb\xca\x55\xaa\ \x89\x62\x6c\xa4\xcd\x48\xd5\xe6\x38\xf3\xdd\xa5\x56\x4f\x58\xe9\ \xa8\xc3\xeb\x5b\xd9\xbc\xb0\xa6\x7c\x7f\x18\x0c\xcd\x1d\x46\xf6\ \x4b\xd8\xa3\x47\xd5\x3c\x16\x2e\x74\x49\x5d\x3e\x80\xc1\x60\xc3\ \x6b\x0f\x9a\x4a\x2a\xb5\x5a\xaa\xe3\x13\x26\x6c\x72\x9b\x36\xed\ \x38\xc6\x8c\xa1\x2e\x56\x13\xe7\xb5\x58\xe9\x64\x49\xbe\x77\xf0\ \xe0\x16\x8c\x77\xd5\xa8\x4c\xe8\x85\xe7\x71\x74\xce\x33\xcb\x99\ \x73\xdf\x9b\x7b\xf7\x06\xe1\x79\x75\x91\x3a\x18\x0c\xae\xe5\x02\ \x0d\xc1\x6c\x1a\x63\x6d\xc0\xd9\xa0\x11\x0c\xa9\x86\xb2\xe2\x1d\ \x9f\x38\xd1\x0d\x63\xe3\x40\x3d\xcd\xde\x6b\x81\x6e\x6e\xeb\xe8\ \x4c\x88\xed\xe9\x73\x2f\x53\xd3\xb4\xaa\x44\x33\x18\x0c\x8d\xc6\ \x92\x45\x71\x66\xbb\xba\xa5\x41\x83\x7b\x32\xef\xb2\xa0\xd0\x02\ \x72\x2f\xb7\x93\x41\x5e\x5d\xbb\x76\x37\x9e\xd7\x17\xff\x08\x0c\ \x06\x1b\xdf\x88\x2f\xc9\xc9\xe4\xc9\xac\x2a\xab\x0d\xfa\x82\x5d\ \x05\x20\x57\xc0\xa4\x0d\x35\x6b\xde\xc7\xf3\xc9\xe0\x5f\xc6\xe5\ \xa4\x63\x86\x3a\x07\xd5\x12\xa9\x82\xc1\xe0\x6e\x40\x86\x1a\xee\ \x7f\x5f\x30\x45\x36\x25\xb9\x88\x33\x5c\xf2\x33\x4f\xcf\x75\x78\ \xa7\x52\x2a\xb1\xbf\xfa\xe0\x62\xbc\x67\xbc\x58\x88\x9a\x8a\x0c\ \x04\xee\xc3\x30\xfe\x19\x5c\x25\xfe\x1c\x0c\x06\x57\x94\x23\x20\ \xee\x4d\x86\x46\x86\x67\x55\xa6\x4c\xe8\xfb\xfb\xf7\x47\x0b\x2d\ \xc0\xa8\x96\x2b\x41\x73\x85\x18\x5b\x28\x80\x9d\xed\xda\xed\xa6\ \x7b\x78\x47\xd7\xfe\xf5\xaa\xc8\x60\xb0\x4c\xdc\x10\x5a\xd5\x14\ \xb5\x68\x18\x5f\x38\xae\x03\xb4\x9b\x59\xa0\x05\xf3\xb3\x5b\x8e\ \x8e\xdb\x2e\xae\x58\x71\x00\x5a\x8e\x0f\x65\x4a\xd8\x74\xbc\x1f\ \x81\x70\x43\x58\x42\x6c\xec\x22\xea\x1e\x2b\xfe\x12\x0c\x06\x1b\ \x5e\x25\x90\xfa\x20\xec\x81\x61\xbd\x46\x42\xf4\x25\x0d\x83\xdb\ \x01\xa6\x84\x5e\xbb\x66\x43\x67\x40\xb0\xd7\xc7\xb7\x6f\x67\x60\ \x35\x7c\x4d\xe3\x44\x9f\x35\x6b\xf6\x62\xbc\x89\x48\x13\x18\x0c\ \xd6\xce\xfc\x05\x0d\x48\x16\x24\x27\x26\x92\x63\xa5\xa8\x00\x10\ \x4c\x3f\x44\xab\x59\x78\x50\xd0\x10\xc5\xe3\x89\xab\xde\x96\x86\ \x0d\x3d\xc9\xd8\xd6\x57\xaf\xfe\x08\xf7\x53\xbf\x6f\x3b\xc9\x60\ \xb0\xe1\xe5\x06\xab\x83\x2a\x99\xb7\xa9\xce\xb9\x5c\x53\xaa\xd4\ \x69\x45\xde\x81\xfa\xa2\x21\x8f\xf3\x3e\x25\x3e\x3f\x75\x77\x5f\ \x4f\x32\x72\xb2\xb5\xd3\x60\x70\x19\x38\x99\xda\x33\x8b\xb4\x81\ \xc1\x60\xbc\xf4\xf5\x2d\x8b\xb6\x4c\xc1\x72\xfb\x18\x80\x73\xdb\ \x3e\xf0\x19\xdd\x43\xb8\xe8\x0a\x8c\xed\x37\x12\xa6\xc5\xd8\x0d\ \x2d\xa7\xca\x3b\x5c\xcb\x8b\xb4\x81\xc1\x60\xc4\x47\x44\x8c\x40\ \xb7\x19\x0f\x24\x47\xdf\xa1\x8a\x71\x32\x28\x14\xb8\xc6\x22\x17\ \x73\x39\xc9\x82\xe3\x7e\x2b\x8d\x6d\xfb\xe5\x97\x0b\x0f\x8f\x1f\ \xdf\x44\x72\xe0\x48\x15\x8b\xc7\xbb\x8f\x30\xbe\xc4\x58\x08\x23\ \xf1\xef\x03\x83\xb6\x35\x22\xa3\xc0\x4d\xea\xfb\x83\x26\xb7\xf7\ \xee\xdd\x06\x63\x52\x97\x05\x1d\xe8\xdb\xd7\x8a\xb6\x92\x48\x88\ \x8e\x46\x4d\x5e\x30\x3d\x07\x7b\x80\x7d\xdc\x17\x2c\xd8\xa7\xb1\ \xe2\xc5\x9b\x08\xf1\x2f\xeb\x36\xc3\xc6\x96\x8d\xb6\x3a\xa0\x17\ \x69\xf0\x8b\x8c\x02\x1b\x9e\xd1\x6b\x7f\xff\x55\xbb\x3b\x77\xbe\ \x7a\x76\xde\xbc\x31\x54\x29\x4e\x15\x08\x1b\xeb\xd4\x21\xe7\x49\ \x35\x21\xb1\xbb\x63\xc7\x81\x64\x6c\xf0\x78\xc6\x22\xa5\xec\x3e\ \xb4\x35\x67\x8a\x7f\x17\x18\xf0\xa8\xf9\x4b\x11\xd4\x67\x22\x23\ \xc1\x86\x57\x06\x1c\x4d\x14\x80\x65\x89\x12\xf7\xc9\xe8\x56\x97\ \x28\xd1\x43\xee\x34\x72\x2a\xe1\x04\xa5\x5a\x01\x9c\x2b\x33\x53\ \x86\x60\x7c\x22\x56\xbc\xe6\x3f\xb6\x8a\x36\xaf\x70\x0d\xa9\xa8\ \x92\x26\x19\x9a\x1d\xc1\xd2\xad\x9d\x09\x60\x78\x2d\x5d\x3a\x09\ \xe1\x83\x78\x18\x1d\x65\xac\x3c\x00\x03\xc1\x14\xab\x52\xa5\x5e\ \x25\x25\x24\xcc\xa3\x00\x3b\x1c\x2f\xad\x30\xf6\x41\xcb\xb1\x72\ \xcb\x58\x88\x0a\x42\xa7\xc1\x48\x2d\xde\xa3\x4a\x11\xc2\x4e\x4f\ \x4f\x2f\x49\x00\x06\x85\x0a\xc5\xd3\x7b\xd2\x10\xf3\x92\x42\x95\ \x4c\xd2\xcd\x00\xf0\xb9\xb9\x8d\xa9\xe9\xde\x41\x47\x8f\xda\x57\ \xe9\xd9\xd3\x3b\x4f\xc9\x92\x31\x2a\x95\xca\x48\x00\x6d\xcc\xcc\ \xce\xe6\xd0\xd7\xf7\x98\xa6\x52\x7d\x8e\x7a\xf1\xc2\x05\x43\x45\ \x2a\x75\xea\xe4\xd1\x77\xef\x5e\x87\xea\xfd\xfa\x9d\xcf\x96\x2d\ \x5b\xed\x1c\x2a\x15\x55\xac\xff\x48\xbd\xf3\xd8\xe0\x30\x61\x43\ \x54\x42\x34\xab\xd4\xa5\x8b\x9f\x00\x72\x15\x2a\x14\x8b\x4b\x1c\ \x8c\xac\x11\xae\xfe\x78\x36\x0b\xbf\x44\x09\xba\x76\x22\x3d\xc1\ \xc6\x46\xbb\x88\xb7\x58\xd9\xf6\x04\xec\xdb\xe7\x32\xe4\xd8\xb1\ \x03\xed\x96\x2d\xbb\x8f\xb1\xec\xa5\x20\x6e\xd4\x60\xdc\xb8\x6b\ \x78\x7e\xab\xb0\x10\xed\x71\x2d\x96\x2d\x7b\xf6\xcf\x41\x9e\x9e\ \xad\x6f\xac\x5f\x9f\xa7\x8b\x9d\x9d\x73\x2b\x63\x63\x57\xac\x7e\ \x25\xf1\x05\x39\x27\x95\xfc\xcd\xb9\x98\xd7\xa3\x42\xb7\xc0\x90\ \xe7\x82\x97\x10\xca\x09\x7b\x74\xec\x98\x5a\x61\x78\x7f\xef\xde\ \x94\xf9\x6e\x4c\xe5\x26\x74\x4f\xb4\x2c\x5e\xfc\xdd\xb6\xa6\x4d\ \x1d\xd2\xb7\xb7\x17\x3b\xaa\xd6\x56\xa8\xe0\x68\x8a\x15\x8c\xe4\ \xf9\x70\x7f\x1b\xd7\xc4\x95\x05\x0a\xbc\x96\x4d\xe7\x8d\xe4\x7b\ \x7d\xc0\x94\xe3\xe3\xc7\xbb\x41\x57\xe5\x3c\x0c\x34\x91\xe6\x0c\ \xd9\x2a\x0b\xe9\xec\x87\xdc\xcc\xcb\x02\xa0\x78\x1e\x85\x11\x4c\ \x84\xe8\x4d\xff\x9d\x35\x25\x4a\x5c\xd1\xa1\xe6\x87\x0c\xda\x26\ \x62\x82\x36\x83\x29\x9e\xa6\xa6\xce\xe7\xe6\xce\x9d\x28\xd5\xa9\ \x12\xe8\xba\xb2\x60\xc1\x27\x2b\xf2\xe5\x8b\x86\x4e\x63\x52\x88\ \x8f\x8f\x2d\x26\x6f\x09\x58\x50\xa4\x27\xd8\x81\xd2\xf1\xb1\x9b\ \xdb\x46\xc4\xe0\xae\x43\x7e\x2f\x18\x72\x7b\x1e\xd1\xaf\x5f\xaf\ \xd0\xd4\x43\x59\x24\x44\x29\x52\x18\xc3\x97\x5e\x10\x2a\x14\xc6\ \x05\x79\x79\xd9\x41\xa2\xef\x16\xcd\x91\x0c\xa0\x7b\x0b\x00\xde\ \xe5\xca\x30\xb4\x8f\xca\xb8\xbf\xa3\xe3\x76\xcc\x57\x59\xa1\x13\ \x60\xa8\x30\x29\x6f\xa5\xeb\x39\x06\xcd\x09\xe7\x43\x89\xb8\xaf\ \x9c\xac\xaf\xdb\x5b\xb5\x3a\x8f\x58\x90\x2b\xdd\x23\x5e\x74\x31\ \x3e\x3c\x7c\x08\x26\x9d\xca\x4c\xa6\xa6\x7b\xbc\x8e\x8d\xae\x0a\ \x38\x05\x34\x95\xec\xa4\x9d\x5b\xe9\xf2\xdb\x6f\xea\x9c\x4c\xac\ \x86\xcf\x37\x54\xaf\xbe\x38\xec\xe1\xc3\xb9\x57\xed\xec\x76\xad\ \x2e\x5e\xfc\xcd\x7d\x17\x97\x8d\x8a\xdc\xc3\xf1\x71\xe3\xf6\xd0\ \x9c\xc9\xc6\x25\x1f\x75\x68\xbe\x18\xd7\xb7\x6c\x19\x8e\xc9\x53\ \x97\x95\x60\x1b\xe3\x8d\xab\x01\x34\x1a\xdd\xbc\xd7\xac\xd9\xf7\ \x29\x32\xd2\x0c\x9e\xb3\xd7\x50\xa7\x8a\x80\x66\xa3\xd9\xd3\xb3\ \x67\x8b\x63\xb2\x43\xa4\x77\xec\x66\x86\x1c\xd4\xd9\xf0\x8a\x81\ \x45\xbe\xf1\xac\x86\xe7\x92\x25\xce\xe8\xe8\x1a\xa6\x34\x16\x81\ \x00\xed\xb9\x98\xb7\x6f\x17\x53\x89\x90\x00\xc6\x0b\x91\x03\xbb\ \x91\x40\xcc\x59\xec\x45\x0b\x8b\x03\x96\xc5\x8a\xbd\x92\xef\xfa\ \x49\x39\xf7\x2c\x06\x4f\x70\x49\x70\xea\xb5\xf5\xeb\x77\xa1\x47\ \x9a\x39\xee\xf5\x1f\x9d\x3c\x39\xc6\x6f\xdb\x36\xeb\x35\xa5\x4b\ \xaf\xa6\xc9\xa2\x55\x0e\xe3\x6d\x05\x00\x37\xf5\xfd\x65\xfa\xfa\ \x09\x08\x1b\xdc\x71\x1d\x3a\xb4\x94\xf8\x06\x32\xac\x91\x21\xcf\ \x57\x03\xc8\xf5\x99\xf8\x6f\xdf\xbe\x7d\x4b\xa3\x46\x97\xa0\xa1\ \xe2\x7b\x76\xf6\xec\x0a\x8a\x91\x52\x7d\x1d\xcd\xd9\xc9\xa9\x53\ \x4f\x60\x6c\x24\x42\x0a\x0b\xa8\x1d\x17\xce\x78\xde\xa7\x16\x2e\ \x2c\xa6\x79\x76\xcc\xda\x86\x24\x5c\x56\xd2\x04\x1c\x0a\xe6\xc6\ \x64\xec\x97\x5b\x92\x24\xd4\x6c\x05\x61\x82\x49\xb5\x2a\x87\x00\ \xb0\xda\x3d\x40\x3e\xe0\x1b\xb9\xed\x69\x29\x83\xb0\x6f\x71\x25\ \xe3\xcc\x2b\x27\xd3\x8a\x0e\xf4\xe0\xd0\x0c\x0b\xcc\x72\xaf\xec\ \x16\xe0\x64\x39\x0f\xcd\x95\xd5\x8d\xe4\x1a\x68\x55\x83\xa1\x91\ \xc8\x91\x01\x98\x0b\xec\x0a\x9a\x80\x0d\x35\x0c\x6e\x34\x18\xa5\ \x03\x39\x9a\x8c\xeb\x0e\x0e\xb5\x1c\x9a\x37\xf7\x25\xef\x17\xa5\ \x15\x85\xdc\xb8\xd1\x58\x48\x20\xe1\x36\x18\x0d\x2d\x5e\xc8\x82\ \x4b\x95\x99\x81\x41\x6b\x0d\xe9\x80\x33\x02\xc0\xef\xac\xa4\x7b\ \x49\xcf\x0c\x95\xfb\x66\xe3\x2b\xa8\xe9\x58\x51\x7a\x25\x24\x25\ \x25\x35\x14\x1a\xd0\xee\x7f\x07\xc7\x4c\x31\x1c\x17\xa2\x70\x66\ \xf7\xd2\x8d\x2f\x45\xae\xe7\x1a\xf9\xc0\xd5\xd5\x1e\x5d\x43\x5d\ \xe9\x5c\xa1\x21\x76\x1a\x06\x55\xaa\xc0\x9b\xfb\xf7\x97\xc6\xe4\ \x5a\x90\xeb\x99\xbc\x67\xe4\x54\xf1\x32\x33\xb3\xc2\xbb\x39\x21\ \x82\x1a\x80\x95\x30\xce\x79\xf0\x60\x0f\x6c\x41\xef\xec\xef\xd9\ \xb3\xc4\x1f\x42\xe8\x67\xf8\x16\x86\xa1\x82\x2e\xca\x39\x32\x3a\ \x9c\xb5\xcf\x90\x1a\xd8\xb7\x6a\xea\x28\xb4\x83\x94\x31\xb5\xa4\ \xdf\xd2\x1c\x39\xc6\x08\x9d\x00\x1b\x5e\x0d\x70\x0c\x68\x24\x24\ \xa0\x38\x1c\x47\xf1\x38\xc4\xe8\x82\x68\xb2\x90\x03\x78\x1d\xe1\ \x02\x6b\xbc\xb3\x80\xde\xb5\x32\x34\x6c\x4f\xe3\xfb\xba\x77\xf7\ \x26\xaf\xdb\x87\x27\x4f\x56\xe3\xda\x14\x63\xce\x60\x0c\xb8\x80\ \x8c\x4f\x64\x08\x18\xc9\xc9\xc9\x6d\xf6\xf7\xea\x75\x09\xde\x64\ \x25\x34\x40\xba\x29\x26\xdf\x98\xdf\xb2\x68\xa9\x1c\x08\x27\x0b\ \xcd\x4b\x69\xa1\x13\xe0\xb0\x41\x0d\x8d\x7d\x7f\x41\x2a\x29\xa1\ \x89\xc4\x24\x45\x9c\x99\x39\x73\xb7\x3c\x43\xfc\x0a\xe6\x93\xef\ \xec\xa7\x77\x9e\x7b\x7a\xda\x60\x35\xdc\x80\x9f\xe3\x61\x9c\xe3\ \x0e\xf4\xee\xdd\x72\x75\x91\x22\x4a\x11\xe6\x5d\x30\xe3\x54\x89\ \x79\x87\xd2\x2d\x31\x2e\x6e\x19\x39\xc2\x0e\xf6\xeb\x77\xf8\xea\ \xba\x75\xc3\x34\xe6\xb0\x22\x58\x0d\x2c\x4b\x55\xe7\x28\x15\x1a\ \x43\x3b\x14\x6c\x2d\x4f\x8b\xac\x05\x43\x3a\x44\x52\x70\x3d\x0d\ \x8e\xc3\xcf\xaf\xc1\xaf\x0e\x4d\x9b\xde\x92\x2b\xd7\x2c\xb0\x9a\ \xc6\x64\x96\xa4\x2d\x26\xce\x07\x41\xb6\x15\x2a\x5c\x55\xce\x71\ \x76\x95\x2a\xd9\xfb\x6c\xd8\x60\x04\x71\x9d\x77\x38\x03\xc6\x63\ \xf5\x3b\xf8\xcc\xcf\xaf\x80\x90\xc8\x98\x33\x04\xf7\x33\x07\xdb\ \x81\x13\xc1\x81\x32\xc9\xa1\x39\xcd\x87\x16\x29\xae\xf7\x55\xaa\ \x8d\x0d\x11\x59\x07\x86\x69\x8d\x1a\x39\x77\xb4\x6c\x79\x42\xd1\ \x5c\x24\x27\xca\x85\x65\xcb\x76\xca\x6c\x93\xee\xa0\xbe\x96\x81\ \x9a\xc8\xd5\x4f\xfd\x3e\xa4\xdf\x42\xe9\x7a\xd1\xdc\x7c\x17\x9e\ \x39\xd1\xe4\x52\x7c\x0f\xbf\x37\x4f\xcb\x50\xc7\x82\x9e\x8b\x85\ \xc8\xe0\xc6\x17\x9c\x46\x06\x89\xbe\x39\x88\xe5\xad\x3f\x39\x69\ \xd2\x96\x83\x03\x06\xec\x74\x6c\xd7\x6e\xbf\x63\x9b\x36\xe7\x90\ \xe4\x70\x13\xce\xb0\x23\x59\x1c\x20\x67\x50\x95\xb2\x5a\x73\xb1\ \x66\xcd\x87\x64\x3c\x10\x3d\x3d\xa5\x28\x0f\x6b\x42\x56\x2d\xbf\ \x52\x0c\xf3\xd8\xd8\xb1\xce\x10\x38\xf5\xa5\x7b\xf4\x5f\x3b\x29\ \xd3\x8f\x3c\xf1\xbb\xd3\x41\x03\xf9\x3b\xca\xd5\x8a\x7e\xc7\xd6\ \xc8\xa8\x8d\xc8\x50\x30\x64\xf8\xa7\x0f\x38\x04\xfc\x1d\x9c\x04\ \xce\x04\x17\x82\xc6\xba\x53\x92\xc5\x9a\x8b\x93\xa9\x3d\x53\xec\ \xfb\xf7\xa3\xbf\xf1\xed\x59\x8f\x12\x6a\x29\xe7\x92\x32\x1c\xa8\ \xd9\x05\xf2\x02\xef\xd2\x76\x85\x56\x48\xeb\x32\x65\x1e\x27\xc5\ \xc7\xd3\xca\x58\x5a\xae\x86\x0b\x29\x0e\x04\xce\x89\x78\xf6\xac\ \xce\x0b\x6f\x6f\x52\x1d\x1e\x26\xb2\x1a\x1c\x8f\xd5\xa1\x15\x8e\ \x27\xa3\x11\xd8\x4c\x7c\x03\x4f\xce\x9c\x31\xbe\xbb\x6f\xdf\x56\ \xfa\xc6\x0c\xbe\x79\xb3\x34\x8c\x2d\x41\x8a\xe5\xc4\xbc\xf2\xf7\ \xb7\xa6\xdf\x17\x12\x6b\xab\x55\xab\x85\x33\xdd\x53\x7a\x0e\x06\ \xde\x39\x78\xb0\x95\x34\xc6\xbf\x09\x06\x83\x8d\xb2\x82\xf4\x58\ \xe6\xc7\x79\xec\x67\x19\x0f\xfa\x0a\x2f\x19\x79\x33\x07\x68\xf7\ \x62\x0b\x3c\x73\x66\x05\x6d\x25\xad\x0d\x0d\x03\xbe\x77\x2b\xc3\ \x60\x30\x64\x2e\xe5\xa1\xc1\x83\x77\x51\x2b\x5f\xa9\x2a\x9c\x53\ \x68\x01\x5b\xcd\xa3\xe0\x97\xc7\x27\x4e\x6c\x94\xed\x9f\xfe\x01\ \x18\x0c\x5e\xf1\x3a\xc8\x80\x78\x09\x79\x6e\x33\xc7\xaa\xb7\x02\ \xcc\x6f\x22\x84\x3a\x40\x4e\x8e\x15\x3c\x1f\xfe\x77\xa5\x08\xc0\ \xcd\xf8\xef\x4c\x4a\x25\x39\x9a\xc1\x60\x68\x86\x0e\xe0\x50\xd9\ \x21\xe3\x7a\x6f\x70\x7d\x8e\xc0\xf8\x47\xc4\xf3\xa8\x29\x7d\x71\ \x2d\xc3\x32\xc0\x3b\x53\xc0\xd3\x44\xdc\x4f\x04\x73\xab\x4b\x4f\ \xf4\xf4\xae\xc9\x73\xdf\x71\xf1\xa7\x60\x30\xd8\xf8\x9a\x5e\x5e\ \xb5\x6a\x3f\xaa\xc8\xdf\xc9\xf6\x4d\x11\xe7\x4d\x4c\xe6\x68\x6f\ \x45\x61\x64\x27\x64\x20\x36\x5e\x43\x9d\xea\x18\x3d\xdb\xda\xa4\ \x89\x2b\xdd\xa3\xe4\xc4\xfa\xaf\x5b\x3b\x31\x18\xdc\x3d\xb4\x69\ \x42\x4c\x8c\xf1\x91\x91\x23\xcf\x52\x5d\x9d\x34\x28\x4b\xed\xec\ \x16\x68\x75\x5c\x8b\x0b\x0b\xb3\xa0\x8c\x16\x14\xc4\x7a\xca\xf8\ \xde\x21\x5c\x13\xd6\x56\xaa\xf4\x9c\xe2\x79\x7f\xdf\x85\xcd\x60\ \x70\x13\xc3\x5e\x6f\x03\x02\x2c\xb7\xb7\x6c\x79\x1d\xc5\x91\x4e\ \x1a\x8d\xeb\x77\x83\x29\xaf\x6e\xde\xb4\x92\xa9\x49\x75\xc1\x9e\ \xf6\xf5\xea\x3d\x50\x82\xea\x0f\x8e\x1c\xb1\xc7\x58\x1a\xb3\x52\ \x18\x0c\x36\xbc\x52\x32\xdb\x61\x89\xe2\x58\x81\x7c\x00\xe9\xe9\ \x7f\xbd\x77\xe0\xc0\x70\xa1\x01\x48\x7d\x9f\x22\x83\x43\x1a\xd2\ \x0d\x2a\x1d\x12\xdf\x0d\x06\x83\x0d\x2f\xaf\x90\x40\x6e\xdf\x28\ \x32\x2c\xd4\xd3\x05\x2a\xb5\x5c\xb8\xaf\x83\x2e\x32\xa1\x28\x98\ \xfc\xf4\xfe\xe1\xc3\xd5\x64\x9c\xc6\x42\x94\xc3\xf8\x3a\xd0\x13\ \xdb\xd0\x03\xb8\xb6\x13\x69\x07\x83\xc1\xf2\x01\x7b\xbb\x75\xbb\ \xac\x64\xb2\x83\x21\x60\x3c\xdd\x1f\x1d\x3d\xfa\x34\x9e\xf7\xc0\ \x7d\x45\xd9\x3b\x2d\x05\x5e\x4b\xa5\xee\x2b\x09\xec\x24\x74\x12\ \x0c\x56\x5e\xd6\x51\x40\xe2\x3b\x66\xa8\x9b\xdb\x92\x9e\x5b\xb7\ \x3a\x56\xe9\xd1\xe3\x54\x9e\x62\xc5\xa2\x30\x9c\x2b\x07\xca\x7a\ \x3a\x58\x5a\xfa\xe0\x67\x4f\xd0\x06\xef\x15\x68\x3a\x6b\x96\xcb\ \x92\xcf\x9f\xad\x26\xde\xba\x65\x9d\xa7\x78\xf1\x28\x55\xb6\x6c\ \x2e\x30\xc4\xb3\xe0\x40\x91\x26\x30\x18\xbc\xd2\x35\x04\xc7\x3c\ \x39\x7b\xd6\x16\x89\xcf\xea\x2a\x04\xb4\xee\x75\x90\xad\x9d\x12\ \x6d\x8c\x8c\x82\xf1\x7c\x8e\x74\xaa\xd4\xf7\xdd\xb0\x61\x95\x56\ \x9d\xd7\x12\x91\x66\x30\x18\x6c\x78\xd9\xd1\xa4\x7e\x3a\x55\x20\ \x04\x5d\xbe\x3c\x5a\x00\x38\xcf\xc5\xa3\x93\x4c\x48\x5c\x5c\x5c\ \x59\x21\x61\x53\xb1\x62\x77\x32\x34\x28\x56\xbd\x77\x19\x3a\xf4\ \x9c\x97\xa9\xe9\x54\xf1\x7d\x60\x30\x38\x5b\x05\x6c\x0f\x76\x15\ \xc0\xba\xaa\x55\x3d\xa4\xaa\xb0\x05\xae\x45\x41\x43\xd0\x9b\xc6\ \xae\xd8\xd8\xec\x91\x55\xce\x24\x1d\xd0\x00\xcb\xdc\x7a\x29\xfb\ \xb7\x00\x4c\xab\xe4\x37\x83\xc1\x78\x78\xe4\x48\x67\x65\x9b\x49\ \x54\x7a\xda\x41\x4d\xec\x91\x94\x0b\xcf\x86\xb1\xe1\x8a\x7c\x1f\ \xe9\xaa\xc8\xf7\x3e\x9a\x08\xd1\x53\x30\x18\xec\x34\xf9\xdb\x32\ \x01\xb5\x2e\x6d\xdc\xe8\x3b\xfe\xe6\x4d\xcb\xce\x36\x36\x7b\x2b\ \x77\xef\xee\xaa\x87\xa2\x57\x95\x9e\xde\x97\xae\x76\x76\xe7\xf0\ \xca\xd9\x05\x2a\x55\x3e\x5c\xb7\x82\xaa\x6a\x90\xef\x5b\x1c\x1f\ \xbf\xa6\xdb\x86\x0d\xbb\xf5\xf3\xe6\xfd\xa2\xa7\x52\x1d\x86\xf1\ \xfd\x24\xb4\x40\x79\x9a\xb2\x75\x14\x83\xc1\x90\xc6\x56\x18\xfc\ \x4c\xaa\xce\x88\xd3\x8d\x7e\x7b\xf7\x6e\x5f\xe7\x5f\x7f\x55\xab\ \x44\xef\xed\xda\xd5\x87\x64\x03\x34\x5b\x3b\x41\x06\x3c\x9c\xae\ \xe8\xfe\x73\x03\x67\xc0\xb1\x0f\x0e\x1f\x5e\x43\xf7\xd0\xe3\x77\ \x4c\xc5\x90\x77\x82\x81\x1a\x43\x0c\x06\xe3\xe8\xef\xbf\x1b\xc3\ \x80\xde\x6b\xc4\xe9\x52\xec\x2a\x57\xbe\x81\x66\x23\xcb\x14\x7d\ \x7d\x13\x21\x3a\x2a\x71\xbb\xcb\x96\x96\x7b\xf1\x7e\x28\x19\xea\ \xf2\x3c\x79\x76\x21\x21\xfa\x33\x52\xc9\xfc\xa5\x91\x95\x06\x3d\ \x40\x4b\x30\x05\xe9\x63\xe7\x29\x0e\x28\x14\x30\x18\x82\x1d\x28\ \xb5\xe2\x23\x22\x4c\x4e\xcf\x9c\x79\x04\x92\xde\x17\x5c\x87\x0d\ \xdb\xf3\xe5\xcb\x97\xa5\x18\x6f\xa1\xb1\x5a\xe5\x46\x45\x42\x24\ \x32\x53\x62\xdc\xa6\x4f\x1f\x97\x10\x1b\xbb\xe8\xf0\xf0\xe1\x27\ \x51\x1e\xa4\x0e\x92\x1f\x1a\x34\x88\x0c\x4b\x8f\x94\xa0\xcd\x72\ \xe4\x78\x40\x63\x44\xa8\x59\x39\x69\x95\x0a\x31\x18\x0c\x12\x9d\ \x05\x7b\x80\xf3\xc1\xb9\x60\x0d\xa1\x05\xc8\xc1\x2d\xa7\x54\x30\ \x29\x6c\xe4\x74\x6a\xda\x34\xd3\x37\x77\xee\xac\x41\x2e\xe6\xf5\ \x60\x6f\xef\x55\x4a\x2f\x35\x84\x10\x76\xc9\x52\xa0\xcf\x52\xa5\ \xf8\x10\xae\xe5\x45\xda\xc0\x60\x70\x1b\xae\xa7\x1e\x1e\xd6\xe8\ \x2a\x7a\x93\xe2\x76\x64\x54\xb8\xbe\x7e\x79\xed\xda\x34\x92\x89\ \x13\x00\x29\x0f\xc3\x83\xf9\x1e\x8a\xd0\xef\x61\x8c\x56\x8e\xad\ \x5b\x5f\xa7\x6a\x04\x18\x5d\x24\xde\xff\x8e\x95\x8e\xc1\xe0\xde\ \x77\x53\x70\xbe\x5b\x8e\x56\xca\x87\x1c\xdb\xb6\x3d\x14\x70\xfc\ \xb8\x21\xc6\x72\x28\x7a\x98\x60\x8a\xcf\x9a\x35\x7b\x31\xd6\x05\ \x1c\x49\xa5\x3f\x38\x27\xba\x84\x87\x86\x96\x13\xdf\x05\x06\x83\ \x0d\xaf\x1c\xd8\x5d\x4a\xb3\xd7\x55\xce\x79\x60\x3c\x64\xd9\x03\ \xa5\xc8\x51\x36\xf9\x6e\x75\x70\x02\x58\x4d\xa4\x0f\x18\x0c\xc6\ \x5c\x21\xf2\x61\x3b\xf9\x19\x9d\x5c\x5f\x3e\x38\x7e\xbc\xbe\xc8\ \x58\x30\x18\x8c\x13\x93\x26\x6d\x20\x99\x3e\x18\x1e\x85\x19\x1c\ \xc0\x3e\x19\xd4\xb7\x9c\xc1\x99\x26\x8c\x1e\x9b\x36\x6d\x6c\xbf\ \x72\xe5\xfe\xc2\x15\x2b\xbe\x43\xb9\x0f\x55\x98\x1f\x01\x57\x88\ \x8c\x03\x83\xc1\x71\x3d\x70\x41\x74\x68\xe8\x8a\x9b\xdb\xb7\x6f\ \x8b\xfd\xf0\x21\xdd\xbb\x81\x32\x18\x2a\x50\x82\x21\x63\x72\xe5\ \xc1\x2a\x60\x14\x56\xbb\xab\xe2\xc7\x00\x83\xc1\x3d\xd8\x32\xe1\ \x0b\x8d\xc1\x60\x50\x20\x1d\x41\xf3\x27\x30\x3a\x3f\x30\x23\x45\ \x6a\x19\x0c\x06\x79\x38\x91\x46\xf6\x1a\xfc\xb4\xad\x49\x93\x9f\ \x44\xc6\x82\xc1\x60\xbc\xbd\x7f\x7f\xe2\x2b\x3f\x3f\x92\x61\x6f\ \x2b\x24\x18\x8c\x0c\x92\x08\x67\x94\xa8\x51\xc3\x19\x97\xfa\xe0\ \x75\x91\xfe\x60\x30\x18\x24\x54\x0b\xda\x64\x42\xc2\x33\x83\x03\ \xdf\x8c\x14\x21\x16\xe2\x32\x53\x2f\x07\x54\x1a\x32\x16\x0c\x06\ \xc3\x7d\xc1\x82\xa6\xa8\x44\xb8\x06\x09\x87\x8c\xd6\xc2\x64\xf0\ \x19\x8e\xd1\x61\xe5\xca\x7b\xb8\xec\x01\xa3\xc5\x0f\x01\x06\x83\ \xcf\x81\x27\xb1\x3c\x5e\xc4\xb5\xa1\xf8\xd7\x81\x41\xba\x8d\x13\ \x48\x1a\x4e\xe8\x04\x18\x79\x4b\x96\xf4\x55\x09\xd1\x4a\xa8\x54\ \x9e\xd4\x09\xc8\x58\x08\x23\xf1\xef\x01\x43\x0a\xa3\x3e\xc4\xb5\ \x8b\xc8\x72\x30\xd0\xff\x6e\x23\xcd\x89\xa6\xb8\x2d\xb8\xef\x5f\ \x92\xb1\xc2\x38\x39\x75\xea\x09\x48\x85\x47\xcb\x09\x3e\xb9\x58\ \x88\xca\x22\x4b\xc0\xa0\x5e\x77\x30\xae\x38\x8b\x5c\xb9\x3e\x9e\ \x9d\x3d\xfb\x08\xfa\x22\x38\x6c\xaa\x53\xe7\xa6\x54\x8d\x3e\x29\ \xfe\x15\xe0\x0c\xf9\x4e\x90\x17\x78\x0e\x61\x9d\xcf\x10\xce\x49\ \xc6\x84\x93\xf1\x15\x9d\x29\x44\x2e\x91\xa9\x60\xc8\xde\x07\x4a\ \xff\xbb\xd9\x60\x8f\xcf\x9f\x3f\x4f\x75\x68\xda\xf4\x16\x8d\x9b\ \xe5\xca\xd5\x48\xfc\xf0\xe0\x49\xee\x07\xa6\xec\xeb\xd1\xc3\xfb\ \xa9\xbb\xfb\xfa\xd3\x33\x66\x1c\x40\xbb\xdf\x3d\xd4\xe8\x10\x1c\ \x37\x50\x08\x3d\x91\xe1\x60\x98\x08\xd1\x5c\x11\xb4\x75\x1e\x38\ \xf0\x38\x35\x2e\x11\x12\x07\xfa\xf5\xb3\xa5\xf1\x3d\x5d\xba\x18\ \xcb\x39\xdb\x8a\xb9\xb1\xc3\xb5\xb0\xf8\xe1\xc0\x06\xf7\xdc\x3c\ \x57\xae\xa8\xe8\x97\x2f\xcd\xa9\xbf\x1a\xf8\xfb\xc9\xc9\x93\x47\ \x91\xce\x87\xdc\x66\xfa\x83\xad\x44\x46\x82\xe7\x80\x9c\x57\x37\ \x20\x46\x1b\xbf\xb1\x56\xad\x47\xe8\xe6\x9a\x8c\xb1\x6e\x78\xa4\ \xc2\xd5\x00\x73\x71\x90\xe6\xe2\xfa\xe6\xcd\x73\x05\xb0\x4c\x5f\ \x7f\xaf\x9c\x9b\x47\x3f\x60\x09\x10\x3b\x4d\xce\xcc\x9a\x75\x14\ \x86\xd6\x41\x48\x58\x95\x2b\x37\x8b\xc6\x37\xd6\xac\xf9\x18\x7f\ \x04\xb1\x52\x18\xd5\x29\x7d\x3d\x66\x0c\xf2\x0e\xc3\xd0\xc6\x80\ \x0b\x69\x1e\x0e\x8f\x18\x71\x2e\xe6\xed\x5b\x63\x9b\x72\xe5\x42\ \xa5\x41\xbd\xc7\xb3\x60\xd9\x11\x88\x54\xc5\xfa\x0b\x00\x5b\xcc\ \x4d\x34\x76\x64\xd4\xa8\xfd\x18\xa3\x36\x5d\x4d\xc0\x36\x42\x03\ \xd2\x58\xe7\x80\x1d\x84\xce\x80\x91\x2d\x5f\xe9\xd2\x21\x1d\x56\ \xad\xf2\xc6\xcd\x65\xa5\x96\x2b\xe6\xe5\xcb\xf9\x06\x05\x0b\x86\ \xfd\xee\xe3\xb3\x7f\xd2\xdd\xbb\x1b\x0d\x5b\xb6\xf4\xcb\xa6\x52\ \x0d\x40\x94\xfc\xe1\x12\x7a\x25\x5d\xc0\x28\x25\x84\x91\x4a\x88\ \x8d\xe0\x0a\xbd\x9c\x39\x13\xda\x9a\x9b\x5f\xc9\x57\xa2\xc4\xfa\ \x81\xce\xce\x96\x95\x3a\x75\xf2\xd1\xcf\x9f\x3f\x29\x67\xee\xdc\ \x02\x3f\x9f\x1f\xe9\xe9\x79\x48\x08\x11\xb0\x50\x88\x12\x21\x57\ \xaf\x0e\x45\xf8\xe0\x4d\xf7\xcd\x9b\xef\x60\x2c\x36\x45\x08\x73\ \x5c\xbd\x60\x5c\x47\xc9\xf1\x22\x57\x4d\x3a\x83\x4f\x03\xdd\x31\ \x67\xdb\x84\x6e\x80\xf1\xcc\xd3\x73\x1d\x56\xb7\x7a\x42\x02\x93\ \x63\x4d\xab\x1b\xf4\xfa\xef\x5f\x5d\xb7\x6e\x10\xd4\x88\xd7\xe3\ \xf9\x28\xe7\x41\x83\x3c\x69\x1c\x0d\x30\xec\x44\xba\x81\xe1\xb7\ \x65\xcb\x12\x5b\x23\xa3\x17\xb4\x62\xc1\x3b\x19\x02\x83\x2a\x86\ \xf9\xc8\x05\xfe\x0e\x9a\x4a\x2e\x06\x5b\x49\x43\x5a\x07\xa6\xdc\ \xd8\xbc\xd9\x11\x63\x0d\x04\xf0\xe8\xf8\xf1\x16\xe8\x22\x14\x47\ \xca\xd2\x1b\xaa\x57\x37\x12\x12\x3b\xdb\xb7\xdf\x2d\x3b\x0a\xd9\ \xe2\xdd\x9c\x42\x27\xc0\x5e\xca\x61\xa0\x4a\x00\x08\x09\x54\x85\ \xc1\x25\x22\x4c\xf0\x49\x23\x06\x94\x88\x43\x7c\x01\xe8\xf3\x07\ \xae\x2a\x5c\x38\x82\x1a\x68\xe0\xfd\x3c\x22\xbd\xc0\x5e\xe2\x4a\ \xf0\x44\xce\xf2\x30\x36\x76\xd9\x58\xbb\xf6\x15\xf7\xf9\xf3\x0d\ \x35\x9e\x15\x96\xe2\xb5\xb9\x85\x04\xce\x73\xaf\xd1\x66\xeb\x35\ \xc6\x26\x2a\xf3\x86\x79\x19\x43\xf3\xe5\x32\x64\x88\x07\xc6\xba\ \x09\x80\x0c\x17\xef\x46\x59\x95\x2e\xfd\x26\x29\x21\x61\x9e\x74\ \xc2\xe8\x02\xb8\x8d\x2f\x75\x8f\xa1\xc0\x37\x78\x92\x9c\x25\x8f\ \xdd\xdc\x36\x3a\x0d\x18\xe0\x45\x93\xb8\xbb\x4b\x97\x4b\xa4\x52\ \xec\x3c\x64\xc8\xef\xcf\x3c\x3c\x68\x35\x6c\x29\xb7\x2c\x9d\x64\ \xc3\x0b\x6f\xd0\x01\x6c\x21\xbe\x17\x3c\x07\x39\xc0\x36\xa0\x31\ \xd8\x4c\xfc\x09\x56\xe4\xcf\xff\x80\x9a\x93\xb8\x0e\x1d\xda\x57\ \xce\x43\x5e\x30\x14\xe3\x61\xf2\xcb\x30\x9f\x1c\xdf\x0c\xa6\xec\ \xea\xd4\xc9\xd7\x75\xc4\x88\x09\x3a\xe4\x6d\x66\xc0\x70\x4c\x94\ \xcc\x86\xad\x8d\x1a\xdd\xc6\xa4\x8d\xd8\xdf\xab\xd7\x62\x7c\x3b\ \xbe\x96\xde\xcb\xc2\x60\x79\x70\x20\xa8\xa7\x6c\x6b\x10\xb7\xfb\ \x88\x6d\x50\x20\x8c\x34\x49\xae\x86\xe3\xc4\x77\x83\xf1\x77\xb6\ \x7d\x37\xec\xed\x47\x58\xe4\xc9\x13\x2b\xe7\xeb\x29\x98\x00\xa6\ \x78\x99\x99\x39\xd1\x97\xa1\xdc\xa9\xd4\xc5\x98\xe2\x65\x56\x18\ \x08\xd6\x11\x59\x0f\xc6\x23\x2f\xaf\xa2\x07\xfb\xf5\x3b\x8b\xe6\ \xf3\x89\xe4\x91\x5c\x9e\x37\xef\xfe\x7d\xdd\xbb\x57\xc4\x04\x2e\ \xf1\xdd\xb0\x61\x34\x0c\xe9\x77\x0d\xaf\xe6\x78\x30\x65\x75\xd1\ \xa2\xcf\x43\xaf\x5f\xb7\xa1\x33\xc6\x87\x27\x4f\x56\xaf\xad\x58\ \x31\x48\x6e\x43\xf7\x60\xc2\x6b\x8a\x8c\x02\x1b\x65\xa1\xe7\x5e\ \x5e\xcb\xb1\x03\x39\x8b\x34\xb0\x53\x34\x17\x38\xbf\xc5\x24\x44\ \x47\x53\xbf\x84\xec\xf2\x1c\xee\x45\xf3\xb8\xab\x43\x07\x5f\x74\ \x7c\xdd\x7f\xa0\x4f\x9f\xf3\x50\x96\x4e\xa6\x2f\x48\x8c\x97\x14\ \x12\x5a\x73\xba\x28\x13\x93\x1d\x58\x8f\x11\xec\x4d\x1a\x1c\xb4\ \xc2\xc9\x30\x40\xb4\xb5\xa1\xe1\x4a\x5c\xef\xd3\xb9\x41\x00\x34\ \x21\x78\x16\x81\x16\xbe\x21\x71\xe1\xe1\x16\xf8\x9d\x41\x60\x19\ \xb0\x72\x54\x68\xe8\x94\x65\x39\x73\x26\xaa\x5b\xfb\x16\x2c\x68\ \x2c\x80\x3f\x84\xc8\x98\x73\x03\xcf\x57\x71\x70\x54\xa8\x9f\x9f\ \xe9\x96\x86\x0d\x6f\x43\xac\x28\xe9\xd8\xf8\xf1\x03\x31\x37\xcd\ \x30\x5f\x43\x69\x0e\xec\xeb\xd6\x7d\x80\x77\x4c\xe4\xae\x64\x1c\ \xfa\xe2\x1d\xa1\x71\xcb\x62\xc5\xd6\x0a\x2d\xc0\x10\xb7\xcb\x55\ \xf0\x05\x7e\x7f\x90\xc8\x34\xf0\x44\x96\x05\xc7\xdd\xda\xb5\xcb\ \x01\xdb\xc9\x60\x65\x3b\x02\xed\xfd\x13\x18\xaf\x88\xfb\x3e\xb2\ \x43\xa8\x33\xc5\xed\xb4\xb7\x43\x58\x19\x3f\x2c\xcf\x97\x2f\x26\ \xfa\xd5\xab\xe9\x78\x2f\xa7\x4c\x8a\xde\x40\x67\x44\x91\x11\xe0\ \xf9\x52\x81\xa3\x3e\x45\x46\x9a\x63\x25\x9b\xaa\xb9\x85\xdc\xdd\ \xb9\xf3\x55\x3c\x33\x12\x12\x8f\x4f\x9e\xfc\x45\xc6\xf3\xae\x0a\ \x2d\x24\x25\x25\x35\x42\x67\xd8\x73\xf4\x1c\x0e\xb3\x0b\x22\xd3\ \xc1\x93\x58\x17\x9e\xb3\x39\x94\x40\x8b\x6d\x4b\x20\xbc\x5c\xf3\ \x31\x66\x80\x09\x99\x01\xa6\x3c\x39\x7b\x76\x29\xbd\x27\xb4\x80\ \x6a\xe7\xb5\x64\xac\x78\xd6\x4e\x06\x5d\x95\x8c\xf7\x70\x5c\xa7\ \x82\x19\x53\xf0\xca\xf3\x55\x03\x2c\x74\x64\xf4\xe8\x0d\xd8\x5e\ \x46\x91\x97\x19\xd9\x43\xf1\xe4\x75\xd6\x48\x1d\xeb\x49\x73\x81\ \xad\xa8\x67\x2a\x73\x9e\x0d\xe7\x75\x6f\x6a\x68\x02\xc3\xdc\x80\ \xfb\x12\x22\xf3\xc1\x07\x78\xb0\xbd\x8c\x01\x35\x14\x00\xb6\x23\ \x03\x69\xd2\xb6\x35\x6b\xb6\xfd\x1b\xbf\xd3\x08\x1c\xbf\xfe\xe7\ \x9f\x4b\xd3\x96\x14\xee\xeb\x90\x6b\xeb\xd7\xef\x82\xdb\xfa\x8d\ \x34\xbe\x00\x6a\x74\x2f\x32\x0a\x3c\x67\x4d\x3f\xbe\x79\xb3\x8c\ \x72\x62\x61\x78\xb1\x30\xa0\x77\x32\x21\x7a\x03\x98\x84\x94\xb0\ \xd8\x60\x1f\x9f\xd5\x64\x60\x42\x03\x34\x27\x6a\x8f\x66\xfb\xf6\ \xb4\x2a\x0e\x17\x59\x0a\x9e\xc4\x82\xca\x6a\xb6\x65\xfc\xf8\x1c\ \x96\x25\x4b\xbe\x93\x49\xb6\x23\xc4\x37\xb0\x48\x88\x32\x70\x5d\ \x87\xde\x73\x76\xde\x92\x9c\x9c\xdc\xcf\xba\x5c\xb9\x60\x72\xc8\ \x60\xc2\x63\xe4\x8a\x77\x0c\xd7\x0c\x12\x48\x65\xa7\x0a\x58\xf7\ \xd6\xce\x9d\x76\xab\x8b\x15\x7b\xad\xec\x32\xb0\xd5\x0f\x92\xbb\ \x8f\x3e\x5a\x0e\x93\xec\x98\x8f\x7b\x58\x15\x3f\x86\x3f\x7d\xba\ \x02\xcf\x8b\xfd\xa9\x7c\x7b\xe6\x82\xe1\xe7\xe0\x30\x77\x65\xc1\ \x82\x91\x14\x06\xc0\x04\x5c\x00\x17\xc8\xec\x14\x03\xad\x89\x9f\ \x00\x8e\xc5\x36\x65\xb8\x12\x94\x8d\x08\x0a\x5a\x45\x8d\x0f\xe9\ \x1e\x71\xa3\xa1\x22\xa3\xc1\x6d\x96\x17\x04\x5d\xbc\x68\xf7\xe2\ \xd2\xa5\xb5\x5f\xbe\x7c\x59\x2a\x83\xe5\x06\x5a\x21\xa1\x29\x34\ \x1f\xc7\x27\x4e\x74\xc3\xb3\xae\xe2\x4f\x20\xe7\xfa\x84\xb1\x10\ \x15\x44\xe6\x81\xdd\xd2\xef\xee\xdd\x5b\xea\xd8\xa6\xcd\x0d\x64\ \xb5\xab\x33\x52\x68\xeb\x82\x42\xc9\x5a\x5a\xef\x15\xc1\x19\xb0\ \xb8\x66\x50\xd6\xd3\xc4\xa4\x39\x3c\x6a\x89\x08\x21\xbc\xc0\x19\ \x31\xe3\x63\x76\x3c\x57\xb9\xc1\xc6\x60\x3b\xb0\x36\x98\x8d\x1c\ \x5f\xb2\x82\xfc\x27\xb0\x30\xf8\x61\x55\xd1\xa2\xaf\x92\xe2\xe3\ \x17\x50\x4a\x99\xd0\x86\xac\x58\x90\xde\x4c\x47\x30\x79\x6d\x85\ \x0a\x99\x1c\xcf\xe3\x89\x2c\x00\x8e\xf9\x14\x1d\x6d\x1e\xe2\xe3\ \x63\x4b\x57\x3a\xef\xa5\xb2\x05\xb1\x00\x53\x2e\x2c\x5b\x76\x90\ \x82\xb2\xb8\x9f\x48\xf1\xa0\x07\xae\xae\xf6\xb8\xcf\x82\x58\x1d\ \x83\x76\x1c\xb2\xf4\x2a\x01\x86\xa7\xae\x26\xa7\x73\x36\x9d\xbf\ \xbf\x91\x14\x61\x2d\xab\x16\x26\xc5\x45\x45\x35\x7a\xe1\xed\xbd\ \x16\xef\xf6\x13\x59\x06\x6e\x52\xdf\x0c\xfc\x05\x34\xd0\x38\x80\ \x0f\x03\x2b\x62\x92\x3e\xe1\xdb\xf0\x09\x9e\x4d\x07\xb3\x43\x32\ \xa0\x20\xbc\x60\x34\x61\xbf\x8b\x2c\x03\x6f\x35\x03\x4f\x9d\xda\ \x60\x57\xb9\xf2\x63\x32\x36\xaa\xbd\x43\x0c\x6f\x37\xe6\x26\x55\ \x0f\x32\xe2\x79\xcd\xb1\x43\x09\x91\x67\xc1\xdb\xaf\x6e\xdf\x6e\ \x41\x25\x41\x42\x67\xc0\x69\x62\x07\xe4\xe4\xc4\x62\xfb\xf1\xe5\ \xe1\xd1\xa3\x9b\x30\x41\xd5\x85\x84\xdc\xde\x14\x14\x59\x09\x36\ \xba\xca\xe0\x1f\x97\x57\xad\xda\x8f\x6a\x90\x0f\xd2\x91\x75\x59\ \x5b\xa8\x48\x49\xa0\x86\x03\x46\x9d\xca\xb7\xae\x4a\x15\x1f\x1d\ \x9b\x3b\x46\x64\x68\x68\x3d\x2a\xa4\xa4\xea\x65\xf2\x66\x52\xa0\ \x75\xae\x10\xf9\x84\x2e\x82\xb3\x8b\x9a\x25\xc4\xc4\x18\x1f\x19\ \x39\xf2\x2c\x4a\x84\x6e\xb8\x0e\x1b\x96\x5a\x4f\x04\x15\xb6\xa1\ \x97\xe9\xec\x1d\x7a\xed\x1a\xa5\xf2\x19\x0a\x9d\x03\x67\xbe\xf7\ \x7c\x7b\xf7\xae\xe5\xf6\x16\x2d\x6e\xd2\x2a\x87\x04\xe7\x81\x42\ \x57\xc1\xf3\x95\x07\xec\x05\x2e\x01\x1b\xcb\x5d\xca\x7a\xd0\x44\ \xa6\xf2\xfd\x2a\x03\xe6\x5e\xb2\xe2\x5c\x47\xc1\x13\x59\x0a\xfc\ \x3d\x32\x24\x64\x25\xae\x3a\x6e\x70\x0c\xa5\xac\x87\x80\xd5\xec\ \x18\x19\x99\x94\x77\x08\x5d\x9e\x27\x4f\x78\xec\xfb\xf7\xa6\xe4\ \x2c\x4b\xc5\x31\x56\x16\xef\xcd\x05\xcd\xa8\x64\x2b\xeb\xcb\x80\ \x78\x22\xab\x83\x65\xc5\x8f\x04\x9e\xb3\xf6\xe7\x8d\x8d\x0f\xa1\ \x0c\x48\x7d\xbe\x43\xc6\xd0\x5b\xaf\xa5\x4b\xc7\xa5\xa2\x34\xd6\ \x9f\x0a\x94\xb5\x84\x6b\x6f\xca\x8a\x84\x34\x80\xc1\xe0\xf3\x5d\ \x6b\x5a\xd5\x9c\x06\x0e\xf4\xc2\x79\x3c\x49\x26\x3a\x2c\xd0\x58\ \xd9\xca\x83\xf1\x78\x16\x85\xc4\xe9\xdd\x14\x5a\x80\x32\xc0\x79\ \x0a\x39\xe0\x18\x11\x84\xf7\x4d\xd3\xde\x27\x8f\xc1\xe0\x78\x6b\ \x7f\x72\x96\x6c\x6d\xdc\xf8\x26\x92\x1b\x36\x0b\x09\x25\x39\x5d\ \xa6\x8b\x4d\x05\xbb\x80\x23\x2e\x98\x99\x1d\xa0\x71\xa2\x4d\xa5\ \x4a\xf5\x45\x9a\xc1\x60\xb0\xe1\x19\x82\xe3\x41\x13\x30\xbf\x00\ \x10\xbf\x5b\x4a\x46\x85\x62\xd8\xb9\x9a\x7a\x29\xde\xd6\xd6\x6d\ \x69\xdc\xbe\x5e\x3d\xaa\xc7\xeb\x2e\xbe\x1b\x0c\x06\x97\x01\xe5\ \x15\x12\x0e\xcd\x9a\x91\x61\x7d\xc5\x39\xef\x89\xe6\x99\x8d\x9c\ \x26\x07\xfb\xf7\xdf\x4d\x2a\x00\x24\xcb\x21\xd2\x07\x0c\x06\x97\ \x6f\x41\x1e\xdf\x4b\x36\x1a\xa1\x4a\x71\x52\x0e\xcb\x3b\x5b\x08\ \x0a\x33\x74\x02\xd3\xb9\x1b\x13\x83\xc1\x46\xd7\xdc\xd3\xd4\xd4\ \x79\x65\xa1\x42\xef\x34\xbc\x94\x89\x24\x56\x2b\x32\x04\x0c\x06\ \x1b\x5d\x23\x54\x7e\x98\xdc\xde\xbb\x77\xdb\xce\x76\xed\x4e\x9c\ \x9a\x3e\x7d\xf5\xa7\xa8\xa8\x8a\xdf\x21\xb9\x9f\x1b\x1c\x0d\x5a\ \xc0\x68\x67\xe3\x5a\x51\xfc\x0b\xa1\x12\xff\x10\x0c\x86\x3c\xdb\ \xd5\x06\xeb\x80\x5f\xc1\xf3\x2a\x95\xea\x79\x1a\x3a\x07\x75\x56\ \x09\xb1\x03\x2c\xad\x31\xfc\x25\x45\x88\x71\xcb\x84\x70\x14\xe9\ \x06\x06\x83\x9b\xc9\xd4\xc3\x8a\xf6\x11\xb1\xbb\xc4\x13\x13\x27\ \x1e\xa4\xcc\x24\x2a\xdf\x42\x91\xf3\x07\xa9\x2c\xd0\x4c\xfc\x6b\ \x90\xc5\x25\xf3\x0c\x06\x56\x31\x13\x3d\x3d\x3d\xd1\x6b\xc7\x8e\ \xbd\x3d\xec\xed\xfd\x0a\x96\x2b\x77\xaa\x7a\xbf\x7e\x7b\xda\x9a\ \x99\xed\x15\x2a\x95\xc8\x5d\xb4\xa8\x89\x90\xf8\x67\x69\x63\x0c\ \x06\xaf\x6e\xd9\x51\x89\x10\x4d\x82\xb5\xd8\x96\x4e\x02\x0b\x6a\ \x2a\x06\xd8\x18\x19\x05\x5b\x96\x28\x11\x8a\x71\x15\xe9\x65\x82\ \x91\xf8\x9d\xc5\xdf\x21\x58\xcb\x60\x30\x16\x0b\xf1\x33\x79\x36\ \xd1\x00\xf4\xb8\x12\xe3\xd3\x04\x74\x4e\x9f\x93\xdc\xbe\xba\x07\ \x9e\x9e\x5e\x37\x7a\x57\xf2\x79\x1a\x45\xa8\x18\x0c\x06\x29\x73\ \x43\xad\x3b\x6e\x63\x9d\x3a\x57\x53\x71\xa4\xa8\x85\x6b\xd1\xe3\ \xe2\x12\x55\x9e\x40\xf5\x6d\x0b\xdd\xbb\xfc\xf6\x9b\x07\x8c\x30\ \xd0\xa1\x65\x4b\x6a\xdf\xa5\x5a\x44\x6d\xf6\xfe\x1e\x18\x0c\x06\ \x8c\xed\x92\x5c\xb5\x7a\x69\x18\x5b\x77\xd2\x35\x25\x59\x45\x28\ \x8e\x59\xed\xee\xdb\xb7\x38\x82\xeb\xb1\xb6\x15\x2a\xbc\xa0\x4a\ \x75\xc8\xf9\x59\xe0\xfa\x2b\xde\x99\x09\x7e\x01\xb7\x50\x7b\x2e\ \x91\x3a\x18\x0c\x06\x29\x81\x81\x63\xa1\x97\x72\x53\x76\x62\x4a\ \xc4\xf5\x0c\x8c\xc7\x1d\xd7\xcf\xa8\xc9\x8b\x86\xb7\x92\xe4\x39\ \xfa\x61\xec\x0f\x7a\x87\x7a\xe8\xd9\xff\xfc\xf3\x3c\x3c\x4f\x40\ \x2e\xe7\xa6\x3d\x9d\x3b\x97\xb2\xab\x54\xc9\x4f\x51\xf7\x96\x4a\ \xd3\x0c\x06\x23\x95\x2d\x63\x6f\xe5\x4c\x66\x5b\xb1\x62\x30\xba\ \x37\x79\xa0\x23\xd3\xb5\xe5\xf9\xf3\x5f\xd9\xdd\xa9\xd3\x4e\xd2\ \xd2\x24\x5d\xd3\xa0\xa0\x20\x03\xea\x51\x01\x25\xe9\x8f\x7b\xba\ \x76\x3d\x43\xa1\x02\xd9\xbd\xc9\xef\xd5\xab\x57\xb9\xd1\x91\xd7\ \x0f\xab\xdf\x57\x04\xdd\x3d\xce\x2f\x5b\x56\x97\x85\x6b\xb5\xc1\ \x60\x48\x17\x3f\x74\x4a\xb7\x6e\xaa\x5b\xf7\x21\x3c\x95\x9f\xb1\ \xd2\xbd\x7d\x72\xfa\xb4\xad\x6c\xb1\x3c\x17\xec\x23\xfb\x59\x74\ \x00\x53\xa8\x43\x10\x5d\x91\x46\xf6\x42\x9e\xed\x2e\xa3\x30\x76\ \xb1\xfa\xe7\x3e\x7d\xbc\x64\x33\xcb\x56\x1a\xc6\x56\x87\x0c\x95\ \x82\xea\xb8\x65\x30\x18\x54\xe4\x0a\xce\x7a\x70\xe4\x88\x3d\x35\ \x21\xa1\xfe\x07\xe8\x53\xfe\x02\xdb\xc5\xf6\x1a\x2a\x70\x47\x94\ \x95\x10\x35\x79\xde\x67\xe7\xcc\x51\xdf\x63\x3b\x79\x99\xde\xb7\ \x29\x57\xee\x21\x9a\xcd\x98\x90\xfc\x9f\xd2\x52\x4d\xfe\xde\x50\ \x18\xf2\x27\xcb\xe2\xc5\x8d\x05\xc0\x60\x30\x64\xe7\x1e\xb0\xda\ \x33\x77\xf7\x55\x68\x02\xea\x61\xf7\xd3\x4f\x67\x4e\xcf\x99\xd3\ \x41\x39\xe7\xc1\x68\xde\x6a\x88\x18\x2d\xc1\xf6\x73\x9f\xd4\xd3\ \xa4\x5e\x15\x11\x10\xab\x5a\x83\xf1\x06\xf2\xfd\x0e\x52\xe0\x76\ \xe3\x91\x09\x13\xca\xbf\xba\x71\x63\x4d\x42\x6c\xec\x7c\xd9\xa8\ \x92\xc1\x60\x68\x06\xba\xc1\x71\xa0\x09\xd8\x5b\x48\xbc\xb9\x7b\ \x77\xa0\x8f\xb5\xf5\x5e\xb9\x65\xac\x0a\x49\x87\xab\xd2\xc9\xf2\ \xe5\xba\xbd\xfd\x4e\x4d\x15\x68\x8c\xe7\x47\x13\x51\xc5\xeb\x19\ \xb1\xb3\x63\xc7\xbe\x7f\xa1\xf0\xcd\x60\xb0\x9e\x4a\x2a\x86\x38\ \x00\x2c\x47\x4e\x10\xac\x78\xf1\x64\x50\x87\x06\x0d\x3a\x8f\xb1\ \x29\xda\x7d\xd1\xd1\x9c\x92\x3c\x9f\x51\xd8\xa2\x46\x3f\x74\x73\ \xab\x2d\xbe\x1f\x0c\x06\xe3\xf8\xf8\xf1\x0b\xd0\xf8\xf3\xc6\xe7\ \xa4\x24\xe3\xd4\x5a\x6b\x99\x66\xcb\x36\x8f\x0c\xf2\xcc\xac\x59\ \x47\x65\x97\x5e\x9d\xc2\x0f\xb5\xb7\x65\x30\x7a\x6e\xd9\xe2\x86\ \x4b\x0a\x78\x06\x25\x40\x61\x94\x63\xa9\x12\xa2\x2b\xee\x97\x26\ \x61\x81\x4b\xf9\xfa\xd5\x38\x1f\x1a\x81\x76\x58\xb5\xca\x1b\x63\ \x97\xfe\x66\x4c\x70\x16\x2e\xc5\xc1\x15\x66\x42\xc4\x68\x3c\x62\ \x30\x18\x9a\xa2\x45\xd8\x62\x8e\xa3\x40\x39\x18\x0f\xe3\xbb\x85\ \xeb\x57\xf4\x42\x20\x25\xb1\x7a\xda\xb5\x9f\x32\xf6\x77\x14\xef\ \x9d\xc7\x75\x89\xa2\xc5\x02\xcf\xe8\x7a\x79\xee\x0b\x01\x0d\xc4\ \x37\xc1\x60\xb0\xf1\x95\xa5\xb0\x02\xd2\xbe\x9e\x92\xd1\x50\xa7\ \xdd\x93\x93\x26\x6d\x37\x35\x35\xcd\xa6\xd5\x64\xc6\x44\x3a\x5b\ \x3e\x49\x8d\xcd\x14\x30\x10\x2c\x8a\x98\xde\x4c\xba\xdf\xd1\xaa\ \x95\xfb\x5f\xf7\x37\x67\x30\xd8\xe8\xaa\x81\xd3\xbd\xcc\xcc\x9c\ \x56\x15\x2a\x14\x41\xc6\x23\x57\xb1\x9c\x02\xa0\x8e\xad\xb4\xf2\ \xa1\xd4\xe7\xc9\x2b\x3f\x3f\xeb\x8f\xef\xde\x2d\xa7\x9e\x85\x14\ \x70\xc7\xea\x76\x1d\xef\x3e\x31\xcf\x95\x2b\x06\xc5\xaf\x16\xe4\ \xa4\x11\x7f\x09\x06\x83\x8d\x2e\x3b\xd8\x92\x3a\xed\x3a\x0f\x1e\ \xec\x81\xd6\xd6\xbe\xe8\x0a\x54\x50\x9e\xd1\x26\x83\x29\x90\x6b\ \x77\xa2\x3e\x17\x60\x0d\xb0\xed\xe1\xe1\xc3\x4f\xd3\x38\xd1\x6d\ \xda\x34\x2a\x11\xea\x24\xd2\x06\x06\x83\x9b\x92\x80\x7d\x41\x53\ \xb0\xbe\x00\xb0\xcd\x1c\x2b\xeb\xee\xb6\x08\x0d\x6c\xfd\xe5\x97\ \xc5\x34\x4e\x35\x77\xc8\x56\x99\x27\xcf\x86\xff\x04\x0c\x06\x77\ \x03\x5a\x5b\xa3\x86\x21\x9d\xed\xc0\x8f\x8b\x85\xa8\x2b\x00\x2a\ \xe7\xc1\x56\xf2\x22\x19\x9c\xdf\xd6\xad\x3b\xc8\x38\xa9\x8f\x21\ \xee\x17\x81\xe7\xf0\xcc\x0d\xd7\x51\x22\xed\x60\x30\x18\x88\xcb\ \xed\x44\x02\x74\xb2\x3c\xdf\x85\x11\xe9\xe7\xcd\xf5\xeb\x07\xc0\ \xd8\x26\xac\x29\x51\x22\x0f\xee\x7d\x69\x0c\x67\xbb\x58\x0d\x9d\ \x4d\x63\x16\x11\x4a\x23\x18\x8c\xce\xd6\xd6\x2b\x87\x9c\x38\x61\ \x5f\x67\xd8\xb0\x93\x45\x2a\x55\x7a\xa4\x12\xa2\x88\x00\x5a\x19\ \x1b\x5f\x26\x7b\x84\x23\x65\x2a\xae\xbf\x54\xea\xd4\xe9\xc2\xc2\ \x8f\x1f\x6d\x66\x85\x86\xae\x2c\xdd\xa0\x41\x00\xde\x33\x87\xe1\ \x79\x52\x0f\x3c\xe9\x84\xf9\x9b\x60\x30\x78\x9b\x59\x01\x1c\x1e\ \x15\x1a\xba\x84\x9a\x8d\xa8\xcf\x6f\x65\xcb\xde\x16\x00\xc2\x05\ \x17\xb1\xb2\x7d\xc1\x59\x8e\x3a\xc1\x36\x03\xeb\x44\x04\x07\x8f\ \xa0\xad\xa8\xc6\x6a\x77\x5a\x7c\x17\x18\x0c\x36\xbe\x01\xfe\xdb\ \xb7\x6f\xbf\x7b\xe0\x80\x39\x39\x4b\x90\x7f\xe9\x8d\xea\x83\x84\ \x97\xbe\xbe\xed\x84\xc4\x86\xd6\xad\xf3\x52\x38\x81\x6a\xf1\x8e\ \x8d\x1d\x7b\xea\xf8\x84\x09\xeb\x28\x77\x93\x53\xbb\xd2\x0e\x06\ \xc3\xf5\xe7\xd1\xa3\x5f\xe0\x5a\x09\x14\xc5\x6a\xd5\xf2\x0a\xbd\ \x72\xa5\xf9\xde\x2e\x5d\x16\x1a\x23\x2e\x07\xc3\x88\x0c\xbb\x78\ \x71\x1d\x1e\xa9\xaa\xf6\xee\x7d\xa5\xd7\xb6\x6d\x6e\x74\x04\x3b\ \xf4\xeb\xaf\x3f\x51\xad\x1d\xc6\x0d\xc1\xb7\x5f\x85\xd8\x6b\x21\ \xc4\x1d\xf1\xf7\xc1\x60\x30\x5e\x05\x04\x18\xa2\xc0\xf5\x8e\x86\ \x14\xdf\x67\xba\x42\xaa\x2f\x22\x2e\x2c\x6c\x29\x35\xa7\x24\x59\ \x3f\x12\x37\x92\x1d\x83\xe2\xe5\x36\xf3\x4b\xda\x1c\x2b\x0c\x06\ \x0b\x1a\x19\x92\xdc\x5e\x72\x72\x72\x3f\x7f\x47\xc7\xed\x90\xe2\ \x73\x5e\x9e\x2f\xdf\x2b\x45\xb8\x08\xc6\xd6\x46\x00\xb2\x7f\x79\ \xca\x86\x1a\x35\x1e\xc5\x85\x87\x5b\x3c\x3c\x7e\x7c\x93\xad\x91\ \xd1\x0b\x69\xa0\x83\xbf\xf1\xdf\x2e\xfd\xbf\x5e\x4a\x06\x83\x71\ \x32\x07\xb6\x91\x16\xfa\xfa\xb5\x72\x15\x2c\x78\xb4\x58\x8d\x1a\ \x4f\xbe\x24\x24\x14\x2d\x58\xbe\x7c\x48\x1b\x33\xb3\x2b\x78\xee\ \x43\x2d\xb8\x54\x42\xd4\x37\x28\x54\x28\xea\xc3\xa3\x47\x95\xad\ \x4b\x97\x1e\x71\x6f\xcf\x9e\xa0\xd1\xde\xde\xb6\x39\xf3\xe6\x8d\ \xd5\xcf\x9f\x7f\x89\xd0\x02\x06\x26\xa4\x08\x11\xa4\x61\x74\x0c\ \x06\xc3\x6d\xfa\xf4\x3e\x56\x65\xca\x3c\xd3\xd8\x4e\x7e\x5d\x91\ \x2f\xdf\x53\xa9\x1c\x56\x4b\x00\xd4\x68\x52\xc6\xed\xee\xd1\xca\ \x66\x5d\xb6\x6c\x80\x8c\xd9\x79\x40\xd8\xe8\x0d\xb6\x9e\x31\x78\ \x97\xf4\x54\x54\x18\x3f\x08\x5a\x91\x34\x3b\x9e\x3d\x8f\x7e\xff\ \xbe\xb2\x00\x00\x06\x83\x41\x02\x44\xe8\x71\x37\xcb\x7b\xcd\x9a\ \x7d\xdb\x9a\x34\xb9\x88\x02\xd7\xc3\xb4\x65\xc4\xf8\x60\xa1\x01\ \xd2\xc0\xa4\xd0\xc1\x96\x06\x0d\xa8\xf8\x75\x1a\x12\xa0\xf7\xa3\ \xe5\xf2\x1b\xb9\xcd\x0c\xc4\x98\x91\x00\xcc\x0d\x0c\x8e\x29\xc6\ \xbb\xb7\x6b\x57\x9f\xc4\xd8\xd8\xfa\xe2\x7f\xc0\x60\xb0\xd1\xe5\ \x90\x2a\x62\x33\xc0\x85\x60\x1b\x50\x25\x34\x70\xd7\xc9\xe9\xd7\ \xd5\xc5\x8a\x85\xd1\x0a\x08\xa7\x89\x07\x8c\xc9\x22\x2c\x30\xd0\ \xdc\x75\xe8\x50\x77\xef\xd5\xab\xf7\x29\xca\x61\x97\x2d\x2d\x27\ \xd0\x3b\xa8\x44\xf8\x2c\x0d\xef\xba\x89\x10\x4d\x45\xda\xc0\x60\ \x70\x5f\xf3\xf0\xe7\xcf\xe7\xef\xed\xde\xdd\xc7\x5c\x5f\x3f\x5c\ \x7a\x2b\x63\xd1\x76\x79\x11\xe9\xab\xc8\xd7\x54\x18\xbb\x40\xb1\ \xbb\xa7\xee\xee\xeb\x51\x91\x70\x0e\xc2\x47\xf1\xb2\x06\xaf\x9d\ \x48\x13\x18\x0c\x36\xba\x3c\xe0\xb0\xe4\x4f\x9f\xcc\xae\xd8\xda\ \xee\x71\x6c\xd3\xc6\xed\xa2\xb9\x79\x2b\x32\x46\xa9\x28\xdd\x9f\ \x0c\xf1\x40\xdf\xbe\x17\x30\x36\x04\xec\x0d\x29\x3f\x4b\xd7\xe1\ \xc3\x4f\x3d\x3e\x71\xa2\xa5\x4a\x7c\x0f\x18\x0c\x36\xbc\xc2\xb8\ \xd4\x05\x6b\x83\x4f\xa0\xaf\x72\x5a\x7a\x26\xaf\xe6\x30\x30\xa8\ \x31\x23\x38\x78\x6d\xde\xe2\xc5\x6d\x31\x1e\x45\xdd\x7f\xf0\xa8\ \x23\x18\x2c\xd2\x0f\x0c\x06\x03\x0e\x93\xfb\xcb\xf3\xe4\xf9\x78\ \x6d\xfd\xfa\x91\x19\x5c\x2d\xc0\x60\x30\xda\x98\x9a\x5a\x93\x9a\ \xf4\xe9\x69\xd3\x36\x99\x0a\x71\x18\x1c\x85\xa0\x7a\x99\x0c\x30\ \x38\x06\x83\xd1\x62\xc1\x82\xe3\x7d\xf7\xec\xd9\x5c\xaa\x7e\xfd\ \x47\x2a\x3d\x3d\xd2\xc5\x74\x44\x50\xfd\x84\xc8\x18\x30\x18\x0c\ \x52\xfe\x02\x67\x24\xc6\xc5\x2d\x23\xc9\xbe\xb0\xc7\x8f\xe7\x2a\ \x15\xe8\x19\xe7\x34\x61\x30\xd8\xf0\x4a\xe3\x52\x4d\xda\x99\x0f\ \x1c\x28\x09\xe2\x5f\x09\x06\x83\xc1\x60\x30\xfe\x0f\x1d\x9b\x1f\ \x99\x66\xa1\x3a\xad\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x38\xb4\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\xa8\x00\x00\x01\x77\x08\x03\x00\x00\x00\x06\x8a\xf0\xc8\ \x00\x00\x02\xc1\x50\x4c\x54\x45\x7f\x00\x00\xa3\x6d\x93\xa4\x75\ \xa1\xae\x96\xd0\xbb\xb2\xec\xcb\x9d\xa4\xd7\xcd\xed\xbb\xbb\xfe\ \xcb\xcb\xfe\xd0\xce\xfe\xd2\xd2\xff\xc8\xc6\xfe\xc3\xc3\xfe\xdc\ \xdb\xfe\xc0\xbe\xfe\xb8\xb6\xfe\xd8\xd7\xff\xb3\xb3\xfe\xe2\xe2\ \xfe\xeb\xeb\xfe\xf3\xf3\xfe\xfc\xfb\xfe\xb0\xae\xfe\xf0\xef\xfd\ \xad\x80\xa3\xf9\xf7\xfb\xaa\x9b\xe0\xad\xac\xfe\xa4\x62\x7b\xbc\ \x7b\x7b\xbd\xb9\xf5\xbf\x80\x80\x91\x31\x3d\xa7\x50\x50\xa9\x53\ \x53\xca\xc4\xf2\x95\x2c\x2c\x96\x40\x53\xcc\x9b\x9b\xcf\xcb\xf7\ \xae\xa6\xf1\x9c\x53\x6d\xdc\xb9\xb9\xe0\xdf\xff\x9c\x5a\x7b\xb5\ \xb0\xf4\xee\xe0\xe1\xb7\x70\x70\x9e\x41\x42\xf5\xec\xec\xbb\x83\ \x8f\x8f\x20\x21\xbe\xb1\xe4\xd5\xac\xac\xce\xa0\xa1\xbe\xa8\xd3\ \xb2\x6c\x72\xd7\xb0\xb0\xdd\xc2\xc8\xed\xe3\xeb\xa9\x76\x99\x8b\ \x22\x2c\xb6\xa9\xe4\x9d\x6a\x98\x89\x13\x14\xb9\x73\x73\xb9\x76\ \x78\xb9\x9f\xcc\x9f\x68\x90\xa3\x81\xbb\xbc\xa2\xcb\xbc\xaa\xdb\ \x9c\x3a\x3a\xa6\x71\x94\xc1\xbb\xf3\xa6\x88\xc2\xc4\x91\x98\xc5\ \xba\xea\xc6\xba\xe5\xc6\xc0\xf4\x95\x4a\x69\xa8\x85\xb9\x96\x30\ \x31\xcb\xaa\xbd\xb5\x6c\x6c\xaa\x84\xb3\xcd\xa3\xaa\xb5\xa0\xd5\ \x8b\x1a\x1b\xd0\xa2\xa2\xac\x5a\x5b\xd1\xac\xb5\xac\x5e\x62\xac\ \x84\xad\xad\x64\x6d\x97\x56\x7d\x98\x33\x33\xb6\x99\xc4\xdf\xdb\ \xf7\x99\x46\x59\x9a\x3d\x44\xe4\xcd\xd1\xe6\xd0\xd2\xe8\xe6\xfb\ \xea\xd7\xd8\xaf\x60\x60\xec\xda\xdb\xb3\x92\xbb\xaf\x8a\xb5\x9b\ \x4a\x5c\xf1\xe3\xe3\xf3\xed\xf3\xb1\x63\x63\xb1\xa3\xe2\xf7\xf0\ \xf0\xf8\xf3\xf3\x8c\x26\x32\xb3\x89\xab\xba\xaf\xe8\x8d\x2c\x3b\ \xb6\x84\x9a\xac\x8a\xbb\xba\xb4\xf4\x89\x1a\x22\xa1\x50\x5c\xcb\ \xc1\xec\xd9\xb3\xb3\x85\x10\x13\x95\x43\x5c\xc1\x83\x83\xa3\x54\ \x61\xc2\xb4\xe2\xb0\x9e\xdb\x99\x43\x52\xb1\x86\xa9\xc7\xa8\xc0\ \xb1\x8b\xb3\xa3\x87\xc6\xb2\x9c\xd3\xa5\x4c\x4c\xa5\x68\x84\xb4\ \x73\x7c\xb4\xa1\xdb\xb4\xae\xf3\x9a\x4c\x62\x94\x45\x62\xa6\x8e\ \xce\xd5\xb8\xc5\xd6\xc1\xd5\xb6\x78\x83\xa6\x8f\xd1\xd8\xd3\xf5\ \xb6\x90\xb2\x9b\x57\x78\xd9\xc6\xda\xa7\x60\x70\xa7\x90\xd1\x9b\ \x64\x91\xdd\xcf\xe2\x8d\x30\x44\x8e\x38\x52\xe1\xc4\xc4\xb9\x8b\ \xa3\xe4\xcb\xcb\xa9\x8b\xc3\x8b\x27\x39\xe6\xe1\xf4\x9d\x60\x85\ \x90\x2e\x3b\xea\xe4\xf2\xbb\x9a\xbe\x90\x35\x49\x9f\x45\x4d\x96\ \x49\x64\xa1\x44\x44\xad\x90\xc7\xa1\x4d\x56\xae\x72\x86\x92\x34\ \x43\xa3\x6a\x8d\x91\x2c\x34\xc0\x86\x8a\x83\x0a\x0b\x9f\x52\x66\ \xbc\x93\xac\xc4\x8b\x8b\xc3\x9c\xb0\x89\x16\x1a\xcf\xc2\xe5\xe9\ \xd4\xd4\xb1\xa6\xe9\xb5\xab\xeb\xc9\x94\x94\xa1\x6e\x98\xae\x99\ \xd4\x9e\x58\x73\xd5\xbc\xcc\xbf\xa1\xc3\xae\xa9\xf5\x9b\x55\x73\ \xaf\x78\x92\xc1\xab\xd4\xc1\xb7\xec\x87\x19\x23\xb6\x9b\xcb\xa4\ \x72\x9d\xaa\x6c\x83\xb7\x7b\x87\xaa\x72\x8d\xc4\xa9\xc9\x92\x3d\ \x53\xaa\x98\xdc\xb1\x92\xc1\xc7\x91\x92\xa4\x7a\xab\xba\x95\xb5\ \xe8\xda\xe3\xba\x9c\xc3\xca\xb1\xcc\xba\xab\xe2\x94\x3b\x4c\x9a\ \x5c\x82\xae\x95\xcd\x95\x39\x46\xa2\x59\x6d\xcf\xbb\xd7\xb4\x85\ \xa1\x9d\x63\x8c\xbc\xa5\xd1\x99\x4f\x6d\xa6\x78\xa3\x91\x24\x24\ \x9f\x6f\xa1\x86\x14\x1a\x8e\x29\x35\x0d\x87\x2a\x70\x00\x00\x35\ \xae\x49\x44\x41\x54\x78\x5e\x84\x5d\x53\xb7\x2c\xcd\xb2\xed\xb7\ \x72\xb5\x17\xb6\x6d\x1b\x1f\x6d\xdb\xb6\x8d\x63\xdb\xb6\x6d\xeb\ \xda\xb6\x6d\xfd\x8a\x9b\x19\xe8\x59\x51\x51\x3d\x4e\x76\x65\x56\ \xed\x97\x3d\xe6\x08\x67\x44\x64\xae\x5e\x9e\x0f\x72\x8c\x2c\x4f\ \xc3\x1a\x66\x1a\x7f\xfc\xe8\x28\x75\x2d\x69\xca\xab\x2c\x4a\x19\ \x75\x9c\x35\x3d\x65\x12\x9e\x32\xb1\xa3\x1f\x9e\xb8\x0c\x87\xf2\ \xc4\xa5\x1f\x7e\x3a\x56\xc6\x67\x65\x7c\xe2\x57\x5c\x57\xf2\x58\ \x11\x66\x2f\x1f\x0c\xf2\x01\xd0\x66\x39\x43\x15\xb0\xad\x51\xd2\ \x14\xa8\x61\xa5\x59\x16\x0a\x97\x41\xd6\x34\x02\xb2\x32\xfe\x04\ \x70\xcd\x50\xfb\x01\x5d\x12\x27\x23\x0d\x33\xe0\xec\xf7\x81\x34\ \x0c\x8b\x52\xb1\xf6\x22\xc8\x30\x05\x69\x46\x33\x8d\x38\xe9\xc9\ \x2c\x45\x89\x8c\xf4\x13\x7a\x82\xa2\xb5\x3c\x34\x93\x00\x34\xac\ \x34\x4a\x4b\xd6\x00\x92\xa0\x0a\x41\xe9\xb1\x34\x25\xa2\x3a\xac\ \x3d\xa0\x04\x3d\x99\x98\x59\x78\xe2\xa2\x58\x2d\x60\xb0\xde\x30\ \x9f\xa9\x19\x49\x9b\xcc\xa8\x39\xa3\x28\x91\x53\x99\x1e\x66\xe0\ \x3b\x51\xb3\xcf\x28\x01\x95\xb8\x6f\x70\x46\xd6\xc7\x5f\x03\x69\ \x84\x45\x88\x09\x2d\x81\xcd\x0d\x44\x85\x09\x82\x02\x28\x43\x8d\ \x13\x1c\xa7\x85\xc9\x29\xbc\x0f\x0c\x27\xa2\x32\x5a\x82\x89\x21\ \x10\x15\x25\x28\xda\xa5\x4d\x59\x26\x8a\x94\x1b\x42\x42\x99\xf8\ \xc5\x98\x0b\x03\x53\xa5\x94\xe8\x19\x95\x0a\x5c\xe7\x49\x48\x03\ \x38\x61\xbf\xd1\x25\xd6\x23\x20\x35\x14\x8d\x9c\x07\xd4\x8c\x39\ \x4f\x22\xaa\x04\x4d\x31\x3c\x69\x0b\xa1\x6b\x0d\xc5\xa7\x51\x92\ \x74\xd6\x80\x09\x6d\x1a\x8a\x9c\x86\xc1\x7a\xaf\xac\x5f\xa9\x6f\ \x91\x55\xa8\x12\xc9\xa8\xa2\x04\xeb\x55\x4a\x9d\xe6\xab\x61\x4a\ \xe5\x4d\xb3\x28\x9a\xe6\x09\x14\x55\xa4\xa5\xa5\x68\x44\x09\xf3\ \x04\x5d\x02\x58\x50\x73\x08\xa4\xbd\x81\x72\x7e\x00\xd6\x8b\x0d\ \x0d\xdf\x2c\x02\x96\xff\x05\x01\x55\xde\x2b\xd0\x24\x4e\x5a\x09\ \x24\xc1\x34\x4a\xcf\x04\x15\x19\x4d\x48\x8d\xc4\x88\xb6\xb8\xcf\ \x60\xa1\xf6\x50\x26\x36\xa5\xe0\x7c\x2a\x4f\x06\xbe\x03\x27\xa3\ \xb4\x56\x14\x43\x84\x94\x91\xd2\x1b\x28\x85\xa2\x42\xcc\x7e\x18\ \xc0\x6a\xa1\x0e\x41\xce\x79\xca\xd4\x74\x49\xf2\x4a\xed\x00\xdb\ \xf9\xdb\x23\x65\xb5\x67\xe3\x54\x1b\xa2\xf6\x1b\xbc\x6f\xe0\xa4\ \x09\x0b\x4a\x53\xe1\x82\xf5\xa4\x49\x46\x99\x94\xa8\xaa\xf5\x59\ \x1b\x26\xa0\x1a\x82\x12\x32\x75\xa2\x35\x19\xfd\xba\x05\x53\x3c\ \x13\x53\x94\xb0\x0e\x3d\x4d\xa1\xf3\xde\x8e\x02\x66\x26\x1e\x29\ \x63\x55\x92\x91\x33\xd7\xc1\x76\x5e\x5a\x86\x34\x01\x41\xc5\x33\ \xb1\x0c\x60\xb0\x79\x02\x39\x69\xf6\x0d\xd3\xe1\x42\xe9\x31\x2e\ \x54\xb1\x66\xca\xfd\x68\x48\x19\x25\x78\xef\x6d\x13\x7f\x59\xa8\ \x49\xc9\x5a\x6f\xe1\xc1\xdc\xb3\x0b\x25\xa0\x82\xd5\x8e\xee\x98\ \x84\x29\xda\x22\xa9\x38\xfa\x8c\x45\x35\xf3\x40\x4b\xc3\x7a\xb8\ \x50\x98\x7d\x55\x26\xa2\x71\x0b\xab\x78\x51\xa5\x28\x3f\x0d\xae\ \xcb\x2b\x4c\xef\xeb\x19\x69\x98\x50\x7b\xfc\x2c\x44\x88\xa8\x13\ \x52\xe5\xbe\xb8\x4f\x60\x74\xae\x29\xda\x7b\xa6\xe7\xff\xec\x7a\ \x92\x11\x12\x56\x8b\x72\xd8\x2d\xa3\x83\xa6\x94\x66\x71\xcc\xf4\ \x29\x53\x65\x2a\xc2\x13\x66\x6a\xd4\x3d\x2d\x8c\x2a\x89\x01\x85\ \x32\x19\x17\x4a\x3f\x26\xe8\xee\x8f\xff\xda\x93\xe7\xf6\x7a\xdf\ \xce\x2d\xf3\x05\x2a\xd8\x0f\xd6\x2b\xe3\xc1\xfb\x8c\x46\xca\x30\ \xdb\xa3\x80\x6f\x22\xb0\x88\x47\x31\x94\xaa\x50\x7b\x8b\xb5\xbc\ \xf8\xcf\x7a\x3a\xee\x4d\x34\xd4\x53\x8b\x84\xe8\xd9\xc6\xa3\x4c\ \x4d\x80\xcd\x04\x6a\x9e\x6a\x00\x9d\xcd\x40\x16\xec\x95\x6c\x08\ \x65\x21\x26\x09\xcf\x40\x49\x82\x89\xc8\x49\xd6\x61\x79\x7a\xaf\ \x31\xce\xaa\x08\xa6\xa3\x28\x2d\x9e\xf5\xc6\xdd\xf3\x68\x00\x4c\ \xc1\x7b\xb0\x9e\x41\x42\x99\x12\x4c\x62\x3f\x13\xb4\x76\xf4\xfc\ \xa5\x9e\x19\xfb\x26\x00\x8a\x40\x94\x40\x3a\x17\x2a\x24\x85\x88\ \x0a\x5d\x49\x40\xad\xbd\x2f\x14\x29\x82\x92\x96\x2e\xa9\xb0\x12\ \xcb\x09\xa9\x25\xe9\xbb\x7a\x76\x5c\x35\x31\xa4\xd4\x37\x7d\xb6\ \x28\xda\x26\x28\x64\x34\xe2\xcc\x32\x13\x8f\x14\xd8\x2f\x15\x85\ \x0b\x9d\x19\xa4\x2e\x24\xa5\x71\x7d\xfd\x93\xa0\xaa\xe0\xbb\xe5\ \xe6\x1d\xf7\x5d\xf7\x44\xf8\x58\x3f\x85\x0f\x05\x48\xeb\xee\xd5\ \xe0\x0f\x80\x15\x5a\xaf\x76\x14\x34\x05\xeb\xc3\xa0\x57\x41\x70\ \x0d\xd8\x5a\x41\xd2\x9b\xc3\xd2\x2b\x7b\xbd\xbf\x2e\x25\x1e\xbd\ \x95\x60\xae\xdd\x3f\x19\xd4\xc1\xa6\x3e\xbc\xef\xac\xe5\x91\x41\ \x09\x62\x1a\x4f\x0f\xd6\x03\x65\x84\x19\x27\xe1\x44\xdc\x5c\x28\ \x52\x0e\xf4\x09\xab\xc0\x2c\x14\x25\xbb\x25\x25\x69\x52\x9f\x76\ \xce\xab\xbf\xd0\x5b\x47\x0c\x1e\x0b\xf7\x77\x11\xce\x49\x4e\x66\ \x34\xcc\x3c\x1f\x26\x80\x09\xa2\x7a\xcd\x37\x14\x65\xc6\xe7\x02\ \x94\x21\xd2\x9a\x41\x44\x05\xa8\x62\x65\xa0\x30\x4b\x60\xfe\xad\ \xff\xd0\xc3\xf8\x5c\xc9\x40\x6f\x27\x05\x7a\xd3\x95\x4b\x9f\xb8\ \xfd\x8a\xf7\x6c\xde\x7e\xfb\x39\xef\x4a\xa0\x4b\x82\x71\x6e\x50\ \x62\xed\xa8\x1a\xd2\x48\x4d\x11\xd3\xa6\x26\x15\xc2\x7a\x46\xe9\ \xa3\x3c\x41\x5a\xef\x8e\x30\x31\x0e\x8c\x12\x1a\x6a\x9a\x30\xbe\ \xb3\xdb\xda\x26\x15\x00\xa0\x5d\xa1\x14\xb5\x66\x54\x79\x4f\x2e\ \x29\x07\x39\x0b\x36\xa3\x08\xf2\x18\xa7\xb5\xa1\xb2\xd4\xf5\xf5\ \xbf\x6f\xe1\xec\x1d\x4b\x80\xdf\x73\xe3\x82\xd4\x9b\x51\x81\x68\ \xa3\x27\x63\x47\x33\x86\x29\xac\x6f\x3a\xd0\xac\xc8\xd8\x87\x96\ \x4d\x67\x5f\x20\x26\x49\xb0\xd4\xc9\x33\x0c\x62\xd3\x4d\x67\x1d\ \x78\x22\x7e\x5c\xb3\x38\x64\xde\xdf\xea\x91\x5e\x57\x8b\xda\x43\ \xe3\xbb\xf7\xf5\xb4\x17\xb1\x04\x4d\x89\xf5\x6a\xf4\xe3\x72\xfe\ \xd2\xdd\xab\xc2\x1b\x91\xbd\x4d\x40\x14\x8a\x96\x35\xea\x14\x42\ \xb0\x61\xc7\xf2\xa8\xaa\xd2\x57\xdc\xd3\x5b\xff\xd4\x38\x91\xb1\ \xfb\x63\x9b\x18\xdf\xd7\xbf\xb9\x61\x03\x7d\xdc\x30\x36\xd4\xd4\ \xe7\xe7\xed\xeb\xc3\x24\x9a\x6a\xd8\x1c\xbe\x5e\xb7\x74\x37\xdb\ \x66\x44\x51\xd8\x91\x14\x69\x7d\xf6\xad\x17\x7e\xe4\x94\x3b\xd7\ \xd4\x1a\x3a\x27\xf5\x77\x49\xb9\xa7\xa3\xa2\xa4\x2c\xce\xd6\xf1\ \x28\x41\xa6\x24\xad\x3e\xf9\x95\xf1\x78\x3c\x1a\xe5\x83\x94\x90\ \x4e\x4b\xe8\x3c\x76\x4c\x6e\x5f\xaf\x30\xa1\xf7\x6a\x47\x19\xea\ \xd2\xf3\xca\xa3\xc7\x4d\x9a\x4c\x74\xea\xfa\x5f\x57\x16\xbe\x20\ \x24\x0d\x14\x25\x9b\x74\x63\xf5\xd2\x69\x6f\xfd\xd6\x23\x4b\xa7\ \x2f\x5d\x79\x1a\x12\x4e\xc3\xb4\x0e\xb2\xca\x23\xd9\x1d\x71\x9e\ \x41\x40\x87\x76\xdf\xe4\x2c\xa9\x33\x4f\x44\x4f\x44\x4f\xf9\x87\ \x21\x4c\x37\x0f\x40\x4e\x11\xd5\xbf\x68\x0a\xdb\x6b\x67\xfc\xff\ \x54\x5b\x0e\x7f\x14\xa0\xf2\x78\x7d\xef\xd3\x4f\x6a\x7c\x7f\x2e\ \xbb\xfb\x69\xdd\x54\x79\x65\x3c\x4d\xc5\x29\xac\x77\x9e\x49\x47\ \x10\xcf\x03\x00\x72\xe6\x98\x14\xbf\x90\xa1\x30\x31\x76\xa4\xbc\ \xaf\xeb\x52\x99\x1f\xb3\xbb\xff\xe5\xf0\x79\xf0\xc7\xbb\x93\x7a\ \xf7\x8a\x25\x21\xc0\x9e\x45\xb7\xb1\x77\x76\x74\x5b\x60\xbd\x17\ \x51\x1e\x9a\xcd\x23\x08\xc7\xee\x09\xcb\x1d\x13\x42\xa9\x50\xb3\ \x17\x01\xe3\x8c\x33\xc8\xd2\xdc\xaf\x26\xff\x79\x8f\xf4\x8b\xa4\ \xf6\x2b\x9c\xd2\xff\xa5\x72\x7e\x61\xb8\x10\x96\xe6\x86\x19\x03\ \x5b\x11\xe5\xbb\xb8\x51\x80\xcd\x2e\xfa\xe9\x8e\x3d\x93\x31\x11\ \xf6\xa9\x8c\x02\x13\x1d\x82\x60\xd3\x96\xfd\xcb\xe3\xfb\xbf\x1d\ \x3f\x1f\x48\xc5\xe0\x27\x7f\x04\x24\x3f\xfc\x21\xbd\x5e\x93\x26\ \x09\x51\xd4\x8e\xe3\xd3\x1c\x04\x5d\x58\x20\x80\x08\xf3\x9c\xd6\ \x0f\x8c\x6f\x02\xce\x2c\x95\x38\xff\x4e\xfa\x4f\x2b\xa1\x28\xbd\ \xca\x55\x11\xc0\x4d\x27\xa6\xf7\xe7\x45\x50\xaa\x08\x60\x4b\x55\ \x27\xb2\xbf\x2b\xdf\x7f\xdd\x96\xe3\x3b\xee\x7b\xe8\xe4\x64\x72\ \xff\x0b\x1c\x79\xd2\xe6\xce\xc2\x7c\xdb\x63\xcb\x85\x31\xf7\x0b\ \x8c\xb3\x53\xeb\x01\x94\x68\x09\xa0\xc4\x7a\xc6\x99\x6e\x64\x21\ \x0d\x08\x31\xca\xa5\xd7\x1e\xd8\xbf\x1c\xc0\xff\xfd\x23\xdf\xdb\ \xbe\x8e\x50\x8f\x69\xb7\x9c\xd4\x75\x9c\x65\x51\x72\x94\xff\x1c\ \x61\x9a\x92\x6f\xfa\x55\xa0\x3c\xf5\x07\x27\x17\x2b\xda\x88\xd0\ \xf4\x32\x0a\xac\xc6\x85\x7a\x5d\xca\x1a\xa9\xf1\xcd\x64\x49\x49\ \x87\x18\x65\x78\xd2\xbc\xaa\x8a\xf2\x11\xb2\x9a\x6c\xbb\xa7\xb4\ \x07\x09\xcb\x69\xbb\x96\x02\x44\x42\x9c\xbc\xf3\xfb\x11\xd6\x13\ \x93\x80\x93\x2c\xd2\xa6\x03\x07\x5e\x73\xe6\x25\x41\xa0\x46\xa9\ \xc9\x94\x04\xf9\x5c\x30\x7b\x65\x1f\x3d\x59\x75\x02\xca\x38\x65\ \xbc\x9d\x84\x34\x67\x7d\x8f\x93\x23\xe7\x4b\x2f\x7c\x99\xa2\x54\ \x21\xad\xa3\xaf\xff\xdf\x5e\xef\x1d\x97\x53\x78\x7f\xed\xd7\x44\ \xb9\xc7\xa2\xf7\x47\xf7\x4f\xa2\x65\x2b\xc8\xaa\x82\xe7\xf2\x32\ \x32\xea\x5d\x28\xd0\x32\xeb\x81\x95\x06\x84\x14\x14\x25\x5b\x7a\ \xa8\x87\x21\x42\x4a\x16\xea\xbf\x08\xdb\xba\xed\x9b\x9f\x7f\x95\ \x10\xfb\xb3\xd3\x82\x92\x64\x7d\xb5\xfc\x92\xc7\x6f\xa6\xc6\x23\ \x45\x11\x3e\x03\xaf\xa7\x28\x74\x3f\x7b\x78\xf3\xc7\x08\xa9\xb2\ \x7e\xab\x58\x52\x72\xf1\x45\x41\xef\xf2\x39\x8d\x80\x6e\x5a\x7d\ \xe3\x89\x97\x91\x90\xf2\x56\xd9\x19\xd2\x5f\x59\x1e\x04\x94\x0c\ \x95\x3c\x53\xb3\xd4\x34\x33\x4f\xe1\x51\x19\x0d\xb3\x9d\xcd\x73\ \xe5\x86\x8d\xe7\x9d\xf7\xba\x57\xc4\xb0\x26\xe0\x45\xb2\xec\xbb\ \x6c\x49\x69\x6f\xaf\x14\x65\x10\x6b\xf7\x4c\x47\x55\x9e\xde\x4d\ \x42\xca\x99\xfc\xb7\x5a\x98\xff\x7d\xef\x34\xd7\xb4\x23\xe3\xec\ \x2b\x49\x59\x95\x84\xf5\x90\x51\x10\x14\xac\xb7\x35\xa6\x67\x37\ \x63\x87\xb8\x98\x21\xf7\x94\xad\x22\x77\x9f\xb1\xf3\xe4\x5d\x1e\ \xf9\x96\x3b\x1e\x9a\x0e\xca\x30\x2e\xfa\x1a\x51\x6e\xd5\x47\x4e\ \x8b\x44\x6d\x4a\xee\xfa\xe3\xcb\xe3\x72\x96\x72\x8e\xf5\x05\x7a\ \x09\xce\x26\x45\x45\x46\x5d\x8a\x0c\xac\x17\xac\xaf\xf8\x8e\x21\ \xc4\x9e\x1c\x42\x5a\x9c\xc7\x42\xca\x51\x49\xa0\xa8\x10\xf4\x86\ \x93\x8b\xe4\xe2\xcf\x3f\x75\xb6\x03\xfe\x50\x40\xfa\xbd\x68\x90\ \x2e\xd8\xb4\x69\xfd\x59\x47\xf6\x4f\xab\x82\x04\x13\x65\xc6\x21\ \x51\x94\xa0\xda\x4d\xa8\xca\xa8\x53\x7b\xeb\x42\x7f\xb3\x67\xc7\ \x8d\xa3\x14\xe1\x5e\xc9\x91\x3a\xe1\x64\xad\x27\x4d\x5a\x3d\xa5\ \x48\xea\x91\x1e\xc6\x89\x3c\x88\xe9\xd2\xea\x87\xa6\x55\x35\x0a\ \x32\x51\x24\x32\xa0\x45\xfa\x21\x39\x7c\x50\x54\xed\xfd\x42\x7b\ \x27\xba\x4d\x5c\x28\xf1\x5f\x70\x62\x3c\xb8\xd8\xc8\x3d\x64\x9b\ \x23\x9f\xd9\xb2\x84\xa1\xaa\xb4\x61\x5c\x96\x6b\x4e\x79\xa6\x87\ \x71\xc6\xe3\x15\x29\x54\x5a\xa0\x20\x46\x04\xc5\x40\x85\x11\x30\ \x69\x51\x5f\xbf\xd0\x99\x71\x96\x71\x54\xd3\x41\x47\x3e\xf3\x99\ \xeb\xde\x46\x5e\x6f\x39\xcd\x80\x94\x85\x94\x08\x4a\x23\x5d\xc3\ \xae\x7e\x73\x70\x4a\x18\x3f\xdb\xfb\xd0\xb4\xd0\xf2\x8d\x24\xa0\ \x0c\x46\xc9\x3b\x6a\x51\xcc\x72\xde\xc8\xa8\x37\xf8\x71\xe6\xd9\ \x41\x8a\x30\x6e\x9e\x2e\x8e\x06\x79\xba\xf5\xdb\x91\x7e\x53\x78\ \xa6\x22\x3b\x9b\x22\xb9\x8a\x71\x92\x8b\x8a\xd0\x31\x36\x1d\xe9\ \xdd\x74\xc9\x03\xd3\x71\x55\xa2\x20\x46\xe4\xac\x81\x92\x9f\x28\ \xa3\x02\x32\x7c\x01\x26\x3d\x5d\xbb\xa6\x6d\xdb\xb6\x21\x01\xf1\ \x55\x52\xe1\xa7\xa6\x03\xb1\xf5\xc1\xef\x7d\x6e\xda\xd8\xd3\x73\ \xc0\xb7\x3a\x5a\x52\x0d\xf5\x8c\xb9\xdf\xfb\xf4\xb8\x18\x57\x99\ \xd6\x42\xc9\xe1\xd7\x60\x3d\x8a\x0d\xc0\x0b\x7d\xc2\xb0\xe9\x07\ \x0c\xe4\xf0\xef\x26\x3d\x9f\xcc\x7c\xd3\xd6\x8f\x7e\x65\xc2\x45\ \x11\x45\xfa\xcf\x51\x1a\xc6\x61\x9f\xf7\xe8\xa9\xbd\x55\x59\xdc\ \xd4\x1d\x7a\xb9\xc2\x3c\x16\x54\xc7\x54\xee\x08\x64\x0d\xd6\x0b\ \x56\xd5\x76\x7d\x68\xf2\x40\x1c\xca\xd3\x85\x79\x62\x99\x28\x77\ \xb5\x3c\x68\x79\xd0\xb0\x08\x54\xe1\xf4\x6d\x9a\x52\xc8\x29\x30\ \x39\xef\xc0\x86\x6f\xde\xf2\x8e\xe3\x8f\x2f\x0e\x0a\x94\xc1\x6b\ \xa1\xa8\xe2\x04\x49\xd5\x81\x0a\x3a\x55\xa7\xbe\xef\x2b\xb0\x96\ \x14\x75\xa6\x01\xa9\xfc\x2b\x27\xad\x40\x4f\x02\xfd\xad\x11\xe7\ \xf9\xbb\x4c\x06\x76\x12\x60\xd2\x36\xbf\x1a\x55\x83\x54\x6b\xa1\ \xa6\x66\x9f\xc8\xaf\x49\x51\x29\xd9\xa3\xca\x0c\xc6\x23\xa5\x03\ \xb4\x7e\xbb\x4c\x40\xef\x1b\xe5\xb9\x21\x69\xf8\x2c\x22\x41\x0f\ \xf1\x8e\x19\xe3\x86\x07\x26\x05\x67\x1f\x52\x64\x73\xa4\x76\x23\ \x93\xb3\xa3\x80\xc9\x5e\x9e\x50\x8a\x32\xc1\x92\xa2\xd0\xe4\xd8\ \x8e\x4c\x09\x47\xce\x6f\x22\x9d\x1e\x35\x70\xe6\xf9\x65\xdb\x57\ \x5d\x1a\x53\x24\x87\xd8\xad\x62\xdc\x74\xe3\xf2\x24\x2f\x09\xa9\ \x1d\x35\xff\x98\xeb\xed\xec\x38\x94\x29\x60\x66\x4b\x0a\xbd\xb7\ \xbc\xf7\xfa\x34\xcb\xe1\xff\x02\x09\xde\x38\xe2\x53\xf9\xbc\x2c\ \xe6\x33\x76\x86\xcf\xed\x4d\x90\xb7\x6c\x79\x68\x3a\x1e\x65\x9c\ \x22\x61\xa4\x29\x83\x44\xfb\x03\x98\x0f\xc5\x27\x4d\x52\xd6\x53\ \xf4\x34\xa7\x0e\xae\x30\x69\xfa\x12\xe3\x20\x82\x38\xb8\xd8\x60\ \x3c\x1b\x9f\xa7\xf3\x22\xfb\xd1\x8c\x92\x01\xe4\x64\x94\xab\x25\ \x2d\xc9\xe5\x5b\x7a\x32\x41\xc5\xe2\x03\x25\xa9\x11\x94\xa9\xaf\ \xda\x9e\x98\x7a\x58\x78\x80\xd5\x87\x79\x5c\x07\x7f\x81\xd3\x83\ \xba\x19\xf9\x5b\x46\xb7\x69\x9a\xa7\xe9\x65\x31\x16\x3a\x76\xe4\ \x6f\x26\x8b\xa3\x9c\x73\x10\x0a\xd3\xd7\xc0\x13\xc9\x3a\x93\x75\ \x72\xc6\x89\x78\xcf\x5c\x77\xca\x24\x30\xc5\x46\x79\x3b\xaa\xa1\ \xe8\x46\xde\x16\xfe\xdd\xd6\x2c\xbb\xec\xab\x6f\x3f\x28\x5b\xdd\ \x13\xd3\x28\x04\x97\x7e\xf4\xe4\x64\x1c\x41\xc6\x78\x19\x4e\x94\ \xb8\x6f\x68\x8a\x7c\xb3\x58\x28\x57\x66\x12\x3b\xaf\x20\x55\x99\ \x7c\x7e\xb4\xbb\x41\x2b\x8e\x55\xaa\xd0\xcd\xf8\x69\x9a\x77\x55\ \x45\xc0\x7b\xc9\x94\xa2\xc6\x44\x5f\xa4\x48\x4a\xd1\x12\x7e\x09\ \x7e\x34\x82\x12\x21\xb0\xb5\x50\x48\x29\x70\xc2\x33\xd1\xb3\x55\ \xdc\x0c\xc6\xbe\xe0\x6e\x2c\x4a\x49\x8f\x96\x02\x92\x16\x85\xa9\ \x6f\x26\x67\x84\x0c\x9c\x02\x55\xab\xcb\xfa\xb3\xd4\x04\x5c\x6b\ \xf2\x7d\xf9\xe6\x63\x36\x15\x7c\x78\x3a\x96\xbd\xbd\x1d\xa5\x08\ \xa9\xc1\x89\xa2\x98\x56\x97\x5b\xb5\x70\x54\x42\x15\x25\x87\x51\ \xc6\x8c\x1a\x11\x05\x50\x57\x15\xf9\xec\x55\x8a\xf2\x8e\x9f\xec\ \x99\x8e\x07\x06\x64\x64\x32\xd9\x77\x12\x55\x61\xbe\x11\x50\xc6\ \x19\x16\xfd\x91\xe6\x0b\xeb\x51\x06\x67\x9a\xd2\xe2\xcd\x13\x83\ \xec\xd4\x7a\xd3\x57\xf0\x1b\x97\x5c\x73\xcd\xde\x9f\xec\x08\xd9\ \xa4\x4a\x7d\x7d\x06\xa4\xba\x0a\x4a\xb1\xa3\xbe\x6e\xc7\xe0\x4a\ \x9a\x2d\xbd\x47\x13\x21\x33\xde\x34\x11\x82\xac\x1d\x76\x14\xf9\ \x51\x0e\x9c\x06\xd5\xce\xaa\x6a\xc6\x24\x88\xa0\xd0\xeb\x48\x20\ \x1d\x45\x59\x99\x6a\x53\x10\xb7\x6d\x1a\xca\x7a\x6f\x9e\xe0\x98\ \x1c\xdb\x91\x1f\x35\x05\x46\x7a\x78\x47\x6f\x4a\x62\xbe\x89\x2c\ \x4c\x6f\xee\x23\x3d\xc1\x77\x5a\x7c\xdc\xcc\x93\x17\x87\x13\x24\ \x9d\x93\x76\x74\x39\xe7\x0c\x45\x5b\xa8\x91\xab\xd7\x03\xac\x36\ \xe3\x99\x1f\xc0\x02\x2d\x07\x25\x02\xd2\x82\x85\x1d\x85\xf2\xaf\ \xe0\x7a\xbd\x2b\x34\x69\x2a\x8f\xcb\x37\x60\x3c\x06\x68\x4a\xb0\ \x0d\xf3\x99\xf7\xec\x41\xc1\x7a\xd8\x27\x8d\x9e\x34\xd4\x03\x4e\ \xdb\xab\xd1\x59\x15\x19\x18\x9c\x0c\x35\x7c\x13\x46\xcf\xf8\x30\ \xc1\xfb\xc6\xa8\xf5\x45\xe1\xc8\x1c\xd6\xf7\x35\x7a\x02\x40\xe3\ \x40\x81\xd3\x67\x9c\x6d\x0d\x5c\xa1\x6a\x37\xae\xd7\x79\x74\xe5\ \xa6\x62\x49\xd1\xec\xc6\x32\x2a\x54\x05\x41\x4b\xeb\x42\x79\x12\ \x71\x15\x30\x94\xde\xb5\x11\x8a\x32\x71\x44\x02\xb4\xb3\xf2\xa2\ \xd6\xec\xad\x29\xd5\x89\x56\x22\x29\xdc\x83\xaa\xc9\xcc\xd9\x83\ \xa8\x44\xc5\x30\x89\xfd\x8a\x14\x86\xc9\x08\xa9\x4e\x57\x5d\x36\ \x20\x69\x65\xd6\x13\x50\xb5\xa4\xa0\x66\x9c\x8e\xf5\xd0\xfa\xe8\ \xf0\xd1\x44\xe8\x34\x09\xec\xc7\x9e\x29\x31\x30\x31\x7d\x02\xc2\ \xb2\x5f\x0b\x62\xda\xe7\xec\x6d\x13\xd4\xdf\x1b\xa8\x08\x13\x7d\ \x4f\x3c\x1d\xd4\xe1\xec\x65\x38\x6f\x18\xef\xf2\xa3\xcc\x78\xf8\ \xa6\x94\x58\xaf\xed\x59\xb0\x50\xa8\x85\x81\xa2\xbc\x00\x28\xfc\ \x7c\x6d\x8c\x93\xb3\xf8\x0a\x31\xf1\x3a\xef\xeb\xf5\x68\x79\x33\ \xea\xc4\x2f\x6d\xcc\x14\x94\x76\x28\x5c\x87\xb5\xe6\x45\x03\x13\ \x4f\xcd\x3e\xda\x1d\x81\xd2\x6f\x44\xf4\xab\xb3\xd8\xe0\x1b\xde\ \xe2\xc8\x2d\x4e\x70\x5d\x80\x5a\x9c\xe8\x29\x89\x8f\xa5\xe7\xb0\ \x0f\xd6\x4b\x82\x84\x16\x97\x86\x50\x80\x06\x2b\x32\xce\x68\x22\ \x94\x27\x95\xaa\xad\x89\x4a\x4a\x7e\x19\xd6\x17\x66\xbb\x2c\xbd\ \x4f\x08\x49\xbc\x17\xa5\x1f\x7d\x1a\xeb\x84\xbe\x17\xb7\xaf\x67\ \xcf\xe4\xdb\xdb\x09\x67\x06\x19\x05\x2d\xad\xa4\x3a\xbe\x87\x07\ \xca\x94\x04\xe4\x5d\xee\x93\x1f\x24\xc5\x13\x63\xee\x8d\x15\xb5\ \xad\x1a\xae\xdb\x91\xbb\xc5\x33\x18\x7c\xab\xf7\x82\x4f\xdf\xfc\ \x82\xd6\xab\x79\xf2\x32\x0a\xb4\xba\x57\xa6\x6f\x2f\xa8\x70\xf9\ \x36\x1e\xb5\x03\xfd\xcd\x99\x97\x51\x90\x35\x55\x74\xa9\xd1\xa3\ \x1a\xa6\x49\x56\x6b\x99\xb0\x9f\x77\x18\xfd\xbe\xde\xfb\xfa\x2e\ \xb4\x71\x69\xf9\x50\xeb\xe8\x49\x54\x5d\x96\xc4\x91\xd4\xb5\x0e\ \xc3\x86\xd2\x62\x15\xc9\x1f\x6c\x98\xaf\x4c\xaa\xf8\xa0\xa8\x0b\ \x4a\x8a\xb8\xfa\x6e\x4c\x75\xa1\x82\x12\x40\xed\x90\xe8\x09\x35\ \x26\x40\xed\x6e\x78\x5b\xd1\xdd\x3f\x4a\x20\x55\xf3\xa1\xf5\x08\ \x4c\x0a\xae\xde\xd0\xce\xd9\x84\xf8\x89\xb2\x1e\xb3\x9d\x77\x62\ \x96\x73\x61\x84\xd4\x3e\x71\xbe\xc9\x24\x9b\x87\x36\x35\xee\xb8\ \xce\xab\xb7\xf6\x08\x99\x71\x5a\x20\xc5\xae\x5e\x95\x49\xe3\x51\ \xc8\xa9\xed\xc3\xc7\x61\x26\x43\x4d\x79\xe4\xe5\x73\x4f\xf2\x44\ \x68\x99\x60\xcd\x54\xa7\x28\x84\x76\x68\x5b\x6d\xce\x18\x6a\x43\ \x6b\x5a\x15\x6c\x9c\x84\x11\x38\x01\xd6\x0c\xa3\x46\x78\x7b\x8a\ \xa6\xba\x46\xe9\x54\x19\x05\x54\xf6\x45\xea\x3b\xfd\x56\x84\x57\ \x06\x5b\xf3\x0b\xc3\x22\xf5\x81\x33\x76\xa1\xde\xdb\xfb\xde\x3c\ \x36\x4c\xcd\x63\x6c\x99\xe1\x3a\x3e\xbd\xa7\x07\x4a\xa4\x49\x8c\ \x98\x82\x9a\x32\x05\x2d\x6c\x3e\x0c\x3e\x2d\x7e\x5f\xef\x3c\x13\ \xc3\xf5\x5b\x50\x21\xa8\x85\xe9\x73\x3a\x25\xa4\xd3\xf8\x7b\x17\ \xe5\x81\xb0\x4e\xef\xbd\x79\x32\x7d\x4f\x30\xa2\x19\x93\x15\xbc\ \x77\xa7\x9a\x64\x5a\xf9\x04\xf3\x91\xd7\x61\x90\x16\x2e\x60\x26\ \xde\x27\xe9\xea\xca\x37\xc6\x8e\x52\xef\xa0\xc0\xc5\xe0\x04\x59\ \x31\xe3\xba\x4c\x4b\x57\x44\xf7\x6e\x6f\x87\xed\x08\x40\x5a\xdb\ \x04\xc5\x9f\xd7\x01\xe1\x07\xe1\xe4\x98\xc4\xb0\xbf\x40\xa0\xd7\ \x86\x09\xe1\xa4\xc5\x9f\x6d\xe8\xc3\xd3\xeb\x6a\xa0\x76\x07\x25\ \xa0\x68\x65\xa5\x54\x39\x8f\xc0\x99\x61\x02\x69\x89\xc0\xd9\x31\ \x5e\xd9\x5e\x93\x7d\x42\x58\x0a\xa2\xca\xe2\x72\x25\x40\xab\x7c\ \x6f\x6b\x7d\x6b\x08\x4a\x9c\xc0\x70\x91\x93\x22\x2d\x60\x9c\x7c\ \xea\xb1\x4c\x40\x52\x83\x12\x91\x13\x62\xd1\x44\x20\xfa\x5a\x18\ \xa0\xba\xb6\x4c\x06\xca\x10\xad\x6f\x2a\x79\x16\x66\x17\x2a\xae\ \x09\x3e\x54\xa5\x14\xd9\x92\x76\x80\x07\x39\xb5\x81\xb3\x8f\x97\ \x3b\x3d\x13\xcc\x3d\xbf\x52\xdd\x88\xba\x5c\x49\x81\x93\x0d\xc6\ \xd5\x1b\x51\x85\x57\x72\x4a\x4f\xe0\xd0\xa7\xd1\xd2\xa6\xb9\x40\ \x2b\xbb\x5b\x96\xed\x27\x0c\x7e\x6e\xad\x28\x07\x25\x90\x53\xd4\ \x99\x12\x5e\x98\xe3\x3c\xbb\xe3\xe6\x59\xc1\xa1\xa5\xf8\x5e\x34\ \x7d\x7e\x94\x16\x2f\xa7\x80\x69\xad\xe8\xbc\x13\x2d\x00\x8b\x30\ \xaf\x34\xd1\x93\x2a\x13\x60\x7a\x5d\x72\xe2\x49\xb3\x57\x0d\x2c\ \xcc\x54\x81\x32\x3d\x69\x31\x32\x8a\x04\xa9\x1b\x7c\x88\x8d\xb0\ \x39\x9c\xf0\xf3\xb6\x58\xef\x8f\xaf\xce\x73\xa1\x79\x05\x21\x85\ \xb7\x87\xbd\xf7\x81\x33\xa6\x09\x9f\x6a\x9a\x20\xab\x97\x53\x8d\ \xef\xb1\x5b\x02\x5d\x11\xe1\xe1\xa0\xb5\x09\x9c\x09\xa7\x0f\x47\ \x89\x90\x58\xad\x29\xb5\xb9\xd1\xd4\xee\x43\x15\x62\x39\x67\x63\ \x87\xd0\x49\x00\xfb\x5a\x83\x37\x53\x28\xda\x02\xa7\xe1\x7f\x66\ \x37\xa2\x88\x43\xc3\x37\x12\x79\xc0\x89\x5d\xa8\xb8\x7a\x53\x6c\ \xe8\x13\xf3\x01\x18\x3a\x6f\x63\x92\xee\x3e\xfc\xca\xf0\x3d\x15\ \x8c\x10\x53\x9f\x23\x73\x1b\x7b\x79\xd5\xb0\xf8\x9a\xd2\x49\xb0\ \xf6\x85\xf9\xb6\x5e\x6f\x30\x9a\xca\x9d\xa7\xa8\x69\x76\x84\x2a\ \xe9\x23\x0b\x52\xb9\xcd\x9f\x19\x30\xa0\x51\xa9\xcc\xe6\x1e\x15\ \x31\x5f\xaf\x4f\x3a\x14\xaa\x33\xf7\x34\xb0\x28\xf1\x9b\x01\x06\ \x54\xd5\xfc\x19\x4a\x9f\x7e\x12\x5f\xef\x6c\xa8\x60\xb5\xf5\x7a\ \x07\x53\xa0\x82\x9c\xd0\x7a\x2b\xa2\x78\x29\x35\x37\x86\xfa\xf8\ \xaa\x5c\x83\x7b\x73\x30\xd4\x2a\xbd\xf8\x78\xe3\x9c\x4a\x13\x3b\ \x71\xab\x86\xad\xd7\xeb\xb2\xd2\xe2\x0c\x6f\x77\xd2\x16\xa3\x83\ \xf7\xe9\xc6\x2f\xd3\xc1\x13\xb0\x9f\x51\xf2\x2c\xe0\x99\x8c\x88\ \xaa\x69\xd2\xa9\x58\x35\xed\x88\x82\x18\xc2\x67\xa8\x92\x77\xf9\ \x62\x9e\x2a\x30\x1f\x8c\x17\xb4\x5b\x37\x73\x39\x7c\xdc\x14\x52\ \x41\x29\xd3\x46\xa4\xc6\x3d\x41\xe5\xe7\xd5\xeb\xbd\xd6\xbb\x1a\ \x23\x7c\x3d\xf4\x09\x04\x55\xaa\x1e\xe5\x12\xee\x63\xa3\x66\x36\ \x0f\xfe\x93\x26\x06\xec\xa8\x2c\xf4\xc0\xd8\xbb\x7a\xbd\x7e\x43\ \x8f\x90\x18\xf7\xad\xc3\xde\x85\xc2\xd1\xaf\xa2\x8e\xe1\xe5\x09\ \xf6\xa2\x4e\x4a\x4d\x1c\x0a\x3b\x2a\x4f\x93\xf5\x7d\x5f\xaf\xc7\ \x00\x54\xb0\xde\x36\x68\xf9\x34\x09\x9c\x68\x1a\x3b\x4b\xae\x5a\ \x1e\x29\x4c\x94\xeb\x95\xb0\x96\x9a\xb0\xa3\x8a\xd6\x0c\x5f\xaf\ \x87\x4a\x81\xef\xfa\xb6\x5a\x2f\x45\x11\xbb\x15\x81\xce\xc7\x5e\ \x83\x83\x13\x77\x63\x41\x51\xc0\xe2\x5b\xb4\x33\x3b\xaa\x7a\x54\ \xfa\xf3\xf5\x88\x9f\x00\xd2\x15\x1a\x7c\xd1\xd6\x88\xa7\x2e\x02\ \x75\x2b\xf5\xee\x3c\x96\x2b\x44\x28\x94\x4d\x8f\x5a\x01\x80\x6c\ \xaa\x36\x01\x6b\xbb\x5e\xef\x93\x8e\x0c\xd5\xda\x52\x5f\x15\x01\ \xeb\x19\xe9\xef\x92\x71\xaa\x2c\xeb\x51\x5f\x2e\x9c\x8c\xf2\x5b\ \x9f\xba\xfb\x7c\x3d\xcc\x93\x13\x52\xa0\xf5\x9e\xc9\xe0\x6c\x7b\ \x7a\x3a\x3d\x31\x46\xf3\x8b\xb4\x8e\x42\x46\x7d\xcc\xac\x3f\x7d\ \xe9\x30\x81\xb3\xa2\xf5\x5e\x49\x81\x9a\xcc\x38\xf6\x4c\x6d\xa4\ \x02\x35\x7f\x77\x6c\xa3\x9f\x36\x1b\x75\x78\xf8\x44\x1e\x10\x9b\ \x94\x8e\x2b\x36\xb5\xc2\xe6\xc4\xd9\xd0\xee\x4e\x32\x5b\xb2\x85\ \x69\xd2\x68\xf4\x14\x11\x52\x82\x08\x9c\x85\xfa\x28\x0b\x18\xa7\ \xab\xe3\x8b\xbf\x91\x26\xd1\x0f\xd4\xeb\x15\xa7\x05\xeb\xec\xa8\ \xdf\x33\xf9\xf8\xf9\x28\x9f\xf3\x4b\xcd\x29\x56\xdf\x9e\x93\xb2\ \xb3\x47\x4b\x11\x74\xde\xd7\x43\x50\xaf\x57\xbd\x07\xeb\xe7\x1f\ \xb7\xf4\xca\x84\x6b\x3f\xf2\xad\x69\x46\x5d\xad\xe3\x8c\x71\x42\ \x4c\x39\x90\x2a\x3a\x7a\x9e\x12\x6c\x46\x6b\x7f\xf3\x0b\xaa\xe0\ \x1a\x45\x81\x98\x4d\x29\xed\xcc\x38\x2b\xf3\x53\x03\x97\x99\x9f\ \xfd\x5f\x6c\xb6\x9f\x10\xc2\xd4\xb0\x5e\xea\xf5\x5e\x52\xa5\xa3\ \x40\x45\xc0\x2a\xfe\x90\xa6\xb6\x64\x3a\xd6\x03\x9f\x0f\x4a\x8c\ \xb1\x87\x19\x15\xda\xd2\xc9\x8b\x07\xa7\x50\xa5\xd4\x68\xbd\xf3\ \xf5\x4c\x4a\x7e\x9b\xce\x76\xc8\x69\xbf\xa1\xee\x5c\x1d\x01\x4a\ \xb4\x3c\x7a\x3b\xea\x92\xe3\x30\xa3\xf9\xe5\x7c\x26\xf2\xf0\x22\ \x36\x76\x50\xa6\x00\x95\x24\xc0\xb4\x91\x41\x04\x5c\x46\x47\xcd\ \x28\x32\xb9\x3e\x6a\x06\xeb\x8d\x07\xa5\xed\x32\x50\xfa\xfb\x89\ \x8e\xca\x59\x0c\x75\xf6\x50\x78\x28\x7b\x6a\x23\x67\x95\x50\x18\ \x51\xb7\xb7\x77\xbe\xde\x27\x72\x7d\xff\x68\xd5\xd0\xfa\xd4\x15\ \x1c\xbe\xaa\x3d\xe2\x83\x34\x85\xc6\x23\x5f\x42\x20\x4d\xe0\x0c\ \x88\xde\xdd\x0f\x55\x93\x6c\xae\x84\x96\x95\x4e\x4c\xb1\x20\x1e\ \xad\x2c\xeb\x61\x47\x53\x39\xcf\xff\xaa\x09\xb4\xbe\x48\x29\x7a\ \x72\x22\x0a\xad\x47\xd5\x0e\x2e\x14\x04\x35\xe6\xb3\xef\xe2\x7b\ \x20\xf5\xc5\x06\xe7\x42\x53\x28\xd3\x2f\xdc\xbc\x97\x0e\x32\x0d\ \x44\xeb\xc9\x34\xa5\x85\xb4\x91\x5a\xde\x9b\xbd\x28\x40\x22\x24\ \x21\xa4\x90\x50\xef\xeb\x51\x17\x69\x83\x85\x8c\x0e\x5c\x86\x8c\ \x66\x96\x6d\x14\x77\xcf\x8c\xe7\x08\xaf\x19\xe5\xa5\xa6\xb1\x00\ \xed\x83\xbc\xd2\x34\x46\x94\xe5\x13\xf5\x7a\x97\x26\x01\x46\x13\ \x38\x07\xde\xd3\xec\xa8\x2e\x0b\xde\x37\x50\x53\x36\xeb\x92\x20\ \x55\x8d\xc2\x40\xec\x6c\xfc\xbc\xa3\x28\x2a\x4c\x88\xa0\xbd\x42\ \x79\xc5\xef\x59\x80\x88\x98\x91\xc7\xcb\xfe\x84\x8f\xb5\x89\xd6\ \x4b\x69\x59\xf5\x08\x68\x6b\xa3\x51\xdd\xf7\x3d\x59\x5f\x6a\x82\ \x7b\x73\x08\x83\x5e\x6e\x73\xd7\x41\x53\x64\xf3\x32\x71\xf7\x47\ \xaa\x54\x98\xcf\xda\xd4\x11\xdc\xd7\xa8\x81\x32\x4c\x9f\xcb\xe3\ \x60\xc4\x86\x79\xbe\x6c\xdb\x7d\x65\xa2\x2b\x88\x65\xd4\xa7\xa1\ \x89\xfc\x0c\x31\x29\xc1\x94\x5a\x53\xe7\x26\x34\x61\x8a\x92\xeb\ \x94\xc9\x87\x06\x90\x17\x23\xa0\x8a\x54\x13\x26\x18\xf3\x4f\x8b\ \xf4\xda\x7d\x64\xa9\x1c\x0a\xd6\xd6\xac\x38\x1f\x8d\x31\x29\x1b\ \x28\x34\xe7\xf1\xbb\xb0\x4a\xaf\x31\x09\xa7\x74\xf4\xe4\x8d\xbd\ \x4c\x09\x38\x09\xa9\x93\x4e\xab\x4f\xbe\xba\xec\xbb\x4a\x22\x55\ \x09\xea\x29\x10\x52\x51\x77\x5a\x0d\x45\x7d\x17\x21\x2f\x35\x3d\ \x2e\xca\xc7\xdd\x9e\x3f\x37\x1e\x85\x1d\x95\x27\x45\x2d\x14\x11\ \x3e\x01\x25\x21\x5d\xff\xa6\x43\x24\x9e\xa6\x74\x8b\x74\x6e\x22\ \x13\x45\x31\xbf\xc1\x23\x6c\x66\x25\xc6\x03\xa1\x8b\x47\x3d\x45\ \xad\x12\xc1\x96\x32\x52\x3d\x4d\xf9\x21\xa9\xdc\x35\xda\x88\x5c\ \xed\xce\x10\x14\x22\x6a\xb7\x4c\x48\x96\x00\x28\xaf\x2e\x1e\x45\ \x83\x56\x77\x87\x0e\x4f\x69\x7e\x79\xa3\x00\xbd\x6d\x14\x94\xc9\ \xd2\xb3\x9c\x53\xb0\xef\xa2\x28\x94\xca\x44\x24\xa6\x82\x03\x7c\ \x00\x69\x1b\xb4\xa0\xf6\x30\xf6\xaa\x51\x7a\xb0\x72\xf5\x04\xc5\ \x30\x6f\x9e\x92\x04\x38\xf9\xa3\x2d\xa1\x0c\x0a\xde\xc9\x27\xf0\ \x5d\x3c\x3a\xaf\x5e\xcf\x4c\xf7\x1d\x10\xff\x16\xcf\x3c\xec\xdb\ \x33\x2e\xb4\xd8\x10\xde\x04\xd5\x53\x15\x22\x0a\x9d\xf7\xea\xa4\ \x67\xeb\xbd\x71\xf2\xf1\x28\x6e\xd0\xf2\xd9\xbc\xf8\x12\xdd\x17\ \xb0\xff\x7a\xe2\xbe\xc9\x38\x2b\x1a\x09\x7c\xa3\x4c\x2d\x5d\x42\ \xfc\xe4\xa2\x7c\x98\xa7\x2e\xcd\xf7\xf1\x28\x28\xda\x1d\x39\xbb\ \xb6\x27\x71\xf5\xf3\x65\x14\x05\x46\x5d\x69\x76\x75\x11\xce\x2d\ \x88\xcd\x8f\x47\x73\x9b\x24\x4b\x79\xb5\x5a\x8f\x41\x04\x85\x81\ \xf2\xaa\x64\x3c\x3d\x6f\xef\xc0\xfd\x21\xd2\x63\x50\x7b\x9f\x27\ \xf1\xe4\x5c\x21\x11\xbe\xdf\xd0\xe3\x2e\x1d\x53\x06\x67\x8a\xa2\ \x5e\xef\x7b\x89\xd0\x55\x22\x37\x0e\x03\x25\x16\x93\xc9\xe3\xcf\ \x9f\x1f\x8f\x56\xad\xb3\x22\xec\xde\x19\xaf\xf8\xfa\xcc\x92\x14\ \x62\x5a\xd2\x3f\xac\xaf\xa7\xc9\x42\x0a\x82\xf2\x00\xcb\x91\x23\ \xa3\xb0\xcf\x5f\xf7\xe4\xc2\x51\xc9\x94\x54\xd6\x3c\x19\xbe\x9b\ \x7e\x5c\x8a\xf2\x05\xa9\xab\x82\xab\x07\xc5\xa1\x16\x1c\x08\xae\ \x51\xaf\xf7\xbe\xde\xb0\x7f\x7e\x3c\xea\x7b\x4a\xe0\xef\x6d\x0b\ \x21\x6a\xf5\xb6\x5e\x6f\xbb\x20\xa0\x4e\xa5\x3f\x66\xad\x12\x0a\ \xe6\xfb\x02\x23\xae\x4b\xf5\x09\x08\xb7\xfd\x24\xe9\x0c\xd3\x75\ \xe2\xf3\x52\xb8\xbe\x3c\xc8\xa7\x46\x4f\xa2\xf5\xf3\xce\xd7\x1b\ \x5f\xef\xfb\xf0\x01\xd2\x1a\x7c\x0c\xa8\xbc\x70\xbf\x68\x5f\x97\ \x09\x19\xa5\xd5\x94\xc1\x21\x9d\xb8\xdf\xd1\x07\x4e\xfa\x78\xee\ \x83\xf7\x18\xae\xc7\x19\x03\x38\xa1\xf5\x2c\x9f\xa6\x5e\x5f\xf2\ \xe2\x8f\x36\x98\x0c\xa9\x73\xf5\x4a\xd5\x46\x82\x5c\x41\x02\x63\ \x2b\x93\xcb\x05\xb1\xbc\x4d\x50\x6c\xee\xe4\x4a\x9d\x22\x33\xf7\ \x7a\x02\x61\xd1\x2a\xd7\x1b\x6f\xef\x60\x12\xb3\x91\x23\x0d\x08\ \x69\xb1\x66\xc9\xd7\x99\x7c\x75\x19\x9a\xc4\x0b\x43\xe4\x29\x8f\ \xb2\x5e\x2a\x77\xae\x57\xc3\xd5\xeb\x25\xd2\xc3\xd0\x3e\x6c\x36\ \x4e\xf1\xed\x38\xff\xc1\xd3\xaf\xb0\x06\x0a\xf5\x7a\x0c\x25\x24\ \x7d\xc4\x2f\x08\x29\x8b\xa8\xd6\x99\x8c\xd6\xab\x12\xb9\x7a\x7d\ \xc0\x6d\xf8\x8e\x32\xb8\x37\x50\x42\xce\x4f\xd3\x65\x27\x65\xd7\ \x35\xf3\xe1\xb1\x15\xb1\x2c\x6b\xb5\x12\x21\x8d\xab\x75\x26\x5f\ \x0f\xa3\xc5\xd5\xeb\xad\x74\x9a\xd4\x38\x28\xab\xb4\xa4\x37\x5d\ \xb7\xf8\x83\xdc\xd0\xd4\xd6\xeb\x81\x15\xdd\x59\x7a\x9c\xa9\xc8\ \x54\xe9\x71\x62\xc4\xf6\x95\xf0\x9d\x54\x73\xeb\xf5\xc0\x8b\xd4\ \xb8\xc2\xb4\x29\xb2\x2b\x22\xd0\x6f\xde\xa5\xfa\xb4\xc2\x9b\x27\ \x98\x52\x65\x3d\x88\x9a\x05\x94\x71\xe2\x46\xf4\xce\xb6\xcc\xba\ \x95\x22\x87\x84\x22\x26\x51\x8a\x12\x68\x6f\xf0\xf9\x3a\xbd\x0b\ \xc6\x1d\xbe\xde\x3a\x26\x46\x8a\x03\x8c\xe4\xef\x35\x35\xae\x51\ \xb3\xf6\xe1\x03\x66\x82\xb7\xf8\xfb\xda\x79\x26\x01\xaa\x77\xcc\ \xf3\xe3\x62\xbd\x15\xbd\x63\xc7\xf7\x8f\xef\x72\x7d\x4f\x83\xf9\ \xfd\x8e\xb8\x7e\x14\xca\xc4\x24\x45\x1f\xbe\xad\x82\xf2\xca\xb9\ \x71\xa7\xef\xa8\x86\x09\xd2\x8b\x77\x7d\xbe\x79\x2d\xba\xd6\xc1\ \x93\x2a\xed\xab\x31\x85\xd6\x0f\x9a\xea\x94\x32\x31\xf5\x95\xb5\ \xc2\xe6\xd4\xee\x42\x11\x94\x80\x9a\x6a\x4b\x6b\xb9\xac\x02\x37\ \x95\x08\xb3\x59\x3e\x77\x07\x90\xf1\x62\xc5\x63\xa3\xbe\x6f\xc3\ \x1f\x76\x27\x20\xaa\xbc\xeb\x70\x83\xdc\x9a\x07\x92\x82\xa2\x08\ \x9e\x3b\x2b\x22\x04\x51\x6f\xd6\xf0\x09\x88\x7e\x5c\xae\xdd\xac\ \xa7\xce\xc7\x96\xf1\xba\x0d\xb9\xf8\xf6\xe7\xaf\x48\x6c\x4f\x89\ \x17\xd0\x94\x4f\x04\xd3\x84\x3a\xb1\x8c\x0a\xc0\x02\x6a\xef\xa0\ \xea\x20\x88\xae\xbf\x9d\xd8\xdf\xb8\x3c\x6f\xbf\x9e\x1a\x00\x21\ \x2f\x3e\x87\x2f\xb8\x1b\x1b\x17\x8a\x2c\x2e\x86\x22\x05\x48\x90\ \x54\x6e\x56\x80\xde\xe3\xa0\x90\x9e\x69\x00\xd2\x12\xc4\x44\x16\ \x3f\x08\xe5\xab\x01\xf4\x78\xde\xb7\x61\xf3\x3f\xf6\x74\x3c\x96\ \xb4\x33\x25\x95\xcb\x37\x66\x34\x5a\x91\x73\x01\x8a\x3a\x98\x6a\ \xec\x81\x12\xc2\x59\x8b\x95\x47\x7f\xc1\xc5\x04\xe4\x9e\x1e\x09\ \xa9\xb9\x76\x78\xe5\xb9\x20\xf6\x75\xb9\xeb\x1a\x77\x22\xca\x12\ \x8a\xab\xb1\x0b\x5a\x94\xa2\xa6\x0f\xdf\x79\x7b\x60\x25\x6d\x52\ \xa8\xa0\x68\x18\xd7\x7e\xe0\xc0\x8e\xa7\x27\x94\xca\x5e\x34\xac\ \x5f\xb9\x04\xa0\x0f\x8e\xda\x14\x35\x26\x1f\xe7\x99\xb0\x1b\xa1\ \xa0\xb4\x68\xe6\xc6\xad\x80\xa6\xba\xa9\xaf\xe5\xd6\x61\x04\xce\ \xfe\xa2\x92\x3e\x3d\xf1\x26\xc2\x2f\xd1\xed\x86\x14\x97\x20\x70\ \x5e\x17\xad\xfd\xea\x0b\x28\xd3\x89\xeb\x47\xdd\xbe\x1e\x09\x1d\ \xc6\xcc\x8c\x27\xa7\x94\x15\x85\x6d\x1b\x86\x73\xc2\x10\xb8\x12\ \x94\xbc\xf8\x22\x45\x7a\x48\x8e\x0a\x4e\x89\xee\xde\x4b\x42\x9a\ \x5a\x9d\xff\xad\xb3\xef\x7d\x7c\xb1\xba\x90\x85\x74\x61\x06\x15\ \xcd\x2f\x66\xe0\xcc\x65\x26\x38\xc5\x7f\x4a\x49\xa4\x2c\x70\xaa\ \x0d\x5c\x97\x6c\x33\x53\xf4\x9d\xab\x82\x9d\xfc\xfe\xd8\x18\xfd\ \xbe\x50\x54\x0d\x3e\xdd\xbc\x35\x6a\x02\xd5\xe7\xe3\x54\x7d\x4f\ \xe7\xc9\xa8\xed\x7e\xd0\x02\x8e\x70\x3e\x43\xdc\x2c\xb5\x26\x37\ \x12\x5e\x03\xce\xeb\xf5\x02\x60\x44\xf9\x52\x65\x8a\x00\x13\xf1\ \xa0\xeb\x70\xd1\x3c\x33\x1e\xc9\x51\x08\xa9\x95\x51\x8b\x35\x55\ \x17\x0a\x19\x15\xa5\xb7\x94\x94\xd4\x38\x30\xd6\xba\x0d\x79\x54\ \x80\xbe\x2f\x67\x98\x8a\x93\x40\x92\x52\x45\xdf\xf9\xef\x6a\x49\ \xa1\xf9\xfc\x5b\x58\x78\x4f\x00\xfa\xcc\xd4\x50\xd4\x85\xf8\x80\ \x2b\xa9\xf1\x82\x63\x67\x68\x3f\xf6\xf5\xce\xda\xcb\x66\xf9\x1b\ \x02\x74\xf5\x68\x16\x94\xf4\x31\xd5\xdb\x7f\x1c\x42\x6a\xfb\x9b\ \x17\x16\x4e\x87\x25\xc5\x76\x79\x00\x90\xe8\x28\x41\x12\x42\x29\ \x4a\x53\x8c\x13\x81\xe5\x37\x46\x8d\x2a\xe3\x4b\x5f\x96\xeb\x63\ \x26\x33\x65\x7a\x89\xb0\x69\x88\x47\xbc\x37\x42\xaa\x50\x99\xa2\ \x1f\x84\x90\xce\xef\x29\x81\x94\x42\xeb\xd5\x90\xc6\x51\x32\xe0\ \x8e\xa3\x6c\x38\x24\xb2\xa6\x1a\x7f\x80\xac\x4f\x14\xd2\x7f\xfa\ \xc6\x33\x3f\x0b\xdf\x6f\x58\xda\xdd\xd7\xab\x20\x58\x9b\x3e\x45\ \xb7\x1b\x5a\x65\x62\x8a\x92\x90\x3e\x31\x32\x5b\x91\xaa\x6a\xb3\ \xdd\x1c\x6a\xa1\xa7\x60\x88\x92\x79\x40\x25\xd4\xed\x96\x25\x1e\ \x89\x9f\x74\x7d\xf2\x8e\x2c\xf9\xab\xc6\x85\x8a\xbf\xa3\xd1\x28\ \x9f\x0c\xfc\x12\x0b\xa9\x6f\xd6\x58\x58\xf9\x69\xb6\xa4\x6f\xf9\ \x44\x88\x5f\x36\x0f\x29\x70\xf6\xaa\x84\xba\xc8\xcc\x3e\x21\x3d\ \x6a\x4e\x89\xb5\x46\xd3\xd5\x27\x7d\xaa\xf4\xef\xb4\xf7\x15\x1e\ \x13\xef\xc4\x3d\xd9\x6c\x49\x33\x90\x13\x8d\xae\x24\xa4\x5f\x57\ \x51\xaf\x11\xe1\x9b\xae\x71\x34\x37\x67\x7a\xc5\xbc\xf0\x9e\x21\ \x16\x90\x4d\xc0\xd5\xea\x72\xad\x5e\x34\x32\xf6\x82\x63\x3d\x3b\ \x5e\x5e\x0a\x49\xfb\x43\x15\xd2\x9d\x4d\xe9\x8c\x6c\x0f\x60\xdf\ \x12\x76\x4e\x18\xd7\x8c\x7b\xa8\x82\x3b\x6b\x2f\x66\x94\x70\x66\ \xda\xa3\xa3\x77\xe9\xe8\xde\xbe\x9d\xd2\x61\xaf\xc4\x40\x77\x01\ \xde\x86\xb5\x5b\x0e\xdf\x76\x06\x7d\x1e\x29\x84\xf5\x11\xf0\xa7\ \xc8\x92\xc2\xd9\xd3\xa5\xae\x1f\xfc\x52\xeb\xb2\xf2\x53\xf7\x8c\ \x18\xa8\xab\x34\xb5\x94\x09\x96\x09\x59\x3c\x6c\xf2\x8c\xbd\xaf\ \xd3\xf2\xca\x55\xbb\x98\xa4\x9f\x57\x98\xab\x1f\x5b\xae\xb2\x32\ \xe1\xab\xaf\x36\x8d\x59\xfb\x89\xaa\x46\x48\xf9\x3a\xdf\x3f\xff\ \x82\x45\x79\xd5\x35\x57\x4f\x46\xc3\xee\x7a\x3d\xc3\x74\xa9\xf1\ \xc2\x16\x43\x8d\xd6\x27\xfc\xf9\x4e\xbe\x75\x7e\x42\x57\xd1\xad\ \x11\x9c\x47\xa6\x03\xb1\xa4\xef\xa6\xfb\x0e\x23\x49\xc5\x94\xbe\ \x28\x96\x14\xe5\x9b\x68\xea\x01\x72\xef\xcd\xfb\x17\x2b\x57\xaf\ \x77\xd6\xd4\x50\x94\x7d\xbd\x3f\x2d\x80\x91\x28\xb2\xde\xe7\x52\ \x0a\x48\x99\x83\x67\x4e\x73\xf6\xf3\x72\x01\xfe\xbe\x51\x40\x28\ \x82\xba\x40\x0a\xb6\x33\xec\xf3\x6e\xff\xc6\xe6\x73\x57\x46\x8a\ \x5e\x31\x03\x79\x78\xff\x64\x67\x3a\xa4\x5b\x3d\xb5\x5e\x3f\x98\ \xd3\x98\xe9\x8b\x0d\xa0\x66\x13\xf0\x9a\x47\x9e\x8b\xaf\xa5\xc6\ \x5f\xbd\x08\x40\x45\x48\xf7\xdc\x8f\xb0\xe4\x3f\x63\x27\xcd\x34\ \xc1\x1f\xe6\x22\x2b\x74\x40\x64\xf2\xfd\x91\xa2\xdb\x9e\x21\x4a\ \x3e\x35\xe1\xbd\xe8\xfc\xde\xbc\x14\x40\xfd\x5e\x44\x3b\xc9\x70\ \xc1\x5f\x51\x5e\xfb\xdb\xc1\x50\xbe\x90\x07\xa0\x2f\x2a\xd0\xf5\ \x13\xa2\x28\xfd\xfb\x8e\x69\x8a\xd8\xe9\x1c\x8a\x54\x88\xf7\x71\ \x0e\x87\x46\xb9\xb7\xe4\x24\x01\x1b\xc7\xe3\x9d\x01\xa4\xbf\x93\ \x0c\x01\x54\x96\x81\xf9\x0c\xd5\x6e\xec\x0b\x45\x89\x1b\xfe\x96\ \x5e\xc5\xd0\xc6\x01\x68\x11\x0a\xe6\x37\xed\x23\x21\xe5\xdd\x1d\ \x79\xd1\x29\xc2\x3c\xde\xd6\x3d\x95\xf6\x69\xbc\x77\x57\x4b\xbb\ \x4f\x56\x6c\x43\x17\x16\x16\x3a\xb6\xcb\xce\x3a\x29\x35\xe9\x87\ \xe4\x78\x21\x50\x2d\xd2\x8b\xf4\x0a\xdf\x65\x2e\xe0\x8f\x47\x3f\ \xa5\x7b\x37\x33\x4a\x91\xac\xa3\xbe\x99\x1a\xcd\x2f\x44\xc0\x49\ \x04\xfa\x4b\x86\x96\x91\xf2\x6b\x9f\x9e\x24\xac\xf9\x61\xf8\x23\ \xc1\xb8\xa0\x86\x67\x6a\xf4\xa9\xb5\x05\x65\x98\x87\xce\x7b\xf8\ \x8d\x17\xde\x59\x16\xf1\x57\x28\x35\x7e\x31\xe3\x10\x8f\x75\x7d\ \x4b\x55\xce\x84\xf4\x5e\xec\x98\x77\x13\xf1\x97\x4b\x71\xf3\x00\ \x79\xe6\x2b\xa3\x4c\xaa\xd1\x0f\xc3\xa5\xc6\x5d\x1f\xbe\xad\x2e\ \x2b\xef\x81\x76\xeb\x23\xeb\xe4\x7e\xe1\xed\x11\x6b\x7a\x6b\xa0\ \x26\xdd\x7a\xfe\x45\x89\x4a\x6a\x2a\x98\x8f\xeb\x44\x2d\xe9\x86\ \x91\x6e\x98\x78\x9f\x7c\x7c\x1c\x4d\x93\x01\x39\x1e\x15\x62\xf4\ \xc9\x37\x85\xa5\x41\xcd\x6d\xb8\x55\xc3\x67\xf0\x81\x35\xb3\x3a\ \x7f\xb4\x79\x39\xf7\x1f\x93\x00\x7c\x72\x72\x30\xc2\x59\xd4\x90\ \x74\xbb\x58\x52\x15\xd2\xde\xde\x52\x02\x3d\xe6\xf6\xf2\x20\x9a\ \xfb\x25\x92\xdf\xb3\x5e\xf9\xf4\xe2\x28\x4d\x9a\x95\xf0\x05\xa2\ \x28\x80\x76\xfe\xa5\x16\x45\x87\x56\x57\x18\xa8\x43\xcf\x6e\x3f\ \xf5\xe8\xf9\x56\xae\x6e\xe1\x0d\xc9\x76\x12\xd2\x22\x29\xf1\x37\ \x30\xee\x4d\x69\xaf\x2c\x77\x2f\x3e\xbb\x3b\x79\xe9\xf5\xbb\x58\ \xed\x0e\x4c\x6b\x32\xa1\xef\xbd\xee\x7d\x8f\x8f\x03\xc8\x7e\x03\ \x25\xc2\x3c\x73\x3b\x72\xcb\x3c\xf9\xed\x08\x28\x7a\xe9\x39\x07\ \x89\x36\x7a\x43\xa5\xbe\x1f\xcc\x23\xd2\x25\xd6\x1f\xa9\x37\xec\ \x66\x4b\x1a\x63\xbd\xf2\x0f\x7b\xed\xb1\x77\x5a\x69\xd7\x63\x42\ \xfe\xa9\xe3\x7c\x58\x97\xd6\x9b\xba\x9d\x6f\x77\xe3\x94\x5e\xba\ \xf1\xd4\x1e\xc6\xc1\xb5\x0f\x4c\x26\x5f\xbc\x7a\x1f\x01\x78\x20\ \x02\x7d\x8e\xf5\x47\xa3\x92\x18\x7f\xbe\x6d\x91\x0c\xd4\xb5\xee\ \x5a\xf0\xe9\x4e\x89\xf4\x13\x7f\x09\x25\x8e\xb4\xb8\x23\x03\xdd\ \x27\x1b\x04\x24\x3c\xd3\xd1\x1e\xc6\xda\xe9\x62\x45\x96\xff\x3b\ \x14\x84\x57\x51\xf7\x4f\xe5\x4b\xfb\x19\x29\x01\xed\x2d\x07\x98\ \x6f\x45\x92\x49\x18\xb1\x76\x3a\x22\x9c\x0c\x4f\x36\x79\x18\x9d\ \x17\x7d\x6d\x73\x49\x32\x75\xa0\xfa\x03\xd2\xcb\xaf\x82\xf7\x98\ \x56\x85\x8c\xcd\xe4\x20\x23\x49\x29\xd8\x98\xca\x95\x44\xec\x38\ \xd7\x2e\x5d\x5f\x2b\xbe\x7b\x64\x03\x75\xe3\xf2\x38\x27\x98\x26\ \x87\xcf\x13\x52\x1a\x9e\x28\xa2\xc0\x89\x5a\xa8\x27\xaa\xd8\x7b\ \x68\xd2\x6b\xf7\xae\xed\xb1\x9f\xa9\x52\x35\xf7\x67\x53\xff\x73\ \xa5\x42\x7a\x2f\x97\x1c\xbe\x35\x13\x91\xf7\xeb\xd7\xf4\xae\xab\ \x0f\x1c\x3e\xb1\x67\x3a\x2a\x24\x05\x81\x3f\x19\x4b\x20\x5d\xd9\ \x76\x41\x4a\x62\xe6\x08\x46\x3b\xc2\x47\xb1\xde\xdc\x04\x50\x55\ \x2f\xe3\x90\x2d\x55\xaf\x54\x5c\x44\x94\x1b\x15\x22\xa4\x1b\x76\ \x96\x65\x91\x2c\x35\xd2\x71\x8f\x12\x1d\x57\xef\x58\x4e\x93\xb2\ \xa8\x93\xa1\xfa\x27\xa1\x28\x85\x7a\x40\xea\xae\xcb\xc4\x30\x32\ \xea\xcf\xdf\xcc\xcc\xd3\x56\x7a\x13\x7f\x77\x8c\xe0\x41\x4b\x02\ \x1a\xed\x67\x41\xc2\xb8\xfe\xd9\x6b\x4f\xf9\xfd\x1e\xc6\x43\x77\ \x2d\x6d\xd9\xf1\xd4\xe2\x28\xab\x4d\x52\x87\x86\xb4\xe9\xe8\x03\ \x90\xdd\x2d\x5a\xdb\xa8\x55\xa3\xb3\xd4\x94\x3a\x83\xbf\xc4\x40\ \xc9\x8f\x12\x45\xdf\x4c\x7f\xa5\x61\x1c\x85\xf4\x0f\x7a\x4d\xb3\ \xb0\x85\x60\x7f\x66\x39\x5d\x13\x34\xad\x91\xcb\xa3\x85\x07\x71\ \xde\xd7\x96\x2d\x3e\x6b\x47\xfd\x31\x5b\x98\x28\x13\x3e\x1d\x22\ \x2d\x07\x45\x0b\xf2\xa5\x8f\x8d\xc8\xe6\x93\x62\xa9\xdb\x3f\xb9\ \x2e\xb0\x7b\x71\x27\xe7\x1c\xeb\xda\x24\xf3\x84\xaa\x8d\x7b\x7f\ \xfa\x8e\xf3\xb0\x4d\xa0\x68\x17\xe7\x81\xd3\x8c\x92\xd3\x5e\x7a\ \xdf\x74\x4a\x0e\xf1\xe5\x93\xbc\x8c\xe3\xf2\x7f\x11\x94\x74\x8d\ \x7e\x52\xe5\xd2\x9d\x87\xb6\xb7\xa1\xb9\xd1\x95\x81\x26\x5d\x7f\ \x6b\x1d\x34\xf5\xf5\x7a\x4f\x54\xa8\x15\x00\xf3\x7e\xe8\x4f\xf9\ \x4f\x06\xde\xc9\x34\x3c\x31\x2e\x65\x7c\x98\x3c\xc0\x1d\x87\x27\ \x93\x4c\xfe\x2c\xbc\x1f\x80\xe9\xee\x7d\x41\x46\xcf\x1d\x0c\x5d\ \xe1\x32\xce\x2e\x22\xb1\x64\x7d\x56\xac\xe2\xae\xa5\x03\xba\x13\ \x7e\x62\x5c\x61\xcf\x34\xf8\xe8\xc9\xc5\xc9\x28\xd3\xb4\xb8\x69\ \x72\x16\xe6\xa3\x67\x1c\x50\x9d\xc1\x9f\xd3\x91\x5b\xe5\x08\x9e\ \x53\xdb\xad\x61\x39\x4f\x42\x6a\xc7\x6d\x93\x11\xce\xac\x9b\x14\ \xbe\xf0\x5d\xd8\x0e\xa8\xee\x26\xc2\xc4\xdd\xe0\x0d\xdf\xe4\xef\ \xd2\xf1\xe6\x1e\x09\x5d\xa8\x7d\xde\xc6\x79\xcd\x74\x94\xba\x0c\ \x44\x78\x11\x50\x73\xe5\x30\x14\x5f\xcf\x31\xa1\x29\xd7\x88\xa8\ \xa7\x27\xfa\x47\x6d\xbd\x5e\xa7\xd7\xa5\x34\xdf\x6e\xe3\x8b\xfb\ \xa6\x23\x86\x98\xa2\xff\x41\x29\xaa\xcd\x44\xad\x1a\x93\xb0\x1e\ \xa7\x83\x1c\xeb\x65\xb5\x48\xfd\x91\x60\xa7\x44\x26\x72\xe6\x48\ \xf3\xe6\x63\xbd\x7b\xee\xd9\xb0\x76\xff\x72\x55\x94\x85\xbb\xe1\ \x8d\x50\xb2\x8c\x72\xe9\xd6\xda\x51\xd3\x44\x98\x00\xad\x3f\x19\ \x4a\x0b\x4e\x36\x18\x6a\xba\x14\x04\x04\x15\x96\xf4\x92\x51\x3a\ \xa0\x3f\xfc\x47\x76\xdf\xe4\xc8\x78\x36\x65\xb4\xf6\x77\x95\xa0\ \xe3\x4d\x86\x7e\x18\x62\xfa\xb3\x22\xf0\xf4\x96\xf7\xc0\x88\x51\ \x90\x4b\x1f\x93\x15\xc5\x5d\xe3\xb6\xb6\xac\x09\x52\x1c\xb8\x83\ \x6f\xb2\x76\x34\xce\x3e\x50\x6a\xe2\x11\x54\xb5\x8d\xae\x1d\xda\ \x94\x42\x4c\x2d\xda\x22\x5a\xd2\x1b\x26\x05\x0d\x45\x9a\x5a\xa8\ \x8d\x12\x63\x69\x19\x4f\xab\xc2\x44\xe8\x64\xd8\xef\x49\xe9\x6f\ \x22\xb4\xe7\x2c\x9d\x6b\x2a\xe3\xf2\x30\x05\xf5\xb9\xa0\x2c\xdd\ \x1d\xde\x5c\xb8\x53\xb0\xd0\x7a\x7b\x86\x51\x2d\x3d\x90\x7a\x17\ \xea\xa2\x27\xd0\xd3\xc7\x4f\x5e\x48\x7f\x8f\x42\xe7\x91\xa6\x21\ \xd0\x58\x80\xa1\x76\x54\x7e\xfe\xcc\x1d\x9a\x72\xfd\x31\x46\x14\ \x70\xa0\x4f\x5e\xeb\x53\x2c\xc2\x7e\x7f\x41\x0d\x0b\xe9\x9d\xa7\ \xac\x7a\xb3\xb0\x9e\x50\xda\xcb\x89\x94\xf5\x65\xe7\xa1\x16\x6d\ \x7e\xe9\xf2\xf5\xf0\x9d\x9e\xa2\xb6\x71\x58\x57\xa5\xa3\xbc\xd1\ \xab\x83\x24\xf2\xd5\x8c\xd4\x8f\x5a\x86\xf3\xf7\x4d\x3b\xda\x77\ \x67\x6f\x0c\x5e\x50\xd3\xdc\xde\xee\xf2\xcd\xfc\xe9\x39\x8f\xbc\ \x62\xdc\xcb\x05\xa0\x4e\xed\x13\x75\xa2\xa0\x64\xd7\x4d\x84\x08\ \x43\xbd\x25\x75\xd7\xd1\xa1\x23\x97\xa7\x33\xfa\xce\xd9\xaf\x31\ \x29\xc2\x49\x4b\xeb\x13\xd0\x33\xac\xe8\x1d\xef\xf0\xa0\xb2\xb2\ \x75\x82\x2a\xf9\x4b\x5f\x86\xad\x30\xaf\x72\x59\x5c\xd5\x7c\x93\ \x78\x6a\xd0\x73\xdf\xe1\xe5\x9d\x0c\xd4\xf6\xe8\xf8\x6b\x52\x95\ \xfd\x43\x7b\xe4\x92\x1e\x47\x51\x1f\x35\xc3\xd7\x57\x4e\xe5\x9b\ \x09\x08\xf3\xb7\xac\xff\x83\x30\x52\xc2\x28\x44\x73\x5e\x46\x71\ \x54\xdd\x5d\x4a\xe5\x6e\xee\xa7\xe1\x5d\xa8\xe2\xf4\xd7\x7a\xce\ \x2f\x35\xd8\x9b\x67\x29\xd3\xfc\xec\x1b\xd6\x9f\xb5\x63\x79\x3a\ \x1e\xa4\xb3\x44\xee\xff\x37\x76\x36\xad\xb6\x1d\x45\x18\xbe\xd1\ \xab\x6b\x7f\xac\xbd\xd6\x59\xd7\xbb\xb9\xde\x13\x50\x07\x5e\x41\ \x49\x40\x74\x20\x38\x88\xa0\x01\x11\x27\x89\xa0\x44\xf1\x6b\x92\ \x20\x19\x29\x82\x1f\x71\x60\x06\x8e\x1c\x38\xf0\x27\x38\x53\x34\ \x19\x38\x0a\xfe\x80\x8c\xfc\x05\x01\x41\x32\x50\xfc\x15\xe6\x74\ \xd7\x5e\x4f\x57\xbf\x55\x6b\xdf\x3e\x7b\x9f\x73\x86\x45\x77\x57\ \x75\x7d\xbd\x6f\x09\xa4\x6d\x70\x16\xa0\x13\xd4\x31\x16\xe8\x2d\ \x85\x1e\x59\x89\x00\x20\xd0\x42\x9f\x14\xdd\xb0\x4a\xfb\xe0\x41\ \x15\x92\xd9\x12\x09\x59\x85\x4e\x17\x98\x61\x2c\xe0\xf4\xe5\xe4\ \x5b\x1b\xda\x4d\xb2\xa6\xbd\xdd\x67\x73\x6c\x47\x91\x92\x9d\xad\ \x2b\x18\x81\x51\x8f\x5c\xb0\xcb\xa3\x5d\x51\x2b\xd5\x83\x15\xd1\ \x14\x99\x42\xee\x34\x91\xab\x45\x5b\x28\xfe\xa0\xa1\x3b\xb2\x2a\ \x99\x8e\x48\x6b\xa2\x29\xf5\x2c\xc4\x3f\xf6\x90\xf6\x72\x2a\x55\ \x85\xe2\xeb\x63\x92\x1a\x65\xc9\xed\x73\xf8\x5e\xcc\x2a\x9a\x9a\ \xa6\x5e\xe3\x57\x4c\xd3\x2c\x2a\x05\xda\x4e\xba\x1d\xb9\xa3\x44\ \xf5\x48\xca\x00\xb9\x75\xba\x21\x62\x0a\x17\x04\xf6\x89\x7b\xca\ \x66\xfa\x99\x0d\x4c\x42\xe8\xb7\x14\x6e\x0d\x01\xb0\xb2\x9c\xa0\ \xc2\x96\x39\x56\x08\x86\x69\x92\x37\xa3\x0e\x59\x5f\x3e\x8a\x5b\ \x07\xd1\x14\xb2\xfe\x84\x2c\x00\x66\x47\xb1\x4f\xf2\xd6\x77\xef\ \x27\x0d\xe3\x91\x3e\x79\x81\xb9\xa1\x4a\xe6\x4c\x02\x42\x19\x13\ \xf9\x46\xdc\x8e\x8a\x05\x0f\xcd\x13\x72\x72\xf8\xc4\x76\x81\xcd\ \x47\xab\xc8\x3c\x39\xfe\xee\x61\x96\xfc\x83\x28\xbc\x8c\x3d\x92\ \xc2\x88\xea\x13\xd2\x16\x7d\x2f\xa2\x0a\xda\xb2\x01\x09\xc6\x7e\ \x09\x18\x21\x21\x20\x05\xd5\xa0\x3b\x0a\x5b\x41\xaf\x4d\x7d\x8e\ \xcc\xda\x85\xa1\x23\xcb\xfc\x3c\x30\x77\xfc\x76\xfe\x68\xc3\x94\ \x99\xf2\x8f\xaa\xd6\x73\x49\xdd\x35\x45\x5c\xb7\x56\x49\x19\x24\ \xd5\x8e\xe6\x02\xc2\xca\x93\xaf\x0e\x29\x89\x07\xf5\xf3\xb2\x85\ \xa0\x27\x54\x1e\x07\x5f\xa9\x9c\x4d\x99\xd8\xd1\x9e\x97\x8a\xa3\ \x57\x62\x2a\xc0\xe0\x8c\x39\x74\xea\xbe\x49\x94\xaa\x3e\x89\xaf\ \x84\xea\xcc\x86\x0a\x1c\x30\x5d\x2a\x92\x0e\x1e\x67\x8b\x21\x95\ \x67\x29\x99\x81\x91\x6f\xe9\x75\x7c\xfd\x8e\xc9\x0d\x32\x4f\x06\ \xe4\xb2\xea\xfc\x80\xb8\x42\x8c\xcd\x3e\x22\xaa\x52\x92\x09\x3e\ \x2c\xc7\xd7\x17\x61\x2f\x9b\x79\x10\xde\x61\xb0\xa1\x29\xdf\x93\ \xba\xa4\x4b\x8b\x15\x22\x60\x42\x4a\xa1\x44\xbf\x8e\xaf\xb7\xec\ \xbd\x94\x6c\xab\x94\x34\xe4\x06\x31\x13\xa0\xf0\xee\x8a\x22\x2f\ \x96\x34\xe1\x1f\xe5\xae\x2e\x80\xac\x43\x7c\x3d\x68\x4b\xc9\xe9\ \x15\x4d\x32\xc3\x1f\x3c\xf5\xe0\xea\x95\xe8\xcb\x65\x9c\xc5\x3a\ \x21\x2a\x1f\xcc\x53\x8c\xaf\x27\x00\x65\x4b\x57\x64\x35\x58\x11\ \xe9\x1b\x1f\x1a\xc5\x4f\xa3\x91\x35\x5c\xe2\x9b\xf2\x8f\x7a\xc6\ \x02\xc4\x54\x30\x63\x67\x9f\x7a\xac\xc8\x18\xa2\x97\xb1\xa3\x91\ \x2a\xa1\x48\xa2\xf7\x19\xff\x68\x82\xaf\xa7\x81\x30\xec\x80\x30\ \x5d\x32\xc8\xe5\x31\x47\xad\x23\x35\x0b\x6d\xf2\xa0\x70\x30\x22\ \xc2\x3f\xba\x85\xaf\xe7\x97\xb3\xa3\x7e\xbe\x80\xe8\x12\xd8\x45\ \xec\xa8\xc8\x88\x7d\x8a\x9d\x3c\x9f\xd8\xe9\x76\x74\x0b\x5f\x2f\ \x6c\xd3\x15\xc6\xc6\xfd\x54\x6d\x52\x43\xaa\x53\xa4\x70\xf2\x52\ \xfe\x51\xdd\xd1\xd8\x3c\x91\x76\x3a\xe8\x6b\x0f\x7f\xbf\x5a\x27\ \xaf\xee\xd0\xbf\x2c\x28\x3f\x31\xd3\x36\xff\xa8\x32\x68\xdd\x64\ \xf8\x7a\x35\x4d\x3c\x4f\x0e\xd9\xa0\x7b\x89\xa1\x52\xbd\x07\x13\ \x1e\xf3\x8f\x2e\x82\x0b\xbd\x8e\xaf\xc7\x6b\xc6\x79\xe2\x5d\xb2\ \xdf\xba\xb3\x3c\xf6\xa2\xf7\x68\x51\xca\x3f\x9a\x95\x18\x73\x7c\ \x3d\xaf\x13\xac\xc3\x20\xc1\x81\x30\xf6\xd6\x89\x0f\x82\x32\x1a\ \x3a\xcf\x95\x64\xfc\xa3\xd7\xf1\xf5\x09\xdb\xb8\x32\x16\x0c\x6e\ \x47\x11\xd2\xbf\x4d\x20\x6d\x49\x43\x39\x19\x73\xfe\xd1\xd3\x35\ \x7c\x3d\x0b\x0a\xd2\x11\x0f\x4a\xd5\x1d\xa5\x4f\xea\xb6\xc4\xf6\ \x3a\xf4\x48\x11\xcc\x78\xf8\x57\xf0\xf5\xe5\x83\xb0\x63\xcb\x3a\ \xdc\xc9\x29\xa1\x88\xb8\x79\x38\x79\xc2\x46\x17\x33\x3e\x51\x5d\ \x3e\x65\xf8\xfa\xb0\xcf\xf5\x68\xc2\xa2\x4c\x89\x26\x11\xd6\xcb\ \x02\x5f\x1f\xb3\x62\x13\xdb\x6b\xda\x31\xc7\xd7\x6b\x52\x07\x5a\ \x85\xf5\x2b\x03\x8d\x45\xe7\xf5\x61\x6a\xe4\x65\x09\x6d\x3f\x8b\ \x44\x6e\x88\xaf\x07\x6e\x8b\x88\xf6\x3f\x6c\x99\x6e\x61\x41\x75\ \xe4\x15\x0a\xa5\x15\x7b\xf6\x14\x9a\x79\xc9\x3d\x6d\xe1\xeb\x19\ \x84\x50\x17\x47\x0f\x5b\x26\x79\x71\x0d\xf0\x9a\x25\x49\x12\xf4\ \x09\x31\x91\xb6\x1d\xc2\xb9\x8d\xaf\x4f\xde\xfa\x31\x65\x28\xaa\ \x82\x21\x6a\x08\x05\xef\x08\x9f\x9e\x8e\x7f\xf4\xf6\x2a\xbe\x3e\ \x19\x10\x0d\xe7\xb4\x2e\x94\x49\x3d\x7c\x1d\xc1\xfb\x94\xfc\xa3\ \xd7\xf1\xf5\x88\x39\xd6\x0f\x14\xc9\x86\x1b\x91\xe5\x67\x72\x65\ \x44\xbe\x5a\x6f\x50\xfe\x51\x84\x4e\xf1\xf5\x07\x18\xb4\x5c\x80\ \x67\xd2\x9a\x88\xfe\x71\xa2\x1a\xe2\x42\xd1\x60\x63\x79\x9b\xae\ \xf1\x8f\xe6\x50\x36\x2a\xe0\x46\xa8\x81\xa4\xe8\xfe\x51\xe8\x0a\ \xe4\x7d\x92\xf8\x0e\x63\xef\x72\xce\xd7\xf8\x47\x29\x31\x26\xf8\ \x7a\x26\x33\xf9\xa8\xde\xe6\xdc\x31\x4d\x4a\xa7\xd7\x63\xa2\xc2\ \xe5\xa7\xb4\xd8\x7f\x39\xff\x28\xc1\x1d\x06\x9f\x00\x84\x1d\x45\ \xd4\x51\x20\xeb\x5e\x48\xd8\x1c\xc5\x8b\x72\x42\xfa\x51\xd6\x29\ \xff\x68\xee\xe6\xb1\xe0\x24\xdb\xa3\xf5\x58\x53\x62\x26\x2d\x85\ \xea\x70\xcb\x51\xc3\x7a\xe4\xcc\x38\x72\x23\xfe\xd1\x80\x00\xa2\ \xda\x51\xdb\x53\x84\x84\x7b\xd2\xb8\x4a\xdc\x08\x56\x2d\x88\xe6\ \x47\x8f\x42\xd9\x52\xbe\xa7\x04\x82\x71\xea\xb6\x73\xbf\x87\xfb\ \xe3\xd0\xe7\x75\x72\x98\x50\xfd\x10\x86\x28\x53\x89\x67\xcf\x0a\ \x1f\xfb\x96\x48\x69\x03\x5f\x7f\x01\xd8\x83\x13\x41\xcc\xe6\xd8\ \xa3\x34\xd9\x80\xb4\x81\x09\xf5\xe2\xf2\x1b\x09\x95\x7f\x54\xf1\ \xf5\x6a\xf2\xed\xe8\xfb\xb3\xf7\x13\x9a\xb4\x70\x47\x58\x2f\xe6\ \xc9\xf4\x28\xa8\xdf\x0c\x79\x63\x26\x51\xa8\x89\x99\xe2\xeb\xf7\ \xba\x9d\x8c\xba\xd3\x01\xd1\xae\x6c\x0b\xc0\x1a\x74\x3d\xd1\x9d\ \xbb\x00\xd2\x49\x18\xbc\x4c\x37\x31\xbe\x1e\xa7\x44\xf6\x15\x6a\ \x4f\x65\x2b\xc0\x77\xa2\x3d\xcb\x67\x9c\x39\xf8\x84\xe1\x2d\xb9\ \xa3\xf8\x79\x62\xf3\xd9\x52\x3f\x6e\x3b\x87\xaf\x32\x7e\x53\xed\ \xe8\xdc\xcc\x10\xa3\x6b\x3c\x0d\x45\x58\x4f\x8d\xaf\x97\xe7\xc9\ \xc4\xcc\x20\xc1\xe5\xeb\x58\xbe\x26\x47\xde\xbf\xb8\xae\x71\xcd\ \x38\x73\xec\xdb\x06\x1f\x2c\xf8\x7a\xf2\x92\x25\x73\x23\x8d\x8f\ \x9d\xa4\x45\x46\xb6\xd2\x75\xb6\xb7\xf9\xfb\xb9\x4f\x3c\xf1\x41\ \x9f\x32\xa7\x64\xa7\xf8\xfa\x4e\x9b\x50\xa6\xf0\x8a\x32\xb1\x85\ \xc1\x7c\xed\x1d\x75\x53\x06\xe2\x61\x2d\xf6\xc1\xc7\x07\x78\x25\ \x9e\x53\xd4\xf3\xc4\x8e\x3a\xe6\xbc\x60\x98\xb1\x9a\x51\x74\xa9\ \x2e\x2c\x68\xc7\x44\x48\x10\x9a\xb0\xb7\xe7\xf8\x7a\x74\x1e\xfb\ \x24\x05\x1c\xa4\x15\xdf\xc4\x98\x08\x69\x7c\x72\xbc\xd8\x02\x12\ \x42\xca\x65\x91\x28\xf4\x14\x46\x76\x72\xf4\x08\x8b\x98\xa2\xf6\ \xd8\x51\x98\x54\x58\x45\xe3\x7d\x0e\x7f\x50\xea\x51\xfb\x2f\xc3\ \x8a\xb0\xc0\xd7\xfb\x58\x04\xd3\xc4\x0f\x02\x73\xf8\x75\x2b\xe1\ \x79\x34\xbd\x72\x7c\x15\x4e\x46\x79\x45\xa9\x31\x0b\x83\xd6\x4d\ \x8c\xaf\xc7\x3a\x89\xa7\xc7\xd1\x87\x73\xee\xca\x9a\x64\x06\x06\ \x7e\xbe\xcc\xb5\x55\xe0\x55\x0e\xb7\x44\xa3\x28\xd6\xb3\xad\x44\ \x76\xeb\x8f\xef\x19\x77\xf3\x99\xb8\xa0\xee\x09\x75\x1e\xbe\xef\ \x73\x25\x99\x9b\xf3\xe1\x67\xf8\xfa\x68\x2b\x19\x1a\x29\xec\xed\ \x2d\x6f\x9e\xce\x35\x75\x43\x0e\xab\xcc\x01\xf1\x6c\x92\xc3\xdf\ \xc6\xd7\x7b\x07\x1f\x0b\xda\x19\x27\x64\x85\x37\xcf\xcf\x3c\xe3\ \xf0\xcd\x69\xae\x60\x3b\xa5\xc3\xc7\xde\xb3\x36\xf0\xf5\xf6\xe5\ \xec\xdd\x4a\x95\x1e\x65\x12\x97\x64\xb6\xdf\x0b\x3f\xb3\x28\x93\ \x7d\xc8\xe2\x67\x7c\xf8\x8a\xaf\x57\x7f\x74\x64\x5f\x51\xfb\x89\ \x69\xeb\x8d\x5f\xca\x20\x0c\x2e\x29\xf1\xb2\x9a\x27\x0d\x42\xf3\ \xf9\xf5\xdb\xf8\xfa\x91\xbe\xa7\xc2\x8f\xab\xed\xa3\x13\x75\x11\ \xb6\xd5\x5d\x52\x57\xb3\x4b\x4e\x5e\xfa\xc9\x6e\x25\xae\x8f\xf1\ \xf5\xda\xaa\x01\xf1\x6c\x3c\x4d\x4a\x03\x26\x3d\x7a\x64\xf5\xa2\ \x6e\xd7\xeb\x73\x7c\xfd\x6e\x0f\xe7\x2c\xe3\x8c\xd5\xc9\x23\xa5\ \xe3\xcc\x92\x6f\xc8\xf5\x6c\xf8\x45\x9f\xd4\x8a\xea\x24\x46\x9d\ \x5f\xaf\xf8\xfa\xbd\xb8\x7a\x8e\xca\x55\x75\xaa\x6a\x7d\x5f\x11\ \x25\xe9\xe8\x5e\x7b\xc5\x06\x02\x0a\x8e\x76\x34\xc7\xd7\xab\x4b\ \x42\x68\x6f\xdf\xee\x65\xba\x44\x23\x38\xa6\xed\xc2\x1f\x9d\x3b\ \x7f\x34\x8f\xf0\xd4\xc3\x57\x34\x1b\x62\x6e\x9b\x27\xb8\xf3\xcc\ \x86\xc2\xe3\xac\x61\x72\x5c\xbc\x21\x45\x66\x9f\xed\x7a\x7d\xab\ \xf5\x7e\x36\x38\xde\x28\x5e\xbe\x8c\x5d\x9e\x68\xce\xe2\x09\x95\ \x45\x70\xa7\x0b\x9f\x64\xd9\xe4\xc3\x6f\xb5\x5e\x0d\xa9\x7b\xeb\ \x35\xe5\x8c\x87\x3f\xb4\xc9\x52\x15\x90\x70\x19\x4b\x9a\xcc\x6c\ \xb8\xed\xf8\xf0\xc3\x51\x08\xbb\x36\x91\x7b\x84\x7e\x74\x54\xb5\ \x67\x49\x26\x4f\x94\xc9\x61\xee\x74\x54\x8b\x1e\x3c\x5a\x1f\xe3\ \xeb\xe3\x72\x28\x6f\x93\x32\x68\x91\xbc\x67\x2f\x35\x3b\x4e\xbc\ \xa4\x45\x26\x01\x38\x08\x1f\x7e\x8c\xaf\x4f\x1a\x5f\x98\x79\x84\ \xdf\x5c\xfd\xbc\x2a\xe2\xe4\xa0\x96\x62\x48\x17\x18\x0b\x36\x07\ \x1a\x2b\x1f\x7e\x8e\xaf\x97\xc4\x73\x11\x96\x9f\x78\xfe\x49\x55\ \xfc\xde\x3a\xe1\x2d\xd3\xde\x8e\xf2\x83\x6a\xc8\xb5\x9e\xe5\xf1\ \xf5\x28\x13\x05\x3b\x52\x10\xb5\x20\x26\x64\xe3\xf8\xf8\x2e\xad\ \xb7\xac\x6f\x3d\xde\x53\x94\x79\x92\xfd\xbc\xd5\x7a\xbd\xe2\xeb\ \xf5\x8e\xc2\x3a\x1d\x28\xfe\xd4\x06\xcc\x7a\x47\x81\x34\x30\x2a\ \x18\x95\xf7\x61\x68\x7f\xf8\xd4\xeb\x63\x7c\x7d\x18\x2a\x37\xb9\ \xa7\xa3\x97\x72\x98\xf0\x46\xd0\xa6\xa8\xce\x98\x03\x58\xb3\x29\ \xc1\xdb\xf8\x7a\x5b\xea\x3d\x51\x60\x74\xc3\xb9\xa4\x75\x78\x0c\ \xcc\x13\x08\x56\x9f\x7c\x22\x89\x2f\x4a\x2f\xf5\x7a\xe2\xfa\x48\ \xce\xa6\xa5\x24\x9e\x69\x3b\x55\x8d\xaf\x5a\xb4\x62\x43\xe9\x28\ \xd1\x66\xc7\x00\xd3\x12\xbd\xa2\x32\xbf\x5e\xeb\xf5\x87\x5e\x4a\ \xbe\x91\xb0\x36\xf8\xaa\xe2\x81\xa7\xbc\x2d\xd3\xa1\x2e\x63\xd8\ \x7a\x3e\xbf\x9e\xb0\x8e\xc8\x49\x56\x3f\x6c\x9d\x3a\x38\x4f\x28\ \xda\xef\x82\x11\x92\xb8\x33\x9d\x25\x12\x87\x6a\x6d\x39\x9f\x5f\ \xcf\xe9\x87\x99\x32\x24\x0d\x0a\x77\xae\xed\x69\xf2\x31\xe8\x52\ \x23\x27\xd0\xe0\x9a\xd0\x63\x3f\x7d\x5b\x89\xcc\xaf\x37\x01\xa3\ \x1d\x1d\x11\xf0\x78\x64\x47\xb5\x7f\x94\x87\x14\x8b\x8f\xb0\xbe\ \x55\x43\x79\x1d\xa9\x8c\x64\x7c\xf8\xfa\xd8\xdb\x57\x63\xbc\xe3\ \x31\xf6\x48\x10\x51\x03\x3b\x90\x57\x46\xfc\x81\x83\x2f\xea\xf4\ \xb4\xf5\x7a\x8f\x61\xf5\x7b\x6a\xed\x3a\x91\x8c\x48\x6a\x2f\xbe\ \x3f\x7a\x86\xb2\xb1\xa7\xf3\x90\x95\xc1\x89\x9c\xf2\x7a\xbd\x05\ \x77\xa2\xf3\x48\x7b\xf4\xbd\x3a\x5a\x67\xb2\x2b\xca\xd1\x0b\x58\ \x04\x84\xd8\x80\x94\x00\x58\xd1\x27\x66\x83\x07\xd3\x25\x08\x98\ \xa5\x99\xc8\x3e\xcc\xb9\x0b\xdb\xc9\xc6\x15\x66\x2d\x34\xf3\x94\ \xc3\xb2\xc7\xe9\xea\xd1\x6b\x4d\x4c\x22\x50\x7f\x09\xdc\x63\x0f\ \xe6\xc6\x8e\xbd\xc8\xaa\x3b\xca\xe3\x04\x7e\x99\x52\x18\xe9\x87\ \x64\xd8\x19\xf5\x7a\xbc\x3c\x1a\xc7\x15\xdb\x20\x73\xee\x48\x90\ \x18\x24\xbc\x27\xab\x30\xd3\x04\x9d\x4a\x6c\x45\xf1\xa1\x94\xfe\ \x43\xd1\xb6\x80\x58\x3d\x4e\x88\xa4\x53\x3e\x97\xed\x52\x0b\x99\ \x78\x9a\xc0\x58\xf7\x75\x50\x11\x96\x3b\x2a\xe5\x1b\x89\x97\x70\ \x4b\xe4\xec\xed\x57\x6b\x45\x11\xd5\xde\xf9\x89\x70\x69\x05\x85\ \x03\x0e\x64\x8e\xd0\x1c\xbe\xf5\x18\x7c\x85\xad\x37\x7b\x8a\xd2\ \x67\x75\x26\x9d\x1b\xa8\x6f\x3d\xe6\x74\xc2\x3e\x61\x46\xcb\xd7\ \xfc\x66\x9d\x72\xc7\x9e\xea\xfc\x7a\xa4\x24\x58\x0a\x10\x77\xa3\ \x26\x75\x1a\xcc\xdd\xc0\xae\xe2\xe8\x4d\xbd\x94\x33\xe9\x31\x9d\ \x6c\xa9\xe0\x0b\xc1\xd7\xfb\x85\xb9\x2f\x29\x09\xd6\x88\x32\xa5\ \x13\xee\x7c\xbc\x3c\xf1\x42\x31\xdb\x32\xe6\x80\x78\x36\x68\x2a\ \xda\xe2\xc3\x17\x0a\x4a\xcd\xe1\x73\xf4\xbd\x8f\x37\xc1\x3a\x8c\ \xb1\x0f\xa1\x6c\xb6\xb9\x71\x04\xba\x28\xbe\x3e\x8c\xeb\x31\xf7\ \x87\xd0\x71\x8e\xb5\x7e\x6a\xae\xa8\x09\x8a\x3a\xa1\xf5\xeb\x0f\ \x88\x60\xcd\x8d\xcb\x12\x12\x4a\x21\xa7\x41\xf3\x47\x37\x05\x41\ \x94\xde\xc4\x2c\xa2\x32\x5c\xa2\x88\xea\x41\x77\xe4\x47\xa3\x6d\ \x15\x35\xca\xd1\x37\x88\x9b\x5d\x00\x24\xf5\xe5\xfa\xfa\xb1\x93\ \x9f\x2c\x1c\xd1\xa2\xed\x42\xe1\x4e\xd3\xa3\x32\xe0\x32\xe7\xc8\ \x45\xf1\x99\xcb\x26\xba\xe4\x8d\x53\x2b\x2e\xbb\x39\x51\xb0\x35\ \x39\xa9\xd7\x03\xb2\x57\x65\x52\x31\xf1\x9e\xc2\xa2\x18\xcb\x67\ \x1d\xe3\x7a\x3d\x83\x10\x6c\x43\xcd\x71\x9e\x92\x27\x94\x08\x54\ \x23\x26\x56\xc6\x87\x6f\x1f\xea\xa1\x7e\x80\x1c\xb2\x2a\xe1\xb4\ \xb2\xa9\x90\x7c\x42\xe5\xbd\x53\xa2\x4b\x04\x25\x53\xa2\xe6\x89\ \x8a\x6d\x14\x8c\x60\xf1\x11\x16\x40\xc3\x1b\x9f\x7d\xf2\xe4\x1b\ \xf7\xab\x9c\xb0\x68\x45\x3d\x3a\x14\xc5\x00\x5e\xc5\x37\x14\xc0\ \xc0\xa9\x8f\x42\x9c\xa8\x72\xfe\x48\x28\xe3\xce\xee\xdf\x2b\xeb\ \x2f\xc5\x1d\x2d\x1f\x77\xf4\xdf\x7c\xe9\xcd\x97\x8b\x26\xcd\x92\ \x1c\x97\xa8\xbe\xc3\xd7\x4b\x36\x0f\x71\x23\x98\x90\x3f\xf8\xde\ \xd5\x1b\xc6\xdf\xdf\xab\xeb\x23\xa3\x79\x79\x45\x54\x9b\x81\xf1\ \x7c\x61\x04\xfc\x77\xa1\x4d\x4c\x30\xd6\xd8\xd2\x7e\xc5\x7c\xf8\ \x76\xe4\xf6\x4d\xeb\xf5\x9a\xd1\xfb\xc5\x85\xdd\xf1\x51\x51\x25\ \xbf\xa3\xcf\x54\x92\xe1\x93\xd9\x4e\x53\xa8\x6e\x57\xd3\x82\xd8\ \x21\x63\x9c\x0e\x71\x2d\xbe\x5e\xbf\x8a\xca\x25\xfd\xda\xf7\xdf\ \xfa\x74\x1d\xb0\x33\xc8\xcc\xab\x1f\xdd\x33\x66\xf7\x36\x66\x1a\ \xe2\xa2\xed\x76\x92\x4c\x93\x0f\xb6\x0e\x54\xee\xc8\x38\x33\x3c\ \xd0\xf9\xf8\x87\x8f\xc2\xe3\x6c\x9a\x64\x9d\x2f\xff\xaa\xdc\x85\ \x67\xd7\xfb\xa0\x6f\x68\x24\xe8\xf5\xf9\xf5\xfa\xdc\xfb\x1c\x3e\ \x27\x8f\xc1\xff\xdb\x85\x6c\x7c\xe8\x02\xbc\x8f\x17\x52\xa3\x42\ \x3f\x5d\x58\x32\x87\x5e\x46\x9f\x2b\x61\x5d\x9f\x5f\xdf\xc7\xf5\ \x5a\x10\x43\x4c\x6b\x29\x18\x2b\xa7\xeb\xeb\xc7\xa2\x4b\xbe\x57\ \xe3\xfe\x97\xff\xfc\x70\x37\xd3\x03\xa1\xfe\x7d\x9e\x1f\xdd\x9e\ \x5f\xaf\x3a\x2f\xf5\x7a\xdd\x51\x23\x4b\x9e\x6c\x4f\x7b\xa3\x3f\ \xcf\x02\x69\xd1\x0c\xc4\xd6\x5b\x0f\x6c\xfd\xee\xcb\x6c\x4b\x87\ \x67\xb2\x23\x67\x28\xe3\xc8\xc6\xae\xa8\xb0\xdf\x14\x82\xad\x22\ \xa4\xd8\xd2\xc5\x66\x49\x2d\xf6\x9a\x46\x31\x13\x9f\x56\x50\x6a\ \x8c\xfb\xf2\x29\x7f\xee\xe4\xdd\xfb\x3e\x32\xa4\xb5\xe4\xbd\x10\ \xaa\xac\xec\x1f\x77\x97\xf4\x1f\xe7\x6e\x86\x18\x84\x44\x8c\xeb\ \xd0\xb6\x12\xe2\x7a\x96\x8b\x42\x29\x31\xc2\x46\x46\x0d\x5c\x3b\ \x08\x99\x6e\xa9\x47\x3f\x7d\xa8\xb0\xeb\xed\x64\xac\x29\x72\x56\ \x92\x5c\x62\x11\xc5\xdf\x5c\x2d\xda\xf2\x34\x61\xa3\x92\x44\x2e\ \x1b\xcb\x2a\xde\xd3\x7b\x65\x44\xcb\xa9\xa4\xca\xb1\xa4\xf3\xfa\ \xb7\xca\xc9\x0c\xce\x84\xa4\x46\x47\x21\xa8\x61\x0a\xbb\x9e\xf4\ \xfd\x64\x1d\x1b\x96\xb7\x69\xfa\x5f\x99\x62\xf1\xe4\x7d\x0b\x46\ \xea\x5a\x2c\x14\x99\x7e\xf7\xb3\x32\x5c\xc2\xec\x3d\x3b\x4a\xa0\ \x1c\x2b\x13\x5b\xea\x61\x8c\xcc\x42\xd0\xc8\x3e\xec\x72\xc6\xd1\ \x7b\xc6\x5e\xd2\x3f\xed\x70\x9d\xcb\x9a\x3f\xfc\xe2\x07\xd4\xba\ \x5f\xda\x17\x3a\x4a\xf6\xd3\x61\xc3\x42\x60\x0b\x50\xb6\xc8\xe0\ \x87\x78\x26\xd7\x5d\xd2\x63\x58\x87\xea\x36\x7f\xe2\x53\xc6\xa0\ \xfb\xa8\x33\xa4\x7f\xac\xcc\xfd\xfb\x9a\xc5\xcd\xd1\x0d\x51\x89\ \x31\xe9\x71\xb6\xed\x54\x3c\x13\x47\xaf\x1c\x10\x83\x45\x77\xd3\ \x1b\x95\xa3\xff\xbb\x8f\x07\x3f\x16\xbe\xcc\xef\xf8\xeb\x79\xb4\ \x4b\xea\x5d\x12\x0f\x63\xd3\x3b\x1a\x61\xeb\x09\xeb\x38\x7a\x69\ \xd4\x22\x72\x12\x24\xdb\x1f\x0a\xa7\xfc\xe7\xce\x37\x93\x77\xf2\ \x5f\x2e\x9c\xfe\x0f\xe7\xcb\xd2\x70\x24\x62\x2c\x40\xeb\x91\x54\ \x19\x5d\xb3\x0e\x7c\x5c\x3d\xdf\x4e\x50\xc2\xd1\xc2\x51\xfb\xda\ \xc3\x5d\x51\x25\xdc\x92\xca\xe3\xff\xea\x83\x8b\x90\x72\x49\x1b\ \xca\x44\x0d\x45\x58\x32\x9a\x49\x6b\xa1\xf4\xe1\xfb\x6c\x33\xe2\ \x16\x8b\xf4\x76\x11\xf4\xd0\x45\xa1\x73\x75\x03\xce\x87\x99\x2d\ \x1d\xb6\xc8\x5f\x34\xb8\xf3\x3b\x6a\xd4\x2f\x1c\xbd\x80\xaf\x8e\ \x61\x9f\xc6\xb0\xde\xd3\xf7\xea\x73\x6f\x2e\x3e\xeb\xbf\x77\x63\ \x75\xcf\xf6\x34\x95\x2f\x42\x3a\x9c\x48\x8c\xb9\xe3\xe8\xf7\x9e\ \x9d\xe8\x70\x79\x9a\xc8\x8b\x96\xdf\x9a\x71\x46\xd4\x3a\x81\xb1\ \x3e\xf7\xc0\x05\xa6\x9a\xd0\xf9\x4a\x19\xa5\xd0\xdc\xd0\x39\x76\ \x4b\x78\x9b\xf0\x9e\xa2\x54\x89\xdb\x4e\x09\xf0\xa9\xd7\xdb\xff\ \xca\xe8\x3b\xbd\x79\xa7\x4c\x67\xfc\x51\x63\x78\x7b\xf1\x8e\x9d\ \xbc\xb9\xa2\xb3\xc4\x4b\xe8\x7c\x5e\x62\x84\x9e\xc8\x54\x89\x1e\ \x67\x28\x4a\xbc\xc6\x7b\xa7\x84\x01\x72\xd3\x3f\xab\x4f\xda\xb7\ \x3d\xbd\x6f\xf3\x4f\xea\xc1\x9b\xa0\x2c\x5f\x6d\xd0\xe0\x4e\x5a\ \x5f\xaa\xab\x27\x58\x70\x8c\xfe\x51\xf3\xa3\x53\x5b\x69\x9a\xbe\ \x5e\x2f\x69\x75\x9d\x79\xeb\x9f\xfb\x80\x10\xf4\x3c\xb6\x47\xef\ \x02\x3b\xef\xe0\xe7\x5d\x3a\x18\x27\x25\xa6\x52\x4c\x53\x92\xc7\ \xb5\xee\x2c\x0b\x9c\x3a\x3a\xd7\xe7\xb8\xa2\x28\x53\x67\x4a\x13\ \x56\x8d\x38\xe1\x0c\xa8\x6d\x6f\xb2\x82\x07\xf6\x20\xeb\x84\xf0\ \xa9\xf8\xa4\xff\x39\xfb\xdc\x78\x09\x44\x5f\x7b\xb0\x8e\xe1\x64\ \x43\x11\x31\x88\x45\x6e\x5d\x63\x01\x62\x62\x49\xc3\x77\xc9\x1e\ \x23\xcb\xe1\x53\x5f\x1e\xec\xf0\xad\x24\xfa\xf7\x62\x31\x77\x1d\ \x79\xda\xed\x2f\xdf\x39\xef\x6d\x0c\x27\x73\x25\x70\xee\xed\x77\ \xc6\x3f\x9a\x00\xaf\x76\xa0\x6d\x25\xe5\xcc\x7e\x76\x8f\x93\xd9\ \xa7\xe1\xa5\x8b\xa0\x1d\x64\xe0\x74\x53\xe0\x42\xb6\xe2\x17\x94\ \xd3\xef\x94\x09\xf1\x72\x7c\x3d\xe6\x9e\xc9\x81\x81\xcd\xb7\xce\ \xac\x17\x8a\x4f\xf2\xd6\xe3\x63\xc7\xe7\x59\x65\x34\xad\xc7\x3c\ \x21\x63\x18\x2c\xd3\x44\x88\xa8\xbc\x4c\xda\xe3\x3c\x12\xd7\xdb\ \xa0\x7d\xaf\x49\x40\xee\xc6\x7b\xd5\x79\x7a\xe8\x4f\x9e\xd9\xbb\ \x68\x7d\xca\xe6\xab\x5d\xe3\x91\x12\x01\x10\x91\xfb\x59\xe4\xc5\ \xbf\xeb\x14\xca\x10\x0d\x95\xe9\xf9\xf1\x09\x31\xdd\x00\x14\xc6\ \xad\x0b\x9e\x09\xac\x88\x94\x6f\x42\x1c\x23\x95\x5b\xcd\xe4\xea\ \x9c\x3b\x22\x26\xb3\xa6\xef\xde\xc9\xf9\xf3\x8f\xb5\xa0\x01\x3b\ \xfa\x22\xe7\xe2\xcd\x53\xd8\x98\x29\xa3\x10\x0e\x5d\x78\x47\x8f\ \x8e\x43\x83\x8f\x1a\x8b\x50\x11\xdd\xad\x95\x06\xab\x2e\x3f\xff\ \xab\x77\x5e\x7f\x74\x1a\x46\x6f\x9c\x96\x15\x7a\x65\x82\x72\xf2\ \x2e\x54\x0e\xe3\x7a\x38\x28\x95\x08\xc0\x36\xd3\x07\x23\x00\xd9\ \x34\x52\xa6\xdd\x71\xa8\x26\x8b\xe5\xc0\x0d\xee\x8e\xca\x0a\xac\ \x93\xd9\x51\x4c\x29\x09\x7c\x84\xed\x72\xf7\xc0\x59\xec\x8f\x0a\ \x0a\xee\x86\x2d\xf5\x09\x1d\xf6\x94\x30\x54\x77\xd5\x1b\x7c\x1d\ \x17\x4a\x0c\x9a\x06\x22\xf6\xc3\x3b\xca\xd1\x2b\x6e\x7d\x6c\xd1\ \x22\xeb\x2d\x5d\xea\xd9\x3b\xfa\x51\xa9\xd6\x2f\xb1\x79\x02\x76\ \xb7\x07\x0d\x8e\xa4\x0e\xd3\x40\xcb\x9b\x13\x75\x6a\xfa\x74\x82\ \x2b\xca\x80\x1e\x3d\xfa\x67\xb5\x01\x66\x1b\x69\x6b\xf0\x7a\x53\ \x27\x0f\x5f\x1d\x31\x53\x31\x26\x18\xb6\xa7\xa0\x7b\x14\xad\x2f\ \x3b\x5a\xbe\xea\x38\xa3\xf2\x89\x53\xa2\xe9\x92\xbd\x3c\xa1\xf8\ \xf9\x75\x73\xa5\x68\x3b\xd5\x73\xa6\x20\xde\xc2\xae\x30\xf9\xb6\ \xa7\xbc\xf5\xe2\x36\x2b\xab\x06\xe3\x8c\x7d\x58\x6f\x1a\x9f\xb4\ \xbe\xf8\x3d\xa5\x1d\x9b\x36\x2d\xf4\x49\x86\x98\xdb\x9e\xb2\xa5\ \x51\x7e\x54\xe3\xfa\x28\xf5\x44\x35\x4c\xc0\xb6\x88\xaa\x0c\x5a\ \x0e\x22\x16\x15\xeb\xd9\xd0\xbc\x5e\xaf\x95\x70\x85\xad\x63\x48\ \x3d\xf0\xea\xa0\x05\x46\xc5\x5b\x4e\xbc\xa0\x40\x9a\x5a\x7a\xaa\ \x75\x34\xd7\x56\xbd\x9e\x4e\xa2\x25\x05\x0c\x28\x24\x58\x8b\x37\ \x98\x52\x9c\xbc\x76\x01\xbd\x91\x46\x42\xd4\x09\x7c\xbd\x6c\x6b\ \x95\x8f\x0b\xa0\x43\x7a\x34\x4b\xe2\xc9\x15\x50\x78\xb5\x4f\x8d\ \xe5\x74\xdd\x79\x32\x46\x0a\xdf\x69\xc8\xea\xf5\x4b\x52\x0e\xb5\ \xb7\x3e\xc5\xd7\xb3\xa9\x31\xbe\x5e\x82\x26\x85\x8a\xe0\x93\x98\ \xa8\x36\x4d\x26\x64\x55\x91\x2c\x2e\x3b\xaa\x16\x9f\x17\x4a\x63\ \x7a\xad\xd7\xab\xac\xd0\xd5\xe8\x53\x6f\xea\x04\x2e\x54\x18\x4a\ \x36\xfd\xd1\x7c\x7e\xbd\xc2\x57\x3b\x88\x75\x44\xf9\xd3\x1e\xbc\ \x1c\x3e\xa8\x9b\xd9\x89\xa9\x59\x67\xbd\xa3\x58\x28\xc5\xd7\x2b\ \xa3\x4a\x06\xbb\x63\x2b\x51\x25\x7e\xd1\xaa\xe1\xe1\xd5\x82\x67\ \xca\xb0\x22\x87\x78\x11\xd9\x13\x2f\x6b\x2b\xb6\x89\xaa\x2d\xce\ \xd0\x3d\x89\x29\x75\x97\x33\xc6\x33\x51\x63\xee\xb2\x79\x27\x73\ \xa0\x76\xd1\xfc\x7a\xd4\x9e\x0d\x15\x30\xb8\x13\x11\x28\x5b\xf0\ \x32\x0d\x34\x8d\x67\xe6\x9e\xb7\x7e\xdb\x29\x21\x49\x4a\x17\x61\ \x5a\xaf\xf7\x0b\x29\x95\xe7\x4b\x47\xca\x00\x69\xda\x86\x0c\x10\ \x2e\xc7\x53\xd9\x0e\x1a\x86\x6a\xbd\x5e\x7a\xdb\x31\x50\xad\x94\ \xd0\xcc\xb7\xf7\x33\xae\xd7\x9b\x90\x5a\x15\xf1\xf5\x5a\xc1\x33\ \xe9\x56\x86\x50\x5b\xb8\x1f\xc8\x93\xcb\x0d\xcd\x40\x18\xca\xec\ \xa9\x99\x12\x13\xf3\xe6\x3a\xbe\x9e\xce\x66\x14\x5f\x2d\x69\xf6\ \x7e\xfa\x36\x7c\xeb\xc3\x8f\xf0\x4c\xf4\x40\x2c\x92\xcd\x53\xcc\ \x3a\xa0\x16\x89\x42\x15\xcd\xc2\xff\x7a\xf4\x55\x6e\x7c\xbc\x22\ \x9d\xd6\xeb\xf3\xfc\xa8\x92\x50\x9e\xbc\xac\xf6\x89\xbc\x12\x57\ \xaf\xd7\x57\x69\x90\x93\x77\x03\x26\x1c\x07\x61\xf9\x72\xec\x69\ \x10\x2a\x13\xaf\xd0\x22\xf1\x9e\xd0\x26\x93\x50\x8f\x7f\x32\x0f\ \xdf\x3e\xf6\x57\xa7\x9d\x65\xe4\xed\xa8\x52\xde\x9b\x97\x95\x18\ \x0f\x57\xfa\xdd\xd4\x1f\x65\x4f\xd9\x4e\x3f\x52\xc6\xab\x92\xd0\ \x7f\xc4\xad\x64\x6e\xb0\x29\x87\xce\x0c\x94\x80\x24\x17\xcb\xe4\ \xed\x13\xb8\x50\x3b\xf7\xf6\xfc\x17\x99\x71\x88\x1d\x8d\xb8\x15\ \xb2\xc6\x02\xe5\x7f\x00\xc6\xe8\x29\x48\xf1\x9e\x42\x5a\x8d\x96\ \xcf\x95\x3d\x45\x58\x48\xd1\x7b\x3b\x0a\x54\x40\x6f\x28\x64\xbe\ \x1c\xb9\xbc\x4e\x38\x25\xa3\x00\xc4\xec\x2f\x42\x76\xfe\xd3\x06\ \x27\x3a\x24\x94\xc2\x9d\x16\xad\x7e\x9c\x31\x22\xea\xd1\x63\xee\ \x13\xb2\x2f\xc7\x8d\x8c\x4e\xc5\xbc\xe8\xc3\x2c\x08\xb1\xed\x59\ \x8c\x88\xa9\x96\x74\xe7\x61\x42\xa0\x18\xd9\x4a\x99\xc0\xaa\x3c\ \xe3\xa3\x03\x5b\x7a\x9e\x12\x62\x11\xec\x53\x38\xa9\xe5\xff\x47\ \x8a\xa8\x96\xa8\x5a\x04\xd8\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x0f\x6b\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x01\xf4\x00\x00\x00\x4b\x08\x03\x00\x00\x00\xb1\xe3\x85\xac\ \x00\x00\x00\x42\x50\x4c\x54\x45\xd5\xd5\xff\xf6\xf7\xff\xda\xdb\ \xff\xef\xef\xff\xdf\xe0\xff\xe7\xe7\xff\xea\xea\xff\xea\xeb\xff\ \xeb\xeb\xff\xdf\xdf\xff\xf7\xf7\xff\xfa\xfb\xff\xf3\xf3\xff\xd7\ \xd7\xff\xff\xff\xff\xe6\xe7\xff\xdb\xdb\xff\xe3\xe3\xff\xd5\xd6\ \xff\xf2\xf3\xff\xee\xef\xff\xe5\xe6\xff\x96\xf6\xba\x85\x00\x00\ \x0e\xe4\x49\x44\x41\x54\x78\x5e\xed\x5d\xd9\x92\x24\x37\x08\x1c\ \xa4\x3a\x8f\xbe\x66\x76\xff\xff\x57\x0d\x24\x14\x52\xd7\x4e\xd8\ \x0f\x23\x47\x6c\x84\x52\x05\xd5\xf6\x9b\x9d\x83\x0e\x20\x55\x1f\ \xf7\x1f\x45\xc7\x7e\xdf\x77\x76\xf7\xed\x4e\xf7\x6d\xdf\xb7\x3b\ \x0f\xc1\x2e\x8e\xb6\x63\x3b\x88\x87\x81\x32\x2d\x94\xf9\xf9\xca\ \x05\x96\x3c\x2f\x6a\xcb\x3c\x09\x1e\xd3\x43\x9e\x71\x1c\x1f\x8c\ \xd7\xe3\x35\xb2\x29\x56\x19\x70\xc3\xb0\x0e\x6c\x6b\x5a\x13\x3f\ \xcf\xe7\x73\x65\x4b\x29\x3d\xd3\x2d\xdd\x6e\x1f\xec\x3f\x3e\xf0\ \x30\x7e\x94\x80\x8e\x1d\x9e\x84\xf5\x8d\xf9\xdf\x95\x6d\xf1\x02\ \x12\x53\xde\xc1\xbc\x72\x9e\x29\x33\xc0\xfb\xaf\x99\xc9\x16\xd6\ \xf3\x22\x98\x95\x72\xc6\xfc\x98\x9d\xf4\x51\x59\x07\xed\x41\xbd\ \x93\x9e\xd6\xf5\x29\x8e\xc9\x06\xe9\x37\x19\xcf\xf4\x71\xbb\x81\ \xf0\x06\xa4\xf7\x30\x87\x17\xe3\x58\xdf\xc5\xf1\x6b\x33\x10\xf3\ \x6d\xd1\x2e\xc8\x94\xd9\xd3\x42\xcb\x97\xc5\xfa\xfc\x4b\x1c\xa2\ \xfc\x8f\x91\xfe\x1a\x65\x54\x94\xaf\xaf\xd7\x60\xd1\x9e\x56\x01\ \x07\x79\x5a\x11\xe9\x37\xe6\x3b\xdd\xf0\xdc\x3e\x38\xda\xd9\xb5\ \x21\xbd\xc7\xfa\x2e\x41\x2e\xb1\xce\xcf\xae\xe3\xee\x91\x7e\x90\ \x71\x4e\x94\x65\x1c\x59\xc3\x3d\x30\xcf\x12\xe7\x32\x9c\xf4\x49\ \x49\x9f\x10\xe9\xc6\xbb\xd1\xbe\xca\x33\x30\xe9\x80\x44\x7a\x7a\ \x1a\xe1\x6e\xe9\x79\xbb\xd9\x14\xaf\x9c\x37\x20\xbd\x83\x84\x6d\ \x21\x9f\xd8\x8c\xf3\x3d\xd6\x74\xe7\x1c\x91\x9e\x17\x3a\x98\xf8\ \xaf\xe0\x9c\x1f\xb0\xee\xd3\x3b\xc6\xc8\xcc\x0b\xe9\x55\xa4\xaf\ \x6c\x03\x48\x1f\xd8\x56\x5d\xd3\x95\x78\x7e\x40\xba\x32\xfe\x94\ \x18\x67\x28\xeb\xb7\x9f\x26\xbd\x63\x87\xdb\x09\x3b\x38\x59\xd5\ \x85\x79\x00\x6b\x3a\x06\xf6\x71\x6c\xf9\xf0\x35\x3d\x38\x9f\x75\ \x76\x8f\x48\x9f\x46\x79\xc6\xc7\x0b\xac\x57\x91\xce\x9c\x8b\x07\ \xf1\xe0\x5c\xe7\x77\x4c\xef\x29\xdd\x94\xf7\x60\x9d\x9f\x1f\x26\ \xa0\x53\xbe\xcb\x20\x9d\xde\x39\xde\x69\x33\xec\x14\x6b\x7a\xec\ \xde\x25\xda\x63\x4d\x37\xcc\xc5\xee\x1d\xd0\xa9\x5d\x4d\xf6\x71\ \x3a\x04\x60\xdd\xa6\xf7\x97\xd0\xad\x90\x30\x07\x12\x66\x77\x9b\ \xdf\x99\xef\x26\x6b\x7a\xe7\x1c\x26\x5e\x28\x67\xf3\x75\xdd\xd7\ \x74\x1e\x94\x6d\x8e\x97\x20\xc7\x16\x1e\x98\x84\x70\x7e\x62\xf7\ \xce\x78\xf0\x33\x8a\x8d\x16\xe9\xfc\xc4\xee\x5d\x23\x7d\x78\xad\ \x80\xed\xde\x13\x3b\x90\xce\xb4\x4b\x98\xa7\x9b\x20\xf9\x9a\x3e\ \x01\xf3\xbc\x00\x59\xc7\x9c\x27\xfb\xb5\xe4\x1a\xf8\x67\x6c\x41\ \xf8\xb1\x5d\xe8\xc2\xe3\x50\x6c\x78\x9d\xab\x57\x3e\xb6\x12\x98\ \xf3\xf8\xa1\x8d\xa3\x00\xef\x4d\xd7\x40\x71\x9b\x9c\x71\xe5\x8d\ \xb5\xb1\x0d\x3a\x0a\xd2\x03\x33\x3f\xe0\x5c\x80\x3f\x82\x80\x10\ \x2c\x3e\xfb\x5f\x2a\xce\x1e\x01\x61\x1b\x9e\x0e\xda\xc1\xfe\x76\ \xc1\x5d\x6c\x07\xe5\x4c\x36\x69\x3a\x83\xdf\x08\x16\x62\x93\x7f\ \xe3\x53\x66\x03\x74\xd2\xa7\xe0\x3b\xcb\x5b\xa9\xce\xf3\xac\xaf\ \x12\x87\xbd\x41\xb8\xc4\x37\x58\x3f\x00\xda\xd8\xf0\xd6\x41\x1b\ \x50\x6c\x65\xee\xf8\x67\xb8\xfb\x1d\x26\xf1\x4d\xf8\x4d\x4e\xb9\ \x1f\x79\xf1\x6a\x86\x4e\xfa\x24\x9c\xcf\x59\xdf\xba\xb6\x30\xa6\ \xe0\x5d\x7e\x21\x75\x28\xac\xf3\x0f\x7e\x1f\xfa\xeb\x08\xe4\x63\ \xf3\x41\xf8\x4d\x94\x83\x74\x65\x9b\x30\x9b\x6b\xc4\x13\x29\xf5\ \x32\x24\xb4\xf5\x07\xf1\x60\xd7\x82\xec\x8e\x9f\xdd\xc8\x75\xec\ \x18\xd8\x98\x60\xc7\xe2\x3b\xb9\xcc\xbf\x62\xa7\xa3\x20\x2c\x95\ \xb4\x2c\x6c\x88\x2f\xc6\x82\xcd\xdc\x54\xec\xde\x1f\x23\x36\x72\ \x91\x9b\x79\xd8\xde\x5d\x73\xef\x76\x46\x5f\x93\x3d\x29\x79\xee\ \xfd\xa6\xc7\xb6\x27\xdb\xc7\xf3\x23\x35\x4d\xc3\x76\xea\xc9\x6c\ \x43\x36\x2e\x56\x38\x9c\xd3\xe9\xf0\xdd\x3b\x61\x8f\x54\x16\x5b\ \x2c\x33\x63\xa4\x33\xcf\xec\x41\x7a\x9c\xd3\x1d\xab\xda\xc0\x76\ \xee\xde\x93\xba\x74\xe6\xde\x8d\x79\x1c\xd9\x5a\x64\xe4\x3a\x34\ \x2d\x63\xb9\x77\xec\x4f\xad\xe6\x42\x1b\xc3\xcf\xe9\x9e\x7b\x17\ \x4f\x4c\xbd\x63\x0e\xe2\x05\x73\x04\xfa\x58\xe5\xde\x03\x5e\x65\ \x53\x73\xe2\x53\xe4\xde\xc5\xf0\x30\x9a\xe4\xde\x3b\x88\x0d\xe7\ \x0e\x75\x98\xd9\xeb\x73\x7a\x99\x7b\xb7\xf3\x4f\xce\x14\xbc\x6b\ \x8d\x6d\x2e\x48\x7f\x48\x72\xa6\xce\xbd\x3f\xca\x44\x2c\x58\x2f\ \xcf\xe9\x4c\x38\x22\x5d\x89\xe7\xa3\x3a\xd0\x22\xf7\xde\xb1\xbb\ \x27\xf1\x1b\xdb\xbf\xd4\xd3\x17\x1e\x5f\x19\x83\xf1\xeb\x2d\x0f\ \x3b\xcf\x73\x44\xfa\x03\x69\x58\xb1\xd7\xeb\xf7\x6f\x4b\xcc\xac\ \x2f\xa7\x7c\x18\x12\xc2\xbc\x5a\xd3\x51\x5d\xfd\x3c\x59\x6f\x44\ \x7a\xe7\x5d\x52\x4c\x36\xb3\xff\x5b\x3d\x9d\x07\x18\x07\x9c\x73\ \xcd\x92\xd5\xd3\xfb\x14\x4d\x14\xec\x02\xeb\x8a\x42\x1b\xa3\x5c\ \xd3\xad\xca\xa6\xc9\x38\x75\x40\x9b\x8d\x5c\xcf\xbd\x47\x94\x5b\ \xce\x69\xfb\xae\x9e\x4e\x19\xb9\x77\xe1\xbc\xce\xbd\x83\xf7\xa8\ \xa7\x8f\xbe\x7b\x37\xc6\x7f\x47\xc5\x45\x06\xca\xaa\x8a\x54\xaf\ \xe9\xfc\x28\xe3\x9f\xc5\xfc\xfe\xd9\x8a\xf4\x1e\xea\xc8\xbd\x7f\ \x5f\x4f\x07\xef\xc8\x7a\x44\xac\x4b\x80\x2b\xe3\x58\xd4\x27\xc7\ \xe8\x4d\x14\x0f\xc5\xef\x32\xd4\x6d\x78\x3d\x3d\xbd\xd2\x1a\xeb\ \xb9\x45\xfa\x1a\xab\x7a\x13\xd2\x3b\xe9\xc4\xb6\xe9\x60\xae\x7d\ \x8e\xa7\xa2\x9e\x4e\x45\x0e\xb3\x9e\xdd\x79\x78\x2d\xfd\x0c\xf4\ \xc7\x3c\x71\xa4\xb3\xe9\xb2\xce\x28\xf8\x1e\x94\xef\x24\xbe\xae\ \xa7\x6b\x7b\x1c\xea\xe9\x4a\xbb\xae\xe7\x0d\xce\xe9\x1d\xbb\x97\ \xd9\xb0\x77\xd7\xf4\x32\x69\xfe\x71\x83\xed\x79\x23\xcd\xcd\x90\ \x4c\xed\xb4\xa0\x8f\xc2\x76\x72\x53\x16\x4c\x1a\xe9\xec\x8d\x74\ \x9f\xe0\x1f\x4a\x3a\x12\x33\x30\xc1\x60\x47\x36\x85\xae\xea\x5e\ \x4f\x47\x59\x35\x25\xdf\xc9\xa5\x14\xc9\x99\x09\x98\x97\x05\xa9\ \xd8\x09\x96\xc5\x66\xf5\xfc\x3b\xe7\xd3\xc8\x72\xb2\x07\xbf\x49\ \x72\x49\x3a\x55\xa9\x3f\xc4\x67\x36\xf6\xba\x72\x65\x92\x42\x4b\ \xde\xd9\x9d\x6f\x2a\x4c\xba\xc8\xf8\xd9\x50\x6c\x81\x69\x2d\xda\ \xff\xc7\x01\xf4\x5f\x4b\x2e\x7d\x92\xf9\x6f\x08\xd2\x03\x59\x4d\ \x93\x04\xd1\xb7\x55\x62\xa1\x6c\x75\x60\xab\xb5\xc9\x0b\x20\x31\ \xf5\x36\x93\xc1\xd3\xa5\xbe\xe6\x53\x1f\xce\x34\x9e\xb7\x44\xc7\ \xc9\xc9\x3f\x42\xa7\x31\x7a\xc1\xe5\x5c\x4f\x72\x59\x4f\xbf\x02\ \x89\x05\x78\x79\x88\xad\x00\xc8\xb6\x2a\x9b\xfe\x0c\xc6\x81\xa8\ \xb6\x59\x9b\x01\xc8\x16\x92\xc1\xba\x2d\x90\x0d\x2b\xeb\x9d\x74\ \xd0\x3e\x63\x76\xcf\x66\x5e\x63\x8b\x19\x7e\xc1\xbc\x8e\x5f\xf2\ \xdb\x6a\x6c\x19\xb3\x3c\x3b\xab\xad\x09\xeb\xa8\xb1\xed\x79\xdb\ \x48\x3c\x83\x48\x1c\xaa\x6c\x62\xcc\xb5\xfe\xc2\xec\xce\xcf\x2e\ \x6f\x79\x29\xf9\xf4\x57\x31\xde\xab\x6c\xbd\xfb\x1d\x7f\xcd\xf6\ \x37\xee\xbb\x9a\x83\x34\x12\x32\x91\xac\x89\x1a\x25\xb4\x2c\xe7\ \x3e\x6e\x16\x6f\x3b\x39\x17\x3b\xa8\x63\x58\x72\x46\x53\xb0\xfc\ \x00\xb1\x75\x4f\x2b\x80\x8c\x1c\x12\xb1\xc8\xbd\x27\x6d\x8c\xc4\ \xd6\x1d\xfe\xa7\x09\xe8\xe7\x35\x14\x5d\x4c\xd1\x84\x07\x59\xb9\ \xb2\xe2\xa2\xf8\xbe\xef\x7d\x5e\xea\x1e\x39\x7e\x81\x74\x10\x2e\ \xa3\xca\xbd\xaf\xea\xa2\xd8\xa2\xa7\xf4\x90\x35\x99\xb4\x29\xb5\ \xca\xbd\x77\xf8\x1e\x14\xbb\xd2\x6d\x8f\xce\xc8\xa8\xa7\x1b\xbe\ \xeb\x7b\xaf\xb5\x6c\x28\xaf\x22\xc8\xd5\xd5\x0a\x17\x88\x5b\xd8\ \xa2\x9e\x1e\x5a\x36\x61\x3f\xa1\xbe\x26\x68\x58\x65\xeb\x7d\xef\ \x42\x3c\x1e\x64\xe3\x2e\x7d\xef\x60\xfe\xda\xf7\xbe\xe4\xfc\xa7\ \x6e\xd8\xc7\xe4\x2d\xd0\x4c\xf7\x58\x74\xc3\xae\xa7\x94\x6d\xb8\ \xd4\xd3\x43\xdd\xf2\x2c\xfb\xde\x3f\x7f\x9a\xf4\x9e\x9c\x71\x1d\ \x9b\x98\x32\x4e\x45\x3d\x9d\xa2\x9e\x0e\xfc\xb1\xef\xdd\xa2\xbc\ \x10\x30\x22\x23\xe7\xd9\x19\x70\xee\xb8\x94\xd3\x8b\x1e\xe8\xf4\ \x34\x2d\x5b\xd9\xf7\xde\x86\xf4\x1e\xea\x5a\x65\xd3\x73\xc9\xf7\ \xf5\x74\xf0\x1e\x7d\xef\x45\xe7\xf1\x82\x11\x79\x58\x61\x1c\x91\ \xfe\xe2\x17\x5b\x10\x0e\xc7\xf6\x4d\x3d\xfd\xc6\x3f\xa2\x87\xa2\ \x59\xa4\x77\xd2\x23\xd7\xe4\xeb\xb9\x81\xe8\x40\xfe\xdd\x38\xcf\ \x59\x1d\x31\xc3\x91\x7b\x77\xc1\x43\x31\xbd\x83\x74\x8b\x74\x4d\ \xc5\x7e\xaf\x4f\x4f\xb5\x3e\x1d\xcd\x52\x1f\x09\xe2\xf4\x56\x6b\ \x7a\x5f\xd1\x49\x4d\x13\xcc\xf7\x4d\x5d\x28\x18\x7d\x3d\x07\xe7\ \xe2\xa1\x23\x10\x03\x42\x9d\x5e\xd6\xd3\x99\x79\x44\x7a\x74\xce\ \x5c\xf5\xe9\x6b\x7a\xaf\xa7\x0b\x70\x60\x0b\xce\x9b\x91\xde\xbb\ \x67\x78\xa0\x96\xee\x1d\xfe\x78\xd9\xba\xee\x9b\x77\x21\x9b\x34\ \xb3\xe9\x98\x8b\x1e\xb9\xd9\x54\xab\xde\x23\x87\xc3\xfa\x6b\xbc\ \xe8\xd3\x11\xed\x86\xd7\x59\x4f\xf7\x9e\x48\xb8\x36\xfa\xf4\x0e\ \x57\x66\x10\x8a\x07\xbb\x86\x7a\x71\x4e\xcf\x16\xe5\xfa\xc6\x31\ \x5d\x94\x03\xba\x94\x13\xb4\x6c\xfa\x7b\x42\x39\x7d\x3a\x31\x5a\ \xe3\xcc\xf8\xba\x34\xc3\x96\x7c\x87\x6a\x15\xe2\x45\xc6\x13\xe9\ \x19\x7d\x3c\x37\x53\x15\x5c\x26\xcb\xbd\x87\x96\x6d\xae\x94\x0e\ \x53\xf6\x2e\xbe\x85\x2c\x0b\x4b\x8b\xe9\x1b\xe4\x8d\x5f\x50\x36\ \x65\x36\x7d\x18\x59\x3d\x40\xa1\x70\x21\x8a\x53\xec\xee\x55\x36\ \x79\x21\x4c\x5c\xec\xb0\xc3\xfd\x18\x3a\x2e\xa4\x33\x72\xa1\x65\ \x9b\xc5\x09\xf9\x05\x0e\xa9\xc0\xa1\xd6\x42\x78\x65\xdf\x8c\xea\ \x1b\x75\x35\x2b\xb8\xf0\x6f\x4f\x43\xd6\x40\x51\x8d\x1d\x66\x41\ \x71\x62\xca\x2f\x89\xc3\xef\xff\x05\xbd\xca\x16\x5a\x36\xb6\x77\ \x7c\xd9\xfa\x43\x47\xc6\xc8\x11\xdf\xa8\xa3\x97\x2a\x46\xd4\xd0\ \x0f\x04\x75\x09\x21\xd9\xb5\x6c\xc4\x86\xcb\x59\xc4\xe0\x37\x17\ \x2f\xb6\x97\x36\x75\xd2\x01\x68\xd9\x30\xec\x55\x01\x5a\x36\x0c\ \x53\x2a\x1f\x00\x65\xe5\x9b\x0e\x44\x78\xde\xf3\x81\xdc\xa3\x91\ \x4e\xae\xf3\x61\xb8\x96\x4d\x6c\x27\xaf\xa7\x8b\xe9\x10\x6c\x6c\ \x7f\x89\x6e\xb5\x57\xd9\xfa\xfe\x9d\xde\x7b\xe4\xbc\x6d\x08\x19\ \xb9\x4c\xe7\x39\x3d\x17\x19\xb9\x5f\x93\x9f\xd3\x97\x8b\xc2\xc5\ \x1b\xe4\x90\x7a\x67\xe7\xb0\xbc\x3b\xbf\x79\x58\xdf\xbb\x6f\xe6\ \x90\x8e\x93\xf4\xbb\x0b\x9b\xc4\x5a\x90\xde\x13\x72\xea\xd0\x08\ \x76\x07\xeb\x40\xd9\xf3\x5e\x9f\xd3\x81\x5f\x9e\x7b\xcf\xf5\xe5\ \x81\xd1\xf7\x7e\xd9\xbd\x0f\xc3\x4b\x86\xe6\xe2\xe2\x1e\x39\x88\ \x5b\x40\xba\xeb\x5b\x8c\xf5\x56\xa4\xf7\xbe\x77\xbb\x5d\x6a\xdb\ \x91\x9c\x8b\xdc\xbb\xf1\xfe\x76\x4e\xbf\xf4\xbd\xcf\xcb\x9c\x6b\ \x59\x93\x0b\x18\x85\x77\xa8\x56\x1d\xab\x8f\xb8\x73\x86\xf3\x71\ \x48\xc3\x2a\x6e\xb8\x68\xa8\x75\x95\xad\xe7\xde\x37\x3f\xa7\xa3\ \xfb\xd9\x73\xef\xbe\xc3\x29\xce\xe9\x39\x38\x8f\xbe\x77\xf6\x0a\ \x50\xce\x66\x7d\xef\x3c\xca\xc2\xea\xea\xc9\x77\xc7\x79\x8f\x5c\ \x3a\xef\x9c\xb9\xdd\xd8\xb7\xd3\xb2\x75\xec\x30\x72\x95\x0b\x69\ \x8c\x57\x0a\x97\x4a\xcf\x26\x5b\x62\xfa\x53\xdf\xfb\x8c\x84\x5c\ \x5c\x34\xe4\x55\x36\x49\xc1\x56\xb4\xf3\x03\x7d\x3a\xac\xae\xa7\ \x43\xbc\x28\x9c\xab\x42\x5d\xa2\xbd\xcb\x9a\x9a\xb0\x8e\x7b\x53\ \x38\xca\xd9\x61\x4d\xc7\xa8\x14\x2e\x5e\x56\xfd\x22\xeb\x7a\x0f\ \xe6\x17\x10\xef\xa4\x3f\x66\xb6\xa8\xb2\x5d\x72\xef\x43\xe8\xd3\ \x87\xa1\xca\xbd\x3b\xe9\x89\x4d\xa8\x17\xba\x3f\x1b\x92\xde\xa7\ \x77\x35\xe5\x1a\x3e\x04\x8c\x88\x72\x31\x88\x17\x2b\xc6\xab\xdd\ \xbb\x47\x7a\x90\x2e\x0e\x1b\x39\x36\x60\x88\x82\xfa\x90\xde\xeb\ \xe9\xb0\xe4\x8a\xd5\x67\x2b\x01\x63\xa7\x9c\xe4\xb5\xfb\x9a\x8e\ \x19\x1e\xe6\x33\x3b\x19\xe7\xf4\xc5\x00\xe7\x62\xe0\x3c\xd6\xf4\ \xe9\x84\x57\xd9\x94\x70\x71\x8e\xe1\x1b\x7d\xba\x13\x0e\xf9\x22\ \xc7\xfb\x53\x58\x6f\xd4\x18\xd9\x49\x47\x05\xc1\xef\x7b\x67\xaa\ \xb5\xcd\xfb\x04\xf2\x56\x27\x4c\x41\xe0\x88\xce\x99\x7a\x23\xe7\ \xdd\xb0\xa5\xa4\xc9\xf5\xe9\x75\xeb\x4c\x4a\xa5\x3e\xfd\x5d\xa9\ \xdc\x6a\x23\xd7\xa7\xf6\xb8\xef\x9d\x4c\xcb\xb6\x6d\xea\xf7\x7c\ \x88\xa1\x0f\x9a\xb4\xf9\x99\xc4\x84\x68\x8d\xf4\x49\x09\x57\x35\ \xdb\x3c\x95\xc9\x19\x36\x24\x67\xae\x0a\x75\xe1\x3d\x79\x0f\x74\ \xac\xe9\x02\xbb\x94\x80\x17\x73\xa3\xdd\x0a\xea\x55\x1a\x56\x9c\ \x6b\x1e\x50\xe1\x43\x65\xad\xf4\x4b\x16\x67\x35\x36\xbb\x4b\x8e\ \x32\x65\x54\xd9\x16\x68\xd8\x8e\x83\xd8\x23\xf7\xb4\x6f\x6c\xc8\ \xc2\x8b\xdd\xed\xbf\xff\xd4\xb2\x6d\xa4\xe9\x2b\xcf\xbb\xb3\xdb\ \xed\xb4\xcb\x1e\xef\x86\xe8\xb9\xf7\xa9\xa8\xb9\x54\xb9\xf7\x39\ \x97\x20\x1e\xd9\x55\x4d\xae\xb1\xa6\x23\x40\xa1\x64\xb3\x93\x29\ \xbd\x5f\x22\xe8\x1a\x36\x7e\xe3\x89\x2a\x1b\x3f\x74\x76\xa0\xec\ \x1e\x42\x2d\xd0\x4b\xab\xc0\x1c\x7c\x9b\x3c\x3e\xc3\x3b\x48\x2d\ \xda\xf4\x85\x74\x33\x52\x03\xe2\xc6\x48\x63\x7d\xab\x81\x3c\x15\ \xf8\xd6\x41\xe2\x2c\xd6\xd1\x4b\x4a\xec\x83\xfb\x06\xe8\xa4\x23\ \xd6\x31\xc3\xcf\xa8\xb3\x99\xca\x46\xcd\xfd\x22\xb6\xe0\xd7\x71\ \x2c\xaa\x62\x5b\xec\xc6\x48\xb1\x83\xb2\xdf\x03\x4c\x6a\x1b\xd4\ \x6c\x0a\xbc\xa1\x63\x93\x37\x33\x0e\x2d\x5b\xa8\x95\x77\x36\xd0\ \x2e\xa0\xbf\x81\xed\x5e\x65\xeb\xd8\x31\xb0\x7b\x67\xc3\x2e\x86\ \x47\xde\x37\xca\x3b\x99\x92\x0d\x5a\x36\xb1\x42\xcb\x06\x5b\xf2\ \x6c\x11\x08\x20\x25\xf7\x50\x03\x5e\x27\x92\x9f\xd8\x8a\xdc\x3b\ \x76\xef\xb0\xdb\x99\x7d\x6f\xaa\x70\xe9\xa4\x17\x97\x0d\x6d\xdb\ \x7b\x95\x6d\x0b\xad\x03\xf2\xee\x97\xbe\xf7\x45\x5d\x34\x46\x8a\ \xb1\x03\xe9\x2f\x3c\xd7\x7a\x8b\x21\xc9\x03\x97\xe2\xc8\x26\x8f\ \xa2\xe9\x8d\x91\xbd\xef\x1d\x37\x99\xdb\x5e\xf5\x92\x7b\x37\x44\ \xff\x51\xd5\xf7\x7e\xd5\xb2\x8d\xd6\x19\xf9\x3a\x2f\x0f\x54\x0c\ \xe6\xd0\x04\xeb\x61\x5e\xdd\x2e\x65\xca\x55\xb4\x45\xb6\x8e\xf4\ \xde\xf7\xce\x5c\xbb\x6d\x97\xdc\x3b\xa2\x5d\xb7\x45\xc2\xf9\xa5\ \xef\x3d\xbf\xab\x56\x47\x41\x7c\x96\x8d\x3d\x08\x1f\xca\x48\x8f\ \x7a\x3a\x90\x54\xe2\x82\xc1\x87\xf5\x76\xc9\x99\x9e\x9c\x11\xd0\ \xee\x79\x58\xda\xdf\x72\xef\x31\xbf\x53\x16\xa3\x6a\x7e\x9f\xdf\ \xb5\x6c\xe3\x24\x0e\x78\x08\xe3\x9a\x88\xf5\x50\xff\x8d\x46\x0a\ \xe3\x7d\x88\x7a\x3a\x48\x7f\x5a\xd3\xcc\x67\xfa\x4c\x6d\xd7\xf4\ \xfe\xe5\x1e\xbb\x47\xae\x54\xb7\xa8\x95\x51\x4e\xc6\x37\x46\x5e\ \xa8\xe0\xfc\xa2\x65\x1b\x2d\xd2\x79\x44\xa0\x87\x98\x0d\x64\xa7\ \x61\x88\x7a\xba\x91\x8e\xa2\x2a\x87\xfc\xfa\xe9\x71\xde\x88\xf4\ \xbe\x77\x8f\xc6\xee\xcd\x39\xb7\x48\x0f\xce\x11\xe9\xc6\x79\x66\ \xbb\xce\xef\xbe\xa6\x8f\xe7\x8d\x91\xf2\x44\xa0\x5f\xd4\x0e\xd7\ \x7a\x3a\xae\x92\xfb\xe4\x50\x17\xdf\x3e\xd2\x7b\x79\x15\x92\x65\ \x0c\xdf\xbd\x57\x5a\xb6\x7c\x78\xb4\x57\xf7\xbd\x97\xdf\x65\x63\ \xaa\xc5\xf3\x1b\xbb\xf7\xd0\xa7\x03\xab\x8d\xaa\xca\x66\x4d\x72\ \xc8\xbe\x4b\xa4\x33\xeb\xb7\xf4\xd9\x32\xd2\xfb\x7d\xef\xe8\x93\ \xb3\x1b\xd3\xaa\xdd\x3b\x86\x21\xfb\x70\xcc\xd5\x77\xd9\xae\xf7\ \xbd\xbf\x34\xd2\xe5\x16\xe8\xd7\xb5\x9e\x9e\xd6\xe1\xaa\x4f\xc7\ \x4e\x8e\x29\x57\x7c\xf2\xf8\x79\xd2\xfb\x17\x1d\x00\x66\x1b\xba\ \x0d\x21\x9e\xde\x3b\x62\x61\xc0\xe5\xbe\xf7\xea\x26\x0a\xc1\x58\ \xde\xf7\x3e\x62\xfb\x0e\x0c\x55\x3d\x3d\xbe\xaa\x0c\xc2\x15\xd0\ \xa7\xcb\xec\x0e\xd6\x2f\x5a\xb6\xf2\xbb\x6c\xfa\xf6\x17\x0f\x87\ \x7f\x82\x42\xdf\x4b\x3e\xb5\x6c\x8e\x0d\x2f\xa2\xd0\xb2\x1d\x3c\ \x02\xa5\xce\x01\xfa\x3e\xfc\xf0\x0a\x1b\xf2\xb0\x3c\x14\xbb\x3d\ \xcd\xd0\x0b\x2e\xf5\x77\xd9\xa0\x8e\xbf\x02\xb5\x37\x5c\x14\xe9\ \x5a\xb6\x12\xae\xba\x87\x96\x8d\x30\xaf\x01\xd1\x2f\x86\x14\x65\ \x7c\x97\xed\x4e\x20\x5f\xa3\x03\x34\x6f\xff\x57\xee\xbd\xcb\x9a\ \x2e\x5a\xb6\x77\xde\x43\xcb\x46\xf2\xdb\xdb\xf6\x05\x54\x7d\x97\ \x0d\x5a\xb6\xe3\xd4\xb2\xed\x88\x71\xc0\xd6\xba\x1d\x65\xd5\xb8\ \x31\x92\x47\x68\xd9\x4c\xb9\xda\x94\xf9\x4e\xfa\x5c\x7d\x97\x8d\ \x6d\x62\xe7\xd5\x36\xab\xad\x55\x5a\xb6\xc5\xbf\xba\x69\xdc\xe7\ \xf8\x2e\x1b\xb4\x6c\x5b\x68\xd9\x72\x11\xed\xe4\xbf\xfc\xbb\x6c\ \x88\x70\x92\xf8\x0f\x9a\xb7\xbf\x25\xd2\x7b\x95\xad\x0b\xd9\xd8\ \x61\xde\x52\x49\x5b\x2c\x6f\x94\x91\x7b\x8f\xef\xb2\xe9\x7d\xef\ \x84\x62\x75\x68\xd9\xe2\xbb\x6c\x51\x71\x81\x96\x0d\x1f\x77\xb8\ \x1e\xd9\xce\xf6\x67\x6c\xe4\xd2\x93\x3d\xa4\x0e\xa8\xb4\x7d\x40\ \xdd\xf4\xd1\x44\xd6\xd4\xb1\x63\x47\xaa\xe9\x19\x14\x5c\xc2\x68\ \xb7\x9d\x3b\x1d\xe5\x37\x5c\x16\xca\xec\x4b\x2d\x9b\x7f\x97\x2d\ \xee\x0e\xf4\x4f\x74\x79\xcd\xa5\xbe\x7e\xc4\x53\xb0\xce\x79\x9c\ \xd3\x71\xdd\xfb\x07\x3f\xad\xab\x6c\x9d\x78\xcf\xbd\x13\xfb\x6f\ \x73\xef\x38\x05\xb9\xd2\x41\x49\xff\xd3\x77\xd9\x46\x65\x1d\x55\ \x36\x8b\xf4\xf1\x22\x6b\x7a\xc5\x05\xff\xea\x93\x67\xe4\x20\x58\ \x85\x6b\x15\xe9\x3d\xf5\x1e\x7d\xef\xdb\xbf\xe6\xde\xe3\x6b\x4d\ \x6a\x90\x34\xa9\x03\xe9\xd5\x97\x1d\xe2\x9c\x7e\xf9\x5a\x13\x5b\ \x80\x59\x8f\x2a\x5b\xd9\x03\xfd\xf1\x4c\xcd\x32\x72\x5d\xcb\x26\ \x5e\x0b\x6c\xca\x39\xbe\x24\x1d\xb9\xf7\xc8\xc9\xa1\xb4\x5a\xde\ \x0d\x3b\x63\x78\xeb\xfb\xc9\x39\x3b\xdc\x22\x67\xa3\x84\x7e\xc6\ \xe3\x25\x6e\x4d\x6a\x18\xa8\xac\x6a\xc9\xa5\x90\xa7\x37\x8b\xf4\ \x1e\xed\x68\xf0\xd4\x04\x84\x67\xa2\xea\xdc\xfb\x21\x86\xd4\x3b\ \x3f\x8c\x9a\xf7\xc5\x3f\xd1\x65\x60\xc2\xdd\x5c\xe5\x02\xac\x1e\ \xe9\xf8\x16\x9f\x73\xfe\x4c\xd6\x31\x25\x79\x77\x95\xb7\xa4\x96\ \xaa\xd5\x4e\xb8\x18\x34\x2e\xec\x91\x79\x02\xeb\x00\x73\x4d\xca\ \xb8\x07\xfb\x42\x84\x63\xb1\x60\xae\xd7\xf4\xd0\xb2\xd9\xb7\xd9\ \x4c\xbe\xe8\xac\xaf\x70\x2e\x70\x19\x10\xe9\x4f\x1e\xab\x92\xee\ \x84\xd7\xdd\x52\xff\x00\x0e\x5e\x0c\x4e\xab\x94\x1d\x32\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x06\x53\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x03\x00\x00\x00\x9d\xb7\x81\xec\ \x00\x00\x02\xeb\x50\x4c\x54\x45\x00\x00\x00\xff\x00\x00\xff\xff\ \xff\xff\xff\xff\xbf\x00\x00\xff\xff\xff\xcc\x00\x00\xff\xff\xff\ \xdf\x00\x00\xe2\x00\x00\xe5\x00\x00\xff\xff\xff\xe7\x00\x00\xff\ \xff\xff\xd4\x00\x00\xff\xff\xff\xd7\x00\x00\xda\x12\x12\xff\xff\ \xff\xdd\x00\x00\xe4\x00\x00\xff\xff\xff\xff\xff\xff\xda\x00\x00\ \xff\xff\xff\xdc\x00\x00\xe2\x00\x00\xff\xff\xff\xda\x00\x00\xff\ \xff\xff\xdb\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ \xff\xdc\x00\x00\xde\x00\x00\xe4\x47\x47\xff\xff\xff\xff\xff\xff\ \xdc\x00\x00\xdd\x00\x00\xdd\x00\x00\xff\xff\xff\xff\xff\xff\xdd\ \x00\x00\xff\xff\xff\xdf\x00\x00\xff\xff\xff\xdd\x00\x00\xfa\xd5\ \xd5\xff\xff\xff\xff\xff\xff\xe4\x38\x38\xdd\x00\x00\xff\xff\xff\ \xff\xff\xff\xff\xff\xff\xdd\x00\x00\xff\xff\xff\xff\xff\xff\xdf\ \x00\x00\xdd\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdd\x00\ \x00\xde\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ \xde\x00\x00\xde\x00\x00\xff\xff\xff\xdf\x00\x00\xeb\x70\x70\xdd\ \x00\x00\xe0\x02\x02\xde\x00\x00\xff\xff\xff\xdf\x00\x00\xff\xff\ \xff\xf0\x8c\x8c\xde\x00\x00\xff\xff\xff\xdf\x00\x00\xff\xff\xff\ \xdf\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xde\x00\x00\xff\ \xff\xff\xec\x75\x75\xdf\x00\x00\xe8\x51\x51\xde\x00\x00\xf9\xdc\ \xdc\xff\xff\xff\xde\x00\x00\xdf\x00\x00\xff\xff\xff\xde\x00\x00\ \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\xb2\xb2\xff\ \xff\xff\xdf\x00\x00\xff\xff\xff\xdf\x00\x00\xdf\x00\x00\xde\x00\ \x00\xde\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xed\x71\x71\ \xde\x00\x00\xff\xff\xff\xe3\x27\x27\xde\x00\x00\xde\x00\x00\xfd\ \xf4\xf4\xf0\x87\x87\xff\xff\xff\xff\xff\xff\xe3\x24\x24\xff\xff\ \xff\xe3\x1f\x1f\xff\xff\xff\xfa\xd9\xd9\xff\xff\xff\xe2\x1a\x1a\ \xdf\x00\x00\xde\x00\x00\xde\x00\x00\xff\xff\xff\xff\xff\xff\xdf\ \x00\x00\xde\x00\x00\xea\x5c\x5c\xff\xff\xff\xe2\x1b\x1b\xe0\x0a\ \x0a\xdf\x03\x03\xde\x00\x00\xff\xff\xff\xff\xff\xff\xde\x02\x02\ \xff\xff\xff\xdf\x02\x02\xff\xff\xff\xff\xff\xff\xeb\x63\x63\xdf\ \x00\x00\xdf\x01\x01\xff\xff\xff\xdf\x00\x00\xe0\x08\x08\xde\x00\ \x00\xff\xff\xff\xec\x6d\x6d\xde\x00\x00\xe1\x10\x10\xf4\xae\xae\ \xdf\x00\x00\xdf\x00\x00\xff\xff\xff\xff\xff\xff\xf6\xbd\xbd\xfd\ \xf4\xf4\xdf\x00\x00\xde\x00\x00\xe3\x22\x22\xf6\xc1\xc1\xff\xff\ \xff\xe9\x5a\x5a\xf0\x8b\x8b\xff\xff\xff\xdf\x00\x00\xff\xff\xff\ \xe3\x22\x22\xdf\x01\x01\xe5\x32\x32\xe8\x48\x48\xf6\xb7\xb7\xfc\ \xea\xea\xfd\xf0\xf0\xfd\xf2\xf2\xff\xfe\xfe\xdf\x02\x02\xe9\x4c\ \x4c\xe2\x1a\x1a\xe0\x04\x04\xe4\x26\x26\xe4\x27\x27\xe0\x05\x05\ \xe5\x33\x33\xe6\x35\x35\xe6\x3b\x3b\xe7\x3e\x3e\xe8\x44\x44\xe0\ \x06\x06\xe2\x19\x19\xe9\x4f\x4f\xe9\x52\x52\xea\x57\x57\xea\x58\ \x58\xea\x59\x59\xeb\x61\x61\xeb\x62\x62\xec\x66\x66\xec\x6a\x6a\ \xee\x74\x74\xee\x75\x75\xee\x7b\x7b\xef\x7e\x7e\xef\x81\x81\xf1\ \x8f\x8f\xf3\x9e\x9e\xf3\x9f\x9f\xf3\xa2\xa2\xf4\xaa\xaa\xf4\xab\ \xab\xf5\xb0\xb0\xf5\xb1\xb1\xf6\xb4\xb4\xe0\x09\x09\xf7\xbe\xbe\ \xf8\xc4\xc4\xf9\xd0\xd0\xfa\xd4\xd4\xfa\xd5\xd5\xfa\xdb\xdb\xfb\ \xde\xde\xfb\xe0\xe0\xfc\xe4\xe4\xe0\x0b\x0b\xfd\xec\xec\xe1\x0e\ \x0e\xe2\x15\x15\xfe\xf7\xf7\xfe\xfb\xfb\xff\xfc\xfc\xe2\x16\x16\ \xe2\x17\x17\x66\xee\x72\x60\x00\x00\x00\xb6\x74\x52\x4e\x53\x00\ \x01\x01\x03\x04\x04\x05\x08\x08\x09\x0a\x0a\x0b\x0b\x0c\x0d\x0d\ \x0e\x0f\x0f\x13\x13\x14\x15\x15\x16\x1b\x1b\x1c\x1c\x1d\x1e\x1f\ \x21\x24\x25\x27\x27\x2a\x2b\x2c\x2d\x2e\x2f\x32\x36\x36\x39\x3b\ \x3c\x3d\x40\x41\x44\x45\x48\x4b\x4c\x4d\x4e\x4f\x50\x54\x54\x55\ \x5a\x5c\x5d\x5d\x60\x61\x63\x65\x67\x67\x68\x6b\x6c\x6c\x6d\x70\ \x71\x73\x78\x7c\x7e\x80\x81\x83\x84\x8a\x8b\x8c\x8c\x8d\x91\x93\ \x95\x95\x95\x96\x98\x99\x9c\x9d\x9e\xa4\xa6\xa7\xa7\xa8\xa8\xa9\ \xaa\xac\xad\xad\xb0\xb3\xb3\xb4\xb7\xbb\xbc\xbd\xbd\xc0\xc1\xc4\ \xc6\xca\xcb\xcc\xcd\xcd\xd0\xd2\xd4\xd7\xd8\xd9\xdb\xdc\xdc\xdd\ \xde\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xe9\xea\xef\xf0\xf0\xf1\xf3\ \xf3\xf5\xf6\xf6\xf7\xf7\xf7\xf8\xfa\xfa\xfb\xfb\xfb\xfb\xfc\xfc\ \xfd\xfd\xfe\xfe\xfe\xa0\xb1\xff\x8a\x00\x00\x02\x61\x49\x44\x41\ \x54\x78\x5e\xdd\xd7\x55\x70\x13\x51\x14\xc7\xe1\xd3\x52\x28\xda\ \x42\xf1\xe2\x5e\xdc\x5b\x28\x10\xdc\xdd\xdd\xdd\x0a\x45\x8a\xb4\ \xb8\x7b\x70\x29\x5e\x24\x50\xa0\xe8\xd9\xa4\x2a\xb8\xbb\xbb\xbb\ \xeb\x23\x93\x3d\x77\xee\xcb\xe6\x66\x98\x93\x17\xa6\xbf\xd7\xff\ \xe6\x9b\x7d\xc8\x9c\x99\x85\x14\x52\xfa\x52\x39\x5d\xfa\xf9\x80\ \x28\xc4\x95\x41\x26\x36\x30\x10\xa9\x19\xd9\x78\x80\xc7\x4e\x14\ \xed\xaa\xca\x02\x72\xa3\xec\x60\x25\x96\xb0\x1e\x65\x1b\x33\x70\ \x80\xfa\x36\x09\xd8\x46\x00\xa7\x5e\x17\xbe\xa0\xe8\x68\x19\x96\ \x50\x7d\xca\xee\x68\x02\xae\xb6\x03\x5e\x9e\x7d\x08\xb0\x8e\x02\ \x66\x45\x09\x38\x61\xe6\x02\x79\x05\x10\xf9\x3f\x03\x6e\x2e\x01\ \x25\x47\x2f\x39\xb0\x2a\x34\x90\x0d\x34\x8f\xa2\x7d\x32\x13\xf0\ \xb3\xa0\x68\x2a\x0f\xe8\x84\x22\xbc\x5c\x97\x05\x8c\x95\x80\x75\ \x3c\x0b\xe8\x2d\x81\x73\x66\x16\x60\x92\xc0\xdd\xe9\x0a\xc0\xd7\ \x29\xe0\x36\x0b\x29\x6b\x7c\x37\x05\x90\x8e\x80\xa4\xfd\x8e\xe7\ \x2c\xcb\x2e\xda\xe7\x2b\x1f\xcd\x3e\xa0\x68\x33\x09\x87\x14\x37\ \xc9\xbb\xdf\xbe\x47\xb1\x9f\xb4\x71\x85\x40\xd5\x42\x02\x62\x5a\ \xa8\xfe\xb1\x39\x2a\x37\x0a\x28\x08\xea\xc2\x50\xb4\xa2\x95\x17\ \x70\xaa\x85\xb2\x6d\xc5\x58\xc2\x3c\x94\xed\xc8\xc7\x01\xca\xa2\ \x2c\xb9\x27\x07\xe8\x81\xb2\x9b\x21\x0c\xc0\x6f\x8f\x04\x6c\xaf\ \x87\x30\x80\x60\x14\xe1\x9f\x27\xc7\xaa\x30\x80\xf9\x04\x1c\xbf\ \xf7\x2e\x71\x5d\x03\x60\xb4\x89\x80\x17\xab\xbb\x96\x70\x07\x46\ \x59\x91\x8a\xab\xe1\xe2\x55\xd6\x72\x39\x9c\xfd\xbb\x88\x9a\x32\ \x8f\x6a\x28\x8a\x26\x34\x63\x01\x5e\x16\xa4\x4e\xfd\x6c\xcc\x02\ \x02\x51\xf4\x74\x51\x6a\x16\xd0\x17\xa9\xe8\xc4\x3a\xc0\x02\x96\ \x22\x15\x3b\xd7\x9d\x05\x14\x41\xea\xbc\x16\x00\x2c\xa0\x35\x52\ \x6f\xa6\x01\x0f\x98\x48\x63\xb2\x56\x81\x07\xa4\xdd\x4e\x17\xfb\ \x6d\x08\xf0\x00\x7f\xda\xae\x1f\x2e\x0d\xea\xca\x13\xf0\x2a\x52\ \x79\x6a\x4e\x7f\x18\x0e\x4e\xea\x40\xc0\xd9\x08\x30\xb6\x40\x9f\ \x6e\xed\x2d\xac\x04\x7c\xeb\x05\x6f\x25\xe0\xf6\x4c\xe3\x9a\x9f\ \xde\xed\xf3\x20\x50\x94\x39\x08\x65\x8f\xfb\x1b\xf7\x26\xfa\x72\ \x27\x22\x8f\x0a\x18\x8c\xb2\xef\x71\x0d\x8d\xfb\x18\xfb\xf2\xed\ \x6b\x77\x50\x94\xc6\x82\xb2\x67\xe1\xc6\x73\xe0\xa1\xdf\xaa\x07\ \x5b\xb2\xff\xc3\xf7\xc2\x35\xad\xb6\x71\xaf\xa8\xbf\x5a\x42\x47\ \x50\xb6\x16\x45\x37\x12\x46\x82\xb1\xb6\xf6\xe9\x61\xb8\xb7\x1a\ \x30\x25\xe9\xc0\xef\xe7\xda\x50\x47\x4f\xb5\x44\xc4\x93\x3f\xda\ \x80\x93\xda\x1f\x39\x13\x73\xff\x65\xfc\x86\x9a\x0e\xd7\x8c\xcb\ \xf1\xd2\xfb\xc5\x9e\xe0\xac\x72\xc3\x66\x4f\xea\x5c\xcd\x47\xb1\ \x66\x9a\xf3\x6b\x4d\x71\x70\xa9\x02\xa9\x20\x25\xf7\x17\x09\xba\ \x39\x39\xea\xb1\x61\x75\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x06\x53\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x03\x00\x00\x00\x9d\xb7\x81\xec\ \x00\x00\x02\xeb\x50\x4c\x54\x45\x00\x00\x00\xff\x00\x00\xff\xff\ \xff\xff\xff\xff\xbf\x00\x00\xff\xff\xff\x99\x00\x00\xff\xff\xff\ \x9f\x00\x00\xaa\x00\x00\xb2\x00\x00\xff\xff\xff\xb9\x00\x00\xff\ \xff\xff\xaa\x00\x00\xff\xff\xff\xb0\x00\x00\xb6\x12\x12\xff\xff\ \xff\xaa\x00\x00\xae\x00\x00\xff\xff\xff\xff\xff\xff\xaa\x00\x00\ \xff\xff\xff\xad\x00\x00\xb3\x00\x00\xff\xff\xff\xad\x00\x00\xff\ \xff\xff\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ \xff\xac\x00\x00\xb0\x00\x00\xc4\x47\x47\xff\xff\xff\xff\xff\xff\ \xad\x00\x00\xaf\x00\x00\xb1\x00\x00\xff\xff\xff\xff\xff\xff\xae\ \x00\x00\xff\xff\xff\xae\x00\x00\xff\xff\xff\xae\x00\x00\xf2\xd5\ \xd5\xff\xff\xff\xff\xff\xff\xbf\x38\x38\xad\x00\x00\xff\xff\xff\ \xff\xff\xff\xff\xff\xff\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xaf\ \x00\x00\xb0\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xae\x00\ \x00\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ \xae\x00\x00\xaf\x00\x00\xff\xff\xff\xae\x00\x00\xd1\x70\x70\xae\ \x00\x00\xae\x02\x02\xaf\x00\x00\xff\xff\xff\xb0\x00\x00\xff\xff\ \xff\xda\x8c\x8c\xae\x00\x00\xff\xff\xff\xaf\x00\x00\xff\xff\xff\ \xaf\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xae\x00\x00\xff\ \xff\xff\xd3\x75\x75\xaf\x00\x00\xc9\x51\x51\xae\x00\x00\xf4\xdc\ \xdc\xff\xff\xff\xaf\x00\x00\xae\x00\x00\xff\xff\xff\xae\x00\x00\ \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe6\xb2\xb2\xff\ \xff\xff\xae\x00\x00\xff\xff\xff\xaf\x00\x00\xaf\x00\x00\xae\x00\ \x00\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x71\x71\ \xaf\x00\x00\xff\xff\xff\xba\x27\x27\xae\x00\x00\xaf\x00\x00\xfa\ \xf4\xf4\xd9\x87\x87\xff\xff\xff\xff\xff\xff\xba\x24\x24\xff\xff\ \xff\xb8\x1f\x1f\xff\xff\xff\xf3\xd9\xd9\xff\xff\xff\xb7\x1a\x1a\ \xae\x00\x00\xae\x00\x00\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xae\ \x00\x00\xaf\x00\x00\xcc\x5c\x5c\xff\xff\xff\xb7\x1b\x1b\xb2\x0a\ \x0a\xaf\x03\x03\xae\x00\x00\xff\xff\xff\xff\xff\xff\xaf\x02\x02\ \xff\xff\xff\xb0\x02\x02\xff\xff\xff\xff\xff\xff\xcd\x63\x63\xaf\ \x00\x00\xaf\x01\x01\xff\xff\xff\xaf\x00\x00\xb1\x08\x08\xae\x00\ \x00\xff\xff\xff\xd1\x6d\x6d\xaf\x00\x00\xb4\x10\x10\xe6\xae\xae\ \xae\x00\x00\xaf\x00\x00\xff\xff\xff\xff\xff\xff\xea\xbd\xbd\xfb\ \xf4\xf4\xae\x00\x00\xaf\x00\x00\xba\x22\x22\xeb\xc1\xc1\xff\xff\ \xff\xcb\x5a\x5a\xda\x8b\x8b\xff\xff\xff\xaf\x00\x00\xff\xff\xff\ \xba\x22\x22\xaf\x01\x01\xbf\x32\x32\xc6\x48\x48\xe8\xb7\xb7\xf8\ \xea\xea\xfa\xf0\xf0\xfb\xf2\xf2\xff\xfe\xfe\xb0\x02\x02\xc7\x4c\ \x4c\xb7\x1a\x1a\xb0\x04\x04\xbb\x26\x26\xbb\x27\x27\xb1\x05\x05\ \xbf\x33\x33\xc0\x35\x35\xc2\x3b\x3b\xc2\x3e\x3e\xc4\x44\x44\xb1\ \x06\x06\xb7\x19\x19\xc8\x4f\x4f\xc9\x52\x52\xca\x57\x57\xcb\x58\ \x58\xcb\x59\x59\xcd\x61\x61\xce\x62\x62\xcf\x66\x66\xd0\x6a\x6a\ \xd3\x74\x74\xd4\x75\x75\xd6\x7b\x7b\xd7\x7e\x7e\xd7\x81\x81\xdc\ \x8f\x8f\xe1\x9e\x9e\xe1\x9f\x9f\xe2\xa2\xa2\xe4\xaa\xaa\xe5\xab\ \xab\xe6\xb0\xb0\xe7\xb1\xb1\xe7\xb4\xb4\xb2\x09\x09\xeb\xbe\xbe\ \xec\xc4\xc4\xf0\xd0\xd0\xf2\xd4\xd4\xf2\xd5\xd5\xf4\xdb\xdb\xf5\ \xde\xde\xf5\xe0\xe0\xf7\xe4\xe4\xb2\x0b\x0b\xf9\xec\xec\xb3\x0e\ \x0e\xb6\x15\x15\xfc\xf7\xf7\xfe\xfb\xfb\xfe\xfc\xfc\xb6\x16\x16\ \xb6\x17\x17\xdc\x97\x3c\x09\x00\x00\x00\xb6\x74\x52\x4e\x53\x00\ \x01\x01\x03\x04\x04\x05\x08\x08\x09\x0a\x0a\x0b\x0b\x0c\x0d\x0d\ \x0e\x0f\x0f\x13\x13\x14\x15\x15\x16\x1b\x1b\x1c\x1c\x1d\x1e\x1f\ \x21\x24\x25\x27\x27\x2a\x2b\x2c\x2d\x2e\x2f\x32\x36\x36\x39\x3b\ \x3c\x3d\x40\x41\x44\x45\x48\x4b\x4c\x4d\x4e\x4f\x50\x54\x54\x55\ \x5a\x5c\x5d\x5d\x60\x61\x63\x65\x67\x67\x68\x6b\x6c\x6c\x6d\x70\ \x71\x73\x78\x7c\x7e\x80\x81\x83\x84\x8a\x8b\x8c\x8c\x8d\x91\x93\ \x95\x95\x95\x96\x98\x99\x9c\x9d\x9e\xa4\xa6\xa7\xa7\xa8\xa8\xa9\ \xaa\xac\xad\xad\xb0\xb3\xb3\xb4\xb7\xbb\xbc\xbd\xbd\xc0\xc1\xc4\ \xc6\xca\xcb\xcc\xcd\xcd\xd0\xd2\xd4\xd7\xd8\xd9\xdb\xdc\xdc\xdd\ \xde\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xe9\xea\xef\xf0\xf0\xf1\xf3\ \xf3\xf5\xf6\xf6\xf7\xf7\xf7\xf8\xfa\xfa\xfb\xfb\xfb\xfb\xfc\xfc\ \xfd\xfd\xfe\xfe\xfe\xa0\xb1\xff\x8a\x00\x00\x02\x61\x49\x44\x41\ \x54\x78\x5e\xdd\xd7\x55\x70\x13\x51\x14\xc7\xe1\xd3\x52\x28\xda\ \x42\xf1\xe2\x5e\xdc\x5b\x28\x10\xdc\xdd\xdd\xdd\x0a\x45\x8a\xb4\ \xb8\x7b\x70\x29\x5e\x24\x50\xa0\xe8\xd9\xa4\x2a\xb8\xbb\xbb\xbb\ \xeb\x23\x93\x3d\x77\xee\xcb\xe6\x66\x98\x93\x17\xa6\xbf\xd7\xff\ \xe6\x9b\x7d\xc8\x9c\x99\x85\x14\x52\xfa\x52\x39\x5d\xfa\xf9\x80\ \x28\xc4\x95\x41\x26\x36\x30\x10\xa9\x19\xd9\x78\x80\xc7\x4e\x14\ \xed\xaa\xca\x02\x72\xa3\xec\x60\x25\x96\xb0\x1e\x65\x1b\x33\x70\ \x80\xfa\x36\x09\xd8\x46\x00\xa7\x5e\x17\xbe\xa0\xe8\x68\x19\x96\ \x50\x7d\xca\xee\x68\x02\xae\xb6\x03\x5e\x9e\x7d\x08\xb0\x8e\x02\ \x66\x45\x09\x38\x61\xe6\x02\x79\x05\x10\xf9\x3f\x03\x6e\x2e\x01\ \x25\x47\x2f\x39\xb0\x2a\x34\x90\x0d\x34\x8f\xa2\x7d\x32\x13\xf0\ \xb3\xa0\x68\x2a\x0f\xe8\x84\x22\xbc\x5c\x97\x05\x8c\x95\x80\x75\ \x3c\x0b\xe8\x2d\x81\x73\x66\x16\x60\x92\xc0\xdd\xe9\x0a\xc0\xd7\ \x29\xe0\x36\x0b\x29\x6b\x7c\x37\x05\x90\x8e\x80\xa4\xfd\x8e\xe7\ \x2c\xcb\x2e\xda\xe7\x2b\x1f\xcd\x3e\xa0\x68\x33\x09\x87\x14\x37\ \xc9\xbb\xdf\xbe\x47\xb1\x9f\xb4\x71\x85\x40\xd5\x42\x02\x62\x5a\ \xa8\xfe\xb1\x39\x2a\x37\x0a\x28\x08\xea\xc2\x50\xb4\xa2\x95\x17\ \x70\xaa\x85\xb2\x6d\xc5\x58\xc2\x3c\x94\xed\xc8\xc7\x01\xca\xa2\ \x2c\xb9\x27\x07\xe8\x81\xb2\x9b\x21\x0c\xc0\x6f\x8f\x04\x6c\xaf\ \x87\x30\x80\x60\x14\xe1\x9f\x27\xc7\xaa\x30\x80\xf9\x04\x1c\xbf\ \xf7\x2e\x71\x5d\x03\x60\xb4\x89\x80\x17\xab\xbb\x96\x70\x07\x46\ \x59\x91\x8a\xab\xe1\xe2\x55\xd6\x72\x39\x9c\xfd\xbb\x88\x9a\x32\ \x8f\x6a\x28\x8a\x26\x34\x63\x01\x5e\x16\xa4\x4e\xfd\x6c\xcc\x02\ \x02\x51\xf4\x74\x51\x6a\x16\xd0\x17\xa9\xe8\xc4\x3a\xc0\x02\x96\ \x22\x15\x3b\xd7\x9d\x05\x14\x41\xea\xbc\x16\x00\x2c\xa0\x35\x52\ \x6f\xa6\x01\x0f\x98\x48\x63\xb2\x56\x81\x07\xa4\xdd\x4e\x17\xfb\ \x6d\x08\xf0\x00\x7f\xda\xae\x1f\x2e\x0d\xea\xca\x13\xf0\x2a\x52\ \x79\x6a\x4e\x7f\x18\x0e\x4e\xea\x40\xc0\xd9\x08\x30\xb6\x40\x9f\ \x6e\xed\x2d\xac\x04\x7c\xeb\x05\x6f\x25\xe0\xf6\x4c\xe3\x9a\x9f\ \xde\xed\xf3\x20\x50\x94\x39\x08\x65\x8f\xfb\x1b\xf7\x26\xfa\x72\ \x27\x22\x8f\x0a\x18\x8c\xb2\xef\x71\x0d\x8d\xfb\x18\xfb\xf2\xed\ \x6b\x77\x50\x94\xc6\x82\xb2\x67\xe1\xc6\x73\xe0\xa1\xdf\xaa\x07\ \x5b\xb2\xff\xc3\xf7\xc2\x35\xad\xb6\x71\xaf\xa8\xbf\x5a\x42\x47\ \x50\xb6\x16\x45\x37\x12\x46\x82\xb1\xb6\xf6\xe9\x61\xb8\xb7\x1a\ \x30\x25\xe9\xc0\xef\xe7\xda\x50\x47\x4f\xb5\x44\xc4\x93\x3f\xda\ \x80\x93\xda\x1f\x39\x13\x73\xff\x65\xfc\x86\x9a\x0e\xd7\x8c\xcb\ \xf1\xd2\xfb\xc5\x9e\xe0\xac\x72\xc3\x66\x4f\xea\x5c\xcd\x47\xb1\ \x66\x9a\xf3\x6b\x4d\x71\x70\xa9\x02\xa9\x20\x25\xf7\x17\x09\xba\ \x39\x39\xea\xb1\x61\x75\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x06\x53\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x03\x00\x00\x00\x9d\xb7\x81\xec\ \x00\x00\x02\xeb\x50\x4c\x54\x45\x00\x00\x00\x00\x00\x00\xff\xff\ \xff\xff\xff\xff\x7f\x00\x00\xff\xff\xff\x66\x00\x00\xff\xff\xff\ \x7f\x00\x00\x71\x00\x00\x7f\x00\x00\xff\xff\xff\x73\x00\x00\xff\ \xff\xff\x7f\x00\x00\xff\xff\xff\x75\x00\x00\x7f\x12\x12\xff\xff\ \xff\x77\x00\x00\x78\x00\x00\xff\xff\xff\xff\xff\xff\x79\x00\x00\ \xff\xff\xff\x7f\x00\x00\x7a\x00\x00\xff\xff\xff\x7f\x00\x00\xff\ \xff\xff\x7b\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ \xff\x7c\x00\x00\x7c\x00\x00\xa3\x47\x47\xff\xff\xff\xff\xff\xff\ \x7f\x00\x00\x7c\x00\x00\x7f\x00\x00\xff\xff\xff\xff\xff\xff\x7f\ \x00\x00\xff\xff\xff\x7d\x00\x00\xff\xff\xff\x7f\x00\x00\xea\xd5\ \xd5\xff\xff\xff\xff\xff\xff\x99\x38\x38\x7d\x00\x00\xff\xff\xff\ \xff\xff\xff\xff\xff\xff\x7d\x00\x00\xff\xff\xff\xff\xff\xff\x7f\ \x00\x00\x7f\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\ \x00\x7e\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ \x7e\x00\x00\x7e\x00\x00\xff\xff\xff\x7f\x00\x00\xb7\x70\x70\x7f\ \x00\x00\x7f\x02\x02\x7e\x00\x00\xff\xff\xff\x7e\x00\x00\xff\xff\ \xff\xc5\x8c\x8c\x7f\x00\x00\xff\xff\xff\x7f\x00\x00\xff\xff\xff\ \x7e\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x00\xff\ \xff\xff\xba\x75\x75\x7e\x00\x00\xa8\x51\x51\x7e\x00\x00\xed\xdc\ \xdc\xff\xff\xff\x7f\x00\x00\x7f\x00\x00\xff\xff\xff\x7f\x00\x00\ \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd8\xb2\xb2\xff\ \xff\xff\x7f\x00\x00\xff\xff\xff\x7e\x00\x00\x7f\x00\x00\x7f\x00\ \x00\x7e\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb7\x71\x71\ \x7f\x00\x00\xff\xff\xff\x93\x27\x27\x7f\x00\x00\x7e\x00\x00\xf9\ \xf4\xf4\xc3\x87\x87\xff\xff\xff\xff\xff\xff\x91\x24\x24\xff\xff\ \xff\x8f\x1f\x1f\xff\xff\xff\xec\xd9\xd9\xff\xff\xff\x8c\x1a\x1a\ \x7f\x00\x00\x7f\x00\x00\x7e\x00\x00\xff\xff\xff\xff\xff\xff\x7e\ \x00\x00\x7f\x00\x00\xad\x5c\x5c\xff\xff\xff\x8d\x1b\x1b\x84\x0a\ \x0a\x81\x03\x03\x7f\x00\x00\xff\xff\xff\xff\xff\xff\x80\x02\x02\ \xff\xff\xff\x80\x02\x02\xff\xff\xff\xff\xff\xff\xb1\x63\x63\x7f\ \x00\x00\x7f\x01\x01\xff\xff\xff\x7e\x00\x00\x83\x08\x08\x7e\x00\ \x00\xff\xff\xff\xb6\x6d\x6d\x7e\x00\x00\x87\x10\x10\xd6\xae\xae\ \x7f\x00\x00\x7f\x00\x00\xff\xff\xff\xff\xff\xff\xde\xbd\xbd\xf9\ \xf4\xf4\x7e\x00\x00\x7f\x00\x00\x90\x22\x22\xdf\xc1\xc1\xff\xff\ \xff\xac\x5a\x5a\xc4\x8b\x8b\xff\xff\xff\x7f\x00\x00\xff\xff\xff\ \x90\x22\x22\x80\x01\x01\x98\x32\x32\xa3\x48\x48\xdb\xb7\xb7\xf4\ \xea\xea\xf7\xf0\xf0\xf8\xf2\xf2\xfe\xfe\xfe\x80\x02\x02\xa5\x4c\ \x4c\x8c\x1a\x1a\x81\x04\x04\x92\x26\x26\x93\x27\x27\x82\x05\x05\ \x99\x33\x33\x9a\x35\x35\x9d\x3b\x3b\x9e\x3e\x3e\xa1\x44\x44\x82\ \x06\x06\x8c\x19\x19\xa7\x4f\x4f\xa8\x52\x52\xab\x57\x57\xab\x58\ \x58\xac\x59\x59\xb0\x61\x61\xb0\x62\x62\xb2\x66\x66\xb4\x6a\x6a\ \xb9\x74\x74\xba\x75\x75\xbd\x7b\x7b\xbe\x7e\x7e\xc0\x81\x81\xc7\ \x8f\x8f\xce\x9e\x9e\xcf\x9f\x9f\xd0\xa2\xa2\xd4\xaa\xaa\xd5\xab\ \xab\xd7\xb0\xb0\xd8\xb1\xb1\xd9\xb4\xb4\x84\x09\x09\xde\xbe\xbe\ \xe1\xc4\xc4\xe7\xd0\xd0\xe9\xd4\xd4\xea\xd5\xd5\xed\xdb\xdb\xee\ \xde\xde\xef\xe0\xe0\xf1\xe4\xe4\x85\x0b\x0b\xf5\xec\xec\x86\x0e\ \x0e\x8a\x15\x15\xfb\xf7\xf7\xfd\xfb\xfb\xfd\xfc\xfc\x8a\x16\x16\ \x8b\x17\x17\xd2\x67\xa5\xb8\x00\x00\x00\xb6\x74\x52\x4e\x53\x00\ \x01\x01\x03\x04\x04\x05\x08\x08\x09\x0a\x0a\x0b\x0b\x0c\x0d\x0d\ \x0e\x0f\x0f\x13\x13\x14\x15\x15\x16\x1b\x1b\x1c\x1c\x1d\x1e\x1f\ \x21\x24\x25\x27\x27\x2a\x2b\x2c\x2d\x2e\x2f\x32\x36\x36\x39\x3b\ \x3c\x3d\x40\x41\x44\x45\x48\x4b\x4c\x4d\x4e\x4f\x50\x54\x54\x55\ \x5a\x5c\x5d\x5d\x60\x61\x63\x65\x67\x67\x68\x6b\x6c\x6c\x6d\x70\ \x71\x73\x78\x7c\x7e\x80\x81\x83\x84\x8a\x8b\x8c\x8c\x8d\x91\x93\ \x95\x95\x95\x96\x98\x99\x9c\x9d\x9e\xa4\xa6\xa7\xa7\xa8\xa8\xa9\ \xaa\xac\xad\xad\xb0\xb3\xb3\xb4\xb7\xbb\xbc\xbd\xbd\xc0\xc1\xc4\ \xc6\xca\xcb\xcc\xcd\xcd\xd0\xd2\xd4\xd7\xd8\xd9\xdb\xdc\xdc\xdd\ \xde\xe0\xe1\xe4\xe5\xe6\xe7\xe8\xe9\xe9\xea\xef\xf0\xf0\xf1\xf3\ \xf3\xf5\xf6\xf6\xf7\xf7\xf7\xf8\xfa\xfa\xfb\xfb\xfb\xfb\xfc\xfc\ \xfd\xfd\xfe\xfe\xfe\xa0\xb1\xff\x8a\x00\x00\x02\x61\x49\x44\x41\ \x54\x78\x5e\xdd\xd7\x55\x70\x13\x51\x14\xc7\xe1\xd3\x52\x28\xda\ \x42\xf1\xe2\x5e\xdc\x5b\x28\x10\xdc\xdd\xdd\xdd\x0a\x45\x8a\xb4\ \xb8\x7b\x70\x29\x5e\x24\x50\xa0\xe8\xd9\xa4\x2a\xb8\xbb\xbb\xbb\ \xeb\x23\x93\x3d\x77\xee\xcb\xe6\x66\x98\x93\x17\xa6\xbf\xd7\xff\ \xe6\x9b\x7d\xc8\x9c\x99\x85\x14\x52\xfa\x52\x39\x5d\xfa\xf9\x80\ \x28\xc4\x95\x41\x26\x36\x30\x10\xa9\x19\xd9\x78\x80\xc7\x4e\x14\ \xed\xaa\xca\x02\x72\xa3\xec\x60\x25\x96\xb0\x1e\x65\x1b\x33\x70\ \x80\xfa\x36\x09\xd8\x46\x00\xa7\x5e\x17\xbe\xa0\xe8\x68\x19\x96\ \x50\x7d\xca\xee\x68\x02\xae\xb6\x03\x5e\x9e\x7d\x08\xb0\x8e\x02\ \x66\x45\x09\x38\x61\xe6\x02\x79\x05\x10\xf9\x3f\x03\x6e\x2e\x01\ \x25\x47\x2f\x39\xb0\x2a\x34\x90\x0d\x34\x8f\xa2\x7d\x32\x13\xf0\ \xb3\xa0\x68\x2a\x0f\xe8\x84\x22\xbc\x5c\x97\x05\x8c\x95\x80\x75\ \x3c\x0b\xe8\x2d\x81\x73\x66\x16\x60\x92\xc0\xdd\xe9\x0a\xc0\xd7\ \x29\xe0\x36\x0b\x29\x6b\x7c\x37\x05\x90\x8e\x80\xa4\xfd\x8e\xe7\ \x2c\xcb\x2e\xda\xe7\x2b\x1f\xcd\x3e\xa0\x68\x33\x09\x87\x14\x37\ \xc9\xbb\xdf\xbe\x47\xb1\x9f\xb4\x71\x85\x40\xd5\x42\x02\x62\x5a\ \xa8\xfe\xb1\x39\x2a\x37\x0a\x28\x08\xea\xc2\x50\xb4\xa2\x95\x17\ \x70\xaa\x85\xb2\x6d\xc5\x58\xc2\x3c\x94\xed\xc8\xc7\x01\xca\xa2\ \x2c\xb9\x27\x07\xe8\x81\xb2\x9b\x21\x0c\xc0\x6f\x8f\x04\x6c\xaf\ \x87\x30\x80\x60\x14\xe1\x9f\x27\xc7\xaa\x30\x80\xf9\x04\x1c\xbf\ \xf7\x2e\x71\x5d\x03\x60\xb4\x89\x80\x17\xab\xbb\x96\x70\x07\x46\ \x59\x91\x8a\xab\xe1\xe2\x55\xd6\x72\x39\x9c\xfd\xbb\x88\x9a\x32\ \x8f\x6a\x28\x8a\x26\x34\x63\x01\x5e\x16\xa4\x4e\xfd\x6c\xcc\x02\ \x02\x51\xf4\x74\x51\x6a\x16\xd0\x17\xa9\xe8\xc4\x3a\xc0\x02\x96\ \x22\x15\x3b\xd7\x9d\x05\x14\x41\xea\xbc\x16\x00\x2c\xa0\x35\x52\ \x6f\xa6\x01\x0f\x98\x48\x63\xb2\x56\x81\x07\xa4\xdd\x4e\x17\xfb\ \x6d\x08\xf0\x00\x7f\xda\xae\x1f\x2e\x0d\xea\xca\x13\xf0\x2a\x52\ \x79\x6a\x4e\x7f\x18\x0e\x4e\xea\x40\xc0\xd9\x08\x30\xb6\x40\x9f\ \x6e\xed\x2d\xac\x04\x7c\xeb\x05\x6f\x25\xe0\xf6\x4c\xe3\x9a\x9f\ \xde\xed\xf3\x20\x50\x94\x39\x08\x65\x8f\xfb\x1b\xf7\x26\xfa\x72\ \x27\x22\x8f\x0a\x18\x8c\xb2\xef\x71\x0d\x8d\xfb\x18\xfb\xf2\xed\ \x6b\x77\x50\x94\xc6\x82\xb2\x67\xe1\xc6\x73\xe0\xa1\xdf\xaa\x07\ \x5b\xb2\xff\xc3\xf7\xc2\x35\xad\xb6\x71\xaf\xa8\xbf\x5a\x42\x47\ \x50\xb6\x16\x45\x37\x12\x46\x82\xb1\xb6\xf6\xe9\x61\xb8\xb7\x1a\ \x30\x25\xe9\xc0\xef\xe7\xda\x50\x47\x4f\xb5\x44\xc4\x93\x3f\xda\ \x80\x93\xda\x1f\x39\x13\x73\xff\x65\xfc\x86\x9a\x0e\xd7\x8c\xcb\ \xf1\xd2\xfb\xc5\x9e\xe0\xac\x72\xc3\x66\x4f\xea\x5c\xcd\x47\xb1\ \x66\x9a\xf3\x6b\x4d\x71\x70\xa9\x02\xa9\x20\x25\xf7\x17\x09\xba\ \x39\x39\xea\xb1\x61\x75\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x3a\x40\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\xa8\x00\x00\x01\x77\x08\x03\x00\x00\x00\x06\x8a\xf0\xc8\ \x00\x00\x02\xd9\x50\x4c\x54\x45\xad\xac\xff\xc4\x90\xc4\xe2\x5a\ \x63\xe6\xc1\xd5\xe9\x9c\xa7\xb8\xb6\xfe\xc8\xc6\xfe\xcb\xcb\xfe\ \xbb\xbb\xff\xc0\xbe\xfe\xc3\xc3\xfe\xd2\xd2\xff\xd8\xd7\xff\xdc\ \xdb\xfe\xb3\xb3\xfe\xe2\xe2\xfe\xb0\xae\xfe\xd0\xce\xfe\xeb\xeb\ \xfe\xf3\xf3\xfe\xfc\xfb\xfe\xdd\x06\x08\xda\x22\x2c\xdc\x0d\x12\ \xb7\x8f\xd1\xe0\xde\xfe\xea\x5a\x5a\xdd\x09\x0b\xdd\x19\x1e\xfc\ \xec\xec\xde\x00\x00\xf0\xef\xfd\xe1\x13\x13\xbf\xa1\xde\xbb\xb2\ \xf4\xe3\x23\x23\xe5\x32\x32\xe6\x3a\x3a\xe6\x41\x42\xcc\xc3\xf4\ \xe9\x53\x53\xdc\x14\x1a\xbd\x81\xbb\xec\x6c\x6c\xed\x72\x72\xee\ \x7b\x7b\xf2\x9b\x9b\xf2\xa2\xa2\xd2\x81\xa2\xf4\xac\xac\xf6\xb9\ \xb9\xfa\xdb\xdb\xfa\xf5\xfa\xfb\xe2\xe2\xdd\x10\x15\xbd\xab\xeb\ \xfd\xf2\xf3\xe4\x2c\x2c\xeb\x63\x63\xf0\x8b\x8b\xf5\xcd\xd1\xd6\ \x2b\x3c\xd8\x2d\x3b\xd8\x46\x58\xca\x56\x7b\xd9\x25\x31\xd9\x34\ \x43\xd9\x42\x52\xd9\x6d\x83\xda\x1b\x25\xca\x75\x9e\xda\x31\x3d\ \xda\x52\x64\xdb\x1a\x22\xdb\x85\x9d\xb2\xa9\xf5\xdc\xd3\xf5\xcc\ \x69\x8d\xcc\x84\xad\xcc\x8b\xb4\xbb\xa3\xe3\xcd\x4a\x69\xdd\x50\ \x5e\xb7\xb0\xf7\xdf\x30\x37\xcd\x5a\x7b\xcd\xa1\xcd\xe2\x1a\x1a\ \xce\x71\x94\xce\xc0\xef\xe4\xaa\xbd\xcf\x39\x54\xcf\x40\x5b\xcf\ \xba\xe7\xd0\x5f\x7e\xe8\x45\x45\xe8\x4c\x4c\xd0\xad\xd8\xe9\x6f\ \x74\xbe\x8a\xc3\xd1\x56\x71\xea\xe6\xfb\xd2\x7a\x9a\xc4\xab\xe3\ \xd2\x89\xab\xec\x76\x78\xd2\xcb\xf7\xc5\x83\xb4\xee\x8f\x91\xef\ \x81\x81\xf0\x84\x84\xf8\xcb\xcb\xd3\x44\x5c\xf1\x93\x93\xd3\x53\ \x6d\xd4\x35\x49\xd4\x4b\x62\xd4\x69\x84\xf4\xe2\xe9\xf5\xb3\xb3\ \xe0\x0b\x0b\xd4\xc2\xeb\xf6\xd8\xdc\xf7\xc3\xc3\xd5\x62\x7b\xf9\ \xd4\xd4\xc8\xbd\xf3\xd5\xa5\xc8\xd6\x27\x37\xbe\x9a\xd5\xd7\x49\ \x5d\xd4\x5a\x73\xca\x86\xb2\xcb\x74\x9b\xf8\xc5\xc5\xd6\x39\x4c\ \xce\x80\xa6\xcb\x61\x85\xcd\x9a\xc4\xdf\xa8\xc0\xd3\x9a\xbe\xcb\ \x7a\xa2\xe4\x79\x84\xd4\x4e\x67\xd5\x40\x54\xe6\x73\x7c\xc4\xba\ \xf4\xe6\xc6\xda\xe7\x6a\x70\xe7\xb8\xc9\xc5\x66\x92\xe8\x5e\x60\ \xe8\x84\x8c\xc5\x73\xa1\xcd\x92\xbb\xb6\x9b\xe0\xcd\xb0\xde\xeb\ \xad\xb7\xeb\xe2\xf4\xc5\x8a\xbb\xd7\xb5\xd8\xcd\xac\xda\xc5\xa0\ \xd5\xed\xa3\xaa\xcd\xba\xea\xce\x55\x76\xc6\x5c\x86\xc8\x92\xc1\ \xd9\x59\x6d\xf0\xac\xb1\xc8\xb3\xe8\xd9\x87\xa1\xf1\x9e\xa1\xc0\ \xb6\xf4\xb9\x87\xc6\xf2\xbf\xc5\xda\x29\x35\xc2\x9b\xd3\xca\x5c\ \x81\xf4\xe9\xf1\xd0\x6d\x8d\xdb\x4b\x5a\xd0\xa6\xd0\xca\x64\x8c\ \xdc\x3a\x46\xc2\xa2\xda\xde\x98\xaf\xd1\x8d\xb1\xd1\xc5\xf1\xb9\ \xa6\xe9\xd2\xbb\xe5\xd2\x9d\xc2\xcc\xa5\xd2\xde\xb1\xcc\xd3\x74\ \x92\xe1\x3c\x42\xe3\x48\x4e\xcb\x9d\xcb\xe4\x64\x6d\xe2\x4e\x56\ \xc4\x7b\xac\xcb\xb2\xe2\xd4\x31\x44\xbf\x94\xce\xbc\x9c\xdb\xca\ \xa8\xd8\xd5\x93\xb4\xcd\x45\x63\xc5\x6c\x98\xb9\x8e\xce\xd0\x6f\ \x90\xc4\x7f\xb0\xda\x3d\x4c\xb7\xab\xf2\xda\x73\x89\xf4\xc6\xcb\ \xca\x6c\x93\xd8\x78\x92\xd4\x70\x8d\xc3\xb2\xec\xec\x92\x97\xec\ \xd3\xe3\xf6\xde\xe3\xc5\x88\xba\xd1\x86\xa9\xe1\x82\x92\xf8\xd3\ \xd5\xe1\x9b\xaf\xe1\x9c\xb0\xd3\x2e\x42\xd0\xaa\xd3\xdb\x93\xac\ \xdb\xc7\xe9\xe2\xdb\xf7\xc7\x79\xa7\xdb\x61\x74\xe1\xbd\xd5\xd1\ \x46\x61\xe4\x54\x5a\xc9\x7e\xa9\xd2\x3a\x52\xe8\xcf\xe2\xc2\x95\ \xcc\xbd\x3d\xa6\xd0\x00\x00\x37\x22\x49\x44\x41\x54\x78\x5e\x94\ \x5d\xe3\xa3\x6d\xbb\xae\x5f\x5f\x06\xa7\xb5\x8c\x6d\xdb\x38\xb6\ \x6d\xdb\xb6\x8d\x4b\xdb\xb6\x6d\x1b\xcf\xb6\xed\xf7\x17\xbc\x36\ \x0d\x9a\xb6\xf3\xec\xfb\x32\x30\xc7\x39\x9f\x7e\x3b\x6a\x92\xa6\ \x59\x13\x8d\x46\xb3\x21\xd4\x33\x4f\x51\x98\xc7\x5e\xe6\x06\xc2\ \x9f\x1c\x1e\xf3\xae\xeb\xc2\x5c\xf6\xd7\x7e\xd5\x79\x5e\x0b\x55\ \x95\x79\x95\xf6\x2a\xcd\xaf\xa2\xb6\xbd\xe1\x81\xbb\xdd\xc6\x17\ \xd1\x04\xde\xe6\x32\xb7\x7d\x14\x35\x9a\x4d\x0b\xb5\xc9\x48\x0d\ \x4c\xc1\x09\x1f\x44\xb9\x45\x57\xd4\x16\x2a\x80\x74\x6f\x86\x59\ \xd9\x57\x89\x77\x09\x28\xe1\x3b\xa0\xb6\x80\x84\x87\xde\x02\xb6\ \x6b\x91\x9a\x4b\x93\x05\x69\x51\x36\x89\xa3\x8c\x14\xa0\xf6\x0a\ \x26\x00\x68\x2e\x8b\x37\x37\x2f\xe0\x26\x22\x65\xac\x15\x20\x23\ \xa4\xfc\x12\x94\x02\x55\xa1\x14\xa8\x70\x75\x3d\x84\xd3\xee\x87\ \x50\x32\x4e\x07\xd5\x62\xec\x99\x87\x05\x2f\x84\x38\x9d\x0a\xe4\ \x9a\xa1\x55\x55\x02\x5f\xe1\x42\xcc\x4c\x22\x7a\x7a\x29\x98\x5d\ \x80\x08\xfc\xc4\x6f\xf3\xd5\xf5\x44\x6f\x2f\x0f\x29\x0a\xbc\x41\ \x52\xef\x11\x53\x73\x50\x51\x44\x59\xd7\x80\x95\x18\x5a\xe5\x16\ \x68\xe5\xae\x4a\x31\x34\xa2\x76\x3b\x33\x44\xf2\xcf\x80\xab\x88\ \xb4\x0b\x00\x01\x62\x2c\xfa\xd0\x9a\x0a\x78\x03\x4a\x78\x31\x59\ \x84\xcc\x49\x03\xba\xce\x45\x4b\xf3\xaa\x26\x9c\xc0\x55\xd4\x4e\ \xf3\x25\x5c\xcd\x32\x10\x37\x7c\x65\x1e\x3f\xb3\x0c\x65\x0e\x60\ \x01\x24\x50\x37\x30\x26\x43\xc8\x50\x11\x7e\xd1\x13\xa3\x6f\x30\ \x47\xf9\x05\x1c\x35\x6f\xa0\x9c\xde\x15\xca\xbf\x34\x1c\xa5\x4b\ \x11\x8b\x3d\x03\x8c\x09\x1d\xed\x76\x01\x30\x1a\x13\x21\x26\x1d\ \x4d\xb9\x27\x23\x6f\xf8\x70\xc2\x17\x9e\x8a\x73\xaa\xdd\x6f\x0e\ \x97\x11\x3d\x19\x93\x98\x3d\x72\x52\xc3\xcd\x58\x53\xdb\xb1\x92\ \x12\x47\xe1\x01\x07\xd5\x15\x83\x6a\x92\xe4\x9b\xca\x3d\x59\x96\ \xba\x47\x48\xbc\x28\xfe\xb2\xdc\xf3\xdc\x09\x1d\x59\x4a\x30\xe1\ \xb7\xaa\xc4\x90\x18\xa1\xe1\x2a\x50\x3b\xd3\x48\xbb\xe4\x9d\x62\ \x1d\x05\x27\xca\x68\xc5\xe8\x41\x3f\x01\xab\x46\x8a\x9c\x25\xbe\ \x16\x06\x65\x85\x1c\x05\xfd\xb4\xf0\x1c\xd8\x5a\x98\x29\x18\xf9\ \xdb\x82\x6c\xdb\x9b\xd9\xda\x15\xd3\x07\x90\xf4\x9a\x4e\x19\x53\ \x4f\x7c\xbd\x05\x0b\x62\x17\x1d\x65\x63\xd2\xc2\xd7\xeb\x52\x69\ \x11\x03\x4c\xb8\x2b\x73\x31\x3a\x7e\x80\xa3\x68\xfd\x9a\xa5\xa2\ \x9f\x11\x47\x09\x6a\xec\x49\xc1\x90\x64\x01\x45\xf7\xe4\x50\xb2\ \xe8\x11\x68\x2e\xa2\x07\x69\x03\xcc\x94\x8a\xb2\x5b\x02\x9e\x66\ \x4a\x43\xb5\x2d\x85\x40\xc5\xdd\xdb\x0b\x17\xa4\x1e\x72\xd4\x17\ \x7d\x8d\x70\x59\xec\xc0\x50\x54\xd3\xca\x88\x9f\x78\xa9\x04\xcf\ \xfe\x29\x63\x96\x66\x4c\x6d\x65\xf9\x5d\xb8\x49\x41\xbb\x91\x1f\ \x25\xac\x42\x80\x17\x48\x61\xcd\x79\xbd\x17\x99\xc3\x0f\x9a\x53\ \x55\x3b\xab\x27\xb0\xf0\x1d\x53\x1b\x31\x02\x47\x05\x25\x3a\x7c\ \x44\x1a\xc5\x25\xca\x92\x88\xa1\x12\x96\x68\xca\x91\x9f\xf6\x8d\ \xbe\x34\x17\xc1\xa3\xf4\x79\x0d\x0d\x9c\x13\xf9\xd0\x8c\x89\x25\ \x2f\xb6\x84\x3a\xda\x0e\x84\x3f\x8d\xc6\xa4\xa3\x12\x40\x09\x70\ \xc9\xea\x1b\x8e\x9b\x68\xf4\xa2\xa6\x20\x75\x74\xf6\x39\x30\x14\ \xf8\xa9\x38\xaa\xbc\x53\x66\x6e\x7b\x39\xfd\x7c\xfb\x51\x67\x31\ \x47\xc5\x3d\xbd\x94\x31\x01\x89\x9e\x5a\xa2\x30\x4f\xcc\x3e\x87\ \xa7\x66\xd1\x13\x54\xa2\xca\x3e\x3e\x59\x8c\x62\xf2\x80\x90\x19\ \xba\xe2\x97\x4f\x2f\xff\xbd\xc5\xc5\x1f\x35\x30\xdc\x63\x96\x2a\ \x66\xe2\xcf\x34\xeb\xa8\x8a\x9f\x7a\x40\x18\xe6\x11\x4c\xc4\xea\ \x0b\x1f\x03\x67\x85\x15\x97\x7c\x21\x34\x26\xc2\xea\xd8\x79\xeb\ \x65\x7b\x46\x8b\x8e\x0e\x2b\xfd\x10\x0f\x71\xb2\x23\x8d\xe3\x51\ \xa1\x1e\x42\xb5\x30\x5d\xb4\xe7\xa1\xe4\x98\x94\x3c\xbe\xc0\x44\ \xef\x54\x05\x30\x2b\x01\x59\x66\xee\x3e\x7f\xfd\xa2\xd0\xcd\x4d\ \xe0\xa7\x04\x25\x14\xe2\x27\xdc\x53\xe0\xf2\x99\xa3\x8c\x50\xa0\ \xe2\x2d\x4b\x28\xad\xf6\xc4\x50\x67\xfb\x08\x12\xde\x9a\xb2\x72\ \xf9\x53\x8b\x3e\xad\x19\xa8\xa8\x59\x8c\x3e\x62\x29\x58\x12\x43\ \xed\x21\x4f\x0b\x5c\xf3\x7b\x70\x19\xac\x80\x10\x43\xd1\x42\x2c\ \x49\x67\x23\xd6\x97\x32\x47\x61\x51\x52\x3a\x6a\x9f\xa7\xa7\x14\ \xce\xd1\xfe\x61\x2a\xc2\x4f\xaf\xf5\x9a\xa1\x05\xf2\x14\xf5\x13\ \x6d\x89\x29\x47\x5b\xa2\x74\x84\xd9\x59\x29\xc9\x2b\x8e\x3e\x7d\ \x96\x48\xff\x70\x87\x6f\x76\xcb\x8e\xc3\xb6\x1e\x30\x5f\x57\x19\ \xa0\x19\x61\x9c\x50\x09\x1e\x39\x7c\xb4\xa7\x26\xc5\xf7\x82\x15\ \x90\xe2\x12\x8a\x30\x45\x49\xc5\xe6\x49\xf2\xb5\xc7\x4f\x73\xb9\ \x20\x9f\xc3\xa6\xaa\x7c\xfb\xe2\xe8\x1b\x35\x1a\xfd\xcf\x00\xe6\ \xe6\x85\x41\xab\x32\xea\x7a\xe6\x9a\x4d\xc3\x3e\x02\x25\xb0\x88\ \x36\x4e\xef\xd8\xe6\x65\x0d\x35\x18\x1d\x47\x25\x28\x01\x80\x51\ \xb2\x0c\xaf\x5c\x59\x3d\x46\xf8\x10\x3b\xdf\xf8\xa5\xbb\x3e\x37\ \x35\x7f\xf4\xd4\x68\xb4\xaa\x8f\x2c\x3d\xdf\x02\xdd\x3c\x6c\x64\ \x48\x8d\x06\xc1\x9c\xc0\x47\x74\x34\xe0\xaa\x4b\x96\x15\xd4\x1e\ \x7b\xfc\x84\x31\xb9\x24\xc4\x3c\xe8\x9e\x04\xa5\x76\x4c\xe5\x19\ \x2f\x82\x0b\x72\x7e\xe8\x85\xdc\x39\xa7\x0f\x5b\xa0\xab\xff\xee\ \xd6\xe7\xbf\x7a\xd4\xd9\x97\xbd\x78\xef\xd9\x5f\xfd\x76\xdb\x13\ \xbd\xb9\xd3\xf1\x68\xda\xe1\xcb\x32\x8a\x3c\xed\x31\x37\x73\x90\ \xbc\x35\xaa\x1c\xd7\x26\xed\xa0\x6a\x5a\xa0\xaa\x4f\xbf\xa8\x8c\ \xe6\x8e\x19\xc7\xd1\x3f\x5e\x0c\x68\xee\xb8\x73\x55\x56\xdf\xd6\ \xf1\x68\x9b\x34\x94\x96\xd0\xa6\x06\x0a\x2f\x61\xaa\xcf\x51\x5c\ \xe1\x41\x07\x48\x49\x73\xc9\xec\xd0\x9a\x96\x9f\x0c\x30\x98\xa5\ \x9b\xfa\xce\xea\x57\xec\x09\x91\x8e\x56\xe7\xed\x8c\xc5\xae\x63\ \xbc\x50\x47\xa3\x15\x14\x74\x14\x73\x7a\x6d\x4e\x94\xdb\x81\xc3\ \x87\x5b\x17\x4b\x48\xf8\x47\x3b\x89\xaf\x9c\xdd\xbc\xf9\x2a\xeb\ \xdf\x37\xf6\xd1\xea\x6f\x9d\x5b\x0c\x69\x7b\xed\xfb\xa6\xb1\xf1\ \x28\x46\x24\x02\x14\xdd\x53\xc0\xce\xf7\x3f\x7f\xd7\x15\x3d\xa8\ \x92\x60\x18\x9a\xe7\x90\xd9\x6b\xb9\x13\xce\x8b\x00\xe7\xba\x1d\ \xc3\x7e\xb3\x91\x3f\xbc\x7a\xf1\xaa\x7d\x04\xb4\xbc\xf1\xa4\xfd\ \x96\xc7\x7b\x56\xae\x5a\xb3\x6e\x16\x9c\xea\x85\x7d\x01\xda\x65\ \x55\x65\xd2\x05\x08\xe5\x9b\xd8\xea\x71\x05\x7d\xff\xb6\x23\xd7\ \x1b\x0e\xad\x1a\x48\xa5\x04\x90\xe6\x58\xd5\xb9\xe0\xb9\x8b\x9e\ \xbd\xe8\x97\x4f\x38\x8e\xe6\x16\xed\x89\x16\xc0\xed\xc3\x99\x1c\ \xfc\x53\x79\x4b\xbf\xe3\xd6\x79\x78\x17\xa7\xfd\xcf\x17\x07\xfd\ \x4e\x67\xa6\xd9\x7c\x78\xde\x0a\x7f\x58\x8b\x86\x8a\x82\xb6\xbb\ \xda\xa0\x08\x24\xfe\xaa\x95\x09\x60\x6d\x9b\x74\xba\x34\x9a\x5b\ \x28\x0a\xd4\x50\x20\xe7\x98\x7e\x7c\x0f\xaa\xdd\xdc\x29\xe8\x42\ \x0d\x81\x5b\xdf\xda\x5a\x71\xe3\xe7\x3f\x7a\xeb\x09\xa7\x3f\xff\ \xde\xe5\xfe\xe2\xe4\xd1\xb7\x2d\x4b\x97\x01\x50\xb5\x2c\x49\x68\ \x72\x48\xf7\xc4\x1c\xfd\x26\x29\xfd\x68\xf4\xee\x16\x31\x94\xa8\ \x3e\xc3\x5b\xb9\x47\xb3\x05\x09\xff\x5e\x31\xa3\x91\xfd\x19\x9d\ \x73\x23\x85\x79\x4f\x1f\x7e\xcc\x72\x0a\x9b\xff\xf5\x78\xcb\x82\ \x2b\x87\xa5\x30\x94\x0b\x3a\x49\xd1\x7b\x2e\x1f\x82\x7b\x0a\x4a\ \xec\xf3\xa7\x82\x64\x63\x3f\xcf\x61\xbd\x27\x98\xef\x38\x5a\x9b\ \xc5\x8e\x1c\x79\x7a\x46\x64\x31\x73\xff\x04\x1c\x05\x1e\x5e\x78\ \xca\x59\x59\x76\xee\xaf\x8e\x5a\xef\x24\xb1\x73\xe0\x67\x77\x6c\ \x47\x71\x98\x17\x97\x9e\x70\x09\x05\xac\x17\x5b\x30\x93\x6f\xdd\ \xbf\xe8\x94\x54\x60\xe6\xf5\x0d\x23\xc6\xb1\x6c\x19\x78\xf2\x3e\ \xad\xf6\x27\x46\x48\x2f\x7c\x0f\xf0\x74\xb9\xc3\x3d\x3f\xc5\xce\ \xeb\xe0\xb0\x6a\x67\x5e\x72\xa7\xd7\xcf\xb6\x02\xca\x72\x77\x84\ \x25\x1d\x27\xfc\xde\xe5\x7f\xbf\x63\xf7\xb0\xff\x1a\x0b\x64\xa1\ \x47\x09\x09\xa8\xe8\xe1\x0e\xc2\xfe\x3f\x5f\x18\xf4\xaf\xff\xa9\ \xfd\x7c\x3c\xc7\x20\xbf\x3c\x4e\xfe\x11\x0f\x39\x8f\xb4\xb9\x61\ \x65\xff\x07\x81\x17\x9d\xda\x3e\x6c\x20\x4c\x0e\xf0\x83\xca\xb3\ \x88\x1e\xee\x66\xe0\x49\x29\xb9\xeb\x39\x47\xfa\x0a\x8b\xe3\xc1\ \x16\xc0\x24\xba\xc2\x0a\x6e\xf6\x85\x61\xbf\x61\x60\x7f\xc0\x02\ \xd8\xd2\xaa\x2a\x84\x9a\xbf\xf1\x83\x5b\xb6\xef\xb8\xf3\x91\x07\ \x06\xfd\xf7\xfc\x0d\xb0\x7b\x50\x5a\x3a\x59\xe1\xbc\x6a\xf7\x00\ \xfc\x3d\x33\xb4\x8b\x0b\x52\x4c\x41\xfd\xa1\xa0\xb5\xbe\xd0\x25\ \xb2\xb5\x73\xb0\xbe\x00\x37\xc9\xe6\xeb\xc7\x7e\x7a\x70\x61\xd0\ \xc9\xf3\x1b\xcf\x3c\xfd\xb5\x20\xec\xd9\x7e\x55\x8a\xd7\xaf\xf2\ \xda\x65\x4d\x7b\x17\x21\xa0\x83\xea\xc3\xf9\x02\x73\xf2\xb6\x07\ \x06\xad\xb2\x2d\x40\x4d\x0e\xda\x25\x63\x4a\xc5\xa3\x51\x94\x07\ \x69\x88\xc3\xca\x75\xdc\x63\xac\x90\x07\x06\xa5\x8f\xb5\xd1\x32\ \xcc\x3c\xf3\x17\xcc\xa1\xf9\x21\x55\xa0\xce\x3a\xff\xd5\x1c\x91\ \x7e\x1d\x6c\xee\xc0\x10\xbc\xd3\x59\x7b\x16\xe7\x6f\x3b\xb8\x79\ \xd3\x6d\x3b\x76\xef\xea\x14\x92\x31\x8b\x41\x71\xf0\xf4\x92\x0e\ \xbf\xc0\xb5\x1e\x55\x14\xa2\x67\xb8\xef\xb7\x40\xf6\xf5\x1c\x44\ \x11\xff\x13\x5f\x52\xb2\xdc\x59\xd4\x50\x26\xfb\x80\xf1\xe4\xd7\ \x3c\x01\x01\xe9\xad\xc7\x38\xe3\xde\xdd\xcf\xc0\x91\xee\xbd\x64\ \x61\x00\xf1\x17\x96\x71\xb9\x92\xdb\x05\xd9\x8b\x7e\xa6\x45\xaf\ \xa2\x12\x4c\xeb\x54\x75\xf4\xbb\xa8\xa4\xc0\x4f\x96\xfe\xf7\x0c\ \x20\x9f\xee\x6e\xb9\xfa\xe8\x09\xa0\x81\x27\xde\xf3\xba\xa7\x70\ \x39\x18\xdd\x36\xcc\x33\x8b\x14\x88\xb7\x46\xb2\x92\x2d\x5e\x72\ \x3b\x4a\xee\xe2\x4a\x89\x4e\x46\x5c\x1e\xfa\x9b\xbf\xff\xac\x4e\ \xee\x46\xa4\xa4\x9e\x96\x5e\x30\x85\x99\xcf\xec\xe6\xad\x77\x5e\ \x08\x4a\xea\x2a\x7a\x2f\x63\xe8\x8c\xb3\x99\x61\xed\x81\xb1\x96\ \xc8\x51\x4f\x49\x55\xe0\x6c\x50\x2b\xa0\xd1\x96\xd8\xc5\x4f\x5e\ \xf0\xbe\x8b\x0d\xae\xed\x06\x36\xc2\x64\x25\x05\x98\x44\x6b\x27\ \xc1\xfd\x6c\xde\x3d\xec\xb4\x1a\xc5\x5d\xe6\x7b\xfd\xd0\x19\xd2\ \x72\x8d\x73\xe5\x9d\xc3\x1e\xae\x4c\xee\x41\x69\x03\x5f\xe1\x9b\ \xcd\x9e\xd7\x25\xf3\xf9\x52\x79\xfd\x2d\x9f\x3c\xc6\x09\x0b\x60\ \xf5\x84\xa3\xa0\xa4\xa3\x85\xc2\x07\x7a\xba\x05\xb1\xea\x91\x61\ \xc3\xe6\x4a\x4f\x80\x2e\x1e\x7c\xec\xba\xbd\x46\xf6\xd5\xbc\x44\ \xa3\xa3\x75\x0f\xee\xea\xe7\x94\xdd\x59\xc2\xdd\x06\x45\xac\xa5\ \x13\xe4\x48\x85\xb4\xe8\x9b\x86\x97\x0f\x1f\xb7\x5e\x99\x46\x83\ \xac\x5e\x3c\x29\x21\xad\xcd\x6d\x19\x3a\xbf\x7b\x60\xff\xa3\xfa\ \x8d\x49\xc0\x65\xa3\xac\xd3\x0c\x57\x4f\x37\xe6\x73\xd5\xea\xfd\ \xfb\xd7\xdd\xbc\x75\x61\x57\xab\xa6\xea\x13\x70\x95\x44\x0f\x37\ \x9b\x12\xe0\xa4\x5d\x11\x7a\xd2\x79\x7d\xf3\x55\x41\x54\xbb\x75\ \xc6\x4f\x95\xd1\x93\x8a\x7b\xba\xd1\x65\x6a\x36\x7a\xae\xce\x9c\ \x12\x7d\x7c\xb4\x61\x84\x7f\xc3\xcd\x3b\x87\xcd\x56\xa7\xd3\xea\ \xe5\x54\x25\x13\xc1\x13\x47\xc1\x94\x32\xcd\x52\x85\x34\xad\xa3\ \x88\x53\xe8\xc0\x12\x30\x94\x3d\x29\x2c\xf7\x39\xd3\xbb\x20\x3a\ \xbe\xbe\xce\xdf\x70\x03\xb0\x13\x69\xfd\x42\xcb\xba\xcf\xbc\x97\ \x73\x2d\x4f\x28\xcb\xd8\xf0\x41\x3f\xe1\x42\x94\x8c\xd3\x7c\xcb\ \x5a\x1f\xeb\xe8\x93\x0e\xe7\xfc\xcd\x5b\x1f\x7d\x61\xeb\x95\x50\ \x6f\x19\xfa\x1c\x7d\x0c\x94\xb4\x27\x46\xff\x06\xa7\xc9\x5f\x3b\ \x62\xca\x33\xef\xf5\x9b\x76\x0e\x73\x48\x9b\x21\xab\x57\x48\x7d\ \xbb\xa7\x4d\xc6\x4c\x6b\x28\xd7\x47\xa3\xb5\x9e\xdd\x68\x6f\x19\ \x18\xd0\xd6\xe1\xd2\x4c\xd3\xb8\xa8\x2f\x1b\x54\xab\x86\x45\x41\ \xf5\xdc\x1c\x95\xb4\xe9\xb1\xf4\x3e\x6d\xda\x5b\xd6\xaf\xbb\xfb\ \x71\x93\x7d\xd4\x5c\xc6\xab\xec\x55\x97\x42\x82\x54\xf6\x98\x32\ \x65\x4e\x2c\xfa\x90\x38\x65\xfa\x4d\xf0\x23\x0b\x03\xfb\x5d\x18\ \xa4\xe7\x2d\xee\x79\x74\x48\x69\x93\x5e\xee\x89\x7e\xbe\x07\x02\ \x6a\xc7\xca\x8d\xfb\x96\x8a\x7e\xab\xa8\xad\xcd\xfb\x65\x9d\x40\ \xf2\x58\xc6\xe7\xed\x30\xb5\x19\x2a\xdb\x37\xdd\x08\x28\xc7\xf7\ \x47\x1a\x18\x53\x3b\x87\x16\x26\xac\x4e\xb7\xbc\xef\x81\x5d\xba\ \x82\xef\x94\x34\x5f\xfe\xb2\x67\x26\xe7\x4f\x82\xbd\xd0\x4f\xfc\ \x68\xd1\xe1\x5c\xb6\xf1\xb0\x61\xab\x76\x05\x9d\xaa\x74\xaf\x52\ \xa0\x0a\x33\x19\x26\x60\xa3\x5f\x5e\x95\xba\xe8\xf0\xbb\x00\x18\ \x49\xd7\xf0\xbf\x35\x67\x38\x33\x3b\xb4\x3a\x80\x64\x3f\xd4\xde\ \x32\x28\xe9\xec\xbc\x83\x76\x5b\x03\xd6\xa6\x27\xdf\xb6\x6e\xcd\ \x4f\xae\xf9\xf8\xae\xa5\x26\x55\xca\x4a\xfb\x01\x18\xe9\xf2\x4c\ \x8a\xb7\x41\x4b\xf7\xab\xc5\x2e\x85\xbc\x74\x21\x17\x6e\x58\xcb\ \x77\x0c\xdc\xe6\x32\x52\x61\x6f\x66\xe9\xbb\x9e\x65\x75\x04\x1d\ \x40\x67\x5a\xb4\x3a\xcd\x46\x4f\x2a\x7a\x75\x49\xc2\x47\xb6\x2a\ \x8b\xf7\x77\x42\x33\x78\x48\xee\xba\x09\x42\xa0\xea\x42\x2e\xaa\ \xe8\x9d\x1d\x17\x3f\x29\xa4\x00\xf2\x86\x67\xe6\x75\x66\xb1\xb3\ \x9f\xe3\x6e\x98\x6a\xd6\xb0\x46\x54\x0b\x4a\x8d\xb4\x24\xa0\x60\ \xf3\x8c\x30\xf3\xc2\x51\x00\xa9\xb2\xa6\x30\xc2\x7f\x12\x38\xda\ \x81\x22\x3e\xd1\xe5\x27\x3d\xf6\x70\xcf\xc2\xfc\xda\x48\xa1\x9c\ \x9f\xdd\x3a\xec\xf7\x20\xb1\xcf\x0b\x5d\x23\xb3\xbf\x65\x45\x84\ \x20\x2b\x56\x52\x14\xbd\x28\x40\x68\xf4\xdd\x20\x6b\x12\xa3\xa2\ \xc2\xd3\x77\x60\xa5\xee\xcb\xb6\x48\xaf\xb8\xda\x18\xf5\x89\x1d\ \xe3\xf0\xef\x1b\xc9\xc2\x3d\x3f\xbb\x65\xe7\xb0\x3f\xd3\xe0\x30\ \x9f\x8b\x4f\xf6\x26\xa0\x22\x77\x36\x25\x78\x89\x31\xc1\x0d\xec\ \xf4\x63\x12\xe5\x9d\xda\x69\xf7\x64\x45\xbb\x72\x09\x34\xd4\x81\ \xbd\x7a\xbd\xc5\xb6\xaf\x59\x14\xaf\x23\x79\x9f\x83\x20\x11\x25\ \x3c\xb5\x47\x95\x88\xbe\x64\xb0\x0a\x2a\xb9\x27\xe1\xa8\xc7\x54\ \xde\xb9\x83\x8f\x71\x65\xc7\x3f\x84\x32\x4c\x0b\xf9\x59\x7c\xf7\ \xcb\x73\xb0\x00\x0c\x0d\xd0\xcb\x8d\x7e\x1e\xff\xd6\x2d\x3b\x07\ \x4b\x9d\x06\x78\x51\x42\x4a\xdc\x14\xaa\x70\xd7\x8e\xc0\xaa\x45\ \x94\x8c\x09\xe0\x91\xd5\xc7\x1b\xf6\x91\x86\x4e\x73\x84\x0f\xfe\ \xe9\x21\x28\x5b\x7c\xff\x5b\xbd\xc6\x77\x5e\x75\x1c\x26\x18\x0f\ \xbd\x30\xb4\xe6\xf4\xa1\x37\x9a\x64\xb2\xd3\xc0\xfd\x86\x00\xa9\ \x7b\x4a\x2c\xe7\x61\x77\x0e\xa4\x75\xf0\x28\x0d\x45\x33\x02\xb8\ \x98\x85\xa4\x71\xb6\x13\x56\x8f\x57\xe3\x31\x0a\x2a\x24\x36\x19\ \x6d\x1d\x36\xf5\x5e\x83\x20\x05\x53\x8a\x38\x5a\xd6\xdc\xf8\xc0\ \x18\x2b\x96\x3c\x00\x25\xd9\x3b\x8e\x66\x71\x3c\xaa\xeb\x8e\xba\ \xb1\x00\x5e\xe7\x2c\x06\xb4\xe6\xf1\x61\x8b\x20\x4a\xcd\x59\xb1\ \xd4\xdb\x65\xc2\xce\x07\x44\x0b\x38\xb5\xc3\xa7\x95\x49\xb4\xd3\ \x92\x4a\xeb\x39\xc2\x8f\x3b\x75\xfc\x12\xd9\xc7\x14\xcc\xd5\xdb\ \x4d\x69\x41\x73\x53\x65\x4c\x96\x22\x7e\x52\x37\x51\x4d\x1a\x0a\ \x38\xc5\x96\xd0\xdf\x67\xa2\xa6\xf1\x16\x23\x2f\x4e\xe3\x77\xee\ \x3e\xb9\x9f\x50\xae\x3a\x68\xec\xbb\x09\x05\xbd\x90\xa7\x92\xd7\ \xe3\x25\x30\x81\x2a\xe4\x28\x1b\x53\x15\x59\x53\x96\xd1\x2a\x0f\ \xfc\x65\xd1\x23\xdc\xe4\x6e\x83\xce\x41\x9b\x6f\xbe\x7b\xe3\xc6\ \x4d\x07\x77\x98\x6a\x52\x93\x3a\xca\x98\x04\xa4\x92\xbd\x90\x34\ \xbe\x40\xed\x21\x82\x09\x37\xb0\x51\xae\x52\x5b\x93\x94\x74\x92\ \xc6\xa4\xa8\x35\x33\x03\xc8\x99\x9b\x0d\xda\x68\xd2\xb2\x67\x94\ \x9a\x70\xbb\xbe\x2a\x45\x49\x85\x9f\x2c\x7b\xbd\xcc\x97\x58\x78\ \xf2\x9a\x4a\xe2\x1a\x7e\x5c\x29\x91\xa0\x44\xc2\x3c\xa1\x9a\x2f\ \x59\x3d\x0b\xf6\xf7\x68\x4d\xd2\x9d\x17\xb6\x40\xf0\x4b\xc1\x14\ \xa2\x08\x3f\x1d\x8f\x2a\xac\x02\x53\x6f\x84\xe6\x82\x8f\x36\xeb\ \xe1\xd2\xed\x8e\x28\x7a\xba\x3c\xca\xbc\x9e\xa2\x44\xbf\x23\x32\ \x51\xfd\xb4\x3d\xff\x04\x38\x83\x5d\x50\x07\x53\xda\x47\xf5\x36\ \x38\x35\x42\x8c\x93\x7a\x55\xd9\x07\x41\xd6\x9a\xa1\xa0\xa4\x6d\ \xe6\x68\x92\xc4\x87\xc6\x05\x88\x40\x4b\x7b\x08\xb7\x30\x17\x48\ \x5f\x70\x52\xd7\x28\x77\x96\x08\xe2\xaa\x62\xab\xb7\xdf\x2c\x76\ \xc2\x9c\xb1\x7b\x2a\x69\xed\x04\xbc\x21\x53\xc7\xaf\x4c\x7a\x9f\ \x09\x75\x94\xf7\xc2\x74\x3b\x11\xf4\x8f\x32\x3e\xe5\x9e\x2a\xb8\ \x4a\x04\x6a\x11\xea\x4e\xd7\x36\xbe\xb3\x52\xf0\x65\x8a\x93\xa2\ \xa4\x09\x6a\x46\x9b\xa1\xb2\x7b\x47\x85\x47\xd1\x51\x7b\xe7\xac\ \xa9\x45\x91\x0a\x49\x80\x91\xc0\x61\x0f\x25\x1b\x7b\x09\xcc\xa4\ \x4e\x52\x88\x4c\x05\x2a\x5f\xd1\xe6\xcd\x34\xea\xa8\xaa\x3a\x02\ \x35\x02\x25\xad\xf1\x45\x1c\xe5\x1e\xe7\x42\x47\xf8\xd2\x39\x9c\ \x68\xca\x04\x80\xe0\x4e\xa9\x40\x96\xb0\x79\xb5\x2d\x12\x17\x72\ \xd1\x75\xba\x08\x9f\x37\x1b\xe2\x1e\xe7\x3a\xd6\xce\xdc\x13\x3d\ \xf7\x91\x51\x6c\x02\x97\x47\x80\xd2\x01\x0e\x31\xa2\xf0\x59\x49\ \x35\xe9\x8d\x06\x78\x73\xda\xa4\x76\x6c\x69\x1b\x5c\x50\xc2\x43\ \x70\x75\x76\xc7\x62\xaf\x6b\x95\x2f\x65\x28\xf1\x64\xa3\xeb\x04\ \xde\x02\x52\x73\x54\x59\x53\x51\x30\x4f\x0d\x46\xf3\x08\x4b\x45\ \x51\x2d\x4c\x81\xaa\x71\x02\x36\x88\x4c\x04\x64\x9d\x6a\x77\x2c\ \xd3\x2e\x5f\xdc\x28\xfc\x26\x5a\xde\x84\x40\xea\xc8\x4f\x6c\xd4\ \x02\xdd\x74\x0f\x5e\x8e\xab\xa0\xa3\xd1\xb9\x06\x30\xfd\x9a\x20\ \x46\x59\x28\x94\xc4\xa9\x92\x57\x0a\x3b\x25\x9d\x4f\xd5\x75\x02\ \x5b\xe2\xe6\x51\x92\x7d\x44\x0c\xb2\xce\xfd\x0e\x88\x92\x8c\xc9\ \x57\x51\x78\x2b\xb3\x07\x4b\x02\x37\x1a\xf7\x63\x33\x64\x42\x19\ \xaf\xf5\xc0\x55\x61\xa7\x18\xbc\x94\x1f\x74\xf7\xa0\xbc\x74\x34\ \x4a\x1c\xc5\x64\x04\x81\xc6\x8b\xbd\x4a\xef\xe2\x45\x29\xf6\xa4\ \xa1\xe8\x0b\x7c\xa0\x4e\x86\x15\x7c\xc1\x49\xbf\x04\x98\x48\x15\ \x20\xd8\x39\x55\xe2\xee\x85\x50\x37\xd5\xaa\xc4\xd2\x57\xeb\x53\ \x2a\x5d\x16\x12\x93\x4a\x72\xd4\xf7\xa7\xfc\xa1\xa1\x02\x91\x6e\ \xd6\x31\x4a\xf9\x48\x49\x1d\x10\xa6\x33\x7b\xcc\xed\xd8\xdd\x5b\ \x88\xa8\xa5\x88\x56\x88\xd7\x7a\xf7\x26\xb2\xa0\xd1\xe8\x49\xde\ \x74\x0a\x03\x38\x2b\xe8\x32\x4f\xec\xca\x37\x95\x7e\xd7\x53\x8a\ \xa1\xd3\xe1\x7e\x3d\x8b\x1f\x2e\xe0\xac\x8e\x45\xc1\x99\xe2\x8a\ \x24\xf6\xa4\xe2\x12\xdf\x8c\xea\xb4\xe0\xe1\x8a\xce\x08\x09\x50\ \xe4\x67\xc8\x51\x45\xc4\x50\xca\x97\x84\x72\x56\x50\x8a\xf3\xc2\ \xe4\x8e\xac\x5e\xae\x04\x58\xc1\xe9\x70\xeb\xc5\x9e\x1d\xe9\xa1\ \xdb\xdb\x85\x9f\xda\x96\x30\x22\x09\xda\xdb\x45\x07\x38\xb8\xa7\ \x57\x2a\xc2\xcf\xda\x5e\xe8\x9c\x0e\x45\xe9\x15\x10\xad\xf4\x68\ \xea\xa8\x9e\x80\x13\xff\x87\xa1\x86\x1f\x8f\xb2\x97\xd2\xba\x5a\ \xe2\x8b\x78\x89\x77\x50\x1a\x0f\xdc\x53\x49\x76\x1f\x83\x8d\x9a\ \xb1\x05\xa7\xb8\x27\x87\x91\x20\x36\x24\x70\x16\xa4\xc2\xd2\x42\ \xbb\x52\x11\x3d\xac\x4e\xc2\x4c\xbd\x84\xea\xf5\x53\x3c\x7d\xd2\ \x95\x4e\x8b\xe8\x63\x3d\xa5\x48\x4f\xf5\x8e\x4a\x2c\x2a\x50\x35\ \x4e\x0f\x69\x85\xa2\xaf\xb5\x72\xf2\xaf\xc2\x7b\xc8\x46\x9d\xc8\ \x94\x50\xd6\xcc\x51\x9f\x1c\x52\x12\x7b\x1a\x66\x70\x48\xa8\x4a\ \xe4\xa0\x9e\xe0\x43\xb9\x13\x4f\x63\xa8\x0d\xed\x48\x7b\x08\x17\ \xfd\xa8\x40\xad\xa3\x65\x94\x6f\x8d\x95\x71\x92\x13\xad\x62\xaf\ \x9f\x54\x4e\xd5\x8e\x1b\x53\xea\xf8\x45\x41\xbe\x54\x13\xb5\x65\ \x32\x52\xfa\x12\x9c\x64\x4d\x5e\x72\x57\x7b\x6b\x91\x58\x13\xfb\ \xfc\x90\xa5\x11\xa5\x39\xea\x4c\x5e\x4e\x0b\xe1\xe5\x91\xc4\xa3\ \x31\x2f\x45\xf4\x08\x14\x9e\xf8\x80\x98\x68\x67\xe2\x00\xeb\x38\ \x0a\x63\x51\xdf\xe3\x17\x72\xde\x92\x97\x4e\xfc\xc0\x28\x2f\xc2\ \x2b\xa2\x27\xf1\x87\x82\x47\x2f\x9a\xce\xed\xd3\x52\x9f\xe6\x54\ \x44\xa3\x05\x98\x12\x98\x68\xaa\x95\xf0\xe3\x45\x49\x5e\x88\xb6\ \xf2\xc5\xdf\x26\xac\xc4\x4e\x7e\x4f\xa4\x81\x8e\x5f\x99\xe4\xec\ \x4d\x4f\x67\xf5\x12\x34\x49\x5e\x2f\x4b\x68\xec\x45\xeb\x14\x4b\ \xdb\x1c\xe5\x27\xad\xe9\x10\x1c\x85\x5b\x05\x25\xe8\x9f\xe0\x1d\ \x87\xa3\x79\x8d\xa0\x31\x38\xd1\x3a\xca\x58\x2b\x78\x02\x94\x0e\ \x9f\xb2\x7d\x71\xf8\x87\xe4\x68\x4c\x64\x4c\x31\x47\xc9\x90\x88\ \xa7\xf0\x0e\xd9\x2a\xc2\xaf\xf4\x5a\x2f\x2a\x10\x1b\x53\xda\xec\ \xd3\x6b\x3d\xf3\x13\xcc\x1e\xef\x98\x28\xa9\x8b\x32\xd1\xb2\x14\ \xa6\xf2\x86\x7d\x1c\xe6\x89\xe0\x15\xcc\xd8\xe8\xd3\x7e\x54\x83\ \x25\xa4\xee\x75\x8b\x57\xcc\x8b\x30\xea\x42\x49\x29\x77\x2a\x1a\ \x95\xf3\xf5\x78\x4b\xdc\xcc\xfe\x3e\xbd\x17\x1a\x55\x72\xf5\x15\ \x14\xc6\x59\x3f\x51\x0d\x04\xaf\x6c\x83\xfb\x71\x53\x25\x58\x35\ \x57\x05\xa6\x66\xea\xf8\xf3\x4c\xc2\x4e\xc1\x2a\x20\x75\xc6\x9c\ \xf3\x52\x9f\x0a\x4a\x2a\x08\x98\x08\x27\x20\x56\x06\xc5\x62\xd7\ \x09\x09\x92\x62\x29\xfc\x26\x0f\xb5\x08\x44\x85\x14\x50\x22\xd4\ \x5c\x4a\x7a\x3e\xcc\x20\xbb\x2b\xc9\xa2\x38\xb9\xab\x12\xf1\xbd\ \xc0\xa4\x97\xf2\xa5\x63\x8b\x64\x4c\x92\x2b\x93\xcb\x27\xe1\xcb\ \x81\x2b\xf0\x50\xb9\x64\xf6\x01\xd1\x22\x4f\x1f\x1a\x24\x3f\x2a\ \x74\x8e\x65\x1f\xbb\x54\xda\xb8\xd3\x3a\xca\x87\x03\xd1\x90\x98\ \x10\x1f\x97\x1e\x85\xa7\x60\x48\xc2\xd1\x32\x26\x02\xa8\xa3\x91\ \x38\x6a\x86\x57\xca\xea\x79\x09\x2d\x84\xab\x3d\x8c\x48\xb4\x31\ \x49\x2e\x4f\xfe\x29\xd4\x51\x0c\x9f\x88\xa7\xc2\xe0\x76\x60\x4c\ \xa1\x6f\x4a\x6f\x8a\xa4\x83\x12\x01\x8b\x28\x1d\x43\xb7\xcd\x9f\ \x7c\x52\xa3\xc8\xd5\x09\x31\x92\x3a\x7c\x85\x35\xe7\xf4\x29\x5b\ \x11\x39\x6b\xa8\xe4\xcc\x41\x40\x0a\x37\xe7\x23\xd3\x52\x1f\x4d\ \xa4\xcb\x54\x24\x5b\xfb\x39\xbb\xcb\xfc\xc1\x46\x78\xda\xb2\xe0\ \x1d\xf0\x42\x2f\xa1\xbc\xc5\xcc\xbb\xa0\x55\x00\x58\x6c\x3e\xb4\ \x7a\x25\xf9\x76\xcc\xd1\xc8\x9c\x0a\x00\x0a\xce\xe9\x58\xb7\x1d\ \xde\xc7\x42\x2e\x9f\xb9\x23\xb4\xbe\x1b\x2d\xf9\x06\xab\xc7\xae\ \x0d\x0f\x29\xaf\xf3\x82\x36\xb2\xfa\x34\xce\x69\x0e\x4a\x84\x7a\ \x00\x16\x39\xfa\x8f\x8b\x96\xce\xdb\xdd\xc7\x14\x14\x80\xfa\xbb\ \x22\x4c\xc2\x4e\xb1\xf6\x38\x28\x01\xa0\x5e\x8c\x1f\xc5\x79\x41\ \xcf\x78\x3b\x88\xf0\xe3\x68\x14\x9b\x89\xfe\xcd\xf2\x73\xd3\xbe\ \xa5\x1e\xc0\x44\xd1\x73\x6a\x1f\xc3\xac\x18\x2c\xbc\x75\x3b\x11\ \x82\x44\x94\xfc\xa1\x84\x3f\xd6\x3f\x05\x82\xc7\x62\x0e\x6f\x86\ \x9d\x64\xb7\xc4\x77\x75\xa4\x88\x5f\xa3\x49\xd5\x29\x37\x2a\xce\ \x5e\xf8\x2a\x6c\x55\xc6\xa4\xf3\xfa\xd8\x96\x22\x8e\xb6\x7c\x96\ \x16\x08\x56\x36\x6d\x6d\xaf\xc1\xca\x81\x3e\xba\x0c\x9a\x29\x0b\ \x53\xa1\x22\x7c\x78\xe8\x5b\x3a\xf3\x62\xeb\x97\xd0\x24\x61\x4e\ \xf0\x95\xce\xeb\xb5\xe8\x01\x64\xcf\xfa\x26\xab\xa2\xbb\x1b\xfe\ \x12\xea\xa5\x4d\xc0\xda\x20\x17\xf1\xfd\x3d\x4a\x1f\x49\xe2\xa6\ \xf1\x79\x3d\x8b\x5f\x9d\x0c\xe4\x63\x42\x1a\x26\x00\xc5\x54\xe4\ \x6a\x77\x84\x4a\xf6\xeb\x83\xe8\x9e\xa9\x0c\xda\x89\xf0\x57\x82\ \x12\xc1\xaa\x33\x91\xb4\x86\x26\x2a\xce\xad\x56\xe0\x9e\xf4\x78\ \xa2\x29\xdb\x42\xdc\x47\x98\xf0\xca\xe1\x85\x2a\x9a\xee\x29\xa0\ \x10\x5f\x93\xb6\x79\xb8\xd3\x05\x9d\xf4\xbc\xa7\x98\xa4\x36\xda\ \x70\x5d\x64\x2b\x87\x80\x53\xf5\xe8\x58\xae\x26\x49\x71\xb3\x4e\ \x54\xc5\x03\x96\x96\x41\x22\xe2\x7e\xc2\x28\x8f\x3a\x20\xe2\x7c\ \x99\xe0\xfe\x40\x94\x14\x91\x3a\x2a\x38\xcd\x47\xc8\xa5\x2e\x92\ \x0a\x51\x41\x5f\x62\x92\x30\x38\x89\x1d\xbe\x72\xa3\xe9\x02\x44\ \x11\x8c\xd0\x02\x8f\xbf\xb5\xa3\xfa\x9e\xdc\xb9\xab\x74\xe5\x01\ \xb0\x62\x47\xd9\xd8\x15\x1f\x39\xaa\x1c\x14\xd9\x3c\xde\xb1\x1f\ \xb5\x2a\x1a\xa4\x4b\xea\x94\xed\x1e\xe8\x6a\x2d\x42\x96\xd2\x18\ \x00\x41\x5b\xaa\x28\x9f\xca\x0f\xda\x94\x10\xa0\xd8\x51\xa9\x94\ \x54\xb0\xb6\x63\x8e\x2a\xa3\xd7\x11\x3e\x7c\xd8\xa0\x64\xdd\x40\ \xb8\x89\x48\xbd\xa9\x54\x85\x40\xad\xb0\x43\x4b\xf2\x26\x79\xda\ \x71\x8c\x5f\xa6\xa3\x3c\x0d\x76\x5a\x38\x9a\x36\x26\xc7\xd0\x27\ \xad\xd9\xcf\x0e\x91\x9f\x62\x4e\x32\xb5\x40\x2f\xa1\x25\x3c\x20\ \x74\x6e\x70\x1f\x9f\x30\x87\x86\xaf\x58\x1a\x59\x7d\x0b\x1f\x01\ \x2a\x11\xa9\xeb\x2c\xdc\x3e\x28\xc4\x37\x01\xa1\x8e\x86\x8a\x5a\ \x09\x44\x29\x3a\x56\xc9\x6c\xb9\x8c\x4d\x49\xe7\xa1\x01\xd6\xd4\ \xd6\xb2\xa8\xe8\xd3\x23\x00\x3a\x7b\x3d\x00\x65\x6e\xe2\x71\x60\ \xf2\xfa\x9a\xd2\x85\x27\x5f\xee\x29\x98\xb2\xce\x27\x19\x3a\x0d\ \x79\x7d\x94\x87\x16\x04\xf7\x95\x73\x38\xa5\xc3\xf3\x4f\xcc\xd4\ \x90\x9d\x62\xe8\xfc\x23\xad\x3a\xa4\x9b\x48\x64\x46\xd1\x72\xcf\ \x2c\x8d\x37\xc4\x62\x12\xb0\xc5\x7f\x3b\xa0\x53\xfb\xd8\x94\x04\ \x64\x2e\xf3\xd3\xf4\xa6\xad\x18\x7b\xcc\xd4\xb6\x96\x7c\x7a\x70\ \x5e\xbc\x86\x2a\x87\xdf\x2c\x18\xa2\x38\xd2\xf7\x7d\xfc\x00\x9e\ \x11\x21\x6b\x42\xf1\x53\xef\xa8\x22\xe9\xc3\xaf\xb5\x0f\xad\x54\ \xaa\x9c\x2c\x3e\x01\x32\x42\xaa\xc5\xae\xf3\x7a\xfe\x2d\xd4\x5e\ \x68\xef\x5b\x6e\xb9\xa7\x45\x94\xdc\x13\x3c\x2a\x19\xad\xd0\x9a\ \x58\xe2\x22\xf6\xa4\x67\x2a\x23\x77\x8f\x97\xc3\x9b\x6e\x7e\x11\ \x90\x8c\x92\xfb\x74\x8e\xc5\xe5\x3e\xea\x75\x35\x97\xe6\x25\xde\ \xe2\xf1\xe3\x3a\x2e\x82\x64\xc4\x21\xe9\x13\x18\xf1\xf8\x8f\x74\ \x79\xd4\x71\x15\x97\x7b\x03\x30\x6e\xc5\xd6\x06\x25\x39\x88\x54\ \x20\xd3\x2e\x54\xf3\x53\x48\x2d\x4a\x11\x47\x23\x88\x64\x4c\xae\ \xf2\xf4\x15\x77\xac\x8d\x26\xaa\x68\xac\x51\x44\xaa\xf6\xc3\xd2\ \x2d\x5a\x0a\xb3\x80\x65\xa1\x27\x9a\x72\xa7\x13\x7e\xb4\x47\x65\ \x1d\xae\x8f\xed\x41\x25\x05\xe2\x11\x10\x45\xbc\x11\x5e\x55\x15\ \x3e\xd8\x5f\x10\x28\x28\x1f\x18\x80\x83\x57\xf8\x28\x76\xa6\xe3\ \x51\x89\xf0\x9b\xd2\x98\xc9\xfb\x4c\xe6\x17\x93\x51\x50\xd2\x5d\ \x34\x77\xd4\xfe\x00\xce\x31\xed\xed\x95\x01\x08\x0f\xad\xf5\x95\ \x9a\xa0\x25\x7e\x89\xe6\xe6\x69\x76\x2a\x3d\x55\xee\x89\x2d\xde\ \x81\xf4\x5a\x35\x80\x50\x49\x47\x3b\x1b\x7e\x83\x1e\x1b\x3b\x43\ \x2d\xcb\xa8\x15\x1f\xde\x75\xb8\x0f\xae\x7c\x69\x16\x6a\x28\xbd\ \xe2\xf9\xa3\xa1\x31\xe9\xe0\x09\xa4\xff\x3d\x38\xae\xf8\xca\xf7\ \x17\x82\x93\x43\x66\x04\x5b\xe9\x6c\x44\x69\xa9\x6a\x2a\xd1\x79\ \x53\x74\x8e\x55\xc7\xa3\x71\xff\x68\x6a\x9f\xc9\xde\x68\x4e\x38\ \xeb\x61\xcf\x77\x84\x9d\xbc\xd5\x14\xee\x34\x45\xbb\x4c\x71\xda\ \x34\x2e\xca\x53\x21\x1e\x7e\xa4\xfd\x68\x41\x0c\x15\xb8\x60\x4f\ \x37\x2d\xe2\x01\xc0\x0e\x67\x20\xb2\xdb\x90\x27\x12\xbc\xd8\x8f\ \xb2\xa5\x8b\x92\x86\x6b\xfd\x84\x02\x2b\xa4\x37\x1b\xd2\xdb\xf6\ \x54\x1a\x7f\xcc\x01\xbd\x79\x00\xc2\x0f\xba\xf3\x94\x6e\x0a\x5b\ \x4b\xd2\xd4\x80\xb0\x37\x8f\x8e\xb3\xfd\xba\xf1\x68\x33\xa1\xa0\ \xe2\xa2\x78\x36\x11\x9c\x79\x58\xbd\xbb\x0f\x56\x0f\x28\x99\x99\ \x9a\xa5\xf1\x26\xa3\x40\x95\xea\x43\x86\xef\x2c\x53\xec\x1c\x1b\ \x8f\x4e\xf3\x86\x98\xc0\x0c\x92\x3b\x6e\x7b\xfb\xe7\x3f\x3a\x6c\ \xd0\x07\x86\xb2\xf8\x35\x4c\x01\x18\xe6\xca\x71\xa9\x24\xcd\x50\ \xd9\x0f\x39\xd4\x74\x22\x81\x9b\xde\x66\xa2\xf2\x78\x54\x23\x8b\ \xcd\x69\xfc\x1c\x67\xf7\xc2\xf3\xcb\x31\x8d\x8f\x47\xd5\x06\x0e\ \x71\xd2\x37\xfc\x9e\x6e\x7b\xd2\x00\x8b\x78\xdb\x96\x64\xae\x0d\ \x4a\x62\x66\x39\xff\x1f\x99\xbd\xea\x78\x8c\xfb\x47\x63\xe2\x31\ \x4a\x8a\xa7\xb2\x73\x27\x3b\x63\x22\x7e\x4e\xe5\x25\x8e\x4a\xda\ \xbd\x70\x54\x77\x3b\xea\xca\x78\xba\x2d\x53\x8f\x4c\xf4\xb6\x6b\ \xb1\x7d\x98\xa8\x06\x7c\xaa\x0f\x1f\x5f\x7a\xe8\x34\xa2\xc4\x77\ \xe5\xc5\xf6\x19\x3c\x08\x94\x6d\x49\x80\x8e\x8f\x47\xc3\xce\xe1\ \x82\x9b\x72\xa9\x4b\x4b\xb1\x35\x57\xeb\x52\x11\x04\x25\x78\xe4\ \x8a\xa2\xbd\xa8\x40\x8a\x53\x20\xc0\x41\x65\xee\x56\x91\xf3\xf8\ \x99\xe8\x41\xed\xa9\x90\x5e\x22\xb7\xd5\xe4\x71\xb4\x96\xd8\xa9\ \x66\x73\xf2\x4f\x32\x96\x12\x92\xaa\xc1\xe8\x55\x32\x0b\x35\x10\ \x11\xa7\x0f\xd5\x73\x4b\xc4\xd3\xe9\x74\x3c\x5a\xa8\xa1\x3f\x21\ \xd5\x61\x54\x02\x4f\x72\x7a\x7b\xca\x43\xb5\xd9\xe4\x65\xaa\xeb\ \x98\xcc\x3e\xb5\x0d\x8e\x97\x82\x2a\x91\xb3\x3e\xc9\x86\x56\x2f\ \x77\x6a\xf9\x14\xb4\x31\xb5\x79\xe6\x30\xcd\xf2\x55\xe7\xd6\xbb\ \x80\xb2\x0b\x34\xbe\xe5\x2d\x91\xdb\xab\x09\xa4\xb9\xbf\x73\x07\ \x4f\xc8\xd4\x60\x82\xb3\x70\x36\x6c\xd2\xe2\x59\xbe\xf6\x46\x94\ \x48\x30\xa1\xc4\xe0\x0c\xe3\xbc\xa6\xee\xd2\x61\xff\xc9\x20\x1b\ \x7a\x84\x37\x0a\x9f\x26\x64\x27\x59\xea\xa0\x92\x8e\x2a\xc1\x67\ \x3c\x55\x03\x60\x66\xda\x41\x75\xbd\xb1\x2f\xe9\x95\xa9\x99\x5e\ \x9b\x74\x57\x01\x59\xbd\x3f\x70\x5a\x3c\x54\xdc\x49\x88\x20\xa3\ \x71\x15\xe9\x69\xbe\xfe\x18\xe7\xe9\xb7\x5c\x1a\xe5\x23\xa0\x9e\ \xda\xe8\x0b\xde\xaf\x8f\x67\x63\x87\x4b\x68\x28\x77\x40\xc9\x9e\ \xb4\xc6\x4b\x9d\xad\x4f\xe3\xec\x32\xd2\x53\x2f\x9d\x32\x15\xaf\ \xcf\xd6\xe9\x31\x4a\xf1\xca\x14\x2e\x4a\x78\xfb\xfb\xf5\x48\x85\ \x7f\x5e\xa0\x44\x9f\x1f\x13\xc3\x25\x8c\xf0\xf6\x8d\x09\x8f\x04\ \x9f\x3c\x32\x40\xef\x68\x06\x76\x9f\xd8\xb7\xf3\xc7\x7a\x2a\xe1\ \x13\x52\x9c\x91\x8b\xac\x8d\xd2\x7a\xf9\xd2\x31\x09\x8f\xc5\x2e\ \x15\x47\x23\xe1\xff\x16\x9c\xf6\xee\x27\xe2\xd1\x68\xb3\x01\xd7\ \x7a\x8a\x48\x7b\x08\x53\x82\x27\xae\xe4\x45\x2e\x2a\xda\xaf\xaf\ \x3d\x98\x99\xaf\xa5\x6d\xb8\x4a\xb1\x24\x1a\xf9\xb2\xc1\xc6\xe8\ \xe7\x0d\xdb\xc9\x41\x00\x7a\x9c\x2f\x13\x32\x94\x81\xaa\x6d\xf0\ \x9c\x57\x50\xbd\x15\x26\x47\x82\x6b\x3e\x65\xcd\xc1\x93\xa7\x9f\ \x40\xb2\x2e\xd1\x14\xef\xee\x3b\x8f\xde\xb8\x7d\x61\xd0\x31\x9f\ \xf1\x68\x05\x0d\x93\x36\x6d\x81\x95\x7a\x40\x32\x2f\x4c\xbc\x82\ \x0a\x54\x9d\x92\x00\xbe\xb0\x40\xc6\x0e\x0a\xe8\xd4\x6b\x8f\xba\ \x36\x8c\xf2\x00\x6b\x33\xcf\x92\x87\xac\x35\x52\x2a\x3c\xf4\x0a\ \x16\xbb\x6e\x27\x92\x43\x18\xda\x37\x55\x5e\xfe\x41\x0e\x2a\xdc\ \x0c\x65\xa0\xe7\x6e\x38\xff\x1f\x4c\x95\xf8\x27\x33\x08\x52\xd6\ \xa6\x36\x7b\x7b\x5d\x71\xd6\xee\x9e\x66\x3b\xf2\xf4\x0f\xe5\xee\ \xd1\x96\x08\xac\xee\x22\xd3\xbd\x1a\x08\x52\x9f\xbc\x62\xfd\xdc\ \x70\xef\x68\x84\xc3\xaf\x3c\xab\x77\x77\xd7\xca\x7c\xc3\x17\x0e\ \x3f\xbb\x54\xa2\x6f\x69\x63\x2a\x88\xa1\x05\x5e\xc2\xd2\x9c\xa7\ \xf9\xca\x39\x31\x40\x1c\x9e\x67\x2a\x69\xe6\x4f\x5c\x25\x41\xa8\ \xbf\x2d\x33\x11\x16\xca\x8c\x5b\x20\x1c\x37\x4f\xdd\x70\xd4\xe1\ \x23\xa8\x74\x0a\x43\xdf\xc9\x8d\x05\xe1\xf0\x34\x22\x6d\x4a\x20\ \x79\x75\x78\x59\x53\x45\x27\x42\x69\x8a\x7b\x5c\xcb\x03\xab\xbf\ \x6b\x91\xe9\xc1\x86\x96\x7d\xf7\x0b\x3c\xc4\xeb\x2f\xcb\xb8\x23\ \x57\x5b\x93\x93\xbc\xb0\x15\x89\x4c\x09\xde\x14\x94\x84\x58\x01\ \xe8\xb8\x92\x0e\x99\xfd\x5f\xb9\xe9\xb8\x73\xe6\xbd\xb1\xe3\xa3\ \xec\x76\x7f\xe6\x0d\xf0\xea\x75\xe3\xf1\xc8\x2a\x6e\x26\x05\x05\ \xa4\xb1\xe8\x45\xe6\x45\x98\x89\x94\xfa\xc8\x00\x2c\xa5\x02\x52\ \xbc\xe8\xad\xaf\xb9\x7d\xc7\xbe\xc1\xb1\xa0\xa4\x8a\xa3\x13\xa2\ \x15\x8b\x07\x3a\x8c\x72\x7c\x0d\x3f\x15\x96\x00\x50\xbc\xf3\xc4\ \xe1\x30\xe9\x7b\xc3\x29\x25\xf0\x1b\x85\x24\xf0\x54\x45\x9e\x65\ \x5f\x85\x11\x9c\xda\x9a\x4e\xb5\x03\x18\x57\x6f\x5e\x6d\xde\x93\ \xa2\xa4\xf1\x78\xe4\xa2\x60\xa4\x78\x2b\xd1\x4b\x75\xbc\x8e\x04\ \x0f\xf8\xc0\xa2\x90\xca\x4f\x6f\xd8\x80\x7d\x3a\x82\xd3\xde\x14\ \xe6\xfd\x0e\x28\x69\xcf\x83\xd9\x35\x48\x2f\x38\xec\x8b\x4b\xad\ \x8b\xac\x6e\xec\xce\x14\x47\xd3\xe5\xfb\x18\x66\xa1\x36\x9a\xd8\ \x9e\x94\x83\x2a\x2b\xda\xbc\xa9\x36\x5c\x61\x6c\x17\x66\x77\x57\ \x3a\xb5\x93\xa5\xfe\x5c\x54\xd2\x4c\x8d\xff\x98\xb0\xdf\xd3\xa0\ \xa4\x85\xe2\xa8\x30\x34\x4c\x47\x10\x2a\xa3\xcd\x55\x63\x41\x2e\ \x1c\xd5\x33\x92\x2d\x3d\x7d\xb4\x9d\x01\x36\x1a\xed\xab\x83\x61\ \x15\x7e\x40\x92\xdd\x0b\x33\xb9\xa2\xf1\x69\x5d\x43\x53\xa1\x92\ \x6a\x8c\x85\xdc\x32\x85\xb2\xe7\xf3\x53\x80\x06\xc9\x32\x1f\x60\ \x05\xa4\x97\xd1\xd8\xdc\x86\x8f\x13\x63\x27\x46\xfa\x72\xa7\xa4\ \x99\x72\xf8\xf0\x74\x2f\x85\x3e\x26\xd5\x01\x91\x4c\x46\xa8\xee\ \xa8\x55\x14\x58\x2a\x3a\x0a\x48\x99\x9b\x70\x13\x47\xef\xc3\xa9\ \xc3\xaf\xef\x28\x97\x1f\xcc\x47\xbe\x16\xb6\xae\xc9\x93\xca\xe4\ \x17\x03\xf4\x2d\xb0\x67\x94\x29\x8e\xa6\xcb\x64\xc4\x50\xae\x3c\ \x22\x52\xad\xa3\xb9\xea\xc4\x16\x43\x5a\x31\xb9\x38\x37\x85\x03\ \x67\x2b\x07\x72\xc5\x0a\x67\x4c\xa8\xa4\x10\x37\x5b\x25\xbd\x66\ \x46\x80\xf2\x90\x37\x51\x52\xed\xf0\x95\x6a\x8a\xd5\xa7\xdc\x13\ \xf0\x94\x74\x14\xb5\x34\x97\xe3\x96\x78\x55\x2b\x4e\x5b\x7a\x3d\ \xcc\x8b\xca\x0d\xc8\xff\xfd\x8f\xc9\xf5\x46\x63\x8f\x3d\x61\x45\ \x99\x50\xd2\x25\xc8\x44\xbb\x5d\x1e\x50\x04\x61\x49\xa8\xa4\x02\ \x53\x6b\x6a\xaa\x46\xa6\x9a\x1f\x64\x6b\xb9\xd0\xe7\xd6\x79\x44\ \xee\x7b\x47\x4e\x49\xff\x6b\x52\x26\x10\xff\x89\x75\xfd\x02\xf5\ \xe5\x6e\xb9\x67\x86\xe2\x3d\x61\x80\x1a\x25\x1d\x4d\x0e\x26\x3e\ \xf3\x91\x7b\xa7\xe6\x8e\x59\x11\x0e\x4a\x05\x78\x52\x7b\x12\xc1\ \x4b\x4f\x09\x22\xd5\x7d\x3a\xc2\x51\x91\x7e\xbd\x02\x66\xab\x76\ \x2c\x18\xa1\xd7\x03\x50\x42\x7a\xed\xc8\x2a\x69\x4f\x1b\x93\xd1\ \x53\x52\xd2\x2b\xb1\x5f\x60\x73\x09\x1c\xc5\x08\x8a\x48\x4a\x0f\ \x52\xc5\x07\x62\xb8\x1c\x3c\xeb\xe2\x78\xc5\xa3\x3f\x2a\x1e\x39\ \xbe\xfa\x4d\xc1\x6c\xd7\x73\x6a\x51\x51\xe7\x49\x37\x75\xb4\xcb\ \x87\x22\xc9\x67\x20\x73\x92\xa1\xdc\x13\x89\xde\x51\xd6\x51\xc5\ \x52\xd5\x54\x02\x6e\x1e\xf5\x54\xac\x1e\xed\x9e\x07\x7d\xc9\x28\ \xe4\xb9\x75\x77\x6c\xd9\x7a\x60\x19\xb8\x82\x4f\xe5\xa5\xa4\x76\ \xbf\x90\xe5\xbe\x4b\x50\x27\xa6\x3f\x62\x62\x6a\x9f\x56\x3e\x72\ \xbd\xf3\xa3\x71\x43\x11\x7c\x44\x89\x08\x4d\x2a\x81\x07\xf3\x10\ \x86\xfa\x06\x74\xf8\x7b\x9f\xbb\xee\x3a\x54\x52\xc2\x69\x86\xd3\ \xb6\x8a\xba\x5c\x7b\x0e\xc4\xca\x7d\x96\xbc\x53\x52\x59\xee\x41\ \x41\x7f\xf5\x94\x96\xc1\xaa\x8d\x97\x2c\xb5\xda\x10\x38\xc7\x5d\ \x84\xe1\xc0\x69\xed\x9f\xc0\xd7\x03\xd2\xa8\x55\x63\xc3\x87\x8f\ \x36\x4c\x9b\xdb\x55\xc3\x5a\x8f\x63\xec\xb6\x0c\xd1\xed\x67\xf7\ \xc1\xea\x9e\xa3\xe8\x4b\xf2\xa4\x3d\xe4\x27\x5c\x24\x73\xc8\x45\ \x6d\x9a\xd7\xa2\xbe\xa7\xa6\x67\x4f\x85\x84\x4f\xa4\xa3\x31\x4f\ \x81\xab\x2a\xb3\x43\xb8\x9f\x7e\x0a\xa1\xdd\xd9\x03\x96\x1e\x01\ \x38\x37\x01\x4e\x58\x99\xf6\x5a\x91\xae\xe9\x78\x39\x3d\x2e\xf7\ \xdd\x0d\x2f\xbf\xec\xd2\x0d\xb0\x80\x9e\x4d\x9c\xdc\xf4\xa0\x9d\ \xbb\x4d\x8b\xd3\x98\x52\x1e\xfd\xc6\x1c\x35\xa0\x98\xa3\x05\x49\ \xbe\xda\xb0\xd7\x02\x7d\xd9\x08\x81\x1e\x9c\xa9\x4a\x56\xd2\xdd\ \x1d\x09\x9f\xee\xb1\x9d\x34\x43\x1e\x96\xda\xce\xac\x92\x4e\xbe\ \xed\x70\xd0\xc9\xa9\x7f\xb7\x48\x4f\x9d\x34\xea\xb1\xd1\x80\x6c\ \x15\xed\x78\x1b\x3c\x79\x6c\x3d\x5d\x2a\xf1\x7b\xb4\x40\xfa\xcf\ \x5d\x67\x1c\xe5\x29\x4d\x03\xf4\xcc\x45\x04\x7a\x55\x1f\xac\xe9\ \x1d\xc0\x99\x61\x21\x61\xde\xe9\xa0\x93\x35\xb3\xb4\xab\x8c\x7b\ \x4b\xb3\x6b\x91\x5e\xdc\xef\xb7\x7a\x89\xd2\xb8\x40\x8c\x5a\xde\ \x14\x54\x04\xa9\xdb\x35\xaa\x57\x2f\x03\x68\xeb\xfa\xd6\xe4\xef\ \xdf\x73\xe1\x95\xab\xad\x63\x77\x4a\x0a\x9e\x74\xf5\x50\x46\xa7\ \xb9\xb4\x6e\xa1\xe7\x18\x6a\x22\x41\x65\xdd\x73\x0b\x2d\xa9\x97\ \xa4\x67\x8d\xfb\x0e\x5f\xd6\x26\x65\xf5\xb9\x1e\x46\xc7\xc6\x84\ \x3c\x5c\x36\x04\xff\x54\xf4\x3b\xdf\x70\x4a\x0a\xd5\x87\xc3\x61\ \x98\x61\x25\x63\x3d\x2d\x03\x47\xc3\xc2\xc0\x5c\x7e\xf6\xdc\x68\ \xa4\xac\xfb\x8e\x85\x41\x09\x6e\x34\x1e\x57\x91\x5e\x42\x8b\x02\ \x1f\xed\x47\xa5\xed\xe9\xe7\xaf\x38\x73\xdb\x45\xaf\x00\x98\xf9\ \x5a\xe2\xc9\xe3\x05\x3a\xd2\x3f\x1b\x81\x92\x8a\x27\xbd\x33\x2f\ \x89\x56\xcc\xc1\xc0\x79\x23\x7a\xf0\xa0\x40\x68\x38\xfb\x96\x5a\ \x39\xcd\x75\x4d\x8e\xff\x48\xf7\xe3\x8a\xdd\x93\xec\x73\xb4\xf9\ \xb5\xdf\x3c\x06\x87\x7b\x9e\x64\xb0\x1a\x03\x32\xdc\x74\xf3\xd0\ \x6b\x4c\x96\x26\x9d\x92\x96\xe4\x49\xd7\x75\x38\x6c\x86\x3c\xf9\ \xe3\x4b\xb6\x36\xbe\x9e\xfe\xfa\x84\x05\x39\x98\x29\x64\x84\xbb\ \x54\xf0\xd3\xed\x44\x5a\xf4\x28\xf8\x86\x4a\x43\x0d\xc1\x04\x6c\ \xa4\xd1\x6b\xac\xfc\xd7\xfe\xc5\x60\x25\x28\x29\x46\x4f\xb5\xb5\ \xec\xb9\x61\xc5\x4a\xba\xb8\xa9\xc6\x40\xef\xb5\x4e\x49\x1a\xd6\ \x83\xbe\xdd\x26\x00\xe7\x5d\x43\x20\x61\xec\xa8\xe0\xec\xf2\x1f\ \xb7\x4c\x9f\xb9\x13\x1b\x22\x1d\x15\xb9\x7f\xe8\xa6\x7b\x26\xbf\ \x72\xf5\x7a\xc4\x88\x19\xed\xda\x3a\x37\xe0\x5e\x8b\x4a\xea\x22\ \xd2\x33\x58\x49\x61\xb9\x37\xb4\xe6\xaf\xf7\x96\x2b\x3e\x7f\xbe\ \x9b\xf7\x7c\xc7\xd0\x85\x7a\x1b\x3e\xf8\xd9\x7d\xfd\x4e\x51\xea\ \x02\xa9\xcb\x9c\x20\x30\xd5\x50\xc5\x94\xb4\xf8\x03\x1d\xbd\xfc\ \xfe\x49\x8b\x6e\x13\x95\x31\xf6\x20\xd2\xd9\x86\xed\xd6\xd8\x26\ \x4a\x6a\xa0\xee\x05\x25\x6d\x55\x86\x78\xb9\x1f\xb1\x79\x6f\x1c\ \xb6\x32\x47\x86\xc9\xfe\xc0\xcc\x2e\x2a\xa8\xa3\x64\x07\x44\x9c\ \xd4\x73\x44\x8a\xb4\x76\xd2\x0f\x11\x6e\x7f\x7c\xd7\xe0\x3d\x6f\ \xfe\x21\x00\x78\xc4\xfa\xfc\x4f\x24\x95\xd4\x50\xf9\xdc\x62\x40\ \x07\x86\x33\x3c\xbb\x9f\x07\x93\x65\xac\x9e\xbc\x17\x9a\xee\x24\ \x6b\x0a\x4e\x65\xf9\x05\xe9\xe8\x05\x9e\x23\xb9\x7d\xd8\x6f\xe5\ \x96\x8e\x03\xe1\xcf\x58\xa4\xc7\x83\x92\x82\xd9\xe7\x55\x39\x09\ \x9e\xd4\xc0\xfc\xfc\x5d\x23\x0d\x73\xfe\x8e\x61\x87\x0b\xb8\xe1\ \x0c\x6f\x44\x8b\x08\xe3\xde\xbc\x56\x28\x76\xb9\x00\xa8\xbd\xd6\ \x1e\xcd\x38\xef\x1e\xce\xe4\x48\x5f\x83\x2a\x81\x05\x4a\x4a\x5a\ \xd9\xeb\x0a\x60\xf5\xe6\x1b\xbe\x4e\x7f\x8d\xe9\xa1\xd5\x38\x7f\ \xd3\xce\x00\xa6\x94\xa9\x1c\x37\xd6\xd3\x5e\xdd\x78\x78\x7f\x58\ \x19\x2f\xf4\x81\x01\xa2\xcb\xcf\x79\xd3\xed\xae\xa0\x39\xec\xc8\ \x5f\x42\x70\x07\x49\x8c\x96\xbe\xda\x7e\x1d\xd6\x03\x9c\x1f\x25\ \x2e\x5e\xf8\x7d\xd4\xcf\x87\xf6\x9d\xf6\xee\xdb\xb6\x3f\xfa\xc0\ \xb0\x53\x64\x44\x96\x95\xc0\x50\x01\x0a\x0f\x25\x24\xd1\x96\x18\ \x80\x6c\xc5\x7e\x34\xca\x45\x9a\x2d\xd0\xd3\x4f\x0d\x65\x00\xe9\ \x13\xa0\x09\x7d\x52\xd2\x75\x1d\xbb\x6f\x73\xc2\xbc\x94\xe3\xce\ \x81\xa2\xdd\xcd\x3b\x76\x15\x65\x96\xd7\x54\xd0\x29\x4b\xa7\xa3\ \x6a\xfa\x2c\xf1\x14\x29\xde\x06\x4f\x77\x91\xe1\x1c\x15\x9d\x86\ \x3e\x03\x15\x85\x7e\xce\x54\x43\x50\xdc\xb7\xb2\x7f\x1d\x20\xbd\ \xe9\x8c\xfb\x09\x26\x74\xc9\xfd\xcb\x0f\xb6\xec\x30\x2e\xa8\x51\ \xa3\xbf\xf7\x4a\x25\x24\xf5\x0c\x7f\xd9\x93\x22\x4b\x63\x1d\x6d\ \x79\xc9\xb2\xb6\xfc\x30\x28\x39\x05\x80\x76\xa4\x25\xf7\x9b\xa0\ \xb3\x00\xf4\xc7\x2a\x73\xb8\xdb\xc2\xbc\xca\x0c\x7f\xaf\xf2\x3c\ \x18\x94\x4a\x24\x47\x5a\x44\x4d\x27\x88\xa5\x13\x29\xf7\xa4\xfb\ \x89\xc6\xc7\xa3\x66\xaa\x3c\xb8\xc1\x19\x89\x9e\x8e\x00\x63\xea\ \xd4\x96\x5e\x14\x9c\x53\x8f\x3f\x70\xc4\x66\x53\xfe\x9c\xd1\x6d\ \x99\x99\x7f\xc9\x9f\xeb\x10\x1d\x45\xac\x70\x75\x0f\x1d\x94\x14\ \x2a\xb1\x57\x7f\x7c\xd7\x8a\x75\xee\x11\x2e\x3c\x1e\x69\x51\xfd\ \xe7\xae\x9e\x6b\x7d\xf9\x18\xc5\x42\xf3\x3b\x86\x79\xdd\x6c\x24\ \x6b\xe3\xd1\x9f\xb0\x2f\xc7\xcd\x1f\x4d\x6f\xdf\x8c\x3d\xb6\xae\ \x07\xe2\x43\xc6\xb3\xfe\x92\x1c\xe8\x1d\x27\x02\xac\xcf\x0e\x6a\ \xa4\x9b\xd6\x3c\x64\xb2\xa5\x55\x5b\x87\x4b\x05\xef\x87\x6b\xd2\ \xa7\x42\x01\x62\x6a\xfe\x68\xfa\xfc\x4d\x4b\xa7\x76\x02\x50\x7e\ \x18\x28\xfe\xfd\x95\x1f\x3e\xb6\xed\x4b\xcf\xe2\x52\x35\x3b\x68\ \xd5\x4c\xa7\x99\xb9\xd4\x4b\x9d\xc2\x95\xf1\xd3\x27\xac\x43\x46\ \x66\x63\x1b\xb4\xa2\xf6\xf6\x06\x99\x53\x2c\xff\x70\xd2\xd7\xbb\ \x9c\x31\x8f\xfc\x05\xb1\x13\x96\x9c\x2b\xda\x08\xaf\xea\x74\xa3\ \xab\xcf\xd9\x2c\x3a\x6f\xc9\x57\xba\xa7\x24\x92\x7c\xd8\x54\xd2\ \x80\x18\xef\x78\xc4\x27\x01\x46\x27\x2a\x3d\x01\x58\xfa\xab\xe0\ \xf6\x43\x13\xfa\xcf\x2c\x71\xe4\xee\x50\xf3\x47\xc5\x3d\x05\x79\ \x48\xbc\x65\x0f\x4a\x4a\x0c\x1d\xcd\x1e\x66\x56\x29\xcd\x4e\xc0\ \x2a\xfa\x69\x91\x0a\xd4\x4c\xba\xdb\xb3\x8c\x60\xfe\x3f\xe6\x8f\ \xaa\xb2\x93\x7f\xb1\x2f\x65\xa0\xa0\xa4\x77\xbe\x7b\xe3\xca\x95\ \xab\xd7\xdd\xbe\x30\x9c\xe1\x3a\xa9\xae\x39\x3b\x91\xcb\xb0\x71\ \xbd\x85\x63\xc1\xa2\x7b\x4a\xd9\xfc\xb8\x5e\x7c\xa9\x3e\x68\x0d\ \x45\xa4\x7a\x32\x36\x28\xe9\xdd\x9d\xbc\xd1\xe9\x77\x66\x1a\xc1\ \xbc\xe9\x2a\x9a\x3e\x6b\x6f\xe9\x7d\x51\x23\xbc\xc5\xee\x7f\xfd\ \xf9\xa3\x96\x5a\x0a\xa5\x62\xa9\x20\xad\x9d\x27\x9d\xf5\x17\x51\ \x9f\x2a\x2c\xe5\x12\xc9\x66\x7d\xdc\x44\x8a\x5c\xcd\x12\x83\xa9\ \xa4\x2d\x33\x0c\xf3\x30\x72\x4e\xfb\x51\x45\xf5\x33\x26\xd1\xd9\ \x33\x2c\xb8\xfe\x10\x9e\xaf\xaf\x62\xa4\x95\xc6\xa8\x8e\x08\x65\ \x89\x39\x35\xda\xdd\xeb\x29\x6f\xcd\xf4\x36\x53\x02\xe9\x36\x6b\ \x49\x7f\xdb\x90\xbc\x3e\x3c\x80\x81\x30\x65\x76\x7b\xd2\xec\x05\ \x6a\x3c\x22\x55\x4b\x3e\xfe\x2b\x18\x61\xb1\x24\x6d\xfa\xcb\x2d\ \xd0\x2d\x1d\x84\xa9\xaa\xce\xfc\x87\x25\x34\x4b\x45\xf2\xd8\x3a\ \xe8\x9d\x63\x55\xf3\x9e\xb4\xed\x87\xb2\x8f\x39\x4a\xf8\xd8\x8e\ \xf4\xd4\xe1\x79\xc8\x39\x5e\xf5\xbb\x57\xdc\x94\xe7\xaa\x3c\xca\ \xc2\xb7\x54\x0b\x57\xd3\xc7\x57\xe5\xe0\x95\x66\x29\x5f\xe3\xfd\ \x68\x32\x67\x6a\x44\x4a\x6a\x3d\xe9\x9c\xcd\x28\x47\x97\x80\xe4\ \x73\x0f\x24\xf2\x95\x51\x8a\xc7\x97\x4d\x26\xb6\x7a\xff\xef\xdf\ \xc4\xcd\x8e\x81\x3d\xa5\x47\x2b\x44\x03\x7f\x04\xec\x13\xdb\x64\ \x6d\x9a\xed\xa7\x8e\x33\x45\x62\xd7\x27\x9a\x32\xf6\xa5\x6c\x4e\ \x91\xdd\x8f\x9f\xed\xa8\xa2\xd1\xa8\xdd\x51\xb0\xd6\xf5\xd4\x68\ \xe4\x25\x79\xa9\x33\x77\x25\xfe\x45\x21\x0d\x56\x4f\xf3\xf5\x54\ \x34\xd3\xf3\x47\xf5\x21\x0c\x7d\x9e\x29\xb2\x25\xbd\xdd\xa0\x6a\ \x64\xcf\x73\x40\x32\x5a\xb3\x7d\x38\x43\x38\x8b\xc4\x80\xbf\x0a\ \xa7\xb8\x07\x6d\x99\xed\xd0\x47\xbd\xe4\xfc\xd1\x43\x8e\xfa\x4a\ \xeb\x67\x6e\xb2\xfb\xd1\x08\xaa\x5a\x3b\x16\x06\xd7\xf7\xf2\xe8\ \x28\x9b\x34\x3a\xa2\x6e\x02\x47\x43\x12\xa4\x40\xbf\xee\xfc\x51\ \xd8\x64\x8a\xfb\xf0\xc9\x43\x31\x4b\x73\x7b\xdd\x74\xe4\xba\x4d\ \x26\xc7\xe8\xcb\xdf\xe7\xfa\xbf\xca\xce\xdd\x55\xb2\xac\x0a\xe3\ \xbe\xea\x3c\x76\x75\xdd\xe6\xf6\xbd\xed\x5c\x54\x1a\xbb\x07\xc4\ \x99\x40\xc5\x69\x1d\x75\x50\x26\x52\x04\x15\x44\xc4\x89\xd4\x44\ \x06\xf1\x89\x18\x34\x46\x62\x20\x9a\x75\x64\x24\x18\x0a\xc2\x80\ \x99\x68\x26\x9a\x75\xa0\xe1\x04\x82\x30\xa1\x88\x7f\x83\x5d\xfb\ \x7c\xac\xc7\xf9\xed\x25\xed\xa9\x5b\x75\x1a\x3a\x59\xac\xbd\xd7\ \xf3\xf1\xad\x1d\x95\x4d\x2e\xc9\x22\x8b\x4f\x78\x5c\x49\xba\x8f\ \xe1\x14\xd0\x44\xc4\x71\x1e\x3e\x81\x9f\xb9\xbe\x7c\xfb\xf6\x69\ \x8e\x86\x49\x1c\x05\xd4\x57\x6b\x40\xf8\x8b\xb8\x79\xd6\xd7\x5e\ \xe1\x8f\x12\xd7\xf3\xc4\x4e\x57\xf1\x34\x8d\x8a\x5c\x76\x32\xe3\ \xec\x32\x14\xbe\xce\x9d\xc3\xc0\x6b\xda\x73\xa7\x63\x97\x4a\x3d\ \xd4\xf8\xa3\x41\x92\x14\x85\x96\x58\x15\x11\xc8\x79\x12\xa5\xf6\ \xc0\x84\xae\x69\xb0\x65\x3c\x77\x65\xc8\xd8\x52\x4e\x87\x1a\x7f\ \x94\xe1\xb2\x17\xc2\xe7\x84\x38\x3d\xc7\x51\x11\x14\x6e\x6d\x2e\ \x94\xa0\xae\xa2\xd6\x31\x8a\x08\xf3\xa6\x04\x44\xe6\x28\xf1\x47\ \x99\x80\xe0\x70\xbd\xde\xa9\xba\x9c\x79\xca\x93\x77\x28\xaa\xd5\ \x26\x99\x9c\xaf\x87\x10\xdf\x05\xc7\xb9\xc6\x1f\xa5\xc2\x67\xb0\ \x5c\xef\xaf\xcf\x1b\x65\x06\xb3\x96\x11\x15\xbd\x98\x61\xe5\x90\ \x35\x81\x08\x6b\xac\xf1\x5b\xc8\x3e\x68\x4d\x30\x8f\xdd\x4b\x62\ \x9d\xa5\x9c\xb1\x6e\x24\xd7\xa7\x6b\x9d\x58\xce\xd9\x82\xd2\x74\ \xf4\x27\x78\x79\xb5\xd2\x4f\x8b\x4d\xdd\x32\x71\x0e\x43\x7c\x64\ \xb4\x9c\x31\x6a\xe8\x91\xf2\x91\xd4\xe3\xe4\xfb\xc7\x19\x6a\x39\ \x1d\xce\x82\xbb\xad\x17\x75\x59\x45\x61\x38\xf0\xe0\x98\x9e\x8a\ \x98\x0f\x0b\x86\x6f\x6a\x8e\xa2\xbb\x5d\x74\xc6\xfc\xc3\x65\x98\ \x17\x30\x96\x5a\x5b\x09\x9a\x86\x45\xa5\xc8\xb4\x11\x31\x0c\xde\ \x01\x2c\xb5\x26\x54\x1c\xf5\xb3\x9f\x93\xd6\x8f\xdd\xc3\xa2\x71\ \xce\x87\xcf\xc7\x85\x29\xba\x79\xa2\x6e\x87\x88\xff\xff\x40\xcf\ \x92\xa1\xe2\xa4\x84\xdf\x1f\x0d\x87\x61\x2d\x57\xf2\x47\xf2\x1e\ \x04\x22\xba\x66\xf0\xf6\x24\x4d\x84\xa3\xa2\x7a\x82\x0d\x15\x47\ \x01\x43\x39\xe7\xe5\x5c\x40\xff\xc8\x92\x8f\x87\xe0\xed\xba\xa1\ \xcf\x06\x8f\x9c\xb0\x67\x85\x8f\xdb\x7f\x37\x32\x8f\x49\x8f\x8a\ \xd2\x61\xf7\xb0\xa2\x65\xc1\x64\x6e\xdc\xc5\xa0\x25\x70\x9c\x31\ \x72\x37\x1e\x65\x2b\xa6\x18\x6d\x67\x07\xcd\xa7\x1f\xfd\xdc\xa6\ \x1d\x9d\x4d\x74\xae\x46\x22\x60\xde\x00\x00\x11\x79\x9a\xe3\x25\ \xc6\x4c\xbe\xb8\x3e\x36\x3a\x52\x8d\xba\x7e\x1a\xe2\xe6\xad\xd6\ \x4a\x76\x7e\x75\xa9\x82\xa9\x27\x50\xaa\xfe\x65\x14\x8e\x13\x7a\ \x58\x0d\x6e\x01\x93\xc8\x34\xa1\xcf\x4d\x84\x36\xc5\xa8\xe6\x27\ \x39\x50\xfd\xe3\x6e\x73\x95\x7f\xc8\x60\xa9\xcc\x93\x10\x42\x8b\ \xeb\x3a\x66\xbd\x33\xa4\xab\x34\xa8\x9b\xd0\xd6\x49\xdd\xab\x51\ \x3f\xf6\xed\xcf\xfb\xf1\x2f\x28\x4b\x05\x84\x92\x18\x5b\x2d\x36\ \xa5\xcc\xd3\x84\x6a\xe6\xae\xa3\xbe\xcc\xb6\x87\x11\xf9\xbc\x04\ \xa2\x04\x66\x8a\x8f\xf1\x93\x9e\x67\xc3\xcd\xbb\x94\x5d\x2a\x3a\ \x33\x9b\x06\x04\x03\x30\x15\x12\x7a\xf2\x44\x8d\x9b\x75\x26\x9f\ \x20\x4a\x3a\xf6\xf8\x43\xf5\x94\x9e\x64\xe5\x2f\xf3\x26\x84\xd6\ \x8f\x5f\x93\x77\xda\x1c\x19\xb2\xa3\x4d\xa7\xcf\x11\x46\xfd\x45\ \x86\x22\x0a\xd5\x37\x07\x77\x37\xd5\xba\x0e\x89\x7c\x9c\xb9\xd3\ \xa3\x9b\xa9\x37\x2d\x67\x5b\x0c\xe5\x2d\xce\x2f\xc3\xd4\x8b\xbc\ \x3a\x0a\x2d\xb6\x04\xa7\x15\x3d\x9e\x2f\x41\x17\xbe\xff\x13\x5b\ \xf9\x88\x53\x03\x99\xcf\xbe\xa8\x43\x7d\x29\x4f\x92\x57\x49\x21\ \x41\x3a\x2a\xdd\x04\x33\x8f\x4d\x77\x2d\xaf\x91\x9a\x87\x70\x3a\ \x74\x9b\xf5\x74\xd2\xdc\x85\x1e\xca\xd2\x60\xbc\xbe\xc4\xc3\xd7\ \x0c\xa3\x87\xcc\xde\xdf\x1e\x81\xd1\x47\xbc\x74\x81\x0a\x35\x11\ \xf0\xb5\x5e\x7f\x12\x24\xca\x5e\xe5\xf4\x4d\xa8\x35\xc5\x99\x50\ \xfd\xf8\x48\x8b\x1a\xc7\xa7\x9c\x76\xf2\x08\x14\x04\x26\xb6\xba\ \xc5\x87\xb1\x47\x8c\x47\x3c\x7c\xd9\x79\xf3\x9d\x30\x28\x64\x18\ \xde\x6d\xca\x30\x25\x04\x01\x91\x83\xbf\xae\x69\x2c\xd8\xee\x69\ \xa2\x92\x63\xeb\x35\x1e\xfe\x25\x86\xc1\xa5\xa5\xb2\xa1\x6f\x3e\ \x1c\x98\x57\x73\x65\xf4\x7e\x63\xa8\x11\x49\xc7\x99\x00\x10\x22\ \x35\xe9\xd3\x9b\x72\xe3\x95\xd0\x15\x2e\x15\x33\x61\x67\x64\xb3\ \xa5\x67\x50\xf8\x21\x06\xa5\x97\x87\x64\x9e\xf4\x14\x00\x55\xe0\ \x3a\x0d\xf1\xf0\xf3\x9c\x10\xb6\x09\xb5\x16\x6f\x69\x23\xfa\xb0\ \x52\xf8\x1a\xbc\xc2\x93\x72\xf8\x2c\x89\xd9\x35\xa5\x65\x2a\xba\ \x08\xb9\x55\x64\xd2\x37\x0a\x52\xf6\x48\x17\xc7\x7b\x5a\x85\xf7\ \x04\xe3\x74\x91\x6d\x3e\xcf\x7e\x68\x3f\x6f\xd0\x9b\x67\x5a\x14\ \xa5\xbb\x84\xa1\x34\x4d\xb8\xa3\xf9\xf8\x97\x0a\xef\x49\xb2\x24\ \x62\xc7\xb5\xd0\xb1\x1e\x55\x1a\x17\x35\x11\x6f\xd5\x70\x1a\x13\ \xdc\x7c\x9b\xc1\xd1\x12\xef\x49\xc4\x65\x04\x2d\xc2\x94\xf8\x1f\ \x8d\x28\xb3\x8e\x8c\xeb\xb1\x46\xcc\x91\x32\xe7\x12\xda\xd1\x7f\ \x28\xf7\xb1\x7a\xc7\xbc\x38\xd5\x68\x8d\x58\x20\x62\x71\xf0\x36\ \x0c\x2c\xf4\x97\xf0\xb8\xac\x1b\xb5\xdc\x7b\xc3\x12\x23\x61\xfb\ \x81\x3f\x59\xe0\xe1\xcf\x73\x59\xb2\x8d\x14\x37\x61\x2c\x60\x5b\ \xa8\xb3\xb4\xae\x83\xba\x81\x22\x92\x8e\xe7\x9d\x89\x91\x4b\x76\ \xe6\x0b\x90\x59\x6a\x7c\xa5\xef\xec\xed\x0f\x32\xfb\x9c\xaf\xf7\ \x2a\x23\x59\xea\x5a\x34\x52\x59\x03\x53\x01\x26\x37\x90\x9a\xa4\ \x9e\xab\x25\x44\x62\xfc\x5b\x4d\x96\x52\xd3\x93\x47\xcc\x3c\x78\ \x46\x4d\x37\xaa\x2e\xb3\x6a\x0b\xa1\x37\xb1\x57\x5a\xa7\xd1\x36\ \x89\xa3\x7e\xfa\xc0\x20\x4c\x29\x47\x64\x47\x51\x0e\xaf\xd1\x89\ \xdc\x75\x66\x70\x27\x69\x0f\x80\x3f\x9d\xa3\x96\x21\x5d\x7c\x5e\ \x3d\x2e\x3b\x5b\x17\xc0\xcc\x77\x22\x89\x36\x8e\x06\x2d\x10\x5a\ \x44\x23\xde\x5b\xc0\xfd\x4c\x21\x56\x86\xb5\x77\xa1\xe7\xe8\x3a\ \x8a\xb6\x94\x28\x7d\xa8\x9e\x4e\xf5\x72\x89\xac\x9f\xb8\x39\x50\ \x93\x81\x53\x26\x72\x75\x8b\xd4\xe2\x9c\xfd\x21\xa5\x74\x10\x2b\ \x9b\x2c\x11\x28\x15\xdb\x2d\x3d\x58\x22\x7e\x96\xee\x67\xb4\xa2\ \x63\xd8\xbc\x18\x82\x72\x43\xb0\x2b\x7c\xe3\x25\x3d\x52\x7b\x71\ \x7f\x3d\x05\x49\x92\x14\x48\xc5\x5a\x53\x28\x7c\xc4\x4c\x5c\xcf\ \x74\x10\x53\x9d\x54\xaa\x52\x5a\x7b\x9a\x50\xc2\xbc\x65\xae\x36\ \xf7\x9e\x68\xea\x33\x82\x52\x86\xd2\x71\xb4\x4c\x2e\xe4\x83\x83\ \x3f\xdc\x82\x91\xf1\xf0\x75\xea\x65\xf3\x4b\xd3\x07\x4b\x9a\xe8\ \x94\x64\x2b\xba\xa6\xdc\x83\x9b\xf9\x25\xd2\x19\x22\x65\x7a\x7b\ \x63\x6c\xe4\x44\x21\xed\x68\xab\xf1\xf0\x93\xc6\x27\x04\x44\x94\ \x79\x56\xc3\x76\x8d\xae\xc0\xcd\x3b\xf1\xd4\x1d\x22\x37\x05\x76\ \x93\x4e\xde\x62\xa7\xd1\x52\x3e\xa7\xaf\x9b\x2a\x7a\xf7\x7e\xec\ \x20\x57\x7a\xb4\xde\x7d\xc3\xdc\xd3\xd1\xd4\x28\x21\x6a\x6a\x2c\ \x9d\x33\x71\xb1\x72\x4b\xae\x8a\xa1\xd8\x64\xfd\x36\xe7\xa8\x7d\ \x50\xb4\x45\x24\x62\xd2\x0f\x8e\xb6\x04\xef\x98\x1b\x9f\x44\x9f\ \x23\xd2\x29\xf5\xc8\x45\x9c\xe2\x2a\xf3\x8d\x75\x83\x16\x92\xa3\ \x49\xec\x47\xf9\xf1\xe0\x2e\x03\x13\x5d\x12\xbf\xae\x4b\x81\x91\ \xea\xae\x5e\x11\x35\x45\x97\x84\x96\xc9\x1c\xd2\xa8\xe8\xf3\x1d\ \xa5\x8a\x02\x7a\xfb\xe2\xc4\xea\xdb\x92\xad\xbf\xb0\x9a\x48\xb1\ \xd5\x96\x7b\x4d\x89\x87\x4f\xc1\xf7\xdc\x63\x34\xf2\xa2\x52\x31\ \x13\x8f\x5d\x2f\xe6\xf3\x12\xb5\xb1\xe7\x2d\xb5\x3d\x39\x95\xe3\ \x94\x0e\xd4\x68\x60\xed\x11\x71\x3d\xe0\xfd\x26\x64\x20\xf4\xb2\ \x95\x91\x74\x49\xa3\xa5\x5f\x90\xc5\xa7\xe8\x1b\x1e\x3e\xc5\x09\ \xc2\xa4\xaf\x3b\x25\x4a\x91\x45\xa7\xc4\x39\xba\x3a\x86\x33\x61\ \xbc\xb1\xcd\x1a\x71\x3d\xa4\x89\x24\x46\x90\x5c\xa2\xa5\xb6\x94\ \xd2\x11\x91\xd0\xa5\xbe\x71\x9d\x5b\x9a\x9c\xa3\x34\xf3\xbc\x9f\ \x84\x4c\x4c\xdd\xe3\xfa\xc6\x48\x44\x1b\xac\x0d\xdd\x4f\x25\x26\ \x63\xa8\x5b\x4f\x47\xcd\x23\x7c\x7b\x56\x4d\x14\xa8\xa4\x50\xfd\ \x61\x75\x99\x78\xf8\xd5\x96\xe0\xfe\x07\x27\x2f\x06\x77\x63\x2b\ \x9a\x6a\x22\x5c\x69\x6b\xf2\x34\xdc\xb6\x0e\xb7\x84\xce\x3d\x43\ \x12\xd9\xa5\x28\xf7\xdc\x67\xdc\x82\x28\x65\xfd\xc4\xd0\x2e\x6d\ \xb8\xd4\x2f\x12\x10\x84\xc2\x07\xa5\xb2\xed\x0d\xbb\xac\x27\xb2\ \x74\xd1\x6f\x10\x7a\x56\x6d\x4d\xe9\xb3\x7c\x03\x13\x5a\xf9\xa3\ \xfa\x83\x59\x72\x34\xba\x9c\x18\xf7\x44\x6e\x0c\xf1\xea\x26\xc2\ \x48\x2d\xb6\x09\xf5\x2f\x9e\x21\xfa\x68\x59\x5f\x6e\xc1\x32\x59\ \x85\xd1\xde\x2b\x6a\xa1\x0d\x2b\x1b\xcc\x86\x9a\x19\x85\x7a\x02\ \x33\xb9\x8b\x11\x6d\xae\x26\xf5\x99\xad\xcd\x5c\xbe\x69\xce\x9d\ \x0f\xab\x1d\xfc\x28\x35\x0e\xd3\x44\xe3\xa9\x37\xf3\x79\x1c\xbb\ \x4a\x10\xa4\xf4\x9e\x24\x4c\xc6\x49\x6a\x51\xe3\x69\x94\xaa\x8b\ \x24\x52\xce\x55\xda\xa6\x02\xce\xf7\x08\x5c\x4f\x80\xd4\xd0\x1f\ \x4d\xe4\xce\x11\xf6\xa5\x39\x81\x65\xbd\x56\xa2\x24\xc6\xc2\xcb\ \x63\xf6\x49\x7a\x14\x93\xcb\xc1\xc9\x23\x47\x13\x9d\x1e\x2d\x4f\ \x86\xa7\xb2\xae\xa6\xfa\x09\xdd\x0e\x41\x42\x74\x07\x7e\x16\x99\ \x12\x20\x92\x51\x9e\x1c\x1f\x95\x81\xbd\xfa\x5e\x1c\x83\x90\x86\ \xc9\x55\x54\x08\x9a\x19\x37\x81\xd2\x4a\x3d\x1d\x4b\x7f\xd4\x02\ \x66\x38\x4f\xab\xfe\x42\xe7\x4b\x63\xc5\x16\x23\x18\x00\x6f\xf7\ \x10\x94\x47\x7f\x2b\x49\x92\x91\x6a\x32\x6f\x21\x48\xf4\x9e\xf4\ \x71\xc8\x1f\xc7\xf6\x34\xc1\x87\x36\xc5\x8a\x9e\x65\xc8\x4c\xe6\ \x9e\xf2\x25\x35\x32\x4b\x7f\xd4\x93\x0f\x8c\xee\x44\x69\xd8\x61\ \x0e\x43\x8f\xbd\xf0\x7a\x11\x18\x9d\x52\x3f\x3a\xfb\xca\x1f\xd5\ \x91\xfb\x6f\x7a\x24\x48\x1e\x8c\x30\xa6\x4f\xf5\xda\x05\xf9\x66\ \xb0\x12\xe5\x9b\xa1\x22\x75\x60\x15\xab\xdd\xe8\xdf\xc4\xa1\x74\ \x86\x46\xef\x7e\xcd\xc2\x94\xd4\x3d\x15\x3e\xb1\xe6\x2f\x2a\xa7\ \x64\x06\xde\x53\x1a\x66\x9b\xe2\xc2\xc8\xe4\x3b\x2f\x46\xa9\x40\ \x1d\x45\xab\x9f\x3f\x23\xbc\xe0\xe6\x61\xe7\x36\x1e\x6c\x35\xd5\ \x17\xc5\x9b\x48\x2c\xfd\x51\xdf\x6b\xea\x61\x93\xaa\x77\x2b\x89\ \xcc\xb7\x94\x69\x47\x90\x4a\x30\x5f\x17\x27\x16\x6e\x25\xf4\x42\ \x4f\xcb\x3a\x74\xb6\xd5\x5c\xd9\x36\xb5\xe2\x92\xa6\x2c\x3e\x59\ \x5a\xb4\x13\x55\x0b\xf9\x98\xc9\x75\xc9\x97\xec\x4f\x33\x90\xe6\ \xf3\x76\x89\x62\x8a\x11\xd9\xbc\x68\xe9\xf5\x2e\x3d\x7c\x96\x99\ \xce\x5f\x3a\xf7\x41\x98\xd8\xeb\x28\x41\xd2\x0b\x2b\x1b\xf4\x66\ \xad\xc1\x45\x49\xe7\x4e\x0f\xbf\x1a\x63\xac\x23\x11\x3f\xfa\xcd\ \xe7\x33\x5e\xea\x92\x6e\xe5\xfa\x35\x44\xcb\x2c\x85\x22\x2f\x5e\ \x57\x1a\x7c\x6c\x9d\xe5\x50\x3a\x7a\x4e\x9e\xd7\xee\x82\xd0\x7b\ \x76\x4c\xf5\x06\x81\x4d\xaf\x68\x22\x14\x3f\x99\x1c\x4f\xa5\x86\ \xba\x68\x9b\x75\xbd\xe7\xf3\x79\xf4\x22\xb9\x70\x48\x3d\xe1\xbc\ \x9e\xbf\xc5\x66\xae\xc3\x41\x54\x82\xa9\xa5\x30\x9d\xb0\xd3\xd6\ \x19\x0a\x15\x15\xf1\xf0\x27\x75\xea\xa4\x4c\x49\x8e\x41\x1b\x05\ \xa9\x0f\x33\xd9\x34\x38\x69\xd4\x67\x34\x78\x05\xb1\x17\x43\xe3\ \xb1\x1f\xa3\x51\x8a\x51\xe8\x20\x08\x8d\x6d\x2f\x8d\x93\x0d\xa2\ \xf6\x4c\x2c\x2d\xbd\xf2\xf8\x6c\xd0\xaa\x27\x6d\xed\x86\x0e\x02\ \xe6\x14\x87\x92\xcc\x58\xc4\xb1\x1e\x67\x9b\x0c\x73\xd9\xdf\xc6\ \x31\xe0\xdf\xfb\x30\x9b\xd7\xc3\x6e\x1c\x14\x9d\xbe\x68\x65\x9b\ \xb0\x5a\xc0\x49\x15\x71\xbe\x77\x7b\xcd\x2b\x8f\xf2\xf0\x4d\x3f\ \xfd\x83\x28\x65\x0e\xaa\xb0\x4c\xd8\xd5\x21\x99\x02\x3b\xfd\x2d\ \x8b\x0f\x79\xf2\x15\xeb\xab\x46\x2e\xe9\xe3\x4b\x8a\x80\x01\xe1\ \xe3\xab\x85\x9b\x77\x0b\xf5\x7a\x54\xc4\x9c\xd6\xa0\xa4\x72\xfb\ \x70\x6c\x75\xd3\xec\x32\x5c\x3d\xcd\xb1\x99\x65\x2a\x7a\x09\x19\ \x38\x11\x52\x83\x1d\x4f\xd4\xf7\xda\x86\xc0\x1c\xbe\xf5\xe6\x89\ \xab\x1a\x6a\xa1\x40\xe9\xb3\x1b\x07\x4f\x43\xeb\x4c\x8d\x9b\x38\ \x89\x40\xd1\xaa\x1f\xe6\x49\x3c\x18\x41\x12\xd7\x24\x49\x13\xc1\ \x99\x42\xed\xe4\xca\x90\x2a\xf5\xd2\x6d\x36\x63\x9f\xea\x7a\x3d\ \x7b\x5f\x5a\x0c\xed\xf4\xda\x69\x52\x41\x40\xf4\x4f\xc6\x1a\x8f\ \x75\x50\x09\x16\x32\x64\x91\x4e\x17\x7d\xa6\xf2\xf6\xd9\xa7\xf4\ \xf8\xb9\x5b\xd1\x36\x64\xc9\xd4\xee\xa6\x1d\xac\xc2\xc5\xe7\xb9\ \xdb\x86\x43\x56\x6d\x77\x6d\xce\x8c\x42\x8b\xd1\xe5\x0c\xfb\x63\ \x42\x64\xed\x99\xad\x71\x93\x94\xfa\x07\xd3\xd9\xb3\xda\x20\xcd\ \xb4\x8c\x43\xbb\xa2\xdb\xf1\x04\x41\xaa\xc6\x05\x4c\xf6\x7d\x28\ \x10\x60\x00\x5e\x14\x03\x99\xd6\xf9\x10\x91\x2a\xb8\xdf\x70\x98\ \x20\xad\xca\x4c\xac\x89\xb5\x9c\x20\x55\x97\x3b\xd5\x93\xad\xeb\ \x00\x44\x0d\x3c\x67\xf8\x4e\xc1\x84\xb2\x55\xa3\xc6\x4e\x63\x3f\ \x11\xb7\x48\xcd\xbb\x59\xf0\x08\x02\x20\x40\x15\x0c\x07\x1a\x6f\ \x19\x34\xf1\xe1\x28\x1b\xf3\xa3\x76\x4f\xb3\x7a\x82\xd4\xcf\xc9\ \x2a\x25\x52\xa5\x45\x25\x46\xae\xeb\xdd\x92\xee\xc5\x89\x4f\x9d\ \xc3\xc7\x0d\x8d\xa4\xb2\x37\x8f\x26\xb4\x3f\xdb\x2b\xf2\x53\x13\ \xd6\x46\x24\xe0\xfd\x4a\x9e\xf2\xe8\x47\xc0\x89\xb9\x83\x30\xf5\ \x0e\xa7\x47\x11\xa8\xb1\xd4\x00\x6a\x56\x27\xd5\xc0\x69\x96\x0b\ \xec\x0b\x85\x13\x5a\xdb\xfa\x5c\x0a\x8d\xfe\xfd\xd1\xbb\x5c\x27\ \xf3\x47\x0d\xbc\x3f\x77\xbc\xad\xc6\xd3\x65\xd1\xaf\x6f\x42\xe8\ \x72\xa4\x3d\xb1\x0b\x36\x2f\xd7\xc7\x2f\x37\x8f\x0f\xc1\x3f\x7c\ \xf2\xca\x8e\x1e\xae\x93\x64\x5e\xd0\x44\x4e\xa5\x33\xd4\x4c\xa8\ \xbc\xfc\xe4\x93\xa2\x7f\xb4\xb8\xa3\x73\xc2\xf8\x42\x72\xdc\xe6\ \x42\xd3\xa9\xcf\xee\x8b\x3a\xa9\x01\x4c\x67\x7f\x4b\xc3\x28\x23\ \x9e\xaa\x12\x7a\x83\xf2\x0d\xba\x74\x8a\x42\x93\xb2\x8f\xec\xd4\ \xf9\xca\x8f\x1e\x3f\x7e\xed\xe5\xc5\xe4\x9e\xc0\x79\x0a\x96\x0c\ \x2b\x13\xe9\xd1\x82\xa3\xa2\xf1\x64\x14\x02\x45\x89\x88\x3a\xa2\ \x90\x64\xb6\x07\x1d\x48\xf5\xd1\x9f\x24\xf9\x62\xab\x29\xd1\xdf\ \xfc\xed\x87\x2f\xba\x72\x02\x53\x73\xb5\x9e\x43\xd6\x05\x4a\x09\ \x98\x69\xce\xa8\xc5\xf5\x70\xf5\x5e\x14\xe0\xca\xbb\x9a\xa1\xbe\ \xf8\xe1\x3f\xf8\xf1\xd3\xff\x7d\xf4\x6f\x07\xad\x40\xc6\xb9\x9e\ \x5f\x16\xaa\x06\xac\x28\x3c\x27\x27\x36\x2e\x0a\x86\xa1\xff\x9d\ \x10\x47\x9f\xff\x96\xd8\x19\x19\xfa\x5a\xc7\x8c\xf9\xe4\x6d\xf9\ \xf5\x00\x2d\x28\xc6\x05\x6e\x52\xe5\xee\x84\x0e\xfc\xed\x27\x68\ \x52\x21\xb7\xeb\x82\x86\x40\x24\x12\xfb\xdb\x77\xfc\xe5\xf9\x8e\ \xe8\x79\x5c\x44\xa9\xcb\xfd\x57\x3b\xa1\xef\xbf\x5a\xcd\x75\x46\ \x02\xdf\xff\x51\x78\xf8\x3c\x7a\x9c\xbc\x0f\xb3\xa5\xde\x3c\x5f\ \xd7\xd1\xbf\xeb\x74\xfc\xc2\x73\x1d\xbb\x28\xa0\x92\xe9\x79\x72\ \xc6\xb7\x79\x8a\x09\xd8\xb6\x0d\xac\x66\xf1\x79\x49\x41\x27\x51\ \x35\xd8\x89\x8f\xd5\x5c\x76\x49\x5b\x7e\x0c\x90\xec\x8c\x53\xfa\ \xbe\x2b\xc5\x4c\x6b\x90\xa5\x37\xef\xde\x7b\xf4\xdd\x87\xb7\xb5\ \x4b\x8c\x7e\x5e\x8c\x9a\xa0\x9f\xf6\x64\x9a\xa4\x0f\xbc\x92\xb6\ \x6f\xc8\xf5\x70\x39\x56\x70\x3a\xba\xde\x4f\xe6\x81\x0d\x7d\xfd\ \x9d\x1f\xbb\xba\xdc\x36\xb0\xe6\x98\x9e\x25\xc6\x91\x7a\x2a\xba\ \x35\x8c\xe4\xfe\xab\x73\x9f\x82\x9b\x87\xbd\x37\x42\xcf\xba\xdf\ \x11\xe3\x4f\xe2\x68\x76\xf2\x0e\x86\x3d\x5a\x0e\x36\x80\x4e\xe4\ \xf0\x2f\x6d\xa7\xed\xf9\xa5\xb1\xab\xfd\x74\xfd\x3c\xc7\xe9\x1b\ \x75\x13\x19\xa9\x1b\x94\xca\xe7\xcf\xb8\xa4\x77\x88\x9b\x27\x90\ \x54\x3d\x02\x9e\xad\xf3\xa3\x8c\x99\x9c\x58\x11\xa9\x55\x77\x9a\ \x0d\x3c\xb2\x73\x78\x9a\x94\xca\xcb\x11\x93\xf2\xb9\x67\x2c\xf9\ \x17\xae\xbb\xce\xdf\x91\xd9\xa9\x14\xa9\x22\x16\x4c\x35\x05\x55\ \x97\xc1\x6d\x7f\xbd\x45\x4e\xd8\x10\xac\xbf\xa6\x2b\xd0\x59\xeb\ \xc4\xca\x73\xfa\xec\x59\x0d\xbd\x35\xeb\xe0\xa3\xbd\x17\xa9\x4e\ \x27\x2b\xb6\x64\x29\xfd\x51\x51\x3a\x1b\xb1\x45\xb8\xec\xdb\x57\ \x9d\xa3\x71\xc0\xbe\x43\x40\x7e\xfb\x24\x9d\x5f\x70\x54\x6b\x82\ \x29\xf3\xec\xcb\x24\x62\x81\x4f\x36\x14\xb9\x71\xff\xb3\x70\x39\ \x5d\x52\xb9\xcd\xbf\xef\x26\xe8\xf1\x2f\x37\x56\xda\x82\x01\xad\ \x67\x7a\x72\xff\xfc\xda\xc8\x04\x8e\x52\xe9\x3d\x23\x7d\x5f\x86\ \xcb\x2d\x2a\x7b\xe7\xaa\xb3\xd4\xe5\xfe\x4d\x21\xc1\xfd\x63\x52\ \x30\x62\xa4\x3e\xf9\xd5\xe3\xe7\xee\xfd\xf9\xf2\xec\x40\x77\x3a\ \xd9\xe5\x5a\x4e\x36\x88\xa5\xd5\x76\x26\x90\x1a\x15\x29\x82\x26\ \xa9\xfc\x37\x3e\xb7\x39\x27\x9f\xba\xb3\x4b\x92\x3c\xe9\xf0\xc9\ \xd7\x67\x42\x75\xfa\x50\xf9\x7e\xf0\xd9\xe5\xbb\x55\x8e\x30\xa2\ \x5d\x83\x86\x69\x6a\x50\x4e\xdb\x35\x7d\xf0\x68\xc3\xf0\xbe\x8a\ \x8e\xde\xd9\xcf\xeb\xbb\x3c\xae\x57\x41\xcf\x16\xf9\xd1\xa1\x71\ \x62\xc7\x5b\x6e\x2c\x61\x58\x1f\xb2\xb9\x54\x4e\xda\x6d\x78\xff\ \x6c\xd6\x3f\xfe\xd1\xeb\x5b\xb9\x72\xd7\x57\x06\xde\xfd\xfe\x55\ \xc0\xc3\x87\x19\xad\xb2\x4f\xb0\x4a\x44\x6e\xcf\xb4\xb6\xd0\x9f\ \x83\x2b\xaa\xa4\x78\xeb\xdb\x10\xde\xba\x9a\xbb\xca\x0f\xd2\xf4\ \x9d\x8e\x5d\x7b\x5b\x10\xde\x05\x9a\x4a\x91\x1f\x25\x84\x56\x74\ \xf6\x98\xc3\x4d\x3b\xf6\x5d\xea\x57\x31\x75\x3b\xfe\xb7\x77\x42\ \x8f\x4e\xa6\x48\xfd\x57\x87\xf4\x3f\x9e\x69\xce\x33\x62\x7a\xa1\ \x0e\x5a\x83\x50\xce\x9e\x2c\x2b\x0a\x62\x7e\xf4\x91\xa5\x0e\x01\ \x71\xbe\x96\xaf\x6f\xe6\x5e\xc6\xde\x95\xfd\xd9\x14\xfc\xf5\xba\ \x53\x67\xe1\x1d\x2a\x23\xbe\xc6\x1c\x60\x15\xd1\xdc\xcf\x97\x12\ \x25\xe4\x1d\xf3\x2a\x63\x53\xa2\x7e\xf4\x61\x8d\xd4\x06\xa6\x2b\ \xf8\x34\x27\xf5\xef\xe7\x45\xc5\x57\xb6\xbf\xbe\x68\x28\xe1\x15\ \xe5\x1d\xe5\x16\x0c\xc2\xd4\xe4\xfd\xf5\xce\x50\x1d\x7d\x5b\xe5\ \x93\x7e\xed\x5a\x25\x46\x0f\x95\xcf\x8b\xc1\x7e\x7e\x5b\x10\xa4\ \x16\x86\x64\xe7\xbe\x94\xfa\xec\x95\xd8\xfe\x7a\xd1\x28\x6a\xeb\ \xfd\xf5\x59\xdb\x0b\x4f\xa7\x9b\xfb\x7b\x2f\x4d\x39\x41\xda\xf7\ \x59\xde\xbd\x3e\x3a\xa8\x0a\xfd\xe6\x90\x1f\xad\x11\x5d\xad\xb4\ \xb8\xed\xb5\x65\x21\xbc\xa5\x38\x94\xfd\x59\x0e\x3a\xfc\x47\xbf\ \xa4\xcb\xea\x0a\xff\xe9\xde\x89\x0f\x5c\xb7\x8d\xcc\x03\xda\x32\ \x55\xb1\xf7\x4b\x4a\x24\x42\x7f\x72\x60\x8f\x26\x42\xee\xaf\x0f\ \xcd\xd8\x01\xa1\x46\x97\x74\xd9\x59\xd0\x57\xcf\xdb\x3e\xcc\x27\ \x59\x08\xa8\x52\xcf\xdf\x88\x4a\x0c\x0d\x14\x30\x4a\xd8\x5f\x4f\ \xb8\xc4\xad\xd9\xf5\x67\x7d\x33\xe9\xbe\x17\xff\xd5\x4d\x8b\xca\ \x85\xaa\x0a\x38\x2c\x2f\x4b\x98\x88\xf4\x95\xb1\xde\x9c\xa5\xd8\ \x5f\x9f\xf7\x19\x7b\x6b\x73\xfb\x62\xdf\xd4\xb3\xbb\xa4\xcb\xfd\ \x9f\xbe\x72\x3d\x8b\xc8\x43\x17\x7d\xd8\xa4\x7a\xe6\x0e\xf1\x92\ \x1f\x3d\x19\x8a\xfd\xf5\xc0\xa0\x54\x26\xf7\xcb\x7d\x63\xd4\x24\ \x2c\x25\x4f\xe3\x9e\x8e\x9b\x3f\xea\xd0\xd8\x34\xa0\xb5\x7a\xc2\ \x25\x1d\x2e\x62\x8c\x66\x74\x32\xf3\x34\x65\x85\xbf\xa1\x67\xbd\ \xdc\xf7\xb1\x7d\xe3\x13\x93\xc8\x0c\xb3\x96\xf2\x9b\xe5\x90\x70\ \xc2\x1e\x57\xd4\x38\x0a\xa0\x0a\x27\x96\x52\x2f\x65\xaf\x37\xe2\ \x7a\x81\x7d\xb5\x17\xde\xbb\x39\x4f\xec\x26\x32\xf7\x7e\x39\x14\ \x08\x10\xfe\xad\x27\x1b\xc8\x54\x91\xea\xd9\x66\xdb\x5f\xcf\xb8\ \xde\x37\xc5\x3e\xe8\xa0\xbf\x1f\x7c\x78\xb2\x46\x52\x2f\x37\x78\ \x1c\xd2\xcf\x7e\x21\xe0\x74\x51\xaf\xd7\x4a\x99\xb2\x5e\xaf\xdf\ \x96\xf2\xa3\x64\xa8\x88\xdc\x08\x5d\x9e\xee\xdd\xbd\xfb\x9e\x87\ \x77\xf6\x33\x2d\x87\x0b\x0b\x99\x95\x2e\xa1\x83\x57\x21\xa8\xd1\ \xbb\x77\x79\x2a\xbb\xde\x9a\x2d\x8d\xcc\xf4\x1a\xee\xc7\x1b\x1f\ \x79\xe5\xa5\xab\x93\xcd\xb0\xe6\xda\x9d\x09\x13\x8c\x68\xbc\xa8\ \xe0\x28\x53\x25\xe8\x7d\x81\x9f\x97\x5b\xf3\xe6\xec\x3a\x6f\x95\ \xdb\x69\xb6\x3e\x67\x3e\x5a\x7b\x84\xe6\xf6\xac\xed\x19\xd7\x57\ \x68\x4f\xe8\x78\xd3\xd1\x63\x44\x2c\x59\xfb\xb8\xc0\x5a\xe5\x70\ \xcc\x09\x6d\x17\x94\xaa\x09\xa1\x1d\xd4\x13\xbd\xd1\xf3\x0b\xf5\ \xfa\xc9\xea\xf5\xc3\xb8\x49\x97\x74\xe9\x6f\x2b\x80\x4b\x91\xaa\ \x06\x2a\x3b\xdf\xdf\x1e\xdc\xb1\x7f\x94\x8d\xae\x27\x48\x3c\x56\ \xdf\x8c\xb3\xf8\x7a\xed\xa2\x7a\x81\x50\x12\xa4\xc4\x9b\xb1\xad\ \x51\x0b\xde\x3d\xfa\x47\x11\xd7\xbb\x22\xd5\x9b\x30\x10\xaa\xd1\ \xbb\xcc\x03\xaf\x42\xca\x29\xf6\x93\x8d\xc8\x5c\xa4\x97\x3a\x8f\ \x2b\xe4\x61\xde\x51\x1f\x0a\x4d\x34\x8a\xaf\x7c\x9a\xb3\x73\x10\ \xd3\x37\x6c\xd8\xef\xa6\x3f\xe3\x64\x02\x94\x0a\x53\x8c\xbb\x7a\ \xfd\x8d\x7a\xf3\x28\x4e\xf2\x45\x3a\xd1\x28\x34\x58\x06\xdf\xc4\ \x29\x7b\xf8\x19\xef\x29\xc6\x4c\x89\x60\xb4\xe1\x47\xc7\x84\x92\ \xcf\x04\xae\x11\xeb\x1b\x04\x81\x9b\x67\x4e\x49\xd1\x3f\x2a\x86\ \xb6\x90\x20\x65\x87\xd6\x52\xb0\x74\x1c\x86\x9e\x50\xbd\x71\x45\ \x0f\xa7\xc4\x4d\xe9\xe4\x0e\x7e\x1e\x10\xd2\x4b\xd8\xfd\xfd\xe3\ \x34\x9a\x30\xd9\xe1\x8f\xd3\x8e\xa0\x53\x1c\x2d\xea\xf5\x43\xa7\ \x44\x31\x9d\xcf\xd7\x4f\xec\x1f\x8d\xa8\x64\xae\x47\xe3\x40\x4b\ \x48\x8b\x2f\x35\x92\xf3\x2e\x5c\x3e\x0d\xc1\x89\x52\xc0\x4c\x4c\ \x32\xd9\x4e\xf0\xb4\x13\x9a\x67\xc4\x78\xf4\xe5\x8c\x98\x0e\xbe\ \x1c\xc1\x18\x91\x59\x78\xa4\x56\x06\xf7\xfd\xf5\x6c\xcc\x14\xa9\ \x00\x9c\xde\xcd\x88\x1d\x46\xb4\xa6\x81\xa6\x1a\x5a\xc1\x13\x79\ \x9c\x67\x9a\xbc\x56\x1b\x00\xc9\x26\x00\x2b\x44\xa9\x4f\x11\x93\ \x84\x88\x50\xa9\xc4\x72\x05\x3f\xb1\xc4\x3c\xdf\xd4\xc2\x2e\xb9\ \x63\x92\x39\x2a\xe2\xd4\x51\x26\xb6\x8a\xd6\x74\x45\x87\x20\x84\ \x2e\xf8\xcf\x84\xa5\x43\xa4\x27\x24\x20\x4c\x8a\xe6\x56\xf7\x8f\ \xb6\x15\xe3\x02\xd4\xa2\xba\xa8\x98\x62\x24\x4f\x7d\xb1\x29\x45\ \x89\x71\x7d\x8b\x80\x9e\x04\xcd\x0b\xe0\xf2\xba\x02\x9c\x0a\x15\ \x1e\xba\x1c\xe7\x71\x11\x3c\x4e\x5f\x71\x55\x6c\x76\x44\xeb\xdd\ \x22\x2d\xc3\x29\x0d\x31\x33\xc3\xdc\x95\xaa\x77\xf4\x47\x47\x46\ \xd4\xef\x67\x51\xb9\xf3\xb3\xa7\x61\xd2\x27\xb1\xd5\xef\xa8\x53\ \xba\xa4\xaf\x9c\x27\xb1\x14\xfe\x68\x36\x9f\x85\x22\x65\x92\x0c\ \x91\x08\x2c\x53\xc2\xcd\xf3\x3b\x9a\x06\x6d\xd9\x3f\xba\xec\xfb\ \xb1\x13\x0a\xa1\x42\x26\xf8\xa3\xe5\xaa\x58\x1a\x26\x23\x15\xfe\ \x68\x86\x4e\x6b\x2d\x61\x2b\x2c\xa1\x7f\xd4\xf9\xe9\x98\x64\x19\ \xfe\x45\x49\x12\xfa\xa3\x59\x3b\x5d\x40\x3d\x39\xb1\x28\x8b\x50\ \x43\x21\x57\x82\xfe\x51\x71\xd6\xb9\x19\x7d\xbc\x94\x1f\x5d\xea\ \xfe\xd1\x0b\xa8\xa7\x2a\xa8\xd7\xf1\xc7\x00\x14\xf5\x30\x59\xfb\ \x0c\xfe\xe1\xa3\xe0\xfa\xb8\xd8\x67\x8c\x37\x50\xc9\xfc\x28\xd1\ \x32\x59\xc0\x01\x3f\x89\xea\x49\x50\x32\xfd\x09\x3a\x8d\x8f\x1b\ \x27\xce\xdc\xb9\x09\xc5\xe3\xf3\xab\x1c\x06\x67\x18\xea\xb8\x79\ \xfa\x62\x67\xc3\x1a\x9e\x86\x56\xb2\x43\x46\x4a\xa5\x9f\x57\x3f\ \x5e\x6a\xe0\xba\x0e\x76\x67\x05\xdc\x3c\x22\x78\x63\x81\x5c\x08\ \x41\x45\xa5\xda\x34\xf4\x41\xc8\x4c\x05\x5a\x17\x6d\xe9\x98\x88\ \x64\x8e\xb2\xc9\xbf\x07\x47\x8d\x54\x6a\xa7\xc3\x12\xd6\x70\x16\ \x3e\x7e\xf1\x70\xa3\x2d\x87\x03\x79\x47\xcd\x86\x4e\xe1\x9b\x39\ \xba\xed\x0c\x15\x4b\x39\xd6\x50\x68\x7b\xf0\x14\x63\x42\x99\x4e\ \x68\x7c\xb1\x52\x62\xef\x74\x22\x8b\xbb\x8a\x52\x55\x6e\x30\xdd\ \xb0\x1b\x0c\x1d\xfa\xce\xd5\xd1\x0f\x4c\x93\x28\x06\xad\x31\x49\ \x36\x8f\x51\x9c\x5d\x94\x56\xd8\x50\x15\x16\xb1\xa3\xc7\x98\x09\ \x93\xf4\xac\xc0\xfd\x3c\x7d\x29\x51\x8e\x83\x77\x2a\x9d\xa3\xb6\ \xf4\x88\xa0\x1a\xfe\xa1\xbe\x2f\x39\xfa\x5f\xc1\x2a\xd8\xa0\xc5\ \x51\x93\x08\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0e\ \x07\x04\x9f\x87\ \x00\x62\ \x00\x61\x00\x63\x00\x6b\x00\x67\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x09\xbd\x6f\x27\ \x00\x77\ \x00\x61\x00\x74\x00\x65\x00\x72\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x31\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x04\xc8\x47\xe7\ \x00\x62\ \x00\x61\x00\x6e\x00\x6e\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x0e\x26\xb1\xe7\ \x00\x6c\ \x00\x6f\x00\x67\x00\x6f\x00\x33\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x0e\x25\xb1\xe7\ \x00\x6c\ \x00\x6f\x00\x67\x00\x6f\x00\x32\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x0e\x24\xb1\xe7\ \x00\x6c\ \x00\x6f\x00\x67\x00\x6f\x00\x31\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x09\xbc\x6f\x27\ \x00\x77\ \x00\x61\x00\x74\x00\x65\x00\x72\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x32\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x02\ \x00\x00\x00\x56\x00\x00\x00\x00\x00\x01\x00\x00\x90\xee\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\xb8\x00\x00\x00\x00\x00\x01\x00\x00\xb3\x62\ \x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x58\x36\ \x00\x00\x00\xa0\x00\x00\x00\x00\x00\x01\x00\x00\xad\x0b\ \x00\x00\x00\x88\x00\x00\x00\x00\x00\x01\x00\x00\xa6\xb4\ \x00\x00\x00\x70\x00\x00\x00\x00\x00\x01\x00\x00\xa0\x5d\ " 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() PyQt5_gpl-5.10.1/examples/dialogs/classwizard/images/0000755000076500000240000000000013245231431022532 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/dialogs/classwizard/images/background.png0000644000076500000240000005406213245231431025366 0ustar philstaff00000000000000‰PNG  IHDRÜ|¤1ÕÛWùIDATx^ìÝÁKUiÇñß¹×ë• •a:­$PP qV!ƒ%H-lQBÝjF¼¯`P£¶(‰ rq!\´¬“6Í´r#b†7RÜÈ‚±Âl‘òôl‚¼HYi~?ðåù ~¼‹³8ú‚ô‹·Cy1}œ”Ö©_Òí¨  E_¯ZRzhÒžŸ¶nJOL<0³”æès0´”I¿K:O$&ê»»ûj[[ŸJºë½Ó¢Ûï‘g½LŽŸ6³Ã^™€CR"Hé}G,69|üxÖÌ‚·Ý+ødEÞ!¯r·÷;äÓÂR¥7âYOiéß¹ÑѳfvÔ+׿Jëƒ4¢èIFê ’õÕÕuiAÆvЛöM47_í0³]^‘æq§­­Ë_Á™ Yg2ùö¿[·ºB1åÀ‡výLIÉý±áásfv«VíRÍ©Tê^lN7•3«ñ‚×ì­V~ÊH}¤Sªªþ ’]®­½ßßÔtc`ß¾3K(/ðY½—Q=Ñé.Û´éÅ›\.q¾¼¼&Y\üzïàà ¤Bo•÷¿V,DZT0³¤¤jo,[_ŸÝØÐû9>¢¯`|Û¼}ƒ‹´RøG€ŒÔ¤W~ÃÊbún°zÆ$­‰EQ&#Ý R‹–0¸ þ&•j˜zþüH,Ÿ)ݼùßÔºu%Qõig»T·[Šk)2R:H]’"¿—¼gZâ‚ÔäÙ•ÆÆ?Í,\Û¿(Hö±Œ”ÕR|hï* ªÊÚö¾¢‚Ù`ŒcÝÝ9ê˜cרˆba ˜‚‚ŠŠXXb") ¡ò?ï]û¬u¿ûãÌà×™÷YëY‡³Ïa>ï·yïÞûç]–#ÇzùGzׯkÕ¢?âÂ:jhyÁÉ` y®\Qѯ^™{[ZV‚…­.Zô½û‚¶6nìKF·,gÎêB×À`Ä……5´.S敲:ìëÑÃ{GÛ¶ÝtÔàšÀ¸¾AíêÐÁ«[ÜÛÒý[Û=¸³®jÕë¦*Õ××þþ­1^Üm"DOÁ`èÀŠñV‡[ÒØ´ù“ÐA\µµ]gUªÔ›5¥J…Z—-[•´¾zõ0¶)fúúmÉø¶·háûæxÖPc›i/² vš|"Wv}ýl?uéâš§X±°|¥K¿ä꺹×öí›æDDä:ˆ&3flñò¥íŒçÏ¢£Í1”#oÉ’q1aaî_­³åÈñ©û¦M–·D‰ä)^<¬ì/¿äªç,Ëœ* V‚Ùà 5jø¯ÈŸ?÷]À¾`¥¿X«aÕpĵIü›sµ.YYUÙÓ¥‹·óÀG°‚£•ÌuèPw<ë%Wðò4vhРó[Á½3ùÀIY¿c°Ász,\8àÆ–-ޏ/+þäÍœÆã¬»½yó_³ðß^ÉâDÆe_¯Þ]Üç•W‹Æ\~ûí0Ær­,Xp«Æ6sŠÈ"0ØðòÉ?Þ²ª•ÅÊàŽkÊÊÂ…ž_¸`‹÷GêÀ*¬ã¿}ûö›Û¶Yâ>»L„hJ†utìØ=‹…¨ ó¡{rš1ãØý#G†ËÏãV:Ç놂‘䤨߳ç‘äÄD3Ûo`^Y©õÀ¦à0‡4¸Žd`p°<Á5i©Jw°_?çäOŸèß> ìb®¯ï+W»¸VY cE`hêíšEîÜÏœœ6ÂÈ …Ža¡Ű’U×X‘'*ÛÇ5%KÞ|áíM+ò°¨€¹ÁÛU… G8 pêÑ™3ÕD‚Áaƒ.06ŠÑ}ÝöË/gâÂÃ-(Ö¥Ãqð3¸ÜD1;œíbÝçÏw¥Œp˜Oãý` /W.-_¾me¡B7äÖÓ ô¡-é·RàDzÁ˜ O:ýÁ‚_‘‰òæêÚµÛ`d&`+PgÃ!^¦¦õ)㯬jËóæ}óáñãÕ0²Y`õT¶É³é½ Õ«?–†š²²H‘)«Š5¡q2ØÔ‚æxæ î˜/DÁ`üÓm¥N)ÈÚ¸ùâÅJ *ƒ¥ÇÏxò¶Z•.ý†VfʧaÌ@¤xY=ã4Ë‘#–®§§Oß‚´°¸OÚÝ©Ó勽5ÒÊr’‘-Ó×÷Áö:ÈqäHñÁàm¤ÁŠÎ!L°Snú‚Ù o« ¬Ÿ”0ï™§ç:r¤|ësÂàÔélÝ»{ïêÔIí<Á™. ΕÄ+66Žò¼×_¾+^8099¹ßÛ€€5ô¿#ŒtX)†ƒ3ÁŠ?ðg0[ÿÙÊì¾páÌó&&‡ðÎb8U®’Á-Í–íóÅåËwclšæyÏ¡yóÑXÕÂéêAXäÉûÊß¿·`0YÔ-üéÓ»Ú·¿FN•%°C!zkÜQŒ'\47ßGa”ˆgÏV‘aÊÊô“`Ê©iÓŽáY'ñ·À`°á‡?>qb#ÊnííÙs”@Ìî“­‘QˆôlVë†=~<!u }M‰/ád™›vÏ/ƒÁ†Wüœ$$°ÝŒ¢¬–W†ïeÇù/޶™äùüþ9ƒÁF—M3óƾnÝc´’ÁÀv-¢,ÐEcp²àÝ  Š¶¡äõïà™*UEÚÀ`0žyx´DÎé3 gɺÂ;™rõ*Èp?Uf±Ä™eÏ©þY¥z‰kZóS ^ñ?}ëcm½wO×®ÇQ¡@†”}Ì;x6€’qŸoå Ôã­Å˜éÝ}û¶Âð’`€² ½±øÛ`0Øè²ƒíÀ±¨«ÛKbLjQÝzõZ+*Ѥ-«Ñ˃õ÷vëæ¥¡­’,kïÒƒ¯äÇwïÌ|×­Û™˜˜XÕL9ЧÏI¡$Kï•‚¶×ŽŒuòÙ… ÄwÁ`£+öúC}¬xQ8ÓÑ*ÖŸr2ÁÁ8ÃEÓxìû÷T5ê}` ­†ã±ÚÁõ(®SpÍ/ÒƒóÝR%.§Icc[›ñBä ”0éX‰ãå;Ó›ÉÊË ­n¤VoäÈm“îܱédeµ«l“&ž(X¾|H3³+d%…øM%D½œ9»­_ï2?<ܺÙìÙGUÙ²UÌ¡§w85¥hòp‚yƒÁPŒBŒN‘›ëkÖàì<ʺ\¹Ôläž³óR–ïíÅó‹eÉ’ïèÙª"E#«e°ËСçè÷-‹ë"$4*ÞÖrˆÁ`øùùå€Ìúa$5Ç)ÛHTü™Y³¨Ê|´€ZØzäåµÉÒÇð~4éd®*Tè<ïïÓg¹=ˆ{_ð_X¶ M0ì@é å°UÇÆŒ9éØºµÛWWŠÅÍK‰ý}ûö¢• N”GOÏBÉÒ;Zµº€1µ’VÆY030h©ÎQóèøñ%âÿƒÁàP8œ Žói=Ïí:l˜±<þ>VVfÝÜ6bu»„ç}ä{ù×Vªôœ<ž¤½‚w“`|Vs…È'Òƒ²Ñu{ûÐȼ- )+ž§L–þIžõÐ8äÚ/ž9³a]•*äÑ]¤ ]mpö‡'OVã,wôÔ,Ã}.EÖdúH9Œëÿœ ‘ÞÝW×­[ñ_(ÿQ‰tƒ!¥÷*‚uÀbàA‚ä,Çý¦3gëlcc‡1/ùî/àO +ÆâÅ?ƒÁÊÇ6m.d¤bƒÁ Ô'™^x\kïmŸ¼XˆŸñûý¾±Sc0Xïzbòä“V¥JÝWš˜Ñö;ƒò»¥ñzS ]¤ ƒÏxÁEÔ(øÊ+Ü·ß³óç·£ìÔé~ ü“$iƒ.‡,ê–ߥzzûÔ¶»v9ð‘H; U“J´±åþä&à× 5j<|p䈉óÀzâ»À`°ÁíSÌræÜ.R‡ ©v¾(Ä}0®¹}.=u*ä9\…UаU+ÿî7: th—^ŽÅTzzgþó)b²ê7eu±bKqÍo,D%Á`üu_¼1à Íq*r…±§ží:úûáUšûaK©.²*W®ãu[P¬Æ¢6*46,lŒÏ ÷—Ä÷ÁsÒÏLS<—,q¦~íBéb—(!úåþs[J¹yo‚w…Je€eßmåT¯Þ·oÄ÷ô%c0 ›5Û®Ÿ?˜žž9c„ËP˜Ñ=9>¾e¥N®—mØ0Büa[±âuå@k÷ÓOw°º}B°ó9úVËÒŽ´‚Á[ÍÒ ±±‹¨й¹s­—åËW«Þð1úšGG†„XàÂÿ¥md^–);!F’½ú×Û[´¸©ÞŽÖ­ý’’’þ‰”ƒ.7Øœº²H’^OVK²×¯Y,ÿkç¶ò¨ƒŠR ìúÆ;öí{‚î‘ A{lè×W@*Í/¦U½—Á}Üﻸl´«T)+Ü'ÇnÝJŠÿvwêtR18te‰Ã5Á¶|ùg_’“—F­Â’ßD»<ˆ´ )Egy¾|ËDÚÀ`£«N ³Àõgñ_µ§Å —`cdôòÚ† »ÈˆÔŠMÅ‹¿{xäHg[°€<è¶Äª†çK®nÛVÚëãÃÃçË®.iƒeÚë¹ÿkn[ê¤ùôìÙõ›Ù§nѤÉu•+îëÑ£š¶L¶™·•RãF $ƒ ÁÈcçæÍsñß±cµµÅVòñçÏŸÁ§Ö®6).n Ie/Ó×½°jUu‘f0\v1†gKº„²µQm0¨Z€åZáÈÍ‹ç]ÿJøÿ«ô2¼—ÎûðèÑÒï>\ûÁZÞÈn7Y Dü\ü°ºH‘×Iññ ¡­÷óËtž:²ëfx%þ ^KP_ëŒ7Wfv‡ãzLZÓn¼—Z8@…ç¡ÔÄõ-ÄCCàu†xh°<÷íÿ$S†Á`C,OÞKèÌ¿’aƒÄ‹+V¬Ãxª†³£M›éf9rÄÓ»6åÊ…¢îÉ">"Âtg»v×i˺ªT)Cñ§`0Øè ½kÁ‰‰OZäʧ¬V© É\03ëJÁr š#s…ô/’pî³úœ˜8˜âz0Ô¦â/Á`°Ñ廆?¾bwÇŽWÐðá¾]ãÆùS͇6}à©Sžyz®ƒ¢ï}l-£—çÉS‚”|Ó–“É`°á‡¦`§ü¸‘¸v¦Õog‡Wä;•ÀÉÉŸ>™)g><ïþƒ2Be7 Ü‹›Í ¿ÌõîO¢¹_lÏ­[/`ø,Þ{Fïe70pÂõ -'®kAOü‘-n“pýL[дÇê –Oëù6 À’J{Ô턈¡,•5nkjzY?oÞxý|ùÇûûÇ]ƒ{{miÐà2¤ág_°Jm3 å¹m62Qú*æúö½(Ë€”Ú¼x” ¤Jó›7;¢Š! c¤²¯"µÖZèlhÖ0¬3¸†AûV Óƒî¿ìïÛ·»$I«Ü¦N=€ÓG¨‚½Ä½þB!JÇrKÆweø_ÀŽwöì±’^Ï’}@­ÞLª0g0à œCîv0w¶ooO?#sß›ouıÒ=£—E¿zEý¤©ô§(˜²­iÓÛ¸/($|×­«@ãdtŸÙŒg5….€Á s?¥š7'ƒKYY¨P¤†8P,þ¸I´¥¤y3 ƒM䊥ZS²äSùEñ«Ægš¦loÕê&Þ%uXjbÌ+¶-8Ï D€ÁçLâ­¸Fa•{÷ñÍ›å6††¡ŠÑ­«VÍEè0|¬¬¦àÌCFCz Þ”_ñï< âØ’› ¬ÞÊcÏ2ÝË`¸ŽÙ„þ8ɸ _cW¥ÊIµÛ½{wŸ33gE]Ûì¿0ØŠó…(…+^þ×7o.w6ì,TÄ|J ãK9Ø¿ÿÊd! Mð3m/ONž| Fh‰ë ¼—ÇÊ»LMc0°%›H¶©N‡Êv’dï w·«Cop$¨G±9Šem5·cX)¢Áwà¸,ÞfèÓç" é †ºZV&<§³…>œ(‡_øø ÷X´ÈIvû™û'«ÁtKc0(†¹²`Áר\¶®J•@úc¥,È—{ Y{%ëC2‚ÎAphÖl%a;z\Îw*°éã'6£é÷áCÔÕ©¿P.,[vðððá'^øHŸÙºlY{ßÒ¨Ñq¡Òa¡«Ü†ÆJ™ˆÃé±ýdp(` ,ñöÞ½Ûvµo¿† Çià@/j‚ûîÝBêß…1CâZŸ 9ylO—.žH­ Åj‘H†ˆjndü'…^»fƒ÷‹ €ì)=¬´©aê0º$T“?>}zë¶6nìMÛL©$椱¢µ“gäêU[­ž[°ÍdT!W®ÌS¤p5Ø×³çI‡‡0"öý{SŒÐáÏYóêÚµ»á}U‡ˆp]‡lß, ” ìêØq?ÞKà EùаÏII3eÅzº9Y,î:P[ÈN†%Ò©²_sNˆ£4~ÞØø~§ÒÆJÆ» uÑèÀ/.]Z ÇÊ™Í?ÿ|(2(¨ ¦ÄŸL‚þˆ­ä‹/_¾,õZºÔ ŠÑa0ΣRŸ¥ ¨'2 ƽÊ‘š–ŒsíIEy7˜‚fŒÁH›¢U‚D\çQ±._!è`Ñkm©b V•• d)Ï.úœt¦Å³ú`K¬‚ÆXÝL2mec0^ùùM·¯[÷œ±dPJÚÔ=gç-tÞÃýhCæK¬‡à”¸ˆw?âŠïµÐÑ=›Æª‰ëg™—y‹.ï嫉̃Aç3piD’{Œ‹t$±´•[1ƒ‘%ïëÞÝކÙsµ'=JÄÃî Ç“sçfÛ׫w—>Åï¬Ë•[JÒë" Á`£Ó Á¦×7mÚŒ³]°C‹+€¬JCØà… ÈÑoß4ĸüÈONšTèa‰¡ +8ÝXˆ YøÙJ‚nlÙâˆJ„W2õËë;SåJKÙöµ`AñOÁ`ÈóÍp,K”¸VT ÷žtñ¢èþrÛ™@JÊ/}}›höíð|ƒÌy ’çÃ8pL{lëC-z¥´è×oîõ¿'«´Üz§_*ƒû.+¡€³óæM@pø3¶™á(\ñJdv"UìåÆZµk†Ð+@`—ýÀCHð•2CÖ”(ñJŽ·ÒÏÕIÖוøƒ |¾­]&GHg0Øøò¡:|œ&1Jê¶œ.8Y¾½{w )si¼[O³a™ÁS§þýÇņ…Í%7|Ð… màÊ ¬ÒAt¾••é”@­Rò2—à’^[g]儘ã ææÐzØÎrÈÌX¬ÝˆCÊ–§À¹â}bòä“ØŠªKkÉÑJ&K70¢+U$ü ©rÆdhH“»FW´W>"­øBž ?ƒƒ‘.Yûr;–øñã2\§€<~$‡ c^OὌDa«9ž÷útŹùóE7HeÅÈKÉÃ`õ ×õDp4ò41ÙAÆåöÇޏZ€Ÿ5¶Ñï°Í6Çýp˜ZõÁø§1.ÙõÆHÎfùÍ~žV€³sæÁ³öòÝ¢à¯`= CwÇ5›Ë°aS‘«yŠ‘…ŽB&=$ý—»lEÒT†¢¥‘=ÁÙ5ip£CCWÄ~ø°¥¹â]LWu4c¯^?ã›ÿRkwzúôßôâ³rûuóèï¿ÿ.“¦K „±FRû2ŶB…çȼkš-Û"%9 ÐgP—çN÷äýÄçè æƒÊô^Y‘àïØ­›ú³ÉÞyÿ œãqš—™™UHcºª4ïÐdÚìîÜù*½‡ÒŸÓº®¸urêÔ8¯†“ÁÛjÁªM›Þºno¿óí½{+‰Å5)bs”PƒU™2Óé}Z霋Ÿ;Qà"Úz‹ôƒû£•°‰Ë!ˆ¿Å¬.QbÐ7ÞÍi]¦ŒÅðž¹»Ûâ¾ Ž¶ºô¹P䆪„ɸυxä¤Ä-\‘/ß>r ù;:nÇøÏBÛË~dp{0¥ó-VÉmt/WvW‘^`pìKÙø¸ŽÔ8Õ 9s¥ ï IåÌ”SG?Wp„ü ȉ~Alò¶´Ui|†fêó]Ñ¢pW¶¤GÇŽ=}zæL¬ŠN;ÖéwÍ)"ÏA•%-©üüˆ£µPÞQ@í¬äòe¼§³IÅ'¦Lé‹4±çdHȼyc+§åhiBÏdHäªßÖ­›d½Ý"bšçè¹ì‡·\¤' è¬2Ï•+BÙV9äI!†Ô4"v÷šÞçï$®[Áf:¸â•Æ™m¶ÇÂ….§gÌØGÛd (1EI7$ßÚµËAÚh°²@G"x”eÉ’ïP¥qç^?&+éržeðŠ×γý½{SiO2y3aP[´eìp?XQáZSªÔ*’ºšítÐèr‚íÀ?À"$'&ƒÇä–ÙGn5´>ã(zî6mÚq8›f£7ž9…Yð{·h« vé]Að×ÞÞké›]†–k&ø‚-ò䉀äùrZB¯_·‡0FúFè8ŽóÓújÕü”UÜù×_=Þ<}Z<•Œ•¤úáÉc|þ=ølA&Bü²©nÝ)‘Ûï-"À`Ã+N$¡è¥P1(‰Í÷‘º/XàŠçÝÁ"`x4_Pí]tttÿ\¹Àq.ÀêüVÞ2¡2,§°Dã¤êú ÈWmM+; öBÆ}3%àYáô³e°ÀQ£2ÀÖñ…,çI@B´‰’…±64¾«S'_ŒÕÔLµ‚ƒ¥6žå×ÁÏÕe@óÏ›˜ztüøX­íänås’‡a…pº8tÈ×K8÷%Ý;x*í‚%1¨ñ¦›h-ƒñúöí §2 íÍ›/U23`P·©é´4W‘k~…°žÐè!‡«ƒ®­¤|&³Nú Ê…Ñ$(õp¸ìµûé§gT…n_¿¾+7î8­’J2*-†­,Pàµ\ ýÓ³Ó+ƒe†B¾a®#aH³ÁhÙ’ø4m1åùÇ‹ÆPä‹LglÅîÈ4+]Ïà€ÁŒSÌõõ?Ѷ“&¤#CJØ>@Ò3uš¯™@[êgžžk”~xDÚzÏ"H0Øð*F–eÊÔA¶†º®nwÇŽTè™[Jô¥!øî¾p¡=Æ(¹ŒˆmÍÕõlœ‹Ë—ïxxô(Åä¦ ß²¡bD(æ}G‰Ï¯*´£}ú#+L’ðËjg ­VAq'ë-‚þoIÚ‚VûTèê³mGñù­mŒ™‡™"Áàø]÷7wîXQ?8üA>‡ÑÅ7®YZ”apë¤×ï ®e…à]@@=¬ØçiÅ"ãY_µêÓ‡÷Hålךž;¶n}]6Õ,G Y¥‹\Ôé³c°¨8\,õUÒŸ‚§ó â%Üß¿CÊÏìG+¤îJMÏhå|¦Ä'1v Å»±ï>\­Èýáª3áe2Ä‹VV僑AéTuÀ|" @ˆágE:ˆžx½„b `/’ņWwkçNÈ´ßp8°‹R+Ž×ˆOöÀ w<¶X)[h¬äuÀ±Ôõ5+VrC¥N£ÒÓK@ëå7Ôá•ÜõulOe+â±:°âÕg‚C(Ø-k“Õg»ØØEÒI¤VIl¯ã¨1 ÆKM'%+G£þn=ë«02Óÿ«ÒÙÕ¦\¹¤ÃYcK(Ä ¬zr,­ ⮲oj}›(ßü²¶R%ŠÁ—E¾`H÷)#Åûöí±±±”‡é¦ ‘ú6r:ד¾ ­–ŠL;‹ ƒ-7øñ»pêìjž;w(õÇC–ŠŸ5Š¥+JeRsG»J•¤Kë€áµ¢þô“@‚M`8Ý»F’ƒc•/•mM›^‘ò`[pTÖ.+_(<Û2¬o4;»’â–²šAQù, L-eNƆç]Ÿ=[V ™²UGέÁIt¾C¿»«èâú2>>ÖÖ;e•Aq + ¤):.,ŒŒ­ÐÀÙ¹s'Kc¤ÜÍFøyŒoeºV^0«‹ï…¹:![+çÉ“ó®.Zô ¸^µ³ÛuÑÜ|=CóKäUò‘̓ÂÒ§T˜†{uR„l³XŒ·¡ÔH1•œQåøñÉk¸o#«.zQ¥…Rµ€Š ïˆçÏW’T¾HvËÕò-8:]>ƒAîó°ÀÀå”û"$ð¥1Å’““{Q…B\dä ¬lA2í…„ Bƒq^zA+y lV¶s¾`q‘ Ï¯ÑXÄ€VeûŸ /.%}Ë,”0<›H(Óå:Ëì+28Äï”Õþ†‰ÍE:€ÁFW .W„&XÝZâü'„«¶L»¤NݦêÔ¥ÍÅ;!`ÊŠ¢ð»ïV—,I’‹¥è­Î+òEi<¦p_´h5y6ƒRV;º’!â3¾‡æÌòÃ#FœÃ96^®xûÓës1ØðJƒÙHÂõiÁdD8Ï%½¼~‚è9…,‹?¯Ñ~ë9*ö$ÆÅÑ{¦2S aA]Qݺ{ð`H8„IÛupÀ€ ¨²P!*-nìíÖMé ±–ÆÎÌšuú1½®®_?÷–x'ˆÆ—fÏ>_0éyŠŒœ‡4±sp>D9r¢PVj¹ŒzµH$Kï¥>è2.Ö,½•dp8+½ó&êJí]ä‹sQA ‡“š¦`+ÒÅX’t%RX¼äåUž.´ªSóM¼«hÎ J—2 ×Þ½À%àÙFë¬\±6ƒ)Tü)åðêƒz ħɫ‰òK’;ûð$ΫѪ‚k}(oõÌÃc*NooÑÂë±›ÛF¤ÂÕ¡•˜þí8&S£LˆÚ¾$Ã̅Ç3?¿¸?I^Pü~sŒWÁ»‰Òh/¥×çb°áóQõœ'•U«X䦤R¯FZ’_¶6ir'òåËþ879¡ñiN6ƒc%ŽžI!ÛÜYìͬ ŽgÃa0{I˜Hm`:]ÁØ8hªÜ ^:Œ Ê/ ‰ y8O’aÒ»”#³U¶¥[ Á€÷²?Åê ªIFOåeRVÖ*±¦g—W®ÜpÃu©­òÁËË+;¤þœä}’YΜ}…Ù*½°eTŸïÐ::Ø¡U«¶WÖ­kL A—/÷%Ï«¬ÕË\ZÝpæ£PÉlÊÎÑH‹ç¤W/wjCÙ(HöDÎ¥®43V°ŠE"F•á-­f²œ&ÐÛÒ²V‚·d¬HŠ^CÙÿ&B4’ +{èÀg+ƒÏµ„Œ‡În´báKÁñáñã¿á3Ý£Mh©bÓ’âãMONŸ^Þ\êû ½vÀ™ôJÞ:‘`0d|khªÙŸ\©Æ–‡OT›G÷”6¯'È&Ë3Я`qÒÐÄ{Š×ð,®5t@%­èµk6p¬Ü&ÇŠ’Gê:bÄNZÝ´J¡jI9B¥5WtzJz,gÎÌçÚôƒeü´¶“·¤w2öîþý[ܦLÙC÷H±z-sÝä(»’|²dC¥¡&Áðìh˖ņgާ„gË%BÐpò%Dlçi‡F°B7ÐhÍ5Ž¢ödœûõ»€û M‚f0T›êÕ[„óO\èvô‹­¥½²âÁyrN–…Ú­¸|·n-‹³S8U'l¨Yó¾’­#Uô?#um.UÒ“'V£›Oy)E™&tΣZ=ŒçGîé±ø¨(SZ-ÿ‹‰¹­D¦!ËeÖJNÅiBÆ´J‘e×ZÍéjÍŒçónlÞìàìL¡ˆ7Ìêt*ª›i¤ˆm’+±}6:ËÒ6TãýQ`ñ_&˜'2l|­C®^µ•b­zÒÈò¦¦°…çÕ…ÖU«¶@Ù’Ê~xKÁl:8ŸxÅÖv<’ïÿé߭⤒ö¯èD[È©-AööÚñœ‚“%æÆ`Ail )~º‚#É•Mé{®@1LÄë^£6œVHZ¥áБÏõ É9P\ò™»ûÐ`p¥Ñ¾{‰úÈb FÅÇÇŠ,ƒ‚Áë«Ww…!}–µ_B||l¤Â–ö»+À(I ˜]BtôL#£—4f¦¯ßVGVðÜ`W°›øNàïr†lÕ‡R òòfG¸¤ªøQåz¸tI»kÚå¼=)U‰LƒbU&oZ[±¢zÅ‚'3óÐ[ËØ*Ò•æx¨G„3e¶ôxî:†4 çj—¡»í§ÈH³UE‹ZÊ:= ©”?`Lu1q¯õðžä¿©?™T§Z§4%dªá±ÑUCˆ`ú ‹ƒ¨G{çÖc-Ï¥z$ÃÔ²EÈáõ6´U+/¡…™BäÊ*Õ-Z•@opVZRº”2 ssç¦zCðç3ÆÆåNù(Sà®üh[˜ÔBN¦ a¢Ÿ!â°Cóæ>ÔCƒgC¨TV5'†É.Ë/ ‘n!õ.fQy*••Ú-­Iî£1™CÙñ’þ=À`r¤(ù—H ¾üäÌ™r»•ªxŒyŠF=ÚT¦Å½ZÞ[2¨+»ÂkøP® RüG•ÉåL}‚.]šŒjù2NWíOƒ38ÃRÇW8õ”þÏÀ—¤ž†/!ª1 æú‘&smK ¸;Ÿ Ž&IÉí“òh*ù^É-ùѳ˖–öÒôH¡Èr§¢mAúõ"ÃÀR¤‰!rÅ Æu1®3Ápr²\±±Ù#{ ï¿îëÑÃSJÞÍ¡Úü8mGeÛeˬH‚G]03›†¤æË0 [SAíò|܇j”§®¯çæÍ;¬ü‘b¼Í:‰µÁN²nK…óÜk|ÅRœÐVÁù”)N«žÐÂU[Û~+|Æaý ªÈH°ÑÕÄ6sJy\¡¦þæ—^¼wÆÆNäD±ªP¡ŠÌa¤‹1ø³üÝ`+lížË, \ ÀTF”Ùw0¤‰;Û·_L}ÈÁ±Rš¢ K¿Ci`LLL1 òßwq„³l"¥ÆÑç—‰Ò?>NN™²Œzé̆‰æTúFƒ&`ùT<Çhùæ½Qo§|z¬«U«ͱœÃ4îдé-h“xcw“,µHlÀ‚: £wÝÞ~yê¦}Ý»wþ×ÖrídÒ¬)8A¶=š¦Dú11Ðd˜<ù$žwÑ2Æ*à’ÌoáĈŒŒ,H2ÒÀ6_¶±©‰bs”ùÄÉâ×=^é{8ÿÅ~xüx9ÑH<gñÊî†jïtÁÏ€2 yOÏž]O¡ÿL!% |RLG)„Ã-‹{…Õ¼œZ7ZzÒÂ3¿„„ñþñã!f ç FvG)—‘N2¶)2›%~W§N[pËuèоW¬­×Ò8z·º´”=o¦e@­Á2â¿„€C‡æÃ©Žç1Q¾qQQ ¥iQ çÀhx<£º¹ÕV«D¦›N°FR¶ ¼’XÅÞ£îNéý]OÅ? Áá=*Îß*óy°oßÁp¤,Á¼ECÆo5éhj$;ƒåE¦‚'²,8]Wöj¨ôÞÒ>hc̘ž=›dÀ;à~ˆœ´ãx·²È,p5B+p.húåË—¥Ø–u¥m&æãÍÅí^\¼h-›•PC’ k×JB–švôTò)Fq>ÊáÍ3?³ˆ'² ¾-Q [ê†oÊEB‚´ië Õª`ì½çwÜ ÿ¹.Ï"³ÁjbeÀˆÝU†á¨¿()ÞúÜÓsÉ•mÛ Ãiâ%ÕÂʃ*Y6”C©8§ú¶‡GnÂJ™@÷28=Œ3‹2¿ü¢2–â:Mãü6 Lñ^³fm_äX6¤=ƒ·ìÓëÛ·MÉÿ¢—öŒ)¦d¼¹{w¾c›67hÅ©puYdpð(d±Œ§Fš=½W-Ú •$'hW³»cÇiJãI”ÝÍÕ¬weõárBg€Y4h`±ã*M'Ê‘‘#ÏÒVE)¿ÀØTpØGÉvÀ$*â:~ÒA”ç«(8’ã$[§‘ {“Dhþúk}-oõ¼—þþ•©9VÅHtÌYì㳚$PûôC``V6ed¸›šb;ùš²OèÌ&57¢¨ÔDÚóH 5ulH!M8åszYX4‘“|÷n!‘Q`ëN§>P‰S’¢¿¡¯²@³5Ît;q¯î .SÇY)¡zãÆ¬-[Þ€ÑܦN24YÈõs!…'éf~£Š‡6£Ó-[ýö›;¥î`Œ®»é}—­o3|¾kûáÃêóýò¥9î àpNžÊœÉ_P"1p–sF‰:¹Ô‘sŸïÆ‘g XnÒ·!Ê®ËF-À§½p?ì s:ôKÙ] ¶gêdrP_°ƒ\Ñ ‚Øu,Äu/øõöîÝÛð¼®|¿!¸äæ‹:˜±ÒšÎ aÎ%ƒSÒ‰ŽG…¯y…ĉ)SFJ/f´³©Tᔡ®(õâðÁ*˜¤-Í ¥Ì^ò«lZh 2 \Ô^I³}ú\´*[öê);;}ñ CßKááN"ÓÁ“Yƒ²ìëÖõClî¥R‚á>¾+ÕHQþ%‘^¦ÇâÅû)ðŠsÝ-)ç*2¬ý+húOjÑR¸«|qfvíÀÛÌyäXQ4‘åþDêæ¯“÷[š—ß~[…¬•ÉpÀøÓ{ØŽ6™nÃ%¾ʹ}[Ó¦·OL˜püÁ±ce‹æ5™_‘ÀYËÃÐz÷Z9‘Ûöídp~;ÖVª¤hÕ{okÖL2€L»‰Èt0L„è‰yø--)]JݤFаO?¶5ϕ댢ªœ5â®\½Üœ–ÚÚ¨Ñ2è4V¶)ØRîF:QÏ›˜XˆLƒ²ƒÀ@=È/P‡Ö¿ipSå®$î@¿~¶Šã_ÏÒ.»š‡z÷n)²Œ¨¨¨BkÕz¬Èº9õï?-o£;Ëq*'LÀ‘Uà/Æ¡~Û·OAø†¶„Žÿc+L5‘,C· pšO)ß7×/øb½+φýDÖ‚‘×’}— Ö'%aPÞw5MP#‘•`ëŽw2d.æå&ÉÛiÊ™S^,ÆL5Ë€>EG›A\øªKâiL£YãO Ž„ 8í¨‰ÒBMØ ‰¶þÖ††;1VBgdÒXºé§¨¨É(J^M¹°ŠP®E±3QËÝA¸õcØãÇseïó^nS§×jÖ¨cà‰- vU )Sé&ÃÈúžp=±ZMÆ9›šl4@ˆ¯ïJë£x«]•*VÏÆÊJªpÈß4•žO]¾êôñü”G‚Íï3øû+??kFc|ªÔ7Ïþm*Ý ’ ŒLôï¸ö!)vê„1CJ5âŠåŒ‘·ÓNrk"”3ÛKu.ýKÏm ĶÒ$ƒ±”¯)2lˆ•iIŽ“Ó3fXýK+AØÒt¢¯Ô}ìÑHbî[ ¼ š,VQÁÁ ëôêSpFXId8[ìÎs‰ÿTÿ¥³ß…¥Km`hÓ+tè°¤»» †õÁœ`vÐ{‰JUÑX;Ükæ ^˜ ñA¤ ë® -ÌßLO/Q[+ZS’#Iˆ=]º¸\Z±ÂšöçeìïÞwte0Á—/÷¤m%²Ö½5WxÛcdMÄ@Þb|óefü¨mMš¨s8‘!ñ›H; + üG­†’ .²Àµ’T;IRpšzÁ¾¾½eŸ2–¾Óp¾c08ˆîmeµûÝÇ¥S>¼F»?Úôæ£gÛ[¶ô¶—vt&€Kÿ^õ3ƒÁF×l,S=½ndDðZš¤’x;@JÃ9 ÛQä&¡ÔcdKĤ±3ƒÁðÚ°!/•XäÉóŠ‚äZ“¨ÙЉ ™ûjàW*€…±.F"®9®¤­iñ+Ñ]†Á`÷‘<”ÐÛW÷¼†ó* ˆŒklñEzúÔÀÆÀ”{lF܉Ô¹gchØnU±b#±ÚÅJ½•m¼Íd0¾]«µ L!B3ó¾uÙ²÷ÕÝ?Uª×H¶u—=²Ç «½0ÆbÐ;tO·nýl1í¢Þ½«´®J•g°ýŒ:=o4,IMd‡Á`lª]»Á¦:u|PoGFö†åŰ失"«F‚ú0ÂIRQ,†®HûHWE‹öá™5ê¬ü:ÝI:Wr 5 ©ý#:4tÅŽÖ­¯ÈÚ­›ô>tÉÎNéW®¢¶¼ŠÐ—© %ÝCêo7U-C*à6²ájwçTŠ/M„è+0‚ ÏDOI[]BŸAÀèÎÖÆËÊUª‰bl¤ÍHÕæ8óÝ¥VOXé¨Ãë[Ù¼°¦| ÍFöKØ£GÕ<.tI]>€Á`ÃkšJ*µZªã&lr›6í8ÆŒ¡.VçµXédI¾wðàŒwÕ¨Lè…çqtÎ3Ë™sß›{÷áyu‘: ®å ÁlcmÀÙ  ©†²âŸ8Ñ cã@=ÍÞknnëèLˆíés/SÓ´ªD3 Æ’Eqf»º¥Aƒ{2ï² Ðr/·“A^]»v7ž×ÿ ߈/ÉÉäɬ*« ú‚] WÀ¤ 5kÞÇóÉà_Æå¤c†:Õ©‚Áàn@†î_0E6%¹ˆ3\ò3OÏux§R*±¿úàb¼g¼XˆšŠ îÃ0þ\%þ W”# îM†F†gU¦Lèûû÷G -À¨–+As…[(€íÚí¦{xG×þõªÈ`°LÜZÕµh_8®´›Y ó³[ŽŽÛ.®XqZŽeJØt¼pCXBlì"ê+þ ^%ú ìa½FBô% ƒÛ¦„^»fCg@°×Ç·og`5|MãDŸ5köb¼‰H ÖÎü H$'&’c¥¨L?D«YxPÐÅ㉫ޖ† =ÉØÖW¯þ÷S¿o;É`°á嫃*™·©Î¹\SªÔiEÞú¢!ó>%>?uw_O2r²µÓ`p8™Ú3‹´Á`¼ôõ-‹¶LÁrû€sÛ>ðÝC¸è Œí7¦ÅØ -§Ê;\Ë‹´Á`ÄGDŒ@·$Gß¡Šq2(¸Æ"s9É‚ã~+mûå— ßDràH‹Ç»0¾ÄX#ñ5"£ÀMêûƒ&·÷îÝcR—èÛ׊¶’HˆŽFM^0={€}Ü,ا±âÅ›ñ/ë6ÃÆ–¶: ið‹ŒžÑkÿU»;w¾zvÞ¼1T)NëÔ!çI5!±»cÇdlðxÆ"¥ì>´5gŠð¨ùKÔg"#Á†WM€e‰÷ÉèV—(ÑCî4r*á¥Zœ+3S†`|"V¼æ?¶Š6¯p ©¨’&šÁÒ­ `x-]: áƒxe¬<Á«R¥^%%$Ì£;/­0öA˱rËXˆ B§ÁH-Þ£JÂNOO/I… ÅÓ{Òó’B•LÒÍ𹹩éÞAGÚWéÙÓ;OÉ’1*•ÊHmÌÌÎæÐ×÷˜¦R}ŽzñÂCE*uêäÑwï^‡êýúÏ–-[í*U¬ÿH½óØà0aCTB4«Ô¥‹Ÿr*‹KŒ¬®þx6 ¿D ºv"=ÁÆF»ˆ·XÙöìÛç2䨱í–-»±ì¥ nÔ`ܸkx~«°íq-–-{öÏAžž­o¬_Ÿ§‹s+ccW¬~%ñ9'•ü͹˜×£B·Àç‚—Ê {tì˜ZaxïÞ”ùnLå&tO´,^üݶ¦MÒ··;ªÖV¨àhŠŒäùp×Ä• ¼–Mçä{}À”ããÇ»AWå< 4‘æ Ù* éì‡ÜÌË x…L„èMÿ5%J\Ñ¡æ‡ Ú&b‚6ƒ)ž¦¦ÎçæÎ(Õ©躲`Á'+ò勆NcRˆ-&o XP¤'ØÒñ±›ÛFÄà®C~/r{ѯ_¯ÐÔCY$D)R×^*ÆyyÙA¢ïÍ‘  { ÞåÊ0´Ê¸¿£ãvÌWY¡`¨0)o¥ë9Í çC‰¸¯œ¬¯Û[µ:X+Ý#^t1><|&ÊL¦¦{¼Ž® 84•ì¤[éòÛoêœL¬†Ï7T¯¾8ìáùWíìv­.^üÍ}—ŠÜÃñqãöÐœÉÆ%uh¾×·lŽÉS—•`ã«4ݼ׬Ù÷)2Ò ž³×P§Š€f£ÙÓ³g‹c²C¤wìf†ÔÙðŠE¾ñ¬†ç’%Îèè¦4í¹˜·oS‰Æ ‘»‘@ÌYìE ‹–ÅŠ½’ïúI9÷,OpIpêµõëw¡Gš9îõ<9ÆoÛ6ë5¥K¯¦É¢Uãm7õýeúú Üq:´”ø2¬‘!ÏWÈõ™øoß¾}K£F— ¡â{vöì Š‘R}ÍÙÉ©SO`l$B ¨ÎxÞ§.,¦yvÌÚ†$\VÒ æÆdì—[’$Ôla‚Iµ*‡°Ú=@>à¹íi)ƒ°oq%ãÌ+'ÓŠôàÐ Ìr¯ìàd9Í•ÕähUƒ¡‘È‘˜ ì š€ 5 n4¥9šŒëµš7÷%聾ܸÑXH á6 -^È‚K•™Ak é€3Àﬤ{IÏ •ûfã+¨éXQz%$%%5ÐîÇL1¢pf÷Ò/E®çùÀÕÕ]C]é\¡!vUªÀ›û÷—ÆäZ뙼gäTñ23³Â»9!‚€•0Îyð`lAïìïÙ³ÄBègø†¡‚.Ê92:œµÏØ·jê(´ƒ”1µ¤ßÒ9Æ^ p h$$ 8Gñ8Äè‚h²xák¼³€Þµ24lOãûºw÷&¯Û‡'OVãÚcÎ` ¸€ŒOdÉÉÉmö÷êu Þd%4@º)&ߘ߲h©' ÍKi¡à°A }A*)¡‰Ä$Eœ™9s·¤ßBézÑÜ|ž9ÑäR|¿7OËPÇ‚ž‹…ÈàÆœF‰¾9ˆå­?9iÒ–ƒìtl×n¿c›6çäpΰ#Y gP•²Zs±f͇d<==¥(kBV-¿R 󨨱Î8õ¥{ô_;)Ó<ñ»ÓAù;ÊÕŠ~ÇÖȨÈP0dø§8üœÎ‚ƺS’Åš‹“©=Sìû÷£¿ñíYj)ç’2¨ÙòïÒv…VHë2e'ÅÇÓÊXZ®† )Ήxö¬Î ooR&²Õ¡Ž'£ØL|OΜ1¾»oßVúÆ ¾y³4Œ-AŠåļò÷·¦ßk«U«…3ÝSzÞ9x°•4Æ¿ ƒ²‚ôXæÇyìgú /y3h÷b šÑS0ì4ùÛ2µ.mÜè;þæMËÎ66{+wï¢W•žÞ—®vvçðÊÙ*U>\·‚ªjï[¿¦Û† »õóæý¢§R†ñý$´@yš²uƒÁÆVüLªÎˆÓ~{÷n_ç_U«DïíÚÕ‡d4[;A<œ®èþsgÀ±^C÷ÐãwLÅw‚C ãèï¿ÀÞkÄéRì*W¾f#Ë}}!:*q»Ë––{ñ~(êò8~¼¾ÈX0Œ“&m ™>…À>Ô·œÁ™&Œ›6ml¿råþÂ+¾C¹U˜WˆŒƒÁq=pAth芛۷o‹ýð!Ý»2*P‚!cråÁ*`V»«âǃÁ=Ø2á Á`P Aó'0:?0#Ej y8‘Föü´­I“ŸDÆ‚Á`¼½â+??’ao+$Œ ’g”¨Q×úàu‘þ`0$T ÚdBÂ3ƒߌ!â2S/T2 Ã}Á‚¦¨D¸ ‡ŒÖÂdðŽÑaåÊ{¸ì£ÅƒÏ'±<^ĵ¡ø×AºHNèyK–ôU ÑJ¨TžÔ ÈX#ñïC £>ĵ‹Èr0Ðÿn#͉¦¸-¸ï_’±Â89uê H…GË >¹XˆÊ"KÀ ^w0®8‹\¹>ž=ûú"8lªSç¦T>)þà ùNxaÏÎIÆ„“ñ)D.‘©`ÈÞJÿ»Ù`ÏŸ?OuhÚô›åÊÕHüðàIî¦ìëÑÃû©»ûúÓ3f@»ß=Ôè7P=‘á`˜Ñ\´u8ð85.úõ³¥ñ=]ºË9ÛŠ¹±Ãµ°øáÀ÷ܲC¨3Åí´·CX?,Ï—/&úÕ«éx/§LŠÞ@gD‘àùR£>EFšc%›ª¹…ÜݹóU<3OžüEÆó® -$%%5BgØsô³ "ÓÁ“Xž³9”@‹mK ¼\ó1f€ ™¦<9{v)½'´€jçµd¬xÖN]•Œ÷p\§‚SðÊóU,tdôè Ø^F‘—ÙCñäuÖHëIs­¨g*sž çuojhÃÜ€û"óÁx°½Œ5¶#iÒ¶5k¶ý¿Ó¿þçŸKÓ–îëkë×ï‚Ûú4¾jt/2 Z“ì˜{X?†?}ºÏ‹ý©|{æ‚áçà0weÁ‚‘À\Èì­‰ŸŽÅ6e¸” ZEéq£¡"£Ám–]¼h÷âÒ¥µ_¾|Y*ƒåZ!¡)4Ç'Ntó®âO çú„±DæÝÒïîÝ[êØ¦Í dµ«3Rhë‚BÉZZïÁ°¸fPÖÓĤ9áÛð žM³C2  ¼`4a¿‹,o5OÚ`W¹òc26ª½C o7æ&U2âyͱC ‘gÁÛ¯nßnA%ABgÀibääÄbûñåáÑ£›0AÕ…„ÜÞY 6ºÊà—W­ÚjÒ‘uY[¨HI †FÊ·®J›;Fdhh=*¤¤êeòfR u®ù„.‚³‹š%ÄÄ9ò,J„n¸–ZO¶¡—éìzí¥ò g¾÷|{÷®åö-nÒ*‡çBWÁó•ì.Ë]ÊzÐD¦òý*æ^²â\GÁY ü=2$d%®:np ¥¬‡€Õì™”w]ž'Oxìû÷¦ä,KÅ1VïÍͨd+ëË€x"«ƒeÅž³öç¡ H}¾CÆÐ[¯¥KÇ¥¢4ÖŸ ”µ„koÊŠ„4€Áàó]kZÕœôÂy}õ§¨¨Šß!¹Ÿ ZÀhgãZQü ¡ÿ †<ÛÕë€_Áó*•êy:uV ±,­1ü%EˆqË„p郛ÉÔÊö±»Ä'¤Ì$*ßB‘ó©,ÐLükÅ%ó V1===ÑkÇŽ½=ìíý –+wªz¿~{Úš™í*•È]´¨‰øgic ¯nÙQ‰M‚µØ–N j*Ø[–(Šqée‚‘øÅß!XË`0 ñ3y6Ñô¸ãÓtNŸ“ܾºžž^7zWòyE¨ )sC­;nc:WSq¤¨…kÑãâUž@õm Ý»üö›Œ0СeKjߥZDmöþ Œí’\µzi[wÒ5%YE(ŽYíîÛ·8‚ë±¶*¼ JuÈùYàú+Þ™ ~·P{.‘: )c¡—rSvbJÄõ ŒÇ×Ϩɋ†·’ä9úaìz‡zèÙÿüó<}¼d3ËVÆV‡ •‚ê¸e0Tä Îzpäˆ=5!¡þèSþÛÅö*pG”•5yÞgçÌQßc;y™Þ·)Wî!šÍ˜üŸÒRMþÞPò'ËâÅÀ`0dç°Ú3w÷Uhêa÷ÓOgNÏ™ÓA9çÁhÞjˆ-ÁösŸÔÓ¤^«ZƒñòýRàvã‘ Ê¿ºqcMBlì|Ù¨’Á`hºÁq  Ø[H¼¹{w µõ^¹e¬ I‡«ÒÉò庽ýNMhŒçGQÅë±³cǾ¡ðÍ`°žJ*†8,GN¬xñdP‡ :±)Ú}ÑÑœ’<ŸQØ¢F?ts«-¾ ãøøñ ÐøóÆç¤$ãÔZk™fË6 ò̬YGe—^µ·e0znÙâ†K x%@a”c©¢+î—&aKùúÕ8vXµÊc—þfLp.ÅÁfBÄhIÍ0,Š˜ÞLºßѪ•û_÷7g0ØèªÓ½ÌÌœV*AÆ#W±œ Ž­´ò¡ÔçÉ+??ëïÞ-§ž…pÇêvï>1Ï•+ůä¤ ƒ.;Ø’:í:ìÖÖ¾è TPžÑ&ƒ)kw¢>` °íááÃOÓ8ÑmÚ4*ê$Òƒ›’€}AS°¾°Í+ëî¶ lýå—Å4N5wÈV™'φÿ wZ[£†!íÀ‹…¨+*çÁVò"œßÖ­;È8©!îçðÌ ×Q"í`0ˆËíDt²<ß…éçÍõëÀØ&¬)Q"î}i g»X McJ#ŒÎÖÖ+‡œ8a_gذ“E*Uz¤¢ˆZ_&{„#e*®¿TêÔéÂÂmf…†®,Ý AÞ3‡áyR<é„ù›`0x›Yº„š¨ÏoeËÞ±²}ÁYŽ:Á6ëD ­¨ÆjwZ| 6¾þÛ·o¿{à€99Kéꃄ—¾¾í„Ć֭óR8jñŽ{êø„ ë(w“S»ÒÃõçÑ£_àZ ÅjÕò ½r¥ùÞ.]#.È »xq©ªöî}¥×¶mnt;ôë¯?Q­Æ Á·_…Øk!Äñ÷Á`0^¢ÀõކßgºBª/".,l)5§$Y?7’ƒâå6óKÚ+  ’Ü^rrr?GÇíâs^ž/ß+E¸ÆÖF²yʆ5Å…‡[<<~|“­‘Ñ i ƒ¿ñß.ý¿^Jƒq2¶‘úúµr,x´XO¾$$-X¾|H3³+xîC-¸TBÔ7(T(êãG•­K—qoÏž ÑÞÞ¶9óæÕÏŸ‰Ð&¤¤at Ãmúô>VeÊ<ÓØN~]‘/ßS©VKÔhRÆíîÑÊf]¶l€ŒÙy@Øè ¶ž1x—ôTT?Z‘4;ž=~ÿ¾²ƒADèq7Ë{Íš}Ûš4¹ˆ×ôeÄø`¡ÒÀ¤ÐÁ– ¨øu ÷£åò¹Í Ę‘Ì Ž)Æ»·kWŸÄØØúâÀ`°Ñå*b3À…`P%4p×Éé×ÕÅŠ…Ñ §‰ŒÉ",0ÐÜuèPwïÕ«÷)Êa—--'Ð;¨Dø, ﺉMEÚÀ`p_óðçÏçïíÞÝÇ\_?\z+cÑvyé«È×T»@±»§îîëQ‘pÂGñ²¯H 6º<à°äOŸÌ®ØÚîqlÓÆí¢¹y+2F©(ÝŸ ñ@ß¾06ì )?K×áÃO=>q¢¥J| 6¼Â¸ÔkƒO ¯rZz&¯æ00¨1#8xmÞâÅm1EÝð¨#,Ò “ûËóäùxmýú‘\-À`0Ú˜šZ“šôéiÓ6™ q… z™ 08ƒÑbÁ‚ã}÷ìÙ\ª~ýG*==ÒÅtDPý„È0 Rþg$ÆÅ-#ɾ°Çç*èç4a0ØðJãRMÚ™( â_ ƒÁ`0þ›™f¡:­IEND®B`‚PyQt5_gpl-5.10.1/examples/dialogs/classwizard/images/banner.png0000644000076500000240000000755313245231431024517 0ustar philstaff00000000000000‰PNG  IHDRôK±ã…¬BPLTEÕÕÿö÷ÿÚÛÿïïÿßàÿççÿêêÿêëÿëëÿßßÿ÷÷ÿúûÿóóÿ××ÿÿÿÿæçÿÛÛÿããÿÕÖÿòóÿîïÿåæÿ–öº…äIDATx^í]Ù’$7¤:¾fvÿÿW $R×NØ#Gl„RÕö›ƒ U÷EÇ~ßwv÷íN÷mß·;Á.޶c;ˆ‡2-”ùùÊ–ð0~”€Žž„õùß•mñSÞÁ¼rž)3Àû¯™ÉÖó"˜•rÆü˜ôQYíA½“žÖõ)ŽÉé7Ïôq»ð¤÷0‡ãXßÅñk3ómÑ.È”ÙÓBË—ÅúüK¢ü‘þeT”¯¯×`ÑžVyZé7æ;ÝðÜ>8ÚÙµ!½Çú.A.±ÎÏ®ãî‘~qN”eYÃ=0Ïç2œôIIŸéƻѾÊ30é€Dzzánéy»Ù¯œ7 ½ƒ„m!ŸØŒó=Öt瑞:˜ø¯àœ°îÓ;ÆÈÌ éU¤¯lHØV]Ó•x~@º2þ”g(ë·Ÿ&½c‡Û ;8YÕ…yk:öqlùð5=8ŸuvHŸFyÆÇ ¬W‘Μ‹ñà\çwLï)Ý”÷`Ÿ& S¾Ë Þ9Þi3ìkzìÞ%ÚcM7ÌÅîЩ]Möq:`ݦ÷—Э0fw›ß™ï&kzç&^(góuÝ×t”mŽ— ǘ„p~b÷Îxð3ŠéüÄî]#}x­€íÞ;δK˜§› ùš>ó¼YÇœ'ûµäøglAø±]èÂãPlx«W>¶˜óø¡£ïM×@q›œqåµ± : Ò3?à\€?‚€,>û_*ÎažÚÁþvÁ]låL6i:ƒßb“ãSftÒ§à;Ë[©Î󬯇½A¸Ä7X?ÚØðÖAPleîøg¸û&ñMøMN¹yñj†Nú$œÏYߺ¶0¦à]~!u(¬ó~úëäcóAøM”ƒte›0›kÄ)õ2$´õñ`ׂ쎟ÝÈuìؘ`Çâ;¹Ì¿b§£ ,•´,lˆ/Æ‚ÍÜTìÞ#6r‘›yØÞ]sïvF_“=)yîý¦Ç¶'ÛÇó#5MÃvêÉlC6.V8œÓéðÝ;aT[,3c¤3ÏìAzœÓ«ÚÀvîÞ“ºtæÞyÙZdä:4-c¹wìO­æBÃÏéž{OL½câsúXåÞ^eSsâSäÞÅð0šäÞ;ˆ çu˜Ùësz™{·óOμkm.HHr¦Î½?ÊD,X/ÏéL8"]‰ç£:Ð"÷Þ±»'ñÛ¿ÔÓ_ƒñë-;ÏsDúiX±×ë÷oK̬/§|¼ZÓQ]ýcvÏf^c‹~Á¼Ž_òÛjl³<;«­ 먱íyÛH<ƒHªlb̵þÂìÎÏ.oy)ùôW1Þ«l½ûÍö7ƒ42‘¬‰%´,ç>no;9;¨cXrFS°ü±uO+€Œ±È½'mŒÄÖþ§ èç5]LÑ„Y¹²â¢ø¾ï}^ê9~t.£Ê½¯ê¢Ø¢§ô5™´)µÊ½wø»ÒmÎȨ§¾ë{¯µl(¯"ÈÕÕ ˆ[Ø¢žZ6a?¡¾&hXeë}ïB<dã.}ï`þÚ÷¾äü§nØÇä-ÐL÷Xtî§”m¸ÔÓCÝò,ûÞ?šôžœq›˜2NE=¢žü±ïÝ¢¼0"#çÙpӋèô4-[Ù÷Þ†ôêZeÓsÉ÷õtð}ïEçñ‚yXa‘þâ[ÇöM=ýÆ?¢‡¢Y¤wÒ#×äë¹è@þÝ8ÏY1Ñ{wÁC1½ƒt‹tMÅ~¯OOµ>ÍR âôVkz_ÑIMÌ÷M](}=çâ¡#B^ÖÓ™yDztÎ\õékz¯§ p` Λ‘Þ»gx –îþxÙºî›w!›4³é˜‹¹ÙT«Þ#‡Ãúk¼èÓí†×YO÷žH¸6úôWfŠ»†zqNÏåúÆ1]”º”´lú{B9}:1ZãÌøº4Ö|‡jâEÆé}<7S\&˽‡–m®”Sö.¾…, K‹éä_P6e6}Y=@¡p!ŠSìîU6y!L\ì°Ãý:.¤3r¡e›Å ù©À¡ÖBxeߌêu5+¸ðoOCÖ@QfAqbÊ/‰Ãïÿ½ÊZ6¶w|ÙúCGÆÈߨ£—*FÔÐu !ÙµlĆËYÄà7/¶—6uÒhÙ0ìUZ6 S*eå›DxÞóÜ£‘N®óa¸–Ml'¯§‹éll‰nµWÙúþÞ{ä¼m¹Lç9=¹_“ŸÓ—‹ÂÅäzgç°¼;¿yXß»o掓ô» ›ÄZÞrêÐvë@Ùó^ŸÓ_ž{ÏõåÑ÷~Ù½ÃK†æââ9ˆ[@ºë[ŒõV¤÷¾w»]jÛ‘œ‹Ü»ñþvN¿ô½ÏËœkY“ …w¨V«¸s†óqHÃ*n¸h¨u•­çÞ7?§£ûÙsï¾Ã)Îé98¾wö PÎf}ï<ÊÂêêÉwÇy\:ïœ¹ÝØ·Ó²uì0r• iŒW —JÏ&[búSßûŒ„\\4äU6IÁV´ó}:¬®§C¼(œ«B]¢½Ëšš°Ž{S8ÊÙaMǨ.^Vý"ëzæï¤?f¶¨²]rïCèÓ‡¡Ê½;é‰M¨º?’Þ§w5å>Œˆr1ˆ+ƫݻGz.96`ˆ‚úÞëé°äŠÕg+c§œäµûšŽæ3;çôÅçbà<Öôé„WÙ”pqŽá}ºù"ÇûSXoÔÙIGÁï{gªµÍûòV'LAàˆÎ™z#çݰ¥¤ÉõéuëLJ¥>ý]©Üj#×§ö¸ïL˶mê÷|ˆ¡š´ù™Ä„hôI W5Û<•É6$g® uá=yt¬é»”€s£Ý êUVœkPáCe­ôKg56»KŽ2eTÙhØŽƒØ#÷´olÈ‹Ýí¿ÿÔ²m¤é+Ï»³Ûí´Ëï†è¹÷©¨¹T¹÷9— ÙUM®±¦#@¡d³“)½_"è6~ã‰*?tv ìB-ÐK«À|›<>Ã;H-Úô…t3RâÆHc}«<øÖAâ,ÖÑKJìƒûè¤#Ö1ÃϨ³™ÊFÍý"¶à×q,ªb[ìÆH±ƒ²ßLjÔl ¼¡c“73-[¨•w6Ð. ¿í^eëØ1°{gÃ.†GÞ7Ê;™’ Z6±BË[òl %÷P^'’ŸØŠÜ;vï°Û™}oªp餗 mÛ{•m ­òî—¾÷E]4Fбé/<×z‹!É—âÈ&¢é‘½ï7™Û^õ’{7DÿQÕ÷~Õ²Öù:/T æÐëa^Ý.eÊU´E¶ŽôÞ÷Î\»m—Ü;¢]·EÂù¥ï=¿«VGA|–=ÊHz:Tâ‚Á‡õvÉ™žœÐîyXÚßrï1¿S£j~Ÿßµlã$x㚈õPÿF ã}ˆz:HZÓÌgúLm×ôþå»G®T·¨•QNÆ7F^¨àü¢e-ÒyD ‡˜ d§aˆzº‘Ž¢*‡üúéqÞˆô¾wÆîÍ9·HÎéÆyf»Îᆭç‘òD _Ô×z:®’ûäPß>Ò{y’e ß½WZ¶|x´W÷½—ßecªÅó»÷Ч«ªÊfMrȾK¤3ë·ôÙ2Òû}ï蓳ÓªÝ;†!ûpÌÕwÙ®÷½¿4Òåè×µžžÖáªOÇNŽ)W|òøyÒûfº !žÞ;baÀå¾÷ê& ÁXÞ÷>bû U==¾ª ÂЧËìÖ/Z¶ò»lúö‡‚BßK>µlŽ /¢Ð²<¥Îú>üð ò°<»=ÍÐ .õwÙ Ž¿µ7\éZ¶®º‡–0¯Ñ/†e|—íN _£4oÿWî½Ëš.Z¶wÞCËFòÛÛöT}— Z¶ãÔ²íˆqÀÖºeÕ¸1’GhÙL¹Ú”ùNú\}—mbçÕ6«­UZ¶Å¿ºiÜçø.´l[hÙríä¿ü»lˆp’øš·¿%Ò{•­ ÙØaÞRI[,o”‘{ï²é}ï„buhÙâ»lQq– w¸ÙÎögläÒ“=¤¨´}@ÝôÑDÖÔ±cGªé\Âh·;å7\ÊìK-›—-îôOtyÍ¥¾~ÄS°ÎyœÓqÝû?­«lxϽûosï8¹ÒAIÿÓwÙFeU6‹ôñ"kzÅÿê“gä X…ké=õ}ïÛ¿æÞãkMj4©éÕ—âœ~ùZ[€Y*[ÙýñLÍ2r]Ë&^ lÊ9¾$¹÷ÈÉ¡´ZÞ ;cxëûÉ9;Ü"g£„~Æã%nMj¨¬jÉ¥§7‹ôíhðÔ„g¢êÜû!†Ô;?Œš÷Å?Ñe`ÂÝ\å¬éøŸsþLÖ1%yw•·¤–ªÕN¸4.ì‘yësMʸûB„c±`®×ôвٷÙL¾è¬¯p.péO«’î„×ÝRÿ^ N«”2IEND®B`‚PyQt5_gpl-5.10.1/examples/dialogs/classwizard/images/logo1.png0000644000076500000240000000312313245231431024260 0ustar philstaff00000000000000‰PNG  IHDR@@·ìëPLTEÿÿÿÿÿÿÿÿÿfÿÿÿqÿÿÿsÿÿÿÿÿÿuÿÿÿwxÿÿÿÿÿÿyÿÿÿzÿÿÿÿÿÿ{ÿÿÿÿÿÿÿÿÿÿÿÿ||£GGÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿ}ÿÿÿêÕÕÿÿÿÿÿÿ™88}ÿÿÿÿÿÿÿÿÿ}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿ~~ÿÿÿ·pp~ÿÿÿ~ÿÿÿÅŒŒÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿºuu~¨QQ~íÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿز²ÿÿÿÿÿÿ~~ÿÿÿÿÿÿÿÿÿ·qqÿÿÿ“''~ùôôLJÿÿÿÿÿÿ‘$$ÿÿÿÿÿÿìÙÙÿÿÿŒ~ÿÿÿÿÿÿ~­\\ÿÿÿ„ ÿÿÿÿÿÿ€ÿÿÿ€ÿÿÿÿÿÿ±ccÿÿÿ~ƒ~ÿÿÿ¶mm~‡Ö®®ÿÿÿÿÿÿÞ½½ùôô~""ßÁÁÿÿÿ¬ZZÄ‹‹ÿÿÿÿÿÿ""€˜22£HHÛ··ôêê÷ððøòòþþþ€¥LLŒ’&&“''‚™33š55;;ž>>¡DD‚Œ§OO¨RR«WW«XX¬YY°aa°bb²ff´jj¹ttºuu½{{¾~~ÀÇΞžÏŸŸÐ¢¢ÔªªÕ««×°°Ø±±Ù´´„ Þ¾¾áÄÄçÐÐéÔÔêÕÕíÛÛîÞÞïààñää… õì솊û÷÷ýûûýüüŠ‹Òg¥¸¶tRNS !$%''*+,-./2669;<=@ADEHKLMNOPTTUZ\]]`acegghkllmpqsx|~€ƒ„Š‹ŒŒ‘“•••–˜™œž¤¦§§¨¨©ª¬­­°³³´·»¼½½ÀÁÄÆÊËÌÍÍÐÒÔרÙÛÜÜÝÞàáäåæçèééêïððñóóõöö÷÷÷øúúûûûûüüýýþþþ ±ÿŠaIDATx^Ý×UpQÇáÓR(ÚBñâ^Ü[(ÜÝÝÝ EŠ´¸{p)^$P èÙ¤*¸»»»ë#“=wîËæf˜“¦¿×ÿæ›}Èœ™…RúR9]úù€(Ä•A&60©Ùx€ÇNíªÊr£ì`%–°e3p€ú6 ØF§^¾ èh–P}Êîh®¶^ž}°ŽfE 8aæyù?n.%G/9°*4 4¢}2ð³ h*è„"¼\—Œ•€u< è-sf`’ÀÝé À×)à6 )k|7Ž€¤ýŽç,Ë.Úç+Í> h3 ‡7ɻ߾G±Ÿ´q…@ÕBbZ¨þ±9*7 (êÂP´¢•pª…²mÅXÂ<”íÈÇÊ¢,¹'è²›! Àol¯‡0€`áŸ'Ǫ0€ù¿÷.q]`´‰€«»–pFY‘Š«áâUÖr9œý»ˆš2j(Š&4c^¤NýlÌQôtQjЩèÄ:À–";×Aê¼, 5Ro¦˜Hc²V¤ÝNûmðÚ®. êÊð*RyjNNê@ÀÙ0¶@Ÿní-¬|ëo%àöL㚟Þíó P”9eû÷&úr'" Œ²ïq ûûòíkwP”Æ‚²gáÆsà¡ßª[²ÿÃ÷Â5­¶q¯¨¿ZBGP¶E7F‚±¶öéa¸·0%éÀïçÚPGOµDÄ“?Ú€“Ú9sÿeü†š׌ËñÒûÅžà¬rÃfOê\ÍG±fšókMqp©© %÷ º99ê±auIEND®B`‚PyQt5_gpl-5.10.1/examples/dialogs/classwizard/images/logo2.png0000644000076500000240000000312313245231431024261 0ustar philstaff00000000000000‰PNG  IHDR@@·ìëPLTEÿÿÿÿÿÿÿ¿ÿÿÿ™ÿÿÿŸª²ÿÿÿ¹ÿÿÿªÿÿÿ°¶ÿÿÿª®ÿÿÿÿÿÿªÿÿÿ­³ÿÿÿ­ÿÿÿ¯ÿÿÿÿÿÿÿÿÿÿÿÿ¬°ÄGGÿÿÿÿÿÿ­¯±ÿÿÿÿÿÿ®ÿÿÿ®ÿÿÿ®òÕÕÿÿÿÿÿÿ¿88­ÿÿÿÿÿÿÿÿÿ¯ÿÿÿÿÿÿ¯°ÿÿÿÿÿÿÿÿÿ®¯ÿÿÿÿÿÿÿÿÿÿÿÿ®¯ÿÿÿ®Ñpp®®¯ÿÿÿ°ÿÿÿÚŒŒ®ÿÿÿ¯ÿÿÿ¯ÿÿÿÿÿÿÿÿÿ®ÿÿÿÓuu¯ÉQQ®ôÜÜÿÿÿ¯®ÿÿÿ®ÿÿÿÿÿÿÿÿÿÿÿÿæ²²ÿÿÿ®ÿÿÿ¯¯®¯ÿÿÿÿÿÿÿÿÿÒqq¯ÿÿÿº''®¯úôôÙ‡‡ÿÿÿÿÿÿº$$ÿÿÿ¸ÿÿÿóÙÙÿÿÿ·®®¯ÿÿÿÿÿÿ®¯Ì\\ÿÿÿ·² ¯®ÿÿÿÿÿÿ¯ÿÿÿ°ÿÿÿÿÿÿÍcc¯¯ÿÿÿ¯±®ÿÿÿÑmm¯´æ®®®¯ÿÿÿÿÿÿê½½ûôô®¯º""ëÁÁÿÿÿËZZÚ‹‹ÿÿÿ¯ÿÿÿº""¯¿22ÆHHè··øêêúððûòòÿþþ°ÇLL·°»&&»''±¿33À55Â;;Â>>ÄDD±·ÈOOÉRRÊWWËXXËYYÍaaÎbbÏffÐjjÓttÔuuÖ{{×~~×Üឞ៟⢢䪪嫫氰籱紴² ë¾¾ìÄÄðÐÐòÔÔòÕÕôÛÛõÞÞõàà÷ää² ùìì³¶ü÷÷þûûþüü¶¶Ü—< ¶tRNS !$%''*+,-./2669;<=@ADEHKLMNOPTTUZ\]]`acegghkllmpqsx|~€ƒ„Š‹ŒŒ‘“•••–˜™œž¤¦§§¨¨©ª¬­­°³³´·»¼½½ÀÁÄÆÊËÌÍÍÐÒÔרÙÛÜÜÝÞàáäåæçèééêïððñóóõöö÷÷÷øúúûûûûüüýýþþþ ±ÿŠaIDATx^Ý×UpQÇáÓR(ÚBñâ^Ü[(ÜÝÝÝ EŠ´¸{p)^$P èÙ¤*¸»»»ë#“=wîËæf˜“¦¿×ÿæ›}Èœ™…RúR9]úù€(Ä•A&60©Ùx€ÇNíªÊr£ì`%–°e3p€ú6 ØF§^¾ èh–P}Êîh®¶^ž}°ŽfE 8aæyù?n.%G/9°*4 4¢}2ð³ h*è„"¼\—Œ•€u< è-sf`’ÀÝé À×)à6 )k|7Ž€¤ýŽç,Ë.Úç+Í> h3 ‡7ɻ߾G±Ÿ´q…@ÕBbZ¨þ±9*7 (êÂP´¢•pª…²mÅXÂ<”íÈÇÊ¢,¹'è²›! Àol¯‡0€`áŸ'Ǫ0€ù¿÷.q]`´‰€«»–pFY‘Š«áâUÖr9œý»ˆš2j(Š&4c^¤NýlÌQôtQjЩèÄ:À–";×Aê¼, 5Ro¦˜Hc²V¤ÝNûmðÚ®. êÊð*RyjNNê@ÀÙ0¶@Ÿní-¬|ëo%àöL㚟Þíó P”9eû÷&úr'" Œ²ïq ûûòíkwP”Æ‚²gáÆsà¡ßª[²ÿÃ÷Â5­¶q¯¨¿ZBGP¶E7F‚±¶öéa¸·0%éÀïçÚPGOµDÄ“?Ú€“Ú9sÿeü†š׌ËñÒûÅžà¬rÃfOê\ÍG±fšókMqp©© %÷ º99ê±auIEND®B`‚PyQt5_gpl-5.10.1/examples/dialogs/classwizard/images/logo3.png0000644000076500000240000000312313245231431024262 0ustar philstaff00000000000000‰PNG  IHDR@@·ìëPLTEÿÿÿÿÿÿÿ¿ÿÿÿÌÿÿÿßâåÿÿÿçÿÿÿÔÿÿÿ×ÚÿÿÿÝäÿÿÿÿÿÿÚÿÿÿÜâÿÿÿÚÿÿÿÛÿÿÿÿÿÿÿÿÿÿÿÿÜÞäGGÿÿÿÿÿÿÜÝÝÿÿÿÿÿÿÝÿÿÿßÿÿÿÝúÕÕÿÿÿÿÿÿä88ÝÿÿÿÿÿÿÿÿÿÝÿÿÿÿÿÿßÝÿÿÿÿÿÿÿÿÿÝÞÿÿÿÿÿÿÿÿÿÿÿÿÞÞÿÿÿßëppÝàÞÿÿÿßÿÿÿðŒŒÞÿÿÿßÿÿÿßÿÿÿÿÿÿÿÿÿÞÿÿÿìuußèQQÞùÜÜÿÿÿÞßÿÿÿÞÿÿÿÿÿÿÿÿÿÿÿÿõ²²ÿÿÿßÿÿÿßßÞÞÿÿÿÿÿÿÿÿÿíqqÞÿÿÿã''ÞÞýôôð‡‡ÿÿÿÿÿÿã$$ÿÿÿãÿÿÿúÙÙÿÿÿâßÞÞÿÿÿÿÿÿßÞê\\ÿÿÿâà ßÞÿÿÿÿÿÿÞÿÿÿßÿÿÿÿÿÿëccßßÿÿÿßàÞÿÿÿìmmÞáô®®ßßÿÿÿÿÿÿö½½ýôôßÞã""öÁÁÿÿÿéZZð‹‹ÿÿÿßÿÿÿã""ßå22èHHö··üêêýððýòòÿþþßéLLâàä&&ä''àå33æ55æ;;ç>>èDDàâéOOéRRêWWêXXêYYëaaëbbìffìjjîttîuuî{{ï~~ïñóžžóŸŸó¢¢ôªªô««õ°°õ±±ö´´à ÷¾¾øÄÄùÐÐúÔÔúÕÕúÛÛûÞÞûààüääà ýììáâþ÷÷þûûÿüüââfîr`¶tRNS !$%''*+,-./2669;<=@ADEHKLMNOPTTUZ\]]`acegghkllmpqsx|~€ƒ„Š‹ŒŒ‘“•••–˜™œž¤¦§§¨¨©ª¬­­°³³´·»¼½½ÀÁÄÆÊËÌÍÍÐÒÔרÙÛÜÜÝÞàáäåæçèééêïððñóóõöö÷÷÷øúúûûûûüüýýþþþ ±ÿŠaIDATx^Ý×UpQÇáÓR(ÚBñâ^Ü[(ÜÝÝÝ EŠ´¸{p)^$P èÙ¤*¸»»»ë#“=wîËæf˜“¦¿×ÿæ›}Èœ™…RúR9]úù€(Ä•A&60©Ùx€ÇNíªÊr£ì`%–°e3p€ú6 ØF§^¾ èh–P}Êîh®¶^ž}°ŽfE 8aæyù?n.%G/9°*4 4¢}2ð³ h*è„"¼\—Œ•€u< è-sf`’ÀÝé À×)à6 )k|7Ž€¤ýŽç,Ë.Úç+Í> h3 ‡7ɻ߾G±Ÿ´q…@ÕBbZ¨þ±9*7 (êÂP´¢•pª…²mÅXÂ<”íÈÇÊ¢,¹'è²›! Àol¯‡0€`áŸ'Ǫ0€ù¿÷.q]`´‰€«»–pFY‘Š«áâUÖr9œý»ˆš2j(Š&4c^¤NýlÌQôtQjЩèÄ:À–";×Aê¼, 5Ro¦˜Hc²V¤ÝNûmðÚ®. êÊð*RyjNNê@ÀÙ0¶@Ÿní-¬|ëo%àöL㚟Þíó P”9eû÷&úr'" Œ²ïq ûûòíkwP”Æ‚²gáÆsà¡ßª[²ÿÃ÷Â5­¶q¯¨¿ZBGP¶E7F‚±¶öéa¸·0%éÀïçÚPGOµDÄ“?Ú€“Ú9sÿeü†š׌ËñÒûÅžà¬rÃfOê\ÍG±fšókMqp©© %÷ º99ê±auIEND®B`‚PyQt5_gpl-5.10.1/examples/dialogs/classwizard/images/watermark1.png0000644000076500000240000003426413245231431025327 0ustar philstaff00000000000000‰PNG  IHDR¨wŠðÈÁPLTE£m“¤u¡®–л²ìˤ×Íí»»þËËþÐÎþÒÒÿÈÆþÃÃþÜÛþÀ¾þ¸¶þØ×ÿ³³þââþëëþóóþüûþ°®þðïý­€£ù÷ûª›à­¬þ¤b{¼{{½¹õ¿€€‘1=§PP©SSÊÄò•,,–@SÌ››ÏË÷®¦ñœSmܹ¹àßÿœZ{µ°ôîàá·ppžABõì컃 !¾±äÕ¬¬Î ¡¾¨Ó²lr×°°ÝÂÈíãë©v™‹",¶©äj˜‰¹ss¹vx¹ŸÌŸh£»¼¢Ë¼ªÛœ::¦q”Á»ó¦ˆÂÄ‘˜ÅºêƺåÆÀô•Ji¨…¹–01˪½µllª„³Í£ªµ Õ‹Т¢¬Z[Ѭµ¬^b¬„­­dm—V}˜33¶™ÄßÛ÷™FYš=DäÍÑæÐÒèæûêר¯``ìÚÛ³’»¯Šµ›J\ñããóíó±cc±£â÷ððøóóŒ&2³‰«º¯è,;¶„š¬Š»º´ô‰"¡P\ËÁìÙ³³…•C\Áƒƒ£Ta´ⰞۙCR±†©Ç¨À±‹³£‡Æ²œÓ¥LL¥h„´s|´¡Û´®óšLb”Eb¦ŽÎÕ¸ÅÖÁÕ¶xƒ¦ÑØÓõ¶²›WxÙÆÚ§`p§Ñ›d‘ÝÏâ0DŽ8RáÄĹ‹£äËË©‹Ã‹'9æáô`….;êäò»š¾5IŸEM–Id¡DD­Ç¡MV®r†’4C£j‘,4À†Šƒ ŸRf¼“¬Ä‹‹Ãœ°‰ÏÂåéÔÔ±¦éµ«ëÉ””¡n˜®™ÔžXsռ̿¡Ã®©õ›Us¯x’Á«ÔÁ·ì‡#¶›Ë¤rªlƒ·{‡ªrĩɒ=Sª˜Ü±’ÁÇ‘’¤z«º•µèÚ㺜Ãʱ̺«â”;Lš\‚®•Í•9F¢YmÏ»×´…¡cŒ¼¥Ñ™Om¦x£‘$$Ÿo¡†Ž)5 ‡*p5®IDATx^„]S·,Ͳí·rµ¶mmÛ¶cÛ¶mëÚ¶mýŠ›èYQQ=NveVí—=ægDd®^žrŒ,OÃfüè(u-iÊ«,Juœ5=ež2±£ž¸ ‡òÄ¥~:VÆge|âW\WòXf/ òÐf9C°­QÒ¨a¥Y —AÖ4²2þpÍPû]'# 3àì÷4 ‹R±ö"È0iF38éÉ,E‰Œôz‚¢µ<4“4¬4JKÖ’  Aé±4%¢:¬= =™˜Yxâ¢X-`°Þ0Ÿ©I›Ì¨9£(‘S™fà;Q³Ï(•¸opFÖÇ_i„Eˆ -Í D… ‚(C§…É)¼ '¢2Z‚‰!%(Ú¥MY&Š”BB™øÅ˜ S¥”è• \çIH8a¿Ñ%Ö# 5œÔŒ9O"ªM1¼ï¬å‘A bOÖe„'áDÜ\(Rô «À,%»%%iRŸvΫ¿Ð[G  ÷wÎINf4Ì<&€ ¢zÍ7eÆç”!ÒšAD¨be 0K`þ­ÿÐÃø\É@o'zÓ•KŸ¸ýŠ÷lÞ~û9ïJ K‚qnPbí¨ÒHMÓ¦&ÂzFé£ù•ñx<僔NK诧(t?{xóÇ©²~«XRrñEAïò9€nZ}㉗‘òVÙÒ_Y” •ó™ëÞF^o9Í€”…”J#]î~spJ?ÛûдÐò$  FÉ;jQÌrÞȨ7øqæÙAŠ0nž.ŽyºõÛ‘~Sx¦";›"¹Šq’‹ŠÐ16éÝtÉÓqU¢ F䬒Ÿ(£2|&=]»¦mÛ¶!ñUR᧦±õÁï}nÚØÓsÀ·:ZR õŒ¹ßûô¸W™ÖBÉá×`=Š À }°é äðï&=ŸÌ|ÓÖ~eÂEEúÏQÆaŸ÷詽UYÜÔz¹Â<TÇTîd Ö VÕv}hò@ÊÓ…yb™(wµÚÒoDô«³ØàÞâÈ-Np]€Zœè)‰¥ç°ÖK‚„—†P€+2Îh"”'•ª­‰JJ~Öf»,½OI¼¥}넾·¯gÏäÛÛ g-­¤:¾‡Ê”ä]î“$Åcîµ­®Û‘»Å3|«÷‚Oßü‚Ö«yò2 ´ºW¦o/¨pù6µýÍ™—Q5Ut©Ñ£¦IVk™°Ÿwý¾Þûú.´qiùPëèIT]–đԵÆÒbÉl˜¯Lªø ¨ JЏúnLu¡‚@íè 5&@ínx[ÑÝ?J Uó¡õL ®ÞÐÎÙ„ø‰²³wb–sa„Ô>q¾É$›‡65î¸Î«·ö™qZ Å®^•IãQÈ©íÃÇa&CMyäåsOòDh™`ÍT§(„vh[mÎjCkZlœ„8Ö £Fx{ЦºFéTTöEê;ýV„W[ó Ã"õ3v¡ÞÛûÞ<6LÍcl™á:>½§J¤IŒ˜‚š2-l> >-~_ï<Ãõ[P!¨…és:%¤Óø{å°Nï½y2}O0¢“¼w§šdZùó‘×a.`&Þ'éêÊ7ÆŽRï ÀÅàY1ãºLKWD÷no‡í@ZÛÅŸ×ááä˜Ä°¿@ ×† á¤ÅŸmèÃÓëj v% he¥T9À™ai‰ÀÙ1^Ù^“}BX ¢Êâr%@«|ok}kJœÀp‘“"-`œ|ê±L@Rƒ‘bÑD úZ º¶LÊ­o*yf*® >T¥Ù’v€9µ³—;=Ì=¿R݈º\I“ ÆÕQ…WrJOàЧÑÒ¦¹@+»[–í' ~n­(%SÔ™^˜ã<»ãæYÁ¡¥ø^4}~”/§€i­è¼-‹0¯4Ñ“*`z]râI³W ,ÌT2=i12Š©|ˆ°9œðó¶Xï¯Îs¡y!…·‡½÷3¦ Ÿjš «—Sï±[]áá µ œ §G‰X­)µ¹ÑÔîCb9gc‡ÐIûZƒ7S(Ú§áf7¢ˆCÃ7yÀ‰]¨¸zSlèó:oc’î>üÊð=ŒSŸ#s{yÕ°øšÒI°ö…ù¶^o0šÊ§¨iv„*é# R¹ÍŸ0 Q©Ìæ1_¯O:ª3÷4°(ñ›TÕüJŸ~_ïl¨`µõzS ‚œÐz+¢x)57†úøª\ƒ{s0Ô*½øxãœJ;q«†­×ë²Òâ owÒ£ƒ÷éÆ/ÓÁ°ŸQò,à™ŒˆªiÒ©X5툂Âg¨’wùbž*0Œ´[7s9|ÜRA)ÓF¤Æ=AåçÕë½Ö»#|=ô Uªåîc£f6þ“&ì¨,ôÀØ»z½~C÷­ÃÞ…Âѯ¢Žáå ö¢NJM ;*O“õ}_¯ÇT°Þ6hù4 œh;K®Z)L”ë•°–š°£ŠÖ _¯‡Jïú¶Z/E»ÎÇ^ƒƒwcAQÀâ[´3;ªzTúóõˆŸÒ|ÑÖˆ§.u+õî<–+D(”MZ€lª6k»^ ÕÚR_ëéï’qª,ëQ_.œŒò[Ÿºû|=Ì“R õžÉàl{z:=1Fó‹´ŽBF}̬?}é0³¢õ^IšÌ8öLm¤5wl£Ÿ6uxøD›”Ž+6µÂæÄÙÐîN2[²…iÒhôR‚œ…ú( §«ã‹¿‘&ÑÔë§ëì¨ß3ùøù(ŸóKÍ)Vßž“²³GKtÞ×CP¯W½ëç·ôÊ„k?ò­iF]­ãŒqBL9*:zžlFkó ªàE˜M)íÌ8+óS—™Ÿý_l¶ŸÂÔ°^êõ^R¥£@EÀ*þ¦¶d:ÖŸJŒ±‡ÚÒÉ‹§P¥Ôh½óõLJ~›ÎvÈi¿¡î\J´jë¥í2Púû‰ŽÊY uöPx({j#g•PQ··w¾Þ'r}ÿhÕÐúÔ¾ª=âƒ4…Æ#_B Mà ˆÞÝU“l®„–•NL± ­,ëaGS9Ïÿª ´¾H)zr" ­GÕ.5æ³ïâ{ õÅçBS(Ó/ܼ—2 DëÉ4¥…´‘ZÞ›½(@"$!¤PïëQiƒ…Œ\†Œf–mwÏŒç¯奦±íƒ¼Ò4F”åõz—&F8ÞÓì¨. Þ7PS6ë’ UÂ@ìlü¼£(*Lˆ ½ByÅïY€ˆ˜‘ÇËþ„µ‰ÖKiYõhk£QÝ÷=Y_j‚{sƒ^ns×ASdó2q÷GªT˜ÏÚÔÜר2LŸËã`Ćy¾lÛ}e¢+ˆeÔ§¡‰ü 1)Á”ZSç&4aŠ’ë”ɇ# ŠT&óO‹ôÚ}d© ÖÖ¬81)(4çñ»°J¯1 §tôä½L 8 ©“N«O¾ºì»J"U ê)RQwZ E}!/5=.ÊÇÝž?7…•'E->%!]ÿ¦C$ž¦t‹tn"E1¿Á#lf%Æ¡‹G=E­Á–2R=Mù!©Ü5Úˆ\íÎ"j·LH–(¯.EƒVw‡Oi~y£½m”ÉÒ³œS°ï¢(”ÊD$¦‚|i´ ö0öªQz°rõÅ0ož’8ù£-¡ ÞÉ'ð]<:¯^ÏL÷ÿÏ<ìÛ3.´ØÞÕS" ÷ê¤gë½qòñ(nÐòÙ¼øÝ°ÿzâ¾É8+ |£L-]Büä¢|˜§.Í÷ñ((Ú9»¶'qõóeF]ivuÎ-ˆÍGs›$KyµZA…òªd<=oïÀý!ÒcP{Ÿ'ñä\!¾ßÐã.SgŠ¢^ï{‰ÐU"7%“ÉãÏŸV­³"ìÞ¯øúÌ’bZÒ?¬¯§ÉB ‚òË‘#£°Ï_÷äÂQÉ”TÖ<¾›~\Šò©«‚«Å¡®Q¯÷¾Þ°~<ê{Jàïm !jõ¶^o»  N¥?f­ æû#®Kõ ·ý$é ÓuâóR¸¾<ȧFO¢õóÎ×_ïûðÒ| ¨¼p¿h_— ¥Õ”Á!¸ßÑNúxîƒ÷®Ç8¡õ,Ÿ¦^_òâ6˜ ©sõJÕF‚\Ac+“˱¼MPlîäJ"3÷zaÑ*×oï`³‘# i±fÉ×™|ušÄ Cä)²^*w®WÃÕë%ÒÃÐ>l6Nñí8ÿÁÓ¯° õz %$}Ä/)‹¨Ö™ŒÖ«¹z}ÀmøŽ2¸7PBÎOÓe'e×5óá±±,kµ!«u&_£ÅÕë­tšÔ8(«´¤7]·øƒÜÐÔÖëÝYzœ©ÈTéqbÄö•ðTsëõÀ‹Ô¸Â´)²+"ÐoÞ¥ú´Â›'˜Re=ˆš”qâFôζ̺•"‡„"&QŠhoðù:½ ƾÞ:&FŠŒäï55®Q³öáf‚·øûÚy&ªwÌóãb½½cÇ÷ïr}Oƒùýޏ~ÊÄ$E¾­‚òʹq§ï¨† Ò‹w}¾y-ºÖÁ“*í«1…Öšê”21õ•µÂæÔîB”€šjKk¹¬7•³Y>wñbÅc£¾oÃv' ª¼ëpƒÜš’‚¢ž;+"QoÖð ˆ~\®Ý¬§ÎÇ–ñº ¹øöç¯HlO‰ДOÓ„:±Œ Àjï ê ˆ®¿Øß¸‡/¸Š,.†"HTnV€Þã žiÒÄD?å«ôxÞ·aó?öt<–´3%•Ë7f4Z‘sŠ:˜jìÂY‹•GÁÅäž ©¹vxå¹ öu¹ëw"ÊŠ«± Z”¢¦ßy{`%mR¨ h×~àÀާ'”Ê^4¬_¹ ŽÚ5&ç™°¡ ´hæÆ­€¦º©¯åÖaÎþ¢’>=ñ&Â/Ñ톗 p^­ýê (Ó‰ëGݾ ÆÌŒ'§”…m†s¸”¼ø"EzHŽ N‰îÞKBšZÿ­³ï}|±º…taÍ/fàÌe&8ÅJI¤,pª \—l3Sô«‚üþØý¾PT >ݼ5jÕçãT}Oçɨí~ÐŽp>CÜ,µ&7^Îëõ`DùReŠñ ëpÑ<3ÉQ©•Q‹5U ¥·””Ô80Öº yT€¾/g˜Š“@’REßùïjI¡ùü[XxOúÌÔPÔ…ø€+©ñ‚cgh?öõÎÚËfùtõh”ô1ÕÛBjû›N‡%Åvyè(AB)JSŒå7F*ãK_–ëc&3ez‰°iˆG¼7BªP™¢„Îï)”BëÕÆQ2àŽ£l8$²¦€¬OÒúÆ3? ßoXÚÝ׫ X›>E·ZebŠ’>12[‘ªj³Ýj¡§`ˆ’y@%Ôí–%‰Ÿt}òŽ,ù«Æ…Š¿£Ñ(Ÿ ü ©oÖXXùi¶¤oùDˆ_6)pöª„ºÈÌ>!=jN‰µFÓÕ'}ªôï´÷ïÄ=ÙlI3®$¤_WQ¯á›®q47gzżðž!MÀÕêr­^42ö‚c=;^^ IûCÒMéŒl`ßvN׌{¨‚;k/f”pfÚ££wéèÞ¾Òa¯Ä@wÞ†µ[ßv})„õð§È’ÂÙÓ¥®üRë²òS÷Œ¨«4µ” – Y5á½èüÞ¼@ý^D;ÉpÁ_Q^ûÛÁP¾ /*Ðõ¢(ýûŽiŠØéŠTˆ÷q‡F¹·ä$Ç㤿“ T–ù Õnì E‰þ–^ÅÐÆh æ7í#!åÝyÑ)Â<ÞÖ=•öi¼wWK»OVlC:¶ËÎ:)5é‡äx!P-Ò‹ô ße.àG?¥{73J‘¬£¾™Í/DÀIúK†–‘òkŸž$¬ùaø#Á¸ †gjô©µe˜‡Î{øÞYñW(5~1ãu}KU΄ô^ì˜wñ—Kqóyæ+£LªÑÃ¥Æ]¾­.+ïvë#ëä~áíkzk &ÝzþE‰Jj*˜ëD-醑n˜xŸ||M“9bôÉ7…¥AÍm¸UÃgð5³:´y9÷“|rr0ÂYÔt»XRÒÞÞR=æöò šû%’ß³^ùôâ(Mš•ð¢(€vþ¥E‡VW¨CÏn?õèùV®ná ÉvÒ")ñ70îMi¯,w/>»;yéõ»XíLk2¡ï½î}È~%±g:*$?K ]ÙvAJbæF;ÂG±ÞÜPU/ã-U¯T\D”"¤v–e‘,5ÒqWïXN“²¨“¡ú'¡(…z@ê®ËÄ02êÏßÌÌÓVzwŒàAKígA¸þÙkOùýÆCw-mÙñÔâ(«MR‡†´éèÝ-ZÛ¨U£³Ô”:ƒ¿Ä@ÉEßL¥a…ôzM³°…`f9]4­‘Ë£…qÞ×–->kGý1[˜(>"-E ò¥Èæ“b©Û?¹.°{q'çëÚ$ó„ª{úŽó°M hçÓŒ’Ó^zßtJñ哼Œãò”t~RåÒ‡¶·¡¹Ñ•&]k4õõzOT¨ó~èOùOÞÉ4<1.e|˜<À‡'“Lþ,¼€éî}AFÏ ]á2Î."±d}V¬â®¥º~b\aÏ4øèÉÅÉ(Ó´¸iræ£gPÁŸÓ‘[åžSÛ­a9OBjÇm“ά›¾ð]بî&ÂÄÝà ßäïÒñæ ]¨}ÞÆyÍt”º DxPså0_Ï1¡)׈¨§'úGm½^§×¥4ßnã‹û¦#†˜¢ÿA)ªÍD­“°§ƒëeµHý‘`§D&ræHóæc½{îÙ°vÿrU”…»áP²ŒréÖÚQÓD˜­?J N6jº–ô’Q: ?üGvßäÈx6e´öw• ãM†~bú³"ðô–÷ÀˆQK“Å]ã¶¶¬ R¸ƒo²v4Î>PjâTµ®Ú”BL-Ú"ZÒ& EšZ¨ciO«ÂDèdØïIéo"´ç,k*ãò0õ¹ ,ÝÞ\¸S°Ðz{†Q-=zê¢'ÐÓÇO^HB瑦!ÐX€¡vT~þÌšrý1Fp O^ëS,Â~A 駬z³°žPÚˉ”õeç¡m~éòõ𞢶qXW¥£¼Ñ«ƒ$òÕŒÔZ†ó÷M;Úwgo ^PÓÜÞîòÍüé9¼bÜË Níu¢ d×M„C½%u×Ñ¡#—§3úÎÙ¯1)ÂIKëÐ3¬èïð ²²u‚*ùK_†­0¯rY\Õ|“xjÐsßáå ÔöèøkR•ýC{ä’GQ5Ã×WNå› ó·¬ÿƒ0RÂ(Ds^FqTÝ]Jånî§á]¨âô×zÎ/5Ø›g)ÓüìÖŸµcy:¤³Dîÿ7v6­¶E¾Ñ«k¬½ÖY×»¹ÞP^AI@t 8ˆ '‰ Dñk’ )‚q`Ž8ð'8S48 þ€ŒüA2Püæt×^OW¿Ukß>{Ÿs†EwWu}½o ¤mp Ô1è-…Y‰ ÐBŸݰJûàA’Ù Y…N˜a,àôåä[ÚM²¦½ÝgslG‘’­+Q\°Ë£]Q+ՃљBî4‘«E[(þ ¡;²*™ŽHk¢)õ,Ä?öör*U…âëc’eÉísø^Ì*šš¦^ãWLÓ,*ÚNº¹£DõHʹuº!b ö‰{Êfú™ LBè·n °²œ Â–9V†i’7£Y_>Š[Ѳþ„,fG±OòÖwï' ã‘>y¹¡JæLBùFÜŽŠÍrrøÄvÍG«È<9þîa–üƒ(¼Œ=’ˆêÒ}/¢ Ú² Æ~ !! Õ ; [A¯M}ŽÌÚ…¡#Ëü<0wüvþhÔ™òªÖsIÝ5E\·VI$ÕŽæÂÊ“¯)‰õó²… 'T_©œM™ØÑž—Š£Wb*ÀàŒ9tê¾I”ª>‰¯„ê̆ 0]*’g‹!•g)™‘oéu|ýŽÉ 2Oä²êü€¸BŒÍ>"ªR’ >,Ç×a/›yÞa°¡)ß“º¤K‹"`BJ¡D¿Ž¯·ì½”l«”4ä1 ðîŠ"/–4áå®.€¬C|=hKÉéM2Ã<õàê•èËeœÅ:!*ÌSŒ¯'eKWd5XéÅO£‘5\â›òzÆÄT0cgŸz¬È¢—±£‘*¡H¢÷ÿh‚¯§0ì€0]2Èå1G­#5 mò p0"Â?º…¯ç—³£~¾€èØEì¨Èˆ}Š<ŸØévt _/lÓÆÆýTmRCªS¤pòRþQÝÑØ<‘v:èk¿Z'¯îп,(?1Ó6ÿ¨2hÝdøz5MQ]>eøú°Ïõh¢L‰&ÖË_³bÛkÚ1Ç×kRZ…õ+Eçõajäe m?‹Dnˆ¯n‹ˆö?l™naAuä ¥{öšyÉ=máë„PG[&yq ðš%Iô 1‘¶¹¯OÞú1e(ª‚!jŽôö*¾> ç´.”I=|Áû”ü£×ñõˆ9ÖɆ‘ågreD¾ZoPþQ„Nñõ´\€gÒšˆþq¢âBÑ`cy›®ñæP6*àF¨¤èþQè ä}’øcïrÎ×øG)1&øz&3ù¨ÞæÜ1MJ§×c¢Âå§´Ø9ÿ(ÁŸ„EÔQ ë^HØÅ‹rBúQÖ)ÿhîæ±à$Û£õXSb&-…êpËQÃzäÌ8r#þÑ€¢ÚQÛS„„{Ò¸JÜV-ˆæGBÙR¾§‚qê¶s¿‡ûãÐçur˜Pý†(S‰gÏ û–Hi_؃AÌæØ£4Ù€´ õâò •Tñõjòíèû³÷š´pGX/æÉô(¨ß yc&Q¨‰™âë÷ºŒºÓÑ®l Àt=Ñ»ÒI¼L71¾§DöjOe+Àw¢=Ëgœ9ø„á-¹£øybóÙR?n;‡¯2~SíèÜÌ£k< EXO¯—çÉÄÌ ÁåëX¾&GÞ¿¸®qÍ8sìÛ,øzò’%s#¤EF¶Òu¶·ùû¹O<ñAŸ2§d§øúN›P¦ðŠ2±…Á|íuSâa-öÁÇx%žSÔóÄŽ:æ¼`˜±šQt©.,hÇDHš°·çøztû$¤ßĘi|r¼ØBÊe‘(ôFvrô‹˜¢öØQ˜TXEã}PêQû/ʰÀ×ûXÓÄsøu+áy4½r|NFyE©1 ƒÖMŒ¯Ç:‰§ÇчsîÊšd~¾ÌµUàU·D£(Ö³­Dvëïw󙸠î u¾ïs%™›óágøúh+)ìí-ožÎ5uC«Ìñl’Ã߯×{ Ú'd…7ÏÏ<ãðÍi®`;¥ÃÇÞ³6ðõöåìÝJ•e—d¶ß ?³(“}Èâg|øŠ¯Wtd_Qû‰ië_Ê .)ñ²š' BóùõÛøú‘¾§Â«í£u¶Õ]RW³KN^úÉn%®ñõÚªñl¿ž°ŽÈIV?l:8O(Úï‚’¸3%‡jm9Ÿ_Ï釙2$ w®íiò1èR#'ÐàšÐc?}[‰Ì¯7£ðxdGµ”‡‹°¾UCy©Œd|øúØÛWc¼ã1öHQ;WFüƒ/êô´õzaõ{jí:‘ŒHj/¾?z†²±§ó•Á‰œòz½w¢óH{ô½:Zg²+ÊÑ X„Ø€”XÑ'fƒÓ%˜¥™È>̹ ÛÉÆf-4ó”òÇéêÑkML"P ÜcæÆŽ½Èª;Êã~™Ré‡dØõz¼<ÇÛ sîH$¼'«0ÓJlEñ¡”þCѶ€X=Nˆ¤S>—íR ™xšÀX÷uP–;*剗pKäìíWkEÕÞù‰pi…dŽÐ¾õ|…­7{ŠÒgu&¨o=ætÂ>aFË×üfrÇžêüz¤$X w£&uÌÝÀ®âèM½”3é1l©à Á×û…¹/) Öˆ2¥î|¼<ñB1Û2æ€x6h*Úâà JÍásô½7Á:Œ±¡l¶¹qº(¾>Œë1÷‡Ðq޵~j®¨ Š:¡õëˆ`ÍËJ!§AóG7A”ÞÄ,¢2\¢ˆêAwäG£m5ÊÑ7ˆ›]$õåúú±“Ÿ,Ñ¢íBáNÓ£2à2çÈEñ™Ë&ºäS+.»9Q°59©×²WeR1ñžÂ¢Ëgãz=ƒlCÍqž’'”T#&VƇoê¡~€²*á´²©|Bå½S¢K%S¢æ‰ŠmŒ`ñ@ß}òä÷«œ°hE=:Å^Å7ÀÀ©Bœ¨rþH(ãÎîß+ë/Å-wôß|éÍ—‹&Í’—¨¾Ã×K6q#˜?øÞÕÆßß«ë#£yyET›ñ|aüw¡ML0ÖØÒ~Å|øväöMëõšÑûÅ…ÝñQQ%¿£ÏT’á“ÙNS¨nWÓ‚Ø!cœq-¾^¿ŠÊ%ýÚ÷ßút°3ÈÌ«Ý3f÷6fâ¢ív’L“¶TîÈ83<Ðùø‡Âãlšd/ÿªÜ…g×û oh$èõùõúÜû>'ÁÿÛ…l|è¼R£B?]X2‡^FŸ+a]Ÿ_ßÇõZCLk)+§ëëÇ¢K¾Wãþ—ÿüp7Ó¡þ}žÝž_¯:/õzÝQ#KžlO{£?ÏiÑ ÄÖ[lýîËlK‡g²#g(ãÈÆ®¨°ß‚­"¤ØÒÅfI-öšF1ŸVPjŒûò)îäÝû>2¤µä½ª¬ìw—ôçn†„DŒëжâz–‹B)1ÂFF \;™n©G?}¨°ëíd¬)rV’\bÅß\-Úò4a£’D.Ë*ÞÓ{eDË©¤Ê±¤óú·ÊÉ Î„¤FG!¨a »žôýd–·iú_™bñä} FêZ,™~÷³2\Âì=;J +[êaŒÌBÐÈ>ìrÆÑ{Æ^Ò?ípËš?üâÔº_Ú:JöÓaÃB` P¶Èà‡x&×]ÒcX‡ê6âSÆ û¨3¤¬ÌýûšÅÍÑ Q‰1éq¶íT<G¯ƒEwÓ•£ÿ»?¾Ìïøëy´Kê]cÓ;aë ë8ziÔ"r$Û §üçÎ7“wò_.œþçËÒp$b,@ë‘T]³|\=ßNPÂÑÂQûÚÃ]Q%Ü’ÊãÿꃋrIÊD EX2šIk¡ôáûl3â‹ôvôÐE¡su·™-¶È_4¸ó;jÔ/½€¯ŽaŸÆ°ÞÓ÷êso.>ë¿wcuÏö4•/B:œHŒ¹ãè÷žèpyšÈ‹–ßšqFÔ:±>÷À¦šÐùJ¥ÐÜÐ9vKx›ðž¢T‰ÛN ð©×ÛÿÊè;½y§LgüQcx{ñ޼¹¢³ÄKè|^b„žÈT‰g(J¼Æ{§„rÓ?«OÚ·=½oóOêÁ› ,_mÐàNZ_ª«'XpŒþQó£S[iš¾^/iuyëŸû€ô<¶Gï;ïàç]:'%¦RLS’ǵî, œ::×縢(SgJV8á ¨mo²‚ö ë„ð©ø¤ÿ9ûÜx D_{°ŽádC1ˆEn]cbbIÃwÉ#ËáS_ìð­$ú÷b1wyÚí/ß9ïm 's%pîíwÆ?š¯v m%åÌ~v“٧᥋ dàtSàB¶â”Óï” ñr|=æžÉͷάŠOòÖãcÇçYe4­ÇÅ׳©1¾^‚&…Šà“˜¨6M&dU‘,.;ªŸJcz­×«¬ÐÕèSoê.TJ6ýÑ|~½ÂW;ˆuDùÓ¼>¨›Ù‰©Yg½£X(Å×+£J»c+Q%~ѪááÕ‚gʰ"‡xÙ/k+¶‰ª-ÎÐ=‰)u—3Æ3Qcî²y's vÑüzÔž 0¸([ð2 4gæž·~Û)!IJaZ¯÷ )•çKGÊiÚ† .ÇSÙ†j½^zÛ1P­”ÐÌ·÷3®×›ZñõZÁ3éV†P[¸È“Ë Í@Êì©™óæ:¾žÎf_-iö~ú6|ëÃðLô@,’ÍSÌ: ‰BÍÂÿzôUn|¼"Öëóü¨’Pž¼¬ö‰¼W¯×Wi“w&aùrìi*¯Ð"ñžÐ&“P2ß>öW§eäí¨RÞ›—•WúÝÔeOÙN?RÆ«’ÐÄ­dn°)‡Î ”€$Ëäí¸P;÷öü™qˆ¸²ÆåÆè)HñžBZ–Ï•=EXHÑ{; T@o(d¾¹¼N8%£Äì/BvþÓ':$”­~œ1"êÑcî²/ÇŒNżèÃ,±íYŒˆ©–tçaB ÙJ™Àª<ã£[zžbìS8©åÿGЍ–¨ZØIEND®B`‚PyQt5_gpl-5.10.1/examples/dialogs/classwizard/images/watermark2.png0000644000076500000240000003510013245231431025316 0ustar philstaff00000000000000‰PNG  IHDR¨wŠðÈÙPLTE­¬ÿÄÄâZcæÁÕ霧¸¶þÈÆþËËþ»»ÿÀ¾þÃÃþÒÒÿØ×ÿÜÛþ³³þââþ°®þÐÎþëëþóóþüûþÝÚ",Ü ·ÑàÞþêZZÝ ÝüììÞðïýá¿¡Þ»²ôã##å22æ::æABÌÃôéSSܽ»ìllírrî{{ò››ò¢¢Ò¢ô¬¬ö¹¹úÛÛúõúûââݽ«ëýòóä,,ëccð‹‹õÍÑÖ+<Ø-;ØFXÊV{Ù%1Ù4CÙBRÙmƒÚ%ÊužÚ1=ÚRdÛ"Û…²©õÜÓõÌiÌ„­Ì‹´»£ãÍJiÝP^·°÷ß07ÍZ{Í¡ÍâÎq”ÎÀï䪽Ï9TÏ@[ϺçÐ_~èEEèLLЭØéot¾ŠÃÑVqêæûÒzšÄ«ãÒ‰«ìvxÒË÷Ń´î‘ïð„„øËËÓD\ñ““ÓSmÔ5IÔKbÔi„ôâéõ³³à ÔÂëöØÜ÷ÃÃÕb{ùÔÔȽóÕ¥ÈÖ'7¾šÕ×I]ÔZsʆ²Ët›øÅÅÖ9L΀¦Ëa…ÍšÄߨÀÓš¾Ëz¢äy„ÔNgÕ@Tæs|ĺôæÆÚçjpç¸ÉÅf’è^`脌Ås¡Í’»¶›àͰÞë­·ëâôÅŠ»×µØÍ¬ÚÅ Õí£ªÍºêÎUvÆ\†È’ÁÙYmð¬±È³èÙ‡¡ñž¡À¶ô¹‡Æò¿ÅÚ)5›ÓÊ\ôéñÐmÛKZЦÐÊdŒÜ:F¢ÚÞ˜¯Ñ±ÑÅñ¹¦éÒ»åÒÂÌ¥ÒÞ±ÌÓt’ᇧfÑT¢Ê>>YŒbò€ºâ—O/ÿ½ÅÅ50Üc–*fâÏ4먊Ÿz@æLÄê g…—|!4&ÂêØyëe{F‹Ž+ýq²#ãQ¡Bµ0]´ç¡ä˜”<¾ÀDïT0+Yfî>ý¢ÐÍMà§%â'ÜSàò™£ŒP â-K(­öÄPgûÞš²rùS‹>­¨¨YŒ>b)XCí!O \ó{p¬€CÑB,Ig#Ö—2GaQR:jŸ§§ÎÑþa*ÂO¯õš¡òõm‰)G[¢t„ÙY)É+Ž>}–Hÿp‡ovˎö0_W aœP 9|´§&Å÷‚âŠ0EIÅæIòµÇOs¹ ŸÃ¦ª|ûâè5ýÏææ…A«2êzæšMÃ>%°ˆ6NïØæe 5G%(€Q² ¯\Y=Fø;ßø¥»>75ôÔh´ª,=ßÝÃ[¹G³ ÿ^1£‘ýs#…yO~Ìr ›ÿõxË‚+‡¥0” :IÑ{.‚{ Jìó§‚dc?Ïa½'˜ï8Z›ÅŽyzFd1sÿ^xÊYYvZï$±sàgwlGq˜—žp ¬[0“oÝ¿è”T`æõ #Ʊlxò>­ö'FH/|ðt¹Ã=?ÅÎëà°jg^r§×϶Êrw„%'üÞå¿c÷°ÿ d¡G ¨èáÂþ?_ô¯ÿ©ý|<Ç ¿l LðƒÊ³ˆîfàI)¹ë9Gú ‹ãÁÀ$ºÂ nö…a¿a`ÀØÒª*„š¿ñƒ[¶ï¸ó‘ý÷ü °{PZ:Yá¼j÷ü=3´‹ RLAý¡ µ¾Ð%²µs°¾7ÉæëÇ~zpaÐÉóÏ<ýµ ìÙ~UŠ×¯òÚeM{! ƒêÃùsò¶­²-@MÚ%cJÅ£Q”iˆÃÊuÜc¬¥µÑ2Ì<óÌ¡ù!U Î:ÿÕ‘~lîÀ¼ÓY{ço;¸yÓm;vïê’1‹Aqðô’¿ÀµU¢g¸ï·@öõDÿ_R²ÜYÔP&û€ñä×<é­Ç8ãÞÝÏÀ‘î½dañ–q¹’ÛÙ‹~¦E¯¢LëTuô»¨¤ÀO–þ÷ Ÿîn¹úè  'Þóº§p9Ý6Ì3‹ˆ·F²’-^r;JîâJ‰NF\ú›¿ÿ¬NîF¤¤ž–^0…™Ïìæ­w^Jê*z/c茳™aí±–ÈQOIUàlP+ Ñ–ØÅO^𾋠®í6Âd%˜Dk'ÁýlÞ=ì´Å]æ{ýÐÒrsåîLîAi_á›Íž×%óùRyý-Ÿ<Æ `õ„£ ¤£…Âzº±ê‘aÃæJO€.|캽FöÕ¼D££uîêç”ÝYÂÝE¬¥äH…´è›†—·^™Fƒ¬^<)!­Ím:¿{`ÿ£úIÀe£¬Ó WO7æsÕêýû×ݼuaW«¦êp•D7›à¤]zÒy}óUAT»uÆO•Ñ“Š{ºÑej6z®Îœ}|´a„ÃÍ;‡ÍV§ÓêåT%ÁGÁ”2ÍR…4­£ˆSèÀ0”=),÷9Ó» :¾¾Îßp°iýB˺ϼ—s-O(ËØðA?áB”ŒÓ|ËZëè“çüÍ[}aë•Poú} ”´'Fÿ§É_;bÊ3ïõ›vsH›!«WH}»§MÆLk(×G£µžÝhoÐÖáÒLÓ¸¨/T«†EAõÜ•´é±ô>mÚ[Ö¯»ûq“}Ô\Æ«ìU—B‚Tö˜2eN,ú8eúMð# û]¤ç-îytHi“^î‰~¾jÇÊû–Š~«¨­Íûe@òXÆçí0µ*Û7Ý(Ç÷GS;‡&¬N·¼ï]º‚ï”4_þ²g&çO‚½ÐOühÑá\¶ñ°a«vªt¯R  3&`£_^•ºèð»I×ð¿5g83;´:€d?ÔÞ2(é켃v[Ö¦'ß¶nÍO®ùø®¥&UÊJûéòLŠ·AK÷«Å.…¼t!nXËw Üæ2Raof點eu@gZ´:ÍFO*zuIÂG¶*‹÷wB3xHîº B êB.ªè?)¤ò†gæuf±³Ÿãn˜jÖ°FT J´$ `óŒ0óÂQ©²¦0Â8Ú">Ñå'=öpÏÂüÚH¡œŸÝ:ì÷ ±Ï ]#³¿eE„ +VR½(@hôÝ k£¢ÂÓw`¥î˶H¯¸Úõ‰ãðïÉÂ=?»eç°?Óà0Ÿ‹Oö& "w6%x‰1Á ìôcåÚi÷dE»r 4Ô½z½Å¶¯Y¯#yŸƒ %<µG•ˆ¾d° *¹'á¨ÇTÞ¹ƒqeÇ?„2L ùY|÷Ës° ÐË~ÿÖ-;KxQBJܪp׎ÀªE”Œ à‘ÕÇö‘†Ns„þé!([|ÿ[½Æw^u&½0´æô¡7šd²ÓÀý†©{J,çaw¤uð( E3¸˜…¤q¶VWã1 *$6m6õ^ƒ SŠ8ZÖÜøÀ+–<%Ù;Žfq<ªëŽº±^ç,´æña‹ JÍY±ÔÛeÂÎD 8µÃ§•I´Ó’Jë9Â;uüÙÇÌÕÛMiAsSeL–"~R7QM 8Å–Ðßg¢¦ñ#/Nãwî>¹ŸP®:hì» ½§’×ã%0*ä(SYS–Ñ*üeÑ#ÜänƒÎA›o¾{ãÆMw˜jR“:ʘ¤’½4¾@í!‚ 7°Q®R[“”t’Ƥ¨53È™› ÚhÒ²g”šp»¾*EI…Ÿ,{½Ì—XxòšJâ~\)‘ DÂ<¡š/Y= ö÷hMÒ¶@ðKÁ¢?*¬So„æ‚6ëáÒíŽ(zº<ʼž¢D¿#2Qý´=ÿ8ƒ]PSÚGõ685BŒ“zUÙAÖš¡ ¤mæh’ćÆˆ@K{·0H_pR×(w–âªb«·ß,vœ±{*ií¼!SǯLzŸ u”÷Ât;ô2>åž*¸JjêN×6¾³RðeŠ“¢¤ jF›¡²{G…GÑQ{笩E‘ I€‘Àa%{ ̤NRˆL*_ÑæÍ4ꨪ:5%­ñEåçBGøÒ9œhÊ€àN©@–°yµ-rÑuºŸ7âç:ÖÎÜ=÷‘Ql—G€Ò1¢ðYI5éxsÚ¤vli\PÂCpuvÇb¯k•/e(ñd£ëÞRsTYSQ0O FóKEQ-Lªq6ˆLdjw,Ó._Ü(ü&ZÞ„@êÈOlÔÝt^Ž« £Ñ¹0ýš FY(”Ä©’W ;%OÕu[âæQ’}D ²Îýˆ’ŒÉWQx+³K7÷c3dB¯õÀUa§¼”t÷ ¼t4JÅdÆ‹½JïâE)ö¤¡è | N†|ÁI¿˜H Ø9Uâî…P7ÕªÄÒWëS*]“JrÔ÷§ü¡¡‘nÖ1JùHI¦3{ÌíØÝ[ˆ¨¥ˆVˆ×z÷&² ÑèIÞt 8+è2OìÊ7•~×SŠ¡Óá~=‹.଎EÁ™âŠ$ö¤âߌê´àáŠÎ PägÈQEÄPÊ—„rVPŠóÂ䎬^®XÁépëÅžé¡ÛÛ…ŸÚ–0" ÚÛE8¸§W*ÂÏÚ^èœEé­ôhꨞ€ÿ‡¡†²—ÒºZâ‹x‰wPÜSIvƒš±§¸'‡‘ 6$p¤ÂÒB»R=¬NÂL½„êõS<}Ò•N‹èc=¥HOõŽJ,*P5Ni…¢¯µrò¯Â{ÈFÈ”PÖÌQŸR{fpH¨Jä žàC¹Oc¨ íH{ý¨@­£e”o•q’­b¯ŸTNÕŽSêøEA¾Tµe2RúœdM^rW{k‘Xûü¥¥9êL^N áå‘Ä£1/Eôžø€˜hgâë8 cQßãrÞ’—NüÀ(/Â+¢'ñ‡‚G/šÎíÓRŸæTD£˜˜hª•ðãEI^ˆ¶òÅß&¬ÄN~O¤Ž_™äìMOgõ4I^/KhìEëKÛå'­é…[%èŸà‡£y 18Ñ:ÊX+x”Ÿ²}qø‡ähLdL1GɈ§ðÙ*¯ôZ/*SÚìÓk=óÌï˜(©‹2Ѳ¦ò†}æ‰àÌØèÓ~Tƒ%¤îu‹WÌ‹0êBI)w*•óõxKÜÌþ>½UrõÆY?Q ¯lƒûqS%X5W¦fêøóLÂNÁ* uÆœóRŸ J*˜' VÅb× ’b)ü&µD…P"Ô\Jz>Ì »+É¢8¹«ñ½À¤—ò¥c‹dL’+“Ë'áË+ðP¹döÑ"O$?*tŽe»TÚ¸Ó:ʇј—…§`HÂÑ2&¨£‘8j†WÊêy -„«=ŒH´1I.Oþ)ÔQ Ÿˆ§Âàv`L¡oJoФƒ‹(C·ÍŸ|R£ÈÕ 1’:|…5çô)[9k¨äÌA@ 7ç#ÓRM¤ËT$[û9»ËüÁFxÚ²àðB/¡¼ÅÌ» UXl>´z%ùvÌÑÈœ ÎéX·ÞÇB.Ÿ¹#´¾-ù«Ç® )¯ó‚6²ú4ÎiJ„z9ú‹–ÎÛÝÇ€ú»"LÂN±ö8( ^ŒÅyAÏx;ˆðãh›‰þÍòsÓ¾¥ÀDÑsjì,¼u;‚D”ü¡„?Ö?‚Çbo†d·Äwu¤ˆ_£IÕ)7*Î^ø*lUƤóúØ–"޶|–V6mm¯ÁÊ>º š) S¡"|xè[:óbë—Ð$aNð•ÎëµèdÏú&«¢»þê¥MÀÚ ñý=JIâ¦ñy=‹_ äcB&ÅTäjw„Jöëƒèž© Ú‰ðW‚Áª3‘´†&*έVàžôx¢)ÛBÜG˜ðÊá…*šî) _“¶y¸Óô¼§˜¤6Úp]d+‡€SõèX®&Iq³NTÅ––A"â~Â(: â|™àþ@”‘:*8ÍGÈ¥.’ QA_b’08‰¾r£éDŒÐ¿µ£úžÜ¹«tå°bGÙØ9ªÙ<Þ±µ*¤Kê”íèj-B–ÒA[ª(ŸÊÚ” ØQ©”T°¶cŽ*£×>|Ø dÝ@¸‰H½©T…@­°CKò&yÚqŒ_¦£< vZ8š6&ÇÐ'­ÙÏ‘ŸbN2µ@/¡%< tnpŸ0‡†¯XY} *©ë,Ü>(Ä7¡Ž†ŠZ D):VÉl¹ŒMIç¡ÖÔÖ²¨èÓ#:{=enâq`òúšÒ…'_î)˜²Î': y}”‡÷•s8¥ÃóOÌÔbèü#­:¤›HdFÑrÏ,7Äb°Å; SûØ”d.óÓô¦­{ÌÔ¶–|zp^¼†*‡ß,¢8Ò÷}üž!kBñSï¨"éïµ­Tªœ,>2BªÅ®ózþ-Ô^hï[n¹§E”Ü<*­ÐšXâ"ö¤g*#w—Ûn~Œ’ûtŽÅå>êu5—æ%Þâñã:.‚dÄ!éñøtyÔq—{0nÅÖ%9ˆT Ó.TóSH-JG#ˆdL®òôw¬&ªh¬QDªöÃÒ-Z ³€e¡'šr§~´Ge®íA%âE¼^U>Ø_((€ƒWø(v¦ãQ‰ð›Ò˜ÉûLæ“QPÒ]4wÔþÎ1íí•­õ•š %~‰ææiv*=Uî‰-ÞôZ5€PIG;~ƒ;C-˨Þu¸®|ij(½âù£¡1éà ¤ÿ=8®øÊ÷‚“Cf[élDi©j*ÑyStŽUÇ£qÿhjŸÉÞhN8ëaÏw„¼Õî4E»LqÚ4.ÊS!~¤ýhA ¸`O7-âÀg ²Û'¼Ø²¥‹’†ký„+¤7ÒÛöT̽yºó”n [KÒÔ€°7޳ýºñh3¡ â¢x6œyX½»V(™™š¥ñ&£@•êC†ï,SìNó†˜À ’;n{ûç?:lІ²ø5LæÊq©$ÍPÙ9Ôt"›Þf¢òxT#‹Íiüg÷ÂóË1GÕqÒ7üžn{Ò‹xÛ–d® Jbf9ÿ™½êxŒûGcâ1JЧ²s';c"~Nå%ŽJÚ½pTw;êÊxº-SLô¶k±}˜¨|ª_zè4¢ÄwåÅö<”mI€ŽGÃÎá‚›r©KK±5WëR%x䊢½¨@ŠS ÀAeîV‘óø™èAí©^"·Õäq´–Ø©fsòO2–’ªÁèU2 5§ÕsKÄÓétµ Ž—‚*‘³>ɆV/wjù´1µyæ0ÍòUçÖ»€² 4¾å-‘Û« ¤¹¿sOÈÔ`‚³p6lÒâY¾öF”H0¡Äà 㼦îÒaÿÉ z„7 Ÿ&d'Yê ’Ž*ÁgeÍÁ“§Ÿ@².Ñïî;Þ¸}aÐ1Ÿñh “6m•z@2/L¼‚ T’¾°@Æ èÔkº6Œòk3Ï’‡¬5R*<ô »n'’CÚ7U^þA*Ü e çn8ÿL•ø'3RÖ¦6{{]qÖîžf;òôåîÑ–¬î"Ó½RŸ¼býÜpïh„ï<«ww×Ê|Ã?»T¢oic*ˆ¡^ÂÒœ§ùÊ91@žg*iæO\%A¨¿-3ÊŒ[ 7OÝpÔá#¨t CßÉáð4"mJ yuxYSE'BiŠ{\Ë«¿k‘éÁ†–}÷ <Äë/˸#W[““¼°‰L Þ”„X踒™ý_¹é¸sæ½±ã£ìvæ ðêuãñÈ*n&¤±èEæE˜‰”úÈ,¥R¼è­¯¹}ǾÁ± ¤Š£¢‹:Œr| ?–P¼óÄá0é{Ã)%ð…$ðTEže_…œÚšNµWo^mÞ“¢¤ñxä¢`¤x+ÑKu¼ŽøÀ¢ÊOoØ€}:‚ÓÞæý(iσÙ5H/8ì‹K­‹¬nìÎGÓåûf¡6šØž”ƒ*+Ú¼©6\alfwW:µ“¥þ\TÒLÿ˜°ßÓ ¤…â¨04LG*£ÍUcA.Õ3’-=}´6í«ƒa~@’Ý 3¹¢ñi]CS¡’jŒ…Ü2…²çóS€É2`¤—ÑØÜ†c'Fúr§¤™røðt/…>&Õ‘LF¨î¨UX*: H™›pGïéïï(—ÌG¾¶®É“Êäô-°g”)ަËdÄP®<"R­£¹êÄCZ1¹87…g+rÅ gL¨¤7[%½fF€ò7QRíð•jŠÕ§Üð”tµ4—ã–xU+N[z=Ì‹Ê ÈÿýÉõFc=aE™PÒ%ÈD»]PaI¨¤SkjªF¦šdk¹ÐçÖyDî{GNIÿkR&ÿ‰uýõån¹g†â=a€%M&>ó‘{§æŽYJxR{ÁKO "Õ}:ÂQ‘~½f«v,¡×PBzíÈ*iO“ÑSRÒ+±_`s ÅŠHJRÅb¸<ëâxÅ£?*9¾úMÁl×sjQQçI7u´Ë‡"Ég s’¡Ü‰ÞQÖQÅRÕTnõT¬íž}É(ä¹uwlÙz`¸‚O奤v¿å¾KP'¦?bbjŸV>r½ó£qC|D‰M*ó†útø{Ÿ»î:TRÂi†Ó¶Šº\{ÄÊ}–¼SRYîAAõ”–Áª—,µÚ8Ç]„áÀiíŸÀ×Ò¨UcÇ6L›ÛUÃZcì¶ Ñíg÷ÁꞣèKò¤=ä'\$sÈEmš×¢¾§¦gO…„O¤£1O«*³C¸Ÿ~ ¡ÝÙ–87NX™öZ‘®éx9=.÷Ý /¿ìÒ °€žMœÜô »M‹Ó˜RýÆ5 ˜£I¾Ú°×}Ùœ©JVÒÝ Ÿî±4C–Úά’N¾ípÐÉ©·HO4ê±Ñ€líx¾›÷|ÇÐ…z>øÙ}ýNQê©Ëœ 0ÕPÅ”´ø½üþI‹n•1ö ÒÙ†íÖØ&Jj î%mU†x¹±yo¶2G†ÉþÀÌ.*¨£dDœÔsDŠ´vÒn|×à=oþ!xÄúüO$•ÔPùÜb@†3<»Ÿ“e¬ž¼šî$k Neùéèž#¹}Øoå–ŽáÏX¤Çƒ’‚ÙçU9 žÔÀüü]# sþŽa‡ ¸á oD‹ãÞ¼V(v¹¨½ÖÍ8ïÎäH_ƒ*JJZÙë `õæ¾Né¡Õ8ÓΦ”©7ÖÓ^ÝxxX/ô¢ËÏyÓí® 9ìÈ_BpIŒ–¾Ú~Öœ%.^ø}ÔχööîÛ¶?úÀ°SdD–•ÀP %$Ñ–€lÅ~4ÊEš-ÐÓO eé  }RÒu»os¼”ã΢ÝÍ;ve–×TÐ)K§£jú,ñ)ÞOw‘á†>…~ÎTCPÜ·² ½éŒû &tÉý˶ì0.¨Q£¿÷J%$õ Ù“"Kcmyɲ¶ü0(9€v¤%÷› ³ôÇ*s¸ÛÂ¼Ê ¯ò<”J$GZDM'ˆ¥)÷¤û‰ÆÇ£fª<¸Á‰žŽcêÔ–^œS?pÄfSþœÑm™™ÉŸëE¬pu”*±W|׊uî.<iQý箞k}ùÅBó;†yÝl$kãÑŸ°/ÇÍMoߌ=¶®âCƳþ’è'¬Ïj¤›Ö¶íKÏâR5;hÕL§™¹ÔK•ñÓ'¬CFfc´¢öö™S,ÿpÒ×»œ1ü±–œ+Ú¯êt£«ÏÙ,:oÉWº§$’|ØTÒ€ïxÄ'F'*=Xú«àöCúÏ,qäîPóGÅ=yH¼eJJ ÍfV)ÍNÀ*úi‘ ÔLºÛ³Œ`þ?檲“±/e  ¤w¾{ãÊ•«×ݾ0œá:©®9;‘˰q½…cÁ¢{JÙü¸^|©>h E¤z26(éݼÑéwfÁ¼é*š>koé}Q#¼Åîýù£–Z ¥b© ­'õQŸ*,åÉf}ÜDŠ\̓©¤-3 ó0rNûQEõ3&ÑÙ3,¸þž¯¯b¤•ƨŽe‰95ÚÝë)oÍô6Sé6kIÛ¼><€0ev{Òìj<"UK>þ+a±$múË-Ð-„©ªÎü‡%4KEòØ:ècUóž´í‡²9JøØŽôÔáyÈ9^õ»WÜ”çª<Ê·T WÓÇWåà•f)_ãýh2gjDJj=éœÍ(G—€äs$ò•QŠÇ—M&¶zÿïßÄÍŽ=¥G+DìÛdmší§Ž3Eb×'š2ö¥lN‘ÝŸí¨¢Ñ¨ÝQ°ÖõÔhä%y©3w%þE! VOóõT4ÓóGõ! }ž)²%½Ý jdÏs@2Z³}8C8‹Ä€¿ §¸m™íÐG½äüÑCŽúJëgn²ûѪZ;×÷òè(›4:¢nGC¤@¿îüQØdŠûðÉC1Ks{ÝtäºM&ÇèËßçú¿ÊÎÝU²¬ ã¾êŸ¹¾|ûöiކIÔWk@ø‹¸yÖ×^á×óÄNWñ4Š\v2ãì2¾ÎÃÀkÚs§c—J=Ôø£A’…–XÈy¥öÀ„®i°ehM0ÝKb¥œ±n$×§kXÎÙ‚Òtô'xyµÒO‹MÝ2qC|d´œ1jè‘ò‘ÔãäûÇj9΂»­uYEa8ðà˜žŠ˜ †ojŽ¢»]tÆüÃe˜0–Z[ š†E¥È´1 Þ,µ&Tõ³Ÿ“ÖÝâq·ÏÇ…)ºy¢n‡ˆÿÿ@Ï’¡â¤„ß ‡a-WòGò"ºfðö$M„£¢z‚ GC9çå\@ÿÈ’‡àíº¡Ïœ°g…Û72IŠÒa÷°¢eÁdnÜÅ %pœ1r7e+¦mgͧýܦMt®F"`Þyšã%ÆL¾¸>6:Rº~âæ­ÖJv~u©‚©'PªþeŽzX n“È4¡ÏM„6Ũæ'9Pýãns•È`©Ì“B‹ë:f½3¤«4¨›ÐÖIÝ«Q?öíÏûñ/(K„’[-6¥ÌÓ„j殣¾Ì¶‡ù¼¢fŠñ“žgÃÍ»”]*:3›0zòD›u&Ÿ J:öøCõ”ždå/ó&„Ö_“wÚ²£M§ÏFýE†" Õ7w7Õº‰|œ¹Ó£›©7-g[ å-Î/ÃÔ‹¼: -¶§=ž/A¾ÿ[ùˆS™Ï¾¨C})O’WI!A:*Ý3Mw-¯‘š‡p:t›õtÒÜ…ÊÒ`¼¾ÄÃ× £‡ÌÞßÑG¼t 5ðµ^$Ê^åôM¨5Å™PýøH‹ǧœvò&¶ºÅ‡±GŒG<|Ùyó0(dÞmÊ0%‘ƒ¿®i,Øîi¢’cë5þ%†Á¥¥²¡o>˜Wseô~c¨IÇ™"5éÓ›rã•Ð.3agd³¥gPø!¥—‡džôUà: ñðóœ¶ µoi#ú°Rø¼Â“rø,‰Ù5¥e*º¹UdÒ7 RöHÇ{Z…÷ãt‘m>Ï~h?oЛgZ¥»„¡4M¸£ùø— ïI²$bǵбU5oÕpÜ|›ÁÑïIÄe-”ø(³ŽŒë±FÌ‘2çÚÑ(÷±zǼ8ÕhX bqð6 ,ô—𸬵Ü{Ã#aû?YàáÏsY²7a,`[¨³´®ƒº"’Žç‰‘Kvæ Yj|¥ïìí2ûœ¯÷*#YêZ4RYS&7š¤ž«%Dbü[M–Rӓ̝›*z÷~ì Wz´Þ}ÃÜÓÑÔ(!jj,3q±rK®Š¡Ødý6ç¨}P´E$bÒ޶DŸ#Ò)õÈEœâ*óuƒ’£IìGùñà.]¿®K‘ê®^5E—„–ÉÒ¨èó¥ŠzûâÄêÛ’­¿°šH±Õ–{M‰‡OÁ÷Üc4ò¢R1]/æóµ±ç-µ=9•ã”Ôh`íq=àý&d ô²•‘tI£¥_ŧè>Ф¯;%J‘E§Ä9º:†3a¼±Íq=¤‰$F\¢¥¶”Ò‘Ð¥¾q[šœ£4󼟄LLÝãúÆHD¬ ÝO%&c¨[OGÍ#|{VM¨¤Pýau™xøÕ–àþ'/wc+šj"\ikò4ܶ·„Î=CÙ¥(÷ÜgÜ‚(eýÄÐ.m¸Ô/„Â¥²í »¬'²tÑozVmMé³|Zù£úƒYr4ºœ÷Dn ñê&ÂH-¶ õ/ž!úhY_nÁ2Y…ÑÞ+j¡ +̆š…z3¹‹m®&õ™­Í\¾iΫü(5ÓDã©7óy»J¤ôž$LÆIjQãi”ª‹$RÎUÚ¦Î÷\O€ÔÐMäÎö¥9e½V¢$ÆÂËcöIz“ËÁÉ#G-O†§²®¦ú ÝABt~™ ’Qž•½ú^ƒ†ÉUTš7ÒJ=KÔf8O«þBçKcÅ#o÷”G+I’‘j2o!HôžôqÈÇö4Á‡6ÅŠžeÈLæžò%52KÔ“ŒîDiØaC½ðzR?:ûÊÕ‘ûoz$HŒ0¦OõÚùf°囡"u`«ÝèßÄ¡t†Fï~Í”Ô=>±æ/*§dÞSf›âÂÈä;/F©@E«Ÿ?#¼àæaç6l5ÕÅ›H,ýQßkêa“ªw+‰Ì·”iGJ0_'n%ôBOË:t¶Õ\Ù6µâ’¦,>YZ´U ù˜ÉuÉ—ìO3æóv‰bŠÙ¼héõ.=|–™Î_:÷A˜Øë(AÒ +ôf­ÁEIçN¿c¬#?úÍç3^ê’nåú5DË,…"/^W|låP:zNž×î‚Ð{vLõM¯h"?™O¥†ºh›u½çóyô"¹pH=἞¿Åf®ÃAT‚©¥0°ÓÖ ñð'uê¤LIŽA©3Ù48iÔg4x±Cã±£QŠQè m/“ ¢öL,-½òølЪ'mí†æ‡’ÌXıg› sÙ߯1àßû0›×Ãn¾he›°ZÀIq¾w{Í+òðM?ýƒ(eª°LØÕ!™;ý-‹yòë«F.éãKŠ€áã«…›w õzTĜ֠¤rûpluÓì2\=ͱ™e*z 8RƒOÔ÷Ú†À¾õ扫j¡@é³OCëL›8‰@ѪæI<A×$IÁ™BíäÊ*õÒm6cŸêz={_Z íôÚiRA@ôOÆuP 2d‘N}¦òöÙ§ôø¹[Ñ6dÉÔÂÅç¹Û†CVmwmÎŒB‹Ñå ûcBdí™­q“”úÓÙ³Ú Í´ŒC»¢ÛñAªÆLö}(`^™Öù‘*¸ßp˜ ­ÊL¬‰µœ U—;Õ“­ëD ùÕãçîýùòì@w:ÙåZN6ˆ¥Õv&)‚&©ü7>·9'Ÿº³K’<éðÉ×gBuúPù~ðÙå»UŽ0¢]ƒ†ijPNÛ5}ðhÃ𾊎ÞÙÏë»<®WAÏùÑ¡qbÇ[n,aX²¹TNÚmxÿlÖ?þÑë[¹r×WÞýþUÀÇ­²O°JDnÏ´¶ÐŸƒ+ª¤xëÛÞºš»ÊÒôŽ]{[ÞšJ‘%„Vtö˜ÃM;ö]êW1u;þ·wBN¦HýW‡ô?žiÎ3bz¡ZƒPΞ,+ b~ô‘¥q¾–¯oæ^ÆÞ•ýÙüõºSgá*#¾Æ`ÑÜÏ—%äó*cS¢~ôaÔ¦+ø4'õïçEÅW¶¿¾h(áåå ÂÔäýõÎP}[å“~íZ%F•Ï‹Á~~[¤†dç¾”úì•ØþzÑ(jëýõYÛ O§›û{/M9AÚ÷YÞ½>:¨ ýæ­]­´¸íµe!¼¥8”ýY:üG¿¤Ëê ÿéÞ‰\·ÌÚ2U±÷KJ$Br`&Bî¯ÍØ¡F—tÙYÐWÏÛ>Ì'Y¨RÏ߈J 0JØ_O¸Ä­Ùõg}3é¾ÿÕM‹Ê…ª 8,/K˜ˆô•±Þœ¥Ø_Ÿ÷{ksûbßÔ³»¤ËýŸ¾r=‹ÈC}ؤzæñ’=ŠýõÀ T&÷Ë}cÔ$,%O㞎›?êÐØ4 µzÂ%.bŒft2ó4e…¿¡g½Ü÷±}ã“È ³–ò›åpÂWÔ8   '–R/e¯7âz}µÞ»9Oì&2÷~9þ­'ÈT‘êÙfÛ_ϸÞ7Å>è ¿|x²FR/7xÒÏ~!àtQ¯×J™²^¯ß–ò£d¨ˆÜ]žîݽûž‡wö3-‡ ™•.¡ƒW!¨Ñ»wy*»Þš-ÌôîÇy奫“ͰæÚ Œh¼¨à(S%è}Ÿ—[óæì:o•Ûi¶>g>Z{„æö¬í×WhOèxÓÑcD,Yû¸ÀZåpÌ m”ª ¡Ô½Ñó õúÉêõøI—téo+€K‘ª*;ßßܱ”®'H Á‰RÀLL2ÙNð´šgÄxô匘¾Á‘Yx¤V÷ýõlÌ©œÞ͈F´¦¦ZÁyœgš¼VÉ&+D©O“„ˆP©Är?±Ä<ßÔÂ.¹c’9*âÔQ&¶ŠÖtE‡ „.øÏ„¥C¤'$ LŠæV÷¶ãÔ¢º¨˜b$O}±)E‰q}‹€žÍ àòºœ ºçq~ñp£-‡yG͆Ná›9ºí K9ÖPh{ðcB™Nh|±Rbït"‹»ŠRUn0ݰ úÎÕÑL“(­1I6Qœ]”VØP±£Ç˜ “ô¬Àý<})QŽƒw*£¶ôˆ þ¡¾/9ú_Á*Ø ÅQ“IEND®B`‚PyQt5_gpl-5.10.1/examples/dialogs/configdialog/0000755000076500000240000000000013245231431021364 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/dialogs/configdialog/configdialog.py0000755000076500000240000002115313245231431024370 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDate, QSize, Qt from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import (QApplication, QCheckBox, QComboBox, QDateTimeEdit, QDialog, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit, QListView, QListWidget, QListWidgetItem, QPushButton, QSpinBox, QStackedWidget, QVBoxLayout, QWidget) import configdialog_rc class ConfigurationPage(QWidget): def __init__(self, parent=None): super(ConfigurationPage, self).__init__(parent) configGroup = QGroupBox("Server configuration") serverLabel = QLabel("Server:") serverCombo = QComboBox() serverCombo.addItem("Trolltech (Australia)") serverCombo.addItem("Trolltech (Germany)") serverCombo.addItem("Trolltech (Norway)") serverCombo.addItem("Trolltech (People's Republic of China)") serverCombo.addItem("Trolltech (USA)") serverLayout = QHBoxLayout() serverLayout.addWidget(serverLabel) serverLayout.addWidget(serverCombo) configLayout = QVBoxLayout() configLayout.addLayout(serverLayout) configGroup.setLayout(configLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(configGroup) mainLayout.addStretch(1) self.setLayout(mainLayout) class UpdatePage(QWidget): def __init__(self, parent=None): super(UpdatePage, self).__init__(parent) updateGroup = QGroupBox("Package selection") systemCheckBox = QCheckBox("Update system") appsCheckBox = QCheckBox("Update applications") docsCheckBox = QCheckBox("Update documentation") packageGroup = QGroupBox("Existing packages") packageList = QListWidget() qtItem = QListWidgetItem(packageList) qtItem.setText("Qt") qsaItem = QListWidgetItem(packageList) qsaItem.setText("QSA") teamBuilderItem = QListWidgetItem(packageList) teamBuilderItem.setText("Teambuilder") startUpdateButton = QPushButton("Start update") updateLayout = QVBoxLayout() updateLayout.addWidget(systemCheckBox) updateLayout.addWidget(appsCheckBox) updateLayout.addWidget(docsCheckBox) updateGroup.setLayout(updateLayout) packageLayout = QVBoxLayout() packageLayout.addWidget(packageList) packageGroup.setLayout(packageLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(updateGroup) mainLayout.addWidget(packageGroup) mainLayout.addSpacing(12) mainLayout.addWidget(startUpdateButton) mainLayout.addStretch(1) self.setLayout(mainLayout) class QueryPage(QWidget): def __init__(self, parent=None): super(QueryPage, self).__init__(parent) packagesGroup = QGroupBox("Look for packages") nameLabel = QLabel("Name:") nameEdit = QLineEdit() dateLabel = QLabel("Released after:") dateEdit = QDateTimeEdit(QDate.currentDate()) releasesCheckBox = QCheckBox("Releases") upgradesCheckBox = QCheckBox("Upgrades") hitsSpinBox = QSpinBox() hitsSpinBox.setPrefix("Return up to ") hitsSpinBox.setSuffix(" results") hitsSpinBox.setSpecialValueText("Return only the first result") hitsSpinBox.setMinimum(1) hitsSpinBox.setMaximum(100) hitsSpinBox.setSingleStep(10) startQueryButton = QPushButton("Start query") packagesLayout = QGridLayout() packagesLayout.addWidget(nameLabel, 0, 0) packagesLayout.addWidget(nameEdit, 0, 1) packagesLayout.addWidget(dateLabel, 1, 0) packagesLayout.addWidget(dateEdit, 1, 1) packagesLayout.addWidget(releasesCheckBox, 2, 0) packagesLayout.addWidget(upgradesCheckBox, 3, 0) packagesLayout.addWidget(hitsSpinBox, 4, 0, 1, 2) packagesGroup.setLayout(packagesLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(packagesGroup) mainLayout.addSpacing(12) mainLayout.addWidget(startQueryButton) mainLayout.addStretch(1) self.setLayout(mainLayout) class ConfigDialog(QDialog): def __init__(self, parent=None): super(ConfigDialog, self).__init__(parent) self.contentsWidget = QListWidget() self.contentsWidget.setViewMode(QListView.IconMode) self.contentsWidget.setIconSize(QSize(96, 84)) self.contentsWidget.setMovement(QListView.Static) self.contentsWidget.setMaximumWidth(128) self.contentsWidget.setSpacing(12) self.pagesWidget = QStackedWidget() self.pagesWidget.addWidget(ConfigurationPage()) self.pagesWidget.addWidget(UpdatePage()) self.pagesWidget.addWidget(QueryPage()) closeButton = QPushButton("Close") self.createIcons() self.contentsWidget.setCurrentRow(0) closeButton.clicked.connect(self.close) horizontalLayout = QHBoxLayout() horizontalLayout.addWidget(self.contentsWidget) horizontalLayout.addWidget(self.pagesWidget, 1) buttonsLayout = QHBoxLayout() buttonsLayout.addStretch(1) buttonsLayout.addWidget(closeButton) mainLayout = QVBoxLayout() mainLayout.addLayout(horizontalLayout) mainLayout.addStretch(1) mainLayout.addSpacing(12) mainLayout.addLayout(buttonsLayout) self.setLayout(mainLayout) self.setWindowTitle("Config Dialog") def changePage(self, current, previous): if not current: current = previous self.pagesWidget.setCurrentIndex(self.contentsWidget.row(current)) def createIcons(self): configButton = QListWidgetItem(self.contentsWidget) configButton.setIcon(QIcon(':/images/config.png')) configButton.setText("Configuration") configButton.setTextAlignment(Qt.AlignHCenter) configButton.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) updateButton = QListWidgetItem(self.contentsWidget) updateButton.setIcon(QIcon(':/images/update.png')) updateButton.setText("Update") updateButton.setTextAlignment(Qt.AlignHCenter) updateButton.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) queryButton = QListWidgetItem(self.contentsWidget) queryButton.setIcon(QIcon(':/images/query.png')) queryButton.setText("Query") queryButton.setTextAlignment(Qt.AlignHCenter) queryButton.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) self.contentsWidget.currentItemChanged.connect(self.changePage) if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = ConfigDialog() sys.exit(dialog.exec_()) PyQt5_gpl-5.10.1/examples/dialogs/configdialog/configdialog.qrc0000644000076500000240000000024713245231431024523 0ustar philstaff00000000000000 images/config.png images/query.png images/update.png PyQt5_gpl-5.10.1/examples/dialogs/configdialog/configdialog_rc.py0000644000076500000240000022044513245231431025056 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sat May 4 15:15:09 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x1b\x93\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x60\x00\x00\x00\x54\x08\x02\x00\x00\x00\xf2\x11\xa5\xd4\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x12\x00\x00\x0b\x12\ \x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd5\x03\ \x03\x0f\x27\x36\xc5\x11\x92\xc3\x00\x00\x00\x06\x62\x4b\x47\x44\ \x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x1b\x20\x49\x44\ \x41\x54\x78\xda\xed\x5c\x77\x90\x1d\x45\x7a\xef\x9e\x7d\x9b\x77\ \x25\xad\x24\x24\x84\x84\x04\x16\xc8\x46\x27\x8b\x24\x1d\x20\x71\ \x08\xec\x13\xb1\x10\xa7\x33\x20\xce\x1c\xa6\x08\x55\xa4\x32\x45\ \xce\xc9\x84\x3a\x52\x99\x60\xe0\x70\x51\x47\xb0\xe0\x4c\x2c\x63\ \x62\x95\x39\x71\x87\x41\x75\x60\x81\xc8\x06\xc3\x01\x26\x0a\x09\ \xa5\xd5\xe6\xdd\xf7\xa6\xfd\x9b\xfe\xba\xbf\xfe\xa6\x67\xde\xc2\ \x7f\xe7\xb2\x69\xa8\xa7\x79\xbd\xf3\x66\xba\x7f\xfd\xe5\xef\xeb\ \xd6\x69\x9a\xaa\xef\x5b\xfd\x96\x68\xad\x8d\x31\xf4\x89\x86\x2e\ \xbe\xa0\xc6\x9d\xfc\x59\xaf\x73\x94\xeb\xe2\xd3\x8a\xbf\x2d\x3e\ \x59\x76\x16\xdf\x28\x1f\x55\x6c\xd1\x0f\xa3\x47\x95\x8e\xad\xb4\ \x39\x5c\x18\xa6\xef\x49\x86\x1b\x78\x2b\x49\x92\x0a\x81\x0a\x68\ \x6a\xb5\x5a\x5f\x5f\x5f\xb5\x5a\x23\x6c\x19\x2c\xfb\x57\x7c\x2a\ \xfb\x69\xb4\xd2\xfc\x93\x22\xb2\xf5\xae\xe5\x02\xd2\x4f\xe8\x15\ \xc5\x7b\x4a\x57\x2b\xba\x3f\xfa\x2c\x5f\x79\xad\xe5\x0f\x8b\x74\ \x3d\x0a\x35\x34\x36\x56\x3a\x3a\x3a\xe8\xe1\x15\x26\xb9\x17\x5e\ \x78\xe1\xc4\x13\x8f\x9f\x34\x71\xfc\x48\xb5\xaa\xed\x03\xbe\x3b\ \xd8\xee\x65\xf6\xd5\x0e\xc2\xef\xf4\x33\xfb\x93\x3a\x2f\xd2\xdf\ \xf6\xca\x6c\xd1\x94\x76\x0f\x09\x4f\x8b\x16\x44\x7d\xd7\xd1\x78\ \x9c\x75\xa2\xbf\xf9\x66\xe3\x8a\x15\xcf\x6f\xbf\xfd\xf6\x19\x40\ \x0c\xea\xda\x75\x1b\xe6\xfc\xe9\xb4\xfb\xee\xba\x7a\xdd\x37\x9b\ \x1a\x2a\x15\xed\xa7\x9d\x01\xe9\x31\x70\x40\x64\xa3\xca\x2e\x0d\ \x5d\x65\xd7\xf4\x45\x65\xc4\x26\xfe\xb3\xdd\x61\x39\xed\x7d\xf8\ \x27\x29\x79\xaa\xbd\xd5\xd8\x6b\x42\x98\xee\x55\xf6\x3e\xf7\x0a\ \xd1\x89\x1e\x23\xa8\xc0\x5f\xe0\x15\x89\x98\xae\x76\x0b\x66\x1c\ \x7c\xc6\xa3\xa9\x3d\x72\x91\xb4\x42\x6b\x69\x6b\x3d\xf0\xa0\xe3\ \xba\xbb\x7b\xf0\x4c\x70\x59\x45\xfb\x06\x7e\x6b\x6d\x6d\x1d\x3b\ \xa6\x73\x60\x70\xa4\x52\xa9\x90\x00\xa7\x97\x1b\x71\x2d\x81\x4b\ \x6d\xbf\xfb\xab\x71\x3d\x58\x01\x5c\x27\x09\xe8\x33\xfb\x4c\x0d\ \xf5\x98\x24\x71\xf7\x18\x37\x5f\x4f\x3c\xf6\x83\xee\xf7\x13\x74\ \x30\x19\xed\x26\xa9\xc3\x8d\xfe\x4f\x8c\x71\x09\x4c\xee\x4e\x4f\ \x19\x86\x09\xdc\x78\x5c\x74\x41\xe1\x78\x8c\xd2\xc6\xd6\x36\xe0\ \xe0\xe4\x89\xd6\x95\x48\x2c\x55\xab\x69\xad\x96\x42\x22\x65\x5f\ \xfd\xb8\x8c\xbd\x16\x03\xcd\xf7\x6b\x95\xda\x2f\x86\xba\x53\x6d\ \x1f\x95\x7d\xa9\xa5\x16\xcf\xcc\x90\x30\xd4\x63\xef\x49\x04\xf9\ \xb8\x4f\xfc\xd5\x10\x65\xa4\xbe\xdf\xbf\x22\xbc\x54\x30\x23\x01\ \xad\x75\x10\x4c\x16\x35\x4f\x82\x8c\x8b\x11\xec\x9a\x75\x19\x4f\ \x41\x56\x41\x65\x5d\x39\x0d\x9e\x91\x4c\x5a\xb3\xa6\x8f\x71\x14\ \x24\x20\x34\x62\xfa\x61\xf0\xc6\x91\xbc\xe8\xd2\x9e\xcd\x78\x79\ \x59\xa4\xd2\x90\xc5\xed\xc6\xc1\xe2\xd8\x48\xf4\x28\x9e\xb6\x93\ \x27\x39\x3e\x0a\x64\x90\xeb\xcc\xa3\xeb\xfe\x94\x11\x27\x4d\x3b\ \x61\x2c\x12\xba\x76\x34\xc3\x84\xe3\xc9\x8a\x9e\x61\x69\x59\x79\ \x85\x60\x81\x4e\xf8\x0e\xfa\xb7\x22\xde\x4d\xec\x4d\x58\x1a\x02\ \xb8\x96\xe2\x2a\x55\xee\x67\x26\x40\xe4\xc8\xdb\x09\x15\x5a\x3b\ \x93\x23\x32\xea\x0e\x02\xdc\x0b\x20\xe5\x7e\xe0\xf0\x65\x2a\x20\ \x9b\x23\x2c\x01\xdd\x94\xe8\x88\xd4\x40\xa0\x8e\x2a\x92\x44\x6b\ \xc9\x4b\x9e\x8f\xfc\x12\xfa\x6b\xb7\x7a\xda\xcb\x9e\x94\x96\xd1\ \x51\x86\x13\x7f\xbc\xc2\x29\x2d\x1a\x33\x6f\xd0\x62\x44\x6e\xca\ \xcf\x12\x8c\xd6\xd6\xd6\xd2\xdc\xd4\x94\x34\x24\xb0\x00\xbc\xf0\ \x8c\x28\xcb\x4d\x8f\xbe\x18\x1d\x09\xa9\xc4\x38\xa1\x92\x26\x6e\ \xb6\xda\xbd\x9f\x49\x8e\x3f\x8d\xb8\x96\x9f\x61\xe1\xb5\xe0\x96\ \x46\xb0\x2f\xb8\x76\xb0\xaf\xaf\xa1\xa1\xa1\x44\x9f\x06\x50\x8c\ \xd7\x76\x1e\x22\x52\x06\x7e\x9a\xd9\xc4\x13\x42\x8e\x78\x2a\x23\ \x70\xe2\x28\x62\xac\x20\xa4\xed\x7c\x2d\x1d\x00\x9d\x34\x1d\x37\ \xb6\xf3\x83\x0f\x3f\xfe\xe4\xbf\xbf\x5a\xb3\x6e\x43\x47\x47\xe7\ \xe7\x5f\xac\x1d\xa9\xd6\x82\x02\x96\xba\xd9\x09\x5c\x65\x98\x86\ \xb5\x54\xe2\x42\x99\x93\x98\x16\x6a\x3c\x6f\x12\xc8\x07\x97\x3e\ \x27\xbb\x9e\x39\x73\x7a\x6f\x5f\xdf\xd4\x29\x5b\x4d\x9d\x36\xf9\ \xcf\x77\x99\x3b\xd2\xdf\x47\x7c\x2d\x9e\xc6\xe4\x60\x98\xcc\xe9\ \x4f\xa9\xb5\xe3\x9c\x74\x33\x29\x31\xb5\x14\xd2\x56\x92\x59\xbb\ \xcf\x4b\xb7\x4a\x64\x33\x90\xc5\x38\x71\x5c\xd7\xfd\x0f\x3e\xb9\ \xf2\xd5\x4f\x97\x2d\xfb\xeb\xd9\x53\x3b\xb6\xde\x7a\xeb\x1f\x35\ \x35\xd7\xb3\x4f\x82\x51\x67\x0a\x46\x45\xfe\x07\x34\x02\x1a\xb8\ \xbf\x70\xbc\x5c\x6a\x2e\x3a\xf9\x61\x82\x69\x95\x51\x79\x6a\xbe\ \xfc\xf2\x8b\x6a\x75\xe4\xf6\x7f\x7c\x74\x87\xed\x57\x9e\x73\xce\ \xa9\x43\x83\xbd\x09\x1b\x20\xe2\x51\xcc\x29\x26\x18\x39\x76\x29\ \x9d\xbe\xf4\x1c\xad\xd8\xc0\x28\xa8\x40\x92\x41\x72\x26\x69\x6a\ \x5a\x5b\x5b\xde\xff\xe0\xa3\xdf\xfd\xfe\x0f\xcb\xef\xff\xe7\xc6\ \x4a\xc3\xff\x42\x27\x60\xd6\xac\x99\xf8\x5c\xbc\xf8\xc7\x67\x9c\ \x71\xc6\x6b\xaf\xbe\xb6\xdb\xbc\xdd\x87\x07\xfb\x1a\x92\x84\x65\ \xbf\x09\x64\x9d\xd3\x27\x4c\x52\x16\x74\xe7\x1b\x38\x7d\x16\x16\ \xcc\xc8\x15\xae\x44\xf6\x29\x14\x5b\x5b\x6b\xcb\xef\xff\xe3\xcd\ \xc3\x7e\xf2\x57\x40\x07\xce\x47\x63\x63\x63\xa9\x57\x51\x74\x0b\ \x4a\xff\x3a\x8a\x9f\x51\xcf\x1d\x29\xf5\x2d\x82\xc8\xb0\x0d\x64\ \xde\xdc\xdc\xbc\xf4\xa7\x87\xff\xfb\x8b\xcf\xec\xfe\xc3\xbd\x8c\ \xe9\xb5\xe2\x2e\x9b\x66\x9a\xb7\x8c\x9c\x78\xf5\xac\xc7\xbe\xa7\ \x57\x9c\x10\x65\xd6\x42\x10\x1a\x9c\x64\x77\x00\x88\xd5\x3c\x2b\ \xaf\xa1\xa1\xda\x36\x53\xb6\xc9\x38\xb0\x52\x49\x92\x84\xdf\x94\ \xa6\xe9\x1f\x11\x20\xc8\x63\x0c\xc6\x59\x3d\xb6\x6d\xb3\xcd\x36\ \x2f\xf4\x0e\x1b\x33\x4c\xf6\x83\x12\xd2\x8a\x5f\x91\x49\xf1\x44\ \x13\xaf\x3a\x0e\x4a\x61\xeb\xd5\x58\xba\x39\x40\xb2\xd9\xa7\xc6\ \x3f\x80\x20\xcd\xcb\x20\xcf\xa9\xe8\x5d\xbf\xbe\xbb\xad\xbd\x43\ \x0e\x9d\x56\x0c\xd4\xf4\xc7\x65\xae\xe1\xe1\x61\xc2\xc8\x2d\x6f\ \x63\xa5\xa9\xc9\x79\x45\x04\xb8\x72\xae\x46\x50\xb7\x7d\x43\x43\ \x43\x23\x23\x9a\xbd\x89\x5a\xad\xd2\xd0\xd0\xd1\xde\xee\xe5\x51\ \x6a\x21\xd3\x19\xf3\x38\x4d\x6c\x02\x77\xe2\x15\x21\xaa\xe2\x74\ \x8c\xa9\x55\xab\xad\x6d\x6d\x13\x26\x4c\x30\x4e\xf3\x41\xf6\x1b\ \xa0\xf3\xf1\xc7\x1f\xaf\x58\xb1\xe2\xcb\x2f\xbf\x8c\x1c\xe8\x88\ \x04\x22\x7b\xb7\xae\x67\x5b\xdf\xe3\x8f\x68\xcd\x3a\x22\xc9\x56\ \x5b\x6d\xb5\xe7\x9e\x7b\xee\xbc\xf3\xce\x98\x6f\xf0\x75\x6a\x59\ \x44\xc2\x38\xc6\xb1\x36\xa4\xb3\xf6\xb2\x61\x37\x34\x75\xae\x7c\ \xe9\xa5\x5f\x5e\x7e\xdb\x8c\xad\x27\x8f\xc0\x6c\x6a\x6a\x4c\x1a\ \x1b\x9b\x3b\x3a\xd6\x6e\xda\xbc\x68\xf1\xbc\x65\x3f\x3b\x72\x78\ \x60\x73\xa5\x21\xf1\x53\x27\x15\x90\x91\x93\x15\x44\xce\xb6\xce\ \x6b\x31\xad\x89\x7e\xc1\x4c\x96\x08\x1d\xc7\x82\x70\x5e\x7f\xfd\ \xf5\x63\x8f\x3d\x76\xc6\x8c\x19\x63\xc6\x8c\xc1\x57\xd0\x6d\xc5\ \x36\xba\xc8\xe2\x26\xf6\x9a\xb8\x80\x2e\xa8\x9f\x7b\x12\xdf\xc8\ \xef\x63\xd7\xa1\x18\x8b\xa0\x97\xa6\xf9\xb6\x76\xed\x5a\x88\xe4\ \xf3\xce\x3b\xef\x80\x03\x0e\x00\x46\x44\x47\x78\xea\x17\x5f\xac\ \x51\xa6\x6a\xad\xad\x20\x3a\xbc\xa0\x69\xd8\xb0\xb9\x7b\x61\x5b\ \xd7\x31\x0b\x16\xf5\x34\xb7\xb4\x74\x75\x35\x8c\x1d\x3b\x76\xfa\ \xf4\x17\xdf\x7c\xe7\x9d\xf5\xef\xd2\x4f\x28\x90\xe3\xcc\x22\x8b\ \x8f\x57\x58\x6e\x6c\x15\x41\x8d\x86\x4d\x64\xe3\x98\x9f\x48\xb2\ \xd6\xd2\xd2\xb2\x7c\xf9\xf2\x1d\x76\xd8\x61\xf7\xdd\x77\x07\x91\ \x57\xf2\x8d\xe0\x00\x6a\x0c\x13\x77\xd2\x45\x11\xa6\x52\x8c\x18\ \x1d\xa2\x59\x89\x4e\x15\x44\xdd\xda\x3a\x6d\xda\xb4\x07\x1f\x7c\ \x10\x00\x49\xe7\x7b\xfd\xfa\x4d\xda\xcb\x65\x0c\x38\x35\x89\xf6\ \x7e\x9a\x45\xb0\xc1\x54\x1a\x06\x4d\x3a\x94\xd6\x54\xad\xda\x50\ \x1d\x69\x1b\x1e\xaa\xd6\xaa\x18\x97\x23\x5e\xcf\x9a\x19\xb3\x19\ \x1d\x44\xb5\x5f\xb5\x8a\x90\xb2\x56\x34\xb1\xcd\xef\x47\x80\x99\ \x00\xa3\x75\xeb\xd6\xc1\x1a\xda\xb2\x65\x4b\xf6\x4a\xd1\x30\x74\ \x42\x07\xf7\xe0\x02\x9f\xb8\xe6\xe9\xd1\x05\xfa\xf9\x93\x60\xd2\ \xa2\xe5\xd4\x8d\x98\x39\x1e\x45\x9f\xa9\x95\xa9\x9b\x36\x6d\xc2\ \x00\x70\x8d\x91\x4c\x9c\x38\x11\xeb\x84\xce\x31\x9d\x63\xa6\x4e\ \x9d\x5a\x1b\xa9\x42\x91\xb8\x91\xb3\xae\x76\x71\x3e\xf2\x0f\x54\ \xf8\x5f\x28\x07\xcf\x4c\x4e\x82\x5b\xce\x31\x41\xf7\xb3\xb3\x1a\ \x7c\x31\x0b\xa4\x16\xd6\x9d\x14\x43\x11\xa7\x10\xbd\x74\x76\x76\ \xe2\x82\x98\x8e\x0c\x02\xd0\x7f\x3d\x22\x92\x14\x44\x44\x54\x64\ \x31\x23\x16\x86\x00\x75\x8e\x8e\x52\x4d\x4d\x4d\x6d\x6d\x6d\x03\ \x03\x03\xf4\x15\xfd\xe8\x69\x6f\x6f\xcf\x6e\xd3\x0d\xc1\x1e\xb6\ \x3e\x8d\x0c\x01\xe8\x62\x23\x61\x2c\x8d\x1e\xcd\x9a\x50\xba\x77\ \x3a\xa8\x79\xa3\x0c\x87\x4a\xc8\x7e\x95\xc1\x6d\x9a\x8f\x94\x23\ \x98\x39\xc6\xfa\xe2\x8b\x2f\x76\x75\x75\x0d\x0e\x0e\xe2\x2b\x3a\ \x27\x4d\x9a\xb4\xcf\x3e\xfb\xf4\xf7\xf7\x37\xf8\x26\xa1\xa1\x4f\ \xdc\x46\x44\x44\xd7\x11\x05\x31\xdd\x45\x24\x46\x90\xb9\xd9\x89\ \xe8\x44\xea\xc2\x28\xc6\x4f\x3a\x21\x1b\xc7\xd2\x0d\xf9\x98\x8e\ \x33\xfc\x34\xbd\x31\xe3\xfd\x54\xcb\x99\x19\x19\x38\x93\x91\xac\ \x4d\x56\x94\xc1\x96\x09\x4e\xbe\xe4\xb0\xcc\x14\xda\xbc\x79\xf3\ \xa7\x9f\x7e\x3a\x65\xca\x14\x52\x28\x44\x3b\x18\x19\x44\xde\xd7\ \x5f\x7f\xbd\x7e\xfd\xfa\xa3\x8f\x3e\xba\xbb\xbb\x1b\xd4\xf4\xc4\ \x13\x4f\xf4\xf6\xf6\x1e\x71\xc4\x11\xf8\x5a\xc4\x88\xa0\x91\x48\ \x45\x10\x48\x80\x88\xb3\xc2\x92\x5b\x81\xc2\xe8\xf8\x96\x2a\x0f\ \x8f\x0b\x69\x78\x14\x9c\x03\xee\xfc\xf5\x60\x08\xf8\x88\x82\x9f\ \xa0\x4a\x8c\x61\x53\xc8\x06\xae\x0c\x05\x34\xdc\x82\x89\xb4\x0f\ \x85\x49\x82\x67\x6f\x58\x9b\x00\x0e\x50\x32\xaf\x21\x3e\x47\x46\ \x46\x20\x35\x31\x81\x93\x4e\x3a\x09\x7a\xed\xb3\xcf\x3e\x5b\xb8\ \x70\xe1\xec\xd9\xb3\x2f\xbe\xf8\x62\x58\x03\x4f\x3d\xf5\x14\xb0\ \x23\x34\x25\x67\x45\xba\xaf\xb4\x81\x4f\x99\x3d\x23\x8e\x66\x43\ \x31\x8c\xcd\xfd\xab\x69\xbc\x2c\x83\x48\x5e\x58\xb5\xe3\x04\x8d\ \x5c\x73\x1f\x58\x33\xec\xf9\x53\xb4\x46\xa8\x26\x17\xe5\xcd\xa6\ \x1c\xb4\x18\x45\x2c\xb4\x0f\xce\xf9\x06\x31\x0c\xce\x07\xef\x00\ \x0e\x1a\x1f\xc0\x42\x84\xff\xd9\x67\x9f\x05\x34\x40\xea\x90\x43\ \x0e\x79\xe0\x81\x07\xd6\xac\x59\x83\x6b\xc8\xce\x4b\x2e\xb9\xe4\ \xdd\x77\xdf\xfd\xfc\xf3\xcf\x81\xa0\x9c\x58\x51\x30\x8d\x02\x8d\ \xbc\x81\x51\x26\x0a\x2a\xc6\xf6\xb3\xa9\xfa\xd4\x4b\x10\x44\xec\ \x7c\x19\x1d\x22\x79\x3e\x6e\xe1\x6f\xd0\xc6\x8b\x5d\x6f\x23\xc4\ \xee\x6e\x22\x0c\x45\xe3\xfd\x65\x0a\xfa\x06\x19\x44\xaa\x84\x99\ \x02\xd7\xe3\xc6\x8d\x03\x73\x3d\xff\xfc\xf3\x98\xd5\x3d\xf7\xdc\ \x73\xca\x29\xa7\x40\xc5\xd0\x9f\x90\x30\x99\x3b\x77\x2e\x3b\x71\ \x91\x9a\xaf\x87\x4e\xd1\x74\x28\xa5\x23\xe6\x41\x11\xc6\xb2\x91\ \x54\x1f\x7d\x64\x1b\xd6\x73\x42\x3e\xa0\xe2\x22\x3d\xca\xb9\x68\ \x1e\x47\xcf\x9d\x84\xb2\xf3\xc5\x02\x8b\x71\x00\x53\xb9\x28\x58\ \x79\x96\x92\x55\x0f\x85\x44\x4e\x3f\xfd\x74\xd0\xcb\xd5\x57\x5f\ \xbd\x64\xc9\x92\xfd\xf6\xdb\x8f\xe4\x34\x2d\x38\x88\x4e\x5a\x89\ \xf4\xab\x06\xd1\x46\xc7\x48\xa2\x53\x34\x32\xa3\x0c\xb0\x63\x09\ \xa3\x83\x23\xee\x94\xb4\x71\x26\x5d\x08\x49\x73\x1c\x4e\x09\xc1\ \xcb\x94\xe1\x48\x82\xa2\x7f\xec\xd3\x05\x2d\xc6\x21\x49\x23\xc8\ \x47\x0e\x45\xe6\x3f\xb0\x8c\x60\xa8\xe3\x8f\x3f\x1e\x3a\x6b\x97\ \x5d\x76\x81\x7d\x44\x9a\x3e\x7b\xa2\xf7\x6f\x79\x4a\x72\x86\x0d\ \xf9\x26\x6d\x45\x16\x79\xb4\x00\xf4\x5e\x32\xbb\xa4\x6d\x19\x2d\ \x9e\x76\xb8\x38\x9f\xdd\xbb\xe3\x6e\xf2\x6c\x14\x29\x99\xc3\xf0\ \x4e\xaa\x8b\x2f\xeb\xe0\x03\xa5\xa9\x51\x79\xb3\xa3\x52\xe2\x4c\ \x89\xe1\x32\x40\x51\x52\x81\x97\x7a\xce\x9c\x39\x50\xea\x84\x0e\ \x4f\x06\xe6\x09\x99\x8b\x8c\x69\x3d\x8c\x98\x71\x84\x2f\x59\xe3\ \xaf\xfc\x40\x69\x3d\x15\xd3\xf0\x71\x44\x21\xcb\x2f\x79\x49\x4b\ \xf3\x0d\xa9\x04\xef\xaa\xeb\x20\x4d\x98\xf5\x88\x1c\xd9\xb0\x74\ \x32\x28\xf2\x11\x59\x3c\x8f\xc2\x65\x18\x37\x40\x81\x0c\x82\xb8\ \xc1\x05\x59\x40\x3c\x79\x40\x83\x3f\x41\xd9\x43\xb4\x93\xe4\xe2\ \xf5\x2f\x62\x54\xea\xb5\x44\xca\x4b\x1a\x96\xa6\x0c\x1e\x17\x96\ \x34\x3e\x25\x68\x9c\x9a\xae\x9b\xe7\xd5\x2e\xa8\xc8\xfa\x5e\x07\ \xcb\x40\x0b\xc1\x6e\xfd\xe4\x5c\xb8\xc3\x46\x21\x4d\x14\x32\xcd\ \x7b\xe1\x18\x25\x44\xcf\x82\x05\x0b\x1e\x7e\xf8\x61\x68\xab\xc9\ \x93\x27\x03\x11\x28\x2c\xf8\x6b\xf8\xc4\x35\x2c\xe9\xa5\x4b\x97\ \x3e\xf2\xc8\x23\x50\x64\x50\x73\xd2\xe4\xfb\x56\x8c\x22\xe2\x8a\ \x7e\x58\x1e\x1b\xf0\xdc\xc5\x01\x0d\x1f\xfc\x66\xb9\x22\xa6\xe3\ \x85\x34\xa7\x40\x94\x47\xc7\x27\x36\x28\xbd\xa7\x59\x1f\x26\x26\ \x97\xd6\xd0\xe4\xdf\x1a\x5d\xba\x54\xae\x41\x06\x23\x18\x72\xe4\ \x91\x47\xde\x71\xc7\x1d\xaf\xbc\xf2\x0a\xbc\x24\xe8\x78\x50\x0d\ \x22\x21\xe4\x70\x41\x2a\xc1\xed\xbe\xee\xba\xeb\x36\x6c\xd8\x00\ \xd4\xa4\x11\x2c\x27\xcc\x58\x34\xda\x16\xe1\x12\xfd\x84\xe9\xb7\ \x6c\x60\x21\x3a\xa1\x3d\x45\x68\x6f\x45\x07\xe2\xf0\x3e\x5a\x90\ \xaa\x85\x5a\x1c\xdf\x6b\xd8\x24\xac\xc8\x31\x90\xe4\x27\x57\x25\ \x92\x41\x32\x76\x83\xa1\x83\xb3\x10\xa0\x39\xfc\xf0\xc3\x9f\x7e\ \xfa\x69\x90\x09\x05\xee\x30\x49\x20\x72\xd5\x55\x57\xc1\x05\x99\ \x3f\x7f\xfe\xb9\xe7\x9e\x0b\x1d\x77\xc3\x0d\x37\x20\x96\x04\xd4\ \x48\xeb\x47\x8d\x61\x8a\x84\x5d\x3d\x6f\xb6\x14\x20\xc9\x62\xf9\ \xa2\x0e\xe3\xd3\x03\xb1\x1f\xa6\xbd\xed\x1d\xe5\xe6\x49\x87\x6b\ \x31\x8c\x28\x68\xef\x93\xfb\xc2\x50\x95\xe3\xe6\x21\x62\xb6\x40\ \x01\x18\xc1\xc9\x40\x0f\xd9\x78\x70\x35\x56\xad\x5a\x75\xc5\x15\ \x57\xdc\x7c\xf3\xcd\xd0\x6b\x50\x70\x60\xc6\xeb\xaf\xbf\xfe\x9a\ \x6b\xae\x81\xca\xa3\x52\xb6\x28\x42\xc6\xd4\x54\xf4\xbf\xbe\x33\ \xf9\x94\x42\xe3\x3b\x95\x09\x39\x0a\x9f\xee\xd2\x21\x6f\x6a\xa2\ \x08\x6f\x0a\x6f\xc3\x65\x86\x4c\x2c\x83\x1c\xbf\x92\xfc\x2f\xcb\ \xed\xc8\xd1\x10\xd7\x80\xd7\x20\x8c\x07\x7c\x83\x53\xb6\xd7\x5e\ \x7b\xcd\x9c\x39\xf3\xac\xb3\xce\x82\x07\x0b\xd6\x83\x91\xbd\xc7\ \x1e\x7b\xc0\xff\x00\x76\xa5\x15\x3d\x84\x0b\x19\xa2\x91\x4e\x28\ \xfd\x1a\x8b\x21\xe3\x92\x42\xa6\xbc\xb8\xcd\x33\x0c\x27\x33\x54\ \xc8\xc9\xc7\xf1\x6f\xbe\x9b\x12\x8b\xfe\xef\x41\x06\x59\x9b\x93\ \x49\x53\x95\x16\xb5\x45\x30\x49\x63\x87\x3c\x58\xb0\x18\xf8\x6e\ \xfa\xf4\xe9\x88\xfe\x21\x6a\x83\xaf\x00\x6b\xb7\xdd\x76\xbb\xe8\ \xa2\x8b\x60\x7c\x47\x28\xb0\x47\x8a\x06\xac\x8b\x30\x45\xc5\x74\ \x25\x14\xe4\xd6\xd3\xa5\x4f\xf3\xf7\x2b\xc3\x56\x8e\x0e\xae\x93\ \xb3\x1d\x85\x0c\xd1\x02\x1d\x67\x03\xaa\x30\xc7\xa4\xac\x2c\x8b\ \x7e\xaf\x22\x4a\x8e\x84\x51\xb1\x6a\x91\x2c\x17\xc4\x46\xc1\x77\ \xa0\xa0\x33\xcf\x3c\x13\x3a\x0e\xf1\xad\x0b\x2e\xb8\x60\xd6\xac\ \x59\xa0\xa3\xf1\xe3\xc7\x13\x0a\x4c\x35\x04\x0d\x18\x90\x00\xe2\ \xbf\x72\xbc\xad\x54\x14\xe6\xbc\x55\x1f\xdd\xf0\x5a\x9b\x61\x72\ \x6b\x4d\x20\xb2\xaa\x12\xf9\x09\x27\x9f\x72\x91\x90\x5c\x5a\xc4\ \x32\x4a\x24\x0c\x85\x26\x2b\x5f\xc9\xa8\x0e\xb2\x38\x07\xc2\xe8\ \x84\x13\x4e\x80\x60\x3a\xfb\xec\xb3\x21\xa7\xc0\x7a\x97\x5e\x7a\ \x29\x52\x34\x97\x5f\x7e\x39\x30\x62\x62\x61\xc2\xa9\xfa\x16\x61\ \x14\xd1\x5a\x09\x7d\xb9\x90\xa1\x62\xf3\x99\xd5\xb6\x11\x35\x59\ \xb2\x50\xc4\x57\x1e\xe5\x74\x5f\xae\x34\x8f\x4d\x05\x52\x23\x11\ \x3f\x07\xa8\xeb\xb7\x51\x30\xe2\x60\x20\x08\xe7\xd4\x53\x4f\x85\ \xcb\x0a\x09\x0d\x5e\x43\x78\xe8\xca\x2b\xaf\x84\x61\x09\x99\x8d\ \xc0\x00\x6c\xa5\x9a\x6f\x44\x3e\xa5\x18\xf1\x45\x69\xed\x2a\x2b\ \x65\xe7\xb1\x4a\x99\xe2\x53\x13\x0e\xaa\x9c\xc8\xe1\xbc\x60\xb0\ \x06\x73\x30\xf9\x68\x8f\xa3\xa0\xf0\x67\x56\xf0\x21\x52\x32\x5a\ \x05\xef\xe8\x28\xe2\x49\xc0\x08\x02\xe8\xa3\x8f\x3e\xba\xf7\xde\ \x7b\x11\x1e\x82\x65\x70\xed\xb5\xd7\x42\xaf\xdd\x77\xdf\x7d\xc0\ \x08\xce\x2d\xd3\xce\x88\x6d\x11\x46\x11\xbb\x31\x4c\xb1\x90\x8e\ \x94\x4c\xd0\xc7\x2e\x40\x48\x7a\x5b\x09\x44\xb9\xc4\xa7\xbc\x66\ \x58\x2b\x19\xed\x91\x51\x61\xed\x0c\x4a\x65\xd4\xa8\x65\xc7\x1c\ \xf4\x8b\xee\x29\xae\x36\x84\xf4\x69\xa7\x9d\xf6\xd0\x43\x0f\xc1\ \xb0\x86\xe7\x01\x50\x60\x19\x21\xb9\xf6\xe8\xa3\x8f\x82\xac\xa0\ \xf8\x24\x7f\x31\x3a\x74\xc1\xf2\xbb\x9e\x54\x12\x1c\x65\xa4\x2b\ \x9f\x23\x6e\x57\xff\x20\xe2\xd2\x14\x0b\x0b\x91\xb5\x42\xf1\x34\ \xfb\x2c\x1c\x0f\x62\x43\x5a\x19\xcf\x82\x05\x35\x36\x0a\x5b\x95\ \xea\x26\xea\xa4\xa9\x82\xb9\xee\xba\xeb\xae\x27\x9f\x7c\x12\xee\ \x08\x3a\x11\x3f\x7a\xec\xb1\xc7\x60\x61\x42\x1e\x81\xac\xaa\x85\ \xc6\x7a\x8d\x31\xa2\x0c\x47\xa9\x8e\xd3\x41\xbe\xd6\x29\x3f\xe7\ \x60\x4f\x5e\x74\x49\x22\xca\xd9\x3a\xbe\x74\x36\xae\x0f\x22\xfb\ \xc8\x05\x84\x74\x09\x1c\x3c\x3e\xba\x90\xb1\xab\xb4\x4e\x83\x30\ \x02\xd5\x80\x76\x80\x11\x22\x8d\x10\xdb\x07\x1e\x78\x20\xfa\xef\ \xbe\xfb\xee\x63\x8e\x39\x06\x5f\x17\x2d\x5a\x04\x11\x4e\x19\xed\ \x52\xf5\x2f\x25\x51\x39\x11\xf9\xb5\x8d\xec\x0f\x5f\x6a\xe3\x4a\ \x3e\x8b\xc6\x39\xa7\x77\x62\xfe\x32\xce\x2f\x8b\xeb\x83\xb8\x12\ \xcb\x18\x5f\x89\x57\xd0\xaf\x64\xec\xf2\x1c\x38\x33\x53\x4a\x41\ \x34\x37\x18\x47\x20\x13\x88\x67\x58\xd8\x97\x5d\x76\x19\x81\x82\ \x7e\xd0\xd4\x71\xc7\x1d\x87\xbf\xce\x9b\x37\x0f\x49\x01\x5c\x14\ \x9f\x10\x09\x6c\x0e\x12\xe5\x49\xc8\x95\x1d\xc4\x26\x24\xfb\xa5\ \xaa\xe0\xac\x86\xd0\x7e\x5e\x7f\x39\x6b\x28\x8d\x65\x50\x88\x01\ \xf8\xe0\xa3\x56\xc6\xd4\x11\xc1\x52\x00\x15\x49\x46\xae\x36\x73\ \x07\x1e\x0e\x75\x06\x8f\x0c\x00\x41\xa9\xbd\xf3\xce\x3b\x80\x03\ \x90\xdd\x76\xdb\x6d\xb7\xdc\x72\xcb\x7b\xef\xbd\x07\x87\x16\x84\ \x56\x14\x43\xb5\x42\x2b\xb1\x2d\x4c\x48\x6a\xe4\x7b\xdd\x74\x95\ \x74\x35\x42\xfd\x1a\x33\x65\x2e\xdd\xe8\x73\x5e\xba\x04\x20\xc3\ \x9e\x98\x11\xe2\x2b\xef\x13\x44\xe8\x44\x48\x45\xe8\x44\x2b\x0f\ \xa7\x04\x6e\xed\x39\xe7\x9c\x73\xfe\xf9\xe7\xc3\xfb\xc7\xfc\x21\ \xa7\xa1\xf5\x6f\xbd\xf5\x56\xe2\x32\x5b\x85\x31\x42\x91\x7f\x36\ \x1d\x8b\xa2\x3a\xd2\x62\x9a\x22\x3f\x69\x08\x6c\x84\x30\xaa\x96\ \xda\x3f\x57\x36\xc8\x79\x10\x0e\x92\xf0\xbe\x95\xbc\x51\xa0\x92\ \xa8\x3e\x48\x3b\x4b\x51\xd7\xb3\x7d\x8a\xaa\x37\x92\x14\x52\x76\ \x70\xc3\x6c\xf1\x04\xb0\x12\x92\x6b\x88\x93\x20\x59\xd4\xd3\xd3\ \x03\xaa\xd9\x6e\xbb\xed\x20\x8c\x2e\xbc\xf0\x42\xb0\x21\x44\x15\ \xe5\x36\x10\x90\xa4\x00\x40\x91\x88\x4a\xb4\x18\x19\x3c\xd6\x4f\ \xd2\xdc\xe1\xcd\x19\x76\xbb\xf8\x5e\x4e\x92\x46\xe5\xe4\x4a\x09\ \xe7\x5e\x44\x0d\x65\x7d\x90\xcf\x81\xf8\xa0\x74\x5a\x06\x8d\x94\ \x41\xdc\xc3\x9f\x94\xea\xe3\x64\x71\xbc\xf7\x2a\x49\xa0\xf8\x11\ \x09\x01\xb1\x00\xa3\x3b\xef\xbc\x13\xc4\x02\x91\x04\xd7\x1f\xce\ \x1a\x8c\x6f\x10\x0e\x8f\x18\x4e\x2f\xae\xa9\x87\x20\x26\x91\x57\ \x12\x0d\x12\x51\x30\x2d\xa4\x84\x8f\x3c\x2b\x59\xa0\xc8\xa9\x09\ \xa5\xeb\x6f\xbd\x12\x5f\x2b\xe2\x26\xe3\x64\x8f\x36\xa5\x4e\x50\ \x11\x0e\xd9\xc3\x49\x74\xfe\x2c\x6a\x5c\xf2\x6c\x11\x5a\x43\x40\ \x12\xe4\x03\x53\xfb\xf6\xdb\x6f\x07\x59\xed\xbf\xff\xfe\xe8\x7f\ \xf9\xe5\x97\x41\x41\x04\xc4\xc6\x8d\x1b\x1f\x7f\xfc\x71\xd8\x99\ \x80\x52\xea\xfb\xa2\x0c\xd2\xb2\xfe\xc0\xa8\x7c\x70\x42\x99\xbc\ \x59\xac\x44\x69\x43\xe9\x66\x37\xf9\x93\x62\x7d\x90\xab\x96\x35\ \xba\x64\x07\x8e\x14\xd2\x04\x81\xcc\x0e\x33\xc9\x94\xa2\x13\x01\ \x04\x67\x0d\x32\x68\xdf\x7d\xf7\x05\x46\xc8\x1d\x21\xa2\x06\x38\ \x00\xd9\xde\x7b\xef\x4d\x3c\x05\xaa\x01\x97\x41\xcd\x41\x42\x21\ \x2a\x00\x8c\xd8\x71\x2b\xd9\xfc\xc4\x01\xb3\xfc\xa8\xdd\x8a\x1b\ \xc3\x2a\x3e\xbf\x55\xc0\x48\x5a\x11\x4e\x78\xd8\x1f\x12\x82\xf6\ \x62\xab\x88\x77\xe2\xca\xdc\x88\x74\xd4\xc6\x32\x28\x12\x1c\x45\ \x07\x02\xf3\xc7\x1b\x81\x11\x08\x07\x29\xc6\x9b\x6e\xba\x09\x1a\ \x0d\x74\x04\xee\x43\x08\x09\x60\xe1\xfa\xab\xaf\xbe\x82\x6c\x42\ \x32\x12\x6e\x0a\xe4\x11\x7e\xc2\xa2\xad\xc4\x9b\xd7\x4a\x9a\x7f\ \x52\xa4\xfa\xe0\x57\x08\xf0\x70\xb9\xb6\x8c\x0c\x3a\x2d\xee\x2c\ \x1d\xa3\x85\x43\x9f\xe4\x73\x26\x1c\xbb\x57\x45\xa3\xb9\xe8\x22\ \x45\x3d\x91\xde\x91\xce\x7a\xd1\xa5\xc0\x93\xe1\xac\x21\xa3\x8f\ \x0b\x48\xe8\x28\xad\x84\x06\xd5\x76\xd8\x61\x87\xe1\x4f\x30\x11\ \xf8\xe7\xf5\xac\x44\x97\xef\xd4\xf9\xf0\x9e\xf1\x8a\x9d\x02\xc9\ \x21\x30\xc4\x81\x1f\xbe\xc3\xe9\x2f\xad\x83\x4f\x17\x0c\xc5\x42\ \xd1\xac\xb4\x13\x63\x19\xc4\x17\x5c\x7a\x21\x45\x32\x5f\x73\x78\ \xa8\x34\xbd\x45\xb9\x30\x48\x1c\x88\x67\x96\xee\xbc\x06\x59\x29\ \x72\x5b\x1b\x2e\x20\xad\xc0\x6b\x4c\x7d\x24\xa4\x4b\xbd\x79\xde\ \xee\x14\x2a\x38\x74\x70\xcf\xa5\xa8\x16\x5b\x1f\x72\xfe\x89\x0e\ \x31\x55\x51\x26\x24\xeb\x83\x9c\x59\xe1\x37\x63\xd5\x53\xf0\x04\ \x90\x14\x3d\x2c\x74\x18\x26\xde\x3f\x51\x44\x47\x02\x44\x80\x4a\ \x15\x4e\xf2\x18\xe8\xdc\x78\xe3\x8d\xa8\x87\x3c\xe8\xa0\x83\xa0\ \xe6\x98\x43\xb9\x94\x2b\xcf\x68\x32\x14\x9d\x33\x91\x95\xe3\x2f\ \xad\xf2\x51\x31\x57\x7b\xe0\x92\x14\x85\x7d\xc3\x2e\xa5\xa1\xe2\ \xfa\x20\x1f\xe0\xe5\x00\x66\x2c\x62\xd9\xf0\xd1\x3a\xde\x82\xa3\ \x0a\xdb\x5c\xe5\x3a\x73\xd5\x1e\x57\x40\x30\x40\x98\x39\xbe\x92\ \x59\x48\x37\x40\x1e\x01\x1d\x60\xf4\xc1\x07\x1f\x90\x8f\x02\x8c\ \x88\x7f\xeb\xec\x50\x75\x49\x67\x23\x77\x66\x0a\x3b\x0e\x71\x78\ \xa0\x5e\xb3\xff\xd3\x82\x60\x79\xbd\x9e\x2a\xd1\xf1\x4a\x40\x1a\ \xd5\x28\x12\xdd\x58\x4f\x35\xcf\x62\xac\xa1\x98\xce\x8b\xea\x9c\ \xf2\x65\x04\x07\xbe\x62\xce\x9c\xcf\x91\x14\x14\xa5\x2e\xf0\x13\ \xe2\x32\x92\x4a\x60\x28\x18\xd6\x60\xbd\x65\xcb\x96\x41\xf4\x20\ \x3b\x02\x74\x16\x2f\x5e\x0c\x2b\x9c\x1e\x52\x2e\x83\x72\xa6\xaf\ \x50\xde\xb6\x66\xac\xb3\xb9\x79\x42\x7b\x3b\x8a\x5c\x5b\xc6\x8c\ \x41\x95\x6b\x63\x57\xd7\x38\xe4\xa9\xbe\x89\xed\x1f\x11\xe7\x0f\ \x69\x9f\xb8\x46\xd1\x28\x5f\xfd\x21\x62\xd2\x7e\x27\x62\x95\x25\ \x45\x71\x0b\x64\x29\x67\x49\x16\x93\xb4\x23\x13\x90\x08\xa4\x41\ \xd9\x3f\xf3\xcc\x33\x87\x1e\x7a\x28\xf4\x1a\x3a\x11\xae\x45\x31\ \x34\x3a\x41\x3e\xf0\x66\x57\xaf\x5e\x8d\xb0\x91\x34\xb8\x0a\x32\ \xc8\xe5\x20\x74\x7e\x8f\x33\x8d\x73\x78\x68\xf8\xb9\x0f\x3f\xdc\ \x54\x49\x06\x92\x86\x4a\x5b\x5b\xd2\xd2\xd2\x31\x61\xfc\x1f\xbe\ \x5a\x3b\x7d\xa7\x09\x56\xf9\xa5\xc6\xe8\xd8\x60\xc8\xd7\x28\x26\ \xd2\x50\xd4\x6e\x9f\x47\x88\x9f\xd0\xc4\x10\x30\x45\x1e\x99\x8a\ \x58\xeb\x39\x13\x91\xe6\x8a\x22\xaa\x45\xad\x4f\x0d\x28\xa0\x5e\ \xef\xb9\xe7\x9e\x43\x14\x0d\x71\x7e\xbc\x11\x51\x91\xb7\xde\x7a\ \xeb\x8d\x37\xde\x20\x64\x51\x3c\x4e\x05\xad\x1c\x45\x2b\xb7\xa4\ \x4d\x8e\x04\x54\xe6\xdc\xeb\xc1\x81\xc1\x5d\xe7\xcc\x7a\xbf\xa5\ \x92\x2e\xdc\xbb\x71\xfe\x7c\x3d\x7b\x76\x75\xc6\x8c\xc1\x09\x5b\ \xbd\xf2\xfe\xbb\x7b\xce\x9f\x33\x3c\x30\x24\x76\x12\x6a\x2f\xcb\ \xec\x85\x50\x4d\x15\x59\x1f\xe4\x6c\xab\x3c\x7f\x61\x4c\xf0\xb6\ \x91\x6b\xa6\x0a\xe9\xd1\xab\xe8\xa5\x00\x92\x45\x73\x32\x31\x2f\ \x73\x81\x98\x33\x9c\xaf\xa3\x8e\x3a\x0a\x21\x47\xe0\x82\x57\x80\ \xcb\xd0\x8f\x20\xe4\xc9\x27\x9f\x8c\x52\x36\xa9\xe6\xea\xa5\x55\ \x5d\xf9\x9c\xf6\x01\x7b\x5f\x45\xd6\xdf\x3f\x30\x7b\xe7\x9d\x7e\ \xbc\x70\x6e\xb3\x49\xfe\x72\xff\xc5\xdd\xdd\x5b\x20\xda\xfe\xf3\ \xbd\xff\x5a\xf0\xc3\x9d\xe6\xcf\xdf\x79\xd3\xc6\xee\x24\x5b\x83\ \x90\x23\xb4\x3a\x30\xb5\x9b\x0e\x55\x4e\xcd\xe7\x4d\x74\xc5\xa5\ \xc0\x72\x97\x06\x32\x7f\x94\x1d\xe5\x2c\x6b\x3d\x73\x99\xd5\x56\ \xa4\xbf\x64\x8d\x9a\x6c\xe0\x26\xc8\x07\x64\x8a\x60\x25\xd2\x63\ \xc1\x62\x58\x09\xa2\x3e\x26\x19\x0e\x06\x15\x17\x24\x8b\xe0\xd8\ \x5a\x4c\x4d\x1b\x83\xbd\x2b\x8a\xd7\x0d\xf5\x0e\x2c\x3b\xf2\xc0\ \x2b\x7f\xb1\x7c\x9f\x45\x7b\x83\x92\x51\x29\xf1\x9b\xdf\xfc\xdb\ \xdf\x1c\x85\xeb\x54\x89\x4d\x77\x89\x71\x85\xbd\x76\xeb\x4f\x28\ \xee\x88\xed\x20\xb6\x2c\x64\x56\x8c\x30\xc2\x58\x69\xd0\x45\x8b\ \xae\x28\x77\x8a\xe8\x70\xed\x53\x94\x4a\x96\x5b\x54\x10\x0c\x91\ \x81\x4a\x2a\x15\x65\xa5\x4e\xe2\x0f\x77\xc6\x32\xc8\x55\x8a\xa5\ \xb4\xb0\xe4\xd6\x5b\x01\x9d\x3d\xbf\xaf\xb7\x7f\xd7\xdd\xe6\x4e\ \x9d\xd2\xb1\x6a\xd5\xea\x03\xf6\xff\x8b\xd5\xaf\xbf\xd5\xd2\x34\ \xb4\x60\xc1\x3c\x6c\x8b\x07\x71\xfb\x70\xad\xfb\x87\xca\x5c\x49\ \x02\xe7\xec\x20\xb1\x55\xc3\xc7\x21\xf3\xc4\x0c\xb2\x07\x97\x91\ \xbd\x5b\x1a\xd6\xa3\x42\x7a\x96\x59\x5c\x54\x5f\xba\x3f\xa3\x58\ \x98\xc0\x6b\x50\x52\x6b\xe1\x01\xa2\x12\x75\xb0\x24\x55\x8e\x5a\ \x04\xf5\x96\x9e\x1e\x08\x75\xec\xf9\x19\x1a\xae\x6a\x0e\xfa\x39\ \x13\x28\x25\x8f\x61\x78\x70\xf0\xe7\xcb\x0e\xba\xf9\x97\x4f\x1e\ \x7d\xf4\xcf\x7e\xfb\xdb\x15\x4b\x0e\x5e\xe8\xf6\xe6\x1a\x63\x4c\ \x6e\x53\x28\x3b\xb3\x5a\x95\x45\x14\x4d\xa8\x1c\x51\xc5\xc9\x83\ \xec\x11\x09\xc4\x02\x16\xab\x58\xa2\x52\xf1\x62\x21\xe2\xb7\x16\ \x25\x36\xfa\x26\xcb\x5d\x65\x23\x70\x57\xae\x5c\x89\x18\x08\x52\ \xd8\xec\xb5\xe2\x02\x1c\x1a\x85\xa2\x8d\x0f\x25\x12\x88\xbd\x3d\ \xbd\x7b\xec\xb9\xeb\xa4\x09\x4d\xf7\xdc\xbb\xbc\x31\xe9\xdf\xe7\ \x47\xf3\xb7\x6c\xe9\xc9\x24\xa3\x8a\x67\xea\x7f\xad\xa5\x60\xaa\ \x98\xa8\x74\xc6\x10\x23\x24\xfc\x63\xd2\x62\xd0\x35\x70\x20\xdf\ \x7e\xfb\x6d\x62\x07\x0a\xee\x48\xba\x28\x25\x90\x62\x85\x46\xc4\ \x5c\xa5\xa7\x9f\x14\x33\xda\x74\x1b\x12\xd9\xa8\x8a\x84\x4d\xc4\ \x88\xd4\xaa\xb5\x3f\xd9\x7e\xdb\x4a\x43\x45\xa5\x43\xaa\x41\x07\ \xab\xc8\x09\x6d\x37\x4f\x28\xfb\x63\x7f\xbe\xe4\xe0\x9f\xfc\xed\ \xa3\xbf\xbe\x1e\x9b\x16\xd2\xd4\x88\x64\x7d\xd0\xeb\x21\x55\xa4\ \x83\xeb\x1b\xd7\x07\x79\x62\x1e\x66\x82\xe7\x08\x19\xe2\x7e\x1b\ \x6d\xe3\xd1\x73\xfc\xcc\x9f\x9e\x90\xe6\xb6\x8a\xe4\xed\xcc\xe2\ \x3e\xc2\x52\xa1\x5b\x6f\x27\x22\xe2\xb3\xd0\xa4\xb0\x89\xc8\xa4\ \xe4\x01\xb4\xb4\x34\xdb\xb2\x15\x27\x7e\x78\x0b\xb9\x0f\x13\x19\ \x5b\xcd\x34\xb4\xe3\x0e\x33\xfe\xe1\xef\xcf\xfd\xc1\x0f\x76\xec\ \xeb\x1f\x00\xad\x7b\x44\x52\xc1\x43\xc6\x17\x00\x1b\x2d\xaa\x94\ \x72\x11\x45\xb2\xb6\xb2\x43\x3c\x5a\x2a\x70\xa6\x77\xfa\xb3\x59\ \x52\x4e\x23\x0a\x01\xe2\xdf\x76\xdb\x6d\xa3\x3d\x98\xd1\x6c\x8b\ \xdb\x30\xa3\x32\x4d\x56\xfc\xdf\xba\xa1\x2e\x7f\x66\x46\x15\x84\ \xcc\xc2\xde\xed\xf1\xce\xf6\xd4\xd5\xfc\xb6\x68\x13\x42\xa9\xda\ \x57\x27\x7a\x47\x15\x76\xdb\xd2\x25\x8b\xfb\xfa\xfb\x53\xca\x7f\ \x38\xeb\xc9\x09\x2d\xde\xb3\x9d\x3d\x20\xf5\x85\xb1\xd1\xa6\x5e\ \xa3\x43\xb8\x7a\xec\x98\xf6\xe1\xa1\xa1\x28\xaf\x46\xaa\x1a\x3c\ \xff\xad\x00\x45\x29\xaa\x88\x82\x46\x3f\xdf\xa7\x14\x20\x57\x89\ \xe2\x0b\xc9\x5d\x54\x53\xa9\xee\xee\xcd\x80\x8e\xf4\x03\x17\xcd\ \x5b\x03\x19\x84\xe1\x26\xcb\x16\xce\x96\x9e\xde\x24\xf1\xa7\x2a\ \x50\xd2\x5d\xe5\x23\x91\x5e\xf6\xc8\xc8\x49\x45\x3a\xc5\x78\x24\ \x4a\x68\x87\x6b\x66\xca\xe4\xf1\x2f\xbd\xb6\xfa\xa7\x4b\x0f\xdb\ \xd2\xbd\xc5\xa6\x11\x6c\x46\x4c\xf1\x81\x0d\x8a\x92\x0b\xd6\x58\ \x0f\x47\xf4\x98\x5c\x5e\x45\xf1\xcd\xc6\x67\x22\xd2\xe0\xe8\x66\ \x4f\x08\x47\x6b\x14\x8f\xfd\x71\xbb\xdd\xe4\x14\xe8\x28\x00\x7a\ \x66\xb6\x54\xe3\xbb\xc6\xc3\xa1\xdd\x71\xe6\x34\xa9\x82\x74\x38\ \x01\x87\x4f\x79\x71\xb1\x6a\xda\x37\x1e\x16\x49\xeb\x28\x4c\x1b\ \x2a\x18\xc5\x81\x03\x95\xa2\x08\xe8\xe9\xe9\xdd\xf7\x47\xf3\x1f\ \x7f\xe6\xe6\xbb\x7e\x75\xdf\xc1\x07\x1f\x90\x55\x46\x65\xf5\x87\ \x15\xeb\x97\xa4\x14\x84\xac\x77\xba\x94\xaf\xca\xd1\xa5\xe7\x1d\ \xf9\xc3\x0e\xc8\x2d\x4e\xf9\x81\xfc\x58\x25\x8e\xf5\x91\x50\x3b\ \xbd\x61\x1f\x0e\xd7\x25\x3b\x02\xaa\x96\xfe\xcb\xbf\x3e\xb5\xea\ \x95\xdf\x1d\x7f\xeb\x85\x5b\xb6\xf4\xea\x24\x09\x79\x51\x2d\xd2\ \x15\x5c\x3f\xe4\x4f\x10\x32\x26\xde\xe0\x18\x8d\x9f\xcb\x38\x9d\ \xa1\x18\x6b\x19\xbf\x83\xe1\xef\x2e\x3c\xf1\x57\xff\xf4\xc4\xc3\ \xbf\xfe\xac\xb7\x6f\x18\x35\x3e\xbd\x7d\x83\x23\x4e\x3a\xfa\x62\ \xd9\x42\x9d\x9e\x74\xaa\xb5\xdb\xac\xaf\xa3\x1b\xb8\xdf\x88\x03\ \xa8\x9c\x10\xd1\xf9\x2c\x68\x38\x17\x2c\xec\x63\xc3\xf7\x89\x13\ \xc6\xae\xfd\xfa\xeb\x71\xe3\x3a\x36\x6e\x58\x73\xd5\xa5\x27\x75\ \x76\xb4\x0f\x0c\x0c\x3a\x31\x97\xdd\x9f\xe6\xdc\x0e\x4b\xfd\x1c\ \xe5\x0a\x96\x8e\xdf\x07\x5c\xc8\xc7\xe6\x8f\xc1\x91\x42\x9a\x69\ \x0b\x7c\x0a\x5d\xde\xd9\xd9\x71\xe9\xf9\x27\xc2\x12\xeb\xe9\xe9\ \x03\x3d\x6f\xd8\xd8\x2d\x75\x16\xbd\x21\x3a\xbb\x27\x3a\xf1\x48\ \xe7\xcf\xf7\x50\xf5\x0e\x43\xe2\xa3\x10\x7c\xa5\x93\x32\xf9\x63\ \x80\xfc\x99\x1e\x14\xea\x9b\x38\xb1\xab\xb1\xa9\xb1\xbd\xad\x6d\ \x5c\xd7\xb8\xc1\x81\x21\x38\x5c\x09\x93\x8f\x88\xe5\xa8\x3a\xe5\ \x0c\x85\x32\x58\x1f\x67\x65\x1b\xca\x59\x3a\x62\xdf\x7c\xc8\x2b\ \x86\xd0\x6c\x02\xf7\x79\xfd\xc6\x6e\x30\x17\x22\x12\x78\xe8\xe4\ \xc9\x93\xf8\xf8\x17\xe3\x76\x5b\x05\x1f\x91\x8f\x94\xf1\x7f\x55\ \x7c\xf2\x06\x5f\x28\xd9\x13\x9d\x7c\x26\xa3\xe4\xf9\xfd\x39\xf2\ \x1e\x9a\xd1\x48\xad\x9a\x05\xc1\xb0\x66\x1b\x36\xc3\x5b\x20\x93\ \x2f\xf1\xd9\x54\x3e\x57\xc9\x17\x13\xba\xca\x27\x25\x22\x87\x9a\ \x37\xb6\x98\x20\x9b\x85\xaa\xcf\x95\xd2\x57\xe4\x81\x46\x81\xf0\ \xec\x0d\x95\xcc\x5e\x30\x1c\xf4\xcb\xef\x76\x08\x87\x63\xc8\xe9\ \xe6\xfa\xf3\x40\x14\xcf\x44\x08\x50\x16\xb1\xa8\xb7\x17\xdf\x1d\ \xf8\x65\xbd\xa4\x84\x8e\x50\x32\x3a\x1c\x65\x42\x4a\xcc\xe8\xb0\ \x89\x25\x7f\x64\x47\x20\x4f\xef\x52\x18\xa1\x51\xb8\xb4\x8a\x83\ \xdb\xf2\xfc\x20\xa2\x1f\x87\x91\x2a\x64\xfb\x8b\x47\x74\x89\x23\ \x6b\xc2\x4e\x0e\xfb\xaa\xa4\x8c\xa1\x74\x01\x23\xad\xcb\xce\x22\ \x48\x74\xb1\xa6\x34\x7c\x0d\xdb\x8f\x4d\x70\xb9\xbc\x9f\xa4\x45\ \xdc\xde\x1f\xea\xe2\xe1\xf3\x9e\x01\xef\xa2\xe3\x84\xac\x51\x74\ \x84\x10\x6b\xb8\x50\x50\x94\xab\x0f\xb2\xaa\x37\x1d\xc9\x82\x5b\ \x90\x35\x55\xbf\xdf\xd5\x1b\xa8\x9e\xb3\xe4\x71\x5d\x8a\xfb\x43\ \x2c\xd8\xf3\x5c\xa2\x4d\x38\x03\x2a\x20\xc2\x0f\x31\xa6\x70\x2c\ \x5b\x38\x33\x8f\x8d\xbd\xfc\x5e\x64\x95\x3f\xa0\x88\xce\x8b\x8a\ \xf6\xac\x98\xc0\xcb\x2a\x6c\xcf\x54\x2a\x36\xdc\x59\xc4\xd9\x7b\ \xd3\x60\xc7\x62\x57\xbd\xf2\x25\x69\xd1\xf9\x41\xaa\xa3\xbd\x6d\ \xfc\xe4\x89\xa4\xd7\xb5\x14\x37\x7e\x43\x91\xc4\x28\x09\xa7\x74\ \xb9\xd3\x65\x58\x54\xeb\x70\x24\x90\x16\x87\x66\xf1\xf1\x7e\xc6\ \x1d\x1e\x16\x86\x5a\xe6\x9a\x89\x7e\x93\xff\x1a\x12\x80\xca\xa8\ \x1c\x62\x05\xcd\x67\x4c\x4e\xae\x99\x42\xb1\x47\x48\xfa\x90\x1d\ \x62\x74\x5b\x2b\x55\xc2\x05\x3b\x88\x73\x26\x2f\xbc\xb4\xea\xe2\ \x8b\x6f\x84\xda\x62\xe7\x20\x1c\xd0\x66\x0a\x87\x0f\x71\x86\xc8\ \x27\xdc\x74\xfe\xac\x22\x41\xc7\x12\x02\x3e\xae\x47\x8b\x19\xe9\ \x78\xe2\x65\xe7\x33\x69\x79\x48\x92\x2a\x48\x81\xf8\xfc\xca\xd8\ \x68\x50\x75\x76\x31\x45\x65\x0b\xcd\x4d\x8d\xab\x5e\x7d\x93\x36\ \xfb\xa5\xf6\x70\x3e\x17\xc4\xf9\xe4\x93\x4f\x96\xdf\xff\x40\x7f\ \xff\xa0\x12\x34\x6b\x72\x95\x43\xf2\xb3\xce\x39\x97\xb2\xc7\x94\ \x1e\x57\xc5\x47\x3e\x29\x3e\xab\x30\xd6\xc4\x4c\x80\x26\x67\x61\ \x09\x1b\x2a\xf7\x59\xe7\x20\x4f\x2d\x7f\x58\x34\xd6\xea\x1d\x18\ \x8a\x1b\xc6\x74\x76\x9c\x76\xda\xa9\xb4\x71\x5b\x97\xef\x81\xf8\ \xbe\x95\x1e\x76\xcb\x81\xf1\xc2\x61\xb7\xba\xf4\x2c\xa5\xff\xab\ \x87\xdd\x52\x5a\xdc\xbd\x82\x03\x9a\xf1\x46\xa2\xff\xdf\x00\x85\ \x4d\x60\xdf\x9f\x48\x3e\x7a\x4b\xbe\x87\x60\xf4\xf6\x3f\x17\x5c\ \x8a\xe5\x6a\xba\xb8\x51\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x08\xdd\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x60\x00\x00\x00\x55\x08\x00\x00\x00\x00\x93\x44\xbe\xfa\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x12\x00\x00\x0b\x12\ \x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd5\x03\ \x03\x0f\x28\x2b\x21\x8f\xe2\xd5\x00\x00\x00\x02\x62\x4b\x47\x44\ \x00\xff\x87\x8f\xcc\xbf\x00\x00\x08\x6e\x49\x44\x41\x54\x68\xde\ \xb5\x59\x5b\x88\x24\x57\x19\xfe\xbe\xff\x54\x4f\x4f\xcf\x65\x67\ \x76\x76\xa2\x4b\x82\x6c\x92\x85\x44\x9f\x64\x4d\x34\x3b\xe3\x85\ \x40\x1e\x5c\x21\x0f\x01\x03\x89\x20\x08\x21\x5e\x30\xd3\x1b\xf0\ \xb2\xa2\x71\x46\x10\x82\xf8\x20\x28\x44\x1f\x0c\x98\x18\x42\x0c\ \x2e\xae\x04\x0c\x84\x3c\x24\x2f\x31\x18\x44\xcc\x4c\x54\x96\xc4\ \xfb\x0d\x13\x33\xbb\xd3\x3b\x97\xde\x9e\xae\x3a\x9f\x0f\xa7\xaa\ \xba\xab\xbb\xfa\xb2\x93\xf8\x33\x33\x7d\xea\xfc\xf5\xf5\xd4\xf9\ \xcf\xff\xfd\x97\x53\xa6\x5c\x92\x44\x49\x36\x90\x92\x70\x9d\x24\ \xc9\x5b\xd2\xcb\x20\xc8\x7b\xef\xbd\x97\xbc\xb2\x81\xf7\x0a\xd7\ \x52\xaa\x3d\x90\x1e\x90\x89\xa2\x99\x99\x99\x73\xe6\xb2\x81\x99\ \x0b\xd7\xce\x85\xb9\x83\xe9\x4d\x34\x8a\x3b\xe7\xd7\x37\x36\x36\ \x36\xd6\xd7\x37\xd6\x37\xd2\xc1\xc6\xc6\x7a\xb8\x5e\x5f\x0f\x73\ \x07\xd1\xbf\x7c\x7e\x9b\x32\x24\xf8\xc9\xa9\x2f\xaf\xd4\xeb\xf5\ \xfa\xe9\x7a\xbd\x5e\x5f\x59\xa9\xd7\x4f\xd7\xeb\x2b\xa7\xc3\xcc\ \xe9\xd3\xa7\x57\xea\x2b\x2b\xf5\x83\xe8\xcf\x9c\x7a\x12\x89\x41\ \xd8\xba\xf3\xd9\x73\x4f\xbd\xfd\x72\xee\xd9\x3b\xb7\xc2\x1e\x58\ \xbc\xbf\x37\x9e\x34\x9b\xcd\x66\xb3\x39\xe6\xcd\x7b\xfb\xb1\x89\ \x46\x10\xcc\xf7\x29\xec\x10\xd3\x09\xa6\xbf\xd9\xd6\x51\x89\xf7\ \x5e\x64\xba\xb5\x05\x7d\x19\x1e\x84\x49\x02\x47\x08\x40\xaa\xb5\ \x7b\xa9\xd1\xb8\xd4\x68\x34\x1a\x8d\x4b\xdb\xcd\x98\xe4\x48\x1c\ \x21\x19\x49\x8d\x12\x5a\xbc\xb3\xb5\x7d\x39\xf6\x22\x49\xf9\xb8\ \xb5\x7b\xa9\xd1\xc2\x68\xa0\x48\x03\x80\xe2\xa3\xa0\xf3\x37\x0c\ \x4d\x3b\x8d\xcb\x32\x23\x99\xde\x6c\x86\xf6\x76\x23\x71\xa5\x6b\ \xe8\xe0\x01\xc0\x7a\xbf\xbe\x5b\x2c\xdc\xd9\xdc\xba\x0c\xa3\x84\ \x5c\x24\x99\xc5\x8d\x3d\x03\x2c\xdc\x35\xd0\xb8\x96\xde\x3f\x64\ \x95\xbb\xdb\x22\xa5\xf0\x40\xc8\x56\x2c\x11\x3b\xbb\x84\x86\xa1\ \x01\x18\x84\x61\x9b\x05\x22\xee\xfd\xfa\xf4\x7f\x08\x6e\x77\xcf\ \xa0\xa1\x0b\x90\x09\x12\x01\x08\x00\x18\x3e\x49\x20\x9b\x33\x88\ \x22\x52\x03\xa9\xeb\x81\x29\xd8\xee\xbe\x41\x18\x84\xa7\x04\x23\ \x49\x65\xf6\x16\x33\x8b\x1a\x49\x9a\x91\xf0\x1e\x0c\x98\x00\x25\ \x08\x12\xa4\x28\x62\x17\xe9\xdd\x65\x78\x91\x1c\xcd\x83\xc4\x53\ \xa2\xf2\x30\x0c\x28\x35\x97\x28\xdb\xbf\xec\xde\x22\x0f\x18\x4b\ \xa4\xe7\xe4\xcc\xdc\xfc\xe1\xf9\x99\x09\x8a\xcc\xfd\x89\xe0\x65\ \xc9\x8f\xe4\xc1\xd0\x3d\x6e\x13\x52\x6d\x61\x6e\x66\x72\x62\x62\ \x72\xe6\xf0\x42\xd5\x83\x12\x25\x52\x12\xdb\x89\x0d\xdb\xe4\x94\ \x07\xdd\xdc\x42\x11\xe0\x63\x52\xb5\xf9\x28\xdd\x5c\x54\x0e\xcf\ \x2a\x20\xc2\x83\xf9\x36\x07\xe1\xd1\xe1\xc1\x20\x5f\x86\xd8\x4e\ \x20\x4e\xc9\xa7\x76\xa7\xd7\xcc\x8c\xef\x70\x4e\xf4\x03\xe1\xc8\ \x79\x50\x34\x12\x3a\x51\x4c\xe4\xbe\xa0\x89\x8a\xd2\xc7\x53\x92\ \xc4\xed\x5a\xa4\x9c\xd6\x44\x12\xbc\xa5\x04\x0f\xe4\x3c\x50\xb6\ \x65\x99\x27\x76\x76\xb1\x4d\xa2\xc6\xe0\xa9\x09\x27\x0f\x1d\xb9\ \x6a\x7e\x76\x36\x16\x0b\x74\x65\x29\x5e\x39\x0f\xc0\x01\x2b\x20\ \xdb\x6d\x2a\xaa\x0a\x24\x63\x5b\xac\xfd\xe3\xc5\xc7\x7f\xf4\xd4\ \x2b\x5a\x9c\x4a\xc9\x31\xc0\x31\xba\xc2\x9e\x49\xc3\xa2\x09\x5b\ \x09\xfc\xa4\x13\x21\x2d\xb4\xbe\xf7\xd1\x0f\xdc\x76\xcf\x67\xee\ \x3a\xf9\xa1\x33\x2f\xcf\x77\xd8\x30\x2c\x16\xa5\x3c\xe8\x0d\xb5\ \x61\x60\xa4\xa9\x32\x65\x6e\x4a\x24\x10\x9d\xfb\xc8\x17\x7e\xb9\ \x0b\x73\xa6\xbf\x3d\x71\xe7\xb7\xab\x10\x04\x08\x8e\x34\x94\xe1\ \x53\x66\xa7\xc6\x1b\x20\xaa\x2d\x5c\xb5\x18\x91\xf4\xb5\xd7\xee\ \x7e\x2d\xaa\x44\x0e\x89\x07\x9d\x1e\xfa\xca\x74\x88\xb1\x72\xc3\ \x48\x94\xf2\x60\xb0\x91\xe0\xbd\x45\x92\xa4\xe8\xdf\x8c\xe2\x76\ \x9c\x78\x18\x94\x28\xfa\xd9\xcf\xe7\x12\x11\x62\x65\x88\x81\x32\ \x1e\x0c\x0f\xd8\x22\x49\x54\x5e\x55\x5c\x5d\xfa\xd4\x27\x4f\xd0\ \x13\x40\x82\xef\xef\x3a\x01\xaa\x54\x34\x84\xc7\x59\x3e\xc8\x8d\ \x64\x34\x18\x0d\x85\xa0\x48\x12\xf4\x2f\xe1\xe6\x97\x9f\x7b\xe4\ \xb1\x17\x5e\x7c\x9f\x08\x08\x7f\x3c\x3f\x29\x51\x35\xd7\x6d\xfc\ \x02\x1e\x79\x3e\x18\x43\x2a\x9b\xbf\xc2\x03\xef\x6e\x6c\x6e\xee\ \xdd\xf4\xcc\x8d\x61\xe9\xe7\x27\x44\x5f\x99\xf6\xc3\x73\x9a\x71\ \x2c\xd1\xd4\x6f\xfe\x79\xc3\xad\x17\x2a\x51\xe4\x2e\x1c\xb9\x17\ \x04\x88\x2d\x93\x70\xc8\x69\x38\x32\xe4\x03\xa5\xb6\x40\x2f\x4d\ \x72\x73\x46\x2f\xe1\xde\x79\x6f\x04\xaa\xaf\xdf\x08\x0f\x08\x15\ \xd1\xcf\x4e\xcb\x82\x65\xfa\xf1\x21\x11\x86\x7c\x30\xaa\xc2\x81\ \xbb\xf4\xb9\xe7\xef\xda\x89\x24\xb9\x66\x73\x3f\x04\xc8\x6b\x13\ \x3f\x33\xe7\x87\x60\xa9\x1e\x1e\x80\x25\x8c\xcb\x9e\x66\xfa\x83\ \xf3\x31\x29\x8b\x37\xab\xbf\x85\x01\x98\x7e\xcf\xde\xec\x61\x05\ \x6c\x39\x3e\xe7\x41\x27\xb2\x15\xc7\x9d\x6b\x81\x7e\xc7\x13\x30\ \x5e\xd0\xde\x59\x08\x91\x3e\xfe\xae\x89\xc5\x3c\x55\x97\xe2\x91\ \x15\x5e\xe3\xac\x80\x74\x04\x60\x8d\xed\xc5\x27\x5e\x35\xb9\xf8\ \x58\x3d\x5a\x14\xfa\x8b\xc1\xfe\x15\x68\x18\x93\x7b\xc4\xed\x5d\ \x9c\xfb\xc3\x77\xe8\x5d\x72\xf5\x8f\x8f\x4f\x69\x44\x75\x0a\x31\ \xcf\x07\x19\xab\x42\x8c\x83\x15\xc9\x93\x2f\xa2\xbd\x19\xb5\xef\ \xdf\x86\x4b\x8e\x3f\x7e\x33\xb3\x95\x5b\x57\xa5\x59\xc0\xe7\xf9\ \x60\x74\xfd\x9e\xad\xfb\x42\x3c\xb7\xfa\x7b\xc7\xe4\xe4\xb9\x5b\ \xda\x63\x30\x08\x0a\x3c\xe0\x98\x06\xb2\xc6\xce\xc2\x63\x67\x9d\ \xfc\x1d\x4f\x1e\xdf\xb7\x71\xcc\xca\xc0\x03\x14\x36\x08\xbd\xad\ \x47\x16\x7a\x5d\x6b\x6b\xfa\xaf\x0f\x9a\xfc\xe7\x1f\x3e\x12\x5b\ \x9f\xbe\x0c\x8f\xde\x7c\x60\xec\xa2\x65\x5f\x70\x6f\x24\xb5\xef\ \xee\x9a\xff\xe6\xb7\xaa\xde\x86\xd4\xfb\x39\x3e\xe7\x81\xc6\xf2\ \x22\xdb\xdb\x9d\xfe\xd3\x2f\x18\x9f\xf9\x52\x5a\x73\x8d\x14\x48\ \x69\xc2\xe9\x2b\x5b\xca\x76\x5d\x3b\xbe\xba\xde\xd2\xf2\x57\xdb\ \x23\xda\xb3\x1c\x0f\x30\xf0\x40\xc5\xda\x9f\xe8\x6b\x06\x00\x58\ \xdc\x32\xdb\x02\xeb\xf3\xdd\xc5\x69\x99\x74\xf0\x54\xe0\x01\x8a\ \x4d\xc4\x80\x15\xb4\x12\x26\xef\xc4\xc4\xfb\xdb\xc6\xe1\x11\x3a\ \xc7\x0b\xc8\xfb\x03\xa8\xa7\x7c\x09\x13\x5d\x33\x68\xcb\xf6\x6e\ \x79\x47\xeb\xc5\x8a\x17\x4a\xf4\xfd\x78\xe4\xfd\x41\xe6\xae\xa1\ \x7d\x30\x4b\x29\x49\x2a\xb4\x96\xc1\xe6\x09\xd9\x5e\xfc\xf4\x0d\ \x93\xed\x32\x3d\x4b\xf0\x81\x60\x63\x66\x34\x92\x06\xb9\xad\xcf\ \xbe\x74\x47\xd3\xf1\x4a\x24\xad\xae\xa9\x4e\x64\x05\x40\x18\x40\ \x58\x57\xd0\x65\x24\x02\x47\xe7\x2b\x87\x7c\x70\x8e\x82\x1e\xa5\ \xf8\x6c\x52\x69\x0b\x97\x56\xac\x04\xd3\xa2\x4d\x59\x67\x07\x51\ \x11\xbd\x9b\x78\xf8\x9e\xfb\x9e\x9b\x91\xd0\xab\x47\x29\x1e\x2a\ \x36\x20\xc1\x39\xf2\xe0\xda\x55\xc3\x93\x52\xd5\x11\xf7\xdf\xf7\ \xc8\x0f\x6e\x7b\x68\xc6\x17\x78\xa0\xe2\xa0\x83\x4f\x1b\x90\xd0\ \x27\xe4\x19\x2c\x53\x04\xfe\xe5\x4f\x68\xaa\x56\x67\x7f\xf8\x4c\ \xc5\x45\xac\xff\xba\x26\xf6\xea\x4b\xf0\xa1\xb3\x31\x21\xf5\xa7\ \x3c\x2f\x81\xa5\x67\x17\x3a\x72\xf1\xa7\x6c\x27\xb1\xc3\xc3\xce\ \x97\x26\xbf\x5e\xbc\xd8\xe1\xc1\x18\x91\x37\x99\xe5\x7f\x05\x40\ \xfc\x8b\x6c\xac\xf0\xde\xcd\x83\xee\xb3\x8f\x9e\x46\x22\xab\xcd\ \xac\x75\xc3\x71\x3a\xc0\x74\x13\xd3\x28\x5f\xd0\xf7\xe1\x79\x85\ \x3c\xa0\xaf\x7e\x51\x89\x59\x7b\x61\xa5\xed\xae\x98\x07\xe3\x04\ \x5f\xdb\xbb\xe7\xc1\x59\xef\xdf\xfb\xf4\x35\xed\xf1\x4c\xd4\xe1\ \x41\x5f\xf4\x45\x4f\xf5\x11\x4c\x51\x69\x7d\xed\x77\x4f\x3f\xff\ \xc2\xc9\xa6\xa9\x44\x5f\x76\x26\x55\x9e\x0f\xfa\x12\x54\xf0\x0d\ \xb7\xff\xc6\xbf\xce\xf3\xc3\xb7\x4e\xee\xb9\x42\xbd\x61\xc3\x8e\ \xfa\x52\x1e\x8c\x61\x22\xf0\xcd\xbf\x5f\x6c\xc6\x5b\x7f\x7e\xe5\ \x8d\x08\x63\xd6\x51\x50\x0f\x0f\x38\x70\x29\x04\xff\xf3\x26\x9d\ \x59\x34\xe1\x36\x5f\x1f\x7e\x3c\xd9\xed\x45\xc8\xfb\xe4\xfc\x18\ \xab\xa7\x11\xcf\x48\x1a\x5d\x6c\x44\x14\x20\x21\xda\x6a\xb8\x3e\ \x7d\x29\x3e\xef\x93\x35\x72\x05\xd6\xba\xe0\x20\x42\xa4\x60\x9b\ \x6d\xd3\x78\x2b\xc8\x78\x30\x92\xc9\xdc\x8e\x99\x66\x6e\xca\xe2\ \x5d\x62\x7c\x26\x17\xaa\x6b\x4b\x9f\xc2\xc2\xea\x3a\x4e\x77\x39\ \x14\xc8\x0c\xfe\xd0\x64\x41\xdf\xa9\x83\x8a\xf8\x4e\x5d\x84\x51\ \xc5\xa9\xe2\xfc\xa0\x16\x04\xe3\xf1\x8a\xd9\x4e\x3e\x18\xe5\x76\ \x85\x8d\x14\xc0\x71\xdd\xb4\x53\x17\xa5\x2b\x85\xa5\x47\x8d\x9d\ \xca\x32\x90\x38\x52\xf7\x81\xe9\x04\x8b\xfa\xdc\x52\xbd\xf8\x3e\ \x1e\x0c\x94\xe9\x8e\x1f\x00\x9c\x1d\xcf\x44\x63\xe7\x03\x28\x39\ \x34\xe9\x99\x9d\x08\x24\xd3\x53\x1e\x57\x96\x0f\x3a\xe1\x0e\xa5\ \x5c\x30\xb8\xa3\xf0\x69\x58\x4b\xdc\xd1\x92\x5b\xca\xf0\x42\x5f\ \x3e\xb0\xbe\x51\xfa\xe9\x67\xae\x61\x2c\x00\x3e\x9e\x38\x36\x89\ \x3e\xfd\x40\xfc\xb8\xf9\x80\xc9\xdc\xf5\x0b\xe6\xbd\xaf\x2c\x5e\ \x57\x4b\xc6\x6c\x89\x3a\xc5\x12\x86\x56\xcb\x41\x7c\xf5\xea\xeb\ \x8e\x5d\x7b\xec\xfa\xa3\x96\x8c\x73\x7b\xfe\xad\xe1\x1f\x64\x27\ \x26\x3e\x0d\xdd\x69\x2d\xec\x25\xc9\xfb\x74\xa3\xdb\xd1\x54\x6d\ \x0a\x6d\x0d\xd0\xf7\xe1\xe5\xb3\xf3\x22\x4d\xba\x5a\x14\x45\x95\ \xf4\xa7\x52\x89\x82\x54\x2a\x51\x14\x55\x2a\x61\x3e\x8a\x26\x9c\ \x39\x8b\x26\x06\xea\x7b\xf1\x35\x37\x99\xf2\x60\xf6\xd1\xdb\x4f\ \x7d\xec\xed\x97\x53\xb7\x3f\x3a\x2b\x18\x23\x7e\xe2\xec\xd7\xbf\ \xb1\xb6\xb6\xb6\xba\xba\xb6\xba\xb6\x16\x06\x6b\x6b\xab\xe1\x7a\ \x75\x35\xcc\x1d\x40\xbf\xf6\xc0\xd9\xbb\x19\x99\xa8\xb9\x13\x27\ \x97\x96\x96\x96\x96\x97\x97\x96\x97\xd2\xc1\xd2\xd2\x72\xb8\x5e\ \x5e\x0e\x73\x07\xd1\x2f\x9d\x98\x0f\x6f\x63\x95\x24\x49\x92\x24\ \x71\x9c\xc4\xd9\x20\x49\xe2\x70\x1d\xc7\x61\xee\x60\x7a\x4f\x19\ \x08\x3a\xe7\x9c\x73\xe1\x1d\x70\x18\x84\x77\xc3\xe1\x05\xb1\x73\ \x07\xd6\x03\xb4\x42\x42\xcd\x5f\xd4\xa4\xbd\x62\xfe\xba\xed\xc0\ \xfa\xc2\x81\xd4\xff\x45\xfe\x07\x6b\x56\xad\xc0\xb4\x6e\x5e\x96\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x20\x68\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x60\x00\x00\x00\x54\x08\x02\x00\x00\x00\xf2\x11\xa5\xd4\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x12\x00\x00\x0b\x12\ \x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd5\x03\ \x03\x0f\x29\x0a\x74\xfd\xc3\xca\x00\x00\x00\x06\x62\x4b\x47\x44\ \x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x1f\xf5\x49\x44\ \x41\x54\x78\xda\xed\x5c\x09\xb8\x14\xd5\x95\xae\x5b\xbd\xbc\x7e\ \xfb\xc6\x5b\x58\x1e\xbb\x6c\x42\x82\x80\x28\x51\x31\xe2\x46\x40\ \x05\x07\x51\xa2\x66\xe2\x12\x10\x9d\x44\xcc\x0c\x44\x13\x17\x70\ \x41\x8d\x4b\x12\xe7\xcb\xa2\x49\x8c\xc6\x49\x26\x8e\x1a\xa3\x64\ \x12\x26\x01\x13\xe5\x53\x42\x08\x71\x62\x36\x0d\x10\x40\xe1\xf1\ \xf6\xfd\xf5\xeb\xb7\x74\xf7\x9d\xff\xde\x73\xef\xad\x5b\x55\xfd\ \x88\xe6\xd3\x2f\xc9\x37\x96\xd8\xaf\xba\xba\xea\x56\xd5\xa9\xb3\ \xfc\xe7\x3f\xe7\x16\xcb\x66\xb3\x8e\xe3\xa4\xd3\x69\xd7\x75\x39\ \xe7\x58\x67\x8c\x39\x7a\xc1\x16\xfb\xab\xd9\x48\x2b\xe6\x27\xb3\ \x5b\x78\x7f\x7b\xcb\x3f\xd6\xf8\x58\x8f\x44\x22\x2c\x93\xc9\x40\ \x34\xce\xfb\x4b\xae\x45\xc8\x0b\x1a\x34\x34\x34\xb4\x7e\xfd\x86\ \x68\x34\xce\x79\x16\xb2\x65\xf8\xcf\x21\x19\x33\xee\x70\xf9\xd5\ \x7f\x98\xfc\x55\x6e\x65\x66\x8b\xfe\xca\xad\x4f\x79\x0a\x35\xa0\ \xde\xd1\xdb\xed\xef\x76\x7c\x07\x1a\x93\xce\x64\x2a\x2b\xcb\x6f\ \xbd\xe5\x96\x28\x34\xaa\xa7\xa7\xbb\xbb\x27\x75\xed\x75\xd7\xf5\ \xf7\xa7\x84\x82\x31\x07\x82\x12\xc7\x30\x97\xe1\x6f\x4e\x15\x65\ \xde\x09\xb8\xdc\x84\xbd\xf4\xbe\xa4\xa4\xcc\x68\xb3\xf8\xce\xcd\ \xb5\x8b\x9d\xb4\x92\x8b\x0b\xf2\x59\x04\xdd\x93\x93\x6b\x7c\x39\ \x70\x50\x40\xef\xc1\xf8\x38\x34\x12\x71\x93\xc9\xbe\xa7\x9f\x7a\ \x1c\xc7\x46\xc9\xea\x4a\x4b\x4b\xcb\xcb\xcb\xfa\xfb\xf3\xe8\xfe\ \xe2\xb1\x68\x24\x16\xe7\x99\x6c\x26\x93\x66\x96\x01\xc2\x5d\xb9\ \xf2\x04\xfa\xa4\xea\x04\xd0\x43\x1c\x16\x8b\xc7\xd3\x69\xa8\x23\ \xa4\x0f\x8f\x16\xf1\x84\xc9\xcc\x75\xa8\x1b\x90\xba\x8b\x6b\x95\ \xb7\x9a\xeb\x06\x82\xe3\xd3\x0d\xb3\x5c\x1a\xf4\x6e\x8f\x4f\x02\ \x8a\xc7\xf3\x4a\x8a\x8b\xb1\x2d\x4a\xa3\x43\x12\x99\x74\x06\xae\ \x3a\x1a\x89\x42\x22\x47\x8e\xd4\x37\xb7\x34\x15\x17\x95\x14\x14\ \x14\x64\x49\xba\xea\x04\x2c\x74\x02\xa5\xe4\x99\xf4\x50\x5b\x7b\ \x5b\x45\x45\x65\x55\x55\x75\x7e\x41\x7e\x7f\x7f\xbf\xcb\x5c\xf5\ \xb4\xe8\x20\x47\x3e\x4e\xf3\x84\xe5\x0d\xf0\x61\x9e\x70\xe0\x06\ \x86\xd3\xa0\xf7\x62\x7c\x71\x3f\x9c\x43\x1a\x58\x84\x80\x8c\xeb\ \xc6\x80\xb8\x25\x7c\xfd\xe2\x17\xee\x2e\x2b\x2d\x6a\x6b\x6b\x2d\ \x2e\x2e\x2e\x2c\x2c\x82\x93\x0a\x07\x02\x1a\x8d\x73\xf3\xc9\x20\ \xdc\xc6\xc6\x86\xda\xda\x91\x10\xee\xaa\x8f\x5e\x35\x6d\xda\x0c\ \x61\xb0\x42\xfb\xbc\x4b\xd4\x7a\xcd\xf4\x17\x16\x08\x3a\xcc\x1a\ \xdc\x7c\xd3\x6a\x40\xba\xc0\x02\x3b\xbe\x07\xe3\x4b\x69\x30\x35\ \x58\x94\xcc\x95\x4b\xb9\x42\x1c\xbf\xf8\xc5\xcb\xe5\x65\x85\x0f\ \x3c\x70\xff\x5f\xed\xf9\xb7\x6e\xfd\xd1\x4f\xb7\x6d\x9f\x33\x67\ \x5e\x2a\x95\x74\x85\x45\x7a\x97\xae\x1e\x37\x7d\xe7\xc6\x6f\xf8\ \xfd\x9b\x72\x94\xcc\x3c\x72\x63\x3d\xe1\xa7\xe4\x79\xe3\xf7\x60\ \x7c\x31\x02\xe7\x51\x5b\xa4\x08\xfb\x70\xd8\x33\x67\xce\x84\xd6\ \x3c\xf6\xd8\x63\xbb\x77\xef\x86\x5e\xd0\x43\x70\xe5\x22\xff\x32\ \xfd\xa9\x16\x1a\x00\x9b\x8a\x8a\x8a\x36\x6c\xd8\x50\x53\x53\x5b\ \x58\x58\x08\xf7\x65\x7e\x25\x27\xaa\x6e\x48\x1f\x60\x3d\x4c\xe6\ \xf8\x6c\x20\xb0\x31\xd7\x8e\xdc\xb1\x43\xd3\xbb\x3e\x3e\x5d\x39\ \x79\x96\xa8\xde\xc4\x49\xa9\x24\x26\x82\x7c\xb2\x8f\x3f\xfe\xf8\ \x39\xe7\x9c\x53\x52\x52\x92\x48\x24\xf2\xe5\x42\x2b\x79\x79\x79\ \xf4\x89\x25\x1e\x8f\x47\xa3\xc2\x8b\x0d\x0e\x0e\xc2\x1e\x37\x6f\ \xde\xfc\xca\x2b\x3b\xc7\x8c\x19\x25\x61\x67\xc4\x92\x8f\xe7\x35\ \x48\xf1\x85\x77\x70\xe9\xa1\x73\xfb\x57\x13\x91\xac\x8d\xcc\xe8\ \x03\xb3\x7d\x10\xf3\x54\xe0\x6d\x8c\x1f\x10\xe6\x5f\x18\xdf\x7e\ \xf6\x51\xbd\x26\x47\xd5\x36\x0e\xff\x34\x72\xe4\xc8\xaa\xaa\xaa\ \x58\x2c\x96\xaf\x17\x12\x50\xc2\xbf\x18\x01\xc1\x9d\xcf\x9b\x37\ \xaf\xb3\xb3\x63\x6c\xdd\x18\x69\xc6\x5c\x9c\x55\xc6\x15\x11\x5a\ \x18\xb7\x40\xac\x44\x11\x59\x2e\x51\x04\x9e\x93\x2b\x1d\x99\x00\ \xf4\xd8\xee\x2a\xc7\xe1\x2a\xbc\xa2\xfc\x89\x89\x14\xf2\x78\x66\ \xbe\xe5\x18\x9f\xf4\x89\xa9\x98\xcf\x6d\x5d\xd3\xa0\x88\x1b\x8b\ \xcc\x39\xbe\x43\x17\x2f\x85\x2b\x7c\x90\x74\xd2\x9e\xdc\x70\xad\ \x84\x1e\x21\x26\xdc\x3f\xa7\xef\xd9\x2c\xd7\x8b\xb1\x29\x2c\x50\ \x22\x1c\x42\x70\x1c\x87\x40\xa0\xc6\xb8\x7c\x26\x26\xd4\x52\x0c\ \x14\x8d\xc6\xa0\x79\xb1\x58\x1c\x01\x01\x98\x40\x9a\x39\xcf\x66\ \xb2\xb1\x78\x4c\x98\x6e\x24\x02\xe1\x61\x9c\x81\x81\x7e\xa8\x21\ \x2e\xd2\x8d\x32\xcb\x9b\x7a\xd6\x63\xc3\x3f\xbf\x55\x31\xc6\xbc\ \x9d\x82\x26\x16\xd8\xc9\x78\x74\xdf\xf8\x5a\x14\x22\xfa\x73\xd2\ \x20\x85\x1b\x54\xd8\x53\x22\x0b\x5f\x81\x13\xd8\x42\xe3\x90\x43\ \xa2\xaf\x4a\x8c\x5a\x15\xf1\xa3\xb8\xfd\x4c\x06\x3b\xc1\x31\xc5\ \xa3\xb1\x8e\xce\x8e\x83\x07\x0e\x1f\x3a\x74\xa0\xa1\xe1\x68\x47\ \x57\x27\x76\x84\xd2\xa5\xfa\x52\xc0\x07\x03\xfd\x29\x04\xc1\x9a\ \xaa\x9a\xd1\x63\xea\x26\x4e\x9a\x52\x5e\x51\x81\x01\x93\xc9\x5e\ \xc8\x8b\x01\x99\x68\xad\xe0\xf4\xbc\xb5\x50\x08\x2b\x13\xf2\x73\ \xb3\x58\xc9\xe2\xaf\xd0\x45\x28\xa6\xe3\xb8\xb4\x8f\xb6\x48\x5c\ \xa0\xd4\x54\x6c\xc1\x15\x79\x9e\x0b\xda\x6c\xc6\xd4\xd0\x9c\x51\ \x30\x8b\x6a\x3b\x95\xa6\xcb\xd4\x4d\xe2\x96\xb8\x7f\x31\x82\xa3\ \x05\x0a\x25\x90\x53\x3a\x0d\xe3\xa2\x5c\x57\x1f\x22\xc5\xa1\x55\ \x32\x2d\x74\x30\x52\x51\x51\x01\xf4\xf8\xda\x6b\xaf\xbe\xf8\xe2\ \x0b\xcd\x6d\x2d\xed\x1d\x6d\xc5\x65\xe5\x23\xaa\x6b\x26\x4c\x9d\ \x82\x71\xa6\x94\x95\x97\x57\x8e\x80\x42\x75\x77\x75\xb5\x34\x35\ \x1e\x68\x3c\xba\x63\xcf\x2e\x9e\x4e\x8f\xae\x1d\x39\x73\xfa\xcc\ \x13\xe7\x2f\xa8\xae\x1d\x99\xec\xed\x49\xa5\xfa\xa0\x7d\x8e\xca\ \x09\x5c\x65\x2a\x52\x36\x8e\x14\x89\x30\x37\xd7\x51\x32\x11\x66\ \xab\xa0\x22\xb3\xb5\x84\xbb\x24\x04\xf2\x36\x9c\x29\x68\xe5\x7a\ \x6a\xaa\xf5\x53\x23\xa4\xa8\xf2\xd0\x8e\xd6\x2a\x6d\x62\x61\x89\ \x18\x5b\x23\xd1\xe0\xc1\x42\x77\x84\x38\x18\xc3\x3a\x8c\x11\x1b\ \x61\x3b\x84\x9b\x68\x04\x78\xb1\x8e\x8e\xf6\xaf\x7e\xe5\x4b\xcf\ \x3e\xfb\x14\x74\x07\xa2\x58\x74\xe6\xb9\x93\x26\x4c\x82\x58\x71\ \xc3\x47\xde\x78\x03\xb8\xf4\x28\xe7\x2d\x6d\x2d\xa5\x95\x55\x13\ \xa6\x4e\x9d\x3e\x7b\xce\x29\x95\xe7\xf4\x25\x93\xcd\x4d\x8d\xcd\ \x8d\x0d\xaf\xec\xd9\xbd\x65\xeb\x0f\xa7\x4f\x9e\x72\xde\xf9\x17\ \x1e\x37\x65\x5a\x67\x67\x67\x26\x3d\x18\x11\x62\x0a\x45\x31\xeb\ \xe6\x2c\x83\x0c\x1a\x63\xf8\x10\x7f\xcc\x0b\x98\x98\xc6\x41\x5c\ \x7a\x02\x21\x2f\x2e\xdd\x9a\x25\x14\x12\x07\x16\xb3\x62\x44\x23\ \x45\xc9\x69\x05\x5b\x00\x11\x8c\xde\x61\xa5\xb4\xa4\xb4\x3f\xd5\ \x0f\xd1\x7c\xfb\xdb\xdf\x00\x2a\x5d\xb1\x62\xd5\xc2\x85\x67\x8c\ \x1a\x3d\x06\xa6\x94\xc8\x4b\x88\x87\x1d\x75\xe9\x0a\x80\xb9\xeb\ \x8f\x1c\x3e\xf0\xe7\x7d\x87\xde\x3a\xf4\xc8\x0f\x9f\xaf\x1c\x5d\ \x37\x67\xc1\xa9\x93\xa7\x4e\x2b\x28\x2c\x9e\x38\x65\x5a\x57\x67\ \xc7\x6b\x7b\x76\x6f\xda\xbc\x71\xf6\x8c\x99\x9f\x58\x7d\x5d\x79\ \xc5\x88\x8e\xf6\x76\x89\x38\x88\x9c\xb1\xb0\x8e\x46\xd3\xe4\x9c\ \xfd\xd9\xa9\x95\x95\x9a\xec\xd4\x24\x08\xdc\x8f\x83\xb8\xf7\xcf\ \xc6\x41\x64\x5f\x42\xf7\x70\x9b\x59\xbd\x18\xd1\xa4\xf5\x42\xbe\ \x99\xf4\xcb\x50\x25\x52\x77\x62\x10\x13\xf6\x85\x76\x94\x97\x95\ \xbf\xf2\xca\x8e\x1b\x3f\xb3\x0e\xc8\xe8\xf6\xdb\xef\x3d\xe5\xd4\ \xd3\x85\xbc\x06\xfa\x87\x86\x06\xf1\x5f\x5f\x5f\x52\xe7\x05\x52\ \xc4\x91\xc8\xd8\xf1\x13\xa6\x4c\x9d\x06\x87\xd5\xd2\xdc\xb8\x63\ \xc7\xcf\x5e\xdc\xf2\xfd\x97\x12\xf9\x1f\x59\xb1\xaa\xbc\xbc\x02\ \x17\x7f\xca\xa2\xb3\xe7\x7e\xe8\xb4\xed\xff\xfd\xdc\xf5\x37\x5c\ \xbb\xf2\xc2\x95\xe7\x2f\x5b\xd1\xdd\xdd\x8d\x13\x09\x24\x41\x89\ \x8e\x36\x37\xd7\xe4\xf3\xc2\xc2\x28\xdb\x08\x26\xfb\xcc\x00\x67\ \xe5\x54\xb4\xf7\xd5\x08\x52\x8b\xc2\x09\xe0\x20\x66\x45\x31\x65\ \x50\x24\x1d\x23\x1a\xa3\x38\x66\x1f\x68\x0d\x09\x08\x7b\x42\x40\ \xd0\x85\xca\xca\xca\xea\xea\x9a\x27\xfe\xe3\x5b\x55\x5b\x7f\xb8\ \xee\x86\x0d\x4b\x96\x5c\x00\xaf\x98\xec\xed\x6d\x6d\x6d\x41\xe0\ \x76\x29\xf1\x45\xa8\x62\xda\x73\xca\xcf\xa1\x41\x44\xad\x14\xae\ \x2f\xbf\xa0\x60\xc5\xca\x4b\x2f\x58\x76\xd1\xb3\xcf\x7c\xef\xf1\ \x07\xef\x9e\x71\xd2\x29\x67\x2e\x5d\x06\x95\xc1\xe9\x96\x5e\xf4\ \xd1\x96\xc6\x86\xef\x7f\xf7\xf1\x5d\xbf\xdc\x79\xcb\xad\x77\xba\ \x91\xbc\xbe\x64\x2f\xec\xda\x67\x2f\x8e\x6d\x5d\xcc\x78\x66\x27\ \x14\xc6\x4c\xaa\xc1\x1c\xe6\xf8\xfd\x8f\x25\x0d\xc7\xb8\x34\xa5\ \x66\x7a\x55\x05\xf5\xb4\xb5\x0c\xe9\x65\x50\x2f\x03\x72\x81\x50\ \x52\xa9\x14\x3e\x7b\x7b\xc5\xe5\x1e\x3c\x78\xf0\x9a\x6b\xae\x19\ \x3f\x6e\xe2\x7f\x7e\xef\xb9\x25\x4b\xce\x47\x84\xea\xee\xea\x16\ \xcf\x01\xbe\x1a\x11\x1b\x76\x41\x0e\x8f\x00\x8c\xe1\x28\x18\xc2\ \x14\x96\x28\xce\xda\xd9\xde\x9e\xec\x4b\x5e\x7a\xf9\x95\x0f\x7f\ \xf9\x9b\xbc\xbd\xe5\x9b\x5f\xb8\x57\xe8\x58\x2c\x0e\x97\x94\x28\ \x28\x58\xb3\xfe\x73\xac\xa2\x72\xed\xda\x2b\x1b\x8f\xd6\x97\x57\ \x54\x22\x36\x48\xc4\x64\x82\x34\xe3\x0a\xec\xf8\xc6\xb7\xa5\xc3\ \xb8\xe7\x7c\x98\x45\x0c\x71\x29\x02\xce\xfc\x96\x29\x75\x31\xb8\ \x40\x38\x64\x5f\x01\xe9\x18\xa1\x90\x5c\xe8\x93\x56\x20\x23\xdc\ \x5f\x5f\x5f\xdf\x93\x4f\x3e\xb9\x60\xc1\xc9\x67\x9e\x75\x36\xbe\ \xb6\xb5\xb5\x09\xb9\x44\x22\xec\x9d\x2c\x52\x94\x2e\x52\xe5\xc2\ \xa2\xa2\xfb\x1f\xfc\xca\x05\x67\x9c\xf9\xf0\xdd\x1b\x9b\x9b\x9b\ \xf3\x0a\x8a\xc0\xd1\x34\x35\x36\x9e\xbb\x7c\xe5\x89\x8b\xcf\xfb\ \xd4\xa7\xaf\xdb\xf9\xf2\x4b\x95\x23\xaa\x70\x75\xec\xbd\x5c\x74\ \xb2\x1a\x32\x31\xc2\x8a\x3a\x05\x63\x86\xb2\x95\x90\x2f\x4b\x77\ \x6e\x5c\x35\xe0\xe2\x4b\x2f\xbd\xf4\xd0\x43\x0f\x3d\xf0\xc0\x83\ \x33\x67\xce\x78\xea\xe9\x2d\xa4\x35\xf2\x41\x65\xd5\x43\xce\xaa\ \x38\x2b\xbe\x00\xb0\xb8\x12\xaa\x70\x7f\xb6\x9d\x75\xb2\xae\x70\ \x9f\xb1\x58\x14\x67\x69\x6a\x38\x7a\xf9\x15\xab\xc7\x8c\x19\x7b\ \xcf\x17\x3f\x7f\xfe\x95\xd7\x8e\x1c\x3d\xa6\x1f\x01\xae\xb1\x69\ \xda\xac\x13\x46\x8d\x1d\xb7\xf9\x81\xbb\xff\xad\x2f\x75\xee\xd2\ \xf3\x5b\x9a\x9b\x61\xe0\xef\x68\x7c\x01\xf4\x61\x3d\x84\x99\x8c\ \x07\xc7\x85\x66\x19\xfd\x2c\x0f\x75\x14\x50\x14\x7e\x8a\x7b\xbe\ \xdb\x44\xf4\x9c\x02\x12\xc7\xc8\xc5\x38\x20\x32\x46\xe8\xcb\x92\ \x25\x4b\xf0\xad\xa3\xa3\x43\x6a\x0d\x9d\x91\x20\x3c\x3d\x03\x0d\ \x58\xc8\xa1\x1a\x12\xc1\x56\x6a\x91\xfe\x9b\xa0\x02\x31\xc5\x9b\ \x9b\x1a\x4e\x5f\x74\x56\x65\xd5\x88\x75\xeb\xd7\x5d\xb8\x66\x5d\ \xed\xa8\x51\x50\xd7\xce\x8e\x8e\xa2\xa2\xe2\x35\x37\x6d\x7c\xf0\ \xde\x4d\x91\x58\x64\xd1\x59\x8b\xdb\xdb\x5a\x81\x92\xb8\x18\xe0\ \xed\x8e\x2f\xd1\xa2\x2f\x0f\x71\xd5\xff\x5c\xfe\xe5\x12\xcd\x19\ \x03\xce\xa5\x41\x83\xfe\xc5\x18\x17\x2d\x29\xbd\x60\xbd\xab\xab\ \x6b\xc1\x82\x05\x23\x46\x8c\xc0\x0e\x42\xa0\xfe\x01\xff\xea\x05\ \x97\x0f\xdd\x6c\x6d\x69\x9e\x3e\x63\xd6\xfd\x9b\xef\x7b\xf6\xeb\ \x0f\x35\x1e\x3d\x0a\x1c\x04\x22\xab\xa7\xb7\x37\x16\xcb\xfb\xc4\ \x86\xdb\x3e\xff\xa5\x07\xf6\xec\xfe\x05\xe2\x5d\x26\xf3\x2e\xdb\ \x1a\x79\x72\x97\xe4\xcd\x7d\x4e\x9a\x1b\x0d\xb2\x5d\x4f\xc0\x07\ \x05\x96\xd6\xd6\x56\xf8\x69\x48\x46\xa0\x21\x5b\xab\x79\x20\x80\ \x70\x0f\x6d\x84\x10\x9c\xab\xc9\x3e\x6e\xc5\x8d\x78\x5e\xbc\xb3\ \xb3\xfd\x84\x79\x27\xdd\x7b\xfb\xe6\x2d\x8f\x7d\xad\xaf\xbf\x9f\ \xec\x35\x99\x4c\x22\xea\x5d\xf1\xe9\x1b\xef\xb9\xff\xee\x86\xa3\ \x47\xf2\xf3\x0b\xb9\xc0\xa8\xef\x78\x7c\x8b\xea\x77\xec\x8c\x55\ \x01\x06\x91\x39\x51\x8a\xef\xfa\x92\x55\x22\x09\xc3\x1a\x14\x50\ \x22\xb3\x8e\x1d\x08\x19\xc8\x01\xb9\xa7\x03\xe6\x89\xb8\x06\xab\ \xdb\x1b\x7c\x51\x42\x78\x10\xef\x01\xaa\x2f\xb8\xb8\x78\x2c\xde\ \xde\xd6\x72\xca\xc2\x45\x6b\xaf\xb8\xea\xf9\x27\xbe\x11\x4b\x14\ \xe0\xc9\x71\x51\x6e\xe8\xa9\x1c\x51\xbd\x60\xc9\xb2\x4d\x9b\x6e\ \x06\xfd\x42\x3b\xbf\xd3\xf1\xc5\x3e\x8e\xa5\x36\xd6\x35\x0a\x98\ \x26\xff\xd8\x6a\x05\x15\x10\xb2\x83\x46\xc0\x9b\x40\x04\x7d\xa1\ \xc5\x6c\x0c\xfc\x8a\x18\x0f\x3a\x84\x92\x0f\xdf\x09\xb5\xc2\xb2\ \xc0\x85\x0c\xab\xda\xc1\x75\x5c\x0f\xfc\x51\x53\x63\xc3\xc5\xab\ \x3e\x36\x6b\x6c\xdd\x8b\x5b\xb7\x14\x96\x94\x41\xb7\x1d\x37\xd2\ \xde\xde\x3e\xf7\xe4\x53\xe3\x55\x35\xf7\xdd\x7b\x47\x55\x75\xb5\ \x0c\xfc\x8c\x31\xfe\x8e\xc6\xf7\x5f\x9b\x27\x1e\x95\xac\x12\xf5\ \xce\x88\x46\x92\x79\x28\x78\x9f\x65\xcb\x96\xed\xda\xb5\x0b\xf1\ \xd5\x30\x8a\x81\xc4\x3d\x40\x44\xc1\x65\x03\x25\x9e\x70\xc2\x09\ \xfb\xf7\xef\x8b\xc6\xa2\x84\x48\x38\x33\xd8\x9e\x6b\x82\xc6\x67\ \x68\x61\x0a\x15\x67\x57\xd9\x31\xf3\x88\x1d\x4d\xce\x3b\xad\x6d\ \x2d\x37\x7e\xf6\xd6\xcb\x3f\x76\xc9\xbe\x09\x93\xc7\x4f\x9c\x84\ \x18\x1f\x8b\x46\xdb\x5a\x5a\x96\x5f\x76\xc5\x57\xee\xbc\xe5\x47\ \x5b\x9e\x3d\x67\xf1\x79\x00\xa5\x88\x12\x74\x91\xc3\x55\xad\x2c\ \x22\x92\xe9\xba\x98\xb8\x3b\x85\x5d\x1d\xae\x2a\x59\x16\x69\x4f\ \xc3\xf1\x82\xc2\x42\x28\x02\xa2\xe6\xba\x75\xeb\xd6\xae\x5d\x0b\ \xcf\xa3\x80\x3c\xf7\xee\x0a\x51\x2e\xcc\x0f\xe3\x58\xd4\x8e\x70\ \xe0\x9e\x3d\x7b\xa0\x4d\x06\xfe\x84\x92\x49\x3b\x51\xb4\x93\x4b\ \x47\x66\x76\xac\xa4\xb8\x8c\xb9\x11\x65\x2b\x9a\xfe\xd2\xa9\x09\ \x28\xa4\x74\x71\x49\xc1\x83\xf7\x7d\x71\xc3\xc6\x5b\xea\xd6\x5c\ \x4f\x88\x16\x7e\x34\xd5\x97\xbc\xec\xba\x1b\x1e\xf9\xda\x97\xe6\ \x9f\xb4\x60\xd4\xa8\xd1\x82\x4b\x62\x3a\xd3\x08\x61\x3f\x35\x9e\ \x57\x63\x16\xdf\x01\xfe\x06\x07\x06\xfb\x52\x7d\x9e\x0d\xca\x7b\ \x96\x75\x31\x3a\xb9\x1b\x81\xdb\x9b\x37\x6f\xfe\x8f\x7f\xb4\x65\ \xd3\xa6\x4d\x08\x4c\x35\x35\x35\xe5\xe5\xe5\x64\x32\xe1\x92\x86\ \x25\x1a\x87\x48\xc5\x7d\xfb\xf6\x8d\x1a\x35\x6a\xef\xde\x7d\xab\ \xd7\x7c\x12\x8e\x4a\xa5\x94\x1a\x0b\x89\xd8\x29\x98\x50\x6e\xd0\ \xac\x4a\x97\x08\xb8\x64\xb3\x08\x58\x38\x6a\xdb\xf6\x6d\x8d\x0d\ \xf5\x28\x41\x39\x8e\x55\x36\x91\x24\x2a\x05\x65\xdc\x3c\x54\x95\ \x27\x7b\x76\x6e\xff\x9f\x45\x4b\x97\xa7\x7a\xbb\x5d\x71\xe0\x40\ \x65\x55\xf5\xec\xd3\xce\xb8\xf9\x73\x1b\xce\x3e\x77\x49\x7b\x5b\ \x9b\x82\x20\x41\x4e\x5a\x17\x7e\xa4\xf8\x70\xba\xb8\xf0\x5c\x62\ \xbd\xa4\xac\x6c\xea\x94\x69\xd3\xa6\x4d\x47\xa8\x31\x56\xa7\x70\ \x10\x61\x02\x22\x3e\xa1\x02\xb7\xdd\x76\xe7\x5b\x6f\xbd\xd9\xd0\ \x50\x8f\x54\x6c\x98\x82\xb5\x7a\xba\x46\x52\xa4\x5f\x93\x27\x1f\ \x5f\x5d\x5d\xfb\xf1\x8f\x8f\x1a\x31\xa2\x0a\x0e\x1c\x48\x89\x00\ \xbf\xd0\x5e\xad\x0a\x54\x4e\x8c\xa8\x94\xd1\x55\x55\x06\x9c\x37\ \x1a\xed\xed\xed\xb9\xf9\x73\xeb\x17\x2c\x98\x7f\xfc\x8c\xe3\x23\ \xd1\x88\xa9\xc0\x70\x53\x0a\x54\x58\x4c\x48\xf3\xce\xbb\x6e\xbf\ \xe3\x9e\xfb\x60\x4d\x25\x45\x85\x50\x22\x9c\x0b\x39\xca\x69\x67\ \x9d\x7b\xef\xb6\xad\xa7\xf4\xb6\xce\x9b\xf7\x01\x22\x18\x02\x26\ \x66\x05\x6b\x31\x98\x34\x05\x55\x0b\x83\xc3\xfd\xc6\xd7\xff\x7d\ \xe1\xc2\xb3\x57\xac\x58\x09\xdf\xcf\x08\x27\x29\x1f\x64\x71\x83\ \x78\x3e\x91\x68\x14\x55\xad\x59\x1f\xf8\x00\x71\x8e\x8a\x1e\x0e\ \x35\x54\x58\x02\x62\xa6\xad\x82\x80\x81\xcc\x3c\xdc\x10\xfd\x18\ \x2c\x48\x69\xfe\x46\x20\x03\xd0\x20\x4f\x3e\xf9\xdd\xc5\x8b\xcf\ \x5e\xbd\x7a\xcd\xdb\xac\x2f\x21\x3b\xfb\xfa\x33\x3f\x58\x79\xf5\ \xda\x54\x4f\x57\x56\xa2\x7a\x30\xb5\xff\xf4\xcf\x9f\xd8\xfb\xbb\ \x5f\xad\xbb\xe1\x5f\xff\x8a\x82\xd5\xf2\xe5\xcb\xd7\xac\xb9\xf6\ \xac\xb3\xce\x05\xb0\x80\x6f\xa1\x6b\x35\x75\x31\x26\xd3\x48\x26\ \x79\x02\x2e\xc2\x53\x2a\x6b\xcc\x27\x6c\xc3\x54\x67\x33\x2c\x38\ \xb7\xea\x07\xe2\x4a\x65\xbe\x4e\xec\x3a\xd1\x76\xfa\x2b\x93\xd5\ \x6b\x47\x7d\x3a\xca\xc6\x1c\xc9\x3d\x76\x74\xb4\x2d\x5f\x7e\xb9\ \xa1\x0d\x0c\x6a\xd7\xcf\x83\x07\xfa\x5a\x56\x5d\x7a\xe9\x53\xcf\ \x3e\x77\x60\xef\x9f\xc6\x8d\x9f\x80\x4a\x28\x4e\x0a\x7e\x76\xc6\ \x07\x67\xef\xfa\xf9\xf6\xef\x3f\xf3\xf4\x8a\x8b\x56\x2a\xd4\xea\ \x3f\x4a\x3b\x6f\x4e\xac\x1e\x39\x10\x22\xd4\x41\x0a\x4f\x9a\x34\ \xe1\xad\xc3\x6f\x1e\x7f\xfc\xcc\xde\xde\x24\x27\x13\x53\x4f\x98\ \xc9\x28\xe6\xe8\xfe\x9a\x08\x8c\xc2\xd5\x4e\x80\xf9\xe5\x63\x1c\ \x3c\xf3\x51\x51\xde\x6d\x38\x06\xa3\x29\xff\xa1\xb9\x6e\xe9\x87\ \x1c\xf5\xc9\x55\x69\x41\xbb\xe3\x0c\x00\x96\xcc\xe0\x22\x54\xf3\ \x45\xc9\x04\x9f\xf0\xf7\x01\xeb\xa0\x15\x02\x5c\xd7\x5c\x7d\xe5\ \x1d\x0f\x3d\x3c\xf9\x53\x1b\x06\x92\x02\x85\x41\x46\x7d\x3d\x3d\ \x4b\x57\x7e\xf4\x89\xef\x3e\x7a\xd6\xd9\xe7\x0c\xd7\x1c\x44\xec\ \x15\x65\x8b\xa2\x84\x27\x59\x1d\x7a\x24\x00\x53\xd2\xc1\x4b\xa0\ \xc0\xb9\xbf\xf4\x1c\x28\x45\x0c\x53\x15\x08\x71\x9b\x2c\xcc\xe4\ \xfb\x19\x51\x7f\x95\xce\x5f\x9a\xd0\x05\x12\x80\xd2\xcc\xa1\x43\ \x87\xe4\x55\x0a\x8b\x43\x11\xe9\x85\x17\x5e\x78\xe4\x91\x47\x48\ \x83\x94\x62\x5a\x35\x02\x5a\x20\xc4\xde\xe6\xfa\xe6\xc6\xa3\xc2\ \x6d\x4b\x3a\x1e\xb4\xdc\x98\xb1\x63\xf3\x2b\xaa\x2e\xb9\xf8\xe2\ \xd9\x73\xe6\x00\xa7\x85\x95\x88\xaa\x2f\xd8\x0e\x15\x43\x75\xeb\ \xfa\xeb\xaf\xc7\x38\x26\x0f\xa7\xdd\x3d\xca\x55\x03\x02\x1e\x2e\ \xe9\xe6\x2c\xf5\xea\xd0\xe0\xf2\x00\xa6\x61\x9e\x86\x31\xaf\xf9\ \x22\xa0\x7d\x2a\x16\x05\xc6\x97\xa8\x7d\xa8\xae\xae\x0e\x29\x15\ \x5d\x7d\x63\x63\xe3\xad\xb7\xde\x3a\x7f\xfe\x7c\xdc\x80\x20\x8a\ \xd0\xbc\x24\x8b\x94\x58\x62\x7a\xc1\x1d\x0a\x7e\x6e\x44\xe5\xce\ \x6d\x5b\x57\x5e\x75\x4d\x7f\x6f\x97\x70\xff\x6e\xa4\xaf\xb7\xf7\ \x8c\x8f\x9c\xf7\xfc\x63\x0f\xff\xcb\x75\xd7\x11\xf1\x10\x96\x11\ \xd1\x38\x18\xf3\xbe\xfb\xee\x7b\xf4\xd1\x47\x6f\xb8\xe1\x06\x78\ \x95\xa0\xae\x91\xc7\x30\xb5\xec\x61\xd1\x66\x68\x81\x43\xcc\xea\ \x4a\x88\x07\x42\x9d\xdc\xf8\x34\x37\x8c\x0d\xfd\x20\x9e\x55\x4c\ \xdc\x09\xdc\x02\x6e\xfe\xf0\xe1\xc3\xa8\x85\x4c\x9e\x3c\x99\x18\ \x22\x22\x0f\x48\x52\xb4\x82\x3d\xb1\x1b\x0c\xf0\xd4\xd3\x4e\xeb\ \x6b\xad\x6f\x6b\x69\x86\x0c\x85\xb5\x4a\xbd\x18\x37\x61\x62\xf9\ \xc8\xba\x5d\x3b\x77\x96\x96\x95\x11\x71\x6e\x16\xe3\x28\x69\xb9\ \xf8\xe2\x8b\x8f\x1c\x39\x62\xf5\xee\x71\xfb\x9a\x54\x36\xaf\xe2\ \x76\xe0\x46\x5c\x53\xdb\xe2\x36\x6e\xc6\x93\xfb\xf3\xc1\x8e\xb6\ \x36\x14\x61\x5c\x4f\xae\xae\x9d\xf8\x38\x5e\xc2\x23\xaa\xf9\x66\ \x1f\xc1\xb8\xda\xe3\x07\x13\x25\x45\xd4\x09\xdf\xdc\xd4\xd4\x84\ \xfb\x24\x67\x94\xa3\xf8\xe7\x71\x7b\xd9\xb2\x8a\xca\x0f\xcd\x9b\ \xf3\xeb\x97\x5f\x2c\x40\xbc\x47\x0a\x29\x3b\x0c\x06\xfb\xfb\x3f\ \xb4\xe8\xec\x1f\x6c\xd9\xe2\x0a\xf9\xc6\x6c\xbd\xa3\x85\x84\x4e\ \x43\x91\xb3\x33\x4d\x1c\x96\x7c\xb8\x4a\x56\x15\x76\xb2\xfe\x71\ \xe9\xa2\x20\x02\x59\x58\x26\xa4\x20\xb6\x43\x3a\x07\x0f\x76\x36\ \x37\x77\xca\x94\x47\x57\x00\xa4\x83\xe7\x7a\x5d\xd5\x46\x74\x91\ \xc4\x30\x4d\x2a\x08\x30\x6f\x7c\xc7\x09\xfc\x23\x22\x41\xb8\x12\ \x54\x78\x90\xee\xd8\x58\x7c\x38\xfa\x11\x35\xa2\x85\x0b\x17\x36\ \xec\x7f\x1d\xcc\xb7\x81\xef\x40\x61\xd3\xa6\xcf\xe8\xcb\x38\xff\ \xfb\xea\xaf\x4b\xcb\x4a\xa1\x29\x46\x46\xb6\x3e\x92\x26\xda\x55\ \x3f\xc7\x54\x3d\x28\xbd\xa1\x64\x95\xcc\x2d\x70\x6e\x1c\xd9\xd3\ \x33\xd0\xdb\x8b\x42\x85\x23\xf5\xd9\xcd\x8b\x47\x0f\x1c\xec\x44\ \x0e\x5b\x5e\xe6\xa6\xfa\x87\x4c\x80\x7b\xf7\x18\x18\x6e\x8a\xba\ \xb8\x07\xf8\x69\x13\x3d\x02\x8a\x63\xc2\x13\x21\xf8\xb1\x63\xc7\ \x1f\x37\x6e\xcc\x1b\xbf\xfd\x0d\x58\x5a\x95\x36\xc9\x92\xd2\x89\ \xa7\x9e\xfe\x93\x9f\xfe\x14\xdd\x04\x64\x8f\x46\x40\x36\x0b\x48\ \x80\xdb\x8c\xe9\xd3\x20\x29\x13\x8a\x11\x9c\xf9\x54\x4b\xfc\x84\ \xba\x55\x32\x39\x74\xe0\x20\xda\xa8\x62\xe0\xdb\xf3\x0b\xe2\xa8\ \xa4\x23\xff\x28\x29\x76\x07\x87\x78\x7a\x28\xc3\x15\xe1\x2d\x93\ \x07\xd7\xf1\xca\x08\x42\xcd\x85\x50\x55\xde\x26\x8d\x49\x37\xf0\ \x09\xd2\x53\x04\x2d\xf1\x97\xbb\xfe\xea\xb6\xa4\x49\x7c\x25\x39\ \x73\xdd\x4c\xb7\x1d\x06\x44\x46\xde\x04\xb5\xa4\x13\xe7\xce\xd9\ \xfa\xf2\xee\x53\x3e\xbc\x88\x52\x6e\xb8\x6a\x64\x67\x1f\x9c\x33\ \xf7\x5b\x3b\x5e\x68\x6b\x6d\x29\x2a\x2e\x21\xa1\x98\x41\x28\xae\ \x9b\xf6\x5e\xaf\x80\x6c\x05\x74\xa2\xc9\x5c\xbb\x17\xc6\x36\x78\ \x24\xd5\x23\x6b\x8b\x8b\x8b\xf2\x98\x03\x88\x91\xea\xea\xec\x4c\ \xf6\x75\x17\x15\xb9\x99\x2c\xd0\x86\x33\x38\x24\xbc\x43\x3c\x1e\ \x31\x05\x25\x53\x2d\x80\xc0\xb8\xcb\x7c\x91\x40\x91\x9f\xd2\xe0\ \x98\xd5\x5e\xe1\x07\x09\x96\x9e\xfb\x40\x83\x51\x2b\x5b\x52\x36\ \xfa\x87\xab\x9e\x33\x77\xee\x40\x57\x7b\x6b\x73\x13\x7a\x0b\xc9\ \xb7\x65\x44\x9b\xea\x88\xea\x31\xe3\x76\xee\xdc\x89\x68\x45\x4d\ \xcf\x36\x44\xb0\x83\x1a\x79\x3e\x85\x6c\x3d\xaa\x4f\x8e\x1f\x38\ \xbd\xed\xa2\x90\x54\xd7\xd6\x96\xa6\xfa\x85\x63\x4e\x24\x22\xf9\ \x09\xd7\x10\xfc\x3c\x9b\x7e\xfd\xf5\x96\xce\xce\x7e\xc8\x48\xfa\ \xa9\x77\xc1\xd0\xe8\x52\x0d\xe0\x0c\xab\x8c\xb9\x54\x62\xe6\xcc\ \x02\x77\x5e\x50\x58\x34\x61\xec\xe8\xbd\x7f\xf8\x1d\xd8\x08\xf1\ \x1c\x04\x98\x77\xd1\x36\x39\xeb\x84\xb9\xdb\x5f\xf8\x39\x8e\x25\ \xce\x4f\xd0\x6c\xfe\xc5\x33\xec\x90\x89\xd1\x05\xb9\xba\x7f\x4a\ \xb7\xf3\xa8\x7f\x4c\xa2\xd5\x6c\x55\x55\x61\x41\x41\xfe\xe0\x20\ \xf4\x05\xd7\xe4\x10\xa1\x09\xb3\x81\x03\x1d\x1a\xea\x7d\xfd\x8d\ \xa3\xaf\xbf\xd1\xdc\xdb\x3b\x68\xc0\xb2\xb4\x38\xee\x7a\x94\x0a\ \x97\xec\x39\x55\x05\xc4\x0f\x6a\xbb\xc2\x44\xde\x9e\x9a\x46\xf7\ \x5d\xba\xad\x41\x36\x58\x87\x22\x94\x95\x95\xa1\x65\x0b\xfd\x5d\ \x58\x01\x20\xc8\xcf\x2f\x58\x76\xc1\x05\x87\xde\xf8\x83\x23\xdb\ \x8d\x5c\x59\x68\x03\x4a\xfc\xe0\xec\x39\x2d\x1d\x9d\x92\xe4\x2f\ \x82\x1e\x01\x28\x9b\x82\x68\xce\xbe\x0c\x3b\x74\x90\x36\x45\x0d\ \x63\xe1\xfa\x82\xbc\x6a\xad\x8e\xc7\xdd\xca\x8a\xa2\xfa\xfa\x3e\ \x40\x73\xd5\x3c\xaa\x3b\xf6\xf3\xf3\xa3\xf9\xf9\xbc\xab\xb3\xab\ \xb9\x39\x39\xf3\xf8\x9a\xca\xca\x02\x9c\xd7\x58\xab\xd7\x38\xa0\ \x9c\x39\x53\xc1\x52\xb5\xb2\xa9\x35\x63\x6b\xd2\xad\x0e\xdb\x4c\ \x12\xc8\x93\x01\xea\xb6\x6d\xdb\x26\x3c\x0b\x73\x90\xb9\xa1\xfd\ \x58\x58\x0f\x73\xf7\xfd\xfe\x37\xed\xcd\xcd\x95\xe8\x9b\x91\x0e\ \x0e\x3b\xc3\x47\xd4\x4d\x98\x74\xd3\x4d\x37\x9e\x74\xf2\x02\x1c\ \x05\x01\x2d\x5d\xba\x94\xd2\x0b\xe3\xec\x7c\xe7\xb2\x15\x88\x6b\ \xd2\xfe\x18\x6a\x9f\x4e\xf3\xd6\xd6\x24\x9a\xa4\x34\xd1\x4c\x19\ \x95\x90\x43\x2a\x95\xee\xee\xe1\x15\x15\x65\x73\xe7\x8c\xae\x28\ \xcf\xc7\x23\x71\xdd\x77\x29\x8c\x1d\xb3\xf3\x06\xf7\x06\xae\x1e\ \x81\xfc\xb1\x27\xbe\xd3\x8e\xc7\x34\x6e\xda\x40\x61\x65\xba\xa4\ \x26\x53\x5a\x73\xe9\xb5\xeb\xf2\x25\xa8\x11\xd2\x62\x2e\xa0\x77\ \x6f\x4f\xcf\xf9\x17\xae\x98\xbb\xf0\xcc\xa1\x68\x22\x51\x36\xe2\ \xc9\xa7\x9e\x86\xa1\xd9\xe6\x19\x3e\x5d\x10\xbe\x6a\xe2\x82\x33\ \xaf\x63\x4f\x35\xed\xc5\x62\x91\xa6\xa6\x64\x7f\x7f\x5f\x49\x49\ \x04\x82\x86\x6f\x96\x40\x4c\x3c\x78\x54\x16\x12\xf9\xc5\xc7\xd5\ \x95\x95\x95\x26\xd4\x73\x10\x86\x2f\xac\xcf\x0d\x67\xcf\x9e\xc7\ \x36\xf9\x9b\x69\x42\xd5\x78\x8c\xfc\xf8\x30\x5a\x13\x58\xa0\x35\ \x1f\xbf\xe2\x8a\xb9\xf3\xe6\xfe\xd7\xb3\xcf\xd7\x5d\x74\xd9\xc2\ \xe5\x2b\x7a\x3a\x3b\x71\xb5\x02\xe2\x0f\x0d\x0a\x6e\xde\x95\x1a\ \x25\x0b\x50\x79\x89\xc4\xe9\x67\x2c\x2a\x2b\x2d\xfd\xfd\x6f\x5f\ \x3b\x79\xfe\x89\xb5\xb5\xb5\xa0\xdb\x4d\xba\x1b\x90\x91\x2d\x07\ \xba\x60\xd5\x44\x12\xf0\xb2\xf4\x10\x70\xec\x91\xfa\x0e\x3c\x12\ \x74\x6d\xf4\xf7\x67\x52\xa9\x8c\x71\x0a\x40\x5e\xb3\x66\xd4\x94\ \x97\x25\x80\x18\x29\x1e\xdb\x21\x39\x94\x5a\x38\x26\x6e\x1c\xa3\ \x10\x1d\x30\xb1\x9c\x56\x66\x14\x0a\x64\x39\xd8\xbf\x75\xd7\xae\ \x79\xf1\x99\xef\x7c\xfb\xab\x0f\xc5\xe3\xb1\x21\xf4\x3f\x48\x32\ \x30\x22\xc5\x13\xd1\xa9\x05\x76\xef\xe9\xee\x02\x9d\xfa\xe2\xf6\ \x6d\xd3\xa6\x4e\x15\x33\x01\x64\xbb\x17\x7d\xfa\x05\x94\xf5\xe7\ \x14\x26\xcc\x2b\xf2\xcc\x61\x5e\x67\x95\x80\xd1\x47\x1b\xba\x3b\ \xbb\x52\x28\x2c\x33\x37\xbf\x12\x96\x5d\x51\xd1\xdb\x2b\x48\x12\ \x78\x6b\x64\x8e\x10\x32\x4e\x01\x24\x41\xf5\x67\xa6\x8a\x47\xa6\ \x7a\xc1\xcd\x8a\x49\x7e\x11\xef\xda\xda\xb2\x03\x03\x9c\xd8\x71\ \xff\x6e\x8a\x36\xcc\x69\x62\xa6\x1d\xc7\x84\x64\xdc\x3a\x9a\x60\ \x8a\x4b\x4a\x6f\xbf\x7d\x53\x62\xa0\xe7\xa1\xbb\x6e\xc3\x0f\x20\ \x88\xd1\xe1\x16\x91\xc2\x91\x32\x62\xf2\x9f\x8b\xaa\x11\x4c\xb2\ \xfe\xad\x37\x67\xcf\x9e\x0d\x28\x67\x3a\x30\x21\x23\xdb\x07\x65\ \xb3\x46\x57\x54\x5f\x8c\x6e\xe2\x54\xb7\x67\xe3\x20\xa1\x3e\xa5\ \xa5\x89\xf9\xf3\xc6\x25\x12\xc0\x9f\x32\x2e\x44\x19\xc0\xf4\xe1\ \xfa\x96\x44\x1e\x8a\xf1\x80\xa4\xae\xac\x4d\x79\xec\x85\xeb\x3a\ \x26\x5c\xd2\x16\x59\x82\x16\x5f\x70\x19\x90\x4e\x7b\x47\xb6\xa9\ \x25\x33\xb6\xce\x35\xec\xa2\xe9\xeb\x56\xa5\xf3\x2c\x0f\xb4\xb5\ \xd1\x62\xf8\xb3\xac\xb5\x20\x4e\xa1\x1e\x87\x9b\xc4\x34\x9c\x9f\ \xbd\xb0\xfd\x0b\x1b\x6f\xba\xec\x9a\x4f\x9e\x38\xff\x64\x70\xaf\ \x91\x68\xc4\xce\x4e\xe1\x95\xff\xf4\xfa\x1f\x0b\xf3\xf3\xc0\xb2\ \x23\xa6\x51\x12\x47\x23\xe0\xf0\xd0\xe3\xf0\x91\x47\x54\x9b\xcf\ \x91\x5b\xc3\x21\x94\x96\x24\x64\xbb\x2e\x2e\xcb\x41\x53\xd5\x60\ \x9a\x23\x49\x1e\x1c\x4a\x1f\x7a\xb3\xb9\xb2\x32\x66\xaa\x74\x21\ \x26\x5f\xd1\x27\xb8\xb6\xee\x1e\xa1\x2f\x89\x04\x4b\xe4\x31\x50\ \x74\xed\xed\xe9\x92\x22\x8e\x0a\x23\xa1\xeb\x50\x9f\xe8\xb0\x8e\ \xd9\xee\x01\xb4\x5b\xdf\xc8\xae\x91\xd9\x7e\xf8\x8c\x45\x48\xfd\ \xbf\xfc\xd5\xaf\x1d\xda\xb7\xf7\xb2\x2b\xae\x4a\x0a\x52\x99\x47\ \xa4\x1b\xc2\x40\x85\x05\x85\xaf\xee\xd9\x3d\x7d\xfa\xf4\x21\xa9\ \x35\x86\x4b\xcc\xed\x83\xfc\xfe\xc1\x75\x34\xcd\x4f\x94\x2b\xe9\ \x92\x48\x1f\x00\x46\xd1\xcd\x29\xd5\x4e\x80\x0b\xf9\x48\xe0\x8c\ \xa6\x4c\xa9\xaa\xa9\xae\x8c\x89\xca\x17\xcd\x22\xd1\x29\xa9\xec\ \x05\x90\xc7\x8a\x20\x4b\x47\xc1\x6d\xb6\xb6\xa1\xaf\x61\xf0\x48\ \xfd\x50\x6b\x6b\xba\xb8\x48\x76\xb0\x09\x7f\xaf\x40\x17\x19\xb7\ \xfa\xc7\x73\x9b\x58\xf6\x2f\x2d\xb8\x0c\xf8\xdd\xaa\xea\xda\xcd\ \x77\xdd\xd5\xb8\xff\x8f\x77\xdf\xfa\x59\x24\x5c\x08\xf0\xa2\xeb\ \x18\x59\x58\x34\x8a\xfe\x9c\x03\x7b\xf7\xce\x9a\x39\x13\xf9\x00\ \x24\x62\xbb\xa1\xb0\x06\x99\xeb\x31\xd1\xc3\xe1\xaa\x70\xa8\x43\ \x98\x10\x9b\x17\xfe\x5d\xbb\xbc\x25\xa4\xe6\xcc\x9a\x05\x55\x2d\ \xc2\xc8\x8e\xa9\x26\x3b\xae\xb2\x5c\x32\x06\x11\x47\xc0\xec\x38\ \xc5\xc5\x6e\x69\x69\x34\x1e\xe3\xa0\x22\x0a\x0b\xb2\xb2\xbe\xe8\ \xf4\x25\xb3\x5d\x5d\xc2\xc7\x41\x4c\xba\x91\x49\x77\x31\x0d\x23\ \x1a\xd3\x57\x6b\x30\xb4\xdd\x3f\x49\xaa\x04\x42\x1a\x39\xc7\xfa\ \x0d\x9f\x39\x7e\xf2\xf8\xcf\x5e\xbf\xf6\xd0\x81\x03\xb8\x4a\xc8\ \xa0\xa8\xb0\xf0\xcf\xfb\xf6\xa1\x86\x50\x53\x5b\x8b\x1d\xec\x8e\ \x27\x12\x93\x0f\x28\x32\x4f\x0e\x54\xeb\x8c\x6a\xa9\x05\x4d\x2c\ \x40\xa1\xfa\x4b\x27\x5c\x14\x2d\x18\x63\xb9\xa8\x55\xbb\x53\x1b\ \xbb\x96\x97\x47\x1a\x1b\xc0\x36\xa8\x59\x59\x50\xf9\x78\x2c\xd3\ \xd4\x94\xed\xea\x8e\x54\x94\x03\x9c\xb0\x63\x98\x98\x2d\x08\x29\ \xf1\xac\x69\xa1\x35\x05\x6e\x53\xb6\xa3\x36\x5b\x50\x91\xcb\x96\ \x2d\x3f\x6e\xf2\x71\x0f\xde\x79\xdb\x85\xab\x2e\xbb\x64\xd5\xa5\ \xe0\x36\x7e\xb5\x7b\xd7\xe4\x89\x13\xb3\x92\x6c\xb5\xdd\x19\x1d\ \x1e\xd0\xa0\x00\x2e\xd3\x51\xcc\x97\x67\xe4\x24\x6b\x94\x31\xb9\ \x86\x4c\x65\x3a\x51\xf0\x66\x1d\x58\xc4\x10\xa1\x75\xee\xe4\x09\ \x9e\xcf\x95\x73\x3d\x15\x5b\x0b\x50\x5e\x58\xc0\xbb\xbb\xd3\xed\ \x1d\x19\xd7\x8a\x9b\x01\xb7\x63\xbb\x1b\xbb\x9d\xd4\x56\x9c\xf0\ \x82\xbb\x81\x8c\x26\x4c\x9c\x78\xfb\xc6\x8d\x2f\xfd\xe4\xc7\x77\ \xde\x76\x33\xda\xa4\xf6\xff\xe9\x8d\xe9\x33\x66\xf4\x88\xd6\xcf\ \xac\x1d\xe3\x73\x99\x98\x47\x66\x11\xe8\x77\xed\xcc\xd5\xea\x82\ \xb0\x68\x40\x9b\x22\x75\x54\x03\x96\xd8\xce\x75\x7b\x35\x39\x30\ \xb9\x25\xc0\x1c\x46\x23\xc2\x4f\xa3\x9b\x3a\x12\x35\xc1\x8e\xf7\ \x26\x59\xff\x60\x74\xc2\xf8\xc4\xd8\xba\x18\x67\x26\x2f\x77\xc3\ \x26\x66\x34\x28\x20\xa6\x9c\x32\xa2\x7b\x86\x8e\x60\x40\xc4\x72\ \xec\x77\xf3\xcd\x37\x17\xe6\x45\x2f\xf8\xc8\xe2\x81\x54\x1f\x4a\ \xbe\x28\x99\x1a\xfb\x32\x9f\x01\x01\xf9\xf2\x0a\xee\xf5\x49\x1f\ \xd3\xc4\x82\xd3\x86\xfc\xf3\x23\x3c\x6c\xec\x2b\x54\x38\xb2\xd0\ \x0e\x87\xd5\xd9\x99\x8e\x47\x79\xaa\x5f\xcc\x5c\xc9\x8b\x3b\xa8\ \xc7\xc5\xf3\xa2\xe3\xc6\xc6\xa5\x76\x38\xa6\x2a\x19\x36\x31\xdb\ \xb8\x6c\xfb\xd2\x65\x19\x66\xd7\xc4\xcd\x81\x64\x41\x54\xb1\x00\ \x98\xbc\xe4\x92\x55\x23\x6b\x47\x02\x4c\x13\x81\x6b\xdb\xaf\x99\ \x0f\x3f\x6c\xaa\xe1\x58\x7d\xd2\x3c\x47\x55\xc3\x6e\xc7\x60\xde\ \xdc\x1a\x83\x5e\xbc\x0c\xc2\x4c\x98\x91\xda\xc4\x54\x3b\x00\x7c\ \x70\x5b\x5b\x66\x70\x00\xfe\x38\x06\xb6\x24\xd5\x9f\x05\x0f\x89\ \xeb\x17\x0c\x1f\x73\x86\x32\x5a\x28\x3e\xce\x2c\xb7\x93\xf6\xb7\ \xd4\x30\x9a\xc5\x16\x2e\x78\x11\xe9\x63\xb3\xf4\x0d\x0d\x0d\xa0\ \x8a\x30\x02\xaa\xc9\x34\x2f\x20\x2c\x20\x1f\x61\x66\x4f\xd3\x34\ \xdd\x1d\x04\x61\x42\x1a\x14\x6a\x3f\xf6\xcd\x7a\xf4\x26\x36\x2b\ \xd3\xcb\x72\x6b\x9e\x8d\x6c\x58\xc8\x32\x10\x6c\x53\xa6\x24\x20\ \x29\x04\x2f\x84\x8b\x43\x87\x78\x5f\x2a\x5d\x5a\xe6\x72\x5d\x06\ \xf1\xc6\x75\x59\xd8\xfb\xd8\x26\x66\x64\x14\x2e\xb7\xd9\xa2\xb1\ \xa5\x43\x74\x1a\xe8\xed\x9c\xf5\x55\x5b\x83\xfc\x81\xcc\x5c\x9b\ \x37\x57\x83\xbc\x07\x37\xc0\x5f\x4c\x96\x61\x66\x0e\x2d\xf7\x37\ \xaa\x83\x55\xe7\xba\x99\x5d\xd8\x11\x80\x5f\x7a\xc8\x29\x28\x60\ \x59\x3d\xfb\x4b\x36\x8f\x52\xf7\xab\x2a\xe1\xe3\x32\xb0\x67\x5d\ \x5d\x7c\xef\x3e\x28\x94\xec\x68\x30\x50\x83\xd1\x68\x3e\xee\x8a\ \x6e\x80\x9c\x8b\xa1\x01\x8d\x4d\x19\x3d\xa2\xca\x44\xc0\xbe\xac\ \xf9\x91\xcc\xf4\xe1\x06\xca\xbf\xe6\x2c\x7e\x13\xcb\x6a\x61\xc8\ \x1c\x88\xdb\x1a\xc4\xb9\x9d\xcc\x73\x3d\x55\xc8\x3f\x31\x9f\x26\ \xdd\xb1\x88\x4e\x0b\xe4\x05\x39\x6f\xbe\x95\xc5\x04\xea\xa2\x62\ \x37\x9b\x56\x84\x88\x01\x51\x7a\x86\xbd\x6a\x25\xc1\x2c\x31\x28\ \x94\xa4\xac\x99\x13\x98\xd3\x36\x0c\x08\xb2\x05\x14\x7e\xed\x84\ \x29\xde\x1b\x01\x19\xb2\xd9\x08\x28\x8c\x54\xcc\x03\xa0\x0a\xa2\ \x75\x46\xd5\xb9\xa5\xe3\x96\x63\xe8\x8e\xe1\x9c\xb4\x13\x9e\x35\ \x9c\xce\x38\x03\x82\x84\x05\x19\x22\x6e\xbb\xbe\x3e\x93\x9f\x00\ \xa6\xcf\xda\x45\x0e\x5f\x07\x91\x57\x6d\x86\xee\xa1\xdb\x90\x29\ \x2a\x9f\xf9\x1a\x53\x08\x54\x1d\x43\x83\xc2\x4e\xc7\xa8\x8f\x91\ \x51\xa0\x40\x98\xb3\x1f\xce\x5f\xe4\x71\x42\x51\x2c\x98\x6a\x78\ \x8d\xe4\x76\x35\xd8\xa5\xea\x94\x23\x11\xb5\xe6\x60\xc9\xa0\xf0\ \xa7\xfe\x68\x36\x91\x27\x26\x07\x82\xea\x88\x47\xdd\x82\x42\xb7\ \x37\x69\xa6\x8e\x4b\xfd\x31\x9c\x3c\x22\x7e\x96\x93\xb2\x52\xe3\ \x14\x3d\x22\xd7\xb1\xc6\xcf\xf2\x9c\xcc\x8f\x8d\x7a\x7c\x55\x7f\ \x4b\x58\xc6\xef\x50\x91\x2b\xa0\x3e\xe1\x47\x1e\x3e\x4d\x88\xa5\ \xf6\x5a\x73\xe9\x71\x45\x0d\x66\x94\x54\x2e\x35\xc0\xc8\x36\x74\ \xa2\x4b\xb9\x87\x97\x69\xaa\x1f\xa8\xfb\x0a\x41\x2a\xb8\xc8\x3f\ \xd3\x19\x3c\x3d\x61\x9d\x08\x05\xc9\x24\x47\x45\x08\x9e\x58\x4d\ \xe9\x57\x55\x0a\x87\x48\x62\xb5\xca\x34\x2d\x69\x8d\x4f\x83\xbb\ \x8a\x7f\xc9\x06\x04\x64\xfb\xe6\x70\x50\xb7\x7d\x33\x49\xc7\x88\ \x29\x3c\x27\x34\xec\x86\x0c\x6d\x66\x6b\x10\x91\x37\xae\x2e\x28\ \xdb\x38\x88\xfb\x07\xcd\x3d\x1d\x53\x66\x0f\xee\x51\x28\x51\x42\ \x14\x32\x89\x69\x2d\x2c\x8c\x34\x36\x66\x30\xcd\xa9\xa2\x32\x82\ \x8a\x34\x77\x72\x84\x1b\xe6\xef\x0a\x61\xa1\x39\x6c\x76\x5d\xcc\ \x36\xb1\xb0\x81\x04\xfa\xb9\x49\x7d\x8c\xdb\x0a\xcc\x5c\x0f\xbf\ \x06\xc7\x58\x59\x2e\x13\x73\x98\xe6\x37\x64\x42\xa1\x35\x48\x3b\ \x27\x9d\x63\x33\x3e\xcc\xab\x16\x44\xaf\x76\x7e\x42\x4c\x6b\x1a\ \x18\x04\xf0\x73\xe5\xd4\x05\x91\x4f\xe4\x57\xc5\x9a\x5b\xd2\x6d\ \x1d\x43\x53\x26\x83\xfb\x74\x74\xa3\x90\x69\xf9\x50\x84\xbf\x96\ \x0e\x0f\x76\x56\x5a\xa9\x86\x21\xb1\x08\x1c\x0f\x67\x23\x14\xb3\ \x8c\x68\x8c\xfa\x04\xe7\xf5\xbf\x33\x13\xf3\x1c\x0e\x69\x8c\xdd\ \x82\xe7\x84\x86\xf3\xa8\x2f\xab\x92\xc9\xfa\x07\x30\x2e\x12\x74\ \xa6\xb3\x3b\xd4\x11\x79\x32\x89\xa6\x1e\x67\x44\x65\x4c\x1a\x9d\ \xf4\x56\x54\x4e\x52\x05\xd4\xe0\x8b\x58\x2c\x6c\x68\xfc\xa8\xa3\ \xe3\x08\x48\xde\x21\x64\x06\x94\x3a\xd9\x45\xb1\x9c\xc6\x65\xfc\ \x4e\x58\x7d\x72\xe6\xdb\x01\x0d\x0a\x00\x45\xd3\xd7\xc1\xb9\xf5\ \x6a\x8a\x40\x2c\xe3\x3c\x3c\xdd\x5a\xf9\x57\x98\x55\x77\x37\x1a\ \xa9\xc1\x0f\x09\x74\x83\x6c\x0b\x08\xb1\x37\x99\xa9\xae\x72\xcb\ \xcb\x22\xa8\xc7\x66\xb2\x81\x2e\x6a\x66\x63\x51\xaf\x6f\xd5\x09\ \x12\x66\x06\x22\x42\x3a\x98\xf6\x41\x1d\x8f\x86\x15\xcb\x89\x9b\ \x4d\x62\x11\x0e\x5e\x81\x18\x6f\xbf\x60\x2a\x90\xee\x05\x78\x15\ \x4b\x14\x3a\xd5\xb0\x32\x14\xc7\xf7\x5a\x97\x50\x17\x36\xa4\x03\ \xcb\x02\xaf\x8c\x18\x0f\xd1\x43\x40\x08\x67\x48\x1d\x40\x9f\x95\ \x95\x46\x28\x01\x70\x5d\x66\xdd\x8e\xd7\xa9\x6a\x95\xa2\x59\xce\ \xf1\xe5\xcb\x1a\x14\xcb\x81\x8a\x20\x3e\x69\x1e\xac\xe9\x74\x09\ \x1b\x4b\xd8\x64\xec\x27\x1d\x38\xc4\x08\xda\x2b\xe9\x44\xa3\x34\ \x89\xc2\x70\x20\x39\xc0\x44\x00\xf2\x84\x4c\x2c\x94\xa6\x72\x67\ \xd4\x28\x70\x60\x4e\x5e\x9e\x78\x3e\x87\xde\x1c\x4c\x27\xc1\xe1\ \x93\x56\x66\x73\x92\x48\xc1\x29\xc6\xa1\xd7\x65\x10\x21\x85\x89\ \x86\x98\x9d\x87\x17\xac\xa0\xc2\x37\x7e\xfc\x78\xc8\xe8\xd5\x57\ \x5f\x45\x95\x86\xc2\x39\x4a\xa3\x31\x51\xd9\x89\x90\xaf\x31\x2b\ \x6e\x68\x09\x7b\xe8\x80\x93\x46\xe2\x6a\x74\x73\xc7\x8e\x1d\xab\ \x57\xaf\xb6\x69\x33\xeb\x28\xc7\xbc\x9a\xc2\xe1\x5e\xdf\x22\xf7\ \x9a\x59\x91\x2f\x58\x6f\x0f\x62\x02\x0e\x0a\xdd\x29\xcb\x93\xf4\ \x8f\xec\xe0\x18\x3f\x3e\xf6\xc7\xd7\x07\xe3\x79\x28\x25\x70\xd5\ \x56\x6d\x19\x84\x00\x3e\xf4\x12\x21\x57\xbf\x46\xc2\x9e\x9e\x2c\ \xc7\x77\x64\xeb\x14\x74\x13\x49\x13\x68\x8a\xea\xea\x6a\x3c\x52\ \x94\x40\xd1\x1c\xf7\xf4\xd3\x4f\x63\x2a\x06\x25\x19\x2d\x2d\x2d\ \x01\x93\x09\x83\xa3\x30\xd5\x17\xee\xe3\xc4\x57\x94\x43\x20\x6b\ \x74\xfc\x61\xd8\xab\xaf\xbe\x7a\xf1\xe2\xc5\x38\xaf\x17\xfb\x19\ \x35\x8d\x71\xab\xaa\xc1\xd5\x8f\x16\xed\xe3\x78\x78\xc6\xee\x35\ \x71\x94\x68\xd4\x6b\x0c\xb2\x82\x39\x9d\x3c\x29\x2e\x43\x81\x71\ \x6e\x62\x36\x1b\xd3\x2d\xac\xae\x6e\x76\xa7\x17\x1f\x69\x6f\xe4\ \x1b\x9f\xae\x6c\xea\xd4\xa9\x6a\xb2\x90\x7c\xc8\x98\x73\xbf\x7e\ \xfd\x7a\xe3\x83\xc2\xed\xae\xe1\xc8\x1d\x7e\xf9\x5d\xb8\x79\x98\ \x6e\x10\x02\xa2\x97\x6a\x60\x8b\x68\x1b\x97\xf6\xe8\x0d\xa5\xe0\ \x99\x01\x8a\xef\x88\x72\xf5\xbf\xd7\x08\x66\x5e\x50\xe0\x52\x91\ \x5a\x58\xb2\xfd\x0e\x96\x1c\x73\xfd\x43\xd5\x0f\x4b\x17\x24\x1d\ \x91\x26\xdf\x4c\x4d\x2d\x34\x2b\xc0\xf4\x01\x0d\xe7\x80\xc2\x6f\ \xfb\x1b\xee\xad\x81\x76\xa3\x2b\xe6\x5d\xd0\x0e\x06\x28\x60\x1d\ \xd6\x5d\x88\xf0\x1c\x98\xb3\x4a\xea\xc4\xad\x7c\x95\x29\xd3\x0a\ \x90\xce\xf6\x24\x7e\x95\x9b\x08\x97\x2c\xe7\x79\xaa\x79\x86\x34\ \xed\x31\xab\x5b\x44\x65\xd7\x14\xf3\xbd\x62\x85\x94\xc6\x37\x3e\ \x5d\xca\xac\x99\xb3\x9e\x7b\xee\xb9\x39\x73\xe6\xda\xdd\x96\x76\ \x0c\x79\x3b\x02\xf2\xb7\x8b\xf1\xe1\x62\xbc\xdd\xca\x49\x09\x0d\ \x1c\x36\xa6\xe1\x74\xf7\xf4\x8c\x19\x35\x0a\x29\x94\xac\x17\x19\ \xa0\xc8\x99\xe6\x5c\x7d\x2c\x84\x7a\x6b\x8e\x93\x4b\x44\xcc\xea\ \x00\x76\x95\x3a\x1a\x3a\xc8\xf4\x49\x91\x58\xac\xed\xba\x09\xdd\ \x3f\x3e\x9e\x21\xe8\x4f\xf4\x5d\xfc\xf2\x97\xbb\xee\xb8\xe3\x0e\ \x54\x23\xf4\xdb\x20\x1c\x34\xfa\xa2\xa1\x30\x9b\xab\x25\x3c\x20\ \x91\x00\x62\x1e\xce\x07\x99\x5f\x21\x11\x50\x8e\xf0\x3e\x70\xff\ \x54\x41\xdc\xbf\x7f\xff\x8d\x37\xdd\x24\x44\x96\xf5\x38\xe9\xa8\ \x89\xee\x36\x0e\x1a\x3e\x86\xe5\xa6\x5c\x99\x93\x03\xd7\x0c\xf7\ \xf2\x98\xf0\xf8\xea\x05\x03\x2e\xbb\xe7\x9e\x7b\x1a\x9b\x9a\x0e\ \xbf\xf5\x16\x62\x8c\x2b\x7b\x31\x8f\x36\x34\x38\x16\xd2\x0f\xbf\ \x80\x8a\x3b\xf6\x0b\xff\x72\xbc\x7c\x8b\xe5\xb2\x00\x3a\x3b\x7a\ \x8b\x20\x1a\x30\xfc\xb4\x3e\x69\xd2\x24\xc0\x5c\x3c\x2a\xdd\x0c\ \x6a\x80\x22\x23\x7e\x07\xc9\x4f\x56\xbd\x54\xce\xea\x1b\xb6\xdf\ \x50\x64\x66\x8d\xa9\x92\x21\x57\x49\x03\xb7\x5e\xd7\xe7\x0c\xbb\ \x1e\xf4\xa9\x81\xf1\x31\xc8\xd0\x60\xba\xa6\xba\xa6\xb6\xa6\xe6\ \x6f\xf2\xde\x4d\x24\x36\x68\x42\x93\xcd\x94\x62\x5a\x1f\x19\x49\ \x54\xbd\xa9\x45\x33\x06\x7f\xdb\x57\x83\xca\x19\x14\x7f\xb3\x25\ \x2a\xe6\x60\x29\x09\x14\xc9\xae\x6b\xe1\x83\x64\x1b\x56\x31\x66\ \x19\x6e\xdc\xb8\xd1\x9b\x09\xc9\x7d\x2f\x02\x0c\x64\xf3\xe1\xf7\ \x61\x84\xe6\x8e\xe5\x58\xb7\x66\xdf\xfd\xbd\x8f\x0f\xf8\x89\x9a\ \x10\xc2\xa8\x87\xc7\x11\xf3\xe4\xa4\x6e\x5f\x1b\x42\x2e\xe4\xed\ \x84\xe6\x75\x04\xb7\x07\x2e\x7d\xb8\x9d\xff\xbe\xc7\x17\xff\xd3\ \x0b\xee\x58\x4e\x3e\xe1\xfd\xc5\xf7\x36\xe0\x63\x20\xab\xff\xcf\ \xef\x93\x36\xec\x33\x7f\x5f\x53\x8e\xb1\xf8\x34\xe8\xfd\x25\xbc\ \xb8\x61\x96\x37\xa7\x36\xe6\xe4\x5f\xc2\xbb\xe5\x64\xb6\xfe\xa1\ \xc7\xff\x3f\x1e\x9f\x29\xce\x54\xe0\x9c\xcf\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0a\ \x0c\xf7\x1b\xc7\ \x00\x63\ \x00\x6f\x00\x6e\x00\x66\x00\x69\x00\x67\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x0c\x9c\xa6\x27\ \x00\x71\ \x00\x75\x00\x65\x00\x72\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x08\xab\xda\x07\ \x00\x75\ \x00\x70\x00\x64\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\ \x00\x00\x00\x44\x00\x00\x00\x00\x00\x01\x00\x00\x24\x78\ \x00\x00\x00\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x1b\x97\ \x00\x00\x00\x12\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() PyQt5_gpl-5.10.1/examples/dialogs/configdialog/images/0000755000076500000240000000000013245231431022631 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/dialogs/configdialog/images/config.png0000644000076500000240000001562313245231431024613 0ustar philstaff00000000000000‰PNG  IHDR`Tò¥Ô pHYs  ÒÝ~ütIMEÕ'6Å’ÃbKGDÿÿÿ ½§“ IDATxÚí\wEzïž}›w%­$$„„ÈF'‹$ qì±§3 ΦU¤2EÎÉ„:R™`àpQG°àL,cb•9q‡Au`ÈÃ& ¥ÕæÝ÷¦ý›þº¿þ¦gÞÂç²i¨§y½ófºýåïëÖišªï[ý–h­1ô‰†.¾ ÆüY¯s”ëâÓŠ¿->Yvß(UlÑ£G•Ž­´9\¦ïI†x+I’ hjµZ___µZ#l,ûW|*ûi´Òü“"²õ®åÒOèÅ{JW+º?ú,_y­å‹t= 546V:::èá&¹^xáÄŸ4qüHµªí¾;ØîeöÕÂïô3û“:/ÒßöÊlÑ”v O‹D}×Ñxœu¢¿ùfãŠÏo¿ýö@ êÚuæüé´ûîºzÝ7›*í§é1p@d£Ê. ]e×ôEeÄ&þ³Ýa9í}ø')yª½ÕØkB˜îUö>÷ щ#¨À_à‰˜®v f|Æ£©=r‘´Bkik=ð ãº»{ðLpYEû~kmm;¦s`p¤R©§—q-Km¿û«q=X\' è3ûL õ˜$q÷7_O<öƒî÷t0í&©ÃþOŒq LîNO† Üx\tAáxŒÒÆÖ6ààä‰Ö•H,U«i­–B"e_ý¸Œ½Í÷k•Ú/†ºSm•}©¥ÏÌ0ÔcïIù¸OüÕe¤¾ß¿"¼T0#­uL5O‚Œ‹ìšuOAVAe]9 ž‘LZ³¦q$ 4búaðÆ‘¼èÒžÍxyY¤ÒÅíÆÁâØHô(ž¶“'9> dëÌ£ëþ”'M;a,ºv4ÄãÉŠžaiYy…`Nøú·"ÞMìMX¸–â*Uîg&@äÈÛ Z;“#2êÜ å~àðe* ›#,Ý”èˆÔ@ Ž*’DkÉKžüúk·zÚËž”–ÑQ†¼Â)-3oÐbDnÊÏŒÖÖÖÒÜÔ”4$°¼ðŒ(ËM¾ ©Ä8¡’&n¶Ú½ŸIŽ?¸–Ÿaáµà–F°/¸v°¯¯¡¡¡DŸPŒ×v"R~šÙÄBŽx*#pâ(b¬ ¤í|-47¶óƒ?þä¿¿Z³nCGGçç_¬©Ö‚–ºÙ \e˜†µTâB™“˜j'»ž9szo_ßÔ)[M6ùÏw™;ÒßG|-žÆä`˜ÌéO©µãœt3)1µÒV’Y»ÏK·Jd3Å8q\×ý>¹òÕO—-ûëÙS;¶Þzë55׳O‚Qg FEþ4¸¿p¼\j.:ùa‚i•Qyj¾üò‹juäö|t‡íWžsΩCƒ½  âQÌ)&9v)¾ô­ØÀ(¨@’Ar&ijZ[[Þÿà£ßýþËïÿçÆJÃÿB'`Ö¬™ø\¼øÇgœqÆk¯¾¶Û¼Ý‡û’„e¿ dÓ'LRtç8}ÌÈ®Dö)[[kËïÿãÍÃ~òW@ÎGccc©WQt Jÿ:ŠŸQÏ)õ-‚Ȱ dÞÜܼô§‡ÿû‹ÏìþýŒéµâ.›fš·Œœxõ¬Ç¾§WœeÖBœdwˆÕ<+¯¡¡Ú6S¶É8°RI’„ß”¦é Èc ÆY=¶m³Í6/ô3LöƒÒŠ_‘IñD¯:JaëÕXº9@²Ù§Æ?€ ÍË Ï©è]¿¾»­½CV ÔôÇe®ááaÂÈ-oc¥©ÉyE¸r®FP·}CCC##š½‰Z­ÒÐÐÑÞîåQj!Óó8Mlwâ!ªâtŒ©U«­mm&L0NóAö óñǯX±âË/¿Œèˆ"{·®g[ßãhÍ:"ÉV[mµçž{î¼óΘoðujYDÂ8Ʊ6¤³ö²a74u®|é¥_^~ÛŒ­'ÀljjL›;:ÖnÚ¼hñ¼e?;rx`s¥!ñS'‘“DζÎk1­‰~ÁL–Ç‚p^ýõc=vÆŒcÆŒÁWÐmÅ6ºÈâ&öš¸€.¨Ÿ{ßÈïcס‹ —¦ù¶víZˆäóÎ;ï€FDGxê_¬Q¦j­­ :¼ iذ¹{a[×1 õ4·´tu5Œ;vúôß|çõïÒO(ãÌ"‹WXnlA†Md㘟H²ÖÒÒ²|ùòvØa÷Ýw‘Wòàj wÒE¦RŒ¢Y‰NDÝÚ:mÚ´|Iç{ýúMÚËe 85‰ö~šE°ÁTM:”ÖT­ÚPiªÖª—#^Ïš³Dµ_µŠ²V4±ÍïG€™£uëÖÁÚ²eKöJÑ0tB÷àŸ¸æéÑúù“`Ò¢åÔ˜9EŸ©•©›6mÂp‘Lœ8ë„Î1c¦NZ©B‘¸‘³®vq>òTø_(ÏLN‚[Î1A÷³³|1 ¤ÖC§½tvvâ‚˜Ž Ð="’DDTd1#†uŽŽRMMMmmmôýèiooÏnÓ Á¶> èb#a,ÍšPºw:¨y£ ‡JÈ~•Ámš”#˜9Æúâ‹/vuu â+:'Mš´Ï>ûô÷÷7ø&¡¡OÜFDD×1ÝE$F¹Ù‰èDêÂ(ÆO:!ÇÒ ù˜Ž3ü4½1ãýTË™8“‘¬MV”Á– N¾ä°ÌÚ¼yó§Ÿ~:eÊR(D;DÞ×_½~ýú£>º»»ÔôÄOôööqÄøZĈ ‘HEH€ˆ³Â’[Âèø–* ixœîüõ`øˆ‚Ÿ JŒaSÈ® 4Ü‚‰´…I‚goX›P2¯!>GFF 51“N: zí³Ï>[¸páìÙ³/¾øbXO=õ°#4%gEº¯´O™=#ŽfC1ŒÍý«i¼,ƒH^Xµã\sX3ìùS´F¨&åͦ´E,´Îù1 ÎïÀB„ÿÙgŸ4@êCyàÖ¬YƒkÈÎK.¹äÝwßýüóÏ œXQ0¼Q& *Æö³©úÔKDì|"y>náoÐÆ‹]o#Äîn" Eãýe úDª„™×ãÆs=ÿüó˜Õ=÷ÜsÊ)§@ÅП0™;w.;q‘š¯‡NÑt(¥#æAƲ‘T}dÖsB> â"=ʹhGÏ„²óÅ‹qS¹(Xy–’U…DN?ýtÐËÕW_½dÉ’ýöÛä4-8ˆNZ‰ô«ÑFÇH¢S42£ °c £ƒ#î”´q&]IsN ÁË”áH‚¢ìÓ-Æ!I#ÈGEæ?°Œ`¨ã?:k—]v}Dš>{¢÷oyJr† ù&mEy´ô^2»¤m-žv¸8ŸÝ»ãnòl)™ÃðNª‹/ë३Qy³£RâL‰á2@QR—zΜ9Pê„Oæ ™‹Œi=Œ˜q„/Yã¯ü@i=ÓðqD!Ë/yIKó ©ïªë M˜õˆÙ°t2(òY<Âe7@ ‚¸ÁY@%hœš®›çÕ.¨Èú^Ë@ Ánýä\¸ÃF!M2Í{á%DÏ‚ ~øah«É“'(,økøÄ5,é¥K—>òÈ#PdPsÒäûVŒ"âŠ~XðÜÅ üf¹"¦ã…4§@”GÇ'6(½§Y&&—ÖÐäß]ºT®A#rä‘GÞqǯ¼ò ¼$èxP "!äpA*Áí¾îºë6lØÔ¤,'ÌX4Úáý„é·l`!:¡=EhoEâð>Zª…ZßkØ$¬È1ä'W%’A2vƒ¡ƒ³ 9üðß~úi î0I rÕUWÁ™?þ¹çž wà 7 –ÔHëGaŠ„]=o¶ Ébù¢ãÓ±¦½íåæI‡k1Œ(hï“ûÂP•ãæ!b¶@ÁÉ@Ùxp5V­ZuÅWÜ|óÍÐkPp`Æë¯¿þšk®Ê£R¶(BÆÔTô¿¾3ù”Bã;• 9 ŸîÒ!oj¢o oÃe†L,ƒ¿’ü/ËíÈÑ×€× Œ|ƒS¶×^{Íœ9ó¬³Î‚ Öƒ‘½Ç{Àÿv¥=„ ¢‘N(ý‹!ã’B¦¼¸Í3 '3TÈÉÇño¾›‹þïAY›“IS•µE0Ic‡¥ñEií*+eç±J™âSªœÈá¼`°s0ùh£ ðgVð!R2Zïè(âIÀè£>º÷Þ{‚epíµ×B¯Ýwß}ÀÎ-ÓΈmF»1L±Ž”LÐÇ.@Hz[ D¹Ä§¼fX+í‘Qaí JeÔ¨eÇô‹î)®6„ôi§öÐCÁ°†çP`!¹ö裂¬ ø$1:tÁò»žTe¤+Ÿ#nWÿ âÒ ‘µBñ4û,bCZÏ‚56 [•ê&ꤩ‚¹îºë®'Ÿ|î:?zì±Ç`aB¬ª…Æz1¢ G©ŽÓA¾Ö)?ç`O^tI"ÊÙ:¾t6®"ûÈ„t <>º±«´Nƒ0Õ€v€"Ûx úï¾ûîcŽ9_-ZNíRõ/%Q9ùµì_jãJ>‹Æ9§wbþ2Î/‹ëƒ¸Ë_‰WЯdìò83SJA47G ˆgXØ—]v‚~ÐÔqLJ¿Î›7I\Ÿ låIÈ•Ä&$û¥ªà¬†Ð~^9k(ePˆøà£VÆÔÁRIF®6su A©½óÎ;€ÝvÛm·ÜrË{g„VCµB+±-LHjä{Ýt•t5Bý3e.Ýès^º Þ˜â+ïDèDHEèD+§ní9çœsþùçÃûÇü!§¡õo½õVâ2[…1B‘6‹¢:Òbš"?il„0ª–Ú?W6Èy’𾕼Q ’¨>H;KQ׳}Šª7’RvpÃlñ°’kˆ“ YÔÓÓªÙn»í Œ.¼ðB°!Då6¤@‘ˆJ´<ÖOÒÜáÍv»ø^N’FåäJ ç^D e}Ïø tZ”AÜß”êãdq¼÷*I ø ±£;ï¼Ä‘×ÎŒoN/®©‡ &‘W Q0-¤„<+Y È© ¥ëo½_+â&ãd6¥NPÙÃItþ,j\òlZC@äSûöÛoYí¿ÿþèùå—AAÄÆüqØ™€Rêû¢ Ò²þÀ¨|pB™¼Y¬DiCéf7ù“b}«–5ºdŽÒÌ3É”¢g 2hß}÷FÈ!¢8ÙÞ{ïM<ª—AÍAB!*ŒØq+Ùüijü¨ÝŠÃ*>¿UÀHZNxØ‚öb«ˆwâÊ܈tÔÆ2(EóÇ)Æ›nº  tîC `áú«¯¾‚lB2n ä~¢­Ä›×JšR¤úàWðp¹¶Œ :-î,£…CŸäs&»WE£¹è"E=‘Þ‘ÎzÑ¥À“á¬!£ Hè(­„ÕvØa‡áO0øçõ¬D—ïÔùðžñŠÉ!0ľÃé/­ƒO ÅBѬ´cÄ\z!E2_sx¨4½E¹0Hˆg–î¼Y)r[. ­ÀkL}$¤K½yÞî*8tpÏ¥¨[rþ‰1UQ&$냜Yá7cÕSð=,t&Þ?QDGD€JNòèÜx㨇<è ƒ æ˜C¹”+Ïh23‘•ã/­òQ1W{à’…}Ã.¥¡âú àåf,bÙðÑ:Þ‚£ Û\å:sÕW@0@˜9¾’YH7@`ôÁŒˆëìPuIg#wf ;qx ^³ÿÓ‚`y½ž*ÑñJ@Õ(ÝXO5Ïb¬¡˜Î‹êœòe¾bΜϑ¥.ðâ2’J`(Ö`½eË–Aô ;t/^ +œR.ƒr¦¯PÞ¶f¬³¹yB{;Š\[ÆŒA•kcW×8䩾‰íçiŸ¸FÑ(_ý!bÒ~'b•%Eq d)gI“´#¤AÙ?óÌ3‡z(ô:®E14:A>ðfW¯^°‘4¸ 2Èå t~3sxhø¹?ÜTI’†J[[ÒÒÒ1aü¾Z;}§ Vù¥ÆèØ`È×(&ÒPÔnŸGˆŸÐÄ0E™ŠXë9‘æŠ"ªE­O ( ^ï¹çžC q~¼Q‘·Þzë7Þ dQ&$‹àØZLMƒ½+Š× õ,;òÀ+±|ŸE{ƒ’Q)ñ›ßüÛß…ëT‰Mw‰q…½vëO(îˆí ¶,dVŒ0ÂXiÐE‹®(wŠèpíS”J–[T ‘J*e¥NâwÆ2ÈUŠ¥´°äÖ[=¿¯·×ÝæNÒ±jÕêöÿ‹Õ¯¿ÕÒ4´`ÁÂR¡[o'"â³Ð¤°‰È¤ä´´4Û²'~x ¹[Í4´ã3þáïÏýÁvìë­{DRÁCÆ-ª”rE²¶²Cµê•ßë…[¶ôê$ yQ-Ò\?äO2&ÞàŸË8¡k¿ƒáï.<ñWÿôÄÿþ¬·o5>½}ƒ#N:úbÙBžtªµÛ¬¯£¸ßˆ¨œÑù,h8,ìcÃ÷‰Æ®ýúëqã:6nXsÕ¥'uv´ :1—ÝŸæÜKýå –Žß\ÈÇæÁ‘Bši | ]ÞÙÙqéù'Âëéé=oØØ-u½!:»':ñHçÏ÷PõCâ£|¥“2ùc€ü™ê›8±«±©±½­m\׸Á!8\ “ˆå¨:å …2XgeÊY:bß|È+†Ðl÷yýÆn0"xèäÉ“øøãv[‘”ñU|ò_(Ù|&£äùý9òšÑH­šÁ°f6Ã[ “/ñÙT>WɺÊ'%"‡š7¶˜ ›…ªÏ•ÒWäFðì •Ì^0ôËïv‡cÈéæúó@ÏDP±¨·ßøe½¤„ŽP2:eBJÌè°‰%dG OïR¡Q¸´ŠƒÛòü ¢‡‘*dû‹Gt‰#kÂNûª¤Œ¡t#­ËÎ"Ht±¦4| ÛMp¹¼Ÿ¤EÜÞêâáóžï¢ã„¬Qt„k¸PP”«²ª7É‚[5U¿ßÕ¨ž³äq]ŠûC,Øó\¢M8* Â1¦p,[83½ü^d•? ˆÎ‹Šö¬˜ÀË*lÏT*6ÜYÄÙ{Ó`ÇbW½ò%iÑùAª£½mü䉤׵7~C‘Ä( §t¹ÓeXTëp$‡fññ~ƆZ暉~“ÿ€Ê¨bÍgLN®™B±GHúbt[+UÂ;ˆs&/¼´êâ‹o„Úbç Ðf ‡q†È'Ütþ¬"AÇ>®G‹éxâeç3iyH’*HøüÊØhPuv1Ee ÍM«^}“6û¥öp>Äùä“O–ßÿ@ÿ 4kr•Cò³Î9—²Ç”WÅG>)>«0ÖÄL€&ga *÷Yç O-X4ÖêŠÆtvœvÚ©´q[—ïø¾•vËñÂa·ºô,¥ÿ«‡ÝRZܽ‚šñF¢ÿß…M`ߟH>zK¾‡`ôö?\Šåjº¸QIEND®B`‚PyQt5_gpl-5.10.1/examples/dialogs/configdialog/images/query.png0000644000076500000240000000433513245231431024511 0ustar philstaff00000000000000‰PNG  IHDR`U“D¾ú pHYs  ÒÝ~ütIMEÕ(+!âÕbKGDÿ‡Ì¿nIDAThÞµY[ˆ$Wþ¾ÿTOOÏegvv¢K‚l’…DŸdM4;ã…@\!‰ !^0Óð²¢qF‚ø (D ˜B .® „<$/1DÌLT–Äû 3»Ó;—Þž®:Ÿ§ªº«»ú²“ø33}êüõõÔùÏÿý—S¦\’DI6’p$É[ÒË È{ï½—¼²÷ ×Rª=‰¢™™™sæ²™ ×Î…¹ƒéM4Š;ç×7666Ö×7Ö7ÒÁÆÆz¸^_sÑ¿|~›2$øÉ©/¯Ôëõúéz½^_Y©×O×ë+§ÃÌéÓ§Wê++õƒèÏœz‰AغóÙsO½ýrîÙ;·ÂX¼¿7ž4›Íf³9æÍ{û±‰FÌ÷)ìÓ ¦¿ÙÖQ‰÷^dºµ}„IG@ªµ{©Ñ¸Ôh4KÛ͘äH!IZ¼³µ}9ö"Iù¸µ{©ÑÂh H€â£ ó7 M;Ë2#™Þl†öv#q¥kèàÀz¿¾[,ÜÙܺ £„\$™Å=,Ü5и–Þ?d•»Û"¥ð@ÈV,;»„†¡„a›"îýúônwÏ ¡ >I ›3ˆ"R©ë)Øî¾A„§#Ieö3‹Iš‘ð ˜%¤(béÝex‘̓ÄS¢ò0 (5—(Û¿ìÞ"K¤çäÌÜüáù™ ŠÌý‰àeÉäÁÐ=nRmanfrbbræðBÕƒ%RÛ‰ Ûä”ÝÜBàcRµù(Ý\TÏ* ƒù6áÑáÁ _†ØN Nɧv§×ÌŒïpNôáÈyP4:QLä¾ ‰ŠÒÇS’ÄíZ¤œÖD¼¥äÈd4 … Hô/áæ—Ÿ{ä±^|ŸC*›¿ÂïnlnîÝôÌaéç'D_™öÃsšq,ÑÔoþyí*Qä.¹ˆ-“pÈi82䥶@/MrsF/áÞyoª¯ßÑÏNË‚eúñ!†|0ªÂ»ô¹çïÚ‰$¹fs?Èk?3ç‡`©€%ŒËžfúƒó1)‹7«¿…˜~ÏÞìal9>çA'²Çk~Ç0^ÐÞY‘>þ®‰Å[Ÿ¾ Þ|`ì¢e_po$µïîšÿæ·ªÞ†Ôû9>çÆò"ÛÛþÓ/ŸùRZsHiÂé+[Êv];¾ºÞÒòWÛ#Ú³0ð@ÅÚŸèkXÜ2ÛëóÝÅi™tðTàŠMÄ€´&ïÄÄûÛÆá:Ç Èû¨§| ]3hËönyGëÅŠJôýxäýA殡}0K)I*´–Áæ Ù^üô “í2=Kð`cf4’¹­Ï¾tGÓñJ$­®©Nd@@XWÐe$Gç+‡|pŽ‚¥ølRi —V¬Ó¢MYgQ½›xøžûž›‘ЫG)*6 Á9òàÚUÓRÕ÷ß÷Èn{hÆx â ƒOÐ'ä,SþåOhªVgøLÅE¬ÿº&öêKð¡³1!õ§})>ï“5rÖºà B¤`›mÓx+Èx0’ÉÜŽ™fnÊâ]b|&ªkKŸÂÂê:Nw9È þÐdAß©ƒŠøN]„QÅ©âü ãñŠÙN>åv…ÀqÝ´S¥+…¥GÊ28R÷é‹úÜR½ø> ”鎜ÏDcç(94é™$ÓSW–:á¥\0¸£ðiXKÜÑ’[ÊðB_>°¾Qúég®a,>ž86‰>ý@ü¸ù€ÉÜõ 潯,^WKÆl‰:ņVËA|õêëŽ]{ìú£–Œs{þ­ád'&> Ýi-ì%Éût£ÛÑTm m Ð÷áå³ó"MºZE•ô§R‰‚T*QU*a>Š&œ9‹&ê{ñ57™ò`öÑÛO}ìí—S·?:+#~âì׿±¶¶¶ºº¶º¶kk«ázu5Ì@¿öÀÙ»™¨¹'—––––——–—ÒÁÒÒr¸^^sÑ/˜oc•$I’$qœÄÙ IâpÇaî`zO:çœsáp„wÃá±sÖ´BBÍ_Ô¤½bþºíÀúÂÔÿEþkV­À´n^–IEND®B`‚PyQt5_gpl-5.10.1/examples/dialogs/configdialog/images/update.png0000644000076500000240000002015013245231431024617 0ustar philstaff00000000000000‰PNG  IHDR`Tò¥Ô pHYs  ÒÝ~ütIMEÕ) týÃÊbKGDÿÿÿ ½§“õIDATxÚí\ ¸Õ•®[½¼~ûÆ[X»lB‚€(Q1âF@Q¢fâDÌ DpAKçË¢IŒÆI&Ž£d&åSBqb6 @áñöýõë·t÷ÿÞsï­[UýˆæÓ/É7–دººêVÕ©³üç?çËf³Žã¤Ói×u9çXgŒ9zÁû«ÙH+æ'³[x{Ë?ÖøXD",“É@4ÎûK®EÈ 444´~ý†h4Îy²eøÏ!3îpùÕ˜üUnef‹þÊ­Oy 5 ÞÑÛíïv|“Îd*+Ëo½å–(4ª§§»»'uíu×õ÷§„‚1‚Ç0—áoNeÞ ¸Ü„½ô¾¤¤Ìh³øÎ͵‹´’‹ òYÝ““k|9pP@ïÁø84q“ɾ§ŸzÇFÉêJKKËËËúûóèþâ±h$ç™l&“f–Â]¹òú¤êÐC‹ÇÓi¨#¤ñ„ÉÌu¨º‹k•·šë‚ãÓ ³\ônOŠÇóJŠ‹±-J£C™t®:‰B"GŽÔ7·4•dIºê,t¥ä™ôP[{[EEeUUu~A~¿Ë\õ´è G>Nó„å ðažpà†Ó ÷b|q?œCX„€ŒëÆ€¸%|ýâî.+-jkk-...,,‚“ sóÉ ÜÆÆ†ÚÚ‘îª^5mÚ a°Bû¼KÔzÍô:ÌÜ|Ój@ºÀ;¾ãKi05X”Ì•K¹B¿øÅËåe…>]9y–¨ÞÄI©$&‚|²?þø9çœSRR’H$òåB+yyyô‰%G£Â‹ Â7oÞüÊ+;ÇŒ%agÄ’ç5Hñ…wpé¡sûW‘¬Ìè³}óTàmŒæ_ß~öQ½&GÕ6ÿ4räȪªªX,–¯P¿ÁÏ›7¯³³clÝiÆ\œUÆZ·@¬DY.Qž“+™ôØî*Çá*¼¢ü‰‰òxf¾åŸô‰©˜Ïm]Ó ˆ‹Ì9¾C/…+|tÒžÜp­„!&Ü?§ïÙ,׋±),P"Bp‡@ Æ¸|&&ÔR Æ y±X˜@š9Ïf²±xL˜n$áaœ~¨!.Ò2Ë›zÖcÃ?¿U1Ƽ‚&ØÉxtßøZ"úsÒ …TØS" _ØBãC¢¯JŒZñ£¸ýL;Á1Å£±ŽÎŽƒ:t ¡áhGW'v„Ò¥úRÀý)ÁšªšÑcê&NšR^Q“É^È‹™h­àô¼µP+òs³XÉâ¯ÐE(¦ã¸´¶H\ ÔTlÁyž ÚlÆÔМQ0‹j;•¦ËÔMâ–¸1‚£ %S: ã¢\W"Å¡U2-t0RQQôøÚk¯¾øâ Ím-ímÅeå#ªk&L‚q¦”•—WŽ€Buwuµ45h<ºcÏ.žN®9súÌç/¨®™ìíI¥ú }ŽÊ \e*R6މ07×Q2f« "³µ„»$ò6œ)håzjªõS#¤¨òÐŽÖ*mba‰[#ÑàÁBw„8Ã:Œa;„›hx±ŽŽö¯~åKÏ>ût¢Xt湓&L‚XqÃGÞx¸ô(ç-m-¥•U¦N>{Î)•çô%“ÍMÍ ¯ìÙ½eë§OžrÞù7eZggg&=b E1ëæ,ƒ cøÌ ˜˜ÆA\z!/.Ýš%³bD#EÉi[ŒÞa¥´¤´?ÕÑ|ûÛß*]±bÕÂ…gŒ=¦”ÈKˆ‡ué €¹ë>ðç}‡Þ:ôÈŸ¯]7gÁ©“§N+(,ž8eZWgÇk{voÚ¼qöŒ™ŸX}]yňŽöv‰8ˆœ±°ŽFÓäœýÙ©••šìÔ$܃¸÷ÏÆAd_B÷p›Y½ѤõB¾™ôËP%Rwbö…v”—•¿òÊŽ?³ÈèöÛï=åÔÓ…¼ú‡†ñ___RçRÄ‘ÈØñ¦L‡ÕÒܸcÇÏ^Üòý—ùY±ª¼¼Ê¢³ç~è´íÿýÜõ7\»ò•ç/[ÑÝÝ $A‰Ž67×äóÂÂ(Û&ûÌgåT´÷ÕR‹Â à fE1eP$#£8fh {B@Ð…ÊÊÊêêš'þã[U[¸î† K–\¯˜ìímmmAàv)ñE¨bÚsÊÏ¡AD­®/¿ `ÅÊK/XvѳÏ|ïñïžqÒ)g.]•Áé–^ôіƆï÷ñ]¿ÜyË­wº‘¼¾d/ìÚg/Žm]Ìxf'ÆLªÁæøý% Ǹ4¥fzUõ´µ éeP/rPR©>{{Åå¹`ÁÉgžu6¾¶µµ ¹D"ì,R”.R墢ûüÊgœùðÝ›››ó ŠÀÑ456ž»|剋ÏûÔ§¯ÛùòK•#ªpuì½\t²21Š:c†²•/Kwn\5àâK/½ôÐC=ðÀƒ3gÎxêé-¤5òAeÕCΪ8+¾°¸ªp¶u²®pŸ±Xgij8zù«ÇŒ{Ï?þ•׎=¦®±iÚ¬F·ù»ÿ­/uîÒó[š›aàïh|ôa=„™ŒÇ…fý,uP~Š{¾ÛDôœÇÈÅ8 2FèË’%Kð­££Cj ‘ <= XÈ¡ÁVj‘þ› 1Å››N_tVeÕˆuë×]¸f]í¨QP×ÎŽŽ¢¢â57m|ðÞM‘XdÑY‹ÛÛZ’¸àíŽ/Ñ¢/qÕÿ\þåÍÎ¥AƒþÅ-)½`½««kÁ‚#FŒÀB þÿê—Ýlmiž>cÖý›ï{öë5= "«§·7ËûĆÛ>ÿ¥öìþâ]&ó.Ûyr—äÍ}Nš ²]OÀ–ÖÖVøiHF ![«y €pm„œ«É>nÅx^¼³³ý„y'Ý{ûæ-}­¯¿Ÿì5™L"ê]ñéï¹ÿGòó ¹À¨ïx|‹êwìŒU‘9QŠïú’U" ÃP"³ŽÈ¹§扸«Û|QBxïª/¸¸x,ÞÞÖrÊÂEk¯¸êù'¾KàÉqQnè©Q½`ɲM›nýB;¿ÓñÅ>Ž¥6Ö5 ˜&ÿØj²ƒFÀ›@}¡Ål üŠ:„’ß µÂ²À… «ÚÁu\üQScÃÅ«>6klÝ‹[·–”A·7ÒÞÞ>÷äSãU5÷Ý{GUuµ üŒ1þŽÆ÷_›'•¬õΈF’y(xŸeË–íÚµ ñÕ0ŠÄ=@DÁe%žp û÷ï‹Æ¢„H83Øžk‚Ægha gWÙ1óˆMÎ;­m-7~öÖË?vɾ “ÇOœ„‹FÛZZ–_vÅWî¼åG[ž=gñy¥ˆt‘ÃU­,"’麘¸;…]®*YiOÃñ‚ÂB(¢æºuëÖ®] Ï£€<÷î Q.ÌãXÔŽpàž={ Mþ„’I;Q´“KGfv¬¤¸Œ¹e+šþÒ© (¤tqIÁƒ÷}qÃÆ[êÖ\Oˆ~4Õ—¼ìºùڗ柴`ԨтKb:Óa?5žWcßþûR}ž Ê{–u1:¹Û›7oþ´eÓ¦ML555åååd2á’†%‡HÅ}ûö5jïÞ}«×|ŽJ¥” ‰Ø)˜PnЬJ—¸d³X8jÛöm õ(A9ŽU6‘$*eÜwI{[›‚ ANZ~¤øpº¸ð\b½¤¬lê”iÓ¦MG¨1V§pa">¡·Ývç[o½ÙÐPTl˜‚µzºFR¤_“'_]]ûñ1¢ H‰¿Ð^­ TNŒ¨”ÑUUœ7ííí¹ùsë,˜üŒã#ш©ÀpS TXLHóλn¿ãžû`M%E…P"œ 9Êig{ï¶­§ô¶Î›÷"&fk1˜4U ƒÃýÆ×ÿ}á³W¬X ßÏ')dqƒx>‘hU­YøqŽŠ5TXb¦­‚€Ì<Üý,HiþF Ð O>ùÝÅ‹Ï^½zÍÛ¬/!;ûú3?XyõÚTOWV¢z0µÿôÏŸØû»_­»á_ÿŠ‚ÕòåË׬¹ö¬³Î°€o¡k5u1&ÓH&y.ÂS*kÌ'lÃTg3,8·êâJe¾Nì:Ñvú+“ÕkG}:ÊÆÉ=vt´-_~¹¡ j×σúZV]zéSÏ>w`ïŸÆŸ€J(N ~vÆgïúùöï?óôŠ‹V*Ôê?J;oN¬9"ÔA Oš4á­ÃoüÌÞÞ$'SO˜É(æèþšŒÂÕN€ùåc<óQQÞm8£)ÿ¡¹né‡õÉUiA»ã –Ìà"TóEÉŸð÷ë \×\}å=<ùS’…AF}==KW~ô‰ï>zÖÙç ×Dìe‹¢„'Yz$SÒÁK À¹¿ô(E Sq›,ÌäûQ•Î_šÐ€ÒÌ¡C‡äU ‹Cé…^xä‘GHƒ”bZ5Z ÄÞæúæÆ£ÂmK:´Ü˜±có+ª.¹øâÙsæ§…•ˆª/ØCuëúë¯Ç8&§Ý=ÊU.éæ,õêÐàò¦až†1¯ù" }*Æ—¨}¨®®)]}ccã­·Þ:þ|Ü€ ŠÐ¼$‹”XbzÁ ~nDåÎm[W^uMo—pÿn¤¯·÷Œœ÷ücÿËu×ñ–Ñ8ó¾ûî{ôÑGo¸áx• ®‘Ç0µìaÑfhCÌêJˆBÜø47Œ ý žULÜ Ünþðáè…Lž<™""HR´‚=± ðÔÓNëk­oki† …µJ½7abùȺ];w––•qnã(i¹øâ‹9bõîqûšT6¯âvàF\SÛâ6nÆ“ûóÁ޶6a\O®®ø8^Â#ªùfÁ¸Úã%EÔ ßÜÔÔ„û$g”£øçq{Ù²ŠÊÍ›óë—_,@¼G ); ûû?´èìlÙâ ùÆl½£…„NC‘³3M–|¸JVv²þqé¢ YX&¤ ¶C:v67wÊ”GW¤ƒçz]ÕFt‘Ä0M*0o|Ç ü#"A¸TxîØX|8ú5¢… 6ìÌ·ï@aÓ¦ÏèË8ÿûê¯KËJ¡)FF¶>’&ÚU?ÇT=(½¡d•Ì-pnÙÓ3ÐÛ‹B…#õÙÍ‹GìD[^æ¦ú‡L€{÷nŠº¸øi=ŠcÂ!ø±cÇ7nÌ¿ý XZ•6É’Ò‰§žþ“ŸþÝdF@6 H€ÛŒéÓ )ŠœùTKü„ºU29tà Ú¨bàÛó ⨤#ÿ()v‡xz(Ãá-“×ñÊBÍ…PUÞ&I7ð ÒS-ñ—»þ궤I|%9sÝL·DFÞµ¤çÎÙúòîS>¼ˆRn¸jdgœ3÷[;^hkm)*.!¡˜A(®›ö^¯€lt¢É\»Æ6x$Õ#k‹‹‹ò˜ˆ‘êêìLöu¹™,І38$¼C<1%S-€À¸Ë|‘@‘ŸÒà˜Õ^á –žû@ƒQ+[R6ú‡«ž3wî@W{ksz É·eD›êˆê1ãvî܉hEMÏ6D°ƒy>…l=ªOŽ8½í¢T×Ö–¦ú…cN$"ù ×ü<›~ýõ–ÎÎ~ÈHú©wÁÐèR à «Œ¹TbæÌw^PX4aìè½øØñ˜wÑ69넹Û_ø9Ž%ÎOÐlþÅ3ì‰Ñ¹ºJ·ó¨L¢ÕlUUaAAþà ô×ä¡ ³ê}ý£¯¿ÑÜÛ;hÀ²´8îz” —ì9UÄj»ÂDÞžšF÷]º­A6X‡"”••¡e ý]X ÈÏ/XvÁ‡Þøƒ#Û\YhJüàì9-’ä/‚(›‚hξ ;t6E cáú‚¼j­ŽÇÝÊŠ¢úú>@sÕ<ª;öóó£ùù¼«³«¹99óøšÊÊœ×X«×8 œ9SÁRµ²©5ckÒ­ÛLÈ“ê¶mÛ&< s¹¡ýXXs÷ýþ7íÍ͕蛑;ÃGÔM˜tÓM7žtò-]º”Ò ãì|粈kÒþjŸNóÖÖ$š¤4ÑL•C*•îîáes献(ÏÇ#qÝw)Œ³ó÷®ü±'¾ÓŽÇ4nÚ@aeº¤&SZséµëò%¨Òb. woOÏù®˜»ðÌ¡h"Q6âɧž†¡Ùæ>]¾jâ‚3¯cO5íÅb‘¦¦d_II‚†o–@L¥¥‰ùóÆ%ÀŸ2.DÀôáú–DŠñ€¤®¬Myì…ë:&\ÒY‚_pN{G¶©%3¶Î5ì¢éëV¥ó,´µÑbø³¬µ N¡‡›Ä4œŸ½°ý oºìšOž8ÿdp¯‘hÄÎNá•ÿôú óóÀ²#¦QG#àðÐãð‘GT›Ï‘[Ã!”–$d»..ËASÕ`š#IJz³¹²2fªt!&_Ñ'¸¶î¡/‰Kä1Ptííé’"Ž #¡ëPŸè°ŽÙî´[ßÈ®‘Ù~øŒEHý¿üÕ¯Ú·÷²+®J R™G¤Â@……¯îÙ=}úô!©5†KÌíƒüþÁu4ÍO”+é’HFÑÍ)ÕN€ ùHàŒ¦L©ª©®Œ‰ÊÍ"Ñ)©ìÇŠ KGÁm¶¶¡¯aðHýPkkº¸Hv° ¯@·úÇs›Xö/-¸ øÝªêÚÍwÝÕ¸ÿwßúY$\ð¢ëYX4Šþœ{÷Κ9ù$b»¡°™ë1ÑÃáªp¨C˜›þ]»¼%¤æÌšU-ÂÈŽ©&;®²\2GÀì8ÅÅnii4ã " ²²¾èô%³]]ÂÇALº‘Iw1 #ÓWk0´Ý?IªB9Çú Ÿ9~òøÏ^¿öиJÈ ¨°ðÏûö¡†PS[‹ìŽ'“(2OTëŒj©M,@¡úK'\-c¹¨U»S»–—GÀ6¨YYPùx,ÓÔ”íêŽT”œ°c˜˜-)ñ¬i¡5nS¶£6[P‘Ë–-?nòqÞyÛ…«.»dÕ¥à6~µ{×䉳’lµÝР.ÓQÌ—gä$k”1¹†Le:QðfXÄ¡uîä žÏ•s=[ P^XÀ»»Óí׊›·c»»ÔVœð‚»Œ&LœxûÆ/ýäÇwÞv3Ú¤öÿéé3fôˆÖϬãs™˜GfèwíÌÕê‚°h@›"uT–ØÎu{590¹%ÀF#ÂO£›:5ÁŽ÷&Yÿ`tÂøÄØºg&/wÃ&f4( ¦œ2¢{†Ž`@ÄrìwóÍ7æE/øÈâTJ¾(™û2Ÿùò îõIÓĂӆüó#Î,·“ö·Ô0šÅ.xéc³ô  Š0ªÉ4/ , afOÓ4ÝaBj?öÍzô&6+ÓËrkžlXÈ2lS¦$ )/„‹C‡x_*]Zær]ñÆuYØûØ&fd.·Ù¢±¥CtèíœõU[ƒüÌ\›7Wƒ¼7À_L–af-÷7ªƒU纙]Ø€_zÈ)(`Y=ûK6R÷«*áã2°g]]|ï>(”ìh0PƒÑh>îŠn€œ‹¡M=¢ÊDÀ¾¬ù‘ÌôáÊ¿æ,~ËjaȈÛĹÌs=UÈ?1Ÿ&ݱˆN ä9o¾•Åê¢b7›V„ˆQz†½j%Á,1(”¤¬™˜Ó6 ²~í„)Þ²Ù(ŒTÌ  ¢uFÕ¹¥ã–cèŽáœ´ž5œÎ8‚„"n»¾>“Ÿ¦ÏÚE_‘Wm†î¡Û)*ŸùSTCƒÂNǨ‘Q @˜³Î_äqBQ,˜jxäv5Ø¥ê”#µæ`É ð§þh6‘'&‚êˆGÝ‚B·7i¦ŽKý1œ<"~–“²Rã="×±ÆÏòœÌz|UKXÆïP‘+ >áG>Mˆ¥öZséqE f”T.5ÀÈ6t¢K¹‡—iª¨û A*¸È?Ó<=aÉ$GEžXMéWU ‡HbµÊ4-iOƒ»ŠÉdûæpP·}3ILj)<'4ì† mfk‘7®.(Û8ˆûÍ=SfîQ(QB2‰i-,Œ46f0Í©¢2‚Š4wr„æï a¡9lv]Ì6±°ú¹I}ŒÛ Ì\¿ÇXY.s˜æ7dB¡5H;'c3>Ì«D¯v~BLkðsåÔ‘OäWÅš[ÒmCS&ƒûtt£iùP„¿–vVZ©†!±g#³ŒhŒúçõ¿3óiŒÝ‚焆ó¨/«’Éú0.t¦³;Ôy2‰¦gDeLôVTNRÔà‹X,lhü¨£ãHÞ!d”:ÙE±œÆeüNX}ræÛ EÓ×Á¹õjŠ@,ã<<ÝZùW˜Uw7©Á tƒl ±7™©®rËË"¨Çf².jfcQ¯oÕ f"B:˜öA†ˉ›Mb^o¿`*îxK:Õ°2Ç÷Z—P6¤Ë¯ŒÑC@gH@Ÿ••F(p]fݎשj•¢YÎñåËËŠ >i¬ét KØdì'8ÄÚ+éD£4‰Âp 9ÀDò„L,”¦rgÔ(p`N^žx>‡ÞL'Áá“Vfs’HÁ)Æ¡×e!…‰†˜‡¬ Â7~üxÈèÕW_E•†Â9J£1QÙ‰¯1+nh {耓FâjtsÇŽ«W¯¶i3ë(ǼšÂá^ß"÷šY‘/Xob Ý)Ë“ôìà?>öÇ×ãy(%pÕVm„>ô!W¿Fžž,ÇwdëtIhŠêêj]ʬ™³ž{î¹9sæÚÝ–v y;ò·‹ñáb¼ÝÊI 6¦át÷ôŒ5 )”¬ È™æ\},„zkŽ“KDÌêv•::ÈôI‘X¬íº Ý?>ž!èOô]üò—»î¸ãT#ôÛ 4ú¢¡0›«%< ‘bΙ_!PŽð>pÿTAÜ¿ÿ7Ý$D–õ8騉î6>†å¦\™“× ÷ò˜ðøê.»çž{›š¿õbŒ+{1648Ò¿€Š;ö ÿr¼|‹å²:;z‹ 0ü´>iÒ$À\<*Ý j€"#~ÉOV½TÎê¶ßPdf©’!WI·^×ç »ô©ñ1ÈÐ`º¦º¦¶¦æoòÞM$6hB“Í”bZIT½©E3ÛWƒÊ³%*æ`) É®káƒdV1fnܸћ É}/ dóá÷a„æŽåX·fßý½ø‰š¨‡Çóä¤n_B.äí„æu·.}¸ÿ¾ÇÿÓ îXN>áýÅ÷6àc «ÿÏï“6ì3_Sޱø4èý%¼¸a–7§6æä_»åd¶þ¡Çÿ?Ÿ)ÎTàœÏIEND®B`‚PyQt5_gpl-5.10.1/examples/dialogs/extension.py0000755000076500000240000001051213245231431021327 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QApplication, QCheckBox, QDialog, QDialogButtonBox, QGridLayout, QHBoxLayout, QLabel, QLayout, QLineEdit, QPushButton, QVBoxLayout, QWidget) class FindDialog(QDialog): def __init__(self, parent=None): super(FindDialog, self).__init__(parent) label = QLabel("Find &what:") lineEdit = QLineEdit() label.setBuddy(lineEdit) caseCheckBox = QCheckBox("Match &case") fromStartCheckBox = QCheckBox("Search from &start") fromStartCheckBox.setChecked(True) findButton = QPushButton("&Find") findButton.setDefault(True) moreButton = QPushButton("&More") moreButton.setCheckable(True) moreButton.setAutoDefault(False) extension = QWidget() wholeWordsCheckBox = QCheckBox("&Whole words") backwardCheckBox = QCheckBox("Search &backward") searchSelectionCheckBox = QCheckBox("Search se&lection") buttonBox = QDialogButtonBox(Qt.Vertical) buttonBox.addButton(findButton, QDialogButtonBox.ActionRole) buttonBox.addButton(moreButton, QDialogButtonBox.ActionRole) moreButton.toggled.connect(extension.setVisible) extensionLayout = QVBoxLayout() extensionLayout.setContentsMargins(0, 0, 0, 0) extensionLayout.addWidget(wholeWordsCheckBox) extensionLayout.addWidget(backwardCheckBox) extensionLayout.addWidget(searchSelectionCheckBox) extension.setLayout(extensionLayout) topLeftLayout = QHBoxLayout() topLeftLayout.addWidget(label) topLeftLayout.addWidget(lineEdit) leftLayout = QVBoxLayout() leftLayout.addLayout(topLeftLayout) leftLayout.addWidget(caseCheckBox) leftLayout.addWidget(fromStartCheckBox) mainLayout = QGridLayout() mainLayout.setSizeConstraint(QLayout.SetFixedSize) mainLayout.addLayout(leftLayout, 0, 0) mainLayout.addWidget(buttonBox, 0, 1) mainLayout.addWidget(extension, 1, 0, 1, 2) mainLayout.setRowStretch(2, 1) self.setLayout(mainLayout) self.setWindowTitle("Extension") extension.hide() if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = FindDialog() dialog.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/dialogs/findfiles.py0000755000076500000240000001763413245231431021272 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (QDir, QIODevice, QFile, QFileInfo, Qt, QTextStream, QUrl) from PyQt5.QtGui import QDesktopServices from PyQt5.QtWidgets import (QAbstractItemView, QApplication, QComboBox, QDialog, QFileDialog, QGridLayout, QHBoxLayout, QHeaderView, QLabel, QProgressDialog, QPushButton, QSizePolicy, QTableWidget, QTableWidgetItem) class Window(QDialog): def __init__(self, parent=None): super(Window, self).__init__(parent) browseButton = self.createButton("&Browse...", self.browse) findButton = self.createButton("&Find", self.find) self.fileComboBox = self.createComboBox("*") self.textComboBox = self.createComboBox() self.directoryComboBox = self.createComboBox(QDir.currentPath()) fileLabel = QLabel("Named:") textLabel = QLabel("Containing text:") directoryLabel = QLabel("In directory:") self.filesFoundLabel = QLabel() self.createFilesTable() buttonsLayout = QHBoxLayout() buttonsLayout.addStretch() buttonsLayout.addWidget(findButton) mainLayout = QGridLayout() mainLayout.addWidget(fileLabel, 0, 0) mainLayout.addWidget(self.fileComboBox, 0, 1, 1, 2) mainLayout.addWidget(textLabel, 1, 0) mainLayout.addWidget(self.textComboBox, 1, 1, 1, 2) mainLayout.addWidget(directoryLabel, 2, 0) mainLayout.addWidget(self.directoryComboBox, 2, 1) mainLayout.addWidget(browseButton, 2, 2) mainLayout.addWidget(self.filesTable, 3, 0, 1, 3) mainLayout.addWidget(self.filesFoundLabel, 4, 0) mainLayout.addLayout(buttonsLayout, 5, 0, 1, 3) self.setLayout(mainLayout) self.setWindowTitle("Find Files") self.resize(700, 300) def browse(self): directory = QFileDialog.getExistingDirectory(self, "Find Files", QDir.currentPath()) if directory: if self.directoryComboBox.findText(directory) == -1: self.directoryComboBox.addItem(directory) self.directoryComboBox.setCurrentIndex(self.directoryComboBox.findText(directory)) @staticmethod def updateComboBox(comboBox): if comboBox.findText(comboBox.currentText()) == -1: comboBox.addItem(comboBox.currentText()) def find(self): self.filesTable.setRowCount(0) fileName = self.fileComboBox.currentText() text = self.textComboBox.currentText() path = self.directoryComboBox.currentText() self.updateComboBox(self.fileComboBox) self.updateComboBox(self.textComboBox) self.updateComboBox(self.directoryComboBox) self.currentDir = QDir(path) if not fileName: fileName = "*" files = self.currentDir.entryList([fileName], QDir.Files | QDir.NoSymLinks) if text: files = self.findFiles(files, text) self.showFiles(files) def findFiles(self, files, text): progressDialog = QProgressDialog(self) progressDialog.setCancelButtonText("&Cancel") progressDialog.setRange(0, files.count()) progressDialog.setWindowTitle("Find Files") foundFiles = [] for i in range(files.count()): progressDialog.setValue(i) progressDialog.setLabelText("Searching file number %d of %d..." % (i, files.count())) QApplication.processEvents() if progressDialog.wasCanceled(): break inFile = QFile(self.currentDir.absoluteFilePath(files[i])) if inFile.open(QIODevice.ReadOnly): stream = QTextStream(inFile) while not stream.atEnd(): if progressDialog.wasCanceled(): break line = stream.readLine() if text in line: foundFiles.append(files[i]) break progressDialog.close() return foundFiles def showFiles(self, files): for fn in files: file = QFile(self.currentDir.absoluteFilePath(fn)) size = QFileInfo(file).size() fileNameItem = QTableWidgetItem(fn) fileNameItem.setFlags(fileNameItem.flags() ^ Qt.ItemIsEditable) sizeItem = QTableWidgetItem("%d KB" % (int((size + 1023) / 1024))) sizeItem.setTextAlignment(Qt.AlignVCenter | Qt.AlignRight) sizeItem.setFlags(sizeItem.flags() ^ Qt.ItemIsEditable) row = self.filesTable.rowCount() self.filesTable.insertRow(row) self.filesTable.setItem(row, 0, fileNameItem) self.filesTable.setItem(row, 1, sizeItem) self.filesFoundLabel.setText("%d file(s) found (Double click on a file to open it)" % len(files)) def createButton(self, text, member): button = QPushButton(text) button.clicked.connect(member) return button def createComboBox(self, text=""): comboBox = QComboBox() comboBox.setEditable(True) comboBox.addItem(text) comboBox.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) return comboBox def createFilesTable(self): self.filesTable = QTableWidget(0, 2) self.filesTable.setSelectionBehavior(QAbstractItemView.SelectRows) self.filesTable.setHorizontalHeaderLabels(("File Name", "Size")) self.filesTable.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch) self.filesTable.verticalHeader().hide() self.filesTable.setShowGrid(False) self.filesTable.cellActivated.connect(self.openFileOfItem) def openFileOfItem(self, row, column): item = self.filesTable.item(row, 0) QDesktopServices.openUrl(QUrl(self.currentDir.absoluteFilePath(item.text()))) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/dialogs/README0000644000076500000240000000144613245231431017624 0ustar philstaff00000000000000PyQt includes standard dialogs for many common operations, such as file selection, printing, and color selection. Custom dialogs can also be created for specialized modal or modeless interactions with users. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/dialogs/standarddialogs.py0000755000076500000240000003273613245231431022472 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2010 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import QDir, Qt from PyQt5.QtGui import QFont, QPalette from PyQt5.QtWidgets import (QApplication, QCheckBox, QColorDialog, QDialog, QErrorMessage, QFileDialog, QFontDialog, QFrame, QGridLayout, QInputDialog, QLabel, QLineEdit, QMessageBox, QPushButton) class Dialog(QDialog): MESSAGE = "

    Message boxes have a caption, a text, and up to three " \ "buttons, each with standard or custom texts.

    " \ "

    Click a button to close the message box. Pressing the Esc " \ "button will activate the detected escape button (if any).

    " def __init__(self, parent=None): super(Dialog, self).__init__(parent) self.openFilesPath = '' self.errorMessageDialog = QErrorMessage(self) frameStyle = QFrame.Sunken | QFrame.Panel self.integerLabel = QLabel() self.integerLabel.setFrameStyle(frameStyle) self.integerButton = QPushButton("QInputDialog.get&Int()") self.doubleLabel = QLabel() self.doubleLabel.setFrameStyle(frameStyle) self.doubleButton = QPushButton("QInputDialog.get&Double()") self.itemLabel = QLabel() self.itemLabel.setFrameStyle(frameStyle) self.itemButton = QPushButton("QInputDialog.getIte&m()") self.textLabel = QLabel() self.textLabel.setFrameStyle(frameStyle) self.textButton = QPushButton("QInputDialog.get&Text()") self.colorLabel = QLabel() self.colorLabel.setFrameStyle(frameStyle) self.colorButton = QPushButton("QColorDialog.get&Color()") self.fontLabel = QLabel() self.fontLabel.setFrameStyle(frameStyle) self.fontButton = QPushButton("QFontDialog.get&Font()") self.directoryLabel = QLabel() self.directoryLabel.setFrameStyle(frameStyle) self.directoryButton = QPushButton("QFileDialog.getE&xistingDirectory()") self.openFileNameLabel = QLabel() self.openFileNameLabel.setFrameStyle(frameStyle) self.openFileNameButton = QPushButton("QFileDialog.get&OpenFileName()") self.openFileNamesLabel = QLabel() self.openFileNamesLabel.setFrameStyle(frameStyle) self.openFileNamesButton = QPushButton("QFileDialog.&getOpenFileNames()") self.saveFileNameLabel = QLabel() self.saveFileNameLabel.setFrameStyle(frameStyle) self.saveFileNameButton = QPushButton("QFileDialog.get&SaveFileName()") self.criticalLabel = QLabel() self.criticalLabel.setFrameStyle(frameStyle) self.criticalButton = QPushButton("QMessageBox.critica&l()") self.informationLabel = QLabel() self.informationLabel.setFrameStyle(frameStyle) self.informationButton = QPushButton("QMessageBox.i&nformation()") self.questionLabel = QLabel() self.questionLabel.setFrameStyle(frameStyle) self.questionButton = QPushButton("QMessageBox.&question()") self.warningLabel = QLabel() self.warningLabel.setFrameStyle(frameStyle) self.warningButton = QPushButton("QMessageBox.&warning()") self.errorLabel = QLabel() self.errorLabel.setFrameStyle(frameStyle) self.errorButton = QPushButton("QErrorMessage.show&M&essage()") self.integerButton.clicked.connect(self.setInteger) self.doubleButton.clicked.connect(self.setDouble) self.itemButton.clicked.connect(self.setItem) self.textButton.clicked.connect(self.setText) self.colorButton.clicked.connect(self.setColor) self.fontButton.clicked.connect(self.setFont) self.directoryButton.clicked.connect(self.setExistingDirectory) self.openFileNameButton.clicked.connect(self.setOpenFileName) self.openFileNamesButton.clicked.connect(self.setOpenFileNames) self.saveFileNameButton.clicked.connect(self.setSaveFileName) self.criticalButton.clicked.connect(self.criticalMessage) self.informationButton.clicked.connect(self.informationMessage) self.questionButton.clicked.connect(self.questionMessage) self.warningButton.clicked.connect(self.warningMessage) self.errorButton.clicked.connect(self.errorMessage) self.native = QCheckBox() self.native.setText("Use native file dialog.") self.native.setChecked(True) if sys.platform not in ("win32", "darwin"): self.native.hide() layout = QGridLayout() layout.setColumnStretch(1, 1) layout.setColumnMinimumWidth(1, 250) layout.addWidget(self.integerButton, 0, 0) layout.addWidget(self.integerLabel, 0, 1) layout.addWidget(self.doubleButton, 1, 0) layout.addWidget(self.doubleLabel, 1, 1) layout.addWidget(self.itemButton, 2, 0) layout.addWidget(self.itemLabel, 2, 1) layout.addWidget(self.textButton, 3, 0) layout.addWidget(self.textLabel, 3, 1) layout.addWidget(self.colorButton, 4, 0) layout.addWidget(self.colorLabel, 4, 1) layout.addWidget(self.fontButton, 5, 0) layout.addWidget(self.fontLabel, 5, 1) layout.addWidget(self.directoryButton, 6, 0) layout.addWidget(self.directoryLabel, 6, 1) layout.addWidget(self.openFileNameButton, 7, 0) layout.addWidget(self.openFileNameLabel, 7, 1) layout.addWidget(self.openFileNamesButton, 8, 0) layout.addWidget(self.openFileNamesLabel, 8, 1) layout.addWidget(self.saveFileNameButton, 9, 0) layout.addWidget(self.saveFileNameLabel, 9, 1) layout.addWidget(self.criticalButton, 10, 0) layout.addWidget(self.criticalLabel, 10, 1) layout.addWidget(self.informationButton, 11, 0) layout.addWidget(self.informationLabel, 11, 1) layout.addWidget(self.questionButton, 12, 0) layout.addWidget(self.questionLabel, 12, 1) layout.addWidget(self.warningButton, 13, 0) layout.addWidget(self.warningLabel, 13, 1) layout.addWidget(self.errorButton, 14, 0) layout.addWidget(self.errorLabel, 14, 1) layout.addWidget(self.native, 15, 0) self.setLayout(layout) self.setWindowTitle("Standard Dialogs") def setInteger(self): i, ok = QInputDialog.getInt(self, "QInputDialog.getInt()", "Percentage:", 25, 0, 100, 1) if ok: self.integerLabel.setText("%d%%" % i) def setDouble(self): d, ok = QInputDialog.getDouble(self, "QInputDialog.getDouble()", "Amount:", 37.56, -10000, 10000, 2) if ok: self.doubleLabel.setText("$%g" % d) def setItem(self): items = ("Spring", "Summer", "Fall", "Winter") item, ok = QInputDialog.getItem(self, "QInputDialog.getItem()", "Season:", items, 0, False) if ok and item: self.itemLabel.setText(item) def setText(self): text, ok = QInputDialog.getText(self, "QInputDialog.getText()", "User name:", QLineEdit.Normal, QDir.home().dirName()) if ok and text != '': self.textLabel.setText(text) def setColor(self): color = QColorDialog.getColor(Qt.green, self) if color.isValid(): self.colorLabel.setText(color.name()) self.colorLabel.setPalette(QPalette(color)) self.colorLabel.setAutoFillBackground(True) def setFont(self): font, ok = QFontDialog.getFont(QFont(self.fontLabel.text()), self) if ok: self.fontLabel.setText(font.key()) self.fontLabel.setFont(font) def setExistingDirectory(self): options = QFileDialog.DontResolveSymlinks | QFileDialog.ShowDirsOnly directory = QFileDialog.getExistingDirectory(self, "QFileDialog.getExistingDirectory()", self.directoryLabel.text(), options=options) if directory: self.directoryLabel.setText(directory) def setOpenFileName(self): options = QFileDialog.Options() if not self.native.isChecked(): options |= QFileDialog.DontUseNativeDialog fileName, _ = QFileDialog.getOpenFileName(self, "QFileDialog.getOpenFileName()", self.openFileNameLabel.text(), "All Files (*);;Text Files (*.txt)", options=options) if fileName: self.openFileNameLabel.setText(fileName) def setOpenFileNames(self): options = QFileDialog.Options() if not self.native.isChecked(): options |= QFileDialog.DontUseNativeDialog files, _ = QFileDialog.getOpenFileNames(self, "QFileDialog.getOpenFileNames()", self.openFilesPath, "All Files (*);;Text Files (*.txt)", options=options) if files: self.openFilesPath = files[0] self.openFileNamesLabel.setText("[%s]" % ', '.join(files)) def setSaveFileName(self): options = QFileDialog.Options() if not self.native.isChecked(): options |= QFileDialog.DontUseNativeDialog fileName, _ = QFileDialog.getSaveFileName(self, "QFileDialog.getSaveFileName()", self.saveFileNameLabel.text(), "All Files (*);;Text Files (*.txt)", options=options) if fileName: self.saveFileNameLabel.setText(fileName) def criticalMessage(self): reply = QMessageBox.critical(self, "QMessageBox.critical()", Dialog.MESSAGE, QMessageBox.Abort | QMessageBox.Retry | QMessageBox.Ignore) if reply == QMessageBox.Abort: self.criticalLabel.setText("Abort") elif reply == QMessageBox.Retry: self.criticalLabel.setText("Retry") else: self.criticalLabel.setText("Ignore") def informationMessage(self): reply = QMessageBox.information(self, "QMessageBox.information()", Dialog.MESSAGE) if reply == QMessageBox.Ok: self.informationLabel.setText("OK") else: self.informationLabel.setText("Escape") def questionMessage(self): reply = QMessageBox.question(self, "QMessageBox.question()", Dialog.MESSAGE, QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel) if reply == QMessageBox.Yes: self.questionLabel.setText("Yes") elif reply == QMessageBox.No: self.questionLabel.setText("No") else: self.questionLabel.setText("Cancel") def warningMessage(self): msgBox = QMessageBox(QMessageBox.Warning, "QMessageBox.warning()", Dialog.MESSAGE, QMessageBox.NoButton, self) msgBox.addButton("Save &Again", QMessageBox.AcceptRole) msgBox.addButton("&Continue", QMessageBox.RejectRole) if msgBox.exec_() == QMessageBox.AcceptRole: self.warningLabel.setText("Save Again") else: self.warningLabel.setText("Continue") def errorMessage(self): self.errorMessageDialog.showMessage("This dialog shows and remembers " "error messages. If the checkbox is checked (as it is by " "default), the shown message will be shown again, but if the " "user unchecks the box the message will not appear again if " "QErrorMessage.showMessage() is called with the same message.") self.errorLabel.setText("If the box is unchecked, the message won't " "appear again.") if __name__ == '__main__': app = QApplication(sys.argv) dialog = Dialog() dialog.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/dialogs/tabdialog.py0000755000076500000240000001621113245231431021243 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QFileInfo from PyQt5.QtWidgets import (QApplication, QCheckBox, QDialog, QDialogButtonBox, QFrame, QGroupBox, QLabel, QLineEdit, QListWidget, QTabWidget, QVBoxLayout, QWidget) class TabDialog(QDialog): def __init__(self, fileName, parent=None): super(TabDialog, self).__init__(parent) fileInfo = QFileInfo(fileName) tabWidget = QTabWidget() tabWidget.addTab(GeneralTab(fileInfo), "General") tabWidget.addTab(PermissionsTab(fileInfo), "Permissions") tabWidget.addTab(ApplicationsTab(fileInfo), "Applications") buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) mainLayout = QVBoxLayout() mainLayout.addWidget(tabWidget) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Tab Dialog") class GeneralTab(QWidget): def __init__(self, fileInfo, parent=None): super(GeneralTab, self).__init__(parent) fileNameLabel = QLabel("File Name:") fileNameEdit = QLineEdit(fileInfo.fileName()) pathLabel = QLabel("Path:") pathValueLabel = QLabel(fileInfo.absoluteFilePath()) pathValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken) sizeLabel = QLabel("Size:") size = fileInfo.size() // 1024 sizeValueLabel = QLabel("%d K" % size) sizeValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken) lastReadLabel = QLabel("Last Read:") lastReadValueLabel = QLabel(fileInfo.lastRead().toString()) lastReadValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken) lastModLabel = QLabel("Last Modified:") lastModValueLabel = QLabel(fileInfo.lastModified().toString()) lastModValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken) mainLayout = QVBoxLayout() mainLayout.addWidget(fileNameLabel) mainLayout.addWidget(fileNameEdit) mainLayout.addWidget(pathLabel) mainLayout.addWidget(pathValueLabel) mainLayout.addWidget(sizeLabel) mainLayout.addWidget(sizeValueLabel) mainLayout.addWidget(lastReadLabel) mainLayout.addWidget(lastReadValueLabel) mainLayout.addWidget(lastModLabel) mainLayout.addWidget(lastModValueLabel) mainLayout.addStretch(1) self.setLayout(mainLayout) class PermissionsTab(QWidget): def __init__(self, fileInfo, parent=None): super(PermissionsTab, self).__init__(parent) permissionsGroup = QGroupBox("Permissions") readable = QCheckBox("Readable") if fileInfo.isReadable(): readable.setChecked(True) writable = QCheckBox("Writable") if fileInfo.isWritable(): writable.setChecked(True) executable = QCheckBox("Executable") if fileInfo.isExecutable(): executable.setChecked(True) ownerGroup = QGroupBox("Ownership") ownerLabel = QLabel("Owner") ownerValueLabel = QLabel(fileInfo.owner()) ownerValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken) groupLabel = QLabel("Group") groupValueLabel = QLabel(fileInfo.group()) groupValueLabel.setFrameStyle(QFrame.Panel | QFrame.Sunken) permissionsLayout = QVBoxLayout() permissionsLayout.addWidget(readable) permissionsLayout.addWidget(writable) permissionsLayout.addWidget(executable) permissionsGroup.setLayout(permissionsLayout) ownerLayout = QVBoxLayout() ownerLayout.addWidget(ownerLabel) ownerLayout.addWidget(ownerValueLabel) ownerLayout.addWidget(groupLabel) ownerLayout.addWidget(groupValueLabel) ownerGroup.setLayout(ownerLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(permissionsGroup) mainLayout.addWidget(ownerGroup) mainLayout.addStretch(1) self.setLayout(mainLayout) class ApplicationsTab(QWidget): def __init__(self, fileInfo, parent=None): super(ApplicationsTab, self).__init__(parent) topLabel = QLabel("Open with:") applicationsListBox = QListWidget() applications = [] for i in range(1, 31): applications.append("Application %d" % i) applicationsListBox.insertItems(0, applications) alwaysCheckBox = QCheckBox() if fileInfo.suffix(): alwaysCheckBox = QCheckBox("Always use this application to open " "files with the extension '%s'" % fileInfo.suffix()) else: alwaysCheckBox = QCheckBox("Always use this application to open " "this type of file") layout = QVBoxLayout() layout.addWidget(topLabel) layout.addWidget(applicationsListBox) layout.addWidget(alwaysCheckBox) self.setLayout(layout) if __name__ == '__main__': import sys app = QApplication(sys.argv) if len(sys.argv) >= 2: fileName = sys.argv[1] else: fileName = "." tabdialog = TabDialog(fileName) tabdialog.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/dialogs/trivialwizard.py0000755000076500000240000000705413245231431022215 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtWidgets import (QApplication, QGridLayout, QLabel, QLineEdit, QVBoxLayout, QWizard, QWizardPage) def createIntroPage(): page = QWizardPage() page.setTitle("Introduction") label = QLabel( "This wizard will help you register your copy of Super Product " "Two.") label.setWordWrap(True) layout = QVBoxLayout() layout.addWidget(label) page.setLayout(layout) return page def createRegistrationPage(): page = QWizardPage() page.setTitle("Registration") page.setSubTitle("Please fill both fields.") nameLabel = QLabel("Name:") nameLineEdit = QLineEdit() emailLabel = QLabel("Email address:") emailLineEdit = QLineEdit() layout = QGridLayout() layout.addWidget(nameLabel, 0, 0) layout.addWidget(nameLineEdit, 0, 1) layout.addWidget(emailLabel, 1, 0) layout.addWidget(emailLineEdit, 1, 1) page.setLayout(layout) return page def createConclusionPage(): page = QWizardPage() page.setTitle("Conclusion") label = QLabel("You are now successfully registered. Have a nice day!") label.setWordWrap(True) layout = QVBoxLayout() layout.addWidget(label) page.setLayout(layout) return page if __name__ == '__main__': import sys app = QApplication(sys.argv) wizard = QWizard() wizard.addPage(createIntroPage()) wizard.addPage(createRegistrationPage()) wizard.addPage(createConclusionPage()) wizard.setWindowTitle("Trivial Wizard") wizard.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/draganddrop/0000755000076500000240000000000013245231431017602 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/draganddrop/delayedencoding/0000755000076500000240000000000013245231431022720 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/draganddrop/delayedencoding/delayedencoding.py0000755000076500000240000001133513245231431026416 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (pyqtSignal, QBuffer, QByteArray, QFile, QIODevice, QMimeData, Qt) from PyQt5.QtGui import QDrag, QIcon, QImage, QPainter, QPixmap from PyQt5.QtWidgets import (QApplication, QGridLayout, QLabel, QPushButton, QScrollArea, QWidget) from PyQt5.QtSvg import QSvgWidget import delayedencoding_rc class MimeData(QMimeData): dataRequested = pyqtSignal(str) def formats(self): formats = QMimeData.formats(self) formats.append('image/png') return formats def retrieveData(self, mimeType, qvtype): self.dataRequested.emit(mimeType) return QMimeData.retrieveData(self, mimeType, qvtype) class SourceWidget(QWidget): def __init__(self, parent=None): super(SourceWidget, self).__init__(parent) self.mimeData = None imageFile = QFile(':/images/example.svg') imageFile.open(QIODevice.ReadOnly) self.imageData = imageFile.readAll() imageFile.close() imageArea = QScrollArea() self.imageLabel = QSvgWidget() self.imageLabel.renderer().load(self.imageData) imageArea.setWidget(self.imageLabel) instructTopLabel = QLabel("This is an SVG drawing:") instructBottomLabel = QLabel("Drag the icon to copy the drawing as a PNG file:") dragIcon = QPushButton("Export") dragIcon.setIcon(QIcon(':/images/drag.png')) dragIcon.pressed.connect(self.startDrag) layout = QGridLayout() layout.addWidget(instructTopLabel, 0, 0, 1, 2) layout.addWidget(imageArea, 1, 0, 2, 2) layout.addWidget(instructBottomLabel, 3, 0) layout.addWidget(dragIcon, 3, 1) self.setLayout(layout) self.setWindowTitle("Delayed Encoding") def createData(self, mimeType): if mimeType != 'image/png': return image = QImage(self.imageLabel.size(), QImage.Format_RGB32) painter = QPainter() painter.begin(image) self.imageLabel.renderer().render(painter) painter.end() data = QByteArray() buffer = QBuffer(data) buffer.open(QIODevice.WriteOnly) image.save(buffer, 'PNG') buffer.close() self.mimeData.setData('image/png', data) def startDrag(self): self.mimeData = MimeData() self.mimeData.dataRequested.connect(self.createData, Qt.DirectConnection) drag = QDrag(self) drag.setMimeData(self.mimeData) drag.setPixmap(QPixmap(':/images/drag.png')) drag.exec_(Qt.CopyAction) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = SourceWidget() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/draganddrop/delayedencoding/delayedencoding.qrc0000644000076500000240000000021713245231431026545 0ustar philstaff00000000000000 images/drag.png images/example.svg PyQt5_gpl-5.10.1/examples/draganddrop/delayedencoding/delayedencoding_rc.py0000644000076500000240000003757713245231431027117 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sat May 4 16:44:22 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x03\xd1\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x03\x63\x49\x44\x41\x54\x58\xc3\xc5\ \x97\xcd\x6f\x1b\x55\x14\xc5\x7f\x77\x66\x92\x89\xd3\x7c\xd4\xad\ \x17\x09\x20\xd2\x4d\x55\x51\x10\x08\x51\x84\xca\x0a\x09\xd8\x20\ \xc4\xa2\x52\x17\x2c\x2a\x24\x28\x6b\x36\x2c\x90\xfa\x1f\xc0\x82\ \x0d\xa8\x3b\x04\x2c\xd8\x82\x10\xaa\xda\x45\x05\x64\x07\x08\x04\ \xa1\x34\x40\x85\x11\x6e\x21\xb5\x13\x9c\xe6\xc3\xb5\xd3\x79\xef\ \x5d\x16\xf3\xec\x8c\x9d\xc4\xa6\xf5\x54\x1d\xe9\x4a\x1e\x69\x3c\ \xe7\xdc\x73\xce\xbb\xef\x8d\xa8\x2a\xf7\xf2\x0a\xb8\xc7\x57\xf4\ \x7f\x1e\x7a\xff\x35\x79\xf2\xe6\x16\x91\x55\xa4\x30\xca\x13\xc6\ \x12\xaa\x22\x00\x51\xc0\x4c\x18\x30\xeb\x94\xc0\x3a\x1a\xd5\x35\ \x3e\x7b\xfb\x73\xe6\x81\xa6\xaa\xba\x41\xef\x96\x41\x16\x9c\x7d\ \x5d\xce\x3c\xf8\xc8\x0b\xaf\x3a\xa7\xa1\xaa\x06\x0f\x1c\x7d\x76\ \xdc\x39\x15\x54\x05\x60\xaa\x34\x17\x8d\x17\xef\x1f\x09\xc2\x82\ \x98\xad\x86\x7e\xf1\xde\x89\xea\x77\x8b\xff\xbe\xfb\xe1\x57\x7c\ \x02\xd4\x55\xd5\xf6\x05\x50\xd5\xbe\x75\xf6\x34\x3f\xaa\xaa\xaa\ \x3a\x5f\xb6\xab\x9c\x5a\x6d\xb5\x6e\x6a\xb5\xba\xa4\xc6\x18\xbd\ \xb2\xf0\x75\xf2\xe6\x8b\x7c\xfb\xfc\xa3\xbc\x02\x14\xdb\x4d\xee\ \x55\x03\x33\xe0\x94\x10\x2c\x60\x7c\x39\xd2\xfb\xb4\x04\x8b\x31\ \xb7\x58\x5e\xae\x11\x86\x21\x87\x1e\x7a\x3a\x3a\xf9\xc6\x07\x8f\ \x1d\x9e\xe1\xe5\x97\x8e\xf1\x1c\x30\x21\x22\x72\xc7\x21\x4c\xbd\ \xd6\x2e\xd0\xb4\x1c\xe0\x50\x2c\xaa\x09\xcd\x66\x23\x0d\x55\x14\ \xf1\xf0\xf1\x93\xa3\xa7\xdf\xfa\xf8\x99\xb9\x12\xa7\x80\x43\x40\ \x61\xc8\x55\x90\x02\x81\x45\x31\x9e\x40\x02\x18\xc4\x93\xc9\xe6\ \x6d\xdf\xbe\x09\x8e\x3c\x75\x22\x2e\x4d\x72\x1c\x38\x0a\x4c\x0e\ \xb5\x0a\x14\x87\x60\xd2\xd4\x6e\xe7\x97\x54\x19\x08\x02\xc5\x98\ \x16\x17\x2f\x5e\x60\x6d\x6d\x83\x20\x80\xfd\xfb\x8b\x68\x54\x8c\ \x61\x75\x0e\x98\x00\xaa\x77\xac\x80\x64\x2c\xd0\x4e\x1e\x12\xda\ \xd9\x18\x1d\x15\x66\x66\x0f\xd2\x6c\xd6\xd9\xdc\xac\x61\xcc\x26\ \x85\xc2\x08\xad\xe6\x2a\x5e\xfe\x68\x48\x05\xac\x57\x40\x3b\x7d\ \x4b\x46\x85\x20\x54\xee\x9b\x2d\x31\x35\xf9\x38\xc6\x18\xa2\x28\ \x22\x8e\x0f\x70\x7e\x04\xcd\x65\x10\x09\xce\x77\x4c\xc6\x06\x45\ \x11\x04\x25\x10\x21\x8e\x85\x38\xce\x5a\x3d\x46\x18\x74\xa4\xd3\ \x1c\x32\x90\xf8\xb7\xa4\xa0\xda\x87\x6e\x4a\xce\xe5\x37\x8a\xdb\ \x5e\xb7\x3b\x6f\x83\x48\x4f\x2c\xb7\x1b\x15\xff\x9f\x9c\x08\x08\ \x0e\xcd\x58\xd0\x26\xa1\x3b\xd6\xc3\x36\x1d\xc9\x57\x81\xd4\x82\ \xfe\x24\x7b\xe9\xe5\x48\x40\xfd\xe0\x91\x2e\x03\xba\x41\xe9\x49\ \x9a\xe6\x69\x41\x56\x01\xd9\xa5\x63\x7a\x08\xe5\xae\x40\x9a\x01\ \xd3\xe9\x51\x76\x89\x1c\x3e\x96\xd2\x09\xa7\xcd\xdf\x82\xde\x5e\ \xa5\x13\xc6\x14\x7a\xfb\x79\xbd\x1b\x0a\x24\x3b\xe4\xee\xf6\x5c\ \xbb\x16\x67\xce\x0a\xec\x9c\x84\xba\xeb\x73\xd9\xdd\x43\xf3\x1f\ \x44\x83\x62\xd7\xfd\xfb\x2e\x0c\xa2\xac\xf3\xfd\x94\x68\x0f\xec\ \x5c\x97\x61\xba\x15\x0f\x3a\xe1\xc7\xc0\x38\x50\x64\x6d\x25\x70\ \x1b\x4d\x5a\xb9\x6d\x46\x3b\x2d\x80\xf4\x48\x39\x86\x30\x8d\x52\ \xa4\x56\x59\xb1\x95\xc5\xcb\xf6\xa7\x2f\x3f\x4a\xae\x2c\xfe\xd0\ \xb8\x74\x95\x3f\x80\x55\x60\x6b\x48\x05\xd4\x1f\x40\x15\x25\x04\ \x0a\x08\x53\x28\x07\xa8\x55\x56\xed\xc2\xfc\xb9\xe4\xd7\x6f\x3e\ \x35\xe5\x72\x79\xfd\xef\x3a\xcb\xdf\xff\xc9\x6f\xe5\x2a\x65\xe0\ \x1a\x70\x19\x58\x1f\x32\x03\xa0\x8c\xa1\x4c\x03\x07\x3d\xe8\x85\ \x0e\xe8\x2f\xd7\xa8\x5c\xaa\xf0\xfb\xd2\x0d\xfe\x02\x6a\xc0\x12\ \xf0\x8f\x3f\x86\xd5\x81\xcd\x21\x15\x38\x42\xad\xb2\x6c\x17\xe6\ \xcf\xef\x05\x7a\x1d\xb8\xea\x41\xeb\xc0\x86\x07\xdd\xd2\x01\x5f\ \x3e\x03\x09\xac\x37\x39\xf7\xce\xa9\xc2\xf4\xf5\x1b\xd8\x9f\x2b\ \x2c\xed\x01\xba\xe2\x65\x6e\x00\x89\xde\xc6\x17\xef\xc0\x4f\x33\ \x11\x29\x01\xc7\x80\xc3\xc0\x2d\x0f\x38\x14\xe8\xed\x12\x18\x01\ \xa6\xfd\xd1\xda\x7a\x69\x87\x02\xcd\x5e\xff\x01\xf9\x68\x10\x8e\ \x11\x57\x76\x24\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x0a\x81\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\x6e\ \x6f\x22\x3f\x3e\x0a\x3c\x21\x2d\x2d\x20\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\ \x74\x20\x28\x43\x29\x20\x32\x30\x31\x30\x20\x4e\x6f\x6b\x69\x61\ \x20\x43\x6f\x72\x70\x6f\x72\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\ \x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\x64\x69\x61\ \x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\x41\x6c\x6c\ \x20\x72\x69\x67\x68\x74\x73\x20\x72\x65\x73\x65\x72\x76\x65\x64\ \x2e\x0a\x2a\x2a\x20\x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x4e\x6f\ \x6b\x69\x61\x20\x43\x6f\x72\x70\x6f\x72\x61\x74\x69\x6f\x6e\x20\ \x28\x71\x74\x2d\x69\x6e\x66\x6f\x40\x6e\x6f\x6b\x69\x61\x2e\x63\ \x6f\x6d\x29\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\x68\x69\x73\x20\x66\ \x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\x20\x6f\x66\x20\x74\ \x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\x20\x6f\x66\x20\x74\ \x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\x69\x74\x2e\x0a\x2a\ \x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\x47\x49\x4e\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x3a\x4c\x47\x50\x4c\x24\x0a\x2a\x2a\x20\ \x43\x6f\x6d\x6d\x65\x72\x63\x69\x61\x6c\x20\x55\x73\x61\x67\x65\ \x0a\x2a\x2a\x20\x4c\x69\x63\x65\x6e\x73\x65\x65\x73\x20\x68\x6f\ \x6c\x64\x69\x6e\x67\x20\x76\x61\x6c\x69\x64\x20\x51\x74\x20\x43\ \x6f\x6d\x6d\x65\x72\x63\x69\x61\x6c\x20\x6c\x69\x63\x65\x6e\x73\ \x65\x73\x20\x6d\x61\x79\x20\x75\x73\x65\x20\x74\x68\x69\x73\x20\ \x66\x69\x6c\x65\x20\x69\x6e\x0a\x2a\x2a\x20\x61\x63\x63\x6f\x72\ \x64\x61\x6e\x63\x65\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x51\ \x74\x20\x43\x6f\x6d\x6d\x65\x72\x63\x69\x61\x6c\x20\x4c\x69\x63\ \x65\x6e\x73\x65\x20\x41\x67\x72\x65\x65\x6d\x65\x6e\x74\x20\x70\ \x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\ \x0a\x2a\x2a\x20\x53\x6f\x66\x74\x77\x61\x72\x65\x20\x6f\x72\x2c\ \x20\x61\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x6c\x79\x2c\x20\ \x69\x6e\x20\x61\x63\x63\x6f\x72\x64\x61\x6e\x63\x65\x20\x77\x69\ \x74\x68\x20\x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x63\x6f\x6e\ \x74\x61\x69\x6e\x65\x64\x20\x69\x6e\x0a\x2a\x2a\x20\x61\x20\x77\ \x72\x69\x74\x74\x65\x6e\x20\x61\x67\x72\x65\x65\x6d\x65\x6e\x74\ \x20\x62\x65\x74\x77\x65\x65\x6e\x20\x79\x6f\x75\x20\x61\x6e\x64\ \x20\x4e\x6f\x6b\x69\x61\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x47\x4e\ \x55\x20\x4c\x65\x73\x73\x65\x72\x20\x47\x65\x6e\x65\x72\x61\x6c\ \x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\ \x55\x73\x61\x67\x65\x0a\x2a\x2a\x20\x41\x6c\x74\x65\x72\x6e\x61\ \x74\x69\x76\x65\x6c\x79\x2c\x20\x74\x68\x69\x73\x20\x66\x69\x6c\ \x65\x20\x6d\x61\x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x75\x6e\ \x64\x65\x72\x20\x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\ \x20\x74\x68\x65\x20\x47\x4e\x55\x20\x4c\x65\x73\x73\x65\x72\x0a\ \x2a\x2a\x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\ \x63\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\x76\x65\x72\x73\x69\x6f\ \x6e\x20\x32\x2e\x31\x20\x61\x73\x20\x70\x75\x62\x6c\x69\x73\x68\ \x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x46\x72\x65\x65\x20\x53\ \x6f\x66\x74\x77\x61\x72\x65\x0a\x2a\x2a\x20\x46\x6f\x75\x6e\x64\ \x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x20\x61\x70\x70\x65\x61\x72\ \x69\x6e\x67\x20\x69\x6e\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\ \x4c\x49\x43\x45\x4e\x53\x45\x2e\x4c\x47\x50\x4c\x20\x69\x6e\x63\ \x6c\x75\x64\x65\x64\x20\x69\x6e\x20\x74\x68\x65\x0a\x2a\x2a\x20\ \x70\x61\x63\x6b\x61\x67\x69\x6e\x67\x20\x6f\x66\x20\x74\x68\x69\ \x73\x20\x66\x69\x6c\x65\x2e\x20\x20\x50\x6c\x65\x61\x73\x65\x20\ \x72\x65\x76\x69\x65\x77\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\ \x77\x69\x6e\x67\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\ \x20\x74\x6f\x0a\x2a\x2a\x20\x65\x6e\x73\x75\x72\x65\x20\x74\x68\ \x65\x20\x47\x4e\x55\x20\x4c\x65\x73\x73\x65\x72\x20\x47\x65\x6e\ \x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\ \x6e\x73\x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x32\x2e\x31\x20\ \x72\x65\x71\x75\x69\x72\x65\x6d\x65\x6e\x74\x73\x0a\x2a\x2a\x20\ \x77\x69\x6c\x6c\x20\x62\x65\x20\x6d\x65\x74\x3a\x20\x68\x74\x74\ \x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6e\x75\x2e\x6f\x72\x67\x2f\ \x6c\x69\x63\x65\x6e\x73\x65\x73\x2f\x6f\x6c\x64\x2d\x6c\x69\x63\ \x65\x6e\x73\x65\x73\x2f\x6c\x67\x70\x6c\x2d\x32\x2e\x31\x2e\x68\ \x74\x6d\x6c\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x49\x6e\x20\x61\x64\ \x64\x69\x74\x69\x6f\x6e\x2c\x20\x61\x73\x20\x61\x20\x73\x70\x65\ \x63\x69\x61\x6c\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x2c\x20\ \x4e\x6f\x6b\x69\x61\x20\x67\x69\x76\x65\x73\x20\x79\x6f\x75\x20\ \x63\x65\x72\x74\x61\x69\x6e\x20\x61\x64\x64\x69\x74\x69\x6f\x6e\ \x61\x6c\x0a\x2a\x2a\x20\x72\x69\x67\x68\x74\x73\x2e\x20\x20\x54\ \x68\x65\x73\x65\x20\x72\x69\x67\x68\x74\x73\x20\x61\x72\x65\x20\ \x64\x65\x73\x63\x72\x69\x62\x65\x64\x20\x69\x6e\x20\x74\x68\x65\ \x20\x4e\x6f\x6b\x69\x61\x20\x51\x74\x20\x4c\x47\x50\x4c\x20\x45\ \x78\x63\x65\x70\x74\x69\x6f\x6e\x0a\x2a\x2a\x20\x76\x65\x72\x73\ \x69\x6f\x6e\x20\x31\x2e\x31\x2c\x20\x69\x6e\x63\x6c\x75\x64\x65\ \x64\x20\x69\x6e\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x4c\x47\ \x50\x4c\x5f\x45\x58\x43\x45\x50\x54\x49\x4f\x4e\x2e\x74\x78\x74\ \x20\x69\x6e\x20\x74\x68\x69\x73\x20\x70\x61\x63\x6b\x61\x67\x65\ \x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x47\x4e\x55\x20\x47\x65\x6e\x65\ \x72\x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\ \x73\x65\x20\x55\x73\x61\x67\x65\x0a\x2a\x2a\x20\x41\x6c\x74\x65\ \x72\x6e\x61\x74\x69\x76\x65\x6c\x79\x2c\x20\x74\x68\x69\x73\x20\ \x66\x69\x6c\x65\x20\x6d\x61\x79\x20\x62\x65\x20\x75\x73\x65\x64\ \x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\x74\x65\x72\x6d\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x47\x4e\x55\x0a\x2a\x2a\x20\x47\ \x65\x6e\x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\ \x63\x65\x6e\x73\x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x33\x2e\ \x30\x20\x61\x73\x20\x70\x75\x62\x6c\x69\x73\x68\x65\x64\x20\x62\ \x79\x20\x74\x68\x65\x20\x46\x72\x65\x65\x20\x53\x6f\x66\x74\x77\ \x61\x72\x65\x0a\x2a\x2a\x20\x46\x6f\x75\x6e\x64\x61\x74\x69\x6f\ \x6e\x20\x61\x6e\x64\x20\x61\x70\x70\x65\x61\x72\x69\x6e\x67\x20\ \x69\x6e\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x4c\x49\x43\x45\ \x4e\x53\x45\x2e\x47\x50\x4c\x20\x69\x6e\x63\x6c\x75\x64\x65\x64\ \x20\x69\x6e\x20\x74\x68\x65\x0a\x2a\x2a\x20\x70\x61\x63\x6b\x61\ \x67\x69\x6e\x67\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x66\x69\x6c\ \x65\x2e\x20\x20\x50\x6c\x65\x61\x73\x65\x20\x72\x65\x76\x69\x65\ \x77\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\ \x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x74\x6f\x0a\x2a\ \x2a\x20\x65\x6e\x73\x75\x72\x65\x20\x74\x68\x65\x20\x47\x4e\x55\ \x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\ \x4c\x69\x63\x65\x6e\x73\x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\ \x33\x2e\x30\x20\x72\x65\x71\x75\x69\x72\x65\x6d\x65\x6e\x74\x73\ \x20\x77\x69\x6c\x6c\x20\x62\x65\x0a\x2a\x2a\x20\x6d\x65\x74\x3a\ \x20\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6e\x75\x2e\ \x6f\x72\x67\x2f\x63\x6f\x70\x79\x6c\x65\x66\x74\x2f\x67\x70\x6c\ \x2e\x68\x74\x6d\x6c\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x49\x66\x20\ \x79\x6f\x75\x20\x68\x61\x76\x65\x20\x71\x75\x65\x73\x74\x69\x6f\ \x6e\x73\x20\x72\x65\x67\x61\x72\x64\x69\x6e\x67\x20\x74\x68\x65\ \x20\x75\x73\x65\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x66\x69\x6c\ \x65\x2c\x20\x70\x6c\x65\x61\x73\x65\x20\x63\x6f\x6e\x74\x61\x63\ \x74\x0a\x2a\x2a\x20\x4e\x6f\x6b\x69\x61\x20\x61\x74\x20\x71\x74\ \x2d\x69\x6e\x66\x6f\x40\x6e\x6f\x6b\x69\x61\x2e\x63\x6f\x6d\x2e\ \x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\x49\x43\x45\ \x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x20\x2d\x2d\x3e\x0a\x3c\x73\x76\x67\x20\x77\x69\x64\x74\x68\x3d\ \x22\x38\x63\x6d\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x38\x63\ \x6d\x22\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\ \x34\x30\x30\x20\x34\x30\x30\x22\x0a\x20\x20\x20\x20\x20\x78\x6d\ \x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ \x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\ \x20\x62\x61\x73\x65\x50\x72\x6f\x66\x69\x6c\x65\x3d\x22\x74\x69\ \x6e\x79\x22\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\ \x22\x3e\x0a\x20\x20\x3c\x74\x69\x74\x6c\x65\x3e\x53\x70\x68\x65\ \x72\x65\x3c\x2f\x74\x69\x74\x6c\x65\x3e\x0a\x20\x20\x3c\x64\x65\ \x73\x63\x3e\x41\x20\x67\x72\x61\x64\x69\x65\x6e\x74\x20\x66\x69\ \x6c\x6c\x65\x64\x20\x73\x70\x68\x65\x72\x65\x2e\x3c\x2f\x64\x65\ \x73\x63\x3e\x0a\x20\x20\x3c\x67\x3e\x0a\x20\x20\x20\x20\x3c\x64\ \x65\x66\x73\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\x72\x61\x64\x69\ \x61\x6c\x47\x72\x61\x64\x69\x65\x6e\x74\x20\x69\x64\x3d\x22\x62\ \x6c\x75\x65\x53\x70\x68\x65\x72\x65\x22\x20\x67\x72\x61\x64\x69\ \x65\x6e\x74\x55\x6e\x69\x74\x73\x3d\x22\x75\x73\x65\x72\x53\x70\ \x61\x63\x65\x4f\x6e\x55\x73\x65\x22\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x78\x3d\x22\x32\x30\x30\x22\x20\x63\x79\x3d\x22\x32\x30\x30\ \x22\x20\x72\x3d\x22\x31\x30\x30\x22\x20\x66\x78\x3d\x22\x31\x35\ \x30\x22\x20\x66\x79\x3d\x22\x31\x35\x30\x22\x3e\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x73\x74\x6f\x70\x20\x6f\x66\x66\x73\x65\ \x74\x3d\x22\x30\x25\x22\x20\x73\x74\x6f\x70\x2d\x63\x6f\x6c\x6f\ \x72\x3d\x22\x77\x68\x69\x74\x65\x22\x20\x2f\x3e\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x73\x74\x6f\x70\x20\x6f\x66\x66\x73\x65\ \x74\x3d\x22\x37\x35\x25\x22\x20\x73\x74\x6f\x70\x2d\x63\x6f\x6c\ \x6f\x72\x3d\x22\x62\x6c\x75\x65\x22\x20\x2f\x3e\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x73\x74\x6f\x70\x20\x6f\x66\x66\x73\x65\ \x74\x3d\x22\x31\x30\x30\x25\x22\x20\x73\x74\x6f\x70\x2d\x63\x6f\ \x6c\x6f\x72\x3d\x22\x62\x6c\x61\x63\x6b\x22\x20\x2f\x3e\x0a\x20\ \x20\x20\x20\x20\x20\x3c\x2f\x72\x61\x64\x69\x61\x6c\x47\x72\x61\ \x64\x69\x65\x6e\x74\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x64\x65\x66\ \x73\x3e\x0a\x20\x20\x20\x20\x3c\x72\x65\x63\x74\x20\x66\x69\x6c\ \x6c\x3d\x22\x6c\x69\x67\x68\x74\x62\x6c\x75\x65\x22\x20\x78\x3d\ \x22\x30\x22\x20\x79\x3d\x22\x30\x22\x20\x77\x69\x64\x74\x68\x3d\ \x22\x34\x30\x30\x22\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x34\x30\ \x30\x22\x20\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x63\x69\x72\x63\x6c\ \x65\x20\x66\x69\x6c\x6c\x3d\x22\x75\x72\x6c\x28\x23\x62\x6c\x75\ \x65\x53\x70\x68\x65\x72\x65\x29\x22\x20\x73\x74\x72\x6f\x6b\x65\ \x3d\x22\x62\x6c\x61\x63\x6b\x22\x20\x73\x74\x72\x6f\x6b\x65\x2d\ \x77\x69\x64\x74\x68\x3d\x22\x32\x22\x20\x20\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x78\x3d\x22\x32\x30\x30\x22\x20\x63\ \x79\x3d\x22\x32\x30\x30\x22\x20\x72\x3d\x22\x31\x30\x30\x22\x2f\ \x3e\x0a\x20\x20\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ \ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x08\ \x08\x7a\x5a\x27\ \x00\x64\ \x00\x72\x00\x61\x00\x67\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x08\x01\x8a\x47\ \x00\x65\ \x00\x78\x00\x61\x00\x6d\x00\x70\x00\x6c\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\ \x00\x00\x00\x28\x00\x00\x00\x00\x00\x01\x00\x00\x03\xd5\ \x00\x00\x00\x12\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() PyQt5_gpl-5.10.1/examples/draganddrop/delayedencoding/images/0000755000076500000240000000000013245231431024165 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/draganddrop/delayedencoding/images/drag.png0000644000076500000240000000172113245231431025611 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<cIDATXÃÅ—ÍoUÅwf’‰Ó|Ô­ ÒMUQQ„Ê Ø Ä¢R,*$(k6,úÀ‚ ¨;,Ø‚ªÚEd¡4@…n!µœæÃµÓyï]óìŒÄ¦õTéJi<çÜsλï¨*÷ò ¸ÇWôzÿ5yòæ‘U¤0ÊÆª"QÀL0ë”À:Õ5>{ûs榪ºAï–Aœ}]Î<øÈ ¯:§¡ª}vÜ9T`ª4ï ‚˜­†~ñÞ‰êw‹ÿ¾ûáW|ÔUÕöPÕ¾uö4?ªªª:_¶«œZmµnjµº¤Æ½²ðuòæ‹|ûü£¼ÛMîU3à”,`|9Òû´‹1·X^®†!‡z::ùÆžáå—Žñ0!"rÇ!L½Ö.дàP,ª Íf# Uñðñ“£§ßúø™¹§€C@aÈUE1ž@ēɿmß¾ Ž–Ò §Íß‚Þ^¥Æzûy½ $;äîö\»gΠ위ºësÙÝCóDƒb×ýû. ¢¬óý”hì\—aº:áÇÀ8Pdm%pMZ¹mF;-€ôH9†0R¤VY±•ÅËö§/?J®,þиt•?€U`kHÔ@% S(¨UVíÂü¹ä×o>5åryýï:ËßÿÉoå*eàpX2 Œ¡L=è…è/ר\ªðûÒ þjÀð?†ÕÍ!8B­²læÏïz¸êAëÀ†ÝÒ_> ¬79÷ΩÂôõØŸ+,íºâen‰ÞÆïÀO3)Ç€ÃÀ-8èí¦ýÑÚzi‡Í^ÿùhŽWv$IEND®B`‚PyQt5_gpl-5.10.1/examples/draganddrop/delayedencoding/images/example.svg0000644000076500000240000000520113245231431026337 0ustar philstaff00000000000000 Sphere A gradient filled sphere. PyQt5_gpl-5.10.1/examples/draganddrop/draggableicons/0000755000076500000240000000000013245231431022546 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/draganddrop/draggableicons/draggableicons.py0000755000076500000240000001302413245231431026067 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (QByteArray, QDataStream, QIODevice, QMimeData, QPoint, Qt) from PyQt5.QtGui import QColor, QDrag, QPainter, QPixmap from PyQt5.QtWidgets import QApplication, QFrame, QHBoxLayout, QLabel, QWidget import draggableicons_rc class DragWidget(QFrame): def __init__(self, parent=None): super(DragWidget, self).__init__(parent) self.setMinimumSize(200, 200) self.setFrameStyle(QFrame.Sunken | QFrame.StyledPanel) self.setAcceptDrops(True) boatIcon = QLabel(self) boatIcon.setPixmap(QPixmap(':/images/boat.png')) boatIcon.move(20, 20) boatIcon.show() boatIcon.setAttribute(Qt.WA_DeleteOnClose) carIcon = QLabel(self) carIcon.setPixmap(QPixmap(':/images/car.png')) carIcon.move(120, 20) carIcon.show() carIcon.setAttribute(Qt.WA_DeleteOnClose) houseIcon = QLabel(self) houseIcon.setPixmap(QPixmap(':/images/house.png')) houseIcon.move(20, 120) houseIcon.show() houseIcon.setAttribute(Qt.WA_DeleteOnClose) def dragEnterEvent(self, event): if event.mimeData().hasFormat('application/x-dnditemdata'): if event.source() == self: event.setDropAction(Qt.MoveAction) event.accept() else: event.acceptProposedAction() else: event.ignore() dragMoveEvent = dragEnterEvent def dropEvent(self, event): if event.mimeData().hasFormat('application/x-dnditemdata'): itemData = event.mimeData().data('application/x-dnditemdata') dataStream = QDataStream(itemData, QIODevice.ReadOnly) pixmap = QPixmap() offset = QPoint() dataStream >> pixmap >> offset newIcon = QLabel(self) newIcon.setPixmap(pixmap) newIcon.move(event.pos() - offset) newIcon.show() newIcon.setAttribute(Qt.WA_DeleteOnClose) if event.source() == self: event.setDropAction(Qt.MoveAction) event.accept() else: event.acceptProposedAction() else: event.ignore() def mousePressEvent(self, event): child = self.childAt(event.pos()) if not child: return pixmap = QPixmap(child.pixmap()) itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) dataStream << pixmap << QPoint(event.pos() - child.pos()) mimeData = QMimeData() mimeData.setData('application/x-dnditemdata', itemData) drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) drag.setHotSpot(event.pos() - child.pos()) tempPixmap = QPixmap(pixmap) painter = QPainter() painter.begin(tempPixmap) painter.fillRect(pixmap.rect(), QColor(127, 127, 127, 127)) painter.end() child.setPixmap(tempPixmap) if drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) == Qt.MoveAction: child.close() else: child.show() child.setPixmap(pixmap) if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWidget = QWidget() horizontalLayout = QHBoxLayout() horizontalLayout.addWidget(DragWidget()) horizontalLayout.addWidget(DragWidget()) mainWidget.setLayout(horizontalLayout) mainWidget.setWindowTitle("Draggable Icons") mainWidget.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/draganddrop/draggableicons/draggableicons.qrc0000644000076500000240000000025413245231431026222 0ustar philstaff00000000000000 images/boat.png images/car.png images/house.png PyQt5_gpl-5.10.1/examples/draganddrop/draggableicons/draggableicons_rc.py0000644000076500000240000011316713245231431026561 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sat May 4 16:53:19 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x0b\x93\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x4b\x00\x00\x00\x36\x08\x02\x00\x00\x00\x00\x90\xf3\xa2\ \x00\x00\x0b\x5a\x49\x44\x41\x54\x78\x5e\xdc\x93\x41\x0a\x45\x21\ \x0c\xc4\x5a\x79\xf7\xbf\xb1\xfa\x8b\x42\x36\x01\xff\xbe\x59\x0c\ \x71\x68\xbb\x33\xd6\x61\xef\x5d\x89\x83\x9f\xe4\x15\x27\xf8\xc2\ \x02\x95\x9e\x44\x1e\xbd\x77\x81\xb1\xb1\xbb\x13\xf3\x50\x56\x89\ \x83\x9f\xe4\x15\x27\xf8\xc2\x04\x95\x9e\x44\x1e\xbd\x77\x81\xb1\ \x2f\x33\xe3\x80\x80\xcb\x7a\x92\x88\xd3\x2b\x76\x95\x88\x4b\xf8\ \xdf\xfb\xf8\x88\xee\x8c\xe8\x4e\xff\x7f\x18\xab\x3b\x31\x0f\x65\ \x95\x38\xf8\x49\x5e\x71\x82\x2f\x4c\x50\xe9\x49\xe4\xd1\x7b\x17\ \x18\x1b\xd1\x9d\x2f\x33\x7f\xbc\x97\x4d\x4c\x54\x57\x14\xc7\xcb\ \xbc\xc7\x0c\xcc\x0c\x98\xa0\xc5\x05\x51\xab\x26\x2c\x74\xd1\xc6\ \x9a\x26\x04\x01\x29\x30\x6a\x62\x63\xd2\xc4\xc6\x8f\x85\x8d\x4d\ \x9b\x18\x6b\x93\x6e\xaa\x4d\x64\xc7\x82\xb4\x4d\xa3\xb1\x5d\xb8\ \xb1\x8b\xee\x9c\xc6\xfa\x41\x04\x09\x50\x48\x4d\x20\x68\xc4\x26\ \x8d\x90\xb6\x09\x51\x44\x10\x82\x30\xdf\x9f\x40\x7f\x7d\x27\x9e\ \x79\xcc\x20\x85\xa0\xde\xdc\xbc\x39\xf7\xdc\x73\xef\xf9\x9f\x8f\ \x7b\xee\x9d\xdc\x4a\xbd\xfc\x0b\xc3\xde\xd2\xe9\x34\xa9\x9f\x25\ \x09\x47\x85\x73\x67\x95\xc9\x30\x4b\x32\x3f\x3f\x5f\x25\x97\x80\ \x67\x87\xf4\x4a\x2a\x4d\xe6\xe9\xf4\x0a\x9a\x3d\x33\x5f\xf7\x8d\ \x6f\xf7\x3d\x3a\x0c\xc3\x48\x26\x93\x8d\x8d\x8d\x93\x93\x93\x12\ \x8d\x45\x37\x04\xa8\xd7\xe3\xc9\x73\x3a\x23\xa9\x14\xb3\x2e\xc3\ \xc8\x9f\x9b\x0b\x86\x42\xd0\xf6\x18\x42\xac\x5b\xb7\xae\xa9\xa9\ \x89\x30\x02\xd1\xe1\x70\x68\x2e\xac\xf8\xc6\xa7\xa1\x75\x35\x59\ \xce\x72\x10\x80\xa3\xba\xba\x7a\x62\x62\xe2\xd0\xa1\x43\x91\x48\ \x04\x8e\x18\x29\x5f\x4d\x16\xaf\xd7\xfb\xcb\xb5\x6b\x89\x07\x0f\ \x0e\x6c\xdd\x4a\x5c\xee\x3c\x7e\xfc\x57\x71\xf1\x67\xc7\x8f\xb3\ \x44\x6d\x03\x0f\x62\x7e\xbf\xbf\xac\xac\xac\xbb\xbb\xdb\x34\x4d\ \x38\x78\x90\xa9\xd7\x77\x1f\x6a\xda\x70\xf0\x20\x52\xa9\x54\x45\ \x45\xc5\xf6\xed\xdb\x01\xba\x74\xca\x41\x7c\x79\xf6\xec\xa7\x9b\ \x37\xcf\x9d\x3a\x95\x3c\x79\xf2\xdc\xce\x9d\x7b\x0e\x1c\x80\x99\ \x48\x24\xd8\x84\x2c\x80\x88\xc7\xe3\x6c\x3b\x36\x36\x56\x5e\x5e\ \xce\xb6\xf0\x59\x08\x47\x76\x78\x4d\x59\xaa\xc9\xc9\x57\xa2\x17\ \x0c\x06\xfb\xfa\xfa\xf0\xf4\xb3\x67\xcf\x60\xaa\x02\x11\x16\x1a\ \xac\xa5\xa5\xa5\xa1\x40\x20\x92\x48\x8c\x85\x42\xf8\x66\x26\x1e\ \x8f\xe2\x95\x50\x68\x72\x6a\x8a\xb5\xba\x04\x58\x6e\xb7\xbb\xab\ \xab\xab\xb6\xb6\xb6\xa6\xa6\xa6\xa7\xa7\x47\xd2\x44\x64\x56\x9a\ \xa5\xe6\x4a\x63\x8e\x0e\x35\x0f\x1a\xf3\x02\x81\x40\x7f\x7f\x3f\ \xea\x71\x3f\x27\x47\x81\xea\x57\x89\x7c\xd3\x94\xb3\x64\x5a\x47\ \xcb\xb0\x68\xc3\x34\x0d\xab\xa9\x98\x6c\xe5\x72\xb9\x3a\x3b\x3b\ \xeb\xea\xea\xec\x46\xf2\x15\x00\xaf\xea\x5d\x8a\x7a\x39\xba\x62\ \x5e\x55\x55\x95\x9a\x47\x82\xd9\x7d\x6c\x37\x32\x63\x27\x5d\xc1\ \xc1\xa4\x33\xb4\x49\xaa\x30\x96\x60\x24\xdf\x8e\x8e\x0e\x8e\xf7\ \xee\xdd\xbb\x45\xa9\xaa\x5e\x81\x85\x4b\x1c\x9b\xd9\x9c\x26\xa7\ \x4e\x62\x58\x59\x59\x49\x4e\xf6\xf6\xf6\x32\x8c\xc5\x62\x7c\xe5\ \x58\xaa\x64\xee\x72\x79\x25\x62\xc1\xac\xd5\xc5\x66\x95\xcf\x5a\ \x02\xb8\x68\x34\xca\xb7\xbd\xbd\x9d\x63\x49\xb2\x48\xe2\x00\xe0\ \x45\xd8\x16\x35\x24\xfb\xc6\xd7\x28\xe1\xbf\x17\x16\xa7\x74\x7a\ \xef\x9e\x3d\x88\x0e\x0d\x0d\x31\xa4\x0e\xb8\x0b\x0b\x59\x88\x06\ \x98\x59\x11\x54\x4d\x20\x33\x48\x62\x97\x2b\xdf\xe1\x58\xe3\x74\ \xe2\x0c\xb7\x61\x38\x4d\xd3\x53\x54\x44\xfc\xc9\x55\x64\x54\x1a\ \xfb\x01\x24\xa5\xa2\xc0\xeb\xed\xeb\xed\xf5\xf9\x7c\xfb\xf6\xee\ \xbd\xd5\xd6\xc6\x1e\x4b\x17\xf6\xac\xbb\xca\xcc\x4a\x2a\xbd\xdf\ \xc2\xe1\xf0\x1f\x83\x83\x9a\x37\xac\x90\xc8\x42\x9c\x39\x7d\xba\ \xff\xce\x9d\x96\x96\x96\x9e\xde\xde\x78\x2c\x26\xe0\x68\x2e\x87\ \x23\x61\x39\x33\xab\xd8\xc8\x0f\x7e\x59\x5b\x52\xf2\x68\x64\x84\ \x25\x1d\x23\x23\xd8\xf0\xe7\xcc\xcc\x63\xd3\xec\xe8\xe9\x99\x09\ \x04\x40\xa6\xd2\x7c\x0a\x0c\x83\x92\x8a\xcb\x24\x35\x0a\x0a\x0a\ \xbe\x6a\x6c\x3c\x7a\xf4\x68\xb5\xcf\xd7\xdc\xdc\x8c\xa0\x03\x03\ \xe8\x56\x83\x86\xf3\xf6\xb6\x6d\x5c\x33\x02\xde\x5e\xe7\xf4\x3e\ \xcc\x98\xc7\x15\xf4\xf4\xe9\xd3\xaa\xf7\xdf\x9f\x7b\xf8\x90\x22\ \x00\x62\xfb\xb9\x96\x68\x94\x94\x94\x44\x63\xb1\x74\x2a\xa5\xa1\ \x46\xe6\x9f\x70\x78\xa3\xdb\x5d\xe4\x74\x8a\x91\xd9\x67\xd8\x82\ \xf2\x24\x1a\x05\x59\x19\x50\xb8\xe5\x2c\xb3\x30\x40\xb0\xea\x3e\ \x18\x3f\x14\x0c\xbe\xe5\xf1\x10\x6d\x41\x85\x30\x55\x0a\x3b\xa7\ \xa7\xa7\x89\x21\x1c\xe0\xcb\x1a\x08\xf6\x49\x53\x84\x36\x6d\xfa\ \xbd\xab\x6b\xfd\xfa\xf5\x6c\x88\x09\x6a\xa1\xa9\x08\xd4\xbc\xc9\ \x89\x89\x9d\x55\x55\x0d\xa9\x54\xd3\xc1\x83\xd1\x64\x52\xde\x11\ \x12\x46\x01\x0a\x30\x02\x02\x9b\xa6\x5e\x07\x4d\x7d\x4b\xcb\x4f\ \xb5\xb5\x95\x1b\x36\x70\xaf\x39\x10\xb3\xe4\xe7\x20\x2c\x99\xe4\ \xfc\x3c\xf9\xf6\x79\x7b\x3b\xa3\x1f\x1a\x1a\xe2\x91\x08\x4b\xa0\ \xe5\x2d\xa3\xa5\x86\x32\x3b\x9d\x48\xbc\xeb\xf7\xff\x5c\x5f\xbf\ \xd1\xeb\x4d\x00\x5d\xf4\x5a\x0d\x8f\x13\x58\x81\x01\x57\x13\xc4\ \xed\x74\x9e\xed\xee\x06\xf6\xbd\xdb\xb7\xdf\x2c\x2d\x55\x23\x33\ \xb5\x54\xce\x9e\x98\xb7\x63\xd7\x2e\x5f\x2a\xf5\x6d\x7d\x7d\x20\ \x16\x4b\xcd\xce\x72\xae\x93\xb3\xb3\x49\xeb\x2b\x3d\x9e\x4a\x71\ \x01\x0b\xdf\xde\xd1\x05\x93\xa0\xc8\x30\x41\x5f\x48\x30\x45\x34\ \xe8\xf3\xba\x4a\xa6\x72\x3a\xd0\x52\x0b\x39\xa8\x43\x29\xaa\xed\ \x4c\x01\xc6\x14\x50\x01\x0c\x6c\xc0\x63\x02\x86\x48\x59\xca\xd4\ \x52\xa9\xc2\xa3\xa3\xa3\xef\x55\x57\x13\xbd\x6f\xea\xea\xc6\x83\ \x41\x09\x9a\x16\x8f\xe5\xdc\x25\x22\xb6\xfa\xb6\xfc\xfb\x40\x35\ \x02\x18\xd8\x80\xc7\x04\x0c\x91\x98\x01\xc9\x61\xaf\x42\x9f\x9c\ \x38\xf1\xce\xd4\xd4\xf7\x3e\xdf\x78\x28\x64\x30\xc6\xc2\x97\xdb\ \x74\xc3\xe5\xed\xbc\x7c\xf5\xd8\x03\x5e\x60\x03\x1e\x13\x30\x84\ \xa1\x94\x18\x07\x73\xfa\xb4\x0f\x85\xc3\x0d\x5b\xb6\x70\xf6\x32\ \x7f\xd8\x20\xa4\x29\x91\xdb\x04\x8a\x90\x8b\x4a\xe6\x4c\x89\xfc\ \xd2\x62\x10\x74\x15\x7c\x21\x8c\x85\xff\x2d\x01\x8f\x09\x18\x22\ \x1c\x9a\x69\x7f\x7c\x50\x67\x23\xc9\xa4\xae\x11\xe7\x28\x61\xcf\ \x40\x28\x6d\x9a\xcc\x3a\x25\x5d\x38\x10\xb9\x99\x27\xb3\xca\x50\ \xc9\x0c\xad\x1c\x05\xa0\xba\x54\x91\x8d\xa3\x46\x02\x05\x13\x8c\ \xe2\x62\x2d\x4e\x99\x18\x6a\x09\x56\x17\xdb\x09\xe5\x33\x56\x85\ \x99\xa1\xae\xa2\x8b\xf0\xa2\xbe\xd7\x45\xf6\x59\x5d\xa2\xda\x95\ \xaf\x3b\xdb\xdc\xa4\x30\x68\x4a\xab\x98\xb0\xe6\x6d\xda\x6d\x0f\ \x17\x55\x90\xd3\xec\xfe\xa6\x12\xce\xda\xbc\xc8\xd3\x24\xeb\x85\ \xbd\xfa\x96\xf5\x5e\x47\x85\xee\x8b\x6a\x00\x2c\x55\xd8\xc4\xb6\ \x65\xbd\xbc\x17\x3e\xc1\x58\x25\x3a\xd7\xb8\x5c\xa5\x1e\x4f\x21\ \xcf\x2f\xd3\xf4\x3a\x9d\xd0\xbc\x3f\x00\xa1\x47\xf7\xa5\x98\x27\ \x20\xd9\xb6\xc0\x34\x51\x81\x22\xd4\xa1\x14\x1a\x00\xe8\x90\xe7\ \x8e\x28\x53\x9c\xff\xff\xf2\x66\x3c\xa7\xce\x93\x4e\x93\xc7\x80\ \x95\xd0\x45\x2e\xd7\xad\xe1\xe1\x8f\xaf\x5f\x6f\xf0\xfb\xf7\x5d\ \xbd\xea\xbb\x7c\xf9\xeb\xce\xce\x47\xe1\xf0\x5a\xde\xa5\x22\x2c\ \xab\x56\xd1\x44\xb5\x50\x6c\xfb\x28\x18\x3c\xd3\xd9\x89\x22\xd4\ \xa1\xf4\xd8\x8d\x1b\x6d\xc3\xc3\xc0\x30\x2d\x48\xea\x77\xcd\x1f\ \x79\x1e\x0b\x91\x7d\x0e\xc5\x62\x7c\x26\x49\x60\x3f\x84\xac\xe1\ \xfd\x01\xff\x58\x6b\xeb\x17\xf7\xef\x6f\x38\x72\xa4\xd9\xef\xbf\ \xd8\xde\x7e\xe6\xd2\xa5\xb1\x1d\x3b\xf6\xb7\xb6\x9e\x1f\x18\xf0\ \xba\x5c\xe4\x03\xf1\x94\xab\x55\xd3\x5e\x93\x7f\x91\xe3\xad\x53\ \xb6\xb3\x44\x12\xba\x4d\x93\xbf\x8e\x1e\xa7\xf3\xdc\xbd\x7b\x1f\ \xb4\xb5\xa1\x02\x45\xa8\x43\x29\xaa\x01\x00\x0c\xc0\xe4\x5b\xc0\ \x14\xba\xec\x00\x1f\x13\x20\x54\x57\x26\x86\x0c\x52\xe9\xf4\xd0\ \xd4\x54\xb1\xf5\xb0\x14\x8e\xb8\xc4\x61\x95\xd9\x8f\x5a\x5a\x66\ \xca\xcb\xff\x1e\x1c\xbc\x78\xfe\xfc\x87\xfb\xf7\xd7\x54\x54\x1c\ \x3b\x7c\xf8\xe6\x95\x2b\xbf\xde\xbc\xf9\xe3\xf8\xf8\x77\x77\xef\ \x3a\x0c\x63\x68\x66\xc6\xe0\x7f\x83\x18\x29\xa5\x4b\x33\x4f\x2b\ \x21\x5d\x13\x4c\xa7\x04\x00\x69\x59\x58\xf8\xdb\xe8\x68\x28\x9d\ \xbe\x30\x30\x70\xe1\xc9\x13\x36\x47\x05\x8a\x50\x87\x52\x54\x03\ \x00\x18\x80\x01\x52\x9e\x04\x5c\xbc\x63\x1d\x51\xc0\x63\x02\x86\ \xe8\xeb\xdf\xf1\x6f\xbb\x66\x13\x12\xd7\x15\xc5\xf1\x18\x26\xc9\ \x8c\x89\xbe\x29\x6f\x1e\x31\x91\x38\x05\x29\x82\xbb\x30\xa6\x10\ \x78\x69\xc1\xa4\x1f\x09\x42\x90\xe8\xd4\xac\xaa\xce\x60\x18\x64\ \x32\x01\x75\x93\xac\x8d\x55\x4a\x40\x5c\x64\x13\x82\x18\xad\x2b\ \x37\xda\x45\xc7\x96\xa4\x13\x42\xc4\x44\x4d\xa8\x50\x17\x92\x21\ \x42\x16\x89\x88\x69\x0d\xa9\x49\x27\xed\xf4\xc7\x1c\x72\x73\x79\ \x8f\xea\x50\x5d\x4d\x7a\xb8\x8b\xf3\xee\x3d\xe7\x7f\xfe\xe7\xdd\ \x7b\xdf\x83\x73\x2f\x9a\x08\xef\xbe\xbf\xaf\xef\xc6\xea\xea\xd5\ \xb9\xb9\x83\xa5\xa5\x19\x49\x32\xb7\x6e\x0d\xaf\xf7\x9b\xa9\xa9\ \xb5\x8a\x8a\xbb\x93\x93\x07\xcb\xcb\x29\xa8\x48\x81\x84\xc2\x04\ \x95\x95\xcf\x4e\x9c\x98\x1c\x1f\xef\x5f\x58\xf8\xa8\xa4\xe4\x5c\ \x2a\x35\xf9\xe8\x91\x51\x5c\x8c\xbb\x4c\x8a\xfe\xf3\xa0\xb9\x75\ \xc9\x5c\xd2\x2b\x2d\x2e\xfe\x31\x9d\x3e\x93\x4c\xd6\x04\x02\xdf\ \x3d\x7e\xfc\xc3\xf8\x38\xe0\x84\xa3\x4e\x23\x11\xd1\x21\x00\x0d\ \xc8\xf4\x4e\x4d\x7d\xe0\xf3\x41\x8f\x54\xc4\x1d\xda\x90\x27\x05\ \x12\x91\xa5\x84\xbc\x3b\xe5\x96\x6a\xcf\xfd\xd9\x59\x6f\x49\x49\ \x5f\x4d\xcd\x4a\x24\xf2\x4b\x63\xe3\x7c\x38\xfc\x6b\x53\xd3\xc3\ \x70\x78\xef\xce\x9d\xb7\x52\x29\xa9\x1a\x39\x6a\xec\x54\x1c\xe8\ \xff\x3a\x16\x3b\x69\x9a\x97\x8f\x1e\x85\x70\xb2\xae\x2e\x1b\x8f\ \xff\xd6\xda\xfa\x22\x1a\x5d\x8b\x46\x5f\xd0\x22\x91\xd5\xd6\xd6\ \x4c\x3c\x7e\xae\xba\x9a\x86\xc2\x23\xfd\x32\x84\x82\x31\x2e\x38\ \xe2\x0e\xc8\x29\xd3\x6c\x8e\xc5\x80\x05\x9c\x10\xba\x40\x80\xfe\ \x9f\x53\xa9\x3d\x45\x45\xf7\x1b\x1a\x16\x9a\x9a\x20\x09\x55\x08\ \x43\x1b\xf2\xa4\xa0\xd2\xd1\xce\x2d\x72\xc2\xe4\xd0\x3b\xf3\x36\ \xc9\xb5\xb6\xb6\x27\xcd\xcd\xeb\xb1\xd8\xe0\xb1\x63\xe5\xc1\x20\ \x3e\xee\x33\x09\xc1\x42\x79\x30\x3f\x6f\x7a\xbd\x2f\xdb\xda\xae\ \xd8\x36\x73\x7e\xab\xbe\x3e\xdb\xd1\x91\x4d\x24\xb2\x17\x2e\xd0\ \x50\xb2\xe7\xcf\x67\x2f\x5e\xec\x38\x7c\x98\x86\xc2\xa3\x1a\xa2\ \x61\x8c\x0b\x8e\xb8\x03\x02\x14\x80\xc0\x0a\xb8\xfb\xe4\x83\x81\ \x03\xc1\xe0\x75\xdb\x86\x1e\x24\xa1\x2a\xe9\x41\x1e\x4a\x92\x88\ \xd8\xef\xd0\x9d\x55\x92\xf7\x66\x66\x0c\xc3\xb0\x0d\xe3\x13\xbf\ \xff\x73\xcb\x0a\x7a\x3c\x8d\x67\xcf\x4a\x09\x43\xd9\x3b\x1c\x9f\ \x2d\x2f\x9b\x86\xf1\xf1\xbe\x7d\x75\x96\x25\xfb\xeb\x94\x65\x7d\ \x19\x08\xd0\x4e\xd2\x4c\xf3\x0b\xd3\xac\xdb\xbf\x9f\x31\x1a\x0a\ \x8f\xf4\xd3\xc4\x06\x63\xf1\xc2\x1d\x10\xa0\x00\x74\x9f\xcc\x20\ \x8a\x06\x94\x3e\xf4\x78\xa0\x07\x49\xdb\xef\x87\x30\xb4\xf5\xf4\ \x44\x3c\x7a\x7d\x1a\x9d\x0a\x2c\x73\x72\x24\x14\x9a\x9e\x9e\xfe\ \xe9\xce\x1d\xf9\x55\xdc\xbe\x79\x73\xf5\xe9\x53\xdd\x4c\x57\x54\ \x69\xc3\xe3\xf3\x35\x5e\xba\xb4\xdb\xe7\x6b\xd8\xb5\x8b\xde\xdf\ \x33\x19\xf7\xb9\xc5\xe9\xdc\x87\xee\x0f\xbe\x04\x5a\xa7\xec\xd8\ \xaf\xa8\xd3\xe5\xbc\xfe\x5c\x5f\xff\xb6\xbb\x1b\xc0\x7f\xfb\x55\ \x8a\xef\xf3\xe5\xe5\x23\xe1\xf0\xa7\xc7\x8f\x4b\x0a\xd7\x6c\xbb\ \xaa\xaa\x0a\xf2\x52\xef\x53\xf6\xef\xf6\xa1\x63\xe1\x65\x35\x99\ \x9b\x9d\xb5\x2c\xcb\xb1\x4a\x55\x1d\x96\x89\x65\x88\x7a\x51\xc5\ \xa1\x43\xd9\x6d\x12\xa0\x00\x04\x16\x70\x9d\xa1\x22\xc0\x10\x94\ \x20\xa6\x5c\x14\x6d\x65\xef\xdc\x87\xee\x3d\xa6\xea\xd0\x94\xd2\ \xca\xca\xca\x06\x07\x07\x65\xeb\x4b\x62\xca\x4c\xbe\x34\x14\x36\ \x5b\x5a\x5a\x88\x41\x81\x0c\x2f\x04\x77\x44\x14\xa5\x8b\xb8\x3b\ \x95\x25\xee\x80\x00\x55\x5b\x5b\xbb\x41\x38\xc8\x40\x09\x62\xd0\ \x13\x04\x61\xee\x90\xbc\xce\x80\x89\x0a\xe2\xd0\xd0\x10\x93\xbe\ \xb8\xb8\x88\xae\xd8\x80\x2e\xe1\x47\x46\x46\x18\x4d\xa7\xd3\x52\ \x81\xff\xfb\xbf\x8a\xfa\x6e\x01\xc5\x7e\x19\x1e\x1e\x96\x95\xa2\ \xbf\x2f\x7a\x96\x96\x96\x08\x07\x25\x21\xb3\x31\xe6\x26\x77\xa2\ \x40\x57\x49\x76\x76\x76\x52\x6c\x4f\x26\x93\x8e\x85\xd1\xd3\xd3\ \x43\xbc\xd1\xd1\x51\x79\xdc\xca\x9d\x28\x51\x24\xdc\xd8\xd8\x18\ \xb0\x80\x3b\xb6\x0c\x04\xfc\x7e\x3f\x64\xc4\x72\xd3\x3b\x51\x79\ \x9d\xcc\xa8\x24\x7b\x7b\x7b\x39\xf7\x0a\x85\x42\xed\xed\xed\x5d\ \x5d\x5d\x91\x48\xa4\xb2\xb2\x32\x18\x0c\x72\x48\xa4\xe2\x6d\xf1\ \xa6\x82\x9e\x24\xb0\x80\x13\x82\x40\x84\x23\x28\xa1\x21\x40\xda\ \x62\xa3\xb6\xd5\x06\x27\x33\x9b\xcc\xa1\x3e\x2a\xef\x72\x65\x65\ \x65\x60\x60\x20\x9a\x93\x44\x22\x41\xd5\x54\x15\x7c\x05\x71\x2b\ \x73\xa8\xdb\xa8\xa9\x9b\x98\x98\x20\x90\x44\x24\x34\x04\x24\x9c\ \xca\x6d\xa3\x39\xcc\xff\xa6\x82\x58\xcb\x36\x70\x88\xda\x7b\xdb\ \x7b\x53\x41\xd6\xbc\x9b\xba\x9e\x5e\x3e\x37\x15\xf2\x3d\x3f\xd4\ \xd9\x90\x27\x22\x9f\x59\x48\xe8\x31\xb6\xeb\x3e\x8d\xfb\x93\xae\ \x44\x86\xf2\x3f\x3f\x7c\x0f\x6e\x9b\x14\x15\xb4\xfc\x7f\x73\xaf\ \x20\xa4\xf0\xef\x08\x17\xfe\x3e\x2c\xfc\xdb\x97\xff\x00\xfb\x6b\ \xc0\x37\xb1\x10\x1f\x8c\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x0c\xdc\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x4b\x00\x00\x00\x36\x08\x02\x00\x00\x00\x00\x90\xf3\xa2\ \x00\x00\x0c\xa3\x49\x44\x41\x54\x78\x5e\xdd\x5a\xdb\x93\x55\xc5\ \xd5\xef\xee\x7d\xce\x99\x1b\x03\xcc\x30\x37\x44\x19\x18\x2e\x2f\ \xc6\x38\x58\xca\xc5\x19\x14\x98\xa4\x2c\x35\x98\x08\x09\x65\xe5\ \x42\xb4\xb4\x0c\x65\x12\x1f\xe2\xc3\xf7\x96\xbf\x20\x79\xc8\x05\ \xa2\x46\x0a\x43\x88\xa6\x4c\x82\x31\x26\xb1\x2c\x22\x20\x8a\x90\ \xd2\x12\x92\x54\xe5\x01\x74\xb8\x49\xf8\x64\xe0\x38\xc3\xdc\x3c\ \x67\xef\xdd\x9d\x75\xd6\x3a\xdd\xab\xf7\xd9\xce\xcc\xa9\xf1\x24\ \x0f\x69\xfa\x6c\x56\xef\xbe\xad\x5f\xaf\x5b\x77\xcf\x16\x31\x26\ \x8d\x89\x08\xa6\xf9\x0d\x17\xb9\xfd\xd4\xef\x99\x4e\xa5\xd8\x4b\ \xe9\xaa\x4f\x6c\x9c\x6a\x93\x26\xb8\x98\x66\x2c\x23\xa5\x14\x42\ \xc0\xd3\x18\x63\x69\x7e\xa6\x8b\xd4\xd2\xaf\x82\x22\xbf\xac\x65\ \xe2\xb9\x98\xc0\x54\xd1\x86\x39\xe4\xc4\xc5\xcc\xa7\x99\x5e\x63\ \x22\xc2\xa1\x85\xc4\xeb\x95\x4a\x8e\x51\xa2\xfd\x66\x8e\xf6\x09\ \x1a\x5c\x61\x9a\xdd\x22\xce\x5e\x4b\xa3\x28\x02\x02\x90\x00\xcd\ \x4f\x2f\x11\x00\x47\xf8\xb5\xe9\x97\xe9\x96\x3e\x01\x13\xc1\x74\ \xb3\xd4\xd2\xd9\x49\xaf\xd4\x33\x93\x39\x77\xee\xec\x43\x8f\xec\ \x18\x1f\x1f\x0f\x82\x00\x85\x23\x05\xca\x40\x18\x09\x4f\x49\x45\ \x7c\x6d\x25\x88\xff\xa8\x9d\xb4\x72\xf3\xab\xa5\x34\xf4\xc0\x11\ \x68\xa2\xa6\xa6\xa6\x3d\xcf\x3c\xd9\xdd\xbd\x04\x40\xe2\x44\x28\ \xe1\xaa\x53\x66\xd6\xf0\xfe\x75\xf1\xe2\xba\xf5\x03\x9f\x69\xbc\ \xfc\xbd\x81\x95\x63\x93\xa1\x94\x64\x2e\x84\x8f\x71\x38\x68\x8c\ \x09\xdb\xd1\x60\x54\xb2\x4d\xd8\x1d\x18\x53\x6e\x3a\xa7\x21\xbb\ \xfb\xb5\x93\x30\xd1\x3b\xc7\x8e\x5c\xb7\x68\x91\x03\x59\x3d\xc2\ \x92\x96\x7f\xa2\xff\x48\xdb\x06\x55\xc1\x1c\x08\xef\x83\x55\x6b\ \xd6\xaf\x6b\x1b\xff\xf5\x13\x9f\x27\x45\xb2\x23\x10\x3a\x96\xa1\ \xc5\x66\x04\x23\x64\xf4\xde\x04\x56\x86\xd0\x1e\x68\xc9\x95\x4a\ \xa9\x07\x7e\x78\xe0\xd8\x95\xa6\x13\x7f\x7d\xe3\xba\x45\xd7\x13\ \x03\x3e\xc8\xe9\xcd\x3e\xd1\x94\x19\x4d\xd0\x5c\x15\x86\x61\x36\ \x9b\xbd\xf8\xc1\x05\x80\xd7\xd7\x3e\xf9\xdc\xe3\x03\xf9\xfc\x78\ \x64\x8c\x72\xda\x45\x60\x48\x8a\x2c\x43\x42\x60\x81\x90\x14\x79\ \x58\xaa\xa4\xd7\xb6\xbb\xe5\x59\x03\x8b\x52\x3e\xff\xf8\xc0\x57\ \x7f\x7c\xb0\x77\x75\x3f\x80\x5c\x74\xfd\x0d\xc0\x06\x82\x64\x0e\ \x19\x45\x0a\xcb\xcc\x32\x44\x82\xa5\xf7\xc1\x85\xf3\xab\xd6\xae\ \x5f\xdf\x5e\xd8\xf7\xed\x4d\x1f\x8d\x4e\x42\xb5\x52\x64\x37\xd2\ \x08\x36\xa1\xe4\x38\x8c\x91\x59\xf1\x6a\x3d\xb4\xd2\xb2\x46\xab\ \x44\xbe\xb4\x44\xb6\x34\x37\x7c\x7d\xe7\xc1\x37\x86\xea\x4e\x1c\ \x7f\xe3\xfa\x1b\x16\xb3\x24\x67\x94\xa1\x98\x39\x31\xbc\x0b\xe7\ \x01\x5e\xff\x9d\xed\xe1\x2f\x77\x0c\xe4\x87\x27\xa0\xa6\x04\x2f\ \x82\xd1\x15\x73\x5b\xc2\xa0\x08\x10\x49\x34\xe5\x6f\x58\xb4\x56\ \xe0\x3c\x13\x09\xd0\x56\x2a\x03\x3f\xa9\x00\x64\x7e\x78\x72\xdf\ \x8e\x81\x6f\xfc\xec\x60\xef\x9a\xfe\x13\xc7\xdf\xbc\x61\x31\x83\ \x9c\xde\x2c\x4b\x6e\xa3\x22\x76\x57\x48\x99\xe0\x81\x72\x5e\x38\ \x77\xae\x77\x6d\xff\xc6\x8e\x68\xef\xa3\x9b\xf2\xa3\x13\x25\x1c\ \xd8\x80\xb4\xd1\xb0\x2d\x91\xa6\x4d\x21\x43\xaa\x22\x30\x0c\x9c\ \x28\xfc\x59\x88\xcc\x07\xc5\x5e\xd4\x8d\xd6\xe6\xc6\xed\x4f\x1f\ \x3c\x74\x39\x73\x12\x40\x76\x77\x3b\x75\x25\x08\x69\x2d\x9d\x41\ \x86\x3e\xbc\xf3\x67\xcf\x02\xbc\x81\x4e\xfd\x8b\x87\x37\x5e\x1d\ \x46\x78\x34\x2b\x30\xed\x77\xa1\x82\xb3\xa6\xf4\x98\xf8\xb3\xae\ \xc4\xf6\x65\x3b\x64\xa1\x1a\x3b\x1a\x59\x23\x81\x84\xa9\xf7\x3e\ \xbc\xf1\x9b\xbb\x0f\xdf\xbc\xa6\x0f\x40\x2e\x5e\xb2\x84\x41\xce\ \x22\x5a\x38\x78\xe7\xce\x9e\x01\xe5\xfc\x5c\x87\xd9\xf3\x20\xc1\ \x93\xaa\x2c\x5e\xc5\x50\xac\xc1\xa2\x18\x94\x15\x66\x4a\x4b\x81\ \x70\xc0\x65\x22\x8e\x10\x6e\x8b\x95\xf5\xd9\x45\x11\x25\x15\x82\ \x9c\x7c\xf6\xc1\x8d\x0f\xed\x39\xd4\xbb\xb6\x0f\xd4\xb5\x7b\xc9\ \x52\xdf\xf1\x54\x8b\xd0\x97\xde\xd9\x33\x00\xaf\xef\xae\x4e\xb9\ \x7b\xfb\x26\x80\x27\x84\x62\x78\x1e\x13\xcc\x34\xfc\x38\xfa\x57\ \x4c\xc9\x2d\xa9\x01\xa3\x67\x84\x64\xc6\xde\x72\x48\x6a\x9d\x00\ \xb9\x67\xfb\xa6\x87\xf7\x1e\xea\x5d\x03\x20\x8f\x2e\x59\x9a\x00\ \x39\x43\x3c\xa4\xe4\x02\xc3\x99\xc1\x41\x80\x77\x77\x67\xf0\xcc\ \xd7\x36\x5c\x19\x43\xd7\xe2\x3b\xae\xa4\xca\xa5\x8c\x87\x62\x3a\ \x11\x54\x4d\x55\x1c\x10\xc9\xd3\x03\xe5\x3c\x27\x05\x13\x6b\xab\ \xd4\x89\x93\xb1\xea\x0a\x64\xdb\x9c\xc6\x47\x7e\x75\xf8\x95\x0f\ \x63\x00\xb9\xb4\xa7\x87\x18\x66\x9b\x9c\x2a\x1e\xfa\xf0\x06\x07\ \xdf\xbf\x65\x6d\xdf\x3d\x1d\x99\xa7\x1f\xd8\x30\x34\x32\x01\x9d\ \x54\x49\x3c\x9a\x16\xd4\x77\x20\x4c\x7a\x50\xa8\x59\x9a\x47\xd6\ \x57\xc9\x26\x48\xb4\xed\xad\xd9\xeb\xd2\x4b\xde\xf7\xc0\x88\x1a\ \x5d\x80\x00\x96\x7e\xfe\xc0\x86\x47\x9f\x3f\xbc\x6a\xed\xed\xef\ \x1e\x3f\xda\xd3\xb3\xcc\x49\x72\xba\x78\xc8\xf0\xde\x7f\x0f\xa4\ \xf7\x85\xce\xdc\x53\xdb\xee\xbc\x32\x3a\x29\xa4\xf5\x9c\x1c\x32\ \x19\x17\x1b\x94\xbf\xf9\x4c\x6b\xa9\x15\x21\xcb\xd0\xe0\xc3\x6d\ \xf7\xa4\x64\xaf\xca\x0a\x92\xd2\x71\x27\x49\x23\xda\x9a\x1b\xbe\ \xf5\xc2\xeb\x7f\xfc\xb0\x78\x02\x40\x2e\x5b\xee\x4b\x92\x7d\x69\ \x5a\x7a\xef\xbf\x77\xfa\x96\x75\x7d\x9b\x3b\xea\x9f\xdc\x7a\xe7\ \xd0\xf0\x04\xbc\x27\x78\x2c\x3b\x86\x58\xc6\x9c\x8c\x6f\xdc\x86\ \x40\x24\xe4\xcc\x12\x16\x95\x56\xc7\xca\x2f\x13\x12\xe6\xf7\x14\ \x9c\x94\xb3\xc9\xa1\xe1\xc9\xa7\xb6\x6e\xd8\xf1\xdb\xd7\x4b\x92\ \x3c\x76\x74\xd9\xf2\x15\x0e\x24\x24\xb6\x43\x1f\xde\xe9\x53\xa7\ \x6e\xb9\xbd\xff\x8b\x1d\xf5\xbb\xee\xbf\x63\x68\x0c\x94\x53\xf2\ \xa6\x81\xe3\x93\x48\x25\xe6\xc4\xdf\x09\x79\xec\x55\x56\xd9\x2e\ \x56\x60\xa9\x83\xe5\xb4\x53\xc0\x83\xda\x03\x69\xda\xe7\x34\x3e\ \xf6\xe2\x91\x97\x2e\x7f\xfc\xee\x5b\x6f\xae\x58\xb9\x92\x80\x30\ \x42\x77\x62\x08\x82\xe0\xbd\xd3\xa7\x6e\xeb\xbb\x63\xdb\xc2\xa6\ \x5d\x5f\xda\x30\x34\x3a\x4e\xd2\xd3\x46\x43\x6b\xa5\x52\x5a\x4a\ \xb2\x48\xc6\x6d\xc1\x18\x04\x57\x32\x42\x16\x22\xe9\x26\x95\x24\ \x6f\x57\x19\x09\xe9\x83\x1d\x41\x56\x2c\x90\xd6\x25\x84\x24\x49\ \x48\xed\xcd\x4d\x8f\xfd\xfe\xf0\x0b\x97\xc6\xdf\x3e\x7a\x64\xf9\ \x8a\x95\x04\xa7\xec\x69\x1c\xbc\xbf\x9f\x3c\xd9\xb7\x71\xa0\x37\ \x17\x6f\xbf\xf1\xa6\x3f\xfd\xed\x94\xb4\xaa\x9c\xcd\x66\x82\x20\ \x57\x28\x6a\x29\xd9\xe2\x18\xa2\xcf\x15\x81\xb0\x41\xcc\xbd\x64\ \x55\xe6\xb3\x03\xf7\xf1\xfd\xa4\xed\x4f\x0e\x96\x7a\x7a\xef\x25\ \x6f\x62\xeb\x72\x2a\x8e\x8b\x61\x18\x59\x49\x8a\xed\x37\xf6\xfc\ \xf3\xff\xdf\x5e\xb5\x7a\xdd\xd1\x43\xaf\x7d\xb6\xb7\x17\x40\x29\ \xa5\x24\x9d\xd3\x01\x5e\x3e\x9f\xdf\xb2\x65\xcb\xe0\xe0\xe0\xc2\ \xb6\x05\x23\x13\x1f\x4b\x69\x2d\x35\x13\x0c\x0d\xe5\x47\x47\x2f\ \x2d\x5e\x54\x1f\xc5\x5a\x54\x1c\xfc\xac\xd1\xb0\xa3\x04\x04\x2e\ \xae\x3b\x2d\xe5\x98\x87\x95\x54\xc7\x76\x6b\x29\xc9\x32\xf7\xc6\ \x13\x32\xa5\xe4\x99\x40\x9d\xbf\xf8\x71\x73\xf3\xc2\xf6\xf6\xd6\ \x28\x8a\x09\x24\x54\xce\x6b\xac\xbf\x74\xe5\x6a\x4f\x4f\xcf\xfe\ \xfd\xfb\x5b\x5b\x5b\x01\x1d\x6b\x69\xa1\x58\x14\xb0\x30\x75\x75\ \xda\x18\x8b\x4e\xd0\x61\xf7\x27\x3f\x7d\xf6\x0f\xbf\x7b\xe8\x95\ \xfd\xab\x3e\xbc\x5c\x08\x82\xca\x6b\x22\xb6\x1c\x2a\x01\x6d\x52\ \x07\x79\x4c\x86\xe0\xb2\xaa\xfb\x12\x25\x68\xac\x03\xac\xc3\x86\ \x91\x13\xc2\x38\x16\x9d\x1d\x75\x77\x6f\x39\x71\xdf\xd6\x3d\xdf\ \xfd\xce\x83\x74\x2c\xc6\x81\x71\x3f\x05\x58\x0a\x05\x40\x50\x97\ \xcb\x25\xf6\xa5\xb9\x6c\x96\x86\x87\x16\x09\x63\x73\x4b\xaf\x65\ \x29\xcb\x72\x95\xd6\xd0\x02\x37\x38\x0a\xd1\x12\x5f\xd4\x27\x75\ \x3c\x05\x45\xd1\x1a\x41\x6a\x04\xe2\xe4\xe7\xed\x5a\x08\xbf\xdd\ \xbd\x2b\xa3\x11\x14\x9e\x36\x8c\x0b\x87\xf4\xd4\x90\x25\x15\x2a\ \xae\xd7\x68\x2c\x90\x93\x7b\x5b\xd5\x09\x98\x9a\x00\x73\xa5\x4c\ \xa6\x66\x6d\x7d\x6c\x34\x06\x25\xa1\xc6\xc8\x01\x4b\x89\x04\x4b\ \x26\xd0\xd0\x10\x64\x32\x42\x6b\xb7\x19\xf0\xdc\xae\xa5\xed\x4c\ \x18\xf2\x01\x01\xb6\x34\x1a\x01\x7a\x9a\x6c\x11\x32\x63\x2e\x30\ \x54\x7f\xb6\x48\x27\xe2\x4a\x42\x76\x01\x0d\xf4\xe2\x6a\x3e\xbe\ \x67\xdb\x60\x14\x37\xe4\x72\x4a\x6b\x52\x4f\x14\x1a\x2f\xb8\xc8\ \x64\xd4\xa5\x4b\xa3\xbb\x7e\xd0\xb5\x65\x73\xcb\xf0\x48\xac\x14\ \x75\x97\x89\x18\x68\x52\x6e\x87\x82\xa4\xe1\xc6\xdc\x9e\x99\xa9\ \x8a\xf1\x69\x6f\x84\x99\x16\xa6\xbc\x72\x65\xaf\x42\x3b\xb7\x62\ \x21\x32\x62\xee\xab\x07\x8e\x81\xb9\xa3\x4f\xb3\x97\x4b\xde\x55\ \x65\x5b\x5b\xeb\x5d\x77\xdd\x3f\x34\xf4\x56\xa0\xda\xb5\x8e\x11\ \x81\x3b\x13\x31\x28\xe7\x74\xac\xa9\x22\x2c\x57\xb4\x3c\x60\x22\ \x4e\xb8\xaf\xc4\xf4\x69\x6f\x84\x25\x3a\x35\xcc\x54\x04\x42\x01\ \x50\xa5\x64\x67\x67\xdb\x82\xd6\xf9\x5a\xeb\xf4\xa5\x2d\x39\xaa\ \x86\x86\x3a\x80\x52\xee\x6e\xad\xd5\x68\x19\x28\x13\x64\x94\xb7\ \xe9\x97\xbc\x7b\x43\xbc\x74\xc6\xd6\x1a\xc6\x31\xd0\x1e\xe3\x31\ \xad\x22\x32\x33\x2d\xc3\xb3\xb1\x43\x5a\x73\x5e\x4f\xcc\xf0\x20\ \x6f\x4c\xcf\x24\x42\x5b\x85\x87\x59\xce\x58\x52\x52\x14\x0a\x66\ \xe4\x5a\x14\xdb\xfb\x72\xc1\x57\xa5\x64\x79\x65\xb4\xb9\xac\x9a\ \x3f\x57\x29\x85\xb6\xe7\x74\xb5\xc6\x76\x08\x88\xd8\x97\x92\xaf\ \x40\xda\x54\xea\x33\x30\xe2\x70\x72\x95\xc0\xbe\x94\xb1\x14\x6b\ \xd1\x32\x2f\xf8\xf3\xcb\x1f\xed\x78\xe2\x42\x77\x57\x7d\x18\xf1\ \x0d\xa3\xa1\x13\x17\xc2\x53\x4a\x16\x43\x6d\x02\x7d\xe0\x37\xcb\ \xdb\x5a\x33\xc5\x58\x48\xd6\x52\x6a\x55\xd3\x1b\x61\xc0\x83\x19\ \xed\xdc\x16\xab\xf6\x53\xd2\x75\x17\xb8\x6f\x0e\x94\x1a\x1e\x8b\ \x6e\xed\x6e\x7f\xf1\xff\xfa\xae\x8e\x16\x54\x59\x8e\xd2\xbf\x73\ \xcc\x66\xd4\x95\x91\xc2\x57\x76\x1e\x29\x46\xd4\x4b\xd3\xea\x42\ \x15\x4f\x5d\x1b\x84\xc4\xa3\xcd\xe4\x69\x88\xae\x32\x71\x5f\x1e\ \x4a\x02\xc3\xd9\x40\x2d\x68\xca\xe9\x18\x00\xb3\x22\xf8\x08\xa3\ \xd0\x28\xbf\xbb\xe1\xd1\x6a\xea\x4b\x05\xab\x3b\xcb\x10\x93\xdf\ \x52\x29\xe5\xbf\x61\x42\x0a\xe3\x92\x86\x2a\x8d\x3a\xaf\x31\xdc\ \x99\x62\x51\x87\x61\xc9\x16\xbd\x7b\x70\x6b\x84\x5a\x44\x21\x5a\ \xb1\x4d\x2c\x43\x9a\x48\x4c\xeb\x4b\xab\xf7\x34\xf4\xd3\xbe\x1d\ \x42\x8e\x25\xb2\x2b\x5c\x7b\x5d\xe2\x93\xdf\x30\x81\x4a\xc5\x5b\ \x22\xa3\x70\xf3\xa0\xca\x66\xac\x31\x97\x48\xfb\x24\xa7\x63\xab\ \x84\x67\xc6\x2e\x6e\x69\x4d\x1b\x8c\x99\x3d\x4d\x75\x32\x44\x4c\ \x0a\x26\x20\x08\xb8\xc2\x12\x8b\xa2\xaa\xc4\xed\xb1\x83\xa5\x8d\ \xe0\xcd\xa0\x85\x88\xac\x29\x94\x60\xb9\x4a\x60\x5f\xca\xc4\x28\ \xc0\x56\x40\xd7\x36\x1e\xfa\x5a\x4a\x6b\x4c\x05\x0e\x09\x36\x1e\ \xb2\xf0\xb1\x8a\xb7\x5a\x86\xf5\xda\xd2\x28\xdb\x18\x33\x72\x04\ \x4f\xea\x8d\xdd\xd0\xdc\x62\xe9\x4d\x8d\x3b\x02\xd6\xd2\x9a\x7a\ \x1a\x83\x5a\x8a\xca\x66\xed\x50\x4b\xa1\xa5\x92\x22\xc0\xe3\x06\ \x3c\xa7\xfa\x33\x6d\xa0\xa0\xa3\xa7\xd5\x4e\xeb\xd0\xc3\x8a\xc8\ \x88\x18\x28\xff\x04\xe9\xfc\x0d\x56\x09\x56\x72\x72\xa6\x96\x99\ \x5a\x47\x7c\xde\x97\x92\xb9\x6b\x40\x95\x1d\x1e\x1e\xbd\x77\xf3\ \x97\x1b\xea\x73\x25\x23\x24\x06\x65\x62\xe7\x56\x57\x97\x3d\x72\ \xe4\xf8\x7d\xb7\x37\xeb\x18\x59\xf7\x37\x96\x84\x24\x96\x90\xd9\ \x10\x11\x03\xef\x48\x35\x3e\x6d\x7b\xac\xa4\x22\xc9\xb6\xa6\x76\ \x58\x5a\x4e\x6d\xdc\xbd\x76\x1c\xea\xe6\xc6\xe0\x47\xdf\x5f\x98\ \xcf\x9f\x84\xde\xc8\x07\xc3\xf7\xcf\x16\x5b\xfb\x1b\x57\xdf\x3c\ \x6f\x6c\x2c\x0c\xd0\x3d\x96\x92\x76\x3b\x24\x24\x74\x52\x86\x04\ \x89\xa2\x0a\x35\xd3\xb6\x19\xe1\xd7\xc8\xcc\x7f\xc0\x0e\xcb\x19\ \x87\x96\xb1\x36\x99\x40\xde\xbb\xa1\x25\x93\x69\xb3\xf7\x16\xc2\ \x1d\x62\xfd\xa9\x8c\x8e\xc7\x27\xa2\x30\x74\x97\xb9\x76\x1c\x22\ \x50\x86\x50\x67\x6f\xb8\x9c\x03\xf7\xed\x90\xbb\xb8\x62\xcd\x23\ \x3e\x64\xe5\xd4\x0c\x20\x91\x43\x18\x19\xc1\x4d\x31\xdf\x79\xb3\ \x7a\x90\xf4\x09\x86\x0a\xa8\xbd\x37\x9a\x26\x9d\x97\x15\xbe\x94\ \x9a\x3b\x3d\x33\x15\x5a\x8a\x8d\x2c\x33\xb5\x45\x48\x26\xa1\x6d\ \x8c\x25\x99\x91\xc2\x2a\x23\x13\xea\xa5\x68\xdf\xcc\xb7\x39\x92\ \x2c\x90\xf0\x3b\x2d\x25\x8e\x53\x9e\x06\xab\x2d\xf7\x58\x05\xb4\ \xe6\xd9\xb9\xbb\xa8\x2a\x56\x29\x63\x13\xc7\xee\xe4\xf7\x1e\x5e\ \xac\xa0\x37\x4c\x10\x8d\xfb\x60\x57\x10\x58\x2b\xa8\xc2\x8d\xcd\ \xfd\x88\xe4\x0a\x61\x62\x9b\x35\x12\x91\x10\x8e\x46\x02\x27\x4f\ \x27\xed\x34\x35\x5d\xe7\xf3\x5f\x9d\x0c\x49\x3c\x5a\x39\x19\xba\ \xe5\xe3\x53\xaa\xb6\xe2\x12\xca\xba\x04\x29\xfc\x4b\x7a\x4a\x3a\ \x29\x43\x63\x85\xe3\x69\xa9\x30\x8a\x8f\xfc\x34\xa3\x49\xcb\x50\ \x91\x4d\xd4\xd2\x0e\x79\x0e\x3a\x75\x73\x85\x72\x31\xc0\xa2\x42\ \x64\xd8\x0c\x11\x26\xff\xfc\xc9\x08\xc9\x45\x63\x66\x2d\x4d\xb2\ \x1d\x13\xa4\x34\xc2\x1a\xde\x62\x60\xc1\x53\x2f\x91\xba\xc6\xd6\ \xde\x75\x20\xdd\xa9\xb9\x4d\x32\x89\x90\x6a\x0c\xef\x6f\x20\xe3\ \x8f\xb9\x97\x1c\xeb\x88\xa0\x79\x11\x09\x9b\x48\xe2\xec\x8d\x6b\ \x57\x9b\x9d\x37\x9e\xc6\x92\xe7\x97\x84\xfe\xd2\x4b\xbe\x42\x32\ \x9a\x45\x22\xd3\xba\x40\x43\x71\xb4\xc0\xec\x3a\xf0\xb5\x29\xed\ \xef\xfd\xc3\x57\xfa\x20\x66\x6a\x76\xc6\xd7\x46\x44\xa1\x8c\x22\ \x69\x94\x95\x2c\x0f\xa4\x3c\xb4\x08\xd6\x5e\xe9\x12\x1e\xbe\xf4\ \xb6\x37\xc0\xb1\x16\x61\x28\xf1\x7c\x60\xe2\x50\xc7\x91\x36\x56\ \x1a\x24\x73\x12\xb9\x32\x02\xaa\x80\x80\x79\x29\xd3\x48\xd0\x1d\ \x98\xd1\x35\x3d\xe3\xcb\xfa\xba\x4c\xcb\xbc\x5c\x18\xe9\x40\x09\ \x66\xc5\x9d\xac\xf8\xa2\x45\xb8\xc3\x1d\xdf\x4a\x24\x97\x56\x20\ \xc2\xd6\x79\xd9\xa6\xc6\x6c\x2e\x23\x5a\x1b\x1a\x63\x5d\x8a\x97\ \x76\xe5\xf8\x72\x3b\x1b\xa8\x30\x52\xd9\x6c\x30\x7f\x6e\x0e\x66\ \x2f\x84\x68\x88\xd8\x1d\x8a\xc0\x12\xb4\xac\x0d\xc2\x4c\x46\x9e\ \x39\x1f\x3e\xf7\xd2\xe0\xf0\x68\x51\x91\x1f\xf5\xa5\xe8\x0a\xce\ \x7b\x3b\x4b\x9a\xe2\xaf\x6b\xda\x88\xb9\x8d\xc1\xdb\x27\x47\x2f\ \x8d\xc8\x7d\xc7\xff\x71\xad\x18\x29\xcf\x76\xdc\xe5\x7f\xa0\xe4\ \xb5\x42\x74\x6d\xbc\xf0\xf2\x5f\x2e\xb4\xcc\x09\x22\xdc\x85\x53\ \xf7\xf9\xcd\x39\x60\x09\x18\x9b\xbd\xa7\xf1\x6f\x96\x56\x2c\x5d\ \xd4\xd4\x75\xdb\xae\x57\xe7\xba\x0b\x35\xd6\x53\xfe\x4a\xcb\x46\ \x6d\xff\x9b\xa8\xd4\xc7\x18\x89\xbf\xce\x06\xb2\xeb\x56\xb1\xb3\ \x10\x5b\x64\x2e\xb0\x98\xf2\x61\x37\x36\x32\x2b\x6f\x5a\xbd\xfe\ \xc5\x77\x8c\xf7\xa9\x54\x99\xb1\xa6\xae\x2e\x60\x8c\xe8\x29\x3c\ \xcd\xcc\xdf\x97\x32\x91\xfe\x10\x94\x88\xff\xc2\xf7\xa5\xa9\xf7\ \x4c\x54\xf3\x7d\x69\x55\xdf\x26\x52\x1f\xff\x86\x82\xe8\x74\x71\ \xc6\x3f\xe5\xa6\xbb\xa7\x68\x26\x2a\xe8\x74\x95\xff\xed\xf0\x54\ \xd3\xfd\xef\x7f\xc9\xfe\x6f\xe7\xf8\x01\xc3\x58\x74\x3a\x3f\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x0a\xd4\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x4b\x00\x00\x00\x36\x08\x02\x00\x00\x00\x00\x90\xf3\xa2\ \x00\x00\x0a\x9b\x49\x44\x41\x54\x68\xde\xdd\x9a\x0b\x50\x54\xd7\ \x19\xc7\x2f\x46\xf0\x81\x28\xf1\xad\xe5\xd1\x56\x66\xd2\xc4\x4e\ \x1b\x33\x11\x47\x10\x15\x48\x10\x34\x3e\x20\x4b\x80\x05\x44\x01\ \x83\x84\x19\x47\x1e\x19\xeb\xb4\x55\x5b\xd1\xb1\x06\xd4\xa9\x11\ \x14\xc4\x68\x66\x92\xce\xf4\x15\x9f\x4d\xad\x02\xc2\xb2\xbc\x41\ \x44\x44\x79\x28\xa2\x8e\xaf\xc6\x94\x71\x04\x15\x48\xed\x6f\xef\ \x89\x77\xb6\x0b\xc2\xee\x72\x61\x92\x7c\xf3\xcd\xce\x77\xce\xf9\ \xce\xf7\xfd\xff\xf7\x9c\x7b\xce\xbd\xe7\xae\xf4\x8d\x2c\xff\xfd\ \xe1\x8a\x34\x34\x69\x9e\x3d\x7b\xc6\xaf\x72\x29\x85\x21\x2a\x7f\ \x38\x0c\x61\xd5\xd5\xd5\xd5\xdd\xdd\xad\xfc\x76\x76\x76\x62\x18\ \x5f\x82\x41\x61\x38\x34\xb3\xf4\x45\x83\x26\x98\x77\xca\x22\xd8\ \xaa\x8e\x67\x28\x18\x82\x1e\x26\x47\x8e\x1c\x7e\x7d\xd6\x1b\xf3\ \xbc\x16\x78\x78\x7a\x79\x7a\xce\x0b\xd6\x6a\x0f\x7e\xf6\x59\x43\ \x73\x33\xa3\x29\x98\x2b\x6c\x19\x5e\x01\x49\x15\x60\x43\xc1\xf0\ \xe9\xd3\xa7\xa0\x4f\xf9\x70\xc3\x9b\x33\x9d\xb3\x76\xc4\x67\xa6\ \xae\xf1\x99\xff\xfa\x24\x49\xfa\x99\x8d\x8d\x83\xad\xed\x4f\x5e\ \x7b\x55\x13\x1d\x9d\xf5\xe9\xa7\xcd\xb0\xed\xee\x56\xc6\x59\x2d\ \x54\x43\x71\x1f\x8a\x31\x5c\xb7\x3e\x79\x65\x90\x57\x5b\xfd\x5f\ \xda\x6a\xff\x14\x1d\xb3\x4c\x23\xd9\xd5\x3b\xbb\x1d\x9d\x30\x7d\ \xcf\xa8\x71\xe1\xd2\x30\x27\x49\x92\x6c\x6c\xa6\x4e\x9d\xba\x7c\ \xf9\xf2\x9c\x9c\x9c\xf6\xf6\x76\xb5\xee\xcc\xc1\x1d\x43\x11\x59\ \x8c\xe1\xfa\xc4\x14\x8d\xff\xec\x6b\xfa\x9c\xe6\x82\x03\xa1\x61\ \x7e\xcb\xa4\x97\xf2\x26\xfe\x68\xe7\x08\x87\x18\x69\x98\xa7\x24\ \x39\x0d\x1f\xee\xe2\xec\xbc\x78\xf1\xe2\x2d\x5b\xb6\xe4\xe6\xe6\ \x3e\x79\xf2\x44\xb5\x59\x3a\x04\x9b\x84\x60\x18\xa4\x09\x09\x7d\ \x67\x6e\x4b\xc9\x27\xcd\xba\xec\xd8\x88\x80\x11\x92\xf4\x8a\xa3\ \xe3\x34\x17\x97\x45\x1a\xcd\xf6\xbd\x7b\x4b\xab\xab\x3b\x1e\x77\ \x0c\xc6\x8a\x2a\x0d\x2a\x3d\xb1\x72\x60\x6c\xda\xf4\x5b\xa6\x61\ \xfc\xca\x25\x4d\xba\xac\x46\x5d\xd6\x07\x51\x4b\x28\x86\x85\x6b\ \x0d\x94\x8c\x96\x59\xe3\x2d\xe4\x3b\x3d\x4b\x95\x95\x50\xd0\x4b\ \x4c\x4c\x9c\x3a\x75\x8a\xb7\xaf\x5f\x64\xe0\xfc\xab\x45\xd9\x68\ \x44\xa0\x97\xaf\xaf\x9f\xab\x8b\x73\x52\x52\x12\x0e\x1d\x1d\x1d\ \xea\xae\x9f\x83\xcb\xd0\x84\x5e\x72\x72\x32\xc3\x75\xa3\xb5\x75\ \xc3\xc6\x5f\x07\xf9\xbd\x79\x4d\x7f\x08\xc5\xa0\x78\xbd\xa5\x85\ \x26\x1c\x70\xc3\xf9\xfb\xc1\xd0\x84\xde\xfa\xf5\xeb\x87\x0f\x1f\ \x5e\x56\x56\x86\x1d\xb3\x26\x2e\x78\xf1\x9c\x66\xfd\x21\x14\x83\ \x22\x95\x34\xe1\x80\xdb\xe0\x91\x54\x93\xa1\x09\xbd\x75\xeb\xd6\ \xd9\xda\xda\x56\x55\x55\x31\x09\xd9\xd6\xe3\xd6\x26\x68\x02\xdc\ \x9b\x8a\x72\x50\x0c\x8a\x54\xd2\x84\x03\x6e\x38\x0f\x12\x49\x69\ \x90\x96\x96\x84\x84\x04\x3b\x3b\x3b\xd0\x3f\x7e\xfc\xb8\xb5\xb5\ \x95\x45\x63\x4d\xdc\x07\x32\xc3\x83\x28\x06\x45\x2a\x69\xc2\x01\ \x37\x9c\xe9\xa2\x90\x54\x71\x51\x55\x67\x0c\x4d\x46\x2f\x3e\x3e\ \x7e\xe4\xc8\x91\xe0\x7e\xf4\xe8\xd1\xcd\x9b\x37\x6f\xdd\xba\xc5\ \x93\x76\xec\xfb\xf1\x9a\x80\x39\x8d\xba\x1c\x14\x83\x22\x95\x34\ \xe1\x80\x1b\xce\x74\xa1\xa3\xea\x23\x29\xa9\x3e\x7a\x71\x71\x71\ \xa3\x46\x8d\x02\xf1\xc3\x87\x0f\xaf\x5f\xbf\x7e\xfb\xf6\xed\x1b\ \x37\x6e\x74\x76\x3e\x8d\x59\xb3\xf6\xdd\x00\xf7\x86\xa2\x83\x28\ \x06\x45\x2a\x69\xc2\x01\x37\x9c\xe9\x42\x47\xba\xab\x3b\x92\x92\ \x5a\xf4\xba\xe4\x07\xe8\xd8\xd8\xd8\xd1\xa3\x47\x83\xb5\xad\xad\ \xad\xa5\xa5\x45\x0c\x11\x04\x9e\x3c\x79\x1c\x13\x1b\x07\xb1\x2b\ \xba\x6c\xd4\xc0\x30\x36\x8e\x4a\x9a\xc4\x20\xe3\x4c\x17\x3a\xd2\ \x9d\x20\x84\x12\xfb\xc7\xc0\x49\x4a\x2a\xd2\x8b\x8e\x8e\xb6\xb7\ \xb7\x07\xe5\x83\x07\x0f\xae\x5e\xbd\xca\xf8\xb4\xca\x72\xed\xda\ \xb5\x8e\xf6\xf6\xe8\x98\xf7\x0d\x0c\x0b\xb3\x51\x0c\x8a\x54\xd2\ \x24\x7c\x70\xa6\x0b\x1d\xe9\x4e\x10\x42\xa9\x45\x52\x52\x8b\x5e\ \x54\x54\xd4\x98\x31\x63\x2a\x2b\x2b\xef\xdf\xbf\xdf\xd4\xd4\xc4\ \x98\x80\xbe\x45\x16\x8a\x4c\xc2\x55\xd1\xb1\x10\xbb\x5c\x98\x85\ \x62\x50\xa4\x52\x78\x2a\xce\x14\xe9\x4e\x10\x42\x11\x50\x15\x92\ \x56\xae\x34\xca\x4a\x20\xe8\x45\x44\x44\x38\x38\x38\x80\xec\xce\ \x9d\x3b\x57\xae\x5c\x61\x34\x9a\x65\xb9\x2a\x4b\x43\x43\x43\x5b\ \xdb\x7f\xa2\x56\xc7\x40\xac\xbe\xf0\x00\x8a\x41\x91\x4a\x9a\x84\ \x8f\xe2\x4f\x77\x82\x10\x8a\x80\x84\x55\x48\x5a\xbd\xf0\x58\xc3\ \xd0\x84\x9e\x56\xab\x1d\x3b\x76\x6c\x45\x45\x05\xb7\x53\x7d\x7d\ \x3d\xe3\xd0\x28\x4b\xd3\x73\xb9\x7c\xf9\xf2\xd7\x5f\x3f\x58\xb9\ \x2a\x3a\x28\x60\xce\xa5\x82\x2c\x14\x83\x22\x95\x34\x29\x6e\x4a\ \x2f\x82\x10\x8a\x80\x84\x25\xf8\x00\x49\x4a\x03\x9c\x9c\x21\x21\ \x21\x8e\x8e\x8e\xa0\xe1\x46\xaa\xab\xab\x63\x4c\xae\xc8\xd2\x60\ \x24\x97\x2e\x5d\xfa\xea\xab\x7f\x47\x46\xad\x0e\xf2\x77\xaf\xcb\ \x3f\x80\x62\x50\xa4\x92\x26\x63\x4f\xa5\x2f\xa1\x08\x48\x58\x82\ \x93\x62\x20\xd3\x55\x1a\x08\xbd\xe0\xe0\x60\x10\x94\x97\x97\x73\ \x0b\xd5\xd6\xd6\x72\xed\x41\x5c\xdf\x43\x68\xba\x77\xf7\x6e\x44\ \xe4\xaa\xa0\x00\xf7\x8b\xf9\xfb\x51\x0c\x8a\x54\x8a\x5e\x26\x22\ \x82\xd0\x44\x58\x82\x93\x82\x44\x56\x93\xb4\x60\x96\x0a\xb7\x6e\ \x59\x0c\xef\x7b\x41\x41\xe3\xc7\x8f\x07\x01\xf7\x4f\x4d\x4d\x0d\ \x57\xfd\xe2\xc5\x8b\x75\xbd\x09\xad\x77\x6e\xdf\x0e\x8f\x88\x62\ \x72\xd6\xe6\x1f\x40\x31\x28\x52\x29\x3a\xf6\x14\x11\x8a\x56\x82\ \x93\x82\x44\xa4\x23\xa9\xc8\x6e\xd1\x74\x35\x97\xa1\x09\x3d\xce\ \x1a\x26\x4c\x98\xc0\x73\x33\x77\x4e\x75\x75\x35\xd7\xfb\x82\x2c\ \xb5\xbd\x09\x0e\xdc\x57\xda\xf0\x95\x81\xfe\xee\x17\xf2\xf6\xa3\ \x18\x14\xa9\x14\x7d\x7b\x8a\x12\x0d\x07\x52\x90\x88\x74\x24\xb5\ \x82\xa4\x64\xfe\xe4\x54\xe8\x2d\x5d\xba\x74\xe2\xc4\x89\xa5\xa5\ \xa5\xac\x13\x2c\x7a\x5c\xe9\xf3\xb2\xd4\xbc\x40\xf0\x61\x6b\x0c\ \xd3\x46\x42\xac\x26\x37\x13\xc5\xa0\x48\xa5\xe8\xde\xab\x28\x31\ \xf1\x21\x11\xe9\x48\x4a\x6a\x63\x24\xaa\x31\x34\x0e\xba\x64\xc9\ \x92\x49\x93\x26\x95\x94\x94\x30\x8b\xb8\xb4\x6c\xd0\x95\xfd\x09\ \x6e\x6c\x78\xa1\x61\x11\xc6\x0c\x29\x52\x49\x53\xbf\xdd\x49\x81\ \x1b\xe9\x48\x4a\x6a\x00\x58\x44\xb2\x9f\x59\xaa\x4c\x4e\x71\x8b\ \xfb\xfb\xfb\x4f\x9e\x3c\xb9\xb8\xb8\x98\xf9\x43\x3e\xd6\x3a\x6e\ \x92\x8a\xfe\x04\x4f\x36\xbc\x90\xd0\x70\x88\x9d\xcf\xcd\x3c\x2f\ \x33\xa4\x48\xa5\x08\xd2\xb7\x88\x14\x78\x92\x94\xd4\x00\x00\x86\ \x58\xf0\xcc\x99\xae\x7d\x31\x34\xa6\x87\xe1\xe7\xe7\x37\x65\xca\ \x14\x72\x30\x79\xf4\x7a\x3d\xd7\x95\x99\x53\x66\x86\xe0\xcc\x66\ \xf7\x5e\x88\x36\x30\xc0\xbd\x3a\x37\x03\xc5\xa0\x48\xa5\x88\xd3\ \xaf\x88\x44\x38\x93\x1a\x00\xc0\x00\x8c\x40\xd8\x2f\xc9\x17\x32\ \x34\xa6\x87\xf8\xfa\xfa\x72\x98\x59\x54\x54\xc4\xb4\xd1\xe9\x74\ \xa4\x21\x5f\xb1\x79\x52\x58\x58\xc8\x8d\xa4\x09\x0e\x5d\xe1\x3f\ \xa7\xea\x6c\x26\x8a\x41\x91\x4a\x9a\xcc\x0c\x22\xd2\x91\x1a\x00\ \xc0\x00\x0c\x90\x04\xb6\xbe\x49\xf6\xce\x50\xa1\x27\x7e\xbd\xbd\ \xbd\xa7\x4f\x9f\x4e\x5c\x66\x0b\x98\x48\x86\xad\x37\x5b\x0a\x0a\ \x0a\xd8\xdf\x64\x86\xee\x95\x67\x32\x50\x0c\x8a\x54\xd2\x64\x7e\ \x1c\x91\x14\x00\xc0\xc0\x06\x12\xc0\x14\x90\x2f\x22\x29\xf5\xbd\ \xc0\xf0\x9e\xc6\xa5\x72\x72\x72\xe2\xe2\x31\x55\xce\x9d\x3b\x87\ \x41\x0e\x9d\x25\x92\x9f\x9f\xcf\x0e\xf7\xae\x26\x44\x66\xb8\x0f\ \xc5\xa0\x48\x25\x4d\x16\x85\x12\xa9\x81\x01\x18\x0c\x80\x01\x4f\ \xbc\x97\x5a\x36\x4b\x95\x31\xe4\x10\x9a\xe3\x30\x57\x57\xd7\x19\ \x33\x66\x10\x0e\xc3\xc5\xc5\xc5\xd5\x42\xa1\x8b\x9b\xdb\x0c\x9b\ \x61\xb6\x11\x1a\xdf\xd2\x2f\xf7\xa2\x18\x14\xa9\xb4\x2e\x1a\xbf\ \x80\x01\x12\x06\xf0\x00\x69\xd6\x18\x1a\x7f\x12\x11\x2b\x27\x1f\ \x0f\xc4\x86\xcb\xa6\x84\x21\xf6\xa8\x1a\xcb\x45\xec\x87\xda\xf0\ \xc8\x65\x8b\x66\x97\xff\x6b\x1f\x8a\x41\xb1\xef\xfd\xb0\x0f\x11\ \x30\x04\x24\xf1\xc8\x21\xbe\x73\x18\x8f\x96\x42\x47\xea\x79\x08\ \x6f\xfc\x1d\x53\x95\xb3\xe7\x6f\xcf\x85\x93\x3e\x0c\xf0\x99\x55\ \xf2\xcf\x8f\x51\x0c\x8a\xe2\x2e\x50\xe5\xc3\x81\xf1\x87\x57\x13\ \xcc\x52\x4f\x57\xd5\x3f\x1e\x28\x0c\x03\x17\xbb\xd7\x17\x1f\x42\ \x31\xd4\x62\xd8\xeb\xc3\xc9\xff\x8d\xe1\x37\xcf\x45\x70\x3b\x7c\ \xf8\xb0\x87\x87\x87\xb7\x8f\x4f\x60\xe0\x0a\xe6\xf7\xbc\xf9\x0b\ \xe7\x2f\xf4\x59\xe8\xed\xbb\x60\xa1\xcf\x02\x6f\x0c\x6b\x74\xfe\ \x02\xef\xb7\xfd\xfc\x9d\x9c\x5d\x5f\x1e\x67\xff\xcb\x9f\xff\x14\ \xc5\xa0\x48\x25\x4d\xd6\xc5\x04\xcc\x02\x19\x18\xf0\x00\x09\x54\ \x00\x03\x1b\xf0\x50\x10\x3c\xc5\x8c\x35\x9d\xa5\x8c\xf2\x91\x23\ \x47\xa6\x4d\x9b\xce\x1d\xcc\xc7\xb0\xfd\xdb\xd7\xee\xd8\x10\xfe\ \xbb\xc4\xf7\x52\x53\x42\xb7\xa5\x84\xa5\x26\x87\xa6\x26\x87\x6d\ \xb3\x54\x53\xc2\xb6\x26\x85\xa4\xff\x66\xf5\xee\xcd\x6b\x76\xfc\ \x2a\x0a\xc5\xa0\x48\x25\x4d\x96\x46\x4b\x35\xa8\x0c\x26\x25\x14\ \x60\xc0\x03\x24\x50\x01\x0c\x6c\xc0\x77\x3d\xff\xa8\xfc\xc2\x95\ \x06\x83\xcf\x77\xa9\xdb\xb6\x39\x8e\x73\x08\x5a\xe4\x7e\xe1\x4c\ \xc6\x83\xba\x3f\x37\xe9\x0e\x36\x14\x66\x37\xeb\x73\x9a\xf4\x86\ \x23\x5d\x0c\xf3\x55\xf8\x37\xea\xb2\x1b\x0b\xb3\x9a\xb1\x8b\x0e\ \x62\x50\x54\x9a\x2c\x0a\x05\x00\x0c\xc0\x00\x09\x60\xc0\x03\x24\ \x50\x01\x0c\x6c\x63\x16\xfd\xac\x34\xd8\x9c\x9a\xf8\xbe\xb5\x68\ \x98\x24\x25\x44\x05\xd4\x9e\xcd\xa8\xcb\xcb\xd4\x1f\x4d\x2b\x39\ \x9e\x5e\x76\x72\x77\xe9\x89\x5d\x68\xd9\x89\xdd\x43\xa6\xdf\x66\ \x3c\xb9\x1b\x00\xc0\x00\x0c\x90\x00\x06\x3c\x40\x02\x55\xcc\xcc\ \xbe\x56\x1a\x85\xa4\x72\xbc\x2b\x8a\xa7\x4e\xfd\xc3\xc9\xe5\xc7\ \x53\x26\x8c\xd9\xbf\x23\xa1\xb9\xf8\xd0\xf9\xd3\x7b\x8b\x8f\xa7\ \x97\x9f\xda\x83\x92\x4f\x18\x83\xad\x4a\x22\x52\x03\x00\x18\x80\ \x01\x12\xc0\x80\x27\xf8\x28\x87\xc8\x26\x2b\x65\x2f\x3b\xbe\x52\ \xc3\x25\x11\xcb\x20\x87\xd3\xbf\xdf\xba\x6d\xd8\x4b\xb6\x73\xdf\ \x70\x3b\xfd\x79\x6a\x63\x51\x4e\xe9\xc9\x5d\xc5\xf2\x60\x96\x0d\ \xf2\x60\xca\xc1\x0d\x43\x47\x3a\x92\x92\x1a\x00\xc0\x00\x0c\x90\ \x00\x26\x16\xe4\x3e\xfe\xa9\xd2\xcf\x93\xb7\x98\xb4\xe2\xde\xe5\ \xfc\x7a\xd9\xf2\x20\x1b\x49\x8a\x0d\x7b\xab\xea\xf4\xc7\x17\xf3\ \x32\x75\x47\xd3\xf4\xc7\xd3\x4b\x4e\x90\x7e\x77\xf1\x89\x5d\x18\ \x2a\x2a\x01\x09\x8b\x41\x0a\x12\x91\x8e\xa4\xa4\x06\x00\x30\x00\ \x23\xd6\x45\x31\x2d\x2d\x7e\xf2\xee\xf5\xe0\x50\xcc\x81\xdc\xdc\ \xbc\x19\x6e\xaf\x8c\x1f\x37\x2a\x7d\x73\x6c\x7d\x61\x76\xc5\x97\ \x7f\x2c\xf8\xe2\x23\x40\x00\x88\x5f\xfd\xf1\x5d\x06\x64\x03\x53\ \x82\x28\x01\x09\x4e\x0a\x12\x91\x8e\xa4\xa4\x06\x80\x72\x1a\x66\ \xce\x11\xa3\x64\xe9\x73\x83\xe1\x86\xee\xea\x4a\x4b\xdf\x65\x37\ \x62\xe4\xac\x99\xae\x47\x3f\xd9\x4c\xfa\xa2\x63\x06\x28\xfc\x16\ \x1d\x4f\xd3\x1d\x4b\xd3\x71\xd5\xad\xd6\x63\x69\x04\x51\x02\x12\ \x9c\x14\x24\x22\x1d\x49\xc5\xdf\x8b\x2c\x7a\xde\xb2\xec\x24\xca\ \x78\xd2\xde\xbb\x77\x97\xf7\x74\x76\x21\xed\x0a\xaf\xe2\x93\x7b\ \xce\x9f\xcd\xc8\xff\xfb\xce\x73\x5f\x7c\xa4\x3b\x96\x5e\x78\x34\ \x0d\xc5\xb0\x48\x95\x5e\x04\x21\x14\x01\x09\x4b\x70\x52\x90\x88\ \x74\x66\x4e\xcb\x01\x9d\x79\x1b\x7f\x27\x14\x93\x96\xf7\xd2\xd7\ \x66\xfe\xc2\xc1\xde\x6e\xeb\x86\x48\x0e\xd1\x4a\x4f\xed\xc9\xfd\ \xeb\x1f\xc0\x87\xe6\xfd\x6d\xa7\x30\xcc\x51\xc5\x99\xee\x04\x21\ \x14\x01\x09\x4b\x70\x52\x28\xcb\xbb\x15\x27\xdf\x16\x9f\xea\xf7\ \x5c\x69\x29\xee\xcb\xc8\x1c\x6d\xef\xf0\xaa\xdb\xb4\xcf\x33\x37\ \x5e\x38\x77\xa0\x42\x7e\x09\xac\x3a\x9b\x51\x69\xb6\x1a\x9c\xcf\ \xec\xa3\x23\xdd\x09\x42\x28\x02\x12\x56\x5c\xc7\x81\xfc\xaf\xcf\ \xfa\x2f\x33\xa2\x97\x32\x69\xf9\x30\xb6\x6a\x75\x0c\x33\x6a\xf9\ \xa2\xd9\xdb\x37\x46\x6e\x4a\x0a\xd9\x9c\x1c\xba\x25\x39\xcc\x4c\ \xc5\x99\x2e\x74\xa4\x3b\x41\x08\x45\x40\xe3\x69\x69\xf5\xb7\x6a\ \x49\x95\x97\x17\xfe\xe8\x23\x1e\x83\x38\x2f\xf2\xf1\x79\x7b\xee\ \x5c\x4f\x4f\x4f\x2f\x0f\x8f\x79\x1e\x1e\x5e\x66\xeb\x3c\xba\xd0\ \x91\xee\xe2\xbf\x1b\xf2\xc2\xd6\x39\xf0\xd7\x37\x15\xbe\xe3\x9b\ \x7c\x8a\x1a\x20\x20\x11\x41\xc5\x3f\x10\x49\x2a\xbe\x98\x99\xbc\ \x89\x76\x5b\x28\xaa\xbf\x79\x0f\xc5\x7f\x13\xbf\x0b\xf2\x3f\x84\ \xe7\xbe\xe1\x71\xc1\x1b\xd4\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x07\ \x09\x85\x57\x87\ \x00\x63\ \x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x0c\x98\x89\x87\ \x00\x68\ \x00\x6f\x00\x75\x00\x73\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x05\x87\x5a\x67\ \x00\x62\ \x00\x6f\x00\x61\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\ \x00\x00\x00\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x18\x77\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x26\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x97\ " 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() PyQt5_gpl-5.10.1/examples/draganddrop/draggableicons/images/0000755000076500000240000000000013245231431024013 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/draganddrop/draggableicons/images/boat.png0000644000076500000240000000532413245231431025452 0ustar philstaff00000000000000‰PNG  IHDRK6ó¢ ›IDAThÞÝš PT×Ç/Fð(ñ­åÑVfÒÄN3GH4> K€Dƒ„Gë´U[ѱÔ©Ähf’ÎôŸM­²¼ADDy(¢Ž¯Æ”qHíoï‰w¶ Âîra’|óÍÎwÎùÎ÷ýÿ÷œ{νç®ô,ÿýáŠ44iž={Ưr)…!*8 aÕÕÕÕÝÝ­üvvvb_‚Aa84³ôEƒ&˜wÊ"تŽg(‚&GŽ~}Öó¼xxzyzÎ Öj~öYCs3£)˜+l^I`CÁðéÓ§ OùpÛ3³vÄg¦®ñ™ÿú$Iú™ƒ­íO^{Uõé§Í°íîVÆY-TCqŠ1\·>yeW[ý_Újÿ³L#ÙÕ;»0}ϨqáÒ0'I’ll¦Nº|ùòœœœöövµîÌÁCYŒáúÄÿìkúœæ‚¡a~ˤ—ò&þhç‡i˜§$9 îâì¼xñâ-[¶äææ>yòDµY:›„`¤ }gnKÉ'ÍºìØˆ€’ôŠ£ã4—EÍö½{K««;w ÆŠ* *=±r`lÚô[¦aüÊ%Mº¬F]ÖQK(†…k ”Œ–Yã-ä;=K••PÐKLLœ:uŠ·¯_dàü«EÙhD —¯¯Ÿ«‹sRRꮟƒËЄ^rr2Ãu£µuÃÆ_ù½yMÅ x½¥…&pÃùûÁЄÞúõë‡^VV†³&.xñœfý!ƒ"•4á€Ûà‘T“¡ ½uëÖÙÚÚVUU1 ÙÖãÖ&hÜ›ŠrP ŠTÒ„n8Ii––„„;;;Ð?~ü¸µµ•EcMÜ2Ã(E*iÂ7œé¢TqQUg MF/>>~äÈ‘à~ôèÑÍ›7oݺœvìûñš€9ºƒ"•4á€Ît¡£ê#)©>zqqq£Fñǯ_¿~ûöí7ntv>Y³öÝ÷†¢ƒ(E*iÂ7œéBGº«;’’ZôºäèØØØÑ£Gƒµ­­­¥¥E žÖ:n’ŠþO6¼ÐpˆÏÍ ð™UòÏQ Šâ.PåÃñ‡WÌROWÕ?( »×B1ÔbØëÃÉÿá7ÏEp;|ø°‡‡‡·O`à æ÷¼ù ç/ôYèí»`¡Ïo ktþï·ýüœ]_gÿËŸÿÅ H%MÖÅÌð TðP<ÅŒ5¥Œò‘#G¦M›ÎÌǰýÛ×îØþ»Ä÷RSB·¥„¥&‡¦&‡m³TS¶&…¤ÿfõîÍkvü* Å H%M–FK5¨ &%`À$P lÀw=ÿ¨ü•ƒÏw©Û¶9ŽsZä~áLƃº?7é6f7ësšô†#] óUø7ê² ³š±‹bPTš,  À `À$P lcý¬4Øœšø¾µh˜$%DԞͨËËÔM+9ž^vrwé‰]hÙ‰ÝC¦ßf<¹À <@UÌ̾V…¤r¼+ЧNýÃÉåÇS&ŒÙ¿#¡¹øÐùÓ{‹§—ŸÚƒ’Oƒ­J"R€À€'ø(‡È&+e/;¾RÃ%Ë ‡Ó¿ßºmØK¶sßp;ýyjcQNéÉ]Åò`– ò`ÊÁ CG:’’À &ä>þ©ÒÏ“·˜´âÞåüzÙò IŠ {«êôÇó2uGÓôÇÓKN~wñ‰]** ‹A ‘ޤ¤0#ÖE1--~òîõàPÌÜܼn¯Œ7*}sl}avÅ—,øâ#@ˆ_ýñ]dS‚( N ‘ޤ¤€rfΣdésƒá†îêJKße7b䬙®G?ÙLú¢c(üOÓKÓqÕ­ÖciQœ$"IÅß‹,zÞ²ì$ÊxÒÞ»w—÷tv!í ¯â“{ΟÍÈÿûÎs_|¤;–^x4 ŰH•^! KpRˆtfNËy'“–÷Ò×fþÂÁÞnë†HÑJOíÉýëÀ‡æým§0ÌQÅ™î! KpR(Ë»'ߟê÷\i)îËÈmïðªÛ´Ï37^8w B~ ¬:›Qi¶œÏì£#Ý B(V\Çü¯Ïú/3¢—2iù0¶ju 3jù¢ÙÛ7FnJ Ùœº%9ÌLÅ™.t¤;AE@ãiiõ·jI•—þè#ƒ8/òñy{î\OOO/y^fë<ºÐ‘îâ¿òÂÖ9ð×7¾ã›|Š AÅ?I*¾˜™¼‰v[(ª¿yÅ¿ ò?„ç¾áqÁÔIEND®B`‚PyQt5_gpl-5.10.1/examples/draganddrop/draggableicons/images/car.png0000644000076500000240000000562313245231431025274 0ustar philstaff00000000000000‰PNG  IHDRK6ó¢ ZIDATx^Ü“A E! ÄZy÷¿±ú‹B6ÿ¾Y qh»3Öaï]‰ƒŸä'øÂ•žD½w±±»óPV‰ƒŸä'øÂ•žD½w±/3 Ëz’ˆÓ+v•ˆKøßûøˆîŒèNÿ«;1e•8øI^q‚/LPéIäÑ{Ñ/3¼—MLTWÇË¼Ç Ì ˜ ÅQ«&,tÑÆš&)0jbcÒÄÆ…M›k“nªMdÇ‚´M£±]¸±‹îœÆúA PHM hÄ&¶ QD‚0ߟ@}'žyÌ … Þܼ9÷ÜsïùŸ{îÜJ½ü ÃÞÒé4©Ÿ% G…sg•É0K2??_%—€g‡ôJ*Mæéô š=3_÷o÷=: ÃH&““““E7¨×ãÉs:#©³.ÃÈŸ› †BÐöB¬[·®©©‰0Ñáph.¬øÆ§¡u5YÎr€£ººzbbâСC‘HŽ)_M¯×û˵k‰lÝJ\î<~üWqñgdzDmb~¿¿¬¬¬»»Û4M8x©×wjÚpð R©TEEÅöíÛºtÊA|yöì§›7Ï:•̘ÇôôéÓª÷ߟ{ø"bû¹–h”””Dc±t*¥¡FæŸpx£Û]ätŠ‘ÙgØ‚ò$YP¸å,³0@°ê>? ¾åñmA…0U ;§§§‰!àËöIS„6mú½«kýúõlˆ j¡©Լɉ‰UU ©TÓÁƒÑdRÞF 0›¦^M}KËOµµ•6p¯9³äç ,™äü<ùöy{;£â‘K å-£¥†2;H¼ë÷ÿ\_¿ÑëM]ôZ XWÄítžíîö½Û·ß,-U#3µTΞ˜·c×._*õm}} KÍÎr®“³³Ië+=žJq ßÞÑ“ È0A_H0E4èóºJ¦r:ÐR 9¨C)ªíLÆP lÀc†HYÊÔR©Â£££ïUW½oêêÆƒA šåÜ%"¶ú¶üû@5Ø€Ç ‘˜Éa¯BŸœ8ñÎÔÔ÷>ßx(d0ÆÂ—ÛtÃåí¼|õØ^`0„¡”sú´…à [¶pö2Ø ¤)‘ÛŠ‹JæL‰üÒbt|!Œ…ÿ- "ši|Pg#ɤ®ç(aÏ@(mšÌ:%]8¹™'³ÊPÉ ­ ºT‘£FŒâb-N™j VÛ å3V…™¡®¢‹ð¢¾×EöY]¢Ú•¯;Ûܤ0hJ«˜°æmÚmUÓìþ¦ÎÚ¼ÈÓ$ë…½ú–õ^G…î‹j,UØÄ¶e½¼>ÁX%:׸\¥O!Ï/Óô:м?¡G÷¥˜' Ù¶À4Q"Ô¡èçŽ(Sœÿÿòf<§Î“N“Ç€•ÐE.×­áá¯_oðû÷]½ê»|ùëÎÎGáðZÞ¥",«VÑDµPlû(<ÓÙ‰"Ô¡ôØmÃÃÀ0-HêwÍy ‘}Åb|&I`?„¬áýÿXkë÷ïo8r¤Ùï¿ØÞ~æÒ¥±;ö·¶žðº\äñ”«UÓ^“‘ã­S¶³DºM“¿Ž§óܽ{´µ¡E¨C)ª Àä[Àºì TW&† RéôÐÔT±õ°ޏÄa•ÙZZfÊËÿ¼xþü‡û÷×TT;|øæ•+¿Þ¼ùãøøwwï: chfÆàƒ)¥K3O+!]L§iYXøÛèh(¾00páÉ6GŠP‡RT€Rž\¼cQÀc†èëßño»f×Åñ&ÉŒ‰¾)o1‘8)‚»0¦xiÁ¤ BèÔ¬ªÎ`d2u“¬UJ@\d‚­+7ÚEÇ–¤BÄDM¨P’!B‰ˆi ©I'íôÇrsyêP]Mz¸‹óî=çþçÝ{߃s/š﾿¯ïÆêêÕ¹¹ƒ¥¥I2·n ¯÷›©©µŠŠ»““ËË)¨H„••ÏNœ˜ï_Xø¨¤ä\*5ùè‘Q\Œ»LŠþó ¹uÉ\Ò+-.þ1>“LÖß=~üÃø8à„£N#Ñ! ÈôNM}àóATÄÚ'‘¥„¼;å–jÏýÙYoII_MÍJ$òKcã|8ükSÓÃpxïηR)©9jìTèÿ:;iš—…p²®.ÿÖÚú"]‹F_Ð"‘ÕÖÖL<~®ºš†Â#ý2„‚1.8âÈ)ÓlŽÅ€œº@€þŸS©=EE÷šš UCò¤ ÒÑÎ-rÂäÐ;ó6ɵ¶¶'ÍÍë±Øà±cåÁ >î3 ÁBy0?oz½/ÛÚ®Ø6s~«¾>ÛÑ‘M$².ÐP²çÏg/^ì8|˜†Â£¢aŒ ޏ€À ¸ûäƒÁàuÛ†$¡*éAJ’ˆØïÐU’÷ff ð ã¿ÿsË zôx IÛï‡0´õôD*ïreee`` š“D"AÕT|q+s¨Û¨©›˜˜ D$4$œÊm£9Ìÿ¦‚XË6pˆÚ{Û{SAÖ¼›ºž^>7ò=?ÔÙ'"ŸYHè1¶ë>û“®D†ò??|n›´üs¯ ¤ðïþ>,üÛ—ÿûkÀ7±ŒIEND®B`‚PyQt5_gpl-5.10.1/examples/draganddrop/draggableicons/images/house.png0000644000076500000240000000633413245231431025652 0ustar philstaff00000000000000‰PNG  IHDRK6ó¢ £IDATx^ÝZÛ“UÅÕïî}ΙÌ07D./Æ8XÊؤ,5˜ eåB´´ eâÃ÷–¿ yÈ¢F Cˆ¦L‚1&±," ŠÒ’Tåt¸Iødà8ÃÜÁt³ÔÒÙI¯Ô3“9wîìCì‚…#Ê@ OIE|m%ˆÿ¨´ró«¥4ôÀh¢¦¦¦=Ï<Ùݽ@âD(áªSfÖðþuñâºõŸi¼ü½•c“¡”d.„q8hŒ ÛÑ`T²MØSn:§!»ûµ“0Ñ;ÇŽ\·h‘Y=Â’–¢ÿHÛUÁïƒUkÖ¯kÿõŸ'E²#:–¡Åf#dôÞV†ÐhÉ•J©~xàØ•¦}ãºE×>ÈéÍ>Ñ”MÐ\†a6›½øÁ€××>ùÜãùüxdŒrÚE`HŠ,CB`yXª¤×¶»åY‹R>ÿøÀW|°wu?€\tý À‚dE ËÌ2D‚¥÷Á…ó«Ö®_ß^Ø÷íMNBµRd7Ò6¡ä8Œ‘Yñj=´Ò²F«D¾´D¶47|}çÁ7†êNãú³$g”¡˜91¼ ç^ÿíá/w ä‡' ¦/‚Ñs[ I4åoX´Và< ÐV*?©d~xrߎoüì`ïšþÇß¼a1ƒœÞ,Kn£"vWH™àr^8w®wmÿÆŽhò£%Ø€´Ñ°-‘¦M!Cª"0 œ(üYˆÌÅ^ÔÖæÆíO¼ógϼNý‹‡7^Fx4+0íw¡‚³¦ô˜ø³®Äöe;d¡;Y#„©÷>¼ñ›»ß¼¦@.^²„AÎ"Z8xçΞåü\‡Ùó Á“ª,^ÅP¬Á¢”fJKpÀe"Žn‹•õÙE%‚œ|öÁí9Ô»¶Ôµ{ÉRßñT‹Ð—ÞÙ3¯ï®N¹{û&€'„bxÌ4ü8úWLÉ-©£g„dÆÞrHj¹gû¦‡÷ê] .Yš9C<¤äÙÁA€wwgðÌ×6\C×â;®¤Ê¥Œ‡b:TMUÉÓå<'k«Ô‰“±ê dÛœÆG~uø•c¹´§‡f›œ*úðß¿emß=™§Ø042TI<šÔw LzP¨YšGÖWÉ&H´í­ÙëÒKÞ÷Àˆ]€–~þÀ†GŸ?¼jííï?ÚÓ³ÌIrºxÈðÞ¤÷…ÎÜSÛî¼2:)¤õœ2”¿ùLk©!ËÐàÃm÷¤d¯Ê ’Òq'I#Úš¾õÂëü°x@.[îK’}iZzï¿wú–u}›;êŸÜzçÐð¼'x,;†XÆœŒo܆@$äÌ•VÇÊ/æ÷œ”³É¡áɧ¶nØñÛ×K’öâ‘—.üî[o®X¹’€0Bwb‚à½Ó§në»cÛ¦]_Ú04:NÒÓFCk¥RZJ²HÆmÁW2B"é&•$oW éƒAV,Ö%„$IHíÍMýþð —Æß>zdùŠ•§ìi¼¿Ÿ<Ù·q 7o¿ñ¦?ýí”´ªœÍf‚ W(j)Ùâ¢Ï°A̽dUæ³÷ñý¤íO–zzï%obër*Ž‹aYIŠí7öüóÿß^µzÝÑC¯}¶·@)¥$Ó^>Ÿß²eËààà¶#Ki-5 åGG/-^TÅZTü¬Ñ°£.®;-嘇•TÇvk)É2÷Æ2¥ä™@¿øqsóÂööÖ(Š $TÎk¬¿tåjOOÏþýû[[[ki¡X°0uuÚ‹NÐa÷'?}ö¿{è•ý«>¼\‚Êk"¶*mRyL†à²ªû%h¬¬Ã†‘Â8uwo9qßÖ=ßý΃t,Æq?X @P—Ë%ö¥¹l–†‡ csK¯e)Ër•ÖÐ78 Ñ_Ô'u<EÑAjâäçíZ¿Ý½+£ž6Œ ‡ôÔ%*®×h,“{[Õ ˜šs¥L¦fm}l4%¡ÆÈK‰K&ÐÐd2Bk·ðÜ®¥íLò¶4zšl2c.0T¶H'âJBv ôâj>¾gÛ`7ärJkRO/¸ÈdÔ¥K£»~еesËðH¬u—‰hRn‡‚¤áÆÜž™©Šñio„™¦¼re¯B;·b!2bî«޹£O³—KÞUe[[ë]wÝ?4ôV ÚµŽ;1(çt¬©",W´<`"N¸¯Äôio„%:5ÌTBP¥dggÛ‚ÖùZëô¥-9ª††:€Rîn­Õh(d”·é—¼{C¼tÆÖÆ1Ðã1­"23-ó±CZs^OÌð oLÏ$B[…‡YÎXRR fäZÛûrÁW¥dye´¹¬š?W)…¶çtµÆvˆØ—’¯@ÚTê30âpr•À¾”±kÑ2/øóËíxâBwW}ñ £¡ÂSJCm}à7ËÛZ3ÅXHÖRjUÓaÀƒíÜ«öSÒu¸o”‹nínñÿú®ŽTYŽÒ¿sÌfÔ•‘ÂWv)FÔKÓêBO]„Ä£Íäiˆ®2q_JÃÙ@-hÊé³"ø£Ð(¿»áÑjêK«;Ë“ßR)å¿aB ã’†*:¯1Ü™bQ‡aɽ{pk„ZD!Z±M,CšHLëK«÷4ôÓ¾BŽ%²+\{]â“ß0JÅ["£pó Êf¬1—Hû$§c«„gÆ.niMŒ™=Mu2DL & ¸Â‹¢ªÄí±ƒ¥àÍ …ˆ¬)”`¹J`_ÊÄ(ÀV@×6úZJkL 6²ð±Š·Z†õÚÒ(Û3rOêÝÐÜbéM;ÖÒšzƒZŠÊfíPK¡¥’"Àã<§ú3m  £§ÕNëÐÊȈ(ÿéü V Vrr¦–™ZG|Þ—’¹k@•½wó—ês%#$ebçVW—=räø}·7ëY÷7–„$–ÙïH5>m{¬¤"ɶ¦vXZNmܽvêæÆàGß_˜ÏŸ„ÞÈÃ÷Ï[ûWßdåÔ ‘CÁM1ßy³zô † ¨½7š&—¾”š;=3ZŠ,3µEH&¡mŒ%™‘Â*#ê¥hßÌ·9’,ð;-%ŽSž«-÷X´æÙ¹»¨*V)cÇîä÷^¬ 7Lû`WX+¨ÂÍýˆä ab›5‘ŽF'O'í45]çó_ I÷ÒàðhQ‘õ¥è Î{;Kšâ¯kÚˆ¹ÁÛ'G/È}Çÿq­)ÏvÜå äµBtm¼ðò_.´Ì "Ü…S÷ùÍ9` ›½§ño–V,]ÔÔuÛ®Wçº 5ÖSþJËFmÿ›¨Ôlj¿Î²ëV±³[d.°˜òa762+oZ½þÅwŒ÷©T™±¦®.`Œè)<ÍÌß—2‘þ”ˆÿÂ÷¥©÷LTó}iUß&Rÿ†‚ètqÆ?妻§h&*èt•ÿíðTÓýïÉþoçøÃXt:?IEND®B`‚PyQt5_gpl-5.10.1/examples/draganddrop/draggabletext/0000755000076500000240000000000013245231431022417 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/draganddrop/draggabletext/draggabletext.py0000755000076500000240000001225613245231431025617 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QFile, QIODevice, QMimeData, QPoint, Qt, QTextStream from PyQt5.QtGui import QDrag, QPalette, QPixmap from PyQt5.QtWidgets import QApplication, QFrame, QLabel, QWidget import draggabletext_rc class DragLabel(QLabel): def __init__(self, text, parent): super(DragLabel, self).__init__(text, parent) self.setAutoFillBackground(True) self.setFrameShape(QFrame.Panel) self.setFrameShadow(QFrame.Raised) def mousePressEvent(self, event): hotSpot = event.pos() mimeData = QMimeData() mimeData.setText(self.text()) mimeData.setData('application/x-hotspot', '%d %d' % (hotSpot.x(), hotSpot.y())) pixmap = QPixmap(self.size()) self.render(pixmap) drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) drag.setHotSpot(hotSpot) dropAction = drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) if dropAction == Qt.MoveAction: self.close() self.update() class DragWidget(QWidget): def __init__(self, parent=None): super(DragWidget, self).__init__(parent) dictionaryFile = QFile(':/dictionary/words.txt') dictionaryFile.open(QIODevice.ReadOnly) x = 5 y = 5 for word in QTextStream(dictionaryFile).readAll().split(): wordLabel = DragLabel(word, self) wordLabel.move(x, y) wordLabel.show() x += wordLabel.width() + 2 if x >= 195: x = 5 y += wordLabel.height() + 2 newPalette = self.palette() newPalette.setColor(QPalette.Window, Qt.white) self.setPalette(newPalette) self.setAcceptDrops(True) self.setMinimumSize(400, max(200, y)) self.setWindowTitle("Draggable Text") def dragEnterEvent(self, event): if event.mimeData().hasText(): if event.source() in self.children(): event.setDropAction(Qt.MoveAction) event.accept() else: event.acceptProposedAction() else: event.ignore() def dropEvent(self, event): if event.mimeData().hasText(): mime = event.mimeData() pieces = mime.text().split() position = event.pos() hotSpot = QPoint() hotSpotPos = mime.data('application/x-hotspot').split(' ') if len(hotSpotPos) == 2: hotSpot.setX(hotSpotPos[0].toInt()[0]) hotSpot.setY(hotSpotPos[1].toInt()[0]) for piece in pieces: newLabel = DragLabel(piece, self) newLabel.move(position - hotSpot) newLabel.show() position += QPoint(newLabel.width(), 0) if event.source() in self.children(): event.setDropAction(Qt.MoveAction) event.accept() else: event.acceptProposedAction() else: event.ignore() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = DragWidget() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/draganddrop/draggabletext/draggabletext.qrc0000644000076500000240000000016113245231431025741 0ustar philstaff00000000000000 words.txt PyQt5_gpl-5.10.1/examples/draganddrop/draggabletext/draggabletext_rc.py0000644000076500000240000000370713245231431026301 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sat May 4 16:59:59 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x00\xf7\ \x51\ \x74\x0a\x51\x75\x61\x72\x74\x65\x72\x6c\x79\x0a\x69\x73\x0a\x61\ \x0a\x70\x61\x70\x65\x72\x0a\x62\x61\x73\x65\x64\x0a\x6e\x65\x77\ \x73\x6c\x65\x74\x74\x65\x72\x0a\x65\x78\x63\x6c\x75\x73\x69\x76\ \x65\x6c\x79\x0a\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x0a\x74\x6f\ \x0a\x51\x74\x0a\x63\x75\x73\x74\x6f\x6d\x65\x72\x73\x0a\x45\x76\ \x65\x72\x79\x0a\x71\x75\x61\x72\x74\x65\x72\x0a\x77\x65\x0a\x6d\ \x61\x69\x6c\x0a\x6f\x75\x74\x0a\x61\x6e\x0a\x69\x73\x73\x75\x65\ \x0a\x74\x68\x61\x74\x0a\x77\x65\x0a\x68\x6f\x70\x65\x0a\x77\x69\ \x6c\x6c\x0a\x62\x72\x69\x6e\x67\x0a\x61\x64\x64\x65\x64\x0a\x69\ \x6e\x73\x69\x67\x68\x74\x0a\x61\x6e\x64\x0a\x70\x6c\x65\x61\x73\ \x75\x72\x65\x0a\x74\x6f\x0a\x79\x6f\x75\x72\x0a\x51\x74\x0a\x70\ \x72\x6f\x67\x72\x61\x6d\x6d\x69\x6e\x67\x0a\x77\x69\x74\x68\x0a\ \x68\x69\x67\x68\x0a\x71\x75\x61\x6c\x69\x74\x79\x0a\x74\x65\x63\ \x68\x6e\x69\x63\x61\x6c\x0a\x61\x72\x74\x69\x63\x6c\x65\x73\x0a\ \x77\x72\x69\x74\x74\x65\x6e\x0a\x62\x79\x0a\x51\x74\x0a\x65\x78\ \x70\x65\x72\x74\x73\x0a\ " qt_resource_name = b"\ \x00\x0a\ \x0b\x0b\x17\xd9\ \x00\x64\ \x00\x69\x00\x63\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x61\x00\x72\x00\x79\ \x00\x09\ \x08\xb6\xa7\x34\ \x00\x77\ \x00\x6f\x00\x72\x00\x64\x00\x73\x00\x2e\x00\x74\x00\x78\x00\x74\ " qt_resource_struct = b"\ \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\x1a\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() PyQt5_gpl-5.10.1/examples/draganddrop/draggabletext/words.txt0000644000076500000240000000036713245231431024324 0ustar philstaff00000000000000Qt Quarterly is a paper based newsletter exclusively available to Qt customers Every quarter we mail out an issue that we hope will bring added insight and pleasure to your Qt programming with high quality technical articles written by Qt experts PyQt5_gpl-5.10.1/examples/draganddrop/dropsite.py0000755000076500000240000001501213245231431022007 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import pyqtSignal, QMimeData, Qt from PyQt5.QtGui import QPalette, QPixmap from PyQt5.QtWidgets import (QAbstractItemView, QApplication, QDialogButtonBox, QFrame, QLabel, QPushButton, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget) class DropArea(QLabel): changed = pyqtSignal(QMimeData) def __init__(self, parent = None): super(DropArea, self).__init__(parent) self.setMinimumSize(200, 200) self.setFrameStyle(QFrame.Sunken | QFrame.StyledPanel) self.setAlignment(Qt.AlignCenter) self.setAcceptDrops(True) self.setAutoFillBackground(True) self.clear() def dragEnterEvent(self, event): self.setText("") self.setBackgroundRole(QPalette.Highlight) event.acceptProposedAction() self.changed.emit(event.mimeData()) def dragMoveEvent(self, event): event.acceptProposedAction() def dropEvent(self, event): mimeData = event.mimeData() if mimeData.hasImage(): self.setPixmap(QPixmap(mimeData.imageData())) elif mimeData.hasHtml(): self.setText(mimeData.html()) self.setTextFormat(Qt.RichText) elif mimeData.hasText(): self.setText(mimeData.text()) self.setTextFormat(Qt.PlainText) elif mimeData.hasUrls(): self.setText("\n".join([url.path() for url in mimeData.urls()])) else: self.setText("Cannot display data") self.setBackgroundRole(QPalette.Dark) event.acceptProposedAction() def dragLeaveEvent(self, event): self.clear() event.accept() def clear(self): self.setText("") self.setBackgroundRole(QPalette.Dark) self.changed.emit(None) class DropSiteWindow(QWidget): def __init__(self): super(DropSiteWindow, self).__init__() self.abstractLabel = QLabel( "This example accepts drags from other applications and " "displays the MIME types provided by the drag object.") self.abstractLabel.setWordWrap(True) self.abstractLabel.adjustSize() self.dropArea = DropArea() self.dropArea.changed.connect(self.updateFormatsTable) self.formatsTable = QTableWidget() self.formatsTable.setColumnCount(2) self.formatsTable.setEditTriggers(QAbstractItemView.NoEditTriggers) self.formatsTable.setHorizontalHeaderLabels(["Format", "Content"]) self.formatsTable.horizontalHeader().setStretchLastSection(True) self.clearButton = QPushButton("Clear") self.quitButton = QPushButton("Quit") self.buttonBox = QDialogButtonBox() self.buttonBox.addButton(self.clearButton, QDialogButtonBox.ActionRole) self.buttonBox.addButton(self.quitButton, QDialogButtonBox.RejectRole) self.quitButton.pressed.connect(self.close) self.clearButton.pressed.connect(self.dropArea.clear) mainLayout = QVBoxLayout() mainLayout.addWidget(self.abstractLabel) mainLayout.addWidget(self.dropArea) mainLayout.addWidget(self.formatsTable) mainLayout.addWidget(self.buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Drop Site") self.setMinimumSize(350, 500) def updateFormatsTable(self, mimeData=None): self.formatsTable.setRowCount(0) if mimeData is None: return for format in mimeData.formats(): formatItem = QTableWidgetItem(format) formatItem.setFlags(Qt.ItemIsEnabled) formatItem.setTextAlignment(Qt.AlignTop | Qt.AlignLeft) if format == 'text/plain': text = mimeData.text().strip() elif format == 'text/html': text = mimeData.html().strip() elif format == 'text/uri-list': text = " ".join([url.toString() for url in mimeData.urls()]) else: text = " ".join(["%02X" % ord(datum) for datum in mimeData.data(format)]) row = self.formatsTable.rowCount() self.formatsTable.insertRow(row) self.formatsTable.setItem(row, 0, QTableWidgetItem(format)) self.formatsTable.setItem(row, 1, QTableWidgetItem(text)) self.formatsTable.resizeColumnToContents(0) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = DropSiteWindow() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/draganddrop/fridgemagnets/0000755000076500000240000000000013245231431022421 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/draganddrop/fridgemagnets/fridgemagnets.py0000755000076500000240000001515713245231431025626 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (QByteArray, QDataStream, QFile, QIODevice, QMimeData, QPoint, QRect, QRectF, Qt, QTextStream) from PyQt5.QtGui import (QDrag, QFont, QFontMetrics, QImage, QPainter, QPalette, QPixmap, qRgba) from PyQt5.QtWidgets import QApplication, QLabel, QWidget import fridgemagnets_rc class DragLabel(QLabel): def __init__(self, text, parent): super(DragLabel, self).__init__(parent) metric = QFontMetrics(self.font()) size = metric.size(Qt.TextSingleLine, text) image = QImage(size.width() + 12, size.height() + 12, QImage.Format_ARGB32_Premultiplied) image.fill(qRgba(0, 0, 0, 0)) font = QFont() font.setStyleStrategy(QFont.ForceOutline) painter = QPainter() painter.begin(image) painter.setRenderHint(QPainter.Antialiasing) painter.setBrush(Qt.white) painter.drawRoundedRect( QRectF(0.5, 0.5, image.width()-1, image.height()-1), 25, 25, Qt.RelativeSize) painter.setFont(font) painter.setBrush(Qt.black) painter.drawText(QRect(QPoint(6, 6), size), Qt.AlignCenter, text) painter.end() self.setPixmap(QPixmap.fromImage(image)) self.labelText = text def mousePressEvent(self, event): itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) dataStream << QByteArray(self.labelText) << QPoint(event.pos() - self.rect().topLeft()) mimeData = QMimeData() mimeData.setData('application/x-fridgemagnet', itemData) mimeData.setText(self.labelText) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(event.pos() - self.rect().topLeft()) drag.setPixmap(self.pixmap()) self.hide() if drag.exec_(Qt.MoveAction | Qt.CopyAction, Qt.CopyAction) == Qt.MoveAction: self.close() else: self.show() class DragWidget(QWidget): def __init__(self, parent=None): super(DragWidget, self).__init__(parent) dictionaryFile = QFile(':/dictionary/words.txt') dictionaryFile.open(QFile.ReadOnly) x = 5 y = 5 for word in QTextStream(dictionaryFile).readAll().split(): wordLabel = DragLabel(word, self) wordLabel.move(x, y) wordLabel.show() x += wordLabel.width() + 2 if x >= 245: x = 5 y += wordLabel.height() + 2 newPalette = self.palette() newPalette.setColor(QPalette.Window, Qt.white) self.setPalette(newPalette) self.setMinimumSize(400, max(200, y)) self.setWindowTitle("Fridge Magnets") self.setAcceptDrops(True) def dragEnterEvent(self, event): if event.mimeData().hasFormat('application/x-fridgemagnet'): if event.source() in self.children(): event.setDropAction(Qt.MoveAction) event.accept() else: event.acceptProposedAction() elif event.mimeData().hasText(): event.acceptProposedAction() else: event.ignore() dragMoveEvent = dragEnterEvent def dropEvent(self, event): if event.mimeData().hasFormat('application/x-fridgemagnet'): mime = event.mimeData() itemData = mime.data('application/x-fridgemagnet') dataStream = QDataStream(itemData, QIODevice.ReadOnly) text = QByteArray() offset = QPoint() dataStream >> text >> offset try: # Python v3. text = str(text, encoding='latin1') except TypeError: # Python v2. text = str(text) newLabel = DragLabel(text, self) newLabel.move(event.pos() - offset) newLabel.show() if event.source() in self.children(): event.setDropAction(Qt.MoveAction) event.accept() else: event.acceptProposedAction() elif event.mimeData().hasText(): pieces = event.mimeData().text().split() position = event.pos() for piece in pieces: newLabel = DragLabel(piece, self) newLabel.move(position) newLabel.show() position += QPoint(newLabel.width(), 0) event.acceptProposedAction() else: event.ignore() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = DragWidget() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/draganddrop/fridgemagnets/fridgemagnets.qrc0000644000076500000240000000016113245231431025745 0ustar philstaff00000000000000 words.txt PyQt5_gpl-5.10.1/examples/draganddrop/fridgemagnets/fridgemagnets_rc.py0000644000076500000240000000410713245231431026300 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sat May 4 17:11:25 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x01\x16\ \x43\ \x6f\x6c\x6f\x72\x6c\x65\x73\x73\x0a\x67\x72\x65\x65\x6e\x0a\x69\ \x64\x65\x61\x73\x0a\x73\x6c\x65\x65\x70\x0a\x66\x75\x72\x69\x6f\ \x75\x73\x6c\x79\x0a\x41\x0a\x63\x6f\x6c\x6f\x72\x6c\x65\x73\x73\ \x0a\x67\x72\x65\x65\x6e\x0a\x69\x64\x65\x61\x0a\x69\x73\x0a\x61\ \x0a\x6e\x65\x77\x0a\x75\x6e\x74\x72\x69\x65\x64\x0a\x69\x64\x65\ \x61\x0a\x74\x68\x61\x74\x0a\x69\x73\x0a\x77\x69\x74\x68\x6f\x75\ \x74\x0a\x76\x69\x76\x69\x64\x6e\x65\x73\x73\x0a\x64\x75\x6c\x6c\ \x0a\x61\x6e\x64\x0a\x75\x6e\x65\x78\x63\x69\x74\x69\x6e\x67\x0a\ \x54\x6f\x0a\x73\x6c\x65\x65\x70\x0a\x66\x75\x72\x69\x6f\x75\x73\ \x6c\x79\x0a\x6d\x61\x79\x0a\x73\x65\x65\x6d\x0a\x61\x0a\x70\x75\ \x7a\x7a\x6c\x69\x6e\x67\x0a\x74\x75\x72\x6e\x0a\x6f\x66\x0a\x70\ \x68\x72\x61\x73\x65\x0a\x62\x75\x74\x0a\x74\x68\x65\x0a\x6d\x69\ \x6e\x64\x0a\x69\x6e\x0a\x73\x6c\x65\x65\x70\x0a\x6f\x66\x74\x65\ \x6e\x0a\x69\x6e\x64\x65\x65\x64\x0a\x6d\x6f\x76\x65\x73\x0a\x66\ \x75\x72\x69\x6f\x75\x73\x6c\x79\x0a\x77\x69\x74\x68\x0a\x69\x64\ \x65\x61\x73\x0a\x61\x6e\x64\x0a\x69\x6d\x61\x67\x65\x73\x0a\x66\ \x6c\x69\x63\x6b\x65\x72\x69\x6e\x67\x0a\x69\x6e\x0a\x61\x6e\x64\ \x0a\x6f\x75\x74\x0a\ " qt_resource_name = b"\ \x00\x0a\ \x0b\x0b\x17\xd9\ \x00\x64\ \x00\x69\x00\x63\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x61\x00\x72\x00\x79\ \x00\x09\ \x08\xb6\xa7\x34\ \x00\x77\ \x00\x6f\x00\x72\x00\x64\x00\x73\x00\x2e\x00\x74\x00\x78\x00\x74\ " qt_resource_struct = b"\ \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\x1a\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() PyQt5_gpl-5.10.1/examples/draganddrop/fridgemagnets/words.txt0000644000076500000240000000042613245231431024322 0ustar philstaff00000000000000Colorless green ideas sleep furiously A colorless green idea is a new untried idea that is without vividness dull and unexciting To sleep furiously may seem a puzzling turn of phrase but the mind in sleep often indeed moves furiously with ideas and images flickering in and out PyQt5_gpl-5.10.1/examples/draganddrop/puzzle/0000755000076500000240000000000013245231431021133 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/draganddrop/puzzle/example.jpg0000644000076500000240000012323613245231431023277 0ustar philstaff00000000000000ÿØÿàJFIFHHÿáExifMM*ÿÛC  !"$"$ÿÛCÿÀ¨¨"ÿÄ ÿÄT !1"AQaq2‘#B¡±3RbÁÑð$47Ccrtu‚’³´áñ6Ss”¢²%“ Dƒ£ÂÒâÿÄÿÄ5!1A"Qaq¡ð2‘ÁÑá#±ñBRbc$ÿÚ ?ìº(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ +-)îi3óÙhr±PÚ[€®Šb¨âENçBî¥?2Ëê6ŸýeêÜ“œcí8þ4§ˆ¦¹ö&ôU|z§¥‡}Alþpšß©ZnI jûlR‰ÆÑ%þt{D 'TS4[ìgÒIAÈ?/fk.vX«Æ¤g³"âª+­*ìk*¹!EPEPEPEPEPEPEPEPEs†²ë¨¸õ6ï§4Ķí6»ª!ï½!䨥CÎ Rœ…p3žFÅê~²e{œ¸5 eÈÈÿ´\¼OKáðõ8r½ûŒ2é JMjt%KAëÙûm¢ÿü¥©¿çºŸ õŠÊàe²{þ,¥À?ˆþU4úc?ó·ËÇF\Ë.ЉAê>—€.Á…Ýy¥£øãÆ¥1ÞjDvä0â]eÔ¡i9 IlVêUéU÷$Ÿƒ4F¤'î»›(¢Šip¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢‚@¤²¥!¤’To[‰HäÓeÆï+jRÜJBFI'T¨½J´i˜«T™).ØW?µrþ¼ê†¡ÖKZ#Èû%´(‚½Ûÿ±¬µq +A´¨N«Óbü×ýsÓ:}·R%‰'#Ãa\gþWùW=k?Ò;V]^r=…±£<$î_çÉþUýY NøÓœ/©GqyÂJJ}Ђ¯ÇíÎl}0íøéQHRŠ› Ç >ÞüÖGZúÚþ'B8Grr½uøã’%IœB¹%ÅyúóL2àêIrD…¸9PÝŒU¡s-Ì”á—6DÅ’0–µ”( `¨wüh• µ¡–[`xŽx~2Ò; »¼¹øÂªcŠ×„‹\ýy"¢_Ò²‚·÷à+8­N‹Ë.Kq²9óVË\±Å8Û¥¦ˆ#ík(*ú%8¡÷$ÊHR£Ú›q ÉñkyüIÍi…w>fZ˜eq^˜ê>±ÓR¶ë̦¶ŽR—Ôv5sh_Ò–ëHgQÃD”¯"þ§ÐþUΫD§?uŃè@àüZ<(” ”œ)%8P>Æ™(B{™{¤})êîžÖ‘<[]Å+q#ÏÓµÔ~£äU£æÄ„«òbÓ2éj}3m;ÖÕÈYII5{ô·ô•¾Y\jߪ[Tøã?œ:‘õìΡg†Ú¯2Ž lwúV85•Uý8êuƒVÄCÖ›‹R8Ê›'#êžõbŘ۩(ÓaQOb‚º+ĨÕí\¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ˆ¡¿'Q?é©?ø‡jg¢¬—-e«\°ÚVÔv¡´—®3]AZXJ³± H#rÕ‚FHyíPÈ_ïÉÔ_újOþ!Ú¾¿E8[Q\ÖÛÌ¿>‚²9-´”!#è0¯ÌטŽž‘š¨®—àó˜jJ­l¯mO ô;·w4´=Q'úBÛ%ß â“¸qŸ(H ŒóUÅÎÕ:ݬàiY btË‚!¤ƒ”¤(xŸ) ¨DÉ êþ–» «íj ÒÕŸÜx-+ˆ5n_WÁý"´ø‘lnc÷k[¢3ë_û‰Èá§’T´8H#„Žõ4°Xll#R1Ë­š\Ñ¡S§]]+YÛàTú–ÒíŽù*Ôó¨uqÔV€@9ÿt†ŠÿÜÛ'ýþí5Nõ–ço‘¨%[š³5dw’\š—2§ÆÎÅ8î=Oj¸´WþæÙ?èøÿ÷i«ôM(ÒÅÕ„Òûì? ÓŠ袊ôgP(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+¨$Pµ„ŒÓ ½G·Äu÷ÞKm¶’¥©G zšI]€¢ïuf*[Ž%!#$“€sïXzçÔӬΙ2Ôv%Hä§ùÕgמ¶½z}û=…å&0%%@à¸}ÏÇÇç\ÿ&âì¥øM-KZÁºO'ñô¿JÇRr“±²Ž{Õ>Dšó¨¯Úšö¥¼£1â²PÒ•–Ò=IôÀõ9¥¶¶ÜrK^ÎCjðüWû•ý†›ø|œj+ky ?fŽNÁÊÔ@^=Èùöü9æŸXšµ%!•ã²Hqô€ «MŽÀzŸOUkHë©Õ¤ô´Gù ¶Ã˜‘!r\;œwhò¤u½ôsÚš§ÜÒ…ܿŷ0¬©M¯—ãÈO {1ñOš[§Úã_¥Ûcu óöù -¥Ìq”æW×㌠·´o@t•­œÞEâj€R䤟zêÛ^š¶[ã°b°Ë !-¥9ø$ ^Íž2T” åá?AÚ¬¤ÿÅ[ÌS©ò×Ézøœÿ±ÝJ”‡\˜êÉ^IYDz’sÁÇ¿©Þ–ê£5KÈD„ŒP<0¼z«ääŽ{â»Em.§€"¼\( ªm£žÙ‘¢õ?ØZéüœ‡£wéJSm†üPwí£'‘ßÞ›µL/Ñæ»T4ø!J%\(c?À×e}‘¶PRÞÜ|Ô–e¾ß)Y“6’G|Õ3Ô_äK©NZ8èp”½32$w·6µ-’ŸN2>yíL-Ž$©!¢6ò°psë]ésÑö)¹XކÜÁ󄌂}sQ{×ItýÂ!oà Ÿí6~¿ë½28Ê‘Ý\T°ô'³hã]1}½é©­ÜíSŒëjà¡D]AÑÿÒYÉOǴꆛiÕ”ÊO”(ÿxvü±P Ñ[­—µ„½‚¯ä¯ã8ªfãmµJjS*e{°ž1ÛæµÆ´+­7ó1UÂ8jõ]§Ôý-¨cÜã!hq*Ü20sš’¶­Â¹ôVÖ.K°C‡)õ, @žàv?•umª@u”œç"Ÿ†¨ç¥º0´âÜX¾Š(§€QEQEQEQEQEÄP¿ß“¨¿ôÔŸüCµ}þŠr·éAjý¬MA$í>ˆq(q'ñÜ#T$/÷äê/ý5'ÿíMô£—¡ut›Ûœ›m¸2–îqPŒìu¼àH)$dùæiâ¡C¤§Ù?ÁçpµU*ùžÚ‰Ìw“Õ+9ñ‘©[*O÷[ÞUùb­]fúúLèã›¶Ü®´ßÿóNp¡hy…Ž°Û¡Kœâ¢©ØÞ>]þU¨7À <…Øfªkž¢¸¿ÔØ:å BfAua1œÉB™Z<57žàíÆî3ƒÚŸ”ú60¥Qîïð4醊MÞí?€¿ªÿï…vÿæ'ÿÁ5|è¯ýͲÑñÿîÓTFºÕíJ´ÉcNÆ·ÍZ’¹BÂÜs ÀNí íáÚ¯}ÿ¹¶Oú>?ýÚi}á,]YBWO_›ƒqu¦âî˜ïEW£:EPEPEPEPEPEPX¸ ‘šÈœ Ó]ÞbXiDšC©oq­^“%ô2ÓH*ZÔp­pï_úÕ7S\Ý´ÙÞ[vÖ×´ÿZ}Ï¿øT‹ô»ê{ÏËþ‰Zeˆ9˜¤ÞþÉøÌüW-8á^HY(ïžê?åJmËQ”Ò]f.%Nº´©ÎÿÖc“ô¤eâñØïVq‘ò}¿'*[žDySëJíÑ_˜ûPá²ã®º°”¡ Ü¥«éQ•A]R•YYzî`¸†˜SIqa£€ „ùÝ>€{{]Ñ~ŒIuµµŽ”$%*…hq>T'ºK£øìüM;ô£´Äx·ÝG2ïe!ÆX õÇï/äöô«±[Î嬨ä“ë\ºµTÞ›ˆ^”r­ÿƒØí'i8Ç H`=¥qØ ã—àà Ö)B6opa¿ãKY\‚­ 2ŸãUŠ&*bŠ|éCiþ5ꛂŽàQ­haÇUæZ–G¹í[[€ÉÁûÓ’ìBvݘ BÇ+ðÍju‹zÿáÎñ§ã6Œ'Ç|÷¬„frAŒT¸¶‚ãB™†ÜûóZ]m¢ѺžÜ‹a>QŽ{ÒeGaíRGãK”K) Ëe¬¦ŸB8¤«Ž‚½¬­HW8 âŸÖÃ}‚ÂI瓚E.9Ør yÆ)r€Å!–CD ¶êv¨ŒŽª»«=5µjH¸ÓI‹=) ¥[*Rš² ÛþÊ?¤èuNG;Oª~ !èô›[ÁÑ·¥õ“¶{’Œy(! ©G td‘ø×l苈“£»œs\§×(¹Pw„‰q2IG|Æ}ñÍM¿EΠ¿}´ˆ—'ó:.á=Ö=],5Hï۹ÉÅÓ´³L…e5•"·È´9È¥µÒ3Q@Q@Q@Q@Q@Kµ·Ön¢%Ä)Þd( p_tƒø‚ãR*é{¾ˆÒ·kÚ¯W +\ÚZ[Û”’´§;B€ +îsǺž±AÇØìð#÷’Âw~xÍyÌ_BÔÄW•LÉ&qÿL›“ëhP-¼ê½- vÍ? ë­n­Öâ.2Ü )D•Ôœ’£œŒ“Œf· ¬ïßš«*˜2S‹ñ–ÂJ‰'…ãšè|QZ_Cñ"£Z«’^ îhXâ£96‘JYúAwrCjºÏˆÃIJ¢·1ê@üóWÿ(3džÂ¸côÃÖK™~jÆÂÎØƒ+à­\ÿŠ]W´IŒsJÌ¡¯÷îWß}Õ-n(­å©Y*$çÕˇ¾ÔZÏb¨ûš_h´Mº]"ÛØl‡RR9JTG›C𛍫²îóz­0$Üç5 y甆Ð9Q®»è/L-ÚF wk“-ɾ8Œî#rc;'çæ«~”idÛ.iðÚX%âÊ%HÉÏ÷±É™Åt½)m A (vÓæ¸ø¬C©S"Ù¼=,ßäüé{~oÞ#r³ïJÛÜ£¸Ž}µh'ÝØžõ¥1°R7wìqTH«b–“€ ³øsJÙQ$€3ÜÖ⌓ŒX?qƒÈã©+$g·Ö˜¢)ß°qh©YÅvç·8”ð·0=ÕLɽÆCIwzXJòV¤§wÓ>Ÿ5›wHOc¸GwqÁ(>Ü~•tC„»-G•’k,+’GãZTµµ) )ôù­˜ã¸>ø©Ô‹›J¹Ãæ«ûÇZ4UºwØî3®ƒÍ«-œwç±?LÒe$˜ØÓ”¶DùõåqüŠoy;£ò=é¶&µ²NKe¹ ©.c mÀâN{d§±úÓ©SKHR0¡À¾Ô§il]ÆQÝ wÈ-ÊŠâ@)Zp}ù®lLù=.êK®­ 0^{z¶v)'ŸÇºðRèAû§<Õ×Û+ReÆuMxŠ(sŸ»Ç¯"™N¦Mö* ­âΤÐ7è÷+s2ò\mÄ¡`ð¤‘jrÊ·$W$~‹Z­ßÔâÃ5dI¶¯Áñ½²r“á]Qha$Jìáæå=ѳ‹qc•QN$(¢Š(¢Š(­Rä±3’dº–™lekQà ¬u–»¾9oyë#H¶C"d„n[Ÿ)Ià~9«Ó§*ŽÈUZѤ¯"Ó¢¹×OYv.J›¬/Á° ËRÔÐ? 1M79Ú¡‰kB5V¤ðÒx?¬œÉiö)ö™=½©ÔW4éÙ÷©—†X‘¬5Y*Á?¬\çßؚ֮y*ˆ‡£Ô rLÜÿ….®TÒlu,W´‘)¢ª‹ƒSD÷<-I}Ki8À˜ª~ÒöI’b—äêꂾîfñ3ÃJÌÙXbóË*D技jˆ—Ýöô” wûYÿ*®ž»^þÒBu%äöÕãùÕ¡ƒœ•È–61v±Ð”Ua¥Þ—.3k~÷vR‡ ÿj<þu,›hqP‹¬Þ.Á[r1+ÿ*\ðòƒIó/ Jšm-‰Yæâ‡ Uyº§Ÿö¥v©m¶Ú!‡ÒãœsþÑÿ•M\4©«°¥ŠU’誣SÝ'1pZb].ICg2T?•7E»]^ ®õqGÇÚWÏñ¦,ÚñÑOb被XóäH‹á¦ï<:rú»þt§JÜ›ƒŒÉŸ,´“Á/¨ÿ:‰`åvÉŽ22vH°h¤)…µ$ªd³óâšM8!¨î-¤ÛŬñƒ“²4ÊyUØïEBݹ¼Ã"åÈ#üCM’o·B?dó €K‡üëO±LÍí°ì,zÅÄP+Uús‹ðßyÍÞ‡yÿ:XýåöšYq×1Ž<Æb™+'×’ÔÜE„žOók«×sz××i{÷!IJ» ã?ʺ÷¯šåÛV‘¹KL…%ß ²ÈÜr\_×Ðdþ KÛ½¨€IÈϨ?5Ž­,•lÓB§6ŒR!Å$+aÂ{îja¡®,ZE»™=µ+*K¾­§ƒœð=“óQ4¶Ëî¡ô2”޹‘ÿ:ÉiXm~e„í;‰ôÀÇriSŽecM9ä•΃é¸ÔÛõÂZ!Z­Šn4rò‚@QȼHÎqîjıõ‹¦qb©RõŒd:´lŒò¼¸øOÖ¹ó©Z}ûIíLȈb¾.)S¬÷SAM(¤,ÿhá\zWHi)¦btkNj½(ÑÓß~ÕŽ6Œ\Z°’µsÉäýk›C N½ê§¥ß‘՝Д§eËÌÍ]yé HIÕÎ=E¶Aÿü+yëÿHiE­Xµ«õt€N>¨¥kÓ75F/Úô'MYi •<4ãMGN?ã\àþ†—ÐÚŸS;#h誛ŠR™(‰ajbš*ä„§<ÄÓaJ“÷[~¼ÊSJò²!Óúõ¦îa_e¼FŒŽK-©E vÜHÀÏãPÍMÖìÄj¯ìòd-²âfVRÚ`UÎO®3ùWLµÐ-,üOÿTµi)/žê¦Xa9ú$çøÔ#Xþ½=[n—cÛ­ÎðâaHa¼ü¼¤çð¡a#{ÊþE½¾Ë,-ð¿ÔåèSµêC’%Ýæ¼óÊ *[™ó„þ5%Ò6ºVµéççµ! S®4BÞJxV{ýG ÷6—ú99n|HÒº¹´8Ÿ0L[¸m`ü%ħ?ö«(íõB8]š!ßÛS›Û8%.îÛì’w{’>*³„oÕ’þ tqm%x¶þ’æèû×5ØvÈšô¦Ò”­’øÂÛ¼ =ûv÷Áõ©ô7pò Àùª?Dõ·J91¶ur¿dóÒq"…YP<ŠÏ>dŽÃ5zé²Ì¶6ü£Mˆ´å§âº—Z#áI$¼i¸¤™’µE)9ÛYÎÑȃí^8HŽ¢‘ÂGb)|¸®‚ “Ç$rÀ¦¼¶í0_™s•V¼Ï?-Ô´ÚG®T£UšH\zÅ+ÖH³îW“…¸Ôynb[ÉW™-€0óïõª¦ó¦¢ÛRãQ ‚†ÃiñÈT•û {“Ž1ë“VN²ëf–ýdä ¦®æä®¦[SQs“’ž Üú€ÍVÚšG\uZ˲ ÄÓ±TBD;{hC‰Çlò§çÔ¥'„ã«ixâ"â¢à߯‘MÖ~•»®e†j­«%GìÎ…-—’Hò©8À>¹øâ¬­Öpc¨Ê— Y)!—ß‚½R ûÈùïþ0áÑM[1Ã"å2*QÊ—6~åçä$M×n™Â´ƒöý[§™P$cÁ±Ç±æ¯%†¨¬å¯pˆûLdòÂñìz3«]=Ÿ?«­1_HÆÞ{8ô Ô'ª:ÛDL™Ëv§´ÏWçKnçË‚9lüÕÞšˆæ…Ò³ÊÕµå4¿¦H¥ô[±Tò¢0éNv<ÒÛè¼þ9«ÇNoÞfhœuÑ_Ç™/éî©fÁÔ†rs3ùaçŸ x‘ЗWµ[°‚BB›ˆˆ«ôivg_Ȇ‹¼øÑÕŬ2ú“œãøÖ§ÁçƒÐæâa8§7ÈúNÃis[jœÓ‘åIŒŒê[ø?ùTÚž[ÑÒâµ¢Î9Äß_Ê·Ê‹ŒT»LñëKõçQêeh«\ék´ÛRV•¾¥—¸•£ýåqŽIø® ýôl=-¦î¢<Ç%}½Öœt«Ü”‘ÁDZ=¾j§èƆ\{ÅÒçu(VûƒªiÁ'qäû×FX¥·lmÝŒ¥HY[NÜ`U¨TÕöÆÅeÊ·&! $ Ø a×6¿Öv%Ç%”¥[ʉõì?-µÞí×þÏ!%INT’~ï¿4Ë­õ~›´ZÈŸrˆCŽ”8'8JÙ+8œÈ)FjËR«ºèp°µ&{N 8"£²­÷Û6ôµ9Ô²¡…´èñYXö)­gººïC -©:Š5úîÓNÚ nßhq¶Ûuµ#ÄR*a Ø¢•eHûÀá&õ £ZƒOk½)/J[-WÆÛ¬mB“!¥,nRAoÃÊr=Í;_‘ôÌŒÙJã¼µ3·Èûdù’¡Ø‚2?„̵jKçVѶÝG1¸:n(…×ÝPTDŒ-M‚í ryÚ„ÚŸCÁ¤ãmyS *õÔÔì¬ï~IxkÌ×úXh{ÜX,j™v ˜Cm¥µµl”¤žI $Õ'c–-¡k¾Y¿X!lå¥Kt¸Ú7BðI²A®À™Ó[ÅæÔ"ê¨j‹‹J©•)*hãÜ+9úÔHô¾ÕwÖ—>žÝç•Ö.LÈn0Y¸BBWc8A ØB‡#rÇ àh†*NiIhü þÏS”£Ríodö¾ú’?ÑãGÜ¥ôew™°oûRÞu•8€“!’¬¶¼ (Œda\` sI’û6Ie«ÃôKcjSøÕÒZ© 3¥¥ÅŽ C)i m vT½t²Y£xw;¤XaGþÀÐ$Ÿ®{ÕqXX;_â'©yI+öFúq1ä•É–>˜"‘]:WLU°·ƒƒœîOÿ…J\Ôvi3•Ýw€ó¡9)jX N1Üó[X½.:ƒr-“ŽGùŠçº4àΗµâš½üŽKê—J.:js’#£ívâÜWºnðÔ½7 2^TypR¦èQ$"¾£ ñ]w|íqÝi¶¶”‹$`ãÚ¸³_é§´ÕÎånm.Û|© ';¬ùŠÙN¬§h7àÌU5ª£â¾¦û«ê¿Ù¥ÝC?l„èfaa!(w#‡³Œî3ëJº‰ÓI×Û&;PËJ_¦õ¨mOÔàŸÂ™úz^‹ÓýqtJr˜©ƒ‚´·JqùVFmB8öĺêÜûDŒˆOà8üëªãFœwØàbk~ËO™Ôº%pšN’?!V¬sà°G'ÈWú)e†Ü ´v7æÂ”/õÍuk¬©C°æa£epb#M,¬ žçÞ·n à¨r84!µ“ÊŠSÀ<÷¬CIÿã' }xúVVï»4¥m:àJ¸àzû®h¤ò­Ëí`>dƒœÑM‡Ú±râ_DVý!` ?k‡ Apr¾ª˜»ºjÊÜÉ@å)Ï£];JS¢à``#ý⹩KL¼ò³»Ãl{b¶;%sŸJùTLm¡´ä{VĸÊRµx‰HùôïXº«[>GVsÏ›šÌ.Í' …mÜ1Ÿo¥U¾æ5+sG?ß/ºšå¥î>Ût”åüj9#Hñ ž #2¬ç?տŸí©÷XÖ¹¶çʃzEË”¦„…2yݨ@R’ INÇÈ EI-ý8™iêÜÝgCZ]–XI>"d”!µ8F1ˆÇœ¨ö¤:3G?¤-:±'Å|Ü–ëvíªQðbåÅ6…ä §WÀÎ= ¥Ü•£±›‡8¾·®Á•½i¨ÛGMÛ¶ÿdºZymΘ·Zši89°“à‚9'9a²õ]æ×[Ý„4ηBºøŽ%©+J ”¶¤p9ä§½:?a¿">Šû3–÷ŸÓŠâò‡|FЂR ‚x(Ï#œúV‹†¸½aÖp’ô0íîAr1RÔ”ìJp¿/)=³LŒ$—®ÂÉïëA˨××ì:áz„Au¦’Y*­IJN=pT Dã]5—¹h‰R5ë›:‡k3X” ¤¬#j›ÀpWÃäÔþ~˜F¤ÒRìsÄH`4HÎÅŒ«ÁÔ/NX¯·> Ytö¬ a:E ¸e¨îm¸`$%Ï£nÔdg9ç©|Ȭ¯qOOﺦï¯u+7ñÌ(²’ÉKäý˜„¨´n )É'YŒ‚•¥Ä+j‡b;æ îiÍQ£.šÂÿ Û„Š—5¦€qR|@•ì@@N+Pîíš™ZŒ³nŽg¥‘7ÃOჷÄÇ›o'Œçö«S½¬ËG¼™ØnÈy aå¿BN)ý+VÒÓ©ÞƒÆHÍVøP!Ä(v#Þ¤–;èJC2ð>sU©Nú£M*¶ÑŽ2íêaá2"ü òŠrƒ)ÇÛ±P={ ´<¿´†‡ñ¬ßž„±ÚϹ"³ÊN][]ŒTzײ6‚þ?« c'šõ. ùÒG8äw¤ÉŸ(cŽâ”75 ;@N}©n\†Æq|̾è(îÙÉwˆ¤6´ãÊ®E?©±È9B»Ö—š¶R{zšU2»‘Vžeb`ì8àò+9(zýktèë(ûÍ`ñÂ2?Zè§sšÕ·5 ío?ÔwP$­—\#“À§ñ’`÷õ¦­T͹~åë!+ÈShÜHïáÆ”j …Âý}žl¡+Yj3 4€xHüù¤¬:˜Xy¦Ð¥ç.Fíü¹§½òÕdÈa ->"N'>€÷'Žj*Z7©m‘4œ£E½Ùgh>^n-%éËn"1ÈW*Éø©.žÑ×= ÔËâ*Táƒ)22„VŒáiãÝ$Æ®½2#ÈŽÛñÛ eM „íÇÓ?8ÅH’Ã.) -$¨ú‘Ú¸²sžªZž‡Ú²u2¬¦ùøö뛫·€cËý³*‚• Œ~ÈÖw™F·Ÿ Z‚ ?ÚÇä ­ø_«ÝZC¨ýJýÕ÷°=DZúÖm  àƒ‘ƒZ“Nís9–iÙò+ 'vÕ¦û-WHβÙe•à žT}ÅEçÙõKÛLاìQçL‡ÞˆÜ–ÜmiRSû%ðHÈÀ÷íÍ^‚Î~ûo#̓… Òô°êÛm6Ë©iaÄsÈìi´ªN*Ì+ðª;Ú×*ˆÚVåqUÞ5Íõ¦0ŒòÌr•HX9I-ç òœþ4©V_¸"V“³¿jRä‘!¤ûåHÎÓ“íƒV”ø«zBžRJ”0¬'q8íñI×I¼ÉÇ5YC2´†P®¨¼ÔÖ¯·aìRåÆL)®2üÉJCnèÂôHÏzǰ³_þ¿b|Ik»L”îØêß±ÀIRûgnÀR;–êë‹ÚrÐÒâ%³{¸nidœò<òUì”'$ëPþé¶,‚Rc-N0Û¥ (¯ ‚µèTBsô®~&Τ!ÛúõØoé*SªÝ®š·ooÁ;xÙö‹ )À)ÀÊ»OµDcZÆÔNº¸î."í¼…µ§ü‰YǪ]-þ⤶²<2—'c9¨·T­îIÓ2Xmo%;‡„¢•V2=ð8úSª6¢¤¹jd¤¯<—²z|㲯OË•UöLÈ))ØÛ©ò %Dädr03žõ\õGM?p¼F™¦ô²Ð˜ˆoÃûk!ÖTétø¼•”8£#Œ0– \e VT”Œ’sOzÙëÖ“Õ.9¤-š…zQ!)1'(¾B@ œ¨\ë]-ùkeI“(«¶½9¼ö¤RÐô¤¶ö€rJ]f庇©JÊïãøô íCb‹"Êд ¨¤§n@ªËô€°m׋‚Ú Xeý•Ž>¸5kÛmI²>W„°µï-`{ãÛéM}Fëf— bœCá—¢AÜãðïéYZËgØÃ2ÎòìÎN·([ºBÝä7TÝØ|¤ðS¢ mÇŒúf¬Ž…Æz\¶.©!L¼â÷s€@ÍDºe›|êy·H‘eÿ²ÅJ~ãm¥¾žÝ½Ïç5&Ñ¥)¨`Ú­òZR‡ì^ É óÏbAõü«³CÎ2íÔãc::£ ä¹ ¥ðF;þî=ê\…¡”ÉW§Ç^èiaPPT°\úzÔâ7 -G'¾+¹Uª‹7#‡FZºëÎgz¶€{V)oîQV;úÖÒH9çØW€ùÏ'Ž'æ—{-ZïS¸ë ÞÚŠ‡n{š+5á8!Gð}(¢Éî‰M­™ é°Cz6 ïçb|Lÿ¨ªp›5é‰)mE¶Àãæ£ÚÕÈÒ[ó%¶üL=|E?!)Ç9Éúq[¡dÙÍSê¤:AGq=ùí[Ô„*>}«Ôî#¸­¨RJ{gÔ~=é¥E6yêj@Šó‰(sî'ýw¨†²+MÙIL¦–´¤(b=Á¨÷KãÀw¿].LF‘¨¾ÈiN<€§˜BU†’‚yJ6`Œpr}ê³T1ú+¥.½†ã*+7‰JR·®*dmR»„„§)´³%¸q[ŠLµšm‚ÚI>\zþT'öÁ(B· íQ#Ž V³­1äjmO§lR[µA•gcÆû8 m™JqA>Q€7 qŒƒJ,öWu¦uŽ=¾Çi¼Y®L.C-#0.Ü”/’)9 ¤gÚ¯öÌ]VˆÂ6–ñœ‚îÕ²R›ûS›–Œ•mÆ{Ç×â¢zíxºé»|#eÓöˆá÷šŸཡŵE’Ð P$(äŽI¨>£hz·p¸´ÒäÅXûŽr¦^û:Ke³Ý*+ä`œjŽ'0rÑ4[ ÞãËÕtÒ"¬? RÔîFÕ©I ¾FÓùÒ)ë .Ëyô"3 —UÂ1ß>ݪ oBÉ|ÔWký½SË:6Û"‘ýjŠ–•!YÏ’AÀÍ5ȆÚu>«·ý†É3Ú?íõŒÇ…/bˆÀ`óÆÓPª=ˆÎLnºÆÕÅlºÅÿlGYfM­(+SƒrrTFÐ'=½©þ\”Æ/5öwÝsJXQIõýÅTÓ,ö”h^—Õ°OÚ.6âé  ïß[¸ç%#9ïžÕ®ôÕ½zo_].)i7ØWGQ òpüpŸeKGºAco|š8nFftÓï"4"¥Ô¥D$žyíZØSg JТFxVr3ÏþµXXíì^zÓq•zŒ™`ÚmÒJŽPÌ‚¹a=·yqžàgÍAãYíÒ4>œ¸=*›+\oHçÅTuIqµ3¿¿†PHÛœsۚΥdi•W{ÛÒ:1 BÒÚ’¤žÅ'"¶‚€HíUÇLâ1oê7P­n,òá8ÌfRÓjr*JÊR8<œUŽr>joqÐy‘œwTÉÇtàÒ³ƒ…Œyö¤¡*PÁæ½Ü¦þ÷#ùRä®ÇEÙjh½Ä3â$ŽõÊRGcRæv¼Ê“ƨÅͯ³HRHàžkFâùñ0ÿ%ÌÂÞÉuÃǵEúŠéLgâ§–¦6ÃS§ÛÖ«^¦¼¤°àO±«NWR·"™mûJ«H[™~EÂäûIqmìÜ2Q*&uw¤ÍÝáÅ»$¼Ä ‚¢ãJÞ­¾ÀÿO©©?Mÿoi¼²µÏ³%cà¤í5hÙYUÂÇÅ6 öħ>U'øòXºmÖÍgÈ÷¸J¼<$SÖ<×ÃîpUÇHu¶RÖ–7•ã…òœzc·Ö™,ðd±qiï3a²{0qõí])ÔÛEu!vØ1>ÉÈgs«%ׂ²8ù¿!TôØ­‰ †Äs³Åý©ÚF¸‚Ÿ§±ßº©Êñ–£±x +%Jj×ÖßÁÕÝ/mæô¹ùa^3È óýàŸLý{ÔÒ;™9#¿™-í&-®,tðÛ,6„sÀJRü±N¶ÎR’R@>n{­g‹×A^fÙåÆò©Ì£{‰['þ{V»n¢†ãâ,§DwóýSÇjÓñÏÞòâ ’N{L}h‘j·Íc› ™ œâÅ1A§x²Šp’´×È{¶*3­¥KB’0<ÛrƒÿX>Ch)q“ô"«ætœ,ª#÷kj»ƒàâ~™Å.kFIHÊu–­Ø=>Þñ)­E¼|ÄNµKx¯³dÊLdJ1„òH©íP‹¾«€‰FžŒ5Ý'hj9ÌföŸty@÷A&”=¢ì`x“v½`ýÛ…ÁÇPOÊ þéèÖØ>H±âFi9e°„lQ'7½—›û/2i”5Ö^Kùmùx‘HjJ%J½_e~²¼ÍG‡!ò0†›ÿá4?q?ÄÒo²D¶Ãa 6Ê ÚI9úžI§ió¦\ÞÚÒŠ=Ç•6ðÞV¼¯“’7ê£S«9{ÏáË»åÈÝ-´ù0 9çšWu‚§¢-<ŽÄR«#q֦еs‚®ôór¡hm;©ª’”ng•L²H¦íúrä«õ`fÙvŒâ”ÛÈO•à{¡Áê“òæ¤ð5Cˆ·ß™U¾qmYÎÿ”žÎ‘æ÷O­!¿á@Qo;ræ úT¢Æä;í©pnq™”÷ÐëaI?P}k-4Ó´^¾FªÒRŠuךû®ï•µîb3åcœÒñœíXúƒÚÉ“#y:+TãéHþtºãÓË’¤4äøÍ«€„=¹ úçݧqmà·Lö[Zÿ2š¼•[ë“ûجU{ÿ4þ—\Ô(T‹,go*ΈÊ# ÿyÒ1윚ñ›{¬¸©×I™p)ÂV„á¦u¤úuM=ÎÓÓI vÿ1ƒÚüíIZ‹%Zy.ŒyNÜgéŠÏ%-š%Ê Ýg>k»q={Š[sÀß²[%GÊVÎ=ÉÀòžoZk¶ÇY¿Ûßq¶›ÉSÛÍÃñô§~´º•ožÁÊá»A) G*ùôÁ¦},¿´ÜÕ)J+lË'° w5ziÎP^·7æ.ÄT}–ù¤Ž›é«åÈͬÇlU­@4•,Œc¶j¤é¸Ra´„Ú­›t@[Üá*$ÕíT)E3ço²7xÈÈ9üŠÉ8<ƒ€yàf”Œ­?sà Jücîlá9ä{RT¢Ý‘¥ÆKVf¾Sß}(¤W ƒ1⓸nô”S¡JMX'©Ð*m­#'+ì}7«šy2T¢64Oíšm镽OéHO>¯)ñ8Ïübªh˜ÈO´‚?hâÆ)#-:R”S# ’ ¿Ú$ d`‘ÇúïJRêUÊ3‚08þTó&#4B’®=*)pœ‹;êaÁœŸ/5xMOb'd»}Œ]™»È¶ÀUÁ B%)”SÆ0ŒŽ>j7ujÜL(pb±´–ѦR–‚y$´IãYõ?U_µ•¼Ê¶À-ÚâOj¦ %öˆHN6îòýìòN1RK¶¤›g‘|q–%1aCj¸%†œ;Ó»kIÚw¤…‘Üñ☬ȒZ4µ¤BTuZ "‡râ¦:j?)Æ zz u:kO›b-£OÚ— ܘæ" I8îŒgµ‘¯Ìšr`»;L» ^>Ö—›ËG·^SëÚê¥N€åÓìÖÖnÎÓK¸“3b·);”††Ó»jNNHöïSš!tYöeÆ1#Çi” mBH ØÀü)¦É¡¬Ñµ×Pʉlû„„ÈJߌ….1JRœ!X$´­VnêW,š×Uß$ºó°¢Ú"HJ²wãhì ¸•K"uéoš‹uþÊÌI2`=2jQu*-VÒÉBp FG~j­Å’¤žäØÁ€Ì™»mˆã²ð^uL¤©ÆÆp…2SÉàñÉ­‹%¢*·Z`Cl%Hb:U‚¡ÀàGÅWöž ÝnÏé÷fZ‹þJb-2ŠÜC› €Zv€€8Á?=øF×Qo‰·Cº7§Òä9WCjl ¸pÈܤ¤í)ÆÂ¤ã9ÈÎqÇ3š;‘™#zwO´Ãq˜²[Xi·þÒÒZˆ„„:2€Âù>nüšO6ÇmUʲmpž”Þ<9GJœGÑDdzTeEr$-D›Í± ϲ<Ë*f<è}O–¶©IN2TÈã½.:¾th¡7Kl1:ÃoMÇÃ3Æiö”Œ(¡$RAÈö>´9Án ÄÆÜäd®X‰JPä”¶ã‰Nv‚¬d“€{dÓ¤{5‰Qa»M¸Gf@”ÓB26¶þâ¯# ÜIÜ9ÉÎj¿…t¼9ƒg“i‹Ûµ±Ë…°ý´¸ͧcÞA°ùÒ|»‡qÏrtZû©îÚ Þò#º‰iRÚq¥²ÔìÛ¨J7’~® ÊÐíhVâSŒqJ_|6ÑPâ›"8’’¯Å#½L-„¶ÐÜéá)´þ"ŠÃÍ+K– #$¬öH¬.L-ûkÑããÅ)Êr{šÓ´ÃAyõÈ_*#Óà{R)“вZR”S÷³ÈUÖÕKU—ËQB޵D’’Ü–øqµp }±UoZug]¡ÏBt–šD+R‡ìžDtÈußùDä'鯭–'6‚üD, €’¡• vç¾iΕøÿdÛ,on¥ªRO} צ¯ÕõÝý2¦èŸRµ§ë˜¶^¢ØÓn™4‘ ci؇Ö|5¤¢ÁÏlUÍ«uKNœŸx–ï‡ yâNÔŒ>OaóLºMµ1´ÊŒ†q [x!@ðR}ꪠޮP•c“ CÍÈP.d„ž~8íT©9Âú¨Ñ¯(¸»[{úD§zÖù~•7R\åE…iyÓ–!3~‡yïóî{UÅÓMëtûy.CKþ) 9ÉN{ŠˆA°[¢CLyÖ¦%'bã#ÃìF?:”Øî1#²ÌVØi¡ýZ[B@I#Û¿ò¤R¤ã,Í۸ו‘´#ÙëIJ¡ÊjBO­j•“ʶ}i–Ÿ0R8ãÔSºJ›îI'·µmRº³8N]Ä’›Üœ>†¢w„¡“½CjB‡sSPRЉ<üTGT©(ŒéÂ1&ïcYëi—…ïcúÊÏ룻Äl"x™ + Þ• \ÿèEE-7/^ÚôØð‹lGWŠP€2ò““œœŒñÎjouûï]Èý§ˆD§Cxó•¡ 2;ŒŒßФ-iu4MR›BÓ9YÁãïôªàäßa«¿øø_íôGqt¸§ì“Éã½[°6çTONç¥-`»Èæ¬+f£ðç¶­­«ŽüW²Qu©)efO³ŒgùV2Fæ“ÜÍijc HXp$}k\¹IR|6°ªÊ¡,Ûœã—q‰›X[¥ÉNe!^PsE<¶ÐCxîsEju[{™¥±éó­1¢ ­Â¿´ãñª© CÍ…!GÏ«X“oC[£4¬)[ý{~ÑTã§õ"â6#¾R9 5xѼ.·Ö²{²Óœ­Cµ Xò¯­­ÛyÇÍ.¹gŠ PàÑ¥)eÅâ+¹Å2”uejÍKDU·]©W§/zbØý¡«…ÏõƒN¾V—šË©xµ´$‚7§…nȱ§ù:^l]gx½±dÓW¦nþŽ"êŒ.;ˆFÂR¯ {’@IÛåç<úTÕjm¼…:ÚHà«{ý+Ò¤…¡*R|ü’9Àü*](½Ä%b5­ºr­]¬l׋s°"Ú›e¶n‘Õ¹+u,¹â±°$`áy$qïÚ¡7Í.Ϭ.ó"ÙìWV®µ©7$¶”í%'b÷$€8ãœóVå§PÛ-ú¢-ŠDÔ·.[Ku¦”q” ¤OaÊÓŒ÷ç©F°D4ÌWޤ#)Ê”®1óšLZŽ·8Fpâ-ï©PÜôН/ê”Iv;0ï6¸Ðãøi%l­¢¢S€6‚SÀ>‡µ!»Xo“&·zÔ@Ýn¶Hf3Q¥xŽ8á%#o HÏ~õe&ÚñìËB›<‚ZÅ0C¨ñÖóeÀ^ñŒçÐýkFH™ò•ÇLl·Yv}*îÌX°¬ÌÙeµ­O<ï…±%ÀRŸhRŽÑ»$kÖ4mõ:~ÓkCSµ"nεm-Ôæ—ïa]Ž}jo¬î(ÒºjMæBTøŽZ a gÄu-ϦUü*E 1#n>*V°vðsƒíP¡ElD›éD»ãZÖLÙÙMíÈ/ÛÔ \𜎄ÿZ’ÚTœ ÊIìiÊó¦nW=¨¬ŒØt¥Ž\ø*ŠÓ–â­‹$(áð’Bs´…cžOse0ëfÐKJsƒþD´£ªtl HÌuEfbT´¡ÕS…”àŸÂ±+JM³l©Â Es^¿‘©Jâ5Ž–¼ªDoÓkzéÞ­êZÃ` ¸)òäzqXôÇOÝôމfÃv0]fÚ…$EqkS¨+R‰R Ó‚8Yæ¦é'=©“Bê8Ú¯IÇÔ 0äV^SÉØê)ðÜ[d“ÛA?2öw+Ãûÿ¢¼µé¹ºÆ½Vb}¶÷]¶D¦V†žTt4y’œò3ŠšÛ4æ«kXݵtÁc2§[†Ü$¾êšl¶²Nç `¨¥íàcÖõÚÛ`¶*çq–˜ÑÂØQç*Z‚RõÉPþuµ™¯:“±ä­'!%*È5NwtÉ‹=ÿßÝ•µË§W'tGU¢ÐåþLIíñµÃˆ¶…“»bN\(óØqW¥s]·4»›˜– |Fã¼]m<œ¥%$ñÝÄA''“ëOÖÅ—#\TV¤¡Ñ|3YŸ¯[‰¥$µ!$zö§xç,§Ö‘ÍkÄo=ˆõ¥Q §éI©,ÑFºk,ØÓ©ä¢4R·„Þ«O{†¨%@­°àòø¨(Ýÿkdjx¯¡+ûƒš«º³á®Øê@h¨$í NàHôÅl¥%N•Ù†¾µÍÚ¶ûÝÕËÖB‡Bs‚ÞòA'à“ô®®±Û›Šœ†ãŒ¡Öó-´«Ê²{{+çö¶¹?2ìü+‚Ôp¢ƒê¤ðõ5Ô_¢—X-·È éE1˜·è©KqÔó›DÖÒ6ŒÝ`ÝÏÏ5ç«k<ÜWƒƒ†SO_^¿¢Þë.—{Wh§íL-Jm ¯j•„äOžk’“»sï[ä´K(T„/ÊZR'8çhÉù'Ö»ˆ£Å^âFHÚww®Hë5…zc_ÏC©W…1*SJ$¨9œsϹÜôçâ¹Ø˜8¼Ë™Óèê—ƒ¢ÞÚ¯©$ÐòWö1]Y@üE!Dän'ʯœr@Ç5eéÒ E uÅ£v}‰åU&ˆœ©SÜ^ÆÂnM&B€Våø ;ßûÙâ­›-$-@') dûûÖZk¬„Iã$6…%8ÊŽN9Í(Œ ÛJ‚F;ΑÅä¹XNU»8"œ`’´Ž=ûÖ´`½…«¦³÷3Lìº#•ÍwÏ%ÂCiþÀÇoƒóO²ÑºSÉ PÜ=Å1¾”ø†CÛœ©'ßÐ}9ïS-ïØwB7\~yK‰;Óǹõ“6ô…y€ØWÉ*õ¾¼ÔW]õ3OiGK2d¥RÖ*çúJhÒWM_­®ómP£ªÐ˜­6ò•5¥Bó´¡9Ô:°†²zù(`+:\YuaÚË-† !ÂÑÒUŒ•wÏ4©•ÁS¡–å3Æ{þ5²tÃ\ɺʃZ.*õb áÄŸ^GNiÎÑÒ½Gúîku³‹†ØIŽDT•œç;û8íZ!Y=_¯ˆº”°‘½ë§eØþÄ•¦|UŸ æÖ—3ÆsšEqˆÚT—×!¸¤üéžgLu_ëvX¨`;m«ÅqØÊK‰Ç`6«œÖ© ¿¦L³j´–”²—RZQPIîä‘ßÞ‡4׺þ_’±öDîë/“má”%·›-ž0U¸÷÷ù¦÷íŒxaèê '(÷ÿ<Ódþšëço/Ç©ZT6šÆu”ò²xNÐ;bªˆ}@¼XïŽZ¯©¥¶áH 'jûã‘YåVylÓïGF†8„Þ¢“ìññ±wØåºÛéC™ÀY öíS sž+gýˆî*¤]]î:JQâ-¶=¿–éT8êÉB‰ðÏ#Üÿ ¤Z3—ˆ†Y4÷B©jHVÕpsœ …ê¹ Et« I%GÓ/¼-¤)Ò´à¤wWcš¬z“4CÓZÂVRKdŸUpô<šN"NÖ+E^H«ºlüKýSü5–¢%Û£©9IXÝNxÈü+›-«K—õ¯yý£ŠpÝÎE\«W¶i9ÚwJ/íËŒwÿYºÚ¼6Xd'{»r~ùHÆÑÛÓ’*—io·áÉy•á( PÂ{p?.kn‹P“í'¤+ÅÕ‚ÿ]ΫÑ:£ìö˜/:°%¤íÁûØ‘RÉúµ”N²AedÈ( %=ÃiåK#ÛÒ¹>Í­·[|6ÒeÍj^JPŒð”AœñÇ>õbôžá$ÜWt’—n7Ù>Dr#¶aèŸÆ·UÅU¥EAzübxyTÞ(ëëTå>†ØJÎN3ϦvôšNrN9&ª¾oÔ­Îçoaô«>+©ÆIôù®ì3JŒnréhõI’–Z <š)9GÚœ9¥#‘ïE4ºÃܪ7x•=¡Å9h‚3„ /þâ©D¾c·}OúïItð&ÏøsÓþ1TªPÜ„ŒäŸãZ¡î£ ØiH¡¸ÅÍ™*ïNï¹á4¥œ€;|Ö«3ay)¬$aÉ)c;ž;U‰9ëR=o“£u]Æíà F5„‡GŽ”øèJ[IûÞœÄf¦·ˆöYú‹¨îj”Ç[Ð"4a*GxÑü ¶‰û¤¹’Tžw=Hõ/MÛÔU)ùêy¥<—i1YBÖ ¤¶]ÜP‘ÆsÇz•KÒÑf¸Ô›Ýª §å§Ž•©¿ù$Ž;úV|ºêQR“ÖÅo¡a³sêV†•©aD~cºMNÉT–’T·SáaJÈåc“ñÍHúÏt‡*õf³¹h·ÜŸ¸JR#ý¿geHmJ+<62$žâ¤7´Ú'¡†äZ`Lr2ŠÙrDt8ZQîPTÓò)ûl ¤oé,Öwnðä4—¸v8P#51¤Ôœ†7hdD/¡Ò%3§.ì´ëJù1–Ê‚†Âòß÷9ãàÔfçËŒ+·N¢©Ä=m¸Ï¼2')oÁÇüàsI§ìfÆl¦Íný\’OÙ>Ì$•³y$“ÇrM/4_ºÇË-/¥¿ ©cC:7VÄa˜îØ`눷‚¦ØÊÙñÞxJ”¡ÀÉz¦H(mˆ,1:Je(O<€šÛÑiU˜ÙÕl‚mÅ; BÂ<3œlÆÜgâ²r H™‰+#46¶Ó-„!Ø$p*Ôú³!R²¹ŽÔ‘NVs„(zSzSå§BxUMgÔc¨®ºÊ!-ük|p|çëšM0ùB}Í+J`8â±KÝFØû̈ëF®ÓáZäG‡Îû¨+Ú?º=þµQõ6Ø÷êw#®L©êÚw+! _À `Uíud®1m#äš„jkb†¡³¦™k«•ƒq‘FN鵂ݯSµ:éç^$e´K©sŠtT]ù\ßN4q5#Ç“I|¿+«‡^:Ô»¼ûí“BÚÍŽBRÔ’›[޵Œád ¤’¬ò1Ž;aŒ~’ÝuÒ²§N¿Ù-ó˜PDËrÚn6Üù[ØRH9çqQàsït[l––Òëè*‡ŽC|àxÅ.Ÿf»†Ê'À·Ý[ (‡Ù*B»úÆ1O$µ^¼ÍŒ ¼°Ñø¯ªú”¥GZ.öo1-C3+J¡" ……¥Xó¬ïß‘ŽPžkF½ý!ú¹¯ôÓºa›U¬Éy¥ý¢Ø—Û’……¤!E÷̑È«Ù6{’˜q¨¬Á´C<-¨Q@}Ù¦÷ôÄ%[3âp NO¸ pj\]½}ËQè¼%ºíß¹¯¶Ÿ2´ÑŸ¥ºÓÓƒZÛ_¹Ì[imÕ´Êá@yTxY#öæ¥ÓàZú™z‡vM–|l8•~Ý’ÊÊ„¥^ÅX*øÈ©•Ñ­·r3„Ò•y_qO-?Ù*>aïíSø­¡ %–[(·zŒzÖL°„®¾ëáÙü¸xJ­Ów|šÓçmßËSVœ´¦Ð\C(û6æÃm +w·>õ*³0ÜVÞSyJIÎ~idîqhŽ{j_=Ôµ¡…c'>”·kÜåÖ©)½wdgT>§@., };ðj£ëìÈÈÒïÄS… BTžO ÜOÀÀ?•Ye¥Én( )¶¢”÷É÷‡¥P_¤­×ÂêRùRÔ9߈5†]y¤¹³M•Ýò)=Qµj+»a„É– H@>Bò­¾Ù8ǺjQÞä­4œ‡§çJRáø€¹ FÕú”§žÄðj.ܦä35ô¥h.¹GªÂ=¿•H'ÜwõTd¹iBÛ÷J‚H*PŽ~A®ƒI¤¿ÖÂæéSMÚ÷OîW–ÉBÕ9ø×rd–mD¡Ä(ÝPìAúqV}‡¨qÙe˜Ñn C(@NÇá¥'êÙúâ£×.»ê•$,µ9]ԮΟ“ïóëëZlZæfÎ+ŠØýå#?…mÅÒ§ž[œœ<•xpåkÞ„êM¾j‘&xSh‡øj̳õjË7ÃiR·Àe†’\u~ÞTçhùV*‘ÑÝ?Ór\LkƒÒf6OÜkö@Ÿ’95ÐZNY,PPÍ’Ï UŒ©´ êú¨ò:¬1x§hÓ‹9ªXX6¡&Éö—“*L`ó­–¹ =è§ŽÊùÑ]¼ÎË>âéÁ¨•‘°Õ’„g!Ãÿ÷[¤ î@à€ri|¥ZÛ)Ÿ8ñЦ÷TV”¬€0sÀ­ÔÝàŒ X™ÛIL&É'„ñǪÝ1dzœqÈäW–—íÉ;Ž@äf‹w w>l|Õ€Š3Ô›…²ß¨5Ó•k±]ÿVËX›µå¨¸”4˜Wõ“¹Iî}³OWÞ¢I‚½KmÔv– ?g¶¢äUY}´½ÃnJ……'olƒÅ7½Ó‹Ü®›ë+#r­É•~Ô)ºERœXBÇVÕ¹ Ã*à9÷Â]¡ß¾j-S>d¦[·^lMÛØIu·µ«yIÀÜçœzW6ò•L݆ŸÝ…;v¯¿àZµ5Àß­–›å™¸+»0·¡©™^6 R›s(N´ç# óϦû7Q&IÑÌji6ãÇš¦#ÀlÌäHq{'n€¬ùŽN8ô§–4^¥“³^¯’-‰Mš;ˆ`DRÔ_qÄ‘°mÊ7}ãÍ1@éÅÙ}+´iy.ÁTû[è’ÚÔ’äu­„¨ A ñëëëºò{Ú‘'Òº™wi×k\¸ñã϶8Ú]Ly3N!ÄîBÒ­©<ò0GôÍW=¥îC¹M‚óߪSowÃLÕ- iÍɤ€Ú¶ò@È'×Ö¥Ú'M½Hve–ÉlRÊp‹j·žT|4vÉÇdÔYè Íçú~ˆOÀHÔ1 5ÅZdžXÎòæpxÆ~qT¨ÛŽ…­$“^´b§õEéQ6Çp²C‰pýTnqvLS­”…l(pøi)PQ•º¶’Ú“Šz„ððÊ{S}ÛjBˆ#µh¢²ÊÂ*Jë2(~¬[Ùð\uÍ¡#9ÉÀ#ÔW]íLÅ:‹IJ„,‚;¤ÿÚ»¨í2üWRF1œ×!õM‹{w"Ûj@ÂŽPÊ•'œ(\úRzFêIèÙ®#i[Ë´Á.6Ú³»wf«$ü=©DÂ’¬““ê~}©2sœþ5–;*{Ö,>†^UP.Þ©uôŸjì’Ïæ?>+±ôÜÅJ‰xJ–Ëa‚x*ÆOoõÅpµ×ã]£É†¥%Р¦Ïc»¾+®úg©ÄËL Œd¼ÿŠ Ž‚™iIÏÐžØø®F:žJªkfuðSâPÉÎ%ÍRRPè !Ð Iõîǧ"œ–âPÆæÅ(…y½*1m}d;[+J ǘ÷àqOJy)K™AS‰O ÎHWö¾žÿ¨Ë@šÔuƒ(!ä©K@'¶}…;¯.4WIÁ*ËàÔ.DÂá@7€µ…qßÛçéO‘día»Ÿ¾SÇp;S ò)(µ¨à¤+‘» …$ò3ŽN;f” •%!^SŽÁ@î¬xócõÅ5;0N榜k*RÆÐ‘æÜ=>+ȆÙHRAãžr>Mlu-¥%nÞ˜é¾Ae*ËM•‚œ}ãZ#'ÈºÔØãÑ w¸ÀÎýªÞõŠ&GR@eŸ.NqíîkJvç†Äóº°+G*ØœçƒÀÍD™tfBKêJRÇzõ´¡-Ø“éé^‡Ôp<ÇœúVÄáŸLšÍ23޲ÛiNHãÚ‘j{ˆð‘;”H׿çÞ’»tGˆ —0ÚJGbxäóíQ¸sEÁó&Få6‰ldƒžG"³T©¦TLawwÈÛs’ˆPœ8Øáܵ‚?ô®Eý#îÎMê PPêÌxèRƒ•«$ƒø`þ"º+YêÐb¿&D¥3´\X ŽcñÛS\ct¸®é~™vxï\© pƒÇð?ÇáLÀC=W>Kù#,”ÔyËø&:E˜2­¯Ç}aµ’ŒöW‚}xÏÍ*±¹n‹Sø2c¨–R±É ÛÎ}qƒùša°-Å5M,î[Ÿg)ǺOãŒTïJZ­÷™©DæT•Çå2­«I<Ç|V¨Ú2•ûneÇUjœoîØ°ô–›jdT‚TE?§F¾ÄŒ‚ ƒK´ ³srR0— Pàdw«v%—ípÀYNà;צÃÊ–.š”ã±å%&¥dî@4Æžf+èP@ïÍZp¡%1RR¤0-m´TÙ(v8© ¤¤´¦W÷½kšŒUƒ»³í©NZ8?¢½†vmIýÓÍ̪›‘Ñ¥+"#Óô¢O¢0  °æ}ÿ¬UGäG\i Œ³Œ)çNª.•„èå*ß‘ŸøÅSÆ¡„ÔÈâTp ÁÎ9ù®5—Àåß4æ†Ý6öP¶{)Â)}Ä’xø¨û©§¼@)àŒ÷§¦Þ)$䑃Í4¡6aYµ¤÷òúSUÄä!òšSj} ‚¶óØR9O!‡w¤(ŒƒžAÇð9¬Tâã6n«%(# kB#ìøô¤ñQâ­ ©[sߊÁŇe~Óî'Þ†ä6»€e—§P7)°¡¸$ž=¾kRVFVîÅ4ä2zßÀÃAk*=«%¶´¬,¤ŽExRXã¤9fZŽK+Ð+ Ilgulû2 ¥,î¯Q¸7°GlÖKmi„Ê5Fù K˜‘YàÒ¼¥mŒR(râÉmiaö¤m% -¬(;ŒZQy€B¶úf¦Z¢±£ÁZÙ=CÊ;Ö¨áHÚœzÖ©o…8@?•Fò5¹Z´•+Ò´çrʈ¯^Äãæ·Ä`¬ó÷E?H«³>²vFû{=ÜWá[ÝVåcÐw¯°Äp+ăžæ³»·viJÊÈØ•š*=éO޲µv­³I+ ÅhyA†O"­e~l¬Ý¹!®ñ1»x.)a)¤Õmªº³¦¡´â\¹³â à¶Ùúf›:÷¼x¶Y‡CÇ+‘%Í¡¤ûêO5ÌêÓ/´©’ï¦<Ð|Æ4b¢P< €sXñXþ”VäPÃ*×r•‘3êVpmØÖDKÚx\Á|gŠ¡.ÓŸxå÷Ã;•“€NŽü÷'Þ¬‹œ;+p¶\%"|$º’¢HŸð¼OÓ 3%ØT×Ö[ujRÔžsœœùͳ®óIZ1¡Ad§{½ÙR¶‹«%?ÙÏuíX œ~ím“%Éø‹;q©OaZR¢„(ûŠÒ¯mLóµô°|)L>Gïãñ«¿¦Wg¼¢Î@ð]t?Yò炤ýxÏþ•Vêël+eÅ›ZV ò-ì—T¥d‡Š”žOžÞ˜«Eˆj¸è{UÕµ”;á´Tâ@Ü•§Œãçük™•áÉúGo¢bœ§~®_v{Ë)uå­Ð¶øJAãÞÞÙõ©#RÛVw'j U´ßhÁÜ~=+ž´–£uI\I ð%íx+¶3œƒíM[ºrúĈÏÄZÒâŽINAQH''ñàñ\ØÏ+Ê͵°í+¢b·û9[Û|@7£•ëôãùÖ6’RBYd¬ç'q88>™ô¦¶n-)…H>d «*ããßéñMÎb%â8j>^q{|$¯ +ÆFï| ~ulöi£&KèË6CËKÈpá¦i ¬’ŸSÇÏàÜê!8=ñéõ¨žïâºÒšN[˘åH×ð<ÓÛo#xÈ*y„$àg?>Õ®:êŒí[F,uǤ«+=Åhb0t‚§•ŽHÏ5µ—ѱº´¯jÊJGt‘Ç>õ¾*Úh ¹…gÌ0Gµ>©é¡Šboó¥;гøãùM"*ZR„§¹9'š[ÀB––Ôwɽ'}ckj ”úp{¯ÅYØœÍ1³†Þp$þÍ'p<xÿCæ´È¹%¦}KF[É Qî+uÙôÆaÙ-ÈJä“ßÓÓéQk¼ïm©M-•+—Á§!Cß·ñ¬u^Q«¬7jë«¿©Ô¶Õ—TæÖO‹œÿÏùÖ¶f¥¸>GGŠ”à `déèxÅC/w.7VŽ„©¶Nõ­ûùþŸÆ‘ëL»D3.OSHC ¶9Vâì09>•Ï“nZ#KDŠÓô‹Õqãé¸ÉB\} vVÕy‘…$þ@Õ.ÇÜòžAɬ®ÓäÝ.’.SV~C…kPíŸað+Ô6´FSÛxHÇÿJôXz …%Sƒˆ¯ÇªåÉmà=ÚV¡fy¦É;ÜmH)î¤ò>@?ƧZTEûS(œÿÙ¤?y?¶ >‡[EVØÙo%%Yq?ÙHç#ùVk*¸Ea)p…ë Üžß½íõªºiO0Ê–­G†ýz¹ÛúJìÓq˜t¤- …$ä‘GÖñ\¿±`¶¼™7[-Þ ~«YwàI"¸¿Né­c," ¿¢e•®_L$“ŸŠé®„X,úVØaÛÝ%¾wK˜¯¼ò½ÂGµ=cêM¨Rwð8œÃß;×°¿Zi©QR¶Ô€sžæ’Ÿ‡r RSßæ·ZÂVØR È—¸¤myñÁ®ìe(«HË“2¹©‰ˆQ äñŲÉjm· …dƒØ+5ZÐŒ¬‘ª•Ê7lƒh&öixm9÷ráçÔxЧ’UYFPµhØEîŸ[$#Ì´‡ ×öŠ¥)Väù»ŽüÖÊSS‰†PpHA2yaN0Bƒ”ÓLfç7,DCj;½»T‰L$€´ùqëNš^[…÷FìsV©5¹0„䢊«£v;díWª—r²¿.àÆ¥’#ÜÄj9Cm­ «#VHêõ––ÔWK&‰´µkƒeDˆµ‘eyB:ÒÉÜ^ËÛ7•gzR¢Ü€RÎE­¡ô¿ôezbwÚ¿\^^ºàìð|D¡>s»>÷ÏjŽÆé‡ƒnµÄ7ÌýƒU/Pîû'õ›‹‡ÁûüY÷ùí÷y®Dª9;›#†”"¬µ×ùC×[Ý­,êËTè¶É׋MÊ /4ÊÙeó1(-•§rˆØs…sLæ¼ÑÖˤ.»ê.raÌy6(ªK±ØS)R ®wIZ°s‘÷§Ò¤·¾™1vŸ«e=xu¥ß¤A•M2 ½ J $/% àÁ#æœt¾ŸoÖsõ]Úú‹”é°›†´5ìí!-¨©%#z©ÎIäú(Ud¹“ìòsM®~ZþÝÚõ¨çëùš_N=oˆmЗ!ù¬-зR‚ JÓ„á*É<àZC§µôëÜþŸ)¨ŒGcPǸ™Íœ©M»jp…{oÝèr1RÝO¢æ?©ßÔúzö-W “Pv }§•!a;’C‰ÜprF Ó+8n,-*Õ‚î¨s4Èy =&?Úú_=â$)¨Ù`ûö¦ñ•ÅÊ•Hɯ[¯¥Èn¨Ôú¢ífeQ®L[”ÏPÅ”˜>fQ ÷y†{y‡eŽ*{ÔFîѺE¨Ö‹Š?X1fâå! ”´¢¢”îò’äàyÆ)­}0_êZãê Á¨“¨[–ô@ $…%D)CrJ‚<=2g—ë÷ sÓ²f¶‰{ÐÜ”†0”©ÆÊ ÃeYÀÎvîüj®n+^e©Ñœ¯~³éû—XˆÓz2ÁúŠ$·tãW‰“\·¾¶¶ÒHZw+ îYWaÛ&”·Ô}Ipµé–mpmq¯K¤ËD°øZØeæ7eÄà…)8FàœŒçêOý•U’çd¾ˆW[m6‡zŒÌ–Ò ›Þ’À…q’Eh·ôÎ,¥{»ª6)ò'¾ãÌ….k¯%{É €žVOcÀæ’äÞã#J¤t^¶ü“˜H}0˜DŶ섶òÛFÔ©xó2p Ï5¦t â ›áXïK~†Dfâî’‚’³cGÚIy\JX #hMl”ØKÁ^õà­.yµ3Ft=JvŠÚÈÆV®Õ­ +PÒ•:)™>C¢¹³°· “ÏÔrÝâ¹{NÑîj@¥“Jê%¥SZ2ÉÆÑ2ÔwÕ=µýÏ]ë­a$9\‡‘“öv’ †0@ö<}i².Õ‰l»q¶>ÓAa8ÝÁ'ñ®ë F´â_¼Çm¶d~Ñ@—rG”ŸsTÍòú‹öyøJRd2âV¦Ö¬-$oQô®5IÎíMXèaj·—$tØoÕöin†£·f|Éw!'+Q$wô¨3Újóâa§ÎNÐ<ŸƒW%ÕqË–ìÆZia/6âÝ ÚHÎFO±ªÏPjuí¶%Iݽîã$‘ø­6Œ§šû¯2Ë*ÍEÇb+‚ä¶b¯ SŽ%ÏlœrkÉQœjCŒã[Qú]§/‘ÈR›l—]$œàsÉù8o½6|W$8p\<$zãÖ›Û}Á'ØÑy”åÞîô§7;5×P€Ó e*! qùp=k¡z 3ú|ê[kÅØ¢6w%¼ä?x {W>Û.&Ý5¹m6‘"0C­¨~ê’ ¡üÖºôj’㨻¬µàfŒ@ÆÄ¸7=¾{W?Ö§gÊßc§ÑíÆnHd×ÚjL)Iz:Ñ”(-§32p}é«Oê),ø^VBJiKÚR¬…“ߟÊè­Qd‹&#¥–ßR ”ã `ï§ü@öâ¨mq¢Wh–e°è*O)RFJÒqÀçßø×&*ÝY|A ÜN²ß™7´k•ñ¼D«…yQŒö=óéØ`jMöæä#([{Ùˉڳ• ˆ=óéÏ5EÛ „,¡â*tà ÇáR]™ ø»›dìX+ó,wôÏÍ.I§dÉ–ÕhXÌ]d¸C‹iÉ)R€HÇÉ$‘ùT¦Õ¬ZŒÚyÓÄå§@G§—Ÿ1ÂH8õÍRÓ®JZTc‰ ©h@n:ŽÕgƒ’£û½±ë[g\Q(Åjj2äpTÒ7©`zŒóߟ­Z%3ÂFEÿmÕpÒC‰~¸B–p+zIÀ'Ø÷ç⤺%N6c¾Ó­(¼«žÙ>¼GÅrãÖÈÒÚS±$OKÅd-²6ì à©@3Šw¶Á¾ÓѵÒÊR Œ4U´¥8Nùþtèⲫ12èôõLé(÷XªR’âÐÚJJ‰žÿáZß½AФ“! Q÷Ýc#àòEs«‚øÓ súE!‡VCÍ´ö·8ø&š.—=E!öa¢BŒ åvQÁ!XìqœU–1²Gw–Ö¯Ö±æ¿%¨ÏöV›YÜxÞJ»Ÿs´þu^ê}i.å0Á·(¾–ò£œÉû`T0E»Ë¹¦*¥‰#±’¶Õ“¹GÔŽ2¯Îœ-öw#<©.ÉXe¼’qG'rVGÔÒgUnÙ¦ž.B¸2LVK]7IÇ—•ØsÆ}xâ¼vÖYµÉ»\·'†)IÂAPÆýÐ~¹Ïém¶&B¶2ØnûéVxWsë‚r{|Òý|ÃÍé9ëHQeQ =Ò'…Ô¼’\Íq´YÊW(Â=Ál©%IÝ\ŸåNZ…"8S © )³‘€Ú}~ Wãšu×v—”Ô Ó <¨×ÿÙÖ£’¢È#Ødô¦?ɹ´¥—9û©á?Èõ”ªªR<}Z\:’‡kÓÁž´–ši˜›†÷ˆRÈ?wžãßò§TXä}‘™hCûâàIÁàöø¬dZ$8( ]ý³‹GNp3íÀþUc@·É”ÄYl¾ã;R’;¥D ¯b@=¹¬¸ŒFDœMøL*“j¢Ûb/£Xš™Àþ¯jhPáRÞá÷T9üë¨zRËÏ6•:ÚBÆ20Óâ©X¯:™hLhÊŒ‡奷Ò£ê}+¡:>…8ÛA(ÊOsŠßÑ ‹.&ÇŸé—ûÙ-±kØB¶$g§ƒƒ„Òf ©¤xŒNÕ°;•ŽA®ÔÚ›º9±N ̰–Rµ2 ¦R®ÜQ\·¹Ô[Ž•] ¹¢­Ñ ˜ZC€‚ãN¨;¥öG÷ÅW*·?*ÏoY*B2¼ÿ}Ur¦:LPÒÈVo“Tk™Í¢ž"Ÿ"•nA#?AéRm:öxúâš.ö·#¬ºÈÊ äJQ¦f$f:Ô³À4ÊíT¥x• :¶‘œ­[§Ú³7unë ÈN;à!ä¸6)ÍþÀ}÷¸÷¦‡µ¥³õÂm*½[›¸¨€˜Š’€é'°Ûœä÷ÅTâ+­õýP¡%õÍH6Ž*l) ˜'þ¯Ò™ç'¦×Ý&âHÕò5Ž0Áløîº©IR$$w(ÁÞ8ñJ§Æ7µÅÕÅTm­¬_Õðv⇧ǪÐöÁÇnçŠqéËQÿö³auøì¼[ÐP”ÙZŠ y\cóóQVœe²³-K5+2í‹©4ô»Ã–h—Ël‹‹{‚â·% u%?xƒœQéÆ{ÓBµ5ŽCÓ¿RÞm· RÝf<”8¤c#“œdõwX٤ͷ ®‡Ð—¸Ú’Ïqµ\¤Ã[)û<•¤!Ç‚ÖáÛ» Nøè˜P'ÀӳƬ·¹>Ï`v"­ A He iM¿••…$w''Ö³Sv•‡N¼¤´^¾£Ì.«-vMàf×íª§1)õ%ˆÈJTrp ŽH Hã“VºîQcʃo*; ©Qeüº¤$ìÏ$sôª'§ƒ tü þu=ëÃè²ÚlZÍAA:~îËï©#$Gtú8áU“ÌËP©(Órok ¿ä”HÕº}®R¼CSV·Ôõ‡F#-#Ì•ŸÝ#æ¡òú™m…U\§H„`XVI‹1.ºòö[R8ؽéR@'œUUÛ&Ê×¥ä!AÍvÌ)Ó@I#ÅCë~`ÏËjH$ûS¶³mÉ®,ÇiÇ\TxP„•ˆ‰ôå«AÄÎJûMý‰íÇ©ö¸—í.Ó3àMå¹jzc¯„†TÊ! öÉ+Æ>˜ïVŠío½[Z¸ZæÇ›Ñ”<ÃhWÐŽ*Ÿ›:ÕyêgJæ[åEžÂb\Ê]iai ÙìG¨ÏáOý!¸:Å#ÊÛzºæ”¤vHñØU&®‡P«.&Vî¿—?ªtÓ×±dfÿkr椉”‚èZ~òvç;‡r;NIÉ8š 5V¦ºj‹ÅírØŒô-q£gf)ñb2™>^yy$oÜ9ÂRw€3ÍtS ÇÍʆRŸO°ñ µœdúÒg%-`€1KŽæ‘<ÀVT8ªÁ¦õ4M4´ Éõ¤³cdž)r”ùHí[_@-Sóåbc ”V-¶“l’ýí1¾ÀÚ ž/ýÀŸšâ­SrÓꧦ\q¨*YÜ?³<þîAV ÷®ú꾓‡ª´ì«<òøŒøü%íQÚB‡>Ùª†s¤šbƵ6d-}¼IÄ?NJʼnNsÒ-ßäZ…U‡“•Ît»ZÚ–â·‡ß+8KiA;Õì)¶n’ÔÂ@mëÁ¥g0¤cþ×j¿õEž,{jãËe¶£#*#ilÞIUwÍz¦ž1áÈ]ÝIN"@RUÿXgÍõâ•U)<²6TŬF´â7GµEÓÖÒ—å7ö×› –sÃiÜ0ïÛ'ßôÇrÜéì¾¶œjÚ••¨`­#ïcÜüW¯´åÑçî ‚]yx'h+ç°qð§¤h‰6Ü‹óÿeŒ–Â’ÑXÞ{%^‰'ž=*TÔoõ~´#‡Ã´æDnF•!p¼dÅqÅC¼¨#w©Æ3ó] Ð+ÜIòa;W‹0Ân=Á• ) kʃò }}ÅRšâtY Œ!¶ËHe>im >¿Z›þŠéÕÁ¥”€äÙPìC‰ÇóÇãHÆÓ\,Ï‘«Qº©.g[‚Ò#ƒEkÀQÛžç×S¤¶4‚dÆe ÁOˆ´!° ¼žJIì=À÷ø©!±  ‚IGãZåÆ[Éu´:[_*o' ÉîÁ…r-tuã,¬®e‡qCI}·]p·¹XN2œŸ\vÁ?•{tÐY‚–Ø‘û- 1ÉNG¨ó늚rÖÞöRrò–½ð=RN*GbL/ºÒR¶ðIÏsî>qU…$ôcž*pÕ\í pŒ”Ém¿ „ ‰#ãœùÒ-.CI\¶e>ê”<H¹½y®ž0£È(%-FBGïŸõšÑ?HÙ&Ç[bC$á²@ç¾G¯­ÂKx²Ðé4½ôssÊ’r%ÁµA$î9Èõ9ã=«lIW$ ¨ÛKž8ðÀ_Ž1Î{ŸŒUÙuÑ¶ÇØ\ð°?!ÿ•GgiÅ1½KŽ”…a’O=¾ë4éÔ†èÓ U)­ ÅÈ÷§Zð^ #x+tJF23Æ8ö5‚ôóNÉ̉.º¢µ·«jNqÇ€ò©Ô»jØeiLrúW”¨-8ç$¨û}>)ÑÛSKLr’U€¢=¿ò÷¤9IlhUØŽ8Ëq_û4vZh8Gˆ¦¼¥*Îpµ“ëY±n*|;2;ëÝ’†[@R²?xœñœzÔ‘˜(,xˆÚóå( §Ë‘êOjrµÛ„s”!´ ¯§4½YWQ$7YíªC C­ÿðM}Â}3ê~kÍsk-h‹³Î ”·Î¶ÞÕ4´[_YíåÜ0 ¤ÝNe ÒS¡©)R^eHq%E ¤ðFG#jthÚ9™’Uúé#’t•ýK£fÀEÝÆîćàBu%AäùƒgºTœìGÒ¡ScHƒ|u/´¶žR²æäöÏÞù9©\Ó/Jk;­¾ëqû\¥UŸ2Ò…´ãÝ* ýMIæÛíW«•ÆYwˆï†ãsû2æR õ!'ùW^¥N¥Ò¼eªøØÈèÓ«Û³oÈѤ[l7!m$¡h]JS•Ÿlð F=½ê@ã ~2˜ˆúmïlÃ[ÜØãpÏ÷'ŸOjk[LÚâ–Z2I!+Ït÷£æ±‹v™dU¸çõEE ôq )'Ø‘ØúÒ+FQ†kjÇÓš«ZÐ’²û Q*T-BˆW††éP'$¥+W²UÛ$rc]]Ñu±ö&ÂFÞÝûŠæm@ë–xVä¶\iÀìÉiYó2¯t㑟lWKtͦâ´ÊwCi¼rk³ÑR”ZŒyžS¦$e;Yó.ø+BqXK€‡<í*‘ÛÀ,ƒž;ÓŒ²JÊŽß@k«+Á¶™•55fPqŸØ<œ{)ÁHB™ ÑI”ÔÆÆ*×+Τ3¢íêmwÄÇÿ¸ª–‰ï…~U\è;“ËÒpbEG?´Ê‡=ÜUMà%ƘËË V;WBTÖTäs(ÔvJ#’g)j 8€søÖ©Vd8àÁð–9Àõ¢Œ¥EçV”Çzq.<€|'öÁ¬Òr¦ïkŠEi² «$ ~¡~`’ä›Ì¤Ÿ´Ë.:–R‚’|¨É'éÏjyc¸ FÁêMsþœvõeÔ½[×þ¤v±> Ûï@Üâ]ó ÔU–ѳrJGpGT·Ìbà BWœ‚3“ž ØÌô¨9âÒƒMvùqú„ý)5Ìùô¦=-.áhéúgêIŒLz$EHyØÌ–Ò[JJ€ *<íüš¦lpºÝ¯:iɲ´Úâj Їú²!Y™n%{SŠ*![Ž3åÚ¢:OQÕq„{²öÇ{ñKÄT–†+ŸìÝUÕS4ìkzÙ·§V+U‹†TB*wiVxŽþ©×ª}X½è›¤‰,j#ujY~ÌÃ.M²TySÂè@÷©7¥„ÃMEÉì[é .S‘–Êä4q °V{;JZÔbÚ£ÅPso34ïYzÍ}€2àY">Èu;“¹1›###"¤HêV¢SÝ%ALjÖœ]ËöG‚”4¡áù¼¼¬÷Ï¥-Ô“/ ÔÓwíúظP„¡$$V°TIÕ¬z»zÓ²IÔ:Jûû² É·AaÀüVÔ£…x¾!IX9=‡¦¸SµµËô•ÔVø7ø ·Ô߆‡¢­m†T¤©) X+å~¸ì*{²ÒÅÂöŠÖö/&ßaÔ•4òHQI(P pG úViPÛÁÍsv…ê;Ñßµ[l–†¯7mRå¶3m6´Gñ–—–7éØ(zcRHÕš~N²Ó—¡i“y²ÙMÚ ¸¬­ <Ž mJ8!JƒÈ©JèªÆBɲétä§½dÙ*oo­RV¦k¨ô*îñìêµk&Ý,±·Ñv¥$²¬+;Á#hõ™.Ÿ£±yZ£©Þ:Ü>©IÂw¯gÒ¬ÝCÍ%ÏírǸÅÞ’•õ¾YPZQÙ’{UˆâêO½4Üc$‚)ÔªXmH\âÒYqöle’›RŽTôpWãŸec°Çןj©tÇM55Ô)ùl‹s)íö¤©%AŠú¨,ÉuEA'5 Ÿ¦ «ó$‘óYeGRvÓÄ![‡$r-×Aj´FŒ„HlÈO¾i½2êd˜óX—5Ð2–šQðÐ3ÝK5Ö’´“c>\SLÛ, ‚­£Ôf™S£ê%¹hô„¡ºLåk®»!EapÓžÈBÉÀúâ¤eZg¨qÖ¹Iy2S ÷ ägÐ*Þ¾Û¢!²®0{÷¨¡2G Èì'Ç2w„á[}F*Ez1Tey-‡`ñsž".ÜΡ±:]Œ„¬€´à œä¬Ò×™VóÏìñþ¹¦í€õ±øÃˆ<¯Â¤% -»§€¿Cñ^~1º=¥iCälpùÒ JˆçQßJñˆêŠÆ×KÈY#Z“Ç©‡ùóK~̤¸62¾;})TU­¡æ<‘ŽxÿB¯®¥\´<·Ét+nÉÈó'œü‘ÜSû¶Zòãpǯze’Ìw¦FÿE§Ê¡øŽõ“)+@l­ÕÆJ³Å5JÂ%õÉyJVÔg9É8•èîH> ýäÄ{qJ¡Ba¤ðÒJ}wçäÒðPÚœöÂ{QkîVöØ‹¹§Xqh[¬©d2ê¸ÏÂ}©$­% Å8•!½ªVJRÏÂ¥k <í]²kÀÐ|gߥº0|‡F´ã̉³¥ÛhlB@àû£Ò–F°²ÁÎç"¤)(Ýà+¡dç´ûžOáTT`¹¯7»”È@J‚Tyvæ¢zퟣ$•©Õ$'¾wߦ²¿d…%i?x«¹úÔy؉zJtžÝù¤×ãd2Œ¬ó3ú™¥®ús¨’”Óób\ÞrDi °Ú£Á ìB³ÇcH¤K• oïÄRò"ðv8xò‘ñ€Gå]ss³ÐÞˆHJŠNì}ÇÏz :«£ÛÓ2}¹8Ô{sH%¸í$…I{8Ïñü ? U¹$Ö¶²‰o'WkÝ®ÒÔ7æ²ÀSrRëƒr’ãdcØû{·Øå¡h+ignœJÙ õ ²êçÚ!¦T€ Œ¼àJ}{÷5vé¸öëŒd$ò H þ5èðô(NžI½O1_V5¶ek¥´|tÜÌÀ‡ÒꕹEG…¯ù×Bèh1â0Ùpå@Se²ÈÛo¥°ß‚*gµÅŽÒJÀ'µ¿„§…‹·3%JÕ+Ï4Øûïe*oîŠÅûÑdøm·Û½d܆Úo  \dŸk •4é)·™hZ¥WÕz’Û]Íð6«ØÑQ8¬ 8•mWÖŠ¤ði»Åصi)S„[±jqs–^ßìo»è›–¢Ð—m9®5"o-NB<7c[Ó°Rw¹Y;‚O'cÓ~‹±ê{6¼êÖï1cÁi¿Õ©ayÈ”°³¸€ì3œš°îŽá¨wô¦FV¤#=ë6u[5ׄTÕ·!NÑ7Çd±Ô ÿ…«­±¶„©¹(ò…nãp QÔ€=°Óléd—CßÒò¹ÚæÝÞûtéYA|JÞ *BU´§Ê]Žs’jëhxQÀíLw·IN2rNiTãÄ™5h 7vƽ-k–0l×û›W’ãJeÇQ0•¶S·nУŽ3Î}j1¤z¨tdxÖ»v¶T7å-˜-ˆSÉmJ*ðü}ý²O;síŽÕ1³=–Sîšw}!Æ Dã’c¡Ô‚|ÑR[:OY]ê nêSN8·‘mû?•- Úœß¿’|ÇîúüR·A™c¿Xcë7£Ù®×\ÓÛµ· ÿiÍÙZ”mä{æÖ§ð§HÊÞÐ5UµE)áéJé¯Or¨¸t鹚Ç[]¦Ý[¢pކv©„¥¤·¸/qÜ|¹û£ñ¦»Jî0¦i9^åÀig1oh@KI ”¤,’£„yóÙÛÎjÛº0R¿#Šm)^íÙ8­Œ&®"¥%j½^ÿÉP³ÑE±gfÂ^ñ´Å»&é ƒèPψ½Ùs˹#îãvNpN#h9¬õYíwjÔb™¨ó¡9;â¶‚“„¯pÙ3ƒŽj\ËAyVsŠÝD;´wÍVqV²&E§b¶ƒÑ(MôíÍ)#P<¹(¼*ï àÔP…G{¾B¥ÎyϦ+{$~TmQ2õ©Õr¾ê êõNCMÆg C!gÔ|Ü‘éÍYÅEë-üšF¨Ñìô¶±[EéIôñÓ}ãF¡hÇÙ?Ý›’Ú·û?¹ýîõ)Ñú~ãb›{~v§¸Þ›¸Í2cµ(ùa çöHäñϦÎ_{h5¥O94(·©*àôõ¥…{y­2JV“Ï4éÍ ¬qL×óLöXÏÅ3%µa*É &!¬¼SÉø­ç%5Wõw®ZG-QZ®,gìqÖ?gÿÌ_d}9?Íú³¯zúüêÑo}›Dup>V¬ŸÄb¨ñy}ÔèU­î£¨z¬lšfÜ©wYÌÄAÈ@Yó¬ÿu#“\ÏԸϛp,iv mchzB”¯žÉüsøUYp•>âë“®’äLyÃ÷YR–~¦§½ éâ5¦©¥"Û )~àòÞNp–ôÜxúYkâ¤ÕæÎž¡õ¼Ù–„éî²ê Õ»\e1lÜOÚIS§Ô6ùíõ«_NèxÖ›œT£ÆsÃ9S¸Vµzf®Iìlj ˜qC,¡;m¡ `=G^g2ÛtsÆáî+Ïâq5*;r;(S†±D¶ÈÒQ!# ÀÍ?´P7„­#¸?^ 1Ø <Ÿ2}qÞ¤m¤- åÇÇze=Pº›ˆÌe ’ÈÞŸìw‡¨­­¥¾’9È 8"”œoÌÞìzäÿmaÑÈqþ¦$-ɘ5c$!YÆ8·°ÖP¡’žáJò}x¥m¥²Õ+Üð>”¥ ³êêÿ ¾Qnb&””§O¹Mx®xPÈ>ƒÒœvFï‚çÆkb@I„¥[)Ææšu_q“ê®mp y@ü&—¥Œ«çšÖãXó)X˜¡¢3ÔØÆÔ$$c¶8­ J³¸ÒÇR””üšDòŠ•µ$äþB—&Y&nRü&À'cíóIÎ<¨ ã>çÞ”ÁY ³æ=Éÿ_Ω>±õÆ×¦þŸÑ®G»_)~`!q¡`{8çÀàzçµ-ÁÉšhSY(ÁjIú…®tÆ‚iµ_$©SŸATx, ºî=ý“ý¥qõ®Kê6´ºkÛâ®÷rPÓj)‹ ?ÔÆo=ýãŽêõ?•1j ÅÊç>MÒë%ùÓžXSÒ\;‰??àvÍ1çd¨pBAòóÇåZèaÔ5gQFž´„—â'ÀXR‰ó`üÓÿOµÞ Ð÷¾<5(xÑœ9m_Ocò)•*ã!8<‘þ_5‹å*!)HŒ…VÞVg+†…[¾ÞGcôç¬gR²ÒcMDi؉!A ϲIá‡?mÀÔ ¸‘Ü/Ôâ¾i)‡çˆÒ”ž`RjÆÐ]lÖZcÂb[é»ÛÛÀ ÊÉZG÷V<Ã|ŠÓKRž›£Îâ:.Pwß­Ë.ÇñwÅ!aEçŠsÇš¡tÇ^´µú"ûzí39f_'Ø,qùâ¬[&±Š–’´>Ì‚¡Ì¸—ÿi5¶úOIhÎ]J3ƒë"tàmµ’}¨¦H—Ö&((“Ͷ3Œ•ÓbQÓ[jÑ–µ}ï·§íOOZÚ„ÒÞmðžØ¨§M.2™Òp£”e‡íV —¢…wJ…s¤êS³oC¡AR« ¨®hÊœ·6$*²º$€ÒÆô­÷u„Nq”aÝ“HFÁ Q>§šé­QÏz;šY (?–*}¥žiP‚R0@Á¨>*Ï­K4ÂÞp}î@5Ÿ¯LÑ…•ª ïO<ëËKE×÷”ù@àÒ©IîTqO±P˜±€Ï8¤Týºj+sE?ܨäö2šî´Nj5p•:T®É:R‘“Î)›œvø+HªgXu³HXÛP›¨b—@Èf2¼eŸŒ' ~$U!«IçRÛ°ØÊŽN×f¸Oÿbΰñ£¼UÍQUj{¨ë¹ÚŠ:@XíïQËÆµµ­o!¦Ó÷–âÂR>¤× _ºÓÔK«ŠZo „ڇ܊€Øê9þ5 Ÿt½\Õ¾}ÊTÊʼWйüMQâ*r²Ž«?zG]kž¿é»A[q盓éÿ‚‹Êíž?,Õ®úã«õ1\[kŸª!,PÁ;Ô?¼çËZ7±P*#Ú”6ÛMà¯ÊAÓñ¤ÊNNíÜëaú"œ5—˜¶ûÅÇœñI󣜚V[JÔ$‘‘é[vá­Ê!'Ë„÷¯v„¤“Œ(ãƒÏÓéUnììÓ ¡$&˜µ—X@H)IR°;ñÛ?tèo.*íÚ–Ü ‘8-‰õSXPÆ> þ5ή%&[8l”¬(;ž3þ<ýµ"4¯U­2e:– ÎÌeG%΢~Í*´o“S×ÁÖ÷&²ùó`cà∉q²Þ6îÁ ÷§™l©R6Œ¥[TíŽÆ²b)(ŒÇÉtî̪vB[F[V×R7$í ŽGÏçš’´´¡ $œ߸¦e6!•'pyO=½9¶…)…6(8X ñèGÐÓ ²èRm=EÁͪGˆN6’”ƒžÝø¥¬¥$‚È ÷ǧÒêØ ’ ü” ­I)ãœUïb–R@XÁgÊ?×4¡*B”P àF)39q–¼-…çwï'ëZ|T¼·±”ŒvÎsÍZåw:ÿ‡Ê·;%=Íc ¬ŒœcëÚ°‚±â)*ÁÝÜžß•k¾\-–KjîW»”Kd$ —¥<–Óøg¹úTo¨[[ ÆäòBGjeÕ·û“³.ï¨îlÛ`§;TáË+û- rµ|Æ©~¥~“öˆeËwO-ª»JÚ@¹MAm„t6p¥ãÝX¹«V_õ­»»wÔWI7IÄ`ºòð†ÿº€8HøHÅJ¦ÙÒÃtuJiè¼ýz±eõ›¯·]âØtÊa°¨”¸µ+ý¦XöZ‡ÝIþÊjžq)`¶ÚÜPTP€6Ƶ¼àIHi°p~ñε$)jñ”KŠ=ñßäóZ!¡ÓŽJIÂ+×Ôг)õ™ ÊF0Fx÷5‚Ò·HÀî3ƒÆ})bˆCKÚ ’p'Þ“Èy t@ôOñLB*F)jÝÙ­ ²Ró©NÓ’ /­`擹cJ»þµBS¡;ÒR9pÉHDzf-¤)Õx¤Œî$d~Z›öŠtÜžX+zæ"YQX( P϶1éY9J9p§€N{Rå-¤êä(züR'ä(ò‚Aõ(úÔ¦ÞÂçNMÉÜFìfÂÆÓ’yÖp¤\mï"L)oÅu)RR  P’Œ©*Qì=³š w¤)@àc8< µÌrÃÆE£:ç|µ-¦5$Ape<}¡³±ì{ŸE~?QÎm)ÁÁííEBŠå¡Ê¯‚¥ŸÝõð:ÃMj óv(ÈnõrJAVe¬æ>™©3Z£R5 é ØqÛíŽBtªwZc’x¿ü=x‡'îŠñUëUr¶góÒr+ÑÚ—Ç«oyüÃ4»I3:«RCvùÿlsüè{Sj%ŒÿH.¹ÿž9þuC¥£ŸJ–œ…R³Ö½ÔŸÌº©'¥Ç—5v¤lAvþxçùÓtÍi|e¥-z†ä„•)SVúœÔ?Rê"”G vL׎Øð㤭ç”{¤sɪŸª±z‹Q¿¥Ö ½Ž$‚~Êܘ«eµã¾2å ŒúŒúWO†ÄW×3K¶ìÛ…ÂU®ï{"y«ºß:1SÛÕÊàðãz¥8Ç*ÿ\ÕM©už©Ô®•ÝoS¤#ѵ<­‰ÀgÂ÷äŸZÍ vó¯AG KK·ÚÎþ nc‡|Î/ñ5êAO9Vk#»¥.vÕsfÒÅáû\Æ­²\SLL[ º´ýä¥xÚHõñOm›â0\ì¿Î½BÖõèkÀ2}½«ßLŠ­Ë«ö™ž$nyÃøšÉ/;»—\?õ«ú‘éÆ+$ƒÅ5 ºrí3Sï)D\?Uš«Á×>y5¥Dcô¬À~POMîfãï…‡W”`§Ì‡ñ¯VóޤeÕ”‘ßqæ°só^pÙ ò…sÿ$ÐJœ—2úé§PïËz`ʾÜÎ*V“)yu À óèçS4_/[ÍËvûRÿιÇEXµF ¾´}ºá>çJS¢·@!%X†T‘øŠ´ÞÔ£J¦;GÒ7‹2Þòµ1PÔÚ>¹HõÚ àcpTœéj»;N/ W6jný×&Ò/·½¤›ÝÉ'ßíKíù֨׫»i)zñt$e\J_#ß½F°Òò@ ß"y†k¹¼}r)SW­;".åÞmdC%žø¥µ¡m()¾Ý8൹žßZ¤¤uuM©_c²‡¢y}ÍŸÁ9¦+ŸT5lÝéŠôkrãììÀÊVOåŠ|:7=ôñcc€ÅÉÙéñû#R_oÅ‘¨®l6ÉrzГù«¼õª5¥N¤êë¬ç±áC”âÆåñ®p¸M™qŸL“1dåEç®N¢´ß×ò­ôº&ÚԨ߆†Ú}g×›~íûô…×›²Î¸@A<<ôÇp}vƒø­õ£Ô:šh™¨¯·+¬÷.JÜ)øNOéMeKÇ•8ÕUá9Zãg·á]JT)ÒVŠú*4£GÜ^¼OKÎýÐâÉ퀣ƒõ¬¼i*FÒó¥¸Þqǽ`®Þ€Ð²Ÿ\žôáªRÞæÅK‘»;˜²£Zœèìê‡o1âµùÖ¢ïñY% AûÀŸ‘Sku'-Ù‰%ÕeO81î£Y¤”ÉZÁg5"…¢µTþŸ\uä;Ný9l’"Ì™ö†‡†é-€Ÿ «yåæù #Í߃ˆ©%\äš›1nvÙÜP©oäuÁÏöÍjvKêR²òÉWÍÞµ$äŒcòíAõõ5)X¤ªÊKsÒã«P+qdš7+$îVO®Mx@à•`~uêöç9ûT•»Ý°ñï÷«ÏÃÿáœ×ƒ9Çñ¯B;îV>H©¹VÙ¥õ¨ŽV¢>M›é@+𢬙IE·¹Õºg‹$p8lÿÚ4ê”r£„Óf˜õ3 Wnÿò4¹N2;'ØW‚©w6xvl/2ß NãSn†&õ$6Ù2ëÍ…z¬ ÄdŸÂ <߯–Ùn×â%æÐãh›eM‡P°AJ’  ‚GñŠvÂhÎ[&2…E ‘”¶L{µEwUuF¹Ïšã³îKñ·¼¢”€U”“„á ¤qÀ©t;eŽý¨õ^–gNF·~©aÅÛæ4úÔê”ÑØ¯qÁ $Ÿ^j zÕfuѫųKF°]Ú˜&*[wÈCŽ ’<"”„‚£“Éöõ4ºïÔƒÑ.Ï[ô¼ MÆðÑb}Å–îä+ïøm”€Ù>ù5Ó§: ˉ%+¿«l´í6B¥%|Í=~hv}};£4uÁÍ=ï&ý :û²Z<&B“€ÞÒ0¬)8>àçÓ­E§"_ºÇ¨äÍŽ%µlµ5!1”ï„—œÙäJ•‘„ðrr¿V[µÄˆúZŸ¸ix¦ín—m’˜¶K9Ú∜úe<>iS½H¾/XÉÕª ©Sa&ë{¯µ%°…m$‘‘ÁÆqÍh…l2‚‹µ´ÒÝÜþ##Z†TžÚinîÇ^Úí¨ÒVKÂcZm—§][| É}´ýò…Œ-X(ÏÞò)~•! Ö‹Wa-’6ª%ë,•7ú£F1§¶ä­I¸®RœƒÌ”€Пšx‰©dÀÑ·}&‹Rbìâ\³+agiOû;{îë'”qz%•­;mà„*U\¹Y¯/Y‹Ñö[=êݧOê×­¾$묋’ZÜ“»VܤG›¿1íg¶NÒ·&¬Vû=÷UÄš¤9á!I„œ6”¨dùÎ3‘žF'j¦¯LBF¨ÑëôØQÓ™ÿ¬WJi'Ê€•n9$äÜö­sSDÓS!OgCC™u‚VcÎ7W *Ü9ka VÞã {ÖŽ6ÔVµ¼ùwoóêÐέkzîßæJ4E²ÏMÞ›·Ùmõ›?T\_[imFBN9'¸äúwêî­›§§J†ÜD@¹8ó¡Q°Hˆˆ)Y'Ê3íVŒM×~F¢¸è¨—kú%¹)¹âèät¥Å•ê‚T±ŒŒÎj—Öýdþ‘éÝ_cºi ,»öì&¢ó·ÅJJf€A8Â0ဵä٧СFºŽÚyøš0´)×qîõ©;ýÙEéš“QNeÊßeqØž7œ…©`\ãËôYµýÙWSzëÙ¯dJÔ&"cï71å-%ÂÒ•¼ ààñì*Ѿ¢^ú]­YÔöFØya¥G“òvHeX%ŽAÊRAô pFAšé®±èý-ÔÛn¸ÒÝ)M©èÿi2c&üã‰]AO”©¼4”’H'Û]ukXîd˲'=3Ðz#\õ3SÂcEÆgБ$4ˆŸoPUÖB\R[\‡TFÜøj'$dÖΰôþÆ4¦…Ô–#h‡ªfÜĶ—³ÜĦß%K-íðÜYNä·ÉIãÄ9^è.®ÜôwQ¯úª-¢$È:rqµIp”:ËË+(ÞAÆì{ñÍ{¨ÚVÁ¬l:£@té­;.Õ,ÈX‘yzp’ K~d¤ `ž@'žô]X2ÊåÜçKm—¾’ké:«¦úsFÞôí´Ï€l÷Oôìi×6>€êñØnû‰Ö\ºÛžýúmŒÓèUøºÄfö¸×2 ­a_x©D’¬òjpý! “­ÑféÌk`Ö–Ùî®~¶qçW!Ä)x#8|0‘’¿¼00Ië §Gmû¢›Ÿ*ÆÛ©´Ýº8Á޵µÅ4BÊr €;GênˆË.g@ËèŸO­·éå¦l°ìÂÊÞ©“yB'ço»\mÛÆ9¹‡ ÖX޵é›%êS ȸ¥‰ ,å'œƒƒÈâ¥:ìzc\ˆ÷-uÒÈ—JÔDÅUÎ=å輪[(IÉÉ<…øà*¾éާþ…ëë6«ûÛ²Jd}›Åð¼\åݵXúàÕ[EãYÜê †éUÂóÕ)#§ñÄmЖÄÄNxJ’R•­iZÀI(Ú@ÂO¿5¾ôóI뮓t»VÙôü=-qÔš‰6i@ZË^}ÀZ˜23ßqœ †ÚzômÚ“¨÷¯è wúoL–¿Xãì9JÓœø_´ûùÆÚšë ÑÑ#Óûu¡Peé‹À»Æ» {ŠÜ>´ g—áÎã÷;sÀÚ§¡uÂÐ0Ô½cÔÝ¡£ÛµÛ7Á¾5%ÕLûBRÑ+^UµI˧ŒåíÈÛ´ií¥¿F['Q/Z& úôÍÖM½M¾úÛiÒ§VœÛÊö%²?½ŸAM“?H›ÛUÚt¶×®.ð)wÆî.-;RíÇ#VŒÇîŒçœÂ§uGí·ô£õBaÜ•;õ—Û3¿*pìð¶qýg}Þ¨º ³æ_š/¤ZKO鮟³yÑÖ[ÛŠ!—¨.×Âc9 +m*m, º’Bwà”‚N;ò1ËýK²BÓ}A¿X­ÒÓ2 9Î5ô¬+Äh!ÈàùHíS–º½f¼hK–êOXÕ#O´cZæµur ­3€kÚ•€éÂG®Id·õ Ñ@j½%@ÙÀ¾NûLI‹qN=mlRÊ T°0•æQ;³C³- éêYÿÿ$©=j»Œ‡N>BO§ûLjÙÓ{”ÍQúõ.¥•"kVylÉ€ä· Šed á ™ö}»œi{÷l^qáãýîüR_Õ˜Ó:p¾žè½IéÙ2„¹ÉÌ‘-iÁN('Ê RqÜO=ó è/>ÇC·Ñ] §¯6mÒV7­R¬…뮣—yC3šwá¶] Ø 0‚Ÿ0É8Vk=¤4VýïzÒë¥àj½‡S; ‚óªC2RÛ@9±YRå(y8É#5¼õ‹OjëU¤u¦Qµ-â×0™¹5xzq¤ò⓸䓡É8ÆjiÓ­a ­_¢=âÕ©"[ï/.ÿã :/?d’ê ™Ú¡Œ¹µ8'!<„žjt{ýÅ«,-!¢ôΜý&:oÒ¶´ZajM="jà¡eIeϳ’vçZF;d€IÓ:[MèM{՛曋©®njÙVø庴Çe>9 Z’‚ ‰Ê½}ŒsQHÿ¤%ÌužÓÔZr3‘,ðo·Ù£Ê-6Ë% H!B²|Ù'o8ŒSmƒ¬Éfשôî¥Ñìê /¨.®]UoTõÇv+Ê^ï#éIã„çËÎ=2r]’w.(=<é¬N®tÖê½3:w¨V7ýY!Å8ˆ’¼&žIIÎFw¡g“Øv¯5¶€²hˆjYk[._¦êÇmV·ÜÉ[1XW™iôólRsÞƒ<Þ£_:‘Õ]-2+ÚHFÓ©i6hóg–bEC$,%o,r¥lJsœ$bž¿LN£ÁÖº†Åh³Ïƒ2=ž3·¯tG&¼A{ÂWï¤mWÉù¨v³-Ù’f¿ÑŸ§­K¥õ~°¸Úc_ß±²†íÖÙSxÏHX's«*@ H ਓì*~î‡é­»«=6~Vž°·TFrêÈÄäÊf݉-© JÕ÷– ž8õ&¨Þ’u*N„‹{´K²DÔ:~ýG¹Û$:¦|D§ 8J”3ƒÜàÓ¨õ>7ÛU×Dh㥷:®ŽÌSŽ¥IR R‚ví)ì;ò{T&¬ZpžvËcPôÞˤºw­ÄûT7o3µˆÓú}׉%–’­åÔŒö(QN}hÊè·Oí·ù ã¦l°ìÂÊÞ¨“yB'ço»¸#×vùq’ P_¤'\$õaÛ?Ùôò4ëź÷†ÜϼòöÚ0@@ƒÜó[µX´ÎºD{–»élKƤf"c*çòôFÞ ûª[(IÉÉ<…øà*ÝQmTi2ZåCé?ÑwGõã¢`ß/’g̶,=!HijSò0êÂ~ùB#íHíçÏ8(ƒÒ­¬/ÔV›(–KÄ]¿2ÞCEØí…¨+žÅah㪾õDÝ:§zRlIe6kŠç~²7xÛ•![<-ƒoû£¾ã÷{sų¢ºˆÖý®–;†¦Ó¦Ïˆ´X"Û§}¦tc)'Å Qá…“Ïïnñ‘X‰fZól@æ•Ò=Gè…êñ£´ä}ê±LFV¼ÃðC #<ã vÏìÉ©î·èÞ€»u§?Ñ ,f­½ÍµßZÚê₵%ÎN2twçpíT?èïÖwºI"òU§¨"\ÃQÕ3ÀðÜeJR†¼Ÿ1ô‡®ôÑëgê[V¥²ªçtƒÕ ´,¥²NFâ´¤ãG5IØzžmÔ=(6ð½\Q;õÛ6–vª9Ùál;¿Üý÷½ÛŽd7¯Òðõó@^ì–&m³4txÒ¼tMB›CjÜ„xã=ø©Ìˆp’dϬ=>ÒJ飼-§ô† ±Ý6ÛX·Þ[’¹Ð·¡q!ÕùÀQQÏ›ÉØdÒ®¶è- lÖºc§ºwGC‰?Y¢ ܺ—×›zK¨B¼ó´d!eDäÿ©®£kM ª£Î“hé{v Ôçüw§·{uô%e[—±’„¥!G<@ŽÂœzÁÖ9ÚïXé­Qo³~¡›§£2Ôb%ý£.4áq.}ÄãœqƒÛ½  P•‘{kN’h6¡ë],擱iøÖ{j]Ó÷¯×h\ÙrÖåZ.•y•Æ1ÛÓi´ [½Dꦑ×ky¼ô¢0Õ“bøNÝcÞŸmèob^û8N7'ÊpVAÚ3žs×Zî¥ÐÚWM±£íVw¬,)—n‡íf’Ü®2Fã’¬¨’1œTI®E¡%ª ¹R~æsSX­A\ã?ZØãÓ“AJ½ª·CYå®·;Ä+k@—eHm„9*Z‚Gñ4UõútÚF®êœ}M)ÿEÓ˲8r@²@ãœ9úz)±ØËSGbO§TUfŽ‘Ønÿò4ä; í+‡.ƒ»¾/ÉÃý'þü¿'+šñ'WiQUý ÿO/ɤߗäâÓê=(qs]¥E¡éåùÒïËòpúN5± T­Ç°®Ü¢¯ú/ýù~Côûòüœ\ʶðMmqYPµÙ”U@Ý߉åù'ôŸûòüœdÙÚ³Z&/ƒž1]©E  ¬ïÄòü‡é?÷åù>wk©ßc¶Ê’m³©à:¡•:¥zçÖ¾ÆQ]L.aâÕïs¡„ °ê×¹ñì‚q€sô¯ïÅ}…¢´d7ñµ½gŒc<ó^‚ïæ¯°tQ8ýÇǬq@IÅ}…¢§ q»„dppkÐ }9>•ö ŠŽ<~ããî 8×è'€¯°4QÃ'Ú;$}ÐMy´ûsé_`(¨á÷ƒÄ'Èøÿ´wüëÌmŒsŠûEO¼=£¸øüŒœÁùè•ÂR3_`(£† nGÈ cOö«Â“ÿ+ŽþµõþŠŽy/~GÈ!»Oo|ö£‚ Gð=ëëíp»ÃÚ{$”œûóï^åX ŠúûE>ðöžãä T@áG¿?aJõÇÍhÎrNkì <>ò=£¸ùyñžÆ±R”}AöŠ8`ñä|}ÿªkД“Ÿ~=ëì pûÈöŽãä8àò¬R<¹8Å}¢Ž/Ü|d ŒwÅb§ÂsÇÒ¾ÁQG ‡ˆ}‡È[|•ÍðŲ ¹ÎåLvá'è3WHEÍ{«æ3/SFwKÙ² ×$bK‰ã„5ÜdêÇÐ×К*T+*Í¡‹Aé+ˆÒñ4曂˜vøÃʑʖ£Ýk?¼£êh§Ú*âBŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ÿÙPyQt5_gpl-5.10.1/examples/draganddrop/puzzle/puzzle.py0000755000076500000240000003006113245231431023041 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import random from PyQt5.QtCore import (pyqtSignal, QByteArray, QDataStream, QIODevice, QMimeData, QPoint, QRect, QSize, Qt) from PyQt5.QtGui import QDrag, QColor, QCursor, QIcon, QPainter, QPixmap from PyQt5.QtWidgets import (QApplication, QFileDialog, QFrame, QHBoxLayout, QListView, QListWidget, QListWidgetItem, QMainWindow, QMessageBox, QSizePolicy, QWidget) import puzzle_rc class PuzzleWidget(QWidget): puzzleCompleted = pyqtSignal() def __init__(self, parent=None): super(PuzzleWidget, self).__init__(parent) self.piecePixmaps = [] self.pieceRects = [] self.pieceLocations = [] self.highlightedRect = QRect() self.inPlace = 0 self.setAcceptDrops(True) self.setMinimumSize(400, 400) self.setMaximumSize(400, 400) def clear(self): self.pieceLocations = [] self.piecePixmaps = [] self.pieceRects = [] self.highlightedRect = QRect() self.inPlace = 0 self.update() def dragEnterEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece'): event.accept() else: event.ignore() def dragLeaveEvent(self, event): updateRect = self.highlightedRect self.highlightedRect = QRect() self.update(updateRect) event.accept() def dragMoveEvent(self, event): updateRect = self.highlightedRect.united(self.targetSquare(event.pos())) if event.mimeData().hasFormat('image/x-puzzle-piece') and self.findPiece(self.targetSquare(event.pos())) == -1: self.highlightedRect = self.targetSquare(event.pos()) event.setDropAction(Qt.MoveAction) event.accept() else: self.highlightedRect = QRect() event.ignore() self.update(updateRect) def dropEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece') and self.findPiece(self.targetSquare(event.pos())) == -1: pieceData = event.mimeData().data('image/x-puzzle-piece') dataStream = QDataStream(pieceData, QIODevice.ReadOnly) square = self.targetSquare(event.pos()) pixmap = QPixmap() location = QPoint() dataStream >> pixmap >> location self.pieceLocations.append(location) self.piecePixmaps.append(pixmap) self.pieceRects.append(square) self.hightlightedRect = QRect() self.update(square) event.setDropAction(Qt.MoveAction) event.accept() if location == QPoint(square.x() / 80, square.y() / 80): self.inPlace += 1 if self.inPlace == 25: self.puzzleCompleted.emit() else: self.highlightedRect = QRect() event.ignore() def findPiece(self, pieceRect): try: return self.pieceRects.index(pieceRect) except ValueError: return -1 def mousePressEvent(self, event): square = self.targetSquare(event.pos()) found = self.findPiece(square) if found == -1: return location = self.pieceLocations[found] pixmap = self.piecePixmaps[found] del self.pieceLocations[found] del self.piecePixmaps[found] del self.pieceRects[found] if location == QPoint(square.x() / 80, square.y() / 80): self.inPlace -= 1 self.update(square) itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) dataStream << pixmap << location mimeData = QMimeData() mimeData.setData('image/x-puzzle-piece', itemData) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(event.pos() - square.topLeft()) drag.setPixmap(pixmap) if drag.exec_(Qt.MoveAction) != Qt.MoveAction: self.pieceLocations.insert(found, location) self.piecePixmaps.insert(found, pixmap) self.pieceRects.insert(found, square) self.update(self.targetSquare(event.pos())) if location == QPoint(square.x() / 80, square.y() / 80): self.inPlace += 1 def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.fillRect(event.rect(), Qt.white) if self.highlightedRect.isValid(): painter.setBrush(QColor("#ffcccc")) painter.setPen(Qt.NoPen) painter.drawRect(self.highlightedRect.adjusted(0, 0, -1, -1)) for rect, pixmap in zip(self.pieceRects, self.piecePixmaps): painter.drawPixmap(rect, pixmap) painter.end() def targetSquare(self, position): return QRect(position.x() // 80 * 80, position.y() // 80 * 80, 80, 80) class PiecesList(QListWidget): def __init__(self, parent=None): super(PiecesList, self).__init__(parent) self.setDragEnabled(True) self.setViewMode(QListView.IconMode) self.setIconSize(QSize(60, 60)) self.setSpacing(10) self.setAcceptDrops(True) self.setDropIndicatorShown(True) def dragEnterEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece'): event.accept() else: event.ignore() def dragMoveEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece'): event.setDropAction(Qt.MoveAction) event.accept() else: event.ignore() def dropEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece'): pieceData = event.mimeData().data('image/x-puzzle-piece') dataStream = QDataStream(pieceData, QIODevice.ReadOnly) pixmap = QPixmap() location = QPoint() dataStream >> pixmap >> location self.addPiece(pixmap, location) event.setDropAction(Qt.MoveAction) event.accept() else: event.ignore() def addPiece(self, pixmap, location): pieceItem = QListWidgetItem(self) pieceItem.setIcon(QIcon(pixmap)) pieceItem.setData(Qt.UserRole, pixmap) pieceItem.setData(Qt.UserRole+1, location) pieceItem.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsDragEnabled) def startDrag(self, supportedActions): item = self.currentItem() itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) pixmap = QPixmap(item.data(Qt.UserRole)) location = item.data(Qt.UserRole+1) dataStream << pixmap << location mimeData = QMimeData() mimeData.setData('image/x-puzzle-piece', itemData) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(QPoint(pixmap.width()/2, pixmap.height()/2)) drag.setPixmap(pixmap) if drag.exec_(Qt.MoveAction) == Qt.MoveAction: if self.currentItem() is not None: self.takeItem(self.row(item)) class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.puzzleImage = QPixmap() self.setupMenus() self.setupWidgets() self.setSizePolicy(QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)) self.setWindowTitle("Puzzle") def openImage(self, path=None): if not path: path, _ = QFileDialog.getOpenFileName(self, "Open Image", '', "Image Files (*.png *.jpg *.bmp)") if path: newImage = QPixmap() if not newImage.load(path): QMessageBox.warning(self, "Open Image", "The image file could not be loaded.", QMessageBox.Cancel) return self.puzzleImage = newImage self.setupPuzzle() def setCompleted(self): QMessageBox.information(self, "Puzzle Completed", "Congratulations! You have completed the puzzle!\nClick OK " "to start again.", QMessageBox.Ok) self.setupPuzzle() def setupPuzzle(self): size = min(self.puzzleImage.width(), self.puzzleImage.height()) self.puzzleImage = self.puzzleImage.copy( (self.puzzleImage.width() - size)/2, (self.puzzleImage.height() - size)/2, size, size).scaled(400, 400, Qt.IgnoreAspectRatio, Qt.SmoothTransformation) self.piecesList.clear() for y in range(5): for x in range(5): pieceImage = self.puzzleImage.copy(x*80, y*80, 80, 80) self.piecesList.addPiece(pieceImage, QPoint(x,y)) random.seed(QCursor.pos().x() ^ QCursor.pos().y()) for i in range(self.piecesList.count()): if random.random() < 0.5: item = self.piecesList.takeItem(i) self.piecesList.insertItem(0, item) self.puzzleWidget.clear() def setupMenus(self): fileMenu = self.menuBar().addMenu("&File") openAction = fileMenu.addAction("&Open...") openAction.setShortcut("Ctrl+O") exitAction = fileMenu.addAction("E&xit") exitAction.setShortcut("Ctrl+Q") gameMenu = self.menuBar().addMenu("&Game") restartAction = gameMenu.addAction("&Restart") openAction.triggered.connect(self.openImage) exitAction.triggered.connect(QApplication.instance().quit) restartAction.triggered.connect(self.setupPuzzle) def setupWidgets(self): frame = QFrame() frameLayout = QHBoxLayout(frame) self.piecesList = PiecesList() self.puzzleWidget = PuzzleWidget() self.puzzleWidget.puzzleCompleted.connect(self.setCompleted, Qt.QueuedConnection) frameLayout.addWidget(self.piecesList) frameLayout.addWidget(self.puzzleWidget) self.setCentralWidget(frame) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.openImage(':/images/example.jpg') window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/draganddrop/puzzle/puzzle.qrc0000644000076500000240000000015713245231431023176 0ustar philstaff00000000000000 example.jpg PyQt5_gpl-5.10.1/examples/draganddrop/puzzle/puzzle_rc.py0000644000076500000240000053140713245231431023534 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sat May 4 17:21:42 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\xa6\x9e\ \xff\ \xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\ \x48\x00\x00\xff\xe1\x00\x16\x45\x78\x69\x66\x00\x00\x4d\x4d\x00\ \x2a\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\xff\xdb\x00\x43\x00\ \x05\x03\x04\x04\x04\x03\x05\x04\x04\x04\x05\x05\x05\x06\x07\x0c\ \x08\x07\x07\x07\x07\x0f\x0b\x0b\x09\x0c\x11\x0f\x12\x12\x11\x0f\ \x11\x11\x13\x16\x1c\x17\x13\x14\x1a\x15\x11\x11\x18\x21\x18\x1a\ \x1d\x1d\x1f\x1f\x1f\x13\x17\x22\x24\x22\x1e\x24\x1c\x1e\x1f\x1e\ \xff\xdb\x00\x43\x01\x05\x05\x05\x07\x06\x07\x0e\x08\x08\x0e\x1e\ \x14\x11\x14\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\xff\xc0\x00\x11\x08\x01\xa8\x01\xa8\x03\x01\ \x22\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\ \x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x05\ \x06\x07\x02\x03\x08\x01\x09\xff\xc4\x00\x54\x10\x00\x01\x03\x03\ \x03\x02\x05\x01\x04\x06\x07\x01\x0d\x07\x02\x07\x01\x02\x03\x04\ \x00\x05\x11\x06\x12\x21\x07\x31\x13\x22\x41\x51\x61\x71\x14\x32\ \x81\x91\x08\x15\x23\x42\xa1\xb1\x16\x33\x52\x62\xc1\xd1\xf0\x24\ \x34\x37\x43\x63\x72\x74\x75\x82\x92\xb3\xb4\xe1\xf1\x17\x36\x53\ \x73\x94\xa2\xb2\x25\x93\x09\x44\x83\xa3\xc2\xd2\xe2\xff\xc4\x00\ \x1b\x01\x00\x02\x03\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x03\x01\x02\x04\x05\x06\x07\xff\xc4\x00\x35\x11\x00\ \x02\x01\x02\x04\x02\x07\x07\x04\x03\x01\x01\x00\x00\x00\x00\x00\ \x01\x02\x03\x11\x04\x12\x21\x31\x13\x41\x05\x22\x51\x61\x71\xa1\ \xf0\x14\x32\x81\x91\xc1\xd1\xe1\x15\x23\xb1\xf1\x42\x52\x62\x63\ \x24\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xec\ \xba\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x2b\x15\x2d\ \x29\xee\x69\x33\xf3\xd9\x68\x72\xb1\x50\xda\x5b\x80\xae\x8a\x62\ \x9d\xa8\xe2\x45\x4e\xe7\x1d\x42\x13\xee\xa5\x00\x3f\x8d\x32\xcb\ \xea\x36\x9f\x8f\xfd\x65\xea\xdc\x93\x9c\x63\xed\x08\x38\xfe\x34\ \xa7\x88\xa6\xb9\x90\x9d\xf6\x26\xf4\x55\x7c\x7a\xa7\xa5\x87\x7d\ \x41\x6c\x07\xfe\x70\x9a\xdf\x13\xa9\x5a\x6e\x49\x09\x6a\xfb\x6c\ \x52\x89\xc6\xd1\x25\x19\xfe\x74\x7b\x44\x09\x27\x54\x53\x34\x5b\ \xec\x67\xd2\x14\x1c\x49\x07\x90\x41\xc8\x3f\x8d\x2f\x66\x6b\x2e\ \x76\x58\xab\xc6\xa4\x67\xb3\x22\xe2\xaa\x2b\x14\xad\x2a\xec\x6b\ \x2a\xb9\x21\x45\x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\x01\x45\ \x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\x01\x45\ \x14\x50\x01\x45\x73\x86\xb2\xeb\x1e\xa8\xb8\xf5\x36\xef\xa7\x34\ \xc4\xb6\xed\x36\xbb\x1b\xaa\x8f\x21\xef\x01\x0e\xbd\x21\xe4\xa8\ \xa5\x43\xce\x0a\x52\x9c\x85\x0e\x06\x70\x33\x9e\x46\x15\xc5\xea\ \x7e\xb2\x65\x7b\x9c\xb8\x35\x20\x7f\x65\xc8\xc8\x03\xff\x00\xb4\ \x03\x5c\xbc\x4f\x4b\xe1\xf0\xf5\x38\x72\xbd\xfb\x8c\x32\xe9\x0a\ \x4a\x4d\x6a\x74\x25\x15\x4b\x41\xeb\x1d\xd9\x18\xfb\x6d\xa2\x13\ \xff\x00\xfc\xa5\xa9\xbf\xe7\xba\x9f\xa0\xf5\x8a\xca\xe0\x02\x65\ \xb2\x7b\x07\xfe\x2c\xa5\xc0\x3f\x88\xfe\x55\x34\xfa\x63\x07\x3f\ \xf3\xb7\x8d\xcb\xc7\x1b\x46\x5c\xcb\x2e\x8a\x89\x41\xea\x3e\x8f\ \x97\x80\x2e\xc1\x85\x1f\xdd\x79\xa5\xa3\xf8\xe3\x1f\xc6\xa5\x31\ \xde\x6a\x44\x76\xe4\x30\xe2\x5d\x65\xd4\x05\xa1\x69\x39\x0a\x49\ \x19\x04\x1f\x6c\x56\xea\x55\xe9\x55\xf7\x24\x9f\x83\x34\x46\xa4\ \x27\xee\xbb\x9b\x28\xa2\x8a\x69\x70\xa2\x8a\x28\x00\xa2\x8a\x28\ \x00\xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x8a\x28\ \x00\xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x82\x40\xa4\xb2\xa5\x21\ \xa4\x92\x54\x05\x00\x6f\x5b\x89\x48\xe4\xd3\x65\xc6\xef\x1e\x2b\ \x6a\x52\xdc\x4a\x42\x46\x49\x27\x00\x54\x1b\xa8\xbd\x4a\xb4\x69\ \x98\xab\x54\x99\x29\x2e\x81\x90\xd8\x57\x3f\x8f\xb5\x72\xfe\xbc\ \xea\x86\xa1\xd6\x4b\x5a\x23\xc8\xfb\x25\xb4\x28\x82\xbd\xdb\x1a\ \x1f\xff\x00\xb1\xac\xb5\x71\x0a\x2b\x41\xb4\xa8\x4e\xab\xd3\x62\ \xfc\xd7\xfd\x73\xd3\x3a\x7d\xb7\x52\x25\x89\x8f\x27\x23\xc3\x61\ \x5c\x67\xfe\x57\xf9\x57\x3d\x6b\x3f\xd2\x3b\x56\x5d\x5e\x72\x3d\ \x85\xb1\x11\xa3\x90\x3c\x24\xee\x5f\xe7\xc9\xfe\x55\x08\xfd\x59\ \x09\x4e\xf8\xd3\x9c\x2f\xa9\x47\x71\x79\xc2\x4a\x4a\x7d\xd0\x81\ \x82\xaf\xc7\x02\x9d\xed\xce\x6c\x7d\x30\xed\x16\xf8\xe9\x51\x48\ \x52\x8a\x9b\x09\x18\xc7\x0a\x3e\xde\xfc\xd6\x47\x5a\xfa\xda\xfe\ \x27\x42\x38\x18\x47\x72\x1d\x72\xbd\x75\x02\xf8\xe3\x92\x25\x49\ \x9c\x42\xb9\x25\xc5\x12\x79\xfa\xf3\x4c\x32\xe0\xea\x1f\x15\x49\ \x72\x44\x85\xb8\x39\x50\xdd\x8c\x55\xa1\x73\x2d\xcc\x94\xe1\x97\ \x36\x44\xc5\x92\x30\x96\x13\xb5\x94\x28\x0c\x60\xa8\x77\xfc\x68\ \x95\x0d\x05\xb5\xa1\x96\x5b\x0e\x60\x78\x8e\x78\x7e\x32\xd2\x3b\ \x0d\xbb\xbc\xb9\xf8\xc2\xaa\x63\x8a\x90\xd7\x84\x8b\x5c\xfd\x79\ \x15\x22\xa2\x5f\xd2\xb2\x82\xb7\xf7\x0e\xe0\x2b\x38\xad\x4e\x8b\ \xcb\x07\x2e\x4b\x71\xb2\x39\xf3\x13\x56\x14\xcb\x5c\xb1\x19\xc5\ \x38\xdb\xa5\xa6\x88\x23\xed\x6b\x28\x2a\xfa\x25\x38\x1f\xc2\xa1\ \xf7\x24\xca\x48\x52\xa3\xda\x9b\x71\x09\xc9\xf1\x1a\x6b\x79\xfc\ \x49\xcd\x69\x85\x77\x3e\x66\x5a\x98\x65\x05\x71\x5e\x98\xea\x3e\ \xb1\xd3\x52\x03\xb6\xeb\xcc\xa6\xb6\x8e\x52\x97\x0e\x0f\xd4\x76\ \x35\x73\x68\x5f\xd2\x96\xeb\x15\x48\x67\x51\xc3\x44\x94\x81\x8f\ \x15\xaf\x22\xfe\xa7\xd0\xfe\x55\xce\xab\x44\xa7\x3f\x75\xc5\x83\ \xe8\x40\xe0\xfc\x81\x5a\x3c\x05\x28\x12\x94\x20\x94\x9c\x29\x25\ \x38\x50\x3e\xc6\x99\x28\x42\x7b\x99\x1c\x7b\x8f\xa4\x7d\x29\xea\ \xee\x9e\xd6\x91\x3c\x5b\x5d\xc5\x2b\x71\x23\xcf\x1d\xd3\xb5\xd4\ \x7e\x1e\xa3\xe4\x55\xa3\x06\xe6\xc4\x84\x8d\xab\x15\xf2\x62\xd3\ \x32\xe9\x6a\x7d\x33\x6d\x8f\x3b\x15\xd6\xd5\x9d\xc8\x59\x49\x49\ \x1f\x35\x7b\xf4\xb7\xf4\x95\xbe\x59\x5c\x6a\xdf\xaa\x5b\x54\xf8\ \xe3\x00\x3f\x9c\x3a\x91\xf5\xec\x7f\x1f\xce\xa1\x67\x86\xda\xaf\ \x32\x8e\x0d\x6c\x77\xfa\x56\x14\x38\x35\x95\x55\xfd\x38\xea\x75\ \x83\x56\xc4\x43\xd6\x9b\x8b\x52\x38\xca\x9b\x27\x0e\x23\xea\x9e\ \xf5\x62\xc5\x98\xdb\xa9\x04\x28\x1c\xd3\x61\x51\x4f\x62\x82\xba\ \x2b\xc4\xa8\x1e\xd5\xed\x5c\x90\xa2\x8a\x28\x00\xa2\x8a\x28\x00\ \xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x8a\x28\x03\ \x88\xa1\x7f\xbf\x27\x51\x3f\xe9\xa9\x3f\xf8\x87\x6a\x67\xa2\xac\ \x97\x2d\x65\xab\x5c\xb0\xda\x56\xd4\x76\xa1\xb4\x97\xae\x33\x5d\ \x41\x5a\x58\x4a\xb3\xb1\x09\x48\x23\x72\xd5\x82\x46\x48\x00\x02\ \x79\xed\x50\xc8\x5f\xef\xc9\xd4\x5f\xfa\x6a\x4f\xfe\x21\xda\xbe\ \xbf\x45\x38\x81\x1a\x5b\x51\x5c\xd6\x8f\xdb\xcc\xbf\x3e\x82\xb2\ \x39\x2d\xb4\x94\x21\x23\xe8\x30\xaf\xcc\xd7\x98\x8e\x12\x18\x9e\ \x91\x9a\xa8\xae\x97\xe0\xf3\x98\x6a\x4a\xad\x6c\xaf\x6d\x4f\x17\ \xa0\xf4\x3b\xb7\x77\x34\xb4\x3d\x51\x27\xfa\x42\xdb\x25\xdf\x09\ \xe2\x93\xb8\x71\x9f\x28\x48\x07\x1e\xa0\x1c\x8c\xf3\x55\xc5\xce\ \xd5\x3a\xdd\xac\xe0\x69\x59\x0d\x62\x74\xcb\x82\x21\xa4\x83\x94\ \xa4\x28\x15\x78\x9f\x29\x09\x1b\xa8\x44\xc9\x09\xea\xfe\x96\xbb\ \x20\xab\xed\x0e\x6a\x20\xd2\xd5\x9f\xdc\x78\x2d\x2b\x1f\x88\x35\ \x6e\x5f\x7f\x57\xc1\xfd\x22\xb4\xf8\x91\x6c\x6e\x63\xf7\x6b\x5b\ \xa2\x33\xeb\x5f\xfb\x89\xc8\xe1\xc2\xa7\x12\x92\x0e\x54\xb4\x38\ \x10\x48\x23\x84\x8e\xf5\x34\xb0\x58\x6c\x6c\x23\x52\x31\xcb\xad\ \x9a\x5c\xd1\xa1\x53\xa7\x5d\x5d\x2b\x59\xdb\xe0\x54\xfa\x96\xd2\ \xed\x8e\xf9\x2a\xd4\xf3\xa8\x75\x71\xd4\x12\x56\x80\x40\x39\x00\ \xff\x00\x8d\x74\x86\x8a\xff\x00\xdc\xdb\x27\xfd\x1f\x1f\xfe\xed\ \x35\x4e\xf5\x96\xe7\x6f\x91\xa8\x25\x5b\x9a\xb3\x35\x1e\x64\x77\ \x92\x5c\x9a\x97\x32\xa7\xc6\xce\xc5\x38\x18\xee\x3d\x4f\x6a\xb8\ \xb4\x57\xfe\xe6\xd9\x3f\xe8\xf8\xff\x00\xf7\x69\xab\xf4\x4d\x28\ \xd2\xc5\xd5\x84\x1d\xd2\xfb\xec\x3f\x05\x05\x0a\xd3\x8a\x1d\xe8\ \xa2\x8a\xf4\x67\x50\x28\xa2\x8a\x00\x28\xa2\x8a\x00\x28\xa2\x8a\ \x00\x28\xa2\x8a\x00\x28\xa2\x8a\x00\x28\xa2\x8a\x00\x28\xa2\x8a\ \x00\x2b\x15\xa8\x24\x50\xb5\x84\x8c\xd3\x0e\xa0\xbd\x47\xb7\xc4\ \x75\xf7\xde\x4b\x6d\xb6\x92\xa5\xa9\x47\x01\x20\x7a\x9a\x1b\x49\ \x5d\x80\xa2\xef\x75\x66\x1b\x2a\x5b\x8e\x25\x21\x23\x24\x93\x80\ \x05\x73\xef\x58\x7a\xe7\x06\xd4\xd3\x90\xac\xce\x99\x32\xd4\x76\ \x25\x48\xe4\x0f\xa7\xf9\xd5\x67\xd7\x9e\xb6\xbd\x7a\x7d\xfb\x3d\ \x85\xe5\x26\x30\x25\x25\x40\xe0\xb8\x7d\xcf\xc7\xc7\xe7\x5c\xff\ \x00\x26\xe2\xec\xa5\xf8\x4d\x2d\x4b\x5a\xc1\x0e\xba\x4f\x27\xf1\ \xf4\x1f\x1e\xbf\x4a\xc7\x52\x72\x93\xb1\xb2\x8e\x19\x7b\xd5\x3e\ \x44\x9a\xf3\xa8\xaf\xda\x9a\xf6\xa5\xbc\xa3\x31\xe2\xb2\x50\xd2\ \x95\x96\xd2\x3d\x49\xf4\xc0\xf5\x39\xa5\xb6\xb6\xdc\x72\x4b\x5e\ \x1a\x05\xce\x43\x6a\xf0\xfc\x57\x13\xfb\x16\x95\xfd\x86\x9b\x1c\ \x13\xf8\x7c\x9c\x0e\x6a\x2b\x6b\x79\x0b\x3f\x66\x8e\x4e\xc1\xca\ \xd4\x14\x40\x5e\x3d\xc8\xf9\xf6\xfc\x39\xe6\x9f\x58\x9a\xb5\x25\ \x21\x95\x06\xe3\xb2\x48\x71\xf4\x80\x0a\x8f\xab\x4d\x8e\xc0\x7a\ \x9f\x4f\x55\x12\x6b\x1d\x48\xeb\xa9\xd5\xa4\xf4\xb4\x47\xf9\x0c\ \xb6\xc3\x98\x91\x21\x72\x5c\x3b\x9c\x77\x68\xf2\xa4\x0f\x75\x0f\ \xbd\xf4\x1c\x1f\x73\xda\x9a\xa7\xdc\xd2\x85\x15\xdc\xe6\xc5\xb7\ \x30\xac\xa9\x4d\xaf\x97\x1e\xe3\x8d\xc8\x4f\x20\x7b\x02\x31\xf1\ \x4f\x9a\x5b\xa7\xda\xe3\x5f\xa5\x0f\xdb\x63\x1b\x75\xa0\xf3\xf6\ \xf9\x0b\x2d\xa5\xcc\x71\x94\x03\xe6\x57\xd7\x18\xe3\x8c\x0a\xb7\ \xb4\x6f\x40\x74\x95\xad\x9c\xde\x19\x45\xe2\x6a\x80\x52\xe4\x3c\ \x54\xbe\x7e\x01\x38\x03\xd7\x9a\x5a\x69\x6e\x5e\x7d\x5d\x9f\xaf\ \x5e\x07\x3c\xc6\xd4\x53\x2e\x0e\x2a\x3d\x92\xdb\x74\xbb\xac\x79\ \x50\x0e\xe6\xa3\xa4\x7b\xe1\x18\x51\xfc\x54\x3b\xd4\x92\xdf\xa2\ \xfa\x9f\x7b\x86\xa7\x54\xf7\xea\xa6\x00\x4e\xe6\x63\xfe\xc7\x8e\ \xc3\x71\xee\x4f\x3e\xa4\x9f\x7a\xea\xdb\x5e\x9a\xb6\x5b\xe3\x08\ \xb0\x62\xb0\xcb\x09\x18\x21\x2d\xa5\x39\xf8\x24\x0a\x5e\xcd\x9e\ \x32\x54\x14\x94\x0c\x01\xe5\x18\xe1\x3f\x41\xda\xac\xa4\xff\x00\ \xc5\x5b\xcc\x53\xa9\x0f\xf2\xd7\xc9\x7a\xf8\x9c\x8f\xff\x00\xb1\ \xdd\x4a\x94\x87\x5c\x98\xea\xc9\x5e\x00\x49\x59\xc7\xb2\x92\x73\ \xc1\x1e\xc7\xbf\x15\xa9\xde\x96\xea\xa3\x35\x08\x4b\xc8\x44\x84\ \x8c\x07\x50\x3c\x30\xbc\x7a\xab\xe4\xe4\x8e\x7b\xe2\xbb\x18\x45\ \x6d\x2e\x15\x14\xa7\x80\x07\x22\xbc\x5c\x28\x0e\x0d\xaa\x6d\xa3\ \x9e\xd9\x19\x1f\x91\xa2\xf5\x3f\xd8\x15\x5a\x7f\xe9\xfc\x9c\x87\ \x0f\xa3\x77\xe9\x4a\x53\x6d\x86\xfc\x50\x77\x17\x0e\xed\xa3\x27\ \x03\x91\xdf\xde\x9b\xb5\x1f\x4c\x2f\xd1\xe6\xbb\x1e\x54\x34\xf8\ \x8d\x21\x4a\x0f\x25\x5c\x28\x63\x19\x3f\xc0\xd7\x65\x7d\x91\xb6\ \x50\x52\xde\xdc\x7c\x0e\xd4\x96\x65\xbe\xdf\x29\x59\x93\x1d\x0e\ \x12\x36\x92\x47\x04\x7c\xd5\x33\xd4\x5f\xe4\x4b\xa9\x4e\x5a\x38\ \xe8\x70\x94\xbd\x33\x32\x24\x77\xb7\x36\xb5\x2d\x04\x04\x92\x9f\ \x4e\x32\x3e\x79\xed\x4c\x13\x2d\x8e\x24\xa9\x21\xa2\x36\xf2\xb0\ \x7f\x70\x73\xeb\x5d\xe9\x73\xd1\xf6\x29\xb9\x58\x8e\x86\xdc\xc1\ \xf3\x84\x8c\x82\x7d\x73\x51\x7b\xd7\x49\x74\xfd\xc2\x21\x6f\xc3\ \x0d\x9f\xed\x36\x90\x0e\x7e\xbf\xeb\xbd\x32\x38\xca\x91\xdd\x5c\ \x54\xb0\xf4\x27\xb3\x68\xe3\x5d\x31\x7d\xbd\xe9\xa9\xad\xdc\xed\ \x53\x1f\x8c\xeb\x6a\xe0\xa1\x44\x11\x5d\x41\xd1\xff\x00\xd2\x59\ \xc9\x4f\xc7\xb4\xea\x86\x9b\x69\xd5\x00\x94\xca\x4f\x94\x28\xff\ \x00\x78\x76\xfc\xb1\x50\x0d\x7f\xd1\x5b\x8d\xad\x97\x8d\xb5\x84\ \xbd\x1c\x82\xaf\x10\xe4\xaf\xe3\x38\xaa\x66\xe3\x02\x6d\xb5\x4a\ \x6a\x53\x2a\x65\x7b\xb0\x9e\x31\xdb\xe6\xb5\xc6\xb4\x2b\xad\x37\ \xf3\x31\x55\xc2\x38\x6a\xf5\x5d\xa7\xd4\xfd\x2d\xa8\x63\xdc\xe3\ \x21\x68\x71\x2a\xdc\x32\x30\x73\x9a\x92\xb6\xad\xc2\xb9\x17\xf4\ \x56\xd6\x2e\x4b\xb0\x43\x87\x29\xf5\x19\x2c\x0f\x0d\x40\x9e\xe0\ \x76\x3f\x95\x75\x6d\xaa\x40\x75\x94\x9c\xe7\x22\x9f\x86\xa8\xe7\ \x16\xa5\xba\x30\xb4\xe2\xdc\x58\xbe\x8a\x28\xa7\x80\x51\x45\x14\ \x00\x51\x45\x14\x00\x51\x45\x14\x00\x51\x45\x14\x00\x51\x45\x14\ \x01\xc4\x50\xbf\xdf\x93\xa8\xbf\xf4\xd4\x9f\xfc\x43\xb5\x7d\xfe\ \x8a\x72\xb7\xe9\x1d\x41\x01\x6a\xfd\xac\x4d\x41\x24\xed\x3e\x88\ \x71\x28\x71\x27\xf1\xdc\x7f\x23\x54\x24\x2f\xf7\xe4\xea\x2f\xfd\ \x35\x27\xff\x00\x10\xed\x4d\xf4\x06\xa3\x97\xa1\x75\x74\x9b\xdb\ \x11\x9c\x9b\x6d\xb8\x32\x96\xee\x71\x1b\x50\x0e\x12\x8c\xec\x75\ \xbc\xe0\x15\x00\x48\x29\x24\x64\x1e\xf9\x15\xe6\x69\xe2\xa1\x43\ \xa4\xa7\x9d\xd9\x3f\xc1\xe7\x70\xb5\x55\x2a\xf9\x9e\xda\x89\xcc\ \x77\x93\xd5\x8d\x2b\x01\x39\xf1\x91\xa9\x5b\x2a\x4f\xf7\x5b\xde\ \x55\xf9\x62\xad\x5d\x66\xfa\x15\xfa\x4c\xe8\x18\xe3\x1b\x9b\xb6\ \xdc\x14\xae\x7f\xb4\xdf\xff\x00\xf3\x4e\x70\xa1\x68\x79\x85\x8e\ \xb0\xdb\xa1\x4b\x9c\xe2\xa2\xa9\xd8\xde\x18\x3e\x5d\xfe\x55\xa8\ \x37\xc0\x0b\x3c\x85\x13\xd8\x66\xaa\x6b\x9e\xa2\xb8\xbf\xd4\xd8\ \x3a\xe5\x09\x42\x66\x41\x75\x61\x31\x9c\xc9\x42\x99\x5a\x3c\x35\ \x37\x9e\xe0\xed\xc6\x15\xee\x33\x83\xda\x9f\x1a\x94\xfa\x36\x30\ \xa5\x51\xee\xef\xf0\x34\xe9\x86\x8a\x4d\xde\xed\x3f\x80\xbf\xaa\ \xff\x00\xef\x85\x76\xff\x00\xe6\x27\xff\x00\xc1\x35\x7c\xe8\xaf\ \xfd\xcd\xb2\x7f\xd1\xf1\xff\x00\xee\xd3\x54\x46\xba\xd5\x16\xed\ \x4a\xb4\xc9\x63\x4e\xc6\xb7\xcd\x5a\x92\xb9\x12\x42\xc2\xdc\x73\ \x09\xc0\x4e\xed\xa0\xed\x1f\xe1\xda\xaf\x7d\x15\xff\x00\xb9\xb6\ \x4f\xfa\x3e\x3f\xfd\xda\x69\x7d\x14\xe1\x2c\x5d\x59\x42\x57\x4f\ \x5f\x9b\x1b\x83\x71\x75\xa6\xe2\xee\x98\xef\x45\x14\x57\xa3\x3a\ \x81\x45\x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\ \x01\x45\x14\x50\x01\x45\x14\x50\x01\x58\xb8\xa0\x91\x9a\xc8\x9c\ \x0c\xd3\x5d\xde\x62\x58\x69\x44\x9a\x00\x43\xa9\x6f\x71\xad\x90\ \x5e\x93\x25\xf4\x32\xd3\x48\x2a\x5a\xd4\x70\x12\x07\xad\x70\xef\ \x5f\xfa\xd5\x37\x53\x5c\xdd\xb4\xd9\xde\x5b\x76\xd6\xd7\x81\xb4\ \xff\x00\x5a\x7d\xcf\xbf\xf8\x54\x8b\xf4\xbb\xea\x7b\xcf\xcb\xfe\ \x89\x5a\x65\x1d\x88\x39\x98\xa4\x1f\xde\xfe\xc9\xf8\x1f\xcc\xfc\ \x57\x2d\x38\xe1\x5e\x48\x59\x28\x07\xef\x9e\xea\x3f\xe5\x4a\x6d\ \xcb\x51\x94\xd2\x5d\x66\x2e\x9d\x25\x4e\xba\xb4\xa9\xce\xff\x00\ \xd6\x63\x93\xf4\xa4\x65\xe2\xf1\x11\xd8\x18\x1c\xef\x56\x71\x91\ \xf2\x7d\xbf\x9d\x27\x2a\x5b\x9e\x44\x79\x53\xeb\x4a\xed\xd1\x5f\ \x98\xfb\x50\xe1\xb2\xe3\xae\xba\xb0\x94\xa1\x09\xdc\xa5\xab\xe9\ \x51\x95\x41\x5d\x8d\x52\x95\x59\x59\x7a\xee\x1d\x60\xb8\x86\x98\ \x53\x49\x71\x61\xa3\x80\xa0\x84\xf9\xdd\x3e\x80\x7b\x7b\x01\x5d\ \x1d\xd1\x7e\x8c\x49\x75\x11\xb5\x0e\xb5\x8e\x94\x24\x25\x2a\x85\ \x68\x71\x3e\x54\x27\xba\x4b\xa3\xf8\xec\xfc\x4d\x3b\xf4\x1f\xa3\ \x90\xb4\xc4\x78\xb7\xdd\x47\x19\x32\xef\x65\x21\xc6\x18\x58\x05\ \x11\x09\xf5\xc7\xef\x2f\xe4\xf6\xf4\xab\xb1\x5b\xce\xe5\xac\xa8\ \x1c\xe4\x93\xeb\x5c\xba\xb5\x54\xde\x9b\x1d\x88\x5e\x94\x72\xad\ \xff\x00\x83\xd8\xed\x04\x27\x03\x69\x38\xc7\x09\x09\x48\x00\x60\ \x00\x3d\x00\xa5\x71\xd8\x0b\xe3\x97\x08\xe0\xe0\x7f\x0c\xd6\x29\ \x42\x36\x6f\x70\x1c\x1c\x61\x03\xbf\xe3\x4b\x59\x5c\x82\x9d\xad\ \xa0\x32\x9f\xe3\x55\x8a\x11\x26\x2a\x62\x02\x8a\x7c\xe9\x43\x69\ \xfe\x35\xea\x9b\x82\x8e\x14\xe0\x51\xad\x68\x61\xc7\x55\xe6\x5a\ \x96\x47\xb9\xed\x5b\x5b\x80\x08\xc9\xc1\x1d\xfb\xd3\x92\xec\x42\ \x76\xdd\x98\x20\x42\xc7\x2b\x03\xf0\xcd\x6a\x75\x8b\x7a\xff\x00\ \xe1\x07\xce\x07\xf1\xa7\x06\xe3\x36\x8c\x27\x18\xc7\x7c\xf7\xac\ \x84\x66\x72\x41\x03\x8f\x8c\x54\xb8\xb6\x82\xe3\x42\x99\x86\x01\ \x01\xdc\xfb\xf3\x5a\x5d\x6d\xa2\x0e\xd1\xba\x9e\xdc\x8b\x1b\x61\ \x3e\x51\x8e\x7b\xd2\x65\x47\x61\x00\xed\x52\x47\xe3\x4b\x94\x4b\ \x29\x0c\xcb\x65\xac\x02\xa6\x17\x9f\x42\x38\xa4\xab\x8e\x82\xbd\ \xac\xad\x48\x57\x38\x0b\xe2\x9f\xd6\xc3\x7d\x82\xc2\x49\xe7\x93\ \x9a\x45\x2e\x39\xd8\x72\x90\xa0\x79\xc6\x29\x72\x80\xc5\x21\x96\ \x43\x44\x20\xb6\xea\x76\xa8\x8c\x13\x8e\x08\xaa\xbb\xab\x3d\x35\ \xb5\x6a\x48\x0f\xb8\xd3\x49\x8b\x3d\x00\x29\x0a\x1c\x03\x8f\xa5\ \x5b\x2a\x52\x9a\x05\xb2\x0a\xdb\xfe\xca\x8f\x3f\x81\xa4\x17\x08\ \xe8\x75\x1e\x4e\x47\x3b\x4f\xaa\x7e\x0d\x21\xe8\xf4\x1a\x9b\x5b\ \x1c\xc1\xd1\xb7\x17\xa5\xf5\x93\xb6\x7b\x92\x8c\x79\x28\x21\x0d\ \xa9\x47\x09\x74\x64\x91\xf8\xd7\x6c\xe8\x8b\x88\x93\x05\xa3\xbb\ \x9c\x73\x5c\xa7\xd7\x8d\x28\xb9\x50\x13\x77\x84\x16\x89\x71\x32\ \x49\x47\x7c\x03\xc6\x7d\xf1\xcd\x4d\xbf\x45\xce\xa0\xbf\x7d\xb4\ \x88\x97\x27\xf3\x3a\x2e\x10\xe1\x3d\xd6\x3d\x15\x5d\x2c\x35\x48\ \xc3\xaf\xdb\xb9\xc9\xc5\xd3\xb4\xb3\x9d\x4c\x85\x65\x35\x95\x22\ \xb7\xc8\x0e\xb4\x08\x39\xc8\xa5\xb5\xd2\x33\x05\x14\x51\x40\x05\ \x14\x51\x40\x05\x14\x51\x40\x05\x14\x51\x40\x05\x14\x51\x40\x1c\ \x4b\x19\xb5\xb7\xd6\x6e\xa2\x25\xc4\x29\x04\xde\x64\x28\x05\x0c\ \x70\x5f\x74\x83\xf8\x82\x0f\xe3\x52\x2a\xe9\x7b\xbe\x88\xd2\xb7\ \x6b\xda\xaf\x57\x0b\x2b\x0f\x5c\x16\xda\x5a\x5b\xdb\x94\x92\xb4\ \xa7\x3b\x42\x80\x20\x2b\x19\xee\x73\xc7\x14\xba\x06\x9e\xb1\x41\ \xc7\xd8\xec\xf0\x19\x23\xf7\x92\xc2\x77\x7e\x78\xcd\x79\xcc\x5f\ \x42\xd4\xc4\x57\x95\x4c\xc9\x26\x71\xff\x00\x4c\x9b\x93\xeb\x68\ \x50\x9d\x2d\xbc\xea\xbd\x2d\x09\x76\xcd\x3f\x09\xeb\x8d\xad\x6e\ \xad\xd6\xe2\x2e\x32\xdc\x0c\x29\x44\x95\x06\xd4\x9c\x10\x92\xa3\ \x9c\x1c\x8c\x93\x8c\x66\xb7\x9d\x0b\xac\xef\x13\xdf\x9a\xab\x2a\ \x98\x32\x1d\x53\x8b\xf1\x16\x96\xc2\x4a\x89\x27\x85\x1c\xe3\x9a\ \xe8\x7c\x51\x5a\x5f\x43\xf1\x22\xa3\x5a\xab\x92\x5e\x0b\xee\x68\ \x58\x04\xe2\xa3\x39\x36\x91\x4a\x59\xfa\x41\x77\x72\x43\x6a\xba\ \xcf\x88\xc3\x19\x05\xc4\xb2\xa2\xb7\x31\xea\x06\x40\x00\xfc\xf3\ \x57\x3c\x56\x1a\x8b\x19\xa8\xcc\x20\x21\xa6\x90\x10\x84\x8f\x44\ \x81\x80\x2b\x65\x15\xbb\x09\x81\xa3\x84\x4f\x86\xb7\x34\xd1\xc3\ \xc2\x8f\xba\x14\x51\x45\x6c\x1e\x14\x51\x45\x00\x14\x51\x45\x00\ \x14\x51\x45\x00\x14\x51\x45\x00\x14\x51\x45\x00\x14\x51\x41\xed\ \x40\x1a\x64\xb8\x10\x82\x73\x54\xe7\x5e\xb5\xba\x74\xbe\x91\x9d\ \x3d\x0b\x1f\x68\xdb\xe1\xc7\x4f\xbb\x87\xb7\xe5\xdf\xf0\xab\x3e\ \xff\x00\x28\x33\x1d\x64\x9e\xc2\xb8\x63\xf4\xc3\xd6\x4b\x99\x7e\ \x6a\xc6\xc2\xce\xd8\x83\x2b\x19\xe0\xad\x5c\xff\x00\x01\x8a\x5d\ \x57\xb4\x49\x8c\x73\x4a\xcc\xa1\xaf\xf7\x17\xee\x57\x07\xdf\x7d\ \xd5\x2d\x6e\x28\xad\xe5\xa9\x59\x2a\x24\xe7\x14\xd5\xcb\x87\xbe\ \xd4\x0f\x5a\xcf\x03\x1e\x62\x08\x1c\xa8\xfb\x9a\x5f\x68\xb4\x4d\ \xba\x5d\x22\xdb\xd8\x6c\x87\x1f\x52\x52\x06\x39\x4a\x54\x47\x9b\ \x1f\x43\x9a\x9b\xa8\xab\xb2\xee\xf3\x7a\x1a\xad\x30\x24\xdc\xe7\ \x35\x02\x0b\x0b\x79\xe7\x94\x12\x86\xd0\x39\x51\xae\xbb\xe8\x2f\ \x4c\x2d\xda\x46\x0b\x77\x6b\x93\x2d\xc9\xbe\x38\x8c\xee\x23\x72\ \x63\x02\x3b\x27\xe7\xe6\xab\x7e\x94\x69\x64\xdb\x2e\x69\xf0\xda\ \x58\x25\xe2\xca\x1f\x18\x25\x48\xc9\x19\xcf\xf7\xb1\xc9\x1e\x99\ \xc5\x74\xbd\x81\x29\x6d\x01\xa0\x41\x09\x01\x28\x00\x76\x03\xd3\ \xe6\xb8\xf8\xac\x43\xa9\x53\x22\xd9\x1d\xbc\x3d\x0e\x05\x2c\xdf\ \xe4\xfc\x90\xe9\x17\x7b\x7e\x6f\xde\x23\x72\xb3\xef\x4a\xdb\xdc\ \xa3\xb8\x8e\x7d\x0f\xb5\x68\x27\x19\xdd\xd8\x9e\x00\xf5\xa5\x31\ \xb0\x52\x37\x77\xec\x71\x54\x48\xab\x62\x96\x93\x80\x0a\xb3\xf8\ \x73\x4a\xd9\x51\x24\x81\x80\x33\xdc\xd6\x90\xe2\x11\x8c\x10\x93\ \x8c\x01\x58\x3f\x71\x83\x17\xc8\xe3\xa9\x2b\x03\x24\x67\xb7\xd6\ \x98\xa2\x29\xdf\xb0\x71\x68\xa9\x59\x05\xc5\x76\xe7\x06\xb7\x15\ \x38\x94\xf0\xb7\x30\x3d\xd5\x4c\xc9\xbd\xc6\x43\x49\x77\x7a\x58\ \x4a\xf2\x12\x56\xa4\xa7\x77\xd3\x3e\x9f\x35\x9b\x77\x48\x4f\x63\ \xc2\xb8\x47\x77\x71\xc1\x28\x90\x0f\x3e\xdc\x1e\x7e\x95\x74\x43\ \x84\xbb\x07\x15\x2d\x47\x95\x1c\x8f\x92\x6b\x15\x2c\x2b\x92\x47\ \xe3\x5a\x54\xb5\x1e\x12\xb5\x29\x20\x8f\x29\xf4\xf9\xad\x98\xe3\ \xb8\x3e\xf8\xa9\xd4\x8b\x02\x9b\x4a\xb9\x3c\x67\x8c\x56\xa2\x10\ \x14\x46\x33\x8a\xcc\xa4\x02\x40\x04\x7f\x8d\x01\x04\x05\x64\x10\ \x31\xeb\xcd\x55\xa2\xcb\x43\x4a\x92\x7b\x14\x12\x0f\x6e\x2b\x5b\ \x9e\x22\x06\x52\x4a\x7e\x94\x92\xf7\x72\x8b\x05\x4d\xb2\xe3\xe8\ \xf1\x94\x37\x10\x55\xf7\x52\x06\x49\x3e\xc3\xe6\xab\xfb\xc7\x5a\ \x34\x55\xba\x77\xd8\x8d\xee\x33\xae\x83\x8d\xcd\xab\x2d\x9c\x77\ \xe7\xb1\x3f\x4c\xd2\x65\x24\x98\xd8\xd3\x94\xb6\x44\xf9\xf5\x13\ \xe5\x71\x00\xfc\x8a\x6f\x79\x18\x3b\x90\xa3\xf2\x3d\xe9\xb6\x26\ \xb5\xb2\x4e\x4b\x65\xb9\x0d\xa9\x2e\x63\x0b\x6d\xc0\xe2\x4e\x7b\ \x64\xa7\xb1\xfa\xd3\xa9\x53\x4b\x48\x52\x16\x30\xa1\xc0\x1e\xbe\ \xd4\xa7\x69\x6c\x5d\xc6\x51\xdd\x0c\x77\xc8\x2d\xca\x8a\xe2\x1c\ \x40\x29\x5a\x70\x7d\xf9\xae\x6c\x4c\xf9\x3d\x2e\xea\x4b\xae\xad\ \x0b\x30\x5e\x7b\x7a\xb6\x76\x29\x27\x9f\xc7\x06\xba\x8d\xf0\x52\ \xe8\x41\xfb\xa7\x3c\xd5\x1f\xd7\xdb\x2b\x52\x65\xc6\x75\x4d\x05\ \x78\x8a\x28\x73\x9f\xbb\xc7\x7f\xaf\x22\x99\x4e\xa6\x4d\xf6\x17\ \x2a\x0a\xad\xe2\xce\xa4\xd0\x37\xe8\xf7\x2b\x73\x0f\x32\xf2\x5c\ \x6d\xc4\x05\xa1\x60\xf0\xa4\x91\x90\x6a\x72\xca\xb7\x24\x57\x24\ \x7e\x8b\x5a\xad\xdf\xd4\xe2\xc3\x35\x64\x49\xb6\xaf\xc1\x04\xf1\ \xbd\xb2\x72\x93\x8f\xe1\x5d\x51\x68\x90\x1e\x61\x24\x1f\x4a\xec\ \xe1\xe6\xe5\x1b\x3d\xd1\xc2\xb3\x8b\x71\x63\x95\x14\x51\x4e\x24\ \x28\xa2\x8a\x00\x28\xa2\x8a\x00\x28\xad\x52\xe4\xb1\x12\x33\x92\ \x64\xba\x96\x99\x6c\x65\x6b\x51\xe0\x0a\xac\x75\x96\xbb\xbe\x39\ \x6f\x79\xeb\x23\x48\xb6\x43\x1c\x22\x64\x84\x6e\x5b\x9f\x29\x49\ \xe0\x7e\x39\xab\xd3\xa7\x2a\x8e\xc8\x55\x5a\xd1\xa4\xaf\x22\xd3\ \xa2\xb9\xd7\x4f\x1d\x59\x76\x2e\x4a\x9b\xac\x2f\xc1\xb0\x09\xcb\ \x52\xd4\xd0\x3f\x20\x0e\x31\x4d\x37\x39\xda\xa1\x89\x6b\x42\x35\ \x56\xa4\xf0\xd2\x78\x3f\xac\x9c\xc9\x1f\x9d\x69\xf6\x29\xf6\x99\ \x3d\xbd\x7f\xa9\xd4\x14\x57\x34\xe9\xd9\xf7\xa9\x97\x86\x58\x91\ \xac\x35\x12\x59\x2a\xc1\x3f\xac\x5c\xe7\xdf\xd6\xae\xd8\x9a\x79\ \x2a\x88\x87\x06\xa3\xd4\x0a\x04\x72\x4c\xdc\xff\x00\x85\x2e\xae\ \x1e\x54\xd2\x6c\x75\x2c\x57\x11\xb4\x91\x29\xa2\xaa\x8b\x83\x53\ \x44\xf7\x3c\x2d\x49\x7d\x4b\x69\x38\xc0\x98\xaa\x7e\xd2\xf6\x49\ \x92\x62\x97\xe4\xea\x1b\xea\x82\xbe\xee\x66\x1f\xf1\x15\x33\xc3\ \x4a\x11\xcc\xd9\x58\x62\xf3\xcb\x2a\x44\xe6\x8a\x80\x6a\x06\x1c\ \x88\x97\x16\xdd\xf6\xf4\x94\xa0\x77\xfb\x59\xff\x00\x2a\xae\x9e\ \xbb\x5e\xfe\xd2\x42\x75\x25\xe4\x05\x13\x8f\xf6\xd5\xe3\xf9\xd5\ \xa1\x83\x9c\x95\xc8\x96\x36\x31\x76\xb1\xd0\x94\x55\x61\xa5\xde\ \x97\x2e\x33\x6b\x7e\xf7\x76\x52\x87\x0a\xff\x00\x6a\x3c\xfe\x75\ \x2c\x9b\x68\x71\x50\x8b\xac\xde\x2e\xc1\x5b\x72\x31\x2b\xff\x00\ \x2a\x5c\xf0\xf2\x83\x49\xf3\x2f\x0c\x4a\x9a\x6d\x2d\x89\x1d\x15\ \x59\xe6\xe2\x87\x0a\x55\x79\xba\x1d\xa7\x9f\xf6\xa5\x76\xa9\x6d\ \xb6\x1f\xda\x21\x87\x8d\xd2\xe3\x9c\x73\xfe\xd1\xff\x00\x95\x4d\ \x5c\x34\xa9\xab\xb0\xa5\x8a\x55\x1d\x92\x1f\xe8\xaa\xa3\x53\xdd\ \x27\x31\x70\x5a\x62\x5d\x2e\x49\x43\x67\x07\x32\x54\x3f\x95\x37\ \x45\xbb\x5d\x5e\x20\xae\xf5\x71\x47\xc7\xda\x57\xcf\xf1\xa6\x2c\ \x14\xda\x16\xf1\xd1\x4f\x62\xe8\xa2\xab\x58\xf3\xe4\x48\x8b\xe1\ \xa6\xef\x3c\x3a\x07\x72\xfa\xbb\xfe\x74\xa7\x4a\x1b\xdc\x9b\x83\ \x8c\xc9\x9f\x2c\xb4\x93\xc1\x2f\xa8\xff\x00\x3a\x89\x60\xe5\x15\ \x76\xc9\x8e\x32\x32\x76\x48\xb0\x68\xa4\x29\x85\xb5\x24\xaa\x64\ \xb3\xf3\xe2\x9a\x4d\x38\x21\xa8\xee\x2d\x13\xa4\x05\x01\xdb\xc5\ \xac\xf1\x83\x93\xb2\x34\xca\x79\x55\xd8\xef\x45\x42\xdd\xb9\xbc\ \xc3\x1e\x22\xe5\xc8\x23\x1f\xfc\x43\x4d\x92\x6f\xb7\x42\x3f\x64\ \xf3\xa0\x13\x80\x4b\x87\xfc\xeb\x4f\xb1\x4c\xcd\xed\xb0\xec\x2c\ \x7a\xc5\xc3\x84\x13\x50\x2b\x55\xfa\x73\x8b\xf0\xdf\x79\xcd\xde\ \x87\x79\xff\x00\x3a\x58\xfd\xe5\xf6\x9a\x59\x71\xd7\x31\x8e\x3c\ \xc6\x8f\x62\x99\x2b\x1b\x06\x27\xd7\x92\xd4\xdc\x45\x84\x9e\x4f\ \x15\xf3\x6b\xab\xd7\x73\x7a\xd7\xd7\x69\x7b\xf7\x03\x21\x49\x4a\ \xbb\x8d\xa0\xe3\x3f\xca\xba\xf7\xaf\x9a\xe5\xdb\x56\x91\xb9\x4b\ \x4c\x85\x25\xdf\x0c\xb2\xc8\xdc\x72\x5c\x5f\x03\xd7\xd0\x64\xfe\ \x15\xc3\xaf\x87\x97\x20\x4b\xdb\xbd\x0f\xa8\x80\x49\xc8\xcf\xa8\ \x3f\x35\x8e\xad\x2c\x95\x1b\x6c\xd3\x42\xa7\x11\x36\x8c\x18\x52\ \x1b\x21\xc5\x24\x2b\x61\xc2\x10\x7b\x13\xee\x6a\x61\xa1\xae\x2c\ \x5a\x1c\x17\x45\xbb\x99\x8f\x3d\xb5\x2b\x03\x2a\x4b\x7f\xbe\xad\ \xa7\x83\x9c\xf0\x3d\x93\xf3\x51\x34\xb6\xcb\xee\x14\xa1\xf4\x32\ \x94\x8e\x03\xb9\x1f\x91\xff\x00\x3a\xc9\x69\x58\x90\x19\x6d\x7e\ \x65\x00\x84\xed\x3b\x89\xf4\xc0\xc7\x72\x69\x53\x8e\x65\x63\x4d\ \x39\xe4\x95\xce\x83\xe9\xee\xa8\xb6\xb8\xd4\xdb\xf5\xc2\x5a\x21\ \x5a\xad\x8a\x6e\x34\x72\xf2\x82\x40\x51\xc8\x03\x8f\xbc\x48\xce\ \x71\xee\x6a\xc4\xb1\xf5\x8b\xa6\x71\x62\xa9\x52\xf5\x8c\x64\x3a\ \x15\xb4\x6c\x8c\xf2\xbc\xb8\xf8\x4f\xd6\xb9\xf3\xa9\x5a\x7d\xfb\ \x1f\x49\xed\x4c\xc8\x88\x62\xbe\x2e\x29\x53\xac\xf7\x53\x41\x4d\ \x28\xa4\x2c\xff\x00\x68\xe1\x5c\x7a\x57\x48\x69\x1d\x29\xa6\x62\ \x74\x6b\x4e\x6a\x18\xbd\x28\xd1\xd3\xdf\x7e\xd5\x1d\xc5\xbd\x36\ \x0f\x8c\x5c\x5a\xb0\x92\xb5\x12\x73\xc9\xe4\xfd\x6b\x9b\x43\x0b\ \x4e\xbd\xea\xa7\xa5\xdf\x91\xd5\xaf\x8a\x94\x1a\xa7\x65\xcb\xcc\ \xcd\x5d\x79\xe9\x0a\x48\x49\xd5\xce\x10\x3d\x45\xb6\x41\xff\x00\ \xfc\x2b\x79\xeb\xff\x00\x48\x1b\x69\x45\xad\x58\xb5\xab\x19\x03\ \xf5\x74\x80\x4e\x3e\xa8\xa5\x6b\xd3\x37\x35\x46\x2f\xda\xf4\x27\ \x4d\x59\x69\x20\x95\x3c\x34\xe3\x4d\x47\x4e\x3f\xe3\x5c\xe0\xfe\ \x15\x86\x97\xd0\xda\x9f\x53\x3b\x23\x68\xe8\xaa\x9b\x8a\x52\x99\ \x28\x89\x61\x6a\x62\x9a\x2a\xe4\x05\x10\x84\xa7\x3c\x1e\xc4\xd3\ \x61\x4a\x93\xf7\x5b\x7e\xbc\x05\xca\x53\x4a\xf2\xb2\x21\xd3\xfa\ \xf5\xa6\xee\x61\x5f\x65\xbc\x46\x8c\x8e\x4b\x2d\xa9\x45\x0a\x20\ \x76\xdc\x48\xc0\xcf\xe3\x50\xcd\x4d\xd6\x18\xec\xc4\x6a\x05\xaf\ \xec\xf2\x64\x2d\xb2\xe2\x9d\x66\x56\x52\xda\x8f\x60\x55\xce\x4f\ \xae\x33\xf9\x57\x4c\xb5\xd0\x2d\x2c\xfc\x4f\xff\x00\x54\xb5\x69\ \x29\x2f\x9e\xea\x8d\xa6\x58\x61\x39\xfa\x24\xe7\xf8\xd4\x23\x58\ \xfe\x8d\xbd\x3d\x5b\x6e\x97\x63\xdb\xad\xce\xf0\x12\xe2\x61\x48\ \x61\xbc\xfc\x14\xbc\xa4\xe7\xf0\xa1\x61\x23\x7b\xca\xfe\x45\xbd\ \xbe\xcb\x2c\x2d\xf0\xbf\xd4\xe5\xe8\x53\xb5\x05\xea\x43\x92\x25\ \xdd\xe6\xbc\xf3\xca\x09\x05\x2a\x5b\x99\x04\xf3\x84\x0e\x00\xfe\ \x35\x25\xd2\x36\x1b\xba\x56\xb5\xe9\xe7\xe7\xb5\x21\x0a\x53\xae\ \x34\x14\x42\xde\x4a\x78\x56\x10\x7b\xfd\x47\x20\xf7\x15\x36\x97\ \xfa\x39\x39\x6e\x7c\x48\xd2\xba\xb9\xb4\x38\x9f\x30\x4c\x5b\xb8\ \x6d\x60\xfc\x25\xc4\xa7\x3f\xf6\xab\x28\xed\xf5\x8f\x42\x38\x5d\ \x9a\x21\xdf\xdb\x53\x9b\xdb\x17\x38\x25\x2e\x03\xee\xdb\xec\x92\ \x77\x1e\x7b\x92\x3e\x2a\xb3\x84\x6f\xd5\x92\xfe\x0d\x74\x71\x6d\ \x25\x78\xb6\xfe\x7f\x92\xe6\xe8\xfb\xd7\x35\xd8\x76\xc8\x9a\xf4\ \xa6\xd2\x94\xad\x92\xf8\xc2\xdb\x1f\xbc\x09\x3d\xfb\x76\xf7\xc1\ \xf5\xa9\xf4\x37\x1a\x70\x16\xf2\x0a\x81\xc0\xf9\xaa\x3f\x44\xf5\ \xb7\x4a\x39\x31\xb6\x75\x3c\x59\xfa\x3e\x72\xbf\x64\xf3\xd2\x71\ \x22\x13\x85\x59\x00\x17\x50\x3c\x8a\xcf\x3e\x64\x8e\xc3\x35\x7a\ \xe9\x8f\xb2\xcc\xb6\x36\xfc\x07\xa3\x4d\x88\xb4\xe5\xa7\xe2\xba\ \x97\x5a\x23\xe1\x49\x24\x1a\xbc\x69\xb8\xa4\x99\x92\xb5\x45\x29\ \x39\x02\xdb\x59\xce\xd1\xc8\x1c\x83\xed\x5e\x38\x48\x8e\xa2\x91\ \xc2\x47\x62\x29\x7c\xb8\xae\x82\x0b\x0d\x93\xc7\x24\x72\x0f\xc0\ \xa6\x1b\xbc\xb6\xed\x30\x5f\x99\x73\x95\x1a\x04\x56\xbc\xcf\x3f\ \x2d\xd4\xb4\xda\x47\xae\x54\xa3\x81\x55\x9a\x48\x5c\x7a\xc5\x2b\ \xd6\x48\xb3\xee\x57\x93\x01\x85\xb8\xd4\x79\x6e\x62\x5b\xc9\x57\ \x99\x2d\x80\x30\x81\xf3\xef\xf5\xaa\xa6\xf3\xa6\xa2\xdb\x52\xe3\ \x51\xa0\x82\x86\xc3\x69\xf1\xc8\x1b\x54\x95\x03\xfb\x20\x7b\x93\ \x8e\x0e\x31\xeb\x93\x56\x4e\xb2\xeb\x66\x96\xfd\x64\xe4\x0d\x11\ \xa6\xae\x1a\xe6\xe4\xae\x10\xa6\x5b\x53\x51\x73\x93\x92\x9e\x0a\ \xdc\xfa\x80\x07\xcd\x56\xda\x9a\x47\x5c\x75\x5a\xcb\xb2\x20\xc4\ \xd3\xb1\x54\x42\x44\x3b\x7b\x68\x43\x89\xc7\x6c\xf2\xa7\x01\xe7\ \xd4\x8f\xa5\x27\x84\xe3\xab\x69\x78\x9d\x18\xe2\x22\xe2\xa2\xe0\ \xdf\xaf\x91\x00\x4d\xd6\x7e\x95\xbb\xae\x65\x86\x6a\xad\xab\x25\ \x47\xec\xce\x85\x2d\x97\x92\x48\xf2\xa9\x38\xc0\x3e\xb9\xf8\xe2\ \xac\xad\x17\xd6\x70\x63\xa8\xca\x97\x1a\x0a\x59\x29\x21\x97\xdf\ \xc2\x82\xbd\x52\x09\xfb\xc8\xf9\xef\xfe\x30\xe1\xd1\x4d\x5b\x31\ \xc3\x22\xe5\x32\x03\x2a\x51\xca\x97\x36\x7e\xe5\xe7\xe4\x24\x13\ \x4d\xd7\x6e\x99\xc2\xb4\x83\xf6\xfd\x5b\xa7\x99\x50\x24\x63\xc1\ \x90\xb1\xc7\xb1\x08\xe6\xaf\x25\x86\xa8\xac\xe5\xaf\x70\x88\xfb\ \x4c\x64\xf2\xc2\xf1\xec\x7a\x9d\x33\x03\xab\x5d\x3d\x9f\x01\x0e\ \x3f\xab\xad\x31\x5f\x48\x01\xc6\xde\x7b\x18\x38\xf4\x20\x1c\xd4\ \x27\xaa\x3a\xdb\x44\x4c\x99\x05\xcb\x76\xa7\xb4\xcf\x57\x8f\xe7\ \x4b\x6e\xe7\xcb\x82\x08\x39\x1d\x8f\x6c\xfc\xd5\x02\xde\x9a\x88\ \xe6\x1b\x85\x7f\xd2\xb3\xca\xd5\x81\xb5\xe5\x34\xbf\xa6\x1c\x48\ \xa5\x12\xf4\x5b\xb1\x54\x10\xf2\xa2\x30\xe9\x4e\x76\x3c\xd2\xdb\ \x03\xe8\xbc\x14\xfe\x39\xab\xc7\x07\x4e\x6f\xde\x66\x7f\x68\x9c\ \x75\xd1\x5f\xc7\x99\x2f\xe9\xee\xa9\x66\xc1\xd4\x86\x1c\x72\x73\ \x02\x33\xf9\x61\xe7\x3c\x51\x82\x41\xf2\xab\xfc\x3f\x1a\xee\x1d\ \x01\xa8\x63\xce\x82\xd2\x9a\x90\xd3\xc9\x20\x79\x9b\x58\x50\xfc\ \xc5\x7c\xd5\x99\x62\x79\xb5\x3e\x9f\x0c\x78\x91\xd0\x97\x57\xb5\ \x5b\xb0\x82\x42\x42\x81\x1e\x9b\x88\x1f\x88\xab\x07\xf4\x69\x9d\ \x76\x67\x5f\xc8\x86\x8b\xbc\xf8\xd1\xd5\x05\xc5\xac\x32\xfa\x93\ \x9c\x14\xe3\xf8\xd6\xa7\x18\xc1\xe7\x83\xd0\xe6\xe2\x61\x38\xa7\ \x37\xc8\xfa\x4e\xc3\x81\x69\x04\x73\x5b\x6a\x9c\xd3\x91\xe5\x49\ \x8c\x8c\xea\x5b\xf8\x3f\x13\x8f\xf9\x54\xda\x0e\x9e\x5b\xd1\xd2\ \xe2\xb5\x0e\xa2\xce\x39\xc4\xdf\x5f\xca\xb7\xca\x8b\x8c\x54\xbb\ \x4c\x14\xf1\x3c\x47\x64\x89\x6d\x15\x54\xdd\xed\x57\x25\x5c\xd6\ \xc4\x2d\x4d\xa9\x0e\x0f\x00\x4f\x56\x0f\xe5\x4a\x22\xe9\x1b\xf3\ \xa8\x0a\x5e\xaa\xd4\x88\x2a\xec\x3f\x58\xab\xfc\xa9\x8f\x0a\xd2\ \xbb\x65\x16\x32\xee\xca\x2d\x96\x75\x15\x59\x4b\xd2\x17\xe6\xdb\ \xcb\x5a\xbb\x51\x9e\x7d\x6e\x0a\xed\x45\x0b\x0a\xde\xd2\x40\xf1\ \x8d\x6f\x06\x38\x5c\xae\x0c\x6a\x6d\x6e\xbb\x0a\x9c\x3f\xab\xed\ \x8a\x49\x90\x9c\xe0\x3c\xf7\x70\x9f\xa0\xff\x00\x3a\x70\xea\x0d\ \xae\x1c\xcb\x0a\xc3\xcd\xa5\x28\x64\x0c\x01\xc6\x38\xff\x00\xca\ \xa0\x7d\x38\x75\x4e\xbb\xfa\xc7\x0a\x2f\x4d\x92\xe3\xab\x23\xb9\ \xca\x8f\xf9\x54\xff\x00\xa8\x72\x54\xce\x9b\x75\x29\x04\xad\xc1\ \x80\x07\xae\x69\xd1\xa5\xc3\x9c\x2d\xcc\x44\x6a\xf1\x69\xcd\xcb\ \xd7\x61\x4d\x4a\xb9\x94\xb1\xf6\x68\x00\x25\xb1\x91\x90\x3b\xff\ \x00\xae\x29\xad\xc4\xb8\xf8\x52\x54\xf2\x89\x58\xed\x9e\xd5\x25\ \xb0\xe8\xc9\xd3\x50\x1d\x92\x4b\x49\x56\x49\x1d\x8d\x49\x5a\xd0\ \x30\x83\x61\x2a\x52\xc3\x87\x80\x73\xeb\xdf\xfc\x6b\x7b\x92\x5b\ \x98\xd4\x5b\xd8\xae\x2d\xd1\x56\xca\xd0\x5a\xc1\x5e\xf1\x91\xeb\ \xf3\x57\x93\x13\x1c\x85\xa5\x5a\x0f\x0f\xda\x94\x0e\xff\x00\xe3\ \x51\x3b\x46\x95\x8b\x6c\xbb\x89\x13\x1c\x2b\x6c\x72\x02\xbb\x8a\ \x76\xba\xca\x55\xc2\x50\x66\x33\x79\x69\x3c\x24\x01\xc7\xa1\xaa\ \x4e\x39\xda\x5c\x8b\xc2\x4e\x09\xbe\x7b\x09\x6d\xb1\x5c\x9d\x39\ \x29\x09\x27\x72\xc1\x51\x1d\xbf\xd7\x61\x53\x67\x9c\x6e\x14\x14\ \x30\xd8\x19\x09\xc7\xe5\xcd\x23\xb3\x47\x6a\xd9\x10\x3a\xf7\x2e\ \xa8\x6e\x38\xa6\xdd\x43\x73\x11\xd9\x5b\xce\x2b\xce\x7e\xe8\x3f\ \xeb\xe9\x48\x95\xea\xce\xdc\x90\xf8\x7e\xcc\x2f\xcd\x91\xcd\x67\ \x3b\x9f\xb3\x36\xac\x2b\x39\x5e\x2a\x22\x8b\x72\x9e\x06\x4e\x00\ \x09\x38\xa5\xcf\xac\xbc\xa5\xbe\xbc\x92\xbe\xc0\x0e\xde\xd4\xe7\ \x69\x0d\xa2\xd8\xa6\xca\x48\x52\xff\x00\xb5\x5a\xd1\x91\xea\x6b\ \xd3\xb3\x4c\x39\x6d\xef\x50\xf0\xd5\x81\x92\x7b\xfc\xd5\x9b\x68\ \x98\x14\x03\x2a\xe5\x04\x00\x2a\xa3\x42\x36\xad\x6d\xf2\x36\x92\ \x47\xc5\x4a\xf4\xa5\xd4\x2b\x11\x9c\xfb\xc3\xee\x92\x3b\x0a\x55\ \x6a\x6a\x71\xb0\xda\x35\x1c\x25\x71\xfb\x51\xdb\x8b\x2f\x2a\x53\ \x5f\x71\x5f\x7b\x15\xb3\x4d\x4c\xd8\x55\x15\x67\x85\x0c\x27\x26\ \x9c\x58\x7d\x32\x1a\x2c\x48\x39\x49\x1c\x1a\x61\xb9\x40\x72\x04\ \x8f\x19\xbc\xa9\xb1\xca\x7e\x94\x98\x3c\xf1\xe1\xcf\x71\xd3\x59\ \x25\xc4\x86\xc4\x7f\x54\x41\x72\x2d\xc1\xd5\x3a\x83\xb1\x67\x8c\ \xfe\x54\xdf\x15\x95\xa8\x61\xb6\x54\x46\x78\xe2\xa6\xaa\x90\xcd\ \xdf\xc3\x62\x42\x02\xd4\x93\xdc\x8a\x76\x8f\x06\x2b\x0d\x84\x86\ \x86\x3b\x76\xa6\xba\xb9\x12\xcc\xb5\x14\xa9\x67\x6d\xc5\xe8\x57\ \x2e\x27\x0a\x2a\xd8\xa6\xd5\xee\x46\x31\x53\x2e\x9d\xba\x56\xcb\ \x9b\xc8\x52\x87\xaf\xad\x3a\x49\xb7\x45\x90\x8c\x29\xa4\x80\x07\ \xa0\xa4\x76\x9b\x69\xb5\x4f\x53\x8c\x92\x50\xaf\x4c\xd2\xea\x55\ \x8d\x48\x35\xcc\x6d\x3a\x52\xa7\x35\x2e\x43\x9d\xfe\x42\xdb\x65\ \x2d\x20\x94\x95\x1f\x6a\x65\x53\x45\x63\x0a\x51\x27\xd4\x9f\x6a\ \x77\xbe\xa3\xc7\x61\x0e\xa3\x38\x4f\x71\x8a\x68\x79\xd0\xd4\x72\ \xe6\x4f\x94\x55\x70\xfa\x41\x58\x9c\x46\xb3\x77\x19\xef\x69\xd8\ \x50\xd0\x18\x4e\x79\xad\x0b\x18\x40\x4f\x6a\xf2\x53\xee\x4a\x90\ \x83\xb3\xcb\xef\x5b\x1e\x42\x8a\x02\xb9\xad\x88\xc6\xcd\x24\x61\ \xf6\xdc\xc1\x27\x38\xa5\x57\xa7\x52\x88\xa4\x9e\x4e\x31\x9a\xd0\ \xa6\x96\xe2\x40\x1c\x1e\x79\xf6\xa6\x9b\xcc\x97\x50\xd3\x8d\xad\ \x5b\x86\x3f\x2a\x3b\xc1\x1c\xc9\xfa\x59\x5c\x40\xb7\xc0\x88\x92\ \x37\x39\x21\xc7\x0f\xd1\x29\x03\xfc\x4d\x73\xf5\xa6\x73\xd6\xc7\ \x94\xbf\x05\xb9\x0c\xba\x8d\xae\x32\xe8\x3b\x56\x3d\xc1\x07\x29\ \x50\xee\x14\x39\x1f\x98\x36\xb7\xe9\x44\xfa\xdf\xd4\x90\x93\xce\ \x13\x18\xe3\x27\x8e\x56\xac\xff\x00\x85\x56\xf6\x6b\x63\x73\x90\ \xe9\x5b\xa1\x88\x8c\x00\x5e\x90\xae\x71\xf0\x91\xea\x49\xc0\x03\ \xdc\xd7\x9f\xad\x34\xdb\x6c\xee\xe0\xe2\xd5\x35\x61\xa9\x48\x53\ \xee\x2d\x6d\x78\xcb\x27\x24\xf8\x87\x25\x23\xdc\xab\xfc\x6b\xa0\ \xbf\x47\x6e\x9b\x08\x52\x60\x5f\xaf\xe9\x30\xe6\x4d\x4f\x8f\x6a\ \x74\x29\x0e\x61\xb0\x33\xb9\x23\x90\x95\xe7\xbe\x79\x03\x18\x1d\ \xea\x98\xb2\xfd\x9e\xe7\xa9\x20\xdb\x62\xb1\xe0\x41\x5c\x96\xfc\ \x64\xf7\x51\x40\x50\xce\x4f\xa9\xc6\x4e\x3d\xea\xea\x8f\xac\xda\ \xd1\x70\x0e\x54\x1e\x66\x14\x99\x0a\xb3\xb6\x71\x95\x87\x37\x24\ \x10\x3b\x8c\xa4\x83\xed\xd8\xf1\x58\x31\x75\x5a\xb4\x17\x33\xa3\ \x87\xa4\x9a\x73\xec\x1b\x3a\xfb\x0d\x85\xd8\xde\x8e\x2e\x6f\xcd\ \xb9\xc8\x9e\x97\x59\x65\xc0\x54\xea\x90\xda\x56\x16\xa3\x8c\x01\ \x9d\xd9\xc6\x2b\xa6\x3a\x57\x32\x72\x3f\x46\x3d\x11\x2e\xdb\x2b\ \x6d\xc9\xf8\x0d\xc2\x88\xe1\x20\x21\x95\x6e\x50\x53\x87\x3c\x1d\ \x88\x42\x95\x8f\x52\x90\x3d\x6b\x8a\x65\x5d\xa6\x4e\xb9\xbb\x73\ \x9c\xf1\x7a\x5b\xe7\xce\xbc\xf0\x91\xe8\x84\x7c\x0f\x7f\x53\xcd\ \x5e\x5f\xa2\x9e\xb9\xd4\x72\xaf\xb6\xde\x96\x48\x98\xda\xac\x66\ \x3d\xc1\xdb\x7b\x65\xa1\xe2\xb6\xe2\x99\x70\x86\xf7\x7a\xa4\x6e\ \x71\x40\x77\xe7\xd8\x0a\xa6\x0d\x3a\x34\xf8\x6f\x7f\xa9\xb3\x15\ \x85\x75\x12\xaa\xbe\x3e\x08\x8d\xeb\x4b\xf5\xe7\x51\xea\x65\x68\ \xab\x5c\xe9\x6b\xb4\xdb\x1d\x52\x56\x95\xbe\xa5\x97\x17\xb8\x95\ \x12\xa3\xfd\xe5\x12\x71\x8e\x49\xf8\xae\xa0\xfd\x16\xf4\x6c\x3d\ \x2d\xa6\xee\xa2\x3c\xc7\x25\x7d\xbd\xd6\x9c\x74\xab\x18\xdc\x94\ \x91\xc1\xc7\xb1\x19\x19\x3d\xbe\x6a\xa7\xe8\xc6\x86\x5c\x7b\xc5\ \xd2\xe7\x75\x28\x56\xfb\x83\xaa\x69\x18\xc1\x27\x71\xe4\xfb\xd7\ \x46\x58\xa5\xb7\x6c\x6d\xdd\x8c\xa5\x48\x59\x05\x5b\x4e\xdc\x60\ \x55\xa8\x54\xd5\xf6\x15\xc6\xc5\x65\xca\xb7\x26\x21\x09\x00\x24\ \x0c\x01\xd8\x0a\x61\xd7\x36\xbf\xd6\x76\x25\xc7\x0f\x25\x94\xa5\ \x5b\xca\x89\xf5\xec\x3f\x9d\x2d\xb5\xde\xed\xd7\x01\xfe\xcf\x21\ \x25\x49\x4e\x54\x92\x7e\xef\xbf\x34\xcb\xad\xf5\x7e\x9b\xb4\x5a\ \xc8\x9f\x72\x88\x43\x8e\x04\x14\x07\x02\x94\x38\x27\x38\x1f\x4a\ \xd9\x2b\x38\x9c\xc8\x29\x46\x6a\xcb\x52\xab\xba\xe8\x70\xb0\xb5\ \x26\x7b\x4e\x10\x09\x03\x38\x22\xa3\xb2\xad\xf7\xdb\x36\xf4\xb5\ \x39\xd4\xb2\xa1\x85\xb4\xe8\xf1\x59\x58\xf6\x29\x3c\x54\x86\x67\ \x51\x34\xa4\x97\x1e\x16\xf9\xc9\x71\x0d\xed\x4a\xd6\xb6\x54\x13\ \xb8\x8e\xd9\xc5\x37\xa2\xe8\xc4\xf5\xb6\x94\x2f\xf6\x4e\x61\x4d\ \xba\x9f\x32\x01\xf6\xcf\x6a\xe0\xe2\x28\xc2\x2f\xaa\xf5\x3d\x3e\ \x1a\xad\x67\x1e\xba\xba\xef\x43\x0c\x0b\x2d\xa9\x3a\x8a\x35\xfa\ \xee\xd3\x4e\xda\x0b\x6e\xc3\x9f\x1f\x68\x71\xb6\xdb\x75\xb5\x23\ \xc4\x52\x8f\x2a\x61\x0a\xd8\xa2\x95\x65\x48\xfb\xc0\xe1\x26\x90\ \xf5\x0b\xa3\x5a\x83\x4f\x6b\xbd\x29\x2f\x4a\x5b\x2d\x57\x18\xc6\ \xdb\x1a\x1b\xac\x6d\x42\x19\x93\x21\xa5\x2c\x6e\x52\x0e\x12\x41\ \x6f\xc3\xca\x8f\x72\x3d\xcd\x3b\x5f\x18\x91\x15\xf4\xcc\x8c\xd9\ \x4a\xe3\xbc\x8f\xb5\x33\xb7\xc8\xfb\x64\xf9\x92\xa1\xd8\x82\x32\ \x3f\x1a\x84\xcc\xb5\x6a\x4b\xe7\x56\x1b\xd1\xb6\xdd\x47\x31\xb8\ \x3a\x6e\x28\x85\x05\xd7\xdd\x50\x54\x44\x8c\x2d\x4d\x82\x0f\xed\ \x0a\x72\x90\x14\x79\xda\x84\x03\xda\x9f\x43\x13\xc1\xa4\xe3\x6d\ \x79\x11\x53\x09\x2a\xf5\xd4\xd4\xec\xac\xef\x7e\x49\x78\x6b\xcc\ \xd7\xfa\x58\x68\x7b\xdc\x58\x2c\x6a\x99\x76\x0b\x0e\x98\x43\x6d\ \xa5\xb5\xb5\x6c\x94\xa4\x07\x15\x9e\x49\x09\x01\x24\xd5\x27\x63\ \x96\x2d\xa1\x6b\xbe\x59\xbf\x58\x21\x6c\xe5\xa5\x4b\x74\xb8\xda\ \x37\x00\x42\xf0\x49\x1d\xb2\x41\xae\xc0\x99\xd3\x5b\xc5\xe6\xd4\ \x22\xea\x0e\xa8\x6a\x8b\x8b\x4a\x00\xa9\x95\x29\x2a\x68\xe3\xdc\ \x2b\x39\xfa\xd4\x1f\x48\xf4\xbe\xd5\x77\xd6\x97\x3e\x9e\xdd\xe7\ \x06\x95\x11\xd6\x2e\x4c\xc8\x6e\x30\x59\xb8\x42\x42\x90\x57\x1d\ \x63\x38\x41\x0a\xd8\x42\x87\x23\x72\xc7\x20\xe0\x68\x86\x2a\x4e\ \x69\x49\x68\xfc\x0c\xfe\xcf\x08\x53\x94\xa3\x52\xed\x6f\x64\xf6\ \xbe\xfa\x92\x3f\xd1\xe3\x47\xdc\xa5\xf4\x65\x77\x99\xb0\x15\x6f\ \xfb\x52\xde\x75\x95\x38\x80\x93\x21\x92\xac\xb6\xbc\x0c\x28\x8c\ \x64\x61\x5c\x60\x0c\x0e\x73\x49\x05\x92\xfb\x36\x49\x65\x0f\xab\ \xc3\xf4\x4b\x63\x6a\x53\xf8\x0e\xd5\xd2\x5a\xa9\x0d\x33\xa5\xa5\ \xc5\x8e\x03\x09\x43\x29\x69\x09\x6d\x20\x04\x0e\x00\x00\x76\x03\ \x15\x54\xbd\x74\xb2\x59\xa3\x78\x77\x3b\xa4\x58\x61\x47\xfe\x19\ \xc0\xd0\x24\x9f\xae\x7b\xd5\x71\x58\x58\x3b\x5f\xe2\x27\x05\x8d\ \xa9\x79\x49\x2b\xf6\x11\x46\xfa\x71\x31\xe4\x95\xc9\x96\x1a\x3e\ \x98\x19\x22\x91\x5d\x3a\x57\x1a\x4c\x55\xb0\xb7\x83\x83\x9c\xee\ \x4f\x04\xff\x00\x85\x4a\x5c\xd4\x76\x69\x33\x95\x12\xdd\x77\x80\ \xf3\xa1\x39\x29\x6a\x58\x0b\x4e\x31\xdc\x13\xf3\x5b\x58\xbd\x2e\ \x3a\x83\x72\x81\x2d\x93\x8f\x10\x8e\x47\xf9\x8a\xe7\xba\x34\xe0\ \xce\x97\xb5\xe2\x9a\xbd\xfc\x8e\x4b\xea\x97\x4a\x2e\x3a\x6a\x73\ \x92\x23\xa3\xed\x76\xe2\x3c\x4c\x8e\x16\x9c\xf7\xc8\x3e\xdc\x57\ \xba\x6e\xf0\xd4\xbd\x37\x0d\x32\x5e\x54\x79\x70\x52\xa6\x16\xe8\ \x51\x04\x24\x0f\x22\xbe\xa3\x20\x11\xf1\x5d\x77\x7c\x81\x0e\xed\ \x05\x71\xdd\x69\x0e\xb6\xb6\x94\x9d\x8b\x19\x05\x24\x60\xe3\xda\ \xb8\xb3\x5f\xe9\xa7\xb4\xd5\xce\xe5\x6e\x6d\x2e\x06\xdb\x7c\xa9\ \x0a\x27\x3b\x90\xac\x81\xf9\x1c\x8a\xd9\x4e\xac\xa7\x68\x37\xe0\ \xcc\x55\x14\x35\xaa\xa3\xe2\xbe\xa6\xfb\xab\xea\xbf\xd9\xa5\xdd\ \x1b\x43\x3f\x6c\x84\xe8\x66\x61\x61\x21\x28\x77\x23\x87\x00\x1d\ \xb3\x8c\x11\xee\x33\xeb\x4a\xba\x04\x89\x1f\xd3\x49\xd7\x16\xdb\ \x26\x3b\x50\xcb\x4a\x5f\xa6\xf5\xa8\x6d\x4f\xd4\xe0\x9f\xc2\x99\ \xfa\x7a\x5e\x8b\xd3\xfd\x71\x74\x4a\x72\x98\xa9\x83\x82\x7f\xb4\ \xb7\x4a\x71\xf9\x13\x56\x1f\x46\x6d\x42\x1c\x38\xf6\xc4\xba\x16\ \xea\xdc\xfb\x44\x8c\x0e\x02\x88\x18\x4f\xe0\x38\xfc\xeb\xaa\xe3\ \x9d\x46\x9c\x77\xd8\xe0\x62\x6b\x7e\xcb\x4f\x99\xd4\xba\x11\x25\ \x70\x9a\x4e\x15\x92\x3f\x21\x56\xac\x73\xe0\xb0\x1a\x47\x27\x18\ \xc8\x1d\x8d\x57\xfa\x0e\x29\x65\x86\xdc\x20\xef\x03\x81\x8a\x9f\ \xb4\x76\x37\xe6\xc2\x94\x7f\x2f\xf5\xcd\x75\x6b\xac\xa9\x43\xb0\ \xe6\x61\xa3\x65\x70\x62\x23\x4d\x2c\xac\x20\x15\x9e\xe7\xde\xb7\ \x6e\x09\xe0\xa8\x8f\x72\x38\x34\x21\xb5\x93\xca\x8a\x53\xc0\x3c\ \xf7\xac\x43\x49\xff\x00\xe3\x27\x20\x7d\x78\xfa\x56\x56\xef\xbb\ \x34\xa5\x6d\x90\x3a\xe0\x4a\x15\xb8\xe0\x7a\xfb\x7f\xae\x68\xa4\ \xf2\xad\xcb\x7f\x1f\xed\x07\x60\x3e\x64\x83\x9c\xd1\x4d\x87\x0e\ \xda\xb1\x72\xe2\x5f\x44\x56\xfd\x21\x60\x0d\x3f\x12\x6b\x87\x09\ \x41\x70\x72\x7f\xbe\xaa\x98\xbb\xba\x6a\xca\xdc\xc9\x40\xe5\x29\ \xcf\x06\xa3\x5d\x3b\x4a\x53\xa2\xe0\x60\x60\x23\x7f\xfd\xe2\xb9\ \xa9\x4b\x4c\xbc\xf2\xb3\xbb\xc3\x6c\x1c\x12\x7b\x62\xb6\x3b\x25\ \x73\x9f\x4a\xf9\x54\x4c\x00\x6d\xa1\xb4\x14\xe4\x7b\x56\xc4\xb8\ \xca\x52\xb5\x78\x89\x48\xf9\xf4\xef\x58\xba\xab\x5b\x3e\x47\x56\ \x16\x73\xcf\x9b\x9a\xcc\x2e\xcd\x27\x0d\x85\x6d\xdc\x31\x9f\x8f\ \x6f\xa5\x55\xbe\xe6\x35\x2b\x73\x47\x3f\xdf\x2f\xba\x9a\xe5\xa5\ \xee\x1a\x3e\xdb\x74\x94\xe5\xfc\x6a\x39\x10\x23\x48\xf1\x0a\x9e\ \x0d\x23\x32\x12\xac\xe7\x3f\xd5\x8d\xbf\xc2\x9f\xed\x17\xa9\xf7\ \x58\xd6\xb9\xb6\xe7\xca\x83\x7a\x45\xcb\x94\xa6\x84\x85\x32\x1d\ \x79\xdd\xa8\x40\x52\x92\x09\x49\x4e\xc7\xc8\x20\x1e\x45\x49\x2d\ \xfd\x38\x99\x69\xea\xdc\xdd\x67\x1a\x43\x0e\x5a\x5d\x8f\x96\x58\ \x49\x3e\x22\x64\x94\x21\xb5\x38\x46\x31\x8d\x88\xc7\x04\x9c\xa8\ \xf6\xa4\x3a\x33\x47\x3f\xa4\x2d\x3a\xb1\x13\x27\xc5\x7c\xdc\x96\ \xeb\x76\xed\xaa\x51\xf0\x62\xe5\xc5\x36\x85\xe4\x0c\x10\xa7\x57\ \xc0\xce\x3d\x0f\xa0\xa5\xdc\x95\xa3\xb1\x9b\x87\x38\xbe\xb7\xae\ \xc1\x95\xbd\x69\xa8\xdb\x47\x4d\xdb\xb6\x18\xff\x00\x64\xba\x5a\ \x9d\x79\x6d\xce\x98\xb7\x1c\x5a\x9a\x69\x38\x0e\x39\xb0\x93\x8d\ \xe0\x82\x39\x27\x39\x00\x0e\x61\xb2\xf5\x5d\xe6\x05\xd7\x5b\xdd\ \x84\x34\xce\xb7\x42\xba\xf8\x8e\x07\x25\xa9\x2b\x4a\x0a\x11\x94\ \xb6\x9d\xa4\x70\x39\xe4\xa7\xbd\x3a\x3f\x61\xbf\x22\x3e\x8a\xfb\ \x33\x96\xf7\x9f\xd3\x90\x9d\x8a\xe2\x16\xf2\x90\x87\x7c\x46\xd0\ \x82\x52\xa0\x82\x78\x28\xcf\x23\x9c\xfa\x56\x8b\x86\x90\xb8\xbd\ \x61\xd6\x70\x92\xf4\x30\xed\xee\x41\x72\x31\x52\xd4\x12\x94\xec\ \x4a\x70\xbf\x2f\x07\x29\x3d\xb3\x4c\x8c\x24\x97\xae\xc2\x8d\xc9\ \xef\xeb\x41\xcb\xa8\xd7\xd7\xec\x3a\x1a\xe1\x7a\x84\x41\x75\xa6\ \x92\x59\x2a\x19\x00\xad\x49\x4a\x4e\x3d\x70\x54\x0d\x44\xe3\x5d\ \x35\x0e\x97\xb9\x68\x89\x52\x35\x04\xeb\x9b\x3a\x87\x6b\x33\x58\ \x94\xa0\xa4\x05\xac\x23\x6a\x9b\xc0\x1b\x70\x57\x8f\xc3\xe4\xd4\ \xfe\x7e\x98\x46\xa4\xd2\x52\xec\x73\x0e\xc4\x48\x60\x34\x1d\x48\ \xce\xc5\x8c\x14\xab\x07\x19\xc1\x00\xd4\x2f\x4e\x58\xaf\xb7\x3e\ \xa0\x59\x74\xf6\xac\x09\x61\x3a\x45\xa0\xb8\x65\xa8\xee\x6d\xb8\ \x60\x24\x25\xcf\x10\x8d\xa3\x6e\xd4\x64\x67\x39\x07\xe7\x17\xa9\ \x7c\xc8\xac\xaf\x71\x4f\x4f\xef\xba\xa6\xef\xaf\x75\x2b\x37\x18\ \xf1\xcc\x28\xb2\x92\xc3\x89\x4b\xe4\xfd\x98\x84\xa8\x00\x81\xb4\ \x6e\x0a\x29\xc9\x27\x1f\x8d\x59\x8c\x82\x95\xa5\xc4\x2b\x6a\x87\ \x62\x3b\xe6\xa0\xee\x69\xcd\x51\xa3\x2e\x9a\xc2\xff\x00\x09\x16\ \xdb\x84\x1b\x8a\x97\x35\xa6\x80\x71\x52\x7c\x40\x95\xec\x40\x40\ \x4e\x08\x2b\x50\x04\xee\xed\x9a\x99\x5a\x8c\xb3\x6e\x8e\x67\xa5\ \x91\x37\xc3\x4f\x8f\xe1\x83\xb7\xc4\xc7\x9b\x6f\x27\x8c\xe7\x1c\ \xf6\xab\x53\xbd\xac\xcb\x47\xbc\x99\xd8\x6e\xc8\x79\x09\x61\xe5\ \x10\xbf\x42\x4e\x29\xfd\x2b\x56\xd2\xd3\xa9\xde\x83\xc6\x48\xcd\ \x56\xf8\x50\x21\xc4\x1c\x28\x76\x23\xde\xa4\x96\x3b\xe8\x4a\x43\ \x32\xf0\x3e\x73\x55\xa9\x4e\xfa\xa3\x4d\x2a\xb6\xd1\x8e\x32\xed\ \xea\x61\xe1\x32\x22\xfc\xa0\xf2\x8a\x72\x83\x29\xc7\xdb\x1f\xb1\ \x50\x3d\x8d\x7b\x09\xb4\x3c\xbf\xb4\x13\x86\x87\xf1\xac\xdf\x9e\ \x84\x1d\xb1\xda\xcf\xb9\x22\xb3\xca\x4e\x5d\x5b\x5d\x8f\x8c\x54\ \x7a\xd7\xb2\x36\x82\xfe\x3f\xab\x20\x63\x27\x9a\xf5\x2e\x0c\xf9\ \xd2\x47\x38\xe4\x77\xa4\xc9\x9f\x28\x63\x81\x8e\xe2\x94\x37\x35\ \x0b\x3b\x1f\x40\x4e\x7d\xa9\x6e\x12\x5c\x86\xc6\x71\x7c\xcc\xbe\ \xe8\x28\xee\xd9\x14\xc9\x77\x88\xa4\x36\xb4\xe3\xca\xae\x45\x3f\ \xa9\xb1\x8d\xc8\x39\x42\xbb\xd6\x97\x9a\x0e\xb6\x52\x7b\x7a\x1a\ \x9a\x55\x32\xbb\x91\x56\x9e\x65\x62\x17\x1c\x60\xec\x38\xe0\xf2\ \x2b\x39\x19\x28\x1c\x1c\x7a\xfd\x6b\x74\xe8\xeb\x8d\x28\xfb\x13\ \xcd\x60\xf1\xc2\x32\x3f\x1f\x5a\xe8\xa7\x73\x9a\xd5\xb7\x35\xa0\ \xed\x6f\x3f\x1c\xd4\x77\x50\x24\xad\x97\x5c\x23\x93\xc0\xa7\xf1\ \x92\x03\x60\xf7\xf5\xa6\xad\x54\x90\xcd\xb9\x7e\xe5\x3c\x50\xf6\ \x64\xa3\x8d\x3f\x49\x30\x1c\xd4\xb0\x18\x42\x16\xe3\x82\x39\xc2\ \x10\x92\x4a\xcf\x88\xac\x0f\xe1\x55\x94\xa7\xd4\xd4\x44\x32\xe2\ \x42\x4a\xb9\x5a\x7b\x04\x01\xd8\x11\xfd\xae\xff\x00\x9d\x74\x2d\ \xfa\xe4\xc4\x3d\x64\xe5\xc5\xc6\xf2\xeb\x08\x2c\x32\x52\x8d\xca\ \x5e\x4e\x54\x33\xe8\x32\xa2\x3f\x0a\xa0\xb5\x5d\xbd\xe6\xb5\x7d\ \xc5\x97\x12\xa4\x07\x5f\x53\xa0\x3c\xad\xa7\x0a\x39\xef\xeb\x5e\ \x62\x75\x22\xeb\x64\x7c\xb5\x3d\x56\x1f\x09\x51\x60\xa3\x59\x2d\ \x1b\xb0\x97\x4b\xcb\x89\x12\xea\x87\xa4\x3e\xeb\x21\x2b\xc8\x53\ \x68\xdc\x48\xef\x8f\xe1\x8f\xc6\x94\x6a\x0b\x85\xc2\xfd\x7d\x12\ \x9e\x6c\xa1\x2b\x59\x6a\x33\x09\x1c\x34\x80\x78\x48\xfc\xf9\xa4\ \xac\x3a\x98\x58\x79\xa6\xd0\xa5\xe7\x8f\x2e\x46\x01\xed\xfc\xb9\ \xa7\xbd\x06\xf2\x1e\xd5\x11\x64\xc8\x61\x0f\x20\x2d\x3e\x22\x4e\ \x01\x27\x3e\x80\xf7\x27\x8e\x6a\x2a\x5a\x37\xa9\x6d\x91\x34\x13\ \x9c\xa3\x45\xbd\xd9\x67\x68\x3e\x90\x5e\x6e\x2d\x25\xe9\xcb\x6e\ \x22\x31\xc8\x57\x2a\xc9\xf8\xa9\x2e\x9e\xd1\xd7\x3d\x0b\xd4\xcb\ \x05\xe2\x2a\x54\xe1\x83\x29\x32\x32\x84\x90\x56\x8c\xe1\x69\xe3\ \xdd\x24\x8f\xc6\xae\xbd\x32\x23\xc8\x8e\xdb\xf1\xdb\x09\x65\x4d\ \x20\x84\xed\xc7\xd3\x3f\x38\xc5\x48\x92\xc3\x2e\x29\x0b\x2d\x24\ \xa8\xfa\x91\xda\xb8\xb2\x73\x9e\xaa\x5a\x9e\x87\xda\xb2\x75\x32\ \xac\xa6\xf9\x16\xf8\xf6\xeb\x9b\xab\xb7\x80\x63\xcb\xfd\xb3\x2a\ \x07\x82\x95\x0c\x8c\x7e\x1f\xc8\xd6\x77\x99\x0e\x46\xb7\x9f\x0d\ \x0a\x5a\x82\x09\x01\x3f\xda\xc7\x15\xe4\x09\xad\xf8\x5f\xab\xdd\ \x5a\x43\x8d\xa8\xfd\x9d\x4a\xfd\xd5\x13\xf7\x0f\xb0\x3d\xc7\xb1\ \xfa\xd6\x6d\x07\x1d\x0b\x0a\x18\x20\xe0\x83\x91\x83\x5a\x93\x4e\ \xed\x73\x39\x96\x69\xd9\xf2\x2b\x0d\x27\x76\xd5\xa6\xfb\x2d\x57\ \x48\xce\x08\x01\xb2\xd9\x65\x95\xe0\x0c\x9e\x54\x7d\xc5\x45\xe7\ \xd9\xf5\x4b\x17\xdb\x4c\xd8\xa7\xec\x51\x04\xe7\x4c\x87\xde\x88\ \xdc\x96\xdc\x6d\x69\x52\x53\xfb\x25\xf0\x48\xc8\xc0\xf7\xed\xcd\ \x5e\x82\xce\x7e\xfb\x6f\x23\xcd\x83\x85\x0c\xd2\xf4\xb0\xea\xdb\ \x6d\x0f\x36\xcb\xa9\x69\x61\xc4\x05\x73\xc8\xec\x69\xb4\xaa\x4e\ \x2a\xcc\x2b\xf0\xaa\x3b\xda\xd7\x2a\x1e\x8d\x88\xda\x56\xe5\x71\ \x55\xde\x35\xcd\xf5\xa6\x30\x8c\xf2\xcc\x72\x95\x48\x58\x39\x49\ \x2d\xe7\x09\xf2\x9c\xfe\x34\xa9\x56\x07\x5f\xb8\x22\x56\x93\xb3\ \xbf\x6a\x52\xe4\x91\x21\x0e\xa4\x04\x16\xfb\xe5\x48\xce\xd3\x93\ \xed\x83\x56\x94\xf8\xab\x7a\x42\x9e\x52\x1a\x4a\x94\x30\xac\x27\ \x71\x38\xed\xf1\x49\xd7\x19\x49\x00\x90\xbc\x11\xc9\xc7\x35\x59\ \x43\x32\xb4\x86\x50\xae\xa8\xbc\xd4\xd6\xaf\xb7\x61\x8f\xec\x52\ \xe5\xc6\x4c\x29\xae\x32\xfc\xc9\x4a\x43\x6e\x18\xe8\xc2\x01\xf4\ \x48\xcf\x7a\x8f\xc7\xb0\xb3\x0f\x5f\xfe\xbf\x62\x7c\x49\x6b\xbb\ \x4c\x94\xee\xd8\xea\xdf\xb1\x08\xc0\x49\x52\xfb\x67\x6e\xc0\x52\ \x3b\x1a\x96\xea\xeb\x8b\xda\x72\xd0\xd2\xe2\x25\xb3\x7b\xb8\x6e\ \x8d\x69\x64\x9c\x16\xf2\x3c\xf2\x55\xec\x94\x27\x24\x13\xeb\x50\ \xfe\x9d\xe9\xb6\x2c\x82\x52\x63\x2d\x4e\x30\xdb\xa5\x0d\x28\xaf\ \x20\x13\x82\xb5\x01\xe8\x54\x42\x73\xf4\xae\x7e\x26\xce\xa4\x21\ \x1e\xdb\xfa\xf5\xd8\x6f\xc3\xa9\x2a\x53\xaa\xdd\xae\x9a\xb7\x6f\ \x6f\xc1\x3b\x78\xd9\xf6\x16\x1b\x1b\x8b\x0b\x29\xc0\x29\xc0\xca\ \xbb\x1a\x8d\x4f\xb5\x44\x63\x5a\xc6\xd4\x4e\xba\xb8\xee\x2e\x22\ \xed\x8f\xbc\x85\x11\xb5\xa7\xfc\x89\x59\xc7\xaa\x5d\x2d\xfe\x07\ \xe2\xa4\xb6\xb2\x3c\x32\x97\x00\x27\x04\x63\x39\xa8\xb7\x54\xad\ \xee\x49\xd3\x32\x58\x6d\x6f\x25\x05\x3b\x87\x84\xa2\x95\x12\x08\ \x56\x32\x3d\xf0\x38\xfa\x53\xaa\x36\xa2\xa4\xb9\x6a\x64\xa4\xaf\ \x3c\x97\xb2\x7a\x7c\x19\xe3\xb2\xaf\x4f\xcb\x95\x06\x55\xf6\x4c\ \xc8\x29\x29\xd8\xdb\x1c\xa9\xf2\x09\x0a\x25\x44\xe4\x64\x72\x30\ \x33\x9e\xf5\x5c\xf5\x47\x4d\x3f\x70\xbc\x46\x99\xa6\xf4\xb2\xd0\ \x98\x88\x6f\xc3\xfb\x6b\x21\xd6\x54\xe9\x74\x15\xf8\xbc\x95\x94\ \x90\x00\x38\x3c\x8f\x6a\x97\x74\xfa\xf1\x17\x50\xdb\x00\x5a\x9a\ \x4d\xc5\x18\x54\xa4\xa4\xf2\xa5\x1c\xe1\x78\xfe\xf6\x09\xfa\x85\ \x0f\x4a\x98\xc7\x6a\x7b\x44\xa5\x25\x4a\x47\x04\x07\x46\x41\x1f\ \xce\xb4\xc2\xb7\x12\x2a\x48\x5d\x4a\x4e\x8c\x9c\x25\xa5\xbe\x1e\ \xbb\x8e\x5c\x56\x88\x72\x3f\x51\xdd\x93\x7d\xb5\x2d\xdb\x7b\xf7\ \x94\x3e\xa3\x0e\x23\x8c\x30\x96\x14\xa0\x5c\x65\x09\x56\x54\x94\ \x8c\x90\x92\x73\x4f\x7a\xd9\xeb\xd6\x93\xd5\x2e\x39\xa4\x2d\x9a\ \x85\x7a\x51\x21\x29\x31\x27\x28\xbe\x42\x40\x19\x20\x9c\xa8\x0f\ \x5c\x13\xeb\x5d\x19\x2d\xf9\x6b\x65\x49\x93\x14\x28\xab\xb6\x17\ \xbd\x39\x1e\xbc\xf6\xa4\x52\xd0\xf4\xa4\x00\xb6\xf6\x11\x80\x72\ \x8f\x4a\x5d\x66\xe5\xba\x1d\x87\xa9\x1a\x4a\xca\xef\xe3\xf8\x18\ \xf4\x0d\xed\x8d\x43\x62\x8b\x22\x12\xca\xd0\xb4\x0c\xa8\xa4\xa7\ \x8f\x6e\x40\xaa\xcb\xf4\x80\xb0\x07\x6d\xd7\x8b\x82\xda\x0b\x58\ \x65\x0e\x05\x01\xfd\x95\x8e\x3e\xb8\x35\x6b\xdb\x6d\x49\xb2\x3e\ \x57\x10\x84\xb0\xb5\xef\x2d\x60\x00\x14\x7b\xe3\xdb\xe9\x4d\x7d\ \x46\x81\x12\xeb\x66\x97\x0a\x62\x9c\x43\x13\x11\xe1\x1f\x0f\x97\ \x14\xa2\x41\x01\x03\xdc\xe3\xf0\xef\xe9\x59\x5a\xcb\x67\xd8\xc3\ \x32\xce\xf2\xec\xce\x4e\xb7\x28\x5b\xba\x42\xdd\x9d\xe4\x11\x37\ \x54\xdd\xd8\x7c\xa4\xf0\x53\x19\xa2\xa0\x15\x8f\x6d\xc7\x8c\xfa\ \x66\xac\x8e\x85\xc6\x7a\x5c\xb6\x2e\xa9\x21\x4c\xbc\xe2\xf7\x10\ \x73\x80\x14\x40\xcd\x44\xba\x8d\x65\x9b\x7c\xea\x79\xb7\x48\x91\ \x1e\x01\x65\xff\x00\xb2\xc5\x4a\x7e\xe3\x6d\xa5\xbe\x10\x9e\xdd\ \xbd\xcf\x04\xe7\x35\x26\xd1\xa5\x8d\x29\xa8\x60\xda\xad\xf2\x5a\ \x52\x87\xec\x5e\x09\xc9\x0e\x0c\xf3\xcf\x62\x41\xf5\xfc\xab\xb3\ \x43\x19\x08\xce\x32\xed\xd4\xe3\x63\x3a\x3a\xa3\xa0\xe4\xb9\x7f\ \x09\x1d\x81\xa5\xf0\x18\x46\x3b\xfe\xee\x3d\xea\x5c\x85\xa1\x94\ \x03\xc9\x57\xa7\xc7\x15\x5e\xe8\x69\x61\x50\x50\x54\xb0\x5c\xfa\ \x7a\xd4\xe2\x37\x20\x2d\x47\x27\xbe\x2b\xb9\x55\xaa\x8b\x37\x23\ \x87\x46\x5a\x19\xba\xeb\xce\x67\x7a\xb6\x80\x7b\x56\x29\x6f\x1c\ \xee\x51\x56\x3b\xfa\xd6\xd2\x48\x39\xe7\xd8\x57\x80\xf9\xcf\x27\ \x8e\x00\x27\xe6\x97\x7b\x2d\x06\x5a\xef\x53\x04\xb8\xeb\x0a\xde\ \xda\x8a\x87\x6e\x7b\x9a\x2b\x35\xe1\x38\x21\x47\xf0\x1c\x7d\x28\ \xa2\xc9\xee\x89\x4d\xad\x99\x0a\xe9\xb0\x43\x7a\x36\x0b\xef\xe7\ \x62\x7c\x4c\x0f\xff\x00\xa8\xaa\x70\x9b\x35\xe9\x89\x29\x6d\x45\ \xb6\xc0\xe3\x07\xe6\xa3\xda\x15\xd5\xc8\xd2\x90\x5b\xf3\x25\xb6\ \xfc\x4c\x10\x3d\x7c\x45\x7f\x9d\x3f\x21\x29\xc7\x39\x18\xc9\xfa\ \x71\x5b\xa1\x15\x64\xd9\xcd\x53\xea\xa4\x8d\x02\x3a\x41\x05\x47\ \x71\x3d\xf9\xed\x5b\xd4\x84\x1f\x2a\x06\x3e\x7d\xab\x15\x00\x0e\ \xd4\xee\x23\xb8\xad\xa8\x52\x4a\x7b\x67\xd4\x0f\x7e\x3d\xe9\xa5\ \x45\x36\x79\xea\x6a\x40\x8a\xf3\x89\x28\x73\xee\x27\xfd\x77\xa8\ \x86\xb2\x2b\x4d\xd9\x49\x4c\x90\xa6\x96\x90\xb4\xa4\x28\x1e\x0f\ \x62\x3d\xc1\xa8\xf7\x4b\xe3\xc0\x9d\x77\xbf\x5d\x2e\x4c\x46\x91\ \xa8\x18\xbe\xc8\x69\x4e\x3c\x80\xa7\x98\x42\x55\x86\x92\x82\x79\ \x4a\x36\x60\x8c\x70\x72\x7d\xea\xb3\x54\x08\x31\xfa\x2b\xa5\x2e\ \x05\xbd\x86\xe3\x2a\x2b\x37\x89\x4a\x52\xb7\xae\x2a\x64\x14\x6d\ \x52\xbb\x84\x04\x84\xa7\x03\x00\x0e\x29\x17\xb4\xb3\x25\xb8\x71\ \x5b\x8a\x4c\xb5\x9a\x01\x6d\x82\xda\x81\x49\x3e\x5c\x7a\xfe\x54\ \x27\xf6\xc1\x28\x42\xb7\x0c\xed\x51\x07\x23\x8e\x0d\x56\xb3\xad\ \x31\xe4\x6a\x6d\x4f\xa7\x6c\x52\x5b\xb5\x41\x95\x67\x63\xc6\xfb\ \x38\x09\x6d\x99\x4a\x71\x41\x3e\x51\x80\x37\x20\x00\x71\x8c\x83\ \x4a\x2c\xf6\x57\x75\x15\xa6\x75\x8e\x3d\xbe\xc7\x69\xbc\x59\xae\ \x4c\x2e\x43\x2d\x23\x30\x2e\x05\x08\xdc\x94\x2f\x00\x12\x92\x0f\ \x29\x39\x20\xa4\x67\xda\xaf\x9d\xf6\x15\xcc\x5d\x56\x08\x88\xc2\ \x36\x14\x96\xf1\x9c\x82\x0e\xee\xd5\xb2\x52\x9b\xfb\x53\x9b\x96\ \x8c\x95\x6d\xc6\x7f\x7b\x19\xc7\xd7\x1c\xe2\xa2\x7a\x06\xed\x78\ \xba\xe9\xbb\x7c\x8d\x23\x65\xd3\xf6\x88\xe1\xf7\x9a\x9f\x19\xe0\ \xbd\xa1\xc4\xb9\xb5\x45\x92\xd0\x09\x50\x24\x28\xe4\x8e\x49\xa8\ \x3e\xa3\x81\x68\x90\x7a\xb7\x70\xb8\xb4\xd2\xe4\xc5\x58\xfb\x13\ \x8e\x72\xa6\x5e\xfb\x3a\x4b\x65\xb3\xdd\x2a\x2b\x08\xe4\x60\x9c\ \x0f\x6a\x8e\x27\x30\x72\xd1\x34\x5b\x0c\xde\xe3\xcb\xd5\x12\x74\ \xd2\x22\xac\x3f\x12\x0b\x52\xd4\xee\x46\xd5\x05\xa9\x49\x09\x03\ \xbe\x46\xd3\xf9\xd2\x29\xeb\x8d\x0d\x2e\xcb\x79\xf4\x22\x33\x20\ \x97\x16\x55\xc2\x31\xdf\x3e\xdd\xaa\x0a\x6f\x42\xc9\x7c\xd4\x57\ \x6b\xfd\xbd\x53\xcb\x3a\x36\x1f\xdb\x22\x91\xfd\x6a\x8a\x96\x95\ \x21\x59\xcf\x04\x92\x0e\x41\xc0\xcd\x35\xc8\x86\xda\x75\x3e\xab\ \xb7\xfd\x86\xc9\x16\x33\xda\x3f\xed\x0e\xc3\xb5\x8c\xc7\x0e\x85\ \x2f\x62\x88\xc0\x05\x60\x14\xf3\x81\xc6\xd3\x50\xaa\x3d\x88\xce\ \x4c\x6e\xba\xc6\xd5\x12\xc5\x6c\xba\xc5\xff\x00\x6c\x17\x47\x59\ \x66\x13\x4d\xad\x28\x2b\x53\x83\x72\x72\x54\x46\xd0\x07\x27\x3d\ \xbd\xa9\xfe\x19\x5c\x94\xc6\x2f\x35\xf6\x77\xdd\x03\x73\x4a\x58\ \x51\x49\xf5\x19\x1c\x1e\xfd\xc5\x54\xd3\x2c\xf6\x94\x68\x5e\x97\ \x1f\xd5\xb0\x4f\xda\x2e\x36\xe2\xe9\x0c\xa0\xef\xdf\x19\x5b\xc2\ \xb8\xe7\x25\x23\x39\xef\x81\x9e\xd5\xae\xf4\xd5\xbd\x7a\x6f\x5f\ \x5d\x2e\x29\x69\x37\xd8\x57\x47\x51\x0d\xf2\x70\xfc\x70\x9d\x9f\ \x65\x4b\x47\xba\x41\x04\x63\x6f\x7c\x9a\x38\x8d\x6e\x46\x66\x74\ \xd3\xef\x22\x34\x06\x22\xa5\xd4\xa5\x44\x24\x11\x9e\x79\xed\x5a\ \xd8\x53\x67\x09\x4a\xd0\xa2\x46\x78\x56\x72\x33\xcf\xfe\xb5\x58\ \x58\xed\xec\x5e\x7a\xd3\x71\x95\x7a\x8c\x99\x12\x60\xda\x6d\xd2\ \x1a\x4a\x8e\x50\xcc\x82\x17\xb9\x61\x3d\xb7\x79\x71\x9e\xe0\x67\ \x1d\xcd\x41\xe3\x59\xed\xd2\x34\x3e\x9c\xb8\x3d\x15\x2a\x9b\x2b\ \x5c\x08\x6f\x48\xe7\xc5\x54\x75\x49\x71\xb5\x33\xbf\xbf\x86\x50\ \x48\xdb\x9c\x73\xdb\x9a\xce\xa5\x64\x69\x95\x57\x7b\xdb\xd2\x3a\ \x31\x0b\x42\xd2\x14\xda\x92\xa4\x9e\xc5\x27\x22\xb6\x14\x82\x80\ \x48\xed\x55\xc7\x4c\xe2\x31\x6f\xea\x37\x50\xad\x10\x19\x6e\x2c\ \x08\xf2\xe1\x38\xcc\x66\x52\x10\xd3\x6a\x72\x2a\x4a\xca\x52\x38\ \x19\x3c\x9c\x55\x8e\x06\x72\x3e\x6a\x6f\x71\xd0\x79\x91\x9c\x77\ \x54\xc9\xc7\x74\x1e\xe0\xd2\xb3\x83\x85\x8c\x10\x79\xf6\xa4\xa1\ \x2a\x50\xc1\xe6\xbd\xdc\xa6\xfe\xf7\x23\xf9\x52\xe4\xae\xc7\x45\ \xd9\x6a\x68\xbd\xc4\x0f\x33\xe2\x24\x1c\x8e\xf5\x1f\x03\xca\x52\ \x47\x63\x52\xe6\x76\xbc\xca\x93\xc6\x08\xa8\xc5\xcd\xaf\xb3\x48\ \x52\x48\xe0\x9e\x6b\x46\x1e\x7f\xe2\xf9\x19\xf1\x30\xff\x00\x25\ \xcc\xc2\xde\xc9\x75\xc3\xc7\x03\xb5\x45\xfa\x8a\xe9\x4c\x67\x10\ \x0e\x00\x18\xe2\xa7\x96\xa6\x36\xc3\x53\xa7\xdb\xd6\xab\x5e\xa6\ \xbc\xa4\xb0\xe0\x4f\xb1\xab\x4e\x57\x52\xb7\x22\x99\x6d\x04\xfb\ \x4a\xab\x48\x5b\x99\x7e\x45\xc2\xe4\xfb\x49\x71\x6d\x04\xec\xdc\ \x32\x01\x51\x2a\x26\x90\x75\x77\xa4\xcd\xdd\xe1\xc5\xbb\x24\xbc\ \xc4\xa0\x82\xa2\xe3\x4a\xde\xad\xbe\xc0\x1e\xff\x00\x4f\xa9\xa9\ \x3f\x4d\xff\x00\x6f\x69\xbc\xb2\x17\xb5\xcf\xb3\x25\x63\x1c\xe0\ \xa4\xed\x35\x68\xd9\x59\x55\xc2\xc7\x15\xc5\x36\x0a\xf6\x8d\xc4\ \xa7\x3e\x55\x27\x07\xf8\x1a\xf2\x58\xba\x6d\xd6\xcd\x17\x67\xc8\ \xf7\xb8\x4a\xbc\x3c\x24\x53\xd6\x3c\xd7\xc3\xee\x70\x55\xc7\x48\ \x16\x1b\x75\xb6\x9d\x52\xd6\x96\x37\x95\xe3\x85\x1c\xf2\x9c\x7a\ \x63\xb7\xd6\x99\x2c\xf0\x64\xb1\x71\x69\xef\x33\x61\xb2\x16\x16\ \x7b\x12\x30\x71\xf5\xed\x5d\x29\xd4\xdb\x45\x90\x75\x21\x76\xd8\ \x31\x3e\xc9\x19\xc8\x67\x73\xab\x04\x25\xd7\x82\xb2\x38\xf9\xc2\ \xbf\x21\x54\xf4\xd8\xad\x89\x0a\x86\xc4\x73\xb3\xc5\xfd\xa9\xda\ \x46\x13\xb8\x82\x9f\xa7\xb1\x1e\xdf\x14\xba\x18\xa9\xca\xf1\x96\ \xa3\xb1\x78\x0a\x2b\x25\x4a\x6a\xd7\xd6\xdf\xc1\xd5\xdd\x2f\x6d\ \xe6\xf4\x15\xb9\xf9\x61\x5e\x33\xc8\x0a\xf3\xfd\xe0\x9f\x4c\xfd\ \x7b\xd4\xd2\x3b\x99\x39\x23\xbf\x02\x99\x2d\xed\x26\x2d\xae\x2c\ \x74\xf0\xdb\x2c\x36\x84\x73\xc0\x4a\x52\x00\xfc\xb1\x4e\xb6\xce\ \x52\x92\x52\x40\x3e\x6e\x7b\x0f\xad\x67\x8b\xd7\x41\x15\x5e\x66\ \xd9\xe5\xc6\x02\xf2\xa9\xcc\xa3\x7b\x89\x18\x5b\x27\xfe\x14\x7b\ \x56\xbb\x6e\xa2\x86\xe3\xe2\x2c\xa7\x44\x77\xf3\xfd\x53\xc7\x6a\ \xd3\xf1\xcf\xde\x14\xf2\x0e\xe2\xa0\x92\x4e\x7b\x1f\x4c\x7d\x68\ \x91\x6a\xb7\xcd\x63\xc2\x9b\x0d\x99\x20\x9c\x00\xe2\x01\xc5\x31\ \x41\xa7\x78\xb2\x8a\x70\x92\xb4\xd7\xc8\x7b\xb6\x2a\x33\xad\xa5\ \x4b\x42\x92\x30\x3c\xdb\x72\x83\xff\x00\x58\x7f\x8d\x3e\x43\x8f\ \x13\x68\x29\x71\x93\xf4\x22\xab\xe6\x74\x15\x9c\x2c\xaa\x23\xf7\ \x6b\x6a\xbb\x83\x0e\xe0\xe2\x06\x7e\x99\xc5\x2e\x6b\x46\x49\x48\ \xca\x75\x96\xad\xd8\x3d\x3e\xde\x0f\xf1\x29\xad\x11\x9d\x45\xbc\ \x7c\xc4\x4e\x8d\x17\xb5\x4b\x78\xaf\xb3\x64\xca\x4c\x64\x10\x4a\ \x31\x84\xf2\x48\x1c\x0f\xa9\xed\x50\x8b\xbe\xab\x80\x89\x46\x06\ \x9e\x8c\x35\x15\xdd\x27\x68\x6a\x39\xcc\x66\x0f\xf6\x9f\x74\x79\ \x40\x07\xf7\x41\x26\x94\x3d\xa2\xec\x60\x03\x78\x93\x76\xbd\x60\ \xfd\xdb\x85\xc1\xc7\x50\x4f\xca\x01\x09\xfe\x14\xe9\x19\xe8\xd6\ \xd8\x3e\x04\x48\xb1\xe2\x46\x69\x39\x08\x65\xb0\x84\x0f\x6c\x01\ \x51\x27\x37\xbd\x97\x9b\xfb\x2f\x32\x69\xc2\x94\x35\xd6\x5e\x4b\ \xf9\x6d\xf9\x78\x91\x48\x1a\x6a\x4a\x25\x4a\xbd\x5f\x65\x7e\xb2\ \xbc\xcd\x47\x87\x21\xf2\x30\x86\x9b\xff\x00\xe1\x34\x3f\x71\x3f\ \xc4\xd2\x6f\xb2\x44\xb6\xc3\x10\x61\xa0\x36\xca\x09\xda\x90\x49\ \x39\xfa\x9e\x49\xa7\x69\xf3\xa6\x5c\xde\xda\xd2\x8a\x00\x3d\xc7\ \x14\x95\x36\xf0\xde\x56\xbc\xaf\x06\x93\x92\x37\xea\xa3\x53\xab\ \x39\x7b\xcf\xe1\xcb\xbb\xe5\xc8\xdd\x08\x2d\x05\xb4\x04\xf9\x30\ \x09\x39\xe7\x9a\x57\x75\x82\xa7\xa2\x2d\x3c\x1c\x8e\xc4\x52\xab\ \x23\x71\xd6\xa6\xd0\xb5\x15\x73\x82\xae\xf4\xf3\x72\x8f\x1c\xa1\ \x68\x6d\x3b\xa9\xaa\x92\x94\x6e\x67\x95\x4c\xb2\x48\xa6\xed\xfa\ \x72\x12\xe4\xab\xf5\x60\x66\xd9\x76\x8c\xe2\x94\xdb\xc8\x4f\x95\ \xe0\x7b\xa1\xc1\xea\x93\x81\xf2\x0e\x08\xe6\xa4\xf0\x35\x01\x43\ \x88\xb7\xdf\x99\x55\xbe\x71\x00\x6d\x59\xce\xff\x00\x94\x9e\xce\ \x0f\x91\xe6\xf7\x4f\xad\x21\xbf\xe1\x9d\x40\x51\x18\x6f\x3b\x72\ \xe6\x0f\x20\xfa\x54\xa2\xc6\xe4\x3b\xed\xa9\x70\x6e\x71\x99\x94\ \x13\xf7\xd0\xeb\x61\x49\x3f\x50\x7d\x6b\x2d\x34\xd3\xb4\x5e\xbe\ \x46\xaa\xd2\x52\x8a\x75\x15\xd7\x9a\xfb\xae\xef\x95\xb5\x1b\xee\ \x62\x33\xe5\x1f\x63\x9c\xd2\xf1\x9c\xed\x58\x18\xfa\x83\xda\x90\ \xc9\x93\x1a\x23\x79\x9d\x3a\x2b\x00\x0e\x54\xe3\xe9\x48\xfe\x74\ \xba\xe3\xd3\xcb\x14\x92\xa4\x34\xe4\xf8\xcd\xab\x80\x84\x3d\xb9\ \x09\xfa\x05\xe7\x14\xdd\x1f\xa7\x71\x6d\xe0\x18\xb7\x4c\x14\xf6\ \x5b\x90\x18\x5a\xff\x00\x32\x9a\xbc\x95\x5b\xeb\x1f\x93\xfb\xd8\ \xac\x55\x1b\x7b\xff\x00\x34\xfe\x97\x19\x5c\xd4\x28\x90\x54\x8b\ \x2c\x67\x6f\x2a\xce\x03\x88\xca\x23\x20\xff\x00\x79\xd2\x31\x81\ \xec\x9c\x9a\xf1\x9b\x7b\xac\xb8\xa9\xd7\x19\x49\x99\x70\x29\xc2\ \x56\x84\xe1\xa6\x12\x7f\x75\xa4\xfa\x0f\x75\x1e\x4d\x3d\xce\xd3\ \xd3\x49\x0b\x76\xff\x00\x31\xc2\x83\x90\x14\xda\x00\xfc\x00\xed\ \x49\x5a\x8b\x25\x08\x5a\x1d\x79\x2e\x8c\x79\x4e\xdc\x67\xe9\x8a\ \xcf\x25\x2d\x9a\x25\xca\x0b\xdd\x67\x3e\x6b\xbb\x71\x3d\x7b\x8a\ \x5b\x73\xc0\xdf\xb2\x5b\x25\x47\xca\x56\x13\xce\x3d\xc9\xc0\xf2\ \x9e\x0f\x6f\x5a\x6b\xb6\xc7\x59\xbf\xdb\xdf\x71\xb6\x9b\xc9\x53\ \xdb\x1b\x18\x03\xcd\x8f\xc3\xf1\xf4\xa7\x7e\xb4\x19\x11\xba\x95\ \x6f\x9e\xc1\xca\xe1\x04\x1d\xbb\x41\x29\x0a\x47\x2a\xf9\x00\x81\ \xf4\xc1\xa6\x7d\x2c\xbf\xb4\xdc\xd5\x29\x4a\x2b\x6c\x10\xcb\x27\ \xb0\x20\x77\x35\x7a\x69\xce\x50\x5e\xb7\x37\xe6\x8d\x2e\x8d\xc4\ \x54\x7d\x96\xf9\xa4\x8e\x9b\xe9\xab\xe5\xc8\xcd\xac\x81\xc7\x6c\ \x55\xad\x15\x40\x34\x95\x2c\x8c\x63\xb6\x6a\xa4\xe9\xb8\x52\x61\ \xb4\x84\x03\xda\xad\x9b\x74\x40\x5b\xdc\xe1\x2a\x24\x1e\xd5\xed\ \x1c\x54\x29\x45\x33\xe7\x14\x6f\xb2\x37\x78\xc8\xc8\x39\x04\xfc\ \x0f\x8a\xc9\x38\x3c\x83\x80\x79\xe0\x66\x94\x08\x8c\xad\x3f\x73\ \xe0\x0a\x4a\xfc\x63\x1c\xee\x6c\xe1\x39\xe4\x7b\x52\x54\xa2\xdd\ \x91\xa5\xc6\x4b\x56\x66\xbe\x53\x81\xdf\x04\x7d\x28\xa4\x57\x0b\ \x83\x31\xe2\x93\xb8\x6e\xf4\x1e\x94\x53\xa1\x4a\x4d\x08\x9d\x58\ \x27\xa9\x05\xd0\x2a\x6d\xad\x1d\x07\x23\x27\x2b\xec\x7d\x37\xab\ \x9a\x79\x32\x54\xa2\x36\x34\x4f\x18\xed\x9a\x6d\xe9\x95\xbd\x4f\ \xe9\x48\x4f\x3e\xaf\x29\xf1\x38\xcf\xfc\x62\xaa\x68\x98\xc8\x4f\ \x01\xb4\x82\x3f\x9d\x68\xe2\xc6\x29\x23\x2d\x3a\x52\x94\x53\x23\ \x09\x92\xa0\xbf\xda\x24\xa0\x64\x60\x91\xc7\xfa\xef\x4a\x52\xea\ \x55\xca\x33\x82\x30\x38\xfe\x54\xf3\x26\x23\x0f\x34\x42\x92\x02\ \x8f\xae\x3d\x2a\x29\x70\x9c\x8b\x3b\xea\x61\xc1\x9c\x9f\x2f\x35\ \x78\x4d\x4f\x62\x27\x07\x03\x64\xbb\x7d\x8c\x5d\x99\xbb\xc8\xb6\ \xc0\x55\xc1\xa0\x42\x25\x29\x94\x17\x53\xc6\x30\x17\x8c\x8e\x3e\ \x6a\x37\x75\x6a\xdc\x1b\x4c\x28\x70\x62\xb1\x01\xb4\x96\xd1\x15\ \xa6\x52\x96\x82\x79\x24\x04\x81\xb4\x02\x49\xe3\x15\x59\xf5\x3f\ \x55\x5f\xb5\x0e\x95\xbc\xca\xb6\xc0\x2d\xda\xe2\x4f\x6a\x1a\xa6\ \x09\x05\x0e\x15\x25\xf6\xc2\x88\x48\x4e\x36\xee\xf2\xfd\xec\xf2\ \x4e\x31\x52\x4b\xb6\xa4\x9b\x67\x91\x7c\x71\x16\x96\x25\x31\x61\ \x43\x6a\xb8\x17\x25\x86\x9c\x3b\xd3\xbb\x6b\x49\xda\x77\x14\xa4\ \x85\x1c\x91\xdc\x01\xf1\x19\xe2\x98\xac\xc8\x92\x5a\x34\xb5\xa4\ \x42\x54\x75\x5a\x20\x22\x1b\x87\x72\xe2\xa6\x3a\x03\x6a\x3f\x29\ \xc6\x0f\x20\x7a\x7a\x0a\x75\x3a\x6b\x4f\x9b\x62\x2d\xa3\x4f\xda\ \x97\x11\x0a\xdc\x98\xe6\x22\x0b\x49\x38\xee\x13\x8c\x67\x1e\xb5\ \x16\x91\xaf\xcc\x08\x9a\x9d\x72\x60\x00\xbb\x3b\x4c\xbb\x15\x09\ \x5e\x3e\xd6\x97\x9b\xcb\x47\xb7\x19\x5e\x53\xeb\xda\x90\xea\x0e\ \xa5\x4e\x80\xe5\xd3\xec\xd6\xd6\x1e\x6e\xce\xd3\x4b\xb8\x93\x33\ \x62\xb7\x29\x3b\x94\x86\x86\xd3\xbb\x6a\x4e\x4e\x48\xf6\xef\x53\ \x9a\x21\x74\x59\xf6\x65\xc6\x81\x01\x31\x23\xc7\x69\x94\x20\x6d\ \x42\x1b\x48\x09\x03\xd8\x01\xc0\xfc\x29\xa6\xc9\xa1\xac\xd1\xb5\ \x15\xd7\x50\xca\x89\x1a\x6c\xfb\x84\x84\xc8\x4a\xdf\x8c\x85\x2e\ \x31\x4a\x52\x9c\x21\x58\x24\x03\xb4\x1f\xad\x56\x6e\xea\x57\x2c\ \x9a\xd7\x55\xdf\x24\xba\xf3\xb0\xa2\xda\x22\x48\x08\x4a\xb2\x0e\ \x77\xe3\x68\xec\x0a\xb8\x1f\x95\x4b\x22\x75\x0e\xe9\x6f\x9a\x8b\ \x75\xfe\xca\xcc\x49\x32\x60\x3d\x32\x19\x6a\x51\x75\x2a\x2d\x00\ \x56\xd2\xc9\x42\x70\xa0\x14\x0e\x46\x47\x7e\x6a\xad\xc5\x92\xa4\ \x9e\xe4\xd8\xc1\x80\xcc\x99\x0f\xbb\x6d\x88\xe3\xb2\x19\xf0\x5e\ \x75\x4c\xa4\xa9\xc6\xc6\x70\x85\x12\x32\x53\xc9\xe0\xf1\xc9\xad\ \x16\x8b\x25\xa2\x08\x2a\xb7\x5a\x60\x43\x6c\x25\x48\x08\x62\x3a\ \x10\x02\x55\x82\xa1\xc0\xe0\x12\x06\x47\xc5\x57\xf6\x9e\xa0\xdd\ \x6e\xcf\xe9\xf7\x66\x5a\x1b\x8b\x02\xfe\x4a\x62\x2d\x32\x8a\xdc\ \x43\x9b\x0a\x80\x5a\x76\x80\x02\x80\x38\xc1\x3f\x3d\xf8\x46\xd7\ \x51\x6f\x89\xb7\x43\xba\x37\xa7\xd2\xe4\x39\x57\x43\x6a\x6c\x09\ \xb8\x70\xc8\xdc\xa4\xa4\xed\x29\xc6\xc2\xa4\xe3\x39\xc8\xce\x71\ \xc7\x33\x9a\x3b\x91\x99\x16\x23\x7a\x77\x4f\xb4\xc3\x71\x98\xb2\ \x5b\x58\x69\xb7\xfe\xd2\xd2\x5a\x88\x84\x84\x3a\x32\x03\x80\x01\ \xc2\xf9\x3e\x6e\xfc\x9a\x4f\x36\xc7\x6d\x55\xc5\xb9\xb2\x6d\x70\ \x9e\x94\xde\x3c\x39\x0e\x47\x4a\x9c\x47\xd1\x44\x64\x7a\x54\x65\ \x1d\x45\x72\x24\x2d\x44\x9b\xcd\xb1\x0d\xcf\xb2\x3c\xcb\x2a\x66\ \x3c\x8d\xe8\x7d\x4f\x04\x96\xb6\xa9\x49\x4e\x32\x54\x01\xc8\xe3\ \xbd\x2e\x3a\xbe\x74\x68\x1a\xa1\x37\x4b\x6c\x31\x3a\xc3\x6f\x4d\ \xc7\xc3\x8f\x33\xc6\x69\xf6\x94\x15\x8c\x28\xa1\x24\x10\x52\x41\ \xc8\xf6\x3e\xb4\x39\xc1\x6e\x0a\xc4\xc6\xdc\xe4\x06\x64\xae\x58\ \x89\x1d\x13\x1e\x4a\x50\xe4\x94\xb6\x90\xe3\x89\x4e\x76\x82\xac\ \x64\x81\x93\x80\x7b\x64\xd3\xa4\x7b\x35\x89\x51\x19\x61\xbb\x4d\ \xb8\x47\x66\x40\x94\xd3\x42\x32\x36\xb6\xfe\xe2\xaf\x11\x23\x18\ \x0b\xdc\x49\xdc\x39\xc9\xce\x6a\xbf\x85\x74\xbc\x39\x7f\x83\x67\ \x93\x69\x8b\x15\xdb\xb5\xb1\xcb\x85\xb0\xfd\xb4\xb8\x06\xcd\xa7\ \x63\xde\x41\xb0\xf9\xd2\x7c\xbb\x87\x71\xcf\x72\x74\x5a\xfb\xa9\ \xee\xda\x1e\x0d\xde\xf2\x23\xba\x89\x69\x52\xda\x71\xa5\x12\xb2\ \x3c\x45\x82\x14\x36\x80\x9c\x60\x01\x82\x73\x4b\x79\x2a\x7b\xa3\ \x61\x53\x2b\xb3\x45\x8d\x1a\xdf\x19\x13\xa4\xca\x89\x0e\x3b\x52\ \x25\x14\x2a\x43\xed\xb4\x94\xad\xe2\x91\xb5\x3b\xd4\x06\x55\x81\ \xc0\xce\x70\x38\xa7\x04\xc2\x51\x39\x2b\x39\xf5\x15\x53\x5a\xf5\ \xac\xbd\x3c\x8d\x63\x39\xfb\x7a\x9f\x93\x1a\xff\x00\x12\x22\x9b\ \x5d\xc1\x6e\xb5\x87\xbc\x34\x85\x20\x29\x23\x60\x09\x50\x25\x20\ \x11\x9c\xf3\x8c\x54\xbb\x51\xf5\x07\xf5\x15\xfb\x51\xc1\x7e\xd8\ \xe4\x86\x2c\x96\x44\x5d\x0a\x99\x5e\x5c\x74\xa9\x4b\x05\x18\xc6\ \x00\x1b\x73\x9c\xfb\xd6\x59\xd5\x69\xd9\x1a\xa9\xca\x9b\x57\x97\ \xad\xfe\xc4\xa5\x71\xdf\x68\x64\x28\xa8\x0e\xfc\x57\xa7\x0e\x23\ \x6a\xb8\x35\x5d\xeb\xdd\x67\xaa\xe3\xf4\x86\x5e\xa9\xb6\xb3\x62\ \x61\x4e\x18\xa6\x3b\xd1\x2e\x2a\x94\x03\x6e\xb8\x94\x12\x09\x69\ \x23\x70\x2a\x48\xf5\x18\x2a\x3c\x10\x01\xb0\x62\xb5\x70\x5c\x06\ \x9e\xb8\xa2\x33\x53\x79\xf1\x53\x15\xc5\x2d\xb1\xc9\xc6\x0a\x92\ \x09\xe3\x19\xe0\x72\x6a\x23\x52\xef\x52\xfa\x37\x68\x9b\x2d\xca\ \x2d\xaf\x61\x3d\x8f\x1f\x15\xaa\xff\x00\x04\x3a\xf2\x54\x79\xcd\ \x64\xca\xb0\xf8\x51\xfa\x1a\x72\x9a\xcf\x8c\xd2\x76\xf7\x06\xac\ \xe7\x92\xa2\x91\x68\xc3\x3d\x37\x11\x0b\x8d\x86\xad\xa1\x3d\x8e\ \x3d\x6a\xad\xea\x04\x70\xb8\xaf\x15\x0e\x4d\x5b\x17\x4c\xa6\x38\ \x18\xc6\x07\x35\x5c\x6b\x36\xc3\x91\x95\x81\xc0\xef\x5a\x30\xdd\ \x64\xef\xcc\x4e\x21\x59\xa4\x51\x3a\x5e\xe6\xfd\x9b\x51\xcb\x8e\ \xd9\xc7\x8a\xd2\xc0\x1e\xe0\x8e\x7f\x8e\x0d\x74\x96\x91\x2c\xb5\ \xa4\x21\x3b\xb4\x1d\xcc\x25\x5f\xc2\xb9\x86\x79\x0a\xea\x84\x28\ \x28\x20\x78\xb1\x1c\x52\x47\xf7\xb7\x63\xf9\x57\x42\x69\xb9\x92\ \x1c\xd2\xf0\xd2\xd3\x4a\x79\x0d\xb2\x1b\x73\xc3\xee\x85\x27\x83\ \x9f\xca\xb8\x18\xac\xaa\xa6\x87\xa4\xc0\x66\x9e\x12\x29\xf6\x90\ \x6e\xa2\xdb\x2d\x31\x51\x3b\x50\xdc\x22\x46\x54\x85\x61\x4c\x25\ \x4a\xe4\xed\xc9\xed\xec\x9c\x02\x4f\xcf\x35\x46\xda\x5b\x6a\xe0\ \xf2\xda\x91\x19\x4c\xb7\x3d\x2a\x5b\x4a\x4a\xf2\x16\xde\xe5\x2b\ \x23\x3d\xc8\xdc\xa1\xcf\x1d\xea\xe0\xfd\x24\xee\xae\x42\xd3\xb6\ \x4b\x78\x8c\x8d\xb3\x56\xf2\x14\xeb\xec\x12\x84\xa3\xca\x92\x9d\ \xde\xe4\x2b\x38\x1c\x9c\x7c\x55\x25\x6d\x75\x2f\xcc\x8d\x0d\xe0\ \xd0\x54\x64\xa5\x2e\xb9\xbf\x07\x6e\xe2\x02\x07\xf6\x46\x55\x8e\ \x7e\x6b\x8b\x51\x24\xda\x3d\x05\x2c\xd2\xa5\x19\xcb\xd7\x23\xa0\ \xf4\xfc\xd7\x5f\xd3\x16\xc7\xdf\x42\x10\x4c\x74\x21\x41\x27\x39\ \x21\x23\xf8\x1c\xd4\xb2\xd0\xbd\x91\xc0\x5a\x81\x07\x8e\xd5\x5d\ \xd8\x5e\x77\xf5\x5c\x78\xc5\xb7\x37\x8e\x77\xa9\x7c\x0f\x4e\xde\ \xfc\x7e\x15\x3d\xb4\x2f\xc4\x84\x56\x94\x85\x0d\xa7\x8f\x5c\x1a\ \xad\x39\x5d\x98\xab\x44\x7e\x88\x77\x1d\xd8\x4e\xe3\xc1\x03\xb6\ \x29\xca\x37\x86\x4e\xdd\xc4\x28\x77\x09\xef\xf9\xd3\x3c\x65\x2d\ \x6c\xa5\x68\x4f\x95\x49\x03\x69\xe0\xfe\x3e\xd4\xec\xdb\xa8\x4a\ \x37\x92\x00\x00\x7e\x15\xae\x0c\xca\xd0\xed\x1b\x68\x56\xe2\x53\ \x8c\x71\x4a\x5f\x7c\x36\xd1\x50\x19\xe2\x9b\x22\x38\x92\x92\x07\ \xaf\xc5\x23\xbd\x4c\x2d\x84\xb6\xd0\xdc\xe9\xe1\x29\x1e\xb4\xfe\ \x22\x8a\x17\xc3\xcd\x2b\x19\x4b\x96\x15\x20\x23\x24\xac\xf6\x48\ \xac\x2e\x4c\x2d\xfb\x6b\xd1\xe3\xe3\xc5\x29\xca\x72\x7b\x9a\xd3\ \x19\xb4\xc3\x41\x79\xf5\x05\xc8\x5f\x2a\x23\xd3\xe0\x7b\x52\x29\ \x93\xd0\xb2\x5a\x52\x94\x90\x53\xf7\xb3\xc8\x1f\x15\x55\xd6\xd5\ \x8f\x4b\x55\x97\x90\xcb\x03\x51\x42\x8e\xb5\x44\x92\x92\xdc\x96\ \xf8\x71\xb5\x70\xa0\x7d\xb1\x55\x6f\x5a\x75\x67\x5d\xa1\xcf\x42\ \x74\x96\x9a\x44\x2b\x52\x87\xec\x9e\x44\x74\xc8\x75\xdf\xf9\x44\ \xe4\x27\xe9\x8f\xc6\xad\x15\x96\x27\x36\x82\xfc\x44\x2c\xa0\x80\ \x92\xa1\x95\x0c\x76\xe7\xbe\x69\xce\x04\x95\xf8\xff\x00\x64\xdb\ \x2c\x6f\x19\x1c\x6e\x18\xa5\xaa\x52\x4f\x7d\x0d\xd7\xa6\xaf\xd5\ \xf5\xdd\xfd\x32\xa6\xe8\x9f\x52\xb5\xa7\xeb\x98\xb6\x5e\xa2\xd8\ \xd3\x6e\x99\x34\x91\x0a\x63\x69\xd8\x87\xd6\x06\x7c\x35\xa4\x12\ \x12\xa2\x01\xc1\x18\xcf\x6c\x55\xcd\xab\x75\x1c\x4b\x4e\x9c\x9f\ \x78\x96\xef\x87\x1a\x1b\x0a\x79\xe2\x0e\x4e\xd4\x8c\x90\x3e\x4f\ \x61\xf3\x4c\xba\x8f\x4d\xb5\x31\xb4\xca\x8c\x86\x1e\x71\x0a\x0b\ \x09\x5b\x78\x21\x40\xf0\x52\x7d\xea\x17\xaa\xa0\xde\xae\x50\x95\ \x63\x93\x0a\x43\xcd\xc8\x50\x2e\x64\x8d\x84\x03\x9e\x7e\x38\xed\ \x54\xa9\x39\xc2\xfa\x12\xa8\xd1\xaf\x28\xb8\xbb\x5b\x7b\xfa\x44\ \x1f\xa7\x7a\xd6\xf9\x7e\x95\x37\x52\x5c\xe5\x45\x85\x69\x79\xd3\ \x96\x1d\x21\x02\x33\x7e\x87\x79\xef\xf3\xee\x7b\x55\xc5\xd3\x1d\ \x4d\x0e\xeb\x16\x74\xfb\x79\x2e\x43\x4b\xfe\x1a\x1d\x29\x20\x39\ \x81\xc9\x4e\x7b\x8a\x88\x41\xb0\x5b\xa2\x43\x4c\x79\x16\xd6\xa6\ \x25\x27\x62\x10\xe3\x23\xc3\x07\x19\xec\x46\x3f\x3a\x94\xd8\xee\ \x31\x23\xb2\xcc\x56\xd8\x69\xa1\xfd\x5a\x5b\x42\x40\x49\x23\xdb\ \x1d\xbf\xf2\xa4\x52\xa4\xe3\x2c\xcd\xdb\xb8\xd7\x8d\x95\x1a\x91\ \xb4\x23\xd9\xeb\xc4\xb2\xa1\xca\x6a\x42\x4f\xad\x6a\x95\x93\xca\ \x12\x0f\xb6\x7d\x69\x96\x14\x9f\x30\x52\x14\x38\x1c\xe3\xd4\x53\ \xba\x1d\x4a\x9b\xee\x49\x27\xb7\xb5\x6d\x52\xba\xb3\x38\x4e\x19\ \x5d\xc4\x92\x9b\xdc\x9c\x90\x01\x3e\x86\xa2\x77\x84\xa1\x93\xbd\ \x43\x6a\x42\x87\x73\x53\x07\x16\x08\x50\x52\x8a\x89\x3c\xfc\x54\ \x47\x54\xa9\x28\x8c\xe9\xc2\x31\x8f\x26\xef\x7f\x63\x59\xeb\x69\ \x1b\x97\x85\xef\x63\x9d\xfa\xca\xcf\xeb\x0e\xa3\xbb\x1b\xc4\x6c\ \x17\x22\x78\x1e\x13\x99\x0a\x2b\x09\xde\x95\x20\x8f\x5c\xff\x00\ \xe8\x45\x45\x2d\x37\x2f\x07\x5e\xda\xf4\xd8\xf0\x8b\x6c\x47\x57\ \x8a\x50\x80\x32\xf2\x93\x93\x9c\x13\x9c\x11\x8c\xf1\xce\x6a\x6f\ \x75\xfb\x15\xef\x5d\xc8\xfd\xa7\x88\x44\xa7\x1b\x43\x78\xf3\x95\ \xa1\x20\x00\x32\x3b\x8c\x8c\x11\xdf\x07\x8a\xa4\x2d\x17\x69\x0e\ \x75\x34\x4d\x52\x9b\x42\xd3\x39\x59\xc1\xe3\xef\x10\x7f\xf4\xaa\ \xe0\x9d\xe4\xdf\x61\xab\x1c\xbf\xf8\xf8\x5f\xed\xf4\x47\x71\x74\ \xb8\xa7\xec\x8d\x93\xc9\xe3\xbd\x5b\xb0\x16\x36\x00\x0f\xe7\x54\ \x4f\x4e\xe7\xa5\x2d\x60\x1f\xbb\xc8\xe6\xac\x2b\x66\xa3\xf0\xe7\ \xb6\x16\xad\xad\xab\x8e\xfc\x57\xb2\x51\x75\xa9\x29\x1e\x0e\x9d\ \x65\x07\x66\x4f\xb3\x8c\x67\xf9\x56\x32\x46\xe6\x17\x93\xdc\x11\ \xcd\x69\x6a\x63\x0b\x48\x58\x70\x24\x7d\x6b\x5c\xb9\x49\x52\x7c\ \x36\xb0\xaa\xca\xa1\x2c\xdb\x1b\x9c\xe3\x97\x71\x89\x9b\x58\x5b\ \xa5\xc9\x4e\x65\x21\x5e\x50\x73\x45\x3c\xb6\xd0\x43\x78\xee\x73\ \x45\x6a\x75\x5b\x7b\x99\x15\x18\xa5\xb1\x18\xe9\xf3\xad\x31\xa2\ \x20\xad\xc2\x9d\xbf\xb4\xe3\x1f\xf1\xaa\xa9\x1b\x0b\x43\xcd\x85\ \x21\x47\x18\xcf\x06\xab\x58\x93\x1c\x6f\x43\x5b\xa3\x34\xac\x29\ \x5b\xfd\x7b\x7e\xd1\x54\xe3\xa7\xf5\x22\xe2\x36\x23\xbe\x14\x52\ \x39\x0a\x35\x78\xd1\xbc\x2e\xb7\x15\x1a\xd6\xb2\x7b\x13\xb2\x0e\ \xd3\x9c\x1f\xad\x43\xb5\x0c\x58\xf2\xaf\x00\xad\xad\xdb\x79\xc7\ \xcd\x2e\x1a\x8d\xb9\x67\xc2\x8a\x09\x50\xe0\xd1\x1d\xa5\x29\x65\ \xc5\x11\xe2\x2b\xb9\xc5\x32\x94\x1c\x75\x65\x6a\xcd\x4b\x44\x55\ \xb7\x5d\x07\xa9\x57\xa7\x2f\x7a\x62\xd8\xfd\xa1\x16\xab\x85\xcf\ \xf5\x83\x4e\xbe\x56\x97\x9a\xcb\xa9\x78\xb5\xb4\x24\x82\x37\xa7\ \x85\x6e\xc8\x07\xb1\xa7\xf9\x3a\x5e\x6c\x5d\x67\x78\xbd\xb1\x64\ \xd3\x57\xa6\x6e\xfe\x13\x8e\x22\xea\x8c\x2e\x3b\x88\x46\xc2\x52\ \xaf\x0d\x7b\x92\x40\x49\xdb\xe5\xe7\x3c\xfa\x54\xd5\x6a\x6d\xbc\ \x85\x3a\xda\x48\x04\xe0\xab\x1c\x7b\xfd\x2b\xd2\xa4\x85\xa1\x2a\ \x52\x7c\xfc\x0f\x92\x39\xc0\xfc\x2a\x5d\x28\xbd\xc4\x25\x62\x35\ \xad\xba\x72\xad\x5d\xac\x6c\xd7\x8b\x73\xb0\x22\xda\x9b\x65\xb6\ \x6e\x91\xd5\xb9\x2b\x75\x2c\xb9\xe2\xb1\xb0\x24\x60\xe1\x79\x07\ \x24\x71\xef\xda\xa1\x37\xcd\x19\x2e\xcf\xac\x2e\xf3\x22\xd9\xec\ \x57\x56\xae\x05\xb5\xa9\x37\x24\x10\xb6\x16\x94\xed\x25\x27\x62\ \xf7\x24\x80\x38\xe3\x9c\xf3\x56\xe5\xa7\x50\xdb\x2d\xfa\xa2\x2d\ \x8a\x44\xd4\xb7\x2e\x5b\x4b\x75\xa6\x94\x71\x94\x20\xa4\x12\x4f\ \x61\xca\xd3\x8c\xf7\xe7\x1d\xa9\x46\xb0\x44\x34\xcc\x57\x8e\xa4\ \x23\x29\xca\x94\xae\x31\xf3\x9a\x4c\x16\x5a\x8e\x1c\xb7\x1f\x38\ \x46\x70\xe2\x2d\xef\xa9\x50\xdc\xf4\x8a\xaf\x2f\xea\x94\x49\x76\ \x3b\x30\xef\x36\xb8\xd0\xe3\xf8\x69\x25\x6c\xad\xa2\xa2\x14\x53\ \x80\x36\x82\x53\xc0\x3e\x87\xb5\x21\xbb\x58\x6f\x93\x26\xb7\x7a\ \xd4\x0e\x40\xdd\x6e\xb6\x48\x66\x33\x51\x14\xa5\x78\x8e\x38\x90\ \x16\xe1\x25\x23\x6f\x09\x18\x48\xcf\x7e\xf5\x65\x26\xda\xf1\x07\ \xec\xcb\x42\x9b\x3c\x82\x0f\x1f\x5a\xc5\x30\x43\xa8\xf1\xd6\xf3\ \x65\x19\xc0\x5e\xf1\x8c\xe7\xd0\xfd\x6b\x46\x48\x99\xf2\x95\xc7\ \x4c\x6c\xb7\x59\x76\x7d\x17\x2a\xee\xcc\x58\xb0\xac\xcc\x07\xd9\ \x65\xb5\xad\x4f\x3c\xef\x85\xb1\x25\xc0\x52\x9f\x0f\x68\x52\x8e\ \xd1\xbb\x24\x0e\x6b\xd6\x34\x6d\xf5\x3a\x7e\xd3\x6b\x0f\x43\x53\ \x90\xb5\x22\x6e\xce\x10\xb5\x6d\x2d\x07\xd4\xe6\x07\x97\xef\x61\ \x5d\x8e\x06\x7d\x6a\x6f\xac\xee\x28\xd2\xba\x6a\x4d\xe6\x42\x54\ \xf8\x8e\x5a\x0a\x61\x0a\x01\x67\xc4\x75\x2d\x03\xcf\xa6\x55\xfc\ \x2a\x45\x0d\x31\x23\x6e\x3e\x2a\x56\xb0\x76\xf0\x73\x83\xed\x50\ \xa1\x1d\x81\x45\x6c\x44\x9b\xe9\x44\xbb\xe3\x5a\xd6\x4c\xd9\x10\ \xd9\x4d\xed\xc8\x2f\xdb\xd4\xa0\x5c\xf0\x9c\x8e\x84\xff\x00\x5a\ \x92\x00\xda\x54\x9c\x10\x09\xca\x49\xec\x69\xca\xf3\xa6\x6e\x57\ \x3d\x1d\xa8\xac\x8c\xd8\x74\xa5\x8e\x5c\xf8\x2a\x8a\xd3\x96\xe2\ \xad\x8b\x24\x28\x12\xe1\xf0\x92\x42\x73\xb4\x81\x85\x63\x9e\x4f\ \x73\x65\x30\xeb\x66\xd0\x4b\x4a\x07\x1c\x1c\x73\x83\xfe\x8d\x44\ \xb4\x1e\xa3\x8d\xaa\x74\x6c\x0d\x48\xcc\x75\x45\x66\x62\x54\xb4\ \xa1\xd5\x02\x53\x85\x94\xe0\x9f\xc2\xb1\x2b\x4a\x4d\xb3\x6c\xa9\ \xc2\x09\x45\x73\x5e\xbf\x91\xa9\x1a\x4a\xe2\x35\x8e\x96\xbc\xaa\ \x44\x6f\x02\xd3\x6b\x7a\x1b\xe9\xde\xad\xea\x5a\xc3\x60\x14\x0d\ \xb8\x29\xf2\x1e\xe4\x7a\x71\x58\xf4\xc7\x4f\xdd\xf4\x8e\x89\x66\ \xc3\x76\x30\x5d\x66\xda\x85\x06\x24\x45\x71\x6b\x53\xa8\x2b\x52\ \x89\x52\x0a\x06\xd3\x82\x38\x05\x59\xe6\xa6\xe9\x04\x27\x3d\xa9\ \x93\x42\xea\x38\xda\xaf\x49\xc7\xd4\x0c\x30\xe4\x56\x5e\x53\xc9\ \xd8\xea\x81\x29\xf0\xdc\x5b\x64\x93\xdb\x19\x41\x3f\x8d\x32\xf6\ \x77\x2b\xc3\x8d\xfb\xff\x00\xa2\xbc\xb5\xe9\xb9\xba\xc6\x1e\xbd\ \x10\x56\x62\x7d\xb6\xf7\x0e\x5d\xb6\x44\xa6\x56\x86\x9e\x54\x74\ \x34\x79\x04\x05\x14\x12\x92\x9c\x81\xf2\x33\x8a\x9a\xdb\x34\xe6\ \xab\x6b\x58\xdd\xb5\x74\xc1\x63\x32\xa7\x5b\x19\x86\xdc\x24\xbe\ \xea\x9a\x6c\xb6\xb2\x4e\xe7\x0b\x60\xa8\x10\xa5\x1c\xed\x18\xe0\ \x63\xd6\x9d\xf5\x1d\xda\xdb\x60\xb6\x2a\xe7\x71\x96\x98\xd1\xc2\ \x90\xd8\x51\xe7\x2a\x5a\x82\x52\x00\xf5\xc9\x50\xfe\x75\xb5\x99\ \xaf\x3a\x93\xb1\xe4\xad\x27\x21\x25\x2a\xc8\x35\x4e\x0e\x77\x74\ \xc9\x8b\x8d\x3d\x1e\xff\x00\xdf\xdd\x95\xb5\xcb\xa7\x57\x27\x74\ \xee\xaf\xb6\x47\x55\xa2\xd0\xe5\xfe\x4c\x49\x11\xed\xf1\x16\xb5\ \xc3\x88\xb6\x16\x85\x93\xbb\x62\x4e\x5c\x28\xf3\x10\x81\xd8\x71\ \x57\x1d\xa5\x73\x5d\xb7\x34\xbb\x9b\x11\x98\x96\xa0\x7c\x46\xe3\ \xbc\x5d\x6d\x3c\x9c\x00\xa5\x25\x24\xf1\x8f\xdd\x14\xc4\x41\x27\ \x27\x93\xeb\x4f\xd6\xc5\x97\x23\x8f\x5c\x54\x56\xa4\xa1\x14\xd1\ \x7c\x33\x59\x9f\xaf\x5b\x89\xa5\x24\xb5\x21\x24\x7a\xf6\xa7\x78\ \xe7\x2c\xa7\xd6\x91\xcd\x6b\xc4\x6f\x3d\x88\xf5\xa5\x51\x01\x0c\ \xa7\xe9\x49\xa9\x2c\xd1\x46\xba\x6b\x2c\xd8\xd3\xa9\xe4\xa2\x34\ \x52\xb7\x15\x84\x81\xde\xab\x1d\x4f\x7b\x86\xa8\x25\x40\xad\xb0\ \xe0\xf2\xf8\xa8\x28\xdd\xff\x00\x6b\x15\x64\x6a\x14\x78\xaf\xa1\ \x2b\xfb\x83\x9a\xab\xba\xb3\xe1\xae\xd8\xea\x40\x68\xa8\x24\xed\ \x0b\x4e\xe0\x48\xf4\xc5\x6c\xa5\x25\x4e\x95\xd9\x86\xbe\xb5\x19\ \xcd\xda\xb6\xfb\x1a\xdd\xd5\xcb\x15\xd6\x42\x81\x87\x1e\x42\x1a\ \x90\x73\x82\xde\xf2\x41\x27\xe0\x12\x93\xf4\xae\xae\xb1\xdb\x90\ \x9b\x8a\x9c\x86\xe3\x8c\xa1\xd6\xf3\x2d\xb4\xab\xca\xb2\x7b\x1c\ \x7b\x90\x2b\xe7\xf6\xb6\xb9\x3f\x32\xec\xfc\x2b\x82\xd4\x70\xa2\ \x83\xea\xa4\x1c\xf0\x01\xf5\x1f\x35\xd4\x5f\xa2\x97\x58\x2d\xb7\ \xc8\x0d\xe9\x1d\x45\x31\x98\xb7\xe8\xa9\x4b\x71\xd4\xf3\x9b\x44\ \xd6\xd2\x36\x8c\x13\xdd\x60\x0e\xdd\xcf\xcf\x35\xe7\xab\x6b\x3c\ \xdc\x8f\x57\x83\x83\x86\x1d\x53\x4f\x5f\x5e\xbf\xa2\xde\xeb\x2e\ \x97\x7b\x57\x68\xa7\xed\x4c\x1c\x2d\x01\x4a\x6d\x0d\xaf\x6a\x95\ \x84\xe4\x00\x4f\x03\x90\x9e\x6b\x92\x93\x19\xbb\x73\xef\x5b\xe4\ \xb4\x4b\x81\x28\x54\x84\x2f\xca\x5a\x52\x07\x27\x38\xe7\x68\xc9\ \xf9\x27\xd6\xbb\x88\xa3\xc5\x5e\xe2\x46\x48\xda\x77\x77\xae\x48\ \xeb\x35\x85\x7a\x63\x5f\xcf\x43\xa9\x57\x85\x31\x2a\x53\x4a\x24\ \xa8\x39\x9c\x73\xcf\xb9\xdc\x08\xf4\xe7\xe2\xb9\xd8\x98\x38\xbc\ \xcb\x99\xd3\xe8\xea\x97\x83\xa2\xde\xda\xaf\xa9\x24\xd0\xf2\x57\ \xf6\x19\x31\x5d\x59\x40\x12\xfc\x45\x21\x44\xe4\x6e\x27\xca\xaf\ \x9c\x72\x40\xc7\x35\x65\xe9\xd2\x0b\x45\x09\x75\xc5\xa3\x76\x7d\ \x89\x1f\xe5\x55\x26\x88\x9c\xa9\x53\xdc\x5e\xc6\xc2\x6e\x4d\x26\ \x42\x80\x56\xe5\xf8\xa0\x04\x3b\xdf\xfb\xd9\xe2\xad\x9b\x11\x2d\ \x24\x2d\x40\x05\x27\x29\x20\x7f\x64\xfb\xfb\xd6\x5a\x6b\xac\x18\ \x84\x49\xe3\x24\x36\x85\x25\x38\xca\x8e\x4e\x07\x39\xcd\x28\x8c\ \x0a\xdb\x4a\x82\x46\x3b\x8f\xce\x91\xc5\xe4\x11\xb9\x58\x4e\x55\ \xbb\x07\x38\x22\x9c\x60\x92\x12\x12\xb4\x8e\x3d\xfb\x1c\xd6\xb4\ \x60\xbd\x85\xab\x05\xa6\x14\xb3\xf7\x12\x33\x4c\xec\xba\x23\x95\ \xcd\x77\xcf\x25\xc2\x43\x69\xfe\xc0\xc7\x6f\x83\xf3\x4f\xb2\xd1\ \xba\x1a\x53\xc9\x0a\x50\xdc\x3d\xc5\x31\xbe\x94\xf8\x86\x43\xdb\ \x90\x9c\x04\xa9\x27\xdf\xd0\x7d\x39\xef\x53\x2d\xef\xd8\x10\x77\ \x42\x37\x5c\x7e\x79\x4b\x89\x3b\x02\xd3\xc7\xb9\x1e\xf5\x93\x36\ \xf4\x85\x79\x80\xd8\x57\xc9\x2a\xf5\x1d\xbe\xbc\xd4\x57\x5d\xf5\ \x33\x4f\x69\x47\x4b\x32\x64\xa5\x52\xd6\x8f\x2a\x00\xe7\x1c\xfa\ \x0f\x4a\x68\xd2\x57\x4d\x5f\xad\xae\xf3\x6d\x50\xa3\xaa\xd0\x98\ \xad\x36\xf2\x95\x35\xa5\x00\x42\xf3\xb4\xa1\x39\x1e\xd4\x3a\xb0\ \x86\xb2\x7a\xf9\x9d\x28\x60\x2b\x3a\x5c\x59\x75\x61\xda\xcb\x2d\ \x86\xa0\x21\xc2\xd1\x90\xd2\x55\x8c\x95\x77\xcf\x34\xa9\x95\xc1\ \x53\xa1\x96\xe5\x0e\x33\xc6\x7b\xfe\x35\x03\xb2\x74\xc3\x5c\xc9\ \xba\xca\x1a\x83\x5a\x2e\x2a\x07\xf5\x62\x13\x0d\xe1\xc4\x9f\x5e\ \x47\x1f\x4e\x69\xce\xd1\xd2\xbd\x47\xfa\xee\x6b\x12\x75\xb3\x8b\ \x86\xd8\x49\x8e\x44\x54\x95\x9c\xe7\x3b\xfb\x0e\x38\xed\x5a\x21\ \x59\x3d\x14\x5f\xaf\x88\xba\x94\xb0\x91\xbd\xeb\xa7\x65\xd8\xfe\ \xc4\x95\xa6\x7c\x55\x9f\x09\xe6\xd6\x1b\x00\x10\x97\x33\xc6\x73\ \x9a\x45\x71\x88\xda\x9d\x54\x97\xd7\x1d\x21\x03\x81\xb8\xa4\x1f\ \xfc\xe9\x9e\x67\x4c\x75\x5f\xeb\x76\x58\x8d\xa8\x60\x3b\x15\x6d\ \xab\xc5\x71\xd8\xca\x4b\x89\xc7\x60\x36\xab\x9c\xd6\xa9\x9d\x20\ \xbf\xa6\x4c\x7f\xb3\x6a\xb4\x96\x94\xb2\x97\x52\x5a\x51\x50\x49\ \x07\xee\xe4\x91\xdf\xde\x87\x34\xd7\xba\xfe\x5f\x92\xb1\xf6\x44\ \xee\xeb\x2f\x93\x17\x07\x6d\xe1\x94\x25\xb7\x9b\x2d\x9e\x30\x55\ \xc2\xb8\xf7\xf7\xf9\xa6\xf7\xed\x8c\x78\x61\xe8\xea\x0a\x03\x27\ \x28\x19\x1c\xf7\xff\x00\x3c\xd3\x64\xfe\x9a\xeb\xe7\x6f\x2f\xc7\ \x81\xa9\x5a\x54\x36\x9a\x07\xc6\x75\x94\xf2\xb2\x78\x4e\xd0\x3b\ \x62\xaa\x88\x7d\x40\xbc\x58\xef\x8e\x5a\xaf\xa9\x11\xa5\xb6\xe1\ \x48\x09\x27\x6a\xfb\xe3\x8f\x91\x59\xe5\x56\x12\x79\x6c\xd3\xef\ \x47\x46\x86\x06\x38\x84\xde\x1e\xa2\x93\xec\xf1\xf1\xb1\x77\xd8\ \xe5\xba\xdb\xe9\x43\x99\xc0\x59\x0a\xf6\xed\x53\x0b\x73\x9e\x2b\ \x67\x1d\xfd\x88\xee\x2a\x07\xa4\x5d\x5d\xee\x3a\x1e\x4a\x02\x14\ \x51\xe2\x2d\x03\xb6\x3d\xbf\x1a\x96\xe9\x54\x38\xea\xc9\x42\x89\ \xf0\xcf\x23\x18\xdc\x08\xff\x00\x0a\xa4\x1b\x5a\x33\x97\x88\x86\ \x59\x34\xf7\x42\xa9\x6a\x48\x56\xd5\x70\x73\x9c\x0a\x85\xea\xb9\ \xa0\x45\x74\xab\x01\x09\x49\x25\x47\xd3\x15\x2f\xbc\x2d\xa4\x29\ \xd2\xb4\xe0\xa4\x77\x57\x63\x9a\xac\x7a\x93\x34\x43\xd3\x13\x9d\ \x5a\xc2\x56\x52\x4b\x64\x9f\x55\x70\x08\xf4\x3c\x9a\x4e\x22\x4e\ \xd6\x2b\x45\x5e\x48\xab\xba\x6c\xfc\x4b\x9d\xfd\x53\xfc\x35\x96\ \xa2\x25\xdb\xa3\x8f\xa9\x39\x49\x58\xdd\x8f\x4e\x78\xc8\xfc\x2b\ \x9b\x2d\xab\x4b\x97\xf5\xaf\x79\xfd\xa3\x8a\x70\x1e\xdd\xce\x45\ \x5c\x1a\xab\x57\xc2\xb6\x69\x39\xda\x77\x4a\x2f\xed\x17\xcb\x8c\ \x77\xff\x00\x59\xba\xda\xbc\x36\x58\x64\x27\x7b\xbb\x72\x7e\xf9\ \x48\xc6\xd1\xdb\xd3\x92\x2a\x97\x69\x6f\xb7\xe1\xc9\x79\x95\xe1\ \x01\x28\x0a\x50\xc2\x7b\x70\x3f\x2e\x6b\x6e\x06\x8b\x50\x93\xed\ \x27\xa4\x2b\xc5\xd5\x82\xff\x00\x5d\xce\xab\xd1\x3a\xa3\xec\xf6\ \x98\x2f\x3a\xb0\x15\x25\xa4\xed\xc1\xfb\xd8\x1c\x91\x52\xc9\xfa\ \xb5\x94\x4e\xb2\x41\x65\x64\xc8\x9d\x28\x20\x25\x3d\xc3\x69\xe5\ \x4b\x23\xdb\xd2\xb9\x3e\xcd\xad\x1e\xb7\x5b\x7c\x36\xd2\x65\xcd\ \x07\x6a\x1c\x5e\x4a\x50\x8c\xf0\x94\x8f\x41\x9c\xf1\xc7\x3e\xf5\ \x62\xf4\x9e\xe1\x24\xdc\x57\x74\x92\x97\x6e\x37\xd9\x3e\x44\x04\ \x72\x23\xb6\x0f\x61\xe8\x9f\xc6\xb7\x55\xc5\x55\xa5\x45\x41\x7a\ \xfc\x1e\x62\x78\x05\x79\x54\xde\x28\xeb\xeb\x54\xe5\x3e\x86\xd8\ \x4a\xce\x4e\x33\xcf\x02\xa6\x76\xf4\x06\x9a\x4e\x72\x4e\x39\x26\ \xaa\xbe\x9d\x6f\x0e\x0f\x1d\xd4\xad\xce\xe7\x6f\x61\xf4\xab\x3e\ \x2b\xa9\xc6\x49\xf4\x1d\xf9\xae\xec\x33\x4a\x8c\x6e\x72\xe9\x68\ \xf5\x16\x49\x92\x96\x5a\x0a\x3c\x9a\x29\x39\x47\xda\x9c\x39\x00\ \xa5\x23\x91\xef\x45\x11\x8d\x34\xba\xc3\xdc\xaa\x37\x78\x95\x3d\ \xa1\xc5\x39\x68\x82\x33\x84\xa0\x2f\x1f\xfe\xe2\xa9\x44\x8d\xbe\ \x63\xb7\x1c\x7d\x4f\xfa\xef\x49\x74\xf0\x26\xcf\x18\x0e\xf8\x73\ \xd3\xfe\x31\x54\xaa\x50\xdc\x84\x8c\xe4\x9f\xe3\x5a\xa1\xee\xa3\ \x0a\xd8\x90\x69\x48\xa1\xb8\xc5\xcd\x99\x2a\xef\x4e\xef\xb9\xe1\ \x34\xa5\x9c\x80\x3b\x7c\xd6\xab\x33\x61\x10\x90\x12\x79\x29\xac\ \x24\x61\xc9\x29\x63\x90\x3b\x9e\x3b\x55\x89\x39\xeb\x52\x3d\x6f\ \x93\xa3\x75\x5d\xc6\xed\xe0\x0d\x46\x35\x1f\x84\x87\x16\x47\x8e\ \x94\xf8\xe8\x4a\x5b\x49\xfb\xde\x1f\x81\x9c\x0e\xc4\x66\xa6\xb7\ \x88\xf6\x59\xfa\x8b\xa8\xee\x6a\x94\xc7\x5b\xd0\x22\x34\x61\x2a\ \x47\x78\xd1\xfc\x00\xa0\xb6\x89\xfb\xa4\xb9\x92\x54\x9e\x77\x00\ \x3d\x05\x48\xf5\x2f\x4d\xdb\xd4\x17\x55\x29\xf9\xea\x79\xa5\x3c\ \x97\x1c\x69\x31\x59\x42\xd6\x10\xa0\xa4\xb6\x5d\x08\xdc\x50\x14\ \x91\xc6\x73\xc7\x7a\x95\x4b\xd2\xd1\x66\xb8\xd4\x9b\xdd\xaa\x0c\ \xa7\x18\xe5\xa7\x1e\x8e\x95\xa9\xbf\xf9\x24\x8e\x3b\xfa\x56\x7c\ \xba\xea\x51\x52\x93\xd6\xc5\x6f\xa1\x61\xb3\x73\xea\x56\x86\x95\ \xa9\x61\x44\x7e\x63\xba\x4d\x4e\xc9\x54\x96\x92\x54\xb7\x53\xe1\ \x61\x4a\xc8\xe5\x63\x93\xf1\xcd\x48\xfa\xcf\x74\x87\x2a\xf5\x66\ \xb3\xb9\x68\xb7\xdc\x9f\xb8\x4a\x52\x23\xfd\xbf\x1f\x67\x65\x48\ \x6d\x4a\x2b\x3c\x1f\x36\x32\x12\x07\x24\x9e\xe2\xa4\x37\xb4\xda\ \x27\xa1\x86\xe4\x5a\x60\x4c\x72\x32\x8a\xd9\x72\x44\x74\x38\x5a\ \x51\xee\x50\x54\x0e\xd3\xf2\x29\x04\xfb\x6c\x0b\xa4\x6f\x06\xe9\ \x06\x2c\xd6\x77\x6e\xf0\xe4\x34\x97\x13\xb8\x76\x38\x50\x23\x35\ \x31\xa4\xd4\x9c\x86\x37\x68\x64\x44\x2f\xa1\xd2\x25\x33\xa7\x2e\ \xec\xb4\xeb\x4a\x8f\x1a\xf9\x31\x96\x10\xca\x8f\x82\x86\xc2\xf2\ \x12\xdf\xf7\x39\xe3\xe0\xd4\x66\xe7\x19\xcb\x8c\x2b\xb7\x4e\xa2\ \xa9\xc4\x3d\x6d\xb8\xcf\xbc\x32\x1b\x27\x29\x6f\xc1\x0e\xc7\xfc\ \x3c\x69\x23\x8f\x5f\x0f\xeb\x57\x0c\x68\x71\x62\x21\x48\x8b\x19\ \x98\xe9\x70\x82\xb4\xb6\xd8\x48\x2a\xc0\x19\x38\xf8\x00\x67\xe0\ \x52\xad\x3b\x6a\xb7\xa6\x74\x8b\x92\x61\xc7\x13\x1d\x40\x6d\xc9\ \x01\xa4\xf8\x8a\x48\xec\x92\xae\xe4\x0f\x6a\xb4\xa9\xf5\x52\x65\ \x14\x2f\x64\x51\xfa\xda\xe4\x8d\x5b\xa0\x75\x76\xae\x6c\xe6\x3c\ \xe3\x6b\x84\xc1\x07\x90\x84\x38\xca\xd6\x07\xb7\xed\x5e\x70\x7d\ \x51\x4b\xb5\x94\x25\x69\xed\x51\xaa\xa2\xe9\x88\xe8\x80\x4e\x8c\ \x12\x7c\x28\xa8\xd8\x0b\x89\x79\x68\xf1\x00\x1f\xbc\x10\x3b\xf7\ \xe2\xad\x56\x74\xed\x8d\x98\x8e\x5a\x51\x68\x80\x9b\x76\xed\xc6\ \x20\x8c\x8f\x07\x21\x41\x40\xec\xc6\xdc\xee\x00\xf6\xef\xcd\x2f\ \x4c\x18\x5f\xac\x0d\xc0\xc4\x8f\xf6\xc2\xc8\x64\xbf\xe1\x8f\x10\ \xb6\x0e\x42\x37\x63\x3b\x72\x49\xc6\x71\x93\x51\xc2\x2a\xe1\x72\ \x17\xa4\x9a\xb2\xc2\xd7\x7a\x05\x8d\x26\x88\xcc\xa6\x6d\xb2\x51\ \xb8\x88\xa7\x1f\x68\x8e\x1a\x4a\x9b\x71\xdc\x7d\xe5\x78\xa4\x61\ \x4a\xe4\x95\x2a\xa1\x1a\x11\xb9\x73\x6c\x9d\x32\xb4\xbb\x0e\xd9\ \x36\x03\xb6\xd9\xeb\x6a\x3d\xcd\x65\x31\xde\x90\x1d\xc7\x20\x25\ \x5b\x96\x94\x12\x52\x08\xf5\x26\xae\xcb\x45\xaa\xd9\x68\x92\xec\ \xab\x55\xb2\x14\x27\x9e\x20\xba\xa8\xec\x25\xb2\xe1\xfe\xf1\x03\ \x9f\xc6\x97\xc7\xb3\x69\xfb\x85\xa9\xbb\x13\xd6\x0b\x59\xb7\xb5\ \xfd\x54\x43\x11\x05\x94\x77\xec\x8c\x6d\x1d\xcf\x61\xea\x69\x33\ \xa2\xe2\xdc\xb9\x0e\x8c\x73\x59\x7a\xe5\xf6\x1b\xfa\x63\x6a\x9d\ \x60\xd0\xf1\x2d\x17\x29\x91\xa5\xb9\x1c\xba\x96\xdc\x8e\xe2\x96\ \x80\xd1\x71\x45\x08\x0a\x57\x27\x68\x21\x3f\xf5\x6a\xa0\xd0\x4d\ \xb5\x22\xc3\xd3\x28\x17\x64\xa1\xdb\x1c\xbb\x8d\xdb\xc7\x65\xee\ \x59\x75\xf4\xba\xe9\x61\x2b\x1d\x8f\x3b\xc8\x07\x82\x40\xae\x88\ \x8b\xa7\xa3\x43\x88\x86\x22\x34\xd4\x76\x1b\xe1\xb6\x9a\x40\x4a\ \x12\x3e\x00\xe0\x73\x49\x17\xa7\xec\x66\xc6\x6c\xa6\xcd\x6e\xfd\ \x5c\x92\x4f\xd9\x3e\xcc\x8f\x07\x24\x95\x13\xb3\x1b\x79\x24\x93\ \xc7\x72\x4d\x2f\x34\x5f\xba\xc7\xcb\x0f\x2d\x2f\xa5\xbf\x05\x0b\ \xa9\x63\x43\x3a\x37\x56\xc4\x61\x98\xee\xd8\x60\xeb\x08\x88\xb7\ \x82\x90\xa6\xd8\xca\xd9\xf1\x90\xde\x78\x4a\x02\x94\xa1\x81\xc0\ \xc9\x15\x7a\xa6\x14\x48\x28\x6d\x88\x2c\x31\x1a\x3a\x01\x4a\x1a\ \x65\x01\x28\x4f\x3c\x80\x07\x03\x9a\xdb\x1e\xd1\x69\x55\x98\xd9\ \xd5\x6c\x82\x6d\xc5\x3b\x0c\x42\xc2\x3c\x12\x33\x9c\x6c\xc6\xdc\ \x67\xe2\xb2\x72\x0c\x48\x10\x99\x89\x06\x2b\x11\x23\x34\x36\xb6\ \xd3\x2d\x84\x21\x03\xd8\x24\x70\x2a\xd4\xfa\xb3\x21\x52\xb2\xb9\ \x8e\xd4\x91\x4e\x56\x73\x84\x28\x7a\x53\x7a\x53\xe5\x19\xa7\x1b\ \x42\x78\x55\x4d\x67\xd4\x63\xa8\xae\xba\x15\xca\x21\x2d\x13\xfc\ \x6b\x7c\x70\x7c\x04\xe7\xeb\x9a\x4d\x30\xf9\x42\x7d\xcd\x2b\x4a\ \x7f\x60\x12\x38\xe2\xb1\x4b\xdd\x46\xd8\xfb\xcc\x88\xeb\x46\xae\ \xd3\x11\xe1\x5a\xe4\x47\x87\xce\x16\xfb\xa8\x2b\xda\x3f\xba\x3d\ \xfe\xb5\x51\xf5\x36\xd8\xf7\xea\x77\x23\xae\x4c\xa9\xea\xda\x77\ \x2b\x21\x0a\x5f\xc0\x20\x60\x55\xed\x75\x64\xae\x31\x6d\x23\x19\ \xe4\x9a\x84\x6a\x6b\x62\x1c\x86\xa1\xb3\x3c\x56\xc8\xae\x25\x2c\ \xa8\xc3\x56\x0f\x3d\xcf\x9f\x7d\x44\xb4\x48\x62\xe0\xf3\xe6\xd9\ \x2e\x3a\x4a\xb1\x87\xdd\x4b\x8a\x19\xf9\x00\x1f\x4a\x85\x38\x95\ \x15\x01\xe7\x42\xc7\x21\x47\x23\x9f\xf5\xeb\x5d\x45\xd6\x2b\x3b\ \xa9\x87\x39\x29\x04\xe5\x95\x29\x3c\x76\x29\x1b\x87\xf2\xae\x5f\ \x59\x90\xb7\x08\x5b\x8b\x21\x4a\xc0\xca\xb8\x15\xcc\x95\x19\x52\ \x76\x91\xd6\xa7\x5d\x56\x85\xd2\xd5\x16\x2e\x87\xeb\xc7\x54\xb4\ \x7a\x5a\x8f\x13\x50\xb9\x70\x88\xd8\xc2\x63\x5c\xd0\x24\x20\x0f\ \x60\xa5\x79\xc0\xf8\x0a\x15\x2d\xbf\x75\xe9\x7d\x44\x81\x1e\xd1\ \xa9\xf4\xfb\x11\x2e\x09\x75\x02\x34\xd8\x6e\xa8\x21\x27\x70\xdd\ \xb9\x0a\xc9\xec\x38\xc1\xaa\x42\x42\x1a\xd8\x95\x36\xa4\x9e\x3b\ \x81\xdc\xe3\xd6\x93\xef\x53\x4b\x0a\x6d\x5e\x1a\xb7\x02\x0f\xaa\ \x48\xe4\x7f\x1a\x44\xf0\xf4\xea\x2d\xac\x69\x86\x2a\xa5\x29\xa7\ \x7b\xfa\xed\x3a\x67\xa6\x45\x2f\x6a\x47\xd8\x43\xe8\x41\x8d\xbc\ \x84\xf0\x0b\x4e\x28\x85\x67\x8e\x30\xa3\x93\xb7\xd3\x15\x7f\x59\ \x10\x50\xd8\x04\x27\x05\x1b\xbb\xf2\xa5\x1a\xe5\x2e\x83\xc8\x4c\ \xfb\xf1\xb8\xc8\x79\x6d\x36\xb4\x12\xf3\x69\xe4\x15\x8e\x0a\x86\ \x7d\x87\x38\xf8\xae\xa5\xd3\x24\x22\x33\x7e\x33\xbb\xbc\x4f\x38\ \xcf\xb6\x3f\xca\xb8\xb2\x86\x4a\xb9\x4e\xd5\x49\xf1\x20\xa4\xb6\ \x25\x50\x0a\xca\x96\x16\x52\xb5\x63\x00\x03\xda\x97\x46\x52\x10\ \xb1\xfb\x5d\xe1\x7c\xe0\xfc\x7b\x53\x5c\x22\xd2\xdd\x29\x28\x29\ \x46\xd0\x06\x13\x80\x41\xe7\x03\xf9\xd2\x97\x4a\x9b\x53\x7e\x1b\ \x5b\x92\xa3\xb4\x2f\x3c\x53\x91\x85\xad\x49\x2b\x23\xc4\x8c\x53\ \xc8\x23\x04\x53\x25\xf9\x97\x14\xd1\x4b\x27\x6a\xd2\xad\xe8\x1e\ \x83\xde\x97\xdb\x24\x00\xda\x71\xb4\x92\x39\xc1\xfb\xd5\xb6\x72\ \x42\xd4\xac\xa7\xb6\x3e\xa6\x99\x6b\xab\x95\x83\x71\x91\x46\x4e\ \xe9\xb5\x82\xdd\xaf\xef\x9a\xbb\x53\xb5\x3a\xe9\x0e\xe7\x19\x5e\ \x24\x65\xb4\x1c\x4b\x3c\x64\x84\x6d\xe5\x3f\x74\x04\xe3\xb6\x69\ \xce\x77\xe9\x2d\xd3\xb8\x71\xac\x1f\xab\x2d\xb7\x6b\x95\xd5\x6c\ \x84\xcd\x86\xcc\x52\x87\xa0\x36\x13\x85\x21\xd2\xb0\x01\x21\x40\ \x70\x32\x3b\x9c\xf2\x33\x69\x49\x6d\x0e\xb4\xa6\xdc\x47\x88\x95\ \x27\x18\x20\x62\xab\xed\x53\xd3\xf6\x1d\x92\x6e\x16\xc0\x84\xaf\ \xb1\x49\x47\x21\x3e\xa9\x04\x73\x8f\x8a\x74\x54\x5d\xf9\x5c\xdf\ \x4e\x34\x71\x35\x23\xc7\x93\x49\x7c\xbf\x17\x2b\xab\x87\x5e\x3a\ \xd4\xbb\xbc\xfb\xed\x93\x42\xda\xcd\x8e\x42\x52\xd4\x18\x92\x9b\ \x5b\x8e\xb5\x8c\xe1\x64\xa0\xa4\x92\xac\xf2\x31\x8e\x06\x3b\x12\ \x61\x8c\x7e\x92\xdd\x75\xd2\xb2\xa7\x4e\xbf\xd9\x2d\xf3\x1a\x98\ \x50\x19\x44\xcb\x72\xda\x6e\x36\xdc\xf9\x5b\xd8\x52\x48\x39\xe7\ \x71\x51\xe0\x73\xef\x74\x5b\x6c\x17\x96\x96\xd2\x90\xeb\xe8\x2a\ \x07\x87\x8e\x43\x7c\xe0\x10\x78\xc5\x2e\x9f\x66\xbb\x86\xca\x27\ \xc0\xb7\xdd\x5b\x20\x28\x87\xd9\x2a\x42\xbb\xfa\x03\xc6\x31\x4f\ \x8d\x24\xb5\x5e\xbc\xcd\x18\x8c\x0e\x0d\xbc\xb0\xd1\xf8\xaf\xaa\ \xfa\x94\x13\x1f\xa5\x47\x5a\x2e\x17\xf6\x6f\x31\x2d\x16\x43\x16\ \x33\x2b\x4a\xa1\x22\x0b\x85\x85\xa5\x58\xf3\xac\xef\xdf\x91\x8e\ \x08\x50\x1c\x9e\x0e\x6b\x46\xbd\xfd\x21\xfa\xb9\xaf\xf4\xd3\xba\ \x61\x16\x9b\x55\xac\xc9\x79\xa5\xfd\xa2\xd8\x97\xdb\x92\x14\x85\ \x85\xa4\x21\x45\xc3\xb7\xcc\x91\xc8\x19\xab\xd9\x36\x7b\x92\x98\ \x71\xa8\xac\xc1\xb4\x43\x3c\x2d\xa8\x51\x40\x04\x1f\x7d\xd9\xa6\ \xf7\xf4\xc4\x25\x02\x5b\x33\x14\xe2\x70\x12\x1b\x09\x4e\x4f\xb8\ \x20\x70\x6a\x5c\x5d\xbd\x7d\xcb\x51\xe8\xbc\x25\xba\xed\xdf\xb9\ \xaf\xb6\x9f\x32\xb4\xd1\x9f\xa5\x06\xba\xd3\xd3\x05\x83\x5a\xdb\ \x5f\xb9\xcc\x5b\x69\x6d\xd5\xb4\xca\x03\xe1\x40\x79\x54\x02\x78\ \x59\x23\x04\xf6\xe6\xa5\xd3\xe0\x5a\xfa\x99\x7a\x87\x76\x4d\x96\ \x7c\x6c\x38\x95\x7e\xdd\x92\xca\xca\x10\x90\x84\xa5\x5e\xc5\x58\ \x2a\xf8\xc8\xa9\x1e\x95\xd1\xad\xb7\x72\x33\x1f\x84\xd2\x16\x95\ \x79\x5f\x71\x01\x4f\x2d\x3f\xd9\x2a\x3e\x61\xef\xed\x53\xf8\xad\ \xa1\x0d\x25\x96\x5b\x28\x1d\xb7\x7a\x8c\x7a\xd6\x4c\xb0\x84\xae\ \xbe\xeb\xe1\xd9\xfc\x04\xb8\x78\x4a\xad\xd3\x77\x7c\x9a\xd3\xe7\ \x6d\xdf\xcb\x53\x56\x9c\xb4\xa6\xd0\x5c\x43\x28\xfb\x36\xe6\xc3\ \x6d\xa0\x2b\x77\x03\xb7\x3e\xf5\x2a\xb3\x30\xdc\x56\xde\x53\x79\ \x4a\x49\xce\x7e\x69\x14\x64\xee\x71\x03\x68\x0e\x01\x8e\x7b\x1f\ \x6a\x5f\x3d\xd4\xb5\x04\x10\xa1\x85\x63\x27\x3e\x94\xb7\x6b\xdc\ \xe5\xd6\xa9\x29\xbd\x77\x64\x67\x54\x3e\xa7\x0e\x12\x40\x2e\x2c\ \x20\x7d\x3b\xf0\x6a\xa3\xeb\xec\xc8\xc8\xd2\xef\xc4\x53\x85\x0d\ \x17\x1a\x42\x54\x9e\x4f\x0a\xdc\x4f\xc0\xc0\x3f\x95\x59\x12\x65\ \xa5\xc9\x6e\x28\x20\x29\xb6\x12\xa2\x94\xf7\xc9\xf7\x1f\x87\xa5\ \x50\x5f\xa4\xad\xd7\xc2\x8d\x11\x90\xea\x52\x14\xf9\x52\xd4\x39\ \x07\x00\x0e\xdf\x88\x35\x86\x5d\x79\xa4\xb9\xb3\x4d\x15\x95\xdd\ \xf2\x29\x3d\x51\x01\xb5\x6a\x2b\xbb\x61\x84\x15\xc9\x96\x0a\x48\ \x40\x3e\x12\x42\xf2\xad\xbe\xd9\x38\xc7\xba\x6a\x51\x1a\xde\xe4\ \xad\x04\x34\x9c\x87\x12\xa7\xe7\x4a\x52\xe1\xf8\x80\x00\xb9\x03\ \x09\x46\xd5\xfa\x03\x94\xa7\x9e\xc4\x1c\xf0\x6a\x2e\xdc\xa6\xe4\ \x33\x35\xf4\xa5\x68\x2e\xb9\x90\x47\x00\x1d\xaa\xc2\x7f\x3d\xbf\ \x95\x48\x27\xdc\x1c\x77\xf5\x54\x64\x04\xb9\x1d\x69\x42\xdb\xf7\ \x4a\x82\x48\x2a\x1f\x50\x8e\x7e\x41\xae\x83\x8d\x49\xa4\xbf\xd6\ \xc2\xe6\xe9\x53\x4d\xda\xf7\x4f\xee\x57\x96\xc9\x42\xd5\x39\xf8\ \xd7\x1b\x72\x64\x01\x96\x9d\x6d\x44\xa1\xc4\x28\x1f\xdd\x50\xec\ \x41\xfa\x8f\x71\x56\x7d\x87\xa8\x71\xd9\x65\x98\xd1\x6e\x0b\x43\ \x28\x40\x4e\xc7\xe1\xa5\x05\x27\xea\xd9\x19\xfa\xe2\xa3\xd7\x1d\ \x2e\xbb\xea\x95\x24\x2c\xb5\x39\x5d\xd4\xae\xce\x9f\x93\xef\xf3\ \xeb\xeb\x5a\x6c\x5a\x1a\xe6\x66\x04\xce\x2b\x8a\xd8\xfd\xe5\x23\ \x3f\x85\x6d\xc5\xd2\xa7\x17\x9e\x5b\x9c\x9c\x3c\x95\x78\x70\xe5\ \x6b\x17\xde\x84\xea\x4d\xbe\x1b\x6a\x91\x26\x78\x53\x68\x1c\x9d\ \x87\xf8\x0e\x6a\xcc\xb3\xf5\x6a\xcb\x37\xc3\x69\x13\x52\xb7\x1c\ \xc0\x65\x86\x92\x5c\x75\x7e\xde\x54\xe7\x68\xf9\x56\x2a\x91\xd1\ \xdd\x3f\xd3\x72\x5c\x4c\x6b\x83\xd2\x66\x36\x4f\xdc\x6b\xf6\x40\ \x9f\x92\x39\x35\xd0\x5a\x1f\x4e\x59\x2c\x50\x50\xcd\x92\xcf\x12\ \x0a\x55\x8c\xa9\xb4\x0d\xea\xfa\xa8\xf2\x7f\x3a\xac\x31\x78\xa7\ \x68\xd3\x8b\x39\x18\xaa\x58\x58\x36\xa1\x26\xc9\xf6\x97\x93\x2a\ \x4c\x60\xf3\xad\x96\xc2\xb9\x09\x3d\xe8\xa7\x1b\x5b\x78\x8e\xca\ \x07\x07\xf9\xd1\x5d\xbc\xce\xcb\x3e\xe2\xe9\xc1\xa8\x95\x8d\x91\ \xb0\xd5\x92\x13\x84\x67\x21\xc3\xff\x00\xf7\x15\x5b\xa4\xa0\xee\ \x40\xe0\x80\x72\x69\x7c\x08\xa5\x5a\x1e\xdb\x29\x00\x12\x9f\x13\ \x38\x1f\xf1\x8a\xa6\xf7\x54\x56\x94\xac\x80\x30\x73\xc0\xad\xd4\ \xdd\xe0\x8c\x0d\x58\x99\xdb\x49\x4c\x26\xc9\x27\x84\xf1\xc7\x15\ \xaa\x18\xdd\x31\xc7\xb3\x9c\x71\xc8\xe4\x57\x96\x97\x02\xed\xc9\ \x3b\x8e\x40\xe4\x66\x8b\x77\x09\x77\x18\x3e\x6c\x7c\xd5\x80\x8a\ \x33\xd4\x9b\x85\xb2\xdf\xa8\x35\x08\xd3\x08\x95\x6b\xb1\x5d\xff\ \x00\x56\xcb\x58\x9b\xb5\xe5\xa8\xb8\x94\x05\x34\x8d\x98\x57\xf5\ \x8d\x93\xb9\x49\xee\x7d\xb3\x4f\x57\xde\xa2\x49\x82\xbd\x4b\x6d\ \xd4\x76\x96\x20\x3f\x67\xb6\xa2\xe4\x55\x12\x59\x7d\x0e\xb4\xbd\ \xc3\x6e\x4a\x11\x85\x85\x27\x6f\x6c\x1c\x83\xc5\x37\xbd\xd3\x8b\ \xdc\xae\x9b\xeb\x2b\x23\x72\xad\xc9\x95\x7e\xd4\x29\xba\x45\x52\ \x9c\x58\x42\x1a\x0e\xc7\x56\xd5\x9d\xb9\x0a\xc3\x2a\xe0\x02\x39\ \x1c\xf7\xc2\x8d\x5d\xa1\xdf\xbe\x6a\x2d\x53\x3e\x64\xa6\x5b\xb7\ \x5e\x6c\x4d\xdb\x1b\xd8\x49\x75\xb7\x12\xb5\xab\x79\x49\x18\xc0\ \xdc\x08\xe7\x9c\x7a\x57\x36\xf2\x95\x4c\xdd\x86\x9f\xdd\x85\x3b\ \x76\xaf\xbf\xe0\x8d\x5a\xb5\x35\xc0\xdf\xad\x96\x9b\xe5\x99\xb8\ \x2b\xbb\x30\xb7\xa1\xa9\x99\x5e\x36\x0a\x00\x52\x9b\x73\x28\x4e\ \x15\xb4\xe7\x23\x20\xf3\xcf\x19\xa6\xfb\x37\x51\x26\x49\xd1\xcc\ \x6a\x69\x36\x16\xe3\xc7\x9a\xa6\x23\xc0\x6c\xcc\x1b\xe4\x48\x71\ \x7b\x08\x27\x6e\x10\x80\xac\xf9\x8e\x4e\x01\x38\xf4\xa7\x96\x34\ \x5e\xa5\x93\x7f\xb3\x5e\xaf\x92\x2d\x89\x4d\x9a\x3b\x88\x60\x44\ \x52\xd4\x5f\x71\xc4\x04\x17\x14\x14\x91\xb0\x6d\x07\xca\x37\x7d\ \xe3\xcd\x31\x40\xe9\xc5\xd9\x7d\x2b\xb4\x69\x79\x2e\xc1\x54\xfb\ \x5b\xe8\x92\xda\xd4\x92\xe4\x75\xad\x0e\x15\x84\xa8\x10\x0a\x90\ \x41\x20\xf1\xeb\xeb\xeb\xba\xf2\x7b\x18\xda\x91\x27\xd2\xba\x99\ \x77\x69\xd7\x6b\x5c\xb8\xf1\xe3\xcf\xb6\x38\xda\x5d\x4c\x79\x1e\ \x33\x4e\x21\xc4\xee\x42\xd2\xad\xa9\x3c\xf2\x30\x47\x04\x1e\xf4\ \xcd\x17\x57\x3d\xa5\xee\x1d\x43\xb9\x4d\x82\xf3\xdf\xaa\x53\x6f\ \x77\xc3\x4c\xd5\x2d\x0b\x69\xcd\xc9\x1b\x10\xa4\x80\xda\xb6\xf2\ \x40\xc8\x27\xd7\xd6\xa5\xda\x27\x4d\xbd\x00\x48\x76\x65\x96\xc9\ \x6c\x52\xca\x70\x8b\x6a\xb7\x05\x81\x9e\x54\x7c\x34\x76\xc9\xc7\ \x1c\x64\xd4\x7f\x59\xe8\x0b\xcd\xe7\xfa\x7e\x88\x4f\xc0\x48\xd4\ \x31\xa0\x35\x13\xc5\x5a\xc7\x86\x58\xce\xf2\xe6\x12\x70\x0e\x78\ \xc6\x7e\x71\x54\xa8\xdb\x8e\x85\xad\x24\x93\x5e\xb4\x62\xa7\xf5\ \x45\xe9\x8d\x51\x36\xc7\x70\xb2\x43\x89\x70\xfd\x54\x6e\x71\x76\ \x4c\x53\xad\x94\x85\x6c\x28\x70\xf8\x69\x29\x50\x51\x1d\x81\x18\ \x3c\x76\xa6\x1d\x25\xad\xef\x4d\xe8\x3d\x39\x36\xee\xcc\x19\x97\ \x1b\xd3\x88\x66\x17\xfb\x41\x6c\x2c\x90\xa5\x2d\x6e\x9d\x98\x42\ \x52\x13\xfb\xa1\x5e\x82\xa7\x57\x0d\x2b\x2e\xe1\xd4\x8f\xe9\x1a\ \xde\x8e\x88\x46\xc0\xe5\xb0\xa3\x71\xf1\x43\xaa\x79\x2b\xdd\x8c\ \x63\x6e\x01\xf5\xce\x7d\x3d\x6a\x14\xd7\x4b\xef\xc9\xd2\x5a\x7e\ \xd5\x2c\xd9\x1f\x93\xa7\xa4\x05\xc6\x0b\x5a\xdd\x62\x5b\x78\x52\ \x54\x97\x12\x50\x36\x12\x95\x0c\x63\x7e\x08\xa8\x53\x90\x4e\x13\ \x4e\xe8\x5b\x23\xa9\x2e\x33\x64\x2f\xfe\xa6\x4b\xd7\x16\xef\x89\ \xb2\xbb\x11\x99\x61\x49\x53\xaa\x4e\x50\xa4\x2c\x81\x94\xa8\x94\ \x72\x40\xc6\x4f\xb5\x38\x7f\x4d\xae\xb0\xae\x2e\xc1\x6a\xcf\x6e\ \x7a\xe9\x02\xd9\xfa\xc6\xe0\xd2\xee\x45\xb6\xd0\x32\xad\xad\x36\ \xaf\x0c\xef\x59\xda\x4f\x21\x23\xdc\xf3\x49\xee\x5a\x1a\xeb\x72\ \x85\x65\x8e\xd5\xba\xc3\x67\x5c\x4b\xec\x5b\x8b\xcd\x44\x52\xbc\ \x35\x36\xd2\xb2\xac\x10\xda\x77\x2f\xd0\x65\x20\x76\xe4\x53\xad\ \xe7\x42\x3a\xde\xb9\x5e\xa5\x85\x6b\xb0\xdd\xd1\x2e\x1a\x22\xc8\ \x89\x76\x04\x04\x29\x0a\x25\x2e\x36\xa0\xda\xfd\x14\x41\x4e\x06\ \x70\x39\x15\x15\x27\x24\xad\x72\xd0\x84\xef\x71\xda\x27\x53\x1c\ \xbc\x5e\xad\x76\x7d\x39\x6e\x80\xeb\xf3\xec\xed\x5d\x9a\x55\xca\ \xe0\x62\xa5\xd4\x38\x78\x69\xbd\xad\xac\xa9\x63\x07\x77\x18\x4f\ \xcd\x37\x45\xbd\xeb\x29\x9d\x53\xd6\x76\x38\xed\xda\xdc\x85\x6d\ \x8d\x10\x47\x6d\xd9\x2b\x6f\x69\x71\xb7\x94\x95\x6e\x4b\x64\xe5\ \x44\x24\x2b\xfb\x21\x3c\x66\xb7\x75\x07\x45\x5d\x75\x55\x89\x8b\ \x03\x16\xad\x37\x09\x94\x36\xd1\x8b\x3d\x2e\xb8\x97\xad\xce\x0d\ \xa5\x4a\x61\x09\x6c\x76\xc7\x1e\x74\x7a\x67\xda\x9d\x23\xe9\x9b\ \xd5\xa7\xa9\xb7\xad\x42\xc3\x90\x65\x5b\x6f\x4c\x44\x43\xc5\xd7\ \x94\x89\x0c\xae\x3a\x16\x9e\x12\x10\x52\xb0\xad\xd9\xfb\xc9\xc7\ \xb1\xac\x11\xd2\x46\xf9\x71\x25\xbf\x27\xf4\x7f\x82\x13\xa0\xf5\ \xcc\xb6\xf4\x9e\x84\x89\x6f\xb4\xbb\x36\x4e\xa1\x6e\x4a\x19\x13\ \x6e\x2a\x51\x6c\xb4\x4a\x89\x71\xd2\x92\x54\x36\x85\x1c\xed\xcf\ \x00\x01\x4e\x8b\xea\x43\xcf\x59\x4a\x5c\xb2\xb6\x2f\x89\xd4\x0a\ \xb0\x08\x68\x94\x4b\x2a\x90\x90\x14\x56\x1c\xd9\x90\xde\xcf\x36\ \x76\x64\x76\xc6\x69\x26\x8a\xe9\xd5\xea\xcc\x9e\x9d\xb7\x2a\x55\ \xb9\x6a\xd3\x3f\x6d\xfb\x6f\x86\xe2\xc8\x73\xc6\x6d\x69\x4f\x87\ \x94\x8c\xe0\xa8\x67\x3b\x7f\x1a\x43\xa8\x74\x7c\xcb\x3c\x69\xf7\ \x59\x17\x08\xac\xcb\xfe\x98\x2e\xfb\x6f\x52\x59\x79\xe6\xca\x16\ \xda\x51\xe1\xbc\x10\x82\x51\x94\x85\xe5\x40\x10\x0e\xde\x69\xea\ \xf7\x46\x5b\xd4\x50\xd7\xd6\x88\x96\x68\xad\x51\x3a\xf5\x7c\xbf\ \xd9\x6e\x36\xb6\xa0\xcb\xb2\x2d\x86\x9e\x2d\xbe\x5d\x43\x85\xc4\ \x15\x85\x24\x94\xa4\xe3\x6e\xd3\xc8\x07\x92\x3d\x39\x9f\xdb\x9b\ \x21\x9d\xde\xf5\x4a\x74\xfa\x36\xb1\x9d\x71\xd7\x77\xeb\x6a\x20\ \x35\x3a\xe9\x2a\x28\xb7\x3f\x32\x3b\xc8\x8a\xe0\x69\xb0\x85\x10\ \x08\x0b\x52\x40\xca\x42\xb0\x37\x11\x9c\x7a\x55\xe2\xdf\xec\xa3\ \x80\xac\x6e\x03\x9c\x0a\xad\x59\x5d\x58\xd3\x84\xbb\xd5\x9a\x5e\ \xf3\xc8\x48\xc7\x00\xd2\xe5\x28\x21\x19\x24\x62\x92\x46\x49\x53\ \xbb\x8d\x63\x73\x77\xcb\xe1\x8e\x29\x4e\x39\xa4\xa2\x6b\x52\xca\ \x9c\x8c\xe5\x79\x9b\xde\x80\x08\x3e\x95\x1c\xba\xb6\x92\xda\x93\ \x8a\x7a\x84\xf0\xf0\xca\x14\x7b\x53\x7d\xdb\x6a\x42\x88\x23\xb5\ \x68\xa2\xb2\xca\xc2\x2a\x4a\xeb\x32\x28\x7e\xac\x5b\xd9\xf0\x5c\ \x75\xcd\xa1\x23\x39\xc9\xc0\x23\xd4\x57\x1e\x5d\xed\x4c\xc5\x9d\ \x3a\x1b\x8b\x49\x4a\x17\x84\x2c\x11\x82\x3b\xa4\xff\x00\x01\xda\ \xbb\x8f\xa8\xed\x32\xfc\x57\x12\x52\x15\x90\x46\x31\x9c\xd7\x21\ \xf5\x4d\x8b\x7b\x77\x22\xdb\x6a\x40\x90\xc2\x8e\x50\xca\x07\x95\ \x27\x9c\x28\x8f\x5c\xfa\x52\x7a\x46\xea\x49\x8d\xe8\xd9\xae\x23\ \x8f\x69\x5b\xcb\x01\xb4\x16\xc1\x2e\x36\xda\xb3\xbb\x1b\x77\x66\ \x90\xab\x24\x03\xfc\x3d\xa9\x44\xc2\x92\xac\x93\x93\xea\x7e\x7d\ \xa9\x32\x73\x9c\xfe\x35\x96\x3b\x1b\x2a\x7b\xd6\x2c\x3e\x86\x5e\ \x55\x07\x50\x2e\xde\x9d\xa9\x75\xf4\x9f\x05\x6a\xec\x92\x01\xcf\ \xe6\x3f\x3e\x2b\xb1\xf4\xdc\xc5\x4a\x89\x1d\x78\x4a\x96\xcb\x61\ \x0e\x82\x78\x2a\xc6\x4f\x6f\xf5\xc5\x70\x15\xb5\xd7\xe3\x5d\xa3\ \xc9\x86\xa5\x25\xd0\xa0\xa6\xcf\x63\xbb\xbe\x2b\xae\xfa\x67\xa9\ \xc4\xcb\x4c\x0b\x8c\x64\xbc\xff\x00\x8a\x0b\x8e\x82\x07\x99\x69\ \x49\xcf\xd0\x9e\xd8\xf8\xae\x46\x3a\x9e\x4a\xaa\x6b\x66\x75\xf0\ \x53\xe2\x50\xc9\xce\x25\xcd\x16\x52\x52\x50\xe8\x20\x21\xd0\x0a\ \x49\xf5\xee\x08\xc7\xa7\x22\x9c\x96\xe2\x50\xc6\x14\xe6\xc5\x28\ \x85\x79\xbd\x0e\x2a\x31\x6d\x7d\x1f\x64\x3b\x5b\x07\x01\x2b\x4a\ \x09\xc7\x98\xf7\x03\xe0\x71\x4f\x4a\x79\x29\x4b\x99\x41\x53\x89\ \x4f\x09\xce\x48\x57\xf6\xbe\x9e\xff\x00\x14\xa8\xcb\x40\x9a\xd4\ \x75\x83\x28\x21\xe4\xa9\x4b\x40\x07\x18\x27\xb6\x7d\x85\x3b\xaf\ \x2e\x34\x57\x90\x49\xc1\x2a\x1f\xcb\xe0\xd4\x2e\x44\xc2\xc3\xa1\ \x01\x40\x37\x80\xb5\x85\x71\xdf\xdb\xe7\xe9\x4f\x91\x64\xed\x61\ \x05\x04\xbb\x9f\xbe\x53\xc7\x70\x3b\x81\x53\x09\xf2\x29\x28\xb5\ \xa8\xe0\xa4\x2b\x07\x91\xbb\x18\x15\xa0\x85\x24\xf2\x33\x8e\x4e\ \x3b\x66\x94\xa0\x95\x25\x21\x5e\x53\x8e\xc1\x40\xee\xac\x78\xf3\ \x63\x18\xf5\xc5\x35\x3b\x30\x4e\xe6\xa6\x9c\x6b\x2a\x52\xc6\xd0\ \x91\xe6\xdc\x3d\x3e\x2b\x15\xc8\x86\xd9\x48\x52\x41\xe3\x00\x9e\ \x72\x3e\x4d\x6c\x75\x2d\xa5\x25\x6e\x1d\xde\x98\x1d\xe9\xbe\x41\ \x65\x2a\xcb\x4d\x95\x82\x9c\x7d\x0f\xe3\x5a\x23\x27\xc8\xba\xd4\ \xd8\xe3\xd1\x0a\x77\xb8\xc0\xce\xfd\xaa\x1e\xde\xf5\x8a\x26\x47\ \x52\x40\x65\x9f\x2e\x4e\x71\xed\xee\x6b\x4a\x76\xe7\x7f\x86\x9d\ \xc4\xf3\xba\xb0\x2b\x47\x2a\xd8\x9c\xe7\x83\xc0\xcd\x44\x99\x74\ \x66\x42\x4b\xea\x4a\x52\x13\xc7\x7a\xf5\xb4\xa1\x2d\x03\xd8\x93\ \xe9\xe9\x5e\x87\x02\xd4\x70\x3c\xc7\x9c\xfa\x56\xc4\xe1\x03\x9f\ \x4c\x9a\xcd\x32\x1b\x33\x8e\xb2\xdb\x81\x69\x4e\x48\x1c\xe3\xda\ \x91\x6a\x7b\x88\xf0\x91\x19\x05\x3b\x94\x00\x48\x07\xd7\xbf\xe7\ \xde\x92\xbb\x74\x47\x88\xa0\x97\x30\xda\x81\x4a\x47\x62\x78\xe4\ \xf3\xed\x51\xb8\x73\x45\xc1\xf3\x26\x46\xe5\x36\xc2\x89\x6c\x64\ \x83\x9e\x47\x22\xb3\x54\xa9\xa6\x54\x4c\x61\x77\x77\xc8\xdb\x73\ \x92\x88\x50\x9c\x38\xd8\xe1\xdc\xb5\x0f\x82\x3f\xf4\xae\x45\xfd\ \x23\xee\xce\x4d\xea\x0b\x50\x50\xea\x14\xcc\x78\xe8\x52\x90\x83\ \x90\x95\xab\x24\x83\xf8\x60\xfe\x22\xba\x2b\x59\xea\x08\xd0\x62\ \xbf\x26\x44\xa5\x33\x19\xb4\x17\x5c\x58\x20\x8e\x07\x63\xf1\xdb\ \x1f\x53\x5c\x63\x74\xb8\xae\xe9\x7e\x99\x76\x78\xef\x5c\xa9\x0b\ \x70\x83\xc7\x04\xf0\x3f\x01\xc7\xe1\x4c\xc0\x43\x3d\x57\x3e\x4b\ \xf9\x23\x15\x2c\x94\xd4\x79\xcb\xf8\x26\x3a\x45\x98\x32\xad\xaf\ \xc7\x7d\x61\xb5\x12\x92\x8c\xf6\x57\x03\x82\x7d\x06\x78\xcf\xcd\ \x2a\xb1\xb9\x19\x6e\x8b\x53\x8d\xf8\x32\x63\xa8\x96\x52\xb1\xc9\ \x0a\xdb\xce\x7d\x71\x83\xf9\x9a\x61\xb0\x2d\xc5\x35\x15\x4d\x2c\ \xee\x5b\x9f\x67\x29\x00\x1d\xc7\xba\x4f\xe3\x8c\x54\xef\x4a\x5a\ \xad\xf7\x99\xa9\x44\xe6\x54\x95\xc7\xe5\x0f\x32\xad\xab\x49\x3c\ \x00\x0f\xc7\x7c\x56\xa8\xda\x32\x95\xfb\x6e\x65\xc7\x55\x6a\x9c\ \x6f\xee\xd8\xb0\xf4\x96\x9b\x6a\x64\x54\x82\x90\x54\x45\x3f\xa7\ \x46\xbe\xc4\x8c\x82\xa0\x83\x4b\xb4\x16\x9d\x9d\x0c\x20\xb3\x73\ \x72\x52\x06\x30\x97\x1b\x09\x50\x19\xe0\x64\x77\xab\x76\x25\x97\ \xed\x70\xc0\x59\x4e\xe0\x3b\xd7\xa6\xc3\xca\x96\x2e\x9a\x94\xe3\ \xb1\xe5\x25\x26\xa5\x64\xee\x40\x34\xc6\x9e\x66\x2b\xe8\x50\x40\ \xef\xcd\x5a\x70\xa1\x25\x31\x52\x52\x00\x18\xa4\x30\x2d\x6d\xb4\ \x54\xd9\x00\x28\x76\x38\xa9\x0d\xa4\xa4\xb4\xa6\x57\xf7\xbd\x05\ \x6b\x9a\x8c\x17\x55\x15\x83\xbb\xb3\x1c\xed\xa9\x4e\x5a\x38\x3f\ \x18\xa2\xbd\x86\x76\x6d\x49\xfd\xd3\xcd\x15\xcc\xaa\x9b\x91\xd1\ \xa5\x2b\x22\x23\xd3\xf4\xa2\x7f\x4f\xa2\x30\xa0\x0a\xb0\xe6\x7d\ \xff\x00\xac\x55\x47\xe4\x47\x5c\x69\x0b\x8c\xb3\x8c\x1e\x29\xc3\ \xa7\x4e\xaa\x2e\x95\x84\xe8\xe5\x2a\xdf\x91\x9f\xf8\xc5\x53\xc6\ \xa1\x84\xd4\xc8\xe2\x54\x70\x0a\xc1\xce\x12\x39\xf9\xae\x8d\x35\ \x97\xc0\xe5\xdf\x34\x13\xe6\x86\xdd\x36\xf6\x50\xb6\x16\x7b\x1e\ \x29\xc2\x18\x29\x7d\xc4\x92\x78\xf8\xa8\xfb\x0e\xa9\xa7\xbc\x40\ \x08\x29\xe0\x8c\xf7\xa7\xa6\xde\x0e\x29\x0f\x24\xe4\x91\x83\xcd\ \x34\xa1\x36\x61\x59\xb5\xa4\xf7\xf2\xfa\x53\x55\xc4\xe4\x21\x19\ \xf2\x9a\x53\x6a\x7d\x0b\x82\xb6\xf3\xd8\x52\x39\x4f\x21\xc2\x87\ \x10\x77\xa4\x28\x8c\x83\x9e\x41\xc7\xf0\x39\xac\x54\xe2\xe3\x36\ \x6e\xab\x25\x28\x23\x09\x6b\x42\x23\xec\xf8\xf4\xa4\xf1\x51\xe2\ \xad\x0d\xa9\x5b\x73\xdf\x8a\xc1\xc5\x87\x65\x7e\xd3\xee\x27\xde\ \x86\xe4\x36\xbb\x80\x65\x97\x10\xa7\x50\x37\x29\xb0\xa1\xb8\x24\ \x9e\x0e\x3d\xbe\x6b\x52\x56\x46\x56\xee\xc5\x8f\x34\xe4\x7f\x32\ \x14\x14\x07\x7a\xdf\x15\xc0\xc3\x41\x6b\x18\x2a\x3d\xab\x25\xb6\ \xb4\xac\x2c\x1c\xa4\x8e\x45\x78\x52\x1d\x58\xe3\x18\xa4\x39\x66\ \x5a\x8e\x4b\x2b\xd0\x1f\x2b\x0b\x49\x6c\x67\x75\x6c\xfb\x32\x0a\ \x14\xa5\x2c\xee\xaf\x51\xb8\x37\xb0\x0e\x47\x6c\xd6\x4b\x6d\x69\ \x8d\x84\x9d\xca\x35\x46\xf9\x0c\x4b\x98\x91\x59\x1b\x14\x01\xe0\ \xd2\xbc\xa5\x6d\x05\x03\x8c\x52\x28\x72\xe2\xc9\x6d\x69\x61\xf6\ \xa4\x6d\x25\x0a\x2d\xac\x28\x02\x3b\x8c\x8f\x5a\x51\x19\x0f\x79\ \x80\x42\xb6\xfa\x66\xa6\x5a\xa2\xb1\x1c\xa3\x9d\xc1\x1f\x5a\xd9\ \x3d\x43\xca\x3b\xd6\xa8\xe1\x48\xda\x14\x9c\x7a\xd6\xa9\x6f\x85\ \x38\x40\x3f\x15\x95\x46\xf2\x35\xb9\x5a\x06\xb4\x11\x95\x2b\xd2\ \xb4\xe7\x72\xca\x88\xaf\x1d\x5e\x06\xc4\xe3\xe6\xb7\xc4\x60\xac\ \xf3\xf7\x45\x3f\x48\xab\xb3\x3e\xb2\x76\x46\xfb\x7b\x3d\xdc\x57\ \xe1\x5b\xdd\x56\xe5\x63\xd0\x77\xaf\x14\xb0\x06\xc4\x70\x2b\xc4\ \x83\x90\x9e\xe6\xb3\xbb\xb7\x76\x69\x4a\xca\xc8\xd8\x95\x06\x9a\ \x2a\x3d\xe9\x08\x4f\x8e\xb2\xb5\x76\xad\xb3\x49\x2b\x0d\x03\xc5\ \x68\x79\x41\x86\x4f\x22\xad\x05\x65\x7e\x6c\xac\x9d\xdd\xb9\x21\ \xae\xf1\x31\xbb\x78\x2e\x29\x61\x29\x1e\xa4\xd5\x6d\xaa\xba\xb3\ \xa6\xa1\xb4\xe2\x5c\xb9\xb3\xe2\x20\xe0\xb6\x16\x9d\xd9\xfa\x66\ \x9b\x3a\xf7\x7f\xbc\x1b\x78\xb6\x59\x1f\x87\x1a\x43\xc7\x2b\x91\ \x25\xcd\xa1\xa4\xfb\x81\xea\x4f\x35\xcc\xea\xd3\x2f\xb4\xa9\x92\ \xef\x1a\xa6\x3c\xd0\x7c\xc6\x34\x62\xa2\x1d\x50\x3c\x0c\x80\x06\ \x73\x58\xf1\x58\xfe\x1c\x94\x56\xe4\x50\xc3\x2a\xd7\x72\x95\x91\ \x33\xea\x8f\x56\x15\x70\x6d\xd8\xd6\x44\x4b\xda\x78\x5c\x8d\xc1\ \x00\x7c\x05\x67\x8a\xa1\x2e\xd3\x9f\x78\xe5\xf7\xc3\x3b\x95\x93\ \x80\x4e\x13\x8e\xfc\xf7\x27\xde\xac\x8b\x9c\x3b\x2b\x70\xb6\x5c\ \x25\x22\x12\x10\x90\x7c\x24\xba\x92\xa2\x48\x04\x1c\x9f\xf0\x15\ \x06\xbc\x4f\xd3\x0c\x33\x25\x11\xd8\x54\xd7\xd6\x02\x5b\x75\x6a\ \x52\xd4\x9e\x73\x9c\x9c\x01\xf9\x1a\xcd\x1a\xb3\xae\xf3\x49\x1d\ \x5a\x31\xa1\x41\x64\xa7\x7b\xbd\xd9\x11\x52\x14\xb6\x8b\xab\x25\ \x3f\xd9\xcf\x75\x13\xed\x58\x0c\x11\x9c\x7e\xed\x6d\x93\x25\xc9\ \x0e\xf8\x8b\x3b\x71\x9d\xa9\x4f\x61\x5a\x52\xa2\x84\x28\xfb\x8a\ \xd2\xaf\x6d\x4c\xf3\xb5\xf4\x14\xb0\x7c\x29\x4c\x3e\x47\xef\x05\ \xe3\xf1\xab\xbf\xa6\x12\x57\x67\xbc\xa2\xce\x40\xf0\x5d\x74\x3f\ \x1d\x59\xf2\xe7\x82\xa4\xfd\x78\xcf\xfe\x95\x56\xea\xeb\x6c\x2b\ \x65\xc5\x9b\x5a\x56\xa0\xf2\x2d\xec\x97\x54\xa5\x64\x87\x8a\x02\ \x94\x9e\x4f\x03\x9e\xde\x98\xab\x45\x88\x6a\xb8\xe8\x7b\x55\xd5\ \xb5\x94\x3b\xe1\xb4\x54\xe2\x40\xdc\x95\xa7\x8c\xe3\xe7\x18\xfc\ \x6b\x99\x8f\x95\xe1\x17\xc9\xfa\x47\x6f\xa2\x62\x9c\xa7\x0e\x7e\ \xae\x5f\x76\x7b\xcb\x29\x75\xe5\xad\xd0\xb6\xf8\x4a\x41\xe3\x9d\ \xde\xde\xd9\xf5\xa9\x23\x52\xdb\x56\x77\x27\x6a\x0a\x55\xb4\x13\ \xdf\x68\xc1\xdc\x7e\x3d\x2b\x9e\xb4\x96\xa3\x75\x49\x5c\x49\x0a\ \xf0\x25\x05\xed\x78\x2b\xb6\x33\x9c\x83\xed\x90\x4d\x5b\xba\x72\ \xfa\xc4\x88\xcf\xc4\x5a\xd2\xe2\x8e\x49\x4e\x41\x51\x48\x27\x27\ \xf1\xe0\xf1\x5c\xd8\xcf\x2b\xca\xcd\xb5\xb0\xed\x2b\xa2\x62\xb7\ \x1a\xfb\x39\x5b\xdb\x7c\x40\x37\x00\xa3\x95\x03\xeb\xf4\xe3\xf9\ \xd6\x36\x1b\x92\x52\x1d\x42\x1d\x59\x64\xac\xe7\x27\x71\x38\x38\ \x18\x3e\x99\xf4\xa6\xb6\x6e\x2d\x29\x85\x48\x3e\x11\x64\xa0\xab\ \x07\x2a\xe3\xe3\xdf\xe9\xf1\x4d\x0f\xce\x62\x25\xe2\x38\x6a\x3e\ \x5e\x71\x7b\x7c\x24\xaf\x0a\x2b\xc6\x46\xef\x7c\x0c\x7e\x75\x6c\ \xf6\x69\xa3\x26\x4b\xe8\xcb\x36\x43\xcb\x4b\xc8\x70\xe1\xa6\x90\ \x00\x69\xa0\xac\x92\x9f\x53\xc7\xcf\x14\xe0\xdc\x9d\xea\x05\x21\ \x38\x3d\xf1\xe9\xf5\xa8\x8d\x9e\xef\xe2\xba\x8d\xd2\x9a\x4e\x5b\ \xcb\x98\xe5\x48\x03\xd7\xf0\x3c\xd3\xdb\x6f\x17\x23\x78\xc8\x2a\ \x79\x0e\x04\x84\x24\x0e\xe0\x1c\x67\x3f\x3e\xd5\xae\x3a\xea\x8c\ \xed\x5b\x46\x2c\x75\xc7\x14\x14\x12\xa4\xab\x1c\x2b\x3d\xc5\x68\ \x62\x30\x74\x82\xa7\x95\x8e\x48\xcf\x35\xb5\x97\xd1\xb1\x0e\xba\ \xb4\xaf\x6a\xca\x4a\x47\x74\x91\xc7\x3e\xf5\xbe\x2a\xda\x01\x68\ \x20\xb9\x85\x67\xcc\x30\x47\xb5\x3e\x04\xa9\xe9\xa1\x8a\x62\x6f\ \xf3\xa5\x3b\x8a\xb3\xf8\xe3\xf9\x1a\x4d\x22\x2a\x9d\x5a\x90\x52\ \x84\xa7\x1b\xb9\x39\x27\x07\x9a\x5b\x1d\xc0\x42\x96\x96\xd4\x0e\ \x77\x04\x13\xc9\x07\xbd\x27\x7d\x63\x6b\x6a\x0a\x04\x94\xfa\x1e\ \x70\x7b\x8f\xaf\xc5\x59\xd8\x9c\xcd\x31\xb3\x86\xde\x70\x24\xfe\ \xcd\x05\x27\x70\x3c\x12\x78\xff\x00\x43\xe6\xb4\xc8\xb9\x25\xa6\ \x1c\x7d\x4b\x46\x5b\xc9\x20\x1f\x51\xee\x2b\x75\xd9\xf4\xc6\x61\ \xd9\x2d\xc8\x4a\x08\xe4\x93\xdf\xd3\xd3\xe9\x51\x6b\xbc\xef\x05\ \x6d\xa9\x4d\x2d\x95\x2b\x97\xc1\x19\x1c\xa7\x21\x43\xdf\xb7\xf1\ \xac\x75\x5e\x51\xab\xac\x37\x6a\xeb\xab\xbf\xa9\xd4\xb6\xd5\x97\ \x54\xe6\xd6\x4f\x8b\x9c\x05\x0e\xff\x00\xcf\xf9\xd6\xb6\x66\xa5\ \xb8\x3e\x47\x47\x8a\x94\x02\xe0\x20\x60\x64\x11\xe9\xe8\x78\xc5\ \x43\x2f\x77\x17\x2e\x37\x56\x19\x8e\x84\xa9\xb6\x4e\xf5\xad\x18\ \xfb\xf9\x00\xfe\x1c\x9f\xc6\x91\xeb\x9d\x4c\xbb\x44\x05\x33\x0f\ \x2e\x4f\x53\x48\x43\x0c\xb6\x39\x56\x0e\xe2\x15\xec\x30\x39\x3e\ \x95\xcf\x93\x6e\x5a\x1b\x23\x4b\x44\x8a\xd3\xf4\x8b\xd5\x81\x71\ \xe3\xe9\xb8\xc9\x42\x5c\x7d\x09\x76\x56\xd5\x79\x91\x85\x1c\x24\ \xfe\x40\xd5\x2e\xc7\xdc\xf2\x9e\x41\xc9\xac\xae\xd3\xe4\xdd\x2e\ \x92\x2e\x53\x56\x1c\x7e\x43\x85\x6b\x50\xed\x9f\x61\xf0\x2b\xd4\ \x36\xb4\x46\x53\xdb\x78\x48\x1f\xc7\xff\x00\x4a\xf4\x58\x7a\x0a\ \x85\x25\x1e\x7f\x53\x83\x88\xaf\xc7\xaa\xe5\xc9\x6d\xe0\x3d\xda\ \x56\xa1\x66\x79\xa6\xc9\x3b\xdc\x6d\x48\x29\xee\x9d\xa4\xf2\x3e\ \x40\x3f\xc6\xa7\x5a\x1f\x54\x45\xfb\x53\x28\x9c\xff\x00\xd9\xa4\ \x17\x3f\x79\x3f\x7f\xb6\x09\x3e\x87\x15\x5b\x45\x56\xd8\xd9\x6f\ \x25\x25\x59\x71\x3f\xd9\x48\xe7\x23\xf9\x56\x6b\x2a\xb8\x45\x61\ \x29\x70\x05\x85\x1f\xeb\x09\xdc\x9e\xdf\xbd\xed\xf5\xaa\xba\x69\ \x4f\x30\xca\x96\xad\x47\x86\xfd\x7a\xb9\xdb\xfa\x4a\xec\xd3\x71\ \x98\x74\x10\xa4\x2d\x20\x85\x24\xe4\x1a\x91\x47\xd6\xf1\x5c\xbf\ \xb1\x60\xb6\xbc\x99\x37\x07\x12\x1c\x5b\x2d\x9d\xde\x0b\x7e\xab\ \x59\x1f\x77\xe0\x1e\x49\x22\xb8\xbf\x4e\xe9\xad\x63\x2c\x22\x09\ \xbf\xa2\x04\x65\x01\x95\xae\x5f\x00\x0f\x4c\x24\x93\x9f\x8a\xe9\ \xae\x84\x58\x2c\xfa\x56\xd8\x61\xdb\xdd\x12\x25\xbe\x77\x4b\x98\ \xaf\xbc\xf2\xbd\x07\xc2\x47\xb5\x3d\x63\xea\x4d\xa8\x52\x77\xf0\ \x38\x18\x9c\x1a\xc3\xdf\x3b\xd7\xb0\xbf\x5a\x69\xa9\x51\x52\xb6\ \xd4\x03\x80\x73\x9e\xe6\x92\x9f\x15\x87\x72\xa0\x52\x53\xdf\xe6\ \xb7\x5a\xc2\x56\xd8\x52\x09\xc8\x02\x97\xb8\x12\xa4\x6d\x79\x00\ \xf1\xc1\xae\xec\x65\x28\xab\x48\xcb\x93\x32\xb9\xa9\x89\x88\x51\ \x05\x20\xe4\xf1\xc5\x14\xb2\xc9\x6a\x6d\xb7\x0c\x85\x64\x83\xd8\ \x1a\x2b\x35\x5a\xd0\x8c\xac\x91\xaa\x95\x19\xca\x37\x6c\x83\x68\ \x26\xf6\x69\x78\x6d\x39\xf7\x72\xe1\xe7\xd4\x78\x8a\xa7\x92\x55\ \x1d\x59\x46\x14\x8f\x50\x07\x06\xb5\x68\xd8\x45\xee\x9f\x5b\x24\ \x23\xcc\xb4\x87\x09\x03\xd7\xf6\x8a\xa5\x29\x56\xe4\xf9\xbb\x8e\ \xfc\xd6\xca\x53\x53\x89\x86\x50\x70\x48\x41\x32\x14\x79\x61\x4e\ \x30\x42\x17\x83\x94\xd3\x4c\x66\xe7\x37\x2c\x44\x43\x6a\x3b\xbd\ \xbb\x54\x89\x4c\x24\x80\xb4\xf9\x71\xeb\x4e\x9a\x5e\x08\x5b\x85\ \xf7\x46\xec\x1c\x73\x56\xa9\x35\x08\xb9\x30\x84\x1c\xe4\xa2\x8a\ \xab\xa3\x76\x3b\x64\xed\x57\xaa\x97\x72\xb2\xbf\x2e\xe0\xc6\xa5\ \x92\x23\xdc\x17\x1f\xc4\x6a\x39\x43\x6d\xad\x20\xab\x23\x18\x56\ \x48\x1e\xea\x1e\xf5\x96\x96\xd4\x57\x4b\x26\x89\xb4\xb5\x6b\x83\ \x65\x44\xcb\x86\xb5\x91\x65\x79\x42\x3a\xd2\xc9\xdc\x5e\xcb\xdb\ \x37\x95\x67\x7a\x52\xa2\x9d\xdc\x80\x52\x08\xce\x45\xad\xa1\xf4\ \xbf\xf4\x65\x7a\x81\x62\x77\xda\xbf\x5c\x5e\x5e\xba\x01\xe0\xec\ \xf0\x7c\x44\xa1\x3e\x1f\x73\xbb\x1b\x3e\xf7\x19\xcf\x6a\x8e\xc6\ \xe9\x87\x83\x6e\xb5\xc4\x37\xcc\xfd\x83\x55\x2f\x50\xee\xfb\x27\ \xf5\x9b\x8b\x87\xc1\xfb\xfc\x7f\x59\xf7\xf9\xed\xf7\x79\xae\x44\ \xaa\x39\x3b\x9b\x23\x86\x94\x22\xac\xb5\xd7\xf9\x43\x05\xd7\x5b\ \xdd\xad\x2c\xea\xcb\x54\xe8\xb6\xc9\xd7\x8b\x4d\xca\x0c\x08\x2f\ \x34\xca\xd9\x65\xf3\x31\x28\x2d\x95\xa7\x72\x88\xd8\x14\x73\x85\ \x73\x8f\x4c\xe6\xbc\xd1\xd6\xcb\xa4\x2e\xbb\xea\x16\x2e\x72\x61\ \xcc\x79\x36\x28\xaa\x4b\xb1\xd8\x53\x29\x52\x0b\xae\x77\x49\x5a\ \xb0\x73\x91\xf7\x8f\xa7\xd2\xa4\xb7\xbe\x99\x31\x76\x9f\xab\x65\ \x3d\x78\x75\xa5\xdf\xa4\x41\x95\x1d\x4d\x32\x02\xa0\xbd\x15\x09\ \x4a\x14\x09\x24\x2f\x25\x20\xe0\x81\xc1\x23\xe6\x9c\x74\xbe\x8f\ \x9f\x6f\xd6\x73\xf5\x5d\xda\xfa\x8b\x94\xe9\xb0\x9b\x86\xb4\x35\ \x0f\xec\xed\x21\x2d\xa8\xa9\x25\x23\x7a\x8f\xa9\xce\x49\xe4\xfa\ \x0e\x28\x55\x64\xb9\x93\xec\xf2\x73\x4d\xae\x7e\x5a\xfe\x08\xdd\ \xda\xf5\xa8\xe7\xeb\xf9\x9a\x5f\x4e\x3d\x6f\x88\x6d\xd0\x1b\x97\ \x21\xf9\xac\x2d\xd0\xb7\x1c\x52\x82\x1b\x09\x4a\xd3\x84\xe1\x19\ \x2a\xc9\x3c\xe0\x0f\x5a\x43\xa7\xb5\xf4\xeb\xdc\xfe\x9f\x29\xa8\ \x8c\x47\x63\x50\xc7\xb8\x99\xcd\x9c\xa9\x4d\xbb\x1b\x6a\x70\x85\ \x7b\x6f\xdd\xe8\x72\x31\x52\xdd\x4f\xa2\xe6\x3f\xa9\xdf\xd4\xfa\ \x7a\xf6\x2d\x57\x09\x10\x93\x0e\x50\x76\x20\x7d\xa7\x10\x95\x15\ \x21\x61\x3b\x92\x43\x89\xdc\x70\x72\x46\x0f\x20\xd3\x2b\x1d\x38\ \x6e\x2c\x2d\x2a\xd5\x82\xee\xa8\x73\x34\xc8\x79\x0c\x3d\x26\x3f\ \xda\x12\xfa\x5f\x00\x3d\xe2\x24\x29\x1c\xa8\x8d\xd9\x04\x60\xfb\ \xf6\xa6\xf1\x1c\x95\xc5\xca\x95\x48\xc9\xaf\x5b\xaf\xa5\xc8\x6e\ \xa8\xd4\xfa\xa2\xed\x66\x65\x51\xae\x4c\x5b\x94\xcf\x50\xc5\x94\ \x16\x98\x3e\x66\x51\x20\x06\xf7\x79\x86\x7b\x79\x87\x65\x03\x8e\ \x2a\x7b\xd4\x46\xee\xd1\xba\x45\xa8\xd6\x8b\x8a\x3f\x58\x31\x66\ \x90\xe2\xe5\x21\x9d\xa0\x94\xb4\xa2\xa2\x94\xee\xf2\x92\x01\x00\ \xe4\xe0\x90\x79\xc6\x29\xad\x7d\x30\x5f\xea\x15\x5a\xe3\xea\x07\ \x0c\xc1\xa8\x93\xa8\x5b\x96\xf4\x40\xa0\x24\x85\x25\x44\x29\x01\ \x43\x72\x4a\x82\x8f\x05\x3c\x10\x3d\x32\x67\x97\xeb\x13\xf7\x9d\ \x0d\x73\xd3\xb2\x66\xb6\x89\x17\x1b\x7b\xd0\xdc\x94\x86\x30\x94\ \xa9\xc6\xca\x0a\xc3\x65\x59\xc0\xce\x76\xee\xfc\x6a\xae\x6e\x2b\ \x5e\x65\xa9\xd1\x9c\xaf\x7e\xc2\xb3\xe9\xfb\x97\x58\x88\xd3\x7a\ \x32\xc1\xfa\x8a\x24\xb7\x74\xe3\x57\x89\x93\x5c\xb7\x1d\xbe\x1a\ \xb6\xb6\xd2\x03\x48\x5a\x77\x2b\x20\xee\x59\x57\x61\xdb\x26\x94\ \xb7\xd4\x7d\x49\x70\xb5\xe9\x96\x6d\x70\x6d\x71\xaf\x17\x4b\xa4\ \xcb\x44\xb0\xf8\x5a\xd8\x65\xe6\x37\x65\xc4\xe0\x85\x29\x38\x46\ \xe0\x9c\x8c\xe7\x19\x1d\xea\x4f\xfd\x03\x95\x0e\x55\x92\xe7\x64\ \xbe\x88\x57\x5b\x6d\x9d\x36\x87\x1e\x7a\x1f\x8c\xcc\x96\x06\xd2\ \x0a\x9b\xde\x92\x14\x14\x9d\xc0\x85\x71\x92\x0e\x45\x68\xb7\xf4\ \xce\x2c\x01\xa5\x04\x7b\xbb\xaa\x36\x29\xf2\x27\xbe\xe3\xcc\x85\ \x2e\x6b\xaf\x25\x7b\xc9\x20\x80\x9e\x56\x4f\x63\xc0\x03\xe6\x92\ \xe4\xde\xe3\x23\x4a\xa4\x74\x5e\xb6\xfc\x93\x98\x48\x7d\x30\x98\ \x44\xc5\xb6\xec\x84\xb6\x90\xf2\xdb\x46\xd4\xa9\x78\xf3\x10\x32\ \x70\x09\xcf\x19\x35\xa6\x74\x20\xe2\x0a\x9b\xe1\x58\xef\x4b\x7e\ \x86\x81\x44\x66\xe2\xee\x8d\x92\x82\x92\xb3\x18\x63\x47\xda\x49\ \x79\x5c\x8f\x4a\x58\x09\x23\x68\x18\x4d\x6c\x94\xd8\x4b\xc1\x5e\ \xf5\xe0\xad\x2e\x79\xb5\x33\x46\x19\x74\x3d\x4a\x76\x8a\xda\xc8\ \xc6\x56\xae\xd5\xad\x09\x2b\x50\x03\xd2\x95\x3a\x90\x19\x29\x14\ \x99\x3e\x43\xa2\xb9\x8d\xb3\xb0\xb7\x0a\x93\xcf\x15\x1c\xd4\x72\ \xdd\x8d\x01\xe2\x81\xb9\x7b\x4e\xd1\xee\x6a\x40\xa5\x14\x93\x8f\ \x4a\x8f\xea\x16\x17\x25\xa5\x0f\x53\x5a\x32\xc9\xc6\xd1\x32\xd4\ \x77\xd5\x1f\x3d\xb5\xfd\xcf\x5d\xeb\xad\x61\x24\x39\x0e\x5c\x87\ \x91\x93\xf6\x76\x92\xa0\x86\x12\x0e\x30\x40\xf6\x3c\x12\x7d\x69\ \xb2\x2e\x9d\xd5\x16\x89\x6c\xbb\x71\xb6\x3e\xd3\x41\x61\x38\xdd\ \xc1\x27\xf1\xae\x90\xeb\x0c\x46\xb4\xe2\x5f\xbc\xc7\x6d\xb6\x64\ \x15\x7e\xd1\x40\x04\x97\x72\x47\x94\x9f\x73\x54\xcd\xf2\xfa\x8b\ \xf6\x9d\x79\xf8\x4a\x52\x64\x32\xe2\x56\xa6\xd6\xac\x2d\x24\x1f\ \x6f\x51\xf4\xae\x35\x49\xce\xed\x4d\x58\xe8\x61\x6a\xb7\x97\x24\ \x74\xd8\x6f\xd5\xf6\x69\x6e\x86\xa3\xb7\x66\x7c\xc9\x77\x21\x00\ \x27\x2b\x51\x03\x24\x77\xf4\x19\xa8\x33\xda\x6a\xf3\xe2\x61\x16\ \xa7\xce\x4e\xd0\x0f\x07\x3c\x9f\x7f\x83\x57\x25\xd5\x71\xcb\x08\ \x96\xec\xc6\x5a\x69\x61\x2f\x36\xe2\xdd\x09\xda\x48\xce\x46\x4f\ \xb1\xaa\xcf\x50\x6a\x75\x15\xed\xb6\x05\x25\x49\xdd\xbd\xee\xe3\ \x24\x11\x91\xf8\x13\x8f\xad\x36\x8c\x1a\xa7\x9a\xfb\xaf\x32\xcb\ \x13\x2a\xcd\x45\xc7\x62\x2b\x1d\x82\xe4\xb6\x62\xaf\x09\x53\x8e\ \x25\x18\xcf\x6c\x9c\x72\x6b\xc9\x51\x9c\x6a\x43\x8c\xe3\x1b\x16\ \x5b\x51\xfa\x1c\x1a\x5d\xa7\x19\x13\x2f\x91\xc3\x88\x52\x9b\x6c\ \x97\x5d\x24\x9c\xe0\x73\xc9\xf9\x38\x1f\x8d\x6f\xbd\x36\x7c\x57\ \x24\x38\x70\x5c\x3c\x24\x7a\xe3\xd6\x9b\x14\xdb\x7d\xc1\x27\x1b\ \xd8\xd1\x79\x94\xe5\xde\xee\xf4\xa7\x37\x3b\x35\xd7\x50\x80\xd3\ \x0d\x65\x2a\x21\x20\x71\xf9\x70\x3d\x6b\xa1\x7a\x0f\x0d\x33\xfa\ \x7c\xea\x5b\x6b\xc5\xd8\xa2\x36\x77\x25\xbc\xe4\x1e\x3f\x78\x12\ \x7f\x0c\x7b\x57\x3e\xdb\x2e\x26\xdd\x35\xb9\x6d\x36\x91\x22\x30\ \x43\xad\xa8\x7e\xea\x92\xa0\xa1\xfc\x06\x0f\xd6\xba\x17\xf4\x6a\ \x92\xe3\xa8\xbb\xac\xb5\xe0\x66\x7f\x8c\x1b\x40\xc6\xc4\xb8\x37\ \x0e\x3d\xbe\x7b\x57\x3f\x1f\xd6\xa7\x67\xca\xdf\x63\xa7\xd1\xed\ \xc6\x6e\x48\x64\xd7\xda\x6a\x4c\x29\x49\x7a\x3a\xd1\x94\x28\x2d\ \xa7\x14\x33\x90\x32\x70\x7d\xe9\xab\x4f\xea\x29\x2c\xf8\x5e\x02\ \x56\x42\x4a\x81\x69\x4b\xda\x52\xac\x85\x10\x93\xdf\x07\x9f\xc3\ \x8a\xe8\xad\x51\x64\x8b\x26\x23\x8f\xa5\x96\xdf\x52\x0a\x94\xe3\ \x09\x1e\x60\x0f\xef\xa7\xfc\x40\xf6\xe2\xa8\x6d\x71\xa2\x57\x68\ \x96\x65\xb0\xe8\x2a\x4f\x29\x52\x46\x4a\xd2\x71\xc0\xe7\xdf\xf8\ \xd7\x26\x2a\xdd\x59\x7c\x0f\x41\x0a\xdc\x4e\xb2\xdf\x99\x37\xb4\ \x6b\x95\x18\xf1\xbc\x44\xab\x85\x79\x51\x8c\xf6\x3d\xf3\xe9\xd8\ \x60\x1e\x6a\x4d\xf6\xe6\xe4\x23\x28\x5b\x7b\xd9\xcb\x89\xda\xb3\ \x95\x1e\x0a\x88\x3d\xf3\xe9\xcf\x07\x35\x45\xdb\x11\x20\x90\x84\ \x2c\xa1\xe2\x00\x2a\x74\x14\xe0\x1e\x09\xc7\xe1\x52\x07\x5d\x99\ \x0d\xf8\xbb\x9b\x12\x1b\x64\xec\x58\x2b\xf3\x2c\x77\xf4\xcf\xcd\ \x2e\x49\xa7\x64\xc9\x96\x1e\x13\xd5\x68\x58\xcc\x5d\x1a\x64\xb8\ \x43\x8b\x69\xc9\x18\x29\x52\x80\x1e\x1a\x14\x48\xc7\xc9\x24\x91\ \xf9\x54\xa6\xd5\xac\x5a\x8c\xda\x1d\x79\xd3\x15\xc4\xe5\x05\xa7\ \x10\x40\x47\xa7\x97\x9f\x31\xc2\x48\x38\xf5\xcd\x52\xd3\xae\x4a\ \x5a\x54\x63\x89\x0c\xa9\x68\x40\x6e\x3a\x8e\xd5\x67\x83\x92\xa3\ \xfb\xbd\xb1\xeb\x5b\x67\x5c\x51\x28\xc5\x6a\x6a\x32\xe4\x70\x54\ \xd2\x37\xa9\x60\x7a\x11\x8c\xf3\xdf\x9f\xad\x5a\x15\x25\x11\x33\ \xc2\x46\x45\xff\x00\x6d\xd5\x70\xd2\x43\x89\x7e\x13\x8d\xb8\x42\ \x96\x19\x70\x2b\x7a\x49\xc0\x27\xd8\xf7\xe7\xe2\xa4\x08\xba\x25\ \x4e\x36\x63\xbe\xd3\xad\x28\x00\xbc\xab\x9e\xd9\x07\x3e\xbc\x1e\ \x47\xc5\x72\xe3\xd6\xc8\xd2\xda\x53\xb1\x24\x4f\x4b\xc5\x64\x2d\ \xb2\x36\xec\x09\xe0\xa9\x40\x1c\x00\x33\x81\x8f\x8a\x77\xb6\xc1\ \xbe\x90\xd3\xd1\xb5\x1c\xd2\xca\x52\xa0\x8c\x34\x55\xb4\xa5\x38\ \x4e\x01\xf9\xfe\x74\xe8\xe2\xb2\xab\x31\x32\xe8\xf4\xf5\x4c\xe9\ \x28\xf7\x58\xaa\x52\x92\x14\xe2\xd0\xda\x4a\x4a\x89\x00\x13\x9e\ \xff\x00\xe1\x5a\xdf\xbd\x41\x8a\xa4\x93\x21\xa0\x51\xf7\xdd\x1c\ \x63\x23\x03\xe0\xf2\x45\x73\xab\x82\xf8\xd3\x0b\x73\xfa\x45\x21\ \x87\x56\x43\xcd\xb4\xf6\x08\x07\xb7\x38\xf8\x26\x9a\x2e\x97\x3d\ \x45\x21\xf6\x61\xa2\x42\x12\x8c\x8f\x0d\xe5\x76\x51\xc1\x21\x58\ \xec\x14\x71\x9c\x55\x96\x31\xb2\x1f\x47\x77\x96\xd6\xaf\xd6\xb1\ \xe6\xbf\x25\xa8\xcf\x0f\xf6\x56\x9b\x59\xdc\x78\xde\x4a\xbb\x9f\ \x73\xb4\xfe\x75\x5e\xea\x7d\x69\x2e\xe5\x30\xc1\xb7\x28\xbe\x96\ \xf2\x90\xa3\x9c\x01\xc9\x00\xfb\x60\x54\x30\x45\xbb\xcb\xb9\xa6\ \x2a\xa5\x89\x13\x23\xb1\x92\xb6\xd5\x93\xb9\x47\xd4\x01\x8e\x32\ \xaf\xce\x9c\x2d\xf6\x77\x23\x3c\xa9\x2e\xc9\x58\x65\xbc\x92\x90\ \x08\x71\x47\x27\x72\x56\x47\xd4\xd2\x67\x55\x6e\xd9\xa6\x9e\x15\ \x2e\x42\xb8\x32\x4c\x56\x1a\x4b\x1b\x5d\x90\x37\x07\x49\x18\xc7\ \x97\x95\x13\xd8\x73\xc6\x7d\x78\xe2\xbc\x76\xd6\x59\xb5\xc9\xbb\ \x5c\x14\xb7\x27\x86\x1c\x0e\x29\x49\xc2\x41\x50\xc6\x11\xfd\xd0\ \x14\x7e\xb9\xcf\x14\xe9\x6d\xb6\x26\x42\xb6\x32\xd8\x6e\x18\xfb\ \xe9\x56\x78\x57\x73\xeb\x82\x72\x7b\x7c\xd2\xfd\x7c\xc3\xcd\xe9\ \x39\xeb\x48\x51\x1f\x65\x51\x09\x3d\xd2\x00\x27\x15\x85\xd4\xbc\ \x92\x5c\xcd\x71\xb4\x59\xca\x57\x28\xc2\x3d\xc1\x6c\xa9\x25\x08\ \x49\xdd\x8f\x5c\x11\x9f\xe5\x4e\x5a\x85\x22\x38\x53\x0d\xa9\x1e\ \x19\x0d\x29\x01\xb3\x91\x80\xda\x7d\x7e\x09\x57\xe3\x9a\x75\xd7\ \x76\x97\x94\xd4\x0b\xd3\x0d\x3c\xa8\xd7\x16\xff\x00\xd9\xd6\xa3\ \x92\xa2\x00\xc8\x23\xd8\x64\x01\xf4\xa6\x3f\x1c\xc9\xb9\xb4\xa5\ \x90\x12\x97\x39\x18\xfb\xa9\xe1\x3f\xc8\x7f\x1a\xf5\x94\xaa\xaa\ \x90\x52\x3c\x7d\x5a\x5c\x3a\x92\x87\x6b\xd3\xc1\x9e\xb4\x96\x9a\ \x69\x98\x9b\x86\xf7\x88\x52\xc8\x3f\x77\x9e\x07\xe3\xdf\xf2\xa7\ \x54\x58\xe4\x7d\x91\x99\x68\x43\xfb\x06\xe2\xe0\x49\x07\x19\xc1\ \x03\xe0\xf6\xf8\xac\x64\x5a\x24\x38\x13\x28\x20\x06\x5d\xfd\xb3\ \x8b\x04\x05\x47\x4e\x70\x33\xed\xc0\xfe\x55\x63\x40\xb7\xc9\x94\ \xc4\x59\x6c\xbe\xe3\x3b\x19\x52\x92\x3b\xa5\x44\x0c\x10\xaf\x62\ \x40\x07\x3d\xb9\xac\xb8\x8c\x46\x44\x9c\x4d\xf8\x4c\x2a\x93\x6a\ \xa2\xdb\x62\x2f\xa3\x58\x9a\x99\xc0\xfe\xaf\x6a\x68\x50\xe1\x52\ \xde\xe1\x1c\xf7\x1b\x54\x39\xfc\xeb\xa8\x7a\x52\xcb\xcf\x36\x95\ \x3a\xda\x42\xc6\x32\x12\x30\x07\xd3\xe2\xa9\x58\xaf\x3a\x99\x68\ \x4c\x68\xca\x8c\x87\x0e\xe5\xa5\xb7\x02\xd2\xa3\xea\x7d\x2b\xa1\ \x3a\x3e\x85\x38\xdb\x41\x28\xca\x4f\x73\x8a\xdf\xd1\x0b\x8b\x2e\ \x26\xc7\x9f\xe9\x97\xfb\xd9\x2d\xb1\x6b\xd8\x42\xb6\x24\x67\x18\ \xa7\x83\x83\x84\xd2\x66\xa0\xa9\xa4\x78\x8c\x8f\x4e\xd5\xb0\x3b\ \x95\x03\x8e\x41\x19\xae\xd4\xda\x9b\xba\x39\xb1\x4e\x0a\xcc\x90\ \xb0\x90\x96\x52\x07\xb5\x14\x32\xa0\xa6\x52\xae\xdc\x51\x5c\xb7\ \xb9\xd4\x5b\x10\x8e\x95\x5d\xa0\xb9\xa2\xad\xd1\x0b\x98\x5a\x43\ \x80\x82\x7f\xe3\x15\x4e\x17\xa8\x06\x3b\xa5\xf6\x47\x90\xf7\xc5\ \x57\x9d\x2a\xb7\x3f\x2a\xcf\x6f\x59\x2a\x42\x32\xbc\x1c\xff\x00\ \x7d\x55\x72\xa6\x3a\x4c\x50\xd2\xc8\x56\x05\x6f\x93\x54\x1a\x6b\ \x99\xcd\xa2\x9e\x22\x9d\x9f\x22\x18\x95\x6e\x41\x23\x3f\x41\xe9\ \x52\x6d\x3a\x13\xf6\x00\x78\xfa\xe2\x9a\x2e\xf6\xb7\x23\xac\xba\ \xc8\xca\x09\xe4\x0f\x4a\x51\xa6\x66\x24\x66\x3a\xd4\x02\xb3\xc0\ \x34\xca\xed\x54\xa5\x78\x95\xa0\x9d\x3a\xb6\x91\x9c\xad\x5b\xa7\ \xda\xb3\x37\x75\x6e\xeb\x0d\xc8\x4e\x3b\xe0\x21\xe4\xb8\x36\x29\ \xcd\xfe\x1e\xc0\x7d\xf7\x8d\xb8\xf7\xa6\x87\xb5\xa5\xb3\xf5\xc2\ \x6d\x2a\xbd\x5b\x9b\xb8\xa8\x80\x98\x8a\x92\x80\xe9\x27\xb0\xdb\ \x9c\xe4\xf7\xc5\x54\xe2\x2b\xad\xf5\x81\xfd\x04\x50\xa1\x06\x25\ \xf5\xcd\x48\x36\x8e\x03\x2a\x6c\x29\x09\x1e\x98\x12\x1c\x27\xfe\ \xaf\xd2\x99\xe7\x04\x27\xa6\xd7\xdd\x26\xe2\x48\xd5\xf2\x35\x03\ \x8e\x30\xc1\x6c\xf8\xee\xba\xa9\x49\x52\x24\x24\x77\x28\x08\xc1\ \xde\x38\x00\x11\xf1\x4a\xa7\x08\xc6\x37\xb5\xc5\xd5\xc5\x54\x6d\ \xad\xac\x5f\x08\xd5\xf0\x18\x76\xe2\x87\xa7\xc7\x1f\xaa\xd0\x17\ \x3c\x6f\x19\x8e\x92\x8d\xe0\xaf\xdb\xcb\xcf\xd2\x9c\x7f\xa6\x1a\ \x65\x28\x63\xc7\xbe\x5b\xd9\x2f\xa5\x85\xb2\x97\x1f\x4a\x4b\x81\ \xe2\x52\xd6\xd0\x4f\x3b\x8a\x55\x8c\x77\xda\x7d\xaa\x89\xd4\xf3\ \x23\xc1\xbe\x75\x6e\xdf\x2d\x65\xa9\x97\x8b\x6b\x22\xda\xc6\xd2\ \x57\x2f\xfd\x88\xb5\xfb\x30\x3e\xf6\x17\xc1\xc7\x6e\xe7\x8a\x71\ \xe9\xcb\x51\xff\x00\xf6\xb3\x61\x75\xf8\xec\xbc\x5b\xd0\x50\x94\ \xd9\x5a\x02\x8a\x09\x79\x5c\x8f\x63\xf3\xf3\x51\x56\x9c\x65\xb2\ \xb3\x2d\x4b\x17\x35\x2b\x32\xed\x8b\xa9\x34\xf4\xbb\xc3\x96\x68\ \x97\xcb\x6c\x8b\x8b\x7b\x82\xe2\xb7\x25\x0a\x75\x25\x3f\x78\x14\ \x83\x9c\x8f\x51\xe9\xc6\x7b\xd3\x42\xb5\x35\x8e\x43\xd3\xbf\x52\ \xde\x6d\xb7\x09\x11\x1b\x52\xdd\x66\x3c\x94\x38\xa4\x63\x23\x90\ \x93\x9c\x64\x11\xf5\x04\x77\x15\x58\xd9\xa4\xcd\xb7\x0b\xae\x87\ \xd0\x97\xb8\xda\x92\xcf\x71\xb5\x5c\xa4\xc3\x5b\x29\x05\xfb\x3c\ \x95\x02\xa4\x21\xc7\x13\xc2\x82\xd6\xe1\xdb\xbb\x0b\x1f\x4e\xf8\ \xe8\x98\x50\x27\xc0\xd3\xb3\xc6\xac\xb7\xb9\x3e\xcf\x60\x76\x22\ \xad\x0c\x41\x0c\x48\x65\x0a\x69\x01\x4d\xbf\x95\x95\x02\x85\x24\ \x77\x03\x27\x27\xd6\xb3\x53\x76\x95\x87\x4e\xbc\xa4\xb4\x5e\xbe\ \xa3\xcc\x2e\xab\x2d\x76\x4d\x18\xe0\x66\xd7\x1e\xed\xaa\x12\xa7\ \x31\x29\xf5\x25\x88\xc8\x4a\x54\x72\x70\x0a\x8e\x48\x09\x48\xe3\ \x93\x56\xba\xee\x51\x63\xca\x83\x6f\x9d\x2a\x3b\x17\x09\xa9\x51\ \x65\x8d\xfc\xba\xa4\x24\x15\xec\xcf\x24\x00\x73\xf4\xaa\x27\xa7\ \x83\x0d\x74\x1f\x1f\xfc\x0b\x8f\xfe\x11\x75\x3d\xeb\xc3\xe8\xb2\ \xda\x6c\x5a\xcd\x41\x41\x3a\x7e\xee\xcb\xef\xa9\x23\x24\x47\x74\ \x16\x1d\x18\xfa\x38\x0f\xe1\x55\x93\xcc\xcb\x50\xa9\x28\xd3\x72\ \x6f\x6b\x7f\x09\xbf\xe4\x94\x48\xd5\xba\x7d\x11\xae\x52\x1b\xbc\ \x43\x53\x56\xb7\x14\xd4\xf5\x87\x46\x23\x2d\x23\xcc\x95\x9f\xdd\ \x23\xe6\xa1\xf2\xfa\x99\x6d\x85\x17\x55\x5c\xa7\x48\x84\x60\x58\ \x56\x1b\x49\x8b\x31\x2e\xba\xf2\xf6\x12\x5b\x52\x38\xd8\xbd\xe9\ \x52\x40\x27\x9c\x55\x55\x1e\xdb\x26\x15\xca\xd7\xa5\xe4\x21\x41\ \xcd\x76\xcc\x29\xd3\x40\x49\x23\xc5\x43\xeb\x7e\x60\xcf\xcb\x6a\ \x48\x24\xfb\x53\xb6\xb3\x6d\xc9\x07\xae\x2c\xc7\x69\xc7\x5c\x54\ \x78\x1b\x50\x84\x95\x13\x88\x89\xf4\x1f\x14\xe5\x1c\xab\x41\x13\ \xc4\xce\x4a\xfb\x7f\x4d\xfd\x89\xed\xc7\xa9\xf6\xb8\x97\xed\x2e\ \xd3\x33\xe0\x1b\x4d\xe5\xb9\x6a\x7a\x63\xaf\x84\x86\x54\xca\x1b\ \x21\x20\xf6\xc9\x2b\xc6\x3e\x98\xef\x56\x1d\x8a\xed\x6f\xbd\x5b\ \x5a\xb8\x5a\xe6\xc7\x9b\x15\xd1\x94\x3c\xc3\x81\x68\x57\xd0\x8e\ \x2a\x9f\x9b\x3a\xd5\x79\xea\x67\x4a\xe6\x5b\xe5\x45\x9e\xc2\x62\ \x5c\xca\x5d\x69\x61\x69\x0a\x11\xd9\xec\x47\xa8\xcf\xe1\x4f\xfd\ \x01\x21\xb8\x3a\xc5\x23\xca\xdb\x7a\xba\xe6\x94\xa4\x76\x48\xf1\ \x07\x03\xd8\x55\x26\xae\x87\x50\xab\x2e\x26\x56\xee\xbf\x08\x97\ \x3f\xaa\x74\xd3\xd7\xb1\x64\x66\xff\x00\x6b\x72\xe6\x14\xa4\x18\ \x89\x94\x82\xe8\x5a\x7e\xf2\x76\xe7\x3b\x87\x72\x3b\x81\x4e\x49\ \xc9\x38\x03\x9a\xa0\x35\x56\xa6\xba\x6a\x8b\xc5\x8f\xed\x72\xd8\ \x8c\xf4\x2d\x71\x15\xa3\x67\x66\x29\xf1\x62\x32\x99\x3e\x1a\x5e\ \x79\x79\x24\x6f\xdc\x39\xc2\x52\x77\x80\x33\xcd\x74\x53\x0d\x06\ \xc7\xcd\x17\xca\x86\x52\x9f\x16\x4f\xb0\xf1\x09\x0c\xb5\x9c\x64\ \xfa\xd2\x67\x25\x2d\x60\x80\x31\x4b\x8e\x08\xe6\x91\x3c\xc0\x56\ \x54\x38\xaa\xc1\xa6\xf5\x34\x4d\x34\xb4\x13\x00\x09\xc9\xf5\xa4\ \xb3\x63\x64\x9e\x29\x72\x12\x94\xf9\x48\xed\x5b\x5f\x40\x2d\x53\ \xf3\xe5\x62\x63\x0b\x94\x8f\x56\x2d\xb6\x93\x6c\x92\xfd\xed\x31\ \xbe\xc0\xda\x0a\x9e\x2f\xfd\xc0\x9f\x9a\xe2\xad\x53\x72\xd3\x8d\ \xea\xa7\x13\xa6\x5c\x71\xa8\x2a\x59\xdc\x1d\x3f\xb3\x3c\xfe\xee\ \x41\x56\x09\xf7\xae\xfa\xea\xbe\x93\x87\xaa\xb4\xec\xab\x3c\xf2\ \xf8\x8c\xf8\x1b\xfc\x25\xed\x51\xda\x42\x87\x3e\xd9\x1d\xaa\x86\ \x73\xa4\x9a\x62\xc6\xb5\x18\x36\x64\x2d\x7d\xbc\x49\x07\xc4\x3f\ \xc7\x8a\xc5\x89\x4e\x73\xd2\x2d\xdf\xe4\x5a\x85\x55\x87\x93\x95\ \xce\x74\xbb\x5a\xda\x96\xe2\x1d\xb7\x87\xdf\x2b\x38\x4b\x69\x41\ \x3b\xd5\xec\x90\x29\xb6\x6e\x92\xd4\xc2\x40\x6d\xeb\x1d\xc1\xa5\ \x67\x01\x0e\x30\xa4\x63\xfe\xd7\x6a\xbf\xf5\x45\x9e\x2c\x7b\x6a\ \xe3\xcb\x65\xb6\xa3\x23\x2a\x05\x23\x69\x6c\x8f\xde\x49\x1d\x8d\ \x55\x77\xcd\x7a\xa6\x9e\x31\xe1\xc8\x5d\xdd\x49\x4e\x13\x22\x40\ \x52\x55\xff\x00\x58\x67\xcd\xf5\xe2\x95\x1a\x55\x29\x3c\xb2\x36\ \x54\xc5\xac\x46\xb4\xe2\x37\x47\xb5\x45\xd3\xd6\xd2\x97\xe5\x37\ \xf6\xd7\x9b\x0b\x96\x73\xc3\x69\xdc\x30\x81\xef\xdb\x27\xdf\x03\ \x1e\xf4\xc7\x72\x90\xdc\xe9\xec\xbe\xb6\x9c\x6a\xda\x95\x12\x95\ \xa8\x60\xad\x23\xef\x63\xdc\xfc\x57\xaf\xb4\xe5\xd1\xe7\xee\x17\ \x0b\x82\x5d\x79\x78\x27\x68\x2b\xe7\xb0\x1c\x71\xf0\x00\xa7\xa4\ \x68\x89\x8d\x36\xdc\x8b\xf3\xff\x00\x65\x8c\x96\xc2\x92\xd1\x58\ \xde\x12\x7b\x25\x5e\x89\x27\x9e\x3d\x2a\x54\xd4\x6f\x14\xf5\x7e\ \xb4\x23\x87\xc3\xb4\xe6\x44\x6e\x46\x19\x95\x21\x70\xbc\x64\xc5\ \x71\xc5\x16\x43\xbc\xa8\x23\x77\x1b\x8f\xa9\xc6\x33\xf3\x5d\x09\ \xd0\x2b\xdc\x49\xf2\x61\x3b\x1e\x57\x8b\x30\xc2\x6e\x3d\xc1\x95\ \x0c\x29\x0a\x6b\xca\x83\xf2\x0a\x7d\x7d\xc5\x52\x9a\xe2\x74\x59\ \x0a\x8c\x21\xb6\xcb\x48\x65\x3e\x1b\x69\x6d\x20\x00\x90\x06\x3e\ \xbf\x5a\x9b\xfe\x8a\x8f\x1f\xe9\xd5\xc1\xa5\x94\x80\xe4\x1d\xd9\ \x50\xec\x43\x89\xc7\xf3\xc7\xe3\x48\xc6\xd3\x5c\x2c\xcf\x91\xab\ \x03\x51\xba\xa9\x2e\x67\x5b\x82\xd2\x23\x07\x83\x45\x6b\xc0\x1e\ \x51\xdb\x9e\xe7\xd7\x1c\x53\x16\xa4\xb6\x34\x82\x64\xc6\x65\xa0\ \xc1\x4f\x88\xb4\x21\xb0\xa0\xbc\x9e\x4a\x49\xec\x3d\xc0\xf7\xf8\ \xa9\x1c\x21\xb1\xa0\xa0\x82\x49\x47\xe3\x5a\xe5\xc6\x5b\xc9\x75\ \xb4\x3a\x5b\x5f\x2a\x6f\x27\x09\xc9\xee\x0f\xc1\x1f\x85\x72\x2d\ \x74\x75\xe3\x2c\xac\xae\x11\x65\x87\x71\x43\x49\x7d\xb7\x5d\x70\ \xb7\xb9\x58\x4e\x32\x9c\x9f\x5c\x76\xc1\x3f\x95\x7b\x74\xd0\x59\ \x82\x96\xd8\x91\xfb\x2d\xa0\x05\x31\xc9\x4e\x47\xa8\x1d\xf3\xeb\ \x8a\x9a\x16\x03\x72\xd6\x10\xde\xf6\x52\x72\xf2\x14\x13\x96\xbd\ \xf0\x3d\x52\x4e\x2a\x47\x62\x4c\x2f\xba\xd2\x52\xb6\xf0\x49\xcf\ \x73\xee\x3e\x71\x55\x85\x24\xf4\x63\x9e\x2a\x70\xd5\x14\x5c\xed\ \x0b\x70\x8c\x94\xc9\x6d\xbf\x15\x0c\x84\xa0\x06\x89\x19\x23\xe3\ \x9c\x11\xf9\xd2\x17\x2d\x2e\x43\x49\x5c\xb6\x65\x3e\xea\x94\x3c\ \x13\x90\x48\x1e\xb9\x1e\x9d\xbd\x79\xae\x9e\x30\xa3\xc8\x28\x25\ \x2d\x00\x46\x42\x47\xef\x1f\x9f\xf5\x9a\xd1\x3f\x48\xd9\x26\xc7\ \x5b\x1f\x62\x43\x24\x1c\xe1\xb2\x40\xe7\xbe\x47\xaf\xad\x12\xc2\ \x4b\x78\xb2\xd0\xe9\x34\xbd\xf4\x73\x73\xca\x92\x72\x11\x18\x04\ \x25\xc1\xb5\x41\x24\xee\x18\x39\xc8\xf5\x39\xe3\x3d\xab\x6c\x49\ \x57\x24\x20\xa8\xdb\x1f\x4b\x9e\x38\xf0\xc0\x5f\x07\x00\x8e\x31\ \xce\x06\x7b\x9f\x8c\x55\xd9\x75\xd1\x01\xb6\xc7\xd8\x5c\xf0\xb0\ \x0e\x06\x3f\x21\xff\x00\x95\x47\x67\x69\xc5\x31\xbd\x4b\x8e\x94\ \x85\x61\x1b\x92\x0e\x4f\x3d\xbe\x9d\xeb\x34\xe9\xd4\x86\xe8\xd3\ \x0c\x55\x29\xad\x0a\xc5\xc8\xf7\xa7\x5a\xf0\x5e\x0c\x23\x78\x2b\ \x74\x00\x4a\x46\x14\x32\x33\xc6\x38\xf6\x35\x82\xf4\xf3\x4e\xc9\ \xcc\x89\x2e\xba\xa2\xb5\x06\xb7\xab\x6a\x06\x4e\x71\xc7\x07\x80\ \x07\xf2\xa9\xd4\xbb\x6a\xd8\x65\x69\x4c\x72\xfa\x57\x94\xa8\x2d\ \x38\x00\xe7\x24\xa8\xfb\x7d\x3e\x29\x13\xd1\xdb\x53\x4b\x4c\x72\ \x92\x55\x80\xa2\x3d\xbf\xf2\xf7\xa4\x39\x49\x6c\x68\x55\x13\xd8\ \x8e\x38\xcb\x71\x5f\xfb\x34\x76\x5a\x68\x38\x47\x88\xa6\xbc\xa5\ \x2a\xce\x70\x7f\xb5\x93\xeb\x59\xb1\x6e\x2a\x7c\x3b\x32\x3b\xeb\ \xdd\x92\x86\x5b\x40\x52\xb2\x3f\x78\x9c\xf1\x9c\x7a\xd4\x91\x98\ \x28\x2c\x78\x88\xda\xf3\xe5\x01\x28\x0d\xa7\xcb\x91\xea\x4f\x6a\ \x72\xb5\xdb\x84\x73\x94\x21\xb4\x12\x09\xc2\x07\xaf\xa7\x34\xbd\ \x59\x57\x51\x24\x37\x59\xed\xaa\x43\x0a\x43\x81\xad\xff\x00\xf0\ \x4d\x04\x7d\xc2\x7d\x33\xea\x7e\x6b\xcd\x73\x6b\x2d\x68\x8b\xb3\ \xce\x20\x94\xb7\x11\xce\x0f\xb6\xde\xd5\x34\xb4\x5b\x5f\x59\x0e\ \xed\x04\x81\xe5\xdc\x30\x09\xa4\xdd\x4e\x65\x0a\xd2\x53\xa1\xa9\ \x29\x52\x5e\x65\x48\x71\x25\x45\x20\xa4\xf0\x46\x47\x23\x8f\x6a\ \x74\x68\xda\x39\x99\x92\x55\xfa\xe9\x23\x92\x74\x8d\x95\xfd\x4b\ \xa3\x66\xc0\x45\xdd\xc6\xee\x16\xc4\x87\xe0\x42\x75\x25\x41\xe4\ \x14\xf9\x83\x67\xba\x54\x9c\x13\xec\x47\xd2\xa1\x53\x63\x48\x83\ \x7c\x75\x2f\xb4\xb6\x9e\x52\xb2\xe6\xe4\xf6\xcf\xde\x18\xf9\x39\ \xa9\x5c\xd3\x2f\x4a\x6b\x3b\xad\xbe\x13\xeb\x71\xfb\x5c\xa5\x16\ \x55\x9f\x32\xd2\x85\x03\xb4\xe3\xdd\x2a\x20\xfd\x4d\x49\xe6\xdb\ \xed\x57\xab\x95\xc6\x59\x77\x88\xef\x86\xe3\x15\x73\xfb\x32\xe6\ \x52\x09\xf5\x21\x27\xf9\x57\x5e\x15\xa5\x4e\xa5\xd2\xbc\x65\xaa\ \xf8\xd8\xc8\xe8\xd3\xab\x04\xdb\xb3\x8f\x6f\xc8\xd1\xa4\x5b\x6c\ \x37\x21\x6d\x24\xa1\x68\x1b\x5d\x4a\x53\x95\x14\x9f\x6c\xf0\xa0\ \x06\x46\x3d\xbd\xea\x40\xe3\x0b\x7e\x32\x98\x88\xfa\x6d\xef\x6c\ \xc3\x5b\x1b\xdc\xd8\xe3\x70\xcf\xf7\x08\x27\x9f\x4f\x6a\x6b\x5b\ \x4c\xda\xe2\x96\x5a\x01\x32\x49\x21\x2b\xcf\x74\xf7\x19\x1e\xa3\ \xe6\xb1\x8b\x76\x99\x16\x64\x55\xb8\xe7\xf5\x45\x45\x0b\xf4\x71\ \x0a\x18\x29\x27\xd8\x91\xd8\xfa\xd2\x2b\x46\x51\x86\x6b\x6a\xc7\ \xd3\x9a\xab\x5a\xd0\x92\xb2\xfb\x09\x51\x2a\x54\x2d\x42\x88\x57\ \x86\x19\x86\xe9\x50\x27\x24\xa5\x2b\x57\xb2\x55\xdb\x24\x72\x0f\ \x63\x5d\x5d\xd1\x75\xb1\xf6\x26\xc2\x46\xde\xdd\xfb\x8a\xe6\x6d\ \x40\xeb\x1a\x96\x04\x78\x56\xe4\xb6\x5c\x69\xc0\xec\x17\x15\xc9\ \x69\x59\xf3\x32\xaf\x74\xe3\x91\x9f\x6c\x57\x4b\x74\xcd\xa6\xe2\ \xb4\xca\x77\x02\x43\x69\x07\x1e\xbc\x72\x6b\xb3\xd1\x52\x94\x5a\ \x8c\x79\x9e\x53\xa6\x24\x9d\x65\x3b\x59\xf3\x2e\xf8\x2b\x42\x90\ \x12\x71\x58\x4b\x80\x87\x3c\xed\x1c\x2a\x91\xdb\xc0\x2c\x83\x9e\ \x3b\xd3\x8c\x10\xb2\x4a\xca\x8e\xdf\x40\x6b\xab\x2b\xc1\xb6\x99\ \x95\x35\x35\x66\x8d\x50\x9d\x71\x9f\xd8\x3c\x9c\x7b\x1a\x29\xc1\ \x48\x42\x8f\x99\x20\xd1\x49\x94\xd4\x9d\xc6\xc6\x0e\x2a\xd7\x2b\ \xce\x9d\xa4\x33\xa2\xed\xea\x6d\x1f\x77\xc4\xc7\xff\x00\xb8\xaa\ \x96\x89\xef\x1e\x12\x85\x7e\x55\x5c\xe8\x3b\x93\xcb\xd2\x70\x62\ \x45\x47\x3f\xb4\xca\x87\x3d\xdc\x55\x4d\xe0\x25\xc6\x98\xcb\xcb\ \x0a\x56\x3b\x57\x42\x54\xd6\x54\xe4\x73\x28\xd4\x76\x4a\x23\x92\ \x67\x29\x6a\x0d\x38\x80\x73\xf8\xd6\xa9\x56\x64\x38\xe0\x90\xc1\ \xf0\x96\x39\xc0\xf5\xa2\x13\x8c\xa5\x45\xe7\x56\x94\x81\xc7\x7a\ \x71\x8f\x2e\x3c\x80\x7c\x27\x01\xf6\xc1\xac\xd2\x72\xa6\xef\x04\ \x6b\x8a\x8d\x45\x69\xb2\x0a\xab\x24\x0b\x7e\xa1\x7e\x60\x92\xe4\ \x9b\xcc\xa4\x04\x9f\xb4\xcb\x2e\x3a\x96\x81\x52\x82\x10\x92\x7c\ \xa8\xc9\x27\x81\xe9\xcf\x6a\x79\x8d\x12\x63\xb8\x0a\x46\xc1\xea\ \x4d\x73\xfe\x9c\x76\xf5\x65\xd4\xbd\x5b\xd7\x0f\xfe\xa4\x9d\x76\ \xb1\x3e\xa0\xdb\xef\x40\xdc\xe2\x5d\xf3\x20\x16\xd4\x55\x96\xd1\ \xb3\x72\x4a\x47\x70\x47\x3c\x54\xf6\xfb\xd5\x1d\x4d\x61\xd0\x16\ \x4d\x43\x74\x6e\xc0\xc4\x8d\x51\x2a\x38\xb5\xa4\xf8\x9e\x04\x08\ \xee\xa0\x2b\xc4\x90\xa2\x41\x59\x4a\x4a\x49\xc6\xd1\xc9\xf6\xa9\ \x58\x96\xa3\x64\x8c\x71\xe1\xbb\xca\x57\x5f\xdd\x8b\x46\x5d\xb8\ \x33\x18\x2d\x3c\xac\x77\x34\x8b\xef\x24\x28\x0a\xaa\xe1\xf5\xc5\ \xd6\x34\x86\xb6\x7e\xe6\xab\x5d\xe6\x5e\x9d\x5b\x29\x8b\x2a\xdb\ \xb9\x11\xe7\xa5\xe3\xb5\x07\x04\xab\x6e\xd3\xf7\xb9\xfa\x76\xad\ \x7d\x32\xea\x5c\xfb\xce\xb8\xfe\x8b\x5c\xa7\xd8\xae\xa2\x45\xb8\ \x4e\x66\x55\xa4\x29\x28\x65\x7b\xb0\xb6\x16\x14\xa5\x64\x81\x93\ \x9c\xfb\x67\xbf\x17\xa3\x55\xc9\x75\xb7\x26\xa5\x5a\x59\x96\x5e\ \x7f\xd1\x7b\x5b\x17\xbe\x2a\x6b\xdb\x8f\x2c\x7b\x73\xde\xa8\xeb\ \xd2\x46\xb2\xfd\x21\x62\xe8\x9b\xd3\xd2\x5c\xb0\x41\xb2\xaa\x61\ \x84\xd4\x85\xb4\x87\xde\x2a\xfb\xcb\x28\x20\x9c\x05\x0c\x73\xc6\ \xdf\x93\x9a\xfa\xe9\xa9\xf5\x54\x7e\x84\xeb\x3b\x53\x37\xb7\x96\ \xdd\x8f\x50\x1b\x7a\x24\x3e\x54\xb7\xcc\x62\xe0\x09\x42\x57\x9c\ \x82\x14\x33\x93\x9e\x09\x1e\xd8\xcc\xf4\xa8\x39\xe2\xd2\x83\x4d\ \x76\xf9\x1d\x71\x1f\xfa\x84\xfd\x29\x35\xcc\xf9\x00\xf4\xa6\x3d\ \x2d\x2e\xe1\x68\xe9\xfa\x67\xea\x49\x8c\x4c\x7a\x24\x45\x48\x79\ \xd8\xcc\x96\xd2\x5b\x4a\x4a\x80\x09\x2a\x3c\xed\x1e\xfc\x9a\xa6\ \x6c\x1d\x70\xba\xdd\xaf\x3a\x69\xc9\xb2\xb4\xda\xe2\x6a\x09\x8a\ \x87\xfa\xb2\x21\x59\x99\x6e\x25\x7b\x1a\x53\x8a\x2a\x21\x5b\x8e\ \x33\xe5\x1c\x11\xda\xa2\x3a\x4f\x51\xd5\x71\x11\x84\x12\x7b\xb2\ \xf6\xc7\x00\x7b\xf1\x4b\xc4\x54\x96\x86\x06\x0e\x2b\x9f\xec\xdd\ \x55\xd5\x53\x34\xec\x6b\x7a\xd9\xb7\xa7\x56\x2b\x55\x8b\x13\x8d\ \x86\x54\x1b\x42\x07\x2a\x77\x69\x56\x78\x00\x8e\xfe\x9d\xa9\xd7\ \xaa\x7d\x58\xbd\xe8\x9b\xa4\x89\x2c\x6a\x1d\x23\x75\x8f\x16\x6a\ \x59\x7e\xcc\xc3\x2e\x19\x4d\xb2\x54\x79\x53\x81\xc2\x90\xe8\x03\ \x90\x40\x1f\x1e\xf7\xa9\x37\xa5\x84\xc3\x11\x4d\x45\xc9\xec\x5b\ \xe9\x0d\x2e\x53\x91\x1a\x96\xca\xe4\x34\x01\x71\xa0\xb0\x56\x90\ \x7b\x12\x3b\x8f\x4a\x5a\xd4\x62\x1b\xda\xa3\xc5\x50\x73\x6f\x33\ \x34\xef\x59\x7a\xcd\x7d\x80\x1a\x32\xe0\x59\x22\x3e\xc8\x75\x3b\ \x93\xb9\x31\x9b\x23\x23\x23\x22\xa4\x48\xea\x56\xa2\x53\xdd\x25\ \x41\x4c\x1c\x6a\xd6\x9c\x5d\xcb\xf6\x47\x82\x94\x34\xa1\xe1\xf9\ \xbc\xbc\xac\xf7\xcf\xa5\x2d\xd4\x93\x2f\x0a\xd4\xd3\x77\xed\xfa\ \xd8\xb8\x50\x84\xa1\x24\x24\x56\xb0\x54\x49\x04\xd5\x1d\xac\x7a\ \xbb\x7a\xd3\x1a\xb2\x13\x49\xd4\x3a\x4a\xfb\x11\xfb\xb2\x20\xc9\ \xb7\x41\x61\xc0\xfc\x56\xd4\xa3\x85\x78\xbe\x21\x49\x58\x03\x04\ \x10\x39\x3d\x87\xa6\xb8\x53\xb5\xb5\xcb\xf4\x95\xd4\x56\xf8\x37\ \xf8\x0c\xb7\x12\xd4\xdf\x86\x87\xa2\xad\x6d\x86\x54\xa4\xa9\x29\ \x09\x0b\x18\x58\x2b\xe5\x7e\xb8\xec\x2a\x12\x7b\xb2\xd2\xc5\xc2\ \xf6\x8a\xd6\xf6\x2f\x26\xdf\x61\xd4\x95\x34\xf2\x1c\x48\x51\x49\ \x28\x50\x20\x10\x70\x47\x1e\xa0\xfa\x56\x69\x50\xdb\xc1\xcd\x73\ \x76\x85\xea\x1c\x8d\x3b\xd1\xdf\xb5\x5b\x6c\x96\x86\xaf\x37\x6d\ \x52\xe5\xb6\x33\x6d\x36\xb4\x47\xf1\x96\x13\x97\x96\x37\x13\xe9\ \xd8\x28\x7a\x63\x81\x52\x19\x9d\x48\xd5\x9a\x7e\x4e\xb2\xd3\x97\ \xa1\x69\x93\x79\xb2\xd9\x4d\xda\x0c\xb8\xac\xad\x0d\x3c\x8e\x01\ \x0b\x6d\x4a\x38\x21\x4a\x03\x83\xc8\xa9\x4a\xe8\xaa\xc6\x42\xc9\ \xb2\xe9\x74\x05\xe4\xa7\xbd\x64\xd9\x2a\x6f\x6f\xad\x52\x56\x0e\ \xa6\x6b\x13\xa8\xf4\x2a\xee\xf1\xec\xea\xb5\x6b\x26\xdd\x2c\xb1\ \x1d\xb7\x03\xd1\x76\xa5\x24\x12\xb2\xac\x2b\x3b\xc1\x23\x68\xf5\ \x1e\x99\x2e\x9f\xa3\xb1\x79\x5a\xa3\xa9\xde\x3a\xdc\x3e\x1e\xa9\ \x90\x12\x16\x49\xc2\x77\xaf\x00\x67\xd2\xac\xdd\x90\x43\x11\x19\ \xcd\x25\xcf\xed\x72\xc7\xb8\xc5\xde\x92\x95\x0e\xf5\x11\xbe\x59\ \x50\x5a\x51\xd9\x92\x7b\x55\x88\xe2\x12\xea\x4f\xbd\x34\xdc\x63\ \x05\x24\x82\x29\xd4\xaa\x58\x6d\x48\x5c\xe2\x0f\xd2\x59\x9d\x71\ \xf6\x81\x6c\x81\x65\x92\x9b\x52\x8e\x54\xf4\x70\x57\xe3\x9f\x65\ \x63\xb0\x1e\xc7\xd7\x9f\x6a\xa9\x74\xc7\x4d\x35\x35\xd4\x29\xf9\ \x6c\x8b\x73\x29\xed\xf6\xa4\xa9\x25\x7f\x41\x8a\xfa\x07\xa8\x2c\ \xc9\x75\x45\x41\x27\x35\x0d\x9f\xa6\x0b\xab\xf3\x24\x91\xf3\x59\ \x65\x47\x11\x52\x76\xd3\xc4\x21\x5b\x87\x1b\x24\x72\x2d\xd7\x41\ \x6a\x02\xb4\x46\x8c\x84\x48\x6c\x01\xc8\x1b\x02\x4f\xbe\x69\xbd\ \x1a\x32\xea\x64\x98\xf3\x58\x97\x35\xd0\x32\x96\x9a\x51\xf0\xd0\ \x33\xdd\x4b\x35\xd6\x92\xb4\x93\x63\x3e\x5c\x53\x4c\xdb\x03\x2c\ \x20\x82\xad\xa3\xd4\x66\x99\x53\xa3\xea\x25\xb9\x68\xf4\x84\xa1\ \xba\x4c\xe5\x6b\xae\x81\xbb\x21\x45\x61\x70\xd3\x9e\xc8\x42\xc9\ \xc0\xfa\xe2\xa4\x1d\x1b\x65\x5a\x67\xa8\x71\xd6\xb9\x49\x79\x32\ \x19\x53\x0b\x00\x14\xf7\x20\xe4\x67\xd0\x10\x2a\xde\xbe\xdb\xa2\ \x21\xb2\xae\x30\x7b\x1c\xf7\xa8\x02\xa1\x32\x9d\x47\x0d\xc8\xec\ \x27\xc7\x32\x02\x77\x84\xe1\x5b\x7d\x46\x7f\x2a\x45\x7a\x31\x54\ \x65\x79\x2d\x87\x60\xf1\x73\x9e\x22\x2e\xdc\xce\xa1\xb1\x3a\x5d\ \x8c\x84\xac\x80\xb4\xe0\x0c\x9c\xe4\x7f\xac\xd2\xd7\x99\x56\xf3\ \xcf\xec\xf1\xfe\xb9\xa6\xed\x1c\x80\xf5\xb1\x90\xf8\xc3\x88\x18\ \x3c\x7f\xaf\xc2\xa4\x25\x05\x0a\x2d\xbb\x8d\xa7\x80\xbf\x43\xf1\ \x5e\x7e\x31\xba\x3d\x14\xa5\x69\x08\x43\x01\xe4\x6c\x70\xf9\xd2\ \x0a\x4a\x88\xe7\x1f\x51\xdf\x8f\x4a\xf1\x88\xea\x8a\xc6\xd7\x4b\ \xc8\x59\x23\x12\x5a\x1b\x93\xc7\xa9\x1e\x87\xf9\xf3\x4b\x7e\xcc\ \xa4\xb8\x36\x1f\x32\xbe\x3b\x7d\x29\x54\x55\xad\xa1\xe6\x3c\x91\ \x8e\x78\xff\x00\x42\xaf\x15\xae\xa5\x5c\xb4\x3c\xb7\xc9\x74\x2b\ \x6e\x03\xc9\xc8\xf3\x27\x9c\xfc\x91\xdc\x53\xfb\x0f\xb6\x5a\xf2\ \xe3\x70\xc7\xaf\x7a\x65\x92\xcc\x77\x16\x14\xa6\x46\xff\x00\x45\ \xa7\xca\xa1\xf8\x8e\xf5\x93\x29\x2b\x40\x6c\xad\xd5\x03\xc6\x4a\ \xb3\xc5\x35\x4a\xc2\x25\x14\xf5\x16\xc9\x79\x4a\x56\xd4\x05\x67\ \x39\xc9\x38\x14\x95\xe8\xee\x48\x3e\x7f\x0d\x1c\xfd\xe4\x8d\xc4\ \x7b\x71\x4a\xa1\x42\x61\xa4\xf0\xd2\x4a\x7d\x77\x1c\xe7\xe4\xd2\ \xf0\x50\x1b\xda\x9c\x04\xf6\xc2\x7b\x51\x6b\xee\x56\xf6\xd8\x8b\ \xb9\xa7\x58\x71\x68\x5b\xac\xa9\x64\x02\x32\xea\xb8\xcf\xc2\x7d\ \xa9\x24\xad\x25\x09\xc5\x38\x95\x21\xbd\xaa\x56\x4a\x52\x00\xcf\ \x1e\xc2\xa5\x6b\x0a\x3c\xed\x01\x5d\xb2\x6b\xc0\xd0\x1f\x7c\x67\ \xdf\x03\x19\xa5\xba\x30\x7c\x87\x46\xb4\xe3\xcc\x89\xb3\xa5\xdb\ \x68\x6c\x42\x01\x40\xe0\x01\xfb\xa3\xd2\x96\x46\xb0\xb2\xc1\xce\ \x01\xe7\x22\xa4\x29\x28\xdd\x8f\xe0\x2b\x05\xa1\x64\xe7\x01\xb4\ \xfb\x9e\x4f\xe1\x54\x54\x60\xb9\x03\xaf\x37\xbb\x1a\x94\xc8\x40\ \x4a\x10\x82\x54\x79\x00\x76\x03\xe6\xa2\x7a\xed\x9f\x16\x1a\xa3\ \x24\x95\xa9\xd5\x24\x15\x27\xbe\x77\x0e\xdf\x02\xa6\xb2\xbf\x64\ \x85\x25\x03\x69\x3f\x78\xab\xb9\xfa\xd4\x79\xd8\x89\x7a\x4a\x9d\ \x74\x12\x12\x9e\xdd\xf9\xa4\xd7\x8d\xe3\x64\x32\x8c\xac\xf3\x33\ \x8f\xfa\x99\xa5\xae\xfa\x73\xa8\x92\x1e\x94\xd3\xf3\x62\x5c\xde\ \x72\x44\x69\x0c\xb0\x7f\xda\x16\xa3\x90\xc1\x09\xec\x42\xb3\xc7\ \x63\x48\xa4\x4b\x95\x09\x6f\xef\x07\xc4\x52\xc3\xb2\x22\xf0\x76\ \x38\x78\xf2\x91\xf1\x80\x47\xe5\x5d\x73\x73\xb3\x19\xd0\xde\x88\ \x48\x4a\x8a\x4e\x17\xec\x7d\xc7\xcf\x7a\xa0\x3a\xab\xa3\xdb\xd3\ \x32\x17\x7d\xb9\x38\xd4\x7b\x73\x48\x25\xb8\xed\x24\x85\x49\x7b\ \x38\x08\xcf\xf1\xfc\x0d\x3f\x0d\x55\xb9\x24\xd6\xb6\xb2\x17\x89\ \x6f\x27\x57\x6b\xdd\xae\xd2\x1e\xd4\x37\xe6\xb2\xc0\x53\x72\x52\ \xeb\x83\x72\x92\xe3\x64\x14\x63\xd8\xfb\x1a\x7b\xb7\xd8\xe5\xa1\ \x68\x2b\x69\x67\x1c\x6e\x03\x9c\x1f\x4a\xd9\xa0\xf5\x0d\xb2\xea\ \xe7\xda\x11\x21\xa6\x54\x80\x0b\x8c\xbc\xe0\x4a\x90\x7d\x7b\xf7\ \x1f\x35\x76\xe9\xb8\xf6\xeb\x8c\x64\x00\x1b\x24\xf2\x0a\x48\x20\ \xfe\x35\xe8\xf0\xf4\x28\x4e\x9e\x49\xbd\x4f\x31\x5f\x13\x56\x35\ \x1c\xb6\x65\x6b\xa5\xb4\x7c\x74\xdc\xcc\xc0\x87\xd2\xea\x95\xb9\ \x45\x47\x85\x1f\x7f\xaf\xf9\xd7\x42\xe8\x68\x31\xe2\x30\xd9\x70\ \xe5\x40\x53\x65\xb2\xc8\xdb\x6f\xa5\xb0\x81\xdf\x82\x2a\x7f\x67\ \xb5\xc5\x8e\xd2\x4a\xc0\x27\x1e\xb5\xbf\x0f\x84\xa7\x85\x8b\xb7\ \x33\x25\x4a\xd5\x2b\xcf\x34\x9d\xd8\xfb\x18\xef\x65\x2a\x6f\xee\ \x8a\xc5\xfb\xd1\x64\xf8\x6d\xb7\xdb\xbd\x64\xdc\x86\xda\x6f\x09\ \x1c\x0a\x8f\x5c\x64\x9f\x19\x6b\x09\x18\x1e\x95\x34\xe9\x29\xb7\ \x99\x68\x5a\xa5\x57\x05\xd5\x7a\x92\xdb\x5d\xcd\x12\xf0\x14\x36\ \xab\xd8\xd1\x51\x38\x8f\xac\x20\x38\x95\x6d\x57\xd6\x8a\xa4\xf0\ \x69\xbb\xc5\xd8\xb5\x3c\x6b\x4a\xd2\x57\x21\x9d\x33\x8b\x39\xcd\ \x3d\x13\xec\xe0\x84\x9d\xfe\x6f\xfa\xea\xab\x16\xd8\xcc\x86\x41\ \x12\x5c\xdc\x7d\x78\xed\x4c\x7d\x33\x4a\x63\xe8\xa8\x29\x40\x4e\ \x47\x88\x09\x3f\xfc\xc5\x53\xcb\xcf\x24\xa8\xec\x39\x34\xf4\xdc\ \x95\x91\x9a\x9a\x51\x8a\x6c\x41\xa8\x4a\x50\xe2\x42\x57\x84\x9f\ \x4c\xd2\x0b\x64\xe5\x46\x92\x97\x1a\x59\x29\x07\xcc\x33\x58\x5d\ \x1d\xf1\x64\x60\x9c\xed\x14\x89\xa6\x5c\x65\x4a\xc0\x38\x3c\xe4\ \xd3\x92\xd2\xcc\x5b\x96\xb7\x43\x03\xfa\x31\x4b\x87\xaf\x22\xb7\ \x79\x38\xd5\xef\x97\x54\xaf\xb2\xff\x00\xb9\x79\x51\xc6\x37\xf9\ \xfe\xf7\x7f\x2d\x39\x5c\x34\x82\x6f\xda\x2f\x4d\x69\x65\xdc\x5f\ \x8b\x3b\x4f\x26\x32\xad\xf7\x36\x1b\x1b\xda\x75\x84\x25\x21\x7b\ \x09\x23\x07\x19\xdb\x9e\xf8\xe7\x8a\x70\x65\xc7\x8b\x9c\x8f\x2d\ \x4a\xb4\x74\x55\x2d\xd5\x48\x5a\x30\x3e\x69\x15\x29\x53\x84\x5b\ \xb1\x6a\x71\x73\x96\x5e\xdf\xec\x6f\xbb\xe8\x9b\x96\xa2\xd0\x97\ \x6d\x39\xae\x35\x22\x6f\x2d\x4e\x42\x3c\x37\x63\x5b\xd3\x10\xb0\ \x52\x77\x05\x01\xb9\x59\x3b\x82\x4f\x27\x1c\x63\x1c\xd3\x7e\x8b\ \xb1\xea\x7b\x36\x1a\xbc\xea\xd6\xef\x31\x1a\x63\xc1\x69\xbf\xd5\ \xa9\x61\x79\xc8\xc2\x94\xb0\xb3\xb8\x80\x08\xec\x33\x9c\x9a\xb0\ \xee\x8e\x06\xe1\xa8\x77\xf4\xa6\x46\x90\x56\xa4\x23\x3d\xeb\x36\ \x1d\x75\x5b\x35\xd7\x84\x54\xd5\xb7\x21\x9d\x4e\xd1\x37\xc7\x64\ \xb1\xd4\x0d\x08\xff\x00\x85\xab\xad\xb1\x15\x1d\xb6\x14\x84\xa9\ \xb9\x8d\x28\xf2\x85\x6e\xe3\x70\x0a\x51\x07\xd4\x80\x3d\xb0\xd3\ \x6c\xe9\x64\x1b\x97\x43\xdf\xd2\xf2\x1e\xb9\xda\xe6\xdd\xde\xfb\ \x74\xe9\x13\x59\x41\x7c\x4a\xde\x09\x2a\x42\x55\xb4\xa7\xca\x00\ \x01\x5d\x8e\x73\x92\x6a\xeb\x68\x78\x51\xc0\xed\x81\x4c\x77\xb7\ \x49\x4e\x32\x72\x4e\x69\x54\xe3\xc4\x99\x35\x68\xc2\x0b\x37\x76\ \xc6\xbd\x2d\x6b\x96\x8d\x30\x6c\xd7\xfb\x9b\x57\x92\xe3\x4a\x65\ \xc7\x51\x18\x30\x95\xb6\x53\xb7\x6e\xd0\xa3\x8e\x33\xce\x7d\x6a\ \x31\xa4\x7a\x7f\xa8\x74\x64\x78\xd6\xbb\x76\xb6\x54\x8d\x37\x11\ \xe5\x2d\x98\x12\x2d\x88\x53\xc9\x6d\x4a\x2a\xf0\xfc\x7d\xfd\xb2\ \x4f\x3b\x73\xed\x8e\xd5\x31\xb3\x3d\x96\x53\xee\x9a\x77\x7d\x21\ \xc6\x0d\x44\xe3\x92\x63\xa1\x08\xd4\x82\x7c\xd1\x52\x5b\x3a\x4f\ \x1a\x1f\x59\x5d\xea\x0a\x6e\xea\x53\x4e\x38\xb7\x91\x6d\xfb\x3f\ \x95\x0f\x2d\xa0\xda\x9c\xdf\xbf\x92\x7c\xc7\xee\xfa\xfc\x52\x1b\ \xb7\x41\x9d\x99\x63\xbf\x58\x63\xeb\x37\xa3\xd9\xae\xd7\x15\x5c\ \xd3\x18\xdb\x90\xb5\xb7\x20\xff\x00\x69\xcd\xd9\x5a\x06\x07\x94\ \x6d\xe4\x0e\x7b\xe6\xd6\x00\xa7\xf0\xa7\x48\xca\xde\xd0\x35\x15\ \x55\xb5\x45\x29\xe1\xe9\x4a\xe9\xaf\x4f\x72\xa8\xb8\x74\xe9\xb9\ \x9a\xc7\x5b\x5d\xa6\xdd\x1c\x5b\x1a\xa2\x03\x70\x9d\x8e\x86\x76\ \xa9\x84\xa5\xa4\xb7\xb8\x2f\x71\xdc\x7c\xb9\xfb\xa3\xf1\xa6\xbb\ \x1f\x4a\xee\x30\xa6\x69\x39\x17\x1d\x5e\xe5\xc0\x69\x67\x31\x6f\ \x68\x40\x4b\x49\x0c\x94\x90\xa4\x1c\x2c\x92\xa3\x84\x79\xf3\xd9\ \x18\xdb\xce\x6a\xdb\xba\x30\x52\xbf\x15\x23\x8a\x6d\x29\x5e\xed\ \xd9\x38\xad\x10\x8c\x26\xae\x22\xa5\x25\x19\x6a\xbd\x5e\xff\x00\ \xc9\x50\xb3\xd1\x45\xb1\x67\x66\xc2\x9d\x5e\xf1\xb4\xc5\xbb\x26\ \xe9\x09\x83\x01\x1b\x90\xe8\x50\xcf\x88\xbd\xd9\x73\xcb\xb9\x23\ \xee\xe3\x76\x4e\x70\x05\x4e\x23\x68\x39\xac\xf5\x59\xed\x77\x6a\ \xd4\x62\x18\x99\x1d\xa8\xf3\xa1\x39\x04\x3b\xe2\xb6\x82\x93\x84\ \xaf\x70\xd9\x90\x90\x33\x83\x8e\x6a\x5c\xcb\x41\x79\x56\x73\x8a\ \xdd\x19\x44\x3b\xb4\x77\xcd\x56\x71\x56\xb2\x26\x9d\x18\x45\xa7\ \x62\xb6\x83\xd1\x28\x4d\xf4\xed\xcd\x29\x23\x50\x3c\xb9\x28\xbc\ \x2a\xef\x0a\xe0\xd4\x50\x85\x47\x7b\x8d\xbe\x42\xa5\x05\x01\xce\ \x79\x19\xcf\xa6\x2b\x7b\x9d\x24\x7e\x54\x6d\x51\x32\xf5\xa9\xd5\ \x72\xbe\xea\x0b\x7f\xea\xf5\x4e\x10\x43\x4d\xc6\x67\x18\x09\x43\ \x21\x67\xd4\x02\x7c\xdc\x91\xe9\xcd\x59\xc5\x45\x1d\xeb\x2d\xfc\ \x0f\x9a\x46\xa8\xd1\xec\xf4\xb6\xb1\x5b\x45\xe9\x49\x0e\xf4\xf1\ \xd3\x7d\xe3\x46\xa1\x68\xc7\xd9\x3f\xdd\x9b\x92\xda\x7f\xb7\xfb\ \x3f\xb9\xfd\xee\xf5\x29\xd1\xfa\x7e\xe3\x62\x9b\x7b\x7e\x76\xa7\ \xb8\xde\x9b\xb8\xcd\x32\x63\xb5\x28\xf9\x61\xa0\xe7\xf6\x48\xe4\ \xf1\xcf\xa6\x07\x03\x81\xce\x5f\x9d\x7b\x03\x68\x35\xa5\x4f\x00\ \x39\x34\x28\xb7\xa9\x2a\x14\xe0\xf4\xf5\xa5\x85\x01\x7b\x79\xad\ \x32\x4a\x56\x93\xcf\x34\x8d\xe9\xcd\xa0\x1c\xac\x71\x4c\xd7\x1b\ \xf3\x4c\xf6\x58\xcf\xc5\x33\x25\xb5\x61\x2a\xc9\x0b\x26\x21\xac\ \x12\xbc\x53\x05\xc9\xf8\xad\xe7\x25\x35\x57\xf5\x77\xae\x5a\x7f\ \x47\x2d\x51\x1c\x5a\xae\x17\x2c\x67\xec\x71\xd6\x3f\x67\xff\x00\ \xcc\x5f\x64\x7d\x39\x3f\x15\xcd\xfa\xb3\xaf\x7a\xfa\xfc\xea\xd1\ \x6f\x7d\x9b\x44\x75\x1e\x13\x11\x1e\x70\x3e\x56\xac\x9f\xc4\x62\ \xa8\xf1\x79\x7d\xd4\x14\xe8\x55\xad\xee\xa3\xa8\x7a\x81\xac\x6c\ \x9a\x66\xdc\xa9\x77\x59\xcc\xc4\x41\xc8\x40\x59\xf3\xac\xff\x00\ \x75\x23\x93\x5c\xcf\xd4\x1e\xb8\xcf\x9b\x70\x2c\x69\x76\x0b\x6d\ \x63\x68\x7a\x42\x02\x94\xaf\x90\x9e\xc9\xfc\x73\xf8\x55\x59\x70\ \x95\x3e\xe2\xeb\x93\xae\x92\xe4\x4c\x79\xc3\xf7\x9d\x59\x52\x96\ \x7e\xa6\xa7\xbd\x0b\xe9\xe2\x35\xa6\xa9\x11\xa5\x05\x22\xdb\x0d\ \x29\x7e\xe0\xf2\x0f\xde\x4e\x70\x96\x81\xf4\xdc\x78\xfa\x03\x59\ \x6b\xe2\xa4\xd5\xe6\xce\x9e\x1b\xa1\xf5\xbc\xd9\x96\x84\xe9\xee\ \xb2\xea\x0a\xd5\x7f\xbb\x5c\x65\x31\x6c\xdc\x4f\xda\x16\x49\x53\ \xa7\xd4\x36\x0f\x18\xf9\xed\xf5\xab\x5f\x4e\xe8\x78\xd6\x9b\x9c\ \x54\xa3\xc6\x73\xc3\x39\x53\x8f\xb8\x56\xb5\x7a\x66\xae\x49\xec\ \xc7\x89\x09\x98\x71\x18\x43\x2c\xa1\x3b\x1b\x6d\x00\x04\xa1\x20\ \x60\x00\x3d\x05\x47\x5e\x67\x32\xdb\x74\x02\x73\xc6\xe1\xee\x2b\ \xcf\xe2\x71\x35\x2a\x3b\x72\x3b\x14\x28\x53\x86\xb1\x44\xb6\xc8\ \xd2\x51\x1d\x21\x23\x09\xc0\xcd\x3f\xb4\x90\x50\x37\x84\xad\x23\ \xb8\x3f\x5e\x0d\x31\xd8\x14\x0b\x3c\x9f\x32\x7d\x71\xde\xa4\x6d\ \xa4\x2d\xa0\x15\xe5\xc7\xc7\x7a\x65\x3d\x50\xba\x9b\x88\xcc\x65\ \xa0\x92\xc8\xde\x9f\xec\x77\x1f\x87\xa8\xad\xad\xa5\xbe\x13\x92\ \x39\xc8\x0a\x38\x22\x94\x16\x9c\x6f\xcc\xde\xec\x7a\xe4\xff\x00\ \x8d\x6d\x61\xd1\xc8\x71\x04\xfe\x19\xa6\x24\x2d\xc9\x98\x35\x15\ \x63\x24\x21\x59\xc6\x38\x02\xb7\xb0\xd6\x50\xa1\x92\x9e\xe1\x4a\ \x00\xf2\x7d\x78\xa5\x6d\xa5\xb2\x06\xd5\x2b\x07\xdc\xf0\x3e\x94\ \xa5\x0c\xb3\xea\xea\xff\x00\x0a\xbe\x51\x6e\x62\x26\x94\x94\xa7\ \x1b\x14\x4f\xb9\x4d\x78\xae\x78\x50\xc8\x3e\x83\xd2\x9c\x76\x46\ \xef\x82\xe7\xc6\x6b\x62\x40\x49\xc2\x10\x84\x0f\xa5\x5b\x29\x19\ \xc6\xe6\x9a\x75\x5f\x71\x93\x81\xea\xae\x05\x6d\x11\x70\x09\x79\ \x40\xfc\x26\x97\x10\xa5\x8c\x14\xab\xe7\x9a\xd6\xe3\x58\xf3\x29\ \x58\x1e\x98\xa1\xa2\x33\x08\xd4\xd8\xc6\xd4\x24\x24\x63\xb6\x38\ \xad\x0b\x4a\xb3\xb8\xd2\xc7\x16\x0e\x52\x94\x94\xfc\x9a\x44\xf2\ \x8a\x95\xb5\x24\xe4\xfe\x42\x97\x26\x59\x08\x26\x6e\x52\xfc\x26\ \xc0\x27\x1e\x63\xed\xf3\x49\x14\xce\x3c\xa8\x19\x09\xe3\x3e\xe7\ \xde\x9d\x94\xc1\x59\x0d\xb3\xe6\x3d\xc9\xff\x00\x5f\xce\xa9\x3e\ \xb1\xf5\xc6\xd7\xa6\x14\xfe\x9f\xd1\xae\x47\xbb\x5f\x00\x29\x7e\ \x60\x21\x71\xa1\x1f\x60\x7b\x38\xe7\xc0\xe0\x7a\xe7\xb5\x2d\xc1\ \xc9\x9a\x68\x53\x9d\x59\x28\xc1\x6a\x49\xfa\x85\xae\x74\xc6\x82\ \x69\xb5\x5f\x24\xa9\x53\x9f\x41\x54\x78\x2c\x0c\xba\xee\x3d\xfd\ \x12\x93\xfd\xa5\x71\xf5\xae\x4b\xea\x36\xb4\xba\x6b\xdb\xe2\xae\ \xf7\x72\x50\xd3\x6a\x29\x8b\x09\x3f\xd4\xc6\x6f\x3d\x81\xfd\xe3\ \x8e\xea\xf5\x3f\x95\x31\x6a\x0b\xc5\xca\xe7\x3e\x4d\xd2\xeb\x25\ \xf9\xd3\x9e\x58\x53\xd2\x5c\x3b\x89\x3f\x3f\x81\xe0\x76\x14\xcd\ \x31\xe7\x64\xa8\x70\x42\x41\xf2\xf3\xc7\xe5\x5a\xe8\x61\xd4\x35\ \x67\x51\x46\x9e\x1d\x7f\xb4\x84\x97\x16\x13\xe2\x27\xc0\x58\x52\ \x89\xf3\x60\xfc\xd3\xff\x00\x4f\xb5\xde\xa0\xd0\xf7\x0f\x1a\x1b\ \xbe\x3c\x35\x28\x78\xd1\x9c\x39\x6d\x5f\x4f\x63\xf2\x29\x95\x2a\ \x08\xe3\x21\x38\x3c\x91\xfe\x5f\x35\x8b\x8d\xe5\x2a\x21\x29\x48\ \x03\x8c\x03\x85\x56\xde\x56\x67\x2b\x11\x86\x85\x5b\xbe\xde\x47\ \x63\xf4\xe7\xac\x1a\x67\x52\xb2\xd2\x63\x4d\x44\x69\xd8\x19\x89\ \x21\x41\x0b\xcf\xb2\x49\xe1\x7f\x87\x3f\x15\x6d\xc0\xd4\x0d\xb8\ \x91\xdc\x2f\xd4\x1e\xe2\xbe\x69\x29\x87\x10\xe7\x88\xd2\x94\x8d\ \x9e\x60\x52\x6a\xc6\xd0\x5d\x6c\xd6\x5a\x63\xc2\x62\x5b\xe9\xbb\ \xdb\xdb\xc0\x0c\xca\xc9\x5a\x47\xf7\x56\x3c\xc3\x8f\x7c\x8f\x8a\ \xd3\x4b\x13\x52\x9e\x9b\xa3\xce\xe2\x3a\x2e\x50\x77\x81\xdf\xad\ \xcb\x2e\xc7\xf1\x77\x01\xc5\x21\x61\x45\xe7\x8a\x73\x9d\xc7\x9a\ \xa1\x74\xc7\x5e\xb4\xb5\xfa\x22\x18\xfb\x7a\xed\x33\x14\x39\x66\ \x5f\x08\x27\xd8\x2c\x71\xf9\xe2\xac\x5b\x26\xb1\x8a\x96\x92\xb4\ \x3e\xcc\x82\xa1\x9d\xcc\xb8\x97\x07\xff\x00\x69\x35\xb6\x18\xfa\ \x4f\x49\x68\xce\x5d\x4a\x33\x83\xeb\x22\x74\xe0\x6d\xb5\x14\x13\ \x92\x7d\xa8\xa6\x48\x97\xd6\x26\x28\x28\x11\x93\xcd\x15\xb6\x33\ \x8c\x95\xd3\x13\x62\x51\xd3\x5b\x6a\x1c\xd1\x90\x96\xb5\x7d\xef\ \x13\xb7\xa7\xed\x15\x4f\x4f\x5a\xda\x84\xd2\xde\x6d\x1b\xf0\x9e\ \xd8\xa8\xa7\x4d\x2e\x32\x99\xd2\x70\x12\xa3\x94\x65\x7f\x87\xed\ \x15\x56\x0a\x16\x97\xa2\x85\x77\x4a\x85\x73\xa4\xea\x53\xb3\x6f\ \x43\xa1\x41\x52\xab\x0d\x16\xa8\xae\x19\x68\xca\x9c\xb7\x14\x36\ \x24\x2a\xb2\xba\x24\x15\x80\xd2\xc6\x00\xf4\xad\xf7\x75\x84\x4e\ \x71\x94\x61\x08\xdd\x93\x48\x46\xc1\x90\x09\x51\x3e\xa7\x9a\xe9\ \xad\x51\xcf\x7a\x3b\x1a\x9a\x59\x0a\x28\x3f\x96\x2a\x7d\xa5\x9e\ \x69\x50\x82\x52\x30\x40\xc1\xa8\x3e\x1b\x2a\xcf\xad\x4b\x34\xc2\ \x17\x1a\x12\xde\x70\x7d\xee\x40\x35\x9f\x12\xaf\x4c\xd1\x85\x95\ \xaa\x0a\xef\x4f\x05\x3c\x1a\x1e\x9d\xeb\xcb\x4b\x45\xd7\xf7\x94\ \xf9\x40\xe0\xd2\x17\x14\xa9\x12\x49\xee\x54\x71\x4f\xb1\x50\x98\ \xb1\x80\xcf\x38\xa4\x54\xfd\xba\x6a\x2b\x73\x45\x3f\xdc\xa8\xe4\ \xf6\x32\x9a\xee\x13\xb4\x1f\x4e\x6a\x35\x70\x90\x95\x3a\x54\xae\ \xc9\x3c\x52\xfb\xa4\x9d\xa8\x23\xf7\x95\x4d\x29\x6f\xc5\x77\x67\ \x24\xd3\x30\xd4\xf2\xab\xb1\x78\x9a\x99\x9d\x90\xb6\xd4\xf0\x4b\ \x83\x04\x61\x55\x23\x8a\xb0\xa4\x6d\x35\x13\x09\xf0\x97\xb7\xb1\ \x1f\x14\xf7\x6f\x91\xbd\xb1\xcf\x98\x55\x31\x34\xef\xaa\x2f\x85\ \xa9\x6e\xab\x37\x4a\x6f\xc3\x70\x9f\x43\x5b\xa0\x2f\x04\xa0\x9f\ \xa5\x6d\x71\x29\x7d\x9e\x3b\xd2\x24\x95\x36\xbe\xf8\x22\xb3\x2e\ \xbc\x6c\xcd\x2f\xa9\x2b\xa1\x45\xd1\xd0\x96\xb6\x7a\x9e\x29\x97\ \x3c\xed\x39\xc7\xc5\x3a\x5c\x47\x8c\xce\xf4\xe3\x8a\x68\x53\x9e\ \xc9\xe6\x9f\x87\x8f\x54\x46\x21\xf5\x85\xac\xb8\xdb\x43\xb7\x06\ \xbc\x5a\xb7\x3a\x14\xda\xbb\xd3\x4c\xb9\xbe\x12\x72\xae\x00\xa6\ \x19\xba\x9e\x3c\x57\x0a\x94\xea\x52\x90\x7c\xca\x52\xb0\x07\xd4\ \x9e\x2a\xd3\xcb\x4d\x66\x93\x13\xc5\xe4\x58\x3e\x3a\x52\x91\x93\ \xce\x29\x1c\x9b\x9c\x76\xf8\x2b\x48\xaa\x67\x58\x75\xb3\x48\x58\ \xdb\x50\x9b\xa8\x62\x97\x40\xc8\x66\x32\xbc\x65\x9f\x8c\x27\x20\ \x7e\x24\x55\x21\xab\x7f\x49\xe7\x1c\x52\xdb\xb0\xd8\xca\x8e\x4e\ \xd7\x66\xb8\x4f\xff\x00\x62\x7f\xce\xb0\xf1\xa3\xbc\x55\xcd\x51\ \x55\x6a\x7b\xa8\xeb\xb9\xda\x8a\x3a\x16\x40\x58\xed\xef\x51\xcb\ \xc6\xb5\x8f\x19\xb5\xad\x6f\x21\xa6\xd3\xf7\x96\xe2\xc2\x52\x3e\ \xa4\xd7\x0c\x5f\xba\xd3\xd4\x4b\xab\x8a\x5a\x6f\x0b\x84\xda\x87\ \xdc\x8a\x80\xd8\x03\xea\x39\xfe\x35\x0d\x9f\x74\xbd\x5c\xd5\xbe\ \x7d\xca\x54\x8d\xca\xca\xbc\x57\x8a\xb9\xfc\x4d\x51\xe2\x2a\x72\ \xb2\x1d\x1e\x8e\xab\x3f\x7a\x47\x5d\x6b\x9e\xbf\xe9\xbb\x41\x5b\ \x71\xe7\x9b\x93\xe9\xff\x00\x82\x8b\xca\x7f\xed\x9e\x3f\x2c\xd5\ \x1b\xae\xfa\xe3\xab\xf5\x31\x5c\x5b\x6b\x9f\xaa\x21\x2c\x10\x50\ \xc1\x3b\xd4\x3f\xbc\xe7\x7f\xcb\x15\x5a\x37\x17\xb1\x50\x2a\x23\ \xda\x94\x36\xdb\x4d\xe0\xaf\x03\xca\x41\x03\xd3\xf1\xa4\xca\x4e\ \x4e\xed\xdc\xeb\x61\xfa\x22\x9c\x35\x97\x98\x9d\xb6\x16\xfb\xc5\ \xc7\x9c\xf1\x49\xf3\x12\xa3\x9c\x9a\x56\x5b\x4a\x06\xd4\x24\x91\ \x91\xe9\x5b\x76\xe1\xad\xca\x04\x21\x27\xcb\x84\xf7\xaf\x76\x84\ \xa4\x93\x8c\x28\xe3\x83\xcf\xd3\xe9\x55\x6e\xec\xec\xd3\xa0\xa1\ \x1b\x24\x26\x98\xb5\x97\x58\x40\x48\x29\x49\x52\xb0\x3b\xf1\xdb\ \x3f\x9d\x74\x7f\xe8\x6f\x2e\x2a\xed\xda\x96\xdc\xa0\x91\x38\x2d\ \x89\x19\xf5\x53\x58\x50\xc6\x3e\x09\xfe\x35\xce\xae\x25\x26\x5b\ \x38\x6c\x94\xac\x28\x10\x3b\x9e\x33\xfe\x15\x3c\xfd\x1f\xb5\x22\ \x34\xaf\x55\xad\x32\x65\x3a\x96\xa0\xce\xcc\x19\x65\x47\x00\x25\ \xce\x12\xa2\x7e\x14\x13\xcd\x2a\xb4\x6f\x02\x1a\x93\x53\xd7\x7f\ \xc1\xd6\xf7\x26\xb2\xf9\xf3\x60\x63\x03\xe0\xe2\x90\x88\x89\x71\ \xb2\xde\x36\xee\xc1\x1f\x0a\xf7\xa7\x99\x6c\xa9\x52\x14\x36\x8c\ \xa5\x5b\x54\x01\xed\x8e\xc6\xb2\x62\x29\x28\x03\x8c\x0e\xc7\x15\ \xc9\x74\xee\xcc\xaa\x76\x42\x5b\x46\x5b\x56\xd7\x52\x37\x24\xed\ \x20\x8e\x47\xcf\xe7\x9a\x92\xb4\xb4\xa1\x09\x24\x9c\x11\xdf\xb8\ \xa6\x65\x36\x1b\x21\xc2\x95\x15\x27\x1e\x70\x79\x4f\x3d\x8f\xbd\ \x39\xb6\x85\x29\x85\x05\x36\x01\x28\x38\x58\x20\xf1\xe8\x47\xd0\ \xd3\x20\xb2\xe8\x52\x6d\x3d\x45\xc1\xcd\xaa\x47\x88\x4e\x36\x92\ \x94\x83\x9e\xdd\xf8\xa5\xac\xa5\x24\x02\x10\x82\x15\xc8\x20\xf7\ \x14\xc7\xa7\xd2\xea\xd8\x0b\x92\xa0\xfc\x94\x1f\x0c\xad\x49\x29\ \xe3\x3c\x63\xda\x9e\xe3\x29\x28\x07\x6a\xb2\xd9\x3c\xa7\xfb\x3f\ \x4a\x6c\x1d\xd5\xc4\xd4\x56\x76\x37\x00\xd2\x55\x84\x95\x6d\x23\ \xf7\x78\xe4\x7d\x7e\xb4\xa1\x94\xb6\x13\x93\x95\x28\x93\xca\x8e\ \x3f\x2f\x8a\x43\x25\x5b\x43\x6b\x24\x25\x5d\x81\x48\xc8\xcf\xcf\ \xe1\x43\x6a\x71\x45\x59\x75\xb2\xa5\xe4\x20\x81\x85\x24\x0f\x5c\ \x76\x3e\x9c\x55\xef\x62\x96\x1c\x52\x40\x58\xc1\x1c\x67\xca\x3f\ \xd7\x34\xa1\x2a\x42\x94\x50\x09\xe0\x02\x46\x29\x33\x39\x71\x96\ \xbc\x2d\x85\x04\xe7\x77\xef\x27\x1d\xeb\x5a\x7c\x54\xbc\xb7\x12\ \xb1\x94\x8c\x76\xce\x73\xcd\x5a\xe5\x77\x15\x3a\xff\x00\x87\xca\ \x10\xb7\x14\x3b\x25\x3d\xcd\x63\x20\xac\x8c\x9c\x63\xeb\xda\xb0\ \x82\x14\xb1\xe2\x29\x2a\x1d\xc1\xdd\xdc\x9e\xdf\x95\x6b\xbe\x5c\ \x2d\x96\x4b\x6a\xee\x57\xbb\x94\x4b\x64\x24\x0c\x97\xa5\x3c\x96\ \xd3\xf8\x67\xb9\xfa\x54\x6f\xa8\x5b\x5b\x20\xc6\xe4\xf2\x42\x47\ \x6a\x65\xd5\xb7\xfb\x16\x93\xb3\x2e\xef\xa8\xee\x6c\xdb\x60\xa7\ \x3b\x54\xe1\xcb\x8f\x2b\xfb\x2d\xa0\x72\xb5\x7c\x0f\xc6\xa9\x7e\ \xa5\x7e\x93\xf6\x88\x65\xcb\x77\x4f\x2d\xaa\xbb\x4a\xda\x40\xb9\ \x4d\x41\x6d\x84\x1f\x74\x36\x70\xa5\xe3\xdd\x58\x1f\x06\xb9\xab\ \x56\x5f\xf5\x16\xad\xbb\xbb\x77\xd4\x57\x49\x37\x49\xc4\x60\xba\ \xf2\xf0\x86\xff\x00\xba\x80\x38\x48\xf8\x48\xc5\x4a\xa6\xd9\xd2\ \xc3\x74\x75\x4a\x9d\x69\xe8\xbc\xfd\x7a\xb1\x65\xf5\x9b\xaf\xb7\ \x8d\x5d\xe2\xd8\x74\xca\x17\x61\xb0\xa8\x94\xb8\xb5\x2b\xfd\xa6\ \x58\xf6\x5a\x87\xdd\x49\xfe\xca\x7f\x12\x6a\x9e\x71\x29\x60\xb6\ \xda\xdc\x50\x1b\x54\x50\x80\x36\x9d\xc6\xb5\xbc\xe0\x49\x48\x69\ \xb0\x70\x7e\xf1\x1f\xce\xb5\x24\x29\x6a\xf1\x94\x4b\x8a\x3d\xf1\ \xdf\xe4\xf3\x5a\x21\x05\x15\xa1\xd3\x8e\x4a\x49\xc2\x2b\xd7\xd4\ \xd0\xb3\x29\xf5\x99\x0a\xca\x46\x30\x02\x46\x78\xf7\x35\x82\xd2\ \xb7\x1b\x48\xc0\xee\x33\x83\xc6\x7d\x29\x62\x88\x43\x4b\xda\xa0\ \x92\x0e\x70\x0f\x27\xde\x93\xc8\x79\x0a\x74\x00\x14\x40\xf4\x4f\ \x00\xf1\x4c\x42\x2a\x46\x29\x6a\xdd\xd9\xad\x0c\xb2\x12\x52\xf3\ \xa9\x4e\xd3\x92\x0a\x7f\x2f\xad\x60\xe6\x12\x93\xb9\x63\x1d\x81\ \x4a\xbb\xfe\x15\xb5\x42\x53\xa1\x3b\xd2\x52\x39\x03\x70\xc9\x48\ \xc7\x02\xb2\x66\x13\x2d\xa4\x29\xd5\x78\xa4\x8c\xee\x24\x64\x7e\ \x1f\x5a\x9b\xf6\x8a\x74\xdc\x9e\x58\x2b\x7a\xe6\x22\x59\x51\x58\ \x28\x0b\x50\xcf\xb6\x31\xe9\x59\x39\x15\x4a\x39\x70\xa7\x80\x4e\ \x7b\x52\xe5\x2d\xa4\x12\x10\xea\x90\x01\xe4\x28\x7a\xfc\x52\x27\ \xe4\x28\xf2\x82\x41\xf5\x28\x18\xfa\xd4\xa6\xde\xc2\xe7\x4e\x10\ \x4d\xc9\xdc\x46\xec\x66\xc2\xc6\xd3\x92\x79\x1c\xd6\x70\xa4\x5c\ \x6d\xef\x22\x4c\x29\x6f\xc5\x75\x07\x29\x52\x16\x52\xa0\x7f\x0a\ \x50\x92\x8c\xa9\x2a\x51\xec\x3d\xb3\x9a\x0a\x77\xa4\x29\x40\xe0\ \x63\x38\x3c\x0a\xb5\xcc\x72\xc3\xc6\x45\x9d\xa3\x3a\xe7\x7c\xb5\ \x2d\xa6\x35\x24\x41\x70\x65\x3c\x7d\xa1\xb3\xb1\xec\x7b\x9f\x45\ \x7e\x3f\x9d\x15\x51\xce\x6d\x29\x19\xc1\xc1\xed\xed\x45\x42\x8a\ \xe5\xa1\xca\xaf\x82\xa5\x9f\xdd\xf5\xf0\x3a\xc3\x4d\x6a\x0b\xf3\ \x76\x28\xc8\x6e\xf5\x72\x4a\x41\x56\x02\x65\xac\x01\xe6\x3e\x99\ \xa9\x33\x5a\xa3\x52\x35\x0c\x0f\xe9\x0d\xd8\x71\xdb\xed\x8e\x7f\ \x9d\x42\x74\xaa\x77\x5a\x63\x92\x78\x1b\xbf\xfc\x8d\x3d\x15\x78\ \x87\x27\xee\x8a\xf1\x55\xeb\x55\x72\xb6\x67\xf3\x3c\x6a\x9c\x93\ \x76\x66\x62\xeb\xa8\x5f\x90\xa7\x5d\xbe\x5c\xce\x4f\x73\x29\x7f\ \xe7\x4a\xdb\xba\xde\x12\x9c\x7e\xb9\xb9\x7f\xf5\x4b\xff\x00\x3a\ \x40\x54\x01\xe2\xbd\x6d\x4a\x52\x82\x52\x82\x49\x3c\x01\xeb\x55\ \x78\xaa\xef\x69\x3f\x9b\x21\x36\x2c\x76\xe9\x78\x24\x2c\x5e\x6e\ \x5c\x73\xfe\xea\x5f\xf9\xd6\x6b\xd5\x7a\x89\x6d\x86\x91\x7e\xba\ \xed\x1e\x9f\x6c\x73\xfc\xeb\x0b\xd5\x9a\xfb\x6d\x88\xdb\xf3\xec\ \xf3\xa2\x30\xf2\xb6\x21\xc7\xd8\x52\x12\x49\x19\x03\x24\x77\xc0\ \x27\x1f\x06\x90\x47\x65\x2c\xa7\x72\xf9\x51\xab\x4a\xb5\x78\xfb\ \xf2\x77\xf1\x64\xbc\xd1\x76\xd8\x7a\x89\x7f\xd4\x2d\x8f\x11\x57\ \xeb\xa8\x57\xfc\xf1\xcf\xf3\xac\x9f\xd5\x7a\x90\x82\xa5\x6a\x1b\ \xb6\x3f\xe7\x8e\x7f\x9d\x35\x0d\xce\x38\x84\x24\x65\x4b\x50\x4a\ \x52\x4e\x32\x49\xc0\xaf\x35\x3d\xaa\xe7\x64\xba\xae\xd9\x76\x8c\ \x23\x49\x42\x52\xa5\x37\xe2\x25\x78\x04\x64\x1c\xa4\x91\x54\x8c\ \xeb\xcf\xac\xe4\xed\xf1\x2d\x9a\x6a\x37\x57\xb1\xb5\x7a\x97\x50\ \xba\xb2\xa5\xdf\xae\x87\xeb\x2d\xcf\xf3\xaf\x58\xd4\x9a\x85\x2b\ \xdc\x2f\xb7\x4f\xfe\xad\xcf\xf3\xa6\x62\x78\xed\x4e\xd0\x6c\x17\ \x69\x76\x19\x77\xc8\xf1\x82\xed\xf0\xd4\x11\x21\xef\x15\x03\x62\ \x8e\x30\x36\x93\x93\xf7\x87\x61\xeb\x4f\x55\x6b\x4b\x48\xc9\xfc\ \xd8\xb8\xe7\x93\xd0\xda\xe6\xa4\xd4\x3b\xf7\x7e\xbe\xba\x7f\xf5\ \x8e\x7f\x9d\x66\xd6\xa7\xd4\x6d\xab\x72\x6f\xf7\x51\xf4\x98\xe7\ \xf9\xd3\x3e\xd2\x72\x2b\xd1\xda\x97\xc7\xab\x6f\x79\xfc\xc3\x34\ \xbb\x49\x33\x3a\xab\x52\x10\x14\x9d\x43\x76\xf9\xff\x00\x6c\x73\ \xfc\xe8\x7b\x53\x6a\x25\x8c\xff\x00\x48\x2e\xb9\xff\x00\x9e\x39\ \xfe\x75\x1b\x43\xa5\xa3\x9f\x4a\x1e\x96\x90\x9c\x85\x52\xb3\xd6\ \xbd\xd4\x9f\xcc\xba\xa9\x27\xa5\xc7\x97\x35\x76\xa4\x6c\x14\x9d\ \x41\x76\x03\xfe\x78\xe7\xf9\xd3\x74\xcd\x69\x7c\x65\xa5\x2d\x7a\ \x86\xe4\x84\x81\x95\x29\x53\x56\x00\xfa\x9c\xd4\x3f\x52\xea\x16\ \x22\x94\x47\x09\x76\x4c\xd7\x8e\xd8\xf0\xe3\xa4\xad\xe7\x94\x7b\ \x04\xa4\x73\xc9\xaa\x9f\xaa\xb1\x7a\x8b\x05\x51\xbf\xa5\xd6\x0b\ \xbd\x8e\x24\x82\x7e\xca\xdc\x98\xab\x65\xb5\xe3\xbe\x32\x06\xe5\ \x0c\x8c\xfa\x8c\xfa\x57\x4f\x07\x86\xc4\x57\xd7\x33\x4b\xb6\xec\ \xdb\x85\xc2\x55\xae\xef\x7b\x22\x79\xab\xba\xdf\x3a\x31\x53\x16\ \xdb\xd5\xca\xe0\xf0\xe3\x7a\xa5\x38\x1a\x1f\xc7\x2a\xff\x00\x5c\ \xd5\x4d\xa9\x75\x9e\xa9\xd4\xae\x95\xdd\x6f\x53\xa4\x23\xd1\xb5\ \x3c\xad\x89\x1e\xc0\x67\x14\xc2\x1b\xf7\xe4\x9f\x5a\xcd\x20\x76\ \x07\xf3\xaf\x41\x47\x0f\x0a\x4b\x4b\xb7\xda\xce\xfe\x1f\x07\x0a\ \x1b\x6e\x63\x87\x14\x7c\xce\x2f\xf1\x35\xea\x41\x4f\x39\x56\x6b\ \x23\xbb\x8f\xa5\x2e\x76\xd5\x73\x66\xd2\xc5\xe1\xfb\x5c\xc6\xad\ \xb2\x5c\x53\x4c\x4c\x5b\x0a\x0c\xba\xb4\xfd\xe4\xa5\x78\xda\x48\ \xf5\x00\xf1\x4f\x6d\x9b\x16\xe2\x30\x5c\xec\x16\xbf\xce\xbd\x42\ \xd6\x14\x0e\xf5\x03\xe8\x6b\xc0\x32\x7d\xbd\xab\xdf\x4c\x11\x8a\ \xad\xcb\xab\xf6\x99\x17\x9e\x24\x6e\x79\xc3\xf8\x9a\xc9\x2f\x3b\ \xbb\x97\x5c\x3f\xf5\xab\x04\xfa\x91\xe9\xc6\x2b\x24\x83\x9d\xc5\ \x35\x0c\xba\x72\xed\x33\x53\xef\x29\x44\x17\x5c\x3f\x55\x9a\x03\ \xab\xc1\x05\xd7\x3e\x79\x35\xa5\x44\x15\x63\x18\xf4\xac\x81\xc0\ \x04\x7e\x00\x50\x4f\x12\x4d\xee\x66\xe3\xef\x04\x85\x87\x57\x94\ \x60\xa7\xcc\x7f\x87\xf1\xaf\x56\xf3\x8e\xa4\x65\xd5\x94\x91\xdf\ \x71\xe6\xb0\x1c\x73\xf3\x5e\x70\xd9\x20\xf2\x85\x73\xff\x00\x24\ \xd0\x4a\x9c\x97\x32\xfa\xe9\xa7\x50\xef\x17\xcb\x7a\x60\xca\xbe\ \xdc\x05\xce\x2a\x02\x56\x93\x29\x79\x75\x09\xc0\x0b\x1c\xf3\xe8\ \x0f\xe7\x53\x34\x5f\x2f\x81\x1e\x5b\xcd\xcb\x00\x76\xfb\x52\xff\ \x00\xce\xb9\xc7\x45\x58\xb5\x46\xa0\xbe\x06\xb4\x7d\xba\xe1\x3e\ \xe7\x19\x06\x4a\x53\x05\xa2\xb7\x1b\x40\x21\x25\x58\x1d\x86\x54\ \x91\xf8\x8a\xb4\xde\xd4\x1a\xa3\x4a\xa6\x3b\x1d\x47\xd2\x37\x8b\ \x32\xde\xf2\xb5\x31\x50\xd4\xda\x1d\x3e\xb9\x04\x00\x48\xf5\xda\ \x7f\x0a\xe0\x63\x70\x15\x54\x9c\xe9\x6a\xbb\x3b\x0e\x4e\x2f\x0d\ \x57\x36\x6a\x6e\xfd\xd7\x26\xd2\x2f\xb7\xbd\xa4\x9b\xdd\xc9\x27\ \xdf\xed\x4b\xed\xf9\xd6\xa8\xd7\xab\xbb\x69\x29\x7a\xf1\x74\x24\ \x65\x5c\x4a\x5f\x23\xdf\xbd\x46\x06\xb0\xd2\xf2\x40\x0c\xdf\x22\ \x79\x86\x7f\x6b\xb9\xbc\x7d\x72\x29\x53\x57\xad\x3b\x22\x2e\xe5\ \xde\x6d\x64\x0f\x43\x25\x03\x18\x3c\x7a\xd7\x2d\xc6\xb2\x5a\xa7\ \xe6\x62\xfd\xf8\xab\x3b\xf9\x92\x78\xda\x8a\xfc\xeb\xcb\x75\x9d\ \x47\x74\x2d\x29\x20\x28\x7d\xa9\xc1\x83\xf9\xf7\xf4\xa5\x82\xfd\ \x7e\x40\x0d\x1b\xcd\xd1\x1e\x5e\xe9\x94\xb1\x81\xe9\xeb\xfc\x2a\ \x39\xa4\x52\xce\xad\xd4\x0c\x58\xb4\xfd\xca\x1c\xeb\xab\xe1\x61\ \x31\xd9\x90\x90\x56\x94\x24\xa8\x9e\x48\x48\xc6\x0f\xad\x31\x5e\ \xba\x83\x67\xb1\x5e\x65\x5b\xa5\x17\xdc\x9b\x11\xc5\xc6\x90\xdb\ \x2d\x6e\xc2\xd0\xa2\x15\xc9\x38\x3c\xe4\x67\x9e\xd5\x2a\x86\x26\ \x7e\xea\x7e\x64\x70\xf1\x13\x7d\x54\xfc\xcb\x11\x5a\x87\x51\x16\ \x83\xa2\xf7\x73\x78\x00\x7f\xfe\x6d\x79\x3e\x9e\xf8\xa5\x11\xb5\ \x16\xa1\x6d\x28\x29\xbe\xdd\x38\xe0\x1f\xb5\xb9\x9e\xdf\x5a\xa4\ \xa4\x75\x75\x4d\xa9\x5f\x63\xb2\x87\x90\xa2\x79\x7d\xcd\x9f\xc1\ \x39\xa6\x2b\x9f\x54\x35\x6c\xdd\xe9\x8a\xf4\x6b\x72\x08\xe3\xec\ \xec\x8d\xc0\x7f\xca\x56\x4f\xe5\x8a\x7c\x3a\x37\x19\x3d\xf4\xf1\ \x63\x63\x80\xc5\xc9\xd9\xe9\xf1\xfb\x1d\x19\x23\x52\x5f\x1b\x6f\ \xc5\x91\xa8\xae\x6c\x36\x15\xc9\x72\x7a\xd0\x93\xf9\xab\x15\x15\ \xbc\xf5\xaa\x35\xa5\x4e\xa4\xea\xeb\xac\xe7\xc2\xb1\xe1\x43\x94\ \xe2\xc6\x7f\xe5\x12\x07\xf1\xae\x70\xb8\x4d\x99\x71\x7f\xc5\xb8\ \x4c\x93\x31\x64\xe5\x45\xe7\x14\xae\x7f\x1a\x4e\x02\x12\xa2\x13\ \xb4\x01\xdf\xd7\xf2\xad\xf4\xba\x26\xda\xd4\xa8\xdf\x86\x86\xda\ \x7d\x17\x67\xd7\x9b\x7e\x1a\x16\xed\xfb\xf4\x85\xd7\x12\x02\x9b\ \xb2\xce\xb8\x40\x41\x3c\x3c\xf4\xc7\x1d\x70\x7d\x06\x76\x83\xf8\ \x1a\xad\xf5\x0e\xa3\xd4\x3a\x9a\x68\x99\xa8\xaf\xb7\x2b\xac\x81\ \xf7\x17\x2e\x4a\xdc\x29\xf8\x4e\x4f\x03\xe9\x4d\x65\x4b\xc7\x95\ \x38\x03\xd5\x55\xe1\x19\x39\x5a\x81\xe3\x00\x67\xb7\xe1\x5d\x4a\ \x54\x29\xd2\x56\x8a\xfa\x9d\x2a\x34\xa3\x47\xdc\x5e\xbc\x4f\x4b\ \xce\xfd\xd0\xe2\xc9\xed\x80\xa3\x83\xf5\xac\xbc\x69\x2a\x46\xd2\ \xf3\xa5\x07\xb8\xde\x71\xc7\xbd\x60\x08\x00\x00\xae\xde\x80\xd0\ \xb2\x10\x08\x1c\x9f\x5c\x9e\xf4\xe1\xaa\x52\xde\xe6\xc5\x4b\x91\ \xbb\x1e\x3b\x98\x1d\xb2\xa3\x5a\x9c\x90\xe8\xec\xea\xc2\x87\x6f\ \x31\xe2\xb5\xf9\xd6\xa2\x12\x14\x00\xef\xf1\x59\x25\x09\x41\xfb\ \xc0\x9f\x91\x53\x6b\x15\x75\x27\x2d\xd9\x8f\x89\x25\xd5\x65\x4f\ \x38\x31\xee\xa3\x59\xa4\x94\x1d\xc9\x5a\xc1\x1c\x67\x35\x22\x85\ \xa2\xb5\x54\xfe\x9f\x5c\x75\xe4\x3b\x4e\xfd\x39\x6c\x92\x22\xcc\ \x99\xf6\x86\x87\x86\xe9\x2d\x80\x9f\x0c\xab\x79\xe5\xe6\xf9\x09\ \x23\xcd\xdf\x83\x88\xa9\x25\x5c\xe4\x9a\x9b\x31\x6e\x76\xd9\xdc\ \x50\xa9\x6f\x81\xe4\x75\xc1\xcf\xf6\xcd\x6a\x76\x4b\xea\x52\xb2\ \xf2\xc9\x57\x07\xcd\xde\xb5\x24\xe4\x8c\x63\xf2\xed\x41\xf5\xf5\ \x35\x29\x58\xa4\xaa\xca\x4b\x73\xd2\xe3\xab\x50\x2b\x71\x64\x8f\ \x9a\x37\x2b\x24\xee\x56\x4f\xae\x4d\x78\x40\xe0\x95\x60\x7e\x75\ \xea\xf6\xe7\x39\x1c\xfb\x54\x95\xbb\xdd\xb0\xf1\x1c\x1c\x07\x17\ \xef\xf7\xab\xcf\x11\xc3\xff\x00\x08\xe1\x1e\x9c\xd7\x83\x39\xc7\ \xf1\xaf\x42\x3b\xee\x56\x3e\x48\xa9\xb9\x56\xd9\xa5\xf5\xa8\x8e\ \x56\xa2\x3e\x4d\x15\x9b\xe9\x40\x1c\x2b\xf0\xa2\xac\x99\x49\x45\ \xb7\xb9\xd5\xba\x67\x8b\x24\x70\x38\x1e\x6c\xff\x00\xda\x34\xea\ \x94\x15\x72\xa3\x84\xd3\x66\x98\x03\xf5\x33\x0a\x57\x00\x6e\xff\ \x00\xf2\x34\xb9\x4e\x17\x32\x3b\x27\xd8\x57\x82\xa9\x77\x36\x78\ \x76\x6c\x2f\x32\xdf\x09\x4e\xe3\x53\x6e\x86\x06\x26\xf5\x1e\x12\ \x24\x36\x8f\xd9\x32\xeb\xcd\x85\x7a\xac\x0c\x0f\xc4\x64\x9f\xc2\ \xa0\x3c\x0e\xdf\xc6\x96\xd9\x6e\xd7\x1b\x15\xe2\x25\xe6\xd0\xe3\ \x68\x9b\x11\x65\x4d\x87\x06\x50\xb0\x41\x4a\x92\xa0\x0f\x20\x82\ \x47\xf1\x1c\x8a\x76\x15\xc2\x9d\x68\xce\x5b\x26\x32\x85\x45\x0a\ \x91\x94\xb6\x4c\x7b\xb5\x45\x77\x55\x75\x10\x46\xb9\xcf\x9a\xe3\ \xb3\xee\x4b\xf1\xb7\xbc\xa2\x94\x80\x55\x90\x94\x93\x84\xe1\x20\ \xa4\x71\xc0\xa9\x74\x3b\x65\x8e\xfd\xa8\xf5\x5e\x96\x67\x4e\x46\ \xb7\x7e\xa9\x61\xc5\xdb\xe6\x34\xfa\xd4\xea\x94\xd1\xd8\xaf\x13\ \x71\xc1\x0a\x24\x1f\x81\x9f\x5e\x6a\x0b\x7a\xd5\x66\x75\xd1\xab\ \xc5\xb3\x4b\x46\xb0\x5d\xda\x98\x26\x2a\x5b\x77\x05\xc8\x43\x8e\ \x0c\x92\x3c\x22\x94\x84\x82\xa3\x93\xc9\xf6\xf5\x34\xba\xef\xd4\ \x1b\x83\xd1\x2e\xcf\x5b\xf4\xbc\x0b\x4d\xc6\xf0\xd1\x62\x7d\xc5\ \x13\x96\xee\xe4\x2b\xef\xf8\x6d\x94\x80\xd9\x3e\xf9\x35\xd3\xa7\ \x3a\x09\xcb\x89\x25\x2b\xbf\x1b\xab\x6c\xb4\xed\x36\x42\xa5\x25\ \x7c\xcd\x3d\x7e\x68\x76\x7d\x16\x7d\x3b\xa3\x34\x75\xc1\xcd\x3d\ \x16\xef\x26\xfd\x20\x3a\xfb\xb2\x1e\x5a\x3c\x26\x42\x93\x80\xde\ \xd2\x30\xac\x29\x38\x3e\xe0\xe7\xd3\x12\xad\x45\xa7\x22\x5f\xba\ \xc7\xa8\xe4\xcd\x8e\x25\xb5\x6c\xb5\x35\x21\x31\x94\xef\x84\x97\ \x9c\xd9\xe4\x4a\x95\x91\x84\xf0\x72\x72\x07\xbf\x15\x56\x5b\xb5\ \xc4\x88\xfa\x5a\x06\x9f\xb8\x69\x78\x17\xa6\xed\x6e\x97\x6d\x92\ \x1d\x98\xb6\x4b\x07\x39\xda\xe2\x12\x0f\x88\x9c\xfa\x65\x3c\x00\ \x3e\x69\x53\xbd\x48\xbe\x2f\x58\xc9\xd5\x1f\xaa\x20\xa9\x53\x61\ \x26\x14\xeb\x7b\xaf\x15\xb5\x25\xb0\x90\x15\x85\x6d\x05\x24\x91\ \x91\xc1\xc6\x71\xcd\x68\x85\x6c\x32\x82\x8b\xb5\xb4\xd2\xdd\xdc\ \xfe\x23\x23\x5a\x86\x54\x9e\xda\x69\x6e\xee\x7f\x11\xc7\x5e\xda\ \xed\xa8\xd2\x56\x4b\xc2\x63\x5a\x6d\x97\xa7\x5d\x5b\x17\x1b\x7c\ \x09\xc9\x7d\xb4\xfd\xf2\x85\x8c\x2d\x58\x05\x28\xcf\x7f\xde\x00\ \xf2\x29\x7e\x95\x21\x1d\x0a\xd6\x8b\x57\x61\x2d\x92\x7f\x36\xaa\ \x07\x25\xeb\x2c\x95\x37\xfa\xa3\x46\x31\xa7\xb6\xe4\xad\x49\xb8\ \xae\x52\x9c\x1e\x83\xcc\x94\x80\x07\xd0\x9f\x9a\x78\x89\xa9\x64\ \xc0\xd1\xb7\x7d\x26\x8b\x52\x1f\x62\xec\xe2\x1c\x5c\xb3\x2b\x61\ \x67\x69\x4f\x1e\x1e\xc3\xbb\x3b\x7b\xee\x1d\xeb\x27\x1e\x94\x71\ \x12\x7a\x25\x95\xad\x3b\x6d\xe0\x84\x2a\x90\x55\x5c\xb9\x59\xaf\ \x2f\x04\x59\x8b\xd1\xf6\x5b\x3d\xea\xdd\xa7\xee\x96\x9b\x4f\xea\ \xd7\xad\xbe\x24\xeb\xac\x8b\x92\x5a\x90\xdc\x93\xbb\x1b\x10\x56\ \x0e\xdc\xa4\x0e\x12\x47\x9b\xbf\x07\x31\xed\x19\x67\xb6\x4e\xd2\ \xb7\x26\xac\x56\xfb\x3d\xf7\x55\xc4\x9a\xa4\x39\x12\xe1\x21\x49\ \x05\x84\x9c\x05\x36\x94\xa8\x64\x1e\xf9\xce\x33\x91\x9e\x05\x46\ \x27\x6a\xa6\xaf\x4c\x42\x46\xa8\xd1\x16\xeb\xf4\xd8\x51\xd3\x19\ \x99\xff\x00\xac\x57\x1d\x4a\x69\x27\xca\x16\x80\x95\x6e\x39\x24\ \xe4\x11\xdc\xf6\xad\x1a\x73\x53\x44\xd3\x53\x21\x4f\x67\x43\x43\ \x99\x75\x82\x56\x63\xce\x37\x57\x1a\x09\x2a\xdc\x39\x6b\x61\x07\ \x09\x56\xde\xe3\x20\x7b\xd6\x8e\x36\x15\xd4\x56\xb5\xbc\xf9\x77\ \x6f\xf3\x1c\xea\xd0\xce\xad\x6b\x7a\xee\xdf\xe6\x4a\x34\x45\xb2\ \x05\xcf\x4d\xde\x9b\xb7\xd9\x6d\x13\xf5\x9b\x13\x14\x3f\x54\x5c\ \x5f\x5b\x69\x6d\x90\x46\x42\x13\x90\x4e\x39\x19\x27\xb8\xe4\xfa\ \x1e\x77\xea\xee\xad\x9b\xa7\xa7\x4a\x86\xdc\x44\x40\xb9\x38\xf3\ \xa1\x51\xb0\x48\x88\x02\x88\x29\x01\x59\x27\x07\xca\x33\xed\x56\ \x8c\x4d\x7f\x1e\xd7\x7e\x46\xa2\xb8\xe8\xa8\x97\x6b\xfa\x25\xb9\ \x29\xb9\xe2\xe8\xe4\x74\xa5\xc5\x95\x1f\xea\x82\x54\x08\x1b\xb1\ \x8c\x8c\x81\xce\x6a\x97\xd6\xfd\x64\xfe\x91\xe9\xdd\x5f\x63\xba\ \x69\x0b\x2c\xbb\x8d\xf6\xec\x26\xa2\xf3\xb7\x0e\xc5\x4a\x4a\x7f\ \x66\x80\x41\x38\xc2\x30\x0e\xe1\x80\xb5\xe4\x1d\xd9\xa7\xd0\xa1\ \x46\xba\x8e\xda\x79\xf8\x9a\x30\xb4\x29\xd7\x71\xee\xf5\xa9\x3b\ \xfd\x02\xd9\x45\xc3\xa9\x9a\x93\x51\x4e\x02\x65\xca\xdf\x65\x71\ \xd8\x9e\x37\x9c\x85\xa9\x60\x15\x8f\x5c\xe3\xcb\xf4\x59\x1e\xb5\ \x15\xfd\x1a\xd9\x57\x53\x7a\xeb\x02\xd9\xaf\x64\x4a\xd4\x11\x26\ \x22\x63\xef\x37\x31\xe5\x2d\x25\xc2\xd2\x95\xbc\x0c\xe0\x1c\xe0\ \xf1\xec\x2a\x15\xd1\xbe\xa2\x5e\xfa\x5d\xad\x59\xd4\xf6\x46\xd8\ \x79\x61\xa5\x47\x93\x19\xf2\x76\x48\x65\x58\x25\x04\x8e\x41\xca\ \x52\x41\xf4\x20\x70\x46\x41\x9a\xe9\xae\xb1\xe8\xfd\x2d\xd4\xdb\ \x6e\xb8\xd2\xdd\x29\x4d\xa9\xe8\xff\x00\x69\x32\x63\x26\xfc\xe3\ \x89\x90\x5d\x41\x4f\x94\xa9\xbc\x34\x94\x92\x48\x01\x27\xdb\x81\ \x5d\x75\x6b\x58\xee\x64\xcb\xb2\x27\x3d\x33\xd0\x7a\x23\x5c\xf5\ \x33\x53\xc2\x63\x45\xc6\x8d\x67\xd0\x91\x24\x34\x88\x9f\x6f\x50\ \x55\xd6\x42\x5c\x52\x5b\x5c\x87\x54\x46\xdc\xf8\x6a\x27\x04\x24\ \x64\x0e\xc3\x96\xce\xb0\xf4\xfe\xc6\x34\xa6\x85\xd4\x96\x9d\x23\ \x68\x87\xaa\x66\xdc\xc4\x1b\xb6\x97\xb3\xdc\xc4\xa6\xdf\x25\x4b\ \x2d\xed\xf0\xdc\x59\x4e\xe4\xb7\xc9\x49\xe3\xc4\x19\x39\x15\x5e\ \xe8\x2e\xae\xdc\xf4\x77\x51\xaf\xfa\xaa\x2d\xa2\x24\xc8\x3a\x81\ \x72\x13\x71\xb5\x49\x70\x94\x3a\xcb\xcb\x2b\x28\xde\x06\x41\x19\ \xc6\xec\x7b\xf1\xcd\x7b\x1b\xa8\xda\x56\xc1\xac\x6c\x3a\xa3\x40\ \x74\xe9\xad\x3b\x2e\xd5\x2c\xc8\x58\x91\x79\x7a\x70\x90\x92\x0a\ \x4b\x7e\x64\xa4\x20\x60\x9e\x40\x27\x9e\xf4\x5d\x58\x32\xca\xe5\ \xdc\xe7\x4b\x6d\x97\xbe\x92\x6b\xe9\x3a\xab\xa6\xfa\x73\x46\xde\ \xf4\xed\xb4\xcf\x80\x6c\xf7\x4f\x1d\xf4\xec\x69\xd7\x36\x3e\x80\ \xea\xf1\x90\xd8\x1e\x6e\xfb\x89\x00\x14\xd6\x1d\x5c\xba\xdb\x9e\ \xfd\x18\xfa\x6d\x0e\x1e\x8c\xd3\xe8\x55\xf8\xba\xc4\x66\xf6\xb8\ \x11\x01\xd7\x32\x0b\xad\x61\x5f\x78\xa9\x44\x92\xac\xf2\x6a\x03\ \x70\xfd\x21\xa0\x93\xad\xd1\x66\xe9\xcc\x6b\x60\xd6\x96\xd9\x11\ \xee\xae\x7e\xb6\x71\xe7\x57\x21\xc4\x29\x08\x78\x15\x23\x01\x08\ \x0e\x38\x7c\x30\x91\x92\xbf\xbc\x30\x05\x30\x49\xeb\x04\x0b\xa7\ \x47\x6d\x1a\x06\xfb\xa2\x9b\x9f\x2a\xc6\xdb\xa9\xb4\xdd\x1a\xba\ \x38\xc1\x8e\xb5\x03\xb5\xc5\x34\x12\x42\xca\x72\x0e\x0a\x80\x3b\ \x47\x1d\xea\x6e\x88\xcb\x2e\x67\x40\xcb\xe8\x9f\x4f\xad\xb7\xe9\ \x1a\x02\xe5\xa6\x6c\xb0\xec\xc2\xca\x14\xde\xa9\x93\x79\x42\x27\ \x19\xe7\x1e\x6f\x04\xbb\x90\x8f\x5c\x6d\xdb\xc6\x39\x06\xb9\x87\ \xa0\xd6\x58\x17\x8e\xb5\xe9\x9b\x25\xea\x1b\x53\x20\xc8\xb8\xa5\ \x89\x0c\x2c\xe5\x0e\x27\x9c\x83\x83\xc8\xe2\xa5\x3a\xc3\xac\x7a\ \x63\x5c\x88\xf7\x2d\x75\xd2\xc8\x97\x8d\x4a\xd4\x44\xc5\x55\xce\ \x3d\xe5\xe8\x8d\xbc\x13\x9d\xaa\x5b\x28\x49\xc9\xc9\x3c\x85\x0e\ \xf8\xe0\x00\x2a\xbe\xe9\x8e\xa7\xfe\x85\xeb\xeb\x36\xab\xfb\x07\ \xdb\x8d\xb2\x4a\x64\x7d\x9b\xc5\xf0\xbc\x5c\x03\xe5\xdd\xb5\x58\ \xfa\xe0\xd5\x5b\x45\xe3\x19\x59\xdc\xea\x0b\x16\x86\xe9\x55\xc2\ \xf3\xd5\x1d\x29\x23\xa7\xf1\xc4\x6d\x18\xd0\x96\xc4\xc4\x4e\x78\ \x4a\x92\x52\x95\xad\x69\x5a\x81\xc0\x49\x28\xda\x02\x40\xc2\x4f\ \xbf\x35\x19\xbe\xf4\xf3\x49\xeb\xae\x93\x74\xbb\x56\xd9\xf4\xfc\ \x3d\x2d\x71\xd4\x9a\x89\x36\x69\x8d\x40\x5a\xcb\x5e\x1a\x9d\x7d\ \x1b\xc0\x5a\x8f\x98\x06\x32\x33\xdf\x71\x04\x9c\x0a\x86\xda\x7a\ \xf4\x6d\xda\x93\xa8\xf7\xaf\xe8\xa0\x77\xfa\x6f\x1d\x4c\x96\xbf\ \x58\xe3\xec\x39\x4a\xd3\x9c\xf8\x5f\xb4\xfb\xf9\xc6\x13\xda\x9a\ \x1f\xeb\x0c\xd1\xd1\x9d\x23\xd3\xfb\x75\xa1\x50\x65\xe9\x8b\xc0\ \xbb\xc6\xbb\x09\x7b\x8a\xdc\x0e\x3e\xb4\x8f\x0b\x67\x97\x05\xe1\ \xce\xe3\xf7\x3b\x73\xc0\xda\x05\x19\xa7\xa1\x75\xc2\xd0\x9d\x30\ \xd4\xbd\x63\xd4\xdd\x10\x8f\xa1\xa3\xdb\x1b\xb5\xdb\x37\xc1\xbe\ \x35\x25\xd5\x4c\xfb\x42\x52\xd1\x2b\x5e\x55\xb5\x49\xcb\xa7\x8c\ \x11\xe5\xed\xc8\xdb\x10\xb4\x69\xed\x0f\xa5\xbf\x46\x5b\x27\x51\ \x2f\x5a\x26\x0d\xfa\xf4\xcd\xd6\x4d\xbd\x4d\xbe\xfa\xdb\x69\xd2\ \xa7\x56\x02\x9c\xdb\xca\xf6\x25\xb2\x12\x3f\xbd\x9f\x41\x4d\x93\ \x3f\x48\xc2\x9b\x8d\xdb\x55\xda\x74\x05\xb6\xd7\xae\x2e\xf0\x04\ \x29\x77\xc6\xee\x2e\x2d\x01\x3b\x52\x9d\xed\xc7\x23\x08\x56\x10\ \x8c\x1d\xc7\xee\x8c\xe7\x9c\xc2\xa7\x75\x47\xed\x1d\x01\xb7\xf4\ \xa3\xf5\x10\x42\x61\xdc\x95\x3b\xf5\x97\xdb\x33\xbf\x2a\x70\xec\ \xf0\xb6\x71\xfd\x67\x7d\xde\x9d\xa8\xba\x0c\xb3\xe6\x5f\x9a\x2f\ \xa4\x5a\x4b\x4f\xe9\xae\x9f\xb3\x79\xd1\xd6\x5b\xdb\x1a\x8a\x21\ \x97\xa8\x2e\xd7\x1b\xc2\x63\x39\x09\x2b\x6d\x2a\x6d\x2c\x20\xba\ \x92\x42\x77\xe0\x94\x82\x4e\x3b\xf2\x31\xcb\xfd\x4b\xb2\x42\xd3\ \x7d\x41\xbf\x58\xad\xd2\xd3\x32\x0c\x39\xce\x35\x19\xf4\xac\x2b\ \xc4\x68\x1f\x21\xc8\xe0\xf9\x48\xed\x53\x96\xba\xbd\x66\xbc\x68\ \x4b\x16\x96\xea\x1f\x4f\x58\xd5\x23\x4f\xb4\x63\x5a\xe6\xb5\x75\ \x72\x0b\xad\x33\x80\x03\x6b\xda\x95\x05\x80\x12\x81\xe9\xc2\x47\ \xae\x49\x64\xb7\xf5\x0a\xd1\x07\x40\x6a\xbd\x25\x1b\x40\xd9\xc0\ \xbe\x4e\xfb\x4c\x49\x8b\x71\x4e\x3d\x6d\x6c\x10\x52\xca\x14\xa0\ \x54\xb0\x90\x30\x95\x15\x03\xe6\x51\x3b\xb3\x43\xb3\x2d\x0c\xe9\ \xea\x59\xff\x00\xff\x00\x0f\x24\xa9\x3d\x6a\xbb\x8c\x9d\x87\x4e\ \x3e\x42\x4f\xa7\xfb\x4c\x6a\xd9\xd3\x7b\x94\xcd\x51\xfa\x1d\xf5\ \x16\x2e\xa5\x95\x22\x6b\x56\x79\x6c\xc9\x80\xe4\xb7\x0b\x8a\x65\ \x64\xa0\xe1\x0a\x3c\x81\x90\x78\x1f\xdb\x57\xbd\x56\x9f\xa3\xe7\ \x54\x4f\x48\xf5\xa4\xad\x48\x9b\x18\xbe\x7d\xaa\xdc\xb8\x3e\x01\ \x99\xf6\x7d\xbb\x9c\x69\x7b\xf7\x6c\x5e\x71\xe1\xe3\x18\xfd\xee\ \xfc\x52\x9d\x5f\xd5\x98\xd3\x3a\x70\xbe\x9e\xe8\xbd\x1f\x1f\x49\ \xe9\xd9\x32\x84\xb9\xc9\x17\x05\xcc\x91\x2d\x69\xc1\x01\x4e\x28\ \x27\xca\x0a\x52\x71\x8f\xdc\x4f\x3d\xf3\x09\xe8\x0e\x2f\x3e\x9d\ \xc7\x43\xb7\xd1\x5d\x0b\xa7\xaf\x36\x6d\x13\x7f\xd2\x56\x37\xad\ \x52\xac\x85\xeb\xae\xa3\x97\x79\x43\x33\x1a\x9a\x77\x01\xe1\xb6\ \x5d\x0a\xd8\x0a\x06\x30\x82\x9f\x30\xc9\x38\x56\x6b\x8d\x3d\xa4\ \x34\x56\x9d\xfd\x1c\xef\x7a\xd2\xeb\xa5\xe0\x6a\x1b\xbd\x87\x53\ \x3b\x09\x82\xf3\xaa\x43\x32\x52\x16\xdb\x40\x39\xb1\x59\x52\x06\ \xe5\x28\x00\x79\x38\xc9\x23\x35\x11\xbc\xf5\x8b\x4f\x6a\xeb\x55\ \xa4\x75\x13\xa6\x51\xb5\x2d\xe2\xd7\x11\x30\x99\xb9\x35\x78\x7a\ \x11\x71\xa4\xf2\x90\xe2\x10\x93\xb8\xe4\x93\x90\xa1\xc9\x38\xc6\ \x6a\x69\xd3\xad\x61\xa0\xad\x5f\xa2\x3d\xe2\xd5\xa9\x22\x5b\xef\ \x2f\x2e\xff\x00\xe3\x0d\x3a\x2f\x3f\x64\x92\xea\x0a\x99\xda\xa1\ \x8c\xb9\xb5\x38\x27\x21\x3c\x84\x9e\x6a\x74\x7b\x15\xfd\xc5\xab\ \x2c\x2d\x21\xa2\xf4\xce\x9c\xfd\x26\x3a\x6f\x7f\xd2\xb6\xb4\x5a\ \x61\x6a\x4d\x3d\x22\x6a\xe0\xa1\x65\x49\x65\xcf\xb3\x92\x76\xe7\ \x90\x08\x5a\x46\x3b\x64\x1a\x80\x49\xd3\x3a\x5b\x4d\xe8\x4d\x7b\ \xd5\x9b\xe6\x9b\x8b\xa9\xae\x6e\x6a\xd9\x56\xf8\x10\xe5\xba\xb4\ \xc7\x65\x3e\x39\x0a\x5a\x92\x82\x0a\x89\xca\xbd\x7d\x13\x8c\x73\ \x51\x48\xff\x00\xa4\x25\xcc\x75\x9e\xd3\xd4\x19\x5a\x72\x33\x91\ \x2c\xf0\x17\x6f\xb7\xd9\xa3\xca\x2d\x36\xcb\x25\x0a\x48\x1e\x21\ \x42\xb2\x7c\xd9\x27\x6f\x38\x03\x8c\x53\x6d\x83\xac\xc9\x66\xd7\ \xa9\xf4\xee\xa5\xd1\xec\xea\x0d\x2f\xa8\x2e\xae\x5d\x55\x6f\x54\ \xf5\xc7\x76\x2b\xca\x5e\xef\x23\xe9\x49\xe3\x84\xe7\xcb\xce\x3d\ \x32\x72\x5d\x13\x92\x77\x2e\x28\x3d\x3c\xe9\xac\x4e\xae\x74\xd6\ \xea\xbd\x33\x1d\x3a\x77\xa8\x56\x37\x1d\xfd\x59\x21\xc5\x38\x88\ \x92\xbc\x26\x9e\x49\x49\xce\x46\x77\xa1\x00\x67\x00\x93\xd8\x76\ \xaf\x35\xb6\x80\xb2\x68\x1e\x88\x6a\x59\x17\x6b\x5b\x2e\x5f\xa6\ \xea\xc7\x6d\x56\xb7\xdc\xc9\x5b\x31\x58\x57\x99\x69\xf4\xf3\x6c\ \x52\x73\x8f\xde\x1f\x83\x3c\xde\xa3\x5f\x3a\x91\xd5\x5d\x2d\x32\ \x2b\xda\x7f\x48\x46\xd3\xa9\x69\x36\x68\xf3\x67\x96\x62\x45\x43\ \x24\x2c\x25\x6f\x2c\x72\xa5\x6c\x4a\x73\x81\x9c\x24\x62\x9e\xbf\ \x4c\x4e\xa3\xc1\xd6\xba\x86\xc5\x68\xb3\xcf\x83\x32\x3d\x9e\x19\ \x33\x1e\xb7\xaf\x74\x47\x26\xbc\x41\x7b\xc2\x57\xef\xa4\x6d\x18\ \x57\xc9\xf9\xa8\x76\xb3\x2d\x1c\xd9\x92\x66\xbf\xd1\x9f\xa7\x16\ \xad\x4b\xa5\xf5\x7e\xb0\xb8\xda\x63\x5f\xdf\xb1\xb2\x86\xed\xd6\ \xd9\x53\x04\x78\xcf\x48\x58\x27\x73\xab\x2a\x40\x09\x48\x09\xe0\ \xa8\x03\x93\xec\x2a\x7e\xee\x87\xe9\xad\xbb\xab\x3d\x36\x7e\x56\ \x9e\xb0\xb7\x1b\x54\x46\x72\x15\xea\xc8\xc4\xe4\xca\x66\x14\xdd\ \x89\x2d\xa9\x0a\x4a\xd5\xf7\x96\xa0\x9e\x0e\x38\xf5\x26\xa8\xde\ \x92\x75\x2a\x4e\x84\x8b\x7b\xb4\x4b\xb2\x44\xd4\x3a\x7e\xfd\x1c\ \x47\xb9\xdb\x24\x3a\xa6\x7c\x44\xa7\x20\x14\x38\x90\x4a\x14\x02\ \x94\x33\x83\xdc\x1e\xe0\x10\xd3\xa8\xf5\x3e\x9d\x37\xdb\x55\xd7\ \x44\x68\xe3\xa5\x1c\xb7\x3a\x1f\x1b\xae\x8e\xcc\x53\x8e\xa5\x49\ \x52\x09\x52\x82\x76\xed\x29\xec\x90\x3b\xf2\x7b\x54\x26\xac\x5a\ \x70\x9e\x76\xcb\x63\x50\xf4\xde\xcb\xa4\xba\x77\xad\xc4\xfb\x54\ \x37\x6f\x33\xb5\x88\xd3\xfa\x7d\xd7\x89\x25\x96\x92\xad\xe5\xd4\ \x8c\xf6\x28\x51\x4e\x7d\x08\x1f\x15\x68\xca\xe8\xb7\x4f\xed\xb7\ \xf9\x1a\x0a\xe3\xa6\x6c\xb0\xec\xc2\xca\x14\xde\xa8\x93\x79\x42\ \x27\x19\xe7\x1e\x6f\x04\xbb\xb8\x23\xd7\x1b\x76\xf9\x71\x92\x0d\ \x50\x5f\xa4\x27\x5c\x24\xf5\x61\xdb\x3f\xd9\xf4\xf2\x34\xeb\x16\ \xc5\xba\xf7\x86\xdc\xcf\x1c\xbc\xf2\xf6\x8f\x10\x90\xda\x30\x40\ \x40\x03\x83\xdc\xf3\x5b\xb5\x7f\x58\xb4\xce\xba\x44\x7b\x96\xbb\ \xe9\x6c\x4b\xc6\xa4\x66\x22\x63\x2a\xe7\x1e\xf2\xf4\x46\xde\x09\ \xfb\xaa\x5b\x28\x49\xc9\xc9\x3c\x85\x0e\xf8\xe0\x00\x2a\xdd\x51\ \x6d\x54\x69\x32\x5a\xe5\x8f\x43\xe9\x3f\xd1\x77\x47\xf5\x12\xe3\ \xa2\x60\xdf\x2f\x92\x67\xcc\xb6\x2c\x3d\x21\x48\x69\x6a\x53\xf2\ \x30\xea\xc2\x7e\xf9\x42\x23\xed\x48\xed\xe7\xcf\x38\x15\x28\x83\ \xd2\xad\x1f\xac\x2f\x9d\x19\xd4\x56\x9b\x04\x28\x96\x4b\xc4\x17\ \x5d\xbf\x32\xde\x43\x45\xd8\xed\x85\xa8\x2b\x9e\xc5\x61\x68\xe3\ \x1d\xaa\x8f\xbe\xf5\x44\xdd\x3a\x03\xa7\x7a\x52\x6c\x49\x65\x36\ \x6b\x8a\xe7\x7e\xb2\x13\x37\x78\xdb\x95\x21\x5b\x3c\x2d\x83\x6f\ \xfb\xa3\xbe\xe3\xf7\x7b\x73\xc5\xb3\xa2\xba\x88\xd6\x81\xfd\x16\ \xae\x96\x3b\x86\xa6\xd3\x13\xa6\xcf\x88\xb4\x58\x22\xdb\xa7\x7d\ \xa6\x74\x63\x29\x27\xc5\x0f\x20\x7f\x51\xe1\x85\x93\xcf\xef\x6e\ \x1c\xf1\x91\x58\x89\x66\x5a\xf3\x6c\x40\xe6\x95\xd2\x3d\x47\xe8\ \x85\xea\xf1\xa3\xb4\xe4\x1b\x7d\xea\x06\xb1\x4c\x46\x56\xc2\x15\ \xbc\xc3\x90\xf0\x43\x09\x23\x3c\x81\xe3\xa0\x76\xcf\xec\xc9\xa9\ \xee\xb7\xe8\xde\x80\xbb\x75\x0f\xa7\x3f\xd1\x0b\x2c\x66\xad\x08\ \xbd\xcd\xb5\xdf\x5a\x19\xda\xea\xe2\x82\xb5\x25\xce\x4e\x32\x18\ \x74\x77\xe7\x70\xed\x54\x3f\xe8\xef\xd6\x77\xba\x49\x22\xf2\x55\ \xa7\x13\xa8\x22\x5c\xc3\x05\x51\xd5\x33\xc0\xf0\xdc\x65\x4a\x52\ \x16\x0f\x86\xbc\x9f\x31\xf4\x1e\x87\x3c\x53\x9f\x4f\x7f\x48\x3b\ \xce\x93\xd0\x9a\x9f\x4e\xbf\x63\x45\xc6\x6d\xea\x54\xa9\xac\x5c\ \x15\x2c\xb6\x60\xbf\x21\xa2\x85\xad\x28\x28\x56\xee\x49\x56\x37\ \x0e\xe7\xde\x84\xe3\xcc\x24\xa7\xc8\xb4\xf4\x9d\xef\x4d\x46\xfd\ \x15\xba\xad\x7b\x89\xa6\x60\xce\xd3\xe8\xd6\x2a\x54\x2b\x5a\x9c\ \x5a\x18\x53\x5e\x24\x14\xb0\x14\x50\x42\xb0\x3c\x8a\x20\x1e\x70\ \x47\xad\x25\xbf\xf4\x43\x44\xea\x3e\xae\xf4\xd1\x16\xeb\x67\xea\ \x5b\x56\xa5\xb2\xaa\xe7\x74\x83\x19\xd5\x14\x0f\x0d\xb4\x2c\xa5\ \xb2\x4e\x46\xe2\xb4\xa4\xe3\x1c\x02\x47\x35\x49\xd8\x7a\x9e\x6d\ \x1d\x01\xd4\x3d\x28\x36\x10\xf0\xbd\x5c\x51\x3b\xf5\x8f\xdb\x36\ \x96\x76\xaa\x39\xd9\xe1\x6c\x3b\xbf\xdc\xfd\xf7\x0f\xbd\xdb\x8e\ \x64\x37\xaf\xd2\x12\xf0\xf5\xf3\x40\x5e\xec\x96\x26\x6d\xb3\x34\ \x74\x03\x08\x78\xd2\xbc\x74\x4d\x42\x9b\x43\x6a\xdc\x90\x84\x14\ \x02\x12\x78\x04\xe3\x3d\xf8\xa9\xcc\x88\x70\x92\x64\xcf\xac\x3d\ \x3e\xd2\x4a\xe9\x0e\xa3\xbc\x8d\x2d\xa7\xf4\x86\xa0\xb1\xdd\x36\ \xdb\x58\xb7\xde\x5b\x92\xb9\xd0\xb7\xa1\x19\x71\x21\xd5\xf9\xc0\ \x51\x51\xcf\x9b\xc9\xd8\x64\xd2\xae\xb6\xe8\x2d\x0d\x6c\xd6\xba\ \x63\xa7\xba\x77\x47\x43\x89\x3f\x59\xa2\x0a\xdc\xba\x97\xd7\x9b\ \x7a\x4b\xa8\x42\xbc\x16\xf3\xb4\x64\x21\x65\x44\xe4\x9d\xff\x00\ \x02\xa9\xae\xa3\x6b\x4d\x0b\xaa\xa3\xce\x93\x68\xe9\x7b\x76\x0b\ \xd4\xe7\xfc\x77\xa7\xb7\x7b\x75\xf4\x25\x65\x5b\x97\xb1\x92\x84\ \xa5\x21\x47\x3c\x12\x40\x07\x8e\xc2\x9c\x7a\xc1\xd6\x39\xda\xef\ \x58\xe9\xad\x51\x6f\xb3\x7e\xa1\x9b\xa7\xa3\x32\xd4\x62\x25\xfd\ \xa3\x2e\x34\xe1\x71\x2e\x7d\xc4\xe3\x9c\x71\x83\xdb\xbd\x0d\xa0\ \x50\x95\x91\x7b\x6b\x4e\x92\x68\x36\xa1\xeb\x5d\x2c\xe6\x93\xb1\ \x69\xf8\xd6\x7b\x6a\x5d\xd3\xf7\xaf\xd7\x68\x5c\xd9\x72\x12\xd6\ \xe5\x07\x5a\x2e\x95\x79\x95\xc6\x14\x90\x31\xdb\xd3\x1c\x69\xb4\ \x0c\x1c\x0e\x7f\x8d\x5b\xbd\x44\xea\xa6\x91\xd7\x6b\x9d\x79\xbc\ \xf4\xa2\x30\xd5\x93\x62\xf8\x4e\xdd\x63\xde\x9f\x6d\x90\xe8\x6f\ \x62\x5e\xfb\x38\x4e\x37\x27\xca\x70\x56\x41\xda\x33\x9e\x73\x1c\ \xd7\x5a\xee\x0e\xa5\xd0\xda\x57\x4d\xb1\xa3\xed\x56\x77\xac\x2c\ \x29\x97\x6e\x11\x87\xed\x66\x92\x00\xdc\xae\x06\x32\x46\xe3\x92\ \xac\xa8\x92\x31\x9c\x54\x49\xae\x45\xa1\x19\x25\xaa\x20\xb9\x52\ \x7e\xe6\x73\x8f\x53\x58\xad\x41\x5c\xe3\x3f\x5a\xd8\x1b\xe3\xd3\ \x93\x41\x4a\x02\xbd\xaa\xb7\x43\x1c\x59\xe5\xae\x03\xb7\x3b\xc4\ \x2b\x6b\x40\x97\x65\x48\x6d\x84\x00\x39\x2a\x5a\x82\x47\xf1\x34\ \x55\xf5\xfa\x14\x74\xda\x46\xae\xea\x9c\x7d\x4d\x29\x8f\xff\x00\ \x45\xd3\xcb\x12\x16\xb2\x38\x72\x40\x1f\xb2\x40\xe3\x9c\x1f\x39\ \xfa\x0f\x7a\x29\xb1\xd8\xcb\x53\x47\x62\x4f\xa7\x54\x55\x66\x8e\ \x91\xd8\x6e\xff\x00\xf2\x34\xe4\x3b\x0a\xed\x1a\x2b\x87\x2e\x83\ \xbb\xbe\x7f\x2f\xc9\xc3\xfd\x27\xfe\xfc\xbf\x27\x17\x2b\x9a\xf1\ \x27\x1c\x57\x69\x51\x55\xfd\x0b\xff\x00\x4f\x2f\xc9\x1f\xa4\x7f\ \xdf\x97\xe4\xe2\xd3\xea\x3d\x28\x90\x71\x08\x8f\x73\x5d\xa5\x45\ \x1f\xa1\x7f\xe9\xe5\xf9\x0f\xd2\x7f\xef\xcb\xf2\x70\xfa\x4e\x07\ \x35\xb1\xa0\x54\xad\xc7\xb0\xae\xdc\xa2\xaf\xfa\x2f\xfd\xf9\x7e\ \x43\xf4\x8f\xfb\xf2\xfc\x9c\x5c\xca\xb6\xf0\x06\x4d\x6d\x71\x59\ \x50\x1e\xb5\xd9\x94\x55\x1f\x40\xdd\xdf\x89\xe5\xf9\x27\xf4\x9f\ \xfb\xf2\xfc\x9c\x64\xd9\xda\xb3\x5a\x26\x2f\x83\x9e\x31\x5d\xa9\ \x45\x0b\xa0\xac\xef\xc4\xf2\xfc\x87\xe9\x3f\xf7\xe5\xf9\x3e\x77\ \x6b\xa9\xdf\x63\xb6\xca\x92\x14\x01\x6d\xb3\x8f\xa9\xe0\x7f\x3a\ \xa1\x11\x95\x3a\xa5\x7a\xe7\xd6\xbe\xc6\x51\x5d\x4c\x2e\x11\x61\ \xe2\xd5\xef\x73\xa1\x84\xa0\xb0\xea\xd7\xb9\xf1\xec\x82\x71\x80\ \x73\xf4\xaf\x12\x15\xef\xc5\x7d\x85\xa2\xb4\x64\x37\xf1\xb5\xbd\ \x8f\x8f\x67\x8c\x1c\x63\x3c\xf3\x5e\x82\x08\xef\xe6\xaf\xb0\x74\ \x51\x90\x38\xfd\xc7\xc7\xac\x71\x40\x49\xc5\x7d\x85\xa2\xa7\x20\ \x71\xbb\x8f\x8f\x84\x64\x70\x70\x6b\xd0\x09\x1c\x02\x7d\x39\x3e\ \x95\xf6\x0a\x8a\x8e\x19\x3c\x7e\xe3\xe3\xee\x14\x08\x0a\x38\x03\ \xd7\x15\xe8\x27\x80\x08\xaf\xb0\x34\x51\xc3\x27\xda\x3b\x8f\x90\ \x18\x24\x7d\xd0\x4d\x79\xb4\xfb\x1f\x73\xe9\x5f\x60\x28\xa8\xe1\ \xf7\x83\xc4\x27\xc8\xf8\xff\x00\xb4\x15\x77\xfc\xeb\xcc\x6d\x00\ \x03\x8c\x73\x8a\xfb\x03\x45\x4f\x0f\xbc\x3d\xa3\xb8\xf8\xfc\x8c\ \x9c\x11\xc1\xf9\x15\xe8\xc2\x95\xc2\x52\x33\x5f\x60\x28\xa3\x86\ \x0b\x11\x6e\x47\xc8\x15\x0c\x63\x90\x4f\xf6\xab\xc2\x93\xff\x00\ \x2b\x8e\xfe\xb5\xf5\xfe\x8a\x8e\x1f\x79\x2f\x13\x7e\x47\xc8\x21\ \xbb\x1b\x4f\x6f\x7c\xf6\xa3\x82\x0a\x47\xf0\x3d\xeb\xeb\xed\x14\ \x70\xbb\xc3\xda\x7b\x8f\x90\x24\x01\x94\x9c\xfb\xf3\xef\x5e\xe5\ \x58\x20\x13\x8a\xfa\xfb\x45\x1c\x3e\xf0\xf6\x9e\xe3\xe4\x0a\x54\ \x40\xe1\x47\xbf\x3c\x56\x1b\x95\x93\xc7\x7f\x5e\x6b\xec\x0d\x14\ \x70\xc3\xda\x7b\x8f\x8f\xe0\x10\xac\xf6\x3d\xfb\x77\xaf\x54\xae\ \x30\x09\xcf\xc8\xaf\xaf\xf4\x51\xc3\xef\x0f\x69\xee\x3e\x3f\x61\ \x4a\xf5\xc7\xcd\x03\x68\xce\x72\x4e\x6b\xec\x0d\x15\x3c\x3e\xf2\ \x3d\xa3\xb8\xf9\x00\x79\x1d\xf1\x9e\xc6\xb1\x52\x94\x7d\x41\x15\ \xf6\x06\x8a\x38\x60\xf1\x17\xe4\x7c\x7d\xff\x00\xaa\x6b\xd0\x94\ \x93\x9f\x7e\x3d\xeb\xec\x0d\x14\x70\xfb\xc8\xf6\x8e\xe3\xe4\x07\ \x38\xe0\x8f\xf2\xac\x52\x3c\xb9\x38\xc5\x7d\x81\xa2\x8e\x19\x2f\ \x11\xdc\x7c\x7f\x1c\x64\x0c\x8c\x77\x19\xc5\x62\xa7\x01\xc2\x73\ \xc7\xd2\xbe\xc1\x51\x47\x0c\x87\x88\x7d\x87\xc8\x5b\x7c\x1b\x95\ \xcd\xf0\xc5\xb2\x0c\xb9\xce\x13\xe5\x4c\x76\x14\xe1\x27\xe8\x33\ \x57\x8f\x48\x7f\x45\xcd\x7b\xab\xe6\x33\x2f\x53\x46\x77\x4b\xd9\ \xb2\x0a\xd7\x24\x62\x4b\x89\xe3\x84\x35\xdc\x64\x1e\xea\xc7\xd0\ \xd7\xd0\x9a\x2a\x54\x12\x2b\x2a\xcd\xa1\x8b\x41\xe9\x2b\x0e\x88\ \xd2\xf1\x34\xe6\x9b\x82\x98\x76\xf8\xc3\xca\x91\xca\x96\xa3\xdd\ \x6b\x3f\xbc\xa3\xea\x68\xa7\xda\x2a\xe2\x42\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x0f\xff\xd9\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0b\ \x08\x01\x81\xe7\ \x00\x65\ \x00\x78\x00\x61\x00\x6d\x00\x70\x00\x6c\x00\x65\x00\x2e\x00\x6a\x00\x70\x00\x67\ " qt_resource_struct = b"\ \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\x12\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() PyQt5_gpl-5.10.1/examples/draganddrop/README0000644000076500000240000000151413245231431020463 0ustar philstaff00000000000000PyQt supports native drag and drop on all platforms via an extensible MIME-based system that enables applications to send data to each other in the most appropriate formats. Drag and drop can also be implemented for internal use by applications. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/effects/0000755000076500000240000000000013245231431016734 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/effects/lighting.py0000644000076500000240000001220513245231431021113 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import math from PyQt5.QtCore import QPointF, Qt, QTimer from PyQt5.QtGui import (QBrush, QColor, QLinearGradient, QPen, QPainter, QPixmap, QRadialGradient) from PyQt5.QtWidgets import (QApplication, QFrame, QGraphicsDropShadowEffect, QGraphicsEllipseItem, QGraphicsRectItem, QGraphicsScene, QGraphicsView) class Lighting(QGraphicsView): def __init__(self, parent=None): super(Lighting, self).__init__(parent) self.angle = 0.0 self.m_scene = QGraphicsScene() self.m_lightSource = None self.m_items = [] self.setScene(self.m_scene) self.setupScene() timer = QTimer(self) timer.timeout.connect(self.animate) timer.setInterval(30) timer.start() self.setRenderHint(QPainter.Antialiasing) self.setFrameStyle(QFrame.NoFrame) def setupScene(self): self.m_scene.setSceneRect(-300, -200, 600, 460) linearGrad = QLinearGradient(QPointF(-100, -100), QPointF(100, 100)) linearGrad.setColorAt(0, QColor(255, 255, 255)) linearGrad.setColorAt(1, QColor(192, 192, 255)) self.setBackgroundBrush(linearGrad) radialGrad = QRadialGradient(30, 30, 30) radialGrad.setColorAt(0, Qt.yellow) radialGrad.setColorAt(0.2, Qt.yellow) radialGrad.setColorAt(1, Qt.transparent) pixmap = QPixmap(60, 60) pixmap.fill(Qt.transparent) painter = QPainter(pixmap) painter.setPen(Qt.NoPen) painter.setBrush(radialGrad) painter.drawEllipse(0, 0, 60, 60) painter.end() self.m_lightSource = self.m_scene.addPixmap(pixmap) self.m_lightSource.setZValue(2) for i in range(-2, 3): for j in range(-2, 3): if (i + j) & 1: item = QGraphicsEllipseItem(0, 0, 50, 50) else: item = QGraphicsRectItem(0, 0, 50, 50) item.setPen(QPen(Qt.black, 1)) item.setBrush(QBrush(Qt.white)) effect = QGraphicsDropShadowEffect(self) effect.setBlurRadius(8) item.setGraphicsEffect(effect) item.setZValue(1) item.setPos(i * 80, j * 80) self.m_scene.addItem(item) self.m_items.append(item) def animate(self): self.angle += (math.pi / 30) xs = 200 * math.sin(self.angle) - 40 + 25 ys = 200 * math.cos(self.angle) - 40 + 25 self.m_lightSource.setPos(xs, ys) for item in self.m_items: effect = item.graphicsEffect() delta = QPointF(item.x() - xs, item.y() - ys) effect.setOffset(QPointF(delta.toPoint() / 30)) dd = math.hypot(delta.x(), delta.y()) color = effect.color() color.setAlphaF(max(0.4, min(1 - dd / 200.0, 0.7))) effect.setColor(color) self.m_scene.update() if __name__ == '__main__': import sys app = QApplication(sys.argv) lighting = Lighting() lighting.setWindowTitle("Lighting and Shadows") lighting.resize(640, 480) lighting.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/effects/README0000644000076500000240000000135713245231431017622 0ustar philstaff00000000000000PyQt supports a number of graphics effects including blurring, drop shadows, opacity and colorizing. These examples demonstrate these different effects. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/graphicsview/0000755000076500000240000000000013245231431020010 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/graphicsview/anchorlayout.py0000755000076500000240000001121413245231431023074 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QSizeF, Qt from PyQt5.QtWidgets import (QApplication, QGraphicsAnchorLayout, QGraphicsProxyWidget, QGraphicsScene, QGraphicsView, QGraphicsWidget, QPushButton, QSizePolicy) def createItem(minimum, preferred, maximum, name): w = QGraphicsProxyWidget() w.setWidget(QPushButton(name)) w.setMinimumSize(minimum) w.setPreferredSize(preferred) w.setMaximumSize(maximum) w.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) return w if __name__ == '__main__': import sys app = QApplication(sys.argv) scene = QGraphicsScene() scene.setSceneRect(0, 0, 800, 480) minSize = QSizeF(30, 100) prefSize = QSizeF(210, 100) maxSize = QSizeF(300, 100) a = createItem(minSize, prefSize, maxSize, "A") b = createItem(minSize, prefSize, maxSize, "B") c = createItem(minSize, prefSize, maxSize, "C") d = createItem(minSize, prefSize, maxSize, "D") e = createItem(minSize, prefSize, maxSize, "E") f = createItem(QSizeF(30, 50), QSizeF(150, 50), maxSize, "F") g = createItem(QSizeF(30, 50), QSizeF(30, 100), maxSize, "G") l = QGraphicsAnchorLayout() l.setSpacing(0) w = QGraphicsWidget(None, Qt.Window) w.setPos(20, 20) w.setLayout(l) # Vertical. l.addAnchor(a, Qt.AnchorTop, l, Qt.AnchorTop) l.addAnchor(b, Qt.AnchorTop, l, Qt.AnchorTop) l.addAnchor(c, Qt.AnchorTop, a, Qt.AnchorBottom) l.addAnchor(c, Qt.AnchorTop, b, Qt.AnchorBottom) l.addAnchor(c, Qt.AnchorBottom, d, Qt.AnchorTop) l.addAnchor(c, Qt.AnchorBottom, e, Qt.AnchorTop) l.addAnchor(d, Qt.AnchorBottom, l, Qt.AnchorBottom) l.addAnchor(e, Qt.AnchorBottom, l, Qt.AnchorBottom) l.addAnchor(c, Qt.AnchorTop, f, Qt.AnchorTop) l.addAnchor(c, Qt.AnchorVerticalCenter, f, Qt.AnchorBottom) l.addAnchor(f, Qt.AnchorBottom, g, Qt.AnchorTop) l.addAnchor(c, Qt.AnchorBottom, g, Qt.AnchorBottom) # Horizontal. l.addAnchor(l, Qt.AnchorLeft, a, Qt.AnchorLeft) l.addAnchor(l, Qt.AnchorLeft, d, Qt.AnchorLeft) l.addAnchor(a, Qt.AnchorRight, b, Qt.AnchorLeft) l.addAnchor(a, Qt.AnchorRight, c, Qt.AnchorLeft) l.addAnchor(c, Qt.AnchorRight, e, Qt.AnchorLeft) l.addAnchor(b, Qt.AnchorRight, l, Qt.AnchorRight) l.addAnchor(e, Qt.AnchorRight, l, Qt.AnchorRight) l.addAnchor(d, Qt.AnchorRight, e, Qt.AnchorLeft) l.addAnchor(l, Qt.AnchorLeft, f, Qt.AnchorLeft) l.addAnchor(l, Qt.AnchorLeft, g, Qt.AnchorLeft) l.addAnchor(f, Qt.AnchorRight, g, Qt.AnchorRight) scene.addItem(w) scene.setBackgroundBrush(Qt.darkGreen) view = QGraphicsView(scene) view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/graphicsview/collidingmice/0000755000076500000240000000000013245231431022612 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/graphicsview/collidingmice/collidingmice.py0000755000076500000240000001771413245231431026003 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import math from PyQt5.QtCore import (qAbs, QLineF, QPointF, QRectF, qrand, qsrand, Qt, QTime, QTimer) from PyQt5.QtGui import (QBrush, QColor, QPainter, QPainterPath, QPixmap, QPolygonF) from PyQt5.QtWidgets import (QApplication, QGraphicsItem, QGraphicsScene, QGraphicsView, QGraphicsWidget) import mice_rc class Mouse(QGraphicsItem): Pi = math.pi TwoPi = 2.0 * Pi # Create the bounding rectangle once. adjust = 0.5 BoundingRect = QRectF(-20 - adjust, -22 - adjust, 40 + adjust, 83 + adjust) def __init__(self): super(Mouse, self).__init__() self.angle = 0.0 self.speed = 0.0 self.mouseEyeDirection = 0.0 self.color = QColor(qrand() % 256, qrand() % 256, qrand() % 256) self.setRotation(qrand() % (360 * 16)) # In the C++ version of this example, this class is also derived from # QObject in order to receive timer events. PyQt does not support # deriving from more than one wrapped class so we just create an # explicit timer instead. self.timer = QTimer() self.timer.timeout.connect(self.timerEvent) self.timer.start(1000 / 33) @staticmethod def normalizeAngle(angle): while angle < 0: angle += Mouse.TwoPi while angle > Mouse.TwoPi: angle -= Mouse.TwoPi return angle def boundingRect(self): return Mouse.BoundingRect def shape(self): path = QPainterPath() path.addRect(-10, -20, 20, 40) return path; def paint(self, painter, option, widget): # Body. painter.setBrush(self.color) painter.drawEllipse(-10, -20, 20, 40) # Eyes. painter.setBrush(Qt.white) painter.drawEllipse(-10, -17, 8, 8) painter.drawEllipse(2, -17, 8, 8) # Nose. painter.setBrush(Qt.black) painter.drawEllipse(QRectF(-2, -22, 4, 4)) # Pupils. painter.drawEllipse(QRectF(-8.0 + self.mouseEyeDirection, -17, 4, 4)) painter.drawEllipse(QRectF(4.0 + self.mouseEyeDirection, -17, 4, 4)) # Ears. if self.scene().collidingItems(self): painter.setBrush(Qt.red) else: painter.setBrush(Qt.darkYellow) painter.drawEllipse(-17, -12, 16, 16) painter.drawEllipse(1, -12, 16, 16) # Tail. path = QPainterPath(QPointF(0, 20)) path.cubicTo(-5, 22, -5, 22, 0, 25) path.cubicTo(5, 27, 5, 32, 0, 30) path.cubicTo(-5, 32, -5, 42, 0, 35) painter.setBrush(Qt.NoBrush) painter.drawPath(path) def timerEvent(self): # Don't move too far away. lineToCenter = QLineF(QPointF(0, 0), self.mapFromScene(0, 0)) if lineToCenter.length() > 150: angleToCenter = math.acos(lineToCenter.dx() / lineToCenter.length()) if lineToCenter.dy() < 0: angleToCenter = Mouse.TwoPi - angleToCenter; angleToCenter = Mouse.normalizeAngle((Mouse.Pi - angleToCenter) + Mouse.Pi / 2) if angleToCenter < Mouse.Pi and angleToCenter > Mouse.Pi / 4: # Rotate left. self.angle += [-0.25, 0.25][self.angle < -Mouse.Pi / 2] elif angleToCenter >= Mouse.Pi and angleToCenter < (Mouse.Pi + Mouse.Pi / 2 + Mouse.Pi / 4): # Rotate right. self.angle += [-0.25, 0.25][self.angle < Mouse.Pi / 2] elif math.sin(self.angle) < 0: self.angle += 0.25 elif math.sin(self.angle) > 0: self.angle -= 0.25 # Try not to crash with any other mice. dangerMice = self.scene().items(QPolygonF([self.mapToScene(0, 0), self.mapToScene(-30, -50), self.mapToScene(30, -50)])) for item in dangerMice: if item is self: continue lineToMouse = QLineF(QPointF(0, 0), self.mapFromItem(item, 0, 0)) angleToMouse = math.acos(lineToMouse.dx() / lineToMouse.length()) if lineToMouse.dy() < 0: angleToMouse = Mouse.TwoPi - angleToMouse angleToMouse = Mouse.normalizeAngle((Mouse.Pi - angleToMouse) + Mouse.Pi / 2) if angleToMouse >= 0 and angleToMouse < Mouse.Pi / 2: # Rotate right. self.angle += 0.5 elif angleToMouse <= Mouse.TwoPi and angleToMouse > (Mouse.TwoPi - Mouse.Pi / 2): # Rotate left. self.angle -= 0.5 # Add some random movement. if len(dangerMice) > 1 and (qrand() % 10) == 0: if qrand() % 1: self.angle += (qrand() % 100) / 500.0 else: self.angle -= (qrand() % 100) / 500.0 self.speed += (-50 + qrand() % 100) / 100.0 dx = math.sin(self.angle) * 10 self.mouseEyeDirection = 0.0 if qAbs(dx / 5) < 1 else dx / 5 self.setRotation(self.rotation() + dx) self.setPos(self.mapToParent(0, -(3 + math.sin(self.speed) * 3))) if __name__ == '__main__': import sys MouseCount = 7 app = QApplication(sys.argv) qsrand(QTime(0,0,0).secsTo(QTime.currentTime())) scene = QGraphicsScene() scene.setSceneRect(-300, -300, 600, 600) scene.setItemIndexMethod(QGraphicsScene.NoIndex) for i in range(MouseCount): mouse = Mouse() mouse.setPos(math.sin((i * 6.28) / MouseCount) * 200, math.cos((i * 6.28) / MouseCount) * 200) scene.addItem(mouse) view = QGraphicsView(scene) view.setRenderHint(QPainter.Antialiasing) view.setBackgroundBrush(QBrush(QPixmap(':/images/cheese.jpg'))) view.setCacheMode(QGraphicsView.CacheBackground) view.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate) view.setDragMode(QGraphicsView.ScrollHandDrag) view.setWindowTitle("Colliding Mice") view.resize(400, 300) view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/graphicsview/collidingmice/images/0000755000076500000240000000000013245231431024057 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/graphicsview/collidingmice/images/cheese.jpg0000644000076500000240000000572513245231431026026 0ustar philstaff00000000000000ÿØÿàJFIFHHÿîAdobed@ÿÛ„      ÿÀ^^ÿÝ ÿÄ¢  s!1AQa"q2‘¡±B#ÁRÑá3bð$r‚ñ%C4S’¢²csÂ5D'“£³6TdtÃÒâ&ƒ „”EF¤´VÓU(òãóÄÔäôeu…•¥µÅÕåõfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø)9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêúm!1AQa"q‘2¡±ðÁÑá#BRbrñ3$4C‚’S%¢c²ÂsÒ5âDƒT“ &6E'dtU7ò£³Ã()Óã󄔤´ÄÔäôeu…•¥µÅÕåõFVfv†–¦¶ÆÖæöGWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêúÿÚ ?ûAÓo¢‡Ç<7‰éÔéâk)n£rM ðÈ‚¥²AZ†úFù"7P¦cåâvù`ä•ÁHØt=F V¤š1`¤ìkã’ ¬I’Q­È‘·ê„4¯ÅŽûwÉlIb:¯ž<¿£Ìmîï+84ha£þU6~§§ïNŸ~eøžž/'‡zÿÑû?JíÔöÏ §¨Qy?Ö=°ˆq-Òš„j{d¼&aÆpJ‘Jt"˜øtŽ0UÔ‡nÛŒ ;@ÞÚ ˆšbJƒÄѨ|ù +|µ=ໞYâäÈbBÿ!%OßÇ,ˆÅÖý̼IŽTôk+[-:Ö+ e¶´€)þQ«îNç!–|g•À§šÝNÊ=NÂæÍ¶€PžÌ7ÊÄD½'«!#a…i¾\’ݽ;‹vJÕÆÿÛ˜Ù#,G„¹-€©Ï ·¨J/çŽÚ9îfqP!yôEI9|HËY²h>Ró'æšõKébÐIÓlQˆÒž«Ýœƒ×Àe>)ŸZr#†1çºqå_>y¢Öîõ‹‡¾µ”"L`R¬v÷ȆíÄ%ÈSé›I–EŠhÛœR…daЩfA ‹ØZ¨=5µ„ 1€{|ˆ34›jzïNMïí<™†¸5 ‘ZW·Ë5µŒ¬ k-©­ð9$.ãN„ø}H%A]ÈÔøø×#JÿÿÔûCÉ)Øðzz…zt ôÉÄð›Ô‹K­´}Ní ¿U”±fŽZ”ÿ`À~'›<ûÆ\'¸Ý|ý+Ò†ÄZ'è«`¾¤«xÊ(!ŒÛ“56ÄiñBbRÉ]"þò@jñrO¯4*³Ü¹øª±<@Ø|€ðrä–Be.e”ˆ ª@?>”Ê:3s1 Ü.ʵýXlõE!Üo°&§¬ z×åŠUÐöë¡} 4ðÚ¸ÄyªrRO]öOL<;Õ£‰ÿÕû8ÀÖ£®x]½B“G^„×¹Ä*€·]Ù¶5ÛÄâ(VH _‰ºøòDŒx‚6ªc¢€6##Í’Ÿ¨T|@úâ`–ê\ñ=ÎB’ºª*¤×ß TJT{cJ»wQ·l•*àkþKxd$ÛÔoô`WÿÖû=Q×–xSÔ/$q$liÓÙRnK‹}Q»³¡º†mÁb4ö­r2‘$&1âºf‡æhîª5;É®9 $2HÅ¢„Ҟ؀@«t¢9=âÔ¹†'‘x4ˆ®ÉàXTŒÈɵ*Ƈ®ô4Êì³RcÇzn{âÔL½‡\°´&жþq¯õ–”¯Ñ€Á"j«)$PŽ»ä¦V¦%#š’y)‘¥ÿ×û;ÐPÇ<*Þ¡PPûõÄ«¤U(A^JÀ†SЂ(AƃanöÑGéÃaF¯Ùgäƒè¥Oß™~.!¿þý¿$LõTS#3™$¶ÔÙ‹“'¾¬€¦…jFÕ4`½ÇÏä”5Á"ƒ¹é’Ç»0/8ùÂÇÊvB{ Ó\KQmj†!jeEz岘€óc—Ïòþsù¦æê–‘Ckk_†10»1©ÊŒæz·Œ1Ròoæ<úÄñXêð¤rÌBÅs*9”“JøŒÌA©5Ï«dа'¥wtã³Tdô–µíN™ŽÜÿÿÐû4ÊÛýÆxCÔ¶ŒAZ‘Ö§$‚¨O&@¯°Û¯øTo@r*´ÍU AÔø{âW§A×®ˆC¼m+- Fãl³c7Ë¿™¶7:šeˆ‚ÖÖ¡bDë@?‰9‹’w77 ÆK,ŠF›uðË,Ä0 [!‡Ë2YÜE…Ò}[.Òi½1!ñ#¾lqJñ‚]|ÅJ“~'Óú2¾­ÿÑû9-üNxCÔ0/2k^e°Ôôû- F‹QŠxÚ{¹¦vP[øþÖÕ©öÆy죌˫?µvx‘ =t=A"´>ã$Fì¹A¹p¶ pU vß׆Q€ì—râ4à ‡™yÃËku¨&«lÞµåw*àSìrYôüQãÇËöì«ÒQZF†„§«â‚”¨Úž,Àã2<7»q¡»'m®\E|˜ìÔO†CI£žLüÞÏö°É©ˆ”ÏÒŠâ´‚ºˆÃÿ7ÄŸ¦™¸ÍÁÃCo–ßo7w=U9ÓM©˜öÝOÿÒûy“§9/Ññîøôa>Ý^ÚêÜeÓL+È$ÔB|wäGß•œÚ~+ž;;ÝHú~‰G-}[{•'ŸP–)¾©d–Öá}麻ñïSÊ´ñ É㙜%áDF5½o*ëw¿¾€ b ÄI>idâÅá”§!ðÔeiÿÙPyQt5_gpl-5.10.1/examples/graphicsview/collidingmice/mice.qrc0000644000076500000240000000014113245231431024232 0ustar philstaff00000000000000 images/cheese.jpg PyQt5_gpl-5.10.1/examples/graphicsview/collidingmice/mice_rc.py0000644000076500000240000003220313245231431024565 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 5 04:43:58 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x0b\xd5\ \xff\ \xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x02\x01\x00\x48\x00\ \x48\x00\x00\xff\xee\x00\x0e\x41\x64\x6f\x62\x65\x00\x64\x40\x00\ \x00\x00\x01\xff\xdb\x00\x84\x00\x02\x02\x02\x02\x02\x02\x02\x02\ \x02\x02\x03\x02\x02\x02\x03\x04\x03\x02\x02\x03\x04\x05\x04\x04\ \x04\x04\x04\x05\x06\x05\x05\x05\x05\x05\x05\x06\x06\x07\x07\x08\ \x07\x07\x06\x09\x09\x0a\x0a\x09\x09\x0c\x0c\x0c\x0c\x0c\x0c\x0c\ \x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x01\x03\x03\x03\x05\x04\x05\x09\ \x06\x06\x09\x0d\x0a\x09\x0a\x0d\x0f\x0e\x0e\x0e\x0e\x0f\x0f\x0c\ \x0c\x0c\x0c\x0c\x0f\x0f\x0c\x0c\x0c\x0c\x0c\x0c\x0f\x0c\x0c\x0c\ \x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\ \x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\xff\xc0\x00\x11\x08\x00\x5e\ \x00\x5e\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xdd\x00\x04\ \x00\x0c\xff\xc4\x01\xa2\x00\x00\x00\x07\x01\x01\x01\x01\x01\x00\ \x00\x00\x00\x00\x00\x00\x00\x04\x05\x03\x02\x06\x01\x00\x07\x08\ \x09\x0a\x0b\x01\x00\x02\x02\x03\x01\x01\x01\x01\x01\x00\x00\x00\ \x00\x00\x00\x00\x01\x00\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\ \x10\x00\x02\x01\x03\x03\x02\x04\x02\x06\x07\x03\x04\x02\x06\x02\ \x73\x01\x02\x03\x11\x04\x00\x05\x21\x12\x31\x41\x51\x06\x13\x61\ \x22\x71\x81\x14\x32\x91\xa1\x07\x15\xb1\x42\x23\xc1\x52\xd1\xe1\ \x33\x16\x62\xf0\x24\x72\x82\xf1\x25\x43\x34\x53\x92\xa2\xb2\x63\ \x73\xc2\x35\x44\x27\x93\xa3\xb3\x36\x17\x54\x64\x74\xc3\xd2\xe2\ \x08\x26\x83\x09\x0a\x18\x19\x84\x94\x45\x46\xa4\xb4\x56\xd3\x55\ \x28\x1a\xf2\xe3\xf3\xc4\xd4\xe4\xf4\x65\x75\x85\x95\xa5\xb5\xc5\ \xd5\xe5\xf5\x66\x76\x86\x96\xa6\xb6\xc6\xd6\xe6\xf6\x37\x47\x57\ \x67\x77\x87\x97\xa7\xb7\xc7\xd7\xe7\xf7\x38\x48\x58\x68\x78\x88\ \x98\xa8\xb8\xc8\xd8\xe8\xf8\x29\x39\x49\x59\x69\x79\x89\x99\xa9\ \xb9\xc9\xd9\xe9\xf9\x2a\x3a\x4a\x5a\x6a\x7a\x8a\x9a\xaa\xba\xca\ \xda\xea\xfa\x11\x00\x02\x02\x01\x02\x03\x05\x05\x04\x05\x06\x04\ \x08\x03\x03\x6d\x01\x00\x02\x11\x03\x04\x21\x12\x31\x41\x05\x51\ \x13\x61\x22\x06\x71\x81\x91\x32\xa1\xb1\xf0\x14\xc1\xd1\xe1\x23\ \x42\x15\x52\x62\x72\xf1\x33\x24\x34\x43\x82\x16\x92\x53\x25\xa2\ \x63\xb2\xc2\x07\x73\xd2\x35\xe2\x44\x83\x17\x54\x93\x08\x09\x0a\ \x18\x19\x26\x36\x45\x1a\x27\x64\x74\x55\x37\xf2\xa3\xb3\xc3\x28\ \x29\xd3\xe3\xf3\x84\x94\xa4\xb4\xc4\xd4\xe4\xf4\x65\x75\x85\x95\ \xa5\xb5\xc5\xd5\xe5\xf5\x46\x56\x66\x76\x86\x96\xa6\xb6\xc6\xd6\ \xe6\xf6\x47\x57\x67\x77\x87\x97\xa7\xb7\xc7\xd7\xe7\xf7\x38\x48\ \x58\x68\x78\x88\x98\xa8\xb8\xc8\xd8\xe8\xf8\x39\x49\x59\x69\x79\ \x89\x99\xa9\xb9\xc9\xd9\xe9\xf9\x2a\x3a\x4a\x5a\x6a\x7a\x8a\x9a\ \xaa\xba\xca\xda\xea\xfa\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\ \x11\x00\x3f\x00\xfb\x41\xd3\x6f\xa2\x87\xc7\x3c\x37\x89\xe9\xd4\ \xe9\xe2\x6b\x90\x29\x6e\xa3\x72\x4d\x0d\x0f\x8f\xf0\xc8\x82\xa5\ \xb2\x41\x5a\x86\xfa\x46\xf9\x22\x37\x50\xa6\x63\xe5\xe2\x76\xf9\ \x60\xe4\x95\xc1\x48\xd8\x74\x3d\x46\x0b\x56\xa4\x9a\x18\x14\x31\ \x60\xa4\xec\x6b\xe3\x92\x1b\xa0\xac\x49\x92\x51\x1b\x02\xad\xc8\ \x91\xb7\xea\xc2\x84\x34\xaf\xc5\x8e\xfb\x77\xc9\x81\x6c\x49\x62\ \x3a\xaf\x9e\x3c\xbf\xa3\xcc\x6d\xee\xef\x2b\x38\x34\x68\x61\x1e\ \xa3\x03\xfe\x55\x36\x1f\x7e\x3c\x51\x09\x11\x94\x91\xfa\x47\x9a\ \xb4\x9d\x6e\xa9\x61\x75\xce\x50\x2a\x60\x70\x51\xe9\xec\x0f\x5f\ \xa3\x11\x38\xc8\xd2\x0c\x65\x16\x48\x25\x3c\x5b\x7f\x0c\x4c\x37\ \x5e\x2d\x9f\xff\xd0\xfb\x3a\xfb\x0a\xee\x4d\x6b\x4c\xf0\xb0\x1e\ \xa1\x6f\x2d\xfa\x6e\x71\x21\x34\xb8\x11\x5e\x9b\xe4\x50\xd3\x53\ \xa7\x8e\xe7\x25\x6a\xda\xd0\xee\x48\x03\xc7\x04\x95\x4e\x59\x12\ \x15\x2e\xce\x02\x81\x52\x7e\x59\x00\x2d\x2f\x9c\xbf\x36\xbc\xc7\ \xa8\x98\xa5\x5d\x1f\xce\x9a\x7e\x8f\x67\x14\x6c\xb7\x36\xf1\xd5\ \xef\x5d\xc8\x20\x08\xe8\x0f\x1a\xd7\xae\xc4\x65\xb8\xf2\x00\x6a\ \x89\xfb\x99\xc6\x16\x37\x67\x9f\x93\xcf\xa8\xdc\xf9\x2a\xda\xe2\ \xfe\x49\xa6\x9d\xee\x65\x58\xee\x2e\x09\x77\x68\xd4\x2d\x0d\x4e\ \xf5\xa9\x3d\x72\x73\x02\xb8\xbb\xda\xe5\xb4\xa9\x96\xf9\xa2\x6b\ \x8b\x2d\x12\xfa\xea\xdc\x11\x3d\x38\x44\x47\x50\x5b\x6a\xfd\x19\ \x5c\xe5\x51\xd9\x61\x1e\x29\x51\x7c\xdf\x17\x97\xda\xf2\x43\x35\ \xc2\x16\x66\x35\x24\xd4\xd0\x93\x95\x44\x97\x22\x42\x99\x5e\x9b\ \xa3\x5c\xe9\x77\x56\xd7\x56\xfc\x97\x83\x06\x53\x4e\x84\x65\x73\ \xca\x8e\x0b\x7b\xbf\xac\x46\x9e\x2f\x3d\x3d\xcc\x3e\xa7\xa7\xef\ \x4e\x9f\x7e\x65\xf8\x9e\x9e\x2f\x27\x13\x87\x7a\x7f\xff\xd1\xfb\ \x3f\x4a\xed\xd4\xf6\xcf\x0b\xa7\xa8\x51\x79\x15\x3f\xd6\x3d\xb0\ \x88\x71\x2d\xd2\x81\x9a\x84\x16\x6a\x7b\x64\xbc\x26\x06\x61\xc6\ \x70\x4a\x91\x4a\x74\x22\x98\xf8\x74\x8e\x30\x55\xd4\x87\x07\x6e\ \xdb\x8c\x8f\x0b\x3b\x40\xde\xda\x0b\x88\x9a\x16\x62\x12\x4a\x83\ \xc4\xd1\xa8\x7c\x0e\xf9\x20\x05\xee\xac\x15\xbf\x2b\x7c\xb5\x3d\ \xe0\xbb\x9e\x59\x1b\xe2\xe4\xc8\x62\x42\xff\x00\x21\x25\x4f\xdf\ \xc7\x2c\x88\xc5\xd6\xfd\xcc\xbc\x49\x8e\x54\xf4\x6b\x2b\x5b\x2d\ \x3a\xd6\x1b\x2b\x0b\x65\xb6\xb4\x80\x11\x1c\x29\xfe\x51\xab\x13\ \xee\x4e\xe7\x21\x96\x7c\x67\x95\x00\xc0\x0e\xa7\x9a\xdd\x4e\xca\ \x3d\x4e\xc2\xe6\xcd\xb6\x12\x80\x50\x9e\xcc\x37\x15\xca\xc4\x44\ \xbd\x27\xab\x21\x23\x13\x61\x85\x69\xbe\x5c\x92\xdd\xbd\x3b\x8b\ \x76\x4a\x1d\xd5\xc6\xff\x00\xdb\x98\xd9\x23\x2c\x47\x84\xb9\x3c\ \x42\x7b\xb2\xdf\xd0\x29\x38\x58\x91\x15\x55\x57\x76\x3f\x65\x47\ \x72\x4f\xb6\x47\x06\x9a\x59\x32\xd0\x3b\x75\x3d\xc1\xae\x79\xc4\ \x42\x61\xe9\xdb\x95\x16\xf4\xff\x00\x47\x54\xf4\xf9\x53\xf6\x69\ \xc7\x95\x3f\x1c\xd8\xdc\x38\xab\xf8\x7f\x43\x8b\x52\xab\xea\xff\ \x00\xff\xd2\xfb\x3e\x0f\x2d\x80\xa9\xcf\x0a\xb7\xa8\x4a\x2f\xe7\ \x8e\xda\x39\xee\x66\x71\x1c\x50\x21\x79\x1c\xf4\x01\x45\x49\x39\ \x7c\x48\x02\xcb\x59\xb2\x68\x3e\x52\xf3\x27\xe6\x7f\x9a\xf5\x4b\ \xe9\x62\xd0\x49\xd3\x6c\x51\x88\x8d\xd2\x9e\xab\x81\xdd\x9c\x83\ \xd7\xc0\x65\x3e\x29\x9f\x5a\x72\x23\x86\x31\xe7\xba\x71\xe5\x5f\ \x3e\x79\xa2\xd6\xee\x08\xf5\x8b\x87\xbe\xb5\x94\x81\x22\x4c\x01\ \x60\x0f\x52\xac\x05\x76\xf7\xc8\x1c\x86\x06\xed\x12\xc4\x25\xc8\ \x53\xe9\x9b\x49\x96\x45\x8a\x68\xdb\x9c\x52\x85\x64\x61\xd0\xa9\ \x1b\x66\x41\x20\x8b\x0e\x3c\x6c\x1a\x4c\x4d\x08\x3b\x74\x39\x53\ \x6a\xd0\xb4\xad\x0d\x3d\xb0\x5a\xb7\xb8\x20\x56\x83\x1b\x55\xe2\ \x4e\x3d\x45\x6a\x30\x91\x6a\xa1\x15\xed\xd4\x44\x8a\x2c\xb1\x8f\ \xb0\x8e\xa1\xa9\xf2\xae\xf9\x31\x9a\x63\x6d\x8f\xbc\x02\xd6\x60\ \x3d\xcb\xa4\xbc\xbc\xb9\xf8\x5d\xb8\x45\xfc\x8a\x02\x83\xf3\x00\ \x63\x3c\xb2\x90\xa3\xb0\xee\x00\x01\xf6\x2c\x71\x81\xc9\xc6\x36\ \xe2\x14\x1d\x89\xf8\xbe\xef\xeb\x95\x58\x6c\xa7\xff\xd3\xfb\x3c\ \xa4\x0e\x9b\x30\xf0\xcf\x07\xb7\xa9\x48\xfc\xc9\x66\xf7\xbe\x5f\ \xd6\xe0\x88\x16\x96\x58\x1b\x8a\x8e\xa4\x0a\x13\xf8\x64\xc8\x33\ \x89\x01\x61\xb4\xc1\x2f\x9e\x34\x6f\x29\x2b\x86\x01\x0a\x90\x76\ \x04\x6f\x53\x98\xd0\x90\xe4\x79\xb9\x99\x3c\x99\xef\xf8\x20\x08\ \x22\x67\x00\x48\xa7\x96\xc3\x31\x67\x9a\xe7\xc3\xd1\x63\x10\x05\ \xbd\x3f\x46\xb2\x7b\x4d\x26\xc6\x19\x3e\xd8\x5a\xa8\x3d\x81\x35\ \x19\xb5\x84\x0c\x31\x80\x7b\x9d\x7c\x88\x33\x34\x9b\x00\x6a\x7a\ \xef\x4e\x4d\xef\xed\x90\x3c\x99\x86\xb8\x35\x09\x00\x91\x5a\x57\ \xb7\xcb\x10\x0f\x35\xb5\x8c\xac\x0d\x6b\x81\x2d\xa9\xad\x01\xf0\ \x39\x24\x2e\xe3\x4e\x84\x0f\x0e\xf8\x15\x7d\x48\x1e\x07\x25\x41\ \x5d\xc8\xd4\xf8\xf8\xd7\x23\x4a\xff\x00\xff\xd4\xfb\x43\xc9\x29\ \xd8\x1c\xf0\x7a\x7a\x85\x1e\x7f\x1f\x7a\x74\x20\xf4\xc9\xc4\xf0\ \x9b\x1c\xd4\x8b\x4b\xad\xb4\x7d\x14\x4e\xed\x0c\xbf\x55\x94\xb1\ \x66\x8e\x5a\x94\xff\x00\x60\xc0\x7e\x07\x27\x9b\x06\x3c\xfb\xc6\ \x5c\x27\xb8\xdd\x7c\x08\xfd\x2b\x1c\xd2\x86\xc4\x5a\x7f\x27\xe8\ \xab\x60\xbe\xa4\xab\x78\xca\x28\x21\x8c\x1a\x13\xdb\x93\x35\x36\ \xc4\x69\xf1\x42\x62\x52\x90\xc9\x5d\x22\x0e\xfe\xf2\x40\x6a\xf1\ \x72\x4f\x90\xaf\x34\x2a\xb3\xdc\xb9\x9d\xf8\xaa\xb1\x3c\x40\xd8\ \x7c\x80\xf0\x18\x72\xe4\x96\x42\x65\x2e\x65\x94\x00\x88\xa0\xaa\ \x40\x3f\x3e\x94\xca\x3a\x33\x73\x31\x20\x06\xdc\x2e\xca\xb5\xfd\ \x58\x6c\xf5\x45\x21\xdc\x6f\xb0\x26\xa7\x14\xac\x0a\x7a\xd7\xe5\ \x8a\x55\x14\x13\xd0\xf6\xeb\x8d\xa1\x7d\x09\x34\x1d\xf0\xda\xb8\ \xc4\x79\xaa\x72\x52\x4f\x5d\xf6\x1f\x4f\x4c\x3c\x3b\xd5\xa3\x89\ \xff\xd5\xfb\x38\xc0\xd6\xa3\xae\x78\x5d\xbd\x42\x93\x47\x5e\x84\ \xd7\xb9\xc4\x2a\x80\xb7\x5d\xd9\xb6\x35\xdb\xc4\xe2\x00\x28\x56\ \x48\xa0\x5f\x89\xba\xf8\x9d\xf2\x44\x1e\x8c\x78\x82\x36\xaa\x63\ \xa2\x80\x05\x36\x23\x23\xcd\x92\x9f\xa8\x54\x7c\x40\x9d\xfa\xe2\ \x60\x96\xea\x5c\xf1\x14\x1f\x3d\xce\x42\x92\xba\xaa\x2a\xa4\xd7\ \xdf\x0f\x0a\x16\x54\x03\x4a\x54\x7b\x63\x4a\xbb\x9d\x77\x51\xb7\ \x6c\x95\x2a\xe0\x6b\xfe\x4b\x78\x64\x24\x15\xdb\xd4\x6f\xf4\x60\ \x57\xff\xd6\xfb\x3d\x51\xd7\x7f\x96\x78\x53\xd4\x2f\x24\x71\x24\ \x6c\x69\xd3\x01\xd9\x52\x8d\x6e\x4b\x8b\x7d\x1b\x51\xbb\xb3\xa1\ \xba\x86\x12\x6d\xc1\x1b\x06\x62\x00\x34\xf6\xad\x72\x32\x91\x11\ \x24\x26\x31\x12\x90\x05\xe2\xba\x66\x87\xe6\x68\xee\x06\xaa\x35\ \x3b\xc9\xae\x39\x09\x24\x32\x48\xc5\x18\x1e\xa2\x84\xd2\x9e\xd8\ \x80\x40\x07\xab\x74\xa2\x39\x3d\xe2\xd4\xb9\x86\x27\x91\x78\x34\ \x88\xae\xc9\xe0\x58\x54\x8c\xc8\xc9\xb5\x17\x16\x2a\xc6\x87\xae\ \xf4\x34\xca\xec\xb3\x52\x63\xc7\x7a\x6e\x7b\xe2\x16\xd4\x4c\xbd\ \x87\x5c\xb0\x06\x04\xb4\x26\x00\xd0\xb6\xfe\x03\x1e\x04\x71\xaf\ \xf5\x96\x94\xaf\xd1\x80\xc1\x22\x6a\xab\x29\x24\x50\x8e\xbb\xe4\ \x08\xa6\x56\xa6\x25\x23\x9a\x92\x79\x12\x29\x91\xa5\x7f\xff\xd7\ \xfb\x3b\xd0\x50\x1a\x0f\xc7\x3c\x2a\xde\xa1\x50\x50\xfb\xf5\xc4\ \xab\xa4\x55\x28\x41\x5e\x4a\xc0\x86\x53\xd0\x82\x28\x41\xc6\x04\ \x83\x61\x05\x0f\x6e\xf6\xd1\x47\xe9\xc3\x61\x46\xaf\xd9\x67\xe4\ \x83\xe8\xa5\x4f\xdf\x99\x7e\x2e\x21\xbf\x0e\xfe\xfd\xbf\x1f\x16\ \x24\x4c\xf5\x54\x53\x23\x33\x99\x00\x24\xb6\xd4\x1e\xd9\x8b\x93\ \x27\x19\xbe\xac\x80\xa6\x85\x6a\x46\xd5\x34\x60\xbd\xc7\xcf\x01\ \xe4\x94\x35\xc1\x22\x83\xb9\xe9\x92\xc7\xbb\x19\x30\x2f\x38\xf9\ \xc2\xc7\xca\x76\x42\x7b\xa0\xd3\x5c\x4b\x51\x6d\x6a\x86\x8d\x21\ \x1d\x6a\x7f\x65\x45\x7a\xe5\xb2\x98\x80\xf3\x63\x08\x19\x97\xcf\ \xf2\xfe\x73\xf9\xa6\xe6\xea\x96\x91\x43\x6b\x6b\x5f\x86\x31\x0f\ \x30\x07\xbb\x31\xa9\xca\x8c\xe6\x7a\xb7\x8c\x31\x0f\x52\xf2\x6f\ \xe6\x3c\xfa\xc4\xf1\x58\xea\xf0\xa4\x72\xcc\x42\xc5\x73\x10\x2a\ \x39\x1e\x81\x94\x93\x4a\xf8\x8c\x11\xcc\x41\xa9\x35\xcf\x10\xab\ \x0f\x64\x8d\x8a\xb0\x27\xa5\x77\x19\x74\xe3\xb3\x54\x64\x8d\xf4\ \x96\xb5\xed\x4e\x99\x8e\xdc\xff\x00\xff\xd0\xfb\x34\xca\xdb\x1e\ \xfd\xc6\x78\x43\xd4\xb6\x8c\x41\x5a\x91\xd6\xa7\x24\x82\xa8\x4f\ \x26\x00\x12\x40\xaf\xb0\xdb\x02\xaf\xf8\x54\x6f\x40\x72\x2a\xb4\ \x02\xcd\x55\x0d\x41\xd4\xf8\x7b\xe2\x02\x57\x15\xa7\x41\xd7\xae\ \x1e\x88\x43\xbc\x6d\x2b\x2d\x0d\x46\xe3\x6c\xb3\x19\x63\x37\xcb\ \xbf\x99\xb6\x37\x3a\x8f\x9a\x65\x88\x82\xd6\xd6\xa1\x62\x44\xeb\ \x40\x00\x3f\x89\x39\x8b\x92\x77\x37\x37\x0c\x00\xc6\x12\x4b\x1f\ \x2c\x8a\x46\x1a\x1d\x9b\x75\xf0\xcb\x2c\xc4\x30\x20\x5b\x21\x87\ \xcb\x32\x59\xdc\x45\x3c\x51\xb2\x0d\x89\xa7\x6a\x66\x2c\xf3\x71\ \x36\x08\x3e\x85\xd2\x7d\x5b\x8d\x2e\xd2\x69\x7f\xbd\x31\x81\x21\ \xf1\x23\xbe\x6c\x71\x4a\xf1\x82\x5d\x7c\xc5\x4a\x93\x7e\x27\xd3\ \xfa\x32\xbe\xad\x8f\xff\xd1\xfb\x39\x2d\x06\xfc\x4e\x78\x43\xd4\ \x30\x2f\x32\x6b\x5e\x65\xb0\xd4\xf4\xfb\x2d\x0b\x46\x8b\x51\x8a\ \x78\xda\x7b\xb9\xa6\x76\x50\x15\x5b\x8f\x08\xf8\xfe\xd6\xd5\xa9\ \xf6\xc6\x79\x04\x06\xec\xa3\x8c\xcb\xab\x3f\xb5\x76\x78\x91\x9d\ \x0a\x3d\x01\x74\x3d\x41\x22\xb4\x3e\xe3\x24\x46\xec\x02\xb9\x41\ \xb9\x1d\x70\x14\xb6\xa0\x70\x55\x0c\x76\xdf\x7f\xd7\x86\x90\xef\ \x87\xa7\x8f\x51\x80\xec\x97\x72\xe2\x00\x34\xc3\x19\x20\x87\x99\ \x79\xc3\xcb\x6b\x75\xa8\x26\xab\x14\x6c\xde\xb5\x04\xe5\x77\x2a\ \xe0\x01\x53\xec\x72\x59\xf4\xfc\x51\xe3\x8f\xc7\xcb\xf6\x16\xec\ \x19\xab\xd2\x51\x5a\x46\x86\x84\xa7\xab\x0e\xe2\x82\x94\xa8\xda\ \x9e\x1f\x2c\xc0\xe3\x32\x3c\x37\xbb\x71\xa1\xbb\x27\x6d\x01\xae\ \x5c\x45\x14\x7c\x98\xec\x06\xd4\x1f\x4f\x86\x43\x49\xa3\x9e\x4c\ \xfc\x11\xde\xcf\xf6\xb0\xc9\xa9\x88\x8d\x94\xcf\xd2\x8a\x08\xe2\ \xb4\x82\x8f\x1d\xba\x88\xc3\xff\x00\x37\x11\xc4\x9f\xa6\x99\xb8\ \xcd\xc1\x13\xc3\x0e\x43\x6f\x96\xdf\x6f\x37\x06\x16\x77\x3d\x55\ \x39\x1a\xd3\x8f\x4d\xa9\x98\xf6\xdd\x4f\xff\xd2\xfb\x3c\x69\xc8\ \xf5\x23\xbe\x78\x4e\xcf\x50\xd0\xe4\x5c\x7a\x5e\xa2\xb5\x0e\xc9\ \xe1\xf4\x54\xe4\xa3\x7d\x11\x2a\xea\xbd\x00\xe3\x50\x41\xf6\xc8\ \xa5\x78\xe7\xe1\x51\xf4\x62\x50\xb8\xd6\x83\xae\x05\x51\x25\xb9\ \x8a\x83\xf3\xed\x85\x2b\x8f\x2a\x0c\x21\x0e\x53\x74\x18\x9b\x55\ \xe4\xc3\xed\x03\x4e\x05\x7b\xf2\xe5\xb5\x3e\x79\x93\xa7\x39\x2f\ \xd1\xf1\xee\xf8\xf4\x61\x3e\x1a\xdd\x5e\xda\xea\xdc\x90\x65\xd3\ \x14\x4c\x2b\xc8\x24\xd4\x42\x7c\x77\xe4\x47\xdf\x95\x9c\xda\x7e\ \x2b\x9e\x3b\x3b\xdd\x48\x81\xfa\x7e\xc2\x89\x47\x2d\x7d\x5b\x7b\ \x95\x27\x9f\x50\x96\x29\xbe\xa9\x64\x96\xd6\xe1\x7f\x7d\xe9\xba\ \xbb\xf1\xef\x53\xca\xb4\xf1\xa0\xc9\xe3\x99\x9c\x25\xe1\x44\x46\ \x35\xbd\x6f\x2a\xeb\x77\xbf\xbe\x80\x0d\x62\x20\x11\xc4\x49\x3e\ \x69\x64\x03\xe2\x1c\x8f\xc5\xe1\x94\x1a\xa7\x21\x19\xf0\xd4\x65\ \x69\x7f\xff\xd9\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0a\ \x0c\x9d\x6c\x07\ \x00\x63\ \x00\x68\x00\x65\x00\x65\x00\x73\x00\x65\x00\x2e\x00\x6a\x00\x70\x00\x67\ " qt_resource_struct = b"\ \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\x12\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() PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/0000755000076500000240000000000013245231431022432 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/diagramscene.py0000755000076500000240000007472013245231431025443 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import math from PyQt5.QtCore import (pyqtSignal, QLineF, QPointF, QRect, QRectF, QSize, QSizeF, Qt) from PyQt5.QtGui import (QBrush, QColor, QFont, QIcon, QIntValidator, QPainter, QPainterPath, QPen, QPixmap, QPolygonF) from PyQt5.QtWidgets import (QAction, QApplication, QButtonGroup, QComboBox, QFontComboBox, QGraphicsItem, QGraphicsLineItem, QGraphicsPolygonItem, QGraphicsScene, QGraphicsTextItem, QGraphicsView, QGridLayout, QHBoxLayout, QLabel, QMainWindow, QMenu, QMessageBox, QSizePolicy, QToolBox, QToolButton, QWidget) import diagramscene_rc class Arrow(QGraphicsLineItem): def __init__(self, startItem, endItem, parent=None, scene=None): super(Arrow, self).__init__(parent, scene) self.arrowHead = QPolygonF() self.myStartItem = startItem self.myEndItem = endItem self.setFlag(QGraphicsItem.ItemIsSelectable, True) self.myColor = Qt.black self.setPen(QPen(self.myColor, 2, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin)) def setColor(self, color): self.myColor = color def startItem(self): return self.myStartItem def endItem(self): return self.myEndItem def boundingRect(self): extra = (self.pen().width() + 20) / 2.0 p1 = self.line().p1() p2 = self.line().p2() return QRectF(p1, QSizeF(p2.x() - p1.x(), p2.y() - p1.y())).normalized().adjusted(-extra, -extra, extra, extra) def shape(self): path = super(Arrow, self).shape() path.addPolygon(self.arrowHead) return path def updatePosition(self): line = QLineF(self.mapFromItem(self.myStartItem, 0, 0), self.mapFromItem(self.myEndItem, 0, 0)) self.setLine(line) def paint(self, painter, option, widget=None): if (self.myStartItem.collidesWithItem(self.myEndItem)): return myStartItem = self.myStartItem myEndItem = self.myEndItem myColor = self.myColor myPen = self.pen() myPen.setColor(self.myColor) arrowSize = 20.0 painter.setPen(myPen) painter.setBrush(self.myColor) centerLine = QLineF(myStartItem.pos(), myEndItem.pos()) endPolygon = myEndItem.polygon() p1 = endPolygon.first() + myEndItem.pos() intersectPoint = QPointF() for i in endPolygon: p2 = i + myEndItem.pos() polyLine = QLineF(p1, p2) intersectType = polyLine.intersect(centerLine, intersectPoint) if intersectType == QLineF.BoundedIntersection: break p1 = p2 self.setLine(QLineF(intersectPoint, myStartItem.pos())) line = self.line() angle = math.acos(line.dx() / line.length()) if line.dy() >= 0: angle = (math.pi * 2.0) - angle arrowP1 = line.p1() + QPointF(math.sin(angle + math.pi / 3.0) * arrowSize, math.cos(angle + math.pi / 3) * arrowSize) arrowP2 = line.p1() + QPointF(math.sin(angle + math.pi - math.pi / 3.0) * arrowSize, math.cos(angle + math.pi - math.pi / 3.0) * arrowSize) self.arrowHead.clear() for point in [line.p1(), arrowP1, arrowP2]: self.arrowHead.append(point) painter.drawLine(line) painter.drawPolygon(self.arrowHead) if self.isSelected(): painter.setPen(QPen(myColor, 1, Qt.DashLine)) myLine = QLineF(line) myLine.translate(0, 4.0) painter.drawLine(myLine) myLine.translate(0,-8.0) painter.drawLine(myLine) class DiagramTextItem(QGraphicsTextItem): lostFocus = pyqtSignal(QGraphicsTextItem) selectedChange = pyqtSignal(QGraphicsItem) def __init__(self, parent=None, scene=None): super(DiagramTextItem, self).__init__(parent, scene) self.setFlag(QGraphicsItem.ItemIsMovable) self.setFlag(QGraphicsItem.ItemIsSelectable) def itemChange(self, change, value): if change == QGraphicsItem.ItemSelectedChange: self.selectedChange.emit(self) return value def focusOutEvent(self, event): self.setTextInteractionFlags(Qt.NoTextInteraction) self.lostFocus.emit(self) super(DiagramTextItem, self).focusOutEvent(event) def mouseDoubleClickEvent(self, event): if self.textInteractionFlags() == Qt.NoTextInteraction: self.setTextInteractionFlags(Qt.TextEditorInteraction) super(DiagramTextItem, self).mouseDoubleClickEvent(event) class DiagramItem(QGraphicsPolygonItem): Step, Conditional, StartEnd, Io = range(4) def __init__(self, diagramType, contextMenu, parent=None): super(DiagramItem, self).__init__(parent) self.arrows = [] self.diagramType = diagramType self.contextMenu = contextMenu path = QPainterPath() if self.diagramType == self.StartEnd: path.moveTo(200, 50) path.arcTo(150, 0, 50, 50, 0, 90) path.arcTo(50, 0, 50, 50, 90, 90) path.arcTo(50, 50, 50, 50, 180, 90) path.arcTo(150, 50, 50, 50, 270, 90) path.lineTo(200, 25) self.myPolygon = path.toFillPolygon() elif self.diagramType == self.Conditional: self.myPolygon = QPolygonF([ QPointF(-100, 0), QPointF(0, 100), QPointF(100, 0), QPointF(0, -100), QPointF(-100, 0)]) elif self.diagramType == self.Step: self.myPolygon = QPolygonF([ QPointF(-100, -100), QPointF(100, -100), QPointF(100, 100), QPointF(-100, 100), QPointF(-100, -100)]) else: self.myPolygon = QPolygonF([ QPointF(-120, -80), QPointF(-70, 80), QPointF(120, 80), QPointF(70, -80), QPointF(-120, -80)]) self.setPolygon(self.myPolygon) self.setFlag(QGraphicsItem.ItemIsMovable, True) self.setFlag(QGraphicsItem.ItemIsSelectable, True) def removeArrow(self, arrow): try: self.arrows.remove(arrow) except ValueError: pass def removeArrows(self): for arrow in self.arrows[:]: arrow.startItem().removeArrow(arrow) arrow.endItem().removeArrow(arrow) self.scene().removeItem(arrow) def addArrow(self, arrow): self.arrows.append(arrow) def image(self): pixmap = QPixmap(250, 250) pixmap.fill(Qt.transparent) painter = QPainter(pixmap) painter.setPen(QPen(Qt.black, 8)) painter.translate(125, 125) painter.drawPolyline(self.myPolygon) return pixmap def contextMenuEvent(self, event): self.scene().clearSelection() self.setSelected(True) self.myContextMenu.exec_(event.screenPos()) def itemChange(self, change, value): if change == QGraphicsItem.ItemPositionChange: for arrow in self.arrows: arrow.updatePosition() return value class DiagramScene(QGraphicsScene): InsertItem, InsertLine, InsertText, MoveItem = range(4) itemInserted = pyqtSignal(DiagramItem) textInserted = pyqtSignal(QGraphicsTextItem) itemSelected = pyqtSignal(QGraphicsItem) def __init__(self, itemMenu, parent=None): super(DiagramScene, self).__init__(parent) self.myItemMenu = itemMenu self.myMode = self.MoveItem self.myItemType = DiagramItem.Step self.line = None self.textItem = None self.myItemColor = Qt.white self.myTextColor = Qt.black self.myLineColor = Qt.black self.myFont = QFont() def setLineColor(self, color): self.myLineColor = color if self.isItemChange(Arrow): item = self.selectedItems()[0] item.setColor(self.myLineColor) self.update() def setTextColor(self, color): self.myTextColor = color if self.isItemChange(DiagramTextItem): item = self.selectedItems()[0] item.setDefaultTextColor(self.myTextColor) def setItemColor(self, color): self.myItemColor = color if self.isItemChange(DiagramItem): item = self.selectedItems()[0] item.setBrush(self.myItemColor) def setFont(self, font): self.myFont = font if self.isItemChange(DiagramTextItem): item = self.selectedItems()[0] item.setFont(self.myFont) def setMode(self, mode): self.myMode = mode def setItemType(self, type): self.myItemType = type def editorLostFocus(self, item): cursor = item.textCursor() cursor.clearSelection() item.setTextCursor(cursor) if item.toPlainText(): self.removeItem(item) item.deleteLater() def mousePressEvent(self, mouseEvent): if (mouseEvent.button() != Qt.LeftButton): return if self.myMode == self.InsertItem: item = DiagramItem(self.myItemType, self.myItemMenu) item.setBrush(self.myItemColor) self.addItem(item) item.setPos(mouseEvent.scenePos()) self.itemInserted.emit(item) elif self.myMode == self.InsertLine: self.line = QGraphicsLineItem(QLineF(mouseEvent.scenePos(), mouseEvent.scenePos())) self.line.setPen(QPen(self.myLineColor, 2)) self.addItem(self.line) elif self.myMode == self.InsertText: textItem = DiagramTextItem() textItem.setFont(self.myFont) textItem.setTextInteractionFlags(Qt.TextEditorInteraction) textItem.setZValue(1000.0) textItem.lostFocus.connect(self.editorLostFocus) textItem.selectedChange.connect(self.itemSelected) self.addItem(textItem) textItem.setDefaultTextColor(self.myTextColor) textItem.setPos(mouseEvent.scenePos()) self.textInserted.emit(textItem) super(DiagramScene, self).mousePressEvent(mouseEvent) def mouseMoveEvent(self, mouseEvent): if self.myMode == self.InsertLine and self.line: newLine = QLineF(self.line.line().p1(), mouseEvent.scenePos()) self.line.setLine(newLine) elif self.myMode == self.MoveItem: super(DiagramScene, self).mouseMoveEvent(mouseEvent) def mouseReleaseEvent(self, mouseEvent): if self.line and self.myMode == self.InsertLine: startItems = self.items(self.line.line().p1()) if len(startItems) and startItems[0] == self.line: startItems.pop(0) endItems = self.items(self.line.line().p2()) if len(endItems) and endItems[0] == self.line: endItems.pop(0) self.removeItem(self.line) self.line = None if len(startItems) and len(endItems) and \ isinstance(startItems[0], DiagramItem) and \ isinstance(endItems[0], DiagramItem) and \ startItems[0] != endItems[0]: startItem = startItems[0] endItem = endItems[0] arrow = Arrow(startItem, endItem) arrow.setColor(self.myLineColor) startItem.addArrow(arrow) endItem.addArrow(arrow) arrow.setZValue(-1000.0) self.addItem(arrow) arrow.updatePosition() self.line = None super(DiagramScene, self).mouseReleaseEvent(mouseEvent) def isItemChange(self, type): for item in self.selectedItems(): if isinstance(item, type): return True return False class MainWindow(QMainWindow): InsertTextButton = 10 def __init__(self): super(MainWindow, self).__init__() self.createActions() self.createMenus() self.createToolBox() self.scene = DiagramScene(self.itemMenu) self.scene.setSceneRect(QRectF(0, 0, 5000, 5000)) self.scene.itemInserted.connect(self.itemInserted) self.scene.textInserted.connect(self.textInserted) self.scene.itemSelected.connect(self.itemSelected) self.createToolbars() layout = QHBoxLayout() layout.addWidget(self.toolBox) self.view = QGraphicsView(self.scene) layout.addWidget(self.view) self.widget = QWidget() self.widget.setLayout(layout) self.setCentralWidget(self.widget) self.setWindowTitle("Diagramscene") def backgroundButtonGroupClicked(self, button): buttons = self.backgroundButtonGroup.buttons() for myButton in buttons: if myButton != button: button.setChecked(False) text = button.text() if text == "Blue Grid": self.scene.setBackgroundBrush(QBrush(QPixmap(':/images/background1.png'))) elif text == "White Grid": self.scene.setBackgroundBrush(QBrush(QPixmap(':/images/background2.png'))) elif text == "Gray Grid": self.scene.setBackgroundBrush(QBrush(QPixmap(':/images/background3.png'))) else: self.scene.setBackgroundBrush(QBrush(QPixmap(':/images/background4.png'))) self.scene.update() self.view.update() def buttonGroupClicked(self, id): buttons = self.buttonGroup.buttons() for button in buttons: if self.buttonGroup.button(id) != button: button.setChecked(False) if id == self.InsertTextButton: self.scene.setMode(DiagramScene.InsertText) else: self.scene.setItemType(id) self.scene.setMode(DiagramScene.InsertItem) def deleteItem(self): for item in self.scene.selectedItems(): if isinstance(item, DiagramItem): item.removeArrows() self.scene.removeItem(item) def pointerGroupClicked(self, i): self.scene.setMode(self.pointerTypeGroup.checkedId()) def bringToFront(self): if not self.scene.selectedItems(): return selectedItem = self.scene.selectedItems()[0] overlapItems = selectedItem.collidingItems() zValue = 0 for item in overlapItems: if (item.zValue() >= zValue and isinstance(item, DiagramItem)): zValue = item.zValue() + 0.1 selectedItem.setZValue(zValue) def sendToBack(self): if not self.scene.selectedItems(): return selectedItem = self.scene.selectedItems()[0] overlapItems = selectedItem.collidingItems() zValue = 0 for item in overlapItems: if (item.zValue() <= zValue and isinstance(item, DiagramItem)): zValue = item.zValue() - 0.1 selectedItem.setZValue(zValue) def itemInserted(self, item): self.pointerTypeGroup.button(DiagramScene.MoveItem).setChecked(True) self.scene.setMode(self.pointerTypeGroup.checkedId()) self.buttonGroup.button(item.diagramType).setChecked(False) def textInserted(self, item): self.buttonGroup.button(self.InsertTextButton).setChecked(False) self.scene.setMode(self.pointerTypeGroup.checkedId()) def currentFontChanged(self, font): self.handleFontChange() def fontSizeChanged(self, font): self.handleFontChange() def sceneScaleChanged(self, scale): newScale = scale.left(scale.indexOf("%")).toDouble()[0] / 100.0 oldMatrix = self.view.matrix() self.view.resetMatrix() self.view.translate(oldMatrix.dx(), oldMatrix.dy()) self.view.scale(newScale, newScale) def textColorChanged(self): self.textAction = self.sender() self.fontColorToolButton.setIcon( self.createColorToolButtonIcon(':/images/textpointer.png', QColor(self.textAction.data()))) self.textButtonTriggered() def itemColorChanged(self): self.fillAction = self.sender() self.fillColorToolButton.setIcon( self.createColorToolButtonIcon( ':/images/floodfill.png', QColor(self.fillAction.data()))) self.fillButtonTriggered() def lineColorChanged(self): self.lineAction = self.sender() self.lineColorToolButton.setIcon( self.createColorToolButtonIcon(':/images/linecolor.png', QColor(self.lineAction.data()))) self.lineButtonTriggered() def textButtonTriggered(self): self.scene.setTextColor(QColor(self.textAction.data())) def fillButtonTriggered(self): self.scene.setItemColor(QColor(self.fillAction.data())) def lineButtonTriggered(self): self.scene.setLineColor(QColor(self.lineAction.data())) def handleFontChange(self): font = self.fontCombo.currentFont() font.setPointSize(self.fontSizeCombo.currentText().toInt()[0]) if self.boldAction.isChecked(): font.setWeight(QFont.Bold) else: font.setWeight(QFont.Normal) font.setItalic(self.italicAction.isChecked()) font.setUnderline(self.underlineAction.isChecked()) self.scene.setFont(font) def itemSelected(self, item): font = item.font() color = item.defaultTextColor() self.fontCombo.setCurrentFont(font) self.fontSizeCombo.setEditText(str(font.pointSize())) self.boldAction.setChecked(font.weight() == QFont.Bold) self.italicAction.setChecked(font.italic()) self.underlineAction.setChecked(font.underline()) def about(self): QMessageBox.about(self, "About Diagram Scene", "The Diagram Scene example shows use of the graphics framework.") def createToolBox(self): self.buttonGroup = QButtonGroup() self.buttonGroup.setExclusive(False) self.buttonGroup.buttonClicked[int].connect(self.buttonGroupClicked) layout = QGridLayout() layout.addWidget(self.createCellWidget("Conditional", DiagramItem.Conditional), 0, 0) layout.addWidget(self.createCellWidget("Process", DiagramItem.Step), 0, 1) layout.addWidget(self.createCellWidget("Input/Output", DiagramItem.Io), 1, 0) textButton = QToolButton() textButton.setCheckable(True) self.buttonGroup.addButton(textButton, self.InsertTextButton) textButton.setIcon(QIcon(QPixmap(':/images/textpointer.png').scaled(30, 30))) textButton.setIconSize(QSize(50, 50)) textLayout = QGridLayout() textLayout.addWidget(textButton, 0, 0, Qt.AlignHCenter) textLayout.addWidget(QLabel("Text"), 1, 0, Qt.AlignCenter) textWidget = QWidget() textWidget.setLayout(textLayout) layout.addWidget(textWidget, 1, 1) layout.setRowStretch(3, 10) layout.setColumnStretch(2, 10) itemWidget = QWidget() itemWidget.setLayout(layout) self.backgroundButtonGroup = QButtonGroup() self.backgroundButtonGroup.buttonClicked.connect(self.backgroundButtonGroupClicked) backgroundLayout = QGridLayout() backgroundLayout.addWidget(self.createBackgroundCellWidget("Blue Grid", ':/images/background1.png'), 0, 0) backgroundLayout.addWidget(self.createBackgroundCellWidget("White Grid", ':/images/background2.png'), 0, 1) backgroundLayout.addWidget(self.createBackgroundCellWidget("Gray Grid", ':/images/background3.png'), 1, 0) backgroundLayout.addWidget(self.createBackgroundCellWidget("No Grid", ':/images/background4.png'), 1, 1) backgroundLayout.setRowStretch(2, 10) backgroundLayout.setColumnStretch(2, 10) backgroundWidget = QWidget() backgroundWidget.setLayout(backgroundLayout) self.toolBox = QToolBox() self.toolBox.setSizePolicy(QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Ignored)) self.toolBox.setMinimumWidth(itemWidget.sizeHint().width()) self.toolBox.addItem(itemWidget, "Basic Flowchart Shapes") self.toolBox.addItem(backgroundWidget, "Backgrounds") def createActions(self): self.toFrontAction = QAction( QIcon(':/images/bringtofront.png'), "Bring to &Front", self, shortcut="Ctrl+F", statusTip="Bring item to front", triggered=self.bringToFront) self.sendBackAction = QAction( QIcon(':/images/sendtoback.png'), "Send to &Back", self, shortcut="Ctrl+B", statusTip="Send item to back", triggered=self.sendToBack) self.deleteAction = QAction(QIcon(':/images/delete.png'), "&Delete", self, shortcut="Delete", statusTip="Delete item from diagram", triggered=self.deleteItem) self.exitAction = QAction("E&xit", self, shortcut="Ctrl+X", statusTip="Quit Scenediagram example", triggered=self.close) self.boldAction = QAction(QIcon(':/images/bold.png'), "Bold", self, checkable=True, shortcut="Ctrl+B", triggered=self.handleFontChange) self.italicAction = QAction(QIcon(':/images/italic.png'), "Italic", self, checkable=True, shortcut="Ctrl+I", triggered=self.handleFontChange) self.underlineAction = QAction( QIcon(':/images/underline.png'), "Underline", self, checkable=True, shortcut="Ctrl+U", triggered=self.handleFontChange) self.aboutAction = QAction("A&bout", self, shortcut="Ctrl+B", triggered=self.about) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.exitAction) self.itemMenu = self.menuBar().addMenu("&Item") self.itemMenu.addAction(self.deleteAction) self.itemMenu.addSeparator() self.itemMenu.addAction(self.toFrontAction) self.itemMenu.addAction(self.sendBackAction) self.aboutMenu = self.menuBar().addMenu("&Help") self.aboutMenu.addAction(self.aboutAction) def createToolbars(self): self.editToolBar = self.addToolBar("Edit") self.editToolBar.addAction(self.deleteAction) self.editToolBar.addAction(self.toFrontAction) self.editToolBar.addAction(self.sendBackAction) self.fontCombo = QFontComboBox() self.fontCombo.currentFontChanged.connect(self.currentFontChanged) self.fontSizeCombo = QComboBox() self.fontSizeCombo.setEditable(True) for i in range(8, 30, 2): self.fontSizeCombo.addItem(str(i)) validator = QIntValidator(2, 64, self) self.fontSizeCombo.setValidator(validator) self.fontSizeCombo.currentIndexChanged.connect(self.fontSizeChanged) self.fontColorToolButton = QToolButton() self.fontColorToolButton.setPopupMode(QToolButton.MenuButtonPopup) self.fontColorToolButton.setMenu( self.createColorMenu(self.textColorChanged, Qt.black)) self.textAction = self.fontColorToolButton.menu().defaultAction() self.fontColorToolButton.setIcon( self.createColorToolButtonIcon(':/images/textpointer.png', Qt.black)) self.fontColorToolButton.setAutoFillBackground(True) self.fontColorToolButton.clicked.connect(self.textButtonTriggered) self.fillColorToolButton = QToolButton() self.fillColorToolButton.setPopupMode(QToolButton.MenuButtonPopup) self.fillColorToolButton.setMenu( self.createColorMenu(self.itemColorChanged, Qt.white)) self.fillAction = self.fillColorToolButton.menu().defaultAction() self.fillColorToolButton.setIcon( self.createColorToolButtonIcon(':/images/floodfill.png', Qt.white)) self.fillColorToolButton.clicked.connect(self.fillButtonTriggered) self.lineColorToolButton = QToolButton() self.lineColorToolButton.setPopupMode(QToolButton.MenuButtonPopup) self.lineColorToolButton.setMenu( self.createColorMenu(self.lineColorChanged, Qt.black)) self.lineAction = self.lineColorToolButton.menu().defaultAction() self.lineColorToolButton.setIcon( self.createColorToolButtonIcon(':/images/linecolor.png', Qt.black)) self.lineColorToolButton.clicked.connect(self.lineButtonTriggered) self.textToolBar = self.addToolBar("Font") self.textToolBar.addWidget(self.fontCombo) self.textToolBar.addWidget(self.fontSizeCombo) self.textToolBar.addAction(self.boldAction) self.textToolBar.addAction(self.italicAction) self.textToolBar.addAction(self.underlineAction) self.colorToolBar = self.addToolBar("Color") self.colorToolBar.addWidget(self.fontColorToolButton) self.colorToolBar.addWidget(self.fillColorToolButton) self.colorToolBar.addWidget(self.lineColorToolButton) pointerButton = QToolButton() pointerButton.setCheckable(True) pointerButton.setChecked(True) pointerButton.setIcon(QIcon(':/images/pointer.png')) linePointerButton = QToolButton() linePointerButton.setCheckable(True) linePointerButton.setIcon(QIcon(':/images/linepointer.png')) self.pointerTypeGroup = QButtonGroup() self.pointerTypeGroup.addButton(pointerButton, DiagramScene.MoveItem) self.pointerTypeGroup.addButton(linePointerButton, DiagramScene.InsertLine) self.pointerTypeGroup.buttonClicked[int].connect(self.pointerGroupClicked) self.sceneScaleCombo = QComboBox() self.sceneScaleCombo.addItems(["50%", "75%", "100%", "125%", "150%"]) self.sceneScaleCombo.setCurrentIndex(2) self.sceneScaleCombo.currentIndexChanged[str].connect(self.sceneScaleChanged) self.pointerToolbar = self.addToolBar("Pointer type") self.pointerToolbar.addWidget(pointerButton) self.pointerToolbar.addWidget(linePointerButton) self.pointerToolbar.addWidget(self.sceneScaleCombo) def createBackgroundCellWidget(self, text, image): button = QToolButton() button.setText(text) button.setIcon(QIcon(image)) button.setIconSize(QSize(50, 50)) button.setCheckable(True) self.backgroundButtonGroup.addButton(button) layout = QGridLayout() layout.addWidget(button, 0, 0, Qt.AlignHCenter) layout.addWidget(QLabel(text), 1, 0, Qt.AlignCenter) widget = QWidget() widget.setLayout(layout) return widget def createCellWidget(self, text, diagramType): item = DiagramItem(diagramType, self.itemMenu) icon = QIcon(item.image()) button = QToolButton() button.setIcon(icon) button.setIconSize(QSize(50, 50)) button.setCheckable(True) self.buttonGroup.addButton(button, diagramType) layout = QGridLayout() layout.addWidget(button, 0, 0, Qt.AlignHCenter) layout.addWidget(QLabel(text), 1, 0, Qt.AlignCenter) widget = QWidget() widget.setLayout(layout) return widget def createColorMenu(self, slot, defaultColor): colors = [Qt.black, Qt.white, Qt.red, Qt.blue, Qt.yellow] names = ["black", "white", "red", "blue", "yellow"] colorMenu = QMenu(self) for color, name in zip(colors, names): action = QAction(self.createColorIcon(color), name, self, triggered=slot) action.setData(QColor(color)) colorMenu.addAction(action) if color == defaultColor: colorMenu.setDefaultAction(action) return colorMenu def createColorToolButtonIcon(self, imageFile, color): pixmap = QPixmap(50, 80) pixmap.fill(Qt.transparent) painter = QPainter(pixmap) image = QPixmap(imageFile) target = QRect(0, 0, 50, 60) source = QRect(0, 0, 42, 42) painter.fillRect(QRect(0, 60, 50, 80), color) painter.drawPixmap(target, image, source) painter.end() return QIcon(pixmap) def createColorIcon(self, color): pixmap = QPixmap(20, 20) painter = QPainter(pixmap) painter.setPen(Qt.NoPen) painter.fillRect(QRect(0, 0, 20, 20), color) painter.end() return QIcon(pixmap) if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWindow = MainWindow() mainWindow.setGeometry(100, 100, 800, 500) mainWindow.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/diagramscene.qrc0000644000076500000240000000120013245231431025554 0ustar philstaff00000000000000 images/pointer.png images/linepointer.png images/textpointer.png images/bold.png images/italic.png images/underline.png images/floodfill.png images/bringtofront.png images/delete.png images/sendtoback.png images/linecolor.png images/background1.png images/background2.png images/background3.png images/background4.png PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/diagramscene_rc.py0000644000076500000240000005115713245231431026123 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 5 04:57:31 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x01\x12\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0b\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x7f\xf5\x94\x3b\ \x00\x00\x00\xd9\x49\x44\x41\x54\x28\x53\x7d\x90\x31\x0e\x45\x40\ \x10\x86\x47\x24\x24\x1a\x0d\x0d\xd1\x22\x51\x70\x80\x6d\x5c\x40\ \xe7\x3c\x0e\x21\x0a\x47\x71\x19\xb5\x4e\xa9\xc1\x78\x33\xb2\x8b\ \xf7\xec\xdb\xe4\xcb\x66\x76\xfe\xf9\x67\x76\xc0\x30\x0c\x04\x80\ \x07\xf4\x66\x59\x16\x26\x49\x82\x9f\x03\xc4\xbe\xef\x94\x3b\x05\ \x69\x9a\x32\x24\x08\xc3\xf0\x51\x58\xd7\x35\x17\x01\x05\x04\x55\ \xde\x5d\xe8\x76\x1c\x87\x73\xb6\x6d\xe3\xc3\x59\x0a\xef\x44\x51\ \xc4\xe2\x20\x08\xf4\xce\xeb\xba\x62\xdb\xb6\x6a\x94\xbe\xef\x4f\ \xb1\x7c\x28\x8a\x82\xc9\xf3\x1c\x7d\xdf\x67\x03\x21\x04\x0e\xc3\ \xa0\x4c\x40\xb7\x0d\xd3\x34\x59\xdc\x75\xdd\x25\xfe\x9e\x79\xdb\ \x36\x9c\xa6\x89\x63\xd9\x21\x8e\x63\x1c\xc7\x11\xd5\xcc\x6f\x1f\ \x24\x64\xbe\xaa\xaa\xff\xdb\x58\x96\x45\x8d\x46\x5d\x5e\xb7\x41\ \xcc\xf3\x8c\x4d\xd3\xa0\xcc\x67\x59\x76\x39\x7b\x9e\xa7\x70\x5d\ \xf7\xe7\xd3\xda\x6d\x48\xa8\xa8\x2c\x4b\xd5\xf1\x00\xd0\xc0\x13\ \xc8\x06\xaf\x16\x28\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x00\xf7\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0b\x00\x00\x00\x0c\x08\x06\x00\x00\x00\xb4\xa9\x47\x9e\ \x00\x00\x00\xbe\x49\x44\x41\x54\x28\x53\x85\x91\x31\x0e\x40\x40\ \x10\x45\x57\x4d\x24\x4a\x37\xa1\xa4\x91\x38\x85\x5e\x74\xaa\x3d\ \x8a\x4e\x54\x7b\x80\xad\x75\x6e\xa0\xd1\x6c\xe7\x12\xc4\x97\x19\ \xb1\x21\x59\x51\xfc\x62\xfe\xbc\xfc\x99\xcc\x08\x00\x82\x74\x1c\ \x07\xa6\x69\x82\x10\xc2\x29\xcf\xf3\x2e\xf0\xd6\x38\x8e\xa8\xaa\ \x8a\x55\x14\x05\x03\x49\x92\x58\xef\x05\x3f\xd5\x75\x1d\xc3\x5a\ \x6b\xd0\x54\xf2\x9c\x20\x35\xeb\xba\x66\x78\x5d\x57\xdc\xfe\x67\ \x72\x9a\xa6\x88\xe3\x18\x4f\xcf\x09\x6e\xdb\x06\xdf\xf7\x51\x96\ \xa5\x5d\xc1\x09\x53\x73\x9e\x67\x5e\x41\x4a\xf9\x9f\x3c\x0c\x03\ \xc3\x4a\xa9\xff\xe4\xb6\x6d\x19\x5e\x96\xe5\x3f\x39\xcf\x73\x84\ \x61\x88\x7d\xdf\xdf\xc9\x54\x18\x63\xec\xe1\x49\x41\x10\x20\x8a\ \x22\x5b\x37\x4d\x03\x9b\xdc\xf7\xfd\xf5\xce\x8f\x57\x67\x59\xc6\ \x13\x4e\xfa\x57\x56\x58\xe8\x40\xda\xc6\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x3e\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\ \x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ \xa7\x93\x00\x00\x00\xf3\x49\x44\x41\x54\x38\xcb\xed\x94\x41\x6e\ \x83\x30\x10\x45\x9f\x25\xe0\x0c\xbd\x43\x2f\xd0\x13\xe5\xfa\x55\ \x62\x9b\xd8\x33\x01\x77\x81\x0d\x24\x85\xaa\x31\xca\xaa\x1d\x89\ \x8d\x0d\x4f\xef\x7b\x06\x37\x6d\xdb\x26\x0e\x94\xaa\x9a\xad\xf5\ \x06\x40\x44\xaa\xa0\x5d\xd7\xed\xee\x35\xbc\xa8\xfe\xc1\x7f\x01\ \x6c\x8c\xd9\xdb\x4a\x87\x8d\x53\xda\x60\x8c\x03\x0c\x01\xf4\x0a\ \xd2\x43\x74\x98\xb7\xf7\x83\x47\x31\x2a\x68\x81\x7a\x10\x07\xd1\ \x1d\x3c\xe3\x41\x26\xa0\xf6\x0b\x34\x38\x88\x97\x4a\x70\x1a\x61\ \x88\x4b\x74\xf5\x93\x65\xb4\xd3\x23\x35\xc6\x69\x80\x5b\x00\x29\ \xd1\x3d\xa8\x83\x60\x57\x60\x5f\x01\x96\x1c\x7d\xb6\x7c\x30\x95\ \x6a\x70\xfe\x70\x06\xba\x15\xd4\xe5\x14\x76\x01\xff\x74\xfd\xdd\ \x55\xb8\xe4\xce\xdb\x05\x5c\x26\x41\xfd\xb2\x06\x34\x7b\x17\xf5\ \xe6\x8f\x10\xce\xdf\xa1\xc5\x34\xe6\x89\xa8\x6a\x5e\xf8\x9c\x46\ \x6a\xb6\x74\x10\xb3\xa9\xac\x1a\xf8\x34\xf8\x7a\xce\xa6\x16\x62\ \x0f\x6a\xef\x1b\x58\x52\x54\x81\xa5\x98\x6e\x4c\x45\xf4\x70\xeb\ \x9f\x07\x9b\x8f\xd3\xaf\xdf\xfd\x02\xd6\xbd\xde\xdf\x70\xdb\x04\ \x83\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\x72\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfc\x73\x8f\x50\ \x00\x00\x00\x06\x50\x4c\x54\x45\xff\xff\xff\x00\x00\x00\x55\xc2\ \xd3\x7e\x00\x00\x00\x27\x49\x44\x41\x54\x48\xc7\x63\x60\x80\x82\ \x06\x06\x34\x30\x2a\x30\x2a\x30\x2a\x30\x2a\x80\x2a\xf0\x1f\x15\ \xfc\x1b\x0d\xa0\x51\x81\x51\x81\x51\x01\x22\x05\x00\xd5\x3b\x4e\ \xf0\x73\xe3\x6f\xe9\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x02\xf1\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x2a\x00\x00\x00\x2c\x08\x03\x00\x00\x00\x24\x44\xda\x74\ \x00\x00\x01\x32\x50\x4c\x54\x45\xff\xff\xff\xfe\xfe\xfe\x01\x01\ \x01\xbe\xbe\xbe\xfd\xfd\xfd\x00\x00\x00\x64\x64\x64\xd2\xd2\xd2\ \x7c\x7c\x7c\xfb\xfb\xfb\xe7\xe7\xe7\x84\x84\x84\xd7\xd7\xd7\xe0\ \xe0\xe0\xe1\xe1\xe1\x0c\x0c\x0c\x28\x28\x28\xf5\xf5\xf5\xb3\xb3\ \xb3\x02\x02\x02\x95\x95\x95\x2e\x2e\x2e\x11\x11\x11\x6b\x6b\x6b\ \x03\x03\x03\x72\x72\x72\x49\x49\x49\xfc\xfc\xfc\x13\x13\x13\x04\ \x04\x04\x9f\x9f\x9f\xc4\xc4\xc4\xa9\xa9\xa9\x05\x05\x05\x57\x57\ \x57\x17\x17\x17\xf6\xf6\xf6\x16\x16\x16\xa6\xa6\xa6\xa0\xa0\xa0\ \x60\x60\x60\x24\x24\x24\x3e\x3e\x3e\x23\x23\x23\xb7\xb7\xb7\x4d\ \x4d\x4d\xf8\xf8\xf8\xc0\xc0\xc0\x30\x30\x30\x09\x09\x09\xec\xec\ \xec\x20\x20\x20\x8a\x8a\x8a\xda\xda\xda\xf1\xf1\xf1\x0d\x0d\x0d\ \x99\x99\x99\x19\x19\x19\xf9\xf9\xf9\xcd\xcd\xcd\xf4\xf4\xf4\x39\ \x39\x39\x2d\x2d\x2d\x3b\x3b\x3b\x12\x12\x12\x43\x43\x43\xc2\xc2\ \xc2\xa4\xa4\xa4\xdc\xdc\xdc\x55\x55\x55\x68\x68\x68\x5a\x5a\x5a\ \x50\x50\x50\xf0\xf0\xf0\x06\x06\x06\x1f\x1f\x1f\x74\x74\x74\xb1\ \xb1\xb1\x5d\x5d\x5d\x21\x21\x21\x36\x36\x36\x08\x08\x08\xea\xea\ \xea\xdb\xdb\xdb\x81\x81\x81\x9c\x9c\x9c\x8b\x8b\x8b\x75\x75\x75\ \xf2\xf2\xf2\x25\x25\x25\xce\xce\xce\x48\x48\x48\x63\x63\x63\xba\ \xba\xba\x53\x53\x53\x38\x38\x38\xf7\xf7\xf7\xe4\xe4\xe4\xa2\xa2\ \xa2\x4a\x4a\x4a\xf3\xf3\xf3\x5f\x5f\x5f\xf1\x69\x00\xec\x00\x00\ \x00\x01\x74\x52\x4e\x53\x00\x40\xe6\xd8\x66\x00\x00\x01\x6d\x49\ \x44\x41\x54\x78\x5e\xd5\x92\xc5\x76\xc3\x30\x10\x45\x3d\x92\x1d\ \x66\xe6\x94\x99\x99\x99\x99\x99\xe1\xff\x7f\xa1\x9e\x89\x93\x53\ \xa9\xb2\x4e\x76\x6d\xdf\xf2\xea\xfa\xbd\x59\xd8\xf8\x2b\xf1\x30\ \xeb\x5b\x58\xcc\x04\x37\x13\x3c\x96\x10\xc6\xb5\xad\x42\xda\x9a\ \x6f\x6d\x0d\x40\xb3\xad\x2c\xe8\xda\x1a\xe2\xb5\xf4\xd4\xdd\x71\ \xbf\xa1\x0d\x14\x7b\x1b\xed\x09\xd0\xbb\x03\x0d\x93\x0d\xea\x4d\ \xd8\x41\x2b\x33\x82\x6e\x2e\xac\x35\xc3\x39\xbb\x95\xe5\xbb\xa9\ \xdb\xa7\xbd\xc0\x47\xce\x64\x47\x27\x7e\x31\x3b\xa7\x71\x87\xda\ \xd1\x2c\x00\xf8\xe8\xda\x16\xcd\x7e\x17\x19\x09\xc3\x88\x94\xd1\ \x5d\xd5\xb4\xf6\xe1\x6e\xbf\xdf\x36\x36\xe9\x92\x90\xab\xeb\xa5\ \xf7\x09\xdb\x84\x61\xea\xcf\xbb\xee\x67\xd1\x1c\x1d\x43\x60\xa6\ \xd1\x5d\x89\xbb\x98\x53\xd3\xb8\xef\xa9\x81\x19\x5a\xa8\x80\xda\ \x4d\xd1\xeb\x3c\xbd\xc2\x42\x06\xbf\x5b\x54\x9b\xe6\x12\x9a\xcb\ \x4e\x0f\x1c\xd0\xb5\x77\xca\xfd\x35\x7a\x5b\xaf\x83\x8d\x24\xba\ \x5b\xca\x0b\xb6\x71\x5f\x0a\x8b\xee\x2a\xdc\xc0\x9e\xa5\x08\x4b\ \x29\xf6\x83\x96\x32\x69\xf3\x87\xe9\xdf\x67\x6a\xb7\x0a\xb2\x7b\ \xe8\x62\xb2\x23\xd9\x84\x02\xf2\x63\x2e\xe4\x04\xd9\xe9\x99\x64\ \x9e\x53\xc3\x85\x48\x2f\x69\xe9\x0a\x44\x7a\x6d\x53\x96\x8c\x08\ \x14\x6e\xa2\x48\x6f\x8b\x02\x8d\x97\xb0\xf5\x1e\xa4\xad\x07\xda\ \x7a\x14\x58\x45\xfd\xd7\x57\xe9\x82\x27\xa1\xe1\x19\x97\x4a\x2f\ \x72\xab\x19\x43\x5e\x7e\xad\x73\xce\xf9\x1b\x7d\xfd\xce\x31\x1f\ \xe0\x60\xcc\x27\xad\x65\x6d\x4c\xcc\x12\xc2\xbc\x4e\x23\x13\x39\ \x41\x89\x79\xc1\x50\x35\xfc\x7e\xeb\xff\xca\x17\x55\x71\x20\xbb\ \xd7\xbb\x2e\xca\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x01\x25\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\ \x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ \xa7\x93\x00\x00\x00\xda\x49\x44\x41\x54\x48\xc7\xed\x94\x41\x0e\ \x82\x30\x10\x45\x1f\x46\x38\x83\x77\xf0\xfe\x87\xf0\x1a\x5e\x40\ \xb1\xa5\x74\xa6\x1a\x5c\xb4\x04\x8c\xa2\x11\xca\xc2\xc4\x49\xd8\ \xd0\xe4\xe5\xf5\xf7\x67\x8a\xb2\x2c\x3b\x16\x4c\x08\xa1\x78\xf5\ \x7f\x0b\xa0\xaa\xb3\xa0\x55\x55\x4d\x9e\x6d\x58\x69\xfe\xe0\x1f\ \x06\x6f\x33\x30\xba\x55\xc0\xdd\xed\x0a\x37\x0f\xa1\x05\x75\x20\ \x96\x62\xb7\xcf\x60\x1c\x5c\x82\x36\xa0\x16\xc4\x66\x8a\x42\xed\ \x00\xf5\x16\xe4\x92\x09\x2c\x97\x68\x29\x26\x7e\x9a\xcb\xd8\xd7\ \xe0\xcd\x08\xdc\x64\x02\xbb\xf3\x60\xaa\x39\xc1\xed\x39\x41\xfb\ \xac\xcd\x00\x7e\xb7\xfe\x3e\x67\x5c\xc7\x8c\x43\x93\xe2\x48\x19\ \x4f\x2d\xea\x57\x95\xed\x8e\x87\x21\x4b\x49\x96\xbe\x8e\xa6\x92\ \x1a\x31\xeb\xf1\xfc\x29\x56\xaa\xef\x6b\xb0\x20\xc9\x54\x47\x0f\ \xf8\x35\xb8\x4d\xd7\x56\x03\xe2\x20\x98\xc7\xaa\xf5\xb7\x98\x05\ \xd6\xde\xd4\x3e\xf7\x57\x1a\xb8\x3a\x00\x8a\xa5\xcb\x66\x6a\xee\ \x91\x61\xa9\x66\xc0\x0f\xb5\x5d\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ \x00\x00\x00\x91\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x2a\x00\x00\x00\x2b\x01\x03\x00\x00\x00\x34\x51\x88\xbd\ \x00\x00\x00\x06\x50\x4c\x54\x45\xff\xff\xff\x00\x00\x00\x55\xc2\ \xd3\x7e\x00\x00\x00\x01\x74\x52\x4e\x53\x00\x40\xe6\xd8\x66\x00\ \x00\x00\x39\x49\x44\x41\x54\x18\x57\x63\x60\xc0\x05\x14\x20\x54\ \x01\x84\xfa\x01\x26\x19\xff\x80\x29\x66\x08\x8f\xfd\x03\x98\xe2\ \x7f\x00\xa6\xe4\x0f\x80\x29\xfb\x06\x30\x55\x0f\xd1\xf6\x6f\x50\ \x6b\xe3\x87\x68\x63\x83\x50\x2c\x0c\x84\x00\x00\x91\xca\x1c\x09\ \xf6\x23\x2a\xfe\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x00\xad\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x18\x02\x03\x00\x00\x00\x58\x6b\x4f\xfa\ \x00\x00\x00\x09\x50\x4c\x54\x45\xff\xff\xff\xff\xff\xff\x00\x00\ \x00\x8e\xf4\xc3\xec\x00\x00\x00\x01\x74\x52\x4e\x53\x00\x40\xe6\ \xd8\x66\x00\x00\x00\x52\x49\x44\x41\x54\x08\x1d\x05\xc1\xb1\x0d\ \xc2\x30\x14\x05\xc0\x8b\x04\x1b\xd0\x3c\x4f\xe3\x8a\x9a\xe6\x47\ \x72\x1f\x17\x61\x1a\x57\x9e\x80\x41\xb9\xf3\x82\x40\xeb\xc8\x42\ \x2e\x64\x20\x67\x27\xb5\x48\x5d\xa4\x06\xa9\xb3\x4b\xd5\x92\xfa\ \xfe\x64\xcc\x8f\xdc\x17\xd9\x83\xf6\x1e\xe4\xd8\xdd\xe3\xd8\x1d\ \x73\x61\x2e\xb4\x8e\x27\xf0\x07\xd5\x18\x11\x1b\xed\x4d\x23\xf4\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\x70\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfc\x73\x8f\x50\ \x00\x00\x00\x06\x50\x4c\x54\x45\x00\xff\xff\xff\xff\xff\xb1\xb8\ \x5e\xa0\x00\x00\x00\x25\x49\x44\x41\x54\x78\x5e\xed\xcc\x21\x12\ \x00\x00\x04\x00\x41\xff\x7f\x34\x82\x11\x64\x75\x2f\x6e\xb8\xd8\ \x6a\xca\x0b\x00\x00\xf0\x9d\x01\x00\x40\x03\x94\x98\xeb\xc0\x19\ \x38\xa1\x84\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\x60\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfc\x73\x8f\x50\ \x00\x00\x00\x03\x50\x4c\x54\x45\xff\xff\xff\xa7\xc4\x1b\xc8\x00\ \x00\x00\x18\x49\x44\x41\x54\x78\x5e\xed\xc0\x31\x01\x00\x00\x00\ \xc2\x20\xfb\xa7\x36\xc5\x3e\x58\x0b\x00\xe0\x08\x6f\x00\x01\x01\ \x3e\xc3\x31\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x1a\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x2a\x00\x00\x00\x2b\x02\x03\x00\x00\x00\x73\xf1\xf2\x6d\ \x00\x00\x00\x0c\x50\x4c\x54\x45\xff\xff\xff\x80\x80\x80\x00\x00\ \x00\xff\xff\xff\x45\x4a\x4b\x38\x00\x00\x00\x01\x74\x52\x4e\x53\ \x00\x40\xe6\xd8\x66\x00\x00\x00\xbc\x49\x44\x41\x54\x78\x5e\x4d\ \xcb\xbd\x89\x04\x31\x0c\x86\x61\xa1\xd0\x55\x38\x1c\xdc\x8f\x26\ \xd8\x12\xa6\x0a\xb3\xe1\xe6\x4e\x2e\x32\x07\x02\xdb\x07\x5b\xc0\ \x96\xb4\x55\x9c\x47\x3f\x33\x56\xf4\x21\xde\x07\x42\xcd\xe0\x17\ \x46\xbd\xf6\xb6\xec\x1a\xef\xa6\x41\x02\x34\xb2\x41\x80\x60\x24\ \xcf\x9d\x9a\xee\x38\x8b\x7e\x78\x83\x4f\x7e\x64\xb3\x30\x68\x57\ \x10\x32\x74\x22\x05\x98\x91\x89\x0c\xe4\x50\x88\x0c\xd4\x44\xe4\ \x20\xce\xdc\xc1\x98\x89\x83\x33\x71\x20\x89\x02\xe4\x9d\x1d\x60\ \xa1\x2e\x40\xff\xe9\x02\xfd\xf1\x2a\x0e\xd2\xfe\x7b\x81\x50\xda\ \x02\x8e\xef\x02\x3e\x0b\x78\xb3\x6c\x01\x7f\x5d\x1a\x03\x66\x1d\ \x34\x00\x03\x42\x15\xb0\xe4\x0a\x24\x37\x50\x24\x57\xc0\x92\x2b\ \xe8\x92\x1b\x90\xdc\x80\xe4\x0a\x24\x37\xf0\x73\x6f\x1c\x70\x5f\ \x5b\x76\x3c\xc7\x3f\xd6\x51\x68\x20\x52\x85\xdb\x5f\x00\x00\x00\ \x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\x8d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x1b\x00\x00\x00\x1b\x01\x03\x00\x00\x00\xb7\x1a\x66\x16\ \x00\x00\x00\x06\x50\x4c\x54\x45\xff\xff\xff\x00\x00\x00\x55\xc2\ \xd3\x7e\x00\x00\x00\x01\x74\x52\x4e\x53\x00\x40\xe6\xd8\x66\x00\ \x00\x00\x35\x49\x44\x41\x54\x08\x99\x63\x60\xc0\x02\xd8\x1b\x80\ \x04\xff\x01\x4c\x82\xfd\x01\x48\xba\x00\x44\x58\x80\x08\x19\x10\ \xc1\x07\xd6\x02\x22\x98\x41\xfa\x18\x41\x0a\x19\xc0\x0a\xeb\x40\ \x84\x3d\x16\x42\x0e\xdd\x46\x00\xb5\x00\x09\x40\xa3\x31\xbf\x5e\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x03\x3f\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\xd1\x49\x44\x41\x54\x38\xcb\x7d\ \x95\x4b\x68\x53\x41\x14\x86\x93\xe6\xd1\x08\x49\x28\x04\x5b\x17\ \x05\x35\xee\x5a\xbb\x50\xb2\xb1\xda\x85\x8f\x5d\xb5\xbe\x16\x76\ \x29\x2d\x42\x49\x57\xed\xce\x8d\x0a\xa2\xe0\xba\xab\x14\x84\x8a\ \x2b\x51\x44\x45\x17\x0a\x8a\x55\xf1\x01\x1a\xb0\x56\x23\xad\xa2\ \xc5\xb6\x92\x6a\x95\xbe\x34\xcd\xc3\xe3\x7f\x6e\xce\x64\xe6\x4e\ \xd2\x16\x3e\xe6\xde\xce\x3f\x7f\x66\xce\x63\xae\x87\x88\x3c\x26\ \xf8\xf3\x01\x7e\xa8\x07\x01\x50\x67\x6b\x0c\x6d\x9d\xa1\x0d\xf2\ \xda\xca\x9c\x21\xf2\x8a\x11\x51\x7f\x7f\x5e\x16\x6c\x04\x61\xe0\ \xaf\x61\xea\x77\xb4\x03\x03\x4a\xdb\x08\x22\xe2\xe1\x35\x85\x8e\ \xe9\xbf\xa1\x21\x2a\x75\x77\x53\xa1\x2c\x66\x36\x83\x28\xcf\x57\ \x69\x53\x29\x2a\xf5\xf4\x50\x29\x18\x54\xda\x38\x68\x70\xe6\xcd\ \xe3\x97\x60\x5a\xec\xed\xa5\x42\x4b\x0b\xe5\xf0\xfe\x5d\x9b\x6f\ \x55\xe6\xca\xb4\x34\x3c\x4c\xc5\x64\x92\x0a\x6d\x6d\xb4\x8c\xf7\ \x71\xad\x8d\x3b\x5a\x31\xa6\xd5\x64\x32\xbf\x8a\x9d\xe6\x5a\x5b\ \xe9\x2f\xde\xff\x80\x05\x30\xed\x5e\x10\xe3\xe7\x02\x4c\xa1\xaf\ \x68\x27\xc1\x65\x70\xd6\xe3\x29\x8a\xb6\x49\x19\x87\xf8\x1f\x4b\ \x60\x51\x46\xc5\x2f\xb7\x39\xe5\x61\x9a\x83\xe9\x0a\x4c\x97\xc4\ \x74\x04\x1c\xd7\x9a\x76\xd0\xac\x8c\x83\x12\x7c\xfa\x0c\xe6\xc4\ \xf0\xb7\x8c\xcc\x62\x22\x41\x2b\x83\x83\xb4\xdc\xd7\x47\x0b\x30\ \xe5\xb9\x8c\xec\xf4\x98\x36\xed\x02\x3b\x1c\x2f\x23\xc6\x61\x49\ \x14\x7d\x04\x33\x20\x2b\x3f\xc2\xfc\x88\xc5\x68\x1e\xf1\xfc\x19\ \x8f\x3b\xef\xef\x40\x0a\x1c\xd1\xa6\xd8\xb4\x67\x97\x78\x84\xed\ \xf2\x89\x4a\xa2\x1c\x73\x0e\xc1\x6c\x0d\xde\x8b\xe9\x61\xb7\x69\ \xbb\x91\x64\xbf\x5d\x9b\x01\x99\xe0\x44\xd1\x0c\x8e\xff\x0d\x3b\ \x9d\xc2\xb3\xc9\x4b\x70\x41\x9b\x9e\x00\x1d\x95\x6a\x90\xb2\xac\ \xd5\x4d\x01\x95\xfd\x2c\x62\xfa\x15\xc7\xff\x84\x67\x13\x0e\xc3\ \x4d\x6d\xdc\x09\xb6\xcb\x9a\x40\x55\xe7\xd9\xc5\x3f\x8f\xec\x4f\ \x23\x51\x13\x88\x69\x46\x12\xa5\xf8\x00\xd2\xe0\x89\x36\x5f\xdf\ \x58\x99\xce\xc1\x74\x0a\x25\x95\x41\xf6\xc7\xc4\xe0\x01\x78\x05\ \xde\x82\x31\x19\xdf\x80\x51\xbb\x31\xec\x50\xa8\xde\xcf\xc2\xf4\ \x0b\x4c\xc7\x61\xca\xbb\xba\x0f\x2e\x81\xd3\xe0\x2a\x78\x2e\x86\ \x69\x19\xf9\xc7\x1e\x55\x77\xa8\xdf\xd5\xd2\xb3\xe8\xfd\x49\x98\ \xa6\x61\xca\x09\xba\x0b\xce\x83\x03\x46\x83\xdc\x03\xcf\xc0\x0b\ \x49\x22\x8f\x8f\xc1\x35\xf7\xdd\x12\xae\xb4\xf4\x04\x6e\xa9\x0c\ \x2e\x94\xd7\x48\x16\x2f\xbc\x0d\xce\x81\xfd\xee\xec\x77\x2a\x73\ \x36\x7b\x2a\x3f\x72\x4b\x36\x90\xd4\x2d\xdd\xe8\x6a\xe9\xd1\x50\ \x88\x1e\x62\xbc\x0e\xce\x80\x7d\xee\x3a\xed\x90\x24\x31\x74\x47\ \xc2\x74\x03\x5c\x04\x87\xb4\x76\xb7\xdd\xd2\x4d\x3c\x71\x45\xe2\ \xb9\xb7\xba\xf8\xd5\x25\x14\x53\x75\x3e\x52\xbe\x78\xe8\xa0\xd6\ \x1e\x05\x09\xf3\x12\xf2\x49\xd0\xb7\xb1\xe0\xa4\x3e\x52\x97\xb4\ \xa9\x7d\x6d\x56\x3a\xf4\x94\xd6\xb2\xe9\x1e\xf1\x88\xda\xa5\xd6\ \xa0\xcc\xe5\x48\x3b\xc1\x96\x35\x2e\xfa\xa8\xcc\x29\x6d\x42\xd6\ \xea\x8b\xde\xfa\x34\xf1\x82\x4d\x4e\x9c\xca\xe1\x89\xac\xf3\x69\ \x8a\x88\xa6\x59\xd6\xa8\x53\x79\x6b\x75\x9e\x4f\x3e\x8e\x1b\xec\ \x0f\xe4\x1a\xda\xa0\x68\xeb\x4d\xed\x7f\x3d\xa9\x97\x96\x02\xf1\ \x2b\x1c\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\xfa\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0b\x00\x00\x00\x0c\x08\x06\x00\x00\x00\xb4\xa9\x47\x9e\ \x00\x00\x00\xc1\x49\x44\x41\x54\x28\x53\xcd\x90\x31\x0a\x84\x30\ \x10\x45\xc7\xce\x56\xb0\xd3\x46\x10\x6f\x60\xe5\x01\xbc\x42\x40\ \x0b\x9b\x74\x22\x11\xbc\x94\x9d\x27\xd2\x03\x78\x03\x03\x19\xf7\ \x0f\xb8\xd9\x2c\x6c\xbf\x81\x4f\x66\xde\xfc\x7c\xc8\x50\x1c\xc7\ \x4c\x44\xa2\x28\x8a\x38\xcf\x73\x7e\x1d\xc2\xfd\xc9\xd3\x34\x65\ \xd2\x5a\x73\x51\x14\x02\x86\x61\xe0\x79\x9e\xc5\x8c\x1b\x3d\x38\ \xe6\xe3\x38\x32\x61\xa0\x94\x12\x88\xfa\x5b\xe0\x98\x3b\xe7\x42\ \x33\xc0\x2f\x33\xea\x7f\x4a\xee\xba\x4e\xcc\xd7\x75\x05\x0f\xd0\ \x83\xf7\x7d\xef\x93\xb1\x26\xc0\x7d\xdf\x03\xf3\x71\x1c\xc2\x97\ \x65\xf1\xc9\xeb\xba\x0a\x9c\xa6\x29\x30\x3f\x21\xdb\xb6\xf9\x64\ \xa8\xae\x6b\x19\x94\x65\xc9\x6d\xdb\x72\x55\x55\xd2\x37\x4d\xc3\ \xd6\x5a\x9f\xfc\xc8\x18\xc3\x59\x96\x89\x29\x49\x12\xc6\x5f\xce\ \xf3\x7c\x6f\xe9\x06\x33\x20\x38\xcd\x08\x1e\x78\x76\x00\x00\x00\ \x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\x74\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x7f\x00\x00\x00\x7f\x01\x03\x00\x00\x00\xfc\x73\x8f\x50\ \x00\x00\x00\x06\x50\x4c\x54\x45\xc0\xc0\xc0\xff\xff\xff\x2b\x69\ \x87\xb4\x00\x00\x00\x29\x49\x44\x41\x54\x48\x4b\x63\xf8\x0f\x05\ \x0d\x0c\x50\x30\x2a\x30\x2a\x30\x2a\x30\x2a\x40\xa4\x00\x0c\xd8\ \x43\xc4\xff\x8d\x0a\x8c\x0a\x8c\x0a\x8c\x0a\x60\x17\x00\x00\x3f\ \x78\xe4\xb7\xe3\x90\x30\x5f\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x08\ \x06\x27\x5a\x67\ \x00\x62\ \x00\x6f\x00\x6c\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x02\xfc\x42\x47\ \x00\x69\ \x00\x74\x00\x61\x00\x6c\x00\x69\x00\x63\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x0f\x0d\x22\x27\ \x00\x73\ \x00\x65\x00\x6e\x00\x64\x00\x74\x00\x6f\x00\x62\x00\x61\x00\x63\x00\x6b\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ \x00\x49\xdb\xa7\ \x00\x62\ \x00\x61\x00\x63\x00\x6b\x00\x67\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x32\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ \x05\xaa\x0c\xc7\ \x00\x74\ \x00\x65\x00\x78\x00\x74\x00\x70\x00\x6f\x00\x69\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x10\ \x0f\x9b\x88\x67\ \x00\x62\ \x00\x72\x00\x69\x00\x6e\x00\x67\x00\x74\x00\x6f\x00\x66\x00\x72\x00\x6f\x00\x6e\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x05\x6c\x22\xc7\ \x00\x6c\ \x00\x69\x00\x6e\x00\x65\x00\x63\x00\x6f\x00\x6c\x00\x6f\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x0a\x2b\x97\xe7\ \x00\x70\ \x00\x6f\x00\x69\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ \x00\x50\xdb\xa7\ \x00\x62\ \x00\x61\x00\x63\x00\x6b\x00\x67\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x31\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ \x00\x4b\xdb\xa7\ \x00\x62\ \x00\x61\x00\x63\x00\x6b\x00\x67\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x34\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x06\x43\xe3\x67\ \x00\x66\ \x00\x6c\x00\x6f\x00\x6f\x00\x64\x00\x66\x00\x69\x00\x6c\x00\x6c\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ \x03\x4a\x23\xe7\ \x00\x6c\ \x00\x69\x00\x6e\x00\x65\x00\x70\x00\x6f\x00\x69\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x0c\xad\x0f\x07\ \x00\x64\ \x00\x65\x00\x6c\x00\x65\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x08\xd5\xc4\xe7\ \x00\x75\ \x00\x6e\x00\x64\x00\x65\x00\x72\x00\x6c\x00\x69\x00\x6e\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ \x00\x4a\xdb\xa7\ \x00\x62\ \x00\x61\x00\x63\x00\x6b\x00\x67\x00\x72\x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x33\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x0f\x00\x00\x00\x02\ \x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x03\x53\ \x00\x00\x01\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x0f\xf5\ \x00\x00\x01\x32\x00\x00\x00\x00\x00\x01\x00\x00\x09\xa1\ \x00\x00\x01\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x09\x2d\ \x00\x00\x00\x28\x00\x00\x00\x00\x00\x01\x00\x00\x01\x16\ \x00\x00\x01\x76\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x23\ \x00\x00\x00\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x07\xe7\ \x00\x00\x00\x88\x00\x00\x00\x00\x00\x01\x00\x00\x03\xc9\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x01\x56\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x05\ \x00\x00\x01\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x0e\xf7\ \x00\x00\x00\xf2\x00\x00\x00\x00\x00\x01\x00\x00\x08\x7c\ \x00\x00\x01\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x0b\xb4\ \x00\x00\x00\x42\x00\x00\x00\x00\x00\x01\x00\x00\x02\x11\ \x00\x00\x00\xac\x00\x00\x00\x00\x00\x01\x00\x00\x06\xbe\ " 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() PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/images/0000755000076500000240000000000013245231431023677 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/images/background1.png0000644000076500000240000000016013245231431026602 0ustar philstaff00000000000000‰PNG  IHDRüsPPLTEÿÿÿÿÿ±¸^ %IDATx^íÌ!Aÿ4‚du/n¸ØjÊ ð@”˜ëÀ8¡„IEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/images/background2.png0000644000076500000240000000016213245231431026605 0ustar philstaff00000000000000‰PNG  IHDRüsPPLTEÿÿÿUÂÓ~'IDATHÇc`€‚40*0*0*0*€*ðü  QQQ"Õ;NðsãoéIEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/images/background3.png0000644000076500000240000000016413245231431026610 0ustar philstaff00000000000000‰PNG  IHDRüsPPLTEÀÀÀÿÿÿ+i‡´)IDATHKcø P0*0*0*0*@¤ ØCÄÿ Œ Œ Œ `?xä·ã0_IEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/images/background4.png0000644000076500000240000000014013245231431026603 0ustar philstaff00000000000000‰PNG  IHDRüsPPLTEÿÿÿ§ÄÈIDATx^íÀ1 û§6Å>X ào>Ã1IEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/images/bold.png0000644000076500000240000000042213245231431025323 0ustar philstaff00000000000000‰PNG  IHDR õ”;ÙIDAT(S}1E@†G$$ Ñ"Qp€m\@ç<! GqµN©Áx3²‹÷ìÛäËfvþùgvÀ0 €ôfY&I‚Ÿľï”;iš2$ÃðQX×5UÞ]èv‡s¶mãÃY ïDQÄâ ôÎëºbÛ¶j”¾ïO±|(Š‚Éó}ßg!àL@· Ó4YÜuÝ%þžyÛ6œ¦‰cÙ!ŽcÇÕÌo$d¾ªªÿÛX–EF]^·AÌóŒMÓ ÌgYv9{ž§p]÷çÓÚmH¨¨,KÕñÐÀȯ(IEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/images/bringtofront.png0000644000076500000240000000044513245231431027125 0ustar philstaff00000000000000‰PNG  IHDRÄ´l;bKGDÿÿÿ ½§“ÚIDATHÇí”A‚0EF8ƒwðþ‡ð^@±¥t¦\´Œ¢ÊÂÄIØÐäåõ÷gв,;L¡xõ  ª³ UUMžmXiþào30ºUÀÝí 7¡u –b·Ï`\‚6 ÄfŠBíõä’ ,—h)&~šËØ×àÍÜd»ó`ª9Áí9Aû¬Í~·þ>g\ÇŒC“âHO-êW•펇!KI–¾Ž¦’1ëñü)Vªïk° ÉTGø5¸M×V⠘Ǫõ·˜ÖÞÔ>÷W¸:Š¥Ëfjî‘a©fÀµ]IEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/images/delete.png0000644000076500000240000000147713245231431025660 0ustar philstaff00000000000000‰PNG  IHDRÄ´l;gAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<ÑIDAT8Ë}•KhSA†“æÑI([5îZ»P²±Ú…]µ¾v)-BIWíÎ ¢àº«„Š+QDE ŠUñ°V#­¢Å¶’j•¾4ÍÃãnÎdæNÒ>æÞÎ?fÎc®‡ˆ<&øó~¨Pgk m¡ òÚÊœ!òŠQ^laà¯aêw´JÛ"âá5…Žé¿¡!*uwS¡,f6ƒ(ÏWiS)*õôP)TÚ8hpæÍã—`Zìí¥BK åðþ]›oUæÊ´4R¾xè Ö óòIз±à¤>R—´©}mV:ô”Ö²éñˆÚ¥Ö ÌåH;Á–5.ú¨Ì)mBÖê‹Þú4ñ‚MNœÊቬóiŠˆ¦YÖ¨SykužO>ŽìäÚ hëMí=©—–ñ+IEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/images/floodfill.png0000644000076500000240000000043213245231431026356 0ustar philstaff00000000000000‰PNG  IHDR*+sñòm PLTEÿÿÿ€€€ÿÿÿEJK8tRNS@æØf¼IDATx^M˽‰1 †a¡ÐU8Ü&ئ ³áæN.2Û[À–´UœG?3Vô!ÞBÍàF½ö¶ìï¦A4²A€`$Ïšî8‹~xƒO~d³0hW2t"˜‘‰ äPˆ ÔDä ÎÜÁ˜‰ƒ3q ‰ä`¡.@ÿéýñ*Òþ{PÚŽï> x³l]f4B°ä $7P$WÀ’+è’Ü€ä $7ðsop_[v<Ç?ÖQh R…Û_IEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/images/italic.png0000644000076500000240000000036713245231431025660 0ustar philstaff00000000000000‰PNG  IHDR ´©Gž¾IDAT(S…‘1@@EWM$J7¡¤‘8…^tª=ŠNT{€­un ÑlçÄ—±!YQübþ¼ü™Ì‚t¦i‚Â)Ïó.ðÖ8ލªŠUI’Xï?ÕuÃZkÐTòœ 5ëºfx]WÜþgrš¦ˆãOÏ nÛß÷Q–¥]Á Ssžg^AJùŸ< ÃJ©ÿä¶m^–å?9Ïs„aˆ}ßßÉTcìáIA Š"[7M›Ü÷ýõÎWgYÆNúWVXè@ÚÆIEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/images/linecolor.png0000644000076500000240000000022113245231431026366 0ustar philstaff00000000000000‰PNG  IHDR*+4Qˆ½PLTEÿÿÿUÂÓ~tRNS@æØf9IDATWc`À T„ú&ÿ€)fý˜â¦ä€)û0UÑöoPkã‡hcƒP, „‘Ê ö#*þIEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/images/linepointer.png0000644000076500000240000000021513245231431026733 0ustar philstaff00000000000000‰PNG  IHDR·fPLTEÿÿÿUÂÓ~tRNS@æØf5IDAT™c`ÀØ€ÿL‚ýHºDX€ÁÖ"˜AúA À ë@„=BÝFµ @£1¿^IEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/images/pointer.png0000644000076500000240000000025513245231431026067 0ustar philstaff00000000000000‰PNG  IHDRXkOú PLTEÿÿÿÿÿÿŽôÃìtRNS@æØfRIDATÁ± Â0À‹Ð>>###···MMMøøøÀÀÀ000 ììì ŠŠŠÚÚÚñññ ™™™ùùùÍÍÍôôô999---;;;CCC¤¤¤ÜÜÜUUUhhhZZZPPPðððttt±±±]]]!!!666êêêÛÛÛœœœ‹‹‹uuuòòò%%%ÎÎÎHHHcccºººSSS888÷÷÷ää䢢¢JJJóóó___ñiìtRNS@æØfmIDATx^Õ’ÅvÃ0E=’fæ”™™™™™áÿ¡ž‰“S©²Nvmßòêú½YØø+ñ0ë[XÌ7<–Ƶ­BÚšom @³­,èÚâµôÔÝq¿¡ {í л “ êMØA+3‚n.¬5Ã9»•廩ۧ½ÀGÎdG'~1;§q‡ÚÑ,øèÚÍ~ È”Ñ]Õ´öán¿ß66é’«ë¥÷ Û„aêÏ»îgÑC`¦Ñ]‰»˜SÓ¸ï©Z¨€ÚMÑë<½ÂB¿[T›æšËNеwÊý5z[¯ƒ$º[Ê ¶q_ ‹î*ÜÀž¥K)öƒ–2ió‡éßgj· ²{èb²#Ù„òc.äÙé™džSÃ…H/ié DzmS–Œn¢Ho‹—°õ¤­ÚzXEý×Wé‚'¡á—J/r«C^~­sÎù}ýÎ1à`Ì'­emL̼N#9A‰yÁP5ü~ëÿÊUq »×».ÊIEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/diagramscene/images/underline.png0000644000076500000240000000037213245231431026374 0ustar philstaff00000000000000‰PNG  IHDR ´©GžÁIDAT(SÍ1 „0EÇÎV°ÓFo`å¼B@ ›t"¼”'Òx÷¸Ù,l¿OfÞü|ÈPÇLD¢(Š8Ïs~ÂýÉÓ4eÒZsQ†aàyžÅŒ=8æã82a ”ˆú[à˜;çB3À/3êJîºNÌ×uЃ÷}&À}ßóq—eñÉëº œ¦)0?!Û¶ùd¨®k”eÉmÛrUUÒ7MÃÖZŸüÈÃY–‰)IÆ_Îó|oé3 8ÍxvIEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/dragdroprobot/0000755000076500000240000000000013245231431022660 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/graphicsview/dragdroprobot/dragdroprobot.py0000755000076500000240000002610713245231431026113 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (QEasingCurve, QFileInfo, QLineF, QMimeData, QParallelAnimationGroup, QPoint, QPointF, QPropertyAnimation, qrand, QRectF, qsrand, Qt, QTime) from PyQt5.QtGui import (QBrush, QColor, QDrag, QImage, QPainter, QPen, QPixmap, QTransform) from PyQt5.QtWidgets import (QApplication, QGraphicsItem, QGraphicsObject, QGraphicsScene, QGraphicsView) class ColorItem(QGraphicsItem): n = 0 def __init__(self): super(ColorItem, self).__init__() self.color = QColor(qrand() % 256, qrand() % 256, qrand() % 256) self.setToolTip( "QColor(%d, %d, %d)\nClick and drag this color onto the robot!" % (self.color.red(), self.color.green(), self.color.blue()) ) self.setCursor(Qt.OpenHandCursor) self.setAcceptedMouseButtons(Qt.LeftButton) def boundingRect(self): return QRectF(-15.5, -15.5, 34, 34) def paint(self, painter, option, widget): painter.setPen(Qt.NoPen) painter.setBrush(Qt.darkGray) painter.drawEllipse(-12, -12, 30, 30) painter.setPen(QPen(Qt.black, 1)) painter.setBrush(QBrush(self.color)) painter.drawEllipse(-15, -15, 30, 30) def mousePressEvent(self, event): self.setCursor(Qt.ClosedHandCursor) def mouseMoveEvent(self, event): if QLineF(QPointF(event.screenPos()), QPointF(event.buttonDownScreenPos(Qt.LeftButton))).length() < QApplication.startDragDistance(): return drag = QDrag(event.widget()) mime = QMimeData() drag.setMimeData(mime) ColorItem.n += 1 if ColorItem.n > 2 and qrand() % 3 == 0: root = QFileInfo(__file__).absolutePath() image = QImage(root + '/images/head.png') mime.setImageData(image) drag.setPixmap(QPixmap.fromImage(image).scaled(30,40)) drag.setHotSpot(QPoint(15, 30)) else: mime.setColorData(self.color) mime.setText("#%02x%02x%02x" % (self.color.red(), self.color.green(), self.color.blue())) pixmap = QPixmap(34, 34) pixmap.fill(Qt.white) painter = QPainter(pixmap) painter.translate(15, 15) painter.setRenderHint(QPainter.Antialiasing) self.paint(painter, None, None) painter.end() pixmap.setMask(pixmap.createHeuristicMask()) drag.setPixmap(pixmap) drag.setHotSpot(QPoint(15, 20)) drag.exec_() self.setCursor(Qt.OpenHandCursor) def mouseReleaseEvent(self, event): self.setCursor(Qt.OpenHandCursor) class RobotPart(QGraphicsObject): def __init__(self, parent=None): super(RobotPart, self).__init__(parent) self.color = QColor(Qt.lightGray) self.dragOver = False self.setAcceptDrops(True) def dragEnterEvent(self, event): if event.mimeData().hasColor(): event.setAccepted(True) self.dragOver = True self.update() else: event.setAccepted(False) def dragLeaveEvent(self, event): self.dragOver = False self.update() def dropEvent(self, event): self.dragOver = False if event.mimeData().hasColor(): self.color = QColor(event.mimeData().colorData()) self.update() class RobotHead(RobotPart): def __init__(self, parent=None): super(RobotHead, self).__init__(parent) self.pixmap = QPixmap() def boundingRect(self): return QRectF(-15, -50, 30, 50) def paint(self, painter, option, widget=None): if self.pixmap.isNull(): painter.setBrush(self.color.lighter(130) if self.dragOver else self.color) painter.drawRoundedRect(-10, -30, 20, 30, 25, 25, Qt.RelativeSize) painter.setBrush(Qt.white) painter.drawEllipse(-7, -3 - 20, 7, 7) painter.drawEllipse(0, -3 - 20, 7, 7) painter.setBrush(Qt.black) painter.drawEllipse(-5, -1 - 20, 2, 2) painter.drawEllipse(2, -1 - 20, 2, 2) painter.setPen(QPen(Qt.black, 2)) painter.setBrush(Qt.NoBrush) painter.drawArc(-6, -2 - 20, 12, 15, 190 * 16, 160 * 16) else: painter.scale(.2272, .2824) painter.drawPixmap(QPointF(-15*4.4, -50*3.54), self.pixmap) def dragEnterEvent(self, event): if event.mimeData().hasImage(): event.setAccepted(True) self.dragOver = True self.update() else: super(RobotHead, self).dragEnterEvent(event) def dropEvent(self, event): if event.mimeData().hasImage(): self.dragOver = False self.pixmap = QPixmap(event.mimeData().imageData()) self.update() else: super(RobotHead, self).dropEvent(event) class RobotTorso(RobotPart): def boundingRect(self): return QRectF(-30, -20, 60, 60) def paint(self, painter, option, widget=None): painter.setBrush(self.color.lighter(130) if self.dragOver else self.color) painter.drawRoundedRect(-20, -20, 40, 60, 25, 25, Qt.RelativeSize) painter.drawEllipse(-25, -20, 20, 20) painter.drawEllipse(5, -20, 20, 20) painter.drawEllipse(-20, 22, 20, 20) painter.drawEllipse(0, 22, 20, 20) class RobotLimb(RobotPart): def boundingRect(self): return QRectF(-5, -5, 40, 10) def paint(self, painter, option, widget=None): painter.setBrush(self.color.lighter(130) if self.dragOver else self.color) painter.drawRoundedRect(self.boundingRect(), 50, 50, Qt.RelativeSize) painter.drawEllipse(-5, -5, 10, 10) class Robot(RobotPart): def __init__(self): super(Robot, self).__init__() self.setFlag(self.ItemHasNoContents) self.torsoItem = RobotTorso(self) self.headItem = RobotHead(self.torsoItem) self.upperLeftArmItem = RobotLimb(self.torsoItem) self.lowerLeftArmItem = RobotLimb(self.upperLeftArmItem) self.upperRightArmItem = RobotLimb(self.torsoItem) self.lowerRightArmItem = RobotLimb(self.upperRightArmItem) self.upperRightLegItem = RobotLimb(self.torsoItem) self.lowerRightLegItem = RobotLimb(self.upperRightLegItem) self.upperLeftLegItem = RobotLimb(self.torsoItem) self.lowerLeftLegItem = RobotLimb(self.upperLeftLegItem) settings = ( # Item Position Rotation Scale # x y start end (self.headItem, 0, -18, 20, -20, 1.1), (self.upperLeftArmItem, -15, -10, 190, 180, 0), (self.lowerLeftArmItem, 30, 0, 50, 10, 0), (self.upperRightArmItem, 15, -10, 300, 310, 0), (self.lowerRightArmItem, 30, 0, 0, -70, 0), (self.upperRightLegItem, 10, 32, 40, 120, 0), (self.lowerRightLegItem, 30, 0, 10, 50, 0), (self.upperLeftLegItem, -10, 32, 150, 80, 0), (self.lowerLeftLegItem, 30, 0, 70, 10, 0), (self.torsoItem, 0, 0, 5, -20, 0), ) animation = QParallelAnimationGroup(self) for item, pos_x, pos_y, start_rot, end_rot, scale in settings: item.setPos(pos_x, pos_y) rot_animation = QPropertyAnimation(item, b'rotation') rot_animation.setStartValue(start_rot) rot_animation.setEndValue(end_rot) rot_animation.setEasingCurve(QEasingCurve.SineCurve) rot_animation.setDuration(2000) animation.addAnimation(rot_animation) if scale > 0: scale_animation = QPropertyAnimation(item, b'scale') scale_animation.setEndValue(scale) scale_animation.setEasingCurve(QEasingCurve.SineCurve) scale_animation.setDuration(2000) animation.addAnimation(scale_animation) animation.setLoopCount(-1) animation.start() def boundingRect(self): return QRectF() def paint(self, painter, option, widget=None): pass class GraphicsView(QGraphicsView): def resizeEvent(self, e): pass if __name__== '__main__': import sys import math app = QApplication(sys.argv) qsrand(QTime(0, 0, 0).secsTo(QTime.currentTime())) scene = QGraphicsScene(-200, -200, 400, 400) for i in range(10): item = ColorItem() angle = i*6.28 / 10.0 item.setPos(math.sin(angle)*150, math.cos(angle)*150) scene.addItem(item) robot = Robot() robot.setTransform(QTransform.fromScale(1.2, 1.2), True) robot.setPos(0, -20) scene.addItem(robot) view = GraphicsView(scene) view.setRenderHint(QPainter.Antialiasing) view.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate) view.setBackgroundBrush(QColor(230, 200, 167)) view.setWindowTitle("Drag and Drop Robot") view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/graphicsview/dragdroprobot/images/0000755000076500000240000000000013245231431024125 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/graphicsview/dragdroprobot/images/head.png0000644000076500000240000003517413245231431025546 0ustar philstaff00000000000000‰PNG  IHDR„±¯úÝ2 pHYs  šœtIMEÖ 1ǬbïtEXtCommentCreated with The GIMPïd%nbKGDÿ‡Ì¿9äIDATxÚÕ½Ù²]ǵžùeælW»÷6ö$¨ÆuŽaYòEÕE]TÑዺ&zêÈGAz1ê®®|ŽãÔ)GXMQ‰nw«}¦/rÌ\s-l I… ’v·Ö˜™£ùÇ?þ¡Vü¸¿Üà÷*ü,J~?üSKÄ*ÚÛßrý&þ›ü¦¡ÃÞîÅhÀá¾›Ú3ùÿÔ†ð/ÛÉ[wh–NŒÒ|zñIAMʘˆ’5[  KBNR&ä*ó)ù êà'½¼!"þf¿ú °h:Ê·¿­±T”lQ¤(6\²$&§âŠ ´hbræ»9¹Êä­*9ßï×ßÐjp„- ÕÝò«K.¨èhØrÌ1s ÎØbÑ”Â{…š(ÝŠûl8£`Â)34[V¬(©)i8cƒá˜1-– ‡j)w˜sÊ ã÷Ó{æ{;ËèÕßœzêö·¿CÉSâÀU¶4¿Ý²¡ä>–c4†+6\±fË–%%WL™Óð˜MLÓÇ"fL€kÖÌ¿š1W™D!ÿ Å8ÓáD¸gXÜI6àõAN NDÍ…[RrÎC.°Œ¸ÁGƒC³á‚J¶T(b4-çĤ¤ÄnbÑDdœð&·xSŘðÊÜÞ[ý>bß$>j µ³èËô¤÷í Gõé9ç”<àK"rÆ(Ö,hHI¹â!”4X,s::¬¸£¦E¡cÙ²’kæœñ¸ã_ëφµ÷P†g÷zc|Ï1¼—í .”w·_­QÄŒ/''ŽCÉc÷5Ùð˜‡$Üæ„–K&Ìø†%¬°D$Ĥ(Œ˜ ¢¢!fLLKÍ‚ˆ„H¹ÍÞá„rr•`°rU†y†į%j¨p,MzO« kwÁùñÈ3U1›ýákι✠@±à15Ç8žðßh±@BŒO©3r ¢Aai©Ù°Áˆò—§¥æœ†)-ÇŽnχ¹ç†Øè‡ˆJn¯¥¸»øªÆ h¹ñYÅš %…ËxÌ=îÓ²á –9Ž+¶l™qÎ_)1$h% Z&Œ¨±l(GMEA‡&#FÑáHq@‰áK&œò:c J.Õ¾³þQœ¥“<±/†b*ÎÝ7¬pT,¹CÁŠHH1¬y EÁ59QpÉ’––Š’šËƒ¦¥¤)–އ&Âà€„Œ”ˆŒœ-G¼ÅÿÂO9QÑÀG¸§jõCžŸÚ¶t·ŸÚcÇDUÿà]ÇßrÁ–+j11ÐQa©ØpŒâ„#žðgjŽhزdCCLΈ†ŠŽ‹•$Ìh4TòÒc:-% äœÇÜ ý‡Ñ¯ŒD,÷}󈧔'_àÐ@MqÑ·””t”nÉ#qƆ Ë)–’’j7˜2¡eÉ–ˆ ÿšœÿ!bBÉ_h¨QdŒ¤æ¬hhHȰTtäD8"2 d‰Ââè˜0"aLDFÄ’ÇŒ~ÝÍï©g„Jõª>B…ÌÀíýM{ws\R³aAÁ’K³¢ÿü˜–‚5š1cFh6¬YÑ1"å”oYr¦fIAÃa)é¨IØbéÐq“q@,*ŽòÑ CK‡"''!ñÎôž¼aõ}N„º¦zTÁ·Tw/¿zÌšŠ+ÎXà¸bAKŒ¢¤ ÀÒÐ)3f,éÄ$¤ä8þÊcŠkÉ –š––” |&¡@)Ðbé°’¾¥€ÆÒ±e*¯;%¥qwTDô¹eô2.R…ÿÖ¬ÝC.9gKÁ%glQÊ]®Y±!E3"!&B±a%?ÐGÿŽoYÒá(YâÈ«ð~@9 ˆÈ‘’°ÀS±¡ÅRÓ¡p$Ä@KÍEÁW\rƒ­›2#W&¤ÝßÛîàOK÷¯ØRR³æ’ jÉ §(bFÄ”\°"Æï]Ó°%f̆FpEC…!&Æ Y‰Ù·ŒˆéèØÒÑRáäÍ»AM3%’ïÜÐpÉ‚7xÓßå™k¬—4„ü×ÊŽµ{È}.äG®YQ`¹ ‘€8bDÊ-*ñð%„—­1lËÈP8R ÃËŠPr™ZÉ|D‰€Œ)[y(-Vª’þX6´Œi1ÄE¨ƒ*è á¦Ð’9l.ñ tl(Ù°¡ ¥ÄaqÌœC"a²¤¦%¡#&#`¦À‘`€ŽN®Ï"4·H+Z4Іš‚˜…¦¦¡“¼Â1&a+>%ÃQ²å&íÀ¯}ïðé¿Jþ_ŸqA…¥àR`ÿì #nq›œ’ -%k"RcNH¨YSÒbh€ŒšŘ’˜D 70lIŽ…¡Æ`ˆ‰è¨X3¡¡¢eCGMJ‚Xu4T|IÄ)S§Õî´¼rÔØAåþÐmï^~õ„‚Hꊊ…Ô€- ·x“c4KÎXp‹†’È™0fƈ1°AÓ±49àˆP"©^[[JZ** Ý·ØàÈX±%eƒ–Sqņ9šD¢†"BsÁ=2"7Wì]ë`„èÅ¢…7HÃú«sžpÉš†BRá‡!ç·¸…b-)ŽÏcbÆœpÄ) K´œ T8IÕTcA¡q(24-s" 11ÐaéhÑ‚Pt8j‰8±À½K.9,ü{E 5¸–êÓ5+–\±¦¡£¹J ¦ò,½c­%Î'Üà5Ž™QKG£"•:££¥“Ô»£\££ eʘ”D¦Œ„Ž‘œO%‘C‘2f…¥¥ÀÒ’I sÆœÔE*ù¾QC ðß~‰€’’ˆšHÉȉI©©ä+6\‘cHI˜r“a0S £aCJLAECM‡‘SÖÒa±hZ©B34 Ž‚XªÕ’N꓆Zj–ƒã‚‡ŒHˆÜL™W/ºÜA‡ª¡¤ ]„†‚ 3%Â16T”l¨ÉI˜sÄ'3¦"%§¦ã1crÁ(5%møþŠ1ŠG… ~C†TJ9ðW´”ŒpẴ6T(rRbR¢ßM?zÅZÃíýÞÑ|¼æœK–´h)¥R&LqÒ~qlyLMÊfÜá”SF$T ­<ñ’ –¬©(qt@ :#%––ˆ 1Ž’C"×(ãBî0h飵l¸`Ä ³'ß™hGÏóH)dYüöŒ3–lØÒQc3fΘËC`Ë%GL8创ù£‰& Øv,}GKÁŠ%k¾¥¥¡¦¦  ¢BI8ômËŠ͆˜) -[R ¾语ÁJDósË% N¿³ì›iÞy]rÉ+ß¾"%!fÊ„ü™ k4§¼ÁËëb¤HzܹTJ’p&L˜ çkË‚+.ÙÒ 1tX F\ÐÑ¡©p8[j:À ±h)¿¬¸P_šÕ.X¿¨á° WîXÖ<✠…bÆ1)pΚK á˜ÛÜæ˜„#f̈h±DÄãû€ìߢÂK•SQÐ`©)(¹’伓@ñ:5%š’Kr1CB„a-NC#ÅyBGMNÉ}r^ws¥öJÇ— ŸGÅØÒP²æœ+"fܦä[*J*J nr›SŽHÉHBÓWK^à²pšj*ZJÁ¬J JZ: [¶$" &ˆÖ‘b¤[ÞInêAÄÿ~BÊ;p1;QÝ–0„•cܲvOø6@d5–œ›d¬¹`%WH‘3å6oò7˜šà?¢1!7Ýý«¥Rh,ED"e]CÖš-[Ö¨c ":©d1ŠXŠûÞ›µt´lqtŒqÁÍãé3 òçæ–úã­`Ç [ZfLɹ`‹f$!­%ç&os‡cÆä$´by-vgLœ¸Þ`Þç÷mEŽ£cÌ–”5UÀ ±t@T%¾û nÝRÑÒRH×]3æ„Ûœ2þ̼ŠÐòÊß–À„5W,háÐ,y‚"`ˆx››¼Î1©'~К˜H^¨ ÿô&Þ±]ô ¨sRv94ZÌS±¤‘ª$“ ©‰ÌÝ™ÏIõÑçŠ5 'üŒ7?›þ†ÐöyigÙ}\RH‚âñ€ V‚0T”hf̸ˌ99 GM#/Ic¤€×<¢ËÃîSÿFú|  žEÓµ¡•ÌvA$§¡OÍ;íqò-<MFò^¢kMñ|`ænÃ’sœã1ÂRR°j*J,ǼÉÛ¼IB†‘æßšÞ3Z‡;‚¡“ Ô]ñ€¤¥«1bI#xƒÞ¥•³ÓI u,ŽŠå[<à=w¤Ì n½dÔP÷Z|FyΔ99+6¬©I¨©hȹÅOyL²„þÆ«p{­üîP¶Ÿòº€-y²ýßúÅHú]V€|O5ò=¼á|FÑ_N±s¿#ÿxüù³àÜïètùO®¹ïþ‰/)xÄ Ç8Îx–ŽRå×ù7¼ÏŒ4øèãó1¸J|‚ºo߀8è¾ðêBBg¥ä/ØJųÄ»¡¤¦•“ðÛ~õËë´t¼ËäßsªÌó%3Ë!`«hXÓ²¥Ea˜`ˆów˜’ rOØÐró¸ÉÞ CÃ!l˜_ôWÌÊS·Xi ûû^ $¬©qò}-âH)9§$¦å ÷ø7Ÿ ï¿@_£Ê1[Z)q=éo<ˆQx;zðvw}rs`>pÚp†v‰Ž o]…3ä³&(¿£!@·æR~r„!ŽXq%ÈGÅWœñ6ñ«`–}Á“H ݠΊ #N8" ´Œ)ôÕÕžØ yVnõþg7}b悉}O4¢•ر‘Ø¡‰„V`˜0ÁbÉÑÒÒ=ó GÏoéa,ô¬'õùÊâˆ1i舟鮠(†‡”‚>uƒ|CK·µ¯xlÈ<41V¨þÄY —®JoªœŽ·9cÁŒ›“…ËótÜx„JË—v"±¿ÿAS¦¤ Œ·ÝÛúnf´˜ùYmZÿü‡ l-ÜŸ²ûš¶¿bÓPÒ¿4§dNJÉ–9o Aññ'G-fðÙ`ˆÈ˜0"–é_ª“ìahŽ¡ƒÔ<&5h.«=j '²"–³ÑÉu%<º:\̈ˆ9šOè$+F¯—ŽÞ •ø 'CL΄ )N:Wý[è©=z`-OOíqYôàY_GåØw­Žˆ.T}UÛŸ”JÀ˜þð7(FäÜâŒ-çÁ°¯ä#4 99T š„˜œ7¸Á’¢©Ió³S!Tê½`ÇkÚý3ô&þ«ZÉ#Ù†–ïêá¹þmEßDtzæ°‚l¾†âQ”´¤_t¡\{ɾ†¥)f„¢Å Ð…²È=†fá©¢ëºKàö:l‡ƒ nïÏ&P Øûsï34-c2,Š˜–öN½¢³tXjjJ"ÆäÒ‚ˆ‘t­Õ îï?u`˜}3좋º¦=t±ê õêƒ(!칺]0eM+LïJÌ 6D8õr> @n1dL°”òã#qŽ–v/â«€Lîg’Og»æòðI£Ê®íø4³Ó`1‚Y{ª¡#ž–¦#’Ü¢‰‰I%½2?¢GŽ8fFËFò·hq«ìÃtúéôùºÂK…¹œÞ™vᚨkÒp' ­¡E…A˜6`Ù=.ÉéíÓ>ýò†ðkGN‚¡¢–ª.’&ìÛ<¬úhÁAöºhîH‡y†d¯‡YŽ­d˜ .—ÒJ̈š†ú™ÔÓ2DÌC0K'ª ÔsüªÝ‘ºJ7ø¨;àF»§8›»³¡öЭ]rÕ Laˆ$®ôñÀ<99%Ö4¤×šB¿ˆ!"r²¥=Ò°ÍÉ‹P{oú°¾Øµ“Ý5ÃGnø^„Ú¦œ¨”{üÅÒѾ½fCó/‹PYùfc&l‰…”aÈÉÉHBƧ­¾ñÃÌ€[FÉíwRNij1–œßuCúö•œ¡¥•×5$°;i4;Ƀ#bæ8ÖT˜¨W¢z2NBA#˜–¾¶”H½ð¬Œ;ð.Rîš«rø§¬w!Çð½ý‹ÝÕÚeV+®³ àKB_fÇ Jœ¤B± Éí;®K‡oi??^·gžCC8q–6T†ŽŽZZÑZ º×prêZª`ŠV˜W×=:ýÝOÐÑG‰Üµ–F .5x6ûß R×™Áí™À;+ã¤Ù7• à‚ˆ:ZZÁ&\8+*´4–[¹LÝ3ɧ/ÀÐ_h,H¬Þ¥9`Xê©¥ž‚gÍâ€ýáïÕ3ÚB:ºlBÏBÀÌ;´ôHœ4¡ô^×í§–†’HêÿXR)½—3î§­êfØŸ­êa:upØ«6†•Ë®ã$›Ì¥ß‰ õàêõµ³‘·¯¿ƒ—ýBàm'ØO €žBžž¡R×üYí¥Ö}l²RJ»A¡öú`žÿ |gåmûŽg‰¥D°]3ÀЉzD½'%½¢!z'Մ牅õSžà颊§N‰Ûˆ9Û#¨ìm6T¨}³ï|j,í–Uç·ÃP#9öe3K’KÃHjÎX|q,cG]È7ü‹êheÖŠ/Q2ßíùV.– i¨©Bþ!NZz—JîG# “öð@BK#Ž<i#|=#Œþ)-k!¨¼4œïèîúJ'-]=€Ü‡5j†š¸‘‚W‡ÊÐìÁvþ,µ¡åÛ3j†Í.gÐòÿH`9#(Y)ƒ¶¾¬Šƒct#ß­gb›€¿ª—Í#–öw•´á=!£ d—RûãÖÊ3‰è„à5C,/Çü‡ Ç7’Ö Ÿ_‡ø¡¤s¦nÖ›< g-o½Äü‰ü:zõ2Üá~éogJL$½ìà›:,kßÑHsX‡RYcHPÒêñ„Þ#4’XwƒH¯B¾¸ÿ{'Ì(- ô:$ZJp'§µ#(1BC>˜þ{‰«ácÂX€ŠV¦ûMøJà„-”A?Ô¬…—‘P‘0b,ˆiÖt”·ƒèa©´²€‘³†ÐÔ}Ç+Mg¤'îs>”Û>¸—G¨vŸ”ÉEðàWJN&6pâ3áÁžñ+Á±z·—’òsfD’¦Ïˆ™2'ªYŸÛ‹û%{+—®“9ÐF”¡ ¯·£‘ìbçª}øM¾B…ô5[q] S¦Œ0ì#.q£ä‚oyB%-|?èi^kÆŒ…Õ’s‡œÛÜÄP¡Étç!¶¹d”p}š­ ËøA?õÓÈ¿3‡ ×ij&"a|^—©>ÇYYoæŒ1¹¸.ú—Š{\ð€sj‘ÅðÜ™­0¬3a69Æ(Fâê®è˜0“.k* °ä•;n)ý•%x€Â²e Œq„!˜Õ ‡ðEZbÞwF {‘:ÉÙ{¾A$“8S2  -9šš˜–?sŸ .¨ˆ9æ„ °¥¡á±ÐJR eJÁšˆ‘PÚ­(DLyDÆœáÊ85)F˜–%šYc8ãhe„¥"aÊœˆ)·8 ŠÌ+¦Ô$Ìí3 ¡Ú}Z2±†:8($Rž#áà’K 3N¸É””Šš- oð3ò„+,ŠŒ )–%¯±âB2¾šsŒt¯­¤ðó¹âŒo¹@¡YqŽŸ*®¨(ذbIĘ%RrÆô72ÆÀÁ•xÁ«ád0¡gO …p™é€ŒôÏù’ "nrƒ[̉èQS¡yÄ=¾âœs–Üà˜ˆ–5%1%% k2‰#;jˆ Ý®–W<áEÄ– -uh6UTlˆ³%#c”c" ¬ÈôÈI¿ÔÏ3„=ø°ÅãXó-PL%©?•ÌßD¬yŒsœ) --93é,ÜbÄ1ùš+ fDÇ¥8φKLJNŽÁIÁÜç%†Ž‚ ®(è0ÂtØÒâH˜0bCÉE€òK V´&Dt2ó#Èê½WàYj›¾ä?³!åï$v‘<±BQ·Œñ.SÆ’<ùc½•´gKË”·¹Ã»<¡ &Ç))–ÈaiBêm•t´lyÀ%GÅŠµ8ÃX” -9)…$ä§u鈅»=‰žÍ`ðµDù‡̘…2¦Ç* 9š†”œ-OXó:ÏûL¨)iI1ÌI¨èPÔt””òªV¬ù —¬d"P“p,•‹gêgR^•¬Y°½ÃüŒ·¹ÍœË{üDæý¾óD(Õ‡—¬™“H#bJCÁ– ‡ HvÎæ’œ»ÌXpNKΖšŠ% R YyŠ”lrÛ¢9"¦âOly›9Ð1•!Ç­¨ ,)YÓW,ØPP†¦pËŠ-¡$1Á0çW<”Á\ŸÙZ""âPÊ?Åö·~Ë[’à"&X#2䌈%eýg¾æ”טsŸ¢¦!œš#‘{Ê„ˆˆË%[Z¶LxœK³Åò9ÐJ’¦E„«•r¾eÃ9 9ô.ƒZ 䆖PÖ§Ü`Æ„c J&”씾HÑå¤në$ÛkÄ!A‚¡eEÎ1·9’*ô&Ä´¬xÈ×¶Ä!ë᎔1*r2ObR2Fl©i¸CÆŠˆ ÇäÔ\pÆš%7¸b˘wØpŸ gL8唜ˆ–)–5—TœóWØðsþ…{<‘ψ®%ŒIPtÔÔ¤DäLÈPTÔB]i¤K ð;"—ª¹Dý^‰T—}vBåpØ_v¢û“ÉœˆˆNž‡ÏÏ )r4|N¹É”‰¤;5Sn°"gƘ%%w¨äÇ—hRZZ"n“°aÃ},Š–ŠÈÖ¬XpÅVrÙX·îëdÂ7%¢Æ•Œî[2ÆL¤óÑ¡‰>zgÙÉ)P¨h©e²¯sDŠaÄ[jNÓ1gEÄY˜ÝTäÌIO-b„bËl°2y:•WQ³ ¢¡ YåZ<¼W²æ¿sI÷©ƒ åÕ§ÇÛÀ·NȤäí0dŒd¶Òªqÿß­ŒËû¸¦"eÄœ9ï±4[Žxœ Å)ð:W4ÌY x ÃM^“âÈŠ ë‰ˆ¼e¤”ÔdsÌ9G̹¤D+!¦£ #M!çáŠsR, «O.>ÙrÄ —°èLi$àxà}+>ºcÊ(fê@óñ 9?Â>F“ÊA+¸"áï±fE)™Ý’%#Ž)%Éih8&gÂÏy4PÕbfÜ&§¦%bJÍš–ü=oðG.iX±Å‘’a˜sƒ5OØ3%Žš%†ŠŠ).yÄžð6©;QîÙáSÿ*v6¤Ñ¾Õ‡”-™ˆ'2P´UªÉY —Ñá‘ Âå¹»¨:$RS®˜±`ÌO(ù ~ÊûL„é•(F¼Ë< "%$Ä 0œð6_²fœãȸIJ%‘ÉI;Ð3;°%¦âEÁŠ• p>³ìY(^ƒpMÅË-å® ƒCB°•Îã)Ž%#Ò `;"ǰ¦&eBMA„|k à˜9gt¼Ï’Ÿ30‘pŽfÆ[ü‡¢‘ë¤øš†#~AÎ}¹´Ž)'ÄŒ¸EJø”)rjFÄlø&ôFÝw#T>ÍöÝD¤LD« ôž¾©/×ð þÌš–© Ý ŽœDxÓÖ´Xä–$LPTŽ8áˆH\qMIMLIÈÛh ©JVÜà”ŒŒkd¼Í8Û%WbN͈cb&ܿŖ%5³½ùákª.p'U g)™êSɆ¤jŸZúSV,iÃã š–Ž”ˆŠ%Ž”Q8¸ßò‰t(7äÚùâkÆcSsb–<¡@‘JaYÑ0ã_“qG”ð 9%ŠD†/-Š„9oó61_rÌ™_3â¶gˆž][Ë·„–„E-"…âÐŽ²Ó÷—¼KŸ¸Ï»œÒ°$’ù»--ǘLZ:[^GS’1cÌHŒ§û!‘VŽbB"Õ¦£eMBFL½GÅ#".¤ìÕnÀ1!'#§â 'äÄÜb‹aÆäýöÀ{>¢Ͻ?hÈ8"á”rK{]?¹Æ1ã]ÎxÄ‚3Á iÊ{Êê” ÂL#F¢-`öÀ€¾û‹Z‰!cƒ–tÞ­$!ç„‚–šõ€žK~35å˜cÁ±¼õ=óÝ>¢ûx7¨Ô úÒÒ° 3vêíÁ„š 3æÜc‰ã˜Š†BæÅk -9GsÄL„7Fdr¦¢9ÔÉ0݈11†T„? ½ dÊ„’­ä¸­Ì%fŒ0h"ÆŒ—Ï“]Ó8H¨¸§‘ŒIË脘ã½¢§ùÔ 5–Œ[´<¦ã[ê0Èð®~F̸ÅLD[{Ñ>'^†OIÍ3q˜‰€Ulˆ%Ól¥û’2b-õï Ær1õ€¿ïU2'd×P £ý¹ óEŒ–fBŽôs¾îÚ†™láf¢BÙIþÐ3§|ù1aÆt˜óë‚FY¯áà˜à¸ÅZN…W¤ò=•&D»JF_SrR"6"ØÕ3{üäWÊŒäyM`‡"ºL޵¨Î&‚){îÔnÀL=5îê»Ï9°¥$âˆ[""!&ö}h¤"µ‘L‰nå'쥌9’~EB"mÀš ±4l`aÝÌ:,9cQÊ´òó-Ž’ÿÀw冚î®þ"ýp$».Œ† ŠaÃY»ÃÑXäò´ÌV¥rßwôàX =Ï-:gÙ]‰>sõÅÞ K–"ë’Ѳe‹#—%ƒb"=ùJHꎖ[L…êÔIaŽ`-É5MžƒOó^t»‘y(‚—(£É׃Iж×44ÒGðÕl+ET$é:a°ÚI/ņ±„¡¬‚#fÌŒ CbÌ\bXÍ¥ ì§L˜ Ù¡TIÝ9e"‰´W2ˆPϼæóå'– :q,z³E" ,}&ljŒ Ä}NCHÓäâbY¡¤ÍÛ‰o°Âª&øž‘Ÿ0ç˜+ÑÇžqKÉ#ó•lÛ8fÄ9 '¼ÉÌY³ †”ç\lQŒß7×0]úsý‰• O¸Õˈ g,ù·]ã,Mð3½f( ê»%ÀH+”N¾JXÿJ7~žtÌŒcÑË6TÄd̸Á†%+*k6äŒÈ™qÄņ D’§WØí“ê»®†ÂÜ‹dX)¡×g„-wƈ©¼ÜNƇTcFšL‘vá°› Õ³!ZZù ’úfo¾#"aÌ” ÖT(2rf̃ˆWcÖäÌ™“cYS¢¨äõgÒ²n|Âx—{Ï¥D¤¿çCCô™þ|ö•' *¹ç é]I }&çJ¥—Ýü„ZI+ÕŠÜ#Œ7÷]+$4+Ôá†DDÊ["Æ’4y1á#ZinåÐ;M/:ï  ªbQ¨{×ÍFûÜkCú¿swÕ=}oúë)£ß®$ñÏ^RÕ‹›°—l»@ÏѹSñ,‰: hŒEjîgÆbÙÕU€oÙŸ¨Z4•½f’ʳ«gA´ÒPfº´(mjô=ž?¯¡ˆ°µŸÚ@}ßãð’®:0]€s‡SßÃI`B[ʼnFòÉ-‘¬„°PÚщz‰SCSFÁ•,1$$$´2ù«ñ£VžâÇ–|©ˆÄ¾- YH`žï#ÂDæ]ûý€ãî÷í‡þ &Ô‰ÆR FƒEtj‰¿?ÇÝÏâ9€éõÇBôè¿Î‹ø¸0çÝ6æk‹˘Š5çÀ$Aê0ªðh0¯á…@[ Ý–4ñ<¢H˜¢ºëŽ¡Á~ØJÙ3£”žçˆLx²nðf‡k:p┘¡’ÃnåØ&Ä’n©3–@"¬YäÈ[*¶,¸’U4K¶¤4ƒŒÔŠöØF|‘¿FHI‰ŒŸ7eÕŸCHÿWÍ?Ø_î«9oPIɬhEzG 8üJn³8ÄJk­UÊÞ9öúu •èžöDC!ªÙ~í€HXò ÷9§%~æŠ3&(4¹Ìÿ¨0ÆàI¨­@<#`Cåó0Þ¯¾ÛGø«á~ÙJ>€Hx¶ldlÅ ²3y´aÈD…<ÔIºÜïáhšŠ W”(Q¯„ž¦e˜ñ ßò€+ö³È% ž0–‚®CGA§Û £Ç»å”GAG<ÄsÂç!ó¶§œR&ÿx8ÛMPˆÚ]/[Á±{δçDæD¢¡ÞQpÆŸøŠ+:ÆÜáç¼ËHs¹æ‚û|ÍŽZÖ @ÍŠ NÉ(„k€)•DZ”f<ùÍ÷ï7(Ž9!ùµ¾vh7ºNeÈÜ3¿wvaŽÖÿm²Gøæ©‰½Ã¡ÕÝ<§zM*P®ÆpÁ†G|Éå>%†œ…<ó„Bôð®8ãœÇTh •hé÷‹ªRrù vzµ²Xb7¥žÈþÐîp“äsõ">¢—àRE”ÎOàÙ Ú±#Øe–ý„”Læ¸`,MÍV+~ÏŠïŸ&²'£dÜ`Î)·iPœÑ’c©xš ñ ç4¼ª””²÷±×hÙôùE%r kœÿc4õÏ!œ*ñ¼õž>N3¿;Qƒî€Óß “¡  zYˆ1ÇT䌸ɈŸð7YsÅ–Šs.XRrÁç\°ÅI…c¥ƒµ+í;ÉD}pîB²o(ãŒXq…Â0%ÿ•z¾#~̧чNžf!#æûÏ}˜WîD×¢­îˆ…a»Cª;Qš¼Á]n‘p›)cF”<æ ÷9£c!SýÕó8 ¿HÂ%âŽÛ°Ù¡oáh2 ç,¸I„Û^hxÆîûh7O{îôÀc¨§t@ô@’QÞ„Wíqê^»ºìë§‚UĔӗ,ÙPsEAKh Ø=µÙÖI«Æ„¸ä'Åkðz•Ë-…Ì1÷£W/0åw¨$gB‘ †\ÀvšvO¨ÀßaOFÍHüVŸox†…O •(¦:7xÃg\± z©L‰øƒ)sNÉ…šÖù×¾Ò°â3îp GÂ1±h©¿ô¸ãÓŸÚ÷¾Ü0 =È,û£Ù ŒIÓh(íè¦Ç=½ê™³Žwy‡<áL–ZRiøeŒHzÑßÝñ௑Nl|À'ýÛ£ÏÌ'&LYíœå®Ø ”ÚJ=‘ž²D Æg¸¾NhZ*: ‹cr WBõ@‘x›‰pgú®l'†pƒ¡çRä`Úб¿^ïè…5f‚!~…€¡ô;€Ø&Œ§–Œ”>õ”<‚ED¢gÔÈ5Ô"8>cÎ 79å&ÆädL˜3š’ Å]' –Œ'‘“h‡§î^U6¡ÿT=PnrwᇹÜY3¦S! CÔûJ—f/k©cÀ1æˆHZŽÈ8c$0¾ÞÓ¢è¤ôªCdÓäB<ÜÐ0bÄ ÒW[+qÝ Ë~¦Ð_’Êm$‚±ìä$ÌwG!`»§ýÑ¿ #ú@~9ˆ¦cÄEFMM#¬Y'ˆ…otšàD¸ M)¹ ™0aÎMrõ´°è+bç ÷ÇÝ»)‹]-Å÷„ æó—I_ê—\ wM¶n“£QØ×ëOJÊœ˜“ /è¯X³¡’EÊ•Àp½>m>ù #sà‰´ô¬Ô/‘4•{ÃL8aŽù|¨¸ü_gCB¡ó>%I_P²oÏk̉±”²5gÅÎYJS÷±0a*i ÷Ô£–š Ë€Oø9¯B²MˆÈ…Jv>Ö+b_oP¿¯¿Rá¨ÆØ |±f²‚*õ»:Ù„Ð…\´¢"eÌ”5[@s*Ë/KX–œ³’EìT’+(&h–‘Ë8SÇZò ï€sŽ8Qj ¥õE.dÜkذÜr#'¦¾^*Sf^ ÌW(GÅ–-…Ð 'Üæ“_ëH«_Ù Ð_è‡m_p ³=n(uƒÉRæ~¦4¢IPáhX±bI- ¼ZÒm+J21#uŽ$ª óªC#À0æ˜9éçjH|k¿z)XÆR±rW,D¹# Dœ~!•d*8WøûU¸l}îdò·¤¤eÍŠs¢ZìDæ¹ïÇû¹±©È&a½‰r)iH‰8â_ñ Þ}tïE£Å+F pw{çØJq¥­ xz™¡&îOqTr®"iÿ´4Œ¤‡êË)B‡ÓÉ(¦Ÿ2¬éhÈ$/Eº/A‘sÌŒäÞË]‹W2Į֬e=‘Ézý {º††ðY#ætü3‘SÖ ¸,.H¡´Ò‰„³6DBä7”ÿ:~…÷óʆ LØÅ«iLѲg¨ƒ¼¯ÚàëÅ~YT+yE$šÆ™ÐŠz0Ïg ºó „\\ÉЂ&¼Æ-òÏyæÎ„Ðêž c‘v€Qöû\€Òö+TµWj`6hÉ´tÄŒ…ÞjdgC¿—/aD+ãk;1Ø*„Èžñƒ7™¦ŸAˆýA£ƒ‰p_!ôé²Gšû³a{šû‹Ê\(ÙÕŽÛIGêRŸ8õÌË:@2=‰¸'&9Ùéç«Ûœ;Ü"ý»FÚ÷?*Ø?–¡ÿÄ¢A¦aÙWBnãsƒ1ËPøK óºþm,†hÂùJCûƉCíâQDdœH"EØ2úã^ blÄY52^œ êáÚJ½§»ãàEìÖ¡)Ùl``÷*ÉÝÙɉ²bŽZ–¦Ì™‘¨—lè¾j­±“èIÈD)bJN!ù^?<Ý+Ÿú^D$)Ø®‹Ñ'eVÀ|'äG%Øc¯tìùÔ Ø¸Wf·#ᔟòš M.°P?^Ôèg2bÒ@/­E—¸íK„ÕßKñšp6\Эf°CA²êLbeÝM3si‚x[?ô8bœì33ØÜã~ìðÙØ11™4ÞJ*)…ý¿¹d…;>n´·šFLÑ_©6 ­tâ+©7i·ò#TùˆˆGœpLú›gA~PC¸=´¸Ou;JyymÐÔ7éñI¡Ví+a44rãt*kÙ“P¥°ò=¬W `çEGø¢§‰òî`ï`ˆ¡{Ü)›úC\¢eiº•²§¦FË v#Š·H©eT5x5!a¾ÖʉhÑ‚HyÞäKj™üí³XŸ•ôÛsQÌ͸-C”Jh¦î‡†êTÀyô`%%Ž­!õ(j‘.PGT˜êóI}ƒ¶;°’„iYkm%Dv¢kë…ž :é†Ù0.á/R'.;æûýŠžçŸ>!„½k=<•&w­ˆ&ú™,GUatÀaD¿Î’ jD‘œ&¤Í×pÉŠ•ÌsUXªé½wðÉóqÓÿð£âŒ,œ¨O{œ@ï}žù•¾*0R#tAr~+%’çMŒ8 û½! ¤aÅ+jaÝÖ’R9iûQ+¥WR{Š/~4CìßÒF߹赒Ì1‘PØOsi1ÂŽQé'4:¶l‰)ˆEjÓW%3Z¶,¹dÁF¶ÎV’¥Ø 3a„Kg¤mh„M¡ù‘ Á`–=¾ºìÙ)±ô4ûoJ«ƒ€–6~+ÊÖJš¾±xÇ”Š%KVlÄ]6arÑ>Ò•&”vÙk·G³Ôd_@÷I#GÔ t~›¢~Jp¥aË™ÖêX‹˜x"e*{µ°_<!”õìJΙïøz'‚Ó}‚âk¾ÕÜgæ7=S…к[EÙÉt®?­œ#ˆU_¾W(©*YŽW VÚ½D»,ö°³æ°^nôG3„“Ø ©ù‹ûš-ÿî“c©ùZÙºª„Aç$zk*¶(QƒK$Z:â  ËFV¿ÂÊIè…v†«¶uÀÃ4=O»ÒD'¯ª¨ŸŠkßÍöxΘ‚{j™mÍ¥û3â[~JEõ‰ ž‚§C6iDð¦4Ý€ÙObyDa&â½ÈuX&Á€N`t¯v%{&„³^ÜuX¶½Â‰Ø;Αòp .øgþ Å»üœã¼FÈäz³ô±!Ø-’@ÉŠíí ¸6³r¹.]Øåêh¦ ©½Þ;B'ˆHÉÆ¨á“þ™å.?ï(>¨þpÉù’3þÌ%¿àå]R¶”2‚ Xli_§Ê' ô܈€OÕa„y]Ë¢€¾þpbØáâÄC,G%še‰º¸|ó泌CGÅ¥{È9_òW¾æœ˜Ÿó¿ñ& - Yæ ƒ~„ «²uÈ4zŠz"™BDÄVŠê*Èÿõˆ´§yXé|1pÁÃ…szït š§ŠŠRè¦ú€ÀòÊ'BcÙ~°þÃßð¸¤â’K~ÂÿÉ¿%f2—£e4ié2è}ºÀ‘1RvʼniÂZ<Wñš¨*L«Áâkµ:wÿ¤Òôkö¶R?‹)þ†¨Y¸oø 8㜠5OØð&ÿ;?“ˈ̊÷ÖñÁŒ÷ÜÙî)jùhGA*“ú4ýë€^ìÈ$ö)²Úî< w‘—r6[<¤p7ßOîŃÇúÊÕc÷ ÿÌESsÁ—Œø?ø¿H¸<°’/1Ò‰:üV6`;I +Ò7©™0fÌ9‰,Ñ¢8Õ„°i¯ÙØÖ·÷OÄVFçÖÜãø_M˜ªh¯z Cø6ks×~üÿðGþ,ÔàFÚïoó¯p¬ƒ°§ïSDhj±án?g;˜Á脉¹; #f³äˆ[³däÅÕÞNzµ§M D!d_F2¦¦`NÆ‚ÿÊ7¬ù7ü»¡zåU-*¹*ÐÒw[g¯É#*VÎkÝ?fAI$˜s*ê>&ˆ£ ÙÂ~W Iˆm  WÒú),4ðüÀZ΂•ˆg”ÁYÚð=vmÂaf©B®Y 몥á‚ÇüßœcyßÍ©Ýð3Ò^ìˆ@º¾ö?áÞ&²IEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/elasticnodes.py0000755000076500000240000003476513245231431023061 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import math from PyQt5.QtCore import (qAbs, QLineF, QPointF, qrand, QRectF, QSizeF, qsrand, Qt, QTime) from PyQt5.QtGui import (QBrush, QColor, QLinearGradient, QPainter, QPainterPath, QPen, QPolygonF, QRadialGradient) from PyQt5.QtWidgets import (QApplication, QGraphicsItem, QGraphicsScene, QGraphicsView, QStyle) class Edge(QGraphicsItem): Pi = math.pi TwoPi = 2.0 * Pi Type = QGraphicsItem.UserType + 2 def __init__(self, sourceNode, destNode): super(Edge, self).__init__() self.arrowSize = 10.0 self.sourcePoint = QPointF() self.destPoint = QPointF() self.setAcceptedMouseButtons(Qt.NoButton) self.source = sourceNode self.dest = destNode self.source.addEdge(self) self.dest.addEdge(self) self.adjust() def type(self): return Edge.Type def sourceNode(self): return self.source def setSourceNode(self, node): self.source = node self.adjust() def destNode(self): return self.dest def setDestNode(self, node): self.dest = node self.adjust() def adjust(self): if not self.source or not self.dest: return line = QLineF(self.mapFromItem(self.source, 0, 0), self.mapFromItem(self.dest, 0, 0)) length = line.length() self.prepareGeometryChange() if length > 20.0: edgeOffset = QPointF((line.dx() * 10) / length, (line.dy() * 10) / length) self.sourcePoint = line.p1() + edgeOffset self.destPoint = line.p2() - edgeOffset else: self.sourcePoint = line.p1() self.destPoint = line.p1() def boundingRect(self): if not self.source or not self.dest: return QRectF() penWidth = 1.0 extra = (penWidth + self.arrowSize) / 2.0 return QRectF(self.sourcePoint, QSizeF(self.destPoint.x() - self.sourcePoint.x(), self.destPoint.y() - self.sourcePoint.y())).normalized().adjusted(-extra, -extra, extra, extra) def paint(self, painter, option, widget): if not self.source or not self.dest: return # Draw the line itself. line = QLineF(self.sourcePoint, self.destPoint) if line.length() == 0.0: return painter.setPen(QPen(Qt.black, 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin)) painter.drawLine(line) # Draw the arrows if there's enough room. angle = math.acos(line.dx() / line.length()) if line.dy() >= 0: angle = Edge.TwoPi - angle sourceArrowP1 = self.sourcePoint + QPointF(math.sin(angle + Edge.Pi / 3) * self.arrowSize, math.cos(angle + Edge.Pi / 3) * self.arrowSize) sourceArrowP2 = self.sourcePoint + QPointF(math.sin(angle + Edge.Pi - Edge.Pi / 3) * self.arrowSize, math.cos(angle + Edge.Pi - Edge.Pi / 3) * self.arrowSize); destArrowP1 = self.destPoint + QPointF(math.sin(angle - Edge.Pi / 3) * self.arrowSize, math.cos(angle - Edge.Pi / 3) * self.arrowSize) destArrowP2 = self.destPoint + QPointF(math.sin(angle - Edge.Pi + Edge.Pi / 3) * self.arrowSize, math.cos(angle - Edge.Pi + Edge.Pi / 3) * self.arrowSize) painter.setBrush(Qt.black) painter.drawPolygon(QPolygonF([line.p1(), sourceArrowP1, sourceArrowP2])) painter.drawPolygon(QPolygonF([line.p2(), destArrowP1, destArrowP2])) class Node(QGraphicsItem): Type = QGraphicsItem.UserType + 1 def __init__(self, graphWidget): super(Node, self).__init__() self.graph = graphWidget self.edgeList = [] self.newPos = QPointF() self.setFlag(QGraphicsItem.ItemIsMovable) self.setFlag(QGraphicsItem.ItemSendsGeometryChanges) self.setCacheMode(QGraphicsItem.DeviceCoordinateCache) self.setZValue(1) def type(self): return Node.Type def addEdge(self, edge): self.edgeList.append(edge) edge.adjust() def edges(self): return self.edgeList def calculateForces(self): if not self.scene() or self.scene().mouseGrabberItem() is self: self.newPos = self.pos() return # Sum up all forces pushing this item away. xvel = 0.0 yvel = 0.0 for item in self.scene().items(): if not isinstance(item, Node): continue line = QLineF(self.mapFromItem(item, 0, 0), QPointF(0, 0)) dx = line.dx() dy = line.dy() l = 2.0 * (dx * dx + dy * dy) if l > 0: xvel += (dx * 150.0) / l yvel += (dy * 150.0) / l # Now subtract all forces pulling items together. weight = (len(self.edgeList) + 1) * 10.0 for edge in self.edgeList: if edge.sourceNode() is self: pos = self.mapFromItem(edge.destNode(), 0, 0) else: pos = self.mapFromItem(edge.sourceNode(), 0, 0) xvel += pos.x() / weight yvel += pos.y() / weight if qAbs(xvel) < 0.1 and qAbs(yvel) < 0.1: xvel = yvel = 0.0 sceneRect = self.scene().sceneRect() self.newPos = self.pos() + QPointF(xvel, yvel) self.newPos.setX(min(max(self.newPos.x(), sceneRect.left() + 10), sceneRect.right() - 10)) self.newPos.setY(min(max(self.newPos.y(), sceneRect.top() + 10), sceneRect.bottom() - 10)) def advance(self): if self.newPos == self.pos(): return False self.setPos(self.newPos) return True def boundingRect(self): adjust = 2.0 return QRectF(-10 - adjust, -10 - adjust, 23 + adjust, 23 + adjust) def shape(self): path = QPainterPath() path.addEllipse(-10, -10, 20, 20) return path def paint(self, painter, option, widget): painter.setPen(Qt.NoPen) painter.setBrush(Qt.darkGray) painter.drawEllipse(-7, -7, 20, 20) gradient = QRadialGradient(-3, -3, 10) if option.state & QStyle.State_Sunken: gradient.setCenter(3, 3) gradient.setFocalPoint(3, 3) gradient.setColorAt(1, QColor(Qt.yellow).lighter(120)) gradient.setColorAt(0, QColor(Qt.darkYellow).lighter(120)) else: gradient.setColorAt(0, Qt.yellow) gradient.setColorAt(1, Qt.darkYellow) painter.setBrush(QBrush(gradient)) painter.setPen(QPen(Qt.black, 0)) painter.drawEllipse(-10, -10, 20, 20) def itemChange(self, change, value): if change == QGraphicsItem.ItemPositionHasChanged: for edge in self.edgeList: edge.adjust() self.graph.itemMoved() return super(Node, self).itemChange(change, value) def mousePressEvent(self, event): self.update() super(Node, self).mousePressEvent(event) def mouseReleaseEvent(self, event): self.update() super(Node, self).mouseReleaseEvent(event) class GraphWidget(QGraphicsView): def __init__(self): super(GraphWidget, self).__init__() self.timerId = 0 scene = QGraphicsScene(self) scene.setItemIndexMethod(QGraphicsScene.NoIndex) scene.setSceneRect(-200, -200, 400, 400) self.setScene(scene) self.setCacheMode(QGraphicsView.CacheBackground) self.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate) self.setRenderHint(QPainter.Antialiasing) self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse) self.setResizeAnchor(QGraphicsView.AnchorViewCenter) node1 = Node(self) node2 = Node(self) node3 = Node(self) node4 = Node(self) self.centerNode = Node(self) node6 = Node(self) node7 = Node(self) node8 = Node(self) node9 = Node(self) scene.addItem(node1) scene.addItem(node2) scene.addItem(node3) scene.addItem(node4) scene.addItem(self.centerNode) scene.addItem(node6) scene.addItem(node7) scene.addItem(node8) scene.addItem(node9) scene.addItem(Edge(node1, node2)) scene.addItem(Edge(node2, node3)) scene.addItem(Edge(node2, self.centerNode)) scene.addItem(Edge(node3, node6)) scene.addItem(Edge(node4, node1)) scene.addItem(Edge(node4, self.centerNode)) scene.addItem(Edge(self.centerNode, node6)) scene.addItem(Edge(self.centerNode, node8)) scene.addItem(Edge(node6, node9)) scene.addItem(Edge(node7, node4)) scene.addItem(Edge(node8, node7)) scene.addItem(Edge(node9, node8)) node1.setPos(-50, -50) node2.setPos(0, -50) node3.setPos(50, -50) node4.setPos(-50, 0) self.centerNode.setPos(0, 0) node6.setPos(50, 0) node7.setPos(-50, 50) node8.setPos(0, 50) node9.setPos(50, 50) self.scale(0.8, 0.8) self.setMinimumSize(400, 400) self.setWindowTitle("Elastic Nodes") def itemMoved(self): if not self.timerId: self.timerId = self.startTimer(1000 / 25) def keyPressEvent(self, event): key = event.key() if key == Qt.Key_Up: self.centerNode.moveBy(0, -20) elif key == Qt.Key_Down: self.centerNode.moveBy(0, 20) elif key == Qt.Key_Left: self.centerNode.moveBy(-20, 0) elif key == Qt.Key_Right: self.centerNode.moveBy(20, 0) elif key == Qt.Key_Plus: self.scaleView(1.2) elif key == Qt.Key_Minus: self.scaleView(1 / 1.2) elif key == Qt.Key_Space or key == Qt.Key_Enter: for item in self.scene().items(): if isinstance(item, Node): item.setPos(-150 + qrand() % 300, -150 + qrand() % 300) else: super(GraphWidget, self).keyPressEvent(event) def timerEvent(self, event): nodes = [item for item in self.scene().items() if isinstance(item, Node)] for node in nodes: node.calculateForces() itemsMoved = False for node in nodes: if node.advance(): itemsMoved = True if not itemsMoved: self.killTimer(self.timerId) self.timerId = 0 def wheelEvent(self, event): self.scaleView(math.pow(2.0, -event.angleDelta().y() / 240.0)) def drawBackground(self, painter, rect): # Shadow. sceneRect = self.sceneRect() rightShadow = QRectF(sceneRect.right(), sceneRect.top() + 5, 5, sceneRect.height()) bottomShadow = QRectF(sceneRect.left() + 5, sceneRect.bottom(), sceneRect.width(), 5) if rightShadow.intersects(rect) or rightShadow.contains(rect): painter.fillRect(rightShadow, Qt.darkGray) if bottomShadow.intersects(rect) or bottomShadow.contains(rect): painter.fillRect(bottomShadow, Qt.darkGray) # Fill. gradient = QLinearGradient(sceneRect.topLeft(), sceneRect.bottomRight()) gradient.setColorAt(0, Qt.white) gradient.setColorAt(1, Qt.lightGray) painter.fillRect(rect.intersected(sceneRect), QBrush(gradient)) painter.setBrush(Qt.NoBrush) painter.drawRect(sceneRect) # Text. textRect = QRectF(sceneRect.left() + 4, sceneRect.top() + 4, sceneRect.width() - 4, sceneRect.height() - 4) message = "Click and drag the nodes around, and zoom with the " \ "mouse wheel or the '+' and '-' keys" font = painter.font() font.setBold(True) font.setPointSize(14) painter.setFont(font) painter.setPen(Qt.lightGray) painter.drawText(textRect.translated(2, 2), message) painter.setPen(Qt.black) painter.drawText(textRect, message) def scaleView(self, scaleFactor): factor = self.transform().scale(scaleFactor, scaleFactor).mapRect(QRectF(0, 0, 1, 1)).width() if factor < 0.07 or factor > 100: return self.scale(scaleFactor, scaleFactor) if __name__ == '__main__': import sys app = QApplication(sys.argv) qsrand(QTime(0,0,0).secsTo(QTime.currentTime())) widget = GraphWidget() widget.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/graphicsview/embeddeddialogs/0000755000076500000240000000000013245231431023104 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/graphicsview/embeddeddialogs/embeddeddialog.py0000644000076500000240000000622613245231431026375 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'embeddeddialog.ui' # # Created: Wed May 15 16:13:29 2013 # by: PyQt5 UI code generator 5.0-snapshot-8d430da208a7 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_embeddedDialog(object): def setupUi(self, embeddedDialog): embeddedDialog.setObjectName("embeddedDialog") embeddedDialog.resize(407, 134) self.formLayout = QtWidgets.QFormLayout(embeddedDialog) self.formLayout.setObjectName("formLayout") self.label = QtWidgets.QLabel(embeddedDialog) self.label.setObjectName("label") self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label) self.layoutDirection = QtWidgets.QComboBox(embeddedDialog) self.layoutDirection.setObjectName("layoutDirection") self.layoutDirection.addItem("") self.layoutDirection.addItem("") self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.layoutDirection) self.label_2 = QtWidgets.QLabel(embeddedDialog) self.label_2.setObjectName("label_2") self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_2) self.fontComboBox = QtWidgets.QFontComboBox(embeddedDialog) self.fontComboBox.setObjectName("fontComboBox") self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.fontComboBox) self.label_3 = QtWidgets.QLabel(embeddedDialog) self.label_3.setObjectName("label_3") self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_3) self.style = QtWidgets.QComboBox(embeddedDialog) self.style.setObjectName("style") self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.style) self.label_4 = QtWidgets.QLabel(embeddedDialog) self.label_4.setObjectName("label_4") self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.label_4) self.spacing = QtWidgets.QSlider(embeddedDialog) self.spacing.setOrientation(QtCore.Qt.Horizontal) self.spacing.setObjectName("spacing") self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.spacing) self.label.setBuddy(self.layoutDirection) self.label_2.setBuddy(self.fontComboBox) self.label_3.setBuddy(self.style) self.label_4.setBuddy(self.spacing) self.retranslateUi(embeddedDialog) QtCore.QMetaObject.connectSlotsByName(embeddedDialog) def retranslateUi(self, embeddedDialog): _translate = QtCore.QCoreApplication.translate embeddedDialog.setWindowTitle(_translate("embeddedDialog", "Embedded Dialog")) self.label.setText(_translate("embeddedDialog", "Layout Direction:")) self.layoutDirection.setItemText(0, _translate("embeddedDialog", "Left to Right")) self.layoutDirection.setItemText(1, _translate("embeddedDialog", "Right to Left")) self.label_2.setText(_translate("embeddedDialog", "Select Font:")) self.label_3.setText(_translate("embeddedDialog", "Style:")) self.label_4.setText(_translate("embeddedDialog", "Layout spacing:")) PyQt5_gpl-5.10.1/examples/graphicsview/embeddeddialogs/embeddeddialog.ui0000644000076500000240000000421613245231431026357 0ustar philstaff00000000000000 embeddedDialog 0 0 407 134 Embedded Dialog Layout Direction: layoutDirection Left to Right Right to Left Select Font: fontComboBox Style: style Layout spacing: spacing Qt::Horizontal PyQt5_gpl-5.10.1/examples/graphicsview/embeddeddialogs/embeddeddialogs.py0000644000076500000240000002176613245231431026566 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QEvent, QRectF, Qt, QTimeLine from PyQt5.QtGui import (QBrush, QColor, QPainter, QPainterPath, QPixmap, QTransform) from PyQt5.QtWidgets import (QApplication, QDialog, QGraphicsItem, QGraphicsProxyWidget, QGraphicsScene, QGraphicsView, QStyleFactory, QWidget) import embeddeddialogs_rc from embeddeddialog import Ui_embeddedDialog class CustomProxy(QGraphicsProxyWidget): def __init__(self, parent=None, wFlags=0): super(CustomProxy, self).__init__(parent, wFlags) self.popupShown = False self.currentPopup = None self.timeLine = QTimeLine(250, self) self.timeLine.valueChanged.connect(self.updateStep) self.timeLine.stateChanged.connect(self.stateChanged) def boundingRect(self): return QGraphicsProxyWidget.boundingRect(self).adjusted(0, 0, 10, 10) def paintWindowFrame(self, painter, option, widget): color = QColor(0, 0, 0, 64) r = self.windowFrameRect() right = QRectF(r.right(), r.top()+10, 10, r.height()-10) bottom = QRectF(r.left()+10, r.bottom(), r.width(), 10) intersectsRight = right.intersects(option.exposedRect) intersectsBottom = bottom.intersects(option.exposedRect) if intersectsRight and intersectsBottom: path = QPainterPath() path.addRect(right) path.addRect(bottom) painter.setPen(Qt.NoPen) painter.setBrush(color) painter.drawPath(path) elif intersectsBottom: painter.fillRect(bottom, color) elif intersectsRight: painter.fillRect(right, color) super(CustomProxy, self).paintWindowFrame(painter, option, widget) def hoverEnterEvent(self, event): super(CustomProxy, self).hoverEnterEvent(event) self.scene().setActiveWindow(self) if self.timeLine.currentValue != 1: self.zoomIn() def hoverLeaveEvent(self, event): super(CustomProxy, self).hoverLeaveEvent(event) if not self.popupShown and (self.timeLine.direction() != QTimeLine.Backward or self.timeLine.currentValue() != 0): self.zoomOut() def sceneEventFilter(self, watched, event): if watched.isWindow() and (event.type() == QEvent.UngrabMouse or event.type() == QEvent.GrabMouse): self.popupShown = watched.isVisible() if not self.popupShown and not self.isUnderMouse(): self.zoomOut() return super(CustomProxy, self).sceneEventFilter(watched, event) def itemChange(self, change, value): if change == self.ItemChildAddedChange or change == self.ItemChildRemovedChange : if change == self.ItemChildAddedChange: self.currentPopup = value self.currentPopup.setCacheMode(self.ItemCoordinateCache) if self.scene() is not None: self.currentPopup.installSceneEventFilter(self) elif self.scene() is not None: self.currentPopup.removeSceneEventFilter(self) self.currentPopup = None elif self.currentPopup is not None and change == self.ItemSceneHasChanged: self.currentPopup.installSceneEventFilter(self) return super(CustomProxy, self).itemChange(change, value) def updateStep(self, step): r = self.boundingRect() self.setTransform(QTransform() \ .translate(r.width() / 2, r.height() / 2)\ .rotate(step * 30, Qt.XAxis)\ .rotate(step * 10, Qt.YAxis)\ .rotate(step * 5, Qt.ZAxis)\ .scale(1 + 1.5 * step, 1 + 1.5 * step)\ .translate(-r.width() / 2, -r.height() / 2)) def stateChanged(self, state): if state == QTimeLine.Running: if self.timeLine.direction() == QTimeLine.Forward: self.setCacheMode(self.NoCache) elif state == QTimeLine.NotRunning: if self.timeLine.direction() == QTimeLine.Backward: self.setCacheMode(self.DeviceCoordinateCache) def zoomIn(self): if self.timeLine.direction() != QTimeLine.Forward: self.timeLine.setDirection(QTimeLine.Forward) if self.timeLine.state() == QTimeLine.NotRunning: self.timeLine.start() def zoomOut(self): if self.timeLine.direction() != QTimeLine.Backward: self.timeLine.setDirection(QTimeLine.Backward) if self.timeLine.state() == QTimeLine.NotRunning: self.timeLine.start() class EmbeddedDialog(QDialog): def __init__(self, parent=None): super(EmbeddedDialog, self).__init__(parent) self.ui = Ui_embeddedDialog() self.ui.setupUi(self) self.ui.layoutDirection.setCurrentIndex(self.layoutDirection() != Qt.LeftToRight) for styleName in QStyleFactory.keys(): self.ui.style.addItem(styleName) if self.style().objectName().lower() == styleName.lower(): self.ui.style.setCurrentIndex(self.ui.style.count() -1) self.ui.layoutDirection.activated.connect(self.layoutDirectionChanged) self.ui.spacing.valueChanged.connect(self.spacingChanged) self.ui.fontComboBox.currentFontChanged.connect(self.fontChanged) self.ui.style.activated[str].connect(self.styleChanged) def layoutDirectionChanged(self, index): if index == 0: self.setLayoutDirection(Qt.LeftToRight) else: self.setLayoutDirection(Qt.RightToLeft) def spacingChanged(self, spacing): self.layout().setSpacing(spacing) self.adjustSize() def fontChanged(self, font): self.setFont(font) def setStyleHelper(self, widget, style): widget.setStyle(style) widget.setPalette(style.standardPalette()) for child in widget.children(): if isinstance(child, QWidget): self.setStyleHelper(child, style) def styleChanged(self, styleName): style = QStyleFactory.create(styleName) if style: self.setStyleHelper(self, style) # Keep a reference to the style. self._style = style if __name__ == '__main__': import sys app = QApplication(sys.argv) scene = QGraphicsScene() scene.setStickyFocus(True) for y in range(10): for x in range(10): proxy = CustomProxy(None, Qt.Window) proxy.setWidget(EmbeddedDialog()) rect = proxy.boundingRect() proxy.setPos( x * rect.width()*1.05, y*rect.height()*1.05 ) proxy.setCacheMode(QGraphicsItem.DeviceCoordinateCache) scene.addItem(proxy) scene.setSceneRect(scene.itemsBoundingRect()) view = QGraphicsView(scene) view.scale(0.5, 0.5) view.setRenderHints(view.renderHints() | QPainter.Antialiasing | QPainter.SmoothPixmapTransform) view.setBackgroundBrush(QBrush(QPixmap(':/No-Ones-Laughing-3.jpg'))) view.setViewportUpdateMode(QGraphicsView.BoundingRectViewportUpdate) view.show() view.setWindowTitle("Embedded Dialogs Demo") sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/graphicsview/embeddeddialogs/embeddeddialogs.qrc0000644000076500000240000000013213245231431026703 0ustar philstaff00000000000000 No-Ones-Laughing-3.jpg PyQt5_gpl-5.10.1/examples/graphicsview/embeddeddialogs/embeddeddialogs_rc.py0000644000076500000240000037126613245231431027255 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Wed May 15 16:12:39 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x78\x0a\ \xff\ \xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x00\x00\x01\x00\ \x01\x00\x00\xff\xdb\x00\x43\x00\x05\x03\x04\x04\x04\x03\x05\x04\ \x04\x04\x05\x05\x05\x06\x07\x0c\x08\x07\x07\x07\x07\x0f\x0b\x0b\ \x09\x0c\x11\x0f\x12\x12\x11\x0f\x11\x11\x13\x16\x1c\x17\x13\x14\ \x1a\x15\x11\x11\x18\x21\x18\x1a\x1d\x1d\x1f\x1f\x1f\x13\x17\x22\ \x24\x22\x1e\x24\x1c\x1e\x1f\x1e\xff\xdb\x00\x43\x01\x05\x05\x05\ \x07\x06\x07\x0e\x08\x08\x0e\x1e\x14\x11\x14\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\xff\xfe\x00\ \x13\x4e\x6f\x20\x4f\x6e\x65\x27\x73\x20\x4c\x61\x75\x67\x68\x69\ \x6e\x67\xff\xc0\x00\x11\x08\x02\x00\x02\x00\x03\x01\x22\x00\x02\ \x11\x01\x03\x11\x01\xff\xc4\x00\x1a\x00\x00\x03\x01\x01\x01\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x03\x04\x01\x05\x00\ \x06\xff\xc4\x00\x3e\x10\x00\x02\x01\x03\x03\x02\x04\x03\x07\x02\ \x05\x04\x03\x00\x03\x01\x01\x02\x00\x03\x11\x21\x04\x12\x31\x41\ \x51\x13\x22\x61\x71\x05\x32\x81\x14\x23\x42\x52\x91\xa1\xb1\xc1\ \xd1\x06\x24\x33\x62\xf0\x15\x43\x72\xe1\x25\x82\xf1\x34\x53\x63\ \x92\xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x01\x00\x02\x03\x05\x06\xff\xc4\x00\x20\ \x11\x01\x01\x01\x00\x03\x01\x01\x01\x01\x00\x03\x00\x00\x00\x00\ \x00\x00\x01\x11\x02\x21\x31\x41\x12\x51\x61\x13\x32\x42\xff\xda\ \x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xb0\x55\x5d\xa2\ \xbd\x7a\x8c\xf7\xf9\x43\x1c\xb7\xfe\xa0\x3e\xb3\x51\xb8\x9a\x75\ \xdd\x7d\x15\xac\x27\x3b\x53\x55\xab\x55\x2d\xc0\x18\x50\x0e\x00\ \x80\x2a\xe6\xdc\xcf\xa4\xfc\xbc\x7d\x75\x06\xbb\x52\x00\x1f\x68\ \xab\x8e\x2e\xc6\x2c\xeb\xb5\x04\xff\x00\xfc\x87\xbf\x5b\x99\x1a\ \xd4\xb8\xc1\xb5\xbb\xcc\x35\x0f\x18\x96\x45\xae\x82\x6b\x75\x24\ \xe5\xc3\x5b\xba\x83\x3d\x57\x58\xc0\x10\x52\x91\xf7\x41\x20\xb9\ \xd9\x8f\xd0\x4c\x2d\x71\xce\x65\x91\x6a\xaf\xb4\xa1\x37\x6d\x35\ \x3b\xf5\xb1\x22\xf3\xa1\xf0\x7d\x55\x0a\x75\xc0\x08\xe9\x7f\xf7\ \x5c\x4e\x0d\xcd\xfb\xc6\xd2\xaa\x55\x83\x29\x00\xca\xf1\xd8\xa5\ \x75\x7e\x23\x41\x69\xea\x59\x4b\x85\x24\xdf\x22\xd2\x66\xa3\x51\ \x46\xe2\x2e\x3b\xae\x65\x9a\xa6\x1a\xdf\x87\x25\x71\xfe\xad\x2c\ \x3f\xb4\xe7\x0a\xcc\xb6\x28\xc4\x11\xce\x61\xc7\x70\xd7\xa2\xd9\ \xf6\x37\x38\x38\x30\xcd\x64\x6f\x9b\xca\x4f\x51\x27\xae\x08\xc9\ \xc8\x3d\x44\xd3\x2c\x5a\x86\x9d\x43\x6c\x83\xfb\x88\x65\x55\xbe\ \xf2\x9f\x1d\x47\x69\x38\x3b\x96\xdd\x47\x10\xe8\x54\x2a\x6e\x0f\ \x31\x4a\x2b\xe4\xa8\xfc\xaa\x3a\xc2\x57\xc8\xb0\xb1\xe6\xd3\x35\ \x2b\x77\x0e\x9d\x40\xb8\xed\x06\x91\xcd\xb8\x82\x5f\xa9\x01\xe8\ \x6e\x27\x80\x64\x74\xcb\x5b\x9b\x5e\x55\x4f\x3a\x6a\x88\x79\x59\ \x2a\x60\xc2\x15\x14\x89\x22\xe7\x31\xc9\x6b\x5c\x88\x14\x96\xcb\ \x68\xdb\x7e\x93\x34\xc6\xd9\x67\x98\x29\x1c\x40\xbd\x8c\xdd\xc2\ \xd7\x81\x22\xa1\x0a\xc0\x82\x62\x2a\x6d\x2c\x19\x70\x7a\x88\x75\ \x9b\x24\xde\xf2\x75\x27\x75\xf8\x1d\x66\xe3\x2e\xca\xb0\x1f\xe1\ \x6a\xb7\x3c\xd4\x13\x82\x48\xb9\xf5\x9d\x6d\x43\xff\x00\xf0\x01\ \x6d\x60\xd5\x70\x3d\x27\x11\xb9\xdc\x3b\xcb\x8c\xf5\x72\x1f\x0a\ \x2d\xde\x30\x5c\xd2\x6b\xf7\x8a\xcc\x65\xfe\xec\xdb\xbc\xd3\x21\ \xb6\x26\x15\x33\xd0\x94\xf4\x92\x60\xbc\x60\x24\x75\x9e\x84\x82\ \x09\xa1\xd8\x0b\x03\x09\x4a\xb1\xb3\x2e\x7b\x83\x30\x00\x27\xb6\ \x5c\xc8\x9b\x4d\x14\xe3\x71\x1e\xe2\x3d\x29\x2d\xef\xe2\x0b\x4c\ \xd3\xd0\x7d\xa7\x95\xbf\x53\x88\xf5\x45\x16\xdc\xfb\xbd\x04\xcd\ \xad\x48\xf5\x35\xa7\xbb\x24\x9f\xda\x74\x6b\xdc\xba\xd8\x58\x05\ \x03\x8f\x49\x25\x30\xb7\xc0\xfd\x65\xe0\x78\xb4\xd4\xf2\xc0\x5a\ \xd3\x9d\x6a\x14\x94\xcb\x35\xee\x4f\x6b\xce\xa6\x9a\x92\xe9\xa9\ \x0a\xd5\x16\xee\x7e\x45\xfe\xa6\x2b\x49\x48\x51\x5f\x1e\xaf\x17\ \xf2\xaf\x78\x75\x6a\x35\x66\x2c\x79\xeb\x31\x6e\xb5\x3a\x26\xb6\ \xfa\x8e\x5d\xdb\x26\x79\x54\xe2\xec\x2d\x35\xb2\x05\xe1\x26\x40\ \x02\x48\x0c\xb7\x3c\x88\x02\x8d\x42\x40\x51\x72\x78\xb4\xa8\x53\ \xbb\x5c\xe7\xd2\x31\x17\x6b\x82\x71\x6c\xd8\x4b\x56\x25\x34\x08\ \x5b\x31\x04\xfa\x18\xdd\x3e\xa0\xa9\x14\x8d\x22\x47\x17\xea\x22\ \x4a\x8f\x99\x14\x93\x7e\x4c\x65\x7a\xc3\x4f\x48\xd4\xa8\x6e\xe3\ \x85\x92\x67\xc5\xd6\xa3\x52\xf0\x29\x10\x0d\xfc\xcd\x7b\x5c\x4e\ \x30\xd1\xb2\xdc\x3d\x4a\x40\x11\xf9\xa6\xd7\xaa\xf5\x77\xb3\x31\ \xbb\x5f\xaf\x79\x25\x67\x0a\xa8\x73\x7b\x4e\x9c\x65\xf1\x9b\x75\ \x76\x87\x4b\x4e\x85\x52\xff\x00\x6c\x40\xa4\x00\x76\xe7\xae\x27\ \x67\x4a\x74\xa0\x55\xaf\xa7\x0a\xd5\x4e\x49\x61\x80\xd6\xe7\xf5\ \x9f\x28\xb5\x0d\x36\x65\xb6\x09\xc4\xae\xbd\x71\x42\x92\x57\xbd\ \xae\x6e\x00\x3d\x47\x3f\x49\x72\xe3\x6a\x97\x09\xd7\x5e\xaa\x3b\ \xb1\xbb\x30\x0f\xf5\xeb\x12\x08\x2b\x44\x8f\xc4\x85\x7d\xc8\x38\ \xfe\x6d\x1f\x57\x69\xfb\xc5\xf9\x41\xb7\xba\xb7\x07\xfe\x77\x91\ \x3d\xc5\x0a\x89\xc3\x52\x7d\xe3\xdb\x83\xfd\x26\xe3\x35\x8c\xde\ \x0d\x71\xb3\x28\x7c\xc0\x5f\x99\x7f\xc6\x9c\xfd\xb8\xb8\xe1\xe9\ \xa9\xb7\xd3\xb4\xe6\xd7\x7f\x2f\x88\x54\x1a\x6c\x72\x2f\xf2\xb7\ \x5b\x7b\xcb\x3e\x25\x53\xc6\xf8\x7e\x8f\x58\xab\x85\x5f\x09\xbd\ \x08\xe2\x5f\x60\x9e\x25\x14\x52\xa9\x3e\x1b\x6d\x6e\xc6\x26\xa6\ \x89\xd5\x88\x74\x36\xee\x05\xe5\x6c\x12\xaa\xd3\xaa\xa3\xcc\x70\ \x56\xf6\xfd\x26\x2d\x57\x56\x22\x9d\x52\x2d\xc8\x6e\x91\xda\x92\ \xe9\x74\xcd\x53\x55\x49\x14\xdf\x73\x01\xce\x67\x53\xfc\x4c\xf5\ \x3f\xea\x95\x9d\x37\x2e\xc7\x0a\x2d\xe8\x00\x89\xd3\xea\xda\x86\ \xa6\x9d\x4a\xa9\x4d\xac\xc0\xdc\xa8\x3c\x1e\xf3\xb5\xf1\x47\xa6\ \x3e\x21\x51\x2c\x08\xa8\x9e\x20\x3c\x83\x33\x6d\xd3\x27\x4f\x98\ \xaf\x59\x6b\x5b\xed\x1a\x60\xd8\xbe\xe4\xc1\x8a\xa5\x4a\x82\xd4\ \x0f\x47\x50\x52\xc7\x8a\x8a\x47\xf1\x3b\xaa\xda\x7a\x94\x95\xdb\ \x45\x48\x82\x6d\x63\x71\x7f\xd0\xc9\x3f\xc4\x54\x74\x54\x3c\x25\ \xd3\xa7\x87\x58\x8b\xd4\x40\xc4\x85\xed\xf5\x8c\xbd\xe0\xb3\xe9\ \x02\x8e\xb8\x1d\xb4\x6b\x25\x45\x3f\x2d\xaa\x8c\xfe\xa6\x0a\x8d\ \x42\x56\xa9\xa6\xd4\xab\x23\x6d\xbe\xd3\x16\x8d\xe1\x20\x0f\x66\ \xab\x6b\xa0\x39\x0b\x27\x4a\xae\xda\x9f\x12\xa3\x12\xdd\x49\x9a\ \xc0\xac\x1a\x29\x54\x35\x70\xc6\xca\x2d\x6e\xb2\xca\x5a\xe4\x5a\ \x61\x69\x22\xd3\x37\xbe\xe0\x2e\xdf\xa9\x91\x6a\xd1\x7c\x95\x71\ \x91\x6f\xd2\x6e\x8e\x9a\xbd\x4f\x31\x01\x00\xdc\xc7\xd2\x16\x1d\ \x46\x49\x51\x83\x06\xf7\xf3\x1c\x43\x24\x00\x73\x33\x01\x07\xaf\ \x33\x4c\xbc\x1a\xdc\xf1\x35\x58\x1e\xb1\x64\x83\x32\xf9\xe2\x49\ \x4a\xb0\xb6\x0c\xf0\x60\x4f\x17\x89\x56\xe9\xfa\x4f\x33\x10\x71\ \x24\x61\x60\x0e\x26\xa3\x67\x20\x44\x96\xbf\x59\xb4\xce\x09\xbf\ \xa0\x92\x75\xfe\x0b\xaa\x4a\x7a\x91\x4a\xa1\xfb\xaa\x9e\x56\xcc\ \x57\xc4\x68\x36\x97\x56\xf4\x4f\x03\x2b\xea\x24\x09\x70\xdd\xbd\ \x67\x66\xa1\x3a\xff\x00\x85\x0a\xbc\xd7\xd3\x61\xbb\x95\x99\xb3\ \x2e\xb5\xec\x72\x5c\xe3\xbc\x15\xa8\x54\x77\x07\xa1\x9a\x6f\x6c\ \xfd\x22\xdb\xe5\xf6\x9a\x64\x45\x41\x37\x4e\x7b\x4c\xfc\x5b\x80\ \xf7\x8b\x18\xcf\x58\xd4\x60\x5a\xcd\x83\x24\xab\x7d\x8a\xbf\x75\ \xcd\xe7\x98\x00\x55\x94\x8d\xa7\xf6\x82\xcb\xfe\x5c\x13\xf8\x5b\ \x3e\xc6\x2e\x91\xf3\x77\x53\xcc\x0a\xed\x3b\x79\x85\xff\x00\x10\ \xb4\x48\xb8\x36\x3d\xe1\xa8\x28\xca\x2e\x2c\x00\x20\xcf\x56\xf2\ \xd6\x71\xeb\x02\xa6\x8b\x8d\xa2\xf1\x9b\x87\x79\x0a\xbe\xde\xb0\ \xd6\xaf\x78\x61\xd5\x24\xde\x2e\xab\x81\x71\xd6\x07\x89\xe9\x14\ \x49\x66\xc7\x26\x52\x0d\x7b\x6e\xf6\xcf\x03\x26\x4f\x59\xae\xd6\ \x5c\x28\xe2\x51\x58\x10\x3c\x31\xf5\x3d\xe4\xae\xa4\x1e\x26\xa0\ \xae\x8e\xac\xff\x00\xf0\xda\x65\x07\xf1\x1f\xe4\xce\x49\xb9\xb8\ \x9d\x3a\xa8\x5f\xe1\x54\x6e\x78\x6f\xef\x21\x2a\x00\x25\x4d\xc4\ \xb8\xaa\x11\x90\x00\x8d\x44\x25\x2d\x15\x4c\x82\xd6\x94\x21\x00\ \x5b\x16\x8d\x40\xf0\x49\x3c\x8f\xd6\x18\xd3\x38\x22\xe4\x47\x0b\ \x0f\x36\xd0\x7d\xf8\x8e\xa5\x52\xa5\x43\xb3\x70\x0b\xd8\x0c\x42\ \xd3\x89\xd7\x4e\xe7\x93\x6f\x78\xfa\x3a\x36\xa8\x76\xab\x0b\xc7\ \x84\xa6\x2f\xb4\x5b\xd4\xc2\x5a\xce\x84\xec\x3b\x07\x70\x26\x34\ \xe1\xc7\xe1\x06\x95\x2f\x12\xab\x80\x3b\x0e\x64\xf6\x54\xc5\x30\ \xaa\x3b\xf2\x65\x14\x9a\xb5\x70\x40\x27\x6f\x73\xc4\x55\x52\xaa\ \xc4\x2d\x98\x8e\xa7\xfb\x43\x6f\xd2\x04\x52\x4d\xd9\xaf\x1a\xb4\ \xcd\xf8\x82\x8e\xc7\xbf\xe9\x1b\x4d\x98\xb5\xb2\x64\x8c\xa7\x4c\ \x92\x2c\x27\x4b\x47\x40\x8f\x3b\x82\x15\x7f\x79\xed\x0e\x99\xaa\ \x58\x8c\x7a\x4b\xaa\x02\xb6\x43\xc0\xe9\x39\xde\x5f\x1b\x91\x33\ \xb7\x8a\x7c\xc2\xc0\x70\x27\x96\x8b\x03\x71\x28\x08\xc7\x37\xb0\ \xef\x0c\x10\xa3\x17\xf7\x99\xd3\x89\x8d\x22\x79\x84\x86\x8a\x1c\ \x00\xc7\xde\x6b\x30\x6f\x29\xe0\xc0\xf0\xc0\x37\x19\x92\x3b\xc4\ \x24\xe1\x40\xf6\x98\xe0\x6d\x26\xf6\xe9\x02\xcd\xde\xd0\x1d\xf6\ \xf3\x99\x22\xcd\x42\xa6\xca\x2c\x7a\x4e\x6e\xb8\x9a\xb5\x0d\xdb\ \x8e\x65\xac\xe4\xab\x37\x6e\x27\x37\x50\xce\x01\x05\x7d\xe6\xf8\ \xb3\x53\xb1\xb5\x85\xfd\x24\xf5\xbc\xd4\xc7\xa1\x36\xfa\xc6\x39\ \x2c\x6c\x17\x37\xc4\x6b\x68\xeb\x14\xc0\x00\x9e\x93\xa4\xe9\x84\ \x56\xfb\xb5\x39\xc7\x58\x55\xaa\x0a\x84\x53\x7c\x28\xe3\x1f\xbc\ \x16\xa6\xd4\xcd\xaa\x2d\xbd\x26\x3b\x52\x57\x20\xdc\xb7\x49\xa0\ \xbb\x47\x4c\xd4\xa0\x29\x8f\x30\x2a\x50\x9f\x4e\x87\xe9\x21\x23\ \xef\x83\x31\xe7\xca\xff\x00\xc1\x8e\xd2\x6a\x9b\x4f\x55\x5a\x9a\ \x80\x3b\x77\x89\xd5\x37\xde\x39\x55\xb0\x63\x71\xe9\x09\x3b\x4c\ \x54\xa3\x49\x5a\x8d\x47\x39\xf2\xb8\xb5\xef\xd8\x89\x57\xc3\xe9\ \xa7\x85\x5b\xe1\xcd\x77\x0e\x37\xd2\x27\x82\x47\x69\x15\x45\x35\ \xa9\x06\x19\x75\xc1\xb7\x5e\xc6\x16\x92\xbf\xd9\xea\x27\x88\x72\ \x8d\x75\xb7\x20\xc6\xc5\x08\x63\x52\xa3\x6d\x38\x0b\x8e\xc1\x61\ \xb0\xb8\xda\x8c\x19\x80\xb5\xfb\xca\xfe\x35\x42\xf5\x16\xbd\x2b\ \x78\x35\xfc\xe2\xdd\xfa\xc8\x86\xda\x62\xc3\x2f\xd2\xd1\x97\x45\ \xe9\xe0\xb6\xa6\x03\x5c\x00\x6f\xee\x67\x5f\xe2\x6f\xbf\x49\xa0\ \xd4\x5e\xf7\x4d\xac\x3d\xa7\x1a\xa3\x6e\x21\x98\xdc\x9c\xda\x75\ \xf4\x8e\x95\x7f\xc3\xb5\x1a\xa0\x2f\xe0\x54\x0e\x2f\xd6\xf8\xb7\ \xb4\xcf\x2f\x94\xc2\x35\x1a\xa3\xa7\x0b\x5c\x0f\xbc\x71\xe4\x1f\ \x97\xd6\x73\xaf\x62\xd5\xea\xf9\xbf\x2d\xfa\x98\xa7\xac\xd5\x9d\ \xbc\x43\x76\x63\x7b\x9e\xf0\xd8\x82\x05\x2e\x0a\x8f\xde\x6a\x4c\ \x1a\x43\x12\xcc\x58\x93\xba\xf7\xbc\x36\x1e\x22\xef\x1f\x30\xf9\ \x84\xc0\x2c\x70\x23\x13\xc8\x77\x08\x85\x79\xad\xa0\x04\x5f\xca\ \x6f\xfc\x40\x27\x66\x88\x81\x86\xa8\x6d\x8e\xc2\x3f\x47\xb0\x6e\ \x51\x73\x4e\xa8\xb0\xb7\xe1\x6e\xc6\x23\x5f\xf7\x6b\x46\x9d\x8d\ \xd5\x2f\xfa\x98\x7f\x8d\x25\xa8\x00\x18\x31\x6f\x84\x07\xd6\x16\ \xa6\xea\x08\xe4\xc4\x8b\x9a\x66\xdd\x3d\x62\xc8\x49\xce\x21\x83\ \x71\x6e\xb1\x4b\xba\xf0\xd4\x8b\x08\x44\x31\xc4\xf5\xee\x3d\x60\ \xf3\x88\x40\x11\xd3\x11\x4d\x50\x4f\x31\xeb\x4d\x40\x17\x88\xf1\ \x2c\x71\x8f\x58\x75\x49\xdc\x2e\x7a\x49\x1e\x19\x2d\x8e\x44\xbb\ \xe1\x5a\xe4\xd3\x6a\x43\x3a\xdd\x0f\x95\xc7\xa1\x9c\x94\x2b\x7c\ \xb1\x87\xb9\x09\xc1\x30\xb3\x4c\xb8\xbf\xe2\x94\xa9\x69\xf5\x6c\ \x8a\x3c\x87\x2a\x47\x50\x64\x8e\x88\x5b\x07\x06\x57\x75\xd5\xfc\ \x33\x39\x7d\x3f\xee\xa6\x44\xa0\x60\x06\x94\x55\x8d\x48\x83\x83\ \x71\xd2\x0e\xc3\xbb\xd2\x69\x7d\xac\x6c\x6f\x09\x6b\x92\xb6\x20\ \x5a\x20\xda\x2e\x18\x35\x12\x70\xf8\x1e\xfd\x20\xad\x36\x0f\x66\ \x04\x01\x30\x14\x60\x6f\x82\x0c\x73\xef\x74\x1f\x78\x59\x60\x46\ \x95\x37\xdd\x4f\xff\x00\x59\xed\x41\xb9\x46\xee\xbf\xfa\x93\xb0\ \x64\x20\x11\x68\xf7\x3b\xe8\x2b\x7e\x56\x20\xc9\x04\x03\x6e\xc2\ \x12\x91\x07\x24\x5a\x78\x5e\xf2\x46\x5f\xac\xca\x75\x00\xa8\x09\ \x03\x99\x80\x6e\x10\x48\xb6\x4f\x32\x26\x6a\xc1\xf1\x48\x8b\x03\ \x78\xb7\x5e\x91\xda\xa0\x59\x52\xaf\x71\x12\xac\x05\xbb\x88\x40\ \xa1\xc9\xff\x00\xa4\x81\xd9\xed\x20\x43\xb5\x89\x3c\x75\x13\xa9\ \x8a\xbf\x0c\xa9\xd0\xab\x5c\xff\x00\x79\xcb\x36\xb9\x8c\x54\x25\ \x7c\x3a\xb7\xb5\xc7\x78\xc4\x62\x48\xe9\x08\x59\xe8\x9b\x8f\x32\ \xf1\x16\x14\xdc\x45\x28\x04\x95\x00\x9f\x49\x7e\x91\x07\x85\xcf\ \x3c\xce\x6d\x2b\xf0\x71\x3a\x3a\x57\x1e\x5e\xd6\xcc\xcf\x23\x07\ \x54\xa9\x63\xd1\x47\x03\xd6\x65\x20\x19\xf6\x1f\x94\x65\xa7\x89\ \xbd\x43\xe9\x98\x0e\xdb\x34\xe2\xe6\xcd\x50\xdc\xfb\x4c\x95\x9a\ \x5a\xa6\xa3\xbf\x86\x46\xd5\x43\xb4\x76\x93\x2e\xe2\x73\xfc\x45\ \x69\x2a\x78\x75\x81\x5b\x8e\xf9\x96\x55\x1e\x27\x00\x21\xf4\xeb\ \x0b\x32\x90\x0b\xf6\x95\x69\xc7\x0c\x4d\xa2\x69\x96\x07\x6b\x08\ \xec\x91\xc8\xb0\xe9\x05\x1d\x2d\x36\xa4\x0c\x2d\xc0\xe2\x5a\xac\ \x0a\xee\x6b\xda\x72\xb4\xe2\xc4\x16\xe4\xf4\x95\x2d\x70\x5a\xd7\ \xf2\xce\x76\x37\x2a\xc2\xe0\xf1\xc7\x68\xb6\x6b\xc4\x35\x4d\xa6\ \xc3\x33\xc1\xcd\xa1\x87\x44\xc0\xdc\x66\x36\xe1\x46\x06\x7b\xc5\ \x03\x9b\xf5\x99\xbb\xc8\x49\x92\x30\xb8\xeb\xcf\x79\x3d\x7b\x35\ \xb3\xe9\x13\x52\xa3\x13\x32\x8b\x10\xe0\x93\x8b\xe6\xf1\xc1\xa0\ \xd5\xd5\xd8\x82\x9d\x3c\x66\xe7\xd6\x73\x35\x0e\x58\xdc\x93\x79\ \x6e\xb1\xd5\x99\x95\x70\x41\xb7\xbc\xe7\xd4\x06\xe7\xa4\xe9\xc5\ \x8a\xdd\x13\x05\x77\xaa\x72\x29\xa1\x61\xef\xd2\x25\x2b\x3b\x12\ \xcc\xcd\x7e\xf1\xd4\x17\x6d\x3a\xe4\x70\x53\xfa\x89\x15\x5a\x97\ \x20\x70\x07\x00\x4d\xc0\x65\x6a\xcf\x55\x7c\xcd\xb8\xae\x01\x32\ \x46\x3b\x8e\xee\xbd\x63\x1c\x92\xe1\xfe\x86\x61\xb2\x9f\x59\xa1\ \x4e\x74\x52\xab\xe1\xdf\x76\xd0\x48\xef\xed\x05\x54\x35\xd1\xcd\ \xd8\x9c\x4c\x2c\xc6\x88\x61\xf8\x4d\x8f\xb7\x48\x92\x08\x20\xde\ \xc6\x08\xda\x6c\xd4\xea\x10\x17\xc8\x45\x98\x09\x95\xb4\xf6\x6c\ \xb0\x27\xa1\x1d\x60\x1a\xad\xb8\x93\xd7\x98\xda\x6f\xe2\x8f\x0b\ \x1b\xc7\xca\x7f\xa4\x42\xbf\x87\xd4\x6a\xd4\x5b\x41\x59\x30\xdf\ \xe9\x13\xf9\xbf\xf7\x22\xab\x41\xa9\xb1\xec\x0f\xcb\xd4\x18\x5e\ \x21\x5b\x03\x80\xbf\xb4\xab\x59\xfe\x62\x88\xd5\x53\x37\x6c\x0a\ \x83\xd7\xbc\x3c\xa5\xc7\xa8\x19\xaa\x05\x1c\x93\x69\xdb\xf8\x75\ \x41\xe3\x9f\x85\x9f\x92\xa5\x16\x42\x4f\x56\xe6\xf3\x9f\x45\x00\ \x7f\x11\x96\xc5\x05\xf8\xeb\x05\x0d\x5a\x5a\x9a\x75\xc6\x4a\x9d\ \xc0\xfd\x65\x7b\x13\xa4\x9b\x36\xd6\x28\xe0\x82\x0e\x7e\x90\xef\ \xbf\xef\x3f\x10\xf9\xbf\xbc\xe9\x7c\x6f\x4c\xab\xad\x3a\x8a\x6b\ \xe4\xac\xbe\x20\xfa\xf3\x39\x8a\x76\x36\x17\x3f\xcc\xd4\xbb\x15\ \x98\x32\xa1\x97\x70\xe7\xac\xf2\xf1\x62\x38\x8c\x5b\x0b\x1b\xf9\ \x4f\x1e\x90\x99\x70\x4a\x0c\x75\xf4\x86\xa3\x3e\x1d\x50\xd3\xae\ \x05\x83\x23\x7c\xca\x66\xfc\x58\xd3\xaf\x59\x2b\x53\x04\x53\x2b\ \x61\xdc\x5a\x05\x3f\xb9\xa2\xd5\x1b\xe7\x61\x65\x1f\xd6\x6e\x9f\ \x6d\x5a\x6c\x97\x00\xf2\x3d\xe1\xf7\x57\xf8\x46\xa2\x91\x77\x2c\ \x49\x3e\xc2\x4e\x69\x94\x3f\x23\x89\x66\x9a\x95\x1f\x05\xcd\x4f\ \x35\xec\x01\xbd\x8a\xcc\xa9\x4e\xe0\xd3\x73\x67\xb7\x91\xba\x34\ \x75\x22\x6b\x7f\xfd\x5f\x58\x00\x8d\xd6\xd9\x6f\xa4\xda\x8c\xe8\ \xdb\x4f\x4e\x62\xcb\x9b\xfc\xc4\x44\x1b\x71\xf9\xbf\x68\xb6\x3b\ \xbf\x14\xf3\x54\x21\x41\x9a\x2b\x5c\x65\x10\xfd\x20\x40\xbc\xf4\ \x8d\xaa\x18\xb9\x1e\x93\x29\x9a\x6e\x72\x96\xf6\x31\xb5\x7c\x3f\ \x16\xca\xc4\x7b\x89\x22\x91\x48\x39\x8c\x5b\x9c\xda\x68\x05\x6e\ \x46\x47\xa4\x30\x40\xe5\x79\x88\x37\x41\xa8\xf0\x6b\x86\x20\x15\ \xe1\x87\x70\x66\x6a\xd3\xec\xda\x82\x9d\x2f\x70\x7d\x3a\x44\x82\ \xa4\xe2\x53\xa8\xb5\x5d\x0d\x2a\x9d\x51\x8a\x1f\xe4\x48\xa3\xa8\ \x0e\xec\x5e\x78\x13\xc5\xa1\x58\x15\xe7\x89\xa8\x80\xf0\x64\x1a\ \x2c\x54\x9e\x0d\xa3\x28\x39\x02\xc4\xc5\x22\x9b\x8f\x78\xe5\xa2\ \xd9\xf7\x91\x3a\x93\x0a\xb6\x57\xfa\x4b\x68\x69\xd5\xb4\xec\x3f\ \xdc\x2f\x20\x08\x6f\x71\xd6\x74\x34\xdb\x97\x4d\x91\xc9\xe6\x66\ \x98\x4b\xe9\xdd\x4e\x44\x4b\xa9\x18\x9d\x21\x53\x72\x2b\x1f\x63\ \x31\x92\x9b\xf4\x10\xfd\x1c\x40\x38\x99\x69\x4b\xe9\xae\x70\x62\ \xde\x99\x51\x91\xfa\x47\x40\xe9\xa8\xab\xa7\x65\xea\x38\x12\x2a\ \x8a\x41\xed\x2b\xd3\x36\xda\x96\xe8\x60\xeb\x69\xda\xa1\x23\x83\ \x2f\xaa\xb7\x46\xdf\x71\x50\x7a\x62\x43\x54\x67\x7a\xfc\xa7\x91\ \xda\x5b\xa4\x5f\x23\x8f\x49\x35\xba\xda\xe3\x83\x28\x03\x4f\x91\ \x68\xd3\x4e\xd5\x08\xe4\x74\x8b\x6a\x79\x0c\xbc\x4a\x12\xcd\x4c\ \x13\xc8\xc5\xe2\x8b\x34\xc8\x96\x68\xac\x45\x35\x6e\xb8\xbc\x9c\ \x83\x6b\xf6\x11\xf4\x73\x44\x1f\xca\xd6\x85\x30\x75\xee\x86\xa8\ \x1c\x8b\x0c\x44\xeb\xae\x1d\x50\x7e\x05\x02\x50\x53\x73\xd8\x93\ \x96\x58\x9d\x48\xdd\x54\x93\xd4\xc2\x12\x29\x83\x7e\xbf\x49\x6d\ \x27\x2e\x6c\x44\x4d\x15\x40\x3e\x61\x73\x28\xa6\x96\xc8\x06\x55\ \x45\x14\xc9\xc2\x91\xbb\xfa\x46\x12\x14\xe3\x2d\xdf\xa0\x8a\x5d\ \xd6\xb0\x16\x1d\xe3\xa9\x8a\x40\x8d\xcf\x71\xd4\x4c\x34\xa2\xfb\ \x06\xd3\x86\x22\x2b\xc5\x20\xd8\x0b\x46\xd6\xa9\x40\xa0\x74\xbb\ \x5b\x99\x3f\xda\x54\x9b\x2a\x00\x7b\x99\x98\x94\x25\x46\x6e\xb1\ \xe9\x50\x28\xc8\xcf\x41\x21\xa5\xbd\x89\x62\x0e\x3b\x75\x8f\x00\ \x91\xb9\xda\xc7\xb4\xac\x27\x9a\x97\x37\x27\xe9\x03\x79\xbe\x0d\ \xaf\x17\xbb\x04\x05\xfa\x93\x16\xc4\x83\xd2\xd0\xc5\xad\x7a\xaa\ \x1a\xd6\xfa\xc4\xb5\x40\x4f\xcd\x02\xbf\xcc\x6c\xc2\x24\x15\xb6\ \x5a\xf3\x72\x0d\x16\xa0\xee\x3b\xc0\xe7\xb4\x4b\x39\xe1\xf8\xe9\ \x18\x1d\x32\x09\xc1\x8b\x62\x41\xb3\x73\xed\x18\x05\xa6\x50\x5e\ \xdc\x86\x05\x7f\x69\xcf\xad\x4f\x69\xdc\xc6\xc2\x58\xf5\x05\x32\ \x19\x79\xe6\x06\xb7\x63\x3d\x98\x58\x37\x99\x48\xcc\xd4\x15\x2a\ \xd4\x46\x52\x9c\x1e\xf1\x77\x61\xe4\x03\x3d\xfb\x46\xad\x1d\xae\ \x1b\x8f\x59\x9a\x8d\xa4\x02\xa4\x81\xd7\x13\x4c\x82\x8d\x45\xa6\ \x4a\xb6\x55\x85\x8c\x1a\x98\x25\x48\xc8\x38\xb4\x1b\x28\x17\x27\ \x3d\xa1\x2d\xde\xc2\xe0\xb0\xfd\xc4\x91\x64\xb1\x3c\xc3\x4e\x45\ \x8d\x8c\x5d\x45\xda\xe7\xcc\x09\x13\x51\xbc\xd7\xbc\x52\x8a\xb6\ \xa9\x76\x1f\xea\x0f\x98\x7e\x69\x9a\x3d\x46\xc6\x20\x8c\x30\xb3\ \x03\xd6\x28\x36\x6e\x18\x02\x38\x37\x9a\xd4\xfc\x51\xbd\x6c\x08\ \xe4\x5e\x18\x97\xd4\x5d\xa8\x56\xc1\x95\x8d\xc1\x3c\x5a\x4d\xab\ \xd9\xbd\x3c\x20\xc5\x6d\x6b\xfa\xc7\xa5\x8e\x92\x9d\x1a\x9f\x88\ \x9b\x1b\xf0\x62\x4d\x26\x50\xca\x41\x57\x53\x62\x0c\x21\x74\x11\ \x57\x53\xf0\x80\x0b\x5d\xe8\x1c\x9f\x43\x39\x4d\x44\x13\xf3\x28\ \x3e\xb2\xff\x00\x83\xb8\x4d\x57\x83\x50\x59\x2a\x8d\xad\xdb\x30\ \x75\x3a\x72\x8e\xf4\x9f\x95\x36\x10\x9d\x5c\x57\xb8\x92\x95\x36\ \x0d\xb4\xb2\x15\x38\x22\xf2\xa3\xa6\xf0\x18\x5c\xab\x93\x81\x7c\ \x08\x84\x52\x8a\xe4\x8f\x30\x16\x17\x9b\x41\xd9\x41\x56\x63\xb4\ \xfa\xf1\x1a\x85\x5b\x4f\xbc\xee\xf1\x01\xef\x9e\x22\x45\x11\x4d\ \xc3\x2d\x65\xba\x9b\xe0\x47\x33\x14\x22\xe1\x58\x1e\x08\x1c\xc4\ \xd7\xa7\x4c\xa9\x65\xdd\xea\x39\xb4\xa2\x1d\x6a\x43\xc3\x08\x82\ \xcc\x4d\xd8\x46\xea\xf4\x9e\x05\x2f\x2d\x5f\x15\x40\x1b\xc5\xac\ \x50\xfa\x41\xa2\x84\xea\x55\x97\x76\xd2\xd7\xbd\xff\x00\x98\xe6\ \xac\x8e\xe5\x94\x80\x59\xb3\x71\xd2\x5d\xa7\x22\xba\x87\xb0\xa8\ \x45\xff\x00\x0b\xf7\xf7\x91\xd5\x4d\xa4\x83\x70\x47\x79\xd4\xd6\ \x52\xd8\xc5\x91\x43\x52\x6e\x45\xe4\xcc\x88\xc9\xb6\xa0\x6d\xb6\ \xf2\xbf\x63\xd8\xc4\x22\xb1\xb4\xcc\xc6\x55\xa2\xc8\xfb\x4f\x31\ \x7b\x5a\xfc\x1f\xa4\x90\x93\x19\x1d\xe5\x15\x40\x2c\x0f\x5b\x45\ \x52\xc1\xbd\xaf\x29\x7d\x8c\x88\xd6\xda\x78\x8a\x29\x4d\x80\x3c\ \x46\x87\x0c\x2c\xd8\x3d\xe0\x32\x5d\x01\x53\x00\x92\x05\x88\x90\ \x1b\x0b\x19\x46\x9d\xb7\xe9\x6b\xa1\xe8\x03\x0f\xa1\x92\xee\x24\ \x58\x9f\x68\xef\x87\xb5\xf5\x1e\x19\x36\xde\x0a\x9f\xa8\x95\x20\ \x00\x5b\x06\x66\x46\x44\xcc\xab\x11\xd6\x12\xbd\xb9\x12\x0d\x42\ \x71\x2a\x0c\x40\xdc\x3f\x48\x84\xd8\x7f\x37\xb4\x72\x9b\x93\x7e\ \x25\x4a\xad\x3b\x53\x71\x67\x6d\xb6\x37\xe2\x5a\x1d\x41\x54\x5c\ \x80\x3f\x79\xcc\xa4\x0a\x38\x63\xc0\x95\xd0\xf3\x54\xbd\xfc\xdc\ \x91\x31\x61\x8a\xa9\x94\x6b\x8b\x0c\xcf\x59\x6d\xda\x46\x1c\x06\ \x39\x20\x83\x1a\xee\x6c\x1c\x64\x1e\xd0\xc3\xaa\x00\x07\x83\x31\ \xe9\xf1\x71\x26\x5a\xc2\xfd\xa3\xa9\xd7\xfa\xc3\x2a\x05\x4a\x16\ \xc8\x16\x33\x6a\x53\x35\x28\x90\x79\x1c\x19\x7d\x11\x4d\xd6\xdf\ \xb1\x87\xf6\x70\x0d\xd7\x20\xf4\x87\xe8\xe3\x8b\xa3\x25\x58\x83\ \xf5\x89\x75\x04\x92\xbd\x0c\xe9\xea\x34\xfe\x1d\x52\xc3\xe5\x6e\ \x27\x32\xa5\xc3\xb1\x1d\xe6\xe5\xd6\x6b\xc8\x76\x13\x7c\xa9\xe4\ \x46\x22\xed\x38\xca\x30\xb5\xe2\xd1\x95\xc5\x8e\x0c\x2a\x4c\xd4\ \xdc\xab\x0b\xaf\x51\x14\xd3\x75\x6c\x12\x08\x9d\x0f\x86\xf8\x75\ \x29\x9a\x26\x9f\xde\x38\xbd\xfa\x62\x49\xab\x40\x05\x3a\x94\xc8\ \x75\x6f\xf9\x63\x02\x86\xa7\xc0\x56\xaa\xa2\xcf\xc2\x7a\x42\xf7\ \x0f\x8b\xf5\x35\x68\xe9\x19\xd0\xbe\xfa\xbc\x01\x6e\x27\x29\xaa\ \x33\x64\x92\x60\x82\xce\x4b\x35\xcb\x1e\x49\x99\x7b\x46\x4c\x16\ \xaa\xd3\x6d\x06\xec\x6c\x25\xc6\xa0\x0a\x36\x81\x60\x27\x29\x1a\ \x56\xd5\x00\x06\xf0\xb0\xca\x67\x88\xcc\x72\x61\xa3\x91\xcf\x12\ \x6a\x6f\x73\x19\xbb\x37\x10\xb1\x28\x05\xae\x19\x4e\xd3\xde\x1f\ \x88\x47\x9a\xc1\x98\x77\x12\x65\x2c\x48\x37\x8d\xbe\xe3\xcc\xc9\ \x52\x9a\xe7\x64\xd8\xd8\xff\x00\xc4\x5a\x68\xa8\xbc\x80\x49\xf5\ \x32\x42\x2f\x91\x82\x3f\x79\xaa\xfb\x85\xba\xcb\x16\xa8\xab\x55\ \xc1\xf2\x9b\x03\xd2\x29\x9f\x77\x26\xc6\x79\x4d\xfc\xad\x31\x87\ \x6e\x7b\x49\x32\xb1\xb0\x0c\x7a\x89\x36\xe2\x7a\xc6\x55\xb8\x5b\ \xb1\xe3\xa4\x58\x75\xe8\x36\x99\xa8\x1a\x2c\xa6\xed\xfa\x46\x16\ \xf1\x16\xcb\x86\x1f\xb8\x93\x30\x3b\xaf\xfc\xc3\xa6\xdd\x78\x22\ \x38\x98\x40\x36\xb8\xe2\x15\x50\x1f\x4e\x2c\x3c\xd4\xff\x00\x83\ \x0d\xbc\xe3\x72\xe3\xb8\x98\x83\x6d\x8d\xaf\xdf\xda\x1a\x93\x23\ \xba\x23\x92\x6e\x31\x83\x36\x99\xa7\x53\x27\xca\x09\xe3\xa4\xf6\ \xa1\x3c\x26\x20\x65\x0f\x1e\xa2\x28\x94\x08\x76\xe3\x13\x40\x1a\ \xaa\x25\x58\x91\x02\x8b\x0a\x37\x72\x01\x20\x43\x46\x64\xc0\x26\ \xc7\xa1\x99\x53\x6b\x72\xbf\x51\x10\x92\xad\xef\xb8\x09\xe5\x7b\ \x60\x75\x8d\x54\x1b\xee\xaf\xf4\x33\x2a\x50\x7b\xee\x0b\xb8\x7a\ \x45\x12\x49\xbe\x6e\x23\x29\xb9\x07\x9c\xf4\x33\x2a\x2d\x85\xc8\ \x20\xcf\x28\xf4\x90\x5f\xbc\x35\x1a\x65\x87\x17\xbd\xa5\x14\x3f\ \xcc\xd1\x65\xbf\xde\x28\xf2\xfa\x89\x0a\xb1\xf0\x85\xf1\x9e\x63\ \x74\xaf\xe7\x5d\xb8\x37\x99\xb1\xad\x36\x9d\x5a\x89\x50\x0c\xdc\ \x1e\xb3\xa7\xf1\x10\xb5\x52\x96\xa8\x2d\xb7\x8b\x31\x1f\x98\x49\ \x18\x0a\xa0\xb8\x1e\x61\xf3\xaf\xf5\x96\xe8\x08\xaf\xa7\xab\xa6\ \x3d\x46\xe5\xf7\x1f\xfa\x99\xbf\xd6\xa7\xf1\x0a\x27\x88\x4a\x82\ \x2f\x6c\x5e\x4e\x69\x9e\x0a\x5f\xd5\x65\x9b\x0a\x03\xb7\x93\x88\ \x15\x29\xdf\x80\x55\xbf\x63\x29\x46\x27\x5d\xaa\x36\xb0\x3b\x5b\ \x90\x47\x10\x1e\x9b\x21\x0c\xa7\x72\x1e\x0c\x70\xf1\x03\x6d\x37\ \x37\xfa\xcf\x17\x34\x81\xde\xaa\xd7\x3c\x4d\x05\x6d\xf1\x1f\x03\ \x4e\x1b\xec\x7a\x65\x66\xe0\x04\xe9\xeb\x26\xad\xf1\x2a\xb7\x0d\ \x4a\x96\x9f\x69\x3f\xff\x00\x50\xc4\x9b\x54\x8e\xd5\x09\x72\x6f\ \x27\x25\x92\xad\x87\x03\x90\x61\x38\xc5\x6d\x57\xff\x00\x56\xd4\ \x36\xe5\x22\x88\xbf\x6a\x62\x4b\x57\xe2\x7a\xda\x4f\x9f\x0c\x8e\ \xc2\x98\x1f\xd2\x29\x91\x73\x51\x70\x0e\x3d\xa1\x32\x2d\x4a\x7b\ \x4f\xcc\x38\x33\x59\x06\xd5\x34\xfe\x31\x49\xcd\x35\xad\xa5\x4d\ \xbf\x9b\xb7\xed\x3d\x5f\x5d\xa7\xa7\x57\x65\x4d\x1a\x8e\xbc\x03\ \x79\xc9\x65\x28\xd6\x23\x1d\x44\xae\x8a\xf8\xf4\x3c\x06\xcb\xa8\ \xdd\x49\xbb\xf7\x58\x61\xd5\x94\xf5\x1f\x0d\xaa\x2c\xd4\x02\xfb\ \x62\x39\x34\x5a\x0d\x42\x94\xa7\x59\xa9\xb7\x23\x77\x13\x80\xc0\ \x83\x6c\x83\x19\x46\xb5\x4a\x6c\x08\x63\x89\x60\xd5\xd5\xfe\x1d\ \x5e\x90\x25\x6c\xe3\xba\xc8\x89\xb8\xda\xdc\xf7\x97\x26\xa6\xa2\ \x9f\x12\x9b\x10\x18\xf1\xd2\x7a\xbd\x3a\x5a\xc0\x5a\x9d\x92\xb0\ \xc9\x1d\xe3\xdf\xd4\xe7\x30\x22\x33\x46\xf6\xd4\x52\x63\xc8\x61\ \x01\xf1\xe4\x6b\x82\x20\xad\xd5\xc1\xec\x64\x0f\xac\x2d\x59\x87\ \x66\x22\x09\x19\xf5\x87\xab\x16\xd5\x54\x3e\xb3\x00\xc0\x3d\xe2\ \x86\xa3\x68\xbf\x58\xea\x22\xe2\xe7\x03\xbc\x48\x0c\x3f\xbc\xa8\ \x28\x52\xa0\x74\x12\xa4\xca\xb6\x70\x36\xe2\xdc\x0e\xf3\xd4\x5c\ \xa9\xbf\xd2\x01\x22\xf9\x39\x86\x2d\xc8\xe0\xf1\x02\x61\x7d\xcc\ \x77\x5a\xf7\xc1\x9a\x97\x17\x5c\x83\xcc\x49\xe4\xc3\xa6\xe3\x70\ \x0d\x91\xde\x08\x45\x77\x64\x09\x80\x95\x61\x70\x44\x6b\x2e\xdc\ \xde\xea\x78\x98\xb7\xef\x71\xd8\xcb\x51\xf4\x2a\x90\x01\xe4\x4e\ \x8e\x9f\x50\x08\x07\x91\xd6\x72\x17\x68\xc8\x36\x87\x4a\xb1\x4a\ \x99\xc5\xff\x00\x79\x9b\xc7\x4c\xaf\xa2\x4a\x14\xf5\x94\xb6\x02\ \x03\x11\xe5\x3e\xb3\xe5\xb5\xd4\x5e\x8e\xa5\xd1\x81\x0c\x0e\x67\ \x67\xe1\x9a\xbd\xb5\xc6\xd3\x9e\xd2\x8f\x8d\x69\xa9\xea\xa9\xf8\ \xca\x33\xdf\xb1\x98\xe3\x7f\x35\xab\x36\x3e\x4d\xb9\xdc\x31\x68\ \xea\x6e\xae\x00\x6b\xdc\x75\xed\x02\xb5\x36\xa5\x50\xa3\x8b\x11\ \x05\x30\x44\xec\xe6\x6d\x7d\xca\x36\x72\x1b\x8b\x75\x8a\x6b\xee\ \xb1\xbd\x87\x4f\x58\xf4\x2c\xaa\x5a\xc1\x80\xc8\x07\xac\x96\xa5\ \x42\xf5\x59\xc8\x00\x93\xc4\xa2\xa6\x6e\xc5\x80\xb7\xb4\xc3\x63\ \xd7\xf5\x99\xc8\xb8\xe9\x16\x49\x38\xbe\x24\x8d\x04\x0e\xb1\xce\ \xd8\xe4\xf3\x23\x0f\x90\x2d\xf5\x8f\xaa\xd8\xe6\x49\xbb\x8d\xf0\ \x63\x91\x89\xeb\x25\xf5\x94\x69\xc7\x9a\xc4\xe6\x49\x65\x0e\x2e\ \x7a\x4d\xb9\xe9\x88\x74\xc7\xdd\xf1\x30\x8b\x4e\x6d\x08\x10\xc3\ \x9c\xcc\x3c\xdc\x7c\xd3\x0e\x33\xfb\x42\x5c\x8b\xda\x44\x4a\x47\ \x2d\x93\xda\x7a\xa1\x2d\xe6\xb5\xba\x62\x78\x29\x6c\xf5\x84\xad\ \x7b\xa3\x75\x82\x29\xbf\xd3\x23\x99\x1d\x5b\x6e\xc7\x32\xdd\xbe\ \x56\x1d\x64\x95\x52\xe6\xf3\x5c\x45\x2f\x79\x03\x98\x74\x8d\xc7\ \xd7\x88\xa6\x04\x1b\x46\x23\x0b\x64\x4d\x03\xa9\x92\x0d\xe1\xb0\ \xba\x96\x5e\x0f\x22\x00\x61\xb7\xbc\xcb\x9b\x82\xa6\xe4\x0e\x26\ \x4b\x0f\xde\x27\x84\x70\x47\xc9\xfd\xa4\xa5\x48\x72\x08\xe3\x99\ \x48\x1b\xae\x46\x08\x8b\xac\xde\x21\xdc\xbf\x32\xf2\x3b\xfa\xcd\ \x40\x9f\x27\x26\x09\x61\xf2\xf0\x04\xf5\x4a\x8c\x79\x1e\xd6\x81\ \x4f\xcc\xd9\xb5\xa2\x0c\x5a\x6a\x16\xe4\x66\x26\xec\xa7\x92\x23\ \x77\x5c\xfa\x4d\x21\x4e\x1b\xe8\x64\x80\xd5\x2a\x1a\x78\x6d\xde\ \xf9\x80\x2a\xe3\xcd\x4d\x4f\xd2\x35\x52\xc7\x10\x4d\x3b\xb7\x63\ \x14\x65\x17\xa6\xd4\xc8\x2b\xc7\x40\x63\xf4\xe3\x4a\xc4\x7f\xa8\ \xad\xf4\x32\x7a\x09\x67\x2a\x7a\x88\x68\x36\xb9\x04\x42\xa7\x5d\ \x56\x89\x60\xe9\x55\xae\x46\x7c\xb2\x8a\x1e\x05\x27\x15\x96\xa3\ \x2d\x9a\xf6\xdb\xc4\xe3\xa8\x65\x53\xb4\x9c\x1b\x83\xe9\x28\xd3\ \xd7\x6b\x80\xf9\x07\xbc\xe7\x78\xb5\x2b\xaf\x5a\x86\x95\x6a\x6e\ \x2e\xfb\x5c\x6e\x16\x1d\x0c\x9a\xa3\x68\x94\xd8\x53\xac\xe4\x73\ \xe6\xb4\xb3\x62\xd5\xd0\xab\x15\x27\xc3\xc5\xc1\xe9\x39\x8e\x29\ \x6e\x3f\x78\xcb\xee\x26\x63\x54\xd1\xa9\xd2\xd8\xff\x00\x95\x1f\ \x57\x31\x5a\x8d\x55\x1a\x62\xe3\x43\x40\x8f\xf7\x5c\xc0\x34\x99\ \x9a\xca\xe8\x6f\xd2\xf6\x8c\xad\x48\xd8\x17\x41\x70\x00\x00\x0f\ \xe6\x6b\xa8\x12\x36\xae\xb5\xb6\xd4\x0a\xe0\x74\x75\xbd\xa7\x85\ \x4d\x1d\x61\xb6\xbd\x02\x9d\x9e\x99\xfe\x86\x21\xeb\x31\xf9\x80\ \x75\x03\x83\x00\x6c\x60\x40\x3b\x7d\x0c\xde\x33\xa6\xb6\x82\x8e\ \xdd\xda\x7d\x52\x30\x63\xc5\x41\xb4\xfb\x44\x6a\x68\x55\xa2\x4a\ \xbd\x2f\x27\xe1\x71\x0c\xab\x23\x05\x2b\x75\x38\x23\xa1\x84\x8f\ \xa8\xa1\x59\x82\x31\x6a\x6d\x7b\x29\xcd\x8f\x69\x76\x90\xd7\xa7\ \xb9\x43\x5b\x31\x54\xee\x0d\xd4\x90\x41\xb8\xf7\x9d\x74\x1a\x7d\ \x55\x32\x36\x8a\x35\x48\xff\x00\xea\x4f\xf4\x9c\xed\x5d\x27\xd3\ \xd6\xf3\x29\x06\x32\x8c\x06\xb4\x6f\x22\xb8\x16\x0f\xc8\xec\xdd\ \x64\xa4\x09\x5a\x95\x6a\x55\x29\xff\x00\xf6\x5f\xeb\x25\x38\x3c\ \xc9\x1b\x45\xf6\xae\xc6\x38\x27\xf4\x84\x4b\x23\xab\x0c\x30\xeb\ \x27\xe2\xd9\x94\x82\xae\x81\x2f\x90\x30\x4c\x41\xd5\x55\x75\x94\ \x8d\x45\x00\x56\x5f\x98\x77\x12\x35\xb1\x3b\x5b\x91\x28\xa4\x5d\ \x18\x3a\xfc\xc3\xf7\xf4\x8d\xd5\x50\x15\xd7\xed\x34\x41\xff\x00\ \x78\xec\x61\xe1\x06\xb0\x01\x58\xe3\x95\x07\xf6\x82\x9b\x76\x80\ \x41\x8d\xd4\xd3\x25\xa9\x87\x16\xf2\x2c\x51\x42\x1a\xe4\x45\x0e\ \x9e\xd3\x58\x0b\x5d\x41\xcc\x7d\x72\x8d\x66\x5b\x8b\xf4\x89\xf0\ \xf6\xb6\x0d\xe6\xd8\xf5\xfd\xe0\x98\x49\xe8\x23\x74\xec\x49\xb1\ \xe2\xf0\x00\xef\x68\xda\x29\x9b\xfe\xb2\x50\x55\x17\xcc\x6d\xc4\ \xc4\x07\xac\xa8\x2f\x94\x62\xf7\x98\x50\x76\xb4\x34\xb6\x9b\x5e\ \x9d\x8e\x47\x04\x4d\x65\x01\x6e\xa7\x10\x54\x00\x6d\x79\xa4\xec\ \x39\x82\x27\x75\x9a\xf3\xdb\xed\xc0\xb8\xed\x3d\x55\x41\xbb\x2d\ \xfd\x47\x68\xa5\x22\xe4\x1b\xc5\x28\xa0\xd7\x60\xf4\xc9\xba\x9c\ \x89\xd6\xd3\xea\xcd\x54\x64\xdd\xb5\x8e\x6c\x78\x6b\x4e\x0d\x02\ \x52\xb5\xd6\xf2\xda\x4c\x0d\x42\x2e\x37\x0c\xfb\xcc\xf2\x86\x55\ \x1a\xea\x0b\xa9\x42\x57\x0e\x38\xbf\xf0\x67\x1d\x91\x81\xb1\x04\ \x10\x67\x55\xea\xb2\x5a\xa8\xc8\x5c\x30\xee\x26\x7c\x42\x82\xd4\ \xa3\xf6\x8a\x36\x38\xcf\xb4\xa5\xc5\x66\xb9\x88\xd7\x7d\xac\x40\ \xec\x6f\x00\xd3\xdd\x72\x2d\x79\xe6\x5e\x6f\x3c\x0e\xdc\x8e\x66\ \xd9\x08\x52\x3f\xb4\xf3\x27\xd6\x13\x0c\x6f\x51\x83\xd3\xb1\x9a\ \x0d\xc5\x8f\x22\x48\x86\x43\xcd\x8f\x31\x95\x01\xf0\xd4\xc2\x00\ \x93\xc4\x7b\xa8\x34\x97\x89\x24\xb4\xc9\xbd\xa5\x74\x30\x41\x8b\ \x5a\x37\x37\x06\x53\x46\x91\xbd\xce\x25\x6a\x91\x5a\xff\x00\xa6\ \x27\x87\xa4\x62\x29\x20\x01\xcd\xa1\x9a\x61\x46\x39\x9c\x9b\x25\ \x80\x51\x73\xcc\x05\xbd\xee\x4c\x27\xe6\x01\x3d\xa2\x94\x29\x04\ \x5c\x4f\x38\x07\x23\x06\x22\x9b\x35\xe3\x41\xbc\x10\x99\x7c\xa5\ \xfa\x11\x27\x74\xea\x25\xea\xb7\xa1\x63\x6b\x9c\xc9\x9d\x48\x38\ \xcc\xa5\x48\x2a\xa1\x63\xc4\xc3\x49\x80\xc6\x65\xa6\x98\x61\x91\ \x63\x31\x69\x84\xcb\x5c\xf6\x9a\xfd\x0c\x48\xc0\xab\x5a\xf6\x8a\ \xb3\x83\xbb\x23\xd6\x52\xee\xaa\x49\x16\xb9\x93\xd5\x76\x7b\x5c\ \xe3\xb4\xd4\x0f\x1a\xac\xca\x01\x63\xcc\x1d\xe0\xb0\xb1\xb3\x77\ \x81\x6f\x38\x8b\xdd\xe6\xb4\x40\xaa\x80\xcd\xb9\x47\xb8\x80\xa0\ \x28\xb4\x6a\xb9\x07\x73\x00\xc0\x41\xa8\xa1\xc6\xea\x63\xd4\x8e\ \xd2\x40\x51\x78\x77\xef\xc4\x04\x06\xf7\x38\x86\x2d\x7b\x48\x3c\ \x01\x06\xe2\x53\x4d\x09\x17\xda\x18\x45\xd3\x5b\x64\x4a\x28\x60\ \xe3\x83\xc8\x85\x6a\x05\x55\x4b\x02\x30\x6f\xd6\x65\x6a\x4c\x2a\ \x5c\x0e\x63\xde\x98\x24\x5c\x63\xd2\x1b\x21\x34\xc1\x10\xd3\x89\ \xa9\xab\x6e\xda\x41\x00\x8f\xd2\x1d\x35\x65\xc1\xb9\xf7\x9e\xf3\ \x8a\x83\x69\xf7\x8f\x46\x26\xe0\x8b\x5f\x83\x2b\x53\xa9\xf0\x66\ \xdc\x4d\x16\xe2\xa2\x10\x7d\x08\x91\xd6\xa7\xb4\xb0\x7b\x0b\x18\ \xcd\x2b\xd4\xa2\x45\x40\x7e\x52\x0c\x1d\x6e\x6b\xba\xe2\xfc\x8f\ \x59\xcf\xeb\x5f\x08\x6a\x94\xc6\x15\x73\xf9\xa4\xec\xb5\x41\x2d\ \x4e\xa1\x27\x9b\x03\x63\x0a\xa2\xe0\x1e\x22\x4b\x35\xb0\x31\xde\ \x6e\x46\x49\x76\x5d\xdf\x28\x06\x79\x45\x36\xba\x70\x70\x71\xc1\ \x8d\x14\x0d\x4c\xab\x02\x4f\x43\x89\x82\x81\x01\xc9\x16\x23\x81\ \x69\xad\x05\x06\x60\xe7\xb1\xfc\x27\x89\x8a\xcc\xa4\xb2\x12\x47\ \x51\xda\x59\xa4\xf0\xaa\x50\x74\x6a\x57\x7b\xdd\x4d\xf3\x23\xac\ \xa6\x9b\x92\x87\xcc\x38\x3d\xe4\x9e\x15\x88\x62\xc2\xd9\x3d\xa3\ \x13\x56\x8e\x86\x8e\xa2\x98\xa8\x9f\xb8\xf6\x88\xb0\xad\x48\xed\ \x16\xa8\x39\x12\x67\x36\x7e\x6d\xd6\x38\x14\x54\x44\xa3\x56\x9b\ \x6c\x0d\x4d\x8d\x83\x03\xc8\x91\xd6\x14\x83\x95\xda\xc2\xd2\x9d\ \x3d\x45\xf3\x50\xaa\x6e\x8d\xc7\xa1\xef\x27\xd6\x53\x64\xd5\x32\ \x9b\x1e\xb2\x41\x0b\x46\xd7\x25\x87\xbc\xf0\x5a\x7c\xf8\xb9\xbf\ \x51\x04\xbd\x94\x0b\x64\x40\x2d\x7e\x91\x0b\xa9\xaa\xba\xe6\xaa\ \xdc\x62\xf2\x9d\x2d\x36\xa3\x53\x7a\x82\xc8\xd8\x61\x79\xcb\xa6\ \xf9\xb5\x85\x8c\xb7\x49\x55\x5a\xa0\x57\xc5\xb8\x3d\xe1\x4c\x5d\ \xf1\x2d\x30\x4f\x0c\xab\x38\x1b\x6c\x09\x18\x92\xa3\xb6\xdd\x8e\ \x78\xe0\x91\x2a\x4d\x49\xa7\xb6\x85\x56\x6d\xa4\x75\xe8\x6f\x06\ \xad\x40\xb6\xa7\x59\x03\x8e\x8d\x68\x4d\x34\x01\x59\x48\x7f\x0d\ \x5c\x75\x22\x61\xd9\xd8\x80\x7d\x63\xa8\x8a\x37\xea\x01\xec\x6e\ \x23\x7e\xca\x7f\xed\xb0\x75\x3d\x25\xab\x11\x95\xa6\x4f\x24\x7d\ \x23\xe8\xd1\x3c\xab\x83\x06\xa5\x27\xa6\xd6\x28\x40\x8d\xa4\x01\ \x1c\xca\xa3\x91\x5c\x0c\xac\xd6\x50\x46\x46\x66\xae\xe5\x59\xa5\ \xd8\xf0\x73\xd8\xcc\x34\x99\xf9\x8b\xa8\xc4\xae\xef\xd6\x54\xd9\ \x1e\x74\x10\x48\xa2\x54\xa9\xb8\xbc\x65\x08\x89\x23\xe5\x98\x50\ \x7c\xd7\xfa\x4a\x1e\x92\x1f\xfb\x96\x1e\xd3\x69\x69\x85\xfc\xb5\ \x50\x83\xcc\xd6\x8c\x4c\x0f\xd2\x37\x76\xda\x88\xdf\x49\x57\xd8\ \x10\x30\x6f\x1d\x6d\xed\x1e\xda\x5d\x22\xa0\x35\x2b\xdf\xad\x84\ \x3f\x50\xe1\x2a\xe0\x9c\xe6\xf8\x3e\xb0\xfe\x1e\xfe\x15\x66\xd2\ \xbe\x51\xb2\xb7\x86\x6a\xe8\x51\x46\xda\x6c\xd6\xfc\x44\xc6\xd7\ \xd5\x69\xbc\x24\xad\x4e\x82\xf1\xd7\xa1\x99\x2e\x47\xc4\xb4\xad\ \x42\xb9\x03\xe5\x39\x07\xd2\x48\xea\xc0\x8e\x67\xd3\x9a\xc2\xaf\ \xc3\xfe\xd3\x45\x90\xb8\x19\x04\x7e\xb3\x92\xdf\x12\xd4\x03\x7f\ \x0e\x91\xee\x02\xf3\x35\xc6\xda\x2c\x88\x69\xe4\xed\xb9\xb1\x84\ \x89\xc8\x38\x3c\x4b\xa9\xfc\x62\xa0\x20\x3e\x9e\x8b\x0e\xc5\x65\ \x94\xfe\x27\xa4\x70\xa6\xae\x8a\x99\xbf\x69\x5b\x7f\x82\x48\xe2\ \x84\x65\x6c\x66\xd2\x92\x80\x69\xc3\x05\xeb\x91\x3a\xe9\x4f\xe0\ \xda\xa1\x60\x5a\x83\xc3\xa9\xf0\x8a\x9e\x17\xf9\x7a\xab\x59\x79\ \x99\xbc\xe3\x5f\x97\x0e\x98\x05\xac\x44\xb2\x98\xe0\x1c\xc3\xa9\ \xa5\x7a\x2d\x6a\x94\xd9\x2d\xdc\x4d\xa4\x96\x3d\xe5\x6e\x8c\x38\ \xa9\x5c\x0e\x7a\xcd\x10\x69\xb1\xdc\x4c\x72\x59\xef\x71\x98\x34\ \x96\xb0\xb9\xe2\x2b\x69\x12\xe3\x4a\xed\x7c\x4c\x6d\x39\x61\x81\ \x89\x68\xc4\x04\x1b\xe2\x15\x30\x77\x0c\xca\x5a\x95\x34\xbd\x89\ \x63\x12\xc1\x47\x04\xc7\x51\xe2\xa2\x86\x05\x4d\xed\xd2\x6d\x41\ \x63\x8e\x24\xa2\xea\x6e\x0c\xa3\x7d\xe9\x83\xd4\x60\xc0\x82\xdb\ \x8d\xb8\x89\xac\xc4\x5e\xfd\x63\x2a\x9d\xa0\x58\x5c\x99\x25\x46\ \x3c\x9c\xc6\x46\x69\x75\x47\x51\x27\x62\xd2\xac\x11\xda\x26\xaa\ \x8b\x9c\x83\x37\x01\x57\xf3\x1f\x68\x25\x40\x37\x31\xaa\x86\xc4\ \xdb\x88\x23\x1c\x8b\x98\x86\x05\xc5\xc8\xc4\x15\x05\x5b\x72\x18\ \xc1\x73\xeb\x0d\x13\x3f\xd2\x4b\x00\xca\xac\x37\x2d\x87\xa0\xe9\ \x04\x21\xea\x23\x80\xda\x77\x01\x60\x79\x13\x76\xd8\x6e\x5c\xac\ \x8e\x31\x56\xe0\x47\xd3\xa6\x47\x06\x0a\x10\x70\x2e\x3d\x23\x81\ \xb0\xc8\x99\xb4\xc3\x54\x87\x4d\xbd\x44\xc4\xbd\x88\x31\x6b\x50\ \x5f\xb4\x72\x90\xf7\x33\x24\x97\x41\xbb\x70\xe9\x0d\x00\x28\x08\ \x1c\x4f\x30\x21\x8d\xf8\x8c\xa4\x2f\x70\x64\x8d\x46\x5f\x08\xa9\ \x36\x36\xb4\xdd\x55\xbc\x44\x63\xc9\x51\x98\xaa\x96\x0c\xa9\x19\ \xab\xf3\x54\x55\xec\xa0\x41\x27\xae\xa4\xae\xf5\x02\xc7\xd2\x21\ \x89\x23\x6e\x31\xc8\xb4\xaf\xf0\x94\x5f\xa1\xf5\x93\xb8\x0a\x85\ \x9c\x5d\xaf\xe5\xb4\x60\xa5\x32\xd8\xee\x06\xc4\xe0\x4d\xa9\x5e\ \xaa\xd3\x0b\xbb\x24\x66\xf1\x95\x54\x30\xf1\x12\xc4\x70\x04\x95\ \x77\x12\x5e\xd8\x1f\xcc\xd4\xed\x3c\x03\x97\xdb\x4e\xe4\xda\xe2\ \xdd\x0c\xbc\x69\x68\xbe\x98\x6a\xab\x33\x0b\xe0\xaa\x8e\xb2\x13\ \x55\xe9\x9e\x99\xc4\xb2\xaf\x9b\x44\x85\x5a\xc6\x93\x5d\x81\xe2\ \xc7\xfe\x09\x55\x1c\xcd\x55\x33\xa6\xd5\x59\x4e\x39\x56\xee\x24\ \xfa\x94\xde\x7c\x45\x1c\xf2\x3d\x67\x4a\xbd\x23\x5a\x88\xb1\x05\ \xa9\xe4\x0b\xf4\x91\x30\x6a\x76\x2c\xa6\xdc\x1c\x4d\x4a\xcd\x46\ \xd7\xb8\x3d\x6d\x69\x4d\x6b\x57\xd2\x2b\xff\x00\xdc\xa6\x33\xea\ \x22\x6a\x26\x4e\x49\x1c\x89\xb4\x2a\x78\x76\x27\x20\x1b\x11\xe9\ \x14\x9d\xc6\x38\x8b\xe8\x6d\x2a\xaf\x4f\xc3\xaa\x45\xee\xa7\x2a\ \x7b\x88\x97\x50\x01\x90\x62\x9c\x43\xa6\x79\xcd\x8d\xa2\x01\xce\ \x73\x1d\x48\x16\x61\x6c\xdc\xf1\x08\x9d\x66\x54\xac\x94\xd2\xa3\ \x80\xdb\x05\x8d\xbf\x68\xf4\xa3\xbe\x90\xa4\xee\xa5\xc7\x07\xac\ \xe7\xd6\xba\xd6\x01\xae\x2c\xa2\x57\x4a\xa1\x6b\x6e\xcf\x66\x85\ \x8d\x40\xb5\x3a\x94\x5b\x65\x44\x36\xef\x1d\x49\x99\x16\xfb\x8f\ \xa4\xa0\x13\x51\x2d\x7b\x30\xe2\x24\xdb\x76\xd7\x4b\x1e\xb6\x86\ \xe9\x36\x86\xb0\x37\x92\xaa\xee\x1d\x8c\xa0\x52\xa6\xfe\x6a\x43\ \x1e\xf2\x41\x40\x36\x69\xb0\x62\x3f\x0f\x58\xca\x0c\xf4\xde\xf9\ \x52\x3a\x18\x5f\xf1\x2a\xa6\xb4\x80\xb3\x16\x07\xb1\x13\x7c\x3a\ \x27\x87\xb1\x86\x8f\x4e\xb2\x58\x8b\x37\x79\x35\x54\x64\x36\x3c\ \x74\x33\x24\x4d\x4d\x46\x2e\x59\x62\x2a\xf8\x34\xde\xd9\x33\x1d\ \x8d\xae\x0c\x45\x56\xbf\xcc\x2f\xeb\xd6\x6a\x41\x47\x52\xad\x3e\ \x56\x98\xcc\x57\x8e\xe0\x1b\x59\x7d\x84\xc0\xa5\xb0\x0e\x20\xb5\ \xb2\x09\x9a\xc0\xf2\xd7\x76\x24\x16\x36\xf7\x8c\x37\xf0\x8d\xcd\ \xcc\x98\x9b\x1c\x0c\x4a\x37\x1f\x00\x1e\xa0\xe6\x49\x94\x05\xe9\ \xba\x93\xed\x19\xa6\x60\xda\x66\x4b\xf5\x93\xa1\x3e\x21\x17\x85\ \xa4\xb8\x77\x5e\x31\x2a\x96\x7c\x08\x96\x5d\x46\x98\x9c\x7f\xc1\ \x39\x6e\x36\xb9\x17\xb1\x06\xd3\xa7\xf0\x70\x57\xe2\xce\xa3\xf1\ \xa9\xfe\xf2\x3f\x88\x21\x5d\x75\x65\xb5\xbc\xc6\x13\xd5\x7c\x4e\ \x72\x01\x3c\xc7\x51\x1f\x70\xc4\x5e\xea\xdf\xcc\x50\x16\x00\xda\ \x51\xa6\x5c\x54\x5c\xe5\x6f\x11\x1b\x7b\x05\xf5\xea\x25\xfa\x2d\ \x45\x5a\x54\xd4\xa5\x46\x06\xfd\xe4\x58\x08\x84\xdb\xd6\x39\x40\ \xf0\xd6\xc7\x36\x87\x2e\xda\x8e\xdd\x1f\x89\x78\x80\x26\xa6\x9a\ \x54\x5f\x6c\xc6\x7d\x8b\x4f\x5c\x97\xd2\xb8\xbf\xe5\x33\x8f\x4f\ \x71\xb5\xc8\xbc\xb2\x8d\x41\x49\x77\xa9\xcd\xfb\xce\x56\x7f\x1a\ \x97\xfa\x61\xd3\x3d\x3a\x85\x5d\x0d\xf8\xbc\x34\xa2\x05\xfc\xc3\ \xda\x55\xa7\xf8\x82\x55\xb5\x3a\xea\x08\xef\x0a\xae\x90\x3d\xde\ \x8b\x82\xbd\x8c\x36\xfd\x6b\x08\x4f\x0d\x45\xf6\x92\x7d\x62\x35\ \x15\x49\x16\x5e\x23\x1e\x9d\x54\xf9\x95\x80\x88\xa8\x09\xe0\x8b\ \x46\x02\x00\x62\x73\xc0\x8b\x71\x73\x7e\x23\x18\xb0\x16\xe0\x99\ \x81\x71\x73\x34\x13\xbd\xc6\x21\x51\xc8\x6f\x6b\xc3\x5a\x26\xa3\ \xd8\x5c\x08\xc7\xa2\x88\x40\x0f\x7b\x7c\xde\xf2\x18\x99\xaa\xf7\ \xcc\x5b\xa8\x22\xe3\x37\x9b\x59\x02\x92\x2f\x31\x03\x0e\x38\x9a\ \x05\x5e\xd8\xb4\x5b\xe7\x9c\x19\x66\xc5\x6c\x8c\x19\x3d\x4a\x47\ \xa5\xe3\x28\xc2\x43\x95\x04\x4f\x00\xb6\xbf\x78\x2c\x0e\xe2\x38\ \xb4\xd5\xb9\x04\xf1\x69\xa4\xd0\x07\x48\x6a\x97\x16\x26\xd3\x13\ \x04\x82\x6d\x18\x8a\x06\x79\x82\x09\x56\xb1\xbd\x8f\xac\x2a\x20\ \x01\x9b\x90\x79\x9a\xd6\x3c\xcc\x00\x80\x6d\x99\x26\xba\x59\xb1\ \x8e\xd6\x84\x1b\xf0\x9e\xd0\x51\xb7\x8d\xad\xcf\x49\xaa\xb6\x1f\ \x30\x3f\xcc\x0b\xd1\xda\x53\xe6\x2b\xde\x2d\x6d\x90\x61\x52\xb2\ \xbe\x0f\x48\x55\x14\x31\x16\xf3\x7d\x0f\x68\xdd\x3a\x1d\xe0\xf4\ \xef\x27\xa9\x72\x80\x93\x89\x46\x9a\xaf\x86\x2e\x4f\x22\xc0\x19\ \x92\x02\xa6\xa5\x7b\xe3\x06\xd0\xb5\x8d\x7a\xec\xab\xc0\xc4\x2d\ \x31\x56\xd5\x03\xc6\xdc\xdb\xa4\x4d\x40\x7c\x42\xcd\x70\x09\xbc\ \x93\x50\x8e\xb0\x35\x34\xbc\xfb\x87\xca\x73\x79\xa3\x20\x8b\xc3\ \x27\xee\x41\x6c\x28\x92\x73\x77\x13\x54\x22\xe1\x57\xfe\x5e\x54\ \x02\x1d\x03\xb7\x02\xa3\x05\x1f\x4e\xb0\xaa\xea\x74\x57\x25\xb4\ \x59\x23\x3b\x5e\xc2\x4d\xa9\xd4\x9a\xcc\x3c\xab\x4d\x14\x59\x51\ \x78\x13\x7d\xd0\x48\x42\x5c\x52\x61\x92\x79\x33\x74\xd5\x88\xd6\ \x38\x70\x4d\x37\xf2\x91\xd8\x1e\x26\x0f\x11\x95\x82\xdc\x93\xe5\ \x51\xfc\xca\x74\x74\x95\x36\xbd\xc1\x28\xb7\x21\xb8\x27\xa4\x68\ \x2b\x5b\xa7\xab\xa7\xa8\x8d\xb8\x30\x61\x63\x69\x3d\x76\x75\x56\ \x04\x9b\x5e\xf2\x8d\x75\x64\xae\x81\xd6\xf6\x56\xdb\xff\x00\xb8\ \x87\xa8\x2a\xa8\x2c\x45\xc0\xb3\x5f\xac\xa2\xa9\xfc\x42\xcb\x6d\ \xaa\xc5\x7b\x8e\x91\x0e\xd4\xee\xc0\xa5\xae\x31\x63\x09\xd3\x6b\ \x06\x17\xb1\xe2\x26\xa8\x37\x04\x8b\xcd\x32\x7a\xf8\x75\xb4\xd6\ \x0e\x43\xd3\xe2\xe3\x91\x10\xc8\xc5\x71\x9f\x6c\xc0\xa4\xc6\x9d\ \x40\x7b\x18\x55\x86\xca\x9e\x4e\x0e\x44\x10\x36\xf3\x19\x44\x94\ \x21\x86\x60\x78\x84\xfc\xe0\x34\xa3\x4e\x8a\x48\xda\x79\xe8\x64\ \x95\xb3\x0a\xbb\x56\xa7\x25\x45\x9b\xb4\x62\xab\xd3\x21\x4d\xad\ \xfb\x18\xad\x86\xc8\x6d\x6b\x60\x8e\xd2\xf4\x0a\x50\x06\xf9\x6d\ \x71\xe9\x0b\xd3\x51\xea\x35\x03\x1b\x5e\xcd\xd2\x52\xd4\xc3\xa5\ \xd4\x5d\xba\xc9\xd6\x8f\x86\x77\xf4\x3c\x18\xf5\xa8\x6d\xfc\xcc\ \x5f\xf0\xc2\x1a\xcb\xde\xe2\x36\x95\x70\x46\xda\x83\x78\xf5\x19\ \x9b\x56\x9e\xf1\xbc\x0c\xc9\x76\xd9\xf3\x1f\x52\xf5\x5a\x6d\x73\ \xa7\x27\x77\x63\xcc\xc5\xa9\xb9\x4d\x3a\x83\xeb\x26\x56\xb6\x6f\ \x62\x3b\x46\xf8\xa9\x57\x15\x70\xdd\x1c\x43\x0e\x95\xa8\x46\x42\ \x41\xfa\x49\x77\x7e\x16\xbc\xe9\x30\x62\x9b\x1f\x24\x65\x4f\x79\ \x16\xa1\x81\x7d\xae\x3d\x8f\x69\xa9\x45\x26\xe5\x4f\x69\x95\x1c\ \x13\x76\xe4\xf5\x10\x2a\xde\xf8\xfd\x22\xc9\x6e\xb3\x4c\xe8\xcd\ \xd4\xdc\xe4\x7a\x46\x51\x7b\x82\x3a\x34\x9f\x71\x5c\x03\xef\x19\ \x41\x81\x18\x36\x37\xe2\x4a\x3c\x0f\xde\xc7\xd0\x1f\x7c\xc7\x9c\ \x73\x10\xe8\x56\xb5\xb3\x83\x2a\xa6\x36\xb1\xf5\x02\x14\xc3\xfe\ \x13\xe5\xf8\xbd\x12\x4d\xae\xa4\x67\xd8\xc5\xfc\x61\x7f\xf9\x1a\ \xc4\x62\xc6\x1f\xc3\x3c\xdf\x13\xd3\x77\xcf\xf5\x83\xf1\x73\x7f\ \x88\x56\xcf\x58\x7f\xe8\xfc\x46\x82\xc6\xd1\xfa\x4f\x35\x50\x3b\ \x82\x3f\x69\x39\x61\x8b\x73\x19\xa2\x6f\xf3\x48\x2f\xcb\x46\x81\ \x54\x07\x62\xfa\x08\x5b\xf6\xa2\x01\xf9\x60\xd5\x36\x19\xee\x66\ \x54\x60\x18\x03\xd0\x5a\x49\x4d\x37\x2a\x73\x29\x0d\xe5\x5b\x48\ \x68\xb0\x6b\x2f\x53\x29\x0f\x76\x6b\x1c\x74\x99\xb0\xc5\x08\xff\ \x00\x48\xf4\xd4\x54\xa6\xc0\xab\x11\xf5\x91\x03\x63\x37\x71\xb4\ \xc9\xd7\x5d\x3e\x23\x8b\x3a\x83\x3d\xe3\xe9\xaa\x1b\x35\x30\x3d\ \x44\xe4\x0a\x96\x1c\xe6\x6a\xb9\xb1\x20\xc3\xf2\x7f\x4e\xa3\xae\ \x91\x8f\x94\x9f\x4c\xc0\x03\x4e\x9c\x82\x7d\xe7\x34\x55\x37\xb0\ \x30\x8b\xdb\xcc\x72\x7a\x09\x62\xd5\x7a\x8a\xe8\x8b\x65\xc1\x3d\ \xa4\x2d\x56\xe6\xc3\x00\x98\x35\x09\xe7\x33\x29\x0b\xb6\x4c\xd4\ \x83\x47\x54\x13\x54\xf6\x83\x9b\xe2\x51\x58\x02\xe3\xd8\x41\x14\ \xee\x2f\x0d\x45\xa8\xb6\x67\x98\x10\x6e\xb9\x11\x81\x00\x19\x82\ \x4e\xd0\x6d\x24\x89\x95\x4b\xb5\xcd\x8c\x02\xac\x8d\x71\xc4\x7e\ \xa1\x30\x59\x6d\x6f\x48\x84\x72\x39\xc8\x9d\x23\x2d\x23\xcf\x8c\ \xa9\x9a\x5c\x0c\x42\x01\x5d\x6c\xa6\xd1\x4e\x8c\xa7\x32\x43\xde\ \x0f\x04\xfe\x93\xc7\x70\x1f\x34\x41\xc1\x86\x1b\x77\x26\x48\x7e\ \x6e\x41\x1f\xac\x68\xf3\x2d\xef\x9e\xb6\x89\x06\xc7\x10\xf7\x11\ \xf4\xe6\x55\x3c\x6a\x6d\x1c\xde\x36\x85\x4b\xb0\x36\xe6\x4a\xe2\ \xc6\xe3\x88\xea\x2c\x2c\x0d\xb8\x85\x89\x7e\xd3\xb2\xc3\xbc\x5d\ \x76\xb3\x2a\xa9\xf7\x94\xe9\xc0\x34\xf7\x74\x61\x10\x02\xee\x24\ \xe5\x9b\x3e\xd3\x0d\x0f\x4e\x2d\xa7\xa9\x50\xf2\x70\x26\x52\xac\ \xc3\xca\xc3\x7a\xf6\x31\x8c\x00\xa6\x88\x7a\x8b\x98\xad\x9c\xda\ \x48\xdd\x94\xaa\xb5\xe9\xb1\xa6\xe7\xa3\x71\xfa\xc5\xea\x28\xd4\ \x45\x65\x70\x7d\xcf\x11\x6d\xe4\x52\x3a\xc6\x69\xeb\xd5\xa2\x0a\ \x92\x1c\x11\xf2\xb6\x44\x92\x0a\xa9\xe7\x6b\xda\x03\x50\x6a\x96\ \x41\x8b\x9e\x4f\x49\x75\x6f\x05\x49\xf2\x96\x24\xe2\xf1\x6c\x5a\ \xc4\x0b\x64\x5a\x6a\x51\x82\x51\x4d\x34\x55\x16\x98\xb3\x26\x0b\ \x75\x69\x2e\xa5\x82\xe8\x55\x49\xf3\x3b\xff\x00\x10\xf4\xe5\x9d\ \xea\xad\xbe\x65\xbf\xed\x11\xf1\x03\x6a\x34\x03\x8b\xfc\xdc\x7b\ \xc6\x4e\xd5\x03\x32\x53\x45\x42\x30\xd9\x36\x9e\xd8\x00\xb9\x52\ \x6f\xd4\x75\x8a\xd4\x79\x19\x73\xca\xfe\x92\x9d\x35\x4d\xc9\xe1\ \xa9\x04\xa8\xb8\xf5\x13\x4c\xb9\xf5\xae\x8e\x54\xa9\xda\x7f\x68\ \x04\xdd\x76\x93\xc7\x13\xa7\xa9\x44\xaa\xa0\x81\x9b\x66\x73\xc8\ \x09\x50\xee\x20\xdb\xd2\x32\xaa\x9c\x95\x38\x30\xd0\xab\xd3\xda\ \x45\xca\xe4\x7b\x42\xa8\x29\x1c\x81\x83\x3d\x45\xa9\xab\x82\x14\ \xf3\xde\x40\xb6\x50\x6c\x56\x3a\x92\x92\x06\x2d\x68\xd7\x44\x22\ \xea\xa7\x69\xe2\x32\x82\x8d\xbc\x1e\x64\x4e\xa0\xdb\xa9\x95\x6f\ \x35\xbf\x51\x3a\x5a\x6d\x39\x6a\x1b\x87\x98\x0c\x4e\x7d\x02\x05\ \x5b\x70\x27\x5b\xe1\xce\xa9\x50\xa8\x38\x22\x73\xe4\xd4\x26\xe5\ \x0e\xc2\x2e\x07\x20\xcf\x05\x57\x25\xa9\x90\x0f\x55\x26\x3f\x5d\ \x4d\x0d\x42\xe8\x7c\xa7\xf9\x91\xd8\xee\xe0\x4c\xc2\x6b\x3b\xd3\ \xb1\x37\xf6\x30\x2b\x20\xa8\xbb\xd0\xd9\xba\x89\x4d\x16\x43\x65\ \xaa\x37\x21\xfd\x44\x5d\x6a\x1e\x1b\x17\xa5\xe6\x4f\x5e\x44\xa5\ \x48\x19\x58\x9b\x93\x63\xd8\xcf\x17\x20\x0e\xfd\x44\x66\xa2\xc4\ \x64\x0f\x43\xda\x4e\x41\x18\x63\xec\x44\xe9\x3b\x65\x76\x86\xa8\ \x36\xa5\x57\x2a\x4f\x94\xf6\x88\xf8\xa5\x26\xa3\x57\x63\x7e\xb1\ \x34\xdb\x61\x9d\x0d\x70\x3a\x8f\x86\xd3\xad\xf8\xd3\xe6\xf6\x99\ \xf2\x9f\x63\x8e\xd9\x5b\xf5\x13\x47\x38\xe4\xcf\x6e\x1b\xb0\x2e\ \x4e\x26\x02\x17\x9c\x99\xb6\x4b\x65\xb9\xcf\xed\x09\x05\x86\x26\ \xef\x01\xee\x56\xfe\x91\x88\xa0\xdb\xa4\x90\xda\xce\x48\x27\x22\ \xd6\x31\xac\x0a\x05\xbf\x27\x10\x2b\x53\x51\x50\xec\xa8\x0f\xa4\ \x76\xa0\x1b\x53\x06\xd7\x51\x7f\x78\x13\xfe\x0a\x9b\xbe\x25\x44\ \x9e\x56\x9b\x37\xfc\xfd\x64\x7f\x11\xab\xe2\x6b\x2b\x30\xfc\xe6\ \xd3\xa5\xf0\x40\x29\xf8\xf5\xd8\x8f\xbb\xa4\x17\x3d\x0f\x33\x87\ \x55\xc9\xa8\x4f\x7c\xc2\x77\x4d\xf1\xe6\x6b\x7a\x74\x9b\xa5\x3f\ \xe6\xa9\xff\x00\xe4\x22\x58\xdc\xf3\x1b\xa2\x3f\xe6\x94\x9e\x86\ \xf3\x4c\x8f\x50\xcc\x5f\xeb\x88\x35\x0d\xdc\xdf\x1d\x27\x94\xde\ \xaa\x83\xee\x60\x3b\x1d\xe4\xde\x48\xfa\x06\xd5\x37\x76\x17\x8f\ \xa5\x52\xc4\x5e\xd9\xe6\x44\xaf\xb5\x01\xbf\xcc\x63\xe9\x1b\xda\ \xfd\x25\x8a\x2d\xa4\xdd\x0c\x36\x26\x4a\x58\x8c\xaf\x10\xe9\xd4\ \xb8\xb1\x98\xc6\xb4\x57\x37\x84\x5f\x6a\x00\x20\x37\xfb\x72\x66\ \x54\xb8\xf9\x72\x65\x88\x45\x82\xf9\xba\xcf\x6f\x36\xf5\x83\x4d\ \x0d\xbc\xc6\x10\x51\x7f\x41\x2e\x93\x09\x36\x19\x8c\xa5\x72\xc2\ \xc3\x98\xa2\x73\xc4\x6e\x9c\x93\x50\x2f\x4b\xca\xa8\xad\x88\xdf\ \xec\x21\x1e\x2d\x11\x7b\xd4\x27\xa1\x31\xbb\xac\xb9\x19\x99\x69\ \x8e\x39\x88\x7f\x58\xf2\xd8\x8a\x71\x71\x70\x38\xe6\x41\x33\x9d\ \xa0\xa9\xc8\x26\x4f\x51\x76\x9c\x64\x19\x46\xab\xe5\x07\x19\x93\ \xd3\x7c\xed\x61\xe5\x9b\x8c\xb1\x49\x07\xb4\x67\x88\x0a\xed\x6e\ \x3b\xcc\x74\x00\x5c\x18\xbe\x9d\xe2\x9b\x56\x99\xb5\xc1\xb8\xef\ \x12\x2e\x0c\xa6\x9b\x6d\x1c\x62\x6b\xd3\x52\x37\xa7\x12\x58\x4a\ \x5f\x93\x0d\x49\xef\x68\x04\xc2\x19\xfa\xc5\x0d\x2d\x7c\x9f\x2f\ \x58\x7b\x43\x10\x17\x83\x16\xc0\x91\xb5\x38\xea\x65\x1a\x04\xfb\ \xe1\x9b\xe7\xe9\x0a\x97\xd5\x3e\x16\x85\x14\x7c\xc7\x31\x34\x54\ \x3b\x80\x6e\x49\xc9\x3e\x90\xeb\x95\xa9\x5f\xcb\x90\x05\xa3\x34\ \xd4\xc2\xd3\xa8\xc4\x67\x81\x39\xb4\x07\x6d\xcf\x93\x6c\xc6\x30\ \x01\x01\x19\xef\x15\xb4\xef\xb9\x8d\x4c\xa9\x0d\xc7\x32\x24\x38\ \xce\xee\xbd\x20\xa1\x1e\x28\x1d\x4c\x3a\x9d\xcc\x50\x5b\xb8\x20\ \xfd\x64\x1e\x71\x7a\x6a\xcd\xd0\x49\x5b\x50\xf4\xee\x53\x6f\x97\ \xb8\x8f\x15\x11\xa8\xb2\xb1\x21\xc9\xc4\xe7\xd4\x2a\x29\x9d\xd7\ \x02\xf6\x9b\x90\x53\x13\x54\x4e\xa4\xd5\x73\x6d\xc6\xc4\xaf\x63\ \x1d\xf1\x1a\x25\xce\x9c\x2b\x06\x52\x0d\xfb\x8c\xc8\x54\x0b\x9d\ \xa4\x30\x33\xa6\xcd\x7f\x86\xad\x75\x61\xbe\x9a\xec\xfd\x65\x7a\ \x11\xc6\xad\xbd\x86\xf3\xf9\xac\x4c\xa3\xe1\xc9\xe6\x0d\x7b\x74\ \x26\x53\x4c\x52\x7a\x55\x12\xb1\xda\xd7\x04\x10\x31\x3d\xa7\xa0\ \xb4\xaa\x60\xb3\x23\xe2\xe3\x88\xea\xc1\xb2\x23\x29\xb9\xb7\x4b\ \xc9\xab\x69\xb7\x53\xb9\xb1\xec\x65\x45\xe8\x86\x24\xa3\x15\x3f\ \x30\x26\x08\x75\x46\x3b\x10\x11\xd4\x5f\xf7\x84\x4e\x69\xa5\xb6\ \xf8\xdc\x3a\xcc\x34\xed\x66\x5e\x27\x63\x6d\x3a\x99\x34\x02\xfa\ \x82\x67\x97\x4e\x9c\xb5\x25\x1e\xa1\xb1\x1f\xd2\xc7\x32\x8f\xe5\ \x63\x8e\xfd\xa5\xba\x7a\x40\x6e\x0c\x7d\x63\xce\x9f\x4e\x3f\x0b\ \x0f\x63\x19\xa6\xa5\xa6\xde\x14\xd6\x65\x1d\x09\x58\x5e\x4a\x44\ \xbe\x1e\xdb\xda\xfc\xdb\x12\x8d\x09\x61\xa8\x50\x4e\x65\x1a\x9d\ \x18\x5b\x6c\xaa\x8c\x0f\x68\xaa\x68\xd4\xab\x23\x3e\xe1\x63\xcd\ \xa1\xbb\x0e\x1e\xca\x03\x6d\x04\x90\x7a\x49\x6a\x07\xa7\x50\xa9\ \xbf\xa5\xe5\xfb\x55\xdc\xa7\x52\x70\x60\xd6\x45\x2a\x15\x80\x2c\ \x26\x75\xac\x46\x1c\x85\xb1\x8f\x15\x08\x01\x87\x07\x98\xad\xac\ \x0e\x14\x11\x09\xce\xd4\x18\xbd\xc5\xa4\x1e\xae\x8b\x51\x70\x3c\ \xdf\xcc\xe7\x80\x03\x14\x75\xb0\x3c\x13\xd2\x51\x4e\xb9\x00\xdc\ \x58\x21\xcf\xb4\x0a\xca\x2b\x2e\xe0\x45\xf9\x13\x53\xa1\x53\xb2\ \xd9\xb6\xb7\x22\x74\x34\x6f\xba\x89\xa6\xdc\x38\x22\x42\x06\xfa\ \x44\x1c\x3d\x3f\xdc\x4a\x74\x27\xef\x69\x0c\x08\xdf\x14\x73\x2c\ \x77\x32\x9e\x86\x15\x41\x66\xf7\x8c\xaa\xa3\xed\x55\x40\xfc\xc6\ \x2a\xaf\x97\x6e\x41\x24\x4d\x32\x00\x7c\xdd\xfb\xc6\xa9\xb5\x4b\ \x2e\x73\x05\x53\x6a\xf9\x86\x4c\xd0\xde\x18\x62\xbf\x37\x17\xed\ \x24\x7a\x94\x0a\xd5\x5c\x6e\x37\xb0\x1d\x2f\x1c\xf5\x99\xc8\x05\ \x17\x8b\x48\xa8\xb5\xd2\xc4\x71\x91\x28\xa2\x8c\xd4\x83\x1c\x67\ \x1f\xf3\xde\x16\x17\x52\xcb\x4f\xe0\x95\x9c\x59\x4d\x67\xb0\x3d\ \xfa\x7f\x43\x38\x15\x01\x46\xb1\x13\xb3\xf1\xb6\x14\x34\xba\x6d\ \x2b\x65\x91\x43\x30\xff\x00\x9f\x59\xca\x4a\xc0\x9d\x98\x00\xf0\ \x61\xc7\xcd\x5c\x88\xd8\xe1\x6e\x54\x80\x78\x27\xac\x3d\x28\xb3\ \xbb\x16\x02\xc8\x7f\x7c\x41\xac\xae\x18\x96\x72\x7b\x4c\xa1\xe5\ \xd3\xd5\x6b\xf3\x65\xfe\xbf\xd2\x6c\x09\x1c\x0d\xc6\xf7\xb0\x82\ \x1c\x33\x6d\xb6\x62\xd3\x09\xd8\x93\x30\x5c\x02\xd8\xed\x20\x7b\ \x35\xdf\x00\x58\x60\x46\xd1\x63\x7b\x5a\xd2\x64\x1c\x9e\xb2\x8a\ \x42\xe4\x9e\xd0\xa5\x4e\xfb\x01\x62\x26\x5c\xdf\x24\x01\x04\xb0\ \xb5\xb8\x33\xd9\x27\xb9\xeb\x22\x6a\xd4\x24\xd8\x03\x68\x43\x3e\ \xb1\x74\xb0\xf0\x95\xc0\x3b\x6d\x04\x75\x3f\x6e\x21\xe0\xac\x1a\ \x79\x1e\x90\x99\x71\xc4\xc5\x20\x70\x2f\x88\x74\x30\xcc\xfd\x00\ \x98\x45\xf0\x63\x2a\x2e\xca\x2a\x9d\x4f\x98\xff\x00\x49\x16\x29\ \xeb\x0c\xde\xf6\xbc\x4a\xde\xd9\x86\xae\x2d\x7e\xd2\x43\xff\x00\ \x68\xe4\xcc\x73\xb4\xda\xf3\xc0\xe0\xb1\xe7\xa4\x4b\x9b\x98\x20\ \xea\x19\x40\xe0\x1b\x48\xc9\xbf\x06\x3a\xb6\xe6\x04\x60\x09\x33\ \x6d\x07\x07\x89\xd2\x33\x4c\x47\xb5\x95\xb8\x9a\xcb\x61\x70\x6e\ \x22\x77\x8b\xf2\x4f\xd2\x36\x8b\x0b\x90\x6e\x41\x19\x8a\x79\x4f\ \xb4\x6d\x36\xda\xd6\xe4\x18\x25\x69\xa8\xb8\x24\x8e\xc2\x1d\x37\ \x53\x85\x5b\x18\x27\xaa\x50\x60\x6e\x05\x81\x9e\x0a\x94\xc5\x89\ \x2c\xc7\xa7\x69\x45\x36\x01\x4a\x9b\x1b\xf5\xed\x12\xf4\xce\xfe\ \x4d\xe1\x29\x2d\x83\xbb\x75\x03\xd6\x59\xa4\x5f\x0d\x41\xea\x60\ \xe9\xa9\x06\x6b\x76\x8f\x23\xcc\xc4\x70\xa2\xd0\xb5\x48\x55\x37\ \x21\x99\x87\x53\x3a\x2a\x3e\xe5\x08\xeb\x92\x27\x34\xfc\xe1\x40\ \xc5\xe5\xe1\xf6\xb6\xdf\xa0\x99\xa6\x34\x26\xdb\xdb\x9e\xfe\x91\ \x65\xc0\x60\x7a\x74\x94\x90\x1d\x42\x9c\x11\xfb\xc9\x2b\x53\x6a\ \x66\xed\xc4\x21\x65\x51\x92\x22\x4f\x94\x11\xd4\xca\x74\xca\x2b\ \x82\x49\xb2\xd3\x17\x63\xe9\x23\xa9\x53\x6b\xee\xb6\x4f\x17\x8c\ \x15\x15\x73\x60\x08\xe6\xf1\x3a\xa0\xdb\x43\x0e\xf9\x12\xbd\x4a\ \xa6\xfc\xb0\x2a\x3b\x41\x44\x2c\x06\xdb\xb2\x8f\x98\x5b\x89\xd2\ \x56\x51\xd3\x5f\xcd\x89\xd7\xa2\xad\x4b\x4c\x34\xf6\x0d\xb9\x77\ \x1b\xf7\xe9\xfb\x41\xa3\xa0\x43\x6d\x43\x2b\x0a\x4a\x2e\x7a\xdf\ \xd2\x20\x35\x43\x5c\xd6\x46\xda\xc0\xe0\x18\x5b\xaa\x4c\x39\x68\ \x53\x73\x75\xba\xb1\x5b\x15\xe6\x2e\x99\x6a\x07\x28\x59\x09\xc8\ \x27\x17\x95\x6a\x16\xa0\xad\x4e\xa2\x20\x00\xa8\x37\x1d\x0f\x69\ \x42\x53\x35\x46\xeb\x85\x2d\xf3\x2d\xb0\x66\x75\xac\x24\x2a\x54\ \x5d\xd4\xa9\xaf\x9b\x90\x44\x59\xa1\x5b\x05\x49\xa6\xcb\xd0\x8e\ \x44\xb4\x50\x4a\x0c\x37\xdd\x01\xcd\xc6\x63\x98\x21\xb3\x00\xa4\ \x75\x37\x86\x9c\x41\x4a\x8d\x52\x33\x7b\x7b\xc3\x1a\x7d\xb9\x2e\ \x57\xbe\x65\x22\x91\x61\x74\x2f\xed\xd3\xde\xf0\x7c\x31\x4c\xdd\ \xb6\xfb\x93\x7f\xe2\x1a\xb0\xb4\x55\x19\x15\x01\xf4\x3d\x63\x17\ \x4a\xb5\x32\xa0\x03\xd8\x89\x85\x69\x33\x0b\xd6\x0b\x6e\x02\xad\ \xa5\x00\xd2\xb6\xd6\x35\x18\x74\x22\xc2\x5a\x85\xf6\x40\xfa\x72\ \xaf\x4e\xc4\x75\xf5\x90\x78\x55\x28\x12\x54\x3a\x8f\x5c\x89\xd7\ \xd3\xfd\xda\x91\x4f\x7d\x65\xb5\xfe\x6c\xfe\x90\x1a\xba\x35\xc8\ \xb2\xb7\x66\x13\x32\xd3\x89\xa8\xd9\xb6\xbb\x2e\x79\xb8\x3d\xb9\ \x8d\x7a\x54\xea\xa9\x64\x62\x4f\x63\x3c\x7c\xe8\x5b\xc3\x50\x57\ \x37\x43\xfd\x26\x53\x02\xf7\x00\x91\xce\x39\x92\x41\xaa\x46\x42\ \x1a\xfd\x6c\x60\xd6\x0b\xe0\x52\x36\xb1\x37\xb9\x9d\x1d\x5a\x0a\ \xaa\xd4\xc8\xf3\x72\xa4\x75\x9c\xcd\x52\x95\x4a\x54\xd8\x81\xcc\ \xd4\xba\x2a\x7b\x7d\xeb\xad\xee\x19\x4c\x52\xb2\xa9\xd9\x6c\x9e\ \xb1\x94\x94\x8d\x52\x1f\xf7\x5a\x22\xa5\xd5\xc9\x71\x70\x0d\xa7\ \x48\xc8\xec\x4d\x50\xea\x7c\xc3\x0c\x3b\x88\xf4\xa3\xb3\xe2\x14\ \xd4\x0b\xad\xc1\x11\x28\x8a\xd5\x3c\x45\x6b\xed\xc9\x12\xdd\x10\ \x35\x2a\xa3\x7e\x56\xbf\xd2\x16\xa8\xe5\x6a\x2c\x35\x75\x3b\x6e\ \x31\x2e\x55\x6a\x79\xb8\x1d\xa1\xd7\xa8\x4d\x67\x23\xab\x1b\x44\ \xef\x6b\x4d\xc6\x4d\xad\x54\x3d\xca\xd3\xda\x7b\x93\x16\x36\x85\ \xb3\x1b\x93\x9c\x41\x50\x5b\x04\xe4\xcd\x16\x2c\x6d\xc4\x90\xcb\ \x6d\x50\x15\x6d\x79\xd9\xf8\x2d\x0d\xe5\x0b\x8c\x27\x9c\x93\xff\ \x00\x3d\xbf\x49\xc3\xa7\x7a\x95\x54\x0e\xa6\x7d\x21\xff\x00\x2b\ \xf0\x3a\xd5\x2f\xb1\xab\x59\x54\xf6\x1f\xf2\xf3\x1c\xff\x00\x8d\ \x71\x70\xbe\x29\xaa\xfb\x4e\xbe\xad\x4e\x84\xd9\x7d\x84\x87\x75\ \x8c\x67\x86\x77\x5c\x10\x73\xcc\x4b\x02\x1c\x83\x8c\xce\x93\xa6\ \x54\x8f\xbc\xa6\x47\x24\x40\xaa\x36\x69\x50\x5b\xe6\x62\xdf\x4e\ \x3f\xbc\x5a\x3b\x2b\x0d\x87\x27\x12\x8d\x5d\xbe\xd0\x29\xde\xfe\ \x18\x00\xdb\xd3\x99\x24\xaf\x86\x0b\xd8\x4f\x54\x20\x59\x07\x4c\ \x9f\x78\x60\x86\x6d\xc7\x27\xbc\x5b\x03\x92\x41\x90\x30\x11\x61\ \x1a\xac\x64\xe4\xd8\x88\xea\x44\x11\x91\xcc\x91\xe9\x72\x45\xf8\ \x9a\x1e\xc4\x88\x3b\xae\x2d\x60\x23\x02\x12\x2f\x61\x02\x2a\x27\ \xcd\x1c\xa9\x72\x18\x7e\xd3\x28\x2d\x8e\x6d\x1d\x40\xe4\x8f\xd0\ \xcc\xda\x47\x4e\xe0\x0c\x46\xba\x8b\x5e\x24\xb0\x07\x98\x74\x37\ \x3b\x63\x8e\xa4\xcc\xd6\x8e\xa1\x4d\x6f\xbc\xfc\xab\x93\x15\x55\ \xb7\x54\x2c\x7a\xc6\xd5\xa8\x19\x42\x53\x1e\x41\xfb\xc4\xec\xb9\ \xc9\x1f\xac\x10\x18\x80\x6d\x35\x32\x71\xc4\xc7\x52\xa2\xdc\x98\ \x35\x5b\x62\x58\x9c\x98\x83\x19\x85\xf1\x90\x22\x5e\xa6\xd1\x73\ \x00\xb1\x02\xf9\x20\xc5\x56\x6d\xd6\xb0\x9a\x91\x68\x2a\xb8\x20\ \xf7\x93\x66\xe2\xf7\x87\xe6\x20\x9b\x71\x16\xd7\xb5\xa6\xa3\x22\ \x0c\x06\x2f\x0d\x58\x58\xd8\xe6\x4f\x62\x0c\x65\x21\x7f\x31\xb8\ \x11\x06\x52\x2d\xbb\xd3\xac\xa9\x0a\xb0\xfb\xb3\x6b\x73\xde\x4b\ \xb8\x9f\x28\x18\x8d\xa6\x6d\x60\x2e\x3d\x60\x62\x92\xc4\x30\x16\ \xe9\x1e\x14\x54\x5b\xdf\xcc\x20\x00\x2a\x05\xe8\xd6\x8c\xa6\xa5\ \x58\x1e\xa2\x62\xd6\x8e\xd2\x80\x88\xcc\x79\xe9\x36\xa7\x96\x88\ \xb7\xe2\x39\x87\xaa\x40\x94\x95\x97\x86\xe9\x03\x50\xc9\xe4\x52\ \xc7\x8b\xda\x64\x87\x4d\x4d\x4d\x60\x4f\x9a\xd9\x9a\xed\x66\xee\ \x49\xcf\xa4\x2a\x0e\xaa\xaf\x61\x63\x6e\x62\xaa\x1c\xf1\xc4\x92\ \xa4\xab\x74\xb5\xec\xc2\x13\xb8\xa9\x4e\xed\xf5\x9c\xdf\x18\x29\ \xbd\xe5\x34\x6a\x07\x61\xb4\x5e\xf8\xb4\xb1\x6a\xaa\x4b\xe0\x68\ \x5d\xb9\xf1\x18\x0f\xa4\xe7\x6a\x52\xef\x83\xed\x3a\x3a\xea\x82\ \x96\xd5\x02\xe8\x8b\x63\xef\xd6\x46\x5b\x4b\x56\x9e\x2a\x04\x6e\ \xc6\x53\xfa\xab\x88\xd5\x2c\x00\x37\xcf\x51\x28\xd3\x6a\x5e\x89\ \x25\x08\x31\x55\x74\x8e\x41\xa9\x47\xcc\xa3\xa0\x39\x12\x7f\x32\ \x1b\xd8\xce\xbd\x56\x1d\x5f\xb4\xbe\xa0\x5f\x7e\x46\x40\xbc\x7d\ \x05\x56\x60\x2a\x22\x93\xdc\xe2\x71\xe8\xb6\x77\x0c\x58\xcb\xd7\ \x59\x54\xa5\xb0\xc3\xa8\x99\xb3\xf8\x65\x74\xbc\x7a\x26\xa1\x1e\ \x15\x46\x42\x73\x63\xc4\x60\xac\x94\xee\x78\x52\x3d\xc9\x9c\x90\ \xf4\xd8\x82\x55\x90\xf7\x8f\xa5\x5a\xba\x8f\x22\xf8\x8a\x7b\xe7\ \xf6\x99\xfc\xb5\xae\x82\x6a\xd1\x41\x08\x3c\x44\xec\xfc\xcd\xdf\ \x4d\xf2\x87\x63\x76\x53\x23\xa5\x5d\xc1\x0c\x11\x14\xf6\x38\x8e\ \x4d\x69\xbe\xd2\x89\xff\x00\xfc\xe2\x67\x0e\x8d\x51\xc3\x5c\x54\ \x27\xde\xf1\xc1\xec\x3c\xce\x97\xbf\x68\x03\x56\x84\x64\x20\x27\ \xa0\x9e\x0d\x4c\xfe\x1b\xfb\x2d\xe4\x82\xd5\x28\xee\x24\xd3\xcf\ \x75\xc4\x16\xac\x08\xf2\x38\x1e\x96\xcc\x7d\x3a\x0b\x53\x3e\x1d\ \x40\x3d\xa7\x9b\xe1\xe8\xc7\x15\xd1\x4d\xb8\x7e\x65\xb1\x65\x4d\ \xe2\x55\x0d\xb9\x5d\x87\x62\x23\x3e\xd0\xee\x6d\x58\xef\xbf\xe2\ \xe0\xfe\xb0\x46\x92\xb0\x62\x10\x5e\xdd\x8c\x5d\x4d\xc8\xdb\x6a\ \x21\x06\xd7\xb5\xac\x65\xd2\x53\x4b\x50\xb4\xaa\xad\x9d\x88\x3d\ \x0c\x6f\x8c\xea\xc5\x6c\x01\x52\x41\x90\xb8\x42\x40\xdd\x9b\x75\ \x95\x54\xff\x00\x52\x9b\x5f\x15\x17\x6d\xfd\x44\xac\x46\x78\x9e\ \x2d\x20\xe7\xeb\x26\xd6\xd2\x25\x52\xe2\xe5\x7a\xf7\x8f\xf8\x79\ \x1b\xab\xd1\xa8\x40\xb8\xeb\xd0\xc5\xea\x59\x86\xd5\x38\x84\xf5\ \x20\x50\xcb\x5d\x0e\x2d\xb8\x5e\x2e\xba\x5e\xa3\x82\x06\x09\x8e\ \x6f\x2e\xa5\x58\x7c\xa5\x86\x3b\x44\x6a\xdc\xd3\xd5\xd4\x16\xfc\ \x47\xf9\x9d\x23\x20\x16\xa7\x4c\x03\xc9\xc1\x9d\x1f\x83\x0f\x0e\ \xa3\x17\xca\x2a\x13\x39\x4d\xe6\x18\xbd\xef\x3a\x9a\x5f\x27\xc3\ \x75\x0e\x0e\x42\x84\x17\xf5\x97\x2f\x14\x73\xbe\x29\x41\x68\xea\ \x88\x03\xc8\xc3\x72\x91\xd4\x48\x0a\x5f\xe5\x6f\xd6\x76\x95\x46\ \xb3\x42\x69\x37\xfa\xd4\xb2\xb6\xea\x3b\x4e\x4f\x86\xc4\x95\x18\ \xb7\x79\xae\x34\x58\x59\x53\x4e\x9d\xdb\x93\xc4\x10\x40\x4b\x11\ \x93\x18\x77\x6e\x1d\x84\x16\xda\xcd\x6e\x0c\xd0\x55\xf0\x7a\x5e\ \x2e\xa4\x63\xa8\x00\x8e\xe6\x74\x3e\x3d\x58\x16\x5d\x35\x3f\x92\ \x90\xb1\xf7\x31\xbf\x06\xd3\xfd\x8f\x42\xfa\xd7\x17\x0a\xa5\x97\ \xdc\xff\x00\xeb\xf9\x9c\x77\xac\xd5\x05\x4a\x87\x24\xb5\xcc\xe7\ \xef\x2d\x6b\xc8\x8d\x89\x0f\x6b\xe0\x4c\x77\xf3\x90\xc2\xf3\xd5\ \x0f\x58\x15\xbe\x7f\x79\xd1\x83\x74\x8a\x06\xa0\x55\x1c\x53\xf3\ \x5b\xf8\xfd\xe2\x89\x62\x19\xcf\x2c\x61\x61\x68\xfa\xb1\x85\x6b\ \x7c\xc2\xe1\x45\xcf\xbc\x88\x0e\x2c\xa3\xdc\xcd\xdd\x61\xb4\xe4\ \x40\x0a\x77\xdc\x1e\xb9\xef\x08\xa7\xd2\xd2\x0d\xd8\x08\xb8\x87\ \x4d\x18\x37\x04\x08\x29\xfc\x4a\xa8\x01\x9b\xe3\xb4\xa9\x7a\x90\ \xbb\x4a\x69\x8f\x29\x98\xaa\x81\x80\x22\xc7\xd2\x50\xb4\xba\x8c\ \xcc\xda\x64\x62\xae\x31\x83\x07\x20\xc7\x81\x91\x79\xe1\x46\xc3\ \xc4\xac\x4a\xa1\xe0\x75\x6f\x69\x9d\x38\x52\xa3\x3d\xc8\x20\x28\ \xf9\x98\xf0\x21\x0a\xb7\x1e\x15\x2c\x27\x7e\xa4\xcc\xa9\x53\x78\ \xda\x00\x54\x1c\x28\x8a\x40\x01\x20\x03\x8e\xb2\x4a\x69\xb0\x5c\ \x1e\x7d\x21\x92\x8a\x2e\x79\x93\xf8\x8b\xd3\x9e\xf3\x55\x81\x05\ \x9b\xe4\x1c\x98\x62\x1a\xb5\x8f\x88\x57\x00\xe2\xf2\x6a\x95\x17\ \x79\xdc\x09\xcf\x79\x95\xb5\x05\xbd\x07\x12\x7a\xad\xe5\xbd\xe6\ \xa4\x16\x9f\xe2\x2e\x76\x8e\x3b\xc4\xbd\x4d\xc2\xe2\xd1\x6b\xd7\ \xda\x60\x05\x81\x0a\x09\x9a\x1a\xc2\xc5\x6f\xeb\x12\xdb\x8d\xad\ \x7b\xc6\xed\x03\x2c\x6e\x7b\x08\x24\xee\x04\x2e\x3f\xac\x50\x48\ \xda\x3c\xc7\x3d\x84\xf0\x72\x46\x7a\x71\x0d\x10\x11\x9c\x4d\x14\ \xe4\x18\x85\x86\x6f\x1b\x4c\x92\x79\x98\x94\x58\x8d\xd6\xc4\x75\ \x2b\x53\xe9\x73\x0a\x4f\xa0\x1a\xd7\x26\xc2\x58\xb5\x05\x80\x22\ \xfe\xbd\x64\x1b\x89\x60\x4c\x72\x30\x23\x06\x66\xc6\xa3\xa2\x54\ \x96\xa7\xf8\xd1\xbf\x68\x9f\x88\xd2\xdb\xa8\x6b\x65\x7a\x11\x2a\ \xd1\x23\x3e\xd7\x53\x95\x93\xb5\x50\xd5\x1b\xc4\x5c\x13\x31\x3d\ \x68\x14\x7f\xd2\x3d\xe2\xaa\x3d\x81\x94\x14\x29\x4c\x95\xc8\x27\ \x91\x24\xaa\xa7\x71\xb8\xc4\x60\xa9\x98\x96\x37\x96\xfc\x33\x75\ \x30\xd5\x88\xc2\xe1\x7d\x4c\x5e\x97\x49\x56\xb1\x00\x79\x54\x72\ \x4f\x48\xcd\x76\xa2\x95\x35\x1a\x7d\x3e\x55\x7f\x17\x73\xde\x6a\ \xdd\xea\x09\xfd\x1d\x6a\xb6\xb8\x63\xb9\x4f\x33\x9f\xac\x05\x08\ \x29\x6d\xa7\x82\x3a\xcc\x4a\xac\x1b\xcd\x90\x79\x86\x72\xb7\x56\ \x0d\x4c\xf2\xa4\x4a\x4c\x54\x81\x54\xe1\xa9\x9d\x8d\xe9\x35\xea\ \xb5\x45\x17\x55\x2d\xd7\x1c\xc8\xce\xe0\xd1\xa1\xee\xd7\x18\x61\ \x35\x8c\xeb\x49\x4b\xd8\xa9\x43\xea\x2f\x09\x37\x5e\xea\x15\xbd\ \x8c\x6a\x56\x5a\x96\x15\xe9\x82\x47\xe2\x10\x8a\xa0\x37\x5a\x65\ \x87\x42\x0c\xb5\x3c\xae\xc1\x7e\x42\xbf\xf9\x42\x5a\xb7\x3e\x5b\ \x93\xd3\x66\x20\x8a\xef\x7b\x0a\x63\xff\x00\xb6\x61\x7d\xa1\xed\ \x6d\xa0\x7f\xe1\x88\x15\x14\xd7\x51\x53\xfd\x4a\x42\xdd\xd8\xda\ \x37\xc0\xa4\x16\xcd\xa8\x07\xb8\x02\xf2\x55\xb1\x01\x9a\xa3\x2b\ \x1f\xcd\x99\x84\x9d\x9e\x56\x53\xea\x4d\xa6\x70\xaa\x46\xd2\xd2\ \xfc\x0c\x7f\xf2\x38\x8d\xfb\x66\xd2\x05\x1d\x8a\x3f\xda\xb3\x9f\ \x71\xcb\x92\xd8\xe9\xc4\xd5\x37\x3e\x45\x22\xc3\xb4\xbf\x2b\x56\ \xd4\xd5\x6a\x1b\x9a\xcc\x07\x5b\xb5\xa1\x51\xa8\xb5\x1c\x0b\xb3\ \x37\xa0\x83\xa2\xf8\x7d\x5a\xc0\xd7\xae\x4d\x3a\x3d\x5a\xd9\x3e\ \xd1\x8f\x5d\xa9\x93\x4f\x49\x41\xa9\xa5\xb2\xe6\xfb\x8c\x2e\x7c\ \x2b\x53\x6d\x1f\x35\x67\x00\x76\xbf\x9b\xf4\x10\xb5\x1a\xbd\x3d\ \x65\x0b\xe1\xef\x03\x8d\xd3\x8e\x43\x8b\x96\x46\x76\x84\xa6\xab\ \x53\xb1\x16\xe4\x7b\x4c\xfe\x4e\xba\x95\x16\x88\x5d\xcb\xa7\xa6\ \x40\x19\x04\xe6\x68\x34\x75\x5a\x77\xa7\x4c\x1a\x4f\x4c\xee\x17\ \x33\x93\x77\x24\x29\x04\xf7\x9d\x9d\x0e\x96\x9d\x26\x55\xa8\xec\ \x6a\xba\x65\x40\xc0\x06\x16\x62\x9d\xa4\xa8\xe6\x9d\x40\x5d\x6c\ \xc4\x5b\xeb\xda\x1e\xac\x1a\x88\xac\x45\x8a\x83\xfc\x4a\x3e\x3b\ \x4a\xf4\xa9\x37\x2e\xbd\x3b\xf1\x14\xed\xe2\xfc\x27\x72\x9b\x54\ \xa4\xc0\x93\xd7\x22\x52\xfd\x2e\x7a\x59\xdc\x23\x77\x11\x1a\x95\ \xdf\x5e\xaa\x1f\x99\x5d\xad\xea\x2f\x1c\x87\x73\xa5\x65\xb0\xc8\ \xdc\x3b\x5e\x16\xac\x03\xa8\xa8\xe3\x0e\xac\x47\xef\x37\x3a\xac\ \xa1\x29\xd5\x4c\xe9\x12\x29\x7c\x25\x49\xe2\xa5\x5f\xd8\x09\xce\ \x41\x9b\xa1\xc9\x37\xb1\x97\xfc\x51\xd5\x34\x7a\x4a\x64\x64\xa9\ \x63\x6f\x53\x1b\xdd\x82\x25\x42\xd4\x35\x17\x42\x78\xba\x91\x29\ \xd5\x69\x69\xea\x68\x1d\x46\x96\xdb\xff\x00\xee\x27\x51\x25\xd3\ \xd4\x0e\xbe\x11\xf2\x91\xc3\x7f\x48\xaa\x3a\x8a\xba\x3d\x4e\xe5\ \xb8\x20\xda\xc7\xac\xb2\xa4\xcd\x74\x27\x71\xcf\x68\x5a\x4d\x39\ \xd4\x6a\x29\xd1\x51\x96\x39\xf6\x9d\x4d\x55\x0a\x5f\x12\xa2\x75\ \x3a\x4b\x0a\xc3\xe7\xa6\x39\xf7\x8c\xff\x00\x0a\xe9\xed\x5e\xae\ \xaa\xa0\xb7\x87\xe5\x17\xef\x2b\xcb\xa5\x9d\x9d\xf1\xfa\xdf\x64\ \xd1\x26\x89\x05\xb1\x76\x02\x7c\xfd\x83\x50\x26\xdd\x65\xbf\x16\ \xd4\x8d\x46\xa1\xea\x13\x82\x4d\xbd\xba\x48\xc9\x02\x81\x17\x37\ \x26\x3c\x66\x45\xca\xed\x48\xc2\xf7\x16\x99\x51\x49\x7e\x3a\x46\ \x1c\xc7\x84\xbb\xa3\x74\xb5\xcf\xd2\x6d\x94\xac\xa3\xc5\x5a\x63\ \xa6\x0c\xda\xc2\xed\xb6\xfc\x1b\x9f\x78\xdd\x2d\x3d\xfa\x8d\xc7\ \xdc\xc0\x2a\xcc\xf6\xb1\x26\xfc\x49\x12\xaa\x2e\x33\x98\x48\x77\ \x1e\x23\x42\x2a\xb5\xaa\x13\xea\x04\xcb\x81\xe5\x45\xb0\xef\x20\ \x25\xa7\xf9\x88\x00\x7e\xb1\xa9\x82\x02\xad\x87\x73\x14\x39\xb6\ \x48\x8e\x54\x2c\x6c\x0f\xb0\x81\x36\x90\x3b\xb0\x6f\x2f\xd3\x25\ \x4a\x8c\x15\x14\x98\xba\x1a\x5a\x74\xc0\x3a\x82\x41\xe7\x60\xf9\ \xbf\xf5\x28\xf1\x8b\x0d\x8a\x02\x20\xfc\x2b\xfd\x7b\xcc\x5a\xd4\ \x38\x0a\x34\x2e\x6e\x2a\xd4\xe9\xf9\x47\xf7\x92\xd7\x66\xa8\x4b\ \xb1\xbb\x77\x30\xb2\xc4\x28\x5c\x99\xbe\x15\x40\x2f\xb0\xfb\x9c\ \x09\x92\x99\x94\x05\xbb\x60\x7e\xe6\x21\xdb\x7f\x95\x54\xda\x51\ \x50\x28\x6b\xd5\xaa\xb7\xec\xb9\x89\x2f\x4d\x72\x94\xaf\xff\x00\ \x91\xfe\x82\x6e\x02\x59\x80\x16\x5b\xde\x54\xb4\xcd\x7d\x3a\x2d\ \x21\xe6\x5e\x41\x89\x7a\xb5\x00\xdc\x81\x55\x7d\x14\x45\x33\xbb\ \x1f\x33\x13\xee\x63\xe8\x35\xa8\x54\x1f\x3a\xaa\xdb\xa9\x31\x2d\ \x4a\x91\x27\x75\x6f\xa0\x52\x60\xad\x42\xbf\x2b\x1b\xcd\x1a\x9a\ \xa3\xf1\x5f\xdc\x4b\xb4\x35\x5a\x42\xe4\x0b\x80\x3f\x14\x10\xa5\ \x89\xbb\x00\x2d\xc0\x9e\x5a\xee\x41\x27\x69\xff\x00\xeb\x09\x2a\ \xb5\xc5\x95\x7f\x49\x20\x9a\x20\x8c\x11\x7b\x4f\x53\xd2\x35\xb2\ \x40\xf7\x9e\x7a\x8f\x9c\xfe\x91\x7b\x98\xf2\xc7\xf5\x88\x53\xf6\ \x74\x18\x7a\xaa\x4f\x4b\x41\xa8\x15\x0d\x82\x12\x7b\x98\x80\x18\ \xf5\x85\xb8\xde\xc4\xc0\xb1\x99\xcf\x37\xb4\x3a\x67\x37\x81\x76\ \x53\x63\x98\xda\x6e\x30\x0a\x83\xf4\x88\x12\xf9\x88\x18\x10\xd0\ \x30\x36\xe8\x63\x29\x53\x46\x00\x85\x6b\xc7\x2d\x13\x83\xb5\x87\ \x6b\x89\x9b\x5a\xc7\x43\xe0\xcc\x5b\xc5\x07\xa2\x99\xcc\xa8\xd9\ \x6b\xf7\x9d\x4f\x85\x52\x74\x4a\xef\x6f\xc1\x61\x39\xba\x8d\x3d\ \x6d\xe6\xcb\xd6\x62\x7a\xd5\xf1\xea\x35\x5e\x9a\x9d\xac\x67\x9f\ \x58\xc1\x2e\x51\x6f\xde\xd2\x77\x15\x51\x72\xa7\x98\x8a\xb5\x2e\ \xa2\xf3\x78\xce\x9b\x57\x5d\x54\xdd\x2f\x65\xf4\x93\x3d\x53\xe8\ \x60\x54\x6c\xde\x2f\x71\x26\x6a\x46\x74\xd0\xec\xdc\x09\xe5\xac\ \xca\x79\x87\x44\x2f\x86\xc1\x8d\x98\xf1\x13\x50\x10\xd6\x92\x7a\ \x9d\x46\xe0\x90\x7d\xe3\x91\x50\xfc\xd4\xca\x9e\xe2\x0d\x3a\x24\ \xad\xe5\x14\x9f\xc2\xc0\x20\x8f\x59\x55\x04\xb4\xe8\xb7\x0f\xe6\ \xfd\x0c\x2f\x0a\xa2\x35\xd0\x5e\xdd\x44\x2a\x75\x34\x8c\x3e\xf2\ \x91\x07\xfd\xa6\x55\x4e\xa7\xc3\xd1\x6f\x7a\xd7\xf4\x02\x66\xdb\ \x1a\x48\x37\xb1\x00\xd8\xde\x7a\x8d\x12\xd5\x2c\x15\xac\x0f\xeb\ \x2f\xff\x00\xaa\x68\xa9\xdc\x26\x8c\xd5\xed\xe2\x1b\x7f\x13\xda\ \x9f\x8b\x56\xa7\x4d\x3c\x0a\x74\xe8\x96\x17\xf2\xac\x36\xff\x00\ \x16\x42\x29\xfc\x2f\x5b\x5c\x97\xf0\xc8\x04\xda\xe7\x11\x9f\xf4\ \xca\x14\x81\xfb\x66\xb6\x8a\x11\xd0\x35\xcf\xed\x24\xab\x5f\x57\ \x5e\xe6\xa5\x6a\x87\xaf\x99\xb1\x27\x34\xd4\xb5\x8b\x16\x27\xb4\ \x72\xff\x00\x57\x4e\xa8\x6f\x83\x51\xda\x01\xa9\x54\xf5\x21\x6d\ \x2d\x3a\x8d\x26\x97\x4e\x2b\xb6\x97\x61\x23\xee\xe9\xb1\xb9\x3e\ \xb6\x9c\xda\x5a\x6a\x7a\x0a\x43\x53\xa8\x4d\xf5\x88\xbd\x2a\x47\ \xa7\xa9\x90\xd7\xad\x5a\xbb\xb5\x4a\xcf\x73\x7e\xf3\x3f\x9d\x3b\ \x8e\xe8\xf8\xf3\x94\xb1\xd3\xd2\x1d\x01\x6e\x82\x32\x97\xc5\x2a\ \xd4\xbf\x86\x34\xc6\xc2\xe6\xe2\x7c\xb9\xbe\xe0\x37\x2d\xa3\x03\ \x3a\x9f\x29\xfa\x89\x7f\xc7\x17\xea\xbe\xb2\x9e\xaa\xab\x26\xf7\ \xd3\x52\x70\x78\x21\xad\xfd\x26\x0d\x4e\x98\x3e\xda\xba\x54\x5e\ \xbe\x56\x92\x7c\x3f\x59\x46\xb6\x89\x52\xa8\xd9\x54\x62\xfc\x03\ \xeb\x0a\xb5\x1a\xea\xd7\xa4\xeb\x50\x0c\xdb\xad\xa7\x3c\xed\xad\ \x58\x4e\x88\x91\xfe\x58\x37\x62\x07\x1e\xf0\x75\x3f\x12\xda\xcf\ \x4e\x8d\x0d\xae\x2f\xe6\x23\xb4\x9e\x93\x32\xa7\x88\xab\x62\x30\ \x7a\x5a\x43\xf1\x5d\x6f\x88\x01\xa1\xe5\x16\xb3\xfa\xc6\x71\xda\ \xad\xc5\x95\xf5\x25\xc5\x3a\xee\x77\xad\x41\xb1\xbf\xda\xc3\x98\ \xcd\x00\x35\xde\xb5\x16\x5b\x78\xb4\x88\x1e\xe0\xe2\x73\xfe\x10\ \x4e\xa7\x4d\xa8\xd2\x90\x06\x43\x21\xff\x00\x74\xaf\xe1\x95\xd9\ \x6a\x52\xa9\xb4\x87\xa6\xe1\x58\x77\xbf\xff\x00\x91\xb3\x3a\x12\ \xb9\x65\x8d\x36\x5b\x1c\xf5\x1d\xf3\x28\xd7\x2e\xcd\x5b\xb8\x20\ \x82\x6f\x03\xe3\xc8\x28\xeb\x6b\x6d\x18\x5a\xac\x00\xfa\xc3\xd5\ \x55\x0e\x56\xa8\xcd\xd5\x6e\x3d\xc7\xff\x00\xb3\x5f\xe8\x4c\xf4\ \x80\x75\xa8\x96\xd8\x7f\x69\xbf\xe2\x12\x57\x57\x4e\x9d\xed\xb2\ \x92\x8f\xda\x33\x4e\x40\x71\x6b\x32\x1e\x91\x9f\xe2\x2a\x05\xb5\ \x8e\xe0\x8b\x58\x0f\xda\x52\xf6\xbe\x38\xf4\xea\x5b\x70\x3c\xda\ \x31\x6a\x25\x61\xb6\xb9\xb3\x7e\x16\x89\x28\xcb\xba\xe2\x2a\xa7\ \x94\x0f\xeb\x3a\x63\x07\xa5\x4d\x46\x87\x50\x1d\x58\xab\x0e\x08\ \xe0\x89\xf5\xbe\x77\xf8\x46\xe4\x5a\x74\xeb\x56\x4b\x91\xc0\xdc\ \xc0\x7e\xf6\x9f\x21\xa5\xae\xbb\x92\x85\x61\xbd\x09\x1c\xf4\x9f\ \x43\xfe\x23\x6a\x87\x4f\xa5\x14\x01\xb2\x8d\xe4\x2f\x2b\x7e\x05\ \xbd\xad\x39\xf3\x9d\xc6\xb8\xdc\x8e\x16\xb6\x9b\x52\xa9\xb1\xd4\ \xab\x0c\x10\x60\x85\x1f\x66\x6b\xe7\x22\x5b\x5f\xe2\x2b\x55\x85\ \x3d\x6d\x10\xe0\x63\x70\xc3\x09\x9f\x65\xa3\x55\x09\xd3\x56\x0c\ \x18\x7c\xad\x83\x37\xbf\xd1\x9f\xc7\x32\xd7\xe3\xe9\x2b\xa6\x2d\ \xa7\x2d\xfe\xdb\x1f\xd6\x31\x7e\x1b\xab\xb9\x1e\x1f\xb1\xbc\x23\ \xa7\xab\x4b\x4b\x55\x6a\x27\x04\x70\x65\xaa\x44\xa4\x1a\x74\x55\ \x94\xd8\xb3\x5e\xfe\x82\x0b\x56\xaa\xc3\x6e\xec\x1e\x6d\x8b\xc6\ \x56\x04\x78\x63\xfd\xa3\x06\x31\x28\xd8\x5d\x46\x7d\x7a\x48\x25\ \x5a\x63\x77\x9a\x0d\x52\x00\x5b\x09\x6f\xd9\x6a\xd4\x1e\x4a\x64\ \x0f\xcc\xf8\x1f\xbc\xe9\x51\xf8\x32\xe9\xb4\xeb\xaa\xd5\xde\xb1\ \x71\x75\x14\xd4\x95\x1e\xe6\x57\x94\x87\x2b\x95\xa3\xd2\xb5\x54\ \xf1\x5c\x8a\x74\xff\x00\x3b\x75\xf6\xef\x2f\xa5\x4d\x95\x7f\xca\ \xd2\x65\x5e\xb5\x5f\x04\xfb\x76\x8c\x3a\x95\x4a\x85\x97\x46\x5c\ \x81\x61\xbe\xe2\xdf\xa7\x1f\x48\x93\xa9\xd4\xb3\x5c\x01\x4e\xff\ \x00\x97\xfb\x99\x9e\xe9\xea\x28\xa1\xa4\x46\x24\xbd\x66\xb7\x5d\ \x88\x4f\xee\x6c\x25\x28\x9a\x6a\x43\xe4\x07\xd5\xea\x0f\xe0\x4e\ \x76\xfa\xd5\x33\x55\x99\xcf\xab\x5e\x35\x0e\x00\xb5\xa6\x6c\x31\ \x6f\xda\x68\x2d\xf6\xb1\x18\xe1\x12\xdf\xda\x0d\x13\x46\xb5\x4f\ \x2d\x03\xea\x4b\x19\x23\x2f\x9b\xd6\x75\x7e\x09\x4d\x48\x62\x72\ \x57\x30\xbd\x43\x3b\x73\xb5\xaf\x4e\x86\xa0\xd3\xfb\x35\x30\x47\ \x52\xc4\x9f\xe6\x23\xed\x34\x8e\x02\xec\xf6\x02\xd0\xbe\x20\xcd\ \x53\x52\xec\xc2\xd9\xb4\x85\x97\x69\xb8\x17\x9b\x93\x59\xb5\x56\ \xe2\xc4\x8a\x75\x03\x7a\x5e\xd2\x5a\xb5\xab\xa1\x20\xbb\xaf\xa1\ \x82\x2f\x7c\x73\x1a\x6a\x06\xa5\xb6\xa0\xdc\xa3\x1e\xa2\x39\x89\ \x3b\x57\xa8\xc6\xd7\x46\xf7\x51\x37\x78\xb8\x2d\x4a\x9f\xe9\x69\ \xea\xb4\x36\xae\xe4\x3b\x90\xf5\x10\x6c\x7b\xe2\x21\x42\xb6\x90\ \x53\x26\xa6\x9d\x8d\xcf\x2b\x52\xdf\xc8\x8d\x46\xf8\x71\xb7\xdc\ \xea\x41\xe9\xe7\x1f\xda\x4b\x53\xfd\x3a\x61\x86\x0e\x63\x68\x85\ \x15\x17\x3c\x19\x62\x15\x4f\xb0\x80\x71\x5f\xea\xc3\xfb\x45\x28\ \xd0\x13\x7f\xbf\xfa\x01\x37\xe2\x08\x16\xab\xed\x18\x26\xe2\x21\ \x14\x81\x91\x28\x96\x21\xf8\x70\xfc\x1a\x8f\xd4\x4d\x73\xf0\xee\ \x94\xeb\x1f\xa8\x92\x10\x07\x1c\xcc\xfa\x4b\x16\xa9\x35\x34\x83\ \x2b\x41\xcf\xfe\x4d\x09\x75\x2a\xb9\xa7\xa7\xa6\x07\x7b\x5e\x4b\ \x68\x4b\x71\x83\xc4\xb1\x6a\xfa\x7a\xca\xa4\x00\x08\x5f\x61\x3c\ \x6b\xd5\x26\xc5\xda\xd7\xef\x24\x5b\x10\x19\x2f\x8e\x93\x69\xb8\ \x2e\x2e\x7e\x90\xfc\xc3\xae\xdf\xc3\xcb\x7f\xd3\x75\x35\x2f\xc5\ \xa7\x33\x56\xc7\x7e\x18\xe4\x4e\x96\x9a\xcb\xf0\x2d\x4b\xde\xc3\ \x70\x9c\x8a\xcd\xbc\xd8\x1e\x00\x98\xe3\xe9\xbe\x16\xd5\xaa\x04\ \xc3\x9f\xd6\x26\xa5\x5a\x8c\xa3\x86\x37\xed\x18\xc1\x48\x00\x70\ \x73\x0e\x8d\x55\xa1\x40\x8f\x0b\xf1\x58\x90\x73\x3a\x32\x99\xc1\ \x03\xce\xab\x7e\xd6\x99\xb0\x58\x12\x96\xfa\xc7\x1d\x45\x12\x4e\ \xf4\x60\x3a\x5b\x33\x05\x5a\x06\xe4\x60\xfa\x89\x02\x8e\xdf\xca\ \x62\x6a\x5a\xf8\x32\x8f\x2b\x0b\x5c\x40\xa9\x44\xd8\x91\x9b\x45\ \x1e\xac\x54\x58\x19\xa3\x63\x72\xb9\xee\x0c\x16\xc1\x83\x92\x64\ \x4d\x4a\x6a\xc7\x0c\x47\xb8\x85\xe1\xa5\xff\x00\xd4\x59\xb4\xa9\ \x54\xf0\xcf\xe1\x07\xa9\xc4\xf1\xd8\x08\xdd\x53\x75\xba\x08\x22\ \xfc\x3a\x5b\xf2\x4b\x7e\xd2\xbd\x53\x5d\xd4\x00\x00\x0a\x07\x1e\ \x92\x62\xe9\x7c\x0f\xd7\x31\xce\xde\x35\x30\xc0\xdd\x94\x5a\xc6\ \x15\x15\xe1\x96\x24\xdc\x9e\xd3\xa1\xa7\xa6\x9a\x1d\x3f\xda\x6b\ \x28\x6a\xa7\x34\xe9\xff\x00\x53\x17\xa3\x41\x41\x3e\xd5\xa8\xc8\ \x07\xc8\x9f\x98\xc5\xea\xab\x3e\xa5\xda\xa3\x9c\x9f\xda\x17\xbe\ \x8f\x88\xf5\x55\x2a\x57\xac\xd5\x6a\xbd\xd8\x9c\x98\x86\xb7\x56\ \x16\x85\x58\xde\xc0\xf1\x12\xd9\xc4\xdc\x8c\xd6\xda\xe7\x0c\x23\ \xb4\xd4\xea\xbb\xaa\xd3\x17\x24\xe2\x2e\x9d\x32\x5b\x22\xfe\x82\ \x74\x74\x48\x52\xb2\xb9\x21\x76\x82\x6c\x3d\xa1\x6a\x90\xdf\x01\ \x95\x76\xd4\x2a\x48\xfc\xa6\x5b\xa0\xd5\x94\xb5\x13\x44\x95\xe2\ \xe3\x91\xeb\x39\xca\xa0\x9d\xc8\xa4\x9b\xf2\x67\x43\xc5\xfb\x35\ \x1f\x16\xab\x03\x51\x6d\xb5\x07\x33\x9d\x6e\x1f\xf1\x5f\x14\xd3\ \x1a\x6a\x24\x03\x7f\x3b\x13\x6b\x89\xce\x4d\x13\x28\xb3\xd4\xa4\ \x14\x8e\x0b\x44\xb3\xbd\x5d\xec\xcc\x6e\xd7\xcd\xfb\xc1\x24\x05\ \xa7\x7b\xde\xdc\xfb\x46\x4c\x98\xad\x74\x34\x3a\x5a\x74\x2a\x17\ \xfb\x5a\x05\x20\x03\xb7\x3d\x71\x3b\x7a\x43\xa5\x02\xad\x7d\x38\ \x0d\x54\xe4\x92\x30\x0d\xb9\xfd\x67\xcc\x53\xba\x12\xa0\x60\x9c\ \x4b\x2b\x55\x14\x69\xa5\x6b\xd8\x93\x70\x2f\xd4\x73\xf4\x99\xe5\ \x34\xcb\x89\xb5\xf7\xaa\x8e\xec\x6e\xcc\x03\xfd\x7a\xc5\xa9\x05\ \x68\x11\xf8\x94\xaf\xd4\x1c\x7f\x36\x94\xd5\x55\xbe\xf5\xf9\x41\ \xb7\xff\x00\x56\xe2\x47\x51\x48\xd3\xd4\x41\x86\xa4\xfb\x87\xb7\ \x07\xfa\x4d\x40\xf5\x37\xf0\xb5\x00\x26\x51\xbc\xc0\x77\xf6\x9d\ \x7f\x89\x9f\xf3\x65\xc7\x0e\x8a\x7f\x6e\xd3\x87\x52\xa6\xd0\x2a\ \x15\x06\x9b\x1c\x8b\xfc\xad\xd6\xd3\xa7\xae\xd4\x78\x9a\x0d\x2e\ \xad\x46\x02\xf8\x6d\x63\xc5\xb8\x95\x9d\xa9\x49\x6a\x14\xea\x12\ \x11\xb6\x9b\x70\x67\x3b\x53\xa2\x75\x72\x1d\x0d\xbb\x81\x79\xd3\ \x73\x4e\xaa\x25\x45\x19\x38\x22\xf6\xfd\x24\xef\x55\xc3\x91\x4e\ \xa9\x16\xc9\x53\x19\x68\xb1\xce\xd3\xe9\x9a\xa6\xaa\x92\x29\xbe\ \xe6\x02\x75\xbf\xc4\x4d\x53\xfe\xa7\x55\xd3\x72\xec\x70\xa2\xdd\ \xac\x04\x4d\x1d\x53\xd0\xd4\xd3\xa9\x51\x29\xb5\x98\x1b\x95\xbf\ \x1e\xb3\xb9\xf1\x23\x4c\x6b\xaa\x25\x81\x0e\xbe\x20\x36\xb8\x3f\ \xf2\xd0\xe5\x7b\x32\x74\xf9\xd6\xaa\x95\xad\xf6\x8d\x30\x6b\x8b\ \xee\x4c\x19\xb4\x68\xd0\x15\x03\xd1\xd4\x94\xb1\xe2\xa2\x91\xfc\ \x4e\xba\x36\x9e\xa5\x35\x76\xd1\xd3\x20\x9b\x5b\x22\xf1\x1f\x1d\ \xa5\xa3\xa0\x29\x0a\x29\xe1\xd6\xb5\xdd\x03\x5c\x2f\x68\xce\x5d\ \xe0\xcf\xa5\x8a\x1a\xe5\xc5\x1a\xa9\x51\x4f\xca\x05\x41\xfd\x4c\ \x05\x5d\x42\xd6\xa9\xa7\xd4\xa9\x42\x56\xfb\x67\x91\xfc\x34\xb3\ \xed\x35\x6d\x74\x07\x20\x7b\xc9\x92\xab\xb6\xa7\xc4\xa8\xe4\xb7\ \x52\x65\xda\x38\xa5\x14\xac\x1e\xb8\x38\x51\x60\x23\x8e\xae\x9a\ \xd3\xdb\x49\x52\x99\xbd\xf7\x01\x76\xfd\xe2\xb5\xc8\xa7\x65\x5b\ \x8c\x8b\x7e\x91\x5a\x6a\x41\xea\x79\xc8\x14\xc0\xdc\x4f\xa4\xb2\ \x62\x31\xc2\x90\x35\x15\xea\x3b\xdf\xe5\x0c\x72\xdf\xfa\x93\x9d\ \x46\xa0\xbb\x1a\x75\xdd\x7d\x15\xac\x2d\x17\xab\xa8\x6b\x55\x27\ \x80\x30\xa0\x70\x04\x5a\x9b\x63\x9f\xac\xd4\x83\x55\xd3\xd5\x6a\ \x85\x97\xed\x35\x71\xc5\xd8\xc6\x2e\xa7\x52\x72\x35\x0e\x4f\x63\ \x25\xa4\xc6\xe2\xc4\x0b\x77\x95\x53\xce\x08\x10\xb2\x15\x34\x75\ \x3a\x93\xcb\x06\xb6\x32\x01\x8f\x15\x9e\xd6\x64\xa6\x7d\xd0\x49\ \xd1\x06\xdc\x7e\x92\x84\x51\xb6\xf7\x17\x98\xa6\x34\xd4\x53\x96\ \xd3\xa1\xef\x6b\x89\x57\xc2\xeb\x51\x4a\xa0\x04\x65\xbf\xfb\xae\ \x24\x7b\x7e\xb3\x57\xca\x43\x2d\xaf\x0b\x34\x8b\xe2\x5a\x75\x4a\ \xec\x37\x81\x73\x7c\x89\x0b\xd1\x75\x05\xad\x71\xdc\x66\x76\x35\ \xaa\x35\x5a\x25\xac\x07\xde\x53\xc3\x5b\xb4\xe4\x97\x65\x37\x42\ \x41\xeb\x1e\x35\x54\x8c\x97\x38\xc4\x1b\x6d\x6f\xf6\x9c\x19\x43\ \x3a\xb1\xf3\x0d\xa7\xb8\x8a\xac\x85\x73\xc8\x3d\x44\xdc\xac\x05\ \x77\x52\x7c\x64\x1f\xdc\x4f\x3d\x35\x23\xc4\xa6\x3c\xbd\x47\x69\ \xaa\x37\xa5\xba\x8e\x20\xd3\x72\x86\xe3\xac\x53\xda\x85\x1b\x94\ \x7e\x55\x1d\x66\x97\xc8\xb0\xb1\xe6\xd1\x9a\x94\xbb\x07\x51\x82\ \x05\xc7\x68\xa5\xdc\x09\xcd\xba\x4a\x23\xb5\x20\x54\xa5\xb8\x9e\ \x01\x91\xa5\xed\x6b\x99\x52\xe7\x4f\x51\x7f\x12\xc9\x10\x62\x51\ \x18\xac\x7a\xe6\x35\x54\x15\xb9\x58\xa5\x19\xcc\xa1\x6d\x6f\x49\ \x54\x1f\x0d\x2f\x05\xb6\x64\x01\x98\x4e\xc0\x45\x6e\x17\x26\x49\ \x82\xca\xc0\xa9\x30\xf0\x4e\xf4\xc6\x72\x22\xef\xeb\x78\x54\x81\ \xb8\x63\x85\xeb\x24\xed\x23\x01\xfe\x1a\xab\x73\xcd\x41\xfd\x27\ \x19\x98\x5c\xfa\xf4\x9d\x1a\xe7\xff\x00\x82\x00\x0b\x06\xab\x70\ \x3d\x27\x26\xc4\x9d\xd6\x99\xe3\x3d\x34\x42\xe1\x07\xbc\x63\x25\ \xe8\x31\x3d\x48\x30\x0f\x20\x46\x33\x0f\x08\x8b\x75\x9a\x09\x8a\ \x40\xb7\xa4\x6f\x59\xa5\x62\x30\xa0\x2e\x63\x40\x36\x9e\x0b\x98\ \xf5\x41\xb7\x3c\xc8\xba\x55\x7e\x15\xe1\x53\xf1\x2a\xb8\x03\xb0\ \xe6\x44\xdb\x17\xfd\x3d\xaa\x3b\xf2\x63\xc5\x4a\xd5\xc1\x17\x3b\ \x78\xdc\x78\x92\x57\x75\x46\x2a\xa0\x39\x1d\x4f\xf6\x98\x9b\xf4\ \xd6\x6e\x3b\xae\xcf\xba\x2d\x91\xaf\x70\x2e\x3d\x26\x78\xce\x70\ \x6e\x3d\x85\xa6\x87\x7b\xe2\xe6\x68\x16\xc0\x92\x31\x2d\xd1\x52\ \x37\xf1\x2a\x02\x11\x79\xf5\x85\xa5\xd2\xbd\x66\x04\x10\xa7\xb4\ \x7e\xa7\x72\x11\x4c\x92\x40\xe9\x33\x6f\xc3\x22\x7a\xd5\x8e\xa1\ \xfc\xeb\xb4\x0f\x94\x76\x98\xb4\x6a\x03\x70\x09\x11\xa0\x39\x37\ \xb8\x55\xee\x61\x8a\x81\x07\x94\x93\xea\x65\xab\x11\xbe\x98\xb3\ \x92\x70\x3a\xfa\x41\xb6\x9a\x91\xf2\xa8\xa8\xdd\x49\xe2\x50\xf5\ \x55\xfc\x8f\x80\x64\xe6\x88\x53\x75\xf3\x00\x63\x3f\xd0\x3a\x75\ \x18\x9b\x04\x50\x3b\x2c\xa1\x15\x42\x33\x13\xb7\xa4\x9f\x6b\x5c\ \x58\xed\xf4\x86\x9e\x53\x66\xb9\xb7\xef\x0a\x4e\xa4\xc5\x48\xda\ \x36\x91\xc4\x46\xa4\x35\x5a\x9e\x66\xc0\xe6\x55\x46\xfb\x19\xc8\ \xf6\x88\xa8\x1c\x0b\x6d\xf7\xf5\x84\xf5\x02\x90\x02\xc2\xfe\x90\ \xd9\x41\x41\xe8\x4d\xa0\x2d\xc9\xb6\xdc\xdf\x12\xdf\xb2\x55\x28\ \x2c\x00\x24\x71\x1b\x54\x4e\x83\xee\xc7\x5b\x75\x8d\xac\xc2\xa5\ \x91\xb0\x07\x18\x8a\x0a\xc8\x76\xba\xd8\x8e\x90\x99\xe9\x2b\x10\ \x72\xdd\x20\x55\x69\x69\x33\xd1\x08\x3c\xc3\x69\x42\x7d\x3a\x1f\ \xa4\x88\xdb\xc4\x05\xc8\xcf\x95\xff\x00\x83\x1d\xa7\xd5\x35\x0a\ \xaa\xd4\xc0\x00\xf4\xef\x27\xd5\x3d\xdd\xf6\xad\x83\x1b\x89\x4f\ \x55\x2f\x65\x0a\x3b\xa8\xd4\x7e\x7c\xae\x2d\x7b\xf6\x22\x57\xf0\ \xf5\xa7\xe1\x56\xf8\x79\xf3\xef\x1b\xe9\x93\xc1\x23\xb4\xe7\x57\ \x53\x5a\x96\xe1\x97\x53\x63\x6e\xbd\x8c\xf6\x8b\x51\xf6\x7a\x89\ \xe2\x1c\xa3\x5d\x6d\xc8\x9a\xb3\xa1\xbd\xb7\xc4\xa9\x51\xb6\xde\ \xc1\x71\xd8\x2c\x36\xf3\x0d\xa8\xc1\xd8\x2d\xaf\xde\x37\xe3\x54\ \x7e\xf1\x6b\x52\x3f\x73\x5f\xce\x2d\xc5\xfa\xc8\xd5\xd6\x90\xf2\ \xe5\xe5\x3b\x83\xc3\x45\x3f\xbb\x1b\xae\x02\x9b\xe7\xa9\x9d\x9d\ \x7b\x87\xd2\x68\xab\xde\xf7\x4d\xac\x3d\xa7\x09\xaa\xee\xb3\x31\ \xb9\xe6\xd3\xb3\xa2\x74\xab\xf0\x0a\x8d\x50\x16\xf0\x6a\x6f\x17\ \xeb\x7e\x9e\xd0\xe5\xf2\x98\x1a\xfa\x93\xa7\x0b\x58\x0f\xbc\x71\ \xe4\x1f\x97\xd6\x41\x72\x0b\x6a\x2a\xf9\xbf\x2d\xfa\x98\x02\xa3\ \xd7\x66\x15\x0d\xd9\xcd\xc1\x3d\x0c\x73\x80\x54\x52\xe0\xa8\xc7\ \xbc\xa4\xc4\x92\xe5\xdf\x79\x27\x75\xf9\x8d\x71\xe2\xa7\x88\xb8\ \x61\xf3\x01\xfc\xcc\xda\x43\x01\xde\x36\x98\xd8\x77\x0f\xd3\xfa\ \x4d\x50\xa7\x35\x74\x23\x9f\x2e\x62\x2a\x59\x34\x66\xd6\xdd\x50\ \xdb\xe8\x25\x7a\x6d\x83\x72\x8b\x94\xa8\x2c\x2d\xf8\x4c\x97\x5e\ \x36\x8a\x54\xec\x6e\x16\xff\x00\xbc\xcc\xf7\x0b\x9c\x41\x53\x83\ \x36\xd7\x1b\xad\x6b\x47\x81\x65\x69\xbb\x76\xd3\x18\xb5\xf9\x9b\ \x18\x4d\x30\x6f\x9e\x25\xb4\x14\x6d\xe6\x22\x90\x52\x7a\xdc\x4a\ \x11\x80\xe9\x33\x54\x53\x4e\xdd\x31\x1c\x8c\x0e\x36\xde\xdd\x64\ \xc9\x53\xa7\xe9\x08\x54\xb1\x98\x68\xe2\x73\x8c\x4f\x02\x49\xce\ \x62\xf7\xdf\xa9\xbc\xf2\xb8\xda\x4d\xfd\x24\x75\x67\xc3\xeb\xaa\ \x57\xf0\xdc\xfd\xdb\xe0\xde\x47\xf1\x0a\x27\x4d\xa8\x7a\x47\x20\ \x64\x7a\x88\xa7\x39\xc4\xae\xb9\xfb\x67\xc3\x45\x4e\x6a\xd0\xe7\ \xd4\x43\x32\xea\xf5\xca\xac\x46\xde\xf1\x4b\x55\x97\xd4\x1e\x41\ \xeb\x0c\x82\x41\x07\x9e\x91\x6c\x3c\xbe\xa2\x75\x60\xe4\x0a\x4d\ \xd0\x9b\xf6\x9e\x64\x05\x83\x01\xef\x13\x4c\xdb\x23\x99\x52\x30\ \x66\xb3\x73\xd6\x17\xa4\x33\xe5\x60\xd6\xc1\x5c\xc0\xac\x80\x58\ \xad\xb6\x9e\xf1\xf5\x05\xa8\x02\x7f\x09\xfd\xa4\x81\xac\xd9\xca\ \xb7\x30\x86\x8a\x98\x01\x81\x27\xe6\x16\x92\xf0\x48\x94\xd4\xf2\ \xb2\x8b\x8b\x0b\x10\x62\x2b\x62\xb3\x8f\x59\xa8\x1e\x5e\x91\x81\ \xed\x88\x08\x31\x08\xa9\xc9\xb4\x93\x1c\x96\xe9\x68\x07\xa8\x84\ \x39\x9a\xaa\x59\xad\xd4\xe2\x29\x94\xa9\x97\x6c\xe0\x0e\x61\x39\ \x0c\xc1\x54\x59\x47\x02\x1d\x45\xda\x05\x35\xfa\x9e\xe6\x0a\x21\ \xdd\x91\x04\xe8\xea\x80\xff\x00\xa4\x69\xd4\x77\xfe\xa6\x72\x88\ \x39\x02\x76\x2a\x53\xdf\xf0\xca\x37\x36\x00\xff\x00\x79\x1b\x53\ \x00\x12\xa6\xe2\x67\x8d\xc3\x62\x36\xb9\x00\x01\x35\x50\x94\xb7\ \xac\x68\x50\x5a\xd0\xac\x14\x58\x5a\xd3\x5a\x08\x14\x89\x36\xb8\ \xbf\xbc\x67\x80\xfd\xc4\x6e\x01\xb8\x17\x8c\xa7\x51\xea\x79\x43\ \x59\x7b\x0e\x21\x6d\x24\x26\x9d\x89\x17\x36\x95\x52\xd2\xb5\x43\ \xb5\x58\x5f\xda\x12\x84\xfc\x22\xde\xa6\x17\x8e\xe9\x7d\x87\x60\ \xee\x04\xcd\xb4\x95\x42\xa1\xa8\xf5\x3c\x32\x02\xaa\x1d\xa2\x40\ \x43\x96\xc8\xcc\xdd\x3d\x4f\x0a\xb0\x22\xe3\xbc\xa6\xb8\xf1\x06\ \x00\x43\xe9\xd6\x6b\xca\x11\xe4\x1e\x04\x75\x2d\xa0\x5c\xe0\x7b\ \xc5\x3b\x3a\x9b\x11\x73\xea\x20\x96\x63\x92\x78\xe9\x68\x85\xcb\ \xaa\xdb\xfe\x9d\xc0\xeb\x18\xae\x18\x07\x7b\xed\xfe\x64\x74\xd6\ \xd6\x2c\x05\xcf\x4e\xc3\xb9\x9e\x7a\xf7\xab\xb7\xf0\x4c\xe1\xd5\ \x6f\x50\x3f\x00\x01\xda\x2a\xa3\x13\x27\x7a\xbb\x7c\xa3\x27\xbc\ \xc5\xaa\xd7\xe7\xe9\x19\x16\x8a\xa2\x9b\x8b\x98\x6f\x50\x25\x82\ \x8b\x93\xc9\xea\x27\xbc\xb9\x37\xf3\x73\x13\x7b\xab\x13\x9e\xb7\ \x88\x3b\xc4\x07\x2f\xf3\x77\x9e\x5c\xb8\x04\x9e\x6c\x3d\x64\xd7\ \x27\xa4\x66\x90\x95\xac\xa6\xf8\xbe\x6f\x2c\x4b\xaa\x56\xd8\x82\ \x9d\x30\x40\xbd\xcf\xac\x45\x57\xdd\x92\x4f\xeb\x32\xab\xab\x33\ \x2a\x9b\x10\x6d\xef\x10\x77\x0e\x6e\x3d\xe1\x21\x57\xf0\xf7\x08\ \xef\x55\xb3\xe1\xa1\x61\xef\xd2\x7a\x9d\x77\x7b\xb3\x16\xb9\xea\ \x4c\x4e\x98\xed\xa7\x5c\x8e\xa9\xc7\xb1\x12\x77\xae\x58\x80\x4e\ \x3b\x09\x60\xd5\xb5\x2b\xbd\x45\xb3\x35\xca\x8b\x66\x25\xaa\x6e\ \xf3\x03\x73\xd6\x25\x9c\x97\x0f\xf4\x22\x10\x6d\xb9\x8e\x25\x6e\ \xaa\x55\x7c\x3b\xee\xda\x0d\xbb\xcc\x55\x0c\x36\xb9\xb9\x27\x11\ \x0d\x51\x8d\x15\x65\xe1\x7c\xa7\xdb\xa4\x05\x26\xe0\xee\xb1\x86\ \x2d\x34\x87\x47\x20\x27\x90\x8b\x30\x12\x7a\xda\x72\x1c\x5d\x85\ \xfa\x11\xd6\x3d\xea\x92\x4f\xaf\x30\x43\x78\xa3\xc2\xc6\xf1\xf2\ \x98\xa5\x3a\x0a\xad\x56\x8b\x68\x2b\x2e\x0f\xfa\x44\xfe\x69\x05\ \x4a\x2d\x4d\x89\xce\x0d\x8a\xf5\xbc\x63\xb9\x50\x01\xc0\x5f\xd4\ \x18\xfd\x60\xfb\x45\x11\xaa\xa6\x6e\xdc\x54\x1e\xbd\xe5\xe5\x4e\ \x62\xef\x7a\x81\x47\x24\xda\x7d\x17\xc3\x6a\xa8\xad\xff\x00\x4b\ \x36\xda\xf4\x4a\xdc\xf5\x6e\xf3\x95\xa4\xa5\x67\xde\xcb\x62\x82\ \xfc\x46\x53\x15\x68\xea\x29\x57\xe4\xa9\x0d\x71\xef\x0e\x5d\xa9\ \xd3\x28\xa0\x5a\xbb\x5c\x10\x54\xe7\xe9\x1a\x58\x54\x06\xa0\x17\ \x61\xcd\xa5\x5f\x16\xa2\xa9\xac\x35\xd0\x79\x2a\xae\xf1\x6f\x59\ \x15\x26\x14\xce\x14\xdf\xf9\x96\xef\x66\xf4\x37\x50\xc3\x70\xbd\ \xfa\xcc\x42\x40\xb1\x1c\x42\xbd\x8d\xc1\xf2\x9e\x3d\x27\xb6\x9e\ \x57\x83\xcf\xa4\x91\xff\x00\x0f\xaa\x52\xb8\x04\x02\xad\xf3\x2c\ \x2f\x89\x04\xad\x59\x2b\x20\x21\x0a\xd8\x77\x16\x83\x40\x78\x34\ \x9a\xa3\x7c\xec\x2c\xa3\xfa\xc6\xe9\xc2\xd4\x46\x4c\x03\xc8\xf7\ \x99\xbe\xe9\xf8\x91\x90\x05\xb8\x31\x55\x45\x90\x1f\x58\xda\xd7\ \x50\x47\x26\x24\x5c\xd1\x62\x3a\x7a\xcd\x40\x58\xc1\xb8\xfd\xa3\ \xd0\xdc\x5b\x82\x3b\xc9\xee\x6f\xd6\x36\x8b\x02\x00\x8d\x06\xd8\ \xda\x1a\x1b\x8c\xf3\x3c\x06\xe1\x09\x54\x8e\x98\x98\x22\x17\xb5\ \xa6\x90\xa2\xd7\x98\xcf\x6e\xc3\xd6\x2f\x53\x7d\xc0\xdc\x0c\x4a\ \x42\x63\xba\x6d\xc6\x6d\x19\xf0\xfd\x6a\x69\xf5\x00\xb0\xba\x1c\ \x30\xf4\x91\xae\xd3\x62\x49\x3f\x48\x15\x0d\x3b\xda\xed\x88\xfe\ \x46\xab\xf8\x85\x3a\x74\x35\x05\x00\xf2\x9c\xa9\xee\x24\x95\x16\ \x9b\x36\x0d\xaf\x29\x2c\xba\x9f\x86\x90\x48\x2f\xa7\xfd\x4a\x99\ \xcf\x50\x2e\x00\x78\xc5\x4e\x14\xc8\x36\x0d\x71\xd2\x30\x21\x27\ \x83\x26\x4a\xbb\x58\xd8\xde\x55\x4f\x55\x75\xb3\x01\x2b\xa0\xc4\ \x6d\xc1\xa8\xb1\xc3\xe0\x7b\xc9\x19\x18\x55\xda\xc0\x80\x25\x0e\ \xc8\xc8\x7a\x58\xc0\xac\x1e\xa0\x1e\x7b\xac\x21\x25\xaa\x6f\x62\ \xbf\xa4\x0a\xe7\xcc\x8d\xdd\x7f\xf5\x32\xa2\x3a\x11\x71\x68\x75\ \xfc\xfa\x75\x7f\xca\xc4\x19\xa0\x2a\x37\xb5\xfa\x75\x8e\x04\x5a\ \x46\xaf\xd2\x39\x1f\xa1\x32\xb1\x1b\x81\x99\xb4\xc8\x15\x06\x22\ \x09\xb9\xbd\xed\x1a\x97\x16\xdd\xcc\x2a\x33\x53\x4c\xef\x36\xf7\ \xe2\x65\x31\x70\x01\xe6\x55\x59\x77\x22\x54\xee\x22\x45\xaf\xea\ \x21\xa5\x50\x27\xfe\x98\x01\xe8\xf1\x09\x60\x4d\xf8\xea\x25\x08\ \x37\xfc\x3e\xa5\xb0\x55\xaf\x69\x20\x36\x27\x33\x30\xb2\xaa\x78\ \x75\x6f\x6b\x88\xa6\xb9\xe3\x12\xa2\x43\xd2\x3f\x99\x78\x93\x95\ \x3d\x66\xa5\x14\x19\x2a\x01\xed\x2b\xd3\x22\xec\xfe\x64\xaa\x3a\ \x71\x2b\xd3\x9b\x15\xed\xd6\x55\x46\xd5\x0b\xb8\xdb\x0a\x38\x11\ \x42\xc5\xf6\x37\xc8\x32\xd1\xc5\x81\x73\x7e\x82\xf1\x1a\x8b\x26\ \x98\x5c\xd9\x9c\xe7\xda\x10\xb9\xe5\x7c\xd7\x8c\xde\xcf\x83\xfc\ \x73\x18\x11\x40\xc9\x04\x99\xa2\x9d\x81\x20\x19\xbd\x64\x92\xed\ \x7d\x8c\x37\x5b\xf6\x82\x6c\xa7\x19\x63\xd7\xa0\x8c\x74\x6b\x10\ \x05\x80\xeb\x3c\x82\x8a\x9f\x3d\x4c\x75\x02\x48\x6f\xe5\x05\x0e\ \x1c\x80\x3d\xe4\x75\x18\x82\x40\xc4\xb7\x51\x57\x4c\x54\x3a\x5d\ \x88\x16\x6f\x49\x13\xea\x94\xe1\x10\x03\xeb\x28\xa8\x4b\x31\xeb\ \x09\x5f\x60\xb9\xe7\xa0\x8b\x50\xef\x76\x20\xd8\x76\xeb\x0f\x66\ \xe5\xdc\xee\x03\x75\x1d\x62\x06\x6a\x96\x39\x98\x84\xee\xc1\xb5\ \xe2\xc8\x23\x0a\xb6\xf5\x33\xc0\x30\x39\x92\x30\x55\x50\x6d\x6f\ \xac\xf6\xe0\x5a\xf7\x8a\x70\x37\x11\xb8\x4f\x12\x8a\x2e\x5a\xf2\ \x47\xd6\x37\x22\xa0\xb6\x7b\x77\x9e\xf1\x89\x16\x7e\x3a\x45\xd2\ \xa8\x86\xea\x4e\x0f\xed\x3c\xce\x41\xb1\x37\x3e\xd2\x4a\x34\x96\ \x35\x36\xde\xe1\x94\xaf\xed\x23\x75\x20\xee\x63\x61\x18\x2a\x0a\ \x65\x59\x72\x46\x63\x35\x66\x99\x7c\x8b\x06\x1b\x94\xc9\x02\x9d\ \x65\x65\x29\xd6\x12\x31\xb6\xc0\x33\xd4\xc4\x25\x3d\xae\x1b\x22\ \x31\xd8\x11\x75\x36\x1d\x64\x86\x95\x16\x99\x2a\xd9\x0c\x2c\x6d\ \x05\xc9\x07\x69\xb5\xc1\xc5\xa2\xce\xdb\x5c\x9b\x1e\xd3\x54\x17\ \xb0\x04\x16\x1f\xc4\x90\x8b\xb3\x75\x9e\x56\xc8\xb3\x58\xf2\x20\ \x32\x15\x26\xec\x09\x1c\xe6\x62\x13\xba\xf7\x92\x53\x54\xf8\x97\ \x7f\xfb\x83\xe6\x1f\x9a\x7b\x45\x5f\x63\x91\x6c\x36\x18\x1e\xb1\ \x54\xf2\x70\xc0\x11\xc1\xbc\x71\xa5\xe2\x8d\xc9\x60\xc3\x91\x78\ \x27\x40\x2e\xd4\x23\x0c\xac\x70\x4f\x16\x83\xab\xd9\xb9\x3c\x35\ \x62\x08\xb5\xfb\x41\xa7\xff\x00\xf1\x69\xd1\xa9\xf8\x89\xb1\xbf\ \x06\x12\xab\x05\x2a\x41\x56\x06\xd6\x33\x2d\x2e\x54\x5a\xff\x00\ \x0a\x19\xbb\xd1\x36\x27\xd0\xce\x79\xa4\x2f\xf3\x28\x32\xff\x00\ \x85\xb0\x5a\xfe\x1b\x8b\x25\x41\xb5\xbb\x45\x6a\x28\x14\xa8\xf4\ \x9f\x95\x36\x13\x32\xe5\xc3\x53\x22\x30\x7d\xa5\x90\xa9\xe4\x5e\ \x52\x28\x78\x0c\x09\x2a\xd7\xe2\xfc\x45\xd3\xa7\xb5\x18\x9e\x40\ \xc4\x1a\x75\x0a\x5d\x58\x9d\xa7\xf6\x8a\x87\xbd\x2d\xcd\xbb\xc4\ \x53\xf5\xe2\x62\xd2\x08\xc1\x96\xa8\xba\x9b\xe2\x2c\x3e\xc7\x17\ \x01\x81\xe0\xf7\x99\x59\x69\xec\x2c\xb7\xf5\xb7\x49\x26\xd6\xa5\ \xbd\x8b\x12\x4f\xb4\x9c\xd3\x2a\x7f\xd3\x71\x1b\xa4\x5a\x42\x8b\ \x97\xf3\x5c\x80\xa6\xf6\x2b\x18\xcb\x75\x34\xdb\x0f\x6f\x2b\x5f\ \x0d\x1d\xc0\x86\xa9\x17\x3f\x73\xf5\x85\x41\x86\xeb\x6c\xb0\xf6\ \x81\x51\x9d\x6a\x6d\x6e\x9c\xcd\x5a\x96\xb7\x98\x83\xfa\xcd\x7c\ \x0a\xd5\x87\xe6\xfd\xa0\x33\x16\x3f\x34\x16\xaa\x42\x86\xef\x31\ \x6b\x86\xf9\x91\x09\xf6\x99\x90\xbd\x9e\xe2\x6d\x60\xc5\xc8\xf4\ \x86\x86\x9b\x5a\xe9\x63\xe8\x67\xb5\x06\x98\xa9\x65\x62\x3d\xc4\ \x91\x2a\xa0\x72\x32\x22\xdb\xcd\x90\x38\x8d\xb9\x5b\x9b\xdc\x74\ \xb4\xc2\xe0\x7c\xcb\xcf\x68\x80\xe8\xeb\xf8\x35\xc3\x10\x0a\x9c\ \x30\xee\x20\x6b\x69\x7d\x9f\x52\x57\xf0\xde\xe0\x8e\xdd\x26\x39\ \x42\x7c\xb1\xba\xa2\x2a\xe8\x29\x3f\x54\x25\x0f\xf2\x23\xf5\x21\ \x75\x21\xb0\x4c\x20\xec\x00\x99\x60\x57\x9e\x21\x2a\x02\x30\x62\ \x0d\x0e\x19\x4f\x43\x69\xea\x15\x08\x16\x24\xc5\x52\x43\xb8\x7b\ \xc6\x35\x17\x17\xb7\x78\x13\xe9\xd4\x15\x00\x5a\x99\xec\x63\x85\ \x14\x6d\x3b\x80\x7f\x10\xbc\x85\x81\xbd\xf3\x1d\x4d\x9c\x69\xc8\ \x20\xe4\xf3\xed\x0b\x09\x2f\x45\x91\xac\x67\xb6\x98\xf5\xaa\x4a\ \xab\x9f\x63\x28\x55\x46\xe9\x2d\xc1\x88\xb6\x91\x1d\x4c\x11\xc9\ \xbc\x79\xd3\x83\x37\xc2\xb7\x22\x5f\xa3\x8a\x68\x5a\xa6\x9c\xaf\ \x51\x90\x24\xed\x8f\x48\xed\x27\x95\xc0\xe9\x33\x5a\x9b\x6a\x1b\ \x0c\x19\x8f\xa4\x5a\x67\xfb\xa7\x1e\x98\x92\x54\xfc\xeb\xf2\xff\ \x00\x11\xfa\x75\x3b\x18\x7a\x49\xd4\xd8\xf7\x1c\x18\xc4\x6d\x26\ \x18\x23\xf4\x84\xeb\x67\x23\xa4\xcf\x0f\x17\x5e\x21\x5b\x75\x3b\ \x9e\x46\x2f\x04\x9d\xd6\xc7\x12\x8d\x2d\x8f\x86\xa7\x17\xc5\xe2\ \x58\x31\x3e\xd1\xd4\xd6\xf4\xaf\xf9\x4c\x68\x65\x7b\xa3\x54\x03\ \x91\x61\x13\xae\xbe\xe0\x83\xf0\xa8\x12\x93\x4f\x73\x58\xdf\x2c\ \x3a\x49\xb5\x5e\x6a\xcc\x7b\x9b\xde\x31\x56\x25\x20\x32\xdc\x47\ \x54\x60\xaa\x02\x81\x60\x26\x30\xb8\x81\x5d\xb6\x83\x78\x7a\x91\ \xd5\x66\x63\x93\x26\x62\x54\xfa\x4a\x5b\x24\xc9\xb5\x16\xe5\x67\ \x48\xcd\x2d\x98\xdc\x32\x9d\xa7\xbc\x16\xac\xc3\x20\x06\x61\xdc\ \x44\x3b\x36\xe1\x99\xb7\xdc\x79\xc8\x88\x52\x35\xf5\x1e\x9f\x86\ \xc6\xc2\xff\x00\x84\x5a\x08\xaa\xb7\xb8\x04\x9f\x53\x25\x6c\x9c\ \x60\x8f\xde\x6a\x3e\xe1\x6e\xb2\x2a\x5e\xab\x83\xe5\x36\x10\x77\ \xee\xe4\xd8\xc5\xa3\x1f\x94\xcd\xb7\x6e\x7b\x48\x19\x50\xd8\x06\ \x3d\x44\x5e\xf2\x67\x9c\x90\xa0\x93\xc7\x49\x82\xc4\x60\x6d\x32\ \x42\x52\x14\xdc\xfe\x91\xdb\x8d\x45\xf2\xe1\x87\xee\x24\xd6\x21\ \xa3\x50\xdb\x3c\x11\xd6\x48\x48\x70\x01\xbe\x23\xd8\x87\xd3\x00\ \x2c\x5a\x9f\xf0\x7f\xe7\xef\x11\x50\xee\x1b\x97\x1d\xc4\xf5\x16\ \x2b\x63\xcf\x7f\x69\x11\xd3\xaa\xe8\xaf\x9b\x8e\xc6\x32\x8b\x23\ \xf3\xe5\x1d\xa4\xd5\x7e\xed\xc8\x06\xe8\x78\x3d\xc4\x30\xca\x13\ \x18\xc4\x93\x75\x34\xd9\x5a\xe2\x7b\x4e\xde\x15\xd8\x80\x4c\x04\ \x76\x5c\x02\x6c\x7a\x18\x61\x95\x8f\x99\x7e\xa2\x49\x84\xdb\xcc\ \x07\xfe\xa6\x83\x9b\x08\x74\xd5\x77\x5d\x5c\x63\xbc\x27\xd3\xbf\ \xcc\x17\x70\xf4\xcc\xb5\x11\x72\x0e\x6e\x23\x69\x39\x0d\xce\x7a\ \x19\x8e\xb6\x1e\x60\x41\x9e\x40\x0e\x00\xfa\x48\x2f\x67\x0d\x45\ \x19\x86\x7a\xda\x57\xa5\xff\x00\x31\x48\x8b\xf9\xc0\xf2\xfa\x89\ \x00\xbf\x80\xa0\x8b\x67\x99\x46\x91\x8d\xd4\x8c\x10\x66\x2c\xe9\ \xb8\xa2\x95\x57\x46\x03\xa8\x3d\x44\xe9\x6b\x82\x55\x4a\x7a\x90\ \xa4\x6e\x16\x62\x3b\x89\x26\xd1\x50\x17\x03\xcc\x3e\x65\xfe\xb2\ \xfd\x0d\xab\x69\xea\x50\x38\xb8\xba\xfb\x89\xce\xff\x00\x5a\x89\ \x29\xa8\xa9\x75\x04\x5e\xdd\x64\x8f\x48\xde\xc5\x7e\xa2\x5d\xe1\ \x94\x56\xdb\x92\x71\x13\x59\x6f\x7c\x15\x6f\xd8\xc5\x54\xaa\x15\ \x45\x8d\xf6\x9e\x41\xe9\x31\x91\x94\xdd\x4d\xd7\xa1\x9e\x67\x75\ \x6d\xbc\xde\x6a\x55\x34\xc1\xde\x15\xaf\xd2\x21\x95\x29\xf9\x02\ \xa0\x17\x26\xe4\x4a\x35\x3a\x63\x42\x97\x96\xa9\xa8\x00\x1b\x85\ \xac\x54\xc5\xe9\xd6\xfa\x85\x65\xdd\xb4\x9e\x6f\xfc\xca\x4d\x45\ \x76\x2c\xb6\xbb\x1c\xdc\x74\x85\xa9\xcb\xa9\x66\xb2\xd5\xb5\xff\ \x00\x0b\xf4\x3e\xf1\x0e\xa1\x09\x06\xe0\x8e\x86\x5d\xab\xa1\xb5\ \xcb\x22\x86\xa4\xdc\x8b\xc4\x78\x68\xc9\xb6\xa0\x6d\xb6\xf2\x3f\ \x6f\x43\x37\x28\xa4\x29\xc0\xe9\xeb\x34\x6e\xbd\xff\x00\x71\x3d\ \x52\x8b\xd2\x70\xbd\x7a\x40\xf3\x29\xe0\x8f\x69\xa0\x70\x36\xbb\ \x02\x0e\x63\x35\x25\x58\xdf\xa9\x17\x93\x2d\x52\xad\x7b\x5f\xe9\ \x1d\x51\x91\xd1\x1b\xe5\xe9\x04\x58\x62\x00\x22\xe2\x6e\xf0\xc2\ \xcc\x2c\x7b\xc2\x74\xdf\x4c\x14\x20\xc9\xda\xf6\x20\xde\xf2\x4d\ \x71\x63\x6e\xb1\x94\x5b\x76\x96\xba\x1e\x80\x30\xfa\x18\x8b\x92\ \x2c\x4f\xb1\x8d\xd0\xe7\x51\xe1\x9c\x6f\x05\x4f\xd4\x4a\x84\xe0\ \x0e\x86\x12\x92\x01\xb4\x5b\x02\x8c\x57\xac\x34\x7b\x5a\xe0\x18\ \xa3\x10\x98\xe7\xa8\xc3\xcc\x2f\x6e\xd1\x68\x29\x9b\x7c\xd7\xed\ \x0d\xbc\xcc\x6f\xc5\xe4\x47\x4e\xa5\x3a\x8a\x43\xb6\xdb\x1b\xf1\ \x1c\x19\x43\x2a\x2e\x55\x47\x3e\xa6\x44\x8a\xcb\x53\x71\xe0\x4a\ \x28\x8d\xd5\x6f\xc3\x64\x98\x58\xa1\xd4\xb6\x3d\xc0\x03\x3c\xfb\ \xc6\x53\x51\xed\x22\x46\xb3\xde\xf6\x22\x5c\xb7\xb0\x61\xc1\x99\ \xbd\x18\xa6\x92\x03\x80\x63\x85\x21\xd7\x32\x5a\x6e\x01\xed\x29\ \xa5\x5a\xdc\xd8\xcc\x56\xa3\xc6\x88\x19\xb1\xbf\x49\xea\xc9\xe2\ \x51\x3d\x48\xe2\x56\xad\x4d\x96\xdf\xb1\x85\xe1\x0e\x57\x20\xf4\ \x86\x9c\x72\x74\xd7\x17\x04\x62\x21\xa9\xf9\x89\x1d\x0c\xe9\xd4\ \xa1\xb6\xa6\xee\x55\xb8\x90\x54\x04\x3b\x5b\xbc\xd4\xac\xd8\x2a\ \x4d\xb6\xf7\xe0\xf2\x23\x15\x00\x3d\xd1\x85\xaf\x14\x96\x61\x6e\ \x0c\x65\x32\xc8\xdb\x58\x5d\x7a\x89\x22\xd9\x4a\xb5\xc6\x0c\xbf\ \x40\xb4\xdd\x0d\x22\x9e\x77\x17\xbf\xb4\x46\xa2\x98\x1b\x2a\x53\ \x21\x94\xff\x00\xcc\xcc\xa3\xa8\x14\x54\xd4\x03\xcd\xc2\xc2\xf6\ \x67\x47\x6a\x9a\x8e\x98\xba\xee\xdd\x54\xe0\x0b\x71\x39\x0e\xac\ \xc6\xe4\x98\xf2\x4b\x92\xcd\x72\x4f\x24\xcc\x16\x1d\xa6\xa7\x42\ \xf6\x1b\xe6\xd7\x81\xaa\xe0\xcd\x2d\x6e\x83\xd0\xc5\xea\x9b\x1c\ \xc6\x7a\x12\xd5\xee\x0c\x9e\xa6\x41\x8f\xab\x91\x24\xa8\x48\xb8\ \xbe\x66\xe3\x35\x39\xb6\xe2\x7b\x40\x04\xf4\x8c\x6c\xa9\x8b\x22\ \x54\x0a\xe1\xba\xd8\xcf\x5a\xe6\xe3\x0d\xda\x2c\xe3\x31\x8a\xd7\ \x17\x22\x44\x6b\x61\x62\xdc\xf4\x9a\xec\x4f\x9a\xd6\xe9\x88\x07\ \xcd\x9e\xb0\x95\xc1\x1b\x1a\xd7\x31\x0f\x5f\xcb\xcd\xe7\xb1\x00\ \x60\x30\x3c\xc1\x04\xcb\x51\xc3\x10\x81\xb8\xc4\x5a\x99\xa1\x81\ \xe9\x24\x30\x4a\xb5\xe1\x58\x6d\x2c\xb8\x07\x91\x30\x58\xae\x73\ \x3d\xb4\xdc\x15\x39\xed\x24\xf2\x93\x51\x45\x33\xc8\x3e\x5f\xed\ \x3c\x39\x20\xf4\x9e\x54\x24\x92\x30\x46\x61\x35\xdd\xae\x3e\x61\ \xc8\xef\xeb\x24\x01\x73\x93\x0a\x99\x04\xed\x82\x58\x9e\x7e\x82\ \x33\x4e\x2e\x7a\x5a\x48\xfa\x74\xc0\x5c\x8c\xcc\xbb\xa1\xc1\x22\ \x68\x6b\xb6\x78\x8d\x20\x1c\x37\xd0\xc0\xbd\xbe\xa3\x52\xb8\x6d\ \xde\xe2\xf0\x15\xfa\xb5\x35\x3f\x48\xda\x48\x41\xf2\xff\x00\x33\ \xc6\x91\x2d\xd8\xc8\x9b\x46\xa5\x36\xa6\x41\x4c\x76\xbc\xa6\x81\ \xd3\x30\x04\x78\x8a\x7b\x58\x48\xa8\x28\x5a\x8c\xa7\xa8\x8f\xa5\ \xe5\x36\x60\x3b\x4c\xd8\x63\xad\x4c\x51\x2e\x2a\x25\x56\xb9\x19\ \xf2\xca\xf4\xfe\x0a\x30\xaa\xae\xcb\x63\x7b\x6d\xe2\x71\x90\x95\ \x1e\x5e\x99\x12\x9a\x1a\xa2\xa6\xcf\x90\x67\x3b\x1a\x95\xd7\xad\ \x4b\x4e\xaf\x72\xed\x66\x17\x16\x12\x1d\x43\xe8\xc1\xb6\xca\xae\ \x47\xfb\xad\x2c\x3b\x6a\x68\x95\xc8\x24\x53\xc5\xc1\xe9\x39\x15\ \x4d\x2d\xe7\xef\x19\x7d\xc4\xcf\x13\x44\xda\x9d\x2e\x7f\xca\x0f\ \x72\xe6\x0b\x6a\xa9\x20\xf2\xe8\xa8\xfd\x6e\x62\x4d\x32\xcf\x65\ \x74\x37\xe9\x7b\x5e\x54\x68\xe0\x17\x4c\x80\x00\x00\x7f\x33\x7d\ \x33\xdb\x46\xbf\xc1\xa2\x09\xd2\xe9\xd5\x9b\x80\x17\xa7\xac\x36\ \xd6\xd4\x21\x4d\x3a\x74\x76\x9f\xff\x00\xcc\x62\x73\xeb\x53\x67\ \xab\x76\x63\xba\xf0\x83\x9a\x75\x42\xf4\x1c\x89\x64\x3a\xac\x6b\ \xab\xb0\x60\x7c\x3c\xf6\x41\x22\xaf\xf1\x1d\x65\x1a\x99\x14\xc8\ \xff\x00\xc0\x08\x6c\x14\x03\x51\x70\x0e\x3d\xa2\xeb\xa0\xab\x4f\ \x69\xf9\x87\x06\x52\x41\x6d\x51\x4b\xe3\x14\x98\xa0\xab\xa7\x50\ \xa7\xf1\x76\x3e\xd0\x75\x5f\x12\xd3\xd2\xa9\xb2\xae\x94\x0e\xbc\ \x03\x79\xc7\xa8\xad\x4c\x90\xc3\xde\x39\x14\xea\x28\x78\x04\xdd\ \xd4\x5e\x91\xee\x3f\x2c\xd7\xe6\x0f\xd5\x58\x35\x5f\x0e\xad\x86\ \xa2\x07\xb4\x72\x69\x34\x5a\x84\x29\x4e\xab\x21\xe4\x5e\x7c\xe9\ \x04\x1b\x64\x11\x1f\xa6\xaf\x52\x9b\x02\x18\xe2\x37\x8f\xf0\x7e\ \xbf\xae\xa3\xe8\x2b\x52\x53\xb4\x87\x1d\xc4\x90\xf9\x94\xab\xe1\ \xbb\xca\xe9\xea\x1c\x5a\xa5\x36\x36\x6e\x90\xeb\x53\xa7\xac\x52\ \x52\xc9\x58\x0b\x91\xde\x12\xdf\xa5\xc9\x74\x65\x39\x87\xa5\x6d\ \xba\x8a\x4c\x79\x0c\x3f\x48\xc6\x52\x3c\x8f\x70\x47\x78\x96\x5d\ \x95\x14\xf6\x33\x6c\x87\x54\x08\xae\xc0\x74\x63\x05\x54\x92\x3b\ \x88\xfd\x70\xb6\xa9\xcf\xac\xca\x78\x01\xba\xc9\x35\x57\x68\x17\ \xe6\x35\x00\x2b\x9c\x0e\xa6\x25\xb7\x0c\x8f\xd6\x52\x17\x0a\x3b\ \x08\x10\xea\x2c\xc0\x11\x8b\x70\x3b\xc0\xa6\xc5\x0e\xeb\xe7\x88\ \x4e\x06\xe3\xb9\xb3\xd2\x0b\xdb\xa0\xc1\xe2\x49\xbb\xf7\x1f\x35\ \xaf\x79\x5e\x9d\xac\xbb\x72\x0f\x32\x03\xf3\x47\xd0\x7b\x10\x0f\ \x1d\xe5\x62\x59\xc9\xc4\xdd\xcc\x3d\x22\xac\x54\xde\xf7\x07\x88\ \xc5\x7c\x5a\xf8\xec\x67\x36\x8c\xa7\x59\x94\xf7\x12\xfd\x36\xa4\ \x11\xdc\x75\x13\x90\xc4\x03\x70\x6d\x36\x95\x66\x4a\x97\x95\xe3\ \xab\x5f\x53\x42\x9d\x3d\x55\x2d\x97\xb1\x23\xca\x67\x0b\x57\x49\ \xa9\x57\x65\x61\x62\x0c\xb7\xe1\x3a\xbb\x54\x00\x1c\xf6\x97\x7c\ \x4b\x4e\x9a\x84\x15\x40\xcf\x7e\xc6\x73\x97\xf3\x5b\xbd\xc7\xce\ \x11\x63\x71\xd2\x3d\x19\x5c\x59\xba\x45\xd7\xa6\xd4\xdc\xab\x0b\ \x11\x05\x0e\x47\x79\xd1\x83\x2b\x6e\x51\xb2\xc4\x86\xe2\xd2\x7a\ \x86\xc6\xc7\x89\x52\x6e\x00\x9c\x30\x19\xb1\xeb\x23\xae\xc5\xaa\ \x33\x90\x01\x27\x89\x45\x58\x5c\xf1\x6b\x4d\x19\x17\xbc\x58\x17\ \xcd\xf2\x21\xaf\x16\xbe\x26\x80\x08\x3d\x44\x0d\x57\xc8\xa6\x35\ \x89\x81\xa8\xcd\x25\x8a\x42\xe4\x89\x25\x53\x99\x4d\x51\x7b\xd8\ \xc9\x6a\x0f\x35\xe6\xe3\x21\x71\xe4\x11\x67\x8b\x08\xe7\x06\xc0\ \x0e\x6d\x04\xa8\x1e\xf2\x05\x6d\x00\x5c\xfe\x91\x57\x3b\xaf\x1a\ \x62\x9c\x67\x10\x30\xc0\xf8\xc4\xc6\xce\x7a\xc0\x4b\xde\xf1\x81\ \x6e\x31\x24\xd3\x91\xbb\xa1\x13\xd4\xd6\xf1\xc9\x4e\xf4\x88\x3c\ \xf3\x31\x10\x83\x8c\xc4\x32\xdd\x21\x78\x66\x51\x4a\x9d\xc6\x45\ \x8c\x6a\x52\x09\x96\x04\xf6\x96\x94\xdb\x08\x36\xe2\x79\x69\xb0\ \x3b\x8d\xc7\xac\xa2\xe0\x12\x47\x24\xc1\x72\x5b\x93\x81\xd2\x5a\ \x80\x49\x65\xb1\x3d\x66\x00\x0b\x0b\x1b\x1e\xf3\x4a\xf9\xbb\x62\ \x0a\x7c\xd2\x0d\x7a\x77\xf3\x28\xf7\x13\x69\xa8\x45\xb4\x7d\x36\ \x20\xee\x60\x08\x1d\xa7\xaa\x20\x70\x5a\x9f\xb9\x1d\xa0\x43\x49\ \x6f\x1d\x8b\x64\x5c\x44\xd3\x06\xe0\xca\x14\x82\x6c\x64\xa0\xe9\ \x02\x0d\xc7\x12\x9d\xbb\x85\xed\x7c\x44\x53\x50\x0e\x0c\xaa\x8e\ \x06\x38\xeb\x31\x5a\x84\x78\x6a\x58\x1e\x0c\xd7\x46\x0d\x8e\xb1\ \xb5\x94\x1e\x9f\x51\x04\x83\xb0\x10\x65\xa8\x28\x18\x1b\x1b\xd8\ \xfe\xd0\x43\xb2\xb6\xd3\x73\xef\x08\xb3\x86\x1b\x4d\xfb\xcf\x06\ \x24\xd9\xb1\x7e\x24\x9d\x9f\x84\x55\xde\x4d\x06\xe2\xa2\x11\xec\ \x7a\x4e\x75\x75\xb3\x30\x72\x05\x8f\x26\x1e\x96\xad\x4a\x44\x54\ \x07\xe5\x20\xfe\x91\x5a\xfc\xd7\x75\xc5\xf9\x1e\xb3\x32\x76\x6f\ \x80\x35\xa9\x8b\x04\x19\xfc\xd3\x29\x9a\xa0\x92\x95\x09\xeb\x83\ \x99\x33\xa1\xc1\x18\xb4\x3a\x4c\x4f\xb7\x79\xbc\x1a\xe8\x53\xd5\ \x55\xb5\xaa\x59\xc0\xe8\xe2\xf6\x8d\x5a\x9a\x5a\xbe\x5a\xd4\x4a\ \x76\x74\x32\x54\xab\x71\x90\x1d\x7d\x66\xd9\x18\x1b\x1d\xbe\x86\ \x63\x0a\x9f\xb1\xd3\xd9\xba\x86\xa1\x58\x13\xc3\xe0\xc9\xf5\x74\ \xaa\x52\x62\xad\x4e\xc9\x6f\x2b\x08\x4b\xb9\x48\x52\x2e\xbc\x11\ \xd0\xcc\x67\xaf\x42\xb3\x05\x62\xc8\xd7\xc1\xcd\x8c\xa2\x41\xac\ \x40\xd4\xf7\x5b\x32\x45\x24\x1b\xa9\xb1\x06\xe3\xb8\x33\xae\x4d\ \x0d\x4d\x32\x2c\x29\x54\x23\xb6\x09\xfe\x93\x97\xaa\xa6\xf4\x2b\ \x79\xd7\x69\xfd\xa6\xf8\xd6\x68\x75\xa3\x79\x1a\x85\x16\x0f\xc8\ \xec\x7a\xc9\x81\xcd\xa5\x88\x55\xe8\xd4\xa5\xe9\xb9\x7f\xac\x90\ \x0b\x37\x33\x50\x2c\xd2\x38\x51\xb1\x8f\x94\x9f\xd0\xca\x09\x64\ \x65\x23\x0c\x3a\xc8\x13\x1b\x73\xd6\x5d\xe5\x7a\x61\x37\x79\x80\ \xf2\x9b\xc2\x98\x7d\x60\xba\xca\x25\xd4\x05\xac\xbc\x8e\xf3\x9e\ \xcc\x0f\x91\xb9\x11\xa2\xa3\xd3\x70\xeb\xf3\x2f\x23\xbf\xa4\x2d\ \x5d\x21\x5d\x7e\xd1\x44\x73\xf3\x0e\xd0\x9d\x20\x6b\xc0\xf1\x89\ \x3f\x88\x03\xfb\x40\xa6\x53\x60\x04\x1b\xf5\xcc\x76\xa9\x09\x34\ \xc3\xdc\x79\x06\x64\xe5\x19\x5a\xe4\x18\xcf\x11\x89\xb0\xd7\x02\ \xd7\x5b\xe6\x51\xa8\x64\xb0\x2b\x71\x79\x3f\x87\xb1\xb0\x6e\x66\ \x92\x6d\x66\x19\xf5\x92\x2c\x93\x7c\x09\xb4\xee\x58\x03\xde\x61\ \xb5\xf3\x68\x68\xb9\xbf\x48\xa0\xd4\x16\x6c\x71\x0e\x97\x33\x6a\ \x0b\x0e\x2f\x79\x94\xc8\xe0\x88\x25\x54\xde\xf4\xfb\x89\x8e\x42\ \x8b\x83\x89\x94\xc0\xe2\x63\x8d\xa6\x67\xe9\x27\xc4\x3b\x89\xb0\ \x84\x1c\xdc\x10\x30\x7a\x4f\x54\x41\xf3\x28\x3e\xd3\xd4\x40\xb9\ \x0d\xc4\xd0\x5f\xa0\x37\xb3\xa1\x37\x53\x91\xd6\x77\x34\xfa\x8f\ \x11\x0a\xee\xb3\x1c\xdb\xa1\x9f\x3d\xa5\xbd\x37\xba\xde\x74\x74\ \xf5\x47\x89\x6b\x8d\xc3\x36\xef\x39\x72\x8d\xf1\xaa\xb5\x94\x06\ \xa1\x09\x18\x71\xc7\xf6\x9c\xa2\x85\x4d\x88\x20\x83\x99\xd5\x35\ \x0a\x81\x53\x9d\xb8\x23\xd2\x2f\x5d\x44\x3a\x78\xf4\xec\x71\x9f\ \x58\x4a\x6c\x40\x86\xed\x66\x3e\xc6\x26\xa2\x6e\x26\xd6\xbc\x33\ \xd6\xf0\x78\xc8\x9a\x64\x9f\x0c\x83\x79\x85\x0e\x6c\x6f\x19\x57\ \x0b\xb8\x0c\x1f\xda\x0a\x3d\xc5\x8f\x22\x21\x29\x67\x43\x82\x31\ \xeb\x0a\xb3\x0f\xb3\x6e\x03\xae\x44\xea\xb2\xfc\x17\x54\x2c\x19\ \xa8\x39\x8b\xd4\x7c\x1e\xaf\x80\x7e\xcd\x55\x2b\x2f\x36\x8f\xea\ \x7d\x58\xf9\xda\xac\x2f\x13\x7b\x9b\x13\x79\x46\xbb\x4f\x56\x8d\ \x4d\xb5\x69\x3d\x32\x3b\x8b\x44\x22\xe7\xbc\xe9\x18\x15\x51\x6e\ \x39\xeb\x13\x78\xc5\x6b\xb1\xcc\xf6\x1a\xf8\xcc\x91\x0d\xed\x30\ \x21\xe6\x3c\xa1\xbd\xed\x0a\x9d\x07\x71\x85\xc4\x92\x65\x52\x7a\ \x46\xd3\x5f\x30\x12\x95\xa3\x4d\x30\x2e\x4c\xf1\xa6\xa1\x6e\x2f\ \x79\x20\xe3\x78\x2b\x9b\x62\xd1\xde\x19\x43\x8c\x0e\x62\xe9\x25\ \x8d\xc4\xb4\x28\x6a\x4a\xc3\xe6\x18\x30\xa6\x13\x49\x37\x1b\x5e\ \xdd\xef\x09\xee\x30\x47\x30\xdd\x76\x5a\xc0\x92\x60\xfb\xc8\x96\ \x54\x01\x88\x36\x8e\x36\xf6\x82\x45\xfa\xc8\x61\x6c\xbe\x63\x8e\ \x90\x76\x6d\x39\x95\x52\xa6\x58\x13\x6e\x20\x94\xb1\x37\x17\x32\ \x58\x52\x8b\x8b\x91\x88\x48\x19\x5b\x72\xe2\x18\x56\x3c\x8b\xc6\ \xd1\xa7\x6c\xdb\xe9\x25\x8d\x54\x56\x5d\xc3\x07\xd2\x67\x84\x7b\ \x46\xaa\xec\x37\x02\xc0\xf4\x30\xc0\xb0\xdc\x32\x3b\x4c\xeb\x45\ \xaa\x1e\xf1\xca\x08\x1c\xcf\x29\xbe\x01\x23\xd2\x1e\x7a\x89\x9b\ \x53\x77\x07\x4d\xbd\x44\x0a\x60\xd8\x83\x04\xb0\x0d\x1d\x4e\xce\ \x09\x3c\xc8\x92\xea\x2f\xb8\x74\x98\x08\x64\x04\x0e\x0c\xda\xb7\ \x0c\x7b\x40\xa7\x92\x41\xeb\xc4\x42\x84\x65\x34\x8a\x92\x41\xb5\ \xa7\xb5\x76\xf1\x11\x8f\x3b\x46\x62\x2a\xb0\x57\x54\xfa\xc7\x6a\ \xce\xf7\x55\xec\xa0\x7b\x40\x91\x5c\x12\xbb\xd0\x0b\x1f\x48\x28\ \xc5\x86\xdc\x02\x39\x10\xee\x02\xb5\x34\xfa\x1f\x58\x28\x55\x10\ \xbd\x41\x76\xbf\x96\xdc\xcd\x03\x11\xc7\x16\x00\xc7\x21\xa6\x7c\ \x87\x9c\x44\x52\x43\x53\x2a\xc0\x9e\xc7\x11\x8b\x4d\xac\xc4\x8b\ \x11\xd2\xd3\x34\x89\x5c\x87\x3f\xc4\x5b\x3b\x03\xb9\x49\x23\xa8\ \xea\x23\xf4\xcd\x4d\xe8\x32\xb5\x3b\xb5\xee\xa6\xf9\x90\xd7\xba\ \x31\x28\x4e\xe1\xc7\xac\xa0\x13\x56\xb1\xdc\x2d\x98\x49\xab\x47\ \x43\x46\xbd\x35\x74\xcd\xbb\x8f\x68\x85\x02\xbd\x22\x40\xb5\x41\ \xc8\xef\x11\x50\x6d\x7e\x6d\xd6\x6b\x20\xd3\xde\x9a\x51\xab\x49\ \xb6\x06\xa6\x4d\x83\x03\xc8\x31\x0e\xb4\x83\x15\xda\xc2\xc6\xd1\ \xba\x5a\x8b\x76\xa1\x54\xdd\x1b\x8f\x43\xde\x06\xad\x19\x35\x4c\ \x30\x7a\xfb\xc5\x35\x13\x4f\x6d\xc5\x98\x7b\x88\x5b\x69\x73\xe3\ \x66\xfd\x44\x41\xab\x64\x0b\x6c\x83\x00\xd5\x24\x47\x16\xad\xd8\ \x8e\x33\x55\x49\x18\xbc\x76\x9a\x93\x51\xa9\xbd\x41\x64\x6c\x11\ \x79\xce\x57\xcd\x88\x16\x32\xdd\x1d\x40\xf5\x36\xbe\x0a\xf1\x9e\ \x66\x6a\x8a\xbe\x23\xa6\xdb\xb0\xab\x38\x16\xb0\x36\xc4\x91\x5d\ \xb6\xec\x73\x6b\x70\x48\x9d\x04\xad\xb2\xd4\x6a\x96\x00\x8c\x5f\ \xbc\x4e\xa0\x85\x01\x2b\x20\x61\xd1\xad\x33\x2b\x55\x38\x66\x5b\ \x36\xc5\x7e\xe4\x41\x66\x4e\x40\x36\x27\x88\xd5\x4a\x40\xf5\x00\ \xf4\x07\x13\xc7\x4a\xdf\xf6\xd8\x3a\x9e\x86\x6b\x60\x4a\xcb\x4c\ \xb6\x09\x5f\xa4\x72\x50\x36\xf2\xb8\x27\xf4\x9e\xf0\x9d\x1b\xcd\ \x4e\xc3\xbc\x62\x2a\x91\xcc\xad\x41\x28\xfd\x56\x1a\x53\x07\xa1\ \x06\x11\xba\x88\xc4\x67\x23\x06\xc7\xb1\x99\xd4\x0b\x64\x5a\x05\ \x41\x71\x79\x4d\xee\x3c\xe8\x2f\xfa\x4c\xfb\x93\x75\x3b\x85\xe5\ \xa5\x1b\x06\xfc\x33\xca\xaa\x3c\xdd\xf9\x12\x96\xa6\x87\x87\xfd\ \xa7\xa9\xe9\x86\xef\x2d\x54\xcf\x31\xd1\x81\x47\xb8\xc6\x23\x03\ \x6d\xaa\x8f\x1c\xba\x05\x04\x37\x8c\xb6\xf6\x94\x7d\x9b\x4a\xaa\ \x0d\x4a\xc4\xf5\xb4\xce\xc3\x82\xa7\x58\x35\xaf\xec\x7d\x63\x34\ \x55\x3c\x3a\xad\xa7\x7c\xab\x65\x62\x7c\x6d\x15\x3b\x6d\x42\xd6\ \xfc\x44\xca\x2a\x6a\x74\xfe\x12\x56\xa7\x49\x78\xfd\x26\x5a\x43\ \xae\xd3\xb5\x2a\xc7\x6f\xca\x72\x0c\x9a\xa2\xb0\x23\x9c\x4e\xf2\ \xd6\x15\x34\x7e\x3d\x22\xa5\x80\xe0\x89\x0b\xeb\xeb\x0c\xec\xa6\ \x7d\x00\xe6\x52\xd5\x64\x73\x1a\xf9\x5c\xe6\x4e\x03\x64\x13\x63\ \xc4\xea\xb7\xc5\x5c\x61\xa8\x52\x6f\x42\x26\x0f\x89\x69\x5e\xc6\ \xae\x8e\x9b\x5f\xa8\x13\x72\xdf\xe3\x39\x1c\x2a\xb7\xb0\xbf\x5e\ \xb1\xb4\x35\x55\x68\x52\x1e\x1d\x46\x53\x7e\x86\x2e\xa5\xb6\x29\ \x36\xf5\x8a\xaa\x01\xa4\xb6\x39\x9d\x19\x74\x0f\xc6\x05\x40\x29\ \xeb\x68\x53\xac\x83\xa9\x19\x8b\x3f\x0f\xd2\xea\x89\xa9\xf0\xfa\ \xc2\xf9\x26\x9b\xf4\x9c\xb6\x46\x3c\x91\x78\x74\x9f\xc1\x3b\xd1\ \x88\x6b\xf7\x87\xe7\x3c\x5b\xfd\x7a\xa6\x92\xb5\x2a\xc5\x2a\x53\ \x60\x46\x26\xae\x9c\x0b\xf9\xad\xe9\x3a\xfa\x5f\x8a\xa5\x75\x14\ \x75\xb4\xd5\xc1\xe1\xbb\x4d\xad\xf0\xc1\x54\x1a\xba\x5a\x81\x93\ \xf2\x93\x99\x7e\xb3\xd5\x9f\xc7\x3a\x98\xa6\x83\x2a\x49\xea\x4c\ \x5d\x4a\x97\xc2\xf1\x1d\x53\x4f\x5e\x99\x21\xe9\xba\x88\xbd\x84\ \x9c\x5a\xd1\x01\xa6\x8c\xcd\x7e\x44\x22\x37\x1b\xf1\x1a\xaa\x42\ \x5b\x82\xdd\x7d\x21\x0a\x5c\x93\xc4\x96\x10\xaa\x44\xa3\x4e\x2e\ \xae\x2d\xc0\xbc\x3a\x1a\x56\xa8\xe0\x66\xde\x92\xa7\xd2\xa5\x32\ \x02\xb9\x3b\x47\x9b\xde\x66\xd8\x64\x44\x2a\x1e\x5b\x33\x1d\x7c\ \xb7\x5c\xc2\xab\x4c\x29\x22\xf9\xed\x3d\x48\x32\x9c\x1c\x70\x62\ \x93\x5c\x93\x68\x40\x77\x95\x9a\x48\xf9\x5c\x18\xa6\xa0\x47\x73\ \x2d\x58\x2a\x0d\x65\x37\xe2\x30\xaa\x11\x7c\x1b\xc5\x28\x20\x95\ \xe2\xc2\x32\x98\x62\x38\xb5\xa1\x53\x02\x80\x6c\xb7\x8d\x4a\x78\ \xcc\x24\x5b\x1c\xc6\x20\xfa\xcc\xda\x70\xbd\xa6\x6d\x35\xb7\x39\ \xbf\x31\xc5\x6f\xd2\x60\x4e\x6d\x0d\x25\xb2\x6d\x6e\xc2\x10\x6b\ \x8b\x18\xd4\x5d\xc3\x69\xfa\x41\x34\xec\x30\x47\xf5\x92\x4f\x50\ \x67\x88\x5a\x72\x43\x15\xef\x18\x13\xbc\xc5\x5d\xaf\x83\x1d\x40\ \xaa\x45\x88\x7e\xbc\x19\xea\x14\xce\xfb\xdb\x1d\xe1\x55\x42\x54\ \x12\x63\xa8\x1f\x09\x77\x1c\x5c\x58\x02\x25\xf1\x24\x28\x6a\x6a\ \x01\xc6\x0d\xa7\xbe\x20\xe7\xc6\x64\x41\x60\x05\xaf\x1f\xa6\x01\ \xb5\x60\x91\x6d\xa6\xe4\x1e\x24\xf5\xd7\xef\x0b\x35\xc0\x26\xf7\ \x8c\xf4\x12\x87\xcc\x0b\x62\x15\x64\x3e\x20\x60\x49\x53\x05\x94\ \x10\x40\x3c\x0e\x23\x68\xdf\xc2\x05\xfc\xaa\x39\xbc\x68\x7a\x97\ \x01\x81\xb1\x3c\x4a\x1e\xbd\x45\xa6\x00\x6e\x45\x8d\xe0\x04\x0c\ \xbe\x22\x5a\xdd\x04\xc5\x56\xcb\xf4\x13\x24\x24\x39\x36\xa7\x7b\ \xda\xe0\x8e\xf2\xc1\xa6\xa2\xfa\x61\xa9\xac\xcc\x2e\x6c\x42\x8e\ \xb2\x52\xee\x9f\x59\x55\x4c\xe8\xd6\xc6\xc6\x93\x5d\x87\xa1\xff\ \x00\x82\x54\xb9\xd5\xa9\x7d\x9f\x57\xe5\x38\xe4\x1e\xe2\x2f\x57\ \x4f\xc4\xb3\xa8\x19\xe4\x4b\x9e\x99\xab\x4b\x16\xdd\x4f\x23\x3d\ \x24\xed\xba\x9d\x99\x94\xdb\x83\x89\xa9\x46\x21\x2a\x41\x0d\xe9\ \x69\x5d\x6b\x57\xd1\xad\x4f\xfb\x88\x33\xea\x22\x9d\x45\xc8\xb9\ \x23\x91\x37\x4f\x50\x53\xb1\xe8\x0d\x8f\xb1\x8d\x09\x2a\x5b\x18\ \x98\xa0\x11\x8c\xc7\x6a\x69\x78\x75\x88\xe5\x4e\x57\xda\x62\xa0\ \x02\x3a\x03\x63\x6b\xc6\xd0\x04\x5c\xf5\xb4\xd0\xb7\xf5\xcc\x6d\ \x2a\x64\xb0\xdb\x9b\x98\x1c\x74\x59\x52\xad\x34\x57\x60\x1b\x68\ \xb1\xb4\x31\x47\xc4\xa4\x29\xbb\x29\x61\xc1\xeb\x26\xae\x0a\xd5\ \x01\xae\x2c\x04\x62\x54\x26\xc1\xb3\xd8\xce\x6d\x27\xaf\x45\xe9\ \x36\xc7\x42\x07\x79\x89\xb9\x45\xc1\x27\xb6\x65\xee\xde\x22\x58\ \x9b\x38\x92\xf9\x77\x6d\x74\xb1\xf4\x8e\xac\x32\x86\xab\x70\xdb\ \x55\x77\x2f\x63\x18\xd4\x69\xbf\x9a\x9a\xdc\x7b\xc0\x5a\x2a\xc3\ \xee\xd8\x37\xfb\x78\x30\x7c\xe8\xf8\x25\x48\xe9\x04\x30\xb4\x86\ \x0b\x30\x3d\x88\x8d\xa6\x94\x48\xf9\xf3\x31\x4a\x56\x4b\x11\x62\ \x3a\xc4\xbd\x36\x43\x9e\x3a\x19\x25\x26\x9a\xdb\x92\xcb\xe9\x25\ \xad\xe1\x53\xa8\x79\x36\x86\x97\x23\x98\x15\x85\xf9\x1f\x59\x44\ \x16\xac\x9c\xad\x30\x26\x78\xce\x06\x2c\xbf\x48\xa3\x4c\xf4\x83\ \xb8\x64\x13\xc4\xd6\x0d\x3d\x2b\xb1\x3b\x4b\x1f\xd6\x1b\x5f\xc3\ \xc9\x91\xb3\x5b\x20\x62\x52\xb5\x2f\x44\x1e\xa2\x56\x26\x51\x52\ \xc8\xc0\x99\x56\x88\x86\xa0\xd4\xc9\xeb\x26\xa4\xc3\xc4\x22\xf1\ \x9a\x5b\xad\x47\x1c\x62\x14\xc7\x47\xe0\xf9\x4a\xd4\x09\xc0\xff\ \x00\xf2\x73\xab\x1d\xa4\x8b\xd8\x83\x2d\xf8\x61\x23\xe2\x2c\x07\ \xe3\x53\xfd\xe4\x5f\x11\xf2\xea\xaa\xaf\x19\x33\x33\xd3\x7c\x49\ \x55\xef\x6b\x8e\x62\xc8\x06\x83\x10\x4f\x95\xa6\x38\xc0\x6b\x75\ \x9b\x48\xe2\xa2\x5f\xf0\xde\x75\x60\x8a\xa4\xf8\x6a\x3b\x08\xaa\ \x98\x44\xb7\xe5\x87\x52\xe3\x9e\xe6\x05\x67\x00\x80\x7a\x0b\x44\ \x10\xe4\xa9\xb1\x98\x46\x16\xd3\x4f\x98\x81\xde\x63\x35\xd9\xad\ \xc7\x48\x81\xa1\xc4\xa6\x86\xa6\xad\x16\x1b\x18\x8f\xac\x9e\x98\ \x8d\x45\xc4\x29\x75\x29\xfc\x4d\xb6\xed\xaa\x8a\xd1\x8b\x53\x49\ \x54\x8d\xf4\x54\x13\xd4\x62\x73\x55\x45\xbd\x63\x29\xa9\x00\x9f\ \xd2\x67\xf3\x1a\xd7\x4b\x6e\x89\xbe\x5d\xde\x99\x84\x94\xf4\xca\ \x46\x09\xf7\x9c\xca\x65\x83\x00\x25\x4a\x48\xb3\x1b\x93\xd0\x4c\ \xd9\x87\x56\xd4\xa8\x94\xd2\xc9\x60\x4f\x6e\x64\xa5\xae\x6d\x6b\ \x09\xe1\xcd\xcc\x24\x5c\xc1\x15\x5d\x3e\xf8\xf6\x8b\x75\x24\x8b\ \x0c\x4a\xf5\x20\x1a\x9f\x41\x14\x56\xe2\x32\xa2\xa9\xad\xb3\x1a\ \x01\xbd\xc6\x67\x90\x0e\xb1\xa9\x81\x89\x5a\x93\x0a\x60\xbb\x1e\ \x09\x8c\x44\x2a\x6e\x04\x71\xa3\x82\xc2\xc4\x43\xa4\xa7\x1d\x61\ \xab\x0a\xdb\xe7\x20\x64\x46\x2a\x81\xd2\x57\x4e\x80\x75\xc0\x13\ \xcd\x40\x8e\x44\x34\xe2\x62\x16\xd8\x3f\xb4\xc0\xa4\x62\xf1\xde\ \x1d\x8c\xdd\x97\x32\xd4\x4e\xd6\xbe\x08\xfd\x63\x0d\x2d\xea\x5b\ \xaf\x58\xd4\xa7\x9b\x81\x0f\xe5\x86\x94\x4d\xe5\x16\xbd\xe0\x06\ \x1b\xc6\x39\x8f\xae\x9f\x88\x71\x12\x40\xc3\x5b\x89\xa0\x6b\x53\ \x25\x2c\x39\xbf\x31\x35\xed\x75\x50\x7d\xe5\xda\x70\x0d\x30\x4f\ \x04\x49\x6a\x04\x04\x9f\xc4\xd9\xf6\x84\xaa\x94\x8a\x17\x4f\x51\ \xfa\x9c\x09\x2d\x3a\xce\x0e\xd6\x1b\xd2\xfc\x1e\x92\xaa\xe2\xd4\ \xd5\x3b\xe4\xc8\xf6\xe4\x80\x26\xa3\x34\xc3\x4e\x95\x67\xbd\x37\ \xf0\xdf\x8b\x37\x1f\xac\x23\xa6\xa8\x8a\xca\xe0\xff\x00\xe4\x78\ \x8a\x08\x15\x6d\xd6\x59\xa4\xad\x56\x8a\x94\x24\x38\x23\xe5\x6c\ \x89\x53\x13\xd3\xbe\xf0\x83\x0a\x25\xa1\x54\xe8\x5d\xba\x3b\x00\ \x3d\x6d\x01\xf5\x3a\x4c\xee\xd2\x1b\x9e\x76\xb9\x02\x05\x5d\x4f\ \x8a\x40\xb2\xa2\x01\xe5\x51\xc0\x87\xa8\x8d\x87\x70\xa4\x46\x7b\ \x98\x34\x2a\x1f\xb6\x3a\xb0\x26\x9b\xf9\x48\xec\x0c\x68\x57\x70\ \x76\xdd\x89\xf2\x81\x2a\xd2\x50\x55\xda\xf8\x25\x56\xe7\x77\x53\ \xd2\x3a\xb1\x2e\xa3\x4d\x56\x85\x54\x6b\x82\x08\xb1\x83\x54\xb2\ \xab\x73\x6b\xdf\xda\x55\xa9\x74\xac\xbb\xd6\xf6\x56\xdb\xff\x00\ \xb8\xb6\xfb\xd1\x76\xb7\x16\x3e\xb0\xd5\x88\x55\xcb\x8b\x6d\x57\ \x2b\xdc\x74\x8b\x61\x48\x97\x56\xa7\x62\x47\x43\x28\x6a\x1b\x5c\ \x38\xbd\xbf\xa4\x0a\xb4\xc8\x20\x91\x71\x37\xa0\x22\x9d\x3a\xfa\ \x7b\x2b\x90\xf4\xf8\xdc\x39\x10\x3c\x07\xdb\x8b\x37\xb6\x61\xd2\ \x5f\x0a\xa8\x37\x3e\xd1\xb5\x29\xec\x7f\x2f\x07\x22\x5b\x80\xaa\ \x48\x6c\x63\xa9\x7d\xd9\x04\x76\x9e\x0c\x7f\x18\x0d\x0d\x50\x5c\ \x6d\x3c\xf4\x30\xb4\x8e\xbd\x41\x50\xaa\xbf\x55\x16\x3d\xa2\x76\ \xbd\x36\x00\xda\xd3\xd5\xd5\xc6\xd6\xb1\xc7\x48\xd5\x60\x52\xcd\ \xf2\xdb\x1e\x90\x4d\x4a\x81\x8d\xaf\x66\xe9\x18\xc8\x19\x6e\xa2\ \xec\x39\x88\x09\xb7\xcd\xd3\xa1\x8c\x15\x0f\x3f\xac\x08\x30\xa6\ \xf9\xbc\x6a\x57\x0c\x36\xd5\x1b\xc7\xaf\x22\x0d\x45\xde\x37\x01\ \x99\x23\xb5\x8e\x71\x19\x35\x78\xbf\x65\x36\xce\x9d\x8e\xef\xca\ \x79\x85\x41\xf7\x83\x4a\xa8\xcf\x79\x1d\x17\xe0\xde\xc7\xbc\xa8\ \x55\x4a\x98\xa9\x86\xe8\xe2\x16\x26\xd4\xa6\x69\xb5\x8f\xd2\x2c\ \x8b\xe0\xca\xac\xe5\x36\xb6\x48\xca\x9e\xf1\x55\x2a\x02\xdb\x58\ \x7b\x19\x2c\x4b\x50\x15\x89\xa9\x63\x93\x8f\x59\x46\xa1\x6f\xc4\ \x99\xc1\xb7\x13\x50\x52\x88\xdb\xcf\x98\x77\x11\x9a\x62\x48\x23\ \xa1\x80\x97\x56\xdb\x7c\x4a\x29\x2a\xf4\xc1\xbf\x11\xa2\x05\x2e\ \x2b\x03\x28\xa2\x0f\x8a\x4f\xa4\x53\x21\x5a\x9d\x70\x65\x09\xe5\ \x63\xeb\x33\x5a\x87\x7c\x35\xad\xf1\x2a\x57\x3c\xa9\x1f\xb1\x89\ \xf8\xb5\x8e\xba\xaf\x4b\x18\xcd\x08\xbf\xc4\x34\xe6\xfd\xff\x00\ \xac\x9f\xe2\xee\x06\xba\xae\x7a\xc2\x7f\xd9\x7c\x42\xf8\xf2\xcc\ \xd3\x79\xaa\xdb\xb8\x23\xf6\x9e\x66\x04\x83\xf5\x99\xa7\xc6\xa1\ \x07\xfb\xa7\x4f\x8c\x91\xa9\x37\x7c\x77\x93\xea\x0f\xde\x1e\x9d\ \x23\xb2\xd5\x14\x1f\x79\x35\x5b\x9a\x84\xde\x6a\x07\x94\x80\xd7\ \xed\x99\x88\x73\x9f\xac\xf5\xac\xa2\xe7\xe6\x33\x40\xe3\x1c\x48\ \x1d\x44\xd8\xe6\x53\x4c\x5c\xfa\x49\x14\xdb\x89\x45\x16\xb4\x29\ \x8a\x54\x0e\x82\xe6\x39\x69\x91\x4c\x0f\xac\x4d\x23\x91\x6c\x93\ \x2c\xbd\x86\x32\x66\x6d\x6a\x16\x10\x27\x98\x8c\xcd\x59\xa0\x77\ \x9a\x9f\x35\x8f\x02\x65\x0c\x0b\x01\x98\x62\xf7\x00\x0e\x66\x2d\ \x8d\xf1\x18\x8b\x77\x03\xd6\x05\xb5\x6c\x1f\x3d\x05\xa0\x1c\x8b\ \x5b\x13\x5f\x35\x18\xf7\x33\x6d\xe5\xe3\x32\x25\x05\xef\x1d\x49\ \x05\xc5\xc4\xc5\x1e\x91\xf4\x56\xe0\xd8\x71\xcc\x96\x36\x9a\x59\ \x4a\x9c\x82\x63\x52\x8d\x88\x00\x62\x10\x51\x61\xc6\x63\xe8\xf6\ \x23\x13\x16\x9c\x7a\x9a\x01\x1b\xb6\xe2\xc7\x89\xb6\xb0\x9a\x38\ \x99\x69\x3b\xd0\xea\x38\x82\xb4\xec\x73\x6b\x4a\xef\x61\xe9\x17\ \x52\xd6\xb8\x88\x24\x80\xa3\x11\x0f\x72\x63\x2a\x3d\xb9\x8b\x73\ \x78\xc0\x59\x03\xaf\x1d\x62\xd9\x43\x10\x17\x83\x0e\xa5\xca\xd9\ \x78\xea\x66\x69\x47\xdf\x0e\xbf\xc4\xd0\x3f\x50\x45\x2d\x1a\xaa\ \xfc\xc7\x32\x15\x1b\xdc\x0e\x49\xc9\x3e\x92\xad\x5b\x2b\xd7\xb2\ \xe4\x5a\xc6\x22\x90\xdb\x4e\xa3\x11\x9e\x04\xa2\xa9\x75\x55\x37\ \x39\xb9\xb0\x82\x78\x04\x64\xf5\x99\x50\x7d\xe1\x26\x62\x9f\x29\ \x06\x68\x34\x73\xbb\xf4\x10\xe9\x30\x15\x40\xea\x62\xbd\x4f\x3c\ \x42\x44\xbb\x82\x0f\xac\x90\x5f\xe6\x37\xb4\x34\xa2\xd5\x08\x41\ \x8b\x9e\x4f\x48\xd6\x14\x41\x6f\x29\x66\x27\x17\x8e\xa6\x1a\xc4\ \x00\x32\x2d\x89\x6a\xc5\x34\x91\x17\x46\xe1\x01\x0c\x9c\xb7\x78\ \x9d\x45\x86\x8c\x29\x39\x67\xfe\x23\x34\xc4\x96\x75\xb7\xcc\xb7\ \x81\xab\xb0\xa5\x44\x30\xbf\x3c\x7b\xcc\x10\x20\x54\x55\x43\x90\ \xd9\x36\x8d\x5a\x20\x0e\x2f\x7e\xb1\x55\x86\xc7\x5c\xf2\xb2\xbd\ \x3b\x86\x5d\x80\x82\x40\xb8\xf6\x8d\x51\x05\x6a\x65\x18\xae\xdf\ \x29\x89\x23\x1b\x4f\x4e\x27\x66\xb2\x2d\x45\x06\xdd\x33\x21\x65\ \x55\xa8\x77\x10\x6d\xd2\xd2\x95\x58\x80\x95\x26\xc4\x47\x53\xda\ \xf4\xb6\x91\x72\xb9\x1e\xd0\xaa\xa5\x2d\xd7\x03\x06\x7a\x89\xa6\ \xac\x08\x53\x7f\x78\xe8\x01\x40\xc4\x6d\x10\xfc\x12\x56\xf6\xe2\ \x3d\xe9\xa9\x17\x55\x36\x39\x10\xa9\xff\x00\xa7\x6b\x1e\x6d\x2d\ \x38\x9d\xcd\xe9\x15\x61\x7f\x78\x29\x4a\xf4\xb7\x0c\xd8\xda\x32\ \xab\x2e\xf2\x00\xc4\xdd\x21\x09\x58\xa8\x38\x22\x41\x29\xa8\xc8\ \x76\x5a\xe0\x72\x0c\xf0\x2b\x50\xee\xa6\x40\x3d\x54\x98\xcd\x6d\ \x34\x35\x4b\xa1\xf2\x9f\xd8\xc8\x88\x21\xf0\xa2\x6a\x76\x2a\x97\ \xa8\xf4\xec\x73\x6e\xc6\x05\x65\x5a\xab\xbd\x0d\x9b\xb4\x6d\x17\ \x46\x01\x2a\x8d\xc8\x71\xea\x22\xea\x51\xf0\xaa\x6f\xa5\xe6\x43\ \xdf\x91\x08\x89\x45\x37\xb9\x36\x3d\xa3\x43\x11\x99\x8e\x01\x03\ \x03\xd0\xf6\x98\x6e\x05\x9b\xe8\x44\x7d\x4e\x86\x82\xb2\xdc\x52\ \xaa\x7c\xa7\x83\xda\x7b\x5c\x9e\x15\x5d\x87\xe8\x67\x3d\x2a\x6d\ \x39\xfa\x4e\x9e\xa1\x8e\xa3\x41\x4e\xaf\xe2\x4c\x1f\x69\x9b\x32\ \x9d\xd8\x91\xbc\xc9\x7e\xa2\x01\x00\x1e\x32\x61\x2d\x50\x78\xcd\ \xf1\x78\x37\x0b\x93\xcc\x51\x46\x9e\x73\x34\x82\xab\x88\x7b\xc0\ \x6f\x96\xfe\x90\x82\x86\xe7\x12\xd0\xf1\x6d\xf7\x07\x91\x6b\x18\ \x6c\x08\x22\xfd\x66\x56\xa4\xa1\xce\xd7\x06\x36\xa8\x36\xa6\x0d\ \xae\xa2\xfe\xf0\x26\xfc\x2d\x77\x6b\xa9\x9e\x36\xa3\x37\xbf\xfc\ \xbc\xe5\xfc\x4d\xfc\x4d\x6d\x66\x1f\x98\xda\x77\x3e\x14\xa1\x3c\ \x6a\xa4\x8f\xbb\xa6\x17\x3d\x3a\xcf\x9f\xd4\x5d\xaa\xde\x3c\x7d\ \x57\xc2\x1d\xad\x8c\xdc\x4f\x69\x89\x3a\x9a\x79\xfc\x42\x63\x8b\ \xe6\xfd\x66\xe9\xb1\xa9\x5b\xf4\x37\x9d\x18\x0a\x90\x37\x9e\x6c\ \x24\xe4\x02\xf6\x0b\x2a\xf0\xc0\x4c\x75\x30\x3c\x32\x03\x36\x31\ \x89\x24\xcd\xfe\xa6\x00\xb0\xc4\xf0\x37\x36\xb5\xa1\x14\xc9\x3d\ \x66\x2a\x92\x4f\x61\x10\xf0\x36\x8e\xa6\x48\x39\xc0\x8a\x20\x0e\ \x05\x8c\x35\xb9\xb7\xef\x24\xaa\x95\x43\x71\x6e\x2f\x28\x4a\x97\ \xeb\x99\x2d\x02\x03\x0b\xc2\xa6\x40\x60\x2d\x33\x63\x4b\x43\x5f\ \x30\x86\x56\xf0\x53\x2b\x34\xe0\x58\x4c\x13\x54\x8e\x23\xe8\x9c\ \xb3\xdf\x0a\x24\x61\x8d\xed\x28\x7b\xad\x15\x4e\xa7\xcc\x60\x5e\ \x02\xe6\xf1\xaa\xb7\x36\x27\xd6\x29\x32\xb9\x8e\xa4\x56\xdb\xbb\ \x19\x13\x42\x00\x36\x8e\x4c\xf0\xb2\xb6\xdb\xc2\x07\xca\x4f\x5e\ \x91\x5b\x6e\xd7\x22\x65\x29\x56\x51\xdb\x11\xf4\xcf\x97\x9b\xc8\ \x46\xec\xca\x68\x30\xbe\x4c\x2c\x2a\xd3\xd7\x89\xa6\xc2\x0a\xb0\ \xe2\xf0\x96\xd7\x3d\xa6\x5a\x65\xc5\xba\x40\xb8\x06\x6d\x42\xaa\ \x31\x98\x91\x58\x74\x12\x01\xd4\x53\xb6\x46\x04\x49\xda\x83\x9b\ \xb1\xfd\xa3\x5e\xa8\xc8\x36\x37\xef\x24\xab\x7d\xdc\xe6\x6a\x0a\ \xc7\x2c\xcd\xe9\x19\x49\x76\x2d\xfa\x99\x9a\x74\x0e\x7d\xa1\xb8\ \x24\xb1\x1f\x84\x58\x4d\x54\x8c\xd4\x21\x99\x87\x04\xc7\xd4\x1f\ \x70\x85\x47\x39\x22\x4b\x54\x5e\xa0\x51\xc5\xe3\xdd\xf6\xb5\xbe\ \x82\x41\x2d\x54\x22\xf6\xfd\x7d\x24\xfb\xf6\xb8\xed\xd0\x4e\x93\ \x85\xa8\xbb\x4e\x18\x7e\xf2\x2d\x46\x9f\x63\xee\x69\xa9\x45\x8c\ \xb5\xcd\x8d\xed\x1c\x8b\xb5\x48\xeb\x69\xba\x0a\x62\xbd\xc9\x36\ \x5a\x62\xec\x7d\x21\x6e\xd8\x77\x5b\x27\x8b\xc2\xa6\x85\xf2\x2b\ \x37\x41\x0e\x8d\x66\xa7\x95\xb6\x3d\x20\xa3\x23\x52\x65\x62\x43\ \x13\x81\xd2\x02\x15\x14\xce\xeb\xf3\x69\x15\x09\x5c\x9a\xfe\x23\ \x63\x71\xb1\x23\xb4\x76\xae\x89\x66\xa2\x14\xee\x5b\x1b\xfe\xb2\ \x64\xdb\x73\xb7\x6b\x02\x2f\x2d\x2f\x7d\x10\xaa\xa4\x6f\x41\xb6\ \x66\x98\xe7\xd5\xdc\xc3\x79\xe2\xf6\xbc\xa3\x42\x05\xc1\xbd\xba\ \x13\x0e\x9b\x52\x75\x74\xaa\x40\x37\x06\xe0\x4c\xa7\x4d\x69\x3e\ \x0b\x14\x6c\x5c\x71\x1d\x0a\x43\x21\x52\x09\xb7\x4b\xc4\xd6\xa4\ \x19\x33\x9e\xc6\x61\xa9\x4d\x5b\x76\xc2\x41\xf9\xae\x61\x23\x80\ \xde\x54\xb8\xea\x2f\x32\x52\xf8\x24\x5f\x1b\x84\xc3\x4a\xc4\x15\ \xe2\x74\x94\x23\xe4\xd1\xb7\xad\xe1\x78\x49\x7b\x9a\x63\xdc\x18\ \xfe\x96\x21\xa5\xe5\x5d\xad\xc7\xf1\x0c\x2d\xaf\x73\xeb\x28\xa9\ \x4e\x88\x1c\x11\xed\x06\x9a\x50\x2c\x01\xa8\x57\xd4\x88\x6a\xc7\ \x3a\xaa\x1c\xf3\xcd\xa6\x69\x14\xfd\xa0\x03\x3a\x3a\x9d\x20\x03\ \xcb\x55\x4c\x90\x52\x6a\x55\xd5\x9b\x76\x0f\x36\x9a\x97\x46\x02\ \xb5\x15\x0c\x40\x27\x3d\x27\x3b\x50\x1e\x95\x42\xa6\xfe\x97\x13\ \xb6\xf4\xc3\xb6\xce\x09\xe2\x4f\xa9\xa2\x19\x76\xba\x82\xc2\x3c\ \x6a\xb1\xc9\x0e\xd6\x17\x1c\xe7\x12\xa4\x62\x2c\xdd\x0f\x22\x67\ \x82\x43\x61\x41\x11\xbb\x36\xa0\xb8\xe4\x76\x8d\xac\xc3\x1a\x90\ \x7a\x78\x1e\x6b\x5f\xde\x46\xa0\x5c\xab\x8b\x03\xc1\xed\x28\xa7\ \x54\xa2\xe4\x58\x29\xfd\xa2\xab\x8f\x19\x77\x29\xcf\x22\x50\xd4\ \xf5\x6c\xad\xb5\xad\xb8\x71\x2e\xd0\x31\x6a\x5e\x1b\x7e\x30\x44\ \x89\x57\xc4\xa6\x77\x5c\x3d\x3f\xe2\x57\xa2\x3f\x79\x48\x62\x3c\ \xbc\x13\xd4\x68\xc7\x73\x29\xe8\x63\x2a\xb5\x8d\xbb\xc5\x31\x03\ \x57\x50\x0f\xcc\x67\x9c\x8b\x2d\xcd\xc9\x18\xb4\x50\xd1\xb3\xdf\ \xbc\x68\xf9\xf1\x9c\xc4\x28\xd8\xa3\x70\xb1\x30\xc5\x4f\x0d\x09\ \x1f\x35\xbf\x48\x54\xa0\x05\x0a\x6a\x30\xbe\x6c\x07\x4b\xc7\xf8\ \x85\xc8\xf2\x2f\x16\xe2\x45\xa7\x7d\xd4\xec\x47\x19\x12\xba\x08\ \xc6\x90\x63\xde\x66\x98\xe8\x15\x55\xf8\x55\x56\x16\x06\xab\x58\ \x5f\xf4\xfe\xf3\x85\x5a\x99\x46\x20\x89\xdc\xf8\x99\x14\xa8\x50\ \xd3\x9c\x95\x50\x48\xff\x00\x9f\x59\x00\x60\x7c\xb8\x03\xa1\x87\ \x1a\x6b\x98\xd4\x1c\x2d\xca\x10\x3a\x13\xd6\x2e\x8d\x32\x2a\x3b\ \x12\x06\xd4\x32\xdd\x4a\x30\x24\xb3\x7b\x66\x4f\x45\x2d\xa7\xaa\ \xe7\xad\x97\xfa\xff\x00\x49\xd3\x58\xc7\xab\x28\x0e\xa9\x6c\x01\ \x68\x35\xd5\x45\x90\x74\xc9\xf7\x95\xb2\x87\x6d\xd6\xb9\x1d\x62\ \x58\x77\x07\x37\x37\x94\xa5\x1b\xd3\x00\x5e\xdc\xc0\x64\xed\x89\ \x55\x54\x02\xd8\xc7\x78\x01\x05\xb2\x39\x3c\x4d\x0c\x4f\xe1\xde\ \xdd\xa0\x65\x49\x95\xb5\x88\xb5\x80\x8b\x65\xbf\x00\x48\x61\x74\ \x49\xdd\xd6\x3d\x01\xb8\x69\xea\x48\x37\x74\x85\x4a\xf7\xb7\xe8\ \x64\x56\x53\x3e\x51\x88\xc6\x50\x73\x25\x57\xe9\x7c\xc7\x50\x0c\ \xc7\x1c\x0e\x4f\x49\x8b\x09\xd4\x55\x77\x6f\x3f\x2a\xe4\xcc\x66\ \x2e\xe5\x8f\x53\x31\xdc\x30\x08\x83\xc8\x3f\x73\x0a\x9a\xdc\xe4\ \x8f\xd6\x64\xb5\x49\xbd\xa5\x14\x06\x7d\x04\x56\xdd\xbd\x89\x8d\ \x63\xb1\x6d\x7c\x99\x13\x71\x71\xd4\x09\xe2\xc1\x41\x26\x29\x0b\ \x0c\xf2\x0c\x26\xcd\x85\xbe\xb0\x4d\x0c\x08\x36\x19\xed\x19\x4f\ \x76\x39\x81\x45\x0e\x4d\xa3\x40\x3b\x6d\x0a\x61\xb4\xde\xc6\xd2\ \x80\xd8\xc1\x90\x8f\x2b\x47\x23\x5c\x5f\x2a\x04\xcd\x85\xad\x7d\ \xc6\xdf\x58\x97\x20\xfc\x98\xb7\x30\xea\x54\x26\xea\x06\x22\x2a\ \x60\x58\x5c\x7b\x46\x02\xab\xbd\x98\x08\x58\xa8\xb7\x07\xcc\x20\ \xd6\x5d\xf6\x37\xb3\x5a\x0d\x22\x43\x8e\xe0\xcd\x05\x5a\x62\x12\ \x99\x27\x98\x35\x8e\xda\x03\xb9\x30\xb5\x3b\x52\x92\xb2\xf0\x7a\ \x49\xf5\xd5\x10\x05\x5d\xc4\x62\xf6\x84\xec\x82\x90\x53\x5e\xf7\ \xdc\x62\xea\xb7\x9a\xfc\x92\x7f\x48\x34\xeb\x28\x0f\x61\x6f\x58\ \x96\xa9\x99\xac\x65\x47\x89\x75\xc1\xf3\x09\xea\x8f\xe2\x27\x9b\ \xeb\x21\x15\xc2\xb5\xc5\xe3\xe8\xb8\x76\x05\x45\xef\x8b\x47\x16\ \xae\xd2\xaf\x81\xa0\x76\xe7\xc4\x60\x3e\x91\x15\x07\x98\xe6\xe3\ \xa4\xa3\x55\x55\x69\x6d\x41\x94\x45\xb1\xf7\xeb\x14\x1f\x4b\x56\ \x9e\x2a\x05\x61\xd0\xcc\x94\xce\xd6\xb5\xb9\xbc\x63\xfc\xa0\xfa\ \xe6\x0d\x65\x5d\xff\x00\x30\x2b\xe9\x1b\xa7\x56\x61\x8b\xb2\x8e\ \x45\xb8\x88\x0a\x9e\xf8\x32\xfa\x7b\xa9\xd0\x14\x70\xc4\xae\xe3\ \x7e\xfd\x20\x53\xd1\xa1\xfb\xf6\x0c\x29\xa8\xbf\xbf\xa4\x9c\xbb\ \xf8\xc6\xaa\xb1\x56\xbe\x31\x0f\x4f\x87\xd3\x54\x76\xba\x92\xac\ \x56\xdb\x4e\x66\xa3\xb5\x1e\x50\xb2\x13\x90\x78\x99\xa8\x15\x05\ \x64\xa8\x88\x2c\x40\x37\x1d\x0f\x69\x55\x25\x6a\x83\x75\xec\x4f\ \xcc\xb6\xc1\x81\x12\x84\x75\xbd\x34\x43\x7e\x41\x13\x45\x2a\x96\ \x05\x4e\xc6\x1d\x08\xe6\x15\x3a\x4b\x45\xbc\xd7\x5b\xf5\xe6\x53\ \x75\xe4\x58\x89\x9d\x24\xd3\xa7\x52\xd9\xbd\xbd\xe6\x9a\x60\x1b\ \x96\x23\xeb\x1a\x45\xc7\x97\x77\xf4\x8b\x20\x29\xbb\x6d\xb7\xa9\ \x81\x60\x03\x90\xe0\xfa\x77\x9a\x28\xab\xe4\x28\xbf\x62\x26\xaf\ \x86\xdc\xd4\xb7\xa2\x88\x64\xd3\xe0\xef\x23\xbc\x93\xcf\xa7\x0d\ \x44\x86\x4e\x27\x39\xe9\xbd\x26\xba\xef\x51\xd8\xf1\x3a\xd4\x8e\ \xc5\x21\x03\xd4\x5f\xfc\xb3\xfa\x44\xbd\x64\x6b\x91\x65\x6e\xc4\ \x71\x29\x6a\xb1\x3d\x20\x1b\x6b\x32\xe7\x9b\x88\x55\x28\x53\xaa\ \xbb\x90\x92\x61\x91\xbd\x0b\x6c\x17\x5c\xdd\x4c\xf2\xdb\x91\x90\ \x73\x24\xe4\xea\x69\x32\x30\x6b\x9e\x6d\x78\x55\x55\x7e\xcf\x49\ \xad\x62\x6f\x73\x3a\x1a\xb4\x15\x54\xa1\xf9\xb9\x53\x39\xf5\xc5\ \x92\x92\x31\xb7\x3c\xcd\xcb\xac\xd8\x90\xa7\xde\xba\xde\xe0\x83\ \x68\xa4\x2a\x0e\xcb\x67\xbc\x7a\x63\x52\x86\xff\x00\x8a\xd2\x6a\ \xa7\x6b\x92\xc3\x83\x37\x19\x32\xde\x70\xea\x72\x30\x47\x78\x62\ \x9e\xcd\x75\x35\x19\x5b\x8b\x45\x80\x19\xb7\xa9\xbe\xde\x44\x7e\ \x8e\xf5\x6a\xa1\xfc\xad\x7f\xa4\x14\x72\xb5\x04\x7d\xb2\xa7\x6d\ \xe7\xf9\x9e\x04\x25\x4f\x35\xc8\x1d\xa7\xaa\x12\xd5\x9c\x8e\x4b\ \x18\x3e\x23\xed\x20\x73\xed\x3a\x32\x6d\x7d\x46\xfb\x95\xa7\xb7\ \xb1\x26\x62\x32\x04\x0a\xc4\xb1\x39\x32\x6c\xb3\x58\x9c\x9e\xf1\ \xa8\x03\x31\x20\xe3\xfa\x4b\x16\xa8\xdf\xb0\x28\x50\x01\x27\xb4\ \xee\x7c\x1e\x89\x70\xac\xc3\x0b\xe7\x37\xff\x00\x9e\xd3\xe7\xe8\ \x5e\xa5\x65\x1c\xdc\xcf\xa8\x5b\x69\xfe\x0f\x51\xef\xb4\xd5\xf2\ \xa9\xf4\xff\x00\x97\x9c\xf9\xf4\xd7\x17\x2b\x5b\xa8\xf1\xf5\xb5\ \x1a\xf8\x38\x1e\xd1\x25\x8d\xa0\xaa\x90\xe0\x82\x1b\x33\xc6\xf7\ \x20\xe2\x58\x87\x6f\x11\x08\xe4\x88\xba\xb4\xc2\x69\x55\x40\xf9\ \x98\xb7\xf4\xfe\xf0\x91\x88\x71\xb3\x93\x89\x46\xa5\x01\xaf\xb3\ \xf2\x00\x0f\xd3\x98\xea\x4f\x54\x5a\xc0\x7b\x98\x92\x6c\x6c\x72\ \x23\x0d\xcb\x12\x0e\x6f\x9e\xf0\x19\x6e\xdd\xad\x18\x18\xc8\x19\ \x6f\x14\x52\xcf\x62\x2c\x3a\x5c\xc6\x93\xdb\xa4\xf2\xf0\x7f\x68\ \xea\x25\x85\xf8\x16\x8a\x23\xb4\xac\x85\x07\x8b\x7b\x45\x9a\x40\ \x92\x41\xbc\x65\x00\xa5\x6e\x3a\xcd\x01\xb7\x63\xa4\x6a\x2d\x88\ \x8d\xa5\xa7\x00\x0a\xb5\xc9\x54\x3c\x0e\xad\xed\x0d\x25\xd3\xa0\ \x5c\x12\x08\x55\x1f\x31\x3c\x08\xcd\xe0\xaf\x83\x4f\x09\xfb\x93\ \x3d\x52\xa6\xf5\xd8\xaa\x15\x07\x0a\x22\xe9\x8c\xf7\xf5\x82\x1a\ \xd9\x30\x79\x8e\x52\xa8\x2f\xd6\x24\xb2\xdf\x1c\xf7\x8c\x41\xb9\ \x4b\x1f\x94\x75\x81\x3a\x83\x59\xbc\x42\x30\x38\xbc\xd0\xca\x5a\ \xec\x3a\xf7\x92\x55\xd4\x1e\x38\x1c\x09\xa1\xfc\xb7\xbc\xb1\x6b\ \xa0\x8e\x99\xb0\xb0\x13\xcd\x52\xff\x00\x2c\x92\x9b\x60\xfb\x42\ \x46\x2c\x0a\xa8\x30\xc3\xaa\xe9\x39\x00\xc2\x04\x9b\x01\x13\x48\ \xaa\x8f\x33\x7d\x04\x33\x53\x70\xb2\x63\xfa\xc1\x0d\x88\x42\x77\ \x1c\xf6\x98\xd5\x6e\x39\xbd\xb8\x89\x2c\x0d\x81\x9e\x51\x71\x7b\ \x89\x62\x35\x59\x8e\x60\x54\x6e\x93\x69\xa9\xf9\x8c\xf3\x90\x99\ \xe4\xc9\x13\x53\x75\xb2\x6c\x22\xce\xa4\x2e\x08\xbf\xaf\x59\xea\ \xed\x7c\x99\x0d\x46\x06\xe4\x1c\x89\xa9\x34\x5a\xe9\xf8\x8c\xcf\ \x4f\x3b\x91\xb0\x6d\xd2\x4d\xf1\x4f\x2e\xa5\xb3\x75\xb6\x08\x87\ \xa2\xdc\xcc\xac\xbc\xac\x96\xad\x70\xd5\x1f\xc4\x5c\x13\xf4\x94\ \x9d\xaa\xf2\x3d\xe9\x1e\xf2\x57\xa9\x93\x98\xf6\x52\xb4\x89\x5f\ \x32\x93\x83\xda\x4a\xea\x77\x1b\xde\x6e\x33\x40\x58\x99\xd0\xf8\ \x53\x14\x0d\x54\x8c\x2e\x14\x77\x32\x5d\x36\x92\xad\x62\x00\xf2\ \xaf\x56\x3d\x23\xb5\x7a\x8a\x48\xa3\x4f\xa6\x17\x55\xfc\x5d\xcf\ \x79\x5e\xfa\x53\xfa\xa9\xaa\x58\x90\xc7\x72\x9e\x62\x35\x14\xd9\ \x18\x14\x03\x69\xe0\x89\x35\x0a\xac\xa7\x39\x07\x99\x6a\x30\x2b\ \xe5\x20\xa1\xe5\x48\x87\x87\xd2\xd1\x80\x00\x1b\xfb\x89\x76\x96\ \xb3\x51\x24\xa1\x06\x4a\x74\xac\x7e\xf2\x8f\x99\x47\x40\x72\x26\ \x0d\xe8\x6f\x63\x0b\x95\x3a\x0f\x5d\xeb\x67\x7e\x47\x48\x48\x03\ \xb0\xf1\x10\x7a\x93\x89\x02\x30\x3e\x6e\xc6\x52\xda\x9a\x85\x2d\ \xc8\x99\xc6\xb5\x6a\xd6\xa4\x6a\x11\xe1\xbb\x29\x39\xb7\x48\xf5\ \xaa\x89\x73\xc2\x91\xee\x67\x25\x59\x1a\xc4\xab\x21\xee\x25\x34\ \x6a\x56\x51\xe4\x1b\xd4\xf2\x39\x99\xb0\xca\xbd\x75\x0a\xbf\x28\ \xde\xbf\xee\xe6\x10\xa8\x8d\x72\xa7\x69\xf4\x91\xa6\xa1\xc1\xb8\ \x44\x53\xd8\xe2\x36\x96\xb0\x93\x62\x8a\x3e\x98\x86\x1d\x13\x6f\ \x0d\x8a\x84\xfb\xc3\x15\x48\x16\x67\x5b\xcc\x6d\x42\x5b\x21\x01\ \x3d\xa0\x87\xa6\x7f\x0d\xef\xd9\x6f\x04\x35\xad\x4f\x71\xba\x67\ \xb8\x9e\x7a\xd7\xf9\x18\x0f\xa4\x2a\x74\x95\xf2\x11\xc7\xd2\x17\ \xd8\x95\x8e\x2a\xaa\xfa\x34\xba\x5d\x93\xba\xa0\x20\xab\x91\xd8\ \x81\x31\xab\x33\x1b\x55\xf3\xdf\xf1\x70\x61\x7d\x9e\xaa\x92\x13\ \xf6\x31\x55\x43\x2b\x59\xd6\xdd\x7b\x45\x1b\x4a\xb0\xa4\xe2\xcc\ \xc4\x1e\xf3\x5a\xb3\x07\x22\xd6\x2a\x48\x32\x4a\xac\x97\x00\xb6\ \x6d\xd6\x1d\x56\xfb\xca\x6d\x7c\x54\x5b\x5f\xd4\x4b\x16\x9d\xbf\ \xc5\xa5\xb8\xf0\x39\xf7\x93\xea\xe9\xf9\x56\xf9\x2b\xd7\xbc\x66\ \x80\x8b\xd6\xa4\xe4\x0b\x8e\xbd\x0c\x0d\x43\xb0\x2a\xa7\x1e\xf2\ \x9e\x84\x06\xeb\x59\x0e\x0f\x9a\x22\xb0\x26\xa3\x82\x06\x09\x94\ \x3d\x97\x50\xa4\x7c\xa5\x86\x3b\x48\xf5\xc5\xa9\xea\xea\x0b\x5f\ \xcc\x7f\x99\xd2\x33\x5a\x18\x25\x30\x09\xc9\xc1\x97\xfc\x1c\x6c\ \xaa\x4b\x7c\x8a\x84\xce\x2b\x31\x37\xe7\x99\xd7\xd1\x1d\xbf\x0e\ \xd4\x3d\xf2\x14\x28\xfa\xcb\x94\xe9\x44\xba\xed\x3a\xd2\xd4\x91\ \x6f\x23\x0d\xca\xc3\xa8\x92\x35\x3b\x8b\xa3\x63\xd7\x13\xa8\x96\ \xd5\x68\x8d\x32\x7e\xf6\x95\xca\xdb\xa8\xed\x39\x60\x33\x12\x2f\ \xc7\x37\x9a\xe3\x45\x2d\x90\xd3\x4b\xb7\xcc\x4e\x27\x94\x85\x4b\ \x75\x33\xcc\xec\x5c\x76\x13\x0b\x2b\x3f\x63\x34\x1d\x0f\x83\x51\ \xf1\x2b\x83\x63\xc8\x00\x8e\xe6\x74\xfe\x33\x58\x16\x5d\x3a\x7c\ \x94\xc5\x8f\xbc\xdf\x82\xd1\x1a\x5d\x03\x6a\x9f\x2a\xab\x71\xee\ \x7f\xf5\xfc\xce\x63\x56\xf1\x3c\x4a\x84\xf2\x67\x2f\x6b\x5e\x44\ \xfb\xc8\xa9\xce\x04\xa4\x54\xf3\x10\xc2\xf2\x2a\x8e\x08\xbe\x3d\ \x63\x0b\xfd\xe5\xbb\xda\x6e\xc6\x57\xe8\x95\x7e\xd0\x2a\x0e\x29\ \x8d\xd6\x9e\x62\x76\xb3\x9e\x58\xda\x26\x9b\x05\xa5\x8b\xdd\x8e\ \x23\xc7\x17\x6c\x85\x17\x3e\xf3\x0d\x25\xc5\xf9\xcc\x05\x62\x4e\ \x2f\x78\xf5\x55\x07\xef\x0e\x7a\x81\x06\xe3\x84\x5b\x09\xa0\x02\ \x87\x96\x36\x1f\xbc\x2f\x40\x00\x1d\xcc\xf1\xc9\xb7\x22\x78\x82\ \xc6\xd7\xf6\x16\x92\x0d\xb3\x70\x6f\x36\x85\x2a\x95\x1f\x6a\x29\ \x31\xcb\xa7\x44\xcd\x76\x2a\x79\xd8\x39\x3f\xda\x61\xac\xcc\x36\ \x28\x08\x9f\x95\x7f\xaf\x78\x6a\x35\x05\x1d\x39\x26\xe2\xb5\x4e\ \x07\xe5\x1f\xde\x2e\xa6\xea\xb7\x76\x37\x6e\xe6\x02\x79\x9c\x28\ \x19\x32\xa4\xa2\xe1\x6e\x14\xfb\x9c\x40\xa4\x34\xf6\x8b\xb6\x07\ \xf3\x16\xf7\x61\x60\x2c\x04\xa9\xd5\x6f\x7a\x95\x05\xfb\x28\xbc\ \x06\x6a\x6b\x94\xa5\xbb\xff\x00\x23\xfd\xa3\x2a\x46\xcd\xd1\x6f\ \x79\x7d\x35\xf1\xb4\xea\xb4\xfe\x65\xe4\x19\x2d\x5a\x95\x00\xba\ \x00\xaa\x7b\x28\xc4\x43\x55\x72\x4e\xe6\x27\x1d\x4c\xd6\x68\xf1\ \x53\xd1\x71\xf3\x2a\x8b\x75\x26\x08\x14\xc7\x35\x8f\xb0\x52\x64\ \xab\x54\xa9\xc3\x18\x6b\xa9\xab\xf9\xaf\xf4\x96\x54\xb1\x1a\x98\ \xe3\x36\xfc\xd0\xd4\x96\x26\xec\x00\xb7\x02\x42\x9a\x87\x37\x27\ \x6f\xe9\x1b\x4b\x50\xc5\x80\xb0\xfd\x21\xf9\x5a\xb8\x28\xdb\x86\ \x17\xb4\x24\xa4\xd6\xc9\xb4\x90\xd7\x62\x08\x0d\xfa\x45\x1a\x8c\ \x79\x63\xfa\xc3\x0e\xba\x4d\x4d\x45\xb7\x55\x5b\x8e\xd0\x5a\xa2\ \xa1\xb0\x52\x4f\x73\x21\x42\xc7\xac\x30\xc6\xf6\x26\x18\xb5\x47\ \x8c\xcc\x73\x7f\x69\xa5\xc4\x95\x9d\x94\xcd\x15\xfa\x30\x8e\x2d\ \x6d\x46\xbf\x69\x0d\x43\xe6\x39\xc1\x95\xb6\xd7\xe1\x5a\xf1\x15\ \x29\x1e\x42\xb0\xed\x71\x1e\x22\xad\xf8\x21\x2c\xd5\xc1\x3c\x21\ \x33\x91\x55\xf2\xd7\xee\x67\x5b\xe0\xd4\xdd\x17\x52\xe4\x5b\xc8\ \x40\xfd\xe7\x2a\xbe\x9e\xb7\x88\x6c\xb8\xbc\x67\xb5\x5f\x1b\xa6\ \xab\x52\x9a\x9d\xac\x6c\x4c\x67\xda\xdf\x6d\xca\x2d\xfb\xda\x4f\ \xb2\xa2\x26\x54\x8c\xc1\x67\xf2\x88\xe3\x3a\x2a\xfa\xca\xcc\x0a\ \x13\x65\xec\x22\x03\x91\xd2\x6d\x41\x73\x78\x2a\x0d\xed\x35\x22\ \x35\x19\x8f\x02\x3a\x95\x57\x43\x78\x5a\x6a\x6a\x50\x86\x36\x63\ \xc4\xd7\x42\xa6\xd0\x4a\xe8\x55\x2c\x03\x53\x3b\x18\x76\x94\xf8\ \xa6\xa2\x8b\x85\xdd\xfc\xce\x62\x2b\xa9\xb8\x06\x54\x95\x6e\xd8\ \xc3\x09\x8b\x1a\x94\xd6\x28\x4d\x88\x2a\x7d\x44\xc0\xad\xc8\x0a\ \xde\xc6\x3e\x9d\x51\x52\xc2\xb2\x0b\x8e\xa2\x6b\x04\x19\x54\x2c\ \x3b\x83\x33\xa4\xb4\x2c\x17\xe5\x23\xde\x12\xd6\xcf\x96\xe4\xf4\ \xdb\x89\x9e\x3b\xf0\x10\x7f\xf6\xcc\xd1\x59\xcf\x40\x3f\xf1\xc4\ \x91\xe8\x95\xea\x7f\xa9\x48\x5b\xbb\x1b\x18\xf5\xa3\x48\x0d\xad\ \x5c\x1f\x41\x99\x3a\xa8\x2a\x19\x9c\x86\x3d\xe6\x58\xdb\xca\xc0\ \xfa\x93\x68\x15\x37\xd2\xd3\xfc\x0c\x7f\xf2\x38\x8b\x7d\x5e\xd2\ \x05\x1d\x8a\x3d\x16\x28\xf1\xe6\xbb\x7b\x41\x29\x7c\xa2\x91\x89\ \x62\x3c\x6a\x6b\xb1\xcd\x52\x07\x5c\xda\x53\x46\xa2\xb9\x02\xec\ \xcd\xe8\x24\xfa\x3f\x87\x55\xaa\x0d\x5a\xc5\xa9\xd2\x1c\x92\x32\ \x7d\xa5\x3e\x2b\x53\xfb\xbd\x35\x16\x45\xb6\x58\x83\xb8\xc2\xe7\ \xc3\x15\x29\x5a\x59\xaa\xe0\x0e\xd7\xcf\xe9\x3d\xa9\xd5\xd1\xa8\ \xa0\x6c\xdc\x07\x1b\xa7\x2a\xae\xf5\xb9\x28\xce\xd0\x55\xaa\xbd\ \x3b\x10\x41\xc8\xf6\xed\x0f\xca\xd5\xb5\xd6\x96\xdd\xc2\x82\x30\ \x02\xe4\x13\x98\x03\xc1\xd5\x50\x7a\x68\x0d\x27\xa6\x77\x0b\x99\ \x1f\x9d\xac\x08\x27\xa4\xe9\x69\x74\x94\xe9\x3a\xab\xbb\x1a\x8e\ \xb9\x50\x3a\x19\x5e\x97\xa9\x99\xcd\x37\x06\xa2\xed\x62\x2d\x7f\ \x5e\xd0\xb5\x83\xc4\x40\xd6\xb1\x00\xff\x00\x10\xfe\x3a\x87\xc2\ \xa4\x79\x75\xe9\xdf\x88\xa7\xa9\xe2\xfc\x23\x72\x9b\x54\xa4\xc0\ \x93\xd7\x22\x53\xfa\x9c\xff\x00\x9e\xa0\x56\xbf\x22\x23\x52\xbb\ \xeb\x55\x46\xf9\x95\xcd\xbd\xaf\x1a\x1b\x75\x44\xac\xb6\x19\x1b\ \x87\x6b\xc2\xd5\x59\xab\xd4\x70\x6c\xea\xc4\x7e\xf3\xa4\xe9\x97\ \x36\xa2\x58\x86\x53\x3a\x65\xc5\x2f\x84\xa9\x6e\x2a\x56\xfd\x40\ \x13\x9e\xa3\x3b\x90\xe4\x9b\xdb\xbc\xaf\xe3\x15\x15\x34\x7a\x4a\ \x56\xce\xd2\xc6\xde\xa6\x37\xbc\x82\x15\x4d\x9e\x85\x7b\xab\x1e\ \x2e\xa4\x4a\x75\x94\x13\x55\x40\xea\x34\xb6\xdf\xff\x00\x75\x3a\ \x89\x16\x96\xb0\x74\xf0\x5b\xca\x47\x0d\xfd\x22\xe9\x6a\x2a\xe8\ \xf5\x3b\xd6\xe0\x83\x6c\xf5\x96\x2d\x4f\xb8\xa1\x21\xa3\x74\x74\ \x1b\x51\xa8\xa7\x45\x2f\x76\x39\xf4\x13\xa1\xaa\xd3\xd1\xf8\x95\ \x1f\xb4\xe9\x00\x15\x97\xfd\x4a\x60\xfe\xf1\xbf\xe1\x4d\x39\x5a\ \xd5\x75\x55\x05\x85\x3f\x28\xbf\x78\xde\x5d\x68\x93\xb5\x7f\x1d\ \xd4\x7d\x8f\x46\x9a\x34\xc1\xb5\xd8\x4e\x10\xaa\x1a\x83\x11\x83\ \x78\x5f\x19\xd6\x0d\x4e\xa6\xa5\x42\x79\x26\xde\xdd\x27\x3c\x54\ \x02\x91\x17\x39\x32\xe3\xc7\x22\xb7\xb3\x4b\xdf\x04\x73\x19\xb8\ \x9a\x9f\x41\x23\x0e\x4d\xaf\x2c\xa6\x6f\x51\x1b\xa5\xae\x7e\x93\ \x41\x72\x11\xe2\x2d\x30\x7e\x5c\x18\xfa\xcd\x73\xb6\xfc\x64\xc8\ \x74\x17\x7a\xfb\x89\x3d\xcf\xac\x70\x25\x9e\xd9\x26\xfc\x4c\x58\ \xd0\xa9\x00\x4e\x6d\x09\xc8\x01\x61\x52\xa1\x55\xc7\x95\x08\x1f\ \x99\xb0\x3f\x79\xd5\xa3\xf0\xc5\xd3\xd0\x5d\x4e\xa6\xf5\x8b\x0b\ \xa8\xa6\xa4\xa8\xf7\x99\xb6\x43\x23\x9f\xa6\xd3\x9a\x8b\xe2\x31\ \x09\x4f\xf3\xb7\xf4\xef\x1e\x11\x95\x7f\xcb\x53\x2a\x3a\xd5\x7c\ \x13\xed\xda\x36\xa6\xad\x51\xcb\x2e\x94\xb9\x02\xc3\x79\x22\xdf\ \xa7\x12\x2a\xba\xdd\x43\x35\xc5\x93\xdb\xfb\x98\x77\x4f\x50\xd5\ \xd2\xa3\x12\xd5\x2b\x35\xba\xec\x42\x7f\x7c\x09\xe2\xba\x6a\x43\ \xe4\x07\xd5\xea\x0c\xfd\x04\x8d\xeb\x55\xa9\x7f\x15\xd9\xcf\xab\ \x45\xb3\xf0\xa0\x5a\xf3\x59\x46\xaf\x1a\xba\x0a\x7c\xae\x46\x38\ \x44\xb7\xef\x71\x0f\x4b\x52\x8d\x77\x1b\x68\x1f\x52\x58\xce\x36\ \x4d\x4b\xdc\x03\x3b\x9f\xe1\xf5\x53\xba\xf7\x25\x73\x2e\x53\x22\ \x97\x68\x75\x55\xa9\x50\xae\x69\x9d\x32\x5c\x77\x63\xfd\xe2\x8e\ \xaa\x91\xe1\x76\x9f\x40\x2d\x24\xd6\xd6\x6a\x9a\x97\x66\xc6\x6d\ \x26\x2d\x66\xc5\xcf\xbc\xa7\x15\x6a\xd6\x72\xcc\x45\x3a\xa1\xbd\ \x2f\x63\x22\xab\x5e\xba\x12\x0b\xba\xfb\xc0\x24\xde\xf1\x86\xb0\ \x6a\x5b\x6a\x0b\xa8\xfd\x44\xd6\x60\xd2\x8e\xa5\xce\x2e\x8d\xee\ \xa2\x18\xaa\x30\x5a\x92\x5f\xd3\x12\x6a\xb4\xb6\x8d\xc8\x77\x27\ \x71\xd3\xde\x78\x31\x16\xce\x26\xb1\x9d\x5a\xaf\xa5\x14\xc9\xa9\ \x41\xcd\xcf\x2a\xf6\xfe\x44\x75\x27\xf8\x73\x11\x6a\x5a\x90\x7a\ \x79\xc7\xf6\x91\x54\x61\xe1\x53\x0d\xd7\x31\x9a\x62\xa2\xaa\xe7\ \x83\x33\x87\x55\xb9\xd1\x00\x71\x5f\xd6\xec\x20\xa3\x68\x2f\x73\ \xe3\x8f\xa0\x8b\xd7\x28\x0e\xf6\xe2\xf7\x12\x75\x04\x0e\x3e\xb2\ \x90\xba\x74\xdf\xe1\xf7\xc2\xd7\x3e\xb8\x86\x5b\x41\xd1\x2b\x1f\ \x72\x27\x3d\x2c\x05\x81\xcc\x3f\xa4\x2c\x5a\xac\xd5\xd2\x81\x8a\ \x2c\x47\xfb\x9a\x63\x6a\x15\x45\xd2\x85\x30\x3b\xda\xf2\x75\x5b\ \xf2\x61\x5f\x6e\x2f\x88\x61\x1b\x6b\x2a\x91\x60\x42\xfb\x09\x15\ \x7d\x45\x52\x6c\x6a\x35\x89\xe8\x63\x2a\x2d\xc6\xe4\xc5\xba\x49\ \x18\xdd\xc7\xf1\x35\x24\x67\x5d\x4f\x87\x16\xff\x00\xa5\x6a\xea\ \xdf\x22\xd3\x93\xa9\x2d\xe2\x61\x8e\x47\x79\xd9\xd2\x8d\x9f\xe1\ \xdd\x5b\x9c\x02\xcb\x38\x95\x0e\xe3\x60\x78\xb4\xb8\xfb\x55\xf1\ \xa9\x56\xa2\xd3\xb0\x73\xfa\xcd\xf1\x6a\x32\x8b\x00\x4d\xfb\x45\ \xe3\x81\xc1\x94\x69\x6b\xad\x1a\x04\x1a\x5d\x72\x41\xcc\xd0\x8c\ \x60\x42\xf9\x94\x5f\xb4\xcd\xab\xc9\x4b\x46\x0d\x55\x16\x27\x7a\ \x30\x1d\x2d\x98\x26\xb5\x0c\xdb\x07\xa5\xc4\x88\xd4\xa6\x3c\xa6\ \x69\xda\xd9\x07\x3d\xa2\x91\x94\x8f\x98\x42\x60\x6c\x4f\x36\x92\ \x53\x4a\xa9\x02\xcc\x41\xb7\x78\xc5\x29\x7b\xb2\x15\xf5\x12\x25\ \xb9\x5b\xde\x3a\x9d\x7f\x0c\x58\x10\xdf\xc4\xcd\x85\xd0\x53\x49\ \x80\x0a\xf9\xfd\xe6\x6d\x74\x6b\xa8\xbd\xba\x88\x9a\x5a\x8d\x2b\ \x8f\xbc\xa4\x41\xf4\x32\xaa\x35\xb4\x0a\x2f\x7a\xc4\xfa\x01\x31\ \x48\x54\xbb\xb0\x18\x37\x8e\xa1\x40\xb5\x4f\x94\xd8\x1f\xd6\x50\ \x9f\x11\xd1\xd3\x1e\x5d\x29\xa9\xdb\x79\xb4\x65\x6f\x89\xd4\xa6\ \x89\xe0\xd3\x4a\x45\x85\xfc\xab\x33\xb4\xf4\x14\xf8\x7e\xaa\xad\ \xdb\x65\x81\x38\x26\x17\xfd\x3a\x95\x3b\xfd\xa7\x57\x4d\x48\xe9\ \xba\xf1\x26\xbe\xa6\xb0\x3e\x25\x57\xfa\x98\xb6\xa4\x0b\x65\x8b\ \x13\xda\x5d\x9e\x97\x53\x1f\x0c\xa6\x54\x29\x7a\x87\xa9\x02\xd3\ \xa0\x1a\x85\x1a\x22\xa1\xd3\x85\x27\xe5\x42\x6e\x64\x3a\x6d\x32\ \x69\x69\x8a\xf5\x57\x75\x43\xf2\x21\xe9\xea\x67\xb7\x3d\x56\x2f\ \x51\xae\x7d\xe6\x2f\x6d\x78\xa5\xbe\x22\xf6\xb1\xa3\x4c\x0e\x33\ \xd2\x78\x6b\x2a\x35\xfc\x31\x40\x90\x2f\x91\x23\xaa\x97\x22\xc4\ \x5a\x4d\x54\x3a\xfc\xbf\xa8\x8c\xe3\x06\xd7\x57\xc7\xaa\xc3\x73\ \xd0\xa6\xe3\xa1\xbd\xa2\xbe\xd1\x41\x5f\x6d\x5d\x32\xaf\x5b\x86\ \x99\xa4\xd4\x53\xad\xa5\x09\x50\x6d\xa8\x0d\xaf\xde\x0e\xa6\x85\ \x65\x37\xa6\xc1\xc0\xe8\x44\x33\xe1\x38\xb6\x93\x07\xec\xe1\x87\ \x70\x3f\x98\x9d\x5f\xc4\xf6\xb3\xa5\x1a\x1b\x5c\x03\xe6\x23\xb4\ \x5d\xd9\x53\xc4\x55\xb1\x18\x3d\x27\x2f\xe2\xda\xe3\x56\xc6\x8f\ \x94\x5a\xcf\xeb\x35\xc7\x8e\xd1\x6e\x28\xd5\x6a\x4b\x04\xd4\x31\ \xde\xb5\x06\xc6\xff\x00\x6b\x0e\x61\x7c\x34\x9a\xf5\x2b\x50\x65\ \xb7\x8b\x48\x80\x07\x71\xc4\x87\xe1\x60\xea\xb4\xda\x8d\x29\xb0\ \xc8\x64\x3f\xee\xe9\x1b\xf0\xca\xec\xb5\x69\x54\xda\x43\xd3\xa8\ \x15\x87\x7b\xff\x00\xf9\x35\x66\x33\xa8\x1e\xa1\xa6\xca\x43\x64\ \x72\x3b\xe6\x51\xae\xf2\x6b\x1d\xc1\x04\x13\x73\x11\xf1\xe4\xf0\ \xb5\xf5\xc2\x8c\x2d\x67\x03\xf5\x85\xaa\xac\x1d\x96\xaa\xe6\xea\ \xbb\x87\xb8\xff\x00\xf6\x6d\x92\xdd\x00\x75\xa8\x87\xc8\x7b\x74\ \x83\xfe\x24\x62\x35\x94\xd2\xf6\xd9\x45\x57\xf6\x9e\xa2\xfb\x5c\ \x5a\xcd\x4d\xba\x5e\x1f\xf8\x9a\x91\x3a\xe7\x70\x40\x00\x28\xfd\ \x84\x67\xab\xe3\x97\x4a\xa1\x05\xaf\xcc\x72\xd6\x4a\xc3\x6d\x63\ \x66\xfc\x2d\xfd\xe4\x82\xeb\xba\x03\x9b\x01\xeb\xde\x6f\x19\x54\ \x95\x75\x3a\x2d\x48\xa8\x8c\x55\x87\x04\x70\x44\xfa\xe6\x2e\xff\ \x00\x06\x2c\x8b\x4e\x9d\x7a\xc9\x91\xc0\x2c\xc0\x5f\xeb\x69\xf2\ \x1a\x4a\xc0\x94\xa3\x58\x6f\xa6\x48\xe7\xa4\xfa\x0f\xf1\x43\x54\ \x3a\x7d\x28\xa2\x08\x0a\xbe\x21\x0b\xca\xdf\x8c\x7b\x5a\x73\xe7\ \x36\xc8\xd7\x1f\x2b\xe7\x3e\x20\xad\x49\xcd\x3a\x8a\x55\x86\x2c\ \x62\x54\xfd\xc3\x5f\x39\xbc\xbb\x57\xf1\x11\x58\x8a\x7a\xda\x42\ \xa0\x18\x0c\x30\xc2\x2c\x69\x69\x54\x53\xf6\x5a\xe1\x83\x0f\x95\ \xb0\x66\xf7\xfa\xca\x44\x24\xcb\xe8\x1d\xb4\x4b\x74\xdb\x63\x17\ \x4f\xe1\xfa\xbc\x8f\x0b\xeb\x78\xd1\x4a\xad\x2d\x35\x55\xa8\xb9\ \x04\x70\x65\xa8\xc4\x63\x4a\x8a\x95\x36\x2c\xd7\xbf\xa0\x8c\x1a\ \x9a\xae\x36\xee\xc1\xe6\xd8\xbc\x92\xa3\x10\x29\x8f\xf6\xca\x74\ \xaa\x3a\x0c\xff\x00\x10\x31\xff\xd9\ " qt_resource_name = b"\ \x00\x16\ \x02\x65\x98\x67\ \x00\x4e\ \x00\x6f\x00\x2d\x00\x4f\x00\x6e\x00\x65\x00\x73\x00\x2d\x00\x4c\x00\x61\x00\x75\x00\x67\x00\x68\x00\x69\x00\x6e\x00\x67\x00\x2d\ \x00\x33\x00\x2e\x00\x6a\x00\x70\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\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() PyQt5_gpl-5.10.1/examples/graphicsview/embeddeddialogs/No-Ones-Laughing-3.jpg0000644000076500000240000007401213245231431026764 0ustar philstaff00000000000000ÿØÿàJFIFÿÛC  !"$"$ÿÛCÿþNo One's LaughingÿÀ"ÿÄÿÄ>!1AQ"aq2#BR‘¡±ÁÑ$3bðCrá%‚ñ4Sc’ÿÄÿÄ !1AQa2BÿÚ ?°U]¢½zŒ÷ùC·þ >³Q¸šuÝ}¬';SU«U-ÀP€*æÜϤü¼}u»Rh«Ž.Æ,ëµÿü‡¿[™Ô¸Áµ»Ì5–E®‚ku$åÃ[ºƒ=WXÀR‘÷A ¹ÙÐL-qÎe‘j¯´¡7m5;õ±"ó¡ð}U uÀé÷\N ÍûÆÒªUƒ)ÊñØ¥u~#AiêYK…$ß"Òf£QFâ.;®eš¦߇%qþ­,?´ç ̶(ÄÎaÇp×¢Ùö7880Ído›ÊOQ'®ÉÈ=DÓ,Z†ClƒûˆeU¾òŸGi8;–ÝGèT*n1J+ä¨üª:ÂWȰ±æÓ5+w@¸í‘͸‚_©èn'€dtË[›^UO:jˆyY*`‰"ç1Ék\ˆ–ËhÛ~“4ÆÙg˜)@½ŒÝÂ×"¡ À‚b*m,pzˆu›$Þòu'uøfã.ʰáj·<Ô‚H¹õmCÿðm`Õp='¹Ü;ËŒõr -Þ0\Òk÷ŠÌeþìÛ¼Ó!¶&3Дô’`¼`$už„‚ ¡Ø  J±³.{ƒ0'¶\È›Mãqâ=)-ïâ LÓÐ}§•¿SˆõEÜû½Í­Hõ5§»$ŸÚtkܺØXI%0·Àýeàx´ÔòÀZÓj”Ë5îOkΦš’é© Õî~Eþ¦+IHQ_¯ò¯xuj5f,yë1nµ:&¶úŽ]Û&yTâì-5²á&@H ·<ˆB@Qrx´¨S»\çÒ1k‚qlØKV%4[1úÝ> ©"Gê"J™“~LezÃOHÔ¨nã…’gÅÖ£Rð) üÍ{\N0ѲÜ=J@ù¦×ªõw³1»_¯y%g ¨s{Nœeñ›uv‡KN…Rÿl@¤vç®'gJt U¯§ ÕNIa€ÖçõŸ(µ 6e¶ Ä®½qB’W½®n=G?Irãj— ×^ª;±»0õë+DÄ…}È8þmWiûÅùA·º·þw‘=Å ‰ÃR}ãÛƒý&ã5ŒÞ q³(|À_™Æœý¸¸áé©·Ó´æ×/ˆTlr/ò·[{Ë>%SÆø~X«…_ ½â_`ž%R©>mnÆ&¦‰Õˆt6îålªÓª£ÌpVöý&-WV"R-Èn‘Ú’étÍSUIßsÎgSüLõ?ê•7.Ç -è‰ÓêÚ†¦J©M¬Àܨ<óµñG¦>!Q,¨ž <ƒ3mÓ'O˜¯Yk[í`ؾäÁŠ¥J‚ÔGPRÇŠŠGñ;ªÚz”•ÛEH‚mcqÐÉ?ÄTtT<%Ó§‡X‹Ô@Ä…íõŒ½à³éޏ´k%E?-ªŒþ¦ BV©¦Ô«#m¾Óá f«k 9 'J®ÚŸ£ÝIšÀ¬)T5pÆÊ-n²ÊZäZai"Ó7¾à.ß©‘jÑ|•q‘oÒnŽš½O1ÜÇÒFIQƒ÷óC$s3¯3L¼Üñ5X±dƒ2ùâIJ°¶ ð`O‰VéúO3q$a`&£g D–¿Y´Î ¿ ’uþ ªJz‘J¡ûªžVÌWÄh6—VôO+ê$ pݽgf¡:ÿ… ¼×Óa»•™³.µìr\㼨Tw¡šolý"ÛåöšdEA7N{Lü[€÷‹ÏXÔ`Z̓$«}Š¿uÍç˜U”§ö‚Ëþ\ø[>Æ.‘ówSÌ í;y…ÿ´H¸6=á¨(Ê., ÏVòÖq릋¢ñ›‡y ¾Þ°Ö¯xaÕ$Þ.«qÖ‰éIfÇ&R {nöÏ&OY®Ö\(âQX<1õ=䮤& ®Ž¬ÿðÚeñäÎI¹¸:¨_áTnxoï!*%MĸªD%-L‚Ö”![@ðI<ÖÓ8"äG 6Ð}øŽ¥R¥C³p Ø BÓ‰×Nç“oxú:6¨v« Ç„¦/´[ÔÂZ΄ì;p&4áÇá•/«€;döTÅ0ª;òešµp@'osÄURªÄ-˜Ž§ûCoÒRMÙ¯´Íø‚ŽÇ¿éM˜µ²dŒ§L’,'KG@;‚y홪XŒzKª¶CÀé9Þ_‘3·Š|ÂÀp'–‹q(Ç7°ï £÷™Ó‰"y„†ŠÇÞk0o)àÀðÀ7’;Ä$á@ö˜àm&öéÍÞÐöó™"ÍB¦Ê,zNn¸šµ ÛŽe¬ä«7n'7PÎ}æø³S±µ…ý$õ¼ÔÇ¡6úÆ9,l7ÄkhëÀž“¤é„Vûµ9ÇXUª „S|(㼦Ôͪ-½&;RW Ü·I »GLÔ )0*PŸN‡é!#ïƒ1çÊÿÁŽÒj›OUZš€;w‰Õ7Þ9U°cqé ;LT£IZG9ò¸µï؉WÃé§…[áÍw7Ò'‚GiE5©uÁ·^Æ’¿Ùê'ˆru· ÆÅcR£m8 ŽÁa°¸ÚŒ€µûÊþ5Bõ½+x5üâÝúȆÚbÃ/ÒÑ—Eéඦ\oîg_âo¿I Ô^÷M¬=§£n!˜ÜœÚuôŽ•õ /àT/Öø·´Ï/”Â5£§ \¼qä—Ös¯bÕêù¿-ú˜§¬Õ¼Cvc{žðØ‚. ÞjLCÌX“º÷¼6"ï0ù„À,p#Èw…y­ _Êoü@'fˆ†¨mŽÂ?G°nQsN¨°·ánÆ#_÷kFÕ/ú˜%¨1o„Ö¦êäÄ‹šfÝ=bÈIÎ!ƒqn±KºðÔ‹D1Äõî=`óˆ@ÓMPO1ëM@ˆñ,qXuIÜ.zI-ŽD»áZäÓjC:ݕǡœ”+|±‡¹ Á0³L¸¿â”©iõlŠ<‡*GPdŽˆ[WuÕü39}?î¦D `”UHƒƒqÒûÒi}¬lo k’¶ Z Ú.5pøý ­6f0`o‚ sïtxY`F•7ÝOÿYíA¹Fî¿ú“°d h÷;è+~V Én‘$Zx^òF_¬Êu¨ ™€nH¶O2&jÁñH‹x·^‘Ú YR¯q¬»ˆ@¡Éÿ¤Ùí Cµ‰PÓ®ƒ#|ÊfüXÓ¯Y+SS+aÜZ?¹¢ÕçaeÖnŸmZl—ò=á÷WøF¢‘w,I>ÂNi”?#‰fš•ÍO5콊̩NàÓsg·‘º4u"ký_XÖÙo¤ÚŒèÛONbË›üÄDqù¿h¶;¿óT!Aš+\eý @¼ôª¹“)šnr–ö1µ|?ÊÄ{‰"‘H9Œ[œÚhnFG¤0@åyˆ7A¨ðk† á‡pfjÓìÚ‚/p}:D‚¤âS¨µ] *QŠäH£¨ì^xÅ¡X牨€ðd,Tž £(9ÄÅ"›xå¢Ù÷‘:“ ¶WúKhiÕ´ì?Ü/ oqÖt4Û—M‘Éæf˜KéÝNDK©!Sr+c1’›ôý@8™iKé®pbÞ™Q‘úG@騫§eê8*ŠAí+Ó6Ú–è`ëiÚ¡#ƒ/ª·FßqPzbCTgzü§‘Ú[¤_#I5ºÚãƒ(O‘hÓNÕät‹jy ¼JÍLÈÅâ‹4È–h¬E5n¸¼œƒköôsDÊÖ…0u‹ Dë®P~PSsØ“–XHÝT“ÔÂ)ƒ~¿Im'.lDM@>as(¦–ÈUEÉ‘»úFã-ß Š]Ö°㩊@ÏqÔL4¢ûÓ†"+Å Ø FÖ©@ t»[™?ÚT›*{™˜”%Fn±éP(ÈÏA!¥½‰b;u‘¹ÚÇ´¬'š—7'éy¾ ¯»ú“ăÒÐÅ­zªÖúĵ@OÍ¿ÌlÂ$¶Zór  î;Àç´K9áøé2 Á‹bA³sí¦P^܆iÏ­OiÜÆÂXõ2yæ·c=˜X7™HÌÔ*ÔFRœñwaä=ûF­®Yš¤¤×L‚E¦J¶U…Œ˜%HÈ8´('=¡-ÞÂà°ýÄ‘d±<ÃNEŒ]EÚçÌ Q¼×¼Rж©vê˜~iš=FÆ Œ0³Ö(6n87šÔüQ½lä^—Ô]¨VÁ•Á²ÿƒ¸MWƒPY*­Û0u:rŽôŸ•6\W¸’•6 ´²8"ò£¦ð\«“|„RŠä0›AÙAVc´úñ…[O¼îñïž"EMÃ-eº›àG3"áXÄ×§L©eÝê9´¢jCÂÌMØFêôž/-_@ŬPúA¢„êU—vÒ×½ÿ˜æ¬Žå”€Y³qÒ]§"º‡°¨Eÿ ÷÷‘ÕM¤ƒpGyÔÖRØÅ‘CRnEä̈ɶ m¶ò¿cØÄ"±´ÌÆU¢ÈûO1{Zü¤“å@,[ERÁ½¯)}ŒˆÖÚxŠ)M€³À=↣h¿Xê"âç¼H ?¼¨(R t¤Ê¶p6âÜóÔ\©¿Ò"ù9†-Èàña}ÌwZ÷Áš—\ƒÌIäæãp ‘ÞEwd €•apDk.ÜÞêx˜·ïqØËQô*äNŽŸP‘ÖrhÈ6‡J±J™Åÿy›ÇL¯¢Jõ”¶å>³åµÔ^Ž¥Ñ ggáš½µÆÓžÒi©ê©øÊ3ß±˜ã5«6>M¹Ü1hên®kÜuíµ6¥P£‹0Dìæm}Ê6r‹uŠkî±½‡OXô,ªZÁ€È¬–¥BõYȓ̦nÅ€·´Ãc×õ™È¸éI8¾$±ÎØäó#-õªØæI»ðc‘‰ë%õ”iÇšÄæIe.zM¹éˆtÇÝñ0‹NmÜÌ<Ü|Ó3ûB\‹ÚDJG-“Úz¡-浺bx)lõ„­{£u‚)¿Ó#™[nÇ2ݾVd•Ræó\E/y˜tÇ׈¦F# dM©’ á°º–^"a·¼Ë›‚¦ä&KÞ'„pGÉý¤¥Hrã™H®F‹¬Þ!Ü¿2ò;úÍ@Ÿ'& aòðõJŒyÖOÌÙµ¢ Zjäf&ì§’#w\úM!Nèd€Õ*xmÞù€*ãÍMOÒ5RÇM;·ce¦ÔÈ+Ç@côãJĨ­ô2z g*zˆh6¹B§]V‰`éU®F|²Š'–£-šöÛÄã¨eS´œƒé(Ó×k€ù¼çxµ+¯Z†•jn.û\n š£h”ØS¬äsæ´³bÕЫ'ÃÅÁé9Ž)n?xËî&cTÑ©ÒØÿ•W1ZUbãC@÷\À4™šÊèoÒöŒ­HØApæk¨6®µ¶Ô àtu½§…Ma¶½ž™þ†!ë1ù€uƒl`@;} Þ3¦¶‚ŽÝÚ}R0cÅA´ûDjhU¢J½/'áq «#+u8#¡„¨¡Y‚1jm{)Íiv×§¹C[1Tî ÔA¸÷t}U26Š5HÿêOôœí]'ÓÖó)2Œ´o"¸ÈìÝd¤ Z•jU)ÿö_ë%8<ÉEö®Æ8'ô„K#« 0ë'âÙ”‚®/0LAÕUu”EV_˜w5±;[‘(¤]:üÃ÷ôÕP×í4Aÿxìaá°Xã•ö‚›v€AÔÓ%©‡ò,QBäEžÓX ]AÌ}rf[‹ô‰ðö¶ æØõýà˜Iè#tìI±âðïhÚ)›þ²PUÌmÄĬ¨/”b÷˜Pv´4¶›^ŽGMen§Tmy¤ì9‚'ušóÛíÀ¸í=UA»-ýGh¥"äÅ( ×`ôɺœ‰ÖÓêÍTdݵŽlxkN RµÖòÚL B.7 ûÌò†Uê ©BW8¿ðg‘±gUê²Z¨È\0î&|B‚Ô£öŠ68Ï´¥Åf¹ˆ×}¬@ìoÓÝr-yæ^o<ÜŽfÙR?´ó'Ö oQƒÓ±š Å"H†CÍ1•ðÔ“Ä{¨4—‰$´É½¥t0A‹Z77SF‘½Î%j‘Zÿ¦'‡¤b) Í¡šaF9œ›%€Qs̽îL'æ=¢”)\O8#"›5ãA¼™|¥ú'tê%ê·¡ckœÉH8Ì¥H*¡cÄÃI€Æe¦˜a‘c1i„Ë\öšý HÀ«Zöгƒ»#ÖRîªI¹“Õv{\ã´Ô¬ÊcÌà°±³wo8‹Ýæ´@ª€Í¹G¸€ (´j¹sÀA¨¡ÆêcÔŽÒ@QxwïÄ÷8†-{H<âSM ÚEÓ[dJ(`ãƒÈ…jUK0oÖejL*\cÞ˜$\cÒ!4ÁÓ‰©«nÚAÒ5eÁ¹÷žóŠƒi÷F&à‹_ƒ+S©ðfÜMâ¢}‘Ö§´°{ Í+Ô¢E@~R nkºâüYÏë_j”Æsù¤ìµA-N¡'›c ¢à"K5°1ÞnFIv]ß(yE6ºppqÁ L«OC‰‚É#i­`ç±ü'‰ŠÌ¤²GQÚY¤ðªPtjW{ÝMó#¬¦›’‡Ì8=䞈bÂÙ=£Vކޢ˜¨Ÿ¸öˆ°­Hí¨9g6~mÖ8TD£V›l MƒÈ‘Öƒ•ÚÂÒ=EóPªnÇ¡ï'ÖSdÕ2›²A F×%‡¼ðZ|ø¹¿Q½” d@-~‘ ©ªºæªÜbò-6£Sz‚ÈØay˦ùµ…Œ·IUZ WŸ=áL]ñ-0O «8l ’£¶ÝŽxà‘*MI§¶…Vm¤uèo­@¶§YŽhM4YH \u"aÙØ€}c¨Š7êìn#~Êí°u=%«•¦O$}#èÑ<«ƒ¥'¦Ö(@¤Ê£‘\ ¬ÖPFFf®åY¥ØðsØÌ4™ù‹¨Ä®ïÖTÙtH¢T©¸¼e‰#å˜P|×úJ’û–Óii…üµPƒÌÖŒLÒ7vÚˆßIWØ0omíÚ]" 5+ß­„?Pá*àœæø>°þþfÒ¾Q²·†jèQFÚlÖüDÆ×Õi¼$­N‚ñס™.GÄ´­B¹å9ÒHêÀŽgӚ¯ÃþÓE¸~³’ßÔ‘îó5ÆÚ,ˆiäí¹±„‰È8ž‹Åe”þ'¤p¦®Š™¿i[‚Hâ„elfÒ’€iÃë‘:éOàÚ¡`ZƒÃ©ðŠžùz«Yy™¼ã_—˜¬D²˜àé¥z-j”Ù-ÜM¤–=ånŒ8©\zÍi±ÜLrYïq˜4–°¹â+iãJí|Lm9a‰hÄâ0w ÊZ•4½‰cÁGÇQ⢆MíÒmAcŽ$¢ên £}éƒÔ`À‚Û¸‰¬Ä^ýc* X\™%F<œÆFiuGQ'bÒ¬Ú&ª‹œƒ7Wóh%@71ª†ÄÛˆ#‹˜†ÅÈÄ[rÁsë ?ÒKʬ7-‡ é!ê#€Úw`yvØn\¬Ž1VàGÓ¦G p.=#°È™´ÃT‡M½DĽˆ1kP_´r÷3$—A»pé (O0!øŒ¤/pdF_©66´ÝU¼DcÉQ˜ª– ©«óTUì A'®¤®õÇÒ!‰#n1È´¯ð”_¡õ“¸ …œ]¯å´`¥2ØîÄàM©^ªÓ »$fñ•T0ñÄp•w^ØÌÔí<—ÛNäÚâÝ ¼ih¾˜j«3 ઎²U鞙IJ¯›D…ZÆ“]âÇþ UÍU3¦ÕYN9Vî$ú”Þ|Eò=gJ½#Zˆ±©ä ô‘0jv,¦ÜMJÍF׸=miMkWÒ+ÿܦ3ê"j&NI‰´*xv' éÆ8‹èm*¯OêEî§*{ˆ—PbœC¦yÍ¢ÎsHalÜñfT¬”Ò£€Û¿hô£¾¤î¥Ç¬çÖºÖ®,¢WJ¡knÏf…@µ:”[eD6ïI™û¤ Q-{0â$Ûv×K¶†é6†°7’ªîŒ R¦þjCòA@6i°b?XÊ ôÞùR:_ñ*¦´€³±|:'‡±†N²X‹7y5Td6V˜ÌWŽàY}„À¥° µ² šÀò×v$6÷Œ7ðÍ̘› J7 æI”麓í¦`ÚfKõ“¡>!…¤¸w^1*–|–]F˜œÁ9n6¹±Ó§ðpWâΣñ©þò?ˆ!]ueµ¼ÆÕ|Nr<ÇQpÄ^êßÌPÚQ¦\T\åo{õê%ú-EZTÔ¥FýäX„ÛÖ9@ðÖÇ6‡.ڎ݉x€&¦šT_lÆ}‹O\—Ò¸¿å3OqµÈ¼²AIw©ÍûÎV—úaÓ=:…] ø¼4¢üÃÚU§ø‚Uµ:êï ®=Þ‹‚½Œ6ýkO Eö’}b5I^#Tù•€ˆ¨ à‹FbsÀ‹qs~#°à™qs4½Æ!QÈokÃZ&£Ø\Ç¢ˆ@{|Þò™ª÷Ì[¨"ã7›Y’/18š^Ø´[çœfÅlŒ=JG¥ã(ÂC•O¶¿x,â8´Õ¹ñi¤ÐHj—&Ó‚mŠy‚ V±½¬* ›yšÖ<Ì€m™&ºY±ŽÖ„ðžÐQ·­ÏIª¶0?Ì ÑÚSæ+Þ-maR²¾HU1ó}hÝ:àôï'©r€“‰Fš¯†.O"À’¦¥{ãеzì«ÀÄ-1VÕÆÜÛ¤M@|BÍp ¼“Pް54¼û‡Êsy£ ‹Ã'îAl(’swT"áWþ^T·£N°ªêtW%´Y#;^ÂM©ÔšÌ<«MYQx}ÐHB\Ra’y3tÕˆÖ8pM7ò‘Ø&•‚Ü“åQüÊtt•6½Á(·!¸'¤h+[§«§¨¸0aci=vuV›^òud®ÖöVÛÿ¸‡¨*¨,EÀ³_¬¢©üBËmªÅ{Ž‘ÔîÀ¥®1c Ók±â&¨7‹Í2zøu´ÖCÓâã‘ÈÅqŸlÀ¤Æ@{U†ÊžND6óD”!†`x„üà4£NŠHÚyèd•³ »V§%E›´b«Ó!M­û­†Èmk`ŽÒô Pùmqé ÓQê5^ÍÒRÔÃ¥Ô]ºÉÖ†wô<õ¨müÌ_ðÂËÞâ6•pFÚƒxõ›Vžñ¼ ÉvÙóRõZms§'wcÌÅ©¹M:ƒë&V¶ob;Fø©WpÝC•¨FBAúIw~¼é0b›$eOy¡}®=i©E&åOi•väõ*Þøý"Én³LèÍÔÜäzFQ{‚:4Ÿq\ïA67âJ<ÞÇÐ|ÇœsèVµ³ƒ*¦6±õÃþåø½M®¤gØÅüaùÄbÆÃ<ßÓwÏõƒñsˆVÏXèüF‚ÆÑúO5P;‚?i9a‹s¢oóH/ËFTbú[ö¢ù`Õ6îfT`ÐZIM7*s) å[Hh°k/S)vkt™°ÅÿHôÔT¦À«õ‘c7q´É×]>#‹:ƒ=ãéª50=Dä –æj¹± ÃòN£®‘”ŸLÀNœ‚}ç4U7°0‹ÛÌrz bÕzŠè‹eÁ=¤-VæÃ˜5 ç3) ¶LÔƒGTTöƒ›âQXãØAî/ E¨¶g˜n¹‚NÐm$‰•KµÍŒ¬qÄ~¡0YmoH„r9È#-#ÏŒ©š\ B]l¦ÑNŒ§2CÞþ“Çp4AÁ†w&H~nA¬hó-ïž¶‰Ç÷ôæUÓ N-§©Pòp&R¬ÃÊÃzö1Œ¦ˆz‹˜­œÚHÝ”ªµé±¦ç£qúÅê(ÔEep}ÏmäR:ÆiëÕ¢ ’ò¶D’ ©çkÚPj–A‹žOIuoIò–$âñlZÄ dZjQ‚QM4U˜³& ui.¥‚èUIó;ÿôåê­¾e¿íñj4‹üÜ{ÆNÕ2SEB0Ù6žØ¹RoÔuŠÔysÊþ’5MÉᩨ¸õL¹õ®ŽT©ÚhÝv“ǧ©Dª ›fsÈ Pî ÛÒ2ªœ•80ЫÓÚEÊä{B¨)ƒ=E©«‚óÞ@¶PlV:’’-h×D"ê§iâ2‚¼dN Û©•o5¿Q:Zm9j‡˜ N}[p'[áΩP¨8"säÔ&åÂ. ÏW%©U&?]M Bè|§ù‘ØîàLÂk;Ó±7ö0+ ¨»ÐÙº‰MCeª7!ýD]j¥æO^D¥HX›“cØÏ ýDf¢ÄdCÚNAcìDé;ev†¨6¥W*O”öˆø¥&£Wc~±4Ûa p:†Ó­øÓæö™òŸcŽÙ[õG8äÏn°.N&œ™¶Ke¹Ïí †&ïîVþ‘ˆ Û¤ÚÎH'"Ö1¬ ¿'+SQP쨤v S×Qxþ ›¾%DžV›7üýd«âk+0üæÓ¥ð@)øõØ»¤=3‡UɨO|ÂwMñækzt›¥?æ©ÿä"XÜó¢?攞†óLPÌ_ëˆ5 Üß'”Þªƒî`;äÞHúÕ7v¥RÄ^ÙæD¯µ¿ÌcéÚý%Š-¤Ý 6&JXŒ¯éÔ¸±˜Æ´W7„_j 7ûrfT¸ùreˆE‚ùºÏo6õƒM ¼ÆQA.“ 6Œ¥rÂØ¢sÄnœ“P/Kʨ­ˆßì!-{Ô'¡1»¬¹™iŽ9ˆXòØŠqqp8æA3 ©È&OQvœdF«å“Ó|ía囌±I´gˆ ín;Ìt\¾â›V™µÁ¸ï. ¦›mbkÓR7§XJ_“ IïhÂúÅ -|Ÿ/X{CƒÀ‘µ8êeûá›çé —Õ>…|Ç14T;€nIÉ>ë•©_Ë£4ÔÂÓ¨Äg9´mÏ“lÆ0ï´ï¹L© Ç2$8Îî½ ¡(L:ÌP[¸ ýdqzjÍÐI[PôîSo—¸¨²±!ÉÄçÔ*)×ö›STN¤ÕsmÆÄ¯cñ%Μ+R ûŒÈT ¤03¦Í†­ua¾šìýezÆ­½†óù¬L£áÉæ {t&SLRzU±Ú×1=§ ´ª`³#âãˆêÁ²#)¹·KÉ«i·S¹±ìeEè†$£?0&uF;Ô_÷„Ni¥¶øÜ:Ì4íf^'cm:™4ú‚g—Nœµ%¡±ÒÇ2åcŽý¥ºz@n }cΟN? c¦¥¦ÞÖe X^JD¾ÛÚüÛ a¨PNe[lªŒhªhÔ«#>ácÍ¡»ÊmzIj§P©¿¥åûUܧRp`ÖE*€,&u¬F…±‡˜­¬ ÎԽŤ®‹Qp<ßÌç€u°<ÒQN¹ÜX!Ï´ Ê+.àEùS¡S²Ù¶·"t4oº‰¦Ü8"BúD=?ÜJt'ïi ßs,w2ž†Af÷Œª£íU@üÆ*¯—nA$M2|ÝûÆ©µK.sSjù†LÐÞb¿7í$z” Õ\n7°/õ™È‹H¨µÒÄq‘(¢ŒÔƒgóÞRËOà•œYMg°=úC8F±³ñ¶4ºm+e‘C0ÿŸYÊJÀ˜ðaÇÍ\ˆØánT€x'¬=(³»È|A¬®–r{L¡åÓÕkóeþ¿Òl  Æ÷°‚3m¶bÓ Ø“0\Øí {5ßX`FÑc{ZÒdž²ŠBäžÐ¥Nûb&\ß$°µ¸3Ù'¹ë"jÔ$ØhC>±t°ð•À;mu?n!à¬y™qÄÅ p/ˆt0Ìý˜Eðc*.Ê*O˜ÿI)ë Þö¼JÞÙ†®-~ÒCÿhäÌs´ÚóÀà±ç¤K›˜ ê@àHÉ¿:¶æ` 3m‰Ò3LGµ•¸šËapn"w‹òOÒ6‹ nAŠyO´m6ÚÖä%i¨¸$ŽÂ7S…['ªP`nž ”ʼn,ǧiE6J›õíôÎþMá)-ƒ»uÖY¤_ Aê`é©kv#ÌÄp¢ÐµHU7!™‡S:*>åë’'4üá@Ååáö¶ß ™¦4&ÛÛžþ‘eÀ`zt”BœûÉ+SjfíÄ!eQ’"O”ÔÊtÊ+‚I²Ócé#©Skî¶OŒs`æñ: ÛCù½J¦ü°*;AD,Û²˜[‰ÒVQÓ_͉ע­KL4ö ¹w÷éûA£ CmC+ J.zßÒ 5C\ÖFÚÀà[ªL9hSsuº±[æ.™j(Y È'•j ­N¢ ¨7iBS5Fë…-ó-°fu¬$*T]Ô©¯›DY¡[I¦ËÐŽD´PJ 7ÝÍÆc˜!³¤u7†œAJR3{{Ã}¹.W¾e"‘at/íÓÞð|1Lݶû“â°´Uô=cJµ2 ؉…i3 Ö n­¥Ò¶Ö5t"ÂZ…ö@úr¯NÄuõxU(T:\‰×ÓýÚ‘O}eµþlþº5Ȳ·f2Ó‰¨Ù¶».y¸=¹zTê©dbOc<|è[ÃPW7Cý&S÷‘Î9’AªFBýl`Ö àR6±7¹Z ªÔÈór¤uœÍR•JTØÌÔº*{}ë­îLR²©Ùlž±””R÷Z"¥ÕÉqp §HÈìMPê|à ;ˆô£³âÔ ­Á(ŠÕ@=§›áèÇÑM¸~e±eMâU ¹]‡b#>ÐîmXï¿âàþ°F’°b^ÝŒ]MÈÛj!×µ¬eÒSKP´ª­ˆ= oŒêÅlRA¸B@Ý›u•TÿR›_mýD¬Fxž- çë&ÖÒ%Râåz÷øy«Ñ¨@¸ëÐÅêY†Õ8„õ PË]-¸^.º^£‚ Žo.¥X|¥†;DjÜÓÕÔüGù# §LÉÁƒ£Ê*9Mæ½ï:š_'ÃuB„õ—/s¾)AhêˆÈÃr‘ÔH _åoÖv•F³Bi7úÔ²¶ê;NO†Ä•·y®4XYSNÛ“Ä@K“wn„ÚÍn ÐUðz^.¤c¨Žæt>=X]5?’±÷1¿ÓýBú× ¥—Üÿëùœw¬ÕJ‡$µÌçï-kȉkàLwóÂóÕX¾yуtŠ USó[øýâ‰bÏ,aahú±…k|ÂáEϼˆ,£ÜÍÝa´ä@ wܹï§ÒÒ Ø¸‡M7)üJ¨›ã´©z»Ji)˜ª€"ÇÒP´ºŒÌÚdb®1ƒ Ç‘yáFÃĬJ¡àuoi8R£=È (ù˜ð! ·,'~¤Ì©SxÚT(Š@ ޲Ji°\}!’Š.y“ø‹ÓžóU›ä˜bµˆWâòj•yÜ Ïy•µ½z­å½æ¤Ÿâ.vŽ;ĽMÂâÑk×Ú` šÂÅoëÛ­{Æí,n{$î.?¬PHÚ<Ç=„ðrFzq œMä…†oL’y˜”XÖÄu+Sés O ×&ÂXµ€"þ½d‰`Lr0#fÆ£¢T–§øÑ¿hŸˆÒÛ¨kez*Ñ#>×S•“µPÕÄ\1=hÒ=âª=”)L•È'‘$ª§q¸Ä`©˜–7–ü3u0ÕˆÂá}L^—IV±yTrOHÍv¢•5}>UsÞjÝê ýj¶¸c¹O3Ÿ¬)m§‚:ÌJ¬Íy†r·V Lò¤JLTTá©é5êµEU-×ÈÎàÑ¡î×a5ŒëIKØ©Cê/ 7^꽌jVZ–é‚G⊠7Ze‡B µ<®Á~B¿ùBZ·>[“Óf Šï{ cÿ¶a}¡ím áˆ×QSýJBÝØÚ7À¤ͨ¸òU±š£+Í™„žVSêM¦pªFÒÒü ò8ûfÒŠ?Ú³ŸqË’ØéÄÕ7>E"ô¿+VÔÕjšÌ[µ¡Q¨µ ³7 ƒ¢ø}ZÀ×®M:=ZÙ>Ñ]©“OIA©¥²æûŒ.|+Sm5gv¿›ôµ½=e áïÓŽC‹–Fv„¦«S±ä{LþNº•ˆ]˧¦@æh4uZw§LOLî3“w$)÷–&U¨ìjºe@Àb¤¨æ@]lÄ[ëÚ¬ˆ¬EŠƒüJ>;Jô©7.½;ñíâü'r›T¤À“×"Rý.zYÜ#w•ß^ª™]­ê/‡s¥e°ÈÜ;^¬¨¨ã¬Gï7:¬¡)ÕLé)|%Iâ¥_Ø ÎA›¡É7±—üQÕ4zJdd©coSÝ‚%BÔ5Bxº‘)ÕiiêhF–Ûÿî'Q%ÓÔ¾ò‘ÃHª:Šº=Nå¸ ÚǬ²¤Ít'qÏhZM9Ôj)ÑQ–9öMU _¢u:K Ãç¦9÷Œÿ éí^®ª ·‡åï+Ë¥ñúßdÑ&‰±v|ýƒP&Ýe¿ÔF¡ê‚M½ºHÉ7&ò‘ý¦UN§ÃÑoz×ôfÛH7±ØÞzÕ,¬ë/ÿªh©Ü&ŒÕíâÚŸ‹V§M< tè–ò¬6ÿB)ü/[\—ðÈÚçŸôÊûf¶ŠÐ5Ïí$«_W^æ¥j‡¯™±'4Ôµ‹'´rÿWN¨oƒQÚ©Tõ!m-:&—N+¶—a#îé±¹>¶œÚZjz CS¨Mõˆ½*G§©×­Z»µJÏs~ó?;Žèøó”±ÓÒn‚2—Å*Ô¿†4ÆÂæâ|¹¾à7-£:Ÿ)ú‰Çê¾²žª«&÷ÓRpx!­ý& N˜>ÚºT^¾V’|?YF¶‰R¨ÙTbüë µêפëP Û­§<í­XNˆ‘þX7bðu?ÚÏN ®/æ#´ž“2§ˆ«b0zZCñ]oˆ¡å³úÆqÚ­Å•õ%Å:îw­A±¿ÚØÍ5Þµ[x´ˆàâsþN§M¨ÒC!ÿt¯á•ÙjR©´‡¦áXw¿ÿ‘³:¹e6[õó(×.Í[¸ ‚oãÈ(ëkmZ¬úÃÕUV¨ÍÕn=Çÿ³_èLô€u¨–Øi¿âWWNí²’Ú3N@qk2‘Ÿâ*µŽà‹XÚRö¾8ôê[p<Ú1j%a¶¹³~‰(˺â*§”ë:c¥MF‡PX«à‰õ¾wøFäZtëVK‘ÀÜÀ~öŸ!¥®»’…a½ ôŸCþ#j‡O¥²ä/+~½­9óƸ܎¶›R©±Ô« `…fkç"[_â+U…=màcpà Ÿe£U ÓV |­ƒ7¿ÑŸÇ2×ãé+¦-§-þÛÖ1~«¹±¼#§«KKUj'peªD¤tU”س^þ‚ VªÃnìm‹ÆVxcý£1(Ø]F}zH%Zcwš R[ oÙjÔJdÌø¼éQø2é´ëªÕÞ±quÔ•æW”‡+•£ÒµTñ\Štÿ;uöï/¥M•ÊÒe^µ_ûvŒ:•J…—F\a¾âß§H“©Ô³\Nÿ—û™žéê(¡¤F$½f·]ˆOîl%(šjCäÕêàNvúÕ3U™Ï«^5µ¦l1oÚh-ö±áßÚ FµO-êK#/›Öu~ MHbrW0½C;sµ¯N† Óû50GRÄŸæ#í4Žìöо ÍSRìÂÙ´…—i¸›“YµVâÄŠuz^ÒZµ«¡ »¯¡‚/|sj¥¶ Ü£¢9‰;W¨Æ×F÷Q7x¸-JŸéiê´6®ä;õl{â!B¶S&¦Ï+RßÈFøq·ÜêAéçÚKSý:a†ch…<bO°€q_êÃûE(пú7â«í&â!‘(–!øpüÔMsðî”먒ÌúK©54ƒ+AÏþM u*¹§§¦{^KhKqƒÄ±júzʤ_aÕ¨ÈÈŸ˜Åê«>¥Ú£œŸÚ¾ˆõU*W¬Õj½Øœ˜†·V…XÞÀñÙÄÜŒÖÚç #´Ô껪Ó$â.2["þ‚ttHR²¹!v‚l=¡jß•vÔ*Hü¦[ Õ”µD•âã‘ë9ʠȤ›ògCÅû5«Qmµ3nñ_Ój$;k‰ÎM(³Ô¤Ž D³½]ìÌn×ÍûÁ$§{ÞÜûFL˜­t4:Zt*ûZ ·=q;zC¥­}8 Tä’0 ¹ýgÌSº `œK+Ui¥kØ“p/Ôsô™å4ˉµ÷ªŽìnÌýzÅ©hø”¯Ô6”ÕU¾õùA·ÿVâGQHÓÔA†¤û‡·úM@õ7ðµ&Q¼Àwö‰ŸóeÇŠnÓ‡R¦Ð*›‹ü­ÖÓ§®Ôxš .­FømcŸ•©Ijê¶›pg;S¢ur »yÓsNª%E8"öý$ïUÑN©ÉSh±ÎÓ隦ª’)¾æu¿ÄMSþ§UÓrìp¢Ý¬MSÐÔÓ©Q)µ˜•¿³¹ñ#Lkª%¾ 6¸?òÐå{2tùÖª•­ö0k‹îL´hÐÑÔ”±â¢‘üNº6ž¥5vÑÓ ›["ñ¥£ ) )áÖµÝ\/hÎ]àÏ¥ŠåÅ©QOÊAýL]BÖ©§Ô©BVûg‘ü4³í5mt {É’«¶§Ä¨ä·ReÚ8¥¬¸8Q`#Ž®šÓÛIR™½÷výâµÈ§e[Œ‹~‘ZjAêyÈÀÜO¤²b1Â5ê;ßå rßú“F »uÝ}¬-«¨kU'€0 pZ›cŸ¬ÔƒUÓÕj…—í5qÅØÆ.§Rr5Oc%¤ÆâÄ w•Sβ4u:“˶2žÖd¦}ÐIÑÜ~’„Q¶÷˜¦4ÔS–Ó¡ïk‰WÂëQJ e¿û®${~³WÊC-¯ 4‹âZuJì7s|‰ Ñu­qÜfv5ª5Z%¬ÞSÃ[´ä—e7BAë5TŒ—8ÄmoöœC:±ó §¸Š¬…sÈ=DܬwR|dÜO=5#Ħ<½Giª7¥ºŽ Ór†ã¬SÚ…”~Uf—Ȱ±æÑš”»Q‚Çh¥Ü ͺJ#µ T¥¸ž‘¥ík™RçOQÉbQ¬zæ5T¹X¥Ì¡moIT /¶d˜NÀEn&I‚ÊÀ©0ðNôÆr"ïëxT¸c…ë$í#þ«sÍAý'˜\úôçÿ‚ «p='&ÄÖ™ã=4Bá¼c%è1=H0 F3‹uš Š@·¤oY¥b0 .c@6ž ˜õA·<ȺU~áSñ*¸°æDÛý=ª;òcÅJÕÁ;xÜx’WuF* 9Oö˜›ôÖn;®Ïº-‘¯p.=&xÎpn=…¦‡{âæhÀ’1-ÑR7ñ*yõ…¥Ò½f§´~§rL’@é3oÃ"zÕŽ¡üë´”v˜´jp  97¸UîaŠ”“êe«¾˜³’p:úA¶š‘ò¨¨ÝIâPõUü€dæˆSuóc?Ð:u›P;,¡B3·¤Ÿk\Xíô†žSf¹·ï N¤ÅHÚ6‘ÄF¤5ZžfÀæUFûÈöˆ¨ m÷õ„õÂþÙAAèM -ɶÜßß²U(,$qTNƒîÇ[u¬Â¥‘°Š ÈvºØŽ™é+rÝ Uii3Ñ<ÃiB}:¤ˆÛÄÈÏ•ÿƒ§Õ5 ªÔÀôï'Õ=Ýö­ƒ‰OU/e ;¨Ô~|®-{ö"Wðõ§áVøyóïé“Á#´çWSZ–á—Scn½Œö‹Qöz‰â£]mÈš³¡½·Ä©Q¶ÞÁqØ,6ó ¨ÁØ-¯Þ7ãT~ñkR?s_Î-ÅúÈÕÖòåå;ƒÃE?»®›ç©{‡Òh«Þ÷M¬=§ ªî³1¹æÓ³¢t«ð Pðjoë~žÐåò˜ú“§ X¼qä—ÖAr j*ù¿-ú˜£×f ÙÍÁ= s€TRà¨Ç¼¤Ä’åßy'uùq⧈¸aóüÌÚCÞ6˜ØwÓúMP§5t#Ÿ.b*Y4fÖÝPÛè%zmƒr‹”¨,-øL—^6ŠTìnÿ¼Ì÷ œASƒ6×­kGei»vÓµù›M0ož%´mæ"RzÜJ€é3TSNÝ1Œ6ÞÝdÉS§éT±˜hâsŒOIÎb÷ß©¼ò¸ÚMý$ugÃëªWðÜýÛàÞGñ 'M¨zG dzˆ§9Ä®¹ûgÃENjÐçÔC2êõʬFÞñKU—ÔAë ‚Až‘l<¾¢u`ä MЛöždƒïLÛ#™R0f³sÖ¤3å`ÖÁ\À¬€X­¶žñõ¨ ý¤¬ÙÊ·0†Š˜'æ’ðH”Ôò²‹‹ b+b³Y¨^‘íˆ1©É´“–éh¨„9šªY­Ôâ)”©—làa9 ÁTYGEÚ5úžæ !Ý‘èê€ÿ¤iÔwþ¦rˆ9v*SßðÊ76ÿyS¦âgÃb6¹5P”·¬hPZЬXZÓZ‰6¸¿¼g€ýÄn¸Œ§QêyCY{!m$&‰6•RÒµCµX_Ú„ü"Þ¦Žé}‡`îÍ´•B¡¨õ<2ª¢@C–ÈÌÝ=O °"㼦¸ñCéÖkÊäu- \à{Å;:›sê –c’xéh…˪ÛþÀë®{íþdtÖÖ,ÏNùžz÷«·ðLáÕoP?Ú*£'z»|£'¼Åª×ç銢›‹˜oP%‚‹“Éê'¼¹7ós{«ž·ˆ;Ä/ówž\¸žl=d×'¤f•¬¦ø¾o,KªVØ‚0@½Ï¬EWÝ’Oë2««3*›mïwn=á!Wð÷ïU³á¡aïÒzw{³¹êLN˜í§\Ž©Ç±w®X€N; `Õµ+½E³5Ê‹f%ªnósÖ%œ—ô"m¹Ž%nªU|;îÚ »ÌU 6¹¹' Qeá|§Û¤&à-4‡G '‹0zÚr]…úÖ=ê’O¯0Cx£ÂÆñò˜¥: ­V‹h+.úDþiJ-M‰Î Šõ¼c¹PÀ_Ôý`ûEª¦nÜT½ååNbïzG$Ú}Ãj¨­ÿK6ÚôJÜõn󕤥gÞËb‚üFShê)Wä© qï]©Ó( Z»\TçéXT aÍ¥_¢©¬5Ðy*®ñoY&Îßù–ïfô7PÃp½úÌB@±B½Áòž='¶žWƒÏ¤‘ÿªR¸­ó,/‰­Y+ ! Øwƒ@x4š£|ì,£úÆéÂÔFLÈ÷™¾éø‘¸1UEXÚ×PG&$\Ñb:zÍ@XÁ¸ý£ÐÜ[‚;ÉîoÖ6‹ØÚŒó<á TŽ˜˜"µ¦¢×˜ÏnÃÖ/S}ÀÜ JBcºmÆmðýjiõ°º0ô‘®ÓbI?H ;ÚíˆþF«ø…:t5òœ©î$•›6 ¯),ºŸ†H/§ýJ™ÏP.xÅNÈ6 qÒ0!'ƒ&J»XØÞUOUu³+ ÄmÁ¨±Ãà{ÉUÚÀ€%ÈÈzXÀ¬ {¬!%ªob¿¤ çÌÝõ2¢:qhuüúuÊÄ *7µúuŽZF¯Ò9¡2±™´È" ¹½í—ÝÌ*3SLï6÷âe1pæUYw"Tî"E¯ê!¥P'þ˜èñ `Møê%7ü>¥°U¯i 6'30²ªxuokˆ¦¹ã¢CÒ?™x“•=f¥*í+Ó"ìþdª:q+Ó›íÖUFÕ ¸Û 8BÅö7È2ÑÅs~‚ñ‹&˜\ÙœçÚ¹å|׌Þσüs@É™¢ ½d’í}Œ7[ö‚l§c× Œtk€ë<‚ŠŸ=LuHoå€=äu‚@Ä·QWLT:]ˆoIê”áë(¨K1ë _`¹ç ‹Pïv ØvëfåÜîubj–9˜„îÁµâÈ# ¶õ3À09’0UPmo¬öàZ÷Šp7¸OŠ.ZòGÖ7" ¶{wžñ‰~:EÒ¨†êNí<ÎA±7>ÒJ4–56Þᔯí#u îca* eYrFc5f™|‹”Éee)Ö1¶À3ÔÄ%=®"1Øu6d†•™*Ù ,mÉiµÁÅ¢ÎÛ\›ÓT°Ä‹³užVȳXò 2&ì æbº÷’STø—ûƒæš{E_c‘l6±TòpÀÁ¼q¥âÉ`Ñx'@.Ô# ¬pOƒ«Ù¹<5bµûA§ÿñiÑ©ø‰±¿«*AVÖ3-.TZÿ »Ñ6'ÐÎy¤/ó(2ÿ…°Zþ‹%Aµ»Ej(¨ôŸ•62åÃS"0}¥©ä^R(x *×âüEÓ§µž@Äu ]X§öЇ½-Í»ÄSõâbÒÁ–¨º›â,>Çà÷™Yiì,·õ·I&Ö¥½‹O´œÓ*Óq¤ZB‹—ó\€¦ö+Ëu4Ûo+_ À†©?sõ…A†ël°öQjmnœÍZ–·˜ƒúÍ| Õ‡æý 3?4ªB†ï1k†ù‘ ö™½žâm`ÅÈô††›Zécègµ˜©eb=Ä‘* r2"ÛÍ8¹[›Üt´Âà|ËÏh€èëø5à œ0î ki}ŸRWðÞàŽÝ&9B|±º¢*è)?T%ò#õ!u!°L ì™`Wž!*0b OCiê$ÅRC¸{Æ5·xéÔZ™ìc…m;€¼…½óMœiÈ äóí /E‘¬g¶˜õªJ«Ÿc(UFé-Áˆ¶‘LɼyÓƒ7·"_£ŠhZ¦œ¯Q$íHí'•Àé3Z›j ¤Zgû§˜’Tüëòÿúu;zIÔØ÷Äm&#ô„ëg#¤Ï^![u;žF/ÖÇ-†§ÅâX1>ÑÔÖô¯ùLhe{£T‘a®¾àƒð¨“OsXß,:Iµ^jÌ{›Þ1V% 2ÜGT`ª`&0¸]¶ƒxz‘Õfc“&bTúJ[$ɵågHÍ-˜Ü2§¼¬Ã aÜD;6á™·ÜyȈR5õŸ†ÆÂÿ„Zª·¸ŸS%lœ`Þj>án²*^«ƒå6wîäØÅ£”Í·n{HPØ=D^ògœ “ÇI‚Ä`m2BRÜþ‘ÛEòá‡î$Ö!£PÛ<ÖHHp¾#؇Ó,ZŸðçïPî—Äõ+cÏiÓªè¯›ŽÆ2‹#óå¤Õ~íÈèx=Ä0ÊÄ“u4ÙZâ{NÞØ€Lv\lza•™~¢I„ÛÌþ¦ƒ›tÕw]\c¼'Ó¿Ìpô̵rn#i9 Îz޶`Až@úH/g E†zÚW¥ÿ1H‹ùÀòú‰¿€ ‹g™F‘ÔŒf,鸢•WF¨=Dék‚UJz¤nb;‰&ÑPÌ>eþ²ý «iêP8¸ºû‰ÎÿZ‰)¨©u^ÝdHÞÅ~¢]á”VÛ’qYo|oØÅTªEöžAé1‘”ÝMסžgum¼ÞjU4ÁÞ¯Ò!•)ù &äJ5:cB—–©¨…¬TÅéÖú…eÝ´žoüÊMEv,¶»Üt…©Ë©f²Õµÿ ô>ñ¡ àŽ†]«¡µË"†¤Ü‹Äxhɶ m¶ò?oC7(¤)Àéë4n½ÿq=R‹Òp½z@ó)ài p6»c5%Xß©“-R­{_éQ‘ÑåéXb"ânðÂÌ,{ÂtßL ÉÚö ÞòMqcn±”[v–º€0ú‹’,O±ÐçQáœoOÔJ„à†’´[ŒW¬4{Zࣘç¨ÃÌ/nÑh)›|×í ¼ÌoÅäGN¥:ŠC¶ÛñC*.UG>¦DŠËSqàJ(ÕoÃd˜X¡Ô¶=À<ûÆSQí"F³Þö"\·°aÁ™½¦’€c…!×2Zní)¥ZÜØÌV£Æˆ±¿IêÉâQ=HâV­M–ß±…áW ô†œrt×b!©ù‰ éÔ¡¶¦îU¸T;[¼Ô¬Ø*M¶÷àò#=Ñ…¯–an e2ÈÛX]z‰"ÙJµÆ ¿@´Ý "žw¿´F¢˜*S!”ÿÌÌ£¨TÔÍÂÂögGjšŽ˜ºîÝTà q9¬Æä˜òK’ÍrO$̦§Böæ×ªàÍ-nƒÐÅê›ÆzÕî ž¦A«‘$¨H¸¾fã59¶â{@ôŒl©‹"T áºØÏZæã Ú,ã1Š×"DkabÜôšìOšÖéˆÍž°•Á×1_ËÍç±`0<ÁËQøÄZ™¡é$0JµáXm,¸‘0X®s=´Ü9í$ò“QE3È>_í<9 ôžT$’0Fa5Ý®>aÈïë$s“ ™í‚Xž~‚3N.zZHútÀ\ŒÌ»¡Á"hk¶x 7ÐÀ½¾£R¸mÞâðúµ5?HÚHAòÿ3Æ‘-ØÈ›F¥6¦ALv¼¦Ó0xŠ{XH¨(ZŒ§¨¥å6`;LØc­LQ.*%V¹òÊôþ 0ª®Ëc{mâq•^™š¢¦Ïg;•×­KN¯rífCèÁ¶Ê®Gû­,;jh•È$SÅÁé9M-çï}ÄÏDÚ.Êræ j© òè¨ýnbM2Ïet7é{^ThàL€3}3ÛF¿Á¢ ÒéÕ›€§¬6ÖÔ!M:tvŸÿÌbsëSg«vcºðƒšuBô‰d:¬k«°`|<öA"¯ñe™ÈÿÀlQp=¢ë «Oiù‡RAmQK㘠«§P§ñv>Ðu_ÓÒ©²®”¼yǨ­LÃÞ9ê(xÝÔ^‘î?,׿ÕX5_­†¢´ri4Z„)N«!ä^|éd¦¯R›â7ð~¿®£è+RS´‡Äù”«á»ÊéêZ¥66nëS§¬RRÉX ‘ÞߥÉte9‡¥mºŠLy ?HÆR `IS”@<#hßÂüª9¼hz—±øö‹u$‹ Jõ ŸAVâ2¢©­³½Æg±©‰Z“ `» ŒD*nq£‚ÂÄC¤§a« Ûç dF*ÒWN€uÀÍ@ŽD4âbØ?´À¤bñތݗ2ÔNÖ¾ýc -ê[¯XÔ§›冔Må½àÆ9®Ÿˆq@Ã[‰ kS%,9¿15íuP}åÚp 0OIjŸÄÙö„ª”ŠOQúœ -:ÎÖÒü’ªâÔÕ;äÈöä€&£4ÃN•g½7ðß‹7¬#¦¨ŠÊàÿäxŠmÖY¤­VŠ”$8#ål‰SÓ¾ðƒ %¡Tè]º;=mõ:LîÒžv¹]OŠ@²¢åQÀ‡¨‡p¤F{˜4*¶:°&›ùHì hWpv݉ò*ÒPUÚø%VçwSÒ:±.£MV…Tk‚±ƒT²«skßÚU©t¬»ÖöVÛÿ¸¶ûÑv·>°ÕˆUË‹mW+Üt‹aH—V§bGC(j\8½¿¤ ´È ‘q7 ":ú{+ôøÜ9<Û‹7¶aÒ_ ¨7>ѵ)ì/"[€ªHlc©}Ùvž  P\m<ô0´Ž½APª¿U=¢v½6ÚÓÕÕÆÖ±ÇHÕ`RÍòÛMJ¯féÈn¢ì9ˆ ·ÍÓ¡Œ?¬0¦ù¼jW 6Õǯ" EÞ7™#µŽq5x¿e6ÎŽïÊy…A÷ƒJ¨ÏyàÞǼ¨UJ˜©†èâ&Ô¦iµÒ,‹àʬå6¶HÊžñU*ÛX{,KP‰©c“YF¡oÄ™Á·PRˆÛϘwšbH#¡€—VÛ|J)*ôÁ¿¢.+(¢ŠO¤S!Zpe åcë3Z‡|5­ñ*W<©±‰øµŽº¯KÍ¿Ä4æýÿ¬ŸâzÂÙ|BøòÌÓyªÛ¸#öžfƒõ™§Æ¡û§OŒ‘©7|w“êÞ#²Õy5[š„Þj”€×홈sŸ¬õ¬¢çæ3@ãHDØæSL\úIÛ‰E´)ŠT‚æ9i‘L¬M#‘l“,½†2fmj'˜ŒÍY wšŸ5e ˜b÷f-ñ‹wÖµl= ‹[_5÷3måã2%ïIÅÄÅ‘ôVàØqÌ–6šYJœ‚cRˆbQaÆcèö#œzš¶âlj¶°š8™i;Ðê8‚´ìskJïaéRÖ¸ˆ$€£rc*=¹‹sxÀY¯bÙCƒ¥ÊÙxêfiGß¿ÄÐ?PE-ªüÇ2ÜIÉ>’­[+ײäZÆ"ÛN£ž¢©uU79¹°‚xdõ™P}á&bŸ)h4s»ôé0@êb½O l\q C!R ·KÄÖ¤3žÆa©M[vÂAù®a#€ÞT¸ê/2Rø$_„ÃJÄât”#äÑ·­áxI{šcÜþ–!¥å]­Çñ -¯së(©NˆíšP,¨WÔˆjÇ:ªóͦiý :: ËULRjUÕ›v6š—Fµ @'=';P•B¦þ—¶ôöΠâO©¢vº‚ÂQˆÆPs%Wé|ÇP ÇOI‹ ÔUwo?*äÌf.åS1Ü0ƒÈ?s šÜäÖdµI½¥}Vݽ‰c±m|™qqÔ âÁA&) ò &Í…¾°M 6íOv9EM£@;m a´ÞÆÒ€ØÁ+G#\_*Í…­}ÆßX— ü˜·0êT&ê"*`X\{F«½˜X¨·Ì Ö]ö7³Z "CŽàÍZb™'˜5ŽÚ¹0µ;R’²ðzIõÕ]Äbö„ì‚S^÷Übê·šü’H4ë(aoX–©™¬eG‰uÁó êâ'›ë!µÅãè¸vEï‹G®Ò¯ vçÄ`>‘˜æã¤£UUimA”E±÷ëKVž*aÐÌ”ÎÖµ¹¼cü úæ e]ÿ0+é§Va‹²ŽE¸ˆ žø2ú{©ÐpÄ®ã~ý SÑ¡ûö )¨¿¿¤œ»øÆª±V¾1O‡ÓTvº’¬VÛNf£µP²x™¨d¨ˆ,@7iU%jƒuìO̶Á„u½4C~AE*–NÆæ:KE¼×[õæSuäX‰$Ó§RÙ½½æš`–#ëEÇ—wô‹ )»m·©`àúwš(«ä(¿b&¯†ÜÔ·¢ˆdÓàï#¼“ϧ D†N'9é½&ºïQØñ:ÔŽÅ!Ô_ü³úD½dk‘enÄq)j±= k2盈U(Sª»’a‘½ l\ÝLòÛ‘s$äêi20kžmxUU~ÏI­bos:´T¡ù¹S9õÅ’’1·<Íˬا޺Þàƒh¤*Ëg¼zcR†ÿŠÒj§k’Ã72Þpêr0GxbžÍu5[‹E€·©¾ÞD~Žõj¡ü­¤rµ}²§mçùž%O5ȧªÕœŽK>#í sí:2m}Fû•§·±&b2 ı92l³Xœžñ¨1 ãúK¨ß°(P'´î|‰p¬Ã ç7ÿžÓçè^¥eÜϨ[iþQï´Õò©ôÿ—œùô×+[¨ñõµø8Ñ% ªà‚3Æ÷ âX‡o䈺´ÂiU@ù˜·ôþð‘ˆq³“‰F¥¯³òÓ˜êOTZÀ{˜’llr# ËožðnÝ­ÈoRÏb,:\Ɠۤòðhê%…øŠ#´¬…‹{Eš@’A¼e¥n:Í·c¤j-ˆ¥§ µÉT<­í %Ó \U1<Í௃O û“=R¦õت "éŒ÷õ‚Ù0yŽR¨/Ö$²ß÷ŒA¹K”u:ƒY¼B08¼ÐÊZì:÷’UÔ8 ¡ü·¼±k Ž™°°ÍRÿ,’›`ûBF, ¨0êé9›Hª3}3Sp²cúÁ ˆBwö˜Õn9½¸‰, žQq{‰b5YŽ`Tn“i©ùŒó™äÉSu²l"Τ.¿¯Yêí|™ F䉩4ZéøŒÏO;‘°mÒMñO.¥³u¶‡¢Ü̬¼¬–­pÕÄ\ô”ªò=éòW©“˜öR´‰_2“ƒÚJêwÞn3@X™ÐøS TŒ.w2]6’­bò¯V=#µzŠH£O¦Uü]Ïy^úSú©ªXÇržb5Ùià‰5 ¬§9™j0+å ¡åH‡‡ÒÑ€û‰v–³Q$¡Jt¬~ò™G@r& èoc •:]ëg~GHH°ñz“‰0>nÆRÚš…-șƵjÖ¤já»)9·Hõª‰s‘îg%YÄ«!î%4jVQäÔò9™°Ê½u ¿(Þ¿îæ¨r§iô‘¦¡Á¸DSØâ6–°“bŠ>˜†o Š„ûÃHg[ÌmB[!= ‡¦ ïÙo5­Oqºg¸žz×ù¤*t•òÇÒØ•Ž*ªú4º]“º  «‘Ø1«3Uóßñpa}žª’ö1UC+YÖÝ{EJ°¤âÌÄóZ³"Ö*H2J¬—¶mÖVûÊm|T[_ÔK¿Å¥¸ð9÷“êéùVù+×¼f€‹Ö¤ä ޽ C°*§òž„ëYš"°&£‚ ”=—P¤|¥†;HõÅ©êê _Ì™Ò3Z%0 ÉÁ—ülªK|Š„Î+17ç™×Ñ¿Ô=ò(úË”éDºí:ÒÔ‘o# Êè’5;‹£cר–Õh2~ö•ÊÛ¨í9`3/Ç7šãE-ÓK·ÌN'”…Ku3Ìì\v +?c4ƒQñ+ƒcÈŽætþ3X]:|”ż߂Ñ]jŸ*«qîõüÎcVñó %ÅùÌbN/xõUïzã„[  ‡–6¼/@ÌñÉ·"x‚Æ×ö’ ³po6…*•j)1˧DÍv*yØ9?Úa¬Ì6(Ÿ•¯xj59&âµNåÞ.¦ê·v7næyœ(2¤¢ánûœ@¤4ö‹¶ó÷a`,©Õoz•û(¼jk”¥»ÿ#ý£*FÍÑoy}5ñ´ê´þeä-Z•ºª{(ÄCUrNæ'LÖhñSÑqó*‹u&Ç5°Rd«T©Ãk©«ù¯ô–T±˜ã6üÐÔ–&ì·Bš‡7'oéKPÅ€°ý!ùZ¸(Û†´$¤ÖÉ´×b úEŒycúúMME·U[ŽÐZ¢¡°ROs!BǬ0Æö&µGŒÌsi¥Ä•”Íú0Ž-mF¿i Cæ9Á•¶×áZñ)B°íq"­ø!,ÕÁQR² Ž¢kT,;ƒ3¤´,å#ÞÖÏ–äôÛ‰ž;ðöÌÑYÏ@?ñÄ‘è•ê©H[»õ£H ­\A™:¨*œ†=æXÛÊÀú“h7ÒÓü ò8‹}^ÒŠ=(ñæ»{A)|¢‘‰b+Sû½5E¶Xƒ¸ÂçÃ)ZYªà×Ïé=©ÕѨ lܧ*®õ¹(ÎÐUª½;AÈöíÊÕµÖ–Ý‚0ä˜ÁÕPzh '¦w ™¬'¤éit”é:«»޹P:^—©™Í7¢íb-^еƒÄ@Ö±ÿþ:‡Â¤yué߈§©âü#r›T¤À“×"Súœÿž V¿"#R»ëUFù•ͽ¯uD¬¶‡kÂÕY«ÔplêÄ~ó¤é—6¢X†S:eÅ/„©n*Vý@ž£;ä›Û¼¯ã4zJVÎÒÆÞ¦7¼‚Mž…{«.¤Ju”U@ê4¶ßÿu:‰–°tð[ÊG ý"éj*èõ;Öàƒlõ–-O¸¡!£ttQ¨§E/v9ô¡ªÓÑø•´é—ýJ`þñ¿áM9ZÕuU…?(¿xÞ]h“µÔ}Fš4ÁµØNªƒƒx_Ö N¦¥By&ÞÝ'²ºtßá÷Â×>¸†[AÑ+r'=,Ì?¤,Z¬ÕÒŠ,GûšcjEÒ…0;Úòu[òa_n/ˆak*‘`Bû }ERlj5‰èc*-ÆäźIÝÇñ5$g]O‡ÿ¥jêß"Ó“©-âaŽGyÙÒŸáÝ[œË8•ã`x´¸ûUñ©V¢Ó°súÍñj2‹MûEãÁ”ik­]rAÌÐŒ`Bù”_´Í«ÉKF U'z0-˜&µ ۥĈԦ<¦iÚÙ=¢‘”˜B`lO6’SJ©ÌA·xÅ){²õ%¹[Þ: XßÄÍ…ÐSI€ ùýæmtk¨½ºˆšZ+¼¤Aô2ª5´ /zÄú1HT»°7Ž¡@µO”ØÖPŸÑÓ])©Ûy´eo‰Ô¦‰àÓJE…ü«3´ôø~ª­Ûe8&ý:•;ý§WMHéºñ&¾¦°>%Wú˜¶¤ e‹Ú]ž—S ¦T)z‡©Ó …"¡Ó…'åBnd:m2iiŠõWuCò!éêg·=V/Q®}æ/mx¥¾"ö±£L3Òxk*5ü1@/‘#ª—"ÄZMT:ü¿¨Œã×WǪÃsЦ㡽¢¾ÑA_m]2¯[†™¤ÔS­¥ Pm¨ ¯Þ¦…e7¦ÁÀèD3á8¶“ìá‡p?˜_Äö³¥\æ#´]ÙSÄU±='/âÚãVÆ”ZÏë5ÇŽÑn(ÕjKÔ1ÞµÆÿka|4šõ+Pe·‹H€qćá`ê´Ú)°Èd?îéðÊìµiTÚCÓ¨‡{ÿù5f3¨¡¦ÊCdr;æQ®òkÁsñäðµõÂŒ-gõ…ª¬–ªæê»‡¸ÿöm’Ýu¨‡È{tƒþ$b5”ÒöÙEWöž¢û\ZÍMº^øš‘:çp@(ý„g«ã—J¡¯ÌrÖJÃmcfü-ýä‚뺛ëÞoT•u:-H¨ŒU‡pDúæ.ÿ,‹NzÉ‘À,À_ëiòJÀ”£Xo¦Hç¤úñCT:}(¢ ¾! Êߌ{Zsç6È×+ç> ­IÍ:ŠU†,bTýÃ_9¼»WñXŠzÚB  0Â,iiTSöZვ°f÷úÊD$Ëè´KtÛcOáú¼ ëxÑJ­-5U¨¹pe¨ÄcJŠ•6,׿ Œš®6îÁæØ¼’£)öÊtª: ÿ1ÿÙPyQt5_gpl-5.10.1/examples/graphicsview/padnavigator/0000755000076500000240000000000013245231431022467 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/graphicsview/padnavigator/form.ui0000644000076500000240000001241013245231431023767 0ustar philstaff00000000000000 Form 0 0 378 385 BackSide Settings true true Title: Pad Navigator Example Modified: Extent 42 Qt::Horizontal 42 Other input true true Widgets On Graphics View QGraphicsProxyWidget QGraphicsWidget QObject QGraphicsItem QGraphicsLayoutItem QGraphicsGridLayout QGraphicsLayout QGraphicsLayoutItem QGraphicsLinearLayout QGraphicsLayout QGraphicsLayoutItem groupBox hostName dateTimeEdit horizontalSlider spinBox groupBox_2 treeWidget horizontalSlider valueChanged(int) spinBox setValue(int) 184 125 275 127 spinBox valueChanged(int) horizontalSlider setValue(int) 272 114 190 126 PyQt5_gpl-5.10.1/examples/graphicsview/padnavigator/images/0000755000076500000240000000000013245231431023734 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/graphicsview/padnavigator/images/artsfftscope.png0000644000076500000240000000241613245231431027150 0ustar philstaff00000000000000‰PNG  IHDR00Wù‡ÕIDAThí˜OL\UÆ?ÅD“fl”V)5- c,i)CEÞС °È J[°åO4-ÍÀLgø+(Å&mDhiSÀ>éÄ…I7m ”¨iÜÝ$¦ºpÓ\ÏmÒÂ{öž«qè ù%„ïã¼wr¾{ï›Ä>«à“dÔs À¬Šlà4§KÜÀ¨ÎchêTó9À)Îóð5ÝvÜݶF/ ú<@„Ó%{Sç)¦8=H“œÇÜŒ5°ªxâA8÷80Á‘î@Xç)Ü€žêLp¸Öóuòˆ¤¯Cˆóë¡Û¾oi=ˆ^ÏVD8]4`Šnï6Lq5MÀ‰IÎÓìº=b ¬pKk Þm/§btFTl'8]Rõ4º¢Uá0’âjxSpng":8O¡çé¶ï¿Û@B<²jK0W_ŠYYOa˜Ó%uÅ»z ³yáj|×w¥ð×z>³Ömô1ŠP§^g;EˆÑ%Áƒ¡+ïnŠS#PMÚEb<Íåö5°æØwçaˆ.Ù§K¨ÿø‚£Ü)®†?D¡ ÓœçÕ2Û"ÎÌDr?LŽ’tæçÃ䨬D®Ža ÄÕðx0SSƒN®†ßÓregøu‹F,ÔÔ×S„zi„ Á Eˆ©!ñz)BL@bh“\…[„b ¬tr ˜&ÎÎÌà̽¸t £ååh¯ªÂŽC‡RÕ¸e¼ƒ«QQó­­8.¯©ªqò$ÎY2MàÚÄߨi Àüò[ˆ;ÜËîÃG\ IA1fZ TÔ4@´‡åjŒ›øÝ² É~¥Ýjèæ"œ.|¦ÎSJ öQÜ RŠWãÚ‚m]£ ,[ÏÀýÝ7~RãâN—t¿…èéw†¢R\l9¡BÆ(L{ý_ê/«½Œß, $mãþ÷qAEÉ9]Ry:ÏŽ\ž-ÃYňìkB€«Ñð&,‹8•"ôEèŠPSKâtI+EHçqS„¨–Pq€"ôEˆ«1fP¬•i`irÒAvb‘0CY3‚œ.yñºtžô\„r+Q‘S†ér͵|ï`Ò²¶ÐÚ†èøEÍî0¦8]’?ˆ¨ÎSð&.rúëßCì€Éyz{г4ÐKêj<!N—ì¥éP„b ¬hpásÌá*½õUáÃ{¬.ñã¬ÖÓ†aVÿ×qTs­QÛÛiä ¾†´7×ÓZO͉Ó/c]Ͼ²dk4Bqk½U¼ˆé ûg dbÐÈRR­§ûþu4㳞vòX²5üùÕ˜¦THˆ(2.–§@ÕYP2à B>v<ÕêÊFÒAî»æšÎTPn#ßXqSlÙ]>8§°Ê9 (ѰuÁ¥ûjUˆ94 ´n 2òú‘jCÇ4“Îõ1¾–Ô§OÇš¡È. 7÷¦oB]BÿqyÇšÏ$7¹vò(–óÏ‘RÍó¤°¹v([üh”$¿$pjÌúÜÖoJ`n}TÈ0þŠ~Í7ùEp³U£V„è,ÝéyËKq…£ÎØQóP B»nçö¬J%U \ŸsžÔ6,ç,jç,rMîåb^w­H q*B¹cY·&FËÚ«4òM6•Øð¢¦T†Í=kÆ ÿ–1]1ÇICTfŒÉ+zQç“ö¥YÞí½q¢ú›ÏÉ®ç«\Í¢äöQ¦!q÷Æì|×Y5h¼J«¢1ü±ÜòÔs€+€`TYÂ/&º[1‚ð=Á;ý)÷4¥‡þ ·LuwXÑ-—ˆÆÿ$óûPì‹v~5"¸Î·F‚9ŽKw'èÅúVýÜBH¯ç/ ôåE0¸p<íŠÞ±¹=]O"¸Ö—èwK¦ÊçÝ › ö¬/㾆m¤7ŒÆÛäv§§t’MfV·J¹Žþͺ}à€À'½c)p¾PíòéçÁk+£Ðû©äV·ñwF“§^‘cn¦°Ùs÷¯F6e6Ë`ŰêVõÏæO½&êðÉÿûeu%¼”ïÜy­{u‚ö,¦ÍÝ?â¯B½:÷KibtžÆ–êús—MÑ÷×v²@Ûçƒâº9õ'¥.ê{ø©';ŠV¡”0Á¢O¼ƒÁªVû@Jš$M‘ƒÍYÆ¡Š ­ŠÏ@ô4NcÅ&Èß‘Q8öƒÜ«BÑÆÅZ­y_Qmm¤ž].qËv7 WZ°ÚZE#ë=ÈàPú¥­›Ù¼Ð6=ö5Ÿ.Fz±Œ¾ìc½.75¥ÓâÆ$ažÊ<Ö÷©±¡d†+u„{nkRÂ}]é{=!ê>îßµi$.ìåÊî´¶tûŽ3óÚ•ší&³zTõœ¤w4¼ 4¯éÂ¥Ü÷ñ[ÇÊm¥qz±§¸îx²Cs|ÚÈôã³mŸµ1oÓá¶OÄ_H€Î“À¬î³Ö\ÇoíN6ï[Ænð yiÓ¢1Z€Òp^‘²´¸êR›‹—+9foö¢t®”e_Æ^À<šbòïÖ"WD+ÂŽõ¾'¢Ó4l¢ÞÙtB¿ÿ_&®ƒ©n¾ÂHÞ™´Mr€x¬5&ÀÙJã;fÑÔ5ÉsŒ.ùhv³úç\`,À{“³Š¥ôbxCÄdúGqñ\õê¨÷Sç"·”.§.ãë+†yW_"¶Ò& jÙÂ5®„=s¥5¼˜(öçÍ|ÿ©ÚImtñ:Êq^µ$xäDpÑUþ&µ‹©ôñ{Y?Äýkž?K¯KÛÄ‘“àŠ-¼ëŒà¯"¦æ2¶1¾ÿ…“ÈÙ…wG¡é×°^Åé\ãQÍ©t·„ܵ ú‘ìG"·:GUÊúSn¼ö¬Yg1YŠåF‡_µRTǹNTþÕ·Ôl"™=XO#;v¬‰c’ߨՙJqPÊUäPàãb{Rì%Œó‘[DUªä‡ˆ‚wÅA‘X{5A¹Ò§$óŽÕ…­¼÷0O“ØV†ÚÃÄv»Q¢MtthDkák>êuyß°¬óE/g#ØœŸÚ„‡E³&Ä`Oéÿz¢åÛSraW e“ 6~•­YE­µz—k  $ö(=È*‰dén³Õb³Œ¢RžW,²òºŠk¨^Ái y| ó]C¨O}&+A“×¼˜ÍpNýŠˆ‰Æõ¬0µXÔ(Ú¶lgK.‘ë®K75”ÚHØ`ŽÔy˜ÉÑ4Ý£l‘ñVÍ¡Kûû›Ù±¹Ï +G¡ôu?}í ¸SÚ©ü-èÃi5ÌŠ CµW¨_ÏtpÍ¥;(ⵕ¿ëЉ՝Ëúh4ŸHóKÚ¨-“½‹jH“½5¨(ÀsFµcwæ‡þAÆäÕ¡`#ÒÙ=ÅIÎ"ó£;zˆw^ÔVWõ!Û:{ûS {ƒPè¯îÆ‘Ieš¢MÌcMÊ€ÇmcŸ×Í#Óž/|d2☑?ùT‘ýKþõ0É$¯º3±ûTñ¸ô2Qž7¬ i[\‰ýøÄ {ÀüÃÏÜSZZ^ǩғÁàVmÕÕœŠ¶ÈqÅ]̸»ˆGx¥~— ŠõÈ  ïµyùÿ›mšpCƒÖ½ްÛ.£ªw•™t¶¥ã½V) 2kMÕ¶eóK~,‰Ït&™\2ìrsÃI=rÁA7ŒÆßP¬)â)!Øù¯^à¨*FTò+ªÙ{HQôîµ1ºâ« g:Óf½‘êGí#ê(dr9(H>¬xÔ9k]#O¦uˆýÔ÷­]÷±æ-!(x5ç0³!’-˜}IãíD´ºxÜdGzÆXï¥ÙË»G:FôŸö4›¡S†¶í¯ã™w*þª¼¶ªñæYúXRegÓδ(Néš•Œ(Ù@­v†8{UÏýGþjÑ 5Ú)?;ÿ­kËôŒëË žÕÜÒcS6¦ÜžF4îrXÑçm¾Â´, ŸbîO&¶º?O ¢YF D±}i†ßz§Xê…É·µ`lÏ\ò·+ãnµÕÄGðöžçà‘À¬„L1’fÖç’j‹¥>Éåväù­ãŒÆ ­"Ÿµtw[>˜¡„cSéšÐ`´2n‡Kx5Ñ;E aúŽÄRÅv©Iv;¥ ZÊ–ÓºãùÐj’!G(܃URŽ„ÔìGqP^Pu``08?­ šê©sŸ¤/Üæªòö]óãj é,ˆvr(©Ô%]µ©ûÐ-,®n›Ø¤4ñé0B™¸˜¬[ŠºÞùY€uÐOæ~¢µº\Ñ3zR(:¸>kmíÙuBâHõi$ 4x‚q>Ò5!ñäRêÁ­um£-éÜÔ›FAÕǺù­KY=Xû‘½êØ7º1ƒÜy©ŽvqM36ùoã8þÕu’î †RW¾¡jÒÆ­ÃÍB,ñœG.ßzÞ±¨èO"–AJC9ÀÁÿµ[ªÞ~&\&BšâwÈÙµ/‚Mo dävh¶Ó´gÛÅ !ÅTìk[ØÓGY;¤±‡\Ò’ŠFC±¦¡œ0Á®yaî‡Ö­=}EÓÍgî¬Qæ½]ô 4,§|«Í]Db˜¡©9€~àDМ0æŒ.м`,£êO?"€2ŒX~¢¬Êu  8a¾Õž•h¥xÎ7#¸ñZ·^ÐQÈûRñz]A=¸ŽärÿzY•’B¤qÍ^ѲnƳTgù¬èî™vŠé®˜ ÞšM¨ãÊ+K£YzëK².û÷¡t»6¹“Ô}£Z'V¿~ØáĊͶÝEOYê¡ü5±ÒƒfaÞ³”`` ä^‰•ÁcZ’c =¨©*’ò*â¸%à  Uâ±b2Õ.JËÚ5g>xFšaÄH?½0b ²ð* Š›ØBâêâ5Õé©â¯ewÚîºïµxÃ)g5” ôî .¨‰÷)ªW‰Ñ¶ªYø$Ö­´1\@²ÆuDã+äQ¿ðÔ,bEO9ítÅHÞC€9­n™ÒI¶í½¬6é©€Ú”êL)Àë7+—úúH½80« {‰ï'¹%ŽóA–GšL œ…otNž-Õ”+ÿQZÔÆ¦ÞÑmmb¶¼Ž ~•^¦¾“FAúSv-ë]ƒÀöÇò;šW®6[ËŠ˜öV¯@`ICÀjÖžÞ2ØVÒÞ ct‹–æÿ^”Ç&TïYÊo +ÛMMÆ—ý!,miaƒMÚõ²Ìº¼î¶ÊfL {sWe)3ôcͦôbsUfU]MÀý뤨¡B>Ô×Õe¼Æ >õE_‡·€ÉÅHÊŸ‘U}a—Ü7½è3o(okVw_€Ï‘EI>ÓÅW¨»In{+:—˜1ˆ8ßê]Dmé6GÒßµa¥Õÿ+þ @W±¬qDÎ…Hž#‚7Ú™¾ÍeorÀl©>qI–"ÐŒÎ1v4¬6ãò&OÜÖb‚êYÇÚ¸á*ÌÀ ¢îu7¶§v?ÂZì£f#½%fªJ Ë’G8_h©ŽpUˆæHâ‰ö¨úc]D÷¬â¸š£Yúê°öŽ*å„“uZp{ÓV0){É€>šw£_N!‹ ú5”ÌÌÄ“–<ŸÁEš]´!ÿ©©7› ±b<ÔÜ>–œw5Öñ™F¿­uÇMÔ^9ÃlMRú,yíÑIôØ’<Õ#îNúC_Âs˜ËYÈv;¥oÉ0†ǵy?tS¬‰±Sk}¦3ÔS¾7 sÊr°¯Rê ëŒàx¬¹¤~ÿº|™H'5µÐúhŠ1up2Oе¾1ˆ·DéâÝDó®d;ªžÔÝô…Ïáûßw?Ò*×Sz0™[w; £t u\O¿æb{Ÿ‹}ÕZÄ*ŒM‡ŠÈêÉwžKg÷­~£'´ùŽkYõ IÙv­aù+k¢:¬ä÷Í7ü@¤•n­Þ±ãy#miÇÅ;Sbžœñ_š–s¸Ww.rNàbŒÚçÿNÆ7þ†àýƒ#`AƒRqJ‡eEÔÜ Ïšvº“ H@qÿÕOWœí Ï4•ÄÞ’zQóÜ×D0óÅÒ‹«T3[¿øˆPž gäæˆ’cÚþå4Ð}C®ñ¾µñWŽebAö‘ØÒ*^|LJxñLE,w ío5­Ø-xþ,\Ž~k­®TÒÛ7qRâ:dƒJÞ Ä‘Ÿª¬ý ß Tuðr)iÛl÷¢Ý9|g¹ ¿ºLvš‚`MRGá}íö«M/©+ÊvÔvÈtÛ–á¦?Ùh_Qø©sdð)« W¹m„ê–Víq(U(äÓ½Bå-áÖüþcS+zŒÆ€†þcdÔì£S)f!cñR;e'Ò?­vò˜ö""%˜ ß}ñ["híá ñôŠB-1±(Qáæ¥bg}ÿ°®år«#´òj$ø¡]HziÉæxÂÝt)Ïoé¤Ï´w&˜c²  l7&žDÖøÿÜ~~*:dTÜËÀúsU‘ýIKS,¼® 6Þƒq¡7e®bÁ¢S©t±ÁS=*äÛÌcsˆßcñC¸‹W¹y çcȦ¶êúWY‚ršôvr¤±DãèôÆ><×ý{IϽ´žãÅ=ü;q„019S•ûw©yŠÐ°ˆõ§êo¡[<5è/a´X£jÉþ+—NN@ò lHæÒø"¹åÚ°¯‰iˆà …e½›³“¨W¦º·‚5×pè VUïW³„µ„HÃó7Ó}% ¶W${\þ™¡ÏÔQj´—·÷\HQ>=¢¬©pÐâYˆOêm‡ïÍk®Àmn$IAÖpMj]Ü >£ÊŒšÉ+|%Êíœàþ¸¡ÞÜJÏ¡†œr)dµ,Ù™¦<€¥Àia’k‘K¶3úÓÖk æ´üøÈ#Š û½§ê½m Ö³úœdõT`78ìjÙ ¼R>GqRå5jL©¡31#Ú ÿZ¼pÍ!ö®‘äÔÖƒ–Ó‰§ Íèâ=?æ ÛkŽð#óD½a«cÆM'/!÷oØUa]nüÛ±ð*‚ØòrjíìˆÍ&çàv(‰›\›l£e^ÚšA½RÙÜ*Œ“Z.Éao¥w•¿j–èMÔÉeáá#Ô#Ü|Vil±É'ûÔ;œës–5T [Ôm°r+X`Šƒj¸EÎûýè+ps‚ 1W]B¹Ù¥Þ#éPûTÞÝCm˜ !æÆíÙjóIèt©%AîÇ5“n F,w'Í1ÇÊ‹ãrÌrÇ’h¶Vææò¯5H‘¦”FœšÕ@–¶ºW°Üù­|™jjêr„AíŠR2XéK© ³<ÓÖ o‚íÀ¬N ´Œ°E–Ý’wgmDë¥v–BïßNt›¹” ¥nMMÔ)¬¿"¯"¬‹­Nâ½ç@¶ôÀ¡ñÞ±ú‡Kº³:ÔkOê]ñRe*肱 ‘³ «z匑®ØRÛ½DâæÞÛdÄÒÿQÑö—{w,òûœ»øì(29v+ûµX(ˆaF\Õ“C•}À–äüS·14— €{´ çíC°„4ÁXíõ9ø§l«w,ǰ¦ô6ÓÆ+­Ù–`>w­+É8Îi $2J_[ïϲ¹·Ô Ú¦­æ ,Q¯ é\ïC¡ûW:3ÆýAÛúE/pùc⯬èyO2Ú—9cZ‚Ñ MÀÜÿ°©÷<™ÆIyK9w9$Õ®%y¥Î 3l£z1ÚGê\ÓúiŒ×7µ8ôÿ6^{)ª;zé¯'“V)$ļ‡HñD‹Òr§q[¹k¤ íÁ¢ÛJc|7šéãRгžj XôÍjðäq±¬¸ƒ!h_fCƒF²œÃ }‡ŸŠ¿YŒe/#߳㸬N*‹Ò(}†¡QÔîOÑæi"¤Á³íaƒBê9C<*Yö= $ ê8ËþQB•ÞFõ¿«ÖÅÛ|SP4Ò#ÛØy­É'5éö¯<Ê1œ…{“i©‘€Èýè?Ãý5cŒHã ŒŸQÖ¯2ÞŒ{\²·;¨¥:ÃOpNvÑ%Ìk”9{Ðm×TÀ|ÖÆwⵕÔÑýFÆ+Œ‚ |¥¿â±®#x¤)(ÃÞ½¤G,df³zOš]uÁŠ˜ç:4ó5©ÒîËÆ#cüÄΜþa⓾µ{wþ¥ìÔ%X08 äÒ6X42‰#;gPø=Å!ÖP¬ŽÉÃŒƒMØ\¬é¡þ¾ÿóSs xL}Æéÿß*É…Õ-õ¿XJz®r[zM,ñöäSv„9„s½i fù$Üý» =³-7Ô´’{ËnÎycTË>ÀmàU‘TýÇãµkH«31Üæ»Ccé4PøØjºHxlöªŽßÚ¦HÃ.¤£õ…Å°× n1Ú”ŽBWcÜVe—¡SphÖ³…œ›¡Û~Õ EÊìÔ"85{$F Œdåt57Ù–Ë_皺°–Eù(|’¬ÁÆÇÚâ” ÕµDÕé„¡Iˆ.3¤ W—@aºh¹qö¯]ü$Ÿ…é­w!çek9߯ Vémmý$>â7Å`;bÄäš%ÜÍ<ÆF<Щ†>1 YFÔÇjegGàqYÔkE%²xÊ{XnI`¹l ˜î¢q‚àüƒY—ó dÒ¿Jþô¬¹Œe™WîqXðÙ¶µìÉÔ£¿c÷¬£bð1e§úSv·Î˜Ã‡^ã9GŠá?—Œžc'ý)7‰ÛÎ#20e8"µl®DãI8a¿ëBê68&HAÛêR7„lѸe8"·ÜC=^؆õn9 FÁÀÛó/ßÅiÛL—VåN5cVUÌoo0ÇÊÒ_AèÎ.œf‰hº¦‘˜dꥠ}Q‚¼®ãýÅ3é›#‰ZÔ …Y‚ì§õ¡ÜLs§ö¤ÒàÿjM/;ïK’Ì|æ¤)fßzÓéöb5õ¦ ™e ^ÖÔ$fi†02'xÀ³²ðÛÓ}VèË!DúE$A+ÆELeîªöVú†¹?Ã]ÏÍZæ_Yñ1¯PµËéò Ž*„QþÔñ»A|'§Bÿ­N\Õ$•#\ñþ´¿âL‡ÚŽ@좵1Ðh9c¥·À¢Åk3œ¾TxÒ¨ýCN"hàê?Þ¸[\;‰òvpC`n)ª4âéK2NrvjZ{{›VÄÑ?Ô8¨Iz”di&;²áê+BÏ­Dê ½‰—VÙaµcï­üö_ËÓêAý<‘E¾¶Žé?bAþ¤ŠPâ¢2ñKêÀúcúVîî"ˆÄ6ChŽƒÁ£¼^&.SÑœpëÃR®)t9Áè*AcV•µDvqŸ"¢Sœy ûç™a‡vcŠ ýÍïúˆè]‹é.æVE‚!¦(ÆóóKX–VBÞ?¨æ7ŸŠº+3 “Y×±pM9mfåuýèÖ–éz’îÞ*·lNªX¹ÛÄ]ºÓ›Nj’±)é&@îhò$³9%FÃvì++¬õHmPÃjâIÕ á~Õ{šÔ®a²NCLFÈ;|šÈ %Ó™§bK‹hšVõ¥$äç~ZŸ†<Œ€­É¤)øR‡TeùHîn! ºêÿ2œ½äá?Øy ´—€àù4–·±Î¦÷pþhwö¢Oz¯ñÃ}«7([ ´OL[Þ<^Ù°ËäVuøFxdÈÈaÍ%.á@ø§l[ñ[¶å=ËJ[ °w©²áôŽÔ óêc°­!SÛæ•ºœ`‘Þ·ŽAwýè‘#½ °Õ*JoÈ5 Í¼‚2I5LFÀ¥ÚBxÚ¨w©ãî‰bIÉ©‰ ¶T œ ~Ú/N tîy¦WBÌžŒ–ý©gG¹Îòás¹¼ NGg9cXÆ_bµ @ROj“KÜ>[H;kb¬ÙbíNt‹C3‰æ_`úAïBéÖ­s(gzØšH­ ÔÄ^bÐRU³ª9&²ºSy³ ¦U8/ÜÒ½Bíî[ÞJÆ>”êÅ<«í] äóMlB¬qîÌ3䚺I&¥`@¢'Oc–ù¨ÿÂÖI2O}5x3km©vøàSÖ‚I$šA1‚dÔ¢_š ìY‚/z€7r„¦>pƒÉªô”1Û½ãîòåc?êik×7k[„:Wä÷5«"*ͺý.õ(‚ª°Žy?z£§é‹‹¶‘þ‘NÉ™JÖõÀÍŠíÂé“Ü¿¸ûSky@ò{ÀÂÌJ#ä€)›~dXvÈÛûšÍ¸…šH¥Û*~Æ”¸‰ã÷!8­y:DAN·…ÀmÿaKOaqåH£¶sY™cê®™çÿiaà –ËîNÌ)éáR}ÃAùàÒά£K®Tö=ëz@~ƒƒ†VýêboL„'*~“\ÊP{w^ê{U6#àÔZÊ`¸YÇÅ_¨Æ#ŸZ}îSJBäû‘ÇÍ9õìŒGë‹uûSÞÁ§”ÉIžFÿz]fÆÍSjuÀñwåÿz V±ŒoðhD°ÜWc5Úµj] ×T•aÈ5v,„É¢Is#.œà|Pp|TRˆ®®<×PâL jz}«\K¾tOšëg¹›'éîkFêâ+(t ±°¬Z q46p2µEdK,×sñ¨ö–­S^M­‰Á<ÿÅmØtèàˆ<©Ù|ýë;“±Óºk1ÖØcÝ›Z1ÛÛ ÷–sñ°£¾X ûPp%}r#SgÜyø«½ƒÍ%”{ˆñ–4¬÷ Ѿ@Å+îêbqäÕÔö¨À«1[$žç½5 a'šëxp2{U˜ƒ–?JÒÐ9ŽÉÜÒÒ¿£g-Áä+÷«Ü1ÓòÛš]þ_M†/ê94¢¿Âð—ê:ˆш¹ɧ­ÿĸ'œ_øUÕz³ÄÇ´eWäÑä;™Çùj{ô㦒6gb(± /±ñC¶_NÖ5=—?©§ú|F1®EΑê0?]M‘c,v€j ¬HÔTø¼Ò³_ÊìIÏwbí@ê¬ÿŒ1 ÷18Í.z‹ª9c“ìkÝSŠ›#ÿˆ«­ÌùÔJ1û ÎoR3ï ¿=ªVV9íZñˆÒkˆ¥\Eœ÷Æz^nž’)kyÐÆ€³ç’A¨7 dä|ŠLléJ\ÛÉ …]ø¥¥Z Žâ¶’îãôç‡Ï"—»³¾¥»kN㸫¿U±©‹iJ°uäsU¸‡H×ã¸ñAVÒuÔUù¿•p³Gô¶ãþ+®•uëLiq‘ñT·q$~“wSàÔ! Ûôø5gc“š‘¿ÅEA$Öô.7ذzâ>¥þõEÖÛ­G&?-,`¾sU$bºeeäç>*”׫Äâ<…×7ÚCéD2øÅ-onò¿«pIÎú|ÔÚÅîõ¥Ýö¦¡ $@ä×=‡ºdh:Fßµ5;ël“í4U†-?ÜÒw×xö©ßNJηUÝBïBsþ”€R}ÍÿÝX)úŸ“Ú‹Lí½nM"±¡sŽâœ¶ƒ|½L’ÁTnh÷…mã'Ö~£â¥Ë@ ˆ,"'ɪ]) ]ðwù¦z\%µM m÷¥T†½Î7äÓ|è)!Ëjíª½¶¶ê陂²ŒPd¶š':ã8òW ÐÄhNþšþ¤U¼‹YØGet—SÝô·U^I¢B¦{†frÃÀì*ˆ)ËJ¿þ“ýÍ;RŠ# Å@Ý”aßÕ“W€x¦ä”Ej’ž%—PùUÿ¾iH[»”¶€$…ÛýiâÍ1N-ãú ˆ"×,®ìŠÄºŽK»{—-dyÞ²!‘â|©#èz<‚+ì0ʰ*Gš[ø—¤´ë ·¿).¨­øu 6|â-ªºë·oÓµaÄå㸧ìnž"W¸«fº“*Å]t°óÞ£QÜr<Ôƒð×ñ`çŠZû§MÊ‚GƒIœêš ë×ÿª½¼ÒDu#dEP’§ ‘æ§“w®ö†Å?¾0^êxjϼ·*Å©|Q›c‘±¢¬¢A¦S‚8qþõ‹Žºо–çjiŽ´õÔ>¯šì[R€>Ü­´š[qH §"¡üÔ‘¥¾ͺÖå·8S毨Ð"8Š5[جç+A4Ij^yŒh)q Î5[XZyBŽ;š¬hÒɤnkBB–VÚF5µbÑE%š´ì#X£ÖÃsJXCœÈÜÞ‹<ÄûWsY¢oîNt®äö¥Tl·¹ÏíVE÷a=Îy=…5ml4ëo§»yûUâA 1Öß®i¨c,B Þ¥»„EÛ°­kdµ@ò`¹¬gž»P–´µ.ÃÜEcÎÌÒ–c’MzGAr7áFkÏÜÄK±½OŠîî•¥Ñb/k"&5ÀÍdÞÂÈä!—b)ŽŸxöÒ…m}ù­[‹xºŒ>¤EDÀûV¹Æìyø.gŒûe`>õ·Ó}˜?˜ŠÍŽH¬{ËgØ*G Ñ:5Ø·¸´Ö²››€}b?NP€ì)›`\¨‘LuÛaq¯¸súÒSN %Þ(öÃÖ j†r1…Øžõç?‰$ s;ç©iÖ¥žßÑp£mÍ`õ— #ç&¸|xåçËW 3¦lƒÎâ·z|ñ\Úú(ûý&°ºaÊìi®—0˜œá\sà×LñÜHOø“¤Ig9e\©ñÅeDæ6Ï#¸¯wjRí§ÝãXúוþ#érY\·´ã50Ïþr, Z){˜Š6GÅiu~›-›Ä‘öqþþ)#t¤þÕß‹7RÔº=ªê{ Èb“mÇb*èÚ—#õ«˜`Ñ£9\ÐyhNk}Ü>œ“JNûnM5ÔG·5Ý-Tk•†Ê*Ph•,íõ¶5Z0×™¤ãµDŒ×Sää £p06²šP¨vQB‰KŒ±Ò½üš8Ü`Ó¸vPxŠ@ͼ)§Q]1þíDlÈB¨À(íVE/‚OÆ)ëD†Õ}i†ãéZźþÔn›j¶ñz²qàR×RK5òÆ™9à Ýô³>¡íQÀ­?áSþ'…¤ƒ¥s\ò–MѯÒz×àÄÃønô.¡ÑCüÛSããS÷÷RëR) À¢×®8öÈû× ~NÚáãz¿JšÙ±"jCô¸ïI[ÜÍg Ë>ké~—PŒªéRÃu<ó½øVEÔöË!ïö5ßž^2fÆTRƒ!‚ÌÇÍc^Ú¼2Wv¢K Å•Á0+Êø§¡»·¼„Es…`6oÚogHW£ÞúMèͼm¶õZÓÐ\B5!ç[« U³Öu5hÞý"Ѳ¨?›xÞà\]°@ryÌ®rû|f™ŽIžp>Ñ­l¥‘C¤4dN3ÜVêÏÔ:¡ulŽ+æöwENûÖ­¥Ë) „àן?Š^š”ïñF7-?æCÁ¯1u|\wSùk׋Ⱥ„^…Ð !Ø?c÷¯5Öìå³¹9gcæ·ñ]qJÎÙ—CqÛâ‚3˜#j;á†Gê*’.µùWkH#v©àäP¢b“D«(›¥õ!Èí@·r-eQ±æ˜ŒìTðihÆ™¤CÝM[Ð%·ø#h#2>;hÇùB±Äc8ɬúÿÙPyQt5_gpl-5.10.1/examples/graphicsview/padnavigator/images/kontact_contacts.png0000644000076500000240000001043613245231431030007 0ustar philstaff00000000000000‰PNG  IHDR00Wù‡åIDATx^íšipå™ÇowÏŒFÒè°dɲ$[6’lƒ±±1cÀæÇ®B œ@²IȆì’d©MØd7›„£È&pe³†%Âá§mœØ_Û²äK#æèë=VšnvVåR6{Tªö©úÕóö[ª®çÿ\Ó$Œ1ü9›ÅŸ¹9BÆÔ&_¿ _;#HcJSë{Þ…qaªºæøD*Õ¬•ö}·´[†áÓ–m?p× ‡^Þ7è‘r,|©ùŸ4c GY$èoϪ£b ½â{Ó™úOÍ]¶|Þ1Ç/¢yR©¤ ‹ä³'öíÚ¾xÇ«?ºâHaíÚ-Á\³å­ :iñþ%Í´Ô„ä5£SÚÏÿà¸eg^¾ìÝ×ÓØ5Œ‚ áÊ¥¹³iÇËÉgœRsꆗ.]ôÐÚUÿôäîë7”w3Ö¨±`47ÇWWî6•`« {(š?a’ŽàúS'pÖT©c+tº|͵—Ÿû™Ûiìš ¡¡eƒ±@¡7@XÇœ´˜+®¿:sÓE3ï:¾Å¾†Ø:€Ÿ4À¦xpÜÜ?oè†;`¢ç¿*`Íü¶Û |@€_¸yÑêK/8qÍu  HN Ø)°ÀaVäµ×#3±…³¯\Ã'ÎnÿÖÄj–\ ,OÂÔ ŽÆ¦:Ð(`º€äÛÐQo³ª'–ÊŸÑÑÝ}ã‰ü¨Œ€V`4`Æ›ô}jšZXñ®•Ukæ%ÿHj d §E4˜ÈÛ@•x›VÍH0¡Jã @JžwÆE)+†Ðª"K ó J }Ð!h FE 0Fc€Ð÷˜Ð3›ó–uÖVÍ; €ˆ3ÐfŠœ¢ œ?Â9¦Ä‰BQŸ8ogˆÓ XÜBTY`”N667­ž4s¸9)@DA ŒŽ*¡üÈGBÊ£Ëh­Àrè™Óñ“·¯Ô;y‚#\zÄçêÔÄéKR3{êí¦&L"ûú¶nëè?ò«Ùš;¶Áo”xÚ3‚ŽŒÂ`Y dØÑ4yr—S†°–Ž‚·‚¸h:Øå•}D Ð#SnG«µ‰óêYÙ OV]tñŠÚk>@õ ó±35­A†¯DØß79ùì³WÜqç½Wüdãæ»¾føT ²”€„e¨²$©x• ©¶.“Ä °˜0\˜X@!£ÓZÅD­äjŸÞu{YoßñÀ7I_|ø%L`dü~’˜8†Ë.¢áìwò‰;û{?œÿÁBxá ìù#~‰Á¦ìEôl*Ì€‘Qö…]`•*ø ”Di‰6mÞ|n ï¥ëΟ’X¶B/z‡e#F0# ¬¢=·|ŸüÄǸ¨¥iApÛ7~ö¾Ã¥3% ýÞ!.É4„‚Q, Ù¡nÂB„Œ¨œKh u¼R ÐôõÂyd=ÝŸý<‰e'cJ9ø G©Ð…fÍ¥¬yÿ{]SŸ¸ùn¡¾aè/¶@ʦ/wxÿN7?eTºYŠy.ßK ËÙÑJ¢µ¤–xúU¦ÍYBrõjÌÐh JôAIŒÖ•Ul*€mОq _:ïÚ Çþ^‚u{Àv iÀ5<”{èÈîÍ!2Œ•>‚è^…(9‚’å³ J8p€š½Yλ¤FAËúe¢;Ï ÆP©DHØØÄŒ³WÔ¬j®¾ä~ =¾Þ5 ~ÖêpÙ€ÄÖ|ÿ—Ÿ¸¡é˜¹BX*e7˜xe´Q() ü";Lvï~ºZÓ¦c¼b<;€V Då¬d½õÔ>´ÛÔ¸öçàvßá© ¯·øô°¯«wßÇv®û—{ºO»ÀÑ2Û«& •" =¯ˆïðü<Þ‘2m³ ™‚0ˆúÞèhGó–€x+‰Q‘Gëø½q‚Âj3ôtµvòÂîz ;®lxjn ´âpRpãt‹¶’ª¾´w½ºêií´/|BØq©AkUî{ú„¾K0ŠWÀ Šø¹,©)µqk°4Âhˆ+ D‚´®¯¢6Š*A‚Ѥ35Õ@züªpq¨hP2…Ñß[²øò÷å¨bÝÖÌ{úš§Î fB ÚÔ[½‘ˆÀÃ/äêßÃÁR ©R2Œ3oct¼.T÷?Ï€AGD"”‚Àƒrr‚Œ/àC)H8@ùe)[$îÿÆÊ¯Ÿ\Ë,þþ©¯ÒsÙ—¨îåµ_ÞNzç&2 ˆú ( ³WÀ=p’cðOšN¾§ƒ¡G²Ô¸%L2‰Ðª²:ãøãm3&ëÚÄ^+ðÝH@!ÇöÙ½ÀÐø¬*2z õw¾µúÎÿÈ äkÏÞÊÇN¹ba€–+è›V˃÷ÿ”ã…¹»^Fw&° šÒ!ÍãçžCÕ…-œ4¯ƒR¶Ÿm¹^Ú÷¡§LGÈa c8pF0´Öà{à•0{yr×Áçp|E ª×½ò=']yõG^Ëc;fQçIœ6mú7²oà ¼P²ìäKI·FÏY7й͇X{Æ,¾êz•^ã ¿™¶ÂªOXˆÜô|$@ëÊDfˆPñZFÁ»EŒW"åæÙÿÛÍÃk÷fùýkTÚ4µÔOûÊ_-ÿ0oä·°?¿‡wÏ¿_—XÐv<»³oR <4MÅï:‰·Òqëí¬k¤æ+ñ-ÓØ3l1t¤‰­¬Ò¾ýF&m¯g>"ðFg?òQ 02ߥ¼ÎÎM|ùÉ—î õƶEס¥âàÆïŒ³…<}Í»O?¿µ¥¡ž'_ÿsÚæàª" £¯C,·HzÛ«lhãÑ•÷N™Ý™ÿBmc×gTqÀS~RuíøÃ½¸ú”YÓ¦Íjn¨aç¡­4e&P”y,lÆÇÑ l‘! ÞEæhZ:#%CÁñâ8>þò½r Wž3‘µOH~µð3¬ÉþgÛ#$fv64£„ƒÑ ¤,·KÒÆîïÅߘǜÁ-…3XÒlW-¾¸ëú»ÍÎ •¹DXNÀrjHf&Wà[+{&µYE•# 0©®|˜Å)VG$°G±lFXF(ÇÃ8Š!™ YûÔa{~·_7™-[SO–ù= ÎúÄ}¿œÉ×®›B°c×7}¤› ;4ùA‹þî¥<»l) ‰ÃlØô:I¯€Á"Ÿ©göâÙPSOëD}šåÇ&¨š3çÖõòáËá“—4.ÿË[žü6p5Øô½üMà}Äœ¶dÒõá8ÕäP9ã ,mÔBÎ(QðX1‘ Kç¸ûÎÇ fO…ýüg¼³újÁ♂­{¡«æÛTWOdB×D~½ËCêéiµÂ›‡àw4K; ¦AÒ©¦¯?Ã3¹pY#Ï]ø®«îؼúÑ ÿÑJ‡6U>§‘¶ãJ—¢F‹‚ÌQ’Ãåç¢%GLY\aôù2Y~½n%g³ê´/ns±S Ú;ªòÀIÀœ.›iÍ‚™m0¥Î=®\PÅ{¤9¯:êaþ¸hœ<Û…N û‘w%x²r7äBÖ…¼e¿B¶míµ (Âüy;Ïz *0ö£;¶ß;¼²@ÊVØ:U@Œ £ú?ÞB aI¶¾VÅ„ÆVRصӧµ¹šœŽ€„ÇÇŠžm+ª€Ä˜Ï ÐÔ(¤© Ô`„ ]›â¾–I Z;;ñÐÆº.`w$Àr~‘}SÿnýóƒóŸâ¹ ˆˆ1*+°,,]¢ww-†½(k‰t¢|NÚ°À‰±­Š‹Ê—5Tè·Ä„:U[WEß@À”Î&¶4ˆTǼŠC ìO>÷ûxºN‹™'$ð‚BFÛDZ,¢1QžŒxK Â"¹$=Ó+™ÀSŒ¢+@”‰*  R€£(S*0ޝE¹ÕÒµi,§iúØo!!žEqÕ¿Ý!¿Ý¿’šy§Jêš<Œe#µÅØXú­öXXȰ€WiC®¡*á0ìÇíc`ÇÁ' ÆÐŒpTŒí0èFkãÔU8„€%îÑozuãÓ·¼öTÝ9sÎäŠ mŠšzH¥ÁIl[ FØ u )]Š%II ì„ àÇ™·!¡Æ °Ä˜8Z€ŽDÈJ+Æ^Û69J£$•-Ô—«¼Í÷7±{÷þºm‹wݳçsÏÝzxíÏ?—ýþÏzÙûþ:ôî»94÷}!ä¾/Üÿ倿*Ù¿{ì‘"¡€’„BQ  0>äßÂ|ÁïÇù[_GÉÉöƒ.U*°±NÍ€•¬ ¼er@‰Õ,…Ý"ƒeW#Dc@hßÉ Þ»­ÿÆÙᕬÇý=NÆÎ@\…˜¸…P•  dìÚ+ìÝ>vžß z*Æ’ÇèÝ(ÆXuíÙ¯ôm~ãCûwάkëiÀ8zûµBÇ î_Y§iØùb¹Þõ¯uxS¥…¤‚õÛÀõyû&‚¼û/ßûCy+¢’ÇŒm—£Z(>Û>Q;ú ØóÚ0›Þ€,þëÝ`úÇV N¹oß –Å—û_}sÑ3·=¾ráûO¥¡³–P‚`·Ï8C·O¼J+('òû_<È+ß|ï=÷k¹ù.bsøSMd@8®°.è{içmÙýœvúñvç’éÔu4¬ØX•Ö‰CÅ  c127’Ý5À›Oïdßó¯¸Ò{äNÌ3_²ÿ}Œ‡‘@  d'ízCÅ;·Ü÷Ý«·>ÔyV¦­«+ÓÞf×¶6PÕXC²&…²±N¥T"}‰Ÿ÷p ä ïÝíz6=/ÿ†F< à¿O!…Ÿ&=á[Će[ëüÍzî«ÉíÍ›ÛÛ4š¦Cz2d¡ª,ì*h ¥s0|wÃáíÝ dûÿÿVù¿¶=;Ìñ£²¶GIEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/padnavigator/images/kontact_journal.png0000644000076500000240000000627513245231431027651 0ustar philstaff00000000000000‰PNG  IHDR00Wù‡ „IDATx^í™kŒ\åyÇÏ{.3;3{³×^¼¶×Á.—„º`L A­CD@T–Jiª^H?Ð6Hýâ¨J+Ô¤_šVi¥‚TU©Ä¥Ú(!&&0Wc vl¼»àËz½7ïuîçœ÷} G‡ØÁ¨TEò_zu4Íó›ÿÿyçÑŒ¨*¿Ì2üRëÀ€ >™fff˜››PEiIPPG*ñA½œ‡ñ}@P‹mXœÍŠõ‹!¹5ýê…Ý€€j¢êêDËU±ÍºØF$jˆàTP0"B&T•R©Ä¦M›‘À}÷ÝÇý÷ßOoW¡¿+†JAÐ㉊E$2…°¬1µâæ|°fëpaÍ–ÍÅîþ‹ºzÖõ]Ý@šZuqöÌÙ¥S¯îš{c.Ùô¹-·á†á-¥m½~o!'žïA»¤Úˆ«Ë‹µå………ÙùÙ‰³ïÕMDóãå\eB.6't]¡iò!ùŲ³#åçO/-=ïT In¾ùfzè!‚ hÔ«Uo|eǺÜ×.êw{ùãÁMÈÆÏHïæK̺ehÃoÓ@W0Øg¤¯¥ø†T‘…Ùʵ¼yòV­ÏŸÕáá rõÖ¼ !çƒgX‘UHl/Í*ÑNªÊÔ’åñƒNžx—’y¿üä~ʳËÜÿïµ±wÆË·ÎÕk#dZ\\$ãA20îýæ·>;ñß{Ÿøò­¥ÁÁÿ9±‹Æå»ùãÖ°¶]xB&¥“T…éù:}Ý!ù@°NQM™i;£ó‘YxàGÇø‡á¿aK8Å{'ã=ÏÌ}it~î 2ÝrË-ìÛ·0 [\T*]׳M®Ù¾ž·6ñzןòõO¯aK¿âœÃY%r®½™V.Wñ<$±Ôë ÔԹθ´òmŒÁ—€õ%0ÌQ<$'tçÕÏyÞÀy‡Ø÷X“ T©ÇB>Ò'mÆZ»Òh'9MkÁ:‡µÍ.…óJ#Šð‚J ]9•œgúÏ  šÚsÔâUÐÖt¥¦U Š"8À:hZ%çÀ) íN€€(d&à !F9¥+/¬ üK¶ô¯ýüðö+‡ÇFß~SDÞ´ h8«Xg1XGâ =¶AëÙ¤‘AIœB ‘u-ðVlh‡ŒÖz@e)Q/áJÃÞ48øG}á–Bí¾rúÍ·þ‰ªþ´œSM3kHR¦…Øi ÑîÀj.€°)¸£`ÉET@ÚA2Œ´àr¡Ïr’'IK“–Û}WÉ›_à§ÿøwÈ_ÜrÙgvÞ."ˆ Ö:<,ι q§c¤è „Q°NSð̲$+bDÒbbAàSµy޼6GÑmg°»—WŸzšËŠÆ~ôsRŸàÏ¿F;£ŠªÃh‚[q" ðQ‚fTH¢$ έríº•Æ[Y„" ~ÎçèHÂ'&{ÙqÉåúÁ÷ñ‚Óh0Òlh–—÷ªj;@âœM¬’: Iê@#D!vÙª¬d½Ò>¢ÙÇŽ¸Ó ´¹  ‚@S¡Ø˜"::ÎU×]ÏèsÏÑX^¦ÔÕÅ©©“OÁ_\ §Ú*QÔ´–´qQ—:¹,BVQÕ¶F[´â“¤5Q¬$NpNAYU"íO£P­ÔèùÙ¿ð¥+×0{ì3##ô®]Ë/ÆÇËûá¯'áÅ+W½FQuêpÙãj1ÄYŒT D+Zb‹¬D¨Ý.d/|§Ìî{˜kêgÉ©åØ è`brÒ=ií}ÇàÑŽÛ(*MkŽ'ÃX° ‘ÐÌ:]¥-ªÔµ8P@ÐÖ0“I[ Æ3Œ=ó†?ÏÖµzì1 }},ÍÏóVÔFDöÛz=é N•Dê Y„íüéC L,Bœ8¬kÍJ[‘´;!Æpîí£,íû>7¼‘£?Žˆ4šL*¬ß6äw­©×é ÄÖ©³™êÜ @âÚrÞ®Õâ!i„° è*Ò¬ˆ¡~îg÷þ+7lÞÀø /P}ïu®ÔÍñÊ×üþcxG³u¢s„ˆÕl•ˆ,ˆ´ç¶ó4*­¦È¡ ]‚‹"N>ò]vjccL9Bq`€‘É ¶}yK¶w3>³ìå|Ó÷Ñ‚SUµÖq¨jê€S0J›: ¤ö[‡Sm±ºŠ§÷­óôz†ÃÏ>›6zz–—ßÈg?½„0O>TJa°æ|4K‡cŒ‹h&€FEa•ͲµÆµšržà¬CUIkа ã1õÊÏ)zžK‡9²w/aO‹óó¼ñ©]¼ýEÅ~Ð 0rÒØ“¨MW‰lÑÒ•e Yí>ÔV„|Ö)¤¥­Ùî¿|rŒÆþǸñ›ywß>œµXçøŸ¾!–¿ú÷Øé^ª±(¹ÀÑ“Ë÷ ‚¢«T⨙¸TµøDi„ðLÖŸtŠ‘¶ï7FpP—1BêHsi‘éG¿Ë®ÍƒÌ¼ôå3gðûú©VYÿosbë$3ÓT“UG.„Àh?àvUëÔ%Ù71©–8bOÈbðÑù²8éYmÆÚ„ñï=ÀUyS§™>xüºuŸš¦w÷=¬¿ù7ya ¬R‰ó¨*¯”BÓçÄή$ªØ u ¦‘d”f•›D@Úq ZA5Ý«Úé'gÓôI»ò{úiòŒOO“üÖïrÙFÅ@ìÀš€²íJsíJ! Ç3&;Ûè`Uq©õjMh®D(m¨Õ'íBµC²¡w€Ë†vúõW^y–_Ý<ÄèÃã Ì/.2»ýjv쾇 Ð…Ÿ(V!1>å¤ U‡ïCÎ×n#’–:ý2gg³yÄDA¤=3m/õÃÊ.«<ÏP™8ÍÒ¾G¸îâaÎüøÇĵ ç8ÙÓÏå÷ü-Ý6"ÎÅ¥[L#íyУ÷ý"@'€X!I#ä,Fêå£%ºÚ¢–xÆTËL<úo\»a•W_eùwînFku6ã[\´c'¢M–SÅx÷]Qây®QÁ9›9[XíòQ€Ž`­ïŽ8¶à,§¾¿—Ë%!?yެ[ÇèÔ$ýwïæÒÛn\+~ˆÅPqE¬SÄ(ÅPs¥0왫W;Ī’X« “­‰<0€Áisˆd0‚¶ ßß b˜8ô2=ïc¸·‡±ýûñ×®åôô £»~‡«îø:gl‰À)¡@Î(~=hXX¶Ý$V|àB#ô~ä6 ¨ª#Û‡h:hªÁz†r KMa®çÞ?uXh@9‚ZLúFF¡``mf& ,Çlš;ÎîÛnc|Ͻˆï³P)óLq?¹l7ý°‰I–4!GDAbŠ1]‰è¯Y Þtê@P —«û@ç5“$nÄšX§¨:Ä6)OGìy*!Žª ÕfLÅ8§3K( 9šähÓ5Wa©ywî$j• Woeq㥜úí;~ø§Ž¾Èµ_½žë~å yy‘œIMD Äé ß?Féòcúò¿G47G?—(4:DÖ.Uf66ùazüZá ÂÊ·)6ØRS,Yò¾%çÅøa’&4«$µ qµN³R§^iºÊr³yvÖž™ÏoìÚ²áúMãã3œòrܼh+=tù™— <ãùžç§Ç÷üÀ÷‚ 0 Ä3b¬Uµq¬ S“ÉK§ÌÏçjµ×;Ô“xal¦¹ÿè‰ÞaOÎìx›î(q¤Ôë–ê¼£Z¶Z©8{¶ìË-/Wuq±¦³•SKu{v¹é&ÊM{¶Å“Mdö¦/^ñÏÝÝ›~+~ùåçþëC/}§º8wŠã„ù÷{õ¼% }†Å CÏ„@° Ír”,Î7ê‡+Q4ÛÀ¡œ˜þ§øI­n;ÞX¥Ç9µH«å†›]ªÛ‰Zä&ÊQr¶ÅSõÄžk$ñbä\Ù¡MÀÒCC[>ÿÉOm¿æµ×^>óÄ?øÎèè‘¢¨¹D¦åˆ«öŸ×÷ìÙÃ>ˆïûÆÏyFB@jœ8YUEÛWgD>,Ueýú¡+¶o¿æî‘‘#{Ïœ9q>®¬µìÚµ‹{ï½·ýŽ»îº‹;3LM…&ï-!bîvΪˆð)ß÷ÓpáŸúÿ_]¸pàn©“zõ9þIEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/padnavigator/images/kontact_mail.png0000644000076500000240000000620213245231431027107 0ustar philstaff00000000000000‰PNG  IHDR00Wù‡ IIDATx^íš l\×yFÏ}o6W Iq§HŠ¢¨Ú)S’Û2’ÈRk;N`;ñ»qÓ$mªÖ‰ã´®a#µ“6¨¸iÓÖmí¢ Òik©›ZK—زMY\ÄM¤¸."‡gÈYßr«Á{Æ3¦ðŒÒàÃÿîpfîwþåæBJÉÏóCùø×J€3gÎpòäÉ Üw„džfh{³¦ùÓxþùç¹ùæ›ÿw€H$Bggç‡ØUǾ EµÏ¶4Ô†¼Ž¼|Š'zÇZsÇÛÚµ[EÜ{#ßi½ë÷Ñ/½£ÜóÅ?þäK_+í|ò~ž--É)dë}²ùî‡Y¿{ Â%þÏÍÀ±Ý<¼÷Ðñ¶šw ¨njö|žýŸðß~߯?Ñøéçfò™?ùäÃ_ÿóc'_î-äì¼rËwÈŽ/ü•GŽâ¯XÊÏ`}Å'ø~wÿ'^@'¹?UøÂ[ò;<àû壕ܴ£œ'ïÛÎkOüðÅŽ=ÿÍ'¾ñÐãøFËgÿnÚ{ëKØñ•?¢êc÷“¿iŠG½nwâ™ý·=VVPÚ€)%ßú×)ž}m’ïq ›ÖÑ;§¬ÄOÊTˆj.ܹy´l«âá;·óÒ×ûNÿÙ½»þú»¿ñ+_}ú÷ÿêÖÏ}¯?pôO'ØúÛÿB^Ó YŸBÙhgû>r ásÛ~ ¤d!®óÈ+Ãl)÷ñWÍg c05Ÿ¦¡.·R‚$¦„˜¦"…JEM9UµeÜñ1©øTYqæÇC¿ø›_î\dùR'XsUA|æˆxaÿßv«nRê|óõ)vÖäð‘-‚1…P"1<¿ ¡`›ÿIQ2iS2!öæO¥Ç÷ðàî¶c‡j¶G)À¤{:Îs'j¾’âBÏ"‰´‰ÛãÂ#$n—¤eV8†YÄ«J.\ ,_RkPZ@àö6ßs­w=ÔHiK ……>6çúij,B×%±X!.!-“8P>aÐÑÝ7›ZóÀ=‡xz÷Ç¿RžWX†Ô“H™É~’í•9èR Ú½®ºž"¯mLØÆ­µX{-™ F O÷ ókв=GZÝvÓ—1ÓQf€s£ öÔ”"ÀÊöûÆllgm¤Òy¾gx#Õ—w/$ÜMÝcÚÌšx](w/¶~âÛň#$¼;¥ñÔ.¿Ó*`HV¶H!°l@\Š$o¡ŸOï –Dªò^þê+áÀÜš|tì?|ÛÁªM7b$‚ MÀÌDfâ.Jò\$ é 'Ø}¾"ã¶mV©R^tš‡òß t¤†×OMÕ–©m3‹Æ«Y¬>¸'Z½Ï¶Þù{ñ+HSi™JjV…cZ²Šqa9vª$ìµ-EIû_ 6¹( âv»ÕÍUîCW^Ò×` î3ûŽ=V‘ãób&ç‘Ò[ç&UÔú€*VN§ÇqÚÅÎ:ö¼˜’â·^ÁW† ÷¢ÄNQ8ÏÖêøþÿèIæ¡kع=7î¯tÛ‘Ïc,XƒË¦ryð°U‘ Wi@:@ÎÚ‚²*wþuò×õCÕMPÐ ë¦(/)¤±<´]UXo˜×àV÷æÅ«­ã&1e}iIꀩ‘^ wþ¶®÷`JiçÊ·;¦í*)!ÙßC•~Qßå·&”6QQT@¡_-)/rµL-è}×ðñ]<´÷бƒ• {ÐBÑb£¤;-EzXÒTróΡ* Ì•ÆW?‰¤°ÌG§æÙ0óO(;Ê ö MP 0·¿o@l©öº ðÏ@*+€üríáuõ5„Ï~‰xü-¤¶ •~m»k@¸´« µ]¥ð|ŠŠž¿ÅÓ€’;@ñ€ÔKJ`eÅçÙ\±¼ÿ®X0—@u1ÕS9T–SäûËIFö²"QÅ…¸ªŽÅVfXˆ¿‘o_V~ ™ KŠÞûy‹!°ÜëÃ’Ô-6PY¾>3ÛÁzSf 0>Ϙ¢Ž¤äº‚Í-äln#'2Ž>>Mlá2q_˜.m¿VésVÂ6. cw÷YŠ[P\îZ«mÐAj¶ÒPZIEy>÷¥ü ¥žÖ‘`º –$9åÍðòÜñ©@`3”ìÄU»H¡¤`<ÄÉ”FÞ•A¨ß¼J„]c>b’¤±8ŽØ°Ô"§mdFi[)ÈõPPÒH^~Må‘¶«ßâY qÏ8§oˆŽ—Š¡-‚§Ø’· ±ŽnQ 1ÌÎ'³i/¸½¬öELÂÓ‹lо‡òÑ uœ¶Ñ°ÍÛJ"ü…TÖ5ÒT1»ïߺ– ®à”©‡H&ÉѼàÊ$@xA(ˆâbÔÒjÐ\(ƒíÈ´†YÓ Åå€`!"™ÓÙ0ø¾Û?¤mã¶y>˜ý$˜ 0ãàêºMÔÚ›¼.Q“ÒåLV¿‰ß¢ !ç–AÓAƬ–%@&-™K .!¶6£ìnCMDP;ΠŒtŽLÏC ëU·ÞªneØ´2íÎĸ­ÈeÈ7©.«ÆãRýµ%ÞV@d È‹£œ‰†zÁPÁXs̘­¸­„dDÁ˜AT v·¢”VR8ü&¥Omk3æ‚qÀeG1KærFÖ^¿G%°¾B4•ûnr³èâT4Ô‡I.ha0£¶–A.Û[ VLXѯ ü¼»›©þÔˆú¦ÌsPœ×f´Â´™QŒ8ˆ5·°±4g/P”5@ûgR‰°L,‡ÀÖ&FÄÞdÉÙÔ2agÑVæÚ˜mÒ—VToÙµ¢“#zô4èÈ(5[©(ò6ø=J]ÖÝ#\ŽÄ‰Ìwƒ™g}°·!m÷«b9u QìkœuÔ~ÿ¢­%ÐSŽùŒr%•ëJðx<Þº_ d é˜‡9»8Û b ¥í,-Ù‡¦8[fdÅ߬÷YŠ‚žÍ6ï:>WšÒªºLò²þ=ðN¿<ݶ£ëaS  ¤uPL0UPU(iPTïË(+ò"Ó9:¥aÉ4Áü`ÔÁ0ÀÐ-™:"¤vs úö@hÍêÖb×°üO=×—Ãã ýN–´4Îu ´$hqЖ@·úÙ–µÖ3ÏǬlë)pÞ¿Êgj`ØUP"lhÞIižwCžWÝÀÐ4ó.-\y\ë3Æq”r¢Õ¿Î:íÍÖÊ×;kHs¤r6BÅ!ò倢äû\€+«Ò è’§ê›Ú·Öm=ÑPT[ ʼnBX"±"$vü L0M;€<•à­Bz+ ‡ãŒ÷w3Úû*#=Ý£©ñàRzÙØ§‘yæ–Ù‹¿ª«\†#½ €p„ÀpÌ*x*À[ ¾jb ˜èï`¬ï߯ªƒÅù ñ¤±t9˜èšMttM.ýÈ0e e ð΀<«§Fd~H-v•@rrµì;œ*HìeÆpøj‘¾RzÓ—»™ìÿ/ÆûÏ3?5"i›K^šIt^žM¶O„SÝR2„ìáMd 0’áP” ¡‰·÷7íƒø˜ŽéU* ¨à-ƒœ:ðד¦ˆàÄSío39ð=æ'I$ÒÉñymäÒLªk`:Ù>Jw¥u9ÌÑ5½½þV¯qªvã¹}rïgs§qn/@F€¯ ò6A^#¦¯šùéË\é<ÇÔÀß»H:‘0'CúhßdúâÀtªýr0ÝO™ã@Ð6wj¶Æ÷F»FÌSÇf{×\Åx˜¸‹ ?c¸ Ó_O$<ÇìÐseð;Ì ½M23‚‹ÆLߤv±w2ý^ÿdúÝ¥¤9fŽËY¾v€žQómCOǦ:rËëAzJXŽÅ˜~“Ù7ÿ’àð9â‘  E͹¾ ½ïâ„v¡R;Œ—lÃaÛ°±ÒÀuFdôò´y:ç§aºrs#o[˜d)nF{ÆŒÞî1­³{TwfÑ0L®Ø†—V;5®3€£oýCò—îšîùƒüœ¾ÆÞq£ÿâ˜þîÐÃ>)XøI'Åuhnnæ©§žZµÀý@IK3´À2¸>6o+?÷ÿnó?kv[b]îIEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/padnavigator/images/kontact_notes.png0000644000076500000240000000746513245231431027331 0ustar philstaff00000000000000‰PNG  IHDR00Wù‡üIDATx^í˜ypUešÆ眻$7¹Ù7’“–HØ "‹Ó€Š,:í‚ÚÓj«Ó3êôÐ]mOOOÙ]mwW—MMkOÙ£££Ð,DEC!ìKÈž{s÷ýÜs¾¹MN PLµPSvÕ³‹â!åÔ¿òRÆ ªÑï$UMl4üù–’€ùl2=9Ý"“gv‘wg)æT-ŸmäÂÜùCÃlk^òØs‘vÇ;Èæ\ÀòU5h‹»È¬J'TTÊÑúqbÚÓd§X(ΰ2i™gçU“?bÜdÓ 9v@þƵس?5—‡>Ư†¿Î{ÒLöl\ùkYó_+iø¼™š •Ÿ=:޼’ ß—Sn+¬ß €q”‡½0óŸGÿŽÇzŸgEÛ |öÓƒ,¾ÿ~æÕMãܱ½D»°dN‹ê§ ‘sî~ H”[ «ÉX“¦]jŽã;|‰ü ò‹èèt“SÀ³û4‡á‹=<ÿè$† Ÿð˜){âhÀvËdI¨r$ÒÏ… p±•ô‹|-HGWý.} >+Kž\Bóáf"þó¼ü9iI9ž²ó-Ð>§JQ×;’%Be^””>Å­œ~PÜWÿ[±`áÃâÍ7?Ÿ|Ò$j@XüYûš‰ÿø§¢å¼‹Ÿ|W´|ñ’Þï áyXˆÞéB´Â1[ˆK›ÄonÏÜ Ü$}m§Q1¹¯‚Œ_…W4ë¾s± E…Séè€ÖÖøÝn£•<躠fT5VkŽ®#<ø`=o­kCøÀµ|ÝŽC+d·3¯~vÍD™E+ ßWÎ(w95ÿã jzË)7Ò‘¸J¦¿P¬5¢RˆB…–’Q©d ªR—ŒÏ)Îör…=¹À5ÿàý 32(*žÏá#Ë))BJJ Ng2ii)deÙ7n»voæÙïý€Õë³uw³¦{ hdðo¡lZmòê“;^+|¨&.é:H„tˆÉšÇÑ=Oìt¼²ÆÏi pÍ;±6Z²é’²˜ÁÕÓ¥’A•¢‚ÁREšiPlë%°œzˆ…‚Ìþ!úÛê9¤„Ó-ïR2¸ŸY³¢¨¨ââ\**Šèï÷ðë_ÿšW_ý ;›"¬Xþþý[IM–AU@H ò tÿë2L?ä§€ t t’óát1ÿ4÷Í•¯÷j/N!„*s•ÎÆmo˜¹ì?ÌÞù¸iY°JZÚh ¶«üœÛðù[ð9tâž“Ÿ>³g쇋ÊÊœ8éæðá/C‰Â}8^òò²ÈÎÎ¥µõuÓ3ȼ› ÁªÒ@,9¤ÕÜïÃV„Ï.÷€Ýž„½à섬$̥Ȭ×íÍTƈJHzD#š:ŒH ŽˆoáÐdÂáZ|ÉôöϦ«ã>Jò+¨©¾ÈÙîЬԌúÛwìãìÙãD£Úå -äqþ|3<±xg¦âîV@ dÀ ®ýئՠ¶ö M ”+Æq¸†ØÓu¿kõ­då6àiÐíèÚ@1$)†œp\OIå ðÔ·Y·1õžgyô™71ö^<~ð‡!“³g Æ”1‡½m`ÑŠTU°ž$½¼ïn—ÑFÒUý+8 _®Ü¾g çóÀ\B¿ªp ®€ Ž*ÔMRqûY.õôòGð{Bø\A¢A¿7F‚ë²=ÐäåÀ‚‡êùãædXÀsœô…3‰²âwÐh!¾ ˆ/ïŠ,×·îÂ$W"„ÒÕ \eD×%lI‚E³úp‡/àö UB¾(~o˜ /B0¬ŒB ¡„% &޵“}ÛÖïȳLp ”k¤¥ŽÁsÐf„lÄ ˆý:ÛŽ½÷n»äÙBèækû®k¥HT¡¦2Ê”qmt:z. D %®Ao„€7ð' `’`BÍÖ7Àã0 è2x÷qßLBû"èštÓ„¡msë§4vcIñ£ÐV#Æ+i\ è2󦺉Ë-8\^Bþh$F¢ø„Ap¼ÁÖm.~ñÆI–5\äTOñ(€40ÌÎS¤L+EŠVàj‚l 1Òúòï8VnˆÈj9É–5X”6„0'¬`èºÁVã…9“GµÓÙßN Ä.·RÈCMÜwµúøhõiÖín!µXgt]Je-Ѱt¥$5œ"­|Î]Ϋ†™àlØ´i‡s“ÓH57`·6!K*ºnýº_$BfÞÙY§èêsL@D‚*"åèþó,ßz’nÌžWÎ’¹•üÃìtF͸‡Õ'j@RA)89yêÞ8!ŸÒ±!Ô•®è±í—À2‰6ËarR6“j½ˆ@B×- +qe¨µ¸„Ý&¨¿³w `0†Si§±n€SдvËæÏ9j‡äRÚµ§D$Ð$!Qš‰áÅmXMq„.£ª è2£‡…¸»bÑ‹G¹â—\Apž($)°`zͱi¨Þ$Û s˜m˜RSqtÅ .鿀ØîàûÁ•ŸCÒDêµçÝX2ºšLvš—±åmŒ,ë"35BTU63q¸ƒüا„:{ð{Á4 BàŽ€L({ÉÎGfáïCçÖLÎü¢‰c›ß%F±q˜7 ö榷¶á©“ „ýÚ’"“d‰‘Ÿée\E'C‹ÈD±ØêÆœ@éÛM 7†Ë?àL¸? ç: Ÿãtó!6ü~á lG©:ÍÈgSQ™š¸î0gâÇ[[ß¿{ŸòyæèklÆöF[é ›RÎÀœ‘˰¬ òÒÒiúÂG.!†ø×qôL¶¼ZúíàÀ¦­œÜÞ@Arˆ9c˹"†Þ€˜4b:¨:$+ÈÆˆß ®³®ýƒ†¥¥õw[Pv€&ÙÖ íM‡X6DÒˆô&qÚ‰¸4ÝD{N/\h…éLÁò#:ÏUb2eÒº}zË&¾óHKžZÈ—N“Ò¹ÌI /ýé™pÒƒ'¦Åq³tñ•kÖmYºjÒê~Ñ08­x›ûðœè§»­Oï=@;BŽÇ1§˜±¦Ù°ç¦‘”“š¸O£ü%R/nbù —|àÐyRöi{j“&OàhãAÊv·ÅõTB€@B µªïm=ÙºVÕ?"€vS€öÓXìïv>úÊÙñU#§úb1ùDgGÏ…¯«á_‡ˆ4º ¸ö*'|Áéä삱 †Õ‰i’ €íMÍÝþiïïQ¤$ª=@7à¢×ý/$I_!3 äiF=*1®q@7 I’“‹Šj§ääÔŽ?fTQQAöûï¯h8wnûz rEˆ` &ºY#5,†%@Ã(ܰ0|£Ÿ•diƽÆ“s­ÄÕH‰›WÜpˆÿ»âF+ø‹‘0@ÔHUç+d$ð׫ÿPYÎÅ:­IEND®B`‚PyQt5_gpl-5.10.1/examples/graphicsview/padnavigator/images/kopeteavailable.png0000644000076500000240000000451413245231431027576 0ustar philstaff00000000000000‰PNG  IHDR0/¥‚IÉ IDATx^Õš[l冟fgÏÞL6^'>€ó„,  ªJd«ªR *¸BBªz“Zbn®z™F*ô¦R¹k% DêU(¡*U‘*PKOlHÝ’Äàĉc;Nöd¯wggþ¯#ïJÓÕâ ðAâ“^}³²Vú¿ßìþ¯f•ˆðU®·)¥_¤Þ}ŠA-ô d5 €†aFÎ~ûÆù%"Ÿ°\ýã)rÇ­d4—Ú”"žNH'•Ÿ*æÊUf.ßâ͹gN|çβ¼Z>À{G°NY‰h®gÿd¶u!é=臘fÜ"ve J“ì)ï`òâLîâð•ÜŸ¬>/pâá)°ŒR"ò¥Vèý#dÎtïë·{î݉ô>Ý£B€Û\©I  ¯ÃÄ[¸“aFÿù cSÃßüÞm Ddå>8€øíŽûwØîÞ{~‚ŠÞ¸ˆ\òõ1È(È5”L‚\GÉ4¨}À7 ø6\p˜¸pƒ‘w/,B<âC|ƒ/W§ú¾¶ÕNßµµïYTt"£xú5´þ+øHd®á€Tô[àü "s°y”ž­ëéßÙx™¥keF†øiªÇÎÚ[Ò¨»~!ÑF¼×P2æë*ÈÈM Œ¢ ¡5hîG`Ö1ú>eW¶—”<}˜ÁUøp8šÙÛƒ±õ.Tlè·ïUX|b±+™ô5³2P1ÚQ¨°ƒZ‹û{~¹ŸBƒ‰Mvh‡Ùó0ÈuÄ{@0@<  ̃”Q”@æA x&è&DSæº9ìt†hÜ8u¸žýþK ¯&Àx&Ñix¯ d! X€Ñ€ƒb¨€øÒ<#¤±ºïHñÉÇ7au²V2„ißRï  ˆÂQ€q§Ñ5ÍÁÍÀ…²\Ö¥#XÕR5ã¾ô,¸¾ UQ% ˆžm8\7í­Í7±ö\Ä«C} Ü( Pˆj¨9 /‚¡Û¥LÐÚ]#í‚€ç@ÝÆW€ÐÄX"p·¢Ñká€ÀÙÚ­j®^˜ÃJ‡›HS%í.4{+@Ì­Ö©;@aµvæœ\múñ,xQÀiw€¦Z´Ð~ÍB¡F1_CÁÛ« ðzuÆ9V™¾Eªx3ÔÞePE¦éD Í QÔæêÔ«ùÙ:ÀéU¸ûWœÒãNÑÈŸÎì^p¯µÞÀ´¹Ð !*è@áJ‘Ùé:NUNú_bã«í‡æ¯ÔϘ‰Iæ&Ö‘ìêwжEp/´¿R R¬quÜ8±&&ë»ðÁ997î}vï&¹!RH› @P”¦Ê”®—˜ø´Ë3ƒ/1¾f‰ìž_sèÜÉVh`VFqz3ؽ Ó (B[iO3;v“ùé 7fB”òîY? <¿6Çé ÐdÍph ÿžýdv=ÈÜy®ž›¤0Q™¯ƒ´ïTn]Î3ñÞ5æ&*Ø¡¶mÙŽeÿ$Ù5ËÄÃCØ"œÙþ­ýÄúº‘}Ï}`üߎ“ÿðò— ˜ƒpÌ6$7An¡$¢Ršq20Íd†°@W•­›X!ãø«‡±WÚcöæM˜1 ÷1"èwPúO€„4à‚ÔƒD&곎Ðí ›4Ö¸âÎÎ(—¦* +ptÃÎ^°ÃÚÁýPjš,Jtp nÇ CAFØ^Œrqªr4Xæ >ÍÁT_§m%¢Ðwtêo´í‚8 i Á{6ZôÌV—íÀŸf0ÖecZ!Höƒ7õ÷Ákýï·žBUk˜ î…%R™jU&Œ…&3øÝz8½Ä}Buˆ¦ëS¿Ñ`‰,¼„ Á:µÄLˆ@& Ó X.@6Þµ"_^œ)ðÚ×§"iY¡`ðÖ¿ A%CtE€ì²VHAnÑ+ Þíä)Ú¦M­´6S[©U«6ÝÖ­aM»•%`.;mR'6qÁv‚s3Ìgïü*}uΉ{ƒ>Ò£×ï“ã“ÿÿ¹½kÜii{éÀ t`•PFÏ>ù>wH´;x-°Oª½Ì]šQƒè Ñ¡kH¡{^¡‰/€¾ 8 ì+_íaS›òJkê½ CÕ2p.]§tÆGcýƒ„‚’S   èD†î|p8¼i«öÝÍlßࢡ Ö,ƒueä”Ó’ˆ? çF`$4Fß¾–@’8zw¨üîªöU´îÝßÎîM.öA™b3põ¦Tt2§Ôõ+€ñiøhŽ À•‹aNëCDÄDÎß9 |ïÖûÝ>ñöo„ÌÜ‚†áLTÐçëHEŽÈ9i]FJáÁzXYÓ)xõ"ü#˜âäßûøìâ`Ø—O±kªÿ«Ols?ü`?hg|2¯]‘$tpE"›*2-^x|‹$"RŠçÏÀÇ8ÕÓ’Ä[w‚À{Í÷ù:lçP«,ξQx=hH•ƒ´š§ÕükàëM0œ€_~§‰Ó=}  #W:-ɧÛ;‹Ž|ç‡ñdË*Jàì¼Ñš&¡™a~DýÍ,Z¯õ߀àuØU÷VA(]N<6åˆ]‹ocõ#¯}cî" ¾Üµ}ÏæºýUl_Ñ$¼xYÔLàQ6‹*A=kêPŸŒÁîuPë†aÍËÕÁhåÌÔ¬Cx·0*÷;Ÿ8´‹§š—dRçõ~˜˜SžWžVÀÁŒ^[L&ç`0l†9} “Ž•Ï}öß(ô CùPÞ?ÐØR½wïÑ)8¶z3 -›÷ó#1>%ÇG·À¹q'Ó·@¬u‚À1ÉRrKGÝz/õ+ 4 6}¼l—hÒ¶ Ø€´"¡l’,èF'ü9í5ðýûàj¬‰Ë:R¢Í­ÕFni]]ãÁ)iRYŠô®M޶ŒÊ¹ÍjÇf“ªiÊ®F³Z£ø—4­‚õ^;µjšB÷¶û¨¯r1ûo¨,‘¢SÖ(µÅÓF'‡è0L¸Ø¼"%æÙI`²…'J‰€òþ ¢û´Þ/Ø4p–ØQ—ÏE2^¿yKu ©ff¯ÊE";¶™d–&`µE&)s–bÿ]‘:žúñNJJí;n¢z­4XSë™'„®Ö¬ÍGÚ5õ, ëd:šmz ÍávµÈwMn1)“ذ‚ï:ô“=”•»@y’u½lmñ²£ÖÎÏ"Åkö¤œ[[ªfµY£ (¡×J@í{ºžüÑ.ªjÊ ;Ê '<îƒv/|ž„+“9ÒÀ¼½ÀHÂ]¬ìð96úÑ¡±œØW¿¡_£×ð7{`¿N]ƒc#pó¶©ódjÞã€P4™ßáDƒé[òš»àÏF 4+žD`»öÖÀŸ†áêtöTl$¬n¯‚ÐH½Ä•mµ6ÚȤfSÄÆâ9ˆ£[4÷¿ýêæe•SŽ‘)<ñ–( •%’À+=Ö®ót,ì¿0(Á‹«—\m´ãÃãAâãItà°ì ËQ÷;JA_üÁÍph <½ ž¹GzÿÄH{"äNàÒé@gî.$oÈpÈ6Éœß; Ë€…ε‰jŒMÃ[gb™»n9øƒ1žùÕEÛ|&äêû ÙŽQæºEೞÌç_ÑF3+æ<ˆK1h+7S½ß@D‚0ýíãiÏþ"ÀÌtŠb‡–½[±Û‰ßH²Üí2‚Å*Áó\:Lr€Ž¶í>B€pìÌ¥¥IT#Y"Rì´³íÁ&¹´CŸŽÑ|ŸKÆüyyâ>Ì]¹j ûÄñ`â_=tTÊ|:kJ‘ Ò¦Q©ªrΟÀ©¼oøÎ¼íºÿVW¢uPwC‹G÷ÊR÷ÆÖjCN'aG¥$¢™òUݾYUWóÙéÇÞìãéŸîã¶.ÓÓ3×£1º_àgx•÷y¨ù»Ìe)ªÙÛ2üºf°ç$)"¢xñ·=¸Ü.Šö "SæfR¼ù||—Ÿ?ÞÑH<4މs@™gbNÂÌAȦüoz»§ã±mÛm À¥7þðøï‘Ur·ÑP||*@庌@Z·¨ªƒtvð a~}¤;¾í¡f6ÜÛ@Z3·U¤8õÞQ¸q¿áð^`Ü¢sPÆ;ФiŸcéDÖÅîsÑizß¾ÀÐg×ðÖUðÀ·ÛY^æÊ·Œ‚E:LÄ“œ:~q¾ãLü?¢ÐTºhŒ¦©T1еPçÃ|ô^€¡O¯QßâcÏÓ-¬®÷b³‹;­««ÿ‰@—µ]N ëo¯÷uˆ(P¿Þk¹°2Ö°úÄðŸà#,u•Rßì£í›»ïÁ¦¡R%¶ …Ë€n -Ë‘ò[@犲Ò:AÑZ©ceµ sFNĦO¨,³(•®ôP³ÅÇš 5Ø%hl급¦æJÕEÏþìe€ºB'ÓòøU¦hUjOuë·5³ªÖ‹©-ÐJÈD湟¿Œ¯Q ,%—È|ˆBEE¦sØD7­ Jõ,v´WÖ©[·»K@IçøçÄQ//€éEìk7Öør¨têGƬ 5MÕ2âväîPâ¿9žX žWJÝ.Ê*=û¾L‰Ûs©<ÒGÏ+ ^Yw¯ Y¥w40HrG|]âe8ÀËW¹cÜ èñ8€Ë×b5ÊØŒgéãô±¨Ë5hF2®âýÎ1èlsárâ÷1­ÄGq%óP÷¡¾ÀUhWÝqÓíøOìByüïˆ_¾M­‡OÏt ãB ~\aò÷ÁD$hÃjZÿøP‹…WÏ2MãBÀ°;â®ÿìÀ@aLjPæ‹‹Å>þúÃnBÙ$ëħ-𞊜‹UM–êø¸ª²ÄlEô£‚3Öâ›hG€ <΂5FKÓÍo±,Þ`Hm’hJGýGF+6«^ïÊk [ï}1FàŸÂ×u¹Q݈Ôlu”0€*c©«¨a ¦£„k¿È¤UÄyhEPE°QØ÷%éßý‹X ô·“$Ô#i F’,™„ ä2Ôë”Ùkš›Öù˜¾¢bŠ€éÁ™“É·3m>‹1Šˆcfã.´9<ý„‡q!² @ñ^²yÞ~™-ÿ«64`àg{%ú·+df6‘{ÁÇxåÏÃï,Xd«!â’v梊:ò€Íx‡ñ<òx #(a'ÚqxR a&Z1sÅBœ€Dp:ªèVýÖ¶ÿ˜ÎŸÃ-OôX-c„Üu©3V~Òë†4ÅÙøÔ.å%’F½x{Q=T\9WÛã˽cH§Vâ—_Ã…Ä ²Ç°ðø›ÂÓ<Õ!{–÷¨PÎëóß¾0Z׃nìA„à ÄïxYÅ"ÃÄ{îÃíÔZhI¤˜¥§Y˜°·ÇÖŠZZØYõêyë}%tcâ‘÷ÂW¿m½vç…Ûn¿{Éc”sÄИã’Dö4SÎ m‘=ût/ÑÞÆ®ª7ÆŠF7ú~ëEþÆ¢×o¶òœ)î 7­o=‘3 Ô££&A%þr„v¬ÛaÓ=L›ÊC{Üÿ•7­Á º1àŽx„ ûKVÌê´Ê.âõ˜W ‰G+Pg{M„Ö„Ÿî·å>¦wòÐ{¸m£b¶cø¨¯§~Ï·ž»ÚæKN³&°|ò‡žxðbçÝ8ÛÿÔ#³$R‰ŽŠ¹2¡É›«é˜Ê¯¸ù…^›°k,%h˜|~Ÿß8ÌÉ(G*ŽŽ€´F5Õ1‹I)/ôzý؆.¿©ËnœŒ’£€ ú«Z§qp+×L7çÑÝžB ÇD@Ѳt”Ì ~€÷òq”‰§Ð÷Ÿšâ£¿xŽ@ô‡jè@ µÃ_CŠfÔßG¢Ž:©rRÞlCõؼ‘¥–¤tb£c)£Š"¶`+¶¡„eŒ&T*LmršÆÒøÄUØ©³0XDYôcrh"ô£';¢€ †éšAဠS²¦îOí‡Æw`Мr™8EŒ¢ŒÞÅDBJØÀΧØö$~LØ„"jƺ²¢k:ýeþlšßCöØËê)¡ÔQÅf r„=ì_Çà&·ÓÕAÏn¶­!üaç!Wÿ ™6Fª\ÐîBä4^ jI½†VT0Œ7Q% RÞ@ÿ&¦LdkÑK-k]:éIÝ]óbW ï¾Jß³„Ÿú¢Š€6ªU¦åœr¨[’m&°oj„·é‹LJHôžó×-|Þx/eÓü|ús¿´¨×—–yë%Š?"¼EèG9&ä91ëtcƒÜÐ|ñ«B}¹oëw‹ñ1.‡>+––ŠåeâªyîÁE8'£™ë¯öLì>_Üx®—Šñn1þ­¸ó"±{¾¸¸ÕeholF\4’¢BØÇÈ. ­Àú>ÏMú7ŸùÚ¯<Ýx;P@ £×¾æ»S^Ôº7µ¦¥™×¶°ñ ô0£“5>Þn²]dÁgC´Lñ ízè^òŒ»5 CØ‹þ#,¡o°ìŠ)î¹ó?hÉ:mÃO™ÜN-²p¢%ø>2¨5æÝjKñ:1Þ(V¯Sú‹ÙVâ",ÄIhöÛ“ ÿS]»ù\•_™+þbŽœŠ ›b¼E\w±àcø}œ†6Œ& images/blue_angle_swirl.jpg images/artsfftscope.png images/kontact_contacts.png images/kontact_journal.png images/kontact_mail.png images/kontact_notes.png images/kopeteavailable.png images/metacontact_online.png images/minitools.png images/blue_angle_swirl.jpg PyQt5_gpl-5.10.1/examples/graphicsview/padnavigator/padnavigator_rc.py0000644000076500000240000057626513245231431026231 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 5 07:34:29 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x09\xf1\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ \x00\x00\x09\xb8\x49\x44\x41\x54\x78\x5e\xbd\x99\x6b\x6c\x53\xe7\ \x19\xc7\x7f\xc7\x10\xc7\x4e\x0c\xd8\x21\xc4\x21\x24\x21\x71\x80\ \x84\x4b\xd2\x34\xac\x12\x81\x16\xd2\x82\x2a\xb4\x2b\xeb\x85\xee\ \x43\xdb\xb1\x09\xb6\x6a\xfb\xc2\x97\x49\xd3\xf6\x05\x3e\xed\xc3\ \xa4\x29\xda\xa6\x4d\xad\xb4\x36\x53\x5b\xa9\x55\xab\x36\xdd\xd6\ \xad\x1d\x61\x4d\xbb\x95\x02\x25\x60\x2e\x05\x3b\x6d\x52\x27\x36\ \x71\x02\xc1\x76\x82\x73\x33\xcc\x67\xef\xfc\x2a\x7d\x75\xce\x89\ \x1d\x7b\x83\x3e\xd2\xa3\xd7\xef\x93\xe3\x93\xff\xff\xb9\xbd\x17\ \x6b\xdc\x69\x69\x7b\xe9\x1e\xc0\x0d\x74\x60\x95\x50\x46\xcf\x3e\ \xf9\x3e\x77\x48\xb4\x3b\x00\x78\x2d\xb0\x4f\xaa\x04\xbd\xcc\x5d\ \x9a\x51\x83\xe8\xa0\x03\xd1\xa1\x6b\x48\xa1\x7b\x5e\x05\xa1\x89\ \x2f\x8f\x80\x02\xbe\x0b\x38\x0c\xec\x2b\x5f\xed\x61\x53\x9b\x8f\ \xf2\x4a\x0f\x6b\xea\xbd\xa0\x43\xd5\x32\x70\x2e\x05\x5d\x81\xa7\ \x7f\x1c\x74\x1d\xc6\x47\x63\x04\xfd\x83\x84\x82\x11\x92\x13\x53\ \x09\xa0\x0b\xe8\x14\x44\x86\xee\x1e\x01\x05\x7c\x05\x70\x04\x38\ \xbc\x69\xab\x8f\xf6\xdd\xcd\x6c\xdf\xe0\xa2\xa1\x0c\xd6\x2c\x83\ \x75\x65\xe4\x94\x1b\xd3\x92\x88\x3f\x0a\xe7\x46\x60\x24\x34\x46\ \xdf\x07\x17\x18\x1d\xbe\x96\x40\x92\x38\x7a\x77\x08\xa8\xfc\xee\ \xaa\xf6\x55\xb4\xee\xdd\xdf\xce\xee\x4d\x2e\x1e\xf6\x41\x99\x13\ \x00\x62\x33\x70\xf5\xa6\x54\x74\x00\x15\x81\x32\xa7\xd4\xf5\x2b\ \x15\x80\xf1\x69\xf8\x68\x08\x8e\x0d\xc0\x95\x8b\x61\x4e\x1e\xeb\ \x43\x44\xc4\x0f\x1c\x10\x44\xce\xdf\x39\x02\x0a\x7c\xef\xd6\xfb\ \x1b\xdd\x8f\x3e\xf1\x15\xf6\x6f\x84\x06\x0f\xcc\xdc\x82\x7f\x86\ \xe1\x4c\x54\x12\xd0\xe7\x81\xeb\x48\x45\x8e\xc8\x39\x69\x5d\x46\ \x4a\x10\xe1\xc1\x7a\x58\x59\x02\xd3\x29\x78\xf5\x22\xfc\x23\x98\ \xe2\xe4\xdf\xfb\xf8\xec\xe2\x60\x02\xd8\x97\x4f\xb1\x6b\x05\x14\ \xaa\xff\xab\x4f\x6c\x73\x3f\xfc\x60\x03\x3f\x68\x05\x67\x11\x7c\ \x32\x0e\xaf\x5d\x91\x24\x74\x14\x70\x45\x22\x9b\x2a\x32\x2d\x5e\ \x78\x7c\x8b\x24\x22\x52\x8a\xe7\xcf\xc0\xc7\x1f\x06\x38\xd5\xd3\ \x07\x92\xc4\x5b\x77\x82\xc0\x7b\xcd\xf7\xf9\x3a\x0e\x1e\x6c\xe7\ \x50\xab\x2c\xce\xbe\x51\x78\x3d\x68\x48\x95\x05\x81\x83\x05\xb4\ \x9a\xa7\xd5\xfc\x6b\x1b\xe0\xeb\x4d\x30\x9c\x80\x5f\x7e\x00\xa7\ \x05\x89\xd3\x3d\x7d\x09\xa0\x23\x57\x3a\x2d\xc9\xa7\xdb\x14\x3b\ \x8b\x8e\x7c\xe7\x87\x0f\xf1\x64\xcb\x12\x2a\x4a\xe0\xec\x18\xbc\ \xd1\x0f\x9a\x26\x15\xa1\x99\x61\x7e\x44\xfd\xcd\x2c\x5a\x16\xaf\ \xf5\xdf\x80\xe0\x75\xd8\x55\x0f\xf7\x56\x41\x28\x5d\x4e\x3c\x36\ \xe5\x88\x5d\x8b\x6f\x63\xf5\x23\xaf\x10\x7d\x63\xee\x7f\x22\x20\ \xbe\xdc\xb5\x7d\xcf\xe6\xba\xfd\x1d\x55\x6c\x5f\x03\xd1\x24\xbc\ \x78\x59\x01\xd4\x4c\xe0\x51\x36\x8b\x2a\x41\x3d\x6b\xea\x50\x9f\ \x8c\xc1\xee\x75\x50\xeb\x86\x61\xcd\xcb\xd5\xc1\x68\xe5\xcc\xd4\ \xac\x43\x10\x78\xb7\x30\x02\x2a\xf7\x3b\x9f\x38\xb4\x8b\xa7\x9a\ \x97\x64\x52\xe7\xf5\x7e\x98\x98\x53\x9e\x57\x9e\x56\xc0\xc1\x8c\ \x5e\x11\x5b\x4c\x26\xe7\x60\x30\x06\x8f\x6c\x86\x39\x7d\x09\x93\ \x8e\x95\x04\xcf\x7d\xf6\xdf\x28\xf4\x0a\x12\x43\xf9\x11\x50\xde\ \x3f\xd0\xd8\x52\xbd\x77\xef\xee\x06\x1e\xa8\x86\xd1\x29\x38\x1e\ \xb6\x7a\x1f\x33\x09\x2d\x9b\xf7\xf3\x23\x31\x3e\x25\xc7\x47\xb7\ \xc0\xb9\x71\x27\xd3\xb7\x40\xac\x13\x75\x82\xc0\x1f\x31\xc9\x52\ \x72\x4b\x47\xdd\x7a\x2f\xf5\x2b\x00\x20\x34\x09\x36\x05\x00\x7d\ \x1e\xbc\x6c\x97\x68\xd2\xb6\xa0\xd8\x80\xb4\x22\xa1\x6c\x92\x2c\ \xe8\x46\x27\xfc\x39\x00\xed\x35\xf0\xfd\xfb\xe0\x6a\xac\x89\xcb\ \x1f\x07\x3a\x52\xa2\x1e\xcd\xad\xd5\x46\x6e\x69\x5d\x5d\xe3\xc1\ \x29\x69\x52\x59\x8a\xf4\xae\x4d\x8e\xb6\x8c\xca\xb9\xcd\x6a\xc7\ \x66\x93\xaa\x69\xca\xae\x46\xb3\x5a\xa3\xf8\x97\x00\x34\xad\x82\ \xf5\x5e\x3b\xb5\x1b\x6a\x00\x0e\x17\x9a\x42\x9d\xf7\xb6\xfb\xa8\ \xaf\x72\x31\xfb\x6f\xa8\x2c\x91\x00\xa2\x53\xd6\xee\x83\xb9\x28\ \xb5\xc5\xd3\x46\x27\x87\xe8\x30\x3c\x21\xa3\x50\xb4\x04\x82\x09\ \x3b\x62\x81\x6b\x12\x69\x74\xb4\x90\x08\xf8\x35\x0d\x2e\xde\x80\ \xb7\x43\xf0\xfc\x65\x49\xa2\xd1\xa3\x3c\x29\x3d\x2c\xc7\x6c\x9e\ \x7d\xa8\x16\x0e\xb6\xc0\x63\x8d\x50\xe6\xc8\xd1\xbd\xb0\x36\x84\ \xe3\x03\xb2\xad\xae\x5e\xeb\x55\x9b\xc8\x02\x08\xb8\x05\x28\xe6\ \x66\x53\xbc\xf4\xfb\xf7\x39\x77\x36\xcc\x5f\x87\xc1\xed\x50\xe9\ \xb4\x58\x4a\xb4\x97\xa7\x78\xf7\xdd\x00\x47\x9f\xbb\x40\xff\xa5\ \xb0\x5c\x08\x8b\xb2\x3d\x6f\x25\xe1\x8f\x42\x79\x29\x94\x14\x41\ \x65\x6d\x05\x40\xeb\x22\x04\x54\x0b\x75\x38\x8b\xea\xaa\x6a\x3c\ \x9c\xfb\x68\x90\x2b\xfe\x08\x2f\xfd\xee\x03\xce\x9e\x18\xa0\xef\ \x3a\xb8\x8b\x25\x09\x95\xfb\x56\x20\x9e\x62\x08\xc4\xc1\xb1\xb9\ \x89\xda\x1d\x2d\xf4\xe9\x5e\x02\xe1\x24\x3b\xaa\x17\xf6\x36\x56\ \x12\xdc\x98\x91\x5d\xa9\xd6\x0d\xae\x15\x2e\x00\x77\xbe\x11\xe8\ \xde\xb1\xa7\x09\x67\xa9\x9d\xd9\x99\x14\xf3\xf2\xda\x0b\x27\x19\ \x8d\xc4\x18\x98\x84\x54\x5a\x82\xc8\xa6\x13\x29\x98\xd4\xed\x20\ \xe7\x38\x9c\x76\x3e\x4c\xb8\xd8\xbc\x22\x25\xe6\xd9\x49\x60\xb2\ \x85\x27\x00\x10\x04\x4a\x17\x89\x80\xf2\xfe\x0b\xa2\xfb\xb4\xde\ \x2f\x08\xd8\x34\x70\x96\xd8\x51\x02\x97\xcf\x45\x32\x5e\xbf\x79\ \x4b\x75\x20\xa9\x66\x12\x66\xaf\xca\x45\x90\x22\x3b\xb6\x99\x64\ \x96\x26\x60\xb5\x45\x26\x15\x29\x73\x04\x96\x62\x05\xff\x5d\x91\ \x3a\x07\x9e\xfa\xf1\x4e\x4a\x4a\xed\x19\x10\x3b\x1f\x6e\xa2\x7a\ \xad\x07\x34\x58\x53\xeb\x99\x27\x84\xae\xd6\x00\xac\xcd\x47\xda\ \x35\x1d\xf5\x2c\xa0\xeb\x64\x3a\x9a\x6d\x7a\x0a\xcd\xe1\x12\x76\ \xb5\x06\xc8\x77\x19\x17\x14\x4d\x6e\x31\x14\x29\x93\xd8\xb0\x82\ \xef\x3a\xf4\x93\x3d\x94\x95\xbb\x40\x79\x92\x75\x1b\xbd\x6c\x6d\ \xf1\xb2\xa3\xd6\xce\x16\xcf\x22\xc5\x6b\xf6\xa4\x9c\x5b\x5b\xaa\ \x66\xb5\x59\xa3\x20\x09\x28\xa1\xd7\x4a\x40\xed\x7b\xba\x9e\xfc\ \xd1\x2e\xaa\x6a\xca\x0c\x3b\xca\x0a\x27\x3c\xee\x83\x76\x2f\x7c\ \x9e\x84\x2b\x93\x39\xd2\x05\xc0\xbc\xbd\xc0\x48\xc2\x5d\xac\xec\ \x16\xf0\x39\x36\xfa\xd1\xa1\xb1\x9c\x11\xd8\x57\xbf\xa1\x02\x5f\ \xa3\xd7\xf0\x0f\x37\x7b\x60\xbf\x0f\x4e\x5d\x83\x63\x23\x70\xf3\ \xb6\xa9\xf3\x64\x01\x6a\x15\x05\xde\xe3\x80\x50\x34\x99\xdf\xe1\ \x44\x83\xe9\x5b\xf2\x1c\x9d\x9a\xbb\x05\xe0\xcf\x46\x20\x34\x2b\ \x9e\x44\x81\x60\xbb\x17\xf6\xd6\xc0\x9f\x86\xe1\xea\x74\xf6\x54\ \x81\x6c\x24\xac\x1e\x6e\xaf\x82\xd0\x48\x12\xbd\xc4\x95\x6d\xb5\ \x36\xda\x81\xc8\x04\xa4\x66\x53\xc4\xc6\xe2\x39\x08\x88\xa3\x5b\ \x34\x12\xf7\xbf\xfd\xea\x19\xe6\x65\x95\x53\x8e\x91\x29\x03\x06\ \x05\x3c\x0f\xf1\x96\x28\x20\x95\x25\x92\xc0\x2b\x3d\x11\xd6\xae\ \xf3\x16\x74\x2c\xec\xbf\x30\x28\xc1\x8b\xab\x97\x5c\x6d\xb4\xe3\ \xc3\xe3\x41\xe2\xe3\x49\x74\xe0\x9d\xb0\xec\x18\x0d\xcb\x51\xf7\ \x3b\x4a\x41\x5f\x1c\xfc\xc1\xcd\x70\x68\x0b\x3c\xbd\x09\x9e\xb9\ \x47\x7a\xff\xc4\x48\x01\x7b\x22\xe4\x4e\xe0\xd2\xe9\x00\x40\x67\ \xee\x2e\x24\x6f\xc8\x70\xc8\x36\xc9\x9c\x00\xdf\x3b\x02\x0d\xcb\ \x80\x85\xce\xb5\x18\x89\x01\x6a\x0e\x8c\x4d\xc3\x5b\x67\x62\x99\ \x15\xbb\x6e\x39\xf8\x83\x31\x9e\xf9\xd5\x45\x1a\xdb\x7c\x26\xe4\ \xea\xfb\x0b\xd9\xc5\xbd\x51\xe6\xba\x45\xe0\xb3\x9e\x07\xcc\xe7\ \x5f\xd1\x46\x33\x2b\xe6\x3c\x88\x4b\x31\x68\x2b\x37\x02\x53\xbd\ \xdf\x40\x44\x82\x30\xfd\xed\xe3\x69\x17\xcf\xfe\x22\xc0\xcc\x74\ \x8a\x62\x87\x9d\x96\xbd\x5b\xb1\x17\xdb\x89\xdf\x48\xb2\xdc\xed\ \x32\x82\xc5\x2a\xc1\xf3\x03\x5c\x3a\x15\x4c\x00\x07\x00\x72\x13\ \x80\x8e\xb6\xed\x3e\x05\x42\x03\x80\x70\x12\xec\x1a\xcc\xa5\xa5\ \x49\x01\x54\x23\x59\x22\x52\xec\xb4\xb3\xed\xc1\x26\x15\xb9\xb4\ \x1c\x43\x9f\x8e\xd1\x7c\x9f\x4b\x81\xc6\xfc\x0e\x79\x05\x79\xe2\ \x9d\x3e\xcc\x17\x5d\xb9\x6a\xa0\xfb\xc4\xf1\x60\xe2\x5f\x3d\x01\ \x74\x54\xca\x7c\x3a\x01\x6b\x4a\x91\x20\xd2\xa6\x51\xa9\xaa\x0f\ \x72\x10\x03\xce\x9f\x1e\xc0\xa9\xbc\x6f\xf8\xce\xbc\xed\xba\x00\ \xff\x56\x57\x0f\xa2\x75\x1e\x50\x77\x43\x8b\x47\x00\xf7\xca\x52\ \xf7\xc6\xd6\x6a\x43\x4e\x0e\x27\x61\x47\xa5\x24\xa2\x99\xf2\x55\ \xdd\xbe\x59\x55\x01\x57\xf3\xd9\xe9\x14\xc7\xde\xec\xe3\xe9\x9f\ \xee\xe3\xb6\x2e\xd3\x11\xd3\x33\xd7\xa3\x31\xba\x5f\x10\xe0\x67\ \x05\x78\x95\xf7\x79\x11\xa8\x13\xf9\x8f\xbb\xcc\x65\x29\xaa\xd9\ \xdb\x32\xfc\xba\x66\xb0\xe7\x24\x81\x29\x22\xa2\x0e\x78\xf1\xb7\ \x3d\xb8\xdc\x2e\x8a\x1c\xf6\x0c\x81\x22\x53\x04\xe6\x66\x52\xbc\ \xf9\x7c\x06\x7c\x97\x02\x9f\x3f\x81\xde\xd1\x48\x3c\x34\x12\x8e\ \x89\x73\x40\x99\x01\x67\x62\x4e\x81\xc2\xcc\x41\x11\xc8\xa6\x12\ \xfc\x6f\x7a\x18\xbb\x1a\xa7\xe3\xb1\x6d\x19\xdb\x6d\x09\xc0\x10\ \xa5\x37\xfe\xf0\x05\xf8\xef\x91\x55\x72\xb7\xd1\x50\x7c\x7c\x2a\ \x03\x40\xe5\xba\x8c\x40\x5a\xb7\xa8\xaa\x83\x74\x76\xf0\x81\x0b\ \x61\x7e\x7d\xa4\x3b\x03\xbe\xed\xa1\x66\x36\xdc\xdb\x40\x5a\x16\ \x33\xb7\x55\xa4\x38\xf5\xde\x05\x51\xb8\x71\xbf\xe1\xf0\x5e\x60\ \x04\x00\xdc\xa2\x73\x08\x50\xc6\x3b\x9d\xd0\xa4\x69\x9f\x63\xe9\ \x44\xd6\xc5\xee\x73\xd1\x69\x7a\xdf\xbe\xc0\xd0\x67\xd7\xf0\xd6\ \x55\xf0\xc0\xb7\xdb\x59\x5e\xe6\xca\x00\xb7\x81\x8c\x82\x06\x45\ \x3a\x4c\xc4\x93\x9c\x3a\x7e\x71\xbe\xe3\x4c\xfc\x3f\x04\x12\xa2\ \xd0\x54\xba\x68\x12\x8c\xa6\xa9\x54\x31\x8a\xb5\x50\x03\xe7\xc3\ \x7c\xf4\x5e\x80\xa1\x4f\xaf\x51\xdf\xe2\x63\xcf\xd3\x2d\xac\xae\ \xf7\x62\xb3\x19\x8b\x3b\xad\xab\xab\x11\xff\x89\x00\x40\x97\xb5\ \x5d\x16\x4e\xa0\xeb\x6f\xaf\xf7\x75\x88\x28\x50\xbf\xde\x6b\xb9\ \xb0\x32\xd6\xb0\xfa\x10\x8d\xc4\xf0\x9f\x1c\x14\xe0\x23\x2c\x75\ \x95\x52\xdf\xec\xa3\xed\x9b\xbb\x10\xef\xc1\xa6\xa1\x52\x12\x25\ \xb6\x0c\x19\x19\x85\x81\xcb\x11\x80\x6e\x0a\x14\x2d\xcb\x91\xf2\ \x5b\x40\xe7\x8a\xb2\xd2\x3a\x41\x02\xd1\x5a\xa9\x13\x63\x65\xb5\ \x07\x20\x73\x46\x4e\xc4\xa6\x10\x05\x4f\xa8\x7f\x2c\xb3\x28\x95\ \xae\xf4\x50\xb3\xc5\xc7\x9a\x0d\x35\xd8\x25\x68\x6c\xea\xb8\x89\ \xa6\xe6\x4a\xd5\x45\x18\xcf\xfe\xec\x65\x80\xba\x42\x7f\x27\xd3\ \xf2\xf8\x55\xa6\x03\x68\x55\x6a\x14\x4f\x75\x05\xeb\xb7\x35\xb3\ \xaa\xd6\x8b\x04\xa9\x2d\x04\xd0\x4a\xc8\x44\xe6\xb9\x9f\xbf\x8c\ \x00\xaf\x51\xa0\x2c\x25\x97\xc8\x7c\x3c\x6f\xfa\x81\xef\x30\x70\ \x04\x60\x95\xaf\x9a\xd6\x6f\xec\xcc\x00\x50\x85\xa9\xa3\xa3\x91\ \x06\x90\x36\x4b\xce\x03\xd8\xd2\xa0\xdb\x90\x76\xd4\xfb\x65\x01\ \x17\x42\xa0\x10\x91\x2f\x3f\x2a\x88\x74\x03\xbd\x35\xf7\x34\xba\ \x0d\x45\xa9\x2a\x1a\x1b\x1a\xba\xae\xec\x2a\xe7\x91\x2a\x49\x9b\ \x7b\x79\x2b\xf0\x3e\x05\x88\x8d\x42\x45\x45\xa6\x73\xd8\x1f\x44\ \x37\xad\x09\x4a\xf5\x2c\x76\x16\xb4\x57\xd6\xa9\x5b\xb7\xbb\x4b\ \x40\x49\xe7\xf8\xe7\x11\xc4\x51\x2f\x2f\x80\xe9\x45\xec\x6b\x37\ \xd6\x00\x1c\xf8\x72\x08\xa8\x74\xea\x8d\x47\xc6\xac\x00\x0b\x8f\ \x02\x35\x4d\xd5\x32\x02\xe2\x76\xe4\xee\x13\x50\xe2\xbf\x39\x9e\ \x58\x04\xa0\x9e\x57\x14\x4a\xdd\x2e\xca\x2a\x3d\x00\xfb\xbe\x4c\ \x02\x89\xdb\x73\xa9\x3c\xd2\x47\xcf\x2b\x0a\x5e\x59\x07\x1d\x77\ \xaf\x0b\x59\xa5\x77\x34\x30\x48\x72\x3c\x6e\xb9\x4e\xb1\x5e\xad\ \x64\x99\xab\xcf\x88\x73\x2f\x40\x82\x02\xe4\x3f\x98\x19\x4d\xb7\ \xfe\x5c\xef\x7b\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x08\x27\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ \x00\x00\x07\xee\x49\x44\x41\x54\x78\x5e\xd5\xda\x7b\x8c\x5c\xe5\ \x79\xc7\xf1\xcf\x7b\x66\x66\x67\xd6\xeb\xdd\xf5\xe2\xf5\xc6\x36\ \xc6\x60\xca\xd5\x26\x8e\x6d\xea\x62\xdc\xba\x10\xa2\x04\xd2\x8a\ \x04\xc2\x25\xae\x4b\xc3\x2d\x38\x29\x21\x94\x92\x56\xa4\x4e\x1c\ \x51\x88\x93\xa8\x88\x36\x95\x48\x43\x0b\x58\xa0\x12\x89\x06\x63\ \x6e\x49\x90\x0b\xb4\x29\x55\x84\x1b\x27\x34\x5c\x0c\xb6\x31\x6b\ \x7c\xc1\x97\xf5\xde\xed\xd9\xd9\x99\x39\x33\x6f\x23\x65\xff\xa8\ \x2c\x0b\x2b\x66\x2c\xad\xbf\xd2\x4f\xe7\xdf\xe7\xab\xe7\x7d\xf4\ \xbc\x47\xe7\x84\x18\xa3\xe3\x99\xc4\xf1\xcd\xf1\x2f\x20\xc6\xe8\ \x58\x1d\xa3\xb8\x42\x8c\x77\x88\xc7\x65\x07\xe2\x23\xce\xd2\x82\ \x0e\xd6\x5e\xe5\x4f\x51\x38\xae\x04\xf4\x7a\x26\x8e\x62\x98\xcb\ \xcf\xf6\x8f\x68\x46\x72\x5c\x08\xc4\x07\x30\xec\x74\x27\x12\x67\ \x22\x63\xf2\x95\x67\xfa\x08\x9a\x8e\x0b\x01\x07\x3c\x19\x87\x70\ \xf5\xf5\xbf\x49\x2f\xff\xfa\x47\xfe\x1e\xf9\x71\x2f\x10\x1f\xc6\ \xb0\xcb\xd4\xd1\xb1\x9a\x8e\x87\xa8\x51\x68\x36\x7f\x56\xbb\x19\ \x68\x1a\xd7\x02\x86\xac\x8a\x07\x71\xed\x2c\x6c\xc3\xb0\xf8\xb9\ \x93\x19\xe6\xa5\x2b\xdc\x8d\xfc\xf8\x16\xa8\x5a\x61\x00\x0b\x36\ \xe0\x5e\x3c\xc0\x79\x3f\x67\x3f\x33\x26\xbb\x1c\x05\xe4\xc6\xa5\ \x40\x5c\x6d\xa9\x1e\xfc\x31\x4c\x26\x3e\x47\x7c\x16\x5d\xe2\x65\ \x38\xc0\xcb\x57\xb9\x63\xdc\x0a\xe8\xf1\x8d\x38\x80\xcb\xd7\x62\ \x35\xca\xd8\x8c\x7f\x67\xe9\xe3\xf4\xb1\xa8\xcb\x35\x68\x46\x32\ \xae\x04\xe2\xfd\xce\x31\xe8\x6c\x73\xe1\x72\xe2\xf7\x31\x11\xad\ \xc4\x47\x71\x25\xf3\x50\xf7\xa1\x7f\xbe\xc0\x55\x68\x1a\x57\x02\ \x06\xdd\x19\x07\x71\xd3\xed\xf8\x4f\xec\x42\x0e\x79\xfc\x04\xef\ \x88\x5f\xbe\x4d\xad\x87\x4f\xcf\x74\x03\x0a\x08\xe3\x42\x20\x7e\ \x0f\x07\x5c\x61\x12\xf2\xf7\x12\x1f\xc1\x44\x04\x24\x68\xc3\x6a\ \x5a\xff\x81\x13\xf8\x50\x8b\x85\x57\xcf\x32\x0f\x4d\xe3\x42\xc0\ \xb0\x3b\xe2\x10\xae\xff\x03\xec\xc0\x8f\x90\x07\x40\x61\x4c\x6a\ \x50\xe6\x8b\x8b\xc5\x3e\xfe\xfa\xc3\x6e\x42\xd9\x07\x24\xeb\x08\ \xc4\xa7\x2d\xf0\x9e\x8a\x9c\x8b\x55\x4d\x96\xea\x90\xf8\xb8\xaa\ \xb2\xc4\x6c\x45\xf4\xa3\x82\x33\xd6\xe2\x9b\x68\x47\x02\x80\x0c\ \x12\x3c\xce\x82\x35\x46\x4b\xd3\xcd\x6f\xb1\x2c\xde\x60\x19\x48\ \x6d\x92\x68\x4a\x47\xfd\x47\x08\x06\x46\x2b\x36\x16\xab\x5e\xef\ \xca\x6b\x0a\x8f\x5b\xef\x7d\x08\x31\x46\xe0\x9f\xc2\xd7\x75\xb9\ \x51\xdd\x88\xd4\x6c\x75\x94\x30\x80\x12\x2a\x63\xa9\x13\xab\xa8\ \x61\x0a\xa6\xa3\x84\x6b\xbf\xc8\xa4\x55\xc4\x79\x68\x45\x06\x00\ \x50\x45\x9d\xb0\x51\xd8\xf7\x25\xe9\xdf\xfd\x8b\x58\xa0\xf4\x0e\ \x07\xb7\x93\x24\xd4\x23\x69\x20\x46\x92\x2c\x99\x84\x13\x0a\xe4\ \x32\xd4\xeb\x94\xd9\x1c\x6b\x9a\x9b\x12\x8f\x16\xd6\xf9\x1a\xc2\ \x98\x00\xbe\x1d\xa2\x0e\x62\x8a\x80\xe9\x18\xc1\x99\x93\xc9\xb7\ \x33\x6d\x3e\x9d\x8b\x31\x8a\x15\x88\x08\x00\x63\x66\x0f\xe3\x2e\ \xb4\x39\x3c\xfd\x84\x87\x71\x21\xb2\x20\x00\x40\xf1\x5e\xb2\x79\ \xde\x7e\x99\x2d\xff\xab\x36\x34\x60\xe0\x67\x7b\x25\x19\xfa\xb7\ \x12\x2b\x64\x12\x66\x36\x91\x7b\xc1\x14\x14\xc7\x04\x78\xe5\xcf\ \xc3\xef\x2c\x58\x64\xab\x21\xe2\x92\x76\xe6\x0f\xa2\x8a\x3a\xf2\ \x80\xcd\x78\x87\x18\xf1\x3c\xf2\x78\x0d\x23\x28\x61\x27\xda\x90\ \x71\x78\x52\x0c\x61\x26\x5a\x10\x31\x01\x73\x81\x90\xc5\x42\x9c\ \x80\x44\x70\x3a\xaa\xe8\x56\xfd\xd6\x05\xb6\xff\x98\xce\x02\x9f\ \x7f\xc3\x2d\x4f\xf4\x58\x8f\x2d\x63\x02\x84\x10\xdc\x75\xa9\x33\ \x56\x7e\xd2\xeb\x86\x34\xc5\xd9\xf8\xd4\x2e\x3c\x4c\xfc\x3a\x0a\ \xc8\x22\x83\x04\xd9\x43\x9e\x09\x32\x08\xde\x9f\x88\x1a\xea\x88\ \x88\x48\x11\x11\x51\x43\x8d\x10\xa9\x65\x85\x72\xdd\xc0\xcd\x83\ \x7a\x5f\x25\xdf\xa6\x74\xc9\x2f\xdd\xfc\x56\xd1\x76\xbc\x8b\x5d\ \xff\x5f\x00\x7c\xe2\x4c\x93\xd6\xdd\xaa\xc7\xb0\x5c\x9c\x88\x5b\ \x76\xe3\x13\xc4\xbd\x28\x38\xe6\x84\x88\x2c\x7d\x79\xa1\x50\xb5\ \xfb\x33\xdb\x54\x07\xc8\x4e\x50\x3e\xe5\x25\x7f\x92\x46\xbd\x78\ \x17\x7b\x51\x3d\x54\x00\x5c\x39\x57\xdb\xe3\xcb\xbd\x63\x48\xa7\ \x56\xe2\x97\x5f\xc3\x85\xc4\x0c\xb2\xc7\xb0\xf0\xf8\x9b\xc2\xd3\ \x3c\xd5\x21\x7b\x96\xf7\xa8\x0f\x50\xce\xeb\x9d\xf3\xdf\xbe\x30\ \x5a\xd7\x83\x6e\xec\x41\x84\xc3\x0a\x00\xc4\xef\x78\x59\xc5\x22\ \xc3\xc4\x7b\xee\xc3\xed\xd4\x5a\x90\x68\x18\x01\x49\xa4\x98\xa5\ \xa7\x59\x98\x90\xb0\xb7\xc7\xd6\x1b\x8a\x5a\x5a\xd8\x59\xf5\xea\ \x79\xeb\x7d\x05\x25\x74\x63\x1f\xe2\x91\xf7\x00\xc2\x57\x9d\x1f\ \xbf\x6d\xbd\x76\xe7\x85\xdb\x6e\x11\xbf\x7b\x03\xc9\x63\x94\x73\ \xc4\xd0\x98\xe3\x92\x44\xf6\x34\x53\xce\x0a\x6d\x91\x3d\xfb\x74\ \x2f\x1f\xd1\xde\xc6\xae\xaa\x37\xc6\x8a\x1f\x46\x37\xfa\x7e\xeb\ \x45\x16\xfe\xc6\xa2\xd7\x6f\xb6\xf2\x9c\x29\xee\x0a\x37\xad\x16\ \x6f\x3d\x91\x33\x06\x18\x0d\xd4\xa3\xa3\x26\x41\x25\xc3\xbe\x16\ \x72\x84\x76\xac\xdb\x61\xd3\x3d\x4c\x9b\xca\x43\x7b\xdc\xff\x95\ \x37\xad\xc1\x20\xba\x31\xe0\x10\x8e\x78\x84\x00\xa0\xfb\x4b\x56\ \xcc\xea\xb4\xca\x2e\xe2\xf5\x98\x57\xa0\x18\x89\x47\x2b\x50\x67\ \x7b\x1b\x4d\x84\xd6\x84\x9f\xee\xb7\xe5\x3e\xa6\x77\xf2\xd0\x7b\ \x1e\xb8\x6d\xa3\x1f\x62\x1f\xb6\x63\xf8\xa8\xaf\x12\x00\xa7\x7e\ \xcf\xb7\x9e\xbb\xda\xe6\x4b\x4e\xb3\x26\x3c\x48\xbc\x74\x94\x25\ \x09\x65\x47\x47\x26\xa2\x24\xc8\xb0\xf6\x80\xee\xc7\x98\xda\xc9\ \x5f\x6e\xb2\xf2\xc1\x1d\xd6\xe3\x3d\xec\x40\x11\x3e\xb0\x00\x7c\ \xf2\x87\x9e\x78\xf0\x62\xe7\xdd\x38\xdb\xff\xd4\x1e\x23\xb3\x24\ \x52\x89\x8e\x8a\x04\xb9\x32\xa1\xc9\x9b\xab\xe9\x98\xca\x15\xaf\ \xb8\xf9\x85\x5e\x9b\xb0\x6b\x2c\x25\x68\x98\x00\x7c\x7e\x9d\x9f\ \xdf\x38\x8f\xcc\xc9\x28\x47\x2a\x8e\x8e\x80\xb4\x46\x35\xd5\x31\ \x8b\x49\x29\x2f\xf4\x7a\x05\xfd\xd8\x86\x14\x1a\x2e\x10\xbf\xa9\ \xcb\x6e\x9c\x8c\x92\xa3\x17\x80\x0c\xfa\xab\x5a\xa7\x71\x70\x2b\ \xd7\x4c\x37\xe7\xd1\xdd\x9e\x42\x0a\xc7\x44\x40\xd1\xb2\x74\x94\ \xcc\x0c\x14\x1d\x7e\x06\x02\x80\xf7\x1f\xf2\x1c\x71\x94\x89\xa7\ \xd0\xf7\x06\x9f\x9a\xe2\xa3\xbf\x16\x78\x16\x8e\x9d\x40\xf4\x87\ \x6a\xe8\x40\x09\xb5\xc3\x14\x5f\x43\x8a\x66\xd4\xdf\x47\xa2\x8e\ \x1a\x3a\x19\xa9\x72\x52\xde\x6c\x14\x90\x43\xf5\xd8\xbc\x91\xa5\ \x96\xa4\x15\x74\x62\x04\xa3\x63\x29\xa3\x8a\x22\xb6\x60\x2b\xb6\ \xa1\x84\x14\x65\x8c\x1e\x26\x11\x9d\x54\x2a\x4c\x6d\x72\x16\x9a\ \xc6\xd2\xf8\x0e\xc4\x55\xd8\xa9\xb3\x30\x9d\x58\x44\x05\x00\x59\ \xf4\x63\x1f\x72\x68\x22\xf4\xa3\x17\x27\x12\x3b\x90\xa2\x0e\x80\ \x14\x09\x86\xe9\x9a\x41\xe1\x80\x09\x53\xb2\xa6\xee\x4f\xed\x87\ \xc6\x77\x60\xd0\x9c\x72\x99\x38\x15\x45\x8c\xa2\x8c\x1a\xde\xc5\ \x0e\x44\x42\x4a\xd8\xc0\xce\xa7\xd8\xf6\x24\x7e\x4c\xd8\x84\x22\ \x6a\xc6\xba\x81\x12\xb2\x18\xa2\x6b\x3a\xfd\x65\xfe\x6c\x9a\xdf\ \x43\xf6\xd8\x08\x04\xcb\xea\x29\xa1\x05\x15\xd4\x51\xc5\x66\x0c\ \x12\x72\x84\x3d\xec\x5f\xc7\xe0\x1e\x26\xb7\xd3\xd5\x41\xcf\x6e\ \xb6\xad\x21\xfc\x17\x61\xe7\x21\x57\xff\x0a\x11\x99\x36\x46\xaa\ \x5c\xd0\xee\x42\xe4\x90\x34\x5e\xa0\x6a\x49\xbd\x86\x56\x54\x30\ \x8c\x37\x51\x25\x0c\x52\xde\x40\xff\x26\xa6\x4c\x64\x6b\xd1\x4b\ \x2d\x6b\x5d\x3a\xe9\x49\x1f\xdd\x5d\xf3\x62\x57\x0b\xef\xbe\x4a\ \xdf\xb3\x84\x9f\x11\xfa\x90\xa2\x8a\x80\x36\xaa\x55\xa6\xe5\x9c\ \x8d\x02\x72\x8d\x17\xa8\x5b\x92\x6d\x26\x16\xb0\x17\x6f\x13\x6a\ \x84\xb7\xe9\x7f\x8b\x4c\x4a\x48\xf4\x9e\xf3\x13\xd7\x2d\x7c\xde\ \x9d\x78\x2f\x65\xd3\xfc\x17\x7c\xfa\x73\xbf\xb4\xa8\x90\xd7\x97\ \x96\x79\xeb\x25\x8a\x3f\x22\xbc\x45\xe8\x47\x16\x39\x26\xe4\x39\ \x31\xeb\x74\x63\x83\xdc\xd0\x8f\x7c\xf1\xab\x42\x7d\xb9\x18\x6f\ \x15\xeb\x77\x8b\xf1\x0e\x31\x2e\x17\x87\x3e\x2b\x96\x96\x8a\xe5\ \x65\xe2\xaa\x79\xee\xc1\x45\x38\x1f\x27\xa3\x19\x00\x19\x14\x1e\ \x99\xeb\xaf\xf6\x7f\x4c\xec\x3e\x5f\xdc\x78\xae\x18\x97\x8a\xf1\ \x6e\x31\xfe\xad\xb8\xf3\x22\xb1\x7b\xbe\xb8\xb8\xd5\x65\x68\x6f\ \x6c\x07\x46\x5c\x34\x92\xa2\x42\xd8\xc7\xc8\x2e\x0e\x1e\xa0\xad\ \xc0\xfa\x3e\xcf\x4d\xfa\x37\x9f\xf9\xda\xaf\x3c\x8d\xdd\x78\x13\ \x3b\x50\x02\x40\x0d\xa3\xd7\xbe\xe6\xbb\x53\x5e\xd4\xba\x37\xb5\ \xa6\xa5\x99\xd7\xb6\xb0\xf1\x09\xf4\x30\xa3\x93\x03\x35\x3e\xde\ \x6e\x01\xb2\x8d\x5d\x64\xc1\x67\x43\x8d\xb4\x4c\xf1\x20\xed\x05\ \x7a\x0e\xe8\x5e\xf2\x8c\xbb\x7f\x35\xa0\x1b\x43\xd8\x8b\xfe\x23\ \x2c\xa1\x14\x07\x17\x6f\xb0\xec\x8a\x29\xee\xb9\xf3\x14\x3f\x68\ \xc9\x3a\x6d\xc3\x4f\x99\xdc\x4e\x2d\xb2\x70\xa2\x25\xf8\x3e\x32\ \xa8\x35\xe6\x08\xdd\x6a\x4b\xf1\x3a\x31\xde\x28\x56\xaf\x53\xfa\ \x8b\xd9\x56\xe2\x22\x2c\xc4\x49\x68\xf6\xdb\x93\x20\xff\x9d\x53\ \x5d\xbb\xf9\x5c\x95\x8d\x1f\x11\x5f\x99\x2b\xfe\x62\x8e\x1e\x9c\ \x8a\x09\x8d\x9b\x81\x15\x62\xbc\x45\x5c\x77\xb1\x1f\xe0\x63\xf8\ \x7d\x9c\x86\x36\x04\x1f\x8c\x1c\x26\x3c\x73\xa6\xfb\xf7\xcc\x17\ \x8b\xbf\x0e\x16\xa0\xbd\x61\x02\x80\x93\xb0\x18\x1f\x46\x27\x32\ \x1a\x4b\x1e\xd3\xf0\xbb\x38\x17\x6d\x8d\x9b\x01\x12\x0c\x63\x13\ \x8a\x28\x6b\x3c\x65\xf4\xa3\x8c\x1a\x0e\x3a\x02\xc7\xfd\xef\x36\ \xff\x07\xe2\x88\x5c\xa0\xce\x9a\xc4\x5c\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ \x00\x00\x2e\x32\ \xff\ \xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\ \x48\x00\x00\xff\xdb\x00\x43\x00\x04\x02\x03\x03\x03\x02\x04\x03\ \x03\x03\x04\x04\x04\x04\x05\x09\x06\x05\x05\x05\x05\x0b\x08\x08\ \x06\x09\x0d\x0b\x0d\x0d\x0d\x0b\x0c\x0c\x0e\x10\x14\x11\x0e\x0f\ \x13\x0f\x0c\x0c\x12\x18\x12\x13\x15\x16\x17\x17\x17\x0e\x11\x19\ \x1b\x19\x16\x1a\x14\x16\x17\x16\xff\xdb\x00\x43\x01\x04\x04\x04\ \x05\x05\x05\x0a\x06\x06\x0a\x16\x0f\x0c\x0f\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\xff\xfe\x00\ \x12\x42\x6c\x75\x65\x20\x41\x6e\x67\x6c\x65\x20\x53\x77\x69\x72\ \x6c\xff\xc0\x00\x11\x08\x01\x20\x01\x20\x03\x01\x22\x00\x02\x11\ \x01\x03\x11\x01\xff\xc4\x00\x1b\x00\x00\x02\x03\x01\x01\x01\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x04\x01\x02\x05\x00\x06\ \x07\xff\xc4\x00\x3d\x10\x00\x02\x01\x03\x03\x03\x03\x02\x04\x04\ \x05\x02\x06\x03\x01\x00\x01\x02\x03\x00\x04\x11\x12\x21\x31\x05\ \x41\x51\x13\x22\x61\x32\x71\x14\x42\x81\xa1\x06\x23\x52\x91\x33\ \x62\xb1\xc1\xd1\x72\xe1\x15\x24\x34\x43\x53\xf1\x82\x92\xa2\xf0\ \xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x06\xff\xc4\x00\x24\x11\ \x01\x01\x00\x02\x02\x02\x02\x02\x02\x03\x00\x00\x00\x00\x00\x00\ \x00\x01\x02\x11\x21\x31\x12\x41\x03\x22\x51\x61\x04\x71\x13\x32\ \x42\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xf6\ \x3a\x14\xae\xdf\xa5\x74\x5a\x84\x80\x67\xf5\xa2\x45\x83\x10\x14\ \x39\x50\x83\xa8\x57\xde\x6f\x7c\x3c\xad\x7b\x16\x08\xe1\x98\xe4\ \x0d\xea\xd7\x0f\x7b\x79\x27\xb1\x4e\x91\xc1\x63\x81\x4a\x58\xcb\ \xae\x2e\x46\x46\xd4\xcb\x4a\x74\x80\x18\x81\x8e\xd5\xce\xce\x44\ \xc3\x33\xdb\x5c\x8b\x6b\xd8\x90\x29\xdb\x56\x38\xad\x8f\xe1\xeb\ \x48\xa4\x96\xe0\xb3\x65\xed\x70\xf1\x6f\xe7\xbd\x65\xcb\xa2\xfa\ \xdc\x43\x31\xc4\x80\x7b\x1c\xf7\xf8\xaa\x74\x2e\xa1\x2d\x87\x59\ \x81\x67\x38\x5c\xfa\x52\x13\xe0\xd6\x72\x96\xce\x15\xba\x49\x62\ \x4e\x73\x9a\x82\x1b\x1b\x0c\xd7\x5d\x0f\x4a\xe5\xd4\x70\x1b\x6a\ \xbc\x32\x03\x5c\x94\x5b\x1b\xd7\xb7\x71\x9c\x80\x3c\x56\xf5\xbc\ \xd6\x9d\x4a\xdc\xc7\x21\x5d\x64\x63\x71\xcd\x60\xe1\x49\xc1\x00\ \xd0\x3d\x66\xb7\xba\x0d\x1b\x15\xc5\x63\x2c\x3c\xba\x5d\x8b\xd7\ \x7f\x86\xe6\x79\x49\x86\x5c\xaf\xf4\xb1\x27\xfb\x57\x9c\xbf\xe8\ \x1d\x46\x26\xff\x00\xd2\x93\xbf\x2a\x32\x0d\x7b\x15\xeb\x8c\xb1\ \x61\x86\xb3\xe2\x83\x71\xd5\x2f\x25\x1b\x15\xb7\x4f\x20\x02\x6b\ \x78\x7c\x9f\x24\xed\x35\x1e\x41\x3a\x3f\x5a\xcf\xb2\xde\x6c\x0a\ \x66\x2e\x83\x71\xf5\x5e\x5e\x2a\x79\x54\x3a\x9b\xfe\xd5\xb5\x2d\ \xd1\x6c\xeb\x9a\x79\x49\xe7\x2e\x40\x3f\xa0\xa5\x2e\xe6\xd3\x11\ \x27\x00\x78\x1b\x0a\xe9\xfe\x4c\xaa\x68\xb4\x36\xd6\x56\x79\x68\ \x53\x53\x0f\xfd\xc9\xb0\x48\xfb\x0e\x28\x37\x37\x99\x24\x47\xb9\ \x3f\x98\xd2\xd7\x13\x3c\x8d\x96\x3b\x0e\x07\x6a\x0e\xa2\xc4\x84\ \xed\xcb\x1e\x05\x6a\x63\xbe\xcd\xa6\x57\x24\xff\x00\x53\x1a\x5d\ \x08\xfc\x48\x55\xdc\x28\x20\x91\xc6\x6b\x9a\x53\x21\x30\xdb\x9f\ \xfa\xe4\x3f\xed\x47\xb3\x80\x2a\x0f\x03\xf7\xae\xd8\xe2\x8b\x5e\ \x82\xcb\xa8\x72\x30\xc2\xb4\x7a\x04\xe0\xb9\x8c\xf1\x32\xed\xf7\ \xa4\x9b\x06\x45\x5d\xb7\x04\x1a\x1f\x4c\x90\xc6\xec\x3b\xa1\x0c\ \x3f\xde\xb1\xf2\x62\xb0\xff\x00\x4f\x96\x5b\x6b\xd6\x64\x24\x34\ \x6d\xb8\xad\x5e\xbb\x61\x0f\x57\xe9\xdf\x8b\x81\x46\xac\x7b\xc0\ \xec\x7c\xd2\x11\x28\xff\x00\xc7\xb3\x8f\x6c\x8a\x18\x56\x9d\xa4\ \xad\xd3\xaf\xb3\x8c\xc1\x26\xcc\x0f\x02\xb8\x67\x3d\xce\xd6\x3c\ \x05\xf5\xb3\xdb\xce\x54\x82\x08\x3c\xd5\xed\xa7\x0d\xec\x93\x9e\ \xc6\xbd\x97\xf1\x8f\x45\x49\xa1\xfc\x65\xa8\xd4\x8c\x33\xb7\x6a\ \xf0\xf7\x11\x34\x72\x10\x46\x08\xae\x98\x67\x32\x89\x61\xc3\x1b\ \x21\xd4\x99\xda\x8d\x6d\x78\xea\x70\x4d\x29\x65\x75\x8c\x47\x21\ \x38\x1c\x1e\xe2\x98\x96\x2d\x5e\xe0\x46\x4f\x04\x70\xd5\xaf\xed\ \x1a\x50\x5c\xa3\xe3\x7c\x1a\xd0\x70\x9d\x42\xcf\xd1\x94\x81\x22\ \x8f\x6b\x1e\xf5\xe6\x15\x9a\x37\xc3\x0a\xd1\xe9\xf7\x63\x20\x33\ \x7d\x8d\x63\x2c\x3d\xac\x21\x7d\x6f\x25\xad\xc3\x47\x22\x91\x40\ \x35\xb9\xd5\xa0\xf5\xe1\x32\xa9\x2f\x8e\x57\x39\x23\xe4\x56\x23\ \x0c\x1f\x22\xba\xe3\x97\x94\xfd\xa0\x53\x2e\xda\x87\xeb\x53\x0b\ \x67\x63\x57\x3e\x28\x32\x2e\x96\xa7\x40\xd5\x59\x50\x32\x13\xc3\ \x0e\x0d\x42\x3e\x76\x3c\xd5\xea\xca\x15\x46\xd2\x41\xee\x0f\xbb\ \xe6\x9a\xce\x54\x50\x6e\x23\xdf\x58\x1f\x71\x53\x6c\xd9\x5d\x3e\ \x38\xa7\xb0\xca\x39\x0a\x28\xd1\xb0\x75\xc1\xa5\x90\xfb\x6a\x55\ \x88\x39\x15\x34\x0b\x1b\xb4\x12\x1c\x6e\x0d\x32\xf2\xfa\x91\x6a\ \x43\xc7\x34\x90\x93\xce\xf5\x31\xbe\x96\xd4\xa7\x4f\xc7\x9a\xa1\ \xc8\x2e\x08\x20\x37\xf7\xa6\x6f\x42\x5d\x42\x1f\xff\x00\x71\x79\ \xc7\x7f\x9a\xcf\x24\x37\xb9\x76\xf2\x28\x96\xf3\x18\xcf\x91\x52\ \xcd\xf3\x07\xa4\xb0\xb9\x17\x76\x28\x5b\xfc\x68\x94\x24\xbf\x24\ \x70\x6a\xcc\xfa\x06\xdc\xd6\x6f\x4a\x60\x6e\x7d\x54\xc8\x05\x30\ \xfe\x0f\x8a\x7e\x1c\xcd\x37\xf9\x45\x70\xb3\x55\xa3\x56\x84\xe8\ \x2c\xdd\xe9\x79\xcb\x4b\x71\x85\xa3\xce\xd8\x51\x1a\xf3\x50\xa0\ \x42\xbb\x6e\xe7\xf6\xac\x4a\x25\x55\x20\x5c\x9f\x73\x9e\xd4\x36\ \x2c\xe7\x2c\x6a\x0e\xe7\x2c\x72\x4d\x02\xee\xe5\x62\x5e\x77\xad\ \x48\x09\x71\x2a\x42\xb9\x63\x59\x17\xb7\x26\x46\xcb\x1c\x01\xda\ \xab\x34\xf2\x4d\x36\x95\x05\xd8\xf0\xa2\xa6\x54\x86\xcd\x3d\x6b\ \xc6\x0c\xff\x00\x96\x31\x5d\x31\xc7\x49\x43\x54\x66\x8c\xc9\x2b\ \x7a\x51\x0e\xe7\x93\xf6\xa5\x59\xde\xed\xbd\x1b\x71\xa2\x15\xfa\ \x9b\xcf\xc9\xae\x06\xe7\xab\x5c\x12\xcd\xa2\x14\xe4\xf6\x02\x9d\ \x51\x1f\xa6\x21\x81\x71\x12\xf7\xc6\xec\x7c\xd7\x59\x35\x7f\x68\ \x1d\xbc\x4a\xab\xa2\x31\xfc\xb1\xdc\xf2\xd4\x73\x80\x2b\x80\x00\ \x60\x54\x10\x59\xc2\x2f\x26\xba\x5b\x31\x82\xf0\x8d\x11\x3d\xc1\ \x3b\xfd\x29\xf7\x34\xa5\x87\xfe\xa0\xb7\x81\x4c\x75\x77\x58\xd1\ \x2d\x97\x88\xc6\xff\x00\x24\xf3\xfb\x50\xec\x10\x8b\x76\x7e\x35\ \x9d\x22\xb8\xce\xb7\x46\x82\x39\x8e\x4b\x77\x27\xe8\x90\xc5\xfa\ \x56\xfd\xdc\x42\x48\x06\xaf\x15\xe7\x2f\x09\xf4\xe5\x45\x18\x30\ \xb8\x70\x3c\xed\x8a\xde\xb1\xb9\x17\x1d\x3d\x5d\x4f\x22\xb8\xd6\ \x97\xe8\x77\x4b\x04\xa6\xca\xe7\xdd\x0c\x9b\x0c\xf6\xac\x2f\xe3\ \xbe\x86\x6d\xa4\x37\x10\x8c\xc6\xdb\xe4\x76\xa7\xa7\x74\x92\x4d\ \x07\x66\x1c\x56\xb7\x4a\xb9\x8e\xfe\xcd\xba\x7d\xe0\x05\x80\xc0\ \x27\xbd\x63\x29\x70\xbe\x50\xed\xf2\xe9\x10\xe7\xc1\x14\x6b\x2b\ \xa3\x19\xd0\xfb\xa9\xe4\x56\xb7\xf1\x77\x46\x93\xa7\x5e\x91\x8f\ \x63\x6e\xa6\xb0\xd9\x73\xf7\xaf\x46\x36\x65\x36\xcb\x60\xc5\x1c\ \xb0\xea\x56\xf5\x13\xcf\xe6\x4f\xbd\x26\xea\xf0\xc9\xff\x00\xfb\ \x06\x81\x65\x75\x25\xbc\x81\x94\xef\xdc\x79\xad\x7b\x75\x82\xf6\ \x2c\xa6\xcd\xdd\x3f\xe2\xaf\x42\xbd\x3a\xf7\x4b\x69\x62\x74\x9e\ \xc6\x96\xea\x90\xfa\x73\x97\x4d\xd1\xf7\x15\xd7\x76\xb2\x40\xdb\ \xe7\x03\x83\xe2\xba\x39\xf5\x27\xa5\x2e\xea\x7b\xf8\xa9\x27\x3b\ \x8a\x56\xa1\x94\x30\xc1\xa2\x4f\x19\x8d\xbc\x83\xc1\xaa\x56\xfb\ \x40\x1d\x4a\x9a\x24\x4d\x91\x83\xcd\x59\xc6\xa1\x8a\x0b\x02\xad\ \x8a\xcf\x40\xf4\x00\x34\x4e\x07\x63\xc5\x12\x26\xc8\xdf\x91\x51\ \x38\xf6\x83\xdc\x1d\xab\x42\xd1\x1c\xc6\x0f\xc5\x5a\xad\x14\x79\ \x5f\x00\x51\x6d\x6d\xa4\x9e\x5d\x11\x2e\x71\xcb\x76\x15\x37\xa0\ \x1c\x57\x11\x5a\xb0\xda\x5a\x45\x81\x23\xeb\x3d\xc8\xe0\x50\xfa\ \xa5\xad\x9b\xd9\xbc\xd0\x36\x1e\x3d\xf6\x35\x9f\x2e\x46\x7a\xb1\ \x06\x8c\xbe\xec\x63\xbd\x2e\x37\x35\xa5\xd3\xe2\xc6\x24\x61\x9e\ \xca\x3c\xd6\xf7\xa9\xb1\xa1\x64\x86\x2b\x75\x84\x0f\x7b\x6e\x6b\ \x52\x15\x10\xc2\x14\x7d\x5d\xe9\x7b\x08\x3d\x21\xea\x3e\xee\xdf\ \xb5\x1a\x69\x12\x24\x2e\xec\x00\x15\xe5\xca\xee\xb4\xb6\x74\xfb\ \x8e\x33\xf3\xda\x95\x9a\xed\x03\x15\x07\x26\xb3\x7a\x8f\x54\xf5\ \x9c\xa4\x1c\x77\x34\xbc\x0d\x34\xaf\xe9\xc2\xa5\xdc\xf7\xf1\x5b\ \xc7\x0f\xca\x6d\xa5\x71\x7a\xb1\xa7\xb8\xee\x78\x14\xb2\x43\x73\ \x7c\xda\xc8\xf4\xe3\x1c\xb3\x6d\x9f\xb5\x31\x6f\xd3\xe1\xb6\x4f\ \xc4\x5f\x48\x19\x80\xce\x93\xc0\xac\xee\xb3\xd6\x1a\x5c\xc7\x6f\ \xed\x4e\x36\xef\x5b\xc6\x6e\xf0\x0d\x79\x7f\x69\xd3\xa2\x31\x5a\ \x80\xd2\x70\x5e\x91\xb2\xb4\xb8\xea\x52\x9b\x8b\x97\x2b\x10\x39\ \x66\x6f\xf6\xa2\x74\xae\x94\x65\x5f\xc6\x5e\x9d\x10\x8d\xc0\x3c\ \x9a\x62\xf2\xef\xd6\x22\x18\x57\x44\x2b\xc2\x8e\xf5\xbe\x27\x18\ \xa2\xd3\x34\x6c\xa2\xde\xd9\x74\x42\xbf\xff\x00\x5f\x26\xae\x83\ \x02\xa9\x6e\xbe\xc2\x48\xde\x99\xb4\x4d\x72\x80\x78\x15\xac\x35\ \x26\xc0\xd9\x4a\xe3\x3b\x66\x8d\xd1\xd4\x35\xc9\x73\x8c\x2e\xf9\ \x3c\x55\x6f\x94\x89\x08\x1b\xed\xb0\xab\x74\xdf\x74\x72\xc4\x83\ \x2e\xea\x42\xfc\xd6\x7e\x4b\xb8\xb1\x99\x7a\xfa\xe6\x24\xf2\x77\ \x3f\xae\xf4\xef\x4f\x02\x6b\x06\x88\x11\xad\x0e\xa0\x3b\x91\x49\ \xde\xc4\xc9\x21\x6c\x1c\x1f\xda\xa9\x04\xcf\x14\x81\x91\x88\x23\ \xb8\xa5\x9b\x9c\x23\x5d\xd9\x65\x55\x98\xf3\xa4\xa4\xa3\xc7\x83\ \x51\xd1\x6f\x0d\xab\x35\x9c\xa7\x83\x95\x3e\x68\x76\xb3\xfa\xe7\ \x5c\x60\x2c\xc0\x7b\x93\xb3\x8a\xa5\xf4\x62\x78\x43\xc4\x08\x64\ \xfa\x47\x71\xf1\x5c\xf5\xea\xa8\xf7\x53\x7f\xe7\x0e\x0e\x0f\x22\ \x9d\xb7\x94\x9d\x2e\xa7\x12\x2e\xe3\x1d\xeb\x06\x2b\x86\x79\x57\ \x5f\x22\xb6\xd2\x26\x0a\x1d\x6a\xd9\xc2\x35\xae\x84\x3d\x73\xa5\ \x35\xbc\x98\x13\x28\xf6\xe7\xcd\x7c\xff\x00\xa9\xda\x49\x6d\x74\ \xf1\x3a\x90\xca\x71\x5e\xb5\x24\x78\xe4\x13\x44\x70\xc3\x91\x55\ \xfe\x26\xb5\x8b\xa9\xf4\xf1\x7b\x12\x8f\x59\x3f\xc4\x03\xfd\x6b\ \x9e\x3f\x4b\xaf\x4b\xdb\xc4\x91\x93\xe0\x8a\x2d\xbc\x8f\x1b\xeb\ \x8c\xe0\xaf\x22\xa6\xe6\x32\x18\xb6\x31\xbe\xff\x00\x06\x85\x93\ \xc8\xd9\x85\x77\x47\xa1\xe9\xd7\xb0\x5e\xc5\xe9\x5c\xe3\x51\x18\ \xcd\x07\xa9\x74\xb7\x84\x17\x8f\xdc\xb5\x8f\x0b\x1c\xfa\x91\xec\ \x47\x22\xb7\x3a\x47\x55\xca\xfa\x53\x6e\xbc\x1c\xf6\xac\x59\x67\ \x31\x59\x8a\xe5\x46\x87\x19\x5f\x07\xb5\x52\x54\xc7\xb9\x4e\x54\ \xfe\xd5\xb7\xd4\x6c\x22\x99\x3d\x58\x4f\x23\x3b\x76\xac\x89\x63\ \x92\x16\xdf\x8f\xd8\xd5\x99\x4a\x00\x71\x50\xca\x18\x55\xe4\x50\ \xe0\xe3\x62\x7b\x52\xec\x25\x8c\xf3\x91\x5b\x44\x10\x55\xaa\xe4\ \x87\x88\x82\x77\xc5\x41\x91\x58\x7b\x81\x1f\x35\x41\xb9\xd2\xa7\ \x24\xf3\x8e\xd5\x06\x85\xad\xbc\xf7\x0e\x12\x30\x4f\x93\xd8\x56\ \x86\x16\xda\x1f\xc3\xc4\x76\x1b\xbb\x7f\x51\xa2\x4d\x74\x74\x68\ \x8d\x44\x6b\xe1\x6b\x3e\xea\x75\x8d\x79\xdf\xb0\xac\xf3\x45\x2f\ \x67\x23\xd8\x9c\x9f\xda\x84\x87\x45\xb3\x26\x7f\xc4\x60\x4f\xe9\ \xff\x00\x7a\xa2\xe5\xdb\x53\x72\x7f\x61\x57\x0a\x65\x93\x0a\x36\ \x1b\x7e\x95\xad\x02\x59\x45\xad\xb5\x1e\x05\x7a\x0e\x97\x6b\xa0\ \x09\x24\x1b\xf6\x1e\x28\x3d\x16\xc8\x2a\x89\x64\x18\x03\xe9\x15\ \x6e\xb3\xd5\x62\xb3\x8c\xa2\x1d\x52\x9e\x14\x57\x2c\xb2\xf2\xba\ \x8a\x6b\xa8\x5e\xc1\x69\x09\x79\x1c\x7c\x0a\xf3\x5d\x43\xa8\x4f\ \x7d\x26\x01\x2b\x1f\x81\x41\x93\xd7\xbc\x98\xcd\x70\x4e\xfd\x8f\ \x02\x8a\x88\x89\xc6\xf5\xac\x30\x90\xb5\x58\xd4\x28\xda\xb6\x6c\ \x67\x4b\x2e\x91\xeb\xae\x4b\x37\x35\x94\xda\x48\xd8\x60\x8e\xd4\ \x79\x98\xc9\xd1\x1a\x34\xdd\xa3\x6c\x91\xf1\x56\xcd\xa1\x4b\xfb\ \xfb\x9b\xd9\xb1\xb9\xcf\x0a\x2b\x47\xa1\xf4\x75\x8d\x3f\x17\x7d\ \xed\x0b\xb8\x53\xda\xa9\xfc\x2d\xe8\xc3\x69\x35\xcc\x8a\x09\x43\ \xb5\x57\xa8\x5f\xcf\x74\x70\xcd\xa5\x3b\x28\xe2\xb5\x95\xbf\xeb\ \x8a\x89\xd5\xaf\x8d\xcb\xfa\x68\x34\xc2\x9f\x48\xf3\x4b\xda\xa8\ \x2d\x93\xbd\x06\x8b\x6a\x48\x93\x03\xbd\x35\xa8\x8d\x28\xc0\x10\ \x1c\x73\x46\xb5\x1a\x63\x04\x77\xe6\x87\x18\xfe\x41\xc6\xe4\xd5\ \xa1\x60\x23\xd2\xd9\x07\x3d\xc5\x49\xce\x22\xf3\xa3\x3b\x7a\x88\ \x77\x5e\xd4\x04\x56\x57\xf5\x21\xdb\x07\x3a\x7b\x8f\xfb\x53\x0a\ \x7b\x83\x50\xe8\xaf\xee\xc6\x0f\x91\x49\x65\x9a\xa2\x4d\xcc\x17\ \x63\x4d\xca\x80\xc7\x6d\x63\x9f\xd7\xcd\x23\x7f\xd3\x9e\x2f\x7c\ \x64\x32\x1e\x08\xe2\x98\x91\x3f\xf9\x54\x91\xfd\x4b\xfe\xf5\x30\ \xc9\x24\x1b\xaf\xba\x33\xb1\x07\x8f\xfb\x54\xf1\xb8\xf4\x32\x51\ \x9e\x37\x04\x12\xac\x0d\x69\x5b\x5c\x89\xfd\xf8\xc4\xa0\x7b\xc0\ \xfc\xc3\xcf\xdc\x53\x12\x5a\x5a\x5e\xc7\xa9\x1b\xd2\x93\xc1\xe0\ \x56\x6d\xd5\x9d\xd5\x9c\x81\x8a\xb6\x01\xc8\x71\xc5\x5d\xcc\xb8\ \x14\xbb\x88\x47\x78\xa5\x7e\x97\x20\x8a\xf5\x16\xc8\x7f\x0a\xa0\ \xef\xb5\x79\xf9\xff\x00\x9b\x6d\x1c\x9a\x70\x43\x83\x8f\xd6\xbd\ \x1c\x8e\xb0\xdb\x2e\xa3\x8d\xaa\x77\xc2\x95\x99\x74\xb6\xa5\xe3\ \xbd\x56\x29\x0c\x32\x6b\x4d\xd5\xb6\x65\xf3\x4b\x7e\x2c\x89\xcf\ \x74\x26\x99\x5c\x32\xec\x72\x0f\x15\x73\xc3\x49\x19\x3d\x72\xc1\ \x41\x37\x10\x8c\xc6\xdf\x50\xac\x29\xe2\x29\x21\x1f\xd8\xf9\xaf\ \x5e\xe0\xa8\x2a\x46\x54\xf2\x2b\x17\xaa\xd9\x7b\x48\x51\xf4\xee\ \xb5\x31\xba\xe2\xab\x20\x67\x3a\xd3\x66\x1f\xbd\x11\x18\x91\xea\ \x47\xed\x23\xea\x1e\x28\x64\x10\x72\x39\x15\x28\x48\x3e\xac\x78\ \xd4\x39\x1e\x6b\x5d\x23\x4f\xa6\x75\x16\x88\x81\xfd\xd4\xf7\xad\ \x5d\x16\xf7\xb1\xe6\x2d\x21\x8f\x28\x78\x35\xe7\x30\xb3\x21\x92\ \x2d\x98\x7d\x49\xe3\xed\x44\xb4\xba\x78\xdc\x64\x90\x47\x7a\xc6\ \x58\xef\xa5\xd9\xcb\xbb\x07\x47\x3a\x46\x0f\xf4\x9f\xf6\x34\x9b\ \xa1\x53\x86\x04\x1f\x06\xb6\xed\xaf\xe3\x99\x04\x77\x2a\x08\xfe\ \xaa\xbc\xb6\xaa\xf1\xe6\x16\x59\x13\xfa\x58\x03\x52\x65\x67\x14\ \xd3\xce\xb4\x28\x4e\xe9\x9a\x95\x8c\x28\xd9\x40\xad\x76\x86\x04\ \x38\x7b\x55\xcf\xfd\x47\xfe\x6a\xd1\x0b\x35\x1b\xda\x29\x3f\x3b\ \xff\x00\xad\x6b\xcb\xf4\x8c\xeb\xcb\xa0\x9e\xd5\xdc\xd2\x63\x53\ \x36\xa6\xdc\x9e\x05\x46\x34\xee\x72\x58\xd1\x10\x15\x1f\xe7\x6d\ \xbe\xc2\xb4\x2c\xa0\x9f\x62\xee\x4f\x26\xb6\xba\x3f\x4f\x0a\xa2\ \x59\x46\x07\x20\x1a\x17\x44\xb1\x1a\x7d\x69\x86\x00\xdf\x7a\xa7\ \x58\xea\x85\xc9\xb7\xb5\x60\x14\x6c\xcf\x5c\xf2\xb7\x2b\xe3\x14\ \x6e\xb5\xd5\xc4\x47\xf0\xf6\x9e\xe7\xe0\x91\xc0\xac\x84\x4c\x31\ \x92\x66\xd6\xe7\x92\x6a\x8b\xa5\x3e\x9d\xc9\xe5\x8d\x76\xe4\xf9\ \xad\xe3\x8c\xc6\x20\xad\x22\x8f\x9f\xb5\x74\x77\x01\x5b\x3e\x98\ \xa1\x84\x63\x53\xe9\x9a\xd0\x60\xb4\x32\x6e\x87\x4b\x78\x35\xd1\ \x3b\x45\x20\x61\xfa\x8e\xc4\x52\xc5\x18\x76\xa9\x49\x19\x76\x3b\ \x8f\x06\xa5\x0d\x5a\xca\x96\xd3\xba\xe3\xf9\x17\x1b\x7f\xd0\x6a\ \x92\x21\x47\x28\xdc\x83\x55\x52\x8e\x84\x1d\xd4\xec\x47\x71\x50\ \x5e\x50\x00\x75\x12\x60\x60\x30\x38\x3f\xad\x20\x9a\xea\xa9\x73\ \x9f\xa4\x2f\xdc\xe6\xaa\xf2\xf6\x5d\xf3\xe3\x6a\xa0\xe9\x2c\x88\ \x76\x72\x28\xa9\xd4\x25\x5d\xb5\xa9\xfb\xd0\x2d\x2c\xae\x6e\x9b\ \xd8\xa4\x0f\x34\xf1\xe9\x30\x42\x99\xb8\x98\x06\xac\x5b\x8a\xba\ \xde\xf9\x59\x80\x75\xd0\x4f\xe6\x1c\x7e\xa2\xb5\xba\x5c\xd1\x33\ \x7a\x52\x28\x3a\xb8\x3e\x6b\x15\x6d\xed\xd9\x75\x42\xe2\x48\xf5\ \x69\x24\x0c\x15\x34\x78\x01\x82\x71\x10\x3e\xd2\x35\x21\xf1\xe4\ \x52\xea\xc1\xad\x75\x6d\xa3\x2d\x1e\xe9\xdc\x1e\xd4\x9b\x46\x41\ \xd5\x16\xc7\xba\xf9\xad\x4b\x59\x3d\x58\x15\xfb\x91\xbd\x0e\xea\ \xd8\x37\xba\x31\x83\xdc\x79\xa9\x8e\x76\x71\x4d\x33\x15\x03\x36\ \x13\xf9\x6f\xe3\x38\xfe\xd5\x75\x92\xee\x0c\x86\x52\x57\xbe\xa1\ \x90\x6a\xd2\xc6\xad\x90\xc3\x07\xcd\x42\x2c\xf1\x9c\x47\x2e\xdf\ \x7a\xde\xb1\xa8\xe8\x90\x4f\x22\x96\x41\x1c\x4a\x43\x39\x19\xc0\ \xc1\xff\x00\xb5\x5b\xaa\xde\x7e\x26\x5c\x26\x42\x0e\x07\x9a\x1c\ \xe2\x77\x04\xc8\xd9\x03\xb5\x2f\x82\x4d\x6f\x0c\x64\xe4\x76\x68\ \xb6\xd3\xb4\x67\x19\xdb\xc5\x0c\x21\xc5\x54\xec\x6b\x5b\xd8\xd3\ \x47\x59\x13\x3b\x1a\xa4\xb1\x87\x5c\x1f\xd2\x92\x8a\x46\x43\xb1\ \xa6\xa1\x9c\x30\xc1\xae\x79\x61\xee\x11\x87\xd6\xad\x3d\x19\x7d\ \x45\x1e\xd3\xcd\x67\xee\xac\x19\x7f\x51\xe6\xbd\x5d\xf4\x0b\x34\ \x2c\xa7\x7c\x8d\xab\xcd\x5d\x44\x62\x98\xa1\x18\x19\xa9\x39\x80\ \x7e\xe0\x44\xd0\x9c\x30\xe6\x8c\x81\x2e\xd0\xbc\x60\x2c\xa3\xea\ \x4f\x3f\x22\x80\x32\x8c\x58\x7e\xa2\xac\xca\x75\x09\xa0\x38\x61\ \xbe\xd5\x9e\x95\x68\xa5\x78\xce\x37\x23\xb8\xf1\x5a\x16\xb7\x5e\ \xd0\x51\xc8\xfb\x52\xf1\x7a\x5d\x41\x3d\xb8\x8e\xe4\x72\x0f\x0f\ \xff\x00\x7a\x59\x95\x92\x42\xa4\x14\x71\xcd\x5e\xd1\xb2\x6e\x19\ \xc6\x19\xb3\x54\x67\xf9\xac\xe8\xee\x99\x76\x90\x03\x8a\xe9\xae\ \x98\x8d\x09\xde\x9a\x02\x4d\x8f\xa8\xe3\x7f\xca\x2b\x4b\xa3\x59\ \x7a\x8d\xeb\x4b\xb2\x2e\xfb\xf7\xa1\x74\xbb\x36\xb9\x93\xd4\x7d\ \xa3\x5a\x27\x56\xbf\x04\x7e\x16\xd8\xe1\x06\xc4\x8a\xcd\xb6\xdd\ \x45\x4f\x59\xea\x1e\xa1\xfc\x35\xb1\xd2\x83\x66\x61\xde\xb3\x94\ \x60\x60\x0a\xe4\x5e\xc2\x89\x1e\x95\x18\xc1\x63\x5a\x92\x63\x11\ \x09\x19\x3d\xa8\xa9\x1a\x2a\x92\xf2\x2a\xe2\xb8\x25\xc3\x0c\x05\ \x20\x1f\x1b\x55\xe2\xb1\x62\x32\xd5\x2e\x4a\x13\xcb\x18\xda\x35\ \x67\x3e\x78\x15\x46\x9a\x61\xc4\x48\x3f\xbd\x30\x62\x0b\xb2\xf0\ \x2a\x0a\x8a\x9b\xd8\x42\xe2\xea\xe2\x35\xd5\xe9\xa9\x03\xe2\xaf\ \x65\x77\x1d\xda\xee\xba\x1b\xef\xb5\x1a\x78\xc3\x29\x04\x67\x35\ \x94\x0b\xf4\xee\xa0\x1c\x2e\xa8\x89\xf7\x29\xaa\x8d\x57\x89\xd1\ \xb6\x06\xaa\x59\xf8\x24\xd6\xad\xb4\x31\x5c\x40\xb2\xc6\x75\x44\ \xe3\x2b\xe4\x51\xbf\xf0\xd4\x2c\x08\x62\x45\x4f\x39\xed\x74\xc5\ \x48\xde\x43\x80\x39\xad\x6e\x99\xd2\x81\x02\x49\xb6\x14\xed\xbd\ \xac\x36\xe9\xa9\x80\xda\x94\xea\x9d\x4c\x05\x29\x19\xc0\x1d\xeb\ \x37\x2b\x97\x10\x1e\xfa\xfa\x1b\x48\xbd\x38\x30\x08\x1d\xab\x0a\ \x7b\x89\xef\x27\x08\xb9\x25\x8e\x00\xf3\x41\x96\x47\x9a\x4c\x0c\ \x9c\x9d\x85\x6f\x74\x4e\x9e\x2d\x13\xd5\x94\x03\x2b\x0f\xff\x00\ \x51\x5a\xd4\xc6\x1d\xa6\xde\xd1\x6d\x6d\x62\xb6\x1b\xbc\x8e\x0b\ \x7e\x95\x5e\xa6\xbe\x93\x46\x41\xfa\x1c\x53\x76\x2d\xeb\x5d\x1b\ \x83\xc0\xf6\xc7\xf2\x3b\x9a\x57\xae\x36\x5b\x1d\xcb\x8a\x98\xf6\ \x56\xaf\x40\x60\x49\x43\xc0\x6a\xd6\x9e\xde\x32\xd8\x56\xd2\xde\ \x0d\x63\x74\x13\x8b\x96\x1f\xe6\x14\xff\x00\x5e\x94\xc7\x26\x54\ \xef\x59\xca\x6f\x20\x2b\xdb\x4d\x4d\xc6\x97\xfd\x8d\x21\x2c\x6d\ \x1b\x69\x61\x83\x4d\xda\xf5\x13\xb2\xcc\xba\xbc\x1a\xee\xb6\xca\ \x66\x4c\x0c\x7b\x73\x57\x1b\x65\x29\x33\xf4\x63\xcd\x04\xa6\xf4\ \x62\x73\x55\x66\x55\x5d\x4d\xc0\xfd\xeb\xa4\xa8\xa1\x42\x3e\xd4\ \x19\xd7\x1b\xd5\x65\xbc\x19\xc6\xa0\x3e\x06\xf5\x45\x9d\x5f\x87\ \x06\xb7\x05\x80\xc9\xc5\x48\xca\x9f\x91\x55\x15\x7d\x61\x97\xdc\ \x37\x15\xbd\xe8\x33\x6f\x28\x6f\x6b\x56\x77\x5f\x80\x16\xcf\x91\ \x45\x49\x01\x3e\xd3\xc5\x57\xa8\xbb\x49\x6e\x7b\x90\x2b\x3a\x97\ \x98\x31\x88\x38\xdf\xea\x5d\x8d\x44\x6d\xe9\x36\x47\xd2\xdf\xb5\ \x16\x61\xa5\xd5\xff\x00\x2b\x8d\xfe\x0d\x0a\x40\x06\x57\xb1\xac\ \x71\x44\xce\x85\x48\x9e\x23\x82\x37\xda\x99\xbe\x90\xcd\x65\x6f\ \x72\xc0\x07\x6c\xa9\x3e\x71\x49\x96\x22\xd0\x8c\x9d\xce\x05\x31\ \x76\x34\xac\x36\xe3\xf2\x26\x4f\xdc\xd6\x62\x82\xea\x59\xc7\xda\ \xb8\xe1\x06\x2a\xcc\xc0\x0a\xa2\xee\x75\x37\x02\xb6\x8d\x1e\xa7\ \x76\x12\x3f\xc2\x5a\xec\xa3\x66\x23\xbd\x25\x1a\x66\xaa\x4a\xa0\ \xcb\x1a\x19\x92\x47\x38\x5f\x68\xa9\x8e\x1c\x70\x1c\x55\x88\x0f\ \xe6\x48\x17\xe2\x89\x14\xf6\xa8\xfa\x63\x5d\x44\xf7\xac\xe2\xb8\ \x1b\x9a\x7f\xa3\x59\xfa\x8f\xea\xb0\xf6\x8e\x2a\xe5\x84\x93\x75\ \x5a\x70\x7b\xd3\x56\x30\x29\x7b\xc9\x80\x3e\x9a\x77\xa3\x5f\x4e\ \x21\x8b\x0b\xfa\x0f\x35\x94\xcc\xcc\xc4\x93\x96\x3c\x9f\x15\xc1\ \x45\x9a\x5d\xb4\x21\xff\x00\xa9\xa9\x37\x9b\x0d\xb1\x62\x3c\xd4\ \xdc\x3e\x7f\x96\x9c\x77\x35\xd6\xf1\x99\x1c\x46\xbf\xad\x75\xc7\ \x1d\x4d\xd4\x5e\x39\xc3\x6c\x4d\x52\xfa\x11\x2c\x7f\x15\x79\xed\ \xd1\x49\xf4\xd8\x92\x3c\xd5\x23\x90\xee\x8f\x4e\xfa\x43\x5f\xc2\ \x73\x98\xcb\x59\xc8\x76\x3b\xa5\x6f\xc9\x30\x86\x02\xc7\xb5\x79\ \x3f\x74\x53\xac\x89\xb1\x53\x90\x6b\x7d\xa6\x17\x9d\x33\xd4\x53\ \xbe\x37\x1e\x0d\x73\xca\x72\xb0\xaf\x52\xea\x0c\xeb\x8c\xe0\x78\ \xac\xb9\x1d\xa4\x7e\xff\x00\x02\xba\x7c\x99\x48\x27\x35\xb5\xd0\ \xfa\x68\x8a\x31\x75\x70\x32\x4f\xd0\xb5\xbe\x31\x88\xb7\x44\xe9\ \xe2\xdd\x44\xf3\xae\x64\x3b\xaa\x9e\xd4\xdd\xf4\x85\xcf\xe1\x90\ \xfb\xdf\x77\x3f\xd2\x2a\xd7\x53\x7a\x30\x99\x5b\x77\x3b\x20\xa3\ \x74\x0b\x12\x75\x5c\x4f\xbf\xe6\x62\x7b\x9f\x15\x8b\x7d\xd5\x5a\ \x08\xc4\x2a\x18\x8c\x05\x4d\x87\x8a\xc8\xea\x04\xc9\x77\x12\x9e\ \x4b\x67\xf7\xad\x7e\xa3\x27\xb4\x81\xf9\x8e\x6b\x12\x59\x14\xf5\ \x20\x49\xd9\x76\xad\x61\xf9\x2b\x6b\xa2\x3a\xac\xe4\x9d\xf7\xcd\ \x37\xfc\x40\xa4\x95\x90\x6e\xad\xde\xb1\xe3\x79\x23\x6d\x69\xc7\ \xc5\x3b\x1f\x53\x62\x9e\x9c\xf1\x07\x5f\x9a\x96\x73\xb8\x01\x57\ \x77\x2e\x72\x4e\xe0\x62\x8c\x12\xda\xe7\xff\x00\x4e\xc6\x37\xfe\ \x86\xe0\xfd\x8d\x01\x83\x23\x15\x60\x41\x1c\x83\x52\x71\x4a\x87\ \x65\x45\xd4\xdc\x0a\xcf\x9a\x76\xba\x93\x0a\x48\x40\x71\xff\x00\ \xd5\x4f\x57\x9c\xed\x0a\x1d\xcf\x34\x95\xc4\xde\x92\x7a\x51\xf3\ \xdc\xd7\x44\x30\xf3\xc5\x11\xd2\x8b\xab\x1c\x81\x54\x33\x5b\xbf\ \xf8\x88\x50\x9e\x0d\x67\xe4\xe6\x88\x92\x63\xda\xfe\xe5\x34\xd0\ \x7d\x43\xae\xf1\xbe\xb5\xf1\x57\x8e\x65\x62\x41\xf6\x91\xd8\xd2\ \x2a\x5e\x1f\x7c\x4c\x4a\x78\xf1\x4c\x45\x2c\x77\x03\x0d\xed\x6f\ \x35\xad\xd8\x2d\x78\x8d\xfe\x2c\x5c\x8e\x7e\x6b\xad\xae\x16\x54\ \xd2\xdb\x37\x71\x52\x1d\xe2\x3a\x64\x19\x07\x83\x4a\xde\xa0\x8d\ \xc4\x91\x9f\xaa\xac\xfd\x0a\xdf\xa0\x54\x75\xf0\x72\x29\x69\xdb\ \x6c\xf7\xa2\xdd\x39\x7c\x67\xb9\x19\xa0\xbf\xba\x4c\x76\x1b\x9a\ \x82\x60\x4d\x52\x47\x19\xe1\x7d\xed\xf6\xab\x4d\x2f\xa9\x2b\xca\ \x76\xd4\x76\x15\xc8\x74\xdb\x96\xe1\xa6\x3f\xd9\x68\x5f\x51\xf8\ \xa9\x04\x8f\x73\x64\xf0\x29\xab\x0b\x57\xb9\x90\x6d\x84\x1d\xea\ \x96\x56\xed\x71\x28\x55\x04\x28\xe4\xd3\xbd\x42\xe5\x2d\xe1\x16\ \xd6\xfc\xfe\x63\x53\x2b\x7a\x9d\x8c\xc6\x80\x86\xfe\x63\x64\xd4\ \xec\xa3\x15\x53\x29\x66\x21\x01\x63\xf1\x52\x90\x3b\x90\x65\x27\ \x1f\xd2\x0f\x3f\xad\x76\xf2\x98\xf6\x22\x22\x25\x98\x20\xdf\x7d\ \xf1\x5b\x22\x68\xed\xe1\x09\x8d\xf1\xf4\x8a\x42\x2d\x31\x02\xb1\ \x28\x51\xe1\x7f\xe6\xa5\x62\x67\x7d\xff\x00\xb0\xae\x19\xe5\x72\ \xab\x13\x23\xb4\xf2\x6a\x24\xf8\xa1\x5d\x48\x10\x7a\x69\xc9\xe6\ \x8d\x78\xc2\xdd\x74\x29\x05\xcf\x6f\xe9\xa4\xcf\xb4\x12\x77\x26\ \x98\x63\xb2\xa0\x0c\x6c\x37\x26\x9e\x44\x16\xd6\xf8\xff\x00\xdc\ \x7e\x7e\x2a\x3a\x64\x01\x54\xdc\xcb\xc0\xfa\x73\x55\x91\xfd\x49\ \x4b\x53\x2c\xbc\xae\xa0\x90\x36\xde\x83\x71\x16\xa1\x90\x37\x14\ \x65\xae\x62\x01\xc1\xa2\x14\x53\xa9\x74\xb1\xc1\x1c\x53\x3d\x2a\ \xe4\xdb\xcc\x63\x73\x88\xdf\x63\xf1\x43\xb8\x8b\x57\xb9\x79\x14\ \x0c\xe7\x63\xc8\xa6\xb6\x18\xea\x11\xfa\x57\x59\x1b\x82\x72\x0f\ \x9a\xf4\x76\x72\xa4\xb1\x44\xe3\xe8\xf4\xc6\x3e\x3c\xd7\x9d\x8d\ \xfd\x7b\x7f\x49\xcf\xbd\x07\xb4\x9e\xe3\xc5\x3d\xfc\x3b\x71\x84\ \x30\x31\x39\x53\x95\xfb\x77\xa9\x79\x8a\xd0\xb0\x88\xf5\x0e\xa7\ \xea\x6f\xa1\x5b\x08\x3c\x0f\x35\xe8\x2f\x15\x61\xb4\x58\xa3\x18\ \x07\x6a\xc9\xfe\x17\x2b\x14\x97\x08\x4e\x19\x4e\x40\xf2\x0d\x6c\ \x48\x16\xe6\x15\xd2\xf8\x22\xb9\xe5\xda\xb0\xaf\x89\x69\x88\xe0\ \x0d\x85\x65\xbd\x9b\xb3\x93\xa8\x57\xa6\xba\xb7\x82\x35\xd7\x70\ \xe8\xa0\x56\x55\xef\x57\xb3\x84\x14\xb5\x84\x48\xc3\xf3\x37\x15\ \xd3\x1b\x7d\x25\x20\xb6\x57\x24\x7b\x5c\xfe\x99\xa1\xcf\x15\xd4\ \x1f\x51\x6a\xb4\x97\xb7\xf7\x5c\x48\x51\x3e\x3d\xa2\xac\xa9\x70\ \xd0\xe2\x59\x88\x4f\xea\x6d\x87\xef\xcd\x6b\xae\xc0\x6d\x6e\x24\ \x49\x41\xd6\x70\x4d\x6a\x5d\xdc\x0d\x3e\xa3\x9d\xca\x8c\x9a\xc9\ \x2b\x00\x7c\x25\xca\x16\xed\x9c\xe0\xfe\xb8\xa1\xde\xdc\x4a\xcf\ \xa1\x86\x9c\x72\x29\x64\xb5\x13\x2c\xd9\x99\xa6\x3c\x9d\x80\xa5\ \xc0\x69\x1f\x61\x92\x6b\x91\x4b\xb6\x33\xfa\xd3\xd6\x6b\x1a\x0c\ \x0c\x13\xe6\xb4\x16\xfc\x14\xf8\xc8\x23\x8a\x0a\xfb\xbd\xa7\xea\ \x1f\xbd\x6d\x0d\xd6\xb3\xfa\x9c\x1a\x64\xf5\x54\x60\x37\x38\xec\ \x6a\xd9\xa0\xbc\x52\x14\x3e\x47\x71\x52\xe5\x35\x6a\x4c\xa9\xa1\ \x33\x31\x23\xda\x09\xff\x00\x5a\xbc\x70\xcd\x21\xf6\xae\x91\xe4\ \xd4\xd6\x83\x96\xd3\x89\x07\xa7\x20\xcd\x06\xe8\xe2\x3d\x3f\xe6\ \xa0\xdb\x6b\x8e\xf0\x23\xf3\x44\xbd\x61\xab\x63\xc6\x4d\x27\x14\ \x2f\x21\xf7\x6f\xd8\x55\x61\x5d\x6e\x01\xfc\xdb\xb1\xf0\x2a\x1c\ \x82\xd8\xf2\x72\x6a\xed\xec\x88\x8f\xcd\x26\xe7\xe0\x76\x15\x28\ \x89\x9b\x5c\x9b\x6c\xa3\x65\x1e\x05\x5e\xda\x17\x9a\x41\x1a\x0f\ \xbd\x52\x18\xd9\xdc\x2a\x8c\x93\x5a\x2e\xc9\x61\x6f\xa5\x77\x95\ \xbf\x6a\x96\xe8\x4d\xd4\xc9\x65\x07\xe1\xe1\x23\xd4\x23\xdc\x7c\ \x56\x69\x6c\x1c\xb1\xc9\x27\xfb\xd4\x3b\x9c\xeb\x73\x96\x35\x54\ \x0c\x5b\xd4\x6d\xb0\x72\x2b\x58\x60\x1b\x8a\x10\x83\x03\x6a\xb8\ \x45\xce\xfb\xfd\xe8\x2b\x70\x73\x82\x06\x0d\x31\x19\x57\x5d\x42\ \xb9\xd9\xa5\x12\xde\x03\x23\xe9\x50\x07\xfb\x54\xde\xdd\x43\x6d\ \x98\x20\x21\xe6\xc6\xed\xd9\x6a\xf3\x49\xe8\x74\xa9\x25\x41\xee\ \xc7\x35\x93\x6e\xa0\x46\x0f\x2c\x77\x27\xcd\x31\xc7\xca\x8b\xe3\ \x72\xcc\x72\xc7\x92\x68\xb6\x56\xe6\xe6\x7f\xf2\xaf\x35\x48\x91\ \xa6\x94\x46\x9c\x9a\xd5\x40\x96\xb6\xba\x57\xb0\xdc\xf9\xad\x7c\ \x99\x6a\x6a\x12\x16\xea\x72\x84\x41\x12\xed\x8a\x52\x32\x58\xe9\ \x15\x4b\xa9\x0c\xb3\x12\x3c\xd3\x08\x12\xd6\x0d\x6f\x82\xed\xc0\ \xac\x4e\x20\xb4\x8c\xb0\x45\x96\xdd\x8f\x02\x92\x77\x67\x6d\x44\ \x9d\xeb\xa5\x76\x96\x42\xef\xdf\x81\x4e\x74\x9b\x07\xb9\x94\x0c\ \x1c\x7f\xa5\x6e\x4d\x4d\xd4\x29\x1c\xac\xbf\x22\xaf\x22\xac\x8b\ \xad\x4e\xe2\xbd\x15\xe7\x40\xb6\xf4\xc0\x0f\xa1\xf1\xde\xb1\xfa\ \x87\x4b\xba\xb3\x3a\xd4\x6b\x4f\xea\x5d\xf1\x52\x65\x2a\xe8\x82\ \xb1\x0d\x91\xb3\x0a\x3c\x73\x14\x99\x6e\x13\xea\x07\xdc\x3c\xd0\ \x8e\x97\x19\xe1\xaa\xa0\x90\x6a\xa3\xd3\x59\xce\x89\x71\x15\xd2\ \x9f\x63\xae\x97\x3f\x07\x8a\x8e\xa1\x7d\x3d\xaa\x95\x46\x20\xe7\ \x15\x8f\xd2\xae\x82\x66\x09\x0f\xf2\xdf\x8f\x8a\xd0\xbd\x43\x35\ \xb1\x07\x77\x41\xcf\xf5\x0f\x35\x27\x7c\xa9\x66\xfc\x6d\xd8\xd6\ \xe5\xb4\x77\x63\xb0\xa2\xda\xda\x2b\x1f\xe5\xae\xb2\x39\x76\xd9\ \x45\x75\x90\xf5\xbf\x0f\x1b\x13\xa7\x24\x11\x9f\x14\x3e\xab\x7a\ \xe5\x8c\x11\x00\x91\xae\xd8\x1b\x52\xdb\xbd\x44\x16\xe2\xe6\xde\ \xdb\x64\xc4\xd2\xff\x00\x51\x1e\xd1\xf6\x15\x97\x7b\x77\x2c\xf2\ \xfb\x9c\xbb\xf8\xec\x28\x32\x39\x76\x2b\x19\xfb\xb5\x58\x28\x88\ \x61\x46\x5c\xd5\x93\x43\x95\x7d\xc0\x13\x96\xe4\xfc\x53\xb7\x31\ \x34\x97\x0a\x80\x7b\xb4\x0c\xe7\xed\x43\xb0\x84\x34\xc1\x58\xed\ \xf5\x39\xf8\xa7\x6c\x07\xab\x77\x2c\xc7\x81\xb0\xa6\xf4\x12\x36\ \xd3\x01\xc6\x2b\xad\xd9\x96\x60\x3e\x77\xad\x2b\xc9\x16\x38\xce\ \x69\x0b\x24\x32\x4a\x5f\x1b\x03\x5b\xef\x1d\x8d\x18\xcf\xb2\xb9\ \xb7\x1b\xd4\x20\xda\xa6\xad\xe6\x0a\x2c\x51\xaf\x0a\x07\xe9\x5c\ \xc3\x02\xaf\x43\x9d\xc2\xa1\xfb\x57\x3a\x33\xc6\xfd\x41\xdb\xfa\ \x45\x2f\x70\xf9\x63\xe2\xaf\xac\xe8\x79\x4f\x32\x1f\xda\x97\x39\ \x63\x5a\x82\xd1\x0c\x9d\x4d\xc0\xdc\xff\x00\xb0\xa9\xf7\x3c\x99\ \xc6\x49\x3c\x57\x1e\x02\x0f\xd7\xef\x4f\xda\xc4\x96\xd0\xfe\x22\ \x5e\x71\xed\x15\x9b\x74\x2d\x10\x8e\xc6\x0d\x6f\xbc\xac\x36\x1e\ \x2b\x3e\x79\x4b\x39\x77\x39\x24\xd5\xae\x25\x79\xa5\xce\x0b\x33\ \x6c\x00\xa3\x7a\x31\xda\x47\xea\x5c\x10\xd3\x1e\x13\xfa\x69\x8c\ \xd7\x37\xb5\x02\x38\xf4\xff\x00\x36\x5e\x7b\x29\xaa\x3b\x7a\x8d\ \xe9\xaf\x27\x93\x56\x29\x24\xc4\xbc\x87\x48\xf1\x44\x8b\xd2\x8d\ \x72\xa7\x71\x5b\xb9\x6b\xa4\x04\x0c\xed\xc1\xa2\xdb\x4a\x63\x7c\ \x37\x07\x9a\xe9\xe3\x1f\x52\xd0\xb3\x9e\x6a\x0d\x58\xf4\xcd\x6a\ \xf0\xe4\x15\x71\xb1\xac\xb8\x83\x21\x68\x5f\x66\x43\x83\x46\xb2\ \x9c\xc3\x20\x0c\x7d\x87\x9f\x8a\xbf\x59\x8c\x65\x2f\x23\xdf\xb3\ \xe3\xb8\xac\x4e\x2a\x8b\xd2\x18\x28\x7d\x86\xa1\x51\xd4\xee\x4f\ \xd1\xe6\x81\x69\x22\xa4\xc1\xb3\xed\x61\x83\x42\xea\x39\x17\x43\ \x3c\x1e\x2a\x59\xf6\x3d\x09\x0b\x24\x09\xea\x38\xcb\xfe\x51\x42\ \x95\xde\x46\xf5\x1f\xbf\x02\xab\x18\xd6\xc5\xdb\x7c\x53\x16\x50\ \x34\xd2\x06\x23\xdb\xd8\x79\xad\xc9\x27\x35\x16\xe9\xf6\xaf\x3c\ \xca\x31\x9c\x9d\x85\x7b\x1e\x93\x69\x1d\x9d\xa9\x91\x80\xc8\xfd\ \xe8\x3f\xc3\xfd\x35\x63\x8c\x48\xe3\x0d\x8c\x9f\x81\x51\xd6\xaf\ \x32\xde\x8c\x7b\x01\x5c\xb2\xb7\x3b\xa8\xa5\x3a\x8d\xc3\x4f\x70\ \x4e\x76\x15\xd1\x25\xcc\x6b\x94\x39\x07\x90\x7b\xd0\x6d\xd7\x54\ \xc0\x7c\xd6\x90\xc6\x77\xe2\xb5\x95\xd4\xd1\x18\xfd\x46\xc6\x2b\ \x8c\x90\x82\x09\x7c\x8f\xa5\xbf\xe2\xb1\xae\x23\x78\xa4\x29\x28\ \xc3\x0f\xde\xbd\xa4\x90\x47\x2c\x64\x66\xb3\x7a\x8f\x4f\x0e\x9a\ \x5d\x75\x01\xc1\x1c\x8a\x98\xe7\x3a\x34\xf3\x35\xa9\xd2\xee\xcb\ \xc6\x23\x63\xfc\xc4\xce\x9c\xfe\x61\xe2\x93\xbe\xb5\x7b\x77\xfe\ \xa5\xec\xd4\x05\x25\x58\x30\x38\x20\xe4\x1a\xd2\x36\x58\x34\x32\ \x89\x23\x3b\x67\x50\xf8\x3d\xc5\x21\xd6\x50\xac\x8e\xc9\xc3\x8c\ \x83\x4d\xd8\x5c\xac\xe9\xa1\xfe\xbe\xff\x00\xf3\x53\x73\x09\x78\ \x4c\x7d\xc6\xe9\xff\x00\x14\xdf\x2a\xc9\x85\xd5\x2d\xf5\x01\xbf\ \x14\x58\x13\x4a\x7a\xae\x72\x5b\x7a\x01\x4d\x2c\xf1\xf6\xe4\x53\ \x76\x84\x39\x84\x73\xbd\x69\x0c\x7f\x81\x66\x7f\xf9\x24\xdc\xfd\ \xbb\x0a\x3d\xb3\x08\x2d\x37\x3c\x72\x7e\x69\x77\x26\x5b\xa2\x49\ \xce\x9d\xfe\xf5\x17\xcc\x70\xb0\xae\xe4\x6e\x69\x20\xa4\xf2\xb5\ \xc4\x81\x57\x38\xa7\xad\xa3\x11\xc6\x16\x85\x65\x6f\xa0\x6a\x3c\ \xd3\x20\x56\xad\x13\x5d\xda\xa2\x56\x08\x3d\xc7\x7f\x14\x9d\xcd\ \xc1\xf3\x8f\x8a\xce\xed\x06\x9e\xe5\x23\x07\x1b\x9a\x46\x59\x9d\ \xd1\xf3\xcb\x6c\x28\x6c\xc5\x8d\x70\xd8\x67\xfa\x77\xa6\x80\xee\ \x9b\xdf\xa5\x78\x1b\x0a\xa2\x8d\x2b\xf2\x6a\x57\x76\x2c\x69\xbb\ \x28\x06\x9f\x5e\x73\x85\x1b\x80\x7b\xd2\xdd\x09\xb2\x81\x63\x8f\ \xd7\x9b\x60\x38\x06\x85\x3c\xb2\xdd\x4e\x15\x14\xb1\xe1\x54\x51\ \x24\x69\x2f\x26\xd2\x83\x08\xbf\xd8\x0f\x26\xba\x59\x23\xb7\x43\ \x14\x07\x73\xf5\x3f\x73\xf6\xf8\xac\xce\xf7\x7b\x55\xa2\xf4\xed\ \x01\xd3\x87\xb8\xee\xdf\x95\x3e\xd4\xb4\x92\x7b\xcb\x6e\xce\x79\ \x63\x54\xcb\x3e\xc0\x6d\xe0\x55\x91\x54\x1d\xfd\xc7\xe3\xb5\x6b\ \x48\xab\x33\x31\xdc\xe6\xbb\x43\x63\xe9\x34\x50\xf8\xd8\x05\x1f\ \x6a\xba\x48\x78\x6c\x11\xf6\xaa\x07\x1b\x8e\xdf\xda\xa6\x48\xc3\ \x2e\xa4\xa3\xf5\x1b\x07\x85\x8d\xc5\xb0\xd7\x0b\x6e\x31\xda\x94\ \x8e\x42\x0e\x57\x63\xdc\x56\x65\x97\xa1\x53\x90\x70\x68\xd6\xb3\ \x85\x1e\x9c\x9b\xa1\xdb\x7e\xd5\x0c\x16\x45\xca\xec\xd4\x22\x08\ \x38\x35\x7b\x13\x24\x46\x09\x8c\x64\xe5\x1b\x74\x35\x37\xd9\x96\ \xcb\x5f\xe7\x8f\x9a\xba\xb0\x96\x1f\x45\xf9\x07\x28\x7c\x1a\x1a\ \x92\xac\xc1\xc6\xc7\xda\xe2\x94\x0a\xd5\xb5\x44\xd5\xe9\x7f\x84\ \xa1\x49\x88\x2e\x33\xa4\x0c\x57\x97\x40\x61\xba\x68\xb9\x07\x71\ \xf6\xaf\x5d\xfc\x24\x9f\x85\xe9\xad\x77\x21\xe7\x65\x1e\x6b\x39\ \xdf\xaf\x0b\x1b\x1d\x56\xe9\x6d\x6d\xfd\x24\x3e\xe2\x37\xc5\x60\ \x3b\x16\x62\xc4\xe4\x9a\x25\xdc\xcd\x3c\xc6\x46\x3c\xd0\xa9\x86\ \x3e\x31\x0c\x59\x15\x46\xd4\xc7\x6a\x65\x67\x47\xe0\x71\x59\xd4\ \x6b\x45\x25\xb2\x78\x14\xca\x7b\x58\x6e\x49\x04\x60\xb9\x6c\x0a\ \x98\xee\xa2\x71\x82\xe0\xfc\x83\x59\x97\xf3\x09\x64\xd2\xbf\x4a\ \xfe\xf4\xac\xb9\x8c\x65\x99\x57\xee\x71\x58\xf0\xd9\xb6\xb5\xec\ \x11\xc9\x19\xd4\xa3\x07\xbf\x63\xf7\xac\x0e\xa3\x62\xf0\x31\x65\ \x04\xa7\xfa\x53\x76\xb7\xce\x98\xc3\x87\x5e\xe3\x39\x06\x9d\x47\ \x8a\xe1\x3f\x97\x8c\x9e\x63\x27\xfd\x29\x37\x89\xdb\xce\x23\x32\ \x30\x65\x38\x22\xb5\x6c\xae\x44\xe3\x49\x38\x61\xbf\xeb\x42\xea\ \x36\x38\x26\x48\x41\xdb\xea\x52\x37\x14\x84\x6c\xd1\xb8\x65\x38\ \x22\xb7\xdc\x43\x3d\x5e\xd8\x86\xf5\x90\x6e\x39\x14\x0b\x46\xc1\ \xc0\xdb\xf3\x2f\xdf\xc5\x69\xdb\x4c\x97\x56\xe5\x4e\x35\x63\x04\ \x56\x55\xcc\x6f\x6f\x30\xc7\x19\xca\xd2\x5f\x41\xe8\xce\x2e\x01\ \x1f\x9c\x66\x89\x68\xba\xa6\x91\x98\x64\xea\xa5\xa0\x7d\x51\x82\ \xbc\xae\xe3\xfd\xc5\x33\x03\xe9\x9b\x23\x89\x06\x7f\x5a\xd4\x0d\ \x8d\x85\x0e\x59\x82\xec\xa7\xf5\xa1\xdc\x4c\x73\xa7\xf6\x14\xa4\ \xd2\x1c\xe0\xff\x00\x6a\x02\x4d\x2f\x3b\xef\x4b\x92\xcc\x7c\xe6\ \xa4\x29\x66\xdf\x7a\xd3\xe9\xf6\x62\x35\xf5\xa6\x1f\x20\x1a\x99\ \x65\x20\x5e\xd6\xd4\x24\x66\x69\x86\x30\x32\x05\x27\x78\xc0\xb3\ \xb2\xf0\xdb\xd3\x7d\x56\xe8\xcb\x21\x44\xfa\x45\x24\x41\x2b\xc6\ \x45\x4c\x65\xee\xaa\xf6\x56\xfa\x86\xb9\x3f\xc3\x5d\xcf\xcd\x5a\ \xe6\x5f\x59\xf1\x9d\x31\xaf\x00\x50\xb5\xcb\xe9\x08\xf2\x0a\x8e\ \x2a\x84\x7f\x51\xfe\xd4\xf1\xbb\x41\x1e\x7c\x27\xa7\x16\x42\xff\ \x00\xad\x0f\x4e\x0e\x5c\xd5\x24\x95\x23\x5c\xf1\xfe\xb4\xbf\xe2\ \x4c\x87\xda\x8e\x40\xec\xa2\xb5\x31\xd0\x68\x39\x63\xa5\x14\xb7\ \xc0\xa2\xc5\x6b\x33\x9c\xbe\x54\x78\x1c\xd2\xa8\xfd\x43\x4e\x22\ \x68\xe0\x1e\x02\xea\x3f\xde\xb8\x5b\x5c\x3b\x89\x1e\xf2\x76\x90\ \x70\x43\x60\x7f\x6e\x29\xaa\x34\xe2\xe9\x4b\x32\x1f\x4e\x72\x1c\ \x76\x6a\x5a\x7b\x7b\x9b\x56\xc4\xd1\x9d\x3f\xd4\x38\xa8\x49\x7a\ \x94\x64\x1d\x69\x26\x3b\xb2\xe1\x8f\xea\x2b\x42\xcf\xad\x44\xea\ \x20\xbd\x89\x97\x56\xd9\x61\xb5\x63\xef\x14\xad\x8d\xfc\xf6\x5f\ \xcb\xd3\xea\x41\xfd\x3c\x91\x45\xbe\xb6\x8e\xe9\x3f\x15\x62\x41\ \xfe\xa4\x1c\x8a\x50\xe2\xa2\x32\xf1\x4b\xea\xc0\xfa\x1c\x7f\x63\ \xfa\x56\xee\x1c\xee\x22\x88\xc4\x36\x0e\x43\x0e\x68\x8e\x04\x83\ \xc1\xa3\xbc\x90\x5e\x26\x2e\x53\xd1\x9c\x70\xeb\xc3\x52\xae\x1a\ \x29\x74\x39\x07\xc1\x1d\xe8\x2a\x41\x07\x07\x63\x56\x95\xb5\x44\ \x18\x8f\x76\x71\x9f\x22\xa2\x53\x9c\x79\xa0\xfb\xe7\x99\x61\x87\ \x76\x63\x8a\xa0\xfd\x1a\xcd\xef\xfa\x88\x03\xe8\x5d\x8b\x1e\x00\ \x15\xe9\x2e\xe6\x56\x45\x82\x21\xa6\x28\xc6\x00\xf3\xf3\x4b\x58\ \xc2\x96\x56\x42\xde\x3f\xa8\x8f\xe6\x37\x9f\x8a\xba\x2b\x33\x00\ \xa0\x93\x59\xd7\xb1\x00\x12\x70\x06\x4d\x39\x6d\x66\xe5\x75\x11\ \xfd\xe8\xd6\x96\xe9\x02\x7a\x92\xee\xde\x2a\xb7\x17\x6c\x4e\x10\ \xaa\x81\x58\xb9\xdb\xc4\x5d\x14\xba\x8f\xd3\x9b\x4e\x6a\x92\xb1\ \x29\xe9\x26\x40\xee\x68\xf2\x24\xb3\x39\x25\x46\xc3\x76\xec\x2b\ \x2b\xac\xf5\x48\x6d\x50\xc3\x6a\xe2\x49\x8f\xd5\x20\xe1\x7e\xd5\ \x7b\x9a\x13\xd4\xae\x61\xb2\x8f\x4e\x43\x4c\x46\xc8\x3b\x7c\x9a\ \xc8\x09\x25\xd3\x99\xa7\x62\x4b\x1a\x8b\x68\x9a\x56\xf5\xa5\x24\ \xe4\xe7\x7e\x5a\x9f\x86\x3c\x8c\x9d\x80\xad\xc9\xa4\x29\xf8\x52\ \x87\x54\x65\x90\xf9\x14\x48\xee\x6e\x21\x20\xba\xea\xff\x00\x32\ \x9c\x1a\xbd\xe4\xe1\x13\x3f\xd8\x79\xa0\xb4\x97\x18\x19\x80\xe0\ \xf9\x34\x1a\x96\xb7\xb1\xce\x06\xa6\xf7\x70\x1b\xfe\x68\x77\xf6\ \xa2\x4f\x7a\x00\xaf\xf1\xc3\x7d\xab\x37\x28\x5b\x20\xb4\x4f\x4c\ \x5b\xde\x3c\x5e\xd9\xb0\xcb\xe4\x56\x75\xf8\x02\x46\x78\x64\xc8\ \xc8\x61\xcd\x3c\x4c\x77\xb6\xc4\x70\xe2\xa2\x78\x92\xe6\x3d\x68\ \xc0\x9f\x23\x9f\xd6\x92\x05\xe1\x97\x6d\x98\x53\xb1\xd0\x3b\x43\ \x31\x46\xe7\x34\xe4\x47\xdb\xa0\x7d\xd4\xd0\xae\x51\x6e\xe1\xf5\ \x13\x69\x17\x91\xe6\x87\x6b\x21\x65\xd3\x9c\x32\x9d\xaa\xc0\x66\ \x90\x97\x62\x76\x20\x55\x23\x1a\x8f\xcf\xee\x68\xd2\x28\x65\xf5\ \x17\xb8\xc3\x0a\xa5\x89\x1f\x89\x4c\xf1\xa8\x66\xb4\x35\x3a\x65\ \x90\x8d\x04\xf3\x8f\xfa\x54\xd0\xba\xc5\xe6\x47\xa6\xa6\x99\xeb\ \x17\x26\x35\x2a\x2b\x09\xd8\xb3\x12\x7b\xd7\x2c\x66\xfe\xd5\x5c\ \x37\x34\x54\x5c\x2e\x0d\x44\x4b\xdc\xd4\xc8\x74\xae\x6b\xb4\x88\ \x0c\x8b\xb9\x00\xe2\xba\x34\x57\x3a\x58\xe1\xbb\x67\xbd\x4b\x12\ \x4e\x4d\x4c\x41\x58\xe1\x94\x1a\xd5\x82\x45\x8b\x31\xe1\x4f\xdc\ \xd1\x97\xa7\xc8\x17\xf2\x8f\xd4\x54\xc3\x10\x27\x09\x23\x29\xf0\ \x77\xa3\x24\x13\x9e\x4e\xc3\xbd\x62\xec\x0d\x6d\x11\x37\x92\x40\ \x7e\x05\x4b\x98\xd1\x72\xab\xa4\x79\xef\x5d\x70\x56\x2f\xa9\xb5\ \x1f\x8a\x52\x47\x67\x39\x35\x66\x3f\x91\x69\x25\x66\x3b\x6c\x2a\ \x8c\x75\x2e\x96\x01\x87\x83\x57\xb6\x89\xa5\x7c\x0e\x3b\x9a\xb5\ \xcb\xa8\x6d\x11\x81\x85\xf8\xe6\xad\xb3\xa1\x47\x65\x27\x65\x15\ \x42\x01\xf8\xae\xae\xa0\xa4\x84\xae\xd9\xd8\xd5\x5d\xb5\x15\x07\ \xb5\x75\xc3\x70\x3b\xd5\x19\x82\x82\x7b\xd4\xa2\x27\x62\x4e\x95\ \x19\x2c\x70\x00\xef\x5b\x1d\x22\xcc\x5a\xc5\xad\xc0\x32\xb7\x27\ \xc7\xc5\x03\xa2\xd9\x85\x02\xe6\x61\xef\x3f\x40\x3f\x96\xb5\x11\ \x0b\x1f\x8e\xe6\xb3\x47\x46\x85\xdb\x03\xfb\xd3\x70\x98\xe0\x5c\ \x82\xab\xe5\xdc\xe0\x56\x67\x52\xea\x90\x59\xa9\x8e\x3c\x49\x20\ \xfc\xa0\xff\x00\xa9\xac\x5b\xbb\x9b\xcb\xd7\xd5\x34\x87\x1d\x87\ \x61\x59\xd5\xc9\x5e\x9e\x4e\xab\xd3\x52\x5c\x48\xe6\x66\x1d\xfb\ \x0a\x15\xe7\xf1\x0d\x8c\x03\xf9\x10\x29\x3c\xf1\x5e\x55\xe1\x90\ \x6e\x0e\xf5\x06\x30\x83\x54\xad\x92\x78\x1e\x6a\x78\x43\x67\xfa\ \xaf\x5b\xbe\xbf\x52\x9a\xbd\x38\x87\x61\xb5\x2b\x67\x6d\xac\x7a\ \x92\x6c\x9d\x87\x76\xa2\xda\xdb\xe5\x44\x93\x8c\x2f\xe5\x4f\x3f\ \x7a\x6e\x24\x2c\x78\xda\xb7\x24\x9d\x22\x21\x8f\x51\xce\x36\x15\ \x6b\x87\x00\x15\x1b\x79\x34\x49\x59\x63\x4c\x01\xbd\x67\xdd\x33\ \xcb\x2f\xe1\xa3\xdd\xdf\x9f\x8a\x09\xb5\x1e\xbc\xcd\x3b\x0f\xe5\ \xc7\xb2\x8f\x26\x9c\xd0\xa0\x8d\x7e\xe7\x6e\x73\xda\xa2\x14\x48\ \xd4\x22\x8f\xe5\xc5\xff\x00\xf4\x6a\xb9\x26\x4c\x9e\x49\xab\x20\ \x39\xb4\x47\x18\xc7\x3d\xa8\x17\x1d\x36\x45\x24\xc4\x4f\xfd\x27\ \x8a\xdb\xe9\x89\x11\xb8\x60\xec\x03\x01\xed\x07\x6c\xed\x5d\x73\ \xac\x48\xc0\x8c\x6f\xc5\x67\x7c\x8f\x36\xa6\x7b\x57\xc8\x0d\x1f\ \xc7\x63\x4d\x2c\x90\xdd\xa6\x92\x34\xc8\x29\xfb\xa1\x1b\xae\x99\ \x50\x10\x7e\x2b\x3a\xe2\xc1\x87\xf3\x2d\xdf\x20\x6f\x8c\xee\x2a\ \x76\x02\x0c\x96\xf3\x7c\x8f\xde\xa6\xe5\x41\x1f\x89\x8b\x91\xf5\ \x28\xae\x49\x84\xa3\xd3\x9b\xda\xe3\x60\x4d\x40\xd7\x0c\x9b\xf0\ \x7f\xb1\x14\x07\xb5\x94\x11\xa8\x6e\xad\xb1\x15\x07\xd9\x36\xde\ \x76\xa5\xc9\x11\x49\xa9\x77\x8d\xb9\xf8\xa3\x1f\x72\xe7\x92\x3f\ \x7a\xd4\x1a\x3d\x64\xeb\xb6\x8a\x50\x7e\xa0\x2b\x3e\x25\x2e\xe1\ \x40\xf8\xa7\x6c\x5b\xf1\x16\x12\x5b\xb6\xe5\x3d\xcb\x4a\x5b\x9d\ \x17\x0b\x9d\xb0\x77\xa9\x8f\x1c\x02\xb2\xe1\xf4\x8e\xd4\x09\xf3\ \xea\x63\xb0\xad\x19\x21\x02\x53\xdb\xe6\x95\xba\x8f\x9c\x60\x91\ \xde\xb7\x8e\x41\x77\x18\x18\xfd\xe8\x91\x00\x13\x23\xbd\x0c\x1d\ \xb0\xd5\x2a\x4a\x6f\xc8\x35\xa0\xcd\xbc\x82\x32\x49\x07\x35\x17\ \x17\x4c\x46\x01\xc0\xa5\xda\x42\x78\xda\xa8\x77\xa9\xe3\xee\x89\ \x62\x49\xc9\xa9\x89\x0b\xb6\x05\x54\x0c\x9c\x0a\x7e\xda\x2f\x4e\ \x20\x74\xee\x79\xa6\x57\x42\xcc\x9e\x8c\x1a\x17\x96\x1b\xfd\xa9\ \x67\x8d\x47\xb9\xce\x05\x1a\xf2\xe1\x73\xb9\x05\xbc\x0a\x4e\x47\ \x67\x39\x63\x58\xc6\x5f\x62\xb5\x0c\x40\x52\x4f\x6a\x93\x4b\xdc\ \x3e\x5b\x48\x3b\x0e\x6b\x62\xac\xd9\x62\xed\x4e\x74\x8b\x43\x33\ \x89\xe6\x5f\x60\xfa\x41\xef\x42\xe9\xd6\xad\x73\x28\x67\x18\x8d\ \x7f\x7a\xd8\x9a\x48\xad\xa0\xd4\xc4\x05\x5e\x05\x62\xd0\x52\x55\ \x14\xb3\x90\xaa\x39\x26\xb2\xba\x8f\x53\x79\xb3\x0d\xa6\x55\x38\ \x2f\xdc\xd2\xbd\x42\xed\xee\x5b\xde\x4a\xc6\x3e\x94\x1d\xea\x90\ \xc5\x3c\xab\xed\x5d\x0b\xe4\xf3\x4d\x6c\x42\xac\x71\xee\xcc\x33\ \xe4\x9a\xba\x49\x1b\x26\xa5\x60\x40\xa2\x27\x4f\x8f\x19\x63\x96\ \xf9\x19\xa8\xff\x00\xc2\xd6\x49\x32\x06\x4f\x7d\x35\x78\x00\x33\ \x6b\x6d\x10\xa9\x76\xf8\xe0\x53\x16\xd6\x82\x3c\x4d\x39\xd5\x21\ \xdc\x2f\x8a\x69\x23\x86\xd1\x02\x46\xa0\xbe\x3c\x6c\x2a\x8a\x0b\ \x3e\x49\x24\x9a\x41\x31\x82\xef\x93\xbd\x1f\x64\x04\xd4\xa2\x04\ \x5f\x9a\x0c\xec\x59\x82\x2f\x7a\x80\x37\x72\x84\x8d\xa6\x3e\x70\ \x83\xc9\xaa\xf4\x94\x31\xdb\xbd\xe3\xee\xf2\xe5\x63\x3f\xea\x69\ \x6b\xd7\x37\x17\x6b\x04\x5b\x84\x3a\x57\xe4\xf7\x35\xab\x22\x2a\ \xcd\x1d\xba\xfd\x10\x2e\xf5\x28\x1b\x82\xaa\xb0\x8e\x79\x3f\x7a\ \xa3\x02\xa7\x06\x9d\xe9\x90\x8b\x8b\xb6\x91\xfe\x91\x4e\xc9\x05\ \x99\x04\x12\x7f\x4a\xd6\xf5\xc0\xcd\x8a\xed\xc2\xe9\x93\xdc\xbf\ \xb8\xfb\x53\x6b\x79\x11\x40\x19\xf2\x7b\x1a\x8f\xc0\xc2\xcc\x4a\ \x07\x23\xe4\x80\x29\x9b\x7e\x90\x64\x19\x58\x76\x1d\xc8\xdb\xfb\ \x9a\xcd\xb8\x85\x9a\x48\xa5\xdb\x2a\x7e\xc6\x94\xb8\x89\xe3\xf7\ \x21\x38\xad\x79\x3a\x44\x41\x4e\xb7\x85\x1b\xc0\x6d\xff\x00\x61\ \x4b\x4f\x61\x71\x1a\xe5\x1c\x48\xa3\xb6\x73\x59\x99\x63\xea\xae\ \x99\x13\x08\xe7\xff\x00\x10\x69\x61\xc3\x0a\x0b\x96\x8f\x11\xcb\ \xee\x4e\xcc\x29\xe9\xe1\x52\x7d\xc3\x41\xf9\xe0\xd2\xce\xac\xa3\ \x4b\xae\x54\xf6\x3d\xeb\x7a\x40\x7e\x83\x83\x86\x56\xfd\xea\x62\ \x6f\x4c\x84\x27\x2a\x7e\x93\x5c\xca\x50\x7b\x77\x5e\xea\x7b\x55\ \x36\x23\xe0\xd4\x0e\x5a\xca\x60\xb8\x59\x07\x1d\xc7\xc5\x5f\xa8\ \xc6\x23\x9f\x5a\x7d\x0f\xee\x53\x4a\x42\xe4\xfb\x1b\x91\xc7\xcd\ \x39\x19\xf5\xec\x8c\x47\xeb\x8b\x75\xfb\x53\xde\xc1\xa7\x94\xc9\ \x02\x49\x9e\x46\xff\x00\x7a\x5d\x66\xc6\xcd\x53\x6a\x75\xc0\xf1\ \x77\x1e\xe5\xff\x00\x7a\x0b\x56\xb1\x90\x11\x8c\x6f\xf0\x68\x44\ \x11\xb0\xdc\x57\x63\x35\xda\x1b\xb5\x6a\x5d\x0a\xd7\x54\x95\x61\ \xc8\x35\x15\x76\x2c\x84\x06\xc9\xa2\x49\x73\x23\x2e\x9c\xe0\x7c\ \x50\x70\x7c\x54\x81\x52\x88\xae\xae\x3c\xd7\x50\x06\xe2\x4c\x0c\ \x0e\x6a\x7a\x7d\xab\x5c\x4b\xbe\x74\x0e\x4f\x9a\xeb\x1b\x67\xb9\ \x9b\x27\xe9\xee\x6b\x46\xea\xe2\x2b\x28\x74\x20\x05\xb1\xb0\xac\ \x5a\x09\x71\x34\x36\x70\x0e\x32\x07\xb5\x45\x64\x4b\x2c\xd7\x73\ \xf1\xa8\xf6\x1d\x96\xad\x14\x53\x5e\x4d\xad\x89\xc1\x3c\xff\x00\ \xc5\x6d\xd8\x74\xe8\xe0\x88\x3c\xa9\x81\xd9\x7c\xfd\xeb\x3b\x93\ \xb1\x9d\xd3\xba\x6b\x31\xd6\xd8\x63\xdd\x9b\x81\x5a\x31\xdb\xdb\ \xa0\xf7\x96\x73\xf1\xb0\xa3\xbe\x58\x0c\xfb\x50\x70\x05\x25\x7d\ \x72\x23\x53\x1c\x67\xdc\x79\xf8\xab\xbd\x83\xcd\x25\x94\x7b\x88\ \x00\xf1\x96\x34\xac\xf7\x8f\x20\xd1\x10\x08\xbe\x40\xc5\x2b\xee\ \x90\xea\x62\x71\xe4\xd5\xd4\x16\xf6\xa8\xc0\xab\x31\x10\x06\x5b\ \x03\x24\x9e\xe7\xbd\x35\x0c\x61\x13\x27\x9a\xeb\x78\x70\x32\x7b\ \x55\x98\x83\x96\x3f\x4a\xd2\xd0\x39\x8e\x07\xc9\xdc\xd2\xd2\xbf\ \xa3\x67\x2d\xc1\xe4\x8d\x2b\xf7\xab\xdc\x31\xd3\xf2\xdb\x9a\x0f\ \x5d\xfe\x5f\x4d\x86\x2f\xea\x39\x34\xa2\xbf\xc2\xf0\x97\xea\x3a\ \x88\x07\xd1\x88\xb9\x07\xc9\xa7\xad\xff\x00\xc4\xb8\x27\x9c\x1a\ \x5f\xf8\x55\xd5\x7a\xb3\xc4\xc7\x1e\xb4\x65\x57\xe4\xd1\xe4\x06\ \x3b\x99\xc7\xf9\x6a\x7b\x0e\xf4\xc3\xa3\xa6\x92\x36\x67\x62\x28\ \xb1\xa0\x2f\x8f\x1b\xb1\xf1\x43\xb6\x5f\x4e\xd6\x35\x3d\x97\x3f\ \xa9\xa7\xfa\x7c\x46\x31\xae\x45\xce\x91\xea\x30\x3f\x1c\x0f\xef\ \x8a\x99\x5d\x4d\x91\x63\x2c\x76\x80\x6a\x0b\xac\x0e\x48\xd4\x54\ \xf8\x03\x8d\xbc\xd2\xb3\x5f\xca\xec\x49\x19\xcf\x77\x62\x7f\xed\ \x40\xea\xac\xff\x00\x8c\x31\x17\x00\xa0\xf7\x31\x38\x03\xcd\x2e\ \x90\x7a\x8b\xaa\x39\x63\x93\xec\x6b\x13\x19\xdd\x53\x7f\x8a\x9b\ \x23\x05\x07\xff\x00\x88\xab\xad\xcc\xf9\xd4\x4a\x31\xfb\x0a\xce\ \x6f\x52\x33\xef\x0c\xbf\x3d\xaa\x56\x56\x18\x39\x07\xed\x5a\xf1\ \x88\xd2\x6b\x88\xa5\x04\x5c\x45\x9c\xf7\xc6\x7f\x7a\x5e\x6e\x9e\ \x92\x29\x6b\x79\x01\x1f\xd0\xc6\x80\xb3\xe7\x92\x41\xa8\x37\x0d\ \x13\x64\xe4\x7c\x8a\x4c\x6c\xe9\x4a\x5c\xdb\xc9\x0c\x85\x5d\x08\ \xf8\xa5\xa5\x8f\x03\x5a\x0c\x8e\xe2\xb6\x92\xee\x19\xe3\xf4\xe7\ \x01\x87\xcf\x22\x97\xbb\xb3\x08\xbe\xa5\xbb\x6b\x4e\xe3\xb8\xab\ \xbf\x55\x19\x07\xb1\x1d\xa9\x8b\x69\x4a\xb0\x75\xe4\x73\x55\xb8\ \x87\x48\xd7\x1e\xe3\xb8\xf1\x41\x56\xd2\x75\x0f\xd4\x55\x81\xf9\ \xbf\x95\x70\xb3\x47\xf4\xb6\xe3\xfe\x2b\xae\x95\x75\xeb\x4c\x69\ \x71\x91\xf1\x54\xb7\x71\x24\x7e\x93\x1e\x77\x53\xe0\xd4\x21\x20\ \x18\xdb\xf4\xf8\x35\x67\x63\x93\x9a\x91\xbf\xc5\x45\x41\x24\x1c\ \xd6\xf4\x2e\x37\xd8\xb0\x1f\x7a\xe2\x0e\x3e\xa5\xfe\xf5\x45\xd6\ \xdb\xad\x10\x47\x26\x3f\x2d\x2c\x15\x60\xbe\x73\x55\x24\x62\xba\ \x65\x65\xe4\xe7\x3e\x2a\x94\xd7\x03\xab\x8f\x15\xc4\xe2\x81\x3c\ \x9d\x85\x03\xd7\x37\x11\xda\x43\xe9\x44\x32\xf8\xc5\x2d\x6f\x6e\ \xf2\xbf\xab\x70\x49\xce\xfa\x7c\xd4\xda\xc5\xee\xf5\xa5\xdd\x8f\ \x00\xf6\xa6\xa1\x0d\x24\x81\x40\xe4\xd7\x3d\x87\xba\x64\x68\x08\ \x3a\x46\xdf\xb5\x35\x3b\xeb\x6c\x93\xed\x14\x34\x55\x86\x2d\x3f\ \xdc\xd2\x77\xd7\x78\xf6\xa9\xdf\xc7\x8a\xce\xb7\x55\xdd\x42\xef\ \x03\x42\x73\xfe\x94\x80\x52\x7d\xcd\xff\x00\xdd\x58\x29\xfa\x9f\ \x93\xda\x8b\x14\x4c\xed\xbd\x6e\x4d\x22\xb1\xa1\x73\x8e\x00\xe2\ \x9c\xb6\x83\x7c\x01\xbd\x4c\x10\x92\xc1\x54\x6e\x68\xf7\x85\x6d\ \xe3\x11\x27\xd6\x7e\xa3\xe2\xa5\xcb\x9d\x40\x09\x88\x2c\x22\x8f\ \x7f\x27\xc9\xaa\x5d\x29\x0e\x20\x5d\xf0\x77\xf9\xa6\x7a\x5c\x25\ \xb5\x4d\x8f\xa0\x6d\xf7\xa5\x54\x86\xbd\x1a\xce\x37\xe4\xd3\x7c\ \xe8\x29\x21\xcb\x6a\xed\xaa\x9d\xbd\xb6\xb6\xea\x16\xe9\x99\x82\ \xb2\x8c\x50\x64\xb6\x9a\x27\x3a\xe3\x38\xf2\x57\x20\xd0\xc4\x68\ \x4e\xfe\x9a\xfe\xa4\x55\xbc\x8b\x59\xd8\x47\x65\x74\x97\x53\xdd\ \x07\xf4\xb7\x55\x5e\x49\xa2\x42\xa6\x7b\x86\x66\x18\x0e\x72\xc3\ \xc0\xec\x2a\x88\x90\x29\xcb\x4a\xbf\xfe\x00\x93\xfd\xcd\x3b\x00\ \x52\x8a\x23\x18\x0d\xc5\x40\xdd\x94\x61\xdf\xd5\x93\x1a\x57\x80\ \x78\xa6\xe4\x94\x45\x6a\x92\x9e\x25\x97\x50\xf9\x55\xff\x00\xbe\ \x69\x48\x12\x5b\xbb\x94\xb6\x80\x1d\x24\x85\xdb\xfd\x69\x8f\xe2\ \xcd\x31\x4e\x2d\xe3\xfa\x20\x88\x22\xd7\x2c\xae\xec\x8a\xc4\xba\ \x8e\x4b\xbb\x7b\x97\x19\x2d\x8d\x64\x79\xde\xb2\x21\x91\xe2\x7c\ \xa9\x23\x15\xe8\x7a\x3c\x82\x2b\xec\x30\xca\xb0\x2a\x47\x9a\x5b\ \xf8\x97\xa4\xb4\x0f\xeb\xc2\x09\x8d\xb7\x15\xbf\x29\x2e\xa8\xad\ \x9d\xf8\x75\x0b\x36\x19\x7c\xe2\x8d\x2d\xaa\xba\xeb\xb7\x6f\xd3\ \xb5\x61\xc4\xe5\x1b\xe3\xb8\xa7\xec\x6e\x9e\x22\x19\x0e\x57\xb8\ \xab\x66\xba\x04\x93\x2a\xc5\x5d\x74\xb0\xf3\xde\xa3\x51\xdc\x72\ \x3c\x1a\xd4\x83\xf0\xd7\xf1\x60\x90\x1b\xe7\x8a\x5a\xfb\xa7\x4d\ \x01\xca\x82\x47\x83\x49\x9c\xea\x9a\x20\xeb\x8d\xd7\xff\x00\xaa\ \xbd\xbc\xd2\x44\x75\x23\x64\x0e\x45\x50\x92\xa7\x0c\x0a\x91\xe6\ \xa7\x93\x90\x77\xae\x9d\xf6\x86\x18\xc5\x3f\xbe\x30\x12\x5e\xea\ \x78\x6a\xcf\xbc\xb7\x2a\xc5\x90\x11\x8f\xa9\x7c\x51\x9b\x63\x91\ \xb1\xa2\xac\xa2\x41\xa6\x53\x82\x38\x71\xfe\xf5\x8b\x8e\xba\x19\ \xd0\xbe\x96\xe7\x6a\x69\x8e\xb4\xf5\x07\xd4\x3e\xaf\x9a\x15\xec\ \x05\x5b\x52\x80\x3e\xdc\x1a\xad\xb4\x9a\x5b\x07\x71\x48\x0c\xa7\ \x22\xa1\xfc\xd4\x91\xa5\xbe\x0f\x15\xcd\xba\xd6\xe5\x17\xb7\x38\ \x53\xe6\xaf\xa8\xd0\x22\x38\x7f\x8a\x35\x5b\xd8\xac\xe7\x2b\x41\ \x34\x49\x8f\x6a\x5e\x79\x02\x8c\x0e\x68\x29\x71\x20\xce\x07\x35\ \x5b\x58\x5a\x79\x42\x8e\x3b\x9a\xac\x68\xd2\xc9\xa4\x6e\x6b\x42\ \x42\x96\x56\xda\x46\x35\xb5\x62\xd1\x45\x25\x9a\xb4\xec\x23\x58\ \xa3\xd6\xc3\x73\x4a\x58\x43\x9c\xc8\xdc\x0f\xde\x8b\x3c\xc4\xfb\ \x57\x73\x59\xa2\x6f\xee\x4e\x74\xae\xe4\xf6\xa5\x54\x15\x6c\xb7\ \xb9\xcf\xed\x56\x45\xf7\x61\x3d\xce\x79\x3d\x85\x35\x6d\x6c\x34\ \xeb\x6f\xa7\xbb\x79\xfb\x55\xe2\x01\x41\x0b\x31\xd6\xdf\xae\x69\ \xa8\x63\x2c\x42\x20\xde\xa5\x14\xbb\x84\x45\xdb\xb0\xad\x6b\x1b\ \x64\xb5\x40\xf2\x60\xb9\xac\x67\x9e\xbb\x50\x96\x05\xb4\xb5\x2e\ \xc3\xdc\x45\x63\xce\xcc\xd2\x96\x63\x92\x4d\x7a\x47\x41\x72\x37\ \xe1\x46\x6b\xcf\xdc\xc4\x4b\x1d\xb1\xbd\x4f\x8a\xee\xee\x95\xa5\ \xd1\x62\x2f\x6b\x22\x26\x35\x15\xc0\xcd\x64\xde\xc2\xc8\xe4\x15\ \x21\x97\x62\x29\x8e\x9f\x78\xf6\xd2\x85\x6d\x8f\x7d\xf9\xad\x5b\ \x8b\x78\xba\x8c\x3e\xa4\x45\x44\xc0\x7f\xfb\x56\xb9\xc6\xec\x79\ \xf8\x2e\x67\x8c\xfb\x65\x60\x3e\xf5\xb7\xd3\x7d\x1b\x98\x3f\x98\ \x8a\xcd\x8e\x48\xac\x7b\xcb\x67\x8d\xd8\x15\x2a\x47\x20\xd1\x3a\ \x35\xd8\xb7\xb8\x1a\x8f\xb4\xd6\xb2\x9b\x9b\x80\x7d\x62\x3f\x4e\ \x50\x02\x80\x01\xec\x29\x9b\x60\x5c\xa8\x1c\x91\x81\x4c\x75\xdb\ \x61\x71\x17\xaf\x0f\xb8\x73\xfa\xd2\x16\x53\x10\x06\x4e\x1d\x0d\ \x25\xde\x28\xf6\x7f\xc3\xd6\x0b\x6a\x86\x72\x31\x85\xd8\x9e\xf5\ \xe7\x3f\x89\x24\x0d\x73\x3b\x1e\xe7\x15\xa9\x69\xd6\xa5\x9e\xdf\ \xd1\x70\xa3\x6d\xcd\x60\xf5\x97\x0d\x23\x1c\xe7\x26\xb8\x7c\x78\ \xe5\xe7\xcb\x57\xa0\x33\xa6\x6c\x83\xce\xe2\xb7\x7a\x7c\xf1\x5c\ \xda\xfa\x17\x18\x28\xfb\x03\xfd\x26\xb0\x07\xba\x05\x61\xca\xec\ \x69\xae\x97\x30\x12\x98\x9c\xe1\x5c\x73\xe0\xd7\x4c\xf1\xdc\x48\ \x4f\xf8\x93\xa4\x49\x67\x39\x65\x5c\xa9\xf1\xc5\x65\x44\xe6\x36\ \xcf\x23\xb8\xaf\x77\x6a\x52\xed\x1b\xa7\xdd\xe3\x58\xfa\x18\xd7\ \x95\xfe\x23\xe9\x72\x59\x5c\xb7\xb4\xe3\x35\x30\xcf\xfe\x72\x2c\ \x0e\x09\x5a\x3c\x49\x11\xd8\xf2\x2b\x7b\xa3\xf5\x34\x96\x3f\x4a\ \x71\xa9\x7b\x83\xb9\x15\xe5\xad\xa5\x31\xb6\x0f\x06\x9b\x46\x68\ \xdc\x49\x19\xad\xe5\x8e\xcd\xbd\x5d\xc7\x45\x8a\xe9\x3d\x48\x0a\ \xb2\x9e\x01\xff\x00\x9a\xc9\xbd\xe9\x12\x40\xf8\xd0\xc9\xf7\xe0\ \xd1\x3a\x2f\x58\x78\x58\x61\xb0\x7b\xa9\xe0\xd7\xac\xe9\xb7\x96\ \xb7\xf1\x60\xe9\x0d\xc1\x56\xae\x37\x2c\xf0\x5e\xde\x16\x6e\x9f\ \x36\x9d\x4a\xa5\xbe\xd4\x9b\xab\x2b\x61\x81\x07\xe4\x57\xd2\xa5\ \xe9\x90\xf2\xa8\x07\xc8\xa4\x3a\xb7\x47\xb6\x9e\xdf\x12\x47\x83\ \xd9\xd4\x6e\x29\x8f\xf2\x3f\x27\x8b\xc2\xa4\x83\x4f\xa7\x20\xca\ \xf6\x3e\x29\x7b\x98\x8a\x36\x47\x07\xc5\x69\x75\x7e\x9b\x2d\x9b\ \x1d\xc4\x91\xf6\x71\xfe\xfe\x29\x15\x23\x74\x7f\xa4\xfe\xd5\xdf\ \x8b\x37\x19\x52\x17\xd4\xba\x0f\x3d\xaa\xea\x7b\x1a\x0c\xc8\x62\ \x93\x6d\xc7\x62\x2a\xe8\xda\x97\x23\xf5\xab\x05\x98\x60\xd1\xa3\ \x39\x5c\xd0\x79\x15\x68\x4e\x1b\x1e\x6b\x7d\x81\xdc\x3e\x9c\x93\ \x4a\x1d\x4e\xfb\x6e\x4d\x35\xd4\x47\xb7\x35\xdd\x2d\x54\x6b\x95\ \x86\xca\x2a\x50\x68\x95\x2c\xed\xf5\xb6\x35\x1a\x5a\x30\xd7\x12\ \x99\xa4\xe3\xb5\x44\x8c\xd7\x53\xe4\xe4\x20\xa3\x70\x30\x36\x02\ \xb2\x1f\x9a\x50\xa8\x11\x76\x51\x42\x89\x4b\x8c\xb1\xd2\xbd\xfc\ \x9a\x11\x90\x38\xdc\x60\xd3\x16\xb8\x76\x50\x78\x03\x8a\x9d\x40\ \xcd\xbc\x29\xa7\x51\x5d\x31\xfe\xed\x44\x6c\xc8\x42\xa8\xc0\x1c\ \x28\xed\x56\x45\x2f\x82\x4f\xc6\x29\xeb\x44\x86\xd5\x7d\x69\x86\ \xe3\xe9\x5a\xc5\xba\xfe\xd4\x6e\x9b\x6a\xb6\xf1\x7a\xb2\x8f\x71\ \xe0\x52\xd7\x52\x4b\x35\xf2\xc6\x99\x39\xe0\x0a\x1d\xdd\xf4\xb3\ \x3e\xa1\xed\x51\xc0\xad\x3f\xe1\x53\x11\xfe\x27\x85\xa4\x00\x83\ \x0e\xa5\x04\x73\x5c\xf2\x96\x4d\xd1\xaf\xd2\x7a\x15\xd7\xe0\xc4\ \xc3\x00\xf8\x6e\xf4\x2e\xa1\xd1\x12\x43\xfc\xdb\x53\x03\xe3\x1a\ \xe3\x19\x53\xf7\x14\xf7\x52\xeb\x52\x17\x29\x19\x0a\x01\xc0\x02\ \xa2\xd7\xae\x38\xf6\xc8\x01\xfb\xd7\x09\x7e\x4e\xda\xe1\xe3\x7a\ \xbf\x4a\x9a\xd9\xb1\x22\x6a\x43\xf4\xb8\xef\x49\x5b\xdc\xcd\x67\ \x20\xcb\x1d\x3e\x6b\xe9\x7e\x9d\x97\x50\x8c\xaa\xe9\x52\xc3\x75\ \x3c\x1a\xf3\xbd\x7f\xf8\x56\x45\xd4\xf6\xcb\x90\x7f\x21\xef\xf6\ \x35\xdf\x0f\x9e\x5e\x32\x66\xc6\x54\x8d\x07\x52\x83\x21\x82\xcc\ \x06\xc7\xcd\x63\x5e\xda\xbc\x32\x10\x57\x04\x76\xa2\x4b\x0d\xc5\ \x95\xc1\x00\x30\x2b\xca\xf8\xa7\xa1\xbb\xb7\xbc\x84\x45\x73\x85\ \x60\x36\x6f\x15\xda\x6f\x1e\x67\x48\x57\xa3\xde\xfa\x4d\xe8\xcd\ \xbc\x6d\xb6\xf5\x1d\x5a\xd3\xd0\x90\x5c\x42\x35\x21\xe7\x15\x5b\ \xab\x09\x55\xb3\x18\xd6\x0f\x75\x35\x68\xde\xfd\x22\xd1\xb2\xa8\ \x3f\x9b\x15\x78\xde\xe0\x5c\x5d\xb0\x18\x40\x72\x79\x14\x19\xcc\ \xae\x72\xfb\x7c\x66\x99\x9d\x8e\x49\x9e\x70\x3e\x13\x1b\xd1\xad\ \x6c\xa5\x91\x43\xa4\x02\x34\x3c\x49\x29\xe7\xec\x3b\xd6\xb7\x20\ \xa4\x09\xff\x00\x92\x73\xfe\x60\x3f\x6a\x5d\x1f\x43\xe7\xb0\x35\ \xa1\x78\x12\x18\x16\x04\x3c\x6e\x4f\x72\x7c\xd2\x16\xe0\x3b\xba\ \x76\x35\x9c\x79\x1a\xf2\x3b\x49\x6f\x15\xd2\x1f\x7c\x67\x4b\x62\ \xb4\x66\x48\xba\xc7\x4d\x2a\xd8\xf5\xd0\x71\xe6\xbc\xff\x00\x4f\ \x9d\xe1\x9b\x41\x39\xd3\xbf\xdc\x56\x8d\xf3\x35\xbc\xd1\xdd\x5b\ \xb1\x50\xe3\x3b\x57\x1c\xb1\x57\x97\xea\x96\x6f\x69\x70\xc8\xca\ \x40\xce\xd5\x16\x73\x01\xec\x73\xb1\xe0\xd7\xb3\x96\xca\xd7\xad\ \xd8\xb1\xc6\x9b\x85\x19\xdb\xbd\x78\xde\xa7\x63\x2d\x9c\xe5\x1c\ \x1c\x03\xcd\x6f\x0c\xe6\x5c\x5e\xcb\x05\x61\xa4\xea\x4a\x7f\xa7\ \xde\xb2\x91\xb9\x04\x70\x73\xb8\xac\xab\x59\xb3\xec\x63\xbf\x62\ \x68\xac\x0a\xb6\x45\x6e\xcd\xf1\x51\xed\x3a\x3f\x5f\x92\x35\x09\ \x3e\x64\x4e\x33\xdc\x56\xea\xcf\x05\xd4\x3a\xa1\x75\x6c\x8e\x2b\ \xe6\xf6\x77\x45\x4e\x1b\xfb\xd6\xad\xa5\xcb\x29\x0f\x0c\x84\x11\ \xe0\xd7\x9f\x3f\x8a\x5e\x9a\x94\xef\xf1\x1c\x46\x37\x2d\x18\x3f\ \xe6\x43\xc1\xaf\x31\x75\x1a\x1f\x7c\x5c\x77\x53\xf9\x6b\xd7\x8b\ \xc8\xba\x84\x5e\x85\xd0\x09\x21\xd8\x3f\x63\xf7\xaf\x35\xd6\xec\ \xe5\xb3\xb9\x39\x1b\x67\x63\xe6\xb7\xf1\x5d\x71\x4a\xce\xd9\x97\ \x43\x71\xdb\xe2\x82\x33\x14\x98\x23\x6a\x3b\xe1\x86\x47\xea\x2a\ \x92\x2e\xb5\xf9\x1c\x57\x6b\x19\x48\x23\x90\x76\xa9\xe0\xe4\x50\ \xa2\x62\x0e\x93\x44\xab\x28\x9b\xa5\xf5\x21\xc8\xed\x40\xb7\x72\ \x2d\x65\x51\xb1\xe6\x98\x8c\xec\x54\xf0\x69\x68\xc6\x99\xa4\x43\ \xdd\x4d\x5b\xd0\x25\xb7\xf8\x23\x14\x68\x23\x32\x3e\x3b\x0e\x68\ \x16\xc7\xf9\x42\x9d\x0e\xb1\xc4\x14\x63\x38\xc9\xac\xfa\x1f\xff\ \xd9\ \x00\x00\x2e\x32\ \xff\ \xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\ \x48\x00\x00\xff\xdb\x00\x43\x00\x04\x02\x03\x03\x03\x02\x04\x03\ \x03\x03\x04\x04\x04\x04\x05\x09\x06\x05\x05\x05\x05\x0b\x08\x08\ \x06\x09\x0d\x0b\x0d\x0d\x0d\x0b\x0c\x0c\x0e\x10\x14\x11\x0e\x0f\ \x13\x0f\x0c\x0c\x12\x18\x12\x13\x15\x16\x17\x17\x17\x0e\x11\x19\ \x1b\x19\x16\x1a\x14\x16\x17\x16\xff\xdb\x00\x43\x01\x04\x04\x04\ \x05\x05\x05\x0a\x06\x06\x0a\x16\x0f\x0c\x0f\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\ \x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\xff\xfe\x00\ \x12\x42\x6c\x75\x65\x20\x41\x6e\x67\x6c\x65\x20\x53\x77\x69\x72\ \x6c\xff\xc0\x00\x11\x08\x01\x20\x01\x20\x03\x01\x22\x00\x02\x11\ \x01\x03\x11\x01\xff\xc4\x00\x1b\x00\x00\x02\x03\x01\x01\x01\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x04\x01\x02\x05\x00\x06\ \x07\xff\xc4\x00\x3d\x10\x00\x02\x01\x03\x03\x03\x03\x02\x04\x04\ \x05\x02\x06\x03\x01\x00\x01\x02\x03\x00\x04\x11\x12\x21\x31\x05\ \x41\x51\x13\x22\x61\x32\x71\x14\x42\x81\xa1\x06\x23\x52\x91\x33\ \x62\xb1\xc1\xd1\x72\xe1\x15\x24\x34\x43\x53\xf1\x82\x92\xa2\xf0\ \xff\xc4\x00\x19\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x06\xff\xc4\x00\x24\x11\ \x01\x01\x00\x02\x02\x02\x02\x02\x02\x03\x00\x00\x00\x00\x00\x00\ \x00\x01\x02\x11\x21\x31\x12\x41\x03\x22\x51\x61\x04\x71\x13\x32\ \x42\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xf6\ \x3a\x14\xae\xdf\xa5\x74\x5a\x84\x80\x67\xf5\xa2\x45\x83\x10\x14\ \x39\x50\x83\xa8\x57\xde\x6f\x7c\x3c\xad\x7b\x16\x08\xe1\x98\xe4\ \x0d\xea\xd7\x0f\x7b\x79\x27\xb1\x4e\x91\xc1\x63\x81\x4a\x58\xcb\ \xae\x2e\x46\x46\xd4\xcb\x4a\x74\x80\x18\x81\x8e\xd5\xce\xce\x44\ \xc3\x33\xdb\x5c\x8b\x6b\xd8\x90\x29\xdb\x56\x38\xad\x8f\xe1\xeb\ \x48\xa4\x96\xe0\xb3\x65\xed\x70\xf1\x6f\xe7\xbd\x65\xcb\xa2\xfa\ \xdc\x43\x31\xc4\x80\x7b\x1c\xf7\xf8\xaa\x74\x2e\xa1\x2d\x87\x59\ \x81\x67\x38\x5c\xfa\x52\x13\xe0\xd6\x72\x96\xce\x15\xba\x49\x62\ \x4e\x73\x9a\x82\x1b\x1b\x0c\xd7\x5d\x0f\x4a\xe5\xd4\x70\x1b\x6a\ \xbc\x32\x03\x5c\x94\x5b\x1b\xd7\xb7\x71\x9c\x80\x3c\x56\xf5\xbc\ \xd6\x9d\x4a\xdc\xc7\x21\x5d\x64\x63\x71\xcd\x60\xe1\x49\xc1\x00\ \xd0\x3d\x66\xb7\xba\x0d\x1b\x15\xc5\x63\x2c\x3c\xba\x5d\x8b\xd7\ \x7f\x86\xe6\x79\x49\x86\x5c\xaf\xf4\xb1\x27\xfb\x57\x9c\xbf\xe8\ \x1d\x46\x26\xff\x00\xd2\x93\xbf\x2a\x32\x0d\x7b\x15\xeb\x8c\xb1\ \x61\x86\xb3\xe2\x83\x71\xd5\x2f\x25\x1b\x15\xb7\x4f\x20\x02\x6b\ \x78\x7c\x9f\x24\xed\x35\x1e\x41\x3a\x3f\x5a\xcf\xb2\xde\x6c\x0a\ \x66\x2e\x83\x71\xf5\x5e\x5e\x2a\x79\x54\x3a\x9b\xfe\xd5\xb5\x2d\ \xd1\x6c\xeb\x9a\x79\x49\xe7\x2e\x40\x3f\xa0\xa5\x2e\xe6\xd3\x11\ \x27\x00\x78\x1b\x0a\xe9\xfe\x4c\xaa\x68\xb4\x36\xd6\x56\x79\x68\ \x53\x53\x0f\xfd\xc9\xb0\x48\xfb\x0e\x28\x37\x37\x99\x24\x47\xb9\ \x3f\x98\xd2\xd7\x13\x3c\x8d\x96\x3b\x0e\x07\x6a\x0e\xa2\xc4\x84\ \xed\xcb\x1e\x05\x6a\x63\xbe\xcd\xa6\x57\x24\xff\x00\x53\x1a\x5d\ \x08\xfc\x48\x55\xdc\x28\x20\x91\xc6\x6b\x9a\x53\x21\x30\xdb\x9f\ \xfa\xe4\x3f\xed\x47\xb3\x80\x2a\x0f\x03\xf7\xae\xd8\xe2\x8b\x5e\ \x82\xcb\xa8\x72\x30\xc2\xb4\x7a\x04\xe0\xb9\x8c\xf1\x32\xed\xf7\ \xa4\x9b\x06\x45\x5d\xb7\x04\x1a\x1f\x4c\x90\xc6\xec\x3b\xa1\x0c\ \x3f\xde\xb1\xf2\x62\xb0\xff\x00\x4f\x96\x5b\x6b\xd6\x64\x24\x34\ \x6d\xb8\xad\x5e\xbb\x61\x0f\x57\xe9\xdf\x8b\x81\x46\xac\x7b\xc0\ \xec\x7c\xd2\x11\x28\xff\x00\xc7\xb3\x8f\x6c\x8a\x18\x56\x9d\xa4\ \xad\xd3\xaf\xb3\x8c\xc1\x26\xcc\x0f\x02\xb8\x67\x3d\xce\xd6\x3c\ \x05\xf5\xb3\xdb\xce\x54\x82\x08\x3c\xd5\xed\xa7\x0d\xec\x93\x9e\ \xc6\xbd\x97\xf1\x8f\x45\x49\xa1\xfc\x65\xa8\xd4\x8c\x33\xb7\x6a\ \xf0\xf7\x11\x34\x72\x10\x46\x08\xae\x98\x67\x32\x89\x61\xc3\x1b\ \x21\xd4\x99\xda\x8d\x6d\x78\xea\x70\x4d\x29\x65\x75\x8c\x47\x21\ \x38\x1c\x1e\xe2\x98\x96\x2d\x5e\xe0\x46\x4f\x04\x70\xd5\xaf\xed\ \x1a\x50\x5c\xa3\xe3\x7c\x1a\xd0\x70\x9d\x42\xcf\xd1\x94\x81\x22\ \x8f\x6b\x1e\xf5\xe6\x15\x9a\x37\xc3\x0a\xd1\xe9\xf7\x63\x20\x33\ \x7d\x8d\x63\x2c\x3d\xac\x21\x7d\x6f\x25\xad\xc3\x47\x22\x91\x40\ \x35\xb9\xd5\xa0\xf5\xe1\x32\xa9\x2f\x8e\x57\x39\x23\xe4\x56\x23\ \x0c\x1f\x22\xba\xe3\x97\x94\xfd\xa0\x53\x2e\xda\x87\xeb\x53\x0b\ \x67\x63\x57\x3e\x28\x32\x2e\x96\xa7\x40\xd5\x59\x50\x32\x13\xc3\ \x0e\x0d\x42\x3e\x76\x3c\xd5\xea\xca\x15\x46\xd2\x41\xee\x0f\xbb\ \xe6\x9a\xce\x54\x50\x6e\x23\xdf\x58\x1f\x71\x53\x6c\xd9\x5d\x3e\ \x38\xa7\xb0\xca\x39\x0a\x28\xd1\xb0\x75\xc1\xa5\x90\xfb\x6a\x55\ \x88\x39\x15\x34\x0b\x1b\xb4\x12\x1c\x6e\x0d\x32\xf2\xfa\x91\x6a\ \x43\xc7\x34\x90\x93\xce\xf5\x31\xbe\x96\xd4\xa7\x4f\xc7\x9a\xa1\ \xc8\x2e\x08\x20\x37\xf7\xa6\x6f\x42\x5d\x42\x1f\xff\x00\x71\x79\ \xc7\x7f\x9a\xcf\x24\x37\xb9\x76\xf2\x28\x96\xf3\x18\xcf\x91\x52\ \xcd\xf3\x07\xa4\xb0\xb9\x17\x76\x28\x5b\xfc\x68\x94\x24\xbf\x24\ \x70\x6a\xcc\xfa\x06\xdc\xd6\x6f\x4a\x60\x6e\x7d\x54\xc8\x05\x30\ \xfe\x0f\x8a\x7e\x1c\xcd\x37\xf9\x45\x70\xb3\x55\xa3\x56\x84\xe8\ \x2c\xdd\xe9\x79\xcb\x4b\x71\x85\xa3\xce\xd8\x51\x1a\xf3\x50\xa0\ \x42\xbb\x6e\xe7\xf6\xac\x4a\x25\x55\x20\x5c\x9f\x73\x9e\xd4\x36\ \x2c\xe7\x2c\x6a\x0e\xe7\x2c\x72\x4d\x02\xee\xe5\x62\x5e\x77\xad\ \x48\x09\x71\x2a\x42\xb9\x63\x59\x17\xb7\x26\x46\xcb\x1c\x01\xda\ \xab\x34\xf2\x4d\x36\x95\x05\xd8\xf0\xa2\xa6\x54\x86\xcd\x3d\x6b\ \xc6\x0c\xff\x00\x96\x31\x5d\x31\xc7\x49\x43\x54\x66\x8c\xc9\x2b\ \x7a\x51\x0e\xe7\x93\xf6\xa5\x59\xde\xed\xbd\x1b\x71\xa2\x15\xfa\ \x9b\xcf\xc9\xae\x06\xe7\xab\x5c\x12\xcd\xa2\x14\xe4\xf6\x02\x9d\ \x51\x1f\xa6\x21\x81\x71\x12\xf7\xc6\xec\x7c\xd7\x59\x35\x7f\x68\ \x1d\xbc\x4a\xab\xa2\x31\xfc\xb1\xdc\xf2\xd4\x73\x80\x2b\x80\x00\ \x60\x54\x10\x59\xc2\x2f\x26\xba\x5b\x31\x82\xf0\x8d\x11\x3d\xc1\ \x3b\xfd\x29\xf7\x34\xa5\x87\xfe\xa0\xb7\x81\x4c\x75\x77\x58\xd1\ \x2d\x97\x88\xc6\xff\x00\x24\xf3\xfb\x50\xec\x10\x8b\x76\x7e\x35\ \x9d\x22\xb8\xce\xb7\x46\x82\x39\x8e\x4b\x77\x27\xe8\x90\xc5\xfa\ \x56\xfd\xdc\x42\x48\x06\xaf\x15\xe7\x2f\x09\xf4\xe5\x45\x18\x30\ \xb8\x70\x3c\xed\x8a\xde\xb1\xb9\x17\x1d\x3d\x5d\x4f\x22\xb8\xd6\ \x97\xe8\x77\x4b\x04\xa6\xca\xe7\xdd\x0c\x9b\x0c\xf6\xac\x2f\xe3\ \xbe\x86\x6d\xa4\x37\x10\x8c\xc6\xdb\xe4\x76\xa7\xa7\x74\x92\x4d\ \x07\x66\x1c\x56\xb7\x4a\xb9\x8e\xfe\xcd\xba\x7d\xe0\x05\x80\xc0\ \x27\xbd\x63\x29\x70\xbe\x50\xed\xf2\xe9\x10\xe7\xc1\x14\x6b\x2b\ \xa3\x19\xd0\xfb\xa9\xe4\x56\xb7\xf1\x77\x46\x93\xa7\x5e\x91\x8f\ \x63\x6e\xa6\xb0\xd9\x73\xf7\xaf\x46\x36\x65\x36\xcb\x60\xc5\x1c\ \xb0\xea\x56\xf5\x13\xcf\xe6\x4f\xbd\x26\xea\xf0\xc9\xff\x00\xfb\ \x06\x81\x65\x75\x25\xbc\x81\x94\xef\xdc\x79\xad\x7b\x75\x82\xf6\ \x2c\xa6\xcd\xdd\x3f\xe2\xaf\x42\xbd\x3a\xf7\x4b\x69\x62\x74\x9e\ \xc6\x96\xea\x90\xfa\x73\x97\x4d\xd1\xf7\x15\xd7\x76\xb2\x40\xdb\ \xe7\x03\x83\xe2\xba\x39\xf5\x27\xa5\x2e\xea\x7b\xf8\xa9\x27\x3b\ \x8a\x56\xa1\x94\x30\xc1\xa2\x4f\x19\x8d\xbc\x83\xc1\xaa\x56\xfb\ \x40\x1d\x4a\x9a\x24\x4d\x91\x83\xcd\x59\xc6\xa1\x8a\x0b\x02\xad\ \x8a\xcf\x40\xf4\x00\x34\x4e\x07\x63\xc5\x12\x26\xc8\xdf\x91\x51\ \x38\xf6\x83\xdc\x1d\xab\x42\xd1\x1c\xc6\x0f\xc5\x5a\xad\x14\x79\ \x5f\x00\x51\x6d\x6d\xa4\x9e\x5d\x11\x2e\x71\xcb\x76\x15\x37\xa0\ \x1c\x57\x11\x5a\xb0\xda\x5a\x45\x81\x23\xeb\x3d\xc8\xe0\x50\xfa\ \xa5\xad\x9b\xd9\xbc\xd0\x36\x1e\x3d\xf6\x35\x9f\x2e\x46\x7a\xb1\ \x06\x8c\xbe\xec\x63\xbd\x2e\x37\x35\xa5\xd3\xe2\xc6\x24\x61\x9e\ \xca\x3c\xd6\xf7\xa9\xb1\xa1\x64\x86\x2b\x75\x84\x0f\x7b\x6e\x6b\ \x52\x15\x10\xc2\x14\x7d\x5d\xe9\x7b\x08\x3d\x21\xea\x3e\xee\xdf\ \xb5\x1a\x69\x12\x24\x2e\xec\x00\x15\xe5\xca\xee\xb4\xb6\x74\xfb\ \x8e\x33\xf3\xda\x95\x9a\xed\x03\x15\x07\x26\xb3\x7a\x8f\x54\xf5\ \x9c\xa4\x1c\x77\x34\xbc\x0d\x34\xaf\xe9\xc2\xa5\xdc\xf7\xf1\x5b\ \xc7\x0f\xca\x6d\xa5\x71\x7a\xb1\xa7\xb8\xee\x78\x14\xb2\x43\x73\ \x7c\xda\xc8\xf4\xe3\x1c\xb3\x6d\x9f\xb5\x31\x6f\xd3\xe1\xb6\x4f\ \xc4\x5f\x48\x19\x80\xce\x93\xc0\xac\xee\xb3\xd6\x1a\x5c\xc7\x6f\ \xed\x4e\x36\xef\x5b\xc6\x6e\xf0\x0d\x79\x7f\x69\xd3\xa2\x31\x5a\ \x80\xd2\x70\x5e\x91\xb2\xb4\xb8\xea\x52\x9b\x8b\x97\x2b\x10\x39\ \x66\x6f\xf6\xa2\x74\xae\x94\x65\x5f\xc6\x5e\x9d\x10\x8d\xc0\x3c\ \x9a\x62\xf2\xef\xd6\x22\x18\x57\x44\x2b\xc2\x8e\xf5\xbe\x27\x18\ \xa2\xd3\x34\x6c\xa2\xde\xd9\x74\x42\xbf\xff\x00\x5f\x26\xae\x83\ \x02\xa9\x6e\xbe\xc2\x48\xde\x99\xb4\x4d\x72\x80\x78\x15\xac\x35\ \x26\xc0\xd9\x4a\xe3\x3b\x66\x8d\xd1\xd4\x35\xc9\x73\x8c\x2e\xf9\ \x3c\x55\x6f\x94\x89\x08\x1b\xed\xb0\xab\x74\xdf\x74\x72\xc4\x83\ \x2e\xea\x42\xfc\xd6\x7e\x4b\xb8\xb1\x99\x7a\xfa\xe6\x24\xf2\x77\ \x3f\xae\xf4\xef\x4f\x02\x6b\x06\x88\x11\xad\x0e\xa0\x3b\x91\x49\ \xde\xc4\xc9\x21\x6c\x1c\x1f\xda\xa9\x04\xcf\x14\x81\x91\x88\x23\ \xb8\xa5\x9b\x9c\x23\x5d\xd9\x65\x55\x98\xf3\xa4\xa4\xa3\xc7\x83\ \x51\xd1\x6f\x0d\xab\x35\x9c\xa7\x83\x95\x3e\x68\x76\xb3\xfa\xe7\ \x5c\x60\x2c\xc0\x7b\x93\xb3\x8a\xa5\xf4\x62\x78\x43\xc4\x08\x64\ \xfa\x47\x71\xf1\x5c\xf5\xea\xa8\xf7\x53\x7f\xe7\x0e\x0e\x0f\x22\ \x9d\xb7\x94\x9d\x2e\xa7\x12\x2e\xe3\x1d\xeb\x06\x2b\x86\x79\x57\ \x5f\x22\xb6\xd2\x26\x0a\x1d\x6a\xd9\xc2\x35\xae\x84\x3d\x73\xa5\ \x35\xbc\x98\x13\x28\xf6\xe7\xcd\x7c\xff\x00\xa9\xda\x49\x6d\x74\ \xf1\x3a\x90\xca\x71\x5e\xb5\x24\x78\xe4\x13\x44\x70\xc3\x91\x55\ \xfe\x26\xb5\x8b\xa9\xf4\xf1\x7b\x12\x8f\x59\x3f\xc4\x03\xfd\x6b\ \x9e\x3f\x4b\xaf\x4b\xdb\xc4\x91\x93\xe0\x8a\x2d\xbc\x8f\x1b\xeb\ \x8c\xe0\xaf\x22\xa6\xe6\x32\x18\xb6\x31\xbe\xff\x00\x06\x85\x93\ \xc8\xd9\x85\x77\x47\xa1\xe9\xd7\xb0\x5e\xc5\xe9\x5c\xe3\x51\x18\ \xcd\x07\xa9\x74\xb7\x84\x17\x8f\xdc\xb5\x8f\x0b\x1c\xfa\x91\xec\ \x47\x22\xb7\x3a\x47\x55\xca\xfa\x53\x6e\xbc\x1c\xf6\xac\x59\x67\ \x31\x59\x8a\xe5\x46\x87\x19\x5f\x07\xb5\x52\x54\xc7\xb9\x4e\x54\ \xfe\xd5\xb7\xd4\x6c\x22\x99\x3d\x58\x4f\x23\x3b\x76\xac\x89\x63\ \x92\x16\xdf\x8f\xd8\xd5\x99\x4a\x00\x71\x50\xca\x18\x55\xe4\x50\ \xe0\xe3\x62\x7b\x52\xec\x25\x8c\xf3\x91\x5b\x44\x10\x55\xaa\xe4\ \x87\x88\x82\x77\xc5\x41\x91\x58\x7b\x81\x1f\x35\x41\xb9\xd2\xa7\ \x24\xf3\x8e\xd5\x06\x85\xad\xbc\xf7\x0e\x12\x30\x4f\x93\xd8\x56\ \x86\x16\xda\x1f\xc3\xc4\x76\x1b\xbb\x7f\x51\xa2\x4d\x74\x74\x68\ \x8d\x44\x6b\xe1\x6b\x3e\xea\x75\x8d\x79\xdf\xb0\xac\xf3\x45\x2f\ \x67\x23\xd8\x9c\x9f\xda\x84\x87\x45\xb3\x26\x7f\xc4\x60\x4f\xe9\ \xff\x00\x7a\xa2\xe5\xdb\x53\x72\x7f\x61\x57\x0a\x65\x93\x0a\x36\ \x1b\x7e\x95\xad\x02\x59\x45\xad\xb5\x1e\x05\x7a\x0e\x97\x6b\xa0\ \x09\x24\x1b\xf6\x1e\x28\x3d\x16\xc8\x2a\x89\x64\x18\x03\xe9\x15\ \x6e\xb3\xd5\x62\xb3\x8c\xa2\x1d\x52\x9e\x14\x57\x2c\xb2\xf2\xba\ \x8a\x6b\xa8\x5e\xc1\x69\x09\x79\x1c\x7c\x0a\xf3\x5d\x43\xa8\x4f\ \x7d\x26\x01\x2b\x1f\x81\x41\x93\xd7\xbc\x98\xcd\x70\x4e\xfd\x8f\ \x02\x8a\x88\x89\xc6\xf5\xac\x30\x90\xb5\x58\xd4\x28\xda\xb6\x6c\ \x67\x4b\x2e\x91\xeb\xae\x4b\x37\x35\x94\xda\x48\xd8\x60\x8e\xd4\ \x79\x98\xc9\xd1\x1a\x34\xdd\xa3\x6c\x91\xf1\x56\xcd\xa1\x4b\xfb\ \xfb\x9b\xd9\xb1\xb9\xcf\x0a\x2b\x47\xa1\xf4\x75\x8d\x3f\x17\x7d\ \xed\x0b\xb8\x53\xda\xa9\xfc\x2d\xe8\xc3\x69\x35\xcc\x8a\x09\x43\ \xb5\x57\xa8\x5f\xcf\x74\x70\xcd\xa5\x3b\x28\xe2\xb5\x95\xbf\xeb\ \x8a\x89\xd5\xaf\x8d\xcb\xfa\x68\x34\xc2\x9f\x48\xf3\x4b\xda\xa8\ \x2d\x93\xbd\x06\x8b\x6a\x48\x93\x03\xbd\x35\xa8\x8d\x28\xc0\x10\ \x1c\x73\x46\xb5\x1a\x63\x04\x77\xe6\x87\x18\xfe\x41\xc6\xe4\xd5\ \xa1\x60\x23\xd2\xd9\x07\x3d\xc5\x49\xce\x22\xf3\xa3\x3b\x7a\x88\ \x77\x5e\xd4\x04\x56\x57\xf5\x21\xdb\x07\x3a\x7b\x8f\xfb\x53\x0a\ \x7b\x83\x50\xe8\xaf\xee\xc6\x0f\x91\x49\x65\x9a\xa2\x4d\xcc\x17\ \x63\x4d\xca\x80\xc7\x6d\x63\x9f\xd7\xcd\x23\x7f\xd3\x9e\x2f\x7c\ \x64\x32\x1e\x08\xe2\x98\x91\x3f\xf9\x54\x91\xfd\x4b\xfe\xf5\x30\ \xc9\x24\x1b\xaf\xba\x33\xb1\x07\x8f\xfb\x54\xf1\xb8\xf4\x32\x51\ \x9e\x37\x04\x12\xac\x0d\x69\x5b\x5c\x89\xfd\xf8\xc4\xa0\x7b\xc0\ \xfc\xc3\xcf\xdc\x53\x12\x5a\x5a\x5e\xc7\xa9\x1b\xd2\x93\xc1\xe0\ \x56\x6d\xd5\x9d\xd5\x9c\x81\x8a\xb6\x01\xc8\x71\xc5\x5d\xcc\xb8\ \x14\xbb\x88\x47\x78\xa5\x7e\x97\x20\x8a\xf5\x16\xc8\x7f\x0a\xa0\ \xef\xb5\x79\xf9\xff\x00\x9b\x6d\x1c\x9a\x70\x43\x83\x8f\xd6\xbd\ \x1c\x8e\xb0\xdb\x2e\xa3\x8d\xaa\x77\xc2\x95\x99\x74\xb6\xa5\xe3\ \xbd\x56\x29\x0c\x32\x6b\x4d\xd5\xb6\x65\xf3\x4b\x7e\x2c\x89\xcf\ \x74\x26\x99\x5c\x32\xec\x72\x0f\x15\x73\xc3\x49\x19\x3d\x72\xc1\ \x41\x37\x10\x8c\xc6\xdf\x50\xac\x29\xe2\x29\x21\x1f\xd8\xf9\xaf\ \x5e\xe0\xa8\x2a\x46\x54\xf2\x2b\x17\xaa\xd9\x7b\x48\x51\xf4\xee\ \xb5\x31\xba\xe2\xab\x20\x67\x3a\xd3\x66\x1f\xbd\x11\x18\x91\xea\ \x47\xed\x23\xea\x1e\x28\x64\x10\x72\x39\x15\x28\x48\x3e\xac\x78\ \xd4\x39\x1e\x6b\x5d\x23\x4f\xa6\x75\x16\x88\x81\xfd\xd4\xf7\xad\ \x5d\x16\xf7\xb1\xe6\x2d\x21\x8f\x28\x78\x35\xe7\x30\xb3\x21\x92\ \x2d\x98\x7d\x49\xe3\xed\x44\xb4\xba\x78\xdc\x64\x90\x47\x7a\xc6\ \x58\xef\xa5\xd9\xcb\xbb\x07\x47\x3a\x46\x0f\xf4\x9f\xf6\x34\x9b\ \xa1\x53\x86\x04\x1f\x06\xb6\xed\xaf\xe3\x99\x04\x77\x2a\x08\xfe\ \xaa\xbc\xb6\xaa\xf1\xe6\x16\x59\x13\xfa\x58\x03\x52\x65\x67\x14\ \xd3\xce\xb4\x28\x4e\xe9\x9a\x95\x8c\x28\xd9\x40\xad\x76\x86\x04\ \x38\x7b\x55\xcf\xfd\x47\xfe\x6a\xd1\x0b\x35\x1b\xda\x29\x3f\x3b\ \xff\x00\xad\x6b\xcb\xf4\x8c\xeb\xcb\xa0\x9e\xd5\xdc\xd2\x63\x53\ \x36\xa6\xdc\x9e\x05\x46\x34\xee\x72\x58\xd1\x10\x15\x1f\xe7\x6d\ \xbe\xc2\xb4\x2c\xa0\x9f\x62\xee\x4f\x26\xb6\xba\x3f\x4f\x0a\xa2\ \x59\x46\x07\x20\x1a\x17\x44\xb1\x1a\x7d\x69\x86\x00\xdf\x7a\xa7\ \x58\xea\x85\xc9\xb7\xb5\x60\x14\x6c\xcf\x5c\xf2\xb7\x2b\xe3\x14\ \x6e\xb5\xd5\xc4\x47\xf0\xf6\x9e\xe7\xe0\x91\xc0\xac\x84\x4c\x31\ \x92\x66\xd6\xe7\x92\x6a\x8b\xa5\x3e\x9d\xc9\xe5\x8d\x76\xe4\xf9\ \xad\xe3\x8c\xc6\x20\xad\x22\x8f\x9f\xb5\x74\x77\x01\x5b\x3e\x98\ \xa1\x84\x63\x53\xe9\x9a\xd0\x60\xb4\x32\x6e\x87\x4b\x78\x35\xd1\ \x3b\x45\x20\x61\xfa\x8e\xc4\x52\xc5\x18\x76\xa9\x49\x19\x76\x3b\ \x8f\x06\xa5\x0d\x5a\xca\x96\xd3\xba\xe3\xf9\x17\x1b\x7f\xd0\x6a\ \x92\x21\x47\x28\xdc\x83\x55\x52\x8e\x84\x1d\xd4\xec\x47\x71\x50\ \x5e\x50\x00\x75\x12\x60\x60\x30\x38\x3f\xad\x20\x9a\xea\xa9\x73\ \x9f\xa4\x2f\xdc\xe6\xaa\xf2\xf6\x5d\xf3\xe3\x6a\xa0\xe9\x2c\x88\ \x76\x72\x28\xa9\xd4\x25\x5d\xb5\xa9\xfb\xd0\x2d\x2c\xae\x6e\x9b\ \xd8\xa4\x0f\x34\xf1\xe9\x30\x42\x99\xb8\x98\x06\xac\x5b\x8a\xba\ \xde\xf9\x59\x80\x75\xd0\x4f\xe6\x1c\x7e\xa2\xb5\xba\x5c\xd1\x33\ \x7a\x52\x28\x3a\xb8\x3e\x6b\x15\x6d\xed\xd9\x75\x42\xe2\x48\xf5\ \x69\x24\x0c\x15\x34\x78\x01\x82\x71\x10\x3e\xd2\x35\x21\xf1\xe4\ \x52\xea\xc1\xad\x75\x6d\xa3\x2d\x1e\xe9\xdc\x1e\xd4\x9b\x46\x41\ \xd5\x16\xc7\xba\xf9\xad\x4b\x59\x3d\x58\x15\xfb\x91\xbd\x0e\xea\ \xd8\x37\xba\x31\x83\xdc\x79\xa9\x8e\x76\x71\x4d\x33\x15\x03\x36\ \x13\xf9\x6f\xe3\x38\xfe\xd5\x75\x92\xee\x0c\x86\x52\x57\xbe\xa1\ \x90\x6a\xd2\xc6\xad\x90\xc3\x07\xcd\x42\x2c\xf1\x9c\x47\x2e\xdf\ \x7a\xde\xb1\xa8\xe8\x90\x4f\x22\x96\x41\x1c\x4a\x43\x39\x19\xc0\ \xc1\xff\x00\xb5\x5b\xaa\xde\x7e\x26\x5c\x26\x42\x0e\x07\x9a\x1c\ \xe2\x77\x04\xc8\xd9\x03\xb5\x2f\x82\x4d\x6f\x0c\x64\xe4\x76\x68\ \xb6\xd3\xb4\x67\x19\xdb\xc5\x0c\x21\xc5\x54\xec\x6b\x5b\xd8\xd3\ \x47\x59\x13\x3b\x1a\xa4\xb1\x87\x5c\x1f\xd2\x92\x8a\x46\x43\xb1\ \xa6\xa1\x9c\x30\xc1\xae\x79\x61\xee\x11\x87\xd6\xad\x3d\x19\x7d\ \x45\x1e\xd3\xcd\x67\xee\xac\x19\x7f\x51\xe6\xbd\x5d\xf4\x0b\x34\ \x2c\xa7\x7c\x8d\xab\xcd\x5d\x44\x62\x98\xa1\x18\x19\xa9\x39\x80\ \x7e\xe0\x44\xd0\x9c\x30\xe6\x8c\x81\x2e\xd0\xbc\x60\x2c\xa3\xea\ \x4f\x3f\x22\x80\x32\x8c\x58\x7e\xa2\xac\xca\x75\x09\xa0\x38\x61\ \xbe\xd5\x9e\x95\x68\xa5\x78\xce\x37\x23\xb8\xf1\x5a\x16\xb7\x5e\ \xd0\x51\xc8\xfb\x52\xf1\x7a\x5d\x41\x3d\xb8\x8e\xe4\x72\x0f\x0f\ \xff\x00\x7a\x59\x95\x92\x42\xa4\x14\x71\xcd\x5e\xd1\xb2\x6e\x19\ \xc6\x19\xb3\x54\x67\xf9\xac\xe8\xee\x99\x76\x90\x03\x8a\xe9\xae\ \x98\x8d\x09\xde\x9a\x02\x4d\x8f\xa8\xe3\x7f\xca\x2b\x4b\xa3\x59\ \x7a\x8d\xeb\x4b\xb2\x2e\xfb\xf7\xa1\x74\xbb\x36\xb9\x93\xd4\x7d\ \xa3\x5a\x27\x56\xbf\x04\x7e\x16\xd8\xe1\x06\xc4\x8a\xcd\xb6\xdd\ \x45\x4f\x59\xea\x1e\xa1\xfc\x35\xb1\xd2\x83\x66\x61\xde\xb3\x94\ \x60\x60\x0a\xe4\x5e\xc2\x89\x1e\x95\x18\xc1\x63\x5a\x92\x63\x11\ \x09\x19\x3d\xa8\xa9\x1a\x2a\x92\xf2\x2a\xe2\xb8\x25\xc3\x0c\x05\ \x20\x1f\x1b\x55\xe2\xb1\x62\x32\xd5\x2e\x4a\x13\xcb\x18\xda\x35\ \x67\x3e\x78\x15\x46\x9a\x61\xc4\x48\x3f\xbd\x30\x62\x0b\xb2\xf0\ \x2a\x0a\x8a\x9b\xd8\x42\xe2\xea\xe2\x35\xd5\xe9\xa9\x03\xe2\xaf\ \x65\x77\x1d\xda\xee\xba\x1b\xef\xb5\x1a\x78\xc3\x29\x04\x67\x35\ \x94\x0b\xf4\xee\xa0\x1c\x2e\xa8\x89\xf7\x29\xaa\x8d\x57\x89\xd1\ \xb6\x06\xaa\x59\xf8\x24\xd6\xad\xb4\x31\x5c\x40\xb2\xc6\x75\x44\ \xe3\x2b\xe4\x51\xbf\xf0\xd4\x2c\x08\x62\x45\x4f\x39\xed\x74\xc5\ \x48\xde\x43\x80\x39\xad\x6e\x99\xd2\x81\x02\x49\xb6\x14\xed\xbd\ \xac\x36\xe9\xa9\x80\xda\x94\xea\x9d\x4c\x05\x29\x19\xc0\x1d\xeb\ \x37\x2b\x97\x10\x1e\xfa\xfa\x1b\x48\xbd\x38\x30\x08\x1d\xab\x0a\ \x7b\x89\xef\x27\x08\xb9\x25\x8e\x00\xf3\x41\x96\x47\x9a\x4c\x0c\ \x9c\x9d\x85\x6f\x74\x4e\x9e\x2d\x13\xd5\x94\x03\x2b\x0f\xff\x00\ \x51\x5a\xd4\xc6\x1d\xa6\xde\xd1\x6d\x6d\x62\xb6\x1b\xbc\x8e\x0b\ \x7e\x95\x5e\xa6\xbe\x93\x46\x41\xfa\x1c\x53\x76\x2d\xeb\x5d\x1b\ \x83\xc0\xf6\xc7\xf2\x3b\x9a\x57\xae\x36\x5b\x1d\xcb\x8a\x98\xf6\ \x56\xaf\x40\x60\x49\x43\xc0\x6a\xd6\x9e\xde\x32\xd8\x56\xd2\xde\ \x0d\x63\x74\x13\x8b\x96\x1f\xe6\x14\xff\x00\x5e\x94\xc7\x26\x54\ \xef\x59\xca\x6f\x20\x2b\xdb\x4d\x4d\xc6\x97\xfd\x8d\x21\x2c\x6d\ \x1b\x69\x61\x83\x4d\xda\xf5\x13\xb2\xcc\xba\xbc\x1a\xee\xb6\xca\ \x66\x4c\x0c\x7b\x73\x57\x1b\x65\x29\x33\xf4\x63\xcd\x04\xa6\xf4\ \x62\x73\x55\x66\x55\x5d\x4d\xc0\xfd\xeb\xa4\xa8\xa1\x42\x3e\xd4\ \x19\xd7\x1b\xd5\x65\xbc\x19\xc6\xa0\x3e\x06\xf5\x45\x9d\x5f\x87\ \x06\xb7\x05\x80\xc9\xc5\x48\xca\x9f\x91\x55\x15\x7d\x61\x97\xdc\ \x37\x15\xbd\xe8\x33\x6f\x28\x6f\x6b\x56\x77\x5f\x80\x16\xcf\x91\ \x45\x49\x01\x3e\xd3\xc5\x57\xa8\xbb\x49\x6e\x7b\x90\x2b\x3a\x97\ \x98\x31\x88\x38\xdf\xea\x5d\x8d\x44\x6d\xe9\x36\x47\xd2\xdf\xb5\ \x16\x61\xa5\xd5\xff\x00\x2b\x8d\xfe\x0d\x0a\x40\x06\x57\xb1\xac\ \x71\x44\xce\x85\x48\x9e\x23\x82\x37\xda\x99\xbe\x90\xcd\x65\x6f\ \x72\xc0\x07\x6c\xa9\x3e\x71\x49\x96\x22\xd0\x8c\x9d\xce\x05\x31\ \x76\x34\xac\x36\xe3\xf2\x26\x4f\xdc\xd6\x62\x82\xea\x59\xc7\xda\ \xb8\xe1\x06\x2a\xcc\xc0\x0a\xa2\xee\x75\x37\x02\xb6\x8d\x1e\xa7\ \x76\x12\x3f\xc2\x5a\xec\xa3\x66\x23\xbd\x25\x1a\x66\xaa\x4a\xa0\ \xcb\x1a\x19\x92\x47\x38\x5f\x68\xa9\x8e\x1c\x70\x1c\x55\x88\x0f\ \xe6\x48\x17\xe2\x89\x14\xf6\xa8\xfa\x63\x5d\x44\xf7\xac\xe2\xb8\ \x1b\x9a\x7f\xa3\x59\xfa\x8f\xea\xb0\xf6\x8e\x2a\xe5\x84\x93\x75\ \x5a\x70\x7b\xd3\x56\x30\x29\x7b\xc9\x80\x3e\x9a\x77\xa3\x5f\x4e\ \x21\x8b\x0b\xfa\x0f\x35\x94\xcc\xcc\xc4\x93\x96\x3c\x9f\x15\xc1\ \x45\x9a\x5d\xb4\x21\xff\x00\xa9\xa9\x37\x9b\x0d\xb1\x62\x3c\xd4\ \xdc\x3e\x7f\x96\x9c\x77\x35\xd6\xf1\x99\x1c\x46\xbf\xad\x75\xc7\ \x1d\x4d\xd4\x5e\x39\xc3\x6c\x4d\x52\xfa\x11\x2c\x7f\x15\x79\xed\ \xd1\x49\xf4\xd8\x92\x3c\xd5\x23\x90\xee\x8f\x4e\xfa\x43\x5f\xc2\ \x73\x98\xcb\x59\xc8\x76\x3b\xa5\x6f\xc9\x30\x86\x02\xc7\xb5\x79\ \x3f\x74\x53\xac\x89\xb1\x53\x90\x6b\x7d\xa6\x17\x9d\x33\xd4\x53\ \xbe\x37\x1e\x0d\x73\xca\x72\xb0\xaf\x52\xea\x0c\xeb\x8c\xe0\x78\ \xac\xb9\x1d\xa4\x7e\xff\x00\x02\xba\x7c\x99\x48\x27\x35\xb5\xd0\ \xfa\x68\x8a\x31\x75\x70\x32\x4f\xd0\xb5\xbe\x31\x88\xb7\x44\xe9\ \xe2\xdd\x44\xf3\xae\x64\x3b\xaa\x9e\xd4\xdd\xf4\x85\xcf\xe1\x90\ \xfb\xdf\x77\x3f\xd2\x2a\xd7\x53\x7a\x30\x99\x5b\x77\x3b\x20\xa3\ \x74\x0b\x12\x75\x5c\x4f\xbf\xe6\x62\x7b\x9f\x15\x8b\x7d\xd5\x5a\ \x08\xc4\x2a\x18\x8c\x05\x4d\x87\x8a\xc8\xea\x04\xc9\x77\x12\x9e\ \x4b\x67\xf7\xad\x7e\xa3\x27\xb4\x81\xf9\x8e\x6b\x12\x59\x14\xf5\ \x20\x49\xd9\x76\xad\x61\xf9\x2b\x6b\xa2\x3a\xac\xe4\x9d\xf7\xcd\ \x37\xfc\x40\xa4\x95\x90\x6e\xad\xde\xb1\xe3\x79\x23\x6d\x69\xc7\ \xc5\x3b\x1f\x53\x62\x9e\x9c\xf1\x07\x5f\x9a\x96\x73\xb8\x01\x57\ \x77\x2e\x72\x4e\xe0\x62\x8c\x12\xda\xe7\xff\x00\x4e\xc6\x37\xfe\ \x86\xe0\xfd\x8d\x01\x83\x23\x15\x60\x41\x1c\x83\x52\x71\x4a\x87\ \x65\x45\xd4\xdc\x0a\xcf\x9a\x76\xba\x93\x0a\x48\x40\x71\xff\x00\ \xd5\x4f\x57\x9c\xed\x0a\x1d\xcf\x34\x95\xc4\xde\x92\x7a\x51\xf3\ \xdc\xd7\x44\x30\xf3\xc5\x11\xd2\x8b\xab\x1c\x81\x54\x33\x5b\xbf\ \xf8\x88\x50\x9e\x0d\x67\xe4\xe6\x88\x92\x63\xda\xfe\xe5\x34\xd0\ \x7d\x43\xae\xf1\xbe\xb5\xf1\x57\x8e\x65\x62\x41\xf6\x91\xd8\xd2\ \x2a\x5e\x1f\x7c\x4c\x4a\x78\xf1\x4c\x45\x2c\x77\x03\x0d\xed\x6f\ \x35\xad\xd8\x2d\x78\x8d\xfe\x2c\x5c\x8e\x7e\x6b\xad\xae\x16\x54\ \xd2\xdb\x37\x71\x52\x1d\xe2\x3a\x64\x19\x07\x83\x4a\xde\xa0\x8d\ \xc4\x91\x9f\xaa\xac\xfd\x0a\xdf\xa0\x54\x75\xf0\x72\x29\x69\xdb\ \x6c\xf7\xa2\xdd\x39\x7c\x67\xb9\x19\xa0\xbf\xba\x4c\x76\x1b\x9a\ \x82\x60\x4d\x52\x47\x19\xe1\x7d\xed\xf6\xab\x4d\x2f\xa9\x2b\xca\ \x76\xd4\x76\x15\xc8\x74\xdb\x96\xe1\xa6\x3f\xd9\x68\x5f\x51\xf8\ \xa9\x04\x8f\x73\x64\xf0\x29\xab\x0b\x57\xb9\x90\x6d\x84\x1d\xea\ \x96\x56\xed\x71\x28\x55\x04\x28\xe4\xd3\xbd\x42\xe5\x2d\xe1\x16\ \xd6\xfc\xfe\x63\x53\x2b\x7a\x9d\x8c\xc6\x80\x86\xfe\x63\x64\xd4\ \xec\xa3\x15\x53\x29\x66\x21\x01\x63\xf1\x52\x90\x3b\x90\x65\x27\ \x1f\xd2\x0f\x3f\xad\x76\xf2\x98\xf6\x22\x22\x25\x98\x20\xdf\x7d\ \xf1\x5b\x22\x68\xed\xe1\x09\x8d\xf1\xf4\x8a\x42\x2d\x31\x02\xb1\ \x28\x51\xe1\x7f\xe6\xa5\x62\x67\x7d\xff\x00\xb0\xae\x19\xe5\x72\ \xab\x13\x23\xb4\xf2\x6a\x24\xf8\xa1\x5d\x48\x10\x7a\x69\xc9\xe6\ \x8d\x78\xc2\xdd\x74\x29\x05\xcf\x6f\xe9\xa4\xcf\xb4\x12\x77\x26\ \x98\x63\xb2\xa0\x0c\x6c\x37\x26\x9e\x44\x16\xd6\xf8\xff\x00\xdc\ \x7e\x7e\x2a\x3a\x64\x01\x54\xdc\xcb\xc0\xfa\x73\x55\x91\xfd\x49\ \x4b\x53\x2c\xbc\xae\xa0\x90\x36\xde\x83\x71\x16\xa1\x90\x37\x14\ \x65\xae\x62\x01\xc1\xa2\x14\x53\xa9\x74\xb1\xc1\x1c\x53\x3d\x2a\ \xe4\xdb\xcc\x63\x73\x88\xdf\x63\xf1\x43\xb8\x8b\x57\xb9\x79\x14\ \x0c\xe7\x63\xc8\xa6\xb6\x18\xea\x11\xfa\x57\x59\x1b\x82\x72\x0f\ \x9a\xf4\x76\x72\xa4\xb1\x44\xe3\xe8\xf4\xc6\x3e\x3c\xd7\x9d\x8d\ \xfd\x7b\x7f\x49\xcf\xbd\x07\xb4\x9e\xe3\xc5\x3d\xfc\x3b\x71\x84\ \x30\x31\x39\x53\x95\xfb\x77\xa9\x79\x8a\xd0\xb0\x88\xf5\x0e\xa7\ \xea\x6f\xa1\x5b\x08\x3c\x0f\x35\xe8\x2f\x15\x61\xb4\x58\xa3\x18\ \x07\x6a\xc9\xfe\x17\x2b\x14\x97\x08\x4e\x19\x4e\x40\xf2\x0d\x6c\ \x48\x16\xe6\x15\xd2\xf8\x22\xb9\xe5\xda\xb0\xaf\x89\x69\x88\xe0\ \x0d\x85\x65\xbd\x9b\xb3\x93\xa8\x57\xa6\xba\xb7\x82\x35\xd7\x70\ \xe8\xa0\x56\x55\xef\x57\xb3\x84\x14\xb5\x84\x48\xc3\xf3\x37\x15\ \xd3\x1b\x7d\x25\x20\xb6\x57\x24\x7b\x5c\xfe\x99\xa1\xcf\x15\xd4\ \x1f\x51\x6a\xb4\x97\xb7\xf7\x5c\x48\x51\x3e\x3d\xa2\xac\xa9\x70\ \xd0\xe2\x59\x88\x4f\xea\x6d\x87\xef\xcd\x6b\xae\xc0\x6d\x6e\x24\ \x49\x41\xd6\x70\x4d\x6a\x5d\xdc\x0d\x3e\xa3\x9d\xca\x8c\x9a\xc9\ \x2b\x00\x7c\x25\xca\x16\xed\x9c\xe0\xfe\xb8\xa1\xde\xdc\x4a\xcf\ \xa1\x86\x9c\x72\x29\x64\xb5\x13\x2c\xd9\x99\xa6\x3c\x9d\x80\xa5\ \xc0\x69\x1f\x61\x92\x6b\x91\x4b\xb6\x33\xfa\xd3\xd6\x6b\x1a\x0c\ \x0c\x13\xe6\xb4\x16\xfc\x14\xf8\xc8\x23\x8a\x0a\xfb\xbd\xa7\xea\ \x1f\xbd\x6d\x0d\xd6\xb3\xfa\x9c\x1a\x64\xf5\x54\x60\x37\x38\xec\ \x6a\xd9\xa0\xbc\x52\x14\x3e\x47\x71\x52\xe5\x35\x6a\x4c\xa9\xa1\ \x33\x31\x23\xda\x09\xff\x00\x5a\xbc\x70\xcd\x21\xf6\xae\x91\xe4\ \xd4\xd6\x83\x96\xd3\x89\x07\xa7\x20\xcd\x06\xe8\xe2\x3d\x3f\xe6\ \xa0\xdb\x6b\x8e\xf0\x23\xf3\x44\xbd\x61\xab\x63\xc6\x4d\x27\x14\ \x2f\x21\xf7\x6f\xd8\x55\x61\x5d\x6e\x01\xfc\xdb\xb1\xf0\x2a\x1c\ \x82\xd8\xf2\x72\x6a\xed\xec\x88\x8f\xcd\x26\xe7\xe0\x76\x15\x28\ \x89\x9b\x5c\x9b\x6c\xa3\x65\x1e\x05\x5e\xda\x17\x9a\x41\x1a\x0f\ \xbd\x52\x18\xd9\xdc\x2a\x8c\x93\x5a\x2e\xc9\x61\x6f\xa5\x77\x95\ \xbf\x6a\x96\xe8\x4d\xd4\xc9\x65\x07\xe1\xe1\x23\xd4\x23\xdc\x7c\ \x56\x69\x6c\x1c\xb1\xc9\x27\xfb\xd4\x3b\x9c\xeb\x73\x96\x35\x54\ \x0c\x5b\xd4\x6d\xb0\x72\x2b\x58\x60\x1b\x8a\x10\x83\x03\x6a\xb8\ \x45\xce\xfb\xfd\xe8\x2b\x70\x73\x82\x06\x0d\x31\x19\x57\x5d\x42\ \xb9\xd9\xa5\x12\xde\x03\x23\xe9\x50\x07\xfb\x54\xde\xdd\x43\x6d\ \x98\x20\x21\xe6\xc6\xed\xd9\x6a\xf3\x49\xe8\x74\xa9\x25\x41\xee\ \xc7\x35\x93\x6e\xa0\x46\x0f\x2c\x77\x27\xcd\x31\xc7\xca\x8b\xe3\ \x72\xcc\x72\xc7\x92\x68\xb6\x56\xe6\xe6\x7f\xf2\xaf\x35\x48\x91\ \xa6\x94\x46\x9c\x9a\xd5\x40\x96\xb6\xba\x57\xb0\xdc\xf9\xad\x7c\ \x99\x6a\x6a\x12\x16\xea\x72\x84\x41\x12\xed\x8a\x52\x32\x58\xe9\ \x15\x4b\xa9\x0c\xb3\x12\x3c\xd3\x08\x12\xd6\x0d\x6f\x82\xed\xc0\ \xac\x4e\x20\xb4\x8c\xb0\x45\x96\xdd\x8f\x02\x92\x77\x67\x6d\x44\ \x9d\xeb\xa5\x76\x96\x42\xef\xdf\x81\x4e\x74\x9b\x07\xb9\x94\x0c\ \x1c\x7f\xa5\x6e\x4d\x4d\xd4\x29\x1c\xac\xbf\x22\xaf\x22\xac\x8b\ \xad\x4e\xe2\xbd\x15\xe7\x40\xb6\xf4\xc0\x0f\xa1\xf1\xde\xb1\xfa\ \x87\x4b\xba\xb3\x3a\xd4\x6b\x4f\xea\x5d\xf1\x52\x65\x2a\xe8\x82\ \xb1\x0d\x91\xb3\x0a\x3c\x73\x14\x99\x6e\x13\xea\x07\xdc\x3c\xd0\ \x8e\x97\x19\xe1\xaa\xa0\x90\x6a\xa3\xd3\x59\xce\x89\x71\x15\xd2\ \x9f\x63\xae\x97\x3f\x07\x8a\x8e\xa1\x7d\x3d\xaa\x95\x46\x20\xe7\ \x15\x8f\xd2\xae\x82\x66\x09\x0f\xf2\xdf\x8f\x8a\xd0\xbd\x43\x35\ \xb1\x07\x77\x41\xcf\xf5\x0f\x35\x27\x7c\xa9\x66\xfc\x6d\xd8\xd6\ \xe5\xb4\x77\x63\xb0\xa2\xda\xda\x2b\x1f\xe5\xae\xb2\x39\x76\xd9\ \x45\x75\x90\xf5\xbf\x0f\x1b\x13\xa7\x24\x11\x9f\x14\x3e\xab\x7a\ \xe5\x8c\x11\x00\x91\xae\xd8\x1b\x52\xdb\xbd\x44\x16\xe2\xe6\xde\ \xdb\x64\xc4\xd2\xff\x00\x51\x1e\xd1\xf6\x15\x97\x7b\x77\x2c\xf2\ \xfb\x9c\xbb\xf8\xec\x28\x32\x39\x76\x2b\x19\xfb\xb5\x58\x28\x88\ \x61\x46\x5c\xd5\x93\x43\x95\x7d\xc0\x13\x96\xe4\xfc\x53\xb7\x31\ \x34\x97\x0a\x80\x7b\xb4\x0c\xe7\xed\x43\xb0\x84\x34\xc1\x58\xed\ \xf5\x39\xf8\xa7\x6c\x07\xab\x77\x2c\xc7\x81\xb0\xa6\xf4\x12\x36\ \xd3\x01\xc6\x2b\xad\xd9\x96\x60\x3e\x77\xad\x2b\xc9\x16\x38\xce\ \x69\x0b\x24\x32\x4a\x5f\x1b\x03\x5b\xef\x1d\x8d\x18\xcf\xb2\xb9\ \xb7\x1b\xd4\x20\xda\xa6\xad\xe6\x0a\x2c\x51\xaf\x0a\x07\xe9\x5c\ \xc3\x02\xaf\x43\x9d\xc2\xa1\xfb\x57\x3a\x33\xc6\xfd\x41\xdb\xfa\ \x45\x2f\x70\xf9\x63\xe2\xaf\xac\xe8\x79\x4f\x32\x1f\xda\x97\x39\ \x63\x5a\x82\xd1\x0c\x9d\x4d\xc0\xdc\xff\x00\xb0\xa9\xf7\x3c\x99\ \xc6\x49\x3c\x57\x1e\x02\x0f\xd7\xef\x4f\xda\xc4\x96\xd0\xfe\x22\ \x5e\x71\xed\x15\x9b\x74\x2d\x10\x8e\xc6\x0d\x6f\xbc\xac\x36\x1e\ \x2b\x3e\x79\x4b\x39\x77\x39\x24\xd5\xae\x25\x79\xa5\xce\x0b\x33\ \x6c\x00\xa3\x7a\x31\xda\x47\xea\x5c\x10\xd3\x1e\x13\xfa\x69\x8c\ \xd7\x37\xb5\x02\x38\xf4\xff\x00\x36\x5e\x7b\x29\xaa\x3b\x7a\x8d\ \xe9\xaf\x27\x93\x56\x29\x24\xc4\xbc\x87\x48\xf1\x44\x8b\xd2\x8d\ \x72\xa7\x71\x5b\xb9\x6b\xa4\x04\x0c\xed\xc1\xa2\xdb\x4a\x63\x7c\ \x37\x07\x9a\xe9\xe3\x1f\x52\xd0\xb3\x9e\x6a\x0d\x58\xf4\xcd\x6a\ \xf0\xe4\x15\x71\xb1\xac\xb8\x83\x21\x68\x5f\x66\x43\x83\x46\xb2\ \x9c\xc3\x20\x0c\x7d\x87\x9f\x8a\xbf\x59\x8c\x65\x2f\x23\xdf\xb3\ \xe3\xb8\xac\x4e\x2a\x8b\xd2\x18\x28\x7d\x86\xa1\x51\xd4\xee\x4f\ \xd1\xe6\x81\x69\x22\xa4\xc1\xb3\xed\x61\x83\x42\xea\x39\x17\x43\ \x3c\x1e\x2a\x59\xf6\x3d\x09\x0b\x24\x09\xea\x38\xcb\xfe\x51\x42\ \x95\xde\x46\xf5\x1f\xbf\x02\xab\x18\xd6\xc5\xdb\x7c\x53\x16\x50\ \x34\xd2\x06\x23\xdb\xd8\x79\xad\xc9\x27\x35\x16\xe9\xf6\xaf\x3c\ \xca\x31\x9c\x9d\x85\x7b\x1e\x93\x69\x1d\x9d\xa9\x91\x80\xc8\xfd\ \xe8\x3f\xc3\xfd\x35\x63\x8c\x48\xe3\x0d\x8c\x9f\x81\x51\xd6\xaf\ \x32\xde\x8c\x7b\x01\x5c\xb2\xb7\x3b\xa8\xa5\x3a\x8d\xc3\x4f\x70\ \x4e\x76\x15\xd1\x25\xcc\x6b\x94\x39\x07\x90\x7b\xd0\x6d\xd7\x54\ \xc0\x7c\xd6\x90\xc6\x77\xe2\xb5\x95\xd4\xd1\x18\xfd\x46\xc6\x2b\ \x8c\x90\x82\x09\x7c\x8f\xa5\xbf\xe2\xb1\xae\x23\x78\xa4\x29\x28\ \xc3\x0f\xde\xbd\xa4\x90\x47\x2c\x64\x66\xb3\x7a\x8f\x4f\x0e\x9a\ \x5d\x75\x01\xc1\x1c\x8a\x98\xe7\x3a\x34\xf3\x35\xa9\xd2\xee\xcb\ \xc6\x23\x63\xfc\xc4\xce\x9c\xfe\x61\xe2\x93\xbe\xb5\x7b\x77\xfe\ \xa5\xec\xd4\x05\x25\x58\x30\x38\x20\xe4\x1a\xd2\x36\x58\x34\x32\ \x89\x23\x3b\x67\x50\xf8\x3d\xc5\x21\xd6\x50\xac\x8e\xc9\xc3\x8c\ \x83\x4d\xd8\x5c\xac\xe9\xa1\xfe\xbe\xff\x00\xf3\x53\x73\x09\x78\ \x4c\x7d\xc6\xe9\xff\x00\x14\xdf\x2a\xc9\x85\xd5\x2d\xf5\x01\xbf\ \x14\x58\x13\x4a\x7a\xae\x72\x5b\x7a\x01\x4d\x2c\xf1\xf6\xe4\x53\ \x76\x84\x39\x84\x73\xbd\x69\x0c\x7f\x81\x66\x7f\xf9\x24\xdc\xfd\ \xbb\x0a\x3d\xb3\x08\x2d\x37\x3c\x72\x7e\x69\x77\x26\x5b\xa2\x49\ \xce\x9d\xfe\xf5\x17\xcc\x70\xb0\xae\xe4\x6e\x69\x20\xa4\xf2\xb5\ \xc4\x81\x57\x38\xa7\xad\xa3\x11\xc6\x16\x85\x65\x6f\xa0\x6a\x3c\ \xd3\x20\x56\xad\x13\x5d\xda\xa2\x56\x08\x3d\xc7\x7f\x14\x9d\xcd\ \xc1\xf3\x8f\x8a\xce\xed\x06\x9e\xe5\x23\x07\x1b\x9a\x46\x59\x9d\ \xd1\xf3\xcb\x6c\x28\x6c\xc5\x8d\x70\xd8\x67\xfa\x77\xa6\x80\xee\ \x9b\xdf\xa5\x78\x1b\x0a\xa2\x8d\x2b\xf2\x6a\x57\x76\x2c\x69\xbb\ \x28\x06\x9f\x5e\x73\x85\x1b\x80\x7b\xd2\xdd\x09\xb2\x81\x63\x8f\ \xd7\x9b\x60\x38\x06\x85\x3c\xb2\xdd\x4e\x15\x14\xb1\xe1\x54\x51\ \x24\x69\x2f\x26\xd2\x83\x08\xbf\xd8\x0f\x26\xba\x59\x23\xb7\x43\ \x14\x07\x73\xf5\x3f\x73\xf6\xf8\xac\xce\xf7\x7b\x55\xa2\xf4\xed\ \x01\xd3\x87\xb8\xee\xdf\x95\x3e\xd4\xb4\x92\x7b\xcb\x6e\xce\x79\ \x63\x54\xcb\x3e\xc0\x6d\xe0\x55\x91\x54\x1d\xfd\xc7\xe3\xb5\x6b\ \x48\xab\x33\x31\xdc\xe6\xbb\x43\x63\xe9\x34\x50\xf8\xd8\x05\x1f\ \x6a\xba\x48\x78\x6c\x11\xf6\xaa\x07\x1b\x8e\xdf\xda\xa6\x48\xc3\ \x2e\xa4\xa3\xf5\x1b\x07\x85\x8d\xc5\xb0\xd7\x0b\x6e\x31\xda\x94\ \x8e\x42\x0e\x57\x63\xdc\x56\x65\x97\xa1\x53\x90\x70\x68\xd6\xb3\ \x85\x1e\x9c\x9b\xa1\xdb\x7e\xd5\x0c\x16\x45\xca\xec\xd4\x22\x08\ \x38\x35\x7b\x13\x24\x46\x09\x8c\x64\xe5\x1b\x74\x35\x37\xd9\x96\ \xcb\x5f\xe7\x8f\x9a\xba\xb0\x96\x1f\x45\xf9\x07\x28\x7c\x1a\x1a\ \x92\xac\xc1\xc6\xc7\xda\xe2\x94\x0a\xd5\xb5\x44\xd5\xe9\x7f\x84\ \xa1\x49\x88\x2e\x33\xa4\x0c\x57\x97\x40\x61\xba\x68\xb9\x07\x71\ \xf6\xaf\x5d\xfc\x24\x9f\x85\xe9\xad\x77\x21\xe7\x65\x1e\x6b\x39\ \xdf\xaf\x0b\x1b\x1d\x56\xe9\x6d\x6d\xfd\x24\x3e\xe2\x37\xc5\x60\ \x3b\x16\x62\xc4\xe4\x9a\x25\xdc\xcd\x3c\xc6\x46\x3c\xd0\xa9\x86\ \x3e\x31\x0c\x59\x15\x46\xd4\xc7\x6a\x65\x67\x47\xe0\x71\x59\xd4\ \x6b\x45\x25\xb2\x78\x14\xca\x7b\x58\x6e\x49\x04\x60\xb9\x6c\x0a\ \x98\xee\xa2\x71\x82\xe0\xfc\x83\x59\x97\xf3\x09\x64\xd2\xbf\x4a\ \xfe\xf4\xac\xb9\x8c\x65\x99\x57\xee\x71\x58\xf0\xd9\xb6\xb5\xec\ \x11\xc9\x19\xd4\xa3\x07\xbf\x63\xf7\xac\x0e\xa3\x62\xf0\x31\x65\ \x04\xa7\xfa\x53\x76\xb7\xce\x98\xc3\x87\x5e\xe3\x39\x06\x9d\x47\ \x8a\xe1\x3f\x97\x8c\x9e\x63\x27\xfd\x29\x37\x89\xdb\xce\x23\x32\ \x30\x65\x38\x22\xb5\x6c\xae\x44\xe3\x49\x38\x61\xbf\xeb\x42\xea\ \x36\x38\x26\x48\x41\xdb\xea\x52\x37\x14\x84\x6c\xd1\xb8\x65\x38\ \x22\xb7\xdc\x43\x3d\x5e\xd8\x86\xf5\x90\x6e\x39\x14\x0b\x46\xc1\ \xc0\xdb\xf3\x2f\xdf\xc5\x69\xdb\x4c\x97\x56\xe5\x4e\x35\x63\x04\ \x56\x55\xcc\x6f\x6f\x30\xc7\x19\xca\xd2\x5f\x41\xe8\xce\x2e\x01\ \x1f\x9c\x66\x89\x68\xba\xa6\x91\x98\x64\xea\xa5\xa0\x7d\x51\x82\ \xbc\xae\xe3\xfd\xc5\x33\x03\xe9\x9b\x23\x89\x06\x7f\x5a\xd4\x0d\ \x8d\x85\x0e\x59\x82\xec\xa7\xf5\xa1\xdc\x4c\x73\xa7\xf6\x14\xa4\ \xd2\x1c\xe0\xff\x00\x6a\x02\x4d\x2f\x3b\xef\x4b\x92\xcc\x7c\xe6\ \xa4\x29\x66\xdf\x7a\xd3\xe9\xf6\x62\x35\xf5\xa6\x1f\x20\x1a\x99\ \x65\x20\x5e\xd6\xd4\x24\x66\x69\x86\x30\x32\x05\x27\x78\xc0\xb3\ \xb2\xf0\xdb\xd3\x7d\x56\xe8\xcb\x21\x44\xfa\x45\x24\x41\x2b\xc6\ \x45\x4c\x65\xee\xaa\xf6\x56\xfa\x86\xb9\x3f\xc3\x5d\xcf\xcd\x5a\ \xe6\x5f\x59\xf1\x9d\x31\xaf\x00\x50\xb5\xcb\xe9\x08\xf2\x0a\x8e\ \x2a\x84\x7f\x51\xfe\xd4\xf1\xbb\x41\x1e\x7c\x27\xa7\x16\x42\xff\ \x00\xad\x0f\x4e\x0e\x5c\xd5\x24\x95\x23\x5c\xf1\xfe\xb4\xbf\xe2\ \x4c\x87\xda\x8e\x40\xec\xa2\xb5\x31\xd0\x68\x39\x63\xa5\x14\xb7\ \xc0\xa2\xc5\x6b\x33\x9c\xbe\x54\x78\x1c\xd2\xa8\xfd\x43\x4e\x22\ \x68\xe0\x1e\x02\xea\x3f\xde\xb8\x5b\x5c\x3b\x89\x1e\xf2\x76\x90\ \x70\x43\x60\x7f\x6e\x29\xaa\x34\xe2\xe9\x4b\x32\x1f\x4e\x72\x1c\ \x76\x6a\x5a\x7b\x7b\x9b\x56\xc4\xd1\x9d\x3f\xd4\x38\xa8\x49\x7a\ \x94\x64\x1d\x69\x26\x3b\xb2\xe1\x8f\xea\x2b\x42\xcf\xad\x44\xea\ \x20\xbd\x89\x97\x56\xd9\x61\xb5\x63\xef\x14\xad\x8d\xfc\xf6\x5f\ \xcb\xd3\xea\x41\xfd\x3c\x91\x45\xbe\xb6\x8e\xe9\x3f\x15\x62\x41\ \xfe\xa4\x1c\x8a\x50\xe2\xa2\x32\xf1\x4b\xea\xc0\xfa\x1c\x7f\x63\ \xfa\x56\xee\x1c\xee\x22\x88\xc4\x36\x0e\x43\x0e\x68\x8e\x04\x83\ \xc1\xa3\xbc\x90\x5e\x26\x2e\x53\xd1\x9c\x70\xeb\xc3\x52\xae\x1a\ \x29\x74\x39\x07\xc1\x1d\xe8\x2a\x41\x07\x07\x63\x56\x95\xb5\x44\ \x18\x8f\x76\x71\x9f\x22\xa2\x53\x9c\x79\xa0\xfb\xe7\x99\x61\x87\ \x76\x63\x8a\xa0\xfd\x1a\xcd\xef\xfa\x88\x03\xe8\x5d\x8b\x1e\x00\ \x15\xe9\x2e\xe6\x56\x45\x82\x21\xa6\x28\xc6\x00\xf3\xf3\x4b\x58\ \xc2\x96\x56\x42\xde\x3f\xa8\x8f\xe6\x37\x9f\x8a\xba\x2b\x33\x00\ \xa0\x93\x59\xd7\xb1\x00\x12\x70\x06\x4d\x39\x6d\x66\xe5\x75\x11\ \xfd\xe8\xd6\x96\xe9\x02\x7a\x92\xee\xde\x2a\xb7\x17\x6c\x4e\x10\ \xaa\x81\x58\xb9\xdb\xc4\x5d\x14\xba\x8f\xd3\x9b\x4e\x6a\x92\xb1\ \x29\xe9\x26\x40\xee\x68\xf2\x24\xb3\x39\x25\x46\xc3\x76\xec\x2b\ \x2b\xac\xf5\x48\x6d\x50\xc3\x6a\xe2\x49\x8f\xd5\x20\xe1\x7e\xd5\ \x7b\x9a\x13\xd4\xae\x61\xb2\x8f\x4e\x43\x4c\x46\xc8\x3b\x7c\x9a\ \xc8\x09\x25\xd3\x99\xa7\x62\x4b\x1a\x8b\x68\x9a\x56\xf5\xa5\x24\ \xe4\xe7\x7e\x5a\x9f\x86\x3c\x8c\x9d\x80\xad\xc9\xa4\x29\xf8\x52\ \x87\x54\x65\x90\xf9\x14\x48\xee\x6e\x21\x20\xba\xea\xff\x00\x32\ \x9c\x1a\xbd\xe4\xe1\x13\x3f\xd8\x79\xa0\xb4\x97\x18\x19\x80\xe0\ \xf9\x34\x1a\x96\xb7\xb1\xce\x06\xa6\xf7\x70\x1b\xfe\x68\x77\xf6\ \xa2\x4f\x7a\x00\xaf\xf1\xc3\x7d\xab\x37\x28\x5b\x20\xb4\x4f\x4c\ \x5b\xde\x3c\x5e\xd9\xb0\xcb\xe4\x56\x75\xf8\x02\x46\x78\x64\xc8\ \xc8\x61\xcd\x3c\x4c\x77\xb6\xc4\x70\xe2\xa2\x78\x92\xe6\x3d\x68\ \xc0\x9f\x23\x9f\xd6\x92\x05\xe1\x97\x6d\x98\x53\xb1\xd0\x3b\x43\ \x31\x46\xe7\x34\xe4\x47\xdb\xa0\x7d\xd4\xd0\xae\x51\x6e\xe1\xf5\ \x13\x69\x17\x91\xe6\x87\x6b\x21\x65\xd3\x9c\x32\x9d\xaa\xc0\x66\ \x90\x97\x62\x76\x20\x55\x23\x1a\x8f\xcf\xee\x68\xd2\x28\x65\xf5\ \x17\xb8\xc3\x0a\xa5\x89\x1f\x89\x4c\xf1\xa8\x66\xb4\x35\x3a\x65\ \x90\x8d\x04\xf3\x8f\xfa\x54\xd0\xba\xc5\xe6\x47\xa6\xa6\x99\xeb\ \x17\x26\x35\x2a\x2b\x09\xd8\xb3\x12\x7b\xd7\x2c\x66\xfe\xd5\x5c\ \x37\x34\x54\x5c\x2e\x0d\x44\x4b\xdc\xd4\xc8\x74\xae\x6b\xb4\x88\ \x0c\x8b\xb9\x00\xe2\xba\x34\x57\x3a\x58\xe1\xbb\x67\xbd\x4b\x12\ \x4e\x4d\x4c\x41\x58\xe1\x94\x1a\xd5\x82\x45\x8b\x31\xe1\x4f\xdc\ \xd1\x97\xa7\xc8\x17\xf2\x8f\xd4\x54\xc3\x10\x27\x09\x23\x29\xf0\ \x77\xa3\x24\x13\x9e\x4e\xc3\xbd\x62\xec\x0d\x6d\x11\x37\x92\x40\ \x7e\x05\x4b\x98\xd1\x72\xab\xa4\x79\xef\x5d\x70\x56\x2f\xa9\xb5\ \x1f\x8a\x52\x47\x67\x39\x35\x66\x3f\x91\x69\x25\x66\x3b\x6c\x2a\ \x8c\x75\x2e\x96\x01\x87\x83\x57\xb6\x89\xa5\x7c\x0e\x3b\x9a\xb5\ \xcb\xa8\x6d\x11\x81\x85\xf8\xe6\xad\xb3\xa1\x47\x65\x27\x65\x15\ \x42\x01\xf8\xae\xae\xa0\xa4\x84\xae\xd9\xd8\xd5\x5d\xb5\x15\x07\ \xb5\x75\xc3\x70\x3b\xd5\x19\x82\x82\x7b\xd4\xa2\x27\x62\x4e\x95\ \x19\x2c\x70\x00\xef\x5b\x1d\x22\xcc\x5a\xc5\xad\xc0\x32\xb7\x27\ \xc7\xc5\x03\xa2\xd9\x85\x02\xe6\x61\xef\x3f\x40\x3f\x96\xb5\x11\ \x0b\x1f\x8e\xe6\xb3\x47\x46\x85\xdb\x03\xfb\xd3\x70\x98\xe0\x5c\ \x82\xab\xe5\xdc\xe0\x56\x67\x52\xea\x90\x59\xa9\x8e\x3c\x49\x20\ \xfc\xa0\xff\x00\xa9\xac\x5b\xbb\x9b\xcb\xd7\xd5\x34\x87\x1d\x87\ \x61\x59\xd5\xc9\x5e\x9e\x4e\xab\xd3\x52\x5c\x48\xe6\x66\x1d\xfb\ \x0a\x15\xe7\xf1\x0d\x8c\x03\xf9\x10\x29\x3c\xf1\x5e\x55\xe1\x90\ \x6e\x0e\xf5\x06\x30\x83\x54\xad\x92\x78\x1e\x6a\x78\x43\x67\xfa\ \xaf\x5b\xbe\xbf\x52\x9a\xbd\x38\x87\x61\xb5\x2b\x67\x6d\xac\x7a\ \x92\x6c\x9d\x87\x76\xa2\xda\xdb\xe5\x44\x93\x8c\x2f\xe5\x4f\x3f\ \x7a\x6e\x24\x2c\x78\xda\xb7\x24\x9d\x22\x21\x8f\x51\xce\x36\x15\ \x6b\x87\x00\x15\x1b\x79\x34\x49\x59\x63\x4c\x01\xbd\x67\xdd\x33\ \xcb\x2f\xe1\xa3\xdd\xdf\x9f\x8a\x09\xb5\x1e\xbc\xcd\x3b\x0f\xe5\ \xc7\xb2\x8f\x26\x9c\xd0\xa0\x8d\x7e\xe7\x6e\x73\xda\xa2\x14\x48\ \xd4\x22\x8f\xe5\xc5\xff\x00\xf4\x6a\xb9\x26\x4c\x9e\x49\xab\x20\ \x39\xb4\x47\x18\xc7\x3d\xa8\x17\x1d\x36\x45\x24\xc4\x4f\xfd\x27\ \x8a\xdb\xe9\x89\x11\xb8\x60\xec\x03\x01\xed\x07\x6c\xed\x5d\x73\ \xac\x48\xc0\x8c\x6f\xc5\x67\x7c\x8f\x36\xa6\x7b\x57\xc8\x0d\x1f\ \xc7\x63\x4d\x2c\x90\xdd\xa6\x92\x34\xc8\x29\xfb\xa1\x1b\xae\x99\ \x50\x10\x7e\x2b\x3a\xe2\xc1\x87\xf3\x2d\xdf\x20\x6f\x8c\xee\x2a\ \x76\x02\x0c\x96\xf3\x7c\x8f\xde\xa6\xe5\x41\x1f\x89\x8b\x91\xf5\ \x28\xae\x49\x84\xa3\xd3\x9b\xda\xe3\x60\x4d\x40\xd7\x0c\x9b\xf0\ \x7f\xb1\x14\x07\xb5\x94\x11\xa8\x6e\xad\xb1\x15\x07\xd9\x36\xde\ \x76\xa5\xc9\x11\x49\xa9\x77\x8d\xb9\xf8\xa3\x1f\x72\xe7\x92\x3f\ \x7a\xd4\x1a\x3d\x64\xeb\xb6\x8a\x50\x7e\xa0\x2b\x3e\x25\x2e\xe1\ \x40\xf8\xa7\x6c\x5b\xf1\x16\x12\x5b\xb6\xe5\x3d\xcb\x4a\x5b\x9d\ \x17\x0b\x9d\xb0\x77\xa9\x8f\x1c\x02\xb2\xe1\xf4\x8e\xd4\x09\xf3\ \xea\x63\xb0\xad\x19\x21\x02\x53\xdb\xe6\x95\xba\x8f\x9c\x60\x91\ \xde\xb7\x8e\x41\x77\x18\x18\xfd\xe8\x91\x00\x13\x23\xbd\x0c\x1d\ \xb0\xd5\x2a\x4a\x6f\xc8\x35\xa0\xcd\xbc\x82\x32\x49\x07\x35\x17\ \x17\x4c\x46\x01\xc0\xa5\xda\x42\x78\xda\xa8\x77\xa9\xe3\xee\x89\ \x62\x49\xc9\xa9\x89\x0b\xb6\x05\x54\x0c\x9c\x0a\x7e\xda\x2f\x4e\ \x20\x74\xee\x79\xa6\x57\x42\xcc\x9e\x8c\x1a\x17\x96\x1b\xfd\xa9\ \x67\x8d\x47\xb9\xce\x05\x1a\xf2\xe1\x73\xb9\x05\xbc\x0a\x4e\x47\ \x67\x39\x63\x58\xc6\x5f\x62\xb5\x0c\x40\x52\x4f\x6a\x93\x4b\xdc\ \x3e\x5b\x48\x3b\x0e\x6b\x62\xac\xd9\x62\xed\x4e\x74\x8b\x43\x33\ \x89\xe6\x5f\x60\xfa\x41\xef\x42\xe9\xd6\xad\x73\x28\x67\x18\x8d\ \x7f\x7a\xd8\x9a\x48\xad\xa0\xd4\xc4\x05\x5e\x05\x62\xd0\x52\x55\ \x14\xb3\x90\xaa\x39\x26\xb2\xba\x8f\x53\x79\xb3\x0d\xa6\x55\x38\ \x2f\xdc\xd2\xbd\x42\xed\xee\x5b\xde\x4a\xc6\x3e\x94\x1d\xea\x90\ \xc5\x3c\xab\xed\x5d\x0b\xe4\xf3\x4d\x6c\x42\xac\x71\xee\xcc\x33\ \xe4\x9a\xba\x49\x1b\x26\xa5\x60\x40\xa2\x27\x4f\x8f\x19\x63\x96\ \xf9\x19\xa8\xff\x00\xc2\xd6\x49\x32\x06\x4f\x7d\x35\x78\x00\x33\ \x6b\x6d\x10\xa9\x76\xf8\xe0\x53\x16\xd6\x82\x3c\x4d\x39\xd5\x21\ \xdc\x2f\x8a\x69\x23\x86\xd1\x02\x46\xa0\xbe\x3c\x6c\x2a\x8a\x0b\ \x3e\x49\x24\x9a\x41\x31\x82\xef\x93\xbd\x1f\x64\x04\xd4\xa2\x04\ \x5f\x9a\x0c\xec\x59\x82\x2f\x7a\x80\x37\x72\x84\x8d\xa6\x3e\x70\ \x83\xc9\xaa\xf4\x94\x31\xdb\xbd\xe3\xee\xf2\xe5\x63\x3f\xea\x69\ \x6b\xd7\x37\x17\x6b\x04\x5b\x84\x3a\x57\xe4\xf7\x35\xab\x22\x2a\ \xcd\x1d\xba\xfd\x10\x2e\xf5\x28\x1b\x82\xaa\xb0\x8e\x79\x3f\x7a\ \xa3\x02\xa7\x06\x9d\xe9\x90\x8b\x8b\xb6\x91\xfe\x91\x4e\xc9\x05\ \x99\x04\x12\x7f\x4a\xd6\xf5\xc0\xcd\x8a\xed\xc2\xe9\x93\xdc\xbf\ \xb8\xfb\x53\x6b\x79\x11\x40\x19\xf2\x7b\x1a\x8f\xc0\xc2\xcc\x4a\ \x07\x23\xe4\x80\x29\x9b\x7e\x90\x64\x19\x58\x76\x1d\xc8\xdb\xfb\ \x9a\xcd\xb8\x85\x9a\x48\xa5\xdb\x2a\x7e\xc6\x94\xb8\x89\xe3\xf7\ \x21\x38\xad\x79\x3a\x44\x41\x4e\xb7\x85\x1b\xc0\x6d\xff\x00\x61\ \x4b\x4f\x61\x71\x1a\xe5\x1c\x48\xa3\xb6\x73\x59\x99\x63\xea\xae\ \x99\x13\x08\xe7\xff\x00\x10\x69\x61\xc3\x0a\x0b\x96\x8f\x11\xcb\ \xee\x4e\xcc\x29\xe9\xe1\x52\x7d\xc3\x41\xf9\xe0\xd2\xce\xac\xa3\ \x4b\xae\x54\xf6\x3d\xeb\x7a\x40\x7e\x83\x83\x86\x56\xfd\xea\x62\ \x6f\x4c\x84\x27\x2a\x7e\x93\x5c\xca\x50\x7b\x77\x5e\xea\x7b\x55\ \x36\x23\xe0\xd4\x0e\x5a\xca\x60\xb8\x59\x07\x1d\xc7\xc5\x5f\xa8\ \xc6\x23\x9f\x5a\x7d\x0f\xee\x53\x4a\x42\xe4\xfb\x1b\x91\xc7\xcd\ \x39\x19\xf5\xec\x8c\x47\xeb\x8b\x75\xfb\x53\xde\xc1\xa7\x94\xc9\ \x02\x49\x9e\x46\xff\x00\x7a\x5d\x66\xc6\xcd\x53\x6a\x75\xc0\xf1\ \x77\x1e\xe5\xff\x00\x7a\x0b\x56\xb1\x90\x11\x8c\x6f\xf0\x68\x44\ \x11\xb0\xdc\x57\x63\x35\xda\x1b\xb5\x6a\x5d\x0a\xd7\x54\x95\x61\ \xc8\x35\x15\x76\x2c\x84\x06\xc9\xa2\x49\x73\x23\x2e\x9c\xe0\x7c\ \x50\x70\x7c\x54\x81\x52\x88\xae\xae\x3c\xd7\x50\x06\xe2\x4c\x0c\ \x0e\x6a\x7a\x7d\xab\x5c\x4b\xbe\x74\x0e\x4f\x9a\xeb\x1b\x67\xb9\ \x9b\x27\xe9\xee\x6b\x46\xea\xe2\x2b\x28\x74\x20\x05\xb1\xb0\xac\ \x5a\x09\x71\x34\x36\x70\x0e\x32\x07\xb5\x45\x64\x4b\x2c\xd7\x73\ \xf1\xa8\xf6\x1d\x96\xad\x14\x53\x5e\x4d\xad\x89\xc1\x3c\xff\x00\ \xc5\x6d\xd8\x74\xe8\xe0\x88\x3c\xa9\x81\xd9\x7c\xfd\xeb\x3b\x93\ \xb1\x9d\xd3\xba\x6b\x31\xd6\xd8\x63\xdd\x9b\x81\x5a\x31\xdb\xdb\ \xa0\xf7\x96\x73\xf1\xb0\xa3\xbe\x58\x0c\xfb\x50\x70\x05\x25\x7d\ \x72\x23\x53\x1c\x67\xdc\x79\xf8\xab\xbd\x83\xcd\x25\x94\x7b\x88\ \x00\xf1\x96\x34\xac\xf7\x8f\x20\xd1\x10\x08\xbe\x40\xc5\x2b\xee\ \x90\xea\x62\x71\xe4\xd5\xd4\x16\xf6\xa8\xc0\xab\x31\x10\x06\x5b\ \x03\x24\x9e\xe7\xbd\x35\x0c\x61\x13\x27\x9a\xeb\x78\x70\x32\x7b\ \x55\x98\x83\x96\x3f\x4a\xd2\xd0\x39\x8e\x07\xc9\xdc\xd2\xd2\xbf\ \xa3\x67\x2d\xc1\xe4\x8d\x2b\xf7\xab\xdc\x31\xd3\xf2\xdb\x9a\x0f\ \x5d\xfe\x5f\x4d\x86\x2f\xea\x39\x34\xa2\xbf\xc2\xf0\x97\xea\x3a\ \x88\x07\xd1\x88\xb9\x07\xc9\xa7\xad\xff\x00\xc4\xb8\x27\x9c\x1a\ \x5f\xf8\x55\xd5\x7a\xb3\xc4\xc7\x1e\xb4\x65\x57\xe4\xd1\xe4\x06\ \x3b\x99\xc7\xf9\x6a\x7b\x0e\xf4\xc3\xa3\xa6\x92\x36\x67\x62\x28\ \xb1\xa0\x2f\x8f\x1b\xb1\xf1\x43\xb6\x5f\x4e\xd6\x35\x3d\x97\x3f\ \xa9\xa7\xfa\x7c\x46\x31\xae\x45\xce\x91\xea\x30\x3f\x1c\x0f\xef\ \x8a\x99\x5d\x4d\x91\x63\x2c\x76\x80\x6a\x0b\xac\x0e\x48\xd4\x54\ \xf8\x03\x8d\xbc\xd2\xb3\x5f\xca\xec\x49\x19\xcf\x77\x62\x7f\xed\ \x40\xea\xac\xff\x00\x8c\x31\x17\x00\xa0\xf7\x31\x38\x03\xcd\x2e\ \x90\x7a\x8b\xaa\x39\x63\x93\xec\x6b\x13\x19\xdd\x53\x7f\x8a\x9b\ \x23\x05\x07\xff\x00\x88\xab\xad\xcc\xf9\xd4\x4a\x31\xfb\x0a\xce\ \x6f\x52\x33\xef\x0c\xbf\x3d\xaa\x56\x56\x18\x39\x07\xed\x5a\xf1\ \x88\xd2\x6b\x88\xa5\x04\x5c\x45\x9c\xf7\xc6\x7f\x7a\x5e\x6e\x9e\ \x92\x29\x6b\x79\x01\x1f\xd0\xc6\x80\xb3\xe7\x92\x41\xa8\x37\x0d\ \x13\x64\xe4\x7c\x8a\x4c\x6c\xe9\x4a\x5c\xdb\xc9\x0c\x85\x5d\x08\ \xf8\xa5\xa5\x8f\x03\x5a\x0c\x8e\xe2\xb6\x92\xee\x19\xe3\xf4\xe7\ \x01\x87\xcf\x22\x97\xbb\xb3\x08\xbe\xa5\xbb\x6b\x4e\xe3\xb8\xab\ \xbf\x55\x19\x07\xb1\x1d\xa9\x8b\x69\x4a\xb0\x75\xe4\x73\x55\xb8\ \x87\x48\xd7\x1e\xe3\xb8\xf1\x41\x56\xd2\x75\x0f\xd4\x55\x81\xf9\ \xbf\x95\x70\xb3\x47\xf4\xb6\xe3\xfe\x2b\xae\x95\x75\xeb\x4c\x69\ \x71\x91\xf1\x54\xb7\x71\x24\x7e\x93\x1e\x77\x53\xe0\xd4\x21\x20\ \x18\xdb\xf4\xf8\x35\x67\x63\x93\x9a\x91\xbf\xc5\x45\x41\x24\x1c\ \xd6\xf4\x2e\x37\xd8\xb0\x1f\x7a\xe2\x0e\x3e\xa5\xfe\xf5\x45\xd6\ \xdb\xad\x10\x47\x26\x3f\x2d\x2c\x15\x60\xbe\x73\x55\x24\x62\xba\ \x65\x65\xe4\xe7\x3e\x2a\x94\xd7\x03\xab\x8f\x15\xc4\xe2\x81\x3c\ \x9d\x85\x03\xd7\x37\x11\xda\x43\xe9\x44\x32\xf8\xc5\x2d\x6f\x6e\ \xf2\xbf\xab\x70\x49\xce\xfa\x7c\xd4\xda\xc5\xee\xf5\xa5\xdd\x8f\ \x00\xf6\xa6\xa1\x0d\x24\x81\x40\xe4\xd7\x3d\x87\xba\x64\x68\x08\ \x3a\x46\xdf\xb5\x35\x3b\xeb\x6c\x93\xed\x14\x34\x55\x86\x2d\x3f\ \xdc\xd2\x77\xd7\x78\xf6\xa9\xdf\xc7\x8a\xce\xb7\x55\xdd\x42\xef\ \x03\x42\x73\xfe\x94\x80\x52\x7d\xcd\xff\x00\xdd\x58\x29\xfa\x9f\ \x93\xda\x8b\x14\x4c\xed\xbd\x6e\x4d\x22\xb1\xa1\x73\x8e\x00\xe2\ \x9c\xb6\x83\x7c\x01\xbd\x4c\x10\x92\xc1\x54\x6e\x68\xf7\x85\x6d\ \xe3\x11\x27\xd6\x7e\xa3\xe2\xa5\xcb\x9d\x40\x09\x88\x2c\x22\x8f\ \x7f\x27\xc9\xaa\x5d\x29\x0e\x20\x5d\xf0\x77\xf9\xa6\x7a\x5c\x25\ \xb5\x4d\x8f\xa0\x6d\xf7\xa5\x54\x86\xbd\x1a\xce\x37\xe4\xd3\x7c\ \xe8\x29\x21\xcb\x6a\xed\xaa\x9d\xbd\xb6\xb6\xea\x16\xe9\x99\x82\ \xb2\x8c\x50\x64\xb6\x9a\x27\x3a\xe3\x38\xf2\x57\x20\xd0\xc4\x68\ \x4e\xfe\x9a\xfe\xa4\x55\xbc\x8b\x59\xd8\x47\x65\x74\x97\x53\xdd\ \x07\xf4\xb7\x55\x5e\x49\xa2\x42\xa6\x7b\x86\x66\x18\x0e\x72\xc3\ \xc0\xec\x2a\x88\x90\x29\xcb\x4a\xbf\xfe\x00\x93\xfd\xcd\x3b\x00\ \x52\x8a\x23\x18\x0d\xc5\x40\xdd\x94\x61\xdf\xd5\x93\x1a\x57\x80\ \x78\xa6\xe4\x94\x45\x6a\x92\x9e\x25\x97\x50\xf9\x55\xff\x00\xbe\ \x69\x48\x12\x5b\xbb\x94\xb6\x80\x1d\x24\x85\xdb\xfd\x69\x8f\xe2\ \xcd\x31\x4e\x2d\xe3\xfa\x20\x88\x22\xd7\x2c\xae\xec\x8a\xc4\xba\ \x8e\x4b\xbb\x7b\x97\x19\x2d\x8d\x64\x79\xde\xb2\x21\x91\xe2\x7c\ \xa9\x23\x15\xe8\x7a\x3c\x82\x2b\xec\x30\xca\xb0\x2a\x47\x9a\x5b\ \xf8\x97\xa4\xb4\x0f\xeb\xc2\x09\x8d\xb7\x15\xbf\x29\x2e\xa8\xad\ \x9d\xf8\x75\x0b\x36\x19\x7c\xe2\x8d\x2d\xaa\xba\xeb\xb7\x6f\xd3\ \xb5\x61\xc4\xe5\x1b\xe3\xb8\xa7\xec\x6e\x9e\x22\x19\x0e\x57\xb8\ \xab\x66\xba\x04\x93\x2a\xc5\x5d\x74\xb0\xf3\xde\xa3\x51\xdc\x72\ \x3c\x1a\xd4\x83\xf0\xd7\xf1\x60\x90\x1b\xe7\x8a\x5a\xfb\xa7\x4d\ \x01\xca\x82\x47\x83\x49\x9c\xea\x9a\x20\xeb\x8d\xd7\xff\x00\xaa\ \xbd\xbc\xd2\x44\x75\x23\x64\x0e\x45\x50\x92\xa7\x0c\x0a\x91\xe6\ \xa7\x93\x90\x77\xae\x9d\xf6\x86\x18\xc5\x3f\xbe\x30\x12\x5e\xea\ \x78\x6a\xcf\xbc\xb7\x2a\xc5\x90\x11\x8f\xa9\x7c\x51\x9b\x63\x91\ \xb1\xa2\xac\xa2\x41\xa6\x53\x82\x38\x71\xfe\xf5\x8b\x8e\xba\x19\ \xd0\xbe\x96\xe7\x6a\x69\x8e\xb4\xf5\x07\xd4\x3e\xaf\x9a\x15\xec\ \x05\x5b\x52\x80\x3e\xdc\x1a\xad\xb4\x9a\x5b\x07\x71\x48\x0c\xa7\ \x22\xa1\xfc\xd4\x91\xa5\xbe\x0f\x15\xcd\xba\xd6\xe5\x17\xb7\x38\ \x53\xe6\xaf\xa8\xd0\x22\x38\x7f\x8a\x35\x5b\xd8\xac\xe7\x2b\x41\ \x34\x49\x8f\x6a\x5e\x79\x02\x8c\x0e\x68\x29\x71\x20\xce\x07\x35\ \x5b\x58\x5a\x79\x42\x8e\x3b\x9a\xac\x68\xd2\xc9\xa4\x6e\x6b\x42\ \x42\x96\x56\xda\x46\x35\xb5\x62\xd1\x45\x25\x9a\xb4\xec\x23\x58\ \xa3\xd6\xc3\x73\x4a\x58\x43\x9c\xc8\xdc\x0f\xde\x8b\x3c\xc4\xfb\ \x57\x73\x59\xa2\x6f\xee\x4e\x74\xae\xe4\xf6\xa5\x54\x15\x6c\xb7\ \xb9\xcf\xed\x56\x45\xf7\x61\x3d\xce\x79\x3d\x85\x35\x6d\x6c\x34\ \xeb\x6f\xa7\xbb\x79\xfb\x55\xe2\x01\x41\x0b\x31\xd6\xdf\xae\x69\ \xa8\x63\x2c\x42\x20\xde\xa5\x14\xbb\x84\x45\xdb\xb0\xad\x6b\x1b\ \x64\xb5\x40\xf2\x60\xb9\xac\x67\x9e\xbb\x50\x96\x05\xb4\xb5\x2e\ \xc3\xdc\x45\x63\xce\xcc\xd2\x96\x63\x92\x4d\x7a\x47\x41\x72\x37\ \xe1\x46\x6b\xcf\xdc\xc4\x4b\x1d\xb1\xbd\x4f\x8a\xee\xee\x95\xa5\ \xd1\x62\x2f\x6b\x22\x26\x35\x15\xc0\xcd\x64\xde\xc2\xc8\xe4\x15\ \x21\x97\x62\x29\x8e\x9f\x78\xf6\xd2\x85\x6d\x8f\x7d\xf9\xad\x5b\ \x8b\x78\xba\x8c\x3e\xa4\x45\x44\xc0\x7f\xfb\x56\xb9\xc6\xec\x79\ \xf8\x2e\x67\x8c\xfb\x65\x60\x3e\xf5\xb7\xd3\x7d\x1b\x98\x3f\x98\ \x8a\xcd\x8e\x48\xac\x7b\xcb\x67\x8d\xd8\x15\x2a\x47\x20\xd1\x3a\ \x35\xd8\xb7\xb8\x1a\x8f\xb4\xd6\xb2\x9b\x9b\x80\x7d\x62\x3f\x4e\ \x50\x02\x80\x01\xec\x29\x9b\x60\x5c\xa8\x1c\x91\x81\x4c\x75\xdb\ \x61\x71\x17\xaf\x0f\xb8\x73\xfa\xd2\x16\x53\x10\x06\x4e\x1d\x0d\ \x25\xde\x28\xf6\x7f\xc3\xd6\x0b\x6a\x86\x72\x31\x85\xd8\x9e\xf5\ \xe7\x3f\x89\x24\x0d\x73\x3b\x1e\xe7\x15\xa9\x69\xd6\xa5\x9e\xdf\ \xd1\x70\xa3\x6d\xcd\x60\xf5\x97\x0d\x23\x1c\xe7\x26\xb8\x7c\x78\ \xe5\xe7\xcb\x57\xa0\x33\xa6\x6c\x83\xce\xe2\xb7\x7a\x7c\xf1\x5c\ \xda\xfa\x17\x18\x28\xfb\x03\xfd\x26\xb0\x07\xba\x05\x61\xca\xec\ \x69\xae\x97\x30\x12\x98\x9c\xe1\x5c\x73\xe0\xd7\x4c\xf1\xdc\x48\ \x4f\xf8\x93\xa4\x49\x67\x39\x65\x5c\xa9\xf1\xc5\x65\x44\xe6\x36\ \xcf\x23\xb8\xaf\x77\x6a\x52\xed\x1b\xa7\xdd\xe3\x58\xfa\x18\xd7\ \x95\xfe\x23\xe9\x72\x59\x5c\xb7\xb4\xe3\x35\x30\xcf\xfe\x72\x2c\ \x0e\x09\x5a\x3c\x49\x11\xd8\xf2\x2b\x7b\xa3\xf5\x34\x96\x3f\x4a\ \x71\xa9\x7b\x83\xb9\x15\xe5\xad\xa5\x31\xb6\x0f\x06\x9b\x46\x68\ \xdc\x49\x19\xad\xe5\x8e\xcd\xbd\x5d\xc7\x45\x8a\xe9\x3d\x48\x0a\ \xb2\x9e\x01\xff\x00\x9a\xc9\xbd\xe9\x12\x40\xf8\xd0\xc9\xf7\xe0\ \xd1\x3a\x2f\x58\x78\x58\x61\xb0\x7b\xa9\xe0\xd7\xac\xe9\xb7\x96\ \xb7\xf1\x60\xe9\x0d\xc1\x56\xae\x37\x2c\xf0\x5e\xde\x16\x6e\x9f\ \x36\x9d\x4a\xa5\xbe\xd4\x9b\xab\x2b\x61\x81\x07\xe4\x57\xd2\xa5\ \xe9\x90\xf2\xa8\x07\xc8\xa4\x3a\xb7\x47\xb6\x9e\xdf\x12\x47\x83\ \xd9\xd4\x6e\x29\x8f\xf2\x3f\x27\x8b\xc2\xa4\x83\x4f\xa7\x20\xca\ \xf6\x3e\x29\x7b\x98\x8a\x36\x47\x07\xc5\x69\x75\x7e\x9b\x2d\x9b\ \x1d\xc4\x91\xf6\x71\xfe\xfe\x29\x15\x23\x74\x7f\xa4\xfe\xd5\xdf\ \x8b\x37\x19\x52\x17\xd4\xba\x0f\x3d\xaa\xea\x7b\x1a\x0c\xc8\x62\ \x93\x6d\xc7\x62\x2a\xe8\xda\x97\x23\xf5\xab\x05\x98\x60\xd1\xa3\ \x39\x5c\xd0\x79\x15\x68\x4e\x1b\x1e\x6b\x7d\x81\xdc\x3e\x9c\x93\ \x4a\x1d\x4e\xfb\x6e\x4d\x35\xd4\x47\xb7\x35\xdd\x2d\x54\x6b\x95\ \x86\xca\x2a\x50\x68\x95\x2c\xed\xf5\xb6\x35\x1a\x5a\x30\xd7\x12\ \x99\xa4\xe3\xb5\x44\x8c\xd7\x53\xe4\xe4\x20\xa3\x70\x30\x36\x02\ \xb2\x1f\x9a\x50\xa8\x11\x76\x51\x42\x89\x4b\x8c\xb1\xd2\xbd\xfc\ \x9a\x11\x90\x38\xdc\x60\xd3\x16\xb8\x76\x50\x78\x03\x8a\x9d\x40\ \xcd\xbc\x29\xa7\x51\x5d\x31\xfe\xed\x44\x6c\xc8\x42\xa8\xc0\x1c\ \x28\xed\x56\x45\x2f\x82\x4f\xc6\x29\xeb\x44\x86\xd5\x7d\x69\x86\ \xe3\xe9\x5a\xc5\xba\xfe\xd4\x6e\x9b\x6a\xb6\xf1\x7a\xb2\x8f\x71\ \xe0\x52\xd7\x52\x4b\x35\xf2\xc6\x99\x39\xe0\x0a\x1d\xdd\xf4\xb3\ \x3e\xa1\xed\x51\xc0\xad\x3f\xe1\x53\x11\xfe\x27\x85\xa4\x00\x83\ \x0e\xa5\x04\x73\x5c\xf2\x96\x4d\xd1\xaf\xd2\x7a\x15\xd7\xe0\xc4\ \xc3\x00\xf8\x6e\xf4\x2e\xa1\xd1\x12\x43\xfc\xdb\x53\x03\xe3\x1a\ \xe3\x19\x53\xf7\x14\xf7\x52\xeb\x52\x17\x29\x19\x0a\x01\xc0\x02\ \xa2\xd7\xae\x38\xf6\xc8\x01\xfb\xd7\x09\x7e\x4e\xda\xe1\xe3\x7a\ \xbf\x4a\x9a\xd9\xb1\x22\x6a\x43\xf4\xb8\xef\x49\x5b\xdc\xcd\x67\ \x20\xcb\x1d\x3e\x6b\xe9\x7e\x9d\x97\x50\x8c\xaa\xe9\x52\xc3\x75\ \x3c\x1a\xf3\xbd\x7f\xf8\x56\x45\xd4\xf6\xcb\x90\x7f\x21\xef\xf6\ \x35\xdf\x0f\x9e\x5e\x32\x66\xc6\x54\x8d\x07\x52\x83\x21\x82\xcc\ \x06\xc7\xcd\x63\x5e\xda\xbc\x32\x10\x57\x04\x76\xa2\x4b\x0d\xc5\ \x95\xc1\x00\x30\x2b\xca\xf8\xa7\xa1\xbb\xb7\xbc\x84\x45\x73\x85\ \x60\x36\x6f\x15\xda\x6f\x1e\x67\x48\x57\xa3\xde\xfa\x4d\xe8\xcd\ \xbc\x6d\xb6\xf5\x1d\x5a\xd3\xd0\x90\x5c\x42\x35\x21\xe7\x15\x5b\ \xab\x09\x55\xb3\x18\xd6\x0f\x75\x35\x68\xde\xfd\x22\xd1\xb2\xa8\ \x3f\x9b\x15\x78\xde\xe0\x5c\x5d\xb0\x18\x40\x72\x79\x14\x19\xcc\ \xae\x72\xfb\x7c\x66\x99\x9d\x8e\x49\x9e\x70\x3e\x13\x1b\xd1\xad\ \x6c\xa5\x91\x43\xa4\x02\x34\x3c\x49\x29\xe7\xec\x3b\xd6\xb7\x20\ \xa4\x09\xff\x00\x92\x73\xfe\x60\x3f\x6a\x5d\x1f\x43\xe7\xb0\x35\ \xa1\x78\x12\x18\x16\x04\x3c\x6e\x4f\x72\x7c\xd2\x16\xe0\x3b\xba\ \x76\x35\x9c\x79\x1a\xf2\x3b\x49\x6f\x15\xd2\x1f\x7c\x67\x4b\x62\ \xb4\x66\x48\xba\xc7\x4d\x2a\xd8\xf5\xd0\x71\xe6\xbc\xff\x00\x4f\ \x9d\xe1\x9b\x41\x39\xd3\xbf\xdc\x56\x8d\xf3\x35\xbc\xd1\xdd\x5b\ \xb1\x50\xe3\x3b\x57\x1c\xb1\x57\x97\xea\x96\x6f\x69\x70\xc8\xca\ \x40\xce\xd5\x16\x73\x01\xec\x73\xb1\xe0\xd7\xb3\x96\xca\xd7\xad\ \xd8\xb1\xc6\x9b\x85\x19\xdb\xbd\x78\xde\xa7\x63\x2d\x9c\xe5\x1c\ \x1c\x03\xcd\x6f\x0c\xe6\x5c\x5e\xcb\x05\x61\xa4\xea\x4a\x7f\xa7\ \xde\xb2\x91\xb9\x04\x70\x73\xb8\xac\xab\x59\xb3\xec\x63\xbf\x62\ \x68\xac\x0a\xb6\x45\x6e\xcd\xf1\x51\xed\x3a\x3f\x5f\x92\x35\x09\ \x3e\x64\x4e\x33\xdc\x56\xea\xcf\x05\xd4\x3a\xa1\x75\x6c\x8e\x2b\ \xe6\xf6\x77\x45\x4e\x1b\xfb\xd6\xad\xa5\xcb\x29\x0f\x0c\x84\x11\ \xe0\xd7\x9f\x3f\x8a\x5e\x9a\x94\xef\xf1\x1c\x46\x37\x2d\x18\x3f\ \xe6\x43\xc1\xaf\x31\x75\x1a\x1f\x7c\x5c\x77\x53\xf9\x6b\xd7\x8b\ \xc8\xba\x84\x5e\x85\xd0\x09\x21\xd8\x3f\x63\xf7\xaf\x35\xd6\xec\ \xe5\xb3\xb9\x39\x1b\x67\x63\xe6\xb7\xf1\x5d\x71\x4a\xce\xd9\x97\ \x43\x71\xdb\xe2\x82\x33\x14\x98\x23\x6a\x3b\xe1\x86\x47\xea\x2a\ \x92\x2e\xb5\xf9\x1c\x57\x6b\x19\x48\x23\x90\x76\xa9\xe0\xe4\x50\ \xa2\x62\x0e\x93\x44\xab\x28\x9b\xa5\xf5\x21\xc8\xed\x40\xb7\x72\ \x2d\x65\x51\xb1\xe6\x98\x8c\xec\x54\xf0\x69\x68\xc6\x99\xa4\x43\ \xdd\x4d\x5b\xd0\x25\xb7\xf8\x23\x14\x68\x23\x32\x3e\x3b\x0e\x68\ \x16\xc7\xf9\x42\x9d\x0e\xb1\xc4\x14\x63\x38\xc9\xac\xfa\x1f\xff\ \xd9\ \x00\x00\x09\x4c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x2f\x08\x06\x00\x00\x00\xa5\x82\x49\xc9\ \x00\x00\x09\x13\x49\x44\x41\x54\x78\x5e\xd5\x9a\x5b\x6c\x1c\xe5\ \x19\x86\x9f\x7f\x66\x67\xcf\xde\x4c\x36\x5e\x27\x3e\x80\x9d\xf3\ \x81\x84\x2c\xa0\x0a\xaa\x4a\x64\xab\xaa\x52\x0b\x2a\xb8\x42\x42\ \xaa\x7a\x93\x10\x5a\x62\x6e\x12\xae\x7a\x99\x46\x2a\xf4\xa6\x52\ \xb9\x6b\x25\xa0\x44\xea\x55\x11\x28\xa1\x2a\x55\x91\x2a\x12\x50\ \x4b\x4f\x10\x6c\x48\xdd\x92\xc4\xe0\xc4\x89\x63\x3b\x4e\xf6\x64\ \xaf\x77\x67\x67\xfe\xaf\x23\xef\x4a\xd3\xd5\xe2\x20\xf0\x41\xe2\ \x93\x5e\x7d\xb3\xb2\x56\xfa\x1e\xbf\xdf\xec\xfe\xaf\x66\x95\x88\ \xf0\x55\xae\x10\xb7\x29\xa5\x14\x5f\xa4\xde\x7d\x8a\x01\x81\x41\ \x2d\xf4\x0b\x64\x35\x20\x80\x86\x61\x11\x46\x04\xce\x7e\xfb\x05\ \xc6\xf9\x02\x25\x22\x9f\x0f\xb0\x5c\xfd\xe3\x29\x72\x02\xc7\xad\ \x64\x34\x97\xda\x94\x22\x9e\x4e\x90\x48\x27\x11\x1a\x95\x9f\x2a\ \xe6\x16\xca\x55\x66\x2e\xdf\xe2\xcd\x1f\xb9\x67\x05\x4e\x7c\xe7\ \x05\xce\xb2\xbc\x5a\x3e\xc0\x7b\x47\xb0\x05\x4e\x59\x89\x68\xae\ \x67\xff\x9d\x64\xb6\x75\x21\xe9\x3d\x90\xe8\x87\x98\x05\x66\x05\ \xdc\x22\x76\x65\x0c\x4a\x93\xec\x29\xef\x60\xf2\xe2\x4c\xee\xe2\ \xf0\x95\xdc\x1f\x9f\xac\x3e\x2f\x70\xe2\xe1\x17\x29\xb0\x8c\x52\ \x22\xf2\xa5\x56\xe8\xfd\x23\x64\x05\xce\x74\xef\xeb\xb7\x7b\xee\ \xdd\x89\xf4\x3e\x04\xdd\x8f\xa3\x42\x9d\x80\xdb\x90\x5c\x04\xa9\ \x00\x49\xa0\x02\x0b\xaf\xc3\xc4\x5b\xb8\x93\x61\x46\xff\xf9\x09\ \x13\x63\x53\xc3\x02\xdf\xfc\xde\x6d\x20\x44\x64\xe5\x01\x3e\x38\ \xc2\x80\xf8\xed\x8e\xfb\x77\xd8\x1b\xee\xde\x01\x7b\x7e\x82\x8a\ \xde\x07\xb8\x88\x5c\xf2\xf5\x31\xc8\x28\xc8\x35\x94\x4c\x82\x5c\ \x47\xc9\x34\xa8\x7d\xc0\x37\xa0\xf8\x36\x5c\x70\x98\xb8\x70\x83\ \x91\x77\x2f\x2c\x42\x3c\xe2\x43\x7c\x19\x00\x83\x2f\x57\xa7\xfa\ \xbe\xb6\xd5\x4e\xdf\xb5\x15\xb5\xef\x59\x54\x74\x0f\x22\xa3\x78\ \xfa\x35\xb4\xfe\x2b\xf8\x10\x48\x01\x64\xae\xe1\x80\x54\x01\x07\ \xf4\x5b\xe0\xfc\x0c\x22\x73\xb0\x79\x94\x9e\xad\xeb\xe9\xdf\xd9\ \x9d\x15\x78\x99\xa5\x6b\x65\x01\x46\x86\xf8\x69\xaa\xc7\xce\xda\ \x5b\xd2\xa8\xbb\x7e\x08\x21\x1b\xd1\x7f\x46\xbc\xd7\x50\x32\xe6\ \xeb\x2a\xc8\x14\xc8\x4d\x14\x05\xa0\x8c\xa2\x09\xa1\x35\x68\x05\ \xee\x47\x60\xd6\x31\xfa\x3e\x65\x57\xb6\x97\x94\x1d\x1b\x3c\x7d\ \x98\xc1\x55\x07\xf8\x70\x08\x1b\x38\x9a\xd9\xdb\x83\xb1\xf5\x2e\ \x54\x6c\x1f\xe8\xb7\x10\xef\x55\x58\x1c\x7c\x62\xb1\x2b\x99\xf4\ \x35\xb3\x08\x81\x14\x81\x32\x50\x03\x31\x1a\x00\xda\x00\x51\xa8\ \xb0\x83\x5a\x7f\x8b\x1d\xfb\x7b\x01\x7e\xb9\x16\x9f\x42\x83\x89\ \x4d\x1d\x76\x68\x9d\x87\xd9\xf3\x30\xc8\x75\xc4\x7b\x11\x05\x40\ \x18\x30\x40\x3c\xa0\x0a\xcc\x83\x94\x51\x94\x40\xe6\x41\x0b\x78\ \x26\xe8\x26\x44\x53\xe6\xba\x39\xec\x74\x86\x68\xdc\x1a\x38\x75\ \xb8\x9e\xfd\xfe\x4b\x0c\xaf\x26\xc0\x81\x78\x26\x81\xd1\x69\x03\ \x16\x78\xaf\xa0\x64\x1c\x21\x0a\x58\x80\x02\xd1\x80\x83\x62\x01\ \xa8\x80\xf8\xd2\x1a\x3c\x23\x90\x0e\xa4\x14\x18\xb1\x05\xba\xef\ \x48\xf1\xc9\xc7\x37\x07\x61\x75\x01\xb2\x56\x32\x84\x69\xdf\x01\ \x52\x06\xef\x0d\xa0\x88\xc2\x02\x15\x02\x51\x80\x06\x71\x01\xa7\ \xd1\x35\xcd\xc1\xcd\xc0\x81\x16\x08\x85\xb2\x5c\xd6\xa5\x23\x08\ \x1c\x58\xd5\x15\x52\x90\x35\xe3\x06\x18\xbe\xf4\x2c\xb8\xbe\x0c\ \x01\x55\x03\x51\x04\x25\xa0\x15\x88\x01\x9e\x02\x6d\x12\x38\x10\ \x5c\x37\xef\x07\x94\xa9\x11\xed\xad\xcd\x37\xb1\xf6\x5c\xc4\xab\ \x43\x7d\x0c\xdc\x10\x28\x0d\x0a\x50\x12\x00\x88\x6a\xa8\x39\xa0\ \x2f\x82\xa1\xdb\xa5\x4c\xd0\xda\x5d\x23\x00\xed\x82\x0f\x80\xe7\ \x40\xdd\x04\xc3\x08\x86\x57\x80\xd0\x04\x00\xc4\x58\x1a\x22\x70\ \x01\xb7\xa2\xd1\x6b\xe1\x80\xc0\xd9\xda\xad\x6a\xae\x5e\x98\xc3\ \x4a\x87\x9b\x0e\x48\x53\x04\x25\xed\x2e\x34\x7b\x2b\x40\x13\xcc\ \xad\xd6\xa9\x3b\x1e\x40\x61\xb5\x1d\x18\x76\xe6\x9c\x5c\x6d\xfa\ \x12\xf1\x81\x2c\x78\x51\xc0\x69\x77\x80\xa6\x03\x5a\x81\xb4\x02\ \xd0\x7e\xcd\x42\xa1\x46\x31\x5f\x43\xc1\xdb\xab\x0d\xf0\x7a\x75\ \xc6\x39\x56\x99\xbe\x45\xaa\x78\x05\x33\xd4\x07\xde\x65\x50\x04\ \x45\x00\x81\xa6\xe9\x44\x03\xa0\xcd\x0d\x51\xd4\xe6\xea\xd4\xab\ \x0e\xf9\xd9\x3a\xc0\xe9\x55\x05\xb8\xfb\x57\x9c\x1d\x19\xd2\xe3\ \x4e\xd1\x1d\xc8\x9f\x7f\x8f\xce\xec\x5e\x70\xaf\xb5\xde\xc0\xb4\ \xb9\xd0\x0a\x21\x2a\xe8\x40\xe1\x4a\x91\xd9\xe9\x3a\x4e\x55\x4e\ \xfa\x5f\x62\xe3\xab\xed\x00\x02\x87\xe6\xaf\xd4\xcf\x98\x89\x49\ \xe6\x26\xd6\x91\xec\xea\x01\x77\x8a\xb6\x12\x45\x70\x2f\xb4\x0f\ \x0e\x90\xbf\x52\xa0\x52\xac\x71\x75\xdc\x05\x38\xb1\x26\x81\x26\ \xeb\xbb\xf0\xc1\x11\x39\x39\x37\xee\x1d\x14\x7d\x1e\x76\xef\x26\ \xb9\x21\x0e\x52\x03\x05\x48\x9b\x0b\x01\x40\x50\x94\xa6\xca\x94\ \xae\x97\x98\xf8\x04\xb4\xcb\x33\x83\x2f\x31\xbe\x66\x89\xec\x9e\ \x5f\x73\xe8\xdc\x11\xc9\x19\x56\x68\x60\x56\x46\x71\x7a\x33\xd8\ \xbd\x11\x0c\xd3\x20\x28\x05\x42\x5b\x69\x4f\x33\x3b\x76\x93\xf9\ \xe9\x0a\x37\x66\x42\x94\xf2\xee\x59\x3f\x0b\x3c\xbf\x36\xc7\xe9\ \x20\xd0\x64\xcd\x70\x68\xa0\xff\x9e\xfd\x64\x76\x3d\xc8\xdc\x8d\ \x79\xae\x9e\x9b\xa4\x30\x51\xc2\x99\xaf\x83\xb4\x0f\xef\x54\x1c\ \x6e\x5d\xce\x33\xf1\xde\x35\xe6\x26\x2a\xd8\xa1\x1e\xb6\x6d\xd9\ \x8e\x15\x0e\x65\x7f\xff\x24\xd9\x35\xcb\xc4\xc3\x43\xd8\x22\x9c\ \xd9\xfe\xad\xfd\xc4\xfa\xba\x91\x7d\xcf\x11\x7d\x60\x81\xfc\xdf\ \x8e\x93\xff\xf0\x1d\xf2\x97\x0b\x98\x11\x83\x70\x3c\x4c\xb3\xa8\ \x96\xaa\x88\x0b\x86\x01\xf1\xb4\x22\xb1\xcb\x44\xb9\x37\x61\x3c\ \xce\x3d\x7e\x24\xfd\xfb\xfb\x63\x67\xfc\x3c\xb0\xd9\x5f\xa3\xc2\ \xaa\x3b\xa0\xe0\x54\xef\x7d\x5b\xed\x58\x26\x85\x6c\x3f\x84\xb2\ \x76\x63\x46\xee\xa6\x33\xf7\x12\x3d\x8f\x1c\x24\xd5\x73\x3f\xd1\ \xd4\x36\xd0\xeb\x41\x92\x40\x84\x44\x26\x49\xe7\xee\x28\x5d\xf7\ \x1a\x24\x07\xc0\x08\x2b\x54\x4c\x50\x03\x33\xd8\x49\x8b\xbd\x7b\ \x7b\x6d\xe0\xd4\xea\x39\x10\x04\x9a\x63\x89\x2e\x3b\x97\xd9\xd9\ \x07\x9b\x1f\x44\x75\x7c\x17\x58\x00\x99\x41\x7b\xbf\xc5\xea\xab\ \x61\x77\xf6\x53\x9f\x08\xe3\x95\x22\x28\xb5\x00\x46\x05\xc3\x98\ \x07\xe5\x80\x12\x14\xcd\x13\xa8\xa9\x08\x6d\xf4\x30\x32\x25\xb6\ \x5c\x4a\x33\x79\x2d\x9f\x3b\x75\xb8\x72\xcc\xcf\x03\xcf\xaf\x0a\ \xc0\x47\x43\xd8\x02\xc7\xfb\x1e\xd8\x09\xe9\x18\x6c\xfc\x31\xc8\ \x3c\x30\x8d\xb8\x3f\x6f\x9e\xff\x5d\x54\xa4\x4a\x64\x2b\x88\x63\ \xa2\x2b\x1e\xd4\x1c\xc4\x71\x40\xd5\x17\x87\x56\x86\xc2\x08\x1b\ \x7e\x6f\x9e\x4a\x23\xf3\x90\x8a\x70\xef\x9e\x8d\xbc\xf9\x97\x4f\ \x8f\xbf\x76\x98\x93\x8f\xf9\xab\xb4\xe2\x00\x0a\x8e\x77\xed\x1b\ \xb0\xc3\xa9\x30\x6c\xfe\x01\xa0\x9b\xc3\x3f\xdb\x88\x93\x00\x34\ \x73\x00\x55\x94\x55\x21\xb4\xee\xff\x03\xbd\x6a\x3f\x4e\x37\xcf\ \x4a\xf4\xcd\x11\x9f\xed\x60\x77\xbf\x6d\x8f\x5e\x2e\x1c\x03\x7e\ \xba\xa2\x99\xf8\xdf\x43\xd8\x66\x38\x74\x6c\xc3\x8e\x5e\xe8\xb6\ \x21\xf6\x75\xa0\x84\xb8\xcf\x81\x3e\x07\xcc\x36\x24\x37\x41\x6e\ \xa1\x24\x8f\xa2\x08\x52\x06\x16\x9a\x71\x32\x08\x30\xcd\x1e\x64\ \x86\xb0\x40\x57\x95\xad\x9b\x12\x58\x21\xe3\xf8\xab\x87\xb1\x57\ \xda\x81\x63\xf6\xe6\x4d\x98\x31\xa0\xf7\x31\x90\x22\xe8\x77\x50\ \xfa\x4f\x80\x19\x84\x19\x34\xe0\x82\xd4\x83\x44\x26\xea\xb3\x8e\ \xd0\xed\x20\x9b\x34\xd6\xb8\xe2\xce\xce\x28\x97\xa6\x2a\x81\x0b\ \x2b\x04\x70\x74\xc3\xce\x5e\xb0\xc3\x10\xda\x06\x14\xc1\xfd\x05\ \x50\x6a\x9a\x18\x00\x2c\x4a\x74\x70\x0a\x0d\x00\x02\x05\x6e\x04\ \xc7\x0b\x43\x41\x46\xd8\x5e\x8c\x72\x71\xaa\x72\x34\x00\x58\xe6\ \x0a\x8d\x3e\xcd\xc1\x54\x5f\xa7\x6d\x25\xa2\xd0\x77\x00\x74\x19\ \xea\x7f\x00\x6f\x06\xb4\x06\xed\x82\x38\x0d\x69\x0f\x3c\x69\x8d\ \x8f\xae\xd9\xe8\x4b\x25\x32\x31\x02\xd0\x6e\x83\xb8\x29\xf4\xa4\ \x2c\xfb\x95\x27\x38\xb8\x22\x0e\x28\x78\xb4\xa3\x6f\x03\x44\x2b\ \x10\xd9\x05\x7a\x0e\x6a\x6f\x80\x98\x41\x90\x41\x5a\x0f\x70\xa8\ \xb6\x2c\xd0\xda\x83\x55\x6a\x51\xc4\x80\x18\xf4\x26\x4d\xae\x15\ \xeb\x8f\x02\x27\x57\x62\x85\x06\x93\x7d\x9d\x90\xee\x06\x11\xf0\ \xae\x80\x73\x15\x94\xd1\x9e\x85\x59\xe2\x04\xaa\x83\x4c\xd0\xb2\ \x3e\x81\x0b\xc1\x7b\x36\x5a\xf4\xcc\x56\x01\x06\x97\xed\xc0\x7f\ \x9f\x66\x30\xd6\x65\x63\x5a\x21\x48\xf6\x83\x37\x07\xf5\xf7\xc1\ \x6b\xfd\xef\xb7\x9e\x42\x55\x6b\x98\x09\xee\x85\x25\x52\x99\x6a\ \x55\x26\x8c\x85\x26\x13\x33\xf8\xdd\x13\x7a\x10\x38\xbd\x1c\x07\ \x0e\xc4\x7d\x00\x42\x75\x88\xa6\x1b\xeb\x53\xbf\xd1\x00\x60\x89\ \x2c\xbc\x84\x0b\xc1\x3a\xb5\x01\x05\x0e\x01\xc4\x4c\x88\x40\x26\ \x0a\xd3\x0b\x1c\x58\x2e\x40\x36\xde\xb5\x0e\x22\x11\x10\x5f\x5e\ \x05\x9c\x29\xf0\xda\xd7\xa7\x1d\x22\x00\x69\x59\xa1\x60\xf0\xd6\ \xbf\x09\x41\x25\x43\x74\x45\x1c\x80\xec\xb2\x56\x48\x41\x6e\xd1\ \x01\x2b\x0c\xde\x3c\x48\x15\x3c\x09\x56\x08\x5a\x6f\x62\x54\xcb\ \x2a\xb5\x48\xb7\xf7\x60\xf7\x69\xad\x94\x85\x1d\x12\x80\xdc\xca\ \x04\x1a\xf1\xc0\x9d\x07\x6a\xe0\x85\x02\x07\x68\x5b\xa1\x16\x90\ \x76\x88\xf6\xeb\xa5\xca\x32\x56\x32\x0f\x54\x4a\xe0\x4c\x82\x11\ \x05\x49\xb6\x38\x10\xb8\xb0\x74\x9c\x6c\x17\xb7\x1d\x9e\xd9\xea\ \xca\x04\x1a\x81\xd3\xf9\x0b\x57\x07\xd7\xef\xe8\x83\x6b\xe7\x21\ \xdd\x01\x66\xb8\xe9\x80\x00\x7c\x8e\x03\x00\x5f\x60\xf0\xba\x86\ \x8f\xf2\x8b\x00\x17\xca\x00\x9c\x5e\xae\x03\xcf\x4c\x9f\x1b\xcb\ \x89\x27\x76\x7a\xcb\x46\x98\xaf\x40\xac\x0c\x49\x13\x0c\xb9\xfd\ \x4d\x0c\x2d\x03\x7f\xee\xe0\x63\x65\x5f\xa5\xc5\xeb\x8b\x65\x18\ \xc9\x53\x50\xf0\xcc\xb2\x9f\x52\xfe\xe7\x69\x06\xb4\xf0\x72\xbc\ \xb3\x23\x97\x1e\xe8\x22\xd5\x99\x04\xcf\x83\x88\x03\x51\x17\x62\ \x9e\x2f\x01\x73\x09\x17\x96\x1a\xb8\x58\x87\xd9\x6a\x20\xfc\x56\ \x83\xd1\x22\xcc\xd4\x18\x16\xe1\xd0\xe3\xbf\x61\x78\xc5\x9e\x52\ \x9e\x1f\xe2\xa0\x86\xa3\x56\x2c\x9c\xed\xf0\x21\x92\xa9\x18\xc9\ \x8e\x30\xa6\xa2\x01\xe4\x8b\x84\x80\xd6\xb4\x4b\x1a\x5d\x04\x66\ \x9b\xc7\x6b\x69\xe8\x66\x0d\xae\x2f\xc0\xa4\xaf\x79\x97\x71\x81\ \x13\x7e\xa0\x39\xb9\x6a\x8f\x59\x47\x86\xc8\x8a\x30\xa8\xe1\x80\ \x40\x2e\x9a\x08\x63\x18\x8a\x64\x32\x0c\x5a\x13\xb6\x0c\x22\x26\ \xa0\x35\xe2\x0b\x69\x40\xd5\x5d\x4d\xb9\xa6\x11\x11\x6e\x56\x05\ \xc7\x6b\x98\x20\x70\x56\xc3\xdb\x22\x9c\x1e\x0c\x1e\x2f\xb1\x4a\ \x00\xed\xfa\xd7\x11\xb2\x5a\x18\x08\x7e\x1b\xc1\x7e\x01\x5b\x0b\ \x34\x5e\x37\xbb\x50\xd0\x30\x12\xfc\x76\x82\xf1\x87\x5e\x6c\x1f\ \x78\x19\x00\x5f\xcd\xfa\x1f\x35\x30\x04\x37\x1b\x34\xa6\xbe\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x0f\x35\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ \x00\x00\x0e\xfc\x49\x44\x41\x54\x78\x5e\xed\x98\x79\x70\x55\x65\ \x9a\xc6\x7f\xe7\x9c\xbb\x24\x37\xb9\xd9\x37\x92\x90\x18\x93\x10\ \x96\x48\xd8\x09\x22\x8b\x08\x11\xd3\x80\x8a\x2c\x3a\xed\x82\xda\ \xd3\x6a\xab\xd3\x33\xea\xf4\xd0\x5d\x6d\x4f\x4f\x4f\xd9\x5d\x6d\ \x77\x57\x97\x4d\x4d\x6b\x4f\xd9\xa3\xa3\x08\xa3\xd0\x2c\x12\x44\ \x90\x45\x16\x43\x00\x21\xec\x4b\x02\x04\xc8\x9e\x7b\x73\xf7\xfd\ \xdc\x73\xbe\xb9\x4d\x4e\x0d\x50\x4c\xb5\x50\x53\x16\x76\xd5\x3c\ \x55\x4f\x9d\xf3\xd7\xbd\xef\xef\x3c\xef\x7b\xdf\xef\x5c\x49\x08\ \xc1\x5f\xb3\x64\x6e\xad\xfe\x1f\x00\x21\x04\x86\xb9\x11\xfd\x0d\ \x54\x3f\xae\x28\xbf\x79\x31\x2b\xbb\xf9\xbb\x66\xf3\x67\xf3\xe1\ \x1e\xc0\x0a\x48\xb7\xa0\xf6\x9b\x4b\xe0\xdb\xf0\x5c\x69\x61\xd1\ \x9e\xc5\x23\x47\xbe\xf4\xb3\xa5\x4b\x47\xbd\xba\x71\xe3\xcc\x91\ \xd9\x19\xab\x07\xdb\x27\x3c\x42\xd5\x3f\xd6\x00\x26\x40\xfa\x46\ \xb6\xd0\x63\x92\x54\x37\xaa\x72\xc8\xef\x9f\x28\x2b\x49\x1f\x23\ \xfa\x49\x3e\xb3\x8b\xe2\x21\xe5\xd4\xbf\xf2\x52\xc6\xa0\xaa\xd1\ \xef\x24\x55\x4d\x6c\x34\x8d\xfc\xf9\x07\x96\x92\x05\x15\x80\xf9\ \x1b\x07\x90\x6c\x32\x3d\x39\xdd\x22\x93\x67\x76\x91\x77\x67\x29\ \xe6\x54\x0f\x2d\x9f\x6d\xe4\xc2\xdc\x17\xf9\x43\xc3\x1b\x6c\x7f\ \x6b\x5e\xf2\xd8\x05\x73\x16\x91\x76\xc7\x3b\xc8\xe6\x5c\xc0\xf2\ \x8d\x02\x90\x55\x35\x68\x8b\xbb\xc8\xac\x4a\x27\x54\x54\xca\xd1\ \xfa\x1f\x71\x62\xda\xd3\x64\xa7\x58\x28\xce\xb0\x32\x69\x90\x99\ \x67\xe7\x55\x93\x3f\x62\xdc\x64\xd3\xa0\x39\x0f\x00\x76\x40\xfe\ \xc6\x00\x1c\xb5\x8f\xd8\xb3\x3f\x35\x97\x8f\x87\x3e\xc6\xaf\x86\ \xbf\xce\x7b\xd2\x4c\xf6\x6c\x5c\xc3\xb9\x9d\x6b\x59\xf3\x5f\x2b\ \x69\xf8\xbc\x99\x9a\x0c\x95\x9f\x3d\x3a\x8e\xbc\x92\x09\xdf\x97\ \x53\x6e\x2b\x05\xac\xdf\x0c\x80\x71\x7f\x94\x1a\x87\xbd\x30\xf3\ \x9f\x47\xff\x8e\xc7\x7a\x9f\x67\x45\xdb\x20\x0e\x7c\xf6\x19\xc3\ \x93\x83\x2c\xbe\xff\x7e\xe6\xd5\x4d\xe3\xdc\xb1\xbd\x44\xbb\x0e\ \xb0\x64\x4e\x1e\x8b\xea\xa7\x0d\x91\x73\xee\x7e\x0a\x48\x07\x94\ \x5b\x0f\xa0\xab\xc9\x58\x93\xa6\x5d\x6a\x8e\xe3\x3b\x7c\x89\x1e\ \x17\x04\xfc\x1e\x0a\xf2\x8b\xe8\xe8\x74\x93\x9d\x53\xc0\xb3\x7f\ \xfb\x34\x87\x0e\x1d\xe1\x8b\x3d\x8d\x3c\xff\xe8\x24\x86\x0d\x9f\ \xf0\x98\x29\x7b\xe2\x68\xc0\x76\xcb\x01\x64\x49\xa8\x72\x24\xd2\ \xcf\x85\x0b\x70\xb1\x95\xf4\x90\x8b\x7c\x2d\x48\x47\x57\x0f\xfd\ \x2e\x1f\x9d\x9d\x7d\x09\x3e\x2b\x4b\x9e\x5c\x42\xf3\xe1\x66\x22\ \xfe\xf3\xbc\xfc\x9d\x39\x69\x49\x39\x13\x9e\x03\xb2\x00\xf3\x2d\ \x05\xd0\x0f\x3e\xa7\x4a\x51\xd7\x3b\x92\x25\x42\x65\x5e\x94\x07\ \x94\x3e\x06\xc5\xad\x9c\x3c\x73\x86\x68\x34\x8a\xd3\xe9\xc3\xe3\ \x09\x60\xb3\xd9\x98\x3b\x67\x2e\x1b\x36\xac\xe2\xae\xd1\x39\xcc\ \x98\x3a\x6d\x96\x39\x77\xda\x9d\x40\x0a\x20\xdd\xd2\x21\x16\x7d\ \x3b\x97\x9b\x0a\xf4\x96\xe2\x64\x8d\xb8\x2b\x80\x39\xa9\x94\xf6\ \x0e\x27\xbd\xbd\x9d\x78\xbd\x41\xfa\xfa\xbc\xc4\xe3\x1a\xa5\xb7\ \x95\x30\x7c\x44\x35\x3b\xb6\xae\x62\xc9\x43\x93\x93\x32\x06\xd5\ \xbe\x2c\x49\xa6\x5c\xc0\x72\x4b\x01\xf4\x9e\x2d\x1e\x3d\xd2\xf3\ \xda\x59\x4f\xaf\xe8\x77\xfb\x49\x32\xe7\xa1\xc6\x0b\xb9\x74\xe9\ \x2c\x1e\x8f\x0f\x97\xeb\xcf\xf6\x03\x70\xef\xbd\xb3\xe8\x73\x74\ \x61\x57\x7a\x78\xe4\xc1\xfa\xb1\xd6\xe2\xf9\x8f\x03\x69\x80\x7c\ \xcb\x00\x00\x4d\x3b\xf5\xcb\x55\x7d\x21\xc7\xb6\x76\xaf\x93\x70\ \x20\x4c\x8a\x6d\x04\xe7\xce\x9d\xc5\xeb\x75\x25\x1c\xc4\xe1\xf0\ \x12\x89\xc4\x48\x4a\xb2\x24\x20\x66\x73\xe4\xc8\x1e\x1e\x9e\x33\ \x86\x82\xb2\x71\x4f\xa5\xd9\xf2\xcb\x80\x24\xbd\x12\x93\x5a\x4e\ \xa6\x77\x28\x63\xbc\xa3\x52\x1f\x70\x54\x5b\xe6\xee\x2e\xa1\x08\ \x50\xbe\x6e\x00\x80\x68\xd4\x7f\x76\xe9\x05\x5f\x9f\xc7\xd9\xdf\ \x4f\xaa\xad\x82\x96\xd6\xfe\x44\x0a\x2d\x78\x3c\x6e\xdc\xee\xc0\ \x65\x08\x21\x60\xf4\xe8\x91\x98\xcd\x32\x5e\xe7\x31\x9e\x7d\xf2\ \xa1\xc2\xfa\xc1\x35\x6f\xb9\x66\x94\xae\x88\xcd\xbc\x6f\x1f\xdf\ \x7f\xa9\x35\xe5\xe7\xaf\x35\xd9\x97\xbd\xb4\x36\xfb\x0f\xbf\xfa\ \x78\xc2\xec\xba\xfd\x33\x2c\xcc\x07\x6c\x80\xfc\xb5\x9e\x46\x01\ \x0b\x23\xfe\xe5\xb7\x23\xa6\xac\x10\x4f\x3e\x7e\x50\xdc\x57\xff\ \x5b\xb1\x60\xe1\xc3\xe2\xcd\x37\x3f\x14\x9f\x7c\xd2\x24\x0e\x1d\ \x6a\x15\x81\x40\x58\xfc\x59\xfb\x9a\x0e\x89\x1f\xff\xf8\xa7\xa2\ \xe5\xbc\x10\x8b\x9f\x7c\x57\xb4\x7c\xf1\x92\x10\xde\xef\x0a\xe1\ \x79\x58\x88\xde\xe9\x42\xb4\x8f\x14\xc2\x31\x5b\x88\x4b\x9b\xc4\ \x6f\x6e\xcf\xdc\x0b\xdc\x0e\x24\x7d\x6d\xa7\x51\x31\x1c\xb9\xaf\ \x82\x8c\x5f\x85\x57\x34\xeb\xbe\x73\xb1\x0b\x0e\x07\x45\x85\x53\ \xe9\xe8\x80\xd6\xd6\xc3\xb8\xdd\x6e\xa3\x95\x3c\xe8\xba\xa0\x66\ \x54\x35\x56\x6b\x12\x8e\xae\x23\x3c\xf8\x60\x3d\x6f\xad\x6b\x43\ \xf8\x1a\xc0\xb5\x0f\x7c\xdd\x10\x8e\x43\x7f\x2b\x64\xb7\x33\xaf\ \x7e\x76\xcd\x44\x99\x45\x2b\x0b\x18\xdf\x57\xce\x28\x77\x39\x35\ \xff\xe3\x0a\x6a\x7a\xcb\x29\x37\xd2\x91\xb8\x4a\xa6\xbf\x50\xac\ \x35\xa2\x52\x88\x42\x85\x96\x92\x51\xa9\x64\x0d\xaa\x52\x07\x97\ \x8c\xcf\x29\xce\x1c\xf6\x72\x85\x3d\xb9\xc0\x1d\x35\xff\xe0\xfd\ \x0e\x0a\x33\x32\x28\x2a\x9e\xcf\xe1\x23\xcb\x29\x29\x19\x42\x4a\ \x4a\x0a\x4e\x67\x32\x69\x69\x29\x64\x65\xd9\x19\x37\x6e\x1c\xbb\ \x76\x6f\xe6\xd9\xef\xfd\x80\xd5\xeb\x17\xb3\x75\x77\x07\xb3\xa6\ \x7b\x20\x68\x02\x64\x10\x16\xf0\x6f\xa1\x6c\x5a\x6d\xf2\xea\x93\ \x3b\x5e\x2b\x7c\xa8\x26\x2e\xe9\x3a\x48\x02\x84\x00\x74\x00\x88\ \xc9\x9a\x7f\xc7\xd1\x3d\x4f\xec\x74\xbc\xb2\xc6\xcf\x69\x20\x06\ \x70\xcd\x3b\xb1\x36\x5a\xb2\xe9\x92\xb2\x98\xc1\xd5\xd3\xa5\x92\ \x41\x13\x95\xa2\x82\xc1\x52\x45\x9a\x8d\x11\x69\x50\x6c\x01\xeb\ \x25\xb0\x9c\x02\x7a\x88\x85\x82\xcc\x7f\xfe\x21\xfa\xdb\xea\x19\ \x39\xa4\x84\xd3\x2d\xef\x52\x32\xb8\x9f\x59\xb3\x1e\xa2\xa8\xa8\ \x90\xe2\xe2\x5c\x2a\x2a\x8a\xe8\xef\xf7\xf0\xeb\x5f\xff\x9a\x57\ \x5f\xfd\x09\x3b\x9b\x22\xac\x58\xfe\x13\xfe\xfd\x07\x5b\x49\x4d\ \x96\x41\x55\x40\x48\x20\x03\xf2\x0b\x74\xff\xeb\x32\x4c\x3f\x14\ \xe4\x16\xa7\x80\x0a\x08\x19\x74\x09\x74\x1d\x92\xf3\xe1\x74\x31\ \xff\x34\xf7\xcd\x95\xaf\xf7\x6a\x2f\x03\x4e\x21\x84\x2a\x73\x95\ \xce\xc6\x6d\x6f\x98\x7f\xb9\xec\x3f\xcc\x1f\xde\xf9\xb8\x69\x59\ \xb0\x4a\x5a\xda\x68\x13\x0b\xb6\x11\xab\xfc\x9c\x10\xdb\xf0\xf9\ \x5b\xf0\x39\x74\xe2\x9e\x10\x16\x93\x8f\x9f\x3e\xb3\x1d\x67\xec\ \x1c\x0e\x87\x8b\xca\xca\x05\x9c\x38\xe9\xe6\xf0\xe1\x2f\x08\x06\ \x43\x89\xc2\x7d\x38\x9d\x5e\xf2\xf2\xb2\xc8\xce\xce\xa5\xb5\xf5\ \x04\x75\xd3\x33\xc8\x1d\xbc\x90\x15\x9b\x0a\xc1\xaa\x03\xd2\x00\ \x40\x2c\x06\x39\x1d\xa4\xd5\xdc\x8f\xef\xc3\x56\x84\xcf\x05\x2e\ \xf7\x80\xdd\x9e\x84\xbd\xe0\xec\x84\xac\x24\xcc\x16\xa5\x08\xc8\ \x03\xac\xd7\xed\x81\x1e\xcd\x54\xc6\x88\x4a\x48\x7a\x17\x44\x23\ \x9a\x3a\x8c\x48\xa0\x8e\x88\x6f\x1a\xe1\xd0\x64\xc2\xe1\x5a\x7c\ \x81\xc9\xf4\xf6\xcf\xa6\xab\xe3\x3e\x4a\xf2\x2b\xa8\xa9\xbe\xc8\ \xd9\xee\x1e\xd0\xac\xd4\x8c\xfa\x1e\xdb\x77\xec\xe3\xec\xd9\xe3\ \x44\xa3\xda\xe5\x0d\x2d\x04\x14\x14\xe4\x71\xfe\x7c\x1b\x16\x33\ \x3c\xb1\x78\x12\x8d\x67\xa6\xe2\xee\x56\x40\x11\x20\x64\xc0\x0a\ \xae\xfd\xd8\xa6\xd5\xa0\x1c\xb6\x11\xf6\x09\x90\x4d\x20\x94\x2b\ \xc6\x04\x71\x9d\xb8\x86\x04\xd8\x00\xd3\x75\x00\xbf\x6b\xf5\xad\ \x64\xe5\x36\xe0\x69\xd0\xed\xe8\xda\x1d\x40\x1a\x12\x1a\x12\x31\ \x24\x29\x86\x9c\x70\x5c\x4f\x49\x00\xe5\x13\x0c\x15\xf0\xd4\x3c\ \x2f\x9a\xb5\x8d\x8e\x9e\x5e\x52\x6d\xc5\x8c\x1c\xf5\x22\xab\x56\ \xaf\x67\xff\xbe\x44\x6a\x21\x95\x48\x04\x34\x2d\x4e\x44\x95\x00\ \xa8\xae\x32\x31\xb4\x7a\x1e\xcb\x56\x95\x81\xa2\x5f\x19\x45\x7f\ \x27\x52\x69\x1f\xa9\x65\x75\x78\x8f\x78\x41\x91\x07\xe0\x84\x64\ \x5c\x65\xb8\x32\x11\x12\xc0\x75\x00\x5b\xe2\x34\xb4\x7c\xbc\xb6\ \x8b\xe0\x4c\x90\x47\x00\x80\xd0\x00\x8c\xb8\x07\x2c\x21\x90\x64\ \x0d\x55\x15\x0c\xbf\x2d\xc6\xb7\xa6\x77\x70\xd1\xd9\x83\xab\xdf\ \x4d\x6e\x4e\x35\xd5\xa3\x5f\xe0\xa3\x35\x9f\xf2\xf6\xdb\xbf\xe3\ \x0f\x6f\xfd\x1b\x3b\x77\x35\x52\x55\x3d\x89\xb8\x0e\x16\x0b\x2c\ \x7a\xa0\x86\xe3\x5d\x75\x89\xc1\x4f\x01\x8b\x91\x82\x50\x20\x7c\ \x00\xfb\xcc\xfb\xf0\xed\x8d\xa3\x6a\xc6\xf7\xe9\x97\x6d\x40\x30\ \x60\x10\xff\x2b\x40\x00\x9c\x6f\x1f\x3a\xb3\x92\xcd\xe7\x41\xaa\ \x37\xf8\xc4\xf5\xe7\x30\x01\x88\xcb\x18\x44\x63\x32\x0b\x67\x78\ \xc9\xcd\xbf\x40\xb7\xc3\x8b\xc7\xe5\x49\x40\x0c\xa3\xfe\xc1\xd7\ \xe9\x0f\xe6\xd1\xb0\xf5\x00\x77\xdc\x39\x9f\xf4\x9c\x42\xbc\x01\ \x00\x28\x29\x96\xf8\xd6\x9c\xfb\x79\x73\x7d\x25\x42\x05\x24\x40\ \xb2\x80\xfb\x14\xd6\x61\x32\x96\x4b\x85\x78\x2f\x86\x41\xb9\xaa\ \x85\xf4\x01\x20\x21\xfe\xf2\x26\xd6\xd6\x06\xf8\x53\x70\xfd\x27\ \x2a\xfa\x50\x90\x54\xc0\x20\x37\x9e\xfe\xb5\x69\x40\x3c\x2e\x91\ \x69\x17\xdc\x7b\x57\x37\xed\xee\x76\xfc\xfe\x30\x3e\xb7\x1f\x59\ \xb7\x31\xf5\x9e\x67\x79\xf4\x99\x37\x18\x31\xf6\x5e\x3c\x7e\xf0\ \x87\x21\x1c\x03\x93\x02\xb3\x67\x0c\xc6\x94\x31\x87\xbd\x07\x6d\ \x60\xd1\x07\x8a\x54\x55\xb0\x9e\x24\xbd\xbc\x16\xef\x6e\x97\xd1\ \x46\xd2\x55\x06\xfd\x2b\x00\x38\x0b\x5f\xae\xdc\xbe\x67\x0b\xe7\ \xf3\xc0\x5c\x00\x42\xbf\xaa\x70\x0c\x10\xae\x80\x20\x11\x8e\x2a\ \xd4\x4d\x08\x52\x71\xfb\x59\x2e\xf5\xf4\x12\xf2\x47\xf0\x7b\x42\ \xf8\x5c\x41\xa2\x41\x1d\xbf\x37\x46\x82\xeb\xb2\x3d\x01\xd0\x04\ \xe4\xe5\xc0\x82\x87\xea\xf9\xe3\xe6\x1a\x02\x1e\x19\x64\x01\x58\ \xc0\x73\x9c\xf4\x85\x33\x89\x1d\xb2\xe2\x77\x19\x0f\xd0\x68\x21\ \x00\xbe\x0a\x00\x88\x2f\xef\x8a\x2c\xd7\xb7\xee\xc2\x24\x57\x22\ \x84\x0e\xd2\xd5\x09\x5c\x65\x03\x44\xd7\x25\x6c\x49\x82\x45\xb3\ \xfa\x70\x87\x2f\xe0\xf6\x04\x09\x07\x55\x42\xbe\x28\x7e\x6f\x98\ \xa0\x2f\x42\x30\xac\x13\x8c\x42\x20\x02\xa1\x84\x25\x09\x26\x8e\ \xb5\x93\x7d\xdb\x1c\xd6\xef\xc8\x00\xb3\x00\x4c\x10\x70\xa0\x94\ \x6b\xa4\xa5\x8e\xc1\x73\xd0\x05\x66\x05\x84\x6c\x18\xc4\x0d\x00\ \x88\xfd\x3a\xdb\x8e\xbd\xf7\x6e\xbb\xe4\x06\xd9\x14\x42\xe8\xe6\ \x6b\xfb\x1f\xae\x6b\xa5\x48\x54\xa1\xa6\x32\xca\x94\x71\x6d\x74\ \x3a\x7a\x2e\x17\x1d\x0a\x44\x09\x25\xae\x41\x6f\x84\x80\x37\x01\ \x13\x1e\x00\xf0\x27\x0c\x60\x92\x60\x42\xcd\x18\xd6\x37\x8d\xc0\ \xe3\x30\x81\x0c\xe8\x32\x78\xf7\x90\x71\xdf\x4c\x42\xfb\x22\xe8\ \x9a\x74\xd3\x00\x84\xa1\x7f\x6d\x73\xeb\xa7\x34\x76\x63\x49\xf1\ \xa3\xd0\x81\x10\x56\x23\xc6\x2b\x69\x5c\x0b\x02\xe8\x32\xf3\xa6\ \xba\x89\xcb\x2d\x38\x5c\x5e\x42\xfe\x68\x02\x24\x46\xa2\xf8\x84\ \x13\x10\x41\x8d\x70\x1c\xbc\x1e\xc1\xd6\x6d\x2e\x7e\xf1\xc6\x49\ \x96\x35\x5c\xe4\x54\x4f\x06\xf1\x28\x80\x34\x30\xcc\xce\x53\xa4\ \x4c\x2b\x45\x8a\x56\xe0\x6a\x0f\x82\x6c\x0c\x31\xd2\x8d\x01\x00\ \xfa\xf2\x08\xef\x38\x56\x6e\x88\xc8\x6a\x39\xc9\x96\x35\x58\x94\ \x36\x84\x30\x27\xac\x60\xe8\xba\xc1\x56\xe3\x12\x85\x39\x1a\x93\ \x47\xb5\xd3\xd9\xdf\x4e\x20\x01\x10\x0e\xc4\x2e\xb7\x52\xc8\x1f\ \x43\x4d\xdc\x77\xb5\xfa\xf8\x68\xf5\x69\xd6\xed\x6e\x21\xb5\x58\ \x67\x74\x5d\x15\x4a\x65\x2d\xd1\xb0\x74\xa5\x24\x35\x0e\x9c\x22\ \xad\x7c\x02\xce\x5d\xce\xab\x86\x99\x1b\x06\xe0\x1c\x1c\x6c\xd8\ \xb4\x69\x0f\x87\x73\x90\x93\xd3\x48\x35\x37\x60\xb7\x36\x21\x4b\ \x2a\xba\x6e\x06\xfd\xba\x5f\x24\x03\x42\x66\xde\x14\x1f\xd9\x59\ \xa7\xe8\xea\x73\x10\x4c\x40\x44\x82\x2a\x22\x18\xe5\xe8\xfe\xf3\ \x2c\xdf\x7a\x92\x6e\x1b\xcc\x9e\x57\xce\x92\xb9\x95\xfc\xc3\xec\ \x74\x46\xcd\xb8\x87\xd5\x27\x6a\x40\x52\x41\x18\x29\x38\x0e\x90\ \x39\x79\x08\xea\xde\x38\x21\x9f\x06\xd2\x8d\x0f\xb1\x21\xd4\x95\ \xae\xe8\x07\xb1\xed\x97\xc0\x32\x0f\x89\x08\x36\xcb\x61\x72\x52\ \x36\x93\x6a\xbd\x88\x40\x42\xd7\x2d\x09\x2b\x08\x71\x65\xa8\xb5\ \xb8\x84\xdd\x26\xa8\xbf\xb3\x07\x77\xa0\x8d\x60\x30\x86\x1e\x53\ \x69\x3c\x76\x89\x0d\xed\x21\xcc\x95\x25\x0c\xb9\xe3\x36\x32\x73\ \xb3\xb1\x24\x59\x29\xcd\x82\x05\xb5\x0a\x7b\x7d\xf7\x10\xee\x17\ \x20\x63\x6c\x66\x37\xd6\xe1\x66\x6c\x79\x63\xe9\x69\x76\x82\xa2\ \xdc\x5c\x02\x80\xd8\x0e\x6b\xf7\xac\xdb\xd8\x42\x60\x3a\xc8\x29\ \xa0\x9b\x31\x2b\x6e\x72\x52\x1b\x29\xcc\xd8\x43\xb6\xbd\x95\x14\ \xab\x1b\xb3\xa2\xa2\xeb\x32\x30\x00\x12\x55\x65\xc6\x0f\x0f\x33\ \xb4\xac\x95\xf6\xee\x4b\x34\x1d\x3f\xce\x41\x0f\xa4\x96\x54\x91\ \x9a\x99\x4b\x94\x24\x9c\x11\x99\xbe\x10\xe8\x02\xa6\x94\x41\x56\ \xe5\x34\xfe\xb3\xb1\x1c\x94\xb8\xb1\x81\x65\x88\xb4\x92\x33\x67\ \x36\xfe\x2d\xfd\x68\x9a\x31\x03\x88\x1b\x06\x40\x03\xff\xba\x83\ \x87\x37\xb2\xc5\x01\xa9\xb5\x20\xd4\xcb\x10\x08\x85\x64\x8b\x83\ \xbc\xb4\xe3\x94\xe5\x7d\x49\x55\xd1\x7e\x72\xec\x7d\x68\x9a\xe9\ \x72\x1a\x42\x97\x90\x25\x99\xb9\x53\xfa\x48\x49\xda\x41\x4f\xf7\ \x51\xec\xb2\x8c\xac\xd9\xf0\x85\xcd\xb8\x82\x12\x7d\x7e\xe8\x09\ \x80\x2f\x06\xe9\x56\x58\x34\x23\x93\x4d\xbe\x85\xb8\x7b\x74\x90\ \x8d\xcd\xdc\x7d\x0a\xfb\x84\x5c\x4c\xbe\x02\x7c\xed\x01\x50\x64\ \x74\x9d\x1b\x07\x00\xf4\xad\x2a\xeb\x1d\x1f\x6d\xd1\x91\x1e\x00\ \xc4\x55\x5b\xd9\x04\xba\x09\x49\x80\x49\x56\xb9\x2d\xbf\x95\xa2\ \xac\x2e\x40\xba\x9c\x46\x4c\x95\xc9\xcf\x8a\xf3\xf7\xdf\xee\xe2\ \xe9\xfb\xce\x20\x3b\x0e\x13\x71\xfa\xf0\x79\xc1\x1d\x80\xfe\x20\ \xf4\x25\xec\x0c\x83\xaa\x43\xed\x60\x28\xbf\x63\x0a\x1f\x34\x66\ \x83\xa2\x0d\xa4\x10\x0d\x21\x9b\xdb\xc8\x9e\x3d\x17\xc7\x3e\xa7\ \xb1\x8f\x6e\x0e\x80\x53\xd0\xb4\x76\xcb\xe6\xcf\x39\x6a\x87\xe4\ \x52\x10\xda\xb5\xa7\x44\x24\xd0\x15\x24\x21\x51\x9a\x7f\x89\xe1\ \xc5\x6d\x58\x4d\x71\x84\x2e\xa3\xaa\x0a\xe8\x32\xa3\x87\x85\xb8\ \xbb\x62\x17\xd1\x8b\x47\x08\xb9\xe2\x97\x01\x5c\x41\x70\x18\x10\ \x9e\x28\x24\x29\xb0\x60\x7a\x16\xcd\xb1\x69\xa8\xde\x08\x24\xdb\ \x20\x73\x10\x98\x6d\x98\x52\x53\x71\x74\xc5\x20\x2e\x00\xe9\xe6\ \x00\x80\xd8\x07\xee\xe0\xfb\xc1\x95\x9f\x43\xd2\x44\x10\xea\xb5\ \xe7\x13\xdd\x58\x32\xba\x02\x9a\x4c\x76\x9a\x97\xb1\xe5\x6d\x8c\ \x2c\xeb\x22\x33\x35\x42\x54\x55\x12\x36\x33\x71\xb8\x83\xfc\xd8\ \xa7\x84\x3a\x7b\xf0\x7b\xc1\x13\x34\x20\x42\xe0\x8e\x80\x06\x4c\ \x28\x01\x7b\xc9\x04\xce\x47\x66\xe1\xef\x1e\x43\xe7\xd6\x4c\xce\ \xfc\xa2\x89\x63\x9b\xdf\x25\x7f\x46\xb1\x71\x98\x13\x37\x0d\x20\ \xf6\xc3\xa6\xa6\x8f\xb7\xb6\xe1\xa9\x05\x93\x0d\x84\x00\xfd\xda\ \x1d\x00\x92\x01\x22\x93\x64\x89\x91\x9f\xe9\x65\x5c\x45\x27\x43\ \x8b\x9d\xc8\x44\xb1\xd8\x14\xea\xc6\x9c\x40\xe9\xdb\x4d\xa0\x37\ \x86\xcb\x3f\x00\xe0\x4c\xb8\x3f\x0a\xe7\x9d\x3a\x0d\x9f\x1d\xe3\ \x74\xf3\x21\x36\xfc\x7e\x03\x9d\x8d\x1f\xe1\x09\x6c\x47\xa9\x3a\ \xcd\xc8\x67\x06\x53\x51\x99\x05\x9a\xb8\xee\x30\x67\xe2\x06\x14\ \x01\xc7\x1f\x5b\x5b\xdf\xbf\x7b\x9f\xf2\x13\x79\xe6\x04\xe8\x6b\ \x04\x6c\xc6\xf6\x15\x46\x5b\xe9\x20\x19\x11\x9b\x52\x13\xce\xc0\ \x9c\x91\xcb\xb0\xac\x0c\xf2\xd2\xd2\x69\xfa\xc2\x47\x2e\x21\x86\ \xf8\xd7\x71\xf4\x4c\x19\xb6\xbc\x5a\xfa\xed\xe0\x08\xc0\xa6\x9d\ \xad\x9c\xdc\xde\x40\x41\x72\x88\x39\x63\xcb\xb9\x9d\x22\x86\xde\ \x15\x80\x98\x15\x34\x19\x62\x3a\xa8\x3a\x24\x2b\xc8\xc6\x88\xdf\ \x14\x00\xa0\x7f\xae\xb3\xae\xfd\x83\x86\xa5\xa5\xf5\x77\x5b\x50\ \x76\x80\x26\x81\xd9\x0e\xd6\x0c\x90\xed\x10\x4d\x87\x58\x36\x44\ \xd2\x88\xf4\x26\x13\x71\xda\x89\xb8\x34\x02\xdd\x1d\x44\x7b\x4e\ \x90\x2f\x5c\x68\x85\xe9\x4c\x9d\x1e\xc1\x7f\xf2\x23\x3a\xcf\x55\ \x62\x32\x65\xd2\xba\x7d\x1d\x7a\xcb\x26\xbe\xf3\x48\x1d\x4b\x9e\ \x5a\xc8\x97\x07\x4e\x93\xd2\xb9\x01\xcc\x49\x20\x19\x2f\xfd\x16\ \x01\xe9\x99\x70\xd2\x83\x27\xa6\xc5\x00\x71\xb3\x00\x74\xc3\xb1\ \x95\x6b\xd6\x6d\x59\xba\x6a\xd2\x1c\xea\x7e\x08\xd1\x30\x38\xad\ \x78\x9b\xfb\xf0\x9c\xe8\xa7\xbb\xad\x4f\xef\x3d\x7f\x40\x04\x3b\ \x1c\x42\x8e\xc7\x31\xa7\x98\xb1\xa6\xd9\xb0\xe7\xa6\x91\x94\x93\ \x9a\xb8\x4f\xa3\xfc\x02\x14\x07\x25\x52\x2f\x6e\x62\xf9\x09\x97\ \x7c\xe0\xd0\x10\x79\x52\xf6\x69\x1e\x7b\x6a\x01\x93\x26\x4f\x02\ \xe0\x68\xe3\x41\xca\x76\xb7\xc5\xf5\x54\x13\x42\x12\x80\x40\x42\ \x10\x0c\xb5\xaa\xef\x6d\x3d\xd9\xba\x56\xd5\x3f\x05\x22\x80\x76\ \x53\x00\x80\xf6\xd3\x58\xec\xef\x76\x3e\xfa\xca\xd9\xf1\x55\x23\ \xa7\xfa\x62\x31\xf9\x44\x67\x47\xcf\x85\x90\xaf\xab\x17\xe1\x08\ \x81\x5f\x87\x88\x34\x10\xba\x90\x9d\x00\x20\xb8\xf6\x2a\x19\x27\ \x7c\xc1\xe9\xe4\xec\x82\xb1\x0b\x0b\x86\xd5\x8f\x89\x69\x92\x0c\ \x02\x80\xed\x4d\xcd\xdd\x1f\xfe\x69\xef\xef\x81\x90\x51\xa4\x00\ \x24\x01\xaa\x06\x3d\x40\x37\xe0\x00\xa2\xd7\xfd\x2f\x24\x49\x12\ \x5f\x21\x33\x90\x09\xe4\x01\x69\x46\x3d\x2a\x10\x31\xae\x71\x40\ \x07\x04\x37\x20\x49\x92\x93\x8b\x8a\x6a\xa7\xe4\xe4\x14\xd4\x8e\ \x1f\x3f\x66\x54\x51\x51\x41\xf6\xfb\xef\xaf\x68\x38\x77\x6e\xfb\ \x7a\xa0\x13\x08\x72\x45\x02\x88\x1b\x60\x01\x20\x26\x12\xba\x59\ \x00\x23\x35\x2c\x86\x25\x40\xc3\x28\xdc\xb0\x30\x7c\xa3\x9f\x95\ \x02\x64\x00\x69\xc6\xbd\x00\x1c\xc6\x93\x0e\x73\xad\xc4\xd5\x0f\ \x48\x08\x81\x89\x9b\x57\xdc\x70\x88\xff\xbb\xe2\x46\x2b\xf8\x01\ \x8b\x91\x30\x40\xd4\x48\x55\xe7\x2b\x64\x24\xf0\xd7\xab\xff\x06\ \x50\x1c\x59\xce\xc5\x04\x3a\xad\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ \x00\x00\x0c\x82\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ \x00\x00\x0c\x49\x49\x44\x41\x54\x78\x5e\xed\x9a\x09\x6c\x5c\xd7\ \x79\x46\xcf\x7d\x6f\x36\x0e\x57\x0d\x49\x71\xa7\x48\x8a\xa2\xa8\ \x8d\xda\x29\x53\x92\x15\xdb\x32\x92\xc8\x52\x6b\x3b\x4e\x60\x3b\ \xf1\x16\xbb\x71\xd3\x24\x6d\xaa\xd6\x89\xe3\xb4\xae\x61\x23\xb5\ \x93\x36\xa8\x8d\xb8\x69\xd3\xd6\x6d\xed\xa2\x0b\xd2\x16\x69\x6b\ \x18\xa9\x9b\x5a\x4b\x97\xd8\xb2\x4d\x59\x5c\xc4\x4d\xa4\xb8\x2e\ \x22\x87\x1c\x0e\x67\xc8\x59\xdf\x72\xab\xc1\x7b\xc6\x33\x08\xa6\ \xf0\x08\x8c\xd2\x00\x1d\xe0\xc3\xff\xee\x70\x66\xee\x77\xfe\xe5\ \x0e\xe6\x81\x42\x4a\xc9\xcf\xf3\x43\xf9\x19\x1b\xf8\x7f\x00\xd7\ \x4a\x80\x33\x67\xce\x70\xf2\xe4\xc9\x0f\x05\x20\x04\xdc\x77\x84\ \xc7\x86\x66\x68\x7f\x7b\x90\xb3\xa6\xf9\xd3\x05\x78\xfe\xf9\xe7\ \xb9\xf9\xe6\x9b\xff\x77\x80\x48\x24\x42\x67\x67\xe7\x87\x02\xd8\ \x55\xc7\xbe\x0d\x45\xb5\xcf\xb6\x34\x04\xd4\x86\xbc\x8e\x1f\xbc\ \x7c\x8a\x27\x7a\xc7\x18\x5a\x73\x00\xc7\xdb\xda\xb5\x90\x5b\x45\ \xdc\x7b\x23\xdf\x69\xbd\xeb\x05\xf7\xd1\x2f\xbd\xa3\xdc\xf3\xc5\ \x3f\xfe\xe4\x4b\x5f\x2b\xed\x7c\xf2\x7e\x9e\x2d\x2d\xc9\x29\x64\ \xeb\x7d\x8f\xb2\xf9\xee\x87\x59\xbf\x7b\x0b\xc2\x25\xfe\xcf\xcd\ \xc0\xb1\xdd\x3c\xbc\xf7\xd0\xf1\xb6\x9a\x1d\x77\xa0\xa8\x6e\x6a\ \xf6\x7c\x9e\xfd\x9f\x1d\xf0\xdf\x7e\xdf\xaf\x3f\xd1\xf8\xe9\xe7\ \x66\x1e\x7f\xf2\x99\x3f\xf9\xe4\xc3\x5f\xff\xf3\x63\x27\x5f\xee\ \x2d\x7f\xe4\xec\xbc\x72\xcb\x77\x7f\xc8\x8e\x2f\xfc\x16\x95\x47\ \x8e\xe2\xaf\x58\x07\xca\xcf\x0e\x60\x7d\x01\xc5\x27\x0e\xf8\x7e\ \x77\xff\x27\x5e\x40\x08\x27\xb9\x3f\x1e\x55\xf8\xc2\x5b\x0f\xf2\ \x3b\x8f\x3c\xe0\xfb\xe5\xa3\x95\xdc\xb4\xa3\x9c\x27\xef\xdb\xce\ \x6b\x4f\x1f\x08\xfc\xf0\xc5\x07\x8e\x3d\xff\xcd\x27\xbe\xf1\xd0\ \xe3\x7f\xf8\x46\xcb\x67\xff\x6e\xda\x7b\xeb\x4b\x17\xd8\xf1\x95\ \x3f\xa2\xea\x63\xf7\x93\xbf\x69\x13\x8a\x47\xbd\x6e\x00\x77\x1f\ \xe2\x99\xfd\xb7\x3d\x56\x56\x50\xda\x08\x80\x29\x25\xdf\xfa\xd7\ \x29\x9e\x7d\x6d\x92\xef\x7f\x71\x0b\x07\x9b\xd6\xd1\x3b\x11\xa7\ \xac\xc4\x4f\xca\x54\x88\x6a\x2e\xdc\xb9\x79\xb4\x6c\xab\xe2\xe1\ \x3b\xb7\xf3\xd2\xd7\x0f\xfb\x4e\xff\xd9\xbd\xbb\xfe\xfa\xbb\xbf\ \xf1\x2b\x5f\x7d\xfa\xf7\xff\xea\xd6\xcf\x7d\xaf\x3f\x70\xf4\x4f\ \x27\xd8\xfa\xdb\xff\x42\x5e\xd3\x0d\x59\x9f\x42\xd9\x68\x67\x1d\ \xfb\x3e\x72\xa0\xe1\x73\xdb\x8f\x7e\x0d\xa4\x64\x21\xae\xf3\xc8\ \x2b\xc3\x6c\x29\xf7\xf1\x8f\x57\xcd\x67\x0c\x07\x63\x30\x35\x9f\ \xa6\xa1\x2e\x17\xb7\x02\x52\x82\x24\x13\x05\xa6\x84\x98\xa6\x22\ \x85\x4a\x45\x4d\x39\x55\xb5\x65\xdc\xf1\x31\xa9\xf8\x54\x59\x71\ \xe6\xc7\x43\xbf\xf8\x9b\x5f\xee\x5c\x64\xf9\x52\x27\x90\x58\x73\ \x00\x55\x41\x7c\xe6\x88\x78\x61\xff\x9d\xdf\x76\xab\x6e\x1f\x52\ \xea\x7c\xf3\xf5\x29\x76\xd6\xe4\xf0\x91\x2d\x01\x82\x31\x13\x13\ \x85\x50\x02\x22\x31\x9d\x3c\xbf\x0b\xa1\x60\x9b\xff\x49\x51\x90\ \x32\x05\x69\x53\x32\x9d\x21\x8f\x8d\xf6\x01\xe6\x4f\xa5\x02\xc7\ \xf7\xf0\xe0\xee\xb6\x63\x87\x6a\xb6\x1d\x47\x1a\x29\xc0\xa4\x7b\ \x3a\xce\x73\x27\x6a\x18\xbe\x92\xe2\x42\xcf\x22\x89\xb4\x89\xdb\ \xe3\xc2\x23\x24\x6e\x97\x00\xa4\x65\x56\x38\x86\x59\x05\xc4\xab\ \x4a\x2e\x5c\x0a\x19\x2c\x0f\x5f\x00\x52\x6b\x0e\x50\x5a\x40\xe0\ \xf6\x36\xdf\x73\xad\x77\x3d\x8f\xd4\x13\x48\x69\x10\x4b\x19\x20\ \x04\x85\x85\x3e\x36\xe7\xfa\x69\x6a\x2c\x42\xd7\x25\xb1\x58\x1a\ \x21\x04\x2e\x21\x2d\x93\x16\x07\x12\x81\x14\x0e\x10\x38\x50\x3e\ \x61\xd0\xd1\xdd\x37\x81\x11\x9b\x5a\xf3\x19\x10\xc0\x3d\x87\x78\ \x7a\xf7\xc7\xbf\x52\x9e\x57\x58\x86\xd4\x93\x48\x99\xc9\x7e\x92\ \xed\x95\x39\xe8\x52\xa0\xda\xbd\xae\xba\x05\x9e\x22\xaf\x6d\x4c\ \x02\xd8\xc6\xad\xb5\x04\x10\x58\x10\x08\x7b\x2d\x99\x09\x46\x09\ \x4f\xf7\x0d\x02\xf3\x6b\x0e\xd0\xb2\x81\x3d\x47\x5a\x1b\x1e\xdd\ \x76\xd3\x97\x31\xd3\x51\x90\x66\x06\x80\x73\xa3\x09\xf6\xd4\x94\ \x22\xc0\xca\xf6\xfb\xc6\x6c\x6c\x67\x6d\x1b\x07\xa4\x03\x04\xd2\ \x79\xbe\x67\x78\x81\x23\xd5\x97\x77\x2f\x24\xdc\x4d\xdd\x63\xda\ \xcc\x9a\x01\x78\x5d\x28\x77\x1f\x16\x2f\xb6\x7e\xe2\xdb\x1e\xc5\ \x88\x23\x8d\x24\x90\x01\x90\xbc\x3b\xa5\xf1\xd4\x2e\xbf\xd3\x2a\ \x60\x1b\x13\x48\x56\xb6\x0f\x48\x21\x90\x12\xb0\x81\x6c\x40\x5c\ \x8a\x24\x6f\xa1\x9f\x4f\xef\x0c\x96\x44\xaa\xf2\x5e\xfe\xea\x2b\ \xe1\x03\xc0\xdc\x9a\x00\x7c\x74\x17\x0f\xec\x3f\x7c\xdb\xc1\xaa\ \x4d\x37\x62\x24\x82\x20\x4d\xc0\xcc\x44\x66\xe2\x2e\x4a\xf2\x5c\ \x24\x0d\xe9\x0c\x27\xd8\x7d\xbe\x22\xe3\xb6\x6d\x56\xa9\x52\x5e\ \x74\x9a\x87\xf2\xdf\x20\x74\xa4\x86\xd7\x4f\x4d\xd5\x96\x17\xa9\ \x6d\x33\x8b\xc6\xab\x59\x02\xac\x3e\xb8\x27\x5a\xbd\xcf\xb6\xde\ \xf9\x7b\x18\xf1\x2b\x48\x53\x03\x69\x99\x1f\x8f\x4a\x6a\x02\x05\ \x56\x06\x85\x63\x5a\xb2\x8a\x71\x61\x39\x76\xaa\x24\xec\xb5\x04\ \x2d\x45\x49\xfb\x5f\xa0\x36\xb9\x28\x09\x16\xe2\x76\xbb\xd5\xcd\ \x55\xee\x43\x57\x01\x5e\x07\xd2\xd7\x0e\x60\x0d\xee\x33\xfb\x8e\ \x3d\x56\x91\xe3\xf3\x62\x26\xe7\x91\xd2\x04\x5b\xe7\x26\x55\x0e\ \xd4\xfa\x11\x80\x2a\x56\x19\x4e\xa7\xc7\x71\xda\xc5\xce\x3a\xf6\ \xbc\x98\x92\xe2\xb7\x5e\xc1\x57\x17\x86\x0d\xf7\xa2\xc4\x4e\x51\ \x16\x38\xcf\xd6\xea\xf8\xfe\xff\xe8\x49\xe6\x03\xa1\x6b\x06\xd8\ \xb9\x81\x3d\x37\xee\xaf\x7f\x74\xdb\x91\xcf\x63\x2c\x8f\x58\x83\ \xcb\x07\x00\xa6\x72\x79\xf0\xb0\x1f\x55\x91\x20\x57\x69\x15\x40\ \x3a\x40\xce\xda\x82\xb2\x2a\x77\xfe\x75\xf2\xd7\xf5\x43\xd5\x4d\ \x50\xd0\x0c\xeb\xa6\x28\x2f\x29\xa4\xb1\x3c\xb4\x5d\x55\x58\x6f\ \x98\xd7\x08\xe0\x56\x11\xf7\x1c\xe6\xc5\xab\xad\xe3\x26\x31\x65\ \x7d\x69\x49\xc3\xaa\x80\xa9\x91\x5e\x1a\xa0\x77\xfe\x06\xb6\xae\ \xf7\x60\x4a\x69\x0f\xe7\xca\x1e\xb7\x8d\x3b\xa6\xed\x2a\x81\x29\ \x21\xd9\xdf\x43\x95\x7e\x16\x51\xdf\x08\xe5\xb7\x00\x26\x94\x36\ \x51\x51\x54\x40\xa1\x5f\x2d\x29\x2f\x72\xb5\x4c\x2d\xe8\x7d\xd7\ \x04\xf0\xf1\x5d\x3c\xb4\xf7\xd0\xb1\x83\x95\x0d\x7b\xd0\x42\x17\ \xd1\x62\xa3\xa4\x17\x3b\x2d\x45\x7a\x58\xd2\x54\x72\xf3\xce\xa1\ \x2a\x20\xcc\x95\xc6\x57\x3f\x89\xa4\x04\xb0\xcc\x47\xa7\xe6\xd9\ \x30\xf3\x4f\x28\x3b\xca\xa0\xf6\x1e\x0b\x4d\x1a\x50\x14\xa0\x30\ \xb7\x12\xbf\x6f\x40\x6c\xa9\xf6\x1e\xba\x0a\xf0\xcf\x40\x2a\x2b\ \x80\xfc\x1c\x72\x8f\xed\xe1\x1b\x75\xf5\x35\x84\xcf\x7e\x89\x78\ \xfc\x2d\xa4\xb6\x08\x08\x10\x0a\x08\x95\x7e\x6d\x0f\xbb\x6b\x03\ \x08\x40\x11\x0e\xb8\xb4\x05\xab\x0c\xb5\x5d\xa5\xf0\x7c\x8a\x8a\ \x9e\xbf\xc5\xd3\x16\x80\x92\x3b\x40\xf1\x80\xd4\x01\x4b\x4a\x60\ \x13\x65\xc5\xe7\xd9\x5c\xb1\xbc\xff\x8d\xae\x58\x01\x30\x97\x15\ \x40\x75\x31\xd5\x53\x39\x54\x96\x19\x53\xe4\xfb\xcb\x49\x46\xf6\ \xb2\x14\x1f\x22\x51\x10\x01\xc5\x85\xb8\xaa\x8e\xc5\x56\x0e\x66\ \x06\x58\x88\x15\xbf\x91\x9d\x6f\x5f\x56\x7e\x07\x20\x99\x0b\x4b\ \x8a\xde\xfb\x01\x79\x07\x8b\x21\xb0\x1f\xdc\xeb\x00\xc3\x92\xd4\ \x2d\x15\x36\x50\x59\xbe\x3e\x33\x07\xdb\x14\xc1\x7a\x53\x66\x09\ \x30\x3e\xcf\x98\xa2\x12\x8e\xa4\xe4\xba\x82\xcd\x2d\xe4\x6c\x6e\ \x23\x27\x32\x8e\x3e\x3e\x4d\x6c\xe1\x32\x71\x5f\x98\x2e\x6d\x17\ \xbf\x56\xe9\x73\x00\x56\x17\xc2\x36\x2e\x20\x63\x1e\x77\xf7\x59\ \x8a\x5b\x02\x50\x5c\x0f\xee\x5a\xab\x6d\xd0\x41\x6a\xb6\xd2\x50\ \x5a\x49\x45\x79\x03\x3e\xf7\xa5\xfc\x0d\xa5\x9e\xd6\x91\x60\xba\ \x17\x90\x1f\x1a\x20\x96\x24\x39\x1b\xe5\xcd\xf0\xf2\xdc\xf1\x1a\ \xa9\x40\x60\x33\x94\xec\xc4\x55\xbb\x48\xa1\x1e\xa4\x60\x3c\xc4\ \xc9\x94\x46\xde\x95\x41\xa8\xdf\xbc\x4a\x15\x84\x5d\x05\x07\x63\ \x3e\x62\x92\x1c\x1e\xa4\xb1\x38\x8e\xd8\xb0\x07\xd4\x22\xa7\x6d\ \x64\x46\x69\x5b\x29\xc8\xf5\x50\x50\xd2\x48\x5e\x7e\x11\x4d\xe5\ \x91\xb6\xab\x00\xdf\x07\xe2\x59\x0d\x71\xcf\x38\xa7\x6f\x88\x8e\ \x1c\x97\x8a\x1f\xa1\x2d\x82\xa7\xd8\x92\xb7\x0a\xb1\x05\x8e\x6e\ \x51\x90\x0b\x31\xcc\xce\x1f\x81\x27\x1f\xb3\x69\x2f\xb8\xbd\xac\ \xf6\x08\x45\x4c\xc2\xd3\x8b\x6c\x8a\xbe\x87\xf2\xd1\x13\x00\x20\ \x75\x9c\xb6\xd1\xb0\xcd\xdb\x4a\x22\xfc\x85\x54\xd6\x35\xd2\x54\ \x31\xbb\xef\xdf\xba\x96\x0a\xae\x05\xe0\x94\xa9\x87\x48\x26\x16\ \xc9\xd1\xbc\xe0\xca\x01\x24\x08\x40\x78\x41\x28\x88\xe2\x62\xd4\ \xd2\x6a\xd0\x5c\x28\x83\xed\xc8\xb4\x86\x59\xd3\x0c\xc5\xe5\x80\ \x00\x60\x21\x22\x99\x9d\xd3\xd9\x30\xf8\x1a\xbe\xdb\x3f\x05\xa4\ \x6d\xe3\xb6\x79\x3e\x98\xfd\x24\x98\x09\x30\xe3\xe0\x81\xea\xba\ \x4d\xd4\x04\xda\x9b\xbc\x2e\x51\x93\xd2\xe5\x4c\x56\xbf\x89\xdf\ \x1b\xa2\x0b\x21\xe7\x96\x17\x07\x41\xd3\x41\xc6\xac\x0f\x96\x19\ \x25\x40\x26\x2d\x99\x4b\xa0\x2e\x21\xb6\x36\xa3\xec\x6e\x43\x4d\ \x44\x50\x3b\xce\xa0\x8c\x74\x13\x8e\x18\x4c\xcf\x43\xa0\xeb\x55\ \x02\xb7\xde\x06\xaa\x6e\x65\xd8\xb4\x32\xed\x18\xce\xc4\xb8\xad\ \x18\xc8\x65\xc8\x37\xa9\x2e\xab\xc6\xe3\x52\xfd\xb5\x25\xde\x56\ \x40\x64\x05\xa0\x1b\xc8\x8b\xa3\x9c\x89\x86\x7a\xc1\x50\xc1\x58\ \x02\x73\x19\xcc\x98\xad\xb8\xad\x84\x05\x64\x44\xc1\x98\x41\x54\ \x15\x20\x76\xb7\xa2\x94\x56\x52\x38\xfc\x26\xa5\x1d\x7f\x4f\x6d\ \x6b\x33\x14\xe6\x82\x19\x71\xc0\x65\x02\x47\x31\x4b\xe6\x72\x46\ \xd6\x5e\x1e\x1d\xbf\x47\x25\xb0\xbe\x42\x34\x95\xfb\x6e\x00\x72\ \xb3\x02\x00\xe8\x18\xe2\x54\x34\xd4\x87\x49\x2e\x68\x61\x30\xa3\ \xb6\x96\x41\x2e\xdb\x1b\x5b\x20\x56\x4c\x58\x15\xd1\xaf\x20\xfc\ \x11\xbc\xbb\x9b\xa9\xfe\xd4\x9d\x88\xfa\xa6\xcc\x73\x19\x50\x9c\ \xd7\x66\xb4\xc2\xb4\x99\x51\x04\x8c\x38\x18\x1a\x88\x04\x35\x1b\ \xb7\xb0\xb1\x34\x67\x2f\x50\x94\x35\x40\xfb\x00\x67\x52\x89\xb0\ \x4c\x2c\x87\xc0\x10\xd6\x26\x46\xc4\xde\x64\xc9\xd9\xd4\x32\x61\ \x67\xd1\x56\xe6\xda\x98\x01\x6d\x00\xd2\x97\x56\x54\x6f\xd9\x02\ \xb5\xa2\x93\x18\x23\x02\x7a\x12\xf4\x34\xe8\x1a\xc8\x28\x35\x8d\ \x5b\xa9\x28\xf2\x36\xf8\x3d\x4a\x5d\xd6\x00\xdd\x23\x5c\x8e\xc4\ \x18\x89\xcc\x77\x83\x99\x67\x7d\xb0\x11\xb7\x21\x16\x6d\x90\xf7\ \xab\x62\x03\x39\x19\x75\x0c\x1a\x51\xec\x6b\x9c\x75\xd4\x7e\xff\ \xa2\xad\x25\xd0\x53\x8e\xf9\x8c\x72\x25\x95\xeb\x4a\xf0\x78\x3c\ \xde\xba\x12\x5f\x1b\xa0\x64\x05\xa0\xe9\x98\x17\x87\x39\xbb\x38\ \xdb\x09\x62\x9d\x05\xa0\xa5\xed\x2c\x2d\xd9\x1b\x87\x1d\x13\xa6\ \x15\x1d\x38\x5b\x66\x64\xc5\xdf\xac\xf7\x59\x8a\x82\x9e\x00\xcd\ \x36\xef\x00\x00\x3a\x3e\x57\x9a\xd2\xaa\xba\x4c\x1b\x1d\x00\xf2\ \xb2\xfe\x3d\xf0\x4e\xbf\x3c\xdd\xb6\xa3\xeb\x61\x53\x0d\xa0\xa4\ \x75\x50\x4c\x30\x55\x50\x55\x10\x06\x28\x69\x50\x54\x10\xef\xcb\ \x05\x28\x2b\xf2\x22\x01\xd3\x39\x3a\xa5\x61\xc9\x34\xc1\xfc\x60\ \xd4\xc1\x30\xc0\xd0\x2d\x99\x3a\x22\x15\xa4\x76\x73\x0b\x0d\x17\ \xfa\xf6\x40\x68\x1d\x10\xcd\xea\xd6\x62\xd7\xb0\xfc\x4f\x3d\x1d\ \xd7\x97\xc3\xe3\x20\xfd\x4e\x96\xb4\x34\xce\x75\x0a\xb4\x24\x68\ \x71\xd0\x96\x40\xb7\xfa\xd9\x96\xb5\xd6\x33\xcf\xc7\xac\x6c\xeb\ \x29\x70\xde\xbf\xca\x67\x6a\x60\xd8\x55\x50\x22\x6c\x68\xde\x49\ \x69\x9e\x77\x43\x9e\x57\xdd\x08\x90\x15\xc0\xd0\x34\x13\xf3\x11\ \x2e\x2d\x5c\x79\x0f\x5c\xeb\x33\xc6\x71\x94\x72\xa2\xd5\xbf\xce\ \x3a\xed\x08\xcd\xd6\xca\xd7\x3b\x6b\x1b\x48\x73\x00\xa4\x17\x72\ \x36\x42\xc5\x21\xf2\x03\xe5\x80\xa2\xe4\xfb\x5c\x8d\x80\x2b\xab\ \x16\xd2\x0d\xe8\x18\x92\xa7\xea\x9b\xda\xb7\xd6\x6d\x3d\x01\xd1\ \x0e\x50\x54\x5b\x0a\x08\xc5\x89\x42\x58\x22\x13\xb1\x22\x12\x24\ \x76\xfc\xa0\x4c\x30\x4d\x3b\x1a\x80\x17\x3c\x95\xe0\xad\x42\x7a\ \x2b\x09\x87\xe3\x8c\xf7\x77\x33\xda\xfb\x2a\x23\x3d\xdd\x04\xa3\ \xa9\xf1\xe0\x52\x7a\x14\x10\xd9\x00\xd8\xa7\x91\x79\xe6\x96\xd9\ \x8b\xbf\xaa\xab\x01\x5c\x86\x04\x23\xbd\x0a\x80\x70\x84\x1d\x01\ \xc0\x81\x70\xcc\x03\x2a\x78\x2a\xc0\x5b\x0d\xbe\x6a\x62\x09\x98\ \xe8\xef\x60\xac\xef\xdf\xaf\xaa\x83\xc5\xf9\x20\xf1\xa4\xb1\x74\ \x39\x98\xe8\x1d\x9a\x4d\x74\x74\x4d\x2e\xfd\xc8\x30\x65\x1f\xa0\ \x65\x0d\xf0\xce\x80\x3c\xab\xa7\x13\x46\x64\x7e\x48\x2d\x76\x95\ \x40\x72\x72\xb5\xec\x3b\x11\x9c\x2a\x48\xec\x65\xc6\x70\x19\xf8\ \x6a\x91\xbe\x1a\x52\x7a\x0e\xd3\x97\xbb\x99\xec\xff\x2f\xc6\xfb\ \xcf\x33\x3f\x35\x22\x13\x69\x19\x1f\x9b\x4b\x0f\x5e\x9a\x49\x74\ \x5e\x9e\x4d\xb6\x4f\x84\x53\xdd\x52\x32\x03\x84\xec\xe1\x4d\x03\ \x64\x0d\x30\x1d\x92\xe1\x50\x94\x0b\xa1\x89\xb7\xf7\x15\x37\xed\ \x83\xf8\x18\x98\x06\x8e\xe9\x55\x2a\xa0\xa8\xe0\x2d\x83\x9c\x3a\ \xf0\xd7\x93\xa6\x88\xe0\xc4\x00\x53\xed\x6f\x33\x39\xf0\x3d\xe6\ \x27\x06\x49\x24\xd2\xc9\xf1\x79\x6d\xe4\xd2\x4c\xaa\x6b\x60\x3a\ \xd9\x3e\x1e\x4a\x77\xa5\x75\x39\x05\xcc\x03\xd1\x35\xbd\xbd\xfe\ \x56\xaf\x71\xaa\x76\xe3\xb9\x7d\x72\xef\x67\x10\x73\xa7\x71\x6e\ \x2f\x1b\x40\x46\x80\xaf\x0c\xf2\x36\x41\x5e\x23\xa6\xaf\x9a\xf9\ \xe9\xcb\x5c\xe9\x3c\xc7\xd4\xc0\xdf\x10\x1c\xbb\x48\x3a\x91\x30\ \x27\x43\xfa\x68\xdf\x64\xfa\xe2\xc0\x74\xaa\xfd\x72\x30\xdd\x11\ \x4f\x99\xe3\x40\xd0\x36\x1c\x77\x6a\xb6\xc6\xf7\x46\xbb\x46\xcc\ \x53\xc7\x66\x7b\x1e\xd7\x5c\xc5\x78\x14\x0f\x98\x1a\xb8\x8b\x20\ \x3f\x63\xb8\x09\xd3\x5f\x4f\x24\x3c\xc7\xec\xd0\x7f\x73\x65\xf0\ \x3b\xcc\x0c\xbd\x4d\x32\x1e\x33\x82\x8b\xc6\x4c\xdf\xa4\x76\xb1\ \x77\x32\xfd\x5e\xff\x64\xfa\xdd\xa5\xa4\x39\x66\x1b\x8e\x00\xcb\ \x59\x1a\xbe\x76\x80\x9e\x51\xf3\x6d\x43\x4f\xc7\x16\xa6\x3a\x72\ \xcb\xeb\x1f\x41\x7a\x4a\x58\x8e\xc5\x98\x1b\x7e\x93\xd9\x37\xff\ \x92\xe0\xf0\x39\xe2\x91\xa0\x0c\x45\xcd\xb9\xbe\x09\xbd\xef\xe2\ \x84\x76\xa1\x7f\x52\x3b\x1f\x8c\x18\x97\x6c\xc3\x61\xdb\xb0\xb1\ \xd2\xc0\x75\x01\x08\x46\x64\xf4\xf2\xb4\x79\x3a\xe7\x8d\xa7\x7f\ \x61\xba\x72\x1f\x73\x23\x6f\x12\x5b\x98\x64\x29\x6e\x46\x7b\xc6\ \x8c\xde\xee\x31\xad\xb3\x7b\x54\x7f\x77\x66\xd1\x18\x30\x4c\xae\ \xd8\x86\x97\x56\x3b\x35\xae\x33\x80\xa3\x6f\xfd\x43\xf2\x97\xee\ \x9a\xee\xf9\x83\xfc\x9c\xbe\xc6\xde\x71\xa3\xff\xe2\x98\xfe\xee\ \xd0\x15\xc3\x3e\x29\x58\xf8\x49\x27\xc5\x75\x07\x68\x6e\x6e\xe6\ \xa9\xa7\x9e\x5a\xb5\x10\xc0\xfd\x40\x49\x4b\x33\xb4\xc0\x32\x90\ \xb8\x3e\x36\x1d\x6f\x2b\x1f\x3f\xf7\xff\x6e\xf3\x3f\x6b\x76\x5b\ \x62\x8d\x5d\xc3\xae\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x11\x1e\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ \x00\x00\x10\xe5\x49\x44\x41\x54\x78\x5e\xed\x9a\x69\x70\x1c\xe5\ \x99\xc7\x7f\x6f\x77\xcf\x8c\x46\xd2\xe8\xb0\x64\xc9\xb2\x24\x5b\ \x36\x92\x0f\x6c\x83\x8d\xb1\xb1\x31\x10\x07\x63\xc0\xe6\x08\xc7\ \x02\xae\x04\x42\x20\x81\x9c\x40\xb2\x49\xc8\x86\xec\x92\x90\x64\ \xa9\x4d\xd8\x1c\x64\x37\x07\x9b\x84\xa3\xc8\x26\x81\x70\x65\xb3\ \x86\x25\x10\xc2\xe1\x14\xa7\x6d\x9c\xd8\x18\x5f\x18\xdb\xb2\xe4\ \x4b\x23\x8d\xe6\xe8\xeb\x3d\x56\x9a\x6e\x76\x56\xe5\x52\x12\x36\ \x7b\x54\xaa\xf6\xa9\xfa\xd5\xf3\xf6\x5b\xaa\xae\xe7\xff\x5c\xd3\ \x1f\x24\x8c\x31\xfc\x39\x9b\xc5\x9f\xb9\x39\x00\x42\x08\xc6\x1a\ \xd4\x26\x05\x5f\xbf\xa0\x15\x5f\x3b\x04\x23\x48\x63\x11\x4a\x53\ \xeb\x7b\xde\x85\x08\x71\x61\xaa\xba\xe6\xf8\x44\x2a\xd5\xac\x95\ \xf6\x7d\xb7\xb4\x5b\x86\xe1\xd3\x96\x6d\x3f\x70\xd7\x0b\x87\x5e\ \xde\x37\xe8\x91\x72\x2c\x7c\xa9\xf9\x9f\x34\x63\x0c\x0e\x47\x59\ \x24\xe8\x6f\xcf\xaa\xa3\x62\x20\xbd\xe2\x7b\xd3\x99\xfa\x4f\xcd\ \x5d\xb6\x7c\xde\x31\xc7\x2f\xa2\x79\x52\x1b\xa9\xa4\x8d\x0a\x8b\ \xe4\xb3\x07\x27\xf6\xed\xda\xbe\x78\xc7\xab\x1b\x3f\xba\xe2\x48\ \x61\xed\xda\x2d\xc1\x17\x07\x5c\xb3\xe5\x7f\xad\x02\x15\xa0\x3a\ \x69\xf1\xfe\x25\xcd\xb4\xd4\x84\xe4\x35\x18\xa3\x53\xda\xcf\xff\ \xe0\xb8\x65\x67\x5e\xbe\xec\xdd\xd7\xd3\xd8\x35\x13\x8c\x82\xa0\ \x08\xe1\x08\xca\xa5\xb9\xb3\x9d\x69\xc7\x1d\xcb\xc9\x67\x9c\x52\ \x73\xea\x86\x97\x2e\x5d\xf4\xd0\xda\x55\xff\xf4\xe4\xee\xeb\x37\ \x1d\x94\x77\x33\xd6\xa8\xb1\x60\x34\x37\xc7\x57\x57\xee\x36\x95\ \x60\xab\x0b\x7b\x03\x28\x9a\x3f\x61\x06\x92\x8e\xe0\xfa\x53\x27\ \x70\xd6\x54\x17\xa9\x01\x63\x1c\x2b\x74\x7f\xba\x7c\xcd\xb5\x97\ \x9f\xfb\x99\xdb\x69\xec\x9a\x0b\xa1\x05\xa1\x00\x65\x83\xb1\x40\ \x01\xa1\x06\x37\x40\x58\x0e\xc7\x9c\xb4\x98\x2b\xae\xbf\x3a\x73\ \xd3\x45\x33\xef\x3a\xbe\xc5\xbe\x86\xd8\x3a\x80\x9f\x34\xc0\xa6\ \x0e\x78\x70\x06\xdc\xdc\x11\x13\x3f\x6f\xe8\x86\x17\x3b\x60\xa2\ \x00\xe7\xbf\x2a\x60\xcd\xfc\x1a\x16\xb6\xdb\xa0\x7c\x40\x80\x5f\ \xb8\x79\xd1\xea\x4b\x2f\x38\x71\xcd\x75\xa0\x0c\x48\x03\x4e\x0d\ \xd8\x29\xb0\x1c\xc0\x06\x61\x01\x56\xe4\xb5\x01\xd7\x23\x33\xb1\ \x85\xb3\xaf\x5c\xc3\x27\xce\x6e\xff\xd6\xc4\x6a\x96\x02\x5c\x0d\ \x2c\x4f\xc2\xd4\x04\xa0\x8e\xc6\x06\xa6\x3a\xd0\x28\x60\xba\x80\ \xe4\xdb\x15\xd0\x51\x6f\xb3\xaa\x27\x81\x96\x01\x06\x01\xca\x9f\ \xd1\xd1\xdd\x7d\xe3\x89\x17\x7f\x00\xfc\x12\xa8\x10\x8c\x02\x1d\ \x80\x56\x60\x34\x60\xc6\x12\x9b\xf4\x7d\x6a\x9a\x5a\x58\xf1\xae\ \x95\x55\x6b\xe6\x25\xff\x0e\x48\x6a\xa0\x64\x20\x18\xa7\x45\x34\ \x10\x98\xc8\xdb\x40\x95\x78\x9b\x02\x56\xcd\x48\x30\xa1\x4a\xe3\ \x08\x09\x40\x4a\x04\x1f\x9e\x77\xc6\x45\x29\x2b\x9d\x86\xd0\x8d\ \xaa\x22\x4b\x20\xf3\xa0\x4a\xa0\x7d\xd0\x21\x68\x09\x46\x45\xa0\ \x30\x46\x63\x80\xd0\xf7\x98\xd0\x33\x9b\xf3\x96\x75\x9d\xd6\x56\ \xcd\x3b\x0c\x80\x88\x33\x16\xd0\x66\x8a\x9c\xa2\x0b\x9c\x3f\xc2\ \x39\xa6\xc4\x89\x42\x51\x8f\x00\x9f\x38\x1d\x6f\x67\x88\xd3\x09\ \x58\xdc\x0e\x42\x07\x54\x59\x60\x94\x4e\x36\x36\x37\xad\x9e\x34\ \x73\x1e\xb8\x39\x10\x29\x40\x44\x41\x0a\x0b\x8c\x8e\x2a\xa1\xfc\ \xc8\x47\x42\xca\x18\xa3\xcb\x68\xad\xc0\x72\xe8\x99\xd3\xc3\xb1\ \x93\xb7\xaf\xd4\x3b\x79\x82\x23\x5c\x7a\xc4\xe7\xea\xd4\xc4\xe9\ \x4b\x52\x33\x7b\xea\xed\xa6\x26\x4c\x18\x22\xfb\xfa\x08\xb6\x6e\ \xeb\x1b\xe8\x3f\xf2\xab\xd9\x9a\x3b\xb6\xc1\x6f\x94\x78\x1b\x02\ \xda\x33\x82\x8e\x8c\xc2\x11\x60\x59\xa0\x64\xd8\xd1\x34\x79\x72\ \x97\x53\x9d\x86\xb0\x04\x96\x8e\x82\xb7\x82\xb8\x68\x3a\x0e\xd8\ \x07\xe5\x95\x7d\x44\x18\x09\xd0\x23\x18\x53\x6e\x47\xab\xb5\x89\ \xf3\xea\x59\xd9\x0d\x4f\x56\x5d\x74\xf1\x8a\xda\x6b\x3e\x40\xf5\ \x09\xf3\xb1\x33\x35\x08\xad\x41\x86\x18\xaf\x44\xd8\xdf\x37\x39\ \xf9\xec\xb3\x57\xdc\x71\xe7\xbd\x57\xfc\x64\xe3\xe6\xbb\xbe\x66\ \xf8\x54\x09\xb2\x7f\x94\x80\x84\x65\xa8\xb2\x24\xa9\x78\x0e\x95\ \xa0\xa9\xb6\x2e\x93\xc4\x04\x20\x03\xb0\x15\x98\x30\x1e\x5c\x01\ \x98\x58\x40\x10\x21\xa3\x16\xd3\x5a\xc5\x44\xad\xe4\x6a\x9f\xde\ \x75\x7b\x59\x9d\x6f\x9d\xdf\xf1\xc0\x37\x49\x5f\x7c\x19\x00\xf8\ \x25\x4c\x18\x60\x64\xfc\x7e\x15\x92\x98\x38\x81\x86\xcb\x2e\xa2\ \xe1\xec\x77\xf2\x89\x3b\xee\xbc\xaa\xfb\x7b\x3f\x9c\xff\xc1\x42\ \x78\xe1\x20\xec\xf9\x23\x7e\x89\xc1\x12\xa6\xec\x45\xf4\x6c\x04\ \x2a\x0e\xcc\x80\x91\x51\xf6\x85\x5d\x11\x60\x14\x95\x2a\xf8\x18\ \x15\xa0\x94\x44\x69\x89\x36\x1a\x6d\x19\xde\x7c\x6e\x0b\x0d\x8f\ \xef\xa5\xeb\xce\x9f\x92\x58\xb6\x1c\x42\x2f\x7a\x87\x65\x23\x46\ \x30\x23\x20\xac\x08\x19\xa2\x3d\xb7\x7c\x9f\xfc\xc4\xc7\xb8\xa8\ \xa5\x69\x41\x70\xdb\x37\x7e\xf6\xbe\xc3\xa5\x33\x25\x0c\xfd\xde\ \x21\x2e\xc9\x11\x34\x84\x02\x82\x51\x2c\x0e\x16\x0b\xd9\x12\xa1\ \x1b\x0f\x6e\x11\xc2\x42\x84\x8c\xa8\x9c\x4b\x68\x15\x20\x75\x14\ \xbc\x52\x0a\xd0\xf4\xf5\x1f\xc2\x79\x64\x3d\xdd\x9f\xfd\x3c\x89\ \x65\x27\x63\x4a\x39\x00\xf8\x8f\xa0\x05\x47\x1b\x18\xa9\xd0\x85\ \x02\x66\xcd\xa5\xac\x79\xff\x7b\x16\x5d\x53\x9f\xb8\xf9\x0f\x6e\ \xa1\xbe\x61\xe8\x2f\x81\xb6\x40\x02\xca\xa6\x2f\x77\x78\xff\x4e\ \x37\x3f\x18\x65\x54\xba\x18\x59\x8a\x03\x8f\x18\x79\x2e\xdf\x4b\ \x19\x20\xcb\xd9\x0f\xd1\x4a\xa2\xb5\xa4\x14\x96\x18\x78\xfa\x55\ \xa6\xcd\x59\x42\x72\xf5\x6a\xcc\xd0\x10\x68\x0d\x4a\x81\xf4\x41\ \x49\x8c\xd6\x95\x55\x6c\x2a\x80\x01\x6d\xd0\x9e\x0f\x7f\x71\x09\ \x1f\x5f\x3a\xef\xda\x09\x16\xc7\xfe\x5e\x01\x81\x82\x75\x7b\xc0\ \x76\x20\x69\xc0\x02\x35\x3c\x94\x7b\xe8\xc8\xee\xcd\x18\x21\x90\ \x32\x8c\x02\x95\x3e\x15\x82\xe8\x5e\x85\x28\x39\x82\x92\xe5\xb3\ \x0c\x4a\x1c\x38\x70\x80\x9a\xbd\x59\x1a\xce\xbb\x00\xa4\x02\x15\ \x46\x41\xcb\x00\x13\xfa\x65\xa2\x3b\x15\x11\xcf\x0c\xc6\x50\xa9\ \x44\x48\xd8\xd8\xc4\x8c\xb3\x57\xd4\xac\x6a\xae\xbe\xe4\x0f\x7e\ \x0b\x3d\xbe\x1d\xde\x35\x0b\x7e\xd6\xea\x70\xd9\x80\xc4\xd6\x7c\ \xff\x8d\x97\x9f\xb8\xa1\xe9\x98\xb9\x8d\x42\x58\x00\x08\x2a\x65\ \x37\x98\x78\x65\x1a\xb4\x51\x28\x29\x09\xfc\x22\x81\x3b\x4c\x76\ \xef\x7e\xba\x1b\x5a\x10\xd3\xa6\x63\xbc\x62\x3c\x3b\x80\x56\x20\ \x44\xe5\xac\x64\x3c\x47\x2a\xc2\xa8\xf2\xfb\x0c\x26\x2a\x4c\x18\ \xc2\x8c\x59\x9c\x3e\xbd\xf5\xd4\x7f\x3e\xb4\xdb\x06\xd4\xb8\x02\ \xf6\xe7\xe0\x76\xdf\xe1\xa9\x09\x09\x1e\xaf\xb7\xf8\xf4\x81\xb0\ \xaf\xab\x77\xdf\xc7\x76\xae\xfb\x97\x7b\xba\x4f\xbb\xc0\xd1\x32\ \x1c\xdb\xab\x26\x12\xa0\x95\x22\x0c\x3d\x02\xaf\x88\xef\x16\xf0\ \xfc\x3c\xde\x91\x01\x32\x6d\xb3\x20\x99\x82\x30\x88\xfa\xde\xe8\ \x68\x47\xf3\x96\x80\x78\x15\x2b\x89\x51\x91\x47\xeb\xf8\xbd\x71\ \x82\xc2\x00\x6a\x33\xf4\x74\xb5\x76\xf2\xc2\xee\x7a\x20\x3b\xae\ \x00\x6c\x78\x6a\x6e\x0a\xb4\xe2\x70\x52\x70\xe3\x74\x8b\xb6\x92\ \xaa\xbe\xb4\x77\xbd\xba\xea\x69\xed\xb4\x2f\x7c\x07\x42\xd8\x71\ \xa9\x41\x6b\x55\xee\x7b\x19\xfa\x84\xbe\x4b\x30\x8a\x57\xc0\x0b\ \x8a\xf8\xb9\x2c\xa9\x29\xb5\x71\x6b\x18\xb0\x34\xc2\x68\x88\x2b\ \x09\x44\x82\xb4\xae\x04\xaf\xa2\x36\x8a\x2a\x1b\x41\x18\x82\xd1\ \xa4\x33\x35\xd5\x40\x7a\xfc\x16\xaa\x13\x70\x71\x15\xa8\x68\x00\ \x50\x32\x85\xd1\xdf\x5b\xb2\xf8\xf2\xf7\xe5\xa8\x62\xdd\xd6\x1d\ \xcc\x7b\xfa\x11\x9a\xa7\xce\xa0\x66\x42\x0b\xda\x18\xd4\x5b\xbd\ \x1f\x06\x91\x88\xc0\xc3\x2f\xe4\x18\xea\xdf\xc3\xc1\x52\x09\xa9\ \x03\x52\x32\x8c\x33\x6f\x63\x74\xbc\x2e\x11\x54\x06\xf7\x3f\xcf\ \x80\x41\x47\x44\x22\x94\x82\xc0\x83\x72\x72\x82\x12\x10\x8c\x2f\ \xe0\x43\x29\x48\x38\x40\xf9\x65\x29\x5b\x24\xee\xff\xc6\xca\xaf\ \x9f\x7f\x5c\xcb\x2c\xfe\xfe\xa9\xaf\xd2\x73\xd9\x97\xa8\x1f\xee\ \xe5\xb5\x5f\xde\x4e\x7a\xe7\x26\x32\x0d\x8d\x88\xfa\x0c\x28\x13\ \x0d\xb3\x57\xc0\x3d\x70\x90\x92\x63\xf0\x4f\x9a\x4e\xbe\xa7\x83\ \xa1\x47\xb2\xd4\xb8\x25\x4c\x32\x89\xd0\xaa\xb2\x3a\xe3\xf8\xe3\ \x6d\x33\x26\xeb\xda\xc4\x5e\x2b\xf0\xdd\x48\x40\x21\xc7\xf6\x03\ \xd9\xbd\xc0\xd0\xf8\x02\xac\x2a\x90\x32\x7a\x0a\xf5\x77\xbe\xb5\ \xfa\x1f\xce\xff\xc8\x09\x1f\xe4\x6b\xcf\xde\xca\xc7\x4e\xb9\x81\ \x62\x61\x80\x96\x19\x2b\xe8\x9b\x56\xcb\x83\xf7\xff\x94\xe3\x1e\ \x7f\x85\xb9\xbb\x5e\x46\x77\x26\xb0\x0a\x9a\xd2\x21\xcd\xe3\xe7\ \x9e\x43\xd5\x85\x2d\x9c\x34\xaf\x83\x52\xb6\x9f\x6d\xb9\x5e\xda\ \x0f\xf7\xa1\xa7\x4c\x47\xc8\x10\x61\x0c\x63\x8d\x38\x70\x46\x30\ \x11\x18\xb4\xd6\xe0\x7b\xe0\x95\x30\x81\x07\x07\x7b\x79\x72\xd7\ \xc1\xe7\x81\x70\x7c\x01\x45\x0b\xaa\x01\xd7\xbd\xf2\x3d\x27\x5d\ \x79\xf5\x47\x16\x5e\xcb\x63\x3b\x1e\x66\x51\xe7\x49\x9c\x36\x6d\ \x05\x1b\xfa\x37\xb2\x6f\xe0\x0d\xbc\x50\xb2\xec\xe4\x4b\x49\xb7\ \x9d\x46\xcf\x59\x37\xd0\xb9\xcd\x87\x01\x58\x7b\xc6\x19\x2c\xbe\ \xea\x7a\x0e\x95\x5e\xe3\xa0\xbf\x99\xb6\xc2\x02\xaa\x4f\x58\x88\ \xdc\xf4\x7c\x24\x40\xeb\xca\x0e\x13\x44\x66\x88\x05\x50\xf1\x5a\ \x46\xc1\xbb\x45\x8c\x57\x22\xe5\xe6\xd9\xff\xdb\xcd\xc3\x6b\xf7\ \x66\x1f\xf9\xfd\x6b\x54\x00\xda\x34\xb5\xd4\x4f\xfb\xca\x5f\x2d\ \xff\x30\x6f\xe4\xb7\xb0\x3f\xbf\x87\x77\xcf\xbf\x1a\x5f\x97\x58\ \xd0\x76\x3c\xbb\xb3\x6f\x52\x0a\x3c\x16\x34\x4d\xc5\xef\x3a\x89\ \x81\x1b\xb7\xd2\x71\xeb\xed\x1c\xac\x6b\xa4\xe6\x2b\x7f\xc3\xb1\ \x2d\xd3\xd8\x33\x6c\x31\x74\xa4\x89\x15\xad\x17\x12\xac\xd2\x1c\ \xbe\xfd\x46\x26\x6d\x7f\x15\xaf\x67\x3e\x22\xf0\x00\x10\x46\x10\ \x67\x3f\xf2\x51\x09\x30\x32\x04\xdf\x1d\xa5\x1c\xbc\x90\x01\xce\ \xce\x4d\x7c\xf9\xc9\x97\xee\x1a\x0a\xf5\xc6\xb6\x45\xd7\xa1\xa5\ \xe2\xe0\xc6\xef\x8c\xb3\x85\x3c\x7d\xcd\xbb\x4f\x3f\xbf\xb5\xa5\ \xa1\x9e\x27\x5f\xff\x15\x73\xda\xe6\xe0\xaa\x3c\x68\x41\xc2\x4e\ \xd1\xde\x30\x89\xf6\xfa\x49\x38\x56\x12\x84\x4d\xe9\xb3\x5f\xe4\ \xb5\x7b\x1f\x46\x5f\x71\x2d\x4b\x4e\x38\x0d\xc7\x84\x74\x36\xb5\ \x22\x8c\x8d\xb2\x02\xd2\x29\x58\xbf\xfc\x02\x82\x07\x7e\x4c\x67\ \xa6\x0e\xaf\xb9\x13\x64\x80\x40\xc4\x23\x60\xe2\x5f\x67\x59\xbe\ \x27\xf0\x21\xf0\x30\xbe\x07\x2a\xa4\x7a\xdf\xeb\x3c\xf4\xec\xde\ \xed\x3f\xd8\x67\x6e\x99\xfa\xce\x5b\xcc\xe4\x25\x37\x11\x7a\xc1\ \x88\x80\xef\x02\x66\xac\x00\x8c\x49\xd7\xa4\x9b\xae\x58\x31\x7b\ \x21\x6f\x0c\xee\xc2\xd5\x05\x26\xd6\x35\x31\xe4\x1f\x21\x61\xa5\ \x48\x98\x24\x9e\x70\x49\x08\x07\x4b\x3b\xd8\xc2\x26\x59\x9b\xc6\ \xb9\xef\x47\xd4\x76\x8d\xb6\x48\x01\x4f\x4b\xb4\x51\x68\xa1\x71\ \x84\xcb\xba\x0d\x47\xb8\x73\xfd\x09\x2c\xec\xe9\xe2\xca\x87\x6f\ \xa3\x69\xd9\x71\x84\xd3\x66\x63\x54\x1c\xb4\x31\xa3\x3e\x22\x0c\ \xa3\x9d\xaf\x43\x2c\xb7\x48\x7a\xdb\xab\x6c\x1c\x68\xe3\xd1\x95\ \xf7\x4e\x99\xdd\x99\xff\x42\x6d\x63\xd7\x67\x54\x71\xc0\x53\x7e\ \x00\x08\x52\x75\xed\xf8\xc3\xbd\x15\x01\xb8\xfa\x94\x59\xd3\xa6\ \xcd\x6a\x6e\xa8\x61\xe7\xa1\xad\x34\x65\x26\x50\x94\x79\x2c\x6c\ \x12\xc6\xc7\xd1\x09\x6c\x91\x1c\x21\x0a\xde\x1a\x45\xe6\x68\x5a\ \x3a\x03\x23\x25\x43\xc1\x00\xf1\x08\xe2\x38\x3e\x0f\xfe\xf2\x08\ \x8f\xbd\x72\x0c\x57\x9e\x33\x91\xb5\x4f\x48\x7e\xb5\xf0\x33\xac\ \xc9\xfe\x18\x67\xdb\x23\x24\x66\x76\x13\x36\x34\xa3\x84\x83\xd1\ \x0a\xa4\x2c\xb7\x4b\xd2\x1d\xc6\xee\xef\xc5\xdf\x7f\x98\x8d\xc7\ \x9c\xc1\x2d\x85\x33\x58\xd2\x6c\x57\x2d\xbe\xb8\xeb\xfa\xbb\x1e\ \xcd\xce\x0d\x95\xb9\x44\x58\x4e\x16\xc0\x72\x6a\x48\x66\x26\x57\ \x04\xe0\x5b\x2b\x7b\x26\xb5\x59\x45\x95\x23\x17\x0c\x30\xa9\xae\ \x8d\x7c\x98\xc5\x11\x29\x12\x56\x12\x47\x24\xb0\x47\xb1\x1c\x6c\ \x46\x05\x58\x08\x46\x28\x0e\xc7\xc3\x38\x8a\x21\x99\x0c\x59\xfb\ \xd4\x61\x1e\x7b\x7e\x0e\xb7\x5f\x37\x99\x2d\x5b\x0e\x53\x4f\x81\ \x96\xf9\x3d\x0c\xce\xfa\x3c\x43\xeb\x9e\x27\xfb\x8b\x27\x69\x56\ \xaf\x33\xb1\xce\x50\x95\x72\x40\x2b\x8a\xc5\x80\x1d\x83\x09\x0a\ \x9d\xc7\x71\xf0\xec\x1b\xd8\xd3\x38\x8d\xa5\x2d\x21\x7d\xbf\xdd\ \xc6\xb9\x27\xa5\xe9\xbe\xbc\xf6\xf4\x9b\xee\x1c\x7a\x70\x78\x68\ \xef\x6a\x30\xae\x9b\xdd\x46\xf7\x39\x77\x55\x04\xa0\x13\xc7\x37\ \xd5\x57\x73\xd8\xed\xc7\xb2\x21\x34\x1e\x52\x86\xe5\xe0\x13\x3a\ \x85\x63\x25\x70\xe2\xf6\xb1\x88\x2b\x20\x44\x65\xa5\x18\x83\x93\ \x84\xdf\x6d\x3e\xc4\x7d\xbf\x9c\xc9\xd7\xae\x9b\x42\x8d\x13\xb0\ \x63\xd7\x10\x37\x7d\xa4\x9b\x0d\x3b\x34\xf9\x41\x8b\xfe\xee\xa5\ \x3c\xbb\x6c\x29\x0d\x89\xc3\x6c\xd8\xf4\x3a\x49\xaf\x80\xc1\x22\ \x9f\xa9\x67\xf6\xe2\xd9\x50\x53\x4f\xeb\x44\x90\x7d\x9a\xe5\xc7\ \x26\xa8\x9a\x33\x9d\xe7\xd6\xf5\xf2\xe1\xcb\x8f\xe1\x93\x97\x34\ \x2e\xff\xcb\x5b\x9e\xfc\x36\x70\x35\xd8\xf4\xbd\xfc\x4d\xe0\x7d\ \xc4\x02\x9c\xb6\x64\xd2\x90\xf5\x0e\xe1\x38\xd5\x14\xe4\x50\x39\ \xe3\x09\x9d\x2c\x0f\x6d\xd4\x42\xce\x28\x51\xf0\x58\x08\x31\x02\ \x91\x09\x4b\x10\x0e\xe7\xb8\xfb\x81\x06\xce\x7f\xc7\x0c\x66\x4f\ \x85\x1f\xfd\xfc\x10\x67\xbc\xb3\x9d\xfa\x6a\xc1\xe2\x99\x82\xad\ \x7b\x15\xa1\x0f\xab\xe6\xdb\x54\x57\x4f\x64\x42\xd7\x44\x7e\xbd\ \xcb\x43\x1b\xc3\xaa\xe9\x69\x16\xb5\xc2\x9b\x87\xe0\x77\x07\x34\ \x4b\x3b\x0c\x0b\xa6\x41\xd2\xa9\xa6\xaf\x3f\xc3\x33\x1b\x06\xb9\ \x70\x59\x23\xcf\x5d\xf8\xae\xab\xee\xd8\xbc\xfa\xd1\xa0\xff\xd1\ \x07\x4a\x87\x36\x55\x3e\xa7\x91\xb6\xe3\x4a\x97\xa2\x1a\x46\x8b\ \x90\x82\xcc\x51\x92\xc3\xe5\xe7\xa2\x1c\x25\x47\x4c\x59\x5c\x61\ \xf4\x1c\xf9\x32\x1e\x59\x7e\xbd\x6e\x08\x25\x67\xb3\xea\xb4\x14\ \x2f\x6e\x73\xb1\x53\x09\xda\x3b\xaa\x19\xf2\xc0\x49\xc0\x9c\x2e\ \x9b\x69\xcd\x82\x99\x6d\x30\xa5\x01\xce\x3d\x06\xae\x5c\x50\xc5\ \x7b\x17\xa4\x39\xaf\x1b\x3a\xea\x61\xfe\x14\xb8\x68\x0e\x9c\x3c\ \xdb\x06\x01\x85\x00\x4e\x3c\x61\x22\xdb\xf6\xba\x1c\x18\x36\x5c\ \x7a\x66\x0d\xdd\x4b\x3f\x7e\x2b\x56\x55\xcd\xd8\x2d\xe4\x59\x85\ \x23\xb9\x41\xa6\x08\x07\x4f\x17\x51\x26\x8c\x33\x1f\xf5\xbf\x53\ \xee\x7d\x07\x4b\x8c\x62\x11\x57\x00\x00\xcb\xb2\x08\x73\xc3\x3c\ \xfb\x5c\x17\x67\xbe\x63\x32\xca\x82\xcd\xbb\x8a\x2c\x9c\xd3\xc4\ \x60\x09\x6c\x20\x50\x90\xb4\x61\x52\x8b\x85\x30\x60\x09\x48\x3a\ \xb0\xb0\x0d\x0c\x90\xb4\x40\x19\x68\x4c\x40\x43\x8d\xc5\xb0\x0f\ \xa1\x8a\xb0\x1c\x41\x7b\x47\x86\x97\xb6\x16\x98\x3f\x37\xc3\xa9\ \xa7\x2d\xea\xd9\xb1\x6e\xf9\x25\xe1\xa1\xc7\xee\xae\x54\x20\xb0\ \xb7\xee\xeb\x1d\x42\x0a\x97\x4a\xe6\x73\x11\x2a\xca\x72\x41\x8d\ \x9e\x87\xa2\x2a\x94\xef\xa2\xb3\x6b\x06\xd9\xbe\x63\x88\x42\x6e\ \x2a\xb3\x66\x55\xb1\xab\x57\x96\xb3\x9f\xae\x71\x18\x76\xa1\x10\ \x44\xe4\x7d\xca\x82\x72\x3e\x0c\xfb\x91\x77\x25\x78\xb2\x72\x37\ \xe4\x42\xd6\x85\xbc\x1f\x65\xbf\x18\x42\xb6\x08\x6d\xed\xb5\x1c\ \x18\x0c\x19\x28\xc2\xfc\x79\x19\x1a\x3b\xcf\x7a\x0f\x20\x2a\x15\ \x30\xf6\xa3\x3b\xb6\x14\xdf\x3b\xbc\xb2\x40\xca\x56\xd8\x3a\x11\ \x55\x40\x8c\xa0\x9d\xa3\xfa\x3f\xde\x42\x20\x20\x61\x49\xb6\xbe\ \x56\xc5\x84\xc6\x56\x52\x19\xd8\xb5\xd3\xa7\xb5\xb9\x9a\x9c\x07\ \x8e\x80\x84\x02\xc7\x06\xc7\x8a\x9e\x6d\x2b\xaa\x80\x00\xc4\x98\ \xcf\x0a\xd0\x06\xd4\x28\x1a\xa4\x01\xa9\x20\xd4\x60\x84\x20\x5d\ \x9b\xe2\x8d\xbe\x90\x96\x49\x09\x5a\x3b\x8f\x3b\xf1\xd0\xc6\xba\ \x2e\x60\x77\x24\xc0\x72\x7e\x91\x7d\x53\xff\x6e\xfd\xf3\x83\xf3\ \x16\x9f\x1e\xe2\xb9\x09\x1c\x9d\x88\x04\x88\x31\x02\x2a\x2b\x14\ \x81\xb0\x2c\x2c\x5d\xa2\x77\x77\x0f\x1d\x2d\x19\x86\xbd\x28\x6b\ \x89\x74\xa2\x7c\x4e\xda\x90\xb0\xc0\x89\xb1\xad\x8a\x00\x8b\xca\ \x97\x35\x54\x04\xe8\xb7\x04\xc4\x84\x3a\x12\x55\x5b\x57\x45\xdf\ \x40\xc0\x94\xce\x04\x13\x26\xb6\x34\x88\x54\xc7\xbc\x8a\x00\x43\ \x09\xec\x4f\x3e\xf7\x90\xfb\x78\xba\x4e\x8b\x99\x27\x24\xf0\x82\ \x04\x42\x46\xdb\xc7\xb1\x1c\x2c\xa2\x1f\x31\x51\x9e\x01\x01\x8c\ \x78\x4b\xa0\xc2\x22\xb9\x81\x24\x3d\xd3\x13\x1c\x1e\x06\x2b\x99\ \xc0\x53\x10\x8c\xa2\x19\x2b\x40\x94\x89\x2a\x20\xa0\x52\x80\xa3\ \x05\x28\x53\x11\x10\x2a\x30\x8e\x8d\xaf\x45\xb9\xd5\xd2\xb5\x69\ \x2c\xa7\x69\xfa\xd8\x6f\x21\x21\x9e\x90\x45\x71\xd5\xbf\xdd\x21\ \xbf\xdd\xbf\x92\x9a\x79\xa7\x4a\xea\x9a\x3c\x8c\x65\x23\xb5\x8d\ \x18\xc5\xd8\x58\xfa\xad\xf6\x11\x58\x58\xc8\xb0\x80\x57\x02\x69\ \x04\x43\xae\xa1\x2a\xe1\x30\xec\xc7\xed\x63\x8d\x60\xc7\xc1\x8f\ \x27\x20\xc6\x18\xd0\x8c\x11\x70\x54\x15\x8c\xed\x30\xe8\x46\x6b\ \x1b\xe3\xd4\x55\x04\x38\x16\x84\x80\x25\xee\xd1\x6f\x1c\x7a\x75\ \xe3\x0f\xd3\xb7\xbc\xf6\x54\xdd\x39\x1d\x73\x13\xce\xe4\x19\x8a\ \x09\x6d\x8a\x9a\x7a\x48\xa5\xc1\x49\x08\x6c\x5b\x20\x46\x05\xd8\ \x20\x75\x09\x29\x5d\x8a\x25\x49\x49\x0a\xec\x84\xa0\xe0\xc7\x99\ \xb7\x21\xa1\xc6\x0a\xb0\xc4\x98\x19\x38\x5a\x80\x8e\x44\xc8\x4a\ \x2b\x11\xc6\x5e\xdb\x36\x39\x17\x4a\x05\x1f\xa3\x24\x95\x2d\xd4\ \x97\xab\xbc\xcd\xf7\x37\xb1\x7b\xf7\x05\xfe\xba\x6d\x8b\x77\xdd\ \xb3\xe7\x73\xcf\xdd\x7a\x78\xed\xcf\x3f\x97\x7f\xfd\xfe\xcf\x7a\ \xd9\xfb\xfe\x3a\xf4\xee\xbb\x39\x34\xf7\x7d\x21\xe4\xbe\x2f\x05\ \xdc\xff\xe5\x80\x07\xbf\x2a\xd9\xbf\x7b\x90\xec\x91\x22\xa1\x80\ \x92\x84\x42\x18\x51\x0c\xa0\x30\x3e\xe4\xdf\xc2\x8f\x7c\xc1\x8f\ \xef\xc7\xf9\x5b\x5f\x47\xc9\xc9\xf6\x0f\x83\x2e\x0e\x55\x2a\xb0\ \xb1\x17\x4e\xcd\x80\x95\xac\x08\x09\xbc\x8d\x65\x72\x40\x1f\x19\ \x89\xd5\x2c\x85\xdd\x08\x22\x83\x65\x57\x23\x44\x02\x63\x40\x68\ \xdf\xc9\x0c\x9d\xde\xbb\xad\xff\xc6\xd9\xe1\x14\x14\x95\xac\xc7\ \xfd\x8f\x3d\x4e\x05\xc6\xce\x40\x5c\x85\x98\xb8\x85\x50\x95\x0a\ \xa0\x04\x64\x07\x02\x0e\xec\xda\x2b\x8d\xec\xdd\x3e\x76\x06\x9e\ \xdf\x0e\x0b\x7a\x2a\x02\xc6\x92\x07\x9d\xc7\xe8\xdd\x00\x28\xc6\ \x58\x75\xed\xd9\xaf\xf4\x6d\x7e\xe3\x43\xfb\x77\xce\xac\x6b\xeb\ \x69\xc0\x0f\x38\x7a\xfb\x1c\xb5\x42\xc7\x0a\x20\xee\x7f\x13\x05\ \x5f\x59\xa7\x15\x10\x69\xd8\xf9\x62\x1f\xb9\xde\xf5\xaf\x1b\x75\ \x78\x53\xa5\x85\x00\xa4\x82\xf5\xdb\xc0\xf5\x79\xfb\x26\x06\x82\ \xbc\xfb\x8f\x2f\xdf\xfb\x02\x43\x79\x8d\x2b\xa2\x92\xc7\x8c\x6d\ \x97\xa3\x5a\x28\x3e\x8f\xdb\x3e\x51\x3b\xfa\x09\xd8\xf3\xda\x30\ \x9b\x1e\xde\x80\x2c\xfe\xeb\xdd\x60\xfa\xc7\x56\x20\x4e\x01\xb9\ \x02\x6f\xdf\x0c\x96\xc5\x97\xfb\x5f\x7d\x73\xd1\x33\xb7\x3d\xbe\ \x72\xe1\xfb\x4f\xa5\xa1\xb3\x96\x50\x82\x90\x60\x13\xb7\xcf\x38\ \x43\x1c\xb7\x4f\xbc\x4a\x2b\x28\x00\x27\xf2\xfb\x5f\x3c\xc8\x2b\ \xdf\x7f\x81\x7c\xef\x3d\xf7\x6b\xb9\xf9\x2e\x62\x73\xf8\x53\x4d\ \x64\x40\x38\x00\xae\x9d\xb0\x2e\xe8\x7b\x69\xe7\x6d\xd9\x1d\xfd\ \x1f\x9c\x76\xfa\xf1\x76\xe7\x92\xe9\xd4\x75\x34\x90\xac\x16\xd8\ \x0e\x58\x95\xd6\x89\x01\x43\xc5\x0c\xa0\x63\x31\x32\x04\x37\x17\ \x92\xdd\x35\xc0\x9b\x4f\xef\x64\xdf\xf3\xaf\xb8\xd2\x7b\xe4\x4e\ \xcc\x33\x5f\x02\xb2\xff\x7d\x02\x8c\x87\x91\x03\x40\x0a\xa0\x64\ \x27\xed\x8f\x7a\x43\xc5\x3b\xb7\xdc\xf7\xdd\xab\xb7\x3e\xd4\x79\ \x56\xa6\xad\xab\x2b\xd3\xde\x66\xd7\xb6\x36\x50\xd5\x58\x43\xb2\ \x26\x85\x9d\xb2\xb1\x13\x4e\xa5\x02\x1a\x54\x10\x22\x7d\x89\x9f\ \xf7\x70\x07\x0a\xe4\x0f\x0c\x90\xef\xdd\x1f\x16\x0f\xed\x7a\x13\ \x36\x3d\x03\x2f\xff\x04\x86\x46\x3c\x0a\xe0\xbf\x4f\x00\x21\x85\ \x03\x9f\x26\x3d\xe1\x5b\xc4\x86\x65\x5b\xeb\x8d\xfc\xcd\x7a\x1d\ \xee\xab\xc9\xed\xcd\x1c\x9b\xdb\xdb\x34\x17\x9a\xa6\x43\x7a\x32\ \x64\x1a\xa1\xaa\x1a\x2c\x07\xec\x2a\x00\x90\x1e\x68\x09\xa5\x12\ \x14\x73\x30\x7c\x00\x06\x77\xc3\xe1\xed\x90\xdd\x0a\x1c\x64\x1c\ \xfb\xff\xff\x56\xf9\xbf\xb6\x7f\x07\x3d\x3b\xcc\xf1\xa3\xb2\xb6\ \x47\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x0e\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ \x00\x00\x04\xd5\x49\x44\x41\x54\x68\x81\xed\x98\x4f\x4c\x5c\x55\ \x14\xc6\x3f\xc5\x44\x93\x66\x6c\x94\x56\x29\x35\x2d\x09\x63\x2c\ \x01\x69\x29\x43\x45\xde\xd0\xa1\x20\x14\xb0\xc8\x20\x4a\x5b\xb0\ \xe5\x4f\x05\x06\x34\x2d\xcd\xc0\x4c\x67\xf8\x2b\x28\x1b\xc5\x26\ \x6d\x44\x68\x69\x53\x18\xc0\x3e\xe9\xc4\x85\x49\x37\x1a\x6d\x17\ \x8d\x7f\x20\x94\xa8\x69\xdc\x19\xdd\x18\x17\x24\xa6\xba\x70\xd3\ \x5c\xcf\x6d\xd2\xc2\x7b\xf6\x9e\xab\x71\x01\xe8\x0c\xf9\x25\x84\ \xef\xe3\xbc\x77\x72\xbe\x7b\xef\x9b\x07\xc4\x3e\xab\xe0\x93\x08\ \x64\xd4\x01\x73\x0d\xc0\xac\x8a\x6c\xe0\x34\xa7\x4b\xdc\xc0\xa8\ \xce\x63\x68\xea\x54\x03\xf3\x39\xc0\x29\xce\xf3\x02\xf0\x35\xdd\ \x76\xdc\xdd\x06\xb6\x00\x46\x2f\x20\xfa\x18\x3c\x40\x84\xd3\x25\ \x7b\x01\x53\xe7\x29\x02\xa6\x38\x3d\x48\x14\x03\x93\x9c\xc7\x07\ \xdc\x8c\x35\xb0\xaa\x1a\x78\xe2\x41\x38\xf7\x38\x30\xc1\x91\xee\ \x40\x58\xe7\x29\xdc\x80\x9e\xea\x04\x4c\x70\xb8\xd6\xf3\x75\xf2\ \x1c\x88\xa4\xaf\x43\x88\xf3\x18\xeb\x10\xa1\xdb\xbe\x6f\x69\x02\ \x0e\x18\x3d\x1e\x88\x5e\x06\xcf\x56\x44\x38\x5d\x12\x34\x60\x8a\ \x6e\x08\x0e\xef\x36\x4c\x71\x35\x02\x06\x4d\xc0\x89\x49\xce\xd3\ \xec\xba\x3d\x81\x07\x62\x0d\xac\x70\x03\x4b\x6b\x20\xde\x81\x6d\ \x2f\xa7\x62\x74\x7f\x1a\x46\x54\x6c\x7f\x1c\x27\x38\x5d\x52\xf5\ \x34\xba\xa2\x55\x18\xe1\x30\x92\x10\xe2\x6a\x78\x53\x70\x6e\x67\ \x22\x3a\x38\x4f\xa1\x13\xe7\xe9\xb6\xef\xbf\xdb\x40\x42\x3c\xb2\ \x6a\x4b\x30\x57\x5f\x8a\x59\x15\x59\x4f\x61\x98\xd3\x25\x75\xc5\ \x18\xbb\x7a\x0a\xb3\x1c\x79\x19\x18\xe1\x6a\x1c\x7c\x0e\xd7\x77\ \xa5\xf0\xd7\x7a\x3e\x07\xb3\xd6\x6d\xf4\x31\x8a\x50\x1d\x8d\xa7\ \x5e\x8d\x67\x3b\x45\x88\xd1\x25\xc1\x83\x14\xa1\x2b\x14\x15\x06\ \xef\x6e\x8a\x10\x53\x23\x50\x4d\x11\xda\x45\x11\x62\x3c\xcd\xe5\ \xf6\x35\xb0\xe6\x1b\xd8\x08\x77\xe7\x61\x88\x2e\x06\xd9\x00\xa7\ \x4b\xa8\x81\x0f\xff\xf8\x04\x82\xa3\xdc\x8d\x29\xae\x86\x7f\x3f\ \x44\xa1\x0b\xd3\x9c\xe7\xd5\x32\xdb\x22\xce\xcc\x44\x72\x7f\x3f\ \x4c\x8e\x92\x12\x74\xe6\xe7\xc3\xe4\xa8\xac\x44\x8f\xae\x8e\x61\ \x20\xc4\xd5\xf0\x78\x30\x53\x53\x83\x4e\xae\x86\xdf\x0f\xd3\x72\ \x90\x65\x67\xc3\xb8\x75\x8b\x46\x2c\xd4\xd4\xd7\x53\x84\x7a\x69\ \x84\x0c\xc1\x20\x45\x88\xa9\x21\xf1\x7a\x29\x42\x4c\x8d\x40\x00\ \x62\x68\x08\x93\x5c\x8d\x85\x05\x5b\x84\x62\x0d\xac\x74\x03\x72\ \x0d\x98\x26\xce\xce\xcc\xe0\xcc\xbd\xb8\x74\x09\xa3\xe5\xe5\x68\ \xaf\xaa\xc2\x19\x8e\x43\x87\x10\x52\xd5\xb8\x03\x65\xbc\x83\xab\ \x51\x51\x81\xf3\xad\xad\x38\x2e\xaf\xa9\xaa\x71\xf2\x24\xce\x59\ \x0e\x32\x17\x4d\xe0\xda\x02\xc4\x17\xdf\xa8\x69\x0b\xc0\xfc\xf2\ \x5b\x88\x3b\xdc\xcb\x13\xee\xc3\x47\x5c\x0d\x49\x41\x31\x66\x1a\ \x5a\x20\x54\xd4\x34\x40\xb4\x87\x11\xe5\x6a\x8c\x9b\xf8\xdd\xb2\ \x0b\xc9\x06\x7e\xa5\x08\xdd\x14\x6a\xe8\xe6\x22\x9c\x2e\x19\x7c\ \x17\xa6\xce\x53\x4a\x11\x0a\xf6\x51\xdc\x14\x1c\x0b\x52\x1d\x8a\ \x10\x57\xe3\xda\x82\x6d\x1b\x5d\xa3\x0d\x2c\x5b\x03\xcf\xc0\xfd\ \xdd\x0f\x10\x37\x7e\x52\xe3\x0f\xe2\x03\x4e\x97\x74\xbf\x85\xe8\ \x8d\x1f\xe9\x77\x86\xa2\x52\x5c\x6c\x39\x0e\xa1\x42\xc6\x28\x4c\ \x7b\xfd\x5f\xea\x2f\xab\x11\xbd\x8c\xdf\x2c\x0d\x24\xef\x84\xb3\ \x6d\x18\xe3\xfe\xf7\x71\x41\x45\xc9\x11\x04\x39\x5d\x52\x79\x14\ \x9d\x3a\xcf\x8e\x5c\x04\x9e\x2d\xc3\x05\x15\x59\xc5\x88\xec\x6b\ \x42\x80\xab\xd1\xf0\x06\x26\x2c\x8b\x38\x95\x22\xf4\x19\x45\xe8\ \x8a\x50\x53\x4b\x11\xe2\x74\x49\x2b\x45\x48\xe7\x71\x53\x84\xa8\ \x96\x50\x71\x80\x22\xf4\x1a\x45\x88\xab\x31\x66\x8f\x50\xac\x81\ \x95\x69\x60\x69\x17\x72\xd2\x41\x76\x62\x1c\x91\x30\x43\x59\x33\ \x82\x9c\x2e\x79\xf1\x18\xba\x74\x9e\xf4\x5c\x84\x72\x2b\x10\x51\ \x91\x53\x86\xe9\x72\xcd\xb5\x7c\xef\x60\xd2\xb2\x06\xb6\xd0\x04\ \xda\x7f\x86\xe8\xf8\x45\xcd\xee\x30\xa6\x38\x5d\x92\x3f\x88\xa8\ \xce\x53\xf0\x26\x2e\x72\xfa\xeb\xdf\x43\xec\x19\x80\xc9\x79\x0e\ \x7f\x7a\x7b\x17\x8a\xb3\x34\xd0\x4b\x11\xea\x13\x6a\x3c\x14\x21\ \x4e\x97\xec\xa5\x08\xe9\x3c\x45\x6f\xd3\x8b\x2d\x46\x0f\x2e\x52\ \x1d\x8d\xc7\x67\x8f\xd0\x7f\xa2\x81\xa6\x39\xfa\xaa\x36\xaf\xc6\ \xa0\x67\x21\x4e\x97\xe4\xd1\xb3\x90\xce\xe3\xe9\xc6\x0c\xa7\xd7\ \xd1\xd7\x4e\x77\x08\x51\xce\xf3\xd2\xb4\xed\x59\xe8\xe1\x1d\x78\ \x32\x95\x9e\xfe\xd2\xa2\x18\x51\x91\xd0\x88\x76\x4e\x97\x6c\x6e\ \x43\x48\xe7\x49\x68\x41\x07\xa7\xa7\x4c\x60\x6c\xb3\x0f\x7e\xce\ \xe3\xb4\x3f\x8d\x3a\x68\x02\x1e\x8a\x90\x47\xa8\xd9\x4a\x11\xe2\ \x74\x49\x32\x45\x48\xe7\x71\x52\x3c\x38\xdd\x58\xd4\x7b\x5c\xf6\ \x73\x60\xd5\x35\x40\xe7\xc0\xff\xab\x81\x87\x92\x90\xb4\xe9\x08\ \x06\x36\x35\xaa\x59\xef\x46\x13\xa7\x4b\xe2\x0b\xd0\x9a\xd8\x84\ \x7e\x8e\x47\x72\xe1\xb3\xff\xcd\x52\xa7\x16\x83\x8f\x7a\xd0\xa8\ \xfa\x7f\xe9\xd9\x78\x00\x83\x58\xfe\x56\x02\xf4\x38\x0d\x9a\x00\ \xfb\x43\x13\xd0\x38\x04\x68\x02\x5a\x0f\x4d\x80\xd5\x17\xff\x86\ \xc7\x3e\x01\x50\x84\x62\x0d\xac\x68\x03\x19\x70\xe1\x73\xcc\xe1\ \x2a\xbd\xf5\x55\xe1\xc3\x7b\xac\x2e\xf1\xe3\xac\xd6\xd3\x86\x61\ \x56\xff\x18\xd7\x71\x54\x73\xad\x51\xdb\xdb\x69\xe4\x20\x8d\x04\ \xbe\x81\x00\x86\xb4\x37\xd7\x8f\xd3\x5a\x4f\x0f\xcd\x89\xd3\x2f\ \x63\x1e\x5d\x1a\xcf\x04\xbe\xb2\x1c\x64\x6b\x34\x42\x71\x6b\xbd\ \x81\x55\xbc\x88\xe9\x20\xfb\x67\x0d\x64\x62\x03\x06\xd0\xc8\x52\ \x8d\x52\xad\xa7\x11\xfb\xfe\x75\x9d\x1e\x34\xe3\x15\x14\xb3\x9e\ \x76\xf2\x58\x0e\xb2\x35\xfc\xf9\x13\xd5\x98\xa6\x54\x48\x88\x3c\ \x6f\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x0c\xbd\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ \x00\x00\x0c\x84\x49\x44\x41\x54\x78\x5e\xed\x99\x6b\x8c\x5c\xe5\ \x79\xc7\x7f\xcf\x7b\x2e\x33\x3b\x33\x7b\xb3\xd7\x5e\xbc\xb6\xd7\ \xc1\x2e\x97\x84\xba\x60\x4c\x20\x41\xad\x43\x44\x40\x54\x90\x96\ \x4a\x69\xaa\x5e\x48\x3f\xd0\x36\x11\x48\xfd\xe2\xa8\x4a\x2b\xd4\ \xa4\x5f\x9a\x56\x8d\x69\xa5\x82\x54\x55\xa9\xc4\xa5\x06\xda\x28\ \x21\x26\x16\x81\x26\x01\x1a\x30\x57\x63\x0a\x76\x6c\xbc\xbb\xe0\ \xcb\x7a\xbd\x37\xef\x75\xee\xe7\x9c\xf7\x7d\x0a\x47\x87\x1d\x8d\ \xd8\xc1\x1f\xa8\x54\x45\xf2\x5f\x7a\x75\x34\x1f\x1e\xcd\xf3\x9b\ \xff\xff\x79\xe7\xd1\x8c\xa8\x2a\xbf\xcc\x32\xfc\x52\xeb\x02\xc0\ \x05\x80\x0b\x00\x3e\x99\x66\x66\x66\x98\x9b\x9b\x03\x11\x50\x45\ \x69\x49\x00\x50\x50\x47\x2a\xf1\x00\x41\xbd\x9c\x87\xf1\x7d\x40\ \x50\x1b\x8b\x6d\x58\x9c\xcd\x8a\x04\xf5\x8b\x21\xb9\x35\xfd\xea\ \x85\xdd\x80\x07\x80\x6a\xa2\xea\xea\x44\xcb\x55\xb1\xcd\xba\xd8\ \x46\x24\x6a\x11\x1c\x88\xe0\x54\x50\x04\x14\x10\x30\x02\x22\x42\ \x26\x54\x95\x52\xa9\xc4\xa6\x4d\x9b\x10\x91\x16\xc0\x7d\xf7\xdd\ \xc7\xfd\xf7\xdf\x4f\x6f\x57\xa1\xbf\x2b\x08\x86\x4a\x41\xd0\xe3\ \x89\x8a\x45\x24\x32\x85\xb0\x1e\xac\x31\xb5\xe2\xe6\x7c\xb0\x66\ \xeb\x70\x61\xcd\x96\xcd\xc5\xee\xfe\x8b\xba\x7a\xd6\xf5\x05\x5d\ \xdd\x05\x40\x9a\x8d\x5a\x75\x71\xf6\xcc\xd9\xa5\x53\xaf\x1d\xee\ \x9a\x7b\x63\x2e\xd9\xf4\xb9\x2d\x1b\xb7\x7f\xe1\x86\xe1\x2d\xa5\ \x6d\x03\xbd\x7e\x6f\x21\x27\x9e\xef\x41\x14\xbb\xa4\xda\x88\xab\ \xcb\x8b\xb5\xe5\x85\x85\x85\xd9\xf9\xd9\x89\xb3\xef\xd5\x4d\x44\ \xf3\xe3\xe5\x5c\x65\x42\x2e\x36\x27\x74\x5d\xa1\x69\xf2\x21\xf9\ \xc5\xb2\xb3\x23\x13\xe5\xe7\x4f\x2f\x2d\x3d\xef\x54\x15\x20\x49\ \x12\x6e\xbe\xf9\x66\x1e\x7a\xe8\x21\x82\x20\x68\x01\xd4\xab\x55\ \x6f\x03\x7c\x65\xc7\xba\xdc\xd7\x2e\xea\x77\x17\x7b\x01\xf9\xe3\ \xc1\x4d\xc8\xc6\xcf\x48\xef\xe6\x4b\xcc\xba\x8d\x1b\x65\x68\xc3\ \x1a\x6f\xd3\x40\x57\x30\xd8\x67\xa4\xaf\x00\xa5\x1c\xf8\x86\x54\ \x91\x85\xd9\xca\xb5\xbc\x79\xf2\x56\xad\xcf\x9f\xd5\xe1\xe1\x0d\ \x72\xf5\xd6\xbc\x0c\x14\x21\xe7\x83\x67\x58\x91\x55\x48\x6c\x2f\ \xcd\x04\x2a\xd1\x4e\x16\xaa\xca\xd4\x92\xe5\xf1\x83\x15\x4e\x9e\ \x78\x97\x92\x79\x9d\xbf\xfc\xe4\x7e\xca\xb3\xcb\xdc\xff\xef\xb5\ \xb1\x77\xc6\xcb\xb7\xce\xd5\x6b\x23\x64\x5a\x5c\x5c\x24\xe3\x41\ \x32\x30\xee\xfd\xe6\xb7\x3e\x3b\xf1\xdf\x7b\x9f\xf8\xf2\xad\xa5\ \x81\xc1\xc1\x12\xff\x39\xb1\x8b\xc6\xe5\xbb\xf9\xe3\x1b\xd6\xb0\ \xb6\x08\x5d\x01\x78\x42\x26\xa5\x93\x54\x85\xe9\xf9\x3a\x7d\xdd\ \x21\xf9\x40\xb0\x4e\x51\x4d\x0f\x99\x10\x01\x11\x69\x3b\x00\xa3\ \xf3\xc2\x91\x59\x78\xe0\x47\xc7\xf8\x87\xe1\xbf\x61\x4b\x38\xc5\ \x03\x7b\x27\xe3\x3d\xcf\xcc\x7d\x69\x74\x7e\xee\x09\x32\xdd\x72\ \xcb\x2d\xec\xdb\xb7\x8f\x30\x0c\x5b\x0e\x5c\x54\x2a\x5d\xd7\xb3\ \x4d\x07\xae\xd9\xbe\x9e\xb7\x16\x36\xf1\x7a\xd7\x9f\xf2\xf5\x4f\ \xaf\x61\x4b\xbf\xe2\x9c\xc3\x59\x25\x72\xae\xbd\x99\x56\x2e\x57\ \x1a\xf1\x3c\x8f\x24\xb1\xd4\xeb\x0d\xd4\x1a\xd4\xb9\xce\xb8\xb4\ \xf2\x6d\x8c\xc1\x97\x80\xf5\x25\x8f\x30\xcc\x51\x8d\x3c\x24\x27\ \x74\xe7\xd5\xcf\x79\xde\xc0\x79\x87\xd8\xf7\x58\x93\x0b\x15\x54\ \xa9\xc7\x42\x3e\x17\xd2\x9d\x27\x6d\xc6\x5a\xbb\xd2\x68\x27\x39\ \x4d\x6b\x01\xc1\x3a\x87\xb5\x06\x00\xcd\x2e\x85\xf3\x4a\x15\x23\ \x8a\x11\xf0\x82\x90\x4a\x1c\x20\x02\x5d\x39\x95\x9c\x67\xfa\xcf\ \x0b\xa0\x9a\xda\x8d\x73\x0e\x8f\x04\xd4\xe2\x00\x55\xd0\xd6\x13\ \x14\x74\xa5\xa6\x55\x0b\x8a\x22\x38\xc0\x3a\x68\x5a\x25\xe7\xc0\ \x29\xa0\xed\x4e\x01\x08\x80\x80\x28\x64\x26\xe0\x09\x18\x21\x8d\ \x46\x39\x0e\x00\xa5\x2b\x2f\xac\x0d\xfc\x4b\xb6\xf4\xaf\xfd\xfc\ \xf0\xf6\x2b\x87\xc7\x46\xdf\x7e\x53\x44\xde\x04\xb4\x0d\x00\x68\ \x38\xab\x58\x67\x31\x58\x04\x47\xe2\x20\x3d\xb6\x05\x41\xeb\xd9\ \x06\xa4\x19\x91\x41\x49\x9c\x42\x0c\x91\x03\x75\x2d\xf0\x56\x6c\ \x68\x87\x00\x8c\x90\xd6\x7a\x19\x40\x65\x29\x04\x51\x02\x2f\xe1\ \x4a\xc3\x1f\xde\x34\x38\xf8\x47\x17\x7d\xe1\x96\x42\xed\x0f\xbe\ \x72\xfa\xcd\xb7\x0e\xfe\x89\xaa\xfe\xb4\x1d\x00\x9c\x53\x4d\x33\ \x6b\x48\x52\x90\xa6\x85\xd8\x69\x0a\xd1\xee\xc0\x6a\x2e\x80\x02\ \x06\xb0\x29\xb8\xa3\x60\xc9\x1c\x10\x14\x45\x54\x40\xda\x41\x32\ \x08\x8c\xb4\xe0\x72\xa1\xcf\x72\x92\x27\x49\x1c\x4b\x93\x96\xdb\ \x7f\x7d\x57\xc9\x9b\x5f\xe0\xa7\xff\xf8\x77\xc8\x8d\x5f\xdc\x72\ \xd9\x67\x76\xde\x2e\x22\x1f\x02\x88\x12\x0b\xd6\x3a\x3c\x2c\xce\ \xb9\x14\x20\x71\x10\xa7\x00\x9d\x63\xa4\xe8\x0a\x84\x51\xb0\x4e\ \x53\xf0\xcc\x01\xb2\x12\x24\x2b\x62\x15\x07\x44\xd2\x62\x62\x07\ \x41\xe0\x53\xb5\x79\x8e\xbc\x36\x47\xd1\x6d\x67\xb0\xbb\x97\x57\ \x9f\x7a\x9a\xcb\x8a\x05\xc6\x7e\xf4\x18\x73\x52\x9f\xe0\xcf\xbf\ \x46\x3b\x00\x12\xa3\x8a\xaa\xc3\x68\x82\x5b\x71\x00\x22\x0b\xf0\ \x51\x00\x82\x66\x54\x06\x48\x14\xa2\x24\x8d\x20\xce\xad\x72\xed\ \xba\x95\xc6\x5b\x10\x59\x84\x22\x0b\x7e\xce\xe7\xe8\x48\xc2\x27\ \x26\x7b\xd9\x71\xc9\xe5\x1c\xfa\xc1\xf7\xf1\x82\x00\xd3\x68\x30\ \xd2\x6c\x1e\x68\x96\x97\xf7\xaa\x6a\x3b\x40\xe2\x9c\x4d\xac\x92\ \x3a\x20\x49\xea\x40\x23\x81\x44\x21\x76\xd9\x90\xaa\xac\x64\xbd\ \x05\xd2\x3e\x1f\xa2\xd9\x10\xc7\x8e\xb8\xd3\x0c\xb4\xb9\xa0\x20\ \x82\x00\x81\x40\x53\xa1\xd8\x98\x22\x3a\x3a\xce\x55\xd7\x5d\xcf\ \xe8\x73\xcf\xd1\x58\x5e\xa6\xd4\xd5\xc5\x81\xa9\xa9\x93\x4f\xc1\ \x5f\x5c\x09\xa7\x05\xda\x01\x2a\x51\xd4\xb4\x96\xb4\x71\x51\x97\ \x3a\x10\xb9\x2c\x42\x56\x51\xd5\xb6\x46\x5b\x0e\xb4\xe2\x93\x11\ \xa4\x35\x51\xac\x24\x4e\x70\x4e\x41\x59\x55\x22\xed\x4f\xa3\x50\ \xad\xd4\xe8\xf9\xd9\xbf\xf0\xa5\x2b\xd7\x30\x7b\xec\x18\x33\x23\ \x23\xf4\xae\x5d\xcb\x2f\xc6\xc7\xcb\xfb\xe1\xaf\x27\xe1\xc5\x2b\ \x57\xbd\x46\x51\x75\xea\x70\xd9\x10\xe3\x12\x6a\x31\xc4\x59\x8c\ \x54\x05\xa0\x03\x44\x2b\x5a\x62\x04\x8b\xac\x44\xa8\xdd\x81\x0e\ \x2e\x64\x2f\x7c\xa7\xcc\xee\x7b\x98\x6b\xea\x67\xc9\xa9\xe5\xd8\ \x0b\x07\xe8\x1d\x18\x60\x62\x72\xd2\x3d\x69\xed\x7d\xc7\xe0\xd1\ \x8e\xdb\x28\x2a\x4d\x6b\xc5\xbd\x27\xc3\x07\x0e\x58\xb0\x0a\x91\ \x13\xd0\xcc\x05\x3a\x5d\xa5\x2d\xaa\xd4\xb5\x38\x03\x50\x40\x05\ \xd0\xd6\x30\x93\x49\x5b\x20\xc6\x33\x8c\x3d\xf3\x13\x86\x0e\x3f\ \xcf\xd6\x81\xb5\x1c\x7a\xec\x31\x0a\x7d\x7d\x2c\xcd\xcf\xf3\x56\ \x18\xd4\x46\x44\xf6\xdb\x7a\x3d\xe9\x0c\x00\x4e\x95\x15\x07\x44\ \x13\xea\x09\x59\x84\x00\xed\xfc\xe9\x43\x0b\x4c\x04\x2c\x42\x9c\ \x38\xac\x6b\xcd\x4a\x5b\x91\xb4\x3b\x21\xc6\x70\xee\xed\xa3\x2c\ \xed\xfb\x0f\x3e\x37\xbc\x91\xa3\x8f\x3f\x8e\x88\x90\x34\x9a\x4c\ \x15\x2a\xac\xdf\x36\xe4\x77\x1d\xad\x16\xa9\xd7\xe9\x0c\x20\xc4\ \xd6\xa9\xb3\x99\x03\xea\xdc\x0a\x40\xe2\xda\x72\xde\xae\xd5\xe2\ \x21\x69\x84\xb0\x0a\xe8\x2a\x11\xd2\x16\xac\x88\xa1\x7e\xee\x1c\ \x67\xf7\xfe\x2b\x37\x6c\xde\xc0\xf8\x0b\x2f\x50\x7d\xef\x75\xae\ \xd4\xcd\xf1\xca\x14\xd7\xfc\xfe\x10\x63\x13\x12\x78\x47\xb3\x75\ \xa2\x73\x84\x88\x9d\x13\xd5\x6c\x95\x10\x8d\x88\x2c\x88\xb4\xe7\ \xb6\xf3\x34\x2a\xad\xa6\xc8\x1c\x00\xa1\x1d\xa0\x5d\x82\x8b\x22\ \x4e\x3e\xf2\x5d\x76\x16\x03\x6a\x63\x63\x4c\x1f\x39\x42\x71\x60\ \x80\x91\xc9\x09\xb6\x7d\x79\x90\x4b\xb6\x77\x33\x3e\xb3\xec\xe5\ \x7c\xd3\xf7\xd1\x00\x82\x53\x55\xb5\xd6\x81\x71\xa8\x6a\xea\x80\ \x53\x30\x02\x4a\x9b\x3a\x03\x09\xa4\xf6\x5b\x87\x53\x6d\xb1\x01\ \xba\x8a\x03\xa7\xf7\x7f\x8f\xad\xf3\x13\xf4\x7a\x86\xc3\xcf\x3e\ \x9b\x36\x7f\x7a\x7a\x96\x03\x97\xdf\xc8\x67\x3f\xbd\x84\x30\x4f\ \x3e\x54\x4a\x61\xb0\xe6\x7c\x0e\x34\x9d\x4b\x87\x18\x63\x12\x8c\ \x8b\x68\x26\x80\x08\x46\x04\x45\x61\x95\xcd\xb2\xb5\xc6\xb5\x9a\ \x72\x9e\xe0\xac\x43\x55\x49\x6b\x05\xd0\x16\xb0\x0a\x18\xe3\x31\ \xf5\xca\xcf\x29\x1d\x7a\x9e\x4b\x87\x06\x39\xb2\x77\x2f\x61\x4f\ \x0f\x8b\xf3\xf3\xbc\xf1\xa9\x5d\xbc\xfd\x1b\x7f\x45\xc5\x7e\x13\ \xd0\x14\x20\x30\x72\x1e\x00\xd2\xd8\x93\x02\xa8\x03\x4d\x57\x89\ \x6c\xd1\xd2\x95\x65\x0d\x01\x59\xed\x3e\xd4\x56\x84\x7c\x03\xd6\ \x29\xa4\x00\x06\xa5\x05\xad\xd9\xee\xbf\x7c\x72\x8c\xc6\xfe\xc7\ \xb8\xf1\x13\x9b\x79\x77\xdf\x3e\x9c\xb5\x58\xe7\xf8\x9f\xbe\x21\ \x96\xbf\xfa\xf7\xd8\xe9\x5e\xaa\xb1\x0f\x28\xb9\xc0\xd1\x93\xcb\ \xf7\x0b\x82\xa2\xab\x03\x54\xe2\xa8\x99\xb8\x54\x18\xb5\xf8\x44\ \x69\x84\x14\xf0\x4c\xd6\x9f\x74\x8a\x91\xb6\xef\x37\x46\x70\x1f\ \x00\x18\x50\x97\x31\x42\xea\x48\x73\x69\x91\xe9\x47\xbf\xcb\xae\ \xcd\x83\xcc\xbc\xf4\x12\xe5\x33\x67\xf0\xfb\xfa\x18\xa9\x56\x59\ \xff\x8d\x6f\x73\x62\xeb\x15\x24\x33\xd3\x54\x93\x10\x55\x47\x2e\ \x84\xc0\x68\x3f\xe0\x01\x76\x55\x00\xeb\xd4\x25\xd9\x37\x31\xa9\ \x03\x96\x38\x1b\x62\x4f\xc8\x62\xf0\xd1\xf9\x17\x01\xb2\x38\xe9\ \x07\x00\x59\x6d\xc6\x8f\xda\x84\xf1\xef\x3d\xc0\x55\x79\x81\x53\ \xa7\x99\x3e\x78\x90\xfc\xba\x75\x1c\x9f\x9a\xa6\x77\xf7\x3d\xac\ \xbf\xf9\x37\x79\x61\x0c\xac\x17\x52\x89\xf3\xa8\x2a\x81\xaf\x94\ \x42\xd3\xe7\x1b\x13\xc4\xce\xae\x0e\x00\x24\xaa\xd8\x14\x20\x75\ \x20\xa6\x91\x64\x94\x66\x95\x9b\x44\x40\xda\x71\x20\x1b\x5a\x15\ \x41\x35\xdd\xab\xda\x00\x10\xc3\xa9\x27\x1f\x67\xd3\xf4\x49\x06\ \xbb\xf2\x1c\x7b\xfa\x69\xf2\x03\x03\x8c\x4f\x4f\x93\xfc\xd6\xef\ \x72\xd9\x1d\x7f\x46\xc5\x40\xec\xc0\x9a\x80\xb2\xed\x4a\x73\xed\ \x07\x4a\x21\xa0\xc7\x33\x26\x17\x3b\xdb\xe8\x04\x60\x55\x71\xa9\ \xf5\x6a\x11\x4d\x68\xae\x44\x28\x6d\xa8\xd5\x27\xed\x42\xb5\x8d\ \x43\xb2\xa1\x77\x19\x80\xcb\x86\x76\xfa\xf5\x57\x08\x5e\x79\x96\ \x5f\xdd\x3c\xc4\xe8\xc3\x0f\xe3\x17\x0a\xcc\x2f\x2e\x32\xbb\xfd\ \x6a\x76\xec\xbe\x87\xa0\xd0\x85\x9f\x28\x56\x21\x31\x3e\xe5\xa4\ \x0b\x55\x87\xef\x43\xce\xd7\x6e\x23\x92\x07\x96\x3a\xfd\x32\x67\ \x9d\x13\x67\xb3\x08\x79\xc4\x44\x16\x14\x41\xa4\x3d\x33\x6d\x2f\ \xf5\xc3\x81\xca\x2e\xab\x15\x07\x3c\xcf\x50\x99\x38\xcd\xd2\xbe\ \x47\xb8\xee\xe2\x61\xce\xfc\xf8\xc7\xc4\xb5\x1a\x0d\xe7\x38\xd9\ \xd3\xcf\xe5\xf7\xfc\x2d\xdd\x1b\x36\x22\xce\x11\x18\xc5\xa5\x00\ \x1e\x15\x5b\x4c\x23\xed\x79\xd0\x9d\xa3\x90\xf7\xfd\x22\x40\x27\ \x80\x58\x21\x49\x23\xe4\x2c\x46\x13\xea\x16\x12\xe5\xa3\x25\x00\ \xba\xda\xa2\x96\x02\x78\xc6\x90\x54\xcb\x4c\x3c\xfa\x6f\x5c\xbb\ \x61\x1d\x95\x57\x5f\x65\xf9\x9d\x77\x90\xee\x6e\x46\x6b\x75\x36\ \x7f\xe3\x5b\x5c\xb4\x63\x27\xa2\x16\x11\x08\x04\x10\x4d\x01\x96\ \x53\x00\xc5\x78\x90\xf7\x5d\x51\x90\xe2\x79\xae\x51\xc1\x39\x9b\ \x39\x90\x10\x5b\x58\xed\xf2\x51\x80\x8e\x60\xad\xef\x8e\x38\xb6\ \xe0\x2c\xa7\xbe\xbf\x97\xcb\x25\x21\x3f\x79\x8e\x13\x07\x0e\x10\ \xac\x5b\xc7\xe8\xd4\x24\xfd\x77\xef\xe6\xd2\xdb\x6e\x07\x5c\x2b\ \x7e\x06\x04\x88\xc5\x50\x71\x45\xac\x53\xc4\x28\xc5\x50\x73\xa5\ \x30\xec\x99\xab\x57\x3b\x02\xc4\xaa\x92\x58\xab\xa0\x16\x93\xad\ \x12\x89\x03\x3c\x30\x80\x18\xc1\x08\x69\x73\x88\x64\x30\x82\xb6\ \xa0\x10\x14\xdf\x13\x02\xdf\xa0\x62\x98\x38\xf4\x32\x3d\xef\x1e\ \x63\xb8\xb7\x87\xb1\xfd\xfb\xf1\xd7\xae\xe5\xf4\xf4\x0c\xa3\xbb\ \x7e\x87\xab\xee\xf8\x3a\x67\x6c\x89\xc0\x29\xa1\x40\xce\x28\x7e\ \x1a\x3d\x68\x58\x58\xb6\xdd\x24\x56\x11\x81\x7c\xe0\x42\x23\xf4\ \x7e\xe4\x36\x0a\xa8\xaa\x23\xdb\x87\x68\x3a\x68\xaa\xc1\x7a\x86\ \x72\x0c\x4b\x4d\x61\xae\x01\xe7\xde\x3f\x75\x58\x68\x40\x39\x82\ \x5a\x4c\xfa\x46\x46\xa1\x60\x60\x6d\x0e\x66\x26\x0b\x2c\x8d\xc7\ \x6c\x9a\x3b\xce\xee\xdb\x6e\x63\x7c\xcf\xbd\x88\xef\xb3\x50\x29\ \xf3\x4c\x71\x1b\x3f\xb9\x6c\x37\x0f\xfd\xb0\x89\x49\x96\x08\x34\ \x21\x47\x44\x41\x62\x8a\x12\x31\x5d\x89\xe8\xaf\x59\x0a\xde\x74\ \xea\x40\x50\x1c\x20\x97\xab\xfb\x40\xe7\x08\x35\x93\x24\x6e\xc4\ \x9a\x58\xa7\xa8\x3a\xc4\x36\x29\x4f\x47\xec\x79\x2a\x21\x8e\x13\ \x16\xaa\x09\xd5\x66\x4c\x14\xc5\x38\x1b\xa7\x33\x12\x18\x4b\x28\ \x09\x39\x9a\xe4\x68\x90\xd3\x1a\x35\x57\x61\xa9\x79\x0e\x77\xee\ \x24\x8d\x6a\x95\x0d\x57\x6f\x65\x71\xe3\xa5\x9c\xfa\xed\x3b\x08\ \x7e\xf8\x08\xa7\x8e\xbe\xc8\xb5\x5f\xbd\x9e\xeb\x7e\xe5\x20\x79\ \x79\x91\x9c\x49\x08\x4d\x44\x20\x09\x81\xc4\xe9\x09\xdf\x3f\x46\ \xe9\xf2\x63\xfa\xf2\xbf\x47\x34\x37\x47\x1c\x3f\x97\x28\x34\x3a\ \x02\x44\xd6\x2e\x55\x1b\x66\x36\x36\xf9\x61\x13\x7a\xfc\x5a\xe1\ \x0d\xc2\xca\xb7\x29\x36\x1a\x14\xc3\x98\x52\x18\x53\x2c\x59\xf2\ \xbe\x25\xe7\xc5\xf8\x1a\x61\x92\x26\x34\xab\x24\xb5\x0a\x71\xb5\ \x4e\xb3\x52\xa7\x5e\x69\xba\xca\x72\xb3\x79\x76\xd6\x9e\x99\xcf\ \x6f\xec\xda\xb2\xe1\xfa\x4d\xe3\xe3\x33\x9c\xf2\x72\x1c\x1f\xdc\ \xbc\x68\x16\x07\x2b\x1b\x0f\x3d\x1d\x74\x1d\xf9\x99\x97\x0b\x3c\ \xe3\xf9\x9e\xe7\xa7\xc7\xf7\xfc\xc0\xf7\x82\x20\x90\x30\x0c\xc4\ \x33\x62\xac\x55\xb5\x71\xac\x0b\x53\x93\xc9\x4b\xa7\xcc\xcf\xe7\ \x6a\xb5\xd7\x3b\x02\xd4\x93\x78\x61\x6c\xa6\xb9\xff\xe8\x89\xde\ \x1d\x61\x4f\xce\xec\x1c\x78\x9b\x1d\xee\x28\x71\xa4\xd4\xeb\x96\ \xea\xbc\xa3\x5a\xb6\x5a\xa9\x38\x7b\xb6\xec\x1a\xcb\x15\x2d\x2f\ \x57\x75\x71\xb1\xa6\xb3\x95\x06\x53\x4b\x75\x7b\x76\xb9\xe9\x26\ \xca\x4d\x7b\xb6\x12\xc5\x93\x4d\x64\xf6\xa6\x2f\x5e\xf1\xcf\xdd\ \xdd\x03\x9b\x0e\x1f\x7e\x2b\x7e\xf9\xe5\xe7\xfe\xeb\x8d\x43\x2f\ \x7d\xa7\xba\x38\x77\x8a\xe3\x84\xf9\xf7\x7b\xf5\xbc\x00\x25\x04\ \x0d\x20\x7d\x86\xc5\x20\x08\x43\xcf\x84\x40\x1e\xb0\x0a\xcd\x72\ \x94\x2c\xce\x37\xea\x87\x2b\x51\x34\xdb\x11\xc0\xa1\x1c\x9c\x98\ \xfe\xa7\xf8\x49\xad\x6e\x3b\x18\xde\x58\x08\xa5\xc7\x39\xb5\x8d\ \x48\xab\xe5\x86\x9b\x5d\xaa\xdb\x89\x5a\xe4\x26\xca\x51\x72\xb6\ \x1a\xc5\x53\xf5\xc4\x9e\x6b\x24\xf1\x62\xe4\x5c\xd9\xa1\x4d\xc0\ \xd2\x12\x43\x43\x5b\x3e\xff\xc9\x4f\x6d\xbf\xe6\xb5\xd7\x5e\x3e\ \xf3\xc4\x13\x3f\xf8\xce\xe8\xe8\x91\x07\xa2\xa8\xb9\x44\xa6\xe5\ \x88\x8f\xab\xf6\x9f\xd7\xf7\xec\xd9\xc3\x83\x0f\x3e\x88\xef\xfb\ \x04\xc6\xcf\x79\x46\x42\x40\x9d\x6a\x9c\x38\x1b\x59\x55\x45\xdb\ \x57\x67\x44\x10\x3e\x2c\x55\x65\xfd\xfa\xa1\x2b\xb6\x6f\xbf\xe6\ \xee\x91\x91\x23\x7b\xcf\x9c\x39\x71\x00\x14\x10\x3e\xae\xac\xb5\ \xec\xda\xb5\x8b\x7b\xef\xbd\xb7\xfd\x0f\x8e\xbb\xee\xba\x8b\x3b\ \xef\xbc\x93\x4c\x4d\x85\x26\x1f\xef\x2d\x7f\x21\x62\xee\x76\xce\ \xaa\x88\xf0\x7f\x29\xdf\xf7\xd3\x03\x70\xe1\x9f\xfa\xff\x5f\x5d\ \x00\xb8\x00\x70\x01\xe0\x7f\x01\x6e\xa9\x93\x7a\xf5\x39\xfe\x18\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x16\ \x07\xbc\x11\xc7\ \x00\x6d\ \x00\x65\x00\x74\x00\x61\x00\x63\x00\x6f\x00\x6e\x00\x74\x00\x61\x00\x63\x00\x74\x00\x5f\x00\x6f\x00\x6e\x00\x6c\x00\x69\x00\x6e\ \x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x0e\x40\x40\xc7\ \x00\x6d\ \x00\x69\x00\x6e\x00\x69\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x14\ \x0a\x34\xf1\x07\ \x00\x62\ \x00\x6c\x00\x75\x00\x65\x00\x5f\x00\x61\x00\x6e\x00\x67\x00\x6c\x00\x65\x00\x5f\x00\x73\x00\x77\x00\x69\x00\x72\x00\x6c\x00\x2e\ \x00\x6a\x00\x70\x00\x67\ \x00\x13\ \x01\x35\x7a\xc7\ \x00\x6b\ \x00\x6f\x00\x70\x00\x65\x00\x74\x00\x65\x00\x61\x00\x76\x00\x61\x00\x69\x00\x6c\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x2e\x00\x70\ \x00\x6e\x00\x67\ \x00\x11\ \x04\x5b\x0b\x07\ \x00\x6b\ \x00\x6f\x00\x6e\x00\x74\x00\x61\x00\x63\x00\x74\x00\x5f\x00\x6e\x00\x6f\x00\x74\x00\x65\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ \ \x00\x10\ \x03\x16\x82\x47\ \x00\x6b\ \x00\x6f\x00\x6e\x00\x74\x00\x61\x00\x63\x00\x74\x00\x5f\x00\x6d\x00\x61\x00\x69\x00\x6c\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x14\ \x08\x13\x30\x07\ \x00\x6b\ \x00\x6f\x00\x6e\x00\x74\x00\x61\x00\x63\x00\x74\x00\x5f\x00\x63\x00\x6f\x00\x6e\x00\x74\x00\x61\x00\x63\x00\x74\x00\x73\x00\x2e\ \x00\x70\x00\x6e\x00\x67\ \x00\x10\ \x05\xe9\x01\x67\ \x00\x61\ \x00\x72\x00\x74\x00\x73\x00\x66\x00\x66\x00\x74\x00\x73\x00\x63\x00\x6f\x00\x70\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x13\ \x09\x2b\x13\x47\ \x00\x6b\ \x00\x6f\x00\x6e\x00\x74\x00\x61\x00\x63\x00\x74\x00\x5f\x00\x6a\x00\x6f\x00\x75\x00\x72\x00\x6e\x00\x61\x00\x6c\x00\x2e\x00\x70\ \x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x0a\x00\x00\x00\x02\ \x00\x00\x00\x92\x00\x00\x00\x00\x00\x01\x00\x00\x6e\x8c\ \x00\x00\x00\xe6\x00\x00\x00\x00\x00\x01\x00\x00\x87\x15\ \x00\x00\x00\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x77\xdc\ \x00\x00\x01\x3a\x00\x00\x00\x00\x00\x01\x00\x00\xa4\xbd\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x01\x0c\x00\x00\x00\x00\x00\x01\x00\x00\x93\x9b\ \x00\x00\x01\x60\x00\x00\x00\x00\x00\x01\x00\x00\xa9\xcf\ \x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x40\x56\ \x00\x00\x00\x64\x00\x00\x00\x00\x00\x01\x00\x00\x12\x20\ \x00\x00\x00\x44\x00\x00\x00\x00\x00\x01\x00\x00\x09\xf5\ " 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() PyQt5_gpl-5.10.1/examples/graphicsview/padnavigator/ui_form.py0000644000076500000240000001371413245231431024507 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'form.ui' # # Created: Sun May 5 07:55:08 2013 # by: PyQt5 UI code generator 5.0-snapshot-74eb89bd4fb2 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(378, 385) self.verticalLayout_2 = QtWidgets.QVBoxLayout(Form) self.verticalLayout_2.setObjectName("verticalLayout_2") self.groupBox = QtWidgets.QGroupBox(Form) self.groupBox.setFlat(True) self.groupBox.setCheckable(True) self.groupBox.setObjectName("groupBox") self.gridLayout = QtWidgets.QGridLayout(self.groupBox) self.gridLayout.setObjectName("gridLayout") self.label = QtWidgets.QLabel(self.groupBox) self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 0, 0, 1, 1) self.hostName = QtWidgets.QLineEdit(self.groupBox) self.hostName.setObjectName("hostName") self.gridLayout.addWidget(self.hostName, 0, 1, 1, 1) self.label_2 = QtWidgets.QLabel(self.groupBox) self.label_2.setObjectName("label_2") self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) self.label_3 = QtWidgets.QLabel(self.groupBox) self.label_3.setObjectName("label_3") self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.horizontalSlider = QtWidgets.QSlider(self.groupBox) self.horizontalSlider.setProperty("value", 42) self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) self.horizontalSlider.setObjectName("horizontalSlider") self.horizontalLayout.addWidget(self.horizontalSlider) self.spinBox = QtWidgets.QSpinBox(self.groupBox) self.spinBox.setProperty("value", 42) self.spinBox.setObjectName("spinBox") self.horizontalLayout.addWidget(self.spinBox) self.gridLayout.addLayout(self.horizontalLayout, 2, 1, 1, 1) self.dateTimeEdit = QtWidgets.QDateTimeEdit(self.groupBox) self.dateTimeEdit.setObjectName("dateTimeEdit") self.gridLayout.addWidget(self.dateTimeEdit, 1, 1, 1, 1) self.verticalLayout_2.addWidget(self.groupBox) self.groupBox_2 = QtWidgets.QGroupBox(Form) self.groupBox_2.setFlat(True) self.groupBox_2.setCheckable(True) self.groupBox_2.setObjectName("groupBox_2") self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.groupBox_2) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.treeWidget = QtWidgets.QTreeWidget(self.groupBox_2) self.treeWidget.setObjectName("treeWidget") item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget) item_1 = QtWidgets.QTreeWidgetItem(item_0) item_2 = QtWidgets.QTreeWidgetItem(item_1) item_2 = QtWidgets.QTreeWidgetItem(item_1) item_2 = QtWidgets.QTreeWidgetItem(item_1) item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget) item_1 = QtWidgets.QTreeWidgetItem(item_0) item_2 = QtWidgets.QTreeWidgetItem(item_1) item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget) item_1 = QtWidgets.QTreeWidgetItem(item_0) item_2 = QtWidgets.QTreeWidgetItem(item_1) self.horizontalLayout_2.addWidget(self.treeWidget) self.verticalLayout_2.addWidget(self.groupBox_2) self.retranslateUi(Form) self.horizontalSlider.valueChanged['int'].connect(self.spinBox.setValue) self.spinBox.valueChanged['int'].connect(self.horizontalSlider.setValue) QtCore.QMetaObject.connectSlotsByName(Form) Form.setTabOrder(self.groupBox, self.hostName) Form.setTabOrder(self.hostName, self.dateTimeEdit) Form.setTabOrder(self.dateTimeEdit, self.horizontalSlider) Form.setTabOrder(self.horizontalSlider, self.spinBox) Form.setTabOrder(self.spinBox, self.groupBox_2) Form.setTabOrder(self.groupBox_2, self.treeWidget) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "BackSide")) self.groupBox.setTitle(_translate("Form", "Settings")) self.label.setText(_translate("Form", "Title:")) self.hostName.setText(_translate("Form", "Pad Navigator Example")) self.label_2.setText(_translate("Form", "Modified:")) self.label_3.setText(_translate("Form", "Extent")) self.groupBox_2.setTitle(_translate("Form", "Other input")) self.treeWidget.headerItem().setText(0, _translate("Form", "Widgets On Graphics View")) __sortingEnabled = self.treeWidget.isSortingEnabled() self.treeWidget.setSortingEnabled(False) self.treeWidget.topLevelItem(0).setText(0, _translate("Form", "QGraphicsProxyWidget")) self.treeWidget.topLevelItem(0).child(0).setText(0, _translate("Form", "QGraphicsWidget")) self.treeWidget.topLevelItem(0).child(0).child(0).setText(0, _translate("Form", "QObject")) self.treeWidget.topLevelItem(0).child(0).child(1).setText(0, _translate("Form", "QGraphicsItem")) self.treeWidget.topLevelItem(0).child(0).child(2).setText(0, _translate("Form", "QGraphicsLayoutItem")) self.treeWidget.topLevelItem(1).setText(0, _translate("Form", "QGraphicsGridLayout")) self.treeWidget.topLevelItem(1).child(0).setText(0, _translate("Form", "QGraphicsLayout")) self.treeWidget.topLevelItem(1).child(0).child(0).setText(0, _translate("Form", "QGraphicsLayoutItem")) self.treeWidget.topLevelItem(2).setText(0, _translate("Form", "QGraphicsLinearLayout")) self.treeWidget.topLevelItem(2).child(0).setText(0, _translate("Form", "QGraphicsLayout")) self.treeWidget.topLevelItem(2).child(0).child(0).setText(0, _translate("Form", "QGraphicsLayoutItem")) self.treeWidget.setSortingEnabled(__sortingEnabled) PyQt5_gpl-5.10.1/examples/graphicsview/README0000644000076500000240000000137113245231431020672 0ustar philstaff00000000000000PyQt is provided with a comprehensive canvas through the GraphicsView classes. These examples demonstrate the fundamental aspects of canvas programming with PyQt. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/ipc/0000755000076500000240000000000013245231431016070 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/ipc/localfortuneclient.py0000755000076500000240000001301413245231431022340 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDataStream, QTimer from PyQt5.QtWidgets import (QApplication, QDialog, QDialogButtonBox, QGridLayout, QLabel, QLineEdit, QMessageBox, QPushButton) from PyQt5.QtNetwork import QLocalSocket class Client(QDialog): def __init__(self, parent=None): super(Client, self).__init__(parent) self.blockSize = 0 self.currentFortune = None hostLabel = QLabel("&Server name:") self.hostLineEdit = QLineEdit("fortune") hostLabel.setBuddy(self.hostLineEdit) self.statusLabel = QLabel( "This examples requires that you run the Fortune Server " "example as well.") self.statusLabel.setWordWrap(True) self.getFortuneButton = QPushButton("Get Fortune") self.getFortuneButton.setDefault(True) quitButton = QPushButton("Quit") buttonBox = QDialogButtonBox() buttonBox.addButton(self.getFortuneButton, QDialogButtonBox.ActionRole) buttonBox.addButton(quitButton, QDialogButtonBox.RejectRole) self.socket = QLocalSocket() self.hostLineEdit.textChanged.connect(self.enableGetFortuneButton) self.getFortuneButton.clicked.connect(self.requestNewFortune) quitButton.clicked.connect(self.close) self.socket.readyRead.connect(self.readFortune) self.socket.error.connect(self.displayError) mainLayout = QGridLayout() mainLayout.addWidget(hostLabel, 0, 0) mainLayout.addWidget(self.hostLineEdit, 0, 1) mainLayout.addWidget(self.statusLabel, 2, 0, 1, 2) mainLayout.addWidget(buttonBox, 3, 0, 1, 2) self.setLayout(mainLayout) self.setWindowTitle("Fortune Client") self.hostLineEdit.setFocus() def requestNewFortune(self): self.getFortuneButton.setEnabled(False) self.blockSize = 0 self.socket.abort() self.socket.connectToServer(self.hostLineEdit.text()) def readFortune(self): ins = QDataStream(self.socket) ins.setVersion(QDataStream.Qt_4_0) if self.blockSize == 0: if self.socket.bytesAvailable() < 2: return self.blockSize = ins.readUInt16() if ins.atEnd(): return nextFortune = ins.readQString() if nextFortune == self.currentFortune: QTimer.singleShot(0, self.requestNewFortune) return self.currentFortune = nextFortune self.statusLabel.setText(self.currentFortune) self.getFortuneButton.setEnabled(True) def displayError(self, socketError): errors = { QLocalSocket.ServerNotFoundError: "The host was not found. Please check the host name and port " "settings.", QLocalSocket.ConnectionRefusedError: "The connection was refused by the peer. Make sure the " "fortune server is running, and check that the host name and " "port settings are correct.", QLocalSocket.PeerClosedError: None, } msg = errors.get(socketError, "The following error occurred: %s." % self.socket.errorString()) if msg is not None: QMessageBox.information(self, "Fortune Client", msg) self.getFortuneButton.setEnabled(True) def enableGetFortuneButton(self): self.getFortuneButton.setEnabled(self.hostLineEdit.text() != "") if __name__ == '__main__': import sys app = QApplication(sys.argv) client = Client() client.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/ipc/localfortuneserver.py0000755000076500000240000001062713245231431022377 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# import random from PyQt5.QtCore import QByteArray, QDataStream, QIODevice from PyQt5.QtWidgets import (QApplication, QDialog, QLabel, QHBoxLayout, QMessageBox, QPushButton, QVBoxLayout) from PyQt5.QtNetwork import QLocalServer class Server(QDialog): def __init__(self, parent=None): super(Server, self).__init__(parent) statusLabel = QLabel() statusLabel.setWordWrap(True) quitButton = QPushButton("Quit") quitButton.setAutoDefault(False) self.fortunes = ( "You've been leading a dog's life. Stay off the furniture.", "You've got to think about tomorrow.", "You will be surprised by a loud noise.", "You will feel hungry again in another hour.", "You might have mail.", "You cannot kill time without injuring eternity.", "Computers are not intelligent. They only think they are.", ) self.server = QLocalServer() if not self.server.listen('fortune'): QMessageBox.critical(self, "Fortune Server", "Unable to start the server: %s." % self.server.errorString()) self.close() return statusLabel.setText("The server is running.\nRun the Fortune Client " "example now.") quitButton.clicked.connect(self.close) self.server.newConnection.connect(self.sendFortune) buttonLayout = QHBoxLayout() buttonLayout.addStretch(1) buttonLayout.addWidget(quitButton) buttonLayout.addStretch(1) mainLayout = QVBoxLayout() mainLayout.addWidget(statusLabel) mainLayout.addLayout(buttonLayout) self.setLayout(mainLayout) self.setWindowTitle("Fortune Server") def sendFortune(self): block = QByteArray() out = QDataStream(block, QIODevice.WriteOnly) out.setVersion(QDataStream.Qt_4_0) out.writeUInt16(0) out.writeQString(random.choice(self.fortunes)) out.device().seek(0) out.writeUInt16(block.size() - 2) clientConnection = self.server.nextPendingConnection() clientConnection.disconnected.connect(clientConnection.deleteLater) clientConnection.write(block) clientConnection.flush() clientConnection.disconnectFromServer() if __name__ == '__main__': import sys app = QApplication(sys.argv) server = Server() server.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/ipc/README0000644000076500000240000000120413245231431016745 0ustar philstaff00000000000000These examples demonstrate IPC support in PyQt. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/ipc/sharedmemory/0000755000076500000240000000000013245231431020567 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/ipc/sharedmemory/dialog.py0000644000076500000240000000353013245231431022401 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'dialog.ui' # # Created: Sun May 12 11:56:49 2013 # by: PyQt5 UI code generator 5.0-snapshot-b0831183bf83 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(451, 322) self.gridlayout = QtWidgets.QGridLayout(Dialog) self.gridlayout.setObjectName("gridlayout") self.loadFromFileButton = QtWidgets.QPushButton(Dialog) self.loadFromFileButton.setObjectName("loadFromFileButton") self.gridlayout.addWidget(self.loadFromFileButton, 0, 0, 1, 1) self.label = QtWidgets.QLabel(Dialog) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setWordWrap(True) self.label.setObjectName("label") self.gridlayout.addWidget(self.label, 1, 0, 1, 1) self.loadFromSharedMemoryButton = QtWidgets.QPushButton(Dialog) self.loadFromSharedMemoryButton.setObjectName("loadFromSharedMemoryButton") self.gridlayout.addWidget(self.loadFromSharedMemoryButton, 2, 0, 1, 1) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.loadFromFileButton.setText(_translate("Dialog", "Load Image From File...")) self.label.setText(_translate("Dialog", "Launch two of these dialogs. In the first, press the top button and load an image from a file. In the second, press the bottom button and display the loaded image from shared memory.")) self.loadFromSharedMemoryButton.setText(_translate("Dialog", "Display Image From Shared Memory")) PyQt5_gpl-5.10.1/examples/ipc/sharedmemory/dialog.ui0000644000076500000240000000246213245231431022371 0ustar philstaff00000000000000 Dialog 0 0 451 322 Dialog Load Image From File... Launch two of these dialogs. In the first, press the top button and load an image from a file. In the second, press the bottom button and display the loaded image from shared memory. Qt::AlignCenter true Display Image From Shared Memory PyQt5_gpl-5.10.1/examples/ipc/sharedmemory/image.png0000644000076500000240000002372713245231431022372 0ustar philstaff00000000000000‰PNG  IHDR–ljÜÊsRGB®Îé pHYs  šœtIMEØ  ) ï,ip IDATxÚí]{|TŽÿÍÌÙÝìf „„‡<•½D0Iˆ"•ŠXªÐÚ¢r½µ-hµ­ÕöÚñU[‹Šµ€”«(/Ab I ”Ò"¢á¥"äA’M6Ù=gæwÿ˜sfgw“°D^‡ý„ÝsæÌ9g¾ó{ÿæwç!€ˆò‹ú®ö¨Ÿòh|3}¿ü©Úè›jß@¿ºÞXßs?ñ÷Ó)¥pNo†|r}ô¿ÍþŒLßy 7Õ­þ%*µ'~?œ›q2ã+„BÈ/ ΖÈ"ž°TãÖ)LA)¥”~³ä\€PžbhKýTpÎ !†aè˜ÅóÉâ©D§³–àBpÎuõ1=7+.Pa,ýqÎ Ã8p`ÿ~tgCCc @@€DþD5†²qZ?LÊ?²B8çÉÉÉ ÿö\Ïž½,Ë’:˜dBp´UQø}ùÅW ËþOßÑÛs.«o4 ‘¤ä¨e£ê€&ÛùKÁ«Q³ÝÔïu½XôÉ®`Æ?¶lèÚ­›B1^Ÿ·ê B4«¤4˯!–e†ñåŸ_1dİô†×gç !4.ªèΦB<‡íË8ðF.àP! A JéÔ'ÞÛR™¼£lc×nɈáÉ­ˆÞsždÛF…–e¹\®/>?tÅY—üḏ@£…H”hI:Ô¨PA(©KMD$¾În º}ehÒ!Åû½?o®ðî(ÛØí¢î¦iÆËà–¨PW¹[™£Çå=_Ÿ°7Òâ»jmŽ— ÕN9ý??tðŠ¡#Ft ½ò_cŽ€R)»$ñØb¬µÞÆ Õ}EnQ¿{{¨ä4º €)Þïÿµxc…gG鯋º÷Ði±õ'Œ1KÎ=’ ¿C2<;=üÊ9Õ5È EŠAA8À)p‰ú+p§ À pÀ"öÇÞCý )rR]ÓøÊ9ÙéáC†:xÐ0 ˲⟶•Gˆ1%uƒ2æg¼¹Ù’éÓCüÑxó:æ¬øÆÍvsŸQía¤’:p`àÐá£3¬—fŽ©€ÊYI@’ ’gJ7i† å!‡ #ê*‚$c›Fö#J‘¤¥øn[PüþQãÃÒMÝ{öTµ%_ÏùÀH[£B¿ƒû÷’5&ƒ¿tû誚 à@‚ä€$é ´ì=‚Û_ìˆ|=d  °ìÞƒ°@pÂB"ˆàPU|éöÑc2ø€!Y÷ïw¹\ŠÏÛ—º\®û÷ š•›!Í]%ù§pø''`9lÓ’Lì=œÄ²Sî´áÔÙ+?‚‚%¹(ØŒ×"DP´€ ŠœTÕ4.š1:7C šu`ÿ>…ây뻡ǥ¿ýûö ’56Þ6¦ª¦9ÅOhEÄ!‰`À£ARðpr}TPf» \G‘VÕ4.¼mÌØ 8$kÿ¾ã ¨4t¶–Üîñ¾ýgL'1môkÅ\E¿øëÆ7n¶«–&hó©üiš¦ËåÚW^~ÅЬq™ìoÓFUÖáËŽqLïÛHä^«@j³Žþ)mG^Fùv"þ6DL÷û~ôêúµGøŽÒÍ÷î-o8^´œwÞ–—6hhÖuÆ‚[FUÖ‰Ò_b…‰h&Ži@b@°Ñq´pLyŠmÛK+Ò9¢™‘Òñ& Ýï›ùÚú5G­í¥›{÷îÓ¬½ØR€åœµ ý•öéC³&dºŸŸ2²2ÐDá«ý)£•‹Ô¶ !š„¢ M08† ØTJ#ÕH\]KöbÓ"BzŠ÷Žÿ-Y}$¼£tsï>—ÄÐâù`ÚÆðÏÏ>Ý;hXÖõIÏ}wdE HˆÃ?AÔºÓÝÛŠˆ´ÛÒ¨N±Ø÷›b±„yÇó­Ó°rÞDDì”â»óÍ’UG›¶oÙÜç’KuãCm…PßÉ9?…º\.uú©Pá·÷“O]3ü†Œ¤ùßÉ®¨ qOÕ¼¯†:š}E“Ql¸ˆ"¹ÂCÚ%@rTDDÀN~߬·7¬8Ú´ýƒM—^v™Ž¢üK)UOª;¾e02æ§Ú©â _S YŸ"²ýÒS»¥˜Ma¤œsÆØ§{?œ•=¥KòüI£* ’þ D”Ž´˜ÇÁhÑ0Òh…Äž’òDÉ>m¢Ô]§6TŽˆEÇú  !”P‡“g-_ÿ¿‡¶mÞpÉ¥—ÉÇ9Y(™0¥Tv‡|ðÁŠŠ ]èĨ?9™¸Ý ¦Iñ0æ¢.édžžþÈ#¸\.§¶6P¡ŒÜ !c;?ü0ktÎ@7Ÿ›3¸*ØDœ“].ƒ1w(ì„æA òéjh$¾Žwoã Õ#¥ì(FŠN¸ÑaÜÚ~q¨zÜ”ó°iZ-BG_ÒýEÛ> ³Íï}{à@}tNx“ÓŸsž}ôèÑ©S§644¨à³>Мs¿ßÿ抡ÿû†>}¸Û>ÿü“ÔÔ™?üaCCƒFá÷ûßxãnݺ­_¿Þ0 9ø'¬<ÉßcÕÕÕ7Þxcyyy—ô޵Á&Blü ƒUTT‡{tK²¸€Ø@ £I*¹¨d!@D©X ¢*¢"‰*¦H¢©ÖîOßa?§ÁèÁ/šRRºtê”fYÜ!hçK:\YÕ»wï·Þz+--MNÐ`¤’nä$øÕÕÕmݺÕçóµîÌúùƒÖ¿úêó&XBÌ/+[ۭۻ˗‡Ãa‰ºÜ 訨9rdÇŽ7lØÀS(ªgâŒÔP\8Ùï_·nÇãˆ| £»yfÑÊe?XûV¿#GCŒÅ*wÀ¸Ð¼ÃIÀ9*ùPTt´H>`„ÍbZyEÎ!3Ã3îÆ'ÿá¿ïž!ãÀ„"A@JH(¹Ö¢ZJšR™% ¿ÒÒR9Ñ1ÃMÓÌÈÈÔÖ6„B‡Kˆš¦¦`CCC PQU¥’ôêóùŠ‹‹G=räÈ’’Å®›åö­HbBHä Ý.—ÛíFDªyÌ£2&q> N %Ô`Ì`ŒQj0Ê Cþ4cŒ2j$‚@ŠPDŠHP䵻倂AP ENPºudÙÕ=Ø~˜Ç¤„€Çãñ¸Ý'¬b(ü1;;»¶¶¶¬¬Ì0Œ¦¦&—ËÅcŒΦÿt6I””2B!Ìi#›1ÆÜnwSS¥´¨¨H’£¤{uÑSŸþ$› @”ñp¢ëܲ¸ê³#Áóz™a€*¬¯+¯D‹BÆúQ$³€B»±8·Ù §?)ýEž;bĈÚÚÚ­[·2ÆB¡äx-¹â1Æ‘Š'ÅŒ3¥´©©ÉívæääŒ5jýúõ’a¶U.&œþ„H‰#æ1RUͯ›Rnq¯ÛM…°ïÖIŒ‘ ƒ>˜ÿxç¯ïPSË)•§ëÚ±i)êù©Ã™I´F«ßL÷fÝ¡1Yr§dhœó#FÔÔÔlݺ•ÒØØÈ³,+Þ骾pÎ9ç  rDî€jïoÎó =OAAAnnnvvvII cÌ4͘ŒK•?ñ8©ÀÎ_@{îÛª‹ @Â! !uÝ{[:uJ3MËqŠF)iééiùùß©¨ø€ÑNBp¹-1³‡œò8Ö…&CÁ¹çÜ–"®ÍþÔsS[B[Öµùù€øñÇ€°,Ÿ×‹ˆBÒY4 *HLÓd.—ËãqQÚÎí¶„ð1æ6Œä””P(Äd\ÓiÌ¥ÀGäœ'ùý¥[¶Œ;vܵ׮{÷]iò·¢ǘ4‰R! HÚ$F€¤ €R’™™Þ1­½Þ»¡a^¯Ó‰Í]a™AI”ßÎq´ÙTL A!€sDAì‚@°m–¶.$Õ××´{·î2@D¹ÿ¿ØºmÛêÕ«K¶lijl”£ˆJCœs!b4ù·¬Žiijjl,­¯ïáó¥¸Ý\óÚè<žòe0„üº¬Œ Á(M ~:qbL¢Gü¸®®Wr²‹Rû®„pÆ€öí¿øàƒæäÉ[@F©Å9íÙscqqfffLŸ‘ ¢ÒHí”B[?Œa¹òc4cš6 ¹€íØšUÇîœ}¨gç$ÓŠ$&¢ PA@JIØÈÄ{o\’žf„¹óTBªµñ^ô„2˜+޽jĈ<Ó|䦛‚á0Ñ|}6”r˲ !g¦¸(Í]½záèÑYÝ»‡C! ¶ö+¤ÜF #&ùýwÀ3yyM .)ùÑ6´ä ” …®|ã—ss{øý!Ω¶<Á`L ê.9=}n÷¯×¯¿jĈí›6uÊÈÐQ4Ú‹"‘tˆÎÏ„•!¢N ˆÈ(­©·®êÙéí_dUBޤ&zª¢Ë •µ¡›þº!lɳ„ãˆø¥ãñ4|øXÓœ—›{4B)è¬8'Ê«¾H'ZV˜sªTnÇõg"z,‹KnÄyXùÄñîð2 sŽ&çaÎÄr³L3&«HžUÛØøXnî}……ƒ†—(*ŽÚ”¨TgHª¯~®ÓA.F;&»GFõ±„–‰T?#½µI#•üê‹/¾ž““gšórr¾ª«£<} ÛÕ)Š!·Álpn쫺ºy99XTtuvö¦¢¢.]ºH9E[Ê¿“*,Ñ‚~J€‹hÍX¥»k£´D¢)Óì„@ Ó¦úá0C(¿[¦Ðµ>„èKÇ]Nmúý+]îö»îXUõ䨱_ŒRzʃªÃÄz&má"”Ò¯'ÇŽXUuû]w)—abê ˆ(YÈ Š¨ š¾D-j®!D¼*) DAmQ*€eØ& y4QªÌ!ˆcy&¤ÎÈïúú‰½{Ãáˆ×$Í®½†€é8vWoœ®·«I¯Û9:¢ê\G猠GnC „R†Ãy½{¿Z_¯Ü–‰Ú…€@!#Bi#•§ËŸò;BÄo§0DDB¥{T9ÒìöÂöÝTîOÀ.ÔÝ(Œ±†p˜è±'íK¬DŒ¡-5/ODXÆ1G%<õI€úwµ'Æ£¦Ýj{@ !f©© ¨Mì[ÞP-b98v¡N¾¶¥!ÿiüOc‹DúBíx!òla'Îä$Ê“âÈ£Äe‰.P'”˜˜»cÒ¨Eê|X#$C…ÎøêäEߺ–î#q±L@$Ò¼Ö–Ä£ˆÚÄ5—©Âö2;ÓP„`ŒÉ ÞÒB\F ¢ÆxcD ˆ`!ptžF?!·Ãòá$Á iT´UTµœp °äB €á¨…\†sªÔÅäº"y[‘AµÀk³“’œ˜›;â#•š½Æ\55ñ××›äB؉r²y<® J'^“"8F›Êã NiD:žéÄýËöÄñŽ*wû »¹µ‰ $€vÛ0MS ”z £¾©)hYc§*áXÝ•%D’a¤zÃ`„$»ÝÚ¾ý©ý+{„ûoº©W¯^UUUëÞ{ï' ݳç¯99.B,}-!€(’ C7ÞÚl¢ŠÊgGµµQèÙܦîAF?Qh½ É–I¬F ˆv¤ ‘HñI¢¯ý“ž€ioZÖÇUU©nwuCƒ4…@c“W¬p °÷õ×»vë&Ï9lØô[ny¯°ðÆiÓÌüƒ2öqMͰ=¬pØMi”âãØÈʉ‘OrÈL!R““×}òIÀ²þ²cǪ@àí5kòrsUÛ'Lxè¾û®Ÿ:uÊêÕËo¸[–ê– ZB¤ºÝWU™~$A« ª€PJ€  J)PBœ0Beôœ*w2 ª½Ö ±Ku&òà,Ù#ñŽÿ$f+6+„xzÞ¼—««ŸÝ¾½kjª)×—ÄvIIs·l©ëÑヂ‚®Ýº…Ãaä3M3 å忬\ùôîÝ—¦¤ÜQRRðÙgí|>S:ÇmËo‰ÿ®êå˜B¤ú|ï•—O^·îªôô%û÷¿»re^nn8¶,K^1wíÖ탂‚º=ݲ¥ƒ×+¤g’Sˆ®©©ÏnßþruõÓóæ©¿öÂö¢Ñ–æ–Ñý3BÆÐà„ÕPDšA伨¨'Æ­^³ô•l"6Rª»yâ㨑ÃÑ÷/݉W\\\üО=ÿ裮))&çR< .Ù·oÑüù¯7»\.YéF&I„B¡aC†|æLÞÐðÛ!CòW¯.Ø·/Õç Y‚;^;Ìk« Q;¹!ÎS}¾‚}ûÆ®^ý?C‡’`ð¶™3‡ …d2‡¼¢Ëå ‡Ã¯wñüù‹ËËŒK“ó®))ÿ裇öì)..¾zð`™‘¸›È¥¼g´Å ÄÖSPGïPu´˜BD±©MR#¤sJ^Q5SêH¢D½‘”RÓ4¯4hÓúõÃG€; ª ‡;z½Kwíjß½ûˆ¬,!„Z•¡ˆXæ þt֬܅ ß¼üò$Ʀ.7nTïÞ`YÃü~¿ÇFJJB€Òˆf`ëË˧>9|øýû?±cGá¬Yñ—“ùmBˆYYi=züó«¯n¹üòªÆÆT·û¹íÛ³gϦõë¯4Hå:·ÍÍD¢'= ˜ @Tf¯ÝLÅU)„„rÆpÐ4Òh\dÆ‚ˆ‡0ÑÄ‹˜Ñ1MóÊAƒ6¼ÿ~^NÎʽ{)!I.מcÇ®¹é&•FŸƒKéš™ Ïè%K2¼ÞÚ¦¦Ño¿}]§NB¹j€Ë0ÊŽ€=_~iZUš%dMEïÙóú‡‚ÇÓ533Þà±mSÎcï¹æwo¼ñúž=M¦)þ‰¸áý÷uüì–ˆQ!ÓA#76A[hñtbÚ*ÏÉŽÿ9N&å^‘ÓSQ¡²ùìI6b„‹G›Õ¸Œ eáÈEúƒ¯¼²¬¬¬pÓ&©o(.®þê«x—Nܲ ¯÷¦_ýÊíõ~×å"µ¦¿¦âÀ ¶öXiv7»\PkšáÆÆÇÿ{nY-™ŒòÜcGž2edNŽ|„¿ Þ·o_¹èL÷B'VÀKz˜ôpO4‹Õ£N@ÆõâR—"¦úA% Õ ‘tRéLŠUÅÅ­0q7·N‹œó¾}ûöíÛWî¼fàÀük¯jöE“ LhÛµk—Çåšs÷ݧÄ;ó—yóvíÚ•‘‘¡DZÌÈ !>Ú¹sÝ»ï^1hPL"Ë åΖI,‹ Yׄ‘dTt”i'—W­ƒ‚ˆÑO€ 0M"Dn n TÌÀ^V ˆ@¸%Á²ˆüÈž¸Ë$"±¨}|›Ì“5%üýú÷gŒ½òÊ+Ó§O—ú…ÂO–óx<>úhNn®T Ã8á•M¦iºÝîœÜܹsçæåå…B¡˜"¦iz<žÅ‹3Æúõï‡eW1.L…w‚²$yŒíܦ%…ÈXƒ^åÔjApò°£jWhæÒÚ¹’}.·i^”E¢7‘´m£¦E].Ö>ÕÝ¡;dÚ èÐÎä1Á°¥¥I„9ý9çn·{Þ¼y·Ýv[VVÖ%—\"U|‰ŸagÉ’%EEEååå”R·Û}ÂK5ÏðÁ/»ì²W_}uÚ´iBÓ4Õ„ðx<œ1cÆK/½”””$sÕ[é0! ƒì;h.YQ^S¢-ˆˆ pE¢)Ž4kaqš@Hõ±m×’WJÿY¶¨6ÈÊ7Ï(© Yu ¡U…‡:ø™Åí „ö)î}Mà ‰]³¹î2õÖ²¬[o½uçÎ xûí·ÇŽ«ó®¹sç>ðÀ¯½öÚÅ_³©­T(Ù¦eY_|ñÒ¥K'Ož|èС{ï½WO<,((¸ùæ›çÌ™së­·:k N¢ú“T ß{ïüÊëKUijQé³Ê³MoxTõ'½0[ÔóŒ4Y<*ÜcÓ`¤T’ÁšB¨…²ó¬ƒuþñ÷¹yyrX[¯þÔú²™ÏiƼyó{챞={:ÔçóUWW¯_¿Þ²¬Å‹9R/â§úÑSRcÖ²è;ÕÒUŠÂ0Œ’’’éÓ§†1jÔ¨´´´`0XZZzàÀÙ³gßÿý–eÉNZ©(„8Né ØE-qkà¾ÁuÌj^Ÿd 6uTRdUUÕk¯½öÑG@rrr^^Þøñã@zü¢Ñ¶> j#/«W¯.,,lhh€ÜrË-;v”ø)ðNª›^ý·Ù1mö”Dª·>iâÄÒ“¬Á&H•=¾Ej§pŽJ3´Yþ¡ãÇ["šQ¡²‰šÕÑ[ªÖ}JÊ«Çô£Ã¬¯¥nŨh]Æ»\ø¢/¢¨Y:8IyÅ,á—k tKé8²ð4WfQDçèÖìKàë¬xaœæ'<=àéb2^œŸžl©ša³CÑÒ÷–βÎajP<ÖŽ :²âª]Õ›ñ𙯛%x1õŸÁy1ƒuÇU….@ømR«|é¥ÅOýéÏ~Š‚víÙ#üøC†ôéÙSº‰œñÊÚ)‘…­xø Õ…«­ïÿæeái#ôîÚm„+n?„[ÖÛÖ/YòÏ×^û™a¤_zÉ•C‡5jÌ5×ôêÕK¯0tJhñÜ—…§eÉK„M«ß^S&ŽËÚ¶ïHÚ†ÿƒû÷}¹íß‹~÷÷¿Ï$¤sfæ!C&Nœ8uêTŸÏwª Ïqôk•=º-H ›ªÕ Ë ›ÂÀ¿jlü¤>°'Ô°F.]þóò˯¸âŠ^½z);ìäo,Þ ¦ö臚ݙÈþøÎÏ)*Ôc1r¡(õ3ö6ð=VC]f‡o_?~äÈ1YYßî÷-o’·WÃuNÿäê‰Ûí~è¡ß¼õæÒ»noY&¸  Ý’W^•«é•;MYg¯™qº_†sjW&èÌYâçr¹~þóŸ/X°`tÎØú@€Â©««ËÉûÁƳgÏ&”655Ið¤++ÞùyÂÓ='T±P—Ë5gΜ§žzjkÙÖ«¯ÜÐ$„‚ W]=¸¤dÓO>9gί×{.|6Î%ü~ö³Ÿ=óÌ3eeeÝ{ô¨¬¬d“á;f°ÊÊÊž½z•••eeeqΟzê)Ó4[¦^€ðtãwÏ=÷<ûì³eeeýúõã–e0COq6˜Á-ëòË//++:t¨âé§Ÿ>7P<‹5R—øÝ}÷Ý/¼ðBiiiÿþý=Ú£{w‘ÜVˆŒ±Š/¿ìß¿iié°aÃ8çÏ<óŒDñ¬~EéYiêî1—Ë5kÖ¬… nÙ²¥oß¾•••Œ1.dN•U!ˆÈgŒUVVöíÛwË–-YYYBˆùó盦ٺù|ÂSO…:ýÝyç/½ôÒæÍ›/½ôÒÊÊJ·ÛmY–]( ”‚“K,„ÌH«¬¬¼ôÒK7oÞ<|øp!ÄsÏ=wVÓâÙ' U"ˆËåúñ¼dÉ’M›6õéÓ§ªªJ–º–GcKH:Ê4§ªªª>}úlÚ´iĈœó^xAV9<Q4ÎRü øýöÛ—.]ºqãF¹¸Râ' DÁ…ª—¢x¯à‘ ™æÔ«W¯7fgg !^|ñųEã,Åoƌ˖-+))éÞ½{uuµþ:CιŹ@§Ø†­Î¹‚OO½©®®îÞ½{IIɨQ£8ç‹-:Q<;Ô=‘Î0Œ[o½uÅŠëׯïÖ­[uuµ¢?õªa«3Q‡Çj/¯¨®®–•êGÍ9ùå—%Šg‘vsxg”ý'ñ›6mÚÊ•+‹‹‹;wî|ìØ1YÁWê/BÛd…»vø£R.2ÆŽ;Ö¹sçâââ•+WN›6M&‹Æ§Å^€0 Û:µ%[“øM:uÍš5EEE™™™555-á'÷ØÕ!„½”-¾B±¦¦&33³¨¨hÍš5S§NU(ž/T?ÓoQçŸS¦LY·n]AAAzzzMM ¥TÚ‰¨Íâ(ä;ôdùv@ÜŠm%Ï•y·555éééëÖ­›2eŠDQ4W:ö|‡•]IDAT0ñH…z¥ƒ\8yò䢢¢‚‚‚´´´ÚÚZ™ O[QTYˆHZo)³ªkkkÓÒÒ ŠŠŠ&Ož,³§¤”=“9êJ…J‘À¤I“JJJÖ®]Û¾}ûºº:‰ŸhyãBÄPhí!$ŠuuuíÛ·_»vmIIɤI“䚇–Æ/ÈÂãû_$~'Nܼyó;3ššªã× aE4RÍÓ­4Òf QG155õwÞÙ¼yóĉŠg¬\<oK®–øM˜0¡´´tÕªU~¿¿®®N.ë²å] ›<ŸÄ—ÈYÒ¸¬««óûý«V­*--0a‚ZIzfÊÅ3K*ù'—àŽ7nÛ¶m+V¬HNNJþµ¾i²P«µ¦¯Ìne“´’““W¬X±mÛ¶qãÆÉ˜Ô™)Ï *TòO2Ûüüü;v,_¾Üëõêø‰D6é`Ó5RÇÁvÜMGÑëõ._¾|ÇŽùùùª„Ô™&éˆäååíܹsÙ²en·»¾¾^òÏfŒ‡6Ë–ª,?BX<ÑMZ„úúz·Û½lÙ²;wæåå)#çŒB‘žQøI+>77w÷îÝo¾ù¦Çã ƒJµÁ¶lÛF­ÐrN—÷#_«ôæ›oîÞ½;77WUË8sP<#4R=°,+??ïÞ½K—.5 C¾|³ ü3N#ÕJܵ¦‘¶ÂQ ! †a,]ºtïÞ½ùùùªÅ¢ÝœnnU¡gÒ¤IEEE={öœ1c†|ÙÜ øšÑív}V~pÚÙ–%ÀïOyõ­·>úðá°ybvYz†1VTT4iÒ¤•+W¶²þýtSÅiæñ+§UÐ  îÙ³Çï÷ƒA½8D[/aYVFF§ûøu}åÇ¿ž=yb‘?ý[sÿøÈÑ£†aœ Ÿ÷ù|õõõ}ûöõù|úŠåVÞÑ|®Qa³ñ©­x<žž¼Œ‘‹Ó23;;¼‹ Ó´23;wïÞ£sç.'a Ï—÷,õµÿ”‹ß„zü¨Ù…w'¿%%¹Ú¥úä—SËEôêAªjÅ7…â7S.œb‹/^°`')©}»ÔP(\W”ë¤UGNðèñxvïÞÝPWÙ£{&]*>'J;‹e¡œÂ–e-Y²äþû8|øËï^;87ûÊšÚ@(l2Fw%´}H!|>eF(Ç-¸%íÀ¶ƒç¼Þ›sáq»Ú·K)Üðo¾»­K—®sçþñ{ßûžÎHÎ#uù …â‰ÇçÍ3´ßCsf\Ô%½úX@dŒ:oxnÛ+•í(‡þŽøjÇÿn  œ JHZ‡ÔÏWþöñEÅ¥»çÜwÿœÙ³=OLi¢óŽ •íÅ+//ŸyǬ÷ ×Ý5}Ü·^O)©­k ”DŠÀéõª i"¶KMŸyÕ³‹×ŽÎÍ_ðüüÞ½{Kƒ5F9¿ -aI¦wBÖ¬Y{Ç]³Ì†ÊßÞ;=7ûÊ@ ¡16ƒS·>A:‹s¯Ç’’\¸áÿzl±+9ýùgç_wÝ8¹6±Ù…mç>„ñÕŸÿQ ¾¦žûèã?üð=ž3ãâ]ªkj…@F©ýrž¯Ñ©ÁÉ… ”¤µo·ïàá‡_Töч~øþ_Ìq¹Üò¥å-<9!Œ™ø2 cÆ_|>ë¿îYµâ­ÛoɽkÆ$·‹ÕH¾J¨Ì©8µ@Úoò& PíS“Ã&vÑò_+¼þ†çÿõénÝ.’ù‰¬U–pþBoïË™^\üþÌ;î:VqðW?6.gHCCc°)d0e‡‚“>"{é6¾$Or²wmQÙïÿôj‡N=<ÿì˜1£%‡H¤<Íy' [·úíRè–õ§?ÿå—¿üå\’ùМ—õ¹¨úX|åø Ûú É'ÊÓ:¤~òÙç¿}|Ñ¿>=ò‡?üá§?ùoæä‰'h¿ŸïTØ _=zôÈOôõW¿7iÄÝ?šìMr×ÔÕB؉áRgÉ\©ö©þƦð3[¶dùÆ›§NûóÓOddd&Â9/@˜U&ìRJ?ø`ËgÞyhÿÇ÷Ý}óÄü¬ÆÆ¦†FÛá’À±£˜§l,&{=^oÒÊu›ç=³´{¯o½°à¹k®¦²„Ûš™ÂiEé«Bˆçž_pï½÷õìâpöŒÿè×+lZÄ)ÚŸ°Ç~ƒ Ûeük÷þÿybÑÃõ=6ïÎ;fÊ÷p‘½ é9|µººzöœû-|ñ†üÁC}«)–ï»N\ÿDÄ$»lûÇ+Öm›ñƒÛŸx|^ZZšâœ'ìj¹ Î$¤épnBc[·n}à_76ŠI|øl'œ×ëûã¹úê«9爂1ã$c¨° RªNrZØ^­œùIbp ÛFŽú*²˨OaÀïžõÛé´ÿCO;…{1”VIEND®B`‚PyQt5_gpl-5.10.1/examples/ipc/sharedmemory/qt.png0000644000076500000240000000451713245231431021730 0ustar philstaff00000000000000‰PNG  IHDRÝóÐ3PLTE+)!¦Î9dv,# …¢2CJ&T`)tŒ/34#•¸5KU'Ã7\k*­4;?$l.}—1鈹˜×IDATx^ìØ¹UCAÑé·Ìúå-à1’°°8T…p½î¢Ÿ¢_Ø`ƒ aƒ 6Ø`ƒ 6Ø`ƒ ­‡™ol¨¿²{Žgj>‡¤èåÜm(ÜÂÌîµ®k·¡™²nµL…?6ò&K©vé:6òuK?¤š¯6Ø¥Jšs³¡~ÈRÍC*¶ÙÐQ–¥”}Ý>6Zåz4é´æ‡v:K¿‡¢zÕ³ êŸõ¦w61þâç£Àl°Á†°Ál°‰oaóÕf™Ý_ºrÚãÚ|°w/Û‘«0@% Øþÿ¯½“»:£^Ø>B”«sæY•lÌ«Pp Nv?L”#üS6%Éîodogý'lΖýƒì-|·MM›’TmmLaàÈù…6]È«„Zÿ*›š²WLL_cSyå«ß`SÄÏI±²±—Á3]‡ÖÉà‘úV›Úü쫯´9È$§÷Ù„Ý%öwÙÔæ ãê‹lNò¦Éá-6uóæiï° Ù/ÈÞ_`ãü¢ŸnS£_–­~´M'¿0{ÿ`›ä׆ε¿<ÎÊjì#ŸhSwÿÙëÇÙôìý·áÁeSŒlpûP7°hÞC4oÅ! ûP±³Áiìg«õ65{ÿ¥8´~ÉÅ¥þ´s áp[„qâr›ˆ±¸³ð_RΆÉbú J¦qŽ¥6é1ÌQøbúsžs¡MZBSlŠw¨/³©ô¨/% ‚Çt²"ãq8~˜3ã±µ{$$<ÐIKlÂýÞLÊ–›2[ÓÁ qt·AØ´E§G%š}½N6=ŠÎu•ÝØ¦fà¡1~tvc›¶ö¨Ú™ô*š¿ ÎÕ˜«æÚìàÚOÙïtiC›„­Lí+ ‚™M%¬ Êþø=›Ù8tÉn“Œl LcCÕÆFp{gbSŒiÒ^p¨Z؈í0œ¼WÁq6ÅvòN£%Rœ÷àЬ.¾kÑüà`dnºM½H“«ÍxæL€îÚ¦kÑŒqN`jPµ!Ãwº¸-k“Ç4e'µiÒŒqö9»*š±§ªI3Æ)4e椙§.Íçð—RgÚ4 G4cœˆŽ‚¸ =  ãtp4ÆmN u š1NÃV¸ÑŒq*éoñH}MfÐŒqýv#í.çÐŒq²z§"í.æÐŒq’z§"åY*΢ãdí3NR>8ÍœÇ?Z@`šÌ8ÍsR^`î^*Á4ŽS^³“ê N¥ApŠò7\¤:ƒ Jƒálº³8©7¤qN݇4+f3Hã0à 6èÊ §ÿ™¢Ú~¤¹ºé¦4ÔuªªosMbEìº:%Å¡¸-§áMó ‡âs9 šƒ1)n4ërîš»aÒ[ï–4@ªÛ`¸1¤áMq+Nz›ìh óú mã€Õ! Å6$½)üh¸(Nâ¤6…ïV4èÖ¦ÙÛD#»_”Ô–7nÍz ëÒà“Ænolhp¿Æf= Ÿæ6°1¥á oƒb5 y«Í·Úà4ßlƒÓ|¿Mò’^mÒà8ï·IþaÒ‹m @ଷ)c›Ð(â„ìçøD› p^±×t"N³ÿþ&m@£ˆ l€hpœým2@àßð|  ÑÃéŸipçT,÷ ½*ѧÁqІk§Áq¢b) é•BfœÇÓ«Ûä1NAipœ0¶‰KjÚJƒã8Í2!R¼ˆBPg×,L'Å£ipœº¦†¶ûqNŒÇI~Ö·azÒ©Ä›âlcš}Ñÿz¯Å©ºvê­@çZœã§¾Mðãl¼g÷ã”6ì/¤@8DNP¾Y€t_ÇàÀ¡Þ!†Ðæx|š\¤aFp pmjÓŸ/åå" „〫“PÎÏû³\¢p*p%nÓ€ ²\ ÁpponÓ‘+fdHƒáÔK¤e– g¤id@â4è’SܦAW‘É€fˆƒç˜gÓ±{‹e@3§Ì³áŒÝ†&šÙ8O´9À«‹e@3'Í´)è5Ê2 ™ŠC<Ó†7ôöbÐÌÄismüÐLÄ)sm8ÃÉË€fNäÉ6 öd@3 '̶a‹ìe@3'ót§ð>Óèã¤ù6•ÞÉ%#}œÌómØiŒ}2 ÑÇI6•4ÞzÒ:³%Nf vJïs3ÅI665¿ggNþu8ÁʆwìjK{œÈf6ÁßÀ)€SìlxCn°ÇqlhSo5ã±'WK>€×@›ã6µáx¯åÂBœmÊÍVluUÀèUÀ£c†s²¹ G3[Y‚“ØÔÛH®2”"ÀVÊÒ†OïMuª#`ŸikÃÍê!`nnûé|;aóH’½M}Ø”{ª|#åÈL2·áîŸfKõ*Ìî_ðÝ–òU» —z6Æ!Æâ<”ØÒ_€Â!ˆ‹ýÌœ’üŹ3üŸäÜ *L l8ú·$™ÛÔý[qˆqîÛüâÿâÜ·ùÅ!þÅ™lÃuû>b­È{pÌmؽŦÙÛp¢WÐ/°ážßBcoÃ5¾€°Áâ^CcoÃ^@ؼp¥C `ó‚ùŠÎN¡ —hK#•¹@chÃ|𬠡@ciõÉ»XH Ø(§›t¬­\¬²lôsæÙ21\-AÆlô“¦êäór}Ž0`ó>œ®/ 6¯Ó‰éFe—0`37gÔ–‘p§ìM°™žÒH&»r«&P°1IÚtd¶ófÁ¤ðR³Jš˜êÝjRaÈÆ’'z´œéŽ0bcœzJ¾ï²·óQ²0fcŸ’îÔcÅvÖ‡EÚ˜ͪ„Ôb-¹Ô vaÐfmz8œÄýO(ÆØÜúíÚ± 0ÁHÀJ÷_73;¹áêŸîýS›­u›¯Ø°aÆ 6l؈ 6lذaÆ ±aÆ 6lذa#6lذaÆ 6z%D•ÃúÛäIEND®B`‚PyQt5_gpl-5.10.1/examples/ipc/sharedmemory/sharedmemory.py0000755000076500000240000001661313245231431023652 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QBuffer, QDataStream, QSharedMemory from PyQt5.QtGui import QImage, QPixmap from PyQt5.QtWidgets import QApplication, QDialog, QFileDialog from dialog import Ui_Dialog class Dialog(QDialog): """ This class is a simple example of how to use QSharedMemory. It is a simple dialog that presents a few buttons. Run the executable twice to create two processes running the dialog. In one of the processes, press the button to load an image into a shared memory segment, and then select an image file to load. Once the first process has loaded and displayed the image, in the second process, press the button to read the same image from shared memory. The second process displays the same image loaded from its new location in shared memory. The class contains a data member sharedMemory, which is initialized with the key "QSharedMemoryExample" to force all instances of Dialog to access the same shared memory segment. The constructor also connects the clicked() signal from each of the three dialog buttons to the slot function appropriate for handling each button. """ def __init__(self, parent = None): super(Dialog, self).__init__(parent) self.sharedMemory = QSharedMemory('QSharedMemoryExample') self.ui = Ui_Dialog() self.ui.setupUi(self) self.ui.loadFromFileButton.clicked.connect(self.loadFromFile) self.ui.loadFromSharedMemoryButton.clicked.connect(self.loadFromMemory) self.setWindowTitle("SharedMemory Example") def loadFromFile(self): """ This slot function is called when the "Load Image From File..." button is pressed on the firs Dialog process. First, it tests whether the process is already connected to a shared memory segment and, if so, detaches from that segment. This ensures that we always start the example from the beginning if we run it multiple times with the same two Dialog processes. After detaching from an existing shared memory segment, the user is prompted to select an image file. The selected file is loaded into a QImage. The QImage is displayed in the Dialog and streamed into a QBuffer with a QDataStream. Next, it gets a new shared memory segment from the system big enough to hold the image data in the QBuffer, and it locks the segment to prevent the second Dialog process from accessing it. Then it copies the image from the QBuffer into the shared memory segment. Finally, it unlocks the shared memory segment so the second Dialog process can access it. After self function runs, the user is expected to press the "Load Image from Shared Memory" button on the second Dialog process. """ if self.sharedMemory.isAttached(): self.detach() self.ui.label.setText("Select an image file") fileName, _ = QFileDialog.getOpenFileName(self, None, None, "Images (*.png *.xpm *.jpg)") image = QImage() if not image.load(fileName): self.ui.label.setText( "Selected file is not an image, please select another.") return self.ui.label.setPixmap(QPixmap.fromImage(image)) # Load into shared memory. buf = QBuffer() buf.open(QBuffer.ReadWrite) out = QDataStream(buf) out << image size = buf.size() if not self.sharedMemory.create(size): self.ui.label.setText("Unable to create shared memory segment.") return size = min(self.sharedMemory.size(), size) self.sharedMemory.lock() # Copy image data from buf into shared memory area. self.sharedMemory.data()[:size] = buf.data()[:size] self.sharedMemory.unlock() def loadFromMemory(self): """ This slot function is called in the second Dialog process, when the user presses the "Load Image from Shared Memory" button. First, it attaches the process to the shared memory segment created by the first Dialog process. Then it locks the segment for exclusive access, copies the image data from the segment into a QBuffer, and streams the QBuffer into a QImage. Then it unlocks the shared memory segment, detaches from it, and finally displays the QImage in the Dialog. """ if not self.sharedMemory.attach(): self.ui.label.setText( "Unable to attach to shared memory segment.\nLoad an " "image first.") return buf = QBuffer() ins = QDataStream(buf) image = QImage() self.sharedMemory.lock() buf.setData(self.sharedMemory.constData()) buf.open(QBuffer.ReadOnly) ins >> image self.sharedMemory.unlock() self.sharedMemory.detach() self.ui.label.setPixmap(QPixmap.fromImage(image)) def detach(self): """ This private function is called by the destructor to detach the process from its shared memory segment. When the last process detaches from a shared memory segment, the system releases the shared memory. """ if not self.sharedMemory.detach(): self.ui.label.setText("Unable to detach from shared memory.") if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = Dialog() dialog.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/0000755000076500000240000000000013245231431017331 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/itemviews/basicsortfiltermodel.py0000755000076500000240000002276213245231431024137 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (QDate, QDateTime, QRegExp, QSortFilterProxyModel, Qt, QTime) from PyQt5.QtGui import QStandardItemModel from PyQt5.QtWidgets import (QApplication, QCheckBox, QComboBox, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit, QTreeView, QVBoxLayout, QWidget) SUBJECT, SENDER, DATE = range(3) # Work around the fact that QSortFilterProxyModel always filters datetime # values in QtCore.Qt.ISODate format, but the tree views display using # QtCore.Qt.DefaultLocaleShortDate format. class SortFilterProxyModel(QSortFilterProxyModel): def filterAcceptsRow(self, sourceRow, sourceParent): # Do we filter for the date column? if self.filterKeyColumn() == DATE: # Fetch datetime value. index = self.sourceModel().index(sourceRow, DATE, sourceParent) data = self.sourceModel().data(index) # Return, if regExp match in displayed format. return (self.filterRegExp().indexIn(data.toString(Qt.DefaultLocaleShortDate)) >= 0) # Not our business. return super(SortFilterProxyModel, self).filterAcceptsRow(sourceRow, sourceParent) class Window(QWidget): def __init__(self): super(Window, self).__init__() self.proxyModel = SortFilterProxyModel() self.proxyModel.setDynamicSortFilter(True) self.sourceGroupBox = QGroupBox("Original Model") self.proxyGroupBox = QGroupBox("Sorted/Filtered Model") self.sourceView = QTreeView() self.sourceView.setRootIsDecorated(False) self.sourceView.setAlternatingRowColors(True) self.proxyView = QTreeView() self.proxyView.setRootIsDecorated(False) self.proxyView.setAlternatingRowColors(True) self.proxyView.setModel(self.proxyModel) self.proxyView.setSortingEnabled(True) self.sortCaseSensitivityCheckBox = QCheckBox("Case sensitive sorting") self.filterCaseSensitivityCheckBox = QCheckBox("Case sensitive filter") self.filterPatternLineEdit = QLineEdit() self.filterPatternLabel = QLabel("&Filter pattern:") self.filterPatternLabel.setBuddy(self.filterPatternLineEdit) self.filterSyntaxComboBox = QComboBox() self.filterSyntaxComboBox.addItem("Regular expression", QRegExp.RegExp) self.filterSyntaxComboBox.addItem("Wildcard", QRegExp.Wildcard) self.filterSyntaxComboBox.addItem("Fixed string", QRegExp.FixedString) self.filterSyntaxLabel = QLabel("Filter &syntax:") self.filterSyntaxLabel.setBuddy(self.filterSyntaxComboBox) self.filterColumnComboBox = QComboBox() self.filterColumnComboBox.addItem("Subject") self.filterColumnComboBox.addItem("Sender") self.filterColumnComboBox.addItem("Date") self.filterColumnLabel = QLabel("Filter &column:") self.filterColumnLabel.setBuddy(self.filterColumnComboBox) self.filterPatternLineEdit.textChanged.connect(self.filterRegExpChanged) self.filterSyntaxComboBox.currentIndexChanged.connect(self.filterRegExpChanged) self.filterColumnComboBox.currentIndexChanged.connect(self.filterColumnChanged) self.filterCaseSensitivityCheckBox.toggled.connect(self.filterRegExpChanged) self.sortCaseSensitivityCheckBox.toggled.connect(self.sortChanged) sourceLayout = QHBoxLayout() sourceLayout.addWidget(self.sourceView) self.sourceGroupBox.setLayout(sourceLayout) proxyLayout = QGridLayout() proxyLayout.addWidget(self.proxyView, 0, 0, 1, 3) proxyLayout.addWidget(self.filterPatternLabel, 1, 0) proxyLayout.addWidget(self.filterPatternLineEdit, 1, 1, 1, 2) proxyLayout.addWidget(self.filterSyntaxLabel, 2, 0) proxyLayout.addWidget(self.filterSyntaxComboBox, 2, 1, 1, 2) proxyLayout.addWidget(self.filterColumnLabel, 3, 0) proxyLayout.addWidget(self.filterColumnComboBox, 3, 1, 1, 2) proxyLayout.addWidget(self.filterCaseSensitivityCheckBox, 4, 0, 1, 2) proxyLayout.addWidget(self.sortCaseSensitivityCheckBox, 4, 2) self.proxyGroupBox.setLayout(proxyLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(self.sourceGroupBox) mainLayout.addWidget(self.proxyGroupBox) self.setLayout(mainLayout) self.setWindowTitle("Basic Sort/Filter Model") self.resize(500, 450) self.proxyView.sortByColumn(SENDER, Qt.AscendingOrder) self.filterColumnComboBox.setCurrentIndex(SENDER) self.filterPatternLineEdit.setText("Andy|Grace") self.filterCaseSensitivityCheckBox.setChecked(True) self.sortCaseSensitivityCheckBox.setChecked(True) def setSourceModel(self, model): self.proxyModel.setSourceModel(model) self.sourceView.setModel(model) def filterRegExpChanged(self): syntax_nr = self.filterSyntaxComboBox.itemData(self.filterSyntaxComboBox.currentIndex()) syntax = QRegExp.PatternSyntax(syntax_nr) if self.filterCaseSensitivityCheckBox.isChecked(): caseSensitivity = Qt.CaseSensitive else: caseSensitivity = Qt.CaseInsensitive regExp = QRegExp(self.filterPatternLineEdit.text(), caseSensitivity, syntax) self.proxyModel.setFilterRegExp(regExp) def filterColumnChanged(self): self.proxyModel.setFilterKeyColumn(self.filterColumnComboBox.currentIndex()) def sortChanged(self): if self.sortCaseSensitivityCheckBox.isChecked(): caseSensitivity = Qt.CaseSensitive else: caseSensitivity = Qt.CaseInsensitive self.proxyModel.setSortCaseSensitivity(caseSensitivity) def addMail(model, subject, sender, date): model.insertRow(0) model.setData(model.index(0, SUBJECT), subject) model.setData(model.index(0, SENDER), sender) model.setData(model.index(0, DATE), date) def createMailModel(parent): model = QStandardItemModel(0, 3, parent) model.setHeaderData(SUBJECT, Qt.Horizontal, "Subject") model.setHeaderData(SENDER, Qt.Horizontal, "Sender") model.setHeaderData(DATE, Qt.Horizontal, "Date") addMail(model, "Happy New Year!", "Grace K. ", QDateTime(QDate(2006, 12, 31), QTime(17, 3))) addMail(model, "Radically new concept", "Grace K. ", QDateTime(QDate(2006, 12, 22), QTime(9, 44))) addMail(model, "Accounts", "pascale@nospam.com", QDateTime(QDate(2006, 12, 31), QTime(12, 50))) addMail(model, "Expenses", "Joe Bloggs ", QDateTime(QDate(2006, 12, 25), QTime(11, 39))) addMail(model, "Re: Expenses", "Andy ", QDateTime(QDate(2007, 1, 2), QTime(16, 5))) addMail(model, "Re: Accounts", "Joe Bloggs ", QDateTime(QDate(2007, 1, 3), QTime(14, 18))) addMail(model, "Re: Accounts", "Andy ", QDateTime(QDate(2007, 1, 3), QTime(14, 26))) addMail(model, "Sports", "Linda Smith ", QDateTime(QDate(2007, 1, 5), QTime(11, 33))) addMail(model, "AW: Sports", "Rolf Newschweinstein ", QDateTime(QDate(2007, 1, 5), QTime(12, 0))) addMail(model, "RE: Sports", "Petra Schmidt ", QDateTime(QDate(2007, 1, 5), QTime(12, 1))) return model if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.setSourceModel(createMailModel(window)) window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/chart/0000755000076500000240000000000013245231431020432 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/itemviews/chart/chart.py0000755000076500000240000005207613245231431022122 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2017 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import math from PyQt5.QtCore import (QByteArray, QFile, QItemSelection, QItemSelectionModel, QModelIndex, QPoint, QRect, QSize, Qt, QTextStream) from PyQt5.QtGui import (QBrush, QColor, QFontMetrics, QPainter, QPainterPath, QPalette, QPen, QRegion, QStandardItemModel) from PyQt5.QtWidgets import (QAbstractItemView, QApplication, QFileDialog, QMainWindow, QMenu, QRubberBand, QSplitter, QStyle, QTableView) import chart_rc class PieView(QAbstractItemView): def __init__(self, parent=None): super(PieView, self).__init__(parent) self.horizontalScrollBar().setRange(0, 0) self.verticalScrollBar().setRange(0, 0) self.margin = 8 self.totalSize = 300 self.pieSize = self.totalSize - 2*self.margin self.validItems = 0 self.totalValue = 0.0 self.origin = QPoint() self.rubberBand = None def dataChanged(self, topLeft, bottomRight, roles): super(PieView, self).dataChanged(topLeft, bottomRight, roles) self.validItems = 0 self.totalValue = 0.0 for row in range(self.model().rowCount(self.rootIndex())): index = self.model().index(row, 1, self.rootIndex()) value = self.model().data(index) if value is not None and value > 0.0: self.totalValue += value self.validItems += 1 self.viewport().update() def edit(self, index, trigger, event): if index.column() == 0: return super(PieView, self).edit(index, trigger, event) else: return False def indexAt(self, point): if self.validItems == 0: return QModelIndex() # Transform the view coordinates into contents widget coordinates. wx = point.x() + self.horizontalScrollBar().value() wy = point.y() + self.verticalScrollBar().value() if wx < self.totalSize: cx = wx - self.totalSize/2 cy = self.totalSize/2 - wy; # positive cy for items above the center # Determine the distance from the center point of the pie chart. d = (cx**2 + cy**2)**0.5 if d == 0 or d > self.pieSize/2: return QModelIndex() # Determine the angle of the point. angle = (180 / math.pi) * math.acos(cx/d) if cy < 0: angle = 360 - angle # Find the relevant slice of the pie. startAngle = 0.0 for row in range(self.model().rowCount(self.rootIndex())): index = self.model().index(row, 1, self.rootIndex()) value = self.model().data(index) if value > 0.0: sliceAngle = 360*value/self.totalValue if angle >= startAngle and angle < (startAngle + sliceAngle): return self.model().index(row, 1, self.rootIndex()) startAngle += sliceAngle else: itemHeight = QFontMetrics(self.viewOptions().font).height() listItem = int((wy - self.margin) / itemHeight) validRow = 0 for row in range(self.model().rowCount(self.rootIndex())): index = self.model().index(row, 1, self.rootIndex()) if self.model().data(index) > 0.0: if listItem == validRow: return self.model().index(row, 0, self.rootIndex()) # Update the list index that corresponds to the next valid # row. validRow += 1 return QModelIndex() def isIndexHidden(self, index): return False def itemRect(self, index): if not index.isValid(): return QRect() # Check whether the index's row is in the list of rows represented # by slices. if index.column() != 1: valueIndex = self.model().index(index.row(), 1, self.rootIndex()) else: valueIndex = index value = self.model().data(valueIndex) if value is not None and value > 0.0: listItem = 0 for row in range(index.row()-1, -1, -1): if self.model().data(self.model().index(row, 1, self.rootIndex())) > 0.0: listItem += 1 if index.column() == 0: itemHeight = QFontMetrics(self.viewOptions().font).height() return QRect(self.totalSize, int(self.margin + listItem*itemHeight), self.totalSize - self.margin, int(itemHeight)) elif index.column() == 1: return self.viewport().rect() return QRect() def itemRegion(self, index): if not index.isValid(): return QRegion() if index.column() != 1: return QRegion(self.itemRect(index)) if self.model().data(index) <= 0.0: return QRegion() startAngle = 0.0 for row in range(self.model().rowCount(self.rootIndex())): sliceIndex = self.model().index(row, 1, self.rootIndex()) value = self.model().data(sliceIndex) if value > 0.0: angle = 360*value/self.totalValue if sliceIndex == index: slicePath = QPainterPath() slicePath.moveTo(self.totalSize/2, self.totalSize/2) slicePath.arcTo(self.margin, self.margin, self.margin+self.pieSize, self.margin+self.pieSize, startAngle, angle) slicePath.closeSubpath() return QRegion(slicePath.toFillPolygon().toPolygon()) startAngle += angle return QRegion() def horizontalOffset(self): return self.horizontalScrollBar().value() def mousePressEvent(self, event): super(PieView, self).mousePressEvent(event) self.origin = event.pos() if not self.rubberBand: self.rubberBand = QRubberBand(QRubberBand.Rectangle, self) self.rubberBand.setGeometry(QRect(self.origin, QSize())) self.rubberBand.show() def mouseMoveEvent(self, event): if self.rubberBand: self.rubberBand.setGeometry(QRect(self.origin, event.pos()).normalized()) super(PieView, self).mouseMoveEvent(event) def mouseReleaseEvent(self, event): super(PieView, self).mouseReleaseEvent(event) if self.rubberBand: self.rubberBand.hide() self.viewport().update() def moveCursor(self, cursorAction, modifiers): current = self.currentIndex() if cursorAction in (QAbstractItemView.MoveLeft, QAbstractItemView.MoveUp): if current.row() > 0: current = self.model().index(current.row() - 1, current.column(), self.rootIndex()) else: current = self.model().index(0, current.column(), self.rootIndex()) elif cursorAction in (QAbstractItemView.MoveRight, QAbstractItemView.MoveDown): if current.row() < self.rows(current) - 1: current = self.model().index(current.row() + 1, current.column(), self.rootIndex()) else: current = self.model().index(self.rows(current) - 1, current.column(), self.rootIndex()) self.viewport().update() return current def paintEvent(self, event): selections = self.selectionModel() option = self.viewOptions() state = option.state background = option.palette.base() foreground = QPen(option.palette.color(QPalette.WindowText)) textPen = QPen(option.palette.color(QPalette.Text)) highlightedPen = QPen(option.palette.color(QPalette.HighlightedText)) painter = QPainter(self.viewport()) painter.setRenderHint(QPainter.Antialiasing) painter.fillRect(event.rect(), background) painter.setPen(foreground) # Viewport rectangles pieRect = QRect(self.margin, self.margin, self.pieSize, self.pieSize) keyPoint = QPoint(self.totalSize - self.horizontalScrollBar().value(), self.margin - self.verticalScrollBar().value()) if self.validItems > 0: painter.save() painter.translate(pieRect.x() - self.horizontalScrollBar().value(), pieRect.y() - self.verticalScrollBar().value()) painter.drawEllipse(0, 0, self.pieSize, self.pieSize) startAngle = 0.0 for row in range(self.model().rowCount(self.rootIndex())): index = self.model().index(row, 1, self.rootIndex()) value = self.model().data(index) if value > 0.0: angle = 360*value/self.totalValue colorIndex = self.model().index(row, 0, self.rootIndex()) color = self.model().data(colorIndex, Qt.DecorationRole) if self.currentIndex() == index: painter.setBrush(QBrush(color, Qt.Dense4Pattern)) elif selections.isSelected(index): painter.setBrush(QBrush(color, Qt.Dense3Pattern)) else: painter.setBrush(QBrush(color)) painter.drawPie(0, 0, self.pieSize, self.pieSize, int(startAngle*16), int(angle*16)) startAngle += angle painter.restore() keyNumber = 0 for row in range(self.model().rowCount(self.rootIndex())): index = self.model().index(row, 1, self.rootIndex()) value = self.model().data(index) if value > 0.0: labelIndex = self.model().index(row, 0, self.rootIndex()) option = self.viewOptions() option.rect = self.visualRect(labelIndex) if selections.isSelected(labelIndex): option.state |= QStyle.State_Selected if self.currentIndex() == labelIndex: option.state |= QStyle.State_HasFocus self.itemDelegate().paint(painter, option, labelIndex) keyNumber += 1 def resizeEvent(self, event): self.updateGeometries() def rows(self, index): return self.model().rowCount(self.model().parent(index)) def rowsInserted(self, parent, start, end): for row in range(start, end + 1): index = self.model().index(row, 1, self.rootIndex()) value = self.model().data(index) if value is not None and value > 0.0: self.totalValue += value self.validItems += 1 super(PieView, self).rowsInserted(parent, start, end) def rowsAboutToBeRemoved(self, parent, start, end): for row in range(start, end + 1): index = self.model().index(row, 1, self.rootIndex()) value = self.model().data(index) if value is not None and value > 0.0: self.totalValue -= value self.validItems -= 1 super(PieView, self).rowsAboutToBeRemoved(parent, start, end) def scrollContentsBy(self, dx, dy): self.viewport().scroll(dx, dy) def scrollTo(self, index, ScrollHint): area = self.viewport().rect() rect = self.visualRect(index) if rect.left() < area.left(): self.horizontalScrollBar().setValue( self.horizontalScrollBar().value() + rect.left() - area.left()) elif rect.right() > area.right(): self.horizontalScrollBar().setValue( self.horizontalScrollBar().value() + min( rect.right() - area.right(), rect.left() - area.left())) if rect.top() < area.top(): self.verticalScrollBar().setValue( self.verticalScrollBar().value() + rect.top() - area.top()) elif rect.bottom() > area.bottom(): self.verticalScrollBar().setValue( self.verticalScrollBar().value() + min( rect.bottom() - area.bottom(), rect.top() - area.top())) def setSelection(self, rect, command): # Use content widget coordinates because we will use the itemRegion() # function to check for intersections. contentsRect = rect.translated(self.horizontalScrollBar().value(), self.verticalScrollBar().value()).normalized() rows = self.model().rowCount(self.rootIndex()) columns = self.model().columnCount(self.rootIndex()) indexes = [] for row in range(rows): for column in range(columns): index = self.model().index(row, column, self.rootIndex()) region = self.itemRegion(index) if region.intersects(QRegion(contentsRect)): indexes.append(index) if len(indexes) > 0: firstRow = indexes[0].row() lastRow = indexes[0].row() firstColumn = indexes[0].column() lastColumn = indexes[0].column() for i in range(1, len(indexes)): firstRow = min(firstRow, indexes[i].row()) lastRow = max(lastRow, indexes[i].row()) firstColumn = min(firstColumn, indexes[i].column()) lastColumn = max(lastColumn, indexes[i].column()) selection = QItemSelection( self.model().index(firstRow, firstColumn, self.rootIndex()), self.model().index(lastRow, lastColumn, self.rootIndex())) self.selectionModel().select(selection, command) else: noIndex = QModelIndex() selection = QItemSelection(noIndex, noIndex) self.selectionModel().select(selection, command) self.update() def updateGeometries(self): self.horizontalScrollBar().setPageStep(self.viewport().width()) self.horizontalScrollBar().setRange(0, max(0, 2*self.totalSize - self.viewport().width())) self.verticalScrollBar().setPageStep(self.viewport().height()) self.verticalScrollBar().setRange(0, max(0, self.totalSize - self.viewport().height())) def verticalOffset(self): return self.verticalScrollBar().value() def visualRect(self, index): rect = self.itemRect(index) if rect.isValid(): return QRect(rect.left() - self.horizontalScrollBar().value(), rect.top() - self.verticalScrollBar().value(), rect.width(), rect.height()) else: return rect def visualRegionForSelection(self, selection): region = QRegion() for span in selection: for row in range(span.top(), span.bottom() + 1): for col in range(span.left(), span.right() + 1): index = self.model().index(row, col, self.rootIndex()) region += self.visualRect(index) return region class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() fileMenu = QMenu("&File", self) openAction = fileMenu.addAction("&Open...") openAction.setShortcut("Ctrl+O") saveAction = fileMenu.addAction("&Save As...") saveAction.setShortcut("Ctrl+S") quitAction = fileMenu.addAction("E&xit") quitAction.setShortcut("Ctrl+Q") self.setupModel() self.setupViews() openAction.triggered.connect(self.openFile) saveAction.triggered.connect(self.saveFile) quitAction.triggered.connect(QApplication.instance().quit) self.menuBar().addMenu(fileMenu) self.statusBar() self.openFile(':/Charts/qtdata.cht') self.setWindowTitle("Chart") self.resize(870, 550) def setupModel(self): self.model = QStandardItemModel(8, 2, self) self.model.setHeaderData(0, Qt.Horizontal, "Label") self.model.setHeaderData(1, Qt.Horizontal, "Quantity") def setupViews(self): splitter = QSplitter() table = QTableView() self.pieChart = PieView() splitter.addWidget(table) splitter.addWidget(self.pieChart) splitter.setStretchFactor(0, 0) splitter.setStretchFactor(1, 1) table.setModel(self.model) self.pieChart.setModel(self.model) self.selectionModel = QItemSelectionModel(self.model) table.setSelectionModel(self.selectionModel) self.pieChart.setSelectionModel(self.selectionModel) table.horizontalHeader().setStretchLastSection(True) self.setCentralWidget(splitter) def openFile(self, path=None): if not path: path, _ = QFileDialog.getOpenFileName(self, "Choose a data file", '', '*.cht') if path: f = QFile(path) if f.open(QFile.ReadOnly | QFile.Text): stream = QTextStream(f) self.model.removeRows(0, self.model.rowCount(QModelIndex()), QModelIndex()) row = 0 line = stream.readLine() while line: self.model.insertRows(row, 1, QModelIndex()) pieces = line.split(',') self.model.setData(self.model.index(row, 0, QModelIndex()), pieces[0]) self.model.setData(self.model.index(row, 1, QModelIndex()), float(pieces[1])) self.model.setData(self.model.index(row, 0, QModelIndex()), QColor(pieces[2]), Qt.DecorationRole) row += 1 line = stream.readLine() f.close() self.statusBar().showMessage("Loaded %s" % path, 2000) def saveFile(self): fileName, _ = QFileDialog.getSaveFileName(self, "Save file as", '', '*.cht') if fileName: f = QFile(fileName) if f.open(QFile.WriteOnly | QFile.Text): for row in range(self.model.rowCount(QModelIndex())): pieces = [] pieces.append( self.model.data( self.model.index(row, 0, QModelIndex()), Qt.DisplayRole)) pieces.append( '%g' % self.model.data( self.model.index(row, 1, QModelIndex()), Qt.DisplayRole)) pieces.append( self.model.data( self.model.index(row, 0, QModelIndex()), Qt.DecorationRole).name()) f.write(b','.join([p.encode('utf-8') for p in pieces])) f.write(b'\n') f.close() self.statusBar().showMessage("Saved %s" % fileName, 2000) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/chart/chart.qrc0000644000076500000240000000015713245231431022245 0ustar philstaff00000000000000 qtdata.cht PyQt5_gpl-5.10.1/examples/itemviews/chart/chart_rc.py0000644000076500000240000000504613245231431022576 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 12 12:14:11 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x01\x90\ \x53\ \x63\x69\x65\x6e\x74\x69\x66\x69\x63\x20\x52\x65\x73\x65\x61\x72\ \x63\x68\x2c\x32\x31\x2c\x23\x39\x39\x65\x36\x30\x30\x0a\x45\x6e\ \x67\x69\x6e\x65\x65\x72\x69\x6e\x67\x20\x26\x20\x44\x65\x73\x69\ \x67\x6e\x2c\x31\x38\x2c\x23\x39\x39\x63\x63\x30\x30\x0a\x41\x75\ \x74\x6f\x6d\x6f\x74\x69\x76\x65\x2c\x31\x34\x2c\x23\x39\x39\x62\ \x33\x30\x30\x0a\x41\x65\x72\x6f\x73\x70\x61\x63\x65\x2c\x31\x33\ \x2c\x23\x39\x66\x39\x39\x31\x61\x0a\x41\x75\x74\x6f\x6d\x61\x74\ \x69\x6f\x6e\x20\x26\x20\x4d\x61\x63\x68\x69\x6e\x65\x20\x54\x6f\ \x6f\x6c\x73\x2c\x31\x33\x2c\x23\x61\x34\x38\x30\x33\x33\x0a\x4d\ \x65\x64\x69\x63\x61\x6c\x20\x26\x20\x42\x69\x6f\x69\x6e\x66\x6f\ \x72\x6d\x61\x74\x69\x63\x73\x2c\x31\x33\x2c\x23\x61\x39\x36\x36\ \x34\x64\x0a\x49\x6d\x61\x67\x69\x6e\x67\x20\x26\x20\x53\x70\x65\ \x63\x69\x61\x6c\x20\x45\x66\x66\x65\x63\x74\x73\x2c\x31\x32\x2c\ \x23\x61\x65\x34\x64\x36\x36\x0a\x44\x65\x66\x65\x6e\x73\x65\x2c\ \x31\x31\x2c\x23\x62\x33\x33\x33\x38\x30\x0a\x54\x65\x73\x74\x20\ \x26\x20\x4d\x65\x61\x73\x75\x72\x65\x6d\x65\x6e\x74\x20\x53\x79\ \x73\x74\x65\x6d\x73\x2c\x39\x2c\x23\x61\x36\x34\x30\x38\x36\x0a\ \x4f\x69\x6c\x20\x26\x20\x47\x61\x73\x2c\x39\x2c\x23\x39\x39\x34\ \x64\x38\x64\x0a\x45\x6e\x74\x65\x72\x74\x61\x69\x6e\x6d\x65\x6e\ \x74\x20\x26\x20\x42\x72\x6f\x61\x64\x63\x61\x73\x74\x69\x6e\x67\ \x2c\x37\x2c\x23\x38\x64\x35\x61\x39\x33\x0a\x46\x69\x6e\x61\x6e\ \x63\x69\x61\x6c\x2c\x36\x2c\x23\x38\x30\x36\x36\x39\x39\x0a\x43\ \x6f\x6e\x73\x75\x6d\x65\x72\x20\x45\x6c\x65\x63\x74\x72\x6f\x6e\ \x69\x63\x73\x2c\x34\x2c\x23\x38\x30\x37\x33\x61\x36\x0a\x4f\x74\ \x68\x65\x72\x2c\x33\x38\x2c\x23\x38\x30\x38\x30\x62\x33\x0a\ " qt_resource_name = b"\ \x00\x06\ \x04\x9e\x89\xb3\ \x00\x43\ \x00\x68\x00\x61\x00\x72\x00\x74\x00\x73\ \x00\x0a\ \x08\xaf\x5c\xb4\ \x00\x71\ \x00\x74\x00\x64\x00\x61\x00\x74\x00\x61\x00\x2e\x00\x63\x00\x68\x00\x74\ " qt_resource_struct = b"\ \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\x12\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() PyQt5_gpl-5.10.1/examples/itemviews/chart/mydata.cht0000644000076500000240000000020113245231431022402 0ustar philstaff00000000000000London,4,red Stockholm,5,pink Paris,2,lightgreen Rome,11,green Lisbon,9,blue Madrid,8,lightblue Berlin,6,magenta Vienna,7,purple PyQt5_gpl-5.10.1/examples/itemviews/chart/qtdata.cht0000644000076500000240000000062013245231431022406 0ustar philstaff00000000000000Scientific Research,21,#99e600 Engineering & Design,18,#99cc00 Automotive,14,#99b300 Aerospace,13,#9f991a Automation & Machine Tools,13,#a48033 Medical & Bioinformatics,13,#a9664d Imaging & Special Effects,12,#ae4d66 Defense,11,#b33380 Test & Measurement Systems,9,#a64086 Oil & Gas,9,#994d8d Entertainment & Broadcasting,7,#8d5a93 Financial,6,#806699 Consumer Electronics,4,#8073a6 Other,38,#8080b3 PyQt5_gpl-5.10.1/examples/itemviews/coloreditorfactory.py0000755000076500000240000001066313245231431023631 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import pyqtProperty, Qt, QVariant from PyQt5.QtGui import QColor from PyQt5.QtWidgets import (QApplication, QComboBox, QGridLayout, QItemEditorCreatorBase, QItemEditorFactory, QTableWidget, QTableWidgetItem, QWidget) class ColorListEditor(QComboBox): def __init__(self, widget=None): super(ColorListEditor, self).__init__(widget) self.populateList() def getColor(self): color = self.itemData(self.currentIndex(), Qt.DecorationRole) return color def setColor(self, color): self.setCurrentIndex(self.findData(color, Qt.DecorationRole)) color = pyqtProperty(QColor, getColor, setColor, user=True) def populateList(self): for i, colorName in enumerate(QColor.colorNames()): color = QColor(colorName) self.insertItem(i, colorName) self.setItemData(i, color, Qt.DecorationRole) class ColorListItemEditorCreator(QItemEditorCreatorBase): def createWidget(self, parent): return ColorListEditor(parent) class Window(QWidget): def __init__(self, parent=None): super(Window, self).__init__(parent) factory = QItemEditorFactory() factory.registerEditor(QVariant.Color, ColorListItemEditorCreator()) QItemEditorFactory.setDefaultFactory(factory) self.createGUI() def createGUI(self): tableData = [ ("Alice", QColor('aliceblue')), ("Neptun", QColor('aquamarine')), ("Ferdinand", QColor('springgreen')) ] table = QTableWidget(3, 2) table.setHorizontalHeaderLabels(["Name", "Hair Color"]) table.verticalHeader().setVisible(False) table.resize(150, 50) for i, (name, color) in enumerate(tableData): nameItem = QTableWidgetItem(name) colorItem = QTableWidgetItem() colorItem.setData(Qt.DisplayRole, color) table.setItem(i, 0, nameItem) table.setItem(i, 1, colorItem) table.resizeColumnToContents(0) table.horizontalHeader().setStretchLastSection(True) layout = QGridLayout() layout.addWidget(table, 0, 0) self.setLayout(layout) self.setWindowTitle("Color Editor Factory") if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/combowidgetmapper.py0000755000076500000240000001231213245231431023415 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2017 Riverbank Computing Limited ## Copyright (C) 2017 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QStringListModel from PyQt5.QtGui import QStandardItem, QStandardItemModel from PyQt5.QtWidgets import (QApplication, QComboBox, QDataWidgetMapper, QGridLayout, QLabel, QLineEdit, QPushButton, QTextEdit, QWidget) class Window(QWidget): def __init__(self, parent=None): super(Window, self).__init__(parent) # Set up the model. self.setupModel() # Set up the widgets. nameLabel = QLabel("Na&me:") nameEdit = QLineEdit() addressLabel = QLabel("&Address:") addressEdit = QTextEdit() typeLabel = QLabel("&Type:") typeComboBox = QComboBox() self.nextButton = QPushButton("&Next") self.previousButton = QPushButton("&Previous") nameLabel.setBuddy(nameEdit) addressLabel.setBuddy(addressEdit) typeLabel.setBuddy(typeComboBox) typeComboBox.setModel(self.typeModel) # Set up the mapper. self.mapper = QDataWidgetMapper(self) self.mapper.setModel(self.model) self.mapper.addMapping(nameEdit, 0) self.mapper.addMapping(addressEdit, 1) self.mapper.addMapping(typeComboBox, 2, b'currentIndex') # Set up connections and layouts. self.previousButton.clicked.connect(self.mapper.toPrevious) self.nextButton.clicked.connect(self.mapper.toNext) self.mapper.currentIndexChanged.connect(self.updateButtons) layout = QGridLayout() layout.addWidget(nameLabel, 0, 0, 1, 1) layout.addWidget(nameEdit, 0, 1, 1, 1) layout.addWidget(self.previousButton, 0, 2, 1, 1) layout.addWidget(addressLabel, 1, 0, 1, 1) layout.addWidget(addressEdit, 1, 1, 2, 1) layout.addWidget(self.nextButton, 1, 2, 1, 1) layout.addWidget(typeLabel, 3, 0, 1, 1) layout.addWidget(typeComboBox, 3, 1, 1, 1) self.setLayout(layout) self.setWindowTitle("Delegate Widget Mapper") self.mapper.toFirst() def setupModel(self): items = ("Home", "Work", "Other") self.typeModel = QStringListModel(items, self) self.model = QStandardItemModel(5, 3, self) names = ("Alice", "Bob", "Carol", "Donald", "Emma") addresses = ("123 Main Street
    Market Town
    ", "PO Box 32
    Mail Handling Service" "
    Service City
    ", "The Lighthouse
    Remote Island
    ", "47338 Park Avenue
    Big City
    ", "Research Station
    Base Camp
    Big Mountain
    ") types = ("0", "1", "2", "0", "2") for row, name in enumerate(names): self.model.setItem(row, 0, QStandardItem(name)) self.model.setItem(row, 1, QStandardItem(addresses[row])) self.model.setItem(row, 2, QStandardItem(types[row])) def updateButtons(self, row): self.previousButton.setEnabled(row > 0) self.nextButton.setEnabled(row < self.model.rowCount() - 1) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/customsortfiltermodel.py0000755000076500000240000002374213245231431024367 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (QDate, QDateTime, QRegExp, QSortFilterProxyModel, Qt, QTime) from PyQt5.QtGui import QStandardItemModel from PyQt5.QtWidgets import (QApplication, QCheckBox, QComboBox, QDateEdit, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit, QTreeView, QVBoxLayout, QWidget) class MySortFilterProxyModel(QSortFilterProxyModel): def __init__(self, parent=None): super(MySortFilterProxyModel, self).__init__(parent) self.minDate = QDate() self.maxDate = QDate() def setFilterMinimumDate(self, date): self.minDate = date self.invalidateFilter() def filterMinimumDate(self): return self.minDate def setFilterMaximumDate(self, date): self.maxDate = date self.invalidateFilter() def filterMaximumDate(self): return self.maxDate def filterAcceptsRow(self, sourceRow, sourceParent): index0 = self.sourceModel().index(sourceRow, 0, sourceParent) index1 = self.sourceModel().index(sourceRow, 1, sourceParent) index2 = self.sourceModel().index(sourceRow, 2, sourceParent) return ( (self.filterRegExp().indexIn(self.sourceModel().data(index0)) >= 0 or self.filterRegExp().indexIn(self.sourceModel().data(index1)) >= 0) and self.dateInRange(self.sourceModel().data(index2))) def lessThan(self, left, right): leftData = self.sourceModel().data(left) rightData = self.sourceModel().data(right) if not isinstance(leftData, QDate): emailPattern = QRegExp("([\\w\\.]*@[\\w\\.]*)") if left.column() == 1 and emailPattern.indexIn(leftData) != -1: leftData = emailPattern.cap(1) if right.column() == 1 and emailPattern.indexIn(rightData) != -1: rightData = emailPattern.cap(1) return leftData < rightData def dateInRange(self, date): if isinstance(date, QDateTime): date = date.date() return ( (not self.minDate.isValid() or date >= self.minDate) and (not self.maxDate.isValid() or date <= self.maxDate)) class Window(QWidget): def __init__(self): super(Window, self).__init__() self.proxyModel = MySortFilterProxyModel(self) self.proxyModel.setDynamicSortFilter(True) self.sourceView = QTreeView() self.sourceView.setRootIsDecorated(False) self.sourceView.setAlternatingRowColors(True) sourceLayout = QHBoxLayout() sourceLayout.addWidget(self.sourceView) sourceGroupBox = QGroupBox("Original Model") sourceGroupBox.setLayout(sourceLayout) self.filterCaseSensitivityCheckBox = QCheckBox("Case sensitive filter") self.filterCaseSensitivityCheckBox.setChecked(True) self.filterPatternLineEdit = QLineEdit() self.filterPatternLineEdit.setText("Grace|Sports") filterPatternLabel = QLabel("&Filter pattern:") filterPatternLabel.setBuddy(self.filterPatternLineEdit) self.filterSyntaxComboBox = QComboBox() self.filterSyntaxComboBox.addItem("Regular expression", QRegExp.RegExp) self.filterSyntaxComboBox.addItem("Wildcard", QRegExp.Wildcard) self.filterSyntaxComboBox.addItem("Fixed string", QRegExp.FixedString) self.fromDateEdit = QDateEdit() self.fromDateEdit.setDate(QDate(2006, 12, 22)) self.fromDateEdit.setCalendarPopup(True) fromLabel = QLabel("F&rom:") fromLabel.setBuddy(self.fromDateEdit) self.toDateEdit = QDateEdit() self.toDateEdit.setDate(QDate(2007, 1, 5)) self.toDateEdit.setCalendarPopup(True) toLabel = QLabel("&To:") toLabel.setBuddy(self.toDateEdit) self.filterPatternLineEdit.textChanged.connect(self.textFilterChanged) self.filterSyntaxComboBox.currentIndexChanged.connect(self.textFilterChanged) self.filterCaseSensitivityCheckBox.toggled.connect(self.textFilterChanged) self.fromDateEdit.dateChanged.connect(self.dateFilterChanged) self.toDateEdit.dateChanged.connect(self.dateFilterChanged) self.proxyView = QTreeView() self.proxyView.setRootIsDecorated(False) self.proxyView.setAlternatingRowColors(True) self.proxyView.setModel(self.proxyModel) self.proxyView.setSortingEnabled(True) self.proxyView.sortByColumn(1, Qt.AscendingOrder) self.textFilterChanged() self.dateFilterChanged() proxyLayout = QGridLayout() proxyLayout.addWidget(self.proxyView, 0, 0, 1, 3) proxyLayout.addWidget(filterPatternLabel, 1, 0) proxyLayout.addWidget(self.filterPatternLineEdit, 1, 1) proxyLayout.addWidget(self.filterSyntaxComboBox, 1, 2) proxyLayout.addWidget(self.filterCaseSensitivityCheckBox, 2, 0, 1, 3) proxyLayout.addWidget(fromLabel, 3, 0) proxyLayout.addWidget(self.fromDateEdit, 3, 1, 1, 2) proxyLayout.addWidget(toLabel, 4, 0) proxyLayout.addWidget(self.toDateEdit, 4, 1, 1, 2) proxyGroupBox = QGroupBox("Sorted/Filtered Model") proxyGroupBox.setLayout(proxyLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(sourceGroupBox) mainLayout.addWidget(proxyGroupBox) self.setLayout(mainLayout) self.setWindowTitle("Custom Sort/Filter Model") self.resize(500, 450) def setSourceModel(self, model): self.proxyModel.setSourceModel(model) self.sourceView.setModel(model) def textFilterChanged(self): syntax = QRegExp.PatternSyntax( self.filterSyntaxComboBox.itemData( self.filterSyntaxComboBox.currentIndex())) caseSensitivity = ( self.filterCaseSensitivityCheckBox.isChecked() and Qt.CaseSensitive or Qt.CaseInsensitive) regExp = QRegExp(self.filterPatternLineEdit.text(), caseSensitivity, syntax) self.proxyModel.setFilterRegExp(regExp) def dateFilterChanged(self): self.proxyModel.setFilterMinimumDate(self.fromDateEdit.date()) self.proxyModel.setFilterMaximumDate(self.toDateEdit.date()) def addMail(model, subject, sender, date): model.insertRow(0) model.setData(model.index(0, 0), subject) model.setData(model.index(0, 1), sender) model.setData(model.index(0, 2), date) def createMailModel(parent): model = QStandardItemModel(0, 3, parent) model.setHeaderData(0, Qt.Horizontal, "Subject") model.setHeaderData(1, Qt.Horizontal, "Sender") model.setHeaderData(2, Qt.Horizontal, "Date") addMail(model, "Happy New Year!", "Grace K. ", QDateTime(QDate(2006, 12, 31), QTime(17, 3))) addMail(model, "Radically new concept", "Grace K. ", QDateTime(QDate(2006, 12, 22), QTime(9, 44))) addMail(model, "Accounts", "pascale@nospam.com", QDateTime(QDate(2006, 12, 31), QTime(12, 50))) addMail(model, "Expenses", "Joe Bloggs ", QDateTime(QDate(2006, 12, 25), QTime(11, 39))) addMail(model, "Re: Expenses", "Andy ", QDateTime(QDate(2007, 1, 2), QTime(16, 5))) addMail(model, "Re: Accounts", "Joe Bloggs ", QDateTime(QDate(2007, 1, 3), QTime(14, 18))) addMail(model, "Re: Accounts", "Andy ", QDateTime(QDate(2007, 1, 3), QTime(14, 26))) addMail(model, "Sports", "Linda Smith ", QDateTime(QDate(2007, 1, 5), QTime(11, 33))) addMail(model, "AW: Sports", "Rolf Newschweinstein ", QDateTime(QDate(2007, 1, 5), QTime(12, 0))) addMail(model, "RE: Sports", "Petra Schmidt ", QDateTime(QDate(2007, 1, 5), QTime(12, 1))) return model if __name__ == "__main__": import sys app = QApplication(sys.argv) window = Window() window.setSourceModel(createMailModel(window)) window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/dirview.py0000755000076500000240000000706113245231431021363 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2017 Riverbank Computing Limited. ## Copyright (C) 2017 Hans-Peter Jansen ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import (QCommandLineOption, QCommandLineParser, QCoreApplication, QDir, QT_VERSION_STR) from PyQt5.QtWidgets import (QApplication, QFileIconProvider, QFileSystemModel, QTreeView) app = QApplication(sys.argv) QCoreApplication.setApplicationVersion(QT_VERSION_STR) parser = QCommandLineParser() parser.setApplicationDescription("Qt Dir View Example") parser.addHelpOption() parser.addVersionOption() dontUseCustomDirectoryIconsOption = QCommandLineOption('c', "Set QFileIconProvider.DontUseCustomDirectoryIcons") parser.addOption(dontUseCustomDirectoryIconsOption) parser.addPositionalArgument('directory', "The directory to start in.") parser.process(app) try: rootPath = parser.positionalArguments().pop(0) except IndexError: rootPath = None model = QFileSystemModel() model.setRootPath('') if parser.isSet(dontUseCustomDirectoryIconsOption): model.iconProvider().setOptions( QFileIconProvider.DontUseCustomDirectoryIcons) tree = QTreeView() tree.setModel(model) if rootPath is not None: rootIndex = model.index(QDir.cleanPath(rootPath)) if rootIndex.isValid(): tree.setRootIndex(rootIndex) # Demonstrating look and feel features. tree.setAnimated(False) tree.setIndentation(20) tree.setSortingEnabled(True) availableSize = QApplication.desktop().availableGeometry(tree).size() tree.resize(availableSize / 2) tree.setColumnWidth(0, tree.width() / 3) tree.setWindowTitle("Dir View") tree.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/editabletreemodel/0000755000076500000240000000000013245231431023003 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/itemviews/editabletreemodel/default.txt0000644000076500000240000000367113245231431025177 0ustar philstaff00000000000000Getting Started How to familiarize yourself with Qt Designer Launching Designer Running the Qt Designer application The User Interface How to interact with Qt Designer Designing a Component Creating a GUI for your application Creating a Dialog How to create a dialog Composing the Dialog Putting widgets into the dialog example Creating a Layout Arranging widgets on a form Signal and Slot Connections Making widget communicate with each other Using a Component in Your Application Generating code from forms The Direct Approach Using a form without any adjustments The Single Inheritance Approach Subclassing a form's base class The Multiple Inheritance Approach Subclassing the form itself Automatic Connections Connecting widgets using a naming scheme A Dialog Without Auto-Connect How to connect widgets without a naming scheme A Dialog With Auto-Connect Using automatic connections Form Editing Mode How to edit a form in Qt Designer Managing Forms Loading and saving forms Editing a Form Basic editing techniques The Property Editor Changing widget properties The Object Inspector Examining the hierarchy of objects on a form Layouts Objects that arrange widgets on a form Applying and Breaking Layouts Managing widgets in layouts Horizontal and Vertical Layouts Standard row and column layouts The Grid Layout Arranging widgets in a matrix Previewing Forms Checking that the design works Using Containers How to group widgets together General Features Common container features Frames QFrame Group Boxes QGroupBox Stacked Widgets QStackedWidget Tab Widgets QTabWidget Toolbox Widgets QToolBox Connection Editing Mode Connecting widgets together with signals and slots Connecting Objects Making connections in Qt Designer Editing Connections Changing existing connections PyQt5_gpl-5.10.1/examples/itemviews/editabletreemodel/editabletreemodel.py0000755000076500000240000003312013245231431027031 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2017 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (QAbstractItemModel, QFile, QIODevice, QItemSelectionModel, QModelIndex, Qt) from PyQt5.QtWidgets import QApplication, QMainWindow import editabletreemodel_rc from ui_mainwindow import Ui_MainWindow class TreeItem(object): def __init__(self, data, parent=None): self.parentItem = parent self.itemData = data self.childItems = [] def child(self, row): return self.childItems[row] def childCount(self): return len(self.childItems) def childNumber(self): if self.parentItem != None: return self.parentItem.childItems.index(self) return 0 def columnCount(self): return len(self.itemData) def data(self, column): return self.itemData[column] def insertChildren(self, position, count, columns): if position < 0 or position > len(self.childItems): return False for row in range(count): data = [None for v in range(columns)] item = TreeItem(data, self) self.childItems.insert(position, item) return True def insertColumns(self, position, columns): if position < 0 or position > len(self.itemData): return False for column in range(columns): self.itemData.insert(position, None) for child in self.childItems: child.insertColumns(position, columns) return True def parent(self): return self.parentItem def removeChildren(self, position, count): if position < 0 or position + count > len(self.childItems): return False for row in range(count): self.childItems.pop(position) return True def removeColumns(self, position, columns): if position < 0 or position + columns > len(self.itemData): return False for column in range(columns): self.itemData.pop(position) for child in self.childItems: child.removeColumns(position, columns) return True def setData(self, column, value): if column < 0 or column >= len(self.itemData): return False self.itemData[column] = value return True class TreeModel(QAbstractItemModel): def __init__(self, headers, data, parent=None): super(TreeModel, self).__init__(parent) rootData = [header for header in headers] self.rootItem = TreeItem(rootData) self.setupModelData(data.split("\n"), self.rootItem) def columnCount(self, parent=QModelIndex()): return self.rootItem.columnCount() def data(self, index, role): if not index.isValid(): return None if role != Qt.DisplayRole and role != Qt.EditRole: return None item = self.getItem(index) return item.data(index.column()) def flags(self, index): if not index.isValid(): return 0 return Qt.ItemIsEditable | super(TreeModel, self).flags(index) def getItem(self, index): if index.isValid(): item = index.internalPointer() if item: return item return self.rootItem def headerData(self, section, orientation, role=Qt.DisplayRole): if orientation == Qt.Horizontal and role == Qt.DisplayRole: return self.rootItem.data(section) return None def index(self, row, column, parent=QModelIndex()): if parent.isValid() and parent.column() != 0: return QModelIndex() parentItem = self.getItem(parent) childItem = parentItem.child(row) if childItem: return self.createIndex(row, column, childItem) else: return QModelIndex() def insertColumns(self, position, columns, parent=QModelIndex()): self.beginInsertColumns(parent, position, position + columns - 1) success = self.rootItem.insertColumns(position, columns) self.endInsertColumns() return success def insertRows(self, position, rows, parent=QModelIndex()): parentItem = self.getItem(parent) self.beginInsertRows(parent, position, position + rows - 1) success = parentItem.insertChildren(position, rows, self.rootItem.columnCount()) self.endInsertRows() return success def parent(self, index): if not index.isValid(): return QModelIndex() childItem = self.getItem(index) parentItem = childItem.parent() if parentItem == self.rootItem: return QModelIndex() return self.createIndex(parentItem.childNumber(), 0, parentItem) def removeColumns(self, position, columns, parent=QModelIndex()): self.beginRemoveColumns(parent, position, position + columns - 1) success = self.rootItem.removeColumns(position, columns) self.endRemoveColumns() if self.rootItem.columnCount() == 0: self.removeRows(0, self.rowCount()) return success def removeRows(self, position, rows, parent=QModelIndex()): parentItem = self.getItem(parent) self.beginRemoveRows(parent, position, position + rows - 1) success = parentItem.removeChildren(position, rows) self.endRemoveRows() return success def rowCount(self, parent=QModelIndex()): parentItem = self.getItem(parent) return parentItem.childCount() def setData(self, index, value, role=Qt.EditRole): if role != Qt.EditRole: return False item = self.getItem(index) result = item.setData(index.column(), value) if result: self.dataChanged.emit(index, index) return result def setHeaderData(self, section, orientation, value, role=Qt.EditRole): if role != Qt.EditRole or orientation != Qt.Horizontal: return False result = self.rootItem.setData(section, value) if result: self.headerDataChanged.emit(orientation, section, section) return result def setupModelData(self, lines, parent): parents = [parent] indentations = [0] number = 0 while number < len(lines): position = 0 while position < len(lines[number]): if lines[number][position] != " ": break position += 1 lineData = lines[number][position:].trimmed() if lineData: # Read the column data from the rest of the line. columnData = [s for s in lineData.split('\t') if s] if position > indentations[-1]: # The last child of the current parent is now the new # parent unless the current parent has no children. if parents[-1].childCount() > 0: parents.append(parents[-1].child(parents[-1].childCount() - 1)) indentations.append(position) else: while position < indentations[-1] and len(parents) > 0: parents.pop() indentations.pop() # Append a new item to the current parent's list of children. parent = parents[-1] parent.insertChildren(parent.childCount(), 1, self.rootItem.columnCount()) for column in range(len(columnData)): parent.child(parent.childCount() -1).setData(column, columnData[column]) number += 1 class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setupUi(self) headers = ("Title", "Description") file = QFile(':/default.txt') file.open(QIODevice.ReadOnly) model = TreeModel(headers, file.readAll()) file.close() self.view.setModel(model) for column in range(model.columnCount()): self.view.resizeColumnToContents(column) self.exitAction.triggered.connect(QApplication.instance().quit) self.view.selectionModel().selectionChanged.connect(self.updateActions) self.actionsMenu.aboutToShow.connect(self.updateActions) self.insertRowAction.triggered.connect(self.insertRow) self.insertColumnAction.triggered.connect(self.insertColumn) self.removeRowAction.triggered.connect(self.removeRow) self.removeColumnAction.triggered.connect(self.removeColumn) self.insertChildAction.triggered.connect(self.insertChild) self.updateActions() def insertChild(self): index = self.view.selectionModel().currentIndex() model = self.view.model() if model.columnCount(index) == 0: if not model.insertColumn(0, index): return if not model.insertRow(0, index): return for column in range(model.columnCount(index)): child = model.index(0, column, index) model.setData(child, "[No data]", Qt.EditRole) if model.headerData(column, Qt.Horizontal) is None: model.setHeaderData(column, Qt.Horizontal, "[No header]", Qt.EditRole) self.view.selectionModel().setCurrentIndex(model.index(0, 0, index), QItemSelectionModel.ClearAndSelect) self.updateActions() def insertColumn(self): model = self.view.model() column = self.view.selectionModel().currentIndex().column() changed = model.insertColumn(column + 1) if changed: model.setHeaderData(column + 1, Qt.Horizontal, "[No header]", Qt.EditRole) self.updateActions() return changed def insertRow(self): index = self.view.selectionModel().currentIndex() model = self.view.model() if not model.insertRow(index.row()+1, index.parent()): return self.updateActions() for column in range(model.columnCount(index.parent())): child = model.index(index.row()+1, column, index.parent()) model.setData(child, "[No data]", Qt.EditRole) def removeColumn(self): model = self.view.model() column = self.view.selectionModel().currentIndex().column() changed = model.removeColumn(column) if changed: self.updateActions() return changed def removeRow(self): index = self.view.selectionModel().currentIndex() model = self.view.model() if (model.removeRow(index.row(), index.parent())): self.updateActions() def updateActions(self): hasSelection = not self.view.selectionModel().selection().isEmpty() self.removeRowAction.setEnabled(hasSelection) self.removeColumnAction.setEnabled(hasSelection) hasCurrent = self.view.selectionModel().currentIndex().isValid() self.insertRowAction.setEnabled(hasCurrent) self.insertColumnAction.setEnabled(hasCurrent) if hasCurrent: self.view.closePersistentEditor(self.view.selectionModel().currentIndex()) row = self.view.selectionModel().currentIndex().row() column = self.view.selectionModel().currentIndex().column() if self.view.selectionModel().currentIndex().parent().isValid(): self.statusBar().showMessage("Position: (%d,%d)" % (row, column)) else: self.statusBar().showMessage("Position: (%d,%d) in top level" % (row, column)) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/editabletreemodel/editabletreemodel.qrc0000644000076500000240000000013313245231431027161 0ustar philstaff00000000000000 default.txt PyQt5_gpl-5.10.1/examples/itemviews/editabletreemodel/editabletreemodel_rc.py0000644000076500000240000002141613245231431027517 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 12 13:00:44 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x07\xb9\ \x47\ \x65\x74\x74\x69\x6e\x67\x20\x53\x74\x61\x72\x74\x65\x64\x09\x09\ \x09\x09\x48\x6f\x77\x20\x74\x6f\x20\x66\x61\x6d\x69\x6c\x69\x61\ \x72\x69\x7a\x65\x20\x79\x6f\x75\x72\x73\x65\x6c\x66\x20\x77\x69\ \x74\x68\x20\x51\x74\x20\x44\x65\x73\x69\x67\x6e\x65\x72\x0a\x20\ \x20\x20\x20\x4c\x61\x75\x6e\x63\x68\x69\x6e\x67\x20\x44\x65\x73\ \x69\x67\x6e\x65\x72\x09\x09\x09\x52\x75\x6e\x6e\x69\x6e\x67\x20\ \x74\x68\x65\x20\x51\x74\x20\x44\x65\x73\x69\x67\x6e\x65\x72\x20\ \x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x0a\x20\x20\x20\x20\ \x54\x68\x65\x20\x55\x73\x65\x72\x20\x49\x6e\x74\x65\x72\x66\x61\ \x63\x65\x09\x09\x09\x48\x6f\x77\x20\x74\x6f\x20\x69\x6e\x74\x65\ \x72\x61\x63\x74\x20\x77\x69\x74\x68\x20\x51\x74\x20\x44\x65\x73\ \x69\x67\x6e\x65\x72\x0a\x0a\x44\x65\x73\x69\x67\x6e\x69\x6e\x67\ \x20\x61\x20\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x09\x09\x09\x43\ \x72\x65\x61\x74\x69\x6e\x67\x20\x61\x20\x47\x55\x49\x20\x66\x6f\ \x72\x20\x79\x6f\x75\x72\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\ \x6f\x6e\x0a\x20\x20\x20\x20\x43\x72\x65\x61\x74\x69\x6e\x67\x20\ \x61\x20\x44\x69\x61\x6c\x6f\x67\x09\x09\x09\x48\x6f\x77\x20\x74\ \x6f\x20\x63\x72\x65\x61\x74\x65\x20\x61\x20\x64\x69\x61\x6c\x6f\ \x67\x0a\x20\x20\x20\x20\x43\x6f\x6d\x70\x6f\x73\x69\x6e\x67\x20\ \x74\x68\x65\x20\x44\x69\x61\x6c\x6f\x67\x09\x09\x50\x75\x74\x74\ \x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x73\x20\x69\x6e\x74\x6f\ \x20\x74\x68\x65\x20\x64\x69\x61\x6c\x6f\x67\x20\x65\x78\x61\x6d\ \x70\x6c\x65\x0a\x20\x20\x20\x20\x43\x72\x65\x61\x74\x69\x6e\x67\ \x20\x61\x20\x4c\x61\x79\x6f\x75\x74\x09\x09\x09\x41\x72\x72\x61\ \x6e\x67\x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x73\x20\x6f\x6e\ \x20\x61\x20\x66\x6f\x72\x6d\x0a\x20\x20\x20\x20\x53\x69\x67\x6e\ \x61\x6c\x20\x61\x6e\x64\x20\x53\x6c\x6f\x74\x20\x43\x6f\x6e\x6e\ \x65\x63\x74\x69\x6f\x6e\x73\x09\x09\x4d\x61\x6b\x69\x6e\x67\x20\ \x77\x69\x64\x67\x65\x74\x20\x63\x6f\x6d\x6d\x75\x6e\x69\x63\x61\ \x74\x65\x20\x77\x69\x74\x68\x20\x65\x61\x63\x68\x20\x6f\x74\x68\ \x65\x72\x0a\x0a\x55\x73\x69\x6e\x67\x20\x61\x20\x43\x6f\x6d\x70\ \x6f\x6e\x65\x6e\x74\x20\x69\x6e\x20\x59\x6f\x75\x72\x20\x41\x70\ \x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x09\x47\x65\x6e\x65\x72\x61\ \x74\x69\x6e\x67\x20\x63\x6f\x64\x65\x20\x66\x72\x6f\x6d\x20\x66\ \x6f\x72\x6d\x73\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x44\x69\x72\ \x65\x63\x74\x20\x41\x70\x70\x72\x6f\x61\x63\x68\x09\x09\x09\x55\ \x73\x69\x6e\x67\x20\x61\x20\x66\x6f\x72\x6d\x20\x77\x69\x74\x68\ \x6f\x75\x74\x20\x61\x6e\x79\x20\x61\x64\x6a\x75\x73\x74\x6d\x65\ \x6e\x74\x73\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x53\x69\x6e\x67\ \x6c\x65\x20\x49\x6e\x68\x65\x72\x69\x74\x61\x6e\x63\x65\x20\x41\ \x70\x70\x72\x6f\x61\x63\x68\x09\x53\x75\x62\x63\x6c\x61\x73\x73\ \x69\x6e\x67\x20\x61\x20\x66\x6f\x72\x6d\x27\x73\x20\x62\x61\x73\ \x65\x20\x63\x6c\x61\x73\x73\x0a\x20\x20\x20\x20\x54\x68\x65\x20\ \x4d\x75\x6c\x74\x69\x70\x6c\x65\x20\x49\x6e\x68\x65\x72\x69\x74\ \x61\x6e\x63\x65\x20\x41\x70\x70\x72\x6f\x61\x63\x68\x09\x53\x75\ \x62\x63\x6c\x61\x73\x73\x69\x6e\x67\x20\x74\x68\x65\x20\x66\x6f\ \x72\x6d\x20\x69\x74\x73\x65\x6c\x66\x0a\x20\x20\x20\x20\x41\x75\ \x74\x6f\x6d\x61\x74\x69\x63\x20\x43\x6f\x6e\x6e\x65\x63\x74\x69\ \x6f\x6e\x73\x09\x09\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6e\x67\x20\ \x77\x69\x64\x67\x65\x74\x73\x20\x75\x73\x69\x6e\x67\x20\x61\x20\ \x6e\x61\x6d\x69\x6e\x67\x20\x73\x63\x68\x65\x6d\x65\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x41\x20\x44\x69\x61\x6c\x6f\x67\x20\x57\ \x69\x74\x68\x6f\x75\x74\x20\x41\x75\x74\x6f\x2d\x43\x6f\x6e\x6e\ \x65\x63\x74\x09\x48\x6f\x77\x20\x74\x6f\x20\x63\x6f\x6e\x6e\x65\ \x63\x74\x20\x77\x69\x64\x67\x65\x74\x73\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x61\x20\x6e\x61\x6d\x69\x6e\x67\x20\x73\x63\x68\x65\ \x6d\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x41\x20\x44\x69\x61\ \x6c\x6f\x67\x20\x57\x69\x74\x68\x20\x41\x75\x74\x6f\x2d\x43\x6f\ \x6e\x6e\x65\x63\x74\x09\x55\x73\x69\x6e\x67\x20\x61\x75\x74\x6f\ \x6d\x61\x74\x69\x63\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\ \x73\x0a\x0a\x46\x6f\x72\x6d\x20\x45\x64\x69\x74\x69\x6e\x67\x20\ \x4d\x6f\x64\x65\x09\x09\x09\x48\x6f\x77\x20\x74\x6f\x20\x65\x64\ \x69\x74\x20\x61\x20\x66\x6f\x72\x6d\x20\x69\x6e\x20\x51\x74\x20\ \x44\x65\x73\x69\x67\x6e\x65\x72\x0a\x20\x20\x20\x20\x4d\x61\x6e\ \x61\x67\x69\x6e\x67\x20\x46\x6f\x72\x6d\x73\x09\x09\x09\x4c\x6f\ \x61\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x73\x61\x76\x69\x6e\x67\ \x20\x66\x6f\x72\x6d\x73\x0a\x20\x20\x20\x20\x45\x64\x69\x74\x69\ \x6e\x67\x20\x61\x20\x46\x6f\x72\x6d\x09\x09\x09\x42\x61\x73\x69\ \x63\x20\x65\x64\x69\x74\x69\x6e\x67\x20\x74\x65\x63\x68\x6e\x69\ \x71\x75\x65\x73\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x50\x72\x6f\ \x70\x65\x72\x74\x79\x20\x45\x64\x69\x74\x6f\x72\x09\x09\x09\x43\ \x68\x61\x6e\x67\x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x20\x70\ \x72\x6f\x70\x65\x72\x74\x69\x65\x73\x0a\x20\x20\x20\x20\x54\x68\ \x65\x20\x4f\x62\x6a\x65\x63\x74\x20\x49\x6e\x73\x70\x65\x63\x74\ \x6f\x72\x09\x09\x45\x78\x61\x6d\x69\x6e\x69\x6e\x67\x20\x74\x68\ \x65\x20\x68\x69\x65\x72\x61\x72\x63\x68\x79\x20\x6f\x66\x20\x6f\ \x62\x6a\x65\x63\x74\x73\x20\x6f\x6e\x20\x61\x20\x66\x6f\x72\x6d\ \x0a\x20\x20\x20\x20\x4c\x61\x79\x6f\x75\x74\x73\x09\x09\x09\x09\ \x4f\x62\x6a\x65\x63\x74\x73\x20\x74\x68\x61\x74\x20\x61\x72\x72\ \x61\x6e\x67\x65\x20\x77\x69\x64\x67\x65\x74\x73\x20\x6f\x6e\x20\ \x61\x20\x66\x6f\x72\x6d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x41\ \x70\x70\x6c\x79\x69\x6e\x67\x20\x61\x6e\x64\x20\x42\x72\x65\x61\ \x6b\x69\x6e\x67\x20\x4c\x61\x79\x6f\x75\x74\x73\x09\x4d\x61\x6e\ \x61\x67\x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x73\x20\x69\x6e\ \x20\x6c\x61\x79\x6f\x75\x74\x73\x20\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x48\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x20\x61\x6e\x64\ \x20\x56\x65\x72\x74\x69\x63\x61\x6c\x20\x4c\x61\x79\x6f\x75\x74\ \x73\x09\x53\x74\x61\x6e\x64\x61\x72\x64\x20\x72\x6f\x77\x20\x61\ \x6e\x64\x20\x63\x6f\x6c\x75\x6d\x6e\x20\x6c\x61\x79\x6f\x75\x74\ \x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x47\x72\ \x69\x64\x20\x4c\x61\x79\x6f\x75\x74\x09\x09\x09\x41\x72\x72\x61\ \x6e\x67\x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x73\x20\x69\x6e\ \x20\x61\x20\x6d\x61\x74\x72\x69\x78\x0a\x20\x20\x20\x20\x50\x72\ \x65\x76\x69\x65\x77\x69\x6e\x67\x20\x46\x6f\x72\x6d\x73\x09\x09\ \x09\x43\x68\x65\x63\x6b\x69\x6e\x67\x20\x74\x68\x61\x74\x20\x74\ \x68\x65\x20\x64\x65\x73\x69\x67\x6e\x20\x77\x6f\x72\x6b\x73\x0a\ \x0a\x55\x73\x69\x6e\x67\x20\x43\x6f\x6e\x74\x61\x69\x6e\x65\x72\ \x73\x09\x09\x09\x48\x6f\x77\x20\x74\x6f\x20\x67\x72\x6f\x75\x70\ \x20\x77\x69\x64\x67\x65\x74\x73\x20\x74\x6f\x67\x65\x74\x68\x65\ \x72\x0a\x20\x20\x20\x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x46\x65\ \x61\x74\x75\x72\x65\x73\x09\x09\x09\x43\x6f\x6d\x6d\x6f\x6e\x20\ \x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x20\x66\x65\x61\x74\x75\x72\ \x65\x73\x0a\x20\x20\x20\x20\x46\x72\x61\x6d\x65\x73\x09\x09\x09\ \x09\x51\x46\x72\x61\x6d\x65\x0a\x20\x20\x20\x20\x47\x72\x6f\x75\ \x70\x20\x42\x6f\x78\x65\x73\x09\x09\x09\x09\x51\x47\x72\x6f\x75\ \x70\x42\x6f\x78\x0a\x20\x20\x20\x20\x53\x74\x61\x63\x6b\x65\x64\ \x20\x57\x69\x64\x67\x65\x74\x73\x09\x09\x09\x51\x53\x74\x61\x63\ \x6b\x65\x64\x57\x69\x64\x67\x65\x74\x0a\x20\x20\x20\x20\x54\x61\ \x62\x20\x57\x69\x64\x67\x65\x74\x73\x09\x09\x09\x09\x51\x54\x61\ \x62\x57\x69\x64\x67\x65\x74\x0a\x20\x20\x20\x20\x54\x6f\x6f\x6c\ \x62\x6f\x78\x20\x57\x69\x64\x67\x65\x74\x73\x09\x09\x09\x51\x54\ \x6f\x6f\x6c\x42\x6f\x78\x0a\x0a\x43\x6f\x6e\x6e\x65\x63\x74\x69\ \x6f\x6e\x20\x45\x64\x69\x74\x69\x6e\x67\x20\x4d\x6f\x64\x65\x09\ \x09\x09\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6e\x67\x20\x77\x69\x64\ \x67\x65\x74\x73\x20\x74\x6f\x67\x65\x74\x68\x65\x72\x20\x77\x69\ \x74\x68\x20\x73\x69\x67\x6e\x61\x6c\x73\x20\x61\x6e\x64\x20\x73\ \x6c\x6f\x74\x73\x0a\x20\x20\x20\x20\x43\x6f\x6e\x6e\x65\x63\x74\ \x69\x6e\x67\x20\x4f\x62\x6a\x65\x63\x74\x73\x09\x09\x09\x4d\x61\ \x6b\x69\x6e\x67\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x73\ \x20\x69\x6e\x20\x51\x74\x20\x44\x65\x73\x69\x67\x6e\x65\x72\x0a\ \x20\x20\x20\x20\x45\x64\x69\x74\x69\x6e\x67\x20\x43\x6f\x6e\x6e\ \x65\x63\x74\x69\x6f\x6e\x73\x09\x09\x09\x43\x68\x61\x6e\x67\x69\ \x6e\x67\x20\x65\x78\x69\x73\x74\x69\x6e\x67\x20\x63\x6f\x6e\x6e\ \x65\x63\x74\x69\x6f\x6e\x73\x0a\ " qt_resource_name = b"\ \x00\x0b\ \x0c\xe2\x22\xf4\ \x00\x64\ \x00\x65\x00\x66\x00\x61\x00\x75\x00\x6c\x00\x74\x00\x2e\x00\x74\x00\x78\x00\x74\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\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() PyQt5_gpl-5.10.1/examples/itemviews/editabletreemodel/mainwindow.ui0000644000076500000240000000631213245231431025520 0ustar philstaff00000000000000 MainWindow 0 0 573 468 Editable Tree Model 0 0 true QAbstractItemView::SelectItems QAbstractItemView::ScrollPerPixel false true 0 0 573 31 &File &Actions E&xit Ctrl+Q Insert Row Ctrl+I, R Remove Row Ctrl+R, R Insert Column Ctrl+I, C Remove Column Ctrl+R, C Insert Child Ctrl+N PyQt5_gpl-5.10.1/examples/itemviews/editabletreemodel/ui_mainwindow.py0000644000076500000240000001062413245231431026231 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'mainwindow.ui' # # Created: Fri Jul 26 06:51:23 2013 # by: PyQt5 UI code generator 5.0.1-snapshot-2a99e59669ee # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(573, 468) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.vboxlayout = QtWidgets.QVBoxLayout(self.centralwidget) self.vboxlayout.setContentsMargins(0, 0, 0, 0) self.vboxlayout.setSpacing(0) self.vboxlayout.setObjectName("vboxlayout") self.view = QtWidgets.QTreeView(self.centralwidget) self.view.setAlternatingRowColors(True) self.view.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectItems) self.view.setHorizontalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel) self.view.setAnimated(False) self.view.setAllColumnsShowFocus(True) self.view.setObjectName("view") self.vboxlayout.addWidget(self.view) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 573, 31)) self.menubar.setObjectName("menubar") self.fileMenu = QtWidgets.QMenu(self.menubar) self.fileMenu.setObjectName("fileMenu") self.actionsMenu = QtWidgets.QMenu(self.menubar) self.actionsMenu.setObjectName("actionsMenu") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.exitAction = QtWidgets.QAction(MainWindow) self.exitAction.setObjectName("exitAction") self.insertRowAction = QtWidgets.QAction(MainWindow) self.insertRowAction.setObjectName("insertRowAction") self.removeRowAction = QtWidgets.QAction(MainWindow) self.removeRowAction.setObjectName("removeRowAction") self.insertColumnAction = QtWidgets.QAction(MainWindow) self.insertColumnAction.setObjectName("insertColumnAction") self.removeColumnAction = QtWidgets.QAction(MainWindow) self.removeColumnAction.setObjectName("removeColumnAction") self.insertChildAction = QtWidgets.QAction(MainWindow) self.insertChildAction.setObjectName("insertChildAction") self.fileMenu.addAction(self.exitAction) self.actionsMenu.addAction(self.insertRowAction) self.actionsMenu.addAction(self.insertColumnAction) self.actionsMenu.addSeparator() self.actionsMenu.addAction(self.removeRowAction) self.actionsMenu.addAction(self.removeColumnAction) self.actionsMenu.addSeparator() self.actionsMenu.addAction(self.insertChildAction) self.menubar.addAction(self.fileMenu.menuAction()) self.menubar.addAction(self.actionsMenu.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Editable Tree Model")) self.fileMenu.setTitle(_translate("MainWindow", "&File")) self.actionsMenu.setTitle(_translate("MainWindow", "&Actions")) self.exitAction.setText(_translate("MainWindow", "E&xit")) self.exitAction.setShortcut(_translate("MainWindow", "Ctrl+Q")) self.insertRowAction.setText(_translate("MainWindow", "Insert Row")) self.insertRowAction.setShortcut(_translate("MainWindow", "Ctrl+I, R")) self.removeRowAction.setText(_translate("MainWindow", "Remove Row")) self.removeRowAction.setShortcut(_translate("MainWindow", "Ctrl+R, R")) self.insertColumnAction.setText(_translate("MainWindow", "Insert Column")) self.insertColumnAction.setShortcut(_translate("MainWindow", "Ctrl+I, C")) self.removeColumnAction.setText(_translate("MainWindow", "Remove Column")) self.removeColumnAction.setShortcut(_translate("MainWindow", "Ctrl+R, C")) self.insertChildAction.setText(_translate("MainWindow", "Insert Child")) self.insertChildAction.setShortcut(_translate("MainWindow", "Ctrl+N")) PyQt5_gpl-5.10.1/examples/itemviews/fetchmore.py0000755000076500000240000001163213245231431021665 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Darryl Wallace . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (pyqtSignal, QAbstractListModel, QDir, QLibraryInfo, QModelIndex, Qt) from PyQt5.QtWidgets import (QApplication, QGridLayout, QLabel, QLineEdit, QListView, QSizePolicy, QTextBrowser, QWidget) class FileListModel(QAbstractListModel): numberPopulated = pyqtSignal(int) def __init__(self, parent=None): super(FileListModel, self).__init__(parent) self.fileCount = 0 self.fileList = [] def rowCount(self, parent=QModelIndex()): return self.fileCount def data(self, index, role=Qt.DisplayRole): if not index.isValid(): return None if index.row() >= len(self.fileList) or index.row() < 0: return None if role == Qt.DisplayRole: return self.fileList[index.row()] if role == Qt.BackgroundRole: batch = (index.row() // 100) % 2 if batch == 0: return QApplication.palette().base() return QApplication.palette().alternateBase() return None def canFetchMore(self, index): return self.fileCount < len(self.fileList) def fetchMore(self, index): remainder = len(self.fileList) - self.fileCount itemsToFetch = min(100, remainder) self.beginInsertRows(QModelIndex(), self.fileCount, self.fileCount + itemsToFetch) self.fileCount += itemsToFetch self.endInsertRows() self.numberPopulated.emit(itemsToFetch) def setDirPath(self, path): dir = QDir(path) self.beginResetModel() self.fileList = dir.entryList() self.fileCount = 0 self.endResetModel() class Window(QWidget): def __init__(self, parent=None): super(Window, self).__init__(parent) model = FileListModel(self) model.setDirPath(QLibraryInfo.location(QLibraryInfo.PrefixPath)) label = QLabel("Directory") lineEdit = QLineEdit() label.setBuddy(lineEdit) view = QListView() view.setModel(model) self.logViewer = QTextBrowser() self.logViewer.setSizePolicy(QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)) lineEdit.textChanged.connect(model.setDirPath) lineEdit.textChanged.connect(self.logViewer.clear) model.numberPopulated.connect(self.updateLog) layout = QGridLayout() layout.addWidget(label, 0, 0) layout.addWidget(lineEdit, 0, 1) layout.addWidget(view, 1, 0, 1, 2) layout.addWidget(self.logViewer, 2, 0, 1, 2) self.setLayout(layout) self.setWindowTitle("Fetch More Example") def updateLog(self, number): self.logViewer.append("%d items added." % number) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/frozencolumn/0000755000076500000240000000000013245231431022052 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/itemviews/frozencolumn/frozencolumn.py0000644000076500000240000001567713245231431025165 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2017 Hans-Peter Jansen ## Copyright (C) 2016 The Qt Company Ltd. ## ## This file is part of the examples of the Qt Toolkit. ## ## $QT_BEGIN_LICENSE:BSD$ ## Commercial License Usage ## Licensees holding valid commercial Qt licenses may use this file in ## accordance with the commercial license agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and The Qt Company. For licensing terms ## and conditions see https:#www.qt.io/terms-conditions. For further ## information use the contact form at https:#www.qt.io/contact-us. ## ## BSD License Usage ## Alternatively, you may use self file under the terms of the BSD license ## as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, self list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, self list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of The Qt Company Ltd nor the names of its ## contributors may be used to endorse or promote products derived ## from self software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QFile, QFileInfo, Qt from PyQt5.QtGui import QStandardItem, QStandardItemModel from PyQt5.QtWidgets import QApplication, QHeaderView, QTableView class FreezeTableWidget(QTableView): def __init__(self, model): super(FreezeTableWidget, self).__init__() self.setModel(model) self.frozenTableView = QTableView(self) self.init() self.horizontalHeader().sectionResized.connect(self.updateSectionWidth) self.verticalHeader().sectionResized.connect(self.updateSectionHeight) self.frozenTableView.verticalScrollBar().valueChanged.connect( self.verticalScrollBar().setValue) self.verticalScrollBar().valueChanged.connect( self.frozenTableView.verticalScrollBar().setValue) def init(self): self.frozenTableView.setModel(self.model()) self.frozenTableView.setFocusPolicy(Qt.NoFocus) self.frozenTableView.verticalHeader().hide() self.frozenTableView.horizontalHeader().setSectionResizeMode( QHeaderView.Fixed) self.viewport().stackUnder(self.frozenTableView) self.frozenTableView.setStyleSheet(''' QTableView { border: none; background-color: #8EDE21; selection-background-color: #999; }''') # for demo purposes self.frozenTableView.setSelectionModel(self.selectionModel()) for col in range(1, self.model().columnCount()): self.frozenTableView.setColumnHidden(col, True) self.frozenTableView.setColumnWidth(0, self.columnWidth(0)) self.frozenTableView.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.frozenTableView.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.frozenTableView.show() self.updateFrozenTableGeometry() self.setHorizontalScrollMode(self.ScrollPerPixel) self.setVerticalScrollMode(self.ScrollPerPixel) self.frozenTableView.setVerticalScrollMode(self.ScrollPerPixel) def updateSectionWidth(self, logicalIndex, oldSize, newSize): if self.logicalIndex == 0: self.frozenTableView.setColumnWidth(0, newSize) self.updateFrozenTableGeometry() def updateSectionHeight(self, logicalIndex, oldSize, newSize): self.frozenTableView.setRowHeight(logicalIndex, newSize) def resizeEvent(self, event): super(FreezeTableWidget, self).resizeEvent(event) self.updateFrozenTableGeometry() def moveCursor(self, cursorAction, modifiers): current = super(FreezeTableWidget, self).moveCursor(cursorAction, modifiers) if (cursorAction == self.MoveLeft and self.current.column() > 0 and self.visualRect(current).topLeft().x() < self.frozenTableView.columnWidth(0)): newValue = (self.horizontalScrollBar().value() + self.visualRect(current).topLeft().x() - self.frozenTableView.columnWidth(0)) self.horizontalScrollBar().setValue(newValue) return current def scrollTo(self, index, hint): if index.column() > 0: super(FreezeTableWidget, self).scrollTo(index, hint) def updateFrozenTableGeometry(self): self.frozenTableView.setGeometry( self.verticalHeader().width() + self.frameWidth(), self.frameWidth(), self.columnWidth(0), self.viewport().height() + self.horizontalHeader().height()) def main(args): def split_and_strip(s, splitter): return [s.strip() for s in line.split(splitter)] app = QApplication(args) model = QStandardItemModel() file = QFile(QFileInfo(__file__).absolutePath() + '/grades.txt') if file.open(QFile.ReadOnly): line = file.readLine(200).decode('utf-8') header = split_and_strip(line, ',') model.setHorizontalHeaderLabels(header) row = 0 while file.canReadLine(): line = file.readLine(200).decode('utf-8') if not line.startswith('#') and ',' in line: fields = split_and_strip(line, ',') for col, field in enumerate(fields): newItem = QStandardItem(field) model.setItem(row, col, newItem) row += 1 file.close() tableView = FreezeTableWidget(model) tableView.setWindowTitle("Frozen Column Example") tableView.resize(560, 680) tableView.show() return app.exec_() if __name__ == '__main__': import sys main(sys.argv) PyQt5_gpl-5.10.1/examples/itemviews/frozencolumn/grades.txt0000644000076500000240000000335513245231431024066 0ustar philstaff00000000000000 France , Norway , YDS , UK(tech.), UK(adj.) , UIAA , Ger , Australia , Finland , Brazil 1, , 5.2, , , I , I , , , Isup 2, , 5.3, , , II , II , 11, , II 3, 3, 5.4, , , III , III , 12, , IIsup 4, 4, 5.5, 4a , VD , IV , IV , 12, , III 5a , 5-, 5.6, , S , V- , V , 13, 5-, IIIsup 5b , 5, 5.7, 4b , HS , V , VI , 14, 5, IV , , , 4c , , V+ , , 15, , 5c , 5+, 5.8, , VS , VI- , VIIa , 16, 5, IVsup 6a , 6-, 5.9, 5a , HVS , VI , VIIb , 17, , V 6a+ , 6-/6 , 5.10a , , E1 , VI+ , VIIc , 18, 6-, VI 6b , , 5.10b , 5b , , , , 19, , VI/VI+ 6b+ , 6, 5.10c , , E2 , VII- , VIIIa , 20, 6, VIsup/VI+ 6c , 6+, 5.10d , 5c , , VII , VIIIb , 21, , VIsup 6c+ , 7-, 5.11a , , E3 , VII+ , VIIIc , 22, 6, 7a 6c+ , 7, 5.11b , , , , , 23, , 7b 7a , 7+, 5.11c , 6a , E4 , VIII- , IXa , 24, 7-, 7c 7a , 7+/8- , 5.11d , , , VIII , IXb , , , 7c 7a+ , 8-, 5.12a , , E5 , VIII+ , IXc , 25, 7, 8a 7b , 8, 5.12b , 6b , , , , 26, 8-, 8b 7b+ , 8/8+ , 5.12c , , E6 , IX- , Xa , 27, 8, 8c 7c , 8+, 5.12d , 6c , , IX , Xb , 28, 8, 9a 7c+ , 9-, 5.13a , , E7 , IX+ , Xc , 29, 9-, 9b 8a , , 5.13b , , , , , , 9, 9c 8a+ , 9-/9 , 5.13c , 7a , , X- , , 30, 9, 10a 8b , 9, 5.13d , , E8 , X , , 31, 10-, 10b 8b+ , 9/9+ , 5.14a , , , X+ , , 32, 10, 10c 8c , 9+, 5.14b , 7b , , , , 33, 10, 11a 8c+ , 10-, 5.14c , , E9 , XI- , , 34, 11-, 11b 9a , 10, 5.14d , 7c , , XI , , 35, 11, 11c 9a+ , , 5.15a , , , XI+ , , , , 12a 9b , , 5.15b , , , , , , , 12b # Wikipedia contributors. Grade (climbing). Wikipedia, The Free Encyclopedia. May 15, 2009, 20:42 UTC. # Available at: http://en.wikipedia.org/w/index.php?title=Grade_(climbing)&oldid=290165724. Accessed May 28, 2009. PyQt5_gpl-5.10.1/examples/itemviews/interview/0000755000076500000240000000000013245231431021345 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/itemviews/interview/images/0000755000076500000240000000000013245231431022612 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/itemviews/interview/images/interview.png0000644000076500000240000000025613245231431025337 0ustar philstaff00000000000000‰PNG  IHDRíÝâRPLTEÀÀÀÀÀÀÀÀÀÿÿÿc4‹`tRNS c”³KIDATx^=ŠÁ À0 ‰º‹=@T³ÿL§ tæAò‰XÌ| -¨P–ÀjcŸ©ÚìÒ¨¥@\VüjþG ¸.P9ÞñeøIØdúe™IEND®B`‚PyQt5_gpl-5.10.1/examples/itemviews/interview/images/services.png0000644000076500000240000000724513245231431025153 0ustar philstaff00000000000000‰PNG  IHDR00Wù‡lIDATx^Õ˜ p\Å™ÇÿÝïœ73šI£Ó’e$_²eYF!` ؘƒ1,6»‰î#(H »¡ÌÀ®…€ïrnd¹–k ±9"ÂáÄ’oÉ’-[ÒŒ4ÒœïèÞ®©®ÍX)®‚ðT¿ê~ýÔÒÿÿõ÷}z²þÁG Žàzྻ.5u­íû—]Ó†¯à¢G²yBM :Ú·]ðɧŸ>O YÁ`!_”*Ð_f¢é'k~x%¦éûúÑŽýá¶Ó€«®¼lõì`Q…~M $«'”¸?[>98œüÕî=»5ŸåÿÇ6À9ày€ã0HlÞ9hßrv åG×]uYII)D*ýã` ÈÙÉà·l”•t`<íÁ àƒ‹«àÖ•g/›©j&\—sþÕàp •fL–. ’“ȱÇ䨯¸*3r+ˆ¹ËgàÜ©þH29|Ïy+›-­B.ç1ö•â Š‚.–œÊÉŒF…¬^Jé!¬G™3gzÌ5 3‚îiñð¥(bQm]ëwW&sš¦åÍ{û’ Hñ¶C`è6Žÿ¦NÂ!‡2S8r …«ÚvF«ŸèK!Ë€?Šhq-†§úñëk¿‰øpâÖ9ÍUµ¶d…‰Fd³ž4ñ%p] \ä`ñBX¾¤?B ·UGq ;çSÜLQyØC¨º^RÅüSpíÒ)5¶›½ÏòÒÆ)ûɼ–™p].Lx_ŽÆ ¢FÐÚB‰iæ¨çe(§‚@%€=kÛÆ¢…Í(©%á ÁcC•è/÷ãæ•sPÂYç¬Ü¸$NÑúºArô¬fØŽ7ja+Š €Òh&Ô ¦vb~ñ°`ö,Žâ#Œe(â á*àé žI(7=ÇõEÂåò„ëD¸Î8ScŠéc šÆr€€ЬÅÑÔT‹SšöMÚòÞ¦57\?ë° i™÷ þÙgm°ü¡ˆÅcô·/¿TÿÜ“ Yp¼ æØj#ø^p7!t|<ˆ–™ðû³Ä销 ¸L¢Ü sUÓ3u7Å8!A@a0,‚añuõÒ&¬ºãõË¿·ú¹çyôï\qÍ-ágŸz¤0…Ðl+€ù‚ªy¥ ]<=LZë8¦ÆÄÏtÀ»ŸzîæL:=>®ÇQUÁ‰ãîPNN  â¯hàDÕ‡gx–@ÑÇF§ \5M,\zÊt\÷xÛzŸŽÒÒ*« #‡²5RûáïœQ^©4ìÆšêâò²’5 ¨b‘4@8˜—á÷œ¹à® æðüÉ?§*AﰃЊŸ†+_îBûßuôѳ¯=ñÄ“sƒƒq»UU„p –å‡á àüÕ¿ ·}üÙÜDbàÌ©ÓÊç65˜-g-œB«™NÂÑ2_LÓÀ‡ ðÌUÆ®ÀS瀻vÞ!šÂ1öë ˜Cu<³-ŽõîVÕœ÷Ó½£O-\×»UUQT‡l)½÷îµËe/þ†eкµËÔ­•¤jzôIÕp#~8Z6ŸVœq€ª—Q%Œ3ÿC' îÙùÓ ÔCÊóз—c^RGwÖÆªg÷ƒ¨¾5<üXÛ@r¹ŒÏÀK/>_üÔ7¨èŸ&Ó‹—ÕJÊ€†tІWäZÀX^P~;Õ €y,yÆ0;8)°Ü˜9ËS.ºz\ÌÜo@3cîÚÉüêÕ×Þz¼wÿ¾Qò~ Eð SEù€û.ù¯¥¾æÝòø^žõ ÑRºF ü®Þ‡`3 B5Cù¨ÃK®)Æ<Ž˜»B¸-°“â> xÂs1”tÙ¥ ÂTqþ³ˆ;x¿yNËã±>d2Œ÷Ê.$òf>ÿ-† Ýðá¼^y\üà¾eN/ *õ·Ÿ×¬®šß@Õ!€sxÈùüÂ\ ÔPÐxö0¼|ÄÓ`ÙT>òn.!ÖÄ\æÂ% ]{mÔl5PwŸ}»8oÚ¨žÖ€ð,Ù&ñÝ»Áý)Žò6U·m‡ÏòŸþÄÓ¿yU¼¸Á¶í±w¡#N!©›0É=Ô}pk:$Ñ9‘±¢I 37v!rãï½Ï>!0·0TLž ÍïC±ÅŸèâÞ“£È¤S?Y¿n_4“ñµÑqÕ>AHT & êò£÷e¤=PE¥@"ã¡§Ý€^À¹|ö_éýå‹ýœ¾˜BY°¡Úxå //E•‚ÖwÞþŸËCá04M»1Š7Å‚I‚¹‚‚o ά,4¥r9 šªj`9 žÜœ€ N»ö‰·-yh«‡6‚Ðn“[Ñ^žÁ“çNó¼5=¾±Øò@9r"£ï”ʈÏ´ÊWŽ“$³ÉŒCA*ë¡2¡áî¶~À&A­ -¸äÕ÷½Tzåkö®Oîûƒ)sf£þ”"\4M+~áÙ÷äl›š¦yĈ„ §°øÓ[À %çDî/’FÀÞôr§²ÓQJ—ìoÿà†²ç]Æ uÀ?œj)¢"‰4‚ $ ×M. 4Hʦ?Æ!ë¢Wæø ü¾¤<·@¼!#Ÿ)l {¶ÿù£³W]øVEy0lõoû+†àÎÀ$)¬P¤~)ŽÈ¢KH1¬`¿) ¦@Q}w½›7Ð/èì—F´ßyTjPäHäz‚çžÞ[¸á‰?3Ÿ•£ÉaÎ;lÏ?¦À€U€Œ2 #–+€IczAZEK¸½¶„èk\ïH]‚}’Cr-#p X ç2 ºTîÙß¼ä%††¸ã8‡M¡ƒRD¦ «P™»ŽDó<ФñÒ‚•ÉlédzdúôÉ8(çCÅÛ°áA¾tù ŒŒ ƒ1öi åFy&OYù~4 Øñô›•þ$ˆËuõBñ £‹?œÁîî}0Mó ÿøIá=FYû ## Copyright (C) 2016 The Qt Company Ltd. ## ## This file is part of the examples of the Qt Toolkit. ## ## $QT_BEGIN_LICENSE:BSD$ ## Commercial License Usage ## Licensees holding valid commercial Qt licenses may use this file in ## accordance with the commercial license agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and The Qt Company. For licensing terms ## and conditions see https:#www.qt.io/terms-conditions. For further ## information use the contact form at https:#www.qt.io/contact-us. ## ## BSD License Usage ## Alternatively, you may use self file under the terms of the BSD license ## as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, self list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, self list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of The Qt Company Ltd nor the names of its ## contributors may be used to endorse or promote products derived ## from self software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (QAbstractItemModel, QFileInfo, QItemSelectionModel, QModelIndex, Qt) from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import (QAbstractItemView, QApplication, QFileIconProvider, QListView, QSplitter, QTableView, QTreeView) images_dir = QFileInfo(__file__).absolutePath() + '/images' class Node(object): def __init__(self, parent = None): self.parent = parent self.children = [] class Model(QAbstractItemModel): def __init__(self, rows, columns, parent = None): super(Model, self).__init__(parent) self.services = QIcon(images_dir + '/services.png') self.rc = rows self.cc = columns self.tree = [Node() for node in range(rows)] self.iconProvider = QFileIconProvider() def index(self, row, column, parent): if row < self.rc and row >= 0 and column < self.cc and column >= 0: parentNode = parent.internalPointer() childNode = self.node(row, parentNode) if childNode is not None: return self.createIndex(row, column, childNode) return QModelIndex() def parent(self, child): if isinstance(child, QModelIndex): # parent of QModelIndex child if child.isValid(): childNode = child.internalPointer() parentNode = self.parent(childNode) if parentNode: return self.createIndex(self.row(parentNode), 0, parentNode) return QModelIndex() else: # parent of Node if child: return child.parent def rowCount(self, parent): if parent.isValid() and parent.column() != 0: return 0 return self.rc def columnCount(self, parent): return self.cc def data(self, index, role): if not index.isValid(): return None elif role == Qt.DisplayRole: return "Item %d:%s" % (index.row(), index.column()) elif role == Qt.DecorationRole: if index.column() == 0: return self.iconProvider.icon(QFileIconProvider.Folder) return self.iconProvider.icon(QFileIconProvider.File) return None def headerData(self, section, orientation, role): if role == Qt.DisplayRole: return str(section) if role == Qt.DecorationRole: return self.services return super(Model, self).headerData(section, orientation, role) def hasChildren(self, parent): if parent.isValid() and parent.column() != 0: return False return self.rc > 0 and self.cc > 0 def flags(self, index): if not index.isValid(): return 0 return Qt.ItemIsDragEnabled | super(Model, self).flags(index) def node(self, row, parent): if parent and not parent.children: parent.children = [Node(parent) for node in range(self.rc)] if parent: return parent.children[row] else: return self.tree[row] def row(self, node): if node.parent: return node.parent.children.index(node) else: return self.tree.index(node) def main(args): app = QApplication(args) page = QSplitter() data = Model(1000, 10, page) selections = QItemSelectionModel(data) table = QTableView() table.setModel(data) table.setSelectionModel(selections) table.horizontalHeader().setSectionsMovable(True) table.verticalHeader().setSectionsMovable(True) # Set StaticContents to enable minimal repaints on resizes. table.viewport().setAttribute(Qt.WA_StaticContents) page.addWidget(table) tree = QTreeView() tree.setModel(data) tree.setSelectionModel(selections) tree.setUniformRowHeights(True) tree.header().setStretchLastSection(False) tree.viewport().setAttribute(Qt.WA_StaticContents) # Disable the focus rect to get minimal repaints when scrolling on Mac. tree.setAttribute(Qt.WA_MacShowFocusRect, False) page.addWidget(tree) list = QListView() list.setModel(data) list.setSelectionModel(selections) list.setViewMode(QListView.IconMode) list.setSelectionMode(QAbstractItemView.ExtendedSelection) list.setAlternatingRowColors(False) list.viewport().setAttribute(Qt.WA_StaticContents) list.setAttribute(Qt.WA_MacShowFocusRect, False) page.addWidget(list) page.setWindowIcon(QIcon(images_dir + '/interview.png')) page.setWindowTitle("Interview") page.show() return app.exec_() if __name__ == '__main__': import sys main(sys.argv) PyQt5_gpl-5.10.1/examples/itemviews/pixelator/0000755000076500000240000000000013245231431021340 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/itemviews/pixelator/images/0000755000076500000240000000000013245231431022605 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/itemviews/pixelator/images/qt.png0000644000076500000240000000122013245231431023732 0ustar philstaff00000000000000‰PNG  IHDR&&V¶r pHYs  ÒÝ~ütIMEÔ 8¸¯ÓRbKGDÿ‡Ì¿!IDAT8Ëcøp–ðáì"ÀYTeŸ×8«JJj¸—mý†SÙùXN8àϼ…UÙó(FÀ’ýSÙ w ]Ùdf,€}ª²Ép6-{5y-²²­P³˜C·}øiÔ¡œgÊ^@Ýeqá¹#Z1•¯peÑ‘ŒßÈaõ%"Z Sv‘ ¢ ¡äm>Ðîß¾kŸA•ÅClü…PeÄàT÷Q,QQö™ ìúKȪÀ궃•Éþ+[棪‚¨3³Î‚•ƒÙ[ÐT10Lþÿ˜1¬ÌÄdýŠ®*ãßÿÿ·Á¬d°2MS›ªÿÿÀÎv+“1mÐT¥ýóå@ls°2iÓ Uƒûw°€ˆm V¦b*£ª‚ªûÍbzƒ•yƒƒíª*ˆºK`VXY˜½üÿÿ|ÔÄT×fÌ+Û f;ÿÿÿÍ ÌJ÷ƒ©û¬¦o€•ýsöCÕeüû S§&µ QŸ æ©}«…\ô@•Ýcs½ÉíÛdpx!«úK–÷ðèGR×O½Ÿ!" ÿÁÔ}S‡ªâûŒÈ2§`ÙÝ`Òõ¿ÀP½Ð¢†~° ¸Ž.Ì!-ÁŠ~ð켋'ˆ@*ΫcÊCTè,rQó­Í@¡ ßü ªP ®õòEÚ½ÁáR…^ þ;71ÅÃÂÆ;kÖMhøÅŸÅRZâ.T‰+¢hmè© .ÊÃIEND®B`‚PyQt5_gpl-5.10.1/examples/itemviews/pixelator/pixelator.py0000755000076500000240000002416513245231431023734 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2017 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (QAbstractTableModel, QDir, QModelIndex, QRect, QRectF, QSize, Qt) from PyQt5.QtGui import QBrush, qGray, QImage, QPainter from PyQt5.QtPrintSupport import QPrintDialog, QPrinter from PyQt5.QtWidgets import (QAbstractItemDelegate, QApplication, QDialog, QFileDialog, QHBoxLayout, QLabel, QMainWindow, QMessageBox, QMenu, QProgressDialog, QSpinBox, QStyle, QStyleOptionViewItem, QTableView, QVBoxLayout, QWidget) import pixelator_rc ItemSize = 256 class PixelDelegate(QAbstractItemDelegate): def __init__(self, parent=None): super(PixelDelegate, self).__init__(parent) self.pixelSize = 12 def paint(self, painter, option, index): if option.state & QStyle.State_Selected: painter.fillRect(option.rect, option.palette.highlight()) size = min(option.rect.width(), option.rect.height()) brightness = index.model().data(index, Qt.DisplayRole) radius = (size/2.0) - (brightness/255.0 * size/2.0) if radius == 0.0: return painter.save() painter.setRenderHint(QPainter.Antialiasing) painter.setPen(Qt.NoPen) if option.state & QStyle.State_Selected: painter.setBrush(option.palette.highlightedText()) else: painter.setBrush(QBrush(Qt.black)) painter.drawEllipse(QRectF( option.rect.x() + option.rect.width()/2 - radius, option.rect.y() + option.rect.height()/2 - radius, 2*radius, 2*radius)) painter.restore() def sizeHint(self, option, index): return QSize(self.pixelSize, self.pixelSize) def setPixelSize(self, size): self.pixelSize = size class ImageModel(QAbstractTableModel): def __init__(self, parent=None): super(ImageModel, self).__init__(parent) self.modelImage = QImage() def setImage(self, image): self.beginResetModel() self.modelImage = QImage(image) self.endResetModel() def rowCount(self, parent): return self.modelImage.height() def columnCount(self, parent): return self.modelImage.width() def data(self, index, role): if not index.isValid() or role != Qt.DisplayRole: return None return qGray(self.modelImage.pixel(index.column(), index.row())) def headerData(self, section, orientation, role): if role == Qt.SizeHintRole: return QSize(1, 1) return None class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.currentPath = QDir.homePath() self.model = ImageModel(self) centralWidget = QWidget() self.view = QTableView() self.view.setShowGrid(False) self.view.horizontalHeader().hide() self.view.verticalHeader().hide() self.view.horizontalHeader().setMinimumSectionSize(1) self.view.verticalHeader().setMinimumSectionSize(1) self.view.setModel(self.model) delegate = PixelDelegate(self) self.view.setItemDelegate(delegate) pixelSizeLabel = QLabel("Pixel size:") pixelSizeSpinBox = QSpinBox() pixelSizeSpinBox.setMinimum(4) pixelSizeSpinBox.setMaximum(32) pixelSizeSpinBox.setValue(12) fileMenu = QMenu("&File", self) openAction = fileMenu.addAction("&Open...") openAction.setShortcut("Ctrl+O") self.printAction = fileMenu.addAction("&Print...") self.printAction.setEnabled(False) self.printAction.setShortcut("Ctrl+P") quitAction = fileMenu.addAction("E&xit") quitAction.setShortcut("Ctrl+Q") helpMenu = QMenu("&Help", self) aboutAction = helpMenu.addAction("&About") self.menuBar().addMenu(fileMenu) self.menuBar().addSeparator() self.menuBar().addMenu(helpMenu) openAction.triggered.connect(self.chooseImage) self.printAction.triggered.connect(self.printImage) quitAction.triggered.connect(QApplication.instance().quit) aboutAction.triggered.connect(self.showAboutBox) pixelSizeSpinBox.valueChanged.connect(delegate.setPixelSize) pixelSizeSpinBox.valueChanged.connect(self.updateView) controlsLayout = QHBoxLayout() controlsLayout.addWidget(pixelSizeLabel) controlsLayout.addWidget(pixelSizeSpinBox) controlsLayout.addStretch(1) mainLayout = QVBoxLayout() mainLayout.addWidget(self.view) mainLayout.addLayout(controlsLayout) centralWidget.setLayout(mainLayout) self.setCentralWidget(centralWidget) self.setWindowTitle("Pixelator") self.resize(640, 480) def chooseImage(self): fileName, _ = QFileDialog.getOpenFileName(self, "Choose an Image", self.currentPath, '*') if fileName: self.openImage(fileName) def openImage(self, fileName): image = QImage() if image.load(fileName): self.model.setImage(image) if not fileName.startswith(':/'): self.currentPath = fileName self.setWindowTitle("%s - Pixelator" % self.currentPath) self.printAction.setEnabled(True) self.updateView() def printImage(self): if self.model.rowCount(QModelIndex()) * self.model.columnCount(QModelIndex()) > 90000: answer = QMessageBox.question(self, "Large Image Size", "The printed image may be very large. Are you sure that " "you want to print it?", QMessageBox.Yes | QMessageBox.No) if answer == QMessageBox.No: return printer = QPrinter(QPrinter.HighResolution) dlg = QPrintDialog(printer, self) dlg.setWindowTitle("Print Image") if dlg.exec_() != QDialog.Accepted: return painter = QPainter() painter.begin(printer) rows = self.model.rowCount(QModelIndex()) columns = self.model.columnCount(QModelIndex()) sourceWidth = (columns+1) * ItemSize sourceHeight = (rows+1) * ItemSize painter.save() xscale = printer.pageRect().width() / float(sourceWidth) yscale = printer.pageRect().height() / float(sourceHeight) scale = min(xscale, yscale) painter.translate(printer.paperRect().x()+printer.pageRect().width()/2, printer.paperRect().y()+printer.pageRect().height()/2) painter.scale(scale, scale) painter.translate(-sourceWidth/2, -sourceHeight/2) option = QStyleOptionViewItem() parent = QModelIndex() progress = QProgressDialog("Printing...", "Cancel", 0, rows, self) progress.setWindowModality(Qt.ApplicationModal) y = ItemSize / 2.0 for row in range(rows): progress.setValue(row) QApplication.processEvents() if progress.wasCanceled(): break x = ItemSize / 2.0 for column in range(columns): option.rect = QRect(x, y, ItemSize, ItemSize) self.view.itemDelegate().paint(painter, option, self.model.index(row, column, parent)) x += ItemSize y += ItemSize progress.setValue(rows) painter.restore() painter.end() if progress.wasCanceled(): QMessageBox.information(self, "Printing canceled", "The printing process was canceled.", QMessageBox.Cancel) def showAboutBox(self): QMessageBox.about(self, "About the Pixelator example", "This example demonstrates how a standard view and a custom\n" "delegate can be used to produce a specialized " "representation\nof data in a simple custom model.") def updateView(self): self.view.resizeColumnsToContents() self.view.resizeRowsToContents() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() window.openImage(':/images/qt.png') sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/pixelator/pixelator.qrc0000644000076500000240000000014013245231431024051 0ustar philstaff00000000000000 images/qt.png PyQt5_gpl-5.10.1/examples/itemviews/pixelator/pixelator_rc.py0000644000076500000240000000704613245231431024414 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 12 15:31:20 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x02\x90\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x26\x00\x00\x00\x26\x08\x00\x00\x00\x00\x8d\x56\xb6\x72\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x12\x00\x00\x0b\x12\ \x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd4\x08\ \x06\x0a\x1f\x38\xb8\xaf\xd3\x52\x00\x00\x00\x02\x62\x4b\x47\x44\ \x00\xff\x87\x8f\xcc\xbf\x00\x00\x02\x21\x49\x44\x41\x54\x38\xcb\ \x63\xf8\x70\x96\x08\xf0\x81\xe1\xec\x7f\x22\xc0\x59\x54\x65\x9f\ \xd7\x16\x38\xab\x4a\x4a\x6a\xb8\x97\x6d\xfd\x86\x53\xd9\xf9\x58\ \x4e\x06\x38\xe0\xcf\xbc\x85\x55\xd9\xf3\x28\x46\x06\x14\xc0\x92\ \xfd\x01\x53\xd9\x16\x11\x06\x0c\x20\x77\x0c\x5d\xd9\x64\x66\x06\ \x2c\x80\x7d\x15\xaa\xb2\xc9\x70\x19\x36\x2d\x07\x7b\x35\x16\x18\ \x8f\x79\x2d\xb2\xb2\xad\x50\xb3\x98\x43\xb7\x81\x7d\xf8\x69\x8d\ \x07\xd4\xa1\x9c\x67\x10\xca\x5e\x40\xdd\x65\x71\x19\xe1\xb9\x23\ \x5a\x10\x31\x95\xaf\x70\x65\xd1\x10\x91\x8c\xdf\xc8\x61\xf5\x25\ \x00\x22\x5a\x09\x53\x76\x91\x09\xa2\x0a\xa1\xe4\x6d\x3e\xd0\xee\ \xdf\xbe\x10\x6b\x9f\x41\x95\xc5\x43\x6c\xfc\x85\x50\x65\xc4\xe0\ \x06\x54\xf7\x51\x19\x2c\x51\x03\x51\xf6\x99\x0b\xec\xfa\x4b\xc8\ \xaa\x18\xc0\xea\xb6\x83\x95\xc9\xfe\x03\x2b\x5b\x0f\xe6\x04\xa3\ \xaa\x82\xa8\x33\x05\xb3\xce\x82\x95\x15\x83\xd9\x5b\xd0\x54\x31\ \x30\x4c\xfe\xff\x7f\x1a\x98\x31\x01\xac\xcc\x15\xc4\x64\xfd\x8a\ \xae\x2a\xe3\xdf\xff\xff\xb7\xc1\xac\x64\xb0\x32\x4d\x10\x53\x1d\ \x9b\xaa\xff\xff\xc0\xce\x76\x07\x2b\x93\x04\x31\x6d\xd0\x54\xa5\ \xfd\x03\xf3\xe5\x40\x6c\x73\xb0\x32\x69\x10\xd3\x0a\x55\x15\x83\ \xfb\x77\xb0\x80\x14\x88\x6d\x0d\x56\xa6\x03\x62\x2a\xa3\xaa\x82\ \xaa\xfb\xcd\x0e\x62\x7a\x83\x95\x79\x83\x83\xed\x1d\xaa\x2a\x88\ \xba\x4b\x60\x56\x16\x58\x59\x15\x98\xbd\xfc\xff\xff\x7c\xd4\xc4\ \x06\x54\xd7\x0e\x66\xcc\x00\x2b\xdb\x09\x66\x3b\xff\xff\xff\xcd\ \x0d\xcc\x4a\xf7\x83\xa9\xfb\xac\x06\xa6\x6f\x80\x95\xfd\x14\x04\ \x73\xf6\x43\xd5\x65\xfc\xfb\x09\x53\xa7\x02\x26\xb5\xa0\x51\x9f\ \x0b\xe6\xa9\x7d\x02\xab\x03\x85\x17\x5c\x1d\x18\xf4\x40\x95\xdd\ \x63\x05\x73\xbd\x81\xc9\xed\xdb\x64\x70\x78\x21\xab\x13\xfa\x00\ \x4b\x96\x05\x10\x01\x8f\xf7\xf0\xe8\x47\x52\xd7\x07\x4f\xbd\x9f\ \x14\x21\x22\x0a\x1b\xff\xc1\xd4\x7d\x53\x87\xaa\xe2\xfb\x8c\xc8\ \x32\xa7\x60\xd9\xdd\x60\xd2\xf5\xbf\xc0\x50\xbd\xd0\xa2\x86\x12\ \x7e\xb0\x0c\xb8\x8e\x15\x2e\xcc\x21\x2d\xc1\x8a\x1e\x7e\xf0\xec\ \xbc\x81\x8b\x01\x27\x88\x40\x2a\x1c\xce\xab\x63\xca\x43\x02\x54\ \xe8\x2c\x72\x51\xf3\xad\x06\xcd\x40\xa1\x09\xdf\xfc\x20\xaa\x50\ \x0b\xae\x17\xf5\xf2\x08\x45\xda\xbd\x1f\xc1\xe1\x02\x52\x85\x5e\ \x0c\xfe\x3b\x37\x31\xc5\xc3\xc2\xc6\x3b\x6b\xd6\x4d\x68\xf8\xc5\ \x9f\xc5\x52\x5a\xe2\x2e\x54\x89\x2b\xa2\x01\x68\x6d\xe8\xa9\x09\ \x2e\xca\xc3\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x06\ \x07\x87\x57\x47\ \x00\x71\ \x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \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\x12\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() PyQt5_gpl-5.10.1/examples/itemviews/puzzle/0000755000076500000240000000000013245231431020662 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/itemviews/puzzle/example.jpg0000644000076500000240000012323613245231431023026 0ustar philstaff00000000000000ÿØÿàJFIFHHÿáExifMM*ÿÛC  !"$"$ÿÛCÿÀ¨¨"ÿÄ ÿÄT !1"AQaq2‘#B¡±3RbÁÑð$47Ccrtu‚’³´áñ6Ss”¢²%“ Dƒ£ÂÒâÿÄÿÄ5!1A"Qaq¡ð2‘ÁÑá#±ñBRbc$ÿÚ ?ìº(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ +-)îi3óÙhr±PÚ[€®Šb¨âENçBî¥?2Ëê6ŸýeêÜ“œcí8þ4§ˆ¦¹ö&ôU|z§¥‡}Alþpšß©ZnI jûlR‰ÆÑ%þt{D 'TS4[ìgÒIAÈ?/fk.vX«Æ¤g³"âª+­*ìk*¹!EPEPEPEPEPEPEPEPEs†²ë¨¸õ6ï§4Ķí6»ª!ï½!䨥CÎ Rœ…p3žFÅê~²e{œ¸5 eÈÈÿ´\¼OKáðõ8r½ûŒ2é JMjt%KAëÙûm¢ÿü¥©¿çºŸ õŠÊàe²{þ,¥À?ˆþU4úc?ó·ËÇF\Ë.ЉAê>—€.Á…Ýy¥£øãÆ¥1ÞjDvä0â]eÔ¡i9 IlVêUéU÷$Ÿƒ4F¤'î»›(¢Šip¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢‚@¤²¥!¤’To[‰HäÓeÆï+jRÜJBFI'T¨½J´i˜«T™).ØW?µrþ¼ê†¡ÖKZ#Èû%´(‚½Ûÿ±¬µq +A´¨N«Óbü×ýsÓ:}·R%‰'#Ãa\gþWùW=k?Ò;V]^r=…±£<$î_çÉþUýY NøÓœ/©GqyÂJJ}Ђ¯ÇíÎl}0íøéQHRŠ› Ç >ÞüÖGZúÚþ'B8Grr½uøã’%IœB¹%ÅyúóL2àêIrD…¸9PÝŒU¡s-Ì”á—6DÅ’0–µ”( `¨wüh• µ¡–[`xŽx~2Ò; »¼¹øÂªcŠ×„‹\ýy"¢_Ò²‚·÷à+8­N‹Ë.Kq²9óVË\±Å8Û¥¦ˆ#ík(*ú%8¡÷$ÊHR£Ú›q ÉñkyüIÍi…w>fZ˜eq^˜ê>±ÓR¶ë̦¶ŽR—Ôv5sh_Ò–ëHgQÃD”¯"þ§ÐþUΫD§?uŃè@àüZ<(” ”œ)%8P>Æ™(B{™{¤})êîžÖ‘<[]Å+q#ÏÓµÔ~£äU£æÄ„«òbÓ2éj}3m;ÖÕÈYII5{ô·ô•¾Y\jߪ[Tøã?œ:‘õìΡg†Ú¯2Ž lwúV85•Uý8êuƒVÄCÖ›‹R8Ê›'#êžõbŘ۩(ÓaQOb‚º+ĨÕí\¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ˆ¡¿'Q?é©?ø‡jg¢¬—-e«\°ÚVÔv¡´—®3]AZXJ³± H#rÕ‚FHyíPÈ_ïÉÔ_újOþ!Ú¾¿E8[Q\ÖÛÌ¿>‚²9-´”!#è0¯ÌטŽž‘š¨®—àó˜jJ­l¯mO ô;·w4´=Q'úBÛ%ß â“¸qŸ(H ŒóUÅÎÕ:ݬàiY btË‚!¤ƒ”¤(xŸ) ¨DÉ êþ–» «íj ÒÕŸÜx-+ˆ5n_WÁý"´ø‘lnc÷k[¢3ë_û‰Èá§’T´8H#„Žõ4°Xll#R1Ë­š\Ñ¡S§]]+YÛàTú–ÒíŽù*Ôó¨uqÔV€@9ÿt†ŠÿÜÛ'ýþí5Nõ–ço‘¨%[š³5dw’\š—2§ÆÎÅ8î=Oj¸´WþæÙ?èøÿ÷i«ôM(ÒÅÕ„Òûì? ÓŠ袊ôgP(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+¨$Pµ„ŒÓ ½G·Äu÷ÞKm¶’¥©G zšI]€¢ïuf*[Ž%!#$“€sïXzçÔӬΙ2Ôv%Hä§ùÕgמ¶½z}û=…å&0%%@à¸}ÏÇÇç\ÿ&âì¥øM-KZÁºO'ñô¿JÇRr“±²Ž{Õ>Dšó¨¯Úšö¥¼£1â²PÒ•–Ò=IôÀõ9¥¶¶ÜrK^ÎCjðüWû•ý†›ø|œj+ky ?fŽNÁÊÔ@^=Èùöü9æŸXšµ%!•ã²Hqô€ «MŽÀzŸOUkHë©Õ¤ô´Gù ¶Ã˜‘!r\;œwhò¤u½ôsÚš§ÜÒ…ܿŷ0¬©M¯—ãÈO {1ñOš[§Úã_¥Ûcu óöù -¥Ìq”æW×㌠·´o@t•­œÞEâj€R䤟zêÛ^š¶[ã°b°Ë !-¥9ø$ ^Íž2T” åá?AÚ¬¤ÿÅ[ÌS©ò×Ézøœÿ±ÝJ”‡\˜êÉ^IYDz’sÁÇ¿©Þ–ê£5KÈD„ŒP<0¼z«ääŽ{â»Em.§€"¼\( ªm£žÙ‘¢õ?ØZéüœ‡£wéJSm†üPwí£'‘ßÞ›µL/Ñæ»T4ø!J%\(c?À×e}‘¶PRÞÜ|Ô–e¾ß)Y“6’G|Õ3Ô_äK©NZ8èp”½32$w·6µ-’ŸN2>yíL-Ž$©!¢6ò°psë]ésÑö)¹XކÜÁ󄌂}sQ{×ItýÂ!oà Ÿí6~¿ë½28Ê‘Ý\T°ô'³hã]1}½é©­ÜíSŒëjà¡D]AÑÿÒYÉOǴꆛiÕ”ÊO”(ÿxvü±P Ñ[­—µ„½‚¯ä¯ã8ªfãmµJjS*e{°ž1ÛæµÆ´+­7ó1UÂ8jõ]§Ôý-¨cÜã!hq*Ü20sš’¶­Â¹ôVÖ.K°C‡)õ, @žàv?•umª@u”œç"Ÿ†¨ç¥º0´âÜX¾Š(§€QEQEQEQEQEÄP¿ß“¨¿ôÔŸüCµ}þŠr·éAjý¬MA$í>ˆq(q'ñÜ#T$/÷äê/ý5'ÿíMô£—¡ut›Ûœ›m¸2–îqPŒìu¼àH)$dùæiâ¡C¤§Ù?ÁçpµU*ùžÚ‰Ìw“Õ+9ñ‘©[*O÷[ÞUùb­]fúúLèã›¶Ü®´ßÿóNp¡hy…Ž°Û¡Kœâ¢©ØÞ>]þU¨7À <…Øfªkž¢¸¿ÔØ:å BfAua1œÉB™Z<57žàíÆî3ƒÚŸ”ú60¥Qîïð4醊MÞí?€¿ªÿï…vÿæ'ÿÁ5|è¯ýͲÑñÿîÓTFºÕíJ´ÉcNÆ·ÍZ’¹BÂÜs ÀNí íáÚ¯}ÿ¹¶Oú>?ýÚi}á,]YBWO_›ƒqu¦âî˜ïEW£:EPEPEPEPEPEPX¸ ‘šÈœ Ó]ÞbXiDšC©oq­^“%ô2ÓH*ZÔp­pï_úÕ7S\Ý´ÙÞ[vÖ×´ÿZ}Ï¿øT‹ô»ê{ÏËþ‰Zeˆ9˜¤ÞþÉøÌüW-8á^HY(ïžê?åJmËQ”Ò]f.%Nº´©ÎÿÖc“ô¤eâñØïVq‘ò}¿'*[žDySëJíÑ_˜ûPá²ã®º°”¡ Ü¥«éQ•A]R•YYzî`¸†˜SIqa£€ „ùÝ>€{{]Ñ~ŒIuµµŽ”$%*…hq>T'ºK£øìüM;ô£´Äx·ÝG2ïe!ÆX õÇï/äöô«±[Î嬨ä“ë\ºµTÞ›ˆ^”r­ÿƒØí'i8Ç H`=¥qØ ã—àà Ö)B6opa¿ãKY\‚­ 2ŸãUŠ&*bŠ|éCiþ5ꛂŽàQ­haÇUæZ–G¹í[[€ÉÁûÓ’ìBvݘ BÇ+ðÍju‹zÿáÎñ§ã6Œ'Ç|÷¬„frAŒT¸¶‚ãB™†ÜûóZ]m¢ѺžÜ‹a>QŽ{ÒeGaíRGãK”K) Ëe¬¦ŸB8¤«Ž‚½¬­HW8 âŸÖÃ}‚ÂI瓚E.9Ør yÆ)r€Å!–CD ¶êv¨ŒŽª»«=5µjH¸ÓI‹=) ¥[*Rš² ÛþÊ?¤èuNG;Oª~ !èô›[ÁÑ·¥õ“¶{’Œy(! ©G td‘ø×l苈“£»œs\§×(¹Pw„‰q2IG|Æ}ñÍM¿EΠ¿}´ˆ—'ó:.á=Ö=],5Hï۹ÉÅÓ´³L…e5•"·È´9È¥µÒ3Q@Q@Q@Q@Q@Kµ·Ön¢%Ä)Þd( p_tƒø‚ãR*é{¾ˆÒ·kÚ¯W +\ÚZ[Û”’´§;B€ +îsǺž±AÇØìð#÷’Âw~xÍyÌ_BÔÄW•LÉ&qÿL›“ëhP-¼ê½- vÍ? ë­n­Öâ.2Ü )D•Ôœ’£œŒ“Œf· ¬ïßš«*˜2S‹ñ–ÂJ‰'…ãšè|QZ_Cñ"£Z«’^ îhXâ£96‘JYúAwrCjºÏˆÃIJ¢·1ê@üóWÿ(3džÂ¸côÃÖK™~jÆÂÎØƒ+à­\ÿŠ]W´IŒsJÌ¡¯÷îWß}Õ-n(­å©Y*$çÕˇ¾ÔZÏb¨ûš_h´Mº]"ÛØl‡RR9JTG›C𛍫²îóz­0$Üç5 y甆Ð9Q®»è/L-ÚF wk“-ɾ8Œî#rc;'çæ«~”idÛ.iðÚX%âÊ%HÉÏ÷±É™Åt½)m A (vÓæ¸ø¬C©S"Ù¼=,ßäüé{~oÞ#r³ïJÛÜ£¸Ž}µh'ÝØžõ¥1°R7wìqTH«b–“€ ³øsJÙQ$€3ÜÖ⌓ŒX?qƒÈã©+$g·Ö˜¢)ß°qh©YÅvç·8”ð·0=ÕLɽÆCIwzXJòV¤§wÓ>Ÿ5›wHOc¸GwqÁ(>Ü~•tC„»-G•’k,+’GãZTµµ) )ôù­˜ã¸>ø©Ô‹›J¹Ãæ«ûÇZ4UºwØî3®ƒÍ«-œwç±?LÒe$˜ØÓ”¶DùõåqüŠoy;£ò=é¶&µ²NKe¹ ©.c mÀâN{d§±úÓ©SKHR0¡À¾Ô§il]ÆQÝ wÈ-ÊŠâ@)Zp}ù®lLù=.êK®­ 0^{z¶v)'ŸÇºðRèAû§<Õ×Û+ReÆuMxŠ(sŸ»Ç¯"™N¦Mö* ­âΤÐ7è÷+s2ò\mÄ¡`ð¤‘jrÊ·$W$~‹Z­ßÔâÃ5dI¶¯Áñ½²r“á]Qha$Jìáæå=ѳ‹qc•QN$(¢Š(¢Š(­Rä±3’dº–™lekQà ¬u–»¾9oyë#H¶C"d„n[Ÿ)Ià~9«Ó§*ŽÈUZѤ¯"Ó¢¹×OYv.J›¬/Á° ËRÔÐ? 1M79Ú¡‰kB5V¤ðÒx?¬œÉiö)ö™=½©ÔW4éÙ÷©—†X‘¬5Y*Á?¬\çßؚ֮y*ˆ‡£Ô rLÜÿ….®TÒlu,W´‘)¢ª‹ƒSD÷<-I}Ki8À˜ª~ÒöI’b—äêꂾîfñ3ÃJÌÙXbóË*D技jˆ—Ýöô” wûYÿ*®ž»^þÒBu%äöÕãùÕ¡ƒœ•È–61v±Ð”Ua¥Þ—.3k~÷vR‡ ÿj<þu,›hqP‹¬Þ.Á[r1+ÿ*\ðòƒIó/ Jšm-‰Yæâ‡ Uyº§Ÿö¥v©m¶Ú!‡ÒãœsþÑÿ•M\4©«°¥ŠU’誣SÝ'1pZb].ICg2T?•7E»]^ ®õqGÇÚWÏñ¦,ÚñÑOb被XóäH‹á¦ï<:rú»þt§JÜ›ƒŒÉŸ,´“Á/¨ÿ:‰`åvÉŽ22vH°h¤)…µ$ªd³óâšM8!¨î-¤ÛŬñƒ“²4ÊyUØïEBݹ¼Ã"åÈ#üCM’o·B?dó €K‡üëO±LÍí°ì,zÅÄP+Uús‹ðßyÍÞ‡yÿ:XýåöšYq×1Ž<Æb™+'×’ÔÜE„žOók«×sz××i{÷!IJ» ã?ʺ÷¯šåÛV‘¹KL…%ß ²ÈÜr\_×Ðdþ KÛ½¨€IÈϨ?5Ž­,•lÓB§6ŒR!Å$+aÂ{îja¡®,ZE»™=µ+*K¾­§ƒœð=“óQ4¶Ëî¡ô2”޹‘ÿ:ÉiXm~e„í;‰ôÀÇriSŽecM9ä•΃é¸ÔÛõÂZ!Z­Šn4rò‚@QȼHÎqîjıõ‹¦qb©RõŒd:´lŒò¼¸øOÖ¹ó©Z}ûIíLȈb¾.)S¬÷SAM(¤,ÿhá\zWHi)¦btkNj½(ÑÓß~ÕŽ6Œ\Z°’µsÉäýk›C N½ê§¥ß‘՝Д§eËÌÍ]yé HIÕÎ=E¶Aÿü+yëÿHiE­Xµ«õt€N>¨¥kÓ75F/Úô'MYi •<4ãMGN?ã\àþ†—ÐÚŸS;#h誛ŠR™(‰ajbš*ä„§<ÄÓaJ“÷[~¼ÊSJò²!Óúõ¦îa_e¼FŒŽK-©E vÜHÀÏãPÍMÖìÄj¯ìòd-²âfVRÚ`UÎO®3ùWLµÐ-,üOÿTµi)/žê¦Xa9ú$çøÔ#Xþ½=[n—cÛ­ÎðâaHa¼ü¼¤çð¡a#{ÊþE½¾Ë,-ð¿ÔåèSµêC’%Ýæ¼óÊ *[™ó„þ5%Ò6ºVµéççµ! S®4BÞJxV{ýG ÷6—ú99n|HÒº¹´8Ÿ0L[¸m`ü%ħ?ö«(íõB8]š!ßÛS›Û8%.îÛì’w{’>*³„oÕ’þ tqm%x¶þ’æèû×5ØvÈšô¦Ò”­’øÂÛ¼ =ûv÷Áõ©ô7pò Àùª?Dõ·J91¶ur¿dóÒq"…YP<ŠÏ>dŽÃ5zé²Ì¶6ü£Mˆ´å§âº—Z#áI$¼i¸¤™’µE)9ÛYÎÑȃí^8HŽ¢‘ÂGb)|¸®‚ “Ç$rÀ¦¼¶í0_™s•V¼Ï?-Ô´ÚG®T£UšH\zÅ+ÖH³îW“…¸Ôynb[ÉW™-€0óïõª¦ó¦¢ÛRãQ ‚†ÃiñÈT•û {“Ž1ë“VN²ëf–ýdä ¦®æä®¦[SQs“’ž Üú€ÍVÚšG\uZ˲ ÄÓ±TBD;{hC‰Çlò§çÔ¥'„ã«ixâ"â¢à߯‘MÖ~•»®e†j­«%GìÎ…-—’Hò©8À>¹øâ¬­Öpc¨Ê— Y)!—ß‚½R ûÈùïþ0áÑM[1Ã"å2*QÊ—6~åçä$M×n™Â´ƒöý[§™P$cÁ±Ç±æ¯%†¨¬å¯pˆûLdòÂñìz3«]=Ÿ?«­1_HÆÞ{8ô Ô'ª:ÛDL™Ëv§´ÏWçKnçË‚9lüÕÞšˆæ…Ò³ÊÕµå4¿¦H¥ô[±Tò¢0éNv<ÒÛè¼þ9«ÇNoÞfhœuÑ_Ç™/éî©fÁÔ†rs3ùaçŸ x‘ЗWµ[°‚BB›ˆˆ«ôivg_Ȇ‹¼øÑÕŬ2ú“œãøÖ§ÁçƒÐæâa8§7ÈúNÃis[jœÓ‘åIŒŒê[ø?ùTÚž[ÑÒâµ¢Î9Äß_Ê·Ê‹ŒT»LñëKõçQêeh«\ék´ÛRV•¾¥—¸•£ýåqŽIø® ýôl=-¦î¢<Ç%}½Öœt«Ü”‘ÁDZ=¾j§èƆ\{ÅÒçu(VûƒªiÁ'qäû×FX¥·lmÝŒ¥HY[NÜ`U¨TÕöÆÅeÊ·&! $ Ø a×6¿Öv%Ç%”¥[ʉõì?-µÞí×þÏ!%INT’~ï¿4Ë­õ~›´ZÈŸrˆCŽ”8'8JÙ+8œÈ)FjËR«ºèp°µ&{N 8"£²­÷Û6ôµ9Ô²¡…´èñYXö)­gººïC -©:Š5úîÓNÚ nßhq¶Ûuµ#ÄR*a Ø¢•eHûÀá&õ £ZƒOk½)/J[-WÆÛ¬mB“!¥,nRAoÃÊr=Í;_‘ôÌŒÙJã¼µ3·Èûdù’¡Ø‚2?„̵jKçVѶÝG1¸:n(…×ÝPTDŒ-M‚í ryÚ„ÚŸCÁ¤ãmyS *õÔÔì¬ï~IxkÌ×úXh{ÜX,j™v ˜Cm¥µµl”¤žI $Õ'c–-¡k¾Y¿X!lå¥Kt¸Ú7BðI²A®À™Ó[ÅæÔ"ê¨j‹‹J©•)*hãÜ+9úÔHô¾ÕwÖ—>žÝç•Ö.LÈn0Y¸BBWc8A ØB‡#rÇ àh†*NiIhü þÏS”£Ríodö¾ú’?ÑãGÜ¥ôew™°oûRÞu•8€“!’¬¶¼ (Œda\` sI’û6Ie«ÃôKcjSøÕÒZ© 3¥¥ÅŽ C)i m vT½t²Y£xw;¤XaGþÀÐ$Ÿ®{ÕqXX;_â'©yI+öFúq1ä•É–>˜"‘]:WLU°·ƒƒœîOÿ…J\Ôvi3•Ýw€ó¡9)jX N1Üó[X½.:ƒr-“ŽGùŠçº4àΗµâš½üŽKê—J.:js’#£ívâÜWºnðÔ½7 2^TypR¦èQ$"¾£ ñ]w|íqÝi¶¶”‹$`ãÚ¸³_é§´ÕÎånm.Û|© ';¬ùŠÙN¬§h7àÌU5ª£â¾¦û«ê¿Ù¥ÝC?l„èfaa!(w#‡³Œî3ëJº‰ÓI×Û&;PËJ_¦õ¨mOÔàŸÂ™úz^‹ÓýqtJr˜©ƒ‚´·JqùVFmB8öĺêÜûDŒˆOà8üëªãFœwØàbk~ËO™Ôº%pšN’?!V¬sà°G'ÈWú)e†Ü ´v7æÂ”/õÍuk¬©C°æa£epb#M,¬ žçÞ·n à¨r84!µ“ÊŠSÀ<÷¬CIÿã' }xúVVï»4¥m:àJ¸àzû®h¤ò­Ëí`>dƒœÑM‡Ú±râ_DVý!` ?k‡ Apr¾ª˜»ºjÊÜÉ@å)Ï£];JS¢à``#ý⹩KL¼ò³»Ãl{b¶;%sŸJùTLm¡´ä{VĸÊRµx‰HùôïXº«[>GVsÏ›šÌ.Í' …mÜ1Ÿo¥U¾æ5+sG?ß/ºšå¥î>Ût”åüj9#Hñ ž #2¬ç?տŸí©÷XÖ¹¶çʃzEË”¦„…2yݨ@R’ INÇÈ EI-ý8™iêÜÝgCZ]–XI>"d”!µ8F1ˆÇœ¨ö¤:3G?¤-:±'Å|Ü–ëvíªQðbåÅ6…ä §WÀÎ= ¥Ü•£±›‡8¾·®Á•½i¨ÛGMÛ¶ÿdºZymΘ·Zši89°“à‚9'9a²õ]æ×[Ý„4ηBºøŽ%©+J ”¶¤p9ä§½:?a¿">Šû3–÷ŸÓŠâò‡|FЂR ‚x(Ï#œúV‹†¸½aÖp’ô0íîAr1RÔ”ìJp¿/)=³LŒ$—®ÂÉïëA˨××ì:áz„Au¦’Y*­IJN=pT Dã]5—¹h‰R5ë›:‡k3X” ¤¬#j›ÀpWÃäÔþ~˜F¤ÒRìsÄH`4HÎÅŒ«ÁÔ/NX¯·> Ytö¬ a:E ¸e¨îm¸`$%Ï£nÔdg9ç©|Ȭ¯qOOﺦï¯u+7ñÌ(²’ÉKäý˜„¨´n )É'YŒ‚•¥Ä+j‡b;æ îiÍQ£.šÂÿ Û„Š—5¦€qR|@•ì@@N+Pîíš™ZŒ³nŽg¥‘7ÃOჷÄÇ›o'Œçö«S½¬ËG¼™ØnÈy aå¿BN)ý+VÒÓ©ÞƒÆHÍVøP!Ä(v#Þ¤–;èJC2ð>sU©Nú£M*¶ÑŽ2íêaá2"ü òŠrƒ)ÇÛ±P={ ´<¿´†‡ñ¬ßž„±ÚϹ"³ÊN][]ŒTzײ6‚þ?« c'šõ. ùÒG8äw¤ÉŸ(cŽâ”75 ;@N}©n\†Æq|̾è(îÙÉwˆ¤6´ãÊ®E?©±È9B»Ö—š¶R{zšU2»‘Vžeb`ì8àò+9(zýktèë(ûÍ`ñÂ2?Zè§sšÕ·5 ío?ÔwP$­—\#“À§ñ’`÷õ¦­T͹~åë!+ÈShÜHïáÆ”j …Âý}žl¡+Yj3 4€xHüù¤¬:˜Xy¦Ð¥ç.Fíü¹§½òÕdÈa ->"N'>€÷'Žj*Z7©m‘4œ£E½Ùgh>^n-%éËn"1ÈW*Éø©.žÑ×= ÔËâ*Táƒ)22„VŒáiãÝ$Æ®½2#ÈŽÛñÛ eM „íÇÓ?8ÅH’Ã.) -$¨ú‘Ú¸²sžªZž‡Ú²u2¬¦ùøö뛫·€cËý³*‚• Œ~ÈÖw™F·Ÿ Z‚ ?ÚÇä ­ø_«ÝZC¨ýJýÕ÷°=DZúÖm  àƒ‘ƒZ“Nís9–iÙò+ 'vÕ¦û-WHβÙe•à žT}ÅEçÙõKÛLاìQçL‡ÞˆÜ–ÜmiRSû%ðHÈÀ÷íÍ^‚Î~ûo#̓… Òô°êÛm6Ë©iaÄsÈìi´ªN*Ì+ðª;Ú×*ˆÚVåqUÞ5Íõ¦0ŒòÌr•HX9I-ç òœþ4©V_¸"V“³¿jRä‘!¤ûåHÎÓ“íƒV”ø«zBžRJ”0¬'q8íñI×I¼ÉÇ5YC2´†P®¨¼ÔÖ¯·aìRåÆL)®2üÉJCnèÂôHÏzǰ³_þ¿b|Ik»L”îØêß±ÀIRûgnÀR;–êë‹ÚrÐÒâ%³{¸nidœò<òUì”'$ëPþé¶,‚Rc-N0Û¥ (¯ ‚µèTBsô®~&Τ!ÛúõØoé*SªÝ®š·ooÁ;xÙö‹ )À)ÀÊ»OµDcZÆÔNº¸î."í¼…µ§ü‰YǪ]-þ⤶²<2—'c9¨·T­îIÓ2Xmo%;‡„¢•V2=ð8úSª6¢¤¹jd¤¯<—²z|㲯OË•UöLÈ))ØÛ©ò %Dädr03žõ\õGM?p¼F™¦ô²Ð˜ˆoÃûk!ÖTétø¼•”8£#Œ0– \e VT”Œ’sOzÙëÖ“Õ.9¤-š…zQ!)1'(¾B@ œ¨\ë]-ùkeI“(«¶½9¼ö¤RÐô¤¶ö€rJ]f庇©JÊïãøô íCb‹"Êд ¨¤§n@ªËô€°m׋‚Ú Xeý•Ž>¸5kÛmI²>W„°µï-`{ãÛéM}Fëf— bœCá—¢AÜãðïéYZËgØÃ2ÎòìÎN·([ºBÝä7TÝØ|¤ðS¢ mÇŒúf¬Ž…Æz\¶.©!L¼â÷s€@ÍDºe›|êy·H‘eÿ²ÅJ~ãm¥¾žÝ½Ïç5&Ñ¥)¨`Ú­òZR‡ì^ É óÏbAõü«³CÎ2íÔãc::£ ä¹ ¥ðF;þî=ê\…¡”ÉW§Ç^èiaPPT°\úzÔâ7 -G'¾+¹Uª‹7#‡FZºëÎgz¶€{V)oîQV;úÖÒH9çØW€ùÏ'Ž'æ—{-ZïS¸ë ÞÚŠ‡n{š+5á8!Gð}(¢Éî‰M­™ é°Cz6 ïçb|Lÿ¨ªp›5é‰)mE¶Àãæ£ÚÕÈÒ[ó%¶üL=|E?!)Ç9Éúq[¡dÙÍSê¤:AGq=ùí[Ô„*>}«Ôî#¸­¨RJ{gÔ~=é¥E6yêj@Šó‰(sî'ýw¨†²+MÙIL¦–´¤(b=Á¨÷KãÀw¿].LF‘¨¾ÈiN<€§˜BU†’‚yJ6`Œpr}ê³T1ú+¥.½†ã*+7‰JR·®*dmR»„„§)´³%¸q[ŠLµšm‚ÚI>\zþT'öÁ(B· íQ#Ž V³­1äjmO§lR[µA•gcÆû8 m™JqA>Q€7 qŒƒJ,öWu¦uŽ=¾Çi¼Y®L.C-#0.Ü”/’)9 ¤gÚ¯öÌ]VˆÂ6–ñœ‚îÕ²R›ûS›–Œ•mÆ{Ç×â¢zíxºé»|#eÓöˆá÷šŸཡŵE’Ð P$(äŽI¨>£hz·p¸´ÒäÅXûŽr¦^û:Ke³Ý*+ä`œjŽ'0rÑ4[ ÞãËÕtÒ"¬? RÔîFÕ©I ¾FÓùÒ)ë .Ëyô"3 —UÂ1ß>ݪ oBÉ|ÔWký½SË:6Û"‘ýjŠ–•!YÏ’AÀÍ5ȆÚu>«·ý†É3Ú?íõŒÇ…/bˆÀ`óÆÓPª=ˆÎLnºÆÕÅlºÅÿlGYfM­(+SƒrrTFÐ'=½©þ\”Æ/5öwÝsJXQIõýÅTÓ,ö”h^—Õ°OÚ.6âé  ïß[¸ç%#9ïžÕ®ôÕ½zo_].)i7ØWGQ òpüpŸeKGºAco|š8nFftÓï"4"¥Ô¥D$žyíZØSg JТFxVr3ÏþµXXíì^zÓq•zŒ™`ÚmÒJŽPÌ‚¹a=·yqžàgÍAãYíÒ4>œ¸=*›+\oHçÅTuIqµ3¿¿†PHÛœsۚΥdi•W{ÛÒ:1 BÒÚ’¤žÅ'"¶‚€HíUÇLâ1oê7P­n,òá8ÌfRÓjr*JÊR8<œUŽr>joqÐy‘œwTÉÇtàÒ³ƒ…Œyö¤¡*PÁæ½Ü¦þ÷#ùRä®ÇEÙjh½Ä3â$ŽõÊRGcRæv¼Ê“ƨÅͯ³HRHàžkFâùñ0ÿ%ÌÂÞÉuÃǵEúŠéLgâ§–¦6ÃS§ÛÖ«^¦¼¤°àO±«NWR·"™mûJ«H[™~EÂäûIqmìÜ2Q*&uw¤ÍÝáÅ»$¼Ä ‚¢ãJÞ­¾ÀÿO©©?Mÿoi¼²µÏ³%cà¤í5hÙYUÂÇÅ6 öħ>U'øòXºmÖÍgÈ÷¸J¼<$SÖ<×ÃîpUÇHu¶RÖ–7•ã…òœzc·Ö™,ðd±qiï3a²{0qõí])ÔÛEu!vØ1>ÉÈgs«%ׂ²8ù¿!TôØ­‰ †Äs³Åý©ÚF¸‚Ÿ§±ßº©Êñ–£±x +%Jj×ÖßÁÕÝ/mæô¹ùa^3È óýàŸLý{ÔÒ;™9#¿™-í&-®,tðÛ,6„sÀJRü±N¶ÎR’R@>n{­g‹×A^fÙåÆò©Ì£{‰['þ{V»n¢†ãâ,§DwóýSÇjÓñÏÞòâ ’N{L}h‘j·Íc› ™ œâÅ1A§x²Šp’´×È{¶*3­¥KB’0<ÛrƒÿX>Ch)q“ô"«ætœ,ª#÷kj»ƒàâ~™Å.kFIHÊu–­Ø=>Þñ)­E¼|ÄNµKx¯³dÊLdJ1„òH©íP‹¾«€‰FžŒ5Ý'hj9ÌföŸty@÷A&”=¢ì`x“v½`ýÛ…ÁÇPOÊ þéèÖØ>H±âFi9e°„lQ'7½—›û/2i”5Ö^Kùmùx‘HjJ%J½_e~²¼ÍG‡!ò0†›ÿá4?q?ÄÒo²D¶Ãa 6Ê ÚI9úžI§ió¦\ÞÚÒŠ=Ç•6ðÞV¼¯“’7ê£S«9{ÏáË»åÈÝ-´ù0 9çšWu‚§¢-<ŽÄR«#q֦еs‚®ôór¡hm;©ª’”ng•L²H¦íúrä«õ`fÙvŒâ”ÛÈO•à{¡Áê“òæ¤ð5Cˆ·ß™U¾qmYÎÿ”žÎ‘æ÷O­!¿á@Qo;ræ úT¢Æä;í©pnq™”÷ÐëaI?P}k-4Ó´^¾FªÒRŠuךû®ï•µîb3åcœÒñœíXúƒÚÉ“#y:+TãéHþtºãÓË’¤4äøÍ«€„=¹ úçݧqmà·Lö[Zÿ2š¼•[ë“ûجU{ÿ4þ—\Ô(T‹,go*ΈÊ# ÿyÒ1윚ñ›{¬¸©×I™p)ÂV„á¦u¤úuM=ÎÓÓI vÿ1ƒÚüíIZ‹%Zy.ŒyNÜgéŠÏ%-š%Ê Ýg>k»q={Š[sÀß²[%GÊVÎ=ÉÀòžoZk¶ÇY¿Ûßq¶›ÉSÛÍÃñô§~´º•ožÁÊá»A) G*ùôÁ¦},¿´ÜÕ)J+lË'° w5ziÎP^·7æ.ÄT}–ù¤Ž›é«åÈͬÇlU­@4•,Œc¶j¤é¸Ra´„Ú­›t@[Üá*$ÕíT)E3ço²7xÈÈ9üŠÉ8<ƒ€yàf”Œ­?sà Jücîlá9ä{RT¢Ý‘¥ÆKVf¾Sß}(¤W ƒ1⓸nô”S¡JMX'©Ð*m­#'+ì}7«šy2T¢64Oíšm镽OéHO>¯)ñ8Ïübªh˜ÈO´‚?hâÆ)#-:R”S# ’ ¿Ú$ d`‘ÇúïJRêUÊ3‚08þTó&#4B’®=*)pœ‹;êaÁœŸ/5xMOb'd»}Œ]™»È¶ÀUÁ B%)”SÆ0ŒŽ>j7ujÜL(pb±´–ѦR–‚y$´IãYõ?U_µ•¼Ê¶À-ÚâOj¦ %öˆHN6îòýìòN1RK¶¤›g‘|q–%1aCj¸%†œ;Ó»kIÚw¤…‘Üñ☬ȒZ4µ¤BTuZ "‡râ¦:j?)Æ zz u:kO›b-£OÚ— ܘæ" I8îŒgµ‘¯Ìšr`»;L» ^>Ö—›ËG·^SëÚê¥N€åÓìÖÖnÎÓK¸“3b·);”††Ó»jNNHöïSš!tYöeÆ1#Çi” mBH ØÀü)¦É¡¬Ñµ×Pʉlû„„ÈJߌ….1JRœ!X$´­VnêW,š×Uß$ºó°¢Ú"HJ²wãhì ¸•K"uéoš‹uþÊÌI2`=2jQu*-VÒÉBp FG~j­Å’¤žäØÁ€Ì™»mˆã²ð^uL¤©ÆÆp…2SÉàñÉ­‹%¢*·Z`Cl%Hb:U‚¡ÀàGÅWöž ÝnÏé÷fZ‹þJb-2ŠÜC› €Zv€€8Á?=øF×Qo‰·Cº7§Òä9WCjl ¸pÈܤ¤í)ÆÂ¤ã9ÈÎqÇ3š;‘™#zwO´Ãq˜²[Xi·þÒÒZˆ„„:2€Âù>nüšO6ÇmUʲmpž”Þ<9GJœGÑDdzTeEr$-D›Í± ϲ<Ë*f<è}O–¶©IN2TÈã½.:¾th¡7Kl1:ÃoMÇÃ3Æiö”Œ(¡$RAÈö>´9Án ÄÆÜäd®X‰JPä”¶ã‰Nv‚¬d“€{dÓ¤{5‰Qa»M¸Gf@”ÓB26¶þâ¯# ÜIÜ9ÉÎj¿…t¼9ƒg“i‹Ûµ±Ë…°ý´¸ͧcÞA°ùÒ|»‡qÏrtZû©îÚ Þò#º‰iRÚq¥²ÔìÛ¨J7’~® ÊÐíhVâSŒqJ_|6ÑPâ›"8’’¯Å#½L-„¶ÐÜéá)´þ"ŠÃÍ+K– #$¬öH¬.L-ûkÑããÅ)Êr{šÓ´ÃAyõÈ_*#Óà{R)“вZR”S÷³ÈUÖÕKU—ËQB޵D’’Ü–øqµp }±UoZug]¡ÏBt–šD+R‡ìžDtÈußùDä'鯭–'6‚üD, €’¡• vç¾iΕøÿdÛ,on¥ªRO} צ¯ÕõÝý2¦èŸRµ§ë˜¶^¢ØÓn™4‘ ci؇Ö|5¤¢ÁÏlUÍ«uKNœŸx–ï‡ yâNÔŒ>OaóLºMµ1´ÊŒ†q [x!@ðR}ꪠޮP•c“ CÍÈP.d„ž~8íT©9Âú¨Ñ¯(¸»[{úD§zÖù~•7R\åE…iyÓ–!3~‡yïóî{UÅÓMëtûy.CKþ) 9ÉN{ŠˆA°[¢CLyÖ¦%'bã#ÃìF?:”Øî1#²ÌVØi¡ýZ[B@I#Û¿ò¤R¤ã,Í۸ו‘´#ÙëIJ¡ÊjBO­j•“ʶ}i–Ÿ0R8ãÔSºJ›îI'·µmRº³8N]Ä’›Üœ>†¢w„¡“½CjB‡sSPRЉ<üTGT©(ŒéÂ1&ïcYëi—…ïcúÊÏ룻Äl"x™ + Þ• \ÿèEE-7/^ÚôØð‹lGWŠP€2ò““œœŒñÎjouûï]Èý§ˆD§Cxó•¡ 2;ŒŒßФ-iu4MR›BÓ9YÁãïôªàäßa«¿øø_íôGqt¸§ì“Éã½[°6çTONç¥-`»Èæ¬+f£ðç¶­­«ŽüW²Qu©)efO³ŒgùV2Fæ“ÜÍijc HXp$}k\¹IR|6°ªÊ¡,Ûœã—q‰›X[¥ÉNe!^PsE<¶ÐCxîsEju[{™¥±éó­1¢ ­Â¿´ãñª© CÍ…!GÏ«X“oC[£4¬)[ý{~ÑTã§õ"â6#¾R9 5xѼ.·Ö²{²Óœ­Cµ Xò¯­­ÛyÇÍ.¹gŠ PàÑ¥)eÅâ+¹Å2”uejÍKDU·]©W§/zbØý¡«…ÏõƒN¾V—šË©xµ´$‚7§…nȱ§ù:^l]gx½±dÓW¦nþŽ"êŒ.;ˆFÂR¯ {’@IÛåç<úTÕjm¼…:ÚHà«{ý+Ò¤…¡*R|ü’9Àü*](½Ä%b5­ºr­]¬l׋s°"Ú›e¶n‘Õ¹+u,¹â±°$`áy$qïÚ¡7Í.Ϭ.ó"ÙìWV®µ©7$¶”í%'b÷$€8ãœóVå§PÛ-ú¢-ŠDÔ·.[Ku¦”q” ¤OaÊÓŒ÷ç©F°D4ÌWޤ#)Ê”®1óšLZŽ·8Fpâ-ï©PÜôН/ê”Iv;0ï6¸Ðãøi%l­¢¢S€6‚SÀ>‡µ!»Xo“&·zÔ@Ýn¶Hf3Q¥xŽ8á%#o HÏ~õe&ÚñìËB›<‚ZÅ0C¨ñÖóeÀ^ñŒçÐýkFH™ò•ÇLl·Yv}*îÌX°¬ÌÙeµ­O<ï…±%ÀRŸhRŽÑ»$kÖ4mõ:~ÓkCSµ"nεm-Ôæ—ïa]Ž}jo¬î(ÒºjMæBTøŽZ a gÄu-ϦUü*E 1#n>*V°vðsƒíP¡ElD›éD»ãZÖLÙÙMíÈ/ÛÔ \𜎄ÿZ’ÚTœ ÊIìiÊó¦nW=¨¬ŒØt¥Ž\ø*ŠÓ–â­‹$(áð’Bs´…cžOse0ëfÐKJsƒþD´£ªtl HÌuEfbT´¡ÕS…”àŸÂ±+JM³l©Â Es^¿‘©Jâ5Ž–¼ªDoÓkzéÞ­êZÃ` ¸)òäzqXôÇOÝôމfÃv0]fÚ…$EqkS¨+R‰R Ó‚8Yæ¦é'=©“Bê8Ú¯IÇÔ 0äV^SÉØê)ðÜ[d“ÛA?2öw+Ãûÿ¢¼µé¹ºÆ½Vb}¶÷]¶D¦V†žTt4y’œò3ŠšÛ4æ«kXݵtÁc2§[†Ü$¾êšl¶²Nç `¨¥íàcÖõÚÛ`¶*çq–˜ÑÂØQç*Z‚RõÉPþuµ™¯:“±ä­'!%*È5NwtÉ‹=ÿßÝ•µË§W'tGU¢ÐåþLIíñµÃˆ¶…“»bN\(óØqW¥s]·4»›˜– |Fã¼]m<œ¥%$ñÝÄA''“ëOÖÅ—#\TV¤¡Ñ|3YŸ¯[‰¥$µ!$zö§xç,§Ö‘ÍkÄo=ˆõ¥Q §éI©,ÑFºk,ØÓ©ä¢4R·„Þ«O{†¨%@­°àòø¨(Ýÿkdjx¯¡+ûƒš«º³á®Øê@h¨$í NàHôÅl¥%N•Ù†¾µÍÚ¶ûÝÕËÖB‡Bs‚ÞòA'à“ô®®±Û›Šœ†ãŒ¡Öó-´«Ê²{{+çö¶¹?2ìü+‚Ôp¢ƒê¤ðõ5Ô_¢—X-·È éE1˜·è©KqÔó›DÖÒ6ŒÝ`ÝÏÏ5ç«k<ÜWƒƒ†SO_^¿¢Þë.—{Wh§íL-Jm ¯j•„äOžk’“»sï[ä´K(T„/ÊZR'8çhÉù'Ö»ˆ£Å^âFHÚww®Hë5…zc_ÏC©W…1*SJ$¨9œsϹÜôçâ¹Ø˜8¼Ë™Óèê—ƒ¢ÞÚ¯©$ÐòWö1]Y@üE!Dän'ʯœr@Ç5eéÒ E uÅ£v}‰åU&ˆœ©SÜ^ÆÂnM&B€Våø ;ßûÙâ­›-$-@') dûûÖZk¬„Iã$6…%8ÊŽN9Í(Œ ÛJ‚F;ΑÅä¹XNU»8"œ`’´Ž=ûÖ´`½…«¦³÷3Lìº#•ÍwÏ%ÂCiþÀÇoƒóO²ÑºSÉ PÜ=Å1¾”ø†CÛœ©'ßÐ}9ïS-ïØwB7\~yK‰;Óǹõ“6ô…y€ØWÉ*õ¾¼ÔW]õ3OiGK2d¥RÖ*çúJhÒWM_­®ómP£ªÐ˜­6ò•5¥Bó´¡9Ô:°†²zù(`+:\YuaÚË-† !ÂÑÒUŒ•wÏ4©•ÁS¡–å3Æ{þ5²tÃ\ɺʃZ.*õb áÄŸ^GNiÎÑÒ½Gúîku³‹†ØIŽDT•œç;û8íZ!Y=_¯ˆº”°‘½ë§eØþÄ•¦|UŸ æÖ—3ÆsšEqˆÚT—×!¸¤üéžgLu_ëvX¨`;m«ÅqØÊK‰Ç`6«œÖ© ¿¦L³j´–”²—RZQPIîä‘ßÞ‡4׺þ_’±öDîë/“má”%·›-ž0U¸÷÷ù¦÷íŒxaèê '(÷ÿ<Ódþšëço/Ç©ZT6šÆu”ò²xNÐ;bªˆ}@¼XïŽZ¯©¥¶áH 'jûã‘YåVylÓïGF†8„Þ¢“ìññ±wØåºÛéC™ÀY öíS sž+gýˆî*¤]]î:JQâ-¶=¿–éT8êÉB‰ðÏ#Üÿ ¤Z3—ˆ†Y4÷B©jHVÕpsœ …ê¹ Et« I%GÓ/¼-¤)Ò´à¤wWcš¬z“4CÓZÂVRKdŸUpô<šN"NÖ+E^H«ºlüKýSü5–¢%Û£©9IXÝNxÈü+›-«K—õ¯yý£ŠpÝÎE\«W¶i9ÚwJ/íËŒwÿYºÚ¼6Xd'{»r~ùHÆÑÛÓ’*—io·áÉy•á( PÂ{p?.kn‹P“í'¤+ÅÕ‚ÿ]ΫÑ:£ìö˜/:°%¤íÁûØ‘RÉúµ”N²AedÈ( %=ÃiåK#ÛÒ¹>Í­·[|6ÒeÍj^JPŒð”AœñÇ>õbôžá$ÜWt’—n7Ù>Dr#¶aèŸÆ·UÅU¥EAzübxyTÞ(ëëTå>†ØJÎN3ϦvôšNrN9&ª¾oÔ­Îçoaô«>+©ÆIôù®ì3JŒnréhõI’–Z <š)9GÚœ9¥#‘ïE4ºÃܪ7x•=¡Å9h‚3„ /þâ©D¾c·}OúïItð&ÏøsÓþ1TªPÜ„ŒäŸãZ¡î£ ØiH¡¸ÅÍ™*ïNï¹á4¥œ€;|Ö«3ay)¬$aÉ)c;ž;U‰9ëR=o“£u]Æíà F5„‡GŽ”øèJ[IûÞœÄf¦·ˆöYú‹¨îj”Ç[Ð"4a*GxÑü ¶‰û¤¹’Tžw=Hõ/MÛÔU)ùêy¥<—i1YBÖ ¤¶]ÜP‘ÆsÇz•KÒÑf¸Ô›Ýª §å§Ž•©¿ù$Ž;úV|ºêQR“ÖÅo¡a³sêV†•©aD~cºMNÉT–’T·SáaJÈåc“ñÍHúÏt‡*õf³¹h·ÜŸ¸JR#ý¿geHmJ+<62$žâ¤7´Ú'¡†äZ`Lr2ŠÙrDt8ZQîPTÓò)ûl ¤oé,Öwnðä4—¸v8P#51¤Ôœ†7hdD/¡Ò%3§.ì´ëJù1–Ê‚†Âòß÷9ãàÔfçËŒ+·N¢©Ä=m¸Ï¼2')oÁÇüàsI§ìfÆl¦Íný\’OÙ>Ì$•³y$“ÇrM/4_ºÇË-/¥¿ ©cC:7VÄa˜îØ`눷‚¦ØÊÙñÞxJ”¡ÀÉz¦H(mˆ,1:Je(O<€šÛÑiU˜ÙÕl‚mÅ; BÂ<3œlÆÜgâ²r H™‰+#46¶Ó-„!Ø$p*Ôú³!R²¹ŽÔ‘NVs„(zSzSå§BxUMgÔc¨®ºÊ!-ük|p|çëšM0ùB}Í+J`8â±KÝFØû̈ëF®ÓáZäG‡Îû¨+Ú?º=þµQõ6Ø÷êw#®L©êÚw+! _À `Uíud®1m#äš„jkb†¡³¦™k«•ƒq‘FN鵂ݯSµ:éç^$e´K©sŠtT]ù\ßN4q5#Ç“I|¿+«‡^:Ô»¼ûí“BÚÍŽBRÔ’›[޵Œád ¤’¬ò1Ž;aŒ~’ÝuÒ²§N¿Ù-ó˜PDËrÚn6Üù[ØRH9çqQàsït[l––Òëè*‡ŽC|àxÅ.Ÿf»†Ê'À·Ý[ (‡Ù*B»úÆ1O$µ^¼ÍŒ ¼°Ñø¯ªú”¥GZ.öo1-C3+J¡" ……¥Xó¬ïß‘ŽPžkF½ý!ú¹¯ôÓºa›U¬Éy¥ý¢Ø—Û’……¤!E÷̑È«Ù6{’˜q¨¬Á´C<-¨Q@}Ù¦÷ôÄ%[3âp NO¸ pj\]½}ËQè¼%ºíß¹¯¶Ÿ2´ÑŸ¥ºÓÓƒZÛ_¹Ì[imÕ´Êá@yTxY#öæ¥ÓàZú™z‡vM–|l8•~Ý’ÊÊ„¥^ÅX*øÈ©•Ñ­·r3„Ò•y_qO-?Ù*>aïíSø­¡ %–[(·zŒzÖL°„®¾ëáÙü¸xJ­Ów|šÓçmßËSVœ´¦Ð\C(û6æÃm +w·>õ*³0ÜVÞSyJIÎ~idîqhŽ{j_=Ôµ¡…c'>”·kÜåÖ©)½wdgT>§@., };ðj£ëìÈÈÒïÄS… BTžO ÜOÀÀ?•Ye¥Én( )¶¢”÷É÷‡¥P_¤­×ÂêRùRÔ9߈5†]y¤¹³M•Ýò)=Qµj+»a„É– H@>Bò­¾Ù8ǺjQÞä­4œ‡§çJRáø€¹ FÕú”§žÄðj.ܦä35ô¥h.¹GªÂ=¿•H'ÜwõTd¹iBÛ÷J‚H*PŽ~A®ƒI¤¿ÖÂæéSMÚ÷OîW–ÉBÕ9ø×rd–mD¡Ä(ÝPìAúqV}‡¨qÙe˜Ñn C(@NÇá¥'êÙúâ£×.»ê•$,µ9]ԮΟ“ïóëëZlZæfÎ+ŠØýå#?…mÅÒ§ž[œœ<•xpåkÞ„êM¾j‘&xSh‡øj̳õjË7ÃiR·Àe†’\u~ÞTçhùV*‘ÑÝ?Ór\LkƒÒf6OÜkö@Ÿ’95ÐZNY,PPÍ’Ï UŒ©´ êú¨ò:¬1x§hÓ‹9ªXX6¡&Éö—“*L`ó­–¹ =è§ŽÊùÑ]¼ÎË>âéÁ¨•‘°Õ’„g!Ãÿ÷[¤ î@à€ri|¥ZÛ)Ÿ8ñЦ÷TV”¬€0sÀ­ÔÝàŒ X™ÛIL&É'„ñǪÝ1dzœqÈäW–—íÉ;Ž@äf‹w w>l|Õ€Š3Ô›…²ß¨5Ó•k±]ÿVËX›µå¨¸”4˜Wõ“¹Iî}³OWÞ¢I‚½KmÔv– ?g¶¢äUY}´½ÃnJ……'olƒÅ7½Ó‹Ü®›ë+#r­É•~Ô)ºERœXBÇVÕ¹ Ã*à9÷Â]¡ß¾j-S>d¦[·^lMÛØIu·µ«yIÀÜçœzW6ò•L݆ŸÝ…;v¯¿àZµ5Àß­–›å™¸+»0·¡©™^6 R›s(N´ç# óϦû7Q&IÑÌji6ãÇš¦#ÀlÌäHq{'n€¬ùŽN8ô§–4^¥“³^¯’-‰Mš;ˆ`DRÔ_qÄ‘°mÊ7}ãÍ1@éÅÙ}+´iy.ÁTû[è’ÚÔ’äu­„¨ A ñëëëºò{Ú‘'Òº™wi×k\¸ñã϶8Ú]Ly3N!ÄîBÒ­©<ò0GôÍW=¥îC¹M‚óߪSowÃLÕ- iÍɤ€Ú¶ò@È'×Ö¥Ú'M½Hve–ÉlRÊp‹j·žT|4vÉÇdÔYè Íçú~ˆOÀHÔ1 5ÅZdžXÎòæpxÆ~qT¨ÛŽ…­$“^´b§õEéQ6Çp²C‰pýTnqvLS­”…l(pøi)PQ•º¶’Ú“Šz„ððÊ{S}ÛjBˆ#µh¢²ÊÂ*Jë2(~¬[Ùð\uÍ¡#9ÉÀ#ÔW]íLÅ:‹IJ„,‚;¤ÿÚ»¨í2üWRF1œ×!õM‹{w"Ûj@ÂŽPÊ•'œ(\úRzFêIèÙ®#i[Ë´Á.6Ú³»wf«$ü=©DÂ’¬““ê~}©2sœþ5–;*{Ö,>†^UP.Þ©uôŸjì’Ïæ?>+±ôÜÅJ‰xJ–Ëa‚x*ÆOoõÅpµ×ã]£É†¥%Р¦Ïc»¾+®úg©ÄËL Œd¼ÿŠ Ž‚™iIÏÐžØø®F:žJªkfuðSâPÉÎ%ÍRRPè !Ð Iõîǧ"œ–âPÆæÅ(…y½*1m}d;[+J ǘ÷àqOJy)K™AS‰O ÎHWö¾žÿ¨Ë@šÔuƒ(!ä©K@'¶}…;¯.4WIÁ*ËàÔ.DÂá@7€µ…qßÛçéO‘día»Ÿ¾SÇp;S ò)(µ¨à¤+‘» …$ò3ŽN;f” •%!^SŽÁ@î¬xócõÅ5;0N榜k*RÆÐ‘æÜ=>+ȆÙHRAãžr>Mlu-¥%nÞ˜é¾Ae*ËM•‚œ}ãZ#'ÈºÔØãÑ w¸ÀÎýªÞõŠ&GR@eŸ.NqíîkJvç†Äóº°+G*ØœçƒÀÍD™tfBKêJRÇzõ´¡-Ø“éé^‡Ôp<ÇœúVÄáŸLšÍ23޲ÛiNHãÚ‘j{ˆð‘;”H׿çÞ’»tGˆ —0ÚJGbxäóíQ¸sEÁó&Få6‰ldƒžG"³T©¦TLawwÈÛs’ˆPœ8Øáܵ‚?ô®Eý#îÎMê PPêÌxèRƒ•«$ƒø`þ"º+YêÐb¿&D¥3´\X ŽcñÛS\ct¸®é~™vxï\© pƒÇð?ÇáLÀC=W>Kù#,”ÔyËø&:E˜2­¯Ç}aµ’ŒöW‚}xÏÍ*±¹n‹Sø2c¨–R±É ÛÎ}qƒùša°-Å5M,î[Ÿg)ǺOãŒTïJZ­÷™©DæT•Çå2­«I<Ç|V¨Ú2•ûneÇUjœoîØ°ô–›jdT‚TE?§F¾ÄŒ‚ ƒK´ ³srR0— Pàdw«v%—ípÀYNà;צÃÊ–.š”ã±å%&¥dî@4Æžf+èP@ïÍZp¡%1RR¤0-m´TÙ(v8© ¤¤´¦W÷½kšŒUƒ»³í©NZ8?¢½†vmIýÓÍ̪›‘Ñ¥+"#Óô¢O¢0  °æ}ÿ¬UGäG\i Œ³Œ)çNª.•„èå*ß‘ŸøÅSÆ¡„ÔÈâTp ÁÎ9ù®5—Àåß4æ†Ý6öP¶{)Â)}Ä’xø¨û©§¼@)àŒ÷§¦Þ)$䑃Í4¡6aYµ¤÷òúSUÄä!òšSj} ‚¶óØR9O!‡w¤(ŒƒžAÇð9¬Tâã6n«%(# kB#ìøô¤ñQâ­ ©[sߊÁŇe~Óî'Þ†ä6»€e—§P7)°¡¸$ž=¾kRVFVîÅ4ä2zßÀÃAk*=«%¶´¬,¤ŽExRXã¤9fZŽK+Ð+ Ilgulû2 ¥,î¯Q¸7°GlÖKmi„Ê5Fù K˜‘YàÒ¼¥mŒR(râÉmiaö¤m% -¬(;ŒZQy€B¶úf¦Z¢±£ÁZÙ=CÊ;Ö¨áHÚœzÖ©o…8@?•Fò5¹Z´•+Ò´çrʈ¯^Äãæ·Ä`¬ó÷E?H«³>²vFû{=ÜWá[ÝVåcÐw¯°Äp+ăžæ³»·viJÊÈØ•š*=éO޲µv­³I+ ÅhyA†O"­e~l¬Ý¹!®ñ1»x.)a)¤Õmªº³¦¡´â\¹³â à¶Ùúf›:÷¼x¶Y‡CÇ+‘%Í¡¤ûêO5ÌêÓ/´©’ï¦<Ð|Æ4b¢P< €sXñXþ”VäPÃ*×r•‘3êVpmØÖDKÚx\Á|gŠ¡.ÓŸxå÷Ã;•“€NŽü÷'Þ¬‹œ;+p¶\%"|$º’¢HŸð¼OÓ 3%ØT×Ö[ujRÔžsœœùͳ®óIZ1¡Ad§{½ÙR¶‹«%?ÙÏuíX œ~ím“%Éø‹;q©OaZR¢„(ûŠÒ¯mLóµô°|)L>Gïãñ«¿¦Wg¼¢Î@ð]t?Yò炤ýxÏþ•Vêël+eÅ›ZV ò-ì—T¥d‡Š”žOžÞ˜«Eˆj¸è{UÕµ”;á´Tâ@Ü•§Œãçük™•áÉúGo¢bœ§~®_v{Ë)uå­Ð¶øJAãÞÞÙõ©#RÛVw'j U´ßhÁÜ~=+ž´–£uI\I ð%íx+¶3œƒíM[ºrúĈÏÄZÒâŽINAQH''ñàñ\ØÏ+Ê͵°í+¢b·û9[Û|@7£•ëôãùÖ6’RBYd¬ç'q88>™ô¦¶n-)…H>d «*ããßéñMÎb%â8j>^q{|$¯ +ÆFï| ~ulöi£&KèË6CËKÈpá¦i ¬’ŸSÇÏàÜê!8=ñéõ¨žïâºÒšN[˘åH×ð<ÓÛo#xÈ*y„$àg?>Õ®:êŒí[F,uǤ«+=Åhb0t‚§•ŽHÏ5µ—ѱº´¯jÊJGt‘Ç>õ¾*Úh ¹…gÌ0Gµ>©é¡Šboó¥;гøãùM"*ZR„§¹9'š[ÀB––Ôwɽ'}ckj ”úp{¯ÅYØœÍ1³†Þp$þÍ'p<xÿCæ´È¹%¦}KF[É Qî+uÙôÆaÙ-ÈJä“ßÓÓéQk¼ïm©M-•+—Á§!Cß·ñ¬u^Q«¬7jë«¿©Ô¶Õ—TæÖO‹œÿÏùÖ¶f¥¸>GGŠ”à `déèxÅC/w.7VŽ„©¶Nõ­ûùþŸÆ‘ëL»D3.OSHC ¶9Vâì09>•Ï“nZ#KDŠÓô‹Õqãé¸ÉB\} vVÕy‘…$þ@Õ.ÇÜòžAɬ®ÓäÝ.’.SV~C…kPíŸað+Ô6´FSÛxHÇÿJôXz …%Sƒˆ¯ÇªåÉmà=ÚV¡fy¦É;ÜmH)î¤ò>@?ƧZTEûS(œÿÙ¤?y?¶ >‡[EVØÙo%%Yq?ÙHç#ùVk*¸Ea)p…ë Üžß½íõªºiO0Ê–­G†ýz¹ÛúJìÓq˜t¤- …$ä‘GÖñ\¿±`¶¼™7[-Þ ~«YwàI"¸¿Né­c," ¿¢e•®_L$“ŸŠé®„X,úVØaÛÝ%¾wK˜¯¼ò½ÂGµ=cêM¨Rwð8œÃß;×°¿Zi©QR¶Ô€sžæ’Ÿ‡r RSßæ·ZÂVØR È—¸¤myñÁ®ìe(«HË“2¹©‰ˆQ äñŲÉjm· …dƒØ+5ZÐŒ¬‘ª•Ê7lƒh&öixm9÷ráçÔxЧ’UYFPµhØEîŸ[$#Ì´‡ ×öŠ¥)Väù»ŽüÖÊSS‰†PpHA2yaN0Bƒ”ÓLfç7,DCj;½»T‰L$€´ùqëNš^[…÷FìsV©5¹0„䢊«£v;díWª—r²¿.àÆ¥’#ÜÄj9Cm­ «#VHêõ––ÔWK&‰´µkƒeDˆµ‘eyB:ÒÉÜ^ËÛ7•gzR¢Ü€RÎE­¡ô¿ôezbwÚ¿\^^ºàìð|D¡>s»>÷ÏjŽÆé‡ƒnµÄ7ÌýƒU/Pîû'õ›‹‡ÁûüY÷ùí÷y®Dª9;›#†”"¬µ×ùC×[Ý­,êËTè¶É׋MÊ /4ÊÙeó1(-•§rˆØs…sLæ¼ÑÖˤ.»ê.raÌy6(ªK±ØS)R ®wIZ°s‘÷§Ò¤·¾™1vŸ«e=xu¥ß¤A•M2 ½ J $/% àÁ#æœt¾ŸoÖsõ]Úú‹”é°›†´5ìí!-¨©%#z©ÎIäú(Ud¹“ìòsM®~ZþÝÚõ¨çëùš_N=oˆmЗ!ù¬-зR‚ JÓ„á*É<àZC§µôëÜþŸ)¨ŒGcPǸ™Íœ©M»jp…{oÝèr1RÝO¢æ?©ßÔúzö-W “Pv }§•!a;’C‰ÜprF Ó+8n,-*Õ‚î¨s4Èy =&?Úú_=â$)¨Ù`ûö¦ñ•ÅÊ•Hɯ[¯¥Èn¨Ôú¢ífeQ®L[”ÏPÅ”˜>fQ ÷y†{y‡eŽ*{ÔFîѺE¨Ö‹Š?X1fâå! ”´¢¢”îò’äàyÆ)­}0_êZãê Á¨“¨[–ô@ $…%D)CrJ‚<=2g—ë÷ sÓ²f¶‰{ÐÜ”†0”©ÆÊ ÃeYÀÎvîüj®n+^e©Ñœ¯~³éû—XˆÓz2ÁúŠ$·tãW‰“\·¾¶¶ÒHZw+ îYWaÛ&”·Ô}Ipµé–mpmq¯K¤ËD°øZØeæ7eÄà…)8FàœŒçêOý•U’çd¾ˆW[m6‡zŒÌ–Ò ›Þ’À…q’Eh·ôÎ,¥{»ª6)ò'¾ãÌ….k¯%{É €žVOcÀæ’äÞã#J¤t^¶ü“˜H}0˜DŶ섶òÛFÔ©xó2p Ï5¦t â ›áXïK~†Dfâî’‚’³cGÚIy\JX #hMl”ØKÁ^õà­.yµ3Ft=JvŠÚÈÆV®Õ­ +PÒ•:)™>C¢¹³°· “ÏÔrÝâ¹{NÑîj@¥“Jê%¥SZ2ÉÆÑ2ÔwÕ=µýÏ]ë­a$9\‡‘“öv’ †0@ö<}i².Õ‰l»q¶>ÓAa8ÝÁ'ñ®ë F´â_¼Çm¶d~Ñ@—rG”ŸsTÍòú‹öyøJRd2âV¦Ö¬-$oQô®5IÎíMXèaj·—$tØoÕöin†£·f|Éw!'+Q$wô¨3Újóâa§ÎNÐ<ŸƒW%ÕqË–ìÆZia/6âÝ ÚHÎFO±ªÏPjuí¶%Iݽîã$‘ø­6Œ§šû¯2Ë*ÍEÇb+‚ä¶b¯ SŽ%ÏlœrkÉQœjCŒã[Qú]§/‘ÈR›l—]$œàsÉù8o½6|W$8p\<$zãÖ›Û}Á'ØÑy”åÞîô§7;5×P€Ó e*! qùp=k¡z 3ú|ê[kÅØ¢6w%¼ä?x {W>Û.&Ý5¹m6‘"0C­¨~ê’ ¡üÖºôj’㨻¬µàfŒ@ÆÄ¸7=¾{W?Ö§gÊßc§ÑíÆnHd×ÚjL)Iz:Ñ”(-§32p}é«Oê),ø^VBJiKÚR¬…“ߟÊè­Qd‹&#¥–ßR ”ã `ï§ü@öâ¨mq¢Wh–e°è*O)RFJÒqÀçßø×&*ÝY|A ÜN²ß™7´k•ñ¼D«…yQŒö=óéØ`jMöæä#([{Ùˉڳ• ˆ=óéÏ5EÛ „,¡â*tà ÇáR]™ ø»›dìX+ó,wôÏÍ.I§dÉ–ÕhXÌ]d¸C‹iÉ)R€HÇÉ$‘ùT¦Õ¬ZŒÚyÓÄå§@G§—Ÿ1ÂH8õÍRÓ®JZTc‰ ©h@n:ŽÕgƒ’£û½±ë[g\Q(Åjj2äpTÒ7©`zŒóߟ­Z%3ÂFEÿmÕpÒC‰~¸B–p+zIÀ'Ø÷ç⤺%N6c¾Ó­(¼«žÙ>¼GÅrãÖÈÒÚS±$OKÅd-²6ì à©@3Šw¶Á¾ÓѵÒÊR Œ4U´¥8Nùþtèⲫ12èôõLé(÷XªR’âÐÚJJ‰žÿáZß½AФ“! Q÷Ýc#àòEs«‚øÓ súE!‡VCÍ´ö·8ø&š.—=E!öa¢BŒ åvQÁ!XìqœU–1²Gw–Ö¯Ö±æ¿%¨ÏöV›YÜxÞJ»Ÿs´þu^ê}i.å0Á·(¾–ò£œÉû`T0E»Ë¹¦*¥‰#±’¶Õ“¹GÔŽ2¯Îœ-öw#<©.ÉXe¼’qG'rVGÔÒgUnÙ¦ž.B¸2LVK]7IÇ—•ØsÆ}xâ¼vÖYµÉ»\·'†)IÂAPÆýÐ~¹Ïém¶&B¶2ØnûéVxWsë‚r{|Òý|ÃÍé9ëHQeQ =Ò'…Ô¼’\Íq´YÊW(Â=Ál©%IÝ\ŸåNZ…"8S © )³‘€Ú}~ Wãšu×v—”Ô Ó <¨×ÿÙÖ£’¢È#Ødô¦?ɹ´¥—9û©á?Èõ”ªªR<}Z\:’‡kÓÁž´–ši˜›†÷ˆRÈ?wžãßò§TXä}‘™hCûâàIÁàöø¬dZ$8( ]ý³‹GNp3íÀþUc@·É”ÄYl¾ã;R’;¥D ¯b@=¹¬¸ŒFDœMøL*“j¢Ûb/£Xš™Àþ¯jhPáRÞá÷T9üë¨zRËÏ6•:ÚBÆ20Óâ©X¯:™hLhÊŒ‡奷Ò£ê}+¡:>…8ÛA(ÊOsŠßÑ ‹.&ÇŸé—ûÙ-±kØB¶$g§ƒƒ„Òf ©¤xŒNÕ°;•ŽA®ÔÚ›º9±N ̰–Rµ2 ¦R®ÜQ\·¹Ô[Ž•] ¹¢­Ñ ˜ZC€‚ãN¨;¥öG÷ÅW*·?*ÏoY*B2¼ÿ}Ur¦:LPÒÈVo“Tk™Í¢ž"Ÿ"•nA#?AéRm:öxúâš.ö·#¬ºÈÊ äJQ¦f$f:Ô³À4ÊíT¥x• :¶‘œ­[§Ú³7unë ÈN;à!ä¸6)ÍþÀ}÷¸÷¦‡µ¥³õÂm*½[›¸¨€˜Š’€é'°Ûœä÷ÅTâ+­õýP¡%õÍH6Ž*l) ˜'þ¯Ò™ç'¦×Ý&âHÕò5Ž0Áløîº©IR$$w(ÁÞ8ñJ§Æ7µÅÕÅTm­¬_Õðv⇧ǪÐöÁÇnçŠqéËQÿö³auøì¼[ÐP”ÙZŠ y\cóóQVœe²³-K5+2í‹©4ô»Ã–h—Ël‹‹{‚â·% u%?xƒœQéÆ{ÓBµ5ŽCÓ¿RÞm· RÝf<”8¤c#“œdõwX٤ͷ ®‡Ð—¸Ú’Ïqµ\¤Ã[)û<•¤!Ç‚ÖáÛ» Nøè˜P'ÀӳƬ·¹>Ï`v"­ A He iM¿••…$w''Ö³Sv•‡N¼¤´^¾£Ì.«-vMàf×íª§1)õ%ˆÈJTrp ŽH Hã“VºîQcʃo*; ©Qeüº¤$ìÏ$sôª'§ƒ tü þu=ëÃè²ÚlZÍAA:~îËï©#$Gtú8áU“ÌËP©(Órok ¿ä”HÕº}®R¼CSV·Ôõ‡F#-#Ì•ŸÝ#æ¡òú™m…U\§H„`XVI‹1.ºòö[R8ؽéR@'œUUÛ&Ê×¥ä!AÍvÌ)Ó@I#ÅCë~`ÏËjH$ûS¶³mÉ®,ÇiÇ\TxP„•ˆ‰ôå«AÄÎJûMý‰íÇ©ö¸—í.Ó3àMå¹jzc¯„†TÊ! öÉ+Æ>˜ïVŠío½[Z¸ZæÇ›Ñ”<ÃhWÐŽ*Ÿ›:ÕyêgJæ[åEžÂb\Ê]iai ÙìG¨ÏáOý!¸:Å#ÊÛzºæ”¤vHñØU&®‡P«.&Vî¿—?ªtÓ×±dfÿkr椉”‚èZ~òvç;‡r;NIÉ8š 5V¦ºj‹ÅírØŒô-q£gf)ñb2™>^yy$oÜ9ÂRw€3ÍtS ÇÍʆRŸO°ñ µœdúÒg%-`€1KŽæ‘<ÀVT8ªÁ¦õ4M4´ Éõ¤³cdž)r”ùHí[_@-Sóåbc ”V-¶“l’ýí1¾ÀÚ ž/ýÀŸšâ­SrÓꧦ\q¨*YÜ?³<þîAV ÷®ú꾓‡ª´ì«<òøŒøü%íQÚB‡>Ùª†s¤šbƵ6d-}¼IÄ?NJʼnNsÒ-ßäZ…U‡“•Ît»ZÚ–â·‡ß+8KiA;Õì)¶n’ÔÂ@mëÁ¥g0¤cþ×j¿õEž,{jãËe¶£#*#ilÞIUwÍz¦ž1áÈ]ÝIN"@RUÿXgÍõâ•U)<²6TŬF´â7GµEÓÖÒ—å7ö×› –sÃiÜ0ïÛ'ßôÇrÜéì¾¶œjÚ••¨`­#ïcÜüW¯´åÑçî ‚]yx'h+ç°qð§¤h‰6Ü‹óÿeŒ–Â’ÑXÞ{%^‰'ž=*TÔoõ~´#‡Ã´æDnF•!p¼dÅqÅC¼¨#w©Æ3ó] Ð+ÜIòa;W‹0Ân=Á• ) kʃò }}ÅRšâtY Œ!¶ËHe>im >¿Z›þŠéÕÁ¥”€äÙPìC‰ÇóÇãHÆÓ\,Ï‘«Qº©.g[‚Ò#ƒEkÀQÛžç×S¤¶4‚dÆe ÁOˆ´!° ¼žJIì=À÷ø©!±  ‚IGãZåÆ[Éu´:[_*o' ÉîÁ…r-tuã,¬®e‡qCI}·]p·¹XN2œŸ\vÁ?•{tÐY‚–Ø‘û- 1ÉNG¨ó늚rÖÞöRrò–½ð=RN*GbL/ºÒR¶ðIÏsî>qU…$ôcž*pÕ\í pŒ”Ém¿ „ ‰#ãœùÒ-.CI\¶e>ê”<H¹½y®ž0£È(%-FBGïŸõšÑ?HÙ&Ç[bC$á²@ç¾G¯­ÂKx²Ðé4½ôssÊ’r%ÁµA$î9Èõ9ã=«lIW$ ¨ÛKž8ðÀ_Ž1Î{ŸŒUÙuÑ¶ÇØ\ð°?!ÿ•GgiÅ1½KŽ”…a’O=¾ë4éÔ†èÓ U)­ ÅÈ÷§Zð^ #x+tJF23Æ8ö5‚ôóNÉ̉.º¢µ·«jNqÇ€ò©Ô»jØeiLrúW”¨-8ç$¨û}>)ÑÛSKLr’U€¢=¿ò÷¤9IlhUØŽ8Ëq_û4vZh8Gˆ¦¼¥*Îpµ“ëY±n*|;2;ëÝ’†[@R²?xœñœzÔ‘˜(,xˆÚóå( §Ë‘êOjrµÛ„s”!´ ¯§4½YWQ$7YíªC C­ÿðM}Â}3ê~kÍsk-h‹³Î ”·Î¶ÞÕ4´[_YíåÜ0 ¤ÝNe ÒS¡©)R^eHq%E ¤ðFG#jthÚ9™’Uúé#’t•ýK£fÀEÝÆîćàBu%AäùƒgºTœìGÒ¡ScHƒ|u/´¶žR²æäöÏÞù9©\Ó/Jk;­¾ëqû\¥UŸ2Ò…´ãÝ* ýMIæÛíW«•ÆYwˆï†ãsû2æR õ!'ùW^¥N¥Ò¼eªøØÈèÓ«Û³oÈѤ[l7!m$¡h]JS•Ÿlð F=½ê@ã ~2˜ˆúmïlÃ[ÜØãpÏ÷'ŸOjk[LÚâ–Z2I!+Ït÷£æ±‹v™dU¸çõEE ôq )'Ø‘ØúÒ+FQ†kjÇÓš«ZÐ’²û Q*T-BˆW††éP'$¥+W²UÛ$rc]]Ñu±ö&ÂFÞÝûŠæm@ë–xVä¶\iÀìÉiYó2¯t㑟lWKtͦâ´ÊwCi¼rk³ÑR”ZŒyžS¦$e;Yó.ø+BqXK€‡<í*‘ÛÀ,ƒž;ÓŒ²JÊŽß@k«+Á¶™•55fPqŸØ<œ{)ÁHB™ ÑI”ÔÆÆ*×+Τ3¢íêmwÄÇÿ¸ª–‰ï…~U\è;“ËÒpbEG?´Ê‡=ÜUMà%ƘËË V;WBTÖTäs(ÔvJ#’g)j 8€søÖ©Vd8àÁð–9Àõ¢Œ¥EçV”Çzq.<€|'öÁ¬Òr¦ïkŠEi² «$ ~¡~`’ä›Ì¤Ÿ´Ë.:–R‚’|¨É'éÏjyc¸ FÁêMsþœvõeÔ½[×þ¤v±> Ûï@Üâ]ó ÔU–ѳrJGpGT·Ìbà BWœ‚3“ž ØÌô¨9âÒƒMvùqú„ý)5Ìùô¦=-.áhéúgêIŒLz$EHyØÌ–Ò[JJ€ *<íüš¦lpºÝ¯:iɲ´Úâj Їú²!Y™n%{SŠ*![Ž3åÚ¢:OQÕq„{²öÇ{ñKÄT–†+ŸìÝUÕS4ìkzÙ·§V+U‹†TB*wiVxŽþ©×ª}X½è›¤‰,j#ujY~ÌÃ.M²TySÂè@÷©7¥„ÃMEÉì[é .S‘–Êä4q °V{;JZÔbÚ£ÅPso34ïYzÍ}€2àY">Èu;“¹1›###"¤HêV¢SÝ%ALjÖœ]ËöG‚”4¡áù¼¼¬÷Ï¥-Ô“/ ÔÓwíúظP„¡$$V°TIÕ¬z»zÓ²IÔ:Jûû² É·AaÀüVÔ£…x¾!IX9=‡¦¸SµµËô•ÔVø7ø ·Ô߆‡¢­m†T¤©) X+å~¸ì*{²ÒÅÂöŠÖö/&ßaÔ•4òHQI(P pG úViPÛÁÍsv…ê;Ñßµ[l–†¯7mRå¶3m6´Gñ–—–7éØ(zcRHÕš~N²Ó—¡i“y²ÙMÚ ¸¬­ <Ž mJ8!JƒÈ©JèªÆBɲétä§½dÙ*oo­RV¦k¨ô*îñìêµk&Ý,±·Ñv¥$²¬+;Á#hõ™.Ÿ£±yZ£©Þ:Ü>©IÂw¯gÒ¬ÝCÍ%ÏírǸÅÞ’•õ¾YPZQÙ’{UˆâêO½4Üc$‚)ÔªXmH\âÒYqöle’›RŽTôpWãŸec°Çןj©tÇM55Ô)ùl‹s)íö¤©%AŠú¨,ÉuEA'5 Ÿ¦ «ó$‘óYeGRvÓÄ![‡$r-×Aj´FŒ„HlÈO¾i½2êd˜óX—5Ð2–šQðÐ3ÝK5Ö’´“c>\SLÛ, ‚­£Ôf™S£ê%¹hô„¡ºLåk®»!EapÓžÈBÉÀúâ¤eZg¨qÖ¹Iy2S ÷ ägÐ*Þ¾Û¢!²®0{÷¨¡2G Èì'Ç2w„á[}F*Ez1Tey-‡`ñsž".ÜΡ±:]Œ„¬€´à œä¬Ò×™VóÏìñþ¹¦í€õ±øÃˆ<¯Â¤% -»§€¿Cñ^~1º=¥iCälpùÒ JˆçQßJñˆêŠÆ×KÈY#Z“Ç©‡ùóK~̤¸62¾;})TU­¡æ<‘ŽxÿB¯®¥\´<·Ét+nÉÈó'œü‘ÜSû¶Zòãpǯze’Ìw¦FÿE§Ê¡øŽõ“)+@l­ÕÆJ³Å5JÂ%õÉyJVÔg9É8•èîH> ýäÄ{qJ¡Ba¤ðÒJ}wçäÒðPÚœöÂ{QkîVöØ‹¹§Xqh[¬©d2ê¸ÏÂ}©$­% Å8•!½ªVJRÏÂ¥k <í]²kÀÐ|gߥº0|‡F´ã̉³¥ÛhlB@àû£Ò–F°²ÁÎç"¤)(Ýà+¡dç´ûžOáTT`¹¯7»”È@J‚Tyvæ¢zퟣ$•©Õ$'¾wߦ²¿d…%i?x«¹úÔy؉zJtžÝù¤×ãd2Œ¬ó3ú™¥®ús¨’”Óób\ÞrDi °Ú£Á ìB³ÇcH¤K• oïÄRò"ðv8xò‘ñ€Gå]ss³ÐÞˆHJŠNì}ÇÏz :«£ÛÓ2}¹8Ô{sH%¸í$…I{8Ïñü ? U¹$Ö¶²‰o'WkÝ®ÒÔ7æ²ÀSrRëƒr’ãdcØû{·Øå¡h+ignœJÙ õ ²êçÚ!¦T€ Œ¼àJ}{÷5vé¸öëŒd$ò H þ5èðô(NžI½O1_V5¶ek¥´|tÜÌÀ‡ÒꕹEG…¯ù×Bèh1â0Ùpå@Se²ÈÛo¥°ß‚*gµÅŽÒJÀ'µ¿„§…‹·3%JÕ+Ï4Øûïe*oîŠÅûÑdøm·Û½d܆Úo  \dŸk •4é)·™hZ¥WÕz’Û]Íð6«ØÑQ8¬ 8•mWÖŠ¤ði»Åصi)S„[±jqs–^ßìo»è›–¢Ð—m9®5"o-NB<7c[Ó°Rw¹Y;‚O'cÓ~‹±ê{6¼êÖï1cÁi¿Õ©ayÈ”°³¸€ì3œš°îŽá¨wô¦FV¤#=ë6u[5ׄTÕ·!NÑ7Çd±Ô ÿ…«­±¶„©¹(ò…nãp QÔ€=°Óléd—CßÒò¹ÚæÝÞûtéYA|JÞ *BU´§Ê]Žs’jëhxQÀíLw·IN2rNiTãÄ™5h 7vƽ-k–0l×û›W’ãJeÇQ0•¶S·nУŽ3Î}j1¤z¨tdxÖ»v¶T7å-˜-ˆSÉmJ*ðü}ý²O;síŽÕ1³=–Sîšw}!Æ Dã’c¡Ô‚|ÑR[:OY]ê nêSN8·‘mû?•- Úœß¿’|ÇîúüR·A™c¿Xcë7£Ù®×\ÓÛµ· ÿiÍÙZ”mä{æÖ§ð§HÊÞÐ5UµE)áéJé¯Or¨¸t鹚Ç[]¦Ý[¢pކv©„¥¤·¸/qÜ|¹û£ñ¦»Jî0¦i9^åÀig1oh@KI ”¤,’£„yóÙÛÎjÛº0R¿#Šm)^íÙ8­Œ&®"¥%j½^ÿÉP³ÑE±gfÂ^ñ´Å»&é ƒèPψ½Ùs˹#îãvNpN#h9¬õYíwjÔb™¨ó¡9;â¶‚“„¯pÙ3ƒŽj\ËAyVsŠÝD;´wÍVqV²&E§b¶ƒÑ(MôíÍ)#P<¹(¼*ï àÔP…G{¾B¥ÎyϦ+{$~TmQ2õ©Õr¾ê êõNCMÆg C!gÔ|Ü‘éÍYÅEë-üšF¨Ñìô¶±[EéIôñÓ}ãF¡hÇÙ?Ý›’Ú·û?¹ýîõ)Ñú~ãb›{~v§¸Þ›¸Í2cµ(ùa çöHäñϦÎ_{h5¥O94(·©*àôõ¥…{y­2JV“Ï4éÍ ¬qL×óLöXÏÅ3%µa*É &!¬¼SÉø­ç%5Wõw®ZG-QZ®,gìqÖ?gÿÌ_d}9?Íú³¯zúüêÑo}›Dup>V¬ŸÄb¨ñy}ÔèU­î£¨z¬lšfÜ©wYÌÄAÈ@Yó¬ÿu#“\ÏԸϛp,iv mchzB”¯žÉüsøUYp•>âë“®’äLyÃ÷YR–~¦§½ éâ5¦©¥"Û )~àòÞNp–ôÜxúYkâ¤ÕæÎž¡õ¼Ù–„éî²ê Õ»\e1lÜOÚIS§Ô6ùíõ«_NèxÖ›œT£ÆsÃ9S¸Vµzf®Iìlj ˜qC,¡;m¡ `=G^g2ÛtsÆáî+Ïâq5*;r;(S†±D¶ÈÒQ!# ÀÍ?´P7„­#¸?^ 1Ø <Ÿ2}qÞ¤m¤- åÇÇze=Pº›ˆÌe ’ÈÞŸìw‡¨­­¥¾’9È 8"”œoÌÞìzäÿmaÑÈqþ¦$-ɘ5c$!YÆ8·°ÖP¡’žáJò}x¥m¥²Õ+Üð>”¥ ³êêÿ ¾Qnb&””§O¹Mx®xPÈ>ƒÒœvFï‚çÆkb@I„¥[)Ææšu_q“ê®mp y@ü&—¥Œ«çšÖãXó)X˜¡¢3ÔØÆÔ$$c¶8­ J³¸ÒÇR””üšDòŠ•µ$äþB—&Y&nRü&À'cíóIÎ<¨ ã>çÞ”ÁY ³æ=Éÿ_Ω>±õÆ×¦þŸÑ®G»_)~`!q¡`{8çÀàzçµ-ÁÉšhSY(ÁjIú…®tÆ‚iµ_$©SŸATx, ºî=ý“ý¥qõ®Kê6´ºkÛâ®÷rPÓj)‹ ?ÔÆo=ýãŽêõ?•1j ÅÊç>MÒë%ùÓžXSÒ\;‰??àvÍ1çd¨pBAòóÇåZèaÔ5gQFž´„—â'ÀXR‰ó`üÓÿOµÞ Ð÷¾<5(xÑœ9m_Ocò)•*ã!8<‘þ_5‹å*!)HŒ…VÞVg+†…[¾ÞGcôç¬gR²ÒcMDi؉!A ϲIá‡?mÀÔ ¸‘Ü/Ôâ¾i)‡çˆÒ”ž`RjÆÐ]lÖZcÂb[é»ÛÛÀ ÊÉZG÷V<Ã|ŠÓKRž›£Îâ:.Pwß­Ë.ÇñwÅ!aEçŠsÇš¡tÇ^´µú"ûzí39f_'Ø,qùâ¬[&±Š–’´>Ì‚¡Ì¸—ÿi5¶úOIhÎ]J3ƒë"tàmµ’}¨¦H—Ö&((“Ͷ3Œ•ÓbQÓ[jÑ–µ}ï·§íOOZÚ„ÒÞmðžØ¨§M.2™Òp£”e‡íV —¢…wJ…s¤êS³oC¡AR« ¨®hÊœ·6$*²º$€ÒÆô­÷u„Nq”aÝ“HFÁ Q>§šé­QÏz;šY (?–*}¥žiP‚R0@Á¨>*Ï­K4ÂÞp}î@5Ÿ¯LÑ…•ª ïO<ëËKE×÷”ù@àÒ©IîTqO±P˜±€Ï8¤Týºj+sE?ܨäö2šî´Nj5p•:T®É:R‘“Î)›œvø+HªgXu³HXÛP›¨b—@Èf2¼eŸŒ' ~$U!«IçRÛ°ØÊŽN×f¸Oÿbΰñ£¼UÍQUj{¨ë¹ÚŠ:@XíïQËÆµµ­o!¦Ó÷–âÂR>¤× _ºÓÔK«ŠZo „ڇ܊€Øê9þ5 Ÿt½\Õ¾}ÊTÊʼWйüMQâ*r²Ž«?zG]kž¿é»A[q盓éÿ‚‹Êíž?,Õ®úã«õ1\[kŸª!,PÁ;Ô?¼çËZ7±P*#Ú”6ÛMà¯ÊAÓñ¤ÊNNíÜëaú"œ5—˜¶ûÅÇœñI󣜚V[JÔ$‘‘é[vá­Ê!'Ë„÷¯v„¤“Œ(ãƒÏÓéUnììÓ ¡$&˜µ—X@H)IR°;ñÛ?tèo.*íÚ–Ü ‘8-‰õSXPÆ> þ5ή%&[8l”¬(;ž3þ<ýµ"4¯U­2e:– ÎÌeG%΢~Í*´o“S×ÁÖ÷&²ùó`cà∉q²Þ6îÁ ÷§™l©R6Œ¥[TíŽÆ²b)(ŒÇÉtî̪vB[F[V×R7$í ŽGÏçš’´´¡ $œ߸¦e6!•'pyO=½9¶…)…6(8X ñèGÐÓ ²èRm=EÁͪGˆN6’”ƒžÝø¥¬¥$‚È ÷ǧÒêØ ’ ü” ­I)ãœUïb–R@XÁgÊ?×4¡*B”P àF)39q–¼-…çwï'ëZ|T¼·±”ŒvÎsÍZåw:ÿ‡Ê·;%=Íc ¬ŒœcëÚ°‚±â)*ÁÝÜžß•k¾\-–KjîW»”Kd$ —¥<–Óøg¹úTo¨[[ ÆäòBGjeÕ·û“³.ï¨îlÛ`§;TáË+û- rµ|Æ©~¥~“öˆeËwO-ª»JÚ@¹MAm„t6p¥ãÝX¹«V_õ­»»wÔWI7IÄ`ºòð†ÿº€8HøHÅJ¦ÙÒÃtuJiè¼ýz±eõ›¯·]âØtÊa°¨”¸µ+ý¦XöZ‡ÝIþÊjžq)`¶ÚÜPTP€6Ƶ¼àIHi°p~ñε$)jñ”KŠ=ñßäóZ!¡ÓŽJIÂ+×Ôг)õ™ ÊF0Fx÷5‚Ò·HÀî3ƒÆ})bˆCKÚ ’p'Þ“Èy t@ôOñLB*F)jÝÙ­ ²Ró©NÓ’ /­`擹cJ»þµBS¡;ÒR9pÉHDzf-¤)Õx¤Œî$d~Z›öŠtÜžX+zæ"YQX( P϶1éY9J9p§€N{Rå-¤êä(züR'ä(ò‚Aõ(úÔ¦ÞÂçNMÉÜFìfÂÆÓ’yÖp¤\mï"L)oÅu)RR  P’Œ©*Qì=³š w¤)@àc8< µÌrÃÆE£:ç|µ-¦5$Ape<}¡³±ì{ŸE~?QÎm)ÁÁííEBŠå¡Ê¯‚¥ŸÝõð:ÃMj óv(ÈnõrJAVe¬æ>™©3Z£R5 é ØqÛíŽBtªwZc’x¿ü=x‡'îŠñUëUr¶góÒr+ÑÚ—Ç«oyüÃ4»I3:«RCvùÿlsüè{Sj%ŒÿH.¹ÿž9þuC¥£ŸJ–œ…R³Ö½ÔŸÌº©'¥Ç—5v¤lAvþxçùÓtÍi|e¥-z†ä„•)SVúœÔ?Rê"”G vL׎Øð㤭ç”{¤sɪŸª±z‹Q¿¥Ö ½Ž$‚~Êܘ«eµã¾2å ŒúŒúWO†ÄW×3K¶ìÛ…ÂU®ï{"y«ºß:1SÛÕÊàðãz¥8Ç*ÿ\ÕM©už©Ô®•ÝoS¤#ѵ<­‰ÀgÂ÷äŸZÍ vó¯AG KK·ÚÎþ nc‡|Î/ñ5êAO9Vk#»¥.vÕsfÒÅáû\Æ­²\SLL[ º´ýä¥xÚHõñOm›â0\ì¿Î½BÖõèkÀ2}½«ßLŠ­Ë«ö™ž$nyÃøšÉ/;»—\?õ«ú‘éÆ+$ƒÅ5 ºrí3Sï)D\?Uš«Á×>y5¥Dcô¬À~POMîfãï…‡W”`§Ì‡ñ¯VóޤeÕ”‘ßqæ°só^pÙ ò…sÿ$ÐJœ—2úé§PïËz`ʾÜÎ*V“)yu À óèçS4_/[ÍËvûRÿιÇEXµF ¾´}ºá>çJS¢·@!%X†T‘øŠ´ÞÔ£J¦;GÒ7‹2Þòµ1PÔÚ>¹HõÚ àcpTœéj»;N/ W6jný×&Ò/·½¤›ÝÉ'ßíKíù֨׫»i)zñt$e\J_#ß½F°Òò@ ß"y†k¹¼}r)SW­;".åÞmdC%žø¥µ¡m()¾Ý8൹žßZ¤¤uuM©_c²‡¢y}ÍŸÁ9¦+ŸT5lÝéŠôkrãììÀÊVOåŠ|:7=ôñcc€ÅÉÙéñû#R_oÅ‘¨®l6ÉrzГù«¼õª5¥N¤êë¬ç±áC”âÆåñ®p¸M™qŸL“1dåEç®N¢´ß×ò­ôº&ÚԨ߆†Ú}g×›~íûô…×›²Î¸@A<<ôÇp}vƒø­õ£Ô:šh™¨¯·+¬÷.JÜ)øNOéMeKÇ•8ÕUá9Zãg·á]JT)ÒVŠú*4£GÜ^¼OKÎýÐâÉ퀣ƒõ¬¼i*FÒó¥¸Þqǽ`®Þ€Ð²Ÿ\žôáªRÞæÅK‘»;˜²£Zœèìê‡o1âµùÖ¢ïñY% AûÀŸ‘Sku'-Ù‰%ÕeO81î£Y¤”ÉZÁg5"…¢µTþŸ\uä;Ný9l’"Ì™ö†‡†é-€Ÿ «yåæù #Í߃ˆ©%\äš›1nvÙÜP©oäuÁÏöÍjvKêR²òÉWÍÞµ$äŒcòíAõõ5)X¤ªÊKsÒã«P+qdš7+$îVO®Mx@à•`~uêöç9ûT•»Ý°ñï÷«ÏÃÿáœ×ƒ9Çñ¯B;îV>H©¹VÙ¥õ¨ŽV¢>M›é@+𢬙IE·¹Õºg‹$p8lÿÚ4ê”r£„Óf˜õ3 Wnÿò4¹N2;'ØW‚©w6xvl/2ß NãSn†&õ$6Ù2ëÍ…z¬ ÄdŸÂ <߯–Ùn×â%æÐãh›eM‡P°AJ’  ‚GñŠvÂhÎ[&2…E ‘”¶L{µEwUuF¹Ïšã³îKñ·¼¢”€U”“„á ¤qÀ©t;eŽý¨õ^–gNF·~©aÅÛæ4úÔê”ÑØ¯qÁ $Ÿ^j zÕfuѫųKF°]Ú˜&*[wÈCŽ ’<"”„‚£“Éöõ4ºïÔƒÑ.Ï[ô¼ MÆðÑb}Å–îä+ïøm”€Ù>ù5Ó§: ˉ%+¿«l´í6B¥%|Í=~hv}};£4uÁÍ=ï&ý :û²Z<&B“€ÞÒ0¬)8>àçÓ­E§"_ºÇ¨äÍŽ%µlµ5!1”ï„—œÙäJ•‘„ðrr¿V[µÄˆúZŸ¸ix¦ín—m’˜¶K9Ú∜úe<>iS½H¾/XÉÕª ©Sa&ë{¯µ%°…m$‘‘ÁÆqÍh…l2‚‹µ´ÒÝÜþ##Z†TžÚinîÇ^Úí¨ÒVKÂcZm—§][| É}´ýò…Œ-X(ÏÞò)~•! Ö‹Wa-’6ª%ë,•7ú£F1§¶ä­I¸®RœƒÌ”€Пšx‰©dÀÑ·}&‹Rbìâ\³+agiOû;{îë'”qz%•­;mà„*U\¹Y¯/Y‹Ñö[=êݧOê×­¾$묋’ZÜ“»VܤG›¿1íg¶NÒ·&¬Vû=÷UÄš¤9á!I„œ6”¨dùÎ3‘žF'j¦¯LBF¨ÑëôØQÓ™ÿ¬WJi'Ê€•n9$äÜö­sSDÓS!OgCC™u‚VcÎ7W *Ü9ka VÞã {ÖŽ6ÔVµ¼ùwoóêÐέkzîßæJ4E²ÏMÞ›·Ùmõ›?T\_[imFBN9'¸äúwêî­›§§J†ÜD@¹8ó¡Q°Hˆˆ)Y'Ê3íVŒM×~F¢¸è¨—kú%¹)¹âèät¥Å•ê‚T±ŒŒÎj—Öýdþ‘éÝ_cºi ,»öì&¢ó·ÅJJf€A8Â0ဵä٧СFºŽÚyøš0´)×qîõ©;ýÙEéš“QNeÊßeqØž7œ…©`\ãËôYµýÙWSzëÙ¯dJÔ&"cï71å-%ÂÒ•¼ ààñì*Ѿ¢^ú]­YÔöFØya¥G“òvHeX%ŽAÊRAô pFAšé®±èý-ÔÛn¸ÒÝ)M©èÿi2c&üã‰]AO”©¼4”’H'Û]ukXîd˲'=3Ðz#\õ3SÂcEÆgБ$4ˆŸoPUÖB\R[\‡TFÜøj'$dÖΰôþÆ4¦…Ô–#h‡ªfÜĶ—³ÜĦß%K-íðÜYNä·ÉIãÄ9^è.®ÜôwQ¯úª-¢$È:rqµIp”:ËË+(ÞAÆì{ñÍ{¨ÚVÁ¬l:£@té­;.Õ,ÈX‘yzp’ K~d¤ `ž@'žô]X2ÊåÜçKm—¾’ké:«¦úsFÞôí´Ï€l÷Oôìi×6>€êñØnû‰Ö\ºÛžýúmŒÓèUøºÄfö¸×2 ­a_x©D’¬òjpý! “­ÑféÌk`Ö–Ùî®~¶qçW!Ä)x#8|0‘’¿¼00Ië §Gmû¢›Ÿ*ÆÛ©´Ýº8Á޵µÅ4BÊr €;GênˆË.g@ËèŸO­·éå¦l°ìÂÊÞ©“yB'ço»\mÛÆ9¹‡ ÖX޵é›%êS ȸ¥‰ ,å'œƒƒÈâ¥:ìzc\ˆ÷-uÒÈ—JÔDÅUÎ=å輪[(IÉÉ<…øà*¾éާþ…ëë6«ûÛ²Jd}›Åð¼\åݵXúàÕ[EãYÜê †éUÂóÕ)#§ñÄmЖÄÄNxJ’R•­iZÀI(Ú@ÂO¿5¾ôóI뮓t»VÙôü=-qÔš‰6i@ZË^}ÀZ˜23ßqœ †ÚzômÚ“¨÷¯è wúoL–¿Xãì9JÓœø_´ûùÆÚšë ÑÑ#Óûu¡Peé‹À»Æ» {ŠÜ>´ g—áÎã÷;sÀÚ§¡uÂÐ0Ô½cÔÝ¡£ÛµÛ7Á¾5%ÕLûBRÑ+^UµI˧ŒåíÈÛ´ií¥¿F['Q/Z& úôÍÖM½M¾úÛiÒ§VœÛÊö%²?½ŸAM“?H›ÛUÚt¶×®.ð)wÆî.-;RíÇ#VŒÇîŒçœÂ§uGí·ô£õBaÜ•;õ—Û3¿*pìð¶qýg}Þ¨º ³æ_š/¤ZKO鮟³yÑÖ[ÛŠ!—¨.×Âc9 +m*m, º’Bwà”‚N;ò1ËýK²BÓ}A¿X­ÒÓ2 9Î5ô¬+Äh!ÈàùHíS–º½f¼hK–êOXÕ#O´cZæµur ­3€kÚ•€éÂG®Id·õ Ñ@j½%@ÙÀ¾NûLI‹qN=mlRÊ T°0•æQ;³C³- éêYÿÿ$©=j»Œ‡N>BO§ûLjÙÓ{”ÍQúõ.¥•"kVylÉ€ä· Šed á ™ö}»œi{÷l^qáãýîüR_Õ˜Ó:p¾žè½IéÙ2„¹ÉÌ‘-iÁN('Ê RqÜO=ó è/>ÇC·Ñ] §¯6mÒV7­R¬…뮣—yC3šwá¶] Ø 0‚Ÿ0É8Vk=¤4VýïzÒë¥àj½‡S; ‚óªC2RÛ@9±YRå(y8É#5¼õ‹OjëU¤u¦Qµ-â×0™¹5xzq¤ò⓸䓡É8ÆjiÓ­a ­_¢=âÕ©"[ï/.ÿã :/?d’ê ™Ú¡Œ¹µ8'!<„žjt{ýÅ«,-!¢ôΜý&:oÒ¶´ZajM="jà¡eIeϳ’vçZF;d€IÓ:[MèM{՛曋©®njÙVø庴Çe>9 Z’‚ ‰Ê½}ŒsQHÿ¤%ÌužÓÔZr3‘,ðo·Ù£Ê-6Ë% H!B²|Ù'o8ŒSmƒ¬Éfשôî¥Ñìê /¨.®]UoTõÇv+Ê^ï#éIã„çËÎ=2r]’w.(=<é¬N®tÖê½3:w¨V7ýY!Å8ˆ’¼&žIIÎFw¡g“Øv¯5¶€²hˆjYk[._¦êÇmV·ÜÉ[1XW™iôólRsÞƒ<Þ£_:‘Õ]-2+ÚHFÓ©i6hóg–bEC$,%o,r¥lJsœ$bž¿LN£ÁÖº†Åh³Ïƒ2=ž3·¯tG&¼A{ÂWï¤mWÉù¨v³-Ù’f¿ÑŸ§­K¥õ~°¸Úc_ß±²†íÖÙSxÏHX's«*@ H ਓì*~î‡é­»«=6~Vž°·TFrêÈÄäÊf݉-© JÕ÷– ž8õ&¨Þ’u*N„‹{´K²DÔ:~ýG¹Û$:¦|D§ 8J”3ƒÜàÓ¨õ>7ÛU×Dh㥷:®ŽÌSŽ¥IR R‚ví)ì;ò{T&¬ZpžvËcPôÞˤºw­ÄûT7o3µˆÓú}׉%–’­åÔŒö(QN}hÊè·Oí·ù ã¦l°ìÂÊÞ¨“yB'ço»¸#×vùq’ P_¤'\$õaÛ?Ùôò4ëź÷†ÜϼòöÚ0@@ƒÜó[µX´ÎºD{–»élKƤf"c*çòôFÞ ûª[(IÉÉ<…øà*ÝQmTi2ZåCé?ÑwGõã¢`ß/’g̶,=!HijSò0êÂ~ùB#íHíçÏ8(ƒÒ­¬/ÔV›(–KÄ]¿2ÞCEØí…¨+žÅah㪾õDÝ:§zRlIe6kŠç~²7xÛ•![<-ƒoû£¾ã÷{sų¢ºˆÖý®–;†¦Ó¦Ïˆ´X"Û§}¦tc)'Å Qá…“Ïïnñ‘X‰fZól@æ•Ò=Gè…êñ£´ä}ê±LFV¼ÃðC #<ã vÏìÉ©î·èÞ€»u§?Ñ ,f­½ÍµßZÚê₵%ÎN2twçpíT?èïÖwºI"òU§¨"\ÃQÕ3ÀðÜeJR†¼Ÿ1ô‡®ôÑëgê[V¥²ªçtƒÕ ´,¥²NFâ´¤ãG5IØzžmÔ=(6ð½\Q;õÛ6–vª9Ùál;¿Üý÷½ÛŽd7¯Òðõó@^ì–&m³4txÒ¼tMB›CjÜ„xã=ø©Ìˆp’dϬ=>ÒJ飼-§ô† ±Ý6ÛX·Þ[’¹Ð·¡q!ÕùÀQQÏ›ÉØdÒ®¶è- lÖºc§ºwGC‰?Y¢ ܺ—×›zK¨B¼ó´d!eDäÿ©®£kM ª£Î“hé{v Ôçüw§·{uô%e[—±’„¥!G<@ŽÂœzÁÖ9ÚïXé­Qo³~¡›§£2Ôb%ý£.4áq.}ÄãœqƒÛ½  P•‘{kN’h6¡ë],擱iøÖ{j]Ó÷¯×h\ÙrÖåZ.•y•Æ1ÛÓi´ [½Dꦑ×ky¼ô¢0Õ“bøNÝcÞŸmèob^û8N7'ÊpVAÚ3žs×Zî¥ÐÚWM±£íVw¬,)—n‡íf’Ü®2Fã’¬¨’1œTI®E¡%ª ¹R~æsSX­A\ã?ZØãÓ“AJ½ª·CYå®·;Ä+k@—eHm„9*Z‚Gñ4UõútÚF®êœ}M)ÿEÓ˲8r@²@ãœ9úz)±ØËSGbO§TUfŽ‘Ønÿò4ä; í+‡.ƒ»¾/ÉÃý'þü¿'+šñ'WiQUý ÿO/ɤߗäâÓê=(qs]¥E¡éåùÒïËòpúN5± T­Ç°®Ü¢¯ú/ýù~Côûòüœ\ʶðMmqYPµÙ”U@Ý߉åù'ôŸûòüœdÙÚ³Z&/ƒž1]©E  ¬ïÄòü‡é?÷åù>wk©ßc¶Ê’m³©à:¡•:¥zçÖ¾ÆQ]L.aâÕïs¡„ °ê×¹ñì‚q€sô¯ïÅ}…¢´d7ñµ½gŒc<ó^‚ïæ¯°tQ8ýÇǬq@IÅ}…¢§ q»„dppkÐ }9>•ö ŠŽ<~ããî 8×è'€¯°4QÃ'Ú;$}ÐMy´ûsé_`(¨á÷ƒÄ'Èøÿ´wüëÌmŒsŠûEO¼=£¸øüŒœÁùè•ÂR3_`(£† nGÈ cOö«Â“ÿ+ŽþµõþŠŽy/~GÈ!»Oo|ö£‚ Gð=ëëíp»ÃÚ{$”œûóï^åX ŠúûE>ðöžãä T@áG¿?aJõÇÍhÎrNkì <>ò=£¸ùyñžÆ±R”}AöŠ8`ñä|}ÿªkД“Ÿ~=ëì pûÈöŽãä8àò¬R<¹8Å}¢Ž/Ü|d ŒwÅb§ÂsÇÒ¾ÁQG ‡ˆ}‡È[|•ÍðŲ ¹ÎåLvá'è3WHEÍ{«æ3/SFwKÙ² ×$bK‰ã„5ÜdêÇÐ×К*T+*Í¡‹Aé+ˆÒñ4曂˜vøÃʑʖ£Ýk?¼£êh§Ú*âBŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ÿÙPyQt5_gpl-5.10.1/examples/itemviews/puzzle/puzzle.py0000755000076500000240000003311613245231431022574 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import random from PyQt5.QtCore import (pyqtSignal, QAbstractListModel, QByteArray, QDataStream, QIODevice, QMimeData, QModelIndex, QPoint, QRect, QSize, Qt) from PyQt5.QtGui import QColor, QCursor, QDrag, QIcon, QPainter, QPixmap from PyQt5.QtWidgets import (QApplication, QFileDialog, QFrame, QHBoxLayout, QListView, QMainWindow, QMessageBox, QSizePolicy, QWidget) import puzzle_rc class PuzzleWidget(QWidget): puzzleCompleted = pyqtSignal() def __init__(self, parent=None): super(PuzzleWidget, self).__init__(parent) self.piecePixmaps = [] self.pieceRects = [] self.pieceLocations = [] self.highlightedRect = QRect() self.inPlace = 0 self.setAcceptDrops(True) self.setMinimumSize(400, 400) self.setMaximumSize(400, 400) def clear(self): self.pieceLocations = [] self.piecePixmaps = [] self.pieceRects = [] self.highlightedRect = QRect() self.inPlace = 0 self.update() def dragEnterEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece'): event.accept() else: event.ignore() def dragLeaveEvent(self, event): updateRect = self.highlightedRect self.highlightedRect = QRect() self.update(updateRect) event.accept() def dragMoveEvent(self, event): updateRect = self.highlightedRect.united(self.targetSquare(event.pos())) if event.mimeData().hasFormat('image/x-puzzle-piece') and self.findPiece(self.targetSquare(event.pos())) == -1: self.highlightedRect = self.targetSquare(event.pos()) event.setDropAction(Qt.MoveAction) event.accept() else: self.highlightedRect = QRect() event.ignore() self.update(updateRect) def dropEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece') and self.findPiece(self.targetSquare(event.pos())) == -1: pieceData = event.mimeData().data('image/x-puzzle-piece') stream = QDataStream(pieceData, QIODevice.ReadOnly) square = self.targetSquare(event.pos()) pixmap = QPixmap() location = QPoint() stream >> pixmap >> location self.pieceLocations.append(location) self.piecePixmaps.append(pixmap) self.pieceRects.append(square) self.hightlightedRect = QRect() self.update(square) event.setDropAction(Qt.MoveAction) event.accept() if location == QPoint(square.x() / 80, square.y() / 80): self.inPlace += 1 if self.inPlace == 25: self.puzzleCompleted.emit() else: self.highlightedRect = QRect() event.ignore() def findPiece(self, pieceRect): try: return self.pieceRects.index(pieceRect) except ValueError: return -1 def mousePressEvent(self, event): square = self.targetSquare(event.pos()) found = self.findPiece(square) if found == -1: return location = self.pieceLocations[found] pixmap = self.piecePixmaps[found] del self.pieceLocations[found] del self.piecePixmaps[found] del self.pieceRects[found] if location == QPoint(square.x() + 80, square.y() + 80): self.inPlace -= 1 self.update(square) itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) dataStream << pixmap << location mimeData = QMimeData() mimeData.setData('image/x-puzzle-piece', itemData) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(event.pos() - square.topLeft()) drag.setPixmap(pixmap) if drag.exec_(Qt.MoveAction) != Qt.MoveAction: self.pieceLocations.insert(found, location) self.piecePixmaps.insert(found, pixmap) self.pieceRects.insert(found, square) self.update(self.targetSquare(event.pos())) if location == QPoint(square.x() / 80, square.y() / 80): self.inPlace += 1 def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.fillRect(event.rect(), Qt.white) if self.highlightedRect.isValid(): painter.setBrush(QColor("#ffcccc")) painter.setPen(Qt.NoPen) painter.drawRect(self.highlightedRect.adjusted(0, 0, -1, -1)) for rect, pixmap in zip(self.pieceRects, self.piecePixmaps): painter.drawPixmap(rect, pixmap) painter.end() def targetSquare(self, position): return QRect(position.x() // 80 * 80, position.y() // 80 * 80, 80, 80) class PiecesModel(QAbstractListModel): def __init__(self, parent=None): super(PiecesModel, self).__init__(parent) self.locations = [] self.pixmaps = [] def data(self, index, role=Qt.DisplayRole): if not index.isValid(): return None if role == Qt.DecorationRole: return QIcon(self.pixmaps[index.row()].scaled( 60, 60, Qt.KeepAspectRatio, Qt.SmoothTransformation)) if role == Qt.UserRole: return self.pixmaps[index.row()] if role == Qt.UserRole + 1: return self.locations[index.row()] return None def addPiece(self, pixmap, location): if random.random() < 0.5: row = 0 else: row = len(self.pixmaps) self.beginInsertRows(QModelIndex(), row, row) self.pixmaps.insert(row, pixmap) self.locations.insert(row, location) self.endInsertRows() def flags(self,index): if index.isValid(): return (Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsDragEnabled) return Qt.ItemIsDropEnabled def removeRows(self,row, count, parent): if parent.isValid(): return False if row >= len(self.pixmaps) or row + count <= 0: return False beginRow = max(0, row) endRow = min(row + count - 1, len(self.pixmaps) - 1) self.beginRemoveRows(parent, beginRow, endRow) del self.pixmaps[beginRow:endRow + 1] del self.locations[beginRow:endRow + 1] self.endRemoveRows() return True def mimeTypes(self): return ['image/x-puzzle-piece'] def mimeData(self, indexes): mimeData = QMimeData() encodedData = QByteArray() stream = QDataStream(encodedData, QIODevice.WriteOnly) for index in indexes: if index.isValid(): pixmap = QPixmap(self.data(index, Qt.UserRole)) location = self.data(index, Qt.UserRole + 1) stream << pixmap << location mimeData.setData('image/x-puzzle-piece', encodedData) return mimeData def dropMimeData(self, data, action, row, column, parent): if not data.hasFormat('image/x-puzzle-piece'): return False if action == Qt.IgnoreAction: return True if column > 0: return False if not parent.isValid(): if row < 0: endRow = len(self.pixmaps) else: endRow = min(row, len(self.pixmaps)) else: endRow = parent.row() encodedData = data.data('image/x-puzzle-piece') stream = QDataStream(encodedData, QIODevice.ReadOnly) while not stream.atEnd(): pixmap = QPixmap() location = QPoint() stream >> pixmap >> location self.beginInsertRows(QModelIndex(), endRow, endRow) self.pixmaps.insert(endRow, pixmap) self.locations.insert(endRow, location) self.endInsertRows() endRow += 1 return True def rowCount(self, parent): if parent.isValid(): return 0 else: return len(self.pixmaps) def supportedDropActions(self): return Qt.CopyAction | Qt.MoveAction def addPieces(self, pixmap): self.beginRemoveRows(QModelIndex(), 0, 24) self.pixmaps = [] self.locations = [] self.endRemoveRows() for y in range(5): for x in range(5): pieceImage = pixmap.copy(x*80, y*80, 80, 80) self.addPiece(pieceImage, QPoint(x, y)) class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.puzzleImage = QPixmap() self.setupMenus() self.setupWidgets() self.setSizePolicy(QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)) self.setWindowTitle("Puzzle") def openImage(self, path=None): if not path: path, _ = QFileDialog.getOpenFileName(self, "Open Image", '', "Image Files (*.png *.jpg *.bmp)") if path: newImage = QPixmap() if not newImage.load(path): QMessageBox.warning(self, "Open Image", "The image file could not be loaded.", QMessageBox.Cancel) return self.puzzleImage = newImage self.setupPuzzle() def setCompleted(self): QMessageBox.information(self, "Puzzle Completed", "Congratulations! You have completed the puzzle!\nClick OK " "to start again.", QMessageBox.Ok) self.setupPuzzle() def setupPuzzle(self): size = min(self.puzzleImage.width(), self.puzzleImage.height()) self.puzzleImage = self.puzzleImage.copy((self.puzzleImage.width()-size)/2, (self.puzzleImage.height() - size)/2, size, size).scaled(400, 400, Qt.IgnoreAspectRatio, Qt.SmoothTransformation) random.seed(QCursor.pos().x() ^ QCursor.pos().y()) self.model.addPieces(self.puzzleImage) self.puzzleWidget.clear() def setupMenus(self): fileMenu = self.menuBar().addMenu("&File") openAction = fileMenu.addAction("&Open...") openAction.setShortcut("Ctrl+O") exitAction = fileMenu.addAction("E&xit") exitAction.setShortcut("Ctrl+Q") gameMenu = self.menuBar().addMenu("&Game") restartAction = gameMenu.addAction("&Restart") openAction.triggered.connect(self.openImage) exitAction.triggered.connect(QApplication.instance().quit) restartAction.triggered.connect(self.setupPuzzle) def setupWidgets(self): frame = QFrame() frameLayout = QHBoxLayout(frame) self.piecesList = QListView() self.piecesList.setDragEnabled(True) self.piecesList.setViewMode(QListView.IconMode) self.piecesList.setIconSize(QSize(60,60)) self.piecesList.setGridSize(QSize(80,80)) self.piecesList.setSpacing(10) self.piecesList.setMovement(QListView.Snap) self.piecesList.setAcceptDrops(True) self.piecesList.setDropIndicatorShown(True) self.model = PiecesModel(self) self.piecesList.setModel(self.model) self.puzzleWidget = PuzzleWidget() self.puzzleWidget.puzzleCompleted.connect(self.setCompleted, Qt.QueuedConnection) frameLayout.addWidget(self.piecesList) frameLayout.addWidget(self.puzzleWidget) self.setCentralWidget(frame) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.openImage(':/images/example.jpg') window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/puzzle/puzzle.qrc0000644000076500000240000000015713245231431022725 0ustar philstaff00000000000000 example.jpg PyQt5_gpl-5.10.1/examples/itemviews/puzzle/puzzle_rc.py0000644000076500000240000053141013245231431023255 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 12 15:49:57 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\xa6\x9e\ \xff\ \xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\ \x48\x00\x00\xff\xe1\x00\x16\x45\x78\x69\x66\x00\x00\x4d\x4d\x00\ \x2a\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\xff\xdb\x00\x43\x00\ \x05\x03\x04\x04\x04\x03\x05\x04\x04\x04\x05\x05\x05\x06\x07\x0c\ \x08\x07\x07\x07\x07\x0f\x0b\x0b\x09\x0c\x11\x0f\x12\x12\x11\x0f\ \x11\x11\x13\x16\x1c\x17\x13\x14\x1a\x15\x11\x11\x18\x21\x18\x1a\ \x1d\x1d\x1f\x1f\x1f\x13\x17\x22\x24\x22\x1e\x24\x1c\x1e\x1f\x1e\ \xff\xdb\x00\x43\x01\x05\x05\x05\x07\x06\x07\x0e\x08\x08\x0e\x1e\ \x14\x11\x14\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\x1e\ \x1e\x1e\x1e\x1e\x1e\xff\xc0\x00\x11\x08\x01\xa8\x01\xa8\x03\x01\ \x22\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\ \x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x05\ \x06\x07\x02\x03\x08\x01\x09\xff\xc4\x00\x54\x10\x00\x01\x03\x03\ \x03\x02\x05\x01\x04\x06\x07\x01\x0d\x07\x02\x07\x01\x02\x03\x04\ \x00\x05\x11\x06\x12\x21\x07\x31\x13\x22\x41\x51\x61\x71\x14\x32\ \x81\x91\x08\x15\x23\x42\xa1\xb1\x16\x33\x52\x62\xc1\xd1\xf0\x24\ \x34\x37\x43\x63\x72\x74\x75\x82\x92\xb3\xb4\xe1\xf1\x17\x36\x53\ \x73\x94\xa2\xb2\x25\x93\x09\x44\x83\xa3\xc2\xd2\xe2\xff\xc4\x00\ \x1b\x01\x00\x02\x03\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x03\x01\x02\x04\x05\x06\x07\xff\xc4\x00\x35\x11\x00\ \x02\x01\x02\x04\x02\x07\x07\x04\x03\x01\x01\x00\x00\x00\x00\x00\ \x01\x02\x03\x11\x04\x12\x21\x31\x13\x41\x05\x22\x51\x61\x71\xa1\ \xf0\x14\x32\x81\x91\xc1\xd1\xe1\x15\x23\xb1\xf1\x42\x52\x62\x63\ \x24\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xec\ \xba\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\ \x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x28\xa2\x80\x0a\x2b\x15\x2d\ \x29\xee\x69\x33\xf3\xd9\x68\x72\xb1\x50\xda\x5b\x80\xae\x8a\x62\ \x9d\xa8\xe2\x45\x4e\xe7\x1d\x42\x13\xee\xa5\x00\x3f\x8d\x32\xcb\ \xea\x36\x9f\x8f\xfd\x65\xea\xdc\x93\x9c\x63\xed\x08\x38\xfe\x34\ \xa7\x88\xa6\xb9\x90\x9d\xf6\x26\xf4\x55\x7c\x7a\xa7\xa5\x87\x7d\ \x41\x6c\x07\xfe\x70\x9a\xdf\x13\xa9\x5a\x6e\x49\x09\x6a\xfb\x6c\ \x52\x89\xc6\xd1\x25\x19\xfe\x74\x7b\x44\x09\x27\x54\x53\x34\x5b\ \xec\x67\xd2\x14\x1c\x49\x07\x90\x41\xc8\x3f\x8d\x2f\x66\x6b\x2e\ \x76\x58\xab\xc6\xa4\x67\xb3\x22\xe2\xaa\x2b\x14\xad\x2a\xec\x6b\ \x2a\xb9\x21\x45\x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\x01\x45\ \x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\x01\x45\ \x14\x50\x01\x45\x73\x86\xb2\xeb\x1e\xa8\xb8\xf5\x36\xef\xa7\x34\ \xc4\xb6\xed\x36\xbb\x1b\xaa\x8f\x21\xef\x01\x0e\xbd\x21\xe4\xa8\ \xa5\x43\xce\x0a\x52\x9c\x85\x0e\x06\x70\x33\x9e\x46\x15\xc5\xea\ \x7e\xb2\x65\x7b\x9c\xb8\x35\x20\x7f\x65\xc8\xc8\x03\xff\x00\xb4\ \x03\x5c\xbc\x4f\x4b\xe1\xf0\xf5\x38\x72\xbd\xfb\x8c\x32\xe9\x0a\ \x4a\x4d\x6a\x74\x25\x15\x4b\x41\xeb\x1d\xd9\x18\xfb\x6d\xa2\x13\ \xff\x00\xfc\xa5\xa9\xbf\xe7\xba\x9f\xa0\xf5\x8a\xca\xe0\x02\x65\ \xb2\x7b\x07\xfe\x2c\xa5\xc0\x3f\x88\xfe\x55\x34\xfa\x63\x07\x3f\ \xf3\xb7\x8d\xcb\xc7\x1b\x46\x5c\xcb\x2e\x8a\x89\x41\xea\x3e\x8f\ \x97\x80\x2e\xc1\x85\x1f\xdd\x79\xa5\xa3\xf8\xe3\x1f\xc6\xa5\x31\ \xde\x6a\x44\x76\xe4\x30\xe2\x5d\x65\xd4\x05\xa1\x69\x39\x0a\x49\ \x19\x04\x1f\x6c\x56\xea\x55\xe9\x55\xf7\x24\x9f\x83\x34\x46\xa4\ \x27\xee\xbb\x9b\x28\xa2\x8a\x69\x70\xa2\x8a\x28\x00\xa2\x8a\x28\ \x00\xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x8a\x28\ \x00\xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x82\x40\xa4\xb2\xa5\x21\ \xa4\x92\x54\x05\x00\x6f\x5b\x89\x48\xe4\xd3\x65\xc6\xef\x1e\x2b\ \x6a\x52\xdc\x4a\x42\x46\x49\x27\x00\x54\x1b\xa8\xbd\x4a\xb4\x69\ \x98\xab\x54\x99\x29\x2e\x81\x90\xd8\x57\x3f\x8f\xb5\x72\xfe\xbc\ \xea\x86\xa1\xd6\x4b\x5a\x23\xc8\xfb\x25\xb4\x28\x82\xbd\xdb\x1a\ \x1f\xff\x00\xb1\xac\xb5\x71\x0a\x2b\x41\xb4\xa8\x4e\xab\xd3\x62\ \xfc\xd7\xfd\x73\xd3\x3a\x7d\xb7\x52\x25\x89\x8f\x27\x23\xc3\x61\ \x5c\x67\xfe\x57\xf9\x57\x3d\x6b\x3f\xd2\x3b\x56\x5d\x5e\x72\x3d\ \x85\xb1\x11\xa3\x90\x3c\x24\xee\x5f\xe7\xc9\xfe\x55\x08\xfd\x59\ \x09\x4e\xf8\xd3\x9c\x2f\xa9\x47\x71\x79\xc2\x4a\x4a\x7d\xd0\x81\ \x82\xaf\xc7\x02\x9d\xed\xce\x6c\x7d\x30\xed\x16\xf8\xe9\x51\x48\ \x52\x8a\x9b\x09\x18\xc7\x0a\x3e\xde\xfc\xd6\x47\x5a\xfa\xda\xfe\ \x27\x42\x38\x18\x47\x72\x1d\x72\xbd\x75\x02\xf8\xe3\x92\x25\x49\ \x9c\x42\xb9\x25\xc5\x12\x79\xfa\xf3\x4c\x32\xe0\xea\x1f\x15\x49\ \x72\x44\x85\xb8\x39\x50\xdd\x8c\x55\xa1\x73\x2d\xcc\x94\xe1\x97\ \x36\x44\xc5\x92\x30\x96\x13\xb5\x94\x28\x0c\x60\xa8\x77\xfc\x68\ \x95\x0d\x05\xb5\xa1\x96\x5b\x0e\x60\x78\x8e\x78\x7e\x32\xd2\x3b\ \x0d\xbb\xbc\xb9\xf8\xc2\xaa\x63\x8a\x90\xd7\x84\x8b\x5c\xfd\x79\ \x15\x22\xa2\x5f\xd2\xb2\x82\xb7\xf7\x0e\xe0\x2b\x38\xad\x4e\x8b\ \xcb\x07\x2e\x4b\x71\xb2\x39\xf3\x13\x56\x14\xcb\x5c\xb1\x19\xc5\ \x38\xdb\xa5\xa6\x88\x23\xed\x6b\x28\x2a\xfa\x25\x38\x1f\xc2\xa1\ \xf7\x24\xca\x48\x52\xa3\xda\x9b\x71\x09\xc9\xf1\x1a\x6b\x79\xfc\ \x49\xcd\x69\x85\x77\x3e\x66\x5a\x98\x65\x05\x71\x5e\x98\xea\x3e\ \xb1\xd3\x52\x03\xb6\xeb\xcc\xa6\xb6\x8e\x52\x97\x0e\x0f\xd4\x76\ \x35\x73\x68\x5f\xd2\x96\xeb\x15\x48\x67\x51\xc3\x44\x94\x81\x8f\ \x15\xaf\x22\xfe\xa7\xd0\xfe\x55\xce\xab\x44\xa7\x3f\x75\xc5\x83\ \xe8\x40\xe0\xfc\x81\x5a\x3c\x05\x28\x12\x94\x20\x94\x9c\x29\x25\ \x38\x50\x3e\xc6\x99\x28\x42\x7b\x99\x1c\x7b\x8f\xa4\x7d\x29\xea\ \xee\x9e\xd6\x91\x3c\x5b\x5d\xc5\x2b\x71\x23\xcf\x1d\xd3\xb5\xd4\ \x7e\x1e\xa3\xe4\x55\xa3\x06\xe6\xc4\x84\x8d\xab\x15\xf2\x62\xd3\ \x32\xe9\x6a\x7d\x33\x6d\x8f\x3b\x15\xd6\xd5\x9d\xc8\x59\x49\x49\ \x1f\x35\x7b\xf4\xb7\xf4\x95\xbe\x59\x5c\x6a\xdf\xaa\x5b\x54\xf8\ \xe3\x00\x3f\x9c\x3a\x91\xf5\xec\x7f\x1f\xce\xa1\x67\x86\xda\xaf\ \x32\x8e\x0d\x6c\x77\xfa\x56\x14\x38\x35\x95\x55\xfd\x38\xea\x75\ \x83\x56\xc4\x43\xd6\x9b\x8b\x52\x38\xca\x9b\x27\x0e\x23\xea\x9e\ \xf5\x62\xc5\x98\xdb\xa9\x04\x28\x1c\xd3\x61\x51\x4f\x62\x82\xba\ \x2b\xc4\xa8\x1e\xd5\xed\x5c\x90\xa2\x8a\x28\x00\xa2\x8a\x28\x00\ \xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x8a\x28\x00\xa2\x8a\x28\x03\ \x88\xa1\x7f\xbf\x27\x51\x3f\xe9\xa9\x3f\xf8\x87\x6a\x67\xa2\xac\ \x97\x2d\x65\xab\x5c\xb0\xda\x56\xd4\x76\xa1\xb4\x97\xae\x33\x5d\ \x41\x5a\x58\x4a\xb3\xb1\x09\x48\x23\x72\xd5\x82\x46\x48\x00\x02\ \x79\xed\x50\xc8\x5f\xef\xc9\xd4\x5f\xfa\x6a\x4f\xfe\x21\xda\xbe\ \xbf\x45\x38\x81\x1a\x5b\x51\x5c\xd6\x8f\xdb\xcc\xbf\x3e\x82\xb2\ \x39\x2d\xb4\x94\x21\x23\xe8\x30\xaf\xcc\xd7\x98\x8e\x12\x18\x9e\ \x91\x9a\xa8\xae\x97\xe0\xf3\x98\x6a\x4a\xad\x6c\xaf\x6d\x4f\x17\ \xa0\xf4\x3b\xb7\x77\x34\xb4\x3d\x51\x27\xfa\x42\xdb\x25\xdf\x09\ \xe2\x93\xb8\x71\x9f\x28\x48\x07\x1e\xa0\x1c\x8c\xf3\x55\xc5\xce\ \xd5\x3a\xdd\xac\xe0\x69\x59\x0d\x62\x74\xcb\x82\x21\xa4\x83\x94\ \xa4\x28\x15\x78\x9f\x29\x09\x1b\xa8\x44\xc9\x09\xea\xfe\x96\xbb\ \x20\xab\xed\x0e\x6a\x20\xd2\xd5\x9f\xdc\x78\x2d\x2b\x1f\x88\x35\ \x6e\x5f\x7f\x57\xc1\xfd\x22\xb4\xf8\x91\x6c\x6e\x63\xf7\x6b\x5b\ \xa2\x33\xeb\x5f\xfb\x89\xc8\xe1\xc2\xa7\x12\x92\x0e\x54\xb4\x38\ \x10\x48\x23\x84\x8e\xf5\x34\xb0\x58\x6c\x6c\x23\x52\x31\xcb\xad\ \x9a\x5c\xd1\xa1\x53\xa7\x5d\x5d\x2b\x59\xdb\xe0\x54\xfa\x96\xd2\ \xed\x8e\xf9\x2a\xd4\xf3\xa8\x75\x71\xd4\x12\x56\x80\x40\x39\x00\ \xff\x00\x8d\x74\x86\x8a\xff\x00\xdc\xdb\x27\xfd\x1f\x1f\xfe\xed\ \x35\x4e\xf5\x96\xe7\x6f\x91\xa8\x25\x5b\x9a\xb3\x35\x1e\x64\x77\ \x92\x5c\x9a\x97\x32\xa7\xc6\xce\xc5\x38\x18\xee\x3d\x4f\x6a\xb8\ \xb4\x57\xfe\xe6\xd9\x3f\xe8\xf8\xff\x00\xf7\x69\xab\xf4\x4d\x28\ \xd2\xc5\xd5\x84\x1d\xd2\xfb\xec\x3f\x05\x05\x0a\xd3\x8a\x1d\xe8\ \xa2\x8a\xf4\x67\x50\x28\xa2\x8a\x00\x28\xa2\x8a\x00\x28\xa2\x8a\ \x00\x28\xa2\x8a\x00\x28\xa2\x8a\x00\x28\xa2\x8a\x00\x28\xa2\x8a\ \x00\x2b\x15\xa8\x24\x50\xb5\x84\x8c\xd3\x0e\xa0\xbd\x47\xb7\xc4\ \x75\xf7\xde\x4b\x6d\xb6\x92\xa5\xa9\x47\x01\x20\x7a\x9a\x1b\x49\ \x5d\x80\xa2\xef\x75\x66\x1b\x2a\x5b\x8e\x25\x21\x23\x24\x93\x80\ \x05\x73\xef\x58\x7a\xe7\x06\xd4\xd3\x90\xac\xce\x99\x32\xd4\x76\ \x25\x48\xe4\x0f\xa7\xf9\xd5\x67\xd7\x9e\xb6\xbd\x7a\x7d\xfb\x3d\ \x85\xe5\x26\x30\x25\x25\x40\xe0\xb8\x7d\xcf\xc7\xc7\xe7\x5c\xff\ \x00\x26\xe2\xec\xa5\xf8\x4d\x2d\x4b\x5a\xc1\x0e\xba\x4f\x27\xf1\ \xf4\x1f\x1e\xbf\x4a\xc7\x52\x72\x93\xb1\xb2\x8e\x19\x7b\xd5\x3e\ \x44\x9a\xf3\xa8\xaf\xda\x9a\xf6\xa5\xbc\xa3\x31\xe2\xb2\x50\xd2\ \x95\x96\xd2\x3d\x49\xf4\xc0\xf5\x39\xa5\xb6\xb6\xdc\x72\x4b\x5e\ \x1a\x05\xce\x43\x6a\xf0\xfc\x57\x13\xfb\x16\x95\xfd\x86\x9b\x1c\ \x13\xf8\x7c\x9c\x0e\x6a\x2b\x6b\x79\x0b\x3f\x66\x8e\x4e\xc1\xca\ \xd4\x14\x40\x5e\x3d\xc8\xf9\xf6\xfc\x39\xe6\x9f\x58\x9a\xb5\x25\ \x21\x95\x06\xe3\xb2\x48\x71\xf4\x80\x0a\x8f\xab\x4d\x8e\xc0\x7a\ \x9f\x4f\x55\x12\x6b\x1d\x48\xeb\xa9\xd5\xa4\xf4\xb4\x47\xf9\x0c\ \xb6\xc3\x98\x91\x21\x72\x5c\x3b\x9c\x77\x68\xf2\xa4\x0f\x75\x0f\ \xbd\xf4\x1c\x1f\x73\xda\x9a\xa7\xdc\xd2\x85\x15\xdc\xe6\xc5\xb7\ \x30\xac\xa9\x4d\xaf\x97\x1e\xe3\x8d\xc8\x4f\x20\x7b\x02\x31\xf1\ \x4f\x9a\x5b\xa7\xda\xe3\x5f\xa5\x0f\xdb\x63\x1b\x75\xa0\xf3\xf6\ \xf9\x0b\x2d\xa5\xcc\x71\x94\x03\xe6\x57\xd7\x18\xe3\x8c\x0a\xb7\ \xb4\x6f\x40\x74\x95\xad\x9c\xde\x19\x45\xe2\x6a\x80\x52\xe4\x3c\ \x54\xbe\x7e\x01\x38\x03\xd7\x9a\x5a\x69\x6e\x5e\x7d\x5d\x9f\xaf\ \x5e\x07\x3c\xc6\xd4\x53\x2e\x0e\x2a\x3d\x92\xdb\x74\xbb\xac\x79\ \x50\x0e\xe6\xa3\xa4\x7b\xe1\x18\x51\xfc\x54\x3b\xd4\x92\xdf\xa2\ \xfa\x9f\x7b\x86\xa7\x54\xf7\xea\xa6\x00\x4e\xe6\x63\xfe\xc7\x8e\ \xc3\x71\xee\x4f\x3e\xa4\x9f\x7a\xea\xdb\x5e\x9a\xb6\x5b\xe3\x08\ \xb0\x62\xb0\xcb\x09\x18\x21\x2d\xa5\x39\xf8\x24\x0a\x5e\xcd\x9e\ \x32\x54\x14\x94\x0c\x01\xe5\x18\xe1\x3f\x41\xda\xac\xa4\xff\x00\ \xc5\x5b\xcc\x53\xa9\x0f\xf2\xd7\xc9\x7a\xf8\x9c\x8f\xff\x00\xb1\ \xdd\x4a\x94\x87\x5c\x98\xea\xc9\x5e\x00\x49\x59\xc7\xb2\x92\x73\ \xc1\x1e\xc7\xbf\x15\xa9\xde\x96\xea\xa3\x35\x08\x4b\xc8\x44\x84\ \x8c\x07\x50\x3c\x30\xbc\x7a\xab\xe4\xe4\x8e\x7b\xe2\xbb\x18\x45\ \x6d\x2e\x15\x14\xa7\x80\x07\x22\xbc\x5c\x28\x0e\x0d\xaa\x6d\xa3\ \x9e\xd9\x19\x1f\x91\xa2\xf5\x3f\xd8\x15\x5a\x7f\xe9\xfc\x9c\x87\ \x0f\xa3\x77\xe9\x4a\x53\x6d\x86\xfc\x50\x77\x17\x0e\xed\xa3\x27\ \x03\x91\xdf\xde\x9b\xb5\x1f\x4c\x2f\xd1\xe6\xbb\x1e\x54\x34\xf8\ \x8d\x21\x4a\x0f\x25\x5c\x28\x63\x19\x3f\xc0\xd7\x65\x7d\x91\xb6\ \x50\x52\xde\xdc\x7c\x0e\xd4\x96\x65\xbe\xdf\x29\x59\x93\x1d\x0e\ \x12\x36\x92\x47\x04\x7c\xd5\x33\xd4\x5f\xe4\x4b\xa9\x4e\x5a\x38\ \xe8\x70\x94\xbd\x33\x32\x24\x77\xb7\x36\xb5\x2d\x04\x04\x92\x9f\ \x4e\x32\x3e\x79\xed\x4c\x13\x2d\x8e\x24\xa9\x21\xa2\x36\xf2\xb0\ \x7f\x70\x73\xeb\x5d\xe9\x73\xd1\xf6\x29\xb9\x58\x8e\x86\xdc\xc1\ \xf3\x84\x8c\x82\x7d\x73\x51\x7b\xd7\x49\x74\xfd\xc2\x21\x6f\xc3\ \x0d\x9f\xed\x36\x90\x0e\x7e\xbf\xeb\xbd\x32\x38\xca\x91\xdd\x5c\ \x54\xb0\xf4\x27\xb3\x68\xe3\x5d\x31\x7d\xbd\xe9\xa9\xad\xdc\xed\ \x53\x1f\x8c\xeb\x6a\xe0\xa1\x44\x11\x5d\x41\xd1\xff\x00\xd2\x59\ \xc9\x4f\xc7\xb4\xea\x86\x9b\x69\xd5\x00\x94\xca\x4f\x94\x28\xff\ \x00\x78\x76\xfc\xb1\x50\x0d\x7f\xd1\x5b\x8d\xad\x97\x8d\xb5\x84\ \xbd\x1c\x82\xaf\x10\xe4\xaf\xe3\x38\xaa\x66\xe3\x02\x6d\xb5\x4a\ \x6a\x53\x2a\x65\x7b\xb0\x9e\x31\xdb\xe6\xb5\xc6\xb4\x2b\xad\x37\ \xf3\x31\x55\xc2\x38\x6a\xf5\x5d\xa7\xd4\xfd\x2d\xa8\x63\xdc\xe3\ \x21\x68\x71\x2a\xdc\x32\x30\x73\x9a\x92\xb6\xad\xc2\xb9\x17\xf4\ \x56\xd6\x2e\x4b\xb0\x43\x87\x29\xf5\x19\x2c\x0f\x0d\x40\x9e\xe0\ \x76\x3f\x95\x75\x6d\xaa\x40\x75\x94\x9c\xe7\x22\x9f\x86\xa8\xe7\ \x16\xa5\xba\x30\xb4\xe2\xdc\x58\xbe\x8a\x28\xa7\x80\x51\x45\x14\ \x00\x51\x45\x14\x00\x51\x45\x14\x00\x51\x45\x14\x00\x51\x45\x14\ \x01\xc4\x50\xbf\xdf\x93\xa8\xbf\xf4\xd4\x9f\xfc\x43\xb5\x7d\xfe\ \x8a\x72\xb7\xe9\x1d\x41\x01\x6a\xfd\xac\x4d\x41\x24\xed\x3e\x88\ \x71\x28\x71\x27\xf1\xdc\x7f\x23\x54\x24\x2f\xf7\xe4\xea\x2f\xfd\ \x35\x27\xff\x00\x10\xed\x4d\xf4\x06\xa3\x97\xa1\x75\x74\x9b\xdb\ \x11\x9c\x9b\x6d\xb8\x32\x96\xee\x71\x1b\x50\x0e\x12\x8c\xec\x75\ \xbc\xe0\x15\x00\x48\x29\x24\x64\x1e\xf9\x15\xe6\x69\xe2\xa1\x43\ \xa4\xa7\x9d\xd9\x3f\xc1\xe7\x70\xb5\x55\x2a\xf9\x9e\xda\x89\xcc\ \x77\x93\xd5\x8d\x2b\x01\x39\xf1\x91\xa9\x5b\x2a\x4f\xf7\x5b\xde\ \x55\xf9\x62\xad\x5d\x66\xfa\x15\xfa\x4c\xe8\x18\xe3\x1b\x9b\xb6\ \xdc\x14\xae\x7f\xb4\xdf\xff\x00\xf3\x4e\x70\xa1\x68\x79\x85\x8e\ \xb0\xdb\xa1\x4b\x9c\xe2\xa2\xa9\xd8\xde\x18\x3e\x5d\xfe\x55\xa8\ \x37\xc0\x0b\x3c\x85\x13\xd8\x66\xaa\x6b\x9e\xa2\xb8\xbf\xd4\xd8\ \x3a\xe5\x09\x42\x66\x41\x75\x61\x31\x9c\xc9\x42\x99\x5a\x3c\x35\ \x37\x9e\xe0\xed\xc6\x15\xee\x33\x83\xda\x9f\x1a\x94\xfa\x36\x30\ \xa5\x51\xee\xef\xf0\x34\xe9\x86\x8a\x4d\xde\xed\x3f\x80\xbf\xaa\ \xff\x00\xef\x85\x76\xff\x00\xe6\x27\xff\x00\xc1\x35\x7c\xe8\xaf\ \xfd\xcd\xb2\x7f\xd1\xf1\xff\x00\xee\xd3\x54\x46\xba\xd5\x16\xed\ \x4a\xb4\xc9\x63\x4e\xc6\xb7\xcd\x5a\x92\xb9\x12\x42\xc2\xdc\x73\ \x09\xc0\x4e\xed\xa0\xed\x1f\xe1\xda\xaf\x7d\x15\xff\x00\xb9\xb6\ \x4f\xfa\x3e\x3f\xfd\xda\x69\x7d\x14\xe1\x2c\x5d\x59\x42\x57\x4f\ \x5f\x9b\x1b\x83\x71\x75\xa6\xe2\xee\x98\xef\x45\x14\x57\xa3\x3a\ \x81\x45\x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\x01\x45\x14\x50\ \x01\x45\x14\x50\x01\x45\x14\x50\x01\x58\xb8\xa0\x91\x9a\xc8\x9c\ \x0c\xd3\x5d\xde\x62\x58\x69\x44\x9a\x00\x43\xa9\x6f\x71\xad\x90\ \x5e\x93\x25\xf4\x32\xd3\x48\x2a\x5a\xd4\x70\x12\x07\xad\x70\xef\ \x5f\xfa\xd5\x37\x53\x5c\xdd\xb4\xd9\xde\x5b\x76\xd6\xd7\x81\xb4\ \xff\x00\x5a\x7d\xcf\xbf\xf8\x54\x8b\xf4\xbb\xea\x7b\xcf\xcb\xfe\ \x89\x5a\x65\x1d\x88\x39\x98\xa4\x1f\xde\xfe\xc9\xf8\x1f\xcc\xfc\ \x57\x2d\x38\xe1\x5e\x48\x59\x28\x07\xef\x9e\xea\x3f\xe5\x4a\x6d\ \xcb\x51\x94\xd2\x5d\x66\x2e\x9d\x25\x4e\xba\xb4\xa9\xce\xff\x00\ \xd6\x63\x93\xf4\xa4\x65\xe2\xf1\x11\xd8\x18\x1c\xef\x56\x71\x91\ \xf2\x7d\xbf\x9d\x27\x2a\x5b\x9e\x44\x79\x53\xeb\x4a\xed\xd1\x5f\ \x98\xfb\x50\xe1\xb2\xe3\xae\xba\xb0\x94\xa1\x09\xdc\xa5\xab\xe9\ \x51\x95\x41\x5d\x8d\x52\x95\x59\x59\x7a\xee\x1d\x60\xb8\x86\x98\ \x53\x49\x71\x61\xa3\x80\xa0\x84\xf9\xdd\x3e\x80\x7b\x7b\x01\x5d\ \x1d\xd1\x7e\x8c\x49\x75\x11\xb5\x0e\xb5\x8e\x94\x24\x25\x2a\x85\ \x68\x71\x3e\x54\x27\xba\x4b\xa3\xf8\xec\xfc\x4d\x3b\xf4\x1f\xa3\ \x90\xb4\xc4\x78\xb7\xdd\x47\x19\x32\xef\x65\x21\xc6\x18\x58\x05\ \x11\x09\xf5\xc7\xef\x2f\xe4\xf6\xf4\xab\xb1\x5b\xce\xe5\xac\xa8\ \x1c\xe4\x93\xeb\x5c\xba\xb5\x54\xde\x9b\x1d\x88\x5e\x94\x72\xad\ \xff\x00\x83\xd8\xed\x04\x27\x03\x69\x38\xc7\x09\x09\x48\x00\x60\ \x00\x3d\x00\xa5\x71\xd8\x0b\xe3\x97\x08\xe0\xe0\x7f\x0c\xd6\x29\ \x42\x36\x6f\x70\x1c\x1c\x61\x03\xbf\xe3\x4b\x59\x5c\x82\x9d\xad\ \xa0\x32\x9f\xe3\x55\x8a\x11\x26\x2a\x62\x02\x8a\x7c\xe9\x43\x69\ \xfe\x35\xea\x9b\x82\x8e\x14\xe0\x51\xad\x68\x61\xc7\x55\xe6\x5a\ \x96\x47\xb9\xed\x5b\x5b\x80\x08\xc9\xc1\x1d\xfb\xd3\x92\xec\x42\ \x76\xdd\x98\x20\x42\xc7\x2b\x03\xf0\xcd\x6a\x75\x8b\x7a\xff\x00\ \xe1\x07\xce\x07\xf1\xa7\x06\xe3\x36\x8c\x27\x18\xc7\x7c\xf7\xac\ \x84\x66\x72\x41\x03\x8f\x8c\x54\xb8\xb6\x82\xe3\x42\x99\x86\x01\ \x01\xdc\xfb\xf3\x5a\x5d\x6d\xa2\x0e\xd1\xba\x9e\xdc\x8b\x1b\x61\ \x3e\x51\x8e\x7b\xd2\x65\x47\x61\x00\xed\x52\x47\xe3\x4b\x94\x4b\ \x29\x0c\xcb\x65\xac\x02\xa6\x17\x9f\x42\x38\xa4\xab\x8e\x82\xbd\ \xac\xad\x48\x57\x38\x0b\xe2\x9f\xd6\xc3\x7d\x82\xc2\x49\xe7\x93\ \x9a\x45\x2e\x39\xd8\x72\x90\xa0\x79\xc6\x29\x72\x80\xc5\x21\x96\ \x43\x44\x20\xb6\xea\x76\xa8\x8c\x13\x8e\x08\xaa\xbb\xab\x3d\x35\ \xb5\x6a\x48\x0f\xb8\xd3\x49\x8b\x3d\x00\x29\x0a\x1c\x03\x8f\xa5\ \x5b\x2a\x52\x9a\x05\xb2\x0a\xdb\xfe\xca\x8f\x3f\x81\xa4\x17\x08\ \xe8\x75\x1e\x4e\x47\x3b\x4f\xaa\x7e\x0d\x21\xe8\xf4\x1a\x9b\x5b\ \x1c\xc1\xd1\xb7\x17\xa5\xf5\x93\xb6\x7b\x92\x8c\x79\x28\x21\x0d\ \xa9\x47\x09\x74\x64\x91\xf8\xd7\x6c\xe8\x8b\x88\x93\x05\xa3\xbb\ \x9c\x73\x5c\xa7\xd7\x8d\x28\xb9\x50\x13\x77\x84\x16\x89\x71\x32\ \x49\x47\x7c\x03\xc6\x7d\xf1\xcd\x4d\xbf\x45\xce\xa0\xbf\x7d\xb4\ \x88\x97\x27\xf3\x3a\x2e\x10\xe1\x3d\xd6\x3d\x15\x5d\x2c\x35\x48\ \xc3\xaf\xdb\xb9\xc9\xc5\xd3\xb4\xb3\x9d\x4c\x85\x65\x35\x95\x22\ \xb7\xc8\x0e\xb4\x08\x39\xc8\xa5\xb5\xd2\x33\x05\x14\x51\x40\x05\ \x14\x51\x40\x05\x14\x51\x40\x05\x14\x51\x40\x05\x14\x51\x40\x1c\ \x4b\x19\xb5\xb7\xd6\x6e\xa2\x25\xc4\x29\x04\xde\x64\x28\x05\x0c\ \x70\x5f\x74\x83\xf8\x82\x0f\xe3\x52\x2a\xe9\x7b\xbe\x88\xd2\xb7\ \x6b\xda\xaf\x57\x0b\x2b\x0f\x5c\x16\xda\x5a\x5b\xdb\x94\x92\xb4\ \xa7\x3b\x42\x80\x20\x2b\x19\xee\x73\xc7\x14\xba\x06\x9e\xb1\x41\ \xc7\xd8\xec\xf0\x19\x23\xf7\x92\xc2\x77\x7e\x78\xcd\x79\xcc\x5f\ \x42\xd4\xc4\x57\x95\x4c\xc9\x26\x71\xff\x00\x4c\x9b\x93\xeb\x68\ \x50\x9d\x2d\xbc\xea\xbd\x2d\x09\x76\xcd\x3f\x09\xeb\x8d\xad\x6e\ \xad\xd6\xe2\x2e\x32\xdc\x0c\x29\x44\x95\x06\xd4\x9c\x10\x92\xa3\ \x9c\x1c\x8c\x93\x8c\x66\xb7\x9d\x0b\xac\xef\x13\xdf\x9a\xab\x2a\ \x98\x32\x1d\x53\x8b\xf1\x16\x96\xc2\x4a\x89\x27\x85\x1c\xe3\x9a\ \xe8\x7c\x51\x5a\x5f\x43\xf1\x22\xa3\x5a\xab\x92\x5e\x0b\xee\x68\ \x58\x04\xe2\xa3\x39\x36\x91\x4a\x59\xfa\x41\x77\x72\x43\x6a\xba\ \xcf\x88\xc3\x19\x05\xc4\xb2\xa2\xb7\x31\xea\x06\x40\x00\xfc\xf3\ \x57\x3c\x56\x1a\x8b\x19\xa8\xcc\x20\x21\xa6\x90\x10\x84\x8f\x44\ \x81\x80\x2b\x65\x15\xbb\x09\x81\xa3\x84\x4f\x86\xb7\x34\xd1\xc3\ \xc2\x8f\xba\x14\x51\x45\x6c\x1e\x14\x51\x45\x00\x14\x51\x45\x00\ \x14\x51\x45\x00\x14\x51\x45\x00\x14\x51\x45\x00\x14\x51\x41\xed\ \x40\x1a\x64\xb8\x10\x82\x73\x54\xe7\x5e\xb5\xba\x74\xbe\x91\x9d\ \x3d\x0b\x1f\x68\xdb\xe1\xc7\x4f\xbb\x87\xb7\xe5\xdf\xf0\xab\x3e\ \xff\x00\x28\x33\x1d\x64\x9e\xc2\xb8\x63\xf4\xc3\xd6\x4b\x99\x7e\ \x6a\xc6\xc2\xce\xd8\x83\x2b\x19\xe0\xad\x5c\xff\x00\x01\x8a\x5d\ \x57\xb4\x49\x8c\x73\x4a\xcc\xa1\xaf\xf7\x17\xee\x57\x07\xdf\x7d\ \xd5\x2d\x6e\x28\xad\xe5\xa9\x59\x2a\x24\xe7\x14\xd5\xcb\x87\xbe\ \xd4\x0f\x5a\xcf\x03\x1e\x62\x08\x1c\xa8\xfb\x9a\x5f\x68\xb4\x4d\ \xba\x5d\x22\xdb\xd8\x6c\x87\x1f\x52\x52\x06\x39\x4a\x54\x47\x9b\ \x1f\x43\x9a\x9b\xa8\xab\xb2\xee\xf3\x7a\x1a\xad\x30\x24\xdc\xe7\ \x35\x02\x0b\x0b\x79\xe7\x94\x12\x86\xd0\x39\x51\xae\xbb\xe8\x2f\ \x4c\x2d\xda\x46\x0b\x77\x6b\x93\x2d\xc9\xbe\x38\x8c\xee\x23\x72\ \x63\x02\x3b\x27\xe7\xe6\xab\x7e\x94\x69\x64\xdb\x2e\x69\xf0\xda\ \x58\x25\xe2\xca\x1f\x18\x25\x48\xc9\x19\xcf\xf7\xb1\xc9\x1e\x99\ \xc5\x74\xbd\x81\x29\x6d\x01\xa0\x41\x09\x01\x28\x00\x76\x03\xd3\ \xe6\xb8\xf8\xac\x43\xa9\x53\x22\xd9\x1d\xbc\x3d\x0e\x05\x2c\xdf\ \xe4\xfc\x90\xe9\x17\x7b\x7e\x6f\xde\x23\x72\xb3\xef\x4a\xdb\xdc\ \xa3\xb8\x8e\x7d\x0f\xb5\x68\x27\x19\xdd\xd8\x9e\x00\xf5\xa5\x31\ \xb0\x52\x37\x77\xec\x71\x54\x48\xab\x62\x96\x93\x80\x0a\xb3\xf8\ \x73\x4a\xd9\x51\x24\x81\x80\x33\xdc\xd6\x90\xe2\x11\x8c\x10\x93\ \x8c\x01\x58\x3f\x71\x83\x17\xc8\xe3\xa9\x2b\x03\x24\x67\xb7\xd6\ \x98\xa2\x29\xdf\xb0\x71\x68\xa9\x59\x05\xc5\x76\xe7\x06\xb7\x15\ \x38\x94\xf0\xb7\x30\x3d\xd5\x4c\xc9\xbd\xc6\x43\x49\x77\x7a\x58\ \x4a\xf2\x12\x56\xa4\xa7\x77\xd3\x3e\x9f\x35\x9b\x77\x48\x4f\x63\ \xc2\xb8\x47\x77\x71\xc1\x28\x90\x0f\x3e\xdc\x1e\x7e\x95\x74\x43\ \x84\xbb\x07\x15\x2d\x47\x95\x1c\x8f\x92\x6b\x15\x2c\x2b\x92\x47\ \xe3\x5a\x54\xb5\x1e\x12\xb5\x29\x20\x8f\x29\xf4\xf9\xad\x98\xe3\ \xb8\x3e\xf8\xa9\xd4\x8b\x02\x9b\x4a\xb9\x3c\x67\x8c\x56\xa2\x10\ \x14\x46\x33\x8a\xcc\xa4\x02\x40\x04\x7f\x8d\x01\x04\x05\x64\x10\ \x31\xeb\xcd\x55\xa2\xcb\x43\x4a\x92\x7b\x14\x12\x0f\x6e\x2b\x5b\ \x9e\x22\x06\x52\x4a\x7e\x94\x92\xf7\x72\x8b\x05\x4d\xb2\xe3\xe8\ \xf1\x94\x37\x10\x55\xf7\x52\x06\x49\x3e\xc3\xe6\xab\xfb\xc7\x5a\ \x34\x55\xba\x77\xd8\x8d\xee\x33\xae\x83\x8d\xcd\xab\x2d\x9c\x77\ \xe7\xb1\x3f\x4c\xd2\x65\x24\x98\xd8\xd3\x94\xb6\x44\xf9\xf5\x13\ \xe5\x71\x00\xfc\x8a\x6f\x79\x18\x3b\x90\xa3\xf2\x3d\xe9\xb6\x26\ \xb5\xb2\x4e\x4b\x65\xb9\x0d\xa9\x2e\x63\x0b\x6d\xc0\xe2\x4e\x7b\ \x64\xa7\xb1\xfa\xd3\xa9\x53\x4b\x48\x52\x16\x30\xa1\xc0\x1e\xbe\ \xd4\xa7\x69\x6c\x5d\xc6\x51\xdd\x0c\x77\xc8\x2d\xca\x8a\xe2\x1c\ \x40\x29\x5a\x70\x7d\xf9\xae\x6c\x4c\xf9\x3d\x2e\xea\x4b\xae\xad\ \x0b\x30\x5e\x7b\x7a\xb6\x76\x29\x27\x9f\xc7\x06\xba\x8d\xf0\x52\ \xe8\x41\xfb\xa7\x3c\xd5\x1f\xd7\xdb\x2b\x52\x65\xc6\x75\x4d\x05\ \x78\x8a\x28\x73\x9f\xbb\xc7\x7f\xaf\x22\x99\x4e\xa6\x4d\xf6\x17\ \x2a\x0a\xad\xe2\xce\xa4\xd0\x37\xe8\xf7\x2b\x73\x0f\x32\xf2\x5c\ \x6d\xc4\x05\xa1\x60\xf0\xa4\x91\x90\x6a\x72\xca\xb7\x24\x57\x24\ \x7e\x8b\x5a\xad\xdf\xd4\xe2\xc3\x35\x64\x49\xb6\xaf\xc1\x04\xf1\ \xbd\xb2\x72\x93\x8f\xe1\x5d\x51\x68\x90\x1e\x61\x24\x1f\x4a\xec\ \xe1\xe6\xe5\x1b\x3d\xd1\xc2\xb3\x8b\x71\x63\x95\x14\x51\x4e\x24\ \x28\xa2\x8a\x00\x28\xa2\x8a\x00\x28\xad\x52\xe4\xb1\x12\x33\x92\ \x64\xba\x96\x99\x6c\x65\x6b\x51\xe0\x0a\xac\x75\x96\xbb\xbe\x39\ \x6f\x79\xeb\x23\x48\xb6\x43\x1c\x22\x64\x84\x6e\x5b\x9f\x29\x49\ \xe0\x7e\x39\xab\xd3\xa7\x2a\x8e\xc8\x55\x5a\xd1\xa4\xaf\x22\xd3\ \xa2\xb9\xd7\x4f\x1d\x59\x76\x2e\x4a\x9b\xac\x2f\xc1\xb0\x09\xcb\ \x52\xd4\xd0\x3f\x20\x0e\x31\x4d\x37\x39\xda\xa1\x89\x6b\x42\x35\ \x56\xa4\xf0\xd2\x78\x3f\xac\x9c\xc9\x1f\x9d\x69\xf6\x29\xf6\x99\ \x3d\xbd\x7f\xa9\xd4\x14\x57\x34\xe9\xd9\xf7\xa9\x97\x86\x58\x91\ \xac\x35\x12\x59\x2a\xc1\x3f\xac\x5c\xe7\xdf\xd6\xae\xd8\x9a\x79\ \x2a\x88\x87\x06\xa3\xd4\x0a\x04\x72\x4c\xdc\xff\x00\x85\x2e\xae\ \x1e\x54\xd2\x6c\x75\x2c\x57\x11\xb4\x91\x29\xa2\xaa\x8b\x83\x53\ \x44\xf7\x3c\x2d\x49\x7d\x4b\x69\x38\xc0\x98\xaa\x7e\xd2\xf6\x49\ \x92\x62\x97\xe4\xea\x1b\xea\x82\xbe\xee\x66\x1f\xf1\x15\x33\xc3\ \x4a\x11\xcc\xd9\x58\x62\xf3\xcb\x2a\x44\xe6\x8a\x80\x6a\x06\x1c\ \x88\x97\x16\xdd\xf6\xf4\x94\xa0\x77\xfb\x59\xff\x00\x2a\xae\x9e\ \xbb\x5e\xfe\xd2\x42\x75\x25\xe4\x05\x13\x8f\xf6\xd5\xe3\xf9\xd5\ \xa1\x83\x9c\x95\xc8\x96\x36\x31\x76\xb1\xd0\x94\x55\x61\xa5\xde\ \x97\x2e\x33\x6b\x7e\xf7\x76\x52\x87\x0a\xff\x00\x6a\x3c\xfe\x75\ \x2c\x9b\x68\x71\x50\x8b\xac\xde\x2e\xc1\x5b\x72\x31\x2b\xff\x00\ \x2a\x5c\xf0\xf2\x83\x49\xf3\x2f\x0c\x4a\x9a\x6d\x2d\x89\x1d\x15\ \x59\xe6\xe2\x87\x0a\x55\x79\xba\x1d\xa7\x9f\xf6\xa5\x76\xa9\x6d\ \xb6\x1f\xda\x21\x87\x8d\xd2\xe3\x9c\x73\xfe\xd1\xff\x00\x95\x4d\ \x5c\x34\xa9\xab\xb0\xa5\x8a\x55\x1d\x92\x1f\xe8\xaa\xa3\x53\xdd\ \x27\x31\x70\x5a\x62\x5d\x2e\x49\x43\x67\x07\x32\x54\x3f\x95\x37\ \x45\xbb\x5d\x5e\x20\xae\xf5\x71\x47\xc7\xda\x57\xcf\xf1\xa6\x2c\ \x14\xda\x16\xf1\xd1\x4f\x62\xe8\xa2\xab\x58\xf3\xe4\x48\x8b\xe1\ \xa6\xef\x3c\x3a\x07\x72\xfa\xbb\xfe\x74\xa7\x4a\x1b\xdc\x9b\x83\ \x8c\xc9\x9f\x2c\xb4\x93\xc1\x2f\xa8\xff\x00\x3a\x89\x60\xe5\x15\ \x76\xc9\x8e\x32\x32\x76\x48\xb0\x68\xa4\x29\x85\xb5\x24\xaa\x64\ \xb3\xf3\xe2\x9a\x4d\x38\x21\xa8\xee\x2d\x13\xa4\x05\x01\xdb\xc5\ \xac\xf1\x83\x93\xb2\x34\xca\x79\x55\xd8\xef\x45\x42\xdd\xb9\xbc\ \xc3\x1e\x22\xe5\xc8\x23\x1f\xfc\x43\x4d\x92\x6f\xb7\x42\x3f\x64\ \xf3\xa0\x13\x80\x4b\x87\xfc\xeb\x4f\xb1\x4c\xcd\xed\xb0\xec\x2c\ \x7a\xc5\xc3\x84\x13\x50\x2b\x55\xfa\x73\x8b\xf0\xdf\x79\xcd\xde\ \x87\x79\xff\x00\x3a\x58\xfd\xe5\xf6\x9a\x59\x71\xd7\x31\x8e\x3c\ \xc6\x8f\x62\x99\x2b\x1b\x06\x27\xd7\x92\xd4\xdc\x45\x84\x9e\x4f\ \x15\xf3\x6b\xab\xd7\x73\x7a\xd7\xd7\x69\x7b\xf7\x03\x21\x49\x4a\ \xbb\x8d\xa0\xe3\x3f\xca\xba\xf7\xaf\x9a\xe5\xdb\x56\x91\xb9\x4b\ \x4c\x85\x25\xdf\x0c\xb2\xc8\xdc\x72\x5c\x5f\x03\xd7\xd0\x64\xfe\ \x15\xc3\xaf\x87\x97\x20\x4b\xdb\xbd\x0f\xa8\x80\x49\xc8\xcf\xa8\ \x3f\x35\x8e\xad\x2c\x95\x1b\x6c\xd3\x42\xa7\x11\x36\x8c\x18\x52\ \x1b\x21\xc5\x24\x2b\x61\xc2\x10\x7b\x13\xee\x6a\x61\xa1\xae\x2c\ \x5a\x1c\x17\x45\xbb\x99\x8f\x3d\xb5\x2b\x03\x2a\x4b\x7f\xbe\xad\ \xa7\x83\x9c\xf0\x3d\x93\xf3\x51\x34\xb6\xcb\xee\x14\xa1\xf4\x32\ \x94\x8e\x03\xb9\x1f\x91\xff\x00\x3a\xc9\x69\x58\x90\x19\x6d\x7e\ \x65\x00\x84\xed\x3b\x89\xf4\xc0\xc7\x72\x69\x53\x8e\x65\x63\x4d\ \x39\xe4\x95\xce\x83\xe9\xee\xa8\xb6\xb8\xd4\xdb\xf5\xc2\x5a\x21\ \x5a\xad\x8a\x6e\x34\x72\xf2\x82\x40\x51\xc8\x03\x8f\xbc\x48\xce\ \x71\xee\x6a\xc4\xb1\xf5\x8b\xa6\x71\x62\xa9\x52\xf5\x8c\x64\x3a\ \x15\xb4\x6c\x8c\xf2\xbc\xb8\xf8\x4f\xd6\xb9\xf3\xa9\x5a\x7d\xfb\ \x1f\x49\xed\x4c\xc8\x88\x62\xbe\x2e\x29\x53\xac\xf7\x53\x41\x4d\ \x28\xa4\x2c\xff\x00\x68\xe1\x5c\x7a\x57\x48\x69\x1d\x29\xa6\x62\ \x74\x6b\x4e\x6a\x18\xbd\x28\xd1\xd3\xdf\x7e\xd5\x1d\xc5\xbd\x36\ \x0f\x8c\x5c\x5a\xb0\x92\xb5\x12\x73\xc9\xe4\xfd\x6b\x9b\x43\x0b\ \x4e\xbd\xea\xa7\xa5\xdf\x91\xd5\xaf\x8a\x94\x1a\xa7\x65\xcb\xcc\ \xcd\x5d\x79\xe9\x0a\x48\x49\xd5\xce\x10\x3d\x45\xb6\x41\xff\x00\ \xfc\x2b\x79\xeb\xff\x00\x48\x1b\x69\x45\xad\x58\xb5\xab\x19\x03\ \xf5\x74\x80\x4e\x3e\xa8\xa5\x6b\xd3\x37\x35\x46\x2f\xda\xf4\x27\ \x4d\x59\x69\x20\x95\x3c\x34\xe3\x4d\x47\x4e\x3f\xe3\x5c\xe0\xfe\ \x15\x86\x97\xd0\xda\x9f\x53\x3b\x23\x68\xe8\xaa\x9b\x8a\x52\x99\ \x28\x89\x61\x6a\x62\x9a\x2a\xe4\x05\x10\x84\xa7\x3c\x1e\xc4\xd3\ \x61\x4a\x93\xf7\x5b\x7e\xbc\x05\xca\x53\x4a\xf2\xb2\x21\xd3\xfa\ \xf5\xa6\xee\x61\x5f\x65\xbc\x46\x8c\x8e\x4b\x2d\xa9\x45\x0a\x20\ \x76\xdc\x48\xc0\xcf\xe3\x50\xcd\x4d\xd6\x18\xec\xc4\x6a\x05\xaf\ \xec\xf2\x64\x2d\xb2\xe2\x9d\x66\x56\x52\xda\x8f\x60\x55\xce\x4f\ \xae\x33\xf9\x57\x4c\xb5\xd0\x2d\x2c\xfc\x4f\xff\x00\x54\xb5\x69\ \x29\x2f\x9e\xea\x8d\xa6\x58\x61\x39\xfa\x24\xe7\xf8\xd4\x23\x58\ \xfe\x8d\xbd\x3d\x5b\x6e\x97\x63\xdb\xad\xce\xf0\x12\xe2\x61\x48\ \x61\xbc\xfc\x14\xbc\xa4\xe7\xf0\xa1\x61\x23\x7b\xca\xfe\x45\xbd\ \xbe\xcb\x2c\x2d\xf0\xbf\xd4\xe5\xe8\x53\xb5\x05\xea\x43\x92\x25\ \xdd\xe6\xbc\xf3\xca\x09\x05\x2a\x5b\x99\x04\xf3\x84\x0e\x00\xfe\ \x35\x25\xd2\x36\x1b\xba\x56\xb5\xe9\xe7\xe7\xb5\x21\x0a\x53\xae\ \x34\x14\x42\xde\x4a\x78\x56\x10\x7b\xfd\x47\x20\xf7\x15\x36\x97\ \xfa\x39\x39\x6e\x7c\x48\xd2\xba\xb9\xb4\x38\x9f\x30\x4c\x5b\xb8\ \x6d\x60\xfc\x25\xc4\xa7\x3f\xf6\xab\x28\xed\xf5\x8f\x42\x38\x5d\ \x9a\x21\xdf\xdb\x53\x9b\xdb\x17\x38\x25\x2e\x03\xee\xdb\xec\x92\ \x77\x1e\x7b\x92\x3e\x2a\xb3\x84\x6f\xd5\x92\xfe\x0d\x74\x71\x6d\ \x25\x78\xb6\xfe\x7f\x92\xe6\xe8\xfb\xd7\x35\xd8\x76\xc8\x9a\xf4\ \xa6\xd2\x94\xad\x92\xf8\xc2\xdb\x1f\xbc\x09\x3d\xfb\x76\xf7\xc1\ \xf5\xa9\xf4\x37\x1a\x70\x16\xf2\x0a\x81\xc0\xf9\xaa\x3f\x44\xf5\ \xb7\x4a\x39\x31\xb6\x75\x3c\x59\xfa\x3e\x72\xbf\x64\xf3\xd2\x71\ \x22\x13\x85\x59\x00\x17\x50\x3c\x8a\xcf\x3e\x64\x8e\xc3\x35\x7a\ \xe9\x8f\xb2\xcc\xb6\x36\xfc\x07\xa3\x4d\x88\xb4\xe5\xa7\xe2\xba\ \x97\x5a\x23\xe1\x49\x24\x1a\xbc\x69\xb8\xa4\x99\x92\xb5\x45\x29\ \x39\x02\xdb\x59\xce\xd1\xc8\x1c\x83\xed\x5e\x38\x48\x8e\xa2\x91\ \xc2\x47\x62\x29\x7c\xb8\xae\x82\x0b\x0d\x93\xc7\x24\x72\x0f\xc0\ \xa6\x1b\xbc\xb6\xed\x30\x5f\x99\x73\x95\x1a\x04\x56\xbc\xcf\x3f\ \x2d\xd4\xb4\xda\x47\xae\x54\xa3\x81\x55\x9a\x48\x5c\x7a\xc5\x2b\ \xd6\x48\xb3\xee\x57\x93\x01\x85\xb8\xd4\x79\x6e\x62\x5b\xc9\x57\ \x99\x2d\x80\x30\x81\xf3\xef\xf5\xaa\xa6\xf3\xa6\xa2\xdb\x52\xe3\ \x51\xa0\x82\x86\xc3\x69\xf1\xc8\x1b\x54\x95\x03\xfb\x20\x7b\x93\ \x8e\x0e\x31\xeb\x93\x56\x4e\xb2\xeb\x66\x96\xfd\x64\xe4\x0d\x11\ \xa6\xae\x1a\xe6\xe4\xae\x10\xa6\x5b\x53\x51\x73\x93\x92\x9e\x0a\ \xdc\xfa\x80\x07\xcd\x56\xda\x9a\x47\x5c\x75\x5a\xcb\xb2\x20\xc4\ \xd3\xb1\x54\x42\x44\x3b\x7b\x68\x43\x89\xc7\x6c\xf2\xa7\x01\xe7\ \xd4\x8f\xa5\x27\x84\xe3\xab\x69\x78\x9d\x18\xe2\x22\xe2\xa2\xe0\ \xdf\xaf\x91\x00\x4d\xd6\x7e\x95\xbb\xae\x65\x86\x6a\xad\xab\x25\ \x47\xec\xce\x85\x2d\x97\x92\x48\xf2\xa9\x38\xc0\x3e\xb9\xf8\xe2\ \xac\xad\x17\xd6\x70\x63\xa8\xca\x97\x1a\x0a\x59\x29\x21\x97\xdf\ \xc2\x82\xbd\x52\x09\xfb\xc8\xf9\xef\xfe\x30\xe1\xd1\x4d\x5b\x31\ \xc3\x22\xe5\x32\x03\x2a\x51\xca\x97\x36\x7e\xe5\xe7\xe4\x24\x13\ \x4d\xd7\x6e\x99\xc2\xb4\x83\xf6\xfd\x5b\xa7\x99\x50\x24\x63\xc1\ \x90\xb1\xc7\xb1\x08\xe6\xaf\x25\x86\xa8\xac\xe5\xaf\x70\x88\xfb\ \x4c\x64\xf2\xc2\xf1\xec\x7a\x9d\x33\x03\xab\x5d\x3d\x9f\x01\x0e\ \x3f\xab\xad\x31\x5f\x48\x01\xc6\xde\x7b\x18\x38\xf4\x20\x1c\xd4\ \x27\xaa\x3a\xdb\x44\x4c\x99\x05\xcb\x76\xa7\xb4\xcf\x57\x8f\xe7\ \x4b\x6e\xe7\xcb\x82\x08\x39\x1d\x8f\x6c\xfc\xd5\x02\xde\x9a\x88\ \xe6\x1b\x85\x7f\xd2\xb3\xca\xd5\x81\xb5\xe5\x34\xbf\xa6\x1c\x48\ \xa5\x12\xf4\x5b\xb1\x54\x10\xf2\xa2\x30\xe9\x4e\x76\x3c\xd2\xdb\ \x03\xe8\xbc\x14\xfe\x39\xab\xc7\x07\x4e\x6f\xde\x66\x7f\x68\x9c\ \x75\xd1\x5f\xc7\x99\x2f\xe9\xee\xa9\x66\xc1\xd4\x86\x1c\x72\x73\ \x02\x33\xf9\x61\xe7\x3c\x51\x82\x41\xf2\xab\xfc\x3f\x1a\xee\x1d\ \x01\xa8\x63\xce\x82\xd2\x9a\x90\xd3\xc9\x20\x79\x9b\x58\x50\xfc\ \xc5\x7c\xd5\x99\x62\x79\xb5\x3e\x9f\x0c\x78\x91\xd0\x97\x57\xb5\ \x5b\xb0\x82\x42\x42\x81\x1e\x9b\x88\x1f\x88\xab\x07\xf4\x69\x9d\ \x76\x67\x5f\xc8\x86\x8b\xbc\xf8\xd1\xd5\x05\xc5\xac\x32\xfa\x93\ \x9c\x14\xe3\xf8\xd6\xa7\x18\xc1\xe7\x83\xd0\xe6\xe2\x61\x38\xa7\ \x37\xc8\xfa\x4e\xc3\x81\x69\x04\x73\x5b\x6a\x9c\xd3\x91\xe5\x49\ \x8c\x8c\xea\x5b\xf8\x3f\x13\x8f\xf9\x54\xda\x0e\x9e\x5b\xd1\xd2\ \xe2\xb5\x0e\xa2\xce\x39\xc4\xdf\x5f\xca\xb7\xca\x8b\x8c\x54\xbb\ \x4c\x14\xf1\x3c\x47\x64\x89\x6d\x15\x54\xdd\xed\x57\x25\x5c\xd6\ \xc4\x2d\x4d\xa9\x0e\x0f\x00\x4f\x56\x0f\xe5\x4a\x22\xe9\x1b\xf3\ \xa8\x0a\x5e\xaa\xd4\x88\x2a\xec\x3f\x58\xab\xfc\xa9\x8f\x0a\xd2\ \xbb\x65\x16\x32\xee\xca\x2d\x96\x75\x15\x59\x4b\xd2\x17\xe6\xdb\ \xcb\x5a\xbb\x51\x9e\x7d\x6e\x0a\xed\x45\x0b\x0a\xde\xd2\x40\xf1\ \x8d\x6f\x06\x38\x5c\xae\x0c\x6a\x6d\x6e\xbb\x0a\x9c\x3f\xab\xed\ \x8a\x49\x90\x9c\xe0\x3c\xf7\x70\x9f\xa0\xff\x00\x3a\x70\xea\x0d\ \xae\x1c\xcb\x0a\xc3\xcd\xa5\x28\x64\x0c\x01\xc6\x38\xff\x00\xca\ \xa0\x7d\x38\x75\x4e\xbb\xfa\xc7\x0a\x2f\x4d\x92\xe3\xab\x23\xb9\ \xca\x8f\xf9\x54\xff\x00\xa8\x72\x54\xce\x9b\x75\x29\x04\xad\xc1\ \x80\x07\xae\x69\xd1\xa5\xc3\x9c\x2d\xcc\x44\x6a\xf1\x69\xcd\xcb\ \xd7\x61\x4d\x4a\xb9\x94\xb1\xf6\x68\x00\x25\xb1\x91\x90\x3b\xff\ \x00\xae\x29\xad\xc4\xb8\xf8\x52\x54\xf2\x89\x58\xed\x9e\xd5\x25\ \xb0\xe8\xc9\xd3\x50\x1d\x92\x4b\x49\x56\x49\x1d\x8d\x49\x5a\xd0\ \x30\x83\x61\x2a\x52\xc3\x87\x80\x73\xeb\xdf\xfc\x6b\x7b\x92\x5b\ \x98\xd4\x5b\xd8\xae\x2d\xd1\x56\xca\xd0\x5a\xc1\x5e\xf1\x91\xeb\ \xf3\x57\x93\x13\x1c\x85\xa5\x5a\x0f\x0f\xda\x94\x0e\xff\x00\xe3\ \x51\x3b\x46\x95\x8b\x6c\xbb\x89\x13\x1c\x2b\x6c\x72\x02\xbb\x8a\ \x76\xba\xca\x55\xc2\x50\x66\x33\x79\x69\x3c\x24\x01\xc7\xa1\xaa\ \x4e\x39\xda\x5c\x8b\xc2\x4e\x09\xbe\x7b\x09\x6d\xb1\x5c\x9d\x39\ \x29\x09\x27\x72\xc1\x51\x1d\xbf\xd7\x61\x53\x67\x9c\x6e\x14\x14\ \x30\xd8\x19\x09\xc7\xe5\xcd\x23\xb3\x47\x6a\xd9\x10\x3a\xf7\x2e\ \xa8\x6e\x38\xa6\xdd\x43\x73\x11\xd9\x5b\xce\x2b\xce\x7e\xe8\x3f\ \xeb\xe9\x48\x95\xea\xce\xdc\x90\xf8\x7e\xcc\x2f\xcd\x91\xcd\x67\ \x3b\x9f\xb3\x36\xac\x2b\x39\x5e\x2a\x22\x8b\x72\x9e\x06\x4e\x00\ \x09\x38\xa5\xcf\xac\xbc\xa5\xbe\xbc\x92\xbe\xc0\x0e\xde\xd4\xe7\ \x69\x0d\xa2\xd8\xa6\xca\x48\x52\xff\x00\xb5\x5a\xd1\x91\xea\x6b\ \xd3\xb3\x4c\x39\x6d\xef\x50\xf0\xd5\x81\x92\x7b\xfc\xd5\x9b\x68\ \x98\x14\x03\x2a\xe5\x04\x00\x2a\xa3\x42\x36\xad\x6d\xf2\x36\x92\ \x47\xc5\x4a\xf4\xa5\xd4\x2b\x11\x9c\xfb\xc3\xee\x92\x3b\x0a\x55\ \x6a\x6a\x71\xb0\xda\x35\x1c\x25\x71\xfb\x51\xdb\x8b\x2f\x2a\x53\ \x5f\x71\x5f\x7b\x15\xb3\x4d\x4c\xd8\x55\x15\x67\x85\x0c\x27\x26\ \x9c\x58\x7d\x32\x1a\x2c\x48\x39\x49\x1c\x1a\x61\xb9\x40\x72\x04\ \x8f\x19\xbc\xa9\xb1\xca\x7e\x94\x98\x3c\xf1\xe1\xcf\x71\xd3\x59\ \x25\xc4\x86\xc4\x7f\x54\x41\x72\x2d\xc1\xd5\x3a\x83\xb1\x67\x8c\ \xfe\x54\xdf\x15\x95\xa8\x61\xb6\x54\x46\x78\xe2\xa6\xaa\x90\xcd\ \xdf\xc3\x62\x42\x02\xd4\x93\xdc\x8a\x76\x8f\x06\x2b\x0d\x84\x86\ \x86\x3b\x76\xa6\xba\xb9\x12\xcc\xb5\x14\xa9\x67\x6d\xc5\xe8\x57\ \x2e\x27\x0a\x2a\xd8\xa6\xd5\xee\x46\x31\x53\x2e\x9d\xba\x56\xcb\ \x9b\xc8\x52\x87\xaf\xad\x3a\x49\xb7\x45\x90\x8c\x29\xa4\x80\x07\ \xa0\xa4\x76\x9b\x69\xb5\x4f\x53\x8c\x92\x50\xaf\x4c\xd2\xea\x55\ \x8d\x48\x35\xcc\x6d\x3a\x52\xa7\x35\x2e\x43\x9d\xfe\x42\xdb\x65\ \x2d\x20\x94\x95\x1f\x6a\x65\x53\x45\x63\x0a\x51\x27\xd4\x9f\x6a\ \x77\xbe\xa3\xc7\x61\x0e\xa3\x38\x4f\x71\x8a\x68\x79\xd0\xd4\x72\ \xe6\x4f\x94\x55\x70\xfa\x41\x58\x9c\x46\xb3\x77\x19\xef\x69\xd8\ \x50\xd0\x18\x4e\x79\xad\x0b\x18\x40\x4f\x6a\xf2\x53\xee\x4a\x90\ \x83\xb3\xcb\xef\x5b\x1e\x42\x8a\x02\xb9\xad\x88\xc6\xcd\x24\x61\ \xf6\xdc\xc1\x27\x38\xa5\x57\xa7\x52\x88\xa4\x9e\x4e\x31\x9a\xd0\ \xa6\x96\xe2\x40\x1c\x1e\x79\xf6\xa6\x9b\xcc\x97\x50\xd3\x8d\xad\ \x5b\x86\x3f\x2a\x3b\xc1\x1c\xc9\xfa\x59\x5c\x40\xb7\xc0\x88\x92\ \x37\x39\x21\xc7\x0f\xd1\x29\x03\xfc\x4d\x73\xf5\xa6\x73\xd6\xc7\ \x94\xbf\x05\xb9\x0c\xba\x8d\xae\x32\xe8\x3b\x56\x3d\xc1\x07\x29\ \x50\xee\x14\x39\x1f\x98\x36\xb7\xe9\x44\xfa\xdf\xd4\x90\x93\xce\ \x13\x18\xe3\x27\x8e\x56\xac\xff\x00\x85\x56\xf6\x6b\x63\x73\x90\ \xe9\x5b\xa1\x88\x8c\x00\x5e\x90\xae\x71\xf0\x91\xea\x49\xc0\x03\ \xdc\xd7\x9f\xad\x34\xdb\x6c\xee\xe0\xe2\xd5\x35\x61\xa9\x48\x53\ \xee\x2d\x6d\x78\xcb\x27\x24\xf8\x87\x25\x23\xdc\xab\xfc\x6b\xa0\ \xbf\x47\x6e\x9b\x08\x52\x60\x5f\xaf\xe9\x30\xe6\x4d\x4f\x8f\x6a\ \x74\x29\x0e\x61\xb0\x33\xb9\x23\x90\x95\xe7\xbe\x79\x03\x18\x1d\ \xea\x98\xb2\xfd\x9e\xe7\xa9\x20\xdb\x62\xb1\xe0\x41\x5c\x96\xfc\ \x64\xf7\x51\x40\x50\xce\x4f\xa9\xc6\x4e\x3d\xea\xea\x8f\xac\xda\ \xd1\x70\x0e\x54\x1e\x66\x14\x99\x0a\xb3\xb6\x71\x95\x87\x37\x24\ \x10\x3b\x8c\xa4\x83\xed\xd8\xf1\x58\x31\x75\x5a\xb4\x17\x33\xa3\ \x87\xa4\x9a\x73\xec\x1b\x3a\xfb\x0d\x85\xd8\xde\x8e\x2e\x6f\xcd\ \xb9\xc8\x9e\x97\x59\x65\xc0\x54\xea\x90\xda\x56\x16\xa3\x8c\x01\ \x9d\xd9\xc6\x2b\xa6\x3a\x57\x32\x72\x3f\x46\x3d\x11\x2e\xdb\x2b\ \x6d\xc9\xf8\x0d\xc2\x88\xe1\x20\x21\x95\x6e\x50\x53\x87\x3c\x1d\ \x88\x42\x95\x8f\x52\x90\x3d\x6b\x8a\x65\x5d\xa6\x4e\xb9\xbb\x73\ \x9c\xf1\x7a\x5b\xe7\xce\xbc\xf0\x91\xe8\x84\x7c\x0f\x7f\x53\xcd\ \x5e\x5f\xa2\x9e\xb9\xd4\x72\xaf\xb6\xde\x96\x48\x98\xda\xac\x66\ \x3d\xc1\xdb\x7b\x65\xa1\xe2\xb6\xe2\x99\x70\x86\xf7\x7a\xa4\x6e\ \x71\x40\x77\xe7\xd8\x0a\xa6\x0d\x3a\x34\xf8\x6f\x7f\xa9\xb3\x15\ \x85\x75\x12\xaa\xbe\x3e\x08\x8d\xeb\x4b\xf5\xe7\x51\xea\x65\x68\ \xab\x5c\xe9\x6b\xb4\xdb\x1d\x52\x56\x95\xbe\xa5\x97\x17\xb8\x95\ \x12\xa3\xfd\xe5\x12\x71\x8e\x49\xf8\xae\xa0\xfd\x16\xf4\x6c\x3d\ \x2d\xa6\xee\xa2\x3c\xc7\x25\x7d\xbd\xd6\x9c\x74\xab\x18\xdc\x94\ \x91\xc1\xc7\xb1\x19\x19\x3d\xbe\x6a\xa7\xe8\xc6\x86\x5c\x7b\xc5\ \xd2\xe7\x75\x28\x56\xfb\x83\xaa\x69\x18\xc1\x27\x71\xe4\xfb\xd7\ \x46\x58\xa5\xb7\x6c\x6d\xdd\x8c\xa5\x48\x59\x05\x5b\x4e\xdc\x60\ \x55\xa8\x54\xd5\xf6\x15\xc6\xc5\x65\xca\xb7\x26\x21\x09\x00\x24\ \x0c\x01\xd8\x0a\x61\xd7\x36\xbf\xd6\x76\x25\xc7\x0f\x25\x94\xa5\ \x5b\xca\x89\xf5\xec\x3f\x9d\x2d\xb5\xde\xed\xd7\x01\xfe\xcf\x21\ \x25\x49\x4e\x54\x92\x7e\xef\xbf\x34\xcb\xad\xf5\x7e\x9b\xb4\x5a\ \xc8\x9f\x72\x88\x43\x8e\x04\x14\x07\x02\x94\x38\x27\x38\x1f\x4a\ \xd9\x2b\x38\x9c\xc8\x29\x46\x6a\xcb\x52\xab\xba\xe8\x70\xb0\xb5\ \x26\x7b\x4e\x10\x09\x03\x38\x22\xa3\xb2\xad\xf7\xdb\x36\xf4\xb5\ \x39\xd4\xb2\xa1\x85\xb4\xe8\xf1\x59\x58\xf6\x29\x3c\x54\x86\x67\ \x51\x34\xa4\x97\x1e\x16\xf9\xc9\x71\x0d\xed\x4a\xd6\xb6\x54\x13\ \xb8\x8e\xd9\xc5\x37\xa2\xe8\xc4\xf5\xb6\x94\x2f\xf6\x4e\x61\x4d\ \xba\x9f\x32\x01\xf6\xcf\x6a\xe0\xe2\x28\xc2\x2f\xaa\xf5\x3d\x3e\ \x1a\xad\x67\x1e\xba\xba\xef\x43\x0c\x0b\x2d\xa9\x3a\x8a\x35\xfa\ \xee\xd3\x4e\xda\x0b\x6e\xc3\x9f\x1f\x68\x71\xb6\xdb\x75\xb5\x23\ \xc4\x52\x8f\x2a\x61\x0a\xd8\xa2\x95\x65\x48\xfb\xc0\xe1\x26\x90\ \xf5\x0b\xa3\x5a\x83\x4f\x6b\xbd\x29\x2f\x4a\x5b\x2d\x57\x18\xc6\ \xdb\x1a\x1b\xac\x6d\x42\x19\x93\x21\xa5\x2c\x6e\x52\x0e\x12\x41\ \x6f\xc3\xca\x8f\x72\x3d\xcd\x3b\x5f\x18\x91\x15\xf4\xcc\x8c\xd9\ \x4a\xe3\xbc\x8f\xb5\x33\xb7\xc8\xfb\x64\xf9\x92\xa1\xd8\x82\x32\ \x3f\x1a\x84\xcc\xb5\x6a\x4b\xe7\x56\x1b\xd1\xb6\xdd\x47\x31\xb8\ \x3a\x6e\x28\x85\x05\xd7\xdd\x50\x54\x44\x8c\x2d\x4d\x82\x0f\xed\ \x0a\x72\x90\x14\x79\xda\x84\x03\xda\x9f\x43\x13\xc1\xa4\xe3\x6d\ \x79\x11\x53\x09\x2a\xf5\xd4\xd4\xec\xac\xef\x7e\x49\x78\x6b\xcc\ \xd7\xfa\x58\x68\x7b\xdc\x58\x2c\x6a\x99\x76\x0b\x0e\x98\x43\x6d\ \xa5\xb5\xb5\x6c\x94\xa4\x07\x15\x9e\x49\x09\x01\x24\xd5\x27\x63\ \x96\x2d\xa1\x6b\xbe\x59\xbf\x58\x21\x6c\xe5\xa5\x4b\x74\xb8\xda\ \x37\x00\x42\xf0\x49\x1d\xb2\x41\xae\xc0\x99\xd3\x5b\xc5\xe6\xd4\ \x22\xea\x0e\xa8\x6a\x8b\x8b\x4a\x00\xa9\x95\x29\x2a\x68\xe3\xdc\ \x2b\x39\xfa\xd4\x1f\x48\xf4\xbe\xd5\x77\xd6\x97\x3e\x9e\xdd\xe7\ \x06\x95\x11\xd6\x2e\x4c\xc8\x6e\x30\x59\xb8\x42\x42\x90\x57\x1d\ \x63\x38\x41\x0a\xd8\x42\x87\x23\x72\xc7\x20\xe0\x68\x86\x2a\x4e\ \x69\x49\x68\xfc\x0c\xfe\xcf\x08\x53\x94\xa3\x52\xed\x6f\x64\xf6\ \xbe\xfa\x92\x3f\xd1\xe3\x47\xdc\xa5\xf4\x65\x77\x99\xb0\x15\x6f\ \xfb\x52\xde\x75\x95\x38\x80\x93\x21\x92\xac\xb6\xbc\x0c\x28\x8c\ \x64\x61\x5c\x60\x0c\x0e\x73\x49\x05\x92\xfb\x36\x49\x65\x0f\xab\ \xc3\xf4\x4b\x63\x6a\x53\xf8\x0e\xd5\xd2\x5a\xa9\x0d\x33\xa5\xa5\ \xc5\x8e\x03\x09\x43\x29\x69\x09\x6d\x20\x04\x0e\x00\x00\x76\x03\ \x15\x54\xbd\x74\xb2\x59\xa3\x78\x77\x3b\xa4\x58\x61\x47\xfe\x19\ \xc0\xd0\x24\x9f\xae\x7b\xd5\x71\x58\x58\x3b\x5f\xe2\x27\x05\x8d\ \xa9\x79\x49\x2b\xf6\x11\x46\xfa\x71\x31\xe4\x95\xc9\x96\x1a\x3e\ \x98\x19\x22\x91\x5d\x3a\x57\x1a\x4c\x55\xb0\xb7\x83\x83\x9c\xee\ \x4f\x04\xff\x00\x85\x4a\x5c\xd4\x76\x69\x33\x95\x12\xdd\x77\x80\ \xf3\xa1\x39\x29\x6a\x58\x0b\x4e\x31\xdc\x13\xf3\x5b\x58\xbd\x2e\ \x3a\x83\x72\x81\x2d\x93\x8f\x10\x8e\x47\xf9\x8a\xe7\xba\x34\xe0\ \xce\x97\xb5\xe2\x9a\xbd\xfc\x8e\x4b\xea\x97\x4a\x2e\x3a\x6a\x73\ \x92\x23\xa3\xed\x76\xe2\x3c\x4c\x8e\x16\x9c\xf7\xc8\x3e\xdc\x57\ \xba\x6e\xf0\xd4\xbd\x37\x0d\x32\x5e\x54\x79\x70\x52\xa6\x16\xe8\ \x51\x04\x24\x0f\x22\xbe\xa3\x20\x11\xf1\x5d\x77\x7c\x81\x0e\xed\ \x05\x71\xdd\x69\x0e\xb6\xb6\x94\x9d\x8b\x19\x05\x24\x60\xe3\xda\ \xb8\xb3\x5f\xe9\xa7\xb4\xd5\xce\xe5\x6e\x6d\x2e\x06\xdb\x7c\xa9\ \x0a\x27\x3b\x90\xac\x81\xf9\x1c\x8a\xd9\x4e\xac\xa7\x68\x37\xe0\ \xcc\x55\x14\x35\xaa\xa3\xe2\xbe\xa6\xfb\xab\xea\xbf\xd9\xa5\xdd\ \x1b\x43\x3f\x6c\x84\xe8\x66\x61\x61\x21\x28\x77\x23\x87\x00\x1d\ \xb3\x8c\x11\xee\x33\xeb\x4a\xba\x04\x89\x1f\xd3\x49\xd7\x16\xdb\ \x26\x3b\x50\xcb\x4a\x5f\xa6\xf5\xa8\x6d\x4f\xd4\xe0\x9f\xc2\x99\ \xfa\x7a\x5e\x8b\xd3\xfd\x71\x74\x4a\x72\x98\xa9\x83\x82\x7f\xb4\ \xb7\x4a\x71\xf9\x13\x56\x1f\x46\x6d\x42\x1c\x38\xf6\xc4\xba\x16\ \xea\xdc\xfb\x44\x8c\x0e\x02\x88\x18\x4f\xe0\x38\xfc\xeb\xaa\xe3\ \x9d\x46\x9c\x77\xd8\xe0\x62\x6b\x7e\xcb\x4f\x99\xd4\xba\x11\x25\ \x70\x9a\x4e\x15\x92\x3f\x21\x56\xac\x73\xe0\xb0\x1a\x47\x27\x18\ \xc8\x1d\x8d\x57\xfa\x0e\x29\x65\x86\xdc\x20\xef\x03\x81\x8a\x9f\ \xb4\x76\x37\xe6\xc2\x94\x7f\x2f\xf5\xcd\x75\x6b\xac\xa9\x43\xb0\ \xe6\x61\xa3\x65\x70\x62\x23\x4d\x2c\xac\x20\x15\x9e\xe7\xde\xb7\ \x6e\x09\xe0\xa8\x8f\x72\x38\x34\x21\xb5\x93\xca\x8a\x53\xc0\x3c\ \xf7\xac\x43\x49\xff\x00\xe3\x27\x20\x7d\x78\xfa\x56\x56\xef\xbb\ \x34\xa5\x6d\x90\x3a\xe0\x4a\x15\xb8\xe0\x7a\xfb\x7f\xae\x68\xa4\ \xf2\xad\xcb\x7f\x1f\xed\x07\x60\x3e\x64\x83\x9c\xd1\x4d\x87\x0e\ \xda\xb1\x72\xe2\x5f\x44\x56\xfd\x21\x60\x0d\x3f\x12\x6b\x87\x09\ \x41\x70\x72\x7f\xbe\xaa\x98\xbb\xba\x6a\xca\xdc\xc9\x40\xe5\x29\ \xcf\x06\xa3\x5d\x3b\x4a\x53\xa2\xe0\x60\x60\x23\x7f\xfd\xe2\xb9\ \xa9\x4b\x4c\xbc\xf2\xb3\xbb\xc3\x6c\x1c\x12\x7b\x62\xb6\x3b\x25\ \x73\x9f\x4a\xf9\x54\x4c\x00\x6d\xa1\xb4\x14\xe4\x7b\x56\xc4\xb8\ \xca\x52\xb5\x78\x89\x48\xf9\xf4\xef\x58\xba\xab\x5b\x3e\x47\x56\ \x16\x73\xcf\x9b\x9a\xcc\x2e\xcd\x27\x0d\x85\x6d\xdc\x31\x9f\x8f\ \x6f\xa5\x55\xbe\xe6\x35\x2b\x73\x47\x3f\xdf\x2f\xba\x9a\xe5\xa5\ \xee\x1a\x3e\xdb\x74\x94\xe5\xfc\x6a\x39\x10\x23\x48\xf1\x0a\x9e\ \x0d\x23\x32\x12\xac\xe7\x3f\xd5\x8d\xbf\xc2\x9f\xed\x17\xa9\xf7\ \x58\xd6\xb9\xb6\xe7\xca\x83\x7a\x45\xcb\x94\xa6\x84\x85\x32\x1d\ \x79\xdd\xa8\x40\x52\x92\x09\x49\x4e\xc7\xc8\x20\x1e\x45\x49\x2d\ \xfd\x38\x99\x69\xea\xdc\xdd\x67\x1a\x43\x0e\x5a\x5d\x8f\x96\x58\ \x49\x3e\x22\x64\x94\x21\xb5\x38\x46\x31\x8d\x88\xc7\x04\x9c\xa8\ \xf6\xa4\x3a\x33\x47\x3f\xa4\x2d\x3a\xb1\x13\x27\xc5\x7c\xdc\x96\ \xeb\x76\xed\xaa\x51\xf0\x62\xe5\xc5\x36\x85\xe4\x0c\x10\xa7\x57\ \xc0\xce\x3d\x0f\xa0\xa5\xdc\x95\xa3\xb1\x9b\x87\x38\xbe\xb7\xae\ \xc1\x95\xbd\x69\xa8\xdb\x47\x4d\xdb\xb6\x18\xff\x00\x64\xba\x5a\ \x9d\x79\x6d\xce\x98\xb7\x1c\x5a\x9a\x69\x38\x0e\x39\xb0\x93\x8d\ \xe0\x82\x39\x27\x39\x00\x0e\x61\xb2\xf5\x5d\xe6\x05\xd7\x5b\xdd\ \x84\x34\xce\xb7\x42\xba\xf8\x8e\x07\x25\xa9\x2b\x4a\x0a\x11\x94\ \xb6\x9d\xa4\x70\x39\xe4\xa7\xbd\x3a\x3f\x61\xbf\x22\x3e\x8a\xfb\ \x33\x96\xf7\x9f\xd3\x90\x9d\x8a\xe2\x16\xf2\x90\x87\x7c\x46\xd0\ \x82\x52\xa0\x82\x78\x28\xcf\x23\x9c\xfa\x56\x8b\x86\x90\xb8\xbd\ \x61\xd6\x70\x92\xf4\x30\xed\xee\x41\x72\x31\x52\xd4\x12\x94\xec\ \x4a\x70\xbf\x2f\x07\x29\x3d\xb3\x4c\x8c\x24\x97\xae\xc2\x8d\xc9\ \xef\xeb\x41\xcb\xa8\xd7\xd7\xec\x3a\x1a\xe1\x7a\x84\x41\x75\xa6\ \x92\x59\x2a\x19\x00\xad\x49\x4a\x4e\x3d\x70\x54\x0d\x44\xe3\x5d\ \x35\x0e\x97\xb9\x68\x89\x52\x35\x04\xeb\x9b\x3a\x87\x6b\x33\x58\ \x94\xa0\xa4\x05\xac\x23\x6a\x9b\xc0\x1b\x70\x57\x8f\xc3\xe4\xd4\ \xfe\x7e\x98\x46\xa4\xd2\x52\xec\x73\x0e\xc4\x48\x60\x34\x1d\x48\ \xce\xc5\x8c\x14\xab\x07\x19\xc1\x00\xd4\x2f\x4e\x58\xaf\xb7\x3e\ \xa0\x59\x74\xf6\xac\x09\x61\x3a\x45\xa0\xb8\x65\xa8\xee\x6d\xb8\ \x60\x24\x25\xcf\x10\x8d\xa3\x6e\xd4\x64\x67\x39\x07\xe7\x17\xa9\ \x7c\xc8\xac\xaf\x71\x4f\x4f\xef\xba\xa6\xef\xaf\x75\x2b\x37\x18\ \xf1\xcc\x28\xb2\x92\xc3\x89\x4b\xe4\xfd\x98\x84\xa8\x00\x81\xb4\ \x6e\x0a\x29\xc9\x27\x1f\x8d\x59\x8c\x82\x95\xa5\xc4\x2b\x6a\x87\ \x62\x3b\xe6\xa0\xee\x69\xcd\x51\xa3\x2e\x9a\xc2\xff\x00\x09\x16\ \xdb\x84\x1b\x8a\x97\x35\xa6\x80\x71\x52\x7c\x40\x95\xec\x40\x40\ \x4e\x08\x2b\x50\x04\xee\xed\x9a\x99\x5a\x8c\xb3\x6e\x8e\x67\xa5\ \x91\x37\xc3\x4f\x8f\xe1\x83\xb7\xc4\xc7\x9b\x6f\x27\x8c\xe7\x1c\ \xf6\xab\x53\xbd\xac\xcb\x47\xbc\x99\xd8\x6e\xc8\x79\x09\x61\xe5\ \x10\xbf\x42\x4e\x29\xfd\x2b\x56\xd2\xd3\xa9\xde\x83\xc6\x48\xcd\ \x56\xf8\x50\x21\xc4\x1c\x28\x76\x23\xde\xa4\x96\x3b\xe8\x4a\x43\ \x32\xf0\x3e\x73\x55\xa9\x4e\xfa\xa3\x4d\x2a\xb6\xd1\x8e\x32\xed\ \xea\x61\xe1\x32\x22\xfc\xa0\xf2\x8a\x72\x83\x29\xc7\xdb\x1f\xb1\ \x50\x3d\x8d\x7b\x09\xb4\x3c\xbf\xb4\x13\x86\x87\xf1\xac\xdf\x9e\ \x84\x1d\xb1\xda\xcf\xb9\x22\xb3\xca\x4e\x5d\x5b\x5d\x8f\x8c\x54\ \x7a\xd7\xb2\x36\x82\xfe\x3f\xab\x20\x63\x27\x9a\xf5\x2e\x0c\xf9\ \xd2\x47\x38\xe4\x77\xa4\xc9\x9f\x28\x63\x81\x8e\xe2\x94\x37\x35\ \x0b\x3b\x1f\x40\x4e\x7d\xa9\x6e\x12\x5c\x86\xc6\x71\x7c\xcc\xbe\ \xe8\x28\xee\xd9\x14\xc9\x77\x88\xa4\x36\xb4\xe3\xca\xae\x45\x3f\ \xa9\xb1\x8d\xc8\x39\x42\xbb\xd6\x97\x9a\x0e\xb6\x52\x7b\x7a\x1a\ \x9a\x55\x32\xbb\x91\x56\x9e\x65\x62\x17\x1c\x60\xec\x38\xe0\xf2\ \x2b\x39\x19\x28\x1c\x1c\x7a\xfd\x6b\x74\xe8\xeb\x8d\x28\xfb\x13\ \xcd\x60\xf1\xc2\x32\x3f\x1f\x5a\xe8\xa7\x73\x9a\xd5\xb7\x35\xa0\ \xed\x6f\x3f\x1c\xd4\x77\x50\x24\xad\x97\x5c\x23\x93\xc0\xa7\xf1\ \x92\x03\x60\xf7\xf5\xa6\xad\x54\x90\xcd\xb9\x7e\xe5\x3c\x50\xf6\ \x64\xa3\x8d\x3f\x49\x30\x1c\xd4\xb0\x18\x42\x16\xe3\x82\x39\xc2\ \x10\x92\x4a\xcf\x88\xac\x0f\xe1\x55\x94\xa7\xd4\xd4\x44\x32\xe2\ \x42\x4a\xb9\x5a\x7b\x04\x01\xd8\x11\xfd\xae\xff\x00\x9d\x74\x2d\ \xfa\xe4\xc4\x3d\x64\xe5\xc5\xc6\xf2\xeb\x08\x2c\x32\x52\x8d\xca\ \x5e\x4e\x54\x33\xe8\x32\xa2\x3f\x0a\xa0\xb5\x5d\xbd\xe6\xb5\x7d\ \xc5\x97\x12\xa4\x07\x5f\x53\xa0\x3c\xad\xa7\x0a\x39\xef\xeb\x5e\ \x62\x75\x22\xeb\x64\x7c\xb5\x3d\x56\x1f\x09\x51\x60\xa3\x59\x2d\ \x1b\xb0\x97\x4b\xcb\x89\x12\xea\x87\xa4\x3e\xeb\x21\x2b\xc8\x53\ \x68\xdc\x48\xef\x8f\xe1\x8f\xc6\x94\x6a\x0b\x85\xc2\xfd\x7d\x12\ \x9e\x6c\xa1\x2b\x59\x6a\x33\x09\x1c\x34\x80\x78\x48\xfc\xf9\xa4\ \xac\x3a\x98\x58\x79\xa6\xd0\xa5\xe7\x8f\x2e\x46\x01\xed\xfc\xb9\ \xa7\xbd\x06\xf2\x1e\xd5\x11\x64\xc8\x61\x0f\x20\x2d\x3e\x22\x4e\ \x01\x27\x3e\x80\xf7\x27\x8e\x6a\x2a\x5a\x37\xa9\x6d\x91\x34\x13\ \x9c\xa3\x45\xbd\xd9\x67\x68\x3e\x90\x5e\x6e\x2d\x25\xe9\xcb\x6e\ \x22\x31\xc8\x57\x2a\xc9\xf8\xa9\x2e\x9e\xd1\xd7\x3d\x0b\xd4\xcb\ \x05\xe2\x2a\x54\xe1\x83\x29\x32\x32\x84\x90\x56\x8c\xe1\x69\xe3\ \xdd\x24\x8f\xc6\xae\xbd\x32\x23\xc8\x8e\xdb\xf1\xdb\x09\x65\x4d\ \x20\x84\xed\xc7\xd3\x3f\x38\xc5\x48\x92\xc3\x2e\x29\x0b\x2d\x24\ \xa8\xfa\x91\xda\xb8\xb2\x73\x9e\xaa\x5a\x9e\x87\xda\xb2\x75\x32\ \xac\xa6\xf9\x16\xf8\xf6\xeb\x9b\xab\xb7\x80\x63\xcb\xfd\xb3\x2a\ \x07\x82\x95\x0c\x8c\x7e\x1f\xc8\xd6\x77\x99\x0e\x46\xb7\x9f\x0d\ \x0a\x5a\x82\x09\x01\x3f\xda\xc7\x15\xe4\x09\xad\xf8\x5f\xab\xdd\ \x5a\x43\x8d\xa8\xfd\x9d\x4a\xfd\xd5\x13\xf7\x0f\xb0\x3d\xc7\xb1\ \xfa\xd6\x6d\x07\x1d\x0b\x0a\x18\x20\xe0\x83\x91\x83\x5a\x93\x4e\ \xed\x73\x39\x96\x69\xd9\xf2\x2b\x0d\x27\x76\xd5\xa6\xfb\x2d\x57\ \x48\xce\x08\x01\xb2\xd9\x65\x95\xe0\x0c\x9e\x54\x7d\xc5\x45\xe7\ \xd9\xf5\x4b\x17\xdb\x4c\xd8\xa7\xec\x51\x04\xe7\x4c\x87\xde\x88\ \xdc\x96\xdc\x6d\x69\x52\x53\xfb\x25\xf0\x48\xc8\xc0\xf7\xed\xcd\ \x5e\x82\xce\x7e\xfb\x6f\x23\xcd\x83\x85\x0c\xd2\xf4\xb0\xea\xdb\ \x6d\x0f\x36\xcb\xa9\x69\x61\xc4\x05\x73\xc8\xec\x69\xb4\xaa\x4e\ \x2a\xcc\x2b\xf0\xaa\x3b\xda\xd7\x2a\x1e\x8d\x88\xda\x56\xe5\x71\ \x55\xde\x35\xcd\xf5\xa6\x30\x8c\xf2\xcc\x72\x95\x48\x58\x39\x49\ \x2d\xe7\x09\xf2\x9c\xfe\x34\xa9\x56\x07\x5f\xb8\x22\x56\x93\xb3\ \xbf\x6a\x52\xe4\x91\x21\x0e\xa4\x04\x16\xfb\xe5\x48\xce\xd3\x93\ \xed\x83\x56\x94\xf8\xab\x7a\x42\x9e\x52\x1a\x4a\x94\x30\xac\x27\ \x71\x38\xed\xf1\x49\xd7\x19\x49\x00\x90\xbc\x11\xc9\xc7\x35\x59\ \x43\x32\xb4\x86\x50\xae\xa8\xbc\xd4\xd6\xaf\xb7\x61\x8f\xec\x52\ \xe5\xc6\x4c\x29\xae\x32\xfc\xc9\x4a\x43\x6e\x18\xe8\xc2\x01\xf4\ \x48\xcf\x7a\x8f\xc7\xb0\xb3\x0f\x5f\xfe\xbf\x62\x7c\x49\x6b\xbb\ \x4c\x94\xee\xd8\xea\xdf\xb1\x08\xc0\x49\x52\xfb\x67\x6e\xc0\x52\ \x3b\x1a\x96\xea\xeb\x8b\xda\x72\xd0\xd2\xe2\x25\xb3\x7b\xb8\x6e\ \x8d\x69\x64\x9c\x16\xf2\x3c\xf2\x55\xec\x94\x27\x24\x13\xeb\x50\ \xfe\x9d\xe9\xb6\x2c\x82\x52\x63\x2d\x4e\x30\xdb\xa5\x0d\x28\xaf\ \x20\x13\x82\xb5\x01\xe8\x54\x42\x73\xf4\xae\x7e\x26\xce\xa4\x21\ \x1e\xdb\xfa\xf5\xd8\x6f\xc3\xa9\x2a\x53\xaa\xdd\xae\x9a\xb7\x6f\ \x6f\xc1\x3b\x78\xd9\xf6\x16\x1b\x1b\x8b\x0b\x29\xc0\x29\xc0\xca\ \xbb\x1a\x8d\x4f\xb5\x44\x63\x5a\xc6\xd4\x4e\xba\xb8\xee\x2e\x22\ \xed\x8f\xbc\x85\x11\xb5\xa7\xfc\x89\x59\xc7\xaa\x5d\x2d\xfe\x07\ \xe2\xa4\xb6\xb2\x3c\x32\x97\x00\x27\x04\x63\x39\xa8\xb7\x54\xad\ \xee\x49\xd3\x32\x58\x6d\x6f\x25\x05\x3b\x87\x84\xa2\x95\x12\x08\ \x56\x32\x3d\xf0\x38\xfa\x53\xaa\x36\xa2\xa4\xb9\x6a\x64\xa4\xaf\ \x3c\x97\xb2\x7a\x7c\x19\xe3\xb2\xaf\x4f\xcb\x95\x06\x55\xf6\x4c\ \xc8\x29\x29\xd8\xdb\x1c\xa9\xf2\x09\x0a\x25\x44\xe4\x64\x72\x30\ \x33\x9e\xf5\x5c\xf5\x47\x4d\x3f\x70\xbc\x46\x99\xa6\xf4\xb2\xd0\ \x98\x88\x6f\xc3\xfb\x6b\x21\xd6\x54\xe9\x74\x15\xf8\xbc\x95\x94\ \x90\x00\x38\x3c\x8f\x6a\x97\x74\xfa\xf1\x17\x50\xdb\x00\x5a\x9a\ \x4d\xc5\x18\x54\xa4\xa4\xf2\xa5\x1c\xe1\x78\xfe\xf6\x09\xfa\x85\ \x0f\x4a\x98\xc7\x6a\x7b\x44\xa5\x25\x4a\x47\x04\x07\x46\x41\x1f\ \xce\xb4\xc2\xb7\x12\x2a\x48\x5d\x4a\x4e\x8c\x9c\x25\xa5\xbe\x1e\ \xbb\x8e\x5c\x56\x88\x72\x3f\x51\xdd\x93\x7d\xb5\x2d\xdb\x7b\xf7\ \x94\x3e\xa3\x0e\x23\x8c\x30\x96\x14\xa0\x5c\x65\x09\x56\x54\x94\ \x8c\x90\x92\x73\x4f\x7a\xd9\xeb\xd6\x93\xd5\x2e\x39\xa4\x2d\x9a\ \x85\x7a\x51\x21\x29\x31\x27\x28\xbe\x42\x40\x19\x20\x9c\xa8\x0f\ \x5c\x13\xeb\x5d\x19\x2d\xf9\x6b\x65\x49\x93\x14\x28\xab\xb6\x17\ \xbd\x39\x1e\xbc\xf6\xa4\x52\xd0\xf4\xa4\x00\xb6\xf6\x11\x80\x72\ \x8f\x4a\x5d\x66\xe5\xba\x1d\x87\xa9\x1a\x4a\xca\xef\xe3\xf8\x18\ \xf4\x0d\xed\x8d\x43\x62\x8b\x22\x12\xca\xd0\xb4\x0c\xa8\xa4\xa7\ \x8f\x6e\x40\xaa\xcb\xf4\x80\xb0\x07\x6d\xd7\x8b\x82\xda\x0b\x58\ \x65\x0e\x05\x01\xfd\x95\x8e\x3e\xb8\x35\x6b\xdb\x6d\x49\xb2\x3e\ \x57\x10\x84\xb0\xb5\xef\x2d\x60\x00\x14\x7b\xe3\xdb\xe9\x4d\x7d\ \x46\x81\x12\xeb\x66\x97\x0a\x62\x9c\x43\x13\x11\xe1\x1f\x0f\x97\ \x14\xa2\x41\x01\x03\xdc\xe3\xf0\xef\xe9\x59\x5a\xcb\x67\xd8\xc3\ \x32\xce\xf2\xec\xce\x4e\xb7\x28\x5b\xba\x42\xdd\x9d\xe4\x11\x37\ \x54\xdd\xd8\x7c\xa4\xf0\x53\x19\xa2\xa0\x15\x8f\x6d\xc7\x8c\xfa\ \x66\xac\x8e\x85\xc6\x7a\x5c\xb6\x2e\xa9\x21\x4c\xbc\xe2\xf7\x10\ \x73\x80\x14\x40\xcd\x44\xba\x8d\x65\x9b\x7c\xea\x79\xb7\x48\x91\ \x1e\x01\x65\xff\x00\xb2\xc5\x4a\x7e\xe3\x6d\xa5\xbe\x10\x9e\xdd\ \xbd\xcf\x04\xe7\x35\x26\xd1\xa5\x8d\x29\xa8\x60\xda\xad\xf2\x5a\ \x52\x87\xec\x5e\x09\xc9\x0e\x0c\xf3\xcf\x62\x41\xf5\xfc\xab\xb3\ \x43\x19\x08\xce\x32\xed\xd4\xe3\x63\x3a\x3a\xa3\xa0\xe4\xb9\x7f\ \x09\x1d\x81\xa5\xf0\x18\x46\x3b\xfe\xee\x3d\xea\x5c\x85\xa1\x94\ \x03\xc9\x57\xa7\xc7\x15\x5e\xe8\x69\x61\x50\x50\x54\xb0\x5c\xfa\ \x7a\xd4\xe2\x37\x20\x2d\x47\x27\xbe\x2b\xb9\x55\xaa\x8b\x37\x23\ \x87\x46\x5a\x19\xba\xeb\xce\x67\x7a\xb6\x80\x7b\x56\x29\x6f\x1c\ \xee\x51\x56\x3b\xfa\xd6\xd2\x48\x39\xe7\xd8\x57\x80\xf9\xcf\x27\ \x8e\x00\x27\xe6\x97\x7b\x2d\x06\x5a\xef\x53\x04\xb8\xeb\x0a\xde\ \xda\x8a\x87\x6e\x7b\x9a\x2b\x35\xe1\x38\x21\x47\xf0\x1c\x7d\x28\ \xa2\xc9\xee\x89\x4d\xad\x99\x0a\xe9\xb0\x43\x7a\x36\x0b\xef\xe7\ \x62\x7c\x4c\x0f\xff\x00\xa8\xaa\x70\x9b\x35\xe9\x89\x29\x6d\x45\ \xb6\xc0\xe3\x07\xe6\xa3\xda\x15\xd5\xc8\xd2\x90\x5b\xf3\x25\xb6\ \xfc\x4c\x10\x3d\x7c\x45\x7f\x9d\x3f\x21\x29\xc7\x39\x18\xc9\xfa\ \x71\x5b\xa1\x15\x64\xd9\xcd\x53\xea\xa4\x8d\x02\x3a\x41\x05\x47\ \x71\x3d\xf9\xed\x5b\xd4\x84\x1f\x2a\x06\x3e\x7d\xab\x15\x00\x0e\ \xd4\xee\x23\xb8\xad\xa8\x52\x4a\x7b\x67\xd4\x0f\x7e\x3d\xe9\xa5\ \x45\x36\x79\xea\x6a\x40\x8a\xf3\x89\x28\x73\xee\x27\xfd\x77\xa8\ \x86\xb2\x2b\x4d\xd9\x49\x4c\x90\xa6\x96\x90\xb4\xa4\x28\x1e\x0f\ \x62\x3d\xc1\xa8\xf7\x4b\xe3\xc0\x9d\x77\xbf\x5d\x2e\x4c\x46\x91\ \xa8\x18\xbe\xc8\x69\x4e\x3c\x80\xa7\x98\x42\x55\x86\x92\x82\x79\ \x4a\x36\x60\x8c\x70\x72\x7d\xea\xb3\x54\x08\x31\xfa\x2b\xa5\x2e\ \x05\xbd\x86\xe3\x2a\x2b\x37\x89\x4a\x52\xb7\xae\x2a\x64\x14\x6d\ \x52\xbb\x84\x04\x84\xa7\x03\x00\x0e\x29\x17\xb4\xb3\x25\xb8\x71\ \x5b\x8a\x4c\xb5\x9a\x01\x6d\x82\xda\x81\x49\x3e\x5c\x7a\xfe\x54\ \x27\xf6\xc1\x28\x42\xb7\x0c\xed\x51\x07\x23\x8e\x0d\x56\xb3\xad\ \x31\xe4\x6a\x6d\x4f\xa7\x6c\x52\x5b\xb5\x41\x95\x67\x63\xc6\xfb\ \x38\x09\x6d\x99\x4a\x71\x41\x3e\x51\x80\x37\x20\x00\x71\x8c\x83\ \x4a\x2c\xf6\x57\x75\x15\xa6\x75\x8e\x3d\xbe\xc7\x69\xbc\x59\xae\ \x4c\x2e\x43\x2d\x23\x30\x2e\x05\x08\xdc\x94\x2f\x00\x12\x92\x0f\ \x29\x39\x20\xa4\x67\xda\xaf\x9d\xf6\x15\xcc\x5d\x56\x08\x88\xc2\ \x36\x14\x96\xf1\x9c\x82\x0e\xee\xd5\xb2\x52\x9b\xfb\x53\x9b\x96\ \x8c\x95\x6d\xc6\x7f\x7b\x19\xc7\xd7\x1c\xe2\xa2\x7a\x06\xed\x78\ \xba\xe9\xbb\x7c\x8d\x23\x65\xd3\xf6\x88\xe1\xf7\x9a\x9f\x19\xe0\ \xbd\xa1\xc4\xb9\xb5\x45\x92\xd0\x09\x50\x24\x28\xe4\x8e\x49\xa8\ \x3e\xa3\x81\x68\x90\x7a\xb7\x70\xb8\xb4\xd2\xe4\xc5\x58\xfb\x13\ \x8e\x72\xa6\x5e\xfb\x3a\x4b\x65\xb3\xdd\x2a\x2b\x08\xe4\x60\x9c\ \x0f\x6a\x8e\x27\x30\x72\xd1\x34\x5b\x0c\xde\xe3\xcb\xd5\x12\x74\ \xd2\x22\xac\x3f\x12\x0b\x52\xd4\xee\x46\xd5\x05\xa9\x49\x09\x03\ \xbe\x46\xd3\xf9\xd2\x29\xeb\x8d\x0d\x2e\xcb\x79\xf4\x22\x33\x20\ \x97\x16\x55\xc2\x31\xdf\x3e\xdd\xaa\x0a\x6f\x42\xc9\x7c\xd4\x57\ \x6b\xfd\xbd\x53\xcb\x3a\x36\x1f\xdb\x22\x91\xfd\x6a\x8a\x96\x95\ \x21\x59\xcf\x04\x92\x0e\x41\xc0\xcd\x35\xc8\x86\xda\x75\x3e\xab\ \xb7\xfd\x86\xc9\x16\x33\xda\x3f\xed\x0e\xc3\xb5\x8c\xc7\x0e\x85\ \x2f\x62\x88\xc0\x05\x60\x14\xf3\x81\xc6\xd3\x50\xaa\x3d\x88\xce\ \x4c\x6e\xba\xc6\xd5\x12\xc5\x6c\xba\xc5\xff\x00\x6c\x17\x47\x59\ \x66\x13\x4d\xad\x28\x2b\x53\x83\x72\x72\x54\x46\xd0\x07\x27\x3d\ \xbd\xa9\xfe\x19\x5c\x94\xc6\x2f\x35\xf6\x77\xdd\x03\x73\x4a\x58\ \x51\x49\xf5\x19\x1c\x1e\xfd\xc5\x54\xd3\x2c\xf6\x94\x68\x5e\x97\ \x1f\xd5\xb0\x4f\xda\x2e\x36\xe2\xe9\x0c\xa0\xef\xdf\x19\x5b\xc2\ \xb8\xe7\x25\x23\x39\xef\x81\x9e\xd5\xae\xf4\xd5\xbd\x7a\x6f\x5f\ \x5d\x2e\x29\x69\x37\xd8\x57\x47\x51\x0d\xf2\x70\xfc\x70\x9d\x9f\ \x65\x4b\x47\xba\x41\x04\x63\x6f\x7c\x9a\x38\x8d\x6e\x46\x66\x74\ \xd3\xef\x22\x34\x06\x22\xa5\xd4\xa5\x44\x24\x11\x9e\x79\xed\x5a\ \xd8\x53\x67\x09\x4a\xd0\xa2\x46\x78\x56\x72\x33\xcf\xfe\xb5\x58\ \x58\xed\xec\x5e\x7a\xd3\x71\x95\x7a\x8c\x99\x12\x60\xda\x6d\xd2\ \x1a\x4a\x8e\x50\xcc\x82\x17\xb9\x61\x3d\xb7\x79\x71\x9e\xe0\x67\ \x1d\xcd\x41\xe3\x59\xed\xd2\x34\x3e\x9c\xb8\x3d\x15\x2a\x9b\x2b\ \x5c\x08\x6f\x48\xe7\xc5\x54\x75\x49\x71\xb5\x33\xbf\xbf\x86\x50\ \x48\xdb\x9c\x73\xdb\x9a\xce\xa5\x64\x69\x95\x57\x7b\xdb\xd2\x3a\ \x31\x0b\x42\xd2\x14\xda\x92\xa4\x9e\xc5\x27\x22\xb6\x14\x82\x80\ \x48\xed\x55\xc7\x4c\xe2\x31\x6f\xea\x37\x50\xad\x10\x19\x6e\x2c\ \x08\xf2\xe1\x38\xcc\x66\x52\x10\xd3\x6a\x72\x2a\x4a\xca\x52\x38\ \x19\x3c\x9c\x55\x8e\x06\x72\x3e\x6a\x6f\x71\xd0\x79\x91\x9c\x77\ \x54\xc9\xc7\x74\x1e\xe0\xd2\xb3\x83\x85\x8c\x10\x79\xf6\xa4\xa1\ \x2a\x50\xc1\xe6\xbd\xdc\xa6\xfe\xf7\x23\xf9\x52\xe4\xae\xc7\x45\ \xd9\x6a\x68\xbd\xc4\x0f\x33\xe2\x24\x1c\x8e\xf5\x1f\x03\xca\x52\ \x47\x63\x52\xe6\x76\xbc\xca\x93\xc6\x08\xa8\xc5\xcd\xaf\xb3\x48\ \x52\x48\xe0\x9e\x6b\x46\x1e\x7f\xe2\xf9\x19\xf1\x30\xff\x00\x25\ \xcc\xc2\xde\xc9\x75\xc3\xc7\x03\xb5\x45\xfa\x8a\xe9\x4c\x67\x10\ \x0e\x00\x18\xe2\xa7\x96\xa6\x36\xc3\x53\xa7\xdb\xd6\xab\x5e\xa6\ \xbc\xa4\xb0\xe0\x4f\xb1\xab\x4e\x57\x52\xb7\x22\x99\x6d\x04\xfb\ \x4a\xab\x48\x5b\x99\x7e\x45\xc2\xe4\xfb\x49\x71\x6d\x04\xec\xdc\ \x32\x01\x51\x2a\x26\x90\x75\x77\xa4\xcd\xdd\xe1\xc5\xbb\x24\xbc\ \xc4\xa0\x82\xa2\xe3\x4a\xde\xad\xbe\xc0\x1e\xff\x00\x4f\xa9\xa9\ \x3f\x4d\xff\x00\x6f\x69\xbc\xb2\x17\xb5\xcf\xb3\x25\x63\x1c\xe0\ \xa4\xed\x35\x68\xd9\x59\x55\xc2\xc7\x15\xc5\x36\x0a\xf6\x8d\xc4\ \xa7\x3e\x55\x27\x07\xf8\x1a\xf2\x58\xba\x6d\xd6\xcd\x17\x67\xc8\ \xf7\xb8\x4a\xbc\x3c\x24\x53\xd6\x3c\xd7\xc3\xee\x70\x55\xc7\x48\ \x16\x1b\x75\xb6\x9d\x52\xd6\x96\x37\x95\xe3\x85\x1c\xf2\x9c\x7a\ \x63\xb7\xd6\x99\x2c\xf0\x64\xb1\x71\x69\xef\x33\x61\xb2\x16\x16\ \x7b\x12\x30\x71\xf5\xed\x5d\x29\xd4\xdb\x45\x90\x75\x21\x76\xd8\ \x31\x3e\xc9\x19\xc8\x67\x73\xab\x04\x25\xd7\x82\xb2\x38\xf9\xc2\ \xbf\x21\x54\xf4\xd8\xad\x89\x0a\x86\xc4\x73\xb3\xc5\xfd\xa9\xda\ \x46\x13\xb8\x82\x9f\xa7\xb1\x1e\xdf\x14\xba\x18\xa9\xca\xf1\x96\ \xa3\xb1\x78\x0a\x2b\x25\x4a\x6a\xd7\xd6\xdf\xc1\xd5\xdd\x2f\x6d\ \xe6\xf4\x15\xb9\xf9\x61\x5e\x33\xc8\x0a\xf3\xfd\xe0\x9f\x4c\xfd\ \x7b\xd4\xd2\x3b\x99\x39\x23\xbf\x02\x99\x2d\xed\x26\x2d\xae\x2c\ \x74\xf0\xdb\x2c\x36\x84\x73\xc0\x4a\x52\x00\xfc\xb1\x4e\xb6\xce\ \x52\x92\x52\x40\x3e\x6e\x7b\x0f\xad\x67\x8b\xd7\x41\x15\x5e\x66\ \xd9\xe5\xc6\x02\xf2\xa9\xcc\xa3\x7b\x89\x18\x5b\x27\xfe\x14\x7b\ \x56\xbb\x6e\xa2\x86\xe3\xe2\x2c\xa7\x44\x77\xf3\xfd\x53\xc7\x6a\ \xd3\xf1\xcf\xde\x14\xf2\x0e\xe2\xa0\x92\x4e\x7b\x1f\x4c\x7d\x68\ \x91\x6a\xb7\xcd\x63\xc2\x9b\x0d\x99\x20\x9c\x00\xe2\x01\xc5\x31\ \x41\xa7\x78\xb2\x8a\x70\x92\xb4\xd7\xc8\x7b\xb6\x2a\x33\xad\xa5\ \x4b\x42\x92\x30\x3c\xdb\x72\x83\xff\x00\x58\x7f\x8d\x3e\x43\x8f\ \x13\x68\x29\x71\x93\xf4\x22\xab\xe6\x74\x15\x9c\x2c\xaa\x23\xf7\ \x6b\x6a\xbb\x83\x0e\xe0\xe2\x06\x7e\x99\xc5\x2e\x6b\x46\x49\x48\ \xca\x75\x96\xad\xd8\x3d\x3e\xde\x0f\xf1\x29\xad\x11\x9d\x45\xbc\ \x7c\xc4\x4e\x8d\x17\xb5\x4b\x78\xaf\xb3\x64\xca\x4c\x64\x10\x4a\ \x31\x84\xf2\x48\x1c\x0f\xa9\xed\x50\x8b\xbe\xab\x80\x89\x46\x06\ \x9e\x8c\x35\x15\xdd\x27\x68\x6a\x39\xcc\x66\x0f\xf6\x9f\x74\x79\ \x40\x07\xf7\x41\x26\x94\x3d\xa2\xec\x60\x03\x78\x93\x76\xbd\x60\ \xfd\xdb\x85\xc1\xc7\x50\x4f\xca\x01\x09\xfe\x14\xe9\x19\xe8\xd6\ \xd8\x3e\x04\x48\xb1\xe2\x46\x69\x39\x08\x65\xb0\x84\x0f\x6c\x01\ \x51\x27\x37\xbd\x97\x9b\xfb\x2f\x32\x69\xc2\x94\x35\xd6\x5e\x4b\ \xf9\x6d\xf9\x78\x91\x48\x1a\x6a\x4a\x25\x4a\xbd\x5f\x65\x7e\xb2\ \xbc\xcd\x47\x87\x21\xf2\x30\x86\x9b\xff\x00\xe1\x34\x3f\x71\x3f\ \xc4\xd2\x6f\xb2\x44\xb6\xc3\x10\x61\xa0\x36\xca\x09\xda\x90\x49\ \x39\xfa\x9e\x49\xa7\x69\xf3\xa6\x5c\xde\xda\xd2\x8a\x00\x3d\xc7\ \x14\x95\x36\xf0\xde\x56\xbc\xaf\x06\x93\x92\x37\xea\xa3\x53\xab\ \x39\x7b\xcf\xe1\xcb\xbb\xe5\xc8\xdd\x08\x2d\x05\xb4\x04\xf9\x30\ \x09\x39\xe7\x9a\x57\x75\x82\xa7\xa2\x2d\x3c\x1c\x8e\xc4\x52\xab\ \x23\x71\xd6\xa6\xd0\xb5\x15\x73\x82\xae\xf4\xf3\x72\x8f\x1c\xa1\ \x68\x6d\x3b\xa9\xaa\x92\x94\x6e\x67\x95\x4c\xb2\x48\xa6\xed\xfa\ \x72\x12\xe4\xab\xf5\x60\x66\xd9\x76\x8c\xe2\x94\xdb\xc8\x4f\x95\ \xe0\x7b\xa1\xc1\xea\x93\x81\xf2\x0e\x08\xe6\xa4\xf0\x35\x01\x43\ \x88\xb7\xdf\x99\x55\xbe\x71\x00\x6d\x59\xce\xff\x00\x94\x9e\xce\ \x0f\x91\xe6\xf7\x4f\xad\x21\xbf\xe1\x9d\x40\x51\x18\x6f\x3b\x72\ \xe6\x0f\x20\xfa\x54\xa2\xc6\xe4\x3b\xed\xa9\x70\x6e\x71\x99\x94\ \x13\xf7\xd0\xeb\x61\x49\x3f\x50\x7d\x6b\x2d\x34\xd3\xb4\x5e\xbe\ \x46\xaa\xd2\x52\x8a\x75\x15\xd7\x9a\xfb\xae\xef\x95\xb5\x1b\xee\ \x62\x33\xe5\x1f\x63\x9c\xd2\xf1\x9c\xed\x58\x18\xfa\x83\xda\x90\ \xc9\x93\x1a\x23\x79\x9d\x3a\x2b\x00\x0e\x54\xe3\xe9\x48\xfe\x74\ \xba\xe3\xd3\xcb\x14\x92\xa4\x34\xe4\xf8\xcd\xab\x80\x84\x3d\xb9\ \x09\xfa\x05\xe7\x14\xdd\x1f\xa7\x71\x6d\xe0\x18\xb7\x4c\x14\xf6\ \x5b\x90\x18\x5a\xff\x00\x32\x9a\xbc\x95\x5b\xeb\x1f\x93\xfb\xd8\ \xac\x55\x1b\x7b\xff\x00\x34\xfe\x97\x19\x5c\xd4\x28\x90\x54\x8b\ \x2c\x67\x6f\x2a\xce\x03\x88\xca\x23\x20\xff\x00\x79\xd2\x31\x81\ \xec\x9c\x9a\xf1\x9b\x7b\xac\xb8\xa9\xd7\x19\x49\x99\x70\x29\xc2\ \x56\x84\xe1\xa6\x12\x7f\x75\xa4\xfa\x0f\x75\x1e\x4d\x3d\xce\xd3\ \xd3\x49\x0b\x76\xff\x00\x31\xc2\x83\x90\x14\xda\x00\xfc\x00\xed\ \x49\x5a\x8b\x25\x08\x5a\x1d\x79\x2e\x8c\x79\x4e\xdc\x67\xe9\x8a\ \xcf\x25\x2d\x9a\x25\xca\x0b\xdd\x67\x3e\x6b\xbb\x71\x3d\x7b\x8a\ \x5b\x73\xc0\xdf\xb2\x5b\x25\x47\xca\x56\x13\xce\x3d\xc9\xc0\xf2\ \x9e\x0f\x6f\x5a\x6b\xb6\xc7\x59\xbf\xdb\xdf\x71\xb6\x9b\xc9\x53\ \xdb\x1b\x18\x03\xcd\x8f\xc3\xf1\xf4\xa7\x7e\xb4\x19\x11\xba\x95\ \x6f\x9e\xc1\xca\xe1\x04\x1d\xbb\x41\x29\x0a\x47\x2a\xf9\x00\x81\ \xf4\xc1\xa6\x7d\x2c\xbf\xb4\xdc\xd5\x29\x4a\x2b\x6c\x10\xcb\x27\ \xb0\x20\x77\x35\x7a\x69\xce\x50\x5e\xb7\x37\xe6\x8d\x2e\x8d\xc4\ \x54\x7d\x96\xf9\xa4\x8e\x9b\xe9\xab\xe5\xc8\xcd\xac\x81\xc7\x6c\ \x55\xad\x15\x40\x34\x95\x2c\x8c\x63\xb6\x6a\xa4\xe9\xb8\x52\x61\ \xb4\x84\x03\xda\xad\x9b\x74\x40\x5b\xdc\xe1\x2a\x24\x1e\xd5\xed\ \x1c\x54\x29\x45\x33\xe7\x14\x6f\xb2\x37\x78\xc8\xc8\x39\x04\xfc\ \x0f\x8a\xc9\x38\x3c\x83\x80\x79\xe0\x66\x94\x08\x8c\xad\x3f\x73\ \xe0\x0a\x4a\xfc\x63\x1c\xee\x6c\xe1\x39\xe4\x7b\x52\x54\xa2\xdd\ \x91\xa5\xc6\x4b\x56\x66\xbe\x53\x81\xdf\x04\x7d\x28\xa4\x57\x0b\ \x83\x31\xe2\x93\xb8\x6e\xf4\x1e\x94\x53\xa1\x4a\x4d\x08\x9d\x58\ \x27\xa9\x05\xd0\x2a\x6d\xad\x1d\x07\x23\x27\x2b\xec\x7d\x37\xab\ \x9a\x79\x32\x54\xa2\x36\x34\x4f\x18\xed\x9a\x6d\xe9\x95\xbd\x4f\ \xe9\x48\x4f\x3e\xaf\x29\xf1\x38\xcf\xfc\x62\xaa\x68\x98\xc8\x4f\ \x01\xb4\x82\x3f\x9d\x68\xe2\xc6\x29\x23\x2d\x3a\x52\x94\x53\x23\ \x09\x92\xa0\xbf\xda\x24\xa0\x64\x60\x91\xc7\xfa\xef\x4a\x52\xea\ \x55\xca\x33\x82\x30\x38\xfe\x54\xf3\x26\x23\x0f\x34\x42\x92\x02\ \x8f\xae\x3d\x2a\x29\x70\x9c\x8b\x3b\xea\x61\xc1\x9c\x9f\x2f\x35\ \x78\x4d\x4f\x62\x27\x07\x03\x64\xbb\x7d\x8c\x5d\x99\xbb\xc8\xb6\ \xc0\x55\xc1\xa0\x42\x25\x29\x94\x17\x53\xc6\x30\x17\x8c\x8e\x3e\ \x6a\x37\x75\x6a\xdc\x1b\x4c\x28\x70\x62\xb1\x01\xb4\x96\xd1\x15\ \xa6\x52\x96\x82\x79\x24\x04\x81\xb4\x02\x49\xe3\x15\x59\xf5\x3f\ \x55\x5f\xb5\x0e\x95\xbc\xca\xb6\xc0\x2d\xda\xe2\x4f\x6a\x1a\xa6\ \x09\x05\x0e\x15\x25\xf6\xc2\x88\x48\x4e\x36\xee\xf2\xfd\xec\xf2\ \x4e\x31\x52\x4b\xb6\xa4\x9b\x67\x91\x7c\x71\x16\x96\x25\x31\x61\ \x43\x6a\xb8\x17\x25\x86\x9c\x3b\xd3\xbb\x6b\x49\xda\x77\x14\xa4\ \x85\x1c\x91\xdc\x01\xf1\x19\xe2\x98\xac\xc8\x92\x5a\x34\xb5\xa4\ \x42\x54\x75\x5a\x20\x22\x1b\x87\x72\xe2\xa6\x3a\x03\x6a\x3f\x29\ \xc6\x0f\x20\x7a\x7a\x0a\x75\x3a\x6b\x4f\x9b\x62\x2d\xa3\x4f\xda\ \x97\x11\x0a\xdc\x98\xe6\x22\x0b\x49\x38\xee\x13\x8c\x67\x1e\xb5\ \x16\x91\xaf\xcc\x08\x9a\x9d\x72\x60\x00\xbb\x3b\x4c\xbb\x15\x09\ \x5e\x3e\xd6\x97\x9b\xcb\x47\xb7\x19\x5e\x53\xeb\xda\x90\xea\x0e\ \xa5\x4e\x80\xe5\xd3\xec\xd6\xd6\x1e\x6e\xce\xd3\x4b\xb8\x93\x33\ \x62\xb7\x29\x3b\x94\x86\x86\xd3\xbb\x6a\x4e\x4e\x48\xf6\xef\x53\ \x9a\x21\x74\x59\xf6\x65\xc6\x81\x01\x31\x23\xc7\x69\x94\x20\x6d\ \x42\x1b\x48\x09\x03\xd8\x01\xc0\xfc\x29\xa6\xc9\xa1\xac\xd1\xb5\ \x15\xd7\x50\xca\x89\x1a\x6c\xfb\x84\x84\xc8\x4a\xdf\x8c\x85\x2e\ \x31\x4a\x52\x9c\x21\x58\x24\x03\xb4\x1f\xad\x56\x6e\xea\x57\x2c\ \x9a\xd7\x55\xdf\x24\xba\xf3\xb0\xa2\xda\x22\x48\x08\x4a\xb2\x0e\ \x77\xe3\x68\xec\x0a\xb8\x1f\x95\x4b\x22\x75\x0e\xe9\x6f\x9a\x8b\ \x75\xfe\xca\xcc\x49\x32\x60\x3d\x32\x19\x6a\x51\x75\x2a\x2d\x00\ \x56\xd2\xc9\x42\x70\xa0\x14\x0e\x46\x47\x7e\x6a\xad\xc5\x92\xa4\ \x9e\xe4\xd8\xc1\x80\xcc\x99\x0f\xbb\x6d\x88\xe3\xb2\x19\xf0\x5e\ \x75\x4c\xa4\xa9\xc6\xc6\x70\x85\x12\x32\x53\xc9\xe0\xf1\xc9\xad\ \x16\x8b\x25\xa2\x08\x2a\xb7\x5a\x60\x43\x6c\x25\x48\x08\x62\x3a\ \x10\x02\x55\x82\xa1\xc0\xe0\x12\x06\x47\xc5\x57\xf6\x9e\xa0\xdd\ \x6e\xcf\xe9\xf7\x66\x5a\x1b\x8b\x02\xfe\x4a\x62\x2d\x32\x8a\xdc\ \x43\x9b\x0a\x80\x5a\x76\x80\x02\x80\x38\xc1\x3f\x3d\xf8\x46\xd7\ \x51\x6f\x89\xb7\x43\xba\x37\xa7\xd2\xe4\x39\x57\x43\x6a\x6c\x09\ \xb8\x70\xc8\xdc\xa4\xa4\xed\x29\xc6\xc2\xa4\xe3\x39\xc8\xce\x71\ \xc7\x33\x9a\x3b\x91\x99\x16\x23\x7a\x77\x4f\xb4\xc3\x71\x98\xb2\ \x5b\x58\x69\xb7\xfe\xd2\xd2\x5a\x88\x84\x84\x3a\x32\x03\x80\x01\ \xc2\xf9\x3e\x6e\xfc\x9a\x4f\x36\xc7\x6d\x55\xc5\xb9\xb2\x6d\x70\ \x9e\x94\xde\x3c\x39\x0e\x47\x4a\x9c\x47\xd1\x44\x64\x7a\x54\x65\ \x1d\x45\x72\x24\x2d\x44\x9b\xcd\xb1\x0d\xcf\xb2\x3c\xcb\x2a\x66\ \x3c\x8d\xe8\x7d\x4f\x04\x96\xb6\xa9\x49\x4e\x32\x54\x01\xc8\xe3\ \xbd\x2e\x3a\xbe\x74\x68\x1a\xa1\x37\x4b\x6c\x31\x3a\xc3\x6f\x4d\ \xc7\xc3\x8f\x33\xc6\x69\xf6\x94\x15\x8c\x28\xa1\x24\x10\x52\x41\ \xc8\xf6\x3e\xb4\x39\xc1\x6e\x0a\xc4\xc6\xdc\xe4\x06\x64\xae\x58\ \x89\x1d\x13\x1e\x4a\x50\xe4\x94\xb6\x90\xe3\x89\x4e\x76\x82\xac\ \x64\x81\x93\x80\x7b\x64\xd3\xa4\x7b\x35\x89\x51\x19\x61\xbb\x4d\ \xb8\x47\x66\x40\x94\xd3\x42\x32\x36\xb6\xfe\xe2\xaf\x11\x23\x18\ \x0b\xdc\x49\xdc\x39\xc9\xce\x6a\xbf\x85\x74\xbc\x39\x7f\x83\x67\ \x93\x69\x8b\x15\xdb\xb5\xb1\xcb\x85\xb0\xfd\xb4\xb8\x06\xcd\xa7\ \x63\xde\x41\xb0\xf9\xd2\x7c\xbb\x87\x71\xcf\x72\x74\x5a\xfb\xa9\ \xee\xda\x1e\x0d\xde\xf2\x23\xba\x89\x69\x52\xda\x71\xa5\x12\xb2\ \x3c\x45\x82\x14\x36\x80\x9c\x60\x01\x82\x73\x4b\x79\x2a\x7b\xa3\ \x61\x53\x2b\xb3\x45\x8d\x1a\xdf\x19\x13\xa4\xca\x89\x0e\x3b\x52\ \x25\x14\x2a\x43\xed\xb4\x94\xad\xe2\x91\xb5\x3b\xd4\x06\x55\x81\ \xc0\xce\x70\x38\xa7\x04\xc2\x51\x39\x2b\x39\xf5\x15\x53\x5a\xf5\ \xac\xbd\x3c\x8d\x63\x39\xfb\x7a\x9f\x93\x1a\xff\x00\x12\x22\x9b\ \x5d\xc1\x6e\xb5\x87\xbc\x34\x85\x20\x29\x23\x60\x09\x50\x25\x20\ \x11\x9c\xf3\x8c\x54\xbb\x51\xf5\x07\xf5\x15\xfb\x51\xc1\x7e\xd8\ \xe4\x86\x2c\x96\x44\x5d\x0a\x99\x5e\x5c\x74\xa9\x4b\x05\x18\xc6\ \x00\x1b\x73\x9c\xfb\xd6\x59\xd5\x69\xd9\x1a\xa9\xca\x9b\x57\x97\ \xad\xfe\xc4\xa5\x71\xdf\x68\x64\x28\xa8\x0e\xfc\x57\xa7\x0e\x23\ \x6a\xb8\x35\x5d\xeb\xdd\x67\xaa\xe3\xf4\x86\x5e\xa9\xb6\xb3\x62\ \x61\x4e\x18\xa6\x3b\xd1\x2e\x2a\x94\x03\x6e\xb8\x94\x12\x09\x69\ \x23\x70\x2a\x48\xf5\x18\x2a\x3c\x10\x01\xb0\x62\xb5\x70\x5c\x06\ \x9e\xb8\xa2\x33\x53\x79\xf1\x53\x15\xc5\x2d\xb1\xc9\xc6\x0a\x92\ \x09\xe3\x19\xe0\x72\x6a\x23\x52\xef\x52\xfa\x37\x68\x9b\x2d\xca\ \x2d\xaf\x61\x3d\x8f\x1f\x15\xaa\xff\x00\x04\x3a\xf2\x54\x79\xcd\ \x64\xca\xb0\xf8\x51\xfa\x1a\x72\x9a\xcf\x8c\xd2\x76\xf7\x06\xac\ \xe7\x92\xa2\x91\x68\xc3\x3d\x37\x11\x0b\x8d\x86\xad\xa1\x3d\x8e\ \x3d\x6a\xad\xea\x04\x70\xb8\xaf\x15\x0e\x4d\x5b\x17\x4c\xa6\x38\ \x18\xc6\x07\x35\x5c\x6b\x36\xc3\x91\x95\x81\xc0\xef\x5a\x30\xdd\ \x64\xef\xcc\x4e\x21\x59\xa4\x51\x3a\x5e\xe6\xfd\x9b\x51\xcb\x8e\ \xd9\xc7\x8a\xd2\xc0\x1e\xe0\x8e\x7f\x8e\x0d\x74\x96\x91\x2c\xb5\ \xa4\x21\x3b\xb4\x1d\xcc\x25\x5f\xc2\xb9\x86\x79\x0a\xea\x84\x28\ \x28\x20\x78\xb1\x1c\x52\x47\xf7\xb7\x63\xf9\x57\x42\x69\xb9\x92\ \x1c\xd2\xf0\xd2\xd3\x4a\x79\x0d\xb2\x1b\x73\xc3\xee\x85\x27\x83\ \x9f\xca\xb8\x18\xac\xaa\xa6\x87\xa4\xc0\x66\x9e\x12\x29\xf6\x90\ \x6e\xa2\xdb\x2d\x31\x51\x3b\x50\xdc\x22\x46\x54\x85\x61\x4c\x25\ \x4a\xe4\xed\xc9\xed\xec\x9c\x02\x4f\xcf\x35\x46\xda\x5b\x6a\xe0\ \xf2\xda\x91\x19\x4c\xb7\x3d\x2a\x5b\x4a\x4a\xf2\x16\xde\xe5\x2b\ \x23\x3d\xc8\xdc\xa1\xcf\x1d\xea\xe0\xfd\x24\xee\xae\x42\xd3\xb6\ \x4b\x78\x8c\x8d\xb3\x56\xf2\x14\xeb\xec\x12\x84\xa3\xca\x92\x9d\ \xde\xe4\x2b\x38\x1c\x9c\x7c\x55\x25\x6d\x75\x2f\xcc\x8d\x0d\xe0\ \xd0\x54\x64\xa5\x2e\xb9\xbf\x07\x6e\xe2\x02\x07\xf6\x46\x55\x8e\ \x7e\x6b\x8b\x51\x24\xda\x3d\x05\x2c\xd2\xa5\x19\xcb\xd7\x23\xa0\ \xf4\xfc\xd7\x5f\xd3\x16\xc7\xdf\x42\x10\x4c\x74\x21\x41\x27\x39\ \x21\x23\xf8\x1c\xd4\xb2\xd0\xbd\x91\xc0\x5a\x81\x07\x8e\xd5\x5d\ \xd8\x5e\x77\xf5\x5c\x78\xc5\xb7\x37\x8e\x77\xa9\x7c\x0f\x4e\xde\ \xfc\x7e\x15\x3d\xb4\x2f\xc4\x84\x56\x94\x85\x0d\xa7\x8f\x5c\x1a\ \xad\x39\x5d\x98\xab\x44\x7e\x88\x77\x1d\xd8\x4e\xe3\xc1\x03\xb6\ \x29\xca\x37\x86\x4e\xdd\xc4\x28\x77\x09\xef\xf9\xd3\x3c\x65\x2d\ \x6c\xa5\x68\x4f\x95\x49\x03\x69\xe0\xfe\x3e\xd4\xec\xdb\xa8\x4a\ \x37\x92\x00\x00\x7e\x15\xae\x0c\xca\xd0\xed\x1b\x68\x56\xe2\x53\ \x8c\x71\x4a\x5f\x7c\x36\xd1\x50\x19\xe2\x9b\x22\x38\x92\x92\x07\ \xaf\xc5\x23\xbd\x4c\x2d\x84\xb6\xd0\xdc\xe9\xe1\x29\x1e\xb4\xfe\ \x22\x8a\x17\xc3\xcd\x2b\x19\x4b\x96\x15\x20\x23\x24\xac\xf6\x48\ \xac\x2e\x4c\x2d\xfb\x6b\xd1\xe3\xe3\xc5\x29\xca\x72\x7b\x9a\xd3\ \x19\xb4\xc3\x41\x79\xf5\x05\xc8\x5f\x2a\x23\xd3\xe0\x7b\x52\x29\ \x93\xd0\xb2\x5a\x52\x94\x90\x53\xf7\xb3\xc8\x1f\x15\x55\xd6\xd5\ \x8f\x4b\x55\x97\x90\xcb\x03\x51\x42\x8e\xb5\x44\x92\x92\xdc\x96\ \xf8\x71\xb5\x70\xa0\x7d\xb1\x55\x6f\x5a\x75\x67\x5d\xa1\xcf\x42\ \x74\x96\x9a\x44\x2b\x52\x87\xec\x9e\x44\x74\xc8\x75\xdf\xf9\x44\ \xe4\x27\xe9\x8f\xc6\xad\x15\x96\x27\x36\x82\xfc\x44\x2c\xa0\x80\ \x92\xa1\x95\x0c\x76\xe7\xbe\x69\xce\x04\x95\xf8\xff\x00\x64\xdb\ \x2c\x6f\x19\x1c\x6e\x18\xa5\xaa\x52\x4f\x7d\x0d\xd7\xa6\xaf\xd5\ \xf5\xdd\xfd\x32\xa6\xe8\x9f\x52\xb5\xa7\xeb\x98\xb6\x5e\xa2\xd8\ \xd3\x6e\x99\x34\x91\x0a\x63\x69\xd8\x87\xd6\x06\x7c\x35\xa4\x12\ \x12\xa2\x01\xc1\x18\xcf\x6c\x55\xcd\xab\x75\x1c\x4b\x4e\x9c\x9f\ \x78\x96\xef\x87\x1a\x1b\x0a\x79\xe2\x0e\x4e\xd4\x8c\x90\x3e\x4f\ \x61\xf3\x4c\xba\x8f\x4d\xb5\x31\xb4\xca\x8c\x86\x1e\x71\x0a\x0b\ \x09\x5b\x78\x21\x40\xf0\x52\x7d\xea\x17\xaa\xa0\xde\xae\x50\x95\ \x63\x93\x0a\x43\xcd\xc8\x50\x2e\x64\x8d\x84\x03\x9e\x7e\x38\xed\ \x54\xa9\x39\xc2\xfa\x12\xa8\xd1\xaf\x28\xb8\xbb\x5b\x7b\xfa\x44\ \x1f\xa7\x7a\xd6\xf9\x7e\x95\x37\x52\x5c\xe5\x45\x85\x69\x79\xd3\ \x96\x1d\x21\x02\x33\x7e\x87\x79\xef\xf3\xee\x7b\x55\xc5\xd3\x1d\ \x4d\x0e\xeb\x16\x74\xfb\x79\x2e\x43\x4b\xfe\x1a\x1d\x29\x20\x39\ \x81\xc9\x4e\x7b\x8a\x88\x41\xb0\x5b\xa2\x43\x4c\x79\x16\xd6\xa6\ \x25\x27\x62\x10\xe3\x23\xc3\x07\x19\xec\x46\x3f\x3a\x94\xd8\xee\ \x31\x23\xb2\xcc\x56\xd8\x69\xa1\xfd\x5a\x5b\x42\x40\x49\x23\xdb\ \x1d\xbf\xf2\xa4\x52\xa4\xe3\x2c\xcd\xdb\xb8\xd7\x8d\x95\x1a\x91\ \xb4\x23\xd9\xeb\xc4\xb2\xa1\xca\x6a\x42\x4f\xad\x6a\x95\x93\xca\ \x12\x0f\xb6\x7d\x69\x96\x14\x9f\x30\x52\x14\x38\x1c\xe3\xd4\x53\ \xba\x1d\x4a\x9b\xee\x49\x27\xb7\xb5\x6d\x52\xba\xb3\x38\x4e\x19\ \x5d\xc4\x92\x9b\xdc\x9c\x90\x01\x3e\x86\xa2\x77\x84\xa1\x93\xbd\ \x43\x6a\x42\x87\x73\x53\x07\x16\x08\x50\x52\x8a\x89\x3c\xfc\x54\ \x47\x54\xa9\x28\x8c\xe9\xc2\x31\x8f\x26\xef\x7f\x63\x59\xeb\x69\ \x1b\x97\x85\xef\x63\x9d\xfa\xca\xcf\xeb\x0e\xa3\xbb\x1b\xc4\x6c\ \x17\x22\x78\x1e\x13\x99\x0a\x2b\x09\xde\x95\x20\x8f\x5c\xff\x00\ \xe8\x45\x45\x2d\x37\x2f\x07\x5e\xda\xf4\xd8\xf0\x8b\x6c\x47\x57\ \x8a\x50\x80\x32\xf2\x93\x93\x9c\x13\x9c\x11\x8c\xf1\xce\x6a\x6f\ \x75\xfb\x15\xef\x5d\xc8\xfd\xa7\x88\x44\xa7\x1b\x43\x78\xf3\x95\ \xa1\x20\x00\x32\x3b\x8c\x8c\x11\xdf\x07\x8a\xa4\x2d\x17\x69\x0e\ \x75\x34\x4d\x52\x9b\x42\xd3\x39\x59\xc1\xe3\xef\x10\x7f\xf4\xaa\ \xe0\x9d\xe4\xdf\x61\xab\x1c\xbf\xf8\xf8\x5f\xed\xf4\x47\x71\x74\ \xb8\xa7\xec\x8d\x93\xc9\xe3\xbd\x5b\xb0\x16\x36\x00\x0f\xe7\x54\ \x4f\x4e\xe7\xa5\x2d\x60\x1f\xbb\xc8\xe6\xac\x2b\x66\xa3\xf0\xe7\ \xb6\x16\xad\xad\xab\x8e\xfc\x57\xb2\x51\x75\xa9\x29\x1e\x0e\x9d\ \x65\x07\x66\x4f\xb3\x8c\x67\xf9\x56\x32\x46\xe6\x17\x93\xdc\x11\ \xcd\x69\x6a\x63\x0b\x48\x58\x70\x24\x7d\x6b\x5c\xb9\x49\x52\x7c\ \x36\xb0\xaa\xca\xa1\x2c\xdb\x1b\x9c\xe3\x97\x71\x89\x9b\x58\x5b\ \xa5\xc9\x4e\x65\x21\x5e\x50\x73\x45\x3c\xb6\xd0\x43\x78\xee\x73\ \x45\x6a\x75\x5b\x7b\x99\x15\x18\xa5\xb1\x18\xe9\xf3\xad\x31\xa2\ \x20\xad\xc2\x9d\xbf\xb4\xe3\x1f\xf1\xaa\xa9\x1b\x0b\x43\xcd\x85\ \x21\x47\x18\xcf\x06\xab\x58\x93\x1c\x6f\x43\x5b\xa3\x34\xac\x29\ \x5b\xfd\x7b\x7e\xd1\x54\xe3\xa7\xf5\x22\xe2\x36\x23\xbe\x14\x52\ \x39\x0a\x35\x78\xd1\xbc\x2e\xb7\x15\x1a\xd6\xb2\x7b\x13\xb2\x0e\ \xd3\x9c\x1f\xad\x43\xb5\x0c\x58\xf2\xaf\x00\xad\xad\xdb\x79\xc7\ \xcd\x2e\x1a\x8d\xb9\x67\xc2\x8a\x09\x50\xe0\xd1\x1d\xa5\x29\x65\ \xc5\x11\xe2\x2b\xb9\xc5\x32\x94\x1c\x75\x65\x6a\xcd\x4b\x44\x55\ \xb7\x5d\x07\xa9\x57\xa7\x2f\x7a\x62\xd8\xfd\xa1\x16\xab\x85\xcf\ \xf5\x83\x4e\xbe\x56\x97\x9a\xcb\xa9\x78\xb5\xb4\x24\x82\x37\xa7\ \x85\x6e\xc8\x07\xb1\xa7\xf9\x3a\x5e\x6c\x5d\x67\x78\xbd\xb1\x64\ \xd3\x57\xa6\x6e\xfe\x13\x8e\x22\xea\x8c\x2e\x3b\x88\x46\xc2\x52\ \xaf\x0d\x7b\x92\x40\x49\xdb\xe5\xe7\x3c\xfa\x54\xd5\x6a\x6d\xbc\ \x85\x3a\xda\x48\x04\xe0\xab\x1c\x7b\xfd\x2b\xd2\xa4\x85\xa1\x2a\ \x52\x7c\xfc\x0f\x92\x39\xc0\xfc\x2a\x5d\x28\xbd\xc4\x25\x62\x35\ \xad\xba\x72\xad\x5d\xac\x6c\xd7\x8b\x73\xb0\x22\xda\x9b\x65\xb6\ \x6e\x91\xd5\xb9\x2b\x75\x2c\xb9\xe2\xb1\xb0\x24\x60\xe1\x79\x07\ \x24\x71\xef\xda\xa1\x37\xcd\x19\x2e\xcf\xac\x2e\xf3\x22\xd9\xec\ \x57\x56\xae\x05\xb5\xa9\x37\x24\x10\xb6\x16\x94\xed\x25\x27\x62\ \xf7\x24\x80\x38\xe3\x9c\xf3\x56\xe5\xa7\x50\xdb\x2d\xfa\xa2\x2d\ \x8a\x44\xd4\xb7\x2e\x5b\x4b\x75\xa6\x94\x71\x94\x20\xa4\x12\x4f\ \x61\xca\xd3\x8c\xf7\xe7\x1d\xa9\x46\xb0\x44\x34\xcc\x57\x8e\xa4\ \x23\x29\xca\x94\xae\x31\xf3\x9a\x4c\x16\x5a\x8e\x1c\xb7\x1f\x38\ \x46\x70\xe2\x2d\xef\xa9\x50\xdc\xf4\x8a\xaf\x2f\xea\x94\x49\x76\ \x3b\x30\xef\x36\xb8\xd0\xe3\xf8\x69\x25\x6c\xad\xa2\xa2\x14\x53\ \x80\x36\x82\x53\xc0\x3e\x87\xb5\x21\xbb\x58\x6f\x93\x26\xb7\x7a\ \xd4\x0e\x40\xdd\x6e\xb6\x48\x66\x33\x51\x14\xa5\x78\x8e\x38\x90\ \x16\xe1\x25\x23\x6f\x09\x18\x48\xcf\x7e\xf5\x65\x26\xda\xf1\x07\ \xec\xcb\x42\x9b\x3c\x82\x0f\x1f\x5a\xc5\x30\x43\xa8\xf1\xd6\xf3\ \x65\x19\xc0\x5e\xf1\x8c\xe7\xd0\xfd\x6b\x46\x48\x99\xf2\x95\xc7\ \x4c\x6c\xb7\x59\x76\x7d\x17\x2a\xee\xcc\x58\xb0\xac\xcc\x07\xd9\ \x65\xb5\xad\x4f\x3c\xef\x85\xb1\x25\xc0\x52\x9f\x0f\x68\x52\x8e\ \xd1\xbb\x24\x0e\x6b\xd6\x34\x6d\xf5\x3a\x7e\xd3\x6b\x0f\x43\x53\ \x90\xb5\x22\x6e\xce\x10\xb5\x6d\x2d\x07\xd4\xe6\x07\x97\xef\x61\ \x5d\x8e\x06\x7d\x6a\x6f\xac\xee\x28\xd2\xba\x6a\x4d\xe6\x42\x54\ \xf8\x8e\x5a\x0a\x61\x0a\x01\x67\xc4\x75\x2d\x03\xcf\xa6\x55\xfc\ \x2a\x45\x0d\x31\x23\x6e\x3e\x2a\x56\xb0\x76\xf0\x73\x83\xed\x50\ \xa1\x1d\x81\x45\x6c\x44\x9b\xe9\x44\xbb\xe3\x5a\xd6\x4c\xd9\x10\ \xd9\x4d\xed\xc8\x2f\xdb\xd4\xa0\x5c\xf0\x9c\x8e\x84\xff\x00\x5a\ \x92\x00\xda\x54\x9c\x10\x09\xca\x49\xec\x69\xca\xf3\xa6\x6e\x57\ \x3d\x1d\xa8\xac\x8c\xd8\x74\xa5\x8e\x5c\xf8\x2a\x8a\xd3\x96\xe2\ \xad\x8b\x24\x28\x12\xe1\xf0\x92\x42\x73\xb4\x81\x85\x63\x9e\x4f\ \x73\x65\x30\xeb\x66\xd0\x4b\x4a\x07\x1c\x1c\x73\x83\xfe\x8d\x44\ \xb4\x1e\xa3\x8d\xaa\x74\x6c\x0d\x48\xcc\x75\x45\x66\x62\x54\xb4\ \xa1\xd5\x02\x53\x85\x94\xe0\x9f\xc2\xb1\x2b\x4a\x4d\xb3\x6c\xa9\ \xc2\x09\x45\x73\x5e\xbf\x91\xa9\x1a\x4a\xe2\x35\x8e\x96\xbc\xaa\ \x44\x6f\x02\xd3\x6b\x7a\x1b\xe9\xde\xad\xea\x5a\xc3\x60\x14\x0d\ \xb8\x29\xf2\x1e\xe4\x7a\x71\x58\xf4\xc7\x4f\xdd\xf4\x8e\x89\x66\ \xc3\x76\x30\x5d\x66\xda\x85\x06\x24\x45\x71\x6b\x53\xa8\x2b\x52\ \x89\x52\x0a\x06\xd3\x82\x38\x05\x59\xe6\xa6\xe9\x04\x27\x3d\xa9\ \x93\x42\xea\x38\xda\xaf\x49\xc7\xd4\x0c\x30\xe4\x56\x5e\x53\xc9\ \xd8\xea\x81\x29\xf0\xdc\x5b\x64\x93\xdb\x19\x41\x3f\x8d\x32\xf6\ \x77\x2b\xc3\x8d\xfb\xff\x00\xa2\xbc\xb5\xe9\xb9\xba\xc6\x1e\xbd\ \x10\x56\x62\x7d\xb6\xf7\x0e\x5d\xb6\x44\xa6\x56\x86\x9e\x54\x74\ \x34\x79\x04\x05\x14\x12\x92\x9c\x81\xf2\x33\x8a\x9a\xdb\x34\xe6\ \xab\x6b\x58\xdd\xb5\x74\xc1\x63\x32\xa7\x5b\x19\x86\xdc\x24\xbe\ \xea\x9a\x6c\xb6\xb2\x4e\xe7\x0b\x60\xa8\x10\xa5\x1c\xed\x18\xe0\ \x63\xd6\x9d\xf5\x1d\xda\xdb\x60\xb6\x2a\xe7\x71\x96\x98\xd1\xc2\ \x90\xd8\x51\xe7\x2a\x5a\x82\x52\x00\xf5\xc9\x50\xfe\x75\xb5\x99\ \xaf\x3a\x93\xb1\xe4\xad\x27\x21\x25\x2a\xc8\x35\x4e\x0e\x77\x74\ \xc9\x8b\x8d\x3d\x1e\xff\x00\xdf\xdd\x95\xb5\xcb\xa7\x57\x27\x74\ \xee\xaf\xb6\x47\x55\xa2\xd0\xe5\xfe\x4c\x49\x11\xed\xf1\x16\xb5\ \xc3\x88\xb6\x16\x85\x93\xbb\x62\x4e\x5c\x28\xf3\x10\x81\xd8\x71\ \x57\x1d\xa5\x73\x5d\xb7\x34\xbb\x9b\x11\x98\x96\xa0\x7c\x46\xe3\ \xbc\x5d\x6d\x3c\x9c\x00\xa5\x25\x24\xf1\x8f\xdd\x14\xc4\x41\x27\ \x27\x93\xeb\x4f\xd6\xc5\x97\x23\x8f\x5c\x54\x56\xa4\xa1\x14\xd1\ \x7c\x33\x59\x9f\xaf\x5b\x89\xa5\x24\xb5\x21\x24\x7a\xf6\xa7\x78\ \xe7\x2c\xa7\xd6\x91\xcd\x6b\xc4\x6f\x3d\x88\xf5\xa5\x51\x01\x0c\ \xa7\xe9\x49\xa9\x2c\xd1\x46\xba\x6b\x2c\xd8\xd3\xa9\xe4\xa2\x34\ \x52\xb7\x15\x84\x81\xde\xab\x1d\x4f\x7b\x86\xa8\x25\x40\xad\xb0\ \xe0\xf2\xf8\xa8\x28\xdd\xff\x00\x6b\x15\x64\x6a\x14\x78\xaf\xa1\ \x2b\xfb\x83\x9a\xab\xba\xb3\xe1\xae\xd8\xea\x40\x68\xa8\x24\xed\ \x0b\x4e\xe0\x48\xf4\xc5\x6c\xa5\x25\x4e\x95\xd9\x86\xbe\xb5\x19\ \xcd\xda\xb6\xfb\x1a\xdd\xd5\xcb\x15\xd6\x42\x81\x87\x1e\x42\x1a\ \x90\x73\x82\xde\xf2\x41\x27\xe0\x12\x93\xf4\xae\xae\xb1\xdb\x90\ \x9b\x8a\x9c\x86\xe3\x8c\xa1\xd6\xf3\x2d\xb4\xab\xca\xb2\x7b\x1c\ \x7b\x90\x2b\xe7\xf6\xb6\xb9\x3f\x32\xec\xfc\x2b\x82\xd4\x70\xa2\ \x83\xea\xa4\x1c\xf0\x01\xf5\x1f\x35\xd4\x5f\xa2\x97\x58\x2d\xb7\ \xc8\x0d\xe9\x1d\x45\x31\x98\xb7\xe8\xa9\x4b\x71\xd4\xf3\x9b\x44\ \xd6\xd2\x36\x8c\x13\xdd\x60\x0e\xdd\xcf\xcf\x35\xe7\xab\x6b\x3c\ \xdc\x8f\x57\x83\x83\x86\x1d\x53\x4f\x5f\x5e\xbf\xa2\xde\xeb\x2e\ \x97\x7b\x57\x68\xa7\xed\x4c\x1c\x2d\x01\x4a\x6d\x0d\xaf\x6a\x95\ \x84\xe4\x00\x4f\x03\x90\x9e\x6b\x92\x93\x19\xbb\x73\xef\x5b\xe4\ \xb4\x4b\x81\x28\x54\x84\x2f\xca\x5a\x52\x07\x27\x38\xe7\x68\xc9\ \xf9\x27\xd6\xbb\x88\xa3\xc5\x5e\xe2\x46\x48\xda\x77\x77\xae\x48\ \xeb\x35\x85\x7a\x63\x5f\xcf\x43\xa9\x57\x85\x31\x2a\x53\x4a\x24\ \xa8\x39\x9c\x73\xcf\xb9\xdc\x08\xf4\xe7\xe2\xb9\xd8\x98\x38\xbc\ \xcb\x99\xd3\xe8\xea\x97\x83\xa2\xde\xda\xaf\xa9\x24\xd0\xf2\x57\ \xf6\x19\x31\x5d\x59\x40\x12\xfc\x45\x21\x44\xe4\x6e\x27\xca\xaf\ \x9c\x72\x40\xc7\x35\x65\xe9\xd2\x0b\x45\x09\x75\xc5\xa3\x76\x7d\ \x89\x1f\xe5\x55\x26\x88\x9c\xa9\x53\xdc\x5e\xc6\xc2\x6e\x4d\x26\ \x42\x80\x56\xe5\xf8\xa0\x04\x3b\xdf\xfb\xd9\xe2\xad\x9b\x11\x2d\ \x24\x2d\x40\x05\x27\x29\x20\x7f\x64\xfb\xfb\xd6\x5a\x6b\xac\x18\ \x84\x49\xe3\x24\x36\x85\x25\x38\xca\x8e\x4e\x07\x39\xcd\x28\x8c\ \x0a\xdb\x4a\x82\x46\x3b\x8f\xce\x91\xc5\xe4\x11\xb9\x58\x4e\x55\ \xbb\x07\x38\x22\x9c\x60\x92\x12\x12\xb4\x8e\x3d\xfb\x1c\xd6\xb4\ \x60\xbd\x85\xab\x05\xa6\x14\xb3\xf7\x12\x33\x4c\xec\xba\x23\x95\ \xcd\x77\xcf\x25\xc2\x43\x69\xfe\xc0\xc7\x6f\x83\xf3\x4f\xb2\xd1\ \xba\x1a\x53\xc9\x0a\x50\xdc\x3d\xc5\x31\xbe\x94\xf8\x86\x43\xdb\ \x90\x9c\x04\xa9\x27\xdf\xd0\x7d\x39\xef\x53\x2d\xef\xd8\x10\x77\ \x42\x37\x5c\x7e\x79\x4b\x89\x3b\x02\xd3\xc7\xb9\x1e\xf5\x93\x36\ \xf4\x85\x79\x80\xd8\x57\xc9\x2a\xf5\x1d\xbe\xbc\xd4\x57\x5d\xf5\ \x33\x4f\x69\x47\x4b\x32\x64\xa5\x52\xd6\x8f\x2a\x00\xe7\x1c\xfa\ \x0f\x4a\x68\xd2\x57\x4d\x5f\xad\xae\xf3\x6d\x50\xa3\xaa\xd0\x98\ \xad\x36\xf2\x95\x35\xa5\x00\x42\xf3\xb4\xa1\x39\x1e\xd4\x3a\xb0\ \x86\xb2\x7a\xf9\x9d\x28\x60\x2b\x3a\x5c\x59\x75\x61\xda\xcb\x2d\ \x86\xa0\x21\xc2\xd1\x90\xd2\x55\x8c\x95\x77\xcf\x34\xa9\x95\xc1\ \x53\xa1\x96\xe5\x0e\x33\xc6\x7b\xfe\x35\x03\xb2\x74\xc3\x5c\xc9\ \xba\xca\x1a\x83\x5a\x2e\x2a\x07\xf5\x62\x13\x0d\xe1\xc4\x9f\x5e\ \x47\x1f\x4e\x69\xce\xd1\xd2\xbd\x47\xfa\xee\x6b\x12\x75\xb3\x8b\ \x86\xd8\x49\x8e\x44\x54\x95\x9c\xe7\x3b\xfb\x0e\x38\xed\x5a\x21\ \x59\x3d\x14\x5f\xaf\x88\xba\x94\xb0\x91\xbd\xeb\xa7\x65\xd8\xfe\ \xc4\x95\xa6\x7c\x55\x9f\x09\xe6\xd6\x1b\x00\x10\x97\x33\xc6\x73\ \x9a\x45\x71\x88\xda\x9d\x54\x97\xd7\x1d\x21\x03\x81\xb8\xa4\x1f\ \xfc\xe9\x9e\x67\x4c\x75\x5f\xeb\x76\x58\x8d\xa8\x60\x3b\x15\x6d\ \xab\xc5\x71\xd8\xca\x4b\x89\xc7\x60\x36\xab\x9c\xd6\xa9\x9d\x20\ \xbf\xa6\x4c\x7f\xb3\x6a\xb4\x96\x94\xb2\x97\x52\x5a\x51\x50\x49\ \x07\xee\xe4\x91\xdf\xde\x87\x34\xd7\xba\xfe\x5f\x92\xb1\xf6\x44\ \xee\xeb\x2f\x93\x17\x07\x6d\xe1\x94\x25\xb7\x9b\x2d\x9e\x30\x55\ \xc2\xb8\xf7\xf7\xf9\xa6\xf7\xed\x8c\x78\x61\xe8\xea\x0a\x03\x27\ \x28\x19\x1c\xf7\xff\x00\x3c\xd3\x64\xfe\x9a\xeb\xe7\x6f\x2f\xc7\ \x81\xa9\x5a\x54\x36\x9a\x07\xc6\x75\x94\xf2\xb2\x78\x4e\xd0\x3b\ \x62\xaa\x88\x7d\x40\xbc\x58\xef\x8e\x5a\xaf\xa9\x11\xa5\xb6\xe1\ \x48\x09\x27\x6a\xfb\xe3\x8f\x91\x59\xe5\x56\x12\x79\x6c\xd3\xef\ \x47\x46\x86\x06\x38\x84\xde\x1e\xa2\x93\xec\xf1\xf1\xb1\x77\xd8\ \xe5\xba\xdb\xe9\x43\x99\xc0\x59\x0a\xf6\xed\x53\x0b\x73\x9e\x2b\ \x67\x1d\xfd\x88\xee\x2a\x07\xa4\x5d\x5d\xee\x3a\x1e\x4a\x02\x14\ \x51\xe2\x2d\x03\xb6\x3d\xbf\x1a\x96\xe9\x54\x38\xea\xc9\x42\x89\ \xf0\xcf\x23\x18\xdc\x08\xff\x00\x0a\xa4\x1b\x5a\x33\x97\x88\x86\ \x59\x34\xf7\x42\xa9\x6a\x48\x56\xd5\x70\x73\x9c\x0a\x85\xea\xb9\ \xa0\x45\x74\xab\x01\x09\x49\x25\x47\xd3\x15\x2f\xbc\x2d\xa4\x29\ \xd2\xb4\xe0\xa4\x77\x57\x63\x9a\xac\x7a\x93\x34\x43\xd3\x13\x9d\ \x5a\xc2\x56\x52\x4b\x64\x9f\x55\x70\x08\xf4\x3c\x9a\x4e\x22\x4e\ \xd6\x2b\x45\x5e\x48\xab\xba\x6c\xfc\x4b\x9d\xfd\x53\xfc\x35\x96\ \xa2\x25\xdb\xa3\x8f\xa9\x39\x49\x58\xdd\x8f\x4e\x78\xc8\xfc\x2b\ \x9b\x2d\xab\x4b\x97\xf5\xaf\x79\xfd\xa3\x8a\x70\x1e\xdd\xce\x45\ \x5c\x1a\xab\x57\xc2\xb6\x69\x39\xda\x77\x4a\x2f\xed\x17\xcb\x8c\ \x77\xff\x00\x59\xba\xda\xbc\x36\x58\x64\x27\x7b\xbb\x72\x7e\xf9\ \x48\xc6\xd1\xdb\xd3\x92\x2a\x97\x69\x6f\xb7\xe1\xc9\x79\x95\xe1\ \x01\x28\x0a\x50\xc2\x7b\x70\x3f\x2e\x6b\x6e\x06\x8b\x50\x93\xed\ \x27\xa4\x2b\xc5\xd5\x82\xff\x00\x5d\xce\xab\xd1\x3a\xa3\xec\xf6\ \x98\x2f\x3a\xb0\x15\x25\xa4\xed\xc1\xfb\xd8\x1c\x91\x52\xc9\xfa\ \xb5\x94\x4e\xb2\x41\x65\x64\xc8\x9d\x28\x20\x25\x3d\xc3\x69\xe5\ \x4b\x23\xdb\xd2\xb9\x3e\xcd\xad\x1e\xb7\x5b\x7c\x36\xd2\x65\xcd\ \x07\x6a\x1c\x5e\x4a\x50\x8c\xf0\x94\x8f\x41\x9c\xf1\xc7\x3e\xf5\ \x62\xf4\x9e\xe1\x24\xdc\x57\x74\x92\x97\x6e\x37\xd9\x3e\x44\x04\ \x72\x23\xb6\x0f\x61\xe8\x9f\xc6\xb7\x55\xc5\x55\xa5\x45\x41\x7a\ \xfc\x1e\x62\x78\x05\x79\x54\xde\x28\xeb\xeb\x54\xe5\x3e\x86\xd8\ \x4a\xce\x4e\x33\xcf\x02\xa6\x76\xf4\x06\x9a\x4e\x72\x4e\x39\x26\ \xaa\xbe\x9d\x6f\x0e\x0f\x1d\xd4\xad\xce\xe7\x6f\x61\xf4\xab\x3e\ \x2b\xa9\xc6\x49\xf4\x1d\xf9\xae\xec\x33\x4a\x8c\x6e\x72\xe9\x68\ \xf5\x16\x49\x92\x96\x5a\x0a\x3c\x9a\x29\x39\x47\xda\x9c\x39\x00\ \xa5\x23\x91\xef\x45\x11\x8d\x34\xba\xc3\xdc\xaa\x37\x78\x95\x3d\ \xa1\xc5\x39\x68\x82\x33\x84\xa0\x2f\x1f\xfe\xe2\xa9\x44\x8d\xbe\ \x63\xb7\x1c\x7d\x4f\xfa\xef\x49\x74\xf0\x26\xcf\x18\x0e\xf8\x73\ \xd3\xfe\x31\x54\xaa\x50\xdc\x84\x8c\xe4\x9f\xe3\x5a\xa1\xee\xa3\ \x0a\xd8\x90\x69\x48\xa1\xb8\xc5\xcd\x99\x2a\xef\x4e\xef\xb9\xe1\ \x34\xa5\x9c\x80\x3b\x7c\xd6\xab\x33\x61\x10\x90\x12\x79\x29\xac\ \x24\x61\xc9\x29\x63\x90\x3b\x9e\x3b\x55\x89\x39\xeb\x52\x3d\x6f\ \x93\xa3\x75\x5d\xc6\xed\xe0\x0d\x46\x35\x1f\x84\x87\x16\x47\x8e\ \x94\xf8\xe8\x4a\x5b\x49\xfb\xde\x1f\x81\x9c\x0e\xc4\x66\xa6\xb7\ \x88\xf6\x59\xfa\x8b\xa8\xee\x6a\x94\xc7\x5b\xd0\x22\x34\x61\x2a\ \x47\x78\xd1\xfc\x00\xa0\xb6\x89\xfb\xa4\xb9\x92\x54\x9e\x77\x00\ \x3d\x05\x48\xf5\x2f\x4d\xdb\xd4\x17\x55\x29\xf9\xea\x79\xa5\x3c\ \x97\x1c\x69\x31\x59\x42\xd6\x10\xa0\xa4\xb6\x5d\x08\xdc\x50\x14\ \x91\xc6\x73\xc7\x7a\x95\x4b\xd2\xd1\x66\xb8\xd4\x9b\xdd\xaa\x0c\ \xa7\x18\xe5\xa7\x1e\x8e\x95\xa9\xbf\xf9\x24\x8e\x3b\xfa\x56\x7c\ \xba\xea\x51\x52\x93\xd6\xc5\x6f\xa1\x61\xb3\x73\xea\x56\x86\x95\ \xa9\x61\x44\x7e\x63\xba\x4d\x4e\xc9\x54\x96\x92\x54\xb7\x53\xe1\ \x61\x4a\xc8\xe5\x63\x93\xf1\xcd\x48\xfa\xcf\x74\x87\x2a\xf5\x66\ \xb3\xb9\x68\xb7\xdc\x9f\xb8\x4a\x52\x23\xfd\xbf\x1f\x67\x65\x48\ \x6d\x4a\x2b\x3c\x1f\x36\x32\x12\x07\x24\x9e\xe2\xa4\x37\xb4\xda\ \x27\xa1\x86\xe4\x5a\x60\x4c\x72\x32\x8a\xd9\x72\x44\x74\x38\x5a\ \x51\xee\x50\x54\x0e\xd3\xf2\x29\x04\xfb\x6c\x0b\xa4\x6f\x06\xe9\ \x06\x2c\xd6\x77\x6e\xf0\xe4\x34\x97\x13\xb8\x76\x38\x50\x23\x35\ \x31\xa4\xd4\x9c\x86\x37\x68\x64\x44\x2f\xa1\xd2\x25\x33\xa7\x2e\ \xec\xb4\xeb\x4a\x8f\x1a\xf9\x31\x96\x10\xca\x8f\x82\x86\xc2\xf2\ \x12\xdf\xf7\x39\xe3\xe0\xd4\x66\xe7\x19\xcb\x8c\x2b\xb7\x4e\xa2\ \xa9\xc4\x3d\x6d\xb8\xcf\xbc\x32\x1b\x27\x29\x6f\xc1\x0e\xc7\xfc\ \x3c\x69\x23\x8f\x5f\x0f\xeb\x57\x0c\x68\x71\x62\x21\x48\x8b\x19\ \x98\xe9\x70\x82\xb4\xb6\xd8\x48\x2a\xc0\x19\x38\xf8\x00\x67\xe0\ \x52\xad\x3b\x6a\xb7\xa6\x74\x8b\x92\x61\xc7\x13\x1d\x40\x6d\xc9\ \x01\xa4\xf8\x8a\x48\xec\x92\xae\xe4\x0f\x6a\xb4\xa9\xf5\x52\x65\ \x14\x2f\x64\x51\xfa\xda\xe4\x8d\x5b\xa0\x75\x76\xae\x6c\xe6\x3c\ \xe3\x6b\x84\xc1\x07\x90\x84\x38\xca\xd6\x07\xb7\xed\x5e\x70\x7d\ \x51\x4b\xb5\x94\x25\x69\xed\x51\xaa\xa2\xe9\x88\xe8\x80\x4e\x8c\ \x12\x7c\x28\xa8\xd8\x0b\x89\x79\x68\xf1\x00\x1f\xbc\x10\x3b\xf7\ \xe2\xad\x56\x74\xed\x8d\x98\x8e\x5a\x51\x68\x80\x9b\x76\xed\xc6\ \x20\x8c\x8f\x07\x21\x41\x40\xec\xc6\xdc\xee\x00\xf6\xef\xcd\x2f\ \x4c\x18\x5f\xac\x0d\xc0\xc4\x8f\xf6\xc2\xc8\x64\xbf\xe1\x8f\x10\ \xb6\x0e\x42\x37\x63\x3b\x72\x49\xc6\x71\x93\x51\xc2\x2a\xe1\x72\ \x17\xa4\x9a\xb2\xc2\xd7\x7a\x05\x8d\x26\x88\xcc\xa6\x6d\xb2\x51\ \xb8\x88\xa7\x1f\x68\x8e\x1a\x4a\x9b\x71\xdc\x7d\xe5\x78\xa4\x61\ \x4a\xe4\x95\x2a\xa1\x1a\x11\xb9\x73\x6c\x9d\x32\xb4\xbb\x0e\xd9\ \x36\x03\xb6\xd9\xeb\x6a\x3d\xcd\x65\x31\xde\x90\x1d\xc7\x20\x25\ \x5b\x96\x94\x12\x52\x08\xf5\x26\xae\xcb\x45\xaa\xd9\x68\x92\xec\ \xab\x55\xb2\x14\x27\x9e\x20\xba\xa8\xec\x25\xb2\xe1\xfe\xf1\x03\ \x9f\xc6\x97\xc7\xb3\x69\xfb\x85\xa9\xbb\x13\xd6\x0b\x59\xb7\xb5\ \xfd\x54\x43\x11\x05\x94\x77\xec\x8c\x6d\x1d\xcf\x61\xea\x69\x33\ \xa2\xe2\xdc\xb9\x0e\x8c\x73\x59\x7a\xe5\xf6\x1b\xfa\x63\x6a\x9d\ \x60\xd0\xf1\x2d\x17\x29\x91\xa5\xb9\x1c\xba\x96\xdc\x8e\xe2\x96\ \x80\xd1\x71\x45\x08\x0a\x57\x27\x68\x21\x3f\xf5\x6a\xa0\xd0\x4d\ \xb5\x22\xc3\xd3\x28\x17\x64\xa1\xdb\x1c\xbb\x8d\xdb\xc7\x65\xee\ \x59\x75\xf4\xba\xe9\x61\x2b\x1d\x8f\x3b\xc8\x07\x82\x40\xae\x88\ \x8b\xa7\xa3\x43\x88\x86\x22\x34\xd4\x76\x1b\xe1\xb6\x9a\x40\x4a\ \x12\x3e\x00\xe0\x73\x49\x17\xa7\xec\x66\xc6\x6c\xa6\xcd\x6e\xfd\ \x5c\x92\x4f\xd9\x3e\xcc\x8f\x07\x24\x95\x13\xb3\x1b\x79\x24\x93\ \xc7\x72\x4d\x2f\x34\x5f\xba\xc7\xcb\x0f\x2d\x2f\xa5\xbf\x05\x0b\ \xa9\x63\x43\x3a\x37\x56\xc4\x61\x98\xee\xd8\x60\xeb\x08\x88\xb7\ \x82\x90\xa6\xd8\xca\xd9\xf1\x90\xde\x78\x4a\x02\x94\xa1\x81\xc0\ \xc9\x15\x7a\xa6\x14\x48\x28\x6d\x88\x2c\x31\x1a\x3a\x01\x4a\x1a\ \x65\x01\x28\x4f\x3c\x80\x07\x03\x9a\xdb\x1e\xd1\x69\x55\x98\xd9\ \xd5\x6c\x82\x6d\xc5\x3b\x0c\x42\xc2\x3c\x12\x33\x9c\x6c\xc6\xdc\ \x67\xe2\xb2\x72\x0c\x48\x10\x99\x89\x06\x2b\x11\x23\x34\x36\xb6\ \xd3\x2d\x84\x21\x03\xd8\x24\x70\x2a\xd4\xfa\xb3\x21\x52\xb2\xb9\ \x8e\xd4\x91\x4e\x56\x73\x84\x28\x7a\x53\x7a\x53\xe5\x19\xa7\x1b\ \x42\x78\x55\x4d\x67\xd4\x63\xa8\xae\xba\x15\xca\x21\x2d\x13\xfc\ \x6b\x7c\x70\x7c\x04\xe7\xeb\x9a\x4d\x30\xf9\x42\x7d\xcd\x2b\x4a\ \x7f\x60\x12\x38\xe2\xb1\x4b\xdd\x46\xd8\xfb\xcc\x88\xeb\x46\xae\ \xd3\x11\xe1\x5a\xe4\x47\x87\xce\x16\xfb\xa8\x2b\xda\x3f\xba\x3d\ \xfe\xb5\x51\xf5\x36\xd8\xf7\xea\x77\x23\xae\x4c\xa9\xea\xda\x77\ \x2b\x21\x0a\x5f\xc0\x20\x60\x55\xed\x75\x64\xae\x31\x6d\x23\x19\ \xe4\x9a\x84\x6a\x6b\x62\x1c\x86\xa1\xb3\x3c\x56\xc8\xae\x25\x2c\ \xa8\xc3\x56\x0f\x3d\xcf\x9f\x7d\x44\xb4\x48\x62\xe0\xf3\xe6\xd9\ \x2e\x3a\x4a\xb1\x87\xdd\x4b\x8a\x19\xf9\x00\x1f\x4a\x85\x38\x95\ \x15\x01\xe7\x42\xc7\x21\x47\x23\x9f\xf5\xeb\x5d\x45\xd6\x2b\x3b\ \xa9\x87\x39\x29\x04\xe5\x95\x29\x3c\x76\x29\x1b\x87\xf2\xae\x5f\ \x59\x90\xb7\x08\x5b\x8b\x21\x4a\xc0\xca\xb8\x15\xcc\x95\x19\x52\ \x76\x91\xd6\xa7\x5d\x56\x85\xd2\xd5\x16\x2e\x87\xeb\xc7\x54\xb4\ \x7a\x5a\x8f\x13\x50\xb9\x70\x88\xd8\xc2\x63\x5c\xd0\x24\x20\x0f\ \x60\xa5\x79\xc0\xf8\x0a\x15\x2d\xbf\x75\xe9\x7d\x44\x81\x1e\xd1\ \xa9\xf4\xfb\x11\x2e\x09\x75\x02\x34\xd8\x6e\xa8\x21\x27\x70\xdd\ \xb9\x0a\xc9\xec\x38\xc1\xaa\x42\x42\x1a\xd8\x95\x36\xa4\x9e\x3b\ \x81\xdc\xe3\xd6\x93\xef\x53\x4b\x0a\x6d\x5e\x1a\xb7\x02\x0f\xaa\ \x48\xe4\x7f\x1a\x44\xf0\xf4\xea\x2d\xac\x69\x86\x2a\xa5\x29\xa7\ \x7b\xfa\xed\x3a\x67\xa6\x45\x2f\x6a\x47\xd8\x43\xe8\x41\x8d\xbc\ \x84\xf0\x0b\x4e\x28\x85\x67\x8e\x30\xa3\x93\xb7\xd3\x15\x7f\x59\ \x10\x50\xd8\x04\x27\x05\x1b\xbb\xf2\xa5\x1a\xe5\x2e\x83\xc8\x4c\ \xfb\xf1\xb8\xc8\x79\x6d\x36\xb4\x12\xf3\x69\xe4\x15\x8e\x0a\x86\ \x7d\x87\x38\xf8\xae\xa5\xd3\x24\x22\x33\x7e\x33\xbb\xbc\x4f\x38\ \xcf\xb6\x3f\xca\xb8\xb2\x86\x4a\xb9\x4e\xd5\x49\xf1\x20\xa4\xb6\ \x25\x50\x0a\xca\x96\x16\x52\xb5\x63\x00\x03\xda\x97\x46\x52\x10\ \xb1\xfb\x5d\xe1\x7c\xe0\xfc\x7b\x53\x5c\x22\xd2\xdd\x29\x28\x29\ \x46\xd0\x06\x13\x80\x41\xe7\x03\xf9\xd2\x97\x4a\x9b\x53\x7e\x1b\ \x5b\x92\xa3\xb4\x2f\x3c\x53\x91\x85\xad\x49\x2b\x23\xc4\x8c\x53\ \xc8\x23\x04\x53\x25\xf9\x97\x14\xd1\x4b\x27\x6a\xd2\xad\xe8\x1e\ \x83\xde\x97\xdb\x24\x00\xda\x71\xb4\x92\x39\xc1\xfb\xd5\xb6\x72\ \x42\xd4\xac\xa7\xb6\x3e\xa6\x99\x6b\xab\x95\x83\x71\x91\x46\x4e\ \xe9\xb5\x82\xdd\xaf\xef\x9a\xbb\x53\xb5\x3a\xe9\x0e\xe7\x19\x5e\ \x24\x65\xb4\x1c\x4b\x3c\x64\x84\x6d\xe5\x3f\x74\x04\xe3\xb6\x69\ \xce\x77\xe9\x2d\xd3\xb8\x71\xac\x1f\xab\x2d\xb7\x6b\x95\xd5\x6c\ \x84\xcd\x86\xcc\x52\x87\xa0\x36\x13\x85\x21\xd2\xb0\x01\x21\x40\ \x70\x32\x3b\x9c\xf2\x33\x69\x49\x6d\x0e\xb4\xa6\xdc\x47\x88\x95\ \x27\x18\x20\x62\xab\xed\x53\xd3\xf6\x1d\x92\x6e\x16\xc0\x84\xaf\ \xb1\x49\x47\x21\x3e\xa9\x04\x73\x8f\x8a\x74\x54\x5d\xf9\x5c\xdf\ \x4e\x34\x71\x35\x23\xc7\x93\x49\x7c\xbf\x17\x2b\xab\x87\x5e\x3a\ \xd4\xbb\xbc\xfb\xed\x93\x42\xda\xcd\x8e\x42\x52\xd4\x18\x92\x9b\ \x5b\x8e\xb5\x8c\xe1\x64\xa0\xa4\x92\xac\xf2\x31\x8e\x06\x3b\x12\ \x61\x8c\x7e\x92\xdd\x75\xd2\xb2\xa7\x4e\xbf\xd9\x2d\xf3\x1a\x98\ \x50\x19\x44\xcb\x72\xda\x6e\x36\xdc\xf9\x5b\xd8\x52\x48\x39\xe7\ \x71\x51\xe0\x73\xef\x74\x5b\x6c\x17\x96\x96\xd2\x90\xeb\xe8\x2a\ \x07\x87\x8e\x43\x7c\xe0\x10\x78\xc5\x2e\x9f\x66\xbb\x86\xca\x27\ \xc0\xb7\xdd\x5b\x20\x28\x87\xd9\x2a\x42\xbb\xfa\x03\xc6\x31\x4f\ \x8d\x24\xb5\x5e\xbc\xcd\x18\x8c\x0e\x0d\xbc\xb0\xd1\xf8\xaf\xaa\ \xfa\x94\x13\x1f\xa5\x47\x5a\x2e\x17\xf6\x6f\x31\x2d\x16\x43\x16\ \x33\x2b\x4a\xa1\x22\x0b\x85\x85\xa5\x58\xf3\xac\xef\xdf\x91\x8e\ \x08\x50\x1c\x9e\x0e\x6b\x46\xbd\xfd\x21\xfa\xb9\xaf\xf4\xd3\xba\ \x61\x16\x9b\x55\xac\xc9\x79\xa5\xfd\xa2\xd8\x97\xdb\x92\x14\x85\ \x85\xa4\x21\x45\xc3\xb7\xcc\x91\xc8\x19\xab\xd9\x36\x7b\x92\x98\ \x71\xa8\xac\xc1\xb4\x43\x3c\x2d\xa8\x51\x40\x04\x1f\x7d\xd9\xa6\ \xf7\xf4\xc4\x25\x02\x5b\x33\x14\xe2\x70\x12\x1b\x09\x4e\x4f\xb8\ \x20\x70\x6a\x5c\x5d\xbd\x7d\xcb\x51\xe8\xbc\x25\xba\xed\xdf\xb9\ \xaf\xb6\x9f\x32\xb4\xd1\x9f\xa5\x06\xba\xd3\xd3\x05\x83\x5a\xdb\ \x5f\xb9\xcc\x5b\x69\x6d\xd5\xb4\xca\x03\xe1\x40\x79\x54\x02\x78\ \x59\x23\x04\xf6\xe6\xa5\xd3\xe0\x5a\xfa\x99\x7a\x87\x76\x4d\x96\ \x7c\x6c\x38\x95\x7e\xdd\x92\xca\xca\x10\x90\x84\xa5\x5e\xc5\x58\ \x2a\xf8\xc8\xa9\x1e\x95\xd1\xad\xb7\x72\x33\x1f\x84\xd2\x16\x95\ \x79\x5f\x71\x01\x4f\x2d\x3f\xd9\x2a\x3e\x61\xef\xed\x53\xf8\xad\ \xa1\x0d\x25\x96\x5b\x28\x1d\xb7\x7a\x8c\x7a\xd6\x4c\xb0\x84\xae\ \xbe\xeb\xe1\xd9\xfc\x04\xb8\x78\x4a\xad\xd3\x77\x7c\x9a\xd3\xe7\ \x6d\xdf\xcb\x53\x56\x9c\xb4\xa6\xd0\x5c\x43\x28\xfb\x36\xe6\xc3\ \x6d\xa0\x2b\x77\x03\xb7\x3e\xf5\x2a\xb3\x30\xdc\x56\xde\x53\x79\ \x4a\x49\xce\x7e\x69\x14\x64\xee\x71\x03\x68\x0e\x01\x8e\x7b\x1f\ \x6a\x5f\x3d\xd4\xb5\x04\x10\xa1\x85\x63\x27\x3e\x94\xb7\x6b\xdc\ \xe5\xd6\xa9\x29\xbd\x77\x64\x67\x54\x3e\xa7\x0e\x12\x40\x2e\x2c\ \x20\x7d\x3b\xf0\x6a\xa3\xeb\xec\xc8\xc8\xd2\xef\xc4\x53\x85\x0d\ \x17\x1a\x42\x54\x9e\x4f\x0a\xdc\x4f\xc0\xc0\x3f\x95\x59\x12\x65\ \xa5\xc9\x6e\x28\x20\x29\xb6\x12\xa2\x94\xf7\xc9\xf7\x1f\x87\xa5\ \x50\x5f\xa4\xad\xd7\xc2\x8d\x11\x90\xea\x52\x14\xf9\x52\xd4\x39\ \x07\x00\x0e\xdf\x88\x35\x86\x5d\x79\xa4\xb9\xb3\x4d\x15\x95\xdd\ \xf2\x29\x3d\x51\x01\xb5\x6a\x2b\xbb\x61\x84\x15\xc9\x96\x0a\x48\ \x40\x3e\x12\x42\xf2\xad\xbe\xd9\x38\xc7\xba\x6a\x51\x1a\xde\xe4\ \xad\x04\x34\x9c\x87\x12\xa7\xe7\x4a\x52\xe1\xf8\x80\x00\xb9\x03\ \x09\x46\xd5\xfa\x03\x94\xa7\x9e\xc4\x1c\xf0\x6a\x2e\xdc\xa6\xe4\ \x33\x35\xf4\xa5\x68\x2e\xb9\x90\x47\x00\x1d\xaa\xc2\x7f\x3d\xbf\ \x95\x48\x27\xdc\x1c\x77\xf5\x54\x64\x04\xb9\x1d\x69\x42\xdb\xf7\ \x4a\x82\x48\x2a\x1f\x50\x8e\x7e\x41\xae\x83\x8d\x49\xa4\xbf\xd6\ \xc2\xe6\xe9\x53\x4d\xda\xf7\x4f\xee\x57\x96\xc9\x42\xd5\x39\xf8\ \xd7\x1b\x72\x64\x01\x96\x9d\x6d\x44\xa1\xc4\x28\x1f\xdd\x50\xec\ \x41\xfa\x8f\x71\x56\x7d\x87\xa8\x71\xd9\x65\x98\xd1\x6e\x0b\x43\ \x28\x40\x4e\xc7\xe1\xa5\x05\x27\xea\xd9\x19\xfa\xe2\xa3\xd7\x1d\ \x2e\xbb\xea\x95\x24\x2c\xb5\x39\x5d\xd4\xae\xce\x9f\x93\xef\xf3\ \xeb\xeb\x5a\x6c\x5a\x1a\xe6\x66\x04\xce\x2b\x8a\xd8\xfd\xe5\x23\ \x3f\x85\x6d\xc5\xd2\xa7\x17\x9e\x5b\x9c\x9c\x3c\x95\x78\x70\xe5\ \x6b\x17\xde\x84\xea\x4d\xbe\x1b\x6a\x91\x26\x78\x53\x68\x1c\x9d\ \x87\xf8\x0e\x6a\xcc\xb3\xf5\x6a\xcb\x37\xc3\x69\x13\x52\xb7\x1c\ \xc0\x65\x86\x92\x5c\x75\x7e\xde\x54\xe7\x68\xf9\x56\x2a\x91\xd1\ \xdd\x3f\xd3\x72\x5c\x4c\x6b\x83\xd2\x66\x36\x4f\xdc\x6b\xf6\x40\ \x9f\x92\x39\x35\xd0\x5a\x1f\x4e\x59\x2c\x50\x50\xcd\x92\xcf\x12\ \x0a\x55\x8c\xa9\xb4\x0d\xea\xfa\xa8\xf2\x7f\x3a\xac\x31\x78\xa7\ \x68\xd3\x8b\x39\x18\xaa\x58\x58\x36\xa1\x26\xc9\xf6\x97\x93\x2a\ \x4c\x60\xf3\xad\x96\xc2\xb9\x09\x3d\xe8\xa7\x1b\x5b\x78\x8e\xca\ \x07\x07\xf9\xd1\x5d\xbc\xce\xcb\x3e\xe2\xe9\xc1\xa8\x95\x8d\x91\ \xb0\xd5\x92\x13\x84\x67\x21\xc3\xff\x00\xf7\x15\x5b\xa4\xa0\xee\ \x40\xe0\x80\x72\x69\x7c\x08\xa5\x5a\x1e\xdb\x29\x00\x12\x9f\x13\ \x38\x1f\xf1\x8a\xa6\xf7\x54\x56\x94\xac\x80\x30\x73\xc0\xad\xd4\ \xdd\xe0\x8c\x0d\x58\x99\xdb\x49\x4c\x26\xc9\x27\x84\xf1\xc7\x15\ \xaa\x18\xdd\x31\xc7\xb3\x9c\x71\xc8\xe4\x57\x96\x97\x02\xed\xc9\ \x3b\x8e\x40\xe4\x66\x8b\x77\x09\x77\x18\x3e\x6c\x7c\xd5\x80\x8a\ \x33\xd4\x9b\x85\xb2\xdf\xa8\x35\x08\xd3\x08\x95\x6b\xb1\x5d\xff\ \x00\x56\xcb\x58\x9b\xb5\xe5\xa8\xb8\x94\x05\x34\x8d\x98\x57\xf5\ \x8d\x93\xb9\x49\xee\x7d\xb3\x4f\x57\xde\xa2\x49\x82\xbd\x4b\x6d\ \xd4\x76\x96\x20\x3f\x67\xb6\xa2\xe4\x55\x12\x59\x7d\x0e\xb4\xbd\ \xc3\x6e\x4a\x11\x85\x85\x27\x6f\x6c\x1c\x83\xc5\x37\xbd\xd3\x8b\ \xdc\xae\x9b\xeb\x2b\x23\x72\xad\xc9\x95\x7e\xd4\x29\xba\x45\x52\ \x9c\x58\x42\x1a\x0e\xc7\x56\xd5\x9d\xb9\x0a\xc3\x2a\xe0\x02\x39\ \x1c\xf7\xc2\x8d\x5d\xa1\xdf\xbe\x6a\x2d\x53\x3e\x64\xa6\x5b\xb7\ \x5e\x6c\x4d\xdb\x1b\xd8\x49\x75\xb7\x12\xb5\xab\x79\x49\x18\xc0\ \xdc\x08\xe7\x9c\x7a\x57\x36\xf2\x95\x4c\xdd\x86\x9f\xdd\x85\x3b\ \x76\xaf\xbf\xe0\x8d\x5a\xb5\x35\xc0\xdf\xad\x96\x9b\xe5\x99\xb8\ \x2b\xbb\x30\xb7\xa1\xa9\x99\x5e\x36\x0a\x00\x52\x9b\x73\x28\x4e\ \x15\xb4\xe7\x23\x20\xf3\xcf\x19\xa6\xfb\x37\x51\x26\x49\xd1\xcc\ \x6a\x69\x36\x16\xe3\xc7\x9a\xa6\x23\xc0\x6c\xcc\x1b\xe4\x48\x71\ \x7b\x08\x27\x6e\x10\x80\xac\xf9\x8e\x4e\x01\x38\xf4\xa7\x96\x34\ \x5e\xa5\x93\x7f\xb3\x5e\xaf\x92\x2d\x89\x4d\x9a\x3b\x88\x60\x44\ \x52\xd4\x5f\x71\xc4\x04\x17\x14\x14\x91\xb0\x6d\x07\xca\x37\x7d\ \xe3\xcd\x31\x40\xe9\xc5\xd9\x7d\x2b\xb4\x69\x79\x2e\xc1\x54\xfb\ \x5b\xe8\x92\xda\xd4\x92\xe4\x75\xad\x0e\x15\x84\xa8\x10\x0a\x90\ \x41\x20\xf1\xeb\xeb\xeb\xba\xf2\x7b\x18\xda\x91\x27\xd2\xba\x99\ \x77\x69\xd7\x6b\x5c\xb8\xf1\xe3\xcf\xb6\x38\xda\x5d\x4c\x79\x1e\ \x33\x4e\x21\xc4\xee\x42\xd2\xad\xa9\x3c\xf2\x30\x47\x04\x1e\xf4\ \xcd\x17\x57\x3d\xa5\xee\x1d\x43\xb9\x4d\x82\xf3\xdf\xaa\x53\x6f\ \x77\xc3\x4c\xd5\x2d\x0b\x69\xcd\xc9\x1b\x10\xa4\x80\xda\xb6\xf2\ \x40\xc8\x27\xd7\xd6\xa5\xda\x27\x4d\xbd\x00\x48\x76\x65\x96\xc9\ \x6c\x52\xca\x70\x8b\x6a\xb7\x05\x81\x9e\x54\x7c\x34\x76\xc9\xc7\ \x1c\x64\xd4\x7f\x59\xe8\x0b\xcd\xe7\xfa\x7e\x88\x4f\xc0\x48\xd4\ \x31\xa0\x35\x13\xc5\x5a\xc7\x86\x58\xce\xf2\xe6\x12\x70\x0e\x78\ \xc6\x7e\x71\x54\xa8\xdb\x8e\x85\xad\x24\x93\x5e\xb4\x62\xa7\xf5\ \x45\xe9\x8d\x51\x36\xc7\x70\xb2\x43\x89\x70\xfd\x54\x6e\x71\x76\ \x4c\x53\xad\x94\x85\x6c\x28\x70\xf8\x69\x29\x50\x51\x1d\x81\x18\ \x3c\x76\xa6\x1d\x25\xad\xef\x4d\xe8\x3d\x39\x36\xee\xcc\x19\x97\ \x1b\xd3\x88\x66\x17\xfb\x41\x6c\x2c\x90\xa5\x2d\x6e\x9d\x98\x42\ \x52\x13\xfb\xa1\x5e\x82\xa7\x57\x0d\x2b\x2e\xe1\xd4\x8f\xe9\x1a\ \xde\x8e\x88\x46\xc0\xe5\xb0\xa3\x71\xf1\x43\xaa\x79\x2b\xdd\x8c\ \x63\x6e\x01\xf5\xce\x7d\x3d\x6a\x14\xd7\x4b\xef\xc9\xd2\x5a\x7e\ \xd5\x2c\xd9\x1f\x93\xa7\xa4\x05\xc6\x0b\x5a\xdd\x62\x5b\x78\x52\ \x54\x97\x12\x50\x36\x12\x95\x0c\x63\x7e\x08\xa8\x53\x90\x4e\x13\ \x4e\xe8\x5b\x23\xa9\x2e\x33\x64\x2f\xfe\xa6\x4b\xd7\x16\xef\x89\ \xb2\xbb\x11\x99\x61\x49\x53\xaa\x4e\x50\xa4\x2c\x81\x94\xa8\x94\ \x72\x40\xc6\x4f\xb5\x38\x7f\x4d\xae\xb0\xae\x2e\xc1\x6a\xcf\x6e\ \x7a\xe9\x02\xd9\xfa\xc6\xe0\xd2\xee\x45\xb6\xd0\x32\xad\xad\x36\ \xaf\x0c\xef\x59\xda\x4f\x21\x23\xdc\xf3\x49\xee\x5a\x1a\xeb\x72\ \x85\x65\x8e\xd5\xba\xc3\x67\x5c\x4b\xec\x5b\x8b\xcd\x44\x52\xbc\ \x35\x36\xd2\xb2\xac\x10\xda\x77\x2f\xd0\x65\x20\x76\xe4\x53\xad\ \xe7\x42\x3a\xde\xb9\x5e\xa5\x85\x6b\xb0\xdd\xd1\x2e\x1a\x22\xc8\ \x89\x76\x04\x04\x29\x0a\x25\x2e\x36\xa0\xda\xfd\x14\x41\x4e\x06\ \x70\x39\x15\x15\x27\x24\xad\x72\xd0\x84\xef\x71\xda\x27\x53\x1c\ \xbc\x5e\xad\x76\x7d\x39\x6e\x80\xeb\xf3\xec\xed\x5d\x9a\x55\xca\ \xe0\x62\xa5\xd4\x38\x78\x69\xbd\xad\xac\xa9\x63\x07\x77\x18\x4f\ \xcd\x37\x45\xbd\xeb\x29\x9d\x53\xd6\x76\x38\xed\xda\xdc\x85\x6d\ \x8d\x10\x47\x6d\xd9\x2b\x6f\x69\x71\xb7\x94\x95\x6e\x4b\x64\xe5\ \x44\x24\x2b\xfb\x21\x3c\x66\xb7\x75\x07\x45\x5d\x75\x55\x89\x8b\ \x03\x16\xad\x37\x09\x94\x36\xd1\x8b\x3d\x2e\xb8\x97\xad\xce\x0d\ \xa5\x4a\x61\x09\x6c\x76\xc7\x1e\x74\x7a\x67\xda\x9d\x23\xe9\x9b\ \xd5\xa7\xa9\xb7\xad\x42\xc3\x90\x65\x5b\x6f\x4c\x44\x43\xc5\xd7\ \x94\x89\x0c\xae\x3a\x16\x9e\x12\x10\x52\xb0\xad\xd9\xfb\xc9\xc7\ \xb1\xac\x11\xd2\x46\xf9\x71\x25\xbf\x27\xf4\x7f\x82\x13\xa0\xf5\ \xcc\xb6\xf4\x9e\x84\x89\x6f\xb4\xbb\x36\x4e\xa1\x6e\x4a\x19\x13\ \x6e\x2a\x51\x6c\xb4\x4a\x89\x71\xd2\x92\x54\x36\x85\x1c\xed\xcf\ \x00\x01\x4e\x8b\xea\x43\xcf\x59\x4a\x5c\xb2\xb6\x2f\x89\xd4\x0a\ \xb0\x08\x68\x94\x4b\x2a\x90\x90\x14\x56\x1c\xd9\x90\xde\xcf\x36\ \x76\x64\x76\xc6\x69\x26\x8a\xe9\xd5\xea\xcc\x9e\x9d\xb7\x2a\x55\ \xb9\x6a\xd3\x3f\x6d\xfb\x6f\x86\xe2\xc8\x73\xc6\x6d\x69\x4f\x87\ \x94\x8c\xe0\xa8\x67\x3b\x7f\x1a\x43\xa8\x74\x7c\xcb\x3c\x69\xf7\ \x59\x17\x08\xac\xcb\xfe\x98\x2e\xfb\x6f\x52\x59\x79\xe6\xca\x16\ \xda\x51\xe1\xbc\x10\x82\x51\x94\x85\xe5\x40\x10\x0e\xde\x69\xea\ \xf7\x46\x5b\xd4\x50\xd7\xd6\x88\x96\x68\xad\x51\x3a\xf5\x7c\xbf\ \xd9\x6e\x36\xb6\xa0\xcb\xb2\x2d\x86\x9e\x2d\xbe\x5d\x43\x85\xc4\ \x15\x85\x24\x94\xa4\xe3\x6e\xd3\xc8\x07\x92\x3d\x39\x9f\xdb\x9b\ \x21\x9d\xde\xf5\x4a\x74\xfa\x36\xb1\x9d\x71\xd7\x77\xeb\x6a\x20\ \x35\x3a\xe9\x2a\x28\xb7\x3f\x32\x3b\xc8\x8a\xe0\x69\xb0\x85\x10\ \x08\x0b\x52\x40\xca\x42\xb0\x37\x11\x9c\x7a\x55\xe2\xdf\xec\xa3\ \x80\xac\x6e\x03\x9c\x0a\xad\x59\x5d\x58\xd3\x84\xbb\xd5\x9a\x5e\ \xf3\xc8\x48\xc7\x00\xd2\xe5\x28\x21\x19\x24\x62\x92\x46\x49\x53\ \xbb\x8d\x63\x73\x77\xcb\xe1\x8e\x29\x4e\x39\xa4\xa2\x6b\x52\xca\ \x9c\x8c\xe5\x79\x9b\xde\x80\x08\x3e\x95\x1c\xba\xb6\x92\xda\x93\ \x8a\x7a\x84\xf0\xf0\xca\x14\x7b\x53\x7d\xdb\x6a\x42\x88\x23\xb5\ \x68\xa2\xb2\xca\xc2\x2a\x4a\xeb\x32\x28\x7e\xac\x5b\xd9\xf0\x5c\ \x75\xcd\xa1\x23\x39\xc9\xc0\x23\xd4\x57\x1e\x5d\xed\x4c\xc5\x9d\ \x3a\x1b\x8b\x49\x4a\x17\x84\x2c\x11\x82\x3b\xa4\xff\x00\x01\xda\ \xbb\x8f\xa8\xed\x32\xfc\x57\x12\x52\x15\x90\x46\x31\x9c\xd7\x21\ \xf5\x4d\x8b\x7b\x77\x22\xdb\x6a\x40\x90\xc2\x8e\x50\xca\x07\x95\ \x27\x9c\x28\x8f\x5c\xfa\x52\x7a\x46\xea\x49\x8d\xe8\xd9\xae\x23\ \x8f\x69\x5b\xcb\x01\xb4\x16\xc1\x2e\x36\xda\xb3\xbb\x1b\x77\x66\ \x90\xab\x24\x03\xfc\x3d\xa9\x44\xc2\x92\xac\x93\x93\xea\x7e\x7d\ \xa9\x32\x73\x9c\xfe\x35\x96\x3b\x1b\x2a\x7b\xd6\x2c\x3e\x86\x5e\ \x55\x07\x50\x2e\xde\x9d\xa9\x75\xf4\x9f\x05\x6a\xec\x92\x01\xcf\ \xe6\x3f\x3e\x2b\xb1\xf4\xdc\xc5\x4a\x89\x1d\x78\x4a\x96\xcb\x61\ \x0e\x82\x78\x2a\xc6\x4f\x6f\xf5\xc5\x70\x15\xb5\xd7\xe3\x5d\xa3\ \xc9\x86\xa5\x25\xd0\xa0\xa6\xcf\x63\xbb\xbe\x2b\xae\xfa\x67\xa9\ \xc4\xcb\x4c\x0b\x8c\x64\xbc\xff\x00\x8a\x0b\x8e\x82\x07\x99\x69\ \x49\xcf\xd0\x9e\xd8\xf8\xae\x46\x3a\x9e\x4a\xaa\x6b\x66\x75\xf0\ \x53\xe2\x50\xc9\xce\x25\xcd\x16\x52\x52\x50\xe8\x20\x21\xd0\x0a\ \x49\xf5\xee\x08\xc7\xa7\x22\x9c\x96\xe2\x50\xc6\x14\xe6\xc5\x28\ \x85\x79\xbd\x0e\x2a\x31\x6d\x7d\x1f\x64\x3b\x5b\x07\x01\x2b\x4a\ \x09\xc7\x98\xf7\x03\xe0\x71\x4f\x4a\x79\x29\x4b\x99\x41\x53\x89\ \x4f\x09\xce\x48\x57\xf6\xbe\x9e\xff\x00\x14\xa8\xcb\x40\x9a\xd4\ \x75\x83\x28\x21\xe4\xa9\x4b\x40\x07\x18\x27\xb6\x7d\x85\x3b\xaf\ \x2e\x34\x57\x90\x49\xc1\x2a\x1f\xcb\xe0\xd4\x2e\x44\xc2\xc3\xa1\ \x01\x40\x37\x80\xb5\x85\x71\xdf\xdb\xe7\xe9\x4f\x91\x64\xed\x61\ \x05\x04\xbb\x9f\xbe\x53\xc7\x70\x3b\x81\x53\x09\xf2\x29\x28\xb5\ \xa8\xe0\xa4\x2b\x07\x91\xbb\x18\x15\xa0\x85\x24\xf2\x33\x8e\x4e\ \x3b\x66\x94\xa0\x95\x25\x21\x5e\x53\x8e\xc1\x40\xee\xac\x78\xf3\ \x63\x18\xf5\xc5\x35\x3b\x30\x4e\xe6\xa6\x9c\x6b\x2a\x52\xc6\xd0\ \x91\xe6\xdc\x3d\x3e\x2b\x15\xc8\x86\xd9\x48\x52\x41\xe3\x00\x9e\ \x72\x3e\x4d\x6c\x75\x2d\xa5\x25\x6e\x1d\xde\x98\x1d\xe9\xbe\x41\ \x65\x2a\xcb\x4d\x95\x82\x9c\x7d\x0f\xe3\x5a\x23\x27\xc8\xba\xd4\ \xd8\xe3\xd1\x0a\x77\xb8\xc0\xce\xfd\xaa\x1e\xde\xf5\x8a\x26\x47\ \x52\x40\x65\x9f\x2e\x4e\x71\xed\xee\x6b\x4a\x76\xe7\x7f\x86\x9d\ \xc4\xf3\xba\xb0\x2b\x47\x2a\xd8\x9c\xe7\x83\xc0\xcd\x44\x99\x74\ \x66\x42\x4b\xea\x4a\x52\x13\xc7\x7a\xf5\xb4\xa1\x2d\x03\xd8\x93\ \xe9\xe9\x5e\x87\x02\xd4\x70\x3c\xc7\x9c\xfa\x56\xc4\xe1\x03\x9f\ \x4c\x9a\xcd\x32\x1b\x33\x8e\xb2\xdb\x81\x69\x4e\x48\x1c\xe3\xda\ \x91\x6a\x7b\x88\xf0\x91\x19\x05\x3b\x94\x00\x48\x07\xd7\xbf\xe7\ \xde\x92\xbb\x74\x47\x88\xa0\x97\x30\xda\x81\x4a\x47\x62\x78\xe4\ \xf3\xed\x51\xb8\x73\x45\xc1\xf3\x26\x46\xe5\x36\xc2\x89\x6c\x64\ \x83\x9e\x47\x22\xb3\x54\xa9\xa6\x54\x4c\x61\x77\x77\xc8\xdb\x73\ \x92\x88\x50\x9c\x38\xd8\xe1\xdc\xb5\x0f\x82\x3f\xf4\xae\x45\xfd\ \x23\xee\xce\x4d\xea\x0b\x50\x50\xea\x14\xcc\x78\xe8\x52\x90\x83\ \x90\x95\xab\x24\x83\xf8\x60\xfe\x22\xba\x2b\x59\xea\x08\xd0\x62\ \xbf\x26\x44\xa5\x33\x19\xb4\x17\x5c\x58\x20\x8e\x07\x63\xf1\xdb\ \x1f\x53\x5c\x63\x74\xb8\xae\xe9\x7e\x99\x76\x78\xef\x5c\xa9\x0b\ \x70\x83\xc7\x04\xf0\x3f\x01\xc7\xe1\x4c\xc0\x43\x3d\x57\x3e\x4b\ \xf9\x23\x15\x2c\x94\xd4\x79\xcb\xf8\x26\x3a\x45\x98\x32\xad\xaf\ \xc7\x7d\x61\xb5\x12\x92\x8c\xf6\x57\x03\x82\x7d\x06\x78\xcf\xcd\ \x2a\xb1\xb9\x19\x6e\x8b\x53\x8d\xf8\x32\x63\xa8\x96\x52\xb1\xc9\ \x0a\xdb\xce\x7d\x71\x83\xf9\x9a\x61\xb0\x2d\xc5\x35\x15\x4d\x2c\ \xee\x5b\x9f\x67\x29\x00\x1d\xc7\xba\x4f\xe3\x8c\x54\xef\x4a\x5a\ \xad\xf7\x99\xa9\x44\xe6\x54\x95\xc7\xe5\x0f\x32\xad\xab\x49\x3c\ \x00\x0f\xc7\x7c\x56\xa8\xda\x32\x95\xfb\x6e\x65\xc7\x55\x6a\x9c\ \x6f\xee\xd8\xb0\xf4\x96\x9b\x6a\x64\x54\x82\x90\x54\x45\x3f\xa7\ \x46\xbe\xc4\x8c\x82\xa0\x83\x4b\xb4\x16\x9d\x9d\x0c\x20\xb3\x73\ \x72\x52\x06\x30\x97\x1b\x09\x50\x19\xe0\x64\x77\xab\x76\x25\x97\ \xed\x70\xc0\x59\x4e\xe0\x3b\xd7\xa6\xc3\xca\x96\x2e\x9a\x94\xe3\ \xb1\xe5\x25\x26\xa5\x64\xee\x40\x34\xc6\x9e\x66\x2b\xe8\x50\x40\ \xef\xcd\x5a\x70\xa1\x25\x31\x52\x52\x00\x18\xa4\x30\x2d\x6d\xb4\ \x54\xd9\x00\x28\x76\x38\xa9\x0d\xa4\xa4\xb4\xa6\x57\xf7\xbd\x05\ \x6b\x9a\x8c\x17\x55\x15\x83\xbb\xb3\x1c\xed\xa9\x4e\x5a\x38\x3f\ \x18\xa2\xbd\x86\x76\x6d\x49\xfd\xd3\xcd\x15\xcc\xaa\x9b\x91\xd1\ \xa5\x2b\x22\x23\xd3\xf4\xa2\x7f\x4f\xa2\x30\xa0\x0a\xb0\xe6\x7d\ \xff\x00\xac\x55\x47\xe4\x47\x5c\x69\x0b\x8c\xb3\x8c\x1e\x29\xc3\ \xa7\x4e\xaa\x2e\x95\x84\xe8\xe5\x2a\xdf\x91\x9f\xf8\xc5\x53\xc6\ \xa1\x84\xd4\xc8\xe2\x54\x70\x0a\xc1\xce\x12\x39\xf9\xae\x8d\x35\ \x97\xc0\xe5\xdf\x34\x13\xe6\x86\xdd\x36\xf6\x50\xb6\x16\x7b\x1e\ \x29\xc2\x18\x29\x7d\xc4\x92\x78\xf8\xa8\xfb\x0e\xa9\xa7\xbc\x40\ \x08\x29\xe0\x8c\xf7\xa7\xa6\xde\x0e\x29\x0f\x24\xe4\x91\x83\xcd\ \x34\xa1\x36\x61\x59\xb5\xa4\xf7\xf2\xfa\x53\x55\xc4\xe4\x21\x19\ \xf2\x9a\x53\x6a\x7d\x0b\x82\xb6\xf3\xd8\x52\x39\x4f\x21\xc2\x87\ \x10\x77\xa4\x28\x8c\x83\x9e\x41\xc7\xf0\x39\xac\x54\xe2\xe3\x36\ \x6e\xab\x25\x28\x23\x09\x6b\x42\x23\xec\xf8\xf4\xa4\xf1\x51\xe2\ \xad\x0d\xa9\x5b\x73\xdf\x8a\xc1\xc5\x87\x65\x7e\xd3\xee\x27\xde\ \x86\xe4\x36\xbb\x80\x65\x97\x10\xa7\x50\x37\x29\xb0\xa1\xb8\x24\ \x9e\x0e\x3d\xbe\x6b\x52\x56\x46\x56\xee\xc5\x8f\x34\xe4\x7f\x32\ \x14\x14\x07\x7a\xdf\x15\xc0\xc3\x41\x6b\x18\x2a\x3d\xab\x25\xb6\ \xb4\xac\x2c\x1c\xa4\x8e\x45\x78\x52\x1d\x58\xe3\x18\xa4\x39\x66\ \x5a\x8e\x4b\x2b\xd0\x1f\x2b\x0b\x49\x6c\x67\x75\x6c\xfb\x32\x0a\ \x14\xa5\x2c\xee\xaf\x51\xb8\x37\xb0\x0e\x47\x6c\xd6\x4b\x6d\x69\ \x8d\x84\x9d\xca\x35\x46\xf9\x0c\x4b\x98\x91\x59\x1b\x14\x01\xe0\ \xd2\xbc\xa5\x6d\x05\x03\x8c\x52\x28\x72\xe2\xc9\x6d\x69\x61\xf6\ \xa4\x6d\x25\x0a\x2d\xac\x28\x02\x3b\x8c\x8f\x5a\x51\x19\x0f\x79\ \x80\x42\xb6\xfa\x66\xa6\x5a\xa2\xb1\x1c\xa3\x9d\xc1\x1f\x5a\xd9\ \x3d\x43\xca\x3b\xd6\xa8\xe1\x48\xda\x14\x9c\x7a\xd6\xa9\x6f\x85\ \x38\x40\x3f\x15\x95\x46\xf2\x35\xb9\x5a\x06\xb4\x11\x95\x2b\xd2\ \xb4\xe7\x72\xca\x88\xaf\x1d\x5e\x06\xc4\xe3\xe6\xb7\xc4\x60\xac\ \xf3\xf7\x45\x3f\x48\xab\xb3\x3e\xb2\x76\x46\xfb\x7b\x3d\xdc\x57\ \xe1\x5b\xdd\x56\xe5\x63\xd0\x77\xaf\x14\xb0\x06\xc4\x70\x2b\xc4\ \x83\x90\x9e\xe6\xb3\xbb\xb7\x76\x69\x4a\xca\xc8\xd8\x95\x06\x9a\ \x2a\x3d\xe9\x08\x4f\x8e\xb2\xb5\x76\xad\xb3\x49\x2b\x0d\x03\xc5\ \x68\x79\x41\x86\x4f\x22\xad\x05\x65\x7e\x6c\xac\x9d\xdd\xb9\x21\ \xae\xf1\x31\xbb\x78\x2e\x29\x61\x29\x1e\xa4\xd5\x6d\xaa\xba\xb3\ \xa6\xa1\xb4\xe2\x5c\xb9\xb3\xe2\x20\xe0\xb6\x16\x9d\xd9\xfa\x66\ \x9b\x3a\xf7\x7f\xbc\x1b\x78\xb6\x59\x1f\x87\x1a\x43\xc7\x2b\x91\ \x25\xcd\xa1\xa4\xfb\x81\xea\x4f\x35\xcc\xea\xd3\x2f\xb4\xa9\x92\ \xef\x1a\xa6\x3c\xd0\x7c\xc6\x34\x62\xa2\x1d\x50\x3c\x0c\x80\x06\ \x73\x58\xf1\x58\xfe\x1c\x94\x56\xe4\x50\xc3\x2a\xd7\x72\x95\x91\ \x33\xea\x8f\x56\x15\x70\x6d\xd8\xd6\x44\x4b\xda\x78\x5c\x8d\xc1\ \x00\x7c\x05\x67\x8a\xa1\x2e\xd3\x9f\x78\xe5\xf7\xc3\x3b\x95\x93\ \x80\x4e\x13\x8e\xfc\xf7\x27\xde\xac\x8b\x9c\x3b\x2b\x70\xb6\x5c\ \x25\x22\x12\x10\x90\x7c\x24\xba\x92\xa2\x48\x04\x1c\x9f\xf0\x15\ \x06\xbc\x4f\xd3\x0c\x33\x25\x11\xd8\x54\xd7\xd6\x02\x5b\x75\x6a\ \x52\xd4\x9e\x73\x9c\x9c\x01\xf9\x1a\xcd\x1a\xb3\xae\xf3\x49\x1d\ \x5a\x31\xa1\x41\x64\xa7\x7b\xbd\xd9\x11\x52\x14\xb6\x8b\xab\x25\ \x3f\xd9\xcf\x75\x13\xed\x58\x0c\x11\x9c\x7e\xed\x6d\x93\x25\xc9\ \x0e\xf8\x8b\x3b\x71\x9d\xa9\x4f\x61\x5a\x52\xa2\x84\x28\xfb\x8a\ \xd2\xaf\x6d\x4c\xf3\xb5\xf4\x14\xb0\x7c\x29\x4c\x3e\x47\xef\x05\ \xe3\xf1\xab\xbf\xa6\x12\x57\x67\xbc\xa2\xce\x40\xf0\x5d\x74\x3f\ \x1d\x59\xf2\xe7\x82\xa4\xfd\x78\xcf\xfe\x95\x56\xea\xeb\x6c\x2b\ \x65\xc5\x9b\x5a\x56\xa0\xf2\x2d\xec\x97\x54\xa5\x64\x87\x8a\x02\ \x94\x9e\x4f\x03\x9e\xde\x98\xab\x45\x88\x6a\xb8\xe8\x7b\x55\xd5\ \xb5\x94\x3b\xe1\xb4\x54\xe2\x40\xdc\x95\xa7\x8c\xe3\xe7\x18\xfc\ \x6b\x99\x8f\x95\xe1\x17\xc9\xfa\x47\x6f\xa2\x62\x9c\xa7\x0e\x7e\ \xae\x5f\x76\x7b\xcb\x29\x75\xe5\xad\xd0\xb6\xf8\x4a\x41\xe3\x9d\ \xde\xde\xd9\xf5\xa9\x23\x52\xdb\x56\x77\x27\x6a\x0a\x55\xb4\x13\ \xdf\x68\xc1\xdc\x7e\x3d\x2b\x9e\xb4\x96\xa3\x75\x49\x5c\x49\x0a\ \xf0\x25\x05\xed\x78\x2b\xb6\x33\x9c\x83\xed\x90\x4d\x5b\xba\x72\ \xfa\xc4\x88\xcf\xc4\x5a\xd2\xe2\x8e\x49\x4e\x41\x51\x48\x27\x27\ \xf1\xe0\xf1\x5c\xd8\xcf\x2b\xca\xcd\xb5\xb0\xed\x2b\xa2\x62\xb7\ \x1a\xfb\x39\x5b\xdb\x7c\x40\x37\x00\xa3\x95\x03\xeb\xf4\xe3\xf9\ \xd6\x36\x1b\x92\x52\x1d\x42\x1d\x59\x64\xac\xe7\x27\x71\x38\x38\ \x18\x3e\x99\xf4\xa6\xb6\x6e\x2d\x29\x85\x48\x3e\x11\x64\xa0\xab\ \x07\x2a\xe3\xe3\xdf\xe9\xf1\x4d\x0f\xce\x62\x25\xe2\x38\x6a\x3e\ \x5e\x71\x7b\x7c\x24\xaf\x0a\x2b\xc6\x46\xef\x7c\x0c\x7e\x75\x6c\ \xf6\x69\xa3\x26\x4b\xe8\xcb\x36\x43\xcb\x4b\xc8\x70\xe1\xa6\x90\ \x00\x69\xa0\xac\x92\x9f\x53\xc7\xcf\x14\xe0\xdc\x9d\xea\x05\x21\ \x38\x3d\xf1\xe9\xf5\xa8\x8d\x9e\xef\xe2\xba\x8d\xd2\x9a\x4e\x5b\ \xcb\x98\xe5\x48\x03\xd7\xf0\x3c\xd3\xdb\x6f\x17\x23\x78\xc8\x2a\ \x79\x0e\x04\x84\x24\x0e\xe0\x1c\x67\x3f\x3e\xd5\xae\x3a\xea\x8c\ \xed\x5b\x46\x2c\x75\xc7\x14\x14\x12\xa4\xab\x1c\x2b\x3d\xc5\x68\ \x62\x30\x74\x82\xa7\x95\x8e\x48\xcf\x35\xb5\x97\xd1\xb1\x0e\xba\ \xb4\xaf\x6a\xca\x4a\x47\x74\x91\xc7\x3e\xf5\xbe\x2a\xda\x01\x68\ \x20\xb9\x85\x67\xcc\x30\x47\xb5\x3e\x04\xa9\xe9\xa1\x8a\x62\x6f\ \xf3\xa5\x3b\x8a\xb3\xf8\xe3\xf9\x1a\x4d\x22\x2a\x9d\x5a\x90\x52\ \x84\xa7\x1b\xb9\x39\x27\x07\x9a\x5b\x1d\xc0\x42\x96\x96\xd4\x0e\ \x77\x04\x13\xc9\x07\xbd\x27\x7d\x63\x6b\x6a\x0a\x04\x94\xfa\x1e\ \x70\x7b\x8f\xaf\xc5\x59\xd8\x9c\xcd\x31\xb3\x86\xde\x70\x24\xfe\ \xcd\x05\x27\x70\x3c\x12\x78\xff\x00\x43\xe6\xb4\xc8\xb9\x25\xa6\ \x1c\x7d\x4b\x46\x5b\xc9\x20\x1f\x51\xee\x2b\x75\xd9\xf4\xc6\x61\ \xd9\x2d\xc8\x4a\x08\xe4\x93\xdf\xd3\xd3\xe9\x51\x6b\xbc\xef\x05\ \x6d\xa9\x4d\x2d\x95\x2b\x97\xc1\x19\x1c\xa7\x21\x43\xdf\xb7\xf1\ \xac\x75\x5e\x51\xab\xac\x37\x6a\xeb\xab\xbf\xa9\xd4\xb6\xd5\x97\ \x54\xe6\xd6\x4f\x8b\x9c\x05\x0e\xff\x00\xcf\xf9\xd6\xb6\x66\xa5\ \xb8\x3e\x47\x47\x8a\x94\x02\xe0\x20\x60\x64\x11\xe9\xe8\x78\xc5\ \x43\x2f\x77\x17\x2e\x37\x56\x19\x8e\x84\xa9\xb6\x4e\xf5\xad\x18\ \xfb\xf9\x00\xfe\x1c\x9f\xc6\x91\xeb\x9d\x4c\xbb\x44\x05\x33\x0f\ \x2e\x4f\x53\x48\x43\x0c\xb6\x39\x56\x0e\xe2\x15\xec\x30\x39\x3e\ \x95\xcf\x93\x6e\x5a\x1b\x23\x4b\x44\x8a\xd3\xf4\x8b\xd5\x81\x71\ \xe3\xe9\xb8\xc9\x42\x5c\x7d\x09\x76\x56\xd5\x79\x91\x85\x1c\x24\ \xfe\x40\xd5\x2e\xc7\xdc\xf2\x9e\x41\xc9\xac\xae\xd3\xe4\xdd\x2e\ \x92\x2e\x53\x56\x1c\x7e\x43\x85\x6b\x50\xed\x9f\x61\xf0\x2b\xd4\ \x36\xb4\x46\x53\xdb\x78\x48\x1f\xc7\xff\x00\x4a\xf4\x58\x7a\x0a\ \x85\x25\x1e\x7f\x53\x83\x88\xaf\xc7\xaa\xe5\xc9\x6d\xe0\x3d\xda\ \x56\xa1\x66\x79\xa6\xc9\x3b\xdc\x6d\x48\x29\xee\x9d\xa4\xf2\x3e\ \x40\x3f\xc6\xa7\x5a\x1f\x54\x45\xfb\x53\x28\x9c\xff\x00\xd9\xa4\ \x17\x3f\x79\x3f\x7f\xb6\x09\x3e\x87\x15\x5b\x45\x56\xd8\xd9\x6f\ \x25\x25\x59\x71\x3f\xd9\x48\xe7\x23\xf9\x56\x6b\x2a\xb8\x45\x61\ \x29\x70\x05\x85\x1f\xeb\x09\xdc\x9e\xdf\xbd\xed\xf5\xaa\xba\x69\ \x4f\x30\xca\x96\xad\x47\x86\xfd\x7a\xb9\xdb\xfa\x4a\xec\xd3\x71\ \x98\x74\x10\xa4\x2d\x20\x85\x24\xe4\x1a\x91\x47\xd6\xf1\x5c\xbf\ \xb1\x60\xb6\xbc\x99\x37\x07\x12\x1c\x5b\x2d\x9d\xde\x0b\x7e\xab\ \x59\x1f\x77\xe0\x1e\x49\x22\xb8\xbf\x4e\xe9\xad\x63\x2c\x22\x09\ \xbf\xa2\x04\x65\x01\x95\xae\x5f\x00\x0f\x4c\x24\x93\x9f\x8a\xe9\ \xae\x84\x58\x2c\xfa\x56\xd8\x61\xdb\xdd\x12\x25\xbe\x77\x4b\x98\ \xaf\xbc\xf2\xbd\x07\xc2\x47\xb5\x3d\x63\xea\x4d\xa8\x52\x77\xf0\ \x38\x18\x9c\x1a\xc3\xdf\x3b\xd7\xb0\xbf\x5a\x69\xa9\x51\x52\xb6\ \xd4\x03\x80\x73\x9e\xe6\x92\x9f\x15\x87\x72\xa0\x52\x53\xdf\xe6\ \xb7\x5a\xc2\x56\xd8\x52\x09\xc8\x02\x97\xb8\x12\xa4\x6d\x79\x00\ \xf1\xc1\xae\xec\x65\x28\xab\x48\xcb\x93\x32\xb9\xa9\x89\x88\x51\ \x05\x20\xe4\xf1\xc5\x14\xb2\xc9\x6a\x6d\xb7\x0c\x85\x64\x83\xd8\ \x1a\x2b\x35\x5a\xd0\x8c\xac\x91\xaa\x95\x19\xca\x37\x6c\x83\x68\ \x26\xf6\x69\x78\x6d\x39\xf7\x72\xe1\xe7\xd4\x78\x8a\xa7\x92\x55\ \x1d\x59\x46\x14\x8f\x50\x07\x06\xb5\x68\xd8\x45\xee\x9f\x5b\x24\ \x23\xcc\xb4\x87\x09\x03\xd7\xf6\x8a\xa5\x29\x56\xe4\xf9\xbb\x8e\ \xfc\xd6\xca\x53\x53\x89\x86\x50\x70\x48\x41\x32\x14\x79\x61\x4e\ \x30\x42\x17\x83\x94\xd3\x4c\x66\xe7\x37\x2c\x44\x43\x6a\x3b\xbd\ \xbb\x54\x89\x4c\x24\x80\xb4\xf9\x71\xeb\x4e\x9a\x5e\x08\x5b\x85\ \xf7\x46\xec\x1c\x73\x56\xa9\x35\x08\xb9\x30\x84\x1c\xe4\xa2\x8a\ \xab\xa3\x76\x3b\x64\xed\x57\xaa\x97\x72\xb2\xbf\x2e\xe0\xc6\xa5\ \x92\x23\xdc\x17\x1f\xc4\x6a\x39\x43\x6d\xad\x20\xab\x23\x18\x56\ \x48\x1e\xea\x1e\xf5\x96\x96\xd4\x57\x4b\x26\x89\xb4\xb5\x6b\x83\ \x65\x44\xcb\x86\xb5\x91\x65\x79\x42\x3a\xd2\xc9\xdc\x5e\xcb\xdb\ \x37\x95\x67\x7a\x52\xa2\x9d\xdc\x80\x52\x08\xce\x45\xad\xa1\xf4\ \xbf\xf4\x65\x7a\x81\x62\x77\xda\xbf\x5c\x5e\x5e\xba\x01\xe0\xec\ \xf0\x7c\x44\xa1\x3e\x1f\x73\xbb\x1b\x3e\xf7\x19\xcf\x6a\x8e\xc6\ \xe9\x87\x83\x6e\xb5\xc4\x37\xcc\xfd\x83\x55\x2f\x50\xee\xfb\x27\ \xf5\x9b\x8b\x87\xc1\xfb\xfc\x7f\x59\xf7\xf9\xed\xf7\x79\xae\x44\ \xaa\x39\x3b\x9b\x23\x86\x94\x22\xac\xb5\xd7\xf9\x43\x05\xd7\x5b\ \xdd\xad\x2c\xea\xcb\x54\xe8\xb6\xc9\xd7\x8b\x4d\xca\x0c\x08\x2f\ \x34\xca\xd9\x65\xf3\x31\x28\x2d\x95\xa7\x72\x88\xd8\x14\x73\x85\ \x73\x8f\x4c\xe6\xbc\xd1\xd6\xcb\xa4\x2e\xbb\xea\x16\x2e\x72\x61\ \xcc\x79\x36\x28\xaa\x4b\xb1\xd8\x53\x29\x52\x0b\xae\x77\x49\x5a\ \xb0\x73\x91\xf7\x8f\xa7\xd2\xa4\xb7\xbe\x99\x31\x76\x9f\xab\x65\ \x3d\x78\x75\xa5\xdf\xa4\x41\x95\x1d\x4d\x32\x02\xa0\xbd\x15\x09\ \x4a\x14\x09\x24\x2f\x25\x20\xe0\x81\xc1\x23\xe6\x9c\x74\xbe\x8f\ \x9f\x6f\xd6\x73\xf5\x5d\xda\xfa\x8b\x94\xe9\xb0\x9b\x86\xb4\x35\ \x0f\xec\xed\x21\x2d\xa8\xa9\x25\x23\x7a\x8f\xa9\xce\x49\xe4\xfa\ \x0e\x28\x55\x64\xb9\x93\xec\xf2\x73\x4d\xae\x7e\x5a\xfe\x08\xdd\ \xda\xf5\xa8\xe7\xeb\xf9\x9a\x5f\x4e\x3d\x6f\x88\x6d\xd0\x1b\x97\ \x21\xf9\xac\x2d\xd0\xb7\x1c\x52\x82\x1b\x09\x4a\xd3\x84\xe1\x19\ \x2a\xc9\x3c\xe0\x0f\x5a\x43\xa7\xb5\xf4\xeb\xdc\xfe\x9f\x29\xa8\ \x8c\x47\x63\x50\xc7\xb8\x99\xcd\x9c\xa9\x4d\xbb\x1b\x6a\x70\x85\ \x7b\x6f\xdd\xe8\x72\x31\x52\xdd\x4f\xa2\xe6\x3f\xa9\xdf\xd4\xfa\ \x7a\xf6\x2d\x57\x09\x10\x93\x0e\x50\x76\x20\x7d\xa7\x10\x95\x15\ \x21\x61\x3b\x92\x43\x89\xdc\x70\x72\x46\x0f\x20\xd3\x2b\x1d\x38\ \x6e\x2c\x2d\x2a\xd5\x82\xee\xa8\x73\x34\xc8\x79\x0c\x3d\x26\x3f\ \xda\x12\xfa\x5f\x00\x3d\xe2\x24\x29\x1c\xa8\x8d\xd9\x04\x60\xfb\ \xf6\xa6\xf1\x1c\x95\xc5\xca\x95\x48\xc9\xaf\x5b\xaf\xa5\xc8\x6e\ \xa8\xd4\xfa\xa2\xed\x66\x65\x51\xae\x4c\x5b\x94\xcf\x50\xc5\x94\ \x16\x98\x3e\x66\x51\x20\x06\xf7\x79\x86\x7b\x79\x87\x65\x03\x8e\ \x2a\x7b\xd4\x46\xee\xd1\xba\x45\xa8\xd6\x8b\x8a\x3f\x58\x31\x66\ \x90\xe2\xe5\x21\x9d\xa0\x94\xb4\xa2\xa2\x94\xee\xf2\x92\x01\x00\ \xe4\xe0\x90\x79\xc6\x29\xad\x7d\x30\x5f\xea\x15\x5a\xe3\xea\x07\ \x0c\xc1\xa8\x93\xa8\x5b\x96\xf4\x40\xa0\x24\x85\x25\x44\x29\x01\ \x43\x72\x4a\x82\x8f\x05\x3c\x10\x3d\x32\x67\x97\xeb\x13\xf7\x9d\ \x0d\x73\xd3\xb2\x66\xb6\x89\x17\x1b\x7b\xd0\xdc\x94\x86\x30\x94\ \xa9\xc6\xca\x0a\xc3\x65\x59\xc0\xce\x76\xee\xfc\x6a\xae\x6e\x2b\ \x5e\x65\xa9\xd1\x9c\xaf\x7e\xc2\xb3\xe9\xfb\x97\x58\x88\xd3\x7a\ \x32\xc1\xfa\x8a\x24\xb7\x74\xe3\x57\x89\x93\x5c\xb7\x1d\xbe\x1a\ \xb6\xb6\xd2\x03\x48\x5a\x77\x2b\x20\xee\x59\x57\x61\xdb\x26\x94\ \xb7\xd4\x7d\x49\x70\xb5\xe9\x96\x6d\x70\x6d\x71\xaf\x17\x4b\xa4\ \xcb\x44\xb0\xf8\x5a\xd8\x65\xe6\x37\x65\xc4\xe0\x85\x29\x38\x46\ \xe0\x9c\x8c\xe7\x19\x1d\xea\x4f\xfd\x03\x95\x0e\x55\x92\xe7\x64\ \xbe\x88\x57\x5b\x6d\x9d\x36\x87\x1e\x7a\x1f\x8c\xcc\x96\x06\xd2\ \x0a\x9b\xde\x92\x14\x14\x9d\xc0\x85\x71\x92\x0e\x45\x68\xb7\xf4\ \xce\x2c\x01\xa5\x04\x7b\xbb\xaa\x36\x29\xf2\x27\xbe\xe3\xcc\x85\ \x2e\x6b\xaf\x25\x7b\xc9\x20\x80\x9e\x56\x4f\x63\xc0\x03\xe6\x92\ \xe4\xde\xe3\x23\x4a\xa4\x74\x5e\xb6\xfc\x93\x98\x48\x7d\x30\x98\ \x44\xc5\xb6\xec\x84\xb6\x90\xf2\xdb\x46\xd4\xa9\x78\xf3\x10\x32\ \x70\x09\xcf\x19\x35\xa6\x74\x20\xe2\x0a\x9b\xe1\x58\xef\x4b\x7e\ \x86\x81\x44\x66\xe2\xee\x8d\x92\x82\x92\xb3\x18\x63\x47\xda\x49\ \x79\x5c\x8f\x4a\x58\x09\x23\x68\x18\x4d\x6c\x94\xd8\x4b\xc1\x5e\ \xf5\xe0\xad\x2e\x79\xb5\x33\x46\x19\x74\x3d\x4a\x76\x8a\xda\xc8\ \xc6\x56\xae\xd5\xad\x09\x2b\x50\x03\xd2\x95\x3a\x90\x19\x29\x14\ \x99\x3e\x43\xa2\xb9\x8d\xb3\xb0\xb7\x0a\x93\xcf\x15\x1c\xd4\x72\ \xdd\x8d\x01\xe2\x81\xb9\x7b\x4e\xd1\xee\x6a\x40\xa5\x14\x93\x8f\ \x4a\x8f\xea\x16\x17\x25\xa5\x0f\x53\x5a\x32\xc9\xc6\xd1\x32\xd4\ \x77\xd5\x1f\x3d\xb5\xfd\xcf\x5d\xeb\xad\x61\x24\x39\x0e\x5c\x87\ \x91\x93\xf6\x76\x92\xa0\x86\x12\x0e\x30\x40\xf6\x3c\x12\x7d\x69\ \xb2\x2e\x9d\xd5\x16\x89\x6c\xbb\x71\xb6\x3e\xd3\x41\x61\x38\xdd\ \xc1\x27\xf1\xae\x90\xeb\x0c\x46\xb4\xe2\x5f\xbc\xc7\x6d\xb6\x64\ \x15\x7e\xd1\x40\x04\x97\x72\x47\x94\x9f\x73\x54\xcd\xf2\xfa\x8b\ \xf6\x9d\x79\xf8\x4a\x52\x64\x32\xe2\x56\xa6\xd6\xac\x2d\x24\x1f\ \x6f\x51\xf4\xae\x35\x49\xce\xed\x4d\x58\xe8\x61\x6a\xb7\x97\x24\ \x74\xd8\x6f\xd5\xf6\x69\x6e\x86\xa3\xb7\x66\x7c\xc9\x77\x21\x00\ \x27\x2b\x51\x03\x24\x77\xf4\x19\xa8\x33\xda\x6a\xf3\xe2\x61\x16\ \xa7\xce\x4e\xd0\x0f\x07\x3c\x9f\x7f\x83\x57\x25\xd5\x71\xcb\x08\ \x96\xec\xc6\x5a\x69\x61\x2f\x36\xe2\xdd\x09\xda\x48\xce\x46\x4f\ \xb1\xaa\xcf\x50\x6a\x75\x15\xed\xb6\x05\x25\x49\xdd\xbd\xee\xe3\ \x24\x11\x91\xf8\x13\x8f\xad\x36\x8c\x1a\xa7\x9a\xfb\xaf\x32\xcb\ \x13\x2a\xcd\x45\xc7\x62\x2b\x1d\x82\xe4\xb6\x62\xaf\x09\x53\x8e\ \x25\x18\xcf\x6c\x9c\x72\x6b\xc9\x51\x9c\x6a\x43\x8c\xe3\x1b\x16\ \x5b\x51\xfa\x1c\x1a\x5d\xa7\x19\x13\x2f\x91\xc3\x88\x52\x9b\x6c\ \x97\x5d\x24\x9c\xe0\x73\xc9\xf9\x38\x1f\x8d\x6f\xbd\x36\x7c\x57\ \x24\x38\x70\x5c\x3c\x24\x7a\xe3\xd6\x9b\x14\xdb\x7d\xc1\x27\x1b\ \xd8\xd1\x79\x94\xe5\xde\xee\xf4\xa7\x37\x3b\x35\xd7\x50\x80\xd3\ \x0d\x65\x2a\x21\x20\x71\xf9\x70\x3d\x6b\xa1\x7a\x0f\x0d\x33\xfa\ \x7c\xea\x5b\x6b\xc5\xd8\xa2\x36\x77\x25\xbc\xe4\x1e\x3f\x78\x12\ \x7f\x0c\x7b\x57\x3e\xdb\x2e\x26\xdd\x35\xb9\x6d\x36\x91\x22\x30\ \x43\xad\xa8\x7e\xea\x92\xa0\xa1\xfc\x06\x0f\xd6\xba\x17\xf4\x6a\ \x92\xe3\xa8\xbb\xac\xb5\xe0\x66\x7f\x8c\x1b\x40\xc6\xc4\xb8\x37\ \x0e\x3d\xbe\x7b\x57\x3f\x1f\xd6\xa7\x67\xca\xdf\x63\xa7\xd1\xed\ \xc6\x6e\x48\x64\xd7\xda\x6a\x4c\x29\x49\x7a\x3a\xd1\x94\x28\x2d\ \xa7\x14\x33\x90\x32\x70\x7d\xe9\xab\x4f\xea\x29\x2c\xf8\x5e\x02\ \x56\x42\x4a\x81\x69\x4b\xda\x52\xac\x85\x10\x93\xdf\x07\x9f\xc3\ \x8a\xe8\xad\x51\x64\x8b\x26\x23\x8f\xa5\x96\xdf\x52\x0a\x94\xe3\ \x09\x1e\x60\x0f\xef\xa7\xfc\x40\xf6\xe2\xa8\x6d\x71\xa2\x57\x68\ \x96\x65\xb0\xe8\x2a\x4f\x29\x52\x46\x4a\xd2\x71\xc0\xe7\xdf\xf8\ \xd7\x26\x2a\xdd\x59\x7c\x0f\x41\x0a\xdc\x4e\xb2\xdf\x99\x37\xb4\ \x6b\x95\x18\xf1\xbc\x44\xab\x85\x79\x51\x8c\xf6\x3d\xf3\xe9\xd8\ \x60\x1e\x6a\x4d\xf6\xe6\xe4\x23\x28\x5b\x7b\xd9\xcb\x89\xda\xb3\ \x95\x1e\x0a\x88\x3d\xf3\xe9\xcf\x07\x35\x45\xdb\x11\x20\x90\x84\ \x2c\xa1\xe2\x00\x2a\x74\x14\xe0\x1e\x09\xc7\xe1\x52\x07\x5d\x99\ \x0d\xf8\xbb\x9b\x12\x1b\x64\xec\x58\x2b\xf3\x2c\x77\xf4\xcf\xcd\ \x2e\x49\xa7\x64\xc9\x96\x1e\x13\xd5\x68\x58\xcc\x5d\x1a\x64\xb8\ \x43\x8b\x69\xc9\x18\x29\x52\x80\x1e\x1a\x14\x48\xc7\xc9\x24\x91\ \xf9\x54\xa6\xd5\xac\x5a\x8c\xda\x1d\x79\xd3\x15\xc4\xe5\x05\xa7\ \x10\x40\x47\xa7\x97\x9f\x31\xc2\x48\x38\xf5\xcd\x52\xd3\xae\x4a\ \x5a\x54\x63\x89\x0c\xa9\x68\x40\x6e\x3a\x8e\xd5\x67\x83\x92\xa3\ \xfb\xbd\xb1\xeb\x5b\x67\x5c\x51\x28\xc5\x6a\x6a\x32\xe4\x70\x54\ \xd2\x37\xa9\x60\x7a\x11\x8c\xf3\xdf\x9f\xad\x5a\x15\x25\x11\x33\ \xc2\x46\x45\xff\x00\x6d\xd5\x70\xd2\x43\x89\x7e\x13\x8d\xb8\x42\ \x96\x19\x70\x2b\x7a\x49\xc0\x27\xd8\xf7\xe7\xe2\xa4\x08\xba\x25\ \x4e\x36\x63\xbe\xd3\xad\x28\x00\xbc\xab\x9e\xd9\x07\x3e\xbc\x1e\ \x47\xc5\x72\xe3\xd6\xc8\xd2\xda\x53\xb1\x24\x4f\x4b\xc5\x64\x2d\ \xb2\x36\xec\x09\xe0\xa9\x40\x1c\x00\x33\x81\x8f\x8a\x77\xb6\xc1\ \xbe\x90\xd3\xd1\xb5\x1c\xd2\xca\x52\xa0\x8c\x34\x55\xb4\xa5\x38\ \x4e\x01\xf9\xfe\x74\xe8\xe2\xb2\xab\x31\x32\xe8\xf4\xf5\x4c\xe9\ \x28\xf7\x58\xaa\x52\x92\x14\xe2\xd0\xda\x4a\x4a\x89\x00\x13\x9e\ \xff\x00\xe1\x5a\xdf\xbd\x41\x8a\xa4\x93\x21\xa0\x51\xf7\xdd\x1c\ \x63\x23\x03\xe0\xf2\x45\x73\xab\x82\xf8\xd3\x0b\x73\xfa\x45\x21\ \x87\x56\x43\xcd\xb4\xf6\x08\x07\xb7\x38\xf8\x26\x9a\x2e\x97\x3d\ \x45\x21\xf6\x61\xa2\x42\x12\x8c\x8f\x0d\xe5\x76\x51\xc1\x21\x58\ \xec\x14\x71\x9c\x55\x96\x31\xb2\x1f\x47\x77\x96\xd6\xaf\xd6\xb1\ \xe6\xbf\x25\xa8\xcf\x0f\xf6\x56\x9b\x59\xdc\x78\xde\x4a\xbb\x9f\ \x73\xb4\xfe\x75\x5e\xea\x7d\x69\x2e\xe5\x30\xc1\xb7\x28\xbe\x96\ \xf2\x90\xa3\x9c\x01\xc9\x00\xfb\x60\x54\x30\x45\xbb\xcb\xb9\xa6\ \x2a\xa5\x89\x13\x23\xb1\x92\xb6\xd5\x93\xb9\x47\xd4\x01\x8e\x32\ \xaf\xce\x9c\x2d\xf6\x77\x23\x3c\xa9\x2e\xc9\x58\x65\xbc\x92\x90\ \x08\x71\x47\x27\x72\x56\x47\xd4\xd2\x67\x55\x6e\xd9\xa6\x9e\x15\ \x2e\x42\xb8\x32\x4c\x56\x1a\x4b\x1b\x5d\x90\x37\x07\x49\x18\xc7\ \x97\x95\x13\xd8\x73\xc6\x7d\x78\xe2\xbc\x76\xd6\x59\xb5\xc9\xbb\ \x5c\x14\xb7\x27\x86\x1c\x0e\x29\x49\xc2\x41\x50\xc6\x11\xfd\xd0\ \x14\x7e\xb9\xcf\x14\xe9\x6d\xb6\x26\x42\xb6\x32\xd8\x6e\x18\xfb\ \xe9\x56\x78\x57\x73\xeb\x82\x72\x7b\x7c\xd2\xfd\x7c\xc3\xcd\xe9\ \x39\xeb\x48\x51\x1f\x65\x51\x09\x3d\xd2\x00\x27\x15\x85\xd4\xbc\ \x92\x5c\xcd\x71\xb4\x59\xca\x57\x28\xc2\x3d\xc1\x6c\xa9\x25\x08\ \x49\xdd\x8f\x5c\x11\x9f\xe5\x4e\x5a\x85\x22\x38\x53\x0d\xa9\x1e\ \x19\x0d\x29\x01\xb3\x91\x80\xda\x7d\x7e\x09\x57\xe3\x9a\x75\xd7\ \x76\x97\x94\xd4\x0b\xd3\x0d\x3c\xa8\xd7\x16\xff\x00\xd9\xd6\xa3\ \x92\xa2\x00\xc8\x23\xd8\x64\x01\xf4\xa6\x3f\x1c\xc9\xb9\xb4\xa5\ \x90\x12\x97\x39\x18\xfb\xa9\xe1\x3f\xc8\x7f\x1a\xf5\x94\xaa\xaa\ \x90\x52\x3c\x7d\x5a\x5c\x3a\x92\x87\x6b\xd3\xc1\x9e\xb4\x96\x9a\ \x69\x98\x9b\x86\xf7\x88\x52\xc8\x3f\x77\x9e\x07\xe3\xdf\xf2\xa7\ \x54\x58\xe4\x7d\x91\x99\x68\x43\xfb\x06\xe2\xe0\x49\x07\x19\xc1\ \x03\xe0\xf6\xf8\xac\x64\x5a\x24\x38\x13\x28\x20\x06\x5d\xfd\xb3\ \x8b\x04\x05\x47\x4e\x70\x33\xed\xc0\xfe\x55\x63\x40\xb7\xc9\x94\ \xc4\x59\x6c\xbe\xe3\x3b\x19\x52\x92\x3b\xa5\x44\x0c\x10\xaf\x62\ \x40\x07\x3d\xb9\xac\xb8\x8c\x46\x44\x9c\x4d\xf8\x4c\x2a\x93\x6a\ \xa2\xdb\x62\x2f\xa3\x58\x9a\x99\xc0\xfe\xaf\x6a\x68\x50\xe1\x52\ \xde\xe1\x1c\xf7\x1b\x54\x39\xfc\xeb\xa8\x7a\x52\xcb\xcf\x36\x95\ \x3a\xda\x42\xc6\x32\x12\x30\x07\xd3\xe2\xa9\x58\xaf\x3a\x99\x68\ \x4c\x68\xca\x8c\x87\x0e\xe5\xa5\xb7\x02\xd2\xa3\xea\x7d\x2b\xa1\ \x3a\x3e\x85\x38\xdb\x41\x28\xca\x4f\x73\x8a\xdf\xd1\x0b\x8b\x2e\ \x26\xc7\x9f\xe9\x97\xfb\xd9\x2d\xb1\x6b\xd8\x42\xb6\x24\x67\x18\ \xa7\x83\x83\x84\xd2\x66\xa0\xa9\xa4\x78\x8c\x8f\x4e\xd5\xb0\x3b\ \x95\x03\x8e\x41\x19\xae\xd4\xda\x9b\xba\x39\xb1\x4e\x0a\xcc\x90\ \xb0\x90\x96\x52\x07\xb5\x14\x32\xa0\xa6\x52\xae\xdc\x51\x5c\xb7\ \xb9\xd4\x5b\x10\x8e\x95\x5d\xa0\xb9\xa2\xad\xd1\x0b\x98\x5a\x43\ \x80\x82\x7f\xe3\x15\x4e\x17\xa8\x06\x3b\xa5\xf6\x47\x90\xf7\xc5\ \x57\x9d\x2a\xb7\x3f\x2a\xcf\x6f\x59\x2a\x42\x32\xbc\x1c\xff\x00\ \x7d\x55\x72\xa6\x3a\x4c\x50\xd2\xc8\x56\x05\x6f\x93\x54\x1a\x6b\ \x99\xcd\xa2\x9e\x22\x9d\x9f\x22\x18\x95\x6e\x41\x23\x3f\x41\xe9\ \x52\x6d\x3a\x13\xf6\x00\x78\xfa\xe2\x9a\x2e\xf6\xb7\x23\xac\xba\ \xc8\xca\x09\xe4\x0f\x4a\x51\xa6\x66\x24\x66\x3a\xd4\x02\xb3\xc0\ \x34\xca\xed\x54\xa5\x78\x95\xa0\x9d\x3a\xb6\x91\x9c\xad\x5b\xa7\ \xda\xb3\x37\x75\x6e\xeb\x0d\xc8\x4e\x3b\xe0\x21\xe4\xb8\x36\x29\ \xcd\xfe\x1e\xc0\x7d\xf7\x8d\xb8\xf7\xa6\x87\xb5\xa5\xb3\xf5\xc2\ \x6d\x2a\xbd\x5b\x9b\xb8\xa8\x80\x98\x8a\x92\x80\xe9\x27\xb0\xdb\ \x9c\xe4\xf7\xc5\x54\xe2\x2b\xad\xf5\x81\xfd\x04\x50\xa1\x06\x25\ \xf5\xcd\x48\x36\x8e\x03\x2a\x6c\x29\x09\x1e\x98\x12\x1c\x27\xfe\ \xaf\xd2\x99\xe7\x04\x27\xa6\xd7\xdd\x26\xe2\x48\xd5\xf2\x35\x03\ \x8e\x30\xc1\x6c\xf8\xee\xba\xa9\x49\x52\x24\x24\x77\x28\x08\xc1\ \xde\x38\x00\x11\xf1\x4a\xa7\x08\xc6\x37\xb5\xc5\xd5\xc5\x54\x6d\ \xad\xac\x5f\x08\xd5\xf0\x18\x76\xe2\x87\xa7\xc7\x1f\xaa\xd0\x17\ \x3c\x6f\x19\x8e\x92\x8d\xe0\xaf\xdb\xcb\xcf\xd2\x9c\x7f\xa6\x1a\ \x65\x28\x63\xc7\xbe\x5b\xd9\x2f\xa5\x85\xb2\x97\x1f\x4a\x4b\x81\ \xe2\x52\xd6\xd0\x4f\x3b\x8a\x55\x8c\x77\xda\x7d\xaa\x89\xd4\xf3\ \x23\xc1\xbe\x75\x6e\xdf\x2d\x65\xa9\x97\x8b\x6b\x22\xda\xc6\xd2\ \x57\x2f\xfd\x88\xb5\xfb\x30\x3e\xf6\x17\xc1\xc7\x6e\xe7\x8a\x71\ \xe9\xcb\x51\xff\x00\xf6\xb3\x61\x75\xf8\xec\xbc\x5b\xd0\x50\x94\ \xd9\x5a\x02\x8a\x09\x79\x5c\x8f\x63\xf3\xf3\x51\x56\x9c\x65\xb2\ \xb3\x2d\x4b\x17\x35\x2b\x32\xed\x8b\xa9\x34\xf4\xbb\xc3\x96\x68\ \x97\xcb\x6c\x8b\x8b\x7b\x82\xe2\xb7\x25\x0a\x75\x25\x3f\x78\x14\ \x83\x9c\x8f\x51\xe9\xc6\x7b\xd3\x42\xb5\x35\x8e\x43\xd3\xbf\x52\ \xde\x6d\xb7\x09\x11\x1b\x52\xdd\x66\x3c\x94\x38\xa4\x63\x23\x90\ \x93\x9c\x64\x11\xf5\x04\x77\x15\x58\xd9\xa4\xcd\xb7\x0b\xae\x87\ \xd0\x97\xb8\xda\x92\xcf\x71\xb5\x5c\xa4\xc3\x5b\x29\x05\xfb\x3c\ \x95\x02\xa4\x21\xc7\x13\xc2\x82\xd6\xe1\xdb\xbb\x0b\x1f\x4e\xf8\ \xe8\x98\x50\x27\xc0\xd3\xb3\xc6\xac\xb7\xb9\x3e\xcf\x60\x76\x22\ \xad\x0c\x41\x0c\x48\x65\x0a\x69\x01\x4d\xbf\x95\x95\x02\x85\x24\ \x77\x03\x27\x27\xd6\xb3\x53\x76\x95\x87\x4e\xbc\xa4\xb4\x5e\xbe\ \xa3\xcc\x2e\xab\x2d\x76\x4d\x18\xe0\x66\xd7\x1e\xed\xaa\x12\xa7\ \x31\x29\xf5\x25\x88\xc8\x4a\x54\x72\x70\x0a\x8e\x48\x09\x48\xe3\ \x93\x56\xba\xee\x51\x63\xca\x83\x6f\x9d\x2a\x3b\x17\x09\xa9\x51\ \x65\x8d\xfc\xba\xa4\x24\x15\xec\xcf\x24\x00\x73\xf4\xaa\x27\xa7\ \x83\x0d\x74\x1f\x1f\xfc\x0b\x8f\xfe\x11\x75\x3d\xeb\xc3\xe8\xb2\ \xda\x6c\x5a\xcd\x41\x41\x3a\x7e\xee\xcb\xef\xa9\x23\x24\x47\x74\ \x16\x1d\x18\xfa\x38\x0f\xe1\x55\x93\xcc\xcb\x50\xa9\x28\xd3\x72\ \x6f\x6b\x7f\x09\xbf\xe4\x94\x48\xd5\xba\x7d\x11\xae\x52\x1b\xbc\ \x43\x53\x56\xb7\x14\xd4\xf5\x87\x46\x23\x2d\x23\xcc\x95\x9f\xdd\ \x23\xe6\xa1\xf2\xfa\x99\x6d\x85\x17\x55\x5c\xa7\x48\x84\x60\x58\ \x56\x1b\x49\x8b\x31\x2e\xba\xf2\xf6\x12\x5b\x52\x38\xd8\xbd\xe9\ \x52\x40\x27\x9c\x55\x55\x1e\xdb\x26\x15\xca\xd7\xa5\xe4\x21\x41\ \xcd\x76\xcc\x29\xd3\x40\x49\x23\xc5\x43\xeb\x7e\x60\xcf\xcb\x6a\ \x48\x24\xfb\x53\xb6\xb3\x6d\xc9\x07\xae\x2c\xc7\x69\xc7\x5c\x54\ \x78\x1b\x50\x84\x95\x13\x88\x89\xf4\x1f\x14\xe5\x1c\xab\x41\x13\ \xc4\xce\x4a\xfb\x7f\x4d\xfd\x89\xed\xc7\xa9\xf6\xb8\x97\xed\x2e\ \xd3\x33\xe0\x1b\x4d\xe5\xb9\x6a\x7a\x63\xaf\x84\x86\x54\xca\x1b\ \x21\x20\xf6\xc9\x2b\xc6\x3e\x98\xef\x56\x1d\x8a\xed\x6f\xbd\x5b\ \x5a\xb8\x5a\xe6\xc7\x9b\x15\xd1\x94\x3c\xc3\x81\x68\x57\xd0\x8e\ \x2a\x9f\x9b\x3a\xd5\x79\xea\x67\x4a\xe6\x5b\xe5\x45\x9e\xc2\x62\ \x5c\xca\x5d\x69\x61\x69\x0a\x11\xd9\xec\x47\xa8\xcf\xe1\x4f\xfd\ \x01\x21\xb8\x3a\xc5\x23\xca\xdb\x7a\xba\xe6\x94\xa4\x76\x48\xf1\ \x07\x03\xd8\x55\x26\xae\x87\x50\xab\x2e\x26\x56\xee\xbf\x08\x97\ \x3f\xaa\x74\xd3\xd7\xb1\x64\x66\xff\x00\x6b\x72\xe6\x14\xa4\x18\ \x89\x94\x82\xe8\x5a\x7e\xf2\x76\xe7\x3b\x87\x72\x3b\x81\x4e\x49\ \xc9\x38\x03\x9a\xa0\x35\x56\xa6\xba\x6a\x8b\xc5\x8f\xed\x72\xd8\ \x8c\xf4\x2d\x71\x15\xa3\x67\x66\x29\xf1\x62\x32\x99\x3e\x1a\x5e\ \x79\x79\x24\x6f\xdc\x39\xc2\x52\x77\x80\x33\xcd\x74\x53\x0d\x06\ \xc7\xcd\x17\xca\x86\x52\x9f\x16\x4f\xb0\xf1\x09\x0c\xb5\x9c\x64\ \xfa\xd2\x67\x25\x2d\x60\x80\x31\x4b\x8e\x08\xe6\x91\x3c\xc0\x56\ \x54\x38\xaa\xc1\xa6\xf5\x34\x4d\x34\xb4\x13\x00\x09\xc9\xf5\xa4\ \xb3\x63\x64\x9e\x29\x72\x12\x94\xf9\x48\xed\x5b\x5f\x40\x2d\x53\ \xf3\xe5\x62\x63\x0b\x94\x8f\x56\x2d\xb6\x93\x6c\x92\xfd\xed\x31\ \xbe\xc0\xda\x0a\x9e\x2f\xfd\xc0\x9f\x9a\xe2\xad\x53\x72\xd3\x8d\ \xea\xa7\x13\xa6\x5c\x71\xa8\x2a\x59\xdc\x1d\x3f\xb3\x3c\xfe\xee\ \x41\x56\x09\xf7\xae\xfa\xea\xbe\x93\x87\xaa\xb4\xec\xab\x3c\xf2\ \xf8\x8c\xf8\x1b\xfc\x25\xed\x51\xda\x42\x87\x3e\xd9\x1d\xaa\x86\ \x73\xa4\x9a\x62\xc6\xb5\x18\x36\x64\x2d\x7d\xbc\x49\x07\xc4\x3f\ \xc7\x8a\xc5\x89\x4e\x73\xd2\x2d\xdf\xe4\x5a\x85\x55\x87\x93\x95\ \xce\x74\xbb\x5a\xda\x96\xe2\x1d\xb7\x87\xdf\x2b\x38\x4b\x69\x41\ \x3b\xd5\xec\x90\x29\xb6\x6e\x92\xd4\xc2\x40\x6d\xeb\x1d\xc1\xa5\ \x67\x01\x0e\x30\xa4\x63\xfe\xd7\x6a\xbf\xf5\x45\x9e\x2c\x7b\x6a\ \xe3\xcb\x65\xb6\xa3\x23\x2a\x05\x23\x69\x6c\x8f\xde\x49\x1d\x8d\ \x55\x77\xcd\x7a\xa6\x9e\x31\xe1\xc8\x5d\xdd\x49\x4e\x13\x22\x40\ \x52\x55\xff\x00\x58\x67\xcd\xf5\xe2\x95\x1a\x55\x29\x3c\xb2\x36\ \x54\xc5\xac\x46\xb4\xe2\x37\x47\xb5\x45\xd3\xd6\xd2\x97\xe5\x37\ \xf6\xd7\x9b\x0b\x96\x73\xc3\x69\xdc\x30\x81\xef\xdb\x27\xdf\x03\ \x1e\xf4\xc7\x72\x90\xdc\xe9\xec\xbe\xb6\x9c\x6a\xda\x95\x12\x95\ \xa8\x60\xad\x23\xef\x63\xdc\xfc\x57\xaf\xb4\xe5\xd1\xe7\xee\x17\ \x0b\x82\x5d\x79\x78\x27\x68\x2b\xe7\xb0\x1c\x71\xf0\x00\xa7\xa4\ \x68\x89\x8d\x36\xdc\x8b\xf3\xff\x00\x65\x8c\x96\xc2\x92\xd1\x58\ \xde\x12\x7b\x25\x5e\x89\x27\x9e\x3d\x2a\x54\xd4\x6f\x14\xf5\x7e\ \xb4\x23\x87\xc3\xb4\xe6\x44\x6e\x46\x19\x95\x21\x70\xbc\x64\xc5\ \x71\xc5\x16\x43\xbc\xa8\x23\x77\x1b\x8f\xa9\xc6\x33\xf3\x5d\x09\ \xd0\x2b\xdc\x49\xf2\x61\x3b\x1e\x57\x8b\x30\xc2\x6e\x3d\xc1\x95\ \x0c\x29\x0a\x6b\xca\x83\xf2\x0a\x7d\x7d\xc5\x52\x9a\xe2\x74\x59\ \x0a\x8c\x21\xb6\xcb\x48\x65\x3e\x1b\x69\x6d\x20\x00\x90\x06\x3e\ \xbf\x5a\x9b\xfe\x8a\x8f\x1f\xe9\xd5\xc1\xa5\x94\x80\xe4\x1d\xd9\ \x50\xec\x43\x89\xc7\xf3\xc7\xe3\x48\xc6\xd3\x5c\x2c\xcf\x91\xab\ \x03\x51\xba\xa9\x2e\x67\x5b\x82\xd2\x23\x07\x83\x45\x6b\xc0\x1e\ \x51\xdb\x9e\xe7\xd7\x1c\x53\x16\xa4\xb6\x34\x82\x64\xc6\x65\xa0\ \xc1\x4f\x88\xb4\x21\xb0\xa0\xbc\x9e\x4a\x49\xec\x3d\xc0\xf7\xf8\ \xa9\x1c\x21\xb1\xa0\xa0\x82\x49\x47\xe3\x5a\xe5\xc6\x5b\xc9\x75\ \xb4\x3a\x5b\x5f\x2a\x6f\x27\x09\xc9\xee\x0f\xc1\x1f\x85\x72\x2d\ \x74\x75\xe3\x2c\xac\xae\x11\x65\x87\x71\x43\x49\x7d\xb7\x5d\x70\ \xb7\xb9\x58\x4e\x32\x9c\x9f\x5c\x76\xc1\x3f\x95\x7b\x74\xd0\x59\ \x82\x96\xd8\x91\xfb\x2d\xa0\x05\x31\xc9\x4e\x47\xa8\x1d\xf3\xeb\ \x8a\x9a\x16\x03\x72\xd6\x10\xde\xf6\x52\x72\xf2\x14\x13\x96\xbd\ \xf0\x3d\x52\x4e\x2a\x47\x62\x4c\x2f\xba\xd2\x52\xb6\xf0\x49\xcf\ \x73\xee\x3e\x71\x55\x85\x24\xf4\x63\x9e\x2a\x70\xd5\x14\x5c\xed\ \x0b\x70\x8c\x94\xc9\x6d\xbf\x15\x0c\x84\xa0\x06\x89\x19\x23\xe3\ \x9c\x11\xf9\xd2\x17\x2d\x2e\x43\x49\x5c\xb6\x65\x3e\xea\x94\x3c\ \x13\x90\x48\x1e\xb9\x1e\x9d\xbd\x79\xae\x9e\x30\xa3\xc8\x28\x25\ \x2d\x00\x46\x42\x47\xef\x1f\x9f\xf5\x9a\xd1\x3f\x48\xd9\x26\xc7\ \x5b\x1f\x62\x43\x24\x1c\xe1\xb2\x40\xe7\xbe\x47\xaf\xad\x12\xc2\ \x4b\x78\xb2\xd0\xe9\x34\xbd\xf4\x73\x73\xca\x92\x72\x11\x18\x04\ \x25\xc1\xb5\x41\x24\xee\x18\x39\xc8\xf5\x39\xe3\x3d\xab\x6c\x49\ \x57\x24\x20\xa8\xdb\x1f\x4b\x9e\x38\xf0\xc0\x5f\x07\x00\x8e\x31\ \xce\x06\x7b\x9f\x8c\x55\xd9\x75\xd1\x01\xb6\xc7\xd8\x5c\xf0\xb0\ \x0e\x06\x3f\x21\xff\x00\x95\x47\x67\x69\xc5\x31\xbd\x4b\x8e\x94\ \x85\x61\x1b\x92\x0e\x4f\x3d\xbe\x9d\xeb\x34\xe9\xd4\x86\xe8\xd3\ \x0c\x55\x29\xad\x0a\xc5\xc8\xf7\xa7\x5a\xf0\x5e\x0c\x23\x78\x2b\ \x74\x00\x4a\x46\x14\x32\x33\xc6\x38\xf6\x35\x82\xf4\xf3\x4e\xc9\ \xcc\x89\x2e\xba\xa2\xb5\x06\xb7\xab\x6a\x06\x4e\x71\xc7\x07\x80\ \x07\xf2\xa9\xd4\xbb\x6a\xd8\x65\x69\x4c\x72\xfa\x57\x94\xa8\x2d\ \x38\x00\xe7\x24\xa8\xfb\x7d\x3e\x29\x13\xd1\xdb\x53\x4b\x4c\x72\ \x92\x55\x80\xa2\x3d\xbf\xf2\xf7\xa4\x39\x49\x6c\x68\x55\x13\xd8\ \x8e\x38\xcb\x71\x5f\xfb\x34\x76\x5a\x68\x38\x47\x88\xa6\xbc\xa5\ \x2a\xce\x70\x7f\xb5\x93\xeb\x59\xb1\x6e\x2a\x7c\x3b\x32\x3b\xeb\ \xdd\x92\x86\x5b\x40\x52\xb2\x3f\x78\x9c\xf1\x9c\x7a\xd4\x91\x98\ \x28\x2c\x78\x88\xda\xf3\xe5\x01\x28\x0d\xa7\xcb\x91\xea\x4f\x6a\ \x72\xb5\xdb\x84\x73\x94\x21\xb4\x12\x09\xc2\x07\xaf\xa7\x34\xbd\ \x59\x57\x51\x24\x37\x59\xed\xaa\x43\x0a\x43\x81\xad\xff\x00\xf0\ \x4d\x04\x7d\xc2\x7d\x33\xea\x7e\x6b\xcd\x73\x6b\x2d\x68\x8b\xb3\ \xce\x20\x94\xb7\x11\xce\x0f\xb6\xde\xd5\x34\xb4\x5b\x5f\x59\x0e\ \xed\x04\x81\xe5\xdc\x30\x09\xa4\xdd\x4e\x65\x0a\xd2\x53\xa1\xa9\ \x29\x52\x5e\x65\x48\x71\x25\x45\x20\xa4\xf0\x46\x47\x23\x8f\x6a\ \x74\x68\xda\x39\x99\x92\x55\xfa\xe9\x23\x92\x74\x8d\x95\xfd\x4b\ \xa3\x66\xc0\x45\xdd\xc6\xee\x16\xc4\x87\xe0\x42\x75\x25\x41\xe4\ \x14\xf9\x83\x67\xba\x54\x9c\x13\xec\x47\xd2\xa1\x53\x63\x48\x83\ \x7c\x75\x2f\xb4\xb6\x9e\x52\xb2\xe6\xe4\xf6\xcf\xde\x18\xf9\x39\ \xa9\x5c\xd3\x2f\x4a\x6b\x3b\xad\xbe\x13\xeb\x71\xfb\x5c\xa5\x16\ \x55\x9f\x32\xd2\x85\x03\xb4\xe3\xdd\x2a\x20\xfd\x4d\x49\xe6\xdb\ \xed\x57\xab\x95\xc6\x59\x77\x88\xef\x86\xe3\x15\x73\xfb\x32\xe6\ \x52\x09\xf5\x21\x27\xf9\x57\x5e\x15\xa5\x4e\xa5\xd2\xbc\x65\xaa\ \xf8\xd8\xc8\xe8\xd3\xab\x04\xdb\xb3\x8f\x6f\xc8\xd1\xa4\x5b\x6c\ \x37\x21\x6d\x24\xa1\x68\x1b\x5d\x4a\x53\x95\x14\x9f\x6c\xf0\xa0\ \x06\x46\x3d\xbd\xea\x40\xe3\x0b\x7e\x32\x98\x88\xfa\x6d\xef\x6c\ \xc3\x5b\x1b\xdc\xd8\xe3\x70\xcf\xf7\x08\x27\x9f\x4f\x6a\x6b\x5b\ \x4c\xda\xe2\x96\x5a\x01\x32\x49\x21\x2b\xcf\x74\xf7\x19\x1e\xa3\ \xe6\xb1\x8b\x76\x99\x16\x64\x55\xb8\xe7\xf5\x45\x45\x0b\xf4\x71\ \x0a\x18\x29\x27\xd8\x91\xd8\xfa\xd2\x2b\x46\x51\x86\x6b\x6a\xc7\ \xd3\x9a\xab\x5a\xd0\x92\xb2\xfb\x09\x51\x2a\x54\x2d\x42\x88\x57\ \x86\x19\x86\xe9\x50\x27\x24\xa5\x2b\x57\xb2\x55\xdb\x24\x72\x0f\ \x63\x5d\x5d\xd1\x75\xb1\xf6\x26\xc2\x46\xde\xdd\xfb\x8a\xe6\x6d\ \x40\xeb\x1a\x96\x04\x78\x56\xe4\xb6\x5c\x69\xc0\xec\x17\x15\xc9\ \x69\x59\xf3\x32\xaf\x74\xe3\x91\x9f\x6c\x57\x4b\x74\xcd\xa6\xe2\ \xb4\xca\x77\x02\x43\x69\x07\x1e\xbc\x72\x6b\xb3\xd1\x52\x94\x5a\ \x8c\x79\x9e\x53\xa6\x24\x9d\x65\x3b\x59\xf3\x2e\xf8\x2b\x42\x90\ \x12\x71\x58\x4b\x80\x87\x3c\xed\x1c\x2a\x91\xdb\xc0\x2c\x83\x9e\ \x3b\xd3\x8c\x10\xb2\x4a\xca\x8e\xdf\x40\x6b\xab\x2b\xc1\xb6\x99\ \x95\x35\x35\x66\x8d\x50\x9d\x71\x9f\xd8\x3c\x9c\x7b\x1a\x29\xc1\ \x48\x42\x8f\x99\x20\xd1\x49\x94\xd4\x9d\xc6\xc6\x0e\x2a\xd7\x2b\ \xce\x9d\xa4\x33\xa2\xed\xea\x6d\x1f\x77\xc4\xc7\xff\x00\xb8\xaa\ \x96\x89\xef\x1e\x12\x85\x7e\x55\x5c\xe8\x3b\x93\xcb\xd2\x70\x62\ \x45\x47\x3f\xb4\xca\x87\x3d\xdc\x55\x4d\xe0\x25\xc6\x98\xcb\xcb\ \x0a\x56\x3b\x57\x42\x54\xd6\x54\xe4\x73\x28\xd4\x76\x4a\x23\x92\ \x67\x29\x6a\x0d\x38\x80\x73\xf8\xd6\xa9\x56\x64\x38\xe0\x90\xc1\ \xf0\x96\x39\xc0\xf5\xa2\x13\x8c\xa5\x45\xe7\x56\x94\x81\xc7\x7a\ \x71\x8f\x2e\x3c\x80\x7c\x27\x01\xf6\xc1\xac\xd2\x72\xa6\xef\x04\ \x6b\x8a\x8d\x45\x69\xb2\x0a\xab\x24\x0b\x7e\xa1\x7e\x60\x92\xe4\ \x9b\xcc\xa4\x04\x9f\xb4\xcb\x2e\x3a\x96\x81\x52\x82\x10\x92\x7c\ \xa8\xc9\x27\x81\xe9\xcf\x6a\x79\x8d\x12\x63\xb8\x0a\x46\xc1\xea\ \x4d\x73\xfe\x9c\x76\xf5\x65\xd4\xbd\x5b\xd7\x0f\xfe\xa4\x9d\x76\ \xb1\x3e\xa0\xdb\xef\x40\xdc\xe2\x5d\xf3\x20\x16\xd4\x55\x96\xd1\ \xb3\x72\x4a\x47\x70\x47\x3c\x54\xf6\xfb\xd5\x1d\x4d\x61\xd0\x16\ \x4d\x43\x74\x6e\xc0\xc4\x8d\x51\x2a\x38\xb5\xa4\xf8\x9e\x04\x08\ \xee\xa0\x2b\xc4\x90\xa2\x41\x59\x4a\x4a\x49\xc6\xd1\xc9\xf6\xa9\ \x58\x96\xa3\x64\x8c\x71\xe1\xbb\xca\x57\x5f\xdd\x8b\x46\x5d\xb8\ \x33\x18\x2d\x3c\xac\x77\x34\x8b\xef\x24\x28\x0a\xaa\xe1\xf5\xc5\ \xd6\x34\x86\xb6\x7e\xe6\xab\x5d\xe6\x5e\x9d\x5b\x29\x8b\x2a\xdb\ \xb9\x11\xe7\xa5\xe3\xb5\x07\x04\xab\x6e\xd3\xf7\xb9\xfa\x76\xad\ \x7d\x32\xea\x5c\xfb\xce\xb8\xfe\x8b\x5c\xa7\xd8\xae\xa2\x45\xb8\ \x4e\x66\x55\xa4\x29\x28\x65\x7b\xb0\xb6\x16\x14\xa5\x64\x81\x93\ \x9c\xfb\x67\xbf\x17\xa3\x55\xc9\x75\xb7\x26\xa5\x5a\x59\x96\x5e\ \x7f\xd1\x7b\x5b\x17\xbe\x2a\x6b\xdb\x8f\x2c\x7b\x73\xde\xa8\xeb\ \xd2\x46\xb2\xfd\x21\x62\xe8\x9b\xd3\xd2\x5c\xb0\x41\xb2\xaa\x61\ \x84\xd4\x85\xb4\x87\xde\x2a\xfb\xcb\x28\x20\x9c\x05\x0c\x73\xc6\ \xdf\x93\x9a\xfa\xe9\xa9\xf5\x54\x7e\x84\xeb\x3b\x53\x37\xb7\x96\ \xdd\x8f\x50\x1b\x7a\x24\x3e\x54\xb7\xcc\x62\xe0\x09\x42\x57\x9c\ \x82\x14\x33\x93\x9e\x09\x1e\xd8\xcc\xf4\xa8\x39\xe2\xd2\x83\x4d\ \x76\xf9\x1d\x71\x1f\xfa\x84\xfd\x29\x35\xcc\xf9\x00\xf4\xa6\x3d\ \x2d\x2e\xe1\x68\xe9\xfa\x67\xea\x49\x8c\x4c\x7a\x24\x45\x48\x79\ \xd8\xcc\x96\xd2\x5b\x4a\x4a\x80\x09\x2a\x3c\xed\x1e\xfc\x9a\xa6\ \x6c\x1d\x70\xba\xdd\xaf\x3a\x69\xc9\xb2\xb4\xda\xe2\x6a\x09\x8a\ \x87\xfa\xb2\x21\x59\x99\x6e\x25\x7b\x1a\x53\x8a\x2a\x21\x5b\x8e\ \x33\xe5\x1c\x11\xda\xa2\x3a\x4f\x51\xd5\x71\x11\x84\x12\x7b\xb2\ \xf6\xc7\x00\x7b\xf1\x4b\xc4\x54\x96\x86\x06\x0e\x2b\x9f\xec\xdd\ \x55\xd5\x53\x34\xec\x6b\x7a\xd9\xb7\xa7\x56\x2b\x55\x8b\x13\x8d\ \x86\x54\x1b\x42\x07\x2a\x77\x69\x56\x78\x00\x8e\xfe\x9d\xa9\xd7\ \xaa\x7d\x58\xbd\xe8\x9b\xa4\x89\x2c\x6a\x1d\x23\x75\x8f\x16\x6a\ \x59\x7e\xcc\xc3\x2e\x19\x4d\xb2\x54\x79\x53\x81\xc2\x90\xe8\x03\ \x90\x40\x1f\x1e\xf7\xa9\x37\xa5\x84\xc3\x11\x4d\x45\xc9\xec\x5b\ \xe9\x0d\x2e\x53\x91\x1a\x96\xca\xe4\x34\x01\x71\xa0\xb0\x56\x90\ \x7b\x12\x3b\x8f\x4a\x5a\xd4\x62\x1b\xda\xa3\xc5\x50\x73\x6f\x33\ \x34\xef\x59\x7a\xcd\x7d\x80\x1a\x32\xe0\x59\x22\x3e\xc8\x75\x3b\ \x93\xb9\x31\x9b\x23\x23\x23\x22\xa4\x48\xea\x56\xa2\x53\xdd\x25\ \x41\x4c\x1c\x6a\xd6\x9c\x5d\xcb\xf6\x47\x82\x94\x34\xa1\xe1\xf9\ \xbc\xbc\xac\xf7\xcf\xa5\x2d\xd4\x93\x2f\x0a\xd4\xd3\x77\xed\xfa\ \xd8\xb8\x50\x84\xa1\x24\x24\x56\xb0\x54\x49\x04\xd5\x1d\xac\x7a\ \xbb\x7a\xd3\x1a\xb2\x13\x49\xd4\x3a\x4a\xfb\x11\xfb\xb2\x20\xc9\ \xb7\x41\x61\xc0\xfc\x56\xd4\xa3\x85\x78\xbe\x21\x49\x58\x03\x04\ \x10\x39\x3d\x87\xa6\xb8\x53\xb5\xb5\xcb\xf4\x95\xd4\x56\xf8\x37\ \xf8\x0c\xb7\x12\xd4\xdf\x86\x87\xa2\xad\x6d\x86\x54\xa4\xa9\x29\ \x09\x0b\x18\x58\x2b\xe5\x7e\xb8\xec\x2a\x12\x7b\xb2\xd2\xc5\xc2\ \xf6\x8a\xd6\xf6\x2f\x26\xdf\x61\xd4\x95\x34\xf2\x1c\x48\x51\x49\ \x28\x50\x20\x10\x70\x47\x1e\xa0\xfa\x56\x69\x50\xdb\xc1\xcd\x73\ \x76\x85\xea\x1c\x8d\x3b\xd1\xdf\xb5\x5b\x6c\x96\x86\xaf\x37\x6d\ \x52\xe5\xb6\x33\x6d\x36\xb4\x47\xf1\x96\x13\x97\x96\x37\x13\xe9\ \xd8\x28\x7a\x63\x81\x52\x19\x9d\x48\xd5\x9a\x7e\x4e\xb2\xd3\x97\ \xa1\x69\x93\x79\xb2\xd9\x4d\xda\x0c\xb8\xac\xad\x0d\x3c\x8e\x01\ \x0b\x6d\x4a\x38\x21\x4a\x03\x83\xc8\xa9\x4a\xe8\xaa\xc6\x42\xc9\ \xb2\xe9\x74\x05\xe4\xa7\xbd\x64\xd9\x2a\x6f\x6f\xad\x52\x56\x0e\ \xa6\x6b\x13\xa8\xf4\x2a\xee\xf1\xec\xea\xb5\x6b\x26\xdd\x2c\xb1\ \x1d\xb7\x03\xd1\x76\xa5\x24\x12\xb2\xac\x2b\x3b\xc1\x23\x68\xf5\ \x1e\x99\x2e\x9f\xa3\xb1\x79\x5a\xa3\xa9\xde\x3a\xdc\x3e\x1e\xa9\ \x90\x12\x16\x49\xc2\x77\xaf\x00\x67\xd2\xac\xdd\x90\x43\x11\x19\ \xcd\x25\xcf\xed\x72\xc7\xb8\xc5\xde\x92\x95\x0e\xf5\x11\xbe\x59\ \x50\x5a\x51\xd9\x92\x7b\x55\x88\xe2\x12\xea\x4f\xbd\x34\xdc\x63\ \x05\x24\x82\x29\xd4\xaa\x58\x6d\x48\x5c\xe2\x0f\xd2\x59\x9d\x71\ \xf6\x81\x6c\x81\x65\x92\x9b\x52\x8e\x54\xf4\x70\x57\xe3\x9f\x65\ \x63\xb0\x1e\xc7\xd7\x9f\x6a\xa9\x74\xc7\x4d\x35\x35\xd4\x29\xf9\ \x6c\x8b\x73\x29\xed\xf6\xa4\xa9\x25\x7f\x41\x8a\xfa\x07\xa8\x2c\ \xc9\x75\x45\x41\x27\x35\x0d\x9f\xa6\x0b\xab\xf3\x24\x91\xf3\x59\ \x65\x47\x11\x52\x76\xd3\xc4\x21\x5b\x87\x1b\x24\x72\x2d\xd7\x41\ \x6a\x02\xb4\x46\x8c\x84\x48\x6c\x01\xc8\x1b\x02\x4f\xbe\x69\xbd\ \x1a\x32\xea\x64\x98\xf3\x58\x97\x35\xd0\x32\x96\x9a\x51\xf0\xd0\ \x33\xdd\x4b\x35\xd6\x92\xb4\x93\x63\x3e\x5c\x53\x4c\xdb\x03\x2c\ \x20\x82\xad\xa3\xd4\x66\x99\x53\xa3\xea\x25\xb9\x68\xf4\x84\xa1\ \xba\x4c\xe5\x6b\xae\x81\xbb\x21\x45\x61\x70\xd3\x9e\xc8\x42\xc9\ \xc0\xfa\xe2\xa4\x1d\x1b\x65\x5a\x67\xa8\x71\xd6\xb9\x49\x79\x32\ \x19\x53\x0b\x00\x14\xf7\x20\xe4\x67\xd0\x10\x2a\xde\xbe\xdb\xa2\ \x21\xb2\xae\x30\x7b\x1c\xf7\xa8\x02\xa1\x32\x9d\x47\x0d\xc8\xec\ \x27\xc7\x32\x02\x77\x84\xe1\x5b\x7d\x46\x7f\x2a\x45\x7a\x31\x54\ \x65\x79\x2d\x87\x60\xf1\x73\x9e\x22\x2e\xdc\xce\xa1\xb1\x3a\x5d\ \x8c\x84\xac\x80\xb4\xe0\x0c\x9c\xe4\x7f\xac\xd2\xd7\x99\x56\xf3\ \xcf\xec\xf1\xfe\xb9\xa6\xed\x1c\x80\xf5\xb1\x90\xf8\xc3\x88\x18\ \x3c\x7f\xaf\xc2\xa4\x25\x05\x0a\x2d\xbb\x8d\xa7\x80\xbf\x43\xf1\ \x5e\x7e\x31\xba\x3d\x14\xa5\x69\x08\x43\x01\xe4\x6c\x70\xf9\xd2\ \x0a\x4a\x88\xe7\x1f\x51\xdf\x8f\x4a\xf1\x88\xea\x8a\xc6\xd7\x4b\ \xc8\x59\x23\x12\x5a\x1b\x93\xc7\xa9\x1e\x87\xf9\xf3\x4b\x7e\xcc\ \xa4\xb8\x36\x1f\x32\xbe\x3b\x7d\x29\x54\x55\xad\xa1\xe6\x3c\x91\ \x8e\x78\xff\x00\x42\xaf\x15\xae\xa5\x5c\xb4\x3c\xb7\xc9\x74\x2b\ \x6e\x03\xc9\xc8\xf3\x27\x9c\xfc\x91\xdc\x53\xfb\x0f\xb6\x5a\xf2\ \xe3\x70\xc7\xaf\x7a\x65\x92\xcc\x77\x16\x14\xa6\x46\xff\x00\x45\ \xa7\xca\xa1\xf8\x8e\xf5\x93\x29\x2b\x40\x6c\xad\xd5\x03\xc6\x4a\ \xb3\xc5\x35\x4a\xc2\x25\x14\xf5\x16\xc9\x79\x4a\x56\xd4\x05\x67\ \x39\xc9\x38\x14\x95\xe8\xee\x48\x3e\x7f\x0d\x1c\xfd\xe4\x8d\xc4\ \x7b\x71\x4a\xa1\x42\x61\xa4\xf0\xd2\x4a\x7d\x77\x1c\xe7\xe4\xd2\ \xf0\x50\x1b\xda\x9c\x04\xf6\xc2\x7b\x51\x6b\xee\x56\xf6\xd8\x8b\ \xb9\xa7\x58\x71\x68\x5b\xac\xa9\x64\x02\x32\xea\xb8\xcf\xc2\x7d\ \xa9\x24\xad\x25\x09\xc5\x38\x95\x21\xbd\xaa\x56\x4a\x52\x00\xcf\ \x1e\xc2\xa5\x6b\x0a\x3c\xed\x01\x5d\xb2\x6b\xc0\xd0\x1f\x7c\x67\ \xdf\x03\x19\xa5\xba\x30\x7c\x87\x46\xb4\xe3\xcc\x89\xb3\xa5\xdb\ \x68\x6c\x42\x01\x40\xe0\x01\xfb\xa3\xd2\x96\x46\xb0\xb2\xc1\xce\ \x01\xe7\x22\xa4\x29\x28\xdd\x8f\xe0\x2b\x05\xa1\x64\xe7\x01\xb4\ \xfb\x9e\x4f\xe1\x54\x54\x60\xb9\x03\xaf\x37\xbb\x1a\x94\xc8\x40\ \x4a\x10\x82\x54\x79\x00\x76\x03\xe6\xa2\x7a\xed\x9f\x16\x1a\xa3\ \x24\x95\xa9\xd5\x24\x15\x27\xbe\x77\x0e\xdf\x02\xa6\xb2\xbf\x64\ \x85\x25\x03\x69\x3f\x78\xab\xb9\xfa\xd4\x79\xd8\x89\x7a\x4a\x9d\ \x74\x12\x12\x9e\xdd\xf9\xa4\xd7\x8d\xe3\x64\x32\x8c\xac\xf3\x33\ \x8f\xfa\x99\xa5\xae\xfa\x73\xa8\x92\x1e\x94\xd3\xf3\x62\x5c\xde\ \x72\x44\x69\x0c\xb0\x7f\xda\x16\xa3\x90\xc1\x09\xec\x42\xb3\xc7\ \x63\x48\xa4\x4b\x95\x09\x6f\xef\x07\xc4\x52\xc3\xb2\x22\xf0\x76\ \x38\x78\xf2\x91\xf1\x80\x47\xe5\x5d\x73\x73\xb3\x19\xd0\xde\x88\ \x48\x4a\x8a\x4e\x17\xec\x7d\xc7\xcf\x7a\xa0\x3a\xab\xa3\xdb\xd3\ \x32\x17\x7d\xb9\x38\xd4\x7b\x73\x48\x25\xb8\xed\x24\x85\x49\x7b\ \x38\x08\xcf\xf1\xfc\x0d\x3f\x0d\x55\xb9\x24\xd6\xb6\xb2\x17\x89\ \x6f\x27\x57\x6b\xdd\xae\xd2\x1e\xd4\x37\xe6\xb2\xc0\x53\x72\x52\ \xeb\x83\x72\x92\xe3\x64\x14\x63\xd8\xfb\x1a\x7b\xb7\xd8\xe5\xa1\ \x68\x2b\x69\x67\x1c\x6e\x03\x9c\x1f\x4a\xd9\xa0\xf5\x0d\xb2\xea\ \xe7\xda\x11\x21\xa6\x54\x80\x0b\x8c\xbc\xe0\x4a\x90\x7d\x7b\xf7\ \x1f\x35\x76\xe9\xb8\xf6\xeb\x8c\x64\x00\x1b\x24\xf2\x0a\x48\x20\ \xfe\x35\xe8\xf0\xf4\x28\x4e\x9e\x49\xbd\x4f\x31\x5f\x13\x56\x35\ \x1c\xb6\x65\x6b\xa5\xb4\x7c\x74\xdc\xcc\xc0\x87\xd2\xea\x95\xb9\ \x45\x47\x85\x1f\x7f\xaf\xf9\xd7\x42\xe8\x68\x31\xe2\x30\xd9\x70\ \xe5\x40\x53\x65\xb2\xc8\xdb\x6f\xa5\xb0\x81\xdf\x82\x2a\x7f\x67\ \xb5\xc5\x8e\xd2\x4a\xc0\x27\x1e\xb5\xbf\x0f\x84\xa7\x85\x8b\xb7\ \x33\x25\x4a\xd5\x2b\xcf\x34\x9d\xd8\xfb\x18\xef\x65\x2a\x6f\xee\ \x8a\xc5\xfb\xd1\x64\xf8\x6d\xb7\xdb\xbd\x64\xdc\x86\xda\x6f\x09\ \x1c\x0a\x8f\x5c\x64\x9f\x19\x6b\x09\x18\x1e\x95\x34\xe9\x29\xb7\ \x99\x68\x5a\xa5\x57\x05\xd5\x7a\x92\xdb\x5d\xcd\x12\xf0\x14\x36\ \xab\xd8\xd1\x51\x38\x8f\xac\x20\x38\x95\x6d\x57\xd6\x8a\xa4\xf0\ \x69\xbb\xc5\xd8\xb5\x3c\x6b\x4a\xd2\x57\x21\x9d\x33\x8b\x39\xcd\ \x3d\x13\xec\xe0\x84\x9d\xfe\x6f\xfa\xea\xab\x16\xd8\xcc\x86\x41\ \x12\x5c\xdc\x7d\x78\xed\x4c\x7d\x33\x4a\x63\xe8\xa8\x29\x40\x4e\ \x47\x88\x09\x3f\xfc\xc5\x53\xcb\xcf\x24\xa8\xec\x39\x34\xf4\xdc\ \x95\x91\x9a\x9a\x51\x8a\x6c\x41\xa8\x4a\x50\xe2\x42\x57\x84\x9f\ \x4c\xd2\x0b\x64\xe5\x46\x92\x97\x1a\x59\x29\x07\xcc\x33\x58\x5d\ \x1d\xf1\x64\x60\x9c\xed\x14\x89\xa6\x5c\x65\x4a\xc0\x38\x3c\xe4\ \xd3\x92\xd2\xcc\x5b\x96\xb7\x43\x03\xfa\x31\x4b\x87\xaf\x22\xb7\ \x79\x38\xd5\xef\x97\x54\xaf\xb2\xff\x00\xb9\x79\x51\xc6\x37\xf9\ \xfe\xf7\x7f\x2d\x39\x5c\x34\x82\x6f\xda\x2f\x4d\x69\x65\xdc\x5f\ \x8b\x3b\x4f\x26\x32\xad\xf7\x36\x1b\x1b\xda\x75\x84\x25\x21\x7b\ \x09\x23\x07\x19\xdb\x9e\xf8\xe7\x8a\x70\x65\xc7\x8b\x9c\x8f\x2d\ \x4a\xb4\x74\x55\x2d\xd5\x48\x5a\x30\x3e\x69\x15\x29\x53\x84\x5b\ \xb1\x6a\x71\x73\x96\x5e\xdf\xec\x6f\xbb\xe8\x9b\x96\xa2\xd0\x97\ \x6d\x39\xae\x35\x22\x6f\x2d\x4e\x42\x3c\x37\x63\x5b\xd3\x10\xb0\ \x52\x77\x05\x01\xb9\x59\x3b\x82\x4f\x27\x1c\x63\x1c\xd3\x7e\x8b\ \xb1\xea\x7b\x36\x1a\xbc\xea\xd6\xef\x31\x1a\x63\xc1\x69\xbf\xd5\ \xa9\x61\x79\xc8\xc2\x94\xb0\xb3\xb8\x80\x08\xec\x33\x9c\x9a\xb0\ \xee\x8e\x06\xe1\xa8\x77\xf4\xa6\x46\x90\x56\xa4\x23\x3d\xeb\x36\ \x1d\x75\x5b\x35\xd7\x84\x54\xd5\xb7\x21\x9d\x4e\xd1\x37\xc7\x64\ \xb1\xd4\x0d\x08\xff\x00\x85\xab\xad\xb1\x15\x1d\xb6\x14\x84\xa9\ \xb9\x8d\x28\xf2\x85\x6e\xe3\x70\x0a\x51\x07\xd4\x80\x3d\xb0\xd3\ \x6c\xe9\x64\x1b\x97\x43\xdf\xd2\xf2\x1e\xb9\xda\xe6\xdd\xde\xfb\ \x74\xe9\x13\x59\x41\x7c\x4a\xde\x09\x2a\x42\x55\xb4\xa7\xca\x00\ \x01\x5d\x8e\x73\x92\x6a\xeb\x68\x78\x51\xc0\xed\x81\x4c\x77\xb7\ \x49\x4e\x32\x72\x4e\x69\x54\xe3\xc4\x99\x35\x68\xc2\x0b\x37\x76\ \xc6\xbd\x2d\x6b\x96\x8d\x30\x6c\xd7\xfb\x9b\x57\x92\xe3\x4a\x65\ \xc7\x51\x18\x30\x95\xb6\x53\xb7\x6e\xd0\xa3\x8e\x33\xce\x7d\x6a\ \x31\xa4\x7a\x7f\xa8\x74\x64\x78\xd6\xbb\x76\xb6\x54\x8d\x37\x11\ \xe5\x2d\x98\x12\x2d\x88\x53\xc9\x6d\x4a\x2a\xf0\xfc\x7d\xfd\xb2\ \x4f\x3b\x73\xed\x8e\xd5\x31\xb3\x3d\x96\x53\xee\x9a\x77\x7d\x21\ \xc6\x0d\x44\xe3\x92\x63\xa1\x08\xd4\x82\x7c\xd1\x52\x5b\x3a\x4f\ \x1a\x1f\x59\x5d\xea\x0a\x6e\xea\x53\x4e\x38\xb7\x91\x6d\xfb\x3f\ \x95\x0f\x2d\xa0\xda\x9c\xdf\xbf\x92\x7c\xc7\xee\xfa\xfc\x52\x1b\ \xb7\x41\x9d\x99\x63\xbf\x58\x63\xeb\x37\xa3\xd9\xae\xd7\x15\x5c\ \xd3\x18\xdb\x90\xb5\xb7\x20\xff\x00\x69\xcd\xd9\x5a\x06\x07\x94\ \x6d\xe4\x0e\x7b\xe6\xd6\x00\xa7\xf0\xa7\x48\xca\xde\xd0\x35\x15\ \x55\xb5\x45\x29\xe1\xe9\x4a\xe9\xaf\x4f\x72\xa8\xb8\x74\xe9\xb9\ \x9a\xc7\x5b\x5d\xa6\xdd\x1c\x5b\x1a\xa2\x03\x70\x9d\x8e\x86\x76\ \xa9\x84\xa5\xa4\xb7\xb8\x2f\x71\xdc\x7c\xb9\xfb\xa3\xf1\xa6\xbb\ \x1f\x4a\xee\x30\xa6\x69\x39\x17\x1d\x5e\xe5\xc0\x69\x67\x31\x6f\ \x68\x40\x4b\x49\x0c\x94\x90\xa4\x1c\x2c\x92\xa3\x84\x79\xf3\xd9\ \x18\xdb\xce\x6a\xdb\xba\x30\x52\xbf\x15\x23\x8a\x6d\x29\x5e\xed\ \xd9\x38\xad\x10\x8c\x26\xae\x22\xa5\x25\x19\x6a\xbd\x5e\xff\x00\ \xc9\x50\xb3\xd1\x45\xb1\x67\x66\xc2\x9d\x5e\xf1\xb4\xc5\xbb\x26\ \xe9\x09\x83\x01\x1b\x90\xe8\x50\xcf\x88\xbd\xd9\x73\xcb\xb9\x23\ \xee\xe3\x76\x4e\x70\x05\x4e\x23\x68\x39\xac\xf5\x59\xed\x77\x6a\ \xd4\x62\x18\x99\x1d\xa8\xf3\xa1\x39\x04\x3b\xe2\xb6\x82\x93\x84\ \xaf\x70\xd9\x90\x90\x33\x83\x8e\x6a\x5c\xcb\x41\x79\x56\x73\x8a\ \xdd\x19\x44\x3b\xb4\x77\xcd\x56\x71\x56\xb2\x26\x9d\x18\x45\xa7\ \x62\xb6\x83\xd1\x28\x4d\xf4\xed\xcd\x29\x23\x50\x3c\xb9\x28\xbc\ \x2a\xef\x0a\xe0\xd4\x50\x85\x47\x7b\x8d\xbe\x42\xa5\x05\x01\xce\ \x79\x19\xcf\xa6\x2b\x7b\x9d\x24\x7e\x54\x6d\x51\x32\xf5\xa9\xd5\ \x72\xbe\xea\x0b\x7f\xea\xf5\x4e\x10\x43\x4d\xc6\x67\x18\x09\x43\ \x21\x67\xd4\x02\x7c\xdc\x91\xe9\xcd\x59\xc5\x45\x1d\xeb\x2d\xfc\ \x0f\x9a\x46\xa8\xd1\xec\xf4\xb6\xb1\x5b\x45\xe9\x49\x0e\xf4\xf1\ \xd3\x7d\xe3\x46\xa1\x68\xc7\xd9\x3f\xdd\x9b\x92\xda\x7f\xb7\xfb\ \x3f\xb9\xfd\xee\xf5\x29\xd1\xfa\x7e\xe3\x62\x9b\x7b\x7e\x76\xa7\ \xb8\xde\x9b\xb8\xcd\x32\x63\xb5\x28\xf9\x61\xa0\xe7\xf6\x48\xe4\ \xf1\xcf\xa6\x07\x03\x81\xce\x5f\x9d\x7b\x03\x68\x35\xa5\x4f\x00\ \x39\x34\x28\xb7\xa9\x2a\x14\xe0\xf4\xf5\xa5\x85\x01\x7b\x79\xad\ \x32\x4a\x56\x93\xcf\x34\x8d\xe9\xcd\xa0\x1c\xac\x71\x4c\xd7\x1b\ \xf3\x4c\xf6\x58\xcf\xc5\x33\x25\xb5\x61\x2a\xc9\x0b\x26\x21\xac\ \x12\xbc\x53\x05\xc9\xf8\xad\xe7\x25\x35\x57\xf5\x77\xae\x5a\x7f\ \x47\x2d\x51\x1c\x5a\xae\x17\x2c\x67\xec\x71\xd6\x3f\x67\xff\x00\ \xcc\x5f\x64\x7d\x39\x3f\x15\xcd\xfa\xb3\xaf\x7a\xfa\xfc\xea\xd1\ \x6f\x7d\x9b\x44\x75\x1e\x13\x11\x1e\x70\x3e\x56\xac\x9f\xc4\x62\ \xa8\xf1\x79\x7d\xd4\x14\xe8\x55\xad\xee\xa3\xa8\x7a\x81\xac\x6c\ \x9a\x66\xdc\xa9\x77\x59\xcc\xc4\x41\xc8\x40\x59\xf3\xac\xff\x00\ \x75\x23\x93\x5c\xcf\xd4\x1e\xb8\xcf\x9b\x70\x2c\x69\x76\x0b\x6d\ \x63\x68\x7a\x42\x02\x94\xaf\x90\x9e\xc9\xfc\x73\xf8\x55\x59\x70\ \x95\x3e\xe2\xeb\x93\xae\x92\xe4\x4c\x79\xc3\xf7\x9d\x59\x52\x96\ \x7e\xa6\xa7\xbd\x0b\xe9\xe2\x35\xa6\xa9\x11\xa5\x05\x22\xdb\x0d\ \x29\x7e\xe0\xf2\x0f\xde\x4e\x70\x96\x81\xf4\xdc\x78\xfa\x03\x59\ \x6b\xe2\xa4\xd5\xe6\xce\x9e\x1b\xa1\xf5\xbc\xd9\x96\x84\xe9\xee\ \xb2\xea\x0a\xd5\x7f\xbb\x5c\x65\x31\x6c\xdc\x4f\xda\x16\x49\x53\ \xa7\xd4\x36\x0f\x18\xf9\xed\xf5\xab\x5f\x4e\xe8\x78\xd6\x9b\x9c\ \x54\xa3\xc6\x73\xc3\x39\x53\x8f\xb8\x56\xb5\x7a\x66\xae\x49\xec\ \xc7\x89\x09\x98\x71\x18\x43\x2c\xa1\x3b\x1b\x6d\x00\x04\xa1\x20\ \x60\x00\x3d\x05\x47\x5e\x67\x32\xdb\x74\x02\x73\xc6\xe1\xee\x2b\ \xcf\xe2\x71\x35\x2a\x3b\x72\x3b\x14\x28\x53\x86\xb1\x44\xb6\xc8\ \xd2\x51\x1d\x21\x23\x09\xc0\xcd\x3f\xb4\x90\x50\x37\x84\xad\x23\ \xb8\x3f\x5e\x0d\x31\xd8\x14\x0b\x3c\x9f\x32\x7d\x71\xde\xa4\x6d\ \xa4\x2d\xa0\x15\xe5\xc7\xc7\x7a\x65\x3d\x50\xba\x9b\x88\xcc\x65\ \xa0\x92\xc8\xde\x9f\xec\x77\x1f\x87\xa8\xad\xad\xa5\xbe\x13\x92\ \x39\xc8\x0a\x38\x22\x94\x16\x9c\x6f\xcc\xde\xec\x7a\xe4\xff\x00\ \x8d\x6d\x61\xd1\xc8\x71\x04\xfe\x19\xa6\x24\x2d\xc9\x98\x35\x15\ \x63\x24\x21\x59\xc6\x38\x02\xb7\xb0\xd6\x50\xa1\x92\x9e\xe1\x4a\ \x00\xf2\x7d\x78\xa5\x6d\xa5\xb2\x06\xd5\x2b\x07\xdc\xf0\x3e\x94\ \xa5\x0c\xb3\xea\xea\xff\x00\x0a\xbe\x51\x6e\x62\x26\x94\x94\xa7\ \x1b\x14\x4f\xb9\x4d\x78\xae\x78\x50\xc8\x3e\x83\xd2\x9c\x76\x46\ \xef\x82\xe7\xc6\x6b\x62\x40\x49\xc2\x10\x84\x0f\xa5\x5b\x29\x19\ \xc6\xe6\x9a\x75\x5f\x71\x93\x81\xea\xae\x05\x6d\x11\x70\x09\x79\ \x40\xfc\x26\x97\x10\xa5\x8c\x14\xab\xe7\x9a\xd6\xe3\x58\xf3\x29\ \x58\x1e\x98\xa1\xa2\x33\x08\xd4\xd8\xc6\xd4\x24\x24\x63\xb6\x38\ \xad\x0b\x4a\xb3\xb8\xd2\xc7\x16\x0e\x52\x94\x94\xfc\x9a\x44\xf2\ \x8a\x95\xb5\x24\xe4\xfe\x42\x97\x26\x59\x08\x26\x6e\x52\xfc\x26\ \xc0\x27\x1e\x63\xed\xf3\x49\x14\xce\x3c\xa8\x19\x09\xe3\x3e\xe7\ \xde\x9d\x94\xc1\x59\x0d\xb3\xe6\x3d\xc9\xff\x00\x5f\xce\xa9\x3e\ \xb1\xf5\xc6\xd7\xa6\x14\xfe\x9f\xd1\xae\x47\xbb\x5f\x00\x29\x7e\ \x60\x21\x71\xa1\x1f\x60\x7b\x38\xe7\xc0\xe0\x7a\xe7\xb5\x2d\xc1\ \xc9\x9a\x68\x53\x9d\x59\x28\xc1\x6a\x49\xfa\x85\xae\x74\xc6\x82\ \x69\xb5\x5f\x24\xa9\x53\x9f\x41\x54\x78\x2c\x0c\xba\xee\x3d\xfd\ \x12\x93\xfd\xa5\x71\xf5\xae\x4b\xea\x36\xb4\xba\x6b\xdb\xe2\xae\ \xf7\x72\x50\xd3\x6a\x29\x8b\x09\x3f\xd4\xc6\x6f\x3d\x81\xfd\xe3\ \x8e\xea\xf5\x3f\x95\x31\x6a\x0b\xc5\xca\xe7\x3e\x4d\xd2\xeb\x25\ \xf9\xd3\x9e\x58\x53\xd2\x5c\x3b\x89\x3f\x3f\x81\xe0\x76\x14\xcd\ \x31\xe7\x64\xa8\x70\x42\x41\xf2\xf3\xc7\xe5\x5a\xe8\x61\xd4\x35\ \x67\x51\x46\x9e\x1d\x7f\xb4\x84\x97\x16\x13\xe2\x27\xc0\x58\x52\ \x89\xf3\x60\xfc\xd3\xff\x00\x4f\xb5\xde\xa0\xd0\xf7\x0f\x1a\x1b\ \xbe\x3c\x35\x28\x78\xd1\x9c\x39\x6d\x5f\x4f\x63\xf2\x29\x95\x2a\ \x08\xe3\x21\x38\x3c\x91\xfe\x5f\x35\x8b\x8d\xe5\x2a\x21\x29\x48\ \x03\x8c\x03\x85\x56\xde\x56\x67\x2b\x11\x86\x85\x5b\xbe\xde\x47\ \x63\xf4\xe7\xac\x1a\x67\x52\xb2\xd2\x63\x4d\x44\x69\xd8\x19\x89\ \x21\x41\x0b\xcf\xb2\x49\xe1\x7f\x87\x3f\x15\x6d\xc0\xd4\x0d\xb8\ \x91\xdc\x2f\xd4\x1e\xe2\xbe\x69\x29\x87\x10\xe7\x88\xd2\x94\x8d\ \x9e\x60\x52\x6a\xc6\xd0\x5d\x6c\xd6\x5a\x63\xc2\x62\x5b\xe9\xbb\ \xdb\xdb\xc0\x0c\xca\xc9\x5a\x47\xf7\x56\x3c\xc3\x8f\x7c\x8f\x8a\ \xd3\x4b\x13\x52\x9e\x9b\xa3\xce\xe2\x3a\x2e\x50\x77\x81\xdf\xad\ \xcb\x2e\xc7\xf1\x77\x01\xc5\x21\x61\x45\xe7\x8a\x73\x9d\xc7\x9a\ \xa1\x74\xc7\x5e\xb4\xb5\xfa\x22\x18\xfb\x7a\xed\x33\x14\x39\x66\ \x5f\x08\x27\xd8\x2c\x71\xf9\xe2\xac\x5b\x26\xb1\x8a\x96\x92\xb4\ \x3e\xcc\x82\xa1\x9d\xcc\xb8\x97\x07\xff\x00\x69\x35\xb6\x18\xfa\ \x4f\x49\x68\xce\x5d\x4a\x33\x83\xeb\x22\x74\xe0\x6d\xb5\x14\x13\ \x92\x7d\xa8\xa6\x48\x97\xd6\x26\x28\x28\x11\x93\xcd\x15\xb6\x33\ \x8c\x95\xd3\x13\x62\x51\xd3\x5b\x6a\x1c\xd1\x90\x96\xb5\x7d\xef\ \x13\xb7\xa7\xed\x15\x4f\x4f\x5a\xda\x84\xd2\xde\x6d\x1b\xf0\x9e\ \xd8\xa8\xa7\x4d\x2e\x32\x99\xd2\x70\x12\xa3\x94\x65\x7f\x87\xed\ \x15\x56\x0a\x16\x97\xa2\x85\x77\x4a\x85\x73\xa4\xea\x53\xb3\x6f\ \x43\xa1\x41\x52\xab\x0d\x16\xa8\xae\x19\x68\xca\x9c\xb7\x14\x36\ \x24\x2a\xb2\xba\x24\x15\x80\xd2\xc6\x00\xf4\xad\xf7\x75\x84\x4e\ \x71\x94\x61\x08\xdd\x93\x48\x46\xc1\x90\x09\x51\x3e\xa7\x9a\xe9\ \xad\x51\xcf\x7a\x3b\x1a\x9a\x59\x0a\x28\x3f\x96\x2a\x7d\xa5\x9e\ \x69\x50\x82\x52\x30\x40\xc1\xa8\x3e\x1b\x2a\xcf\xad\x4b\x34\xc2\ \x17\x1a\x12\xde\x70\x7d\xee\x40\x35\x9f\x12\xaf\x4c\xd1\x85\x95\ \xaa\x0a\xef\x4f\x05\x3c\x1a\x1e\x9d\xeb\xcb\x4b\x45\xd7\xf7\x94\ \xf9\x40\xe0\xd2\x17\x14\xa9\x12\x49\xee\x54\x71\x4f\xb1\x50\x98\ \xb1\x80\xcf\x38\xa4\x54\xfd\xba\x6a\x2b\x73\x45\x3f\xdc\xa8\xe4\ \xf6\x32\x9a\xee\x13\xb4\x1f\x4e\x6a\x35\x70\x90\x95\x3a\x54\xae\ \xc9\x3c\x52\xfb\xa4\x9d\xa8\x23\xf7\x95\x4d\x29\x6f\xc5\x77\x67\ \x24\xd3\x30\xd4\xf2\xab\xb1\x78\x9a\x99\x9d\x90\xb6\xd4\xf0\x4b\ \x83\x04\x61\x55\x23\x8a\xb0\xa4\x6d\x35\x13\x09\xf0\x97\xb7\xb1\ \x1f\x14\xf7\x6f\x91\xbd\xb1\xcf\x98\x55\x31\x34\xef\xaa\x2f\x85\ \xa9\x6e\xab\x37\x4a\x6f\xc3\x70\x9f\x43\x5b\xa0\x2f\x04\xa0\x9f\ \xa5\x6d\x71\x29\x7d\x9e\x3b\xd2\x24\x95\x36\xbe\xf8\x22\xb3\x2e\ \xbc\x6c\xcd\x2f\xa9\x2b\xa1\x45\xd1\xd0\x96\xb6\x7a\x9e\x29\x97\ \x3c\xed\x39\xc7\xc5\x3a\x5c\x47\x8c\xce\xf4\xe3\x8a\x68\x53\x9e\ \xc9\xe6\x9f\x87\x8f\x54\x46\x21\xf5\x85\xac\xb8\xdb\x43\xb7\x06\ \xbc\x5a\xb7\x3a\x14\xda\xbb\xd3\x4c\xb9\xbe\x12\x72\xae\x00\xa6\ \x19\xba\x9e\x3c\x57\x0a\x94\xea\x52\x90\x7c\xca\x52\xb0\x07\xd4\ \x9e\x2a\xd3\xcb\x4d\x66\x93\x13\xc5\xe4\x58\x3e\x3a\x52\x91\x93\ \xce\x29\x1c\x9b\x9c\x76\xf8\x2b\x48\xaa\x67\x58\x75\xb3\x48\x58\ \xdb\x50\x9b\xa8\x62\x97\x40\xc8\x66\x32\xbc\x65\x9f\x8c\x27\x20\ \x7e\x24\x55\x21\xab\x7f\x49\xe7\x1c\x52\xdb\xb0\xd8\xca\x8e\x4e\ \xd7\x66\xb8\x4f\xff\x00\x62\x7f\xce\xb0\xf1\xa3\xbc\x55\xcd\x51\ \x55\x6a\x7b\xa8\xeb\xb9\xda\x8a\x3a\x16\x40\x58\xed\xef\x51\xcb\ \xc6\xb5\x8f\x19\xb5\xad\x6f\x21\xa6\xd3\xf7\x96\xe2\xc2\x52\x3e\ \xa4\xd7\x0c\x5f\xba\xd3\xd4\x4b\xab\x8a\x5a\x6f\x0b\x84\xda\x87\ \xdc\x8a\x80\xd8\x03\xea\x39\xfe\x35\x0d\x9f\x74\xbd\x5c\xd5\xbe\ \x7d\xca\x54\x8d\xca\xca\xbc\x57\x8a\xb9\xfc\x4d\x51\xe2\x2a\x72\ \xb2\x1d\x1e\x8e\xab\x3f\x7a\x47\x5d\x6b\x9e\xbf\xe9\xbb\x41\x5b\ \x71\xe7\x9b\x93\xe9\xff\x00\x82\x8b\xca\x7f\xed\x9e\x3f\x2c\xd5\ \x1b\xae\xfa\xe3\xab\xf5\x31\x5c\x5b\x6b\x9f\xaa\x21\x2c\x10\x50\ \xc1\x3b\xd4\x3f\xbc\xe7\x7f\xcb\x15\x5a\x37\x17\xb1\x50\x2a\x23\ \xda\x94\x36\xdb\x4d\xe0\xaf\x03\xca\x41\x03\xd3\xf1\xa4\xca\x4e\ \x4e\xed\xdc\xeb\x61\xfa\x22\x9c\x35\x97\x98\x9d\xb6\x16\xfb\xc5\ \xc7\x9c\xf1\x49\xf3\x12\xa3\x9c\x9a\x56\x5b\x4a\x06\xd4\x24\x91\ \x91\xe9\x5b\x76\xe1\xad\xca\x04\x21\x27\xcb\x84\xf7\xaf\x76\x84\ \xa4\x93\x8c\x28\xe3\x83\xcf\xd3\xe9\x55\x6e\xec\xec\xd3\xa0\xa1\ \x1b\x24\x26\x98\xb5\x97\x58\x40\x48\x29\x49\x52\xb0\x3b\xf1\xdb\ \x3f\x9d\x74\x7f\xe8\x6f\x2e\x2a\xed\xda\x96\xdc\xa0\x91\x38\x2d\ \x89\x19\xf5\x53\x58\x50\xc6\x3e\x09\xfe\x35\xce\xae\x25\x26\x5b\ \x38\x6c\x94\xac\x28\x10\x3b\x9e\x33\xfe\x15\x3c\xfd\x1f\xb5\x22\ \x34\xaf\x55\xad\x32\x65\x3a\x96\xa0\xce\xcc\x19\x65\x47\x00\x25\ \xce\x12\xa2\x7e\x14\x13\xcd\x2a\xb4\x6f\x02\x1a\x93\x53\xd7\x7f\ \xc1\xd6\xf7\x26\xb2\xf9\xf3\x60\x63\x03\xe0\xe2\x90\x88\x89\x71\ \xb2\xde\x36\xee\xc1\x1f\x0a\xf7\xa7\x99\x6c\xa9\x52\x14\x36\x8c\ \xa5\x5b\x54\x01\xed\x8e\xc6\xb2\x62\x29\x28\x03\x8c\x0e\xc7\x15\ \xc9\x74\xee\xcc\xaa\x76\x42\x5b\x46\x5b\x56\xd7\x52\x37\x24\xed\ \x20\x8e\x47\xcf\xe7\x9a\x92\xb4\xb4\xa1\x09\x24\x9c\x11\xdf\xb8\ \xa6\x65\x36\x1b\x21\xc2\x95\x15\x27\x1e\x70\x79\x4f\x3d\x8f\xbd\ \x39\xb6\x85\x29\x85\x05\x36\x01\x28\x38\x58\x20\xf1\xe8\x47\xd0\ \xd3\x20\xb2\xe8\x52\x6d\x3d\x45\xc1\xcd\xaa\x47\x88\x4e\x36\x92\ \x94\x83\x9e\xdd\xf8\xa5\xac\xa5\x24\x02\x10\x82\x15\xc8\x20\xf7\ \x14\xc7\xa7\xd2\xea\xd8\x0b\x92\xa0\xfc\x94\x1f\x0c\xad\x49\x29\ \xe3\x3c\x63\xda\x9e\xe3\x29\x28\x07\x6a\xb2\xd9\x3c\xa7\xfb\x3f\ \x4a\x6c\x1d\xd5\xc4\xd4\x56\x76\x37\x00\xd2\x55\x84\x95\x6d\x23\ \xf7\x78\xe4\x7d\x7e\xb4\xa1\x94\xb6\x13\x93\x95\x28\x93\xca\x8e\ \x3f\x2f\x8a\x43\x25\x5b\x43\x6b\x24\x25\x5d\x81\x48\xc8\xcf\xcf\ \xe1\x43\x6a\x71\x45\x59\x75\xb2\xa5\xe4\x20\x81\x85\x24\x0f\x5c\ \x76\x3e\x9c\x55\xef\x62\x96\x1c\x52\x40\x58\xc1\x1c\x67\xca\x3f\ \xd7\x34\xa1\x2a\x42\x94\x50\x09\xe0\x02\x46\x29\x33\x39\x71\x96\ \xbc\x2d\x85\x04\xe7\x77\xef\x27\x1d\xeb\x5a\x7c\x54\xbc\xb7\x12\ \xb1\x94\x8c\x76\xce\x73\xcd\x5a\xe5\x77\x15\x3a\xff\x00\x87\xca\ \x10\xb7\x14\x3b\x25\x3d\xcd\x63\x20\xac\x8c\x9c\x63\xeb\xda\xb0\ \x82\x14\xb1\xe2\x29\x2a\x1d\xc1\xdd\xdc\x9e\xdf\x95\x6b\xbe\x5c\ \x2d\x96\x4b\x6a\xee\x57\xbb\x94\x4b\x64\x24\x0c\x97\xa5\x3c\x96\ \xd3\xf8\x67\xb9\xfa\x54\x6f\xa8\x5b\x5b\x20\xc6\xe4\xf2\x42\x47\ \x6a\x65\xd5\xb7\xfb\x16\x93\xb3\x2e\xef\xa8\xee\x6c\xdb\x60\xa7\ \x3b\x54\xe1\xcb\x8f\x2b\xfb\x2d\xa0\x72\xb5\x7c\x0f\xc6\xa9\x7e\ \xa5\x7e\x93\xf6\x88\x65\xcb\x77\x4f\x2d\xaa\xbb\x4a\xda\x40\xb9\ \x4d\x41\x6d\x84\x1f\x74\x36\x70\xa5\xe3\xdd\x58\x1f\x06\xb9\xab\ \x56\x5f\xf5\x16\xad\xbb\xbb\x77\xd4\x57\x49\x37\x49\xc4\x60\xba\ \xf2\xf0\x86\xff\x00\xba\x80\x38\x48\xf8\x48\xc5\x4a\xa6\xd9\xd2\ \xc3\x74\x75\x4a\x9d\x69\xe8\xbc\xfd\x7a\xb1\x65\xf5\x9b\xaf\xb7\ \x8d\x5d\xe2\xd8\x74\xca\x17\x61\xb0\xa8\x94\xb8\xb5\x2b\xfd\xa6\ \x58\xf6\x5a\x87\xdd\x49\xfe\xca\x7f\x12\x6a\x9e\x71\x29\x60\xb6\ \xda\xdc\x50\x1b\x54\x50\x80\x36\x9d\xc6\xb5\xbc\xe0\x49\x48\x69\ \xb0\x70\x7e\xf1\x1f\xce\xb5\x24\x29\x6a\xf1\x94\x4b\x8a\x3d\xf1\ \xdf\xe4\xf3\x5a\x21\x05\x15\xa1\xd3\x8e\x4a\x49\xc2\x2b\xd7\xd4\ \xd0\xb3\x29\xf5\x99\x0a\xca\x46\x30\x02\x46\x78\xf7\x35\x82\xd2\ \xb7\x1b\x48\xc0\xee\x33\x83\xc6\x7d\x29\x62\x88\x43\x4b\xda\xa0\ \x92\x0e\x70\x0f\x27\xde\x93\xc8\x79\x0a\x74\x00\x14\x40\xf4\x4f\ \x00\xf1\x4c\x42\x2a\x46\x29\x6a\xdd\xd9\xad\x0c\xb2\x12\x52\xf3\ \xa9\x4e\xd3\x92\x0a\x7f\x2f\xad\x60\xe6\x12\x93\xb9\x63\x1d\x81\ \x4a\xbb\xfe\x15\xb5\x42\x53\xa1\x3b\xd2\x52\x39\x03\x70\xc9\x48\ \xc7\x02\xb2\x66\x13\x2d\xa4\x29\xd5\x78\xa4\x8c\xee\x24\x64\x7e\ \x1f\x5a\x9b\xf6\x8a\x74\xdc\x9e\x58\x2b\x7a\xe6\x22\x59\x51\x58\ \x28\x0b\x50\xcf\xb6\x31\xe9\x59\x39\x15\x4a\x39\x70\xa7\x80\x4e\ \x7b\x52\xe5\x2d\xa4\x12\x10\xea\x90\x01\xe4\x28\x7a\xfc\x52\x27\ \xe4\x28\xf2\x82\x41\xf5\x28\x18\xfa\xd4\xa6\xde\xc2\xe7\x4e\x10\ \x4d\xc9\xdc\x46\xec\x66\xc2\xc6\xd3\x92\x79\x1c\xd6\x70\xa4\x5c\ \x6d\xef\x22\x4c\x29\x6f\xc5\x75\x07\x29\x52\x16\x52\xa0\x7f\x0a\ \x50\x92\x8c\xa9\x2a\x51\xec\x3d\xb3\x9a\x0a\x77\xa4\x29\x40\xe0\ \x63\x38\x3c\x0a\xb5\xcc\x72\xc3\xc6\x45\x9d\xa3\x3a\xe7\x7c\xb5\ \x2d\xa6\x35\x24\x41\x70\x65\x3c\x7d\xa1\xb3\xb1\xec\x7b\x9f\x45\ \x7e\x3f\x9d\x15\x51\xce\x6d\x29\x19\xc1\xc1\xed\xed\x45\x42\x8a\ \xe5\xa1\xca\xaf\x82\xa5\x9f\xdd\xf5\xf0\x3a\xc3\x4d\x6a\x0b\xf3\ \x76\x28\xc8\x6e\xf5\x72\x4a\x41\x56\x02\x65\xac\x01\xe6\x3e\x99\ \xa9\x33\x5a\xa3\x52\x35\x0c\x0f\xe9\x0d\xd8\x71\xdb\xed\x8e\x7f\ \x9d\x42\x74\xaa\x77\x5a\x63\x92\x78\x1b\xbf\xfc\x8d\x3d\x15\x78\ \x87\x27\xee\x8a\xf1\x55\xeb\x55\x72\xb6\x67\xf3\x3c\x6a\x9c\x93\ \x76\x66\x62\xeb\xa8\x5f\x90\xa7\x5d\xbe\x5c\xce\x4f\x73\x29\x7f\ \xe7\x4a\xdb\xba\xde\x12\x9c\x7e\xb9\xb9\x7f\xf5\x4b\xff\x00\x3a\ \x40\x54\x01\xe2\xbd\x6d\x4a\x52\x82\x52\x82\x49\x3c\x01\xeb\x55\ \x78\xaa\xef\x69\x3f\x9b\x21\x36\x2c\x76\xe9\x78\x24\x2c\x5e\x6e\ \x5c\x73\xfe\xea\x5f\xf9\xd6\x6b\xd5\x7a\x89\x6d\x86\x91\x7e\xba\ \xed\x1e\x9f\x6c\x73\xfc\xeb\x0b\xd5\x9a\xfb\x6d\x88\xdb\xf3\xec\ \xf3\xa2\x30\xf2\xb6\x21\xc7\xd8\x52\x12\x49\x19\x03\x24\x77\xc0\ \x27\x1f\x06\x90\x47\x65\x2c\xa7\x72\xf9\x51\xab\x4a\xb5\x78\xfb\ \xf2\x77\xf1\x64\xbc\xd1\x76\xd8\x7a\x89\x7f\xd4\x2d\x8f\x11\x57\ \xeb\xa8\x57\xfc\xf1\xcf\xf3\xac\x9f\xd5\x7a\x90\x82\xa5\x6a\x1b\ \xb6\x3f\xe7\x8e\x7f\x9d\x35\x0d\xce\x38\x84\x24\x65\x4b\x50\x4a\ \x52\x4e\x32\x49\xc0\xaf\x35\x3d\xaa\xe7\x64\xba\xae\xd9\x76\x8c\ \x23\x49\x42\x52\xa5\x37\xe2\x25\x78\x04\x64\x1c\xa4\x91\x54\x8c\ \xeb\xcf\xac\xe4\xed\xf1\x2d\x9a\x6a\x37\x57\xb1\xb5\x7a\x97\x50\ \xba\xb2\xa5\xdf\xae\x87\xeb\x2d\xcf\xf3\xaf\x58\xd4\x9a\x85\x2b\ \xdc\x2f\xb7\x4f\xfe\xad\xcf\xf3\xa6\x62\x78\xed\x4e\xd0\x6c\x17\ \x69\x76\x19\x77\xc8\xf1\x82\xed\xf0\xd4\x11\x21\xef\x15\x03\x62\ \x8e\x30\x36\x93\x93\xf7\x87\x61\xeb\x4f\x55\x6b\x4b\x48\xc9\xfc\ \xd8\xb8\xe7\x93\xd0\xda\xe6\xa4\xd4\x3b\xf7\x7e\xbe\xba\x7f\xf5\ \x8e\x7f\x9d\x66\xd6\xa7\xd4\x6d\xab\x72\x6f\xf7\x51\xf4\x98\xe7\ \xf9\xd3\x3e\xd2\x72\x2b\xd1\xda\x97\xc7\xab\x6f\x79\xfc\xc3\x34\ \xbb\x49\x33\x3a\xab\x52\x10\x14\x9d\x43\x76\xf9\xff\x00\x6c\x73\ \xfc\xe8\x7b\x53\x6a\x25\x8c\xff\x00\x48\x2e\xb9\xff\x00\x9e\x39\ \xfe\x75\x1b\x43\xa5\xa3\x9f\x4a\x1e\x96\x90\x9c\x85\x52\xb3\xd6\ \xbd\xd4\x9f\xcc\xba\xa9\x27\xa5\xc7\x97\x35\x76\xa4\x6c\x14\x9d\ \x41\x76\x03\xfe\x78\xe7\xf9\xd3\x74\xcd\x69\x7c\x65\xa5\x2d\x7a\ \x86\xe4\x84\x81\x95\x29\x53\x56\x00\xfa\x9c\xd4\x3f\x52\xea\x16\ \x22\x94\x47\x09\x76\x4c\xd7\x8e\xd8\xf0\xe3\xa4\xad\xe7\x94\x7b\ \x04\xa4\x73\xc9\xaa\x9f\xaa\xb1\x7a\x8b\x05\x51\xbf\xa5\xd6\x0b\ \xbd\x8e\x24\x82\x7e\xca\xdc\x98\xab\x65\xb5\xe3\xbe\x32\x06\xe5\ \x0c\x8c\xfa\x8c\xfa\x57\x4f\x07\x86\xc4\x57\xd7\x33\x4b\xb6\xec\ \xdb\x85\xc2\x55\xae\xef\x7b\x22\x79\xab\xba\xdf\x3a\x31\x53\x16\ \xdb\xd5\xca\xe0\xf0\xe3\x7a\xa5\x38\x1a\x1f\xc7\x2a\xff\x00\x5c\ \xd5\x4d\xa9\x75\x9e\xa9\xd4\xae\x95\xdd\x6f\x53\xa4\x23\xd1\xb5\ \x3c\xad\x89\x1e\xc0\x67\x14\xc2\x1b\xf7\xe4\x9f\x5a\xcd\x20\x76\ \x07\xf3\xaf\x41\x47\x0f\x0a\x4b\x4b\xb7\xda\xce\xfe\x1f\x07\x0a\ \x1b\x6e\x63\x87\x14\x7c\xce\x2f\xf1\x35\xea\x41\x4f\x39\x56\x6b\ \x23\xbb\x8f\xa5\x2e\x76\xd5\x73\x66\xd2\xc5\xe1\xfb\x5c\xc6\xad\ \xb2\x5c\x53\x4c\x4c\x5b\x0a\x0c\xba\xb4\xfd\xe4\xa5\x78\xda\x48\ \xf5\x00\xf1\x4f\x6d\x9b\x16\xe2\x30\x5c\xec\x16\xbf\xce\xbd\x42\ \xd6\x14\x0e\xf5\x03\xe8\x6b\xc0\x32\x7d\xbd\xab\xdf\x4c\x11\x8a\ \xad\xcb\xab\xf6\x99\x17\x9e\x24\x6e\x79\xc3\xf8\x9a\xc9\x2f\x3b\ \xbb\x97\x5c\x3f\xf5\xab\x04\xfa\x91\xe9\xc6\x2b\x24\x83\x9d\xc5\ \x35\x0c\xba\x72\xed\x33\x53\xef\x29\x44\x17\x5c\x3f\x55\x9a\x03\ \xab\xc1\x05\xd7\x3e\x79\x35\xa5\x44\x15\x63\x18\xf4\xac\x81\xc0\ \x04\x7e\x00\x50\x4f\x12\x4d\xee\x66\xe3\xef\x04\x85\x87\x57\x94\ \x60\xa7\xcc\x7f\x87\xf1\xaf\x56\xf3\x8e\xa4\x65\xd5\x94\x91\xdf\ \x71\xe6\xb0\x1c\x73\xf3\x5e\x70\xd9\x20\xf2\x85\x73\xff\x00\x24\ \xd0\x4a\x9c\x97\x32\xfa\xe9\xa7\x50\xef\x17\xcb\x7a\x60\xca\xbe\ \xdc\x05\xce\x2a\x02\x56\x93\x29\x79\x75\x09\xc0\x0b\x1c\xf3\xe8\ \x0f\xe7\x53\x34\x5f\x2f\x81\x1e\x5b\xcd\xcb\x00\x76\xfb\x52\xff\ \x00\xce\xb9\xc7\x45\x58\xb5\x46\xa0\xbe\x06\xb4\x7d\xba\xe1\x3e\ \xe7\x19\x06\x4a\x53\x05\xa2\xb7\x1b\x40\x21\x25\x58\x1d\x86\x54\ \x91\xf8\x8a\xb4\xde\xd4\x1a\xa3\x4a\xa6\x3b\x1d\x47\xd2\x37\x8b\ \x32\xde\xf2\xb5\x31\x50\xd4\xda\x1d\x3e\xb9\x04\x00\x48\xf5\xda\ \x7f\x0a\xe0\x63\x70\x15\x54\x9c\xe9\x6a\xbb\x3b\x0e\x4e\x2f\x0d\ \x57\x36\x6a\x6e\xfd\xd7\x26\xd2\x2f\xb7\xbd\xa4\x9b\xdd\xc9\x27\ \xdf\xed\x4b\xed\xf9\xd6\xa8\xd7\xab\xbb\x69\x29\x7a\xf1\x74\x24\ \x65\x5c\x4a\x5f\x23\xdf\xbd\x46\x06\xb0\xd2\xf2\x40\x0c\xdf\x22\ \x79\x86\x7f\x6b\xb9\xbc\x7d\x72\x29\x53\x57\xad\x3b\x22\x2e\xe5\ \xde\x6d\x64\x0f\x43\x25\x03\x18\x3c\x7a\xd7\x2d\xc6\xb2\x5a\xa7\ \xe6\x62\xfd\xf8\xab\x3b\xf9\x92\x78\xda\x8a\xfc\xeb\xcb\x75\x9d\ \x47\x74\x2d\x29\x20\x28\x7d\xa9\xc1\x83\xf9\xf7\xf4\xa5\x82\xfd\ \x7e\x40\x0d\x1b\xcd\xd1\x1e\x5e\xe9\x94\xb1\x81\xe9\xeb\xfc\x2a\ \x39\xa4\x52\xce\xad\xd4\x0c\x58\xb4\xfd\xca\x1c\xeb\xab\xe1\x61\ \x31\xd9\x90\x90\x56\x94\x24\xa8\x9e\x48\x48\xc6\x0f\xad\x31\x5e\ \xba\x83\x67\xb1\x5e\x65\x5b\xa5\x17\xdc\x9b\x11\xc5\xc6\x90\xdb\ \x2d\x6e\xc2\xd0\xa2\x15\xc9\x38\x3c\xe4\x67\x9e\xd5\x2a\x86\x26\ \x7e\xea\x7e\x64\x70\xf1\x13\x7d\x54\xfc\xcb\x11\x5a\x87\x51\x16\ \x83\xa2\xf7\x73\x78\x00\x7f\xfe\x6d\x79\x3e\x9e\xf8\xa5\x11\xb5\ \x16\xa1\x6d\x28\x29\xbe\xdd\x38\xe0\x1f\xb5\xb9\x9e\xdf\x5a\xa4\ \xa4\x75\x75\x4d\xa9\x5f\x63\xb2\x87\x90\xa2\x79\x7d\xcd\x9f\xc1\ \x39\xa6\x2b\x9f\x54\x35\x6c\xdd\xe9\x8a\xf4\x6b\x72\x08\xe3\xec\ \xec\x8d\xc0\x7f\xca\x56\x4f\xe5\x8a\x7c\x3a\x37\x19\x3d\xf4\xf1\ \x63\x63\x80\xc5\xc9\xd9\xe9\xf1\xfb\x1d\x19\x23\x52\x5f\x1b\x6f\ \xc5\x91\xa8\xae\x6c\x36\x15\xc9\x72\x7a\xd0\x93\xf9\xab\x15\x15\ \xbc\xf5\xaa\x35\xa5\x4e\xa4\xea\xeb\xac\xe7\xc2\xb1\xe1\x43\x94\ \xe2\xc6\x7f\xe5\x12\x07\xf1\xae\x70\xb8\x4d\x99\x71\x7f\xc5\xb8\ \x4c\x93\x31\x64\xe5\x45\xe7\x14\xae\x7f\x1a\x4e\x02\x12\xa2\x13\ \xb4\x01\xdf\xd7\xf2\xad\xf4\xba\x26\xda\xd4\xa8\xdf\x86\x86\xda\ \x7d\x17\x67\xd7\x9b\x7e\x1a\x16\xed\xfb\xf4\x85\xd7\x12\x02\x9b\ \xb2\xce\xb8\x40\x41\x3c\x3c\xf4\xc7\x1d\x70\x7d\x06\x76\x83\xf8\ \x1a\xad\xf5\x0e\xa3\xd4\x3a\x9a\x68\x99\xa8\xaf\xb7\x2b\xac\x81\ \xf7\x17\x2e\x4a\xdc\x29\xf8\x4e\x4f\x03\xe9\x4d\x65\x4b\xc7\x95\ \x38\x03\xd5\x55\xe1\x19\x39\x5a\x81\xe3\x00\x67\xb7\xe1\x5d\x4a\ \x54\x29\xd2\x56\x8a\xfa\x9d\x2a\x34\xa3\x47\xdc\x5e\xbc\x4f\x4b\ \xce\xfd\xd0\xe2\xc9\xed\x80\xa3\x83\xf5\xac\xbc\x69\x2a\x46\xd2\ \xf3\xa5\x07\xb8\xde\x71\xc7\xbd\x60\x08\x00\x00\xae\xde\x80\xd0\ \xb2\x10\x08\x1c\x9f\x5c\x9e\xf4\xe1\xaa\x52\xde\xe6\xc5\x4b\x91\ \xbb\x1e\x3b\x98\x1d\xb2\xa3\x5a\x9c\x90\xe8\xec\xea\xc2\x87\x6f\ \x31\xe2\xb5\xf9\xd6\xa2\x12\x14\x00\xef\xf1\x59\x25\x09\x41\xfb\ \xc0\x9f\x91\x53\x6b\x15\x75\x27\x2d\xd9\x8f\x89\x25\xd5\x65\x4f\ \x38\x31\xee\xa3\x59\xa4\x94\x1d\xc9\x5a\xc1\x1c\x67\x35\x22\x85\ \xa2\xb5\x54\xfe\x9f\x5c\x75\xe4\x3b\x4e\xfd\x39\x6c\x92\x22\xcc\ \x99\xf6\x86\x87\x86\xe9\x2d\x80\x9f\x0c\xab\x79\xe5\xe6\xf9\x09\ \x23\xcd\xdf\x83\x88\xa9\x25\x5c\xe4\x9a\x9b\x31\x6e\x76\xd9\xdc\ \x50\xa9\x6f\x81\xe4\x75\xc1\xcf\xf6\xcd\x6a\x76\x4b\xea\x52\xb2\ \xf2\xc9\x57\x07\xcd\xde\xb5\x24\xe4\x8c\x63\xf2\xed\x41\xf5\xf5\ \x35\x29\x58\xa4\xaa\xca\x4b\x73\xd2\xe3\xab\x50\x2b\x71\x64\x8f\ \x9a\x37\x2b\x24\xee\x56\x4f\xae\x4d\x78\x40\xe0\x95\x60\x7e\x75\ \xea\xf6\xe7\x39\x1c\xfb\x54\x95\xbb\xdd\xb0\xf1\x1c\x1c\x07\x17\ \xef\xf7\xab\xcf\x11\xc3\xff\x00\x08\xe1\x1e\x9c\xd7\x83\x39\xc7\ \xf1\xaf\x42\x3b\xee\x56\x3e\x48\xa9\xb9\x56\xd9\xa5\xf5\xa8\x8e\ \x56\xa2\x3e\x4d\x15\x9b\xe9\x40\x1c\x2b\xf0\xa2\xac\x99\x49\x45\ \xb7\xb9\xd5\xba\x67\x8b\x24\x70\x38\x1e\x6c\xff\x00\xda\x34\xea\ \x94\x15\x72\xa3\x84\xd3\x66\x98\x03\xf5\x33\x0a\x57\x00\x6e\xff\ \x00\xf2\x34\xb9\x4e\x17\x32\x3b\x27\xd8\x57\x82\xa9\x77\x36\x78\ \x76\x6c\x2f\x32\xdf\x09\x4e\xe3\x53\x6e\x86\x06\x26\xf5\x1e\x12\ \x24\x36\x8f\xd9\x32\xeb\xcd\x85\x7a\xac\x0c\x0f\xc4\x64\x9f\xc2\ \xa0\x3c\x0e\xdf\xc6\x96\xd9\x6e\xd7\x1b\x15\xe2\x25\xe6\xd0\xe3\ \x68\x9b\x11\x65\x4d\x87\x06\x50\xb0\x41\x4a\x92\xa0\x0f\x20\x82\ \x47\xf1\x1c\x8a\x76\x15\xc2\x9d\x68\xce\x5b\x26\x32\x85\x45\x0a\ \x91\x94\xb6\x4c\x7b\xb5\x45\x77\x55\x75\x10\x46\xb9\xcf\x9a\xe3\ \xb3\xee\x4b\xf1\xb7\xbc\xa2\x94\x80\x55\x90\x94\x93\x84\xe1\x20\ \xa4\x71\xc0\xa9\x74\x3b\x65\x8e\xfd\xa8\xf5\x5e\x96\x67\x4e\x46\ \xb7\x7e\xa9\x61\xc5\xdb\xe6\x34\xfa\xd4\xea\x94\xd1\xd8\xaf\x13\ \x71\xc1\x0a\x24\x1f\x81\x9f\x5e\x6a\x0b\x7a\xd5\x66\x75\xd1\xab\ \xc5\xb3\x4b\x46\xb0\x5d\xda\x98\x26\x2a\x5b\x77\x05\xc8\x43\x8e\ \x0c\x92\x3c\x22\x94\x84\x82\xa3\x93\xc9\xf6\xf5\x34\xba\xef\xd4\ \x1b\x83\xd1\x2e\xcf\x5b\xf4\xbc\x0b\x4d\xc6\xf0\xd1\x62\x7d\xc5\ \x13\x96\xee\xe4\x2b\xef\xf8\x6d\x94\x80\xd9\x3e\xf9\x35\xd3\xa7\ \x3a\x09\xcb\x89\x25\x2b\xbf\x1b\xab\x6c\xb4\xed\x36\x42\xa5\x25\ \x7c\xcd\x3d\x7e\x68\x76\x7d\x16\x7d\x3b\xa3\x34\x75\xc1\xcd\x3d\ \x16\xef\x26\xfd\x20\x3a\xfb\xb2\x1e\x5a\x3c\x26\x42\x93\x80\xde\ \xd2\x30\xac\x29\x38\x3e\xe0\xe7\xd3\x12\xad\x45\xa7\x22\x5f\xba\ \xc7\xa8\xe4\xcd\x8e\x25\xb5\x6c\xb5\x35\x21\x31\x94\xef\x84\x97\ \x9c\xd9\xe4\x4a\x95\x91\x84\xf0\x72\x72\x07\xbf\x15\x56\x5b\xb5\ \xc4\x88\xfa\x5a\x06\x9f\xb8\x69\x78\x17\xa6\xed\x6e\x97\x6d\x92\ \x1d\x98\xb6\x4b\x07\x39\xda\xe2\x12\x0f\x88\x9c\xfa\x65\x3c\x00\ \x3e\x69\x53\xbd\x48\xbe\x2f\x58\xc9\xd5\x1f\xaa\x20\xa9\x53\x61\ \x26\x14\xeb\x7b\xaf\x15\xb5\x25\xb0\x90\x15\x85\x6d\x05\x24\x91\ \x91\xc1\xc6\x71\xcd\x68\x85\x6c\x32\x82\x8b\xb5\xb4\xd2\xdd\xdc\ \xfe\x23\x23\x5a\x86\x54\x9e\xda\x69\x6e\xee\x7f\x11\xc7\x5e\xda\ \xed\xa8\xd2\x56\x4b\xc2\x63\x5a\x6d\x97\xa7\x5d\x5b\x17\x1b\x7c\ \x09\xc9\x7d\xb4\xfd\xf2\x85\x8c\x2d\x58\x05\x28\xcf\x7f\xde\x00\ \xf2\x29\x7e\x95\x21\x1d\x0a\xd6\x8b\x57\x61\x2d\x92\x7f\x36\xaa\ \x07\x25\xeb\x2c\x95\x37\xfa\xa3\x46\x31\xa7\xb6\xe4\xad\x49\xb8\ \xae\x52\x9c\x1e\x83\xcc\x94\x80\x07\xd0\x9f\x9a\x78\x89\xa9\x64\ \xc0\xd1\xb7\x7d\x26\x8b\x52\x1f\x62\xec\xe2\x1c\x5c\xb3\x2b\x61\ \x67\x69\x4f\x1e\x1e\xc3\xbb\x3b\x7b\xee\x1d\xeb\x27\x1e\x94\x71\ \x12\x7a\x25\x95\xad\x3b\x6d\xe0\x84\x2a\x90\x55\x5c\xb9\x59\xaf\ \x2f\x04\x59\x8b\xd1\xf6\x5b\x3d\xea\xdd\xa7\xee\x96\x9b\x4f\xea\ \xd7\xad\xbe\x24\xeb\xac\x8b\x92\x5a\x90\xdc\x93\xbb\x1b\x10\x56\ \x0e\xdc\xa4\x0e\x12\x47\x9b\xbf\x07\x31\xed\x19\x67\xb6\x4e\xd2\ \xb7\x26\xac\x56\xfb\x3d\xf7\x55\xc4\x9a\xa4\x39\x12\xe1\x21\x49\ \x05\x84\x9c\x05\x36\x94\xa8\x64\x1e\xf9\xce\x33\x91\x9e\x05\x46\ \x27\x6a\xa6\xaf\x4c\x42\x46\xa8\xd1\x16\xeb\xf4\xd8\x51\xd3\x19\ \x99\xff\x00\xac\x57\x1d\x4a\x69\x27\xca\x16\x80\x95\x6e\x39\x24\ \xe4\x11\xdc\xf6\xad\x1a\x73\x53\x44\xd3\x53\x21\x4f\x67\x43\x43\ \x99\x75\x82\x56\x63\xce\x37\x57\x1a\x09\x2a\xdc\x39\x6b\x61\x07\ \x09\x56\xde\xe3\x20\x7b\xd6\x8e\x36\x15\xd4\x56\xb5\xbc\xf9\x77\ \x6f\xf3\x1c\xea\xd0\xce\xad\x6b\x7a\xee\xdf\xe6\x4a\x34\x45\xb2\ \x05\xcf\x4d\xde\x9b\xb7\xd9\x6d\x13\xf5\x9b\x13\x14\x3f\x54\x5c\ \x5f\x5b\x69\x6d\x90\x46\x42\x13\x90\x4e\x39\x19\x27\xb8\xe4\xfa\ \x1e\x77\xea\xee\xad\x9b\xa7\xa7\x4a\x86\xdc\x44\x40\xb9\x38\xf3\ \xa1\x51\xb0\x48\x88\x02\x88\x29\x01\x59\x27\x07\xca\x33\xed\x56\ \x8c\x4d\x7f\x1e\xd7\x7e\x46\xa2\xb8\xe8\xa8\x97\x6b\xfa\x25\xb9\ \x29\xb9\xe2\xe8\xe4\x74\xa5\xc5\x95\x1f\xea\x82\x54\x08\x1b\xb1\ \x8c\x8c\x81\xce\x6a\x97\xd6\xfd\x64\xfe\x91\xe9\xdd\x5f\x63\xba\ \x69\x0b\x2c\xbb\x8d\xf6\xec\x26\xa2\xf3\xb7\x0e\xc5\x4a\x4a\x7f\ \x66\x80\x41\x38\xc2\x30\x0e\xe1\x80\xb5\xe4\x1d\xd9\xa7\xd0\xa1\ \x46\xba\x8e\xda\x79\xf8\x9a\x30\xb4\x29\xd7\x71\xee\xf5\xa9\x3b\ \xfd\x02\xd9\x45\xc3\xa9\x9a\x93\x51\x4e\x02\x65\xca\xdf\x65\x71\ \xd8\x9e\x37\x9c\x85\xa9\x60\x15\x8f\x5c\xe3\xcb\xf4\x59\x1e\xb5\ \x15\xfd\x1a\xd9\x57\x53\x7a\xeb\x02\xd9\xaf\x64\x4a\xd4\x11\x26\ \x22\x63\xef\x37\x31\xe5\x2d\x25\xc2\xd2\x95\xbc\x0c\xe0\x1c\xe0\ \xf1\xec\x2a\x15\xd1\xbe\xa2\x5e\xfa\x5d\xad\x59\xd4\xf6\x46\xd8\ \x79\x61\xa5\x47\x93\x19\xf2\x76\x48\x65\x58\x25\x04\x8e\x41\xca\ \x52\x41\xf4\x20\x70\x46\x41\x9a\xe9\xae\xb1\xe8\xfd\x2d\xd4\xdb\ \x6e\xb8\xd2\xdd\x29\x4d\xa9\xe8\xff\x00\x69\x32\x63\x26\xfc\xe3\ \x89\x90\x5d\x41\x4f\x94\xa9\xbc\x34\x94\x92\x48\x01\x27\xdb\x81\ \x5d\x75\x6b\x58\xee\x64\xcb\xb2\x27\x3d\x33\xd0\x7a\x23\x5c\xf5\ \x33\x53\xc2\x63\x45\xc6\x8d\x67\xd0\x91\x24\x34\x88\x9f\x6f\x50\ \x55\xd6\x42\x5c\x52\x5b\x5c\x87\x54\x46\xdc\xf8\x6a\x27\x04\x24\ \x64\x0e\xc3\x96\xce\xb0\xf4\xfe\xc6\x34\xa6\x85\xd4\x96\x9d\x23\ \x68\x87\xaa\x66\xdc\xc4\x1b\xb6\x97\xb3\xdc\xc4\xa6\xdf\x25\x4b\ \x2d\xed\xf0\xdc\x59\x4e\xe4\xb7\xc9\x49\xe3\xc4\x19\x39\x15\x5e\ \xe8\x2e\xae\xdc\xf4\x77\x51\xaf\xfa\xaa\x2d\xa2\x24\xc8\x3a\x81\ \x72\x13\x71\xb5\x49\x70\x94\x3a\xcb\xcb\x2b\x28\xde\x06\x41\x19\ \xc6\xec\x7b\xf1\xcd\x7b\x1b\xa8\xda\x56\xc1\xac\x6c\x3a\xa3\x40\ \x74\xe9\xad\x3b\x2e\xd5\x2c\xc8\x58\x91\x79\x7a\x70\x90\x92\x0a\ \x4b\x7e\x64\xa4\x20\x60\x9e\x40\x27\x9e\xf4\x5d\x58\x32\xca\xe5\ \xdc\xe7\x4b\x6d\x97\xbe\x92\x6b\xe9\x3a\xab\xa6\xfa\x73\x46\xde\ \xf4\xed\xb4\xcf\x80\x6c\xf7\x4f\x1d\xf4\xec\x69\xd7\x36\x3e\x80\ \xea\xf1\x90\xd8\x1e\x6e\xfb\x89\x00\x14\xd6\x1d\x5c\xba\xdb\x9e\ \xfd\x18\xfa\x6d\x0e\x1e\x8c\xd3\xe8\x55\xf8\xba\xc4\x66\xf6\xb8\ \x11\x01\xd7\x32\x0b\xad\x61\x5f\x78\xa9\x44\x92\xac\xf2\x6a\x03\ \x70\xfd\x21\xa0\x93\xad\xd1\x66\xe9\xcc\x6b\x60\xd6\x96\xd9\x11\ \xee\xae\x7e\xb6\x71\xe7\x57\x21\xc4\x29\x08\x78\x15\x23\x01\x08\ \x0e\x38\x7c\x30\x91\x92\xbf\xbc\x30\x05\x30\x49\xeb\x04\x0b\xa7\ \x47\x6d\x1a\x06\xfb\xa2\x9b\x9f\x2a\xc6\xdb\xa9\xb4\xdd\x1a\xba\ \x38\xc1\x8e\xb5\x03\xb5\xc5\x34\x12\x42\xca\x72\x0e\x0a\x80\x3b\ \x47\x1d\xea\x6e\x88\xcb\x2e\x67\x40\xcb\xe8\x9f\x4f\xad\xb7\xe9\ \x1a\x02\xe5\xa6\x6c\xb0\xec\xc2\xca\x14\xde\xa9\x93\x79\x42\x27\ \x19\xe7\x1e\x6f\x04\xbb\x90\x8f\x5c\x6d\xdb\xc6\x39\x06\xb9\x87\ \xa0\xd6\x58\x17\x8e\xb5\xe9\x9b\x25\xea\x1b\x53\x20\xc8\xb8\xa5\ \x89\x0c\x2c\xe5\x0e\x27\x9c\x83\x83\xc8\xe2\xa5\x3a\xc3\xac\x7a\ \x63\x5c\x88\xf7\x2d\x75\xd2\xc8\x97\x8d\x4a\xd4\x44\xc5\x55\xce\ \x3d\xe5\xe8\x8d\xbc\x13\x9d\xaa\x5b\x28\x49\xc9\xc9\x3c\x85\x0e\ \xf8\xe0\x00\x2a\xbe\xe9\x8e\xa7\xfe\x85\xeb\xeb\x36\xab\xfb\x07\ \xdb\x8d\xb2\x4a\x64\x7d\x9b\xc5\xf0\xbc\x5c\x03\xe5\xdd\xb5\x58\ \xfa\xe0\xd5\x5b\x45\xe3\x19\x59\xdc\xea\x0b\x16\x86\xe9\x55\xc2\ \xf3\xd5\x1d\x29\x23\xa7\xf1\xc4\x6d\x18\xd0\x96\xc4\xc4\x4e\x78\ \x4a\x92\x52\x95\xad\x69\x5a\x81\xc0\x49\x28\xda\x02\x40\xc2\x4f\ \xbf\x35\x19\xbe\xf4\xf3\x49\xeb\xae\x93\x74\xbb\x56\xd9\xf4\xfc\ \x3d\x2d\x71\xd4\x9a\x89\x36\x69\x8d\x40\x5a\xcb\x5e\x1a\x9d\x7d\ \x1b\xc0\x5a\x8f\x98\x06\x32\x33\xdf\x71\x04\x9c\x0a\x86\xda\x7a\ \xf4\x6d\xda\x93\xa8\xf7\xaf\xe8\xa0\x77\xfa\x6f\x1d\x4c\x96\xbf\ \x58\xe3\xec\x39\x4a\xd3\x9c\xf8\x5f\xb4\xfb\xf9\xc6\x13\xda\x9a\ \x1f\xeb\x0c\xd1\xd1\x9d\x23\xd3\xfb\x75\xa1\x50\x65\xe9\x8b\xc0\ \xbb\xc6\xbb\x09\x7b\x8a\xdc\x0e\x3e\xb4\x8f\x0b\x67\x97\x05\xe1\ \xce\xe3\xf7\x3b\x73\xc0\xda\x05\x19\xa7\xa1\x75\xc2\xd0\x9d\x30\ \xd4\xbd\x63\xd4\xdd\x10\x8f\xa1\xa3\xdb\x1b\xb5\xdb\x37\xc1\xbe\ \x35\x25\xd5\x4c\xfb\x42\x52\xd1\x2b\x5e\x55\xb5\x49\xcb\xa7\x8c\ \x11\xe5\xed\xc8\xdb\x10\xb4\x69\xed\x0f\xa5\xbf\x46\x5b\x27\x51\ \x2f\x5a\x26\x0d\xfa\xf4\xcd\xd6\x4d\xbd\x4d\xbe\xfa\xdb\x69\xd2\ \xa7\x56\x02\x9c\xdb\xca\xf6\x25\xb2\x12\x3f\xbd\x9f\x41\x4d\x93\ \x3f\x48\xc2\x9b\x8d\xdb\x55\xda\x74\x05\xb6\xd7\xae\x2e\xf0\x04\ \x29\x77\xc6\xee\x2e\x2d\x01\x3b\x52\x9d\xed\xc7\x23\x08\x56\x10\ \x8c\x1d\xc7\xee\x8c\xe7\x9c\xc2\xa7\x75\x47\xed\x1d\x01\xb7\xf4\ \xa3\xf5\x10\x42\x61\xdc\x95\x3b\xf5\x97\xdb\x33\xbf\x2a\x70\xec\ \xf0\xb6\x71\xfd\x67\x7d\xde\x9d\xa8\xba\x0c\xb3\xe6\x5f\x9a\x2f\ \xa4\x5a\x4b\x4f\xe9\xae\x9f\xb3\x79\xd1\xd6\x5b\xdb\x1a\x8a\x21\ \x97\xa8\x2e\xd7\x1b\xc2\x63\x39\x09\x2b\x6d\x2a\x6d\x2c\x20\xba\ \x92\x42\x77\xe0\x94\x82\x4e\x3b\xf2\x31\xcb\xfd\x4b\xb2\x42\xd3\ \x7d\x41\xbf\x58\xad\xd2\xd3\x32\x0c\x39\xce\x35\x19\xf4\xac\x2b\ \xc4\x68\x1f\x21\xc8\xe0\xf9\x48\xed\x53\x96\xba\xbd\x66\xbc\x68\ \x4b\x16\x96\xea\x1f\x4f\x58\xd5\x23\x4f\xb4\x63\x5a\xe6\xb5\x75\ \x72\x0b\xad\x33\x80\x03\x6b\xda\x95\x05\x80\x12\x81\xe9\xc2\x47\ \xae\x49\x64\xb7\xf5\x0a\xd1\x07\x40\x6a\xbd\x25\x1b\x40\xd9\xc0\ \xbe\x4e\xfb\x4c\x49\x8b\x71\x4e\x3d\x6d\x6c\x10\x52\xca\x14\xa0\ \x54\xb0\x90\x30\x95\x15\x03\xe6\x51\x3b\xb3\x43\xb3\x2d\x0c\xe9\ \xea\x59\xff\x00\xff\x00\x0f\x24\xa9\x3d\x6a\xbb\x8c\x9d\x87\x4e\ \x3e\x42\x4f\xa7\xfb\x4c\x6a\xd9\xd3\x7b\x94\xcd\x51\xfa\x1d\xf5\ \x16\x2e\xa5\x95\x22\x6b\x56\x79\x6c\xc9\x80\xe4\xb7\x0b\x8a\x65\ \x64\xa0\xe1\x0a\x3c\x81\x90\x78\x1f\xdb\x57\xbd\x56\x9f\xa3\xe7\ \x54\x4f\x48\xf5\xa4\xad\x48\x9b\x18\xbe\x7d\xaa\xdc\xb8\x3e\x01\ \x99\xf6\x7d\xbb\x9c\x69\x7b\xf7\x6c\x5e\x71\xe1\xe3\x18\xfd\xee\ \xfc\x52\x9d\x5f\xd5\x98\xd3\x3a\x70\xbe\x9e\xe8\xbd\x1f\x1f\x49\ \xe9\xd9\x32\x84\xb9\xc9\x17\x05\xcc\x91\x2d\x69\xc1\x01\x4e\x28\ \x27\xca\x0a\x52\x71\x8f\xdc\x4f\x3d\xf3\x09\xe8\x0e\x2f\x3e\x9d\ \xc7\x43\xb7\xd1\x5d\x0b\xa7\xaf\x36\x6d\x13\x7f\xd2\x56\x37\xad\ \x52\xac\x85\xeb\xae\xa3\x97\x79\x43\x33\x1a\x9a\x77\x01\xe1\xb6\ \x5d\x0a\xd8\x0a\x06\x30\x82\x9f\x30\xc9\x38\x56\x6b\x8d\x3d\xa4\ \x34\x56\x9d\xfd\x1c\xef\x7a\xd2\xeb\xa5\xe0\x6a\x1b\xbd\x87\x53\ \x3b\x09\x82\xf3\xaa\x43\x32\x52\x16\xdb\x40\x39\xb1\x59\x52\x06\ \xe5\x28\x00\x79\x38\xc9\x23\x35\x11\xbc\xf5\x8b\x4f\x6a\xeb\x55\ \xa4\x75\x13\xa6\x51\xb5\x2d\xe2\xd7\x11\x30\x99\xb9\x35\x78\x7a\ \x11\x71\xa4\xf2\x90\xe2\x10\x93\xb8\xe4\x93\x90\xa1\xc9\x38\xc6\ \x6a\x69\xd3\xad\x61\xa0\xad\x5f\xa2\x3d\xe2\xd5\xa9\x22\x5b\xef\ \x2f\x2e\xff\x00\xe3\x0d\x3a\x2f\x3f\x64\x92\xea\x0a\x99\xda\xa1\ \x8c\xb9\xb5\x38\x27\x21\x3c\x84\x9e\x6a\x74\x7b\x15\xfd\xc5\xab\ \x2c\x2d\x21\xa2\xf4\xce\x9c\xfd\x26\x3a\x6f\x7f\xd2\xb6\xb4\x5a\ \x61\x6a\x4d\x3d\x22\x6a\xe0\xa1\x65\x49\x65\xcf\xb3\x92\x76\xe7\ \x90\x08\x5a\x46\x3b\x64\x1a\x80\x49\xd3\x3a\x5b\x4d\xe8\x4d\x7b\ \xd5\x9b\xe6\x9b\x8b\xa9\xae\x6e\x6a\xd9\x56\xf8\x10\xe5\xba\xb4\ \xc7\x65\x3e\x39\x0a\x5a\x92\x82\x0a\x89\xca\xbd\x7d\x13\x8c\x73\ \x51\x48\xff\x00\xa4\x25\xcc\x75\x9e\xd3\xd4\x19\x5a\x72\x33\x91\ \x2c\xf0\x17\x6f\xb7\xd9\xa3\xca\x2d\x36\xcb\x25\x0a\x48\x1e\x21\ \x42\xb2\x7c\xd9\x27\x6f\x38\x03\x8c\x53\x6d\x83\xac\xc9\x66\xd7\ \xa9\xf4\xee\xa5\xd1\xec\xea\x0d\x2f\xa8\x2e\xae\x5d\x55\x6f\x54\ \xf5\xc7\x76\x2b\xca\x5e\xef\x23\xe9\x49\xe3\x84\xe7\xcb\xce\x3d\ \x32\x72\x5d\x13\x92\x77\x2e\x28\x3d\x3c\xe9\xac\x4e\xae\x74\xd6\ \xea\xbd\x33\x1d\x3a\x77\xa8\x56\x37\x1d\xfd\x59\x21\xc5\x38\x88\ \x92\xbc\x26\x9e\x49\x49\xce\x46\x77\xa1\x00\x67\x00\x93\xd8\x76\ \xaf\x35\xb6\x80\xb2\x68\x1e\x88\x6a\x59\x17\x6b\x5b\x2e\x5f\xa6\ \xea\xc7\x6d\x56\xb7\xdc\xc9\x5b\x31\x58\x57\x99\x69\xf4\xf3\x6c\ \x52\x73\x8f\xde\x1f\x83\x3c\xde\xa3\x5f\x3a\x91\xd5\x5d\x2d\x32\ \x2b\xda\x7f\x48\x46\xd3\xa9\x69\x36\x68\xf3\x67\x96\x62\x45\x43\ \x24\x2c\x25\x6f\x2c\x72\xa5\x6c\x4a\x73\x81\x9c\x24\x62\x9e\xbf\ \x4c\x4e\xa3\xc1\xd6\xba\x86\xc5\x68\xb3\xcf\x83\x32\x3d\x9e\x19\ \x33\x1e\xb7\xaf\x74\x47\x26\xbc\x41\x7b\xc2\x57\xef\xa4\x6d\x18\ \x57\xc9\xf9\xa8\x76\xb3\x2d\x1c\xd9\x92\x66\xbf\xd1\x9f\xa7\x16\ \xad\x4b\xa5\xf5\x7e\xb0\xb8\xda\x63\x5f\xdf\xb1\xb2\x86\xed\xd6\ \xd9\x53\x04\x78\xcf\x48\x58\x27\x73\xab\x2a\x40\x09\x48\x09\xe0\ \xa8\x03\x93\xec\x2a\x7e\xee\x87\xe9\xad\xbb\xab\x3d\x36\x7e\x56\ \x9e\xb0\xb7\x1b\x54\x46\x72\x15\xea\xc8\xc4\xe4\xca\x66\x14\xdd\ \x89\x2d\xa9\x0a\x4a\xd5\xf7\x96\xa0\x9e\x0e\x38\xf5\x26\xa8\xde\ \x92\x75\x2a\x4e\x84\x8b\x7b\xb4\x4b\xb2\x44\xd4\x3a\x7e\xfd\x1c\ \x47\xb9\xdb\x24\x3a\xa6\x7c\x44\xa7\x20\x14\x38\x90\x4a\x14\x02\ \x94\x33\x83\xdc\x1e\xe0\x10\xd3\xa8\xf5\x3e\x9d\x37\xdb\x55\xd7\ \x44\x68\xe3\xa5\x1c\xb7\x3a\x1f\x1b\xae\x8e\xcc\x53\x8e\xa5\x49\ \x52\x09\x52\x82\x76\xed\x29\xec\x90\x3b\xf2\x7b\x54\x26\xac\x5a\ \x70\x9e\x76\xcb\x63\x50\xf4\xde\xcb\xa4\xba\x77\xad\xc4\xfb\x54\ \x37\x6f\x33\xb5\x88\xd3\xfa\x7d\xd7\x89\x25\x96\x92\xad\xe5\xd4\ \x8c\xf6\x28\x51\x4e\x7d\x08\x1f\x15\x68\xca\xe8\xb7\x4f\xed\xb7\ \xf9\x1a\x0a\xe3\xa6\x6c\xb0\xec\xc2\xca\x14\xde\xa8\x93\x79\x42\ \x27\x19\xe7\x1e\x6f\x04\xbb\xb8\x23\xd7\x1b\x76\xf9\x71\x92\x0d\ \x50\x5f\xa4\x27\x5c\x24\xf5\x61\xdb\x3f\xd9\xf4\xf2\x34\xeb\x16\ \xc5\xba\xf7\x86\xdc\xcf\x1c\xbc\xf2\xf6\x8f\x10\x90\xda\x30\x40\ \x40\x03\x83\xdc\xf3\x5b\xb5\x7f\x58\xb4\xce\xba\x44\x7b\x96\xbb\ \xe9\x6c\x4b\xc6\xa4\x66\x22\x63\x2a\xe7\x1e\xf2\xf4\x46\xde\x09\ \xfb\xaa\x5b\x28\x49\xc9\xc9\x3c\x85\x0e\xf8\xe0\x00\x2a\xdd\x51\ \x6d\x54\x69\x32\x5a\xe5\x8f\x43\xe9\x3f\xd1\x77\x47\xf5\x12\xe3\ \xa2\x60\xdf\x2f\x92\x67\xcc\xb6\x2c\x3d\x21\x48\x69\x6a\x53\xf2\ \x30\xea\xc2\x7e\xf9\x42\x23\xed\x48\xed\xe7\xcf\x38\x15\x28\x83\ \xd2\xad\x1f\xac\x2f\x9d\x19\xd4\x56\x9b\x04\x28\x96\x4b\xc4\x17\ \x5d\xbf\x32\xde\x43\x45\xd8\xed\x85\xa8\x2b\x9e\xc5\x61\x68\xe3\ \x1d\xaa\x8f\xbe\xf5\x44\xdd\x3a\x03\xa7\x7a\x52\x6c\x49\x65\x36\ \x6b\x8a\xe7\x7e\xb2\x13\x37\x78\xdb\x95\x21\x5b\x3c\x2d\x83\x6f\ \xfb\xa3\xbe\xe3\xf7\x7b\x73\xc5\xb3\xa2\xba\x88\xd6\x81\xfd\x16\ \xae\x96\x3b\x86\xa6\xd3\x13\xa6\xcf\x88\xb4\x58\x22\xdb\xa7\x7d\ \xa6\x74\x63\x29\x27\xc5\x0f\x20\x7f\x51\xe1\x85\x93\xcf\xef\x6e\ \x1c\xf1\x91\x58\x89\x66\x5a\xf3\x6c\x40\xe6\x95\xd2\x3d\x47\xe8\ \x85\xea\xf1\xa3\xb4\xe4\x1b\x7d\xea\x06\xb1\x4c\x46\x56\xc2\x15\ \xbc\xc3\x90\xf0\x43\x09\x23\x3c\x81\xe3\xa0\x76\xcf\xec\xc9\xa9\ \xee\xb7\xe8\xde\x80\xbb\x75\x0f\xa7\x3f\xd1\x0b\x2c\x66\xad\x08\ \xbd\xcd\xb5\xdf\x5a\x19\xda\xea\xe2\x82\xb5\x25\xce\x4e\x32\x18\ \x74\x77\xe7\x70\xed\x54\x3f\xe8\xef\xd6\x77\xba\x49\x22\xf2\x55\ \xa7\x13\xa8\x22\x5c\xc3\x05\x51\xd5\x33\xc0\xf0\xdc\x65\x4a\x52\ \x16\x0f\x86\xbc\x9f\x31\xf4\x1e\x87\x3c\x53\x9f\x4f\x7f\x48\x3b\ \xce\x93\xd0\x9a\x9f\x4e\xbf\x63\x45\xc6\x6d\xea\x54\xa9\xac\x5c\ \x15\x2c\xb6\x60\xbf\x21\xa2\x85\xad\x28\x28\x56\xee\x49\x56\x37\ \x0e\xe7\xde\x84\xe3\xcc\x24\xa7\xc8\xb4\xf4\x9d\xef\x4d\x46\xfd\ \x15\xba\xad\x7b\x89\xa6\x60\xce\xd3\xe8\xd6\x2a\x54\x2b\x5a\x9c\ \x5a\x18\x53\x5e\x24\x14\xb0\x14\x50\x42\xb0\x3c\x8a\x20\x1e\x70\ \x47\xad\x25\xbf\xf4\x43\x44\xea\x3e\xae\xf4\xd1\x16\xeb\x67\xea\ \x5b\x56\xa5\xb2\xaa\xe7\x74\x83\x19\xd5\x14\x0f\x0d\xb4\x2c\xa5\ \xb2\x4e\x46\xe2\xb4\xa4\xe3\x1c\x02\x47\x35\x49\xd8\x7a\x9e\x6d\ \x1d\x01\xd4\x3d\x28\x36\x10\xf0\xbd\x5c\x51\x3b\xf5\x8f\xdb\x36\ \x96\x76\xaa\x39\xd9\xe1\x6c\x3b\xbf\xdc\xfd\xf7\x0f\xbd\xdb\x8e\ \x64\x37\xaf\xd2\x12\xf0\xf5\xf3\x40\x5e\xec\x96\x26\x6d\xb3\x34\ \x74\x03\x08\x78\xd2\xbc\x74\x4d\x42\x9b\x43\x6a\xdc\x90\x84\x14\ \x02\x12\x78\x04\xe3\x3d\xf8\xa9\xcc\x88\x70\x92\x64\xcf\xac\x3d\ \x3e\xd2\x4a\xe9\x0e\xa3\xbc\x8d\x2d\xa7\xf4\x86\xa0\xb1\xdd\x36\ \xdb\x58\xb7\xde\x5b\x92\xb9\xd0\xb7\xa1\x19\x71\x21\xd5\xf9\xc0\ \x51\x51\xcf\x9b\xc9\xd8\x64\xd2\xae\xb6\xe8\x2d\x0d\x6c\xd6\xba\ \x63\xa7\xba\x77\x47\x43\x89\x3f\x59\xa2\x0a\xdc\xba\x97\xd7\x9b\ \x7a\x4b\xa8\x42\xbc\x16\xf3\xb4\x64\x21\x65\x44\xe4\x9d\xff\x00\ \x02\xa9\xae\xa3\x6b\x4d\x0b\xaa\xa3\xce\x93\x68\xe9\x7b\x76\x0b\ \xd4\xe7\xfc\x77\xa7\xb7\x7b\x75\xf4\x25\x65\x5b\x97\xb1\x92\x84\ \xa5\x21\x47\x3c\x12\x40\x07\x8e\xc2\x9c\x7a\xc1\xd6\x39\xda\xef\ \x58\xe9\xad\x51\x6f\xb3\x7e\xa1\x9b\xa7\xa3\x32\xd4\x62\x25\xfd\ \xa3\x2e\x34\xe1\x71\x2e\x7d\xc4\xe3\x9c\x71\x83\xdb\xbd\x0d\xa0\ \x50\x95\x91\x7b\x6b\x4e\x92\x68\x36\xa1\xeb\x5d\x2c\xe6\x93\xb1\ \x69\xf8\xd6\x7b\x6a\x5d\xd3\xf7\xaf\xd7\x68\x5c\xd9\x72\x12\xd6\ \xe5\x07\x5a\x2e\x95\x79\x95\xc6\x14\x90\x31\xdb\xd3\x1c\x69\xb4\ \x0c\x1c\x0e\x7f\x8d\x5b\xbd\x44\xea\xa6\x91\xd7\x6b\x9d\x79\xbc\ \xf4\xa2\x30\xd5\x93\x62\xf8\x4e\xdd\x63\xde\x9f\x6d\x90\xe8\x6f\ \x62\x5e\xfb\x38\x4e\x37\x27\xca\x70\x56\x41\xda\x33\x9e\x73\x1c\ \xd7\x5a\xee\x0e\xa5\xd0\xda\x57\x4d\xb1\xa3\xed\x56\x77\xac\x2c\ \x29\x97\x6e\x11\x87\xed\x66\x92\x00\xdc\xae\x06\x32\x46\xe3\x92\ \xac\xa8\x92\x31\x9c\x54\x49\xae\x45\xa1\x19\x25\xaa\x20\xb9\x52\ \x7e\xe6\x73\x8f\x53\x58\xad\x41\x5c\xe3\x3f\x5a\xd8\x1b\xe3\xd3\ \x93\x41\x4a\x02\xbd\xaa\xb7\x43\x1c\x59\xe5\xae\x03\xb7\x3b\xc4\ \x2b\x6b\x40\x97\x65\x48\x6d\x84\x00\x39\x2a\x5a\x82\x47\xf1\x34\ \x55\xf5\xfa\x14\x74\xda\x46\xae\xea\x9c\x7d\x4d\x29\x8f\xff\x00\ \x45\xd3\xcb\x12\x16\xb2\x38\x72\x40\x1f\xb2\x40\xe3\x9c\x1f\x39\ \xfa\x0f\x7a\x29\xb1\xd8\xcb\x53\x47\x62\x4f\xa7\x54\x55\x66\x8e\ \x91\xd8\x6e\xff\x00\xf2\x34\xe4\x3b\x0a\xed\x1a\x2b\x87\x2e\x83\ \xbb\xbe\x7f\x2f\xc9\xc3\xfd\x27\xfe\xfc\xbf\x27\x17\x2b\x9a\xf1\ \x27\x1c\x57\x69\x51\x55\xfd\x0b\xff\x00\x4f\x2f\xc9\x1f\xa4\x7f\ \xdf\x97\xe4\xe2\xd3\xea\x3d\x28\x90\x71\x08\x8f\x73\x5d\xa5\x45\ \x1f\xa1\x7f\xe9\xe5\xf9\x0f\xd2\x7f\xef\xcb\xf2\x70\xfa\x4e\x07\ \x35\xb1\xa0\x54\xad\xc7\xb0\xae\xdc\xa2\xaf\xfa\x2f\xfd\xf9\x7e\ \x43\xf4\x8f\xfb\xf2\xfc\x9c\x5c\xca\xb6\xf0\x06\x4d\x6d\x71\x59\ \x50\x1e\xb5\xd9\x94\x55\x1f\x40\xdd\xdf\x89\xe5\xf9\x27\xf4\x9f\ \xfb\xf2\xfc\x9c\x64\xd9\xda\xb3\x5a\x26\x2f\x83\x9e\x31\x5d\xa9\ \x45\x0b\xa0\xac\xef\xc4\xf2\xfc\x87\xe9\x3f\xf7\xe5\xf9\x3e\x77\ \x6b\xa9\xdf\x63\xb6\xca\x92\x14\x01\x6d\xb3\x8f\xa9\xe0\x7f\x3a\ \xa1\x11\x95\x3a\xa5\x7a\xe7\xd6\xbe\xc6\x51\x5d\x4c\x2e\x11\x61\ \xe2\xd5\xef\x73\xa1\x84\xa0\xb0\xea\xd7\xb9\xf1\xec\x82\x71\x80\ \x73\xf4\xaf\x12\x15\xef\xc5\x7d\x85\xa2\xb4\x64\x37\xf1\xb5\xbd\ \x8f\x8f\x67\x8c\x1c\x63\x3c\xf3\x5e\x82\x08\xef\xe6\xaf\xb0\x74\ \x51\x90\x38\xfd\xc7\xc7\xac\x71\x40\x49\xc5\x7d\x85\xa2\xa7\x20\ \x71\xbb\x8f\x8f\x84\x64\x70\x70\x6b\xd0\x09\x1c\x02\x7d\x39\x3e\ \x95\xf6\x0a\x8a\x8e\x19\x3c\x7e\xe3\xe3\xee\x14\x08\x0a\x38\x03\ \xd7\x15\xe8\x27\x80\x08\xaf\xb0\x34\x51\xc3\x27\xda\x3b\x8f\x90\ \x18\x24\x7d\xd0\x4d\x79\xb4\xfb\x1f\x73\xe9\x5f\x60\x28\xa8\xe1\ \xf7\x83\xc4\x27\xc8\xf8\xff\x00\xb4\x15\x77\xfc\xeb\xcc\x6d\x00\ \x03\x8c\x73\x8a\xfb\x03\x45\x4f\x0f\xbc\x3d\xa3\xb8\xf8\xfc\x8c\ \x9c\x11\xc1\xf9\x15\xe8\xc2\x95\xc2\x52\x33\x5f\x60\x28\xa3\x86\ \x0b\x11\x6e\x47\xc8\x15\x0c\x63\x90\x4f\xf6\xab\xc2\x93\xff\x00\ \x2b\x8e\xfe\xb5\xf5\xfe\x8a\x8e\x1f\x79\x2f\x13\x7e\x47\xc8\x21\ \xbb\x1b\x4f\x6f\x7c\xf6\xa3\x82\x0a\x47\xf0\x3d\xeb\xeb\xed\x14\ \x70\xbb\xc3\xda\x7b\x8f\x90\x24\x01\x94\x9c\xfb\xf3\xef\x5e\xe5\ \x58\x20\x13\x8a\xfa\xfb\x45\x1c\x3e\xf0\xf6\x9e\xe3\xe4\x0a\x54\ \x40\xe1\x47\xbf\x3c\x56\x1b\x95\x93\xc7\x7f\x5e\x6b\xec\x0d\x14\ \x70\xc3\xda\x7b\x8f\x8f\xe0\x10\xac\xf6\x3d\xfb\x77\xaf\x54\xae\ \x30\x09\xcf\xc8\xaf\xaf\xf4\x51\xc3\xef\x0f\x69\xee\x3e\x3f\x61\ \x4a\xf5\xc7\xcd\x03\x68\xce\x72\x4e\x6b\xec\x0d\x15\x3c\x3e\xf2\ \x3d\xa3\xb8\xf9\x00\x79\x1d\xf1\x9e\xc6\xb1\x52\x94\x7d\x41\x15\ \xf6\x06\x8a\x38\x60\xf1\x17\xe4\x7c\x7d\xff\x00\xaa\x6b\xd0\x94\ \x93\x9f\x7e\x3d\xeb\xec\x0d\x14\x70\xfb\xc8\xf6\x8e\xe3\xe4\x07\ \x38\xe0\x8f\xf2\xac\x52\x3c\xb9\x38\xc5\x7d\x81\xa2\x8e\x19\x2f\ \x11\xdc\x7c\x7f\x1c\x64\x0c\x8c\x77\x19\xc5\x62\xa7\x01\xc2\x73\ \xc7\xd2\xbe\xc1\x51\x47\x0c\x87\x88\x7d\x87\xc8\x5b\x7c\x1b\x95\ \xcd\xf0\xc5\xb2\x0c\xb9\xce\x13\xe5\x4c\x76\x14\xe1\x27\xe8\x33\ \x57\x8f\x48\x7f\x45\xcd\x7b\xab\xe6\x33\x2f\x53\x46\x77\x4b\xd9\ \xb2\x0a\xd7\x24\x62\x4b\x89\xe3\x84\x35\xdc\x64\x1e\xea\xc7\xd0\ \xd7\xd0\x9a\x2a\x54\x12\x2b\x2a\xcd\xa1\x8b\x41\xe9\x2b\x0e\x88\ \xd2\xf1\x34\xe6\x9b\x82\x98\x76\xf8\xc3\xca\x91\xca\x96\xa3\xdd\ \x6b\x3f\xbc\xa3\xea\x68\xa7\xda\x2a\xe2\x42\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x02\x8a\ \x28\xa0\x02\x8a\x28\xa0\x02\x8a\x28\xa0\x0f\xff\xd9\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0b\ \x08\x01\x81\xe7\ \x00\x65\ \x00\x78\x00\x61\x00\x6d\x00\x70\x00\x6c\x00\x65\x00\x2e\x00\x6a\x00\x70\x00\x67\ " qt_resource_struct = b"\ \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\x12\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() PyQt5_gpl-5.10.1/examples/itemviews/README0000644000076500000240000000154413245231431020215 0ustar philstaff00000000000000Item views are widgets that typically display data sets. PyQt's model/view framework lets you handle large data sets by separating the underlying data from the way it is represented to the user, and provides support for customized rendering through the use of delegates. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/itemviews/simpledommodel.py0000755000076500000240000001557313245231431022733 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QAbstractItemModel, QFile, QIODevice, QModelIndex, Qt from PyQt5.QtWidgets import QApplication, QFileDialog, QMainWindow, QTreeView from PyQt5.QtXml import QDomDocument class DomItem(object): def __init__(self, node, row, parent=None): self.domNode = node # Record the item's location within its parent. self.rowNumber = row self.parentItem = parent self.childItems = {} def node(self): return self.domNode def parent(self): return self.parentItem def child(self, i): if i in self.childItems: return self.childItems[i] if i >= 0 and i < self.domNode.childNodes().count(): childNode = self.domNode.childNodes().item(i) childItem = DomItem(childNode, i, self) self.childItems[i] = childItem return childItem return None def row(self): return self.rowNumber class DomModel(QAbstractItemModel): def __init__(self, document, parent=None): super(DomModel, self).__init__(parent) self.domDocument = document self.rootItem = DomItem(self.domDocument, 0) def columnCount(self, parent): return 3 def data(self, index, role): if not index.isValid(): return None if role != Qt.DisplayRole: return None item = index.internalPointer() node = item.node() attributes = [] attributeMap = node.attributes() if index.column() == 0: return node.nodeName() elif index.column() == 1: for i in range(0, attributeMap.count()): attribute = attributeMap.item(i) attributes.append(attribute.nodeName() + '="' + attribute.nodeValue() + '"') return " ".join(attributes) if index.column() == 2: value = node.nodeValue() if value is None: return '' return ' '.join(node.nodeValue().split('\n')) return None def flags(self, index): if not index.isValid(): return Qt.NoItemFlags return Qt.ItemIsEnabled | Qt.ItemIsSelectable def headerData(self, section, orientation, role): if orientation == Qt.Horizontal and role == Qt.DisplayRole: if section == 0: return "Name" if section == 1: return "Attributes" if section == 2: return "Value" return None def index(self, row, column, parent): if not self.hasIndex(row, column, parent): return QModelIndex() if not parent.isValid(): parentItem = self.rootItem else: parentItem = parent.internalPointer() childItem = parentItem.child(row) if childItem: return self.createIndex(row, column, childItem) else: return QModelIndex() def parent(self, child): if not child.isValid(): return QModelIndex() childItem = child.internalPointer() parentItem = childItem.parent() if not parentItem or parentItem == self.rootItem: return QModelIndex() return self.createIndex(parentItem.row(), 0, parentItem) def rowCount(self, parent): if parent.column() > 0: return 0 if not parent.isValid(): parentItem = self.rootItem else: parentItem = parent.internalPointer() return parentItem.node().childNodes().count() class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction("&Open...", self.openFile, "Ctrl+O") self.fileMenu.addAction("E&xit", self.close, "Ctrl+Q") self.xmlPath = "" self.model = DomModel(QDomDocument(), self) self.view = QTreeView(self) self.view.setModel(self.model) self.setCentralWidget(self.view) self.setWindowTitle("Simple DOM Model") def openFile(self): filePath, _ = QFileDialog.getOpenFileName(self, "Open File", self.xmlPath, "XML files (*.xml);;HTML files (*.html);;" "SVG files (*.svg);;User Interface files (*.ui)") if filePath: f = QFile(filePath) if f.open(QIODevice.ReadOnly): document = QDomDocument() if document.setContent(f): newModel = DomModel(document, self) self.view.setModel(newModel) self.model = newModel self.xmlPath = filePath f.close() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.resize(640, 480) window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/simpletreemodel/0000755000076500000240000000000013245231431022523 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/itemviews/simpletreemodel/default.txt0000644000076500000240000000367113245231431024717 0ustar philstaff00000000000000Getting Started How to familiarize yourself with Qt Designer Launching Designer Running the Qt Designer application The User Interface How to interact with Qt Designer Designing a Component Creating a GUI for your application Creating a Dialog How to create a dialog Composing the Dialog Putting widgets into the dialog example Creating a Layout Arranging widgets on a form Signal and Slot Connections Making widget communicate with each other Using a Component in Your Application Generating code from forms The Direct Approach Using a form without any adjustments The Single Inheritance Approach Subclassing a form's base class The Multiple Inheritance Approach Subclassing the form itself Automatic Connections Connecting widgets using a naming scheme A Dialog Without Auto-Connect How to connect widgets without a naming scheme A Dialog With Auto-Connect Using automatic connections Form Editing Mode How to edit a form in Qt Designer Managing Forms Loading and saving forms Editing a Form Basic editing techniques The Property Editor Changing widget properties The Object Inspector Examining the hierarchy of objects on a form Layouts Objects that arrange widgets on a form Applying and Breaking Layouts Managing widgets in layouts Horizontal and Vertical Layouts Standard row and column layouts The Grid Layout Arranging widgets in a matrix Previewing Forms Checking that the design works Using Containers How to group widgets together General Features Common container features Frames QFrame Group Boxes QGroupBox Stacked Widgets QStackedWidget Tab Widgets QTabWidget Toolbox Widgets QToolBox Connection Editing Mode Connecting widgets together with signals and slots Connecting Objects Making connections in Qt Designer Editing Connections Changing existing connections PyQt5_gpl-5.10.1/examples/itemviews/simpletreemodel/simpletreemodel.py0000755000076500000240000001471313245231431026300 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QAbstractItemModel, QFile, QIODevice, QModelIndex, Qt from PyQt5.QtWidgets import QApplication, QTreeView import simpletreemodel_rc class TreeItem(object): def __init__(self, data, parent=None): self.parentItem = parent self.itemData = data self.childItems = [] def appendChild(self, item): self.childItems.append(item) def child(self, row): return self.childItems[row] def childCount(self): return len(self.childItems) def columnCount(self): return len(self.itemData) def data(self, column): try: return self.itemData[column] except IndexError: return None def parent(self): return self.parentItem def row(self): if self.parentItem: return self.parentItem.childItems.index(self) return 0 class TreeModel(QAbstractItemModel): def __init__(self, data, parent=None): super(TreeModel, self).__init__(parent) self.rootItem = TreeItem(("Title", "Summary")) self.setupModelData(data.split('\n'), self.rootItem) def columnCount(self, parent): if parent.isValid(): return parent.internalPointer().columnCount() else: return self.rootItem.columnCount() def data(self, index, role): if not index.isValid(): return None if role != Qt.DisplayRole: return None item = index.internalPointer() return item.data(index.column()) def flags(self, index): if not index.isValid(): return Qt.NoItemFlags return Qt.ItemIsEnabled | Qt.ItemIsSelectable def headerData(self, section, orientation, role): if orientation == Qt.Horizontal and role == Qt.DisplayRole: return self.rootItem.data(section) return None def index(self, row, column, parent): if not self.hasIndex(row, column, parent): return QModelIndex() if not parent.isValid(): parentItem = self.rootItem else: parentItem = parent.internalPointer() childItem = parentItem.child(row) if childItem: return self.createIndex(row, column, childItem) else: return QModelIndex() def parent(self, index): if not index.isValid(): return QModelIndex() childItem = index.internalPointer() parentItem = childItem.parent() if parentItem == self.rootItem: return QModelIndex() return self.createIndex(parentItem.row(), 0, parentItem) def rowCount(self, parent): if parent.column() > 0: return 0 if not parent.isValid(): parentItem = self.rootItem else: parentItem = parent.internalPointer() return parentItem.childCount() def setupModelData(self, lines, parent): parents = [parent] indentations = [0] number = 0 while number < len(lines): position = 0 while position < len(lines[number]): if lines[number][position] != ' ': break position += 1 lineData = lines[number][position:].trimmed() if lineData: # Read the column data from the rest of the line. columnData = [s for s in lineData.split('\t') if s] if position > indentations[-1]: # The last child of the current parent is now the new # parent unless the current parent has no children. if parents[-1].childCount() > 0: parents.append(parents[-1].child(parents[-1].childCount() - 1)) indentations.append(position) else: while position < indentations[-1] and len(parents) > 0: parents.pop() indentations.pop() # Append a new item to the current parent's list of children. parents[-1].appendChild(TreeItem(columnData, parents[-1])) number += 1 if __name__ == '__main__': import sys app = QApplication(sys.argv) f = QFile(':/default.txt') f.open(QIODevice.ReadOnly) model = TreeModel(f.readAll()) f.close() view = QTreeView() view.setModel(model) view.setWindowTitle("Simple Tree Model") view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/simpletreemodel/simpletreemodel.qrc0000644000076500000240000000013613245231431026424 0ustar philstaff00000000000000 default.txt PyQt5_gpl-5.10.1/examples/itemviews/simpletreemodel/simpletreemodel_rc.py0000644000076500000240000002141613245231431026757 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 12 16:25:25 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x07\xb9\ \x47\ \x65\x74\x74\x69\x6e\x67\x20\x53\x74\x61\x72\x74\x65\x64\x09\x09\ \x09\x09\x48\x6f\x77\x20\x74\x6f\x20\x66\x61\x6d\x69\x6c\x69\x61\ \x72\x69\x7a\x65\x20\x79\x6f\x75\x72\x73\x65\x6c\x66\x20\x77\x69\ \x74\x68\x20\x51\x74\x20\x44\x65\x73\x69\x67\x6e\x65\x72\x0a\x20\ \x20\x20\x20\x4c\x61\x75\x6e\x63\x68\x69\x6e\x67\x20\x44\x65\x73\ \x69\x67\x6e\x65\x72\x09\x09\x09\x52\x75\x6e\x6e\x69\x6e\x67\x20\ \x74\x68\x65\x20\x51\x74\x20\x44\x65\x73\x69\x67\x6e\x65\x72\x20\ \x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x0a\x20\x20\x20\x20\ \x54\x68\x65\x20\x55\x73\x65\x72\x20\x49\x6e\x74\x65\x72\x66\x61\ \x63\x65\x09\x09\x09\x48\x6f\x77\x20\x74\x6f\x20\x69\x6e\x74\x65\ \x72\x61\x63\x74\x20\x77\x69\x74\x68\x20\x51\x74\x20\x44\x65\x73\ \x69\x67\x6e\x65\x72\x0a\x0a\x44\x65\x73\x69\x67\x6e\x69\x6e\x67\ \x20\x61\x20\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x09\x09\x09\x43\ \x72\x65\x61\x74\x69\x6e\x67\x20\x61\x20\x47\x55\x49\x20\x66\x6f\ \x72\x20\x79\x6f\x75\x72\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\ \x6f\x6e\x0a\x20\x20\x20\x20\x43\x72\x65\x61\x74\x69\x6e\x67\x20\ \x61\x20\x44\x69\x61\x6c\x6f\x67\x09\x09\x09\x48\x6f\x77\x20\x74\ \x6f\x20\x63\x72\x65\x61\x74\x65\x20\x61\x20\x64\x69\x61\x6c\x6f\ \x67\x0a\x20\x20\x20\x20\x43\x6f\x6d\x70\x6f\x73\x69\x6e\x67\x20\ \x74\x68\x65\x20\x44\x69\x61\x6c\x6f\x67\x09\x09\x50\x75\x74\x74\ \x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x73\x20\x69\x6e\x74\x6f\ \x20\x74\x68\x65\x20\x64\x69\x61\x6c\x6f\x67\x20\x65\x78\x61\x6d\ \x70\x6c\x65\x0a\x20\x20\x20\x20\x43\x72\x65\x61\x74\x69\x6e\x67\ \x20\x61\x20\x4c\x61\x79\x6f\x75\x74\x09\x09\x09\x41\x72\x72\x61\ \x6e\x67\x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x73\x20\x6f\x6e\ \x20\x61\x20\x66\x6f\x72\x6d\x0a\x20\x20\x20\x20\x53\x69\x67\x6e\ \x61\x6c\x20\x61\x6e\x64\x20\x53\x6c\x6f\x74\x20\x43\x6f\x6e\x6e\ \x65\x63\x74\x69\x6f\x6e\x73\x09\x09\x4d\x61\x6b\x69\x6e\x67\x20\ \x77\x69\x64\x67\x65\x74\x20\x63\x6f\x6d\x6d\x75\x6e\x69\x63\x61\ \x74\x65\x20\x77\x69\x74\x68\x20\x65\x61\x63\x68\x20\x6f\x74\x68\ \x65\x72\x0a\x0a\x55\x73\x69\x6e\x67\x20\x61\x20\x43\x6f\x6d\x70\ \x6f\x6e\x65\x6e\x74\x20\x69\x6e\x20\x59\x6f\x75\x72\x20\x41\x70\ \x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x09\x47\x65\x6e\x65\x72\x61\ \x74\x69\x6e\x67\x20\x63\x6f\x64\x65\x20\x66\x72\x6f\x6d\x20\x66\ \x6f\x72\x6d\x73\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x44\x69\x72\ \x65\x63\x74\x20\x41\x70\x70\x72\x6f\x61\x63\x68\x09\x09\x09\x55\ \x73\x69\x6e\x67\x20\x61\x20\x66\x6f\x72\x6d\x20\x77\x69\x74\x68\ \x6f\x75\x74\x20\x61\x6e\x79\x20\x61\x64\x6a\x75\x73\x74\x6d\x65\ \x6e\x74\x73\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x53\x69\x6e\x67\ \x6c\x65\x20\x49\x6e\x68\x65\x72\x69\x74\x61\x6e\x63\x65\x20\x41\ \x70\x70\x72\x6f\x61\x63\x68\x09\x53\x75\x62\x63\x6c\x61\x73\x73\ \x69\x6e\x67\x20\x61\x20\x66\x6f\x72\x6d\x27\x73\x20\x62\x61\x73\ \x65\x20\x63\x6c\x61\x73\x73\x0a\x20\x20\x20\x20\x54\x68\x65\x20\ \x4d\x75\x6c\x74\x69\x70\x6c\x65\x20\x49\x6e\x68\x65\x72\x69\x74\ \x61\x6e\x63\x65\x20\x41\x70\x70\x72\x6f\x61\x63\x68\x09\x53\x75\ \x62\x63\x6c\x61\x73\x73\x69\x6e\x67\x20\x74\x68\x65\x20\x66\x6f\ \x72\x6d\x20\x69\x74\x73\x65\x6c\x66\x0a\x20\x20\x20\x20\x41\x75\ \x74\x6f\x6d\x61\x74\x69\x63\x20\x43\x6f\x6e\x6e\x65\x63\x74\x69\ \x6f\x6e\x73\x09\x09\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6e\x67\x20\ \x77\x69\x64\x67\x65\x74\x73\x20\x75\x73\x69\x6e\x67\x20\x61\x20\ \x6e\x61\x6d\x69\x6e\x67\x20\x73\x63\x68\x65\x6d\x65\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x41\x20\x44\x69\x61\x6c\x6f\x67\x20\x57\ \x69\x74\x68\x6f\x75\x74\x20\x41\x75\x74\x6f\x2d\x43\x6f\x6e\x6e\ \x65\x63\x74\x09\x48\x6f\x77\x20\x74\x6f\x20\x63\x6f\x6e\x6e\x65\ \x63\x74\x20\x77\x69\x64\x67\x65\x74\x73\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x61\x20\x6e\x61\x6d\x69\x6e\x67\x20\x73\x63\x68\x65\ \x6d\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x41\x20\x44\x69\x61\ \x6c\x6f\x67\x20\x57\x69\x74\x68\x20\x41\x75\x74\x6f\x2d\x43\x6f\ \x6e\x6e\x65\x63\x74\x09\x55\x73\x69\x6e\x67\x20\x61\x75\x74\x6f\ \x6d\x61\x74\x69\x63\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\ \x73\x0a\x0a\x46\x6f\x72\x6d\x20\x45\x64\x69\x74\x69\x6e\x67\x20\ \x4d\x6f\x64\x65\x09\x09\x09\x48\x6f\x77\x20\x74\x6f\x20\x65\x64\ \x69\x74\x20\x61\x20\x66\x6f\x72\x6d\x20\x69\x6e\x20\x51\x74\x20\ \x44\x65\x73\x69\x67\x6e\x65\x72\x0a\x20\x20\x20\x20\x4d\x61\x6e\ \x61\x67\x69\x6e\x67\x20\x46\x6f\x72\x6d\x73\x09\x09\x09\x4c\x6f\ \x61\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x73\x61\x76\x69\x6e\x67\ \x20\x66\x6f\x72\x6d\x73\x0a\x20\x20\x20\x20\x45\x64\x69\x74\x69\ \x6e\x67\x20\x61\x20\x46\x6f\x72\x6d\x09\x09\x09\x42\x61\x73\x69\ \x63\x20\x65\x64\x69\x74\x69\x6e\x67\x20\x74\x65\x63\x68\x6e\x69\ \x71\x75\x65\x73\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x50\x72\x6f\ \x70\x65\x72\x74\x79\x20\x45\x64\x69\x74\x6f\x72\x09\x09\x09\x43\ \x68\x61\x6e\x67\x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x20\x70\ \x72\x6f\x70\x65\x72\x74\x69\x65\x73\x0a\x20\x20\x20\x20\x54\x68\ \x65\x20\x4f\x62\x6a\x65\x63\x74\x20\x49\x6e\x73\x70\x65\x63\x74\ \x6f\x72\x09\x09\x45\x78\x61\x6d\x69\x6e\x69\x6e\x67\x20\x74\x68\ \x65\x20\x68\x69\x65\x72\x61\x72\x63\x68\x79\x20\x6f\x66\x20\x6f\ \x62\x6a\x65\x63\x74\x73\x20\x6f\x6e\x20\x61\x20\x66\x6f\x72\x6d\ \x0a\x20\x20\x20\x20\x4c\x61\x79\x6f\x75\x74\x73\x09\x09\x09\x09\ \x4f\x62\x6a\x65\x63\x74\x73\x20\x74\x68\x61\x74\x20\x61\x72\x72\ \x61\x6e\x67\x65\x20\x77\x69\x64\x67\x65\x74\x73\x20\x6f\x6e\x20\ \x61\x20\x66\x6f\x72\x6d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x41\ \x70\x70\x6c\x79\x69\x6e\x67\x20\x61\x6e\x64\x20\x42\x72\x65\x61\ \x6b\x69\x6e\x67\x20\x4c\x61\x79\x6f\x75\x74\x73\x09\x4d\x61\x6e\ \x61\x67\x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x73\x20\x69\x6e\ \x20\x6c\x61\x79\x6f\x75\x74\x73\x20\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x48\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x20\x61\x6e\x64\ \x20\x56\x65\x72\x74\x69\x63\x61\x6c\x20\x4c\x61\x79\x6f\x75\x74\ \x73\x09\x53\x74\x61\x6e\x64\x61\x72\x64\x20\x72\x6f\x77\x20\x61\ \x6e\x64\x20\x63\x6f\x6c\x75\x6d\x6e\x20\x6c\x61\x79\x6f\x75\x74\ \x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x68\x65\x20\x47\x72\ \x69\x64\x20\x4c\x61\x79\x6f\x75\x74\x09\x09\x09\x41\x72\x72\x61\ \x6e\x67\x69\x6e\x67\x20\x77\x69\x64\x67\x65\x74\x73\x20\x69\x6e\ \x20\x61\x20\x6d\x61\x74\x72\x69\x78\x0a\x20\x20\x20\x20\x50\x72\ \x65\x76\x69\x65\x77\x69\x6e\x67\x20\x46\x6f\x72\x6d\x73\x09\x09\ \x09\x43\x68\x65\x63\x6b\x69\x6e\x67\x20\x74\x68\x61\x74\x20\x74\ \x68\x65\x20\x64\x65\x73\x69\x67\x6e\x20\x77\x6f\x72\x6b\x73\x0a\ \x0a\x55\x73\x69\x6e\x67\x20\x43\x6f\x6e\x74\x61\x69\x6e\x65\x72\ \x73\x09\x09\x09\x48\x6f\x77\x20\x74\x6f\x20\x67\x72\x6f\x75\x70\ \x20\x77\x69\x64\x67\x65\x74\x73\x20\x74\x6f\x67\x65\x74\x68\x65\ \x72\x0a\x20\x20\x20\x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x46\x65\ \x61\x74\x75\x72\x65\x73\x09\x09\x09\x43\x6f\x6d\x6d\x6f\x6e\x20\ \x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x20\x66\x65\x61\x74\x75\x72\ \x65\x73\x0a\x20\x20\x20\x20\x46\x72\x61\x6d\x65\x73\x09\x09\x09\ \x09\x51\x46\x72\x61\x6d\x65\x0a\x20\x20\x20\x20\x47\x72\x6f\x75\ \x70\x20\x42\x6f\x78\x65\x73\x09\x09\x09\x09\x51\x47\x72\x6f\x75\ \x70\x42\x6f\x78\x0a\x20\x20\x20\x20\x53\x74\x61\x63\x6b\x65\x64\ \x20\x57\x69\x64\x67\x65\x74\x73\x09\x09\x09\x51\x53\x74\x61\x63\ \x6b\x65\x64\x57\x69\x64\x67\x65\x74\x0a\x20\x20\x20\x20\x54\x61\ \x62\x20\x57\x69\x64\x67\x65\x74\x73\x09\x09\x09\x09\x51\x54\x61\ \x62\x57\x69\x64\x67\x65\x74\x0a\x20\x20\x20\x20\x54\x6f\x6f\x6c\ \x62\x6f\x78\x20\x57\x69\x64\x67\x65\x74\x73\x09\x09\x09\x51\x54\ \x6f\x6f\x6c\x42\x6f\x78\x0a\x0a\x43\x6f\x6e\x6e\x65\x63\x74\x69\ \x6f\x6e\x20\x45\x64\x69\x74\x69\x6e\x67\x20\x4d\x6f\x64\x65\x09\ \x09\x09\x43\x6f\x6e\x6e\x65\x63\x74\x69\x6e\x67\x20\x77\x69\x64\ \x67\x65\x74\x73\x20\x74\x6f\x67\x65\x74\x68\x65\x72\x20\x77\x69\ \x74\x68\x20\x73\x69\x67\x6e\x61\x6c\x73\x20\x61\x6e\x64\x20\x73\ \x6c\x6f\x74\x73\x0a\x20\x20\x20\x20\x43\x6f\x6e\x6e\x65\x63\x74\ \x69\x6e\x67\x20\x4f\x62\x6a\x65\x63\x74\x73\x09\x09\x09\x4d\x61\ \x6b\x69\x6e\x67\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x73\ \x20\x69\x6e\x20\x51\x74\x20\x44\x65\x73\x69\x67\x6e\x65\x72\x0a\ \x20\x20\x20\x20\x45\x64\x69\x74\x69\x6e\x67\x20\x43\x6f\x6e\x6e\ \x65\x63\x74\x69\x6f\x6e\x73\x09\x09\x09\x43\x68\x61\x6e\x67\x69\ \x6e\x67\x20\x65\x78\x69\x73\x74\x69\x6e\x67\x20\x63\x6f\x6e\x6e\ \x65\x63\x74\x69\x6f\x6e\x73\x0a\ " qt_resource_name = b"\ \x00\x0b\ \x0c\xe2\x22\xf4\ \x00\x64\ \x00\x65\x00\x66\x00\x61\x00\x75\x00\x6c\x00\x74\x00\x2e\x00\x74\x00\x78\x00\x74\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\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() PyQt5_gpl-5.10.1/examples/itemviews/simplewidgetmapper.py0000755000076500000240000001210213245231431023604 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtGui import QStandardItem, QStandardItemModel from PyQt5.QtWidgets import (QApplication, QDataWidgetMapper, QGridLayout, QLabel, QLineEdit, QPushButton, QSpinBox, QTextEdit, QWidget) class Window(QWidget): def __init__(self, parent=None): super(Window, self).__init__(parent) # Set up the model. self.setupModel() # Set up the widgets. nameLabel = QLabel("Na&me:") nameEdit = QLineEdit() addressLabel = QLabel("&Address:") addressEdit = QTextEdit() ageLabel = QLabel("A&ge (in years):") ageSpinBox = QSpinBox() self.nextButton = QPushButton("&Next") self.previousButton = QPushButton("&Previous") nameLabel.setBuddy(nameEdit) addressLabel.setBuddy(addressEdit) ageLabel.setBuddy(ageSpinBox) # Set up the mapper. self.mapper = QDataWidgetMapper(self) self.mapper.setModel(self.model) self.mapper.addMapping(nameEdit, 0) self.mapper.addMapping(addressEdit, 1) self.mapper.addMapping(ageSpinBox, 2) # Set up connections and layouts. self.previousButton.clicked.connect(self.mapper.toPrevious) self.nextButton.clicked.connect(self.mapper.toNext) self.mapper.currentIndexChanged.connect(self.updateButtons) layout = QGridLayout() layout.addWidget(nameLabel, 0, 0, 1, 1) layout.addWidget(nameEdit, 0, 1, 1, 1) layout.addWidget(self.previousButton, 0, 2, 1, 1) layout.addWidget(addressLabel, 1, 0, 1, 1) layout.addWidget(addressEdit, 1, 1, 2, 1) layout.addWidget(self.nextButton, 1, 2, 1, 1) layout.addWidget(ageLabel, 3, 0, 1, 1) layout.addWidget(ageSpinBox, 3, 1, 1, 1) self.setLayout(layout) self.setWindowTitle("Simple Widget Mapper") self.mapper.toFirst() def setupModel(self): self.model = QStandardItemModel(5, 3, self) names = ("Alice", "Bob", "Carol", "Donald", "Emma") addresses = ("123 Main Street
    Market Town
    ", "PO Box 32
    Mail Handling Service" "
    Service City
    ", "The Lighthouse
    Remote Island
    ", "47338 Park Avenue
    Big City
    ", "Research Station
    Base Camp
    Big Mountain
    ") ages = ("20", "31", "32", "19", "26") for row, name in enumerate(names): item = QStandardItem(name) self.model.setItem(row, 0, item) item = QStandardItem(addresses[row]) self.model.setItem(row, 1, item) item = QStandardItem(ages[row]) self.model.setItem(row, 2, item) def updateButtons(self, row): self.previousButton.setEnabled(row > 0) self.nextButton.setEnabled(row < self.model.rowCount() - 1) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/spinboxdelegate.py0000755000076500000240000000651613245231431023073 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2017 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QModelIndex, Qt from PyQt5.QtGui import QStandardItemModel from PyQt5.QtWidgets import (QApplication, QSpinBox, QStyledItemDelegate, QTableView) class SpinBoxDelegate(QStyledItemDelegate): def createEditor(self, parent, option, index): editor = QSpinBox(parent) editor.setFrame(False) editor.setMinimum(0) editor.setMaximum(100) return editor def setEditorData(self, spinBox, index): value = index.model().data(index, Qt.EditRole) spinBox.setValue(value) def setModelData(self, spinBox, model, index): spinBox.interpretText() value = spinBox.value() model.setData(index, value, Qt.EditRole) def updateEditorGeometry(self, editor, option, index): editor.setGeometry(option.rect) if __name__ == '__main__': import sys app = QApplication(sys.argv) model = QStandardItemModel(4, 2) tableView = QTableView() tableView.setModel(model) delegate = SpinBoxDelegate() tableView.setItemDelegate(delegate) for row in range(4): for column in range(2): index = model.index(row, column, QModelIndex()) model.setData(index, (row + 1) * (column + 1)) tableView.setWindowTitle("Spin Box Delegate") tableView.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/spreadsheet/0000755000076500000240000000000013245231431021640 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/itemviews/spreadsheet/images/0000755000076500000240000000000013245231431023105 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/itemviews/spreadsheet/images/interview.png0000644000076500000240000000025613245231431025632 0ustar philstaff00000000000000‰PNG  IHDRíÝâRPLTEÀÀÀÀÀÀÀÀÀÿÿÿc4‹`tRNS c”³KIDATx^=ŠÁ À0 ‰º‹=@T³ÿL§ tæAò‰XÌ| -¨P–ÀjcŸ©ÚìÒ¨¥@\VüjþG ¸.P9ÞñeøIØdúe™IEND®B`‚PyQt5_gpl-5.10.1/examples/itemviews/spreadsheet/printview.py0000644000076500000240000000423213245231431024242 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2012 Hans-Peter Jansen . ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## Contact: Nokia Corporation (qt-info@nokia.com) ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## GNU Lesser General Public License Usage ## This file may be used under the terms of the GNU Lesser General Public ## License version 2.1 as published by the Free Software Foundation and ## appearing in the file LICENSE.LGPL included in the packaging of this ## file. Please review the following information to ensure the GNU Lesser ## General Public License version 2.1 requirements will be met: ## http:#www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU General ## Public License version 3.0 as published by the Free Software Foundation ## and appearing in the file LICENSE.GPL included in the packaging of this ## file. Please review the following information to ensure the GNU General ## Public License version 3.0 requirements will be met: ## http:#www.gnu.org/copyleft/gpl.html. ## ## Other Usage ## Alternatively, this file may be used in accordance with the terms and ## conditions contained in a signed written agreement between you and Nokia. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QTableView class PrintView(QTableView): def __init__(self): super(PrintView, self).__init__() self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) def print_(self, printer): self.resize(printer.width(), printer.height()) self.render(printer) PyQt5_gpl-5.10.1/examples/itemviews/spreadsheet/spreadsheet.py0000644000076500000240000005430213245231431024525 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2012 Hans-Peter Jansen . ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## Contact: Nokia Corporation (qt-info@nokia.com) ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## GNU Lesser General Public License Usage ## This file may be used under the terms of the GNU Lesser General Public ## License version 2.1 as published by the Free Software Foundation and ## appearing in the file LICENSE.LGPL included in the packaging of this ## file. Please review the following information to ensure the GNU Lesser ## General Public License version 2.1 requirements will be met: ## http:#www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU General ## Public License version 3.0 as published by the Free Software Foundation ## and appearing in the file LICENSE.GPL included in the packaging of this ## file. Please review the following information to ensure the GNU General ## Public License version 3.0 requirements will be met: ## http:#www.gnu.org/copyleft/gpl.html. ## ## Other Usage ## Alternatively, this file may be used in accordance with the terms and ## conditions contained in a signed written agreement between you and Nokia. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDate, QPoint, Qt from PyQt5.QtGui import QColor, QIcon, QKeySequence, QPainter, QPixmap from PyQt5.QtWidgets import (QAction, QActionGroup, QApplication, QColorDialog, QComboBox, QDialog, QFontDialog, QGroupBox, QHBoxLayout, QLabel, QLineEdit, QMainWindow, QMessageBox, QPushButton, QTableWidget, QTableWidgetItem, QToolBar, QVBoxLayout) from PyQt5.QtPrintSupport import QPrinter, QPrintPreviewDialog import spreadsheet_rc from spreadsheetdelegate import SpreadSheetDelegate from spreadsheetitem import SpreadSheetItem from printview import PrintView from util import decode_pos, encode_pos class SpreadSheet(QMainWindow): dateFormats = ["dd/M/yyyy", "yyyy/M/dd", "dd.MM.yyyy"] currentDateFormat = dateFormats[0] def __init__(self, rows, cols, parent = None): super(SpreadSheet, self).__init__(parent) self.toolBar = QToolBar() self.addToolBar(self.toolBar) self.formulaInput = QLineEdit() self.cellLabel = QLabel(self.toolBar) self.cellLabel.setMinimumSize(80, 0) self.toolBar.addWidget(self.cellLabel) self.toolBar.addWidget(self.formulaInput) self.table = QTableWidget(rows, cols, self) for c in range(cols): character = chr(ord('A') + c) self.table.setHorizontalHeaderItem(c, QTableWidgetItem(character)) self.table.setItemPrototype(self.table.item(rows - 1, cols - 1)) self.table.setItemDelegate(SpreadSheetDelegate(self)) self.createActions() self.updateColor(0) self.setupMenuBar() self.setupContents() self.setupContextMenu() self.setCentralWidget(self.table) self.statusBar() self.table.currentItemChanged.connect(self.updateStatus) self.table.currentItemChanged.connect(self.updateColor) self.table.currentItemChanged.connect(self.updateLineEdit) self.table.itemChanged.connect(self.updateStatus) self.formulaInput.returnPressed.connect(self.returnPressed) self.table.itemChanged.connect(self.updateLineEdit) self.setWindowTitle("Spreadsheet") def createActions(self): self.cell_sumAction = QAction("Sum", self) self.cell_sumAction.triggered.connect(self.actionSum) self.cell_addAction = QAction("&Add", self) self.cell_addAction.setShortcut(Qt.CTRL | Qt.Key_Plus) self.cell_addAction.triggered.connect(self.actionAdd) self.cell_subAction = QAction("&Subtract", self) self.cell_subAction.setShortcut(Qt.CTRL | Qt.Key_Minus) self.cell_subAction.triggered.connect(self.actionSubtract) self.cell_mulAction = QAction("&Multiply", self) self.cell_mulAction.setShortcut(Qt.CTRL | Qt.Key_multiply) self.cell_mulAction.triggered.connect(self.actionMultiply) self.cell_divAction = QAction("&Divide", self) self.cell_divAction.setShortcut(Qt.CTRL | Qt.Key_division) self.cell_divAction.triggered.connect(self.actionDivide) self.fontAction = QAction("Font...", self) self.fontAction.setShortcut(Qt.CTRL | Qt.Key_F) self.fontAction.triggered.connect(self.selectFont) self.colorAction = QAction(QIcon(QPixmap(16, 16)), "Background &Color...", self) self.colorAction.triggered.connect(self.selectColor) self.clearAction = QAction("Clear", self) self.clearAction.setShortcut(Qt.Key_Delete) self.clearAction.triggered.connect(self.clear) self.aboutSpreadSheet = QAction("About Spreadsheet", self) self.aboutSpreadSheet.triggered.connect(self.showAbout) self.exitAction = QAction("E&xit", self) self.exitAction.setShortcut(QKeySequence.Quit) self.exitAction.triggered.connect(QApplication.instance().quit) self.printAction = QAction("&Print", self) self.printAction.setShortcut(QKeySequence.Print) self.printAction.triggered.connect(self.print_) self.firstSeparator = QAction(self) self.firstSeparator.setSeparator(True) self.secondSeparator = QAction(self) self.secondSeparator.setSeparator(True) def setupMenuBar(self): self.fileMenu = self.menuBar().addMenu("&File") self.dateFormatMenu = self.fileMenu.addMenu("&Date format") self.dateFormatGroup = QActionGroup(self) for f in self.dateFormats: action = QAction(f, self, checkable=True, triggered=self.changeDateFormat) self.dateFormatGroup.addAction(action) self.dateFormatMenu.addAction(action) if f == self.currentDateFormat: action.setChecked(True) self.fileMenu.addAction(self.printAction) self.fileMenu.addAction(self.exitAction) self.cellMenu = self.menuBar().addMenu("&Cell") self.cellMenu.addAction(self.cell_addAction) self.cellMenu.addAction(self.cell_subAction) self.cellMenu.addAction(self.cell_mulAction) self.cellMenu.addAction(self.cell_divAction) self.cellMenu.addAction(self.cell_sumAction) self.cellMenu.addSeparator() self.cellMenu.addAction(self.colorAction) self.cellMenu.addAction(self.fontAction) self.menuBar().addSeparator() self.aboutMenu = self.menuBar().addMenu("&Help") self.aboutMenu.addAction(self.aboutSpreadSheet) def changeDateFormat(self): action = self.sender() oldFormat = self.currentDateFormat newFormat = self.currentDateFormat = action.text() for row in range(self.table.rowCount()): item = self.table.item(row, 1) date = QDate.fromString(item.text(), oldFormat) item.setText(date.toString(newFormat)) def updateStatus(self, item): if item and item == self.table.currentItem(): self.statusBar().showMessage(item.data(Qt.StatusTipRole), 1000) self.cellLabel.setText("Cell: (%s)" % encode_pos(self.table.row(item), self.table.column(item))) def updateColor(self, item): pixmap = QPixmap(16, 16) color = QColor() if item: color = item.backgroundColor() if not color.isValid(): color = self.palette().base().color() painter = QPainter(pixmap) painter.fillRect(0, 0, 16, 16, color) lighter = color.lighter() painter.setPen(lighter) # light frame painter.drawPolyline(QPoint(0, 15), QPoint(0, 0), QPoint(15, 0)) painter.setPen(color.darker()) # dark frame painter.drawPolyline(QPoint(1, 15), QPoint(15, 15), QPoint(15, 1)) painter.end() self.colorAction.setIcon(QIcon(pixmap)) def updateLineEdit(self, item): if item != self.table.currentItem(): return if item: self.formulaInput.setText(item.data(Qt.EditRole)) else: self.formulaInput.clear() def returnPressed(self): text = self.formulaInput.text() row = self.table.currentRow() col = self.table.currentColumn() item = self.table.item(row, col) if not item: self.table.setItem(row, col, SpreadSheetItem(text)) else: item.setData(Qt.EditRole, text) self.table.viewport().update() def selectColor(self): item = self.table.currentItem() color = item and QColor(item.background()) or self.table.palette().base().color() color = QColorDialog.getColor(color, self) if not color.isValid(): return selected = self.table.selectedItems() if not selected: return for i in selected: i and i.setBackground(color) self.updateColor(self.table.currentItem()) def selectFont(self): selected = self.table.selectedItems() if not selected: return font, ok = QFontDialog.getFont(self.font(), self) if not ok: return for i in selected: i and i.setFont(font) def runInputDialog(self, title, c1Text, c2Text, opText, outText, cell1, cell2, outCell): rows = [] cols = [] for r in range(self.table.rowCount()): rows.append(str(r + 1)) for c in range(self.table.columnCount()): cols.append(chr(ord('A') + c)) addDialog = QDialog(self) addDialog.setWindowTitle(title) group = QGroupBox(title, addDialog) group.setMinimumSize(250, 100) cell1Label = QLabel(c1Text, group) cell1RowInput = QComboBox(group) c1Row, c1Col = decode_pos(cell1) cell1RowInput.addItems(rows) cell1RowInput.setCurrentIndex(c1Row) cell1ColInput = QComboBox(group) cell1ColInput.addItems(cols) cell1ColInput.setCurrentIndex(c1Col) operatorLabel = QLabel(opText, group) operatorLabel.setAlignment(Qt.AlignHCenter) cell2Label = QLabel(c2Text, group) cell2RowInput = QComboBox(group) c2Row, c2Col = decode_pos(cell2) cell2RowInput.addItems(rows) cell2RowInput.setCurrentIndex(c2Row) cell2ColInput = QComboBox(group) cell2ColInput.addItems(cols) cell2ColInput.setCurrentIndex(c2Col) equalsLabel = QLabel("=", group) equalsLabel.setAlignment(Qt.AlignHCenter) outLabel = QLabel(outText, group) outRowInput = QComboBox(group) outRow, outCol = decode_pos(outCell) outRowInput.addItems(rows) outRowInput.setCurrentIndex(outRow) outColInput = QComboBox(group) outColInput.addItems(cols) outColInput.setCurrentIndex(outCol) cancelButton = QPushButton("Cancel", addDialog) cancelButton.clicked.connect(addDialog.reject) okButton = QPushButton("OK", addDialog) okButton.setDefault(True) okButton.clicked.connect(addDialog.accept) buttonsLayout = QHBoxLayout() buttonsLayout.addStretch(1) buttonsLayout.addWidget(okButton) buttonsLayout.addSpacing(10) buttonsLayout.addWidget(cancelButton) dialogLayout = QVBoxLayout(addDialog) dialogLayout.addWidget(group) dialogLayout.addStretch(1) dialogLayout.addItem(buttonsLayout) cell1Layout = QHBoxLayout() cell1Layout.addWidget(cell1Label) cell1Layout.addSpacing(10) cell1Layout.addWidget(cell1ColInput) cell1Layout.addSpacing(10) cell1Layout.addWidget(cell1RowInput) cell2Layout = QHBoxLayout() cell2Layout.addWidget(cell2Label) cell2Layout.addSpacing(10) cell2Layout.addWidget(cell2ColInput) cell2Layout.addSpacing(10) cell2Layout.addWidget(cell2RowInput) outLayout = QHBoxLayout() outLayout.addWidget(outLabel) outLayout.addSpacing(10) outLayout.addWidget(outColInput) outLayout.addSpacing(10) outLayout.addWidget(outRowInput) vLayout = QVBoxLayout(group) vLayout.addItem(cell1Layout) vLayout.addWidget(operatorLabel) vLayout.addItem(cell2Layout) vLayout.addWidget(equalsLabel) vLayout.addStretch(1) vLayout.addItem(outLayout) if addDialog.exec_(): cell1 = cell1ColInput.currentText() + cell1RowInput.currentText() cell2 = cell2ColInput.currentText() + cell2RowInput.currentText() outCell = outColInput.currentText() + outRowInput.currentText() return True, cell1, cell2, outCell return False, None, None, None def actionSum(self): row_first = 0 row_last = 0 row_cur = 0 col_first = 0 col_last = 0 col_cur = 0 selected = self.table.selectedItems() if selected: first = selected[0] last = selected[-1] row_first = self.table.row(first) row_last = self.table.row(last) col_first = self.table.column(first) col_last = self.table.column(last) current = self.table.currentItem() if current: row_cur = self.table.row(current) col_cur = self.table.column(current) cell1 = encode_pos(row_first, col_first) cell2 = encode_pos(row_last, col_last) out = encode_pos(row_cur, col_cur) ok, cell1, cell2, out = self.runInputDialog("Sum cells", "First cell:", "Last cell:", u"\N{GREEK CAPITAL LETTER SIGMA}", "Output to:", cell1, cell2, out) if ok: row, col = decode_pos(out) self.table.item(row, col).setText("sum %s %s" % (cell1, cell2)) def actionMath_helper(self, title, op): cell1 = "C1" cell2 = "C2" out = "C3" current = self.table.currentItem() if current: out = encode_pos(self.table.currentRow(), self.table.currentColumn()) ok, cell1, cell2, out = self.runInputDialog(title, "Cell 1", "Cell 2", op, "Output to:", cell1, cell2, out) if ok: row, col = decode_pos(out) self.table.item(row, col).setText("%s %s %s" % (op, cell1, cell2)) def actionAdd(self): self.actionMath_helper("Addition", "+") def actionSubtract(self): self.actionMath_helper("Subtraction", "-") def actionMultiply(self): self.actionMath_helper("Multiplication", "*") def actionDivide(self): self.actionMath_helper("Division", "/") def clear(self): for i in self.table.selectedItems(): i.setText("") def setupContextMenu(self): self.addAction(self.cell_addAction) self.addAction(self.cell_subAction) self.addAction(self.cell_mulAction) self.addAction(self.cell_divAction) self.addAction(self.cell_sumAction) self.addAction(self.firstSeparator) self.addAction(self.colorAction) self.addAction(self.fontAction) self.addAction(self.secondSeparator) self.addAction(self.clearAction) self.setContextMenuPolicy(Qt.ActionsContextMenu) def setupContents(self): titleBackground = QColor(Qt.lightGray) titleFont = self.table.font() titleFont.setBold(True) # column 0 self.table.setItem(0, 0, SpreadSheetItem("Item")) self.table.item(0, 0).setBackground(titleBackground) self.table.item(0, 0).setToolTip("This column shows the purchased item/service") self.table.item(0, 0).setFont(titleFont) self.table.setItem(1, 0, SpreadSheetItem("AirportBus")) self.table.setItem(2, 0, SpreadSheetItem("Flight (Munich)")) self.table.setItem(3, 0, SpreadSheetItem("Lunch")) self.table.setItem(4, 0, SpreadSheetItem("Flight (LA)")) self.table.setItem(5, 0, SpreadSheetItem("Taxi")) self.table.setItem(6, 0, SpreadSheetItem("Dinner")) self.table.setItem(7, 0, SpreadSheetItem("Hotel")) self.table.setItem(8, 0, SpreadSheetItem("Flight (Oslo)")) self.table.setItem(9, 0, SpreadSheetItem("Total:")) self.table.item(9, 0).setFont(titleFont) self.table.item(9, 0).setBackground(Qt.lightGray) # column 1 self.table.setItem(0, 1, SpreadSheetItem("Date")) self.table.item(0, 1).setBackground(titleBackground) self.table.item(0, 1).setToolTip("This column shows the purchase date, double click to change") self.table.item(0, 1).setFont(titleFont) self.table.setItem(1, 1, SpreadSheetItem("15/6/2006")) self.table.setItem(2, 1, SpreadSheetItem("15/6/2006")) self.table.setItem(3, 1, SpreadSheetItem("15/6/2006")) self.table.setItem(4, 1, SpreadSheetItem("21/5/2006")) self.table.setItem(5, 1, SpreadSheetItem("16/6/2006")) self.table.setItem(6, 1, SpreadSheetItem("16/6/2006")) self.table.setItem(7, 1, SpreadSheetItem("16/6/2006")) self.table.setItem(8, 1, SpreadSheetItem("18/6/2006")) self.table.setItem(9, 1, SpreadSheetItem()) self.table.item(9, 1).setBackground(Qt.lightGray) # column 2 self.table.setItem(0, 2, SpreadSheetItem("Price")) self.table.item(0, 2).setBackground(titleBackground) self.table.item(0, 2).setToolTip("This column shows the price of the purchase") self.table.item(0, 2).setFont(titleFont) self.table.setItem(1, 2, SpreadSheetItem("150")) self.table.setItem(2, 2, SpreadSheetItem("2350")) self.table.setItem(3, 2, SpreadSheetItem("-14")) self.table.setItem(4, 2, SpreadSheetItem("980")) self.table.setItem(5, 2, SpreadSheetItem("5")) self.table.setItem(6, 2, SpreadSheetItem("120")) self.table.setItem(7, 2, SpreadSheetItem("300")) self.table.setItem(8, 2, SpreadSheetItem("1240")) self.table.setItem(9, 2, SpreadSheetItem()) self.table.item(9, 2).setBackground(Qt.lightGray) # column 3 self.table.setItem(0, 3, SpreadSheetItem("Currency")) self.table.item(0, 3).setBackgroundColor(titleBackground) self.table.item(0, 3).setToolTip("This column shows the currency") self.table.item(0, 3).setFont(titleFont) self.table.setItem(1, 3, SpreadSheetItem("NOK")) self.table.setItem(2, 3, SpreadSheetItem("NOK")) self.table.setItem(3, 3, SpreadSheetItem("EUR")) self.table.setItem(4, 3, SpreadSheetItem("EUR")) self.table.setItem(5, 3, SpreadSheetItem("USD")) self.table.setItem(6, 3, SpreadSheetItem("USD")) self.table.setItem(7, 3, SpreadSheetItem("USD")) self.table.setItem(8, 3, SpreadSheetItem("USD")) self.table.setItem(9, 3, SpreadSheetItem()) self.table.item(9,3).setBackground(Qt.lightGray) # column 4 self.table.setItem(0, 4, SpreadSheetItem("Ex. Rate")) self.table.item(0, 4).setBackground(titleBackground) self.table.item(0, 4).setToolTip("This column shows the exchange rate to NOK") self.table.item(0, 4).setFont(titleFont) self.table.setItem(1, 4, SpreadSheetItem("1")) self.table.setItem(2, 4, SpreadSheetItem("1")) self.table.setItem(3, 4, SpreadSheetItem("8")) self.table.setItem(4, 4, SpreadSheetItem("8")) self.table.setItem(5, 4, SpreadSheetItem("7")) self.table.setItem(6, 4, SpreadSheetItem("7")) self.table.setItem(7, 4, SpreadSheetItem("7")) self.table.setItem(8, 4, SpreadSheetItem("7")) self.table.setItem(9, 4, SpreadSheetItem()) self.table.item(9,4).setBackground(Qt.lightGray) # column 5 self.table.setItem(0, 5, SpreadSheetItem("NOK")) self.table.item(0, 5).setBackground(titleBackground) self.table.item(0, 5).setToolTip("This column shows the expenses in NOK") self.table.item(0, 5).setFont(titleFont) self.table.setItem(1, 5, SpreadSheetItem("* C2 E2")) self.table.setItem(2, 5, SpreadSheetItem("* C3 E3")) self.table.setItem(3, 5, SpreadSheetItem("* C4 E4")) self.table.setItem(4, 5, SpreadSheetItem("* C5 E5")) self.table.setItem(5, 5, SpreadSheetItem("* C6 E6")) self.table.setItem(6, 5, SpreadSheetItem("* C7 E7")) self.table.setItem(7, 5, SpreadSheetItem("* C8 E8")) self.table.setItem(8, 5, SpreadSheetItem("* C9 E9")) self.table.setItem(9, 5, SpreadSheetItem("sum F2 F9")) self.table.item(9,5).setBackground(Qt.lightGray) def showAbout(self): QMessageBox.about(self, "About Spreadsheet", """

    This demo shows use of QTableWidget with custom handling for individual cells.

    Using a customized table item we make it possible to have dynamic output in different cells. The content that is implemented for this particular demo is:

    • Adding two cells.
    • Subtracting one cell from another.
    • Multiplying two cells.
    • Dividing one cell with another.
    • Summing the contents of an arbitrary number of cells.
    • """) def print_(self): printer = QPrinter(QPrinter.ScreenResolution) dlg = QPrintPreviewDialog(printer) view = PrintView() view.setModel(self.table.model()) dlg.paintRequested.connect(view.print_) dlg.exec_() if __name__ == '__main__': import sys app = QApplication(sys.argv) sheet = SpreadSheet(10, 6) sheet.setWindowIcon(QIcon(QPixmap(":/images/interview.png"))) sheet.resize(640, 420) sheet.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/spreadsheet/spreadsheet.qrc0000644000076500000240000000016013245231431024653 0ustar philstaff00000000000000 images/interview.png PyQt5_gpl-5.10.1/examples/itemviews/spreadsheet/spreadsheet_rc.py0000644000076500000240000000323213245231431025205 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Wed May 15 17:17:52 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x00\xae\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x10\x00\x00\x00\x10\x04\x03\x00\x00\x00\xed\xdd\xe2\x52\ \x00\x00\x00\x0f\x50\x4c\x54\x45\xc0\xc0\xc0\xc0\xc0\xc0\xc0\xc0\ \xc0\xff\xff\xff\x00\x00\x00\x63\x34\x8b\x60\x00\x00\x00\x03\x74\ \x52\x4e\x53\x00\x01\x02\x0d\x63\x94\xb3\x00\x00\x00\x4b\x49\x44\ \x41\x54\x78\x5e\x3d\x8a\xc1\x0d\xc0\x30\x0c\x02\x1d\x89\x01\xba\ \x8b\x3d\x40\x54\xb3\xff\x4c\x05\xa7\x0a\x0f\x74\xe6\x1c\x41\xf2\ \x89\x58\x81\xcc\x7c\x0d\x2d\xa8\x50\x06\x96\xc0\x6a\x63\x9f\xa9\ \xda\x12\xec\xd2\xa8\xa5\x40\x03\x5c\x56\x06\xfc\x6a\xfe\x47\x0d\ \xb8\x2e\x50\x39\xde\xf1\x65\xf8\x00\x49\xd8\x14\x02\x64\xfa\x65\ \x99\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0d\ \x0f\x7f\xc5\x07\ \x00\x69\ \x00\x6e\x00\x74\x00\x65\x00\x72\x00\x76\x00\x69\x00\x65\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \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\x12\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() PyQt5_gpl-5.10.1/examples/itemviews/spreadsheet/spreadsheetdelegate.py0000644000076500000240000000706013245231431026217 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2012 Hans-Peter Jansen . ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## Contact: Nokia Corporation (qt-info@nokia.com) ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## GNU Lesser General Public License Usage ## This file may be used under the terms of the GNU Lesser General Public ## License version 2.1 as published by the Free Software Foundation and ## appearing in the file LICENSE.LGPL included in the packaging of this ## file. Please review the following information to ensure the GNU Lesser ## General Public License version 2.1 requirements will be met: ## http:#www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU General ## Public License version 3.0 as published by the Free Software Foundation ## and appearing in the file LICENSE.GPL included in the packaging of this ## file. Please review the following information to ensure the GNU General ## Public License version 3.0 requirements will be met: ## http:#www.gnu.org/copyleft/gpl.html. ## ## Other Usage ## Alternatively, this file may be used in accordance with the terms and ## conditions contained in a signed written agreement between you and Nokia. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDate, Qt from PyQt5.QtWidgets import QCompleter, QDateTimeEdit, QItemDelegate, QLineEdit class SpreadSheetDelegate(QItemDelegate): def __init__(self, parent = None): super(SpreadSheetDelegate, self).__init__(parent) def createEditor(self, parent, styleOption, index): if index.column() == 1: editor = QDateTimeEdit(parent) editor.setDisplayFormat(self.parent().currentDateFormat) editor.setCalendarPopup(True) return editor editor = QLineEdit(parent) # create a completer with the strings in the column as model allStrings = [] for i in range(1, index.model().rowCount()): strItem = index.model().data(index.sibling(i, index.column()), Qt.EditRole) if strItem not in allStrings: allStrings.append(strItem) autoComplete = QCompleter(allStrings) editor.setCompleter(autoComplete) editor.editingFinished.connect(self.commitAndCloseEditor) return editor def commitAndCloseEditor(self): editor = self.sender() self.commitData.emit(editor) self.closeEditor.emit(editor, QItemDelegate.NoHint) def setEditorData(self, editor, index): if isinstance(editor, QLineEdit): editor.setText(index.model().data(index, Qt.EditRole)) elif isinstance(editor, QDateTimeEdit): editor.setDate(QDate.fromString( index.model().data(index, Qt.EditRole), self.parent().currentDateFormat)) def setModelData(self, editor, model, index): if isinstance(editor, QLineEdit): model.setData(index, editor.text()) elif isinstance(editor, QDateTimeEdit): model.setData(index, editor.date().toString(self.parent().currentDateFormat)) PyQt5_gpl-5.10.1/examples/itemviews/spreadsheet/spreadsheetitem.py0000644000076500000240000001260613245231431025405 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2012 Hans-Peter Jansen . ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## Contact: Nokia Corporation (qt-info@nokia.com) ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## GNU Lesser General Public License Usage ## This file may be used under the terms of the GNU Lesser General Public ## License version 2.1 as published by the Free Software Foundation and ## appearing in the file LICENSE.LGPL included in the packaging of this ## file. Please review the following information to ensure the GNU Lesser ## General Public License version 2.1 requirements will be met: ## http:#www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU General ## Public License version 3.0 as published by the Free Software Foundation ## and appearing in the file LICENSE.GPL included in the packaging of this ## file. Please review the following information to ensure the GNU General ## Public License version 3.0 requirements will be met: ## http:#www.gnu.org/copyleft/gpl.html. ## ## Other Usage ## Alternatively, this file may be used in accordance with the terms and ## conditions contained in a signed written agreement between you and Nokia. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtGui import QColor from PyQt5.QtWidgets import QTableWidgetItem from util import decode_pos class SpreadSheetItem(QTableWidgetItem): def __init__(self, text=None): if text is not None: super(SpreadSheetItem, self).__init__(text) else: super(SpreadSheetItem, self).__init__() self.isResolving = False def clone(self): item = super(SpreadSheetItem, self).clone() item.isResolving = self.isResolving return item def formula(self): return super(SpreadSheetItem, self).data(Qt.DisplayRole) def data(self, role): if role in (Qt.EditRole, Qt.StatusTipRole): return self.formula() if role == Qt.DisplayRole: return self.display() t = str(self.display()) try: number = int(t) except ValueError: number = None if role == Qt.TextColorRole: if number is None: return QColor(Qt.black) elif number < 0: return QColor(Qt.red) return QColor(Qt.blue) if role == Qt.TextAlignmentRole: if t and (t[0].isdigit() or t[0] == '-'): return Qt.AlignRight | Qt.AlignVCenter return super(SpreadSheetItem, self).data(role) def setData(self, role, value): super(SpreadSheetItem, self).setData(role, value) if self.tableWidget(): self.tableWidget().viewport().update() def display(self): # avoid circular dependencies if self.isResolving: return None self.isResolving = True result = self.computeFormula(self.formula(), self.tableWidget()) self.isResolving = False return result def computeFormula(self, formula, widget): if formula is None: return None # check if the string is actually a formula or not slist = formula.split(' ') if not slist or not widget: # it is a normal string return formula op = slist[0].lower() firstRow = -1 firstCol = -1 secondRow = -1 secondCol = -1 if len(slist) > 1: firstRow, firstCol = decode_pos(slist[1]) if len(slist) > 2: secondRow, secondCol = decode_pos(slist[2]) start = widget.item(firstRow, firstCol) end = widget.item(secondRow, secondCol) firstVal = 0 try: firstVal = start and int(start.text()) or 0 except ValueError: pass secondVal = 0 try: secondVal = end and int(end.text()) or 0 except ValueError: pass result = None if op == "sum": sum_ = 0 for r in range(firstRow, secondRow + 1): for c in range(firstCol, secondCol + 1): tableItem = widget.item(r, c) if tableItem and tableItem != self: try: sum_ += int(tableItem.text()) except ValueError: pass result = sum_ elif op == "+": result = (firstVal + secondVal) elif op == "-": result = (firstVal - secondVal) elif op == "*": result = (firstVal * secondVal) elif op == "/": if secondVal == 0: result = "nan" else: result = (firstVal / secondVal) elif op == "=": if start: result = start.text() else: result = formula return result PyQt5_gpl-5.10.1/examples/itemviews/spreadsheet/util.py0000644000076500000240000000371113245231431023171 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2012 Hans-Peter Jansen . ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## Contact: Nokia Corporation (qt-info@nokia.com) ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## GNU Lesser General Public License Usage ## This file may be used under the terms of the GNU Lesser General Public ## License version 2.1 as published by the Free Software Foundation and ## appearing in the file LICENSE.LGPL included in the packaging of this ## file. Please review the following information to ensure the GNU Lesser ## General Public License version 2.1 requirements will be met: ## http:#www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU General ## Public License version 3.0 as published by the Free Software Foundation ## and appearing in the file LICENSE.GPL included in the packaging of this ## file. Please review the following information to ensure the GNU General ## Public License version 3.0 requirements will be met: ## http:#www.gnu.org/copyleft/gpl.html. ## ## Other Usage ## Alternatively, this file may be used in accordance with the terms and ## conditions contained in a signed written agreement between you and Nokia. ## $QT_END_LICENSE$ ## ############################################################################# def decode_pos(pos): try: row = int(pos[1:]) - 1 col = ord(pos[0]) - ord('A') except ValueError: row = -1 col = -1 return row, col def encode_pos(row, col): return chr(col + ord('A')) + str(row + 1) PyQt5_gpl-5.10.1/examples/itemviews/stardelegate.py0000755000076500000240000002114313245231431022353 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import math from PyQt5.QtCore import pyqtSignal, QPointF, QSize, Qt from PyQt5.QtGui import QPainter, QPolygonF from PyQt5.QtWidgets import (QAbstractItemView, QApplication, QStyle, QStyledItemDelegate, QTableWidget, QTableWidgetItem, QWidget) class StarRating(object): # enum EditMode Editable, ReadOnly = range(2) PaintingScaleFactor = 20 def __init__(self, starCount=1, maxStarCount=5): self._starCount = starCount self._maxStarCount = maxStarCount self.starPolygon = QPolygonF([QPointF(1.0, 0.5)]) for i in range(5): self.starPolygon << QPointF(0.5 + 0.5 * math.cos(0.8 * i * math.pi), 0.5 + 0.5 * math.sin(0.8 * i * math.pi)) self.diamondPolygon = QPolygonF() self.diamondPolygon << QPointF(0.4, 0.5) \ << QPointF(0.5, 0.4) \ << QPointF(0.6, 0.5) \ << QPointF(0.5, 0.6) \ << QPointF(0.4, 0.5) def starCount(self): return self._starCount def maxStarCount(self): return self._maxStarCount def setStarCount(self, starCount): self._starCount = starCount def setMaxStarCount(self, maxStarCount): self._maxStarCount = maxStarCount def sizeHint(self): return self.PaintingScaleFactor * QSize(self._maxStarCount, 1) def paint(self, painter, rect, palette, editMode): painter.save() painter.setRenderHint(QPainter.Antialiasing, True) painter.setPen(Qt.NoPen) if editMode == StarRating.Editable: painter.setBrush(palette.highlight()) else: painter.setBrush(palette.windowText()) yOffset = (rect.height() - self.PaintingScaleFactor) / 2 painter.translate(rect.x(), rect.y() + yOffset) painter.scale(self.PaintingScaleFactor, self.PaintingScaleFactor) for i in range(self._maxStarCount): if i < self._starCount: painter.drawPolygon(self.starPolygon, Qt.WindingFill) elif editMode == StarRating.Editable: painter.drawPolygon(self.diamondPolygon, Qt.WindingFill) painter.translate(1.0, 0.0) painter.restore() class StarEditor(QWidget): editingFinished = pyqtSignal() def __init__(self, parent = None): super(StarEditor, self).__init__(parent) self._starRating = StarRating() self.setMouseTracking(True) self.setAutoFillBackground(True) def setStarRating(self, starRating): self._starRating = starRating def starRating(self): return self._starRating def sizeHint(self): return self._starRating.sizeHint() def paintEvent(self, event): painter = QPainter(self) self._starRating.paint(painter, self.rect(), self.palette(), StarRating.Editable) def mouseMoveEvent(self, event): star = self.starAtPosition(event.x()) if star != self._starRating.starCount() and star != -1: self._starRating.setStarCount(star) self.update() def mouseReleaseEvent(self, event): self.editingFinished.emit() def starAtPosition(self, x): # Enable a star, if pointer crosses the center horizontally. starwidth = self._starRating.sizeHint().width() // self._starRating.maxStarCount() star = (x + starwidth / 2) // starwidth if 0 <= star <= self._starRating.maxStarCount(): return star return -1 class StarDelegate(QStyledItemDelegate): def paint(self, painter, option, index): starRating = index.data() if isinstance(starRating, StarRating): if option.state & QStyle.State_Selected: painter.fillRect(option.rect, option.palette.highlight()) starRating.paint(painter, option.rect, option.palette, StarRating.ReadOnly) else: super(StarDelegate, self).paint(painter, option, index) def sizeHint(self, option, index): starRating = index.data() if isinstance(starRating, StarRating): return starRating.sizeHint() else: return super(StarDelegate, self).sizeHint(option, index) def createEditor(self, parent, option, index): starRating = index.data() if isinstance(starRating, StarRating): editor = StarEditor(parent) editor.editingFinished.connect(self.commitAndCloseEditor) return editor else: return super(StarDelegate, self).createEditor(parent, option, index) def setEditorData(self, editor, index): starRating = index.data() if isinstance(starRating, StarRating): editor.setStarRating(starRating) else: super(StarDelegate, self).setEditorData(editor, index) def setModelData(self, editor, model, index): starRating = index.data() if isinstance(starRating, StarRating): model.setData(index, editor.starRating()) else: super(StarDelegate, self).setModelData(editor, model, index) def commitAndCloseEditor(self): editor = self.sender() self.commitData.emit(editor) self.closeEditor.emit(editor) def populateTableWidget(tableWidget): staticData = ( ("Mass in B-Minor", "Baroque", "J.S. Bach", 5), ("Three More Foxes", "Jazz", "Maynard Ferguson", 4), ("Sex Bomb", "Pop", "Tom Jones", 3), ("Barbie Girl", "Pop", "Aqua", 5), ) for row, (title, genre, artist, rating) in enumerate(staticData): item0 = QTableWidgetItem(title) item1 = QTableWidgetItem(genre) item2 = QTableWidgetItem(artist) item3 = QTableWidgetItem() item3.setData(0, StarRating(rating)) tableWidget.setItem(row, 0, item0) tableWidget.setItem(row, 1, item1) tableWidget.setItem(row, 2, item2) tableWidget.setItem(row, 3, item3) if __name__ == '__main__': import sys app = QApplication(sys.argv) tableWidget = QTableWidget(4, 4) tableWidget.setItemDelegate(StarDelegate()) tableWidget.setEditTriggers( QAbstractItemView.DoubleClicked | QAbstractItemView.SelectedClicked) tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows) headerLabels = ("Title", "Genre", "Artist", "Rating") tableWidget.setHorizontalHeaderLabels(headerLabels) populateTableWidget(tableWidget) tableWidget.resizeColumnsToContents() tableWidget.resize(500, 300) tableWidget.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/itemviews/storageview.py0000644000076500000240000001407713245231431022253 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2017 Hans-Peter Jansen ## Copyright (C) 2016 The Qt Company Ltd. ## Copyright (C) 2016 Ivan Komissarov ## ## This file is part of the examples of the Qt Toolkit. ## ## $QT_BEGIN_LICENSE:BSD$ ## Commercial License Usage ## Licensees holding valid commercial Qt licenses may use this file in ## accordance with the commercial license agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and The Qt Company. For licensing terms ## and conditions see https:#www.qt.io/terms-conditions. For further ## information use the contact form at https:#www.qt.io/contact-us. ## ## BSD License Usage ## Alternatively, you may use self file under the terms of the BSD license ## as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, self list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, self list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of The Qt Company Ltd nor the names of its ## contributors may be used to endorse or promote products derived ## from self software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ## $QT_END_LICENSE$ ## ############################################################################# import math from PyQt5.QtCore import QAbstractTableModel, QByteArray, QDir, QStorageInfo, Qt from PyQt5.QtWidgets import QAbstractItemView, QApplication, QTreeView def sizeToString(size): if size <= 0: return "0 b" decimals = 2 units = ["b", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"] power = int(math.log(size, 1024)) try: unit = units[power] except IndexError: unit = units[-1] power = len(units) - 1 if power == 0: decimals = 0 normsize = size / math.pow(1024, power) #: this should expand to "1.23 GB" return "%0.*f %s" % (decimals, normsize, unit) class StorageModel(QAbstractTableModel): ColumnRootPath, ColumnName, ColumnDevice, ColumnFileSystemName, \ ColumnTotal, ColumnFree, ColumnAvailable, ColumnIsReady, \ ColumnIsReadOnly, ColumnIsValid, ColumnCount = range(11) columnFuncMap = { ColumnRootPath: lambda volume: QDir.toNativeSeparators(volume.rootPath()), ColumnName: lambda volume: volume.name(), ColumnDevice: lambda volume: volume.device(), ColumnFileSystemName: lambda volume: volume.fileSystemType(), ColumnTotal: lambda volume: sizeToString(volume.bytesTotal()), ColumnFree: lambda volume: sizeToString(volume.bytesFree()), ColumnAvailable: lambda volume: sizeToString(volume.bytesAvailable()), ColumnIsReady: lambda volume: volume.isReady(), ColumnIsReadOnly: lambda volume: volume.isReadOnly(), ColumnIsValid: lambda volume: volume.isValid(), } columnNameMap = { ColumnRootPath: "Root path", ColumnName: "Volume Name", ColumnDevice: "Device", ColumnFileSystemName: "File system", ColumnTotal: "Total", ColumnFree: "Free", ColumnAvailable: "Available", ColumnIsReady: "Ready", ColumnIsReadOnly: "Read-only", ColumnIsValid: "Valid", } def __init__(self, parent = None): super(StorageModel, self).__init__(parent) self.volumes = QStorageInfo.mountedVolumes() def columnCount(self, parent = None): return self.ColumnCount def rowCount(self, parent): if parent.isValid(): return 0 return len(self.volumes) def data(self, index, role): if not index.isValid(): return None if role == Qt.DisplayRole: volume = self.volumes[index.row()] func = self.columnFuncMap.get(index.column()) if func is not None: return func(volume) elif role == Qt.ToolTipRole: volume = self.volumes[index.row()] tooltip = [] for column in range(self.ColumnCount): label = self.columnNameMap.get(column) value = self.columnFuncMap[column](volume) if isinstance(value, QByteArray): value = str(bytes(value).decode('utf-8')) tooltip.append("{0}: {1}".format(label, value)) return "\n".join(tooltip) def headerData(self, section, orientation, role): if orientation != Qt.Horizontal: return None if role != Qt.DisplayRole: return None return self.columnNameMap.get(section) def main(args): app = QApplication (args) view = QTreeView() view.setModel(StorageModel(view)) view.resize(640, 480) view.setSelectionBehavior(QAbstractItemView.SelectRows) for column in range(view.model().columnCount()): view.resizeColumnToContents(column) view.show() return app.exec_() if __name__ == '__main__': import sys main(sys.argv) PyQt5_gpl-5.10.1/examples/layouts/0000755000076500000240000000000013245231431017015 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/layouts/basiclayouts.py0000755000076500000240000001164013245231431022076 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtWidgets import (QApplication, QComboBox, QDialog, QDialogButtonBox, QFormLayout, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit, QMenu, QMenuBar, QPushButton, QSpinBox, QTextEdit, QVBoxLayout) class Dialog(QDialog): NumGridRows = 3 NumButtons = 4 def __init__(self): super(Dialog, self).__init__() self.createMenu() self.createHorizontalGroupBox() self.createGridGroupBox() self.createFormGroupBox() bigEditor = QTextEdit() bigEditor.setPlainText("This widget takes up all the remaining space " "in the top-level layout.") buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) mainLayout = QVBoxLayout() mainLayout.setMenuBar(self.menuBar) mainLayout.addWidget(self.horizontalGroupBox) mainLayout.addWidget(self.gridGroupBox) mainLayout.addWidget(self.formGroupBox) mainLayout.addWidget(bigEditor) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Basic Layouts") def createMenu(self): self.menuBar = QMenuBar() self.fileMenu = QMenu("&File", self) self.exitAction = self.fileMenu.addAction("E&xit") self.menuBar.addMenu(self.fileMenu) self.exitAction.triggered.connect(self.accept) def createHorizontalGroupBox(self): self.horizontalGroupBox = QGroupBox("Horizontal layout") layout = QHBoxLayout() for i in range(Dialog.NumButtons): button = QPushButton("Button %d" % (i + 1)) layout.addWidget(button) self.horizontalGroupBox.setLayout(layout) def createGridGroupBox(self): self.gridGroupBox = QGroupBox("Grid layout") layout = QGridLayout() for i in range(Dialog.NumGridRows): label = QLabel("Line %d:" % (i + 1)) lineEdit = QLineEdit() layout.addWidget(label, i + 1, 0) layout.addWidget(lineEdit, i + 1, 1) self.smallEditor = QTextEdit() self.smallEditor.setPlainText("This widget takes up about two thirds " "of the grid layout.") layout.addWidget(self.smallEditor, 0, 2, 4, 1) layout.setColumnStretch(1, 10) layout.setColumnStretch(2, 20) self.gridGroupBox.setLayout(layout) def createFormGroupBox(self): self.formGroupBox = QGroupBox("Form layout") layout = QFormLayout() layout.addRow(QLabel("Line 1:"), QLineEdit()) layout.addRow(QLabel("Line 2, long text:"), QComboBox()) layout.addRow(QLabel("Line 3:"), QSpinBox()) self.formGroupBox.setLayout(layout) if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = Dialog() sys.exit(dialog.exec_()) PyQt5_gpl-5.10.1/examples/layouts/borderlayout.py0000755000076500000240000001752713245231431022121 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QRect, QSize, Qt from PyQt5.QtWidgets import (QApplication, QFrame, QLabel, QLayout, QTextBrowser, QWidget, QWidgetItem) class ItemWrapper(object): def __init__(self, i, p): self.item = i self.position = p class BorderLayout(QLayout): West, North, South, East, Center = range(5) MinimumSize, SizeHint = range(2) def __init__(self, parent=None, margin=None, spacing=-1): super(BorderLayout, self).__init__(parent) if margin is not None: self.setContentsMargins(margin, margin, margin, margin) self.setSpacing(spacing) self.list = [] def __del__(self): l = self.takeAt(0) while l is not None: l = self.takeAt(0) def addItem(self, item): self.add(item, self.West) def addWidget(self, widget, position): self.add(QWidgetItem(widget), position) def expandingDirections(self): return Qt.Horizontal | Qt.Vertical def hasHeightForWidth(self): return False def count(self): return len(self.list) def itemAt(self, index): if index < len(self.list): return self.list[index].item return None def minimumSize(self): return self.calculateSize(self.MinimumSize) def setGeometry(self, rect): center = None eastWidth = 0 westWidth = 0 northHeight = 0 southHeight = 0 centerHeight = 0 super(BorderLayout, self).setGeometry(rect) for wrapper in self.list: item = wrapper.item position = wrapper.position if position == self.North: item.setGeometry(QRect(rect.x(), northHeight, rect.width(), item.sizeHint().height())) northHeight += item.geometry().height() + self.spacing() elif position == self.South: item.setGeometry(QRect(item.geometry().x(), item.geometry().y(), rect.width(), item.sizeHint().height())) southHeight += item.geometry().height() + self.spacing() item.setGeometry(QRect(rect.x(), rect.y() + rect.height() - southHeight + self.spacing(), item.geometry().width(), item.geometry().height())) elif position == self.Center: center = wrapper centerHeight = rect.height() - northHeight - southHeight for wrapper in self.list: item = wrapper.item position = wrapper.position if position == self.West: item.setGeometry(QRect(rect.x() + westWidth, northHeight, item.sizeHint().width(), centerHeight)) westWidth += item.geometry().width() + self.spacing() elif position == self.East: item.setGeometry(QRect(item.geometry().x(), item.geometry().y(), item.sizeHint().width(), centerHeight)) eastWidth += item.geometry().width() + self.spacing() item.setGeometry(QRect(rect.x() + rect.width() - eastWidth + self.spacing(), northHeight, item.geometry().width(), item.geometry().height())) if center: center.item.setGeometry(QRect(westWidth, northHeight, rect.width() - eastWidth - westWidth, centerHeight)) def sizeHint(self): return self.calculateSize(self.SizeHint) def takeAt(self, index): if index >= 0 and index < len(self.list): layoutStruct = self.list.pop(index) return layoutStruct.item return None def add(self, item, position): self.list.append(ItemWrapper(item, position)) def calculateSize(self, sizeType): totalSize = QSize() for wrapper in self.list: position = wrapper.position itemSize = QSize() if sizeType == self.MinimumSize: itemSize = wrapper.item.minimumSize() else: # sizeType == self.SizeHint itemSize = wrapper.item.sizeHint() if position in (self.North, self.South, self.Center): totalSize.setHeight(totalSize.height() + itemSize.height()) if position in (self.West, self.East, self.Center): totalSize.setWidth(totalSize.width() + itemSize.width()) return totalSize class Window(QWidget): def __init__(self): super(Window, self).__init__() centralWidget = QTextBrowser() centralWidget.setPlainText("Central widget") layout = BorderLayout() layout.addWidget(centralWidget, BorderLayout.Center) # Because BorderLayout doesn't call its super-class addWidget() it # doesn't take ownership of the widgets until setLayout() is called. # Therefore we keep a local reference to each label to prevent it being # garbage collected too soon. label_n = self.createLabel("North") layout.addWidget(label_n, BorderLayout.North) label_w = self.createLabel("West") layout.addWidget(label_w, BorderLayout.West) label_e1 = self.createLabel("East 1") layout.addWidget(label_e1, BorderLayout.East) label_e2 = self.createLabel("East 2") layout.addWidget(label_e2, BorderLayout.East) label_s = self.createLabel("South") layout.addWidget(label_s, BorderLayout.South) self.setLayout(layout) self.setWindowTitle("Border Layout") def createLabel(self, text): label = QLabel(text) label.setFrameStyle(QFrame.Box | QFrame.Raised) return label if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/layouts/flowlayout.py0000755000076500000240000001227313245231431021604 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QPoint, QRect, QSize, Qt from PyQt5.QtWidgets import (QApplication, QLayout, QPushButton, QSizePolicy, QWidget) class Window(QWidget): def __init__(self): super(Window, self).__init__() flowLayout = FlowLayout() flowLayout.addWidget(QPushButton("Short")) flowLayout.addWidget(QPushButton("Longer")) flowLayout.addWidget(QPushButton("Different text")) flowLayout.addWidget(QPushButton("More text")) flowLayout.addWidget(QPushButton("Even longer button text")) self.setLayout(flowLayout) self.setWindowTitle("Flow Layout") class FlowLayout(QLayout): def __init__(self, parent=None, margin=0, spacing=-1): super(FlowLayout, self).__init__(parent) if parent is not None: self.setContentsMargins(margin, margin, margin, margin) self.setSpacing(spacing) self.itemList = [] def __del__(self): item = self.takeAt(0) while item: item = self.takeAt(0) def addItem(self, item): self.itemList.append(item) def count(self): return len(self.itemList) def itemAt(self, index): if index >= 0 and index < len(self.itemList): return self.itemList[index] return None def takeAt(self, index): if index >= 0 and index < len(self.itemList): return self.itemList.pop(index) return None def expandingDirections(self): return Qt.Orientations(Qt.Orientation(0)) def hasHeightForWidth(self): return True def heightForWidth(self, width): height = self.doLayout(QRect(0, 0, width, 0), True) return height def setGeometry(self, rect): super(FlowLayout, self).setGeometry(rect) self.doLayout(rect, False) def sizeHint(self): return self.minimumSize() def minimumSize(self): size = QSize() for item in self.itemList: size = size.expandedTo(item.minimumSize()) margin, _, _, _ = self.getContentsMargins() size += QSize(2 * margin, 2 * margin) return size def doLayout(self, rect, testOnly): x = rect.x() y = rect.y() lineHeight = 0 for item in self.itemList: wid = item.widget() spaceX = self.spacing() + wid.style().layoutSpacing(QSizePolicy.PushButton, QSizePolicy.PushButton, Qt.Horizontal) spaceY = self.spacing() + wid.style().layoutSpacing(QSizePolicy.PushButton, QSizePolicy.PushButton, Qt.Vertical) nextX = x + item.sizeHint().width() + spaceX if nextX - spaceX > rect.right() and lineHeight > 0: x = rect.x() y = y + lineHeight + spaceY nextX = x + item.sizeHint().width() + spaceX lineHeight = 0 if not testOnly: item.setGeometry(QRect(QPoint(x, y), item.sizeHint())) x = nextX lineHeight = max(lineHeight, item.sizeHint().height()) return y + lineHeight - rect.y() if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = Window() mainWin.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/layouts/README0000644000076500000240000000155613245231431017704 0ustar philstaff00000000000000PyQt uses a layout-based approach to widget management. Widgets are arranged in the optimal positions in windows based on simple layout rules, leading to a consistent look and feel. Custom layouts can be used to provide more control over the positions and sizes of child widgets. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/mainwindows/0000755000076500000240000000000013245231431017654 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/mainwindows/application/0000755000076500000240000000000013245231431022157 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/mainwindows/application/application.py0000755000076500000240000002364613245231431025052 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (QFile, QFileInfo, QPoint, QRect, QSettings, QSize, Qt, QTextStream) from PyQt5.QtGui import QIcon, QKeySequence from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QMainWindow, QMessageBox, QTextEdit) class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.curFile = '' self.textEdit = QTextEdit() self.setCentralWidget(self.textEdit) self.createActions() self.createMenus() self.createToolBars() self.createStatusBar() self.readSettings() self.textEdit.document().contentsChanged.connect(self.documentWasModified) self.setCurrentFile('') def closeEvent(self, event): if self.maybeSave(): self.writeSettings() event.accept() else: event.ignore() def newFile(self): if self.maybeSave(): self.textEdit.clear() self.setCurrentFile('') def open(self): if self.maybeSave(): fileName, _ = QFileDialog.getOpenFileName(self) if fileName: self.loadFile(fileName) def save(self): if self.curFile: return self.saveFile(self.curFile) return self.saveAs() def saveAs(self): fileName, _ = QFileDialog.getSaveFileName(self) if fileName: return self.saveFile(fileName) return False def about(self): QMessageBox.about(self, "About Application", "The Application example demonstrates how to write " "modern GUI applications using Qt, with a menu bar, " "toolbars, and a status bar.") def documentWasModified(self): self.setWindowModified(self.textEdit.document().isModified()) def createActions(self): root = QFileInfo(__file__).absolutePath() self.newAct = QAction(QIcon(root + '/images/new.png'), "&New", self, shortcut=QKeySequence.New, statusTip="Create a new file", triggered=self.newFile) self.openAct = QAction(QIcon(root + '/images/open.png'), "&Open...", self, shortcut=QKeySequence.Open, statusTip="Open an existing file", triggered=self.open) self.saveAct = QAction(QIcon(root + '/images/save.png'), "&Save", self, shortcut=QKeySequence.Save, statusTip="Save the document to disk", triggered=self.save) self.saveAsAct = QAction("Save &As...", self, shortcut=QKeySequence.SaveAs, statusTip="Save the document under a new name", triggered=self.saveAs) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", statusTip="Exit the application", triggered=self.close) self.cutAct = QAction(QIcon(root + '/images/cut.png'), "Cu&t", self, shortcut=QKeySequence.Cut, statusTip="Cut the current selection's contents to the clipboard", triggered=self.textEdit.cut) self.copyAct = QAction(QIcon(root + '/images/copy.png'), "&Copy", self, shortcut=QKeySequence.Copy, statusTip="Copy the current selection's contents to the clipboard", triggered=self.textEdit.copy) self.pasteAct = QAction(QIcon(root + '/images/paste.png'), "&Paste", self, shortcut=QKeySequence.Paste, statusTip="Paste the clipboard's contents into the current selection", triggered=self.textEdit.paste) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=QApplication.instance().aboutQt) self.cutAct.setEnabled(False) self.copyAct.setEnabled(False) self.textEdit.copyAvailable.connect(self.cutAct.setEnabled) self.textEdit.copyAvailable.connect(self.copyAct.setEnabled) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.newAct) self.fileMenu.addAction(self.openAct) self.fileMenu.addAction(self.saveAct) self.fileMenu.addAction(self.saveAsAct) self.fileMenu.addSeparator(); self.fileMenu.addAction(self.exitAct) self.editMenu = self.menuBar().addMenu("&Edit") self.editMenu.addAction(self.cutAct) self.editMenu.addAction(self.copyAct) self.editMenu.addAction(self.pasteAct) self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def createToolBars(self): self.fileToolBar = self.addToolBar("File") self.fileToolBar.addAction(self.newAct) self.fileToolBar.addAction(self.openAct) self.fileToolBar.addAction(self.saveAct) self.editToolBar = self.addToolBar("Edit") self.editToolBar.addAction(self.cutAct) self.editToolBar.addAction(self.copyAct) self.editToolBar.addAction(self.pasteAct) def createStatusBar(self): self.statusBar().showMessage("Ready") def readSettings(self): settings = QSettings("Trolltech", "Application Example") pos = settings.value("pos", QPoint(200, 200)) size = settings.value("size", QSize(400, 400)) self.resize(size) self.move(pos) def writeSettings(self): settings = QSettings("Trolltech", "Application Example") settings.setValue("pos", self.pos()) settings.setValue("size", self.size()) def maybeSave(self): if self.textEdit.document().isModified(): ret = QMessageBox.warning(self, "Application", "The document has been modified.\nDo you want to save " "your changes?", QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel) if ret == QMessageBox.Save: return self.save() if ret == QMessageBox.Cancel: return False return True def loadFile(self, fileName): file = QFile(fileName) if not file.open(QFile.ReadOnly | QFile.Text): QMessageBox.warning(self, "Application", "Cannot read file %s:\n%s." % (fileName, file.errorString())) return inf = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) self.textEdit.setPlainText(inf.readAll()) QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.statusBar().showMessage("File loaded", 2000) def saveFile(self, fileName): file = QFile(fileName) if not file.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(self, "Application", "Cannot write file %s:\n%s." % (fileName, file.errorString())) return False outf = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) outf << self.textEdit.toPlainText() QApplication.restoreOverrideCursor() self.setCurrentFile(fileName); self.statusBar().showMessage("File saved", 2000) return True def setCurrentFile(self, fileName): self.curFile = fileName self.textEdit.document().setModified(False) self.setWindowModified(False) if self.curFile: shownName = self.strippedName(self.curFile) else: shownName = 'untitled.txt' self.setWindowTitle("%s[*] - Application" % shownName) def strippedName(self, fullFileName): return QFileInfo(fullFileName).fileName() if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/mainwindows/application/images/0000755000076500000240000000000013245231431023424 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/mainwindows/application/images/copy.png0000644000076500000240000000247213245231431025111 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<ÌIDATXõ—]L[eÆwo¼ÙåI q×&ãN¸pÑ…D½Pãå+.&J'†ª‹™àТl†9ܘ€@l¦CÊ +ƒ(ÌÚÑ–ÒÒJ{ú¥ÐïßÿÛÇÌ*‡“<9o!œç÷<ïG‡ÊFϽúé»LZ&aj`ÊÙéyÙš?]Pò¥Áé§WÃ@0„¢­Ç2Š'X"s¿ykÚKr{ç¬ÚØÈ˜@„™…ã‘1)Ka%”D8šBs‡Æ¾Äÿ“y$ñÈX’Ï„]ŒÂå "K£ôÃïM4uY°ëØ6Õž:ü̹ç_.?VžEEU *™Þ¯­Ã±‰Ç¬¶%ü¹è‡kXöÆÒ¯œ¾pŸAÙ€]‡™ŠŠŠÌ’Z[[ݤ¯U­þ¯Tߦ195…Ù¹9è&&PPP€!Ío|ÞI¦ù̘\ÀáOAô…ðC¯ÎÍjöPCfØåŠÇãðz½H§Ó˜œœDee5fg¼ftÓ@2-xðÝQ¬ápF£‘S©~êíEã'Ÿa†A8–ÜPwuãLC#Î5Çí‘q\¼>,/ÀÆÆôzýc@}}ýP2ˆÐFf› ‚Áˆ©¬—ºdn€¦Ø:Ø~E"”+*0®@çmWÚª4¾|Sæ5@f:ÃÃÃèeõ÷÷÷C«Õ¢ªºcwõ*wí¶Ú»e y·ÛíBgg'zzz8PIiniõ×o°ùg¸Ð%3ÀÖÖß @¢(Âï÷cmm §•Ðü®ç©É|Á ˜=@›ÜÛA677ùv¤VÕèûUà©Gç;€Ì%€$3O$(+¯â¸‹˜ 6ZÕ0ÿ˜'“<=MIÉ©J ·³‰=Åø0±|qõ¤êɘ‹ÅP¦¨‚zHÀ˜¸k朙ûçWdÒSjˆF£Ü< ¡¸´×Üf‡ä dÄ(;dH=œs™Ó¹@ ÅeU¸Ø- :c®}ià£v™þ]=¥&­®®rˆ·J*p¹WÀ=¸~žîÌg.í@ªD‹Ž’ÓqLß+++X__ç'Yßt PO¿Ìe¸24ì§ÉXÚëdNi)9D@õÓÏÞ|[–ëO~u¸qøq,ž~½Nm¦7ª¬žd,m72%Ñ#òäÌ'hï ¼f[O5âÉxG•JŤ.Í7RR:÷)µÃáà"ãÅÅEõâñ—\ô¹“é®---né`¡ÔÒ— ———áóù`³Ùø}ii‰C ͲТ’R“éNßxT;5`µZyõÔ ýÎ`0$òòòî³gÙ@SS“[šgJO"ªšÆ‹™7@ŸGGG#mmmÞüü|ûÛA¦²½šÿ'@ss3ŸJGT?U???ÏëÖh4‘ºº:çô]L0ÍÆxG¥Rév:¼bJJo>”´¾¾Þ™““#™gSuVn‹Å‚Hmm­377WVÓÝøFLÂA™n×ßC9V…pÈIEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/application/images/cut.png0000644000076500000240000000245313245231431024731 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<½IDATXÃíWkL“W>#qÉ2é—¨Te8ö‡2“f,[pÄ0ÿ`¢.:Nº1‰[³€Ù „X‹…²‚•^äf Ž1øÃFË-ܨ·ji‘ò¯ ܸ aÙ²“<í—ó}ýÞç¼ïó^J€ü“ ÿ t (DÙq+F€®ÝdÝÆf"Lø•Ä‹GÈ¡Ó÷ÈŽ—;82a+A …œ¾0H.Ý€@2«yMô¾ûrhd‘^£Qôî…GõнƒËM ›ö@t/½2= ‰?H¥,Œ1yÁ»ˆKÆ×Æ& ¹ýBþÅ+6FŒ\N“§§§ ÌÓ9¹˜c6 Òä£+A Œ)ž*ß7GëÜ{µÌ‰ž@D–Tƒ+, 6FHõd*{.Tø7¿À4*TßbˆRÕ,XtzEUõÈ mtÂÔs÷!¾sQ•®ÐÏ唃‡´žÌ.Ôݯ™Ë°¯¯¯>¿Ò`µÛí€øyä>Ä^«´¹ˆ/†€'ÓÀgùŽõ`×^3ºvÚsîhØÇÇGŸ««° Á‡²ö.ç–7÷wsaؽè^€/fš †ß©6B÷ðØŸÔϥ犘-~þm—Tk__¸ÐÑsbrVNć—ÔŒ0é·8@¤Ö1ž…›~m©%[—Ù æ. ó$ß6Ž{½ÑÍBÈ o©<ѽV«w„ó’\»R©„úúz0™L uß5ÁQ±dÉQD>¶vÌ´@O“_~ÓÖßß2™ D"¨T*J¥ Ñh K[9¾é•à¸S¯y,ó—Ž"žÇ†æS)ö‚‚æâ   àñx`±X@[^ûÏ& -¦SÎg”Ï Lƒâ[{æÂ`š² ˆÅbÈÌÌ„¢¢"P«ÕÐÙÙÉ`ìþɹÉÛ§u.·ÏK€®·Ø)pÀj—¬xˆÊ‚â)‰>—+![–cãG„&Ø’rdŽo¿£Ñ-­-ðËÀ 8ñ¾³bÁ\i„……„FÜ&ç2¬,Ï3µì;ãºÓ3¯‚åþz‰žÞüb÷<’{f«O[Ê5íXCC=444€¥·2ÅÃóéÀe<’å(ž6]åœ*2x}ôƒ.Zl1 %êq÷/Ë'ï‡_þÓäD LhôÉ>u• ´··Ãׯ–1® fñ6m8hí÷*>]åXªñGZõ¶Y ³CÉ‘8 9ù©–!ú\ ϳÿÿ7üOøç‡¹DÃÏIEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/application/images/new.png0000644000076500000240000000152413245231431024725 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<æIDATXÃÕ—ÍNa†ë5”•{qáÒÄà¸â\¸ô\±0ê–&bX¸°‘X Ñ¿‰¤±R¤HE”þÐCÿ¦¦e€ãy{ú…QJ‚É!†IÞœ3§óÍûœóM›N„ˆ"ÿS‘sÀÇÕnÿ¥û¬Ç==d ©ð12<<¼j4::ºV<¯&“ÉV:v‰Dk`` Íknh¤8Òááq™ºï·É²,Úßß'†ñxÍëŠ@?ó°Ç¥Lf¹ Åb±:¯{pˆSww²lÛ¡ùùÏd×uéùÄDB&{Áɪ7JÎÍSøp]‹T‚@gOÎí¦Ggféõ›·Ÿœ¤©©iz÷þE£Ñe^AÀïí¶%†…šã”]ÍÑäô+z2þ”žÅ^ÐLb‹UÚõ <ÿjÍ67«”/nS‰c·…×~QðyÌÍ]µÇ{ÛîŸ;¾äˆ]¸½îâ”Ê3àuäÆuWbØ9êæ3DÔ§àô:­9"˜˜hr€˜kPS*-¹1âNSŒ òmû(¶|E›;ÛjüiŽûÅS(ðC¸fI÷kùR‡×¾TÈUºN­K¯…Þ·Â’=O¦³Þ£±qëÚÐõ˜³n©l4¤kÿàZSÔ Yoäî½â¥ÁËK|mŒu‡5¨ú·ÝeÙ<þžÏ7½Éºx&oFhòÿ™”žé?¿BÓôü½œž¥~Ql%¡’• wIEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/application/images/open.png0000644000076500000240000000403113245231431025071 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<«IDATXíW[P“göÊÎìÌöb/¼ÙéÎìn½ÚÙ›µÎº;{°­Ìz±ÎÎ:³vTpuÛâÖ¶T»¥ mÁ‚QB€€€!’@Hs$!gr€B œ GµTxöû~0X‹}gžù/’üÏû>Ïû¾ß—]vý˜ ñ ‚Áu‚ÏýþH¼› áW¯ïµ*ŒÖeÛ`[ 'ñ3ú"üÜ>vH~Š ¹¶Y2Ï­B9þDöQØÇæè‡†={öXSR®,Ê::NâåIÃÄ1·>Iù,`›]YSMM¶4ëû 1y`Å»ï¾?Å«¾ƒñ‰)LOÏ®’ï×¼tŸ¾ã²CO´3@‹{Í=.4ëì¨Wö ‡S…2^5C¼°ôÁ`\&¿K|áH$8AýÝês'ñ¹'H‡—Á×» "U7Ü7¢¸Nˆ,V>ÌVÛ:q,k,üÎç'‘6“•?F}¥þÄoôY1¶~ï Z{œà?0¡L(CF²ù&ÒùÅeÌ-,!4¿ˆ½{÷ZÉ;~ºm$~CF=5iu³€Ò?ËÄâšP¡Z´lñY ¶ ¦]/²sq·žÿ 1% ÍcbjƒC'äݼ-Ó°;’3&ÔSµÓûXOˆÅ!ˆ,CPºFÐí Bå›B›sü©ÏZî*tȼÉE §l“Ï›ˆ'§Ào¢ÖÖ%ÂQÛ(‡Æ¯‚/b”M‰$"êR-šB«èy¡ÅÏStö £Óá‡Ô<€½ ]Õ ‘• /yñƪ©Ô³s LÅ”ØÝï…Éb·¼¥å•KóË«#7ÙæÙ„—Ë<Ðhò£Ýî_'–;† ³x×}æ¤ø<3*6ªÜS3!ŒŽ3Ó&ä7 ñÁÅQs¯¾e`ü ##òΡ¾]¹¸QƒttM§ g€©¸ÝêƒØèB“ÊÌø|åË,ˆÚ$Q‰§g熆G`w8I‚:$|ø!®³ á™\€o ÐÞá,«Ä}ïÝaëÿŸÀ¹ö!HÌýO}îÔ"U„ªšºM>GäŽø<<„ÓݽÁˆÂâbœ~/=ô/ƒ„¼Åÿ-î:C(Q‘÷öñNÜ¿}„3iã ô3«àÉTh58ÑØÝ žX‰¬\ö3>Gªžœžeäî÷¢×lAC'bã éÖÀEÏR$¸†²žn´ÛPÑD…΋J~ m¾›['Ñ ™øe"î)ô(Èx5 ­>ªÜc“ð Ãf]ŽÄK—ÃÊÃÔcÀNzI1Nú‰”[;„|…%jJÕèò0£("øù3 t.¡¨¾¥| ²J*ðÏãqQåöFÑçò@«7 ýj’¿HƒÍ7'©Ú@Là{ˆREÝý qA—Å݈œAüùÍ·]„ël´CÐ(÷N#§ü²K«ñQêWHþoêúXQ¹G‚ãð ø`4™QÉ«ÂûgÏAþ@?én²¹oiÒ›*/råäuö¡ð¾•ùœÊ)ÂS¸Ý)Ü+vQÈÅ•ky8Ÿ€›·n3c‘Ûjs@"mÇ…„Pt» ó+€Ÿ4X÷$ |„JÓ8úa†œVýU³¬;¸:Ù!z/༺]&¾Áƒ”oØ8ŸœŠ=c¯™én*·F׃¤ËÉHÿ:‹ŒÕÇÑØ3ø81 †^›øÝûQOÔñ™îšª­“`+] 9õ¼ð¾g½êÌ=JUm”ÔñCáeS@ðÊ÷%`+njÇ©„DÄ9ŠÜ|6ZZÅ8ƒ/95Èj˜æ¢ÕÒ'õšzL¡Id·™ÛnF¹Ú¥v9,9=ùNìÙrÔG ;«Fˆcÿ9ßîû=ùœ¿€“ñp£­ÄOJénºX¨ï,ú”˜P(·@é<ùWì)*w-Ágû¶¹äD¾Ì²Züãä<ô7°ró°ïÀP Ñ!‰'e*¦K…>¿!ÕFä.[!° ®åÜâÒä‡o<¯<ç–5œiEåøû±X?‡7öïÇ:’«¤ !ípê5U!‹4[É7*4nÔI:ÃrsŽm•û‡$àJespäø)>|˜Œc.2*\"ÕÓ]~MÜ 6étv§wŒäˆ¶ùž„·•û"½Iý€ mô2JxLœKIõ¦.|Âme6Yñƒ\—šÁQ{ ó×Î%&6ÈýÇÈÕ‚ÜÎ^NEX…xö]\©UªûÀ–ÛP­uã®TA/Ê r¿ºÓj£·¢Qø¯CO¹-ˆËæášHª/š5æÇzó-Wx¬¨Ü¯½¬ÜÑâÝ\uÞ˯E¹v2g`õ§—©Ü÷Ò©Ü;øóÂñ‚ÊîP 9”¸ ÂÈ£‡Ã/"÷ÿÚmŠÝa™Õ¶Øk»^2¾/‰ÿf¹_ü€=ÏIEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/application/images/paste.png0000644000076500000240000000315513245231431025252 0ustar philstaff00000000000000‰PNG  IHDR szzô4IDATx^­—[lTÇÆsÎÙ‹½öú ¾²ic$BJ!"¡-•b¥/îKh+•¦U¥Æ`UªÚ´ªúV UÊ”'Ú„)­Ä‹¥RƒyÅ9iÓ„š›cjì²;»öz½»Þ³g¦Ãh…årlˆÉ'}úŸ‡ý~óŸ™sJ)‚$„xxžÇkH)õwÖ(' ¸C»h—R¾ÆcdYÖö»@·9ÿ&ü·íõâ`]DDnΉŠ+W®P]S@ Pe(A)fÓi^©/¼´Nl;ñ¹Gƒ|[CL;…D•2â¶Ä¶!!p>SlŒ;€D*ðœàË@P4`ÄHiŸ$Nœ8!Ò‡––g emå(¥´AXW%âØDBÃs\¼=A÷XŽ\$¾©½}÷ï-ËZܱcGYUU•ÓØØ~à†††Ð¥K—Ü®®®ðÖªDU,ÂsÕ1òžO¡(‘Ja Aرˆ†lær¢Ž?Ÿÿ+ M"Àf–„ïûxžGuuµžPKôêÕ«‡„(¥ÞZÀ²A¶-Ú¶8¤XÂŒL¹ì{õ;Ô76|/Á„g2ÊËËÍf>vìØ&½.A,ÐÙÙ©:¤l!Y¶-ÇÆBP´ÍDzˆ8–®`YxÀÜÜ555 räÈ‘ÍÀˆ¢Çb¹°mt0fË#6±¨£Ç,2‹“™c©yîÌ.èßErù<«È,A6›5§féÿm8°èX ´tŽ áÀSб¤ËŒƒÓ²—¦}¯³µã¬Ûû: /´sûÎ$ýýý$“I”Ræúøñã躬3çÎãèÑ£>|˜ÞÞ^‰„,¡ÜíÿÎæøç”OkÇÏøæ/ß&öõ7™|¦ƒkþ.®ñ-dk­{N^VsúogÑwMîÜâ¯vrýúu gkÖ?‹™ëx<Žã8%8À#–%˜ÊA:ÞÊþß½MÕ®×(„bÛBY‚lArf‘Oîf¸êrúadÕ^®Üg2ׯ…î›í‡¡ÍÍÍ´µµ755¡¡ ƒFÜqßÿéo¨lØHâì;L^É”±µy›[¶óIy%c —ÏfòÜÎ2¡íˆ L'çØ·+Êú%3{=kêêêÌu*•2J+ ¹Zpác(,ÊæÆÙR”’{Ã}$eÛÚLMÛË|<œfÒ_ÀÍx,Ìk/x µt:B¡ -ÝêŽ*ø>`ÁƸ P#‹S·¥–’xv}é¬ÇhÿŸ˜®¼LËöƒ¸ a¼‚¤X”xÚ!ÇB-ª€ãi –ÕÖÇC„Ê#ü¿jc!ž© sá߃ìÙùÊ£¹2G(akK!¥%0*¤\@X¥*Ìõ#úpl†ñYïýúÜÊÔàD\¢Ï“=Ó¥RòPjYVL vùÕ_†½·€=“gÓº2òy_»hêίÔpùÝà%žx L¸<¢Ö/Uò‡>ÏõO3D·±óÅ—Y\N`ŽÛS(À%mÔR}±µ–Ý[ât¿—¥j÷WùÑo µ˜µ7ÕØÒËSpSxó3³i %ýÕ‚Öðð)çãç3æu¨ÖË÷‰Á3}ú×rŒ²7Dzþ­”Ìo÷DTØ_p’ ý×=?ý~B¦Ïßöïîv;ü’¨ãsÊu]pWí@2« ~*Ó½·üÔÍi9ô—th¿¢Ó¶í¯}ž%XXXðÒ'Ožœºƒ>IÊ­ã³*×;â§nLËÑRèYt‹= ÀÐÐÛÓÓ“ÒNÏÎΞ.½ßèîê)Œ„…¯055UÐ/"©S§N%ÇÇÇ/g~쮸 KßvÚO&…@@aZüÞà`º»»;¥ßŠÌ$Ð^ísÍaíšw3n`pðýt___úÌ™3¦Å¥Ðx‰µžc!DxØOis´ø±ú½ú*_òØIEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/application/images/save.png0000644000076500000240000000224313245231431025071 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<5IDATXÃå—ÍTEÅ·êÖ{¯ÛnÇù@‰FM4™DH˜ÄŒþL\ñ.M\kXÃŽÄ΂htA\ âÄÆ=`PQ`¢ ƒÓý^÷”‹ªîù`æ „QVR©Î{·ëž:÷Ô©zê½ç~6å>·>€]»v½ìýòN5ëػ」;vœ<:ÏÌ—7XœïÜS¦Ú òÜk¼¸g€‹|øî€Ûpüìß?0x.ý¸Àþ·ÎoËryš #–ÓŸdüÕ}›k@E°@xp,#˲m00–aP|#%"+ؑՕsç΃*¸Ò² Ò,ŒI IÞw:ç·¡Õ‚v+Žm(r²ú8Ö ã¯¼Ikñú欬°Fؽ{çk놮€Z¨VêmQ¯µ‚÷ ¦„g5‚¨ •,Ã# Àð/Þ#&|ˆ#Ä!Яª‹öØ'aa½%% ð4M£:ó˜‰lÚc V˜_)FüaÍra-Ñ€: TIO4/à…Ä!‰Ãg ’i؉â‡X‹ïv‘¼€¼íßj#íòŸwPEÕ x:ëTx›œ3x$¼þòówhè6h¤¾ñëÆüß±R^‚DM_„ ¥8ç¶ÅˆžK¹v³Rª¸PïZÅ0}±Ë@Űô&­WùU.ááÆÒ2õÌp}É„-éJœÀsåf—+7»¬QW?תd~Å'¢)¬Ü µw¦l¨Á© È5¯›5Y1žþ{éïñ‚ï›X0+WVU!ÑüçSßòë™,-Þ¸§úWj<õìNžya¨3[1|‡÷÷¿Á·nÝ¢( Dk-ÖZTUÅ9‡ªb­Å˜ðßååeò<ï÷#Íù¸ò-pVPÜ1:¶rO8~œééiŒ1x˜`rròŽYØ1:Ö߆®Ô Up6¬¢V¯÷k933ÃÐÐÖZ¼÷4›Í»P«×pш´Ôˆœ '\ *¨V«dYÖ§¸7Þis©AK­8ǽ#´×Œ1ˆDß:¸«›¯5¨ óö.=Žƒ)mãÕÛ©÷åVl­ô‘Ž ÃòïÛà¡‘aÔµ+—Yœ¿¾6øÀ`­ ÛÃÀP­ÂìÅKœýîΟœž¦6`$^J í‘'©= o8ÈfÇ':ñ*ç52(ºpùêUÎ4ŽÑüú‹¹ÙNoà³>à§Ó'W™éÚ£†Uæ»<_o|wîÙ_‡Æ_˜šþôãõsl}ò5â·ÚÿÝ×ñ?MðK¹èF‰¯IEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/dockwidgets/0000755000076500000240000000000013245231431022163 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/mainwindows/dockwidgets/dockwidgets.py0000755000076500000240000002727013245231431025057 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDate, QFile, Qt, QTextStream from PyQt5.QtGui import (QFont, QIcon, QKeySequence, QTextCharFormat, QTextCursor, QTextTableFormat) from PyQt5.QtPrintSupport import QPrintDialog, QPrinter from PyQt5.QtWidgets import (QAction, QApplication, QDialog, QDockWidget, QFileDialog, QListWidget, QMainWindow, QMessageBox, QTextEdit) import dockwidgets_rc class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.textEdit = QTextEdit() self.setCentralWidget(self.textEdit) self.createActions() self.createMenus() self.createToolBars() self.createStatusBar() self.createDockWindows() self.setWindowTitle("Dock Widgets") self.newLetter() def newLetter(self): self.textEdit.clear() cursor = self.textEdit.textCursor() cursor.movePosition(QTextCursor.Start) topFrame = cursor.currentFrame() topFrameFormat = topFrame.frameFormat() topFrameFormat.setPadding(16) topFrame.setFrameFormat(topFrameFormat) textFormat = QTextCharFormat() boldFormat = QTextCharFormat() boldFormat.setFontWeight(QFont.Bold) italicFormat = QTextCharFormat() italicFormat.setFontItalic(True) tableFormat = QTextTableFormat() tableFormat.setBorder(1) tableFormat.setCellPadding(16) tableFormat.setAlignment(Qt.AlignRight) cursor.insertTable(1, 1, tableFormat) cursor.insertText("The Firm", boldFormat) cursor.insertBlock() cursor.insertText("321 City Street", textFormat) cursor.insertBlock() cursor.insertText("Industry Park") cursor.insertBlock() cursor.insertText("Some Country") cursor.setPosition(topFrame.lastPosition()) cursor.insertText(QDate.currentDate().toString("d MMMM yyyy"), textFormat) cursor.insertBlock() cursor.insertBlock() cursor.insertText("Dear ", textFormat) cursor.insertText("NAME", italicFormat) cursor.insertText(",", textFormat) for i in range(3): cursor.insertBlock() cursor.insertText("Yours sincerely,", textFormat) for i in range(3): cursor.insertBlock() cursor.insertText("The Boss", textFormat) cursor.insertBlock() cursor.insertText("ADDRESS", italicFormat) def print_(self): document = self.textEdit.document() printer = QPrinter() dlg = QPrintDialog(printer, self) if dlg.exec_() != QDialog.Accepted: return document.print_(printer) self.statusBar().showMessage("Ready", 2000) def save(self): filename, _ = QFileDialog.getSaveFileName(self, "Choose a file name", '.', "HTML (*.html *.htm)") if not filename: return file = QFile(filename) if not file.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(self, "Dock Widgets", "Cannot write file %s:\n%s." % (filename, file.errorString())) return out = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) out << self.textEdit.toHtml() QApplication.restoreOverrideCursor() self.statusBar().showMessage("Saved '%s'" % filename, 2000) def undo(self): document = self.textEdit.document() document.undo() def insertCustomer(self, customer): if not customer: return customerList = customer.split(', ') document = self.textEdit.document() cursor = document.find('NAME') if not cursor.isNull(): cursor.beginEditBlock() cursor.insertText(customerList[0]) oldcursor = cursor cursor = document.find('ADDRESS') if not cursor.isNull(): for i in customerList[1:]: cursor.insertBlock() cursor.insertText(i) cursor.endEditBlock() else: oldcursor.endEditBlock() def addParagraph(self, paragraph): if not paragraph: return document = self.textEdit.document() cursor = document.find("Yours sincerely,") if cursor.isNull(): return cursor.beginEditBlock() cursor.movePosition(QTextCursor.PreviousBlock, QTextCursor.MoveAnchor, 2) cursor.insertBlock() cursor.insertText(paragraph) cursor.insertBlock() cursor.endEditBlock() def about(self): QMessageBox.about(self, "About Dock Widgets", "The Dock Widgets example demonstrates how to use " "Qt's dock widgets. You can enter your own text, click a " "customer to add a customer name and address, and click " "standard paragraphs to add them.") def createActions(self): self.newLetterAct = QAction(QIcon(':/images/new.png'), "&New Letter", self, shortcut=QKeySequence.New, statusTip="Create a new form letter", triggered=self.newLetter) self.saveAct = QAction(QIcon(':/images/save.png'), "&Save...", self, shortcut=QKeySequence.Save, statusTip="Save the current form letter", triggered=self.save) self.printAct = QAction(QIcon(':/images/print.png'), "&Print...", self, shortcut=QKeySequence.Print, statusTip="Print the current form letter", triggered=self.print_) self.undoAct = QAction(QIcon(':/images/undo.png'), "&Undo", self, shortcut=QKeySequence.Undo, statusTip="Undo the last editing action", triggered=self.undo) self.quitAct = QAction("&Quit", self, shortcut="Ctrl+Q", statusTip="Quit the application", triggered=self.close) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=QApplication.instance().aboutQt) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.newLetterAct) self.fileMenu.addAction(self.saveAct) self.fileMenu.addAction(self.printAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.quitAct) self.editMenu = self.menuBar().addMenu("&Edit") self.editMenu.addAction(self.undoAct) self.viewMenu = self.menuBar().addMenu("&View") self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def createToolBars(self): self.fileToolBar = self.addToolBar("File") self.fileToolBar.addAction(self.newLetterAct) self.fileToolBar.addAction(self.saveAct) self.fileToolBar.addAction(self.printAct) self.editToolBar = self.addToolBar("Edit") self.editToolBar.addAction(self.undoAct) def createStatusBar(self): self.statusBar().showMessage("Ready") def createDockWindows(self): dock = QDockWidget("Customers", self) dock.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea) self.customerList = QListWidget(dock) self.customerList.addItems(( "John Doe, Harmony Enterprises, 12 Lakeside, Ambleton", "Jane Doe, Memorabilia, 23 Watersedge, Beaton", "Tammy Shea, Tiblanka, 38 Sea Views, Carlton", "Tim Sheen, Caraba Gifts, 48 Ocean Way, Deal", "Sol Harvey, Chicos Coffee, 53 New Springs, Eccleston", "Sally Hobart, Tiroli Tea, 67 Long River, Fedula")) dock.setWidget(self.customerList) self.addDockWidget(Qt.RightDockWidgetArea, dock) self.viewMenu.addAction(dock.toggleViewAction()) dock = QDockWidget("Paragraphs", self) self.paragraphsList = QListWidget(dock) self.paragraphsList.addItems(( "Thank you for your payment which we have received today.", "Your order has been dispatched and should be with you within " "28 days.", "We have dispatched those items that were in stock. The rest of " "your order will be dispatched once all the remaining items " "have arrived at our warehouse. No additional shipping " "charges will be made.", "You made a small overpayment (less than $5) which we will keep " "on account for you, or return at your request.", "You made a small underpayment (less than $1), but we have sent " "your order anyway. We'll add this underpayment to your next " "bill.", "Unfortunately you did not send enough money. Please remit an " "additional $. Your order will be dispatched as soon as the " "complete amount has been received.", "You made an overpayment (more than $5). Do you wish to buy more " "items, or should we return the excess to you?")) dock.setWidget(self.paragraphsList) self.addDockWidget(Qt.RightDockWidgetArea, dock) self.viewMenu.addAction(dock.toggleViewAction()) self.customerList.currentTextChanged.connect(self.insertCustomer) self.paragraphsList.currentTextChanged.connect(self.addParagraph) if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/mainwindows/dockwidgets/dockwidgets.qrc0000644000076500000240000000030613245231431025200 0ustar philstaff00000000000000 images/new.png images/print.png images/save.png images/undo.png PyQt5_gpl-5.10.1/examples/mainwindows/dockwidgets/dockwidgets_rc.py0000644000076500000240000006613413245231431025542 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 12 17:19:16 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x06\xc4\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd9\x04\xdc\xb2\xda\x02\ \x00\x00\x06\x7b\x49\x44\x41\x54\x58\xc3\xad\x57\x69\x4c\x54\x57\ \x14\x76\x21\x62\x95\x04\x97\xa8\x25\x18\x52\x1b\x0d\x11\x45\x04\ \xaa\xa4\x49\xb5\x56\x4d\x6c\x69\xb0\x68\xa3\xb6\xc5\xb2\x46\xfd\ \xa3\x2c\x61\x51\x48\x24\x08\x64\xc2\x12\xd0\x22\x42\x11\x59\x44\ \x40\x40\xf6\x91\x7d\x53\x36\x09\xb2\xa9\x08\x0e\x24\x0c\x62\x01\ \x83\x02\x82\x0b\x08\xa9\x5f\xcf\xb9\x99\x31\xa3\x80\x9d\xb4\xf3\ \x92\x2f\xf3\xde\xbc\x7b\xce\xf7\xdd\x73\xce\x3d\xf7\xbe\x79\xf3\ \x54\x2e\x3b\xbb\xe8\x2f\x1c\x1d\x23\x1d\x1d\x1d\x23\x02\x1d\x1c\ \x2e\x48\xd2\xd3\xab\x25\x97\x2e\x15\x56\x47\x46\xde\xac\x4d\x4c\ \xac\xa8\xad\xaa\x6a\xbf\x2f\x95\x36\x41\x89\x2b\x57\x4a\xdb\x8d\ \x8d\xf7\x7c\x49\xa6\xf3\xe7\x69\xe8\x5a\x68\x6f\xff\x47\xa1\xfc\ \xf1\x73\x4c\xff\x0d\xb5\x10\x10\x98\x3c\x48\x76\xc6\x1a\x13\xc1\ \x33\xf2\xf4\x4a\x7a\x3d\x36\x09\xa8\x03\xf9\xc0\x38\x2c\x2c\x7e\ \xce\x21\xd3\xb5\x9a\x8a\xc2\xfc\xc3\x87\xfd\xa3\x8a\xab\x64\x18\ \x7a\x0d\xb5\xe0\xe3\x1b\x3f\x4a\x76\x3f\x11\x3e\xd3\x88\x82\xed\ \xdb\x0f\xac\x3d\xeb\x97\x89\xde\x17\x50\x0b\xf9\xe5\x32\x18\x18\ \x18\xc7\x91\xe9\xe7\x1a\x8b\x82\xad\x6d\x58\x79\x63\xf7\x38\x64\ \xcf\xf1\xaf\xe0\x71\x16\x16\x07\x5b\xc8\xee\x2b\x82\x96\x46\x14\ \xd8\xd8\x04\xfb\xa4\x15\xc9\xd0\x3a\x08\xb5\x60\xe7\x18\xf4\x9c\ \xcc\x7e\x21\x2c\xd1\x88\x00\x4b\x4b\xaf\x8d\xa1\x97\xaa\xd0\xf0\ \x17\xd4\x42\x08\x8d\x25\x33\x7f\xc2\x0a\x8d\x2d\x49\x17\xf7\xa4\ \xfe\x4a\x39\xa0\x0e\x22\x92\x9a\xa0\xa7\x67\x28\xd5\xe4\x6a\x98\ \x47\xcd\xa8\x28\xbf\xfd\x2d\x8a\xba\x31\x27\x0a\xba\x80\xdc\x4e\ \x20\xb6\x74\x00\x86\x86\x3b\xea\xc9\xcc\x54\x63\x75\x60\x67\x17\ \x1e\xc4\x8e\xb3\x3a\x80\x8c\x36\x20\xad\x09\x48\x69\x00\x92\xea\ \x80\x84\x6a\x20\xa6\x1c\xc8\x6c\x04\x4a\x1e\x00\xf5\xed\xe3\x68\ \x6a\xea\x80\xaf\xaf\xef\x2b\x32\x35\xf8\xdf\xe4\x12\x89\x44\x2e\ \x95\x96\x20\xab\x70\x00\xa9\x52\x08\x94\x10\x31\x71\x50\xf3\x01\ \x7a\x9e\x8c\x61\x68\x68\x08\xbd\xbd\xbd\x78\xf8\xf0\x21\x1e\x3c\ \x78\x20\x7e\x13\x13\x13\xb1\x7b\xf7\xee\xda\x43\x87\x0e\x05\x58\ \x5a\x5a\x6e\xe4\x54\xfe\x27\x01\xa1\xa1\xa1\x7d\x13\x13\x13\x98\ \x9c\x9c\xc4\xd4\xd4\x14\xba\xba\xba\x70\xe7\xce\x1d\xdc\xbe\x7d\ \x1b\xf9\xf9\xf9\x28\x29\x29\x41\x55\x55\x15\xea\xeb\xeb\xd1\xdc\ \xdc\x2c\x04\x30\x92\x92\x92\x70\xe3\xc6\x0d\xe4\xe5\xe5\x89\xfb\ \x13\x27\x4e\xdc\xdd\xb1\x63\x87\x99\xda\x42\xec\xec\xec\x96\xd9\ \xda\xda\x7e\x17\x12\x12\xd2\xce\x33\x54\xa2\xb0\xb0\x50\x38\x56\ \x25\xcf\xca\xca\x42\x42\x42\x02\xc2\xc3\xc3\x11\x17\x17\x87\xab\ \x57\xaf\x0a\x81\x7d\x7d\x7d\xe8\xe9\xe9\x11\x36\x75\x75\x75\x38\ \x7d\xfa\xf4\x84\xb9\xb9\xf9\x6f\xe4\x5e\xfb\x93\xe4\x47\x8f\x1e\ \xb5\xa7\xc1\x2f\xa2\xa2\xa2\x10\x1d\x1d\x8d\x8c\x8c\x0c\xc4\xc6\ \xc6\x22\x37\x37\x17\x39\x39\x39\x88\x8c\x8c\x04\x09\x03\xbf\xbf\ \x76\xed\x1a\x2a\x2a\x2a\x44\xd8\x47\x46\x46\x30\x3c\x3c\x8c\x67\ \xcf\x9e\x09\xb1\x4f\x9f\x3e\xc5\xe0\xe0\x20\x06\x06\x06\x50\x50\ \x50\x80\x86\x86\x06\x78\x78\x78\x4c\x6e\xda\xb4\xc9\x69\xce\x76\ \x6d\x63\x63\xb3\x2b\x2c\x2c\x4c\x84\xba\xa3\xa3\x03\xf7\xee\xdd\ \x13\xbf\x72\xb9\x5c\x08\xb8\x7c\xf9\xb2\xf8\xef\xd5\xab\x57\x18\ \x1f\x1f\xc7\xd8\xd8\x18\x46\x47\x47\x3f\x49\xde\xdd\xdd\x8d\xca\ \xca\x4a\x11\xb9\xb6\xb6\x36\x1c\x38\x70\x60\x88\xa8\xbe\x99\x75\ \x95\x1c\x39\x72\x24\x4f\x26\x93\x89\xd0\xa9\x8a\x60\x43\x26\xe2\ \xfc\x96\x95\x95\x7d\x92\x9c\xc5\x36\x36\x36\x8a\xd0\x73\x0d\x30\ \x79\x6b\x6b\xab\x28\x54\xf6\x1b\x14\x14\x04\x13\x13\x93\xbc\x59\ \x7b\x05\x55\x6d\x0d\xab\x56\xe6\x4f\x55\x04\x3b\x61\x42\xbe\xe7\ \x9c\x2a\xc9\x79\xb6\xf7\xef\xdf\x17\xa9\xe0\xda\x60\x81\x2d\x2d\ \x2d\x82\xf0\xc9\x93\x27\x78\xfc\xf8\x31\x1e\x3d\x7a\x24\x8a\xb4\ \xa6\xa6\x06\xc1\xc1\xc1\xa0\x5a\xe8\x20\xba\xef\x67\xa4\x82\xc2\ \x53\xdb\xd9\xd9\x89\xb9\x44\xb4\xb7\xb7\x8b\x99\x73\xf1\x71\x11\ \x4a\xa5\x52\x14\x17\x17\x8b\x77\x4c\xa6\x0c\x3b\x93\xb2\x60\x26\ \xe4\x48\x30\x6e\xde\xbc\x29\x0a\xd4\xdd\xdd\x1d\x5b\xb7\x6e\x95\ \x11\xdd\xef\x04\x9d\x0f\x04\xec\xdf\xbf\xbf\x96\x0a\x50\x38\x9d\ \x4b\x04\x3f\xf3\xcc\xf9\x9d\x6a\xce\x95\x4b\x94\x0b\x8e\x57\x06\ \xd7\x4c\x76\x76\xb6\x28\x64\x3f\x3f\x3f\x38\x39\x39\xe1\xd8\xb1\ \x63\xf0\xf6\xf6\xe6\x14\xb0\x00\xfb\x19\x02\xa8\x69\x14\x14\x15\ \x15\x21\x26\x26\x06\xce\xce\xce\x48\x49\x49\x11\x8e\x55\x45\x70\ \x1d\x30\x31\xcf\x92\x43\xcd\x62\xd3\xd2\xd2\x70\xfd\xfa\x75\xb1\ \x62\x92\x93\x93\x71\xfe\xfc\x79\xae\x78\xb8\xba\xba\x82\x7a\x09\ \x32\x33\x33\xe1\x1b\xef\x0c\xef\xaa\xc3\x42\x84\xb1\xb1\xf1\xec\ \x02\xf6\xed\xdb\x17\x74\xf7\xee\x5d\x51\x64\xfd\xfd\xfd\x48\x4f\ \x4f\x87\x97\x97\x97\x58\x7a\x4c\xa6\x14\xc1\xa1\x8f\x8f\x8f\x17\ \x4d\x86\x09\x79\x75\x04\x04\x04\x88\xf0\x32\x31\x17\x1a\x0b\xe2\ \x34\x95\x97\x97\x8b\x94\xf9\x25\xba\xc2\x2b\xe7\x57\xee\x07\xd8\ \xbc\x79\xf3\xec\x02\xf6\xee\xdd\x2b\x61\xa2\x37\x6f\xde\x08\x11\ \x1c\x6a\x9e\x29\x3b\x63\x21\x11\x11\x11\x22\xaf\x1c\x62\x9e\xe5\ \xb9\x73\xe7\x44\xa4\x98\x98\x9f\x79\x1c\x8b\xe3\x9c\xab\x92\xb3\ \x0d\xe7\x9f\x7b\x01\x17\xa1\x91\x91\xd1\xec\x02\xa8\x7f\x4b\x78\ \xc9\x4d\x4f\x4f\x7f\x20\x82\xf3\xcc\x35\xc1\x85\xe4\xe9\xe9\x89\ \xe3\xc7\x8f\xc3\xc7\xc7\x47\x84\x97\xa3\xa0\xcc\xb9\x2a\x39\xa7\ \x92\xdf\x5d\xb8\x70\x01\x54\x5b\x5c\xf9\xe2\xff\x33\x67\xce\xd0\ \x8e\x69\x38\xbb\x80\x9d\x3b\x77\x4a\x58\xe9\xbb\x77\xef\xe6\x14\ \xc1\xc5\xc7\x4d\x45\x99\xf3\x8f\xc9\xb9\x7e\x02\x03\x03\x85\x50\ \xda\x15\xdf\xb7\x68\x1e\xcf\x4d\xce\xcd\xcd\x0d\xa6\xa6\xa6\x7d\ \x44\xe7\x34\x43\xc0\x86\x0d\x1b\xf4\x69\x89\x64\x50\x3f\x78\xcb\ \x61\x9b\x4b\x04\x13\xa9\x92\x73\x24\x4e\x9d\x3a\x05\x6a\x64\xa0\ \x7d\x04\x2e\x2e\x2e\x1f\x90\x73\x0b\xe7\x0d\x8b\x6d\x79\x53\xa3\ \x31\xc3\x44\xe7\x46\xd0\x9d\x71\x10\xe5\x7d\x5c\x57\x57\xd7\x63\ \xcb\x96\x2d\x72\x76\xca\x45\xf7\xb1\x88\xd2\xd2\xd2\xf7\xe4\x1c\ \x0d\xda\xe9\x60\x6d\x6d\x3d\x2b\x39\x37\x2d\xb6\xe1\xab\xa9\xa9\ \x09\x27\x4f\x9e\x1c\x25\xff\x7c\x68\xf1\x98\xeb\xe8\x36\x5f\xa1\ \xcc\x7c\xcd\x9a\x35\xd1\x66\x66\x66\x23\xfe\xfe\xfe\xc2\x89\x52\ \x04\x77\x3d\x65\xd8\xb3\xb3\xcb\x20\x91\x64\x51\x04\x7c\xde\x93\ \xf3\xe6\xc5\xdd\xf1\xe5\xcb\x97\xc2\x26\x35\x35\x15\x94\xde\xc1\ \xa5\x4b\x97\xd6\x92\xdf\x54\xc2\x59\xc5\x7e\xb0\xe8\x93\xe7\x41\ \xc2\x6a\xc2\x9e\x75\xeb\xd6\x95\xec\xda\xb5\x6b\x8a\x77\x40\x76\ \x78\xeb\xd6\x2d\xb1\x13\xf2\x0a\xb0\xb2\xb2\xa6\xa2\xf4\xc3\xc5\ \x8b\xd5\xb4\x4a\x8a\xa9\x5b\x76\x89\xd9\x72\xb8\x49\xcc\x34\x45\ \xb2\x6f\xf1\xe2\xc5\x95\xe4\xe7\x2a\xc1\x95\xf0\xb5\xc2\xef\x22\ \x75\xcf\x25\x3c\xd0\x40\x5b\x5b\xdb\x71\xfd\xfa\xf5\x6d\x56\x56\ \x56\xa0\x2d\x1b\xdb\xb6\x6d\x03\x3d\x0f\xae\x5a\xb5\xaa\x59\x47\ \x47\xa7\xd2\xc4\xc4\x7c\x88\x85\xa4\xa6\xe6\xc2\xc1\xc1\x61\x42\ \x4f\x4f\x4f\xa6\xa5\xa5\x55\x40\xb6\x7f\x12\x4e\x28\xce\x89\x2b\ \xfe\xcf\x59\x91\x2b\xd6\x68\xf9\xf2\xe5\x81\xfa\xfa\xfa\x8d\x0b\ \x16\x2c\x28\xa2\xe7\x44\x82\x3b\xe1\x07\x8e\xd4\xca\x95\x2b\xe3\ \x56\xaf\x5e\xdd\x40\xf7\x59\x84\x70\xc5\x37\x82\xa1\x22\xa5\x0b\ \x35\xf2\xb5\xa4\x98\x05\x87\xf1\x20\x0b\x22\x2c\x53\x9c\x72\xb4\ \x14\x9f\x65\xdf\x12\x7e\x54\x1c\x4a\x97\xa8\xf3\xc5\xfc\x0f\xd1\ \xc2\x47\xb4\x63\xf2\xc9\xfc\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x07\x66\ \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\x2d\x49\x44\x41\x54\x78\x5e\xb5\x56\x5d\x6f\x1c\x57\ \x19\x7e\xce\xc7\x7c\xec\x97\xd7\x6e\x9c\x38\xc6\x89\x03\x49\x9a\ \x26\x4d\x21\xaa\x08\x95\xb8\x40\xca\x25\x08\x89\xfb\x8a\x2b\xee\ \xb8\x41\x48\x48\x20\x21\x21\x04\x37\x5c\xf1\x03\xb8\x00\xa9\x70\ \x83\xa2\x0a\x51\x22\x01\x37\x20\x15\xd1\xa0\xe6\xb3\xad\x53\x2b\ \x49\x9b\xa4\xb1\xe3\x8f\xb5\xbd\x3b\x9b\x59\xef\xcc\xce\xce\xcc\ \x39\x87\xf3\x1e\x2d\x2b\xd3\x3a\xf5\x02\xe2\x58\x8f\xde\x39\xc7\ \x1a\x3f\xcf\xfb\xbc\xef\x79\xc7\xcc\x18\x83\xff\x75\x5d\xbc\xf8\ \x6d\x0e\x20\x54\xaa\xa8\x68\x5d\xd6\x19\xe3\x14\xa7\x74\xa9\xea\ \x5a\x95\x15\xad\xf4\x94\x31\x68\x7a\x15\xb9\xba\xbc\x7c\xf9\x4d\ \x00\x99\xe5\xd5\x00\x20\xf7\x12\x5c\xf8\xc2\xb7\xbe\x94\xa5\x83\ \x53\x40\x59\x63\xe0\x75\x3f\x0c\x6b\x42\x7a\x55\x18\x56\x07\x50\ \x63\x8c\xd5\x00\xd4\xc1\x10\x5a\xd0\x59\x08\x98\x0a\x98\x0e\xb5\ \x31\x81\x86\xf6\x34\x2b\x3d\x4b\x2a\x99\x27\xc5\xdc\xe9\xe7\xd9\ \xd9\x17\xcf\xf2\xc6\xcc\x0c\x13\xcd\x19\xf1\x97\x5f\xbd\xf6\x00\ \xc0\xab\x16\x14\xe3\x4f\x08\x38\x3c\x7f\xf8\x97\x5f\xfc\xca\xcb\ \x2f\x65\xda\x53\x79\x51\xb0\x3b\x37\xdf\x62\x1f\xdc\x7d\x17\x5e\ \xe0\x81\x0b\x30\xce\x01\x21\xb8\x83\xe7\x09\x16\x04\x92\x85\xa1\ \x8f\x8a\x45\xb5\x1a\xda\x18\xa2\x5e\xab\xa2\x56\xab\x60\xee\xe8\ \x02\x4e\x5f\xf8\x32\xae\x6c\x7f\x16\xed\xf6\x03\xf0\xd6\x32\x94\ \x2a\xe7\x01\xbc\x62\xd1\xd9\x57\xc0\xc9\x73\xa7\xce\x7f\xe3\x7b\ \xaf\xf2\xdf\xfd\x63\xc8\x3f\xba\xf9\x16\xe6\x16\x24\x7e\xf8\xdd\ \x1f\xa1\x54\x40\x18\x04\xf0\x3d\x89\x6a\xa5\x82\x30\x0c\x10\xf8\ \x9e\xdd\xfb\x90\x52\x40\x08\x01\xce\x18\x98\x05\x18\x20\xa5\xe7\ \xce\xb3\x5c\xe1\x27\x57\x3b\x78\x78\x7b\x09\xcf\x9b\x77\xe1\xab\ \x5c\x00\x20\x11\xa1\x05\x3e\x21\x60\x37\xc9\xb3\x37\x6f\x0f\x6b\ \xbf\xf9\xeb\x0a\x3a\xd7\x96\xf0\xcd\x53\x06\x5f\xff\xea\xd7\xb0\ \xb1\xbe\x8e\x7e\xd2\x47\x96\x0d\xa1\x94\x42\x59\x14\xc8\x87\x43\ \x68\xad\x61\x8c\x71\xb1\x2c\xcb\x31\xe8\xcc\x89\x11\x3e\x4e\x1e\ \x3a\x89\xf5\x13\xaf\xa0\x9a\xe7\x28\x57\xaf\x01\x00\x23\xec\x2b\ \x80\x5e\x54\xf4\xc7\x94\x71\x2f\x47\x4f\x63\xdc\x78\xfb\x2a\xd6\ \x36\xb7\x51\x14\x85\x23\xe3\x9c\xec\xa7\x0c\x25\xc1\x65\x4f\x8b\ \x44\xd0\xa2\xdf\xfb\xbe\x6f\xcb\x50\x43\xb5\xd1\x84\xfc\x40\x21\ \xac\x56\x21\x94\x40\xb9\x87\x6b\x5f\x01\x24\x5a\x0a\x8e\xc0\x13\ \x80\x64\x08\xc3\x0a\x16\x17\x17\xc1\xbd\x90\x32\x27\x01\x44\x48\ \xd9\x8d\x41\xcb\xed\x39\x07\xed\x38\xf5\x87\xf4\x5c\x3f\x88\xa0\ \x0a\xc9\x13\x04\x82\xc1\xe3\x40\x7e\x90\x00\x80\x41\x70\x06\x5f\ \x70\x80\x19\xd4\x6d\x16\x73\x9f\x39\x8a\x24\x2b\x9c\xfd\x45\x31\ \x1c\x59\x6e\xe0\x7e\x94\x86\x36\xe4\x9c\x76\x0e\x39\x94\x05\x54\ \xa9\xe0\x16\xb7\x42\x2a\x2f\xc2\xf7\x32\x27\x1c\x07\x3a\x60\x41\ \xdc\xbe\xc7\x20\x7d\x89\xa8\x1b\xe1\xf6\xf5\x9b\xd8\xdc\x89\xc8\ \xe2\xb1\xbd\x41\x10\x50\x19\xe8\x99\x1a\x93\x1c\xb0\x44\x15\xb2\ \x9f\x88\xdc\x79\xd5\xda\xee\x59\x07\x7e\xfd\x46\x8c\x40\x0a\x97\ \x18\xd8\x81\x0e\x18\x48\xce\xe0\x49\x61\x23\x50\xaf\xd7\xf1\xc2\ \xf9\xcf\x63\xb6\x13\x8d\xad\xfe\xb7\x12\xb8\x37\x00\xce\xc8\xb1\ \x71\x1c\x97\x85\x1a\x32\x94\x02\xa1\xa7\x21\x05\x3b\xd8\x01\x22\ \x90\x92\x23\xb0\x90\x8c\x51\x23\x59\xd4\x51\x14\xa5\x43\xa9\x4a\ \xa8\x51\x97\x13\x40\x11\xb0\x67\x64\x7d\x89\xe1\x30\x47\x59\x94\ \x50\xda\xf5\x0b\x0c\x97\xa8\x86\xc7\x10\xf8\x8a\x12\x9b\xac\x04\ \x94\x79\xe8\xb9\x46\x44\xa7\xbd\x83\x7b\xcb\x4b\x68\x77\x7b\x2e\ \x73\xcf\xf7\xdd\x3c\xa8\x84\x15\x04\x81\x0f\x3f\x08\x21\x3d\x39\ \xb6\x9e\x40\x37\xc3\x73\x65\xe1\xa0\xf5\xfb\xf5\x6d\x57\x02\x8f\ \xcc\x39\x48\x00\x29\xf0\x84\x73\xc0\x92\x79\x98\x3d\x64\xa7\xd9\ \x99\x73\x38\x39\xba\x7e\xd2\x35\xe7\x7e\x99\x18\x17\xb4\x32\xc8\ \x4a\x20\x4e\x34\xb2\x42\x21\xb7\xfb\x6a\x40\x25\x30\x93\x36\x21\ \x83\xeb\x01\x01\x54\x67\xe6\x30\x7f\xa6\x09\xe9\x79\x6e\x36\x64\ \x85\x41\x77\xa0\x90\xe4\x06\x69\xae\xd1\xb7\xb1\x3f\xd4\xd8\xcd\ \x34\x7a\x43\xe3\x62\x6c\x41\x67\x69\x6e\xa0\x0c\x5c\x89\x3a\x03\ \x8d\x66\x35\x04\x04\x0e\x16\xc0\x19\x29\x05\x7c\xa1\xec\xf5\x3b\ \x81\x3b\x9a\xe1\xfb\x57\x76\x30\x5b\x15\x18\x94\x06\x89\x25\x1c\ \x14\x06\x79\x39\x82\x02\x4a\x63\x50\x8e\x9e\x15\x18\xc0\x38\x04\ \x97\x60\xe4\x96\x2e\x1d\x6f\x73\x4a\xa0\xa0\xfd\x24\x73\x80\x6a\ \x15\x70\x86\xe9\xa9\x06\x4a\x0e\xdc\x6f\x15\xb8\x8b\x02\xca\xd0\ \xb0\x11\x60\x42\x42\xba\x9a\x73\x70\xc9\xc0\x8d\x86\x60\x39\xbc\ \xb2\x0f\x3d\xe8\x23\xdd\x8d\x30\xe8\x45\x28\x8b\x1c\x53\x47\x4f\ \x62\xfe\xd8\x09\x54\x7c\x01\x23\x30\xc9\x35\x84\xb3\x3f\xf4\x05\ \x18\x37\x90\x9e\xef\xb2\x28\xb3\x14\x26\xdd\x45\x96\xc6\xc8\x7a\ \x16\x49\x17\xc3\x24\x86\xca\xfa\x10\x6a\x80\x9a\xd4\x98\xae\x49\ \x1c\x6e\x56\x71\xee\xb9\x06\xe6\x4e\x37\x70\xe4\xd0\x34\x9a\x33\ \x1a\x6f\x74\x7c\xd7\x57\x1e\x4d\xca\xc9\x46\x31\x09\x90\x96\x34\ \xc6\xfa\x3b\x7f\x42\xda\xfa\x10\x53\x15\x89\x43\x8d\x10\x0b\xd3\ \x35\xcc\x1f\x6d\x62\x76\xba\x8e\x99\xc6\x09\x1c\x9d\x9d\xc6\x9c\ \xc5\x73\x53\x75\x54\x2b\x81\x6b\xd4\x52\x29\xa4\x83\x0c\xbb\xfd\ \x04\xbd\xfe\x10\x8b\x26\xc0\x40\x0b\xe4\x93\xcc\x01\x0e\x27\xc0\ \x5a\xe6\x63\x3b\x6a\xe1\xe2\x91\x1c\x3f\xfd\xf1\x77\xb0\xb1\xb9\ \x85\xcd\x8d\x75\xb4\x5a\x2d\x44\xdd\x36\x9a\xd0\x38\x73\xfc\x38\ \x82\x30\x74\x9f\xe1\x24\xcb\xa9\xeb\xdd\x1c\x31\xc6\x8c\x46\xb2\ \x86\x61\x40\x3d\x14\xd0\x05\x47\x3a\x89\x00\x8c\x1c\xf0\x03\x09\ \x66\x4a\x57\x0e\xc6\x04\xee\x7d\xf8\x08\x97\x2f\x5f\xc6\x60\x30\ \x70\x23\x76\x6a\x6a\x0a\xc7\x4e\x7c\xce\xcd\x81\x4f\x5b\x44\x19\ \xd0\xb5\x06\x0d\xb6\xfd\x9b\xf0\x63\xa7\xcc\x91\x06\xa3\x41\xc4\ \x19\x77\x83\x65\x7d\x7d\x9d\xc8\xdd\x97\xf1\xb8\xcd\x9c\xbe\x03\ \x93\x2e\x9f\x26\xab\xcf\xe0\xfb\xf2\x60\x01\x9c\x8d\x26\xa1\xe4\ \xee\x45\xce\x01\x03\x43\x84\xf4\xb1\x71\x1f\x19\x21\x04\xed\xc9\ \xee\xc9\x04\xf8\x1c\x01\x33\x28\xd2\x0e\x98\x19\xdb\xc0\x9e\xe1\ \x80\x13\xe0\xc8\x7d\xc1\x5d\x7d\x61\xc6\xdf\x89\x71\x8d\xff\x93\ \x15\x48\xa0\xfb\xf0\x06\x56\x97\xde\x47\xb7\xbb\xb2\x0e\x60\x68\ \x51\x3e\x53\x80\x10\x80\x27\xb9\x05\x95\xc0\x69\xfd\xaf\x17\xe9\ \x67\xfd\x16\xee\xfe\xed\x0f\xb8\x7f\xeb\xc1\xf6\xda\xda\x8d\xeb\ \x00\x56\x2c\x7a\xfb\xdf\x02\x3e\x6a\x42\xc9\x20\xe5\xbf\x32\x06\ \x14\x5d\xad\x34\xa5\x3e\x20\xfb\x69\xff\xa9\x25\x10\x82\xbb\x9a\ \x6b\x53\x62\xe5\xfa\x9f\x71\xef\xda\x72\x6f\x75\xe5\xd6\xad\xa2\ \x48\x48\xc0\x7b\x16\xdd\x7d\x05\xc0\x30\x67\x89\x20\x21\x16\x9c\ \x33\x68\xad\x31\x3b\x3b\x8b\x4b\x97\x2e\x61\x61\x61\x01\xd3\xd3\ \xd3\x68\x34\x1a\xee\x3f\x63\x29\x85\x8d\x9e\x7b\xe6\x5c\x20\xcf\ \x4b\x3c\x7d\x9a\x98\x76\xbb\xc7\xda\xed\x18\xbd\xdd\x0c\x77\xaf\ \x3d\x1a\x3e\x79\x7c\xe7\x4e\x92\x6c\xbd\x0d\xe0\x9a\xc5\x47\x16\ \xf9\x33\x07\x51\xa3\x0a\xcc\x1f\x06\xe2\xc3\x4d\x84\xba\x81\xbc\ \xc8\x71\xe1\xc2\x4b\x38\x7f\xfe\x05\x4b\x90\x43\x29\xed\x66\x7f\ \xb7\x9b\x22\x49\x62\xc4\x71\x86\x28\x4a\xcc\xf6\x76\x57\x6d\x6d\ \xed\x0c\xdb\xed\xad\x7e\xaf\x17\xc5\x69\xda\xe9\xc6\xf1\x56\x7b\ \x75\xf5\xe1\xd6\x60\xb0\xfb\x00\x00\x65\x7f\xdf\xa2\x6f\xec\xda\ \x57\x80\xe7\x4b\x7f\xd0\x4f\x71\xf5\xb7\xaf\x61\x63\xed\x09\xce\ \xce\x1f\x31\x0f\x1f\x6d\xe3\xf1\x4a\x8b\x45\x51\xdf\x92\x26\x26\ \x8a\x76\xcb\x4e\x27\xca\xba\xdd\x9d\x7e\x1c\xb7\xe3\x38\xde\x89\ \xba\xdd\xcd\x76\xbb\xbd\xd1\x4e\xd3\x5e\x44\x04\x16\xb1\x45\x6f\ \x14\x9f\x5a\xb4\x2c\x36\x69\x3f\x26\xdf\x4f\xc0\xe3\x47\x6b\x1b\ \x3f\xff\xc1\x2f\x16\xef\xbe\xf7\x7e\x91\x26\x59\xb1\x94\xdf\xcb\ \xae\xbc\xfe\xf7\x7e\xad\x86\xdd\x7e\x3f\xea\x46\xd1\x46\x7b\x67\ \x67\x6d\x7b\x38\x1c\x10\xc1\xee\x98\x64\x0c\xb7\x4f\x2c\x32\x8b\ \xe1\x9e\x98\x5b\xde\xf2\xc0\x49\x78\x6f\xe9\xf6\xcf\x7a\xbd\x27\ \x2f\xa7\x83\x56\x7d\x30\x88\x22\xad\x4b\x52\xdf\x27\xec\x21\x7c\ \x3a\x7a\x4e\x1d\xc1\x98\x64\x4c\xa4\x70\xf0\xda\x5f\xc0\xc3\x47\ \x7f\x7c\x1d\xc0\x3b\x16\xcd\x51\x26\xbd\xbd\x59\x7c\x8c\x48\x4f\ \xc8\x31\xb9\x80\x11\xe1\xf2\x68\x3e\x14\x23\x22\x83\xff\xe3\xfa\ \x27\x0a\xd7\x77\xe2\xf8\x4e\x6d\x80\x00\x00\x00\x00\x49\x45\x4e\ \x44\xae\x42\x60\x82\ \x00\x00\x06\xe8\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x06\x7a\x49\x44\x41\x54\x58\xc3\xed\ \x57\x09\x4c\x54\x57\x14\x1d\x6a\xed\xa6\x4d\x69\x69\xb5\x2e\x15\ \xf7\x1d\xb1\x20\x8a\x0a\x28\x2a\xb2\xa9\x88\xc0\x20\x28\x22\xae\ \xe0\x30\x08\x6e\x6c\x23\x42\x01\xc5\x71\x41\x76\x71\xa1\x0a\x28\ \xe2\x5a\xc0\x0a\x5a\x91\x60\xc0\x15\xad\x88\x68\xcd\x18\xd4\xaa\ \xd4\x5a\xb1\x2e\xe8\x8c\x0a\x9e\x9e\x0f\x3f\x8d\x52\x29\x9a\x9a\ \x36\x69\x9c\xe4\x64\x32\x33\xff\xdd\x73\xef\x39\xf7\xde\xff\x47\ \x02\x40\xf2\x5f\x42\xf2\x36\x81\xff\x65\x02\x66\x52\x85\x91\x99\ \x34\x58\x66\xea\x14\x14\x6f\xea\x18\x98\x66\xea\x18\x90\x3e\xd4\ \x7e\xc1\xaa\x81\xb6\xde\x93\x25\x12\xc9\xc7\x44\x33\xc9\x9b\x7e\ \x0d\x9b\x18\xd2\x97\xc4\x11\xc3\x9c\x17\x17\x7b\x2c\xdc\x7c\x39\ \x60\xf9\xe1\xdb\xa1\xd1\x17\xab\x15\x2b\xae\xa8\x15\xcb\xaf\xa8\ \x03\xa3\xce\x3c\x90\x29\x76\xdf\x1a\x6c\xe7\x97\x6f\x60\x31\x5d\ \xc6\x23\x9f\x10\xef\xbe\x01\xe2\xc5\x96\x24\x4d\x99\x34\x37\x59\ \x15\x91\x50\x76\x37\x3c\x41\x53\x2b\x0f\x07\x26\x2d\x00\xc6\x7a\ \x02\xa3\xa7\x02\x23\xdd\x00\x6b\x77\xc0\x7d\x1e\x10\x16\x5d\xf9\ \xc4\xc2\x75\xc9\xb5\xd6\xba\x7a\x52\x1e\xd7\xf9\xc7\xc4\xd3\x17\ \xa5\x56\x28\x93\xaf\x3e\x0c\x8c\x06\xdc\x02\x49\x24\x03\x4c\xa6\ \x01\x86\x93\x01\x3d\x29\xd0\xdb\x1e\xe8\x66\x4b\x8c\x06\xfa\xd9\ \x00\xd2\x39\xc0\x82\xf0\x22\x75\xaf\xc1\x13\x72\x18\xc6\xe0\xf5\ \x89\x9d\x17\xeb\x12\x8a\x49\xbe\xc9\xaa\x95\x1b\x49\xbc\x06\x70\ \x0d\x02\x2c\xe4\xc0\x50\x56\x6c\x4c\x0c\x64\x12\x83\xbc\x09\x92\ \xe9\x7b\x00\x3d\x5d\x80\x4e\x63\x00\x5d\x0b\x60\x88\x13\x10\x10\ \xa5\x7e\x36\xd0\x56\x56\xc9\x70\x4e\xaf\x45\x3e\x7c\x62\x88\xdc\ \xc6\x23\xaa\x2c\x3c\xbe\xa4\x2a\x3c\x19\x98\xba\x84\x15\xfb\x01\ \x66\x73\x89\xf9\x94\x5b\x01\xd8\x47\x01\x93\xa9\xc6\xd4\x38\x26\ \xc6\xf7\x71\xdf\x50\x11\x5f\xa0\xef\x14\xa0\xab\x1d\x60\xe4\x0c\ \xcc\xa5\x45\xe6\x4e\x01\x77\x19\xd2\xf7\xb5\xaa\x96\x2d\xd9\x71\ \x35\x26\x5d\x53\xeb\x4d\x92\xf1\x01\xf4\x96\xa4\x23\xfc\x01\x9b\ \x08\x92\x92\x70\x7e\x3a\xb0\x7c\x2f\xb0\xbe\x10\xd8\x54\x04\x24\ \xfc\x00\xf8\x6f\xa5\xec\x2b\xa8\x0e\x13\xed\xc3\x5e\x18\xcc\x5e\ \xf0\x5d\xc6\xe4\xbc\xe3\xab\x19\x5a\xf1\x0a\xe4\x0a\x27\xa1\xea\ \xc8\xc4\x92\xaa\x88\x75\x24\x0a\x63\xd5\x24\x1d\x45\xbf\x6d\x22\ \xd9\x6c\x09\xf4\x74\x1b\x10\x7b\x08\xc8\x2a\x03\xb6\x1e\x54\xd5\ \x84\xc4\xee\x51\x7b\x2c\x88\x7b\x18\xb9\x2e\x4f\xb3\xbd\x84\x92\ \x67\x50\x09\x5e\x6b\x4c\x6b\x46\xd1\x2a\x45\x2c\xed\x19\x23\xbf\ \xc7\xf0\x4b\xfe\x1c\x1f\x8e\x86\x31\xbf\xf8\x88\xd0\x7a\x5e\x72\ \x07\xcf\x98\x0b\xb1\x69\x37\x35\xf3\xe9\xb5\x53\x08\x60\x49\x99\ \xad\x59\xb1\x34\x06\x90\xb1\x62\xe5\x01\x60\x57\x29\xb0\xad\x40\ \x55\x33\xc6\x23\xf4\x41\x5f\xd3\x89\x57\x3b\xf4\x1a\x5a\xac\xd3\ \xae\xfb\x4e\x36\xda\xb1\xb5\xbb\x4a\x34\x89\xf9\xb4\x24\x91\x7d\ \x12\x54\x1f\x63\x55\x9a\xfa\x99\x91\xb5\xe7\xed\x3a\x05\x04\xf2\ \xc4\xd4\xb2\xdf\x0d\x2d\x67\x6d\xea\xd2\xdf\x62\xbc\xb8\x28\xb4\ \x98\x58\xf0\x0c\xff\xd4\x8a\xd8\x2d\x9a\x5a\x2f\x25\xbd\xe5\x41\ \x2b\xfa\x69\xbf\x0a\xf0\x48\x61\x15\x39\x40\xca\x31\x20\xfb\xf4\ \x9d\x5a\x59\xe8\x86\x47\x02\xf1\x97\x9d\xf4\xf3\x79\x76\x39\xe1\ \x45\x8c\x63\x3c\x7f\xdf\xc8\xf4\xdf\x32\x4f\x02\x3e\xa9\x4c\x9a\ \x71\x7c\xe3\x81\xc8\xa4\x13\x4f\xba\x1b\x8d\x39\xcf\x6b\xfc\x04\ \x05\x4a\x0b\x8f\x30\xab\x75\xa7\x1f\xe9\x9b\xbb\x65\xe9\x99\xb9\ \xc8\xb9\xc1\xb6\xf9\x45\xe4\x5c\x57\x6e\x06\xa6\xd1\x6f\x3b\xca\ \x6e\xcb\x77\x97\x24\x40\x9e\x09\xac\x2c\x00\xf6\x94\x03\x69\xfb\ \xcb\x9e\x8e\x70\xf6\xbf\xdf\xa1\xb7\x49\x09\x83\xad\x21\x3c\x09\ \x73\xa2\x33\xf1\x59\xff\x11\xee\x16\x5e\x21\x29\xd7\x77\xfd\x48\ \x1b\xb6\x53\x31\x5a\x18\x9f\x45\x05\xdd\x42\x1f\x68\xb7\xea\xb8\ \x9b\xd7\xb8\x08\x0d\x56\x96\xcb\x80\x2b\xf9\xa3\x97\xe2\x94\xda\ \x78\x9c\xef\x85\xf0\xa4\xeb\x1a\x7f\x7a\xeb\xb6\x94\xcb\x84\x72\ \xdb\x0b\x5d\xfd\x2d\x83\xb0\xc1\xd6\x1e\x07\xf2\xca\xd5\xcf\x16\ \x29\xb7\x70\x96\xed\x2b\x3e\x6f\xdf\x63\x5f\x9d\x97\x12\x89\x1d\ \xd1\xf5\xf9\x55\x6b\xe2\xb0\x68\xda\xb2\x0d\xfb\x7f\xcd\x64\x1f\ \x84\x91\x58\xf9\x1d\x10\x9e\x74\xf8\x71\x57\x03\x2b\xa1\xfa\x30\ \xc2\x58\xb0\xe0\xdc\xae\x5c\x60\x4e\x28\x3b\xdb\x07\x70\x5c\x54\ \x5d\xeb\x42\x52\x07\x62\x1c\xbb\x55\x4a\xc9\x66\x6d\x01\x42\xe9\ \x75\x2a\x2b\xc9\x2d\xbb\x53\x3b\x51\xae\xac\xee\xd4\x6f\x44\x29\ \x03\xc4\x10\x33\x89\x21\x44\xeb\x86\xab\x55\xb8\x17\x64\x1c\xbc\ \x58\x9d\xce\xa4\xe3\x38\x11\x69\x07\xef\xd4\x9a\x3b\xf9\xdf\x6f\ \xa1\xdd\x3a\x93\x3f\xbb\x12\x6d\xeb\x12\xd8\xb9\x9f\xbe\x72\xa6\ \x4d\xbc\x00\x53\x8e\x8b\x55\x58\x7d\xd5\x93\xd6\x03\x9e\x94\x6e\ \x29\x3b\x3c\x93\x92\xe7\x9c\xba\x51\x23\x4a\x7e\x92\x87\x95\x84\ \x83\x58\x75\x0b\xe2\x9d\x86\xf7\x06\xa9\x3c\xe6\x42\xf1\x65\x36\ \x28\x7b\x60\xe7\x51\xf5\x33\x47\x2f\x65\xb5\x78\x36\x98\x30\x24\ \x3e\xa8\x4b\x60\x0f\x09\x66\x2b\xeb\x67\x7a\x24\x95\xb0\x67\x87\ \x4f\xa1\xff\x3e\x94\x2c\x92\x33\x9d\x41\xf2\xb5\x59\x27\x9e\x8c\ \x24\x79\xbb\x6e\x03\x8f\xf0\x60\x24\x31\x96\x68\xdf\xd8\x0d\x45\ \x68\xee\xf4\xbc\xb2\xbb\x85\x2a\x20\xff\x02\x30\x2f\x72\x8b\x5a\ \x54\x4d\x48\xdc\x96\xf8\xa2\x6e\xe2\x84\x04\x72\x8a\xd9\x9d\xdc\ \x6c\x76\x4c\xc2\x81\x92\x4f\xe5\x78\x79\xd3\xb3\x10\xf6\x46\xf2\ \x19\x56\x70\xec\x46\x0d\x1b\xb4\x52\xbb\x95\x6e\x8e\xb8\x3c\xac\ \x88\x36\x8d\x91\x0b\xbb\xc3\xc3\x3f\x59\x55\xfe\x0b\x70\xfa\x2a\ \xf7\xc4\xd2\xad\x8f\x44\xdf\x57\x13\x13\x5e\x48\x5c\x48\x20\xef\ \x14\xc7\x8a\xdd\xed\xbe\x11\x98\xc1\xa5\x31\x97\xcd\x16\x4c\x55\ \xa2\x38\x66\x6b\x0a\xea\xc9\xdb\x77\x1f\x54\xc8\xcb\x17\x0a\xd6\ \x8a\xd9\xbf\xbc\x72\xa7\x20\x1d\x26\xb0\xf3\x50\xe9\x4d\x4d\x79\ \x25\xc9\xa3\xb6\x3e\x14\xc9\x85\x7e\x11\xee\x80\xba\x2f\x9c\x15\ \x12\x28\xa2\x44\x71\x5c\x16\x41\x9c\xed\xc5\x6c\xb6\x65\x5c\xa3\ \xd1\xec\xdc\xb5\xdc\x6c\x99\x97\xb8\x52\xb3\x4e\x3e\xee\x3d\x64\ \xc2\x51\x9d\xb6\xdd\x3c\xc5\xec\x1b\x7d\xa0\x60\xbc\x39\x71\x19\ \x45\xb7\x4a\x2a\x34\xb5\xce\xb2\x15\xf7\xba\x19\x5a\x97\x8b\x23\ \xea\x4c\x74\x24\x9a\x37\x3c\x70\xee\xec\xcf\xc0\xc1\x9f\x48\x56\ \x5a\xdf\x6c\x7b\xe8\x5b\x76\x05\xb0\x8f\xf2\x15\xdc\x00\xce\x56\ \x01\xeb\x76\x17\xa9\xfb\x98\x48\x77\xf0\x48\x1f\xe2\xfd\x46\x1e\ \x4a\xec\x42\x13\xf7\x5e\xcb\x3f\x7d\x53\x33\x76\x7a\xc4\xed\xce\ \xfa\xa3\x84\xfd\xb0\x52\xbc\xeb\xfd\x95\x5c\x9c\xd5\x8c\xec\xa2\ \xcb\x9a\xec\xe2\x4b\x4f\xb3\x8a\x54\x35\xd9\x47\x55\x35\x39\xc4\ \xde\x63\xc4\x71\x55\xcd\xf7\x44\xee\x09\x01\x97\x9e\xba\xfa\xae\ \xae\x6a\xa5\xab\xe7\x23\xfa\xaf\xd5\xe0\xf9\xa0\x87\x47\xc0\xfa\ \x8b\xab\xd3\x0a\xab\x0c\x2d\x67\x9e\xfb\xaa\xe7\xe0\x03\xfc\x3a\ \x82\xb0\x17\x65\x6f\xfe\x52\xc9\x0c\x46\xcf\x70\x19\x60\x35\xbb\ \xa0\xdf\xf0\xc9\xe7\xf5\xcc\x5c\x2f\x35\x8a\x61\xae\xaa\x36\x5d\ \x0c\x72\xc4\xb9\xef\xf2\x12\x1b\x9a\x75\x37\xb2\x35\xef\x3d\xd4\ \x71\xe3\x87\x2d\x3f\x8d\xe2\x67\x39\x31\x92\x68\xd7\xd4\xa3\x97\ \xb0\xb9\x06\x88\x8b\x61\x76\x13\x70\x13\x44\x13\x1f\xa5\xb4\x1a\ \xc4\x11\x3e\x6b\x13\x5f\x0b\xf7\x31\xd1\x2a\xed\x57\x79\xee\x6b\ \x26\x26\xd1\x46\x6c\xb0\xbf\x43\x9b\x26\x9e\x6a\xb5\xea\x96\x8b\ \x44\xd2\x92\x78\xef\x25\x49\xfe\xfb\xaf\xb7\xff\x8c\xde\x26\xd0\ \x14\xfe\x00\xc6\x8f\x6d\x5f\x51\xaa\x96\x24\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x03\xd1\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x03\x63\x49\x44\x41\x54\x58\xc3\xc5\ \x97\xcd\x6f\x1b\x55\x14\xc5\x7f\x77\x66\x92\x89\xd3\x7c\xd4\xad\ \x17\x09\x20\xd2\x4d\x55\x51\x10\x08\x51\x84\xca\x0a\x09\xd8\x20\ \xc4\xa2\x52\x17\x2c\x2a\x24\x28\x6b\x36\x2c\x90\xfa\x1f\xc0\x82\ \x0d\xa8\x3b\x04\x2c\xd8\x82\x10\xaa\xda\x45\x05\x64\x07\x08\x04\ \xa1\x34\x40\x85\x11\x6e\x21\xb5\x13\x9c\xe6\xc3\xb5\xd3\x79\xef\ \x5d\x16\xf3\xec\x8c\x9d\xc4\xa6\xf5\x54\x1d\xe9\x4a\x1e\x69\x3c\ \xe7\xdc\x73\xce\xbb\xef\x8d\xa8\x2a\xf7\xf2\x0a\xb8\xc7\x57\xf4\ \x7f\x1e\x7a\xff\x35\x79\xf2\xe6\x16\x91\x55\xa4\x30\xca\x13\xc6\ \x12\xaa\x22\x00\x51\xc0\x4c\x18\x30\xeb\x94\xc0\x3a\x1a\xd5\x35\ \x3e\x7b\xfb\x73\xe6\x81\xa6\xaa\xba\x41\xef\x96\x41\x16\x9c\x7d\ \x5d\xce\x3c\xf8\xc8\x0b\xaf\x3a\xa7\xa1\xaa\x06\x0f\x1c\x7d\x76\ \xdc\x39\x15\x54\x05\x60\xaa\x34\x17\x8d\x17\xef\x1f\x09\xc2\x82\ \x98\xad\x86\x7e\xf1\xde\x89\xea\x77\x8b\xff\xbe\xfb\xe1\x57\x7c\ \x02\xd4\x55\xd5\xf6\x05\x50\xd5\xbe\x75\xf6\x34\x3f\xaa\xaa\xaa\ \x3a\x5f\xb6\xab\x9c\x5a\x6d\xb5\x6e\x6a\xb5\xba\xa4\xc6\x18\xbd\ \xb2\xf0\x75\xf2\xe6\x8b\x7c\xfb\xfc\xa3\xbc\x02\x14\xdb\x4d\xee\ \x55\x03\x33\xe0\x94\x10\x2c\x60\x7c\x39\xd2\xfb\xb4\x04\x8b\x31\ \xb7\x58\x5e\xae\x11\x86\x21\x87\x1e\x7a\x3a\x3a\xf9\xc6\x07\x8f\ \x1d\x9e\xe1\xe5\x97\x8e\xf1\x1c\x30\x21\x22\x72\xc7\x21\x4c\xbd\ \xd6\x2e\xd0\xb4\x1c\xe0\x50\x2c\xaa\x09\xcd\x66\x23\x0d\x55\x14\ \xf1\xf0\xf1\x93\xa3\xa7\xdf\xfa\xf8\x99\xb9\x12\xa7\x80\x43\x40\ \x61\xc8\x55\x90\x02\x81\x45\x31\x9e\x40\x02\x18\xc4\x93\xc9\xe6\ \x6d\xdf\xbe\x09\x8e\x3c\x75\x22\x2e\x4d\x72\x1c\x38\x0a\x4c\x0e\ \xb5\x0a\x14\x87\x60\xd2\xd4\x6e\xe7\x97\x54\x19\x08\x02\xc5\x98\ \x16\x17\x2f\x5e\x60\x6d\x6d\x83\x20\x80\xfd\xfb\x8b\x68\x54\x8c\ \x61\x75\x0e\x98\x00\xaa\x77\xac\x80\x64\x2c\xd0\x4e\x1e\x12\xda\ \xd9\x18\x1d\x15\x66\x66\x0f\xd2\x6c\xd6\xd9\xdc\xac\x61\xcc\x26\ \x85\xc2\x08\xad\xe6\x2a\x5e\xfe\x68\x48\x05\xac\x57\x40\x3b\x7d\ \x4b\x46\x85\x20\x54\xee\x9b\x2d\x31\x35\xf9\x38\xc6\x18\xa2\x28\ \x22\x8e\x0f\x70\x7e\x04\xcd\x65\x10\x09\xce\x77\x4c\xc6\x06\x45\ \x11\x04\x25\x10\x21\x8e\x85\x38\xce\x5a\x3d\x46\x18\x74\xa4\xd3\ \x1c\x32\x90\xf8\xb7\xa4\xa0\xda\x87\x6e\x4a\xce\xe5\x37\x8a\xdb\ \x5e\xb7\x3b\x6f\x83\x48\x4f\x2c\xb7\x1b\x15\xff\x9f\x9c\x08\x08\ \x0e\xcd\x58\xd0\x26\xa1\x3b\xd6\xc3\x36\x1d\xc9\x57\x81\xd4\x82\ \xfe\x24\x7b\xe9\xe5\x48\x40\xfd\xe0\x91\x2e\x03\xba\x41\xe9\x49\ \x9a\xe6\x69\x41\x56\x01\xd9\xa5\x63\x7a\x08\xe5\xae\x40\x9a\x01\ \xd3\xe9\x51\x76\x89\x1c\x3e\x96\xd2\x09\xa7\xcd\xdf\x82\xde\x5e\ \xa5\x13\xc6\x14\x7a\xfb\x79\xbd\x1b\x0a\x24\x3b\xe4\xee\xf6\x5c\ \xbb\x16\x67\xce\x0a\xec\x9c\x84\xba\xeb\x73\xd9\xdd\x43\xf3\x1f\ \x44\x83\x62\xd7\xfd\xfb\x2e\x0c\xa2\xac\xf3\xfd\x94\x68\x0f\xec\ \x5c\x97\x61\xba\x15\x0f\x3a\xe1\xc7\xc0\x38\x50\x64\x6d\x25\x70\ \x1b\x4d\x5a\xb9\x6d\x46\x3b\x2d\x80\xf4\x48\x39\x86\x30\x8d\x52\ \xa4\x56\x59\xb1\x95\xc5\xcb\xf6\xa7\x2f\x3f\x4a\xae\x2c\xfe\xd0\ \xb8\x74\x95\x3f\x80\x55\x60\x6b\x48\x05\xd4\x1f\x40\x15\x25\x04\ \x0a\x08\x53\x28\x07\xa8\x55\x56\xed\xc2\xfc\xb9\xe4\xd7\x6f\x3e\ \x35\xe5\x72\x79\xfd\xef\x3a\xcb\xdf\xff\xc9\x6f\xe5\x2a\x65\xe0\ \x1a\x70\x19\x58\x1f\x32\x03\xa0\x8c\xa1\x4c\x03\x07\x3d\xe8\x85\ \x0e\xe8\x2f\xd7\xa8\x5c\xaa\xf0\xfb\xd2\x0d\xfe\x02\x6a\xc0\x12\ \xf0\x8f\x3f\x86\xd5\x81\xcd\x21\x15\x38\x42\xad\xb2\x6c\x17\xe6\ \xcf\xef\x05\x7a\x1d\xb8\xea\x41\xeb\xc0\x86\x07\xdd\xd2\x01\x5f\ \x3e\x03\x09\xac\x37\x39\xf7\xce\xa9\xc2\xf4\xf5\x1b\xd8\x9f\x2b\ \x2c\xed\x01\xba\xe2\x65\x6e\x00\x89\xde\xc6\x17\xef\xc0\x4f\x33\ \x11\x29\x01\xc7\x80\xc3\xc0\x2d\x0f\x38\x14\xe8\xed\x12\x18\x01\ \xa6\xfd\xd1\xda\x7a\x69\x87\x02\xcd\x5e\xff\x01\xf9\x68\x10\x8e\ \x11\x57\x76\x24\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x09\ \x00\x57\xb8\x67\ \x00\x70\ \x00\x72\x00\x69\x00\x6e\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x08\xc8\x58\x67\ \x00\x73\ \x00\x61\x00\x76\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x04\xb2\x58\xc7\ \x00\x75\ \x00\x6e\x00\x64\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x07\ \x04\xca\x57\xa7\ \x00\x6e\ \x00\x65\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x02\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x40\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x32\ \x00\x00\x00\x56\x00\x00\x00\x00\x00\x01\x00\x00\x15\x1e\ \x00\x00\x00\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x06\xc8\ " 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() PyQt5_gpl-5.10.1/examples/mainwindows/dockwidgets/images/0000755000076500000240000000000013245231431023430 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/mainwindows/dockwidgets/images/new.png0000644000076500000240000000172113245231431024730 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<cIDATXÃÅ—ÍoUÅwf’‰Ó|Ô­ ÒMUQQ„Ê Ø Ä¢R,*$(k6,úÀ‚ ¨;,Ø‚ªÚEd¡4@…n!µœæÃµÓyï]óìŒÄ¦õTéJi<çÜsλï¨*÷ò ¸ÇWôzÿ5yòæ‘U¤0ÊÆª"QÀL0ë”À:Õ5>{ûs榪ºAï–Aœ}]Î<øÈ ¯:§¡ª}vÜ9T`ª4ï ‚˜­†~ñÞ‰êw‹ÿ¾ûáW|ÔUÕöPÕ¾uö4?ªªª:_¶«œZmµnjµº¤Æ½²ðuòæ‹|ûü£¼ÛMîU3à”,`|9Òû´‹1·X^®†!‡z::ùÆžáå—Žñ0!"rÇ!L½Ö.дàP,ª Íf# Uñðñ“£§ßúø™¹§€C@aÈUE1ž@ēɿmß¾ Ž–Ò §Íß‚Þ^¥Æzûy½ $;äîö\»gΠ위ºësÙÝCóDƒb×ýû. ¢¬óý”hì\—aº:áÇÀ8Pdm%pMZ¹mF;-€ôH9†0R¤VY±•ÅËö§/?J®,þиt•?€U`kHÔ@% S(¨UVíÂü¹ä×o>5åryýï:ËßÿÉoå*eàpX2 Œ¡L=è…è/ר\ªðûÒ þjÀð?†ÕÍ!8B­²læÏïz¸êAëÀ†ÝÒ_> ¬79÷ΩÂôõØŸ+,íºâen‰ÞÆïÀO3)Ç€ÃÀ-8èí¦ýÑÚzi‡Í^ÿùhŽWv$IEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/dockwidgets/images/print.png0000644000076500000240000000330413245231431025272 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÙܲÚ{IDATXíWiLTWv!b•—¨%R Eª¤IµVMli°h£¶Å²Fý£,aQH$dÂÐ"BYD@@ö‘}S6 ²©$ bƒ‚ ©_Ϲ™1£€´ó’/óÞ¼{Î÷ÝsÎ=÷¾yóT.;»è/##.HÒÓ«%—.VGFÞ¬ML¬¨­ªj¿/•6A‰+WJÛ÷|I¦óçièZhoÿG¡üñsLÿ µ˜Óˆ‚íÛ¬=ë—‰ÞP ùå2Ç‘éç‹‚­mXyc÷8dÏñ¯àq[Èî+‚–FØØû¤ÉÐ:µ`çôœÌ~!,шKK¯¡—ªÐðÔB%3 -I÷¤þJ9 "’š §g(Õäj˜Gͨ(¿ý-Šº1' º€ÜN ¶t††;êÉÌTcu`gÄŽ³:€Œ6 ­ Hi’ꀄj ¦ÈlJõíãhjꀯ¯ï+25øßä‰D.•– «p©R”1qPózžŒahh½½½xøð!Åàà PPP€††xxxLnÚ´ÉiÎvmcc³+,,L„º££÷îÝ¿r¹\¸|ù²øïÕ«WÇØØFGG?IÞÝÝÊÊJ¹¶¶68p`ˆ¨¾™u•9r$O&“‰Ð©Š`C&âü–••}’œÅ666ŠÐs 0ykk«(Tö“¼Y{Um «VæOU;aB¾çœ*Éy¶÷ïß©àÚ`---‚ðÉ“'xüø1=z$Š´¦¦ÁÁÁ Zè ºïg¤‚ÂSÛÙÙ‰¹D´··‹™sñqJ¥R‹wL¦ ;“²`&äH0nÞ¼) ÔÝÝ[·n•Ýïìß¿¿– P8K?óÌùjΕK” ŽW×Lvv¶(d???899áØ±cðööæ°û¨i!&&ÎÎÎHIIŽUEp01Ï’CÍbÓÒÒpýúu±b’““qþüy®x¸ºº‚z 233áï ïªÃB„±±ñìöíÛt÷î]QdýýýHOO‡———XzL¦Á¡M† yuˆð21 â4•——‹”ù%ºÂ+çWîؼyóìöîÝ+a¢7oÞjž);c!"¯bžå¹sçD¤˜˜Ÿy‹ãœ«’³ çŸ{¡‘‘Ñì¨KxÉMOO ‚óÌ5Á…äéé‰ãÇÃÇÇG„—£ Ì¹*9§’ß]¸pT[\ùâÿ3gÎÐŽi8»€;wJXé»wïæÁÅÇME™óɹ~…PÚß·hÏMÎÍÍ ¦¦¦}Dç4CÀ† ôi‰dP?xËa›K©’s$N:jd }...s ç ‹myS£1ÃDçFÐqå}\WW×cË–-rvÊE÷±ˆÒÒÒ÷ä Úé`mm=+97-¶á«©© 'Ož%ÿ|hñ˜ëè6_¡Ì|Íš5Ñfff#þþþ‰Rw=eس³Ë ‘dQ|Þ“óæÅÝñåË—Â&55”ÞÁ¥K—Ö’ßTÂYÅ~°è“çAÂjžuëÖ•ìÚµkŠw@vxëÖ-±ò °²²¦¢ôÃŋմJŠ©[v‰Ùr¸IÌ4E²oñâÅ•äç*Á•ðµÂï"uÏ%<Ð@[[ÛqýúõmVVV -Û¶m=®ZµªYGG§ÒÄÄ|ˆ…¤¦æÂÁÁaBOOO¦¥¥U@¶N(Ή+þÏY‘+Öhùòåúúú ,(¢çD‚;áŽÔÊ•+ãV¯^Ý@÷Y„pÅ7‚¡"¥ 5òµ¤˜‡ñ ",Sœr´Ÿeß~TJ—¨óÅüÑÂG´còÉüIEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/dockwidgets/images/save.png0000644000076500000240000000354613245231431025104 0ustar philstaff00000000000000‰PNG  IHDR szzô-IDATx^µV]oW~ÎÇ|ì—×nœ8ƉIš&M!ª•¸@Ê%‰ûŠ+î¸AHH !!7\ñ¸©pƒ¢ Q"7 Ñ æ³­S+I›¤±ãµ½;›YïÌÎÎÌ9‡ó-+Ó:õâXÞ9Ç?Ïû¼ïyÇ̃ÿu]¼øm Tª¨h]Öã§t©êZ•­ô”1hz¹º¼|ùM™åÕ ÷\øÂ·¾”¥ƒS@Ycàu? kBzUVPcŒÕÔÁZÐY˜ ˜µ1†ö4+=K*™'ÅÜéçÙÙÏòÆÌ Íñ—_½öÀ«ãO8<ø—_üÊË/eÚSyQ°;7ßbÜ}^à 0Î!¸ƒç ’…¡ŠEµÚ¢^«¢V«`îèN_ø2®líöðÖ2”*ç¼bÑÙWÀÉs§Îã{¯òßýcÈ?ºùæ$~øÝ¡T@ð=‰j¥‚0 øžÝûR@Θ ¥çγ\á'W;xx{ Ï›wá«\ ¡>!`7ɳ7ok¿ùë :×–ðÍS_ÿê×°±¾Ž~ÒG– ¡”BYȇCh­aŒq±,Ë1è̉>N:‰õ¯ šç(W¯#ì+€^TôÇ”q/GOcÜxû*Ö6·Q…#ãœì§ %ÁeO‹DТßû¾oËPCµÑ„ü@!¬V!”@¹‡k_$Z ŽÀ€dà Á½2'DHÙAËí9í8õ‡ô\?ˆ  É‚Áã@~€Ap_p€ÔmsŸ9Š$+œýE1Ynà~”†6äœv9”T©à·B*/Â÷2':`AÜ¾Ç }‰¨áöõ›ØÜ‰Èâ±½AP虓°D²ŸˆÜyÕÚîY~ýFŒ@ —ØHÎàIa#P¯×ñÂùÏc¶­þ·¸7Îȱq—…2”¡§!;Ø"’#°ŒQ#YÔQ¥C©J¨Q—@°gd}‰á0GY”PÚõ —¨†ÇøŠ›¬”yè¹FD§½ƒ{ËKhw{.sÏ÷Ý<¨„?!=9¶ž@7Ãseá õûõmWÌ9H)ð„sÀ’y˜=d§Ù™s89º~Ò5ç~™´2ÈJ N4²B!·ûj@%0“6!ƒëTgæ0¦ éyn6d…Aw äi®Ñ·±?ÔØÍ4zCãblAgin  \‰:f5À)|¡ìõ;;šáûWv0[”‰%y9‚JcPŽžÀ8—`ä–.osJ  ý$s€jp†é©JÜo¸‹Êа`BBºšspÉÀ†`9¼²=è#Ý0èE(‹SGObþØ T|#0É5„³?ô7žï²(³&ÝE–ÆÈzIÃ$†Êúj€šÔ˜®InVqî¹æN7päÐ4š3ot|×WMÊÉF1 –4Æú;BÚúS‰C Ó5ÌmbvºŽ™Æ ÆœÅsSuT+kÔR)¤ƒ »ý½þ‹&À@ ä“Ì'ÀZæc;jáâ‘?ýñw°±¹…Íu´Z-DÝ6šÐ8sü8‚0tŸá$Ë©ëÝ1ÆŒF²†a@=ÐG:‰Œð fJWÆî}ø—/_Æ`0p#vjj ÇN|ÎÍO[Dе ¶ý›ðc§Ì‘£AÄwƒe}}ÈÝ—ñ¸Íœ¾“.Ÿ&«Ïàûò`œ&¡äîEÎC„ô±q!íÉîÉø3(Ò˜ÛÀžá€àÈ}Á]}aÆß‰qÿ“H ûðV—ÞG·»²`hQ>S€€'¹•Àiý¯égýîþí¸ëÁöÚÚëV,zûß>jBÉ å¿2]­4¥> ûiÿ©%‚»škSbåúŸqïÚrouåÖ­¢HHÀ{Ý}À0g‰ !œ3h­1;;‹K—.aaaÓÓÓh4î?c)…ž{æ\ ÏK<}š˜v»ÇÚí½Ý w¯=>y|çN’l½ àšÅGù3Q£ ÌâÃM„º¼ÈqáÂK8þKC)íf·›"IbÄq†(JÌövWmmí Ûí­~¯ÅiÚéÆñV{uõáÖ`°ûeߢoìÚW€çKÐOqõ·¯ací ÎÎ1mãñJ‹EQß’&&ŠvËN'ʺÝ~·ã8Þ‰ºÝÍv»½ÑNÓ^D±EoŸZ´,6i?&ßOÀãGk?ÿÁ/ï¾÷~‘&Y±”ßË®¼þ÷~­†Ý~?êFÑF{ggm{8Áî˜d ·O,2‹áž˜[ÞòÀIxoéöÏz½'/§ƒV}0ˆ"­KRß'ì!|:zNÁ˜dL¤pðÚ_ÀÃG|À;ÍQ&½½Y|ŒHOÈ1¹€áòh>#"ƒÿãú' ×wâøNm€IEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/dockwidgets/images/undo.png0000644000076500000240000000335013245231431025104 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<zIDATXÃíW LTWjí¦Miiµ.÷± Š (*²©ˆÀ ("®à0nl#BÅqAvq¡ (âZÀ Z‘`À­ˆhÍÔªÔZ±.èŒ žž?R)šš6iœäd23ÿÝsï9÷ÞÿG@ò_Bò6ÿefR…‘™4Xfêoê˜fê>Ô~Áª¶Þ“%ÉÇD3É›~ ›Ò—ÄÜ{,Ü|9`ùáÛ¡Ñ«+®¨˯¨£Î<)vßlç—o`1]Æ#Ÿï¾âÅ–$M™47Y‘Pv7 ŒÜI$L¦†“=)ÐÛèfKŒúÙÒ9À‚ð"u¯ÁrÆàõ‰ëŠI¾Éª•I¼p ,äÀPVlL dƒ¼ ’é{=]€Nc] `ˆ¥~6ÐVVÉpN¯E>|bˆÜÆ#ª,<¾¤*<˜º„ûfs‰ù”[ØG“©ÆÔ8&Æ÷qßP_ ï «`ä Ì¥EæNwÒ÷µª–-Ùq5&]SëM’ñô–¤#ü›’’p~:°|/°¾ØT$üøo¥ì+¨íÃ^Ì^ð]Æä¼ã«Zñ ä '¡êÈÄ’ªˆu$ cÕ$E¿m"Ùl ôt{È*¶TÕ„ÄîQ{,ˆ{¹.O³½„’gP ^kLkFÑ*E,í#¿ÇðKþކ1¿øˆÐz^rϘ ±i75óéµS`I™­Y±4±bå`W)°­@U3Æ#ôA_Ó‰W;ôZ¬Ó®ûN6Ú±µ»J4‰ù´$‘}TcUšú™‘µçí:òÄÔ²ß -gmêÒßb¼¸(´˜Xð ÿÔŠØ-šZ/%½åA+úi¿ ðHa9@Ê1 ûôZYè†Gñ—ôóyv9áEŒc<ßÈôß2O>©Lšq|ãȤOº9ÏküJ 0«u§é›»e陹ȹÁ¶ùEä\Wn¦Ño;ÊnËw—$@ž ¬,ö”iûËžŽpö¿ß¡·I ƒ­!< s¢3ñYÿî^!)×wýH¶S1ZŸEÝBh·ê¸›×¸ V–Ë€+ù£—â”Úxœï…ð¤ëz붔˄rÛ ]ý-ƒ°ÁÖòÊÕÏ)·p–í+>oßc_—‰ÑõùUkâ°hÚ² ûÍd„‘XùžtøqW+¡ú0ÂX°àÜ®\`N(;Ûp\T]ëBRb»UJÉfmBéu*+É-»S;Q®¬îÔoD)Ä3‰!D놫U¸d¼XΤã8iïÔš;ùßo¡Ý:“?»mëعŸ¾r¦M¼SŽ‹UX}Õ“Öž”n);<“’眺Q#J~’‡•„ƒXu â†÷©<æBñe6({`çQõ3G/eµx6˜0$>¨K` f+ëgz$•°g‡O¡ÿ>”,’3AòµY'žŒ$y»nð`$1–hߨ Ehîô¼²»…* ÿ0/r‹ZTMHÜ–ø¢nâ„rŠÙÜlvLÂ’OåxyÓ³öFòVpìF ´R»•nޏ<¬ˆ6‘ »ÃÃ?YUþ pú*÷ÄÒ­DßW^H\H ïÇŠÝí¾˜Á¥1—ÍLU¢8fk êÉÛwTÈË ÖŠÙ¿¼r§ &°óPéMMy%É£¶>É…~/œ(¢Dq\AœíÅl¶e\£ÑìܵÜl™—¸R³N>î=dÂQ¶Ý<Åì} `¼9qE·J*4µÎ²÷ºZ—‹#êLt$š7k_ ÷1Ñ*íWyîk&&ÑFl°¿C›&žjµê–‹DÒ’xï%Iþû¯·ÿŒÞ&ÐþÆm_Qª–$IEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/mdi/0000755000076500000240000000000013245231431020425 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/mainwindows/mdi/images/0000755000076500000240000000000013245231431021672 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/mainwindows/mdi/images/copy.png0000644000076500000240000000247213245231431023357 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<ÌIDATXõ—]L[eÆwo¼ÙåI q×&ãN¸pÑ…D½Pãå+.&J'†ª‹™àТl†9ܘ€@l¦CÊ +ƒ(ÌÚÑ–ÒÒJ{ú¥ÐïßÿÛÇÌ*‡“<9o!œç÷<ïG‡ÊFϽúé»LZ&aj`ÊÙéyÙš?]Pò¥Áé§WÃ@0„¢­Ç2Š'X"s¿ykÚKr{ç¬ÚØÈ˜@„™…ã‘1)Ka%”D8šBs‡Æ¾Äÿ“y$ñÈX’Ï„]ŒÂå "K£ôÃïM4uY°ëØ6Õž:ü̹ç_.?VžEEU *™Þ¯­Ã±‰Ç¬¶%ü¹è‡kXöÆÒ¯œ¾pŸAÙ€]‡™ŠŠŠÌ’Z[[ݤ¯U­þ¯Tߦ195…Ù¹9è&&PPP€!Ío|ÞI¦ù̘\ÀáOAô…ðC¯ÎÍjöPCfØåŠÇãðz½H§Ó˜œœDee5fg¼ftÓ@2-xðÝQ¬ápF£‘S©~êíEã'Ÿa†A8–ÜPwuãLC#Î5Çí‘q\¼>,/ÀÆÆôzýc@}}ýP2ˆÐFf› ‚Áˆ©¬—ºdn€¦Ø:Ø~E"”+*0®@çmWÚª4¾|Sæ5@f:ÃÃÃèeõ÷÷÷C«Õ¢ªºcwõ*wí¶Ú»e y·ÛíBgg'zzz8PIiniõ×o°ùg¸Ð%3ÀÖÖß @¢(Âï÷cmm §•Ðü®ç©É|Á ˜=@›ÜÛA677ùv¤VÕèûUà©Gç;€Ì%€$3O$(+¯â¸‹˜ 6ZÕ0ÿ˜'“<=MIÉ©J ·³‰=Åø0±|qõ¤êɘ‹ÅP¦¨‚zHÀ˜¸k朙ûçWdÒSjˆF£Ü< ¡¸´×Üf‡ä dÄ(;dH=œs™Ó¹@ ÅeU¸Ø- :c®}ià£v™þ]=¥&­®®rˆ·J*p¹WÀ=¸~žîÌg.í@ªD‹Ž’ÓqLß+++X__ç'Yßt PO¿Ìe¸24ì§ÉXÚëdNi)9D@õÓÏÞ|[–ëO~u¸qøq,ž~½Nm¦7ª¬žd,m72%Ñ#òäÌ'hï ¼f[O5âÉxG•JŤ.Í7RR:÷)µÃáà"ãÅÅEõâñ—\ô¹“é®---né`¡ÔÒ— ———áóù`³Ùø}ii‰C ͲТ’R“éNßxT;5`µZyõÔ ýÎ`0$òòòî³gÙ@SS“[šgJO"ªšÆ‹™7@ŸGGG#mmmÞüü|ûÛA¦²½šÿ'@ss3ŸJGT?U???ÏëÖh4‘ºº:çô]L0ÍÆxG¥Rév:¼bJJo>”´¾¾Þ™““#™gSuVn‹Å‚Hmm­377WVÓÝøFLÂA™n×ßC9V…pÈIEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/mdi/images/cut.png0000644000076500000240000000245313245231431023177 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<½IDATXÃíWkL“W>#qÉ2é—¨Te8ö‡2“f,[pÄ0ÿ`¢.:Nº1‰[³€Ù „X‹…²‚•^äf Ž1øÃFË-ܨ·ji‘ò¯ ܸ aÙ²“<í—ó}ýÞç¼ïó^J€ü“ ÿ t (DÙq+F€®ÝdÝÆf"Lø•Ä‹GÈ¡Ó÷ÈŽ—;82a+A …œ¾0H.Ý€@2«yMô¾ûrhd‘^£Qôî…GõнƒËM ›ö@t/½2= ‰?H¥,Œ1yÁ»ˆKÆ×Æ& ¹ýBþÅ+6FŒ\N“§§§ ÌÓ9¹˜c6 Òä£+A Œ)ž*ß7GëÜ{µÌ‰ž@D–Tƒ+, 6FHõd*{.Tø7¿À4*TßbˆRÕ,XtzEUõÈ mtÂÔs÷!¾sQ•®ÐÏ唃‡´žÌ.Ôݯ™Ë°¯¯¯>¿Ò`µÛí€øyä>Ä^«´¹ˆ/†€'ÓÀgùŽõ`×^3ºvÚsîhØÇÇGŸ««° Á‡²ö.ç–7÷wsaؽè^€/fš †ß©6B÷ðØŸÔϥ犘-~þm—Tk__¸ÐÑsbrVNć—ÔŒ0é·8@¤Ö1ž…›~m©%[—Ù æ. ó$ß6Ž{½ÑÍBÈ o©<ѽV«w„ó’\»R©„úúz0™L uß5ÁQ±dÉQD>¶vÌ´@O“_~ÓÖßß2™ D"¨T*J¥ Ñh K[9¾é•à¸S¯y,ó—Ž"žÇ†æS)ö‚‚æâ   àñx`±X@[^ûÏ& -¦SÎg”Ï Lƒâ[{æÂ`š² ˆÅbÈÌÌ„¢¢"P«ÕÐÙÙÉ`ìþɹÉÛ§u.·ÏK€®·Ø)pÀj—¬xˆÊ‚â)‰>—+![–cãG„&Ø’rdŽo¿£Ñ-­-ðËÀ 8ñ¾³bÁ\i„……„FÜ&ç2¬,Ï3µì;ãºÓ3¯‚åþz‰žÞüb÷<’{f«O[Ê5íXCC=444€¥·2ÅÃóéÀe<’å(ž6]åœ*2x}ôƒ.Zl1 %êq÷/Ë'ï‡_þÓäD LhôÉ>u• ´··Ãׯ–1® fñ6m8hí÷*>]åXªñGZõ¶Y ³CÉ‘8 9ù©–!ú\ ϳÿÿ7üOøç‡¹DÃÏIEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/mdi/images/new.png0000644000076500000240000000152413245231431023173 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<æIDATXÃÕ—ÍNa†ë5”•{qáÒÄà¸â\¸ô\±0ê–&bX¸°‘X Ñ¿‰¤±R¤HE”þÐCÿ¦¦e€ãy{ú…QJ‚É!†IÞœ3§óÍûœóM›N„ˆ"ÿS‘sÀÇÕnÿ¥û¬Ç==d ©ð12<<¼j4::ºV<¯&“ÉV:v‰Dk`` Íknh¤8Òááq™ºï·É²,Úßß'†ñxÍëŠ@?ó°Ç¥Lf¹ Åb±:¯{pˆSww²lÛ¡ùùÏd×uéùÄDB&{Áɪ7JÎÍSøp]‹T‚@gOÎí¦Ggféõ›·Ÿœ¤©©iz÷þE£Ñe^AÀïí¶%†…šã”]ÍÑäô+z2þ”žÅ^ÐLb‹UÚõ <ÿjÍ67«”/nS‰c·…×~QðyÌÍ]µÇ{ÛîŸ;¾äˆ]¸½îâ”Ê3àuäÆuWbØ9êæ3DÔ§àô:­9"˜˜hr€˜kPS*-¹1âNSŒ òmû(¶|E›;ÛjüiŽûÅS(ðC¸fI÷kùR‡×¾TÈUºN­K¯…Þ·Â’=O¦³Þ£±qëÚÐõ˜³n©l4¤kÿàZSÔ Yoäî½â¥ÁËK|mŒu‡5¨ú·ÝeÙ<þžÏ7½Éºx&oFhòÿ™”žé?¿BÓôü½œž¥~Ql%¡’• wIEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/mdi/images/open.png0000644000076500000240000000403113245231431023337 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<«IDATXíW[P“göÊÎìÌöb/¼ÙéÎìn½ÚÙ›µÎº;{°­Ìz±ÎÎ:³vTpuÛâÖ¶T»¥ mÁ‚QB€€€!’@Hs$!gr€B œ GµTxöû~0X‹}gžù/’üÏû>Ïû¾ß—]vý˜ ñ ‚Áu‚ÏýþH¼› áW¯ïµ*ŒÖeÛ`[ 'ñ3ú"üÜ>vH~Š ¹¶Y2Ï­B9þDöQØÇæè‡†={öXSR®,Ê::NâåIÃÄ1·>Iù,`›]YSMM¶4ëû 1y`Å»ï¾?Å«¾ƒñ‰)LOÏ®’ï×¼tŸ¾ã²CO´3@‹{Í=.4ëì¨Wö ‡S…2^5C¼°ôÁ`\&¿K|áH$8AýÝês'ñ¹'H‡—Á×» "U7Ü7¢¸Nˆ,V>ÌVÛ:q,k,üÎç'‘6“•?F}¥þÄoôY1¶~ï Z{œà?0¡L(CF²ù&ÒùÅeÌ-,!4¿ˆ½{÷ZÉ;~ºm$~CF=5iu³€Ò?ËÄâšP¡Z´lñY ¶ ¦]/²sq·žÿ 1% ÍcbjƒC'äݼ-Ó°;’3&ÔSµÓûXOˆÅ!ˆ,CPºFÐí Bå›B›sü©ÏZî*tȼÉE §l“Ï›ˆ'§Ào¢ÖÖ%ÂQÛ(‡Æ¯‚/b”M‰$"êR-šB«èy¡ÅÏStö £Óá‡Ô<€½ ]Õ ‘• /yñƪ©Ô³s LÅ”ØÝï…Éb·¼¥å•KóË«#7ÙæÙ„—Ë<Ðhò£Ýî_'–;† ³x×}æ¤ø<3*6ªÜS3!ŒŽ3Ó&ä7 ñÁÅQs¯¾e`ü ##òΡ¾]¹¸QƒttM§ g€©¸ÝêƒØèB“ÊÌø|åË,ˆÚ$Q‰§g熆G`w8I‚:$|ø!®³ á™\€o ÐÞá,«Ä}ïÝaëÿŸÀ¹ö!HÌýO}îÔ"U„ªšºM>GäŽø<<„ÓݽÁˆÂâbœ~/=ô/ƒ„¼Åÿ-î:C(Q‘÷öñNÜ¿}„3iã ô3«àÉTh58ÑØÝ žX‰¬\ö3>Gªžœžeäî÷¢×lAC'bã éÖÀEÏR$¸†²žn´ÛPÑD…΋J~ m¾›['Ñ ™øe"î)ô(Èx5 ­>ªÜc“ð Ãf]ŽÄK—ÃÊÃÔcÀNzI1Nú‰”[;„|…%jJÕèò0£("øù3 t.¡¨¾¥| ²J*ðÏãqQåöFÑçò@«7 ýj’¿HƒÍ7'©Ú@Là{ˆREÝý qA—Å݈œAüùÍ·]„ël´CÐ(÷N#§ü²K«ñQêWHþoêúXQ¹G‚ãð ø`4™QÉ«ÂûgÏAþ@?én²¹oiÒ›*/råäuö¡ð¾•ùœÊ)ÂS¸Ý)Ü+vQÈÅ•ky8Ÿ€›·n3c‘Ûjs@"mÇ…„Pt» ó+€Ÿ4X÷$ |„JÓ8úa†œVýU³¬;¸:Ù!z/༺]&¾Áƒ”oØ8ŸœŠ=c¯™én*·F׃¤ËÉHÿ:‹ŒÕÇÑØ3ø81 †^›øÝûQOÔñ™îšª­“`+] 9õ¼ð¾g½êÌ=JUm”ÔñCáeS@ðÊ÷%`+njÇ©„DÄ9ŠÜ|6ZZÅ8ƒ/95Èj˜æ¢ÕÒ'õšzL¡Id·™ÛnF¹Ú¥v9,9=ùNìÙrÔG ;«Fˆcÿ9ßîû=ùœ¿€“ñp£­ÄOJénºX¨ï,ú”˜P(·@é<ùWì)*w-Ágû¶¹äD¾Ì²Züãä<ô7°ró°ïÀP Ñ!‰'e*¦K…>¿!ÕFä.[!° ®åÜâÒä‡o<¯<ç–5œiEåøû±X?‡7öïÇ:’«¤ !ípê5U!‹4[É7*4nÔI:ÃrsŽm•û‡$àJespäø)>|˜Œc.2*\"ÕÓ]~MÜ 6étv§wŒäˆ¶ùž„·•û"½Iý€ mô2JxLœKIõ¦.|Âme6Yñƒ\—šÁQ{ ó×Î%&6ÈýÇÈÕ‚ÜÎ^NEX…xö]\©UªûÀ–ÛP­uã®TA/Ê r¿ºÓj£·¢Qø¯CO¹-ˆËæášHª/š5æÇzó-Wx¬¨Ü¯½¬ÜÑâÝ\uÞ˯E¹v2g`õ§—©Ü÷Ò©Ü;øóÂñ‚ÊîP 9”¸ ÂÈ£‡Ã/"÷ÿÚmŠÝa™Õ¶Øk»^2¾/‰ÿf¹_ü€=ÏIEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/mdi/images/paste.png0000644000076500000240000000315513245231431023520 0ustar philstaff00000000000000‰PNG  IHDR szzô4IDATx^­—[lTÇÆsÎÙ‹½öú ¾²ic$BJ!"¡-•b¥/îKh+•¦U¥Æ`UªÚ´ªúV UÊ”'Ú„)­Ä‹¥RƒyÅ9iÓ„š›cjì²;»öz½»Þ³g¦Ãh…årlˆÉ'}úŸ‡ý~óŸ™sJ)‚$„xxžÇkH)õwÖ(' ¸C»h—R¾ÆcdYÖö»@·9ÿ&ü·íõâ`]DDnΉŠ+W®P]S@ Pe(A)fÓi^©/¼´Nl;ñ¹Gƒ|[CL;…D•2â¶Ä¶!!p>SlŒ;€D*ðœàË@P4`ÄHiŸ$Nœ8!Ò‡––g emå(¥´AXW%âØDBÃs\¼=A÷XŽ\$¾©½}÷ï-ËZܱcGYUU•ÓØØ~à†††Ð¥K—Ü®®®ðÖªDU,ÂsÕ1òžO¡(‘Ja Aرˆ†lær¢Ž?Ÿÿ+ M"Àf–„ïûxžGuuµžPKôêÕ«‡„(¥ÞZÀ²A¶-Ú¶8¤XÂŒL¹ì{õ;Ô76|/Á„g2ÊËËÍf>vìØ&½.A,ÐÙÙ©:¤l!Y¶-ÇÆBP´ÍDzˆ8–®`YxÀÜÜ555 räÈ‘ÍÀˆ¢Çb¹°mt0fË#6±¨£Ç,2‹“™c©yîÌ.èßErù<«È,A6›5§féÿm8°èX ´tŽ áÀSб¤ËŒƒÓ²—¦}¯³µã¬Ûû: /´sûÎ$ýýý$“I”Ræúøñã躬3çÎãèÑ£>|˜ÞÞ^‰„,¡ÜíÿÎæøç”OkÇÏøæ/ß&öõ7™|¦ƒkþ.®ñ-dk­{N^VsúogÑwMîÜâ¯vrýúu gkÖ?‹™ëx<Žã8%8À#–%˜ÊA:ÞÊþß½MÕ®×(„bÛBY‚lArf‘Oîf¸êrúadÕ^®Üg2ׯ…î›í‡¡ÍÍÍ´µµ755¡¡ ƒFÜqßÿéo¨lØHâì;L^É”±µy›[¶óIy%c —ÏfòÜÎ2¡íˆ L'çØ·+Êú%3{=kêêêÌu*•2J+ ¹Zpác(,ÊæÆÙR”’{Ã}$eÛÚLMÛË|<œfÒ_ÀÍx,Ìk/x µt:B¡ -ÝêŽ*ø>`ÁƸ P#‹S·¥–’xv}é¬ÇhÿŸ˜®¼LËöƒ¸ a¼‚¤X”xÚ!ÇB-ª€ãi –ÕÖÇC„Ê#ü¿jc!ž© sá߃ìÙùÊ£¹2G(akK!¥%0*¤\@X¥*Ìõ#úpl†ñYïýúÜÊÔàD\¢Ï“=Ó¥RòPjYVL vùÕ_†½·€=“gÓº2òy_»hêίÔpùÝà%žx L¸<¢Ö/Uò‡>ÏõO3D·±óÅ—Y\N`ŽÛS(À%mÔR}±µ–Ý[ât¿—¥j÷WùÑo µ˜µ7ÕØÒËSpSxó3³i %ýÕ‚Öðð)çãç3æu¨ÖË÷‰Á3}ú×rŒ²7Dzþ­”Ìo÷DTØ_p’ ý×=?ý~B¦Ïßöïîv;ü’¨ãsÊu]pWí@2« ~*Ó½·üÔÍi9ô—th¿¢Ó¶í¯}ž%XXXðÒ'Ožœºƒ>IÊ­ã³*×;â§nLËÑRèYt‹= ÀÐÐÛÓÓ“ÒNÏÎΞ.½ßèîê)Œ„…¯055UÐ/"©S§N%ÇÇÇ/g~쮸 KßvÚO&…@@aZüÞà`º»»;¥ßŠÌ$Ð^ísÍaíšw3n`pðýt___úÌ™3¦Å¥Ðx‰µžc!DxØOis´ø±ú½ú*_òØIEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/mdi/images/save.png0000644000076500000240000000224313245231431023337 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<5IDATXÃå—ÍTEÅ·êÖ{¯ÛnÇù@‰FM4™DH˜ÄŒþL\ñ.M\kXÃŽÄ΂htA\ âÄÆ=`PQ`¢ ƒÓý^÷”‹ªîù`æ „QVR©Î{·ëž:÷Ô©zê½ç~6å>·>€]»v½ìýòN5ëػ」;vœ<:ÏÌ—7XœïÜS¦Ú òÜk¼¸g€‹|øî€Ûpüìß?0x.ý¸Àþ·ÎoËryš #–ÓŸdüÕ}›k@E°@xp,#˲m00–aP|#%"+ؑՕsç΃*¸Ò² Ò,ŒI IÞw:ç·¡Õ‚v+Žm(r²ú8Ö ã¯¼Ikñú欬°Fؽ{çk놮€Z¨VêmQ¯µ‚÷ ¦„g5‚¨ •,Ã# Àð/Þ#&|ˆ#Ä!Яª‹öØ'aa½%% ð4M£:ó˜‰lÚc V˜_)FüaÍra-Ñ€: TIO4/à…Ä!‰Ãg ’i؉â‡X‹ïv‘¼€¼íßj#íòŸwPEÕ x:ëTx›œ3x$¼þòówhè6h¤¾ñëÆüß±R^‚DM_„ ¥8ç¶ÅˆžK¹v³Rª¸PïZÅ0}±Ë@Űô&­WùU.ááÆÒ2õÌp}É„-éJœÀsåf—+7»¬QW?תd~Å'¢)¬Ü µw¦l¨Á© È5¯›5Y1žþ{éïñ‚ï›X0+WVU!ÑüçSßòë™,-Þ¸§úWj<õìNžya¨3[1|‡÷÷¿Á·nÝ¢( Dk-ÖZTUÅ9‡ªb­Å˜ðßååeò<ï÷#Íù¸ò-pVPÜ1:¶rO8~œééiŒ1x˜`rròŽYØ1:Ö߆®Ô Up6¬¢V¯÷k933ÃÐÐÖZ¼÷4›Í»P«×pш´Ôˆœ '\ *¨V«dYÖ§¸7Þis©AK­8ǽ#´×Œ1ˆDß:¸«›¯5¨ óö.=Žƒ)mãÕÛ©÷åVl­ô‘Ž ÃòïÛà¡‘aÔµ+—Yœ¿¾6øÀ`­ ÛÃÀP­ÂìÅKœýîΟœž¦6`$^J í‘'©= o8ÈfÇ':ñ*ç52(ºpùêUÎ4ŽÑüú‹¹ÙNoà³>à§Ó'W™éÚ£†Uæ»<_o|wîÙ_‡Æ_˜šþôãõsl}ò5â·ÚÿÝ×ñ?MðK¹èF‰¯IEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/mdi/mdi.py0000755000076500000240000003727113245231431021565 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (QFile, QFileInfo, QPoint, QSettings, QSignalMapper, QSize, QTextStream, Qt) from PyQt5.QtGui import QIcon, QKeySequence from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QMainWindow, QMdiArea, QMessageBox, QTextEdit, QWidget) import mdi_rc class MdiChild(QTextEdit): sequenceNumber = 1 def __init__(self): super(MdiChild, self).__init__() self.setAttribute(Qt.WA_DeleteOnClose) self.isUntitled = True def newFile(self): self.isUntitled = True self.curFile = "document%d.txt" % MdiChild.sequenceNumber MdiChild.sequenceNumber += 1 self.setWindowTitle(self.curFile + '[*]') self.document().contentsChanged.connect(self.documentWasModified) def loadFile(self, fileName): file = QFile(fileName) if not file.open(QFile.ReadOnly | QFile.Text): QMessageBox.warning(self, "MDI", "Cannot read file %s:\n%s." % (fileName, file.errorString())) return False instr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) self.setPlainText(instr.readAll()) QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.document().contentsChanged.connect(self.documentWasModified) return True def save(self): if self.isUntitled: return self.saveAs() else: return self.saveFile(self.curFile) def saveAs(self): fileName, _ = QFileDialog.getSaveFileName(self, "Save As", self.curFile) if not fileName: return False return self.saveFile(fileName) def saveFile(self, fileName): file = QFile(fileName) if not file.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(self, "MDI", "Cannot write file %s:\n%s." % (fileName, file.errorString())) return False outstr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) outstr << self.toPlainText() QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) return True def userFriendlyCurrentFile(self): return self.strippedName(self.curFile) def currentFile(self): return self.curFile def closeEvent(self, event): if self.maybeSave(): event.accept() else: event.ignore() def documentWasModified(self): self.setWindowModified(self.document().isModified()) def maybeSave(self): if self.document().isModified(): ret = QMessageBox.warning(self, "MDI", "'%s' has been modified.\nDo you want to save your " "changes?" % self.userFriendlyCurrentFile(), QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel) if ret == QMessageBox.Save: return self.save() if ret == QMessageBox.Cancel: return False return True def setCurrentFile(self, fileName): self.curFile = QFileInfo(fileName).canonicalFilePath() self.isUntitled = False self.document().setModified(False) self.setWindowModified(False) self.setWindowTitle(self.userFriendlyCurrentFile() + "[*]") def strippedName(self, fullFileName): return QFileInfo(fullFileName).fileName() class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.mdiArea = QMdiArea() self.mdiArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) self.mdiArea.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded) self.setCentralWidget(self.mdiArea) self.mdiArea.subWindowActivated.connect(self.updateMenus) self.windowMapper = QSignalMapper(self) self.windowMapper.mapped[QWidget].connect(self.setActiveSubWindow) self.createActions() self.createMenus() self.createToolBars() self.createStatusBar() self.updateMenus() self.readSettings() self.setWindowTitle("MDI") def closeEvent(self, event): self.mdiArea.closeAllSubWindows() if self.mdiArea.currentSubWindow(): event.ignore() else: self.writeSettings() event.accept() def newFile(self): child = self.createMdiChild() child.newFile() child.show() def open(self): fileName, _ = QFileDialog.getOpenFileName(self) if fileName: existing = self.findMdiChild(fileName) if existing: self.mdiArea.setActiveSubWindow(existing) return child = self.createMdiChild() if child.loadFile(fileName): self.statusBar().showMessage("File loaded", 2000) child.show() else: child.close() def save(self): if self.activeMdiChild() and self.activeMdiChild().save(): self.statusBar().showMessage("File saved", 2000) def saveAs(self): if self.activeMdiChild() and self.activeMdiChild().saveAs(): self.statusBar().showMessage("File saved", 2000) def cut(self): if self.activeMdiChild(): self.activeMdiChild().cut() def copy(self): if self.activeMdiChild(): self.activeMdiChild().copy() def paste(self): if self.activeMdiChild(): self.activeMdiChild().paste() def about(self): QMessageBox.about(self, "About MDI", "The MDI example demonstrates how to write multiple " "document interface applications using Qt.") def updateMenus(self): hasMdiChild = (self.activeMdiChild() is not None) self.saveAct.setEnabled(hasMdiChild) self.saveAsAct.setEnabled(hasMdiChild) self.pasteAct.setEnabled(hasMdiChild) self.closeAct.setEnabled(hasMdiChild) self.closeAllAct.setEnabled(hasMdiChild) self.tileAct.setEnabled(hasMdiChild) self.cascadeAct.setEnabled(hasMdiChild) self.nextAct.setEnabled(hasMdiChild) self.previousAct.setEnabled(hasMdiChild) self.separatorAct.setVisible(hasMdiChild) hasSelection = (self.activeMdiChild() is not None and self.activeMdiChild().textCursor().hasSelection()) self.cutAct.setEnabled(hasSelection) self.copyAct.setEnabled(hasSelection) def updateWindowMenu(self): self.windowMenu.clear() self.windowMenu.addAction(self.closeAct) self.windowMenu.addAction(self.closeAllAct) self.windowMenu.addSeparator() self.windowMenu.addAction(self.tileAct) self.windowMenu.addAction(self.cascadeAct) self.windowMenu.addSeparator() self.windowMenu.addAction(self.nextAct) self.windowMenu.addAction(self.previousAct) self.windowMenu.addAction(self.separatorAct) windows = self.mdiArea.subWindowList() self.separatorAct.setVisible(len(windows) != 0) for i, window in enumerate(windows): child = window.widget() text = "%d %s" % (i + 1, child.userFriendlyCurrentFile()) if i < 9: text = '&' + text action = self.windowMenu.addAction(text) action.setCheckable(True) action.setChecked(child is self.activeMdiChild()) action.triggered.connect(self.windowMapper.map) self.windowMapper.setMapping(action, window) def createMdiChild(self): child = MdiChild() self.mdiArea.addSubWindow(child) child.copyAvailable.connect(self.cutAct.setEnabled) child.copyAvailable.connect(self.copyAct.setEnabled) return child def createActions(self): self.newAct = QAction(QIcon(':/images/new.png'), "&New", self, shortcut=QKeySequence.New, statusTip="Create a new file", triggered=self.newFile) self.openAct = QAction(QIcon(':/images/open.png'), "&Open...", self, shortcut=QKeySequence.Open, statusTip="Open an existing file", triggered=self.open) self.saveAct = QAction(QIcon(':/images/save.png'), "&Save", self, shortcut=QKeySequence.Save, statusTip="Save the document to disk", triggered=self.save) self.saveAsAct = QAction("Save &As...", self, shortcut=QKeySequence.SaveAs, statusTip="Save the document under a new name", triggered=self.saveAs) self.exitAct = QAction("E&xit", self, shortcut=QKeySequence.Quit, statusTip="Exit the application", triggered=QApplication.instance().closeAllWindows) self.cutAct = QAction(QIcon(':/images/cut.png'), "Cu&t", self, shortcut=QKeySequence.Cut, statusTip="Cut the current selection's contents to the clipboard", triggered=self.cut) self.copyAct = QAction(QIcon(':/images/copy.png'), "&Copy", self, shortcut=QKeySequence.Copy, statusTip="Copy the current selection's contents to the clipboard", triggered=self.copy) self.pasteAct = QAction(QIcon(':/images/paste.png'), "&Paste", self, shortcut=QKeySequence.Paste, statusTip="Paste the clipboard's contents into the current selection", triggered=self.paste) self.closeAct = QAction("Cl&ose", self, statusTip="Close the active window", triggered=self.mdiArea.closeActiveSubWindow) self.closeAllAct = QAction("Close &All", self, statusTip="Close all the windows", triggered=self.mdiArea.closeAllSubWindows) self.tileAct = QAction("&Tile", self, statusTip="Tile the windows", triggered=self.mdiArea.tileSubWindows) self.cascadeAct = QAction("&Cascade", self, statusTip="Cascade the windows", triggered=self.mdiArea.cascadeSubWindows) self.nextAct = QAction("Ne&xt", self, shortcut=QKeySequence.NextChild, statusTip="Move the focus to the next window", triggered=self.mdiArea.activateNextSubWindow) self.previousAct = QAction("Pre&vious", self, shortcut=QKeySequence.PreviousChild, statusTip="Move the focus to the previous window", triggered=self.mdiArea.activatePreviousSubWindow) self.separatorAct = QAction(self) self.separatorAct.setSeparator(True) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=QApplication.instance().aboutQt) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.newAct) self.fileMenu.addAction(self.openAct) self.fileMenu.addAction(self.saveAct) self.fileMenu.addAction(self.saveAsAct) self.fileMenu.addSeparator() action = self.fileMenu.addAction("Switch layout direction") action.triggered.connect(self.switchLayoutDirection) self.fileMenu.addAction(self.exitAct) self.editMenu = self.menuBar().addMenu("&Edit") self.editMenu.addAction(self.cutAct) self.editMenu.addAction(self.copyAct) self.editMenu.addAction(self.pasteAct) self.windowMenu = self.menuBar().addMenu("&Window") self.updateWindowMenu() self.windowMenu.aboutToShow.connect(self.updateWindowMenu) self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def createToolBars(self): self.fileToolBar = self.addToolBar("File") self.fileToolBar.addAction(self.newAct) self.fileToolBar.addAction(self.openAct) self.fileToolBar.addAction(self.saveAct) self.editToolBar = self.addToolBar("Edit") self.editToolBar.addAction(self.cutAct) self.editToolBar.addAction(self.copyAct) self.editToolBar.addAction(self.pasteAct) def createStatusBar(self): self.statusBar().showMessage("Ready") def readSettings(self): settings = QSettings('Trolltech', 'MDI Example') pos = settings.value('pos', QPoint(200, 200)) size = settings.value('size', QSize(400, 400)) self.move(pos) self.resize(size) def writeSettings(self): settings = QSettings('Trolltech', 'MDI Example') settings.setValue('pos', self.pos()) settings.setValue('size', self.size()) def activeMdiChild(self): activeSubWindow = self.mdiArea.activeSubWindow() if activeSubWindow: return activeSubWindow.widget() return None def findMdiChild(self, fileName): canonicalFilePath = QFileInfo(fileName).canonicalFilePath() for window in self.mdiArea.subWindowList(): if window.widget().currentFile() == canonicalFilePath: return window return None def switchLayoutDirection(self): if self.layoutDirection() == Qt.LeftToRight: QApplication.setLayoutDirection(Qt.RightToLeft) else: QApplication.setLayoutDirection(Qt.LeftToRight) def setActiveSubWindow(self, window): if window: self.mdiArea.setActiveSubWindow(window) if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/mainwindows/mdi/mdi.qrc0000644000076500000240000000040713245231431021706 0ustar philstaff00000000000000 images/copy.png images/cut.png images/new.png images/open.png images/paste.png images/save.png PyQt5_gpl-5.10.1/examples/mainwindows/mdi/mdi_rc.py0000644000076500000240000010725413245231431022245 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 12 17:31:28 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x04\xa3\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\x35\x49\x44\x41\x54\x58\xc3\xe5\ \x97\xcd\x8f\x54\x45\x14\xc5\x7f\xb7\xea\xd6\x7b\xaf\xdb\x6e\xc7\ \xf9\x40\x9d\x89\x46\x4d\x34\x99\x44\x8d\x1a\x48\x98\xc4\x8c\x1f\ \x1b\xfe\x02\x4c\x5c\xf1\x07\x18\x16\x2e\x4d\x5c\x6b\x58\xc3\x8e\ \xc4\x8d\x1b\x17\xce\x82\x68\x74\x41\x5c\x18\x0d\xe2\xc4\xc6\x00\ \x3d\x60\x50\x51\x19\x60\x02\xa2\x0e\x0c\x83\xd3\xfd\x5e\xf7\x94\ \x8b\xaa\xee\xf9\x60\xe6\x0d\x84\x51\x16\x56\x52\xa9\xce\x7b\xb7\ \xeb\x9e\x3a\xf7\xd4\xa9\x7a\xea\xbd\xe7\x7e\x36\xe5\x3e\xb7\x3e\ \x80\x5d\xbb\x76\xbd\x03\xec\xfd\x8f\xf2\x4e\x35\x1a\x8d\x03\xeb\ \x19\xd8\xbb\xef\xbd\xa3\x3b\x1f\x1f\x76\x00\x9c\x3c\x3a\xcf\xcc\ \x97\x37\x58\x9c\xef\xdc\x53\xa6\xda\xa0\xf2\xdc\x6b\x03\xbc\xb8\ \x67\x10\x80\x8b\x7f\x16\x7c\xf8\xee\x1e\x80\xdb\x00\x70\xfc\xec\ \x1c\xdf\x3f\x30\x04\x78\x2e\xfd\xb8\xc0\xfe\xb7\xce\x6f\xcb\x72\ \x0f\x1d\x79\x9a\x0b\x23\x96\xd3\x9f\x1f\x64\xfc\xd5\x7d\x9b\x6b\ \x40\x45\xb0\x16\x40\x78\x70\x2c\x23\xcb\xb2\x6d\x01\x30\x30\x96\ \x61\x8d\x50\x1b\x7c\x14\x23\x25\x22\x14\x2b\xd8\x18\x91\xd5\x95\ \x73\xe7\xce\x83\x2a\xb8\x04\xd2\x14\xb2\x0c\xd2\x2c\x8c\x49\x0a\ \x49\x12\xde\x77\x3a\x90\xe7\x90\xb7\xa1\xd5\x82\x76\x2b\x8e\x6d\ \x28\x72\xb2\xfa\x38\xd6\x0a\xe3\xaf\xbc\x49\x6b\xf1\xfa\xe6\x00\ \xac\x15\xac\x15\x04\xb0\x46\xd8\xbd\x7b\xe7\x16\x6b\xeb\x86\xae\ \x80\x5a\xa8\x56\x81\xea\x6d\x51\x8d\xaf\x04\xb5\x82\xf7\xa0\xa6\ \x84\x01\x67\x05\x35\x82\x08\xa8\x0a\x95\x2c\xc3\x23\x20\x1e\x08\ \xc0\xf0\x1e\x2f\x02\xde\x23\x12\x26\x15\x7c\x88\x23\xc4\x21\x1e\ \x3c\x21\x5e\x40\x4d\x58\x18\x40\xd7\x4a\x89\x06\xac\xa0\xda\x63\ \x00\x9a\x33\xbf\x05\x8a\x53\x07\x69\x02\x95\x04\xb2\x34\xf6\x04\ \x12\x07\x4e\xa1\xe8\x40\x5e\x40\x2b\x8f\xbd\x05\x4b\x39\xb4\x73\ \xc8\x0b\x54\x87\x71\x3d\x00\x2a\xe5\x25\x70\x31\x40\xd5\x30\x39\ \xf9\xd2\xd6\x0a\xf3\x3e\xd0\xaf\x16\xaa\x1b\x8b\xf6\xd8\x27\x61\ \x61\xbd\x1c\x25\x25\x20\x00\xf0\x81\x8d\x34\x4d\xa3\x3a\xc3\xb3\ \x98\x11\x89\x6c\x07\xda\x63\x09\x56\x98\x5f\x29\x46\xfc\x61\xcd\ \x72\x7f\x61\x1d\x2d\xd1\x80\x3a\x09\x54\x49\x18\x4f\x34\x2f\xe0\ \x9d\x85\xc4\x21\x89\xc3\x67\x09\x92\x69\xd8\x11\x89\xe2\x13\x87\ \x58\x8b\xef\x76\x91\xbc\x80\xbc\x03\xed\x02\xdf\x6a\x23\xed\x02\ \xf2\x02\x9f\x77\x50\x1d\x45\xd5\x20\x78\x3a\xeb\x54\x78\x9b\x06\ \x9c\x33\x78\x0f\x03\x8f\x24\xbc\xfe\xf2\xf3\x77\x68\xe8\x36\x68\ \xa4\xbe\xf1\xeb\xc6\xfc\xdf\xb1\x04\x52\x5e\x82\x44\x4d\x5f\x84\ \x8f\x0d\xa5\x38\xe7\xb6\xc5\x88\x9e\x18\x4b\xb9\x76\xb3\x03\x08\ \x9d\x52\x11\xaa\x90\xb8\x50\xef\x5a\xc5\x30\x7d\xb1\xcb\x40\xc5\ \xb0\x0e\xf4\x26\xad\x57\xf9\x55\x2e\xe1\xe1\xc6\xd2\x32\xf5\xcc\ \x70\x7d\xc9\x84\x2d\xe9\x4a\x19\x10\x9c\x1a\xc0\x73\xe5\x66\x97\ \x2b\x37\xbb\xac\x51\x57\x3f\xd7\xaa\x64\x7e\xc5\x27\xa2\x29\xac\ \x05\x15\xc3\x9c\x0b\xb5\x77\xa6\x6c\x17\xa8\xc1\xa9\x20\xc8\x1a\ \x35\xaf\x9b\x35\x1a\x8f\x59\x31\x9e\xfe\x7b\xe9\xef\x14\x00\xf1\ \x82\xef\x9b\x58\x30\x2b\x57\x56\x02\x55\x21\xd1\x90\xfc\xe7\x53\ \xdf\xf2\xeb\x99\x13\x2c\x2d\xde\xb8\xa7\xfa\x57\x6a\x03\x3c\xf5\ \xec\x4e\x9e\x79\x61\x02\x0f\xa8\x33\x5b\x31\x10\x03\x7c\x87\xf7\ \xf7\xbf\xc1\xc2\xc2\x02\xb7\x6e\xdd\xa2\x28\x0a\x44\x04\x6b\x2d\ \xd6\x5a\x54\x15\x55\xc5\x39\x87\xaa\x62\xad\xc5\x98\xf0\xdf\xe5\ \xe5\x65\xf2\x3c\xef\xf7\x23\xcd\xf9\xb8\xf2\x2d\x18\x70\x56\x50\ \x17\x18\xdc\x31\x3a\xb6\x72\x4f\x38\x7e\x9c\xe9\xe9\x69\x8c\x31\ \x78\xef\x99\x98\x98\x60\x72\x72\xf2\x8e\x59\xd8\x31\x3a\xd6\xdf\ \x86\xae\xd4\x09\x55\x70\x36\xac\xa2\x56\xaf\xf7\x6b\x39\x33\x33\ \xc3\xd0\xd0\x10\xd6\x5a\xbc\xf7\x34\x9b\xcd\xbb\x02\x50\xab\xd7\ \x70\xd1\x88\xb4\xd4\x88\x14\x9c\x0b\x27\x5c\xa0\x2a\x00\xa8\x56\ \xab\x64\x59\xd6\xa7\xb8\x37\xde\x69\x73\x1a\xa9\x17\x41\x4b\xad\ \x38\x1e\xc7\xbd\x23\xb4\xd7\x8c\x31\x88\x44\xdf\x8f\x3a\xb8\xab\ \x9b\xaf\x35\xa8\x0d\xf3\xf6\x18\x2e\x3d\x8e\x83\x29\x6d\xe3\xd5\ \xdb\x12\xa9\xf7\xe5\x56\x6c\xad\xf4\x91\x0e\x8e\x0c\xc3\xf2\xef\ \xdb\x02\xe0\xa1\x91\x61\xd4\xc2\xb5\x2b\x97\x59\x9c\xbf\xbe\x05\ \x03\x36\xf8\xc0\x60\xad\x02\x0b\xdb\xc3\xc0\x50\xad\xc2\xec\xc5\ \x4b\x9c\xfd\xee\x1b\xce\x9f\x9c\x9e\x03\xa6\x36\x04\x60\x24\x5e\ \x4a\x05\x12\x0b\xed\x91\x27\xa9\x3d\x0c\x6f\x1f\x38\xc8\x66\xc7\ \x81\x27\x3a\xf1\x2a\xe7\x35\x1e\x32\x81\x14\x28\xba\x70\xf9\xea\ \x55\xce\x34\x8e\xd1\xfc\xfa\x8b\xb9\xd9\x1f\x4e\x1d\x02\x0e\x6f\ \x08\xe0\xb3\x8f\x3e\xe0\xa7\xd3\x27\x57\x99\xe9\xda\xa3\x86\x55\ \xe6\xbb\x1e\x04\x1b\x3c\x5f\x1d\x6f\x7c\x77\xee\x8f\xd9\x5f\x0e\ \x01\x87\x1b\x8d\xc6\x5f\x1b\x01\x98\x9a\xfe\xf4\xe3\x7f\xf5\x73\ \x6c\x7d\xf2\x35\x00\xe2\xb7\xda\x81\xff\xdd\xd7\xf1\x3f\x4d\xf0\ \x4b\xb9\xe8\x46\x89\xaf\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x08\x19\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x07\xab\x49\x44\x41\x54\x58\xc3\xad\ \x57\x5b\x50\x93\x67\x1a\xf6\xca\xce\xec\xcc\xf6\x62\x2f\xbc\xd9\ \xe9\xce\xec\x6e\xbd\xda\xd9\x9b\xb5\xce\xba\x3b\x7b\xb0\xad\xcc\ \x7a\xb1\xce\xce\x3a\xb3\x76\x54\x70\x75\xdb\xe2\x81\xd6\xb6\x54\ \x04\xbb\xa5\x20\x6d\xc1\x82\x06\x08\x07\x51\x42\x80\x80\x80\x02\ \x21\x81\x10\x92\x40\x48\x10\x73\x24\x21\x67\x72\x80\x04\x42\x20\ \x9c\x09\x47\xb5\x54\x78\xf6\xfb\x7e\x13\x16\x30\x58\x8b\x7d\x67\ \x9e\xf9\x2f\x92\xfc\xcf\xfb\x3e\xcf\xfb\xbe\xdf\x97\x5d\x00\x76\ \xfd\x98\x20\xf1\x0b\x82\x14\x02\x03\xc1\x75\x82\x03\xcf\xfd\xfe\ \x8f\x48\xbc\x9b\x20\xe1\x57\xaf\xef\xb5\x2a\x8c\xd6\x65\xdb\x02\ \x60\x19\x1e\x5b\x09\x27\xf1\x33\xfa\x19\x81\x22\xfc\xdc\x3e\x76\ \x48\x7e\x8a\xa0\xb9\xb6\x59\x1c\x32\xcf\xad\x42\x39\xfe\x1d\x44\ \xf6\x51\xd8\xc7\xe6\xe8\x87\x86\x3d\x7b\xf6\x58\x53\x52\xae\x2c\ \xca\x3a\x3a\x10\x4e\xe2\xe5\x49\xc3\xc4\x31\x04\xb7\x3e\x49\xf9\ \x2c\x60\x9b\x5d\x59\x53\x4d\x03\x4d\xb6\x11\x34\xeb\xfb\x20\x31\ \x79\x60\x19\x9d\xc5\xbb\xef\xbe\x3f\xc5\xab\xbe\x83\xf1\x89\x29\ \x4c\x4f\xcf\xae\x92\xef\xd7\xbc\x74\x02\x11\x9f\x0f\xbe\x1d\xe3\ \xb2\x04\x43\x4f\xb4\x33\x40\x8b\x7b\x06\xcd\x3d\x2e\x34\xeb\xec\ \xa8\x57\xf6\x20\x87\x53\x85\x32\x5e\x35\x43\xbc\xb0\xf4\x90\x81\ \xc1\x60\x5c\x26\xbf\x4b\x7c\xe1\x04\x48\x1c\x24\x38\x41\xfd\xdd\ \xea\x73\x27\xf1\xb9\x27\x04\x48\x87\x97\xc1\xd7\xbb\x20\x22\x55\ \x37\xdc\x37\xa2\xb8\x4e\x88\x2c\x56\x3e\xcc\x56\xdb\x3a\x71\x04\ \x2c\x16\x6b\x2c\xfc\xce\xe7\x27\x10\x91\x36\x93\x95\x3f\x46\x7d\ \xa5\xfe\x12\xc4\x6f\xf4\x59\x31\xb6\x02\x7e\xef\x20\x5a\x7b\x9c\ \xe0\x3f\x30\xa1\x4c\x28\x43\x46\x0e\x1b\xb2\x0e\xf9\x26\xd2\xf9\ \xc5\x65\xcc\x2d\x2c\x21\x34\xbf\x88\xbd\x7b\xf7\x5a\xc9\x3b\x7e\ \xba\x6d\x02\x24\x7e\x43\x90\x46\x3d\x35\x13\x69\x75\xb3\x80\xd2\ \x3f\x0f\xcb\xc4\xe2\x9a\x50\xa1\x5a\xb4\x6c\xf1\x59\xa0\xb6\xa0\ \xa6\x5d\x8d\x2f\xb2\x73\x71\xb7\x9e\xff\x0c\x31\x25\x9d\x09\xcd\ \x63\x62\x6a\x06\x83\x43\x81\x27\xe4\xdd\xbc\x2d\xd3\xb0\x3b\x92\ \x03\x33\x26\xd4\x53\xb5\xd3\xfb\x58\x4f\x88\xc5\x03\x21\x88\x2c\ \x43\x50\xba\x46\xd0\xed\x09\x42\xe5\x9b\x42\x9b\x73\xfc\xa9\xcf\ \x5a\x1b\xee\x2a\x74\xc8\xbc\xc9\x45\x09\xa7\x6c\x93\xcf\x9b\x88\ \x27\xa7\x11\x18\x1d\xc3\x80\x6f\x08\xa2\xd6\xd6\x25\xc2\x51\xdb\ \x28\x12\x87\xc6\x1f\xaf\x82\x2f\x62\x94\x4d\x89\x24\x90\x22\xea\ \x52\x2d\x9a\x42\xab\xe8\x18\x79\x04\xa1\xc5\xcf\x10\x53\x74\xf6\ \x0d\xa3\xd3\xe1\x87\xd4\x3c\x80\x16\xbd\x03\x0d\x5d\x06\x14\xd5\ \x0a\x90\x91\x95\x0d\x2f\x79\xf1\xc6\xaa\xa9\xd4\xb3\x73\x0b\x4c\ \xc5\x94\xd8\xdd\xef\x85\xc9\x62\x05\xb7\xbc\x12\xa5\xe5\x95\x4b\ \x13\xf3\xcb\xab\x23\x0f\x01\x37\xd9\x11\xe6\xd9\x15\x84\x97\x15\ \x13\x06\xcb\x3c\xd0\x68\xf2\xa3\xdd\xee\x5f\x27\x96\x3b\x86\x20\ \xb3\x78\xd7\x7d\xe6\x08\xa4\xf8\x3c\x33\x1b\x2a\x8d\x36\xaa\xdc\ \x53\x33\x21\x8c\x8e\x8d\x33\x15\xd3\x26\xe4\x37\x09\xf1\xc1\xc5\ \x8f\x51\x73\xaf\x01\xbe\x65\x60\xfc\x11\xa0\x23\x13\x23\xf2\xce\ \xa1\xbe\x5d\xb9\xb8\x51\x01\x83\x81\x74\x74\x4d\xa7\x1e\x0a\x67\ \x80\xa9\xb8\xdd\xea\x83\xd8\xe8\x42\x93\xca\xcc\xf8\x7c\xe5\xcb\ \x2c\x88\xda\x24\x51\x89\xa7\x67\xe7\x18\x1b\x86\x86\x47\x60\x77\ \x38\x49\x82\x3a\x24\x7c\xf8\x21\xae\xb3\x0b\xe1\x99\x5c\x80\x6f\ \x09\xd0\x90\xde\xe1\x0f\x2c\x81\xab\x1f\xc4\x7d\xef\x04\xdd\x07\ \x1d\x61\xeb\xff\x9f\xc0\x1d\xb9\x16\x1d\xf6\x21\x48\xcc\xfd\x4f\ \x7d\xee\xd4\x22\x9d\x55\x84\xaa\x9a\xba\x4d\x3e\x47\xe4\x8e\xf8\ \x3c\x3c\x12\x84\xd3\xdd\x0f\xbd\xc1\x88\xc2\xe2\x62\x9c\x7e\x2f\ \x1e\x3d\x03\x01\xf4\x2f\x02\x83\x84\xbc\xc5\xff\x2d\xee\x3a\x43\ \x28\x51\x91\xf7\xf6\x05\xf1\x4e\xdc\xbf\x7d\x84\x33\x69\xe3\x20\ \x18\xf4\x33\xab\xe0\xc9\x54\x68\x35\x38\xd1\xd8\xdd\x0b\x9e\x58\ \x89\xac\x5c\xf6\x33\x3e\x47\xaa\x9e\x9c\x9e\x65\xe4\xee\xf7\x0e\ \xa2\xd7\x6c\x41\x43\x03\x1f\x27\x62\xe3\x20\xe9\xd6\xc0\x45\xcf\ \x01\x52\x90\x24\xb8\x86\xb2\x9e\x00\x6e\xb4\xdb\x50\xd1\x1b\x44\ \x85\xce\x8b\x4a\x7e\x0b\x6d\xbe\x9b\x5b\x27\xd1\xa0\x99\xf8\x16\ \x65\x22\x05\xee\x29\xf4\x28\x13\xc8\x90\x78\x35\x0b\x1a\xad\x3e\ \xaa\xdc\x63\x13\x93\xf0\x0d\x0d\xc3\x66\xef\x83\xb4\x5d\x8e\xc4\ \x4b\x97\x90\xc3\xca\xc3\xd4\x63\xc0\x4e\x7a\x49\x31\x4e\xfa\x89\ \x94\x7f\x5b\x3b\x84\x7c\x85\x13\x25\x6a\x1f\x4a\xd5\x03\xe8\xf2\ \x30\xa3\x28\x22\xf8\xf9\x33\x09\x74\x8f\x2e\xa1\xa8\xbe\x15\xa5\ \x7c\x09\xb2\x4a\x2a\xf0\xcf\xe3\x71\x51\xe5\xf6\x07\x46\xd1\xe7\ \xf2\x40\xab\x37\x20\xfd\x6a\x06\x92\xbf\x48\x83\xcd\x37\x02\x27\ \xa9\xda\x40\x1a\x4c\xe0\x7b\x88\x52\x9d\x1f\x45\xdd\xfd\x0c\x71\ \x41\x97\x1b\xc5\xdd\x1e\x88\x9c\x41\xfc\xf9\xcd\xb7\x5d\x84\xeb\ \x6c\xb4\x43\xd0\x28\xf7\x4e\x23\xa7\xfc\x1e\xb2\x4b\xab\xf1\x51\ \xea\x57\x48\xfe\x6f\xea\xfa\x58\x51\xb9\x47\x82\xe3\xf0\x0c\xf8\ \x60\x34\x99\x51\xc9\xab\xc2\xfb\x67\xcf\x41\xfe\x40\x03\x3f\xe9\ \x6e\xb2\x8d\x19\xb9\x6f\x69\x06\x19\xd2\x9b\x2a\x2f\x72\xe5\x0e\ \xe4\x75\xf6\xa1\xf0\xbe\x1b\x1c\x95\x1b\xf9\x9c\xca\x29\xc2\x53\ \xb8\xdd\x29\xdc\x2b\x76\x04\x90\x51\xc8\xc5\x95\x6b\x79\x38\x11\ \x9f\x80\x9b\xb7\x6e\x33\x63\x15\x91\xdb\x6a\x73\x40\x22\x6d\xc7\ \x85\x84\x0f\x50\x74\xbb\x0c\xf3\x2b\x80\x9f\x34\x58\xf7\x24\x20\ \x1c\x7c\x84\x4a\xd3\x18\x38\xfa\x61\x86\x9c\x56\xfd\x55\xb3\x1e\ \xac\x0e\x3b\xb8\x3a\x1f\xd9\x21\x1e\x7a\x2f\xe0\x13\xbc\xba\x5d\ \x02\x26\xbe\xc1\x83\x94\x6f\xd8\x38\x9f\x9c\x8a\x03\x7f\x3d\x04\ \x63\xaf\x99\xe9\x6e\x2a\xb7\x46\xd7\x83\xa4\xcb\xc9\x48\xff\x3a\ \x8b\x8c\xd5\x3c\x53\xb5\x71\xf6\xa9\xdc\x35\xf6\x69\x5c\x97\x59\ \x19\xd9\xbf\x6e\x21\xa7\xa0\xd4\x82\x74\xbe\x1a\x57\x9b\x34\x60\ \xc9\xcc\x10\xbb\x82\xf8\xe5\xaf\x5f\xa7\x67\xc0\x3b\xe1\x75\x1f\ \x35\xcc\x35\xdd\x66\x7c\x94\x96\x85\xb8\x73\x17\xf1\x97\x43\x31\ \x4c\xd5\x74\x99\xf0\xaa\xaa\x71\xfa\xf4\x19\x68\xcc\x0e\x8c\x92\ \x2d\x36\x14\x1e\xab\x5a\xc7\x0c\x78\xe6\x71\x70\x0d\x23\x4c\xa3\ \x65\x8a\x0c\x8c\xec\xb4\xfa\x9c\xb6\x5e\x94\x74\x39\xd0\x66\xf7\ \xaf\x1e\x3d\x11\x4b\x47\x2e\x6f\xc3\x79\x13\x35\x2c\x5c\x99\x1a\ \xf1\x97\x3e\xc7\xd1\xd8\x33\xf8\x38\x31\x09\x86\x5e\x13\x1a\x9b\ \x04\xf8\xdd\x1b\xfb\x51\x4f\xd4\xf1\x90\x99\xee\x9a\x00\xaa\xad\ \x93\x60\x2b\x5d\x0c\x39\xf5\xbc\xf0\xbe\x67\xbd\xea\xcc\x16\x3d\ \x4a\x55\x1e\x08\x6d\x01\x94\xd4\xf1\x43\xe1\x65\x53\x40\xf0\xca\ \xf7\x25\x60\x2b\x6e\x6a\xc7\xa9\x84\x44\xc4\x1c\x39\x8a\xdc\x7c\ \x36\x5a\x5a\xc5\x38\x14\x13\x83\x2f\x39\x35\xc8\x14\x6a\x98\xe6\ \xa2\xd5\xd2\x27\xf5\x9a\x7a\x4c\x13\xa1\x49\x64\xb7\x99\x90\xdb\ \x6e\x46\xb9\xda\x8d\x06\xa5\x76\x39\x2c\x39\x3d\xf9\x4e\x13\xec\ \xd9\x72\xd4\x47\x0d\x3b\xab\x46\x88\x63\xff\x39\x8f\xdf\xee\xfb\ \x3d\x1a\xf9\x02\x9c\xbf\x90\x80\x93\xf1\x17\x70\xa3\xad\x07\x19\ \xc4\x4f\x4a\x14\xe9\x6e\xba\x58\xa8\xef\x2c\xfa\x94\x98\x50\x28\ \xb7\x40\xe9\x0e\x3c\xf9\x57\xec\x29\x2a\x77\x2d\xc1\x67\x04\xfb\ \xb6\xb9\xe4\x44\x8d\xbe\xcc\xb2\x5a\xfc\xe3\xe4\x19\x1c\x3c\xf4\ \x37\xb0\x72\xf3\xb0\xef\xc0\x1f\x50\x20\xd1\x21\x89\x27\x65\x2a\ \xa6\x4b\x85\x3e\xbf\x21\xd5\x46\xe4\x2e\x90\x5b\x21\xb0\x0c\xae\ \xe5\xdc\xe2\xd2\x11\x13\x13\xe4\x87\x6f\x3c\xaf\x3c\xe7\x96\x15\ \x35\x9c\x69\x45\xe5\xf8\xfb\xb1\x58\x1c\x3f\x19\x87\x37\xf6\xef\ \xc7\x8d\x3a\x11\x92\xab\xa4\x0c\x21\xed\x70\xea\x35\x55\x21\x8b\ \x34\x5b\xc9\x03\x37\x2a\x34\x6e\xd4\x49\x3a\x17\xc3\x72\x73\x08\ \x8e\x6d\x95\xfb\x87\x24\xe0\x4a\x65\x73\x70\xe4\xf8\x29\x1c\x3e\ \x7c\x98\x8c\x63\x2e\x32\x05\x2a\x5c\x22\xd5\xd3\x5d\x7e\x4d\xdc\ \x0b\x36\xe9\x74\x76\xa7\x1d\x77\x8c\xe4\x88\xb6\xf9\x9e\x84\xb7\ \x1a\x95\xfb\x22\xbd\x49\xfd\x80\x0b\x6d\xf4\x04\x32\x4a\x78\x4c\ \x0f\x9c\x4b\x49\xc3\xb5\xa6\x2e\x7c\xc2\x6d\x65\x36\x59\xf1\x83\ \x01\x5c\x97\x9a\xc1\x51\x7b\x20\xf3\x04\xd7\xce\x25\x26\x05\x36\ \xc8\xfd\xc7\x9d\xc8\x1d\xd5\x82\xdc\x1a\x01\xce\x5e\x4e\x45\x81\ \x58\x85\x78\xf6\x5d\x5c\xa9\x55\x90\xaa\xfb\xc0\x96\xdb\x50\xad\ \x75\xe3\xae\x54\x41\x2f\x10\xca\x0d\x72\xbf\xba\xd3\x6a\xa3\x05\ \xb7\xa2\x51\xf8\x1d\xaf\x43\x8d\x4f\xb9\x2d\x88\xcb\xe6\xe1\x9a\ \x48\x8f\xaa\x1e\x2f\x9a\x35\xe6\xc7\x7f\x7a\xf3\x2d\x57\x78\xac\ \xa8\xdc\xaf\xbd\xac\xdc\xd1\xe2\x08\xdd\x05\x5c\x75\x1f\xde\xcb\ \xaf\x45\xb9\x76\x00\x32\x67\x60\xf5\xc2\xa7\x97\xa9\xdc\xf7\x08\ \xd2\xa9\xdc\x3b\xf8\x03\xf3\xc2\xf1\x13\x82\xca\x1c\xee\x9d\x50\ \x0b\x39\x94\xb8\x0d\xc2\xc8\x16\xa3\x17\x87\xc3\x2f\x22\xf7\x0e\ \xff\xda\x6d\x8a\xdd\x61\x99\xd5\x1b\xb6\xd8\x6b\xbb\x5e\x32\xbe\ \x2f\x89\xff\x01\x66\xb9\x5f\xfc\x11\x80\x3d\xcf\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x2b\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\xbd\x49\x44\x41\x54\x58\xc3\xed\ \x57\x6b\x4c\x93\x57\x18\x3e\x23\x71\xc9\x32\xe9\x16\x97\xa8\x54\ \x65\x38\x9d\x02\x15\xf6\x03\x87\x32\x93\x01\x66\x2c\x5b\x70\xc4\ \x30\xff\x60\xa2\x2e\x1a\x3a\x1d\x4e\x03\xba\x31\x89\x5b\xb3\x80\ \xd9\x0c\x84\x02\x19\x58\x1c\x14\x8b\x85\xb2\x82\x95\x5e\xe4\x66\ \x0b\x8e\x31\xf8\xc3\x46\xcb\x2d\x81\x15\xdc\xa8\xc2\x1c\x1b\xb7\ \x6a\x69\x91\xf2\xee\xbc\x87\xaf\x0c\xdc\xb8\x0d\x61\xd9\xb2\x93\ \x3c\xed\x97\xf3\x7d\xfd\xde\xe7\xbc\xef\xf3\x5e\x4a\x00\x80\xfc\ \x93\x20\xff\x0a\x02\x74\x09\x28\x44\x14\xd9\x14\x71\x14\x01\x2b\ \x46\x80\xae\xdd\x64\xdd\xc6\x66\x22\x4c\xf8\x95\xc4\x8b\x47\xc8\ \xa1\xd3\xf7\xc8\x8e\x97\x3b\x38\x32\x61\x2b\x41\x20\x85\x9c\xbe\ \x30\x48\x2e\xdd\x80\x19\x40\x32\xab\x79\x4d\xf4\xbe\xfb\x72\x13\ \x68\x64\x06\x91\x04\x5e\xa3\x51\xf4\x06\xee\x85\x47\xf5\xd0\xbd\ \x83\xcb\x4d\x20\x9b\x9d\xf6\x40\x74\x2f\xbd\x16\x32\x3d\x20\x89\ \x3f\x48\xa5\x2c\x1b\x01\x8c\x31\x79\xc1\xbb\x9d\x88\x4b\xc6\xd7\ \xc6\x26\x0e\xa0\x10\xb9\xfd\x42\xfe\xc5\x2b\x36\x46\x8c\x12\x5c\ \x4e\x02\x93\xa7\xa7\xa7\x0d\xcc\xd3\x39\xb9\x98\x63\x36\x14\x0a\ \xd2\xe4\xa3\x2b\x41\x20\x8c\x29\x9e\x2a\xdf\x37\x47\xeb\xdc\x7b\ \xb5\xcc\x89\x9e\x40\x44\x96\x54\x83\x2b\x2c\x0b\x36\x46\x48\x08\ \x13\xf5\x64\x2a\x7b\x2e\x54\x03\x01\xf8\x03\x37\xbf\xc0\x0e\x34\ \x2a\x54\xdf\x62\x88\x52\xd5\x2c\x58\x03\x74\x1d\x16\x08\x04\x7a\ \x45\x55\xf5\xc8\xa0\x6d\x74\xc2\xd4\x73\xf7\x21\xbe\x73\x51\x95\ \x90\xae\x8f\xd0\x13\xcf\xe5\x94\x83\x87\xb4\x02\x9e\xcc\x2e\x03\ \xd4\x06\xdd\xaf\x99\xcb\xb0\xaf\xaf\xaf\x3e\xbf\xd2\x60\xb5\xdb\ \xed\x80\xf8\x79\xe4\x3e\xc4\x5e\xab\xb4\xb9\x88\x2f\x86\x80\x27\ \xd3\xc0\x67\xf9\x8e\x19\xf5\x60\xd7\x5e\x33\xba\x76\xda\x73\xee\ \x68\xd8\xc7\xc7\x47\x9f\xab\xab\xb0\x0e\x0f\x0d\xc1\x10\x87\xb2\ \xf6\x2e\xe7\x96\x37\xf7\x77\x73\x61\xd8\xbd\xe8\x5e\x80\x2f\x66\ \x9a\xa0\x86\xdf\xa9\x36\x42\xf7\xf0\x03\xd8\x19\x9f\xd4\xcf\xa5\ \xe7\x1a\x8a\x98\x2d\x7e\xfe\x6d\x97\x54\x1a\x6b\x5f\x5f\x1f\xb8\ \xd0\xd1\x73\x07\x62\x72\x15\x56\x4e\xc4\x87\x97\xd4\x8c\x30\x14\ \xe9\x15\xb7\x1e\x38\x1c\x0e\x40\xa4\xd6\x19\x31\x9e\x85\x9b\x05\ \x7e\x6d\xa9\x25\x1a\x5b\x97\xd9\x0c\xe6\x2e\x0a\xf3\x24\x14\xdf\ \x36\x8e\x7b\xbd\x1e\xd1\xcd\x42\xc8\x09\x6f\xa9\x04\x3c\xd1\xbd\ \x56\xab\x15\x10\x77\x7f\x1b\x84\xf3\x92\x5c\xbb\x52\xa9\x84\xfa\ \xfa\x7a\x30\x99\x4c\x0c\x75\xdf\x35\xc1\x51\xb1\x64\x18\xc9\x51\ \x44\x3e\xb6\x76\xcc\xb4\x40\x4f\x93\x5f\x7e\xd3\xd6\xdf\xdf\x0f\ \x32\x99\x0c\x44\x22\x11\xa8\x54\x2a\x90\x4a\xa5\xa0\xd1\x68\x20\ \x4b\x5b\x39\xbe\xe9\x95\xe0\x1f\xb8\x53\xaf\x79\x2c\xf3\x00\x97\ \x8e\x22\x9e\xc7\x86\xe6\x53\x29\x19\xf6\x82\x82\x02\xe6\xe2\xa0\ \xa0\x20\xe0\xf1\x78\x60\xb1\x58\x40\x5b\x5e\x01\xfb\xcf\x26\x0c\ \x2d\xa6\x53\xce\x67\x94\xcf\x09\x4c\x83\xe2\x5b\x7b\xe6\xc2\x60\ \x9a\xb2\x14\x14\x0a\x05\x88\xc5\x62\xc8\xcc\xcc\x84\xa2\xa2\x22\ \x50\xab\xd5\xd0\xd9\xd9\xc9\x60\xec\xfe\xc9\xb9\xc9\xdb\xa7\x75\ \x2e\xb7\xcf\x4b\x80\xae\xb7\xd8\x29\x70\x0e\xc0\x6a\x97\xac\x78\ \x88\xca\x7f\x82\xe2\x29\x89\x0e\x3e\x97\x2b\x21\x5b\x96\x0f\x07\ \x63\xe3\x47\x84\x1f\x26\xd8\x92\x72\x64\x8e\x6f\x1a\xbf\x07\xa3\ \xd1\x08\x2d\xad\x2d\xf0\xcb\xc0\x20\x1c\x38\xf1\xbe\x05\xb3\x62\ \xc1\x04\x5c\x69\x84\x85\x85\x84\x46\xdc\x26\xe7\x32\xac\x2c\xcf\ \x33\xb5\x13\xec\x3b\xe3\xba\xd3\x33\xaf\x82\xe5\xfe\x7a\x89\x06\ \x9e\xde\xfc\x62\x1b\xf7\x3c\x92\x8d\x7b\x66\xab\x4f\x5b\xca\x35\ \xed\x58\x43\x43\x3d\x34\x34\x34\x80\xa5\xb7\x17\x32\x14\xc5\xc3\ \xf3\xe9\xc0\x65\x3c\x92\xe5\x28\x9e\x36\x5d\xe5\x9c\x2a\x32\x78\ \x7d\xf4\x83\x2e\x5a\x6c\x12\x31\x0c\x1b\x25\xea\x71\xf7\x2f\xcb\ \x27\xef\x05\x87\x5f\xfe\xd3\xe4\x44\x0b\x4c\x68\xf4\xc9\x3e\x75\ \x95\x1e\x0c\x06\x03\xb4\xb7\xb7\xc3\xd7\xc6\x96\x31\xae\x81\x09\ \x66\xf1\x36\x6d\x38\x68\x3c\x49\x3a\x3a\x65\xf8\x62\x81\x83\x44\ \xbd\x57\x43\xb6\x0a\x5e\x9b\x2a\xc3\x94\x5c\xb0\x42\x0f\xab\x24\ \xb4\x04\x9f\x4a\xaa\x9b\x43\x37\x31\x28\xd4\x4f\xf2\x0a\xc7\x74\ \x3a\x1d\xd4\xd6\xd6\x82\xc9\x7c\xdb\xb9\x61\x9b\xf7\x5f\xea\x62\ \xb2\xe5\x7e\x9c\x75\x1f\x0d\xf3\xb2\xd4\x4e\xf2\xf6\xb1\xeb\x2e\ \xb6\xae\x94\xc3\x90\x6c\x97\x55\xc1\x4b\x57\xab\x80\x9c\x4d\x6e\ \x5a\xd0\x1c\x49\xbd\xb1\xe7\x88\xb0\xef\xca\x57\xc5\x50\x5a\x5a\ \x0a\x1d\x3f\xf6\x4c\x04\x06\x87\x74\x3c\xaa\x0b\xc2\x84\x46\x8d\ \x07\xc8\x6f\x02\xd9\xf9\xaa\x7e\x9a\xf1\x30\x46\x8e\x36\x20\xaf\ \xbc\x4a\x78\x43\x69\x00\x92\x28\x1d\x98\xcd\x95\xb3\x79\xc3\x7d\ \x3d\xbf\xf9\x44\x6a\xa6\x5d\x2e\x97\x43\x53\x4b\x2b\x44\x1c\x7b\ \xf7\xce\xf4\x14\x25\xae\xf1\x8a\xf5\x77\x9c\xf5\x70\x02\xc2\xd9\ \x0f\x89\xd1\x81\x03\x4f\x8e\xf7\xdc\xd2\x69\xe7\xf3\xdf\x75\xfc\ \x6f\x14\x2e\x36\xd2\xef\xd8\x17\x69\x49\xbe\x2c\x9d\xc8\xd3\x96\ \x3b\xa7\x0f\x31\x8c\x25\xc6\xdf\x9f\xba\x77\x5f\x71\x35\xa0\x41\ \x6c\xb5\x08\x8c\xf9\x94\xf1\xe0\xf0\x33\x4b\x9a\x7c\x68\x13\x5a\ \xbd\xce\xa3\xd9\x6b\x4f\x48\xf7\x0c\x0f\xb0\x0f\xfe\xf3\x87\xc8\ \xf9\x2f\xee\xb9\x49\x6e\x00\xf6\x7b\x3e\xed\xf7\x08\x1e\x2a\x3e\ \x5d\xe5\x58\xaa\xf1\x47\x5a\xf5\xb6\x59\x0b\x11\x1d\xb3\x43\xc9\ \x91\x38\x09\x39\xf9\xa9\x96\x21\xfa\x5c\x1a\x0d\xcf\xb3\xff\xff\ \x37\xfc\x4f\x13\xf8\x1d\xe7\x87\x19\xb9\x44\xc3\x01\xcf\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x3a\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\xcc\x49\x44\x41\x54\x58\xc3\xb5\ \x97\x5d\x4c\x5b\x65\x1c\xc6\x77\x6f\xbc\xd9\xe5\x12\x49\x20\x71\ \xd7\x26\xe3\x4e\x13\xb8\x70\xd1\x85\x44\xbd\x50\xe3\x10\x18\xe5\ \x2b\x2e\x26\x4a\x04\x27\x86\xaa\x8b\x99\xe0\xd0\xa2\x6c\x19\x86\ \x39\x17\xdc\x1a\x16\x98\x80\x40\x6c\xa6\x43\xca\x20\x2b\x83\x1e\ \x28\xcc\xda\xd1\x96\xd2\xd2\x4a\x7b\xfa\x01\xa5\xd0\xef\x16\x1e\ \xdf\xff\xdb\x1d\xc7\xcc\x04\x2a\x87\x93\x3c\x39\x6f\x21\x9c\xe7\ \xf7\x3c\xef\x47\x0f\x87\x00\x1c\xca\x46\xcf\xbd\xfa\xe9\xbb\x4c\ \x5a\x26\x61\x0f\x6a\x60\xca\xd9\xe9\x79\xd9\x9a\x3f\x5d\x50\xf2\ \xa5\xc1\xe9\x8f\xa7\x57\xc3\x40\x30\x02\x84\xa2\x19\xad\xc7\x32\ \x8a\x27\x81\x58\x22\x73\xbf\x79\x6b\xda\x4b\x10\x72\x02\x1c\x7b\ \xe7\xac\xda\x1c\xd8\xc8\x98\x12\x40\x84\x99\x85\xe3\x19\x91\x31\ \x29\x1a\x4b\x61\x25\x94\x44\x38\x9a\x42\x73\x87\xc6\xbe\x13\xc4\ \xff\x02\x90\x12\x93\x79\x24\xf1\xc8\x58\x92\xcf\x1f\x84\x5d\x8c\ \xc2\xe5\x09\x22\x12\x4b\xa3\xf4\xc3\xef\x4d\x34\x75\x59\x01\xb0\ \xeb\xd8\x36\xd5\x90\x9e\x3a\xfc\xcc\xb9\xe7\x5f\x2e\x11\x3f\x56\ \x9e\x45\x45\x55\x0d\x2a\x99\xde\xaf\xad\xc3\x9d\xb1\x89\xc7\x00\ \xac\xb6\x25\xfc\xb9\xe8\x87\x6b\x15\x58\xf6\x04\x10\x08\xc6\xd2\ \xaf\x9c\xbe\x70\x9f\x41\x1c\xd9\x15\x80\x5d\x87\x99\x1a\x8a\x8a\ \x8a\xcc\x92\x5a\x5b\x5b\xdd\xa4\xaf\x55\xad\xfe\xaf\x54\xdf\xa6\ \x06\x06\x06\x31\x39\x35\x85\xd9\xb9\x39\xe8\x26\x26\x50\x50\x50\ \x80\x21\xcd\x6f\x7c\xde\x49\xa6\xf9\x05\xcc\x98\x5c\x1c\xc0\xe1\ \x4f\x41\xf4\x85\xf0\x43\xaf\xce\xcd\x00\x6a\xf6\x02\x50\x43\x66\ \xd8\xe5\x8a\xc7\xe3\xf0\x7a\xbd\x48\xa7\xd3\x98\x9c\x9c\x44\x65\ \x65\x35\x66\x67\x8d\xbc\x81\x07\x66\x1b\x74\xd3\x16\x0e\x40\x32\ \x2d\x78\xf0\xdd\x8d\x51\x8f\xac\x00\xe1\x70\x18\x46\xa3\x91\x8f\ \x53\xa9\x14\x7e\xea\xed\x45\xe3\x27\x9f\x61\x86\x41\x38\x96\xdc\ \x50\x77\x75\xe3\x4c\x43\x23\xce\x35\x9d\xc7\xed\x91\x71\x5c\xbc\ \x3e\x2c\x2f\xc0\xc6\xc6\x06\xf4\x7a\xfd\x63\x40\x7d\x7d\xfd\x50\ \x32\x88\xd0\x46\x1c\x66\x9b\x0b\x82\xc1\x88\xa9\x19\x13\xac\x0e\ \x11\x97\xba\x64\x6e\x80\x00\xa6\xd8\x3a\xd8\x7e\x45\x22\x11\x94\ \x2b\x2a\x30\xae\x13\x40\xe7\x04\x6d\x57\xda\xaa\x34\xbe\x7c\x53\ \xe6\x35\x40\x66\x3a\x9d\x0e\xc3\xc3\xc3\xe8\x65\xf5\xf7\xf7\xf7\ \x43\xab\xd5\xa2\xaa\xba\x06\x63\x77\xf5\x90\x0e\x2a\x77\x90\xed\ \x04\xb6\x0e\xda\xbb\x65\x06\xa0\x79\xb7\xdb\xed\x18\x1a\x1a\x42\ \x67\x67\x27\x7a\x7a\x7a\x38\x50\x49\x69\x19\x6e\x69\xf5\x10\xd7\ \x00\x6f\x08\xb0\xf9\x00\x67\x00\xb8\xd0\x25\x33\xc0\xd6\xd6\x16\ \xdf\x09\x81\x40\x00\xa2\x28\xc2\xef\xf7\x63\x6d\x6d\x0d\xa7\x14\ \x95\xd0\xfc\xae\xe7\xa9\xc9\x7c\xc1\x0b\x98\x3d\x40\x9b\xdc\x00\ \xdb\x41\x36\x37\x37\xf9\x76\xa4\x56\x14\x15\xd5\xe8\xfb\x55\xe0\ \xa9\x1d\x81\x47\x00\xe7\x3b\x0f\x00\x80\xcc\x25\x80\x24\x33\x4f\ \x24\x12\x28\x2b\xaf\xe2\x00\x7f\xb8\x00\x8b\x98\x01\xa0\x36\x5a\ \xd5\x07\x30\x05\xff\x98\x27\x93\x3c\x3d\x4d\x49\xc9\xa9\x4a\x0e\ \xa0\xb7\xb3\x03\x89\x3d\xc5\xf8\x17\x30\xb1\x00\x7c\x71\xf5\x00\ \x00\xa4\xea\xc9\x98\x14\x8b\xc5\x50\xa6\xa8\x82\x7a\x48\xc0\x98\ \x19\xb8\x6b\x05\xe6\x9c\x99\xfb\xe7\x57\x64\x04\x90\xd2\x53\x6a\ \x02\x88\x46\xa3\xdc\x3c\x14\x0a\xa1\xb8\xb4\x02\xd7\x06\x05\xdc\ \x66\x87\xe4\xa0\x01\x1c\x64\xc4\x04\x28\x3b\x64\x06\x48\x3d\x9c\ \x73\x12\x99\xd3\xb9\x40\x20\xc5\x65\x55\xb8\xd8\x2d\xa0\x7f\x3a\ \x63\xae\x7d\x90\x69\xe0\xa3\x76\x99\x00\xfe\x5d\x3d\xa5\x26\xad\ \xae\xae\x72\x88\xb7\x4a\x2a\x70\xb9\x57\xc0\x3d\x1b\xb8\x7e\x9e\ \x01\xee\xcc\x03\x67\x2e\xed\x13\x40\xaa\x9d\x44\x8b\x8e\x92\xd3\ \x71\x4c\xdf\x01\x2b\x2b\x2b\x58\x5f\x5f\xe7\x10\x27\x59\x03\xdf\ \x74\x09\x50\x4f\x00\xbf\xcc\x65\x1a\xb8\x32\x06\x34\xec\xa7\x01\ \xc9\x58\xda\xeb\x64\x4e\x69\x29\x39\x1d\x44\x04\x40\xf5\xd3\xcf\ \xde\x7c\x5b\x81\x96\xeb\x02\x4f\x7e\x75\x1c\xb8\x71\x0f\xf8\x71\ \x2c\x9e\x7e\xbd\x4e\x6d\xa6\x37\xaa\xac\x00\x9e\x64\x2c\x6d\x37\ \x32\x25\x00\xd1\x23\xf2\xe4\x12\xcc\x1b\x27\x15\x68\xef\x11\xa0\ \xbc\x66\x5b\x7f\x4f\x35\xe2\x3c\x71\x9a\xbf\x8e\x69\xf7\xfc\x4a\ \x26\x01\x90\xa9\x24\x69\xb5\x53\x42\x32\x0f\x06\x83\x70\xb9\x5c\ \xdc\x90\x5e\x4a\xe8\xb3\xc7\xe3\x81\xdb\xed\xc6\xf1\x13\xaf\x25\ \x9f\x7d\xa1\x9c\x4c\x3b\x98\x8a\x99\x8e\x3e\xc9\x78\x47\x00\x95\ \x4a\xc5\x01\xa4\x15\x2e\xcd\x37\x19\x52\x52\x3a\xf7\x29\xb5\xc3\ \xe1\xe0\x22\xe3\xc5\xc5\x45\x0e\xf5\xe2\xf1\x97\x5c\xf4\x1e\xb9\ \x93\xe9\xae\x00\x2d\x2d\x2d\x6e\xe9\x60\xa1\xd4\xd2\x97\x0d\x8d\ \x97\x97\x97\xe1\xf3\xf9\x60\xb3\xd9\xf8\x7d\x69\x69\x89\x43\x10\ \x00\x8d\x0b\x0b\x0b\xcd\xb2\x00\xd0\xa2\x92\x52\x93\x11\x8d\xe9\ \x4e\xdf\x78\x54\x3b\x35\x60\xb5\x5a\x79\xf5\xd4\x0a\xfd\xce\x60\ \x30\x24\xf2\xf2\xf2\xee\xb3\x67\x1c\xd9\x17\x40\x53\x53\x93\x5b\ \x9a\x67\x4a\x4f\x22\x13\xaa\x9a\xc6\x16\x8b\x99\x37\x40\x9f\x47\ \x47\x47\x23\x6d\x6d\x6d\xde\xfc\xfc\x7c\x13\xfb\xdb\x41\xa6\xb2\ \xbd\x9a\xff\x27\x40\x73\x73\x33\x9f\x02\x4a\x47\x10\x54\x3f\x55\ \x3f\x3f\x3f\xcf\xeb\xd6\x68\x34\x91\xba\xba\x3a\xe7\xc3\xb4\x5d\ \x4c\x1f\x30\x1d\xcd\xc6\x78\x47\x00\xa5\x52\xe9\x76\x3a\x9d\xbc\ \x62\x4a\x4a\x6f\x3e\x94\xb4\xbe\xbe\xde\x99\x93\x93\x23\x99\x16\ \x67\x53\x75\x56\x00\x8d\x8d\x8d\x6e\x8b\xc5\x82\x81\x81\x81\x48\ \x6d\x6d\xad\x33\x37\x37\x57\x56\xd3\xdd\x00\xf8\x7f\x46\x4c\xc2\ \x41\x99\x6e\xd7\xdf\x43\x39\x56\x18\x85\x70\xc8\x04\x00\x00\x00\ \x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x06\x6d\ \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\x06\x34\x49\x44\x41\x54\x78\x5e\xad\x97\x5b\x6c\x54\xc7\ \x1d\xc6\x7f\x73\xce\xd9\x8b\xbd\xf6\xfa\x16\xa0\xbe\x00\x0e\xb2\ \x69\x63\x24\x42\x4a\x21\x22\xa1\x2d\x95\x62\xa5\x2f\xee\x4b\x68\ \x2b\x95\xa6\x55\xa5\xc6\x60\x55\xaa\xda\xb4\xaa\xfa\x56\x09\x55\ \xca\x03\x94\x27\xda\x07\x84\x14\x29\xad\xc4\x8b\xa5\x52\x83\x79\ \x08\xc5\x18\x39\x0e\x69\xd3\x84\x9a\x9b\x63\x6a\xec\xb2\x04\x1b\ \x3b\xbb\xf6\x7a\x8f\xbd\xbb\xde\xb3\x67\xa6\xc3\x68\x85\xe5\x72\ \x6c\x88\xc9\x27\x7d\xfa\x9f\x9d\x87\xfd\x7e\xf3\x9f\x99\x73\x11\ \x4a\x29\x82\x24\x84\x78\x05\x78\x9e\xc7\x6b\x48\x29\xf5\x77\xd6\ \x28\x27\x20\xb8\x43\xbb\x01\x68\x97\x52\xbe\xc6\x63\x64\x59\xd6\ \x07\x1a\xf6\xbb\x40\xb7\x06\x39\xff\x14\x00\x26\xfc\xb7\xed\xf5\ \xe2\x60\x5d\x44\x44\x6e\xce\x89\x8a\x2b\x57\xae\x50\x5d\x53\x8d\ \x40\x00\xa0\x50\x08\x65\x28\x41\x29\x66\xd3\x69\x5e\xa9\x17\x2f\ \xbc\xb4\x4e\x6c\x3b\xf1\x1f\xb9\x47\x83\x7c\x5b\x43\x4c\x3c\x4d\ \x07\xf6\xff\x60\x8b\xdd\x2c\x25\xf8\x4a\x32\x3c\x3c\x4c\x65\x65\ \x25\x2b\xc9\x75\x5d\x1e\xc0\x6e\xa9\xb0\x22\x1b\xa2\x2a\x72\x3f\ \xa7\xea\x81\xb5\x03\x08\x2d\x05\x48\xa1\x0d\xf4\x5d\xbc\x48\x2e\ \x97\xc3\x2f\x16\x51\x4a\x91\xcf\xe7\x59\x5c\x5c\xa4\x50\x28\x50\ \xd4\x63\xb5\xb5\xb5\x94\x01\x58\x80\xf8\x82\xf6\x80\x01\x00\x36\ \x44\x05\x1f\x0f\xbc\x4b\x3e\x3b\x8f\x85\x44\x95\x32\xe2\xb6\xc4\ \xb6\x04\x21\x21\x70\x3e\x53\x6c\x8c\x3b\x80\x44\x2a\x04\xf0\x9c\ \x10\x02\xe0\xcb\x40\x05\x50\x0f\x34\x60\xc4\x48\x69\x9f\x24\x02\ \x01\x4e\x9c\x38\x21\x00\x81\x05\xd2\x87\x96\x96\x67\x09\x65\x6d\ \x14\xe5\x28\xa5\xb4\x41\x08\x58\x57\x19\x25\xe2\xd8\x44\x42\x16\ \xc3\x13\x73\x5c\xbc\x3d\x41\xf7\x58\x8e\x5c\x24\xbe\xa9\xbd\x7d\ \xf7\xef\x2d\xcb\x5a\xdc\xb1\x63\x47\x59\x55\x55\x95\xd3\xd8\xd8\ \x18\x7e\xe0\x86\x86\x86\xd0\xa5\x4b\x97\xdc\xae\xae\xae\x08\xf0\ \xd6\xaa\x1d\x00\x13\x44\x55\x2c\xc2\x73\xd5\x31\xf2\x9e\x4f\xa1\ \x28\x91\x4a\x61\x09\x41\xd8\xb1\x88\x86\x6c\xe6\x72\x05\x12\xa2\ \x8e\x3f\x9f\xff\x2b\x0d\x4d\x1b\x01\x22\xc0\x66\x96\x84\xef\xfb\ \x78\x9e\x47\x75\x75\xb5\x9e\x50\x4b\xf4\xea\xd5\xab\x87\x84\x10\ \x28\xa5\xde\x5a\x11\xc0\xb2\x41\x00\xb6\x2d\x90\xda\xb6\x14\x38\ \x08\xa4\x12\x58\xc2\x8c\x1b\x8f\x4c\xb9\xec\x7b\xf5\x3b\xd4\x37\ \x36\x11\x7c\x2f\xc1\x84\x67\x32\x19\xca\xcb\xcb\xcd\x66\x3e\x76\ \xec\xd8\x26\xbd\x7f\x0e\x2e\x41\x2c\x01\xd0\xd9\xd9\xa9\x0e\x1d\ \x3a\xa4\x6c\x21\x08\x59\x10\xb6\x2d\x1c\xc7\xc6\x42\x50\xb4\xcd\ \x1a\x1b\x00\xc7\xb2\x88\x38\x96\xae\x02\x60\x59\x78\x10\xc0\xdc\ \xdc\x1c\x35\x35\x35\x06\x20\x1a\x8d\x72\xe4\xc8\x91\xcd\xc0\x03\ \x88\x1b\x1a\xa2\xc7\x62\xb9\xb0\x6d\x74\x30\x66\x8d\xcb\x23\x36\ \xb1\xa8\xa3\xc7\x2c\x32\x8b\x1e\x93\x99\x1c\x63\xa9\x79\xee\xcc\ \x2e\xe8\xdf\x45\x72\xf9\x3c\xab\xc8\x2c\x41\x36\x9b\x35\xa7\x66\ \xe9\xff\x6d\x0e\x1c\x38\xb0\x1e\xe8\x00\x58\x06\xa0\xb4\x74\x16\ \x8e\x0d\xe1\x90\xc0\x53\x8a\xb1\xa4\xcb\x8d\x8c\x83\xd3\xb2\x97\ \xa6\x7d\xaf\xb3\xb5\xe3\x17\xac\xdb\xfb\x3a\x0d\x2f\xb4\x73\xfb\ \xce\x24\xfd\xfd\xfd\x24\x93\x49\x94\x52\xe6\xfa\xf8\xf1\xe3\xe8\ \xba\xac\x33\xe7\xce\x9d\xe3\xe8\xd1\xa3\x1c\x3e\x7c\x98\xde\xde\ \x5e\x12\x89\x84\x04\x2c\xa1\x15\xdc\x01\xed\xff\xce\xe6\xf8\xe7\ \x94\x4f\x6b\xc7\xcf\xf8\xe6\x2f\xdf\x26\xf6\xf5\x37\x99\x7c\xa6\ \x83\x6b\xfe\x2e\xae\xf1\x2d\x64\x6b\x17\xad\x7b\x7f\x4e\x5e\x56\ \x73\xfa\x6f\x67\xd1\x77\x4d\xee\xdc\x9d\xe2\x1b\xaf\x76\x72\xfd\ \xfa\x75\x03\xa0\x67\x6b\xd6\x3f\x16\x8b\x99\xeb\x78\x3c\x8e\xe3\ \x38\x25\x38\x04\xc0\x23\x00\x96\x25\x98\xca\x41\x3a\xde\xca\xfe\ \xdf\xbd\x4d\xd5\xae\xd7\x28\x84\x62\x08\xdb\x42\x59\x82\x6c\x41\ \x72\x7f\x66\x91\x4f\xee\x66\x18\xb8\xea\x72\xfa\x1f\x61\x64\xd5\ \x5e\xae\x8f\xdc\x67\x32\xd7\xc6\x85\x0f\xee\x9b\x00\xed\x87\xa1\ \xcd\xcd\xcd\xb4\xb5\xb5\x19\x37\x35\x35\xa1\xa1\x14\x20\x83\x1f\ \x46\x16\xdc\x71\x15\xdf\xff\xe9\x6f\xa8\x6c\xd8\x48\xe2\xec\x3b\ \x4c\x8f\x5e\xc3\x89\x94\xb1\xb5\x79\x07\x9b\x5b\xb6\xf3\x49\x79\ \x25\x63\x09\x97\xcf\x66\xf2\xdc\x9d\xce\x32\xa1\xed\x88\x0d\x4c\ \x27\xe7\xd8\xb7\x2b\xca\xfa\x25\x00\x33\x7b\x3d\x6b\xea\xea\xea\ \x00\xcc\x75\x2a\x95\x32\x00\x4a\x2b\x10\xa0\xb9\x5a\x70\xe1\x9d\ \x63\x28\x2c\xca\xe6\xc6\xd9\x10\x8f\x52\x94\x92\x7b\xc3\x7d\x24\ \x65\x05\xdb\xda\x7f\x4c\x4d\xdb\xcb\x7c\x3c\x9c\x66\xd2\x5f\xc0\ \xcd\x78\x2c\xcc\x6b\x2f\x78\x20\x00\xb5\x74\x3a\x42\xa1\x90\x09\ \x2d\xdd\xea\x1f\x8e\x01\x2a\xf8\x3e\x60\xc1\xc6\xb8\xa0\x50\x1c\ \x23\x1c\x8b\x53\xb7\xa5\x96\x92\x78\x76\x7d\x05\xe9\xac\xc7\x68\ \xff\x9f\x98\xae\xbc\x4c\xcb\xf6\x83\xb8\x0b\x61\xbc\x82\xa4\x58\ \x94\x78\xda\x21\xc7\x42\x2d\xaa\x80\xe3\x69\xa0\x96\xd5\x15\x01\ \x00\xd6\xc7\x43\x84\xca\x23\xfc\xbf\x6a\x63\x21\x9e\xa9\x0c\x73\ \xe1\xdf\x83\xec\xd9\xf9\x13\xca\xa3\x0e\xb9\x32\x47\x03\x28\x03\ \x61\x6b\x00\x16\x4b\x21\xa5\x1c\x25\x30\x2a\x15\xa4\x5c\x05\x40\ \x58\xa5\x2a\xcc\xf5\x23\xfa\x70\x6c\x86\xf1\x59\x8f\xef\xfd\xfa\ \x8f\xdc\xca\xd4\xe0\x44\x5c\xa2\x11\x1b\xcf\x93\x14\x3d\x07\xd3\ \x01\xa5\x90\x52\xf2\x50\x6a\x59\x01\x56\x05\x10\x08\x4c\x0d\x04\ \x18\x9d\x76\xf9\xd5\x5f\x86\x18\xbd\xb7\x80\x3d\x93\x67\xd3\xba\ \x32\xf2\x79\x5f\xbb\x68\xea\xce\xaf\xd4\x70\xf9\xdd\xe0\x25\x00\ \x9e\x78\x09\x4c\xb8\x10\x3c\xa2\xd6\x2f\x55\xf2\x87\x1f\x3e\xcf\ \xf5\x4f\x33\x44\x1b\xb7\xb1\xf3\xc5\x97\x59\x12\x5c\x4e\x60\x8e\ \xdb\x53\x01\x28\xc0\x12\x25\x00\x6d\xd4\x52\x7d\xb1\xb5\x96\xdd\ \x5b\xe2\x74\xbf\x97\xa5\x6a\xf7\x57\xf9\xd1\x1b\x6f\x10\xa0\xb5\ \x03\x98\xb5\x37\xd5\xd8\x08\x01\xd2\xcb\x53\x70\x53\x78\xf3\x33\ \x14\xb3\x69\x0a\x19\x1f\x25\xfd\xd5\x82\xd6\x08\xf0\xf0\x29\xe7\ \xe3\xe7\x33\x14\xe6\x75\xa8\x0e\xd6\x00\xcb\xf7\x89\x10\xc1\x33\ \x7d\xfa\xd7\x72\x8c\xb2\x13\x37\x03\xc7\x01\xb2\x1e\xfe\xad\x94\ \xcc\x6f\xf7\x44\x54\x03\xd8\x5f\x70\x07\x08\x92\x09\xfd\xd7\x3d\ \x3f\xfd\x7e\x42\xa6\xcf\xdf\xf6\xef\x02\xee\x76\x3b\xfc\x92\x06\ \xa8\xe3\x73\xca\x75\x5d\x1f\x70\x57\xed\x00\x40\x32\xab\x0a\x1f\ \x7e\x2a\xd3\xbd\xb7\xfc\xd4\xcd\x69\x39\x05\xf4\x03\x97\x74\x68\ \xbf\x10\xa2\xd3\xb6\xed\xaf\x7d\x9e\x25\x58\x58\x58\xf0\x07\x06\ \x06\xd2\x27\x4f\x9e\x9c\x06\xba\x83\x00\x3e\x1a\x49\xca\xad\xe3\ \xb3\x2a\xd7\x3b\xe2\xa7\x6e\x4c\xcb\xd1\x52\xe8\x59\x1d\x74\x8b\ \x00\x3d\x09\xc0\xd0\xd0\x90\xdb\xd3\xd3\x93\xd2\x4e\xcf\xce\xce\ \x9e\x2e\xbd\x1d\xdf\x08\x02\xe8\xee\xea\x29\x00\x8c\x04\x84\x06\ \x85\xaf\x08\x30\x35\x35\x55\xd0\x2f\x22\xa9\x53\xa7\x4e\x25\xc7\ \xc7\xc7\x2f\x03\x67\x81\x7e\x1d\xec\xae\xb8\x09\x4b\xdf\x76\xda\ \x4f\x26\x85\x01\x40\x08\x40\x61\x5a\xfc\xde\xe0\x60\xba\xbb\xbb\ \x3b\xa5\xdf\x8a\xcc\x24\xd0\x5e\xed\x73\xcd\x61\xed\x9a\x77\x33\ \x6e\x11\x60\x70\xf0\xfd\x74\x5f\x5f\x5f\xfa\xcc\x99\x33\xa6\xc5\ \xa5\xd0\x8f\x78\x02\x89\xb5\x9e\x63\x21\x44\x18\x78\x13\xd8\x4f\ \x69\x73\x06\xb4\xf8\xb1\xfa\x1f\xbd\xfa\x2a\x5f\xf2\xd8\x15\x9d\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x03\x54\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\xe6\x49\x44\x41\x54\x58\xc3\xd5\ \x97\xcd\x4e\x13\x61\x14\x86\xeb\x35\x94\x95\x7b\x71\xe1\xd2\xc4\ \xe0\x05\xb8\xe2\x0e\x5c\xb8\xf4\x02\x5c\xb1\x30\xea\x05\x18\x96\ \x26\x62\x58\xb8\xb0\x91\x58\x20\xd1\x9d\xbf\x89\xa4\x14\xb1\x52\ \xa4\x48\x45\x94\xfe\xd0\x02\x43\xff\xa6\x9d\x19\xa6\x65\x80\xe3\ \x79\x7b\xfa\x85\x51\x4a\x82\xc9\x21\x86\x49\xde\x9c\x33\xa7\xf3\ \xcd\xfb\x9c\xf3\x4d\x9b\x4e\x84\x88\x22\xff\x53\x91\x73\x01\xc0\ \xc7\xd5\x90\x6e\xff\xa5\xfb\xac\xc7\x3d\x3d\x64\x0d\xa9\x02\xf0\ \x31\x32\x3c\x3c\xbc\x6a\x34\x3a\x3a\xba\x19\x56\x3c\x1e\xaf\x26\ \x93\xc9\x56\x3a\x9d\x76\x13\x89\x44\x6b\x60\x60\x20\xcd\x6b\x6e\ \x68\x02\xa4\x38\xd2\xe1\xe1\x71\x99\xba\xef\xb7\xc9\xb2\x2c\xda\ \xdf\xdf\x27\x86\xf1\x78\xcd\x18\xeb\x8a\x1a\x40\x3f\xf3\xb0\x1c\ \xc7\xa5\x4c\x66\xb9\x0b\x14\x04\x01\xc5\x62\xb1\x3a\xaf\x7b\x70\ \x1a\x88\x53\x01\x1c\x1c\x10\x77\x77\xb2\x6c\xdb\xa1\xf9\xf9\xcf\ \x64\x0e\xd7\x75\xe9\xf9\xc4\x44\x17\x42\x05\x00\x26\x7b\xc1\xc9\ \xaa\x37\x1c\x4a\xce\xcd\x53\xf8\x70\x5d\x0f\x8b\x17\x54\x00\x82\ \x10\x40\x67\x4f\x14\xce\xed\xa6\x47\x1f\x67\x66\xe9\xf5\x9b\xb7\ \x14\x9f\x9c\xa4\xa9\xa9\x69\x7a\xf7\xfe\x03\x45\xa3\xd1\x65\x5e\ \x7f\x41\x05\xc0\xef\x10\xed\xb6\x25\x86\x85\x9a\xe3\x05\x94\x5d\ \xcd\xd1\xe4\xf4\x2b\x7a\x32\xfe\x94\x9e\xc5\x5e\xd0\x4c\x62\x0e\ \x8b\x17\x55\x00\xda\x81\x18\xf5\x13\x20\x3c\xff\x90\x6a\xcd\x36\ \x15\x37\xab\x94\x2f\x6e\x53\x89\x63\x8d\xb7\x85\xd7\x7e\x51\x01\ \xf0\x79\xcc\xcd\x5d\x1e\xb5\xc7\x7b\xdb\xee\x9f\x3b\xbe\xe4\x88\ \x5d\xb8\xbd\xee\xe2\x94\xca\x33\xe0\x75\xe4\xc6\x75\x57\x62\xd8\ \x10\x39\xea\xe6\x33\x44\xd4\x01\xa7\x06\xe0\xf4\x3a\xad\x39\x22\ \x98\x98\x68\x72\x80\x98\x6b\x50\x53\x9d\x00\x00\x2a\x2d\xb9\x31\ \xe2\x4e\x53\x8c\x10\x0d\x04\xf2\x6d\xfb\x28\xb6\x7c\x45\x00\x9b\ \x3b\xdb\x6a\xfc\x69\x8e\x3c\x6c\x88\x1a\xae\x39\x13\x80\x3a\x8f\ \xb7\x54\x23\x2a\xd7\xc5\x04\x06\x06\x00\x35\x28\x9c\x17\xab\xbc\ \x25\xbb\xca\x13\xc0\x4d\x61\x0e\x15\x2a\x72\x6e\xcc\x7e\x5a\x02\ \x68\x6a\xdd\xad\xf1\x94\x27\x00\x53\xdc\x1c\x71\x6d\x5b\x40\x60\ \x9a\xab\x1c\x75\x9e\xeb\x81\x41\x15\x47\x11\xc0\x6a\x89\x31\x0c\ \xd6\x77\x04\x20\x0c\x64\x26\x62\xb6\x69\x75\x8b\xa8\xaa\x09\x50\ \xb6\xc5\xbc\xd0\x03\xf8\xbe\x29\x63\x87\x29\x60\x0c\x18\x84\x1c\ \x00\x5b\x4d\x45\x00\x74\x03\x53\x98\xad\x94\xc5\x1c\xe7\x46\xe6\ \x1c\x00\xc8\x71\x5d\xa9\xa1\x08\x80\xfd\xfc\x56\x12\x73\x33\x01\ \x08\x35\x18\x42\xe8\xda\x7c\x8e\x29\xa8\x4e\x00\x5b\x00\x03\xc8\ \x98\x67\x36\x04\x00\x32\xe6\x85\xde\xf8\x17\x0b\xfc\x2c\xd8\x8a\ \x00\x18\x67\x3a\x4f\xb4\x54\x14\x23\x98\x02\x00\x02\x0c\x3e\xfb\ \xc5\x53\x28\xf0\x43\xb8\x66\x49\xf7\x6b\xf9\x52\x87\xd7\xbe\x54\ \x01\xc8\x55\x8f\xba\x4e\xad\x4b\x0e\x90\xaf\x85\xde\xb7\xc2\x92\ \x3d\x4f\xa6\xb3\xde\xa3\xb1\x71\xeb\xda\xd0\xf5\x15\x98\xb3\x6e\ \xa9\x00\x6c\x34\xa4\x6b\x18\xff\xe0\x11\x7f\x5a\x17\x53\xd4\x13\ \x0b\x59\x6f\xe4\xee\xbd\xe2\xa5\xc1\xcb\x4b\x7c\x6d\x8c\x75\x87\ \x35\xa8\xfa\xb7\x1c\xdd\x65\xd9\x3c\x8f\x1f\x19\xfe\x9e\xcf\x1e\ \x37\xbd\xc9\xba\x78\x26\x6f\x46\x00\x68\xf2\xff\x81\x99\x94\x9e\ \xe9\x3f\xbf\x19\x01\x42\xd3\xf4\xfc\xbd\x9c\x9e\xa5\x7e\x03\x51\ \x6c\x25\xa1\x92\x95\x0a\x77\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x08\ \x08\xc8\x58\x67\ \x00\x73\ \x00\x61\x00\x76\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x06\xc1\x59\x87\ \x00\x6f\ \x00\x70\x00\x65\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x07\ \x0a\xc7\x57\x87\ \x00\x63\ \x00\x75\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x06\x7c\x5a\x07\ \x00\x63\ \x00\x6f\x00\x70\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x0a\xa8\xba\x47\ \x00\x70\ \x00\x61\x00\x73\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x07\ \x04\xca\x57\xa7\ \x00\x6e\ \x00\x65\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x02\ \x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x00\x1d\xa2\ \x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x11\xf3\ \x00\x00\x00\x28\x00\x00\x00\x00\x00\x01\x00\x00\x04\xa7\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x17\x31\ \x00\x00\x00\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xc4\ " 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() PyQt5_gpl-5.10.1/examples/mainwindows/menus.py0000755000076500000240000002560413245231431021367 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtGui import QKeySequence from PyQt5.QtWidgets import (QAction, QActionGroup, QApplication, QFrame, QLabel, QMainWindow, QMenu, QMessageBox, QSizePolicy, QVBoxLayout, QWidget) class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() widget = QWidget() self.setCentralWidget(widget) topFiller = QWidget() topFiller.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.infoLabel = QLabel( "Choose a menu option, or right-click to invoke a context menu", alignment=Qt.AlignCenter) self.infoLabel.setFrameStyle(QFrame.StyledPanel | QFrame.Sunken) bottomFiller = QWidget() bottomFiller.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) vbox = QVBoxLayout() vbox.setContentsMargins(5, 5, 5, 5) vbox.addWidget(topFiller) vbox.addWidget(self.infoLabel) vbox.addWidget(bottomFiller) widget.setLayout(vbox) self.createActions() self.createMenus() message = "A context menu is available by right-clicking" self.statusBar().showMessage(message) self.setWindowTitle("Menus") self.setMinimumSize(160,160) self.resize(480,320) def contextMenuEvent(self, event): menu = QMenu(self) menu.addAction(self.cutAct) menu.addAction(self.copyAct) menu.addAction(self.pasteAct) menu.exec_(event.globalPos()) def newFile(self): self.infoLabel.setText("Invoked File|New") def open(self): self.infoLabel.setText("Invoked File|Open") def save(self): self.infoLabel.setText("Invoked File|Save") def print_(self): self.infoLabel.setText("Invoked File|Print") def undo(self): self.infoLabel.setText("Invoked Edit|Undo") def redo(self): self.infoLabel.setText("Invoked Edit|Redo") def cut(self): self.infoLabel.setText("Invoked Edit|Cut") def copy(self): self.infoLabel.setText("Invoked Edit|Copy") def paste(self): self.infoLabel.setText("Invoked Edit|Paste") def bold(self): self.infoLabel.setText("Invoked Edit|Format|Bold") def italic(self): self.infoLabel.setText("Invoked Edit|Format|Italic") def leftAlign(self): self.infoLabel.setText("Invoked Edit|Format|Left Align") def rightAlign(self): self.infoLabel.setText("Invoked Edit|Format|Right Align") def justify(self): self.infoLabel.setText("Invoked Edit|Format|Justify") def center(self): self.infoLabel.setText("Invoked Edit|Format|Center") def setLineSpacing(self): self.infoLabel.setText("Invoked Edit|Format|Set Line Spacing") def setParagraphSpacing(self): self.infoLabel.setText("Invoked Edit|Format|Set Paragraph Spacing") def about(self): self.infoLabel.setText("Invoked Help|About") QMessageBox.about(self, "About Menu", "The Menu example shows how to create menu-bar menus " "and context menus.") def aboutQt(self): self.infoLabel.setText("Invoked Help|About Qt") def createActions(self): self.newAct = QAction("&New", self, shortcut=QKeySequence.New, statusTip="Create a new file", triggered=self.newFile) self.openAct = QAction("&Open...", self, shortcut=QKeySequence.Open, statusTip="Open an existing file", triggered=self.open) self.saveAct = QAction("&Save", self, shortcut=QKeySequence.Save, statusTip="Save the document to disk", triggered=self.save) self.printAct = QAction("&Print...", self, shortcut=QKeySequence.Print, statusTip="Print the document", triggered=self.print_) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", statusTip="Exit the application", triggered=self.close) self.undoAct = QAction("&Undo", self, shortcut=QKeySequence.Undo, statusTip="Undo the last operation", triggered=self.undo) self.redoAct = QAction("&Redo", self, shortcut=QKeySequence.Redo, statusTip="Redo the last operation", triggered=self.redo) self.cutAct = QAction("Cu&t", self, shortcut=QKeySequence.Cut, statusTip="Cut the current selection's contents to the clipboard", triggered=self.cut) self.copyAct = QAction("&Copy", self, shortcut=QKeySequence.Copy, statusTip="Copy the current selection's contents to the clipboard", triggered=self.copy) self.pasteAct = QAction("&Paste", self, shortcut=QKeySequence.Paste, statusTip="Paste the clipboard's contents into the current selection", triggered=self.paste) self.boldAct = QAction("&Bold", self, checkable=True, shortcut="Ctrl+B", statusTip="Make the text bold", triggered=self.bold) boldFont = self.boldAct.font() boldFont.setBold(True) self.boldAct.setFont(boldFont) self.italicAct = QAction("&Italic", self, checkable=True, shortcut="Ctrl+I", statusTip="Make the text italic", triggered=self.italic) italicFont = self.italicAct.font() italicFont.setItalic(True) self.italicAct.setFont(italicFont) self.setLineSpacingAct = QAction("Set &Line Spacing...", self, statusTip="Change the gap between the lines of a paragraph", triggered=self.setLineSpacing) self.setParagraphSpacingAct = QAction("Set &Paragraph Spacing...", self, statusTip="Change the gap between paragraphs", triggered=self.setParagraphSpacing) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=self.aboutQt) self.aboutQtAct.triggered.connect(QApplication.instance().aboutQt) self.leftAlignAct = QAction("&Left Align", self, checkable=True, shortcut="Ctrl+L", statusTip="Left align the selected text", triggered=self.leftAlign) self.rightAlignAct = QAction("&Right Align", self, checkable=True, shortcut="Ctrl+R", statusTip="Right align the selected text", triggered=self.rightAlign) self.justifyAct = QAction("&Justify", self, checkable=True, shortcut="Ctrl+J", statusTip="Justify the selected text", triggered=self.justify) self.centerAct = QAction("&Center", self, checkable=True, shortcut="Ctrl+C", statusTip="Center the selected text", triggered=self.center) self.alignmentGroup = QActionGroup(self) self.alignmentGroup.addAction(self.leftAlignAct) self.alignmentGroup.addAction(self.rightAlignAct) self.alignmentGroup.addAction(self.justifyAct) self.alignmentGroup.addAction(self.centerAct) self.leftAlignAct.setChecked(True) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.newAct) self.fileMenu.addAction(self.openAct) self.fileMenu.addAction(self.saveAct) self.fileMenu.addAction(self.printAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.editMenu = self.menuBar().addMenu("&Edit") self.editMenu.addAction(self.undoAct) self.editMenu.addAction(self.redoAct) self.editMenu.addSeparator() self.editMenu.addAction(self.cutAct) self.editMenu.addAction(self.copyAct) self.editMenu.addAction(self.pasteAct) self.editMenu.addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) self.formatMenu = self.editMenu.addMenu("&Format") self.formatMenu.addAction(self.boldAct) self.formatMenu.addAction(self.italicAct) self.formatMenu.addSeparator().setText("Alignment") self.formatMenu.addAction(self.leftAlignAct) self.formatMenu.addAction(self.rightAlignAct) self.formatMenu.addAction(self.justifyAct) self.formatMenu.addAction(self.centerAct) self.formatMenu.addSeparator() self.formatMenu.addAction(self.setLineSpacingAct) self.formatMenu.addAction(self.setParagraphSpacingAct) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/mainwindows/README0000644000076500000240000000157613245231431020545 0ustar philstaff00000000000000All the standard features of application main windows are provided by PyQt. Main windows can have pull down menus, tool bars, and dock windows. These separate forms of user input are unified in an integrated action system that also supports keyboard shortcuts and accelerator keys in menu items. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/mainwindows/recentfiles.py0000755000076500000240000002050413245231431022535 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QFile, QFileInfo, QSettings, Qt, QTextStream from PyQt5.QtGui import QKeySequence from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QMainWindow, QMessageBox, QTextEdit) class MainWindow(QMainWindow): MaxRecentFiles = 5 windowList = [] def __init__(self): super(MainWindow, self).__init__() self.recentFileActs = [] self.setAttribute(Qt.WA_DeleteOnClose) self.textEdit = QTextEdit() self.setCentralWidget(self.textEdit) self.createActions() self.createMenus() self.statusBar() self.setWindowTitle("Recent Files") self.resize(400, 300) def newFile(self): other = MainWindow() MainWindow.windowList.append(other) other.show() def open(self): fileName, _ = QFileDialog.getOpenFileName(self) if fileName: self.loadFile(fileName) def save(self): if self.curFile: self.saveFile(self.curFile) else: self.saveAs() def saveAs(self): fileName, _ = QFileDialog.getSaveFileName(self) if fileName: self.saveFile(fileName) def openRecentFile(self): action = self.sender() if action: self.loadFile(action.data()) def about(self): QMessageBox.about(self, "About Recent Files", "The Recent Files example demonstrates how to provide " "a recently used file menu in a Qt application.") def createActions(self): self.newAct = QAction("&New", self, shortcut=QKeySequence.New, statusTip="Create a new file", triggered=self.newFile) self.openAct = QAction("&Open...", self, shortcut=QKeySequence.Open, statusTip="Open an existing file", triggered=self.open) self.saveAct = QAction("&Save", self, shortcut=QKeySequence.Save, statusTip="Save the document to disk", triggered=self.save) self.saveAsAct = QAction("Save &As...", self, shortcut=QKeySequence.SaveAs, statusTip="Save the document under a new name", triggered=self.saveAs) for i in range(MainWindow.MaxRecentFiles): self.recentFileActs.append( QAction(self, visible=False, triggered=self.openRecentFile)) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", statusTip="Exit the application", triggered=QApplication.instance().closeAllWindows) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=QApplication.instance().aboutQt) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.newAct) self.fileMenu.addAction(self.openAct) self.fileMenu.addAction(self.saveAct) self.fileMenu.addAction(self.saveAsAct) self.separatorAct = self.fileMenu.addSeparator() for i in range(MainWindow.MaxRecentFiles): self.fileMenu.addAction(self.recentFileActs[i]) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.updateRecentFileActions() self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def loadFile(self, fileName): file = QFile(fileName) if not file.open( QFile.ReadOnly | QFile.Text): QMessageBox.warning(self, "Recent Files", "Cannot read file %s:\n%s." % (fileName, file.errorString())) return instr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) self.textEdit.setPlainText(instr.readAll()) QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.statusBar().showMessage("File loaded", 2000) def saveFile(self, fileName): file = QFile(fileName) if not file.open( QFile.WriteOnly | QFile.Text): QMessageBox.warning(self, "Recent Files", "Cannot write file %s:\n%s." % (fileName, file.errorString())) return outstr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) outstr << self.textEdit.toPlainText() QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.statusBar().showMessage("File saved", 2000) def setCurrentFile(self, fileName): self.curFile = fileName if self.curFile: self.setWindowTitle("%s - Recent Files" % self.strippedName(self.curFile)) else: self.setWindowTitle("Recent Files") settings = QSettings('Trolltech', 'Recent Files Example') files = settings.value('recentFileList', []) try: files.remove(fileName) except ValueError: pass files.insert(0, fileName) del files[MainWindow.MaxRecentFiles:] settings.setValue('recentFileList', files) for widget in QApplication.topLevelWidgets(): if isinstance(widget, MainWindow): widget.updateRecentFileActions() def updateRecentFileActions(self): settings = QSettings('Trolltech', 'Recent Files Example') files = settings.value('recentFileList', []) numRecentFiles = min(len(files), MainWindow.MaxRecentFiles) for i in range(numRecentFiles): text = "&%d %s" % (i + 1, self.strippedName(files[i])) self.recentFileActs[i].setText(text) self.recentFileActs[i].setData(files[i]) self.recentFileActs[i].setVisible(True) for j in range(numRecentFiles, MainWindow.MaxRecentFiles): self.recentFileActs[j].setVisible(False) self.separatorAct.setVisible((numRecentFiles > 0)) def strippedName(self, fullFileName): return QFileInfo(fullFileName).fileName() if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/mainwindows/sdi/0000755000076500000240000000000013245231431020433 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/mainwindows/sdi/images/0000755000076500000240000000000013245231431021700 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/mainwindows/sdi/images/copy.png0000644000076500000240000000247213245231431023365 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<ÌIDATXõ—]L[eÆwo¼ÙåI q×&ãN¸pÑ…D½Pãå+.&J'†ª‹™àТl†9ܘ€@l¦CÊ +ƒ(ÌÚÑ–ÒÒJ{ú¥ÐïßÿÛÇÌ*‡“<9o!œç÷<ïG‡ÊFϽúé»LZ&aj`ÊÙéyÙš?]Pò¥Áé§WÃ@0„¢­Ç2Š'X"s¿ykÚKr{ç¬ÚØÈ˜@„™…ã‘1)Ka%”D8šBs‡Æ¾Äÿ“y$ñÈX’Ï„]ŒÂå "K£ôÃïM4uY°ëØ6Õž:ü̹ç_.?VžEEU *™Þ¯­Ã±‰Ç¬¶%ü¹è‡kXöÆÒ¯œ¾pŸAÙ€]‡™ŠŠŠÌ’Z[[ݤ¯U­þ¯Tߦ195…Ù¹9è&&PPP€!Ío|ÞI¦ù̘\ÀáOAô…ðC¯ÎÍjöPCfØåŠÇãðz½H§Ó˜œœDee5fg¼ftÓ@2-xðÝQ¬ápF£‘S©~êíEã'Ÿa†A8–ÜPwuãLC#Î5Çí‘q\¼>,/ÀÆÆôzýc@}}ýP2ˆÐFf› ‚Áˆ©¬—ºdn€¦Ø:Ø~E"”+*0®@çmWÚª4¾|Sæ5@f:ÃÃÃèeõ÷÷÷C«Õ¢ªºcwõ*wí¶Ú»e y·ÛíBgg'zzz8PIiniõ×o°ùg¸Ð%3ÀÖÖß @¢(Âï÷cmm §•Ðü®ç©É|Á ˜=@›ÜÛA677ùv¤VÕèûUà©Gç;€Ì%€$3O$(+¯â¸‹˜ 6ZÕ0ÿ˜'“<=MIÉ©J ·³‰=Åø0±|qõ¤êɘ‹ÅP¦¨‚zHÀ˜¸k朙ûçWdÒSjˆF£Ü< ¡¸´×Üf‡ä dÄ(;dH=œs™Ó¹@ ÅeU¸Ø- :c®}ià£v™þ]=¥&­®®rˆ·J*p¹WÀ=¸~žîÌg.í@ªD‹Ž’ÓqLß+++X__ç'Yßt PO¿Ìe¸24ì§ÉXÚëdNi)9D@õÓÏÞ|[–ëO~u¸qøq,ž~½Nm¦7ª¬žd,m72%Ñ#òäÌ'hï ¼f[O5âÉxG•JŤ.Í7RR:÷)µÃáà"ãÅÅEõâñ—\ô¹“é®---né`¡ÔÒ— ———áóù`³Ùø}ii‰C ͲТ’R“éNßxT;5`µZyõÔ ýÎ`0$òòòî³gÙ@SS“[šgJO"ªšÆ‹™7@ŸGGG#mmmÞüü|ûÛA¦²½šÿ'@ss3ŸJGT?U???ÏëÖh4‘ºº:çô]L0ÍÆxG¥Rév:¼bJJo>”´¾¾Þ™““#™gSuVn‹Å‚Hmm­377WVÓÝøFLÂA™n×ßC9V…pÈIEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/sdi/images/cut.png0000644000076500000240000000245313245231431023205 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<½IDATXÃíWkL“W>#qÉ2é—¨Te8ö‡2“f,[pÄ0ÿ`¢.:Nº1‰[³€Ù „X‹…²‚•^äf Ž1øÃFË-ܨ·ji‘ò¯ ܸ aÙ²“<í—ó}ýÞç¼ïó^J€ü“ ÿ t (DÙq+F€®ÝdÝÆf"Lø•Ä‹GÈ¡Ó÷ÈŽ—;82a+A …œ¾0H.Ý€@2«yMô¾ûrhd‘^£Qôî…GõнƒËM ›ö@t/½2= ‰?H¥,Œ1yÁ»ˆKÆ×Æ& ¹ýBþÅ+6FŒ\N“§§§ ÌÓ9¹˜c6 Òä£+A Œ)ž*ß7GëÜ{µÌ‰ž@D–Tƒ+, 6FHõd*{.Tø7¿À4*TßbˆRÕ,XtzEUõÈ mtÂÔs÷!¾sQ•®ÐÏ唃‡´žÌ.Ôݯ™Ë°¯¯¯>¿Ò`µÛí€øyä>Ä^«´¹ˆ/†€'ÓÀgùŽõ`×^3ºvÚsîhØÇÇGŸ««° Á‡²ö.ç–7÷wsaؽè^€/fš †ß©6B÷ðØŸÔϥ犘-~þm—Tk__¸ÐÑsbrVNć—ÔŒ0é·8@¤Ö1ž…›~m©%[—Ù æ. ó$ß6Ž{½ÑÍBÈ o©<ѽV«w„ó’\»R©„úúz0™L uß5ÁQ±dÉQD>¶vÌ´@O“_~ÓÖßß2™ D"¨T*J¥ Ñh K[9¾é•à¸S¯y,ó—Ž"žÇ†æS)ö‚‚æâ   àñx`±X@[^ûÏ& -¦SÎg”Ï Lƒâ[{æÂ`š² ˆÅbÈÌÌ„¢¢"P«ÕÐÙÙÉ`ìþɹÉÛ§u.·ÏK€®·Ø)pÀj—¬xˆÊ‚â)‰>—+![–cãG„&Ø’rdŽo¿£Ñ-­-ðËÀ 8ñ¾³bÁ\i„……„FÜ&ç2¬,Ï3µì;ãºÓ3¯‚åþz‰žÞüb÷<’{f«O[Ê5íXCC=444€¥·2ÅÃóéÀe<’å(ž6]åœ*2x}ôƒ.Zl1 %êq÷/Ë'ï‡_þÓäD LhôÉ>u• ´··Ãׯ–1® fñ6m8hí÷*>]åXªñGZõ¶Y ³CÉ‘8 9ù©–!ú\ ϳÿÿ7üOøç‡¹DÃÏIEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/sdi/images/new.png0000644000076500000240000000152413245231431023201 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<æIDATXÃÕ—ÍNa†ë5”•{qáÒÄà¸â\¸ô\±0ê–&bX¸°‘X Ñ¿‰¤±R¤HE”þÐCÿ¦¦e€ãy{ú…QJ‚É!†IÞœ3§óÍûœóM›N„ˆ"ÿS‘sÀÇÕnÿ¥û¬Ç==d ©ð12<<¼j4::ºV<¯&“ÉV:v‰Dk`` Íknh¤8Òááq™ºï·É²,Úßß'†ñxÍëŠ@?ó°Ç¥Lf¹ Åb±:¯{pˆSww²lÛ¡ùùÏd×uéùÄDB&{Áɪ7JÎÍSøp]‹T‚@gOÎí¦Ggféõ›·Ÿœ¤©©iz÷þE£Ñe^AÀïí¶%†…šã”]ÍÑäô+z2þ”žÅ^ÐLb‹UÚõ <ÿjÍ67«”/nS‰c·…×~QðyÌÍ]µÇ{ÛîŸ;¾äˆ]¸½îâ”Ê3àuäÆuWbØ9êæ3DÔ§àô:­9"˜˜hr€˜kPS*-¹1âNSŒ òmû(¶|E›;ÛjüiŽûÅS(ðC¸fI÷kùR‡×¾TÈUºN­K¯…Þ·Â’=O¦³Þ£±qëÚÐõ˜³n©l4¤kÿàZSÔ Yoäî½â¥ÁËK|mŒu‡5¨ú·ÝeÙ<þžÏ7½Éºx&oFhòÿ™”žé?¿BÓôü½œž¥~Ql%¡’• wIEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/sdi/images/open.png0000644000076500000240000000403113245231431023345 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<«IDATXíW[P“göÊÎìÌöb/¼ÙéÎìn½ÚÙ›µÎº;{°­Ìz±ÎÎ:³vTpuÛâÖ¶T»¥ mÁ‚QB€€€!’@Hs$!gr€B œ GµTxöû~0X‹}gžù/’üÏû>Ïû¾ß—]vý˜ ñ ‚Áu‚ÏýþH¼› áW¯ïµ*ŒÖeÛ`[ 'ñ3ú"üÜ>vH~Š ¹¶Y2Ï­B9þDöQØÇæè‡†={öXSR®,Ê::NâåIÃÄ1·>Iù,`›]YSMM¶4ëû 1y`Å»ï¾?Å«¾ƒñ‰)LOÏ®’ï×¼tŸ¾ã²CO´3@‹{Í=.4ëì¨Wö ‡S…2^5C¼°ôÁ`\&¿K|áH$8AýÝês'ñ¹'H‡—Á×» "U7Ü7¢¸Nˆ,V>ÌVÛ:q,k,üÎç'‘6“•?F}¥þÄoôY1¶~ï Z{œà?0¡L(CF²ù&ÒùÅeÌ-,!4¿ˆ½{÷ZÉ;~ºm$~CF=5iu³€Ò?ËÄâšP¡Z´lñY ¶ ¦]/²sq·žÿ 1% ÍcbjƒC'äݼ-Ó°;’3&ÔSµÓûXOˆÅ!ˆ,CPºFÐí Bå›B›sü©ÏZî*tȼÉE §l“Ï›ˆ'§Ào¢ÖÖ%ÂQÛ(‡Æ¯‚/b”M‰$"êR-šB«èy¡ÅÏStö £Óá‡Ô<€½ ]Õ ‘• /yñƪ©Ô³s LÅ”ØÝï…Éb·¼¥å•KóË«#7ÙæÙ„—Ë<Ðhò£Ýî_'–;† ³x×}æ¤ø<3*6ªÜS3!ŒŽ3Ó&ä7 ñÁÅQs¯¾e`ü ##òΡ¾]¹¸QƒttM§ g€©¸ÝêƒØèB“ÊÌø|åË,ˆÚ$Q‰§g熆G`w8I‚:$|ø!®³ á™\€o ÐÞá,«Ä}ïÝaëÿŸÀ¹ö!HÌýO}îÔ"U„ªšºM>GäŽø<<„ÓݽÁˆÂâbœ~/=ô/ƒ„¼Åÿ-î:C(Q‘÷öñNÜ¿}„3iã ô3«àÉTh58ÑØÝ žX‰¬\ö3>Gªžœžeäî÷¢×lAC'bã éÖÀEÏR$¸†²žn´ÛPÑD…΋J~ m¾›['Ñ ™øe"î)ô(Èx5 ­>ªÜc“ð Ãf]ŽÄK—ÃÊÃÔcÀNzI1Nú‰”[;„|…%jJÕèò0£("øù3 t.¡¨¾¥| ²J*ðÏãqQåöFÑçò@«7 ýj’¿HƒÍ7'©Ú@Là{ˆREÝý qA—Å݈œAüùÍ·]„ël´CÐ(÷N#§ü²K«ñQêWHþoêúXQ¹G‚ãð ø`4™QÉ«ÂûgÏAþ@?én²¹oiÒ›*/råäuö¡ð¾•ùœÊ)ÂS¸Ý)Ü+vQÈÅ•ky8Ÿ€›·n3c‘Ûjs@"mÇ…„Pt» ó+€Ÿ4X÷$ |„JÓ8úa†œVýU³¬;¸:Ù!z/༺]&¾Áƒ”oØ8ŸœŠ=c¯™én*·F׃¤ËÉHÿ:‹ŒÕÇÑØ3ø81 †^›øÝûQOÔñ™îšª­“`+] 9õ¼ð¾g½êÌ=JUm”ÔñCáeS@ðÊ÷%`+njÇ©„DÄ9ŠÜ|6ZZÅ8ƒ/95Èj˜æ¢ÕÒ'õšzL¡Id·™ÛnF¹Ú¥v9,9=ùNìÙrÔG ;«Fˆcÿ9ßîû=ùœ¿€“ñp£­ÄOJénºX¨ï,ú”˜P(·@é<ùWì)*w-Ágû¶¹äD¾Ì²Züãä<ô7°ró°ïÀP Ñ!‰'e*¦K…>¿!ÕFä.[!° ®åÜâÒä‡o<¯<ç–5œiEåøû±X?‡7öïÇ:’«¤ !ípê5U!‹4[É7*4nÔI:ÃrsŽm•û‡$àJespäø)>|˜Œc.2*\"ÕÓ]~MÜ 6étv§wŒäˆ¶ùž„·•û"½Iý€ mô2JxLœKIõ¦.|Âme6Yñƒ\—šÁQ{ ó×Î%&6ÈýÇÈÕ‚ÜÎ^NEX…xö]\©UªûÀ–ÛP­uã®TA/Ê r¿ºÓj£·¢Qø¯CO¹-ˆËæášHª/š5æÇzó-Wx¬¨Ü¯½¬ÜÑâÝ\uÞ˯E¹v2g`õ§—©Ü÷Ò©Ü;øóÂñ‚ÊîP 9”¸ ÂÈ£‡Ã/"÷ÿÚmŠÝa™Õ¶Øk»^2¾/‰ÿf¹_ü€=ÏIEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/sdi/images/paste.png0000644000076500000240000000315513245231431023526 0ustar philstaff00000000000000‰PNG  IHDR szzô4IDATx^­—[lTÇÆsÎÙ‹½öú ¾²ic$BJ!"¡-•b¥/îKh+•¦U¥Æ`UªÚ´ªúV UÊ”'Ú„)­Ä‹¥RƒyÅ9iÓ„š›cjì²;»öz½»Þ³g¦Ãh…årlˆÉ'}úŸ‡ý~óŸ™sJ)‚$„xxžÇkH)õwÖ(' ¸C»h—R¾ÆcdYÖö»@·9ÿ&ü·íõâ`]DDnΉŠ+W®P]S@ Pe(A)fÓi^©/¼´Nl;ñ¹Gƒ|[CL;…D•2â¶Ä¶!!p>SlŒ;€D*ðœàË@P4`ÄHiŸ$Nœ8!Ò‡––g emå(¥´AXW%âØDBÃs\¼=A÷XŽ\$¾©½}÷ï-ËZܱcGYUU•ÓØØ~à†††Ð¥K—Ü®®®ðÖªDU,ÂsÕ1òžO¡(‘Ja Aرˆ†lær¢Ž?Ÿÿ+ M"Àf–„ïûxžGuuµžPKôêÕ«‡„(¥ÞZÀ²A¶-Ú¶8¤XÂŒL¹ì{õ;Ô76|/Á„g2ÊËËÍf>vìØ&½.A,ÐÙÙ©:¤l!Y¶-ÇÆBP´ÍDzˆ8–®`YxÀÜÜ555 räÈ‘ÍÀˆ¢Çb¹°mt0fË#6±¨£Ç,2‹“™c©yîÌ.èßErù<«È,A6›5§féÿm8°èX ´tŽ áÀSб¤ËŒƒÓ²—¦}¯³µã¬Ûû: /´sûÎ$ýýý$“I”Ræúøñã躬3çÎãèÑ£>|˜ÞÞ^‰„,¡ÜíÿÎæøç”OkÇÏøæ/ß&öõ7™|¦ƒkþ.®ñ-dk­{N^VsúogÑwMîÜâ¯vrýúu gkÖ?‹™ëx<Žã8%8À#–%˜ÊA:ÞÊþß½MÕ®×(„bÛBY‚lArf‘Oîf¸êrúadÕ^®Üg2ׯ…î›í‡¡ÍÍÍ´µµ755¡¡ ƒFÜqßÿéo¨lØHâì;L^É”±µy›[¶óIy%c —ÏfòÜÎ2¡íˆ L'çØ·+Êú%3{=kêêêÌu*•2J+ ¹Zpác(,ÊæÆÙR”’{Ã}$eÛÚLMÛË|<œfÒ_ÀÍx,Ìk/x µt:B¡ -ÝêŽ*ø>`ÁƸ P#‹S·¥–’xv}é¬ÇhÿŸ˜®¼LËöƒ¸ a¼‚¤X”xÚ!ÇB-ª€ãi –ÕÖÇC„Ê#ü¿jc!ž© sá߃ìÙùÊ£¹2G(akK!¥%0*¤\@X¥*Ìõ#úpl†ñYïýúÜÊÔàD\¢Ï“=Ó¥RòPjYVL vùÕ_†½·€=“gÓº2òy_»hêίÔpùÝà%žx L¸<¢Ö/Uò‡>ÏõO3D·±óÅ—Y\N`ŽÛS(À%mÔR}±µ–Ý[ât¿—¥j÷WùÑo µ˜µ7ÕØÒËSpSxó3³i %ýÕ‚Öðð)çãç3æu¨ÖË÷‰Á3}ú×rŒ²7Dzþ­”Ìo÷DTØ_p’ ý×=?ý~B¦Ïßöïîv;ü’¨ãsÊu]pWí@2« ~*Ó½·üÔÍi9ô—th¿¢Ó¶í¯}ž%XXXðÒ'Ožœºƒ>IÊ­ã³*×;â§nLËÑRèYt‹= ÀÐÐÛÓÓ“ÒNÏÎΞ.½ßèîê)Œ„…¯055UÐ/"©S§N%ÇÇÇ/g~쮸 KßvÚO&…@@aZüÞà`º»»;¥ßŠÌ$Ð^ísÍaíšw3n`pðýt___úÌ™3¦Å¥Ðx‰µžc!DxØOis´ø±ú½ú*_òØIEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/sdi/images/save.png0000644000076500000240000000224313245231431023345 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<5IDATXÃå—ÍTEÅ·êÖ{¯ÛnÇù@‰FM4™DH˜ÄŒþL\ñ.M\kXÃŽÄ΂htA\ âÄÆ=`PQ`¢ ƒÓý^÷”‹ªîù`æ „QVR©Î{·ëž:÷Ô©zê½ç~6å>·>€]»v½ìýòN5ëػ」;vœ<:ÏÌ—7XœïÜS¦Ú òÜk¼¸g€‹|øî€Ûpüìß?0x.ý¸Àþ·ÎoËryš #–ÓŸdüÕ}›k@E°@xp,#˲m00–aP|#%"+ؑՕsç΃*¸Ò² Ò,ŒI IÞw:ç·¡Õ‚v+Žm(r²ú8Ö ã¯¼Ikñú欬°Fؽ{çk놮€Z¨VêmQ¯µ‚÷ ¦„g5‚¨ •,Ã# Àð/Þ#&|ˆ#Ä!Яª‹öØ'aa½%% ð4M£:ó˜‰lÚc V˜_)FüaÍra-Ñ€: TIO4/à…Ä!‰Ãg ’i؉â‡X‹ïv‘¼€¼íßj#íòŸwPEÕ x:ëTx›œ3x$¼þòówhè6h¤¾ñëÆüß±R^‚DM_„ ¥8ç¶ÅˆžK¹v³Rª¸PïZÅ0}±Ë@Űô&­WùU.ááÆÒ2õÌp}É„-éJœÀsåf—+7»¬QW?תd~Å'¢)¬Ü µw¦l¨Á© È5¯›5Y1žþ{éïñ‚ï›X0+WVU!ÑüçSßòë™,-Þ¸§úWj<õìNžya¨3[1|‡÷÷¿Á·nÝ¢( Dk-ÖZTUÅ9‡ªb­Å˜ðßååeò<ï÷#Íù¸ò-pVPÜ1:¶rO8~œééiŒ1x˜`rròŽYØ1:Ö߆®Ô Up6¬¢V¯÷k933ÃÐÐÖZ¼÷4›Í»P«×pш´Ôˆœ '\ *¨V«dYÖ§¸7Þis©AK­8ǽ#´×Œ1ˆDß:¸«›¯5¨ óö.=Žƒ)mãÕÛ©÷åVl­ô‘Ž ÃòïÛà¡‘aÔµ+—Yœ¿¾6øÀ`­ ÛÃÀP­ÂìÅKœýîΟœž¦6`$^J í‘'©= o8ÈfÇ':ñ*ç52(ºpùêUÎ4ŽÑüú‹¹ÙNoà³>à§Ó'W™éÚ£†Uæ»<_o|wîÙ_‡Æ_˜šþôãõsl}ò5â·ÚÿÝ×ñ?MðK¹èF‰¯IEND®B`‚PyQt5_gpl-5.10.1/examples/mainwindows/sdi/sdi.py0000755000076500000240000002631713245231431021600 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (QFile, QFileInfo, QPoint, QSettings, QSize, Qt, QTextStream) from PyQt5.QtGui import QIcon, QKeySequence from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QMainWindow, QMessageBox, QTextEdit) import sdi_rc class MainWindow(QMainWindow): sequenceNumber = 1 windowList = [] def __init__(self, fileName=None): super(MainWindow, self).__init__() self.init() if fileName: self.loadFile(fileName) else: self.setCurrentFile('') def closeEvent(self, event): if self.maybeSave(): self.writeSettings() event.accept() else: event.ignore() def newFile(self): other = MainWindow() MainWindow.windowList.append(other) other.move(self.x() + 40, self.y() + 40) other.show() def open(self): fileName, _ = QFileDialog.getOpenFileName(self) if fileName: existing = self.findMainWindow(fileName) if existing: existing.show() existing.raise_() existing.activateWindow() return if self.isUntitled and self.textEdit.document().isEmpty() and not self.isWindowModified(): self.loadFile(fileName) else: other = MainWindow(fileName) if other.isUntitled: del other return MainWindow.windowList.append(other) other.move(self.x() + 40, self.y() + 40) other.show() def save(self): if self.isUntitled: return self.saveAs() else: return self.saveFile(self.curFile) def saveAs(self): fileName, _ = QFileDialog.getSaveFileName(self, "Save As", self.curFile) if not fileName: return False return self.saveFile(fileName) def about(self): QMessageBox.about(self, "About SDI", "The SDI example demonstrates how to write single " "document interface applications using Qt.") def documentWasModified(self): self.setWindowModified(True) def init(self): self.setAttribute(Qt.WA_DeleteOnClose) self.isUntitled = True self.textEdit = QTextEdit() self.setCentralWidget(self.textEdit) self.createActions() self.createMenus() self.createToolBars() self.createStatusBar() self.readSettings() self.textEdit.document().contentsChanged.connect(self.documentWasModified) def createActions(self): self.newAct = QAction(QIcon(':/images/new.png'), "&New", self, shortcut=QKeySequence.New, statusTip="Create a new file", triggered=self.newFile) self.openAct = QAction(QIcon(':/images/open.png'), "&Open...", self, shortcut=QKeySequence.Open, statusTip="Open an existing file", triggered=self.open) self.saveAct = QAction(QIcon(':/images/save.png'), "&Save", self, shortcut=QKeySequence.Save, statusTip="Save the document to disk", triggered=self.save) self.saveAsAct = QAction("Save &As...", self, shortcut=QKeySequence.SaveAs, statusTip="Save the document under a new name", triggered=self.saveAs) self.closeAct = QAction("&Close", self, shortcut="Ctrl+W", statusTip="Close this window", triggered=self.close) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", statusTip="Exit the application", triggered=QApplication.instance().closeAllWindows) self.cutAct = QAction(QIcon(':/images/cut.png'), "Cu&t", self, enabled=False, shortcut=QKeySequence.Cut, statusTip="Cut the current selection's contents to the clipboard", triggered=self.textEdit.cut) self.copyAct = QAction(QIcon(':/images/copy.png'), "&Copy", self, enabled=False, shortcut=QKeySequence.Copy, statusTip="Copy the current selection's contents to the clipboard", triggered=self.textEdit.copy) self.pasteAct = QAction(QIcon(':/images/paste.png'), "&Paste", self, shortcut=QKeySequence.Paste, statusTip="Paste the clipboard's contents into the current selection", triggered=self.textEdit.paste) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=QApplication.instance().aboutQt) self.textEdit.copyAvailable.connect(self.cutAct.setEnabled) self.textEdit.copyAvailable.connect(self.copyAct.setEnabled) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.newAct) self.fileMenu.addAction(self.openAct) self.fileMenu.addAction(self.saveAct) self.fileMenu.addAction(self.saveAsAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.closeAct) self.fileMenu.addAction(self.exitAct) self.editMenu = self.menuBar().addMenu("&Edit") self.editMenu.addAction(self.cutAct) self.editMenu.addAction(self.copyAct) self.editMenu.addAction(self.pasteAct) self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def createToolBars(self): self.fileToolBar = self.addToolBar("File") self.fileToolBar.addAction(self.newAct) self.fileToolBar.addAction(self.openAct) self.fileToolBar.addAction(self.saveAct) self.editToolBar = self.addToolBar("Edit") self.editToolBar.addAction(self.cutAct) self.editToolBar.addAction(self.copyAct) self.editToolBar.addAction(self.pasteAct) def createStatusBar(self): self.statusBar().showMessage("Ready") def readSettings(self): settings = QSettings('Trolltech', 'SDI Example') pos = settings.value('pos', QPoint(200, 200)) size = settings.value('size', QSize(400, 400)) self.move(pos) self.resize(size) def writeSettings(self): settings = QSettings('Trolltech', 'SDI Example') settings.setValue('pos', self.pos()) settings.setValue('size', self.size()) def maybeSave(self): if self.textEdit.document().isModified(): ret = QMessageBox.warning(self, "SDI", "The document has been modified.\nDo you want to save " "your changes?", QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel) if ret == QMessageBox.Save: return self.save() if ret == QMessageBox.Cancel: return False return True def loadFile(self, fileName): file = QFile(fileName) if not file.open(QFile.ReadOnly | QFile.Text): QMessageBox.warning(self, "SDI", "Cannot read file %s:\n%s." % (fileName, file.errorString())) return instr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) self.textEdit.setPlainText(instr.readAll()) QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.statusBar().showMessage("File loaded", 2000) def saveFile(self, fileName): file = QFile(fileName) if not file.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(self, "SDI", "Cannot write file %s:\n%s." % (fileName, file.errorString())) return False outstr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) outstr << self.textEdit.toPlainText() QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.statusBar().showMessage("File saved", 2000) return True def setCurrentFile(self, fileName): self.isUntitled = not fileName if self.isUntitled: self.curFile = "document%d.txt" % MainWindow.sequenceNumber MainWindow.sequenceNumber += 1 else: self.curFile = QFileInfo(fileName).canonicalFilePath() self.textEdit.document().setModified(False) self.setWindowModified(False) self.setWindowTitle("%s[*] - SDI" % self.strippedName(self.curFile)) def strippedName(self, fullFileName): return QFileInfo(fullFileName).fileName() def findMainWindow(self, fileName): canonicalFilePath = QFileInfo(fileName).canonicalFilePath() for widget in QApplication.instance().topLevelWidgets(): if isinstance(widget, MainWindow) and widget.curFile == canonicalFilePath: return widget return None if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/mainwindows/sdi/sdi.qrc0000644000076500000240000000040713245231431021722 0ustar philstaff00000000000000 images/copy.png images/cut.png images/new.png images/open.png images/paste.png images/save.png PyQt5_gpl-5.10.1/examples/mainwindows/sdi/sdi_rc.py0000644000076500000240000010725413245231431022261 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Sun May 12 18:04:51 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x03\x54\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\xe6\x49\x44\x41\x54\x58\xc3\xd5\ \x97\xcd\x4e\x13\x61\x14\x86\xeb\x35\x94\x95\x7b\x71\xe1\xd2\xc4\ \xe0\x05\xb8\xe2\x0e\x5c\xb8\xf4\x02\x5c\xb1\x30\xea\x05\x18\x96\ \x26\x62\x58\xb8\xb0\x91\x58\x20\xd1\x9d\xbf\x89\xa4\x14\xb1\x52\ \xa4\x48\x45\x94\xfe\xd0\x02\x43\xff\xa6\x9d\x19\xa6\x65\x80\xe3\ \x79\x7b\xfa\x85\x51\x4a\x82\xc9\x21\x86\x49\xde\x9c\x33\xa7\xf3\ \xcd\xfb\x9c\xf3\x4d\x9b\x4e\x84\x88\x22\xff\x53\x91\x73\x01\xc0\ \xc7\xd5\x90\x6e\xff\xa5\xfb\xac\xc7\x3d\x3d\x64\x0d\xa9\x02\xf0\ \x31\x32\x3c\x3c\xbc\x6a\x34\x3a\x3a\xba\x19\x56\x3c\x1e\xaf\x26\ \x93\xc9\x56\x3a\x9d\x76\x13\x89\x44\x6b\x60\x60\x20\xcd\x6b\x6e\ \x68\x02\xa4\x38\xd2\xe1\xe1\x71\x99\xba\xef\xb7\xc9\xb2\x2c\xda\ \xdf\xdf\x27\x86\xf1\x78\xcd\x18\xeb\x8a\x1a\x40\x3f\xf3\xb0\x1c\ \xc7\xa5\x4c\x66\xb9\x0b\x14\x04\x01\xc5\x62\xb1\x3a\xaf\x7b\x70\ \x1a\x88\x53\x01\x1c\x1c\x10\x77\x77\xb2\x6c\xdb\xa1\xf9\xf9\xcf\ \x64\x0e\xd7\x75\xe9\xf9\xc4\x44\x17\x42\x05\x00\x26\x7b\xc1\xc9\ \xaa\x37\x1c\x4a\xce\xcd\x53\xf8\x70\x5d\x0f\x8b\x17\x54\x00\x82\ \x10\x40\x67\x4f\x14\xce\xed\xa6\x47\x1f\x67\x66\xe9\xf5\x9b\xb7\ \x14\x9f\x9c\xa4\xa9\xa9\x69\x7a\xf7\xfe\x03\x45\xa3\xd1\x65\x5e\ \x7f\x41\x05\xc0\xef\x10\xed\xb6\x25\x86\x85\x9a\xe3\x05\x94\x5d\ \xcd\xd1\xe4\xf4\x2b\x7a\x32\xfe\x94\x9e\xc5\x5e\xd0\x4c\x62\x0e\ \x8b\x17\x55\x00\xda\x81\x18\xf5\x13\x20\x3c\xff\x90\x6a\xcd\x36\ \x15\x37\xab\x94\x2f\x6e\x53\x89\x63\x8d\xb7\x85\xd7\x7e\x51\x01\ \xf0\x79\xcc\xcd\x5d\x1e\xb5\xc7\x7b\xdb\xee\x9f\x3b\xbe\xe4\x88\ \x5d\xb8\xbd\xee\xe2\x94\xca\x33\xe0\x75\xe4\xc6\x75\x57\x62\xd8\ \x10\x39\xea\xe6\x33\x44\xd4\x01\xa7\x06\xe0\xf4\x3a\xad\x39\x22\ \x98\x98\x68\x72\x80\x98\x6b\x50\x53\x9d\x00\x00\x2a\x2d\xb9\x31\ \xe2\x4e\x53\x8c\x10\x0d\x04\xf2\x6d\xfb\x28\xb6\x7c\x45\x00\x9b\ \x3b\xdb\x6a\xfc\x69\x8e\x3c\x6c\x88\x1a\xae\x39\x13\x80\x3a\x8f\ \xb7\x54\x23\x2a\xd7\xc5\x04\x06\x06\x00\x35\x28\x9c\x17\xab\xbc\ \x25\xbb\xca\x13\xc0\x4d\x61\x0e\x15\x2a\x72\x6e\xcc\x7e\x5a\x02\ \x68\x6a\xdd\xad\xf1\x94\x27\x00\x53\xdc\x1c\x71\x6d\x5b\x40\x60\ \x9a\xab\x1c\x75\x9e\xeb\x81\x41\x15\x47\x11\xc0\x6a\x89\x31\x0c\ \xd6\x77\x04\x20\x0c\x64\x26\x62\xb6\x69\x75\x8b\xa8\xaa\x09\x50\ \xb6\xc5\xbc\xd0\x03\xf8\xbe\x29\x63\x87\x29\x60\x0c\x18\x84\x1c\ \x00\x5b\x4d\x45\x00\x74\x03\x53\x98\xad\x94\xc5\x1c\xe7\x46\xe6\ \x1c\x00\xc8\x71\x5d\xa9\xa1\x08\x80\xfd\xfc\x56\x12\x73\x33\x01\ \x08\x35\x18\x42\xe8\xda\x7c\x8e\x29\xa8\x4e\x00\x5b\x00\x03\xc8\ \x98\x67\x36\x04\x00\x32\xe6\x85\xde\xf8\x17\x0b\xfc\x2c\xd8\x8a\ \x00\x18\x67\x3a\x4f\xb4\x54\x14\x23\x98\x02\x00\x02\x0c\x3e\xfb\ \xc5\x53\x28\xf0\x43\xb8\x66\x49\xf7\x6b\xf9\x52\x87\xd7\xbe\x54\ \x01\xc8\x55\x8f\xba\x4e\xad\x4b\x0e\x90\xaf\x85\xde\xb7\xc2\x92\ \x3d\x4f\xa6\xb3\xde\xa3\xb1\x71\xeb\xda\xd0\xf5\x15\x98\xb3\x6e\ \xa9\x00\x6c\x34\xa4\x6b\x18\xff\xe0\x11\x7f\x5a\x17\x53\xd4\x13\ \x0b\x59\x6f\xe4\xee\xbd\xe2\xa5\xc1\xcb\x4b\x7c\x6d\x8c\x75\x87\ \x35\xa8\xfa\xb7\x1c\xdd\x65\xd9\x3c\x8f\x1f\x19\xfe\x9e\xcf\x1e\ \x37\xbd\xc9\xba\x78\x26\x6f\x46\x00\x68\xf2\xff\x81\x99\x94\x9e\ \xe9\x3f\xbf\x19\x01\x42\xd3\xf4\xfc\xbd\x9c\x9e\xa5\x7e\x03\x51\ \x6c\x25\xa1\x92\x95\x0a\x77\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x06\x6d\ \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\x06\x34\x49\x44\x41\x54\x78\x5e\xad\x97\x5b\x6c\x54\xc7\ \x1d\xc6\x7f\x73\xce\xd9\x8b\xbd\xf6\xfa\x16\xa0\xbe\x00\x0e\xb2\ \x69\x63\x24\x42\x4a\x21\x22\xa1\x2d\x95\x62\xa5\x2f\xee\x4b\x68\ \x2b\x95\xa6\x55\xa5\xc6\x60\x55\xaa\xda\xb4\xaa\xfa\x56\x09\x55\ \xca\x03\x94\x27\xda\x07\x84\x14\x29\xad\xc4\x8b\xa5\x52\x83\x79\ \x08\xc5\x18\x39\x0e\x69\xd3\x84\x9a\x9b\x63\x6a\xec\xb2\x04\x1b\ \x3b\xbb\xf6\x7a\x8f\xbd\xbb\xde\xb3\x67\xa6\xc3\x68\x85\xe5\x72\ \x6c\x88\xc9\x27\x7d\xfa\x9f\x9d\x87\xfd\x7e\xf3\x9f\x99\x73\x11\ \x4a\x29\x82\x24\x84\x78\x05\x78\x9e\xc7\x6b\x48\x29\xf5\x77\xd6\ \x28\x27\x20\xb8\x43\xbb\x01\x68\x97\x52\xbe\xc6\x63\x64\x59\xd6\ \x07\x1a\xf6\xbb\x40\xb7\x06\x39\xff\x14\x00\x26\xfc\xb7\xed\xf5\ \xe2\x60\x5d\x44\x44\x6e\xce\x89\x8a\x2b\x57\xae\x50\x5d\x53\x8d\ \x40\x00\xa0\x50\x08\x65\x28\x41\x29\x66\xd3\x69\x5e\xa9\x17\x2f\ \xbc\xb4\x4e\x6c\x3b\xf1\x1f\xb9\x47\x83\x7c\x5b\x43\x4c\x3c\x4d\ \x07\xf6\xff\x60\x8b\xdd\x2c\x25\xf8\x4a\x32\x3c\x3c\x4c\x65\x65\ \x25\x2b\xc9\x75\x5d\x1e\xc0\x6e\xa9\xb0\x22\x1b\xa2\x2a\x72\x3f\ \xa7\xea\x81\xb5\x03\x08\x2d\x05\x48\xa1\x0d\xf4\x5d\xbc\x48\x2e\ \x97\xc3\x2f\x16\x51\x4a\x91\xcf\xe7\x59\x5c\x5c\xa4\x50\x28\x50\ \xd4\x63\xb5\xb5\xb5\x94\x01\x58\x80\xf8\x82\xf6\x80\x01\x00\x36\ \x44\x05\x1f\x0f\xbc\x4b\x3e\x3b\x8f\x85\x44\x95\x32\xe2\xb6\xc4\ \xb6\x04\x21\x21\x70\x3e\x53\x6c\x8c\x3b\x80\x44\x2a\x04\xf0\x9c\ \x10\x02\xe0\xcb\x40\x05\x50\x0f\x34\x60\xc4\x48\x69\x9f\x24\x02\ \x01\x4e\x9c\x38\x21\x00\x81\x05\xd2\x87\x96\x96\x67\x09\x65\x6d\ \x14\xe5\x28\xa5\xb4\x41\x08\x58\x57\x19\x25\xe2\xd8\x44\x42\x16\ \xc3\x13\x73\x5c\xbc\x3d\x41\xf7\x58\x8e\x5c\x24\xbe\xa9\xbd\x7d\ \xf7\xef\x2d\xcb\x5a\xdc\xb1\x63\x47\x59\x55\x55\x95\xd3\xd8\xd8\ \x18\x7e\xe0\x86\x86\x86\xd0\xa5\x4b\x97\xdc\xae\xae\xae\x08\xf0\ \xd6\xaa\x1d\x00\x13\x44\x55\x2c\xc2\x73\xd5\x31\xf2\x9e\x4f\xa1\ \x28\x91\x4a\x61\x09\x41\xd8\xb1\x88\x86\x6c\xe6\x72\x05\x12\xa2\ \x8e\x3f\x9f\xff\x2b\x0d\x4d\x1b\x01\x22\xc0\x66\x96\x84\xef\xfb\ \x78\x9e\x47\x75\x75\xb5\x9e\x50\x4b\xf4\xea\xd5\xab\x87\x84\x10\ \x28\xa5\xde\x5a\x11\xc0\xb2\x41\x00\xb6\x2d\x90\xda\xb6\x14\x38\ \x08\xa4\x12\x58\xc2\x8c\x1b\x8f\x4c\xb9\xec\x7b\xf5\x3b\xd4\x37\ \x36\x11\x7c\x2f\xc1\x84\x67\x32\x19\xca\xcb\xcb\xcd\x66\x3e\x76\ \xec\xd8\x26\xbd\x7f\x0e\x2e\x41\x2c\x01\xd0\xd9\xd9\xa9\x0e\x1d\ \x3a\xa4\x6c\x21\x08\x59\x10\xb6\x2d\x1c\xc7\xc6\x42\x50\xb4\xcd\ \x1a\x1b\x00\xc7\xb2\x88\x38\x96\xae\x02\x60\x59\x78\x10\xc0\xdc\ \xdc\x1c\x35\x35\x35\x06\x20\x1a\x8d\x72\xe4\xc8\x91\xcd\xc0\x03\ \x88\x1b\x1a\xa2\xc7\x62\xb9\xb0\x6d\x74\x30\x66\x8d\xcb\x23\x36\ \xb1\xa8\xa3\xc7\x2c\x32\x8b\x1e\x93\x99\x1c\x63\xa9\x79\xee\xcc\ \x2e\xe8\xdf\x45\x72\xf9\x3c\xab\xc8\x2c\x41\x36\x9b\x35\xa7\x66\ \xe9\xff\x6d\x0e\x1c\x38\xb0\x1e\xe8\x00\x58\x06\xa0\xb4\x74\x16\ \x8e\x0d\xe1\x90\xc0\x53\x8a\xb1\xa4\xcb\x8d\x8c\x83\xd3\xb2\x97\ \xa6\x7d\xaf\xb3\xb5\xe3\x17\xac\xdb\xfb\x3a\x0d\x2f\xb4\x73\xfb\ \xce\x24\xfd\xfd\xfd\x24\x93\x49\x94\x52\xe6\xfa\xf8\xf1\xe3\xe8\ \xba\xac\x33\xe7\xce\x9d\xe3\xe8\xd1\xa3\x1c\x3e\x7c\x98\xde\xde\ \x5e\x12\x89\x84\x04\x2c\xa1\x15\xdc\x01\xed\xff\xce\xe6\xf8\xe7\ \x94\x4f\x6b\xc7\xcf\xf8\xe6\x2f\xdf\x26\xf6\xf5\x37\x99\x7c\xa6\ \x83\x6b\xfe\x2e\xae\xf1\x2d\x64\x6b\x17\xad\x7b\x7f\x4e\x5e\x56\ \x73\xfa\x6f\x67\xd1\x77\x4d\xee\xdc\x9d\xe2\x1b\xaf\x76\x72\xfd\ \xfa\x75\x03\xa0\x67\x6b\xd6\x3f\x16\x8b\x99\xeb\x78\x3c\x8e\xe3\ \x38\x25\x38\x04\xc0\x23\x00\x96\x25\x98\xca\x41\x3a\xde\xca\xfe\ \xdf\xbd\x4d\xd5\xae\xd7\x28\x84\x62\x08\xdb\x42\x59\x82\x6c\x41\ \x72\x7f\x66\x91\x4f\xee\x66\x18\xb8\xea\x72\xfa\x1f\x61\x64\xd5\ \x5e\xae\x8f\xdc\x67\x32\xd7\xc6\x85\x0f\xee\x9b\x00\xed\x87\xa1\ \xcd\xcd\xcd\xb4\xb5\xb5\x19\x37\x35\x35\xa1\xa1\x14\x20\x83\x1f\ \x46\x16\xdc\x71\x15\xdf\xff\xe9\x6f\xa8\x6c\xd8\x48\xe2\xec\x3b\ \x4c\x8f\x5e\xc3\x89\x94\xb1\xb5\x79\x07\x9b\x5b\xb6\xf3\x49\x79\ \x25\x63\x09\x97\xcf\x66\xf2\xdc\x9d\xce\x32\xa1\xed\x88\x0d\x4c\ \x27\xe7\xd8\xb7\x2b\xca\xfa\x25\x00\x33\x7b\x3d\x6b\xea\xea\xea\ \x00\xcc\x75\x2a\x95\x32\x00\x4a\x2b\x10\xa0\xb9\x5a\x70\xe1\x9d\ \x63\x28\x2c\xca\xe6\xc6\xd9\x10\x8f\x52\x94\x92\x7b\xc3\x7d\x24\ \x65\x05\xdb\xda\x7f\x4c\x4d\xdb\xcb\x7c\x3c\x9c\x66\xd2\x5f\xc0\ \xcd\x78\x2c\xcc\x6b\x2f\x78\x20\x00\xb5\x74\x3a\x42\xa1\x90\x09\ \x2d\xdd\xea\x1f\x8e\x01\x2a\xf8\x3e\x60\xc1\xc6\xb8\xa0\x50\x1c\ \x23\x1c\x8b\x53\xb7\xa5\x96\x92\x78\x76\x7d\x05\xe9\xac\xc7\x68\ \xff\x9f\x98\xae\xbc\x4c\xcb\xf6\x83\xb8\x0b\x61\xbc\x82\xa4\x58\ \x94\x78\xda\x21\xc7\x42\x2d\xaa\x80\xe3\x69\xa0\x96\xd5\x15\x01\ \x00\xd6\xc7\x43\x84\xca\x23\xfc\xbf\x6a\x63\x21\x9e\xa9\x0c\x73\ \xe1\xdf\x83\xec\xd9\xf9\x13\xca\xa3\x0e\xb9\x32\x47\x03\x28\x03\ \x61\x6b\x00\x16\x4b\x21\xa5\x1c\x25\x30\x2a\x15\xa4\x5c\x05\x40\ \x58\xa5\x2a\xcc\xf5\x23\xfa\x70\x6c\x86\xf1\x59\x8f\xef\xfd\xfa\ \x8f\xdc\xca\xd4\xe0\x44\x5c\xa2\x11\x1b\xcf\x93\x14\x3d\x07\xd3\ \x01\xa5\x90\x52\xf2\x50\x6a\x59\x01\x56\x05\x10\x08\x4c\x0d\x04\ \x18\x9d\x76\xf9\xd5\x5f\x86\x18\xbd\xb7\x80\x3d\x93\x67\xd3\xba\ \x32\xf2\x79\x5f\xbb\x68\xea\xce\xaf\xd4\x70\xf9\xdd\xe0\x25\x00\ \x9e\x78\x09\x4c\xb8\x10\x3c\xa2\xd6\x2f\x55\xf2\x87\x1f\x3e\xcf\ \xf5\x4f\x33\x44\x1b\xb7\xb1\xf3\xc5\x97\x59\x12\x5c\x4e\x60\x8e\ \xdb\x53\x01\x28\xc0\x12\x25\x00\x6d\xd4\x52\x7d\xb1\xb5\x96\xdd\ \x5b\xe2\x74\xbf\x97\xa5\x6a\xf7\x57\xf9\xd1\x1b\x6f\x10\xa0\xb5\ \x03\x98\xb5\x37\xd5\xd8\x08\x01\xd2\xcb\x53\x70\x53\x78\xf3\x33\ \x14\xb3\x69\x0a\x19\x1f\x25\xfd\xd5\x82\xd6\x08\xf0\xf0\x29\xe7\ \xe3\xe7\x33\x14\xe6\x75\xa8\x0e\xd6\x00\xcb\xf7\x89\x10\xc1\x33\ \x7d\xfa\xd7\x72\x8c\xb2\x13\x37\x03\xc7\x01\xb2\x1e\xfe\xad\x94\ \xcc\x6f\xf7\x44\x54\x03\xd8\x5f\x70\x07\x08\x92\x09\xfd\xd7\x3d\ \x3f\xfd\x7e\x42\xa6\xcf\xdf\xf6\xef\x02\xee\x76\x3b\xfc\x92\x06\ \xa8\xe3\x73\xca\x75\x5d\x1f\x70\x57\xed\x00\x40\x32\xab\x0a\x1f\ \x7e\x2a\xd3\xbd\xb7\xfc\xd4\xcd\x69\x39\x05\xf4\x03\x97\x74\x68\ \xbf\x10\xa2\xd3\xb6\xed\xaf\x7d\x9e\x25\x58\x58\x58\xf0\x07\x06\ \x06\xd2\x27\x4f\x9e\x9c\x06\xba\x83\x00\x3e\x1a\x49\xca\xad\xe3\ \xb3\x2a\xd7\x3b\xe2\xa7\x6e\x4c\xcb\xd1\x52\xe8\x59\x1d\x74\x8b\ \x00\x3d\x09\xc0\xd0\xd0\x90\xdb\xd3\xd3\x93\xd2\x4e\xcf\xce\xce\ \x9e\x2e\xbd\x1d\xdf\x08\x02\xe8\xee\xea\x29\x00\x8c\x04\x84\x06\ \x85\xaf\x08\x30\x35\x35\x55\xd0\x2f\x22\xa9\x53\xa7\x4e\x25\xc7\ \xc7\xc7\x2f\x03\x67\x81\x7e\x1d\xec\xae\xb8\x09\x4b\xdf\x76\xda\ \x4f\x26\x85\x01\x40\x08\x40\x61\x5a\xfc\xde\xe0\x60\xba\xbb\xbb\ \x3b\xa5\xdf\x8a\xcc\x24\xd0\x5e\xed\x73\xcd\x61\xed\x9a\x77\x33\ \x6e\x11\x60\x70\xf0\xfd\x74\x5f\x5f\x5f\xfa\xcc\x99\x33\xa6\xc5\ \xa5\xd0\x8f\x78\x02\x89\xb5\x9e\x63\x21\x44\x18\x78\x13\xd8\x4f\ \x69\x73\x06\xb4\xf8\xb1\xfa\x1f\xbd\xfa\x2a\x5f\xf2\xd8\x15\x9d\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\xa3\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\x35\x49\x44\x41\x54\x58\xc3\xe5\ \x97\xcd\x8f\x54\x45\x14\xc5\x7f\xb7\xea\xd6\x7b\xaf\xdb\x6e\xc7\ \xf9\x40\x9d\x89\x46\x4d\x34\x99\x44\x8d\x1a\x48\x98\xc4\x8c\x1f\ \x1b\xfe\x02\x4c\x5c\xf1\x07\x18\x16\x2e\x4d\x5c\x6b\x58\xc3\x8e\ \xc4\x8d\x1b\x17\xce\x82\x68\x74\x41\x5c\x18\x0d\xe2\xc4\xc6\x00\ \x3d\x60\x50\x51\x19\x60\x02\xa2\x0e\x0c\x83\xd3\xfd\x5e\xf7\x94\ \x8b\xaa\xee\xf9\x60\xe6\x0d\x84\x51\x16\x56\x52\xa9\xce\x7b\xb7\ \xeb\x9e\x3a\xf7\xd4\xa9\x7a\xea\xbd\xe7\x7e\x36\xe5\x3e\xb7\x3e\ \x80\x5d\xbb\x76\xbd\x03\xec\xfd\x8f\xf2\x4e\x35\x1a\x8d\x03\xeb\ \x19\xd8\xbb\xef\xbd\xa3\x3b\x1f\x1f\x76\x00\x9c\x3c\x3a\xcf\xcc\ \x97\x37\x58\x9c\xef\xdc\x53\xa6\xda\xa0\xf2\xdc\x6b\x03\xbc\xb8\ \x67\x10\x80\x8b\x7f\x16\x7c\xf8\xee\x1e\x80\xdb\x00\x70\xfc\xec\ \x1c\xdf\x3f\x30\x04\x78\x2e\xfd\xb8\xc0\xfe\xb7\xce\x6f\xcb\x72\ \x0f\x1d\x79\x9a\x0b\x23\x96\xd3\x9f\x1f\x64\xfc\xd5\x7d\x9b\x6b\ \x40\x45\xb0\x16\x40\x78\x70\x2c\x23\xcb\xb2\x6d\x01\x30\x30\x96\ \x61\x8d\x50\x1b\x7c\x14\x23\x25\x22\x14\x2b\xd8\x18\x91\xd5\x95\ \x73\xe7\xce\x83\x2a\xb8\x04\xd2\x14\xb2\x0c\xd2\x2c\x8c\x49\x0a\ \x49\x12\xde\x77\x3a\x90\xe7\x90\xb7\xa1\xd5\x82\x76\x2b\x8e\x6d\ \x28\x72\xb2\xfa\x38\xd6\x0a\xe3\xaf\xbc\x49\x6b\xf1\xfa\xe6\x00\ \xac\x15\xac\x15\x04\xb0\x46\xd8\xbd\x7b\xe7\x16\x6b\xeb\x86\xae\ \x80\x5a\xa8\x56\x81\xea\x6d\x51\x8d\xaf\x04\xb5\x82\xf7\xa0\xa6\ \x84\x01\x67\x05\x35\x82\x08\xa8\x0a\x95\x2c\xc3\x23\x20\x1e\x08\ \xc0\xf0\x1e\x2f\x02\xde\x23\x12\x26\x15\x7c\x88\x23\xc4\x21\x1e\ \x3c\x21\x5e\x40\x4d\x58\x18\x40\xd7\x4a\x89\x06\xac\xa0\xda\x63\ \x00\x9a\x33\xbf\x05\x8a\x53\x07\x69\x02\x95\x04\xb2\x34\xf6\x04\ \x12\x07\x4e\xa1\xe8\x40\x5e\x40\x2b\x8f\xbd\x05\x4b\x39\xb4\x73\ \xc8\x0b\x54\x87\x71\x3d\x00\x2a\xe5\x25\x70\x31\x40\xd5\x30\x39\ \xf9\xd2\xd6\x0a\xf3\x3e\xd0\xaf\x16\xaa\x1b\x8b\xf6\xd8\x27\x61\ \x61\xbd\x1c\x25\x25\x20\x00\xf0\x81\x8d\x34\x4d\xa3\x3a\xc3\xb3\ \x98\x11\x89\x6c\x07\xda\x63\x09\x56\x98\x5f\x29\x46\xfc\x61\xcd\ \x72\x7f\x61\x1d\x2d\xd1\x80\x3a\x09\x54\x49\x18\x4f\x34\x2f\xe0\ \x9d\x85\xc4\x21\x89\xc3\x67\x09\x92\x69\xd8\x11\x89\xe2\x13\x87\ \x58\x8b\xef\x76\x91\xbc\x80\xbc\x03\xed\x02\xdf\x6a\x23\xed\x02\ \xf2\x02\x9f\x77\x50\x1d\x45\xd5\x20\x78\x3a\xeb\x54\x78\x9b\x06\ \x9c\x33\x78\x0f\x03\x8f\x24\xbc\xfe\xf2\xf3\x77\x68\xe8\x36\x68\ \xa4\xbe\xf1\xeb\xc6\xfc\xdf\xb1\x04\x52\x5e\x82\x44\x4d\x5f\x84\ \x8f\x0d\xa5\x38\xe7\xb6\xc5\x88\x9e\x18\x4b\xb9\x76\xb3\x03\x08\ \x9d\x52\x11\xaa\x90\xb8\x50\xef\x5a\xc5\x30\x7d\xb1\xcb\x40\xc5\ \xb0\x0e\xf4\x26\xad\x57\xf9\x55\x2e\xe1\xe1\xc6\xd2\x32\xf5\xcc\ \x70\x7d\xc9\x84\x2d\xe9\x4a\x19\x10\x9c\x1a\xc0\x73\xe5\x66\x97\ \x2b\x37\xbb\xac\x51\x57\x3f\xd7\xaa\x64\x7e\xc5\x27\xa2\x29\xac\ \x05\x15\xc3\x9c\x0b\xb5\x77\xa6\x6c\x17\xa8\xc1\xa9\x20\xc8\x1a\ \x35\xaf\x9b\x35\x1a\x8f\x59\x31\x9e\xfe\x7b\xe9\xef\x14\x00\xf1\ \x82\xef\x9b\x58\x30\x2b\x57\x56\x02\x55\x21\xd1\x90\xfc\xe7\x53\ \xdf\xf2\xeb\x99\x13\x2c\x2d\xde\xb8\xa7\xfa\x57\x6a\x03\x3c\xf5\ \xec\x4e\x9e\x79\x61\x02\x0f\xa8\x33\x5b\x31\x10\x03\x7c\x87\xf7\ \xf7\xbf\xc1\xc2\xc2\x02\xb7\x6e\xdd\xa2\x28\x0a\x44\x04\x6b\x2d\ \xd6\x5a\x54\x15\x55\xc5\x39\x87\xaa\x62\xad\xc5\x98\xf0\xdf\xe5\ \xe5\x65\xf2\x3c\xef\xf7\x23\xcd\xf9\xb8\xf2\x2d\x18\x70\x56\x50\ \x17\x18\xdc\x31\x3a\xb6\x72\x4f\x38\x7e\x9c\xe9\xe9\x69\x8c\x31\ \x78\xef\x99\x98\x98\x60\x72\x72\xf2\x8e\x59\xd8\x31\x3a\xd6\xdf\ \x86\xae\xd4\x09\x55\x70\x36\xac\xa2\x56\xaf\xf7\x6b\x39\x33\x33\ \xc3\xd0\xd0\x10\xd6\x5a\xbc\xf7\x34\x9b\xcd\xbb\x02\x50\xab\xd7\ \x70\xd1\x88\xb4\xd4\x88\x14\x9c\x0b\x27\x5c\xa0\x2a\x00\xa8\x56\ \xab\x64\x59\xd6\xa7\xb8\x37\xde\x69\x73\x1a\xa9\x17\x41\x4b\xad\ \x38\x1e\xc7\xbd\x23\xb4\xd7\x8c\x31\x88\x44\xdf\x8f\x3a\xb8\xab\ \x9b\xaf\x35\xa8\x0d\xf3\xf6\x18\x2e\x3d\x8e\x83\x29\x6d\xe3\xd5\ \xdb\x12\xa9\xf7\xe5\x56\x6c\xad\xf4\x91\x0e\x8e\x0c\xc3\xf2\xef\ \xdb\x02\xe0\xa1\x91\x61\xd4\xc2\xb5\x2b\x97\x59\x9c\xbf\xbe\x05\ \x03\x36\xf8\xc0\x60\xad\x02\x0b\xdb\xc3\xc0\x50\xad\xc2\xec\xc5\ \x4b\x9c\xfd\xee\x1b\xce\x9f\x9c\x9e\x03\xa6\x36\x04\x60\x24\x5e\ \x4a\x05\x12\x0b\xed\x91\x27\xa9\x3d\x0c\x6f\x1f\x38\xc8\x66\xc7\ \x81\x27\x3a\xf1\x2a\xe7\x35\x1e\x32\x81\x14\x28\xba\x70\xf9\xea\ \x55\xce\x34\x8e\xd1\xfc\xfa\x8b\xb9\xd9\x1f\x4e\x1d\x02\x0e\x6f\ \x08\xe0\xb3\x8f\x3e\xe0\xa7\xd3\x27\x57\x99\xe9\xda\xa3\x86\x55\ \xe6\xbb\x1e\x04\x1b\x3c\x5f\x1d\x6f\x7c\x77\xee\x8f\xd9\x5f\x0e\ \x01\x87\x1b\x8d\xc6\x5f\x1b\x01\x98\x9a\xfe\xf4\xe3\x7f\xf5\x73\ \x6c\x7d\xf2\x35\x00\xe2\xb7\xda\x81\xff\xdd\xd7\xf1\x3f\x4d\xf0\ \x4b\xb9\xe8\x46\x89\xaf\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x08\x19\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x07\xab\x49\x44\x41\x54\x58\xc3\xad\ \x57\x5b\x50\x93\x67\x1a\xf6\xca\xce\xec\xcc\xf6\x62\x2f\xbc\xd9\ \xe9\xce\xec\x6e\xbd\xda\xd9\x9b\xb5\xce\xba\x3b\x7b\xb0\xad\xcc\ \x7a\xb1\xce\xce\x3a\xb3\x76\x54\x70\x75\xdb\xe2\x81\xd6\xb6\x54\ \x04\xbb\xa5\x20\x6d\xc1\x82\x06\x08\x07\x51\x42\x80\x80\x80\x02\ \x21\x81\x10\x92\x40\x48\x10\x73\x24\x21\x67\x72\x80\x04\x42\x20\ \x9c\x09\x47\xb5\x54\x78\xf6\xfb\x7e\x13\x16\x30\x58\x8b\x7d\x67\ \x9e\xf9\x2f\x92\xfc\xcf\xfb\x3e\xcf\xfb\xbe\xdf\x97\x5d\x00\x76\ \xfd\x98\x20\xf1\x0b\x82\x14\x02\x03\xc1\x75\x82\x03\xcf\xfd\xfe\ \x8f\x48\xbc\x9b\x20\xe1\x57\xaf\xef\xb5\x2a\x8c\xd6\x65\xdb\x02\ \x60\x19\x1e\x5b\x09\x27\xf1\x33\xfa\x19\x81\x22\xfc\xdc\x3e\x76\ \x48\x7e\x8a\xa0\xb9\xb6\x59\x1c\x32\xcf\xad\x42\x39\xfe\x1d\x44\ \xf6\x51\xd8\xc7\xe6\xe8\x87\x86\x3d\x7b\xf6\x58\x53\x52\xae\x2c\ \xca\x3a\x3a\x10\x4e\xe2\xe5\x49\xc3\xc4\x31\x04\xb7\x3e\x49\xf9\ \x2c\x60\x9b\x5d\x59\x53\x4d\x03\x4d\xb6\x11\x34\xeb\xfb\x20\x31\ \x79\x60\x19\x9d\xc5\xbb\xef\xbe\x3f\xc5\xab\xbe\x83\xf1\x89\x29\ \x4c\x4f\xcf\xae\x92\xef\xd7\xbc\x74\x02\x11\x9f\x0f\xbe\x1d\xe3\ \xb2\x04\x43\x4f\xb4\x33\x40\x8b\x7b\x06\xcd\x3d\x2e\x34\xeb\xec\ \xa8\x57\xf6\x20\x87\x53\x85\x32\x5e\x35\x43\xbc\xb0\xf4\x90\x81\ \xc1\x60\x5c\x26\xbf\x4b\x7c\xe1\x04\x48\x1c\x24\x38\x41\xfd\xdd\ \xea\x73\x27\xf1\xb9\x27\x04\x48\x87\x97\xc1\xd7\xbb\x20\x22\x55\ \x37\xdc\x37\xa2\xb8\x4e\x88\x2c\x56\x3e\xcc\x56\xdb\x3a\x71\x04\ \x2c\x16\x6b\x2c\xfc\xce\xe7\x27\x10\x91\x36\x93\x95\x3f\x46\x7d\ \xa5\xfe\x12\xc4\x6f\xf4\x59\x31\xb6\x02\x7e\xef\x20\x5a\x7b\x9c\ \xe0\x3f\x30\xa1\x4c\x28\x43\x46\x0e\x1b\xb2\x0e\xf9\x26\xd2\xf9\ \xc5\x65\xcc\x2d\x2c\x21\x34\xbf\x88\xbd\x7b\xf7\x5a\xc9\x3b\x7e\ \xba\x6d\x02\x24\x7e\x43\x90\x46\x3d\x35\x13\x69\x75\xb3\x80\xd2\ \x3f\x0f\xcb\xc4\xe2\x9a\x50\xa1\x5a\xb4\x6c\xf1\x59\xa0\xb6\xa0\ \xa6\x5d\x8d\x2f\xb2\x73\x71\xb7\x9e\xff\x0c\x31\x25\x9d\x09\xcd\ \x63\x62\x6a\x06\x83\x43\x81\x27\xe4\xdd\xbc\x2d\xd3\xb0\x3b\x92\ \x03\x33\x26\xd4\x53\xb5\xd3\xfb\x58\x4f\x88\xc5\x03\x21\x88\x2c\ \x43\x50\xba\x46\xd0\xed\x09\x42\xe5\x9b\x42\x9b\x73\xfc\xa9\xcf\ \x5a\x1b\xee\x2a\x74\xc8\xbc\xc9\x45\x09\xa7\x6c\x93\xcf\x9b\x88\ \x27\xa7\x11\x18\x1d\xc3\x80\x6f\x08\xa2\xd6\xd6\x25\xc2\x51\xdb\ \x28\x12\x87\xc6\x1f\xaf\x82\x2f\x62\x94\x4d\x89\x24\x90\x22\xea\ \x52\x2d\x9a\x42\xab\xe8\x18\x79\x04\xa1\xc5\xcf\x10\x53\x74\xf6\ \x0d\xa3\xd3\xe1\x87\xd4\x3c\x80\x16\xbd\x03\x0d\x5d\x06\x14\xd5\ \x0a\x90\x91\x95\x0d\x2f\x79\xf1\xc6\xaa\xa9\xd4\xb3\x73\x0b\x4c\ \xc5\x94\xd8\xdd\xef\x85\xc9\x62\x05\xb7\xbc\x12\xa5\xe5\x95\x4b\ \x13\xf3\xcb\xab\x23\x0f\x01\x37\xd9\x11\xe6\xd9\x15\x84\x97\x15\ \x13\x06\xcb\x3c\xd0\x68\xf2\xa3\xdd\xee\x5f\x27\x96\x3b\x86\x20\ \xb3\x78\xd7\x7d\xe6\x08\xa4\xf8\x3c\x33\x1b\x2a\x8d\x36\xaa\xdc\ \x53\x33\x21\x8c\x8e\x8d\x33\x15\xd3\x26\xe4\x37\x09\xf1\xc1\xc5\ \x8f\x51\x73\xaf\x01\xbe\x65\x60\xfc\x11\xa0\x23\x13\x23\xf2\xce\ \xa1\xbe\x5d\xb9\xb8\x51\x01\x83\x81\x74\x74\x4d\xa7\x1e\x0a\x67\ \x80\xa9\xb8\xdd\xea\x83\xd8\xe8\x42\x93\xca\xcc\xf8\x7c\xe5\xcb\ \x2c\x88\xda\x24\x51\x89\xa7\x67\xe7\x18\x1b\x86\x86\x47\x60\x77\ \x38\x49\x82\x3a\x24\x7c\xf8\x21\xae\xb3\x0b\xe1\x99\x5c\x80\x6f\ \x09\xd0\x90\xde\xe1\x0f\x2c\x81\xab\x1f\xc4\x7d\xef\x04\xdd\x07\ \x1d\x61\xeb\xff\x9f\xc0\x1d\xb9\x16\x1d\xf6\x21\x48\xcc\xfd\x4f\ \x7d\xee\xd4\x22\x9d\x55\x84\xaa\x9a\xba\x4d\x3e\x47\xe4\x8e\xf8\ \x3c\x3c\x12\x84\xd3\xdd\x0f\xbd\xc1\x88\xc2\xe2\x62\x9c\x7e\x2f\ \x1e\x3d\x03\x01\xf4\x2f\x02\x83\x84\xbc\xc5\xff\x2d\xee\x3a\x43\ \x28\x51\x91\xf7\xf6\x05\xf1\x4e\xdc\xbf\x7d\x84\x33\x69\xe3\x20\ \x18\xf4\x33\xab\xe0\xc9\x54\x68\x35\x38\xd1\xd8\xdd\x0b\x9e\x58\ \x89\xac\x5c\xf6\x33\x3e\x47\xaa\x9e\x9c\x9e\x65\xe4\xee\xf7\x0e\ \xa2\xd7\x6c\x41\x43\x03\x1f\x27\x62\xe3\x20\xe9\xd6\xc0\x45\xcf\ \x01\x52\x90\x24\xb8\x86\xb2\x9e\x00\x6e\xb4\xdb\x50\xd1\x1b\x44\ \x85\xce\x8b\x4a\x7e\x0b\x6d\xbe\x9b\x5b\x27\xd1\xa0\x99\xf8\x16\ \x65\x22\x05\xee\x29\xf4\x28\x13\xc8\x90\x78\x35\x0b\x1a\xad\x3e\ \xaa\xdc\x63\x13\x93\xf0\x0d\x0d\xc3\x66\xef\x83\xb4\x5d\x8e\xc4\ \x4b\x97\x90\xc3\xca\xc3\xd4\x63\xc0\x4e\x7a\x49\x31\x4e\xfa\x89\ \x94\x7f\x5b\x3b\x84\x7c\x85\x13\x25\x6a\x1f\x4a\xd5\x03\xe8\xf2\ \x30\xa3\x28\x22\xf8\xf9\x33\x09\x74\x8f\x2e\xa1\xa8\xbe\x15\xa5\ \x7c\x09\xb2\x4a\x2a\xf0\xcf\xe3\x71\x51\xe5\xf6\x07\x46\xd1\xe7\ \xf2\x40\xab\x37\x20\xfd\x6a\x06\x92\xbf\x48\x83\xcd\x37\x02\x27\ \xa9\xda\x40\x1a\x4c\xe0\x7b\x88\x52\x9d\x1f\x45\xdd\xfd\x0c\x71\ \x41\x97\x1b\xc5\xdd\x1e\x88\x9c\x41\xfc\xf9\xcd\xb7\x5d\x84\xeb\ \x6c\xb4\x43\xd0\x28\xf7\x4e\x23\xa7\xfc\x1e\xb2\x4b\xab\xf1\x51\ \xea\x57\x48\xfe\x6f\xea\xfa\x58\x51\xb9\x47\x82\xe3\xf0\x0c\xf8\ \x60\x34\x99\x51\xc9\xab\xc2\xfb\x67\xcf\x41\xfe\x40\x03\x3f\xe9\ \x6e\xb2\x8d\x19\xb9\x6f\x69\x06\x19\xd2\x9b\x2a\x2f\x72\xe5\x0e\ \xe4\x75\xf6\xa1\xf0\xbe\x1b\x1c\x95\x1b\xf9\x9c\xca\x29\xc2\x53\ \xb8\xdd\x29\xdc\x2b\x76\x04\x90\x51\xc8\xc5\x95\x6b\x79\x38\x11\ \x9f\x80\x9b\xb7\x6e\x33\x63\x15\x91\xdb\x6a\x73\x40\x22\x6d\xc7\ \x85\x84\x0f\x50\x74\xbb\x0c\xf3\x2b\x80\x9f\x34\x58\xf7\x24\x20\ \x1c\x7c\x84\x4a\xd3\x18\x38\xfa\x61\x86\x9c\x56\xfd\x55\xb3\x1e\ \xac\x0e\x3b\xb8\x3a\x1f\xd9\x21\x1e\x7a\x2f\xe0\x13\xbc\xba\x5d\ \x02\x26\xbe\xc1\x83\x94\x6f\xd8\x38\x9f\x9c\x8a\x03\x7f\x3d\x04\ \x63\xaf\x99\xe9\x6e\x2a\xb7\x46\xd7\x83\xa4\xcb\xc9\x48\xff\x3a\ \x8b\x8c\xd5\x3c\x53\xb5\x71\xf6\xa9\xdc\x35\xf6\x69\x5c\x97\x59\ \x19\xd9\xbf\x6e\x21\xa7\xa0\xd4\x82\x74\xbe\x1a\x57\x9b\x34\x60\ \xc9\xcc\x10\xbb\x82\xf8\xe5\xaf\x5f\xa7\x67\xc0\x3b\xe1\x75\x1f\ \x35\xcc\x35\xdd\x66\x7c\x94\x96\x85\xb8\x73\x17\xf1\x97\x43\x31\ \x4c\xd5\x74\x99\xf0\xaa\xaa\x71\xfa\xf4\x19\x68\xcc\x0e\x8c\x92\ \x2d\x36\x14\x1e\xab\x5a\xc7\x0c\x78\xe6\x71\x70\x0d\x23\x4c\xa3\ \x65\x8a\x0c\x8c\xec\xb4\xfa\x9c\xb6\x5e\x94\x74\x39\xd0\x66\xf7\ \xaf\x1e\x3d\x11\x4b\x47\x2e\x6f\xc3\x79\x13\x35\x2c\x5c\x99\x1a\ \xf1\x97\x3e\xc7\xd1\xd8\x33\xf8\x38\x31\x09\x86\x5e\x13\x1a\x9b\ \x04\xf8\xdd\x1b\xfb\x51\x4f\xd4\xf1\x90\x99\xee\x9a\x00\xaa\xad\ \x93\x60\x2b\x5d\x0c\x39\xf5\xbc\xf0\xbe\x67\xbd\xea\xcc\x16\x3d\ \x4a\x55\x1e\x08\x6d\x01\x94\xd4\xf1\x43\xe1\x65\x53\x40\xf0\xca\ \xf7\x25\x60\x2b\x6e\x6a\xc7\xa9\x84\x44\xc4\x1c\x39\x8a\xdc\x7c\ \x36\x5a\x5a\xc5\x38\x14\x13\x83\x2f\x39\x35\xc8\x14\x6a\x98\xe6\ \xa2\xd5\xd2\x27\xf5\x9a\x7a\x4c\x13\xa1\x49\x64\xb7\x99\x90\xdb\ \x6e\x46\xb9\xda\x8d\x06\xa5\x76\x39\x2c\x39\x3d\xf9\x4e\x13\xec\ \xd9\x72\xd4\x47\x0d\x3b\xab\x46\x88\x63\xff\x39\x8f\xdf\xee\xfb\ \x3d\x1a\xf9\x02\x9c\xbf\x90\x80\x93\xf1\x17\x70\xa3\xad\x07\x19\ \xc4\x4f\x4a\x14\xe9\x6e\xba\x58\xa8\xef\x2c\xfa\x94\x98\x50\x28\ \xb7\x40\xe9\x0e\x3c\xf9\x57\xec\x29\x2a\x77\x2d\xc1\x67\x04\xfb\ \xb6\xb9\xe4\x44\x8d\xbe\xcc\xb2\x5a\xfc\xe3\xe4\x19\x1c\x3c\xf4\ \x37\xb0\x72\xf3\xb0\xef\xc0\x1f\x50\x20\xd1\x21\x89\x27\x65\x2a\ \xa6\x4b\x85\x3e\xbf\x21\xd5\x46\xe4\x2e\x90\x5b\x21\xb0\x0c\xae\ \xe5\xdc\xe2\xd2\x11\x13\x13\xe4\x87\x6f\x3c\xaf\x3c\xe7\x96\x15\ \x35\x9c\x69\x45\xe5\xf8\xfb\xb1\x58\x1c\x3f\x19\x87\x37\xf6\xef\ \xc7\x8d\x3a\x11\x92\xab\xa4\x0c\x21\xed\x70\xea\x35\x55\x21\x8b\ \x34\x5b\xc9\x03\x37\x2a\x34\x6e\xd4\x49\x3a\x17\xc3\x72\x73\x08\ \x8e\x6d\x95\xfb\x87\x24\xe0\x4a\x65\x73\x70\xe4\xf8\x29\x1c\x3e\ \x7c\x98\x8c\x63\x2e\x32\x05\x2a\x5c\x22\xd5\xd3\x5d\x7e\x4d\xdc\ \x0b\x36\xe9\x74\x76\xa7\x1d\x77\x8c\xe4\x88\xb6\xf9\x9e\x84\xb7\ \x1a\x95\xfb\x22\xbd\x49\xfd\x80\x0b\x6d\xf4\x04\x32\x4a\x78\x4c\ \x0f\x9c\x4b\x49\xc3\xb5\xa6\x2e\x7c\xc2\x6d\x65\x36\x59\xf1\x83\ \x01\x5c\x97\x9a\xc1\x51\x7b\x20\xf3\x04\xd7\xce\x25\x26\x05\x36\ \xc8\xfd\xc7\x9d\xc8\x1d\xd5\x82\xdc\x1a\x01\xce\x5e\x4e\x45\x81\ \x58\x85\x78\xf6\x5d\x5c\xa9\x55\x90\xaa\xfb\xc0\x96\xdb\x50\xad\ \x75\xe3\xae\x54\x41\x2f\x10\xca\x0d\x72\xbf\xba\xd3\x6a\xa3\x05\ \xb7\xa2\x51\xf8\x1d\xaf\x43\x8d\x4f\xb9\x2d\x88\xcb\xe6\xe1\x9a\ \x48\x8f\xaa\x1e\x2f\x9a\x35\xe6\xc7\x7f\x7a\xf3\x2d\x57\x78\xac\ \xa8\xdc\xaf\xbd\xac\xdc\xd1\xe2\x08\xdd\x05\x5c\x75\x1f\xde\xcb\ \xaf\x45\xb9\x76\x00\x32\x67\x60\xf5\xc2\xa7\x97\xa9\xdc\xf7\x08\ \xd2\xa9\xdc\x3b\xf8\x03\xf3\xc2\xf1\x13\x82\xca\x1c\xee\x9d\x50\ \x0b\x39\x94\xb8\x0d\xc2\xc8\x16\xa3\x17\x87\xc3\x2f\x22\xf7\x0e\ \xff\xda\x6d\x8a\xdd\x61\x99\xd5\x1b\xb6\xd8\x6b\xbb\x5e\x32\xbe\ \x2f\x89\xff\x01\x66\xb9\x5f\xfc\x11\x80\x3d\xcf\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x2b\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\xbd\x49\x44\x41\x54\x58\xc3\xed\ \x57\x6b\x4c\x93\x57\x18\x3e\x23\x71\xc9\x32\xe9\x16\x97\xa8\x54\ \x65\x38\x9d\x02\x15\xf6\x03\x87\x32\x93\x01\x66\x2c\x5b\x70\xc4\ \x30\xff\x60\xa2\x2e\x1a\x3a\x1d\x4e\x03\xba\x31\x89\x5b\xb3\x80\ \xd9\x0c\x84\x02\x19\x58\x1c\x14\x8b\x85\xb2\x82\x95\x5e\xe4\x66\ \x0b\x8e\x31\xf8\xc3\x46\xcb\x2d\x81\x15\xdc\xa8\xc2\x1c\x1b\xb7\ \x6a\x69\x91\xf2\xee\xbc\x87\xaf\x0c\xdc\xb8\x0d\x61\xd9\xb2\x93\ \x3c\xed\x97\xf3\x7d\xfd\xde\xe7\xbc\xef\xf3\x5e\x4a\x00\x80\xfc\ \x93\x20\xff\x0a\x02\x74\x09\x28\x44\x14\xd9\x14\x71\x14\x01\x2b\ \x46\x80\xae\xdd\x64\xdd\xc6\x66\x22\x4c\xf8\x95\xc4\x8b\x47\xc8\ \xa1\xd3\xf7\xc8\x8e\x97\x3b\x38\x32\x61\x2b\x41\x20\x85\x9c\xbe\ \x30\x48\x2e\xdd\x80\x19\x40\x32\xab\x79\x4d\xf4\xbe\xfb\x72\x13\ \x68\x64\x06\x91\x04\x5e\xa3\x51\xf4\x06\xee\x85\x47\xf5\xd0\xbd\ \x83\xcb\x4d\x20\x9b\x9d\xf6\x40\x74\x2f\xbd\x16\x32\x3d\x20\x89\ \x3f\x48\xa5\x2c\x1b\x01\x8c\x31\x79\xc1\xbb\x9d\x88\x4b\xc6\xd7\ \xc6\x26\x0e\xa0\x10\xb9\xfd\x42\xfe\xc5\x2b\x36\x46\x8c\x12\x5c\ \x4e\x02\x93\xa7\xa7\xa7\x0d\xcc\xd3\x39\xb9\x98\x63\x36\x14\x0a\ \xd2\xe4\xa3\x2b\x41\x20\x8c\x29\x9e\x2a\xdf\x37\x47\xeb\xdc\x7b\ \xb5\xcc\x89\x9e\x40\x44\x96\x54\x83\x2b\x2c\x0b\x36\x46\x48\x08\ \x13\xf5\x64\x2a\x7b\x2e\x54\x03\x01\xf8\x03\x37\xbf\xc0\x0e\x34\ \x2a\x54\xdf\x62\x88\x52\xd5\x2c\x58\x03\x74\x1d\x16\x08\x04\x7a\ \x45\x55\xf5\xc8\xa0\x6d\x74\xc2\xd4\x73\xf7\x21\xbe\x73\x51\x95\ \x90\xae\x8f\xd0\x13\xcf\xe5\x94\x83\x87\xb4\x02\x9e\xcc\x2e\x03\ \xd4\x06\xdd\xaf\x99\xcb\xb0\xaf\xaf\xaf\x3e\xbf\xd2\x60\xb5\xdb\ \xed\x80\xf8\x79\xe4\x3e\xc4\x5e\xab\xb4\xb9\x88\x2f\x86\x80\x27\ \xd3\xc0\x67\xf9\x8e\x19\xf5\x60\xd7\x5e\x33\xba\x76\xda\x73\xee\ \x68\xd8\xc7\xc7\x47\x9f\xab\xab\xb0\x0e\x0f\x0d\xc1\x10\x87\xb2\ \xf6\x2e\xe7\x96\x37\xf7\x77\x73\x61\xd8\xbd\xe8\x5e\x80\x2f\x66\ \x9a\xa0\x86\xdf\xa9\x36\x42\xf7\xf0\x03\xd8\x19\x9f\xd4\xcf\xa5\ \xe7\x1a\x8a\x98\x2d\x7e\xfe\x6d\x97\x54\x1a\x6b\x5f\x5f\x1f\xb8\ \xd0\xd1\x73\x07\x62\x72\x15\x56\x4e\xc4\x87\x97\xd4\x8c\x30\x14\ \xe9\x15\xb7\x1e\x38\x1c\x0e\x40\xa4\xd6\x19\x31\x9e\x85\x9b\x05\ \x7e\x6d\xa9\x25\x1a\x5b\x97\xd9\x0c\xe6\x2e\x0a\xf3\x24\x14\xdf\ \x36\x8e\x7b\xbd\x1e\xd1\xcd\x42\xc8\x09\x6f\xa9\x04\x3c\xd1\xbd\ \x56\xab\x15\x10\x77\x7f\x1b\x84\xf3\x92\x5c\xbb\x52\xa9\x84\xfa\ \xfa\x7a\x30\x99\x4c\x0c\x75\xdf\x35\xc1\x51\xb1\x64\x18\xc9\x51\ \x44\x3e\xb6\x76\xcc\xb4\x40\x4f\x93\x5f\x7e\xd3\xd6\xdf\xdf\x0f\ \x32\x99\x0c\x44\x22\x11\xa8\x54\x2a\x90\x4a\xa5\xa0\xd1\x68\x20\ \x4b\x5b\x39\xbe\xe9\x95\xe0\x1f\xb8\x53\xaf\x79\x2c\xf3\x00\x97\ \x8e\x22\x9e\xc7\x86\xe6\x53\x29\x19\xf6\x82\x82\x02\xe6\xe2\xa0\ \xa0\x20\xe0\xf1\x78\x60\xb1\x58\x40\x5b\x5e\x01\xfb\xcf\x26\x0c\ \x2d\xa6\x53\xce\x67\x94\xcf\x09\x4c\x83\xe2\x5b\x7b\xe6\xc2\x60\ \x9a\xb2\x14\x14\x0a\x05\x88\xc5\x62\xc8\xcc\xcc\x84\xa2\xa2\x22\ \x50\xab\xd5\xd0\xd9\xd9\xc9\x60\xec\xfe\xc9\xb9\xc9\xdb\xa7\x75\ \x2e\xb7\xcf\x4b\x80\xae\xb7\xd8\x29\x70\x0e\xc0\x6a\x97\xac\x78\ \x88\xca\x7f\x82\xe2\x29\x89\x0e\x3e\x97\x2b\x21\x5b\x96\x0f\x07\ \x63\xe3\x47\x84\x1f\x26\xd8\x92\x72\x64\x8e\x6f\x1a\xbf\x07\xa3\ \xd1\x08\x2d\xad\x2d\xf0\xcb\xc0\x20\x1c\x38\xf1\xbe\x05\xb3\x62\ \xc1\x04\x5c\x69\x84\x85\x85\x84\x46\xdc\x26\xe7\x32\xac\x2c\xcf\ \x33\xb5\x13\xec\x3b\xe3\xba\xd3\x33\xaf\x82\xe5\xfe\x7a\x89\x06\ \x9e\xde\xfc\x62\x1b\xf7\x3c\x92\x8d\x7b\x66\xab\x4f\x5b\xca\x35\ \xed\x58\x43\x43\x3d\x34\x34\x34\x80\xa5\xb7\x17\x32\x14\xc5\xc3\ \xf3\xe9\xc0\x65\x3c\x92\xe5\x28\x9e\x36\x5d\xe5\x9c\x2a\x32\x78\ \x7d\xf4\x83\x2e\x5a\x6c\x12\x31\x0c\x1b\x25\xea\x71\xf7\x2f\xcb\ \x27\xef\x05\x87\x5f\xfe\xd3\xe4\x44\x0b\x4c\x68\xf4\xc9\x3e\x75\ \x95\x1e\x0c\x06\x03\xb4\xb7\xb7\xc3\xd7\xc6\x96\x31\xae\x81\x09\ \x66\xf1\x36\x6d\x38\x68\x3c\x49\x3a\x3a\x65\xf8\x62\x81\x83\x44\ \xbd\x57\x43\xb6\x0a\x5e\x9b\x2a\xc3\x94\x5c\xb0\x42\x0f\xab\x24\ \xb4\x04\x9f\x4a\xaa\x9b\x43\x37\x31\x28\xd4\x4f\xf2\x0a\xc7\x74\ \x3a\x1d\xd4\xd6\xd6\x82\xc9\x7c\xdb\xb9\x61\x9b\xf7\x5f\xea\x62\ \xb2\xe5\x7e\x9c\x75\x1f\x0d\xf3\xb2\xd4\x4e\xf2\xf6\xb1\xeb\x2e\ \xb6\xae\x94\xc3\x90\x6c\x97\x55\xc1\x4b\x57\xab\x80\x9c\x4d\x6e\ \x5a\xd0\x1c\x49\xbd\xb1\xe7\x88\xb0\xef\xca\x57\xc5\x50\x5a\x5a\ \x0a\x1d\x3f\xf6\x4c\x04\x06\x87\x74\x3c\xaa\x0b\xc2\x84\x46\x8d\ \x07\xc8\x6f\x02\xd9\xf9\xaa\x7e\x9a\xf1\x30\x46\x8e\x36\x20\xaf\ \xbc\x4a\x78\x43\x69\x00\x92\x28\x1d\x98\xcd\x95\xb3\x79\xc3\x7d\ \x3d\xbf\xf9\x44\x6a\xa6\x5d\x2e\x97\x43\x53\x4b\x2b\x44\x1c\x7b\ \xf7\xce\xf4\x14\x25\xae\xf1\x8a\xf5\x77\x9c\xf5\x70\x02\xc2\xd9\ \x0f\x89\xd1\x81\x03\x4f\x8e\xf7\xdc\xd2\x69\xe7\xf3\xdf\x75\xfc\ \x6f\x14\x2e\x36\xd2\xef\xd8\x17\x69\x49\xbe\x2c\x9d\xc8\xd3\x96\ \x3b\xa7\x0f\x31\x8c\x25\xc6\xdf\x9f\xba\x77\x5f\x71\x35\xa0\x41\ \x6c\xb5\x08\x8c\xf9\x94\xf1\xe0\xf0\x33\x4b\x9a\x7c\x68\x13\x5a\ \xbd\xce\xa3\xd9\x6b\x4f\x48\xf7\x0c\x0f\xb0\x0f\xfe\xf3\x87\xc8\ \xf9\x2f\xee\xb9\x49\x6e\x00\xf6\x7b\x3e\xed\xf7\x08\x1e\x2a\x3e\ \x5d\xe5\x58\xaa\xf1\x47\x5a\xf5\xb6\x59\x0b\x11\x1d\xb3\x43\xc9\ \x91\x38\x09\x39\xf9\xa9\x96\x21\xfa\x5c\x1a\x0d\xcf\xb3\xff\xff\ \x37\xfc\x4f\x13\xf8\x1d\xe7\x87\x19\xb9\x44\xc3\x01\xcf\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x3a\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\xcc\x49\x44\x41\x54\x58\xc3\xb5\ \x97\x5d\x4c\x5b\x65\x1c\xc6\x77\x6f\xbc\xd9\xe5\x12\x49\x20\x71\ \xd7\x26\xe3\x4e\x13\xb8\x70\xd1\x85\x44\xbd\x50\xe3\x10\x18\xe5\ \x2b\x2e\x26\x4a\x04\x27\x86\xaa\x8b\x99\xe0\xd0\xa2\x6c\x19\x86\ \x39\x17\xdc\x1a\x16\x98\x80\x40\x6c\xa6\x43\xca\x20\x2b\x83\x1e\ \x28\xcc\xda\xd1\x96\xd2\xd2\x4a\x7b\xfa\x01\xa5\xd0\xef\x16\x1e\ \xdf\xff\xdb\x1d\xc7\xcc\x04\x2a\x87\x93\x3c\x39\x6f\x21\x9c\xe7\ \xf7\x3c\xef\x47\x0f\x87\x00\x1c\xca\x46\xcf\xbd\xfa\xe9\xbb\x4c\ \x5a\x26\x61\x0f\x6a\x60\xca\xd9\xe9\x79\xd9\x9a\x3f\x5d\x50\xf2\ \xa5\xc1\xe9\x8f\xa7\x57\xc3\x40\x30\x02\x84\xa2\x19\xad\xc7\x32\ \x8a\x27\x81\x58\x22\x73\xbf\x79\x6b\xda\x4b\x10\x72\x02\x1c\x7b\ \xe7\xac\xda\x1c\xd8\xc8\x98\x12\x40\x84\x99\x85\xe3\x19\x91\x31\ \x29\x1a\x4b\x61\x25\x94\x44\x38\x9a\x42\x73\x87\xc6\xbe\x13\xc4\ \xff\x02\x90\x12\x93\x79\x24\xf1\xc8\x58\x92\xcf\x1f\x84\x5d\x8c\ \xc2\xe5\x09\x22\x12\x4b\xa3\xf4\xc3\xef\x4d\x34\x75\x59\x01\xb0\ \xeb\xd8\x36\xd5\x90\x9e\x3a\xfc\xcc\xb9\xe7\x5f\x2e\x11\x3f\x56\ \x9e\x45\x45\x55\x0d\x2a\x99\xde\xaf\xad\xc3\x9d\xb1\x89\xc7\x00\ \xac\xb6\x25\xfc\xb9\xe8\x87\x6b\x15\x58\xf6\x04\x10\x08\xc6\xd2\ \xaf\x9c\xbe\x70\x9f\x41\x1c\xd9\x15\x80\x5d\x87\x99\x1a\x8a\x8a\ \x8a\xcc\x92\x5a\x5b\x5b\xdd\xa4\xaf\x55\xad\xfe\xaf\x54\xdf\xa6\ \x06\x06\x06\x31\x39\x35\x85\xd9\xb9\x39\xe8\x26\x26\x50\x50\x50\ \x80\x21\xcd\x6f\x7c\xde\x49\xa6\xf9\x05\xcc\x98\x5c\x1c\xc0\xe1\ \x4f\x41\xf4\x85\xf0\x43\xaf\xce\xcd\x00\x6a\xf6\x02\x50\x43\x66\ \xd8\xe5\x8a\xc7\xe3\xf0\x7a\xbd\x48\xa7\xd3\x98\x9c\x9c\x44\x65\ \x65\x35\x66\x67\x8d\xbc\x81\x07\x66\x1b\x74\xd3\x16\x0e\x40\x32\ \x2d\x78\xf0\xdd\x8d\x51\x8f\xac\x00\xe1\x70\x18\x46\xa3\x91\x8f\ \x53\xa9\x14\x7e\xea\xed\x45\xe3\x27\x9f\x61\x86\x41\x38\x96\xdc\ \x50\x77\x75\xe3\x4c\x43\x23\xce\x35\x9d\xc7\xed\x91\x71\x5c\xbc\ \x3e\x2c\x2f\xc0\xc6\xc6\x06\xf4\x7a\xfd\x63\x40\x7d\x7d\xfd\x50\ \x32\x88\xd0\x46\x1c\x66\x9b\x0b\x82\xc1\x88\xa9\x19\x13\xac\x0e\ \x11\x97\xba\x64\x6e\x80\x00\xa6\xd8\x3a\xd8\x7e\x45\x22\x11\x94\ \x2b\x2a\x30\xae\x13\x40\xe7\x04\x6d\x57\xda\xaa\x34\xbe\x7c\x53\ \xe6\x35\x40\x66\x3a\x9d\x0e\xc3\xc3\xc3\xe8\x65\xf5\xf7\xf7\xf7\ \x43\xab\xd5\xa2\xaa\xba\x06\x63\x77\xf5\x90\x0e\x2a\x77\x90\xed\ \x04\xb6\x0e\xda\xbb\x65\x06\xa0\x79\xb7\xdb\xed\x18\x1a\x1a\x42\ \x67\x67\x27\x7a\x7a\x7a\x38\x50\x49\x69\x19\x6e\x69\xf5\x10\xd7\ \x00\x6f\x08\xb0\xf9\x00\x67\x00\xb8\xd0\x25\x33\xc0\xd6\xd6\x16\ \xdf\x09\x81\x40\x00\xa2\x28\xc2\xef\xf7\x63\x6d\x6d\x0d\xa7\x14\ \x95\xd0\xfc\xae\xe7\xa9\xc9\x7c\xc1\x0b\x98\x3d\x40\x9b\xdc\x00\ \xdb\x41\x36\x37\x37\xf9\x76\xa4\x56\x14\x15\xd5\xe8\xfb\x55\xe0\ \xa9\x1d\x81\x47\x00\xe7\x3b\x0f\x00\x80\xcc\x25\x80\x24\x33\x4f\ \x24\x12\x28\x2b\xaf\xe2\x00\x7f\xb8\x00\x8b\x98\x01\xa0\x36\x5a\ \xd5\x07\x30\x05\xff\x98\x27\x93\x3c\x3d\x4d\x49\xc9\xa9\x4a\x0e\ \xa0\xb7\xb3\x03\x89\x3d\xc5\xf8\x17\x30\xb1\x00\x7c\x71\xf5\x00\ \x00\xa4\xea\xc9\x98\x14\x8b\xc5\x50\xa6\xa8\x82\x7a\x48\xc0\x98\ \x19\xb8\x6b\x05\xe6\x9c\x99\xfb\xe7\x57\x64\x04\x90\xd2\x53\x6a\ \x02\x88\x46\xa3\xdc\x3c\x14\x0a\xa1\xb8\xb4\x02\xd7\x06\x05\xdc\ \x66\x87\xe4\xa0\x01\x1c\x64\xc4\x04\x28\x3b\x64\x06\x48\x3d\x9c\ \x73\x12\x99\xd3\xb9\x40\x20\xc5\x65\x55\xb8\xd8\x2d\xa0\x7f\x3a\ \x63\xae\x7d\x90\x69\xe0\xa3\x76\x99\x00\xfe\x5d\x3d\xa5\x26\xad\ \xae\xae\x72\x88\xb7\x4a\x2a\x70\xb9\x57\xc0\x3d\x1b\xb8\x7e\x9e\ \x01\xee\xcc\x03\x67\x2e\xed\x13\x40\xaa\x9d\x44\x8b\x8e\x92\xd3\ \x71\x4c\xdf\x01\x2b\x2b\x2b\x58\x5f\x5f\xe7\x10\x27\x59\x03\xdf\ \x74\x09\x50\x4f\x00\xbf\xcc\x65\x1a\xb8\x32\x06\x34\xec\xa7\x01\ \xc9\x58\xda\xeb\x64\x4e\x69\x29\x39\x1d\x44\x04\x40\xf5\xd3\xcf\ \xde\x7c\x5b\x81\x96\xeb\x02\x4f\x7e\x75\x1c\xb8\x71\x0f\xf8\x71\ \x2c\x9e\x7e\xbd\x4e\x6d\xa6\x37\xaa\xac\x00\x9e\x64\x2c\x6d\x37\ \x32\x25\x00\xd1\x23\xf2\xe4\x12\xcc\x1b\x27\x15\x68\xef\x11\xa0\ \xbc\x66\x5b\x7f\x4f\x35\xe2\x3c\x71\x9a\xbf\x8e\x69\xf7\xfc\x4a\ \x26\x01\x90\xa9\x24\x69\xb5\x53\x42\x32\x0f\x06\x83\x70\xb9\x5c\ \xdc\x90\x5e\x4a\xe8\xb3\xc7\xe3\x81\xdb\xed\xc6\xf1\x13\xaf\x25\ \x9f\x7d\xa1\x9c\x4c\x3b\x98\x8a\x99\x8e\x3e\xc9\x78\x47\x00\x95\ \x4a\xc5\x01\xa4\x15\x2e\xcd\x37\x19\x52\x52\x3a\xf7\x29\xb5\xc3\ \xe1\xe0\x22\xe3\xc5\xc5\x45\x0e\xf5\xe2\xf1\x97\x5c\xf4\x1e\xb9\ \x93\xe9\xae\x00\x2d\x2d\x2d\x6e\xe9\x60\xa1\xd4\xd2\x97\x0d\x8d\ \x97\x97\x97\xe1\xf3\xf9\x60\xb3\xd9\xf8\x7d\x69\x69\x89\x43\x10\ \x00\x8d\x0b\x0b\x0b\xcd\xb2\x00\xd0\xa2\x92\x52\x93\x11\x8d\xe9\ \x4e\xdf\x78\x54\x3b\x35\x60\xb5\x5a\x79\xf5\xd4\x0a\xfd\xce\x60\ \x30\x24\xf2\xf2\xf2\xee\xb3\x67\x1c\xd9\x17\x40\x53\x53\x93\x5b\ \x9a\x67\x4a\x4f\x22\x13\xaa\x9a\xc6\x16\x8b\x99\x37\x40\x9f\x47\ \x47\x47\x23\x6d\x6d\x6d\xde\xfc\xfc\x7c\x13\xfb\xdb\x41\xa6\xb2\ \xbd\x9a\xff\x27\x40\x73\x73\x33\x9f\x02\x4a\x47\x10\x54\x3f\x55\ \x3f\x3f\x3f\xcf\xeb\xd6\x68\x34\x91\xba\xba\x3a\xe7\xc3\xb4\x5d\ \x4c\x1f\x30\x1d\xcd\xc6\x78\x47\x00\xa5\x52\xe9\x76\x3a\x9d\xbc\ \x62\x4a\x4a\x6f\x3e\x94\xb4\xbe\xbe\xde\x99\x93\x93\x23\x99\x16\ \x67\x53\x75\x56\x00\x8d\x8d\x8d\x6e\x8b\xc5\x82\x81\x81\x81\x48\ \x6d\x6d\xad\x33\x37\x37\x57\x56\xd3\xdd\x00\xf8\x7f\x46\x4c\xc2\ \x41\x99\x6e\xd7\xdf\x43\x39\x56\x18\x85\x70\xc8\x04\x00\x00\x00\ \x00\x49\x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x07\ \x04\xca\x57\xa7\ \x00\x6e\ \x00\x65\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x0a\xa8\xba\x47\ \x00\x70\ \x00\x61\x00\x73\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x08\xc8\x58\x67\ \x00\x73\ \x00\x61\x00\x76\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x06\xc1\x59\x87\ \x00\x6f\ \x00\x70\x00\x65\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x07\ \x0a\xc7\x57\x87\ \x00\x63\ \x00\x75\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x06\x7c\x5a\x07\ \x00\x63\ \x00\x6f\x00\x70\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x02\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x7e\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xbc\ \x00\x00\x00\x54\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x70\ \x00\x00\x00\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x09\xc9\ \x00\x00\x00\x26\x00\x00\x00\x00\x00\x01\x00\x00\x03\x58\ \x00\x00\x00\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x16\x8d\ " 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() PyQt5_gpl-5.10.1/examples/mainwindows/separations.py0000755000076500000240000004503113245231431022564 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (pyqtSignal, QBuffer, QByteArray, QFileInfo, QIODevice, QMimeData, QPoint, QSize, Qt) from PyQt5.QtGui import (qBlue, QColor, QDrag, qGreen, QImage, QKeySequence, QPalette, QPixmap, qRed) from PyQt5.QtWidgets import (QApplication, QColorDialog, QFileDialog, QFrame, QGridLayout, QLabel, QLayout, QMainWindow, QMenu, QMessageBox, QPushButton, QVBoxLayout) class FinalWidget(QFrame): def __init__(self, parent, name, labelSize): super(FinalWidget, self).__init__(parent) self.dragStartPosition = QPoint() self.hasImage = False self.imageLabel = QLabel() self.imageLabel.setFrameShadow(QFrame.Sunken) self.imageLabel.setFrameShape(QFrame.StyledPanel) self.imageLabel.setMinimumSize(labelSize) self.nameLabel = QLabel(name) layout = QVBoxLayout() layout.addWidget(self.imageLabel, 1) layout.addWidget(self.nameLabel, 0) self.setLayout(layout) def mouseMoveEvent(self, event): """ If the mouse moves far enough when the left mouse button is held down, start a drag and drop operation. """ if not event.buttons() & Qt.LeftButton: return if (event.pos() - self.dragStartPosition).manhattanLength() \ < QApplication.startDragDistance(): return if not self.hasImage: return drag = QDrag(self) mimeData = QMimeData() output = QByteArray() outputBuffer = QBuffer(output) outputBuffer.open(QIODevice.WriteOnly) self.imageLabel.pixmap().toImage().save(outputBuffer, 'PNG') outputBuffer.close() mimeData.setData('image/png', output) drag.setMimeData(mimeData) drag.setPixmap(self.imageLabel.pixmap().scaled(64, 64, Qt.KeepAspectRatio)) drag.setHotSpot(QPoint(drag.pixmap().width() / 2, drag.pixmap().height())) drag.start() def mousePressEvent(self, event): """ Check for left mouse button presses in order to enable drag and drop. """ if event.button() == Qt.LeftButton: self.dragStartPosition = event.pos() def pixmap(self): return self.imageLabel.pixmap() def setPixmap(self, pixmap): self.imageLabel.setPixmap(pixmap) self.hasImage = True class ScreenWidget(QFrame): # Separation. Cyan, Magenta, Yellow = range(3) convertMap = { Cyan: qRed, Magenta: qGreen, Yellow: qBlue, } imageChanged = pyqtSignal() def __init__(self, parent, initialColor, name, mask, labelSize): """ Initializes the paint color, the mask color (cyan, magenta, or yellow), connects the color selector and invert checkbox to functions, and creates a two-by-two grid layout. """ super(ScreenWidget, self).__init__(parent) self.originalImage = QImage() self.newImage = QImage() self.paintColor = initialColor self.maskColor = mask self.inverted = False self.imageLabel = QLabel() self.imageLabel.setFrameShadow(QFrame.Sunken) self.imageLabel.setFrameShape(QFrame.StyledPanel) self.imageLabel.setMinimumSize(labelSize) self.nameLabel = QLabel(name) self.colorButton = QPushButton("Modify...") self.colorButton.setBackgroundRole(QPalette.Button) self.colorButton.setMinimumSize(32, 32) palette = QPalette(self.colorButton.palette()) palette.setColor(QPalette.Button, initialColor) self.colorButton.setPalette(palette) self.invertButton = QPushButton("Invert") self.invertButton.setEnabled(False) self.colorButton.clicked.connect(self.setColor) self.invertButton.clicked.connect(self.invertImage) gridLayout = QGridLayout() gridLayout.addWidget(self.imageLabel, 0, 0, 1, 2) gridLayout.addWidget(self.nameLabel, 1, 0) gridLayout.addWidget(self.colorButton, 1, 1) gridLayout.addWidget(self.invertButton, 2, 1, 1, 1) self.setLayout(gridLayout) def createImage(self): """ Creates a new image by separating out the cyan, magenta, or yellow component, depending on the mask color specified in the constructor. The amount of the component found in each pixel of the image is used to determine how much of a user-selected ink is used for each pixel in the new image for the label widget. """ self.newImage = newImage = self.originalImage.copy() # Create CMY components for the ink being used. cyanInk = float(255 - QColor(self.paintColor).red()) / 255.0 magentaInk = float(255 - QColor(self.paintColor).green()) / 255.0 yellowInk = float(255 - QColor(self.paintColor).blue()) / 255.0 convert = self.convertMap[self.maskColor] for y in range(newImage.height()): for x in range(newImage.width()): p = self.originalImage.pixel(x, y) # Separate the source pixel into its cyan component. if self.inverted: amount = convert(p) else: amount = 255 - convert(p) newColor = QColor( 255 - min(int(amount * cyanInk), 255), 255 - min(int(amount * magentaInk), 255), 255 - min(int(amount * yellowInk), 255)) newImage.setPixel(x, y, newColor.rgb()) self.imageLabel.setPixmap(QPixmap.fromImage(newImage)) def image(self): """ Returns a reference to the modified image. """ return self.newImage def invertImage(self): """ Sets whether the amount of ink applied to the canvas is to be inverted (subtracted from the maximum value) before the ink is applied. """ self.inverted = not self.inverted self.createImage() self.imageChanged.emit() def setColor(self): """ Separate the current image into cyan, magenta, and yellow components. Create a representation of how each component might appear when applied to a blank white piece of paper. """ newColor = QColorDialog.getColor(self.paintColor) if newColor.isValid(): self.paintColor = newColor palette = QPalette(self.colorButton.palette()) palette.setColor(QPalette.Button, self.paintColor) self.colorButton.setPalette(palette) self.createImage() self.imageChanged.emit() def setImage(self, image): """ Records the original image selected by the user, creates a color separation, and enables the invert image checkbox. """ self.originalImage = image self.createImage() self.invertButton.setEnabled(True) class Viewer(QMainWindow): # Brightness. Gloom, Quarter, Half, ThreeQuarters, Full = range(5) # Brightness value map. brightnessValueMap = { Gloom: 0, Quarter: 64, Half: 128, ThreeQuarters: 191, Full: 255, } def __init__(self): """ Constructor initializes a default value for the brightness, creates the main menu entries, and constructs a central widget that contains enough space for images to be displayed. """ super(Viewer, self).__init__() self.scaledImage = QImage() self.menuMap = {} self.path = '' self.brightness = 255 self.setWindowTitle("QImage Color Separations") self.createMenus() self.setCentralWidget(self.createCentralWidget()) def createMenus(self): """ Creates a main menu with two entries: a File menu, to allow the image to be selected, and a Brightness menu to allow the brightness of the separations to be changed. Initially, the Brightness menu items are disabled, but the first entry in the menu is checked to reflect the default brightness. """ self.fileMenu = QMenu("&File", self) self.brightnessMenu = QMenu("&Brightness", self) self.openAction = self.fileMenu.addAction("&Open...") self.openAction.setShortcut(QKeySequence('Ctrl+O')) self.saveAction = self.fileMenu.addAction("&Save...") self.saveAction.setShortcut(QKeySequence('Ctrl+S')) self.saveAction.setEnabled(False) self.quitAction = self.fileMenu.addAction("E&xit") self.quitAction.setShortcut(QKeySequence('Ctrl+Q')) self.noBrightness = self.brightnessMenu.addAction("&0%") self.noBrightness.setCheckable(True) self.quarterBrightness = self.brightnessMenu.addAction("&25%") self.quarterBrightness.setCheckable(True) self.halfBrightness = self.brightnessMenu.addAction("&50%") self.halfBrightness.setCheckable(True) self.threeQuartersBrightness = self.brightnessMenu.addAction("&75%") self.threeQuartersBrightness.setCheckable(True) self.fullBrightness = self.brightnessMenu.addAction("&100%") self.fullBrightness.setCheckable(True) self.menuMap[self.noBrightness] = self.Gloom self.menuMap[self.quarterBrightness] = self.Quarter self.menuMap[self.halfBrightness] = self.Half self.menuMap[self.threeQuartersBrightness] = self.ThreeQuarters self.menuMap[self.fullBrightness] = self.Full self.currentBrightness = self.fullBrightness self.currentBrightness.setChecked(True) self.brightnessMenu.setEnabled(False) self.menuBar().addMenu(self.fileMenu) self.menuBar().addMenu(self.brightnessMenu) self.openAction.triggered.connect(self.chooseFile) self.saveAction.triggered.connect(self.saveImage) self.quitAction.triggered.connect(QApplication.instance().quit) self.brightnessMenu.triggered.connect(self.setBrightness) def createCentralWidget(self): """ Constructs a central widget for the window consisting of a two-by-two grid of labels, each of which will contain an image. We restrict the size of the labels to 256 pixels, and ensure that the window cannot be resized. """ frame = QFrame(self) grid = QGridLayout(frame) grid.setSpacing(8) grid.setContentsMargins(4, 4, 4, 4) self.layout().setSizeConstraint(QLayout.SetFixedSize) labelSize = QSize(256, 256) self.finalWidget = FinalWidget(frame, "Final image", labelSize) self.cyanWidget = ScreenWidget(frame, Qt.cyan, "Cyan", ScreenWidget.Cyan, labelSize) self.magentaWidget = ScreenWidget(frame, Qt.magenta, "Magenta", ScreenWidget.Magenta, labelSize) self.yellowWidget = ScreenWidget(frame, Qt.yellow, "Yellow", ScreenWidget.Yellow, labelSize) self.cyanWidget.imageChanged.connect(self.createImage) self.magentaWidget.imageChanged.connect(self.createImage) self.yellowWidget.imageChanged.connect(self.createImage) grid.addWidget(self.finalWidget, 0, 0, Qt.AlignTop | Qt.AlignHCenter) grid.addWidget(self.cyanWidget, 0, 1, Qt.AlignTop | Qt.AlignHCenter) grid.addWidget(self.magentaWidget, 1, 0, Qt.AlignTop | Qt.AlignHCenter) grid.addWidget(self.yellowWidget, 1, 1, Qt.AlignTop | Qt.AlignHCenter) return frame def chooseFile(self): """ Provides a dialog window to allow the user to specify an image file. If a file is selected, the appropriate function is called to process and display it. """ imageFile, _ = QFileDialog.getOpenFileName(self, "Choose an image file to open", self.path, "Images (*.*)") if imageFile != '': self.openImageFile(imageFile) self.path = imageFile def setBrightness(self, action): """ Changes the value of the brightness according to the entry selected in the Brightness menu. The selected entry is checked, and the previously selected entry is unchecked. The color separations are updated to use the new value for the brightness. """ if action not in self.menuMap or self.scaledImage.isNull(): return self.brightness = self.brightnessValueMap.get(self.menuMap[action]) if self.brightness is None: return self.currentBrightness.setChecked(False) self.currentBrightness = action self.currentBrightness.setChecked(True) self.createImage() def openImageFile(self, imageFile): """ Load the image from the file given, and create four pixmaps based on the original image. The window caption is set, and the Brightness menu enabled if the image file can be loaded. """ originalImage = QImage() if originalImage.load(imageFile): self.setWindowTitle(imageFile) self.saveAction.setEnabled(True) self.brightnessMenu.setEnabled(True) self.scaledImage = originalImage.scaled(256, 256, Qt.KeepAspectRatio) self.cyanWidget.setImage(self.scaledImage) self.magentaWidget.setImage(self.scaledImage) self.yellowWidget.setImage(self.scaledImage) self.createImage() else: QMessageBox.warning(self, "Cannot open file", "The selected file could not be opened.", QMessageBox.Cancel, QMessageBox.NoButton, QMessageBox.NoButton) def createImage(self): """ Creates an image by combining the contents of the three screens to present a page preview. The image associated with each screen is separated into cyan, magenta, and yellow components. We add up the values for each component from the three screen images, and subtract the totals from the maximum value for each corresponding primary color. """ newImage = self.scaledImage.copy() image1 = self.cyanWidget.image() image2 = self.magentaWidget.image() image3 = self.yellowWidget.image() darkness = 255 - self.brightness for y in range(newImage.height()): for x in range(newImage.width()): # Create three screens, using the quantities of the source CMY # components to determine how much of each of the inks are to # be put on each screen. p1 = image1.pixel(x, y) cyan1 = float(255 - qRed(p1)) magenta1 = float(255 - qGreen(p1)) yellow1 = float(255 - qBlue(p1)) p2 = image2.pixel(x, y) cyan2 = float(255 - qRed(p2)) magenta2 = float(255 - qGreen(p2)) yellow2 = float(255 - qBlue(p2)) p3 = image3.pixel(x, y) cyan3 = float(255 - qRed(p3)) magenta3 = float(255 - qGreen(p3)) yellow3 = float(255 - qBlue(p3)) newColor = QColor( max(255 - int(cyan1 + cyan2 + cyan3) - darkness, 0), max(255 - int(magenta1 + magenta2 + magenta3) - darkness, 0), max(255 - int(yellow1 + yellow2 + yellow3) - darkness, 0)) newImage.setPixel(x, y, newColor.rgb()) self.finalWidget.setPixmap(QPixmap.fromImage(newImage)) def saveImage(self): """ Provides a dialog window to allow the user to save the image file. """ imageFile, _ = QFileDialog.getSaveFileName(self, "Choose a filename to save the image", "", "Images (*.png)") info = QFileInfo(imageFile) if info.baseName() != '': newImageFile = QFileInfo(info.absoluteDir(), info.baseName() + '.png').absoluteFilePath() if not self.finalWidget.pixmap().save(newImageFile, 'PNG'): QMessageBox.warning(self, "Cannot save file", "The file could not be saved.", QMessageBox.Cancel, QMessageBox.NoButton, QMessageBox.NoButton) else: QMessageBox.warning(self, "Cannot save file", "Please enter a valid filename.", QMessageBox.Cancel, QMessageBox.NoButton, QMessageBox.NoButton) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Viewer() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/multimedia/0000755000076500000240000000000013245231431017447 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/multimedia/audiodevices/0000755000076500000240000000000013245231431022113 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/multimedia/audiodevices/audiodevices.py0000755000076500000240000002515013245231431025137 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtMultimedia import QAudio, QAudioDeviceInfo, QAudioFormat from PyQt5.QtWidgets import QApplication, QTableWidgetItem, QMainWindow from ui_audiodevicesbase import Ui_AudioDevicesBase class AudioDevicesBase(QMainWindow, Ui_AudioDevicesBase): def __init__(self, parent=None): super(AudioDevicesBase, self).__init__(parent) self.setupUi(self) class AudioTest(AudioDevicesBase): def __init__(self, parent=None): super(AudioTest, self).__init__(parent) self.deviceInfo = QAudioDeviceInfo() self.settings = QAudioFormat() self.mode = QAudio.AudioOutput self.testButton.clicked.connect(self.test) self.modeBox.activated.connect(self.modeChanged) self.deviceBox.activated.connect(self.deviceChanged) self.sampleRateBox.activated.connect(self.sampleRateChanged) self.channelsBox.activated.connect(self.channelChanged) self.codecsBox.activated.connect(self.codecChanged) self.sampleSizesBox.activated.connect(self.sampleSizeChanged) self.sampleTypesBox.activated.connect(self.sampleTypeChanged) self.endianBox.activated.connect(self.endianChanged) self.populateTableButton.clicked.connect(self.populateTable) self.modeBox.setCurrentIndex(0) self.modeChanged(0) self.deviceBox.setCurrentIndex(0) self.deviceChanged(0) def test(self): self.testResult.clear() if not self.deviceInfo.isNull(): if self.deviceInfo.isFormatSupported(self.settings): self.testResult.setText("Success") self.nearestSampleRate.setText("") self.nearestChannel.setText("") self.nearestCodec.setText("") self.nearestSampleSize.setText("") self.nearestSampleType.setText("") self.nearestEndian.setText("") else: nearest = self.deviceInfo.nearestFormat(self.settings) self.testResult.setText("Failed") self.nearestSampleRate.setText(str(nearest.sampleRate())) self.nearestChannel.setText(str(nearest.channelCount())) self.nearestCodec.setText(nearest.codec()) self.nearestSampleSize.setText(str(nearest.sampleSize())) self.nearestSampleType.setText( self.sampleTypeToString(nearest.sampleType())) self.nearestEndian.setText( self.endianToString(nearest.byteOrder())) else: self.testResult.setText("No Device") sampleTypeMap = { QAudioFormat.SignedInt: "SignedInt", QAudioFormat.UnSignedInt: "UnSignedInt", QAudioFormat.Float: "Float" } @classmethod def sampleTypeToString(cls, sampleType): return cls.sampleTypeMap.get(sampleType, "Unknown") endianMap = { QAudioFormat.LittleEndian: "LittleEndian", QAudioFormat.BigEndian: "BigEndian" } @classmethod def endianToString(cls, endian): return cls.endianMap.get(endian, "Unknown") def modeChanged(self, idx): self.testResult.clear() if idx == 0: self.mode = QAudio.AudioInput else: self.mode = QAudio.AudioOutput self.deviceBox.clear() for deviceInfo in QAudioDeviceInfo.availableDevices(self.mode): self.deviceBox.addItem(deviceInfo.deviceName(), deviceInfo) self.deviceBox.setCurrentIndex(0) self.deviceChanged(0) def deviceChanged(self, idx): self.testResult.clear() if self.deviceBox.count() == 0: return self.deviceInfo = self.deviceBox.itemData(idx) self.sampleRateBox.clear() sampleRatez = self.deviceInfo.supportedSampleRates() self.sampleRateBox.addItems([str(sr) for sr in sampleRatez]) if len(sampleRatez) != 0: self.settings.setSampleRate(sampleRatez[0]) self.channelsBox.clear() chz = self.deviceInfo.supportedChannelCounts() self.channelsBox.addItems([str(ch) for ch in chz]) if len(chz) != 0: self.settings.setChannelCount(chz[0]) self.codecsBox.clear() codecs = self.deviceInfo.supportedCodecs() self.codecsBox.addItems([str(c) for c in codecs]) if len(codecs) != 0: self.settings.setCodec(codecs[0]) # Create a failed condition. self.codecsBox.addItem("audio/test") self.sampleSizesBox.clear() sampleSizez = self.deviceInfo.supportedSampleSizes() self.sampleSizesBox.addItems([str(ss) for ss in sampleSizez]) if len(sampleSizez) != 0: self.settings.setSampleSize(sampleSizez[0]) self.sampleTypesBox.clear() sampleTypez = self.deviceInfo.supportedSampleTypes() self.sampleTypesBox.addItems( [self.sampleTypeToString(st) for st in sampleTypez]) if len(sampleTypez) != 0: self.settings.setSampleType(sampleTypez[0]) self.endianBox.clear() endianz = self.deviceInfo.supportedByteOrders() self.endianBox.addItems([self.endianToString(e) for e in endianz]) if len(endianz) != 0: self.settings.setByteOrder(endianz[0]) self.allFormatsTable.clearContents() def populateTable(self): row = 0 format = QAudioFormat() for codec in self.deviceInfo.supportedCodecs(): format.setCodec(codec) for sampleRate in self.deviceInfo.supportedSampleRates(): format.setSampleRate(sampleRate) for channels in self.deviceInfo.supportedChannelCounts(): format.setChannelCount(channels) for sampleType in self.deviceInfo.supportedSampleTypes(): format.setSampleType(sampleType) for sampleSize in self.deviceInfo.supportedSampleSizes(): format.setSampleSize(sampleSize) for endian in self.deviceInfo.supportedByteOrders(): format.setByteOrder(endian) if self.deviceInfo.isFormatSupported(format): self.allFormatsTable.setRowCount(row + 1) self.setFormatValue(row, 0, format.codec()) self.setFormatValue(row, 1, str(format.sampleRate())) self.setFormatValue(row, 2, str(format.channelCount())) self.setFormatValue(row, 3, self.sampleTypeToString( format.sampleType())) self.setFormatValue(row, 4, str(format.sampleSize())) self.setFormatValue(row, 5, self.endianToString( format.byteOrder())) row += 1 def setFormatValue(self, row, column, value): self.allFormatsTable.setItem(row, column, QTableWidgetItem(value)) def sampleRateChanged(self, idx): self.settings.setSampleRate(int(self.sampleRateBox.itemText(idx))) def channelChanged(self, idx): self.settings.setChannelCount(int(self.channelsBox.itemText(idx))) def codecChanged(self, idx): self.settings.setCodec(self.codecsBox.itemText(idx)) def sampleSizeChanged(self, idx): self.settings.setSampleSize(int(self.sampleSizesBox.itemText(idx))) def sampleTypeChanged(self, idx): sampleType = int(self.sampleTypesBox.itemText(idx)) if sampleType == QAudioFormat.SignedInt: self.settings.setSampleType(QAudioFormat.SignedInt) elif sampleType == QAudioFormat.UnSignedInt: self.settings.setSampleType(QAudioFormat.UnSignedInt) elif sampleType == QAudioFormat.Float: self.settings.setSampleType(QAudioFormat.Float) def endianChanged(self, idx): endian = int(self.endianBox.itemText(idx)) if endian == QAudioFormat.LittleEndian: self.settings.setByteOrder(QAudioFormat.LittleEndian) elif endian == QAudioFormat.BigEndian: self.settings.setByteOrder(QAudioFormat.BigEndian) if __name__ == '__main__': import sys app = QApplication(sys.argv) app.setApplicationName("Audio Device Test") audio = AudioTest() audio.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/multimedia/audiodevices/audiodevicesbase.ui0000644000076500000240000003511113245231431025752 0ustar philstaff00000000000000 AudioDevicesBase 0 0 679 598 Audio Devices 0 0 true 0 0 659 558 Mode Device Input Output 0 Test format 0 0 QFrame::NoFrame QFrame::Plain <i>Actual Settings</i> Qt::RichText Qt::AlignCenter 0 0 QFrame::NoFrame QFrame::Plain <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nearest Settings</span></p></body></html> Qt::RichText Qt::AlignCenter 0 0 false false false false Test Frequency (Hz) Channels Sample size (bits) Endianess 0 0 Note: an invalid codec 'audio/test' exists in order to allow an invalid format to be constructed, and therefore to trigger a 'nearest format' calculation. true Codec false SampleType false All formats Populate table QAbstractItemView::NoEditTriggers false QAbstractItemView::NoSelection QAbstractItemView::SelectItems Qt::ElideNone false false false false false false Codec AlignHCenter|AlignVCenter|AlignCenter Frequency (Hz) AlignHCenter|AlignVCenter|AlignCenter Channels AlignHCenter|AlignVCenter|AlignCenter Sample type AlignHCenter|AlignVCenter|AlignCenter Sample size (bits) AlignHCenter|AlignVCenter|AlignCenter Endianness AlignHCenter|AlignVCenter|AlignCenter PyQt5_gpl-5.10.1/examples/multimedia/audiodevices/ui_audiodevicesbase.py0000644000076500000240000003726013245231431026471 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'audiodevicesbase.ui' # # Created: Tue Jun 25 12:31:11 2013 # by: PyQt5 UI code generator 5.0-snapshot-478d7f271b71 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_AudioDevicesBase(object): def setupUi(self, AudioDevicesBase): AudioDevicesBase.setObjectName("AudioDevicesBase") AudioDevicesBase.resize(679, 598) self.centralwidget = QtWidgets.QWidget(AudioDevicesBase) self.centralwidget.setObjectName("centralwidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) self.verticalLayout.setObjectName("verticalLayout") self.scrollArea = QtWidgets.QScrollArea(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.scrollArea.sizePolicy().hasHeightForWidth()) self.scrollArea.setSizePolicy(sizePolicy) self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName("scrollArea") self.scrollAreaWidgetContents = QtWidgets.QWidget() self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 659, 558)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.gridLayout_4 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents) self.gridLayout_4.setObjectName("gridLayout_4") self.gridLayout_2 = QtWidgets.QGridLayout() self.gridLayout_2.setObjectName("gridLayout_2") self.modeLabel = QtWidgets.QLabel(self.scrollAreaWidgetContents) self.modeLabel.setObjectName("modeLabel") self.gridLayout_2.addWidget(self.modeLabel, 0, 0, 1, 1) self.deviceLabel = QtWidgets.QLabel(self.scrollAreaWidgetContents) self.deviceLabel.setObjectName("deviceLabel") self.gridLayout_2.addWidget(self.deviceLabel, 0, 1, 1, 1) self.modeBox = QtWidgets.QComboBox(self.scrollAreaWidgetContents) self.modeBox.setObjectName("modeBox") self.modeBox.addItem("") self.modeBox.addItem("") self.gridLayout_2.addWidget(self.modeBox, 1, 0, 1, 1) self.deviceBox = QtWidgets.QComboBox(self.scrollAreaWidgetContents) self.deviceBox.setObjectName("deviceBox") self.gridLayout_2.addWidget(self.deviceBox, 1, 1, 1, 1) self.tabWidget = QtWidgets.QTabWidget(self.scrollAreaWidgetContents) self.tabWidget.setObjectName("tabWidget") self.testFormatTab = QtWidgets.QWidget() self.testFormatTab.setObjectName("testFormatTab") self.gridLayout = QtWidgets.QGridLayout(self.testFormatTab) self.gridLayout.setObjectName("gridLayout") self.actualLabel = QtWidgets.QLabel(self.testFormatTab) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.actualLabel.sizePolicy().hasHeightForWidth()) self.actualLabel.setSizePolicy(sizePolicy) self.actualLabel.setFrameShape(QtWidgets.QFrame.NoFrame) self.actualLabel.setFrameShadow(QtWidgets.QFrame.Plain) self.actualLabel.setTextFormat(QtCore.Qt.RichText) self.actualLabel.setAlignment(QtCore.Qt.AlignCenter) self.actualLabel.setObjectName("actualLabel") self.gridLayout.addWidget(self.actualLabel, 0, 1, 1, 1) self.nearestLabel = QtWidgets.QLabel(self.testFormatTab) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.nearestLabel.sizePolicy().hasHeightForWidth()) self.nearestLabel.setSizePolicy(sizePolicy) self.nearestLabel.setFrameShape(QtWidgets.QFrame.NoFrame) self.nearestLabel.setFrameShadow(QtWidgets.QFrame.Plain) self.nearestLabel.setTextFormat(QtCore.Qt.RichText) self.nearestLabel.setAlignment(QtCore.Qt.AlignCenter) self.nearestLabel.setObjectName("nearestLabel") self.gridLayout.addWidget(self.nearestLabel, 0, 2, 1, 1) self.sampleRateBox = QtWidgets.QComboBox(self.testFormatTab) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.sampleRateBox.sizePolicy().hasHeightForWidth()) self.sampleRateBox.setSizePolicy(sizePolicy) self.sampleRateBox.setObjectName("sampleRateBox") self.gridLayout.addWidget(self.sampleRateBox, 3, 1, 1, 1) self.nearestSampleRate = QtWidgets.QLineEdit(self.testFormatTab) self.nearestSampleRate.setEnabled(False) self.nearestSampleRate.setObjectName("nearestSampleRate") self.gridLayout.addWidget(self.nearestSampleRate, 3, 2, 1, 1) self.channelsBox = QtWidgets.QComboBox(self.testFormatTab) self.channelsBox.setObjectName("channelsBox") self.gridLayout.addWidget(self.channelsBox, 5, 1, 1, 1) self.nearestChannel = QtWidgets.QLineEdit(self.testFormatTab) self.nearestChannel.setEnabled(False) self.nearestChannel.setObjectName("nearestChannel") self.gridLayout.addWidget(self.nearestChannel, 5, 2, 1, 1) self.sampleSizesBox = QtWidgets.QComboBox(self.testFormatTab) self.sampleSizesBox.setObjectName("sampleSizesBox") self.gridLayout.addWidget(self.sampleSizesBox, 9, 1, 1, 1) self.nearestSampleSize = QtWidgets.QLineEdit(self.testFormatTab) self.nearestSampleSize.setEnabled(False) self.nearestSampleSize.setObjectName("nearestSampleSize") self.gridLayout.addWidget(self.nearestSampleSize, 9, 2, 1, 1) self.endianBox = QtWidgets.QComboBox(self.testFormatTab) self.endianBox.setObjectName("endianBox") self.gridLayout.addWidget(self.endianBox, 14, 1, 1, 1) self.nearestEndian = QtWidgets.QLineEdit(self.testFormatTab) self.nearestEndian.setEnabled(False) self.nearestEndian.setObjectName("nearestEndian") self.gridLayout.addWidget(self.nearestEndian, 14, 2, 1, 1) self.testButton = QtWidgets.QPushButton(self.testFormatTab) self.testButton.setObjectName("testButton") self.gridLayout.addWidget(self.testButton, 15, 1, 1, 1) self.testResult = QtWidgets.QLabel(self.testFormatTab) self.testResult.setText("") self.testResult.setObjectName("testResult") self.gridLayout.addWidget(self.testResult, 15, 2, 1, 1) self.actualFreqLabel = QtWidgets.QLabel(self.testFormatTab) self.actualFreqLabel.setObjectName("actualFreqLabel") self.gridLayout.addWidget(self.actualFreqLabel, 3, 0, 1, 1) self.actualChannelLabel = QtWidgets.QLabel(self.testFormatTab) self.actualChannelLabel.setObjectName("actualChannelLabel") self.gridLayout.addWidget(self.actualChannelLabel, 5, 0, 1, 1) self.actualSampleSizeLabel = QtWidgets.QLabel(self.testFormatTab) self.actualSampleSizeLabel.setObjectName("actualSampleSizeLabel") self.gridLayout.addWidget(self.actualSampleSizeLabel, 9, 0, 1, 1) self.actualEndianLabel = QtWidgets.QLabel(self.testFormatTab) self.actualEndianLabel.setObjectName("actualEndianLabel") self.gridLayout.addWidget(self.actualEndianLabel, 14, 0, 1, 1) self.label = QtWidgets.QLabel(self.testFormatTab) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth()) self.label.setSizePolicy(sizePolicy) self.label.setWordWrap(True) self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 16, 0, 1, 3) self.actualCodecLabel = QtWidgets.QLabel(self.testFormatTab) self.actualCodecLabel.setObjectName("actualCodecLabel") self.gridLayout.addWidget(self.actualCodecLabel, 2, 0, 1, 1) self.nearestCodec = QtWidgets.QLineEdit(self.testFormatTab) self.nearestCodec.setEnabled(False) self.nearestCodec.setObjectName("nearestCodec") self.gridLayout.addWidget(self.nearestCodec, 2, 2, 1, 1) self.codecsBox = QtWidgets.QComboBox(self.testFormatTab) self.codecsBox.setObjectName("codecsBox") self.gridLayout.addWidget(self.codecsBox, 2, 1, 1, 1) self.actualSampleTypeLabel = QtWidgets.QLabel(self.testFormatTab) self.actualSampleTypeLabel.setObjectName("actualSampleTypeLabel") self.gridLayout.addWidget(self.actualSampleTypeLabel, 6, 0, 1, 1) self.sampleTypesBox = QtWidgets.QComboBox(self.testFormatTab) self.sampleTypesBox.setObjectName("sampleTypesBox") self.gridLayout.addWidget(self.sampleTypesBox, 6, 1, 1, 1) self.nearestSampleType = QtWidgets.QLineEdit(self.testFormatTab) self.nearestSampleType.setEnabled(False) self.nearestSampleType.setObjectName("nearestSampleType") self.gridLayout.addWidget(self.nearestSampleType, 6, 2, 1, 1) self.tabWidget.addTab(self.testFormatTab, "") self.tab = QtWidgets.QWidget() self.tab.setObjectName("tab") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tab) self.verticalLayout_2.setObjectName("verticalLayout_2") self.populateTableButton = QtWidgets.QPushButton(self.tab) self.populateTableButton.setObjectName("populateTableButton") self.verticalLayout_2.addWidget(self.populateTableButton) self.allFormatsTable = QtWidgets.QTableWidget(self.tab) self.allFormatsTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) self.allFormatsTable.setDragDropOverwriteMode(False) self.allFormatsTable.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection) self.allFormatsTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectItems) self.allFormatsTable.setTextElideMode(QtCore.Qt.ElideNone) self.allFormatsTable.setWordWrap(False) self.allFormatsTable.setCornerButtonEnabled(False) self.allFormatsTable.setObjectName("allFormatsTable") self.allFormatsTable.setColumnCount(6) self.allFormatsTable.setRowCount(0) item = QtWidgets.QTableWidgetItem() item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignCenter) self.allFormatsTable.setHorizontalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignCenter) self.allFormatsTable.setHorizontalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignCenter) self.allFormatsTable.setHorizontalHeaderItem(2, item) item = QtWidgets.QTableWidgetItem() item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignCenter) self.allFormatsTable.setHorizontalHeaderItem(3, item) item = QtWidgets.QTableWidgetItem() item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignCenter) self.allFormatsTable.setHorizontalHeaderItem(4, item) item = QtWidgets.QTableWidgetItem() item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignCenter) self.allFormatsTable.setHorizontalHeaderItem(5, item) self.allFormatsTable.horizontalHeader().setHighlightSections(False) self.allFormatsTable.verticalHeader().setVisible(False) self.allFormatsTable.verticalHeader().setHighlightSections(False) self.verticalLayout_2.addWidget(self.allFormatsTable) self.tabWidget.addTab(self.tab, "") self.gridLayout_2.addWidget(self.tabWidget, 2, 0, 1, 2) self.gridLayout_4.addLayout(self.gridLayout_2, 0, 0, 1, 1) self.scrollArea.setWidget(self.scrollAreaWidgetContents) self.verticalLayout.addWidget(self.scrollArea) AudioDevicesBase.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(AudioDevicesBase) self.statusbar.setObjectName("statusbar") AudioDevicesBase.setStatusBar(self.statusbar) self.retranslateUi(AudioDevicesBase) self.tabWidget.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(AudioDevicesBase) def retranslateUi(self, AudioDevicesBase): _translate = QtCore.QCoreApplication.translate AudioDevicesBase.setWindowTitle(_translate("AudioDevicesBase", "Audio Devices")) self.modeLabel.setText(_translate("AudioDevicesBase", "Mode")) self.deviceLabel.setText(_translate("AudioDevicesBase", "Device")) self.modeBox.setItemText(0, _translate("AudioDevicesBase", "Input")) self.modeBox.setItemText(1, _translate("AudioDevicesBase", "Output")) self.actualLabel.setText(_translate("AudioDevicesBase", "Actual Settings")) self.nearestLabel.setText(_translate("AudioDevicesBase", "\n" "\n" "

      Nearest Settings

      ")) self.testButton.setText(_translate("AudioDevicesBase", "Test")) self.actualFreqLabel.setText(_translate("AudioDevicesBase", "Frequency (Hz)")) self.actualChannelLabel.setText(_translate("AudioDevicesBase", "Channels")) self.actualSampleSizeLabel.setText(_translate("AudioDevicesBase", "Sample size (bits)")) self.actualEndianLabel.setText(_translate("AudioDevicesBase", "Endianess")) self.label.setText(_translate("AudioDevicesBase", "Note: an invalid codec \'audio/test\' exists in order to allow an invalid format to be constructed, and therefore to trigger a \'nearest format\' calculation.")) self.actualCodecLabel.setText(_translate("AudioDevicesBase", "Codec")) self.actualSampleTypeLabel.setText(_translate("AudioDevicesBase", "SampleType")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.testFormatTab), _translate("AudioDevicesBase", "Test format")) self.populateTableButton.setText(_translate("AudioDevicesBase", "Populate table")) self.allFormatsTable.setSortingEnabled(False) item = self.allFormatsTable.horizontalHeaderItem(0) item.setText(_translate("AudioDevicesBase", "Codec")) item = self.allFormatsTable.horizontalHeaderItem(1) item.setText(_translate("AudioDevicesBase", "Frequency (Hz)")) item = self.allFormatsTable.horizontalHeaderItem(2) item.setText(_translate("AudioDevicesBase", "Channels")) item = self.allFormatsTable.horizontalHeaderItem(3) item.setText(_translate("AudioDevicesBase", "Sample type")) item = self.allFormatsTable.horizontalHeaderItem(4) item.setText(_translate("AudioDevicesBase", "Sample size (bits)")) item = self.allFormatsTable.horizontalHeaderItem(5) item.setText(_translate("AudioDevicesBase", "Endianness")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("AudioDevicesBase", "All formats")) PyQt5_gpl-5.10.1/examples/multimedia/audiooutput.py0000755000076500000240000002504513245231431022414 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from math import pi, sin from struct import pack from PyQt5.QtCore import QByteArray, QIODevice, Qt, QTimer, qWarning from PyQt5.QtMultimedia import (QAudio, QAudioDeviceInfo, QAudioFormat, QAudioOutput) from PyQt5.QtWidgets import (QApplication, QComboBox, QHBoxLayout, QLabel, QMainWindow, QPushButton, QSlider, QVBoxLayout, QWidget) class Generator(QIODevice): def __init__(self, format, durationUs, sampleRate, parent): super(Generator, self).__init__(parent) self.m_pos = 0 self.m_buffer = QByteArray() self.generateData(format, durationUs, sampleRate) def start(self): self.open(QIODevice.ReadOnly) def stop(self): self.m_pos = 0 self.close() def generateData(self, format, durationUs, sampleRate): pack_format = '' if format.sampleSize() == 8: if format.sampleType() == QAudioFormat.UnSignedInt: scaler = lambda x: ((1.0 + x) / 2 * 255) pack_format = 'B' elif format.sampleType() == QAudioFormat.SignedInt: scaler = lambda x: x * 127 pack_format = 'b' elif format.sampleSize() == 16: if format.sampleType() == QAudioFormat.UnSignedInt: scaler = lambda x: (1.0 + x) / 2 * 65535 pack_format = 'H' elif format.sampleType() == QAudioFormat.SignedInt: scaler = lambda x: x * 32767 pack_format = 'h' assert(pack_format != '') channelBytes = format.sampleSize() // 8 sampleBytes = format.channelCount() * channelBytes length = (format.sampleRate() * format.channelCount() * (format.sampleSize() // 8)) * durationUs // 100000 self.m_buffer.clear() sampleIndex = 0 factor = 2 * pi * sampleRate / format.sampleRate() while length != 0: x = sin((sampleIndex % format.sampleRate()) * factor) packed = pack(pack_format, int(scaler(x))) for _ in range(format.channelCount()): self.m_buffer.append(packed) length -= channelBytes sampleIndex += 1 def readData(self, maxlen): data = QByteArray() total = 0 while maxlen > total: chunk = min(self.m_buffer.size() - self.m_pos, maxlen - total) data.append(self.m_buffer.mid(self.m_pos, chunk)) self.m_pos = (self.m_pos + chunk) % self.m_buffer.size() total += chunk return data.data() def writeData(self, data): return 0 def bytesAvailable(self): return self.m_buffer.size() + super(Generator, self).bytesAvailable() class AudioTest(QMainWindow): PUSH_MODE_LABEL = "Enable push mode" PULL_MODE_LABEL = "Enable pull mode" SUSPEND_LABEL = "Suspend playback" RESUME_LABEL = "Resume playback" DurationSeconds = 1 ToneSampleRateHz = 600 DataSampleRateHz = 44100 def __init__(self): super(AudioTest, self).__init__() self.m_device = QAudioDeviceInfo.defaultOutputDevice() self.m_output = None self.initializeWindow() self.initializeAudio() def initializeWindow(self): layout = QVBoxLayout() self.m_deviceBox = QComboBox(activated=self.deviceChanged) for deviceInfo in QAudioDeviceInfo.availableDevices(QAudio.AudioOutput): self.m_deviceBox.addItem(deviceInfo.deviceName(), deviceInfo) layout.addWidget(self.m_deviceBox) self.m_modeButton = QPushButton(clicked=self.toggleMode) self.m_modeButton.setText(self.PUSH_MODE_LABEL) layout.addWidget(self.m_modeButton) self.m_suspendResumeButton = QPushButton( clicked=self.toggleSuspendResume) self.m_suspendResumeButton.setText(self.SUSPEND_LABEL) layout.addWidget(self.m_suspendResumeButton) volumeBox = QHBoxLayout() volumeLabel = QLabel("Volume:") self.m_volumeSlider = QSlider(Qt.Horizontal, minimum=0, maximum=100, singleStep=10, valueChanged=self.volumeChanged) volumeBox.addWidget(volumeLabel) volumeBox.addWidget(self.m_volumeSlider) layout.addLayout(volumeBox) window = QWidget() window.setLayout(layout) self.setCentralWidget(window) def initializeAudio(self): self.m_pullTimer = QTimer(self, timeout=self.pullTimerExpired) self.m_pullMode = True self.m_format = QAudioFormat() self.m_format.setSampleRate(self.DataSampleRateHz) self.m_format.setChannelCount(1) self.m_format.setSampleSize(16) self.m_format.setCodec('audio/pcm') self.m_format.setByteOrder(QAudioFormat.LittleEndian) self.m_format.setSampleType(QAudioFormat.SignedInt) info = QAudioDeviceInfo(QAudioDeviceInfo.defaultOutputDevice()) if not info.isFormatSupported(self.m_format): qWarning("Default format not supported - trying to use nearest") self.m_format = info.nearestFormat(self.m_format) self.m_generator = Generator(self.m_format, self.DurationSeconds * 1000000, self.ToneSampleRateHz, self) self.createAudioOutput() def createAudioOutput(self): self.m_audioOutput = QAudioOutput(self.m_device, self.m_format) self.m_audioOutput.notify.connect(self.notified) self.m_audioOutput.stateChanged.connect(self.handleStateChanged) self.m_generator.start() self.m_audioOutput.start(self.m_generator) self.m_volumeSlider.setValue(self.m_audioOutput.volume() * 100) def deviceChanged(self, index): self.m_pullTimer.stop() self.m_generator.stop() self.m_audioOutput.stop() self.m_device = self.m_deviceBox.itemData(index) self.createAudioOutput() def volumeChanged(self, value): if self.m_audioOutput is not None: self.m_audioOutput.setVolume(value / 100.0) def notified(self): qWarning("bytesFree = %d, elapsedUSecs = %d, processedUSecs = %d" % ( self.m_audioOutput.bytesFree(), self.m_audioOutput.elapsedUSecs(), self.m_audioOutput.processedUSecs())) def pullTimerExpired(self): if self.m_audioOutput is not None and self.m_audioOutput.state() != QAudio.StoppedState: chunks = self.m_audioOutput.bytesFree() // self.m_audioOutput.periodSize() for _ in range(chunks): data = self.m_generator.read(self.m_audioOutput.periodSize()) if data is None or len(data) != self.m_audioOutput.periodSize(): break self.m_output.write(data) def toggleMode(self): self.m_pullTimer.stop() self.m_audioOutput.stop() if self.m_pullMode: self.m_modeButton.setText(self.PULL_MODE_LABEL) self.m_output = self.m_audioOutput.start() self.m_pullMode = False self.m_pullTimer.start(20) else: self.m_modeButton.setText(self.PUSH_MODE_LABEL) self.m_pullMode = True self.m_audioOutput.start(self.m_generator) self.m_suspendResumeButton.setText(self.SUSPEND_LABEL) def toggleSuspendResume(self): if self.m_audioOutput.state() == QAudio.SuspendedState: qWarning("status: Suspended, resume()") self.m_audioOutput.resume() self.m_suspendResumeButton.setText(self.SUSPEND_LABEL) elif self.m_audioOutput.state() == QAudio.ActiveState: qWarning("status: Active, suspend()") self.m_audioOutput.suspend() self.m_suspendResumeButton.setText(self.RESUME_LABEL) elif self.m_audioOutput.state() == QAudio.StoppedState: qWarning("status: Stopped, resume()") self.m_audioOutput.resume() self.m_suspendResumeButton.setText(self.SUSPEND_LABEL) elif self.m_audioOutput.state() == QAudio.IdleState: qWarning("status: IdleState") stateMap = { QAudio.ActiveState: "ActiveState", QAudio.SuspendedState: "SuspendedState", QAudio.StoppedState: "StoppedState", QAudio.IdleState: "IdleState"} def handleStateChanged(self, state): qWarning("state = " + self.stateMap.get(state, "Unknown")) if __name__ == '__main__': import sys app = QApplication(sys.argv) app.setApplicationName("Audio Output Test") audio = AudioTest() audio.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/multimedia/README0000644000076500000240000000124513245231431020331 0ustar philstaff00000000000000PyQt contains classes that provide support for audio, video, radio and cameras. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/multimediawidgets/0000755000076500000240000000000013245231431021036 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/multimediawidgets/camera/0000755000076500000240000000000013245231431022266 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/multimediawidgets/camera/camera.py0000755000076500000240000004466513245231431024112 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QByteArray, qFuzzyCompare, Qt, QTimer from PyQt5.QtGui import QPalette, QPixmap from PyQt5.QtMultimedia import (QAudioEncoderSettings, QCamera, QCameraImageCapture, QImageEncoderSettings, QMediaMetaData, QMediaRecorder, QMultimedia, QVideoEncoderSettings) from PyQt5.QtWidgets import (QAction, QActionGroup, QApplication, QDialog, QMainWindow, QMessageBox) from ui_camera import Ui_Camera from ui_imagesettings import Ui_ImageSettingsUi from ui_videosettings import Ui_VideoSettingsUi class ImageSettings(QDialog): def __init__(self, imageCapture, parent=None): super(ImageSettings, self).__init__(parent) self.ui = Ui_ImageSettingsUi() self.imagecapture = imageCapture self.ui.setupUi(self) self.ui.imageCodecBox.addItem("Default image format", "") for codecName in self.imagecapture.supportedImageCodecs(): description = self.imagecapture.imageCodecDescription(codecName) self.ui.imageCodecBox.addItem(codecName + ": " + description, codecName) self.ui.imageQualitySlider.setRange(0, QMultimedia.VeryHighQuality) self.ui.imageResolutionBox.addItem("Default resolution") supportedResolutions, _ = self.imagecapture.supportedResolutions() for resolution in supportedResolutions: self.ui.imageResolutionBox.addItem( "%dx%d" % (resolution.width(), resolution.height()), resolution) def imageSettings(self): settings = self.imagecapture.encodingSettings() settings.setCodec(self.boxValue(self.ui.imageCodecBox)) settings.setQuality( QMultimedia.EncodingQuality( self.ui.imageQualitySlider.value())) settings.setResolution(self.boxValue(self.ui.imageResolutionBox)) return settings def setImageSettings(self, settings): self.selectComboBoxItem(self.ui.imageCodecBox, settings.codec()) self.selectComboBoxItem(self.ui.imageResolutionBox, settings.resolution()) self.ui.imageQualitySlider.setValue(settings.quality()) @staticmethod def boxValue(box): idx = box.currentIndex() if idx == -1: return None return box.itemData(idx) @staticmethod def selectComboBoxItem(box, value): for i in range(box.count()): if box.itemData(i) == value: box.setCurrentIndex(i) break class VideoSettings(QDialog): def __init__(self, mediaRecorder, parent=None): super(VideoSettings, self).__init__(parent) self.ui = Ui_VideoSettingsUi() self.mediaRecorder = mediaRecorder self.ui.setupUi(self) self.ui.audioCodecBox.addItem("Default audio codec", "") for codecName in self.mediaRecorder.supportedAudioCodecs(): description = self.mediaRecorder.audioCodecDescription(codecName) self.ui.audioCodecBox.addItem(codecName + ": " + description, codecName) supportedSampleRates, _ = self.mediaRecorder.supportedAudioSampleRates() for sampleRate in supportedSampleRates: self.ui.audioSampleRateBox.addItem(str(sampleRate), sampleRate) self.ui.audioQualitySlider.setRange(0, QMultimedia.VeryHighQuality) self.ui.videoCodecBox.addItem("Default video codec", "") for codecName in self.mediaRecorder.supportedVideoCodecs(): description = self.mediaRecorder.videoCodecDescription(codecName) self.ui.videoCodecBox.addItem(codecName + ": " + description, codecName) self.ui.videoQualitySlider.setRange(0, QMultimedia.VeryHighQuality) self.ui.videoResolutionBox.addItem("Default") supportedResolutions, _ = self.mediaRecorder.supportedResolutions() for resolution in supportedResolutions: self.ui.videoResolutionBox.addItem( "%dx%d" % (resolution.width(), resolution.height()), resolution) self.ui.videoFramerateBox.addItem("Default") supportedFrameRates, _ = self.mediaRecorder.supportedFrameRates() for rate in supportedFrameRates: self.ui.videoFramerateBox.addItem("%0.2f" % rate, rate) self.ui.containerFormatBox.addItem("Default container", "") for format in self.mediaRecorder.supportedContainers(): self.ui.containerFormatBox.addItem( format + ":" + self.mediaRecorder.containerDescription( format), format) def audioSettings(self): settings = self.mediaRecorder.audioSettings() settings.setCodec(self.boxValue(self.ui.audioCodecBox)) settings.setQuality( QMultimedia.EncodingQuality( self.ui.audioQualitySlider.value())) settings.setSampleRate(self.boxValue(self.ui.audioSampleRateBox)) return settings def setAudioSettings(self, settings): self.selectComboBoxItem(self.ui.audioCodecBox, settings.codec()) self.selectComboBoxItem(self.ui.audioSampleRateBox, settings.sampleRate()) self.ui.audioQualitySlider.setValue(settings.quality()) def videoSettings(self): settings = self.mediaRecorder.videoSettings() settings.setCodec(self.boxValue(self.ui.videoCodecBox)) settings.setQuality( QMultimedia.EncodingQuality( self.ui.videoQualitySlider.value())) settings.setResolution(self.boxValue(self.ui.videoResolutionBox)) settings.setFrameRate(self.boxValue(self.ui.videoFramerateBox)) return settings def setVideoSettings(self, settings): self.selectComboBoxItem(self.ui.videoCodecBox, settings.codec()) self.selectComboBoxItem(self.ui.videoResolutionBox, settings.resolution()) self.ui.videoQualitySlider.setValue(settings.quality()) for i in range(1, self.ui.videoFramerateBox.count()): itemRate = self.ui.videoFramerateBox.itemData(i) if qFuzzyCompare(itemRate, settings.frameRate()): self.ui.videoFramerateBox.setCurrentIndex(i) break def format(self): return self.boxValue(self.ui.containerFormatBox) def setFormat(self, format): self.selectComboBoxItem(self.ui.containerFormatBox, format) @staticmethod def boxValue(box): idx = box.currentIndex() if idx == -1: return None return box.itemData(idx) @staticmethod def selectComboBoxItem(box, value): for i in range(box.count()): if box.itemData(i) == value: box.setCurrentIndex(i) break class Camera(QMainWindow): def __init__(self, parent=None): super(Camera, self).__init__(parent) self.ui = Ui_Camera() self.camera = None self.imageCapture = None self.mediaRecorder = None self.isCapturingImage = False self.applicationExiting = False self.imageSettings = QImageEncoderSettings() self.audioSettings = QAudioEncoderSettings() self.videoSettings = QVideoEncoderSettings() self.videoContainerFormat = '' self.ui.setupUi(self) cameraDevice = QByteArray() videoDevicesGroup = QActionGroup(self) videoDevicesGroup.setExclusive(True) for deviceName in QCamera.availableDevices(): description = QCamera.deviceDescription(deviceName) videoDeviceAction = QAction(description, videoDevicesGroup) videoDeviceAction.setCheckable(True) videoDeviceAction.setData(deviceName) if cameraDevice.isEmpty(): cameraDevice = deviceName videoDeviceAction.setChecked(True) self.ui.menuDevices.addAction(videoDeviceAction) videoDevicesGroup.triggered.connect(self.updateCameraDevice) self.ui.captureWidget.currentChanged.connect(self.updateCaptureMode) self.ui.lockButton.hide() self.setCamera(cameraDevice) def setCamera(self, cameraDevice): if cameraDevice.isEmpty(): self.camera = QCamera() else: self.camera = QCamera(cameraDevice) self.camera.stateChanged.connect(self.updateCameraState) self.camera.error.connect(self.displayCameraError) self.mediaRecorder = QMediaRecorder(self.camera) self.mediaRecorder.stateChanged.connect(self.updateRecorderState) self.imageCapture = QCameraImageCapture(self.camera) self.mediaRecorder.durationChanged.connect(self.updateRecordTime) self.mediaRecorder.error.connect(self.displayRecorderError) self.mediaRecorder.setMetaData(QMediaMetaData.Title, "Test Title") self.ui.exposureCompensation.valueChanged.connect( self.setExposureCompensation) self.camera.setViewfinder(self.ui.viewfinder) self.updateCameraState(self.camera.state()) self.updateLockStatus(self.camera.lockStatus(), QCamera.UserRequest) self.updateRecorderState(self.mediaRecorder.state()) self.imageCapture.readyForCaptureChanged.connect(self.readyForCapture) self.imageCapture.imageCaptured.connect(self.processCapturedImage) self.imageCapture.imageSaved.connect(self.imageSaved) self.camera.lockStatusChanged.connect(self.updateLockStatus) self.ui.captureWidget.setTabEnabled(0, self.camera.isCaptureModeSupported(QCamera.CaptureStillImage)) self.ui.captureWidget.setTabEnabled(1, self.camera.isCaptureModeSupported(QCamera.CaptureVideo)) self.updateCaptureMode() self.camera.start() def keyPressEvent(self, event): if event.isAutoRepeat(): return if event.key() == Qt.Key_CameraFocus: self.displayViewfinder() self.camera.searchAndLock() event.accept() elif event.key() == Qt.Key_Camera: if self.camera.captureMode() == QCamera.CaptureStillImage: self.takeImage() elif self.mediaRecorder.state() == QMediaRecorder.RecordingState: self.stop() else: self.record() event.accept() else: super(Camera, self).keyPressEvent(event) def keyReleaseEvent(self, event): if event.isAutoRepeat(): return if event.key() == Qt.Key_CameraFocus: self.camera.unlock() else: super(Camera, self).keyReleaseEvent(event) def updateRecordTime(self): msg = "Recorded %d sec" % (self.mediaRecorder.duration() // 1000) self.ui.statusbar.showMessage(msg) def processCapturedImage(self, requestId, img): scaledImage = img.scaled(self.ui.viewfinder.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation) self.ui.lastImagePreviewLabel.setPixmap(QPixmap.fromImage(scaledImage)) self.displayCapturedImage() QTimer.singleShot(4000, self.displayViewfinder) def configureCaptureSettings(self): if self.camera.captureMode() == QCamera.CaptureStillImage: self.configureImageSettings() elif self.camera.captureMode() == QCamera.CaptureVideo: self.configureVideoSettings() def configureVideoSettings(self): settingsDialog = VideoSettings(self.mediaRecorder) settingsDialog.setAudioSettings(self.audioSettings) settingsDialog.setVideoSettings(self.videoSettings) settingsDialog.setFormat(self.videoContainerFormat) if settingsDialog.exec_(): self.audioSettings = settingsDialog.audioSettings() self.videoSettings = settingsDialog.videoSettings() self.videoContainerFormat = settingsDialog.format() self.mediaRecorder.setEncodingSettings(self.audioSettings, self.videoSettings, self.videoContainerFormat) def configureImageSettings(self): settingsDialog = ImageSettings(self.imageCapture) settingsDialog.setImageSettings(self.imageSettings) if settingsDialog.exec_(): self.imageSettings = settingsDialog.imageSettings() self.imageCapture.setEncodingSettings(self.imageSettings) def record(self): self.mediaRecorder.record() self.updateRecordTime() def pause(self): self.mediaRecorder.pause() def stop(self): self.mediaRecorder.stop() def setMuted(self, muted): self.mediaRecorder.setMuted(muted) def toggleLock(self): if self.camera.lockStatus() in (QCamera.Searching, QCamera.Locked): self.camera.unlock() elif self.camera.lockStatus() == QCamera.Unlocked: self.camera.searchAndLock() def updateLockStatus(self, status, reason): indicationColor = Qt.black if status == QCamera.Searching: self.ui.statusbar.showMessage("Focusing...") self.ui.lockButton.setText("Focusing...") indicationColor = Qt.yellow elif status == QCamera.Locked: self.ui.lockButton.setText("Unlock") self.ui.statusbar.showMessage("Focused", 2000) indicationColor = Qt.darkGreen elif status == QCamera.Unlocked: self.ui.lockButton.setText("Focus") if reason == QCamera.LockFailed: self.ui.statusbar.showMessage("Focus Failed", 2000) indicationColor = Qt.red palette = self.ui.lockButton.palette() palette.setColor(QPalette.ButtonText, indicationColor) self.ui.lockButton.setPalette(palette) def takeImage(self): self.isCapturingImage = True self.imageCapture.capture() def startCamera(self): self.camera.start() def stopCamera(self): self.camera.stop() def updateCaptureMode(self): tabIndex = self.ui.captureWidget.currentIndex() captureMode = QCamera.CaptureStillImage if tabIndex == 0 else QCamera.CaptureVideo if self.camera.isCaptureModeSupported(captureMode): self.camera.setCaptureMode(captureMode) def updateCameraState(self, state): if state == QCamera.ActiveState: self.ui.actionStartCamera.setEnabled(False) self.ui.actionStopCamera.setEnabled(True) self.ui.captureWidget.setEnabled(True) self.ui.actionSettings.setEnabled(True) elif state in (QCamera.UnloadedState, QCamera.LoadedState): self.ui.actionStartCamera.setEnabled(True) self.ui.actionStopCamera.setEnabled(False) self.ui.captureWidget.setEnabled(False) self.ui.actionSettings.setEnabled(False) def updateRecorderState(self, state): if state == QMediaRecorder.StoppedState: self.ui.recordButton.setEnabled(True) self.ui.pauseButton.setEnabled(True) self.ui.stopButton.setEnabled(False) elif state == QMediaRecorder.PausedState: self.ui.recordButton.setEnabled(True) self.ui.pauseButton.setEnabled(False) self.ui.stopButton.setEnabled(True) elif state == QMediaRecorder.RecordingState: self.ui.recordButton.setEnabled(False) self.ui.pauseButton.setEnabled(True) self.ui.stopButton.setEnabled(True) def setExposureCompensation(self, index): self.camera.exposure().setExposureCompensation(index * 0.5) def displayRecorderError(self): QMessageBox.warning(self, "Capture error", self.mediaRecorder.errorString()) def displayCameraError(self): QMessageBox.warning(self, "Camera error", self.camera.errorString()) def updateCameraDevice(self, action): self.setCamera(action.data()) def displayViewfinder(self): self.ui.stackedWidget.setCurrentIndex(0) def displayCapturedImage(self): self.ui.stackedWidget.setCurrentIndex(1) def readyForCapture(self, ready): self.ui.takeImageButton.setEnabled(ready) def imageSaved(self, id, fileName): self.isCapturingImage = False if self.applicationExiting: self.close() def closeEvent(self, event): if self.isCapturingImage: self.setEnabled(False) self.applicationExiting = True event.ignore() else: event.accept() if __name__ == '__main__': import sys app = QApplication(sys.argv) camera = Camera() camera.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/multimediawidgets/camera/camera.ui0000644000076500000240000003064313245231431024063 0ustar philstaff00000000000000 Camera 0 0 668 422 Camera 1 0 255 255 255 145 145 145 255 255 255 145 145 145 145 145 145 145 145 145 0 0 0 QFrame::Box Focus 0 Image Capture Photo Qt::Vertical 20 161 Exposure Compensation: -4 4 2 Qt::Horizontal QSlider::TicksAbove Video Record Pause Stop Qt::Vertical 20 76 Mute true 0 0 668 29 File Devices Exit Start Camera Stop Camera Settings QCameraViewfinder QWidget
      PyQt5.QtMultimediaWidgets
      1
      recordButton clicked() Camera record() 647 149 61 238 stopButton clicked() Camera stop() 647 225 140 236 pauseButton clicked() Camera pause() 647 187 234 237 actionExit triggered() Camera close() -1 -1 154 130 takeImageButton clicked() Camera takeImage() 625 132 603 169 lockButton clicked() Camera toggleLock() 658 75 453 119 muteButton toggled(bool) Camera setMuted(bool) 647 377 5 280 exposureCompensation valueChanged(int) Camera setExposureCompensation(int) 559 367 665 365 actionSettings triggered() Camera configureCaptureSettings() -1 -1 333 210 actionStartCamera triggered() Camera startCamera() -1 -1 333 210 actionStopCamera triggered() Camera stopCamera() -1 -1 333 210 record() pause() stop() enablePreview(bool) configureCaptureSettings() takeImage() startCamera() toggleLock() setMuted(bool) stopCamera() setExposureCompensation(int)
      PyQt5_gpl-5.10.1/examples/multimediawidgets/camera/imagesettings.ui0000644000076500000240000000612713245231431025476 0ustar philstaff00000000000000 ImageSettingsUi 0 0 332 270 Dialog Image Resolution: Image Format: Quality: 4 Qt::Horizontal Qt::Vertical 20 14 Qt::Horizontal QDialogButtonBox::Cancel|QDialogButtonBox::Ok buttonBox accepted() ImageSettingsUi accept() 322 272 44 230 buttonBox rejected() ImageSettingsUi reject() 405 262 364 227 PyQt5_gpl-5.10.1/examples/multimediawidgets/camera/ui_camera.py0000644000076500000240000002415213245231431024571 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'camera.ui' # # Created: Fri Jun 28 12:10:56 2013 # by: PyQt5 UI code generator 5.0-snapshot-478d7f271b71 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Camera(object): def setupUi(self, Camera): Camera.setObjectName("Camera") Camera.resize(668, 422) self.centralwidget = QtWidgets.QWidget(Camera) self.centralwidget.setObjectName("centralwidget") self.gridLayout_3 = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout_3.setObjectName("gridLayout_3") self.stackedWidget = QtWidgets.QStackedWidget(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.stackedWidget.sizePolicy().hasHeightForWidth()) self.stackedWidget.setSizePolicy(sizePolicy) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(145, 145, 145)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(145, 145, 145)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush) brush = QtGui.QBrush(QtGui.QColor(145, 145, 145)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(145, 145, 145)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush) self.stackedWidget.setPalette(palette) self.stackedWidget.setObjectName("stackedWidget") self.viewfinderPage = QtWidgets.QWidget() self.viewfinderPage.setObjectName("viewfinderPage") self.gridLayout_5 = QtWidgets.QGridLayout(self.viewfinderPage) self.gridLayout_5.setObjectName("gridLayout_5") self.viewfinder = QCameraViewfinder(self.viewfinderPage) self.viewfinder.setObjectName("viewfinder") self.gridLayout_5.addWidget(self.viewfinder, 0, 0, 1, 1) self.stackedWidget.addWidget(self.viewfinderPage) self.previewPage = QtWidgets.QWidget() self.previewPage.setObjectName("previewPage") self.gridLayout_4 = QtWidgets.QGridLayout(self.previewPage) self.gridLayout_4.setObjectName("gridLayout_4") self.lastImagePreviewLabel = QtWidgets.QLabel(self.previewPage) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.MinimumExpanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.lastImagePreviewLabel.sizePolicy().hasHeightForWidth()) self.lastImagePreviewLabel.setSizePolicy(sizePolicy) self.lastImagePreviewLabel.setFrameShape(QtWidgets.QFrame.Box) self.lastImagePreviewLabel.setText("") self.lastImagePreviewLabel.setObjectName("lastImagePreviewLabel") self.gridLayout_4.addWidget(self.lastImagePreviewLabel, 0, 0, 1, 1) self.stackedWidget.addWidget(self.previewPage) self.gridLayout_3.addWidget(self.stackedWidget, 0, 0, 3, 1) self.lockButton = QtWidgets.QPushButton(self.centralwidget) self.lockButton.setObjectName("lockButton") self.gridLayout_3.addWidget(self.lockButton, 1, 1, 1, 2) self.captureWidget = QtWidgets.QTabWidget(self.centralwidget) self.captureWidget.setObjectName("captureWidget") self.tab_2 = QtWidgets.QWidget() self.tab_2.setObjectName("tab_2") self.gridLayout = QtWidgets.QGridLayout(self.tab_2) self.gridLayout.setObjectName("gridLayout") self.takeImageButton = QtWidgets.QPushButton(self.tab_2) self.takeImageButton.setObjectName("takeImageButton") self.gridLayout.addWidget(self.takeImageButton, 0, 0, 1, 1) spacerItem = QtWidgets.QSpacerItem(20, 161, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.gridLayout.addItem(spacerItem, 1, 0, 1, 1) self.label = QtWidgets.QLabel(self.tab_2) self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 2, 0, 1, 1) self.exposureCompensation = QtWidgets.QSlider(self.tab_2) self.exposureCompensation.setMinimum(-4) self.exposureCompensation.setMaximum(4) self.exposureCompensation.setPageStep(2) self.exposureCompensation.setOrientation(QtCore.Qt.Horizontal) self.exposureCompensation.setTickPosition(QtWidgets.QSlider.TicksAbove) self.exposureCompensation.setObjectName("exposureCompensation") self.gridLayout.addWidget(self.exposureCompensation, 3, 0, 1, 1) self.captureWidget.addTab(self.tab_2, "") self.tab = QtWidgets.QWidget() self.tab.setObjectName("tab") self.gridLayout_2 = QtWidgets.QGridLayout(self.tab) self.gridLayout_2.setObjectName("gridLayout_2") self.recordButton = QtWidgets.QPushButton(self.tab) self.recordButton.setObjectName("recordButton") self.gridLayout_2.addWidget(self.recordButton, 0, 0, 1, 1) self.pauseButton = QtWidgets.QPushButton(self.tab) self.pauseButton.setObjectName("pauseButton") self.gridLayout_2.addWidget(self.pauseButton, 1, 0, 1, 1) self.stopButton = QtWidgets.QPushButton(self.tab) self.stopButton.setObjectName("stopButton") self.gridLayout_2.addWidget(self.stopButton, 2, 0, 1, 1) spacerItem1 = QtWidgets.QSpacerItem(20, 76, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.gridLayout_2.addItem(spacerItem1, 3, 0, 1, 1) self.muteButton = QtWidgets.QPushButton(self.tab) self.muteButton.setCheckable(True) self.muteButton.setObjectName("muteButton") self.gridLayout_2.addWidget(self.muteButton, 4, 0, 1, 1) self.captureWidget.addTab(self.tab, "") self.gridLayout_3.addWidget(self.captureWidget, 2, 1, 1, 2) Camera.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(Camera) self.menubar.setGeometry(QtCore.QRect(0, 0, 668, 29)) self.menubar.setObjectName("menubar") self.menuFile = QtWidgets.QMenu(self.menubar) self.menuFile.setObjectName("menuFile") self.menuDevices = QtWidgets.QMenu(self.menubar) self.menuDevices.setObjectName("menuDevices") Camera.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(Camera) self.statusbar.setObjectName("statusbar") Camera.setStatusBar(self.statusbar) self.actionExit = QtWidgets.QAction(Camera) self.actionExit.setObjectName("actionExit") self.actionStartCamera = QtWidgets.QAction(Camera) self.actionStartCamera.setObjectName("actionStartCamera") self.actionStopCamera = QtWidgets.QAction(Camera) self.actionStopCamera.setObjectName("actionStopCamera") self.actionSettings = QtWidgets.QAction(Camera) self.actionSettings.setObjectName("actionSettings") self.menuFile.addAction(self.actionStartCamera) self.menuFile.addAction(self.actionStopCamera) self.menuFile.addSeparator() self.menuFile.addAction(self.actionSettings) self.menuFile.addSeparator() self.menuFile.addAction(self.actionExit) self.menubar.addAction(self.menuFile.menuAction()) self.menubar.addAction(self.menuDevices.menuAction()) self.retranslateUi(Camera) self.stackedWidget.setCurrentIndex(0) self.captureWidget.setCurrentIndex(0) self.recordButton.clicked.connect(Camera.record) self.stopButton.clicked.connect(Camera.stop) self.pauseButton.clicked.connect(Camera.pause) self.actionExit.triggered.connect(Camera.close) self.takeImageButton.clicked.connect(Camera.takeImage) self.lockButton.clicked.connect(Camera.toggleLock) self.muteButton.toggled['bool'].connect(Camera.setMuted) self.exposureCompensation.valueChanged['int'].connect(Camera.setExposureCompensation) self.actionSettings.triggered.connect(Camera.configureCaptureSettings) self.actionStartCamera.triggered.connect(Camera.startCamera) self.actionStopCamera.triggered.connect(Camera.stopCamera) QtCore.QMetaObject.connectSlotsByName(Camera) def retranslateUi(self, Camera): _translate = QtCore.QCoreApplication.translate Camera.setWindowTitle(_translate("Camera", "Camera")) self.lockButton.setText(_translate("Camera", "Focus")) self.takeImageButton.setText(_translate("Camera", "Capture Photo")) self.label.setText(_translate("Camera", "Exposure Compensation:")) self.captureWidget.setTabText(self.captureWidget.indexOf(self.tab_2), _translate("Camera", "Image")) self.recordButton.setText(_translate("Camera", "Record")) self.pauseButton.setText(_translate("Camera", "Pause")) self.stopButton.setText(_translate("Camera", "Stop")) self.muteButton.setText(_translate("Camera", "Mute")) self.captureWidget.setTabText(self.captureWidget.indexOf(self.tab), _translate("Camera", "Video")) self.menuFile.setTitle(_translate("Camera", "File")) self.menuDevices.setTitle(_translate("Camera", "Devices")) self.actionExit.setText(_translate("Camera", "Exit")) self.actionStartCamera.setText(_translate("Camera", "Start Camera")) self.actionStopCamera.setText(_translate("Camera", "Stop Camera")) self.actionSettings.setText(_translate("Camera", "Settings")) from PyQt5.QtMultimediaWidgets import QCameraViewfinder PyQt5_gpl-5.10.1/examples/multimediawidgets/camera/ui_imagesettings.py0000644000076500000240000000642313245231431026205 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'imagesettings.ui' # # Created: Fri Jun 28 11:48:28 2013 # by: PyQt5 UI code generator 5.0-snapshot-478d7f271b71 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_ImageSettingsUi(object): def setupUi(self, ImageSettingsUi): ImageSettingsUi.setObjectName("ImageSettingsUi") ImageSettingsUi.resize(332, 270) self.gridLayout = QtWidgets.QGridLayout(ImageSettingsUi) self.gridLayout.setObjectName("gridLayout") self.groupBox_2 = QtWidgets.QGroupBox(ImageSettingsUi) self.groupBox_2.setObjectName("groupBox_2") self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_2) self.gridLayout_2.setObjectName("gridLayout_2") self.label_8 = QtWidgets.QLabel(self.groupBox_2) self.label_8.setObjectName("label_8") self.gridLayout_2.addWidget(self.label_8, 0, 0, 1, 2) self.imageResolutionBox = QtWidgets.QComboBox(self.groupBox_2) self.imageResolutionBox.setObjectName("imageResolutionBox") self.gridLayout_2.addWidget(self.imageResolutionBox, 1, 0, 1, 2) self.label_6 = QtWidgets.QLabel(self.groupBox_2) self.label_6.setObjectName("label_6") self.gridLayout_2.addWidget(self.label_6, 2, 0, 1, 2) self.imageCodecBox = QtWidgets.QComboBox(self.groupBox_2) self.imageCodecBox.setObjectName("imageCodecBox") self.gridLayout_2.addWidget(self.imageCodecBox, 3, 0, 1, 2) self.label_7 = QtWidgets.QLabel(self.groupBox_2) self.label_7.setObjectName("label_7") self.gridLayout_2.addWidget(self.label_7, 4, 0, 1, 1) self.imageQualitySlider = QtWidgets.QSlider(self.groupBox_2) self.imageQualitySlider.setMaximum(4) self.imageQualitySlider.setOrientation(QtCore.Qt.Horizontal) self.imageQualitySlider.setObjectName("imageQualitySlider") self.gridLayout_2.addWidget(self.imageQualitySlider, 4, 1, 1, 1) self.gridLayout.addWidget(self.groupBox_2, 0, 0, 1, 1) spacerItem = QtWidgets.QSpacerItem(20, 14, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.gridLayout.addItem(spacerItem, 1, 0, 1, 1) self.buttonBox = QtWidgets.QDialogButtonBox(ImageSettingsUi) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) self.buttonBox.setObjectName("buttonBox") self.gridLayout.addWidget(self.buttonBox, 2, 0, 1, 1) self.retranslateUi(ImageSettingsUi) self.buttonBox.accepted.connect(ImageSettingsUi.accept) self.buttonBox.rejected.connect(ImageSettingsUi.reject) QtCore.QMetaObject.connectSlotsByName(ImageSettingsUi) def retranslateUi(self, ImageSettingsUi): _translate = QtCore.QCoreApplication.translate ImageSettingsUi.setWindowTitle(_translate("ImageSettingsUi", "Dialog")) self.groupBox_2.setTitle(_translate("ImageSettingsUi", "Image")) self.label_8.setText(_translate("ImageSettingsUi", "Resolution:")) self.label_6.setText(_translate("ImageSettingsUi", "Image Format:")) self.label_7.setText(_translate("ImageSettingsUi", "Quality:")) PyQt5_gpl-5.10.1/examples/multimediawidgets/camera/ui_videosettings.py0000644000076500000240000001524213245231431026230 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'videosettings.ui' # # Created: Fri Jun 28 11:48:14 2013 # by: PyQt5 UI code generator 5.0-snapshot-478d7f271b71 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_VideoSettingsUi(object): def setupUi(self, VideoSettingsUi): VideoSettingsUi.setObjectName("VideoSettingsUi") VideoSettingsUi.resize(561, 369) self.gridLayout_4 = QtWidgets.QGridLayout(VideoSettingsUi) self.gridLayout_4.setObjectName("gridLayout_4") self.scrollArea = QtWidgets.QScrollArea(VideoSettingsUi) self.scrollArea.setFrameShape(QtWidgets.QFrame.NoFrame) self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName("scrollArea") self.scrollAreaWidgetContents = QtWidgets.QWidget() self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 543, 250)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.gridLayout_3 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents) self.gridLayout_3.setObjectName("gridLayout_3") self.groupBox = QtWidgets.QGroupBox(self.scrollAreaWidgetContents) self.groupBox.setObjectName("groupBox") self.gridLayout = QtWidgets.QGridLayout(self.groupBox) self.gridLayout.setObjectName("gridLayout") self.label_2 = QtWidgets.QLabel(self.groupBox) self.label_2.setObjectName("label_2") self.gridLayout.addWidget(self.label_2, 0, 0, 1, 2) self.audioCodecBox = QtWidgets.QComboBox(self.groupBox) self.audioCodecBox.setObjectName("audioCodecBox") self.gridLayout.addWidget(self.audioCodecBox, 1, 0, 1, 2) self.label_5 = QtWidgets.QLabel(self.groupBox) self.label_5.setObjectName("label_5") self.gridLayout.addWidget(self.label_5, 2, 0, 1, 2) self.audioSampleRateBox = QtWidgets.QComboBox(self.groupBox) self.audioSampleRateBox.setObjectName("audioSampleRateBox") self.gridLayout.addWidget(self.audioSampleRateBox, 3, 0, 1, 2) self.label_3 = QtWidgets.QLabel(self.groupBox) self.label_3.setObjectName("label_3") self.gridLayout.addWidget(self.label_3, 4, 0, 1, 1) self.audioQualitySlider = QtWidgets.QSlider(self.groupBox) self.audioQualitySlider.setMaximum(4) self.audioQualitySlider.setOrientation(QtCore.Qt.Horizontal) self.audioQualitySlider.setObjectName("audioQualitySlider") self.gridLayout.addWidget(self.audioQualitySlider, 4, 1, 1, 1) self.gridLayout_3.addWidget(self.groupBox, 0, 0, 1, 1) self.groupBox_2 = QtWidgets.QGroupBox(self.scrollAreaWidgetContents) self.groupBox_2.setObjectName("groupBox_2") self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_2) self.gridLayout_2.setObjectName("gridLayout_2") self.label_8 = QtWidgets.QLabel(self.groupBox_2) self.label_8.setObjectName("label_8") self.gridLayout_2.addWidget(self.label_8, 0, 0, 1, 2) self.videoResolutionBox = QtWidgets.QComboBox(self.groupBox_2) self.videoResolutionBox.setObjectName("videoResolutionBox") self.gridLayout_2.addWidget(self.videoResolutionBox, 1, 0, 1, 2) self.label_9 = QtWidgets.QLabel(self.groupBox_2) self.label_9.setObjectName("label_9") self.gridLayout_2.addWidget(self.label_9, 2, 0, 1, 2) self.videoFramerateBox = QtWidgets.QComboBox(self.groupBox_2) self.videoFramerateBox.setObjectName("videoFramerateBox") self.gridLayout_2.addWidget(self.videoFramerateBox, 3, 0, 1, 2) self.label_6 = QtWidgets.QLabel(self.groupBox_2) self.label_6.setObjectName("label_6") self.gridLayout_2.addWidget(self.label_6, 4, 0, 1, 2) self.videoCodecBox = QtWidgets.QComboBox(self.groupBox_2) self.videoCodecBox.setObjectName("videoCodecBox") self.gridLayout_2.addWidget(self.videoCodecBox, 5, 0, 1, 2) self.label_7 = QtWidgets.QLabel(self.groupBox_2) self.label_7.setObjectName("label_7") self.gridLayout_2.addWidget(self.label_7, 6, 0, 1, 1) self.videoQualitySlider = QtWidgets.QSlider(self.groupBox_2) self.videoQualitySlider.setMaximum(4) self.videoQualitySlider.setOrientation(QtCore.Qt.Horizontal) self.videoQualitySlider.setObjectName("videoQualitySlider") self.gridLayout_2.addWidget(self.videoQualitySlider, 6, 1, 1, 1) self.gridLayout_3.addWidget(self.groupBox_2, 0, 1, 3, 1) self.label_4 = QtWidgets.QLabel(self.scrollAreaWidgetContents) self.label_4.setObjectName("label_4") self.gridLayout_3.addWidget(self.label_4, 1, 0, 1, 1) self.containerFormatBox = QtWidgets.QComboBox(self.scrollAreaWidgetContents) self.containerFormatBox.setObjectName("containerFormatBox") self.gridLayout_3.addWidget(self.containerFormatBox, 2, 0, 1, 1) self.scrollArea.setWidget(self.scrollAreaWidgetContents) self.gridLayout_4.addWidget(self.scrollArea, 0, 0, 1, 1) spacerItem = QtWidgets.QSpacerItem(20, 14, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.gridLayout_4.addItem(spacerItem, 1, 0, 1, 1) self.buttonBox = QtWidgets.QDialogButtonBox(VideoSettingsUi) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) self.buttonBox.setObjectName("buttonBox") self.gridLayout_4.addWidget(self.buttonBox, 2, 0, 1, 1) self.retranslateUi(VideoSettingsUi) self.buttonBox.accepted.connect(VideoSettingsUi.accept) self.buttonBox.rejected.connect(VideoSettingsUi.reject) QtCore.QMetaObject.connectSlotsByName(VideoSettingsUi) def retranslateUi(self, VideoSettingsUi): _translate = QtCore.QCoreApplication.translate VideoSettingsUi.setWindowTitle(_translate("VideoSettingsUi", "Dialog")) self.groupBox.setTitle(_translate("VideoSettingsUi", "Audio")) self.label_2.setText(_translate("VideoSettingsUi", "Audio Codec:")) self.label_5.setText(_translate("VideoSettingsUi", "Sample Rate:")) self.label_3.setText(_translate("VideoSettingsUi", "Quality:")) self.groupBox_2.setTitle(_translate("VideoSettingsUi", "Video")) self.label_8.setText(_translate("VideoSettingsUi", "Resolution:")) self.label_9.setText(_translate("VideoSettingsUi", "Framerate:")) self.label_6.setText(_translate("VideoSettingsUi", "Video Codec:")) self.label_7.setText(_translate("VideoSettingsUi", "Quality:")) self.label_4.setText(_translate("VideoSettingsUi", "Container Format:")) PyQt5_gpl-5.10.1/examples/multimediawidgets/camera/videosettings.ui0000644000076500000240000001410013245231431025510 0ustar philstaff00000000000000 VideoSettingsUi 0 0 561 369 Dialog QFrame::NoFrame true 0 0 543 250 Audio Audio Codec: Sample Rate: Quality: 4 Qt::Horizontal Video Resolution: Framerate: Video Codec: Quality: 4 Qt::Horizontal Container Format: Qt::Vertical 20 14 Qt::Horizontal QDialogButtonBox::Cancel|QDialogButtonBox::Ok buttonBox accepted() VideoSettingsUi accept() 322 272 44 230 buttonBox rejected() VideoSettingsUi reject() 405 262 364 227 PyQt5_gpl-5.10.1/examples/multimediawidgets/player.py0000755000076500000240000006116613245231431022721 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (pyqtSignal, pyqtSlot, Q_ARG, QAbstractItemModel, QFileInfo, qFuzzyCompare, QMetaObject, QModelIndex, QObject, Qt, QThread, QTime, QUrl) from PyQt5.QtGui import QColor, qGray, QImage, QPainter, QPalette from PyQt5.QtMultimedia import (QAbstractVideoBuffer, QMediaContent, QMediaMetaData, QMediaPlayer, QMediaPlaylist, QVideoFrame, QVideoProbe) from PyQt5.QtMultimediaWidgets import QVideoWidget from PyQt5.QtWidgets import (QApplication, QComboBox, QDialog, QFileDialog, QFormLayout, QHBoxLayout, QLabel, QListView, QMessageBox, QPushButton, QSizePolicy, QSlider, QStyle, QToolButton, QVBoxLayout, QWidget) class VideoWidget(QVideoWidget): def __init__(self, parent=None): super(VideoWidget, self).__init__(parent) self.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) p = self.palette() p.setColor(QPalette.Window, Qt.black) self.setPalette(p) self.setAttribute(Qt.WA_OpaquePaintEvent) def keyPressEvent(self, event): if event.key() == Qt.Key_Escape and self.isFullScreen(): self.setFullScreen(False) event.accept() elif event.key() == Qt.Key_Enter and event.modifiers() & Qt.Key_Alt: self.setFullScreen(not self.isFullScreen()) event.accept() else: super(VideoWidget, self).keyPressEvent(event) def mouseDoubleClickEvent(self, event): self.setFullScreen(not self.isFullScreen()) event.accept() class PlaylistModel(QAbstractItemModel): Title, ColumnCount = range(2) def __init__(self, parent=None): super(PlaylistModel, self).__init__(parent) self.m_playlist = None def rowCount(self, parent=QModelIndex()): return self.m_playlist.mediaCount() if self.m_playlist is not None and not parent.isValid() else 0 def columnCount(self, parent=QModelIndex()): return self.ColumnCount if not parent.isValid() else 0 def index(self, row, column, parent=QModelIndex()): return self.createIndex(row, column) if self.m_playlist is not None and not parent.isValid() and row >= 0 and row < self.m_playlist.mediaCount() and column >= 0 and column < self.ColumnCount else QModelIndex() def parent(self, child): return QModelIndex() def data(self, index, role=Qt.DisplayRole): if index.isValid() and role == Qt.DisplayRole: if index.column() == self.Title: location = self.m_playlist.media(index.row()).canonicalUrl() return QFileInfo(location.path()).fileName() return self.m_data[index] return None def playlist(self): return self.m_playlist def setPlaylist(self, playlist): if self.m_playlist is not None: self.m_playlist.mediaAboutToBeInserted.disconnect( self.beginInsertItems) self.m_playlist.mediaInserted.disconnect(self.endInsertItems) self.m_playlist.mediaAboutToBeRemoved.disconnect( self.beginRemoveItems) self.m_playlist.mediaRemoved.disconnect(self.endRemoveItems) self.m_playlist.mediaChanged.disconnect(self.changeItems) self.beginResetModel() self.m_playlist = playlist if self.m_playlist is not None: self.m_playlist.mediaAboutToBeInserted.connect( self.beginInsertItems) self.m_playlist.mediaInserted.connect(self.endInsertItems) self.m_playlist.mediaAboutToBeRemoved.connect( self.beginRemoveItems) self.m_playlist.mediaRemoved.connect(self.endRemoveItems) self.m_playlist.mediaChanged.connect(self.changeItems) self.endResetModel() def beginInsertItems(self, start, end): self.beginInsertRows(QModelIndex(), start, end) def endInsertItems(self): self.endInsertRows() def beginRemoveItems(self, start, end): self.beginRemoveRows(QModelIndex(), start, end) def endRemoveItems(self): self.endRemoveRows() def changeItems(self, start, end): self.dataChanged.emit(self.index(start, 0), self.index(end, self.ColumnCount)) class PlayerControls(QWidget): play = pyqtSignal() pause = pyqtSignal() stop = pyqtSignal() next = pyqtSignal() previous = pyqtSignal() changeVolume = pyqtSignal(int) changeMuting = pyqtSignal(bool) changeRate = pyqtSignal(float) def __init__(self, parent=None): super(PlayerControls, self).__init__(parent) self.playerState = QMediaPlayer.StoppedState self.playerMuted = False self.playButton = QToolButton(clicked=self.playClicked) self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.stopButton = QToolButton(clicked=self.stop) self.stopButton.setIcon(self.style().standardIcon(QStyle.SP_MediaStop)) self.stopButton.setEnabled(False) self.nextButton = QToolButton(clicked=self.next) self.nextButton.setIcon( self.style().standardIcon(QStyle.SP_MediaSkipForward)) self.previousButton = QToolButton(clicked=self.previous) self.previousButton.setIcon( self.style().standardIcon(QStyle.SP_MediaSkipBackward)) self.muteButton = QToolButton(clicked=self.muteClicked) self.muteButton.setIcon( self.style().standardIcon(QStyle.SP_MediaVolume)) self.volumeSlider = QSlider(Qt.Horizontal, sliderMoved=self.changeVolume) self.volumeSlider.setRange(0, 100) self.rateBox = QComboBox(activated=self.updateRate) self.rateBox.addItem("0.5x", 0.5) self.rateBox.addItem("1.0x", 1.0) self.rateBox.addItem("2.0x", 2.0) self.rateBox.setCurrentIndex(1) layout = QHBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.stopButton) layout.addWidget(self.previousButton) layout.addWidget(self.playButton) layout.addWidget(self.nextButton) layout.addWidget(self.muteButton) layout.addWidget(self.volumeSlider) layout.addWidget(self.rateBox) self.setLayout(layout) def state(self): return self.playerState def setState(self,state): if state != self.playerState: self.playerState = state if state == QMediaPlayer.StoppedState: self.stopButton.setEnabled(False) self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPlay)) elif state == QMediaPlayer.PlayingState: self.stopButton.setEnabled(True) self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPause)) elif state == QMediaPlayer.PausedState: self.stopButton.setEnabled(True) self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPlay)) def volume(self): return self.volumeSlider.value() def setVolume(self, volume): self.volumeSlider.setValue(volume) def isMuted(self): return self.playerMuted def setMuted(self, muted): if muted != self.playerMuted: self.playerMuted = muted self.muteButton.setIcon( self.style().standardIcon( QStyle.SP_MediaVolumeMuted if muted else QStyle.SP_MediaVolume)) def playClicked(self): if self.playerState in (QMediaPlayer.StoppedState, QMediaPlayer.PausedState): self.play.emit() elif self.playerState == QMediaPlayer.PlayingState: self.pause.emit() def muteClicked(self): self.changeMuting.emit(not self.playerMuted) def playbackRate(self): return self.rateBox.itemData(self.rateBox.currentIndex()) def setPlaybackRate(self, rate): for i in range(self.rateBox.count()): if qFuzzyCompare(rate, self.rateBox.itemData(i)): self.rateBox.setCurrentIndex(i) return self.rateBox.addItem("%dx" % rate, rate) self.rateBox.setCurrentIndex(self.rateBox.count() - 1) def updateRate(self): self.changeRate.emit(self.playbackRate()) class FrameProcessor(QObject): histogramReady = pyqtSignal(list) @pyqtSlot(QVideoFrame, int) def processFrame(self, frame, levels): histogram = [0.0] * levels if levels and frame.map(QAbstractVideoBuffer.ReadOnly): pixelFormat = frame.pixelFormat() if pixelFormat == QVideoFrame.Format_YUV420P or pixelFormat == QVideoFrame.Format_NV12: # Process YUV data. bits = frame.bits() for idx in range(frame.height() * frame.width()): histogram[(bits[idx] * levels) >> 8] += 1.0 else: imageFormat = QVideoFrame.imageFormatFromPixelFormat(pixelFormat) if imageFormat != QImage.Format_Invalid: # Process RGB data. image = QImage(frame.bits(), frame.width(), frame.height(), imageFormat) for y in range(image.height()): for x in range(image.width()): pixel = image.pixel(x, y) histogram[(qGray(pixel) * levels) >> 8] += 1.0 # Find the maximum value. maxValue = 0.0 for value in histogram: if value > maxValue: maxValue = value # Normalise the values between 0 and 1. if maxValue > 0.0: for i in range(len(histogram)): histogram[i] /= maxValue frame.unmap() self.histogramReady.emit(histogram) class HistogramWidget(QWidget): def __init__(self, parent=None): super(HistogramWidget, self).__init__(parent) self.m_levels = 128 self.m_isBusy = False self.m_histogram = [] self.m_processor = FrameProcessor() self.m_processorThread = QThread() self.m_processor.moveToThread(self.m_processorThread) self.m_processor.histogramReady.connect(self.setHistogram) def __del__(self): self.m_processorThread.quit() self.m_processorThread.wait(10000) def setLevels(self, levels): self.m_levels = levels def processFrame(self, frame): if self.m_isBusy: return self.m_isBusy = True QMetaObject.invokeMethod(self.m_processor, 'processFrame', Qt.QueuedConnection, Q_ARG(QVideoFrame, frame), Q_ARG(int, self.m_levels)) @pyqtSlot(list) def setHistogram(self, histogram): self.m_isBusy = False self.m_histogram = list(histogram) self.update() def paintEvent(self, event): painter = QPainter(self) if len(self.m_histogram) == 0: painter.fillRect(0, 0, self.width(), self.height(), QColor.fromRgb(0, 0, 0)) return barWidth = self.width() / float(len(self.m_histogram)) for i, value in enumerate(self.m_histogram): h = value * self.height() # Draw the level. painter.fillRect(barWidth * i, self.height() - h, barWidth * (i + 1), self.height(), Qt.red) # Clear the rest of the control. painter.fillRect(barWidth * i, 0, barWidth * (i + 1), self.height() - h, Qt.black) class Player(QWidget): fullScreenChanged = pyqtSignal(bool) def __init__(self, playlist, parent=None): super(Player, self).__init__(parent) self.colorDialog = None self.trackInfo = "" self.statusInfo = "" self.duration = 0 self.player = QMediaPlayer() self.playlist = QMediaPlaylist() self.player.setPlaylist(self.playlist) self.player.durationChanged.connect(self.durationChanged) self.player.positionChanged.connect(self.positionChanged) self.player.metaDataChanged.connect(self.metaDataChanged) self.playlist.currentIndexChanged.connect(self.playlistPositionChanged) self.player.mediaStatusChanged.connect(self.statusChanged) self.player.bufferStatusChanged.connect(self.bufferingProgress) self.player.videoAvailableChanged.connect(self.videoAvailableChanged) self.player.error.connect(self.displayErrorMessage) self.videoWidget = VideoWidget() self.player.setVideoOutput(self.videoWidget) self.playlistModel = PlaylistModel() self.playlistModel.setPlaylist(self.playlist) self.playlistView = QListView() self.playlistView.setModel(self.playlistModel) self.playlistView.setCurrentIndex( self.playlistModel.index(self.playlist.currentIndex(), 0)) self.playlistView.activated.connect(self.jump) self.slider = QSlider(Qt.Horizontal) self.slider.setRange(0, self.player.duration() / 1000) self.labelDuration = QLabel() self.slider.sliderMoved.connect(self.seek) self.labelHistogram = QLabel() self.labelHistogram.setText("Histogram:") self.histogram = HistogramWidget() histogramLayout = QHBoxLayout() histogramLayout.addWidget(self.labelHistogram) histogramLayout.addWidget(self.histogram, 1) self.probe = QVideoProbe() self.probe.videoFrameProbed.connect(self.histogram.processFrame) self.probe.setSource(self.player) openButton = QPushButton("Open", clicked=self.open) controls = PlayerControls() controls.setState(self.player.state()) controls.setVolume(self.player.volume()) controls.setMuted(controls.isMuted()) controls.play.connect(self.player.play) controls.pause.connect(self.player.pause) controls.stop.connect(self.player.stop) controls.next.connect(self.playlist.next) controls.previous.connect(self.previousClicked) controls.changeVolume.connect(self.player.setVolume) controls.changeMuting.connect(self.player.setMuted) controls.changeRate.connect(self.player.setPlaybackRate) controls.stop.connect(self.videoWidget.update) self.player.stateChanged.connect(controls.setState) self.player.volumeChanged.connect(controls.setVolume) self.player.mutedChanged.connect(controls.setMuted) self.fullScreenButton = QPushButton("FullScreen") self.fullScreenButton.setCheckable(True) self.colorButton = QPushButton("Color Options...") self.colorButton.setEnabled(False) self.colorButton.clicked.connect(self.showColorDialog) displayLayout = QHBoxLayout() displayLayout.addWidget(self.videoWidget, 2) displayLayout.addWidget(self.playlistView) controlLayout = QHBoxLayout() controlLayout.setContentsMargins(0, 0, 0, 0) controlLayout.addWidget(openButton) controlLayout.addStretch(1) controlLayout.addWidget(controls) controlLayout.addStretch(1) controlLayout.addWidget(self.fullScreenButton) controlLayout.addWidget(self.colorButton) layout = QVBoxLayout() layout.addLayout(displayLayout) hLayout = QHBoxLayout() hLayout.addWidget(self.slider) hLayout.addWidget(self.labelDuration) layout.addLayout(hLayout) layout.addLayout(controlLayout) layout.addLayout(histogramLayout) self.setLayout(layout) if not self.player.isAvailable(): QMessageBox.warning(self, "Service not available", "The QMediaPlayer object does not have a valid service.\n" "Please check the media service plugins are installed.") controls.setEnabled(False) self.playlistView.setEnabled(False) openButton.setEnabled(False) self.colorButton.setEnabled(False) self.fullScreenButton.setEnabled(False) self.metaDataChanged() self.addToPlaylist(playlist) def open(self): fileNames, _ = QFileDialog.getOpenFileNames(self, "Open Files") self.addToPlaylist(fileNames) def addToPlaylist(self, fileNames): for name in fileNames: fileInfo = QFileInfo(name) if fileInfo.exists(): url = QUrl.fromLocalFile(fileInfo.absoluteFilePath()) if fileInfo.suffix().lower() == 'm3u': self.playlist.load(url) else: self.playlist.addMedia(QMediaContent(url)) else: url = QUrl(name) if url.isValid(): self.playlist.addMedia(QMediaContent(url)) def durationChanged(self, duration): duration /= 1000 self.duration = duration self.slider.setMaximum(duration) def positionChanged(self, progress): progress /= 1000 if not self.slider.isSliderDown(): self.slider.setValue(progress) self.updateDurationInfo(progress) def metaDataChanged(self): if self.player.isMetaDataAvailable(): self.setTrackInfo("%s - %s" % ( self.player.metaData(QMediaMetaData.AlbumArtist), self.player.metaData(QMediaMetaData.Title))) def previousClicked(self): # Go to the previous track if we are within the first 5 seconds of # playback. Otherwise, seek to the beginning. if self.player.position() <= 5000: self.playlist.previous() else: self.player.setPosition(0) def jump(self, index): if index.isValid(): self.playlist.setCurrentIndex(index.row()) self.player.play() def playlistPositionChanged(self, position): self.playlistView.setCurrentIndex( self.playlistModel.index(position, 0)) def seek(self, seconds): self.player.setPosition(seconds * 1000) def statusChanged(self, status): self.handleCursor(status) if status == QMediaPlayer.LoadingMedia: self.setStatusInfo("Loading...") elif status == QMediaPlayer.StalledMedia: self.setStatusInfo("Media Stalled") elif status == QMediaPlayer.EndOfMedia: QApplication.alert(self) elif status == QMediaPlayer.InvalidMedia: self.displayErrorMessage() else: self.setStatusInfo("") def handleCursor(self, status): if status in (QMediaPlayer.LoadingMedia, QMediaPlayer.BufferingMedia, QMediaPlayer.StalledMedia): self.setCursor(Qt.BusyCursor) else: self.unsetCursor() def bufferingProgress(self, progress): self.setStatusInfo("Buffering %d%" % progress) def videoAvailableChanged(self, available): if available: self.fullScreenButton.clicked.connect( self.videoWidget.setFullScreen) self.videoWidget.fullScreenChanged.connect( self.fullScreenButton.setChecked) if self.fullScreenButton.isChecked(): self.videoWidget.setFullScreen(True) else: self.fullScreenButton.clicked.disconnect( self.videoWidget.setFullScreen) self.videoWidget.fullScreenChanged.disconnect( self.fullScreenButton.setChecked) self.videoWidget.setFullScreen(False) self.colorButton.setEnabled(available) def setTrackInfo(self, info): self.trackInfo = info if self.statusInfo != "": self.setWindowTitle("%s | %s" % (self.trackInfo, self.statusInfo)) else: self.setWindowTitle(self.trackInfo) def setStatusInfo(self, info): self.statusInfo = info if self.statusInfo != "": self.setWindowTitle("%s | %s" % (self.trackInfo, self.statusInfo)) else: self.setWindowTitle(self.trackInfo) def displayErrorMessage(self): self.setStatusInfo(self.player.errorString()) def updateDurationInfo(self, currentInfo): duration = self.duration if currentInfo or duration: currentTime = QTime((currentInfo/3600)%60, (currentInfo/60)%60, currentInfo%60, (currentInfo*1000)%1000) totalTime = QTime((duration/3600)%60, (duration/60)%60, duration%60, (duration*1000)%1000); format = 'hh:mm:ss' if duration > 3600 else 'mm:ss' tStr = currentTime.toString(format) + " / " + totalTime.toString(format) else: tStr = "" self.labelDuration.setText(tStr) def showColorDialog(self): if self.colorDialog is None: brightnessSlider = QSlider(Qt.Horizontal) brightnessSlider.setRange(-100, 100) brightnessSlider.setValue(self.videoWidget.brightness()) brightnessSlider.sliderMoved.connect( self.videoWidget.setBrightness) self.videoWidget.brightnessChanged.connect( brightnessSlider.setValue) contrastSlider = QSlider(Qt.Horizontal) contrastSlider.setRange(-100, 100) contrastSlider.setValue(self.videoWidget.contrast()) contrastSlider.sliderMoved.connect(self.videoWidget.setContrast) self.videoWidget.contrastChanged.connect(contrastSlider.setValue) hueSlider = QSlider(Qt.Horizontal) hueSlider.setRange(-100, 100) hueSlider.setValue(self.videoWidget.hue()) hueSlider.sliderMoved.connect(self.videoWidget.setHue) self.videoWidget.hueChanged.connect(hueSlider.setValue) saturationSlider = QSlider(Qt.Horizontal) saturationSlider.setRange(-100, 100) saturationSlider.setValue(self.videoWidget.saturation()) saturationSlider.sliderMoved.connect( self.videoWidget.setSaturation) self.videoWidget.saturationChanged.connect( saturationSlider.setValue) layout = QFormLayout() layout.addRow("Brightness", brightnessSlider) layout.addRow("Contrast", contrastSlider) layout.addRow("Hue", hueSlider) layout.addRow("Saturation", saturationSlider) button = QPushButton("Close") layout.addRow(button) self.colorDialog = QDialog(self) self.colorDialog.setWindowTitle("Color Options") self.colorDialog.setLayout(layout) button.clicked.connect(self.colorDialog.close) self.colorDialog.show() if __name__ == '__main__': import sys app = QApplication(sys.argv) player = Player(sys.argv[1:]) player.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/multimediawidgets/README0000644000076500000240000000137113245231431021720 0ustar philstaff00000000000000PyQt contains classes that provide support for audio, video, radio and cameras. The QtMultimediaWidgets module allows them to be used in widget-based applications. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/multimediawidgets/videographicsitem.py0000755000076500000240000001313513245231431025124 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDir, QSize, QSizeF, Qt, QUrl from PyQt5.QtGui import QTransform from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer from PyQt5.QtMultimediaWidgets import QGraphicsVideoItem from PyQt5.QtWidgets import (QApplication, QFileDialog, QGraphicsScene, QGraphicsView, QHBoxLayout, QPushButton, QSlider, QStyle, QVBoxLayout, QWidget) class VideoPlayer(QWidget): def __init__(self, parent=None): super(VideoPlayer, self).__init__(parent) self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) self.videoItem = QGraphicsVideoItem() self.videoItem.setSize(QSizeF(640, 480)) scene = QGraphicsScene(self) graphicsView = QGraphicsView(scene) scene.addItem(self.videoItem) rotateSlider = QSlider(Qt.Horizontal) rotateSlider.setRange(-180, 180) rotateSlider.setValue(0) rotateSlider.valueChanged.connect(self.rotateVideo) openButton = QPushButton("Open...") openButton.clicked.connect(self.openFile) self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.clicked.connect(self.play) self.positionSlider = QSlider(Qt.Horizontal) self.positionSlider.setRange(0, 0) self.positionSlider.sliderMoved.connect(self.setPosition) controlLayout = QHBoxLayout() controlLayout.setContentsMargins(0, 0, 0, 0) controlLayout.addWidget(openButton) controlLayout.addWidget(self.playButton) controlLayout.addWidget(self.positionSlider) layout = QVBoxLayout() layout.addWidget(graphicsView) layout.addWidget(rotateSlider) layout.addLayout(controlLayout) self.setLayout(layout) self.mediaPlayer.setVideoOutput(self.videoItem) self.mediaPlayer.stateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.durationChanged.connect(self.durationChanged) def sizeHint(self): return QSize(800, 600) def openFile(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open Movie", QDir.homePath()) if fileName != '': self.mediaPlayer.setMedia( QMediaContent(QUrl.fromLocalFile(fileName))) self.playButton.setEnabled(True) def play(self): if self.mediaPlayer.state() == QMediaPlayer.PlayingState: self.mediaPlayer.pause() else: self.mediaPlayer.play() def mediaStateChanged(self, state): if self.mediaPlayer.state() == QMediaPlayer.PlayingState: self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPause)) else: self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPlay)) def positionChanged(self, position): self.positionSlider.setValue(position) def durationChanged(self, duration): self.positionSlider.setRange(0, duration) def setPosition(self, position): self.mediaPlayer.setPosition(position) def rotateVideo(self, angle): x = self.videoItem.boundingRect().width() / 2.0 y = self.videoItem.boundingRect().height() / 2.0 self.videoItem.setTransform( QTransform().translate(x, y).rotate(angle).translate(-x, -y)) if __name__ == '__main__': import sys app = QApplication(sys.argv) player = VideoPlayer() player.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/multimediawidgets/videowidget.py0000755000076500000240000001232613245231431023731 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDir, Qt, QUrl from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer from PyQt5.QtMultimediaWidgets import QVideoWidget from PyQt5.QtWidgets import (QApplication, QFileDialog, QHBoxLayout, QLabel, QPushButton, QSizePolicy, QSlider, QStyle, QVBoxLayout, QWidget) class VideoPlayer(QWidget): def __init__(self, parent=None): super(VideoPlayer, self).__init__(parent) self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) videoWidget = QVideoWidget() openButton = QPushButton("Open...") openButton.clicked.connect(self.openFile) self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.clicked.connect(self.play) self.positionSlider = QSlider(Qt.Horizontal) self.positionSlider.setRange(0, 0) self.positionSlider.sliderMoved.connect(self.setPosition) self.errorLabel = QLabel() self.errorLabel.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) controlLayout = QHBoxLayout() controlLayout.setContentsMargins(0, 0, 0, 0) controlLayout.addWidget(openButton) controlLayout.addWidget(self.playButton) controlLayout.addWidget(self.positionSlider) layout = QVBoxLayout() layout.addWidget(videoWidget) layout.addLayout(controlLayout) layout.addWidget(self.errorLabel) self.setLayout(layout) self.mediaPlayer.setVideoOutput(videoWidget) self.mediaPlayer.stateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.durationChanged.connect(self.durationChanged) self.mediaPlayer.error.connect(self.handleError) def openFile(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open Movie", QDir.homePath()) if fileName != '': self.mediaPlayer.setMedia( QMediaContent(QUrl.fromLocalFile(fileName))) self.playButton.setEnabled(True) def play(self): if self.mediaPlayer.state() == QMediaPlayer.PlayingState: self.mediaPlayer.pause() else: self.mediaPlayer.play() def mediaStateChanged(self, state): if self.mediaPlayer.state() == QMediaPlayer.PlayingState: self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPause)) else: self.playButton.setIcon( self.style().standardIcon(QStyle.SP_MediaPlay)) def positionChanged(self, position): self.positionSlider.setValue(position) def durationChanged(self, duration): self.positionSlider.setRange(0, duration) def setPosition(self, position): self.mediaPlayer.setPosition(position) def handleError(self): self.playButton.setEnabled(False) self.errorLabel.setText("Error: " + self.mediaPlayer.errorString()) if __name__ == '__main__': import sys app = QApplication(sys.argv) player = VideoPlayer() player.resize(320, 240) player.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/network/0000755000076500000240000000000013245231431017006 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/network/blockingfortuneclient.py0000755000076500000240000002014613245231431023760 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (pyqtSignal, QDataStream, QMutex, QMutexLocker, QThread, QWaitCondition) from PyQt5.QtGui import QIntValidator from PyQt5.QtWidgets import (QApplication, QDialogButtonBox, QGridLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QWidget) from PyQt5.QtNetwork import (QAbstractSocket, QHostAddress, QNetworkInterface, QTcpSocket) class FortuneThread(QThread): newFortune = pyqtSignal(str) error = pyqtSignal(int, str) def __init__(self, parent=None): super(FortuneThread, self).__init__(parent) self.quit = False self.hostName = '' self.cond = QWaitCondition() self.mutex = QMutex() self.port = 0 def __del__(self): self.mutex.lock() self.quit = True self.cond.wakeOne() self.mutex.unlock() self.wait() def requestNewFortune(self, hostname, port): locker = QMutexLocker(self.mutex) self.hostName = hostname self.port = port if not self.isRunning(): self.start() else: self.cond.wakeOne() def run(self): self.mutex.lock() serverName = self.hostName serverPort = self.port self.mutex.unlock() while not self.quit: Timeout = 5 * 1000 socket = QTcpSocket() socket.connectToHost(serverName, serverPort) if not socket.waitForConnected(Timeout): self.error.emit(socket.error(), socket.errorString()) return while socket.bytesAvailable() < 2: if not socket.waitForReadyRead(Timeout): self.error.emit(socket.error(), socket.errorString()) return instr = QDataStream(socket) instr.setVersion(QDataStream.Qt_4_0) blockSize = instr.readUInt16() while socket.bytesAvailable() < blockSize: if not socket.waitForReadyRead(Timeout): self.error.emit(socket.error(), socket.errorString()) return self.mutex.lock() fortune = instr.readQString() self.newFortune.emit(fortune) self.cond.wait(self.mutex) serverName = self.hostName serverPort = self.port self.mutex.unlock() class BlockingClient(QWidget): def __init__(self, parent=None): super(BlockingClient, self).__init__(parent) self.thread = FortuneThread() self.currentFortune = '' hostLabel = QLabel("&Server name:") portLabel = QLabel("S&erver port:") for ipAddress in QNetworkInterface.allAddresses(): if ipAddress != QHostAddress.LocalHost and ipAddress.toIPv4Address() != 0: break else: ipAddress = QHostAddress(QHostAddress.LocalHost) ipAddress = ipAddress.toString() self.hostLineEdit = QLineEdit(ipAddress) self.portLineEdit = QLineEdit() self.portLineEdit.setValidator(QIntValidator(1, 65535, self)) hostLabel.setBuddy(self.hostLineEdit) portLabel.setBuddy(self.portLineEdit) self.statusLabel = QLabel( "This example requires that you run the Fortune Server example as well.") self.statusLabel.setWordWrap(True) self.getFortuneButton = QPushButton("Get Fortune") self.getFortuneButton.setDefault(True) self.getFortuneButton.setEnabled(False) quitButton = QPushButton("Quit") buttonBox = QDialogButtonBox() buttonBox.addButton(self.getFortuneButton, QDialogButtonBox.ActionRole) buttonBox.addButton(quitButton, QDialogButtonBox.RejectRole) self.getFortuneButton.clicked.connect(self.requestNewFortune) quitButton.clicked.connect(self.close) self.hostLineEdit.textChanged.connect(self.enableGetFortuneButton) self.portLineEdit.textChanged.connect(self.enableGetFortuneButton) self.thread.newFortune.connect(self.showFortune) self.thread.error.connect(self.displayError) mainLayout = QGridLayout() mainLayout.addWidget(hostLabel, 0, 0) mainLayout.addWidget(self.hostLineEdit, 0, 1) mainLayout.addWidget(portLabel, 1, 0) mainLayout.addWidget(self.portLineEdit, 1, 1) mainLayout.addWidget(self.statusLabel, 2, 0, 1, 2) mainLayout.addWidget(buttonBox, 3, 0, 1, 2) self.setLayout(mainLayout) self.setWindowTitle("Blocking Fortune Client") self.portLineEdit.setFocus() def requestNewFortune(self): self.getFortuneButton.setEnabled(False) self.thread.requestNewFortune(self.hostLineEdit.text(), int(self.portLineEdit.text())) def showFortune(self, nextFortune): if nextFortune == self.currentFortune: self.requestNewFortune() return self.currentFortune = nextFortune self.statusLabel.setText(self.currentFortune) self.getFortuneButton.setEnabled(True) def displayError(self, socketError, message): if socketError == QAbstractSocket.HostNotFoundError: QMessageBox.information(self, "Blocking Fortune Client", "The host was not found. Please check the host and port " "settings.") elif socketError == QAbstractSocket.ConnectionRefusedError: QMessageBox.information(self, "Blocking Fortune Client", "The connection was refused by the peer. Make sure the " "fortune server is running, and check that the host name " "and port settings are correct.") else: QMessageBox.information(self, "Blocking Fortune Client", "The following error occurred: %s." % message) self.getFortuneButton.setEnabled(True) def enableGetFortuneButton(self): self.getFortuneButton.setEnabled(self.hostLineEdit.text() != '' and self.portLineEdit.text() != '') if __name__ == '__main__': import sys app = QApplication(sys.argv) client = BlockingClient() client.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/network/broadcastreceiver.py0000755000076500000240000000702313245231431023054 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtWidgets import (QApplication, QDialog, QHBoxLayout, QLabel, QPushButton, QVBoxLayout) from PyQt5.QtNetwork import QUdpSocket class Receiver(QDialog): def __init__(self, parent=None): super(Receiver, self).__init__(parent) self.statusLabel = QLabel("Listening for broadcasted messages") quitButton = QPushButton("&Quit") self.udpSocket = QUdpSocket(self) self.udpSocket.bind(45454) self.udpSocket.readyRead.connect(self.processPendingDatagrams) quitButton.clicked.connect(self.close) buttonLayout = QHBoxLayout() buttonLayout.addStretch(1) buttonLayout.addWidget(quitButton) buttonLayout.addStretch(1) mainLayout = QVBoxLayout() mainLayout.addWidget(self.statusLabel) mainLayout.addLayout(buttonLayout) self.setLayout(mainLayout) self.setWindowTitle("Broadcast Receiver") def processPendingDatagrams(self): while self.udpSocket.hasPendingDatagrams(): datagram, host, port = self.udpSocket.readDatagram(self.udpSocket.pendingDatagramSize()) try: # Python v3. datagram = str(datagram, encoding='ascii') except TypeError: # Python v2. pass self.statusLabel.setText("Received datagram: \"%s\"" % datagram) if __name__ == '__main__': import sys app = QApplication(sys.argv) receiver = Receiver() receiver.show() sys.exit(receiver.exec_()) PyQt5_gpl-5.10.1/examples/network/broadcastsender.py0000755000076500000240000000725313245231431022535 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QTimer from PyQt5.QtWidgets import (QApplication, QDialog, QDialogButtonBox, QLabel, QPushButton, QVBoxLayout) from PyQt5.QtNetwork import QHostAddress, QUdpSocket class Sender(QDialog): def __init__(self, parent=None): super(Sender, self).__init__(parent) self.statusLabel = QLabel("Ready to broadcast datagrams on port 45454") self.startButton = QPushButton("&Start") quitButton = QPushButton("&Quit") buttonBox = QDialogButtonBox() buttonBox.addButton(self.startButton, QDialogButtonBox.ActionRole) buttonBox.addButton(quitButton, QDialogButtonBox.RejectRole) self.timer = QTimer(self) self.udpSocket = QUdpSocket(self) self.messageNo = 1 self.startButton.clicked.connect(self.startBroadcasting) quitButton.clicked.connect(self.close) self.timer.timeout.connect(self.broadcastDatagramm) mainLayout = QVBoxLayout() mainLayout.addWidget(self.statusLabel) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Broadcast Sender") def startBroadcasting(self): self.startButton.setEnabled(False) self.timer.start(1000) def broadcastDatagramm(self): self.statusLabel.setText("Now broadcasting datagram %d" % self.messageNo) datagram = "Broadcast message %d" % self.messageNo self.udpSocket.writeDatagram(datagram, QHostAddress(QHostAddress.Broadcast), 45454) self.messageNo += 1 if __name__ == '__main__': import sys app = QApplication(sys.argv) sender = Sender() sender.show() sys.exit(sender.exec_()) PyQt5_gpl-5.10.1/examples/network/fortuneclient.py0000755000076500000240000002122413245231431022245 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDataStream, QSettings, QTimer from PyQt5.QtGui import QIntValidator from PyQt5.QtWidgets import (QApplication, QComboBox, QDialog, QDialogButtonBox, QGridLayout, QLabel, QLineEdit, QMessageBox, QPushButton) from PyQt5.QtNetwork import (QAbstractSocket, QHostInfo, QNetworkConfiguration, QNetworkConfigurationManager, QNetworkInterface, QNetworkSession, QTcpSocket) class Client(QDialog): def __init__(self, parent=None): super(Client, self).__init__(parent) self.networkSession = None self.blockSize = 0 self.currentFortune = '' hostLabel = QLabel("&Server name:") portLabel = QLabel("S&erver port:") self.hostCombo = QComboBox() self.hostCombo.setEditable(True) name = QHostInfo.localHostName() if name != '': self.hostCombo.addItem(name) domain = QHostInfo.localDomainName() if domain != '': self.hostCombo.addItem(name + '.' + domain) if name != 'localhost': self.hostCombo.addItem('localhost') ipAddressesList = QNetworkInterface.allAddresses() for ipAddress in ipAddressesList: if not ipAddress.isLoopback(): self.hostCombo.addItem(ipAddress.toString()) for ipAddress in ipAddressesList: if ipAddress.isLoopback(): self.hostCombo.addItem(ipAddress.toString()) self.portLineEdit = QLineEdit() self.portLineEdit.setValidator(QIntValidator(1, 65535, self)) hostLabel.setBuddy(self.hostCombo) portLabel.setBuddy(self.portLineEdit) self.statusLabel = QLabel("This examples requires that you run " "the Fortune Server example as well.") self.getFortuneButton = QPushButton("Get Fortune") self.getFortuneButton.setDefault(True) self.getFortuneButton.setEnabled(False) quitButton = QPushButton("Quit") buttonBox = QDialogButtonBox() buttonBox.addButton(self.getFortuneButton, QDialogButtonBox.ActionRole) buttonBox.addButton(quitButton, QDialogButtonBox.RejectRole) self.tcpSocket = QTcpSocket(self) self.hostCombo.editTextChanged.connect(self.enableGetFortuneButton) self.portLineEdit.textChanged.connect(self.enableGetFortuneButton) self.getFortuneButton.clicked.connect(self.requestNewFortune) quitButton.clicked.connect(self.close) self.tcpSocket.readyRead.connect(self.readFortune) self.tcpSocket.error.connect(self.displayError) mainLayout = QGridLayout() mainLayout.addWidget(hostLabel, 0, 0) mainLayout.addWidget(self.hostCombo, 0, 1) mainLayout.addWidget(portLabel, 1, 0) mainLayout.addWidget(self.portLineEdit, 1, 1) mainLayout.addWidget(self.statusLabel, 2, 0, 1, 2) mainLayout.addWidget(buttonBox, 3, 0, 1, 2) self.setLayout(mainLayout) self.setWindowTitle("Fortune Client") self.portLineEdit.setFocus() manager = QNetworkConfigurationManager() if manager.capabilities() & QNetworkConfigurationManager.NetworkSessionRequired: settings = QSettings(QSettings.UserScope, 'QtProject') settings.beginGroup('QtNetwork') id = settings.value('DefaultNetworkConfiguration') settings.endGroup() config = manager.configurationFromIdentifier(id) if config.state() & QNetworkConfiguration.Discovered == 0: config = manager.defaultConfiguration() self.networkSession = QNetworkSession(config, self) self.networkSession.opened.connect(self.sessionOpened) self.getFortuneButton.setEnabled(False) self.statusLabel.setText("Opening network session.") self.networkSession.open() def requestNewFortune(self): self.getFortuneButton.setEnabled(False) self.blockSize = 0 self.tcpSocket.abort() self.tcpSocket.connectToHost(self.hostCombo.currentText(), int(self.portLineEdit.text())) def readFortune(self): instr = QDataStream(self.tcpSocket) instr.setVersion(QDataStream.Qt_4_0) if self.blockSize == 0: if self.tcpSocket.bytesAvailable() < 2: return self.blockSize = instr.readUInt16() if self.tcpSocket.bytesAvailable() < self.blockSize: return nextFortune = instr.readQString() if nextFortune == self.currentFortune: QTimer.singleShot(0, self.requestNewFortune) return self.currentFortune = nextFortune self.statusLabel.setText(self.currentFortune) self.getFortuneButton.setEnabled(True) def displayError(self, socketError): if socketError == QAbstractSocket.RemoteHostClosedError: pass elif socketError == QAbstractSocket.HostNotFoundError: QMessageBox.information(self, "Fortune Client", "The host was not found. Please check the host name and " "port settings.") elif socketError == QAbstractSocket.ConnectionRefusedError: QMessageBox.information(self, "Fortune Client", "The connection was refused by the peer. Make sure the " "fortune server is running, and check that the host name " "and port settings are correct.") else: QMessageBox.information(self, "Fortune Client", "The following error occurred: %s." % self.tcpSocket.errorString()) self.getFortuneButton.setEnabled(True) def enableGetFortuneButton(self): self.getFortuneButton.setEnabled( (self.networkSession is None or self.networkSession.isOpen()) and self.hostCombo.currentText() != '' and self.portLineEdit.text() != '') def sessionOpened(self): config = self.networkSession.configuration() if config.type() == QNetworkConfiguration.UserChoice: id = self.networkSession.sessionProperty('UserChoiceConfiguration') else: id = config.identifier() settings = QSettings(QSettings.UserScope, 'QtProject') settings.beginGroup('QtNetwork') settings.setValue('DefaultNetworkConfiguration', id) settings.endGroup() self.statusLabel.setText("This examples requires that you run the " "Fortune Server example as well.") self.enableGetFortuneButton() if __name__ == '__main__': import sys app = QApplication(sys.argv) client = Client() client.show() sys.exit(client.exec_()) PyQt5_gpl-5.10.1/examples/network/fortuneserver.py0000755000076500000240000001444713245231431022306 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import random from PyQt5.QtCore import QByteArray, QDataStream, QIODevice, QSettings from PyQt5.QtWidgets import (QApplication, QDialog, QHBoxLayout, QLabel, QMessageBox, QPushButton, QVBoxLayout) from PyQt5.QtNetwork import (QHostAddress, QNetworkConfiguration, QNetworkConfigurationManager, QNetworkInterface, QNetworkSession, QTcpServer) class Server(QDialog): FORTUNES = ( "You've been leading a dog's life. Stay off the furniture.", "You've got to think about tomorrow.", "You will be surprised by a loud noise.", "You will feel hungry again in another hour.", "You might have mail.", "You cannot kill time without injuring eternity.", "Computers are not intelligent. They only think they are.") def __init__(self, parent=None): super(Server, self).__init__(parent) self.tcpServer = None self.networkSession = None self.statusLabel = QLabel() quitButton = QPushButton("Quit") quitButton.setAutoDefault(False) manager = QNetworkConfigurationManager() if manager.capabilities() & QNetworkConfigurationManager.NetworkSessionRequired: settings = QSettings(QSettings.UserScope, 'QtProject') settings.beginGroup('QtNetwork') id = settings.value('DefaultNetworkConfiguration', '') settings.endGroup() config = manager.configurationFromIdentifier(id) if config.state() & QNetworkConfiguration.Discovered == 0: config = manager.defaultConfiguration() self.networkSession = QNetworkSession(config, self) self.networkSession.opened.connect(self.sessionOpened) self.statusLabel.setText("Opening network session.") self.networkSession.open() else: self.sessionOpened() quitButton.clicked.connect(self.close) self.tcpServer.newConnection.connect(self.sendFortune) buttonLayout = QHBoxLayout() buttonLayout.addStretch(1) buttonLayout.addWidget(quitButton) buttonLayout.addStretch(1) mainLayout = QVBoxLayout() mainLayout.addWidget(self.statusLabel) mainLayout.addLayout(buttonLayout) self.setLayout(mainLayout) self.setWindowTitle("Fortune Server") def sessionOpened(self): if self.networkSession is not None: config = self.networkSession.configuration() if config.type() == QNetworkConfiguration.UserChoice: id = self.networkSession.sessionProperty('UserChoiceConfiguration') else: id = config.identifier() settings = QSettings(QSettings.UserScope, 'QtProject') settings.beginGroup('QtNetwork') settings.setValue('DefaultNetworkConfiguration', id) settings.endGroup(); self.tcpServer = QTcpServer(self) if not self.tcpServer.listen(): QMessageBox.critical(self, "Fortune Server", "Unable to start the server: %s." % self.tcpServer.errorString()) self.close() return for ipAddress in QNetworkInterface.allAddresses(): if ipAddress != QHostAddress.LocalHost and ipAddress.toIPv4Address() != 0: break else: ipAddress = QHostAddress(QHostAddress.LocalHost) ipAddress = ipAddress.toString() self.statusLabel.setText("The server is running on\n\nIP: %s\nport %d\n\n" "Run the Fortune Client example now." % (ipAddress, self.tcpServer.serverPort())) def sendFortune(self): fortune = self.FORTUNES[random.randint(0, len(self.FORTUNES) - 1)] block = QByteArray() out = QDataStream(block, QIODevice.WriteOnly) out.setVersion(QDataStream.Qt_4_0) out.writeUInt16(0) out.writeQString(fortune) out.device().seek(0) out.writeUInt16(block.size() - 2) clientConnection = self.tcpServer.nextPendingConnection() clientConnection.disconnected.connect(clientConnection.deleteLater) clientConnection.write(block) clientConnection.disconnectFromHost() if __name__ == '__main__': import sys app = QApplication(sys.argv) server = Server() random.seed(None) sys.exit(server.exec_()) PyQt5_gpl-5.10.1/examples/network/http/0000755000076500000240000000000013245231431017765 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/network/http/authenticationdialog.ui0000644000076500000240000000604113245231431024524 0ustar philstaff00000000000000 Dialog 0 0 389 243 Http authentication required You need to supply a Username and a Password to access this site false Username: Password: Qt::Horizontal QDialogButtonBox::Cancel|QDialogButtonBox::Ok Site: 75 true %1 at %2 true Qt::Vertical 20 40 buttonBox accepted() Dialog accept() 248 254 157 274 buttonBox rejected() Dialog reject() 316 260 286 274 PyQt5_gpl-5.10.1/examples/network/http/http.py0000755000076500000240000002163413245231431021327 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2010 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDir, QFile, QFileInfo, QIODevice, QUrl from PyQt5.QtWidgets import (QApplication, QDialog, QDialogButtonBox, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QProgressDialog, QPushButton, QVBoxLayout) from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest class HttpWindow(QDialog): def __init__(self, parent=None): super(HttpWindow, self).__init__(parent) self.url = QUrl() self.qnam = QNetworkAccessManager() self.reply = None self.outFile = None self.httpGetId = 0 self.httpRequestAborted = False self.urlLineEdit = QLineEdit('https://www.qt.io') urlLabel = QLabel("&URL:") urlLabel.setBuddy(self.urlLineEdit) self.statusLabel = QLabel( "Please enter the URL of a file you want to download.") self.statusLabel.setWordWrap(True) self.downloadButton = QPushButton("Download") self.downloadButton.setDefault(True) self.quitButton = QPushButton("Quit") self.quitButton.setAutoDefault(False) buttonBox = QDialogButtonBox() buttonBox.addButton(self.downloadButton, QDialogButtonBox.ActionRole) buttonBox.addButton(self.quitButton, QDialogButtonBox.RejectRole) self.progressDialog = QProgressDialog(self) self.urlLineEdit.textChanged.connect(self.enableDownloadButton) self.qnam.authenticationRequired.connect( self.slotAuthenticationRequired) self.qnam.sslErrors.connect(self.sslErrors) self.progressDialog.canceled.connect(self.cancelDownload) self.downloadButton.clicked.connect(self.downloadFile) self.quitButton.clicked.connect(self.close) topLayout = QHBoxLayout() topLayout.addWidget(urlLabel) topLayout.addWidget(self.urlLineEdit) mainLayout = QVBoxLayout() mainLayout.addLayout(topLayout) mainLayout.addWidget(self.statusLabel) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("HTTP") self.urlLineEdit.setFocus() def startRequest(self, url): self.reply = self.qnam.get(QNetworkRequest(url)) self.reply.finished.connect(self.httpFinished) self.reply.readyRead.connect(self.httpReadyRead) self.reply.downloadProgress.connect(self.updateDataReadProgress) def downloadFile(self): self.url = QUrl(self.urlLineEdit.text()) fileInfo = QFileInfo(self.url.path()) fileName = fileInfo.fileName() if not fileName: fileName = 'index.html' if QFile.exists(fileName): ret = QMessageBox.question(self, "HTTP", "There already exists a file called %s in the current " "directory. Overwrite?" % fileName, QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if ret == QMessageBox.No: return QFile.remove(fileName) self.outFile = QFile(fileName) if not self.outFile.open(QIODevice.WriteOnly): QMessageBox.information(self, "HTTP", "Unable to save the file %s: %s." % (fileName, self.outFile.errorString())) self.outFile = None return self.progressDialog.setWindowTitle("HTTP") self.progressDialog.setLabelText("Downloading %s." % fileName) self.downloadButton.setEnabled(False) self.httpRequestAborted = False self.startRequest(self.url) def cancelDownload(self): self.statusLabel.setText("Download canceled.") self.httpRequestAborted = True if self.reply is not None: self.reply.abort() self.downloadButton.setEnabled(True) def httpFinished(self): if self.httpRequestAborted: if self.outFile is not None: self.outFile.close() self.outFile.remove() self.outFile = None self.reply.deleteLater() self.reply = None self.progressDialog.hide() return self.progressDialog.hide() self.outFile.flush() self.outFile.close() redirectionTarget = self.reply.attribute(QNetworkRequest.RedirectionTargetAttribute) if self.reply.error(): self.outFile.remove() QMessageBox.information(self, "HTTP", "Download failed: %s." % self.reply.errorString()) self.downloadButton.setEnabled(True) elif redirectionTarget is not None: newUrl = self.url.resolved(redirectionTarget) ret = QMessageBox.question(self, "HTTP", "Redirect to %s?" % newUrl.toString(), QMessageBox.Yes | QMessageBox.No) if ret == QMessageBox.Yes: self.url = newUrl self.reply.deleteLater() self.reply = None self.outFile.open(QIODevice.WriteOnly) self.outFile.resize(0) self.startRequest(self.url) return else: fileName = QFileInfo(QUrl(self.urlLineEdit.text()).path()).fileName() self.statusLabel.setText("Downloaded %s to %s." % (fileName, QDir.currentPath())) self.downloadButton.setEnabled(True) self.reply.deleteLater() self.reply = None self.outFile = None def httpReadyRead(self): if self.outFile is not None: self.outFile.write(self.reply.readAll()) def updateDataReadProgress(self, bytesRead, totalBytes): if self.httpRequestAborted: return self.progressDialog.setMaximum(totalBytes) self.progressDialog.setValue(bytesRead) def enableDownloadButton(self): self.downloadButton.setEnabled(self.urlLineEdit.text() != '') def slotAuthenticationRequired(self, authenticator): import os from PyQt5 import uic ui = os.path.join(os.path.dirname(__file__), 'authenticationdialog.ui') dlg = uic.loadUi(ui) dlg.adjustSize() dlg.siteDescription.setText("%s at %s" % (authenticator.realm(), self.url.host())) dlg.userEdit.setText(self.url.userName()) dlg.passwordEdit.setText(self.url.password()) if dlg.exec_() == QDialog.Accepted: authenticator.setUser(dlg.userEdit.text()) authenticator.setPassword(dlg.passwordEdit.text()) def sslErrors(self, reply, errors): errorString = ", ".join([str(error.errorString()) for error in errors]) ret = QMessageBox.warning(self, "HTTP Example", "One or more SSL errors has occurred: %s" % errorString, QMessageBox.Ignore | QMessageBox.Abort) if ret == QMessageBox.Ignore: self.reply.ignoreSslErrors() if __name__ == '__main__': import sys app = QApplication(sys.argv) httpWin = HttpWindow() httpWin.show() sys.exit(httpWin.exec_()) PyQt5_gpl-5.10.1/examples/network/lightmaps.py0000644000076500000240000004041113245231431021350 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# import math from PyQt5.QtCore import (pyqtSignal, QBasicTimer, QObject, QPoint, QPointF, QRect, QSize, QStandardPaths, Qt, QUrl) from PyQt5.QtGui import (QColor, QDesktopServices, QImage, QPainter, QPainterPath, QPixmap, QRadialGradient) from PyQt5.QtWidgets import QAction, QApplication, QMainWindow, QWidget from PyQt5.QtNetwork import (QNetworkAccessManager, QNetworkDiskCache, QNetworkRequest) # how long (milliseconds) the user need to hold (after a tap on the screen) # before triggering the magnifying glass feature # 701, a prime number, is the sum of 229, 233, 239 # (all three are also prime numbers, consecutive!) HOLD_TIME = 701 # maximum size of the magnifier # Hint: see above to find why I picked self one :) MAX_MAGNIFIER = 229 # tile size in pixels TDIM = 256 class Point(QPoint): """QPoint, that is fully qualified as a dict key""" def __init__(self, *par): if par: super(Point, self).__init__(*par) else: super(Point, self).__init__() def __hash__(self): return self.x() * 17 ^ self.y() def __repr__(self): return "Point(%s, %s)" % (self.x(), self.y()) def tileForCoordinate(lat, lng, zoom): zn = float(1 << zoom) tx = float(lng + 180.0) / 360.0 ty = (1.0 - math.log(math.tan(lat * math.pi / 180.0) + 1.0 / math.cos(lat * math.pi / 180.0)) / math.pi) / 2.0 return QPointF(tx * zn, ty * zn) def longitudeFromTile(tx, zoom): zn = float(1 << zoom) lat = tx / zn * 360.0 - 180.0 return lat def latitudeFromTile(ty, zoom): zn = float(1 << zoom) n = math.pi - 2 * math.pi * ty / zn lng = 180.0 / math.pi * math.atan(0.5 * (math.exp(n) - math.exp(-n))) return lng class SlippyMap(QObject): updated = pyqtSignal(QRect) def __init__(self, parent=None): super(SlippyMap, self).__init__(parent) self._offset = QPoint() self._tilesRect = QRect() self._tilePixmaps = {} # Point(x, y) to QPixmap mapping self._manager = QNetworkAccessManager() self._url = QUrl() # public vars self.width = 400 self.height = 300 self.zoom = 15 self.latitude = 59.9138204 self.longitude = 10.7387413 self._emptyTile = QPixmap(TDIM, TDIM) self._emptyTile.fill(Qt.lightGray) cache = QNetworkDiskCache() cache.setCacheDirectory( QStandardPaths.writableLocation(QStandardPaths.CacheLocation)) self._manager.setCache(cache) self._manager.finished.connect(self.handleNetworkData) def invalidate(self): if self.width <= 0 or self.height <= 0: return ct = tileForCoordinate(self.latitude, self.longitude, self.zoom) tx = ct.x() ty = ct.y() # top-left corner of the center tile xp = int(self.width / 2 - (tx - math.floor(tx)) * TDIM) yp = int(self.height / 2 - (ty - math.floor(ty)) * TDIM) # first tile vertical and horizontal xa = (xp + TDIM - 1) / TDIM ya = (yp + TDIM - 1) / TDIM xs = int(tx) - xa ys = int(ty) - ya # offset for top-left tile self._offset = QPoint(xp - xa * TDIM, yp - ya * TDIM) # last tile vertical and horizontal xe = int(tx) + (self.width - xp - 1) / TDIM ye = int(ty) + (self.height - yp - 1) / TDIM # build a rect self._tilesRect = QRect(xs, ys, xe - xs + 1, ye - ys + 1) if self._url.isEmpty(): self.download() self.updated.emit(QRect(0, 0, self.width, self.height)) def render(self, p, rect): for x in range(self._tilesRect.width()): for y in range(self._tilesRect.height()): tp = Point(x + self._tilesRect.left(), y + self._tilesRect.top()) box = self.tileRect(tp) if rect.intersects(box): p.drawPixmap(box, self._tilePixmaps.get(tp, self._emptyTile)) def pan(self, delta): dx = QPointF(delta) / float(TDIM) center = tileForCoordinate(self.latitude, self.longitude, self.zoom) - dx self.latitude = latitudeFromTile(center.y(), self.zoom) self.longitude = longitudeFromTile(center.x(), self.zoom) self.invalidate() # slots def handleNetworkData(self, reply): img = QImage() tp = Point(reply.request().attribute(QNetworkRequest.User)) url = reply.url() if not reply.error(): if img.load(reply, None): self._tilePixmaps[tp] = QPixmap.fromImage(img) reply.deleteLater() self.updated.emit(self.tileRect(tp)) # purge unused tiles bound = self._tilesRect.adjusted(-2, -2, 2, 2) for tp in list(self._tilePixmaps.keys()): if not bound.contains(tp): del self._tilePixmaps[tp] self.download() def download(self): grab = None for x in range(self._tilesRect.width()): for y in range(self._tilesRect.height()): tp = Point(self._tilesRect.topLeft() + QPoint(x, y)) if tp not in self._tilePixmaps: grab = QPoint(tp) break if grab is None: self._url = QUrl() return path = 'http://tile.openstreetmap.org/%d/%d/%d.png' % (self.zoom, grab.x(), grab.y()) self._url = QUrl(path) request = QNetworkRequest() request.setUrl(self._url) request.setRawHeader(b'User-Agent', b'Nokia (PyQt) Graphics Dojo 1.0') request.setAttribute(QNetworkRequest.User, grab) self._manager.get(request) def tileRect(self, tp): t = tp - self._tilesRect.topLeft() x = t.x() * TDIM + self._offset.x() y = t.y() * TDIM + self._offset.y() return QRect(x, y, TDIM, TDIM) class LightMaps(QWidget): def __init__(self, parent = None): super(LightMaps, self).__init__(parent) self.pressed = False self.snapped = False self.zoomed = False self.invert = False self._normalMap = SlippyMap(self) self._largeMap = SlippyMap(self) self.pressPos = QPoint() self.dragPos = QPoint() self.tapTimer = QBasicTimer() self.zoomPixmap = QPixmap() self.maskPixmap = QPixmap() self._normalMap.updated.connect(self.updateMap) self._largeMap.updated.connect(self.update) def setCenter(self, lat, lng): self._normalMap.latitude = lat self._normalMap.longitude = lng self._normalMap.invalidate() self._largeMap.invalidate() # slots def toggleNightMode(self): self.invert = not self.invert self.update() def updateMap(self, r): self.update(r) def activateZoom(self): self.zoomed = True self.tapTimer.stop() self._largeMap.zoom = self._normalMap.zoom + 1 self._largeMap.width = self._normalMap.width * 2 self._largeMap.height = self._normalMap.height * 2 self._largeMap.latitude = self._normalMap.latitude self._largeMap.longitude = self._normalMap.longitude self._largeMap.invalidate() self.update() def resizeEvent(self, event): self._normalMap.width = self.width() self._normalMap.height = self.height() self._normalMap.invalidate() self._largeMap.width = self._normalMap.width * 2 self._largeMap.height = self._normalMap.height * 2 self._largeMap.invalidate() def paintEvent(self, event): p = QPainter() p.begin(self) self._normalMap.render(p, event.rect()) p.setPen(Qt.black) p.drawText(self.rect(), Qt.AlignBottom | Qt.TextWordWrap, "Map data CCBYSA 2009 OpenStreetMap.org contributors") p.end() if self.zoomed: dim = min(self.width(), self.height()) magnifierSize = min(MAX_MAGNIFIER, dim * 2 / 3) radius = magnifierSize / 2 ring = radius - 15 box = QSize(magnifierSize, magnifierSize) # reupdate our mask if self.maskPixmap.size() != box: self.maskPixmap = QPixmap(box) self.maskPixmap.fill(Qt.transparent) g = QRadialGradient() g.setCenter(radius, radius) g.setFocalPoint(radius, radius) g.setRadius(radius) g.setColorAt(1.0, QColor(255, 255, 255, 0)) g.setColorAt(0.5, QColor(128, 128, 128, 255)) mask = QPainter(self.maskPixmap) mask.setRenderHint(QPainter.Antialiasing) mask.setCompositionMode(QPainter.CompositionMode_Source) mask.setBrush(g) mask.setPen(Qt.NoPen) mask.drawRect(self.maskPixmap.rect()) mask.setBrush(QColor(Qt.transparent)) mask.drawEllipse(g.center(), ring, ring) mask.end() center = self.dragPos - QPoint(0, radius) center += QPoint(0, radius / 2) corner = center - QPoint(radius, radius) xy = center * 2 - QPoint(radius, radius) # only set the dimension to the magnified portion if self.zoomPixmap.size() != box: self.zoomPixmap = QPixmap(box) self.zoomPixmap.fill(Qt.lightGray) if True: p = QPainter(self.zoomPixmap) p.translate(-xy) self._largeMap.render(p, QRect(xy, box)) p.end() clipPath = QPainterPath() clipPath.addEllipse(QPointF(center), ring, ring) p = QPainter(self) p.setRenderHint(QPainter.Antialiasing) p.setClipPath(clipPath) p.drawPixmap(corner, self.zoomPixmap) p.setClipping(False) p.drawPixmap(corner, self.maskPixmap) p.setPen(Qt.gray) p.drawPath(clipPath) if self.invert: p = QPainter(self) p.setCompositionMode(QPainter.CompositionMode_Difference) p.fillRect(event.rect(), Qt.white) p.end() def timerEvent(self, event): if not self.zoomed: self.activateZoom() self.update() def mousePressEvent(self, event): if event.buttons() != Qt.LeftButton: return self.pressed = self.snapped = True self.pressPos = self.dragPos = event.pos() self.tapTimer.stop() self.tapTimer.start(HOLD_TIME, self) def mouseMoveEvent(self, event): if not event.buttons(): return if not self.zoomed: if not self.pressed or not self.snapped: delta = event.pos() - self.pressPos self.pressPos = event.pos() self._normalMap.pan(delta) return else: threshold = 10 delta = event.pos() - self.pressPos if self.snapped: self.snapped &= delta.x() < threshold self.snapped &= delta.y() < threshold self.snapped &= delta.x() > -threshold self.snapped &= delta.y() > -threshold if not self.snapped: self.tapTimer.stop() else: self.dragPos = event.pos() self.update() def mouseReleaseEvent(self, event): self.zoomed = False self.update() def keyPressEvent(self, event): if not self.zoomed: if event.key() == Qt.Key_Left: self._normalMap.pan(QPoint(20, 0)) if event.key() == Qt.Key_Right: self._normalMap.pan(QPoint(-20, 0)) if event.key() == Qt.Key_Up: self._normalMap.pan(QPoint(0, 20)) if event.key() == Qt.Key_Down: self._normalMap.pan(QPoint(0, -20)) if event.key() == Qt.Key_Z or event.key() == Qt.Key_Select: self.dragPos = QPoint(self.width() / 2, self.height() / 2) self.activateZoom() else: if event.key() == Qt.Key_Z or event.key() == Qt.Key_Select: self.zoomed = False self.update() delta = QPoint(0, 0) if event.key() == Qt.Key_Left: delta = QPoint(-15, 0) if event.key() == Qt.Key_Right: delta = QPoint(15, 0) if event.key() == Qt.Key_Up: delta = QPoint(0, -15) if event.key() == Qt.Key_Down: delta = QPoint(0, 15) if delta != QPoint(0, 0): self.dragPos += delta self.update() class MapZoom(QMainWindow): def __init__(self): super(MapZoom, self).__init__(None) self.map_ = LightMaps(self) self.setCentralWidget(self.map_) self.map_.setFocus() self.osloAction = QAction("&Oslo", self) self.berlinAction = QAction("&Berlin", self) self.jakartaAction = QAction("&Jakarta", self) self.nightModeAction = QAction("Night Mode", self) self.nightModeAction.setCheckable(True) self.nightModeAction.setChecked(False) self.osmAction = QAction("About OpenStreetMap", self) self.osloAction.triggered.connect(self.chooseOslo) self.berlinAction.triggered.connect(self.chooseBerlin) self.jakartaAction.triggered.connect(self.chooseJakarta) self.nightModeAction.triggered.connect(self.map_.toggleNightMode) self.osmAction.triggered.connect(self.aboutOsm) menu = self.menuBar().addMenu("&Options") menu.addAction(self.osloAction) menu.addAction(self.berlinAction) menu.addAction(self.jakartaAction) menu.addSeparator() menu.addAction(self.nightModeAction) menu.addAction(self.osmAction) # slots def chooseOslo(self): self.map_.setCenter(59.9138204, 10.7387413) def chooseBerlin(self): self.map_.setCenter(52.52958999943302, 13.383053541183472) def chooseJakarta(self): self.map_.setCenter(-6.211544, 106.845172) def aboutOsm(self): QDesktopServices.openUrl(QUrl('http://www.openstreetmap.org')) if __name__ == '__main__': import sys app = QApplication(sys.argv) app.setApplicationName('LightMaps') w = MapZoom() w.setWindowTitle("OpenStreetMap") w.resize(600, 450) w.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/network/loopback.py0000755000076500000240000001551713245231431021166 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QByteArray, Qt from PyQt5.QtWidgets import (QApplication, QDialog, QDialogButtonBox, QLabel, QMessageBox, QProgressBar, QPushButton, QVBoxLayout) from PyQt5.QtNetwork import QHostAddress, QTcpServer, QTcpSocket class Dialog(QDialog): TotalBytes = 50 * 1024 * 1024 PayloadSize = 65536 def __init__(self, parent=None): super(Dialog, self).__init__(parent) self.tcpServer = QTcpServer() self.tcpClient = QTcpSocket() self.bytesToWrite = 0 self.bytesWritten = 0 self.bytesReceived = 0 self.clientProgressBar = QProgressBar() self.clientStatusLabel = QLabel("Client ready") self.serverProgressBar = QProgressBar() self.serverStatusLabel = QLabel("Server ready") self.startButton = QPushButton("&Start") self.quitButton = QPushButton("&Quit") buttonBox = QDialogButtonBox() buttonBox.addButton(self.startButton, QDialogButtonBox.ActionRole) buttonBox.addButton(self.quitButton, QDialogButtonBox.RejectRole) self.startButton.clicked.connect(self.start) self.quitButton.clicked.connect(self.close) self.tcpServer.newConnection.connect(self.acceptConnection) self.tcpClient.connected.connect(self.startTransfer) self.tcpClient.bytesWritten.connect(self.updateClientProgress) self.tcpClient.error.connect(self.displayError) mainLayout = QVBoxLayout() mainLayout.addWidget(self.clientProgressBar) mainLayout.addWidget(self.clientStatusLabel) mainLayout.addWidget(self.serverProgressBar) mainLayout.addWidget(self.serverStatusLabel) mainLayout.addStretch(1) mainLayout.addSpacing(10) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Loopback") def start(self): self.startButton.setEnabled(False) QApplication.setOverrideCursor(Qt.WaitCursor) self.bytesWritten = 0 self.bytesReceived = 0 while not self.tcpServer.isListening() and not self.tcpServer.listen(): ret = QMessageBox.critical(self, "Loopback", "Unable to start the test: %s." % self.tcpServer.errorString(), QMessageBox.Retry | QMessageBox.Cancel) if ret == QMessageBox.Cancel: return self.serverStatusLabel.setText("Listening") self.clientStatusLabel.setText("Connecting") self.tcpClient.connectToHost(QHostAddress(QHostAddress.LocalHost), self.tcpServer.serverPort()) def acceptConnection(self): self.tcpServerConnection = self.tcpServer.nextPendingConnection() self.tcpServerConnection.readyRead.connect(self.updateServerProgress) self.tcpServerConnection.error.connect(self.displayError) self.serverStatusLabel.setText("Accepted connection") self.tcpServer.close() def startTransfer(self): self.bytesToWrite = Dialog.TotalBytes - self.tcpClient.write(QByteArray(Dialog.PayloadSize, '@')) self.clientStatusLabel.setText("Connected") def updateServerProgress(self): self.bytesReceived += self.tcpServerConnection.bytesAvailable() self.tcpServerConnection.readAll() self.serverProgressBar.setMaximum(Dialog.TotalBytes) self.serverProgressBar.setValue(self.bytesReceived) self.serverStatusLabel.setText("Received %dMB" % (self.bytesReceived / (1024 * 1024))) if self.bytesReceived == Dialog.TotalBytes: self.tcpServerConnection.close() self.startButton.setEnabled(True) QApplication.restoreOverrideCursor() def updateClientProgress(self, numBytes): self.bytesWritten += numBytes if self.bytesToWrite > 0: self.bytesToWrite -= self.tcpClient.write(QByteArray( min(self.bytesToWrite, Dialog.PayloadSize), '@')) self.clientProgressBar.setMaximum(Dialog.TotalBytes) self.clientProgressBar.setValue(self.bytesWritten) self.clientStatusLabel.setText("Sent %dMB" % (self.bytesWritten / (1024 * 1024))) def displayError(self, socketError): if socketError == QTcpSocket.RemoteHostClosedError: return QMessageBox.information(self, "Network error", "The following error occured: %s." % self.tcpClient.errorString()) self.tcpClient.close() self.tcpServer.close() self.clientProgressBar.reset() self.serverProgressBar.reset() self.clientStatusLabel.setText("Client ready") self.serverStatusLabel.setText("Server ready") self.startButton.setEnabled(True) QApplication.restoreOverrideCursor() if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = Dialog() dialog.show() sys.exit(dialog.exec_()) PyQt5_gpl-5.10.1/examples/network/README0000644000076500000240000000144713245231431017674 0ustar philstaff00000000000000PyQt is provided with an extensive set of network classes to support both client-based and server side network programming. These examples demonstrate the fundamental aspects of network programming with PyQt. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/network/threadedfortuneserver.py0000755000076500000240000001254213245231431024001 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import random from PyQt5.QtCore import (pyqtSignal, QByteArray, QDataStream, QIODevice, QThread) from PyQt5.QtWidgets import (QApplication, QDialog, QHBoxLayout, QLabel, QMessageBox, QPushButton, QVBoxLayout) from PyQt5.QtNetwork import (QHostAddress, QNetworkInterface, QTcpServer, QTcpSocket) class FortuneThread(QThread): error = pyqtSignal(QTcpSocket.SocketError) def __init__(self, socketDescriptor, fortune, parent): super(FortuneThread, self).__init__(parent) self.socketDescriptor = socketDescriptor self.text = fortune def run(self): tcpSocket = QTcpSocket() if not tcpSocket.setSocketDescriptor(self.socketDescriptor): self.error.emit(tcpSocket.error()) return block = QByteArray() outstr = QDataStream(block, QIODevice.WriteOnly) outstr.setVersion(QDataStream.Qt_4_0) outstr.writeUInt16(0) outstr.writeQString(self.text) outstr.device().seek(0) outstr.writeUInt16(block.size() - 2) tcpSocket.write(block) tcpSocket.disconnectFromHost() tcpSocket.waitForDisconnected() class FortuneServer(QTcpServer): FORTUNES = ( "You've been leading a dog's life. Stay off the furniture.", "You've got to think about tomorrow.", "You will be surprised by a loud noise.", "You will feel hungry again in another hour.", "You might have mail.", "You cannot kill time without injuring eternity.", "Computers are not intelligent. They only think they are.") def incomingConnection(self, socketDescriptor): fortune = self.FORTUNES[random.randint(0, len(self.FORTUNES) - 1)] thread = FortuneThread(socketDescriptor, fortune, self) thread.finished.connect(thread.deleteLater) thread.start() class Dialog(QDialog): def __init__(self, parent=None): super(Dialog, self).__init__(parent) self.server = FortuneServer() statusLabel = QLabel() statusLabel.setWordWrap(True) quitButton = QPushButton("Quit") quitButton.setAutoDefault(False) if not self.server.listen(): QMessageBox.critical(self, "Threaded Fortune Server", "Unable to start the server: %s." % self.server.errorString()) self.close() return for ipAddress in QNetworkInterface.allAddresses(): if ipAddress != QHostAddress.LocalHost and ipAddress.toIPv4Address() != 0: break else: ipAddress = QHostAddress(QHostAddress.LocalHost) ipAddress = ipAddress.toString() statusLabel.setText("The server is running on\n\nIP: %s\nport: %d\n\n" "Run the Fortune Client example now." % (ipAddress, self.server.serverPort())) quitButton.clicked.connect(self.close) buttonLayout = QHBoxLayout() buttonLayout.addStretch(1) buttonLayout.addWidget(quitButton) buttonLayout.addStretch(1) mainLayout = QVBoxLayout() mainLayout.addWidget(statusLabel) mainLayout.addLayout(buttonLayout) self.setLayout(mainLayout) self.setWindowTitle("Threaded Fortune Server") if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = Dialog() dialog.show() sys.exit(dialog.exec_()) PyQt5_gpl-5.10.1/examples/opengl/0000755000076500000240000000000013245231431016601 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/opengl/2dpainting.py0000755000076500000240000001323213245231431021216 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys import math from PyQt5.QtCore import QPointF, QRect, QRectF, Qt, QTimer from PyQt5.QtGui import (QBrush, QColor, QFont, QLinearGradient, QPainter, QPen, QSurfaceFormat) from PyQt5.QtWidgets import (QApplication, QGridLayout, QLabel, QOpenGLWidget, QWidget) class Helper(object): def __init__(self): gradient = QLinearGradient(QPointF(50, -20), QPointF(80, 20)) gradient.setColorAt(0.0, Qt.white) gradient.setColorAt(1.0, QColor(0xa6, 0xce, 0x39)) self.background = QBrush(QColor(64, 32, 64)) self.circleBrush = QBrush(gradient) self.circlePen = QPen(Qt.black) self.circlePen.setWidth(1) self.textPen = QPen(Qt.white) self.textFont = QFont() self.textFont.setPixelSize(50) def paint(self, painter, event, elapsed): painter.fillRect(event.rect(), self.background) painter.translate(100, 100) painter.save() painter.setBrush(self.circleBrush) painter.setPen(self.circlePen) painter.rotate(elapsed * 0.030) r = elapsed / 1000.0 n = 30 for i in range(n): painter.rotate(30) radius = 0 + 120.0*((i+r)/n) circleRadius = 1 + ((i+r)/n)*20 painter.drawEllipse(QRectF(radius, -circleRadius, circleRadius*2, circleRadius*2)) painter.restore() painter.setPen(self.textPen) painter.setFont(self.textFont) painter.drawText(QRect(-50, -50, 100, 100), Qt.AlignCenter, "Qt") class Widget(QWidget): def __init__(self, helper, parent): super(Widget, self).__init__(parent) self.helper = helper self.elapsed = 0 self.setFixedSize(200, 200) def animate(self): self.elapsed = (self.elapsed + self.sender().interval()) % 1000 self.repaint() def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing) self.helper.paint(painter, event, self.elapsed) painter.end() class GLWidget(QOpenGLWidget): def __init__(self, helper, parent): super(GLWidget, self).__init__(parent) self.helper = helper self.elapsed = 0 self.setFixedSize(200, 200) self.setAutoFillBackground(False) def animate(self): self.elapsed = (self.elapsed + self.sender().interval()) % 1000 self.update() def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.Antialiasing) self.helper.paint(painter, event, self.elapsed) painter.end() class Window(QWidget): def __init__(self): super(Window, self).__init__() self.setWindowTitle("2D Painting on Native and OpenGL Widgets") helper = Helper() native = Widget(helper, self) openGL = GLWidget(helper, self) nativeLabel = QLabel("Native") nativeLabel.setAlignment(Qt.AlignHCenter) openGLLabel = QLabel("OpenGL") openGLLabel.setAlignment(Qt.AlignHCenter) layout = QGridLayout() layout.addWidget(native, 0, 0) layout.addWidget(openGL, 0, 1) layout.addWidget(nativeLabel, 1, 0) layout.addWidget(openGLLabel, 1, 1) self.setLayout(layout) timer = QTimer(self) timer.timeout.connect(native.animate) timer.timeout.connect(openGL.animate) timer.start(50) if __name__ == '__main__': app = QApplication(sys.argv) fmt = QSurfaceFormat() fmt.setSamples(4) QSurfaceFormat.setDefaultFormat(fmt) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/opengl/grabber.py0000755000076500000240000003336313245231431020572 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys import math from PyQt5.QtCore import pyqtSignal, QSize, Qt, QTimer from PyQt5.QtGui import QPixmap from PyQt5.QtWidgets import (QAction, QApplication, QGridLayout, QLabel, QLineEdit, QMainWindow, QMessageBox, QOpenGLWidget, QScrollArea, QSizePolicy, QSlider, QWidget) class GLWidget(QOpenGLWidget): xRotationChanged = pyqtSignal(int) yRotationChanged = pyqtSignal(int) zRotationChanged = pyqtSignal(int) def __init__(self, parent=None): super(GLWidget, self).__init__(parent) self.gear1 = 0 self.gear2 = 0 self.gear3 = 0 self.xRot = 0 self.yRot = 0 self.zRot = 0 self.gear1Rot = 0 timer = QTimer(self) timer.timeout.connect(self.advanceGears) timer.start(20) def setXRotation(self, angle): self.normalizeAngle(angle) if angle != self.xRot: self.xRot = angle self.xRotationChanged.emit(angle) self.update() def setYRotation(self, angle): self.normalizeAngle(angle) if angle != self.yRot: self.yRot = angle self.yRotationChanged.emit(angle) self.update() def setZRotation(self, angle): self.normalizeAngle(angle) if angle != self.zRot: self.zRot = angle self.zRotationChanged.emit(angle) self.update() def initializeGL(self): self.gl = self.context().versionFunctions() self.gl.initializeOpenGLFunctions() lightPos = (5.0, 5.0, 10.0, 1.0) reflectance1 = (0.8, 0.1, 0.0, 1.0) reflectance2 = (0.0, 0.8, 0.2, 1.0) reflectance3 = (0.2, 0.2, 1.0, 1.0) self.gl.glLightfv(self.gl.GL_LIGHT0, self.gl.GL_POSITION, lightPos) self.gl.glEnable(self.gl.GL_LIGHTING) self.gl.glEnable(self.gl.GL_LIGHT0) self.gl.glEnable(self.gl.GL_DEPTH_TEST) self.gear1 = self.makeGear(reflectance1, 1.0, 4.0, 1.0, 0.7, 20) self.gear2 = self.makeGear(reflectance2, 0.5, 2.0, 2.0, 0.7, 10) self.gear3 = self.makeGear(reflectance3, 1.3, 2.0, 0.5, 0.7, 10) self.gl.glEnable(self.gl.GL_NORMALIZE) self.gl.glClearColor(0.0, 0.0, 0.0, 1.0) def paintGL(self): self.gl.glClear(self.gl.GL_COLOR_BUFFER_BIT | self.gl.GL_DEPTH_BUFFER_BIT) self.gl.glPushMatrix() self.gl.glRotated(self.xRot / 16.0, 1.0, 0.0, 0.0) self.gl.glRotated(self.yRot / 16.0, 0.0, 1.0, 0.0) self.gl.glRotated(self.zRot / 16.0, 0.0, 0.0, 1.0) self.drawGear(self.gear1, -3.0, -2.0, 0.0, self.gear1Rot / 16.0) self.drawGear(self.gear2, +3.1, -2.0, 0.0, -2.0 * (self.gear1Rot / 16.0) - 9.0) self.gl.glRotated(+90.0, 1.0, 0.0, 0.0) self.drawGear(self.gear3, -3.1, -1.8, -2.2, +2.0 * (self.gear1Rot / 16.0) - 2.0) self.gl.glPopMatrix() def resizeGL(self, width, height): side = min(width, height) if side < 0: return self.gl.glViewport((width - side) // 2, (height - side) // 2, side, side) self.gl.glMatrixMode(self.gl.GL_PROJECTION) self.gl.glLoadIdentity() self.gl.glFrustum(-1.0, +1.0, -1.0, 1.0, 5.0, 60.0) self.gl.glMatrixMode(self.gl.GL_MODELVIEW) self.gl.glLoadIdentity() self.gl.glTranslated(0.0, 0.0, -40.0) def mousePressEvent(self, event): self.lastPos = event.pos() def mouseMoveEvent(self, event): dx = event.x() - self.lastPos.x() dy = event.y() - self.lastPos.y() if event.buttons() & Qt.LeftButton: self.setXRotation(self.xRot + 8 * dy) self.setYRotation(self.yRot + 8 * dx) elif event.buttons() & Qt.RightButton: self.setXRotation(self.xRot + 8 * dy) self.setZRotation(self.zRot + 8 * dx) self.lastPos = event.pos() def advanceGears(self): self.gear1Rot += 2 * 16 self.update() def xRotation(self): return self.xRot def yRotation(self): return self.yRot def zRotation(self): return self.zRot def makeGear(self, reflectance, innerRadius, outerRadius, thickness, toothSize, toothCount): list = self.gl.glGenLists(1) self.gl.glNewList(list, self.gl.GL_COMPILE) self.gl.glMaterialfv(self.gl.GL_FRONT, self.gl.GL_AMBIENT_AND_DIFFUSE, reflectance) r0 = innerRadius r1 = outerRadius - toothSize / 2.0 r2 = outerRadius + toothSize / 2.0 delta = (2.0 * math.pi / toothCount) / 4.0 z = thickness / 2.0 self.gl.glShadeModel(self.gl.GL_FLAT) for i in range(2): if i == 0: sign = +1.0 else: sign = -1.0 self.gl.glNormal3d(0.0, 0.0, sign) self.gl.glBegin(self.gl.GL_QUAD_STRIP) for j in range(toothCount+1): angle = 2.0 * math.pi * j / toothCount self.gl.glVertex3d(r0 * math.cos(angle), r0 * math.sin(angle), sign * z) self.gl.glVertex3d(r1 * math.cos(angle), r1 * math.sin(angle), sign * z) self.gl.glVertex3d(r0 * math.cos(angle), r0 * math.sin(angle), sign * z) self.gl.glVertex3d(r1 * math.cos(angle + 3 * delta), r1 * math.sin(angle + 3 * delta), sign * z) self.gl.glEnd() self.gl.glBegin(self.gl.GL_QUADS) for j in range(toothCount): angle = 2.0 * math.pi * j / toothCount self.gl.glVertex3d(r1 * math.cos(angle), r1 * math.sin(angle), sign * z) self.gl.glVertex3d(r2 * math.cos(angle + delta), r2 * math.sin(angle + delta), sign * z) self.gl.glVertex3d(r2 * math.cos(angle + 2 * delta), r2 * math.sin(angle + 2 * delta), sign * z) self.gl.glVertex3d(r1 * math.cos(angle + 3 * delta), r1 * math.sin(angle + 3 * delta), sign * z) self.gl.glEnd() self.gl.glBegin(self.gl.GL_QUAD_STRIP) for i in range(toothCount): for j in range(2): angle = 2.0 * math.pi * (i + (j / 2.0)) / toothCount s1 = r1 s2 = r2 if j == 1: s1, s2 = s2, s1 self.gl.glNormal3d(math.cos(angle), math.sin(angle), 0.0) self.gl.glVertex3d(s1 * math.cos(angle), s1 * math.sin(angle), +z) self.gl.glVertex3d(s1 * math.cos(angle), s1 * math.sin(angle), -z) self.gl.glNormal3d(s2 * math.sin(angle + delta) - s1 * math.sin(angle), s1 * math.cos(angle) - s2 * math.cos(angle + delta), 0.0) self.gl.glVertex3d(s2 * math.cos(angle + delta), s2 * math.sin(angle + delta), +z) self.gl.glVertex3d(s2 * math.cos(angle + delta), s2 * math.sin(angle + delta), -z) self.gl.glVertex3d(r1, 0.0, +z) self.gl.glVertex3d(r1, 0.0, -z) self.gl.glEnd() self.gl.glShadeModel(self.gl.GL_SMOOTH) self.gl.glBegin(self.gl.GL_QUAD_STRIP) for i in range(toothCount+1): angle = i * 2.0 * math.pi / toothCount self.gl.glNormal3d(-math.cos(angle), -math.sin(angle), 0.0) self.gl.glVertex3d(r0 * math.cos(angle), r0 * math.sin(angle), +z) self.gl.glVertex3d(r0 * math.cos(angle), r0 * math.sin(angle), -z) self.gl.glEnd() self.gl.glEndList() return list def drawGear(self, gear, dx, dy, dz, angle): self.gl.glPushMatrix() self.gl.glTranslated(dx, dy, dz) self.gl.glRotated(angle, 0.0, 0.0, 1.0) self.gl.glCallList(gear) self.gl.glPopMatrix() def normalizeAngle(self, angle): while (angle < 0): angle += 360 * 16 while (angle > 360 * 16): angle -= 360 * 16 class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() centralWidget = QWidget() self.setCentralWidget(centralWidget) self.glWidget = GLWidget() self.pixmapLabel = QLabel() self.glWidgetArea = QScrollArea() self.glWidgetArea.setWidget(self.glWidget) self.glWidgetArea.setWidgetResizable(True) self.glWidgetArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.glWidgetArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.glWidgetArea.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) self.glWidgetArea.setMinimumSize(50, 50) self.pixmapLabelArea = QScrollArea() self.pixmapLabelArea.setWidget(self.pixmapLabel) self.pixmapLabelArea.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) self.pixmapLabelArea.setMinimumSize(50, 50) xSlider = self.createSlider(self.glWidget.xRotationChanged, self.glWidget.setXRotation) ySlider = self.createSlider(self.glWidget.yRotationChanged, self.glWidget.setYRotation) zSlider = self.createSlider(self.glWidget.zRotationChanged, self.glWidget.setZRotation) self.createActions() self.createMenus() centralLayout = QGridLayout() centralLayout.addWidget(self.glWidgetArea, 0, 0) centralLayout.addWidget(self.pixmapLabelArea, 0, 1) centralLayout.addWidget(xSlider, 1, 0, 1, 2) centralLayout.addWidget(ySlider, 2, 0, 1, 2) centralLayout.addWidget(zSlider, 3, 0, 1, 2) centralWidget.setLayout(centralLayout) xSlider.setValue(15 * 16) ySlider.setValue(345 * 16) zSlider.setValue(0 * 16) self.setWindowTitle("Grabber") self.resize(400, 300) def grabFrameBuffer(self): image = self.glWidget.grabFramebuffer() self.setPixmap(QPixmap.fromImage(image)) def clearPixmap(self): self.setPixmap(QPixmap()) def about(self): QMessageBox.about(self, "About Grabber", "The Grabber example demonstrates two approaches for " "rendering OpenGL into a Qt pixmap.") def createActions(self): self.grabFrameBufferAct = QAction("&Grab Frame Buffer", self, shortcut="Ctrl+G", triggered=self.grabFrameBuffer) self.clearPixmapAct = QAction("&Clear Pixmap", self, shortcut="Ctrl+L", triggered=self.clearPixmap) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=self.close) self.aboutAct = QAction("&About", self, triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, triggered=QApplication.instance().aboutQt) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.grabFrameBufferAct) self.fileMenu.addAction(self.clearPixmapAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def createSlider(self, changedSignal, setterSlot): slider = QSlider(Qt.Horizontal) slider.setRange(0, 360 * 16) slider.setSingleStep(16) slider.setPageStep(15 * 16) slider.setTickInterval(15 * 16) slider.setTickPosition(QSlider.TicksRight) slider.valueChanged.connect(setterSlot) changedSignal.connect(slider.setValue) return slider def setPixmap(self, pixmap): self.pixmapLabel.setPixmap(pixmap) size = pixmap.size() if size - QSize(1, 0) == self.pixmapLabelArea.maximumViewportSize(): size -= QSize(1, 0) self.pixmapLabel.resize(size) if __name__ == '__main__': app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/opengl/hellogl.py0000755000076500000240000002200513245231431020603 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys import math from PyQt5.QtCore import pyqtSignal, QPoint, QSize, Qt from PyQt5.QtGui import QColor from PyQt5.QtWidgets import (QApplication, QHBoxLayout, QOpenGLWidget, QSlider, QWidget) class Window(QWidget): def __init__(self): super(Window, self).__init__() self.glWidget = GLWidget() self.xSlider = self.createSlider() self.ySlider = self.createSlider() self.zSlider = self.createSlider() self.xSlider.valueChanged.connect(self.glWidget.setXRotation) self.glWidget.xRotationChanged.connect(self.xSlider.setValue) self.ySlider.valueChanged.connect(self.glWidget.setYRotation) self.glWidget.yRotationChanged.connect(self.ySlider.setValue) self.zSlider.valueChanged.connect(self.glWidget.setZRotation) self.glWidget.zRotationChanged.connect(self.zSlider.setValue) mainLayout = QHBoxLayout() mainLayout.addWidget(self.glWidget) mainLayout.addWidget(self.xSlider) mainLayout.addWidget(self.ySlider) mainLayout.addWidget(self.zSlider) self.setLayout(mainLayout) self.xSlider.setValue(15 * 16) self.ySlider.setValue(345 * 16) self.zSlider.setValue(0 * 16) self.setWindowTitle("Hello GL") def createSlider(self): slider = QSlider(Qt.Vertical) slider.setRange(0, 360 * 16) slider.setSingleStep(16) slider.setPageStep(15 * 16) slider.setTickInterval(15 * 16) slider.setTickPosition(QSlider.TicksRight) return slider class GLWidget(QOpenGLWidget): xRotationChanged = pyqtSignal(int) yRotationChanged = pyqtSignal(int) zRotationChanged = pyqtSignal(int) def __init__(self, parent=None): super(GLWidget, self).__init__(parent) self.object = 0 self.xRot = 0 self.yRot = 0 self.zRot = 0 self.lastPos = QPoint() self.trolltechGreen = QColor.fromCmykF(0.40, 0.0, 1.0, 0.0) self.trolltechPurple = QColor.fromCmykF(0.39, 0.39, 0.0, 0.0) def minimumSizeHint(self): return QSize(50, 50) def sizeHint(self): return QSize(400, 400) def setXRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.xRot: self.xRot = angle self.xRotationChanged.emit(angle) self.update() def setYRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.yRot: self.yRot = angle self.yRotationChanged.emit(angle) self.update() def setZRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.zRot: self.zRot = angle self.zRotationChanged.emit(angle) self.update() def initializeGL(self): self.gl = self.context().versionFunctions() self.gl.initializeOpenGLFunctions() self.setClearColor(self.trolltechPurple.darker()) self.object = self.makeObject() self.gl.glShadeModel(self.gl.GL_FLAT) self.gl.glEnable(self.gl.GL_DEPTH_TEST) self.gl.glEnable(self.gl.GL_CULL_FACE) def paintGL(self): self.gl.glClear( self.gl.GL_COLOR_BUFFER_BIT | self.gl.GL_DEPTH_BUFFER_BIT) self.gl.glLoadIdentity() self.gl.glTranslated(0.0, 0.0, -10.0) self.gl.glRotated(self.xRot / 16.0, 1.0, 0.0, 0.0) self.gl.glRotated(self.yRot / 16.0, 0.0, 1.0, 0.0) self.gl.glRotated(self.zRot / 16.0, 0.0, 0.0, 1.0) self.gl.glCallList(self.object) def resizeGL(self, width, height): side = min(width, height) if side < 0: return self.gl.glViewport((width - side) // 2, (height - side) // 2, side, side) self.gl.glMatrixMode(self.gl.GL_PROJECTION) self.gl.glLoadIdentity() self.gl.glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0) self.gl.glMatrixMode(self.gl.GL_MODELVIEW) def mousePressEvent(self, event): self.lastPos = event.pos() def mouseMoveEvent(self, event): dx = event.x() - self.lastPos.x() dy = event.y() - self.lastPos.y() if event.buttons() & Qt.LeftButton: self.setXRotation(self.xRot + 8 * dy) self.setYRotation(self.yRot + 8 * dx) elif event.buttons() & Qt.RightButton: self.setXRotation(self.xRot + 8 * dy) self.setZRotation(self.zRot + 8 * dx) self.lastPos = event.pos() def makeObject(self): genList = self.gl.glGenLists(1) self.gl.glNewList(genList, self.gl.GL_COMPILE) self.gl.glBegin(self.gl.GL_QUADS) x1 = +0.06 y1 = -0.14 x2 = +0.14 y2 = -0.06 x3 = +0.08 y3 = +0.00 x4 = +0.30 y4 = +0.22 self.quad(x1, y1, x2, y2, y2, x2, y1, x1) self.quad(x3, y3, x4, y4, y4, x4, y3, x3) self.extrude(x1, y1, x2, y2) self.extrude(x2, y2, y2, x2) self.extrude(y2, x2, y1, x1) self.extrude(y1, x1, x1, y1) self.extrude(x3, y3, x4, y4) self.extrude(x4, y4, y4, x4) self.extrude(y4, x4, y3, x3) NumSectors = 200 for i in range(NumSectors): angle1 = (i * 2 * math.pi) / NumSectors x5 = 0.30 * math.sin(angle1) y5 = 0.30 * math.cos(angle1) x6 = 0.20 * math.sin(angle1) y6 = 0.20 * math.cos(angle1) angle2 = ((i + 1) * 2 * math.pi) / NumSectors x7 = 0.20 * math.sin(angle2) y7 = 0.20 * math.cos(angle2) x8 = 0.30 * math.sin(angle2) y8 = 0.30 * math.cos(angle2) self.quad(x5, y5, x6, y6, x7, y7, x8, y8) self.extrude(x6, y6, x7, y7) self.extrude(x8, y8, x5, y5) self.gl.glEnd() self.gl.glEndList() return genList def quad(self, x1, y1, x2, y2, x3, y3, x4, y4): self.setColor(self.trolltechGreen) self.gl.glVertex3d(x1, y1, -0.05) self.gl.glVertex3d(x2, y2, -0.05) self.gl.glVertex3d(x3, y3, -0.05) self.gl.glVertex3d(x4, y4, -0.05) self.gl.glVertex3d(x4, y4, +0.05) self.gl.glVertex3d(x3, y3, +0.05) self.gl.glVertex3d(x2, y2, +0.05) self.gl.glVertex3d(x1, y1, +0.05) def extrude(self, x1, y1, x2, y2): self.setColor(self.trolltechGreen.darker(250 + int(100 * x1))) self.gl.glVertex3d(x1, y1, +0.05) self.gl.glVertex3d(x2, y2, +0.05) self.gl.glVertex3d(x2, y2, -0.05) self.gl.glVertex3d(x1, y1, -0.05) def normalizeAngle(self, angle): while angle < 0: angle += 360 * 16 while angle > 360 * 16: angle -= 360 * 16 return angle def setClearColor(self, c): self.gl.glClearColor(c.redF(), c.greenF(), c.blueF(), c.alphaF()) def setColor(self, c): self.gl.glColor4f(c.redF(), c.greenF(), c.blueF(), c.alphaF()) if __name__ == '__main__': app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/opengl/openglwindow.py0000644000076500000240000001447413245231431021701 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## Contact: http://www.qt-project.org/legal ## ## This file is part of the documentation of the Qt Toolkit. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import array from PyQt5.QtCore import QEvent from PyQt5.QtGui import (QGuiApplication, QMatrix4x4, QOpenGLContext, QOpenGLShader, QOpenGLShaderProgram, QSurfaceFormat, QWindow) class OpenGLWindow(QWindow): def __init__(self, parent=None): super(OpenGLWindow, self).__init__(parent) self.m_update_pending = False self.m_animating = False self.m_context = None self.m_gl = None self.setSurfaceType(QWindow.OpenGLSurface) def initialize(self): pass def setAnimating(self, animating): self.m_animating = animating if animating: self.renderLater() def renderLater(self): if not self.m_update_pending: self.m_update_pending = True QGuiApplication.postEvent(self, QEvent(QEvent.UpdateRequest)) def renderNow(self): if not self.isExposed(): return self.m_update_pending = False needsInitialize = False if self.m_context is None: self.m_context = QOpenGLContext(self) self.m_context.setFormat(self.requestedFormat()) self.m_context.create() needsInitialize = True self.m_context.makeCurrent(self) if needsInitialize: self.m_gl = self.m_context.versionFunctions() self.m_gl.initializeOpenGLFunctions() self.initialize() self.render(self.m_gl) self.m_context.swapBuffers(self) if self.m_animating: self.renderLater() def event(self, event): if event.type() == QEvent.UpdateRequest: self.renderNow() return True return super(OpenGLWindow, self).event(event) def exposeEvent(self, event): self.renderNow() def resizeEvent(self, event): self.renderNow() class TriangleWindow(OpenGLWindow): vertexShaderSource = ''' attribute highp vec4 posAttr; attribute lowp vec4 colAttr; varying lowp vec4 col; uniform highp mat4 matrix; void main() { col = colAttr; gl_Position = matrix * posAttr; } ''' fragmentShaderSource = ''' varying lowp vec4 col; void main() { gl_FragColor = col; } ''' def __init__(self): super(TriangleWindow, self).__init__() self.m_program = 0 self.m_frame = 0 self.m_posAttr = 0 self.m_colAttr = 0 self.m_matrixUniform = 0 def initialize(self): self.m_program = QOpenGLShaderProgram(self) self.m_program.addShaderFromSourceCode(QOpenGLShader.Vertex, self.vertexShaderSource) self.m_program.addShaderFromSourceCode(QOpenGLShader.Fragment, self.fragmentShaderSource) self.m_program.link() self.m_posAttr = self.m_program.attributeLocation('posAttr') self.m_colAttr = self.m_program.attributeLocation('colAttr') self.m_matrixUniform = self.m_program.uniformLocation('matrix') def render(self, gl): gl.glViewport(0, 0, self.width(), self.height()) gl.glClear(gl.GL_COLOR_BUFFER_BIT) self.m_program.bind() matrix = QMatrix4x4() matrix.perspective(60, 4.0/3.0, 0.1, 100.0) matrix.translate(0, 0, -2) matrix.rotate(100.0 * self.m_frame / self.screen().refreshRate(), 0, 1, 0) self.m_program.setUniformValue(self.m_matrixUniform, matrix) vertices = array.array('f', [ 0.0, 0.707, -0.5, -0.5, 0.5, -0.5]) gl.glVertexAttribPointer(self.m_posAttr, 2, gl.GL_FLOAT, False, 0, vertices) gl.glEnableVertexAttribArray(self.m_posAttr) colors = array.array('f', [ 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]) gl.glVertexAttribPointer(self.m_colAttr, 3, gl.GL_FLOAT, False, 0, colors) gl.glEnableVertexAttribArray(self.m_colAttr) gl.glDrawArrays(gl.GL_TRIANGLES, 0, 3) self.m_program.release() self.m_frame += 1 if __name__ == '__main__': import sys app = QGuiApplication(sys.argv) format = QSurfaceFormat() format.setSamples(4) window = TriangleWindow() window.setFormat(format) window.resize(640, 480) window.show() window.setAnimating(True) sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/opengl/overpainting.py0000755000076500000240000003163513245231431021673 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys import math, random from PyQt5.QtCore import (QPoint, QPointF, QRect, QRectF, QSize, Qt, QTime, QTimer) from PyQt5.QtGui import (QBrush, QColor, QFontMetrics, QImage, QPainter, QRadialGradient, QSurfaceFormat) from PyQt5.QtWidgets import QApplication, QOpenGLWidget class Bubble(object): def __init__(self, position, radius, velocity): self.position = position self.vel = velocity self.radius = radius self.innerColor = self.randomColor() self.outerColor = self.randomColor() self.updateBrush() def updateBrush(self): gradient = QRadialGradient(QPointF(self.radius, self.radius), self.radius, QPointF(self.radius*0.5, self.radius*0.5)) gradient.setColorAt(0, QColor(255, 255, 255, 255)) gradient.setColorAt(0.25, self.innerColor) gradient.setColorAt(1, self.outerColor) self.brush = QBrush(gradient) def drawBubble(self, painter): painter.save() painter.translate(self.position.x() - self.radius, self.position.y() - self.radius) painter.setBrush(self.brush) painter.drawEllipse(0, 0, int(2*self.radius), int(2*self.radius)) painter.restore() def randomColor(self): red = random.randrange(205, 256) green = random.randrange(205, 256) blue = random.randrange(205, 256) alpha = random.randrange(91, 192) return QColor(red, green, blue, alpha) def move(self, bbox): self.position += self.vel leftOverflow = self.position.x() - self.radius - bbox.left() rightOverflow = self.position.x() + self.radius - bbox.right() topOverflow = self.position.y() - self.radius - bbox.top() bottomOverflow = self.position.y() + self.radius - bbox.bottom() if leftOverflow < 0.0: self.position.setX(self.position.x() - 2 * leftOverflow) self.vel.setX(-self.vel.x()) elif rightOverflow > 0.0: self.position.setX(self.position.x() - 2 * rightOverflow) self.vel.setX(-self.vel.x()) if topOverflow < 0.0: self.position.setY(self.position.y() - 2 * topOverflow) self.vel.setY(-self.vel.y()) elif bottomOverflow > 0.0: self.position.setY(self.position.y() - 2 * bottomOverflow) self.vel.setY(-self.vel.y()) def rect(self): return QRectF(self.position.x() - self.radius, self.position.y() - self.radius, 2 * self.radius, 2 * self.radius) class GLWidget(QOpenGLWidget): def __init__(self, parent=None): super(GLWidget, self).__init__(parent) midnight = QTime(0, 0, 0) random.seed(midnight.secsTo(QTime.currentTime())) self.object = 0 self.xRot = 0 self.yRot = 0 self.zRot = 0 self.image = QImage() self.bubbles = [] self.lastPos = QPoint() self.trolltechGreen = QColor.fromCmykF(0.40, 0.0, 1.0, 0.0) self.trolltechPurple = QColor.fromCmykF(0.39, 0.39, 0.0, 0.0) self.animationTimer = QTimer() self.animationTimer.setSingleShot(False) self.animationTimer.timeout.connect(self.animate) self.animationTimer.start(25) self.setAutoFillBackground(False) self.setMinimumSize(200, 200) self.setWindowTitle("Overpainting a Scene") def setXRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.xRot: self.xRot = angle def setYRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.yRot: self.yRot = angle def setZRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.zRot: self.zRot = angle def initializeGL(self): self.gl = self.context().versionFunctions() self.gl.initializeOpenGLFunctions() self.object = self.makeObject() def mousePressEvent(self, event): self.lastPos = event.pos() def mouseMoveEvent(self, event): dx = event.x() - self.lastPos.x() dy = event.y() - self.lastPos.y() if event.buttons() & Qt.LeftButton: self.setXRotation(self.xRot + 8 * dy) self.setYRotation(self.yRot + 8 * dx) elif event.buttons() & Qt.RightButton: self.setXRotation(self.xRot + 8 * dy) self.setZRotation(self.zRot + 8 * dx) self.lastPos = event.pos() def paintEvent(self, event): self.makeCurrent() self.gl.glMatrixMode(self.gl.GL_MODELVIEW) self.gl.glPushMatrix() self.setClearColor(self.trolltechPurple.darker()) self.gl.glShadeModel(self.gl.GL_SMOOTH) self.gl.glEnable(self.gl.GL_DEPTH_TEST) #self.gl.glEnable(self.gl.GL_CULL_FACE) self.gl.glEnable(self.gl.GL_LIGHTING) self.gl.glEnable(self.gl.GL_LIGHT0) self.gl.glEnable(self.gl.GL_MULTISAMPLE) self.gl.glLightfv(self.gl.GL_LIGHT0, self.gl.GL_POSITION, (0.5, 5.0, 7.0, 1.0)) self.setupViewport(self.width(), self.height()) self.gl.glClear( self.gl.GL_COLOR_BUFFER_BIT | self.gl.GL_DEPTH_BUFFER_BIT) self.gl.glLoadIdentity() self.gl.glTranslated(0.0, 0.0, -10.0) self.gl.glRotated(self.xRot / 16.0, 1.0, 0.0, 0.0) self.gl.glRotated(self.yRot / 16.0, 0.0, 1.0, 0.0) self.gl.glRotated(self.zRot / 16.0, 0.0, 0.0, 1.0) self.gl.glCallList(self.object) self.gl.glMatrixMode(self.gl.GL_MODELVIEW) self.gl.glPopMatrix() painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) for bubble in self.bubbles: if bubble.rect().intersects(QRectF(event.rect())): bubble.drawBubble(painter) self.drawInstructions(painter) painter.end() def resizeGL(self, width, height): self.setupViewport(width, height) def showEvent(self, event): self.createBubbles(20 - len(self.bubbles)) def sizeHint(self): return QSize(400, 400) def makeObject(self): list = self.gl.glGenLists(1) self.gl.glNewList(list, self.gl.GL_COMPILE) self.gl.glEnable(self.gl.GL_NORMALIZE) self.gl.glBegin(self.gl.GL_QUADS) self.gl.glMaterialfv(self.gl.GL_FRONT, self.gl.GL_DIFFUSE, (self.trolltechGreen.red()/255.0, self.trolltechGreen.green()/255.0, self.trolltechGreen.blue()/255.0, 1.0)) x1 = +0.06 y1 = -0.14 x2 = +0.14 y2 = -0.06 x3 = +0.08 y3 = +0.00 x4 = +0.30 y4 = +0.22 self.quad(x1, y1, x2, y2, y2, x2, y1, x1) self.quad(x3, y3, x4, y4, y4, x4, y3, x3) self.extrude(x1, y1, x2, y2) self.extrude(x2, y2, y2, x2) self.extrude(y2, x2, y1, x1) self.extrude(y1, x1, x1, y1) self.extrude(x3, y3, x4, y4) self.extrude(x4, y4, y4, x4) self.extrude(y4, x4, y3, x3) NumSectors = 200 for i in range(NumSectors): angle1 = (i * 2 * math.pi) / NumSectors x5 = 0.30 * math.sin(angle1) y5 = 0.30 * math.cos(angle1) x6 = 0.20 * math.sin(angle1) y6 = 0.20 * math.cos(angle1) angle2 = ((i + 1) * 2 * math.pi) / NumSectors x7 = 0.20 * math.sin(angle2) y7 = 0.20 * math.cos(angle2) x8 = 0.30 * math.sin(angle2) y8 = 0.30 * math.cos(angle2) self.quad(x5, y5, x6, y6, x7, y7, x8, y8) self.extrude(x6, y6, x7, y7) self.extrude(x8, y8, x5, y5) self.gl.glEnd() self.gl.glEndList() return list def quad(self, x1, y1, x2, y2, x3, y3, x4, y4): self.gl.glNormal3d(0.0, 0.0, -1.0) self.gl.glVertex3d(x1, y1, -0.05) self.gl.glVertex3d(x2, y2, -0.05) self.gl.glVertex3d(x3, y3, -0.05) self.gl.glVertex3d(x4, y4, -0.05) self.gl.glNormal3d(0.0, 0.0, 1.0) self.gl.glVertex3d(x4, y4, +0.05) self.gl.glVertex3d(x3, y3, +0.05) self.gl.glVertex3d(x2, y2, +0.05) self.gl.glVertex3d(x1, y1, +0.05) def extrude(self, x1, y1, x2, y2): self.setColor(self.trolltechGreen.darker(250 + int(100 * x1))) self.gl.glNormal3d((x1 + x2)/2.0, (y1 + y2)/2.0, 0.0) self.gl.glVertex3d(x1, y1, +0.05) self.gl.glVertex3d(x2, y2, +0.05) self.gl.glVertex3d(x2, y2, -0.05) self.gl.glVertex3d(x1, y1, -0.05) def normalizeAngle(self, angle): while angle < 0: angle += 360 * 16 while angle > 360 * 16: angle -= 360 * 16 return angle def createBubbles(self, number): for i in range(number): position = QPointF(self.width()*(0.1 + 0.8*random.random()), self.height()*(0.1 + 0.8*random.random())) radius = min(self.width(), self.height())*(0.0125 + 0.0875*random.random()) velocity = QPointF(self.width()*0.0125*(-0.5 + random.random()), self.height()*0.0125*(-0.5 + random.random())) self.bubbles.append(Bubble(position, radius, velocity)) def animate(self): for bubble in self.bubbles: bubble.move(self.rect()) self.update() def setupViewport(self, width, height): side = min(width, height) self.gl.glViewport((width - side) // 2, (height - side) // 2, side, side) self.gl.glMatrixMode(self.gl.GL_PROJECTION) self.gl.glLoadIdentity() self.gl.glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0) self.gl.glMatrixMode(self.gl.GL_MODELVIEW) def drawInstructions(self, painter): text = "Click and drag with the left mouse button to rotate the Qt " \ "logo." metrics = QFontMetrics(self.font()) border = max(4, metrics.leading()) rect = metrics.boundingRect(0, 0, self.width() - 2*border, int(self.height()*0.125), Qt.AlignCenter | Qt.TextWordWrap, text) painter.setRenderHint(QPainter.TextAntialiasing) painter.fillRect(QRect(0, 0, self.width(), rect.height() + 2*border), QColor(0, 0, 0, 127)) painter.setPen(Qt.white) painter.fillRect(QRect(0, 0, self.width(), rect.height() + 2*border), QColor(0, 0, 0, 127)) painter.drawText((self.width() - rect.width())/2, border, rect.width(), rect.height(), Qt.AlignCenter | Qt.TextWordWrap, text) def setClearColor(self, c): self.gl.glClearColor(c.redF(), c.greenF(), c.blueF(), c.alphaF()) def setColor(self, c): self.gl.glColor4f(c.redF(), c.greenF(), c.blueF(), c.alphaF()) if __name__ == '__main__': app = QApplication(sys.argv) fmt = QSurfaceFormat() fmt.setSamples(4) QSurfaceFormat.setDefaultFormat(fmt) window = GLWidget() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/opengl/README0000644000076500000240000000161513245231431017464 0ustar philstaff00000000000000PyQt provides support for integration with OpenGL implementations on all platforms, giving developers the opportunity to display hardware accelerated 3D graphics alongside a more conventional user interface. These examples demonstrate the basic techniques used to take advantage of OpenGL in PyQt applications. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/opengl/textures/0000755000076500000240000000000013245231431020464 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/opengl/textures/images/0000755000076500000240000000000013245231431021731 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/opengl/textures/images/side1.png0000644000076500000240000000164713245231431023454 0ustar philstaff00000000000000‰PNG  IHDRk¬XTŸPLTEø|øüøøˆøøðøŒø¨Pø°`øÈø€øôèøÜ¸øèÐø´høÄˆøàÀø˜0ø„øÀ€øðàø¬XøäÈøøøøÐ øÔ¨øìØø ø @ø¤Høðèøœ8øÔ°ø¼xø„ø¸xøÌ˜ø°hø¸pøØ¸ø˜8øŒ øäÐø€øìàø”(ø¤PøØ°ø”0ø´pøÈ˜øôðøàÈø¨XøˆDžÃIDATx^íÖWnÝ@ FáŸêíöÞ\KzÏþ×@ÈÆä#ñðœðÃ`H™ó€Éa]Àÿ2ÊÚ5@µ(R¿óÙNÒ¯›C¡6—õ]$É+@™O$¹¸O É-@}HòÐ}ún.ÒBr ð½‰$yضW€2ä ^ É+Àê"Jò PeW’¼T·‘$¯ãæ§$¯U;½W€*‹$9ˆ7‹+INŽ7‡w’œÔ³S!É'@üé6Q›G€åh_Hò Pçi¤6Ûíð~* ªH›$L€±4½››•QKõÍÊÖª à½zÚå±µÙ:H€XíóºóX°HçÛßwF˜§óÿÒ:•adgÆÏ¶ö¨8L€üÜÞ{Z ý{0}3s`SuÛݬÌ<:“™ùøª?í+3wsý®X¼5óн¦ÍÖÌ'@.)º,ͼ”E2ŠÍüØØÌ\Øë`åà¨ÞÊ Æê­`¤ÞÖAœÔ[2ÀXýE«€&P.@¦!]͈ևc; -©‚XÎvzNûMü:.Ÿvݤ“©ž]1ùñåòQ£ÿ Ö‹½ @Ø  üÀ/«%çøÊÙ ~IEND®B`‚PyQt5_gpl-5.10.1/examples/opengl/textures/images/side2.png0000644000076500000240000000312613245231431023447 0ustar philstaff00000000000000‰PNG  IHDRk¬XTŠPLTEüxü€èüððüøü€øüøHü Xü¨üȨüиüØ8ü˜Øüèàüð üüˆ€üÀ0ü˜ˆüÀüˆÐüèÈüà(üxü¸°üØ üÐ@ü pü¸ðüð˜üÈÀüàhü°Pü¨°üÐ`ü°ü€àüè`ü¨@ü˜Ðüàpü° üˆ0ü€ü¸üÀPü @)qó‡IDATx^íÜç–ÛF €QLcïM½luIòþ¯%ÿ|¥¥è3Cà{ãÚ– pµ`ˆ À À `€`¿00€!00000000000À³c```````È’è¦C«µºl‹! QÜ+ j»ùÔ€ŵÚÊ5dͧ€©†C¢V ÿ®áÎD°SkèC¤ÃdMÛ¯ˆÔJ¶5|­²’+èSøzºñ a^ÅÖk€HÃìö¹·] Ïè-ö`#àI}(ºžW‘yixfe“Ó[¯~ÀÓ;$,Hüèa‰ôÙ€-,R™ùÁ2ýTžl`¡.ž„°T±Ÿ°T¥ô €Åºx `±D瀄Û{ÐÃdB øb½ëö=¨ ª¸—æ–’}\%dï|ð@9¸²Q²n÷W8ŽÄ÷£±—pw™Ãø4ôf²|÷Ö¸ €ïAWeîéîìÓY|:˜;;À} Çzdþç~Šüæ6ÀË/ÿÌzùÄÛ9 €ïA­4”k¸§ƒ“øå“y¨ÜSà"¾µ3w¼Úm€tÎýâ w4¸€ïA‰y´=L×:€ïAB-òLA; gžoZ˜L8 ÐÏÜÚ/¾ÿ x™¹²%0Yé4@4÷*`ªÂi€ÃÜó] S¥N„swöLº€ïA¹ùJ'Ï? s¶ÄóOƒbî_TSõ.Hd~¬Üï‹PìÁ¥`¢Ôi€xþcL˜hã¾5KlÝ(ôÌ—ª#ØÓÊ!¼ü[²‹*c–y ÖþÕÙ ìÖpöûñøüb°v5khÀÚvõ—‰ƒèêR°U­ KZ® wà'EÝ}ï븀¥W³~€Ú ²õHáõ&æw²¾¸Z³~¥m?@`¿ïL °="`yh%€Êv ¥ÐÂïú0,Ç âH <½¡XV ©åQ€3àÁ h¤€§3C <±54 À‹ €ð†@®íjˆ€¶WDb@«•¡ [À¤!Zæ§[æ§—–ù)|R- € ¥GC øû?ü P† €ªñý— @ˆ>¡РÁéÄûüK ×0jcèd%Œª Y`÷/:Çñ 8:*Å~}6!€`<l\±_ OŸ?1Tðùφ>ÙBÁxþÎÐPûÑümfˆàó™¡pï?CnèÈ;Óvþ¦çO•¡Øù›@ö;ÓÈZìüM k‘ó7!€¾DÎß„ú7äüM଑ó7!€d<cl5rþ&ð"ó7!€X çoB;œ¿ œrþ&açoB vþ&PaçoB›ñù·3óSҀﳾþ¤ä{ן“xwŠªÍá^ƒ}:í›€Ä € ŒËÇcæÙmÌ—Û˜ÍmÌ×ÿÆüY´¥[•€t‰šê6fx³¶Ži/ò „Û¹p…%K\P,ÚÙqµ‡eëÜP),\æ4€¬aéä¢îÏG‡ä˧ÜÈ øgÞ µ@ k4@Wi€¾Úü‰€€@QÄ §Qè ¸z÷?``````````````` ü0ñ€HÇ ð/|6ªàUÚIEND®B`‚PyQt5_gpl-5.10.1/examples/opengl/textures/images/side3.png0000644000076500000240000000410513245231431023446 0ustar philstaff00000000000000‰PNG  IHDRk¬XTíPLTExøøüø€øøôøøøø€ø€ ø€øðèø¨XøèÜøèÔøðìø,ø Lø¨Tø(ø¨\øÀ„øÀŒøÈøÈœøÐ¤øÐ¬øØ´øØ¼øàÀøàÌø$øèØøðäøˆøˆøøðøˆø ø¸|ø˜<ø°døàÈø˜4øÈ”ø˜0ø°løÐ¨øØ°ø°`ø¸tøØ¸ø¸xø HøÀ€øèÐøÀˆø DøÈ˜øðàø˜8øàÄø°høððøÐ ø°pø¸pøˆø¸€øˆ øÐ°øèàøØÀøÀø¨Pø0øàÐø˜@ø¨`øÈ ø Pø @ø"9IDATx^íÝ…’³èÇá£qwww·Ïu÷þ/çTíùjv3H„wªhèßä ÐÀ (æA@@1l@@(F €€€€€€€€€€€(O@@@@@@@ÀH×ËOùŸÙQ_³a[/£Î4ÿ\>HqH_}·áž½W\v£ 0¬X× ùøI½vfc³ì¿ô¨Ì4l“õœŠ€ñ{[gæçx(½`·’©d&vÎ~2x˜XÔ¸Å@/÷4óIg PAE· ž™5º` pei-Ž¨Ëºcp…Ym~}¨là‚Ú¦3€wÌ àŠ3ç¼n¡º+Cƒò–œ~@}ƒÀ5Ô‡GF3¨YFY¼Gs6º ÌBþÃuã®N·[õåiî#¶è” @ ®žŽWâ`ö‚ +°(»Žy›äžÑÈa³R\’p”ì’Oé<6©Î`Œ7Z´¦fë›0HàM3Ö6,bm9& ¬dVi£JX×w&ç+vƒ6¬‚58Æaæ'Ú¸cø×g°r`¯Òý„o&€ÏøO3Ú¦”¿4ø·¬`÷Áõ'pŒ×Ì6m×°ŸF<¦xíXí0qÊ@{è?ж]À§$€•ð5Ðßhgç,ªÁ¦x3x×`pÿ PR=NL°ØÃŸ´ íÐx¶GtúE»tÏ&,îð'´h—2ðì €JÀS7^-ˆ@2àõ\^UytNñðhdðø]ý¿i·º¼.Žª¯÷ FL*pï Åà®Í(.c¸UÐã‚[ÚÅà.™‡€\úJ±hÂ¥Å`hÄàŽÌ%Åàa„·iuŠ@oûئ”ñ¶« Å nb5»L#€š‰Õ ?(N%+Ù Š@"‡Õ¦i¢TûXiT#Š@=‹•´‰NñH” XÉÞOÅ ]¾²ÏÌ×Û™ˆdê¥ÒwõòþÔ‚GýE±ÔèE cb»FÉë›(Ô±C{—½Ḛ̀Sfþ."±kWó(t ä €%‚dUÙä¬oCÞ†…€uÒ¬Z\ÿŽ3ÀÁÓN,  ­É cBEVš+ÀÔ4Î0˜AQ9¦#¨êš%@ʲz*XÍ´±sEŽG€qîxy8Oet""=ÑmV'¹¶®ÍÀ8~8y ·zy [•gàŸñéÌÄæ™)öÎRG[œF€¨û ›6ˆ$QýÖŠ&%®°YÇ cõ=fwŠ:ËD€Î±IÍèÐ=6¨aãë»0õ,¬íŠ€úK(Y^ꨃh4±.‹€úMÀŽ8@k2#`ôá_Ÿ€ú)ú8ê'ðo/êC¾ýÍ @ýqà[äö£z. hqÅeäðí.òiøeê‘èÁ¯Eà~%£`À¯JôtøuZ€Ìa‰””€O %@æÓóž 4ÞÿMM¥0œfM•_Ï>uÃ0ÅŸpòÞ·Õ(ŒO¯·¤ ¼«„ †×)x¿àY_%@ZíоÏ&JÒðÚã{í^HnñÚHDZðŒB p¯r+-Â+;V€kü›ö™¥[>{€°ÌÞÓ]‡W#=”Î÷kÕ(H?áUB à€LÓ@PžÝ+@Ó"М`:6?Ï%À¦Y èáF€Æ×@0…ièþŠ`ßòd0@Ó&Ðø;pÎ0ñg :€"º3À¦S 8Á´ l~Å‚àg˜&`ô`ëátŸ`z tõ3L9À¦,Д¦‚ààÏ t ˜bÉð«_t/0[:¹:€ L+:€2úC(À¦¡¦Èa;:€-LO ƒíJðáÉéþ„­§øÞøL0…­ hÏ~Ó¬ü ¦(£ŸÁt¿øLðü ¦8øLÃÏ`:€ŸÁt=ü ¦ØùLÐÃvåØúL°€­çØúL°€­àxô3˜ ‡mÍð;L ‡­àÈü%” €í'>€¹ ¤XG˜®|+?éÚÓ À¦}MPíý)˜`S,é><ûDð ¶œ`Ó.Ðô°]ùþN°†íİ‚itþ%èÄp„i|ÞµòÞ®xßú{ÈÈÖ ˜Ô{r€lÈr,ɪH°9@ˆìëKàÈг´ì¡aÈØ>SüÿøþhI€ @€ €£ÕÉ´­J Àheò Œ–'pÄh]òKŒ6M`ÀhYêkŒ·Oàn”'0àF«´N¸Õ¾J p³iÊKÜ.–éÌð–6uª¼­¬N`½Ã[ÛÉÔ‹yÄÛ‹Ëü˜M}ÓËò1â¿Öd“×O((€x—?ñ€ @i'@€ @€ @€ @€È2€¨€¨€þ èØ«hƒIEND®B`‚PyQt5_gpl-5.10.1/examples/opengl/textures/images/side5.png0000644000076500000240000000341613245231431023454 0ustar philstaff00000000000000‰PNG  IHDRk¬XTPLTExüðüè€ü€üøüðøüøü(˜ü8 ü@¨üP¨üX°üh¸üp¸üxÀü€ÀüˆÈüÐü Ðü¨Øü°Øü¸àüÀàüÈèüÐèüØðüàˆüˆüü ˜ü0°ü`Èü˜ üHàüаüpÈü ðüð˜ü@Ðü°èüàØüÀˆü €ü¨ü`ü0Àü üP1:¹)      e@)ðŸ$ãtx>Ç(N³Ç¢¬š¶ëù*Åû®mêª,òÇÓÏ4‰£ðøgÏ=8Ó8ɘø  l.R ãä8×;Ÿý 8†ÑÕý-ç  b†3HL„À2Óp€Ü4Pp4p€Æ0@ 3 ð:7 PAІ>ƒF¤0à8Fø®Q€|Ï(€ ÀÇpÄð€ Æb dF~Àȱÿ*ŒLðJìßö¯Á†pÁþhMÈ>@w5ø{Bð¿Á0Šã$M³Ó)/вªêæŸÔ_ª²,þͲ4Iâ8 Ãã÷À÷ÏžçºÇ™¾ŽÃ   k£àà¯Rì>€§W'|êÀ#v€;@ ÄPaø‚ ÆÐ`h±tØzì9(ì9€Ä À€`Ä0ap°üÀpÀàbð0,oôåõ)<ç×naùmœ×H‹úi‡þÀ%ó'6“ÉOJµgU[ˆ|N/;šþ÷¾`ë2ÆÝ^ÖÿÔGÁn‰{R»X"þ6Évs†Tí ÒZ·/ÿù€/“‹õ'—ÝŸ¯åø•¢îÄ>–€[P³M3\5t«ÅcË>±­sæú%(·Ì8Ü&€Œ@ºmÎé툙e @Ȍķ `f’Úà•%3”IÙp`¦Ù0+f,ÏVHf.µŠŒg@ÏL¦ÐÎt`‡ É«¶ÒZó¾«NqpOoÀ¨¯Ä9mÞ²âe8Þ x€’½Žô ¥çÓ„â&\k«U¾$¦²Ñ@7ãXÝñ´ÊL¥ë[äÚšƒ•EºZû«JèÑ}#úkA å]Ãùíʞ࿾@{¾k$»?¬ <€ÖuzœZ'Ðì·ÄŸÖäûÐÝÀ–“À0YÀü˜º»k5.8»йí5FÌ*fà÷ƒ6€ùau¹w€{ èƽhõkpùpwÐ/¶f>ã·ÀúñþBŒãëW¶û(Íþ„Ю6g>Ÿ-®6g¾^[†@½Ð!Ð ]êcèÙ|j Ý{‚êy€2@ësãCã-\Ê­6¸%6.”L¿1Æ7\¯®€ ðiÚrA»3? `~—Œì6Pr °Ðfÿ2¹÷vPPòM CGs'  ßtcÏ×ÙÏËóy‘±Qñ0@ø kCC¢ž P°—ŒüC\ÌÙ‚ À·ÛäšÎ¾!hg«kåÃÜ`ùÁ•åæïÀ¡°|n†¸ûyíäÜGpþúÂÇnÛ%R!üú¶…@4×@X¾ô±Ýn$ÄQ”WÝV}3@%ß{mÀÓÕÅ‹üF€/‚½qÑ0–»¯ð¦¦[È·ï¿ÒP–û/§YÌÜ­á,OêËhe#è]öf†FÃXþ%póÞɹ“c§¡,/óž²¥VOsÿ´Ó<°¹ Q3À“qé9øËëܧ¨Rú:]ö,çØdbY}ÎÞ<³²åþºÉ“óÀæ3T€ós¤ÆA²¥¸½¶àÈ6‹Hm¬/pÚ Àë´íFCnk}±€ ¹¶ÀÛàö¿w׈? à·VW˜(> ƒ‹å%6úŒ ·¿ÈJ4Ü Ïå>ªÌ¨Ü½ãßQ™.qn~Îm«3´lyr ÀpN*eg¡¥åÔ©?½£0¸aÞÁª4e êR¤‘ï¦Aɤ'Çõü(+[°ÔÖ¾C@@@@@@@@@@@@@@@C¿B€7@@ð7 ;®ý°§IEND®B`‚PyQt5_gpl-5.10.1/examples/opengl/textures/images/side6.png0000644000076500000240000000424713245231431023460 0ustar philstaff00000000000000‰PNG  IHDRk¬XTðPLTEøxøüøøøøø €øôøø€ø€øàðøˆø$ø(ø,ø8˜øD ø\¨ø`°øh°øl°ø„Àø”Èø€øœÈø¨Ðø¬Ðø¼ØøÌàøÐèøØèøÜèøäðøèðøðøøˆøˆø˜ÈøÄàøìðø¸ØøT¨øŒÀøÔèød°øx¸ø|¸øÈàøˆøÈø´Øø€ø<˜øÀàøp¸ø@ øÐàø€ÀøH øˆÀøL øP¨ø ø0ø Ðø¤Ðø0˜ø4˜øàèø`¨øððø°ÐøÀØø ˆø°Øø ÈøÀøt¸ø@˜øX¨ø€¸øP øp°ÍŒ<ürIDATx^íÝçr¥:†áo‰´sÎ9;çœÝ9ž™û¿›©ê*ÿè3H€·~´Þ p•Ÿ 倀ö70E1000000000000000LƒÁrý¹Ó>± `üåéºzó2oá­ÍÊÑ_ì•NñÿÍ×Ùp{g-H«»™/î|¨+ô3 ð©]ö]«‘M€~ÕGÌJ£ìt_‘ 'È€h瑨ÊÀsÉÚ§,ôŠHX20ºGt~±\¹hì4íÅqãçe@4|(ó •½qf/†‹P•¯uWY¾ûä¯w3~9Ü/BšS»Êü|ÀN ²ò 7ó"“ÈzéZ0#t>‡¤‡Ž SbÍÂsveÀýI÷ “¢Á Â;êX1+|5Gx—c² ç ¼"ž[Íé’;o> +/?"+nÞã„,ÿÿ… Y ßÿóc²à;Â›È €u ¡ù‡dÀ•ƒð:d@0Gxu²À}Dx¯Â€*ÂsFdÀ’d@¿…ðÊdÀ*‡ðü‘Hjß é«°`5ƒ¤g²`I/dÀ7Èúl€ûIE²à²ÚV>$Í\+6µO6BÚÐ €È*‘ KH;¶  i KH{%î íÀ€¡iç6Ô!ÍLH+“Çw`@òN,èCÑÄ€ È›SöÄòʬ¡è€ 5-8‚¢^ö–P5"i£N£zYœ;¾çÏr…³Î •ûPä íCó>lÃqîvú©("é(8m– /ßRH4Ô¨óÊç)hCÕý«I½…•—©¨BÕý]ÓAÌ6“”ä¼ú=|EüŽžR0IðîÿÂG¢î§)èBY›Þ"·‚¤?˜pe]zkü‚äÍ–Æü‚²õÀnïÉYšpe‡oçËÞ—Ó7` u»ô§/>ÞÛÑ®Ñk ƵPÏÇû+LMغ1ÑÒÇ6mL¨@ÝŠˆ§Ø®cƒΠnJ̱eþÈ\€Ô¹ô©ˆ­»1@xP'Ä%4Ô5`„ˆD :Ê C¾ ¢ô´0à µ §a&À-’å_<+áŽý3ñûn&À>Ôºÿ,þâ›4 ˆÛ£™{ˆW Í»± ®ŒØ n…CÙc-Īn$À%b¶qIÖr†8Í„‰Ððó ˆÓ‰‰ˆU…”Mb \˜CœJ‚Ô¿"º‚‰3ÄÈÆ}ßT]` À‘®uˆ®m €¯íBæ‘Õ hiûá>D[– Ð8~7•“Î-à'ÅË!ª¡y"軲üœÆaðk¢GÎÕ5ÍÈ逆P7ÑùäíÂ@ÑÒz7gUk㢇%Ê…ª‘‰u(ëi¼Ñà ::¯I@QL´ÎdO¡¨j$åtŽ\+(Z˜ ðª6‡Á™M¨z¡D Ï'3F:§ñz÷ËP*@ÕXÛ˜r›ÊðMÛ’TÃt.¡q ë´ªH¦Ð Šn´-Kh.@Š¡énsßì…”ô¬§8õ +OæÐW]sH;6àZשÐd9S“Švuëd2ÝèÙ„YC³ºzž[+S³Ô§ÃÝ­ß@ò¦<ëxÆ×u é#™@y(Zn©èæ images/brick.png images/qt-logo.png PyQt5_gpl-5.10.1/examples/painting/basicdrawing/basicdrawing_rc.py0000644000076500000240000004613413245231431025266 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Tue May 14 09:37:31 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x0e\x70\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x50\x00\x00\x00\x50\x08\x06\x00\x00\x00\x8e\x11\xf2\xad\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\x3d\x00\x00\x01\x3d\ \x01\x9f\xdc\x2b\xea\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ \x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x0d\xed\x49\x44\ \x41\x54\x78\x9c\xed\x5c\x79\x70\x1c\xd5\x9d\xfe\x7a\x46\x73\x69\ \x34\xba\x0f\xcb\x96\x35\xbe\x8d\x90\x10\xbe\x30\x8e\x85\xed\x10\ \x67\x51\x44\x4c\x16\x58\x76\x97\xb0\xb0\x04\x36\x45\x2a\x86\x62\ \xf1\x06\xb6\x48\xc2\x62\x90\x8b\x50\xd9\xb0\x5b\x9b\x84\x85\x62\ \xd9\x0a\x09\x6c\x41\xc0\x2c\xb5\x0e\x87\x11\xc2\x16\xb2\x25\x1b\ \xb0\x6c\xd9\x96\xe4\xdb\xb2\x75\x59\xb2\x67\xac\xd1\x68\xa6\xef\ \xee\xf7\xf6\x8f\xd6\x31\xb6\xa7\xbb\x67\xa4\x19\x8d\x30\xf9\xaa\ \x5c\xe5\x79\xfd\xbd\xee\x5f\x7f\xfa\xbd\x7e\xc7\xef\xf7\x1e\x43\ \x29\x45\xbc\xf0\xd4\x78\xcb\x01\x54\x03\xa8\x04\x90\xe3\x70\x5a\ \x0a\x2a\x96\x67\x2c\xc8\xcc\xb6\x7a\xac\x69\x8c\xcd\x66\x63\x60\ \xb3\x5b\xa8\xa2\x50\x91\xe7\xd4\x7e\x91\xa7\xc7\x65\x89\xb4\xc8\ \x32\xdd\xa9\x2a\xb4\x69\xcf\x96\x0e\x12\xf7\x43\xa7\x29\x98\x58\ \x05\xf4\xd4\x78\xad\x00\x9e\x06\xf0\x20\x80\x12\x00\xb0\x58\x19\ \x2c\x2a\x4f\x47\xc5\x72\x37\xec\x0e\x4b\x4c\xf7\x51\x15\x8a\x70\ \x48\xe5\x78\x96\x9c\x17\x05\x72\x52\x92\xc8\x7e\x45\xa2\x0d\x8a\ \x42\x1b\xf7\x6c\xe9\x90\x26\xf8\x1e\x29\x43\x4c\x02\x7a\x6a\xbc\ \x33\x00\xfc\x11\xc0\xba\xd1\x32\xbb\xc3\x82\xea\x3b\xf3\xe0\xc9\ \xb2\x26\xc4\x10\xa2\x52\x84\x43\xaa\xc0\xb3\xe4\x82\x28\x90\x53\ \x92\x48\x0e\xc8\x32\xfd\x4c\x91\xe9\x8e\x3d\x5b\x3a\x84\x84\x3c\ \x24\x09\x30\x15\xd0\x53\xe3\xf5\x02\xf8\x1c\xc0\x8c\xc8\xf2\xb5\ \xd5\xd9\x28\x99\xeb\x4c\xa2\x69\x1a\x08\x01\xd8\x90\x2a\xf2\xac\ \xea\x13\x04\xd2\x29\x89\xa4\x55\x96\xe8\x2e\x55\xa1\x9f\x34\xd7\ \x76\x84\x93\x6e\x80\x09\x62\x11\xf0\x1d\x00\x7f\x1d\x59\xb6\xb0\ \x3c\x1d\x37\xac\xc9\x4c\xa6\x5d\xa6\xa0\x14\x60\xc3\xaa\xc4\x85\ \x55\xbf\xc8\x93\x33\x92\x48\x0f\xca\x12\xd9\xad\x28\xb4\xbe\xb9\ \xb6\x63\x70\xaa\xec\x30\x14\xd0\x53\xe3\xfd\x26\x80\x86\xc8\x32\ \xb7\xc7\x8a\x0d\x77\xe7\xc3\x6a\x65\x92\x6c\xda\xc4\x40\x29\xc0\ \x85\x55\x99\x63\xd5\x41\x41\x13\xf6\xb0\x2c\x91\x26\x45\xa6\x75\ \xcd\xb5\x1d\x17\x12\xfd\x3c\x33\x01\x9b\x01\xac\x8e\x2c\x9b\xb7\ \xd8\x85\x55\x37\x67\x25\xda\x8e\x29\x01\xc7\xaa\x0a\x17\x26\x01\ \x81\x27\x5d\x92\x40\xda\x64\x89\xec\x91\x15\x5a\xd7\xfc\x6c\x47\ \xcf\x44\xef\xa9\x2b\xa0\xa7\xc6\x9b\x06\x80\x05\x60\x8f\x2c\x5f\ \x71\x53\x26\x16\x55\xa4\x4f\xf4\x79\xd3\x12\x3c\x47\x54\x2e\xac\ \x0e\x09\x1c\xe9\x11\x45\xd2\x2e\x4b\x74\xaf\x22\x93\xba\xa6\x67\ \x3b\x4e\x9b\xd5\x35\x12\xf0\x5a\x00\x1d\x97\x97\xdf\x72\x47\x1e\ \xf2\x8b\x6c\x93\xb7\xfa\x2b\x00\x91\x27\x84\x0d\xab\xc1\xbe\x6e\ \xb1\x64\x4f\x6d\x07\x17\x8d\x63\x34\x78\xab\xb8\xbc\x80\x61\x80\ \x9c\xbc\xb4\x84\x19\x38\xdd\xe1\x70\x59\x2c\xb9\x05\xb6\x1c\xe6\ \xb2\x56\x18\x09\x23\x01\xe7\x5c\x5e\x60\xb3\x5b\x60\x4d\x9b\x9e\ \x9d\x47\xaa\x60\x24\x60\x6c\x53\x8b\xaf\x39\xfe\x2c\xd2\x24\xf1\ \x67\x01\x27\x89\x94\xf6\x08\x92\x48\xc0\xb1\x04\x16\xd8\x30\x23\ \xb7\x00\x79\x99\x39\x10\x55\x0e\x41\xd1\x0f\x51\xe1\x53\x69\x5a\ \xcc\x98\x52\x01\x55\x15\xe8\xeb\x12\x70\xf6\xa4\x00\x22\xda\xb0\ \x7e\xc5\x6a\x3c\x76\xeb\x46\x5c\xef\x5d\x72\x09\x8f\x52\x82\xfe\ \xf0\x59\x9c\x09\x74\xe0\xb8\x7f\x3f\x5a\xfa\xea\xa1\x12\x65\x2a\ \x4d\x8d\x19\x53\x26\xa0\x6f\x40\xc2\xde\x86\x61\x88\x3c\xc1\xa3\ \x77\xdf\x83\x67\xbe\xff\x9c\x2e\x97\x61\x2c\x98\xe9\x99\x87\x99\ \x9e\x79\xa8\x2a\xbd\x0d\x77\x94\xfd\x18\x75\x27\xdf\x40\x53\xd7\ \x36\xc8\x64\x7a\xad\x78\x4d\x89\x80\xed\xfb\x59\xb4\xed\x0b\x21\ \x27\xd7\x89\x4f\x5f\xdc\x8a\xf2\xd9\x95\x71\xd5\xcf\x71\x15\xe1\ \xee\xca\xc7\xf1\x8d\xd2\xef\xe2\xa5\x2f\x1e\xc7\x90\xe0\x37\xe4\ \xab\x32\xc5\x91\x43\x2c\x00\xe0\xae\x6f\xdd\x8a\x9c\xac\x0c\x0c\ \x09\x3e\x04\xf8\x0b\x18\xe2\x2f\x40\x54\x13\xf7\x79\x48\xba\x80\ \xc7\xdb\x39\x1c\xde\x17\x82\xdb\x6d\xc3\x07\xcf\xbf\x13\xb7\x78\ \x91\xf0\x66\x97\xe1\xa7\xeb\x7e\x8f\x17\x3f\xff\x09\x7a\x82\xc7\ \x75\x79\xbe\xf3\x32\xda\x5a\xc2\x60\x18\x06\xdb\x9e\x78\x02\x05\ \x99\x85\x63\xd7\x5a\xfa\xea\xf1\x6a\xcb\x53\x13\xb6\xe1\x72\x24\ \xb5\x17\xee\xef\x11\x71\xa0\x69\x18\x0c\xc3\xe0\xf5\xa7\x7f\x8b\ \xeb\x4a\xaf\x9f\xf4\x3d\xb3\x9d\x05\x78\x64\xd5\xbf\x23\xc3\x9e\ \xad\xcb\xf1\x0d\x68\xcd\xbc\xb0\xd0\x7d\x89\x78\xc9\x40\xd2\x04\ \xa4\x00\x5a\xf7\x86\x40\x01\x54\xdd\x50\x86\x5b\x2a\x6b\x4c\xeb\ \x88\xb2\x84\xf7\xf6\xbe\x8b\x8f\x0f\x7e\x68\xc8\xcb\x76\xe6\xe3\ \x81\x65\x9b\xc1\x20\xfa\xac\xc8\xd7\xaf\x09\x58\xb1\x70\x41\xbc\ \x66\xc7\x8d\xa4\x09\xd8\x79\x8c\xc7\xd0\xa0\x82\x34\x9b\x05\xbf\ \xdd\xf8\x6b\x53\xfe\xfe\x73\x3b\xb0\xa5\xf1\xfb\x78\x69\x57\x2d\ \xee\xd9\xfc\x30\xca\x7f\xb4\x04\x6f\x34\xfe\x4e\x97\x5f\x51\xb4\ \x1a\xab\x4b\x37\x5c\x51\x4e\x08\x85\xef\x82\x0c\x00\x58\x5b\x59\ \x35\xf1\x17\x88\x11\x49\x11\x90\x52\x8a\xb6\x7d\xda\x6a\xfb\x77\ \xd6\xac\xc4\x82\xa2\x45\x86\xfc\xfe\xd0\x19\xfc\xfe\x40\x2d\x7c\ \x6c\x2f\xe6\x5f\xe3\xc2\xcd\xdf\xcd\x45\x77\x4f\x00\x8f\xfe\xaa\ \x16\xfb\x3b\xbf\xd0\xad\x57\xbd\xf0\xbe\x2b\xbc\x30\x70\x51\x81\ \x2a\x6b\x2b\x4c\x7f\xb9\xf2\xce\x49\xbe\x89\x39\x92\x22\xa0\x6f\ \x40\x06\xc7\xaa\x00\x80\x1f\xd6\x3c\x68\xca\x7f\xb5\xe5\xe7\x90\ \xd4\xf1\xb8\x51\x7e\x91\x0d\x73\x16\x38\xa1\xa8\x14\x0f\xbe\xb0\ \x51\xb7\x5e\x51\x86\x17\x95\x33\x6e\xba\xec\xd9\x5a\xf3\xcd\xce\ \x71\x62\x7e\xd1\x57\xb4\x09\xf7\x76\x8a\x00\x80\xac\x6c\x07\xd6\ \x57\x54\x1b\x72\xfd\x6c\x1f\xfa\x86\xaf\x5c\xb7\xac\x5c\xe9\x01\ \x00\x74\x9e\xf1\xe3\x95\x4f\x5e\xd4\xad\xbf\x6e\xee\x5d\x97\xfc\ \xf6\xf5\x6b\xcd\xb7\x6c\x5e\x69\x5c\x36\x4f\x14\x49\x19\xc6\xf4\ \x9c\xd5\xbc\x69\xf5\x12\xf3\x21\x4b\x67\xa0\x3d\x6a\x79\x86\xc7\ \x0a\x57\xba\x05\x3c\x47\xb0\xf3\x50\x23\x7e\x74\xcb\x23\x51\x79\ \x8b\xf2\x97\x61\xef\x27\x3c\xba\xbb\x82\xf8\x76\xd5\x52\xfc\xdf\ \x53\x7f\x40\x8f\xbf\x1b\xc5\x39\xc5\x51\xf9\x59\xce\x02\x2c\xce\ \x5f\x0e\x56\x1e\x06\x2b\x0d\x83\x93\x86\x27\x35\x2e\x4c\xb8\x80\ \xc3\x01\x15\x6c\x48\x6b\xbe\x77\x54\x7d\xcf\x94\xaf\x27\x20\x00\ \xe4\x16\xda\xd1\x77\x56\xc0\xd1\x4e\xfd\x95\x75\x9b\xc5\x8e\x55\ \x65\x2b\x71\xa6\xb3\x1e\x84\x02\x8b\x8a\xaf\xc1\xa2\xe2\x6b\x74\ \xf9\x0b\xf3\x96\xe0\x9f\xaa\x5e\xba\xa4\x6c\x4f\xf7\x07\xf8\x43\ \xeb\x16\x53\x5b\xa3\x21\xe1\x4d\x78\x28\x20\x8f\xfd\x7f\xcd\x35\ \xeb\x0c\x98\x1a\xce\x04\xae\x88\x1a\x8c\x21\xaf\x40\x0b\x1d\xf4\ \x9e\x0b\x80\x50\xfd\x6c\x90\xf5\xcb\xd6\xc6\x61\xe1\x95\x60\x98\ \x89\x2f\x12\x27\x5c\xc0\xe1\x80\xe6\x7d\x4e\x57\x1a\x4a\xf2\xbd\ \x86\x5c\x0a\x8a\xde\xe0\x09\xdd\xeb\x79\x85\x5a\x03\x91\x25\x82\ \xcf\x4f\x34\xe9\xf2\x16\xcf\x5e\x3c\x01\x4b\x13\x83\x24\x08\xa8\ \xad\x9a\x14\xe5\x9b\x07\xde\x25\x45\x80\x42\x64\xdd\xeb\x99\xd9\ \xe3\xc1\xab\x96\x53\xfb\x74\x79\x79\x9e\xdc\x38\x2c\x4c\x2c\x12\ \xfe\x0d\x0c\x8e\x34\xe1\xd2\x99\xd1\x3f\xe2\x91\x30\xfb\x78\xdb\ \x22\x42\x39\x41\x2e\xa4\xcb\xcb\x72\xe5\xe2\x5b\x1b\x72\x11\x0e\ \xf6\x63\xc9\xc3\x2b\x90\x9b\x99\x89\x9d\xcf\xef\x8c\xca\x1d\x08\ \xf6\xe0\xc8\xc0\x21\xd8\x2d\x76\x38\x6d\x6e\x64\xa7\x67\x21\xc8\ \x5f\x34\xb5\x55\x0f\x09\x17\x90\x63\xb5\x6f\xd5\xac\xfc\x22\x53\ \xae\xa8\x44\x8d\x14\x8e\x21\xcd\x36\xde\x40\x38\x81\xd5\xe5\x65\ \xd8\x73\x50\x5c\xe2\xc0\x59\x81\xc3\xe9\xce\x20\x7a\x1c\xfa\x82\ \xf4\x86\x8f\xe1\xed\x63\x13\xeb\x30\xa2\x21\xe1\x4d\x58\x91\x35\ \x01\xdd\xae\x0c\x53\xae\xa8\x1a\x27\x5d\x59\x2c\xda\x3f\x00\x60\ \x45\x7d\x01\x2d\x8c\x05\x6e\x7b\x6a\xb2\x25\x12\x2a\x20\x21\x14\ \xaa\xd6\x87\x20\x33\x16\x01\x4d\x3c\x10\xc0\x58\x18\x95\xe3\x8d\ \x9b\xbb\xc7\x91\x63\x6e\x60\x12\x90\x50\x01\xd5\x88\x55\xf7\x98\ \x3c\x30\x86\xb8\x87\x6d\xa4\x19\x73\xe2\xd7\x40\x40\x59\x1e\x1f\ \xab\x65\xb9\xcc\x7b\xe1\x58\x66\x00\x69\x23\x1d\xb1\x99\x80\x99\ \x8e\xd4\xf4\xc4\x89\x6d\xc2\xca\x78\x9e\x8d\xdb\xe5\x36\xe5\x4b\ \x31\x78\xe0\x68\x47\x22\x88\xc6\xdf\x4b\x8f\xfd\x2a\xf0\x40\x5b\ \x44\x9e\xf4\x60\xc8\x3c\xc7\xd1\x6a\x89\x61\x10\x30\x92\xfc\xa4\ \xb7\x78\x3a\x0a\x0b\x93\x9a\x10\x77\x42\x9f\x6a\x77\x30\x18\x7d\ \xcf\x0b\x41\x9f\x39\xdf\xea\x32\xe5\x28\x23\x5e\xed\x72\x38\x0c\ \x79\xac\x3c\x6c\x6e\x60\x12\x90\x50\x01\x19\x86\x81\xcd\xa6\x29\ \x78\x31\x68\x3e\x38\xb5\xa7\x99\xe7\x58\x8f\x76\x4c\x0e\xbb\x31\ \x97\x95\xae\x02\x01\x01\xc0\xe1\xd4\x6e\x39\x38\x1c\x30\xe7\xc6\ \xe0\x81\xb2\x3c\xea\x81\x26\x02\x5e\x0d\x1e\x08\x00\x0e\xa7\xb6\ \xed\x61\x30\x6c\xfe\x42\x0e\x6b\x0c\x1e\xa8\x8e\x0a\x68\x2c\xf6\ \x55\xe3\x81\x4e\xa7\xd6\x84\x87\x43\xe6\x3b\x10\xec\x26\x02\x52\ \x68\x1b\x73\x00\x20\xdd\x44\x40\xee\x6a\xf1\x40\xfb\x48\x13\x0e\ \x71\xe6\xb3\x0c\x7b\x9a\xb1\x28\x6a\xc4\xb8\xd2\xed\x30\xce\xcb\ \xbe\x6a\x3c\xd0\x31\x32\x94\x61\x39\xf3\xcd\x45\x66\xdf\x40\x25\ \x62\x66\xe3\x72\xea\x0b\x28\x28\x2c\x08\x55\x63\x33\x30\xc1\x48\ \x9a\x07\xf2\x9c\xfe\x3a\xdf\x28\x1c\x69\x2e\xc3\x29\x98\x24\x8e\ \x7b\x60\x61\x56\x81\x2e\x2f\x68\x92\x2b\x93\x4c\x24\x5c\x40\x4f\ \xd6\xe8\xcc\x41\xc5\xc0\xd0\x39\x53\x7e\x69\x96\x7e\xfc\x22\xe0\ \x1f\xff\x23\x7c\xb3\x62\xbd\x2e\xef\x84\xbf\x35\x0e\x0b\x13\x8b\ \x84\x0b\x58\x50\x3c\xb2\x0a\x4a\x81\x6d\x5f\xbe\x67\xca\xf7\x66\ \x97\xe9\x5e\x1b\xf4\x6b\x6d\xd8\xe3\xb1\x63\x6e\xe1\x7c\x5d\xde\ \x51\xdf\x97\xf1\x19\x99\x40\x24\x5c\xc0\x74\xb7\x15\x6e\x8f\x36\ \x94\x69\x38\xb8\xcb\x94\x3f\x27\x47\x5f\xc0\x80\x6f\x64\x75\x7b\ \x96\x7e\x82\x10\xa5\x04\xc7\xfc\x2d\x31\xdb\x67\xd6\xf3\xc7\x8b\ \xa4\x4c\x20\x0b\x47\xbc\xf0\xd0\x49\xfd\x14\xb4\x51\xc4\xe2\x81\ \xd7\xcd\xd7\x4f\x0d\xe9\x0e\x9e\x00\x2b\x05\xb5\x1f\x31\x44\xd7\ \x66\x66\xea\x7b\xf2\x44\x90\x14\x01\x4b\xe7\x69\xf3\xd6\xbe\xbe\ \x20\x8e\xf4\xb6\x19\x72\xb3\x9d\x05\x51\x5f\x2a\x38\xa8\x8c\x75\ \x22\x35\x2b\xbe\xa3\x5b\xff\x58\x44\xf3\xb5\x3b\x34\x01\x65\x89\ \x42\x52\xc4\xa8\xfc\xbc\xf4\x62\x38\xd3\x12\xb7\x55\x2d\x29\x02\ \xce\xf4\x3a\xe0\x72\x5b\x41\x29\xc5\x0b\xef\xbd\x60\xca\xff\x9b\ \x8a\xc7\xae\x28\x3b\xf8\xa5\x36\x10\x5f\x5a\x31\x07\x77\xae\xfa\ \x5b\xdd\xba\x47\x22\x04\x4c\x77\x6b\x9f\x0e\x4a\x29\x4e\xf6\x47\ \xf7\x7e\x06\x0c\xfe\xaa\x7c\x13\x2e\x76\x66\xe2\xf4\xbe\x0c\xe4\ \x0e\xaf\xc5\x43\x95\xe6\xd9\x63\x7a\x48\x4a\x6a\x07\xc3\x30\x98\ \xb7\xd8\x85\x8e\x03\x61\x7c\xdc\xdc\x0c\xf5\x11\xc5\x70\xe9\xaa\ \xac\x60\x25\x2a\x67\xac\xc1\xe1\x81\xdd\x00\x80\xbe\x6e\x11\x7d\ \x67\x05\xd8\x1d\x16\xfc\xee\xf1\x57\x75\xeb\xf5\x87\xce\xe0\xb8\ \x7f\xff\xd8\x6f\x77\xc6\xf8\xee\xf9\xe3\x7d\x47\x75\xb3\x61\xd7\ \xce\xf9\x1e\xd6\x6e\x1a\xcf\x9a\x50\x88\x04\x1c\x8e\xf9\xf5\x2e\ \x41\xd2\x16\xd1\x16\x57\xa4\xc3\x66\x67\x10\x1a\x96\x51\xfb\xce\ \x66\x53\xfe\xbd\xd7\x3f\x89\xb2\x82\x1b\x71\xe4\x40\x18\xcd\xf5\ \x41\xac\x5c\x3a\x1f\x6f\xd5\xbe\x64\x98\x1a\xb7\xed\xe8\x2b\xa0\ \x11\x19\x0b\x69\x36\x06\xd9\xb9\xda\x1f\x6a\xc7\xa1\xe8\x61\xcd\ \x68\x88\xff\xd8\x8d\x71\x24\x4d\x40\x67\xba\x05\x4b\x57\x69\x19\ \x56\x2f\xfe\xf1\x4d\x9c\x3e\x7f\xca\x90\x9f\xe5\xcc\xc7\x63\xab\ \x7f\x83\xad\x8f\xd5\xa3\xfd\xb5\x5d\xd8\xf1\x8b\x9d\x86\x59\xad\ \x27\xfc\x07\xd0\xda\xdf\x70\x45\xf9\x75\x2b\xb4\x58\xcc\x3b\x1f\ \xd7\xc3\x1f\x8a\x6d\x80\x3d\x99\xdd\x7f\x49\x5d\xc6\x5d\x50\x96\ \x8e\xa2\x59\x76\x48\x22\xc1\xbd\xbf\xfc\x7b\xc3\xfc\x96\x51\xcc\ \xc8\x99\x89\x59\x79\xb3\x0d\x39\x01\xfe\x3c\xfe\xab\xe5\x67\x51\ \xaf\xcd\x9e\xeb\x44\xc9\x5c\x27\x04\x41\xc5\x7d\x2f\xdc\xa7\xdb\ \x99\x8c\xe2\xdc\xf0\x69\x34\x74\x6e\x35\xb5\x4b\x0f\xc9\xcd\xd2\ \x67\x80\xb5\xd5\x39\xd8\xf9\xc1\x20\xda\x8f\xf6\xe1\xb6\xda\x0d\ \xf8\x70\xf3\x47\x93\xba\x65\x48\x0c\xe0\x3f\xbf\x78\x1c\x21\x51\ \x67\xbd\x91\xd1\x0e\xc4\xe8\x3c\xc6\xe3\xd4\xc9\x53\x58\xb9\xe9\ \x1b\x78\xa0\xfa\x1e\xdc\xb8\x78\x15\x96\xcd\xbd\x01\x61\x39\x80\ \x63\xbe\x16\x1c\xf3\xed\xc3\x51\xdf\x3e\x0c\x8b\x13\xcf\x4a\x00\ \x8c\x37\x5c\x3f\x09\xe0\xf9\xc8\x32\xbb\xc3\x82\xbb\x1e\x88\x3f\ \xeb\x5d\x96\x28\x76\xd5\x05\x70\xbe\x4f\xc2\x9a\x1b\xcb\xf1\xf6\ \x93\x6f\xc3\xe3\xf4\xc4\x7d\x9f\xee\xe0\x71\xbc\xfc\xc5\x3f\x63\ \x90\x1f\x88\xbb\xee\x64\xd0\xbe\x3f\x9c\xd3\x5c\xdb\x31\x14\xed\ \xda\x94\x44\x62\x6c\x76\x06\xeb\x37\xe4\xe2\xc6\x75\x59\xf8\xbc\ \xf5\x08\xca\xff\x61\x05\xb6\xee\x79\x2b\xe6\xfa\x7e\xb6\x0f\x6f\ \x1e\xfe\x57\xfc\x72\xd7\x0f\xa7\x5c\x3c\x33\x4c\x5d\x28\x8b\x01\ \xe6\x97\xb9\x70\xc7\xfd\x85\x28\x5f\xee\xc4\x53\xaf\x6f\xc6\x82\ \x1f\x94\x63\xe3\xcb\x0f\x19\x2e\x3a\x10\xaa\x62\xcb\x67\xf7\xa2\ \xf1\xcc\xff\x6a\xc3\x8d\x69\x86\x29\x8f\x05\xa6\x59\x19\x94\xce\ \x77\x62\x6d\x75\x0e\x06\x03\x2c\xde\xf8\x53\x1d\x9e\xdb\xaa\x9f\ \xec\x63\x61\xac\x58\x98\xb7\x74\x0a\x2d\x8c\x0f\x29\xdb\x2f\x6c\ \xb1\x00\xb3\x4a\xb5\x89\xfd\x8e\x2f\xf7\x18\x72\xab\xbc\xb7\x4d\ \x85\x49\x51\xa1\x28\x14\x94\x42\x77\xb9\x3b\xa5\x1b\xae\x4b\xe6\ \x6a\x73\xe6\xde\xde\x21\x9c\x3a\xaf\x9f\xa9\xba\xb4\xf8\x66\xd4\ \x2c\xbc\x3f\x25\xf9\x2f\x6c\x48\xe5\x8d\x4e\x9b\x4b\xa9\x80\x33\ \x4b\x1d\xb0\x5a\xb5\x99\xc0\x7f\xd7\xbd\x62\xc8\xbd\xfd\xda\x8d\ \xf8\x55\xf5\x47\xf8\xc7\x55\x2f\xe3\xf6\xb2\x87\xa7\xc6\x40\x00\ \x02\x47\x0c\x33\x04\x52\x2a\x60\x9a\x8d\x81\x77\x81\x16\x17\x79\ \xaf\xa1\x0e\xb2\x6a\x1c\x06\x60\x18\x0b\xae\x2d\x5a\x86\xf9\xb9\ \x57\x9c\xc8\x92\x34\xf0\x1c\x31\x5c\x4e\x4a\xf9\x99\x09\xcb\xab\ \x32\x91\xe1\xb1\xa2\x7f\x20\x84\x07\xfe\xe3\xfe\x54\x9b\x73\x09\ \x14\x85\x82\x0d\x29\x9b\x8c\x38\x29\x17\xd0\x66\x67\x50\xf5\x17\ \xd9\xb0\x58\x80\x3f\x7d\xda\x8c\x37\x76\xbd\x96\x6a\x93\xc6\x70\ \xbe\x57\x3a\xd8\xf4\x6c\xc7\x49\x23\x4e\xca\x05\x04\x80\xbc\x42\ \x1b\xd6\xd5\xe4\x20\x3b\x2f\x0d\x3f\xf9\xf5\x16\xfc\xdb\xfb\xcf\ \xa5\xfc\x8c\x04\x49\x24\x34\x18\x50\x1e\x32\xe3\x4d\x9b\x73\x9c\ \x8a\x67\x3b\x50\x5c\xe2\x40\x7f\x9f\x88\x6d\xad\x6f\xe1\xc3\xfd\ \xef\x63\xd1\xac\x85\x58\xb2\xb0\x12\x4b\xe7\x5d\x07\xc2\xa8\x60\ \xa5\x20\xfc\xec\x39\x74\x1b\xec\x56\x4f\x04\x64\x89\xd2\xce\xe3\ \xfc\xbd\xbb\x9f\x69\xd7\xdf\x5b\x31\x82\x69\x23\x20\x00\x80\x01\ \x8a\x4b\x34\x21\xb5\x6d\x38\x27\xd0\x1a\x3c\x81\xd6\xd6\x77\xa7\ \xcc\x04\x81\x27\x6a\xd7\x29\xe1\xc7\x8d\xff\xd2\xfe\x66\x2c\xfc\ \xe9\x25\x60\x8a\x40\x29\x30\x3c\xa4\x84\x2e\x5e\x90\xff\x47\x12\ \xc8\x13\x8d\x4f\xb7\xeb\x6f\x09\xb8\x0c\x5f\x2b\x01\x47\x4e\xb7\ \x94\x38\x56\xf5\x89\x02\x3d\x2d\x8b\xe4\x80\xaa\xd2\xcf\xd2\xdd\ \xd6\xfa\xf7\x1f\x3d\x68\x9e\xcc\x13\x05\x57\xa5\x80\x94\x02\x1c\ \xab\x4a\x5c\x98\xf8\xc5\x91\x83\x6b\x55\x85\x36\x38\x5d\x96\xfa\ \x8f\x36\x1d\x4a\xe8\xc1\xb5\x5f\x79\x01\xb5\xf3\x52\xc9\x45\x81\ \x1f\x13\xaa\xd1\x62\x61\x3e\xf9\xf4\xc9\xc3\xc1\xa9\x78\xbe\x91\ \x80\x93\x89\xb5\x24\x1c\x1c\xab\xca\x5c\x98\x8c\x1c\x2c\x4b\x0e\ \xaa\x0a\xdd\xc5\x30\xf8\x78\xc7\x4f\xdb\xcc\x53\x61\x93\x08\x23\ \x01\x5f\x03\x70\x37\x80\x25\x06\x9c\x84\x83\x67\x89\xc2\x86\x47\ \x4f\xe0\x25\x87\x14\x99\xee\x06\x83\xba\x86\x9f\xb5\x99\x67\xad\ \xa7\x00\xba\x02\x86\xb6\x77\x5d\x18\x39\x06\xf9\x03\x00\x37\xe9\ \xf1\x26\x0a\x9e\x25\x0a\xc7\xaa\x01\x81\x23\x5d\xe2\xa8\x50\xc0\ \xf6\x86\x9f\xb7\x25\xfc\xa8\xe2\x64\xc2\xf0\x1b\x18\xda\xde\x15\ \xf4\xd4\x78\x6f\x01\xf0\x2e\x80\x5b\x27\xf2\x80\x91\x13\x72\x47\ \x85\x3a\x2c\x4b\xb4\x89\x12\xba\xbd\xf1\xe9\xf6\xfe\x89\xdc\x6f\ \xba\xc1\xb4\x13\x09\x6d\xef\xe2\x3d\x35\xde\xdb\x01\xbc\x0e\xad\ \x49\x47\x85\xc0\x13\x95\x0d\xa9\x41\x81\x27\x5d\xa2\x40\xda\x14\ \x99\x36\x29\x32\xdd\xbe\xfb\x99\xf6\xde\x44\x1a\x3c\xdd\x10\x53\ \x2f\x1c\xda\xde\x25\x7b\x6a\xbc\x7f\x67\xb5\x82\x13\x78\xf2\x03\ \x36\xa4\x0e\x09\x3c\xe9\x91\x04\xd2\x2e\x49\xb4\x59\x55\xe8\xf6\ \xdd\xcf\xb4\x9f\x4d\xb2\xad\xd3\x12\xff\x0f\xd4\xc9\xcc\xde\x09\ \x31\x84\xf7\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x02\xff\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x10\x08\x02\x00\x00\x00\xf8\x62\xea\x0e\ \x00\x00\x02\xc6\x49\x44\x41\x54\x78\x5e\x2d\x94\x5b\x6e\x14\x31\ \x10\x45\xaf\x1f\xdd\x93\x87\x26\x3b\x61\x13\x6c\x82\x2c\x05\x09\ \x85\xf5\xc0\x17\x1f\x91\xf8\x60\x09\x2c\x01\x96\x00\x4a\x08\x93\ \x7e\xda\x2e\xd3\x07\x5b\xb2\x3c\xb7\xed\xaa\xba\xe5\x5b\x55\xe3\ \x7e\xff\xf8\xe4\x83\x8e\x25\x2f\xef\x24\xa7\x5a\xa5\xaa\x6a\x32\ \x93\x8a\x8a\xa9\x16\xf1\x79\xec\x19\x33\xe7\xe4\x3c\x27\xcd\x06\ \x50\xba\x57\x18\x15\x4f\x0a\x83\x42\x94\x8b\xba\x7f\x77\x1f\xe5\ \xb4\x5d\x7e\x1e\xa7\xde\xcb\x60\x92\x0b\x38\x94\x24\xcb\xca\x3b\ \x7b\x2d\x44\xb7\xa4\x92\x89\xee\xa3\x24\x61\x73\x2c\x0c\xb8\x75\ \x9c\x11\x74\xb8\xd6\xd5\x59\xe1\xa4\x8f\x0f\x0f\xd5\x14\x49\xdf\ \x6b\x7b\xf9\x1e\x07\xf9\xa1\xa7\xa0\x22\xdb\xb4\x4d\x4a\xb3\xd2\ \xda\x92\x85\xac\xac\x30\xf9\x08\x4d\x49\x4a\x0b\x87\x32\x59\x85\ \xd2\x7b\x72\x1f\x6f\x95\xee\xf4\xf5\xdb\xa3\x19\x0f\x8d\x3e\xca\ \x07\xd0\x7e\x79\x3c\xf0\xe9\x2c\x13\x49\xa5\x49\xeb\x93\xd6\xbf\ \x5a\x9e\xb5\xbd\x76\x11\xf6\x49\x79\xc3\xd8\xb2\x20\x98\x94\x93\ \xbc\x07\xd7\x8a\x2c\xa7\x3b\xd2\x1f\x6e\x39\x21\x90\x14\x11\x34\ \x70\x67\x41\xf1\x4a\x68\x35\x08\xb9\xb9\xee\xc5\xc8\x8b\x0a\x42\ \x69\x3f\xc0\x26\x09\x17\xcb\xec\x82\x09\x25\x11\x30\xe2\xbe\x47\ \xc8\x10\x16\x5f\x08\xc4\x93\x79\x84\xc2\x08\x46\x90\x4a\xc4\x7d\ \xd6\xf2\x87\xac\xab\xc0\x79\x26\x5f\x3c\x0d\x29\x9c\x47\x3d\x21\ \x9d\xd2\x84\x4b\x74\x94\x24\x9c\x90\x8e\xc7\xad\x70\x53\x03\x08\ \xbc\x58\x4e\x56\x10\x61\xbb\x68\x7d\x39\xa2\x03\xa8\x81\x61\x3d\ \x3f\xc1\x44\x6d\x33\x42\x43\x30\x37\x2f\x70\x2d\x00\x33\x82\xaa\ \xe2\x95\x56\x42\x21\x11\x46\xad\x6e\x99\x23\x42\x1f\xeb\xb9\xfb\ \x13\x55\xec\x14\x79\x07\xca\xa1\x80\x84\xb1\x0f\xc8\x32\xdc\x48\ \xb5\xe9\x86\x86\xbe\x35\x71\x81\x2f\x9a\x61\x1a\xbc\x6c\x04\x94\ \x0d\xe6\xfd\x42\xee\xfb\x2b\x5a\xf1\xa6\x05\x07\x1f\xa1\x2c\x49\ \x00\x4f\xd9\x54\x7b\xdc\x38\x8a\x11\xf2\x54\x51\xea\x1d\xc1\x51\ \x55\xac\xd6\x8a\x46\x2e\x56\xf0\xa7\xb5\x0d\x4c\x9b\x2e\xad\x23\ \x49\xb6\x4b\x81\x08\xec\x36\x62\x23\x75\xee\x10\x28\xcc\x70\xcb\ \x67\x97\xce\xc3\x11\xf9\x31\x59\xa6\x43\xbc\x27\x90\x25\xc8\x5a\ \xe5\x6b\xe5\x24\x2f\x90\x95\x95\xd4\xe4\xe0\xa8\x4e\xb6\x73\x9b\ \x92\xe4\x35\xde\xc8\x0d\xaa\x6a\xd5\x6e\x94\x3d\xa1\x48\xc3\x24\ \x5a\x65\xfa\x45\x0a\x96\x7b\x3d\x10\x77\x54\x0a\xca\x85\x39\xd8\ \xa7\x3e\x50\x88\x96\xb9\x95\xa3\x2a\xb5\x80\xd3\xcc\x5e\x79\x19\ \x41\xb9\x45\x15\x02\x46\xcb\xe8\x30\x3f\x43\x30\x9e\xb9\x2b\x3b\ \x59\xcb\x14\x22\x4b\x7d\x1a\xda\x28\xc1\x9d\x50\xb5\xff\x3d\xc4\ \x6b\x85\x13\x98\x96\x15\xb8\x71\x93\x62\xc0\x3e\xa2\x7b\xd6\x97\ \xcf\x4c\xf6\xe9\xdc\xa7\x54\x28\x40\xd6\xfb\x2c\xd2\xbf\x40\x69\ \xd6\x95\xad\x6d\x0c\x1d\xd8\x2f\x0a\x9b\xc2\xd4\xab\xc8\x1a\x60\ \x8a\x9d\x09\x02\x7d\x78\xff\xd0\x06\x2f\x8c\x30\x4b\x62\xfa\x33\ \xba\x1b\x93\xd5\x0b\x53\xba\x32\x92\x41\x46\x94\x91\x70\x2e\x61\ \x2f\x07\x06\x08\x62\x30\x25\x94\x7b\xfb\x46\xf2\x78\x49\x5d\x38\ \x80\x5a\x3b\x61\x41\x38\x74\x07\x34\x3b\xd2\xaf\xed\x05\x70\x74\ \x17\x34\x81\xc0\x35\x8e\xd0\x5b\xee\x1f\xb6\x84\x15\x24\xe2\x59\ \x92\x70\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0b\ \x05\x52\xbf\x27\ \x00\x71\ \x00\x74\x00\x2d\x00\x6c\x00\x6f\x00\x67\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x0f\x9e\x84\x47\ \x00\x62\ \x00\x72\x00\x69\x00\x63\x00\x6b\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x2e\x00\x00\x00\x00\x00\x01\x00\x00\x0e\x74\ " 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() PyQt5_gpl-5.10.1/examples/painting/basicdrawing/images/0000755000076500000240000000000013245231431023030 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/painting/basicdrawing/images/brick.png0000644000076500000240000000137713245231431024640 0ustar philstaff00000000000000‰PNG  IHDR øbêÆIDATx^-”[n1E¯Ý“‡&;al‚, …õÀ‘ø` ,–J“~Ú.Ó[²<·íªºå[Uã~ÿøäƒŽ%/ï$§Z¥ªj2“ŠŠ©ñyì3çä<'ÍPºWO ƒB”‹ºwå´]~§ÞË`’ 8”$ËÊ;{-D·¤’‰î£$as, ¸uœt¸ÖÕYá¤ÕIßk{ùù¡§ "Û´MJ³ÒÚ’…¬¬0ùMIJ ‡2Y…Ò{ro•îôõÛ£>ÊÐ~y<ðé,I¥Ië“Ö¿Zžµ½vöIyÃØ² ˜”“¼׊,§;Òn9!4pgAñJh5¹¹îÅÈ‹ Bi?À& Ëì‚ %0â¾GÈ_Ä“y„ÂFJÄ}Öò‡¬«Ày&_< )œG=!Ò„Kt”$œŽÇ­pS¼XNVa»h}9¢¨a=?ÁDm3BC07/p-3‚ªâ•VB!F­n™#Bë¹ûUìyÊ¡€„±È2ÜHµé††¾5q/ša¼l” æýBîû+Zñ¦¡,IOÙT{Ü8ŠòTQêÁQU¬ÖŠF.Vð§µ L›.­#I¶Kì6b#uî(ÌpËg—ÎÃù1Y¦C¼'%ÈZåkå$/••Ôäà¨N¶s›’ä5ÞÈ ªjÕn”=¡HÃ$ZeúE –{=wT Ê…9ا>Pˆ–¹•£*µ€ÓÌ^yA¹EFËè0?C0ž¹+;YË"K}Ú(ÁPµÿ=Äk…˜–¸q“bÀ>¢{Ö—ÏLöéܧT(@Öû,Ò¿@iÖ•­m Ø/ ›ÂÔ«È`Š }xÿÐ/Œ0Kbú3º“Õ Sº2’AF”‘p.a/b0%”{ûFòxI]8€Z;aA8t4;Ò¯ípt4À5ŽÐ[î¶„$âY’pIEND®B`‚PyQt5_gpl-5.10.1/examples/painting/basicdrawing/images/qt-logo.png0000644000076500000240000000716013245231431025124 0ustar philstaff00000000000000‰PNG  IHDRPPŽò­sBIT|dˆ pHYs==ŸÜ+êtEXtSoftwarewww.inkscape.org›î< íIDATxœí\ypÕþzFsi4ºË–5¾¾0Ž…ígQDLXv—°°6E*†bñ¶HÂb‹PÙ°[›„…bÙ lAÀ,µ‡Â²%°lÙ–äÛ²uY²g¬Ñh¦ïî÷öÖ1¶§»g¤0ùª\åyý½î_ú½~Çï÷C)E¼ðÔxËT¨ãpZ *–g,È̶z¬iŒÍfc`³[¨¢P‘çÔ~‘§Çe‰´È2Ý©*´iÏ–÷C§)˜XôÔx­žð €°X,*OGÅr7ìKL÷QŠpHåx–œrR’È~E¢ ŠB÷lé&ø)CLzj¼3üÀºÑ2»Ã‚ê;óàɲ&Ä¢R„CªÀ³ä‚(S’HÈ2ýL‘éŽ=[:„„<$ 0ÐSãõøÀŒÈòµÕÙ(™ëL¢iØ*ò¬êÒ)‰¤U–è.U¡Ÿ4×v„“n€ bðY¶°<7¬ÉL¦]¦ `êąU¿È“3’HÊÙ­(´¾¹¶cpªì0ÐSãý&€†È2·ÇŠ wçÃje’lÚÄ@)À…U™cÕAAö°,‘&E¦u͵ý<3›¬Ž,›·Ø…U7g%ÚŽ)Ǫ &']’@Úd‰ì‘Z×ülGÏDï©+ §Æ›€`,_qS&U¤OôyÓø â/@T÷yHº€ÇÛ9Þ‚ÛmÃÏ¿·x‘ðf—á§ë~?ÿ z‚Çuy¾ó2ÚZÂ`Ûžx™…c×ZúêñjËS¶ár$µîïq i Ãàõ§‹ëJ¯Ÿô=³xdÕ¿#Þ­Ëñ hͼ°Ð}‰xÉ@Ò¤Z÷†@TÝP†[*kL눲„÷ö¾‹~hÈËvæãe›Á ú¬Èׯ X±pA¼fǤ ØyŒÇР‚4›¿ÝøkSþþs;°¥ñûxiW-îÙü0Ê´o4þN—_Q´«K7\QN…ï‚ X[Y5ñˆIRж}Újûw֬Ă¢E†üþÐüþ@-|l/æ_ãÂÍßÍEwOþªû;¿Ð­W½ð¾+¼0pQ*k+L¹òÎI¾‰9’" o@Ǫ€Ö8µ§™çXvL»1—•®ÀáÔn980çÆà²<ê&^ §¶ía0lþBk ¨Ž h,öUãN§Ö„‡Cæ;ì&Rhs ÝD@îjñ@ûHqæ³ {š±(jĸÒí0Î˾j<Ð12”a9óÍEfß@%bfãrê ((,Uc30ÁHšòœþ:ß(i.Ã)˜$Ž{`aV./h’+“L$\@OÖèÌAÅÀÐ9S~i–~ü"àÿ#|³b½.ï„¿5 ‹„ XP<² Jm_¾gÊ÷f—é^ôkmØã±cná|]ÞQß—ñ™@$\Àt·n6”i8¸Ë”?'G_À€odu{–~‚¥Çü-1ÛgÖóÇ‹¤L G¼ðÐIý´QÄâ×Í×O éž+µ1D×ffê{òDKçióÖ¾¾ Žô¶r³Q_*8¨Œu"5+¾£[ÿXDóµ;4e‰BRĨü¼ôb8Ó·U-)Îô:àr[A)Å ï½`Êÿ›ŠÇ®(;ø¥6_Z1w®ú[ݺG"LwkŸJ)NöG÷~ þª|.vfâô¾ ä¯ÅC•æÙczHJjÃ0˜·Ø…Ža|ÜÜ õÅp骬`%*g¬ÁáÝ€¾n}gØüîñWuëõ‡Îà¸ÿØowÆøîùã}Gu³a×ÎùÖnÏšPˆŽùõ.AÒÑW¤Ãfg–QûÎfSþ½×?‰²‚qä@ÍõA¬\:oÕ¾d˜·íè+  i6Ù¹ÚjÇ¡èaÍhˆÿØq$M@gºKWiV/þñMœ>ÊŸåÌÇc«ƒ­Õ£ýµ]Øñ‹†Y­'üÐÚßpEùu+´XÌ;×Êm€=™ÝI]Æ]P–Ž¢YvH"Á½¿ü{Ãü–QÌÈ™‰Yy³ 9þ<þ«ågQ¯ÍžëDÉ\'AÅ}/ܧۙŒâÜði4tn5µKÉÍÒg€µÕ9ØùÁ Úöá¶Ú øpóG“ºeH à?¿x!Qg½‘ÑÄè<ÆãÔÉSX¹éx úܸx–ͽa9€c¾óíÃQß> ‹ÏJŒ7\? àùÈ2»Ã‚»ˆ?ë]–(vÕp¾OšËñö“oÃãôÄ}Ÿîàq¼üÅ?cˆ»îdо?œÓ\Û1íÚ”Dblvë7äâÆuYø¼õÊÿa¶îy+æú~¶oþWür×§\<3L](‹æ—¹pÇý…(_îÄS¯oÆ‚”cãË.:ªbËg÷¢ñÌÿjÃi†)¦Y”Îwbmu,ÞøSžÛªŸìca¬X˜·t -Œ)Û/l±³Jµ‰ýŽ/÷r«¼·M…IQ¡(”Bw¹;¥®KæjsæÞÞ!œ:¯Ÿ©º´øfÔ,¼?%ù/lHåN›K©€3K°Zµ™À×½bȽýÚøUõGøÇU/ãö²‡§Æ@G 3R*`šwy¯¡²j` ®-Z†ù¹WœÈ’4ð1\NJù™ Ë«2‘á±¢ „þãþT›s …‚ )›Œ8)ÐfgPõÙ°X€?}ÚŒ7v½–j“Æp¾W:ØôlÇI#NÊ€¼BÖÕä ;/ ?ùõüÛûÏ¥üŒI$4P2ãM›sœŠg;P\â@Ÿˆm­oáÃýïcѬ…X²°Kç]¨`¥ üì9tìVOd‰ÒÎãü½»Ÿi×ß[1‚i# €ŠK4!µm8'Ð<ÖÖw§Ì'j×)áÇÿÒþf,üé%`Š@)0<¤„.^ÿGÈO·ëo ¸ _+GN·”8Võ‰=-‹ä€ªÒÏÒÝÖú÷=hžÌW¥€”«J\˜øÅ‘ƒkU…68]–ú6JèÁµ_yµóRÉEªÑba>ùôÉÃÁ©x¾‘€“‰µ$«Ê\˜Œ,Kª ÝÅ0øxÇOÛÌSa“#_p7€%œ„ƒg‰Â†GOà%‡™îƒº†Ÿµ™g­§º†¶w]9ù7éñ& ž% Ǫ#]â¨PÀö†Ÿ·%ü¨âdÂðÚÞôÔxoð.€['ò€‘rG…:,K´‰º½ñéöþ‰ÜoºÁ´ mïâ=5ÞÛ¼­IG…À• ©A']¢@Ú™6)2ݾû™öÞD<ÝS/ÚÞ%{j¼gµ‚xò6¤ <é‘Ò.I´YUèöÝÏ´ŸM²­ÓÿÔÉÌÞ 1„÷IEND®B`‚PyQt5_gpl-5.10.1/examples/painting/concentriccircles.py0000755000076500000240000001171513245231431023204 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QRect, QRectF, QSize, Qt, QTimer from PyQt5.QtGui import QColor, QPainter, QPalette, QPen from PyQt5.QtWidgets import (QApplication, QFrame, QGridLayout, QLabel, QSizePolicy, QWidget) class CircleWidget(QWidget): def __init__(self, parent=None): super(CircleWidget, self).__init__(parent) self.floatBased = False self.antialiased = False self.frameNo = 0 self.setBackgroundRole(QPalette.Base) self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) def setFloatBased(self, floatBased): self.floatBased = floatBased self.update() def setAntialiased(self, antialiased): self.antialiased = antialiased self.update() def minimumSizeHint(self): return QSize(50, 50) def sizeHint(self): return QSize(180, 180) def nextAnimationFrame(self): self.frameNo += 1 self.update() def paintEvent(self, event): painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing, self.antialiased) painter.translate(self.width() / 2, self.height() / 2) for diameter in range(0, 256, 9): delta = abs((self.frameNo % 128) - diameter / 2) alpha = 255 - (delta * delta) / 4 - diameter if alpha > 0: painter.setPen(QPen(QColor(0, diameter / 2, 127, alpha), 3)) if self.floatBased: painter.drawEllipse(QRectF(-diameter / 2.0, -diameter / 2.0, diameter, diameter)) else: painter.drawEllipse(QRect(-diameter / 2, -diameter / 2, diameter, diameter)) class Window(QWidget): def __init__(self): super(Window, self).__init__() aliasedLabel = self.createLabel("Aliased") antialiasedLabel = self.createLabel("Antialiased") intLabel = self.createLabel("Int") floatLabel = self.createLabel("Float") layout = QGridLayout() layout.addWidget(aliasedLabel, 0, 1) layout.addWidget(antialiasedLabel, 0, 2) layout.addWidget(intLabel, 1, 0) layout.addWidget(floatLabel, 2, 0) timer = QTimer(self) for i in range(2): for j in range(2): w = CircleWidget() w.setAntialiased(j != 0) w.setFloatBased(i != 0) timer.timeout.connect(w.nextAnimationFrame) layout.addWidget(w, i + 1, j + 1) timer.start(100) self.setLayout(layout) self.setWindowTitle("Concentric Circles") def createLabel(self, text): label = QLabel(text) label.setAlignment(Qt.AlignCenter) label.setMargin(2) label.setFrameStyle(QFrame.Box | QFrame.Sunken) return label if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/painting/painterpaths.py0000755000076500000240000002541313245231431022212 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from math import cos, pi, sin from PyQt5.QtCore import QSize, Qt from PyQt5.QtGui import (QBrush, QColor, QFont, QLinearGradient, QPainter, QPainterPath, QPalette, QPen) from PyQt5.QtWidgets import (QApplication, QComboBox, QGridLayout, QLabel, QSizePolicy, QSpinBox, QWidget) class RenderArea(QWidget): def __init__(self, path, parent=None): super(RenderArea, self).__init__(parent) self.path = path self.penWidth = 1 self.rotationAngle = 0 self.setBackgroundRole(QPalette.Base) def minimumSizeHint(self): return QSize(50, 50) def sizeHint(self): return QSize(100, 100) def setFillRule(self, rule): self.path.setFillRule(rule) self.update() def setFillGradient(self, color1, color2): self.fillColor1 = color1 self.fillColor2 = color2 self.update() def setPenWidth(self, width): self.penWidth = width self.update() def setPenColor(self, color): self.penColor = color self.update() def setRotationAngle(self, degrees): self.rotationAngle = degrees self.update() def paintEvent(self, event): painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) painter.scale(self.width() / 100.0, self.height() / 100.0) painter.translate(50.0, 50.0) painter.rotate(-self.rotationAngle) painter.translate(-50.0, -50.0) painter.setPen( QPen(self.penColor, self.penWidth, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin)) gradient = QLinearGradient(0, 0, 0, 100) gradient.setColorAt(0.0, self.fillColor1) gradient.setColorAt(1.0, self.fillColor2) painter.setBrush(QBrush(gradient)) painter.drawPath(self.path) class Window(QWidget): NumRenderAreas = 9 def __init__(self): super(Window, self).__init__() rectPath = QPainterPath() rectPath.moveTo(20.0, 30.0) rectPath.lineTo(80.0, 30.0) rectPath.lineTo(80.0, 70.0) rectPath.lineTo(20.0, 70.0) rectPath.closeSubpath() roundRectPath = QPainterPath() roundRectPath.moveTo(80.0, 35.0) roundRectPath.arcTo(70.0, 30.0, 10.0, 10.0, 0.0, 90.0) roundRectPath.lineTo(25.0, 30.0) roundRectPath.arcTo(20.0, 30.0, 10.0, 10.0, 90.0, 90.0) roundRectPath.lineTo(20.0, 65.0) roundRectPath.arcTo(20.0, 60.0, 10.0, 10.0, 180.0, 90.0) roundRectPath.lineTo(75.0, 70.0) roundRectPath.arcTo(70.0, 60.0, 10.0, 10.0, 270.0, 90.0) roundRectPath.closeSubpath() ellipsePath = QPainterPath() ellipsePath.moveTo(80.0, 50.0) ellipsePath.arcTo(20.0, 30.0, 60.0, 40.0, 0.0, 360.0) piePath = QPainterPath() piePath.moveTo(50.0, 50.0) piePath.lineTo(65.0, 32.6795) piePath.arcTo(20.0, 30.0, 60.0, 40.0, 60.0, 240.0) piePath.closeSubpath() polygonPath = QPainterPath() polygonPath.moveTo(10.0, 80.0) polygonPath.lineTo(20.0, 10.0) polygonPath.lineTo(80.0, 30.0) polygonPath.lineTo(90.0, 70.0) polygonPath.closeSubpath() groupPath = QPainterPath() groupPath.moveTo(60.0, 40.0) groupPath.arcTo(20.0, 20.0, 40.0, 40.0, 0.0, 360.0) groupPath.moveTo(40.0, 40.0) groupPath.lineTo(40.0, 80.0) groupPath.lineTo(80.0, 80.0) groupPath.lineTo(80.0, 40.0) groupPath.closeSubpath() textPath = QPainterPath() timesFont = QFont('Times', 50) timesFont.setStyleStrategy(QFont.ForceOutline) textPath.addText(10, 70, timesFont, "Qt") bezierPath = QPainterPath() bezierPath.moveTo(20, 30) bezierPath.cubicTo(80, 0, 50, 50, 80, 80) starPath = QPainterPath() starPath.moveTo(90, 50) for i in range(1, 5): starPath.lineTo(50 + 40 * cos(0.8 * i * pi), 50 + 40 * sin(0.8 * i * pi)) starPath.closeSubpath() self.renderAreas = [RenderArea(rectPath), RenderArea(roundRectPath), RenderArea(ellipsePath), RenderArea(piePath), RenderArea(polygonPath), RenderArea(groupPath), RenderArea(textPath), RenderArea(bezierPath), RenderArea(starPath)] assert len(self.renderAreas) == 9 self.fillRuleComboBox = QComboBox() self.fillRuleComboBox.addItem("Odd Even", Qt.OddEvenFill) self.fillRuleComboBox.addItem("Winding", Qt.WindingFill) fillRuleLabel = QLabel("Fill &Rule:") fillRuleLabel.setBuddy(self.fillRuleComboBox) self.fillColor1ComboBox = QComboBox() self.populateWithColors(self.fillColor1ComboBox) self.fillColor1ComboBox.setCurrentIndex( self.fillColor1ComboBox.findText("mediumslateblue")) self.fillColor2ComboBox = QComboBox() self.populateWithColors(self.fillColor2ComboBox) self.fillColor2ComboBox.setCurrentIndex( self.fillColor2ComboBox.findText("cornsilk")) fillGradientLabel = QLabel("&Fill Gradient:") fillGradientLabel.setBuddy(self.fillColor1ComboBox) fillToLabel = QLabel("to") fillToLabel.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.penWidthSpinBox = QSpinBox() self.penWidthSpinBox.setRange(0, 20) penWidthLabel = QLabel("&Pen Width:") penWidthLabel.setBuddy(self.penWidthSpinBox) self.penColorComboBox = QComboBox() self.populateWithColors(self.penColorComboBox) self.penColorComboBox.setCurrentIndex( self.penColorComboBox.findText('darkslateblue')) penColorLabel = QLabel("Pen &Color:") penColorLabel.setBuddy(self.penColorComboBox) self.rotationAngleSpinBox = QSpinBox() self.rotationAngleSpinBox.setRange(0, 359) self.rotationAngleSpinBox.setWrapping(True) self.rotationAngleSpinBox.setSuffix(u'\N{DEGREE SIGN}') rotationAngleLabel = QLabel("&Rotation Angle:") rotationAngleLabel.setBuddy(self.rotationAngleSpinBox) self.fillRuleComboBox.activated.connect(self.fillRuleChanged) self.fillColor1ComboBox.activated.connect(self.fillGradientChanged) self.fillColor2ComboBox.activated.connect(self.fillGradientChanged) self.penColorComboBox.activated.connect(self.penColorChanged) for i in range(Window.NumRenderAreas): self.penWidthSpinBox.valueChanged.connect(self.renderAreas[i].setPenWidth) self.rotationAngleSpinBox.valueChanged.connect(self.renderAreas[i].setRotationAngle) topLayout = QGridLayout() for i in range(Window.NumRenderAreas): topLayout.addWidget(self.renderAreas[i], i / 3, i % 3) mainLayout = QGridLayout() mainLayout.addLayout(topLayout, 0, 0, 1, 4) mainLayout.addWidget(fillRuleLabel, 1, 0) mainLayout.addWidget(self.fillRuleComboBox, 1, 1, 1, 3) mainLayout.addWidget(fillGradientLabel, 2, 0) mainLayout.addWidget(self.fillColor1ComboBox, 2, 1) mainLayout.addWidget(fillToLabel, 2, 2) mainLayout.addWidget(self.fillColor2ComboBox, 2, 3) mainLayout.addWidget(penWidthLabel, 3, 0) mainLayout.addWidget(self.penWidthSpinBox, 3, 1, 1, 3) mainLayout.addWidget(penColorLabel, 4, 0) mainLayout.addWidget(self.penColorComboBox, 4, 1, 1, 3) mainLayout.addWidget(rotationAngleLabel, 5, 0) mainLayout.addWidget(self.rotationAngleSpinBox, 5, 1, 1, 3) self.setLayout(mainLayout) self.fillRuleChanged() self.fillGradientChanged() self.penColorChanged() self.penWidthSpinBox.setValue(2) self.setWindowTitle("Painter Paths") def fillRuleChanged(self): rule = Qt.FillRule(self.currentItemData(self.fillRuleComboBox)) for i in range(Window.NumRenderAreas): self.renderAreas[i].setFillRule(rule) def fillGradientChanged(self): color1 = QColor(self.currentItemData(self.fillColor1ComboBox)) color2 = QColor(self.currentItemData(self.fillColor2ComboBox)) for i in range(Window.NumRenderAreas): self.renderAreas[i].setFillGradient(color1, color2) def penColorChanged(self): color = QColor(self.currentItemData(self.penColorComboBox)) for i in range(Window.NumRenderAreas): self.renderAreas[i].setPenColor(color) def populateWithColors(self, comboBox): colorNames = QColor.colorNames() for name in colorNames: comboBox.addItem(name, name) def currentItemData(self, comboBox): return comboBox.itemData(comboBox.currentIndex()) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/painting/README0000644000076500000240000000165113245231431020011 0ustar philstaff00000000000000PyQt's painting system is able to render vector graphics, images, and outline font-based text with sub-pixel accuracy using anti-aliasing to improve rendering quality. These examples show the most common techniques that are used when painting with PyQt, from basic concepts such as drawing simple primitives to the use of transformations. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/painting/svgviewer/0000755000076500000240000000000013245231431021147 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/painting/svgviewer/files/0000755000076500000240000000000013245231431022251 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/painting/svgviewer/files/bubbles.svg0000644000076500000240000002356313245231431024421 0ustar philstaff00000000000000 Spheres Semi-transparent bubbles on a colored background. PyQt5_gpl-5.10.1/examples/painting/svgviewer/files/cubic.svg0000644000076500000240000001224013245231431024056 0ustar philstaff00000000000000 Example cubic02 - cubic Bezier commands in path data Picture showing examples of "C" and "S" commands, along with annotations showing the control points and end points M100,200 C100,100 400,100 400,200 M100,500 C25,400 475,400 400,500 M100,800 C175,700 325,700 400,800 M600,200 C675,100 975,100 900,200 M600,500 C600,350 900,650 900,500 M600,800 C625,700 725,700 750,800 S875,900 900,800 PyQt5_gpl-5.10.1/examples/painting/svgviewer/files/spheres.svg0000644000076500000240000000606613245231431024453 0ustar philstaff00000000000000 Spheres Gradient filled spheres with different colors. PyQt5_gpl-5.10.1/examples/painting/svgviewer/svgviewer.py0000755000076500000240000002476313245231431023561 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QFile, QSize, Qt from PyQt5.QtGui import QBrush, QColor, QImage, QPainter, QPixmap, QPen from PyQt5.QtWidgets import (QActionGroup, QApplication, QFileDialog, QGraphicsItem, QGraphicsRectItem, QGraphicsScene, QGraphicsView, QMainWindow, QMenu, QMessageBox, QWidget) from PyQt5.QtOpenGL import QGL, QGLFormat, QGLWidget from PyQt5.QtSvg import QGraphicsSvgItem import svgviewer_rc class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.currentPath = '' self.view = SvgView() fileMenu = QMenu("&File", self) openAction = fileMenu.addAction("&Open...") openAction.setShortcut("Ctrl+O") quitAction = fileMenu.addAction("E&xit") quitAction.setShortcut("Ctrl+Q") self.menuBar().addMenu(fileMenu) viewMenu = QMenu("&View", self) self.backgroundAction = viewMenu.addAction("&Background") self.backgroundAction.setEnabled(False) self.backgroundAction.setCheckable(True) self.backgroundAction.setChecked(False) self.backgroundAction.toggled.connect(self.view.setViewBackground) self.outlineAction = viewMenu.addAction("&Outline") self.outlineAction.setEnabled(False) self.outlineAction.setCheckable(True) self.outlineAction.setChecked(True) self.outlineAction.toggled.connect(self.view.setViewOutline) self.menuBar().addMenu(viewMenu) rendererMenu = QMenu("&Renderer", self) self.nativeAction = rendererMenu.addAction("&Native") self.nativeAction.setCheckable(True) self.nativeAction.setChecked(True) if QGLFormat.hasOpenGL(): self.glAction = rendererMenu.addAction("&OpenGL") self.glAction.setCheckable(True) self.imageAction = rendererMenu.addAction("&Image") self.imageAction.setCheckable(True) if QGLFormat.hasOpenGL(): rendererMenu.addSeparator() self.highQualityAntialiasingAction = rendererMenu.addAction("&High Quality Antialiasing") self.highQualityAntialiasingAction.setEnabled(False) self.highQualityAntialiasingAction.setCheckable(True) self.highQualityAntialiasingAction.setChecked(False) self.highQualityAntialiasingAction.toggled.connect(self.view.setHighQualityAntialiasing) rendererGroup = QActionGroup(self) rendererGroup.addAction(self.nativeAction) if QGLFormat.hasOpenGL(): rendererGroup.addAction(self.glAction) rendererGroup.addAction(self.imageAction) self.menuBar().addMenu(rendererMenu) openAction.triggered.connect(self.openFile) quitAction.triggered.connect(QApplication.instance().quit) rendererGroup.triggered.connect(self.setRenderer) self.setCentralWidget(self.view) self.setWindowTitle("SVG Viewer") def openFile(self, path=None): if not path: path, _ = QFileDialog.getOpenFileName(self, "Open SVG File", self.currentPath, "SVG files (*.svg *.svgz *.svg.gz)") if path: svg_file = QFile(path) if not svg_file.exists(): QMessageBox.critical(self, "Open SVG File", "Could not open file '%s'." % path) self.outlineAction.setEnabled(False) self.backgroundAction.setEnabled(False) return self.view.openFile(svg_file) if not path.startswith(':/'): self.currentPath = path self.setWindowTitle("%s - SVGViewer" % self.currentPath) self.outlineAction.setEnabled(True) self.backgroundAction.setEnabled(True) self.resize(self.view.sizeHint() + QSize(80, 80 + self.menuBar().height())) def setRenderer(self, action): if QGLFormat.hasOpenGL(): self.highQualityAntialiasingAction.setEnabled(False) if action == self.nativeAction: self.view.setRenderer(SvgView.Native) elif action == self.glAction: if QGLFormat.hasOpenGL(): self.highQualityAntialiasingAction.setEnabled(True) self.view.setRenderer(SvgView.OpenGL) elif action == self.imageAction: self.view.setRenderer(SvgView.Image) class SvgView(QGraphicsView): Native, OpenGL, Image = range(3) def __init__(self, parent=None): super(SvgView, self).__init__(parent) self.renderer = SvgView.Native self.svgItem = None self.backgroundItem = None self.outlineItem = None self.image = QImage() self.setScene(QGraphicsScene(self)) self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse) self.setDragMode(QGraphicsView.ScrollHandDrag) self.setViewportUpdateMode(QGraphicsView.FullViewportUpdate) # Prepare background check-board pattern. tilePixmap = QPixmap(64, 64) tilePixmap.fill(Qt.white) tilePainter = QPainter(tilePixmap) color = QColor(220, 220, 220) tilePainter.fillRect(0, 0, 32, 32, color) tilePainter.fillRect(32, 32, 32, 32, color) tilePainter.end() self.setBackgroundBrush(QBrush(tilePixmap)) def drawBackground(self, p, rect): p.save() p.resetTransform() p.drawTiledPixmap(self.viewport().rect(), self.backgroundBrush().texture()) p.restore() def openFile(self, svg_file): if not svg_file.exists(): return s = self.scene() if self.backgroundItem: drawBackground = self.backgroundItem.isVisible() else: drawBackground = False if self.outlineItem: drawOutline = self.outlineItem.isVisible() else: drawOutline = True s.clear() self.resetTransform() self.svgItem = QGraphicsSvgItem(svg_file.fileName()) self.svgItem.setFlags(QGraphicsItem.ItemClipsToShape) self.svgItem.setCacheMode(QGraphicsItem.NoCache) self.svgItem.setZValue(0) self.backgroundItem = QGraphicsRectItem(self.svgItem.boundingRect()) self.backgroundItem.setBrush(Qt.white) self.backgroundItem.setPen(QPen(Qt.NoPen)) self.backgroundItem.setVisible(drawBackground) self.backgroundItem.setZValue(-1) self.outlineItem = QGraphicsRectItem(self.svgItem.boundingRect()) outline = QPen(Qt.black, 2, Qt.DashLine) outline.setCosmetic(True) self.outlineItem.setPen(outline) self.outlineItem.setBrush(QBrush(Qt.NoBrush)) self.outlineItem.setVisible(drawOutline) self.outlineItem.setZValue(1) s.addItem(self.backgroundItem) s.addItem(self.svgItem) s.addItem(self.outlineItem) s.setSceneRect(self.outlineItem.boundingRect().adjusted(-10, -10, 10, 10)) def setRenderer(self, renderer): self.renderer = renderer if self.renderer == SvgView.OpenGL: if QGLFormat.hasOpenGL(): self.setViewport(QGLWidget(QGLFormat(QGL.SampleBuffers))) else: self.setViewport(QWidget()) def setHighQualityAntialiasing(self, highQualityAntialiasing): if QGLFormat.hasOpenGL(): self.setRenderHint(QPainter.HighQualityAntialiasing, highQualityAntialiasing) def setViewBackground(self, enable): if self.backgroundItem: self.backgroundItem.setVisible(enable) def setViewOutline(self, enable): if self.outlineItem: self.outlineItem.setVisible(enable) def paintEvent(self, event): if self.renderer == SvgView.Image: if self.image.size() != self.viewport().size(): self.image = QImage(self.viewport().size(), QImage.Format_ARGB32_Premultiplied) imagePainter = QPainter(self.image) QGraphicsView.render(self, imagePainter) imagePainter.end() p = QPainter(self.viewport()) p.drawImage(0, 0, self.image) else: super(SvgView, self).paintEvent(event) def wheelEvent(self, event): factor = pow(1.2, event.delta() / 240.0) self.scale(factor, factor) event.accept() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() if len(sys.argv) == 2: window.openFile(sys.argv[1]) else: window.openFile(':/files/bubbles.svg') window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/painting/svgviewer/svgviewer.qrc0000644000076500000240000000025413245231431023700 0ustar philstaff00000000000000 files/bubbles.svg files/cubic.svg files/spheres.svg PyQt5_gpl-5.10.1/examples/painting/svgviewer/svgviewer_rc.py0000644000076500000240000003344413245231431024236 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Tue May 14 10:02:47 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x03\x58\ \x00\ \x00\x14\xa0\x78\x9c\xb5\x98\x6f\x6f\xa2\x40\x10\xc6\xdf\xfb\x29\ \xe6\xf6\xde\xdc\x25\x52\x11\xf9\x7b\x51\x9b\x94\xdc\xcb\x4b\x4c\ \x9a\xdc\x7b\x0a\xab\x6c\x0e\xc1\xc0\xb6\xda\xfb\xf4\x37\xbb\xeb\ \xd2\xd6\x03\x6d\x65\x4b\x22\x15\x2b\xbf\x79\x66\xe6\x61\x19\x99\ \xdf\x1e\xb6\x05\x3c\xd1\xba\x61\x55\xb9\x20\xd3\x1b\x9b\x40\xc3\ \x93\x32\x4b\x8a\xaa\xa4\x0b\x52\x56\xe4\x76\x39\x9a\x37\x4f\x1b\ \xd8\xb3\x8c\xe7\xf8\x15\x3b\xdd\x12\xc8\x29\xdb\xe4\x5c\x1f\x3d\ \x31\xba\xbf\xab\x0e\x0b\x62\x83\x0d\x53\xdb\x56\x3b\x32\x02\xb1\ \x61\x80\xb2\x59\x90\x9c\xf3\xdd\x8f\xc9\x64\xbf\xdf\xdf\xec\x67\ \x37\x55\xbd\x99\x38\xf8\x9d\x09\x92\xc9\xeb\xf8\x0e\x81\x87\xa4\ \xa1\xab\xba\x5a\xb3\x02\x05\x70\x56\x3e\x93\x25\x92\xe6\x9c\xf1\ \x82\x2e\x7f\x1e\x92\xed\xae\xa0\x90\x3e\x3e\xb0\xd4\x76\xc0\x52\ \xef\xe0\x8e\xfe\x65\xb4\x86\xb4\xda\x6e\x51\x7d\x03\xac\x84\x5d\ \xc2\x73\xc8\x12\x9e\xcc\x27\xea\x5c\x41\xc9\x68\x93\x2e\x57\x2c\ \xe5\x8f\x35\x85\x26\xaf\xf6\xac\xdc\x00\x55\xd0\x06\xaa\x35\x90\ \x98\x00\x12\x80\xdc\x93\x96\x36\x56\x99\xe0\x26\xca\x22\x4a\x81\ \xe4\xa4\x2c\x2b\x9e\x70\xd4\xdd\xb4\x20\x9e\xa3\xb2\xaa\xe4\x75\ \x55\xc0\xae\x62\x25\x6f\x5e\xce\x44\x26\xc5\x97\xfa\x78\x3e\x91\ \x42\x46\x42\x52\x4d\x53\x0e\x98\x6d\x21\xca\x5d\x52\xd1\x80\xba\ \xfa\x83\xb9\x3f\x14\x8f\xed\x91\xa5\xcb\x4f\xe0\x20\xf7\xcf\x72\ \x7f\xfc\x34\x8a\xc2\x97\x9e\xc8\x83\x89\x62\x7f\xb1\x2c\x58\x89\ \x3a\x4c\xc1\xb2\x64\x01\x76\x55\xf1\x5c\xb0\x92\x76\x46\xfc\x1a\ \xca\xed\x34\x28\x36\x45\xc9\x16\x0d\xb7\xc7\x8e\x6a\xf0\x18\x5f\ \x32\xd0\x70\xaa\xab\x68\xe0\x2a\x7a\x4b\x15\xca\xbb\x88\x35\xcd\ \x4e\x69\x1e\x81\x6c\x41\x7e\x69\x7d\xf1\xf4\x15\xb2\x03\x9d\xb2\ \x3a\x2d\x3e\x2a\x37\x3d\xc8\x02\xe0\x1b\xac\xbe\x84\xd5\xe2\x83\ \xc1\x4c\xf7\x22\x33\x2d\x92\x06\xeb\x14\xf3\x62\x25\x4a\x76\x22\ \x65\xfa\xa1\xd3\xdc\xfe\xd3\x38\x3d\x70\x10\x3b\x2b\x29\xd3\xbc\ \xc2\xff\x6d\x59\x96\x15\x98\xc8\x1a\x5d\x6d\x35\xec\x2f\xe6\xe2\ \x38\xc7\xc3\x75\xb2\x65\x05\x72\x7e\xd3\x3a\x4b\xca\x44\x3a\xd3\ \xf1\x6c\xe9\x4d\x27\xf0\xc8\xf2\x62\x37\xf0\xca\xc4\x60\x27\x56\ \x75\x0c\x5a\xd5\xc3\x58\x8e\x37\x76\xcd\x39\x35\x90\x34\x99\x80\ \x37\xd8\xa9\x42\x5e\xec\x1c\x89\xdd\xe4\xe1\x46\xf5\x3e\xc1\xa8\ \x17\x98\x27\x14\x1d\x24\x95\x06\x51\x04\xf7\x6a\x02\x16\xaa\x0f\ \x61\xce\xbf\x5e\xeb\xdf\x33\x3d\xea\xb4\xef\xcc\xa0\x7d\x43\xb1\ \xd2\x62\xcc\xc0\x98\x7f\x67\x8e\xa4\xc9\x0c\xc2\xc1\xfe\x0d\xe5\ \xb5\xad\x04\x42\x0f\x7a\xb8\x81\xc3\x4f\x30\xf0\x05\xe6\x19\xfb\ \x4d\xb5\xfd\x82\xab\x11\x33\xa7\x17\x61\xce\xc1\x61\xeb\xe0\x73\ \x5d\xea\xb4\xb0\x6b\xc8\xc2\xfe\x71\xf9\xf7\x31\xb6\xb9\x61\x21\ \x52\x34\x88\x06\x0f\x0b\x5a\x5f\xec\x6b\x64\x37\xfa\x6a\xbb\xf9\ \x9f\x30\x2c\x44\xef\x64\x9e\xf1\x9f\xaf\x2d\xdc\x3b\x38\x5c\x44\ \x44\xfd\x88\xe1\x16\x0e\xde\x0c\x11\x97\xba\xd4\x69\x61\xcf\xa0\ \x85\xc5\x1d\x40\xfc\x9d\x79\xc6\x2c\x8c\x34\xdf\x53\x19\x0c\x9b\ \x22\xb4\xbe\xf8\x28\x10\x7a\xd0\xc3\x2d\x6c\x70\x8c\x88\x86\x8f\ \x11\xad\x2c\xd9\x94\xeb\x2c\xac\x11\xfe\x7f\x08\x73\x16\xf6\x5a\ \x0b\x9f\xeb\x52\xa7\x85\x7d\xf8\x16\xcb\x9f\x8d\xf7\xfa\x87\xe8\ \x77\x83\xa6\x16\x37\x05\xdf\x31\x39\x5a\x04\xc7\x3b\x0b\xa6\xfe\ \x66\xb4\x18\x48\x55\x34\x08\xf0\xa2\x8f\x8c\x51\x43\x45\x93\xf5\ \x1f\x36\x06\xe9\x5a\xc6\xbe\x4e\xff\x6d\x19\xda\x07\x00\x17\xb6\ \xfb\x1e\x49\xc3\x2f\x5c\x83\xe3\x93\x74\xb5\x61\x66\x34\x7c\x24\ \xf3\xfb\xe7\xa9\xf7\x22\x82\xe1\x88\x50\xdf\x12\xa3\x8f\x14\xa7\ \xeb\x21\x8f\x7b\xd4\x74\x0a\x8c\xcc\xaf\x4f\x91\xab\xd7\xa7\x73\ \x26\xd6\xeb\x93\xd9\xd0\x62\x69\x3c\xb5\xbd\x8e\x34\x17\x4f\x06\ \x97\xa3\x7f\xef\x90\xc3\xc1\ \x00\x00\x02\xd2\ \x00\ \x00\x0c\x36\x78\x9c\xd5\x56\x7f\x6b\xdb\x30\x10\xfd\xbf\x9f\xe2\ \xa6\x32\x68\x20\x89\x7f\x24\x6e\x9b\xe2\xa4\xb0\x0d\xf6\xe7\x06\ \xa5\x1f\xc0\xb5\xcf\xb6\x88\x62\x05\x49\xad\x9b\x6f\xbf\x93\xe5\ \x39\x4e\x9b\x36\x4b\xe9\x0a\x15\x18\x4b\xf6\xdd\xd3\xbd\xa7\x83\ \xa7\xf8\xfa\x71\x25\xe0\x01\x95\xe6\xb2\x9a\xb3\x60\xec\x33\xd0\ \x26\xa9\xb2\x44\xc8\x0a\xe7\xac\x92\xec\x7a\x71\x12\xeb\x87\x02\ \x6a\x9e\x99\x72\xce\x2e\xd3\x15\x83\x12\x79\x51\x9a\x76\xf1\xc0\ \xb1\xfe\x26\x1f\xe7\xcc\x07\x1f\xa6\x7e\xf3\xb0\x13\xa0\x41\xd8\ \x95\x9e\xb3\xd2\x98\xf5\x95\xe7\xd5\x75\x3d\xae\x27\x63\xa9\x0a\ \x2f\xf4\x7d\xdf\x23\xd0\x5e\xd8\xd5\xa3\xe0\xd5\x72\x5f\x70\x30\ \x9b\xcd\xbc\xe6\xaf\xe7\xe2\xef\x12\x8d\xbf\x95\xcc\xb9\xa0\x0a\ \x0d\xaf\x36\xac\xcf\x20\x64\x0b\x8a\x8a\x0d\x37\x02\x17\x37\xeb\ \x12\x15\xea\xd8\x73\x4b\xfb\x23\x43\x9d\x2e\x7e\xaa\x24\xe3\x58\ \x19\x20\x10\x81\x19\x68\x17\x47\x24\x4d\x09\x19\xcf\x73\x5a\xd1\ \xdf\x54\x0a\xa9\xf4\x38\xf6\x9a\xa4\x66\x73\xca\xcf\xb5\x9b\xd2\ \xe2\xcb\x68\x04\xdf\x15\x26\x06\xc1\x22\x26\x02\x8a\x16\x59\x43\ \x2e\x15\x60\x92\x96\x90\x72\x95\x0a\x04\x23\x61\x95\x2c\xe9\x5d\ \xe2\x0a\x84\x94\x4b\x10\x7c\x89\x2d\x52\x33\xda\x2a\xc6\x30\x1a\ \x75\x3b\x38\xd8\xae\x5e\x9e\xcd\xd9\x9d\xb8\x47\x47\x8c\x75\xdb\ \xdd\x56\xdc\x90\xd4\xf7\x1a\xd5\xcd\x3a\x49\xf1\x57\x75\xab\x91\ \xf5\xc1\x7b\x23\xb5\x87\xc5\x20\xdd\x34\x2f\x45\xaa\xd1\x89\x41\ \x4e\x5f\x47\x91\x9d\x6c\xdc\x64\xd1\xa5\xc7\xda\xc8\x35\xc8\x3c\ \xd7\x48\xa7\xee\x7f\xb5\x4d\x22\xd7\xa3\x46\x9e\x39\xab\x4b\x6e\ \xa8\x14\xef\xa5\xf8\x8b\xe8\x49\x82\x25\xf0\x4a\x3c\x55\xf3\x24\ \xe1\x34\xa4\x31\x9d\xf6\x72\x62\x6f\x57\x98\xd7\xf4\x52\x98\x7d\ \x6a\xb9\xa8\xfe\xe3\xd4\x9a\x4e\xad\x5e\x6f\x54\xab\x50\x88\xd5\ \xa7\xd6\xab\x61\x70\x9c\x62\x41\x30\x99\x04\xc1\x1b\x15\xdb\xa0\ \x10\xb2\xfe\xd4\x92\x39\x0a\xc7\x76\x99\xed\xb3\x37\x6a\xa6\xcb\ \x24\x93\xb5\xfd\xf4\xff\x14\x3b\x42\xb0\x3b\x91\xa4\xcb\xf6\x93\ \xa4\xbd\xb9\xd9\xb4\x6e\x78\x84\x22\xad\xea\xbb\x20\xfe\x0e\xc8\ \x73\x89\xfa\x4e\xf2\x03\x73\x5e\x21\x24\xe0\xd4\xd9\x3a\x88\x33\ \x86\x1d\x5f\x68\x4d\x65\xab\x25\x6b\xbc\x8c\xe4\x53\xe2\xec\x74\ \x2b\xef\x80\xbd\x20\x55\x5b\x93\xf5\x36\x67\x68\x71\xd1\x22\x9c\ \x92\xfd\xe1\x6c\x66\x99\x28\xb9\x6c\x6e\x01\x15\xf1\x6a\xe3\x15\ \xa6\x06\x1c\xa2\x03\x6c\x2f\x06\xd6\xf5\xbb\x8b\xc1\xb4\xdb\x21\ \xf6\x8a\x1d\xf0\x4e\xa4\x83\xd0\xc1\x45\xb4\x1f\x3c\x0c\xa3\x67\ \xe0\x46\x25\x95\x26\xbd\x56\x74\x23\xb0\x53\x41\x96\x7c\x46\xd7\ \x8c\x21\xa1\x0c\xda\x36\x88\xa9\xb3\xa0\xb9\x48\x5c\x95\x0a\x73\ \x22\xfa\x57\xb9\xfd\xd9\xd1\x30\x8a\x06\xa0\xd3\x44\xe0\x19\xf5\ \xc2\xd0\x1f\x13\x54\xa7\x5b\x7b\x00\x3d\xd1\xb7\xbe\xfc\xba\xe8\ \x07\xaa\x9e\x04\xd1\x30\x9c\xfa\x5d\xd5\x3b\x61\xae\x1a\xaa\xc4\ \x55\xd3\xb5\xc3\x7b\x52\xdb\x4b\xae\x33\xd1\xc3\x0d\x55\xfc\x03\ \xc9\x4b\x7f\x18\xf6\x4e\x66\x2f\xc7\x73\x4b\xf2\xfc\x43\x59\xf6\ \xcc\xef\x7d\x78\x86\x51\x34\x9c\x84\x07\x88\x4e\xa8\xb2\xc9\x47\ \xd2\xec\x3b\xd6\x31\x3c\x63\x7b\x69\x5f\x9c\xfc\x01\x4d\xb4\x75\ \x0c\ \x00\x00\x05\xf1\ \x00\ \x00\x27\x73\x78\x9c\xdd\x9a\x6d\x6f\x9b\x48\x10\x80\x3f\x5f\x7e\ \xc5\x94\xea\xa4\x5a\xb2\xcd\xf2\x66\x9b\xd6\x4e\xa5\x26\x51\x75\ \x52\xaf\x8d\x9a\xe4\x4e\x77\xdf\xd6\xb0\xd8\x28\x18\x2c\xc0\x71\ \xdc\x5f\x7f\xb3\xcb\xbb\x63\xc7\x90\x92\x5c\x5c\xa4\x64\x17\xbc\ \xcc\xee\x3c\xbb\x3b\x33\x0c\x8c\x3f\xde\x2f\x3c\xb8\x63\x61\xe4\ \x06\xfe\x44\x52\xfa\x44\x82\x28\xa6\xbe\x4d\xbd\xc0\x67\x13\xc9\ \x0f\xa4\x8f\xa7\x27\xe3\x37\xe7\xdf\xce\xae\xff\xb9\xbc\x80\xe8\ \x6e\x06\x97\x37\x9f\xbe\xfc\x71\x06\x52\x4f\x96\xff\xd6\xce\x64\ \xf9\xfc\xfa\x1c\xae\xfe\xfa\x0c\x78\xb3\x2c\x5f\x7c\x95\x40\x9a\ \xc7\xf1\xf2\xbd\x2c\xaf\xd7\xeb\xfe\x5a\xeb\x07\xe1\x4c\xbe\xfe\ \x2e\xab\x84\x28\xf2\xf7\x8b\xb3\x1e\xb6\xed\xf1\x13\x62\x12\x9d\ \xdf\x2c\xa3\x50\x85\xf4\xed\xd8\x96\xb0\x2b\xde\xc3\xda\xb5\xe3\ \xf9\x44\x52\x89\xb5\x90\x60\xce\xdc\xd9\x3c\xc6\xb1\x19\xfc\xec\ \xce\x65\xeb\x4f\xc1\xfd\x44\x22\x40\x60\x44\x08\x0c\x08\x91\x4e\ \x00\x0f\x54\xc4\x8f\x26\x3b\xfa\xc6\xbe\x08\xef\xa3\xd4\xec\xfd\ \xbd\xe7\xfa\xb7\xbb\x1a\x2b\xa6\x69\xca\xe2\x57\x39\x69\x3f\xa5\ \x11\xbb\x0c\x03\xc7\xf5\x10\x47\xec\xfa\x1b\xa9\x8c\x4b\xc5\x21\ \x03\x8c\x63\x37\xf6\xd8\xe9\xd5\x72\xce\x42\x16\x8d\xe5\xe4\x94\ \xff\x60\xb3\xc8\x3a\xbd\x62\x0b\xb7\x17\x87\xd4\x8f\x96\x34\x64\ \x7e\x0c\xd3\xd5\x74\xea\xb1\x08\x02\x1f\x28\x58\x81\x17\x84\xcc\ \xc6\x8e\xac\xdb\x59\x18\xac\x7c\xbb\x3f\x96\xc5\x7d\xa2\x7f\x14\ \xe1\x44\x49\x15\x4f\xde\xf4\x7a\x70\x16\x32\x1a\x33\x08\xa9\xed\ \x52\x0f\x66\xbc\x44\xa1\x11\x38\x41\x08\x8c\x5a\xf3\x54\x7c\x1f\ \x7a\xbd\xfc\xbe\xa4\xf1\xe7\xb4\x2d\xb8\xf6\x44\x9a\x7a\x2b\xf6\ \x49\xb4\x94\x72\x21\x37\xbe\x1b\x23\xc3\x55\xc4\xc2\xab\x25\xb5\ \xd8\x37\xff\x26\x62\x52\x2a\x64\xfb\xb0\xf8\x2c\x48\x60\x6d\x44\ \x11\x22\x0e\x9c\x0a\x70\xf0\x6a\xcf\xe0\x95\x4d\x52\x39\xcd\x6f\ \x1f\x47\x71\xb0\x84\xc0\x71\x22\x86\xf3\x49\x7e\xe7\x4b\x2d\x58\ \xf6\x04\x80\x89\xb4\x9e\xbb\x31\x4b\x2f\x05\xd8\xb9\x1b\xa3\x00\ \x45\x02\x79\x9f\x00\xd5\xd8\x92\xf0\xd6\xb2\x2d\xdb\x71\xb6\x65\ \xf4\x07\xc6\x23\x52\x70\xd0\x0f\xc5\x50\x6a\xd9\x0f\xc4\x0c\xcb\ \x62\xc6\x72\x15\xe9\x63\xa4\x71\x76\x7f\x31\xd0\x8e\xc3\x51\xff\ \x34\xe8\x29\x1e\xa6\xd9\x1e\xe8\x59\xc8\x98\xff\x8b\xa1\xe6\x2b\ \xba\x05\xd4\xa6\x49\xf1\x68\x0f\xf5\x86\x79\x5e\xb0\xfe\xc5\x58\ \x3b\x4e\x2b\xac\xf9\xb2\x6e\x93\x75\xe1\x19\xda\x22\xad\x67\xa4\ \xd5\x8c\xb4\xda\x80\xb4\xe0\xc4\x58\x43\xa3\x8a\x07\x87\x72\x98\ \x00\x3a\x5f\x46\xc3\x0a\x81\x68\x15\x3a\xa8\xe4\x13\xd5\xbf\x57\ \x70\x25\x89\xc5\xb5\x51\x78\x54\x81\x95\x7b\x35\x85\xb0\x51\x93\ \x2b\x8d\x74\xb7\xac\xe6\x0b\x62\x34\xaa\xe8\x5e\x55\xf2\xf4\xa4\ \x91\x83\xb7\xdc\xd0\xf2\x18\xc4\x01\x2c\xe8\x2d\x96\x73\xb6\x00\ \x2f\x08\x6e\xc1\x73\x6f\x59\x19\x42\x94\x44\x24\x75\x42\x81\x24\ \x78\x79\x55\x5b\x79\x2f\xe2\xe1\xf6\xce\xe5\x0a\x34\x9b\x12\x15\ \x0f\x5d\x7f\xba\x43\x3f\x6a\x5c\x38\xfe\x66\xb4\x74\x9d\xf3\xfa\ \x19\xaf\x7c\xd4\xbc\x84\x06\xcd\x88\x29\x8a\xa6\x29\xca\x4f\x39\ \xd7\xa3\x46\x96\xa8\xd0\x74\x95\xf1\x75\xf6\x44\x66\xd1\x9c\xda\ \xc1\x9a\x5f\x7a\x3e\x62\x0d\x80\x4d\x3d\x74\xda\x0f\xa2\x11\xfe\ \x78\xdd\x80\xc8\x4e\x21\xa4\x22\xe4\x21\xa2\xb2\x27\x39\x67\x0e\ \xfa\x19\x7c\xc8\x4c\xe8\x14\x1e\x24\x71\x0c\x15\xbf\x90\x3a\x95\ \x82\x25\xea\xec\x7a\x1e\xe2\x0b\xbd\x77\x6f\x0b\xbc\x1d\x69\x0f\ \xaa\x62\x4c\xb3\xc4\xab\x24\xc1\x61\x49\xdd\xb4\x8b\x44\x6c\xaa\ \xdc\x03\x59\xc6\x16\xa3\xca\x4d\x6f\xe9\xc0\x62\x9a\xb9\xe3\x36\ \x4d\xab\xde\xb6\xa4\xf1\xbc\xda\x13\x0e\xe9\x4f\xd0\x86\x5d\x83\ \xc0\x17\x30\x48\x57\x1b\x62\xa9\xa8\xdd\x9e\x82\xa5\xca\x4b\x5e\ \x51\x48\xb7\xa7\xea\x58\xc1\xff\x5d\x85\xec\x59\x2c\xd9\x81\xcd\ \x14\xa5\xab\xaa\xa2\xd2\x55\x54\xf8\x77\xe7\xe0\x0f\x01\x93\x67\ \xe9\xc3\xbe\x9c\x3d\xed\x8f\xb3\x2b\x21\xb3\xe2\xf2\x44\x14\xc1\ \x20\x4e\x44\x22\x36\x91\x9a\x26\x4d\x46\x5c\x72\x96\x33\x19\xe4\ \xdd\x88\x2e\x84\x5c\x10\x99\x08\x5c\x09\x8b\x89\x24\xaa\x1e\x06\ \x1b\xef\x30\x06\xea\x0e\x09\xe9\xa4\xd3\x35\xc6\x3d\x03\x22\x0d\ \xf2\x7e\x1e\x32\x87\xc7\x30\x69\xa8\x5f\x1e\x4a\x9e\x41\xe8\xe4\ \xca\x8c\xa9\xef\x2e\x50\xe0\x75\xd6\x09\xd0\x38\x0e\xdd\xe9\x2a\ \x66\x5f\xe9\x82\xa5\x5d\xf2\x1f\x24\x88\x37\x4b\x56\x1a\x83\x04\ \xd4\xb6\xdd\xd8\xbd\x63\x3c\xe0\x5b\x14\xfb\xf4\x8e\x62\x47\xb8\ \x8f\x49\x97\x7c\x00\x9c\x1e\xa1\xe2\x94\xcd\x5c\x9e\x82\x89\x70\ \x62\x57\x82\x68\x94\x0d\xce\x41\x73\xfd\x03\xc5\x85\x6c\x89\x81\ \xd4\x19\xb2\x42\x14\xae\x6f\xf3\xcd\x50\x98\xb1\x14\xfa\x3e\x20\ \x9a\x62\x54\x80\x54\x9a\x45\x16\xf5\xd8\x3b\xd2\x37\xba\xf8\xd7\ \xc9\x97\x78\x2d\x6a\x79\x36\xa0\x04\x2d\x9f\xff\x17\xa6\xa7\x65\ \xf4\x86\xed\xc2\x1b\x91\xc3\xec\x06\x1c\xde\xa0\x29\xbd\xd2\x23\ \xfe\x2b\xe0\x67\x64\xfc\xcc\x76\xf9\xa9\x46\x8d\xc5\xa7\x21\x3f\ \xad\x21\xbe\xf2\x63\xfb\x2b\xe0\xa7\x66\xfc\x06\xed\xf2\x33\x06\ \x35\xf8\xe9\xc8\x4f\x6f\xc8\x6f\xa7\xc9\xfb\xbf\xe8\xe9\x19\xbd\ \x51\xbb\xf4\x86\x75\x4c\xdf\x80\xef\xde\x23\x36\x7d\xb9\xe3\xd0\ \xdb\x85\x37\xd0\xeb\x6c\xdd\x21\x37\x7e\xf8\xff\xa8\xad\x1f\xc9\ \x7d\xaf\xd2\xf2\xf6\xad\x63\xfe\x4c\x24\x68\x1e\xb7\xf9\x2b\xdc\ \x6f\xdf\x78\x0a\xc1\xc7\xc2\x97\x41\x0d\x17\xfc\x94\xf0\xe5\x55\ \x59\x40\xed\x99\xfc\x87\x5a\xc7\x02\xea\x1c\x9f\x7e\xcc\xe1\x9f\ \xd1\x37\x9e\x29\x00\xd4\xd5\x1a\xcb\x4f\x18\xc1\x23\xb7\x81\xca\ \x33\x45\x80\xa3\xe7\xf2\xc1\xaf\xcc\x04\xe6\x11\xa0\xd9\xba\x09\ \x54\x55\xa3\x2b\x5c\x2c\xec\x67\xa8\xf4\x49\x62\x03\x21\x87\x28\ \x12\x07\x22\x57\xc0\x3f\x31\xf8\x02\x9a\x91\x94\x3a\x96\xba\xc8\ \x1d\xf0\x77\x09\xa2\xfa\xa3\x9a\x4b\x2a\xa7\x4b\x92\x17\x16\x1d\ \x9e\xbc\x09\x83\x5b\xf1\x25\x85\xcf\xb6\x71\x17\xd4\x1f\x79\x2a\ \x27\x7b\x14\xa8\xb6\xd2\x4d\xd2\x81\x44\x27\x15\x75\x42\xbd\x3a\ \x10\x06\xb1\xd8\x8b\x15\xf5\x4a\xf9\x84\x3c\x99\xc2\x73\x5c\x03\ \x53\x24\x12\x44\x99\xa6\x12\x14\x6d\x54\xfa\xfc\x42\xab\xbc\xc0\ \x68\x9e\xca\x79\x52\x22\xe7\x45\xd2\x38\x8f\x26\x71\x9a\x6c\x88\ \x74\x47\x24\xdc\xb7\xb7\x43\xb1\x0d\x3e\x00\x7a\x67\xe9\xe4\xb7\ \x7c\x00\x0f\xe2\xa9\xa6\xb9\x8c\x9a\x4b\xe9\x40\xc0\x99\xa5\xfd\ \xf6\x3c\x92\x76\x0d\x23\x5b\x62\xc5\xb6\xd9\x33\xbd\x79\xa8\x90\ \x24\xb1\x0f\xe5\x0c\x0f\x8e\x9e\x67\x63\x74\x9d\x94\x46\x5f\x27\ \xa0\x69\x5d\xc9\x9d\x6a\xe6\x6f\x83\x6a\x64\x46\x8b\x44\xdf\x01\ \x85\x47\xb8\xa5\x2b\xb3\x55\x2f\x87\xf2\x32\x1a\x97\xde\xe8\xb4\ \xa9\x33\xcf\x7a\x18\xea\x41\xa5\xb7\xf2\x1e\x2f\xa3\x72\xf9\x95\ \x4c\x73\x9d\x45\x31\xe6\x1f\xa1\x9d\x9e\xfc\x07\x24\xe4\x53\x30\ \ " qt_resource_name = b"\ \x00\x05\ \x00\x6d\x02\xc3\ \x00\x66\ \x00\x69\x00\x6c\x00\x65\x00\x73\ \x00\x09\ \x08\xf6\x8f\xa7\ \x00\x63\ \x00\x75\x00\x62\x00\x69\x00\x63\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0b\ \x08\x32\x87\x47\ \x00\x73\ \x00\x70\x00\x68\x00\x65\x00\x72\x00\x65\x00\x73\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0b\ \x02\x19\x2b\xe7\ \x00\x62\ \x00\x75\x00\x62\x00\x62\x00\x6c\x00\x65\x00\x73\x00\x2e\x00\x73\x00\x76\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\ \x00\x00\x00\x44\x00\x01\x00\x00\x00\x01\x00\x00\x06\x32\ \x00\x00\x00\x28\x00\x01\x00\x00\x00\x01\x00\x00\x03\x5c\ \x00\x00\x00\x10\x00\x01\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() PyQt5_gpl-5.10.1/examples/painting/transformations.py0000755000076500000240000002063313245231431022740 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QPointF, QSize, Qt from PyQt5.QtGui import QBrush, QFont, QFontMetrics, QPainter, QPainterPath from PyQt5.QtWidgets import QApplication, QComboBox, QGridLayout, QWidget NoTransformation, Translate, Rotate, Scale = range(4) class RenderArea(QWidget): def __init__(self, parent=None): super(RenderArea, self).__init__(parent) newFont = self.font() newFont.setPixelSize(12) self.setFont(newFont) fontMetrics = QFontMetrics(newFont) self.xBoundingRect = fontMetrics.boundingRect("x") self.yBoundingRect = fontMetrics.boundingRect("y") self.shape = QPainterPath() self.operations = [] def setOperations(self, operations): self.operations = operations self.update() def setShape(self, shape): self.shape = shape self.update() def minimumSizeHint(self): return QSize(182, 182) def sizeHint(self): return QSize(232, 232) def paintEvent(self, event): painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) painter.fillRect(event.rect(), QBrush(Qt.white)) painter.translate(66, 66) painter.save() self.transformPainter(painter) self.drawShape(painter) painter.restore() self.drawOutline(painter) self.transformPainter(painter) self.drawCoordinates(painter) def drawCoordinates(self, painter): painter.setPen(Qt.red) painter.drawLine(0, 0, 50, 0) painter.drawLine(48, -2, 50, 0) painter.drawLine(48, 2, 50, 0) painter.drawText(60 - self.xBoundingRect.width() / 2, 0 + self.xBoundingRect.height() / 2, "x") painter.drawLine(0, 0, 0, 50) painter.drawLine(-2, 48, 0, 50) painter.drawLine(2, 48, 0, 50) painter.drawText(0 - self.yBoundingRect.width() / 2, 60 + self.yBoundingRect.height() / 2, "y") def drawOutline(self, painter): painter.setPen(Qt.darkGreen) painter.setPen(Qt.DashLine) painter.setBrush(Qt.NoBrush) painter.drawRect(0, 0, 100, 100) def drawShape(self, painter): painter.fillPath(self.shape, Qt.blue) def transformPainter(self, painter): for operation in self.operations: if operation == Translate: painter.translate(50, 50) elif operation == Scale: painter.scale(0.75, 0.75) elif operation == Rotate: painter.rotate(60) class Window(QWidget): operationTable = (NoTransformation, Rotate, Scale, Translate) NumTransformedAreas = 3 def __init__(self): super(Window, self).__init__() self.originalRenderArea = RenderArea() self.shapeComboBox = QComboBox() self.shapeComboBox.addItem("Clock") self.shapeComboBox.addItem("House") self.shapeComboBox.addItem("Text") self.shapeComboBox.addItem("Truck") layout = QGridLayout() layout.addWidget(self.originalRenderArea, 0, 0) layout.addWidget(self.shapeComboBox, 1, 0) self.transformedRenderAreas = list(range(Window.NumTransformedAreas)) self.operationComboBoxes = list(range(Window.NumTransformedAreas)) for i in range(Window.NumTransformedAreas): self.transformedRenderAreas[i] = RenderArea() self.operationComboBoxes[i] = QComboBox() self.operationComboBoxes[i].addItem("No transformation") self.operationComboBoxes[i].addItem(u"Rotate by 60\N{DEGREE SIGN}") self.operationComboBoxes[i].addItem("Scale to 75%") self.operationComboBoxes[i].addItem("Translate by (50, 50)") self.operationComboBoxes[i].activated.connect(self.operationChanged) layout.addWidget(self.transformedRenderAreas[i], 0, i + 1) layout.addWidget(self.operationComboBoxes[i], 1, i + 1) self.setLayout(layout) self.setupShapes() self.shapeSelected(0) self.setWindowTitle("Transformations") def setupShapes(self): truck = QPainterPath() truck.setFillRule(Qt.WindingFill) truck.moveTo(0.0, 87.0) truck.lineTo(0.0, 60.0) truck.lineTo(10.0, 60.0) truck.lineTo(35.0, 35.0) truck.lineTo(100.0, 35.0) truck.lineTo(100.0, 87.0) truck.lineTo(0.0, 87.0) truck.moveTo(17.0, 60.0) truck.lineTo(55.0, 60.0) truck.lineTo(55.0, 40.0) truck.lineTo(37.0, 40.0) truck.lineTo(17.0, 60.0) truck.addEllipse(17.0, 75.0, 25.0, 25.0) truck.addEllipse(63.0, 75.0, 25.0, 25.0) clock = QPainterPath() clock.addEllipse(-50.0, -50.0, 100.0, 100.0) clock.addEllipse(-48.0, -48.0, 96.0, 96.0) clock.moveTo(0.0, 0.0) clock.lineTo(-2.0, -2.0) clock.lineTo(0.0, -42.0) clock.lineTo(2.0, -2.0) clock.lineTo(0.0, 0.0) clock.moveTo(0.0, 0.0) clock.lineTo(2.732, -0.732) clock.lineTo(24.495, 14.142) clock.lineTo(0.732, 2.732) clock.lineTo(0.0, 0.0) house = QPainterPath() house.moveTo(-45.0, -20.0) house.lineTo(0.0, -45.0) house.lineTo(45.0, -20.0) house.lineTo(45.0, 45.0) house.lineTo(-45.0, 45.0) house.lineTo(-45.0, -20.0) house.addRect(15.0, 5.0, 20.0, 35.0) house.addRect(-35.0, -15.0, 25.0, 25.0) text = QPainterPath() font = QFont() font.setPixelSize(50) fontBoundingRect = QFontMetrics(font).boundingRect("Qt") text.addText(-QPointF(fontBoundingRect.center()), font, "Qt") self.shapes = (clock, house, text, truck) self.shapeComboBox.activated.connect(self.shapeSelected) def operationChanged(self): operations = [] for i in range(Window.NumTransformedAreas): index = self.operationComboBoxes[i].currentIndex() operations.append(Window.operationTable[index]) self.transformedRenderAreas[i].setOperations(operations[:]) def shapeSelected(self, index): shape = self.shapes[index] self.originalRenderArea.setShape(shape) for i in range(Window.NumTransformedAreas): self.transformedRenderAreas[i].setShape(shape) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/pyuic/0000755000076500000240000000000013245231431016446 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/pyuic/compile-on-the-fly.py0000755000076500000240000000464313245231431022442 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Riverbank Computing Limited nor the names of ## its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import sys from PyQt5.QtCore import pyqtSlot from PyQt5.QtWidgets import QApplication, QDialog from PyQt5.uic import loadUiType app = QApplication(sys.argv) form_class, base_class = loadUiType('demo.ui') class DemoImpl(QDialog, form_class): def __init__(self, *args): super(DemoImpl, self).__init__(*args) self.setupUi(self) @pyqtSlot() def on_button1_clicked(self): for s in "This is a demo".split(" "): self.list.addItem(s) form = DemoImpl() form.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/pyuic/demo.ui0000644000076500000240000000631413245231431017735 0ustar philstaff00000000000000 DemoDialog 0 0 400 300 PyQt5.uic Demo Dialog 9 6 Qt::Vertical 20 40 Qt::Vertical 20 40 0 6 Add items Clear list 0 6 Qt::Horizontal 131 31 OK okButton clicked() DemoDialog accept() 369 256 96 254 button2 clicked() list clear() 92 112 279 123 PyQt5_gpl-5.10.1/examples/pyuic/load_ui1.py0000755000076500000240000000407013245231431020521 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Riverbank Computing Limited nor the names of ## its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import sys from PyQt5.QtWidgets import QApplication from PyQt5.uic import loadUi app = QApplication(sys.argv) widget = loadUi('demo.ui') widget.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/pyuic/load_ui2.py0000755000076500000240000000454713245231431020533 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Riverbank Computing Limited nor the names of ## its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import sys from PyQt5.QtCore import pyqtSlot from PyQt5.QtWidgets import QApplication, QDialog from PyQt5.uic import loadUi class DemoImpl(QDialog): def __init__(self, *args): super(DemoImpl, self).__init__(*args) loadUi('demo.ui', self) @pyqtSlot() def on_button1_clicked(self): for s in "This is a demo".split(" "): self.list.addItem(s) app = QApplication(sys.argv) widget = DemoImpl() widget.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/qml/0000755000076500000240000000000013245231431016106 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/qml/referenceexamples/0000755000076500000240000000000013245231431021603 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/qml/referenceexamples/adding.py0000755000076500000240000000622413245231431023412 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import pyqtProperty, QCoreApplication, QObject, QUrl from PyQt5.QtQml import qmlRegisterType, QQmlComponent, QQmlEngine QML = b''' import People 1.0 Person { name: "Bob Jones" shoeSize: 12 } ''' class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoeSize = 0 @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(int) def shoeSize(self): return self._shoeSize @shoeSize.setter def shoeSize(self, shoeSize): self._shoeSize = shoeSize app = QCoreApplication(sys.argv) qmlRegisterType(Person, "People", 1, 0, "Person") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) person = component.create() if person is not None: print("The person's name is \"%s\"" % person.name) print("They wear a %d sized shoe" % person.shoeSize) else: print("Unable to create component instance") for e in component.errors(): print("Error:", e.toString()); PyQt5_gpl-5.10.1/examples/qml/referenceexamples/attached.py0000755000076500000240000001356213245231431023744 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import (pyqtProperty, Q_CLASSINFO, QCoreApplication, QDate, QObject, QUrl) from PyQt5.QtGui import QColor from PyQt5.QtQml import (qmlAttachedPropertiesObject, qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import People 1.0 import QtQuick 2.0 BirthdayParty { Boy { name: "Robert Campbell" BirthdayParty.rsvp: "2009-07-01" } Boy { name: "Leo Hodges" shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } BirthdayParty.rsvp: "2009-07-06" } host: Boy { name: "Jack Smith" shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 } } } ''' class ShoeDescription(QObject): def __init__(self, parent=None): super(ShoeDescription, self).__init__(parent) self._size = 0 self._color = QColor() self._brand = '' self._price = 0.0 @pyqtProperty(int) def size(self): return self._size @size.setter def size(self, size): self._size = size @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = color @pyqtProperty(str) def brand(self): return self._brand @brand.setter def brand(self, brand): self._brand = brand @pyqtProperty(float) def price(self): return self._price @price.setter def price(self, price): self._price = price class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoe = ShoeDescription() @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(ShoeDescription) def shoe(self): return self._shoe class Boy(Person): pass class Girl(Person): pass class BirthdayPartyAttached(QObject): def __init__(self, parent): super(BirthdayPartyAttached, self).__init__(parent) self._rsvp = QDate() @pyqtProperty(QDate) def rsvp(self): return self._rsvp @rsvp.setter def rsvp(self, rsvp): self._rsvp = rsvp class BirthdayParty(QObject): Q_CLASSINFO('DefaultProperty', 'guests') def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayPartyAttached) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty", attachedProperties=BirthdayPartyAttached) qmlRegisterType(ShoeDescription) qmlRegisterType(Person) qmlRegisterType(Boy, "People", 1, 0, "Boy") qmlRegisterType(Girl, "People", 1, 0, "Girl") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False) if attached is not None: rsvpDate = attached.property('rsvp') else: rsvpDate = QDate() if rsvpDate.isNull(): print(" \"%s\" RSVP date: Hasn't RSVP'd" % guest.name) else: print(" \"%s\" RSVP date: %s" % (guest.name, rsvpDate.toString())) else: for e in component.errors(): print("Error:", e.toString()); PyQt5_gpl-5.10.1/examples/qml/referenceexamples/binding.py0000755000076500000240000002116713245231431023601 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import (pyqtProperty, pyqtSignal, pyqtSlot, Q_CLASSINFO, QCoreApplication, QDate, QObject, QTime, QTimer, QUrl) from PyQt5.QtGui import QColor from PyQt5.QtQml import (qmlAttachedPropertiesObject, qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty, QQmlProperty, QQmlPropertyValueSource) QML = b''' import People 1.0 import QtQuick 2.0 BirthdayParty { id: theParty HappyBirthdaySong on announcement { name: theParty.host.name } host: Boy { name: "Bob Jones" shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 } } onPartyStarted: console.log("This party started rockin' at " + time); Boy { name: "Leo Hodges" BirthdayParty.rsvp: "2009-07-06" shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } } Boy { name: "Jack Smith" shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 } } Girl { name: "Anne Brown" BirthdayParty.rsvp: "2009-07-01" shoe.size: 7 shoe.color: "red" shoe.brand: "Marc Jacobs" shoe.price: 699.99 } } ''' class ShoeDescription(QObject): def __init__(self, parent=None): super(ShoeDescription, self).__init__(parent) self._size = 0 self._color = QColor() self._brand = '' self._price = 0.0 shoeChanged = pyqtSignal() @pyqtProperty(int, notify=shoeChanged) def size(self): return self._size @size.setter def size(self, size): if self._size != size: self._size = size self.shoeChanged.emit() @pyqtProperty(QColor, notify=shoeChanged) def color(self): return self._color @color.setter def color(self, color): if self._color != color: self._color = color self.shoeChanged.emit() @pyqtProperty(str, notify=shoeChanged) def brand(self): return self._brand @brand.setter def brand(self, brand): if self._brand != brand: self._brand = brand self.shoeChanged.emit() @pyqtProperty(float, notify=shoeChanged) def price(self): return self._price @price.setter def price(self, price): if self._price != price: self._price = price self.shoeChanged.emit() class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoe = ShoeDescription() nameChanged = pyqtSignal() @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @name.setter def name(self, name): if self._name != name: self._name = name self.nameChanged.emit() @pyqtProperty(ShoeDescription) def shoe(self): return self._shoe class Boy(Person): pass class Girl(Person): pass class BirthdayPartyAttached(QObject): def __init__(self, parent): super(BirthdayPartyAttached, self).__init__(parent) self._rsvp = QDate() rsvpChanged = pyqtSignal() @pyqtProperty(QDate, notify=rsvpChanged) def rsvp(self): return self._rsvp @rsvp.setter def rsvp(self, rsvp): if self._rsvp != rsvp: self._rsvp = rsvp self.rsvpChanged.emit() class BirthdayParty(QObject): Q_CLASSINFO('DefaultProperty', 'guests') partyStarted = pyqtSignal(QTime, arguments=['time']) def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] hostChanged = pyqtSignal() @pyqtProperty(Person, notify=hostChanged) def host(self): return self._host @host.setter def host(self, host): if self._host != host: self._host = host self.hostChanged.emit() @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) @pyqtProperty(str) def announcement(self): return '' @announcement.setter def announcement(self, announcement): print(announcement) def startParty(self): self.partyStarted.emit(QTime.currentTime()) class HappyBirthdaySong(QObject, QQmlPropertyValueSource): def __init__(self, parent=None): super(HappyBirthdaySong, self).__init__(parent) self._line = -1 self._lyrics = [] self._target = QQmlProperty() self._name = '' timer = QTimer(self) timer.timeout.connect(self.advance) timer.start(1000) nameChanged = pyqtSignal() @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @name.setter def name(self, name): if self._name != name: self._name = name self._lyrics = [ "", "Happy birthday to you,", "Happy birthday to you,", "Happy birthday dear %s," % self._name, "Happy birthday to you!" ] self.nameChanged.emit() def setTarget(self, target): self._target = target @pyqtSlot() def advance(self): self._line += 1 if self._line < len(self._lyrics): self._target.write(self._lyrics[self._line]) else: QCoreApplication.instance().quit() app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayPartyAttached) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty", attachedProperties=BirthdayPartyAttached) qmlRegisterType(HappyBirthdaySong, "People", 1, 0, "HappyBirthdaySong") qmlRegisterType(ShoeDescription) qmlRegisterType(Person) qmlRegisterType(Boy, "People", 1, 0, "Boy") qmlRegisterType(Girl, "People", 1, 0, "Girl") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False) if attached is not None: rsvpDate = attached.property('rsvp') else: rsvpDate = QDate() if rsvpDate.isNull(): print(" \"%s\" RSVP date: Hasn't RSVP'd" % guest.name) else: print(" \"%s\" RSVP date: %s" % (guest.name, rsvpDate.toString())) party.startParty() else: for e in component.errors(): print("Error:", e.toString()); sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/qml/referenceexamples/coercion.py0000755000076500000240000001006613245231431023764 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import pyqtProperty, QCoreApplication, QObject, QUrl from PyQt5.QtQml import (qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import People 1.0 BirthdayParty { host: Boy { name: "Bob Jones" shoeSize: 12 } guests: [ Boy { name: "Leo Hodges" }, Boy { name: "Jack Smith" }, Girl { name: "Anne Brown" } ] } ''' class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoeSize = 0 @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(int) def shoeSize(self): return self._shoeSize @shoeSize.setter def shoeSize(self, shoeSize): self._shoeSize = shoeSize class Boy(Person): pass class Girl(Person): pass class BirthdayParty(QObject): def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty") qmlRegisterType(Person) qmlRegisterType(Boy, "People", 1, 0, "Boy") qmlRegisterType(Girl, "People", 1, 0, "Girl") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: print(" \"%s\"" % guest.name) else: for e in component.errors(): print("Error:", e.toString()); PyQt5_gpl-5.10.1/examples/qml/referenceexamples/default.py0000755000076500000240000001013113245231431023600 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import (pyqtProperty, Q_CLASSINFO, QCoreApplication, QObject, QUrl) from PyQt5.QtQml import (qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import People 1.0 BirthdayParty { host: Boy { name: "Bob Jones" shoeSize: 12 } Boy { name: "Leo Hodges" } Boy { name: "Jack Smith" } Girl { name: "Anne Brown" } } ''' class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoeSize = 0 @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(int) def shoeSize(self): return self._shoeSize @shoeSize.setter def shoeSize(self, shoeSize): self._shoeSize = shoeSize class Boy(Person): pass class Girl(Person): pass class BirthdayParty(QObject): Q_CLASSINFO('DefaultProperty', 'guests') def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty") qmlRegisterType(Person) qmlRegisterType(Boy, "People", 1, 0, "Boy") qmlRegisterType(Girl, "People", 1, 0, "Girl") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: print(" \"%s\"" % guest.name) else: for e in component.errors(): print("Error:", e.toString()); PyQt5_gpl-5.10.1/examples/qml/referenceexamples/grouped.py0000755000076500000240000001276413245231431023637 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import (pyqtProperty, Q_CLASSINFO, QCoreApplication, QObject, QUrl) from PyQt5.QtGui import QColor from PyQt5.QtQml import (qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import People 1.0 import QtQuick 2.0 BirthdayParty { host: Boy { name: "Bob Jones" shoe { size: 12; color: "white"; brand: "Bikey"; price: 90.0 } } Boy { name: "Leo Hodges" shoe { size: 10; color: "black"; brand: "Thebok"; price: 59.95 } } Boy { name: "Jack Smith" shoe { size: 8 color: "blue" brand: "Luma" price: 19.95 } } Girl { name: "Anne Brown" shoe.size: 7 shoe.color: "red" shoe.brand: "Job Macobs" shoe.price: 699.99 } } ''' class ShoeDescription(QObject): def __init__(self, parent=None): super(ShoeDescription, self).__init__(parent) self._size = 0 self._color = QColor() self._brand = '' self._price = 0.0 @pyqtProperty(int) def size(self): return self._size @size.setter def size(self, size): self._size = size @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = color @pyqtProperty(str) def brand(self): return self._brand @brand.setter def brand(self, brand): self._brand = brand @pyqtProperty(float) def price(self): return self._price @price.setter def price(self, price): self._price = price class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoe = ShoeDescription() @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(ShoeDescription) def shoe(self): return self._shoe class Boy(Person): pass class Girl(Person): pass class BirthdayParty(QObject): Q_CLASSINFO('DefaultProperty', 'guests') def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty") qmlRegisterType(ShoeDescription) qmlRegisterType(Person) qmlRegisterType(Boy, "People", 1, 0, "Boy") qmlRegisterType(Girl, "People", 1, 0, "Girl") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") bestShoe = None for guest in party.guests: print(" \"%s\"" % guest.name) if bestShoe is None or bestShoe.shoe.price < guest.shoe.price: bestShoe = guest if bestShoe is not None: print("\"%s\" is wearing the best shoes!" % bestShoe.name) else: for e in component.errors(): print("Error:", e.toString()); PyQt5_gpl-5.10.1/examples/qml/referenceexamples/methods.py0000755000076500000240000001013213245231431023620 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import (pyqtProperty, pyqtSlot, QCoreApplication, QObject, QUrl) from PyQt5.QtQml import (qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import QtQuick 2.0 import People 1.0 BirthdayParty { host: Person { name: "Bob Jones" shoeSize: 12 } guests: [ Person { name: "Leo Hodges" }, Person { name: "Jack Smith" }, Person { name: "Anne Brown" } ] Component.onCompleted: invite("William Green") } ''' class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoeSize = 0 @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(int) def shoeSize(self): return self._shoeSize @shoeSize.setter def shoeSize(self, shoeSize): self._shoeSize = shoeSize class BirthdayParty(QObject): def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) @pyqtSlot(str) def invite(self, name): person = Person(self) person.name = name self._guests.append(person) app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty") qmlRegisterType(Person, "People", 1, 0, "Person") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) print("They are inviting:") for guest in party.guests: print(" \"%s\"" % guest.name) else: for e in component.errors(): print("Error:", e.toString()); PyQt5_gpl-5.10.1/examples/qml/referenceexamples/properties.py0000755000076500000240000000760513245231431024364 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import pyqtProperty, QCoreApplication, QObject, QUrl from PyQt5.QtQml import (qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import QtQuick 2.0 import People 1.0 BirthdayParty { host: Person { name: "Bob Jones" shoeSize: 12 } guests: [ Person { name: "Leo Hodges" }, Person { name: "Jack Smith" }, Person { name: "Anne Brown" } ] } ''' class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoeSize = 0 @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(int) def shoeSize(self): return self._shoeSize @shoeSize.setter def shoeSize(self, shoeSize): self._shoeSize = shoeSize class BirthdayParty(QObject): def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty") qmlRegisterType(Person, "People", 1, 0, "Person") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) print("They are inviting:") for guest in party.guests: print(" \"%s\"" % guest.name) else: for e in component.errors(): print("Error:", e.toString()); PyQt5_gpl-5.10.1/examples/qml/referenceexamples/signal.py0000755000076500000240000001451213245231431023440 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import (pyqtProperty, pyqtSignal, Q_CLASSINFO, QCoreApplication, QDate, QObject, QTime, QUrl) from PyQt5.QtGui import QColor from PyQt5.QtQml import (qmlAttachedPropertiesObject, qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import People 1.0 import QtQuick 2.0 BirthdayParty { onPartyStarted: console.log("This party started rockin' at " + time); host: Boy { name: "Bob Jones" shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 } } Boy { name: "Leo Hodges" BirthdayParty.rsvp: "2009-07-06" shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } } Boy { name: "Jack Smith" shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 } } Girl { name: "Anne Brown" BirthdayParty.rsvp: "2009-07-01" shoe.size: 7 shoe.color: "red" shoe.brand: "Marc Jacobs" shoe.price: 699.99 } } ''' class ShoeDescription(QObject): def __init__(self, parent=None): super(ShoeDescription, self).__init__(parent) self._size = 0 self._color = QColor() self._brand = '' self._price = 0.0 @pyqtProperty(int) def size(self): return self._size @size.setter def size(self, size): self._size = size @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = color @pyqtProperty(str) def brand(self): return self._brand @brand.setter def brand(self, brand): self._brand = brand @pyqtProperty(float) def price(self): return self._price @price.setter def price(self, price): self._price = price class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoe = ShoeDescription() @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(ShoeDescription) def shoe(self): return self._shoe class Boy(Person): pass class Girl(Person): pass class BirthdayPartyAttached(QObject): def __init__(self, parent): super(BirthdayPartyAttached, self).__init__(parent) self._rsvp = QDate() @pyqtProperty(QDate) def rsvp(self): return self._rsvp @rsvp.setter def rsvp(self, rsvp): self._rsvp = rsvp class BirthdayParty(QObject): Q_CLASSINFO('DefaultProperty', 'guests') partyStarted = pyqtSignal(QTime, arguments=['time']) def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) def startParty(self): self.partyStarted.emit(QTime.currentTime()) app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayPartyAttached) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty", attachedProperties=BirthdayPartyAttached) qmlRegisterType(ShoeDescription) qmlRegisterType(Person) qmlRegisterType(Boy, "People", 1, 0, "Boy") qmlRegisterType(Girl, "People", 1, 0, "Girl") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False) if attached is not None: rsvpDate = attached.property('rsvp') else: rsvpDate = QDate() if rsvpDate.isNull(): print(" \"%s\" RSVP date: Hasn't RSVP'd" % guest.name) else: print(" \"%s\" RSVP date: %s" % (guest.name, rsvpDate.toString())) party.startParty() else: for e in component.errors(): print("Error:", e.toString()); PyQt5_gpl-5.10.1/examples/qml/referenceexamples/valuesource.py0000755000076500000240000002113613245231431024520 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import (pyqtProperty, pyqtSignal, pyqtSlot, Q_CLASSINFO, QCoreApplication, QDate, QObject, QTime, QTimer, QUrl) from PyQt5.QtGui import QColor from PyQt5.QtQml import (qmlAttachedPropertiesObject, qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty, QQmlProperty, QQmlPropertyValueSource) QML = b''' import People 1.0 import QtQuick 2.0 BirthdayParty { HappyBirthdaySong on announcement { name: "Bob Jones" } onPartyStarted: console.log("This party started rockin' at " + time); host: Boy { name: "Bob Jones" shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 } } Boy { name: "Leo Hodges" BirthdayParty.rsvp: "2009-07-06" shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } } Boy { name: "Jack Smith" shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 } } Girl { name: "Anne Brown" BirthdayParty.rsvp: "2009-07-01" shoe.size: 7 shoe.color: "red" shoe.brand: "Marc Jacobs" shoe.price: 699.99 } } ''' class ShoeDescription(QObject): def __init__(self, parent=None): super(ShoeDescription, self).__init__(parent) self._size = 0 self._color = QColor() self._brand = '' self._price = 0.0 shoeChanged = pyqtSignal() @pyqtProperty(int, notify=shoeChanged) def size(self): return self._size @size.setter def size(self, size): if self._size != size: self._size = size self.shoeChanged.emit() @pyqtProperty(QColor, notify=shoeChanged) def color(self): return self._color @color.setter def color(self, color): if self._color != color: self._color = color self.shoeChanged.emit() @pyqtProperty(str, notify=shoeChanged) def brand(self): return self._brand @brand.setter def brand(self, brand): if self._brand != brand: self._brand = brand self.shoeChanged.emit() @pyqtProperty(float, notify=shoeChanged) def price(self): return self._price @price.setter def price(self, price): if self._price != price: self._price = price self.shoeChanged.emit() class Person(QObject): def __init__(self, parent=None): super(Person, self).__init__(parent) self._name = '' self._shoe = ShoeDescription() nameChanged = pyqtSignal() @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @name.setter def name(self, name): if self._name != name: self._name = name self.nameChanged.emit() @pyqtProperty(ShoeDescription) def shoe(self): return self._shoe class Boy(Person): pass class Girl(Person): pass class BirthdayPartyAttached(QObject): def __init__(self, parent): super(BirthdayPartyAttached, self).__init__(parent) self._rsvp = QDate() rsvpChanged = pyqtSignal() @pyqtProperty(QDate, notify=rsvpChanged) def rsvp(self): return self._rsvp @rsvp.setter def rsvp(self, rsvp): if self._rsvp != rsvp: self._rsvp = rsvp self.rsvpChanged.emit() class BirthdayParty(QObject): Q_CLASSINFO('DefaultProperty', 'guests') partyStarted = pyqtSignal(QTime, arguments=['time']) def __init__(self, parent=None): super(BirthdayParty, self).__init__(parent) self._host = None self._guests = [] hostChanged = pyqtSignal() @pyqtProperty(Person, notify=hostChanged) def host(self): return self._host @host.setter def host(self, host): if self._host != host: self._host = host self.hostChanged.emit() @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) @pyqtProperty(str) def announcement(self): return '' @announcement.setter def announcement(self, announcement): print(announcement) def startParty(self): self.partyStarted.emit(QTime.currentTime()) class HappyBirthdaySong(QObject, QQmlPropertyValueSource): def __init__(self, parent=None): super(HappyBirthdaySong, self).__init__(parent) self._line = -1 self._lyrics = [] self._target = QQmlProperty() self._name = '' timer = QTimer(self) timer.timeout.connect(self.advance) timer.start(1000) nameChanged = pyqtSignal() @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @name.setter def name(self, name): if self._name != name: self._name = name self._lyrics = [ "", "Happy birthday to you,", "Happy birthday to you,", "Happy birthday dear %s," % self._name, "Happy birthday to you!" ] self.nameChanged.emit() def setTarget(self, target): self._target = target @pyqtSlot() def advance(self): self._line += 1 if self._line < len(self._lyrics): self._target.write(self._lyrics[self._line]) else: QCoreApplication.instance().quit() app = QCoreApplication(sys.argv) qmlRegisterType(BirthdayPartyAttached) qmlRegisterType(BirthdayParty, "People", 1, 0, "BirthdayParty", attachedProperties=BirthdayPartyAttached) qmlRegisterType(HappyBirthdaySong, "People", 1, 0, "HappyBirthdaySong") qmlRegisterType(ShoeDescription) qmlRegisterType(Person) qmlRegisterType(Boy, "People", 1, 0, "Boy") qmlRegisterType(Girl, "People", 1, 0, "Girl") engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"%s\" is having a birthday!" % party.host.name) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False) if attached is not None: rsvpDate = attached.property('rsvp') else: rsvpDate = QDate() if rsvpDate.isNull(): print(" \"%s\" RSVP date: Hasn't RSVP'd" % guest.name) else: print(" \"%s\" RSVP date: %s" % (guest.name, rsvpDate.toString())) party.startParty() else: for e in component.errors(): print("Error:", e.toString()); sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/qtdemo/0000755000076500000240000000000013245231431016606 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/qtdemo/colors.py0000644000076500000240000002252513245231431020467 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtGui import QColor, QFont from PyQt5.QtWidgets import QMessageBox, QWidget class Colors(object): # Colors: sceneBg1 = QColor(91, 91, 91) sceneBg1Line = QColor(114, 108, 104) sceneBg2 = QColor(0, 0, 0) sceneLine = QColor(255, 255, 255) paperBg = QColor(100, 100, 100) menuTextFg = QColor(255, 0, 0) buttonBgLow = QColor(255, 255, 255, 90) buttonBgHigh = QColor(255, 255, 255, 20) buttonText = QColor(255, 255, 255) tt_green = QColor(166, 206, 57) fadeOut = QColor(206, 246, 117, 0) heading = QColor(190, 230, 80) contentColor = "" glVersion = "Not detected!" # Guides: stageStartY = 8 stageHeight = 536 stageStartX = 8 stageWidth = 785 contentStartY = 22 contentHeight = 510 # Properties: noTicker = False noRescale = False noAnimations = False noBlending = False noScreenSync = False fullscreen = False usePixmaps = False useLoop = False showBoundingRect = False showFps = False noAdapt = False noWindowMask = True useButtonBalls = False useEightBitPalette = False noTimerUpdate = False noTickerMorph = False adapted = False verbose = False pause = True fps = 100 menuCount = 18 animSpeed = 1.0 benchmarkFps = -1.0 tickerLetterCount = 80; tickerMoveSpeed = 0.4 tickerMorphSpeed = 2.5 tickerText = ".EROM ETAERC .SSEL EDOC" rootMenuName = "PyQt Examples" @staticmethod def contentFont(): font = QFont() font.setStyleStrategy(QFont.PreferAntialias) if sys.platform == 'darwin': font.setPixelSize(14) font.setFamily('Arial') else: font.setPixelSize(13) font.setFamily('Verdana') return font @staticmethod def headingFont(): font = QFont() font.setStyleStrategy(QFont.PreferAntialias) font.setPixelSize(23) font.setBold(True) font.setFamily('Verdana') return font; @staticmethod def buttonFont(): font = QFont() font.setStyleStrategy(QFont.PreferAntialias) font.setPixelSize(11) font.setFamily('Verdana') return font @staticmethod def tickerFont(): font = QFont() font.setStyleStrategy(QFont.PreferAntialias) if sys.platform == 'darwin': font.setPixelSize(11) font.setBold(True) font.setFamily('Arial') else: font.setPixelSize(10) font.setBold(True) font.setFamily('sans serif') return font @classmethod def debug(cls, *args): if cls.verbose: sys.stderr.write("%s\n" % " ".join([str(arg) for arg in args])) @classmethod def parseArgs(cls, argv): # Some arguments should be processed before others. Handle them now. if "-verbose" in argv: cls.verbose = True # Handle the rest of the arguments. They may override attributes # already set. for s in argv: if s == "-no-ticker": cls.noTicker = True elif s.startswith("-ticker"): cls.noTicker = not bool(parseFloat(s, "-ticker")) elif s == "-no-animations": cls.noAnimations = True elif s.startswith("-animations"): cls.noAnimations = not bool(parseFloat(s, "-animations")) elif s == "-no-adapt": # Don't adapt the animations based on the actual performance. cls.noAdapt = True elif s == "-low": cls.setLowSettings() elif s == "-no-rescale": cls.noRescale = True elif s == "-use-pixmaps": cls.usePixmaps = True elif s == "-fullscreen": cls.fullscreen = True elif s == "-show-br": cls.showBoundingRect = True elif s == "-show-fps": cls.showFps = True elif s == "-no-blending": cls.noBlending = True elif s == "-no-sync": cls.noScreenSync = True elif s.startswith("-menu"): cls.menuCount = int(parseFloat(s, "-menu")) elif s.startswith("-use-timer-update"): cls.noTimerUpdate = not bool(parseFloat(s, "-use-timer-update")) elif s.startswith("-pause"): cls.pause = bool(parseFloat(s, "-pause")) elif s == "-no-ticker-morph": cls.noTickerMorph = True elif s == "-use-window-mask": cls.noWindowMask = False elif s == "-use-loop": cls.useLoop = True elif s == "-use-8bit": cls.useEightBitPalette = True elif s.startswith("-8bit"): cls.useEightBitPalette = bool(parseFloat(s, "-8bit")) elif s == "-use-balls": cls.useButtonBalls = True elif s.startswith("-ticker-letters"): cls.tickerLetterCount = int(parseFloat(s, "-ticker-letters")) elif s.startswith("-ticker-text"): cls.tickerText = parseText(s, "-ticker-text") elif s.startswith("-ticker-speed"): cls.tickerMoveSpeed = parseFloat(s, "-ticker-speed") elif s.startswith("-ticker-morph-speed"): cls.tickerMorphSpeed = parseFloat(s, "-ticker-morph-speed") elif s.startswith("-animation-speed"): cls.animSpeed = parseFloat(s, "-animation-speed") elif s.startswith("-fps"): cls.fps = int(parseFloat(s, "-fps")) elif s.startswith("-h") or s.startswith("-help"): QMessageBox.warning(None, "Arguments", "Usage: qtdemo.py [-verbose] [-no-adapt] " "[-fullscreen] [-ticker[0|1]] " "[-animations[0|1]] [-no-blending] [-no-sync] " "[-use-timer-update[0|1]] [-pause[0|1]] " "[-use-window-mask] [-no-rescale] [-use-pixmaps] " "[-show-fps] [-show-br] [-8bit[0|1]] [-menu] " "[-use-loop] [-use-balls] [-animation-speed] " "[-fps] [-low] [-ticker-letters] " "[-ticker-speed] [-no-ticker-morph] " "[-ticker-morph-speed] [-ticker-text]") sys.exit(0) cls.postConfigure() @classmethod def setLowSettings(cls): cls.noTicker = True cls.noTimerUpdate = True cls.fps = 30 cls.usePixmaps = True cls.noAnimations = True cls.noBlending = True @classmethod def postConfigure(cls): if not cls.noAdapt: w = QWidget() if w.depth() < 16: cls.useEightBitPalette = True cls.adapted = True cls.debug("- Adapt: Color depth less than 16 bit. Using 8 bit palette") def parseFloat(argument, name): try: value = float(parseText(argument, name)) except ValueError: value = 0.0 return value def parseText(argument, name): if len(name) == len(argument): QMessageBox.warning(None, "Arguments", "No argument number found for %s. Remember to put name and " "value adjacent! (e.g. -fps100)") sys.exit(0) return argument[len(name):] PyQt5_gpl-5.10.1/examples/qtdemo/demoitem.py0000644000076500000240000002103313245231431020762 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QPointF, QRectF, qRound from PyQt5.QtGui import QColor, QPainter, QPixmap, QTransform from PyQt5.QtWidgets import QGraphicsObject from colors import Colors class SharedImage(object): def __init__(self): self.refCount = 0 self.image = None self.pixmap = None self.transform = QTransform() self.unscaledBoundingRect = QRectF() class DemoItem(QGraphicsObject): _sharedImageHash = {} _transform = QTransform() def __init__(self, parent=None): super(DemoItem, self).__init__(parent) self.noSubPixeling = False self.currentAnimation = None self.currGuide = None self.guideFrame = 0.0 self._sharedImage = SharedImage() self._sharedImage.refCount += 1 self._hashKey = '' def __del__(self): self._sharedImage.refCount -= 1 if self._sharedImage.refCount == 0: if self._hashKey: del DemoItem._sharedImageHash[self._hashKey] def animationStarted(self, id=0): pass def animationStopped(self, id=0): pass def setRecursiveVisible(self, visible): self.setVisible(visible) for c in self.childItems(): c.setVisible(visible) def useGuide(self, guide, startFrame): self.guideFrame = startFrame while self.guideFrame > guide.startLength + guide.length(): if guide.nextGuide == guide.firstGuide: break guide = guide.nextGuide self.currGuide = guide def guideAdvance(self, distance): self.guideFrame += distance while self.guideFrame > self.currGuide.startLength + self.currGuide.length(): self.currGuide = self.currGuide.nextGuide if self.currGuide == self.currGuide.firstGuide: self.guideFrame -= self.currGuide.lengthAll() def guideMove(self, moveSpeed): self.currGuide.guide(self, moveSpeed) def setPosUsingSheepDog(self, dest, sceneFence): self.setPos(dest) if sceneFence.isNull(): return itemWidth = self.boundingRect().width() itemHeight = self.boundingRect().height() fenceRight = sceneFence.x() + sceneFence.width() fenceBottom = sceneFence.y() + sceneFence.height() if self.scenePos().x() < sceneFence.x(): self.moveBy(self.mapFromScene(QPointF(sceneFence.x(), 0)).x(), 0) if self.scenePos().x() > fenceRight - itemWidth: self.moveBy(self.mapFromScene(QPointF(fenceRight - itemWidth, 0)).x(), 0) if self.scenePos().y() < sceneFence.y(): self.moveBy(0, self.mapFromScene(QPointF(0, sceneFence.y())).y()) if self.scenePos().y() > fenceBottom - itemHeight: self.moveBy(0, self.mapFromScene(QPointF(0, fenceBottom - itemHeight)).y()) def setGuidedPos(self, pos): # Make sure we have a copy. self.guidedPos = QPointF(pos) def getGuidedPos(self): # Return a copy so that it can be changed. return QPointF(self.guidedPos) @staticmethod def setTransform(transform): DemoItem._transform = transform def useSharedImage(self, hashKey): self._hashKey = hashKey if hashKey not in DemoItem._sharedImageHash: DemoItem._sharedImageHash[hashKey] = self._sharedImage else: self._sharedImage.refCount -= 1 self._sharedImage = DemoItem._sharedImageHash[hashKey] self._sharedImage.refCount += 1 def createImage(self, transform): return None def _validateImage(self): if (self._sharedImage.transform != DemoItem._transform and not Colors.noRescale) or (self._sharedImage.image is None and self._sharedImage.pixmap is None): # (Re)create image according to new transform. self._sharedImage.image = None self._sharedImage.pixmap = None self._sharedImage.transform = DemoItem._transform # Let subclass create and draw a new image according to the new # transform. if Colors.noRescale: transform = QTransform() else: transform = DemoItem._transform image = self.createImage(transform) if image is not None: if Colors.showBoundingRect: # Draw red transparent rect. painter = QPainter(image) painter.fillRect(image.rect(), QColor(255, 0, 0, 50)) painter.end() self._sharedImage.unscaledBoundingRect = self._sharedImage.transform.inverted()[0].mapRect(QRectF(image.rect())) if Colors.usePixmaps: if image.isNull(): self._sharedImage.pixmap = QPixmap(1, 1) else: self._sharedImage.pixmap = QPixmap(image.size()) self._sharedImage.pixmap.fill(QColor(0, 0, 0, 0)) painter = QPainter(self._sharedImage.pixmap) painter.drawImage(0, 0, image) else: self._sharedImage.image = image return True else: return False return True def boundingRect(self): self._validateImage() return self._sharedImage.unscaledBoundingRect def paint(self, painter, option=None, widget=None): if self._validateImage(): wasSmoothPixmapTransform = painter.testRenderHint(QPainter.SmoothPixmapTransform) painter.setRenderHint(QPainter.SmoothPixmapTransform) if Colors.noRescale: # Let the painter scale the image for us. This may degrade # both quality and performance. if self._sharedImage.image is not None: painter.drawImage(self.pos(), self._sharedImage.image) else: painter.drawPixmap(self.pos(), self._sharedImage.pixmap) else: m = painter.worldTransform() painter.setWorldTransform(QTransform()) x = m.dx() y = m.dy() if self.noSubPixeling: x = qRound(x) y = qRound(y) if self._sharedImage.image is not None: painter.drawImage(QPointF(x, y), self._sharedImage.image) else: painter.drawPixmap(QPointF(x, y), self._sharedImage.pixmap) if not wasSmoothPixmapTransform: painter.setRenderHint(QPainter.SmoothPixmapTransform, False) def collidesWithItem(self, item, mode): return False PyQt5_gpl-5.10.1/examples/qtdemo/demoitemanimation.py0000644000076500000240000001064513245231431022671 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QPropertyAnimation, QTimer from colors import Colors class DemoItemAnimation(QPropertyAnimation): ANIM_IN, ANIM_OUT, ANIM_UNSPECIFIED = range(3) def __init__(self, item, inOrOut=ANIM_UNSPECIFIED): super(DemoItemAnimation, self).__init__(item, b'pos') self._startDelay = 0 self._inOrOut = inOrOut self._hideOnFinished = False def prepare(self): self.targetObject().prepare() def setHideOnFinished(self, hide): self._hideOnFinshed = hide def setStartDelay(self, delay): self._startDelay = delay def setDuration(self, duration): duration = int(duration * Colors.animSpeed) super(DemoItemAnimation, self).setDuration(duration) def notOwnerOfItem(self): return self is not self.targetObject().currentAnimation def play(self, fromStart=True, force=False): item = self.targetObject() # If the item that this animation controls in currently under the # control of another animation, stop that animation first. if item.currentAnimation is not None: item.currentAnimation.stop() item.currentAnimation = self if Colors.noAnimations and not force: # If animations are disabled just move to the end position. item.setPos(self.endValue()) else: if self.isVisible(): # If the item is already visible, start the animation from the # item's current position rather than from the start. self.setStartValue(item.pos()) if fromStart: self.setCurrentTime(0) item.setPos(self.startValue()) if self._inOrOut == DemoItemAnimation.ANIM_IN: item.setRecursiveVisible(True) if not Colors.noAnimations or force: if self._startDelay: QTimer.singleShot(self._startDelay, self.start) else: self.start() def setCurveShape(self, shape): self.setEasingCurve(shape) def setEnabled(self, enabled): self.targetObject().setEnabled(enabled) def isVisible(self): return self.targetObject().isVisible() def updateState(self, new, old): item = self.targetObject() if new == QPropertyAnimation.Running: item.animationStarted(self._inOrOut) elif new == QPropertyAnimation.Stopped: if self._hideOnFinished: item.setRecursiveVisible(False) item.animationStopped(self._inOrOut) PyQt5_gpl-5.10.1/examples/qtdemo/demotextitem.py0000644000076500000240000001005413245231431021670 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QRectF from PyQt5.QtGui import QColor, QImage, QPainter from PyQt5.QtWidgets import QGraphicsTextItem, QStyleOptionGraphicsItem from demoitem import DemoItem class DemoTextItem(DemoItem): STATIC_TEXT, DYNAMIC_TEXT = range(2) def __init__(self, text, font, textColor, textWidth, parent=None, type=STATIC_TEXT, bgColor=QColor()): super(DemoTextItem, self).__init__(parent) self.type = type self.text = text self.font = font self.textColor = textColor self.bgColor = bgColor self.textWidth = textWidth self.noSubPixeling = True def setText(self, text): self.text = text self.update() def createImage(self, transform): if self.type == DemoTextItem.DYNAMIC_TEXT: return None sx = min(transform.m11(), transform.m22()) sy = max(transform.m22(), sx) textItem = QGraphicsTextItem() textItem.setHtml(self.text) textItem.setTextWidth(self.textWidth) textItem.setFont(self.font) textItem.setDefaultTextColor(self.textColor) textItem.document().setDocumentMargin(2) w = textItem.boundingRect().width() h = textItem.boundingRect().height() image = QImage(int(w * sx), int(h * sy), QImage.Format_ARGB32_Premultiplied) image.fill(QColor(0, 0, 0, 0).rgba()) painter = QPainter(image) painter.scale(sx, sy) style = QStyleOptionGraphicsItem() textItem.paint(painter, style, None) return image def animationStarted(self, id=0): self.noSubPixeling = False def animationStopped(self, id=0): self.noSubPixeling = True def boundingRect(self): if self.type == DemoTextItem.STATIC_TEXT: return super(DemoTextItem, self).boundingRect() # Sorry for using magic number. return QRectF(0, 0, 50, 20) def paint(self, painter, option, widget): if self.type == DemoTextItem.STATIC_TEXT: super(DemoTextItem, self).paint(painter, option, widget) return painter.setPen(self.textColor) painter.drawText(0, 0, self.text) PyQt5_gpl-5.10.1/examples/qtdemo/examplecontent.py0000644000076500000240000001332013245231431022205 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from xml.dom.minidom import parseString from PyQt5.QtCore import QRectF, QRegExp, Qt from PyQt5.QtGui import QImage from colors import Colors from demoitem import DemoItem from demoitemanimation import DemoItemAnimation from demotextitem import DemoTextItem from headingitem import HeadingItem from imageitem import ImageItem class ExampleContent(DemoItem): def __init__(self, name, parent=None): super(ExampleContent, self).__init__(parent) # Prevent a circular import. from menumanager import MenuManager self._menu_manager = MenuManager.instance() self.name = name self.heading = None self.description = None self.screenshot = None self._prepared = False def prepare(self): if not self._prepared: self.createContent() self._prepared = True def animationStopped(self, id): if id == DemoItemAnimation.ANIM_OUT: # Free up some memory. self.heading = None self.description = None self.screenshot = None self._prepared = False def loadDescription(self): contents = self._menu_manager.getHtml(self.name).data().decode('utf8') if contents == '': paragraphs = [] else: exampleDoc = parseString(contents) paragraphs = exampleDoc.getElementsByTagName('p') if len(paragraphs) < 1: Colors.debug("- ExampleContent.loadDescription(): Could not load description:", self._menu_manager.info[self.name].get('docfile')) description = Colors.contentColor + "Could not load description. Ensure that the documentation for Qt is built." for p in paragraphs: description = self.extractTextFromParagraph(p) if self.isSummary(description): break return Colors.contentColor + description def isSummary(self, text): re = QRegExp("(In )?((The|This) )?(%s )?.*(tutorial|example|demo|application)" % self.name, Qt.CaseInsensitive) return ('[' not in text) and (re.indexIn(text) >= 0) def extractTextFromParagraph(self, parentNode): description = '' node = parentNode.firstChild while node is not None: if node.nodeType == node.TEXT_NODE: description += Colors.contentColor + node.nodeValue elif node.hasChildNodes(): if node.nodeName == 'b': beginTag = '' endTag = '' elif node.nodeName == 'a': beginTag = Colors.contentColor endTag = '' elif node.nodeName == 'i': beginTag = '' endTag = '' elif node.nodeName == 'tt': beginTag = '' endTag = '' else: beginTag = endTag = '' description += beginTag + self.extractTextFromParagraph(node) + endTag node = node.nextSibling return description def createContent(self): # Create the items. self.heading = HeadingItem(self.name, self) self.description = DemoTextItem(self.loadDescription(), Colors.contentFont(), Colors.heading, 500, self) imgHeight = 340 - int(self.description.boundingRect().height()) + 50 self.screenshot = ImageItem(QImage.fromData(self._menu_manager.getImage(self.name)), 550, imgHeight, self) # Place the items on screen. self.heading.setPos(0, 3) self.description.setPos(0, self.heading.pos().y() + self.heading.boundingRect().height() + 10) self.screenshot.setPos(0, self.description.pos().y() + self.description.boundingRect().height() + 10) def boundingRect(self): return QRectF(0, 0, 500, 100) PyQt5_gpl-5.10.1/examples/qtdemo/examples.xml0000644000076500000240000002645313245231431021160 0ustar philstaff00000000000000 PyQt5_gpl-5.10.1/examples/qtdemo/guide.py0000644000076500000240000001121013245231431020250 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QLineF, QPointF class Guide(object): def __init__(self, follows=None): self.scaleX = 1.0 self.scaleY = 1.0 if follows is not None: while follows.nextGuide is not follows.firstGuide: follows = follows.nextGuide follows.nextGuide = self self.prevGuide = follows self.firstGuide = follows.firstGuide self.nextGuide = follows.firstGuide self.startLength = int(follows.startLength + follows.length()) + 1 else: self.prevGuide = self self.firstGuide = self self.nextGuide = self self.startLength = 0 def setScale(self, scaleX, scaleY, all=True): self.scaleX = scaleX self.scaleY = scaleY if all: next = self.nextGuide while next is not self: next.scaleX = scaleX next.scaleY = scaleY next = next.nextGuide def setFence(self, fence, all=True): self.fence = fence if all: next = self.nextGuide while next is not self: next.fence = fence next = next.nextGuide def lengthAll(self): len = self.length() next = self.nextGuide while next is not self: len += next.length() next = next.nextGuide return len def move(self, item, dest, moveSpeed): walkLine = QLineF(item.getGuidedPos(), dest) if moveSpeed >= 0 and walkLine.length() > moveSpeed: # The item is too far away from it's destination point so we move # it towards it instead. dx = walkLine.dx() dy = walkLine.dy() if abs(dx) > abs(dy): # Walk along x-axis. if dx != 0: d = moveSpeed * dy / abs(dx) if dx > 0: s = moveSpeed else: s = -moveSpeed dest.setX(item.getGuidedPos().x() + s) dest.setY(item.getGuidedPos().y() + d) else: # Walk along y-axis. if dy != 0: d = moveSpeed * dx / abs(dy) if dy > 0: s = moveSpeed else: s = -moveSpeed dest.setX(item.getGuidedPos().x() + d) dest.setY(item.getGuidedPos().y() + s) item.setGuidedPos(dest) def startPos(self): return QPointF(0, 0) def endPos(self): return QPointF(0, 0) def length(self): return 1.0 def guide(self, item, moveSpeed): raise NotImplementedError PyQt5_gpl-5.10.1/examples/qtdemo/guidecircle.py0000644000076500000240000000732113245231431021442 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# import math from PyQt5.QtCore import QPointF from guide import Guide PI2 = 2 * math.pi class GuideCircle(Guide): CW = 1 CCW = -1 def __init__(self, rect, startAngle=0.0, span=360.0, dir=CCW, follows=None): super(GuideCircle, self).__init__(follows) self.radiusX = rect.width() / 2.0 self.radiusY = rect.height() / 2.0 self.posX = rect.topLeft().x() self.posY = rect.topLeft().y() self.spanRad = span * PI2 / -360.0 if dir == GuideCircle.CCW: self.startAngleRad = startAngle * PI2 / -360.0 self.endAngleRad = self.startAngleRad + self.spanRad self.stepAngleRad = self.spanRad / self.length() else: self.startAngleRad = self.spanRad + (startAngle * PI2 / -360.0) self.endAngleRad = startAngle * PI2 / -360.0 self.stepAngleRad = -self.spanRad / self.length() def length(self): return abs(self.radiusX * self.spanRad) def startPos(self): return QPointF((self.posX + self.radiusX + self.radiusX * math.cos(self.startAngleRad)) * self.scaleX, (self.posY + self.radiusY + self.radiusY * math.sin(self.startAngleRad)) * self.scaleY) def endPos(self): return QPointF((self.posX + self.radiusX + self.radiusX * math.cos(self.endAngleRad)) * self.scaleX, (self.posY + self.radiusY + self.radiusY * math.sin(self.endAngleRad)) * self.scaleY) def guide(self, item, moveSpeed): frame = item.guideFrame - self.startLength end = QPointF((self.posX + self.radiusX + self.radiusX * math.cos(self.startAngleRad + (frame * self.stepAngleRad))) * self.scaleX, (self.posY + self.radiusY + self.radiusY * math.sin(self.startAngleRad + (frame * self.stepAngleRad))) * self.scaleY) self.move(item, end, moveSpeed) PyQt5_gpl-5.10.1/examples/qtdemo/guideline.py0000644000076500000240000000576313245231431021140 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QLineF, QPointF from guide import Guide class GuideLine(Guide): def __init__(self, line_or_point, follows=None): super(GuideLine, self).__init__(follows) if isinstance(line_or_point, QLineF): self.line = line_or_point elif follows is not None: self.line = QLineF(self.prevGuide.endPos(), line_or_point) else: self.line = QLineF(QPointF(0, 0), line_or_point) def length(self): return self.line.length() def startPos(self): return QPointF(self.line.p1().x() * self.scaleX, self.line.p1().y() * self.scaleY) def endPos(self): return QPointF(self.line.p2().x() * self.scaleX, self.line.p2().y() * self.scaleY) def guide(self, item, moveSpeed): frame = item.guideFrame - self.startLength endX = (self.line.p1().x() + (frame * self.line.dx() / self.length())) * self.scaleX endY = (self.line.p1().y() + (frame * self.line.dy() / self.length())) * self.scaleY pos = QPointF(endX, endY) self.move(item, pos, moveSpeed) PyQt5_gpl-5.10.1/examples/qtdemo/headingitem.py0000644000076500000240000000770513245231431021447 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtGui import (QColor, QFontMetrics, QImage, QLinearGradient, QPainter, QPen) from colors import Colors from demoitem import DemoItem class HeadingItem(DemoItem): def __init__(self, text, parent=None): super(HeadingItem, self).__init__(parent) self.text = text self.noSubPixeling = True def createImage(self, transform): sx = min(transform.m11(), transform.m22()) sy = max(transform.m22(), sx) fm = QFontMetrics(Colors.headingFont()) w = fm.width(self.text) + 1 h = fm.height() xShadow = 3.0 yShadow = 3.0 image = QImage(int((w + xShadow) * sx), int((h + yShadow) * sy), QImage.Format_ARGB32_Premultiplied) image.fill(QColor(0, 0, 0, 0).rgba()) painter = QPainter(image) painter.setFont(Colors.headingFont()) painter.scale(sx, sy) # Draw shadow. brush_shadow = QLinearGradient(xShadow, yShadow, w, yShadow) brush_shadow.setSpread(QLinearGradient.PadSpread) if Colors.useEightBitPalette: brush_shadow.setColorAt(0.0, QColor(0, 0, 0)) else: brush_shadow.setColorAt(0.0, QColor(0, 0, 0, 100)) pen_shadow = QPen() pen_shadow.setBrush(brush_shadow) painter.setPen(pen_shadow) painter.drawText(int(xShadow), int(yShadow), int(w), int(h), Qt.AlignLeft, self.text) # Draw text. brush_text = QLinearGradient(0, 0, w, w) brush_text.setSpread(QLinearGradient.PadSpread) brush_text.setColorAt(0.0, QColor(255, 255, 255)) brush_text.setColorAt(0.2, QColor(255, 255, 255)) brush_text.setColorAt(0.5, QColor(190, 190, 190)) pen_text = QPen() pen_text.setBrush(brush_text) painter.setPen(pen_text) painter.drawText(0, 0, int(w), int(h), Qt.AlignLeft, self.text) return image def animationStarted(self, id=0): self.noSubPixeling = False def animationStopped(self, id=0): self.noSubPixeling = True PyQt5_gpl-5.10.1/examples/qtdemo/imageitem.py0000644000076500000240000001122213245231431021117 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QPoint from PyQt5.QtGui import QColor, QImage, QLinearGradient, QPainter from colors import Colors from demoitem import DemoItem class ImageItem(DemoItem): def __init__(self, image, maxWidth, maxHeight, parent=None, adjustSize=False, scale=1.0): super(ImageItem, self).__init__(parent) self.image = image self.maxWidth = maxWidth self.maxHeight = maxHeight self.adjustSize = adjustSize self.scale = scale def createImage(self, transform): original = QImage(self.image) if original.isNull(): return original size = transform.map(QPoint(self.maxWidth, self.maxHeight)) w = size.x() h = size.y() # Optimization: if image is smaller than maximum allowed size, just # return the loaded image. if original.size().height() <= h and original.size().width() <= w and not self.adjustSize and self.scale == 1: return original # Calculate what the size of the final image will be. w = min(w, float(original.size().width()) * self.scale) h = min(h, float(original.size().height()) * self.scale) adjustx = 1.0 adjusty = 1.0 if self.adjustSize: adjustx = min(transform.m11(), transform.m22()) adjusty = max(transform.m22(), adjustx) w *= adjustx h *= adjusty # Create a new image with correct size, and draw original on it. image = QImage(int(w + 2), int(h + 2), QImage.Format_ARGB32_Premultiplied) image.fill(QColor(0, 0, 0, 0).rgba()) painter = QPainter(image) painter.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform) if self.adjustSize: painter.scale(adjustx, adjusty) if self.scale != 1: painter.scale(self.scale, self.scale) painter.drawImage(0, 0, original) if not self.adjustSize: # Blur out edges. blur = 30 if h < original.height(): brush1 = QLinearGradient(0, h - blur, 0, h) brush1.setSpread(QLinearGradient.PadSpread) brush1.setColorAt(0.0, QColor(0, 0, 0, 0)) brush1.setColorAt(1.0, Colors.sceneBg1) painter.fillRect(0, int(h) - blur, original.width(), int(h), brush1) if w < original.width(): brush2 = QLinearGradient(w - blur, 0, w, 0) brush2.setSpread(QLinearGradient.PadSpread) brush2.setColorAt(0.0, QColor(0, 0, 0, 0)) brush2.setColorAt(1.0, Colors.sceneBg1) painter.fillRect(int(w) - blur, 0, int(w), original.height(), brush2) return image PyQt5_gpl-5.10.1/examples/qtdemo/images/0000755000076500000240000000000013245231431020053 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/qtdemo/images/demobg.png0000644000076500000240000005030313245231431022017 0ustar philstaff00000000000000‰PNG  IHDR X­¨rBkPLTEAAA###kkk555WWW666bbbTTTYYYXXXUUUVVVZZZggg[[[777\\\]]]^^^888___```999aaadddccc'''eeefffhhh333iiijjj444000---222+++%%%...111$$$///,,,***)))&&&((("""!!! wwwooo‰‰‰mmmnnnlllpppqqqrrrtttuuusssvvvˆˆˆ………yyy†††ƒƒƒ‚‚‚„„„‡‡‡}}}€€€~~~|||{{{zzzxxxMMMOOONNNDDDEEELLLPPPGGGJJJCCC<<>>@@@===SSS;;;:::???`ì˜OIDATx^ì™7ŽÅ0C稣è~Øtü¥‚©Z»[ÃâÕvñ@D -È»k¤ÿXœsç˜'ÖZ­”²Ùvd8ˆõùÑR x"?}áýl%qȃ™õG”UÁï÷’œ~‡p‘ÊŠé Å”J”ˆË%¢”ò¥DŽR"bÀhLjT¼¤„ÏͦT’„Ù–³6U‰ÜYåÖx­òÏј’í’„¹•—V)K¤YbÀ(´F²"Ð)’)¥IÐ"M‰T—ú#D  º0¬µ³íÙ”Ò$ápdzD4bÊȺs„4Tj3ä«/Ì&™rJ’÷³D˜«K#ëÆ"жÅÈLÈw_8M)’ Q’\"éM¤Y×à—={Yiˆâ8<Ä,Š â" UTp!>A!Ë\K/¹¨™™L¦µV«µj“Æ&ï\ø.\ù-~opÎEÓ(úMX”eÏÒ4ÍÓ8Žéˆ·LA…Íc|À9Ï'yNéˆR!†BŸR†2I’0@ÅŸ=wÞ´!hc8á NƒÀ÷|ß¶Ol×uû®ã8=Çó¼ž+Ó4­k«iöW뺮/«ªj/ÚvG!Ûã01UKk Í챂­Öj‹©7妬Ô=¬U÷°z…†l¾]ü¿?U> üìt:ÏÝ®a¼º®Ïañ·ùÏ;çÖÜ´†áŸÆ§ø¤Z±E,Ë'pÆpÛ_‚I™„ßPJÁ4¤I;?¿ï·ª¼|µÈRL‘÷½xï5£G»>isä/jy˪ü¡Œ|YÕjõ²ºZW¼îj5ñ+ÝŽÁJÝÀ/N‘Ék¤s†x÷î Ý»¯pïŽéÞ}I÷.n^k‚{7“èt:Žã8¦ÔKˆAUk!åd¯‰ä,ËÊä3™L#Õh4Ì¢iÖë…zÝ0²†Q«ÝÕä%àR/÷9ämù=…d*d¸¿¿¿è-æóóÃós‚iß#ÝÏH÷³Àå§/]××ékD•|þ±z÷CVd®ûÿ)Ù«éz.6äã…÷€Mø3⃞í'_¶[ $ÓAR· ª*ð8 >šÄ‡>2ÄGƒø0ÁGø0ˆøˆËG|Fäz–¤$ï•Jeˆ5d´ ½sdp{ >nˆ{ÉÇgM@Š¡AÅÑ âhP)*Tq4¨¦àÁ—Ôâãt<ˆ3ð!÷>'ÄÇ+âc >^"/æÉ$F1‡M|”–|´ªÀƒøhøÈ âÃu¤` w5D®~—ÀcøÈ´Ö¦þå#•H§û•Š\D‹Ö,"Dî´°ˆˆ&৯ëoóÁÑPk^ ª)ñA%6àã ñq >^K78AìWHiŒMâà â£C|8àÃ&>JK>Zàã€øhøÈ ù’2‘BÉñA»Cl­€ñ‘#>h/šZòQL$Òéå"2ŸÏ×n²4?yq4¨T *E…*Ž•DÃ-˜¦ W=›ø(-àõ€{ xâÃ6ñQZòÑH¹‰ìYH>ƒxêaÖ‰O=jžzð‘#>ÈÕRK>ŠÅbâ(™Æ"B&"M½7W›¬˜Hˆ.ŽCƒŠ£A¥¨PÅÑ ’hxDÒWß-Iõx(57‰¦5W=Ö«ù{ªOà£`v“I,"Øe !"l“@Ú1”­æéhÕ\•¢RÍO™šÿš[LÍMOÍ $[óÔüò«jŽ*‚Bác§ÛMÒ"RéóM–'!÷RB4qQs$j5W%ªùéC©¹E|0õjžej^öQó # à£à´»±ˆ¨M–÷&ëÛ¢K«9«sHÍO£SóSs ɹê=57¨9ø(Ù¬Ó~Š5Dš:Æ!ËMF†~¢K«ù*SñcÔ¼…T™zXR=˜šÔùX@fYò´Ýîv³M–”Û¸KˆVs$¤šs>¦âG¨yµ…¬™ †Rsâ#;Ë"õÁ Ýf›,w\w ÑjŽ ­æœ©Ø¾š·ˆ5SÁj<ˆ”s8<Å"ßdyãBoœ®$D35G…VsÎ"¶¦æþSÁðjžõøÈ:‡‡ÏÚí¶»ÉòÞôΕ„ÄQÒµš£¢SsUâÕÜajî; ¯æŠòŒm² ! 9Nç¢ ˆ•šW¢TsUâÁÔÜ!>¾9ŒJÍ‘e9ÏÝM–ºãt.!¾’®K«¹*™šO˜š;ˆé3Œ^ÍU½žÜdu»Vä&‹IHÜ%]«9*„š³©ù±˜z8>SÁðj^\Qs¯î.lân²’Iþ¦—Iˆ& ¦jŽ £æ¬.Ćj>fjnM6t˜zD­æÅ5÷Šþ’´G=ÚdѸp½„tïc+éZÍ‘jÎ ?˜ŠÔ¼ÅÔ|B|øLëyž©y‘ø`êáÕñ@a ñÞôá®HˆVsT5çu>.Äj>&>ØTp§‚«yž©ù§"ÂÔÃ+ïW{ûx$7Yî›^.!71–­æ¨hÔu!ù¸Õ|L|øM£Us¨¦‚ÅUõ@ÔQÆpD›¬Á€Æéé´+!râ7)Ô¥Õ\Õ-ñA%¾OÍÙTpì7ŒXÍó\Í׫ÊEÃ-{8Ä& ò5 ñŸêÒjNh¸%¾G̓}°^ÍÙT0ï?”Å2 Fî›Þµâ?)Ô¥Õ\ñq+Ö©9?‡Ê*½šš *5WeG°&! &!ñ—t­æ¨ÍÕ\•Xò±åc®ÌõÇ\•ƒNg %éÃኄxÿ„설k5G…QsU‚s…lç˜+3À1Wêƒ]_5WeôW$d§&…ZÍQ¡Ô\ÕL¬?æêl;Ç\eý޹  æ¼ì~xÌ%d´¿3“B­æ¨Pj®j6›‰ÿÃ1WÕ`ìr5_-r<ô$ÄûñVJŸjâ¨æH(5W5CnÄâcÇ\!~Ç\UsF/»ÿÄ•ïs,uú›jXi5gu#ù˜‰ísUàƒ]ßCëí'®„Ð7ïî?!ÞçŠ|R¨ ˆ¿š£6Qs÷€*±2Œ^Í£ø—Ö_=xGý¾; q?Ǫ„¸“B2ØI×jŽl¦æK>f⡹ÊDõ/-WŸš–ޤ„ÈϱºRBÔ¤pw$]«9jC5W|ÌD´jý1WþSÁÕºš^OBøédW$]«9js5W%¢=æªð˜«ðjÎë |)!Ï{‡«“ÂÝt­æ¨0j®JDwÌ⩇µv*ø{w¶ÛDDa¸Ä&!`‡ÕØÀ$,fy.Y/x‡2CÃàN ,y|šÎÄGbU·Üã.DYÑÿuñ©í“ŽhŽ4ÿŸsíÁÄ)½ùMÈ_/…<Ò5JsÄP3WO%ÑÙñ÷áÒŸLüKá9/…Ò5JsÄC f®FÌÌÕrh>»‡ôÉœ—¤k”æÈ¾qJ³@WÁ\4Ç}8ƒLðRø¿"]iŽDÐ1þ>ö)žæÌ«`.š#k›[ãñÁKáÍGÁ_çÕ(ÍÓ܇¡0šo€æÌ«`.šûéc =öë¼¥ùì> q4Ÿ¹ÊLs¤¿é¤…ôÐßÜj”æ¸Cóh>Í™™+A4GÖ6ç!=ø7·¥9BžæÌÌÕèÑÁõjš#î@¶Æ-¤ÿæV£4GÈÑ4_ÊÌÕ 3sOsE:¥¹KÍ‘šÚ3W/sÏ\ÅÓ\>Ò5YhŽDÐÙ«kÊ=sµ z,Fs¤'éš,4G"hŽÔî>j-gæê3sµ(Í; Cº& Í‘š#µ¿š–;su&dæ*žæˆµS;…tMš#4Gj.ÔÉÌU?áÌOsÄþ¹;„tÍ?IóÙ}ÔÔåÌ•e^“б÷aGŠôV”æM‚hŽû¨)!ÍÓÏ\ñô@¦‡÷aéí(Í}BiŽPº™«õÔ3W<=‹û‹tÝbÈBs$œæ¥š¹Z?¤G/fæ áèÁÒÜúÈEºn1d¡9As„h!š·g®zž©i¾ÃÓ‰tÝbÈBs$‚æHI%-@óKžæ¾°Û¦9"éºÅ ŸæHY’û‹ y{æêlŠ™«D4—tÝbOs¤ô÷QRÍ3Ì\…Ñ\‘ÎDiŽð4ß+݇|x𝀿f®‚h®Hg¢4GBhŽû †æùg®xšËGºÒÉBs$ˆæ¸’Žœ¹23WRh.éJs$ Í‘Pš#ÄÍ\ ˜™+)4G*©H×-†,4GÂiŽPÈÌ•|š#Uµ=tÝbOs¤ Ö53s%‘æHåî£ Fºn1ȧ9R»Ä½ ʧ9Rùû¨†Št&Jss$Í‘ÂÝGA²g®xz ÛÍ}TCñH×-†,4G8š»þ> ’Òé§9"C3W‡‘™+$F8Íý¨êDu\é¤9’@sÄ£9"ÍëÌ\ÅéèÅ}è¸8ÒIs$æˆOsD@{ÕßÒÓ|òÿ>´6ÒIs$“æ2@sD¥¥·´QÜGi¤“æHUš#ª* ½¥õ£¸ÒH'Í‘ª4Gº¯IŠÏ\á-­œ‘ iîßÇìk’ŽÍÓ!Òƒ!Íñë ™M²µ.4'Ò!Í‘>šƒ´²&4'Ò!Í‘~šƒ´²4'Ò!Í戬Í[C:iŽ¥9"ÍÓ|ÕH'ÍIsä‹Ôœ¹ŠÓ±›Dz ¤¹ÿ˜+)4?X5ͳié in ší¬+ 4?X5Í‘ŽZí 4Grin šYW|šR¨ã4GfÔZéL Í‘š# ƒWšgÏ\Åi®sj…‘ΤÐÉ¥¹-Òà•ÀÌUišƒZQ¤3)4G Òàoæjz4@sP‹H&…æHIš#˜¹ªMs„H„4ï»D°@íÌ\µAs„H䜽{Û£ˆÂ(¼%:–¡)È1æ"RŽ”;á'x|æà™Õ¦%ÊêÒfÏÅzƒºø4úwBs"¡9™¨÷wKlië 9©éAs"¡9™¨wEKliå4yGšç#=š ÍÉD½Xág®îHó|¤ÇàCBs"¡9™¨÷†Vþ™«4Íó‘ƒ ÍI4'{X&Í/ühŽ5Ò4ÏGz >‚æXŠæú-mšæùHÁGМŒ`Ê-m>Í›AzМHhNn;À$[Zš“wgÕ!=hN$4'ÿu€ ¶´4'+—e = š ÍɦßÒæÓœlpv6é1øÐœ”As²¢‚åniõ4'78;›‡ô¸Å ¡9)ƒædã«æd/´ç"=n1ÍÉÖ ÖÍGB›‹ô¸Å4';/X4 ­b¤͉„æ4X4 -éAs"¡9‘МŒÑ`ÕÓ|$´¤͉„æDBsr[VÑ––=r4'š“"hN¬Š-mšæYHš ÍI4'×Vþ–6Ms’ô8“4'׿Zñ[Ú4ÍÛBzМHhNÖ¸°ÂÏ\¥iÞÒƒæDBs²†5CsòIµHš ÍÉNÖÍɹÍGzМhN$4'Ú 9YKîh.ÒƒæD@s"§9̰hN¶’;š‡ô 99tšÃ «žædǹ£9Hš“ 9±Vh>â\.Òãã‚zš ͉ Î\9Ð|ņ47 ÍÉñ±}护éAZAz|\PBs²XÞ––¸niÓô ­ =¾û/¡9ÙŽ@lDÁê|šOL—‰ô 9МHhNv#)li]h.@z|÷¿Yš3²5‡-­€æ¤Çwÿ¦9G,K«§y“Hš“Åi~¼åniõ4oéAs" 9±¼3Wzš{!=hN4'𫛿M"=hN$4'}oEž¹šAsòá´j¤͉„æ¤_ý¬À3W3hNVì;‹ô yМl¾™si培JÓœlìw:éAó 9é·ï£·²hþnÍÉýNBzМ,Hó~÷>z›AsÕ–6ñ>öìšAzМ,IsÞGo‚-­ ҃͠暓…i~¹U´¥ýŸÀF‘.¡9‘М,Nsb‚-­ÍI{H—МHhN4'&ØÒzМ´‡t ÍÉáÑœ ƒ±¥­˜æ¤=¤KhNædý‰tk…æ"=h~Ûî4'Ãú} VÍÓôðDzМHhNÜiN†íûøÅʧyšžHš ÍÉ‚4vïc°Òiž¦G“H‡æDBs"¡9Y’æ¼Á*¡yšd¨éМHhN$4' Ó|ØÇ¤g®òÿœæòŸ“Ê‘͉„æäÐhN¬¼3W3hNÖP‚æÄæä¼éD¸¥As²Óâ‰#ÒƒæWšwš“î¼ë¬¤3WY4G‹~Hš_IhNÜiNºõûèlB:iŽ=‘®|HhN$4'î4'Ýö}t6¡G4G‹žH×>$4'‡Cón÷>ÎmDªiN®¤9‘МÍy ýuÕ4'ŽH×ßbšWšwûX34÷FºþCМ8ÓœX4OÓÃéAs"¡9q§9±¢Ï\Ý•¤ hN$4'š“hN¬ø3Wiz. 9‘МHhN 9yÑYÍý·´iz. 9‘МÍyzúÎÿ NsÕg ]IóÙ»“]'b ŒÂ%q‘°¡%¤±`Ä8D \†0ÏOCHÎÝõÂe~_S½8oP‹O­r-Ò|Ž„æä?¡9óqdŠ]Zš“Y•ë†H×_0š“V4g>ެ~—VOsòG•ë–Hš ÍI;š3O­v—VOsò—–ëvHš ÍISš«Û¥ÕÓœh¹n…ô 9‘М4¦91Ÿg®ô4‡–¤+.hN$4'ÍiNl šCKÒ 4'ãÓœX/4ßÖÒœ´Gºþ‚AМ¸Óœäb}Ð|[KsÒéúã‚AsâNs’sÉÖÅ3Wµ4'¤ Ž ÊiN$4'î4'9ç’³éi¾u¡¹éAóšw𓼛lмß]Úez(Ç%4' i^öó‘­ÿ]Úez(wÿ¦9óQ¬÷]Úez(wÿǦy>ÄúÞ¥]¦‡ éú»ÿAsâLsb=?sµüWP†týÝÿ 9q§9±AhNÞ~]É‘wÿÛÓœ¸Óœ¤dCМüvèª=ÒƒæDBsâNs’RÚØ4';‡®Z#=hN$4'î4'iþ6ÉN=ÍÉ£«¶Hš“ÑhN6»ùH6 ÍÁhk¤ëiN4'ãÒ<íç#Ù 4£¤ i4'~4g>’õòÌUÍÁ¨éBš͉+ÍÓ!ÖÇ3Wõ4'¤Í‹€æÄ™æÄzx檞æD‚ô yМ8Óœ€tá.­ÍH—ÓœHhN4'î4'Ódêg®œh.Fº„æDKó2ÍÉ4=N1ÍÅH—Мhi^º 9©¤99žæïØÊ4×"]Bs4?™Jš“i7“ @s)Ò%4'Aó“q£ù´ŸÉF¡9yyîß!½!ͱw'»NÄ@†K¤0ÉØFbÁ‰q‰ñ2¤I3u.O”ÛɹÔ$ÇÒi—Ü‹ÿ jñ©UåŠhŽhŽ”£9æãºù 9²Ak"^#Í ÍÍ‘¢4?ÙÇ* ù$=-ZôŠiÞIhŽx¢9bs?s5Md”k"N,|hiÞIhŽø¢9b³:sÅУÛË5H'>”4ï$4G|Ñ Á Ó|IМ¡G¹H'>”4ï Ò¼ÑY…Lwšÿ+ˆ@®Ò©…Fs¤fš#a6ŸÍd—–§9B ^øh4?©™æH8›•Íb—–§9B ½bš#š#š#…hvól»´<ÍéÓ‘ÐqBsÌG0ù.m!šH§iŽHhŽHhŽø¡yØÇÊœ¹ÒÓœG:¿ð!¡9RŠææH44ç‘ÎßbÐi43†¢ù˜{óBséü-†FsDBs„¢ù˜cÍÍy¤ó·Í ÍŠæcâv>¢¹¡92H¯™æˆ„戄æHš‡~œh^hެI¤ó·$4G$4G$4GŠÐ|?Ѫإ¦²æÎŸI”БÐqAsÌÇ`5ìÒNÓYSHçÏ$ÊhŽ…FsäHšIC²šviÿg>¤óge4ÇÂG£9r$ÍǤ4¤dsÚ¥åè1†B:&±Ñ‘Ð!h¾IÚÎG²YŸ¹B¦éHw@sDKó^Bs„¢yŸÆùHæ…ætG4_JhŽHhŽ4ßÏÇ`NhŽH÷Có¥–æ}å4Ç|$óAs„A:OsD@sDKó¾~šï’³y¡9tžæˆˆæXøh4G&iþ¯ùXäœÍÍY¤—Á Ñ‘Ð9„æ1a>R^äÍghN"½üã‚æˆ„æÈ!4ïA”òÙ|,L}抧9tžæÈ¼hnZšš#‡Ð<ž§yÞÍG6ñ™+žæÒÒÑÒ|Ð9„æñ<Í3æ#ÛQôàiÞ•¦9ò­?éž<–æÙ»·åƉ À]GE²«†•Œ\[µ` ‡}$ ‹ÉÌ!fãÇg4šF^Um:Æ5=.þ7苯»G}  GLsW%1è!ðêýëC™xÎEº‡ã‚þiŽØŸæ‰æˆ²,â--¿>4Œç\¤Oåî¢yþš#Jõ=£ðßÒòëÃÀxÎEº‡»ÿ‰æ:diž?…æˆgº>J ý--߯sÒ‰<L4W!Kóü)4G”¦>J:¦·´ cÒáIÜý¢9B–櫽hn룤°sŧ9ÀCºö9EMs„Ͳ4Ï÷£¹«*š#HÇ=bš#„hŽ8Vš›¨ªç Í ¤oí=Zš#ö¢y¢¹‰JÕGEáÓü‡æ*xHWõ±Å=Rš#ö¢y¢¹‰J×GE±Ðœ‡ô¾É‹%“Ds™»ÿáÓ¼|n꣢8hÎCúf³ÁD#ÝÛÝÿDóë㢹­J”æ·¢9éÝd£‡ @ú$hŽ¡9âØh^U õ--Ÿæ<¤«&ÖpSQ7y'@s„ÍÇGsĬ¦0ßÒòiÎBº®U ªÉ ¤Ã~Ž Ñ!BsÄñÑQÏêšB|K˧9馉u±ÒÑ¿òs\Pˆæˆ'Ñ<ÑQwõQSØoiù4wñÙ.Òû&ÖC×ÄÒ1D÷s÷_ˆæˆ@hŽ“æãú¨ûú¨‰7 Ÿæ¥„]¤÷M,U @úý=†è¾îþ'š#¦y9¤yú˜Q4Gh* ‘Ž&Ö®b‡è~îþ'š#iŽÑ±Ksõ™ hŽÒÑIJHÿGääCôÉÐ!Bs„ Í#š#Þ§yÈ(š;*¬ ÒG›&/M“K&âwÿ·²Ç×1Üýçÿ&qDsĈæˆ,Ë(š¼`Ž&–EºÞäÕC ÝÍB4GÄEsþŸæˆóL}Í^0HwM, ½oòbSQ7y}Þý¢9".šó/ ø4Gdº>Î)¸ß\ñéxHmšèMÅÛT„?<Ýý¢9b4/Gó:3õ‘Qø¿¹bÒÜÅ\7±Þ¸Meôþ¹íK ½¢{¿ûŸhŽ8<Í‹CÒÜÖGF¡ÿæŠMsëÝMlbÝn€t,™L“æ«ÇhžhîêcA šK¾¥åÓÜÅ|gÓD7±º&/N„!úi¾bÐ<ÑÜÄb± ÀßÒòiîb>Ø4A ›X]}†è>iŽ¢9‚AóDs õó-mø4w1·›&¦‰…ç„›þw vˆîæYš¯4O47q¦ëcALz„Oó1Ò/°ib‘þj‹!ˆFˆ/š#di¾bÓ<Ñ<[˜úX“áÓÜÅJ#]ýâ«®‰õ n›¼@ºš#Ž‡æ‰æ¶>Äœ †OsÄÕ‹B!ýs»i¤£ÉK@ú‹+±»ÿ‰æ³°i~¶@P$4Gtî.Ò/U(¤¿²H7M^l*Â¥ùZˆæˆÐiŽhrŠæ3×(º&Ö¥jbéª>Ü&–««©Ò|-KóYè4G4MÞP44kçâE×ĺ|óH×M,Ýä5HÇ]êî¿,Íײ4Ÿ…NsDÓÕGC±Ð|°WµÒÏ¥€ôõu©á&Ö_X2¡ùµÍ²4Ÿ…NsDÓ×GCqÐ|g/·P¤ŸžöÿÄzg7±TCtš_ËÒ|Í¢y¢yŽúh(š›Ò@_麉¥¯Ké‚h¬ø£9"Ñ|Tâ4ׇ. ö[Z>ÍC¤w›XÝ?¾ÒíÄ!ý©»ÿ‰æçò4G¼OóÑRàoiù4G鮉¤÷M^ AÔ7Qš#„hŽðMójDsĈ戢m)ð·´|šï"Ý5±€t×äµH—¡9Bˆæ!š#|Ó¼Ñ1¢9¢UõÑ’‡·´~hî¢èêÃ4±€ô[ÓäŦ¢nòJÐ!Ds„Í¥9ÿ7‰cšg#š#Z]-þ›+>Í]¶‰¤«ME4ytøC„æwB4GD@sÖŸæˆÖÔGAÑÐÜE&nžn·é0B4¿¢9"šó/ìAs[-þ›+>Í];›&º‰uÛÿ H7Ctšß%š?RÅ> JsWK û7W|š»¸ùy¸i¢›X»›X7¢'š«¢9‚AsƃCÓÜÄr¹¤°sŧ9B=óÈ-ÒOT\öM,‡ô› ÑÍ¢9‚Es„7š›˜/ÕGáÑüí4Gè[¹Aºjb ‰¤£É«)#Gs„ÍB4G°hŽðFsK]sbÐ\fa—Osnáä麉u¢›Xé}“×nºKÑ!Ds„Í,š#<Ó¼]šúXRà »|š»[jyw=çõ÷hb9¤ßŸöM^lºË¢9â4O4·õ±¤ãyKû=P 鶉5Dúvkš¼@úƒäÝÿxiþ{wÛÜÄ EøŽÁ ¦µpÓ@xëÆ›4x’2ü$À¼´†\;?iWg¯Š²Õ8Sçj…üáüƒóá9²´ Ð\WA}¹K¦GcŒXҵћ‘w¤ÃòßýÏ4_ÄFs„Rý]Ú0ÍQ ÄØŽXŒô;béu%3ÍmÈÒ|ÍJ©=rO{MsŽq3bévÄ:Ò#nÑ3Íë¥ù86š#”釢dhÎ1~zæ ]÷ÃŽX@ú+¢ËÒ!Ds„,ÍDZѱ×ôCQ24瘟2ÒyÄÒu­pˆ.Is„Ͳ4ÇJs…~(J‚æ]H'øú¾¯7,¢ËÑ!DsÄÕ4Ï4ç~(J†æ>ÒñæÏfÝ"½yuó€tIšW±Ò<Ó\!~¥Thî#×¥6@úW¢zäm_j¡9B𿙿æÜEQ?s¦yÒg3\—ÒÍuÂI3ò陿Nüp4Gx4wû¡(òg®Â4÷ã┯Kéfä­G¬÷Œôu¦y©ÒáÑq%͹Š¢~æ*Ls?ªáHäyóõ ÝŽ¼T9H_/åiÎ!BsDâ4y4GtМû¡(Hsù»´ašsTÕ°i¤Ïfü0¯îÇ × éºÄò4GˆÐ‘ÍÃÏ$2ÍÝ4ç èŸ¹ Óœ£2ýÐÑ#V‹t;bé~éƒôµ‹t!š#DhŽH€æ/lOsŽ‚‚ôˆŸæˆªéG5Ò#îŒX@úAúÚAºÍצy¦yø ×£9âAQG¾Ò|ˆ~TŒôÓvÄb¤¤oéB4GDBsD„4Áà¦9¢Ðý(È£GOiÎý`¤óˆÅH?0Hß´HÏ4w#Bš‡¿`°š›(ê~ä ö•æèŽëR›!}ß }¤gš»!Góð n˜æª°ýx@©Ð¤Ÿ¤ó?M.‡éû.ÒßFFó¹Ír4ÁàÆiÞö£ ¾ÓÜ©#½±tAøŸ&·¾Gº4(KóyÍówÿh^Šü™«-èÁH·#–‹ô[éFºïs!š#¢£¹àwÿåiŽ˜N)òg®Âôðcd¯K9H?2HŸ´H_/¿ßwei>÷iž¿û/GsÄTÿhÇ4½3šƒ~ŒêËCúHCô¶²4Ÿ'NsDOhŽxhúñ"zzûSÁ«c¤G, ýØ ýÐAzÓ¥{5j—4Ï4Gô„æˆiÓ)õä.m˜æ£-ÒÏ ÒO¤×#/Ñ£¤ùBžæ™æSôcJqߥ Ó<ŒôFºyqˆ!Í‚4Gdšs?¦õ]Ú0ÍÃHŸ1ÒÍÈ»1oþéh‡,ÍQÐ<ÓœûQR¬wiÃ4"ýwƒôc G^ Ýï‡,Í‘Ð<ÓQ–(úg®Â4÷‘þÜ ýÜEúå%F^ Ý?ú¢9"šgš#JÝ’¡¹ôsFº6:F^ Ý÷ùEóLs„GsDY÷£¤4hî#ý Ýô£±øŸXK{ˆîMW™æˆÄiŽðhŽxdûQRÏiFº±VõˆE@ú‡èÑÒ|)DsD4÷£›æm?JJæ>ÒÿÒëkeF, ]¼8Dæ!š#Ò 9¢‹æª›æN?îPiFº±Ì› G«/@ºyÛCôŽ B4GÑ?ͯÿL¢ÿMsƒ;êÓ]Ú­nG,]ÃnG^¢3Í¢9BˆæˆÞÑ<üƒíinc û1 þÜ¥ÝévÄrÞŽ¼¸‰š;!DsÄÎhþ½{Ým"¢< Å„K á*H¡!¨—g‚Pî-Išx|ÖÎOšü-#elwÿœ7X­¾ã±§<šË 4¯¢¾år—¶ҹĊH¯KÞß'g@úvµÛÒü²?Lh®ß` §ùãNý}t(»´‘Ž H_,PòéÛþhi~ÙF4×o0ÐÓ<~7(ùg®š‡‹%^ š` HG•,ͧF4GìŠæòšw:*†æî½³‘~¸9‰Uÿ?æÂT‰ ÍF4GìŠæòšsP14瘌ª$"%Öúu[ S%f4ŸÑ¡¤¹õrA=Í9¨šs¸ÑÒÿø«»Xé¾ÄÂ!¡0UbDóiÞ4×o0°§9Cs7ÒqÒH“¼|H(L•XÐ|š;Íõ ìiÎAÙÒ\FzeôA(±"ÒCÉ{vñ“¼âTIKs'Ð\±Á ašsP¦4—‘Î%¾YòÎ3 ùÒˆææŠ IÓœƒÒ|æJôºÄð¤ÉlV—¼@:þ Ó|iKsׄæû%Ñœƒ’{æJΗX¡Äb¤Ó¬žÄÒáaªÄæK[š»&4ß/‚æ"ÒôPÒœ ¡çK¬°H%_·Å÷ñM˜*±¡9Â–æ® Í÷‹ ¹ˆt‰;{ZôñÁ:ÒQb}ÒqH(L•Ò|iIó–æ”Ü]Z}8_bE¤W߇/±³ˆôÓS|ÂTÉU¥yKsJî.­>&r¡y¿PšË ŒhÎAÉÝ¥ÕÇäH%éÕ÷QuX8D—iް¤y¿PšË ÌhÎAÉÞ¥Õ#K, K^ ]¤yKš÷3¥¹~ƒ!Í9(Ñ»´z¤w1i‘~‚ëèqÒ]¤yKš÷ó£¹~ƒ=Í9(É»´z¤s‰¤ûÅ ga1ŽjW˜*Qм¥¹bƒ%Í9(Ág®ôHç HßœT þi>I„æˆi.o0ÈæT Í9&¾Äzµ>iBä¯ú’H_¢gBsD‚4—7dIs*†æncÒ$”X—ÞŒÃ!z4GØÐü{w»ÛDDxDÂá³|ó x‚‹J!!!mZš†%—ñîñ¹Š­ÑhGþsî`ìÓ¼Òœƒ¤fiU‘î?¼4YÅ—X³õHÇHÖÀ‡>Í+ÍR4ç ™YZe¤'Œt”X³~r‚!ÂŒ] j4ŸWšg\0(’˜¥UGúøÎ%îKÞ8„ž±‹A›æ•æIšsà,­>Ò›f²Ýi²ÿ’×Íмü‚Pš§H%V—Òø-O‚ô–æSc4/¿` d„æ)ÒC‰Õ¬¶Œôî%¯ï°€ôÜ] º4 ¹À™ 4O‘ŽË @zwø ”¼@zÞšD]š Ð\ภTš§H%VDº/±Â8áH%oÎÀ‡.͇=£¹üqAá 34çp\b5XÌ‹qBF:ü‘±‹AæÃžÑ\þ¸ xšs¸®ÄÒQb-Œtø¼pÔQi®s\P>È Í9¾„ HoK¬Æ—XŒt ö›æ#mšë”2CsÇ/M.±éó9†ÐûLó‘>ÍõïþË™¡9‡é\b1Ò}É¢—ìbP¢9BŠæýºû/$Hs}¤£Äb¤·%/&mó×$êÒ|$Eó¾Ýý—’¤¹>ÒC‰ÅHGÉ‹ï#wM¢.ÍG…47t÷_>ÈÍS¤û?¸žÃH%/ù HÏ[“h€æVîþË™¡9‡kO@‡qFú:–¼@úñqÎ.4/½``Ÿæd†æ®}iòèý_HÇ8áåH‡?úMs—Ò¼ü‚A¥9™¡9‡ëvš0Ò¿Å8!ÞÎ×–ïbÐ¥¹Ki^rÁ Ò< 2CsJ,FúÓXbéÝüyñšD]š»Ch~Tiždæ)ÒŒô®ÄZ¯@útŠ!²5‰J4GBóóJó¤‹ÑCé±ÄZé]ɋѨì5‰º4w‡Ðü¨Ò¼ébôÐG:—X@z(yãOôü5‰¦i^iÎAfè‘"K, %/&m+Í+Íÿd„)Ò¹ÄÒOcÉ ¤Û ù‹4Ç÷¡$1K«ôô¥‰ÿ>NÛŠs }öMhÃmwÿ³woËMÃ`€‚N%.”ãp,0ÃK9mÅ´nZÒÇG’ÿµìrÁ…ùó«ÊÞè |ñ­ÖZSšÇèÊé 4·Gzœ¸ÒÑM,øcô‚-ÍwR¢¹Æ‚9ÒhnŽtbe¿i"!šXø>ã li¾“ÍU ì‘®@ss¤»«(»¦‰„X+·ÞÙ!]. Ç.ØÒ|‘Í• ì‘®@s{¤OŠˆôøæî2,|ÿgÁ€4W[0°GºÍÍ‘îŒ¤Ç H—ý+𓿠fHW ¹9Ò»‰Û.Īt y¥é>‚椹Á¸ 9Ò#r@z ±€t y¤é®°`+ÍíÇí‘ Òcˆ¤/»HWX0ÈŠæöã‚öH× ¹=ÒbMbÓı$äÒžIÌŒæöã‚öHW¡¹=Ò¯6MBS±ßÄ‚?F/d@óÔÇí‘ Ò'W›&mëM,|‚AÒ4Ïo÷_é yF‡û@M“bé3¹D'Í“ßý·Gz$@6H6Mb-ôò¢Ú®°``JóÌvÿí‘ Ò?÷‘Ž HMw| ¦4Ïn÷ßé @NHŸé…GúÚ‡X@zUõ›î×r÷—»ÿ›D:#Ò'+yÓH—&ï M÷k¸û¿«=.Hš‘d‡ôõz¿vH¯ir$!ïl¤+.TÜýW ¹ÒÏòDúÞž_ÏY­Ê龩Økb…w+wÿIs"® »ãÍÑàíÜý'͉ô°žÓCzÛÄ:r!/Þ–x hn>.Hšé>ÄrÒ%Ärë@:.Ñ hn¾ûOšé>ÄêßüÒ' ¹D×X0HŸæ¤9‘^é1ÄÒ%äEÿj{iNšé1ÄÒMw]š“æï’¦9‘Þ{ÓH¯äwtiº+Òœ4—4͉tYωM“bÉ%ˆ ]æ¤ùÓ´iN¤_]Ï9Æï„³~q1‚椹ւþA¤ð¿ƒì×ç±i"!Vlb…’¢Ö‚A^4WX00=ˆô¯¥ÓĵÝôbéð¹Æ‚A4W\0°?ˆô¢<<Ú…Xg@z#—è Ð\u\Ðþ Ò‹²·C, ½ip‰®0.˜8ÍíÇí"Ý…X@z÷0ïH÷— \¢+Œ &NsûqAûƒH/€t ±ÎA€ôAÓ47´?ˆôbéa$,­éšã‚f4ç¸à¿"=†X@ú·mˆÕ4@ºæ¸ )Ííwÿ?ˆôázNx¸:¬w¢©JŠz Š4çîÿøƒHGˆ¤/ðfh,hÒœ»ÿã"}Ø4AˆUU‡@z[âÕIsîþ+Dú•¦I±ü:a¤ŸÊªA‚4çî¿þA¤÷›&‡µoš„uB ýôT.Ѥ¹þ¸ iN¤Ç¦‰±Ú7M€tòâÝ`\pšÎ¸ iN¤‡kîB, ]B^iºo|\pšÎ¸ iN¤Kˆ‘~0ŸIÈ ¤ot÷šÒî?iN¤_þ ošéíï„~X Hßèî“Ðî?iN¤×õy±€t×Tôë¶hb…wƒã‚ÓtvÿIs"ýÙÛµû@\ˆ¤w¿¢‰lÍIs"݇XëºFÓd~r¹Äï„@z[âÝFš“æDº±ÖõDC¬ ýB.Ñ3Ûý×§yß‘îŒÞC:ÞüÒCÈ‹j»úîF4Ï$º"ÒÃÄ-Ž H—ý+ƒÝKšÛ/ØDz¹×Cº„X‚ôEØ|Æ%úµÝýÿÃÞÝ45íEag¤8Z_¨þ«(£ÂÇ…–‚À€ —‚‚M mŠ}·äã{Ͻçä&8ã]dÚ¼Ü'‹ó ²ø=ç$OšûÔ`à@º±éqq_ºçÐûŸÍ=k0p ]Úsì¥ …¼æRQšW³ÁÀ=€ôù*Ò¤_êÆÉ?GuÈëͽk0p ]>¤ëK·Û ÒÉÕ£9ÊÝHoòç éúŸXò ÒÍ’°z4G¹ {éMþD.!VÜnû€—„å£9ʳ ½ùaÃVÜJˆÕ»¤«——èå£9ʳ ýcéöÒDN!// Gs” .aéMAº½4¤$äe¤Šæèý_êÒí?M ÒéRñ†B^¹ä-ÍÑû¿Ô¤Û+Fº„¼‚ô|hŽÞÿü.!VÀH7!–.>°HσæèýÏé6Ĥ닋é…нÿ@º ±é:Ä¢7‰ôÎãмð½ÿ 9~÷Ç£b¥‘Þ!¤û×ûšééKb¥Þ!¤{ÙûšéöÒ$±‚é]Bz‡îSï?h.H·—&6IJHÒûŒôÌ4—š—né6ÄJ }LHï3Ò³Ò\h^º¤G‘±&©K“Á˜Þg¤{KsÐH+nSH¿!¤wé~Ò4Òça8iDbý鵚ß4ßö•æ@º2z¸EÉK“€~@:ùÃgšo{Ks Ûs’HïÝAºYúKómi¤S{N8I"}DHÿ#]–„Õ£9 ÜH§ëo¤·c¤÷ñ’°z4Gƒ{餯ÒÛ‚t yy‰^zš£Á ûÒ§I¤›——„%¦9ʳ }NHH·!/#½@4G¹à’~{éWò Ò Ds” .{éé6¨‹C^Fz½^š£\pÉHŸMšÓ$Ò/éǼús)û~ä@s” æ?€ô-ú¤M-ÒÕûÑR/‡¼tÉKKœhŽÞÿüNí ‚t±tÈkB,³$\ÍÑû_ü¤K;ˆF:ÿÓD½ ׄô®j€–%áh^†Þ }5œ1Ò# ±TÈK!–AºZ‚ð’0ÍKÜû¤ïÒMˆ5RF¤ë——èh^ÞÞ }ç6ÔHõf‰K#=uÉ›æeëý·4ÇÒéÒ¤1Q!Vh/Mèk,!oMî yùzÿÝ4ÇÒ“!Öõ”N!‡¼Êè‚tÍ34˜æ@úí|Í„XAÐ&¤›K, yéŠnšË¨Í1€tn—Zé¹Äê'C^ƒtò¹“æ2ªDs ]B^{‰eC^}©ÈKÍeT‹æ@zhB^±F|©x5Í¥¢,A¼¤9NïGÄ!‡¼-þÜV¿²ñ’æ@º^‚Ðyƒ8ä¥K#BÞVj R)š»ß }Öˆ/§7]òšk(Ÿ£×ë‚ôŠÑÜ]aéêýP!¯|nÛ¥·¥B,{É[«óVéhž½ÁH·—¼æRÑ„Xá)©©Ç\ò–‚æù6éº*¦bC¿ê™$.yêwqäMáú:ER‚êºâÂæ“M^Fhstª¨{°ùI=oö÷÷öž~><:úÿôôøøàääËîÞÅÅׯ‡?¾??>?;û¶û‡¸7Áê8ÞÅJüÙ ¿½––¾â5w*}ªzjT ‘™íå5Ã[[—ˆ4¹ó"f&~šá«þ†4Nûõ³â6 Äqýy,w&X!PH/Ù9|!øél½\4˜h¬µÙ>8DTiO !Ä1 É)c.k–\k]*2s æVø+yáßâ)!"[¬1.;ç†JY:*ÞZÒŽd%Ĭø)@G‰¬5Õ0¼»Fø•‡TTH¢¨ðIn*„Ä`ZlW± Ž!‰Éîƒil©¯#a¬¢^RKׇRÁ aÏÓ§/Ãyòžœ3æ ¹Z×H")z®”¹ö}ð1ÙHö²D8ý…Á9.ŒÛ[Cƒ8Æv}ø÷|Ãqk ¥B'Ý󡶆¨ÐaO™>ŸÇÉ®ÿtpìãQQRˆ(h¼?8×û£ù(åþùª.› @‘¥Ý‡>dí¹éCFŸFí¨L߇¦!!ñÑ?P)¹çC¯ŽÒó¡hô#*¥B‡|ät^/!fòÃ6$˜ø€4$ÈvÒª·NZ—wê&rÌ|Eï¢d1…ÏWà >úG+í£õ÷¯W>ö0’–F£eÞDJïh…ˆ”*>þíêzìQ>š€œþ°cw»mA†ª(ÁRY³0е©QªFý9ÌýßO?f?؉wÝöÀ‡Œ”W‰’Ã<šËÖäØ!c3b²ã-ÏBJê\’‹[óJ)ñM’i,qÁÇlsÊyè§•:Ò‘¤”h§0óš´”<\"6)ŪM’’¢7IZŠ>Í“R‚¿!ï¼(É®€"QRÔõžÎ4“C¸5—åô˜åôÈópzªÈ:Ì’*%å¬òËÄ’8j§üKŠzs (Z }Ü“|èx$Ì[H@¢6‰–²çð¹èʶ6yWUÕpÂØÇ†òúž\²qô‹…RøðbæíŽ.†fî'sþïp•7«ÃúÕ!ŸAqkl*cLcŒüÈ3N¸lf"8 3o RIÈ…¡䎔H ókMRÊ ’ç(J i¤¥0{Ouq|iûº6@‚ñ©0Ããb+Ïe‘‚ɼ”¯/œÒ+¦YþÛãP&t%†4ø©n¿¬yKu¤a0kêÚÖFýB0”ç,9a&FI•• eHJ±_·$¥¸;R¾Ãˆdú)oŒÞ)ÁÇï›ì9”OŸŠ¢{)K ÁHFƒy\D^à¢KÖ‹Ä-\ÎøR·ýä#\â\ŠâÁ1 úU–USA´m=´¤,s~‡P Ó¬1ÈÜÆu‰ a‚”´™^IÑ;E›y˜¤”&NrVR~ÂH2Ï>‚„¹¾Ãˆ$°ç;vÏ›¸FqÜYÛº°äÂ…%Ìøcã yA‘mÒÞOrSE€B>þ=sf< ³«ÕMJNñDIºŸCDá¼ZdJ5VäXû]iš¶Áº¦±èÒ)JY¹Üt–ÒO’Îyœž4E¨,¶ÓïªH£$ (ÈÓCê:­ëZéÔÌ&Çr‘”.«!Õ p˜å ¹ˆ“ߘٹ¸šÁs ¾rél¨Ç¦â—¢DJî•Òˆ"aˆäŽ)°ÝñA—ñÞ‘B$6¯.DòÄ̰›Ñ%ù“€k‚Ãásî¡dþ†QÊ×eš¤ImnÊðø¶d%+2ŒR:5HáMaúQhÆÄcoK*ÀÂÐhôŸÕæthX«@„Àá$­G Ó3ÚL $L¶!'¥djleâúª|RˆÄf$E.ÉØi˜¤âƒ4˜Òïƒ4˜—Q€äÇŒ”g ù]® ÞƒC|øüÜG{( Ø—dFJ†œ $æÉ-Ž£Èœ“0´R @1RZR0º¯1F¤xÌ0ÕÆ¾Ês¦ÏÍßjyY¶hõéз"\»Ö§ á«hÌÅ+etI&Ï\.¥W ¨ÌòœÁ%¦Ú³¼#'eÇh)$·­M÷ØaÌ}1?SŒ!’_.¯6#)@â»$<"È5Á¿ï§÷÷ ˆPbÑû±§è%Éiøx#Hô9YŽ`‘\„fL¦fÒ³㾜rÃaC €Ø(¢(Ž×±¦cfÓ†ÓIä’Àˆï’(ñA6¤Á4âƒ4Ò°Ù‰yæj[ï%áaìq>lDJ)>HÆ4˜¿pÍì[o"I…c…оÖCI<ìƒ%cfíµ÷~ÕJ#íî/qÆ7øRÅPüü<®Èf•€ÇÓ4ΔøÄÌHóö)âä©Â4^ÍfOOƒ É€¨®Ù”}±.‚`,I¥’ðçE>C &|ÎU’~ïŠa@j8@liMQ ‡âLkʹ†ïð¿~œ‰$,È£8cQÊ3˜âL3%Z·,“ĦØ$ù¦ =S ‰Â5…‡ˆ7I0D  Àh’„M‹?€mZX²RÈ ûÉd<^dzY3›aœ@—]Á‚)E]·’,E’{^·ZI—%Ÿó¢IúW袀3À3ÅbÈh9íR¥N ¨QŒ²t'É l’ðñ&‰mZPC5P54¸{“j †j 5j( †j(,‰d¶-“É‹$ŒŸfIˆOI,I½ëŸÓ ÉÉ=ç‘QÃç"à2ì\—%&IQˆ$jŠÁL9MšbYœaw¹=ø!ÃÁüP ñ?ž¶iA Ô8q5P€¨¡€Ô@ Ô †jœÑÁ€¨¡pBz 4],–*Éd|Iv‡Ì–FËéËMV£!ä‰ ’gNêuKVn+˜A77³H²)Äcæ3B†Èr:ÕÞpF—^ †È© ÁÒ$PCpéN’Òü(:&IdJüï0IàÇÏÚ GÜ fÐÍø†Ï,’t HÂzàZXB:û²hCÈì©ÔBu¯j´C€ Qc+w’ 6LqžVwL‰CH_üøú­ ð´‚?60óÀŽhN±?6ö+ýS2?êvˆDáš5QEâ^üƌĦhôø2¤÷?r+˜D}â3f˜.4§Ø~ÅgBÈýT›B ée"Å™P¨*w’8q¸|AsÎŽƒ3H”Þ$‰*3  êrÌ­àÏÍ3èööÓ„ýŒ_ä éwÒå’wïWìB¨GDŒpÓ[!®¯Õ’Q\w'‰{ñ[š›ID!,š«»·‚ÀÇm3XÉí- ¦8à!rÍÇ߯0?ø Æ|Ê ‰ìW \g¹“Ľøõ‹‘{5ðÞë¸ÚŒæêGnwEÝ.àÇë`I8„°!¤×á’w}'û•– +)AøØ~ÕçOm~@ …µ¼h1 ’¶iI`ÉR@  ˆCz4IÌCln3~¼¤Ü{û+\òIÊB éD,Y ,Y’ˆ öjPCaqݽ⮦(úæGn÷A=ðY~êö+„ô§ÒѤ¯CH¯æ|îYݯXݯÄ2? †jþuÖÒ®{Ýë,¨¡ˆCºûr9ÔäVpOdA¦&IŒîýj.÷Wøaû•– Ô°Ý×½£Ôuoêé,ÀÞðp¢G?·‚û"ƒ§"IŒîýŠîW|¢ýª"€»Ît\g]È»îm÷º7énôèÿR­ pd­`ÁM@’É-îý ~Ø~U0 @‘µwÝ 5;„ô¦#¤[ô¾¸Ì Ï­÷+þÈ~U¨PÃBº"Ò«TH?w/±Üß}3?ŠÜ ¾ôS?$®O¾ìë°_áMÂ¥¼?´ÿ˜©P ŽK,~(¶ éÀfH÷~A4ý® "·‚)dAæ€øñð€b„ûs}z‘B?ˆ7 +ÖÑcÚFIÉz¨P çkïg²šä3Y¿Ô/ˆ«Ì UCñ?B¾ñü^’²ýŠíW¥  é‚TH_§Bz♬÷ýÑÜ fÐóù¶Ý¯øcûÕØ†ˆ…tAWH!]ÔPt…tà[üQà€[Á 2?¶Þ¯¦SÛ¯ÆÚŸÇ!]ÑÒíB: ée¬†!·‚oD©!´W»Ÿ¤:¿–÷×a¿ªžQÃ\í¢úÐ~ÐBºwÉë7ék÷I¨¬üK¬èq÷TôÈ­àÛ‘AðC«Tç¨>P£úê¼’è¡ù–ˆ¢†…t…Ò#?¼è±LE&=Þ³>V+˜Aì‡UŸÚêㇶú°W£4š[ô§¢Gúu /šûÑ£IDCj#h3H£ÇƒF‰æÔFóªæ«6š—êG*zôRÑ£Š¢‡ÍÝþ¼tþ¸Ç´‚Àᵂ¹Ih.ÑcÖFZ£GÍí©+ø‘Š”ŠU=RÑ|°C4‡‚Ü ¾´ÕSWZ Zô(SуRÑ£r¢‡Í-z¼Óßr+è!ƒ¢§®4š×ÍßÒ ÒÑ·‚Àñ·‚´e+¸x×V8¼V0·‚ô-¶‚å‘´‚‡ÿÇ=2è#´‚@n÷@åVP[Aô­ Í®Ž¿Ì Ü æVðudÐ+­àô+µ‚¹<¨hžA¡r+¸2(·‚¹|d­àü}ZÁêè[Aà8[Á :¸VÈ­àa ƒr+˜[ÁבA¹Ì­àëÈ Ü FÑCñµZÁÿ·w/+ a…K$¸ÍBpáB0&^Fc¼‹ ¨¯¢ ‚hPßµ¿™ÈtO÷ßgsÞ¡ø<äEWÁy*8õ©‚D¨ *h‡¨t\E#†è¯ >V¡‚#T°eˆPATÐQRür«‚3Ÿ*H”½ QÁþB„ ¢‚vˆçnU°A[†(¨‚¨à¤n$Jª‚ß¾TÐÿ¹Qö*8@û ‘'£‚‡ÈVAU¡‚;¨` Dݪà«+D‰zSÁu*èü܃¨(ÜFӆȓ ‡ÈPAcšûSÁCT0"T´CCQA/Óœ”¥‚[¨`ÚT „´TÁ*Tð\Q<Ü@‹AQÁ@ˆPATБW!r¡‚¨`œ_/ÐКc“MIEND®B`‚PyQt5_gpl-5.10.1/examples/qtdemo/images/qtlogo_small.png0000644000076500000240000000673213245231431023266 0ustar philstaff00000000000000‰PNG  IHDR››uaéŒsRGB®Îé pHYs  Í›žtIMEØ  ;ޝ» lIDATxÚíÝyÕðïëî¹—=XÜe—]CAD@Q.ÅŒÔx%j*Æ#©DMŒ$P©2Æ$š2R‰e*ñ­Xj©Ñ2Á$å]F-+" rì»°×ÌÓsôtOïå]ÖzP®é…žß·Š‚ª÷¶gæÍ‡÷^¿~ÝË,°J‰#è 4SsPJ Žâ%6Gñ£xŠí 88ŠØÅSlŽâ)6Gñ£xŠÀQ<ÅFà(žb#pO±8ЧØÅSlŽâ)6Gñ£qØ <Ö¢¡?”£Í¤Ø4FÏ…ÌjêšÂᙳ*¢M“‘PX XÏꪕÐU{@íÒ{z[´žT§‘êoÏe¬œc—+6w´ Hi~íu¢:´@8óίÄü•eÀ²„(þcÜ–¥;©\ÒJèªÝŸêÖã½­ZzÀPÕN]3Ò¶YØÜÑ4þÅõ·°ÊÀ\n ÌšS¥Kk`YœÛñ¸#,;ϳfÎNkýVOªËèÎôä-ÙÞÞVMm„¬DÇ%p_•U³¥icnã\ ‘qý uˆÅd8Ž8á/ÅáØyž6sv:ÛgÅÓ=FwºÛèïkÕz­šj¤¼A¨”è¸@G)ö¿¼>2àMÍ!TVÊ0MQ’×’d&£rM0*×TŒ M?£ ¸pLƒg¬œ2ÒvROÚýñV­+ÙžëMuééä=+ˆ“ûª„¥ÆÁo\ ªJd„·à%&‡¢ru(*WWŒ M€æyU ››¹~«ã…;·>~ÂЗøó|4¥ åYøà?e™lïŽÉŠŠÔNèGöà8JɇÑCÁ Ð÷ÇYf$\Þ€iÙe “À‡²¤ ‡ÀÀʬú›Àí˜Æ€`PB¼WÞ½:Ϊ?Ëç^Š©ãOG4AÞΡ'ێ퉰wàS˜ÜBHŽÊ$€s.$0Æ|‰À#4Y–°v}5X}ëj|óÂå‹\h¼zÆhíߊ5;žÀ§ñµ+QW]w „*È[9!À˜äÉg‘F¡ýÖXGŒŽ°7P>ø0ýÛ¢XóËçqÃÅš̴Ú9XqÑX6åFèV¶`N¥l<ól΋þ¼â5üzÙ ˜X},'ï[lî0ìÚ­aÛæ,žþùØ=yº«N:—ÅþDøˆË ·Ì½ç5.…a熰=q°"Xtæ"„Xš*§!.¸¯±¸#>-K`íº8®]ò \µà2W}pÿ»ßÁ¥«–âúßÿ©\fÄÊŠŒg­@E° \8€ŽÎ&ŸˆéMSGgµg”Û”À}ÉðÙ¾_‡>Ü}Í÷\å™üžÚô¨N/‰âŸë_ÀŠ'ï/¨ÓX9 ›/dºi¢moó¦žP 8\‡ƒC€Ã‹eé$hWw˜žmç®4¦6OÇ…3ç»Ê7w¾ƒ¸ÖŽ‹¢jLó6á¹·_Ak×¾‚zLX޶½&mÍø®[rE!j6xŽh9æpègl®4]ç8ЙÅE³ÎG8rÕÙ“ü Œ ž)8Ž@cC¦‘ÂÚí› ê^u6¶®S0]‚W¯ÁM—\[P~óÜ{ñÀ²—pßÒç0³n!LÇðÍÒ-‹I 1d26xÆÆìÉg­Ó¯uAÂÆ9‹I@€áó-õÂÁ0Ιr6,Ç*zœÚhj£ƒW¥ÆFÆÃ)aï&díL=^³Yà&7Lt•›Ž5ßi›¡9¦`wç>Wý…3çBÍ%a˜yˆCvd o¦k']ÏF=܈a4¶%„ µõ®ò¼­Ã°´‚Õÿ@@B4¢ ¡ö»ê_½l6n{ä.üëÎ÷±õ±×Q3\öì–? %±•áô™mÉá²ÂFàÀÕl(¡(ÆUŽu•ÚÜ‚#œák B ®£…‚r¦{¶&VÁl$ÓIðCz¶¸¾{²ëÔÃP¤ d(YW§œÄ-^Öà,‹#aL¤ÂUæ¢ÈÜJV$X¶.8¤— ‚rS ¹ô ° ‚RdĵÔÒ©ÒIÞæe;‡ã\@’$ÈR‘kSB%!I Žã€óÂR™)øFm.z ´{y‚cÇö#ƒ'âxU¶ØÊœ$18Ü]ìÖPV|Çç²,»vqpp×Y(a#p_œ]*ò–‰Œ¡¹çfL^Ð-˜ËqY’!²GÍ‹«~ÃVVà¢Qv^G2£º!ÊAÈLÆÈ™›€ms„׆HÃÖ†ê2ÂFàÿ TU*€GO²×U”È*†‡FÆ/Yåó±°{Ãd&Ÿôl‘ß°ùœ@,*Œc¢³(¶ÊÐØ‚¡Ñ¶rºÆÚ:Wýþ\7„à£~¢ Â߉oÁq.«0ÃÎŽ=E댌Æ&I †ÁÝÆ™“]uÛÕÅ—PàíªÒ)þ½øç@4&c\]›wZ´NSÕ´á¡‘1@ÓÀf4nŒÔ­,º³û†® Ã&À0hQ¶r'K Ó¦TbÓ®­ØÝ¹×U>«~1ÂJlð>™aÿ •uX2kAA½ÖOЫuB‘p!\K 㢠èK'ÑÕ“·”òf+É'ßïÀ9ŽÀÔ©1Ø¶Š—?ø·«|bÕ Ìi¸9'…xŸ†-;ñÃ+n„Ú›Ø7v¼‡Û¨ˆ ’ÙTAùק݆KëWàŽÙ⪷#o„­ÜÀ9Ž@M‚é³jðØš¿!‘rïæ¸eî=¸ þ´o¯ÆO®]‰¿k®¶¹óm(,Œ†ñaX9wm)¨3~ÌDüôòŸáÊùKQ«.ézœŸ°ù0~-âÙ6Ü÷ôC®òªÐi¸{ÑCøïïâÑÿáàÛƒnãïÛne!8C]}ÍÓcXýâ“HiZÑ×SõDI聯῜¿ —Q¹ŒI, ¦‰a46†\ÏfˆF$46ÆðÒBBŸSx?‚$1(‡ìæp¸g>Y…o"¬Ä†O"¦Lƒ®Ì~lhÙ€pŒ#eucoò3lèx¯~þþ×õ.éà•.¸åå®÷NÔgVàÏøf{’e 4Mˆà[7LÀŸßy{ãm¸ÿ»+1±Îý€!!võmÆ?v<޽›‚vð W–‹Ö#—oÅ‹Ÿÿ²$C ]7U¤9XҞͯØ|δ8ÆÕ†pýu°ïÀk¸lÕ˜=~ žYù0¢¡/žéÑ—ëÄŸÖÞÓ1†{´C{JÓäPXJ‘›hJ þŽoæp¶- ÃYgŒCC“W^›[>)¨sZ¬ g×-€akÈÝ œ„­LÁ Gss•ñææ÷]un=÷W¸yÎ/°°ùÊ!+ÇîÅ1¹NØÊçƒE=cf5ž}ûU×ºÙØH=®šq;–Ÿy+„Žg[¶Ïì&leÎq€Å‹Æ¡×؇•]U’Q1`÷}›héÃË"G²ôñeÃi8,aÚUxÛ¬Û¾ cOC$€ 9+=ŸakÏC»zþ ³gWzã‡i{ïD~få_œ¥Ú¶@ELÆ•Ë1ú}|Æî®F@ Àrò0cø&棛 ѽ=³î­[^£¥7b8p 2 `òòæàóÙŽäi’ܶ¥;)]µ¹¤ÕŸê6âû7«{Û7ª=¥x¿åŠÍ7à«;lOæXÜ0sNÊÔUOY©n£§·EëJÐÕþ}¹´©yó ×ÊÛè‚‚Ÿè{››–ÎÓù¬ÌÄó©n#¡v}ñ™Þd‡žuÌÑÝ^îØF\Gî?bRì†cYplnÚϘš£fù®T·W;ŒþøÎL| ]ÏÚy MØF œØ¦n„Á38½â¡Ã̜ͩ£êªÏ%­T§ÑhÉv«zJí44¯†?Âæ‡®5½yç)û‚1ß6Ò–“î7 ÕîW;žÞ=Zwò@.5Ц§ÍSì—Øv¹‡Œ¹²ô@Â’D¦&pϦp ì‡#lŽBØa#p„Bà#lŽBØa#p„Bà#lGØa#p„Bà#lGØa#pÔ„À6GØ(ް8ÂF!p„À6GØ(ް8ÂF!p„À6Jù€#lް8ÿ#lްQüް8ÂFñ8ÂFà¥(8œÊà#lÿ#lްQüް8ÂFñ8ÂFàÅà#lÿ#lްQüް8ÂFñ8ÂFàÅà#lÿ#lްQüް8ÏÀ6ŠgàÅ3p„â8ÂFñ a£xްQ<GØ(ž#lÏÀ6ŠgàÅ3p„â8ÂFñ a£xްQ<GØ(ž#lÏÀ6ŠgàÅ3p„â8ÂFñ a£xްQ<GØ(ž#lÏÀ6ŠgàÅ3pÿ`Óß(_dIEND®B`‚PyQt5_gpl-5.10.1/examples/qtdemo/images/trolltech-logo.png0000644000076500000240000005577313245231431023540 0ustar philstaff00000000000000‰PNG  IHDR¶².ïêÒsBIT|dˆ pHYs b bbÛÏŒtEXtSoftwarewww.inkscape.org›î< IDATxœìyxTåõÇ¿çޙɞ°ïvQ¶0•¨EAH‚ ZµnH&ŠÚEÛÚö×Òhmí¦­V!Á½ÖV£ Ôâ$!²ucßw’u–ûžßY˜¹÷N¶H€÷óÍÇÍË5îZÞçuk[yì›]mêP"‘H$ç-­Rlñ©}» Ÿå6bº àK›ª›ÐÙ‚1Ž8ôMŒQÈršR[£‰ê Q^[£ís׊¯<^¬óø<«Ö.úö›33¢D"‘H::-Rl4Ô˜Êã1±ÍÕ¿èÒŒqÄBUÏFkO­•ZEM8àqóW·¶ÞãæÖ>ú¿í"D"‘HÎÍ*¶˜™Ç©Ì9 $5×Yt¬ŠI) èÙ×6ÉÇ#¸ªBTÖTk‡Ü5â¯G¬÷úÔ×àËb^Ä¢½å“H$Iè4©Øâ®MœÂk¬Íu¯búœ®mžGkO|>æªSZuM•8ìv‹ï¼þBóЉÿ÷ÙêEìkoù$‰DÒr‚*¶ø™‰ÌX  YM¥`úœ®ˆ7ÄŽœÓh>FU¥VSS%ŽÔÖhÛ½^|áq‹ ª V/ÚUÛÞòI$‰Äˆ©b‹½6ñ‡Dø[K:°ÚW§vAçnÍuç B0*OiîÚ*q¬¶Vìð¸y£×ãûä$”·.ÚZÙÞòI$É…ŒA±ÅÏLœÂŒO`ºoÆ´Ñ'1âLÈvÎÁ¨ªÔ<ÕUÚqw ïòÔŠMn¯X£1Þ_»hëÉö–O"‘H.[ç9ƒ:iµb‰-iÜo`.¿¶óî|¨©Ò¼UUÚIwØív‹-ÞZþÜê®~ïÃÇwioù$‰ä|"@±ÅÍøo€onICE!\wS7Ä%œ_ójg›êjá«®ÐÊüŸ{Tß{k~õÕžö–M"‘HÎE[Ì5‰%-m8jl Æ&Ç1Á.tj«5Q]%ÊjªÅ>O­øÊãÑÖišxÿ³E_×Þ²I$IG¦Q±ÅÍL| ŒZÒÈb!̹£¬ÖöY€}!£_|îu‹"?\³hë¦ö–M"‘H:Ä̈Ÿ1xCû -퀃#1uz§3,š¤54,>¯­ÒºÝâ[”ÈÅç‰äB„˜q3ü …-m4ùªN8,òLÊ% þ‹ÏkkÅ·^·VâÊǪزF.>—H$ç#õŠ-q€¡-i („îì«Mº!Ïe4£²B«©­–‹Ï%ÉùEΔhÚî–6è3 ÓfÊÿó!U¢¶ºJs×úvxÜØèõhŸœdúH.>—H$ç7#ñnf~¡¥ FOˆÅ¥›Mð/9Ï0[|îõòg^æäâs‰DÒ‘ ˜‰/ó]-m0ñ²x »8úLÊ$9‡`ª+5ou•v²¶Vì:ZV;»dÑ·ÇÛ[.‰DrábQ½[³‡vTô¹—½_ræ bâTkLœÚ@ÏÊM¢©Ø$I»¡0¸GkDÅÈL#‰D"é¸(Z¥Ø"¥Å&‘H$’Œ {kÈl#‰D"éÈ(Zµç ‘Tl‰D"é¸H¿¢D"‘HÎ+¤b“H$Éy…Tl‰D"9¯ŠM"‘H$çR±I$‰ä¼B*6‰D"‘œWHÅ&‘H$’ó ©Ø$‰Dr^aioÎ^Có¦{¶Y­ˆ‹‰A­¯š›IK$ÉùÀy¥ØºˆNEQ@ŠT¤‰D¢çœPlö¸±æÃ2°ßs<2RÅÛ½ˆÉ#.o?Áü˜Ðç*t‹î‹çŠFYí±°öýõÆ*l*ª(wÉ@|ð‡÷PVs eµÇPVseµÇPZ{¬¾¬îsyí 9(‘H.(:¼b;~Ø‹Ï?Tj aé/ÿÔa”Z‰.Â/®x‹‹~ŠÝe_…­ß£‡sxŽQã¡F¡gìôŒ´íG;ßÀ›[ž ›,’:2–;†“‚Ÿ2¼ÙéEœÉqùŽ;À˜PHX—ZôÊ™W"9—èЊ­¼Ô‡‚wKV“<ñÀÃHŸxc;JœN‘ÝððÔ%xyã£(9ðaèrr×sÍøkCïû"« År¸´ò"MQú¡k8ÁPvø:GîziÚêðû›A%¥€pÜΨbƒ@ wèÊ"HÅ&‘ÔÓa[u•†Õÿ-…Ǹ8ú'?¸ Îé÷·“T-êF`þ„Gq²ú0v–n ©¯²R¯áØ"¤Œ¾*¤~Ï2–;†CÁ ¸ŠÒ€ë^p¶òjÎt%?¿$­0£½e•H$ƒ›+rÍ娮 œš2ñ"üöæÇÛI¢Ö¡Š{’~‡hk\Hý3±ÖõïUé°ï$aÙ︟l" @· Õˆø³)—D"éØtHŶoW-Žéæ•,VÂ3÷þ½$j]£{ãcRÇç×&Œ¼$¤>Ï2ó’3Àx@”Éá2k9»RI$’s§ØX› + å©WNmQj¬ŽÆø>)¸|`Û—#è<\5öÊPDêðÜ·Ì>˜‰ÿarh]VêIì–V4%;­¨—j±u ÿ⬠)‘H:,ΟµýëjT”fÚŠ¶à©{ÎŒµ¶áàj¼ôá xç£ 8q²V«‚¡{còè$Üý½ù¸¸ÿ¥!1ï’cÇÉÍ8pjG«ÚUUTUί©*aÆøÔeêÈøå.[uŧ4Rç>?gívÿÂç®û¬@©Y?Μ$«èe© ¾à£¯ïËçnhÕZŒÛW‰‰®˜ÀLý@ðBQvô‰ü²ugtš»òÆuŠP"&Bˆžu¿Oᯗ¦žqËó¾eöÁ>I€¢©ÐöY#Ê6?=c›»¹vÎeI½…ªU€þ çïŽì¹%åÁÚÜ“;¹‹Å¢`ýÀ°Ê¨ÞÙ³Jއ÷¬$s:”bóz[JŒÖÚÝisÐ%¶kXÇÚWþ-^ÛôD]X~à¸*%ŸûphŸ[¿Þ­_ïÇ‹Ë]¸kÎlü宿7îÐ¬Š ÷Lx ®¾µUÙI̬µ>½Ú¼]G&+‹k¿Ãp€ñøóiJ-™yöÛ˜è!ôTG)Ì6& XmV8]ŽCL(ð¹½?lJÉee‘rpœýQ™Ù8‡Ç4ƒåÕßq>@-:'çʤhh–?|lÙ™@†€ÂМ.û…PY:gÝ×-ê°…däÙÇ‚èqìP©.ð¦nT¸=]N8ó/DXOþÆLÁeºì³ãRÕ«•†­?ØT8]Žã ^–ZÜš¹Ü1‰üXµ!ë鯺4N—ã€õÙiEW‡ó<%=ÊùÕÆ*ÔÖZ(]ºDáÑ[~Öqö•‹'×, Xk— bÚŒÎ:2º±Ìçc,ÍÍǸû&¢²¶Â¬«Ó'~.íuY«Ú˜Í¯]:lDHrttŽq\  ¿¾\QÄ͵}ðÝäøL—ã5&ú'€±l&ÕzãûV›eÓ½y“¦™õ“•Eʱö—ÀøÌS†3èáæä€+ƒ Ôµ?`ŒÚP(UQDaf¾=l 33òí·ÑZfÂ<ð¦+?s{º|¼07% ]†+ùaåÑ÷Läm @#N·qÌaŸ˜ @om7`tëÏF"iF±UWiøöË*CùOoË„Íbö|jG*÷ੵ ÚkTT¤ö+â‘842 |çîãH}4-ä±§½­UõÍ,¶”±kQzØQØlCi¯%››j–•EŠÛà ܪ;TÐvSAâ£Ì<»a¼CcK¸]Wì#à}>Zfv;W&]¤”€1ƯØËÀ; Z£«ÏL¯ÍÏŸ²9îÌwü”˜^C`àÍQ&üÀ>]õÉš­æ 2ò'¥øÏ&Ýîf¿ ô2›4†ëf¬°_LÀ0z€ŽÈq€"5!œ–DÒb:ŒbÛþUMãö3 $tŠÀý3~Öq^ßü'Ty‚Nì—' &N ([¿q\z_Hcí:ƒ:_Ü¢º·@Y©nWoR'Î I†Ž3z™·hQÓ»½7q>€qºâU¥žªžÙi…7ç¤&æ?èŽ+Lô„AæÊäa ^ «'XáÉKÒŠ®]’Vt91¯%çBBÍÐÅ¿…DJNZÑu9i…SAø­®I‹ð´îíGÇݹ㻃±HWü•'!:1'µè–> уÞâÁ™÷/wt…y–I·Ïg§ ÊI-ºeIZá]Ù©Ec#l'ãTß]׆®ÎJcК> Ñý²ÓŠæd§;³ÓŠ’K=‰q¤RëÜIè0Šmß.còˆÉcÃÖ¾ñÐj|s¼¤ÙzVÁqE‚¡üU×;øö`hÓ -µÚŽöì‚nݢѻs߯ïð0÷6)mòMd~þÔ8bzLß“ªñ½oÎÝê³-¢4 Ë IyÉ746ÒøN“!þ•3»x}Ç%éÅaeS2Ý»|âhfÌÕ¯Zœº¾ÑR«‰¬ý‹¡!!¤”2V›õ§bü˘豆ì,‹¦­ö“>Kñ¦ƒ§DbþD_öôŒmîç®/ÞY7ŒmÀŸ,š¶:àÍì͹ojKfnkå)I$­¦C(¶Šr å'}†ò›®Ð?ÚƒñÖÿžiqý^ýlèÖ3pª@Ó¼ôHHrŒí= ÝbšWNGMæ×.28¤±ÏˆŒ§šjcž4=uÅG¼õÔI¬Õ·W(ÀB3 \aƒT0þ×”LB¡Ÿ@??EÐæÕ雫è")Å™“lŽªI~’;9 ÀB}¹¢qÀÛƒôîH0pMCuÃ1¢;›W°ésä–¬‚”œ&¹pèŠm¿‰µmAº=|ù w•þÇ«´ªÍ¨qÆýÝVnÆŽ#méTHÁÕC¾ßl=³ùµ)£“Û<î¹uÒ—(@“aé¬(à e ½¦u™vëb(P¦ÀðÖÁÆy)Óá¦d"qó7&U÷ë>ljޖ MõŒ‹w€h]1³U øÂ*¬44&L«ÿÏÌ%qU¦Ë±ìžeSÍÆ%"³6–W’‘gÛ¬àI˜éoTfnÈ £‡‡5mÔ¦C­nÓo`bâTTUœNí¥ù¿ãwxáÁ¶çœÔÿ:äný4a´R@Ó€“ÇŒ©´Rí¡°œ¬3ÁhrYÕ‡î„Aì2 ý0/wžÚÅ&z™E…(lbá(8LM„00D_FÌ£3ó™ºbCd1õÞscZÔ!¡ªH¨·gæ;N×#Å,Ò³Ï(†m蘣ª¾k3óÿ—Züûï·Á¾çAêDêšM&¢’Œ<Çß½¢Õɪ%&ín±ÕV ?b|ˆßxyx⛦ ZDŸ†²Ï7oI–HK4wc‡=8¸×ð×Õšˆh­/¢cl°ZO?®ãâ­aY,ÞÑ!डŒšÎI¢Îâ D15Ï™x·I±µ«u_Ma³Àh&ŠMÁ-¶zËÏ`y2Ñ™±ØÿÀ(C‚¼-Ù LÄÆ$üѤ^tV)Kg} æß0 Ö‰bÆ_3òí«ý­·ìô’Ì” Ú¤J„ŸØÊ«¿p®œ4¾Mç%‘´’vWlûw_â¬6ß¿LmÝvUì‘JSÏT³˜)¶C‡NaïñÝ!É4²»Eå(x§4ào°íJ<=w¾± 'ówãˆëklxiÞÿóÛ!w® ØD±5—ä˜`x3"ó“ Mo(…4MÑÈÔEAlSghªY]°F™ÝRšSäÁ`6XL­vï¸)1^ü˜Bâr nÛºp…ªú¾Ì\îhÜ.'½ðŸ,0Œõ¦m€QÐDafž£y?¼D"íîŠÜ·Ë8}2zÄDÛôSmgûÉ&—@5IϾ6(*Ah~ž^ûäüò}TuËÕ£eóeѶh ëÕöEÙÉý®Å N£På=…*Ï)TyO¡ÚSŽ*Ï)TzËQí9]~ªöÜZû.5"à„¾Œórç©oÎ}3ÈVà´ÏBJ¦Ñ•PHíe’ýÅÓcÓú‡Ç%ul|×óZ•Dèäb…º[ÍÖë‹u‡޵{`p3Ò\·¬IHñmj®Ži;Æ.6.§>ÅDN“êb¬G'v§®_³07eŒÏVý0.ÔŽgÏeeÑ„†¥9sоË*H™| ¼æ—þŒnV+ž¹¹cÕ?æî³D.ÚU±y=Œ#ŒŠmöäkLj·Ã{ÚÜÖb!ôèmÅáýÁ¬/I±%v‰. pªìÌþ¾cl Ü¥eË&:ÂnÛ þŒ@wëŠc"ö^ À4G#AìcÝs7Èz8B/“¹±Ý‹±X°,ù˜¢²ô?sÀú´-bát9öA7ÏF௳S‹þ¬]¨0);M<ˆ±tØ÷vvF‰Ñßß ÏÎ]] 3c¹ýߤҋ`èÃrÇîç ¿ûRâÿ¨seÒ›ÐÔLÖµéê#žàµÖÊ#‘´”vuE–žðB˜xò¯º´Eë_[ÌáÊÝ!µïÒÝ}½sß¡úTHÁôdÃòŸ /¼y !¡*Xÿ€lD»LŠM-62SxD; \«< ³L cOÜ9˜<õì6´ Ñ›áÄëq›¹îmŒm 9sŠ?ý¢u€Êb¤Yyö¬’oUÝÄ kø×éš|‰Óåø]ÆrǬy¹ó‚ºw%’ÖЮŠíT™1*PU cêH„ÆáŠÝ!µK0¶eeµðj­~ `Ú¥2 ƒž—Ò7–1𡾜¿ºï¿—™*ŸÇ— cº¦^ ]vCÎI€ ©_ˆù?ðæÜ­f¼g8a ð %ØÆ§u£€ ý|W[רµ„çn8FÀúr4?Ô¾—Î.ú@«ÖË,žµö€OõåÌÄ"§Ëî´/üЬèlÛ³{Á ‡ÉK„DÒ:ÚW±•§Lºt‰k˜¿WsãDM“KŽš%.Áø")cËž6M…4âÔ¹°a2s×õÓ|žìßfþxqî†c ¼¬+V5(ú,XḀ>7ä·'=‰ÿjø Ôå<ÔA·Ý—?±q¢s~þÔ80ësRëQžX·^Œú §úLS —çåŽ)1*3ýÒ¤8Ùï¸.X‘3'ÉÚ”ÒŸ?µ`´v‰Õ¢¬,ó­/ꌳÁ¢cˆ¢.ût€ôû/õS4C:0‰¤Õ´ë[¹>"€¾½º‡uŒ#•{ÁM§l–x‹ 6îÚ€ñƒ'¶¹ßq}Ñ»K:y´Í}œôÝ\ô¯ƒu[×è•Ð\·§Ë g^ò*&¬SXôDÃðW`ñWzür2ø§ËÑŸÿÑx0Dä#Ë?(EõF¯ðÙª#0#¾Ucå§Ë±„‰ª,‚o…I†øE°<9wmMf¾ã±ú~œ‡Ê«“œ.Ç{Ìü%ufàbª ûÕÙý Läl)Ùé…«œùŽOÀ¸Â¯8Œ|§+9,Ö3”Ý`gÀ>=p+ét9ž#ÆFVh#Cl„€—š`n ÃÛ­Aëtp¬}«ÓåØL M ÞH cæ±dÃl€úèÚø„×Zd±j·šº„–%S•Hš ]›™+rHŸaãxµ1ÉBk‰ŒV`µ¼ÞÀÀ‚¯ö|¤EË=|JÅæÏ¢E,ä'ߪ^‚þÍ!Ä×p=0”ŠìôâÎåÉWBá·p:½¸Š W™$ä÷á‘%iEÿö/|vîêÊŒ<û÷ˆècþ®Ïþ'æÆø@-"ðå8­€ս㣟?xªzÁO)00À"26 ŠPîd¯2àïëV¾ D7‘I8'©ÄõK®;3áJ0_I Ô_`3*7iuÒǘÌõó \¿Hܤ™ ÆíÏÏ]{Ò™ïØ¤ßïZzžI0ÚÍéóq@F.h:Ýfj}fkF[Ù<Ûöƒf1 ­ãâaçþǶ°4µðŽjSê3òÖ¶™‘=§ðsEU'X×LÕ½B¡Ë—¤™†€æ¤o¢º¤ÀÁv|ö1ÑrÒ e¢ÁY4mµ/;µèçB¡©¾mÁ)0A mã?‹Ó×íx˜~Œ–mã‚[œ„€/pÝâôõÅ-бÀ·,I¯{‘(u'¾‚>kB)TMŸÌZ"i5íf±U˜Xk0npx“x´.+*F1<掗¶èyÛ$Ãú ¹ó•úõ_:s’qwõRp)½AÔÌÇÞM¤ì‚ÃÍë&/|ÇÞKóa,3Æ4Šƒ|É oîó­>ó¼ž%©E%w¤ô(¯JÄu.µ]`ú´&ºfM}cX-â ŸG©3º6ísé쬂”Ñ++†²¦Ž¬w;Ž¡‚wªl'Ÿ¶CXyç’Y%ͼ‰Ñë`è'w ®ƒúµe›Ÿ?õ›pŠ2À(úc?1mÄ‚º£×æÂ½‹±È*H±ì¯¨.²hJ¢PD"3%‚x€h!¦ÃxoÉœ¢Æµx}7¯ÿòèØ‰ñÁJ"%s"@À| „ÃDüÙ’´â€ ’z÷ï4çòä©PÄÍLXçy[¦Ý’„нv@‹6Ml`îÝ=aµ…î<Ù³½k>, †€ƒË¶"62ä½Yµý_xûO‡ÜÏš˰g{àonØØð`‰ZÆçÛßÇŒ2??õÐ/pÏÕút‚g‡p¬cûzSõ˜Om1]o&‘H$gƒv³ØÌGâã#ªԀðYl‹Q™»=¡…û@ÿ®‰H¾2šáó0þUð*–®|Q‘ˆŽŒFLT$¦Oø\}oÈcI$É…@»)6³À‘^=š[óÚzܾ0)6ë™QlÝcûbððÓ©7–á«o«êhšh³b{wëX¹ùMØ,°)Q°Yl°ª‘ˆ´D"&2ñÑqˆN@§¨xì«hÉ4D"‘tlÚM±™ŽôîÞPðháqÙ›YlO“Ó4-"Ú‡[ª«äû>€3¶Ë¶Dr!С,¶„˜„°åÓ:65ˆÅV^úú3©ØŒÜ¾jLLÔXû;`\ÞÞ²œIXPjØÓûK$8í2ÇT±EŸÅ¦Ì#Ö [YU,6<(ª&âÀT©ð<1$æ¿ð>H:Ë"†…¬,R `f{Ë!‘œot(‹­slxSjù„‚NÚB°9¶ŠšÐ§C¤Åˆ3oâ•Ltƒñ?›V|ÿÙ—èÌp`ìÄdb„?ÝŽDrÓ>ŠÍd tŽéÖqÂe­€Äb«¨9rß2x$&ºÛXÈ""Jjª]†+ùab®[3bÑþ“=«ä˜—;OílÛ? Ð žÈLËrÒŠÞ÷o{ß2û`ŸE±³DAðQRx»âÃëÏ]_¼Ól¼¬‚Ë‘“U|*+¬ ă  Ä °_@ygizáþí2óì·1h(€Éz7$±¸Ñ™ç¸¨ñ³‚•KR‹J?ƒèÞü¤á‚@& bðAøBûgöõ%-²^Ë“§‚øÜbÑ IDATj`ðîœôâ—å% ¢Neà20@´Ì¼ ÑŸøo+“±Ü1\!\ÆÄãÆ.(ø>ííæä˜—;OíbÙ3šUŒc €á ìlØZ(ÒRúåÓ3¶¹ r¯LêŸÚørãéýDƒL?ÉUe@ÂÐ%°h¿ÉžU²·¡nVAŠå@YÕh"r€a¡'€ý þ’<â_ÙsKÎL^;ÉY§]›D±ÅF†w[¸òDMXlÕ•!÷--¶Ó8s“`SçèË xÊìAX‡®Xšjð« —ýêÎ6ú€&Ó×Þ粤ÞPÕ· ÒdªßBõ»d34:ó¯z:Egú?Ôä%OPˆ ¡’…0q ŽâºÝ§ð£N—ãS¨Ê³g­ÛP'(Ýà2\£@ð·V(êNM\®.©hØÐ›¨êã™.ûßNz>R¿ßYp1 EuM©"« å5|R Œ³ç©óû­»7€­¼zí]yã®{)}c™3Ï~/)ôw¬5vÛVÕG3ò’˜“^øO³¡3–;†w±áu&øï¢Ý0 ‚ÛÛegÆ ûÍ9³‹õûBuaQLjS5k|à̳?ý~òW} À^È\î˜Ä ¿ED}«;À¦þ)3Ïñ‹%éEÏ4yÝ$çí2Ç,£²6t%0Ž^½M&W˧…ž/Ò¢ÚBîã|#”y “ŽšP ZÙÕôÌ|GÞCƒRÓ‘á²O†ª~`rýwØÊ«WèôW…-1¼šX¹ð{¯– o5oâ Z‚F¥fŠ…AwŠØcªPš îPYÕÇNü1æ7Qo²¬Ÿ:ó/ƒè9Ö õ:ñ«™Ë“ôœ.Ç=¤`#š”ˆ1˜­ÉÌwü¤ézbº3/ùG ú‹^ALõc:YA@M宋aÂÓ®äß49žäœ }›zæÜzþ„3£‡ 6YTº•é¡osÞÀ¦î]K¯/ÜßÊžÆ3ã5ªÙÁË’ûè#½ýŠ1è§¾ÀZ]“«2\výCß `#À/1ÑÀt ˜°ªþ˜?½5/½ `~ Œ,“:øm0²ÿ€’ùÉ—)+œ^CØ ÐýÜ ` 1¾Ÿ±Ü1Ë켃ÁDot3Q”C×ðêö€ðïýî¨; þ€‰¾OÌ?°ÃЧ‚¿ø¾7o¢@ÿ¤°¥Ìx’Jð<¯‰•ÍpÙ¯*7h.ˆv<#/ùK4¾=ðw€ðê‚‘NŸøÿ,Ÿ42X’sƒvqEªAF­¨ ïºT› 5®} …`/1áPlš'ä>Î0Z5øði! €Æ6“B;ÁÂí#u»…Ä/ðó²Ó‹>€{—OY-ßvY¸u_(‡|_ô»hÚj½É¾ À_3]ö›°”y¹£moÎÝú8]Žˆ¨CÊ[9i…íœyÉoƒ^B}¤áú%s 7€seR14õKøY,¤àv+[v©Ô+Mfú}vzѯëËÞqº’ûü ¾2_”z«g½9w«2óíÇ™é]]µI?Éõäܵ5õçö@ç%8sÒŠrë?¹2ò“wóïª0ýÀ‡AäNôû5€×‰x¿ÐÈRe«Ýë‹Ò[¯ÇIXf.ž³æ(8ó»À×ɪ¨ü}Òr;‡éX®È0DúC °Í_ó8†c^Ð+šœ:º 0UlŒP&õ÷ÇxÕ1ÙiEO-™]èZ’Zü^ûÜ ¾GWïÐ’ôâ>Ô?øJü+00éÁw“ã ;£Äk¢Ôé½i}. Öl]#¢.nðyö± ÖÏ9nY2§hsÇú ™íº:WÏËgj­63½îÿ™˜¿ R5·A©)–-&u¨2Ò72]öÙ \¦;üMvj£R«+9ìû €ÒÀj˜èÌs¤7-8-ËN+º2;­èù%©ÅïåÌ)Z狜`t`5|Ð Ô ÏÆâwÜGf\ÓäX’O»(6KWde˜-6°Y£؂Er†Ãé•[#ÌFÅÆ„¶û¨‰^j°ðB¹ ~®©z¾1Œ ìÓYj=|UK†]´ˆƒûTjIûHQnƒÎÊa2Ê £¬»XöØ[3O¿Î‘ÛJÞfVQ°Px‹g­=¿½lO7Wú3M7öbì;;£ÄK€q+w&íýäQùYCï ‡¤€kWŸú—8éþåŽð†hKÎ*íäŠ f±…7x"Ô(Tè^ÛB°Hθ0$nöjÒbk„ ÄÜæÜÄØe‚‡šŒkPd¢˜¨.èay°ñæ¦ÄÂVÕÙK'˜½8Š ¦°à¡¤?{Ýù® ûõA–¬b€u­í[½ª‘âQØøÝg¡šYh&“ÅB­G¢@{‚²@²®î  b×a¸ÏŒ÷™…ÙKÁ~ü>+…Ç!¸ûSÒÁéXŠ-ÌQ‘@øH‚YláÈoéÒbóã$çMÀ ø¶vÆÌ&o54úyWÆ g¾£@WѸµ9£1=hÁò‰—ƒ”«â«˜[C¸¹y´=)Ôª _¢Ó ’OË·:óWê 7%k ;ÙÒª¾.QÇ[×5 ×—1‘©bcÆv“•Æóó—GóÜç¬,R0Ö>ÐDŽ_8ó÷éŠG…PŸIrÖèPŠ­Úž„ÅþD¨gX±E…þý—[†‡«âÀØìí ›mJuʹ2):C›ø*º­ObÑjëÓLÖá`… âáL ʀݰ†>jV³ÅÝ­ÚBcÿ%Ž> 8ÂäÐØÝ,¥c\;IÛèPslU®<ŒÁ\‘áÈo)-¶ Šna£Í_4fÄ?ønr+uºåÐY­,0;gNQk–AHÎAÚÅbÌSTUŸ‹-\slšÉ:6" 62t/Y¸öŒ; aºöJñEÔL ß(Ên} ƒ›ÊJñ†"ð3þJ-\(Ä»MÆj¹¬ÖGm ÞƲ ÷B€·ÃžBMf‘œ'´›b‹Š6.±9x"ž›@ÎdðˆÅžËWVs,,ýœœô,ÁpAˆE·w†‡$ެ,³¤iFˆŒÛé0ÓFÿÏw¤DBÓ&›=ЛJÖ!aVŒëᦊ 0+ç¯Z;&™eC·êÚ-tÙûg¸’ãt9¶:]ŽWùÉ)­•Cröi7ÅgTlŽÅv]‘kx._i­ùú…È›sßÔˆ)O_Π9]“aD¯\4É|`ŒÃ|Ù“½H ŒÚ³ª™]f _*bpùË‹Ð- à¸7â”ÉÚAÐËb>w&L^è *Y°,¹€@71pJµF¼ØÚ1m($Üuív/ÇS\fÖÃï&Ç/X‘œœé²Ïn~ü³Ç ©ŸD]îN"} ¿ÎÏŸÔEš’ÊOA—›À{îºÏZýpÈI+z„OtÅö~’éJ6,”w®Lê–™o¿üÞ¼IÓÀíåkô5tÌ”ÑZY$g—v €XÅVZþ9¶È3芴Z[±È”2©ØX:»°Ð™ïxŒß` fÐÛ>[µ;ÓåØÊ@? Ð*½àæÖŒáS¬µ°×‰À^±,sºGØ$€QQˆL¬ßÈæ0€·´œÁ·ø÷Gà)°©û.ûÇõ)0ƒÖ8Hñ?€.ò/!Æ|§+y ¾h€ïU½WhÚ-\öÐÌ;]ŽýDØÄ €Qú)´ ÀŠÖ\“3 Yè Öxw[˜kaïL§Ëñ N%@—ʇºÙûT›ÇÔð Vð)ŸuC¼Õérì$àKîLDƒÕî €Iû€Ô™M–2!¼;"KÂN‡²Øª«}¨r‡w‘ö™ ÷·YC/¨öVÀ­…?ô\''µøQ€£"ê·=isÄá ©ŸWX¬<æÿž \CÀLÔ)¨Æ­Â`IZá[rMÚÅ”Z߯GÀLXLú;Œ–)¾¨¾ŸØÏZ{@Õx¬‰õý˜1 Àtø/(7ßì­]Y2«p›Ðhú=Öb\ ƒRÃ*EXǽ”¾±¬ÍcÎ)ZÇ O Ÿ£#C˜C iØÉ\!И>ƒÙJ{¢Û*äìСlٻٴ¼­„mŽÍ$*2"¢UÙ‘L‘nHsÌÙiÅO@UZ ØÃ͈V­qjàٙŇ³ÓŠRA¸“€BÀ4'¥° ¼ÚXzD»µ~‹}€"f-I+zuijá—²žmiZÑgÌ<0]Ìö Æÿà¹ë‹w椧üCÔ%g6soh ì$à}0ÞlòäÛ‰¥×îˆ8yDÝy賸 ø¢nICñµþ ‹ÛJÎìâõ¶“ãüÀ—ÐÍõÕãè+¨~Ú¥sÖ}ML÷átN7ÿ²¸£~ªL’3K»¹"cbÍÛ7û¿Fò°ðÍ‹ŸÉ¨H›5Š-ü3çõ»Ng8s’j½l‰VÁý4…{pD´ë„·ÿ¾†Ý¢½ï%Q1–€/–J¥ÍÎÍd§½à . N#\, Úæí6Û‰f;wgg”xüu^îègºØb‡ ð€DÚJ¿Ð××<ꨈŸ "ª,;䤿|WAÊ,e5«ŠHyÊŽ¨Èã;õý0˜‘†§ýrmXÇéÛª= ˜Ylqñ6DÚšKØ4»åüšD"‘„v[ÇÖ@÷ÞVœ<¸ôæÛÛ²CEp†t¹$¤öeF‹­W÷Ð#"ÏFàˆÒñP\8]“/!òäd¶ÈN[»¥½d’œ?Ü›7ÑÎ uñ/Óˆ¾]:»hW{ÉÔžtÅf÷[÷#;z´ÇNA÷øöhl¤Wì@tŽêÑæ,GØG I&Áö–R-!ʪÏR$iX{ˆAwèÊ^pg»È#9¯Šò'0ö T˜à‰v©]iwÅÖ£—ÍPÆ\7Ï6ÿªÐV70²»k÷¶~ãÜÒã^ÔÖ×°Ý0åúäùîøx5CB‹°m }#Ô³I¦+ùF&þ?³cÌäó!RpÀ…F›–Î)þ/ƒ[•d@"‘œß´ëDF+ˆK0¦×Z½© ¬ãŒêÞ¶­¼í7ZkQÑ\yÉôä)9ðaHí[J´5þ¬Œ6ˆ»1ÆìÀv"¤q/3=F Vd¸_eäÙï$Ó0$‰Dr!ÒîŠ ú&ƒ0Öno2䋺OlSÂóÃûŒVÕÅá´l³eSkØphµé1E5Êèñ¶(ýŸ)± ÍW:§á‹ˆè¥ ×ÄgÚ[‰DÒ1èŠmÈHcfcǪ°¢dYØÆˆ‹èŒ‘=‚l‹„š*£‡J%}êu!Éòõ±bTyÊMYmÆ[RUSmR³eôŒMD×hCÎØs ¯ÂJ ×øQ“mOÐB§ËñøÙM"‘t4:„bKèlAw“¹¶gó;»‡Âô¡·µªþ¦¢ -pú¦[·h<0óÇ!ÉÑ”Òf’`ºªÆH½Åö¾:·)Ç{±õ‹*l)©lüsë†îQ¡-8CˆÅéë rÒŠ–/I+^„£Ú¯›Ôû©seR‹-ˆvn•y¹£mYY!˜ðÍàÌI²ÎËmütœ9IÖŸäNÏmஂ”ÈßÑ^ãŸK<øî°gNR›·$™—;Úv6ïõƒï&·y¥ÝƒG22 ÇÎgoúÇ+Ž¡[\÷ ­ZÇÈîvôK†ýåÛš­{⨻¾3nš9çÖÜ>áŦCfûEÖa1Ql5µ¡™Löì-ÿk¿ù»¶×b϶TUh ˜2~ îáÄ´ÑWãù’ÿñ;1svF‰÷öUc2¢j"gèäwÈJšåçšµsº&9˜yÛ3`·ÞNN—£’A_)ŒÜ¢^}I·KF¾ãy’€=·$½02VØ'*ó4¹³-fÂÁ±vw¦Ë±Ž™×(Ë‹‹g­=ÐÖóË*H±,¯žO dAOõâΈQœ.Ç7¾dÐF«'jɳsW7îÊ›é²ÿ™‰¾БÀÙéEóͯ…ãw ÌjøL'–¤]Õù2óí×Càr&²£§:® Z¤Óå8Á@‘^²$­¸qóÖ —c1&éºx?;µèçf}ëë³Àîœô¢tÿks¨¼úL"f»è7ºXœ.Ç1€?cgræüÀæçOíc÷†ÏæÙϦï›—;OíbÝ3O&#„KA¼ ”@©è`vjáLsyí÷QFcMfÁ@/"¬áÿræ¢×¬p\©0 ÛopÏ’Ô¢}y¦+ù.&þac`­&Ú}yÌ×ÔÞ;¾»5Âò;0MºŒ@OÀ™çØI 6²Ð~™^tm(#ß~#3.#ÀÞÙ3¶ Z„Óå8Î@1žËN-ú¯¾3ß±©áâ®Å©ë7ˆ¸ìéD4`ãA¸3;µ¨qÃÞÌ|G˜g3È`"€®N—£ Àw ¼XYûÒ«Ó7·(US‡°Ø qH¤a;¯WàIןÃ:Î5CТzÖVʺtÂÃé„4þ–#Ÿ£Úkì»èc ÍÉòÐv¶Æá~Ç“øÁ˜ßàêQ³° mþùè“ØóÆØÿïïðÆOs1môÕêv·<xuúæ*b~E_ÎàkÌêgº?ÄZª‹¸œŽÓ 1–Àv&ÎŽ(¯þüÞ•“Öš0´!x…‰o­ëË~ úœA˜ @<×€èQ¡iŸÝ›7i`[Î+seò°ƒeÕk,aðÆ°¡î%t4€[ügŸ­ú‹Œ<{ãšì2Ünjâ ýÿºLÜìZ˜ÛW‰ÉÌw¼ÁLo3ÑLŸ¨] ˜É üL—ãµ+Jv›ÝdÖÿ¼Üy*éä¡q»»sÇw?P^õ¯ ¢ñ¬¨Û »@7BÎ|Çýƒ‰lB³ù÷é]óà»Éñ]¬{V1áua"€‚ºÏ(/Ïp.K æÏŸPä&Aú>â«Í«‚g˜J±À•fõâºÀû¦ø‚?ìiºÕfýLFP¨ cÆ<úeF¾ýV³–óó§Æe¸ìËÀx“€8P÷=€nÌc¥3Ïñ‚á;æ/èºy¹£myŽ·Xæ‡À˜ šA;§Ëñcf¬cÐoP·›z×úC1ÆñLTMdá=˦$šŸk F±© áF+÷­Þ1©Ývìý®Áø>)MÖÙ³£Ö`=Z¬„yªÒv#—ÁXùÍóMÖéÜÕ}ŒË©r7Ž–nó¸ (*®Ÿ†Çoý#»õ ¤O¼]âºêS¡…¤˜E%f¤4Þ¤y¹£m.G.×­çñÿ¾û ÛI™ ¬i®y¹óÌwÁ&gæÛÿAÿF²Ìw²$H|ºð{¯–Ÿ ™o¿–5ÞXÿõÇS/¯?É¨Ð™ï˜ Äâ}“.cDo‹!ï[½Òä_Ƭ4ùCs®LUYÈŒyºCÕн1p«ÛÛù ЈÞ5é.q¡ËnðywŠÜ=@€ûI!Z ò“/µÚ¬_hš®™ñú3~¶ ßñ`°saà·Güɨ<4 0îê V”Ëôe?ÉE k”™ßaâ 퉒Íe1œ€Æ«?2Ùÿ“ñžy=@ N+³IýhbzNÿ=]°Â1ȾbéºúÆÉ~ÂÝè©ÛfÐ5]¬Ñ¿±éú¨¬‚‹Óåø€'èAôÁxF«ªwEKÜ©F±À‘ц²C‡+ðÁf³ßFÛ¹cܯÑ#Æ|.©ªBÃFkí7 âªÑ!†øïÿûOmo²ŽÅJˆ5Ù]ü£-†ßÊ3ÌÜ}–ƒeou]"bî&àF]ç­½4Úº¹:&tŠØ{̱0Óc¨Óÿ« tqŸ„èNš £âéïóÐí-=—y¹£mÌôêÞPý¢{ØÓSõáOºf`<í\™]ïR2¸•/×—i ëèÂçõ4õ€4ËŸPg1ú“éIˆî* °)àÓƒ™+“‡-M-ü0Þ'Èðà&6<ä+Nº+?…9€ÿÖ Æœ> Ñ!.8`[b~<Ø ³ºKW\  V!Ô0ìLÃu¬´ù¦à´PÞ¬˜ýXÇéçIëå3ͤΌÉú%, V8´5}ߘ7°Â£³ÓŠ:©$. ß,ÞçC€[˜4<ðEþ½èîÛÉ.©ÃlÕõñPæÊäaæã#™‰~¦+õ¨QXð²ªÛÜØ¯z=Þ>ðh= ´4°)]Â=•Mœ1€¦Ø:wµ o¢qø·¯†7Ø-ÒƒûFÏØ@«¶ì¤«–Ÿ@uÕéÜV›‚‡î¸ ?žýÓÆ¬ÁõMË‚aºö4Æ |²%ø¼Ü… «Ât‹I ÔM–3ãWºÃ< ÑücNщçç®=©Zl÷C÷fH,ÒšºFhtû’´Â¯M[í[’Vøˆÿa¨¥þ`›¢³5úè¬(½–^ø·—Ò7–-M-<’Zôsô_„^,,?¬6¦Àl p bcPÉ‹s7 &Û½Ë'ŽXg©ñÛÙiEÙ/M[]»tvÑ.fñKÃ0Ϫ—Áððe˜Y$s[ ¼ÿæÜ­žLWòLÔ¹ÂüªÒÓÙéEy‹¦­ö-ž³~+¿ÓuSëá`s† ™Z€èaOçì´¢¨º¿uE ˜Y¿Ŧ°Áâ;ò|zц~›‹68¡;fël‹ Pb¦¢Î=hF—+&Žò/ æÉº:¥'}‰ÅAÚÃ"æäÌ.þ<—ºþ[ÿ1Tb4º´ä%O BÀ÷Ÿ€×—¤¾ôôŒmîçS×n'~~´ñ^›`AÝ9 "þ5T­{vZQDvZQt·I¡_ëê%U»÷ŹŽeÏ-)÷’å!è¬r5÷ûìXŠ ’¦ÆÃb tˆ}ùÕ>,~?¼Ë”zÇ Â¯S^õÃ–°q]Þ_v¢q§lR€‹/ê‹ÏŸ]ßÞºbý| Ǫö·¨î F—ìû…kB–á|ëyƒhðp»;ß `Ï"f”øˆ/òÿ3‹Ø"à‹C™ .Ðz÷‰!dž˜šUl c¸¡pÌß%Ó@ý\˜aý 6q£ a"ÝüÞk*‰´f©âJ…†ë¨Ô>¥î:`xc'œ–Kí¨€W[T³ñUhoÀø ½0 êÝ=flÐûé º@”`œgPåU„¦Ÿ_[ëïÒ\œ¾n7}¤Ø {—OéZDÕTø}wóǤŸ?ذüÄ _2ž×¼¥Ùµ’Ä­Ëì YMïµ ¥Èä^w1Ö£  ˜ß©~Ê@WúýXÄ0X„&~Ÿè Š ºö°bÄ%º1þýg¨õ´=ÇÙdù6üsÓïÛÔ–LJI@Ttà-úËK°~Ga¤ Ä+<ØppõYÙJ'\XkãÌaÊë×Qu2=Þžd“ rƒÂ¡$(e°QN6†œûcÌÀuRLH€ËDu\ëbŽßˆPŒÊªU0ó°æºy6gN’•Û­.ÌŸ‡4¾*¢Û”,•-ÚЙ_ÿ2&Ò¦°ñ:ŒaÿŠ×"0ÔgõÆ~fe|¦“5ßT`Á:×xsnÈÖCJhך„Öâ=²ê#>›}é ŽÒä}í®ÈÆMŠCu¥†½;O+²C‡Náª_\‚?­†Umsv˜3N•çÿ ­íJ8&^ÅôÿoïÞ㣪®=€ÿ֙Ʉ<@!ˆ ÖÒjD¬d¥UE^?­õÓ+‰|hï§Ÿ¶^ëã6EZ¹÷z«ÖÚJ‚ʽõÓöí… ÂC^!$!ðžB $ó>sÎÙëþ1I˜™3“™0yìï_ÉädÎÎLfÖœ½×Z{Öuضî.—(ü~ÿâä½´³'D­sm7ÁGêÊQv¶ŸŸÛ¿Þ®¢þn#‰õÑ.5H`ß»SjN½kW”0È´v‰!Z¯ËˆþK¦6 D[ C¤œesiü°… IiJDh‘“O2,¦DjZ‡ÈŸVR‘½&ë¡íz®›÷ÉøÛ¬¬„®§À°Z’ZÎb¢jŠzAÇkÅ`#X, ×­r ìUZ à›Eê~wrh™áÄ’é%ƒçWª‰MÛF1@+Ú:wð®  ¿ÏåM+¯Ë)°ïAS×™&ÖTÊÄù«îÛ %¼ôA¹À›4?|àdð‰<ò¨înê"ãÎ)ȪhÌåãñ€å žú‰˜[Ÿ†¼†³Jôa«j³ýÁˆÝy"ƒ9öD–/0vƒ¨Í× ³hõx·lDÀćÂ(¬GÕéË뾃gðÈ«S°ù*˜î*ºÐ°´üUÔyϵ}pÒú+xtö`=àÃÁ 7T¿€ßo`ÿð»yo⎛îl÷ý5úëpÖy jб»jœjdVrÏÁÄwDi•¢©ƒR+š¾>…Ȥ Æ_óf–Ä}'Q6²LŸ"…Òö‹T@œ‰rag­?~(€°Ê|k†2LVGÏÁµ ó lßÀ@XG 20‰•ð¾K *iÊ )% §TóÎM¬¯ut÷o&¬'Fh‹/kª7y+á©ü$¸¥%ƒOEy¯%‹5i~[cov¥]`œŽ l“`1G¬ùœmJ8 £ í3Ù „§ôOøþ†±i)èz¿—·ú`Ú YK#ºáBR讬ЅBÏ%Í»ãJþ Ö$%%0tó“-„òÊÒY»Åû|¾>Û‚•yÓK:ÝnªûE…Š<0e ¶®«Çù½Ñöì=ÇsŸÀº××uªwc¼5ø/`IÙK8Y n÷i±2ǦâÖ1©p6hpÖh¬×qæÒ)<ñêStM:F\? _»éŒ½åNŒeGzJ:üšÕrG•óªœÇcî*ÐÓCQ®tv7§ópŠ# `Y Oÿ—ì‚{G†©Ó¦¦´جÄg 6¿}ëÂ2M‡exDV8€Ù8Õüµ`*¤¦ö_-HyˆÓB/¾(FV`¨w§–8£]ù2k7èP`ƒ u ë]É º/b®%°Å ¬º¦ŽЮÀv¥P¨ ¼’~€˜2BGKˆ>»lfECN½á5xãSýÉpÈ{/1·”Ñ6ÿ¸åhƘêqãï_Î%–s*£~ÜèŒ?=±£>§ÀÞ€ˆ)|‹Å î §ˆ#úˆ2]Ñë3{•ýë¤5ysÊØ€àe“„­ÿ¬Gmõå糸ü0f.šŽ5¿êøÎØ]áhÝçÈ/.µk^oŠ ¼6 ¯6{ .\BQ]9Šê>ê’ów'?^eÌ ÌÛ5Þiþ’™+@4+ìçŒÙ ÒË‘S|Fƃ¦K( mTKú•cƒ’OŸˆ¬éaÝàó°Û˜oŒ²¥êÉüÙ{Î7¸%ÙÄF]‹Ìä™ÖÚ‡¹íÀĨˆl?EDst(“‹4}l¡ï; ¾Í„“kÅöæoÞZâÌYc7=6¤(³Ùí$În¼&u×¹F¯ ¡e ;ƒ#Ú‘Å~™i#QXšÿf„NOª©šµ¸ù–í¬„UF(Ìô‹ˆûŒûúZËùŸ›Z±20Ùwú\ÁL݈Äž¹pëäŸç>´%²<$ª &<ÎÌ¿&ãa³ø²×ØW'YùgÝçR§ V+aò´A¸}\B/жìÚ{þÅŽÊ3]ú?Þ¦MÇÿŠ·‹ÜeAMº,çÓ{R5¢|˜3£Ž¯(k©±$%¿ !â˜QÕã²²GÏ­¼{‘7ÀÌ Ûóû+æ¬0Àdêð®™öG"bSDf~=4³ñ—GdMT0c1äñâsù3ËÚõ¢a…"»z g毵T,MŸ¦‹ÃnljˆÛr¯„õyÙåaÉ9,x‘yPœÓ‰)ÆvizsÝqs?¡[#¬ZjÌ}¨ED©g£'/‰’·æ·¬U¾?kg-ÌWGá]=Xï²Àí¹fð³Áî3ñ¥#i €È:¨ç½?iÏïÏ]=n ƒÿÒ[5…ßÕ5åqÅÖÌb!Üeï‘£RPºµ—.ÿÿ8ÎcÒ‚YøáÌixó‡o_Õu·ã—öáÓ#à`méU;gdÉ^õCR Ð°e È”*ì ý ôJ¬ijåMa­c˜ñ~Κ¬[)ËÕdß~[cZrR²–)XÉdF&|y3J_‹9¦¯åL£0»˜x²Õf{àðµBQþô²ØïEH (ylƯ´$†00!§ ë= ñ … †u>"[;1 ÚÍ›†.·J2ÿ ­gC†Ê›^²%{uÖF ß'Y°²3{Í„—‰•ÏP8,®³fX¬Èd™ Ê$`GތҰ^œ¬å(í©Z„¬¯5kÐnþxíË—Þ¿p¨ QþBÁ„Ù¢ïžÞÿØY—÷&‹ àùÊT@Ë—L/éT“U"2›š‡ÚÑÚU9Ÿ»añ ¼hè5÷D"l#3ÆñÇZÛj¦³b<×)BQvåLø¥"Œmâ±f(ÃtV2YA&1g‚°9t šöøpz‘ë…5öÅÌø]ÄÞÊ)°ßªø8€ä}Bx,ÉlËÊTXd2‘È›^úR'EKûçGzT`k6h°ÎŒ#û=ØW憮34M`éÊ5X»s+ò~ö6¼#ê.qsèBÖ]†£uŸ·}°ÔYV"ZÀÜï ÈKÄÓ–>Yjªƒð¥øŸâë7 0ÍåÿTaþiНÃfàà4Àà­­Ž†ð`<'¨ù[Ó‡…Aº*|kN±/»Àþ,{ù…¬qЃiA°§‡é¿¨@ÉŽÖV‰ˆ ÁuÏ3PÚ±¾~ÖŸÆ:„d5H!æwȰ°nJ lJ…!˜¶¤0ˆÖ)Ìÿã4†•ÍwÅœƼOì  |ýg0ƒ?‚aÁ¹F/+18XcÁw:Á *­ìåDd®Ï •—]®eØ·u?7ÁæÖ[ļ-2›²ÇJÐtþèÏu:Àï E2À:@ nék@µ£I›Ô©²5zgÀüa'G°’c…Æ 1Ä ž¶ ybT`:{ÌTd$¢`‡’'Ÿ‚»'öÇà¡Áu§ªsNLÿ×çqïÏî۫߈{®*çq,Þ6ïÿDµÄÓ˜ð!Yè®%Ó˶G;àÏSözê#`¢W±MMS\"вŠÕn¼Ì—â»çJ²Èòg”d íÌ#B‘0è®÷gîÚíÇõª{'¢o©š-Ii÷Õ$äÍ(Þo±ÚÆ úÎåÁEæÛbuûoºƒâ÷f•FMÓ]údég 1ÌÑZUE??‹(9´ôÉÒ“`ÄÜ™˜£ÍÄkÌÞÆ€Ç4ÕÆˆú¿ ÌQ4ÇÕ•<׌+{¬—=´Å?ü‹²É zQ¶ Š~®àm|ÞØ‹(I-þs¼b •’ªà¶;ÓpÛip» |yÌÓÇý¨Óéû÷j.,ßÿJÏ®ǹõ`OÔxI÷üïÜ=íÞ“I’$©+ôê+¶ƒ¬¸nXê·À^úÏeq l©Iý1÷î\Lõ,vWm@§µÎóðøHOIG½ZFµï”xÜÆ™DA’$©W6u[*ê·oÕR¾ß:×\×HŒßê˜|7 0wÀùŸŠE(þ²{ì°Àèo¤£_jøŸZ[ëÁ+Çl~.uP]¶›ã½y§$IÒè-ÉF7ÁÜüøÃÕ«pöâ錨÷q»¿Jô$I’€>Øà+_OÁaáý#U¿y¿ÏIЈzK´Æm¯’Ó’$u }&°Àý DzKØmE»áå_LЈz‡ µÚ$z ’$IÍúT`KISðÍ'¯EJZøŸýÇ¿­Àâ,JШz¶ 5š­¯ì_œèqH’$5ëS ÒXðÍi×"}Àå+7f`ñGà?Wý&#ëy„.Öú¿ŸèqH’$…ês ®dÅãO_‡Ì±i-;°å/ÅäWÄñÚøìÛÖÛ=îÛ ×Ö$Iênúd`‚õmãîíéß‚;î¾\P^q ÷q^õóQ-À»5›vˆý;d“$Ij l $Œæ&jü>ÃP¹\WÅf‹rpÛ–\Ö=>I’¤žH¶«@†Ç)ü^·Q«ªÂp¹®kŸ]4,[+s+eÁ³$IRÉÀGBn§®ú¼\ë÷Ç4UìÑ´Eë³-¹'ý‰Ÿ$IR_``Kô@z€Û¥«>¯¸à÷Šãˆ-¾ª~›ËóöÈ‚fI’¤²²À4(XE@Z¢ÓÝ0—ðº:¿_ÄçšßØz ʦÊÜJw¢Ç'I’$™YÝ…§7^óøW,Ö”è%3àuš×#êü>qBUõ MÅ¶Ô %¹g¢Ç'I’$µŸמ,éÿèˆIPh€ë<¦.à x݆æu‹‹>¿q2 Š/tÛœõÖŠ·+=>I’$©óZ’G\…_Vœ6ò~ÃÀF·$pLqáqº×c\ôûÄÉ€Ÿ÷j±]X_œ[y)Ñc“$I’ºNXVdç§O¤=vóýŠÂÀ¨Au„×#t¯[¯÷{ù¤0ö©¶‹_¡Ü S’$©o2¥û{ÖŸª8mä$ÃàµMHÄ ¢ñy„áqõ~Ÿq*àû4UYUßÚM¿=Q“è±I’$IÝGÔ:¶†OO×{tØÃKò*0¹šòy…áq ªOœøÄ~MEŠj]·ù7_T]ÍqH’$I=SÌíó…ç=ôôèién×_Áx*Þ'öû áu‹ŸWœ ¨b¿àëv¾zðt¼Ï%I’$õÄÌ­ð4YÒ\7åèG0ç¹ $Ù¨Ý'PýBx\F£ßkœQý|@ ˆ•Öï\´ÿxç†.I’$Ifm¶Ôâlx~ÀÔõ úE¬ã~!ÜnÃé÷ˆ³~Õ8 Plèúú¹‡ŽÆuÄ’$I’ÔŠv÷Št®ûòŨ¨üºÛi¸½^£*à*v CnÏ­<Ø••$I’¤öø^ïK«SÌÜIEND®B`‚PyQt5_gpl-5.10.1/examples/qtdemo/itemcircleanimation.py0000644000076500000240000003213313245231431023202 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# import math import random from PyQt5.QtCore import QLineF, QPointF, QRectF, Qt, QTime from colors import Colors from demoitem import DemoItem from demoitemanimation import DemoItemAnimation from guidecircle import GuideCircle from guideline import GuideLine from letteritem import LetterItem class TickerPostEffect(object): def tick(self, adjust): pass def transform(self, item, pos): pass class PostRotateXY(TickerPostEffect): def __init__(self, speedx, speedy, curvx, curvy): super(PostRotateXY, self).__init__() self.currRotX = 0.0 self.currRotY = 0.0 self.speedx = speedx self.speedy = speedy self.curvx = curvx self.curvy = curvy def tick(self, adjust): self.currRotX += self.speedx * adjust self.currRotY += self.speedy * adjust def transform(self, item, pos): parent = item.parentItem() center = parent.boundingRect().center() pos.setX(center.x() + (pos.x() - center.x()) * math.cos(self.currRotX + pos.x() * self.curvx)) pos.setY(center.y() + (pos.y() - center.y()) * math.cos(self.currRotY + pos.y() * self.curvy)) class PostRotateXYTwist(PostRotateXY): def transform(self, item, pos): parent = item.parentItem() center = parent.boundingRect().center() pos.setX(center.x() + (pos.x() - center.x()) * math.cos(self.currRotX + pos.y() * self.curvx)) pos.setY(center.y() + (pos.y() - center.y()) * math.cos(self.currRotY + pos.x() * self.curvy)) class TickerEffect(object): Normal, Intro, Outro = range(3) def __init__(self, letters): self.postEffect = TickerPostEffect() self.status = TickerEffect.Intro self.letters = letters self.morphSpeed = self.normalMorphSpeed = Colors.tickerMorphSpeed self.moveSpeed = self.normalMoveSpeed = Colors.tickerMoveSpeed self.useSheepDog = True self.morphBetweenModels = not Colors.noTickerMorph def setPostEffect(self, effect): self.postEffect = effect def slowDownAfterIntro(self, adjust): if self.morphBetweenModels: if self.status == TickerEffect.Intro: dec = 0.1 * adjust self.moveSpeed -= dec if self.moveSpeed < Colors.tickerMoveSpeed: self.moveSpeed = self.normalMoveSpeed self.morphSpeed = self.normalMorphSpeed self.status = TickerEffect.Normal def moveLetters(self, adjust): adaptedMoveSpeed = self.moveSpeed * adjust adaptedMorphSpeed = self.morphSpeed * adjust self.postEffect.tick(adjust) if self.morphBetweenModels: move_speed = adaptedMoveSpeed morph_speed = adaptedMorphSpeed else: move_speed = Colors.tickerMoveSpeed morph_speed = -1 for letter in self.letters: letter.guideAdvance(move_speed) letter.guideMove(morph_speed) pos = letter.getGuidedPos() self.postEffect.transform(letter, pos) if self.useSheepDog: letter.setPosUsingSheepDog(pos, QRectF(0, 0, 800, 600)) else: letter.setPos(pos) def tick(self, adjust): self.slowDownAfterIntro(adjust) self.moveLetters(adjust) class EffectWhirlWind(TickerEffect): def __init__(self, letters): super(EffectWhirlWind, self).__init__(letters) self.moveSpeed = 50 for letter in self.letters: letter.setGuidedPos(QPointF(0, 100)) class EffectSnake(TickerEffect): def __init__(self, letters): super(EffectSnake, self).__init__(letters) self.moveSpeed = 40 for i, letter in enumerate(self.letters): letter.setGuidedPos(QPointF(0, -250 - (i * 5))) class EffectScan(TickerEffect): def __init__(self, letters): super(EffectScan, self).__init__(letters) for letter in self.letters: letter.setGuidedPos(QPointF(100, -300)) class EffectRaindrops(TickerEffect): def __init__(self, letters): super(EffectRaindrops, self).__init__(letters) for letter in self.letters: letter.setGuidedPos(QPointF(random.randint(-100, 100), random.randint(-200, 1100))) class EffectLine(TickerEffect): def __init__(self, letters): super(EffectLine, self).__init__(letters) for i, letter in enumerate(self.letters): letter.setGuidedPos(QPointF(100, 500 + i * 20)) class ItemCircleAnimation(DemoItem): def __init__(self, parent=None): super(ItemCircleAnimation, self).__init__(parent) self.letterList = [] self.letterCount = Colors.tickerLetterCount self.scale = 1.0 self.showCount = -1 self.tickOnPaint = False self.paused = False self.doIntroTransitions = True self.setAcceptHoverEvents(True) self.setCursor(Qt.OpenHandCursor) self.setupGuides() self.setupLetters() self.useGuideQt() self.effect = None self.mouseMoveLastPosition = QPointF() self.tickTimer = QTime() def createLetter(self, c): letter = LetterItem(c, self) self.letterList.append(letter) def setupLetters(self): self.letterList = [] s = Colors.tickerText tlen = len(s) room = self.letterCount while room >= tlen: for c in s: self.createLetter(c) room -= tlen # Fill in with blanks. while room > 0: self.createLetter(' ') room -= 1 def setupGuides(self): x = 0 y = 20 self.qtGuide1 = GuideCircle(QRectF(x, y, 260, 260), -36, 342) GuideLine(QPointF(x + 240, y + 268), self.qtGuide1) GuideLine(QPointF(x + 265, y + 246), self.qtGuide1) GuideLine(QPointF(x + 158, y + 134), self.qtGuide1) GuideLine(QPointF(x + 184, y + 109), self.qtGuide1) GuideLine(QPointF(x + 160, y + 82), self.qtGuide1) GuideLine(QPointF(x + 77, y + 163), self.qtGuide1) GuideLine(QPointF(x + 100, y + 190), self.qtGuide1) GuideLine(QPointF(x + 132, y + 159), self.qtGuide1) GuideLine(QPointF(x + 188, y + 211), self.qtGuide1) GuideCircle(QRectF(x + 30, y + 30, 200, 200), -30, 336, GuideCircle.CW, self.qtGuide1) GuideLine(QPointF(x + 238, y + 201), self.qtGuide1) y = 30 self.qtGuide2 = GuideCircle(QRectF(x + 30, y + 30, 200, 200), 135, 270, GuideCircle.CCW) GuideLine(QPointF(x + 222, y + 38), self.qtGuide2) GuideCircle(QRectF(x, y, 260, 260), 135, 270, GuideCircle.CW, self.qtGuide2) GuideLine(QPointF(x + 59, y + 59), self.qtGuide2) x = 115 y = 10 self.qtGuide3 = GuideLine(QLineF(x, y, x + 30, y)) GuideLine(QPointF(x + 30, y + 170), self.qtGuide3) GuideLine(QPointF(x, y + 170), self.qtGuide3) GuideLine(QPointF(x, y), self.qtGuide3) self.qtGuide1.setFence(QRectF(0, 0, 800, 600)) self.qtGuide2.setFence(QRectF(0, 0, 800, 600)) self.qtGuide3.setFence(QRectF(0, 0, 800, 600)) def useGuide(self, guide, firstLetter, lastLetter): padding = guide.lengthAll() / float(lastLetter - firstLetter) for i, letter in enumerate(self.letterList[firstLetter:lastLetter]): letter.useGuide(guide, i * padding) def useGuideQt(self): if self.currGuide is not self.qtGuide1: self.useGuide(self.qtGuide1, 0, self.letterCount) self.currGuide = self.qtGuide1 def useGuideTt(self): if self.currGuide is not self.qtGuide2: split = int(self.letterCount * 5.0 / 7.0) self.useGuide(self.qtGuide2, 0, split) self.useGuide(self.qtGuide3, split, self.letterCount) self.currGuide = self.qtGuide2 def boundingRect(self): return QRectF(0, 0, 300, 320) def prepare(self): pass def switchToNextEffect(self): self.showCount += 1 if self.showCount == 1: self.effect = EffectSnake(self.letterList) elif self.showCount == 2: self.effect = EffectLine(self.letterList) self.effect.setPostEffect(PostRotateXYTwist(0.01, 0.0, 0.003, 0.0)) elif self.showCount == 3: self.effect = EffectRaindrops(self.letterList) self.effect.setPostEffect(PostRotateXYTwist(0.01, 0.005, 0.003, 0.003)) elif self.showCount == 4: self.effect = EffectScan(self.letterList) self.effect.normalMoveSpeed = 0 self.effect.setPostEffect(PostRotateXY(0.008, 0.0, 0.005, 0.0)) else: self.showCount = 0 self.effect = EffectWhirlWind(self.letterList) def animationStarted(self, id): if id == DemoItemAnimation.ANIM_IN: if self.doIntroTransitions: # Make all letters disappear. for letter in self.letterList: letter.setPos(1000, 0) self.switchToNextEffect() self.useGuideQt() self.scale = 1.0 # The first time we run, we have a rather large delay to # perform benchmark before the ticker shows. But now, since we # are showing, use a more appropriate value. self.currentAnimation.setStartDelay(1500) elif self.effect is not None: self.effect.useSheepDog = False self.tickTimer = QTime.currentTime() def swapModel(self): if self.currGuide is self.qtGuide2: self.useGuideQt() else: self.useGuideTt() def hoverEnterEvent(self, event): # Skip swap here to enhance ticker dragging. pass def hoverLeaveEvent(self, event): self.swapModel() def setTickerScale(self, s): self.scale = s self.qtGuide1.setScale(self.scale, self.scale) self.qtGuide2.setScale(self.scale, self.scale) self.qtGuide3.setScale(self.scale, self.scale) def mousePressEvent(self, event): self.mouseMoveLastPosition = event.scenePos(); if event.button() == Qt.LeftButton: self.setCursor(Qt.ClosedHandCursor) else: self.switchToNextEffect() def mouseReleaseEvent(self, event): if event.button() == Qt.LeftButton: self.setCursor(Qt.OpenHandCursor) def mouseMoveEvent(self, event): newPosition = event.scenePos() self.setPosUsingSheepDog(self.pos() + newPosition - self.mouseMoveLastPosition, QRectF(-260, -280, 1350, 1160)) self.mouseMoveLastPosition = newPosition def wheelEvent(self, event): if event.angleDelta().y() > 0: self.effect.moveSpeed -= 0.20 else: self.effect.moveSpeed += 0.20 if self.effect.moveSpeed < 0: self.effect.moveSpeed = 0.0 def pause(self, on): self.paused = on self.tickTimer = QTime.currentTime() def tick(self): if self.paused or not self.effect: return t = self.tickTimer.msecsTo(QTime.currentTime()) self.tickTimer = QTime.currentTime() self.effect.tick(t / 10.0) def paint(self, painter, opt, widget): if self.tickOnPaint: self.tick() PyQt5_gpl-5.10.1/examples/qtdemo/letteritem.py0000644000076500000240000000673413245231431021350 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QRect, Qt from PyQt5.QtGui import QColor, QImage, QLinearGradient, QPainter from colors import Colors from demoitem import DemoItem class LetterItem(DemoItem): def __init__(self, letter, parent=None): super(LetterItem, self).__init__(parent) self.letter = letter self.useSharedImage(__file__ + letter) def createImage(self, transform): scaledRect = transform.mapRect(QRect(0, 0, 25, 25)) image = QImage(scaledRect.width(), scaledRect.height(), QImage.Format_ARGB32_Premultiplied) image.fill(0) painter = QPainter(image) painter.scale(transform.m11(), transform.m22()) painter.setRenderHints(QPainter.TextAntialiasing | QPainter.Antialiasing | QPainter.SmoothPixmapTransform) painter.setPen(Qt.NoPen) if Colors.useEightBitPalette: painter.setBrush(QColor(102, 175, 54)) painter.drawEllipse(0, 0, 25, 25) painter.setFont(Colors.tickerFont()) painter.setPen(QColor(255, 255, 255)) painter.drawText(10, 15, self.letter) else: brush = QLinearGradient(0, 0, 0, 25) brush.setSpread(QLinearGradient.PadSpread) brush.setColorAt(0.0, QColor(102, 175, 54, 200)) brush.setColorAt(1.0, QColor(102, 175, 54, 60)) painter.setBrush(brush) painter.drawEllipse(0, 0, 25, 25) painter.setFont(Colors.tickerFont()) painter.setPen(QColor(255, 255, 255, 255)) painter.drawText(10, 15, self.letter) return image PyQt5_gpl-5.10.1/examples/qtdemo/mainwindow.py0000644000076500000240000003247113245231431021343 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QFileInfo, QPoint, QRect, qRound, Qt, QTime, QTimer from PyQt5.QtGui import (QFontMetricsF, QImage, QPainter, QPixmap, QPolygon, QRegion) from PyQt5.QtWidgets import (QApplication, QFrame, QGraphicsScene, QGraphicsView, QGraphicsWidget, QMessageBox, QWidget) from colors import Colors from demoitem import DemoItem from demotextitem import DemoTextItem from imageitem import ImageItem from menumanager import MenuManager class MainWindow(QGraphicsView): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.imagesDir = QFileInfo(__file__).absolutePath() + '/images' self.updateTimer = QTimer(self) self.demoStartTime = QTime() self.fpsTime = QTime() self.background = QPixmap() self.scene = None self.mainSceneRoot = None self.frameTimeList = [] self.fpsHistory = [] self.currentFps = Colors.fps self.fpsMedian = -1 self.fpsLabel = None self.pausedLabel = None self.doneAdapt = False self.useTimer = False self.updateTimer.setSingleShot(True) self.companyLogo = None self.qtLogo = None self.setupWidget() self.setupScene() self.setupSceneItems() self.drawBackgroundToPixmap() def setupWidget(self): desktop = QApplication.desktop() screenRect = desktop.screenGeometry(desktop.primaryScreen()) windowRect = QRect(0, 0, 800, 600) if screenRect.width() < 800: windowRect.setWidth(screenRect.width()) if screenRect.height() < 600: windowRect.setHeight(screenRect.height()) windowRect.moveCenter(screenRect.center()) self.setGeometry(windowRect) self.setMinimumSize(80, 60) self.setWindowTitle("PyQt Examples") self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setFrameStyle(QFrame.NoFrame) self.setRenderingSystem() self.updateTimer.timeout.connect(self.tick) def setRenderingSystem(self): self.setCacheMode(QGraphicsView.CacheBackground) self.setViewport(QWidget()) def start(self): self.switchTimerOnOff(True) self.demoStartTime.restart() MenuManager.instance().itemSelected(MenuManager.ROOT, Colors.rootMenuName) Colors.debug("- starting demo") def enableMask(self, enable): if not enable or Colors.noWindowMask: self.clearMask() else: region = QPolygon([ # North side. 0, 0, 800, 0, # East side. # 800, 70, # 790, 90, # 790, 480, # 800, 500, 800, 600, # South side. 700, 600, 670, 590, 130, 590, 100, 600, 0, 600, # West side. # 0, 550, # 10, 530, # 10, 520, # 0, 520, 0, 0]) self.setMask(QRegion(region)) def setupScene(self): self.scene = QGraphicsScene(self) self.scene.setSceneRect(0, 0, 800, 600) self.setScene(self.scene) self.scene.setItemIndexMethod(QGraphicsScene.NoIndex) def switchTimerOnOff(self, on): ticker = MenuManager.instance().ticker if ticker and ticker.scene(): ticker.tickOnPaint = not on or Colors.noTimerUpdate if on and not Colors.noTimerUpdate: self.useTimer = True self.fpsTime = QTime.currentTime() self.updateTimer.start(int(1000 / Colors.fps)) update_mode = QGraphicsView.NoViewportUpdate else: self.useTimer = False self.updateTimer.stop() if Colors.noTicker: update_mode = QGraphicsView.MinimalViewportUpdate else: update_mode = QGraphicsView.SmartViewportUpdate self.setViewportUpdateMode(update_mode) def measureFps(self): # Calculate time difference. t = self.fpsTime.msecsTo(QTime.currentTime()) if t == 0: t = 0.01 self.currentFps = (1000.0 / t) self.fpsHistory.append(self.currentFps) self.fpsTime = QTime.currentTime() # Calculate median. size = len(self.fpsHistory) if size == 10: self.fpsHistory.sort() self.fpsMedian = self.fpsHistory[int(size / 2)] if self.fpsMedian == 0: self.fpsMedian = 0.01 self.fpsHistory = [] return True return False def forceFpsMedianCalculation(self): # Used for adaption in case things are so slow that no median has yet # been calculated. if self.fpsMedian != -1: return size = len(self.fpsHistory) if size == 0: self.fpsMedian = 0.01 return self.fpsHistory.sort() self.fpsMedian = self.fpsHistory[size // 2] if self.fpsMedian == 0: self.fpsMedian = 0.01 def tick(self): medianChanged = self.measureFps() self.checkAdapt() if medianChanged and self.fpsLabel and Colors.showFps: self.fpsLabel.setText("FPS: %d" % int(self.currentFps)) if MenuManager.instance().ticker: MenuManager.instance().ticker.tick() self.viewport().update() if self.useTimer: self.updateTimer.start(int(1000 / Colors.fps)) def setupSceneItems(self): if Colors.showFps: self.fpsLabel = DemoTextItem("FPS: --", Colors.buttonFont(), Qt.white, -1, None, DemoTextItem.DYNAMIC_TEXT) self.fpsLabel.setZValue(1000) self.fpsLabel.setPos(Colors.stageStartX, 600 - QFontMetricsF(Colors.buttonFont()).height() - 5) self.mainSceneRoot = QGraphicsWidget() self.scene.addItem(self.mainSceneRoot) self.companyLogo = ImageItem( QImage(self.imagesDir + '/trolltech-logo.png'), 1000, 1000, None, True, 0.5) self.qtLogo = ImageItem(QImage(self.imagesDir + '/qtlogo_small.png'), 1000, 1000, None, True, 0.5) self.companyLogo.setZValue(100) self.qtLogo.setZValue(100) self.pausedLabel = DemoTextItem("PAUSED", Colors.buttonFont(), Qt.white, -1, None) self.pausedLabel.setZValue(100) fm = QFontMetricsF(Colors.buttonFont()) self.pausedLabel.setPos(Colors.stageWidth - fm.width("PAUSED"), 590 - fm.height()) self.pausedLabel.setRecursiveVisible(False) def checkAdapt(self): if self.doneAdapt or Colors.noTimerUpdate or self.demoStartTime.elapsed() < 2000: return self.doneAdapt = True self.forceFpsMedianCalculation() Colors.benchmarkFps = self.fpsMedian Colors.debug("- benchmark: %d FPS" % int(Colors.benchmarkFps)) if Colors.noAdapt: return if self.fpsMedian < 30: ticker = MenuManager.instance().ticker if ticker and ticker.scene(): self.scene.removeItem(ticker) Colors.noTimerUpdate = True self.switchTimerOnOff(False) if self.fpsLabel: self.fpsLabel.setText("FPS: (%d)" % int(self.fpsMedian)) Colors.debug("- benchmark adaption: removed ticker (fps < 30)") if self.fpsMedian < 20: Colors.noAnimations = True Colors.debug("- benchmark adaption: animations switched off (fps < 20)") Colors.adapted = True def drawBackgroundToPixmap(self): r = self.scene.sceneRect() self.background = QPixmap(qRound(r.width()), qRound(r.height())) self.background.fill(Qt.black) painter = QPainter(self.background) bg = QImage(self.imagesDir + '/demobg.png') painter.drawImage(0, 0, bg) def drawBackground(self, painter, rect): painter.drawPixmap(QPoint(0, 0), self.background) def toggleFullscreen(self): if self.isFullScreen(): self.enableMask(True) self.showNormal() if MenuManager.instance().ticker: MenuManager.instance().ticker.pause(False) else: self.enableMask(False) self.showFullScreen() def keyPressEvent(self, event): if event.key() == Qt.Key_Escape: QApplication.quit() elif event.key() == Qt.Key_F1: s = "" s += "\nAdapt: " s += ["on", "off"][Colors.noAdapt] s += "\nAdaption occured: " s += ["no", "yes"][Colors.adapted] w = QWidget() s += "\nColor bit depth: %d" % w.depth() s += "\nWanted FPS: %d" % Colors.fps s += "\nBenchmarked FPS: "; if Colors.benchmarkFps != -1: s += "%d" % Colors.benchmarkFps else: s += "not calculated" s += "\nAnimations: "; s += ["on", "off"][Colors.noAnimations] s += "\nBlending: "; s += ["on", "off"][Colors.useEightBitPalette] s += "\nTicker: "; s += ["on", "off"][Colors.noTicker] s += "\nPixmaps: "; s += ["off", "on"][Colors.usePixmaps] s += "\nRescale images on resize: "; s += ["on", "off"][Colors.noRescale] s += "\nTimer based updates: "; s += ["on", "off"][Colors.noTimerUpdate] s += "\nSeparate loop: "; s += ["no", "yes"][Colors.useLoop] s += "\nScreen sync: "; s += ["yes", "no"][Colors.noScreenSync] QMessageBox.information(None, "Current configuration", s) super(MainWindow, self).keyPressEvent(event) def focusInEvent(self, event): if not Colors.pause: return if MenuManager.instance().ticker: MenuManager.instance().ticker.pause(False) code = MenuManager.instance().currentMenuCode if code in (MenuManager.ROOT, MenuManager.MENU1): self.switchTimerOnOff(True) self.pausedLabel.setRecursiveVisible(False) def focusOutEvent(self, event): if not Colors.pause: return if MenuManager.instance().ticker: MenuManager.instance().ticker.pause(True) code = MenuManager.instance().currentMenuCode if code in (MenuManager.ROOT, MenuManager.MENU1): self.switchTimerOnOff(False) self.pausedLabel.setRecursiveVisible(True) def resizeEvent(self, event): self.resetTransform() self.scale(event.size().width() / 800.0, event.size().height() / 600.0) super(MainWindow, self).resizeEvent(event) DemoItem.setTransform(self.transform()) if self.companyLogo: r = self.scene.sceneRect() ttb = self.companyLogo.boundingRect() self.companyLogo.setPos(int((r.width() - ttb.width()) / 2), 595 - ttb.height()) qtb = self.qtLogo.boundingRect() self.qtLogo.setPos(802 - qtb.width(), 0) # Changing size will almost always hurt FPS during the change so ignore # it. self.fpsHistory = [] PyQt5_gpl-5.10.1/examples/qtdemo/menucontent.py0000644000076500000240000001164513245231431021526 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QFile, QFileInfo, QRectF, QTextStream from colors import Colors from demoitem import DemoItem from demoitemanimation import DemoItemAnimation from demotextitem import DemoTextItem from headingitem import HeadingItem class MenuContentItem(DemoItem): def __init__(self, el, parent=None): super(MenuContentItem, self).__init__(parent) self.name = el.getAttribute('name') self.heading = None self.description1 = None self.description2 = None readme_dir = QFileInfo(__file__).dir() readme_dir.cdUp() readme_dir.cd(el.getAttribute('dirname')) self.readmePath = readme_dir.absoluteFilePath('README') self._prepared = False def prepare(self): if not self._prepared: self.createContent() self._prepared= True def animationStopped(self, id): if self.name == Colors.rootMenuName: # Optimization hack. return if id == DemoItemAnimation.ANIM_OUT: # Free up some memory self.heading = None self.description1 = None self.description2 = None self._prepared = False def loadDescription(self, startPara, nrPara): readme = QFile(self.readmePath) if not readme.open(QFile.ReadOnly): Colors.debug("- MenuContentItem.loadDescription: Could not load:", self.readmePath) return "" in_str = QTextStream(readme) # Skip a certain number of paragraphs. while startPara: if not in_str.readLine(): startPara -= 1 # Read in the number of wanted paragraphs. result = '' line = in_str.readLine() while True: result += line + " " line = in_str.readLine() if not line: nrPara -= 1 line = "

      " + in_str.readLine() if nrPara == 0 or in_str.atEnd(): break return Colors.contentColor + result def createContent(self): # Create the items. self.heading = HeadingItem(self.name, self) para1 = self.loadDescription(0, 1) if not para1: para1 = Colors.contentColor + "Could not load description. Ensure that the documentation for Qt is built." bgcolor = Colors.sceneBg1.darker(200) bgcolor.setAlpha(100) self.description1 = DemoTextItem(para1, Colors.contentFont(), Colors.heading, 500, self, DemoTextItem.STATIC_TEXT) self.description2 = DemoTextItem(self.loadDescription(1, 2), Colors.contentFont(), Colors.heading, 250, self, DemoTextItem.STATIC_TEXT) # Place the items on screen. self.heading.setPos(0, 3) self.description1.setPos(0, self.heading.pos().y() + self.heading.boundingRect().height() + 10) self.description2.setPos(0, self.description1.pos().y() + self.description1.boundingRect().height() + 15) def boundingRect(self): return QRectF(0, 0, 500, 350) PyQt5_gpl-5.10.1/examples/qtdemo/menumanager.py0000644000076500000240000011025613245231431021464 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# import sys from xml.dom.minidom import parseString from PyQt5.QtCore import (QByteArray, QDir, QEasingCurve, QFile, QFileInfo, QLibraryInfo, QObject, QPointF, QProcess, QProcessEnvironment, QStandardPaths, Qt, QT_VERSION, QT_VERSION_STR, QTextStream, QUrl) from PyQt5.QtWidgets import QApplication, QMessageBox from colors import Colors from demoitemanimation import DemoItemAnimation from examplecontent import ExampleContent from itemcircleanimation import ItemCircleAnimation from menucontent import MenuContentItem from score import Score from textbutton import TextButton class MenuManager(QObject): ROOT, MENU1, MENU2, LAUNCH, DOCUMENTATION, QUIT, FULLSCREEN, UP, DOWN, \ BACK, LAUNCH_QML = range(11) pInstance = None def __init__(self): super(MenuManager, self).__init__() self.contentsDoc = None self.assistantProcess = QProcess() self.helpRootUrl = '' self.docDir = QDir() self.imgDir = QDir() self.info = {} self.window = None self.ticker = None self.tickerInAnim = None self.upButton = None self.downButton = None self.score = Score() self.currentMenu = "[no menu visible]" self.currentCategory = "[no category visible]" self.currentMenuButtons = "[no menu buttons visible]" self.currentInfo = "[no info visible]" self.currentMenuCode = -1 self.readXmlDocument() @classmethod def instance(cls): if cls.pInstance is None: cls.pInstance = cls() return cls.pInstance def getResource(self, name): return QByteArray() def readXmlDocument(self): root = QFileInfo(__file__).absolutePath() xml_file = QFile(root + '/examples.xml') xml_file.open(QFile.ReadOnly | QFile.Text) contents = xml_file.readAll().data() xml_file.close() self.contentsDoc = parseString(contents) def itemSelected(self, userCode, menuName): if userCode == MenuManager.LAUNCH: self.launchExample(self.currentInfo) elif userCode == MenuManager.LAUNCH_QML: self.launchQml(self.currentInfo) elif userCode == MenuManager.DOCUMENTATION: self.showDocInAssistant(self.currentInfo) elif userCode == MenuManager.QUIT: QApplication.quit() elif userCode == MenuManager.FULLSCREEN: self.window.toggleFullscreen() elif userCode == MenuManager.ROOT: # Out. self.score.queueMovie(self.currentMenu + ' -out', Score.FROM_START, Score.LOCK_ITEMS) self.score.queueMovie(self.currentMenuButtons + ' -out', Score.FROM_START, Score.LOCK_ITEMS) self.score.queueMovie(self.currentInfo + ' -out') self.score.queueMovie(self.currentInfo + ' -buttons -out', Score.NEW_ANIMATION_ONLY) self.score.queueMovie('back -out', Score.ONLY_IF_VISIBLE) # Book-keeping. self.currentMenuCode = MenuManager.ROOT self.currentMenu = menuName + ' -menu1' self.currentMenuButtons = menuName + ' -buttons' self.currentInfo = menuName + ' -info' # In. self.score.queueMovie('upndown -shake') self.score.queueMovie(self.currentMenu, Score.FROM_START, Score.UNLOCK_ITEMS) self.score.queueMovie(self.currentMenuButtons, Score.FROM_START, Score.UNLOCK_ITEMS) self.score.queueMovie(self.currentInfo) if not Colors.noTicker: self.ticker.doIntroTransitions = True self.tickerInAnim.setStartDelay(2000) self.ticker.useGuideQt() self.score.queueMovie('ticker', Score.NEW_ANIMATION_ONLY) elif userCode == MenuManager.MENU1: # Out. self.score.queueMovie(self.currentMenu + ' -out', Score.FROM_START, Score.LOCK_ITEMS) self.score.queueMovie(self.currentMenuButtons + ' -out', Score.FROM_START, Score.LOCK_ITEMS) self.score.queueMovie(self.currentInfo + ' -out') # Book-keeping. self.currentMenuCode = MenuManager.MENU1 self.currentCategory = menuName self.currentMenu = menuName + ' -menu1' self.currentInfo = menuName + ' -info' # In. self.score.queueMovie('upndown -shake') self.score.queueMovie('back -in') self.score.queueMovie(self.currentMenu, Score.FROM_START, Score.UNLOCK_ITEMS) self.score.queueMovie(self.currentInfo) if not Colors.noTicker: self.ticker.useGuideTt() elif userCode == MenuManager.MENU2: # Out. self.score.queueMovie(self.currentInfo + ' -out', Score.NEW_ANIMATION_ONLY) self.score.queueMovie(self.currentInfo + ' -buttons -out', Score.NEW_ANIMATION_ONLY) # Book-keeping. self.currentMenuCode = MenuManager.MENU2 self.currentInfo = menuName # In/shake. self.score.queueMovie('upndown -shake') self.score.queueMovie('back -shake') self.score.queueMovie(self.currentMenu + ' -shake') self.score.queueMovie(self.currentInfo, Score.NEW_ANIMATION_ONLY) self.score.queueMovie(self.currentInfo + ' -buttons', Score.NEW_ANIMATION_ONLY) if not Colors.noTicker: self.score.queueMovie('ticker -out', Score.NEW_ANIMATION_ONLY) elif userCode == MenuManager.UP: backMenu = self.info[self.currentMenu]['back'] if backMenu: self.score.queueMovie(self.currentMenu + ' -top_out', Score.FROM_START, Score.LOCK_ITEMS) self.score.queueMovie(backMenu + ' -bottom_in', Score.FROM_START, Score.UNLOCK_ITEMS) self.currentMenu = backMenu elif userCode == MenuManager.DOWN: moreMenu = self.info[self.currentMenu]['more'] if moreMenu: self.score.queueMovie(self.currentMenu + ' -bottom_out', Score.FROM_START, Score.LOCK_ITEMS) self.score.queueMovie(moreMenu + ' -top_in', Score.FROM_START, Score.UNLOCK_ITEMS) self.currentMenu = moreMenu elif userCode == MenuManager.BACK: if self.currentMenuCode == MenuManager.MENU2: # Out. self.score.queueMovie(self.currentInfo + ' -out', Score.NEW_ANIMATION_ONLY) self.score.queueMovie(self.currentInfo + ' -buttons -out', Score.NEW_ANIMATION_ONLY) # Book-keeping. self.currentMenuCode = MenuManager.MENU1 self.currentMenuButtons = self.currentCategory + ' -buttons' self.currentInfo = self.currentCategory + ' -info' # In/shake. self.score.queueMovie('upndown -shake') self.score.queueMovie(self.currentMenu + ' -shake') self.score.queueMovie(self.currentInfo, Score.NEW_ANIMATION_ONLY) self.score.queueMovie(self.currentInfo + ' -buttons', Score.NEW_ANIMATION_ONLY) if not Colors.noTicker: self.ticker.doIntroTransitions = False self.tickerInAnim.setStartDelay(500) self.score.queueMovie('ticker', Score.NEW_ANIMATION_ONLY) elif self.currentMenuCode != MenuManager.ROOT: self.itemSelected(MenuManager.ROOT, Colors.rootMenuName) # Update back and more buttons. if self.info.setdefault(self.currentMenu, {}).get('back'): back_state = TextButton.OFF else: back_state = TextButton.DISABLED if self.info[self.currentMenu].get('more'): more_state = TextButton.OFF else: more_state = TextButton.DISABLED self.upButton.setState(back_state) self.downButton.setState(more_state) if self.score.hasQueuedMovies(): self.score.playQue() # Playing new movies might include loading etc., so ignore the FPS # at this point. self.window.fpsHistory = [] def showDocInAssistant(self, name): url = self.resolveDocUrl(name) Colors.debug("Sending URL to Assistant:", url) # Start assistant if it's not already running. if self.assistantProcess.state() != QProcess.Running: app = QLibraryInfo.location(QLibraryInfo.BinariesPath) + QDir.separator() if sys.platform == 'darwin': app += 'Assistant.app/Contents/MacOS/Assistant' else: app += 'assistant' args = ['-enableRemoteControl'] self.assistantProcess.start(app, args) if not self.assistantProcess.waitForStarted(): QMessageBox.critical(None, "PyQt Demo", "Could not start %s." % app) return # Send command through remote control even if the process was just # started to activate assistant and bring it to the front. cmd_str = QTextStream(self.assistantProcess) cmd_str << 'SetSource ' << url << '\n' def launchExample(self, name): executable = self.resolveExeFile(name) process = QProcess(self) process.error.connect(self.launchError) if sys.platform == 'win32': # Make sure it finds the DLLs on Windows. env = QProcessEnvironment.systemEnvironment() env.insert('PATH', QLibraryInfo.location(QLibraryInfo.BinariesPath) + ';' + env.value('PATH')) process.setProcessEnvironment(env) if self.info[name]['changedirectory'] != 'false': workingDirectory = self.resolveDataDir(name) process.setWorkingDirectory(workingDirectory) Colors.debug("Setting working directory:", workingDirectory) Colors.debug("Launching:", executable) process.start(sys.executable, [executable]) def launchQml(self, name): import_path = self.resolveDataDir(name) qml = self.resolveQmlFile(name) process = QProcess(self) process.error.connect(self.launchError) env = QProcessEnvironment.systemEnvironment() env.insert('QML2_IMPORT_PATH', import_path) process.setProcessEnvironment(env) executable = QLibraryInfo.location(QLibraryInfo.BinariesPath) + '/qmlscene' Colors.debug("Launching:", executable) process.start(executable, [qml]) def launchError(self, error): if error != QProcess.Crashed: QMessageBox.critical(None, "Failed to launch the example", "Could not launch the example. Ensure that it has been " "built.", QMessageBox.Cancel) def init(self, window): self.window = window # Create div. self.createTicker() self.createUpnDownButtons() self.createBackButton() # Create first level menu. rootElement = self.contentsDoc.documentElement self.createRootMenu(rootElement) # Create second level menus. level2Menu = self._first_element(rootElement) while level2Menu is not None: self.createSubMenu(level2Menu) # Create leaf menu and example info. example = self._first_element(level2Menu) while example is not None: self.readInfoAboutExample(example) self.createLeafMenu(example) example = self._next_element(example) level2Menu = self._next_element(level2Menu) @classmethod def _first_element(cls, node): return cls._skip_nonelements(node.firstChild) @classmethod def _next_element(cls, node): return cls._skip_nonelements(node.nextSibling) @staticmethod def _skip_nonelements(node): while node is not None and node.nodeType != node.ELEMENT_NODE: node = node.nextSibling return node def readInfoAboutExample(self, example): name = example.getAttribute('name') if name in self.info: Colors.debug("__WARNING: MenuManager.readInfoAboutExample: " "Demo/example with name", name, "appears twice in " "the xml-file!__") self.info.setdefault(name, {})['filename'] = example.getAttribute('filename') self.info[name]['dirname'] = example.parentNode.getAttribute('dirname') self.info[name]['changedirectory'] = example.getAttribute('changedirectory') self.info[name]['image'] = example.getAttribute('image') self.info[name]['qml'] = example.getAttribute('qml') def resolveDir(self, name): dirName = self.info[name]['dirname'] fileName = self.info[name]['filename'].split('/') dir = QFileInfo(__file__).dir() # To the 'examples' directory. dir.cdUp() dir.cd(dirName) if len(fileName) > 1: dir.cd('/'.join(fileName[:-1])) # This may legitimately fail if the example is just a simple .py file. dir.cd(fileName[-1]) return dir def resolveDataDir(self, name): return self.resolveDir(name).absolutePath() def resolveExeFile(self, name): dir = self.resolveDir(name) fileName = self.info[name]['filename'].split('/')[-1] pyFile = QFile(dir.path() + '/' + fileName + '.py') if pyFile.exists(): return pyFile.fileName() pywFile = QFile(dir.path() + '/' + fileName + '.pyw') if pywFile.exists(): return pywFile.fileName() Colors.debug("- WARNING: Could not resolve executable:", dir.path(), fileName) return '__executable not found__' def resolveQmlFile(self, name): dir = self.resolveDir(name) fileName = self.info[name]['filename'].split('/')[-1] qmlFile = QFile(dir.path() + '/' + fileName + '.qml') if qmlFile.exists(): return qmlFile.fileName() Colors.debug("- WARNING: Could not resolve QML file:", dir.path(), fileName) return '__QML not found__' def resolveDocUrl(self, name): dirName = self.info[name]['dirname'] fileName = self.info[name]['filename'] return self.helpRootUrl + dirName.replace('/', '-') + '-' + fileName + '.html' def resolveImageUrl(self, name): return self.helpRootUrl + 'images/' + name def getHtml(self, name): return self.getResource(self.resolveDocUrl(name)) def getImage(self, name): imageName = self.info[name]['image'] fileName = self.info[name]['filename'] if self.info[name]['qml'] == 'true': fileName = 'qml-' + fileName.split('/')[-1] if not imageName: imageName = fileName + '-example.png' if self.getResource(self.resolveImageUrl(imageName)).isEmpty(): imageName = fileName + '.png' if self.getResource(self.resolveImageUrl(imageName)).isEmpty(): imageName = fileName + 'example.png' return self.getResource(self.resolveImageUrl(imageName)) def createRootMenu(self, el): name = el.getAttribute('name') self.createMenu(el, MenuManager.MENU1) self.createInfo( MenuContentItem(el, self.window.mainSceneRoot), name + ' -info') menuButtonsIn = self.score.insertMovie(name + ' -buttons') menuButtonsOut = self.score.insertMovie(name + ' -buttons -out') self.createLowLeftButton("Quit", MenuManager.QUIT, menuButtonsIn, menuButtonsOut, None) self.createLowRightButton("Toggle fullscreen", MenuManager.FULLSCREEN, menuButtonsIn, menuButtonsOut, None) def createSubMenu(self, el): name = el.getAttribute('name') self.createMenu(el, MenuManager.MENU2) self.createInfo( MenuContentItem(el, self.window.mainSceneRoot), name + ' -info') def createLeafMenu(self, el): name = el.getAttribute('name') self.createInfo(ExampleContent(name, self.window.mainSceneRoot), name) infoButtonsIn = self.score.insertMovie(name + ' -buttons') infoButtonsOut = self.score.insertMovie(name + ' -buttons -out') self.createLowRightLeafButton("Documentation", 600, MenuManager.DOCUMENTATION, infoButtonsIn, infoButtonsOut, None) if el.getAttribute('executable') != 'false': self.createLowRightLeafButton("Launch", 405, MenuManager.LAUNCH, infoButtonsIn, infoButtonsOut, None) elif el.getAttribute('qml') == 'true': self.createLowRightLeafButton("Display", 405, MenuManager.LAUNCH_QML, infoButtonsIn, infoButtonsOut, None) def createMenu(self, category, type): sw = self.window.scene.sceneRect().width() xOffset = 15 yOffset = 10 maxExamples = Colors.menuCount menuIndex = 1 name = category.getAttribute('name') currentNode = self._first_element(category) currentMenu = '%s -menu%d' % (name, menuIndex) while currentNode is not None: movieIn = self.score.insertMovie(currentMenu) movieOut = self.score.insertMovie(currentMenu + ' -out') movieNextTopOut = self.score.insertMovie(currentMenu + ' -top_out') movieNextBottomOut = self.score.insertMovie(currentMenu + ' -bottom_out') movieNextTopIn = self.score.insertMovie(currentMenu + ' -top_in') movieNextBottomIn = self.score.insertMovie(currentMenu + ' -bottom_in') movieShake = self.score.insertMovie(currentMenu + ' -shake') i = 0 while currentNode is not None and i < maxExamples: # Create a normal menu button. label = currentNode.getAttribute('name') item = TextButton(label, TextButton.LEFT, type, self.window.mainSceneRoot) item.setRecursiveVisible(False) item.setZValue(10) ih = item.sceneBoundingRect().height() iw = item.sceneBoundingRect().width() ihp = ih + 3 # Create in-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration(1000 + (i * 20)) anim.setStartValue(QPointF(xOffset, -ih)) anim.setKeyValueAt(0.20, QPointF(xOffset, -ih)) anim.setKeyValueAt(0.50, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY + (10 * float(i / 4.0)))) anim.setKeyValueAt(0.60, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.70, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY + (5 * float(i / 4.0)))) anim.setKeyValueAt(0.80, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.90, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY + (2 * float(i / 4.0)))) anim.setEndValue(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) movieIn.append(anim) # Create out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.setHideOnFinished(True) anim.setDuration(700 + (30 * i)) anim.setStartValue(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.60, QPointF(xOffset, 600 - ih - ih)) anim.setKeyValueAt(0.65, QPointF(xOffset + 20, 600 - ih)) anim.setEndValue(QPointF(sw + iw, 600 - ih)) movieOut.append(anim) # Create shake-animation. anim = DemoItemAnimation(item) anim.setDuration(700) anim.setStartValue(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.55, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY - i*2.0)) anim.setKeyValueAt(0.70, QPointF(xOffset - 10, (i * ihp) + yOffset + Colors.contentStartY - i*1.5)) anim.setKeyValueAt(0.80, QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY - i*1.0)) anim.setKeyValueAt(0.90, QPointF(xOffset - 2, (i * ihp) + yOffset + Colors.contentStartY - i*0.5)) anim.setEndValue(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) movieShake.append(anim) # Create next-menu top-out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.setHideOnFinished(True) anim.setDuration(200 + (30 * i)) anim.setStartValue(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.70, QPointF(xOffset, yOffset + Colors.contentStartY)) anim.setEndValue(QPointF(-iw, yOffset + Colors.contentStartY)) movieNextTopOut.append(anim) # Create next-menu bottom-out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.setHideOnFinished(True) anim.setDuration(200 + (30 * i)) anim.setStartValue(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.70, QPointF(xOffset, (maxExamples * ihp) + yOffset + Colors.contentStartY)) anim.setEndValue(QPointF(-iw, (maxExamples * ihp) + yOffset + Colors.contentStartY)) movieNextBottomOut.append(anim) # Create next-menu top-in-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration(700 - (30 * i)) anim.setStartValue(QPointF(-iw, yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.30, QPointF(xOffset, yOffset + Colors.contentStartY)) anim.setEndValue(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) movieNextTopIn.append(anim) # Create next-menu bottom-in-animation. reverse = maxExamples - i anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration(1000 - (30 * reverse)) anim.setStartValue(QPointF(-iw, (maxExamples * ihp) + yOffset + Colors.contentStartY)) anim.setKeyValueAt(0.30, QPointF(xOffset, (maxExamples * ihp) + yOffset + Colors.contentStartY)) anim.setEndValue(QPointF(xOffset, (i * ihp) + yOffset + Colors.contentStartY)) movieNextBottomIn.append(anim) i += 1 currentNode = self._next_element(currentNode) if currentNode is not None and i == maxExamples: # We need another menu, so register for 'more' and 'back' # buttons. menuIndex += 1 self.info.setdefault(currentMenu, {})['more'] = '%s -menu%d' % (name, menuIndex) currentMenu = '%s -menu%d' % (name, menuIndex) self.info.setdefault(currentMenu, {})['back'] = '%s -menu%d' % (name, menuIndex - 1) def createLowLeftButton(self, label, type, movieIn, movieOut, movieShake, menuString=""): button = TextButton(label, TextButton.RIGHT, type, self.window.mainSceneRoot, TextButton.PANEL) if menuString: button.setMenuString(menuString) button.setRecursiveVisible(False) button.setZValue(10) iw = button.sceneBoundingRect().width() xOffset = 15 # Create in-animation. buttonIn = DemoItemAnimation(button, DemoItemAnimation.ANIM_IN) buttonIn.setDuration(1800) buttonIn.setStartValue(QPointF(-iw, Colors.contentStartY + Colors.contentHeight - 35)) buttonIn.setKeyValueAt(0.5, QPointF(-iw, Colors.contentStartY + Colors.contentHeight - 35)) buttonIn.setKeyValueAt(0.7, QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 35)) buttonIn.setEndValue(QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 26)) movieIn.append(buttonIn) # Create out-animation. buttonOut = DemoItemAnimation(button, DemoItemAnimation.ANIM_OUT) buttonOut.setHideOnFinished(True) buttonOut.setDuration(400) buttonOut.setStartValue(QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 26)) buttonOut.setEndValue(QPointF(-iw, Colors.contentStartY + Colors.contentHeight - 26)) movieOut.append(buttonOut) if movieShake is not None: shakeAnim = DemoItemAnimation(button, DemoItemAnimation.ANIM_UNSPECIFIED) shakeAnim.setDuration(650) shakeAnim.setStartValue(buttonIn.endValue()) shakeAnim.setKeyValueAt(0.60, buttonIn.endValue()) shakeAnim.setKeyValueAt(0.70, buttonIn.endValue() + QPointF(-3, 0)) shakeAnim.setKeyValueAt(0.80, buttonIn.endValue() + QPointF(2, 0)) shakeAnim.setKeyValueAt(0.90, buttonIn.endValue() + QPointF(-1, 0)) shakeAnim.setEndValue(buttonIn.endValue()) movieShake.append(shakeAnim) def createLowRightButton(self, label, type, movieIn, movieOut, movieShake): item = TextButton(label, TextButton.RIGHT, type, self.window.mainSceneRoot, TextButton.PANEL) item.setRecursiveVisible(False) item.setZValue(10) sw = self.window.scene.sceneRect().width() xOffset = 70 # Create in-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration(1800) anim.setStartValue(QPointF(sw, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt(0.5, QPointF(sw, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt(0.7, QPointF(xOffset + 535, Colors.contentStartY + Colors.contentHeight - 35)) anim.setEndValue(QPointF(xOffset + 535, Colors.contentStartY + Colors.contentHeight - 26)) movieIn.append(anim) # Create out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.setHideOnFinished(True) anim.setDuration(400) anim.setStartValue(QPointF(xOffset + 535, Colors.contentStartY + Colors.contentHeight - 26)) anim.setEndValue(QPointF(sw, Colors.contentStartY + Colors.contentHeight - 26)) movieOut.append(anim) def createLowRightLeafButton(self, label, xOffset, type, movieIn, movieOut, movieShake): item = TextButton(label, TextButton.RIGHT, type, self.window.mainSceneRoot, TextButton.PANEL) item.setRecursiveVisible(False) item.setZValue(10) sw = self.window.scene.sceneRect().width() sh = self.window.scene.sceneRect().height() # Create in-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) anim.setDuration(1050) anim.setStartValue(QPointF(sw, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt(0.10, QPointF(sw, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt(0.30, QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt(0.35, QPointF(xOffset + 30, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt(0.40, QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt(0.45, QPointF(xOffset + 5, Colors.contentStartY + Colors.contentHeight - 35)) anim.setKeyValueAt(0.50, QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 35)) anim.setEndValue(QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 26)) movieIn.append(anim) # Create out-animation. anim = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) anim.setHideOnFinished(True) anim.setDuration(300) anim.setStartValue(QPointF(xOffset, Colors.contentStartY + Colors.contentHeight - 26)) anim.setEndValue(QPointF(xOffset, sh)) movieOut.append(anim) def createInfo(self, item, name): movie_in = self.score.insertMovie(name) movie_out = self.score.insertMovie(name + ' -out') item.setZValue(8) item.setRecursiveVisible(False) xOffset = 230.0 infoIn = DemoItemAnimation(item, DemoItemAnimation.ANIM_IN) infoIn.setDuration(650) infoIn.setStartValue(QPointF(self.window.scene.sceneRect().width(), Colors.contentStartY)) infoIn.setKeyValueAt(0.60, QPointF(xOffset, Colors.contentStartY)) infoIn.setKeyValueAt(0.70, QPointF(xOffset + 20, Colors.contentStartY)) infoIn.setKeyValueAt(0.80, QPointF(xOffset, Colors.contentStartY)) infoIn.setKeyValueAt(0.90, QPointF(xOffset + 7, Colors.contentStartY)) infoIn.setEndValue(QPointF(xOffset, Colors.contentStartY)) movie_in.append(infoIn) infoOut = DemoItemAnimation(item, DemoItemAnimation.ANIM_OUT) infoOut.setCurveShape(QEasingCurve.InQuad) infoOut.setDuration(300) infoOut.setHideOnFinished(True) infoOut.setStartValue(QPointF(xOffset, Colors.contentStartY)) infoOut.setEndValue(QPointF(-600, Colors.contentStartY)) movie_out.append(infoOut) def createTicker(self): if Colors.noTicker: return movie_in = self.score.insertMovie('ticker') movie_out = self.score.insertMovie('ticker -out') movie_activate = self.score.insertMovie('ticker -activate') movie_deactivate = self.score.insertMovie('ticker -deactivate') self.ticker = ItemCircleAnimation() self.ticker.setZValue(50) self.ticker.hide() # Move ticker in. qtendpos = 485 qtPosY = 120 self.tickerInAnim = DemoItemAnimation(self.ticker, DemoItemAnimation.ANIM_IN) self.tickerInAnim.setDuration(500) self.tickerInAnim.setStartValue(QPointF(self.window.scene.sceneRect().width(), Colors.contentStartY + qtPosY)) self.tickerInAnim.setKeyValueAt(0.60, QPointF(qtendpos, Colors.contentStartY + qtPosY)) self.tickerInAnim.setKeyValueAt(0.70, QPointF(qtendpos + 30, Colors.contentStartY + qtPosY)) self.tickerInAnim.setKeyValueAt(0.80, QPointF(qtendpos, Colors.contentStartY + qtPosY)) self.tickerInAnim.setKeyValueAt(0.90, QPointF(qtendpos + 5, Colors.contentStartY + qtPosY)) self.tickerInAnim.setEndValue(QPointF(qtendpos, Colors.contentStartY + qtPosY)) movie_in.append(self.tickerInAnim) # Move ticker out. qtOut = DemoItemAnimation(self.ticker, DemoItemAnimation.ANIM_OUT) qtOut.setHideOnFinished(True) qtOut.setDuration(500) qtOut.setStartValue(QPointF(qtendpos, Colors.contentStartY + qtPosY)) qtOut.setEndValue(QPointF(self.window.scene.sceneRect().width() + 700, Colors.contentStartY + qtPosY)) movie_out.append(qtOut) # Move ticker in on activate. qtActivate = DemoItemAnimation(self.ticker) qtActivate.setDuration(400) qtActivate.setStartValue(QPointF(self.window.scene.sceneRect().width(), Colors.contentStartY + qtPosY)) qtActivate.setKeyValueAt(0.60, QPointF(qtendpos, Colors.contentStartY + qtPosY)) qtActivate.setKeyValueAt(0.70, QPointF(qtendpos + 30, Colors.contentStartY + qtPosY)) qtActivate.setKeyValueAt(0.80, QPointF(qtendpos, Colors.contentStartY + qtPosY)) qtActivate.setKeyValueAt(0.90, QPointF(qtendpos + 5, Colors.contentStartY + qtPosY)) qtActivate.setEndValue(QPointF(qtendpos, Colors.contentStartY + qtPosY)) movie_activate.append(qtActivate) # Move ticker out on deactivate. qtDeactivate = DemoItemAnimation(self.ticker) qtDeactivate.setHideOnFinished(True) qtDeactivate.setDuration(400) qtDeactivate.setStartValue(QPointF(qtendpos, Colors.contentStartY + qtPosY)) qtDeactivate.setEndValue(QPointF(qtendpos, 800)) movie_deactivate.append(qtDeactivate) def createUpnDownButtons(self): xOffset = 15.0 yOffset = 450.0 self.upButton = TextButton("", TextButton.LEFT, MenuManager.UP, self.window.mainSceneRoot, TextButton.UP) self.upButton.prepare() self.upButton.setPos(xOffset, yOffset) self.upButton.setState(TextButton.DISABLED) self.downButton = TextButton("", TextButton.LEFT, MenuManager.DOWN, self.window.mainSceneRoot, TextButton.DOWN) self.downButton.prepare() self.downButton.setPos(xOffset + 10 + self.downButton.sceneBoundingRect().width(), yOffset) movieShake = self.score.insertMovie('upndown -shake') shakeAnim = DemoItemAnimation(self.upButton, DemoItemAnimation.ANIM_UNSPECIFIED) shakeAnim.setDuration(650) shakeAnim.setStartValue(self.upButton.pos()) shakeAnim.setKeyValueAt(0.60, self.upButton.pos()) shakeAnim.setKeyValueAt(0.70, self.upButton.pos() + QPointF(-2, 0)) shakeAnim.setKeyValueAt(0.80, self.upButton.pos() + QPointF(1, 0)) shakeAnim.setKeyValueAt(0.90, self.upButton.pos() + QPointF(-1, 0)) shakeAnim.setEndValue(self.upButton.pos()) movieShake.append(shakeAnim) shakeAnim = DemoItemAnimation(self.downButton, DemoItemAnimation.ANIM_UNSPECIFIED) shakeAnim.setDuration(650) shakeAnim.setStartValue(self.downButton.pos()) shakeAnim.setKeyValueAt(0.60, self.downButton.pos()) shakeAnim.setKeyValueAt(0.70, self.downButton.pos() + QPointF(-5, 0)) shakeAnim.setKeyValueAt(0.80, self.downButton.pos() + QPointF(-3, 0)) shakeAnim.setKeyValueAt(0.90, self.downButton.pos() + QPointF(-1, 0)) shakeAnim.setEndValue(self.downButton.pos()) movieShake.append(shakeAnim) def createBackButton(self): backIn = self.score.insertMovie('back -in') backOut = self.score.insertMovie('back -out') backShake = self.score.insertMovie('back -shake') self.createLowLeftButton("Back", MenuManager.ROOT, backIn, backOut, backShake, Colors.rootMenuName) PyQt5_gpl-5.10.1/examples/qtdemo/qtdemo.py0000755000076500000240000000613713245231431020463 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QEventLoop, QTime from PyQt5.QtWidgets import QApplication, QMessageBox from colors import Colors from mainwindow import MainWindow from menumanager import MenuManager def artisticSleep(sleepTime): time = QTime() time.restart() while time.elapsed() < sleepTime: QApplication.processEvents(QEventLoop.AllEvents, 50) if __name__ == '__main__': import sys app = QApplication(sys.argv) Colors.parseArgs(sys.argv) if sys.platform == 'win32': QMessageBox.information(None, "Documentation Warning", "If you are using the GPL version of PyQt from the binary " "installer then you will probably see warning messages about " "missing documentation. This is because the installer does " "not include a copy of the Qt documentation as it is so " "large.") mainWindow = MainWindow() MenuManager.instance().init(mainWindow) mainWindow.setFocus() if Colors.fullscreen: mainWindow.showFullScreen() else: mainWindow.enableMask(True) mainWindow.show() artisticSleep(500) mainWindow.start() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/qtdemo/scanitem.py0000644000076500000240000000612513245231431020767 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QRect from PyQt5.QtGui import QColor, QImage, QPainter, QPen from colors import Colors from demoitem import DemoItem class ScanItem(DemoItem): ITEM_WIDTH = 16 ITEM_HEIGHT = 16 def __init__(self, parent=None): super(ScanItem, self).__init__(parent) self.useSharedImage(__file__) def createImage(self, transform): scaledRect = transform.mapRect(QRect(0, 0, ScanItem.ITEM_WIDTH, ScanItem.ITEM_HEIGHT)) image = QImage(scaledRect.width(), scaledRect.height(), QImage.Format_ARGB32_Premultiplied) image.fill(QColor(0, 0, 0, 0).rgba()) painter = QPainter(image) painter.setRenderHint(QPainter.Antialiasing) if Colors.useEightBitPalette: painter.setPen(QPen(QColor(100, 100, 100), 2)) painter.setBrush(QColor(206, 246, 117)) painter.drawEllipse(1, 1, scaledRect.width() - 2, scaledRect.height() - 2) else: painter.setPen(QPen(QColor(0, 0, 0, 15), 1)) painter.setBrush(QColor(0, 0, 0, 15)) painter.drawEllipse(1, 1, scaledRect.width() - 2, scaledRect.height() - 2) return image PyQt5_gpl-5.10.1/examples/qtdemo/score.py0000644000076500000240000000777213245231431020310 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from colors import Colors class Score(object): LOCK_ITEMS, UNLOCK_ITEMS, SKIP_LOCK = range(3) FROM_CURRENT, FROM_START, NEW_ANIMATION_ONLY, ONLY_IF_VISIBLE = range(4) def __init__(self): self._index = {} self._playlist = [] def hasQueuedMovies(self): return len(self._playlist) > 0 def prepare(self, movie, runMode, lockMode): if lockMode == Score.LOCK_ITEMS: for item in movie: if runMode != Score.ONLY_IF_VISIBLE or item.isVisible(): item.setEnabled(False) item.prepare() elif lockMode == Score.UNLOCK_ITEMS: for item in movie: if runMode != Score.ONLY_IF_VISIBLE or item.isVisible(): item.setEnabled(True) item.prepare() else: for item in movie: if runMode != Score.ONLY_IF_VISIBLE or item.isVisible(): item.prepare() def _play(self, movie, runMode): if runMode == Score.NEW_ANIMATION_ONLY: for item in movie: if item.notOwnerOfItem(): item.play(True) elif runMode == Score.ONLY_IF_VISIBLE: for item in movie: if item.isVisible(): item.play(runMode == Score.FROM_START) else: for item in movie: item.play(runMode == Score.FROM_START) def queueMovie(self, indexName, runMode=FROM_START, lockMode=SKIP_LOCK): try: movie = self._index[indexName] except KeyError: Colors.debug("Queuing movie:", indexName, "(does not exist)") return self.prepare(movie, runMode, lockMode) self._playlist.append((movie, runMode)) Colors.debug("Queuing movie:", indexName) def playQue(self): for movie, runMode in self._playlist: self._play(movie, runMode) self._playlist = [] Colors.debug("********* Playing que *********") def insertMovie(self, indexName): movie = [] self._index[indexName] = movie return movie PyQt5_gpl-5.10.1/examples/qtdemo/textbutton.py0000644000076500000240000003155713245231431021413 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QPointF, QRect, QRectF, QSize, Qt from PyQt5.QtGui import (QColor, QImage, QLinearGradient, QPainter, QPainterPath, QPen) from colors import Colors from demoitem import DemoItem from demoitemanimation import DemoItemAnimation from demotextitem import DemoTextItem from scanitem import ScanItem class ButtonBackground(DemoItem): def __init__(self, type, highlighted, pressed, logicalSize, parent): super(ButtonBackground, self).__init__(parent) self.type = type self.highlighted = highlighted self.pressed = pressed self.logicalSize = logicalSize self.useSharedImage('%s%d%d%d' % (__file__, type, highlighted, pressed)) def createImage(self, transform): if self.type in (TextButton.SIDEBAR, TextButton.PANEL): return self.createRoundButtonBackground(transform) else: return self.createArrowBackground(transform) def createRoundButtonBackground(self, transform): scaledRect = transform.mapRect(QRect(0, 0, self.logicalSize.width(), self.logicalSize.height())) image = QImage(scaledRect.width(), scaledRect.height(), QImage.Format_ARGB32_Premultiplied) image.fill(QColor(0, 0, 0, 0).rgba()) painter = QPainter(image) painter.setRenderHint(QPainter.SmoothPixmapTransform) painter.setRenderHint(QPainter.Antialiasing) painter.setPen(Qt.NoPen) if Colors.useEightBitPalette: painter.setPen(QColor(120, 120, 120)) if self.pressed: painter.setBrush(QColor(60, 60, 60)) elif self.highlighted: painter.setBrush(QColor(100, 100, 100)) else: painter.setBrush(QColor(80, 80, 80)) else: outlinebrush = QLinearGradient(0, 0, 0, scaledRect.height()) brush = QLinearGradient(0, 0, 0, scaledRect.height()) brush.setSpread(QLinearGradient.PadSpread) highlight = QColor(255, 255, 255, 70) shadow = QColor(0, 0, 0, 70) sunken = QColor(220, 220, 220, 30) if self.type == TextButton.PANEL: normal1 = QColor(200, 170, 160, 50) normal2 = QColor(50, 10, 0, 50) else: normal1 = QColor(255, 255, 245, 60) normal2 = QColor(255, 255, 235, 10) if self.pressed: outlinebrush.setColorAt(0, shadow) outlinebrush.setColorAt(1, highlight) brush.setColorAt(0, sunken) painter.setPen(Qt.NoPen) else: outlinebrush.setColorAt(1, shadow) outlinebrush.setColorAt(0, highlight) brush.setColorAt(0, normal1) if not self.highlighted: brush.setColorAt(1, normal2) painter.setPen(QPen(outlinebrush, 1)) painter.setBrush(brush) if self.type == TextButton.PANEL: painter.drawRect(0, 0, scaledRect.width(), scaledRect.height()) else: painter.drawRoundedRect(0, 0, scaledRect.width(), scaledRect.height(), 10, 90, Qt.RelativeSize) return image def createArrowBackground(self, transform): scaledRect = transform.mapRect(QRect(0, 0, self.logicalSize.width(), self.logicalSize.height())) image = QImage(scaledRect.width(), scaledRect.height(), QImage.Format_ARGB32_Premultiplied) image.fill(QColor(0, 0, 0, 0).rgba()) painter = QPainter(image) painter.setRenderHint(QPainter.SmoothPixmapTransform) painter.setRenderHint(QPainter.Antialiasing) painter.setPen(Qt.NoPen) if Colors.useEightBitPalette: painter.setPen(QColor(120, 120, 120)) if self.pressed: painter.setBrush(QColor(60, 60, 60)) elif self.highlighted: painter.setBrush(QColor(100, 100, 100)) else: painter.setBrush(QColor(80, 80, 80)) else: outlinebrush = QLinearGradient(0, 0, 0, scaledRect.height()) brush = QLinearGradient(0, 0, 0, scaledRect.height()) brush.setSpread(QLinearGradient.PadSpread) highlight = QColor(255, 255, 255, 70) shadow = QColor(0, 0, 0, 70) sunken = QColor(220, 220, 220, 30) normal1 = QColor(200, 170, 160, 50) normal2 = QColor(50, 10, 0, 50) if self.pressed: outlinebrush.setColorAt(0, shadow) outlinebrush.setColorAt(1, highlight) brush.setColorAt(0, sunken) painter.setPen(Qt.NoPen) else: outlinebrush.setColorAt(1, shadow) outlinebrush.setColorAt(0, highlight) brush.setColorAt(0, normal1) if not self.highlighted: brush.setColorAt(1, normal2) painter.setPen(QPen(outlinebrush, 1)) painter.setBrush(brush); painter.drawRect(0, 0, scaledRect.width(), scaledRect.height()) xOff = scaledRect.width() / 2 yOff = scaledRect.height() / 2 sizex = 3.0 * transform.m11() sizey = 1.5 * transform.m22() if self.type == TextButton.UP: sizey *= -1 path = QPainterPath() path.moveTo(xOff, yOff + (5 * sizey)) path.lineTo(xOff - (4 * sizex), yOff - (3 * sizey)) path.lineTo(xOff + (4 * sizex), yOff - (3 * sizey)) path.lineTo(xOff, yOff + (5 * sizey)) painter.drawPath(path) return image class TextButton(DemoItem): BUTTON_WIDTH = 180 BUTTON_HEIGHT = 19 LEFT, RIGHT = range(2) SIDEBAR, PANEL, UP, DOWN = range(4) ON, OFF, HIGHLIGHT, DISABLED = range(4) def __init__(self, text, align=LEFT, userCode=0, parent=None, type=SIDEBAR): super(TextButton, self).__init__(parent) # Prevent a circular import. from menumanager import MenuManager self._menu_manager = MenuManager.instance() self.menuString = text self.buttonLabel = text self.alignment = align self.buttonType = type self.userCode = userCode self.scanAnim = None self.bgOn = None self.bgOff = None self.bgHighlight = None self.bgDisabled = None self.state = TextButton.OFF self.setAcceptHoverEvents(True) self.setCursor(Qt.PointingHandCursor) # Calculate the button size. if type in (TextButton.SIDEBAR, TextButton.PANEL): self.logicalSize = QSize(TextButton.BUTTON_WIDTH, TextButton.BUTTON_HEIGHT) else: self.logicalSize = QSize(int((TextButton.BUTTON_WIDTH / 2.0) - 5), int(TextButton.BUTTON_HEIGHT * 1.5)) self._prepared = False def setMenuString(self, menu): self.menuString = menu def prepare(self): if not self._prepared: self.setupHoverText() self.setupScanItem() self.setupButtonBg() self._prepared = True def boundingRect(self): return QRectF(0, 0, self.logicalSize.width(), self.logicalSize.height()) def setupHoverText(self): if not self.buttonLabel: return textItem = DemoTextItem(self.buttonLabel, Colors.buttonFont(), Colors.buttonText, -1, self) textItem.setZValue(self.zValue() + 2) textItem.setPos(16, 0) def setupScanItem(self): if Colors.useButtonBalls: scanItem = ScanItem(self) scanItem.setZValue(self.zValue() + 1) self.scanAnim = DemoItemAnimation(scanItem) x = 1.0 y = 1.5 stop = TextButton.BUTTON_WIDTH - scanItem.boundingRect().width() - x if self.alignment == TextButton.LEFT: self.scanAnim.setDuration(2500) self.scanAnim.setKeyValueAt(0.0, QPointF(x, y)) self.scanAnim.setKeyValueAt(0.5, QPointF(x, y)) self.scanAnim.setKeyValueAt(0.7, QPointF(stop, y)) self.scanAnim.setKeyValueAt(1.0, QPointF(x, y)) scanItem.setPos(QPointF(x, y)) else: self.scanAnim.setKeyValueAt(0.0, QPointF(stop, y)) self.scanAnim.setKeyValueAt(0.5, QPointF(x, y)) self.scanAnim.setKeyValueAt(1.0, QPointF(stop, y)) scanItem.setPos(QPointF(stop, y)) def setState(self, state): self.state = state self.bgOn.setRecursiveVisible(state == TextButton.ON) self.bgOff.setRecursiveVisible(state == TextButton.OFF) self.bgHighlight.setRecursiveVisible(state == TextButton.HIGHLIGHT) self.bgDisabled.setRecursiveVisible(state == TextButton.DISABLED) if state == TextButton.DISABLED: self.setCursor(Qt.ArrowCursor) else: self.setCursor(Qt.PointingHandCursor) def setupButtonBg(self): self.bgOn = ButtonBackground(self.buttonType, True, True, self.logicalSize, self) self.bgOff = ButtonBackground(self.buttonType, False, False, self.logicalSize, self) self.bgHighlight = ButtonBackground(self.buttonType, True, False, self.logicalSize, self) self.bgDisabled = ButtonBackground(self.buttonType, True, True, self.logicalSize, self) self.setState(TextButton.OFF) def hoverEnterEvent(self, event): if not self.isEnabled() or self.state == TextButton.DISABLED: return if self.state == TextButton.OFF: self.setState(TextButton.HIGHLIGHT) if Colors.noAnimations and Colors.useButtonBalls: # Wait a bit in the beginning to enhance the effect. We have # to do this here so that the adaption can be dynamic. self.scanAnim.setDuration(1000) self.scanAnim.setKeyValueAt(0.2, self.scanAnim.posAt(0)) if (self._menu_manager.window.fpsMedian > 10 or Colors.noAdapt or Colors.noTimerUpdate): if Colors.useButtonBalls: self.scanAnim.play(True, True) def hoverLeaveEvent(self, event): if self.state == TextButton.DISABLED: return self.setState(TextButton.OFF) if Colors.noAnimations and Colors.useButtonBalls: self.scanAnim.stop() def mousePressEvent(self, event): if self.state == TextButton.DISABLED: return if self.state == TextButton.HIGHLIGHT or self.state == TextButton.OFF: self.setState(TextButton.ON) def mouseReleaseEvent(self, event): if self.state == TextButton.ON: self.setState(TextButton.OFF) if self.isEnabled() and self.boundingRect().contains(event.pos()): self._menu_manager.itemSelected(self.userCode, self.menuString) def animationStarted(self, _): if self.state == TextButton.DISABLED: return self.setState(TextButton.OFF) PyQt5_gpl-5.10.1/examples/quick/0000755000076500000240000000000013245231431016431 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/animation/0000755000076500000240000000000013245231431020410 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/animation/animation.py0000644000076500000240000000475713245231431022756 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys import os.path from PyQt5.QtCore import QUrl from PyQt5.QtGui import QGuiApplication from PyQt5.QtQuick import QQuickView # Access the shared module. sys.path.insert(1, os.path.join( os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'shared')) import shared_rc import animation_rc app = QGuiApplication(sys.argv) view = QQuickView() view.engine().quit.connect(app.quit) view.setSource(QUrl('qrc:///animation/animation.qml')) view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/quick/animation/animation.qml0000644000076500000240000000645313245231431023112 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import "../shared" as Examples Item { height: 480 width: 320 Examples.LauncherList { id: ll anchors.fill: parent Component.onCompleted: { addExample("ColorAnimation", "Interpolates between colors", Qt.resolvedUrl("basics/color-animation.qml")); addExample("PropertyAnimation", "Interpolates between numbers", Qt.resolvedUrl("basics/property-animation.qml")); addExample("Behaviors", "Animates procedural movement", Qt.resolvedUrl("behaviors/behavior-example.qml")); addExample("Wiggly Text", "Text that wiggles as you drag it", Qt.resolvedUrl("behaviors/wigglytext.qml")); addExample("Tv Tennis", "Paddles that follow a ball", Qt.resolvedUrl("behaviors/tvtennis.qml")); addExample("Easing Curves", "Compare available easing curves", Qt.resolvedUrl("easing/easing.qml")); addExample("States", "Simple states", Qt.resolvedUrl("states/states.qml")); addExample("Transitions", "Simple states with animated transitions", Qt.resolvedUrl("states/transitions.qml")); addExample("PathAnimation", "Animate along a path", Qt.resolvedUrl("pathanimation/pathanimation.qml")); addExample("PathInterpolator", "Interpolates along a path", Qt.resolvedUrl("pathinterpolator/pathinterpolator.qml")); } } } PyQt5_gpl-5.10.1/examples/quick/animation/animation.qrc0000644000076500000240000000156713245231431023107 0ustar philstaff00000000000000 animation.qml basics/images/face-smile.png basics/images/moon.png basics/images/shadow.png basics/images/star.png basics/images/sun.png basics/color-animation.qml basics/property-animation.qml behaviors/behavior-example.qml behaviors/SideRect.qml behaviors/tvtennis.qml behaviors/wigglytext.qml easing/easing.qml pathanimation/pathanimation.qml pathinterpolator/pathinterpolator.qml states/qt-logo.png states/states.qml states/transitions.qml PyQt5_gpl-5.10.1/examples/quick/animation/animation_rc.py0000644000076500000240000120364213245231431023435 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created by: The Resource Compiler for PyQt5 (Qt v5.8.0) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x0d\x2b\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x73\x68\x61\x72\x65\x64\x22\x20\ \x61\x73\x20\x45\x78\x61\x6d\x70\x6c\x65\x73\x0a\x0a\x49\x74\x65\ \x6d\x20\x7b\x0a\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\ \x34\x38\x30\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x33\ \x32\x30\x0a\x20\x20\x20\x20\x45\x78\x61\x6d\x70\x6c\x65\x73\x2e\ \x4c\x61\x75\x6e\x63\x68\x65\x72\x4c\x69\x73\x74\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x6c\x6c\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\ \x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x2e\x6f\x6e\x43\ \x6f\x6d\x70\x6c\x65\x74\x65\x64\x3a\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\x64\x45\x78\x61\x6d\x70\ \x6c\x65\x28\x22\x43\x6f\x6c\x6f\x72\x41\x6e\x69\x6d\x61\x74\x69\ \x6f\x6e\x22\x2c\x20\x22\x49\x6e\x74\x65\x72\x70\x6f\x6c\x61\x74\ \x65\x73\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x63\x6f\x6c\x6f\x72\ \x73\x22\x2c\x20\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\ \x55\x72\x6c\x28\x22\x62\x61\x73\x69\x63\x73\x2f\x63\x6f\x6c\x6f\ \x72\x2d\x61\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x71\x6d\x6c\x22\ \x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x61\x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x50\x72\x6f\x70\ \x65\x72\x74\x79\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x22\x2c\x20\ \x22\x49\x6e\x74\x65\x72\x70\x6f\x6c\x61\x74\x65\x73\x20\x62\x65\ \x74\x77\x65\x65\x6e\x20\x6e\x75\x6d\x62\x65\x72\x73\x22\x2c\x20\ \x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\x6c\x28\x22\ \x62\x61\x73\x69\x63\x73\x2f\x70\x72\x6f\x70\x65\x72\x74\x79\x2d\ \x61\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x71\x6d\x6c\x22\x29\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\ \x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x42\x65\x68\x61\x76\x69\ \x6f\x72\x73\x22\x2c\x20\x22\x41\x6e\x69\x6d\x61\x74\x65\x73\x20\ \x70\x72\x6f\x63\x65\x64\x75\x72\x61\x6c\x20\x6d\x6f\x76\x65\x6d\ \x65\x6e\x74\x22\x2c\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\ \x64\x55\x72\x6c\x28\x22\x62\x65\x68\x61\x76\x69\x6f\x72\x73\x2f\ \x62\x65\x68\x61\x76\x69\x6f\x72\x2d\x65\x78\x61\x6d\x70\x6c\x65\ \x2e\x71\x6d\x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x61\x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\ \x22\x57\x69\x67\x67\x6c\x79\x20\x54\x65\x78\x74\x22\x2c\x20\x22\ \x54\x65\x78\x74\x20\x74\x68\x61\x74\x20\x77\x69\x67\x67\x6c\x65\ \x73\x20\x61\x73\x20\x79\x6f\x75\x20\x64\x72\x61\x67\x20\x69\x74\ \x22\x2c\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\ \x6c\x28\x22\x62\x65\x68\x61\x76\x69\x6f\x72\x73\x2f\x77\x69\x67\ \x67\x6c\x79\x74\x65\x78\x74\x2e\x71\x6d\x6c\x22\x29\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\x64\x45\ \x78\x61\x6d\x70\x6c\x65\x28\x22\x54\x76\x20\x54\x65\x6e\x6e\x69\ \x73\x22\x2c\x20\x22\x50\x61\x64\x64\x6c\x65\x73\x20\x74\x68\x61\ \x74\x20\x66\x6f\x6c\x6c\x6f\x77\x20\x61\x20\x62\x61\x6c\x6c\x22\ \x2c\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\x6c\ \x28\x22\x62\x65\x68\x61\x76\x69\x6f\x72\x73\x2f\x74\x76\x74\x65\ \x6e\x6e\x69\x73\x2e\x71\x6d\x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\x64\x45\x78\x61\x6d\ \x70\x6c\x65\x28\x22\x45\x61\x73\x69\x6e\x67\x20\x43\x75\x72\x76\ \x65\x73\x22\x2c\x20\x22\x43\x6f\x6d\x70\x61\x72\x65\x20\x61\x76\ \x61\x69\x6c\x61\x62\x6c\x65\x20\x65\x61\x73\x69\x6e\x67\x20\x63\ \x75\x72\x76\x65\x73\x22\x2c\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\ \x76\x65\x64\x55\x72\x6c\x28\x22\x65\x61\x73\x69\x6e\x67\x2f\x65\ \x61\x73\x69\x6e\x67\x2e\x71\x6d\x6c\x22\x29\x29\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\x64\x45\x78\x61\ \x6d\x70\x6c\x65\x28\x22\x53\x74\x61\x74\x65\x73\x22\x2c\x20\x22\ \x53\x69\x6d\x70\x6c\x65\x20\x73\x74\x61\x74\x65\x73\x22\x2c\x20\ \x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\x6c\x28\x22\ \x73\x74\x61\x74\x65\x73\x2f\x73\x74\x61\x74\x65\x73\x2e\x71\x6d\ \x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x54\x72\ \x61\x6e\x73\x69\x74\x69\x6f\x6e\x73\x22\x2c\x20\x22\x53\x69\x6d\ \x70\x6c\x65\x20\x73\x74\x61\x74\x65\x73\x20\x77\x69\x74\x68\x20\ \x61\x6e\x69\x6d\x61\x74\x65\x64\x20\x74\x72\x61\x6e\x73\x69\x74\ \x69\x6f\x6e\x73\x22\x2c\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\ \x65\x64\x55\x72\x6c\x28\x22\x73\x74\x61\x74\x65\x73\x2f\x74\x72\ \x61\x6e\x73\x69\x74\x69\x6f\x6e\x73\x2e\x71\x6d\x6c\x22\x29\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\ \x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x50\x61\x74\x68\x41\x6e\ \x69\x6d\x61\x74\x69\x6f\x6e\x22\x2c\x20\x22\x41\x6e\x69\x6d\x61\ \x74\x65\x20\x61\x6c\x6f\x6e\x67\x20\x61\x20\x70\x61\x74\x68\x22\ \x2c\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\x6c\ \x28\x22\x70\x61\x74\x68\x61\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2f\ \x70\x61\x74\x68\x61\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x71\x6d\ \x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x50\x61\ \x74\x68\x49\x6e\x74\x65\x72\x70\x6f\x6c\x61\x74\x6f\x72\x22\x2c\ \x20\x22\x49\x6e\x74\x65\x72\x70\x6f\x6c\x61\x74\x65\x73\x20\x61\ \x6c\x6f\x6e\x67\x20\x61\x20\x70\x61\x74\x68\x22\x2c\x20\x51\x74\ \x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\x6c\x28\x22\x70\x61\ \x74\x68\x69\x6e\x74\x65\x72\x70\x6f\x6c\x61\x74\x6f\x72\x2f\x70\ \x61\x74\x68\x69\x6e\x74\x65\x72\x70\x6f\x6c\x61\x74\x6f\x72\x2e\ \x71\x6d\x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x0d\x4f\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\ \x3a\x20\x77\x69\x6e\x64\x6f\x77\x0a\x20\x20\x20\x20\x77\x69\x64\ \x74\x68\x3a\x20\x33\x32\x30\x0a\x20\x20\x20\x20\x68\x65\x69\x67\ \x68\x74\x3a\x20\x34\x38\x30\x0a\x0a\x20\x20\x20\x20\x43\x61\x6e\ \x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\ \x3a\x20\x63\x61\x6e\x76\x61\x73\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\ \x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x74\x69\x61\x6c\x69\x61\x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\ \x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x50\x61\x69\x6e\ \x74\x3a\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x76\x61\x72\x20\x63\x6f\x6e\x74\x65\x78\x74\x20\x3d\x20\x63\ \x61\x6e\x76\x61\x73\x2e\x67\x65\x74\x43\x6f\x6e\x74\x65\x78\x74\ \x28\x22\x32\x64\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x6f\x6e\x74\x65\x78\x74\x2e\x63\x6c\x65\x61\x72\ \x52\x65\x63\x74\x28\x30\x2c\x20\x30\x2c\x20\x77\x69\x64\x74\x68\ \x2c\x20\x68\x65\x69\x67\x68\x74\x29\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x65\x78\x74\x2e\x73\x74\ \x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x20\x3d\x20\x22\x62\x6c\x61\ \x63\x6b\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x6f\x6e\x74\x65\x78\x74\x2e\x70\x61\x74\x68\x20\x3d\x20\x70\ \x61\x74\x68\x41\x6e\x69\x6d\x2e\x70\x61\x74\x68\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x65\x78\x74\ \x2e\x73\x74\x72\x6f\x6b\x65\x28\x29\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x53\ \x65\x71\x75\x65\x6e\x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\x69\ \x6f\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x75\x6e\ \x6e\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x6c\x6f\x6f\x70\x73\x3a\x20\x2d\x31\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x50\x61\x75\x73\x65\x41\x6e\x69\x6d\x61\ \x74\x69\x6f\x6e\x20\x7b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\ \x20\x31\x30\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x50\x61\x74\x68\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\ \x70\x61\x74\x68\x41\x6e\x69\x6d\x0a\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\ \x32\x30\x30\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x65\x61\x73\x69\x6e\x67\x2e\x74\x79\x70\x65\x3a\x20\x45\x61\ \x73\x69\x6e\x67\x2e\x49\x6e\x51\x75\x61\x64\x0a\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x61\x72\x67\x65\x74\x3a\ \x20\x62\x6f\x78\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x6f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\x6e\x3a\x20\x50\x61\ \x74\x68\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x52\x69\x67\x68\ \x74\x46\x69\x72\x73\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x50\x6f\x69\x6e\x74\x3a\x20\ \x51\x74\x2e\x70\x6f\x69\x6e\x74\x28\x62\x6f\x78\x2e\x77\x69\x64\ \x74\x68\x2f\x32\x2c\x20\x62\x6f\x78\x2e\x68\x65\x69\x67\x68\x74\ \x2f\x32\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x61\x74\x68\x3a\x20\x50\x61\x74\x68\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x61\ \x72\x74\x58\x3a\x20\x35\x30\x3b\x20\x73\x74\x61\x72\x74\x59\x3a\ \x20\x35\x30\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x50\x61\x74\x68\x43\x75\x62\x69\x63\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x78\x3a\x20\x77\x69\x6e\x64\x6f\x77\x2e\x77\ \x69\x64\x74\x68\x20\x2d\x20\x35\x30\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x79\x3a\ \x20\x77\x69\x6e\x64\x6f\x77\x2e\x68\x65\x69\x67\x68\x74\x20\x2d\ \x20\x35\x30\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x72\x6f\x6c\ \x31\x58\x3a\x20\x78\x3b\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x31\x59\ \x3a\x20\x35\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x72\x6f\x6c\ \x32\x58\x3a\x20\x35\x30\x3b\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x32\ \x59\x3a\x20\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x43\x68\x61\x6e\x67\x65\ \x64\x3a\x20\x63\x61\x6e\x76\x61\x73\x2e\x72\x65\x71\x75\x65\x73\ \x74\x50\x61\x69\x6e\x74\x28\x29\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x21\x20\x5b\x30\x5d\ \x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x52\x65\x63\x74\ \x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x69\x64\x3a\x20\x62\x6f\x78\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x78\x3a\x20\x32\x35\x3b\x20\x79\x3a\x20\x32\x35\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x35\x30\x3b\ \x20\x68\x65\x69\x67\x68\x74\x3a\x20\x35\x30\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x77\x69\x64\x74\x68\ \x3a\x20\x31\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x74\x69\ \x61\x6c\x69\x61\x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\ \x72\x73\x2e\x63\x65\x6e\x74\x65\x72\x49\x6e\x3a\x20\x70\x61\x72\ \x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x74\x65\x78\x74\x3a\x20\x22\x42\x6f\x78\x22\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x0f\xfa\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\ \x3a\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x0a\x0a\x20\x20\x20\ \x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\ \x20\x74\x65\x78\x74\x3a\x20\x22\x44\x72\x61\x67\x20\x6d\x65\x21\ \x22\x0a\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x62\ \x6f\x6f\x6c\x20\x61\x6e\x69\x6d\x61\x74\x65\x64\x3a\x20\x74\x72\ \x75\x65\x0a\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x33\ \x32\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\x38\x30\x3b\ \x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x34\x37\x34\x37\x34\x37\ \x22\x3b\x20\x66\x6f\x63\x75\x73\x3a\x20\x74\x72\x75\x65\x0a\x0a\ \x20\x20\x20\x20\x4b\x65\x79\x73\x2e\x6f\x6e\x50\x72\x65\x73\x73\ \x65\x64\x3a\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\ \x20\x28\x65\x76\x65\x6e\x74\x2e\x6b\x65\x79\x20\x3d\x3d\x20\x51\ \x74\x2e\x4b\x65\x79\x5f\x44\x65\x6c\x65\x74\x65\x20\x7c\x7c\x20\ \x65\x76\x65\x6e\x74\x2e\x6b\x65\x79\x20\x3d\x3d\x20\x51\x74\x2e\ \x4b\x65\x79\x5f\x42\x61\x63\x6b\x73\x70\x61\x63\x65\x29\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x61\ \x69\x6e\x65\x72\x2e\x72\x65\x6d\x6f\x76\x65\x28\x29\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x65\x6c\x73\x65\x20\x69\x66\x20\x28\x65\ \x76\x65\x6e\x74\x2e\x74\x65\x78\x74\x20\x21\x3d\x20\x22\x22\x29\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\ \x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x61\x70\x70\x65\x6e\x64\x28\ \x65\x76\x65\x6e\x74\x2e\x74\x65\x78\x74\x29\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\ \x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x61\x70\x70\x65\x6e\x64\ \x28\x74\x65\x78\x74\x29\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x61\x6e\x69\x6d\x61\ \x74\x65\x64\x20\x3d\x20\x66\x61\x6c\x73\x65\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x76\x61\x72\x20\x6c\x61\x73\x74\x4c\x65\x74\x74\ \x65\x72\x20\x3d\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x63\ \x68\x69\x6c\x64\x72\x65\x6e\x5b\x63\x6f\x6e\x74\x61\x69\x6e\x65\ \x72\x2e\x63\x68\x69\x6c\x64\x72\x65\x6e\x2e\x6c\x65\x6e\x67\x74\ \x68\x20\x2d\x20\x31\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x76\ \x61\x72\x20\x6e\x65\x77\x4c\x65\x74\x74\x65\x72\x20\x3d\x20\x6c\ \x65\x74\x74\x65\x72\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x2e\x63\ \x72\x65\x61\x74\x65\x4f\x62\x6a\x65\x63\x74\x28\x63\x6f\x6e\x74\ \x61\x69\x6e\x65\x72\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6e\ \x65\x77\x4c\x65\x74\x74\x65\x72\x2e\x74\x65\x78\x74\x20\x3d\x20\ \x74\x65\x78\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6e\x65\x77\ \x4c\x65\x74\x74\x65\x72\x2e\x66\x6f\x6c\x6c\x6f\x77\x20\x3d\x20\ \x6c\x61\x73\x74\x4c\x65\x74\x74\x65\x72\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x61\x6e\x69\ \x6d\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x20\x20\x20\ \x20\x7d\x0a\x0a\x20\x20\x20\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\ \x20\x72\x65\x6d\x6f\x76\x65\x28\x29\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x69\x66\x20\x28\x63\x6f\x6e\x74\x61\x69\x6e\x65\ \x72\x2e\x63\x68\x69\x6c\x64\x72\x65\x6e\x2e\x6c\x65\x6e\x67\x74\ \x68\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\ \x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x63\x68\x69\x6c\x64\x72\x65\ \x6e\x5b\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x63\x68\x69\x6c\ \x64\x72\x65\x6e\x2e\x6c\x65\x6e\x67\x74\x68\x20\x2d\x20\x31\x5d\ \x2e\x64\x65\x73\x74\x72\x6f\x79\x28\x29\x0a\x20\x20\x20\x20\x7d\ \x0a\x0a\x20\x20\x20\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x64\ \x6f\x4c\x61\x79\x6f\x75\x74\x28\x29\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x76\x61\x72\x20\x66\x6f\x6c\x6c\x6f\x77\x20\x3d\ \x20\x6e\x75\x6c\x6c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\ \x72\x20\x28\x76\x61\x72\x20\x69\x20\x3d\x20\x30\x3b\x20\x69\x20\ \x3c\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x74\x65\x78\x74\ \x2e\x6c\x65\x6e\x67\x74\x68\x3b\x20\x2b\x2b\x69\x29\x20\x7b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\ \x6e\x65\x77\x4c\x65\x74\x74\x65\x72\x20\x3d\x20\x6c\x65\x74\x74\ \x65\x72\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x2e\x63\x72\x65\x61\ \x74\x65\x4f\x62\x6a\x65\x63\x74\x28\x63\x6f\x6e\x74\x61\x69\x6e\ \x65\x72\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x6e\x65\x77\x4c\x65\x74\x74\x65\x72\x2e\x74\x65\x78\x74\x20\x3d\ \x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x74\x65\x78\x74\x5b\ \x69\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6e\ \x65\x77\x4c\x65\x74\x74\x65\x72\x2e\x66\x6f\x6c\x6c\x6f\x77\x20\ \x3d\x20\x66\x6f\x6c\x6c\x6f\x77\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x66\x6f\x6c\x6c\x6f\x77\x20\x3d\x20\x6e\x65\ \x77\x4c\x65\x74\x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x43\x6f\x6d\ \x70\x6f\x6e\x65\x6e\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x69\x64\x3a\x20\x6c\x65\x74\x74\x65\x72\x43\x6f\x6d\x70\x6f\ \x6e\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x65\x78\ \x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x69\x64\x3a\x20\x6c\x65\x74\x74\x65\x72\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\ \x76\x61\x72\x69\x61\x6e\x74\x20\x66\x6f\x6c\x6c\x6f\x77\x0a\x0a\ \x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x78\x3a\x20\x66\x6f\x6c\x6c\x6f\x77\x20\x3f\x20\ \x66\x6f\x6c\x6c\x6f\x77\x2e\x78\x20\x2b\x20\x66\x6f\x6c\x6c\x6f\ \x77\x2e\x77\x69\x64\x74\x68\x20\x3a\x20\x63\x6f\x6e\x74\x61\x69\ \x6e\x65\x72\x2e\x77\x69\x64\x74\x68\x20\x2f\x20\x36\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x79\x3a\x20\x66\x6f\x6c\ \x6c\x6f\x77\x20\x3f\x20\x66\x6f\x6c\x6c\x6f\x77\x2e\x79\x20\x3a\ \x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x68\x65\x69\x67\x68\ \x74\x20\x2f\x20\x32\x0a\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x6e\x74\x2e\ \x70\x69\x78\x65\x6c\x53\x69\x7a\x65\x3a\x20\x34\x30\x3b\x20\x66\ \x6f\x6e\x74\x2e\x62\x6f\x6c\x64\x3a\x20\x74\x72\x75\x65\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\ \x3a\x20\x22\x23\x39\x39\x39\x39\x39\x39\x22\x3b\x20\x73\x74\x79\ \x6c\x65\x43\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x32\x32\x32\x32\x32\ \x32\x22\x3b\x20\x73\x74\x79\x6c\x65\x3a\x20\x54\x65\x78\x74\x2e\ \x52\x61\x69\x73\x65\x64\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\x20\x7b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x64\x72\x61\x67\x2e\x74\x61\x72\x67\x65\x74\ \x3a\x20\x6c\x65\x74\x74\x65\x72\x3b\x20\x64\x72\x61\x67\x2e\x61\ \x78\x69\x73\x3a\x20\x44\x72\x61\x67\x2e\x58\x41\x6e\x64\x59\x41\ \x78\x69\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x6f\x6e\x50\x72\x65\x73\x73\x65\x64\x3a\x20\x6c\ \x65\x74\x74\x65\x72\x2e\x63\x6f\x6c\x6f\x72\x20\x3d\x20\x22\x23\ \x64\x64\x64\x64\x64\x64\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x52\x65\x6c\x65\x61\x73\ \x65\x64\x3a\x20\x6c\x65\x74\x74\x65\x72\x2e\x63\x6f\x6c\x6f\x72\ \x20\x3d\x20\x22\x23\x39\x39\x39\x39\x39\x39\x22\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x2f\x2f\x21\x20\ \x5b\x31\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x78\x20\x7b\x20\ \x65\x6e\x61\x62\x6c\x65\x64\x3a\x20\x63\x6f\x6e\x74\x61\x69\x6e\ \x65\x72\x2e\x61\x6e\x69\x6d\x61\x74\x65\x64\x3b\x20\x53\x70\x72\ \x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x73\ \x70\x72\x69\x6e\x67\x3a\x20\x33\x3b\x20\x64\x61\x6d\x70\x69\x6e\ \x67\x3a\x20\x30\x2e\x33\x3b\x20\x6d\x61\x73\x73\x3a\x20\x31\x2e\ \x30\x20\x7d\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x79\x20\ \x7b\x20\x65\x6e\x61\x62\x6c\x65\x64\x3a\x20\x63\x6f\x6e\x74\x61\ \x69\x6e\x65\x72\x2e\x61\x6e\x69\x6d\x61\x74\x65\x64\x3b\x20\x53\ \x70\x72\x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\ \x20\x73\x70\x72\x69\x6e\x67\x3a\x20\x33\x3b\x20\x64\x61\x6d\x70\ \x69\x6e\x67\x3a\x20\x30\x2e\x33\x3b\x20\x6d\x61\x73\x73\x3a\x20\ \x31\x2e\x30\x20\x7d\x20\x7d\x0a\x2f\x2f\x21\x20\x5b\x31\x5d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\ \x0a\x20\x20\x20\x20\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x2e\x6f\ \x6e\x43\x6f\x6d\x70\x6c\x65\x74\x65\x64\x3a\x20\x64\x6f\x4c\x61\ \x79\x6f\x75\x74\x28\x29\x0a\x7d\x0a\ \x00\x00\x09\x61\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\ \x3a\x20\x6d\x79\x52\x65\x63\x74\x0a\x0a\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x74\x65\ \x78\x74\x0a\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x37\ \x35\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x35\x30\x0a\x20\x20\ \x20\x20\x72\x61\x64\x69\x75\x73\x3a\x20\x36\x0a\x20\x20\x20\x20\ \x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x36\x34\x36\x34\x36\x34\x22\ \x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x77\x69\x64\x74\ \x68\x3a\x20\x34\x3b\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\ \x6f\x72\x3a\x20\x22\x77\x68\x69\x74\x65\x22\x0a\x0a\x20\x20\x20\ \x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\ \x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x68\x6f\x76\x65\x72\x45\x6e\x61\x62\x6c\x65\x64\x3a\x20\ \x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x45\ \x6e\x74\x65\x72\x65\x64\x3a\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x66\x6f\x63\x75\x73\x52\x65\x63\x74\x2e\ \x78\x20\x3d\x20\x6d\x79\x52\x65\x63\x74\x2e\x78\x3b\x20\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x63\x75\x73\ \x52\x65\x63\x74\x2e\x79\x20\x3d\x20\x6d\x79\x52\x65\x63\x74\x2e\ \x79\x3b\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x66\x6f\x63\x75\x73\x52\x65\x63\x74\x2e\x74\x65\x78\x74\x20\x3d\ \x20\x6d\x79\x52\x65\x63\x74\x2e\x74\x65\x78\x74\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \ \x00\x00\x11\x18\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\ \x3a\x20\x70\x61\x67\x65\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\ \x3a\x20\x33\x32\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\ \x38\x30\x3b\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\ \x42\x6c\x61\x63\x6b\x22\x0a\x0a\x20\x20\x20\x20\x2f\x2f\x20\x4d\ \x61\x6b\x65\x20\x61\x20\x62\x61\x6c\x6c\x20\x74\x6f\x20\x62\x6f\ \x75\x6e\x63\x65\x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\ \x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\ \x20\x62\x61\x6c\x6c\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\ \x2f\x20\x41\x64\x64\x20\x61\x20\x70\x72\x6f\x70\x65\x72\x74\x79\ \x20\x66\x6f\x72\x20\x74\x68\x65\x20\x74\x61\x72\x67\x65\x74\x20\ \x79\x20\x63\x6f\x6f\x72\x64\x69\x6e\x61\x74\x65\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x76\x61\ \x72\x69\x61\x6e\x74\x20\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x20\ \x3a\x20\x22\x72\x69\x67\x68\x74\x22\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x78\x3a\x20\x32\x30\x3b\x20\x77\x69\x64\x74\x68\x3a\ \x20\x32\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x32\x30\x3b\ \x20\x7a\x3a\x20\x31\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\ \x6c\x6f\x72\x3a\x20\x22\x4c\x69\x6d\x65\x22\x0a\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x2f\x2f\x20\x4d\x6f\x76\x65\x20\x74\x68\x65\ \x20\x62\x61\x6c\x6c\x20\x74\x6f\x20\x74\x68\x65\x20\x72\x69\x67\ \x68\x74\x20\x61\x6e\x64\x20\x62\x61\x63\x6b\x20\x74\x6f\x20\x74\ \x68\x65\x20\x6c\x65\x66\x74\x20\x72\x65\x70\x65\x61\x74\x65\x64\ \x6c\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\x65\x71\x75\x65\ \x6e\x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x6f\ \x6e\x20\x78\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x6c\x6f\x6f\x70\x73\x3a\x20\x41\x6e\x69\x6d\x61\x74\x69\ \x6f\x6e\x2e\x49\x6e\x66\x69\x6e\x69\x74\x65\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\x72\x41\x6e\ \x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x74\x6f\x3a\x20\x70\x61\ \x67\x65\x2e\x77\x69\x64\x74\x68\x20\x2d\x20\x34\x30\x3b\x20\x64\ \x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x32\x30\x30\x30\x20\x7d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x50\x72\x6f\x70\ \x65\x72\x74\x79\x41\x63\x74\x69\x6f\x6e\x20\x7b\x20\x74\x61\x72\ \x67\x65\x74\x3a\x20\x62\x61\x6c\x6c\x3b\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x3a\x20\x22\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x22\ \x3b\x20\x76\x61\x6c\x75\x65\x3a\x20\x22\x6c\x65\x66\x74\x22\x20\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\ \x6d\x62\x65\x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\ \x74\x6f\x3a\x20\x32\x30\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\ \x3a\x20\x32\x30\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x50\x72\x6f\x70\x65\x72\x74\x79\x41\x63\x74\ \x69\x6f\x6e\x20\x7b\x20\x74\x61\x72\x67\x65\x74\x3a\x20\x62\x61\ \x6c\x6c\x3b\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x3a\x20\x22\x64\ \x69\x72\x65\x63\x74\x69\x6f\x6e\x22\x3b\x20\x76\x61\x6c\x75\x65\ \x3a\x20\x22\x72\x69\x67\x68\x74\x22\x20\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\ \x2f\x20\x4d\x61\x6b\x65\x20\x79\x20\x6d\x6f\x76\x65\x20\x77\x69\ \x74\x68\x20\x61\x20\x76\x65\x6c\x6f\x63\x69\x74\x79\x20\x6f\x66\ \x20\x32\x30\x30\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x42\x65\ \x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x79\x20\x7b\x20\x53\x70\ \x72\x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x7b\x20\x76\ \x65\x6c\x6f\x63\x69\x74\x79\x3a\x20\x32\x30\x30\x3b\x20\x7d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x2e\x6f\x6e\x43\ \x6f\x6d\x70\x6c\x65\x74\x65\x64\x3a\x20\x79\x20\x3d\x20\x70\x61\ \x67\x65\x2e\x68\x65\x69\x67\x68\x74\x2d\x31\x30\x3b\x20\x2f\x2f\ \x20\x73\x74\x61\x72\x74\x20\x74\x68\x65\x20\x62\x61\x6c\x6c\x20\ \x6d\x6f\x74\x69\x6f\x6e\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x2f\x2f\x20\x44\x65\x74\x65\x63\x74\x20\x74\x68\x65\x20\x62\x61\ \x6c\x6c\x20\x68\x69\x74\x74\x69\x6e\x67\x20\x74\x68\x65\x20\x74\ \x6f\x70\x20\x6f\x72\x20\x62\x6f\x74\x74\x6f\x6d\x20\x6f\x66\x20\ \x74\x68\x65\x20\x76\x69\x65\x77\x20\x61\x6e\x64\x20\x62\x6f\x75\ \x6e\x63\x65\x20\x69\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\ \x6e\x59\x43\x68\x61\x6e\x67\x65\x64\x3a\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x79\x20\x3c\ \x3d\x20\x30\x29\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x79\x20\x3d\x20\x70\x61\x67\x65\x2e\ \x68\x65\x69\x67\x68\x74\x20\x2d\x20\x32\x30\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x20\x65\x6c\x73\x65\x20\ \x69\x66\x20\x28\x79\x20\x3e\x3d\x20\x70\x61\x67\x65\x2e\x68\x65\ \x69\x67\x68\x74\x20\x2d\x20\x32\x30\x29\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x79\x20\x3d\ \x20\x30\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\ \x7d\x0a\x0a\x20\x20\x20\x20\x2f\x2f\x20\x50\x6c\x61\x63\x65\x20\ \x62\x61\x74\x73\x20\x74\x6f\x20\x74\x68\x65\x20\x6c\x65\x66\x74\ \x20\x61\x6e\x64\x20\x72\x69\x67\x68\x74\x20\x6f\x66\x20\x74\x68\ \x65\x20\x76\x69\x65\x77\x2c\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x74\x68\x65\x20\x79\x0a\x20\x20\x20\x20\x2f\x2f\x20\x63\ \x6f\x6f\x72\x64\x69\x6e\x61\x74\x65\x73\x20\x6f\x66\x20\x74\x68\ \x65\x20\x62\x61\x6c\x6c\x2e\x0a\x20\x20\x20\x20\x52\x65\x63\x74\ \x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x69\x64\x3a\x20\x6c\x65\x66\x74\x42\x61\x74\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x4c\x69\x6d\x65\ \x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x78\x3a\x20\x32\x3b\x20\ \x77\x69\x64\x74\x68\x3a\x20\x32\x30\x3b\x20\x68\x65\x69\x67\x68\ \x74\x3a\x20\x39\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\ \x20\x21\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x79\x3a\ \x20\x62\x61\x6c\x6c\x2e\x64\x69\x72\x65\x63\x74\x69\x6f\x6e\x20\ \x3d\x3d\x20\x27\x6c\x65\x66\x74\x27\x20\x3f\x20\x62\x61\x6c\x6c\ \x2e\x79\x20\x2d\x20\x34\x35\x20\x3a\x20\x70\x61\x67\x65\x2e\x68\ \x65\x69\x67\x68\x74\x2f\x32\x20\x2d\x34\x35\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\ \x20\x79\x20\x7b\x20\x53\x70\x72\x69\x6e\x67\x41\x6e\x69\x6d\x61\ \x74\x69\x6f\x6e\x7b\x20\x76\x65\x6c\x6f\x63\x69\x74\x79\x3a\x20\ \x33\x30\x30\x20\x7d\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x2f\x2f\x20\x21\x5b\x30\x5d\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\ \x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x72\x69\x67\x68\x74\x42\ \x61\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\ \x3a\x20\x22\x4c\x69\x6d\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x78\x3a\x20\x70\x61\x67\x65\x2e\x77\x69\x64\x74\x68\x20\x2d\ \x20\x32\x32\x3b\x20\x77\x69\x64\x74\x68\x3a\x20\x32\x30\x3b\x20\ \x68\x65\x69\x67\x68\x74\x3a\x20\x39\x30\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x79\x3a\x20\x62\x61\x6c\x6c\x2e\x64\x69\x72\x65\x63\ \x74\x69\x6f\x6e\x20\x3d\x3d\x20\x27\x72\x69\x67\x68\x74\x27\x20\ \x3f\x20\x62\x61\x6c\x6c\x2e\x79\x20\x2d\x20\x34\x35\x20\x3a\x20\ \x70\x61\x67\x65\x2e\x68\x65\x69\x67\x68\x74\x2f\x32\x20\x2d\x34\ \x35\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x42\x65\x68\x61\x76\ \x69\x6f\x72\x20\x6f\x6e\x20\x79\x20\x7b\x20\x53\x70\x72\x69\x6e\ \x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x7b\x20\x76\x65\x6c\x6f\ \x63\x69\x74\x79\x3a\x20\x33\x30\x30\x20\x7d\x20\x7d\x0a\x20\x20\ \x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x2f\x2f\x20\x54\x68\x65\x20\ \x72\x65\x73\x74\x2c\x20\x74\x6f\x20\x6d\x61\x6b\x65\x20\x69\x74\ \x20\x6c\x6f\x6f\x6b\x20\x72\x65\x61\x6c\x69\x73\x74\x69\x63\x2c\ \x20\x69\x66\x20\x6e\x65\x69\x74\x68\x65\x72\x20\x65\x76\x65\x72\ \x20\x73\x63\x6f\x72\x65\x73\x2e\x2e\x2e\x0a\x20\x20\x20\x20\x52\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x20\x63\x6f\x6c\x6f\x72\ \x3a\x20\x22\x4c\x69\x6d\x65\x22\x3b\x20\x78\x3a\x20\x70\x61\x67\ \x65\x2e\x77\x69\x64\x74\x68\x2f\x32\x2d\x38\x30\x3b\x20\x79\x3a\ \x20\x30\x3b\x20\x77\x69\x64\x74\x68\x3a\x20\x34\x30\x3b\x20\x68\ \x65\x69\x67\x68\x74\x3a\x20\x36\x30\x20\x7d\x0a\x20\x20\x20\x20\ \x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x20\x63\x6f\x6c\x6f\ \x72\x3a\x20\x22\x42\x6c\x61\x63\x6b\x22\x3b\x20\x78\x3a\x20\x70\ \x61\x67\x65\x2e\x77\x69\x64\x74\x68\x2f\x32\x2d\x37\x30\x3b\x20\ \x79\x3a\x20\x31\x30\x3b\x20\x77\x69\x64\x74\x68\x3a\x20\x32\x30\ \x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\x30\x20\x7d\x0a\x20\ \x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x20\x63\ \x6f\x6c\x6f\x72\x3a\x20\x22\x4c\x69\x6d\x65\x22\x3b\x20\x78\x3a\ \x20\x70\x61\x67\x65\x2e\x77\x69\x64\x74\x68\x2f\x32\x2b\x34\x30\ \x3b\x20\x79\x3a\x20\x30\x3b\x20\x77\x69\x64\x74\x68\x3a\x20\x34\ \x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x36\x30\x20\x7d\x0a\ \x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x20\ \x63\x6f\x6c\x6f\x72\x3a\x20\x22\x42\x6c\x61\x63\x6b\x22\x3b\x20\ \x78\x3a\x20\x70\x61\x67\x65\x2e\x77\x69\x64\x74\x68\x2f\x32\x2b\ \x35\x30\x3b\x20\x79\x3a\x20\x31\x30\x3b\x20\x77\x69\x64\x74\x68\ \x3a\x20\x32\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\x30\ \x20\x7d\x0a\x20\x20\x20\x20\x52\x65\x70\x65\x61\x74\x65\x72\x20\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x6f\x64\x65\x6c\x3a\ \x20\x70\x61\x67\x65\x2e\x68\x65\x69\x67\x68\x74\x20\x2f\x20\x32\ \x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\ \x67\x6c\x65\x20\x7b\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x4c\x69\ \x6d\x65\x22\x3b\x20\x78\x3a\x20\x70\x61\x67\x65\x2e\x77\x69\x64\ \x74\x68\x2f\x32\x2d\x35\x3b\x20\x79\x3a\x20\x69\x6e\x64\x65\x78\ \x20\x2a\x20\x32\x30\x3b\x20\x77\x69\x64\x74\x68\x3a\x20\x31\x30\ \x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x31\x30\x20\x7d\x0a\x20\ \x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x11\x5c\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x77\x69\ \x64\x74\x68\x3a\x20\x33\x32\x30\x3b\x20\x68\x65\x69\x67\x68\x74\ \x3a\x20\x34\x38\x30\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\ \x20\x22\x23\x33\x34\x33\x34\x33\x34\x22\x0a\x0a\x20\x20\x20\x20\ \x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x63\x65\x6e\x74\ \x65\x72\x49\x6e\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x32\x30\x30\x3b\ \x20\x68\x65\x69\x67\x68\x74\x3a\x20\x32\x30\x30\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x72\x61\x64\x69\x75\x73\x3a\x20\x33\x30\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\ \x74\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\x22\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x77\x69\x64\x74\ \x68\x3a\x20\x34\x3b\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\ \x6f\x72\x3a\x20\x22\x77\x68\x69\x74\x65\x22\x0a\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x53\x69\x64\x65\x52\x65\x63\x74\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\ \x20\x6c\x65\x66\x74\x52\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x20\x7b\x20\ \x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\ \x70\x61\x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\ \x65\x6e\x74\x65\x72\x3b\x20\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\ \x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\ \x6c\x65\x66\x74\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x74\x65\x78\x74\x3a\x20\x22\x4c\x65\x66\x74\x22\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x53\x69\x64\x65\x52\x65\x63\x74\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x72\x69\ \x67\x68\x74\x52\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x20\x7b\x20\x76\x65\ \x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x3b\x20\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\ \x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x72\x69\ \x67\x68\x74\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x74\x65\x78\x74\x3a\x20\x22\x52\x69\x67\x68\x74\x22\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x53\x69\x64\x65\x52\x65\x63\x74\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x74\x6f\ \x70\x52\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x20\x7b\x20\x76\x65\x72\x74\ \x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x74\x6f\x70\x3b\x20\x68\x6f\x72\x69\x7a\x6f\x6e\x74\ \x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\x6e\x74\ \x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\ \x72\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x74\x65\x78\x74\x3a\x20\x22\x54\x6f\x70\x22\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\ \x69\x64\x65\x52\x65\x63\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x62\x6f\x74\x74\x6f\x6d\ \x52\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x20\x7b\x20\x76\x65\x72\x74\x69\ \x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\x6e\ \x74\x2e\x62\x6f\x74\x74\x6f\x6d\x3b\x20\x68\x6f\x72\x69\x7a\x6f\ \x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x74\x65\x78\x74\x3a\x20\x22\x42\x6f\x74\x74\x6f\x6d\x22\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\ \x20\x66\x6f\x63\x75\x73\x52\x65\x63\x74\x0a\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\ \x20\x73\x74\x72\x69\x6e\x67\x20\x74\x65\x78\x74\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x78\x3a\x20\x36\x32\x3b\ \x20\x79\x3a\x20\x37\x35\x3b\x20\x77\x69\x64\x74\x68\x3a\x20\x37\ \x35\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x35\x30\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x64\x69\x75\x73\ \x3a\x20\x36\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x62\x6f\x72\x64\x65\x72\x2e\x77\x69\x64\x74\x68\x3a\x20\x34\x3b\ \x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\x6f\x72\x3a\x20\x22\ \x77\x68\x69\x74\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x66\x69\x72\x65\x62\ \x72\x69\x63\x6b\x22\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x2f\x2f\x20\x53\x65\x74\x20\x61\x6e\x20\x27\x65\x6c\ \x61\x73\x74\x69\x63\x27\x20\x62\x65\x68\x61\x76\x69\x6f\x72\x20\ \x6f\x6e\x20\x74\x68\x65\x20\x66\x6f\x63\x75\x73\x52\x65\x63\x74\ \x27\x73\x20\x78\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x2e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x42\x65\x68\x61\x76\ \x69\x6f\x72\x20\x6f\x6e\x20\x78\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\ \x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x65\x61\x73\ \x69\x6e\x67\x2e\x74\x79\x70\x65\x3a\x20\x45\x61\x73\x69\x6e\x67\ \x2e\x4f\x75\x74\x45\x6c\x61\x73\x74\x69\x63\x3b\x20\x65\x61\x73\ \x69\x6e\x67\x2e\x61\x6d\x70\x6c\x69\x74\x75\x64\x65\x3a\x20\x33\ \x2e\x30\x3b\x20\x65\x61\x73\x69\x6e\x67\x2e\x70\x65\x72\x69\x6f\ \x64\x3a\x20\x32\x2e\x30\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\ \x3a\x20\x33\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x53\x65\x74\x20\x61\x6e\ \x20\x27\x65\x6c\x61\x73\x74\x69\x63\x27\x20\x62\x65\x68\x61\x76\ \x69\x6f\x72\x20\x6f\x6e\x20\x74\x68\x65\x20\x66\x6f\x63\x75\x73\ \x52\x65\x63\x74\x27\x73\x20\x79\x20\x70\x72\x6f\x70\x65\x72\x74\ \x79\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x42\ \x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x79\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\ \x75\x6d\x62\x65\x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\ \x20\x65\x61\x73\x69\x6e\x67\x2e\x74\x79\x70\x65\x3a\x20\x45\x61\ \x73\x69\x6e\x67\x2e\x4f\x75\x74\x45\x6c\x61\x73\x74\x69\x63\x3b\ \x20\x65\x61\x73\x69\x6e\x67\x2e\x61\x6d\x70\x6c\x69\x74\x75\x64\ \x65\x3a\x20\x33\x2e\x30\x3b\x20\x65\x61\x73\x69\x6e\x67\x2e\x70\ \x65\x72\x69\x6f\x64\x3a\x20\x32\x2e\x30\x3b\x20\x64\x75\x72\x61\ \x74\x69\x6f\x6e\x3a\x20\x33\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x54\x65\x78\x74\x20\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x69\x64\x3a\x20\x66\x6f\x63\x75\x73\x54\x65\x78\x74\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x74\x65\x78\x74\x3a\x20\x66\x6f\x63\x75\x73\x52\x65\x63\x74\x2e\ \x74\x65\x78\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x63\x65\x6e\ \x74\x65\x72\x49\x6e\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\ \x6c\x6f\x72\x3a\x20\x22\x77\x68\x69\x74\x65\x22\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x6e\ \x74\x2e\x70\x69\x78\x65\x6c\x53\x69\x7a\x65\x3a\x20\x31\x36\x3b\ \x20\x66\x6f\x6e\x74\x2e\x62\x6f\x6c\x64\x3a\x20\x74\x72\x75\x65\ \x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x2f\x2f\x20\x53\x65\x74\x20\x61\x20\x62\x65\x68\x61\x76\ \x69\x6f\x72\x20\x6f\x6e\x20\x74\x68\x65\x20\x66\x6f\x63\x75\x73\ \x54\x65\x78\x74\x27\x73\x20\x78\x20\x70\x72\x6f\x70\x65\x72\x74\ \x79\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x2f\x2f\x20\x53\x65\x74\x20\x74\x68\x65\x20\x6f\x70\ \x61\x63\x69\x74\x79\x20\x74\x6f\x20\x30\x2c\x20\x73\x65\x74\x20\ \x74\x68\x65\x20\x6e\x65\x77\x20\x74\x65\x78\x74\x20\x76\x61\x6c\ \x75\x65\x2c\x20\x74\x68\x65\x6e\x20\x73\x65\x74\x20\x74\x68\x65\ \x20\x6f\x70\x61\x63\x69\x74\x79\x20\x62\x61\x63\x6b\x20\x74\x6f\ \x20\x31\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\ \x74\x65\x78\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x65\x71\x75\x65\ \x6e\x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\x72\x41\ \x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x74\x61\x72\x67\x65\ \x74\x3a\x20\x66\x6f\x63\x75\x73\x54\x65\x78\x74\x3b\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x3a\x20\x22\x6f\x70\x61\x63\x69\x74\x79\ \x22\x3b\x20\x74\x6f\x3a\x20\x30\x3b\x20\x64\x75\x72\x61\x74\x69\ \x6f\x6e\x3a\x20\x31\x35\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x4e\x75\x6d\x62\x65\x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\ \x6e\x20\x7b\x20\x74\x61\x72\x67\x65\x74\x3a\x20\x66\x6f\x63\x75\ \x73\x54\x65\x78\x74\x3b\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x3a\ \x20\x22\x6f\x70\x61\x63\x69\x74\x79\x22\x3b\x20\x74\x6f\x3a\x20\ \x31\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x31\x35\x30\ \x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x14\x1d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x2e\x00\x00\x00\x37\x08\x06\x00\x00\x00\x73\x60\x78\x64\ \x00\x00\x13\xe4\x49\x44\x41\x54\x78\x9c\x62\xfc\xff\xff\x3f\xc3\ \xdf\x7f\x7f\x99\x99\x99\x98\xff\x3e\x78\xf1\x58\x66\xe9\x9e\x55\ \x09\x87\x2f\x9e\xb6\x79\xf7\xe9\xad\x98\xa4\xf2\x3f\x7e\x51\xb9\ \xbf\xfc\xcc\x1c\x3f\xf8\xfe\xfd\xff\xc7\xca\xc5\xc6\xf7\x46\x9c\ \x5b\xf6\x96\x24\xaf\xd2\x35\x29\x3e\xa5\xcb\xd2\xbc\x4a\xd7\xc4\ \x78\x64\xef\x08\x70\x8a\x3e\x63\x63\x66\xff\xc5\x80\x05\xfc\x67\ \xf8\xcf\xf4\xef\xff\x3f\x26\x06\x86\xff\x0c\x8c\x0c\x8c\xff\x19\ \x19\x18\xff\x33\x30\x42\x69\x0a\x00\x00\x00\x00\xff\xff\x62\xfc\ \xfb\xf7\x2f\x33\x13\x13\xd3\xdf\x59\x9b\x17\xa6\x54\xcf\x6d\xed\ \x7d\xf3\xe6\x0d\x1f\x17\x2f\xdb\x7f\x7b\x2f\x61\x46\x59\x45\x4e\ \x06\x86\x7f\x8c\x0c\x0c\xff\x99\x18\x18\x18\x18\x18\xfe\xfd\xff\ \xc7\xf0\xe7\xdf\x6f\x86\x7f\xff\xff\x30\x30\x30\x30\x32\xb0\x30\ \xb1\x32\x70\xb2\xf0\x7c\xe3\x63\x17\x7a\x26\xcc\x25\x75\x5f\x9c\ \x47\xee\xa6\x04\x8f\xc2\x75\x09\x5e\x85\x9b\xa2\x5c\x52\xf7\x05\ \x38\xc5\x9e\xb1\xb3\x70\xfc\xc0\x6e\xf5\x7f\xc6\x7f\xff\xff\x31\ \xc3\x39\x24\x7a\x08\x00\x00\x00\xff\xff\x62\xfc\xff\xff\x3f\xc3\ \xa4\xb5\xb3\x73\xf2\xbb\xf3\x26\x73\xf2\x09\xff\x63\x67\x63\xfb\ \xef\x1e\x2c\xc4\x20\x21\xc3\xc6\xf8\xed\xeb\x3f\x46\x46\x88\x39\ \x8c\x70\x0b\x18\x99\xfe\x33\x32\x30\xfc\x67\x60\x60\x60\xf8\xff\ \xff\x3f\xd3\xbf\xff\x7f\x19\xff\xfc\xff\x03\xf1\xd0\xbf\x3f\x0c\ \xff\x19\xfe\x33\xb0\x30\xb2\x32\xb0\xb3\x70\xff\xe5\x67\x17\x7e\ \x21\xcc\x25\x79\x5f\x8c\x47\xee\xa6\x14\xaf\xe2\x75\x09\x1e\x85\ \xeb\xa2\x3c\x32\x77\x85\x39\x25\x9e\x70\xb0\x72\x7d\xc5\xe7\xa1\ \xff\x70\x4b\x19\xff\x31\x62\xf1\x10\x00\x00\x00\xff\xff\x6c\x92\ \xbd\x0a\xc2\x30\x14\x46\xbf\x2f\x16\x7f\xd2\x06\x21\x83\xc6\x41\ \xc5\x5d\x70\xec\xa8\xbb\xcf\xe2\x6b\xba\x76\x70\x28\xa8\x83\xe0\ \xd6\xb1\x88\x20\x24\xf7\x3a\x88\x5b\x5e\xe0\x1c\x0e\x1c\x36\xb7\ \xcb\x76\x7f\x3a\x9e\x85\xea\xe2\x87\xb2\xab\x4b\x53\x1f\xa6\x78\ \xbf\x04\x66\x90\x03\x67\x4c\xa0\xfe\x0a\xa9\xc4\x7f\x8f\x64\xa2\ \x44\x24\x89\x48\x1a\xa1\x2a\x30\x2c\x30\x2e\xac\xb8\x91\xef\xfc\ \x24\x3c\x66\xe5\xf2\xba\x70\x9b\x36\x54\xeb\x76\x5e\xad\xee\xde\ \x86\xa7\x1d\xba\x9e\x79\x0f\x45\xc5\x28\x94\x04\xf0\x05\x00\x00\ \xff\xff\x62\x99\xbc\x76\x56\xee\xa7\xef\x5f\x79\xf9\xb9\xf9\xfe\ \x32\xb2\xff\x65\x56\xd6\xe4\x62\xf8\xfd\xeb\x3f\x03\x23\x13\x51\ \x8e\x66\x60\x60\x60\x60\xfc\xcf\xf0\x9f\xf1\xff\x7f\xf4\x18\x66\ \xfc\xcf\xca\xc4\xf6\x9f\x8d\x99\x1d\xc9\x43\x0c\x8c\xff\xfe\xff\ \x65\xfe\xf8\xe3\xb5\xc4\xbb\xef\xcf\x24\x6e\xbc\x39\x65\x01\xf1\ \x10\x33\x03\x3b\x33\xe7\x7f\x1e\x36\xc1\xb7\x82\x9c\xe2\x0f\xc5\ \x79\x64\x6f\x8b\xf3\x28\x5c\x97\xe4\x55\xb8\x2e\xce\x23\x77\x5b\ \x98\x4b\xe2\x11\x0f\x9b\xc0\x3b\x26\x46\xa6\xbf\x30\xd3\x01\x00\ \x00\x00\xff\xff\x62\x54\x89\x34\xbe\xfb\xf4\xed\x0b\x25\x86\xff\ \xcc\xff\x85\x44\x58\x18\xbd\xc3\x45\x88\x76\x31\xb9\x00\x9a\x9e\ \xff\x31\xa2\x79\xe8\xef\x7f\x48\x0c\xfd\xf9\xf7\x9b\xe1\xff\xff\ \x7f\x0c\x8c\x8c\xcc\x0c\x6c\xcc\x1c\x0c\x3c\xac\xfc\x1f\x04\x39\ \xc5\x1e\x89\x72\xcb\xde\x91\xe0\x51\xb8\x26\xc9\xab\x70\x03\x00\ \x00\x00\xff\xff\xbc\xd1\xb1\x0d\x80\x30\x10\x03\x40\x3b\x05\x54\ \x54\xb4\x91\x32\x0e\xa2\x65\xff\x45\xc8\xff\xdb\x54\x94\xb4\x8c\ \x70\x3a\x6e\xe7\xb8\x01\x2f\x73\x1a\x7d\xac\x38\xae\x1d\x11\x06\ \x3f\xbe\x7e\x00\x99\xa0\x5e\x90\xad\x56\x4e\x96\x02\xa9\x84\x5c\ \x20\x1b\x1e\x00\x00\x00\xff\xff\xb4\x92\x21\x12\x00\x20\x0c\xc3\ \xda\x5b\x81\xff\x7f\x98\xa0\x26\x70\x18\x2a\x73\x11\x11\x0d\x30\ \xdd\xd6\xfb\x3d\xbe\x0c\x61\x81\x91\xae\x92\x72\xa8\x0c\x96\xbc\ \x9b\x1d\x00\x00\x00\xff\xff\x94\x94\xb1\x0d\x00\x20\x0c\xc3\xdc\ \x96\xff\x4f\x76\x19\xd8\x10\x42\x70\x40\x6c\x79\xc9\xd8\x96\x7f\ \x22\x21\x33\xa8\x2a\x6c\xd1\x05\xc8\x08\xd6\x27\x34\xb6\x57\xc6\ \x93\xe7\x10\x34\x01\x00\x00\xff\xff\x8c\x91\xc1\x0a\x80\x20\x10\ \x05\x67\xdd\x35\xa5\xfe\xff\x3b\x83\x28\x41\xad\xad\x4b\x67\xeb\ \xdd\x67\x18\x78\x36\x02\x46\xc1\x6a\x42\x9e\x8d\xbd\x1c\xac\x5b\ \x21\x6a\x24\x4d\x09\x01\xaa\x37\x4e\xef\x68\x30\xb2\x2d\x04\x51\ \xfc\xbe\x3e\xac\xef\xed\x3f\xf7\x00\x00\x00\xff\xff\x22\xd9\xe1\ \xff\xff\x31\x30\x70\x70\x32\x33\x7c\xfb\xfa\x87\xe1\xf4\xc9\xc7\ \x0c\x52\x5c\xea\x0c\x5e\x26\x3e\x0c\xc6\xaa\x86\x0c\xa2\x02\x22\ \x0c\x8c\x8c\x0c\x0c\x5f\x7e\x7d\x60\x78\xf6\xe9\x1e\xc3\xb5\xd7\ \x27\x19\xae\xbe\x3a\xc1\xf0\xf5\xf7\x27\x06\x6e\x56\x3e\x9c\x8e\ \x67\x64\x64\x60\x80\x95\x4a\x4c\x8c\x4c\x0c\xff\xff\xff\x67\xf8\ \x4f\xc0\x13\x00\x00\x00\x00\xff\xff\x22\xc9\xe1\xff\xff\x43\x1c\ \x7d\xe7\xc6\x17\x86\xa3\xfb\xde\x32\x54\x84\x54\x30\x14\x85\x67\ \x30\xb0\xb3\xb3\x32\xfc\x87\x54\xe9\x70\xb5\x5a\x62\x16\x0c\xae\ \x2a\xd1\x0c\xcf\x3f\x3f\x60\x58\x73\x75\x22\xc3\xe9\x27\x3b\x19\ \xb8\xd8\xf8\x18\x30\x8b\x4d\x06\x86\x5f\x3f\xff\x31\xb0\xb0\xb0\ \x30\x30\x32\xfd\x65\xf8\xf6\xfb\x0b\x03\x0b\x13\x0b\x03\x2b\x13\ \x3b\x5e\xc7\x03\x00\x00\x00\xff\xff\x22\x3a\x3b\xfe\xff\xc7\xc0\ \xc0\xce\xc1\xc4\x70\xe3\xf2\x57\x86\x9d\x6b\x5f\x30\xcc\x2e\x9c\ \xce\x50\x19\x97\xcb\xc0\xc2\xca\xc4\xf0\xf7\xdf\x5f\x86\xff\xff\ \xff\xc1\x2b\x9b\x3f\x7f\x7f\x33\xfc\xfe\x03\x29\xd2\x24\x79\xe5\ \x19\x72\x2d\xfa\x19\x42\x74\xf2\x19\xbe\xfd\xfa\xcc\xc0\x04\x2d\ \x01\xfe\xff\x67\x60\x60\x65\x63\x64\x78\xf5\xec\x0f\xc3\x92\x59\ \x0f\x18\x3c\xc4\x4b\x18\xba\xbc\x36\x32\xd4\xd8\x2f\x66\x30\x94\ \x74\x64\xf8\xf1\xe7\x1b\x5c\x2d\x36\x00\x00\x00\x00\xff\xff\x8c\ \xd4\x21\x0e\xc2\x40\x10\x40\xd1\x3f\x33\xbb\x75\x0d\x06\x01\x0e\ \x53\x82\x44\x35\x58\x24\xa6\x12\x8d\x20\xe1\x04\x78\x6e\xc4\x01\ \xb8\x0c\x69\x10\x08\x0c\x49\x31\x5d\xb6\x83\x42\x92\x70\x82\xff\ \xd4\xff\x0b\xfe\x8d\x3c\xee\x99\xcb\xf9\xca\x69\x7f\x64\xbb\x6e\ \xe8\x53\x42\x45\x31\x35\x44\x14\xd3\x80\x49\x20\x58\xa4\x08\x05\ \x0e\x0c\xee\x64\xcf\x34\x8b\x03\x9b\xf9\x8e\xae\x7f\xa2\x62\xb8\ \x3b\xaa\xc2\xad\x7d\x11\xbd\xa4\xae\x56\x8c\xe2\x94\x6a\xbc\x64\ \x52\xce\x78\x0f\x09\xf8\xfd\xe4\x0f\x00\x00\x00\xff\xff\x22\x3a\ \xc4\x19\x19\x99\x18\x0e\xee\x7e\xce\xa0\xa9\xac\xcb\x50\x16\x95\ \xcb\xc0\xc0\xc0\xc0\xc0\xca\xc2\xc2\xc0\xc8\xc8\xc8\xf0\xff\x3f\ \x24\x99\xdc\x78\x7b\x92\xa1\x66\x43\x3a\x83\x4f\x65\x04\xc3\xda\ \x43\x5b\xa0\x21\xc6\x08\x0f\xb9\x10\xed\x3c\x06\x45\x41\x6d\x86\ \x9f\x7f\xbe\x31\x30\x33\x31\x33\xfc\xff\xc7\xc8\xf0\xf4\xf1\x17\ \x06\x6d\x25\x55\x06\x19\x51\x69\xa8\x63\x19\x18\xfe\x13\x51\x12\ \x01\x00\x00\x00\xff\xff\x84\xd4\x2b\x0e\xc2\x40\x14\x46\xe1\xf3\ \xdf\xa6\x4c\x05\xeb\x40\xa0\x50\x2c\x02\x0d\x49\x75\x05\x0e\xc9\ \x1e\x58\x09\x8a\x2d\x90\x60\x70\x24\x78\x12\x14\x62\x12\x02\x02\ \x0c\x8f\xb6\x77\xb0\x18\xc2\x0e\x8e\xf8\x72\xfe\x86\xa7\x04\x9d\ \x20\xe2\xe9\x4d\x3c\xde\x99\x4d\x2a\x42\x5e\xd0\xb4\x0d\x92\xf0\ \xe4\x48\xe2\x70\xdd\xb3\xd8\x4c\x89\xb6\xe5\xd6\xdd\x31\x9e\x97\ \x2c\xd7\x2b\x4c\xc2\xdd\xf1\xd4\x92\x67\x81\x51\xaf\xa2\xf6\x1a\ \x99\x78\x3d\xc4\xe5\xfc\x64\xd8\x1f\x00\x7c\xed\x34\xc3\x64\x98\ \x0c\xfd\xe0\xf2\x01\x00\x00\xff\xff\x22\x1c\xe2\xff\x21\x65\xf5\ \x8d\x2b\x1f\x19\x04\x84\xc4\x19\xfc\xad\x3d\x19\x18\x18\x18\x18\ \x98\xa1\x2d\x30\x58\x64\x6e\xbe\x31\x8b\xe1\xdf\xff\xbf\x0c\xec\ \x0c\x02\x0c\xa6\xe6\x92\x0c\x72\x9a\x22\x0c\x55\x33\xda\x18\xbe\ \xff\x82\x84\x2e\x23\xb4\x08\x36\x94\x74\x60\x90\xe1\x57\x66\x60\ \x62\xfd\xc5\xf0\xf2\xc5\x67\x86\xdf\x2f\xdf\x33\x58\xe9\x98\x20\ \x2c\x63\x60\x60\xf8\xf5\xf7\x3b\xc3\xd7\xdf\x9f\x18\xbe\xff\xf9\ \xca\xf0\xeb\x2f\xf6\x56\x31\x00\x00\x00\xff\xff\x22\xe8\x70\x26\ \x66\x06\x86\x9f\xdf\x19\x18\xee\xdf\xfb\xc8\x60\xa9\x63\xc4\x20\ \x25\x2c\x09\x0f\xe5\xff\x0c\xff\x19\x18\x19\x99\x18\x3e\xfc\x78\ \xcd\xf0\xe0\xfd\x55\x06\x0e\x16\x2e\x86\x3f\xff\x7e\x33\xfc\xfe\ \xf3\x87\x41\x53\x47\x90\xe1\xe1\xe3\xfb\x0c\x07\x2e\x1c\x85\x84\ \xe6\xff\x7f\x0c\x7f\xff\xfd\x65\x60\x67\xe1\x64\xe0\xfd\x64\xc4\ \xb0\x62\xfe\x43\x86\x64\xd3\x46\x86\xcd\x33\x76\x30\xb8\x98\x38\ \x40\x03\x03\x52\xc8\x29\x08\x6a\x33\x98\xc9\xb8\x33\x68\x88\x98\ \x30\x48\xf2\x28\x60\x75\x17\x00\x00\x00\xff\xff\xc2\x5b\x1c\xfe\ \xff\xcf\xc0\xc0\xc2\xc2\xc8\xf0\xfe\xdd\x5f\x86\xef\xef\x7f\x30\ \x58\xe9\x9a\x42\x1c\xf1\xef\x1f\x03\x13\x33\xa4\xbc\x65\x64\x64\ \x64\x78\xf9\xe5\x21\xc3\x97\x5f\x1f\x19\xd8\x59\xb8\x20\xc9\xe2\ \xef\x7f\x06\x61\x31\x36\x06\x06\xe6\x7f\x0c\xa7\xae\x9d\x63\xf0\ \x34\x73\x85\xe7\x03\x06\x06\x06\x06\x4d\x51\x33\x86\x77\x8f\xfa\ \x19\x54\xc5\xb4\x19\x34\xe5\xd5\x18\xfe\xfe\xfb\x0b\x75\x38\x24\ \x16\x2d\x65\xbd\x19\x2c\x64\x3c\x19\x18\x19\x99\x18\x9e\x7f\xbe\ \xcf\xd0\xb0\x2f\x02\xc3\x6d\x00\x00\x00\x00\xff\xff\xc2\x1f\xe2\ \xff\x19\x18\x98\x98\x19\x19\xde\xbf\xfd\xcd\xc0\xf0\x8f\x99\x41\ \x5f\x45\x8b\x81\x81\x81\x81\x81\x11\xde\x02\x83\x44\xed\x9b\x6f\ \xcf\x19\xfe\xfc\xfb\xcd\xc0\xc8\xc0\xc8\xc0\xc8\x08\x49\xab\x9c\ \xdc\x4c\x0c\xcc\x5c\x2c\x0c\x37\x1f\xdf\x83\xeb\x61\x64\x82\xe8\ \xd3\x53\xd1\x64\xe0\xe2\xe3\x67\xf8\xf3\xf7\x0f\x6e\x8b\x09\x54\ \x40\x00\x00\x00\x00\xff\xff\x22\x98\x54\x18\x19\x19\x18\x3e\xbc\ \xff\xc5\xc0\xc4\xce\xc9\xa0\x20\x21\x07\x11\x83\x86\x1c\xcc\xe8\ \x4f\x3f\xde\x42\x9a\xa1\x50\xfe\xbf\x7f\x0c\x0c\xac\xac\x0c\x0c\ \xdc\xdc\xac\x0c\xcf\xdf\xbc\x84\x58\xc4\xc8\x04\xd7\x27\x25\x2c\ \xc1\xa0\xa9\x26\xc5\x70\xf1\xfe\x25\x86\xa7\xaf\x9f\xc3\x43\x1a\ \x06\xfe\xfc\xfd\xcb\xf0\xfb\xcf\x3f\x14\xbb\xd0\x01\x00\x00\x00\ \xff\xff\x22\x5c\x73\xfe\x67\x60\xf8\xfc\xe9\x37\x03\x2f\x17\x37\ \x83\x28\xbf\x30\xd4\x33\xd0\x4e\x15\x54\xc9\xb7\xdf\x9f\x51\x3c\ \xc2\xc0\x00\xc9\x1b\x1c\x1c\x2c\x0c\xef\x3f\x7f\x82\xeb\xf9\x0f\ \x0d\x49\x4e\x76\x4e\x86\x88\x28\x2d\x86\xd4\xce\x64\x06\x13\x69\ \x17\x86\xc3\x53\x37\x32\xfc\xff\xff\x9f\xe1\x1f\xc3\x3f\x06\x66\ \x46\x66\x86\xed\x37\x17\x32\xec\xba\xbd\x82\x41\x84\x5b\x92\x01\ \xa9\xef\x80\x02\x00\x00\x00\x00\xff\xff\x7c\x95\x4d\x0a\x80\x20\ \x18\x44\x9f\xf9\x43\x88\x50\xf7\xbf\x5b\x27\x88\x36\x2d\x34\x31\ \xfd\x5a\xb8\x11\x8a\xf6\x03\xf3\x86\x19\x98\x7f\x70\xd5\x77\x9e\ \x62\x21\xf8\x85\xe0\xc3\xa7\x2c\xdf\x91\xf1\x2c\x44\x7a\x53\xce\ \x69\xe2\x95\x28\xb5\x60\xb5\x05\x81\x86\x30\x29\x85\xb7\x2b\xd6\ \x18\x8c\x1e\x11\x7a\xf4\xd4\x4e\xf6\xbc\x91\xe4\xa0\xb6\x8a\xd3\ \xf3\xcb\xf3\x01\x00\x00\xff\xff\x84\x97\xc1\x0a\x80\x30\x0c\x43\ \x5f\xb7\xae\x9b\xc5\xff\xff\x57\xad\x16\x0f\x9e\x64\x03\xef\x21\ \x79\x10\x08\xe4\x7f\xc7\x81\x88\x64\xb3\x41\x57\x5b\x6a\x22\x63\ \x3a\x1e\x22\xa0\x5a\x38\xe2\xe4\xba\x63\x82\xf3\xb6\x93\x99\x7c\ \x7b\x7a\x4d\x8a\x54\x9a\x0c\xac\x3a\x5d\x7d\x99\xf9\x00\x00\x00\ \xff\xff\x22\xaa\x1c\xff\xfb\xf7\x3f\x03\x0b\x33\x33\x03\x13\x13\ \x13\xb2\xf9\x70\x00\x69\xf5\xa1\xbb\x1c\x92\xb1\xff\xfe\xfb\x0b\ \x75\x20\x2a\x60\x65\x62\x83\x26\x1d\x6c\x69\x18\xd2\x3a\xfc\xff\ \xff\x1f\xce\x5a\x14\x00\x00\x00\xff\xff\x22\xb2\xad\x02\x29\xf6\ \x18\x71\xf6\xe7\xb0\x97\x00\x8c\x50\x29\x6c\xb2\x4c\x8c\xc4\x0d\ \x21\xe0\x02\x00\x00\x00\x00\xff\xff\x22\xca\xe1\x4c\x4c\x8c\x0c\ \x7f\xff\xfd\x63\xf8\x87\xa5\x49\xca\xc0\xc0\x80\xbd\x5a\x86\x3a\ \x98\x91\x11\x7b\xb9\x40\x69\xcf\x08\x00\x00\x00\xff\xff\x22\xaa\ \x38\x64\x61\x85\xa4\xd5\xdf\x7f\x7e\xc3\x1d\x85\x0c\x58\x18\x59\ \xb1\xb6\x9d\xff\xfd\xfd\xcf\xc0\xcc\xc4\xc4\xc0\x84\x65\x80\xe6\ \xf7\xbf\x9f\xd0\xa2\x8e\xbc\x91\x38\x00\x00\x00\x00\xff\xff\x22\ \x1c\xe2\x8c\x0c\x0c\xec\xec\x2c\x0c\xdf\x7e\x7c\x67\xf8\xf1\x0b\ \x7b\xbb\x81\x95\x99\x1d\xc3\xfe\xff\x0c\x0c\x0c\x7f\xfe\xfe\x63\ \x60\x65\x65\x65\x60\x61\x46\x76\x38\x24\xfc\x7f\xfc\xf9\x06\x2d\ \x22\xc9\x03\x00\x00\x00\x00\xff\xff\x22\x58\x73\x32\x32\x32\x30\ \x70\x73\x43\xfa\x96\x1f\xbf\x7e\x82\x0a\xff\x87\x3b\x8e\x81\x81\ \x81\x81\x93\x95\x9b\x01\x32\xa8\x89\x70\xda\xff\x7f\x0c\x0c\xbf\ \x7f\xfd\x65\xe0\x64\xe7\x80\x14\x85\x50\x09\x58\x3e\xf9\xfa\xeb\ \x23\x24\x89\x91\xe9\x72\x00\x00\x00\x00\xff\xff\x22\x2a\x8d\xf3\ \xf2\xb1\x32\x7c\xff\xf1\x8d\xe1\xe5\xfb\xd7\x10\x07\xff\x47\x38\ \x90\x81\x81\x81\x81\x87\x4d\x80\x81\x81\x01\x29\xf4\x18\x21\x0e\ \xff\xf9\xf3\x2f\x03\x1f\x17\x2f\x44\x0e\xaa\x89\x91\x81\x91\xe1\ \xcf\xbf\xdf\x0c\x9f\x7e\xbe\x63\x60\x66\x64\x21\xd8\xb7\xc4\x05\ \x00\x00\x00\x00\xff\xff\xc2\xef\x70\xa8\x03\xf8\x05\xd9\x18\x18\ \xfe\xfc\x64\xb8\xf7\xec\x21\xd4\xe1\xa8\x96\x09\x70\x88\xa2\x74\ \xb3\x18\x19\x19\x18\xfe\xfc\x81\x54\x5c\x62\x82\x42\x0c\x0c\x0c\ \x90\x9e\x10\xcc\x8d\x9f\x7e\xbe\x83\x38\x9c\x89\x85\x81\xdc\x20\ \x07\x00\x00\x00\xff\xff\x22\x18\xe2\x7f\xff\xfd\x67\xe0\x17\x64\ \x61\x60\x60\x61\x60\xb8\x78\xe7\x2a\x9a\xbf\x20\x61\x2e\xc2\x25\ \xc5\xc0\xc6\xc2\x09\x29\x29\xa0\xed\xf7\x9f\x3f\xfe\x33\xfc\xfc\ \xf6\x87\x41\x5e\x42\x06\xee\x59\x58\xe8\xbe\xfc\xf2\x88\xe1\xeb\ \xaf\x8f\x0c\xcc\x8c\xcc\x64\xa7\x71\x00\x00\x00\x00\xff\xff\xc2\ \xeb\x70\x46\x46\x06\x86\xbf\x7f\xfe\x33\xf0\xf0\x31\x31\xf0\x0a\ \x73\x32\x9c\xbc\x7a\x8e\x81\x81\x81\x81\x81\x19\x5e\x11\x41\x1c\ \x2e\xca\x2d\xc3\x20\xc0\x2e\xc2\xf0\x17\xda\x4f\x64\x62\x66\x60\ \xf8\xfc\xe1\x0f\x03\xc3\xaf\xff\x0c\xba\xca\x9a\x50\xd3\x10\x2d\ \xbe\x7b\xef\x2e\x33\xfc\xfe\xfb\x0b\x9a\xc6\x91\x9d\x8e\x48\x4e\ \x4c\x8c\x4c\x0c\xac\x2c\x2c\x0c\xcc\xcc\xd8\xcb\x7b\x00\x00\x00\ \x00\xff\xff\x22\x5c\xe5\xff\x63\x60\x60\x65\x67\x60\x50\x50\xe2\ \x67\x38\x7b\xe3\x32\xc3\xa3\x57\x8f\xa1\x5d\x36\x48\xfb\xfa\xdf\ \xff\x7f\x0c\x9c\xac\x3c\x0c\x4a\x42\x3a\x0c\xbf\xfe\xfd\x64\x60\ \x64\x60\x62\x60\x62\x62\x64\x78\xfa\xe8\x3b\x03\x2b\x27\x2f\x83\ \x8d\xae\x05\xc4\x22\xa4\x6e\xd8\xb5\x57\x27\x18\x58\xa0\xc9\x04\ \xa5\x3c\x87\xfa\x81\x87\x4d\x90\xe1\xeb\xef\x8f\x0c\x2f\xdf\xbd\ \x61\x78\xf7\xf1\x23\xd6\x16\x22\x00\x00\x00\xff\xff\x22\xaa\x38\ \xfc\xf7\xf7\x3f\x83\x9a\x06\x2f\xc3\xe7\x8f\x6f\x18\x36\x1f\xdb\ \xc9\xc0\xc0\xc0\x80\x51\x8d\xdb\x2b\x86\x30\xfc\xfb\xfb\x97\x81\ \x99\xed\x1f\xc3\xcf\x6f\x4c\x0c\xa7\x8e\x3e\x60\x08\x75\xf2\x66\ \x50\x93\x51\x61\xf8\xf7\xef\x1f\x03\x23\x23\x24\x24\x9f\x7c\xba\ \xc3\x70\xfb\xed\x45\x06\x0e\x56\x2e\x06\x56\x36\x26\x86\xcf\xdf\ \xbe\x30\x30\x30\x40\x6a\x66\x58\x6d\x6a\x25\xef\xc5\x60\x2d\x92\ \xc0\xa0\xfc\x27\x80\x21\x55\x77\x02\x83\x28\x8f\x34\x24\x86\x90\ \x3c\x00\x00\x00\x00\xff\xff\x22\xaa\x02\xfa\xfd\xeb\x3f\x83\x84\ \x0c\x1b\x83\x84\x12\x1f\xc3\xf4\xf5\x8b\x18\x7e\xfd\xf9\xc5\xc0\ \xc2\xcc\xcc\xf0\x9f\xe1\x3f\x7c\xe4\x49\x5b\xcc\x82\x21\x4c\x2f\ \x9f\xe1\xd3\xa7\xef\x0c\x5b\xd6\x3d\x64\xb0\xd5\x73\x61\x98\x98\ \xd7\x0a\x35\x83\x91\xe1\x1f\x03\xc4\xa3\xfb\xef\xad\x62\xf8\xfa\ \xeb\x13\x03\x0b\x0b\x33\x83\x98\x18\x27\xc3\xc3\x17\x4f\x19\x9e\ \xbf\x7b\x01\x0d\x70\x48\x90\xf3\xb2\x09\x33\x14\xb9\xb6\x30\xb4\ \x25\xb4\x31\x38\xe9\x3a\x33\xc0\x87\xe7\x90\x9a\x1c\x00\x00\x00\ \x00\xff\xff\x22\xae\xad\xc2\xc0\xc0\xf0\x9f\xf1\x1f\x83\xad\x93\ \x04\xc3\xd5\x5b\x17\x19\xa6\xac\x9b\xcd\xc0\xc0\xc0\xc0\xf0\xfb\ \xcf\x1f\xb8\xc3\xfe\xff\xff\xcf\xe0\xa7\x91\xc1\x50\x67\xb7\x86\ \x61\x4d\xf9\x46\x86\xbd\x13\xd7\x30\x88\xf0\x8b\x40\xc6\x56\x18\ \xfe\x32\x30\x33\xb2\x30\xdc\x7b\x77\x99\xe1\xd0\x83\xf5\x0c\xdc\ \x6c\x7c\x0c\xbf\x7e\xfd\x66\x50\xd7\xe1\x67\xf8\xf8\xf1\x15\xc3\ \xca\x3d\x9b\x20\xf6\xfc\x83\xe5\x03\xb4\x21\x38\x2c\x39\x18\x00\ \x00\x00\xff\xff\x22\x6a\x08\x8e\x91\x91\x81\xe1\xf7\xcf\xff\x0c\ \x12\x32\x2c\x0c\xd6\xee\x32\x0c\x95\x53\xdb\x18\x4c\x35\x8d\x18\ \x6c\x75\x2d\x19\x7e\xff\xf9\xcd\xc0\xc4\xc4\xc4\xc0\xcc\xc4\xc4\ \xf0\xff\xff\x3f\x06\x55\x29\x55\x06\x55\x29\x48\x29\x02\x49\xbf\ \xff\x19\x98\x19\x59\x18\x3e\xfd\x7c\xc7\x30\xe7\x6c\x2d\xc3\xdf\ \x7f\xbf\x19\xd8\x59\x38\x19\x7e\xff\xfe\xc7\x20\x24\xc6\xcc\xe0\ \x1a\x28\xcb\xd0\xb1\xaa\x9b\x41\x5c\x58\x94\x21\xc4\xde\x9f\x81\ \x99\x81\x91\xe1\xff\xff\x7f\x0c\x9f\x7f\x7d\x60\x78\xf8\xe1\x3a\ \xc3\xa9\x27\x3b\x19\xde\x7c\x7b\xc6\xc0\xca\xcc\x86\xd2\x52\x04\ \x00\x00\x00\xff\xff\x62\xe4\xf1\x90\xfb\xcf\xc8\xc8\xc0\xf0\xeb\ \xe7\x7f\x06\x59\x45\x76\x06\xb7\x40\xdc\x03\xfb\xff\xff\x33\x30\ \x70\x70\x30\x33\x9c\x3a\xf2\x96\xe1\xe6\xf9\xbf\x0c\x4b\x6b\x66\ \x33\x78\x59\x3a\x42\xca\x75\x68\x1a\xfe\xf7\xff\x1f\xc3\xff\xff\ \x90\x92\x07\x36\x9e\xf8\xe4\xe3\x6d\x86\xe9\xa7\xca\x18\x9e\x7e\ \xba\xcb\xc0\xc9\xca\x03\x1f\xfc\xfc\xff\x9f\x81\x81\x9d\x9d\x89\ \xe1\xcb\x97\x5f\x0c\x2f\x5f\x7e\x65\x50\x93\x51\x66\x10\x17\x12\ \x63\xf8\xf1\xe7\x1b\xc3\xfb\xef\x2f\x19\x3e\xfe\x78\x03\xcf\xfc\ \xe8\x19\x14\x00\x00\x00\xff\xff\x22\xc9\xe1\x30\xcb\x38\x39\x59\ \x18\x1e\xde\xff\xcc\x70\xf1\xf4\x47\x06\x6f\xfd\x50\x86\x64\xcf\ \x78\x06\x1d\x25\x4d\x06\x56\x68\x6f\x06\xe6\xe0\x6f\xbf\x3f\x33\ \xac\xbd\x3a\x99\xe1\xf0\x83\x0d\x0c\x7f\xfe\xfd\x82\x8c\x02\xa0\ \x8d\xd8\xc2\x86\xac\x59\x58\x98\x18\x7e\xfc\xfa\xc1\xf0\xfb\xcf\ \x1f\xc8\x8c\x03\x13\x2b\xb4\xe4\x61\xc4\x3a\xca\x0b\x00\x00\x00\ \xff\xff\x22\x79\x0e\x82\x91\x91\x81\xe1\xfb\xb7\x3f\x0c\x32\x72\ \xdc\x0c\x7e\xe1\xd2\x0c\x77\x19\x37\x31\x18\x25\x58\x31\xb4\x2e\ \xee\x63\x60\x60\x60\x60\xf8\xfb\x17\x61\xc9\x9f\x7f\xbf\x18\x0e\ \xde\x5f\xcb\xc0\xc0\xc0\xc0\xc0\xc5\xca\x8b\xd5\x01\x8c\x4c\x90\ \x51\x81\x9f\x3f\xff\x32\x30\x33\xb0\x31\x70\xb0\x72\x33\xb0\xb3\ \x70\x32\x30\x33\x42\x27\x0b\xb0\x0f\x4d\xff\x07\x00\x00\x00\xff\ \xff\x22\x6b\xf2\x84\x91\x89\x81\xe1\xd7\xaf\x7f\x0c\x3f\xbe\xfd\ \x65\x50\x53\x15\x67\x10\x94\xe0\x65\xd8\x7a\x6c\x0f\x03\x03\x03\ \x03\x03\x13\x33\x33\x3c\xc9\xf0\xb1\x0b\x33\xb8\xa9\xc6\x30\x7c\ \xf8\xf1\x8a\xe1\xe3\xcf\xb7\xd0\x34\x8f\x3d\x2a\x19\x19\x19\x50\ \x7a\x3d\x78\xdb\x30\xff\x19\xfe\x00\x00\x00\x00\xff\xff\x22\x6b\ \x46\x02\x6e\xd1\x3f\x06\x86\xff\x8c\x7f\x18\xd4\x35\x04\x19\xce\ \x1c\xbd\xca\x70\xe9\xde\x15\x06\x3d\x25\x1d\xc8\x80\x11\xb4\x76\ \x0d\xd4\xca\x66\x90\xe1\x53\x65\x78\xf1\xe9\x11\xc3\xb1\x27\x9b\ \x19\x3e\xfc\x78\x85\xb3\xfd\x4e\x84\xad\xff\xff\xfd\xff\xc3\xc8\ \xcf\x2e\xfa\x0c\x00\x00\x00\xff\xff\xa2\x6c\xba\x8a\x91\x81\xe1\ \xf7\xef\xff\x0c\xea\xba\xbc\x0c\x7f\xfe\x7f\x63\x98\xb1\x71\x21\ \x03\x03\x03\x03\xc3\x9f\xbf\x7f\xe0\x0d\x31\x16\x46\x56\x06\x2b\ \x39\x1f\x86\x20\x9d\x2c\x06\x5e\x36\x01\x86\xbf\xff\xfe\x30\xe0\ \xcc\x40\x04\x00\x13\x23\xe3\xbf\xdf\x7f\x7f\x32\xa8\x0a\x1b\xed\ \x07\x00\x00\x00\xff\xff\xa2\xc8\xe1\x8c\x8c\x0c\x0c\x7f\x7f\xff\ \x67\xe0\x15\x60\x64\x70\x74\x97\x65\x98\xb9\x76\x31\xc3\xf6\x13\ \x7b\x19\xd8\x58\xd9\xe0\x0e\xff\xcf\xf0\x9f\x88\xf9\x1f\xa2\xc0\ \xff\xff\x0c\xff\x99\x98\x99\xd8\x7e\x3b\x28\x06\xcf\x02\x00\x00\ \x00\xff\xff\xa2\x78\x82\x90\x91\x89\x81\xe1\xe7\x8f\x7f\x0c\xda\ \x86\x3c\x0c\xf6\x3e\xc2\x0c\x69\x93\x32\x19\x66\x6c\x9a\xcf\xf0\ \xe1\xf3\x67\x86\xff\xff\x11\x6d\x94\x6f\xbf\x3f\x33\xfc\xf9\xff\ \x1b\xe7\xc8\x14\x0e\xd3\xff\x33\x32\x32\xfd\x63\x62\x64\xfe\xc3\ \xc2\xc4\xfa\xfb\xfd\xf7\x57\x8c\x0e\x0a\xa1\x53\xd4\x45\x8d\x8e\ \x03\x00\x00\x00\xff\xff\x22\xb9\x38\xc4\x05\x60\x65\xfc\xb7\xef\ \xbf\x19\x9e\x3c\xfd\xc0\x20\x29\x20\xc5\xa0\x28\x29\xc7\xc0\xce\ \xc6\xce\xf0\xfd\xf7\x67\x86\x8f\x3f\xde\x41\x47\xbc\x30\xd3\x36\ \x64\x62\x16\xba\x82\x02\xba\xd8\xe0\x3f\xc3\x3f\xe6\x7f\xff\x20\ \x0b\x1c\xfe\xfe\xfb\xfd\xef\xf7\xdf\x5f\x4c\xb6\xf2\x41\x2b\x52\ \x4d\x5b\x62\x58\x98\x58\xfe\x02\x00\x00\x00\xff\xff\x22\x3b\x73\ \x62\x58\xce\xc8\xc0\xf0\xe3\xfb\x5f\x06\x16\x66\x66\x06\x35\x15\ \x31\x86\x5f\xbf\xbf\x31\xdc\xff\x78\x09\x3e\xb5\x0d\x9d\x66\xf9\ \x0f\x59\x09\xc1\x04\x6f\xe3\xfe\x67\xf8\xc7\xfc\xf7\xdf\x5f\xc6\ \xbf\xff\x7e\x33\xfe\xfd\xf7\x87\xe1\xef\xbf\xbf\x0c\x8c\x0c\x90\ \x7e\x2c\x17\x2b\xdf\x17\x71\x4e\xb1\xc7\xa2\x5c\x32\xb7\xcd\x64\ \xdc\x97\x9a\xcb\x7a\xac\x82\x0c\xb4\xff\x67\x04\x00\x00\x00\xff\ \xff\x62\x81\xac\x7a\xf8\x4f\x95\x09\x70\x48\xf3\xfa\x3f\xc3\xcf\ \x1f\x7f\xfe\x33\x32\xb2\xfc\xe7\x64\x65\x83\x2f\xd7\xf8\xf7\xff\ \x2f\xf3\xdf\x7f\x7f\x18\x7f\xff\xfb\xcd\xf8\xe7\xdf\x1f\x86\x7f\ \xff\x20\x6b\x5e\xd8\x20\x0e\xfc\x2a\xc0\x21\xff\x58\x94\x5b\xe6\ \xb6\x24\xaf\xc2\x75\x49\x5e\xc5\xab\x92\xbc\x0a\x37\x45\xb8\xa4\ \x1e\xf0\x71\x08\xbd\x66\x62\x64\xfe\xc7\xc0\xc0\xc0\xf0\xff\xff\ \x3f\x26\x06\x68\xac\x00\x00\x00\x00\xff\xff\x62\xf9\xf3\xe7\x0f\ \x03\x1b\x1b\xdb\x3f\x06\x86\xdf\x4c\x24\x25\x3f\x88\x53\xff\x33\ \x32\x32\xa0\x85\xe0\x7f\xe6\x7f\xff\xff\x30\xfe\xfe\xfb\x8b\xf1\ \xef\x9f\xdf\xf0\x10\x64\x61\x66\x67\xe0\x66\xe5\xfb\x2a\xc6\x21\ \xff\x58\x94\x5b\xfa\x0e\xc4\x81\x4a\x57\x25\x78\x14\x6e\x8a\x72\ \x4b\xdd\x47\x76\x20\x3a\x80\x2c\xc8\xf9\xcf\xc0\xc4\xc8\x0c\xcf\ \xe5\x00\x00\x00\x00\xff\xff\x62\x11\x13\x10\x7e\xf2\xf4\xed\x73\ \x59\x76\x66\xee\xbf\xff\xff\x33\x30\x63\x77\x3c\xe3\x7f\xa4\xc5\ \x2e\x28\x69\x10\x11\x82\x10\x33\x59\x61\x0e\xe4\x16\x7d\x22\xca\ \x2d\x73\x5b\x82\x57\xe1\xba\x14\xaf\xe2\x35\x09\x1e\x85\x9b\x22\ \xdc\xd2\xf7\xf9\x39\x84\x5e\xe1\x72\xe0\xff\xff\xff\x98\xff\xc3\ \x63\x1f\xba\x18\x81\x91\xf1\x3f\x13\x96\x21\x5b\x00\x00\x00\x00\ \xff\xff\x62\xd9\xd3\xbf\xc1\x2e\xa4\x2e\x6e\xd3\xc5\x2b\x97\x74\ \x59\x98\xa5\xfe\x42\x06\x53\x99\xfe\x33\x31\x22\x56\x01\xfd\xfd\ \xff\x87\xf1\xcf\x5f\xc8\x0a\x86\xbf\xff\xa1\x21\xc8\xc4\xce\xc0\ \xcd\xc6\xf7\x5d\x94\x43\x0e\x12\x82\x3c\x8a\xd7\x24\x79\x15\xaf\ \x49\xf0\xca\xdf\x10\xe5\x96\xb9\xcf\xcf\x2e\xf4\x8a\x89\x09\xb7\ \x03\xff\x41\x17\xcc\x40\x03\x05\xb2\x04\x84\x91\xe9\x2f\xb1\x91\ \x0e\x00\x00\x00\xff\xff\x62\xfc\xff\xff\x3f\xc3\xeb\x8f\x6f\x84\ \xbd\x4a\xa2\x37\x3f\xfe\x76\xd9\x32\x38\x46\xee\xdf\xd7\x6f\xdf\ \x99\xfe\x33\x40\x06\x32\x59\x99\xd8\x18\xb8\x58\x79\x3f\x09\x70\ \x88\x3d\x11\xe1\x96\xbe\x23\xc1\xa3\x70\x43\x92\x57\xe1\x9a\x38\ \x8f\xfc\x4d\x51\x6e\xa9\x07\xfc\xec\xc2\x78\x1d\x88\x2d\x04\x89\ \x74\x1b\x5e\x00\x00\x00\x00\xff\xff\x62\xfc\xf3\xf7\x0f\x33\x33\ \x13\xf3\xdf\x57\xef\xde\xf3\x66\xcf\x4e\xde\x2e\xa1\xfd\x56\x4f\ \x96\x4f\xfd\xac\x04\xaf\xc2\x75\x69\x3e\x95\x4b\x52\xbc\x8a\xd7\ \xc4\xb8\x65\xef\x08\x70\x8a\xbe\x64\x66\x62\xc6\xde\xe2\xf9\xff\ \x8f\xf9\x1f\xc3\x3f\x68\xc3\x96\x11\x69\xa9\x13\xd9\x9d\x78\x82\ \x00\x00\x00\x00\xff\xff\x03\x00\x3c\x1e\x17\xa6\x18\xe4\xa8\x9e\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x13\x44\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x2f\x2a\ \x0a\x20\x20\x20\x20\x54\x68\x69\x73\x20\x69\x73\x20\x65\x78\x61\ \x63\x74\x6c\x79\x20\x74\x68\x65\x20\x73\x61\x6d\x65\x20\x61\x73\ \x20\x73\x74\x61\x74\x65\x73\x2e\x71\x6d\x6c\x2c\x20\x65\x78\x63\ \x65\x70\x74\x20\x74\x68\x61\x74\x20\x77\x65\x20\x68\x61\x76\x65\ \x20\x61\x70\x70\x65\x6e\x64\x65\x64\x0a\x20\x20\x20\x20\x61\x20\ \x73\x65\x74\x20\x6f\x66\x20\x74\x72\x61\x6e\x73\x69\x74\x69\x6f\ \x6e\x73\x20\x74\x6f\x20\x61\x70\x70\x6c\x79\x20\x61\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x73\x20\x77\x68\x65\x6e\x20\x74\x68\x65\x20\ \x69\x74\x65\x6d\x20\x63\x68\x61\x6e\x67\x65\x73\x20\x0a\x20\x20\ \x20\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x65\x61\x63\x68\x20\x73\ \x74\x61\x74\x65\x2e\x0a\x2a\x2f\x0a\x0a\x52\x65\x63\x74\x61\x6e\ \x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\x3a\x20\x70\x61\ \x67\x65\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x36\x34\ \x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\x38\x30\x0a\x20\ \x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x33\x34\x33\x34\ \x33\x34\x22\x0a\x0a\x20\x20\x20\x20\x49\x6d\x61\x67\x65\x20\x7b\ \x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x75\x73\ \x65\x72\x49\x63\x6f\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x78\ \x3a\x20\x74\x6f\x70\x4c\x65\x66\x74\x52\x65\x63\x74\x2e\x78\x3b\ \x20\x79\x3a\x20\x74\x6f\x70\x4c\x65\x66\x74\x52\x65\x63\x74\x2e\ \x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\x75\x72\x63\x65\ \x3a\x20\x22\x71\x74\x2d\x6c\x6f\x67\x6f\x2e\x70\x6e\x67\x22\x0a\ \x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\ \x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\ \x64\x3a\x20\x74\x6f\x70\x4c\x65\x66\x74\x52\x65\x63\x74\x0a\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x20\ \x7b\x20\x6c\x65\x66\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\ \x65\x66\x74\x3b\x20\x74\x6f\x70\x3a\x20\x70\x61\x72\x65\x6e\x74\ \x2e\x74\x6f\x70\x3b\x20\x6c\x65\x66\x74\x4d\x61\x72\x67\x69\x6e\ \x3a\x20\x31\x30\x3b\x20\x74\x6f\x70\x4d\x61\x72\x67\x69\x6e\x3a\ \x20\x32\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\ \x64\x74\x68\x3a\x20\x34\x36\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\ \x20\x35\x34\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\ \x72\x3a\x20\x22\x54\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\x22\ \x3b\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x47\x72\x61\x79\x22\x3b\x20\x72\x61\x64\x69\x75\x73\x3a\x20\ \x36\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x43\x6c\ \x69\x63\x6b\x69\x6e\x67\x20\x69\x6e\x20\x68\x65\x72\x65\x20\x73\ \x65\x74\x73\x20\x74\x68\x65\x20\x73\x74\x61\x74\x65\x20\x74\x6f\ \x20\x74\x68\x65\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x73\x74\x61\ \x74\x65\x2c\x20\x72\x65\x74\x75\x72\x6e\x69\x6e\x67\x20\x74\x68\ \x65\x20\x69\x6d\x61\x67\x65\x20\x74\x6f\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x2f\x2f\x20\x69\x74\x73\x20\x69\x6e\x69\x74\x69\x61\ \x6c\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\x20\x7b\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\ \x65\x6e\x74\x3b\x20\x6f\x6e\x43\x6c\x69\x63\x6b\x65\x64\x3a\x20\ \x70\x61\x67\x65\x2e\x73\x74\x61\x74\x65\x20\x3d\x20\x27\x27\x20\ \x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x52\x65\x63\ \x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x69\x64\x3a\x20\x6d\x69\x64\x64\x6c\x65\x52\x69\x67\x68\x74\ \x52\x65\x63\x74\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x63\x68\x6f\x72\x73\x20\x7b\x20\x72\x69\x67\x68\x74\x3a\x20\x70\ \x61\x72\x65\x6e\x74\x2e\x72\x69\x67\x68\x74\x3b\x20\x76\x65\x72\ \x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\ \x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\ \x65\x72\x3b\x20\x72\x69\x67\x68\x74\x4d\x61\x72\x67\x69\x6e\x3a\ \x20\x32\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\ \x64\x74\x68\x3a\x20\x34\x36\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\ \x20\x35\x34\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\ \x72\x3a\x20\x22\x54\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\x22\ \x3b\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x47\x72\x61\x79\x22\x3b\x20\x72\x61\x64\x69\x75\x73\x3a\x20\ \x36\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x43\x6c\ \x69\x63\x6b\x69\x6e\x67\x20\x69\x6e\x20\x68\x65\x72\x65\x20\x73\ \x65\x74\x73\x20\x74\x68\x65\x20\x73\x74\x61\x74\x65\x20\x74\x6f\ \x20\x27\x6d\x69\x64\x64\x6c\x65\x52\x69\x67\x68\x74\x27\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\ \x20\x7b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x3b\x20\x6f\x6e\x43\x6c\x69\x63\x6b\ \x65\x64\x3a\x20\x70\x61\x67\x65\x2e\x73\x74\x61\x74\x65\x20\x3d\ \x20\x27\x6d\x69\x64\x64\x6c\x65\x52\x69\x67\x68\x74\x27\x20\x7d\ \x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x52\x65\x63\x74\ \x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x69\x64\x3a\x20\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x52\x65\ \x63\x74\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\ \x6f\x72\x73\x20\x7b\x20\x6c\x65\x66\x74\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x6c\x65\x66\x74\x3b\x20\x62\x6f\x74\x74\x6f\x6d\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x2e\x62\x6f\x74\x74\x6f\x6d\x3b\x20\ \x6c\x65\x66\x74\x4d\x61\x72\x67\x69\x6e\x3a\x20\x31\x30\x3b\x20\ \x62\x6f\x74\x74\x6f\x6d\x4d\x61\x72\x67\x69\x6e\x3a\x20\x32\x30\ \x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\ \x3a\x20\x34\x36\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x35\x34\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x54\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\x22\x3b\x20\x62\ \x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x47\x72\ \x61\x79\x22\x3b\x20\x72\x61\x64\x69\x75\x73\x3a\x20\x36\x0a\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x43\x6c\x69\x63\x6b\ \x69\x6e\x67\x20\x69\x6e\x20\x68\x65\x72\x65\x20\x73\x65\x74\x73\ \x20\x74\x68\x65\x20\x73\x74\x61\x74\x65\x20\x74\x6f\x20\x27\x62\ \x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x27\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\x20\x7b\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\ \x65\x6e\x74\x3b\x20\x6f\x6e\x43\x6c\x69\x63\x6b\x65\x64\x3a\x20\ \x70\x61\x67\x65\x2e\x73\x74\x61\x74\x65\x20\x3d\x20\x27\x62\x6f\ \x74\x74\x6f\x6d\x4c\x65\x66\x74\x27\x20\x7d\x0a\x20\x20\x20\x20\ \x7d\x0a\x0a\x20\x20\x20\x20\x73\x74\x61\x74\x65\x73\x3a\x20\x5b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x49\x6e\x20\x73\ \x74\x61\x74\x65\x20\x27\x6d\x69\x64\x64\x6c\x65\x52\x69\x67\x68\ \x74\x27\x2c\x20\x6d\x6f\x76\x65\x20\x74\x68\x65\x20\x69\x6d\x61\ \x67\x65\x20\x74\x6f\x20\x6d\x69\x64\x64\x6c\x65\x52\x69\x67\x68\ \x74\x52\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\x74\ \x61\x74\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x6e\x61\x6d\x65\x3a\x20\x22\x6d\x69\x64\x64\x6c\x65\x52\ \x69\x67\x68\x74\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x50\x72\x6f\x70\x65\x72\x74\x79\x43\x68\x61\x6e\x67\x65\ \x73\x20\x7b\x20\x74\x61\x72\x67\x65\x74\x3a\x20\x75\x73\x65\x72\ \x49\x63\x6f\x6e\x3b\x20\x78\x3a\x20\x6d\x69\x64\x64\x6c\x65\x52\ \x69\x67\x68\x74\x52\x65\x63\x74\x2e\x78\x3b\x20\x79\x3a\x20\x6d\ \x69\x64\x64\x6c\x65\x52\x69\x67\x68\x74\x52\x65\x63\x74\x2e\x79\ \x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x2c\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x49\x6e\x20\x73\x74\x61\ \x74\x65\x20\x27\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x27\x2c\ \x20\x6d\x6f\x76\x65\x20\x74\x68\x65\x20\x69\x6d\x61\x67\x65\x20\ \x74\x6f\x20\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x52\x65\x63\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\x74\x61\x74\x65\x20\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6e\x61\ \x6d\x65\x3a\x20\x22\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x22\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x50\x72\x6f\ \x70\x65\x72\x74\x79\x43\x68\x61\x6e\x67\x65\x73\x20\x7b\x20\x74\ \x61\x72\x67\x65\x74\x3a\x20\x75\x73\x65\x72\x49\x63\x6f\x6e\x3b\ \x20\x78\x3a\x20\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x52\x65\ \x63\x74\x2e\x78\x3b\x20\x79\x3a\x20\x62\x6f\x74\x74\x6f\x6d\x4c\ \x65\x66\x74\x52\x65\x63\x74\x2e\x79\x20\x20\x7d\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x5d\x0a\x0a\x20\x20\ \x20\x20\x2f\x2f\x20\x21\x5b\x30\x5d\x0a\x20\x20\x20\x20\x2f\x2f\ \x20\x54\x72\x61\x6e\x73\x69\x74\x69\x6f\x6e\x73\x20\x64\x65\x66\ \x69\x6e\x65\x20\x68\x6f\x77\x20\x74\x68\x65\x20\x70\x72\x6f\x70\ \x65\x72\x74\x69\x65\x73\x20\x63\x68\x61\x6e\x67\x65\x20\x77\x68\ \x65\x6e\x20\x74\x68\x65\x20\x69\x74\x65\x6d\x20\x6d\x6f\x76\x65\ \x73\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x65\x61\x63\x68\x20\x73\ \x74\x61\x74\x65\x0a\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x69\x74\ \x69\x6f\x6e\x73\x3a\x20\x5b\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x2f\x2f\x20\x57\x68\x65\x6e\x20\x74\x72\x61\x6e\x73\x69\x74\ \x69\x6f\x6e\x69\x6e\x67\x20\x74\x6f\x20\x27\x6d\x69\x64\x64\x6c\ \x65\x52\x69\x67\x68\x74\x27\x20\x6d\x6f\x76\x65\x20\x78\x2c\x79\ \x20\x6f\x76\x65\x72\x20\x61\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\ \x20\x6f\x66\x20\x31\x20\x73\x65\x63\x6f\x6e\x64\x2c\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x77\x69\x74\x68\x20\x4f\x75\ \x74\x42\x6f\x75\x6e\x63\x65\x20\x65\x61\x73\x69\x6e\x67\x20\x66\ \x75\x6e\x63\x74\x69\x6f\x6e\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x54\x72\x61\x6e\x73\x69\x74\x69\x6f\x6e\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x3a\x20\ \x22\x2a\x22\x3b\x20\x74\x6f\x3a\x20\x22\x6d\x69\x64\x64\x6c\x65\ \x52\x69\x67\x68\x74\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x4e\x75\x6d\x62\x65\x72\x41\x6e\x69\x6d\x61\x74\x69\ \x6f\x6e\x20\x7b\x20\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x3a\ \x20\x22\x78\x2c\x79\x22\x3b\x20\x65\x61\x73\x69\x6e\x67\x2e\x74\ \x79\x70\x65\x3a\x20\x45\x61\x73\x69\x6e\x67\x2e\x4f\x75\x74\x42\ \x6f\x75\x6e\x63\x65\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\ \x20\x31\x30\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x2c\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x57\ \x68\x65\x6e\x20\x74\x72\x61\x6e\x73\x69\x74\x69\x6f\x6e\x69\x6e\ \x67\x20\x74\x6f\x20\x27\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\ \x27\x20\x6d\x6f\x76\x65\x20\x78\x2c\x79\x20\x6f\x76\x65\x72\x20\ \x61\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x20\x6f\x66\x20\x32\x20\ \x73\x65\x63\x6f\x6e\x64\x73\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x2f\x2f\x20\x77\x69\x74\x68\x20\x49\x6e\x4f\x75\x74\x51\x75\ \x61\x64\x20\x65\x61\x73\x69\x6e\x67\x20\x66\x75\x6e\x63\x74\x69\ \x6f\x6e\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x72\x61\x6e\ \x73\x69\x74\x69\x6f\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x3a\x20\x22\x2a\x22\x3b\x20\ \x74\x6f\x3a\x20\x22\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x22\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\ \x62\x65\x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x70\ \x72\x6f\x70\x65\x72\x74\x69\x65\x73\x3a\x20\x22\x78\x2c\x79\x22\ \x3b\x20\x65\x61\x73\x69\x6e\x67\x2e\x74\x79\x70\x65\x3a\x20\x45\ \x61\x73\x69\x6e\x67\x2e\x49\x6e\x4f\x75\x74\x51\x75\x61\x64\x3b\ \x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x32\x30\x30\x30\x20\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x2c\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x46\x6f\x72\x20\x61\x6e\x79\ \x20\x6f\x74\x68\x65\x72\x20\x73\x74\x61\x74\x65\x20\x63\x68\x61\ \x6e\x67\x65\x73\x20\x6d\x6f\x76\x65\x20\x78\x2c\x79\x20\x6c\x69\ \x6e\x65\x61\x72\x6c\x79\x20\x6f\x76\x65\x72\x20\x64\x75\x72\x61\ \x74\x69\x6f\x6e\x20\x6f\x66\x20\x32\x30\x30\x6d\x73\x2e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x54\x72\x61\x6e\x73\x69\x74\x69\x6f\ \x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x4e\x75\x6d\x62\x65\x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\ \x7b\x20\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x3a\x20\x22\x78\ \x2c\x79\x22\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x32\ \x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\ \x20\x20\x20\x2f\x2f\x20\x21\x5b\x30\x5d\x0a\x20\x20\x20\x20\x5d\ \x0a\x7d\x0a\ \x00\x00\x0f\x24\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\ \x3a\x20\x70\x61\x67\x65\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\ \x3a\x20\x36\x34\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\ \x38\x30\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\ \x33\x34\x33\x34\x33\x34\x22\x0a\x0a\x20\x20\x20\x20\x49\x6d\x61\ \x67\x65\x20\x7b\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\ \x3a\x20\x75\x73\x65\x72\x49\x63\x6f\x6e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x78\x3a\x20\x74\x6f\x70\x4c\x65\x66\x74\x52\x65\x63\ \x74\x2e\x78\x3b\x20\x79\x3a\x20\x74\x6f\x70\x4c\x65\x66\x74\x52\ \x65\x63\x74\x2e\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\ \x75\x72\x63\x65\x3a\x20\x22\x71\x74\x2d\x6c\x6f\x67\x6f\x2e\x70\ \x6e\x67\x22\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x52\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x69\x64\x3a\x20\x74\x6f\x70\x4c\x65\x66\x74\x52\x65\ \x63\x74\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\ \x6f\x72\x73\x20\x7b\x20\x6c\x65\x66\x74\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x6c\x65\x66\x74\x3b\x20\x74\x6f\x70\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x74\x6f\x70\x3b\x20\x6c\x65\x66\x74\x4d\x61\ \x72\x67\x69\x6e\x3a\x20\x31\x30\x3b\x20\x74\x6f\x70\x4d\x61\x72\ \x67\x69\x6e\x3a\x20\x32\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x77\x69\x64\x74\x68\x3a\x20\x34\x36\x3b\x20\x68\x65\x69\ \x67\x68\x74\x3a\x20\x35\x34\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x6f\x6c\x6f\x72\x3a\x20\x22\x54\x72\x61\x6e\x73\x70\x61\x72\ \x65\x6e\x74\x22\x3b\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\ \x6f\x72\x3a\x20\x22\x47\x72\x61\x79\x22\x3b\x20\x72\x61\x64\x69\ \x75\x73\x3a\x20\x36\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\ \x2f\x20\x43\x6c\x69\x63\x6b\x69\x6e\x67\x20\x69\x6e\x20\x68\x65\ \x72\x65\x20\x73\x65\x74\x73\x20\x74\x68\x65\x20\x73\x74\x61\x74\ \x65\x20\x74\x6f\x20\x74\x68\x65\x20\x64\x65\x66\x61\x75\x6c\x74\ \x20\x73\x74\x61\x74\x65\x2c\x20\x72\x65\x74\x75\x72\x6e\x69\x6e\ \x67\x20\x74\x68\x65\x20\x69\x6d\x61\x67\x65\x20\x74\x6f\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x69\x74\x73\x20\x69\x6e\ \x69\x74\x69\x61\x6c\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\ \x20\x7b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x3b\x20\x6f\x6e\x43\x6c\x69\x63\x6b\ \x65\x64\x3a\x20\x70\x61\x67\x65\x2e\x73\x74\x61\x74\x65\x20\x3d\ \x20\x27\x27\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\ \x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x69\x64\x3a\x20\x6d\x69\x64\x64\x6c\x65\x52\ \x69\x67\x68\x74\x52\x65\x63\x74\x0a\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x20\x7b\x20\x72\x69\x67\x68\ \x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x72\x69\x67\x68\x74\x3b\ \x20\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\ \x43\x65\x6e\x74\x65\x72\x3b\x20\x72\x69\x67\x68\x74\x4d\x61\x72\ \x67\x69\x6e\x3a\x20\x32\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x77\x69\x64\x74\x68\x3a\x20\x34\x36\x3b\x20\x68\x65\x69\ \x67\x68\x74\x3a\x20\x35\x34\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x6f\x6c\x6f\x72\x3a\x20\x22\x54\x72\x61\x6e\x73\x70\x61\x72\ \x65\x6e\x74\x22\x3b\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\ \x6f\x72\x3a\x20\x22\x47\x72\x61\x79\x22\x3b\x20\x72\x61\x64\x69\ \x75\x73\x3a\x20\x36\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\ \x2f\x20\x43\x6c\x69\x63\x6b\x69\x6e\x67\x20\x69\x6e\x20\x68\x65\ \x72\x65\x20\x73\x65\x74\x73\x20\x74\x68\x65\x20\x73\x74\x61\x74\ \x65\x20\x74\x6f\x20\x27\x6d\x69\x64\x64\x6c\x65\x52\x69\x67\x68\ \x74\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4d\x6f\x75\x73\x65\ \x41\x72\x65\x61\x20\x7b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\ \x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x3b\x20\x6f\x6e\x43\ \x6c\x69\x63\x6b\x65\x64\x3a\x20\x70\x61\x67\x65\x2e\x73\x74\x61\ \x74\x65\x20\x3d\x20\x27\x6d\x69\x64\x64\x6c\x65\x52\x69\x67\x68\ \x74\x27\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\ \x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x69\x64\x3a\x20\x62\x6f\x74\x74\x6f\x6d\x4c\x65\ \x66\x74\x52\x65\x63\x74\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x61\x6e\x63\x68\x6f\x72\x73\x20\x7b\x20\x6c\x65\x66\x74\x3a\x20\ \x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x3b\x20\x62\x6f\x74\ \x74\x6f\x6d\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x62\x6f\x74\x74\ \x6f\x6d\x3b\x20\x6c\x65\x66\x74\x4d\x61\x72\x67\x69\x6e\x3a\x20\ \x31\x30\x3b\x20\x62\x6f\x74\x74\x6f\x6d\x4d\x61\x72\x67\x69\x6e\ \x3a\x20\x32\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\ \x69\x64\x74\x68\x3a\x20\x34\x36\x3b\x20\x68\x65\x69\x67\x68\x74\ \x3a\x20\x35\x34\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\ \x6f\x72\x3a\x20\x22\x54\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\x74\ \x22\x3b\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\x6f\x72\x3a\ \x20\x22\x47\x72\x61\x79\x22\x3b\x20\x72\x61\x64\x69\x75\x73\x3a\ \x20\x36\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x43\ \x6c\x69\x63\x6b\x69\x6e\x67\x20\x69\x6e\x20\x68\x65\x72\x65\x20\ \x73\x65\x74\x73\x20\x74\x68\x65\x20\x73\x74\x61\x74\x65\x20\x74\ \x6f\x20\x27\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x27\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\ \x20\x7b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x3b\x20\x6f\x6e\x43\x6c\x69\x63\x6b\ \x65\x64\x3a\x20\x70\x61\x67\x65\x2e\x73\x74\x61\x74\x65\x20\x3d\ \x20\x27\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\x74\x27\x20\x7d\x0a\ \x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x73\x74\x61\x74\x65\ \x73\x3a\x20\x5b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\ \x21\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\ \x49\x6e\x20\x73\x74\x61\x74\x65\x20\x27\x6d\x69\x64\x64\x6c\x65\ \x52\x69\x67\x68\x74\x27\x2c\x20\x6d\x6f\x76\x65\x20\x74\x68\x65\ \x20\x69\x6d\x61\x67\x65\x20\x74\x6f\x20\x6d\x69\x64\x64\x6c\x65\ \x52\x69\x67\x68\x74\x52\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x53\x74\x61\x74\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x6e\x61\x6d\x65\x3a\x20\x22\x6d\x69\x64\ \x64\x6c\x65\x52\x69\x67\x68\x74\x22\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x50\x72\x6f\x70\x65\x72\x74\x79\x43\x68\ \x61\x6e\x67\x65\x73\x20\x7b\x20\x74\x61\x72\x67\x65\x74\x3a\x20\ \x75\x73\x65\x72\x49\x63\x6f\x6e\x3b\x20\x78\x3a\x20\x6d\x69\x64\ \x64\x6c\x65\x52\x69\x67\x68\x74\x52\x65\x63\x74\x2e\x78\x3b\x20\ \x79\x3a\x20\x6d\x69\x64\x64\x6c\x65\x52\x69\x67\x68\x74\x52\x65\ \x63\x74\x2e\x79\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\ \x2c\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x49\x6e\ \x20\x73\x74\x61\x74\x65\x20\x27\x62\x6f\x74\x74\x6f\x6d\x4c\x65\ \x66\x74\x27\x2c\x20\x6d\x6f\x76\x65\x20\x74\x68\x65\x20\x69\x6d\ \x61\x67\x65\x20\x74\x6f\x20\x62\x6f\x74\x74\x6f\x6d\x4c\x65\x66\ \x74\x52\x65\x63\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\x74\ \x61\x74\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x6e\x61\x6d\x65\x3a\x20\x22\x62\x6f\x74\x74\x6f\x6d\x4c\ \x65\x66\x74\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x50\x72\x6f\x70\x65\x72\x74\x79\x43\x68\x61\x6e\x67\x65\x73\ \x20\x7b\x20\x74\x61\x72\x67\x65\x74\x3a\x20\x75\x73\x65\x72\x49\ \x63\x6f\x6e\x3b\x20\x78\x3a\x20\x62\x6f\x74\x74\x6f\x6d\x4c\x65\ \x66\x74\x52\x65\x63\x74\x2e\x78\x3b\x20\x79\x3a\x20\x62\x6f\x74\ \x74\x6f\x6d\x4c\x65\x66\x74\x52\x65\x63\x74\x2e\x79\x20\x20\x7d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x2f\x2f\x20\x21\x5b\x30\x5d\x0a\x20\x20\x20\x20\x5d\ \x0a\x7d\x0a\ \x00\x00\x08\xe9\ \x00\ \x00\x20\xce\x78\x9c\xe5\x59\x51\x73\xda\xb8\x16\x7e\xe7\x57\x9c\ \xc9\xed\x4c\x9b\x1d\x4a\xd2\x24\xed\x76\x61\xfa\x60\x8c\x43\x3c\ \x03\x98\xd8\xa6\xb9\x99\x9d\x9d\x1d\x61\x04\xe8\xc6\x58\x54\x96\ \x93\x72\x3b\xfd\xef\x7b\x24\xdb\x04\x1b\xbb\x1b\xdf\xd9\x3e\x5d\ \xc8\x10\x7c\x24\x7d\xe7\x3b\x9f\xce\x91\x84\x7d\xf6\xcb\x3f\xf8\ \x6a\xe9\x3f\x30\xf9\x76\x27\xd8\x6a\x2d\xe1\x8d\x79\x0a\x17\xe7\ \xef\x2e\x61\xc0\x56\x8c\xc0\x34\x0c\x80\x44\x8b\x33\x2e\x80\xc9\ \x18\xe2\x64\x1e\xb3\x05\x23\x62\xf7\xe6\x2d\xa3\xf1\x69\x27\x1d\ \x1c\x49\x12\xc8\x2e\xac\xa5\xdc\x76\xcf\xce\x9e\x9e\x9e\x3a\x5f\ \xe4\xdb\xad\xe0\xff\xa1\x81\xec\x70\xb1\x3a\x0b\xe9\x8a\x84\x99\ \x2f\x7f\xcd\x62\x58\xb2\x90\x02\xfe\xdf\x12\x21\x81\x2f\x41\xae\ \x29\xd0\xaf\x64\xb3\x0d\x69\x9c\x5f\xdf\x4a\xf0\x39\x0f\x1f\x98\ \xec\x64\x43\x5f\xdd\xfa\x7f\xf6\xad\xa1\x3d\xf9\x73\x64\x9b\xd6\ \xc4\xb3\xba\x7d\x6f\xf0\x4a\xb5\xdc\xf3\x04\x36\x64\x07\x49\x4c\ \x71\x6c\xee\x20\x89\x16\x54\x68\x2c\x49\xc5\x66\x0f\x8c\x83\x20\ \x64\x01\x8d\xb0\x33\xc1\xae\x3c\x0c\xf9\x53\xdc\xcd\x9c\x9c\xb8\ \x74\xc1\x62\x29\xd8\x3c\x91\x8c\x47\x2a\x7c\x0d\xcb\x22\x88\x79\ \x22\x02\xaa\x2d\x73\x16\xa1\x0a\x38\x16\x71\xdb\xf0\xc4\xe4\x1a\ \x50\x23\xf5\x9f\x27\x52\xc1\x6c\xf8\x82\x2d\x59\x40\x14\x46\x1b\ \x88\xa0\xb0\x45\x0e\x4c\x4a\xba\x00\x94\xe6\x91\x2d\xf0\x8b\x5c\ \x13\xa9\x29\xa5\x1c\x58\xb4\x82\x80\x47\x0b\xa6\x06\xc5\x6a\x90\ \x46\xa2\x52\x71\x03\x80\x5f\xa0\xc8\x4d\x47\x94\x91\x0a\xf8\x82\ \xc2\x26\x89\x25\x08\x2a\x09\x92\x55\xb0\x64\xce\x1f\x55\x53\x36\ \xbb\x29\x0a\x40\xc4\x25\x86\xdf\x4e\x95\x0a\x11\x50\xe1\x1c\x3a\ \x8e\x16\x25\x56\xe8\x35\x08\x09\xdb\x50\xd1\xa9\xa3\x82\x2e\x0f\ \x44\xc9\xa9\x60\xa8\x8b\x24\xa0\x3f\x8b\x0d\x7a\xcd\x61\x54\x97\ \x05\x0f\x92\x0d\xc5\x74\xcc\x67\x4e\x25\x2e\xc7\x16\x81\xd9\x81\ \x39\xc0\x48\x18\x3f\xab\xaf\x67\x0d\x1b\x73\x84\xc3\x78\xf6\x61\ \x4e\x28\xd3\xe3\x15\x7c\x44\x36\x54\x91\x2b\xd4\x86\x2e\x0c\xaf\ \x54\x18\x18\xd4\xf3\x90\x38\x77\x80\x43\x55\x67\x8c\x2d\xf5\xc3\ \x45\xac\xb3\x76\x4e\x55\x86\x61\x94\x1c\x68\xb4\x40\x2b\x55\xc9\ \x84\x3c\x37\x5c\x52\x48\x25\xc4\x71\x98\xcc\xec\x91\x2e\x72\xb4\ \x25\xb6\xa7\xa2\xc5\x7c\x29\x9f\x54\x8a\x65\xf9\x07\xf1\x96\x06\ \x2a\xfb\x70\x2c\x53\x69\x29\x54\xde\x45\x69\x06\xc6\x71\x16\x5e\ \x5e\x8f\x37\xb6\x07\x9e\x73\xed\xdf\x19\xae\x05\xf8\x7d\xea\x3a\ \x9f\xed\x81\x35\x80\xfe\x3d\x36\x5a\x60\x3a\xd3\x7b\xd7\x1e\xde\ \xf8\x70\xe3\x8c\x06\x96\xeb\x81\x31\x19\xa0\x75\xe2\xbb\x76\x7f\ \xe6\x3b\xae\xa7\xcb\xc6\xf0\x70\xf0\x89\x6e\x33\x26\xf7\x60\xfd\ \x7b\xea\x5a\x9e\x07\x8e\x0b\xf6\x78\x3a\xb2\x11\x0f\x1d\xb8\xc6\ \xc4\xb7\x2d\xaf\x0d\xf6\xc4\x1c\xcd\x06\xf6\x64\xd8\x06\xc4\x80\ \x89\xe3\x2b\x90\x91\x3d\xb6\x7d\xec\xe9\x3b\x6d\xed\xfa\x78\x24\ \x38\xd7\x30\xb6\x5c\xf3\x06\x2f\x8d\xbe\x3d\xb2\xfd\x7b\xed\xf2\ \xda\xf6\x27\xca\xdd\xb5\xe3\x2a\x20\x03\xa6\x86\xeb\xdb\xe6\x6c\ \x64\xb8\x30\x9d\xb9\x53\xc7\xb3\x40\xc5\x37\xb0\x3d\x73\x64\xd8\ \x63\x6b\xd0\x41\x0e\xe8\x17\xac\xcf\xd6\xc4\x07\xef\xc6\x18\x8d\ \x8a\xe1\x2a\x1c\xe7\x6e\x62\xb9\x2a\x86\xc3\x70\xa1\x6f\x21\x53\ \xa3\x3f\xb2\x94\x3b\x1d\xed\xc0\x76\x2d\xd3\x57\x61\x3d\x7f\x33\ \x51\x44\x24\x39\x6a\x2b\x20\x6f\x6a\x99\x36\x7e\x47\x5d\x2c\x0c\ \xca\x70\xef\xdb\x19\xac\x67\xdd\xce\xb0\x1f\x36\xc2\xc0\x18\x1b\ \x43\x8c\xf1\xcd\xdf\xab\x83\x93\x64\xce\x5c\x6b\xac\xb8\xa3\x24\ \xde\xac\xef\xf9\xb6\x3f\xf3\x2d\x18\x3a\xce\x40\xcb\xee\x59\xee\ \x67\x5c\x26\xbd\x1e\x8c\x1c\x4f\x0b\x37\xf3\x2c\x4d\x66\x60\xf8\ \x86\x76\x8f\x28\x28\x1c\xf6\xc0\xef\xfd\x99\x67\x6b\x09\xed\x89\ \x6f\xb9\xee\x6c\xea\xdb\xce\xe4\x14\xe7\xfc\x0e\x15\x42\xa6\x06\ \x8e\x1e\x68\xad\x9d\x89\x8a\x39\xcd\x1d\xcb\x71\xef\x15\xb4\xd2\ \x43\xcf\x46\x1b\xee\x6e\x2c\xb4\xbb\x4a\x5e\xad\x9a\xa1\xe4\xf0\ \x50\x3d\xd3\x3f\xec\x86\x2e\x51\x4c\x1d\xd8\x73\xbc\x30\xb1\x86\ \x23\x7b\x68\x4d\x4c\x4b\x75\x70\x14\xd0\x9d\xed\x59\xa7\x38\x79\ \xb6\xa7\x3a\xd8\xda\x39\x66\x04\xba\x9d\xe9\xd8\xd5\xa4\x21\x37\ \x3d\x5d\xd7\xc5\x74\x6e\xeb\xd9\x05\xfb\x1a\x8c\xc1\x67\x5b\xf1\ \xcf\xfa\x63\x3e\x78\x76\x96\x3e\x5a\x3e\xf3\x26\x53\xbf\x73\x72\ \xb0\xd9\x58\x93\x41\xbe\xd5\xbc\x4a\xcd\xff\xdc\xeb\xac\xd5\x62\ \x9b\x2d\xc7\xfd\xef\x56\xde\x26\x2c\x78\x80\x8b\xce\x79\xab\xe5\ \xe2\x9e\x49\xa2\x15\xee\x5e\xdf\x5a\xaa\xca\xd9\xa2\x8b\x65\x8d\ \xab\xc2\x93\xbe\x7c\x62\x0b\xb9\xee\xc2\xe5\xc5\x79\x0f\xd6\x54\ \x2d\xa3\x5d\xb8\xfa\x88\x17\x01\x0f\xb9\xe8\xc2\xc9\xbf\x2e\x2e\ \xd5\xfb\xa4\xa5\xbb\xe3\xda\x81\x45\x2f\x77\xf0\x48\x04\x50\x12\ \xe3\xea\x69\x26\xe2\x91\x76\xe1\x77\x38\xef\x5c\xb4\xf3\x8f\x77\ \x97\xea\xf3\xc3\xfb\xbd\xe1\x63\x5b\x8f\xff\xd1\x0b\xfb\x5f\x5c\ \xa9\xbe\xbf\x7d\xd4\x9f\x1a\xe2\x37\x84\x78\x87\x7f\xf0\x47\x4a\ \x60\x84\x6b\xea\x18\xb7\xa6\x30\x0b\x27\x0f\x29\xe5\xe2\xef\xb6\ \xb8\x3a\xe6\x76\xd5\xd7\x0a\xa9\x5a\xc0\xe1\x9b\x5e\x39\x31\x1e\ \x4b\x77\xec\x8c\x58\x44\x89\x38\xe9\x81\xc4\x21\x5d\x28\x58\x7b\ \x30\x27\x61\x68\x66\x02\x0c\x88\x78\xc0\xbd\xe9\x04\xbe\xbf\x08\ \xd8\x8e\x6e\x13\xb2\x28\x03\xa7\xd6\x22\xb0\x8d\x3b\x12\x89\x1a\ \x40\x3b\x89\xac\xc2\xce\xcc\x45\x70\x8f\x84\x1b\x1e\xbd\x9c\x74\ \x0d\xf6\xbe\xa1\x88\xee\x73\xdc\xfe\x78\x03\xde\xd5\xaa\xec\x1b\ \x8e\x15\x77\x04\x26\x2d\x7d\x39\x7f\x33\x99\xb3\xe0\x98\xbd\x36\ \x17\xd1\x87\x3c\x6c\xa2\x78\x25\x70\x6e\x2f\x22\xdf\x53\x75\xa0\ \x68\xa4\x79\x0d\xed\x6a\xfc\x29\x25\xc1\x7a\x9a\x2c\x97\x8d\x84\ \xaf\x0b\xa0\x52\x1c\x75\x98\x96\x61\x03\xdd\x71\xf6\x84\xac\xcc\ \x76\x21\x8b\xd0\x8e\x08\xd6\xac\x61\xae\x1f\x43\xe7\xf6\x92\x32\ \x89\xd8\x36\x61\x5d\x87\xfe\xdc\x52\xaa\xa6\x10\x4f\x7b\xfd\x30\ \x79\xb1\x8b\x3c\xb3\x2b\x03\xa8\x94\xc7\x5c\xa3\x49\x50\x3c\xb7\ \x35\x11\x9f\x45\x95\xe2\xa3\xb9\x88\x3e\xc2\xc3\xed\x50\x50\xfa\ \xe2\x15\x41\xeb\x50\x81\x9e\xdb\x4b\xfa\x50\xd2\x08\x3d\xd3\xb9\ \x92\x7d\xb5\x07\xb5\x26\x34\x0d\xa0\x46\xa0\xe7\x96\x52\x82\x86\ \x78\x1a\x7e\x79\x04\x1e\xee\x15\xc7\xec\x95\xf5\x98\x79\x53\x7d\ \x90\x62\x15\x7c\x66\x2e\x95\x2c\x25\x61\x23\xdd\xab\x89\x57\x63\ \x27\xe2\x4b\xc2\xd9\xcb\x73\x52\x6b\x5b\x43\xbd\x4a\x1c\x4f\x52\ \x1a\x36\x29\x2c\x3b\xb2\xbe\x6e\xf9\x31\x7d\x65\x2d\x41\x3f\xec\ \x1a\x56\x6c\x15\x72\x66\x2e\x42\xbb\x7c\x47\x1a\xb2\xae\x81\xdf\ \x37\x14\x1d\x8c\xf1\xb7\x70\xb2\x69\xbc\xe0\xd4\x04\x50\xa5\xce\ \x98\x2d\x22\x75\xda\x6b\x16\x85\xc9\x44\xd5\x26\x8b\xd6\xd2\x62\ \xc6\x05\x4e\x76\xf8\xd0\x64\x9f\xad\x80\xce\xcc\x45\xec\x3e\x8b\ \xbf\x34\x54\xbe\x9a\x76\x25\xba\xcb\xe3\x5d\x5f\xf0\xa7\x66\xeb\ \x4c\x0d\xf9\x2a\x69\x3c\xfc\x89\xdf\xcc\x03\x4e\x5f\x48\x62\x59\ \x75\x4e\xc8\x1a\x2a\x96\x4a\x3c\xe4\xd0\xc8\xe5\x4d\xf6\xdb\x1a\ \x2f\xcf\x2d\xe5\x0d\x8b\xe3\x6f\x04\xdc\x17\x9b\x15\x41\x5d\x28\ \x75\x6e\x3c\xb2\x58\x84\xb4\xf9\x94\xd4\x47\x53\x23\x5b\xc3\x39\ \xe9\x93\xe0\xe1\x38\x0a\x65\x2d\x15\x1a\x11\xfc\xe5\x07\x71\xa4\ \x57\x05\x9c\x99\x4b\x7b\x3a\x79\xa4\xea\x86\x24\x96\x70\xbc\x6e\ \x34\x09\xd5\xdc\x2b\x9d\x8c\x11\x6b\x87\x45\xd1\x6c\x21\xaa\x89\ \xa1\x4a\x9f\x21\x61\x51\x3c\xe7\xa2\xc9\xaf\x89\x3e\x4f\xa2\xa0\ \x6a\x8b\x49\x1b\x4a\x09\xc4\xc2\x47\x2a\x1a\x4c\x6c\x25\x78\x6e\ \x2f\x95\x1a\xdb\x0c\x05\xd9\x35\x13\xbf\x06\xbf\x8e\xbe\x2a\xb1\ \x26\x4e\x52\x9d\xeb\x14\xaa\x89\x43\x9d\x51\x9a\x3a\xea\xd3\xff\ \x32\x7a\xf4\x13\x3a\xb5\xd6\x9e\x6d\x7b\x19\xf8\xf7\xf4\xe7\xbc\ \xc9\x37\x5b\x1e\x69\xf4\xc2\xcf\x79\xfc\x81\x4f\x57\xc8\xa7\xb5\ \xb7\xda\x92\x6e\x0e\x3a\xa9\x57\x7e\xbf\xe2\xfd\x87\x5e\x7e\x1f\ \x23\xbd\xb3\xd1\xd1\x57\xad\x42\x67\x9f\x7e\x55\x21\x48\xfc\xd7\ \xd5\x81\xf4\x80\x44\xc1\x9a\x8b\xb8\x13\xa0\x7f\x2a\xec\xa8\xab\ \x1e\x1f\x50\x75\x2c\xcc\x6f\x7e\xdc\xad\x59\xba\xbe\x15\xa0\xca\ \xb7\x54\x0e\x5f\x8a\x7c\x1c\x72\xf9\xee\xe0\x0e\xca\xbb\x0b\xf5\ \xc6\xd0\xbf\x76\xe1\xf2\xf0\x3e\xcb\x33\xef\xab\x0f\x47\x48\x58\ \x13\x58\xdc\x9d\x3d\xca\xe5\x95\x7a\x23\x4a\xd6\x90\x8d\x44\x47\ \x82\xe0\x69\x21\xc6\xaf\x17\x2a\x26\xc9\x48\xc8\xf4\x5c\x74\x41\ \x8a\x84\x1e\x01\xe7\x61\x63\x55\xe0\x22\x48\x42\x53\x87\x9f\x07\ \x5f\x32\x17\x46\xff\x0f\x3a\x5c\xd4\xe8\x70\x38\x51\xf0\x16\x7e\ \xfd\xf0\xff\x23\x8b\xc0\xf6\x7d\x2e\xec\xe3\xb8\x7a\xaf\xde\x27\ \x7f\x17\x6f\x9a\x91\xe5\x68\x2f\x8e\x86\x55\x8a\xf9\x93\x35\x39\ \x1a\x3e\xe6\x58\xf2\x86\xa0\xa4\x42\x09\xf5\xe2\x91\x19\xb2\xe0\ \x81\xa2\x28\x6c\x09\x6f\x94\x30\x9d\x58\x62\xd9\xc3\xa7\x4f\xf0\ \xfa\xf5\x29\x1c\x5a\xe0\x44\x3f\xe5\xc1\xd8\x69\x18\xd3\x62\xd3\ \xeb\xd7\x95\xf8\x39\xfd\x25\x0b\xc3\x9c\xf4\x0f\x3b\x6e\x88\x58\ \xe1\x76\xd4\x85\xb7\xef\xe1\xec\x0c\xc6\xe4\x81\x1e\x04\x31\x67\ \xab\x95\x7e\x72\x43\xd2\xa7\x61\x22\x9f\xe8\xb6\x7a\x0c\x43\xc3\ \xe5\x11\xf6\xf7\x63\x4d\x34\xe5\x18\xba\xe0\x69\xee\xd5\xc2\x64\ \x0b\x6d\x1a\x70\x65\x8f\x69\x76\x23\x16\x97\xd6\x68\x85\x78\xb8\ \xb2\x21\x77\x2a\x0f\xd2\xab\xa2\xc4\xb2\x2c\xda\xaf\xcd\x07\x2b\ \xfd\x0f\x28\x4b\x41\xa2\x38\x7d\x78\xd6\x05\x7f\x7f\x51\xc3\x7d\ \x92\x6c\xe6\x54\x18\x11\xdb\xa4\x4f\xcd\xbe\xe5\x37\x8d\x19\xc5\ \xe1\x27\x5f\xd5\x04\xa6\x5b\x45\xba\x6f\xa8\xcf\xbd\x69\xae\x77\ \x8f\xec\x96\x32\x86\xd3\x7f\xbe\x7e\xa3\x44\x39\xed\xc1\x22\x11\ \x1a\x18\x93\xf8\xfc\xfc\xbc\x22\x02\xf5\xd2\xd1\xd5\x72\xd0\x32\ \xfc\x74\x1e\xdf\x5b\xd5\x57\x85\x0d\xf0\x5a\x15\x00\x99\x17\x16\ \x8b\x1f\xa6\xad\x7a\xd8\x87\xd7\x37\x59\x7d\x87\x64\xc7\x13\xd9\ \x49\xcb\x7d\xdf\x09\xc3\x4f\x36\xe5\x09\x52\x6b\x4f\xda\xbd\xb4\ \x5c\x6d\xa9\x7a\x96\x89\x22\x6d\xd4\x8d\xf5\xc2\xbd\xf4\xde\x7e\ \x27\x7e\xde\x93\xeb\x42\x59\xe2\xb9\x42\xab\x5d\xa5\x97\xee\x71\ \xb0\xc7\x63\xb9\xeb\xa7\x9f\x9f\xb0\xd2\x4b\x07\x8a\xd3\x02\x3d\ \x41\x65\x22\xa2\xc3\x67\x0d\xbd\x56\xa9\xed\xf7\x3f\x7a\x19\x8f\ \xef\xad\xbf\x00\x85\x55\xe9\x23\ \x00\x00\x0e\x0c\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\ \x3a\x20\x77\x69\x6e\x64\x6f\x77\x0a\x20\x20\x20\x20\x77\x69\x64\ \x74\x68\x3a\x20\x33\x32\x30\x0a\x20\x20\x20\x20\x68\x65\x69\x67\ \x68\x74\x3a\x20\x34\x38\x30\x0a\x0a\x20\x20\x20\x20\x43\x61\x6e\ \x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\ \x3a\x20\x63\x61\x6e\x76\x61\x73\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\ \x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x74\x69\x61\x6c\x69\x61\x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\ \x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x50\x61\x69\x6e\ \x74\x3a\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x76\x61\x72\x20\x63\x6f\x6e\x74\x65\x78\x74\x20\x3d\x20\x63\ \x61\x6e\x76\x61\x73\x2e\x67\x65\x74\x43\x6f\x6e\x74\x65\x78\x74\ \x28\x22\x32\x64\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x6f\x6e\x74\x65\x78\x74\x2e\x63\x6c\x65\x61\x72\ \x52\x65\x63\x74\x28\x30\x2c\x20\x30\x2c\x20\x77\x69\x64\x74\x68\ \x2c\x20\x68\x65\x69\x67\x68\x74\x29\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x65\x78\x74\x2e\x73\x74\ \x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x20\x3d\x20\x22\x62\x6c\x61\ \x63\x6b\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x6f\x6e\x74\x65\x78\x74\x2e\x70\x61\x74\x68\x20\x3d\x20\x6d\ \x6f\x74\x69\x6f\x6e\x50\x61\x74\x68\x2e\x70\x61\x74\x68\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x65\ \x78\x74\x2e\x73\x74\x72\x6f\x6b\x65\x28\x29\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\ \x20\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x50\x61\x74\ \x68\x49\x6e\x74\x65\x72\x70\x6f\x6c\x61\x74\x6f\x72\x20\x7b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x6d\x6f\x74\x69\ \x6f\x6e\x50\x61\x74\x68\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x61\x74\x68\x3a\x20\x50\x61\x74\x68\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x61\x72\x74\x58\x3a\ \x20\x35\x30\x3b\x20\x73\x74\x61\x72\x74\x59\x3a\x20\x35\x30\x0a\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x50\x61\x74\ \x68\x43\x75\x62\x69\x63\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x78\x3a\x20\x77\x69\x6e\x64\ \x6f\x77\x2e\x77\x69\x64\x74\x68\x20\x2d\x20\x35\x30\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x79\x3a\ \x20\x77\x69\x6e\x64\x6f\x77\x2e\x68\x65\x69\x67\x68\x74\x20\x2d\ \x20\x35\x30\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x31\x58\x3a\x20\ \x78\x3b\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x31\x59\x3a\x20\x35\x30\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x63\x6f\x6e\x74\x72\x6f\x6c\x32\x58\x3a\x20\x35\x30\x3b\x20\ \x63\x6f\x6e\x74\x72\x6f\x6c\x32\x59\x3a\x20\x79\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x43\x68\x61\x6e\x67\x65\ \x64\x3a\x20\x63\x61\x6e\x76\x61\x73\x2e\x72\x65\x71\x75\x65\x73\ \x74\x50\x61\x69\x6e\x74\x28\x29\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\x65\x71\x75\ \x65\x6e\x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\ \x6f\x6e\x20\x70\x72\x6f\x67\x72\x65\x73\x73\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x75\x6e\x6e\x69\x6e\ \x67\x3a\x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x6c\x6f\x6f\x70\x73\x3a\x20\x2d\x31\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x50\x61\x75\x73\x65\x41\ \x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x64\x75\x72\x61\x74\ \x69\x6f\x6e\x3a\x20\x31\x30\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\x72\x41\x6e\ \x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x70\x72\ \x6f\x67\x72\x65\x73\x73\x41\x6e\x69\x6d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x75\x6e\x6e\x69\ \x6e\x67\x3a\x20\x66\x61\x6c\x73\x65\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x3a\x20\ \x30\x3b\x20\x74\x6f\x3a\x20\x31\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x75\x72\x61\x74\x69\x6f\ \x6e\x3a\x20\x32\x30\x30\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x65\x61\x73\x69\x6e\x67\x2e\x74\ \x79\x70\x65\x3a\x20\x45\x61\x73\x69\x6e\x67\x2e\x49\x6e\x51\x75\ \x61\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\ \x0a\x20\x20\x20\x20\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x0a\x20\x20\ \x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x62\x6f\x78\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x35\x30\ \x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x35\x30\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x77\x69\x64\x74\ \x68\x3a\x20\x31\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x74\ \x69\x61\x6c\x69\x61\x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x62\x69\x6e\x64\x20\ \x6f\x75\x72\x20\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x20\x74\ \x6f\x20\x66\x6f\x6c\x6c\x6f\x77\x20\x74\x68\x65\x20\x70\x61\x74\ \x68\x20\x61\x73\x20\x70\x72\x6f\x67\x72\x65\x73\x73\x20\x63\x68\ \x61\x6e\x67\x65\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x78\x3a\ \x20\x6d\x6f\x74\x69\x6f\x6e\x50\x61\x74\x68\x2e\x78\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x79\x3a\x20\x6d\x6f\x74\x69\x6f\x6e\x50\ \x61\x74\x68\x2e\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x6f\ \x74\x61\x74\x69\x6f\x6e\x3a\x20\x6d\x6f\x74\x69\x6f\x6e\x50\x61\ \x74\x68\x2e\x61\x6e\x67\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3a\x20\x54\x72\x61\x6e\ \x73\x6c\x61\x74\x65\x20\x7b\x20\x78\x3a\x20\x2d\x62\x6f\x78\x2e\ \x77\x69\x64\x74\x68\x2f\x32\x3b\x20\x79\x3a\x20\x2d\x62\x6f\x78\ \x2e\x68\x65\x69\x67\x68\x74\x2f\x32\x20\x7d\x0a\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x63\x65\x6e\x74\x65\x72\x49\x6e\x3a\x20\x70\x61\x72\x65\x6e\x74\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x65\x78\ \x74\x3a\x20\x22\x42\x6f\x78\x22\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x13\x5d\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x51\x74\x51\x75\x69\x63\x6b\x2e\x50\x61\x72\x74\ \x69\x63\x6c\x65\x73\x20\x32\x2e\x30\x0a\x0a\x49\x74\x65\x6d\x20\ \x7b\x0a\x20\x20\x20\x20\x69\x64\x3a\x20\x77\x69\x6e\x64\x6f\x77\ \x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x33\x32\x30\x3b\ \x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\x38\x30\x0a\x0a\x20\x20\ \x20\x20\x2f\x2f\x20\x4c\x65\x74\x27\x73\x20\x64\x72\x61\x77\x20\ \x74\x68\x65\x20\x73\x6b\x79\x2e\x2e\x2e\x0a\x20\x20\x20\x20\x52\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x20\x7b\x20\x6c\x65\x66\ \x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x3b\x20\ \x74\x6f\x70\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x74\x6f\x70\x3b\ \x20\x72\x69\x67\x68\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x72\ \x69\x67\x68\x74\x3b\x20\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\ \x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x67\x72\ \x61\x64\x69\x65\x6e\x74\x3a\x20\x47\x72\x61\x64\x69\x65\x6e\x74\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\ \x72\x61\x64\x69\x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x6f\ \x73\x69\x74\x69\x6f\x6e\x3a\x20\x30\x2e\x30\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x65\x71\x75\ \x65\x6e\x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\ \x6f\x6e\x20\x63\x6f\x6c\x6f\x72\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6c\ \x6f\x6f\x70\x73\x3a\x20\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\ \x49\x6e\x66\x69\x6e\x69\x74\x65\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x43\x6f\x6c\ \x6f\x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x66\x72\ \x6f\x6d\x3a\x20\x22\x44\x65\x65\x70\x53\x6b\x79\x42\x6c\x75\x65\ \x22\x3b\x20\x74\x6f\x3a\x20\x22\x23\x30\x45\x31\x35\x33\x33\x22\ \x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x35\x30\x30\x30\ \x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x43\x6f\x6c\x6f\x72\x41\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x20\x7b\x20\x66\x72\x6f\x6d\x3a\x20\x22\x23\ \x30\x45\x31\x35\x33\x33\x22\x3b\x20\x74\x6f\x3a\x20\x22\x44\x65\ \x65\x70\x53\x6b\x79\x42\x6c\x75\x65\x22\x3b\x20\x64\x75\x72\x61\ \x74\x69\x6f\x6e\x3a\x20\x35\x30\x30\x30\x20\x7d\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x72\x61\x64\x69\x65\x6e\ \x74\x53\x74\x6f\x70\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\ \x3a\x20\x31\x2e\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x53\x65\x71\x75\x65\x6e\x74\x69\x61\x6c\ \x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x6f\x6e\x20\x63\x6f\x6c\ \x6f\x72\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x6c\x6f\x6f\x70\x73\x3a\x20\ \x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\x69\x6e\x69\ \x74\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x43\x6f\x6c\x6f\x72\x41\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x20\x7b\x20\x66\x72\x6f\x6d\x3a\x20\x22\x53\ \x6b\x79\x42\x6c\x75\x65\x22\x3b\x20\x74\x6f\x3a\x20\x22\x23\x34\ \x33\x37\x32\x38\x34\x22\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\ \x3a\x20\x35\x30\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x43\x6f\x6c\ \x6f\x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x66\x72\ \x6f\x6d\x3a\x20\x22\x23\x34\x33\x37\x32\x38\x34\x22\x3b\x20\x74\ \x6f\x3a\x20\x22\x53\x6b\x79\x42\x6c\x75\x65\x22\x3b\x20\x64\x75\ \x72\x61\x74\x69\x6f\x6e\x3a\x20\x35\x30\x30\x30\x20\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\ \x20\x20\x20\x20\x2f\x2f\x20\x74\x68\x65\x20\x73\x75\x6e\x2c\x20\ \x6d\x6f\x6f\x6e\x2c\x20\x61\x6e\x64\x20\x73\x74\x61\x72\x73\x0a\ \x20\x20\x20\x20\x49\x74\x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x70\x61\x72\x65\x6e\x74\ \x2e\x77\x69\x64\x74\x68\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\ \x32\x20\x2a\x20\x70\x61\x72\x65\x6e\x74\x2e\x68\x65\x69\x67\x68\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\x72\ \x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x6f\x6e\x20\x72\x6f\x74\ \x61\x74\x69\x6f\x6e\x20\x7b\x20\x66\x72\x6f\x6d\x3a\x20\x30\x3b\ \x20\x74\x6f\x3a\x20\x33\x36\x30\x3b\x20\x64\x75\x72\x61\x74\x69\ \x6f\x6e\x3a\x20\x31\x30\x30\x30\x30\x3b\x20\x6c\x6f\x6f\x70\x73\ \x3a\x20\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\x69\ \x6e\x69\x74\x65\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x49\ \x6d\x61\x67\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x73\x6f\x75\x72\x63\x65\x3a\x20\x22\x69\x6d\x61\x67\ \x65\x73\x2f\x73\x75\x6e\x2e\x70\x6e\x67\x22\x3b\x20\x79\x3a\x20\ \x31\x30\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x68\x6f\x72\x69\ \x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\ \x65\x6e\x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x72\x6f\x74\x61\x74\x69\x6f\x6e\x3a\x20\x2d\x33\x20\x2a\ \x20\x70\x61\x72\x65\x6e\x74\x2e\x72\x6f\x74\x61\x74\x69\x6f\x6e\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x49\x6d\x61\x67\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x73\x6f\x75\x72\x63\x65\x3a\x20\x22\ \x69\x6d\x61\x67\x65\x73\x2f\x6d\x6f\x6f\x6e\x2e\x70\x6e\x67\x22\ \x3b\x20\x79\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x68\x65\x69\x67\ \x68\x74\x20\x2d\x20\x37\x34\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\ \x72\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\ \x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x72\x6f\x74\x61\x74\x69\x6f\x6e\x3a\ \x20\x2d\x70\x61\x72\x65\x6e\x74\x2e\x72\x6f\x74\x61\x74\x69\x6f\ \x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x50\x61\x72\x74\x69\x63\x6c\x65\x53\x79\x73\x74\ \x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x69\x64\x3a\x20\x70\x61\x72\x74\x69\x63\x6c\x65\x73\x79\x73\ \x74\x65\x6d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x78\x3a\x20\x30\x3b\x20\x79\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\ \x68\x65\x69\x67\x68\x74\x2f\x32\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x77\x69\x64\x74\x68\x3b\x20\x68\x65\x69\x67\x68\x74\ \x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x68\x65\x69\x67\x68\x74\x2f\ \x32\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x49\x6d\ \x61\x67\x65\x50\x61\x72\x74\x69\x63\x6c\x65\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\ \x75\x72\x63\x65\x3a\x20\x22\x69\x6d\x61\x67\x65\x73\x2f\x73\x74\ \x61\x72\x2e\x70\x6e\x67\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x67\x72\x6f\x75\x70\x73\x3a\x20\ \x5b\x22\x73\x74\x61\x72\x22\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x23\x30\x30\x33\x33\x33\x33\x33\x33\x22\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x65\x71\x75\ \x65\x6e\x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\ \x6f\x6e\x20\x6f\x70\x61\x63\x69\x74\x79\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x6c\x6f\x6f\x70\x73\x3a\x20\x41\x6e\x69\x6d\x61\x74\x69\x6f\ \x6e\x2e\x49\x6e\x66\x69\x6e\x69\x74\x65\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\ \x75\x6d\x62\x65\x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\ \x20\x66\x72\x6f\x6d\x3a\x20\x30\x3b\x20\x74\x6f\x3a\x20\x31\x3b\ \x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x35\x30\x30\x30\x20\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\x72\x41\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x20\x7b\x20\x66\x72\x6f\x6d\x3a\x20\x31\x3b\ \x20\x74\x6f\x3a\x20\x30\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\ \x3a\x20\x35\x30\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x45\x6d\x69\x74\x74\x65\x72\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x67\ \x72\x6f\x75\x70\x3a\x20\x22\x73\x74\x61\x72\x22\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\ \x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x65\x6d\x69\x74\x52\x61\x74\x65\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x77\x69\x64\x74\x68\x20\x2f\x20\x35\x30\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6c\x69\ \x66\x65\x53\x70\x61\x6e\x3a\x20\x35\x30\x30\x30\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\ \x2f\x2f\x20\x2e\x2e\x2e\x61\x6e\x64\x20\x74\x68\x65\x20\x67\x72\ \x6f\x75\x6e\x64\x2e\x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\ \x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x63\x68\x6f\x72\x73\x20\x7b\x20\x6c\x65\x66\x74\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x3b\x20\x74\x6f\x70\x3a\x20\ \x70\x61\x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\ \x65\x6e\x74\x65\x72\x3b\x20\x72\x69\x67\x68\x74\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x72\x69\x67\x68\x74\x3b\x20\x62\x6f\x74\x74\ \x6f\x6d\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x62\x6f\x74\x74\x6f\ \x6d\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x67\x72\x61\x64\ \x69\x65\x6e\x74\x3a\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x72\x61\ \x64\x69\x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x6f\x73\x69\ \x74\x69\x6f\x6e\x3a\x20\x30\x2e\x30\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x65\x71\x75\x65\x6e\ \x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x6f\x6e\ \x20\x63\x6f\x6c\x6f\x72\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6c\x6f\x6f\ \x70\x73\x3a\x20\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\ \x66\x69\x6e\x69\x74\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x43\x6f\x6c\x6f\x72\ \x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x66\x72\x6f\x6d\ \x3a\x20\x22\x46\x6f\x72\x65\x73\x74\x47\x72\x65\x65\x6e\x22\x3b\ \x20\x74\x6f\x3a\x20\x22\x23\x30\x30\x31\x36\x30\x30\x22\x3b\x20\ \x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x35\x30\x30\x30\x20\x7d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x43\x6f\x6c\x6f\x72\x41\x6e\x69\x6d\x61\x74\ \x69\x6f\x6e\x20\x7b\x20\x66\x72\x6f\x6d\x3a\x20\x22\x23\x30\x30\ \x31\x36\x30\x30\x22\x3b\x20\x74\x6f\x3a\x20\x22\x46\x6f\x72\x65\ \x73\x74\x47\x72\x65\x65\x6e\x22\x3b\x20\x64\x75\x72\x61\x74\x69\ \x6f\x6e\x3a\x20\x35\x30\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x53\ \x74\x6f\x70\x20\x7b\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x3a\x20\ \x31\x2e\x30\x3b\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x44\x61\x72\ \x6b\x47\x72\x65\x65\x6e\x22\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x10\x5b\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x49\x74\ \x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\x3a\x20\x77\x69\x6e\ \x64\x6f\x77\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x33\ \x32\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\x38\x30\x0a\ \x0a\x20\x20\x20\x20\x2f\x2f\x20\x4c\x65\x74\x27\x73\x20\x64\x72\ \x61\x77\x20\x74\x68\x65\x20\x73\x6b\x79\x2e\x2e\x2e\x0a\x20\x20\ \x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x20\x7b\x20\ \x6c\x65\x66\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\ \x74\x3b\x20\x74\x6f\x70\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x74\ \x6f\x70\x3b\x20\x72\x69\x67\x68\x74\x3a\x20\x70\x61\x72\x65\x6e\ \x74\x2e\x72\x69\x67\x68\x74\x3b\x20\x62\x6f\x74\x74\x6f\x6d\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\ \x43\x65\x6e\x74\x65\x72\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x67\x72\x61\x64\x69\x65\x6e\x74\x3a\x20\x47\x72\x61\x64\x69\ \x65\x6e\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\ \x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x3a\x20\x30\x2e\x30\x3b\x20\ \x63\x6f\x6c\x6f\x72\x3a\x20\x22\x44\x65\x65\x70\x53\x6b\x79\x42\ \x6c\x75\x65\x22\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x53\x74\x6f\x70\x20\ \x7b\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x3a\x20\x31\x2e\x30\x3b\ \x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x4c\x69\x67\x68\x74\x53\x6b\ \x79\x42\x6c\x75\x65\x22\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x2f\x2f\ \x20\x2e\x2e\x2e\x61\x6e\x64\x20\x74\x68\x65\x20\x67\x72\x6f\x75\ \x6e\x64\x2e\x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\ \x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\ \x6f\x72\x73\x20\x7b\x20\x6c\x65\x66\x74\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x6c\x65\x66\x74\x3b\x20\x74\x6f\x70\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x3b\x20\x72\x69\x67\x68\x74\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x72\x69\x67\x68\x74\x3b\x20\x62\x6f\x74\x74\x6f\x6d\ \x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x62\x6f\x74\x74\x6f\x6d\x20\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x67\x72\x61\x64\x69\x65\ \x6e\x74\x3a\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x72\x61\x64\x69\ \x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\x20\x70\x6f\x73\x69\x74\x69\ \x6f\x6e\x3a\x20\x30\x2e\x30\x3b\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x46\x6f\x72\x65\x73\x74\x47\x72\x65\x65\x6e\x22\x20\x7d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x72\x61\x64\ \x69\x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\x20\x70\x6f\x73\x69\x74\ \x69\x6f\x6e\x3a\x20\x31\x2e\x30\x3b\x20\x63\x6f\x6c\x6f\x72\x3a\ \x20\x22\x44\x61\x72\x6b\x47\x72\x65\x65\x6e\x22\x20\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\ \x20\x20\x20\x20\x2f\x2f\x20\x54\x68\x65\x20\x73\x68\x61\x64\x6f\ \x77\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x73\x6d\x69\x6c\x65\x79\ \x20\x66\x61\x63\x65\x0a\x20\x20\x20\x20\x49\x6d\x61\x67\x65\x20\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\ \x73\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\ \x65\x72\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\ \x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x79\x3a\x20\x73\x6d\x69\x6c\x65\x79\x2e\x6d\x69\ \x6e\x48\x65\x69\x67\x68\x74\x20\x2b\x20\x35\x38\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x73\x6f\x75\x72\x63\x65\x3a\x20\x22\x69\x6d\ \x61\x67\x65\x73\x2f\x73\x68\x61\x64\x6f\x77\x2e\x70\x6e\x67\x22\ \x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x54\x68\x65\ \x20\x73\x63\x61\x6c\x65\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\ \x64\x65\x70\x65\x6e\x64\x73\x20\x6f\x6e\x20\x74\x68\x65\x20\x79\ \x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\ \x20\x73\x6d\x69\x6c\x65\x79\x20\x66\x61\x63\x65\x2e\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x73\x63\x61\x6c\x65\x3a\x20\x73\x6d\x69\ \x6c\x65\x79\x2e\x79\x20\x2a\x20\x30\x2e\x35\x20\x2f\x20\x28\x73\ \x6d\x69\x6c\x65\x79\x2e\x6d\x69\x6e\x48\x65\x69\x67\x68\x74\x20\ \x2d\x20\x73\x6d\x69\x6c\x65\x79\x2e\x6d\x61\x78\x48\x65\x69\x67\ \x68\x74\x29\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x49\ \x6d\x61\x67\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\ \x64\x3a\x20\x73\x6d\x69\x6c\x65\x79\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\x20\x6d\ \x61\x78\x48\x65\x69\x67\x68\x74\x3a\x20\x77\x69\x6e\x64\x6f\x77\ \x2e\x68\x65\x69\x67\x68\x74\x20\x2f\x20\x33\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\ \x20\x6d\x69\x6e\x48\x65\x69\x67\x68\x74\x3a\x20\x32\x20\x2a\x20\ \x77\x69\x6e\x64\x6f\x77\x2e\x68\x65\x69\x67\x68\x74\x20\x2f\x20\ \x33\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\ \x72\x73\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\ \x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x79\x3a\x20\x6d\x69\x6e\x48\x65\x69\x67\x68\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\x75\x72\x63\x65\ \x3a\x20\x22\x69\x6d\x61\x67\x65\x73\x2f\x66\x61\x63\x65\x2d\x73\ \x6d\x69\x6c\x65\x2e\x70\x6e\x67\x22\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x2f\x2f\x20\x41\x6e\x69\x6d\x61\x74\x65\x20\x74\x68\ \x65\x20\x79\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x2e\x20\x53\x65\ \x74\x74\x69\x6e\x67\x20\x6c\x6f\x6f\x70\x73\x20\x74\x6f\x20\x41\ \x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\x69\x6e\x69\x74\ \x65\x20\x6d\x61\x6b\x65\x73\x20\x74\x68\x65\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x2f\x2f\x20\x61\x6e\x69\x6d\x61\x74\x69\x6f\x6e\ \x20\x72\x65\x70\x65\x61\x74\x20\x69\x6e\x64\x65\x66\x69\x6e\x69\ \x74\x65\x6c\x79\x2c\x20\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x20\ \x69\x74\x20\x77\x6f\x75\x6c\x64\x20\x6f\x6e\x6c\x79\x20\x72\x75\ \x6e\x20\x6f\x6e\x63\x65\x2e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x53\x65\x71\x75\x65\x6e\x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\ \x69\x6f\x6e\x20\x6f\x6e\x20\x79\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x6c\x6f\x6f\x70\x73\x3a\x20\x41\x6e\ \x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\x69\x6e\x69\x74\x65\ \x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\ \x20\x4d\x6f\x76\x65\x20\x66\x72\x6f\x6d\x20\x6d\x69\x6e\x48\x65\ \x69\x67\x68\x74\x20\x74\x6f\x20\x6d\x61\x78\x48\x65\x69\x67\x68\ \x74\x20\x69\x6e\x20\x33\x30\x30\x6d\x73\x2c\x20\x75\x73\x69\x6e\ \x67\x20\x74\x68\x65\x20\x4f\x75\x74\x45\x78\x70\x6f\x20\x65\x61\ \x73\x69\x6e\x67\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\x72\ \x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\ \x3a\x20\x73\x6d\x69\x6c\x65\x79\x2e\x6d\x69\x6e\x48\x65\x69\x67\ \x68\x74\x3b\x20\x74\x6f\x3a\x20\x73\x6d\x69\x6c\x65\x79\x2e\x6d\ \x61\x78\x48\x65\x69\x67\x68\x74\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x61\x73\x69\x6e\x67\x2e\ \x74\x79\x70\x65\x3a\x20\x45\x61\x73\x69\x6e\x67\x2e\x4f\x75\x74\ \x45\x78\x70\x6f\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\ \x33\x30\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\ \x2f\x20\x54\x68\x65\x6e\x20\x6d\x6f\x76\x65\x20\x62\x61\x63\x6b\ \x20\x74\x6f\x20\x6d\x69\x6e\x48\x65\x69\x67\x68\x74\x20\x69\x6e\ \x20\x31\x20\x73\x65\x63\x6f\x6e\x64\x2c\x20\x75\x73\x69\x6e\x67\ \x20\x74\x68\x65\x20\x4f\x75\x74\x42\x6f\x75\x6e\x63\x65\x20\x65\ \x61\x73\x69\x6e\x67\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\ \x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x72\x6f\ \x6d\x3a\x20\x73\x6d\x69\x6c\x65\x79\x2e\x6d\x61\x78\x48\x65\x69\ \x67\x68\x74\x3b\x20\x74\x6f\x3a\x20\x73\x6d\x69\x6c\x65\x79\x2e\ \x6d\x69\x6e\x48\x65\x69\x67\x68\x74\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x61\x73\x69\x6e\x67\ \x2e\x74\x79\x70\x65\x3a\x20\x45\x61\x73\x69\x6e\x67\x2e\x4f\x75\ \x74\x42\x6f\x75\x6e\x63\x65\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\ \x6e\x3a\x20\x31\x30\x30\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x2f\x2f\x20\x54\x68\x65\x6e\x20\x70\x61\x75\x73\x65\ \x20\x66\x6f\x72\x20\x35\x30\x30\x6d\x73\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x50\x61\x75\x73\x65\x41\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x20\x7b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\ \x3a\x20\x35\x30\x30\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x21\x20\x5b\x30\ \x5d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x09\x81\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x08\x04\x00\x00\x00\x00\x60\xb9\x55\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\x1b\xaf\x01\x5e\x1a\ \x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd8\x07\x14\x0b\x14\ \x1b\xf7\x7c\xd9\x62\x00\x00\x00\x02\x62\x4b\x47\x44\x00\xff\x87\ \x8f\xcc\xbf\x00\x00\x09\x05\x49\x44\x41\x54\x68\xde\xed\xd8\x69\ \xc8\xa5\xe7\x59\x07\xf0\xdf\xfd\x6c\x67\x7d\xcf\xbb\xce\x64\x99\ \x4c\xc8\x58\xeb\x92\x8a\x26\xa1\x62\x09\xb5\x35\xd4\x98\x82\xb4\ \x1f\x04\xad\x52\x42\x2c\xd1\x4a\x70\x0b\x22\x16\x63\xc4\x2f\x6d\ \x15\x2d\x82\x1f\x84\x8a\xb6\x4a\xd5\x62\x15\xa9\x21\x69\x49\x2d\ \xd5\x42\x48\x71\xa5\x1a\x13\x0d\x66\x71\x32\x33\xc9\xcc\x64\xde\ \xfd\xbc\x67\x79\x76\x3f\xcc\x31\x52\x9d\x49\xde\x89\x29\x7e\x99\ \xeb\xe1\x7c\x79\x0e\xf7\x7d\xfd\x9f\xeb\xfa\xdf\xcb\xff\xcf\xd5\ \xb8\x1a\x57\xe3\x6a\xfc\x3f\x47\x78\x3d\x83\xda\x8b\xe3\xc2\xd7\ \xbc\x6a\x5f\xdf\x64\xe1\x0a\x13\x13\xd5\xf1\xb9\xe4\x1f\x7b\xff\ \xb2\x74\x7a\xe9\xc2\xb0\x88\xd7\xf2\xb7\xee\xbe\x7f\x6f\x50\xa4\ \x65\x54\xa9\xb4\xda\xf0\xf5\x01\xd0\x12\xc4\xcf\x77\x3e\x79\xed\ \x8b\xef\x7a\xeb\x3b\x06\xb7\xae\x9e\xb8\xb1\x77\xd4\x48\x61\xe2\ \xe5\x49\xfd\xcc\xce\x93\x4f\x3c\xb6\xf2\xa5\x1f\x3b\x1f\xe5\x6a\ \x4d\x78\x63\x01\xb4\x84\x2a\x7e\x62\xf0\x89\xdb\x8e\xdf\x77\xe2\ \xae\x1b\x46\xb1\x54\x22\x15\x2f\x7e\xb5\x5c\xae\x71\x6e\x3e\x79\ \xf4\xa9\xdf\x7b\xe0\xf1\x30\x55\x1d\x16\x44\x38\x54\xfa\xe8\x4c\ \xf7\x57\xbf\xe3\xe8\x2f\xbf\xf9\xae\x61\xd4\x59\x0c\x2b\xb5\x12\ \x41\x2a\x96\x20\x68\x35\x52\x71\xfb\xf4\xe3\xcf\x7f\xf8\x57\xbe\ \x62\xa6\x0e\xed\x1b\x00\xa0\x25\xf9\xdc\xea\x43\x3f\xfb\x96\xfb\ \x97\x06\x7d\x8d\x58\x2b\xd2\xd5\x6a\x05\xd1\x82\x19\x17\x39\x19\ \xa4\x96\xac\xd9\x6f\xbe\xfc\xfb\x37\x7c\xf8\x07\xcf\x26\xc5\x6b\ \x33\xe2\x35\xfe\x6f\x43\x93\xfe\xfa\x8d\x27\x7f\xfb\x9b\xbf\xaf\ \x27\x12\xf4\x0c\xc4\x2a\x41\x25\xb7\x64\x66\xa0\x2f\x57\xa0\x55\ \x29\x25\xd6\xad\x9a\xf9\xfc\x33\xfb\xf7\xfd\xc6\x57\xba\xf9\x6b\ \xb5\x22\xbc\x7a\xfa\x2a\xfd\xb9\x6f\xdb\xfb\xd4\xcd\x6f\x69\x0d\ \x45\x36\x44\xd8\xd4\x88\x55\x22\x43\x24\x46\x52\x85\x42\xa2\x42\ \x2b\xd3\x15\xa9\xfd\xdd\xee\xf6\x8f\xff\xda\xe7\xb3\xf9\xab\x43\ \x08\xaf\xfe\xf5\x3f\xff\xad\x27\x3f\x7b\xeb\x89\xc2\x48\xaa\xa7\ \x2f\xb6\x6f\x86\x46\x2c\xd2\x11\x49\xa4\x56\x64\x0a\x41\xa3\x95\ \x4b\xa4\x12\x91\xb1\xbf\x9f\x4c\xef\xfd\xd8\xc3\xd9\x3c\x34\x97\ \xcf\x12\xbd\x4a\xef\xe3\x8f\x1f\x7b\xea\x0f\x6e\x3c\x91\x4b\x34\ \x2a\x41\xee\x82\x03\xb5\xb9\x46\xad\x54\x2a\xb4\x22\x07\xa6\x22\ \x8d\xda\x5c\xa1\x35\x71\xa0\x94\x79\xd3\x20\xfc\xce\x2f\xdd\x2e\ \x7d\x35\x22\x44\x97\x67\xfe\x53\xa3\x87\x3e\x3a\xb8\x25\x53\x98\ \xa3\xb6\x63\xcf\x4c\xad\x46\xad\x52\xa9\x14\xa8\xe4\xa6\x5a\x53\ \x07\x6a\x13\x63\xb5\xa9\x5a\xe3\x88\x63\xcb\xe1\xe3\x7f\x71\x4c\ \xdc\x5e\x71\x05\xc2\x41\xe7\x43\xf7\xf4\xde\x97\x2b\x25\x06\x5a\ \x95\x4a\xae\x56\x29\xd5\x0b\x00\x13\x53\x07\x2a\xb5\x03\x63\xff\ \xe1\x05\xbb\x22\x7b\x66\xc6\xe6\x6a\xac\xba\xee\x4d\x0f\x7f\x64\ \x77\x78\xf9\x4a\x47\x97\x2b\xff\x27\x8f\xfb\x85\x83\x50\x68\x44\ \x12\x99\x44\xb5\x48\x5b\xab\x95\xaf\x70\xbe\x23\x12\xab\x9d\x93\ \xab\x5c\xb0\x6b\x2c\xd3\x55\x0b\x5a\x91\x9e\x63\xef\x7b\xe0\x7b\ \xa5\xed\x15\x55\x20\xec\x75\x1f\xf9\xc9\xce\xb5\x73\x53\xa5\xc8\ \x1a\x22\xa5\x5c\xb9\x80\x51\x2b\x1c\x31\x72\x54\x6c\x66\x26\xb6\ \xaf\x51\x29\xcd\xcd\xbd\x24\x95\x69\x04\x73\xb5\xe5\x10\x1e\xd8\ \x1e\x5d\xae\x06\x97\x7e\x1d\xfd\xc9\xf5\xd9\xdd\x5b\x32\xb1\x33\ \x1a\x17\xd4\xb6\x35\x6a\x3d\x41\xd0\xc8\x94\x4e\xdb\x56\x88\x05\ \xb5\xa0\x52\xa8\x34\x4a\x95\x1d\x07\x62\xad\x97\x75\x55\x62\x37\ \xdd\xfa\xe0\xbb\x2e\x57\x83\xe8\x52\x0d\x28\xb3\x87\x7e\xa8\xb3\ \x9a\x2b\xc5\x2a\xcf\x38\x6b\x2a\x52\x6b\x95\x1a\x41\xaa\x12\x4b\ \x44\x9e\xb5\x6b\xc9\xc8\x4c\xa1\x52\x89\x4d\x54\x2a\x73\xbb\xb6\ \xcc\x6c\xab\x94\x22\xe1\xde\x69\xff\xd2\x4b\x3e\xb9\x54\x03\x76\ \xfa\xf5\x7b\x27\x22\x91\x58\x50\x39\x27\xb2\x64\xae\xaf\x2f\x51\ \xcb\x75\xc5\x98\x58\x36\x34\x93\xdb\x95\x08\xe6\x0b\xf6\x4f\xb5\ \x26\xe6\xd6\x25\x0a\x67\x65\x86\xdf\xfd\x47\xc7\x3f\x38\x56\x1d\ \xae\x05\xf1\x9f\x1d\xeb\xde\x96\x8b\x16\x4f\x58\x6c\xbc\xdb\x26\ \xa8\xf5\xac\x18\xe8\x8a\x24\x3a\x2a\x5b\xce\xc8\xd5\x82\x4c\xe1\ \x82\xb3\x76\x8d\xed\x1b\x3b\x30\x12\x9b\x3a\x63\xd0\x79\xfc\xdd\ \x4d\xd2\x1e\xa6\x05\x2d\xf1\x63\x6f\x5f\x8e\x57\x16\x15\x88\xb4\ \x22\x1d\x7d\xb1\x6a\xc1\xed\xd8\xc4\x81\x03\x63\x5f\xf5\xaf\x5e\ \xf0\x92\xd3\x1a\xa5\xc6\x86\x75\x3d\xec\x78\xd9\x39\x5b\x4a\xc7\ \x14\x4a\x7b\xa2\x77\x5e\xe8\x5c\xaa\x09\x97\xa8\xc0\x3c\x9d\xde\ \xd6\xd3\x11\xeb\x4a\x25\x82\xa1\x23\x06\xfa\x2a\xfb\x6a\x43\x19\ \x82\xc8\x58\xd7\xd0\x11\x43\x4b\xf6\xe5\x56\xbc\x6c\xba\x98\xb2\ \x10\x99\x38\x2f\x17\xa3\xd2\xbd\xf9\xc5\xc1\xa5\x00\xfc\x6f\x0e\ \x84\xb3\x59\x7e\x73\x63\xcd\xbe\x7a\x71\xd2\xcf\xec\x18\x62\x5d\ \x17\x67\x95\x2a\xb1\x46\x6b\xc5\x51\x8d\xae\xb1\xd6\x48\xd0\xd1\ \x88\x0c\xd5\x2a\xc1\x81\x53\x06\x6e\xf2\x84\x81\xe6\xd8\xc9\xd1\ \x6d\xe7\x0f\xc7\x81\xa4\x5e\x49\xc4\x6a\x41\x10\x89\xa4\xc6\x4e\ \x8b\x9c\x57\x6a\x24\x32\xb9\x4a\x23\x59\xe0\x5f\x73\xad\xe3\x36\ \xf4\x74\x8c\xed\x23\x52\x23\x32\x74\xc1\xb2\x5b\xf5\xf5\xd3\x27\ \x8e\x1c\xb2\x02\xf3\x24\x1e\x32\x5f\x10\xf0\xe2\x64\xdb\x12\xa5\ \x75\x89\x5a\x26\x11\xd4\xe8\x2b\xec\x18\xa8\xf5\xad\x6b\xcd\x0d\ \x24\x5a\xa5\x56\xfb\xca\xd9\x78\xde\xba\x3d\x9c\x5d\x3d\x1c\x00\ \xe3\xb8\xea\xb7\x72\xab\xf6\x25\x82\x58\xad\xa7\xd1\x51\x68\xec\ \xca\xad\xd9\x50\x4a\x0d\x70\x56\x6c\x59\x5f\xd0\x58\x53\x58\xb1\ \xa9\xd6\x58\x31\xd1\x48\x6d\x99\x89\x44\x86\x36\xb3\x43\xee\x03\ \x49\x93\xcd\x2a\xad\xbe\x89\x46\xb6\x38\xfb\x23\x8d\xcc\x5c\xa3\ \x23\x13\x49\xdd\x60\x2a\x93\x6a\xb5\x52\xb9\xa0\xe3\x5a\xab\x4e\ \x79\x41\xe5\x66\x73\xbb\xce\xa8\x34\x9e\x75\xd4\xb2\x61\x7e\x48\ \x00\xd7\x95\xcd\x7e\x6a\xa4\x35\x51\xaa\x24\x0a\x41\x62\xc9\x75\ \x36\x25\x22\x1d\xec\x2a\x65\x06\xfa\xb6\x65\x5a\xa9\x46\xb0\xa6\ \xd5\x1a\x4b\x54\x22\x1d\xa5\x80\xcc\x50\xed\xc4\xb6\xf6\x30\x24\ \x6c\x3b\xa5\x9d\x52\x6a\xc9\xd0\x9a\x8e\x8e\xd1\x62\xb2\xb1\x46\ \x64\x6a\xa2\x55\x39\xab\x95\xdb\x93\x49\x6d\x18\x89\xc5\x56\x14\ \x36\x0d\x0d\x44\x12\xad\xae\x56\xd0\x91\x9a\x15\xdf\x79\xe1\x70\ \x00\x74\xca\xf8\xb9\xd2\x5c\xed\x7a\x03\x3d\xd7\xb9\xd1\x31\xad\ \xcc\x5c\x26\x93\xca\x0d\xf5\xf4\xd0\x13\xa9\x4c\x4d\xcd\x05\x7d\ \xbb\x06\x36\xf4\x64\x7a\x56\x0d\x75\xb4\xfa\xae\x91\x89\x4e\x1f\ \x3d\x38\x64\x05\x06\xe5\xca\x3f\x8c\x1d\x68\xd5\x3a\x96\x24\xba\ \x52\xcb\x3a\x12\x23\xeb\xfa\xd8\x15\x54\xf6\xcd\xa4\x3a\xfa\xb6\ \x44\x8b\x0d\x87\x0d\xeb\x82\x53\xb6\xf5\xf5\x2c\x59\xb6\x26\xd6\ \x3e\x7b\xcd\xf4\x50\x00\x02\xf5\x9d\x8f\x4d\xaa\x8e\x58\x2a\xb5\ \x62\xcd\x96\xb9\x0a\x1d\x99\xa9\x46\x2a\x48\xd5\x86\x96\x0d\xf4\ \x05\xab\x12\xcc\x35\xfa\x36\x44\xc6\x72\x53\xb1\x1b\x5c\x8b\x7d\ \x53\x1e\x5f\xca\x0f\xd9\x02\xcd\x5d\x2f\x66\x5f\xcd\xf5\x0c\x0d\ \x25\x0e\xbc\x60\x57\xb0\x2c\x35\x33\xd4\x15\x8b\xa4\x86\x8e\x5b\ \x46\xd7\xaa\x5d\xad\xa0\xc5\x58\xaa\x51\x68\x0d\x1c\x68\xc5\xba\ \x6a\xf3\xea\x5b\xbe\x10\xca\x70\xc8\x0b\x49\x73\xdd\xa4\xf7\xf0\ \xbe\x5c\x22\xd1\xd7\x35\x30\xd7\xd8\x51\xaa\x95\x12\x41\x24\xa8\ \x95\x62\x99\xc6\xbe\x21\x8b\xa5\x3a\xf1\x82\x58\x1f\x13\x95\x7d\ \x41\x57\x2d\xfb\x9b\x1f\x78\x4e\x73\xe8\x1b\x51\x28\xee\xfc\xf3\ \x62\xf3\x94\x2d\x73\x89\xcc\x9a\xcc\x81\x48\x5f\x2a\x68\xc4\x12\ \x89\x48\xdf\xdc\x35\x06\xfa\x46\x12\x41\xae\xd5\xd3\xd3\xba\xc6\ \x37\x48\xa5\x3a\x56\xf4\x0c\xf5\x3e\xb1\x3e\x39\x34\x80\x40\xfd\ \xa3\xa7\xfa\x9f\xde\xb7\xb7\x10\x60\x37\x39\xea\x88\x0d\x41\xc7\ \xaa\x55\x99\xc6\x11\xdf\x68\xd9\x9a\x8e\x65\x43\x1d\x94\xba\x3a\ \x3a\x26\x62\x89\xca\x8a\x91\x23\x12\x91\xe6\xc9\x0f\x3e\xaa\xbc\ \xb4\x38\x48\x2e\x2d\x0b\xd2\xf9\xed\xbf\xfb\x85\x1f\x99\x1f\x99\ \xaa\xd4\x62\x1d\x43\x5d\x2f\x5a\x36\xf6\x76\x54\x46\x12\xb4\x6a\ \x91\x60\xa6\x92\x0a\x26\x2e\x28\xb4\x82\x9e\xbe\x0d\x53\x5b\xca\ \xb6\xf3\xd1\xb5\x5d\xf5\x15\x5c\x4a\x03\xf5\x4f\x3c\x7f\xf4\x23\ \x5b\xc6\x52\x33\x85\xc6\x4c\xe5\x84\x75\x6f\x36\xd5\xb5\x2c\xd6\ \x9a\x5e\xb4\x44\x34\x5a\xb1\x78\xa1\x98\x6a\xad\x20\xe8\x18\x5e\ \x5c\x9a\x9f\xfd\xc0\x5f\x46\x45\xb8\x42\x61\xd2\x66\xf9\xfd\x9f\ \x2e\x3e\x37\x31\x53\xc8\x8d\xf4\x17\xd3\xcd\xa4\x1a\x34\x6a\x99\ \xa0\x5d\x80\x28\xcc\xe4\xe6\x2a\x8d\x5a\x25\x35\x32\xb5\x63\x76\ \xea\x96\x07\x47\xfb\x9a\x2b\x54\x46\x81\xfa\xdb\x77\xef\xbd\x7f\ \xf2\x4f\xe7\x55\x76\x8c\xed\x69\x74\x6d\xe8\x2e\x2e\xe0\x16\x20\ \x6a\x8d\xd2\x5c\x21\x57\x2a\xd5\x5a\xad\x56\xe2\x82\x67\x6d\xcd\ \xba\x3f\x75\xe7\x49\x55\xb8\x72\x71\x1a\xa8\xde\x73\xfa\xfb\x3f\ \xb0\x73\x72\x47\xa6\x96\x3b\xef\x82\xd2\x8e\x99\xa9\xdc\x4c\xbe\ \xd0\x87\xa5\x42\x6e\xa2\x54\x2c\xae\xed\x30\x76\xce\x7e\x9e\xfd\ \xcc\x3d\x7f\x1d\x2e\xb9\x01\xbd\x26\x00\x42\x1b\x15\x77\xff\xdb\ \x9d\x3f\xbc\xfd\xdc\xa6\x99\xc4\xc4\xdc\xa6\xa9\x3d\x07\x0e\x34\ \xaf\xa4\x9f\x99\x98\x9a\x9b\xab\xc4\x62\x23\x41\x29\x37\x9f\x8c\ \x7e\xfa\x9e\xcf\xf4\xa6\xaf\xdb\x1f\xb8\xe8\x11\x94\xd9\x1f\x7f\ \xd3\x5f\xfd\x56\xb8\xe3\x46\x89\xd6\x92\xd4\x9a\x9e\xae\x65\x8d\ \xa0\xc4\xae\x62\x21\xd9\x5a\x8d\xa0\x35\x57\x19\x9f\xb9\xfe\xfe\ \xbb\x1f\xed\xcd\xfe\x4f\x0e\xc9\x45\x08\x92\x7f\x5e\xff\xcd\x0f\ \xf5\xee\xbb\xbe\xb3\x2a\x31\xd7\x97\x1a\x18\xa2\x90\xb3\xd0\xcb\ \x17\xd7\xc2\x45\xf1\xbe\xd9\x0e\x1e\xb9\xf9\xc1\xbb\xfe\x3d\x2b\ \x5e\xdb\x2b\x3b\x9c\x4b\x16\x9f\xee\x7f\xea\xbb\xf6\x7e\x31\xbd\ \x63\x2d\x74\x05\xb1\xbe\x1b\x94\x5e\xd2\x08\x22\x85\x5a\x8b\x5a\ \x2b\x55\x3e\xd9\xff\xd8\xbb\x1f\x39\xb6\xaf\x3a\x8c\x69\x79\x68\ \x9f\xb0\x4e\x9e\x1e\xfd\xe9\x3b\xda\xf7\xa7\x77\x0d\x87\x89\xc8\ \x35\x32\xbb\x22\x5d\xc1\xae\x1c\x43\x75\x59\x7f\x39\xfb\xc3\xef\ \xf9\xe2\xf5\xbb\x49\xf1\x06\xfa\x84\xff\xed\x99\x88\x37\x7b\x5f\ \x3a\x7e\xf2\x8e\xe4\x6d\xc9\x2d\x9d\x9b\x56\xfb\xeb\x21\x11\x54\ \xed\x7e\x3e\x3e\x99\x3f\xdd\xf9\xdb\xf5\x2f\xbe\xf3\xf9\xe1\x54\ \xf9\x86\x3b\xa5\x5f\x63\xd7\x46\x75\x3c\xcf\x36\xbb\xdb\x83\x9d\ \xe1\xb3\xbd\xc9\xa8\x1a\xdf\xbe\xf3\xb6\x49\x51\xc6\x79\x52\x44\ \xb5\xfa\xeb\xe6\x15\xff\x0f\xcb\x3a\x2c\x9e\xff\x72\xca\xdb\x8b\ \x7c\xbd\x1a\x57\xe3\x6a\x5c\x8d\x2b\x8f\xff\x04\x03\x78\x12\x78\ \x73\x21\x26\xd6\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x3c\x30\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x40\x10\x06\x00\x00\x00\xfa\xf9\xad\x9d\ \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd6\x00\x00\x0d\xd6\ \x01\x90\x6f\x79\x9c\x00\x00\x00\x09\x76\x70\x41\x67\x00\x00\x00\ \x40\x00\x00\x00\x40\x00\xea\xf3\xf8\x60\x00\x00\x00\x06\x62\x4b\ \x47\x44\xff\xff\xff\xff\xff\xff\x09\x58\xf7\xdc\x00\x00\x3b\x8d\ \x49\x44\x41\x54\x78\xda\xec\x7c\x77\x54\x55\xd7\xb6\xfe\x3e\x85\ \x73\xe8\x1d\x3b\x45\x41\x63\x01\xc1\x8a\x15\x30\xf6\x0a\x18\x63\ \x57\x34\x1a\xbb\x80\x9a\xd8\x15\x34\x9a\x68\x2c\x18\x35\xc6\x12\ \x01\x8d\xc6\x18\x0b\xa6\xa8\x89\x0d\x35\x1a\x4b\x54\x34\x31\x76\ \xc0\x86\x14\x91\x22\x07\x4e\xdb\xe5\xcd\x39\xf7\x5a\xe3\x37\x72\ \xff\xf9\xe5\xe6\xdd\xfb\xde\x1d\xef\xde\x64\x70\xbf\xac\x5d\x56\ \x99\xdf\x6c\x6b\xae\x7d\xae\x56\xf8\xcf\x3f\xff\xd6\xff\xfc\x9f\ \x53\x00\x45\xc9\x56\x00\x62\x14\x65\x5b\x36\xe0\x2e\x45\xb9\x96\ \x03\x58\xa9\x28\x5f\x7f\x25\x08\x9a\x65\x8a\x72\xa1\x13\xe0\x53\ \x45\xc9\x57\x60\xf9\x5a\x8e\xfc\x3a\x7f\x8e\xbf\xc7\xfb\xe1\xfd\ \xfe\x47\x01\xfe\xd7\x09\x56\x90\x88\x08\x45\x39\x12\x04\x44\x69\ \x14\xe5\xf8\x45\x58\xc6\x6c\x45\xb9\x74\x55\x10\xf4\x9b\x05\x41\ \xea\x25\x08\xc6\x61\x82\xd0\x24\x41\x10\x9c\xfb\x0a\x42\x4d\x96\ \x20\xb8\xcf\x14\x04\xbf\xf5\x82\xe0\x09\xef\xd8\x26\x09\x82\xf7\ \x2d\x41\x78\x92\x09\xf8\x1b\x47\x7e\x9d\x3f\xc7\xdf\xe3\xfd\xf0\ \x7e\xf9\x38\x7c\x5c\x3e\x0f\x3e\xaf\xff\x28\xc0\x3f\x8c\xe8\x54\ \x84\x20\x45\x39\x5b\x0b\xf0\x9c\xa2\x5c\x4d\x86\xe9\x7e\x27\x08\ \x67\xa6\x09\x82\x61\x28\x90\xb5\x43\x10\x5c\xe0\xcf\xf1\x03\x41\ \xf0\x81\xeb\x96\xf7\x05\xa1\xfe\x49\x41\xd0\x01\x69\xc1\xd0\xd6\ \xb4\x10\x84\x16\xf0\x27\xaf\x02\x5e\x80\x64\x61\xb5\x20\xb4\x9f\ \x24\x9c\xd4\xdc\x13\x84\x8e\x56\x61\xaf\x62\x15\x84\xce\x36\x8e\ \xfc\x3a\x7f\x8e\xbf\xc7\xfb\xe1\xfd\xf2\x71\xf8\xb8\x7c\x1e\x7c\ \x5e\x7c\x9e\x7c\xde\x7c\x1d\xff\x51\x80\x3f\x4d\xf8\xf7\xa7\x41\ \xe8\x5e\x40\x4a\x29\x58\xda\x73\x01\x58\x01\x0b\x1c\x21\x08\xd5\ \x56\x10\xf6\x9b\x70\xaf\x44\x10\x02\xca\xc0\x22\x77\x01\x31\xf5\ \x85\xba\x8a\xbf\x10\xd7\xd1\xfa\xda\xa7\x74\xb4\xe3\x91\x91\x27\ \x8a\x5f\x3d\x16\x3d\x2f\x2c\x1e\x50\xf4\xe0\xd1\x8e\x5a\xfe\x69\ \x19\x45\x39\x0f\x6f\xd6\xef\x9f\x7e\xa8\x38\xe1\xd1\xad\xc0\x47\ \xfb\x0a\x4b\xb2\xf3\x4e\x36\x92\xbe\xbe\x5f\x32\x2d\x2f\x3f\xe4\ \xfc\xa1\xb0\x92\x35\x79\x9e\x84\x3e\x79\xf1\xc1\xe1\x70\xbd\x41\ \xee\x92\xa0\xd6\xfb\x0a\x8b\xcf\x3d\x4a\xaf\xff\x18\xde\x2b\xc9\ \xdd\x52\x6b\x47\x5a\x46\xc9\xb3\x27\xfb\xbd\xde\x58\x3c\xe0\xf5\ \xb0\xd2\x4c\xc7\x5f\x47\x9e\xe0\xe3\xf2\x79\xf0\x79\xf1\x79\xf2\ \x79\xf3\x75\xf0\x75\xf1\x75\xfe\xdb\x2b\x80\xa2\x10\x78\x42\xec\ \xad\x01\xbc\x29\x08\x9d\x3e\x03\x2b\xdb\x24\x08\xae\x8b\x05\xc1\ \xe9\x8a\x20\x38\x14\x0b\x82\x6f\x01\x3c\x09\x16\x17\xe2\x2b\x34\ \x85\x37\xde\x6a\x6f\x28\x6f\x5c\x1c\xef\x6c\x79\xc7\xbb\x70\xde\ \x23\x1f\xbf\xa2\x0d\x47\x0a\x33\x1e\xae\x09\xaa\xb3\x6f\xa8\xe8\ \x6c\xb9\x17\xb2\xf8\xc3\x1a\x97\xb9\xde\xb3\x9b\x7d\x3a\x62\xaa\ \xe7\xcc\x86\xd6\x88\x6d\x9d\xfb\x7b\x9f\x0c\x7b\xa7\x43\x9f\xe0\ \x21\xde\xae\x6d\x13\xa2\x97\x7b\x79\x79\xcd\x8a\x8c\xe8\x71\xc5\ \x69\xa1\xf7\xa1\x4e\x69\xbd\xeb\xea\x74\xde\x6b\x3b\xad\xef\xdd\ \x0c\x70\x4c\xa4\x4b\xf7\xcf\x9c\x16\x7a\x25\xb4\x9d\x18\x15\x0a\ \xcf\x59\xc3\xda\x75\xd0\x07\x0f\xf1\x90\x1b\x9d\x8d\x18\xdd\xb9\ \xbf\xcb\x2c\x1f\xc7\xa6\xcb\x47\x4c\x95\xa6\xd8\x5e\x84\xd4\xff\ \xb0\xa6\x78\x5f\xee\xc6\x86\xed\xf6\x0d\x2d\xee\x9c\x77\xb8\xd6\ \xb1\x0d\x47\xca\xed\x25\x25\x2e\x43\xde\xf1\xe6\xf3\xe4\xf3\xe6\ \xeb\xe0\xeb\xe2\xeb\xe4\xeb\xe6\x72\xf8\xb7\x51\x00\x48\xaa\xb6\ \x01\xc4\x09\xc2\x0f\x8f\x61\xf8\xd6\x82\x60\x9d\x0f\xee\x74\x0a\ \x08\x4a\x07\x96\xd3\x1d\x9e\xd8\x07\x82\x1b\x22\x7d\x6d\x5f\xa3\ \xb9\xd9\xf9\x44\x49\xec\x93\x72\x8f\x09\xef\x9b\x0a\xbe\x7b\xf0\ \xc8\x3f\x6b\xf7\x2d\xf9\xb2\x3d\xaa\xd1\xde\x05\x0b\x3c\x02\xea\ \x7f\x14\xea\xdc\x61\xab\x8f\x77\xeb\x69\x5d\xbe\x77\x5e\xe3\x9e\ \xd5\x61\xdf\x00\x3b\xd8\xdc\x89\xb6\x2b\x47\x82\x2d\x1a\x8e\xb7\ \x0c\x98\xe0\x03\xbd\x3a\x34\x1d\x36\x39\x12\xa3\x76\xc8\x8a\x29\ \x38\xca\x90\x86\x9a\x29\x75\xa0\xbd\x29\x30\x79\xca\x3d\xc2\x98\ \x29\x16\x40\xdf\x86\xdf\x4c\x1d\x0e\xb8\x22\xf8\xd9\xd4\xfb\xf0\ \x5c\xf5\x1b\x77\xa6\xf4\x86\xa8\xdf\x24\x6c\xf1\xc4\x46\x40\x9d\ \xad\xcd\xd3\x91\x10\xfd\xdd\x07\x46\xee\x1b\x50\x0f\x66\x3a\xb2\ \x75\x4d\xe7\xcf\x60\xdc\xb5\xfe\xe3\x42\x3f\xef\xb0\x55\x13\x22\ \x5f\x69\x34\x72\xc1\x82\xa2\x5e\x8f\x1c\x03\x0a\x77\xdf\x7a\x99\ \xff\xb4\xad\x67\xe8\xfb\x26\xbe\x0e\xbe\x2e\xbe\x4e\xbe\x6e\x2e\ \x07\x2e\x97\xff\xb3\x0a\xa0\x28\x1b\xa7\x00\x3c\x11\x84\xc6\xe0\ \x1e\x75\x7b\x40\xa4\x53\xc1\x2a\x1e\x81\x5b\x0c\x14\x84\x06\xa5\ \xc2\x38\xc1\x45\x88\x6c\xbd\xec\xa5\xe6\x69\x6d\xf7\xf8\x44\xa9\ \x28\xfb\x51\xbb\x06\xb9\xe9\x3b\x0d\x15\x86\x36\x8d\x92\x46\xe7\ \xfa\x48\x6f\x4c\x6f\x25\xf9\xb4\xf1\x18\xdb\xee\x68\x9f\x4b\x20\ \xba\x1f\x5a\x2d\x1b\xd9\x01\xc4\x79\xb4\x71\xad\x71\x41\x40\xdc\ \x17\xf5\x5b\x8c\xfa\x1c\xa3\xaf\xdf\xc4\xb8\x72\x40\xad\x97\x67\ \xf7\xdf\xa0\xf7\x59\x6e\x72\x87\x7d\x80\x1a\x97\xab\x11\x69\x18\ \x95\x9d\xa6\x35\xbf\x0a\xf8\x8d\xe3\xaa\x37\xe6\x32\x9c\x44\xd7\ \xa7\x36\xbb\x4a\xcf\x9d\x08\x8f\x05\x8c\x77\x2b\x8b\xc4\xf7\x5e\ \x7b\x0a\xdd\xab\xa0\xbf\xe5\xbe\xcf\xe3\x3c\x61\xe6\x13\xea\xd5\ \x1d\x3d\x00\xc6\x5b\x19\x5c\x35\x6e\x03\x28\xc8\x96\xb0\x75\x23\ \x3a\xc2\x4a\x96\xb4\xf9\xa9\xf7\x31\x41\xf0\x6a\xd1\x4c\xd7\xca\ \xcf\xa7\x8d\xf1\x3b\xa7\x5f\x1b\xed\x1b\x9d\xfb\x32\x3f\x5f\x08\ \x98\x9b\xbe\xb3\x74\xcd\xf3\xc1\x1e\x4e\x89\x12\x5f\x27\x5f\x37\ \x97\x03\x97\x0b\x97\xd3\xbf\x9c\x02\xfc\x75\x17\x7f\xea\x4b\x58\ \x6c\x2b\x41\x08\xfb\x09\xe8\xf2\x85\xff\xee\x09\x62\x1a\x07\x49\ \xd6\x58\xb0\x88\x10\x53\x8b\x0a\x77\x63\xe3\x01\x8b\x9f\x07\xdd\ \x33\xd7\x99\xf0\xe9\x73\x6d\x67\xa1\x5f\x40\x8b\x09\xb7\x7d\x6e\ \x34\xbe\x14\x91\xec\x9e\xed\x1a\xda\xfa\x7c\x9f\xe3\x60\xd1\x3f\ \xb7\x78\x39\xa2\x03\x8a\xc8\x7f\xf1\x50\x20\x4c\x3b\xc7\xfb\x49\ \xcf\xa1\xb8\x61\x73\xdd\x11\x11\x0e\x23\x7d\x62\x8c\x0c\xa4\x3c\ \x5c\x1f\xe2\xd3\x86\x96\xf6\x9b\x6b\x28\x00\xa8\x80\xa3\x13\xe1\ \x2d\x87\x2d\x84\xdf\x38\xbc\xa7\xb6\x75\x9b\x09\x2b\x75\x6a\xfb\ \x13\x87\x89\x6a\xdb\x70\x91\x70\xbc\xa3\x23\xeb\xa7\x01\xeb\x37\ \x98\xc6\x71\x0c\xcc\xc6\xbb\xae\xfd\x23\x3c\xe1\xee\x04\xef\x65\ \x3d\x61\x45\xba\xb7\xea\x2f\x1c\x06\x2b\x75\xf0\x6b\xba\x6f\x38\ \x50\xe8\xdc\x29\x22\xa2\xb7\x01\x56\x9a\xd1\x24\xa6\xe5\x1b\xee\ \xd9\xfa\xcd\xda\x5f\x03\x0a\x26\xdc\x2e\x0c\x7b\xf8\x41\xdd\xef\ \x3e\x7d\x6e\x3a\x5d\xb9\xc8\x98\x38\x60\x31\x97\x03\x97\x0b\x97\ \x13\x97\xdb\x3f\x3b\x44\x68\xff\x29\xdb\x34\x9a\xf0\xe9\x3e\x28\ \x26\xf8\xdb\x0f\xf4\xf5\x82\x3b\x20\x16\xdf\x3d\xc2\x51\x65\xa1\ \x20\x34\xef\xf4\xf2\x97\xe7\x5f\xb9\xfd\x30\xf9\xe7\xca\xd3\x25\ \xf3\xea\xc6\xae\xaa\xe3\x31\xa1\xf6\xae\xc6\x73\x82\xf7\xb8\x9d\ \x09\x6b\x10\x95\x07\x22\xf8\xb9\xc5\xd7\xf1\x9f\x80\x60\xbb\xd7\ \xdf\x1e\x9b\x0e\x13\x6d\xe4\x3e\xb6\xc3\x56\x4c\xa3\x8c\xf7\x1a\ \x8e\xc7\x1d\xb9\x6e\xb3\x67\x36\x11\x75\xde\x30\x8c\x86\x5e\xa6\ \xfd\x86\xcd\x21\x8e\x20\x43\x76\x27\x3c\x2b\x9f\xa6\xab\x15\x72\ \x3a\x61\x8a\x34\x96\x30\x5c\x3e\x43\xe8\x81\x48\xd7\x13\x09\x6f\ \x4a\xeb\xe9\xbd\xc7\xf2\x0d\xc2\x23\x72\x00\x5b\x5c\x0a\xfd\x6f\ \xb2\xe6\xa9\x3a\xae\x71\x2e\xce\x43\xbf\xc7\xf3\x2c\xce\xcb\xf1\ \x72\xd0\x2c\x98\xa7\xb7\x7b\x54\x47\x58\xa9\xae\xaa\xee\xfc\xd8\ \xa5\x14\x82\xb6\xc6\xc7\xc3\x3e\x61\x71\x98\x5b\xd7\x19\x82\xe0\ \xb1\xaa\x4e\xbf\x10\x53\xf0\x9e\xea\xbd\xa5\x43\xea\x5f\x58\x55\ \xe7\xd5\xec\x82\x22\xf7\x39\x93\x7f\xe6\x72\xe1\x72\xe2\x72\xe3\ \x72\xe4\x72\xfd\x97\x55\x80\xff\xa7\xa9\x5f\x79\xa8\xc4\xcb\xe0\ \x90\x8d\x9f\xc1\x7f\x43\xac\xf3\x6b\xac\xa0\x53\xeb\x10\xd6\xf5\ \xc5\xd1\xdc\x97\xde\x91\x8b\x5c\xe4\x04\x4b\x56\x5d\xaf\x49\x77\ \xbd\xa3\x82\x8e\xb5\x18\x66\xec\xed\x34\x25\xd4\xb5\xa7\x09\xf3\ \xe5\xa0\x8a\x01\x60\x71\xba\x37\x3d\x6e\x76\xb0\xc0\xdb\x6f\x1a\ \x23\xfd\x5f\x11\xe1\xbf\xb9\x8c\x24\xc1\xef\x12\x32\x55\x62\xc5\ \x75\x2a\x81\xf6\x03\x84\x8a\xed\xaa\x4a\xac\xed\x01\x61\x84\xbd\ \xb9\x7a\xdf\x46\xef\x09\xe1\xf6\x13\x84\x81\x76\x17\x95\x58\xd6\ \xbe\x69\x2f\x21\x8c\x66\xd7\xc3\xb1\x3f\xea\x77\x3b\xeb\xaf\x33\ \x61\x90\xad\x9e\xfa\xbe\xcd\x99\xdd\x7f\x48\x78\x44\x82\x95\xa2\ \x6f\xd0\x54\xe0\x3c\xb5\x5f\x38\xef\x40\xdb\x35\x36\xf5\x0f\x40\ \xc5\xf5\xb8\xd1\x71\x15\x86\x8e\x06\x3b\x07\x8c\xc6\xdc\xa4\xc5\ \xf6\x9e\x2b\x40\x11\xda\x37\x3a\xd7\xec\xaa\xb1\xb7\x32\xda\xde\ \xa8\x5e\x87\x49\x77\x8b\xf4\xf9\x05\x3e\x89\x8b\x5c\xb8\x9c\xb8\ \xdc\xb8\x1c\xb9\x5c\xb9\x9c\xff\x05\x3d\xc0\xa9\xbd\x30\xc1\x86\ \x82\x50\xab\x1b\x2c\xd3\x00\x4b\xae\x44\x4d\x96\xae\x49\xbb\x34\ \x42\x78\x7e\x81\xf7\xc3\xb9\xbe\x0d\x96\xb7\x72\x68\xa5\x5f\x5d\ \x67\x73\xaf\x49\x1e\x63\x83\x8f\x44\x0c\x14\x82\x0c\x35\x4d\x7b\ \xf7\xf4\x83\xa7\x75\xb5\xcd\xd1\xa9\x30\xa1\xf1\x4e\xd3\x82\x3f\ \xc0\x98\xac\x6f\xe3\xfa\x88\x96\xda\x4d\xce\x50\x09\xb6\x4c\x45\ \x94\x13\xcd\x1f\x51\x7b\x6c\xcd\x97\x84\x89\x35\x05\x84\x19\x35\ \xfb\x08\xb3\x2c\xf3\x08\x0f\x5b\xf6\xab\x04\x5a\x9b\x13\x8e\xb3\ \x9e\x20\xcc\xb4\x75\x22\x0c\xb4\xff\xa2\x12\xc9\x30\xd5\x3e\x8d\ \x70\x83\x8d\x29\x8e\xb5\x1e\xe1\x19\xeb\x65\xc2\x1b\xe6\xaf\x68\ \xfc\x0c\xb3\x99\xda\x49\x35\x73\xd9\xf8\x91\x84\x4b\xcd\xf7\x00\ \x80\x5b\xeb\x7e\x9a\x77\x84\x72\x03\x73\x0c\x5d\xb0\xcb\x41\x58\ \x57\xbc\x53\xb3\x90\xdb\xb0\xce\x8d\xbe\x2b\xa3\x13\xc0\x33\x3c\ \x6f\xdc\xa3\x17\xd0\xeb\xf6\x4b\x48\x7c\xcb\x03\x42\x90\xf1\x5d\ \x87\x39\x75\xcb\x7a\x4d\x2a\xba\x9b\xfb\xb9\x5f\xff\xe5\xad\xb8\ \xdc\xb8\x1c\xb9\x5c\xb9\x9c\xff\x65\x14\x40\x51\x76\x1e\x07\xb8\ \x05\x51\x0f\x73\xeb\xef\x91\x42\xc8\x72\xbd\x95\x77\x94\xa7\x42\ \x87\xe6\xfd\x0a\x2f\xe4\xb6\xf7\x89\x5a\x72\xd0\x68\x31\x7c\x58\ \xdb\x18\x69\x71\xeb\xda\xd0\x2b\x3c\x1d\xb3\xec\x90\xb7\x62\x32\ \x31\xff\xf5\x9a\xdd\xa6\x0a\x05\x65\x78\x51\x6b\x2f\xe0\x78\xcd\ \x2d\x6d\x37\x72\xdc\xd9\xe6\x3b\xe4\x88\xe5\xaa\x5f\x49\xf0\x65\ \x55\x3f\x11\xe6\x55\xbd\x26\x0c\x30\x85\x10\x46\x57\xab\x44\xa4\ \x9b\xf7\x51\x3b\xdf\x5c\xa4\x7a\x00\xeb\x56\x95\x10\xdb\x6a\x95\ \x40\xbb\x4a\x68\xb4\x4a\xb8\x10\x6b\x3f\x45\x98\x20\x8a\xec\xfa\ \x4b\xc2\x7c\x55\x01\x84\x68\xdb\x15\x6a\x0b\x56\x15\xcb\xad\x4d\ \x09\x0f\x9b\xef\xd2\x38\x63\x6b\x3e\x54\xc7\x37\xad\x40\x94\xf2\ \xaa\x82\x19\xfe\xa6\xce\xaf\xaa\x2d\xfa\x17\x39\xc7\x6c\x24\xff\ \x00\xff\x00\xee\x32\x5c\xac\xf5\x33\xac\xfb\xb5\xe7\xe3\x36\x8d\ \x40\x62\xa6\x86\x0d\x63\x92\x41\x7a\x27\x1b\xed\x46\xbb\x77\xbc\ \xe4\xa8\xab\x3d\x32\xd2\x52\x32\x2f\x7f\x85\x6f\xe2\x92\x83\x5c\ \x8e\x5c\xae\x5c\xce\x5c\xee\xff\x4b\x0a\x40\xdb\xb9\x2f\xd5\x6d\ \x4b\x60\x04\x4c\x08\xb6\x35\xe8\x30\x3d\x12\x84\x76\x8a\x0f\x64\ \xb4\x8d\x5f\x6c\xca\x0d\xf7\x5a\x3d\x47\x67\x58\xa0\x1f\xeb\xdb\ \x2f\xf2\x9e\x5b\x97\x80\x25\x2d\x1e\x02\xf1\x9b\x83\xc6\x77\xb6\ \xc3\xc0\xe7\xdc\xcb\x9b\x4f\x45\xe2\xf5\xbe\x6e\x3b\x41\xa7\x3d\ \x95\x38\xdb\x74\x35\x72\xbf\x0e\x26\xc1\xcd\x2c\xa7\x92\x89\x3c\ \xb3\xa2\x1b\x09\x34\xbd\xf2\x13\xa6\x08\xdf\x13\x26\xd6\xac\x54\ \x89\xb5\x4c\x26\xcc\x01\x4b\x25\xb4\x75\x24\x2c\x63\xa1\x20\x10\ \xfb\x25\xcb\x3e\xa0\x12\x0e\xae\x9f\x62\xbd\xcd\x46\x78\xd6\x4a\ \x6d\x21\xd5\xb6\x83\x30\xc9\x7e\x80\xbd\xb7\x88\x85\x00\x67\x1a\ \x2f\xdb\x3a\x82\x8d\xb3\x8d\x30\xdf\xbc\x8a\xae\x0f\xaa\xf9\x94\ \xda\x01\x26\x5f\x55\x41\x5f\x0f\x46\x84\x79\xa7\x12\xa6\x57\x8c\ \xc3\x51\x61\x5d\xad\x61\x9d\x31\x4a\xaa\x6d\x1a\x2a\x84\x6e\x85\ \xeb\x4c\x90\xc3\x37\x6e\x52\xf3\x6d\x48\x69\x60\x62\xe7\x87\x40\ \xef\xfd\x80\x84\xe6\x3f\x82\xad\x6f\x37\x3c\xf7\x0b\x8d\xbc\x57\ \xec\x92\x1f\xea\xbd\x71\x8e\x8e\xcb\x95\xcb\x99\xcb\x9d\xf3\xf0\ \x97\x15\xe0\xaf\xc7\x7a\xff\x30\x78\xfd\x29\x4c\x02\xc4\xe0\x5c\ \x4f\xf8\x54\x86\xdc\x39\xa0\x65\xc9\xb4\x67\xad\xdd\xea\x8c\x72\ \xd1\x6c\x94\x37\x7b\x4f\xec\xf5\xc2\x75\x5d\x7d\xe7\xc6\x70\x47\ \xbf\x37\x20\xad\xdd\xef\x20\x80\xe5\xee\xee\x21\x2b\xd0\x12\x74\ \xb3\x1d\x17\x30\xcb\x8d\xc4\x14\x4d\x1a\x53\x1e\x4e\x16\xf4\xa8\ \x74\x31\x40\xb2\x34\xa8\x3c\x96\xda\x87\x5f\xcf\x46\x94\xc3\xaa\ \x8f\xb2\xe7\x2f\x11\x66\x58\x3a\x32\x42\xa6\x31\xa2\xae\xaa\x04\ \xab\xc4\x09\x1b\x6c\xa3\x54\xe2\xed\x1f\x33\x8b\x5f\xa8\x86\x02\ \x5b\x3d\x96\x1b\x94\x10\x2a\x4c\x51\x62\xd9\xf5\x04\x22\x48\x00\ \xa2\xfa\xa9\x0a\x81\x0a\x44\xd8\x5f\xf5\x14\x36\x2b\xe1\x0d\x6b\ \x5f\xc2\x74\x0b\xad\x43\xce\x32\x6f\x21\x74\x37\xbd\x47\xa8\x7a\ \x84\x08\xa9\x6b\x45\x16\x60\x8c\xf4\xea\xd5\x2b\x54\x37\xb9\x2b\ \x2a\x06\x85\xaa\x61\x28\x07\xed\x26\xc7\xd5\x18\xdd\x5d\xc4\xc6\ \x10\xca\x74\x2b\xfc\xa5\x76\x80\x2e\x23\xeb\x4f\x0f\xd9\x0c\x12\ \x0e\x10\xa6\xf9\x8c\xe9\xf5\xa2\xb4\x71\xc1\x69\xb7\x57\xa3\x5c\ \xb8\x9c\xb9\xdc\x39\x0f\x9c\x97\xff\x01\x0f\xf0\xfb\x64\xb4\x5b\ \xb0\xe5\x50\xd0\xd3\x5a\xb0\x50\xb0\x9b\x5a\x2f\x5e\x3f\x2c\x0b\ \x34\x3c\x8f\x56\xac\xef\x56\x65\x7b\x0a\x09\x1e\x6e\xa5\x7e\xcf\ \x1a\x3c\x10\x82\x1c\x4c\x0d\xba\x84\x07\xe2\x14\x3d\x69\xb3\x23\ \x78\xea\x26\x38\x37\x43\x84\x98\x7c\x5f\xb5\xe8\xd7\xe3\x55\x82\ \xcb\xca\x50\x20\xd2\xd8\xf2\x34\x6a\x9f\x06\x8b\xa1\x58\xcf\x88\ \x4f\xb3\x7c\xc6\x5c\x71\x47\x46\x44\x27\xc2\x64\x44\x22\xf6\xa4\ \x4a\xa4\x9d\x59\xbe\xbd\x84\x3d\xb7\x83\x29\x48\x7f\x46\x7c\x0b\ \x44\x81\x2b\x4c\xb4\xed\x04\xbb\xee\x4c\x18\x64\xef\xc7\x92\xc1\ \x1d\x2c\x34\x5c\x25\x8c\xb3\x9f\x60\x78\x52\x1d\xcf\xce\xc7\xb5\ \x31\x45\xfc\x9a\x29\x44\x11\xa2\x1c\x5b\xfd\x3e\x5b\x1f\x86\xae\ \x65\x40\x7c\x32\x10\x1d\x24\xcd\x2c\x3b\x44\xd7\xa5\xca\x56\x54\ \x14\x4e\xb0\x3a\xc1\xf5\x08\xfd\x5b\x4e\x4e\x28\x27\xf7\xb2\x10\ \x13\x6e\x77\x1b\x3c\x6c\x09\xbb\x11\xd7\x85\x7e\x6d\x1b\x94\x08\ \x41\xb6\x8f\xaa\xd3\xbd\x9c\x12\x3c\xaa\xd6\x96\x1d\x30\x86\x46\ \x2b\x5c\xee\x9c\x07\xce\xcb\x3f\x4d\x01\x68\x1b\x42\x35\xec\xd7\ \x30\x6d\x1d\x44\x61\x3d\xa4\x6e\xee\x67\xe4\x5a\x72\x91\x10\x19\ \xd2\xb6\x62\x77\xe1\x39\xcf\x16\xd3\x17\xb9\xd4\x75\x6f\xe9\xb3\ \xdf\x18\x69\x18\x5a\x77\x44\xd3\xf9\x30\x40\x77\xef\x39\x98\xfc\ \x08\x71\xfa\xb6\xae\x03\x60\xa1\xc9\x9a\x08\x19\x09\xae\x10\x54\ \x8b\x3b\x22\xe7\xd4\x1c\x87\xeb\xe3\xe4\xc4\xaa\x36\xe4\xf2\xe5\ \x6a\x3f\x12\x50\x92\x79\x18\x61\x8a\xb5\x83\x4a\xa8\xf5\x63\x96\ \xdd\x77\x26\x8c\xb1\x8d\x64\x04\x9d\x64\x84\xab\xf7\x63\x98\x0b\ \x8f\x66\x84\x97\x03\xa1\xf4\x1e\xb3\x74\xc5\xf6\x23\xc3\x2b\x0c\ \xaf\x32\x3c\xc1\xc6\xe1\x0a\xd1\x89\xbd\x37\x8a\x29\xd0\x1a\x86\ \x3b\x98\x02\x9d\x64\x9e\x85\x85\x0a\xd6\xbf\x07\xeb\x67\xbd\x65\ \x0a\xe1\x20\x73\x2f\x35\x27\xa8\x6e\x4c\x8a\x10\x4b\x21\xec\x31\ \x24\xad\xbd\x09\x03\x49\x81\x96\x09\xad\x94\x70\xda\x56\x3e\x77\ \x73\xc3\x42\x96\xe7\xae\xc6\x10\x5a\xf4\x3d\xea\x4e\x6d\x02\x1e\ \xcf\xe5\xa6\xfb\x14\xdf\x19\xc6\xc8\xd7\x01\x25\x2f\x3d\xdf\x9c\ \xbe\x86\xcb\x9d\xf3\xc0\x79\xe1\x3c\xfd\x13\x3c\xc0\xd3\x9b\x58\ \x24\x11\x04\xd3\x10\x2a\x61\x2e\x52\x40\xfc\x75\x56\x95\xcc\x7c\ \xf6\x8b\x9b\xc7\xdb\xed\xf4\x9b\xf5\x33\xdc\x4c\xc1\x3e\x8e\x53\ \x7d\x9f\x07\x5c\x87\xa9\xfc\xe6\x37\x24\x58\x07\x6f\x6c\x30\xd6\ \xf6\x7a\x0c\xb8\x4b\xbb\x5b\x1f\x42\xc9\x50\xa5\x6e\x36\x4e\x51\ \x53\xa9\x45\x8c\xd3\x24\x0b\x09\x54\x15\x1f\x27\xae\x05\x3c\x8b\ \x16\xce\x5c\xec\x54\xc2\x58\x24\x84\x88\x9e\x4e\x18\xce\x88\xf1\ \x60\xed\x40\x9e\xd5\x73\x0b\xb7\xaa\x84\x7a\x02\x21\x44\x94\x55\ \x55\x94\x7c\xeb\x6a\x76\x5f\x7d\x5e\xb1\x3a\x33\xec\xc8\xae\xd7\ \x65\x49\xe0\x42\xd6\xdf\x54\xa6\x18\xdb\x59\x9b\xf5\xc7\x43\x88\ \x7d\x14\xbb\xdf\x8f\xcd\x4b\x1d\x27\x8e\xcd\x27\x16\x15\x8b\x72\ \x87\xe6\x44\x74\x39\x5a\xba\x90\xa5\x84\x8b\xa3\x89\xa2\x08\x65\ \x3d\xc9\xc1\x4b\xfb\x2d\xe0\x38\x8d\x46\xf7\x01\xc8\xe9\x9c\xf6\ \x96\x03\x86\xca\x4c\xc3\x0b\xaf\xf1\x40\xd0\x07\xbe\x6f\x85\x6c\ \xc2\x8a\xa3\xdf\x1e\x7f\x09\xec\x7d\x94\xbe\x99\xfb\x67\xc1\xba\ \xd2\xf6\x05\x13\xdc\xf3\xdf\x6e\xc7\x79\xe0\xbc\x70\x9e\xfe\x61\ \x0a\xa0\x28\x29\x4c\xa3\x1e\xfa\x02\xad\x40\xa9\x01\x68\x72\xbb\ \x61\x8d\xb1\x7d\xab\xf9\xa6\xc9\x50\xcb\x7b\x55\x76\xd7\x5b\x43\ \x42\x9c\x6d\xee\x01\x3e\x70\x57\xff\x9b\xef\x9e\x80\x41\x58\x52\ \x75\x3e\xe0\x0b\xae\x0f\x68\x6e\x44\x85\x9a\x71\xda\x5d\x86\x95\ \x34\xe4\x60\xc7\xfd\xe8\xf2\xb4\xde\x4e\x3f\x02\x7a\x6a\x5a\xe9\ \x1b\x63\x4a\x06\x2a\x90\x81\x34\x0b\xb1\x64\xb1\xd1\x4a\x0c\xc5\ \xe8\x4c\xc1\x83\x59\x98\x27\x13\xbc\x62\x6b\xce\xd0\x99\x65\xf9\ \xdc\x82\x47\x30\x02\xfb\x12\x96\xa9\x84\xca\x39\x56\x2b\xb5\xf3\ \xac\x57\x98\x22\xfc\x40\xd7\xd3\x2c\x80\xe4\x61\xb6\x32\x17\xce\ \xb3\xfd\x1f\x58\xfb\x3e\x53\x90\x66\x84\xd9\xac\xff\x72\xd6\x7f\ \xa0\x75\xdb\x1f\xe7\x41\x48\x6d\x52\x64\x75\xde\x09\xe0\xe9\x9a\ \xe3\xd3\xa0\x20\xfd\x00\x8f\x08\x99\x12\x84\x00\x92\x0c\xca\x27\ \x4e\xf3\xad\xb1\x37\xc9\xe5\x1d\xc7\x22\x80\x18\x28\x30\xfd\x0c\ \xd7\x1b\x41\x8e\xf4\x11\xca\xd1\x69\xa4\xef\x7b\x58\xf9\xf4\xe9\ \x81\x67\x8d\x4e\xcd\x3c\x32\xbc\x37\x0a\x82\x2d\xd6\x94\xea\xba\ \x7f\x48\x08\xe7\x81\xf3\xc2\x79\xe2\xbc\xfd\x03\x3c\x40\xb7\x16\ \x18\x99\xe1\xd1\x79\x30\x48\x7b\xa1\xbb\x74\x0f\x62\xcf\xde\x57\ \x96\x82\xb7\x5c\x83\xe2\x63\x8c\xe3\x8c\xb3\x9c\x67\xba\x8f\x35\ \x18\x3c\x92\x6a\x6d\x81\x09\xcf\x76\x5b\xe7\x87\x1a\xfc\x44\x6f\ \x22\xe2\x97\x69\xc7\xeb\xf5\x34\x54\x23\xc7\x8e\x84\xc1\xce\x48\ \xe4\x2c\xcd\x72\x63\x21\x7d\x42\xd1\x4d\x13\xaf\xd6\xd9\xd0\x32\ \x78\x8c\x56\xce\x82\x20\xbf\x06\x4c\x60\x2e\xd2\x43\x29\x27\x0b\ \x8e\x55\xca\xc9\x32\x33\x99\xe5\x3e\x96\xf3\xad\x3c\x3b\xef\xcb\ \x08\x2c\x56\x09\x23\xa4\xdd\x01\x23\x72\xbe\x7a\xdd\xb2\x9a\xdd\ \xff\x91\xb5\xf7\x33\x5c\xa5\xbe\xaf\xde\x97\xf3\x2d\xea\xfd\xc3\ \xd6\x7b\xec\xfd\x62\x66\xd1\x38\x6e\x05\x53\x84\x23\x30\x5e\x27\ \xca\xf2\xcb\x6d\x18\x82\x02\x15\x05\x3d\x88\x02\x61\x1a\xfb\x57\ \x32\x71\xde\x2c\x94\x94\x10\x26\x88\x6b\xd1\x00\xf0\x0f\x3d\xa2\ \xb6\x95\x61\x28\xc9\xe5\x57\x67\x92\x8f\x6e\xb0\x93\x13\x79\x84\ \xe5\x0e\x73\xa9\x50\xad\x43\xbb\xd6\x7e\xe2\xe6\xe6\xf7\x36\x78\ \x80\x15\x9e\x19\xb5\x6a\xc0\x23\x64\x1a\x8f\xbb\x6c\x71\x1f\x5b\ \x2e\x16\xba\xba\xd5\x8a\x8f\xe1\xbc\x70\x9e\x38\x6f\xff\x00\x05\ \x70\xf8\x02\x23\x12\xd6\xe4\x20\x12\x9d\xb4\xbf\x10\x77\x0b\x6f\ \x07\x94\xd9\x72\xaa\x1f\x38\xaf\xed\x33\xc5\xf1\xb8\x73\x27\xb7\ \x6b\x30\xed\x6f\xdd\x07\xfa\x6c\x42\x8d\x35\xde\x35\x4e\x46\xd7\ \xaf\x49\x56\xca\x91\x20\xcd\x13\xed\x6b\xd2\xf8\x6e\x0e\x7e\x84\ \x82\x7e\x0f\x6d\x5c\x72\xe4\x96\x8c\x88\x6d\xaa\x45\x9a\x2f\x11\ \x66\x59\x0a\xff\x90\x65\xe7\xa3\x25\x2a\x15\xd0\xae\x8b\x16\xa4\ \xe4\x58\xac\xa4\x18\x0a\x5e\xb7\xce\xb7\x4e\xa9\x6e\x0b\x72\x8c\ \xdf\x72\xec\x08\xa4\x40\x13\x37\x4f\x9b\xb6\x01\x1c\xe0\x6f\x9b\ \x7e\xbb\xfd\xe0\x6b\x14\x24\xec\x16\xd0\x82\x33\xe5\x68\x8b\x85\ \xea\x0b\x89\x96\x3a\x88\xca\x19\x8b\x23\x43\x0b\xe1\x7a\x6b\x1d\ \xca\x49\xa2\xa0\x8d\xef\x25\x59\x9a\x62\x3f\xb7\x6f\xdf\xdf\x01\ \xfd\xee\x99\xd6\x3f\x2d\x0e\xc6\x19\xbf\x65\x4b\x56\x0c\x8c\x3b\ \xc5\xb2\xc0\xd4\x0e\x1d\xbd\x0c\x1e\x83\x88\xce\x47\x05\x51\x1e\ \x2b\x39\x2c\x94\x30\xcf\x23\xe7\xb3\x90\x70\xd8\x52\x44\x98\x41\ \x75\x01\x78\xce\x82\xcf\x05\x29\xa9\xd2\x35\x54\x06\xf0\x08\xdd\ \x49\x3e\x5e\x0e\x4d\x48\x6e\x8f\x75\x6d\x30\x14\x68\x36\x08\x11\ \x78\xd5\x70\xd4\xd8\x1b\xf0\x5b\xb7\x44\xac\x06\x18\xdf\x70\x1e\ \xe9\x0a\xdb\x67\x7b\xed\x9a\x02\x67\xef\x3e\x53\x38\x2f\x9c\x27\ \xce\xdb\x5f\x54\x00\xda\xe7\x1f\x27\x9a\x04\xdb\x1c\x70\xec\xdf\ \x09\x23\x94\x2f\xc1\x0c\xd3\xca\x6e\x17\x6b\x9c\x3a\x75\xbd\xae\ \xff\x44\xbb\xcf\x78\xce\x7b\x8e\xc3\x24\xe7\x7a\xee\x37\x70\x58\ \xa7\xba\x4e\xab\x71\xc2\xda\x5d\xe2\x0c\x74\xe9\xb0\x70\xd4\xfc\ \x7c\x25\x42\x2c\x65\xc9\xd9\x22\xcc\x82\xe5\x70\xaa\xa0\x55\x48\ \xeb\x2b\x1b\xa2\xa5\x4b\x52\x59\x3a\x09\xea\xf0\x6b\x2d\xab\xa8\ \x75\x60\x8a\xc1\x2d\xee\x1e\xdf\x7f\x33\x57\x3e\x15\x5b\xf2\x18\ \xac\x08\x6e\x7a\x6f\x6b\xdf\xa3\xb0\x3b\xb8\x78\xf1\x4a\x5f\xdc\ \x36\x46\xe5\xc5\x08\xc3\x57\x01\x61\xfa\xa9\x25\x9b\xa0\x20\x53\ \xf0\xfe\x8b\x8b\x2f\xe6\x92\xc2\x94\x9b\xef\xa1\x65\x82\xe0\x57\ \x21\xca\x59\x0c\xb3\x21\x14\x50\xdb\x8c\xed\x58\x45\x81\x36\xbe\ \x57\x50\x08\xb6\xf4\xce\xee\xc9\x3f\x6e\x02\x91\x76\x0d\x8b\xc9\ \x1a\x0e\xf3\xba\xd4\xfb\xea\xa8\xf2\x1c\x41\xd8\x5c\xb0\xb5\xc3\ \x51\x3f\x9a\xc7\x52\xcb\x7c\xb6\xad\x1b\xce\xea\x12\xab\x98\x02\ \x5f\xe1\xa1\x84\x25\xb5\x5b\x09\xcf\x54\x3d\xa3\x6d\x6f\xd7\xf2\ \x24\x52\xc8\x31\x15\x98\xbb\x47\xc8\x87\xaa\x7b\xb2\x10\x52\x8f\ \x14\x64\x9c\x14\x8a\x9b\x51\xf0\x80\xcd\x29\x77\x7a\x53\x1a\x08\ \x84\x75\x73\x9c\xe2\x3c\x0d\x93\x43\x97\x45\xee\x63\x00\x9d\x74\ \xc3\x1c\x7b\x7b\xcf\xa9\xf0\x2a\xb9\xe9\x9c\xd5\xf5\x3a\xe7\x89\ \xf3\xc6\x79\xfc\x0b\x1e\xe0\x8d\xd9\x78\x72\x06\xb6\xbd\x18\x5c\ \x4a\x13\x69\xb8\x0c\x95\x77\x5f\x93\xe5\xf6\x6b\xbd\xe3\xe8\x98\ \x64\x87\x3b\x60\xe9\xc3\xe0\xee\x53\xc7\xf9\xce\x25\x48\xbc\xfe\ \x6d\x25\x9c\x92\xb9\x1c\xda\xb6\x85\xcb\x5d\x5f\x7f\x81\x0b\x94\ \xdc\x2a\xc9\xc5\x4b\x33\xca\x96\x02\x78\x8a\x6b\x8a\xd0\x25\xc7\ \x8a\x2d\x9e\x53\x68\x10\x1f\x15\x9a\xe9\x7e\x83\x8a\x64\x44\x39\ \xc1\x5c\x9b\xb9\x64\x47\x86\x23\x98\x67\xa8\x43\x98\x81\x96\x59\ \x79\xa4\x62\x19\x3e\xff\xd5\xe5\xaf\x46\x5c\x80\x0f\xb3\x9a\xad\ \x0e\x4c\xf3\xeb\x89\x5f\xed\xd9\xa7\x97\x95\x01\x4e\x91\x3e\xc7\ \x4a\xdf\xb1\x76\xc7\xe7\x5f\xed\x47\x96\x2d\x5b\x8c\x6a\xe9\xd6\ \x3c\x99\x65\xe7\x6f\x10\x46\xb1\xd2\xee\x52\xcb\x64\x7a\xae\x0c\ \xc7\x3f\xfa\xde\x71\xc7\x2b\x75\xf1\x70\xc7\x76\xc5\x8e\xd5\xf8\ \xf6\xb6\xab\xd8\x6f\x68\x68\x90\xe2\x07\x96\x7f\x70\xf4\x81\x1d\ \x3f\xb5\xa1\x79\x8c\x2b\x4f\x50\x4b\xc6\x30\x3f\xb2\x70\x2b\x21\ \x28\x56\x1f\xa6\x18\x4d\x99\x62\xbf\x40\x94\x06\x56\x76\x43\x14\ \xc5\xe2\x62\xda\x43\xac\x2d\x70\x40\x83\xb0\xaf\x2d\xa4\xf9\x88\ \xa1\xa5\x0d\x00\xb2\x25\xb7\xf2\x0a\xc0\x04\xa9\xe5\xeb\xa7\x80\ \x29\xa0\x20\x0e\x48\xa5\xc3\x4a\x25\x1f\x6d\xdb\x71\xbe\x53\x5f\ \x60\x66\xa5\xe1\x43\x0c\xa5\xd6\x5e\xa6\x11\x4e\x75\x62\x92\x39\ \x4f\x9c\x37\xce\xe3\x5f\x50\x00\x73\x06\x1e\xa5\xc2\x42\xbe\xc5\ \x33\x6b\x6b\x43\x7b\xa9\x30\xb8\xee\x02\xd9\x45\x8c\x32\x1c\x0b\ \x5b\xeb\xe0\x60\xa8\x31\xde\x85\x27\xde\x31\xdc\xd1\x4f\x44\x57\ \xa6\x1d\x8f\x2e\x5b\x89\x13\xd7\x95\x1f\x41\x57\x68\x9f\xf1\xf2\ \x24\x60\xb2\xfd\xc4\x0b\x5c\x78\x8a\x75\xe4\x63\xaa\xbf\x59\xfb\ \xe5\x8e\x26\x5c\x90\xbb\x13\xc7\xb1\x2f\x2a\x54\x5d\x7f\xfa\xeb\ \x46\xea\xa9\x9c\x39\x92\x09\xd0\x91\x6d\xa7\x2c\x6c\x7f\x7d\x8f\ \x11\x05\x16\xf6\x6a\xdd\xab\x57\xe5\x70\x3a\x57\xe2\x52\x78\xec\ \x15\x64\xc7\xe7\x97\x1f\xdf\x7a\x38\x1c\xf8\xf3\xfa\xf2\xe7\xcf\ \xfd\x05\xa1\x3c\xbd\xa8\xe8\x29\x2c\xfb\x77\xc3\xed\x15\x79\xeb\ \x91\x1e\x79\x5d\xcd\xbc\x3f\x86\x1a\xf3\x71\x75\x1c\x56\xda\x4d\ \xa9\xb9\x84\xa3\x48\x33\x6b\x40\x6c\xbf\x3d\xff\x75\x76\x7e\x1a\ \xf4\xb3\xa1\x78\x01\xf6\x73\x24\xfe\xcb\x3b\xd8\xef\xb9\x5b\x3f\ \xf4\xc1\x71\x4a\x0f\x16\xae\x7a\x95\x0b\xf3\x38\xf4\xca\x8d\x55\ \xfc\x92\x60\x5e\x88\xeb\xcd\x97\x99\x42\x14\xb1\x79\xd7\x61\x49\ \xe7\x7c\xc2\x74\xb5\xa4\x6d\x3f\x55\x54\x07\x3d\x81\xad\x38\x3f\ \x05\x43\x9b\x6d\x75\xee\x69\x34\x18\xeb\xc8\xfc\x68\x3a\x99\x68\ \x5e\xf0\x36\x7a\x48\xfb\xa8\x92\x07\x24\xd7\x25\x58\x28\xd3\x2c\ \xd3\xdc\xb4\xd6\x05\x3c\x62\xa8\xa5\x07\x45\xd4\xbf\x6f\xa8\x31\ \xe0\xbc\x7f\xb1\x5f\x34\xf8\x86\xad\xe5\x3c\x71\xde\x38\x8f\x7f\ \x41\x01\x9c\xcb\xe8\x8b\x9d\x75\xf2\x7c\xf8\xef\x91\xa6\x6e\x65\ \xce\xc6\x99\xa1\x2e\xba\x2f\x35\x4b\xf4\x27\x9c\x4e\xe8\xdf\xd2\ \xeb\x71\x5b\xa7\x49\xd5\xfd\x24\x47\x61\xae\xa8\xc4\x9a\x2e\x50\ \x2a\xd7\xa0\xbc\x0c\xd1\x7e\x82\x2c\xfb\xb1\xb5\x38\x3f\x03\xf0\ \x89\xa5\xcf\x7d\x74\x85\x81\xd6\xad\xf7\xa6\x02\xc2\x2e\xfd\xf1\ \x59\xb2\x88\x9d\xa5\xd7\x10\xe5\x96\xd5\x05\x4c\x80\xc3\x99\xa5\ \xaa\x02\x5b\x0a\x96\xca\x3d\x03\x11\x45\x16\x1b\xa4\x04\x4a\x61\ \xa0\xf9\x7d\x6d\xdb\xed\x50\x5f\x28\xba\xf2\xb2\x45\x19\xd4\xd2\ \xef\x34\xb9\x7b\xf9\xc1\x08\xb8\x3e\x55\x3c\xa8\xa0\x23\xdc\x6e\ \x73\x56\x6b\xff\xb2\xbb\xf9\x23\xc2\x28\x44\xb2\xfc\x42\x86\x77\ \xff\x70\xbd\x25\x5e\xb7\x2d\xb4\x95\x60\x32\x67\x5f\x28\x9e\xc6\ \x7e\xee\xec\xbb\x57\x07\xfb\x2d\xec\x53\x32\x12\xc7\xb1\x0c\xb7\ \xd5\x85\x71\x31\xcf\x0e\x17\x1b\xa8\x8a\xca\x0f\x89\xcc\x2a\xe1\ \xb1\x68\xf9\xb4\x9e\xde\xdc\xf3\x50\x3b\x51\x75\xf5\xd2\xf5\x57\ \x83\x48\x4e\x0f\x9f\x74\x23\xb9\xdc\x7f\xb0\x1d\x3d\x90\x75\xeb\ \xfd\xd5\xe8\x49\x2d\xfb\x73\xdd\x00\x37\xd8\x3b\x15\x6c\x01\x4c\ \x13\xbb\x94\xb5\xa4\x5c\x28\xc7\xb4\x99\x4a\xc9\x55\xca\x58\xb0\ \xf3\xe5\x0e\x2b\xf5\x26\xc0\xab\xda\x6a\xbd\xe4\x74\xa2\x3a\xb2\ \xfc\x6b\xe3\xa1\x50\x17\xce\x1b\xe7\xf1\xcf\x2a\x00\x2f\xf8\xc4\ \x80\xe6\x54\xe3\x76\x42\xee\xa2\x9c\x87\xa4\xa2\xbf\xe5\x7b\x93\ \xd1\xa0\x0d\x4b\xd7\xf9\xe8\xda\x68\x27\x60\xc5\x4a\xf7\x93\xf6\ \x3c\xc5\xa6\x56\x94\xa5\x67\xcb\x69\x54\xc0\x89\x90\x06\x54\x1c\ \xa1\x02\x6c\x68\xf1\xc7\x80\x09\xd6\x8f\x9f\xfe\x4a\xd8\x31\x37\ \x1d\x3d\x83\xcd\xf9\x49\x3c\xc5\xfe\xd0\x92\xe6\x24\x90\x75\x55\ \x55\x84\xb1\x64\x91\x24\x48\x46\xf8\x0b\x86\x66\x26\xc0\x4b\xec\ \x14\x10\xb6\x49\x3e\x13\xbd\x34\xba\x67\x58\x32\x75\xcb\x75\x03\ \x17\x5d\x53\x4b\x24\x35\x32\x7d\x60\xa7\x5e\xcd\xf3\xc4\x25\x88\ \x01\xee\x01\x01\x7e\x73\x31\x47\x51\x92\x99\xcb\x4f\xaa\x19\xaa\ \x8e\x57\x63\x20\x8c\xae\xa9\x51\x3d\x4f\x0d\x3e\xf7\x8e\x92\x8a\ \x0a\x11\x18\x1d\x98\x55\xeb\x0e\x28\xd2\x7d\xc9\x9f\xfa\xbd\xad\ \x56\x19\x6a\x7a\xda\x67\x20\x3a\xf6\x75\x29\xc5\x71\x7d\x7a\x78\ \xde\xd2\x7d\xc7\xe6\x7f\x89\x70\xac\xf9\x67\xd5\x53\xd5\xbc\x60\ \xd7\x8d\x4c\x91\xef\xaa\xf3\x67\x9e\x67\xa7\xe9\x2d\x3a\xd4\x16\ \x5f\xd6\x27\xb9\xf4\x7f\xea\x0d\x98\x66\x6d\x9e\x57\x46\x55\x85\ \x05\x4f\xb0\x52\x98\x65\x77\x29\xde\x8a\x72\x15\x5d\xcb\x63\x28\ \x67\x88\x35\x3d\xa7\xed\x63\xa5\xf5\x2a\xe0\x72\x5d\xb0\x76\x19\ \x30\x15\x0c\x38\x1b\xe6\xbb\xbf\xda\x6e\xdc\x16\x96\xce\x79\xe3\ \x3c\x72\x5e\xff\x84\x07\xd8\x8e\xa9\xcb\x78\x78\x69\x32\xfc\x0d\ \x91\xb2\x64\xd0\x77\xd7\x53\x72\xb4\x38\x59\x77\x35\x70\xac\x6e\ \xa3\x6e\x82\xf6\x13\x2c\x3a\x6a\x97\xd3\x31\x2d\x24\x57\xe4\x9a\ \x83\x94\x00\xf2\x00\x82\x34\xb6\xaa\x07\xe1\xe2\xca\x54\xf4\x00\ \xe2\xc9\x97\xd3\x31\xc9\x12\xd7\x96\xe2\xc6\x24\x49\x9c\xc9\x6a\ \xfc\x89\xa6\x21\xa8\xe9\x40\x44\x2d\x12\x08\x17\x4c\xb8\xf9\x18\ \x6b\x33\x8b\xac\x69\xaf\x5e\x67\xc4\x45\xa3\x8b\xf6\x88\x76\xfd\ \x05\x0b\x31\x71\x37\x63\xcf\x76\x82\x18\x1f\x7e\x23\x8c\x4e\xe5\ \xdb\xfd\xde\x7a\x37\x62\x83\x6b\xfe\xfe\x0e\x50\x8a\x1d\xa2\x8f\ \x1f\x1f\x89\x04\xc4\x29\xe9\x8c\x10\xb9\x9a\xd5\xec\xab\xf7\xb2\ \x0a\xdd\x51\x42\xb9\x66\x12\x3d\xb7\x14\xc7\x1b\xba\x65\xf0\xe0\ \x48\x98\x8f\xbf\x7f\xc0\x4e\xec\xa7\x9d\x5f\x1b\x54\x77\x21\xec\ \x4c\x68\x28\xe2\xa0\xd3\xb1\x87\x3b\x4d\xa3\x79\x5c\xb3\xaf\x61\ \x87\x42\x4c\xa1\x58\x05\xd3\x43\x0d\x65\xca\xa0\x1a\xd5\xf2\x13\ \xf8\xfa\x18\x26\xd1\xf3\x37\xa5\xc3\xa6\x76\x80\x19\xd2\xda\xf2\ \x40\x40\x0f\x71\xcd\x4b\x3b\xe5\x04\xd7\x5e\x8e\x42\x14\xd7\x55\ \x78\xd2\xf3\x03\x4d\xdd\x09\xcf\xe0\x7c\x95\x54\x21\xd6\x62\xc1\ \x0a\xaa\x66\xbc\xdc\x12\xeb\x04\x60\x98\xcb\xe1\xee\x77\xe2\x19\ \x9d\x77\xe0\x58\xce\x1b\xe7\x91\xf3\xfa\x27\x14\xa0\x8d\x4e\xcd\ \x1a\xf5\x1a\xf8\x9b\x60\x4f\x94\x3a\x80\x26\x75\x56\x24\x29\x40\ \xb7\xba\xb6\x51\x73\x5e\x13\x8f\x77\x61\x93\x97\x23\x5e\xa3\x02\ \x47\x9a\xd9\x0c\xe8\x21\x1d\xae\x39\x86\x6d\x59\x36\x23\x61\xe1\ \xd2\xd8\x6a\x3f\x6c\x4b\x4b\x4d\xe8\xf2\xd2\xe4\x33\xa6\x89\x94\ \x64\xdd\x00\x8b\x23\x97\x6f\x6e\x4a\x0a\x30\x08\x05\x42\x96\xdd\ \x8b\x1d\xb3\x1a\x18\xf1\x4d\xa8\xcd\x15\x24\x8a\x11\x18\x80\x1e\ \x40\xd3\x4a\x8e\xae\x84\xed\xde\xd2\xae\x0b\xb7\x0d\x03\x82\x7d\ \x7e\xf2\x5f\x12\x9d\x05\xb1\x79\x40\xcd\x5c\x0f\x48\x36\xde\xbf\ \xb8\xd8\x65\x0d\xe8\x7f\x70\x1b\xff\x53\xd6\xe1\x8c\xe8\xf7\x59\ \x3f\x9f\xb2\x90\xc3\x4b\xb4\xed\xd5\xeb\xd5\x2b\x55\x82\xaa\x87\ \xc2\x7b\x73\xfc\xaf\x59\xe0\xfc\x7f\x6e\xfb\x25\xaf\xd6\x00\x11\ \xaf\x06\xd4\x6c\xc1\x7e\x7d\x96\x07\x84\xe1\x38\x4b\xae\x2f\xb0\ \x0e\xdf\x4a\xf3\x88\xc2\x79\x90\x42\xdd\x61\xfd\x00\x92\x42\xd4\ \x30\xe2\xa9\x7f\x25\x80\xad\x23\x91\xd6\xf9\x18\xd6\x3b\x94\x5c\ \x7a\x94\x65\x18\x25\xcb\x79\xb8\x3e\xe5\x2c\x28\xc4\x4a\x94\xa7\ \xbc\x84\xe4\x17\x2d\x0d\xac\xfe\x9d\xe4\xea\x0e\x8a\x89\x72\x5e\ \x52\x8d\xf3\x8f\x95\x93\xc8\xa3\x44\x08\x37\xc5\x53\x78\xaa\xa8\ \x69\x88\xbc\x28\xef\x4a\x6b\x75\x99\xb5\x8d\x9c\x37\xce\x23\xe7\ \xf5\x4f\x28\xc0\x5d\x03\x7d\x75\x23\x60\xae\xa9\x6b\x23\x46\x8b\ \x0b\xf0\x5b\x5b\xe5\x90\xec\xaf\x29\xf0\x8a\xd7\x36\x84\x63\x9c\ \x18\xf5\xc7\x57\xf6\xfa\xa8\xa1\xf2\x75\xb3\x99\xd0\x9d\x26\xf4\ \x58\x5e\x62\x71\xa4\x6d\x60\x00\x79\x86\x9b\xb0\x40\x33\x5d\x97\ \x68\xbb\xf5\x58\x6e\x49\x49\x5d\x05\xbb\x9f\x2d\xbb\x33\x97\x5f\ \x06\xc4\x12\x31\x35\x5b\x18\x41\x73\x59\x5b\xc5\x00\xd6\x76\x67\ \x9e\x40\x36\x41\x3d\xc1\xf3\xac\x3e\xe4\x12\xbc\x9f\x11\x9d\xe1\ \xb1\x05\x04\x73\x6a\xf4\xc5\x95\x45\xf0\xdc\xe0\xf8\x3e\x8e\x2e\ \x2d\x68\xd7\x71\xea\x85\x41\xb5\x48\x14\x28\x79\x80\xa3\x0c\x6f\ \x33\x74\xe0\xd7\x19\x91\xd5\xec\x3d\x08\x19\x6f\x3d\xed\x33\xc5\ \x75\x06\xf4\x7b\xed\xe2\xde\x22\x38\xff\x4f\x1f\x9b\x91\xb7\xe5\ \x67\xb8\x9d\xa1\x6f\x7b\x69\x32\x9b\xc7\x7b\x6c\x5e\xef\x33\x7c\ \x9b\xcd\x9f\x7b\x98\x9e\x4c\x21\xbe\x64\xe3\x7c\x48\xae\x5c\x66\ \xdf\x2f\x28\x66\x55\x4e\x2d\x2d\x45\x24\x27\x77\x0b\xf7\x14\x3f\ \x00\x64\x82\xfc\xea\xe0\x75\x29\x91\xee\x57\xa8\xef\x29\x88\x46\ \x9c\x27\xec\x23\x5a\x50\xf1\x37\x86\x9c\xfc\x01\x39\x58\xab\xf3\ \x8a\xe7\xbc\x71\x1e\x39\xaf\x7f\x42\x01\x5a\xbf\xc7\x34\xe5\x30\ \x56\xef\xec\xdd\x45\xd0\x1e\xe3\x47\x82\x8f\x92\xa8\x29\x34\x1a\ \x85\x4f\xc0\x49\x7a\xc0\xdd\x56\x4a\x86\xf4\x88\x5c\x79\xb9\xfd\ \x80\xba\x8f\xa7\x82\x07\x10\xac\x96\x4e\x01\xf7\xd3\x7e\xbf\xcc\ \xba\x5a\x75\xf5\x96\x2b\xaa\x00\x2c\x53\x48\x00\x79\x64\x99\x47\ \x40\x01\xf6\xd1\xc2\xa2\xab\x55\xc1\xe5\x71\xac\xe9\xc9\x04\xe6\ \xc7\x2c\xbf\x31\x13\x6c\x3b\x26\xe8\x26\x28\x08\xd1\xb5\x68\x04\ \x60\xf8\xcb\xed\x4b\xd3\x00\x95\x17\x4d\xde\xd9\x03\x98\x59\xfd\ \xfb\xe9\x9d\xaa\x62\x99\xd4\xfe\x72\x19\x21\x65\x48\x30\xf5\xcb\ \xf1\x77\x7e\x9d\x3d\xf7\x3d\x6b\x0f\x61\xfd\xbc\xa2\x7e\x7b\x4d\ \x68\x8b\xe3\x94\x1c\x48\x09\xa7\x71\xc5\xa2\xa6\xcc\xb2\x27\x11\ \xb6\x84\xf7\x11\x89\x70\x52\x24\xc3\x1f\xd6\x73\x83\xcd\x3b\x80\ \x14\x25\x43\x0e\x30\x17\xd2\xba\xdd\xac\x1d\xc8\x60\xf2\xe8\x8b\ \xa7\x1c\x25\x80\x15\xc6\xdc\xad\x3f\x10\xd1\x1e\x78\x9d\xe4\x5a\ \xac\xf6\x67\xb3\xa9\xf2\xb6\xf7\x23\x4c\x11\x67\x62\x2e\x26\x44\ \x90\x61\x8e\x10\xb6\x6b\xee\x18\x8d\x9c\x37\xce\x23\xf2\xfa\xe7\ \x3c\x00\x69\x8d\x26\x08\x6e\x29\x80\x8d\xa4\x4f\x15\x2f\xa8\x2a\ \xb5\xd3\xcc\x13\x56\x69\x32\x1c\x7a\x09\x15\x50\x9d\x87\x18\x0e\ \xb8\x41\x49\x21\xcd\x3d\x23\xed\xc4\xb6\xb2\x5e\x5a\x47\x95\x30\ \x45\x5c\xac\xee\xdf\xe9\x9b\xbd\x6c\x25\xc3\x3e\x83\xce\xc1\x03\ \x60\xe2\x64\xf9\xa4\x20\x59\xa0\xe9\xc3\x71\x81\xb0\x70\x27\x12\ \xc8\x2b\xe6\x01\x02\xd8\x6e\xc0\x9d\x11\x93\xc7\x2c\x33\xdd\xb4\ \x82\x59\x5c\x0f\x86\x13\xd9\xfd\xcd\x84\x39\x55\x21\x88\x50\x77\ \x08\x52\x05\x6e\xf2\xa5\xf6\x99\x6a\x76\x3e\x6f\x0a\xe1\x16\xab\ \x22\x12\x43\xc8\xfb\x5b\xc9\x14\x26\x44\x7d\x0f\xc7\xa1\x7e\xda\ \x12\xba\x55\x74\x53\xdb\x55\x3e\x6c\x5c\x7a\x5e\x2a\xc3\x79\xd0\ \xfb\xef\x52\xfb\x30\x22\xdd\xe7\x8a\x74\x91\x30\x9c\xd6\x75\x13\ \xd6\xd5\x98\xe4\x71\x06\x2c\x9c\xea\x0e\x60\x10\x14\x3a\xac\x16\ \x6c\x03\x3e\xa0\xca\xe4\x58\x7b\xa9\x4a\xb4\x34\x80\x42\x46\x3e\ \x2b\x95\x1f\x16\x07\x92\x01\xad\x97\x80\x78\x2a\x71\x8d\xc5\xfb\ \xe0\x2b\xa2\x29\x34\xcf\x12\xd2\x1d\x7a\x71\xde\x38\x8f\x9c\xd7\ \xbf\xbb\x14\x2c\x79\x48\x8d\xe8\x23\xcf\x0a\xf8\x17\x1d\x4e\xbe\ \xf0\x98\x88\xcf\x91\xdd\xe4\x7c\x22\x70\xa9\x92\x4f\xa5\xd6\x0c\ \x74\x41\x98\xff\x2b\x71\xa4\x18\xb1\xca\x52\xc2\x7c\xf6\x55\x6e\ \xba\xec\x4f\xb5\xf3\xa5\xe2\x40\x2a\x9d\x0e\x12\x3f\x27\x85\x88\ \xa2\x8f\x2b\x53\x65\x0f\xd2\xf0\x0a\x08\x05\xc7\x98\x02\x38\xfc\ \x11\x99\x20\xcf\x30\x05\x39\x0c\x04\x93\xc5\x32\xa2\xae\x57\xb7\ \xfd\x03\xd1\xaf\x4c\x8d\xd5\x76\xd5\x05\x42\x99\x3d\x7f\xda\x74\ \x5b\xed\x07\x89\x25\x1c\xc2\xf0\x39\x53\x00\x3d\xeb\x87\xb7\x4d\ \x88\x52\x1e\xeb\xff\xba\xc9\x8f\xdd\xe7\xef\x85\xa8\xc4\x57\xef\ \xf9\x83\xe2\x96\xb1\x79\x06\xb0\xf9\x4b\xe4\xfa\x93\x64\x59\xad\ \x0f\xc0\xba\xbf\xa6\xdc\x28\xc1\x4e\x04\xcb\x09\x62\x03\xf2\x04\ \x49\xd2\x35\x92\x6f\x39\x1a\x16\x45\x7b\x24\xf8\xa6\x90\xa6\x28\ \xe4\x21\xf2\x95\x40\x34\x2c\x90\x7b\x8e\x3a\x0e\x79\xe4\x2c\xf8\ \x37\x96\x7e\x51\x50\x29\x28\x82\x27\xe7\xed\x2f\x94\x82\x6b\x7a\ \xa1\x1d\x43\xc7\x1a\xc0\x3c\x65\x90\x02\x7a\x26\x49\x8a\x08\xb1\ \xbf\x8b\xd8\x5f\x51\xa0\xde\x97\x0a\x77\xf0\x54\x3f\x90\x34\x31\ \x57\x89\x21\x8d\x76\x17\xe0\x2d\xa4\x58\x33\x4e\x9d\xb0\x00\x08\ \xa7\x5f\x19\x42\x04\x79\x88\x54\x25\x4b\x3d\x0e\xc5\x85\x3c\xdb\ \x54\xe0\x20\x1e\x82\xc2\xca\xb9\xcb\x4d\xd1\x33\x58\x16\x58\x8a\ \xc8\x63\xa4\x28\x63\xd5\xe3\x5f\xca\x15\x88\x38\x16\x3b\x29\x29\ \x24\x01\xcf\x65\x96\x3b\x89\xb0\x1c\x92\x2e\x22\x08\x2d\x9b\x08\ \xfb\x94\x59\xe0\x10\x46\x04\x5d\x97\x38\x51\x44\x34\x29\x82\x89\ \x2b\x04\xc3\x2a\x76\xbf\x31\xeb\xe7\x5d\x46\xf8\x10\xee\x39\x98\ \x2b\xdf\xc3\xc6\x5f\xc9\xfa\x67\xf3\xc2\x79\x92\x8b\x2f\x60\x38\ \x8f\xad\x43\xb5\xf4\x70\x3c\x1b\xb0\xd7\xb7\x8f\x14\xa1\x7e\x71\ \xc5\xf1\x7a\x22\x7e\x67\x70\xbf\x5f\x6e\xae\x58\x4a\x72\x09\x24\ \x43\x12\x40\x6e\x99\x74\x0a\x9a\x4a\xf6\xfa\x18\xf2\xfd\x78\x34\ \x34\x90\xe4\x78\x92\x77\x96\x50\x81\x28\x1d\x52\xa8\x60\x04\x1e\ \x20\x1c\xb0\x5c\x89\x50\x92\xa9\xfc\xf3\x4c\x69\x05\x3c\x31\xde\ \x38\x8f\x9c\xd7\x3f\xa1\x00\x37\xd6\xe2\x74\xe1\x6f\x30\x0a\x51\ \xbb\x4f\x0b\xc9\x84\xb5\x99\xe2\x2c\xd8\x95\x2b\xd6\x13\x4a\x36\ \x0c\x95\x4c\x35\xf3\xb1\x0a\x3e\x95\x25\x2d\x25\xc2\xd3\x24\x37\ \x95\x68\x20\x7c\x19\x2d\x28\x95\x50\x50\xc6\x69\x3e\xa1\x1e\x13\ \x34\xdf\xd0\x61\x4e\x9c\x06\x0a\x40\x3f\x4d\xb8\xba\x48\x02\x97\ \xb6\xca\xf2\xd9\x64\x4c\x1a\x9f\x2e\x7b\xde\x56\x6e\x49\xfe\xc3\ \x43\x39\x4c\x2e\x30\xc8\x6e\x67\x1f\x74\x2c\x22\x5c\xcf\x3e\xfd\ \x4a\x64\x87\x2c\x89\xd6\x05\x84\x51\xac\x04\xeb\xce\x14\xa6\xcc\ \x5c\x8b\x11\x52\xc8\x14\xe8\x0d\x86\x46\x96\x6c\x0e\x63\xed\x17\ \x0c\x6b\x54\x57\x5e\x13\xc9\xdb\x0c\x9b\xb0\xed\xdc\x25\xd6\xef\ \x5d\xb5\x5f\x66\xc1\x01\x96\xa6\x6c\x3e\x7d\x54\xb4\x14\x03\xd0\ \x4e\x9e\x30\xc7\x3e\x92\x14\xdf\x83\x3e\x20\x49\x80\x3c\x1e\x14\ \xbe\xe8\xab\xe2\xed\xf8\x1d\xc0\x07\x9b\x37\x17\x58\xa0\xdf\x33\ \x51\x3f\xdf\x11\x43\xb1\xe0\x83\xf2\x21\xc2\x63\x84\x5d\xe8\x09\ \xc0\xcf\x6e\x20\xcb\x4e\xd1\x20\x0a\xa0\x10\xa9\x28\x1f\x39\x5d\ \x13\x87\x72\x94\x97\x92\x42\x6c\x90\x25\x34\x3c\x25\x4b\xb9\x21\ \x24\x00\xbe\x10\x6e\x28\x17\xac\x27\x38\x6f\x9c\x47\xce\xeb\x9f\ \x50\x80\x66\x36\x8c\x2b\xea\xa7\xc7\xd2\x75\xf8\xc8\x08\x52\x14\ \xb3\x51\xbe\x2d\xbc\x2d\xb7\xac\xac\x94\x53\x94\x2c\x1a\x28\x4d\ \x2a\x53\x1d\xbe\xe4\xa6\x69\x85\x9a\x08\x47\x15\xe7\xd4\xaf\x79\ \x35\x99\x64\xf9\x49\x80\x28\x80\x24\x01\x17\x96\x01\x81\x81\x3e\ \xea\x84\xeb\xf0\xdc\x9b\xcb\x3a\x5a\x1d\xaa\xf1\xc7\x51\xf5\xb6\ \xa3\xa3\x5a\x9f\x94\x99\x6c\x29\x42\x9a\xe5\x3c\xcd\x9b\xe8\xf8\ \x40\x11\x92\x28\x84\x84\x83\x80\xe8\x30\x49\x6a\x40\x18\x28\xf6\ \x57\x91\x29\x88\x87\x7d\x9a\x8a\x36\x17\x76\x98\xf2\x50\x2d\xf1\ \xda\x4e\xb0\x73\xfc\x2b\x0c\x7f\x64\x38\x82\x1d\x32\xf5\x65\xd8\ \x91\x5d\xef\xfb\x37\xcf\xef\x27\x3c\xc3\xbe\xf4\x29\x47\xa4\x71\ \x38\x76\x56\x91\xcd\x23\x42\xac\x4f\xa8\x56\x06\x2b\x00\xd1\xb2\ \xa3\xc1\xb2\x13\x31\x33\x91\x3e\x47\x89\xae\x5a\xb0\xdd\x8e\x87\ \x42\xf5\x3e\xae\xdd\x04\xd7\x39\x70\xf1\x9b\xef\x18\x3e\xa4\xdc\ \x29\x8e\xc9\x29\x49\xa3\xd2\x14\x4b\x0a\x91\x09\x06\xb4\x8b\xfa\ \x4b\x11\x10\x53\xe0\xa8\xed\x09\x19\xdc\x75\x2d\xca\x3d\x4f\x3a\ \x2c\xc4\xe0\x66\x13\x42\x70\x34\x60\x16\x1c\x2b\x35\xa8\xac\xe4\ \xbc\x71\x1e\x39\xaf\x7f\x42\x01\xae\x4b\xaa\xa6\x88\x0a\xfc\xed\ \x74\x98\xab\x87\x5c\xd6\xa4\x97\xfd\x34\xbf\x4a\xfd\x4a\x0f\xc8\ \xb2\x1c\xa5\x84\xa3\x1d\xc0\x84\x3c\x71\x42\xa0\x00\xad\x11\xc5\ \x52\xed\x72\x8a\x69\x87\x35\x83\x99\xe5\x9f\x63\x96\x9f\x49\xe7\ \xfb\xb1\x9a\x5b\x64\xd9\xe1\x88\xb5\x57\xf9\x86\x68\x37\x81\x25\ \x74\x4f\x4e\x75\x01\x02\x7f\x0a\xbe\xd6\x40\x84\xdd\xc4\xd4\xed\ \x4b\x33\x30\xfb\x35\xcf\xb3\x5e\x71\x98\x4b\x02\xf4\x50\x14\xa6\ \x08\x5d\x98\xa0\x45\x00\x2c\x99\xbc\x64\x04\x9c\x22\x54\xc4\x5f\ \x18\x2e\x62\x38\x4a\x45\x7b\x0b\x86\xf5\x99\x47\xe1\xed\x2e\x1c\ \xd9\xf5\xce\xac\xed\xca\xaf\xf3\xf7\x18\xae\x55\x91\x8d\xe7\x21\ \x8a\x7c\x7c\xa6\x98\xa5\x8c\x78\x57\x95\x78\xfc\x45\x91\xa5\xaf\ \x6d\x21\xa4\xce\xc2\xb4\x1d\xa9\x0d\xd1\x33\x9c\xd7\xfe\xf2\x12\ \xdf\x5b\x71\x61\xf6\xb7\xf8\x43\x97\xfa\x0f\x6b\x0f\xd3\xfd\x4a\ \xef\x91\x5c\xc0\xea\xa3\x01\xe9\x34\x50\xf5\x04\x42\x8a\x40\x72\ \x54\x92\xb0\xe2\xa7\x24\x4b\x87\xb4\xdd\x08\xfd\x35\xb3\xf1\x84\ \x41\x96\x31\x44\x00\x2f\x2d\x91\x17\x69\x81\xe6\x5d\xa9\x6e\xe9\ \x01\xce\x1b\xe7\x11\x79\xfd\x93\x1e\x60\x52\x24\xea\x21\x74\xb5\ \x0d\xfe\x0e\x3a\x64\x62\x15\xa9\xca\x47\xd6\x6b\x46\xc9\xde\x05\ \x7b\xe5\x33\x40\x7d\x0e\xdc\x19\x23\x97\x91\x27\x88\x93\x72\x35\ \x5e\x38\x21\xf1\x9a\x06\x27\x98\x20\x86\x6a\x67\xe1\x82\xc0\x75\ \xc5\x53\x4c\x8f\xc0\x05\x91\x46\xdf\x54\xdb\xb8\x20\x2c\x71\x68\ \x2a\x40\x11\x7a\xf9\xec\xd6\xc1\xe1\xc8\x1a\x97\x79\x06\xfc\xbf\ \x5b\x38\x5a\x90\x1d\x84\xf5\x81\xb7\xda\x4e\xb7\x57\xe9\x40\x0e\ \xcb\x0a\x2e\x6a\x83\x99\x22\x78\x90\x20\x02\x71\x39\x24\xf8\xcf\ \x19\x11\xd7\x18\x01\x07\xd9\x75\x15\x15\xb8\xff\x47\xe2\x66\x30\ \x1c\xcd\x08\xe7\xc4\xb6\x60\xed\x50\xae\x40\x7f\x83\x07\x19\xee\ \x20\x0c\x12\xff\x66\x5c\xc2\x9b\xd0\x66\xc4\x63\xf2\xfb\xa4\xd1\ \x8b\xa1\x78\x1a\x3f\xf8\xf5\xb4\x12\x5c\xc7\xd1\x26\xd9\xd1\x18\ \xea\xd6\x5d\x5f\xe0\xe8\x03\x6d\x3f\x28\x65\x6b\xbf\xc0\xd8\x0e\ \x84\x93\x45\x83\x3c\x6e\x52\xac\x8f\x21\x79\xa5\x40\x1b\x10\x25\ \xac\x45\x57\x9f\x24\x75\xd5\x6e\xc4\xeb\x20\xe7\xe5\x84\xa3\x51\ \xee\x72\xba\x7c\x06\xd9\x92\x77\xca\x32\xf2\x22\x9f\xd6\x58\xa4\ \x9f\x0a\xf6\x72\xde\x38\x8f\x9c\xd7\xff\xaf\x02\xb0\x9f\x2f\x40\ \x94\x76\x72\xc1\x24\xc2\xa1\x52\x0f\x76\x65\xba\x20\x1a\xf4\x7b\ \xac\xa5\x77\xe6\x49\x33\xe5\x1b\x72\x36\x7e\xc3\x2b\x5f\x57\xf2\ \xb1\xe2\x2d\x85\x69\x91\xd0\x04\x69\xb4\x3e\x98\xec\x73\x07\x4d\ \x30\x43\x8e\x46\x01\x28\x8f\xc1\xf2\xbb\x91\x2b\x23\x0d\x57\xc0\ \x03\xd0\x82\x37\x28\x81\x9a\x4a\xba\x1f\x88\x23\xf6\xd9\xd7\x65\ \xa0\x03\x24\x4f\xf3\x3b\x4c\xef\xd7\x10\x3c\xc8\xad\xf1\x77\xf7\ \xd9\xe0\xd4\xab\xbb\xef\x18\xa9\x12\x62\xe0\xa7\xc7\xf6\xe8\x91\ \x20\x9b\x33\x7c\xb4\x9d\xaf\x86\x08\x79\xa0\x1a\x63\x45\x91\x11\ \xb9\x98\x11\xb5\x86\xe1\x74\x86\xfd\xff\x48\x28\xb3\xf4\x72\xf1\ \x24\xc3\x53\xfc\xf9\xbf\x55\x14\x86\x03\xb8\x42\xf1\xfe\x99\x02\ \x1c\x00\x48\x55\x3c\xa5\x53\x18\x6d\x6d\x57\x15\x98\xe7\xd6\xa9\ \xfb\x86\xa1\x82\xf4\xb8\x30\x66\x66\xe5\x2d\x58\xc7\x37\x77\x8f\ \xe3\x17\x4c\x8b\x3a\xcd\x18\xd0\x08\xda\x3d\x7a\x74\xb4\xea\xab\ \x30\x44\x82\x1c\x34\xaa\xe2\x90\x1c\x52\x85\x70\x40\xb4\xfc\x70\ \x34\x10\x25\x53\x88\xd6\xc6\xab\xbb\x29\x92\x63\xb4\xf8\x8b\xe6\ \x5b\xc2\xfa\x3a\x94\x73\x10\x78\x82\x46\xc0\x90\xbf\x7c\x46\xc9\ \x26\x83\x24\xb4\x4f\xd0\x39\xd9\x3e\xba\x33\x8f\xf3\xc6\x79\xe4\ \xbc\xfe\x1d\xdb\xc0\x1a\x6f\xcc\x78\x0d\xc9\xb8\x97\xac\x2e\xd0\ \xbc\x74\x74\xb4\x8d\xbc\xfd\x85\x78\x4c\x7e\x20\x7f\x67\x2d\x16\ \x4f\x4b\x83\xe4\x34\x4c\x2f\xe4\x31\x44\x6c\xa6\x38\x53\x77\x41\ \x3d\xdf\xd6\x03\x2a\x31\xe2\x5a\xad\x4e\x4d\x5e\xb4\x4f\x51\x83\ \xc1\x13\x78\x21\x61\x6c\xe1\x29\x02\x28\x02\x2d\x50\x21\x01\x40\ \x41\x08\x5d\xfc\xb4\x8e\x23\x8a\xf4\x13\xb0\x94\x3b\xfd\x40\x1b\ \x58\xa8\xe5\xb8\xf5\x3e\xc6\xb6\x0f\x87\x7e\x36\xcc\x0c\x21\xa1\ \x93\x7d\x68\x7b\xdc\x77\x7f\x7e\x6a\xbf\xcd\x36\x0d\x0f\x7f\xaa\ \x0b\x64\x19\xfa\x49\x46\x22\x48\x80\x1e\x2a\xa1\x82\x07\x23\x90\ \x2b\x06\x27\x96\x13\x98\x6f\x6f\xc0\x92\x35\x97\xbf\x79\x6e\x14\ \x57\x08\xe6\x51\xd6\x30\x45\xc3\xfb\x1b\x00\xa1\x9f\xea\xcd\x35\ \x77\xa4\x74\xac\x40\x1e\x6c\x80\xbf\x43\x88\x4e\x18\x71\xdf\xf4\ \x1d\x84\xb4\x0f\x36\x5f\xc0\x24\xb2\x66\xae\xe5\xb2\x02\xdb\xb2\ \x79\x9f\xcd\x1c\xd3\x06\x0e\x7d\x26\xef\x1b\x36\x14\x09\x53\x92\ \x60\x9d\xa4\xb8\xb8\x6e\x4a\x0e\x83\x00\x29\x77\x60\xed\x68\x6d\ \x43\x35\x84\x92\xdc\x52\xe4\xc3\xda\xd6\x78\x17\xe4\xfa\x01\x8e\ \x2f\x8e\xd1\xeb\x71\x6f\x21\x3d\xd2\x76\x43\xdb\x96\xba\x22\x0f\ \xf6\x89\xf2\x67\xd2\xc7\xd6\x62\x8d\x87\x71\x89\x35\xe8\xf6\x17\ \x9c\x37\xce\xe3\x5f\x38\x0e\x76\x1a\x8f\xa9\x9e\xee\xae\x03\xe4\ \xd8\xe6\x48\x17\xd9\xb1\x87\x70\xf0\x69\x77\xeb\x22\xa5\xbf\x7d\ \x65\xee\x29\xe9\xb4\x94\x2b\x43\x6a\x01\x8a\xe0\x26\xa7\xa0\x85\ \x4b\x87\xf4\x9b\xd0\xa2\xa5\x01\x30\x34\x4e\xf8\xa1\x7e\x0e\x2d\ \x60\x29\x2d\xa0\x42\x09\xd4\xee\x26\x45\x08\x44\xe2\x15\x14\x80\ \x86\x2c\x39\x88\x29\x86\x22\x7c\x43\xe7\xe0\xa7\x2a\xc0\x02\x12\ \x6f\x8c\x3a\x20\xc1\xb4\x37\x7a\xaf\x9a\x1f\x0b\xfd\x3b\xf7\x73\ \xda\x66\x2c\x82\x2c\xba\x43\xf1\xd7\x48\xf8\xf2\x4d\x1b\xe2\xb0\ \x80\xd2\x46\xdf\xb7\x1e\xfe\x74\x6c\xc2\x5b\xb3\x36\xa2\xe0\xbf\ \xaa\x93\x95\x82\xc9\xdd\x93\x98\x27\xe7\xd1\x42\xa5\xd1\xa2\xab\ \xd4\x85\x3c\x50\x39\xc5\xe8\xb3\x44\x34\xa1\x78\x92\xe1\x43\x76\ \x1d\x09\x3f\xa2\x3e\x27\xfb\x4b\x07\x31\xf9\x7c\xf6\xe6\xb3\x3d\ \x22\x78\x8c\xac\xf2\xa3\x7b\xb1\xa2\x99\x94\xbd\x68\x2d\x6e\xef\ \xda\x45\xf6\x1f\x85\xae\x3d\x35\x79\x5d\xae\x05\x76\x19\x05\xd5\ \x2f\xe6\xc9\x87\x61\x9e\xcd\x9d\x3a\x1a\xe1\x0c\x61\x73\xdb\x8f\ \xa7\xc5\x82\x47\x98\x11\x3a\xc2\x22\x36\x20\xcb\x7d\x54\xf9\x44\ \x55\x28\x72\xed\x09\x80\x5e\x18\xe3\x01\x35\x38\x3f\xe6\x09\xce\ \x82\x7c\x76\x93\xad\xa6\x68\xdf\x21\xf5\xeb\xac\xdf\xa3\x9e\x1a\ \x82\x5c\xf1\x54\x70\x80\x1e\x14\x4d\x1e\x23\x1e\x92\x33\x30\xba\ \x4b\xa7\xe5\x5c\x30\x94\x3c\xf9\xb2\x2d\x2c\xf7\x14\xe7\x89\xf3\ \xc6\x79\xfc\x0b\x0a\x70\x1f\x36\x2b\xa8\xc3\xd2\x0a\x70\xbc\x0f\ \xdc\x03\x9c\xe1\xd9\xc2\x48\xb3\xbb\xc6\x66\x99\x73\xd9\x22\x8e\ \x16\x07\xe0\xcf\xac\x45\x51\xec\x2a\x75\xc5\x18\x24\x5d\x23\x82\ \x8f\x88\x33\x0d\x06\xd2\xd4\x47\x0e\xc7\x28\x62\x5e\xd3\x3f\x57\ \x2b\x55\xda\xd9\xe4\xda\x3c\xe8\x34\x31\x93\x5c\x3f\x55\x0e\x01\ \x31\x76\x96\x13\x56\x28\x19\x42\x10\x8e\x6c\xed\x8b\x1f\x92\xc4\ \x07\x45\x1d\x7e\x06\x0b\xfe\xb1\xe8\x50\xee\x14\x10\x74\x4c\x5a\ \xc7\x3e\x11\xe7\x40\xd0\x5f\x4b\x4b\x15\x88\x99\xba\x89\x96\x79\ \x0a\x24\xa3\x57\x17\x5e\xb8\x8d\xd9\xf8\x47\x93\x3f\xbc\x83\xa7\ \x88\x71\x9a\xc1\x3f\xe1\xa7\x57\x9d\xd6\x76\xfe\xbc\x12\x44\xf0\ \xf6\xef\x43\xf6\x54\x81\x0b\x4d\x6c\x39\xe3\x14\x56\xfe\x66\x79\ \x25\xba\x63\x61\x68\xf6\xb7\x49\x59\x58\xd8\x49\x2a\x9f\xd1\x05\ \xeb\x06\x6f\xb7\x1f\xf2\x7d\xd5\x6e\x78\x6f\x4d\xe7\x2e\xf8\xc3\ \x8d\x41\x29\x71\x47\xb0\x9f\xd4\x8a\x94\x54\x33\xac\xeb\x4c\xda\ \x89\x6d\xf6\x4e\xf8\x05\x54\x75\x35\xba\x5c\xa7\x13\x30\x0f\x48\ \xad\xa2\xa2\x22\x7b\x85\x41\x6e\x72\xd2\xe5\xf0\xe1\x49\x17\x41\ \xaf\xcb\xbb\x2c\x7e\xea\xa5\xfe\x9a\xa1\x90\xbe\x63\x00\xba\xba\ \x11\xf1\xf9\xb4\xee\x23\x6c\xdd\x37\x51\x0e\x64\x18\x9e\x9a\x8d\ \x6a\x1d\x45\x07\x08\x87\x40\x92\x5e\x8f\x06\x21\x9e\x72\x78\x9f\ \xce\x02\xc6\x18\x7a\x63\xb6\x2f\x85\x6a\x83\x51\xee\xd2\x18\xfc\ \x44\x4c\xea\x0a\x3c\x0c\x02\x3b\xef\xaf\xe9\x6c\xa9\x77\xd9\xc2\ \x79\xe2\xbc\x71\x1e\xff\x6e\x05\xd0\x68\x26\xf7\x55\xb3\x46\xc3\ \x3a\x18\x6e\xa0\xab\x8f\x33\x24\x14\x65\x81\x72\x1f\xc7\x72\xcb\ \xf3\xf3\x1b\xad\x2f\xa4\x64\xf1\xb6\xe9\x7b\xf1\x9a\x78\x0a\x2d\ \xcd\x5e\x2a\xce\x94\xa3\x30\xa2\x4a\xaf\x0c\x58\xb1\xcb\x16\x47\ \x3b\x0d\xa7\x0f\x1e\x5a\x90\x42\x44\x4b\x63\xf4\x3d\x01\x61\x49\ \xba\xef\xd4\x8f\x3a\x35\xb3\x59\x08\x40\x41\x01\x92\xeb\xe3\x8a\ \xf0\x18\xc4\x1b\x8e\xc9\xa5\xb5\xee\x73\x13\x7e\x77\xe1\x9e\x77\ \x02\x04\xff\xc5\xaf\xdb\x4f\x44\x41\x21\x65\x5b\xc7\x0c\xf7\xa5\ \x30\xb3\x76\xdf\xb7\x1a\x1f\x9e\x07\x44\xf4\x95\x97\x20\x11\xce\ \x36\x69\x8c\x92\x09\x78\x40\x0a\xc3\x4d\x8f\xa1\x96\xb5\x03\xe6\ \x2a\x25\xa3\x1e\xad\xc3\xca\xda\x6f\xdd\x2f\xf8\x62\xe5\xf1\x66\ \xe5\xf9\x8d\xf8\xcb\x9f\x9c\xb8\x73\x4f\xf0\x27\x63\xbf\x9e\xbf\ \xb0\x02\x7f\x60\xf2\xb2\xdf\xa3\x31\x58\xd2\x36\xdc\x01\x17\x9e\ \x83\x9f\x57\x4a\xfe\x4a\x2c\x60\x67\x79\x20\xc6\x78\xe7\xa9\x52\ \x22\x8e\xd3\xee\x68\xab\x59\xe1\x20\xda\xcf\xee\x7c\x5e\x7f\xc1\ \x65\x41\xd8\xe3\xbb\xe3\xe3\x4e\xe0\x29\x02\xdc\x5c\xc5\x1f\x3b\ \x91\x02\x8f\x50\x3f\xf5\x82\xca\x49\x1c\x11\x4f\xeb\x52\x32\x71\ \xbd\x2c\x04\xe0\x7a\x63\x01\x67\x91\x47\x4c\xd2\x7d\x4b\xc9\x5f\ \x8e\xbe\x07\x60\xb2\xbd\x3e\xc9\xed\xa6\x38\xc0\x11\x72\x08\x0c\ \x40\x86\xdf\xf1\x90\xdd\x7e\x0d\xb7\x95\xf6\x53\x20\x77\x98\xaf\ \x65\xbe\xe8\x23\xae\x37\x7d\x2f\x4f\x31\xbe\x69\x59\x72\x7e\x23\ \xe7\x89\xf3\xc6\x79\xfc\x6f\x7c\x15\x6c\x1f\x83\x9b\x0c\xc3\x40\ \x3d\x46\xbe\x3d\x3e\xf7\xdd\xbf\x13\xf6\xdf\xbd\xf7\xba\xa5\xf4\ \xbe\xd9\x76\xf9\xb2\x38\xca\x6e\xc3\x98\x2b\x1e\xb4\x1f\xb0\xd9\ \xb0\x40\x2b\xce\xf8\xaf\xf6\xae\x34\x2c\xca\x23\xf9\xcf\x05\xa3\ \xdc\x87\xa0\x01\x05\x11\x85\xa0\x08\x82\x07\x9b\xa8\x51\xa2\x46\ \xa3\x89\x78\xc7\xa8\x59\xa3\x49\xd4\x28\x1e\xa8\x10\x5c\x8f\xf5\ \x4a\x34\x5e\xa0\x39\x30\x2a\x1e\xeb\x8d\x22\xe2\xf1\xf7\x40\x40\ \x10\xf1\x44\x81\x88\x80\xc8\x3d\xc3\x31\x07\xcc\xcd\x0c\x33\xc3\ \x6c\x55\x0d\xfd\x61\xbf\xed\xf3\xfc\x93\x27\xbb\x1b\xe7\xcb\xef\ \x99\x9e\xf7\xed\xb7\xfa\x57\xd5\xd5\xdd\xd5\xd5\xef\xf0\xb6\xa2\ \x9a\x3b\x8e\x76\x0d\xa2\xd3\xf3\xd1\x76\x12\x40\x68\x90\xf0\x01\ \x59\xfa\x25\xc1\xf6\x4e\x43\x28\x26\x85\x5b\x28\x60\x59\x48\x84\ \x58\x0d\x01\x7b\x4a\x28\x10\x16\x66\xcd\xd6\xe5\xd4\x50\xca\xd4\ \x21\x79\x26\x60\x76\x6b\x42\x1a\x34\x6f\xe4\xc8\x90\x7d\x79\xd0\ \x63\x4f\x1c\x4f\x69\x9f\x05\x9e\xe2\x8c\x6d\xe6\xde\xa4\x9f\x61\ \x28\x50\xaf\xbe\xb2\xa4\x14\xf6\xed\xa3\x07\xca\x06\x9a\x21\x53\ \x7e\x1e\xd7\x8f\x0f\x84\xda\xef\x32\x8f\xb4\x24\x02\xae\x37\x17\ \xa0\x42\x1d\x82\x4d\xc9\x96\x51\xf8\xbb\x29\x15\xd1\xe1\x0e\x94\ \x03\xda\x3d\x01\xc3\xd9\x8c\x8a\xef\x48\x40\x57\x1d\x54\x1e\xb4\ \x2e\x08\xe2\x07\x9f\x8d\x5c\xe6\xfd\x05\xb4\xeb\x64\x6e\xc6\xed\ \x9f\xaf\x83\x03\x0b\x4d\x91\xcc\xc8\x03\xf1\x7d\xc3\x36\x3f\x88\ \xc7\x30\x90\xe2\xf8\x35\x11\xcd\x85\x86\xb7\x52\x36\x34\xb8\x5d\ \x17\x6a\x5f\x35\xb6\x8b\x14\x1f\xd9\xa9\xf8\x30\x6b\xbb\x79\x0b\ \x28\x36\xb7\x92\xff\x2b\xa9\xe8\xb2\xcd\xb7\x74\xe0\x6c\x99\xb0\ \x0b\x75\xa0\x8d\xb4\x97\x17\x65\x1e\x68\xf7\x29\x6e\x92\x9b\x64\ \x38\x19\x34\x7e\x64\x7c\x82\x49\xa3\xa6\x65\xed\x12\x5c\x9d\x28\ \x57\x98\x33\xda\x4e\x3c\x7c\xc8\xf4\xc2\xf4\xc4\xf4\xf6\x1b\xa4\ \x85\x67\x97\xa0\xfd\x72\xe3\x2c\xe0\xb8\xdb\x6f\x7b\x6c\x76\x83\ \x45\x95\xe8\x4b\x5d\x2f\xc1\x5e\xdd\x8d\x2b\x5b\xf5\x7e\x46\xa1\ \x51\xa3\x1f\x6f\x94\x1a\xca\x31\x0b\xd6\xb8\xdb\x98\x81\xf9\xf1\ \xe4\x09\x02\x28\x4e\x90\xe5\x30\x82\x02\x17\xd1\xf6\x13\xe9\x64\ \xdd\x86\x2e\x07\x29\xd4\x19\x65\x73\x9d\x2c\x7f\x3e\x7f\x70\xa7\ \x21\x5c\xb1\x8e\xc1\x40\x18\xa5\x81\x13\x8e\xea\xa8\x26\xe2\xe6\ \x83\x47\x48\xa7\x39\x86\xa3\xc1\x80\xe5\x3a\x5d\x49\x00\xc6\xe7\ \x24\x5e\x87\xa0\x27\xf7\xe1\xb9\x86\x9d\x12\xe0\x5c\x60\x49\x9b\ \xe0\x05\xcc\xc6\x03\x6f\x44\x2c\x07\x0a\x2e\x3f\xaf\x2d\x4c\xef\ \x0d\xab\x88\x6b\x79\x63\xce\x7a\x82\x2b\x2f\x3c\xff\xcb\x4f\x43\ \x61\x72\x36\xf3\xe8\xf2\x7d\x30\x87\x59\xbb\xf6\x70\xca\x1e\x18\ \xeb\x37\x99\xcf\xee\xf8\x01\x3c\xd3\x81\xd1\xd9\x21\xa7\x60\x08\ \x48\xdd\x58\x63\xb9\x0e\x0a\x39\x3c\x29\x33\x78\x1d\x6c\x56\x2d\ \xd9\xb9\x2a\x0d\x4f\x31\xf7\xfd\xc9\xe3\xfa\xb9\x73\x38\xad\x92\ \xcc\x39\x62\x46\x17\xaf\x8b\x28\xa5\xed\x59\xf3\x0a\xca\xe6\xdd\ \x0c\x81\x30\x2e\x19\x70\x0b\x05\xc8\x20\x49\x96\x07\x88\x7b\x22\ \xe8\xe1\x48\xf1\xe9\xb4\xbe\x9f\xcf\xf7\xa7\xf2\x1a\x9b\xfb\x74\ \x48\x7d\x44\x97\x32\xe2\xe9\x23\x7b\x2f\xea\x40\x7b\x1d\xa2\x69\ \x6e\x95\x8c\xe7\x06\x4c\x8e\xc6\xf5\x98\xda\x66\x1c\xd0\xfe\x18\ \xcf\x31\xe8\x2b\x8d\xb9\xc6\x0a\xfd\x78\x6d\x17\x7e\x8e\x76\xe8\ \x95\xad\x4c\x2f\x4c\x4f\x4c\x6f\xff\x6f\x03\xe0\x72\xb7\x90\x43\ \x86\xa3\xc9\x32\x5c\x4e\x38\x9c\x16\x7c\x0e\x76\x57\xd4\x6d\xb9\ \x4b\x92\xe5\xca\x63\x89\xf4\x5e\x7b\xbc\x76\x74\x6e\xb8\xf1\x55\ \x7b\x0a\x4e\xbe\x8c\xbb\xf4\xb3\x31\x26\x6e\x0a\x36\xce\x35\x7f\ \x4c\xb1\xea\x10\xfb\xf5\xd6\x4d\x0e\x97\xde\x94\xf9\xb2\xc1\xa1\ \x80\x8e\x70\x3e\xed\xfa\x21\x19\x42\xa2\x6d\x1c\x29\x3c\x41\xb0\ \x86\x42\xcc\x55\x3c\x37\x5a\x5e\xb5\x76\x06\x94\xaa\x21\x62\x46\ \x79\xf7\xd4\x73\x7c\x01\x23\x89\xe8\xbf\x72\xee\x52\x02\x45\xa6\ \x3e\x02\x70\xa5\x3e\xb0\xb2\x00\x7b\x4a\x4b\x48\xda\x68\xf4\x44\ \x8d\xdf\xec\x82\x40\x8b\x60\x88\xac\x60\x53\x14\xdc\x76\xd7\xad\ \xf8\x38\xf4\xec\xc1\x57\x06\x15\x66\x41\xbf\x18\x6e\x7c\x2f\xe4\ \x99\x05\x3c\xc9\xd3\xc8\x05\xc5\xe0\x89\x86\x08\xc2\xfb\xe4\x40\ \xfd\x7d\x7e\xe8\x11\x78\x52\x84\x2f\xa1\x52\xba\x6e\xc6\x00\xcb\ \xde\x86\x97\xdb\x4f\x03\x86\xc8\xf7\x5d\x3c\x82\x43\x57\xdb\xcb\ \x57\x76\xd8\x1e\x73\x26\x65\xfc\x1c\x07\x87\x5c\x4d\x72\x3d\xa7\ \x00\xcd\xdf\xa9\xc7\x53\xee\x1e\xca\x4f\x06\x3d\xd5\xea\x09\x78\ \x6e\xa4\xf8\x44\xc1\x5a\xda\x2b\x71\xb5\xa5\xcd\x21\xb3\xbc\xeb\ \x3a\x8a\xa8\x46\x3b\x64\xd2\xa6\xda\x4a\xe7\xd1\xd4\x71\x2e\xe1\ \xeb\x27\xcd\x77\x8c\x8f\x31\x90\x6b\x3c\xa4\x9f\xa0\xfd\x19\xf0\ \x76\xfb\x63\x8c\x64\x4a\xd2\xda\x8f\x69\xd2\x73\xc3\x41\x0f\xf1\ \xa8\x07\xa6\x17\xa6\x27\xa6\xb7\xdf\xf0\x6c\xa0\xcf\x20\x1c\x89\ \x78\x17\x1c\x77\xe3\xc8\xe3\x15\xef\xae\x81\xfa\x0b\x75\xf1\x82\ \x64\x5d\xc2\xf9\x43\xaa\x50\x83\xbb\x7e\x92\xcc\xbe\xdd\x5b\xff\ \x50\x3b\x94\x04\x3e\xa7\xd9\x8e\x89\x4c\xb0\xf5\x71\x97\x2c\xbd\ \xd5\xb1\x8a\xd0\xd7\xbd\x0f\xc5\xb0\x07\x3a\xfb\x52\xe0\xc8\xdb\ \x7e\x38\x2a\x94\x33\x5f\x18\x48\x0f\x52\x08\xc6\x12\x91\x16\x72\ \x8d\xa1\x40\xec\x7e\xc0\xbb\x80\x0b\x3a\x3d\xc3\x34\xfa\xfd\x39\ \x12\x6b\xf1\x45\xa4\x3d\xb3\x04\x4e\x0c\x11\x58\x65\x96\xe1\x90\ \x61\x72\xd0\x08\xd0\x70\x0c\xe7\x1b\x3c\x00\x43\x75\xc3\x8a\xbf\ \xa0\x4d\xe3\xab\xf9\x9f\x00\x66\x2b\x6b\xb3\x7c\x00\x8f\x29\x63\ \xee\xf4\xa4\xf2\x6d\xf7\xcf\xe0\x75\xda\x80\xe2\x6d\x74\x16\x59\ \x5f\xeb\x47\x59\xb9\xd1\xaa\xa9\xb4\x99\x93\x4c\x21\xde\xf9\xb0\ \xe6\x89\xb1\x1a\x22\x29\x7c\x7e\x47\x36\x19\x68\x0d\x28\x7e\x81\ \x75\xee\x02\x72\xa2\x3c\xd5\x28\xb7\x25\x0a\xdb\x81\x72\x43\xbb\ \x66\x90\xab\x57\x08\x03\x49\xf1\xc1\xf6\xcb\x48\xf1\x72\x67\x67\ \xab\x87\x70\xeb\x43\xf5\x3c\x77\xaa\x44\x83\x33\x1d\x41\x43\x6f\ \xbf\xd0\x16\xaf\x5e\x0b\xd8\x5f\xaf\xc7\x44\x13\xd5\x23\xfd\x2e\ \x7d\x7f\x99\xbd\xf6\x28\xbf\x5c\x37\xec\xfc\x21\xa6\x07\xa6\x17\ \xa6\xa7\xdf\xfc\x70\x28\x05\x12\xc8\xa2\xea\x41\x5d\xe6\xf7\x5c\ \x86\x3b\x5a\xc0\xe2\x4e\xf8\x0c\xf1\x38\xc8\xa9\x7f\x78\x50\xe4\ \x61\x98\xac\xfe\x32\x45\xaa\x2f\x37\x6c\xd2\xb7\x9a\xf7\xb4\xef\ \xd2\xce\x54\xe0\x9b\x79\xd7\xeb\xce\xa8\xa7\xa3\xab\x36\x57\x0a\ \xee\x21\xa1\x9c\x41\x2e\x0a\xea\xd9\x85\x9e\xc3\x00\x20\x11\xc2\ \x6d\x0d\x60\x9a\x69\xa3\x53\x0b\xf5\x7c\x67\xbb\x14\x8a\x24\x4e\ \xb5\xd5\x76\xf6\x18\x54\x24\xba\xce\x03\xa4\x80\x6c\xde\x09\x34\ \x08\x20\x7a\x8b\x75\x3b\x96\x14\x70\x19\x0c\x24\x86\x14\x92\x46\ \xdf\x7d\x2d\xcf\x48\x21\xce\x60\x20\xe4\x7a\xc1\x63\x4c\x21\xc5\ \xbc\xc7\x51\x90\x07\xd9\x64\x59\xd5\x89\xa3\xa9\xde\xc9\x54\x3e\ \x0a\x70\x4a\x67\x8f\xc6\xc9\x29\xde\xbf\x00\x15\xd9\xa9\xe8\xe3\ \xa8\x60\x32\xc4\x2c\xea\xe1\x35\x28\x07\xc5\x21\xb2\xe8\x90\x67\ \x28\xca\x49\x7b\x21\x9b\x05\x1a\xa2\xee\x73\x5b\x5b\x5a\xd6\x29\ \xec\x6e\xd3\xe6\xd9\x48\xa7\x10\xda\x3d\x7d\xe6\xb6\x90\x7e\x4f\ \xf4\x18\x46\x79\x13\x35\xae\x2e\x18\x58\x83\x65\x1e\xbe\x06\x22\ \xa3\xad\x54\xb5\x0d\x9d\xb9\xee\x8c\x12\x54\xaa\x4f\xd3\x4f\xd3\ \xab\xcc\x7b\xea\x95\xfa\x18\xd5\xdd\x14\x29\xe3\x9d\xe9\x81\xe9\ \x85\xe9\xe9\x77\x7c\x3f\xc0\xcc\x60\xa4\x87\x9b\xcd\x05\xf1\xdb\ \x25\x3e\xd7\x7b\x40\xbf\x11\xf5\xb3\x4f\x77\xcc\x32\xb6\xa5\x26\ \xd7\x4e\xd5\xc4\xaa\x96\xe7\x2c\x34\x2c\xd5\x2f\xd1\x7a\x72\x14\ \x86\x77\x34\x3f\x4a\x37\x60\x7a\xb5\x6e\x96\x92\x8b\x99\x7f\x66\ \x27\x5b\xdc\xc6\x75\xe1\x2a\xdd\xa7\xd3\xe9\xd8\x69\x6f\xc5\x93\ \x61\x8c\xf2\xdc\x41\x04\xf9\xb8\x85\x93\x87\x70\x72\xdc\x44\xc4\ \x4d\xa1\xa1\x02\x56\x76\xb6\x42\x5a\x46\x1e\x17\xcc\x20\x83\xf0\ \xe5\xfb\x13\xe1\xd9\x7c\x24\x32\x11\x14\x95\x4b\x0a\x49\x23\x03\ \xe1\x90\xc2\xac\x8a\x5a\x08\x48\x06\x63\x35\x14\x40\xf4\x20\xd9\ \xe8\x39\x08\x23\xb1\xde\xce\x72\x76\x5d\x0d\xdc\x17\xc3\x0c\x0c\ \x40\x01\xf5\xd2\xf2\x15\x9e\x53\x0c\x08\x06\xc1\x9b\x86\x86\x06\ \x72\x8c\x01\x4c\xb0\x24\x0a\x86\xe0\xf3\x40\x4e\x4f\x3a\xda\x75\ \x99\xe4\x86\xc8\xa7\xe3\x3e\x1a\xdb\x3f\x73\x9b\x46\xcf\x71\xf6\ \xfc\x84\xba\x94\xdb\x5b\xdf\x13\xba\x76\xc3\xa1\xcf\x62\x2e\xb0\ \x45\x17\xef\xa0\xf3\xc4\xf7\x25\x18\x26\xaa\x7f\x90\xad\x07\x86\ \xbf\x6e\x5b\x0c\x09\x24\x8a\x9a\x31\x9a\xef\x54\xd5\x39\x0b\xed\ \x3e\x75\x9c\x6d\xac\x48\x4d\x65\xbc\x33\x3d\x30\xbd\xfc\xce\x2f\ \x88\x60\x9e\x80\xfa\x8a\x0c\x67\x99\x5d\x6f\x43\x8f\xe1\x68\xfb\ \x05\xce\xf1\x85\x45\xdd\x8b\x3c\xdd\x8f\xfc\xfd\x6d\x43\x8f\xdc\ \x11\xbb\xaa\xa3\x34\xbb\xcb\xba\x18\xba\x6a\x63\x95\x85\x60\xc1\ \xb7\x94\x53\x1b\xcf\x82\xa8\x87\xb5\x1e\x2d\x55\x14\xc9\xea\x25\ \xe8\x4b\x22\xec\xef\xd6\x0d\x73\x55\x78\x27\x7b\x0e\xc7\x9a\xb9\ \x91\xde\x34\x69\xb4\x58\x7a\xa0\x41\x40\x9e\x81\xfb\x3d\x40\xd8\ \x14\x71\xde\x44\xbf\xdf\xb5\xdf\x0d\x48\x07\xcf\xc9\x43\x70\x6c\ \x62\x01\x57\x5a\xe6\x0b\x34\xa4\x90\x51\xfc\xb5\xd6\x1e\xcc\x57\ \x53\x8f\x7e\x0e\x8a\x42\xcf\x92\xc5\xe6\x16\xbc\x62\xc2\x6c\x7e\ \x78\x27\xbe\x4f\x58\xcd\xab\x23\x7c\x46\xd7\x45\xc1\xf7\xe9\x9d\ \x06\x56\x4f\x9e\x20\x94\xbf\x9d\x96\xaf\x2b\xe9\x39\xe0\xca\x6d\ \x63\x49\x8e\x55\x20\x07\xa2\xd2\xce\x2a\xd7\x14\xe7\xbf\x93\xdc\ \xc7\xdc\xf9\xd4\x8e\xd6\x1e\x49\x56\xe6\xbc\x83\xf1\x57\xfe\x81\ \x9e\xcb\xe8\x7b\x24\xb6\xdb\x92\x66\x8a\x16\x7c\x45\xbc\x94\x60\ \xde\xbf\xa1\x59\xb5\x15\x79\x32\x3c\xd4\x2d\xc2\xc0\x91\xe8\x7b\ \x75\xb2\x7a\x60\x59\x17\xad\x94\xd7\xae\xab\x3e\x72\x27\x70\xa2\ \xef\x1e\xe0\xf9\x1a\xe3\x9d\xe9\x81\xe9\xe5\x77\x35\x80\x7f\x35\ \x84\x48\x4f\x6b\x6c\x19\x17\x75\xe6\x4c\x8f\x7c\x0f\x3c\x8f\x93\ \x10\xf4\xca\x17\x76\xe5\xf3\x86\x8a\xf2\x0c\x1d\xaa\xee\x3f\xce\ \x68\x8a\x56\xdf\x54\xff\xb5\x7e\xab\x21\x5e\xf3\xa5\x1c\x14\xa8\ \xd7\xb7\x3a\xd7\xa9\xa0\xc1\xb7\x34\xee\xcd\xef\x80\xe8\x1b\x61\ \xeb\xe6\x38\x9d\x2c\x8a\x71\x5b\x0d\xb8\x40\x70\xaa\xd7\x47\xf4\ \x0a\x19\x7f\xdf\x29\x56\xa2\x7c\x8e\xd2\x64\x8a\xf3\xd6\x21\x22\ \x36\xc1\xe3\x2b\x72\x72\x0a\xb7\x5c\x6b\x0f\x72\x6a\x21\x9c\xea\ \xb0\x9b\x30\xbd\xeb\x41\xec\xc1\xdc\xcf\x85\xe3\xc9\xb3\xb8\x08\ \xbf\xa3\x9e\x5e\x68\x7b\x06\x91\x93\x6d\xd3\xcf\x8a\x82\xfb\x0c\ \x59\x39\x5d\x57\x43\xd7\x5d\xb6\x28\x84\x71\x68\x60\xa0\xe0\x59\ \xac\x5e\x3c\xce\xce\x5b\xe0\xb0\x8c\x70\xb5\x93\x13\x51\x9e\x43\ \x72\x14\x5a\x46\x79\xfe\x44\x72\x5a\xde\xba\x6d\xf5\x70\x24\xf7\ \x16\xfe\x3d\xdf\xd1\x80\x31\x82\x6d\xbd\xe6\x51\x79\x18\xb6\xd3\ \xe2\x03\x5b\x50\x2e\xc0\xc3\xbb\x6a\xbe\xe4\x53\xe0\xe5\x6d\xe0\ \xa5\x1e\x30\x5e\xfd\x85\x1c\x3c\x46\xe3\x70\xd5\x54\xb5\x7d\xfd\ \xd6\xfa\xc3\xfa\x50\xd5\xe9\x1f\x67\x30\x5e\x19\xcf\x8c\x77\xa6\ \x87\x3f\xec\x2d\x61\x5c\xee\x07\xd8\x3f\xa3\x78\xbb\xf9\x10\x0e\ \x31\x8d\xe8\xa3\xea\x0e\x6a\x90\x9c\x0f\x2a\xf7\x99\xcb\xa9\xbf\ \xa9\x7f\xad\xd2\xf0\x94\x2f\x0f\x5c\x15\xef\x53\x4e\x52\x69\xc4\ \x63\xf5\x7a\xf5\x36\x69\x34\x04\x29\xe3\x65\x99\x95\x68\xf1\x76\ \x8a\x55\xb5\x0b\xf0\x4e\xfd\x3a\xca\x76\x85\xde\xe3\x70\x91\xde\ \x28\xa2\xf1\x6a\x06\x5c\x65\xd3\xcf\xcf\x0f\x51\xb0\xb6\xef\x60\ \xc0\x41\xfc\x7b\x7e\xab\x89\xf8\x2d\x3e\x3e\xe4\x19\x56\x79\xdb\ \xd3\xf7\xe3\x3d\x0e\x92\x44\xb5\x1e\x36\xe8\x51\xb8\xff\x70\x5f\ \x4d\x4d\xcc\x75\x81\xfa\xb9\xa3\x79\x6e\xce\xce\xd6\x72\x1c\x83\ \xe9\x6d\x45\x2d\x0c\xa9\xfc\x0a\x94\xe3\x75\x3c\x67\x0b\x29\x98\ \xe7\xb2\x85\x4e\xed\x16\xbb\xaf\xa1\xdf\xa7\x42\xbd\xe8\xe2\x7b\ \xf7\x78\x08\x08\x43\x8d\xb7\x37\x51\xd0\xdb\x27\x84\xe4\x5a\xed\ \xb7\x90\xde\xf0\xd1\xaf\xaf\x3b\xe6\xeb\xdb\xd8\x90\xdc\x83\x04\ \x22\x2f\x03\xed\xf3\xdf\xc5\x2c\x7d\xb3\x59\xaf\x6f\x6b\xc3\x93\ \x4b\x8a\x44\x6c\xb7\x7e\x87\x5c\x5e\x89\x27\x9c\x26\xa8\xef\xc9\ \x20\xa0\x26\x56\x29\x8b\x55\x47\xc5\x63\x2b\x8a\xd5\xdd\x15\xb3\ \x0f\x5c\x65\x3c\x32\x5e\x19\xcf\x8c\xf7\xff\xa0\xf7\x04\xbe\x03\ \xea\x02\xf7\xca\x93\xbd\x8f\x63\x52\xe0\x5e\xef\x22\x68\x8e\x4d\ \xe0\x76\x9f\x81\x9c\x29\x69\x09\xe5\x5d\xd5\x1d\xca\x39\x7b\x52\ \x6b\xb6\xb4\x2c\x56\x0c\xa8\x4c\xd5\x97\xa9\xc2\xa5\x15\x60\x08\ \x0d\xd2\xb9\xaf\xd6\x03\x11\x4d\x52\xfb\x32\x88\x1c\x1a\x2f\xa8\ \xae\x34\x7f\x8d\x9b\x4c\xa6\xd7\x14\x48\xa9\xe1\xe5\xba\xf1\xb0\ \xff\xd9\xce\xec\xb5\x11\xf0\x84\x6d\x40\xdf\x7a\xc0\x44\x5b\xcf\ \xc0\xb3\xe8\x80\x6d\xba\x05\x7c\x83\x8a\x12\xfc\xd0\x4f\x43\x4d\ \x52\xfa\xdf\x23\x0f\xe0\xea\x97\x6e\x35\x08\x5f\x27\xf4\x04\xdc\ \xfd\xbd\xf6\x52\x79\x6d\xaf\x54\x2a\x2f\xea\xd9\x93\xb0\x16\x10\ \xcb\x95\x50\x8e\xd7\x9d\xe8\x95\x8c\x8a\xe6\x2a\xe1\x3e\x7c\x7e\ \x98\x5f\x0e\xfe\xce\x2b\xf6\xff\x15\x0d\x81\xbf\xb6\xaf\x88\x14\ \xac\x0d\xf8\x00\x10\x5e\x51\x1b\x98\xd4\x29\x97\x1a\x30\xc7\x66\ \x1c\xde\xcf\x71\xe1\xed\xc7\x63\xdc\x90\xf9\x78\x11\xe7\x1a\xc6\ \x27\xea\x93\xcd\xe5\xd4\xce\xe8\x72\x3c\xb1\xd7\x24\xdd\x5d\x71\ \x18\xf0\x9c\x7a\x8c\x14\x0c\xb8\x5a\xda\xe2\xa4\x28\xaf\x4c\x2d\ \xf3\x57\x05\x28\x5a\xf7\xa4\x32\xde\x18\x8f\x8c\x57\xc6\xf3\x7f\ \xdc\x8b\x22\x69\x04\xa2\x31\x68\xb6\x12\x4f\xc8\x0a\x67\x0a\xf7\ \xe1\x26\xe9\xc0\xd8\xde\xb0\x23\x20\xd2\x84\x4c\xf3\x0b\xe6\x88\ \x2e\xfb\x56\xb7\x69\x3d\xd4\x11\x3b\x6f\x16\xdf\x68\xb6\x6f\xb9\ \xf3\xb8\x5d\xb3\x44\x75\x4b\x7e\xa6\x23\x59\x37\x5e\x16\xfd\x7a\ \x1e\x10\xf2\x5d\x53\x7c\x91\x12\x8f\x38\xc9\x8e\x94\x7f\x08\xb6\ \xbe\x5e\x33\x44\xe6\x80\xab\x08\x93\x03\x25\x98\x58\x78\x75\xae\ \x4a\xc0\x13\x36\x1e\xde\x19\x80\x39\xc2\x07\xfe\x57\x00\x8b\x84\ \x4b\x02\x03\x51\x0e\xe1\xec\xa0\x5f\x50\x11\xc2\xd2\xfe\xef\x92\ \xe1\x0c\xeb\x3f\x80\x14\x74\xbd\xbf\x17\xa2\xcd\xb8\xa0\xf3\x80\ \x5b\x6c\x66\xf6\xff\x94\x70\x1c\x21\x95\xd3\xf5\x2f\xe1\x3a\x44\ \x5b\x40\x7c\x7f\x61\x12\xd5\xc3\xed\xb2\x38\x08\x27\x6d\xb5\xc2\ \x88\xb7\x23\xb0\x5c\xf8\x0d\x1a\x04\xcc\xf5\xf3\x48\x0e\x05\xef\ \x1f\x28\x97\x65\x85\xc9\x84\x72\x1a\x5f\x6b\x66\xca\xa0\x3d\x86\ \x47\xd2\x65\x65\x90\x32\xa6\x2b\x6d\xba\x59\x54\x04\xb8\x43\xb6\ \xa1\x02\x0c\x5e\xf3\xb5\xea\xb0\xfc\x5c\x47\x72\x91\x63\xd3\x67\ \xf2\xaf\x1f\xb7\x57\x05\x6b\x3e\x56\x95\xef\xbc\xc9\x78\x62\xbc\ \x31\x1e\x19\xaf\x8c\xe7\x3f\xcc\x00\xfe\xfd\x49\xe2\x98\x9b\x64\ \x08\x65\x36\xdd\xf1\xa8\x65\xc8\x0b\x7f\x48\xfa\x6e\x10\x0e\x19\ \x11\x08\x63\xd8\xb5\xb1\xea\xdb\xdc\xb0\xb6\x9d\xdf\xce\x7c\xf0\ \xa5\x78\x82\x8c\x7b\xf1\xe3\x66\x55\xcb\x05\x79\xa6\x3a\x5c\xf7\ \x4d\x4b\x55\x2d\x2c\xa3\xb4\xb1\x0d\x71\x85\x89\x40\x58\x92\xd8\ \xe6\xc9\x13\xa0\x20\xbe\xf9\xf6\x0b\x0d\x10\x5b\xa1\x8a\x69\x98\ \x85\x6f\xe1\x33\x34\xeb\x71\xac\xb7\x74\xac\x14\x2e\xa2\x9e\x3a\ \xcd\x75\x35\x79\x84\xfb\x5e\x73\x00\x8b\x6c\x67\xf9\xfa\x02\x2a\ \xbb\x2c\xf6\x2f\x06\xac\xed\x52\x16\x10\x47\xf8\x76\x60\x29\xca\ \x09\x98\xc4\x10\xcb\xbb\x42\x39\xfd\x7e\x03\xae\xc3\xfb\x76\xfa\ \xd7\xe3\x77\xa1\xb5\x9e\xfd\x82\x6f\xbd\x96\xe2\x90\xc3\xef\x03\ \xcf\xa1\x65\xa5\xf0\x67\x5c\x23\x18\x0c\x98\xf4\x69\x6c\x57\x2e\ \x68\x80\xfb\xf4\xbf\x48\x76\xbd\x10\x80\x21\xcf\x02\xb9\x2b\xa0\ \x1d\xf9\x8d\x37\x8a\x72\xe0\xfb\x8d\x96\xaa\x3a\x30\xd4\xe6\xe4\ \x96\xd8\x96\x03\xea\xf0\xfc\xcd\xa2\x1f\xa5\x49\x17\x3f\x56\x8f\ \xe1\x14\xb4\x4d\xfa\x76\x26\xe3\x85\xf1\xc4\x78\x63\x3c\x32\x5e\ \xff\x6b\xde\x16\xce\x2c\x95\xcb\x1d\x0b\xea\x80\x0d\x0e\x55\xe9\ \x63\x68\xd0\x93\xa0\x1b\xbe\xe0\xe8\x65\xf3\x46\xe6\x86\x42\xe3\ \x72\x73\x9d\xdd\x9d\x27\x9b\x3e\xdb\x9d\x91\xbf\xa6\x29\xa9\xe5\ \xd3\x5d\xde\xcf\xeb\x1a\xee\xc9\x86\x17\xd6\x28\xc3\x5a\x27\x4a\ \x4c\xa6\xb9\xba\x9f\xa5\xbb\x5f\x5d\x00\x22\x6d\xc4\x33\x9e\xd8\ \x03\xc6\xd5\xaa\xf2\x4e\x01\xa1\x0f\xc4\x79\x8f\xa0\x66\x83\x41\ \xb2\xb4\x44\x0b\x0a\x90\x2a\x63\x70\xd7\xd0\xb4\x51\x77\xbd\x15\ \x73\xe3\x32\xdb\x1f\x1b\xd6\x51\x16\x7d\x26\x6f\xaa\xf5\x45\x10\ \x14\x79\xcb\xe6\x5c\xb6\xf3\x42\xe4\xa6\x3b\xc8\x10\x19\x5a\x8e\ \x43\x39\xae\xf7\x8f\xe1\x75\x70\xda\x61\x0f\xde\xd7\x51\x60\x78\ \x8c\xb9\x81\xe6\x23\xba\xd3\x78\xa6\xd1\x34\x57\x11\x53\x7f\x0f\ \xfb\xa4\xf4\x6f\x25\x3a\x90\x43\x27\xbe\xff\x08\x0c\x43\x97\x5f\ \xe7\x7e\xff\x3e\xc8\xa7\x15\x9d\x7a\x12\x0d\xdf\x1b\xa4\x17\xd0\ \xc5\x2b\xba\xb5\x06\x37\xcb\x4d\x73\x9f\x7d\x28\x1e\x2b\x6b\x2b\ \x2c\xcc\x3f\xd5\x58\x2e\x17\xec\xb2\x77\x16\x39\xfb\x9a\xc6\xed\ \xce\x60\x3c\x30\x5e\x18\x4f\x8c\x37\xc6\xe3\x7f\xfd\xff\x05\x70\ \xb9\x2b\x0e\x02\xf8\xf2\xf3\x2a\x63\x81\xc6\x8f\x7c\x1c\x9d\x60\ \x0d\xa0\x0a\x1f\x3d\x2c\x54\x03\xcb\x9a\x7e\x43\xa6\x07\xf0\x38\ \xe2\xe3\xbd\x5b\x7a\x9b\x3d\xdb\xba\x6f\x08\xbe\x75\xb2\x3a\x4b\ \xb2\x28\x69\xe7\x73\xa3\xf8\x84\x54\x5e\x26\x94\xcf\x95\x77\x6f\ \x9a\x68\x5c\xaa\x8b\x95\x1a\x5f\x3f\x05\x17\x7a\x5f\x7c\xba\xa0\ \x00\x08\xdf\x5e\x1b\x93\x7b\x15\x70\x68\xf5\xa8\xec\xe7\x40\xbc\ \x6d\x2d\x2f\x47\x09\x8a\x79\x5b\xb4\xfd\x41\x77\x9c\x5d\x37\x06\ \x3c\xb9\x88\xcb\xab\x66\x43\xf1\x34\xc0\xbf\x49\x33\x4a\xc4\x40\ \x71\xbb\x74\x6e\x69\x1b\xe1\xb2\x52\x21\x2b\x07\x2c\x6f\xee\x8a\ \xd7\xe9\xff\xd2\x10\xf1\x54\x0e\xf5\xcc\x16\x5d\xcb\x6f\xc3\xd3\ \xc7\xb5\x6e\x39\xae\xf4\x9c\x95\xd9\x16\x78\xfe\xb7\x35\x27\x72\ \x7f\x85\xef\xd7\xc5\x25\x05\x66\xc0\x33\x52\xfb\x0a\x30\xa4\x96\ \x15\xf2\xae\x4d\xde\xc6\xa5\xcf\x76\x8a\xbc\x24\x0f\xca\x84\xb7\ \xaa\xab\xbc\x25\x82\xa4\x9d\x2d\xe7\xcc\xd7\x74\x15\x1b\x46\x0c\ \xfe\x20\x40\x0b\xed\x1c\xc4\xda\xcd\x78\x60\xbc\x30\x9e\xfe\x47\ \xff\x31\x84\xb6\x99\x17\x5b\xb7\x27\x27\xf4\xc6\x2d\x15\xe7\x9f\ \xdc\x85\x40\xb7\x70\xe8\x59\x7f\x20\xa2\x71\xf6\xb8\x39\x43\x22\ \x61\x60\x8f\xec\xaf\xf7\x73\xe4\xf0\x12\x57\x35\xae\xd7\x17\xe9\ \xbe\x88\xbb\xf1\x7f\x6b\x5e\xdf\x93\x6e\x48\x0c\xcb\x39\x5b\x7d\ \x41\xb2\x39\xff\x65\x65\x68\xe3\x81\x66\x5b\xf9\x08\xc5\x6a\xd9\ \x11\xd1\xcb\x8e\xbd\x5a\x0f\x89\xdd\xab\x76\x50\xc4\x57\x62\xc1\ \xf3\x6a\x50\x90\xa6\x36\x3d\x3f\x0e\x30\xaf\xfa\xf3\x9c\x22\xc0\ \xfa\xaa\xaa\x4c\x47\x40\x51\xe5\xf2\x3b\x77\x00\xbb\x55\xf5\xca\ \xf0\x06\xec\x07\x68\x0f\x28\x80\x72\x19\x62\x55\x47\x66\x2f\x40\ \x71\xf5\xca\xbb\x27\xf0\xfa\xba\xf4\xfc\x24\xc0\xaf\xc4\x1e\xcf\ \x5b\xa1\x7e\x4f\xa9\xd7\x2b\x09\xc4\xde\x0e\xc8\xf7\xe2\x73\x5f\ \x07\x36\x2e\x69\x2e\x93\x8f\xc8\x1d\x5c\xf5\x89\x64\x48\xfe\xcb\ \xeb\xd9\xaf\x07\x49\xdf\x4d\x0c\x6b\x0c\xd1\x27\xe9\x82\xe2\x6e\ \xb0\x76\xb0\x76\xb1\x76\xb2\x76\x33\x1e\x18\x2f\x7f\x8a\xff\x0c\ \xfa\xd7\x21\x62\x84\x1d\x2d\x96\x1c\x1f\x2d\xc3\xfc\x9d\x5e\x7c\ \xbb\xcf\x81\xe6\xfb\xa3\x72\x07\x40\x04\xbf\xae\x78\x82\x39\x02\ \xd4\x91\x55\x15\x2e\x08\x48\xe7\x14\x1c\x70\x33\xd7\xd9\x1c\x31\ \xa8\x63\x4b\x9e\x2a\x9b\xfa\x2b\xa7\xaf\x4b\x49\x3b\x5a\x76\xa6\ \xf9\x6c\xd2\x8e\x0c\xdb\x0a\x73\xd3\xc8\xac\x4b\x05\xbe\xb5\x7b\ \x9a\x3d\x2a\x83\xcb\x83\x1a\xba\x34\x9e\x93\x67\x8a\x44\x4d\xef\ \x8b\x17\xb7\x2d\x92\xad\x93\x04\xd5\x39\x9b\xe7\x29\x16\x4a\x0b\ \x6a\xaa\x2d\x93\xd5\xb3\xa5\xc7\xaa\xeb\x38\xc7\xd4\xe3\xa5\x69\ \x88\xca\xe9\xd2\xcc\x9a\x34\xcb\x64\x79\xbc\xc4\xab\xce\xd7\x3c\ \x4f\x54\xd2\x34\x58\xbc\xa8\x6d\x51\xf9\x40\xb1\xb4\xf1\x17\x79\ \x66\x81\x6d\xed\xd6\xe6\x92\xca\xe0\xdb\x17\x5e\xed\x6d\xf2\xcf\ \xba\x74\xc9\xb1\x74\x5c\xf3\xa2\xa4\x1d\x4f\xbf\x6f\xfa\x55\x19\ \xb6\x2e\xc5\x74\xda\x66\xbe\xa1\x2a\xb6\x84\xc9\xc9\xe4\x66\xed\ \x60\xed\x62\xed\x64\xed\x66\x3c\xfc\xe9\xff\x35\x8c\xcb\xdd\x8c\ \x50\xc3\xe5\x7e\x84\x81\xd5\x56\xe1\x86\xc7\x73\x30\xef\xa5\xb7\ \x77\x0f\x3e\x10\x17\x30\xf6\xed\xf7\x1e\xe1\xe4\x68\xf2\x93\x77\ \xc0\x21\x17\x2c\x1f\xd7\x18\x01\x61\x9b\x94\x5d\x61\xf9\xfd\xa2\ \x39\x85\xdf\xff\x4d\xb8\xcd\x7e\x99\xf1\xcc\x5a\x51\xdd\x4d\x6d\ \xb8\xf6\xd6\x8a\xa8\xa7\xaa\xa6\xaf\x95\x35\x71\x9e\x19\x91\xd5\ \x63\xe5\xc6\x6d\x57\xd3\x9e\x95\x0e\x93\x14\xec\x4b\x48\x91\x94\ \x7c\xdf\xf4\x28\x69\xc2\x99\xdc\xe2\x88\xc6\xb1\xc9\xcb\x01\xbb\ \x23\x9e\x2f\xb7\x96\x5f\x3a\x5a\xea\x21\x49\xdd\x97\x90\xe1\x5c\ \xed\x2f\x97\x6e\xbb\xfa\xf4\x52\xd3\x30\x65\x56\x9c\x67\xdd\x16\ \xad\x11\xeb\x15\x2e\x87\xe7\x24\xae\x15\xb1\xe7\x32\x39\x98\x5c\ \x4c\x4e\x26\x37\x6b\x07\x6b\x17\x6b\xe7\x9f\xfe\x5f\xc3\xfe\x7d\ \x83\x18\x2d\x01\x1c\xc5\xe5\x0e\x4b\xc4\xbd\x45\xf7\xe8\x29\x30\ \xd2\x1b\xde\x0a\xb1\x71\x8d\x80\xb1\xf3\xc0\x84\xab\x21\x37\x60\ \x9d\x2c\x8e\xda\x39\xe6\x07\xc8\xf7\x99\x31\x6d\xd6\xf0\xaf\xa0\ \xe7\xf9\x4c\x8a\x8a\x80\xa9\xd8\x85\xb9\xef\xcf\x1d\x7c\x12\xf2\ \x87\x96\xbe\x23\x1d\x00\x3b\x08\xfb\x7c\xc2\x4f\xf6\xed\x03\x29\ \xa6\x8b\x43\x12\xfb\x86\x41\x66\xa1\x3f\x43\x56\xce\xae\x63\xf7\ \xb1\x7a\x58\xbd\xec\x39\xec\xb9\x4c\x0e\x26\x17\x93\x93\xc9\xcd\ \xda\xf1\xe6\x7f\x03\x7f\xdb\x65\x66\x21\x97\x3b\x05\x48\xc5\xbc\ \xba\x0f\x87\xe3\x7b\x78\x5c\x14\xe3\xd6\x40\x4f\xf3\xee\xb9\xb9\ \xc7\x03\x18\x5b\xcf\x0d\x08\x33\x42\xc0\x44\xbd\xf6\x2f\x13\x87\ \x06\xc1\xd4\x6c\xe5\xd8\xf1\x3e\x33\x61\x11\xb6\x6e\x52\xfc\x7b\ \x0a\xe8\xa1\x0d\x51\x8e\x73\xb4\xb0\xce\x7e\xc1\x90\x95\xb3\xeb\ \xd8\x7d\xac\x1e\x56\x2f\x7b\x0e\x7b\x2e\x93\x83\xc9\xf5\xe6\x9f\ \x43\xff\x70\x03\x89\xa4\xfc\x77\x98\x54\x51\x1e\x11\x97\x3b\x24\ \x0c\x10\x32\x6f\x67\xcd\xc6\x40\x33\x8c\xbd\xf9\x80\x3e\x5c\xae\ \x1f\x17\x37\x51\x18\xb2\x72\x76\x1d\xbb\x8f\xd5\xc3\xea\x7d\xf3\ \xdf\xc1\x6f\x3e\x6f\x0c\xe0\xcd\xe7\x7f\xe7\xf3\x4f\xda\xd9\x47\ \x7f\x10\xe1\xae\x91\x00\x00\x00\x22\x7a\x54\x58\x74\x53\x6f\x66\ \x74\x77\x61\x72\x65\x00\x00\x78\xda\x2b\x2f\x2f\xd7\xcb\xcc\xcb\ \x2e\x4e\x4e\x2c\x48\xd5\xcb\x2f\x4a\x07\x00\x36\xd8\x06\x58\x10\ \x53\xca\x5c\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x5d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x14\x00\x00\x00\x14\x08\x04\x00\x00\x00\x27\x80\xd5\x86\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x02\x62\x4b\x47\x44\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09\x70\ \x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\ \x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x0a\x15\x04\x24\x38\x0a\ \x71\xa9\xaf\x00\x00\x00\xe1\x49\x44\x41\x54\x28\xcf\xb5\x92\xcd\ \x4a\xc3\x40\x14\x85\xbf\x9b\x4e\xd3\x96\x3a\xd6\xb6\x8a\xd0\x12\ \x14\xd2\x8d\x5b\x5f\xc4\x07\x77\xe5\x0b\xf4\x07\x0a\x8a\x8b\x2c\ \x8c\x6d\x35\x0a\xc7\x45\x2d\x9d\x10\x09\x01\xe9\x59\x0c\xc3\xcc\ \xc7\xbd\x97\x73\x2e\x9c\x5c\x79\x70\x86\x8a\xfe\xc2\x1a\x4a\x17\ \xea\x53\x5f\xf1\xb7\xde\x19\x9d\x6a\xfd\x28\xc4\xfc\xfe\xd2\xc3\ \xcb\x01\xf8\x00\x8d\xca\xd8\x1b\x8a\x19\x72\xcb\x8d\x62\x59\x88\ \xba\xf2\x24\x3e\x26\x21\xe1\x8a\x31\xb0\xe6\xf3\xf8\xe3\x0e\xb3\ \x78\xd4\x62\x40\xc2\x8c\x07\x52\xe6\x88\x9d\xbe\xd8\xd8\x36\x00\ \x3d\xa0\x36\x6d\x1c\x2d\x2e\x49\xb9\xc3\x98\x30\x22\xc3\xa8\xb4\ \x76\x18\x1b\x5e\x78\x65\x41\xc4\x92\x8c\x82\x77\x3e\x2a\xad\x6d\ \x07\xa0\x6f\x9e\xe8\x72\xcd\x33\x8f\xac\xad\x38\x7a\x61\x65\x6b\ \x64\x38\xee\x31\x56\x64\x14\xa6\xc0\xb4\x6a\x7c\x9a\x2a\xd5\xb8\ \x36\xd2\xfd\xb3\xce\x35\x52\xaf\x41\xf2\xea\xca\x41\x5e\x8f\xe5\ \x4d\xd7\xcc\xff\x7f\xa1\x7f\x00\x8c\x7c\x48\xb7\x46\x58\x24\x0f\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x1f\xd9\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x44\x00\x00\x00\x44\x08\x06\x00\x00\x00\x38\x13\x93\xb2\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01\ \x42\x28\x9b\x78\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd8\x07\x11\ \x12\x27\x26\x7f\x56\x98\x8e\x00\x00\x1f\x59\x49\x44\x41\x54\x78\ \xda\xec\x99\xd9\x93\x25\xc7\x75\xde\xbf\x93\x4b\x55\xdd\xba\x7b\ \xdf\x7b\xbb\xa7\xbb\x67\x45\x63\x1b\x0c\x16\x82\x00\x4c\x52\x32\ \x05\x8b\xa2\x8d\xb0\x41\x2b\xa8\x08\xca\x8e\xf0\x03\xc3\x0f\x8e\ \xf0\x9b\x1e\xec\xd0\xb3\xe9\x3f\xc1\x0e\x3f\xf9\xc9\x2f\x76\x84\ \x65\x87\x45\xd3\x72\x50\xa4\xc4\x45\xd6\x42\x12\xfb\x32\x20\x30\ \x0b\x66\xc1\x4c\x4f\xef\xcb\x5d\xea\xd6\x92\xcb\x71\xf5\x5d\x66\ \x01\x86\x20\x68\x52\x0a\x84\xc2\xa7\xfb\x8b\x93\x5d\x35\x51\x59\ \xf9\x9b\xcc\x73\x4e\x66\xe1\xff\xdb\xa7\xc4\x7e\xef\xf7\x26\xfa\ \x88\xf1\x9f\x9d\x14\xf8\x39\x76\xf1\x22\x68\x77\x17\x84\xbf\x4d\ \xc6\x0c\x3a\xd2\x47\xae\xff\xd5\x3f\x88\x98\x41\xaf\xbf\xfe\xb3\ \x07\xbc\xbd\x0d\x3d\x1a\x41\xe2\xaf\xc1\xc4\xdf\x3c\x88\x13\x04\ \x00\x07\x07\x80\x19\x85\x0a\x1f\xb6\x5c\x54\x36\xdf\x87\x58\x6a\ \xdd\x1f\x08\x1f\x40\x74\x3a\x08\xaa\x55\xf0\xdf\x0a\x20\x38\xdf\ \xd3\x7c\xfd\x14\xb2\xbf\x00\xcb\x7e\x10\xf1\xf7\x3a\x84\x99\xf1\ \x1f\x00\x5e\xa0\xda\x58\x81\x5a\x5e\x06\xf8\x5f\x97\x7a\xa3\x2d\ \x98\x67\xf7\xff\xf4\xb7\x44\xe1\x65\x08\x40\x02\x9f\x62\x20\xcc\ \x10\xcc\x9f\xb4\xc7\x4e\x80\x74\x45\xad\xfc\x36\xe0\x35\x05\xa0\ \x07\x14\xe6\x56\x7f\x46\x12\xd9\x6a\xc5\x43\x23\x03\xf0\xb5\x27\ \x09\xf6\xb4\xc6\x6b\x9f\x9d\xbe\xe7\x4a\xa1\xa5\x56\x75\x64\xf0\ \x44\x9f\x62\x20\x58\x2f\xd5\x87\xe6\x3f\x06\x7e\x2e\x98\xb1\x0a\ \xb1\xdd\x09\x19\x00\x8c\x54\xa8\x06\x11\xe6\xd6\xe8\x2a\x66\x84\ \x08\xa0\xd1\x04\x50\x95\x04\xae\x69\xe4\x21\xf8\xa0\x45\x96\x07\ \x35\x52\x45\xc0\x01\xf2\x7b\xff\x43\xbe\xf1\x29\x03\xb2\x0a\x0f\ \x09\x8d\x73\x08\xf0\x5f\x9e\x13\xe5\xd4\xff\x88\xf1\xbf\x29\xf5\ \x3f\x00\xcf\x8e\x99\xc6\x35\x7c\xf3\x11\x29\x44\x00\xd4\x8b\xda\ \x9d\x00\x9b\x06\x20\x17\x15\x39\x24\x18\x84\x61\x33\x04\xc2\x00\ \x67\xdf\xf1\xc9\x5b\x4f\x6a\x5f\x1d\x55\x2d\xc1\xc9\x0c\x16\x33\ \xe3\xf4\x77\x01\x77\x45\x7c\x2a\x80\x30\x4f\x45\x84\x23\x2b\xd0\ \x11\x75\x3c\x34\x8c\xc0\x8f\x09\xcc\x8c\x1b\xd3\x8c\x82\x7f\xfc\ \x8c\xc2\x52\x2c\x44\x91\x13\x69\xd5\x46\x98\x84\x34\x8c\x42\xcf\ \x07\x35\xdc\x84\xc4\xab\xb1\x86\xf3\x2d\x62\x5b\xc7\x11\x90\x4b\ \x10\xf0\x59\x1d\x64\x03\xfc\xa4\xa3\xaa\xd0\x0b\x54\xdb\xac\x68\ \xcd\x09\xd5\xc1\x98\xdb\x35\xa3\x71\x21\xfd\x74\x00\xc1\x4b\x2b\ \xc0\x4f\x9e\x98\x4e\xff\x1a\x2c\xac\x77\x38\xb1\xdf\xc0\xda\x52\ \x95\xff\xec\x14\xf1\x00\x84\xb7\x21\xf0\x26\x08\xa6\x84\x85\xb5\ \xaa\x8f\xfb\xe4\x39\x6f\xb9\x46\xbd\xc9\x87\x61\xc3\x52\xda\xc6\ \x01\x2a\x1e\xcd\x06\x50\xb6\x55\xba\x20\x72\xd2\x7e\xaf\x1b\x41\ \xa0\x0b\x9f\x2a\x04\x08\x51\x2d\xd7\x8c\x28\x42\x97\xaa\x8c\xff\ \x33\x88\xff\x11\xc0\x6f\xfd\xb6\x44\x8a\x18\x80\xc5\x7d\x8c\x5f\ \x79\x06\xd7\x5e\x5d\x10\x7f\x63\x40\xe8\x73\xb7\x80\x3d\x61\xdd\ \x0f\x5f\x68\xe7\xff\xe1\x59\x42\x15\x23\x5f\x3b\xd0\x50\xfb\x5d\ \x88\x95\xc6\xc6\x3a\x44\xb1\x5b\xd5\x90\x41\x00\x4e\x22\x40\x1e\ \x13\x76\x37\x84\xb3\x8b\x12\xe1\xaa\x70\xd4\x56\xe0\xae\xcf\x9b\ \x0b\x6c\xf4\x12\xc3\x76\xa0\x4d\x17\x59\xdc\x22\x6a\x2d\xb1\xa5\ \x65\x8f\x34\x42\x23\x68\xbb\x68\xd0\x43\x56\x23\xf9\x01\x01\xa7\ \x20\xf0\x0d\x08\x37\x32\x6d\x64\xce\xd2\xb9\xff\x76\x07\xc2\x37\ \x66\xba\xf4\x0f\x09\x3e\x8a\x96\xf7\x8f\xe1\xaf\x05\x08\x73\xa9\ \x1b\x1f\xcd\x26\xf4\xe2\x9b\xce\x09\xef\x82\xc7\xbb\x5d\x5c\x38\ \xed\x09\x66\xc8\xdd\x5b\xb1\xd7\x74\x6a\x71\xfb\x74\x53\x0b\x17\ \xc0\x57\xeb\x25\x24\xc1\x4e\xac\xb1\xc7\x22\xa9\x71\x9b\x45\x7a\ \x9c\x29\x5f\x82\x77\xab\x44\x74\x1c\xd2\x1e\x87\x4a\x7a\x40\xda\ \x93\xb9\x38\x06\x61\xcb\x6b\x69\x17\x94\xb4\xd8\xa8\x35\x04\xc3\ \x45\xb5\xaf\x33\x37\xb6\x1a\x21\x94\x37\xcf\xd6\x04\xb8\x81\xf4\ \x47\x19\xff\x27\x10\x03\xe0\x77\x7e\x97\xf0\xb5\x93\x12\x5f\xff\ \x02\x61\xd7\xb7\x20\x42\x84\x7f\xff\xa7\x7e\xba\xb4\x3f\xd9\x58\ \x15\x7e\x11\xeb\x80\x00\x68\x66\x18\x22\x80\x2f\x0a\x81\xa2\xc3\ \xf8\xef\x7f\x32\xc4\x6f\xbd\xd0\xc1\xd6\x1a\x51\xbe\x3f\xe4\xd5\ \xc3\x82\xaa\xbb\x27\xa8\xe8\x35\xc1\x83\x2b\x6c\xa3\x36\xa9\x81\ \xf7\x72\xbc\x40\xd2\x4b\xf2\x69\x8f\xd9\xf6\x40\xd6\xb2\xb7\x3d\ \x22\x51\x10\x4c\x05\x94\xd5\x20\xe4\x12\x8c\x3c\x09\xa6\x18\x72\ \x68\x40\xc5\xea\xd1\x35\x72\x24\x61\x73\x4b\x54\x89\x0b\x90\x11\ \x14\x9f\x14\x3c\xd8\x23\xb5\x4b\xf8\x67\x20\x3c\xb1\x4a\x18\xbc\ \x1f\xa2\xd7\xcd\xf9\x56\x7b\x89\x84\x34\x68\x8a\x8c\xdf\x07\xc1\ \x43\xe1\x03\xb8\x5f\x29\x90\x09\x80\xfd\xb6\x87\x38\xd4\x60\x56\ \xcc\xc8\xf0\xbd\x55\x81\xea\xc9\x0a\x7e\x47\xa5\xc8\xf7\x76\x7c\ \xd1\x3a\x27\x0e\x4f\xae\xbb\xf8\x6a\x26\xeb\x3b\x1a\xfd\xea\x43\ \x3e\xaf\x0a\x29\x4c\xcc\x9a\x9c\xd0\x87\x55\x40\x9e\x06\x8d\xbb\ \x24\xd0\x64\x98\x04\xec\xbb\xa5\x04\x88\x43\x2f\x10\x11\xd4\x2a\ \xbc\xdf\x65\x36\x25\x3c\xee\x93\x77\x75\x68\xdf\x23\xcb\x1b\x40\ \xde\x14\x92\x95\x2c\x4e\xd4\x9c\x75\x3d\x11\x5f\xbb\x89\x1a\x14\ \xde\x58\xf4\x18\x9f\xaa\xa2\x91\x66\xfe\xda\xf2\xa2\x57\x88\x94\ \x76\x3b\x69\x76\x51\xe9\x95\x7a\xac\xc4\x30\xa5\x33\xf0\xbf\x32\ \x20\xfc\xda\xd3\x84\x7e\x93\xcd\xf9\xeb\x94\x8d\x4f\xa3\xfe\xdc\ \xe5\xa8\x28\x92\x20\x3d\x36\xca\xea\x7b\x46\x0b\x3e\x5d\x45\x7c\ \x2b\x01\xc4\x88\xa9\xf1\x19\x31\x58\xd9\xe4\xd6\xcd\x82\x6b\xdb\ \x6d\x91\xc4\x5f\x60\x9d\xed\x11\xcb\x98\x55\x52\x61\x1b\x9f\x2d\ \xf2\x2c\x34\x63\x71\x22\x4f\x72\xef\xbc\x6b\x17\x89\x3f\xcb\x5e\ \x84\x52\x17\xac\x2b\x32\x90\xca\x45\x61\x65\x2c\x75\x2c\xf6\x55\ \x20\x12\x22\x57\x27\x5f\x6c\x31\x78\x95\x7c\x68\xd8\x46\x0f\xc9\ \x60\xeb\x0d\x56\x83\xc0\xe7\x31\xcb\xfc\x58\x15\x61\x5e\x60\xdc\ \x8d\x04\xa1\x27\x38\xbf\x80\x4a\x1a\xeb\x66\xd2\x12\x94\xed\xe3\ \xd5\x67\x0c\xbf\x9b\x10\x92\x0f\x08\x7f\x34\xf6\xf4\x8d\x5f\x0c\ \xc8\x3c\x95\xde\xb1\xdd\xae\x18\xb7\xeb\x6a\xf7\x12\x8a\x85\xd8\ \x7a\x5c\xfc\xac\xa4\xd5\x2b\x0d\xd1\xda\xce\x92\x7e\x66\xeb\x68\ \xb4\x91\xb6\x5a\xa2\xb2\x9d\xc1\x74\x42\xa4\xf1\xdf\x05\x35\x36\ \xa8\xde\x27\x2e\xe4\x93\xc4\xf6\xba\xc9\x71\xac\xbf\x67\x1a\xe9\ \x61\xfa\xa4\x3d\x90\x0b\xc4\xdd\x66\xd8\x79\x88\x64\xbc\x40\x95\ \x46\x05\x42\x84\xf0\x5c\xc0\xbb\x14\xf9\x70\x7f\x6d\x78\xe3\x92\ \x85\xdc\x19\x04\x2d\x33\xa8\xf5\xdc\x4e\x54\x37\x8b\x2a\x20\x86\ \xaf\xb7\x41\xa9\xe1\xf0\x16\x88\xb8\x2d\xf8\x98\x62\xc1\x44\xa9\ \x4d\xe0\xe9\x34\x6a\xa3\x97\x5c\x10\x76\x64\x77\x6b\x81\x5a\xc9\ \x2d\xf1\x5f\x9f\x49\xf8\x74\x1c\x50\x5e\x57\x78\x1f\x29\x7d\xe3\ \x3d\x30\xdf\x33\xf3\xef\x31\xfa\x19\x40\x08\x80\x20\x82\xbb\x7d\ \xed\xa5\x17\x03\x08\xd1\x80\x17\x07\xb8\xbe\xa5\xb0\x54\x3d\xe3\ \x97\xae\xd7\xac\x3f\x18\xc9\xd1\x32\x64\xaa\xba\xac\x92\x00\x2a\ \x0f\x61\xa2\x67\x41\x6e\x19\xf1\xd6\x8e\xf3\xf2\x73\xfd\x75\x5a\ \x3c\xbc\x9c\x9f\xd0\xc1\xb9\x85\xea\xf1\x5f\x13\xe1\xea\xe3\x10\ \x95\x1a\x40\x1e\x80\x03\x88\xef\xea\x7c\x16\xeb\x59\xc2\x67\x23\ \xe4\x1b\xef\x20\x59\xff\x91\xb3\xfe\x9d\xeb\x0b\x67\xe8\xed\x7a\ \xa3\x1d\x88\x70\xf4\x7f\xa0\xb2\xcb\x64\xaa\x19\x8a\x76\xe0\x39\ \xec\x8b\xb4\x77\xcc\x55\xb7\xff\x44\x88\x95\x1e\x7a\xd7\x16\x7c\ \x67\xeb\xa2\xfc\x83\xd5\x1d\x73\x6a\xb5\x89\x6a\xa0\xb5\x55\x7b\ \xf4\xfc\xff\x72\x33\x18\x6a\xd6\x93\xfb\x44\x40\x80\xdb\x51\x39\ \x42\x02\x8b\x2a\x0a\x22\x80\x7f\xfc\x95\x00\x5e\x9c\x00\xd9\x5d\ \xd0\xc0\xf3\xd1\xca\xec\xec\x3d\x04\x5b\x14\x28\x02\xcd\xd6\x76\ \x48\x27\x9a\x44\xd1\xf6\x36\x7c\x76\xb0\x9f\x74\xf7\xae\x8e\x1f\ \x0c\xc4\x13\x4b\x8d\x73\x5f\x23\xd5\x5e\x04\xa8\x28\x65\x26\x22\ \xe1\x66\x50\xf8\x43\x9d\x0b\x70\x29\xf2\xaa\xf4\x1a\xf0\x01\x6c\ \x7f\x07\x83\x8b\x7f\xe8\x1d\xbf\x77\x73\x61\xcd\x7c\xa7\xd6\xd0\ \xeb\xe4\x9a\x01\x7b\xbd\x45\x45\x53\x41\x0f\x7f\x08\x5e\xea\xfa\ \x85\xad\x08\xd5\xdd\xb7\xe4\xb5\xd3\x7b\xde\x1f\x5b\x72\xce\xe7\ \xba\x3a\xb8\x85\xcf\xfd\xc4\x21\x41\x90\x8d\x51\x09\x16\x90\x09\ \x89\xe2\x7e\xfb\x21\xc2\xc7\x18\xe7\x20\x18\x54\xad\x46\xa4\x14\ \xfa\x24\x61\xf8\x3b\x5f\x0e\x10\x46\x6b\x0e\x79\x21\x83\x0f\x86\ \xde\xd5\xcf\x52\x34\xfe\x75\x42\xea\xbd\xa5\x88\x44\x5e\x77\x9c\ \xd6\xf7\x6e\x14\x4f\x8e\xae\x04\x9f\x69\xac\xfd\x4e\x58\x39\xfd\ \x14\x20\x6d\xa9\x0c\x24\x66\x20\xc4\xac\x77\xa2\x7b\xdf\x84\x71\ \x67\x43\xe4\x01\xf6\x04\x38\x55\xfa\x00\x6c\x34\xb2\xf5\xf3\x3c\ \xbc\xf1\xad\xfd\xd6\x69\x73\xbe\xb5\x18\x5d\x26\x1f\xe7\x20\xf3\ \x3a\xd0\x24\xae\x8f\x88\x55\xfe\x8e\xdc\x3f\x75\xc8\x59\xad\x46\ \x52\xac\x7b\xb7\xb9\x81\xcf\xbc\x5d\xde\x43\xd3\x14\x90\x66\x0f\ \x87\xf5\x63\x28\x48\xe3\xbe\x46\x9f\xa4\xfe\x80\x47\xc0\x16\x5d\ \xef\x51\xc8\x4b\x9d\x01\xf6\x7a\x21\x8b\xc5\x35\x66\xdb\x12\xf1\ \x8d\x5d\xb6\xc1\x53\x1c\xf0\xf3\x04\x53\x35\x69\x1e\xef\x5c\x49\ \x1e\x2d\x36\x6b\x0f\x34\xcf\xfd\xd3\x40\x2f\xad\x82\xe4\x18\x50\ \x79\xe9\x3d\x48\x10\x70\x24\x22\x90\x00\x00\xba\xf7\x2d\xf8\x4e\ \xc7\xec\xf9\x8e\x77\x80\xb7\x1a\x30\x21\xcc\xee\x26\x06\x97\xbf\ \x99\x56\x8e\x25\x17\xba\x27\xc3\x57\x05\x55\x06\x1c\x39\x26\xa2\ \x4b\x74\xd8\x5b\x87\xaf\x39\x38\xf3\xb6\x3b\xfe\xf6\x36\x2d\x8f\ \xaa\x4e\xa0\x4e\x21\x86\xa9\x43\x7f\x2f\x84\x3b\x43\xbf\x44\x96\ \x99\xef\x53\x92\x04\x9b\x91\x42\x8b\xcf\x1c\x9c\x42\xa8\x3d\x76\ \xb4\x83\x0b\x5b\x9c\x75\xce\xa1\xb2\xbe\x05\x56\xbb\x96\xfd\xe9\ \x9d\xab\xe3\x47\xf3\xab\x65\x99\xfa\xe4\x0b\x52\x77\x9b\x80\xd8\ \x02\x94\x05\x49\x9a\xc1\x10\xf7\x42\xa1\x0f\x01\x01\x6e\x83\x20\ \x62\xc0\x97\x02\x83\xe1\x21\x90\xc1\xf3\x08\x6a\xa1\x86\xda\xa9\ \xbf\x57\x19\xbc\xf7\x47\x67\x89\x72\x74\xd7\xe8\x16\x31\x5d\xe7\ \x51\xab\xc5\xde\xe7\x22\x5a\xff\x4b\x77\xfc\x6a\xe1\xeb\xfe\xa4\ \x02\x0c\x79\x6c\x2b\x85\xb4\xa1\xc1\xbf\xb2\x3a\x24\x8e\xe1\x31\ \xc0\x81\x1d\xfa\x82\xba\xdb\xa7\x11\x66\xc7\xc4\x66\x57\xa2\x08\ \xdb\x5c\xb4\x9e\x62\xbd\x37\xda\xbb\x9a\xd7\xd3\xf7\xb3\xe5\xda\ \xc9\xcf\x4b\xbd\xd8\x05\xe4\x0e\x48\x79\x90\x10\x13\x41\x4e\x60\ \x4c\xdb\x13\x4f\xf7\x5d\x32\x24\x18\xcc\x53\x18\x4c\x0c\x82\x9f\ \x42\x61\x3f\x79\x1e\x38\x45\xd0\x6d\x23\x3e\x76\x2e\x1c\x5e\x7d\ \xf9\xac\xae\xc3\x37\xda\x8d\x43\x41\x79\xc4\xcd\x8d\x1b\xdc\x4d\ \x7b\xd0\x7a\x89\x0f\xa2\xcd\x62\x37\xda\x09\xfd\x56\x86\xbf\x03\ \xbe\xdf\xec\x4f\x12\x90\x73\x40\xa3\x01\x10\x81\x05\xee\x63\xfc\ \x2f\x63\xe2\x37\x1e\xa7\x7b\xb6\xf1\xff\x0e\x84\x11\x04\x5f\x87\ \x93\xeb\xd5\x4d\xb2\xc5\x3e\x2f\x6e\xb4\xb8\xbe\xcd\x10\x69\x30\ \xd8\x16\xcf\x0f\xdf\xcb\x9e\x08\x74\x45\x05\xab\x27\x40\x6a\xaf\ \xd4\x18\x24\x0a\x40\x18\x40\x9a\x69\xfc\x50\x16\x50\xa5\x97\x33\ \x89\xb9\x9f\xb7\xe7\xb2\xb7\xdb\x98\xb7\xc5\x91\x0a\x90\xcc\x41\ \xc1\x00\xe1\xf2\x0a\x02\x0a\xc3\xfd\x77\xd2\x07\xb3\x24\xa9\x71\ \x7d\x2b\xe3\x7a\xfe\x18\x8f\x9a\x8f\xd0\xcd\xe3\x2c\xb6\x5b\x03\ \x69\xf6\x0c\x0e\x00\xfc\xe1\x1d\x08\xa3\x11\x44\x51\x20\x28\x61\ \x54\x82\x00\x91\xf7\x50\x1f\x3f\x43\xbe\xdc\x26\xf4\xc3\x10\x4b\ \x9f\x27\xfe\x71\xc5\xe2\xfd\xc2\xe2\xdc\x9b\x12\x57\x7b\xa1\x36\ \x79\x0d\x19\x57\x84\x19\x1b\x48\xde\xf0\x61\x72\xc2\xf2\xb8\xb6\ \x77\xc9\x9e\x50\xb9\xab\xea\x93\x55\xc8\xaa\x03\xa9\x0c\x10\xa2\ \x94\x04\x49\x9e\xce\x12\x55\x4a\x8a\xf9\x72\x99\xc7\x8f\xfb\xc6\ \x10\xa2\xd9\xec\x20\x94\xf2\xf0\xce\x83\xd8\x01\xec\x01\xe1\xc0\ \xd2\x41\xd4\x18\xba\x5b\x83\xbb\xb9\x55\xdf\xb9\x36\x7c\xe4\x44\ \x37\x1c\x52\xbf\xb5\x09\x47\x2f\x09\xb1\xbb\x23\x82\xdc\x20\xb5\ \x02\x1d\x08\xf3\x1b\xa0\x64\x84\x20\x4d\x10\x46\x4a\x04\x5c\x44\ \x2e\x48\x9a\x46\x93\x19\xb7\x5a\xbb\x96\xe8\xe3\x80\x7c\x6d\xdd\ \xe3\x7c\x3b\x47\xb6\x14\xc3\x50\x0f\xc7\x75\x88\xfe\xe7\x06\xa8\ \x6e\x31\xdb\x7a\x87\x32\x3e\xc3\x2a\x69\x72\x78\x40\x94\xbb\xf1\ \xfe\x35\xd7\xc2\x6e\xd1\x51\x75\x40\xb6\x24\x48\xe7\x53\x10\x13\ \x18\x7e\x2a\x75\xd4\x26\x80\xc4\x9d\xb8\x41\x62\x0e\x63\xea\x79\ \xee\xe7\xc5\x10\x03\x82\xc1\x98\xb6\x79\x02\xa4\x94\x77\x93\x4c\ \x25\xb4\x83\x6a\x29\xa8\x43\x50\xba\xe9\xd7\x92\x2d\x75\xb5\xb6\ \x30\x78\x95\x42\xdb\xf7\xcc\x01\x69\x8a\x6c\x1d\x8a\x3b\xd0\x0a\ \x14\x91\x53\x56\x6c\x3c\xa0\x44\xb6\xea\x51\x54\x0e\x30\x92\x63\ \xfa\xd2\xb7\xec\xcf\x8f\x21\xff\xb6\xd4\x73\xe7\x99\x5e\x3c\x3f\ \xe2\xbf\xfa\xc2\x18\x49\xb5\xe1\x14\xad\x08\xee\xb4\x81\x84\x58\ \xed\x0e\x20\xb8\x47\x45\xf3\xb3\xd6\x27\x4b\xfd\x0b\x07\x4f\x85\ \x92\x85\x6c\x02\xa2\x92\x02\x22\x03\x89\xa0\xf4\x1e\x74\x24\xc9\ \x13\x0f\xba\x13\x3f\x40\x98\x81\x21\x1c\x39\x06\x4d\x59\x30\x03\ \x13\xcd\xda\xbe\x94\xf0\x53\x38\xd2\xdf\x06\xc2\xa5\x80\x02\x14\ \xe6\x50\x4d\x20\x4c\x9d\xda\xbe\x94\x9c\xa8\x3c\x2b\x9b\x3a\xa4\ \xe3\x3e\xf0\x35\x8e\x90\x13\x6a\x69\x19\xeb\x52\xb1\x7f\x4a\x08\ \xd3\x48\xe1\xc4\x2d\x5c\x39\xdc\xa2\x7f\xf1\xbf\xfd\x27\x0f\xaa\ \x27\x41\x68\xaf\x48\xfe\xf1\x29\x0d\x47\x8c\xf6\xf6\xd8\x57\xd3\ \xeb\x22\xd7\x23\x64\xfa\x21\x76\xb5\x07\x09\x69\x8f\xd5\x60\x7c\ \xb0\x99\xf5\x64\xdf\x75\x64\x1b\x90\x75\x80\x54\x0a\xf8\x3e\x20\ \x9a\x20\xa9\x26\x30\x20\x78\x36\x70\x31\xf3\xd3\x6c\x33\xaf\x43\ \x78\x36\x43\xf8\xc3\x33\x64\x96\xf3\xe7\xc1\x75\x0e\x98\x85\x2d\ \xbd\x03\x63\x50\xfa\x04\xa2\x06\xc8\x52\x7e\xdf\x3d\x9c\x17\xf2\ \x19\x55\x0d\x96\xe4\xb8\xbe\xcb\x3b\xbd\x0c\x79\x7d\x13\x2c\x2e\ \x82\xec\x79\xe8\xf5\x21\x64\x48\xf8\x52\xa1\x8a\x1f\x7e\x91\xa8\ \x17\xb2\x2a\xb6\x2c\xae\xbf\xed\xe9\xab\xf7\x01\xc2\xfc\x2c\x6d\ \xbe\xd4\x15\xbe\xe9\x94\xe9\xb3\x0a\x7d\x2a\xa1\x43\x99\xa6\x3e\ \xd6\x46\x57\x48\xba\x1a\x54\x92\x92\xca\x76\x18\xae\x05\xa7\x8e\ \x8f\x77\xdd\x9a\x12\x4c\xa2\x06\x88\x0a\x81\xa4\x03\xdb\x75\x10\ \x45\x20\x31\x85\x41\xe4\xa6\x30\x04\x95\x9a\xfb\x29\x98\x3b\x46\ \x00\xf1\x3d\xcb\x87\xe7\x40\xc0\x20\x2e\x3d\x1d\xc1\x98\x2e\x41\ \xb6\xf9\xa4\x1f\x94\x6d\x11\x11\x64\x95\x11\x0c\x59\x8f\x6e\x85\ \x8f\xc4\x72\x81\xd9\x05\x29\xd1\xf8\x2d\x0a\xd3\xcb\x9e\xd5\x01\ \xc9\x76\x1d\x72\xb1\xc7\x16\xc0\x3e\x8c\xaa\xa6\x7d\xf0\xfe\x18\ \xd7\xd7\x09\x6f\xfc\x8c\x19\x42\xf4\x0a\xf3\xf7\xbf\xea\x5d\x8d\ \x8d\x14\x4c\x10\x71\x05\xd6\x36\x22\xa9\x9a\xde\xe7\x1d\xb6\x76\ \x99\xa1\x57\x60\xd2\x2e\xa9\x51\xc5\xda\xa1\x2e\xb6\x8b\x66\x54\ \x01\x64\x0c\x50\x40\x93\xc0\x09\x0c\xc0\x6e\x1d\xa0\x95\x59\x69\ \x2e\x66\x33\x62\x92\x7e\xef\xa4\x5b\xfa\x98\xda\x70\x1e\x37\x44\ \xe9\x99\x27\x20\xe0\xa7\x50\x88\x0c\xe0\x37\x27\xfd\x90\x14\x93\ \xf8\x24\x62\x0b\x15\x32\xc6\xbb\x45\xcd\x1d\x1f\xed\x28\xad\x6f\ \x91\xaf\x55\x9c\xa9\x9e\x62\x5f\xed\x92\xab\x24\x1c\x60\x93\x0a\ \x7f\x08\xcf\x0e\xac\x3d\x17\x0b\xca\x2f\x36\x20\x7f\xf3\x3a\xf1\ \xd7\xe1\xe9\x81\xab\x5e\x7d\xa4\x2a\xc5\x37\x59\x62\x62\x19\x11\ \x32\xfe\xe9\x17\xf7\xa8\x6f\x2a\x42\xa4\x0d\x26\x71\x40\xec\x3c\ \xe0\xaa\xcc\xea\x4c\x36\xd4\x67\x31\xf6\x75\x6a\x01\x22\xc2\x14\ \xc6\xe4\x05\x69\x0a\xc5\x33\x88\x3b\x00\x55\x66\x30\xe4\x6c\x56\ \xcc\x62\xc7\xc7\x00\x61\xf0\x0c\x0a\x26\x30\xe6\xd9\x05\x2e\x03\ \xbb\x3d\x00\x23\x40\xd1\x2c\x58\x3b\x50\x00\x88\x10\xf0\x03\xd3\ \x28\x52\xf4\x64\x14\x19\xb0\x8e\x85\xc7\xba\xf7\xce\xb0\x35\x03\ \xb6\xb2\x21\xb4\x0a\xe1\x91\x40\xf8\x04\xc8\x53\x26\xed\x10\x2c\ \x95\x30\x7e\xec\xef\x17\x43\x68\x76\xac\x28\x8f\x3c\x7b\x90\x4d\ \xfe\x5c\xa8\x65\x48\xec\x91\x21\x53\xdf\xf5\xb9\x7d\x57\x40\x24\ \xb0\x32\x4f\x12\xb3\x20\x99\x1f\x13\x21\x40\x1a\xb7\x8b\x2e\x92\ \x47\x22\x00\x19\xd8\x6f\x81\xb8\x0a\xa0\x0a\xa2\x10\x20\x59\x8a\ \x26\xe2\x79\xda\x9d\xc3\xe1\xc9\x2f\xc0\x7c\xd7\x1f\x1e\x44\x1e\ \x8c\x02\xf0\x23\x80\xc7\x00\x0c\x48\x60\xd6\x17\x4d\xa5\x4b\x85\ \x0c\x0c\x7d\x85\xad\x7e\x80\x58\x31\xbc\x30\x20\x1c\x90\x70\x06\ \x51\x3e\x92\x2c\xb6\x20\x39\xc9\x02\xd8\x40\x39\x2f\xfe\xf4\x03\ \x2f\x7f\xff\x16\xd3\xc7\x04\xd5\xe9\xa2\x75\x60\x6f\xa1\x2c\x0b\ \x4d\x29\x05\x79\x5a\xa9\x2a\x57\x59\x20\xc1\x1d\x19\xc9\x65\xef\ \x78\x15\xe4\x17\x9d\x75\x75\xa2\x19\x0c\x45\xc0\x0c\xc6\xbc\x3c\ \xa7\xf9\x7e\x85\x32\x00\x06\xcc\x0a\x60\x0d\x22\x35\xed\x9a\xe4\ \xed\x40\x8b\x79\xc1\x3a\x7b\x05\x86\x03\xc8\x81\xd9\x00\x6c\x41\ \xb0\x60\x9a\x1d\x15\x88\x3b\x7d\x91\xb8\xab\x3f\xcd\x13\xb6\x45\ \x9e\x6c\xc5\x0b\xf6\x6d\x78\x7d\x49\x78\x79\x9d\x7c\xbc\xc9\x2a\ \xe8\x63\xd4\xf0\x08\xaa\x72\x3f\xcb\x2c\x2d\x1b\xbf\x52\xc2\xf8\ \xd8\x2c\x43\x34\x39\xb1\x66\xbc\xf8\x05\x12\xbb\xa0\x20\x68\xd0\ \x64\x30\x3c\x76\xa8\x7a\xc3\x85\x0d\x3c\xe5\x35\x52\x59\xdd\x53\ \xd6\x71\xb9\xeb\x08\xca\x41\x12\x00\x61\x1e\x1b\xee\x8d\x11\x84\ \xbb\xda\x1e\x44\x05\x40\x16\x84\xf9\xb5\x79\x6d\x32\xcf\x34\x3c\ \x0b\xa2\x77\xd5\x1f\xf0\xb3\xe7\xcf\xb2\x12\xcd\x9e\x2f\x66\xa2\ \xa9\x48\x01\x42\x30\xf2\x34\x1b\x43\x16\x5b\x50\xd8\x70\xc4\x9b\ \x52\xc8\x3d\x8b\x64\xa4\xab\x28\x70\x0e\x7e\x95\xc0\x9f\x78\x2f\ \x43\x93\x63\xfc\x1f\x79\x7c\xbe\x53\xb8\xaf\x9f\x2c\x8a\xa7\x43\ \x5d\x49\x04\xc3\x14\xda\xcb\x7c\x07\xc8\x2b\x42\x9a\x88\xe0\x9a\ \x2e\xf3\x4e\x7c\x64\xd0\xf3\xf6\x3d\x9b\xb7\xa9\xc7\x47\xff\x1d\ \x89\xbb\xc0\x4c\x99\xcd\xd2\xf0\x5c\x5c\xea\x6e\x78\x53\xc7\xb7\ \x9f\x49\xa0\xf9\x3d\x31\xbd\xed\x0a\xd9\x86\xab\xf4\x00\xd5\x17\ \x42\xe7\xb0\xb2\xd0\xd5\x22\x85\x33\xff\x6f\x67\xaa\x54\x8a\xff\ \xd5\x1e\xcb\xb5\x43\xaa\x14\xcb\x16\x81\x4d\x11\x65\x5e\x06\xec\ \xe0\x58\xb2\x45\x08\x42\x9b\x42\x1e\x81\x3f\x1c\x17\x69\xee\xee\ \x34\x3f\xbc\x81\xc3\x5d\xd0\xe6\xe9\x78\x7e\x53\xf8\x29\x14\xe2\ \xf9\xc0\x67\xc6\x77\x4a\xfd\x79\x11\x77\x9f\x98\xcc\x04\x0e\x2b\ \x95\x36\x99\xe6\x39\xb8\xb8\x03\x5b\x39\xe5\x38\xdc\xa0\xc3\x33\ \x5b\x28\xf4\x96\xb8\x11\x0c\x8b\xef\xa2\x50\x82\x0b\x0f\x97\x11\ \x7c\x66\xe5\x41\x11\xbc\x02\x43\xbf\xff\x8a\x57\xb7\x3f\x16\xbf\ \xfe\x9e\x32\x03\x1b\x11\xf9\x8a\xe4\xbc\xe6\x99\xea\x18\x50\x15\ \x1e\x55\xb2\xa6\x89\xdc\x74\x48\x9a\x1e\x53\xbe\x0c\x99\x2e\x43\ \x65\x8b\x51\x65\xb7\x97\x51\x0e\x78\xbe\x3b\x22\x62\x6e\x3f\xeb\ \x3c\x8a\x48\xce\xe2\x47\x30\x2f\xf1\x67\xf7\x78\x5a\x81\x92\x9d\ \x0a\xe6\xde\x9a\x9e\xf8\xee\x1c\x34\x6f\xce\xfb\xbd\x5d\xc3\xc9\ \xc8\x5c\x81\x4e\xce\xb3\x34\xd7\x21\x8a\x9b\xd2\xc6\x3b\xde\x57\ \x47\x82\x82\x02\xa2\xb0\xca\x49\x4f\x82\x5c\xee\xac\x55\x70\xde\ \x6f\x12\xe3\x91\xed\x0f\xcd\x10\xc1\xae\x60\x1a\x2b\xe6\xb1\x52\ \xbc\x4f\x85\x20\x08\x22\x67\xfb\x44\x0b\x45\xc5\xa7\x79\x5b\x0a\ \x5e\x84\x18\xb4\x21\x47\x4b\x90\xc5\x29\x92\xf9\xf3\x9e\xb1\xc2\ \x16\x04\x7f\x77\xd9\xcd\xf7\x72\x61\x9e\xa3\x00\x28\x00\x23\x9a\ \xc0\x98\x45\xe3\x59\xe6\x11\xd3\xd4\x4a\x73\x20\xa6\x54\x3e\x53\ \x31\x03\xce\x77\x01\xc0\xed\xbe\x98\xa7\x30\xd8\x96\x62\xf2\x52\ \xf3\x90\xd9\x8f\x09\x6e\x44\x2a\x1b\xb2\x32\x03\x61\xf7\xf7\xd0\ \xac\x8e\x71\xe5\xc0\xd2\x23\x82\x81\x18\x17\xde\xbd\xcc\x4f\x03\ \xc0\xd7\x3f\xb4\x64\x68\x7a\x2e\xcf\xf3\x77\xb7\x76\x22\x08\x03\ \x04\x02\x12\x04\xc1\x09\x79\x6f\x22\x23\x0c\x97\x9e\x24\x2c\x74\ \xd4\xf5\xe3\x01\x91\xe7\x62\xb2\x8c\x00\xcf\x13\x71\x29\xb0\x2f\ \x25\xa6\x0f\x9c\x1f\x1c\xa3\x02\x50\x04\x3a\x12\xc2\x09\x1c\x40\ \x01\x2c\xef\xaa\xdd\xdd\x34\xad\x96\x62\xd2\xb3\x57\x9c\xa6\x70\ \x30\xee\x00\xe0\x59\x3f\xde\xdf\x6e\xb3\x01\xa0\xa5\xd5\x41\x7c\ \x02\x3e\x1a\xc2\x07\xd6\xb9\x30\x23\x17\x8c\x89\x50\x20\xab\x46\ \xf6\xcc\x6a\xae\x46\x36\x87\xbf\x61\x9e\x7e\x0e\x96\xce\x82\x3f\ \x12\x43\x78\x7a\x49\x1e\x29\x4d\x11\x28\x85\x88\x3c\x42\xa9\x21\ \xd9\x01\x8e\x26\x48\x24\xc9\xc2\xa0\x50\x29\x39\x3d\x42\x21\x46\ \x51\x28\x86\x54\x4b\x12\x9f\x17\x0d\x6f\x18\xc2\x7b\xb0\x63\xc0\ \xf9\x69\x51\x36\x03\x04\x26\x60\x32\x2b\x2a\x00\xe2\x59\xa1\x16\ \x02\x08\x40\xac\x01\x88\xdb\x40\x88\x1d\x18\x06\x40\x51\x4a\x81\ \x20\xa6\xb7\xc0\x60\x6f\x67\x25\xca\x0c\xbc\xf3\xe0\xb9\xb7\x0c\ \x9f\x03\x54\x13\x5b\x41\x3d\xbf\x06\x0d\xc3\xd2\xb6\x40\xf9\x59\ \xd6\xb6\xee\xe3\xf4\x06\xd5\x87\x1b\xd0\x8e\x9c\x61\x82\x9a\xfc\ \x58\x2e\x60\x30\x86\xa5\x16\x78\x06\xe4\xde\x70\x17\x04\xc8\x9d\ \x43\xc6\x02\x24\x23\x60\xbc\x0b\xce\x23\x45\xcd\xcb\x4b\x15\x88\ \x66\x8f\xad\x3e\x09\xef\x4e\x92\x28\x8e\x6b\x4a\xe3\xa0\x6b\x0e\ \xfd\xcd\xa2\xc1\x29\x80\xda\x11\x10\x37\x7b\xc1\x52\x8a\x01\x8f\ \xd9\xa0\x23\x80\x62\x00\x13\x4d\x97\x0d\x02\x30\x34\xc0\xe2\xae\ \x58\x61\x01\x36\xd3\xeb\x90\x53\x96\x3c\xbb\x8e\x1c\xf0\x66\x0e\ \x63\x2a\x3b\xf3\x05\xc3\x64\x84\xea\x4a\x30\x14\x1c\xe5\xc8\xc5\ \xbb\xc4\xea\x32\xf9\xca\x26\xbc\x4a\x50\x65\x63\xc5\xfe\x58\x46\ \x03\xf6\x51\x22\x19\x90\x04\x04\x9e\xe0\x58\xc1\xa5\x63\x98\xc8\ \xc0\x28\xdc\xd9\x70\xba\x89\xe6\xfd\xbf\xfb\x19\xa0\x0a\x8a\x6f\ \x44\x3a\x6e\xb8\xd0\x39\x5a\x62\xa7\x56\x04\x5b\xcd\xc8\x0c\xb4\ \x19\x50\x98\x99\xda\xaa\xe8\xef\x5f\x27\x56\x09\x93\x6c\x32\x28\ \xf0\xf0\xd6\x81\x4a\xb1\x93\xb3\x8a\x35\x00\x73\x00\xe2\x08\x34\ \x03\x42\xa8\x00\x08\x67\x85\x9a\x9c\xcd\x22\x0f\x66\x3b\xdd\xd6\ \x43\x81\x6f\x43\x72\x60\x7f\x04\x43\x97\x7e\x5c\xea\x08\x84\x9b\ \xca\xb9\x09\x14\x97\x00\x85\x97\x66\xb1\x1d\xf7\x49\x8a\x88\x29\ \x78\x8c\x6d\xdc\x2b\xe1\x5c\x84\xd1\x17\x90\x86\xb7\xf2\xcb\x2b\ \x3e\x0e\x5d\xa6\xf4\xd0\xe2\xf0\x86\xc1\x6f\x6e\x7a\xa2\x9f\x93\ \x76\x8f\x12\x0e\x7e\xd8\x10\x68\x91\x42\x56\xd5\x36\xac\x69\x35\ \x14\x4d\x81\x3c\x40\x30\x48\xb9\xb1\x73\x02\x94\x86\x9c\x05\x55\ \x2a\xa2\xad\x46\x1d\xe3\xdd\x7a\xbe\xec\x46\x79\x19\x51\x18\x22\ \x74\x60\x53\x4a\xcd\x45\x60\x2f\x41\xac\x27\x50\x80\x70\x02\x83\ \x11\x4f\x00\x4d\x97\x8e\x9c\x25\x0c\x7f\x7b\x26\x30\xc4\xac\x40\ \xb3\xf0\xac\x01\x9e\xc6\x1a\x76\x34\x01\xe0\x8d\x03\xcf\x95\x79\ \xd8\x21\xa0\x3b\xc1\xcd\x30\xac\x8e\x31\x8e\x03\x62\x79\x80\x4a\ \xf2\x01\x77\x0f\x12\x42\xe5\x34\xb2\xc6\x62\x75\xdc\x3e\x04\x57\ \x0e\x39\x53\xdb\xd4\x8a\x87\xf8\x8b\xa7\x0c\xf3\x77\x98\xe8\xe7\ \x9d\x87\xec\x75\x81\xfa\xa2\x06\x28\x52\xa1\x0d\x78\xf1\x52\x07\ \xa2\xe8\x61\x14\xf7\xe8\x60\x61\xc4\x39\xbf\x46\xfa\xf0\x1d\x08\ \x7e\x54\xab\xf0\xe1\xd6\x83\xe1\x9b\xc3\xb7\xcc\xf3\xaa\xef\x95\ \x88\x3d\x48\x39\xf8\x52\x90\x0e\x42\x03\xd0\x33\x28\xa5\xc0\x41\ \xa9\x29\x14\x20\x9e\x01\xd1\x00\xd1\x2c\x7e\x14\x13\x40\xc4\x00\ \xc3\xce\x3e\x54\xc9\x52\x02\x3c\x9b\xc3\xbe\xb0\xe0\x23\x19\x5b\ \xb6\x1d\xec\x00\x48\x8d\x2a\x56\x1e\x09\xb7\x69\x61\xe3\x55\x1e\ \x37\x2e\x50\xb2\x5a\xc1\xe0\xf8\x02\x0e\xa4\x46\x7d\xf4\x32\x9e\ \x7c\x79\xdb\x32\xaa\x22\xab\x09\xea\x2f\x77\x91\x75\x2b\xa4\x5d\ \x1f\x5b\x8f\x67\xcc\xc7\x2d\xd1\x1f\xf3\x7d\xce\x43\xbe\x04\xbc\ \x16\x48\x2f\xc6\xda\xad\xfe\xa4\xa6\xac\xec\x71\xd6\xe8\xd2\xee\ \x72\x42\x49\xfd\xa2\x43\xf2\xaa\x50\x49\x40\x42\xae\xc2\x55\x8f\ \x93\x3a\xb8\x06\x91\xe7\x9d\xc5\xb8\x3a\x68\xe6\xb7\xcc\x61\x7e\ \x82\x62\x26\xd2\x16\x98\x7d\x76\xf0\xca\x80\xf4\x11\x24\x06\x4b\ \x9a\x0c\x8c\x84\x06\x73\x58\xfa\x18\x34\x81\xa2\x01\xd0\xac\xf6\ \xc8\x66\x99\xc4\x80\xbd\x2a\x45\xa5\x00\x76\xd3\xb8\xe1\x8b\x02\ \x3e\x37\x13\x20\x3e\x77\xf0\x23\x0f\xd3\x27\x0e\xba\xd1\x95\x48\ \x55\x2f\x21\x69\xac\xa0\x9a\xe5\xbe\xfd\xee\x77\xe5\x50\x5d\xc1\ \xf8\x41\xe5\x93\xa5\x65\xfa\xf3\xaf\x9c\x56\x0a\x87\x7e\xe9\xfa\ \x9e\x78\xe0\x6d\x6b\xfd\xc5\xc0\x79\x54\x72\x03\xdb\x78\xe5\x1d\ \x07\xe0\x5e\x20\xcc\x80\x31\x3f\x08\xe4\x39\x8e\xc8\xe8\xba\xd8\ \x3f\xc6\xd8\x3a\xb6\x2e\x92\xc6\x55\xb8\x28\xc3\x99\xf7\x58\xac\ \xfb\x88\x6c\x0c\x27\xd2\x0d\xa9\xec\xc8\xdb\xda\x39\x21\x02\x29\ \xa2\x83\xd7\xbb\x0f\x85\xd1\xee\xdb\xbe\x2d\xf6\x4c\x5d\x04\x1e\ \x24\x2c\xbc\xa0\xd2\x67\x20\x9d\xcd\x4e\xcf\xdd\xf4\x70\xc7\x63\ \xba\x29\x63\x0d\x88\xca\x54\x20\x80\xf3\x52\x7e\xe6\x01\xcc\x33\ \x96\xb5\xf0\xd6\xc0\x67\x39\x7c\x9a\x81\x73\x3b\x81\xe2\xc7\x0e\ \xc5\x3e\x38\x13\xea\xe6\xf1\x07\xe4\x0f\x04\xe8\x00\xe3\x38\xe5\ \xac\x9e\x50\xb5\xf9\xeb\xdc\xec\xd7\xe8\xc4\x5b\x2f\x59\xa5\x5e\ \x95\x2f\x7f\x49\x08\xd2\x11\xed\x9c\xec\xf9\xbd\x93\x2c\xe2\x6c\ \x80\xd5\x0b\x85\x5e\xfa\x80\xfc\x1a\xc2\xfd\x7d\x14\xed\x36\x9c\ \xba\xeb\xe3\xb6\x4a\x12\xe6\x7a\x15\x63\x91\xd4\x46\xf2\xc6\x2a\ \xe3\xd6\x90\xe9\x9f\xbc\x7c\x1b\x18\xdd\x0c\x32\xa8\x47\x48\xa2\ \xdb\x86\x29\x1a\x14\x6e\x5c\x66\x32\x07\x30\xf5\xcf\x36\x3b\x66\ \x23\x5f\x33\xdf\x1f\x5d\x74\x5f\xa6\x5d\x5f\x25\xe9\x66\xb9\x2b\ \x05\xe4\x08\x10\x35\x48\x11\x83\xa9\x0a\xcc\x37\x78\xe4\xc0\x02\ \xa0\x79\x1c\xf1\x76\x96\x41\x6c\x29\x53\x2a\x07\x9b\x0c\x5c\xa4\ \xf0\x69\x02\x37\x1e\x4e\xa1\xe4\xa6\x6c\x3b\x98\x3d\x46\x6e\x83\ \xb4\xf7\x70\xe5\xa5\x4a\x0d\x97\xc1\xd9\x16\x01\x3b\x3c\x5e\x8c\ \x39\xaf\x8c\xbc\xa9\x57\x29\x6f\xfc\x06\xb5\xf6\xdf\x94\xcf\x7d\ \xfb\x26\x35\x30\x02\x30\xe2\xef\x7d\x55\x60\x54\x55\xe2\xc6\x33\ \xa4\x2e\x9c\x73\x38\xf7\x6d\xd7\xee\x81\xee\x9e\x21\x5c\xca\x94\ \x84\x66\x76\x50\xea\xc7\xb8\xc7\x7e\xf4\x82\xe0\xb0\x68\x78\x56\ \x4d\xe9\x87\x87\x08\x6e\xec\xc2\x77\x56\xc8\x23\x66\xdd\xff\x80\ \xd4\x60\xa3\x77\x32\x1c\xf8\x3c\x7c\x38\xbd\x36\x7c\x08\xe4\x54\ \xc0\x0e\xcc\x39\x80\xc3\xdb\xb1\x82\x59\x43\xb2\x02\x4a\x31\xe6\ \x05\x99\x9b\x01\x19\x83\xdd\x00\x6c\x8f\x34\x84\x37\xa5\xcf\x07\ \x70\xe3\x3e\x5c\x72\x50\xaa\x0f\x9f\x15\xf0\x47\x30\x76\x19\x69\ \xa2\x46\xcd\x33\xad\x0f\x9a\x8d\x66\x0b\x45\x26\x48\x8f\xd7\xa1\ \x31\xa0\x78\xfb\xd0\xa5\x6d\x2b\x07\x15\xe3\x51\x0e\xdc\x05\xa7\ \x7d\x51\x6b\xf3\xc1\xfe\x25\x54\x86\x63\x8a\xbe\xe9\x01\x14\xb8\ \xd7\xf8\xae\x4a\x15\x1f\x6b\xfc\xc6\x17\x25\x32\x53\x65\xa9\xac\ \x1f\xdd\xba\x29\x85\x51\xe0\xe5\x16\x88\x0c\x54\xff\x8a\x17\x7d\ \x29\x4d\xe3\x51\x61\x9b\x27\x7b\xa7\xb2\xab\x7b\x42\x04\xa3\x1b\ \x83\x13\xd8\xb2\x81\xb2\x0e\x68\x26\x60\xbf\x0d\x38\x9e\x64\x08\ \x18\x0b\x8a\x0a\xb0\x1e\x83\xd4\x10\x90\x11\x08\x04\x66\x03\xb8\ \xf1\x0c\xc6\x21\x7c\x5e\x2a\xdb\x2b\x2f\xed\xc0\x8f\x4a\xfe\x79\ \x06\x37\x9a\x2c\x13\x64\x85\x3a\xa8\x9f\xaa\xbe\xde\x5e\xc6\x9b\ \xb0\xaa\xc3\xf9\xd2\x73\x30\xd9\x75\x0a\x46\x1f\x18\xce\x87\xae\ \x39\x30\xaa\xbd\x35\x96\xdf\x1d\x5a\xf7\xf4\xda\x86\x15\xed\x15\ \x69\x2a\x0f\xbb\xd6\xd6\xcd\xd1\xd6\x70\xbf\xba\x68\x1d\xd1\x2f\ \xf2\xb1\x7b\x9e\x82\x1f\x3b\x27\x70\xf6\x98\x80\x70\x96\xce\xfd\ \x10\xfc\x1f\x17\x09\x4f\xb4\x35\x32\xa3\x11\x8c\x04\x2a\x03\xe5\ \x93\x07\x1f\x25\x17\xbf\x08\x35\x24\x90\x7b\xd0\x07\xc3\xc6\xde\ \xc6\xa1\xee\xbf\x6b\x3e\x1b\xc0\xb6\x82\x05\x90\x6c\x12\x64\x2d\ \x82\x8c\x17\x20\x2a\xa5\xa2\x16\x44\xd0\x00\xa9\x18\x24\xc3\xd9\ \x9e\xde\x95\xbf\x19\xd8\x26\xf0\xc5\x00\x3e\x2b\x81\xa4\xfb\x25\ \x90\x83\xb2\x6d\xe0\x06\x8c\xe2\x90\xbc\x11\xc1\x5e\x67\xad\xfe\ \x56\xbd\xa3\xdf\x12\x1c\xf4\x99\xf9\x32\xcc\xd2\x29\x32\xf1\x32\ \xc8\x7e\xcb\xfa\xfc\x0d\xa7\xde\xef\x47\x8f\x0b\x8b\xee\x9e\xa7\ \xd9\xae\x20\x7f\xf3\xc9\x80\xba\xc3\x45\x45\x63\x23\x6a\x65\xd4\ \x68\x18\x43\xf4\x11\x20\xbf\xb8\xf1\xbf\x07\xa1\x0d\x81\xb5\x96\ \xf4\xd9\xd9\xd3\x70\xf1\x57\x48\xf7\x6f\x40\xfb\x27\x39\x3a\x6c\ \x20\xdc\xd9\x38\xaa\x53\x46\x3b\xee\xd1\xdd\x2b\xe9\xe3\xdc\x37\ \x6b\x51\xc5\x6b\xd9\x00\x64\x5d\x40\xc6\x11\x44\x54\x87\x08\x6b\ \x20\x55\x01\xc9\x00\x10\x62\xba\xd3\x75\x05\xbc\x1d\x83\xf3\x21\ \x7c\xa9\xc9\x12\x49\x18\x66\x00\x64\x99\xca\x64\x53\xbe\xd5\x7b\ \x30\x7c\x35\x8e\x3a\x55\x62\xb5\x0e\xe0\x7d\x20\x32\x4c\xee\xa7\ \x94\x76\x1f\x60\xab\x57\x49\xf2\xcb\x90\x38\x4f\xd7\xde\xee\xd3\ \x3f\xdf\x61\x7c\xc8\xf8\x66\x2d\x80\xb4\x1a\xed\x2c\x47\x08\x4b\ \xf4\xcb\x02\x61\x00\x7f\x79\x5a\xc2\x3d\xbc\xc6\x85\x7c\xce\xeb\ \xc1\x79\x52\xe2\x69\xae\xee\xf5\x50\xb9\x75\x41\x8e\x35\xb3\x55\ \x27\x18\xbe\xe3\x91\x05\xc3\x5d\xf9\xe2\xee\xe5\xd1\x32\x0f\x6d\ \x2f\x0a\xbd\x54\xf1\x2c\xb9\x44\x04\xd2\x12\x50\xb3\xc3\x67\xef\ \xc1\x7e\x56\x6c\x15\x80\x4f\x01\x33\x06\xb2\x5c\x3a\xd5\x55\x9b\ \x8b\xa7\xbb\xc3\xb8\x91\xfd\x4f\x92\xe6\x7d\xd8\x3a\x38\xeb\xae\ \x12\xf1\x3b\x90\x7a\x13\x1c\xc7\x24\xc7\xef\x71\xde\x5c\x86\x95\ \x4d\x06\x6e\x0a\x61\xaf\xe0\x4b\x3f\x48\xe9\x67\x8d\x01\xd3\xea\ \x8f\x08\xfc\xcb\x01\x79\xfd\x29\x81\xfe\xea\x1a\x48\xac\x38\xde\ \x7b\x87\x85\x7e\x52\xb4\xf6\x7a\x14\xef\xbe\xcf\x7d\xda\xa3\xbc\ \xfe\x00\x64\x56\x21\x35\x0e\xbc\x8f\x3e\x03\xed\x9f\xf0\x59\x71\ \x73\x5c\x8c\x1f\x3e\xb8\x26\x97\xcc\x81\x3b\xe1\x92\xa2\x2e\x89\ \x95\x54\x0c\x21\x40\x44\x0c\x06\x4d\x98\x38\x57\x7a\x12\x46\xc4\ \x6a\xb7\xb2\x10\x1d\xb4\x56\x69\x33\x8a\xa3\x2d\x51\xe1\x05\x1a\ \xb4\x6e\xb2\x3e\xfc\x36\x60\x36\x29\x5f\x5d\xe0\xac\x7e\x9c\x44\ \xfe\x12\xc2\xda\x88\x1d\x35\x9c\xb5\x57\x15\xc5\x4d\xf6\x68\x53\ \x68\x37\x41\xc3\x1d\xfc\xda\x4b\x05\x7d\xc2\x91\x2a\xfc\x82\xb6\ \x7f\xf9\x05\x72\xdb\xe2\xa4\x14\x42\xa1\xe8\xbf\x24\xeb\xd1\x29\ \xd4\xb7\x61\xe3\xc3\xd7\xe4\x7e\xbe\x61\x87\xa7\x8f\xe9\x60\x7c\ \x93\x21\x63\xb2\x95\x16\xb4\x6e\x90\x4f\xbf\x2f\x03\x55\xab\xb5\ \x68\x5c\x53\xdd\x13\xd6\xda\x6b\xb6\x70\x91\xc9\x7d\x3b\x4d\xff\ \x6f\x35\xd7\xd6\x22\xc7\x71\x85\xbf\x53\x5d\xd5\x97\x99\x9e\xd9\ \xd9\x9b\xb4\xab\x45\x09\x8e\x8d\x91\x9d\x7b\x6c\x07\x41\xae\xe4\ \x21\xc6\xc1\xe0\x40\x88\xf1\x63\xf2\x4f\xf2\x98\x37\xe7\x37\xc4\ \x2f\x06\x93\x10\x84\x83\x13\x25\xe0\x80\x43\x30\x09\xb1\x12\x22\ \x6b\xa3\xcb\x6a\xa5\xd5\xcc\x8e\x76\x67\x76\x67\x7a\xfa\x5a\xdd\ \x55\x75\xbc\x0c\xc8\x66\x61\x4d\x14\x90\x60\xfd\xc1\x81\xe2\x9c\ \xee\xea\x3e\x1f\x14\x1c\x4e\x9f\xaf\xcb\xa4\xa9\x5c\x64\x1a\x96\ \xca\x47\x19\x45\x8a\x83\x50\x09\xbf\x4b\x24\x95\xdd\x91\xb6\xc3\ \x90\xb6\x60\xa1\xba\xe0\xc3\xdf\x3a\x49\x2f\x52\xb5\xaa\x38\x9c\ \x4c\x11\x4c\x77\x50\xc5\x23\xb6\x7e\x4c\x3a\xbb\x4b\x61\x2f\x15\ \x42\x2d\xa2\xd1\x43\x8a\x64\x06\xeb\x2f\x98\x6a\xb1\x2b\xef\xe0\ \xe0\x61\xf5\x35\x84\xff\x03\xfc\xc1\x4b\xc4\xb5\x3a\xc3\x16\x9e\ \x08\xb2\x7d\x28\xb3\xec\x3a\x07\x6b\x82\xaa\x29\x26\xf9\x2e\xcc\ \xf9\xc8\x36\x99\x24\xcf\xfa\x2c\x4a\x21\x54\xf7\x07\xac\xf2\x0e\ \xe5\xf6\x1a\x7a\xb3\x67\xa9\x08\x2d\xf2\xc5\xa7\xe1\x19\xb0\xe5\ \x36\x93\xe8\x92\x4c\xb7\x00\x16\x96\x99\x85\xb0\x1a\x2e\xec\xc0\ \xa9\x08\x0a\x2b\xf0\xf5\x3d\x91\xc5\x39\x3b\x15\x20\x32\x6d\xa0\ \xfc\x3d\xb7\x70\x81\x0e\xce\x75\x09\xc5\x6f\x10\x67\xa3\x66\x12\ \x36\xaa\x5e\xfb\x3c\x02\x7d\x80\xad\x0f\xef\xe3\xeb\xdf\xe9\xc2\ \x35\xad\xa6\x2a\x0f\x4b\xdf\x53\x9d\x0a\x01\xc1\x96\xf8\xee\xd9\ \x9c\xe8\xad\x47\x38\xda\xbd\xfd\x33\x82\x09\x62\x08\x91\x57\x45\ \x7f\x68\xeb\x49\x80\xa5\x7e\xe4\xe2\xfe\x2e\x2c\x76\xa0\xef\x5b\ \x1c\x85\x28\x1c\x67\x64\xf2\x44\x88\xc5\x45\xf8\xc6\x63\x8d\x77\ \xad\xe9\x4c\x6d\xac\xc7\x2e\x5b\x03\x83\xae\xc2\xb6\x0f\xe0\xd4\ \x75\x98\x70\x87\x39\xd8\x01\xfb\xdb\x1e\xa9\x9b\xec\xe4\x2d\xb8\ \x60\x0b\xd6\xdf\x86\xf3\x47\xe0\x60\x06\xf2\x36\x61\xc2\x5d\x90\ \xb8\x09\xbd\x7a\x46\xc0\xfe\x81\x7b\x33\xcd\x4d\x6f\x05\x39\x6b\ \xb5\x6a\x35\x54\x73\x13\x14\x2b\x3c\xfb\xb4\x87\x6f\x3c\x3f\x85\ \xe0\x44\x85\x7e\x28\x7b\x65\x69\xab\xe9\x14\x44\x16\xff\xfe\xaf\ \x7a\x64\xb3\xee\xf3\x9e\xeb\x38\x97\x80\xad\xe8\x85\xdf\x65\xad\ \x0b\x4e\xd0\xf9\xc4\x47\xd0\x1f\xcb\xd5\x64\x4c\x4f\x6d\x31\x2e\ \xc2\xe1\xca\xb5\x5a\x84\xa3\x06\xde\x59\xe5\xc2\x66\x83\xc9\xfe\ \x0b\x55\x3d\xa0\x85\x24\x27\xcf\x0d\x49\x2f\x68\x20\xb8\x03\x8e\ \xf6\xc0\xed\x11\xb1\xda\x84\x09\xfa\xe4\xc2\x3e\xb1\x3f\x10\xe4\ \xf7\x45\x13\x0c\x60\xa2\x3e\x5c\xb4\x0f\x29\x86\x8e\xc3\x3d\x12\ \xe1\x1e\x37\xf2\x26\x8e\x58\x46\x12\x4e\x6c\x94\x5c\xe6\x5e\xb1\ \x01\xb7\x2e\x30\x1e\x1a\xbc\x7d\x55\xc3\xb8\xfb\xc8\xbb\x1d\x5c\ \xba\x4c\xf4\xdc\xe5\x1c\xd6\xe6\x2d\xca\x49\xfe\xf2\x8a\xc1\xe2\ \x66\x85\xb2\x7e\xb4\xa3\xdd\xd0\x53\x43\xdf\xfe\x13\x33\x03\x88\ \x6f\x0b\x11\xd9\x0c\x97\xea\x86\x5e\x3d\x3e\x00\xcb\x7f\xfd\x16\ \xa1\x97\x6f\x20\x2c\x0e\x78\x5f\xdc\xf0\xf2\x36\xbb\x2f\x6d\x2b\ \xba\xfe\x4c\xc1\x82\x6e\x13\xda\x35\xc0\x77\x61\x5b\x11\x64\x93\ \x0a\x8a\x0b\xeb\xea\x82\x6a\xc9\xc2\x77\x47\x88\x2d\x98\xa7\xc4\ \x88\xe0\xdb\x94\x55\x54\x31\xd3\x2e\x99\x60\xea\x42\xbb\xca\x79\ \x37\x54\x4b\x83\x4d\x27\xfc\x9e\xe3\xf5\x0d\xf1\x5c\xba\x49\x00\ \xf0\xfa\x9f\x35\xff\xe5\x9b\x0e\x1b\x50\xfc\x56\xa7\xa6\x8b\xef\ \x36\xfc\xf6\x0b\x84\xef\x01\xf4\xe5\x7d\x00\xfb\xee\x91\x10\x72\ \xbc\xe7\x3a\x07\xa1\x37\x33\x9f\xaa\x79\xeb\x99\x2e\xb7\x8b\x16\ \xa2\xd9\x75\xef\xbd\x49\xe9\x7e\x08\xe1\x7c\x90\x37\x5b\x6b\xb1\ \x9b\x6c\x8a\xa0\xf7\x24\x28\xdd\x22\x8e\x9f\x62\xf0\x90\x89\xad\ \x57\xb8\xcc\x29\x03\x64\x4a\x92\xf2\xe1\x44\x91\x13\x45\x12\x82\ \x5b\x24\x68\x76\xb4\x2c\x30\x8b\x9c\x5b\xd8\xbf\x45\xd5\xd2\x79\ \xf4\xa3\x01\xce\x4d\x3e\x80\x6d\x3d\x8f\xf7\x5f\xba\x83\x8b\xef\ \x94\x00\x40\xdf\xff\x7b\xc3\x7f\xfc\x82\x87\x37\x40\x00\x98\x5e\ \xfe\x07\x3f\x76\x01\x11\x11\xf8\xd3\xc8\x70\xff\xfc\x9a\x70\x61\ \xb2\xa2\x65\x7a\xcf\x3b\x3b\xc9\xe8\xe7\x00\xce\x42\x41\xb7\x1b\ \x12\xc8\xbc\x85\x5e\xc5\xd6\x4b\xc1\x61\x0a\xa8\x0c\x1e\x0e\xd9\ \xb5\x0b\xe4\x3a\x11\x23\x37\x43\xea\xe7\xc4\x61\xe5\x25\x87\x23\ \xf6\xc4\x1e\x02\xae\x5c\x68\x34\xb4\xcc\xe1\xb5\x1d\xf9\xdb\xd7\ \x64\xcb\xc5\x30\x17\x94\xb7\x92\x64\x88\x93\x2d\xac\xec\x3d\xc1\ \x7f\xfb\x29\x1e\x80\x5e\xbc\x6d\xe9\x52\xca\xa7\x42\xa6\xda\xb4\ \xc7\xb1\xf3\x0f\xcb\x68\x21\x1b\x13\x61\x0e\xab\xb1\x2c\x6f\x7c\ \x95\x91\xbb\x5b\xb0\x2c\x29\xc4\x0c\x2e\xd6\x50\x34\x21\x2d\x0b\ \x61\xa4\xc6\x2b\x9b\x1a\x9d\x1b\x1a\x8b\xae\x82\xa1\x1c\xe9\x9a\ \x26\x60\x06\x87\xc6\x6b\x8d\x26\x08\x18\xf0\x6d\x23\x7b\x4b\x95\ \x0b\xf4\xd4\x35\x26\x06\x00\xb1\x36\x19\xd8\xd6\x14\xe8\x0e\xe3\ \x53\xa7\xdb\x65\x86\xf0\xcf\xe4\xd2\x93\xd9\x08\x9d\xd4\x01\x40\ \x9a\x42\x18\x2b\x04\x74\x37\x47\x44\x39\xc2\x82\x51\x1e\x79\x21\ \x3d\x40\xa5\xe8\xd9\x06\x3e\xcd\x8f\x1f\xde\x87\x43\x7e\xb5\x86\ \x28\x2b\x2c\x11\xc8\xe7\x92\x24\x15\x4d\x67\xbf\x81\x63\x03\x92\ \x06\x57\x3f\xc7\x75\x30\xee\xdb\xc0\x2d\x30\x00\xa2\xc2\xa1\x35\ \xbd\xed\x56\xfa\xcb\xa7\x51\xc8\xec\x61\x21\x49\x69\xbd\xf8\xb8\ \x2a\x8c\x7c\x48\xd5\x04\x35\x4c\x93\xa1\x56\x0c\x6e\x19\xc4\x3a\ \xb7\xca\x09\xa3\x9a\x12\x19\x58\xbb\x52\x3f\xf8\xa6\x8c\x97\x8d\ \x83\xd7\x68\x0c\x86\x04\x51\x95\x5c\xa3\x54\xd6\x7a\xf3\xae\x90\ \xcc\x4b\xcc\x15\x33\xbb\x07\xec\x17\xc8\xaf\xaf\x7b\xf3\x87\x8a\ \xc3\xca\x06\xc9\xa4\xde\x79\x32\x3a\x4d\x42\x66\x00\x70\x10\xce\ \x1c\x2b\x91\x2d\x22\x39\x5c\xc9\x91\x4d\x33\xfa\xd1\x3b\x40\x27\ \xd1\x48\x3c\x0b\x12\xf0\xa4\xd0\x90\x96\xb9\xd8\x33\xc7\xa6\xa6\ \xcf\xd7\x06\xa5\x63\x90\x69\x38\xf4\xf2\x2a\x16\x12\xeb\x55\x8d\ \x5f\xdf\xd7\x78\xc6\x92\x1f\xb1\x71\x9d\x49\xd2\xf6\xe3\x39\x21\ \xd4\x05\x84\x2b\x53\xaf\xb3\x47\x38\x2d\x60\x9e\xdb\x71\x5f\x01\ \xb2\x0d\x3a\xfc\xe1\x17\xe9\x63\xdf\xaf\x30\x5f\xdb\x2b\x3f\xe9\ \xf2\x95\xd7\x3c\x7e\x73\x59\x30\x9f\xbc\x17\xbf\xf7\x15\xe2\xbb\ \xe7\x96\x5d\xe6\xf7\x3e\x89\x2d\xcd\xaf\x4f\xf6\x82\x80\xab\x40\ \x1d\xbb\xef\x10\x82\x79\x6e\xa7\x13\x3c\x83\xe0\x14\xfe\x89\xb1\ \xff\xbc\x12\x31\xff\x02\xfc\x3f\x48\xb6\xe3\xb8\x55\x65\x22\xfe\ \xc4\x77\xec\xcf\x12\xde\x09\x64\xd2\xa9\x25\x44\xeb\xf9\x0b\xd3\ \x89\xc9\x5e\xfb\xb1\x7c\xc8\x3d\xe4\xbd\x7b\xf0\x4f\x20\xeb\xb1\ \x25\x2f\x1e\xd7\x11\x1a\x0c\x4e\xae\x57\xe6\x49\xdc\xad\x2c\x1e\ \x02\x45\x01\x1b\x45\x30\x27\xd4\x42\x0f\xea\xa1\xcf\x06\x98\xe7\ \xf6\x99\xc4\x47\x00\x82\xcc\x5d\x48\x6e\xc3\x72\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\xa9\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x2c\x00\x00\x00\x06\x08\x04\x00\x00\x00\x12\xba\xb4\xda\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x02\x62\x4b\x47\x44\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09\x70\ \x48\x59\x73\x00\x00\x0d\xd6\x00\x00\x0d\xd6\x01\x90\x6f\x79\x9c\ \x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x0a\x15\x02\x2e\x16\x28\ \xc5\x30\x58\x00\x00\x01\x2d\x49\x44\x41\x54\x28\xcf\x55\x92\xcd\ \x4a\x42\x01\x10\x85\xbf\x73\xed\x56\x22\xa5\x29\x45\x11\x85\x44\ \x50\xed\xb4\x1e\xa0\x75\xaf\xd1\x0b\xf4\x06\x81\xd0\xb6\xa7\x69\ \xd1\xb6\x4d\xcb\xca\x5d\x10\x11\x81\xf4\x03\x59\x61\xa5\xe6\x4d\ \xef\x69\x71\xaf\x8a\x33\x8b\xe1\x0c\x73\xce\x30\x87\x11\xc0\x0e\ \xb3\xc1\x4d\x0c\x00\xd5\x12\x45\xe7\xc9\x92\xd1\x92\x4b\x2c\x30\ \x47\x4e\x59\x42\x87\x0a\x80\x98\x3f\x47\x74\xd5\xf6\x37\x1f\x6a\ \xd2\x24\x76\x87\x16\xef\xf5\xcf\x84\x5f\x09\xd6\xe2\x33\x6a\x08\ \x76\xb8\x05\xaa\xeb\x1c\x78\x95\x2d\x36\x55\xa6\x08\x60\xc6\xa1\ \x11\xd6\x44\x3f\xc1\x7a\xe3\xd1\xf7\xba\xa3\xe1\xf3\xfa\x73\xa2\ \x28\x80\xbd\xec\xe0\x84\x23\x65\x9c\x0a\x28\x66\x60\x24\x27\x8a\ \x80\xd2\x6a\x84\x53\x65\x19\x6c\xc1\x94\x35\x5c\xa7\xc8\xa7\x85\ \xe3\x8b\x7e\x8d\x00\x60\xad\x4f\x83\x27\xff\x8e\xa8\x81\x43\x02\ \x2c\x13\xe3\x24\x6d\x26\x33\xb6\x6d\x65\x08\x93\xe5\x02\xe8\xf2\ \xc2\x53\x77\x90\xe2\xc4\x0a\xa8\xec\x6b\xd7\x8b\x2a\xb3\xe1\x65\ \xad\x30\x3d\xb4\x23\xbd\x62\x84\x3c\x69\x43\x8f\x67\xbf\xe8\x81\ \x06\xaf\x5c\xdd\x5c\x82\xd8\x1e\x5a\x71\xcd\x61\xd0\x8b\x6f\xd3\ \xf1\x4a\x81\x79\xe5\xc9\x39\xc4\xcc\x91\x27\x47\x96\x19\x85\x08\ \x6c\x22\x22\x3a\xb4\x69\xe9\x07\x39\xa2\x4d\x8b\xaf\x7a\x2b\xe1\ \x8e\xdf\xe0\x1f\x5d\xe3\x8b\x95\xa8\x58\x6d\x6b\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x09\ \x00\x38\x80\xfe\ \x00\x61\ \x00\x6e\x00\x69\x00\x6d\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\ \x00\x06\ \x06\x88\x9f\xa3\ \x00\x62\ \x00\x61\x00\x73\x00\x69\x00\x63\x00\x73\ \x00\x10\ \x09\x74\x70\xe2\ \x00\x70\ \x00\x61\x00\x74\x00\x68\x00\x69\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x70\x00\x6f\x00\x6c\x00\x61\x00\x74\x00\x6f\x00\x72\ \x00\x0d\ \x01\x01\x29\x3c\ \x00\x61\ \x00\x6e\x00\x69\x00\x6d\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x06\ \x06\xb8\xa0\x47\ \x00\x65\ \x00\x61\x00\x73\x00\x69\x00\x6e\x00\x67\ \x00\x06\ \x07\xaa\x8a\xc3\ \x00\x73\ \x00\x74\x00\x61\x00\x74\x00\x65\x00\x73\ \x00\x09\ \x0e\x8c\x57\xf3\ \x00\x62\ \x00\x65\x00\x68\x00\x61\x00\x76\x00\x69\x00\x6f\x00\x72\x00\x73\ \x00\x0d\ \x05\x2d\x81\x1e\ \x00\x70\ \x00\x61\x00\x74\x00\x68\x00\x61\x00\x6e\x00\x69\x00\x6d\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\ \x00\x11\ \x01\x2b\x0f\x3c\ \x00\x70\ \x00\x61\x00\x74\x00\x68\x00\x61\x00\x6e\x00\x69\x00\x6d\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \ \x00\x0e\ \x03\x4b\xca\x1c\ \x00\x77\ \x00\x69\x00\x67\x00\x67\x00\x6c\x00\x79\x00\x74\x00\x65\x00\x78\x00\x74\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0c\ \x00\x98\x05\x3c\ \x00\x53\ \x00\x69\x00\x64\x00\x65\x00\x52\x00\x65\x00\x63\x00\x74\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0c\ \x0a\x81\x10\x9c\ \x00\x74\ \x00\x76\x00\x74\x00\x65\x00\x6e\x00\x6e\x00\x69\x00\x73\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x14\ \x02\xfe\x8d\x7c\ \x00\x62\ \x00\x65\x00\x68\x00\x61\x00\x76\x00\x69\x00\x6f\x00\x72\x00\x2d\x00\x65\x00\x78\x00\x61\x00\x6d\x00\x70\x00\x6c\x00\x65\x00\x2e\ \x00\x71\x00\x6d\x00\x6c\ \x00\x0b\ \x05\x52\xbf\x27\ \x00\x71\ \x00\x74\x00\x2d\x00\x6c\x00\x6f\x00\x67\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ \x06\xe3\xac\x1c\ \x00\x74\ \x00\x72\x00\x61\x00\x6e\x00\x73\x00\x69\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x73\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0a\ \x0a\xcd\x05\x3c\ \x00\x73\ \x00\x74\x00\x61\x00\x74\x00\x65\x00\x73\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0a\ \x00\x47\x29\x7c\ \x00\x65\ \x00\x61\x00\x73\x00\x69\x00\x6e\x00\x67\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x14\ \x00\xf7\xc0\xdc\ \x00\x70\ \x00\x61\x00\x74\x00\x68\x00\x69\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x70\x00\x6f\x00\x6c\x00\x61\x00\x74\x00\x6f\x00\x72\x00\x2e\ \x00\x71\x00\x6d\x00\x6c\ \x00\x13\ \x09\x74\xb2\xfc\ \x00\x63\ \x00\x6f\x00\x6c\x00\x6f\x00\x72\x00\x2d\x00\x61\x00\x6e\x00\x69\x00\x6d\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x2e\x00\x71\ \x00\x6d\x00\x6c\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x16\ \x07\xe4\x0e\x9c\ \x00\x70\ \x00\x72\x00\x6f\x00\x70\x00\x65\x00\x72\x00\x74\x00\x79\x00\x2d\x00\x61\x00\x6e\x00\x69\x00\x6d\x00\x61\x00\x74\x00\x69\x00\x6f\ \x00\x6e\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x08\ \x06\x61\x59\xc7\ \x00\x6d\ \x00\x6f\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x03\x18\xd8\x27\ \x00\x66\ \x00\x61\x00\x63\x00\x65\x00\x2d\x00\x73\x00\x6d\x00\x69\x00\x6c\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x0a\x85\x58\x07\ \x00\x73\ \x00\x74\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x07\ \x0a\xc1\x57\xa7\ \x00\x73\ \x00\x75\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x0b\x69\x6b\xa7\ \x00\x73\ \x00\x68\x00\x61\x00\x64\x00\x6f\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct_v1 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x02\ \x00\x00\x00\x50\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\xac\x00\x02\x00\x00\x00\x01\x00\x00\x00\x1a\ \x00\x00\x00\x18\x00\x02\x00\x00\x00\x03\x00\x00\x00\x12\ \x00\x00\x00\x70\x00\x02\x00\x00\x00\x01\x00\x00\x00\x11\ \x00\x00\x00\x82\x00\x02\x00\x00\x00\x03\x00\x00\x00\x0e\ \x00\x00\x00\x2a\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0d\ \x00\x00\x00\x94\x00\x02\x00\x00\x00\x04\x00\x00\x00\x09\ \x00\x00\x01\x16\x00\x00\x00\x00\x00\x01\x00\x00\x2a\x80\ \x00\x00\x01\x52\x00\x00\x00\x00\x00\x01\x00\x00\x45\x01\ \x00\x00\x00\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x82\ \x00\x00\x01\x34\x00\x00\x00\x00\x00\x01\x00\x00\x33\xe5\ \x00\x00\x01\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x95\xdf\ \x00\x00\x01\x80\x00\x00\x00\x00\x00\x01\x00\x00\x56\x61\ \x00\x00\x01\x9c\x00\x00\x00\x00\x00\x01\x00\x00\x6a\x82\ \x00\x00\x01\xc0\x00\x00\x00\x00\x00\x01\x00\x00\x7d\xca\ \x00\x00\x01\xda\x00\x01\x00\x00\x00\x01\x00\x00\x8c\xf2\ \x00\x00\x02\x4e\x00\x02\x00\x00\x00\x05\x00\x00\x00\x15\ \x00\x00\x02\x60\x00\x00\x00\x00\x00\x01\x00\x00\xb7\x50\ \x00\x00\x02\x22\x00\x00\x00\x00\x00\x01\x00\x00\xa3\xef\ \x00\x00\x02\xa8\x00\x00\x00\x00\x00\x01\x00\x00\xd1\x34\ \x00\x00\x02\x92\x00\x00\x00\x00\x00\x01\x00\x00\xc7\xaf\ \x00\x00\x02\xca\x00\x00\x00\x00\x00\x01\x00\x01\x0d\x68\ \x00\x00\x02\xe0\x00\x00\x00\x00\x00\x01\x00\x01\x0e\xc9\ \x00\x00\x02\xf4\x00\x00\x00\x00\x00\x01\x00\x01\x2e\xa6\ \x00\x00\x00\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x2f\ " qt_resource_struct_v2 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x02\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x50\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x00\xac\x00\x02\x00\x00\x00\x01\x00\x00\x00\x1a\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x18\x00\x02\x00\x00\x00\x03\x00\x00\x00\x12\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x70\x00\x02\x00\x00\x00\x01\x00\x00\x00\x11\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x82\x00\x02\x00\x00\x00\x03\x00\x00\x00\x0e\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x2a\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0d\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x94\x00\x02\x00\x00\x00\x04\x00\x00\x00\x09\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x16\x00\x00\x00\x00\x00\x01\x00\x00\x2a\x80\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x01\x52\x00\x00\x00\x00\x00\x01\x00\x00\x45\x01\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x00\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x82\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x01\x34\x00\x00\x00\x00\x00\x01\x00\x00\x33\xe5\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x01\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x95\xdf\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x01\x80\x00\x00\x00\x00\x00\x01\x00\x00\x56\x61\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x01\x9c\x00\x00\x00\x00\x00\x01\x00\x00\x6a\x82\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x01\xc0\x00\x00\x00\x00\x00\x01\x00\x00\x7d\xca\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x01\xda\x00\x01\x00\x00\x00\x01\x00\x00\x8c\xf2\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x02\x4e\x00\x02\x00\x00\x00\x05\x00\x00\x00\x15\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x02\x60\x00\x00\x00\x00\x00\x01\x00\x00\xb7\x50\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x02\x22\x00\x00\x00\x00\x00\x01\x00\x00\xa3\xef\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x02\xa8\x00\x00\x00\x00\x00\x01\x00\x00\xd1\x34\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x02\x92\x00\x00\x00\x00\x00\x01\x00\x00\xc7\xaf\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x02\xca\x00\x00\x00\x00\x00\x01\x00\x01\x0d\x68\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x02\xe0\x00\x00\x00\x00\x00\x01\x00\x01\x0e\xc9\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x02\xf4\x00\x00\x00\x00\x00\x01\x00\x01\x2e\xa6\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x00\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x2f\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ " qt_version = QtCore.qVersion().split('.') if qt_version < ['5', '8', '0']: rcc_version = 1 qt_resource_struct = qt_resource_struct_v1 else: rcc_version = 2 qt_resource_struct = qt_resource_struct_v2 def qInitResources(): QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt5_gpl-5.10.1/examples/quick/animation/basics/0000755000076500000240000000000013245231431021654 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/animation/basics/color-animation.qml0000644000076500000240000001153513245231431025467 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import QtQuick.Particles 2.0 Item { id: window width: 320; height: 480 // Let's draw the sky... Rectangle { anchors { left: parent.left; top: parent.top; right: parent.right; bottom: parent.verticalCenter } //! [0] gradient: Gradient { GradientStop { position: 0.0 SequentialAnimation on color { loops: Animation.Infinite ColorAnimation { from: "DeepSkyBlue"; to: "#0E1533"; duration: 5000 } ColorAnimation { from: "#0E1533"; to: "DeepSkyBlue"; duration: 5000 } } } GradientStop { position: 1.0 SequentialAnimation on color { loops: Animation.Infinite ColorAnimation { from: "SkyBlue"; to: "#437284"; duration: 5000 } ColorAnimation { from: "#437284"; to: "SkyBlue"; duration: 5000 } } } } //! [0] } // the sun, moon, and stars Item { width: parent.width; height: 2 * parent.height NumberAnimation on rotation { from: 0; to: 360; duration: 10000; loops: Animation.Infinite } Image { source: "images/sun.png"; y: 10; anchors.horizontalCenter: parent.horizontalCenter rotation: -3 * parent.rotation } Image { source: "images/moon.png"; y: parent.height - 74; anchors.horizontalCenter: parent.horizontalCenter rotation: -parent.rotation } ParticleSystem { id: particlesystem x: 0; y: parent.height/2 width: parent.width; height: parent.height/2 ImageParticle { source: "images/star.png" groups: ["star"] color: "#00333333" SequentialAnimation on opacity { loops: Animation.Infinite NumberAnimation { from: 0; to: 1; duration: 5000 } NumberAnimation { from: 1; to: 0; duration: 5000 } } } Emitter { group: "star" anchors.fill: parent emitRate: parent.width / 50 lifeSpan: 5000 } } } // ...and the ground. Rectangle { anchors { left: parent.left; top: parent.verticalCenter; right: parent.right; bottom: parent.bottom } gradient: Gradient { GradientStop { position: 0.0 SequentialAnimation on color { loops: Animation.Infinite ColorAnimation { from: "ForestGreen"; to: "#001600"; duration: 5000 } ColorAnimation { from: "#001600"; to: "ForestGreen"; duration: 5000 } } } GradientStop { position: 1.0; color: "DarkGreen" } } } } PyQt5_gpl-5.10.1/examples/quick/animation/basics/images/0000755000076500000240000000000013245231431023121 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/animation/basics/images/face-smile.png0000644000076500000240000003606013245231431025641 0ustar philstaff00000000000000‰PNG  IHDR@@úù­ pHYs Ö Öoyœ vpAg@@êóø`bKGDÿÿÿÿÿÿ X÷Ü;IDATxÚì|wTU×¶þ>…sè;EAcÁŠ0ö cW4»€šØ4šh,5ÆÆ ¦¨‰ 5KT41vÀ†‘"NÛåÍ9÷Zã7rÿùåæÝûÞïÞdp¿¬]V™ßlk®}®VøÏ?ÿÖÿüŸSEÉVbe[6à.E¹–X©(_%šeŠr¡àSEÉW`ùZŽü:Ž¿ÇûáýþGþ× VˆE9DiåøEXÆlE¹tUô›Aê%Æa‚Ð$Aœû BM– ¸Ï¿õ‚à ïØ& ‚÷-Ax’ øG~?Çßãýð~ù8|\>>¯ÿ(À?ŒèT„ E9[ ðœ¢\M†é~'g¦ ‚a(µC\àÏñAðë–÷¡þIAÐiÁÐÖ´„ð'¯^€daµ ´Ÿ$œÔÜ„ŽVa¯b„Î6Žü:Ž¿Çûáýòqø¸||^|ž|Þ|ÿQ€?Mø÷§Aè^@J)XÚsX !ÕVö›p¯DÊÀ"w1õ…ºŠ¿×ÑúÚ§t´ã‘‘'Š_==/,PôàÑŽZþiE9oÖïŸ~¨8áÑ­ÀGû K²óN6’¾¾_2-/?äü¡°’5yž„>yñÁáp½Aî’ Öû ‹Ï=J¯ÿÞ+ÉÝRkGZFɳ'û½ÞX<àõ°ÒLÇ_GžàãòyðyñyòyóuðuñuþÛ+€¢xBì­¼)>+Û$®‹ÁéŠ 8 ‚o< â+4…7Þjo(o\ïlyÇ»pÞ#¿¢ G 3® ª³o¨èl¹²øÃ—¹Þ³›}:bªç̆ֈmû{Ÿ {§CŸà!Þ®m¢—{yyÍŠŒèqÅi¡÷¡Ni½ëêtÞk;­ïÝ pL¤K÷Ïœz%´ ÏYÃÚuÐñݹ¿Ë,ǦËGL•¦Ø^„Ôÿ°¦x_îÆ†íö -îœw¸Ö± GÊí%%.CÞñæóäóæëàëâëäëærø·QHª¶Ä ÂaøÖ‚`ît J–Ӟ؂"}m_£¹ÙùDIì“r ï› ¾{ðÈ?k÷-ù²=ªÑÞ <êêÜa«wëi]¾w^ãžÕaß;ØÜ‰¶+G‚-Ž· ˜à½:469£vÈŠ)8ʆš)u ½)0yÊ=˜)@߆ßL¸"øÙÔûð\õw¦ô†¨ß$lñÄF@­ÍÓ‘ýÝFîPf:²uMçÏ`ܵþãB?ï°U"_i4rÁ‚¢^ wßz™ÿ´­gèû&¾¾.¾N¾n..—ÿ³  (§<„Æàu{@¤SÁ*[ „¥Â8ÁEˆl½ì¥æim÷øD©(ûQ»¹é; †6’FçúHoLo%ù´ñÛîhŸK ºZ-ÙÄy´q­qA@Üõ[Œú£¯ßĸr@­—g÷ß ÷Ynr‡}€—«i•¦5¿ øãª7æ2œD×§6»JÏŒw+‹Ä÷^{ Ý« ¿å¾Ïã}n:]¹È˜8`1—— ——Û?;Dhÿ)Û4šðé>(&øÛôõ‚; ß=ÂQe¡ 4ïôò—ç_¹ý0ùçÊÓ%óêÆ®ªã1¡ö®Æs‚÷¸ k•"ø¹Å×ñŸ€`»×ß›mä>¶ÃVL£Œ÷ŽÇ¹n³g6uÞ0Œ†^¦ý†Í!Ž Cv'<+Ÿ¦«r:aŠ4–0\>CèH× oJëé½Çò Â#r[\ ýo²æ©:®q.ÎC¿Çó,ÎËñrÐ,˜§·{TGX©®ªîüØ¥‚¶ÆÇÃ>aq˜[ׂ౪N¿Sðžê½¥Cê_XUçÕì‚"÷9“ærárârãrärý—U€ÿ§©_y¨ÄËàŸÁC¬ók¬ SëÖõÅÑÜ—Þ‘‹\äKV]¯Iw½£‚޵fìí4%Ôµ§ óå Š`qº7=nv°ÀÛo#ý_ΌŒ$Áï2UbÅu*ö„ŠíªJ¬ía„½¹zßFï áö„v•XÖ¾i/!Œf×ñ?êw;ë¯3a­žú¾Í™ÝHxD‚•¢oÐTà<µ_8ï@Û56õ@Åõ¸Ñq†Ž;ŒÆÜ¤Åöž+@Ú7:×쪱·2ÚÞ¨^‡Iw‹ôù>‰‹\¸œ¸Ü¸¹\¹œÿ=À©½0Á†‚P«,ÓK®DM–®I»4Bx~÷ù¾ –·rh¥_]gs¯IcƒD ‚ 5M{÷ôƒ§uµÍÑ©0¡ñNÓ‚?À˜¬oãúˆ–ÚMÎP ¶LE”ÍQ{lÍ—„‰5„5û³,ó[ö«Z›޳ž Ì´u" ´ÿ¢É0Õ>pƒ)޵áëeÂæ¯hü ³™ÚI5sÙø‘„KÍ÷€[ë~šw„rs ]°ËAXW¼S³Û°Î¾+£À3TÇ7­@”òª‚þ¦Î¯ª-ú9Çl$ÿÿî2\¬õ3¬ûµçã6@b¦† c’Az'íF»w¼ä¨«=2ÒR2/…oâ’ƒ\Ž\®\Î\îÿK @Û¹/ÕmK`L¶5è0=„vŠd´_lÊ ÷Z=GgX ëÛ/òž[—€%-ñ›ƒÆw¶ÃÀçÜË›OEâõ¾n;A§=•8Ût5r¿&ÁÍ,§’‰<³¢ 4½ò¦ß&Ö¬T‰µL&ÌK%´u$,c¡ û%Ë> ®Ÿb½ÍFxÖJm!Õ¶ƒ0É~€½·ˆ…g/Û:‚³0߼Юªù”Ú&_UA_F„y§¦WŒÃQa]­a1Jªm*„n…ëLÃ7nRómHi`bç‡@ïý€„æ?‚­o7<÷ ¼Wì’ê½qŽŽË•Ë™Ëóð—à¯Çzÿ0xý)LÄà\OøT†Ü9 eÉ´g­ÝêŒrÑl”7{OìõÂu]}çÆpG¿7 ­Ýï €åîî!+Ðt³0ËÄMSNô¨t1@²4¨<–Ú‡_ÏF”ê²ç/fX:2B¦1¢®ª«Ä l£Tâí3‹_¨†[=–”*LQbÙõ"H¢ú© DØ_õ6+á k_Ât ­CÎ2o!t7½G¨z„©kE`ŒôêÕ+T7¹+*…ªa(í&ÇÕÝ]ÄÆÊt+ü¥v€.#ëOÙ ¦ùŒéõ¢´qÁi·W£\¸œ¹Ü9œ—ÿðûd´[°åPÐÓZ°P°›Z/^?, 4[†®e@|2$Í,;D×¥ÊVTN°:Áõý[NN('÷²nwwsÃB–ç®ÆZô=êNmÏå¦û߯È×%/=ßœ¾†ËóÀyá<ý<ÀÓ›X$Ó*a.R@üuV•Ì|ö‹›ÇÛíô›õ3ÜLÁ>ŽS}Ÿ\‡©üæ7$Xol0Ööz ¸K»[BÉP¥n6NQS©EŒÓ$ T'®<‹Î\ìTÂX$„ˆžNΈñ`í@žÕs ·ª„z!D”UU”|ëjv_}^±:3ìÈ®×eIàBÖßT¦ÛY›õÇCˆ}»ßÍK'ŽÍ'‹r‡æDt9Zº¥„‹£‰¢e=ÉÁKû-à8F÷Èéœö–†ÊLà ¯ñ@оo…lŠ£ß ì}”¾™ûgÁºÒöÜóßnÇyà¼pžþa  ()L£ú­@©hr»a±}«ù¦ÉPË{Uv×[CBœmî>pWÿ›ïž€AXRu>à ®hnD…šqÚ]†•4ä`Çýèò´ÞN?zjZécJ*4 ±d±ÑJ ÅèLÁƒY˜'¼bkÎЙeùÜ‚G0û–©„Ê9V+µó¬W˜"ü@×Ó,€äa¶2γýXû>Sf„Ù¬ÿrÖ uÛçAHmRduÞ àéšãÓ  ý™„’ Ê'Nó­±7ÉåÇ"€(0ý ×AŽôÊÑi¤ï{XùôégNÍ<2¼7 ‚-Ö”êºHçóÂyâ¼ý<@·™áÑy0H{¡»tbÏÞW–‚·\ƒâcŒãŒ³œgº5<’jm Ïv[ç‡üDo"â—iÇëõ4T#ÇŽ„ÁÎHä,Írc!}BÑM¯ÖÙÐ2xŒV΂ ¿L`.ÒC)' ŽUÊÉ23™å>–ó­<;ïË,V #¤Ý#r¾zݲšÝÿ‘µ÷3\¥¾¯Þ—ó-êýÃÖ{ìýbfÑ8nS„#0^'ÊòËm‚=ˆaûW2qÞ,””&ˆkÑð=¢¶•a(ÉåWg’n°“y„ås©P­C»Ö~âææ÷6x€žµjÀ#d»lq[.ººÕŠá¼pž8oÿpø#Öä ´¿w o”Ùrª8¯í3Åñ¸s'·k0íoÝúlB5Þ5NFׯIVÊ‘ ÍíkÒøn~„‚~m\rä–ŒˆmªEš/fY ÿeç£%*Ю‹¤äX¬¤ ^·Î·N©n rŒßrì¤@7O›¶ào›~»ýàk$ìЂ3åh‹…ê ‰–:ˆÊ‹#C ázkÊI¢ ï%Yšb?·oßßýî™Ö?-Æ¿eKV Œ;ŲÀÔ½ ƒˆÎGQ+9,”0Ï#ç³pØRD˜Aux΂Ï)©Ò5TðÝI>^MHnum0h6xÕpÔØð[·D¬ßpé Ûg{íšgï>S8/œ'ÎÛ_TÚç'šÛpìß #”/Á ÓÊnkœ:u½®ÿD»ÏxÎ{ŽÃ$çzî7pX§ºN«qÂÚ]â té°pÔü|%B,eÉÙ"Ì‚åpª UHë+¢¥KRY: êðk-«¨u`ŠÁ-îß3W>[ò¬nzokߣ°;¸xñJ_Ü6FåÅÃWaú©%›  Sðþ‹‹/æ’”›ï¡e‚àW!ÊY ³!PÛŒíXE6¾WP¶ôÎîÉ?n‘v ‹ÉóºÔûê¨òAØ\°µÃQ?šÇRË|¶­Î꫘_á¡„%µ[ ÏT=£mo×ò$RÈ1˜»Gȇª{²RdœŠ›Qð€Í)wzS„usœâ< “C—EîctÃ{{Ï©ð*¹éœÕõ:ç‰óÆyü àÙxr¶½\Ji¸ •w_“åök½ãè˜d‡;`éÃàîSÇùÎ%H¼þm%œ’¹Ú¶…Ë]_ ”Ü*ÉÅK3Ê–xŠkŠÐ%ÇŠ-žShšé~ƒŠdD9Á\›¹dG†#˜g¨C˜–Yy¤b>ÿÕå¯F\€³š­Lóë‰_íÙ§—•N‘>ÇJß±vÇç_íG–-[ŒjéÖ<™eçoF±ÒîRËdz® Ç?úÞqÇ+uñpÇvÅŽÕøö¶«Øohhâ–pô?µ¡yŒ+OPKÆ0?²p+!(V¦M™b¿@”VvCÅâbÚC¬-p@ƒ°¯-¤ùˆ¡¥ ²%·ò À©åë§€)  H¥ÃJ%mÛq¾S_`f¥áC ¥Ö^¦Nub’9Oœ7Îã_Ps¥ÂB¾Å3kkC{©0¸îÙEŒ2 [ëà`¨1Þ…'Þ1ÜÑODW¦.[‰וAWhŸñò$`²ýÄ \xŠuäcª¿YûåŽ&\»DZ/*T]úëF꩜9’ Бm§,l}öjÝ«Wåp:WâRxìdÇç—ßz8øóúòçÏý¡<½¨è),ûwÃíyë‘y]ͼ?†óquVÚM©¹„£H3k@l¿=ÿuv~ô³¡xös$þË;Øï¹[?ôÁqJ®z• ó8ôÊUü’`^ˆëÍ—™B±y×aIç|Âtµ¤m?UT=­8?C›muîi4ëÈüh:™h^ð6zHû¨’$×%X(Ó,ÓÜ´ÖU<¨ #ÜnsVkÿ²»ù#Â(D²üB†wÿp½%^·-´•`2g_(žÆ~îì»Wû-ìS2DZ ·Õ…q1ϨŠÊ‰Ì*á±hù´žÞÜóP;QuõÒõWƒHNŸt#¹Ü°=uëýÕèI-ûsÝ7Ø;lL»”µ¤\(Ç´™JÉUÊX°óå+õ&À«Új½ät¢:²ükã¡PÎçñÏ*/øÄ€æTãvB‡¤¢¿å{“Ñ  K×ùèÚh'`ÅJ÷“ö<ŦV”¥gËiTÀ‰T¡lhñÇ€ ÖŸþJØ17=ƒÍùI<ÅþÐ’æ$uUU„±d‘$HFø †f&ÀKì¶I>½4ºgX2uËu]SK$52}`§^ÍóÄ%ˆî~s1GQ’™ËOªªŽWc Œ®©Q=O >÷Ž’Š ˜Uë(Ò}ÉŸú½­VjzÚg :öu)Åq}zxÞÒ}Çæ‰p¬ùgÕSÕ¼`×L‘ïªógžg§é-:Ô_Ö'¹ôê ˜fmžWFU…O°R˜ew)ÞŠr]Ëc(gˆ5=§íc¥õ*àr]°v0 8滿ÚnÜ–Îyãå,(ÄJ”§¼„ä- ¬þäêЉr^Ró•“È£D7ÅSxª¨iˆ¼(ïJku™µœ7Î#çõO(À]}u#`®©k#F‹ ð[[åì¯)ðŠ×6„cœõÇWöú¨¡òu³™Ð&ôX^bq¤m`y†›°@3]—h»õXnII]»Ÿ-»3—_Ä15[AsY[ÅÖvgž@6A=Áó¬>伟á±sjôÅ•EðÜàø>Ž.-h×qê…AµH(y€£ o3tàבÕì=o=í3Åuô{íâÞ"8ÿO›‘·åg¸¡o{i2›Ç{l^ï3|›ÍŸ{˜žL!¾dã|H®\fß/(fUN--E$'w ÷?d‚üêàu)‘îW¨ï)ˆFœ'ì#ZPñ7†œü9X«óŠç¼q9¯BZ¿Ç4å0VïìÝEÐãG‚’¨)4…OÀIzÀÝVJ†ôˆ\y¹ý€º§‚¬–N÷Ó~¿ÌºZuõ–+ª,SHyd™G@öÑ¢«UÁåq¬éÉæÇ,¿1l;&è&(ѵh`øËíKÓ•MÞÙ˜Yýûéªb™Ôþr!eH0õËñw~=÷=kaý¼¢~{Mh‹ã”H §qÅ¢¦Ì²'¶„÷‰pR$ÃÖsƒÍ;€%C0ҺݬÈ`òè‹§%€ÆÜ­?ÑxäZ¬ög³©ò¶÷#Lgb.&Da޶kîœ7Î#òúç<i&n)€¤O/¨*µÓÌVi2z P‡¸AI!Í=#íͲ^ZG•0E\¬îß雽l%Ã>ƒÎÁ`âdù¤ Y éÃq°p'È+æØnÀ“Ç,3Ý´‚Y\†ÙýÍ„9U!ˆPwRnò¥ö™jv>o á«"CÈû[É&D}Ç¡~ÚºUtSÛU>l\z^*ÃyÐûïRû0"ÝçŠt‘0œÖuÖÕ˜äq,œê`:¬l> ÊäX{©J´4€BF>+•’­—€x*qÅûà+¢)4ÏÒzqÞ8œ×¿»,yHè#Ï øN¾ð˜ˆÏ‘Ýä|"p©’O¥Ö tA˜ÿ+q¤±ÊRÂ|öUnºìOµó¥â@*?'…ˆ¢+SeÒð ǘ8ü™ Ï09 “Å2¢®W·ýѯLÕvÕB™=Út[í‰%Âð9S=뇷MˆRëÿºÉÝçï…¨ÄWïùƒâ–±y°ùKäú“dY­Àº¿¦Ü(ÁNË bòIÒ5’o9E{$ø¦¦(ä!ò•@4,{Ž:yä,ø7–~QP)(‚'çí/”‚kz¡CÇÀ•%-%ÂÓ$7•h |-(•PPÆi>¡4ßÐaNœ @?M¸ºH—¶ÊòÙdLŸ.{ÞVnIþÃC9L.0Èngt,"\Ï>ýJd‡,‰Ö„Q¬ëΦÌ\‹RÈè †F–lcí kTW^ÉÛ ›°íÜ%Öï]µ_fÁ–¦l>}T´ÐNž0Ç>’߃> I€<¾è«âíøÀ›7X ß3Q?ßC±àƒò!Âc„]è ÀÏn ËNÑ  ©(9]‡r”—’Bl%4<%K¹!$¾n(¬'8oœGÎëŸP€f6Œ+ê§ÇÒuøÈR³Q¾-¼-·¬¬”S”,(M*S¾ä¦i…šGçÔ¯y5™dùI€(€$–>ê„ëðÜ›Ë:ZªñÇQõ¶££ZŸ”™l)Bšå<Í›èø@’(„„ƒ€è0Ij@(öW‘)ˆ‡}šŠ6v˜òP-ñÚN°sü+ d8‚2õeØ‘]ïû7Ïï'<þô)G¤q8vV‘Í#B¬O¨V+Ѳ£Á²13‘>G‰®Z°ÝއBõ>®Ý×9pñ›ï>¤Ü)ŽÉ)I£ÒK ‘ ´‹úKSà¨í Üu-Ê=O:,ÄàfBp4`+5¨¬ä¼q9¯B®Kª¦ˆ üít˜«‡\Ö¤—ý4¿JýJȲ¥„£À„˜ìsM0CŽF(Áò»‘+# WÀЂ7(šJºˆ#öÙ×e $Oó;Lï×<È­ñw÷ÙàÔ«»ï©bà§Çöè‘ ›3|´¯†y cE‘¹˜µ†át†ýÿH(³ôrñ$ÃSüù¿U†¸Bñþ™HU<¥SmmW˜çÖ©û†¡‚ô¸0ffå-XÇ7wãL‹:ÍÐÚ=zt´ê«0D‚4ªâR…p@´üp4%SˆÖÆ«»)’c´ø‹æ[Âú:”sx‚FÀ¿|FÉ&ƒ$´OÐ9Ù>º3óÆyä¼þÛÀoÌx ɸ—¬.мtt´¼ý…xL~ g-OKƒä4L/ä1Dl¦8SwA=ßÖ*1âZ­NM^´OQƒÁx!alá)(-P!@A]ü´Ž#Šô°”;ý@X¨å¸õ>ƶ‡~6Ì !¡“}h{Üw~j¿Í6 ª dúIF"H€*¡‚#+'–˜ooÀ’5—¿ynWæQÖ0EÃû¡ŸêÍ5w¤t¬@l€¿CˆNqßô„´6_À$²f®å²Û²yŸÍÓ}&ï6 S’`¤¸¸nJƒ)w`íhmC5„’ÜRäÃÚÖxäúŽ/ŽÑëqo!=ÒvCÛ–º"ö‰ògÒÇÖb‡q‰5èöœ7Îã_8v©žî®䨿HÙ±‡pðiwë"¥¿}eî)é´”+CjŠà&§ …K‡ô›Ð¢¥04Nø¡~-`)- B Ôî&ED ,9ˆ)†"|Cçà§*ÀoŒ: Á´7z¯š ý;÷sÚf,‚,ºCñ×HøòMâ°€ÒFß·þtlÂ[³6¢à¿ª“•‚ÉÝ“˜'çÑB¥Ñ¢«Ô…'ûK1ù|öæ³="xŒ¬ò£{±¢™”½h-nïÚEö…®=5y]®vÕ/æÉ‡ažÍ:á asÛ§Å‚G˜:Â"6 Ë}TùDU(rí €^ã58?æ ΂|v“­¦hß!õë¬ß£ž‚\ñTp€M#’30ºK§å\0”<ù²-,÷ç‰óÆyü p6+¨ÃÒ p¼ÜœáÙÂH³»Æf™sÙ"ŽàϬEQì*uÅ$]#‚ˆ3 ÒÔGÇ(b^Ó?W+UÚÙäÚ<è41“\?U1v–V(BŽlí‹’ÄE~ þ±èPîtLZÇ>ç@Ð_KKˆ™º‰–y $£W^¸ÙøG“?¼ƒ§ˆqšÁ?á§WÖvþ¼DðöïCöT Ml9ãVþfy%ºcahö·IYXØI*ŸÑëo·ò}ÕnxoMç.øÃA)qG°ŸÔŠ”T3¬ëLÚ‰möNøTu5º\§0H­¢¢"{…AnrÒåðáIA¯Ë»,~ê¥þš¡¾cººñù´î#lÝ7QdžšjE‡@’^!žrxŸÎÆzc¶/…jƒQîÒüDLê < ;ï¯él©wÙÂyâ¼qÿnÐh&÷U³FÃ:n «3$erÇrËóó­/¤dñ¶é{ñšx -Í^*Δ£0¢J¯ X±ËG; §ZBDKcô=aIºïÔ:5³Y@A’ëãŠðÄŽÉ¥µîs~wážwÿůÛODA!e[Ç ÷¥0³vß·žDô•— Î6iŒ’ x@ ÃM¡–µæ*%£­ÃÊÚoÝ/øbåñfåùøËŸœ¸sOð'c¿ž¿°`ò²ß£1XÒ6ÜžƒŸWJþJ,`gy Æxç©R"ŽÓîh«Yá ÚÏî|^ÁeAØã»ããNà)Ü\Å;‘P?õ‚ÊIOëR2q½,àzcg‘GLÒ}KÉ_޾`²½>Éí¦8Àr @†ßñÝ~ ·•öS w˜¯e¾è#®7}/O1¾iYr~#ç‰óÆyüo|lƒ› Ã@=F¾=>÷Ý¿öß½÷º¥ô¾Ùvù²8ÊnØ+´°Ù°@+Îø¯ö®4,Ê#ùϣ܇ … ‚›¨Q¢F£‰xǨY£IÔ(¨\õJ4^ 90*ë"âñ÷@@ñDˆ€È=Ã1ÌÍ 3ÃlU ýa¿íóü“'»çË÷í·úWÕÕÝÕÕï𶢚;Žv ¢ÓóÑv@hðYú%ÁöNC(&…[(`YH„X {J(fÍÖåÔPÊÔ!y&`vkB4oäÈ}yÐcOOiŸžâŒmæÞ¤Ÿa(P¯¾²¤öí£Êš!S~ׄÚï2´$®7 B‚MÉ–Qø»)Ñá”Ú=ÃÙŒŠïH@WT´.âŸ\æý´ëdnÆíŸ¯ƒ M‘ÌÈñ}Ã6?ˆÇ0âø5Í…†·R64¸]j_5¶‹Ù©ø0k»y (6·’ÿ+©è²Í·tàl™° u ´—eh÷)n’›d84~d|‚I£¦eí\(W˜3ÚN<|ÈôÂôÄôö¤…g— ýrã,à¸Ûo{lvƒE•èK]/Á^Ý+[õ~F¡Q£o”Ê1 Ö¸Û˜ùñä (Nå0‚Ñöéd݆.)Ôes,>p§!\±ŽÁ@¥Žê¨&âæƒGH§9†£Á€å:]IÆç$^‡ '÷Ṇà\`I›àÌÆoD, .?¯-Lï «ˆkycÎz‚+/<ÿËOCar6óèò}0‡Y»öpÊë7™Ïîø<ÓÑÙ!§`HÝXc¹ 9<)3xlV-Ù¹* O1÷ýÉãú¹s8­’Ì9bF¯‹(¥íYó ÊæÝ 0.p È I–ˆ{"èáHñé´¾ŸÏ÷§ò›ûtH}D—2âé#{/ê@{¢in•ŒçLŽÆõ˜ÚfÐþÏ1è+¹Æ ýxm~Žvè•­L/LOLoÿoàr·C†£É2\N8œ|vWÔm¹K’åÊc‰ô^{¼vtn¸ñU{ N¾Œ»ô³1&n 6Î5L±êûõÖM—Þ”ù²Á¡€Žp>íú!B¢m)p¥>°²{JKHÚhôDßì‚@‹`ˆ¬`SÜv×­ø8ôìÁWfA¿n|/ä™<ÉÓÈÅà‰†Âûä@ý}~èxR„/¡RºnÆËÞ†—ÛO†È÷]<‚CWÛËWvØs&eü‡\Mr=§Íß©ÇSîÊO=Õê xn¤øDÁZÚ+qµ¥Í!³¼ë:ЍF;dÒ¦ÚJçÑÔq.áë'ÍwŒ1k<¤Ÿ ýðvûcŒdJÒÚiÒsÃAñ¨¦¦'¦·ßðl Ï ‰xwãÈãï®ú uñ‚d]ÂùCªPƒ»~’̾Ý[ÿP;”>§ÙމL°õq—,½Õ±ŠÐ×½Ű:ûRàÈÛ~8*”3_HRÆ‘r¡@ì~À»€ :=Ã4úý9kñE¤=³N Xe–áarÐÐp ç<CuÊ¿ Mã«ùŸf+k³|)cîô¤òm÷ÏàuÚ€âmtY_ëGY¹Ñª©´™“L!Þù°æ‰±")|~G6h (~uîr¢<Õ(·% ÛrC»f«WIñÁöËHñrgg«‡pëCõ pJgÆÉ)Þ¿Ù©èã¨`2Ä,êá5(Å!²èg(ÊI{!›¢îs[[ZÖ)ìnÓæÙH§Ú=}æ¶~OôFy5®.Xƒe¾"£­Tµ ¹îŒTªOÓOÓ«Ì{ê•úÕÝ)ãéé…ééw|?ÀÌ`¤‡›ÍñÛ%>×{@¿õ³OwÌ2¶¥&×NÕĪ–ç,4,Õ/Ñzr†w4?J7`zµn–’‹™f'[ÜÆuá*ݧÓéØioÅ“aŒòÜAù¸…“‡prÜDÄM¡¡Vv¶BZFÌ ƒðåûáÙ|$2•K I#ᬊZHc5@ô Ùè9#±ÞÎrv] Üà @õÒòžS Á›††rŒL°$ †àó@NO:Úu™ä†È§ã>Û?s›FÏqöü„º”Û[ߺváÏb.°Eï óÄ÷%&ª­†¿n[ $Šš1šïTÕ9 í>uœm¬HMe¼3=0½üÎ/ˆ`ž€úŠ g™]oCáhûÎñ…EÝ‹<ÝüýmCÜ»ª£4»Ëººjc•…`Á·”SÏ‚¨‡µ-UÉê%èK"ìïÖ sUx'{Çš¹‘Þ4i´Xz A@žû=@ØqÞD¿ßµß HÏÉCplbWZæ 4¤QüµÖÌWS~ŠBÏ’Åæ¼bÂl~x'¾OXÍ«#|F×EÁ÷éVOž ”¿–¯+é9àÊmcIŽU ¢ÒÎ*×ç¿“ÜÇÜùÔŽÖIV漃ñWþžËè{$¶Û’fŠ|E¼”`Þ¿¡Yµy2<Ô-ÂÀ‘è{u²z`Y­”×®«>r'p¢ïàùãééåw5€5„HOkluæL|<“ôÊvåó†Šò ªî?ÎhŠVßTÿµ~«!^ó¥¨×·:ש Á·4îÍï€èaëæ8,Šq[ ¸@pª×Gô ß)V¢|ŽÒdŠóÖ!"6Áã+rr ·\krj!œê°›0½ëAìÁÜÏ…ãɳ¸¿£ž^h{‘“mÓÏŠ‚û Y9]WC×]¶(„qh` àY¬^<ÎÎ[à°Œpµ“QžCrZFyþDrZÞºmõp$÷þ=ßÑ€1‚m½æQy¶Óâ[P.Àûj¾äSàåmà¥0^ý…>äVyÛÓ÷ã=’Dµ6èQ¸ÿp_MMÌuú¹£ynÎÎÖrƒémE- ©ü ”ãu|~˜_þÎ+öÿ ¿¶¯ˆ¬ ø^Q˜Ô)—0ÇfÞÏqáíÇcÜùxçÆ'ê“ÍåÔÎèr<±×$Ý]qðœzŒ ¸ZÚâ¤(¯L-óW(Z÷¤2ÞŒWÆóÜ‹"i¢1h¶OÈ g ÷á&éÀØÞ°# Ò„Ló æˆ.ûV·i=Ô;oßh¶o¹ó¸]³DuK~¦#Y7^ýzò]S|‘8ÉŽ”¶¾^3D怫“%˜Xxu®JÀ6Þ€9ÂþW‹„KQáì _PÂÒþï’á ë?€t½¿¢Í¸ ó€[lföÿ”p!•Óõ/á:D[@|aÕÃí²8'mµÂˆ·#°\ø ÌõóHï(—e…É„r_kfÊ =†GÒee2¦+mºYT¸C¶¡ ^óµê°ü\Gr‘cÓgò¯·Wk>V•ï¼Éxb¼1¯Œç?ÌþýI☛de6Ýñ¨eÈ Húncص±êÛܰ¶ßÎ|ð¥x‚Œ{ñãfUËy¦:\÷MKU-,£´± q…‰@X’ØæÉ  ¾ùö [¡Ši˜…oá34ëq¬·t¬.¢ž:Íu5y„û^s‹lgùú*»,ö/¬íRGøv`)Ê ˜ÄË»B9ý~®Ãûvú×ãw¡µžý‚o½–âÃïÏ¡e¥ðg\# ˜ôilW.h€ûô¿Hv½€!Ϲ+ ù7Šràû–ª:0Ôæä–Ø–êðüÍ¢¥I?Vá´Múv&ã…ñÄxc<2^ÿkÞÎ,•Ë ê€ UéchГ ¾àèeóFæ†BãrsÝ'›>Û‘¿¦)©åÓ]ÞÏëîɆÖ(ÃZ'JL¦¹ºŸ¥»_]"mÄ3žØÆÕªòN¡Äy fƒA²´D *cp×дQw½sã2ÛÖQ}&oªõEyËæ\¶óBä¦;ÈZŽC9®÷áupÚaÞ×Q`xŒ¹æ#ºÓx¦Ñ4WSû¤ôo%:C'¾ÿ C—_ç~ÿ>ȧz ߤÐÅ+ºµ7ËMsŸ}(+k+,Ì?ÕX.ì²w9ûšÆíÎ`<0^OŒ7Æãýÿp¹+øòó*cÆ|`   =,TËš~C¦ð8âã½[z›=Ûºo¾u²:K²(içs£ø„T^&”Ï•wošh\ª‹•_?z_|º ß^“{phõ¨ìç@¼m-/G Šy[´ýAwœ]7<¹ˆË«fCñ4À¿I3JÄ@q»tniá²R!+,oîŠ×éÿÒñTõÌ]ËoÃÓǵn9®ôœ•Ùxþ·5'r…ï×Å%fÀ3Rû 0¤–ò®MÞÆ¥Ïvм$Ê„·ª«¼%‚¤-çÌ×tF þ @ íÄÚÍx`¼0žþGÿ1„¶™[·''ôÆ-çŸÜ…@·pèY ¢qö¸9C"a`ì¯÷säðW5®×龈»ñk^ß“nH Ë9[}A²9ÿeehãf[ùÅjÙÑËŽ½Z‰Ý«vPÄWbÁójP¦6=?0¯úóœ"ÀúªªLG@Qåò;w»UõÊðìh(€rbUGf/@qõÊ»'ðúºôü$À¯ÄÏ[¡~O©×+ ÄÞÈ÷âs_6.i.“È\õ‰dHþËëÙ¯IßM k Ñ'é‚ân°v°v±v²v3/Šÿ ú×!b„-–-Ãü^|»Ïæû£r@¿®x‚9Ô‘U.Hçp3×Ù1¨cKž*›ú+§¯KI;Zv¦ùlÒŽ Û sÓȬK¾µ{š=*ƒËƒº4ž“gŠDMï‹·-’­“Õ9›ç)J jª-“Õ³¥Çªë8ÇÔã¥iˆÊéÒÌš4Ëdy¼Ä«Î×0öí÷áähò“wÀ!,×a›”]aùý¢9…ßÿM¸Í~™ñÌZQÝMm¸öÖŠ¨§ª¦¯•5qž‘ÕcåÆmWÓž•“ìKH‘”|ßô(i™ÜâˆÆ±ÉË»#ž/·–_:Zê!IÝ—á\í/—n»úôRÓ0eVœgÝ­ë.‡ç$®±ç29˜\LN&7kkkçŸþ_Ãþ}ƒ-ÅåKĽE÷è)0ÒÞ ±q€±óÀ„«!7`,ŽÚ9æÈ÷™1mÖð¯ çùLŠŠ€©Ø…¹ïÏ|ò‡–¾#;û|ÂOöí)¦‹Cû†Af¡?CVήc÷±zX½ì9ì¹L&““ÉÍÚñæÛef!—;Hżº‡ã{x\ãÖ@Oóî¹¹Ç[Ï 3BÀD½ö/‡ÁÔlåØñ>3a¶nRü{ è¡ QŽs´°Î~Á•³ëØ}¬V/{{.“ƒÉõæŸCÿp‰¤üw˜TQ—;$ 2ogÍÆ@3Œ½ù€>\®7Q²rv»ÕÃê}óßÁo>o àÍççóOÚÙGᮑ"zTXtSoftwarexÚ+//×ËÌË.NN,HÕË/J6ØXSÊ\IEND®B`‚PyQt5_gpl-5.10.1/examples/quick/animation/basics/images/moon.png0000644000076500000240000000460113245231431024600 0ustar philstaff00000000000000‰PNG  IHDR@@`¹UsRGB®Îé pHYs¯¯^‘tIMEØ ÷|ÙbbKGDÿ‡Ì¿ IDAThÞíØiÈ¥çYðßýlg}Ï»Îd™LÈXë’Š&¡b µ5Ô˜‚´­RB,ÑJp "cÄ/m-‚„жJÕb©!iI-ÕBHq¥ fq23ÉÌdÞý¼gyv?Ì1RIÞ‰)~™ëá|y÷}ýŸëúßËÿÏÕ¸Wãjü?Gx=ƒÚ‹ãÂ×¼j_ßdá Õñ¹ä{ÿ²tzé°ˆ×ò·î¾oP¤eT©´ÚðõÐÄÏw>yí‹ïzë;·®ž¸±wÔHaâåIýÌΓO<¶ò¥;åjMxc´„*~bð‰ÛŽßwâ®F±T"/~µ\®qn>yô©ß{àñ0UD8TúèL÷W¿ãè/¿ù®aÔY +µA*– h5RqûôãÏøW¾b¦í %ùÜêC?û–û—}X+ÒÕjÑ‚9¤–¬Ùo¾üû7|øÏ&Åk3â5þoC“þú'û›¿¯'ô Ä*A%·df /W U)%Ö­šùü3û÷ýÆWºùkµ"¼zú*ý¹oÛûÔÍoi E6DØÔˆU"C$FR…B¢B+Ó©ýÝîöÿÚç³ù«C¯þõ?ÿ­'?{ë‰ÂHª§/¶o†F,ÒI¤Vd A£•K¤‘±¿ŸLïýØÃÙ<4—ϽJïã{ên<‘K4*A¹F­T*´"¦"Ú\¡5q ”yÓ üÎ/Ý.}5"D—gþS£‡>:¸%S˜£¶cÏL­F­R©¨ä¦ZSjcµ©ZãˆcËáãqLÜ^qÂAçC÷ôÞ—+%Z•J®V)Õ S*µcÿá»"{fÆæj¬ºîMdwxùJG—+ÿ'û…ƒPhD™DµH[«•¯p¾#«“«\°k,ÓU Z‘žcï{à{¥íU ìuùÉεsS¥È"¥\¹€Q+1rTlf&¶¯Q)Íͽ$•isµåØ]®—~ýÉõÙÝ[2±3Ô¶5j=AÐÈ”NÛVˆµ R¨4J•b­—uUb7Ýúà».WƒèR (³‡~¨³š+Å*Ï8k*Rk•AªKDžµkÉÈL¡R‰MT*s»¶Ìl«”"áÞiÿÒK>¹Tvúõ{'"‘XP9'²d®¯/QËuŘX64“Û•æ öOµ&æÖ% ge†ßýGÇ?8V®ñŸëÞ–‹OXl¼Û&¨õ¬èŠ$:*[ÎÈÕ‚LႳví;0›:cÐyüÝMÒ¦-ñco_ŽWˆ´"}±jÁíØÄc_õ¯^ð’ӥƆu=ìxÙ9[JÇJ{¢w^è\ª —¨À<ÞÖÓëJ%‚¡#ú*ûjC‚ÈX×ÐCKöåV¼lº˜²™8/£Ò½ùÅÁ¥üo„³Y~sc;zqÒÏìb]g•*±FkÅQ®±ÖHÐш Õ*ÁSnò„æØÉÑmçǤ^IÄjA‰¤ÆN‹œWj$2¹J#Yà_s­ã6ôtŒí#R#2tÁ²[õõÓ'޲ó$2_ðâdÛ¥u‰Z&Ôè+ì¨õ­kÍ $Z¥VûÊÙxÞº=œ]=ã¸ê·r«ö%‚X­§ÑQhìÊ­ÙPJ pVlY_ÐXSX±©ÖX1ÑHm™‰D†6³CîI“Í*­¾‰F¶8û#Ì\£#IÝ`*“jµR¹ ãZ«NyAåfs»Î¨4žuÔ²a~HוÍ~j¤5Qª$ AbÉu6%"ì*eú¶eZ©F°¦ÕKT"¥€ÌPíĶö0$l;¥RjÉÐšŽŽÑb²±Fdj¢U9«•Û“Im‰ÅV6 D­®VБšßyáptÊø¹Ò\íz=×¹Ñ1­Ì\&“Ê õôЩLMÍ}»6ôdzV u´ú®‘‰N=8dåÊ?ŒhÕ:–$ºRË:#ëúØTöͤ:ú¶D‹ ‡ ë‚S¶õõ,Y¶&Ö>{ÍôPõMªŽX*µbÍ–¹ ™©F*HÕ†– ô«Ì5ú6DÆrS±\‹}S_ÊÙÍ]/f_Íõ %¼`W°,53Ô‹¤†Ž[Fת]­ ÅXªQh hźjóê[¾ÊpÈ Isݤ÷ð¾\"Ñ×50רQª•A$¨•b™Æ¾!‹¥:ñ‚X•}AW-û›xNsèQ(îüóbó”-s‰ÌšÌH_*hĉHßÜ5úFA®ÕÓÓºÆ7H¥:Vô õ>±>94€@ý£§úŸÞ··`79êˆ AǪU™ÆßhÙšŽeC”º::&b‰ÊŠ‘#‘æÉ>ª¼´8H.- Òùí¿û…™™ªÔbC]/Z6övTF´j‘`¦’ &.(´‚ž¾ S[ʶóѵ]õ\JõO<ô#[ÆR3…ÆLå„uo6Õµ,Öš^´D4Z±x¡˜j­ è^\šŸýÀ_FE¸BaÒfùýŸ.>71SÈôÓͤ4j™ ]€(Ìäæ*Z%52µcvê–Gûš+TFúÛwï½òOçUvŒíitmè..à jÒ\!W*ÕZ­Vâ‚gmͺ?uçIU¸rq¨Þsúû?°srG¦–;ï‚ÒŽ™©ÜL¾Ð‡¥Bn¢T,®í0vÎ~žýÌ=.¹½&BwÿÛ?¼ýܦ™ÄÄܦ©=4¯¤Ÿ™˜š›«Äb#A)7ŸŒ~úžÏô¦¯Û¸è”ÙÓ_ýV¸ãF‰Ö’Ôšž®e Ä®b!ÙZ 5WŸ¹þþ»íÍþOÉE’^ÿÍõ³*1×—¢³ÐË×ÂEñ¾Ù¹ùÁ»þ=+^Û+;œKŸîê»ö~1½c-t±¾”^Ò"…Z‹Z+U>ÙÿØ»9¶¯:ŒiyhŸ°Nžýé;Ú÷§w ‡‰È52»"]Á®CuY9ûÃïùâõ»Iñú„ÿ홈7{_:~òŽämÉ-›Vûë!Tí~>>™?ÝùÛõ/¾óùáTù†;¥_c×Fu<Ï6»Ûƒá³½É¨ß¾ó¶IQÆyRDµúëæÿË:,žÿrÊÛ‹|½Wãj\+ÿxxs!&ÖIEND®B`‚PyQt5_gpl-5.10.1/examples/quick/animation/basics/images/shadow.png0000644000076500000240000000065113245231431025116 0ustar philstaff00000000000000‰PNG  IHDR,º´ÚsRGB®ÎébKGDÿ‡Ì¿ pHYs Ö ÖoyœtIMEÙ .(Å0X-IDAT(ÏU’ÍJB…¿síV"¥)E…DPí´ u¯Ñ ôж§iѶMËÊ]ôYa¥æMïiq¯Š3‹á sÎ0‡À³ÁM ÕEçÉ’Ñ’K,0GNYB‡ €˜?GtÕö7jÒ$v‡ïõÏ„_ Öâ3jv¸ªëx•-6U¦`Æ¡ÖD?ÁzãÑ÷º£áóús¢(€½ìà„#eœ (f`$'Š€Òj„SelÁ”5\§È§…ã‹~`­Oƒ'ÿލC,ã$m&3¶me“åèòÂSwâÄ ¨ìk׋*³áe­0=´#½b„&!áŠ1°æóøã³xÔb@ÂŒRæˆ¾ØØ6= 6m-.I¹Ã˜0"è´v^xeAÄ’Œ‚w>*­m ožèrÍ3¬­8zaekd8î1Vd¦À´j|š*Õ¸6Òý³Î5R¯AòêÊA^åM×Ìÿ¡Œ|H·FX$IEND®B`‚PyQt5_gpl-5.10.1/examples/quick/animation/basics/images/sun.png0000644000076500000240000001773113245231431024445 0ustar philstaff00000000000000‰PNG  IHDRDD8“²sRGB®ÎébKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEØ'&V˜ŽYIDATxÚì™Ù“%ÇuÞ¿“KUݺ{ß{»§»gEc ‚LR2‹¢°A+¨ÊŽðÃŽð›ìгé?Á?ùÉ/v„e‡EÓrP¤ÄEÖBû2 0 fÁLOïË]êÖ’Ëqõ]f† hR „§û‹“]5QYù›ÌsNfáÿÛ§Ä~ï÷&úˆñŸø9vñ"hw„¿MÆ :ÒG®ÿÕ?ˆ˜A¯¿þ³¼½ =Aâ¯ÁÄß<ˆ€… ¶\T6߇XjÝ@t:ªUðß 8ßÓ|ý²¿Ë~ñ÷:„™ñ^ ÚXZ^ø_—z£-˜g÷ÿô·Dáe@Ÿb ÌÌŸ´ÇN€tE­ü6à5 æVFÙjÅC#ðµ' ö´ÆkŸ¾çJ¡¥VudðDŸb X/Õ‡æ?~.˜± ±Ý ŒT¨æÖè*f„ ÑP•®iä!ø E–5REÀò{ÿC¾ñ)²  sð_žåÔÿˆñ¿)õ?ÏŽ™Æ5|ó)DÔ‹Ú› 9$„a3ÂgßñÉ[Oj_U-ÁÉ 3ãôwwE|*€0OE„#+Ðu<4ŒÀ ̌ӌ‚üŒÂR,D‘iÕF˜„4ŒBÏ5܄ó-b[ÇKðYdü¤£ªÐ TÛ¬hÍ ÕÁ˜Û5£q!ýtÁK+ÀOž˜Nÿ,¬w8±ßÀÚR•ÿìñ„·!ð&¦„…µªûä9o¹F½É‡aÃRÚÆ*ÍP¶Uº rÒ~¯A  Ÿ*Q-׌(B—ªŒÿ3ˆÿÀoý¶DŠ€Å}Œ_y×^]c@ès·€=aÝ_hçÿáYB#_;ÐPû]ˆ•ÆÆ:D±[ÕAN"@v7„³‹áªpÔVà®Ï› lôÃv MYÜ"j-±¥e4B#h»hÐCV#ù§ ð 72mdÎÒ¹ÿvÂ7fºô >Š–÷á¯s©Í&ôâ›Î ï‚Ç»]\8í fÈÝ[±×tjqûtS ÀWë%$ÁN¬±Ç"©q›Ezœ)_‚w«DtÒ‡Jz@Ú“¹8aËki”´Ø¨5ÃEµ¯37¶!”7ÏÖ¸ôGÿ'àw~—ðµ“_ÿa×· B„ÿ§~º´?ÙX~ë€hf"€/ ¢Ãøï2Äo½ÐÁÖQ¾?äÕª»'¨è5Áƒ+l£6©÷r¼@ÒKòiÙö@Ö²·="QL”Õ äŒ< ¦rh@ÅêÑ5r$asKT‰ Ÿ<Ø#µKøg <±J¼¢×ÍùV{‰„4hŠŒßÁCá¸_) €ý¶‡8Ô`VÌÈð½UêÉ ~G¥È÷v|Ñ:'O®»øj&ë;ýêC>¯ )LÌšœÐ‡U@ž»$Ðd˜컥ˆC/Ô*¼ße6%<î“wuhß#Ë@Þ’•,NÔœu=_»‰ÞXôŸª¢‘fþÚò¢Wˆ”v;ivQé•z¬Ä0¥3ð¿2 üÚÓ„~“Íùë”O£þÜå¨(’ =6Êê{F >]E|+Ĉ©ñ1XÙäÖÍ‚kÛm‘Ä_`í˘URaŸ-ò,4cq"Orï¼k‰?Ë^„R¬+2ÊEae,u,öU "W'_l1x•|hØFÉ`ë VƒÀç1ËüXa^`Ü¡'8¿€JëfÒ”íãÕg ¿›’4öô_ È<•ޱݮ·ëj÷Š…Øz\ü¬¤Õ+ ÑÚÎ’~fëh´‘¶Z¢²ÁtB¤ñß56¨Þ'.ä“ÄöºÉq¬¿géaú¤= ÄÝfØyˆd¼@•FB„ð\À»ùpmxã’…Ü-3¨õÜNT7‹* †¯·A©áðˆ¸-ø˜bÁD©Màé4j£—\vdwkZÉ-ñ_ŸIøtP^Wx)}ã=0ß3óï1ú@€ ‚»}í¥Ñ€¸¾¥°T=㗮׬?ÉÑ2dªº¬’*a¢gAnñÖŽóòsýuZ<¼œŸÐÁ¹…êñ_áêã•@€ˆïê|ëYÂg#äï Yÿ‘³þë gèíz£ˆpô ²ËdªŠvà9ì‹´wÌU·ÿDˆ•z×|gë¢üƒÕsjµ‰j µU{ôüÿr3jÖ“ûD@€ÛQ9B‹* "€ü•^œÙ]ÐÀóÑÊìì=[(ÍÖvH'šDÑö6|v°Ÿt÷®Ž ÄKs_#Õ^¨(e&"áfPøC p)òªôðlƒ‹è¿wsaÍ|§ÖÐëäš{½EESA^êú…­ÕÝ·äµÓ{Þ[rÎçº:¸…ÏýÄ!AQ  ‰â~û!ÂÇç T­F¤ú$aø;_Fky!ƒ†ÞÕÏR4þuBê½¥ˆD^wœÖ÷nOŽ®Ÿi¬ýNX9ý m© $f Ĭw¢{ß„qgCäö8Uúl4²õó<¼ñ­ýÖis¾µ]&ç ó:Ð$®ˆUþŽÜ?uÈY­FR¬{·¹Ï¼]ÞCÓf‡õc(Hã¾FŸ¤þ€GÀ]ïQÈKöz!‹Å5fÛñ]¶ÁSðóS5iï\I-6k4ÏýÓ@/­‚äPyé=Hp$"º÷-øNÇìùŽw€·0!Ìî&—¿™VŽ%º'ÃWU9&¢KtØ[‡¯98ó¶;þö6-ªN N!†©C/„;C¿D–™ïS’›‘B‹ÏœB¨=v´ƒ [œuΡ²¾V»–ýé«ãGó«e™úä Rw›€Ø”IšÁ÷B¡nƒ bÀ—ƒá!Áój¡†Ú©¿W¼÷Gg‰rt×è1]çQ«ÅÞç"ZÿKwüjáëþ¤ yl+…´¡Á¿²:$Žá1Àú‚ºÛ§fÇÄfW¢Û\´žb½7Ú»š×Ó÷³åÚÉÏK½ØäHyAN`LÛO÷]2$ÌSL ‚ŸBa?y8EÐm#>v.^}ù¬®Ã7ÚCAyÄÍÜM{Ðz‰¢Íb7Ú ýV†¿¾ßìOs@£îcü/câ7§{¶ñÿ„_‡“ëÕM²Å>/n´¸¾Íi0ØÏßËžtE«'@j¯Ô$ @@šiüPP¥—3‰¹Ÿ·ç²·Û˜·Å‘ ÌAÁáò  ÃýwÒ³$©q}+ãzþšÐÍã,¶[iö üá£DQ (aT‚‘÷P?C¾Ü&ôÃKŸ'þqÅâýÂâÜ›W{¡6y W„HÞðarÂò¸¶wÉžP¹«ê“UȪ© ¢”IžÎUJŠùr™ÇûÆ¢Ùì ”òð΃ØìáÀÒAÔº[ƒ»¹Uß¹6|äD7R¿µ G/ ±»#‚Ü µó d„ MFJ\D.HšF“·Z»–èã€|mÝã|;G¶ÃPÇuˆþç¨n1Ûz‡2>Ã*irx@”»ñþ5×ÂnÑQu@¶$HçS~*uÔ&€Ä¸AbcêyîçÅ‚Á˜¶y¤”w“L%´ƒj)¨CPºé×’-uµ¶0x•BÛ÷ÌiŠlŠ;Ð ‘SVl< D¶êQT0’cúÒ·ìÏ!ÿ¶Ôsç™^ð5ŽjiëR±JÓHáÄ-\9Ü¢ñ¿ý'ª'Ah¯Hþñ) GŒööØWÓë"×#dú!vµ iÕ`|°™õdßudu€T ø> š ©&0 x6p1óÓl3¯Cx6CøÃ3d–óçÁu˜…-½cPú¢ÈR~ß=œòU –举Ë;½ y},.‚ìyèõ!dHøR¡Š~‘¨²*¶,®¿íé«÷Âü,m¾Ô¾é”é³ }*¡C™¦>ÖFWHºT’’Êv®§ŽwÝšL¢ˆ ¤ÛuE 1…Aä¦0•šû)˜;Fñ=ˇç@À .=Á˜.A¶ù¤”md• Yn…ÄrÙ)Ñø- ÓËžÕÉvr±ÇÀ>Œª¦}ðþ×× oüŒBô ó÷¿ê]LqÖ6"©šÞç¶v™¡W`Ò.©QÅÚ¡.¶‹fTd P@“À Àn •Yi.f3b’~ï¤[ú˜Úp7Dé™' à§Pˆ à7'ý“ø$b 2Æ»EÍí(­o‘¯Uœ©žb_í’«$`“ Ϭ= Ê/6 ó:ñ×áé«^}¤*Å7Ybb2þé÷¨o*B¤ &q@ì<àªÌêL6Ôg1öuj"ÂÆäi Å3ˆ;Uf0älVÌbÇÇað &0æÙ.»=#@Ñ,X;PˆðÓ(Rôd°Ž…Ǻ÷ΰ5¶²!´ á‘@øÈS&í,•0~ìïChv¬(<{Mþ\¨eHì‘!Sßõ¹}W@$°2O³ ™!@·‹.’G"Øo¸   ¢ YŠ&âyÚÃáÉ/À|×DŒð#€Ç H`ÖM¥K… }…­~€X1¼0 pQ>’,¶ 9ÉØ@9/þô/ÿÓÇÕé¢u`o¡, M)yZ©*WY ÁÉeïxäuu¢ EÀ Ƽ<§ù~…2Ì ` "5íšäí@‹yÁ:{†ÈÙlA°`šˆ;}‘¸«?ͶEžlÅ ömx}Ixy|¼É*ècÔðªr?Ë,-¿RÂøØ,C49±f¼ø»  hÐd0S1ÎwÀí¾˜§0Ø–bòRóÙ nD*²2a÷÷ЬŽqåÀÒ#‚Þ½ÌOÀ×?´dhz.Ïów·v"Á yo"# —ž$,tÔõã‘çb²ŒÏq)°/%¦œ£P: @,ïªÝÝ4­–bÒ³Wœ¦p0îàY?Þßn³ ¥ÕA|>ÂÖ¹0#Œ‰P «FöÌj®F6‡¿až~–΂?CxzI)M(…ˆ ïN’(ŽkJã kýÍ¢Á)€Ú7{ÁRŠÙ #€bM— 04Àâ®Xa6ÓëS–<»Žðfc*;óÃd„êJ0åÈÅ»Äê2ùÊ&¼JPecÅþXFöQ"žàXÁ¥c˜ÈÀ(ÜÙpº‰æý¿û  ŠoD:n¸Ð9Zb§V[ÍÈ ´P˜™Úªèï_'V “l2(ððÖJ±“³Š5sâ4B¨g…šœÍ"f;ÝÖCoCr`C—~\ꄛʹ —…—f±÷IŠˆ)xŒmÜ+á\„ц·òË+>]¦ôÐâð†Áonz¢Ÿ“v~Øh‘BVÕ6¬i5M<@0H¹±s”†œU*¢­FãÝz¾ìFyQ"t`SJÍE`/A¬'P€pƒOM—Žœ% {&0Ĭ@³ð¬žÆv4àÏ•yØ! ;ÁÍ0¬Ž1Žby€JòwBå4²ÆbuÜ>W9SÛÔŠ‡ø‹§ ów˜èç‡ìuú¢(R¡ xñR¢èa÷è`aÄ9¿Fúð~T«ðáÖƒá›Ã·Ìóªï•ˆ=H9øRBÐ3(¥ÀA©) žÑÑ,~@ÄÃÎ>TÉR<›Ã¾°à#[¶ìH*V ·iaãU7.P²ZÁàø¤F}ô2ž|yÛ2ª"« ê/w‘u+¤][gÌÇ-Ñó}ÎC¾¼H/ÆÚ­þ¤¦¬ìqÖèÒîrBIý¢CòªPI@B®ÂU“:¸‘çŸ:hæ·Ìa~‚b&Ò˜}vðÊ€ô$Kš Œ„sXú4¢ЬöÈf™Ä€½*E¥vÓ¸á‹>7 >wð#Ó'ºÑ•HU/!i¬ šå¾ýîwåP]ÁøAå“¥eúó¯œV ‡~éúžxàmkýÅÀyTrÛxåà^ Ì€1?ä9ŽÈèºØ?ÆØ:¶.’ÆU¸(Ù÷X¬ûˆl 'Ò ©ìÈÛÚ9!)¢ƒ×»…ÑîÛ¾-öL]$,¼ Òg ÍNÏÝôpÇcº)c ˆÊT €óR~æÌ3–µðÖÀg9|šs;âÇÅ>8êæñäèã8嬞PµùëÜì×èÄ[/Y¥^•/IÒíœìù½“,âl€Õ …^ú€üÂý}í6œºëã¶Jæzc‘ÔFòÆ*ãÖ韼|Ý 2¨GH¢Û†)n\f20õÏ6;f#_3ß]t_¦]_%éf¹+ä5Hƒ© Ì7xäÀ yñv–Al)S*› \¤ði7N¡ä¦l;˜=Fnƒ´÷på¥J —ÁÙ;<^Œ9¯Œ¼©W)oüµöß”Ï}û&500âï}U`TUâÆ3¤.œs8÷m×îîž!\Ê”„fvPêǸÇ~ô‚à°hxVM采nìÂwVÈ#fÝÿ€Ô`£w2ø<|8½6|äTÀÌ9€ÃÛ±‚YC²J1æ™›ƒÝl4„7¥Ïpã>\rPªŸðG0vi¢FÍ3­šf E&Hס1 xûÐ¥m+ãQܧ}QkóÁþ%T†cоé¸×ø®JküÆ%2Se©¬ݺ)…Qàåˆ TÿŠ})MãQa›'{§²«{B£ƒز²h&`¿ 8žd Š °ƒÔf¸ñ Æ!|^*Û+/íÀJþy7š,d…:¨Ÿª¾Þ^Æ›°ªÃùÒs0Ùu F·®90ª½5–ßZ÷ôÚ†íi*»ÖÖÍÑÖp¿ºhÑ/ò±{ž‚;'pö˜€p–Îýü O´52£Œ*å“%¿5${ÐÃÆÞÆ¡î¿k>À¶‚ld-‚Œ *¥¢DЩ$ÃÙžÞ•¿Ø&ðÅ>+¤û%ƒ²màŒâ¼Á^g­þV½£ßô™ù2ÌÒ)2ñ2È~Ëúü §ÞïG ‹îž§Ù® óÉ€ºÃEEc#jeÔhCô ¿¸ñ¿¡ µ–ôÙÙÓpñWH÷o@û'9:l ÜÙ8ªSF;îÑÝ+éãÜ7kQÅkÙd]@ÆDT‡k UÉbºÓu¼ƒó!|©ÉIfd™ÊdS¾Õ{0|5Ž:Ubµà} 2Lî§”v`«WIòË8O×ÞîÓ?ßa|Èøf-€´í,GKôËayZÂ=¼Æ…|ÎëÁyRâi®îõP¹uAŽ5³U'¾ã‘Ã]ùâîåÑ2m/ ½Tñ,¹DÒP³ÃgïÁ~Vl€O3²\:ÕU›‹§»Ã¸‘ýO’æ}Ø:8ë®ñ;zÇ$ÇïqÞ\†•Mn a¯àK?HégÓêüËyý)þêH¬8Þ{‡…~R´özï¾Ï}Ú£¼þdV!5¼>íŸðYqs\Œ>¸&—Ì;á’¢.‰•T !@D M˜8WzFÄj·²´Vi3Š£-Qá´n²>ü6`6)_]à¬~œDþÂÚˆ5œµWÅMöhSh7AÃüÚK}‘*ü‚¶ùrÛâ¤B¡è¿$ëÑ)Ô·aãÃ×ä~¾a‡§é`|“!c²•´nO¿/U«µh\SÝÖÚk¶p‘É};Mÿo5×Ö"Çq…¿S]Õ—™žÙÙ›´«E Ž‘{lA®ä!ÆÁà@ˆñcòOò˜7ç7Ä/“„ƒ%à€C0 ±"k£Ëj¥ÕÌŽvgvgzúZÝUu¼ ÈfaM`ýÁâœîê>NŸ¯Ë¤©\d–ÊGEŠƒP ¿K$•Ý‘¶Ã¶`¡ºàÃß:I/Rµª8œLLwPÅ#¶~L:»Ka/B-¢ÑCŠdë/˜j±+ïààaõ5„ÿüÁKĵ:Þ²}(³ì:k‚ª)&ù.ÌùÈ6™$Ïú,J!T÷¬òåöz³g©-òŧá°å6“è’L·–™…°.ìÀ© +ðõ=‘Å9; 2m ü=·pÎu Åog£f6ª^û<}€­ïãëßéÂ5­¦*KßS Á–øîÙœè­G8Ú½ý3‚ b‘WEhëI€¥~äâþ.,v ï[…(gdòDˆÅEøÆcw­éLm¬Ç.[ƒ®Â¶àÔu˜p‡9ØûÛ©›ìä-¸` Ö߆óGà`ò6aÂ]¸ ½zFÀþ{3ÍMo9kµj5Ts+<û´‡o±?ä÷E `¢>\´)†ŽÃ=á7ò&ŽXFNl”\æ^±·.0¼}UøûÈ»\ºLôÜåÖæ-ÊIþòŠÁâf…²~´£ÝÐSCßþ3ˆo Ù —ê†^=>Ëý¡—o ,x_Üðò6»/m+ºþLÁ‚nÚ5Àwa[d“ Š ëê‚jÉÂwGˆ-˜§ÄˆàÛ”UT1Ó.™`êB»Êy7TKƒM'üžãõ ñ\ºIðúŸ5ÿå›PüV§¦‹ï6üö „ïôå}ûî‘r¼ç:¡73Ÿªyë™.·‹¢Ùuï½Ié~á|7[k±›lŠ ÷$(Ý"ŽŸbð‰­W¸Ì)dJ’òáD‘E‚[$hv´,0‹œ[Ø¿EÕÒyô£ÎM>€m=÷_ºƒ‹ï”@ßÿ{Ãü‚‡7@˜^þ?vøÓÈpÿüšpa²¢ezÏ;;ÉèçÎBA·ȼ…^ÅÖKÁa ¨ Ùµ ä:#7CêçÄaå%‡#öÄ®\h4´ÌáµùÛ×dËÅ0”·’dˆ“-¬ì=Áû)€^¼méRʧB¦Ú´Ç±óËh!a«±,o|•‘»[°,)Ä .ÖP4!- a¤Æ+›‹®‚¡éš&`‡Æk&ðm#{K• ôÔ5&±6ØÖèãS§Ûe†ðÏäÒ“ÙÔ@šB+t7GD9‚Qy!=@¥èÙ>ÍÞ‡C~µ†(+,Èç’$Mg¿c’W?Çu0îÛÀ-0¢Â¡5½íVú˧QÈìa!Ii½ø¸*Œ|HÕ5L“¡V nÄ:·Ê £šX»R?ø¦Œ—ƒ×h †Q•\£TÖzó®ÌKÌ3»ìȯ¯{ó‡ŠÃÊɤÞy2:MBfpÎ+‘-"9\É‘M3úÑ;@'ÑH< ð¤Ð–¹Ø3Ǧ¦Ï×¥ci8ôò*ëU_ß×xÆ’±qIÒöã9!Ô„+S¯³G8-`žÛq_² :üáéc߯0_Û+?éò•×<~sY0Ÿ¼¿÷â»ç–]æ÷>‰-ͯOö‚€«@»ï‚yn§<ƒàþ‰±ÿ¼1ÿü?H¶ã¸Ue"þÄwìÏÞ dÒ©%Dëù Ó‰É^û±|È=ä½{ðO ë±%/× N®WæIÜ­,EE0'ÔBê¡Ï˜çö™ÄG‚Ì]HnÃrIEND®B`‚PyQt5_gpl-5.10.1/examples/quick/animation/basics/property-animation.qml0000644000076500000240000001013313245231431026226 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Item { id: window width: 320; height: 480 // Let's draw the sky... Rectangle { anchors { left: parent.left; top: parent.top; right: parent.right; bottom: parent.verticalCenter } gradient: Gradient { GradientStop { position: 0.0; color: "DeepSkyBlue" } GradientStop { position: 1.0; color: "LightSkyBlue" } } } // ...and the ground. Rectangle { anchors { left: parent.left; top: parent.verticalCenter; right: parent.right; bottom: parent.bottom } gradient: Gradient { GradientStop { position: 0.0; color: "ForestGreen" } GradientStop { position: 1.0; color: "DarkGreen" } } } // The shadow for the smiley face Image { anchors.horizontalCenter: parent.horizontalCenter y: smiley.minHeight + 58 source: "images/shadow.png" // The scale property depends on the y position of the smiley face. scale: smiley.y * 0.5 / (smiley.minHeight - smiley.maxHeight) } Image { id: smiley property int maxHeight: window.height / 3 property int minHeight: 2 * window.height / 3 anchors.horizontalCenter: parent.horizontalCenter y: minHeight source: "images/face-smile.png" //! [0] // Animate the y property. Setting loops to Animation.Infinite makes the // animation repeat indefinitely, otherwise it would only run once. SequentialAnimation on y { loops: Animation.Infinite // Move from minHeight to maxHeight in 300ms, using the OutExpo easing function NumberAnimation { from: smiley.minHeight; to: smiley.maxHeight easing.type: Easing.OutExpo; duration: 300 } // Then move back to minHeight in 1 second, using the OutBounce easing function NumberAnimation { from: smiley.maxHeight; to: smiley.minHeight easing.type: Easing.OutBounce; duration: 1000 } // Then pause for 500ms PauseAnimation { duration: 500 } } //! [0] } } PyQt5_gpl-5.10.1/examples/quick/animation/behaviors/0000755000076500000240000000000013245231431022372 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/animation/behaviors/behavior-example.qml0000644000076500000240000001053413245231431026340 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { width: 320; height: 480 color: "#343434" Rectangle { anchors.centerIn: parent width: 200; height: 200 radius: 30 color: "transparent" border.width: 4; border.color: "white" SideRect { id: leftRect anchors { verticalCenter: parent.verticalCenter; horizontalCenter: parent.left } text: "Left" } SideRect { id: rightRect anchors { verticalCenter: parent.verticalCenter; horizontalCenter: parent.right } text: "Right" } SideRect { id: topRect anchors { verticalCenter: parent.top; horizontalCenter: parent.horizontalCenter } text: "Top" } SideRect { id: bottomRect anchors { verticalCenter: parent.bottom; horizontalCenter: parent.horizontalCenter } text: "Bottom" } Rectangle { id: focusRect property string text x: 62; y: 75; width: 75; height: 50 radius: 6 border.width: 4; border.color: "white" color: "firebrick" // Set an 'elastic' behavior on the focusRect's x property. Behavior on x { NumberAnimation { easing.type: Easing.OutElastic; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 } } //! [0] // Set an 'elastic' behavior on the focusRect's y property. Behavior on y { NumberAnimation { easing.type: Easing.OutElastic; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 } } //! [0] Text { id: focusText text: focusRect.text anchors.centerIn: parent color: "white" font.pixelSize: 16; font.bold: true // Set a behavior on the focusText's x property: // Set the opacity to 0, set the new text value, then set the opacity back to 1. Behavior on text { SequentialAnimation { NumberAnimation { target: focusText; property: "opacity"; to: 0; duration: 150 } NumberAnimation { target: focusText; property: "opacity"; to: 1; duration: 150 } } } } } } } PyQt5_gpl-5.10.1/examples/quick/animation/behaviors/SideRect.qml0000644000076500000240000000454113245231431024613 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { id: myRect property string text width: 75; height: 50 radius: 6 color: "#646464" border.width: 4; border.color: "white" MouseArea { anchors.fill: parent hoverEnabled: true onEntered: { focusRect.x = myRect.x; focusRect.y = myRect.y; focusRect.text = myRect.text; } } } PyQt5_gpl-5.10.1/examples/quick/animation/behaviors/tvtennis.qml0000644000076500000240000001043013245231431024755 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { id: page width: 320; height: 480; color: "Black" // Make a ball to bounce Rectangle { id: ball // Add a property for the target y coordinate property variant direction : "right" x: 20; width: 20; height: 20; z: 1 color: "Lime" // Move the ball to the right and back to the left repeatedly SequentialAnimation on x { loops: Animation.Infinite NumberAnimation { to: page.width - 40; duration: 2000 } PropertyAction { target: ball; property: "direction"; value: "left" } NumberAnimation { to: 20; duration: 2000 } PropertyAction { target: ball; property: "direction"; value: "right" } } // Make y move with a velocity of 200 Behavior on y { SpringAnimation{ velocity: 200; } } Component.onCompleted: y = page.height-10; // start the ball motion // Detect the ball hitting the top or bottom of the view and bounce it onYChanged: { if (y <= 0) { y = page.height - 20; } else if (y >= page.height - 20) { y = 0; } } } // Place bats to the left and right of the view, following the y // coordinates of the ball. Rectangle { id: leftBat color: "Lime" x: 2; width: 20; height: 90 // ![0] y: ball.direction == 'left' ? ball.y - 45 : page.height/2 -45; Behavior on y { SpringAnimation{ velocity: 300 } } // ![0] } Rectangle { id: rightBat color: "Lime" x: page.width - 22; width: 20; height: 90 y: ball.direction == 'right' ? ball.y - 45 : page.height/2 -45; Behavior on y { SpringAnimation{ velocity: 300 } } } // The rest, to make it look realistic, if neither ever scores... Rectangle { color: "Lime"; x: page.width/2-80; y: 0; width: 40; height: 60 } Rectangle { color: "Black"; x: page.width/2-70; y: 10; width: 20; height: 40 } Rectangle { color: "Lime"; x: page.width/2+40; y: 0; width: 40; height: 60 } Rectangle { color: "Black"; x: page.width/2+50; y: 10; width: 20; height: 40 } Repeater { model: page.height / 20 Rectangle { color: "Lime"; x: page.width/2-5; y: index * 20; width: 10; height: 10 } } } PyQt5_gpl-5.10.1/examples/quick/animation/behaviors/wigglytext.qml0000644000076500000240000000777213245231431025331 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { id: container property string text: "Drag me!" property bool animated: true width: 320; height: 480; color: "#474747"; focus: true Keys.onPressed: { if (event.key == Qt.Key_Delete || event.key == Qt.Key_Backspace) container.remove() else if (event.text != "") { container.append(event.text) } } function append(text) { container.animated = false var lastLetter = container.children[container.children.length - 1] var newLetter = letterComponent.createObject(container) newLetter.text = text newLetter.follow = lastLetter container.animated = true } function remove() { if (container.children.length) container.children[container.children.length - 1].destroy() } function doLayout() { var follow = null for (var i = 0; i < container.text.length; ++i) { var newLetter = letterComponent.createObject(container) newLetter.text = container.text[i] newLetter.follow = follow follow = newLetter } } Component { id: letterComponent Text { id: letter property variant follow //! [0] x: follow ? follow.x + follow.width : container.width / 6 y: follow ? follow.y : container.height / 2 //! [0] font.pixelSize: 40; font.bold: true color: "#999999"; styleColor: "#222222"; style: Text.Raised MouseArea { anchors.fill: parent drag.target: letter; drag.axis: Drag.XAndYAxis onPressed: letter.color = "#dddddd" onReleased: letter.color = "#999999" } //! [1] Behavior on x { enabled: container.animated; SpringAnimation { spring: 3; damping: 0.3; mass: 1.0 } } Behavior on y { enabled: container.animated; SpringAnimation { spring: 3; damping: 0.3; mass: 1.0 } } //! [1] } } Component.onCompleted: doLayout() } PyQt5_gpl-5.10.1/examples/quick/animation/easing/0000755000076500000240000000000013245231431021656 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/animation/easing/easing.qml0000644000076500000240000002031613245231431023641 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { id: window width: 320; height: 480; color: "#232323" property var easingCurve: [ 0.2, 0.2, 0.13, 0.65, 0.2, 0.8, 0.624, 0.98, 0.93, 0.95, 1, 1 ] ListModel { id: easingTypes ListElement { name: "Easing.Linear"; type: Easing.Linear; ballColor: "DarkRed" } ListElement { name: "Easing.InQuad"; type: Easing.InQuad; ballColor: "IndianRed" } ListElement { name: "Easing.OutQuad"; type: Easing.OutQuad; ballColor: "Salmon" } ListElement { name: "Easing.InOutQuad"; type: Easing.InOutQuad; ballColor: "Tomato" } ListElement { name: "Easing.OutInQuad"; type: Easing.OutInQuad; ballColor: "DarkOrange" } ListElement { name: "Easing.InCubic"; type: Easing.InCubic; ballColor: "Gold" } ListElement { name: "Easing.OutCubic"; type: Easing.OutCubic; ballColor: "Yellow" } ListElement { name: "Easing.InOutCubic"; type: Easing.InOutCubic; ballColor: "PeachPuff" } ListElement { name: "Easing.OutInCubic"; type: Easing.OutInCubic; ballColor: "Thistle" } ListElement { name: "Easing.InQuart"; type: Easing.InQuart; ballColor: "Orchid" } ListElement { name: "Easing.OutQuart"; type: Easing.OutQuart; ballColor: "Purple" } ListElement { name: "Easing.InOutQuart"; type: Easing.InOutQuart; ballColor: "SlateBlue" } ListElement { name: "Easing.OutInQuart"; type: Easing.OutInQuart; ballColor: "Chartreuse" } ListElement { name: "Easing.InQuint"; type: Easing.InQuint; ballColor: "LimeGreen" } ListElement { name: "Easing.OutQuint"; type: Easing.OutQuint; ballColor: "SeaGreen" } ListElement { name: "Easing.InOutQuint"; type: Easing.InOutQuint; ballColor: "DarkGreen" } ListElement { name: "Easing.OutInQuint"; type: Easing.OutInQuint; ballColor: "Olive" } ListElement { name: "Easing.InSine"; type: Easing.InSine; ballColor: "DarkSeaGreen" } ListElement { name: "Easing.OutSine"; type: Easing.OutSine; ballColor: "Teal" } ListElement { name: "Easing.InOutSine"; type: Easing.InOutSine; ballColor: "Turquoise" } ListElement { name: "Easing.OutInSine"; type: Easing.OutInSine; ballColor: "SteelBlue" } ListElement { name: "Easing.InExpo"; type: Easing.InExpo; ballColor: "SkyBlue" } ListElement { name: "Easing.OutExpo"; type: Easing.OutExpo; ballColor: "RoyalBlue" } ListElement { name: "Easing.InOutExpo"; type: Easing.InOutExpo; ballColor: "MediumBlue" } ListElement { name: "Easing.OutInExpo"; type: Easing.OutInExpo; ballColor: "MidnightBlue" } ListElement { name: "Easing.InCirc"; type: Easing.InCirc; ballColor: "CornSilk" } ListElement { name: "Easing.OutCirc"; type: Easing.OutCirc; ballColor: "Bisque" } ListElement { name: "Easing.InOutCirc"; type: Easing.InOutCirc; ballColor: "RosyBrown" } ListElement { name: "Easing.OutInCirc"; type: Easing.OutInCirc; ballColor: "SandyBrown" } ListElement { name: "Easing.InElastic"; type: Easing.InElastic; ballColor: "DarkGoldenRod" } ListElement { name: "Easing.OutElastic"; type: Easing.OutElastic; ballColor: "Chocolate" } ListElement { name: "Easing.InOutElastic"; type: Easing.InOutElastic; ballColor: "SaddleBrown" } ListElement { name: "Easing.OutInElastic"; type: Easing.OutInElastic; ballColor: "Brown" } ListElement { name: "Easing.InBack"; type: Easing.InBack; ballColor: "Maroon" } ListElement { name: "Easing.OutBack"; type: Easing.OutBack; ballColor: "LavenderBlush" } ListElement { name: "Easing.InOutBack"; type: Easing.InOutBack; ballColor: "MistyRose" } ListElement { name: "Easing.OutInBack"; type: Easing.OutInBack; ballColor: "Gainsboro" } ListElement { name: "Easing.OutBounce"; type: Easing.OutBounce; ballColor: "Silver" } ListElement { name: "Easing.InBounce"; type: Easing.InBounce; ballColor: "DimGray" } ListElement { name: "Easing.InOutBounce"; type: Easing.InOutBounce; ballColor: "SlateGray" } ListElement { name: "Easing.OutInBounce"; type: Easing.OutInBounce; ballColor: "DarkSlateGray" } ListElement { name: "Easing.Bezier"; type: Easing.Bezier; ballColor: "Chartreuse"; } } Component { id: delegate Item { height: 56; width: window.width Text { text: name; anchors.centerIn: parent; color: "White" } Rectangle { id: slot1; color: "#121212"; x: 30; height: 46; width: 46 border.color: "#343434"; border.width: 1; radius: 12; antialiasing: true anchors.verticalCenter: parent.verticalCenter } Rectangle { id: slot2; color: "#121212"; x: window.width - 76; height: 46; width: 46 border.color: "#343434"; border.width: 1; radius: 12; antialiasing: true anchors.verticalCenter: parent.verticalCenter } Rectangle { id: rect; x: 30; color: "#454545" border.color: "White"; border.width: 2 height: 46; width: 46; radius: 12; antialiasing: true anchors.verticalCenter: parent.verticalCenter MouseArea { onClicked: if (rect.state == '') rect.state = "right"; else rect.state = '' anchors.fill: parent anchors.margins: -5 // Make MouseArea bigger than the rectangle, itself } states : State { name: "right" PropertyChanges { target: rect; x: window.width - 76; color: ballColor } } transitions: Transition { NumberAnimation { properties: "x"; easing.type: type; easing.bezierCurve: getBezierCurve(name); duration: 1000 } ColorAnimation { properties: "color"; easing.type: type; easing.bezierCurve: getBezierCurve(name); duration: 1000 } } } } } Flickable { anchors.fill: parent contentHeight: layout.height Column { id: layout Repeater { model: easingTypes; delegate: delegate } } } function getBezierCurve(name) { if (name === "Easing.Bezier") return easingCurve; return []; } } PyQt5_gpl-5.10.1/examples/quick/animation/pathanimation/0000755000076500000240000000000013245231431023244 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/animation/pathanimation/pathanimation.qml0000644000076500000240000000651713245231431026624 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { id: window width: 320 height: 480 Canvas { id: canvas anchors.fill: parent antialiasing: true onPaint: { var context = canvas.getContext("2d") context.clearRect(0, 0, width, height) context.strokeStyle = "black" context.path = pathAnim.path context.stroke() } } SequentialAnimation { running: true loops: -1 PauseAnimation { duration: 1000 } //! [0] PathAnimation { id: pathAnim duration: 2000 easing.type: Easing.InQuad target: box orientation: PathAnimation.RightFirst anchorPoint: Qt.point(box.width/2, box.height/2) path: Path { startX: 50; startY: 50 PathCubic { x: window.width - 50 y: window.height - 50 control1X: x; control1Y: 50 control2X: 50; control2Y: y } onChanged: canvas.requestPaint() } } //! [0] } Rectangle { id: box x: 25; y: 25 width: 50; height: 50 border.width: 1 antialiasing: true Text { anchors.centerIn: parent text: "Box" } } } PyQt5_gpl-5.10.1/examples/quick/animation/pathinterpolator/0000755000076500000240000000000013245231431024007 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/animation/pathinterpolator/pathinterpolator.qml0000644000076500000240000000701413245231431030123 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { id: window width: 320 height: 480 Canvas { id: canvas anchors.fill: parent antialiasing: true onPaint: { var context = canvas.getContext("2d") context.clearRect(0, 0, width, height) context.strokeStyle = "black" context.path = motionPath.path context.stroke() } } //! [0] PathInterpolator { id: motionPath path: Path { startX: 50; startY: 50 PathCubic { x: window.width - 50 y: window.height - 50 control1X: x; control1Y: 50 control2X: 50; control2Y: y } onChanged: canvas.requestPaint() } SequentialAnimation on progress { running: true loops: -1 PauseAnimation { duration: 1000 } NumberAnimation { id: progressAnim running: false from: 0; to: 1 duration: 2000 easing.type: Easing.InQuad } } } //! [0] Rectangle { id: box width: 50; height: 50 border.width: 1 antialiasing: true //bind our attributes to follow the path as progress changes x: motionPath.x y: motionPath.y rotation: motionPath.angle transform: Translate { x: -box.width/2; y: -box.height/2 } Text { anchors.centerIn: parent text: "Box" } } } PyQt5_gpl-5.10.1/examples/quick/animation/states/0000755000076500000240000000000013245231431021713 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/animation/states/qt-logo.png0000644000076500000240000001203513245231431024004 0ustar philstaff00000000000000‰PNG  IHDR.7s`xdäIDATxœbüÿÿ?Ãß™™™˜ÿ>xñXféžU ‡/ž¶y÷é­˜¤ò?~Q¹¿üÌ?øþýÿÇÊÅÆ÷Fœ[ö–$¯Ò5)>¥ËÒ¼J×ÄxdïpŠ>ccfÿÅ€ügøÏôïÿ?&†ÿ Œ Œÿÿ30Bi ÿÿbüû÷/3ÓßY›¦TÏmí}óæ /Û{/aFYEN†Œ ÿ™þýÿÇðçßo†ÿÿ00002°0±2p²ð|ãcz&Ì%u_œGî¦Âu ^…›¢\R÷8Åž±³püÀnõÆÿÿ1Ã9$zÿÿbüÿÿ?äµ³sò»ó&sò ÿcgcûï,Ä !ÃÆøíë?FFˆ9Œp ™þ320üg```øÿÿ?Ó¿ÿÿüÿñп? ÿþ3°0²2°³pÿåg~!Ì%y_ŒGâu …ë¢<2w…9%žp°r}Åç¡ÿpKÿ1bñÿÿl’½ Â0F¿/Ò!ƒÆAÅ]p쨻Ïâkºvp(¨ƒàÖ±ˆ $÷:ˆ[^à6·Ëv:ž…ê⇲«KS¦x¿fgL þ ©Äd¢D$‰H¡*0,0.¬¸‘ïü$¬ïí?÷ÿÿ"Ùáÿÿ10pp23|ûú‡áôÉÇ R\ê ^&> ƪ† ¢" ŒŒ _~}`xöéõ×'®¾:Áðõ÷'nV>œŽgdd`€•JLŒL ÿÿÿgøOÀÿÿ"ÉáÿÿC}çÆ†£ûÞ2T„T0…g0°³³2ü‡TépµZb ®*Ñ Ï??`Xsu"Ãé';¸Øø0‹M†_?ÿ1°°°002ýeøöû   +;^Çÿÿ":;þÿÇÀÀÎÁÄpãòW†k_0Ì.œÎP—ËÀÂÊÄð÷ß_†ÿÿÿÁ+›?3üþ)Ò$yår-úBtò¾ýúÌÀ-þÿg``ecdxõìÃ’Y<ÄKº¼62ÔØ/f0”tdøñç\-6ÿÿŒÔ!Â@@Ñ?3»u S‚D5X$¦ áxnĸ i I1]¶ƒB’p‚ÿÔÿ þ<î™ËùÊid»nèSBE15DÓ€I X¤ îdÏ4‹›ùŽ®¢b¸;ªÂ­}½¤®VŒâ”j¼dRÎx øýäÿÿ":Ä™î~Π©¬ËP•ËÀÀÀÀÀÊÂÂÀÈÈÈðÿ?$™Üx{’¡fC:ƒOeÃÚC[ !ƹí<EAm†Ÿ¾10313üÿÇÈðôñm%UQi¨cþQÿÿ„Ô+Â@FáóߦLë@ P, IuÉX Š-`p$xb ¶w°ÂŽørþ†§ âéM<Þ™M*B^д ’ðäHâpݳØL‰¶åÖÝ1ž—,×+LÂÝñÔ’gQ¯¢ö™x=ÄåüdØ|í4Ãd˜ ýàòÿÿ"âÿ!eõ+„Äü­=˜¡-0Xdn¾1‹áßÿ¿ ì  ¦æ’ rš" U3Ú¾ÿ‚„.#´6”t`áWf`býÅðòÅg†ß/ß3Xé˜ ,c``øõ÷;Ã×ߟ¾ÿùÊðë/öV1ÿÿ"èp&f†ŸßîßûÈ`©cÄ %, åÿ ÿ™>üxÍðàýU.†?ÿ~3üþó‡ASGááãû .…„æÿ ÿýe`gádàýdİbþC†dÓF†Í3v0¸˜8@RÈ)j3˜É¸3hˆ˜0Hò(`uÿÿÂ[þÿÏÀÀÂÂÈðþÝ_†ïï0XéšBñï3¤¼edddxùå!×_ØY¸ Éâïa16æ §®cð4s…çMQ3†wúTÅ´4åÕþþû u8$-e½,d<™ž¾Ïа/ÃmÿÿÂâÿ˜˜Þ¿ýÍÀð™A_E‹ÞƒDí›oÏþüûÍÀÈÀÈÀÈI«œÜL Ì\, 7߃ëad‚èÓSÑdàâãgøó÷n‹ T@ÿÿ"˜T>¼ÿÅÀÄÎÉ  !ƒ†ÌèO?ÞBš¡Pþ¿ ¬¬ Üܬ Ïß¼„XÄÈ×'%,Á ©&Åpñþ%†§¯ŸÃCþüýËðûÏ?»Ðÿÿ"\sþg`øüé7/7ƒ(¿0Ô3ÐNTɷߟQ<ÂÀÉ, ï?‚ëù INvN†ˆ(-†ÔÎdi†ÃS72üÿÿŸáÃ?fFf†í72캽‚A„[’©ï€ÿÿ|•M € DŸùCˆP÷¿['ˆ6-41ýZ¸Šöó†˜pÕwžb!ø…àç,ß‘ñ,DzSÎiâ•(µ`µ†0)…·+ÖŒzôÔNö¼‘ä ¶ŠÓóËóÿÿ„—Á €0 C_·®›ÅÿÿW­ždï!yäLjd³AW[j"c:" Z8âäºc‚ó¶“™|{zMŠTš ¬:]}™ùÿÿ"ªÿû÷? 33²ùpiõ¡»’±ÿþû u *`ebƒ&liÒ:üÿÿÎZÿÿ"²­)öqöç°—ŒP)l²LŒÄ !àÿÿ"ÊáLLŒ ÿýcø‡¥IÊÀÀ€½Z†:˜‘{¹@iÏÿÿ"ª8da…¤Õß~Ã… XY±¶ÿýýÏÀÌÄÄÀ„e€æ÷¿ŸÐ¢Ž¼‘8ÿÿ"⌠ìì, ß~|gøñ {»•™Ãþÿ þþc`eee`aFv8$üüù-"Éÿÿ"Xs2220psCú–¿~‚ ÿ‡;Ž“•›2¨‰pÚÿ ¿ýeàd瀅P X>ùúë#$‰‘érÿÿ"*óò±2|ÿñáåû×ÿG8‡M€)ô!ÿùó//Dª‰‘‘áÏ¿ß Ÿ~¾c`fd!Ø·ÄÿÿÂïp¨øÙþüd¸÷ì!Ôᨖ pˆ¢t³þüT\b‚B žÌŸ~¾ƒ8œ‰…Ü ÿÿ"âÿýgàda``a`¸xç*š¿ a.Â%ÅÀÆÂ )) í÷Ÿ?þ3üüö‡A^BîYXè¾üòˆáë¯ ÌŒÌd§qÿÿÂëpFF†¿þ3ðð11ð s2œ¼zŽ^A.Ê-à À.ÂðÚOdbf`øüáïÿ ºÊšPÓ-¾{ï.3üþû šÆ‘ŽHNLŒL ¬,, ÌÌØË{ÿÿ"\åÿc``eg`PPâg8{ã2ãW¡]6Hûúßÿ œ¬< JB: ¿þýd`d`b`bbdxúè;+'/ƒ®Ä"¤nصW'X É¥<‡ú‡Máëï /ß½ax÷ñ#Ö"ÿÿ"ª8ü÷÷?ƒš/Ãço6ÛÉÀÀÀ€QÛ+†0üûû—™íÃÏoL §Ž>`uòfP“Qaø÷ï##$$Ÿ|ºÃpûíEV.V6&†Ïß¾000@jfXmj%ïÅ`-’À ü'€!Uwƒ(4$†<ÿÿ"ªúýë?ƒ„ ƒ„Ãôõ‹~ýùÅÀÂÌÌðŸá?|äI[Ì‚!L/ŸáÓ§ï [Ö=d°Õsa˜˜× 5ƒ‘áÄ£ûï­bøúë 3ƒ˜'ÃÃOž¿{ pHó² 3¹¶0´%´18é:3À‡çšÿÿ"®­ÂÀÀðŸñƒ­“ÃÕ[¦¬›ÍÀÀÀÀðûϸÃþÿÿÏà§‘ÁPg·†aMùF†½×0ˆð‹@ÆVþ203²0Ü{w™áЃõ Ül| ¿~ýfP×ágøøñÃÊ=› öüƒå´!8,9ÿÿ"jŽ‘‘á÷Ïÿ 2, Öî2 •SÛL5lu-~ÿùÍÀÄÄÄÀÌÄÄðÿÿ?U)UU)H)I¿ÿ˜Y>ý|Ç0çl-Ãß¿ØY8~ÿþÇ $ÆÌà(Ëбª›A\X”!ÄÞŸ™‘áÿÿ Ÿ}`xøá:é';Þ|{ÆÀÊ̆ÒRÿÿbäñûÏÈÈÀðëçYEv·@Üûÿÿ30pp03œ:ò–áæù¿ Kkf3xY:BÊuhþ÷ÿÃÿÿ’6žøäãm†é§Êž~ºËÀÉÊüüÿŸ‰áË—_ /_~eP“QfcøñçÃûï/>þxÏüèÿÿ"Éá0Ë89YÞÿÌpñôGoýP†dÏx%MVhoæào¿?3¬½:™áðƒ þý‚Œ ØÂ†¬YX˜~üúÁðûÏÈŒ+´äaÄ:Ê ÿÿ"y‚‘‘áû·? 2rÜ ~áÒ w71%X1´.îc````øûaÉŸ¿Þ_ËÀÀÀÀÀÅʋՌLQŸ?ÿ203°1p°r3°³p203B' °Mÿÿÿ"kò„‘‰áׯ ?¾ýePSg”àeØzl33<Éð± 3¸©Æ0|øñŠáãÏ·Ð4=*Pz=xÛ0ÿþÿÿ"kFnÑ?†ÿŒÔ5νÊpéÞ=%È€´v ÔÊfáSexñéñ'›>üx…³ýN„­ÿÿýÿÃÈÏ.ú ÿÿ¢lºŠ‘á÷ïÿ 꺼 þc˜±q!ß¿à 1FV+9† ,^6†¿ÿþ0àÌ@#ã¿ß2¨ íÿÿ¢Èጌ ÿgà`dpt—e˜¹v1Ãö{ØXÙàÿÏðŸˆù¢Àÿÿ ÿ™˜™Ø~;(Ïÿÿ¢x‚‘‰áç Ú†< ö> i“2flšÏðáóg†ÿÿm”o¿?3üùÿçÈÓÿ322ýcbdþÃÂÄúûý÷WŒ ¡SÔEŽÿÿ"¹8Ä`eü·ï¿ž<ýÀ ) Å ()ÇÀÎÆÎðý÷g†?ÞAG¼0Ó6dbº‚ºØà?Ã?æÿ þþûýï÷ß_L¶òA+RM[bX˜Xþÿÿ";sbXÎÈÀðãû_ff51†_¿¿1Üÿx >µ fùY ÁoãþgøÇü÷ß_Æ¿ÿ~3þý÷‡áï¿¿ Œ ~,+ßqN±Ç¢\2·ÍdÜ—šËz¬‚ ´ÿgÿÿb¬zøO• pHóú?ÃÏþ32²üçdeƒ/×ø÷ÿ/óßÿûÍøç߆ÿ k^Ø ü*À!ÿX”[æ¶$¯ÂuI^Å«’¼ 7E¸¤ðq½fbdþÇÀÀÀðÿÿ?&h¬ÿÿbùóçÛ?†ßL$%?ˆSÿ322 …àæÿÿ0þþû‹ñïŸßðdafgàfåû*Æ!ÿX”[úÄJW%xnŠrKÝGv :€,ÈùÏÀÄÈ Ïåÿÿb~òôísYvfî¿ÿÿ30cw<ã¤Å.(i‚3Yaä}"Ê-s[‚Wắâ5 …›"ÜÒ÷ù9„^áràÿÿÿ˜ÿÃcº‘ñ?–![ÿÿbÙÓ¿Á.¤.nÓÅ+—tY˜¥þBS™þ31"Výýÿ‡ñÏ_È †¿ÿ¡!ÈÄÎÀÍÆ÷]”C‚<Š×$y¯IðÊßå–¹ÏÏ.ôЉ ·ÿAÌ@²„‘é/±‘ÿÿbüÿÿ?Ãëo„½J¢7?þvÙ28Fîß×oß™þ3@2Y™Ø¸Xy? pˆ=á–¾#Á£pC’Wáš8üMQn©üìÂxˆ-‰t^ÿÿbüó÷33óßWïÞófÏNÞ.¡ýVO–Oý¬¯Âui>•KR¼Š×ĸeïpоdfbÆÞâùÿùÃ?hÖi©Ùx‚ÿÿ<¦䨞IEND®B`‚PyQt5_gpl-5.10.1/examples/quick/animation/states/states.qml0000644000076500000240000000744413245231431023742 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { id: page width: 640; height: 480 color: "#343434" Image { id: userIcon x: topLeftRect.x; y: topLeftRect.y source: "qt-logo.png" } Rectangle { id: topLeftRect anchors { left: parent.left; top: parent.top; leftMargin: 10; topMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to the default state, returning the image to // its initial position MouseArea { anchors.fill: parent; onClicked: page.state = '' } } Rectangle { id: middleRightRect anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to 'middleRight' MouseArea { anchors.fill: parent; onClicked: page.state = 'middleRight' } } Rectangle { id: bottomLeftRect anchors { left: parent.left; bottom: parent.bottom; leftMargin: 10; bottomMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to 'bottomLeft' MouseArea { anchors.fill: parent; onClicked: page.state = 'bottomLeft' } } states: [ // ![0] // In state 'middleRight', move the image to middleRightRect State { name: "middleRight" PropertyChanges { target: userIcon; x: middleRightRect.x; y: middleRightRect.y } }, // In state 'bottomLeft', move the image to bottomLeftRect State { name: "bottomLeft" PropertyChanges { target: userIcon; x: bottomLeftRect.x; y: bottomLeftRect.y } } // ![0] ] } PyQt5_gpl-5.10.1/examples/quick/animation/states/transitions.qml0000644000076500000240000001150413245231431025004 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 /* This is exactly the same as states.qml, except that we have appended a set of transitions to apply animations when the item changes between each state. */ Rectangle { id: page width: 640; height: 480 color: "#343434" Image { id: userIcon x: topLeftRect.x; y: topLeftRect.y source: "qt-logo.png" } Rectangle { id: topLeftRect anchors { left: parent.left; top: parent.top; leftMargin: 10; topMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to the default state, returning the image to // its initial position MouseArea { anchors.fill: parent; onClicked: page.state = '' } } Rectangle { id: middleRightRect anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to 'middleRight' MouseArea { anchors.fill: parent; onClicked: page.state = 'middleRight' } } Rectangle { id: bottomLeftRect anchors { left: parent.left; bottom: parent.bottom; leftMargin: 10; bottomMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to 'bottomLeft' MouseArea { anchors.fill: parent; onClicked: page.state = 'bottomLeft' } } states: [ // In state 'middleRight', move the image to middleRightRect State { name: "middleRight" PropertyChanges { target: userIcon; x: middleRightRect.x; y: middleRightRect.y } }, // In state 'bottomLeft', move the image to bottomLeftRect State { name: "bottomLeft" PropertyChanges { target: userIcon; x: bottomLeftRect.x; y: bottomLeftRect.y } } ] // ![0] // Transitions define how the properties change when the item moves between each state transitions: [ // When transitioning to 'middleRight' move x,y over a duration of 1 second, // with OutBounce easing function. Transition { from: "*"; to: "middleRight" NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce; duration: 1000 } }, // When transitioning to 'bottomLeft' move x,y over a duration of 2 seconds, // with InOutQuad easing function. Transition { from: "*"; to: "bottomLeft" NumberAnimation { properties: "x,y"; easing.type: Easing.InOutQuad; duration: 2000 } }, // For any other state changes move x,y linearly over duration of 200ms. Transition { NumberAnimation { properties: "x,y"; duration: 200 } } // ![0] ] } PyQt5_gpl-5.10.1/examples/quick/canvas/0000755000076500000240000000000013245231431017704 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/canvas/bezierCurve/0000755000076500000240000000000013245231431022171 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/canvas/bezierCurve/bezierCurve.qml0000644000076500000240000001117013245231431025171 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import "../contents" Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Bezier Curve"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 property string strokeStyle:"red" property string fillStyle:"red" property int lineWidth:lineWidthCtrl.value property bool fill:true property bool stroke:true property real alpha:alphaCtrl.value property real scaleX : scaleXCtrl.value property real scaleY : scaleYCtrl.value property real rotate : rotateCtrl.value antialiasing: true Behavior on scaleX { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite } } Behavior on scaleY { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } Behavior on rotate { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } onLineWidthChanged:requestPaint(); onFillChanged:requestPaint(); onStrokeChanged:requestPaint(); onAlphaChanged:requestPaint(); onScaleXChanged:requestPaint(); onScaleYChanged:requestPaint(); onRotateChanged:requestPaint(); onPaint: { var ctx = canvas.getContext('2d'); ctx.save(); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.globalAlpha = canvas.alpha; ctx.strokeStyle = canvas.strokeStyle; ctx.fillStyle = canvas.fillStyle; ctx.lineWidth = canvas.lineWidth; ctx.scale(canvas.scaleX, canvas.scaleY); ctx.rotate(canvas.rotate); //! [0] ctx.beginPath(); ctx.moveTo(75,40); ctx.bezierCurveTo(75,37,70,25,50,25); ctx.bezierCurveTo(20,25,20,62.5,20,62.5); ctx.bezierCurveTo(20,80,40,102,75,120); ctx.bezierCurveTo(110,102,130,80,130,62.5); ctx.bezierCurveTo(130,62.5,130,25,100,25); ctx.bezierCurveTo(85,25,75,37,75,40); ctx.closePath(); //! [0] if (canvas.fill) ctx.fill(); if (canvas.stroke) ctx.stroke(); ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:lineWidthCtrl; width:300; height:20; min:1; max:10; init:2; name:"Line width"} Slider {id:scaleXCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleX"} Slider {id:scaleYCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleY"} Slider {id:rotateCtrl; width:300; height:20; min:0; max:Math.PI*2; init:0; name:"Rotate"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } PyQt5_gpl-5.10.1/examples/quick/canvas/canvas.py0000644000076500000240000000474613245231431021544 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys import os.path from PyQt5.QtCore import QUrl from PyQt5.QtGui import QGuiApplication from PyQt5.QtQuick import QQuickView # Access the shared module. sys.path.insert(1, os.path.join( os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'shared')) import shared_rc import canvas_rc app = QGuiApplication(sys.argv) view = QQuickView() view.engine().quit.connect(app.quit) view.setSource(QUrl('qrc:///canvas/canvas.qml')) view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/quick/canvas/canvas.qml0000644000076500000240000000577513245231431021710 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import "../shared" as Examples Item { height: 480 width: 320 Examples.LauncherList { id: ll anchors.fill: parent Component.onCompleted: { addExample("Red heart", "Draws a red heart with bezier curves", Qt.resolvedUrl("bezierCurve/bezierCurve.qml")); addExample("Talk bubble", "Draws a talk bubble with quadratic curves", Qt.resolvedUrl("quadraticCurveTo/quadraticCurveTo.qml")); addExample("Squircle", "Draws a smooth squircle with simple lines", Qt.resolvedUrl("squircle/squircle.qml")); addExample("Rounded rectangle", "Draws a rounded rectangle with lines and arcs", Qt.resolvedUrl("roundedrect/roundedrect.qml")); addExample("Smile face", "Draws a smile face with complex paths", Qt.resolvedUrl("smile/smile.qml")); addExample("Clip", "Shows the canvas clip feature", Qt.resolvedUrl("clip/clip.qml")); addExample("Tiger", "Draw a tiger with a collection of SVG paths", Qt.resolvedUrl("tiger/tiger.qml")); } } } PyQt5_gpl-5.10.1/examples/quick/canvas/canvas.qrc0000644000076500000240000000246713245231431021677 0ustar philstaff00000000000000 canvas.qml bezierCurve/bezierCurve.qml clip/clip.qml contents/Button.qml contents/qt-logo.png contents/ScrollBar.qml contents/Slider.qml contents/TitleBar.qml contents/ToolBar.qml contents/images/button-pressed.png contents/images/button.png contents/images/default.svg contents/images/gloss.png contents/images/lineedit.png contents/images/lineedit.sci contents/images/quit.png contents/images/stripes.png contents/images/titlebar.png contents/images/titlebar.sci contents/images/toolbutton.png contents/images/toolbutton.sci quadraticCurveTo/quadraticCurveTo.qml roundedrect/roundedrect.qml smile/smile.qml squircle/squircle.png squircle/squircle.qml tiger/tiger.js tiger/tiger.qml PyQt5_gpl-5.10.1/examples/quick/canvas/canvas_rc.py0000644000076500000240000274736213245231431022242 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created by: The Resource Compiler for PyQt5 (Qt v5.8.0) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x0b\xfd\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x73\x68\x61\x72\x65\x64\x22\x20\ \x61\x73\x20\x45\x78\x61\x6d\x70\x6c\x65\x73\x0a\x0a\x49\x74\x65\ \x6d\x20\x7b\x0a\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\ \x34\x38\x30\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x33\ \x32\x30\x0a\x20\x20\x20\x20\x45\x78\x61\x6d\x70\x6c\x65\x73\x2e\ \x4c\x61\x75\x6e\x63\x68\x65\x72\x4c\x69\x73\x74\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x6c\x6c\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\ \x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x2e\x6f\x6e\x43\ \x6f\x6d\x70\x6c\x65\x74\x65\x64\x3a\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\x64\x45\x78\x61\x6d\x70\ \x6c\x65\x28\x22\x52\x65\x64\x20\x68\x65\x61\x72\x74\x22\x2c\x20\ \x22\x44\x72\x61\x77\x73\x20\x61\x20\x72\x65\x64\x20\x68\x65\x61\ \x72\x74\x20\x77\x69\x74\x68\x20\x62\x65\x7a\x69\x65\x72\x20\x63\ \x75\x72\x76\x65\x73\x22\x2c\x20\x20\x51\x74\x2e\x72\x65\x73\x6f\ \x6c\x76\x65\x64\x55\x72\x6c\x28\x22\x62\x65\x7a\x69\x65\x72\x43\ \x75\x72\x76\x65\x2f\x62\x65\x7a\x69\x65\x72\x43\x75\x72\x76\x65\ \x2e\x71\x6d\x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x61\x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\ \x22\x54\x61\x6c\x6b\x20\x62\x75\x62\x62\x6c\x65\x22\x2c\x20\x22\ \x44\x72\x61\x77\x73\x20\x61\x20\x74\x61\x6c\x6b\x20\x62\x75\x62\ \x62\x6c\x65\x20\x77\x69\x74\x68\x20\x71\x75\x61\x64\x72\x61\x74\ \x69\x63\x20\x63\x75\x72\x76\x65\x73\x22\x2c\x20\x20\x51\x74\x2e\ \x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\x6c\x28\x22\x71\x75\x61\ \x64\x72\x61\x74\x69\x63\x43\x75\x72\x76\x65\x54\x6f\x2f\x71\x75\ \x61\x64\x72\x61\x74\x69\x63\x43\x75\x72\x76\x65\x54\x6f\x2e\x71\ \x6d\x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x53\ \x71\x75\x69\x72\x63\x6c\x65\x22\x2c\x20\x22\x44\x72\x61\x77\x73\ \x20\x61\x20\x73\x6d\x6f\x6f\x74\x68\x20\x73\x71\x75\x69\x72\x63\ \x6c\x65\x20\x77\x69\x74\x68\x20\x73\x69\x6d\x70\x6c\x65\x20\x6c\ \x69\x6e\x65\x73\x22\x2c\x20\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\ \x76\x65\x64\x55\x72\x6c\x28\x22\x73\x71\x75\x69\x72\x63\x6c\x65\ \x2f\x73\x71\x75\x69\x72\x63\x6c\x65\x2e\x71\x6d\x6c\x22\x29\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\ \x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x52\x6f\x75\x6e\x64\x65\ \x64\x20\x72\x65\x63\x74\x61\x6e\x67\x6c\x65\x22\x2c\x20\x22\x44\ \x72\x61\x77\x73\x20\x61\x20\x72\x6f\x75\x6e\x64\x65\x64\x20\x72\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x77\x69\x74\x68\x20\x6c\x69\ \x6e\x65\x73\x20\x61\x6e\x64\x20\x61\x72\x63\x73\x22\x2c\x20\x20\ \x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\x6c\x28\x22\ \x72\x6f\x75\x6e\x64\x65\x64\x72\x65\x63\x74\x2f\x72\x6f\x75\x6e\ \x64\x65\x64\x72\x65\x63\x74\x2e\x71\x6d\x6c\x22\x29\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x64\x64\x45\ \x78\x61\x6d\x70\x6c\x65\x28\x22\x53\x6d\x69\x6c\x65\x20\x66\x61\ \x63\x65\x22\x2c\x20\x22\x44\x72\x61\x77\x73\x20\x61\x20\x73\x6d\ \x69\x6c\x65\x20\x66\x61\x63\x65\x20\x77\x69\x74\x68\x20\x63\x6f\ \x6d\x70\x6c\x65\x78\x20\x70\x61\x74\x68\x73\x22\x2c\x20\x20\x51\ \x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\x72\x6c\x28\x22\x73\ \x6d\x69\x6c\x65\x2f\x73\x6d\x69\x6c\x65\x2e\x71\x6d\x6c\x22\x29\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\ \x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x43\x6c\x69\x70\x22\ \x2c\x20\x22\x53\x68\x6f\x77\x73\x20\x74\x68\x65\x20\x63\x61\x6e\ \x76\x61\x73\x20\x63\x6c\x69\x70\x20\x66\x65\x61\x74\x75\x72\x65\ \x22\x2c\x20\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x64\x55\ \x72\x6c\x28\x22\x63\x6c\x69\x70\x2f\x63\x6c\x69\x70\x2e\x71\x6d\ \x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x22\x54\x69\ \x67\x65\x72\x22\x2c\x20\x22\x44\x72\x61\x77\x20\x61\x20\x74\x69\ \x67\x65\x72\x20\x77\x69\x74\x68\x20\x61\x20\x63\x6f\x6c\x6c\x65\ \x63\x74\x69\x6f\x6e\x20\x6f\x66\x20\x53\x56\x47\x20\x70\x61\x74\ \x68\x73\x22\x2c\x20\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\ \x64\x55\x72\x6c\x28\x22\x74\x69\x67\x65\x72\x2f\x74\x69\x67\x65\ \x72\x2e\x71\x6d\x6c\x22\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x13\xad\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x63\x6f\x6e\x74\x65\x6e\x74\x73\ \x22\x0a\x49\x74\x65\x6d\x20\x7b\x0a\x20\x20\x69\x64\x3a\x63\x6f\ \x6e\x74\x61\x69\x6e\x65\x72\x0a\x20\x20\x77\x69\x64\x74\x68\x3a\ \x33\x32\x30\x0a\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x34\x38\x30\ \x0a\x0a\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\ \x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x35\x0a\x20\x20\x20\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x20\x66\x6f\ \x6e\x74\x2e\x70\x6f\x69\x6e\x74\x53\x69\x7a\x65\x3a\x31\x35\x3b\ \x20\x74\x65\x78\x74\x3a\x22\x4d\x61\x6b\x65\x73\x20\x73\x71\x75\ \x69\x72\x63\x6c\x65\x20\x69\x63\x6f\x6e\x20\x77\x69\x74\x68\x20\ \x63\x6c\x69\x70\x22\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x68\ \x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\ \x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\ \x6c\x43\x65\x6e\x74\x65\x72\x7d\x0a\x20\x20\x20\x20\x43\x61\x6e\ \x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x63\ \x61\x6e\x76\x61\x73\x0a\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\ \x68\x3a\x33\x32\x30\x0a\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\ \x68\x74\x3a\x32\x38\x30\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\ \x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x73\x74\x72\ \x6f\x6b\x65\x53\x74\x79\x6c\x65\x3a\x22\x62\x6c\x75\x65\x22\x0a\ \x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\ \x74\x72\x69\x6e\x67\x20\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x3a\ \x22\x73\x74\x65\x65\x6c\x62\x6c\x75\x65\x22\x0a\x20\x20\x20\x20\ \x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\x20\x6c\ \x69\x6e\x65\x57\x69\x64\x74\x68\x3a\x32\x0a\x20\x20\x20\x20\x20\ \x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\x20\x6e\x53\ \x69\x7a\x65\x3a\x6e\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\ \x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\ \x65\x61\x6c\x20\x72\x61\x64\x69\x75\x73\x3a\x72\x43\x74\x72\x6c\ \x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\ \x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x66\x69\x6c\x6c\x3a\ \x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x73\x74\x72\x6f\x6b\x65\x3a\ \x66\x61\x6c\x73\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x70\x78\x3a\x78\x43\x74\ \x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\ \x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x70\x79\x3a\ \x79\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\ \x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\ \x61\x6c\x70\x68\x61\x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x2e\ \x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x69\x6d\x61\x67\ \x65\x66\x69\x6c\x65\x3a\x22\x2e\x2e\x2f\x63\x6f\x6e\x74\x65\x6e\ \x74\x73\x2f\x71\x74\x2d\x6c\x6f\x67\x6f\x2e\x70\x6e\x67\x22\x0a\ \x20\x20\x20\x20\x20\x20\x61\x6e\x74\x69\x61\x6c\x69\x61\x73\x69\ \x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x43\ \x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x2e\x6f\x6e\x43\x6f\x6d\x70\x6c\ \x65\x74\x65\x64\x3a\x6c\x6f\x61\x64\x49\x6d\x61\x67\x65\x28\x63\ \x61\x6e\x76\x61\x73\x2e\x69\x6d\x61\x67\x65\x66\x69\x6c\x65\x29\ \x3b\x0a\x0a\x20\x20\x20\x20\x6f\x6e\x41\x6c\x70\x68\x61\x43\x68\ \x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\ \x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\x52\x61\x64\x69\ \x75\x73\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\ \x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\ \x4c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\x68\x61\x6e\x67\x65\x64\ \x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x6f\x6e\x4e\x53\x69\x7a\x65\x43\x68\x61\x6e\ \x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\ \x28\x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\x46\x69\x6c\x6c\x43\x68\ \x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\ \x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\x53\x74\x72\x6f\ \x6b\x65\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\ \x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\ \x50\x78\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\ \x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\ \x50\x79\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\ \x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x0a\x20\ \x20\x20\x20\x6f\x6e\x49\x6d\x61\x67\x65\x4c\x6f\x61\x64\x65\x64\ \x20\x3a\x20\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\ \x29\x3b\x0a\x0a\x20\x20\x20\x20\x6f\x6e\x50\x61\x69\x6e\x74\x3a\ \x20\x73\x71\x75\x63\x69\x72\x6c\x65\x28\x29\x3b\x0a\x0a\x20\x20\ \x20\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x73\x71\x75\x63\x69\ \x72\x6c\x65\x28\x29\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x76\x61\ \x72\x20\x63\x74\x78\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x67\ \x65\x74\x43\x6f\x6e\x74\x65\x78\x74\x28\x22\x32\x64\x22\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\x4e\x20\x3d\x20\x63\ \x61\x6e\x76\x61\x73\x2e\x6e\x53\x69\x7a\x65\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x76\x61\x72\x20\x52\x20\x3d\x20\x63\x61\x6e\x76\x61\ \x73\x2e\x72\x61\x64\x69\x75\x73\x3b\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x4e\x3d\x4d\x61\x74\x68\x2e\x61\x62\x73\x28\x4e\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\x4d\x3d\x4e\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x69\x66\x20\x28\x4e\x3e\x31\x30\x30\x29\x20\ \x4d\x3d\x31\x30\x30\x3b\x0a\x20\x20\x20\x20\x20\x20\x69\x66\x20\ \x28\x4e\x3c\x30\x2e\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x31\ \x29\x20\x4d\x3d\x30\x2e\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\ \x31\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x61\ \x76\x65\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x67\x6c\x6f\x62\x61\x6c\x41\x6c\x70\x68\x61\x20\x3d\x63\x61\x6e\ \x76\x61\x73\x2e\x61\x6c\x70\x68\x61\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x20\x3d\ \x20\x22\x67\x72\x61\x79\x22\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\ \x74\x78\x2e\x66\x69\x6c\x6c\x52\x65\x63\x74\x28\x30\x2c\x20\x30\ \x2c\x20\x63\x61\x6e\x76\x61\x73\x2e\x77\x69\x64\x74\x68\x2c\x20\ \x63\x61\x6e\x76\x61\x73\x2e\x68\x65\x69\x67\x68\x74\x29\x3b\x0a\ \x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\ \x65\x53\x74\x79\x6c\x65\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\ \x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\ \x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x66\x69\x6c\x6c\x53\x74\ \x79\x6c\x65\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6c\ \x69\x6e\x65\x57\x69\x64\x74\x68\x20\x3d\x20\x63\x61\x6e\x76\x61\ \x73\x2e\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x3b\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x62\x65\x67\x69\x6e\x50\x61\x74\ \x68\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\x69\ \x20\x3d\x20\x30\x2c\x20\x78\x2c\x20\x79\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x66\x6f\x72\x20\x28\x69\x3d\x30\x3b\x20\x69\x3c\x28\x32\ \x2a\x52\x2b\x31\x29\x3b\x20\x69\x2b\x2b\x29\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x78\x20\x3d\x20\x4d\x61\x74\x68\x2e\x72\ \x6f\x75\x6e\x64\x28\x69\x2d\x52\x29\x20\x2b\x20\x63\x61\x6e\x76\ \x61\x73\x2e\x70\x78\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x79\x20\x3d\x20\x4d\x61\x74\x68\x2e\x72\x6f\x75\x6e\x64\x28\x4d\ \x61\x74\x68\x2e\x70\x6f\x77\x28\x4d\x61\x74\x68\x2e\x61\x62\x73\ \x28\x4d\x61\x74\x68\x2e\x70\x6f\x77\x28\x52\x2c\x4d\x29\x2d\x4d\ \x61\x74\x68\x2e\x70\x6f\x77\x28\x4d\x61\x74\x68\x2e\x61\x62\x73\ \x28\x69\x2d\x52\x29\x2c\x4d\x29\x29\x2c\x31\x2f\x4d\x29\x29\x20\ \x2b\x20\x63\x61\x6e\x76\x61\x73\x2e\x70\x79\x3b\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x69\x20\x3d\x3d\x20\ \x30\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x6d\x6f\x76\x65\x54\x6f\x28\x78\x2c\x20\x79\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6c\x73\x65\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6c\x69\x6e\ \x65\x54\x6f\x28\x78\x2c\x20\x79\x29\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x66\x6f\x72\x20\x28\x69\ \x3d\x28\x32\x2a\x52\x29\x3b\x20\x69\x3c\x28\x34\x2a\x52\x2b\x31\ \x29\x3b\x20\x69\x2b\x2b\x29\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x78\x20\x3d\x4d\x61\x74\x68\x2e\x72\x6f\x75\x6e\x64\x28\x33\ \x2a\x52\x2d\x69\x29\x2b\x63\x61\x6e\x76\x61\x73\x2e\x70\x78\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x79\x20\x3d\x20\x4d\x61\x74\ \x68\x2e\x72\x6f\x75\x6e\x64\x28\x2d\x4d\x61\x74\x68\x2e\x70\x6f\ \x77\x28\x4d\x61\x74\x68\x2e\x61\x62\x73\x28\x4d\x61\x74\x68\x2e\ \x70\x6f\x77\x28\x52\x2c\x4d\x29\x2d\x4d\x61\x74\x68\x2e\x70\x6f\ \x77\x28\x4d\x61\x74\x68\x2e\x61\x62\x73\x28\x33\x2a\x52\x2d\x69\ \x29\x2c\x4d\x29\x29\x2c\x31\x2f\x4d\x29\x29\x20\x2b\x20\x63\x61\ \x6e\x76\x61\x73\x2e\x70\x79\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x6c\x69\x6e\x65\x54\x6f\x28\x78\x2c\x20\x79\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x63\x6c\x6f\x73\x65\x50\x61\x74\x68\x28\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\x61\x6e\x76\ \x61\x73\x2e\x73\x74\x72\x6f\x6b\x65\x29\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\ \x65\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x69\x66\x20\x28\x63\x61\x6e\x76\x61\x73\x2e\x66\ \x69\x6c\x6c\x29\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x28\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x2f\x2f\x21\x20\x5b\ \x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\x6c\x69\ \x70\x28\x29\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x64\x72\x61\x77\x49\x6d\x61\x67\x65\x28\x63\x61\x6e\x76\x61\x73\ \x2e\x69\x6d\x61\x67\x65\x66\x69\x6c\x65\x2c\x20\x30\x2c\x20\x30\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x2f\x2f\x21\x20\x5b\x30\x5d\ \x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x72\x65\x73\x74\x6f\ \x72\x65\x28\x29\x3b\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x7d\x0a\ \x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x63\x6f\x6e\x74\ \x72\x6f\x6c\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\ \x74\x68\x3a\x33\x32\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\ \x65\x69\x67\x68\x74\x3a\x31\x35\x30\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x33\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\ \x7b\x69\x64\x3a\x6e\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\ \x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\ \x20\x6d\x69\x6e\x3a\x31\x3b\x20\x6d\x61\x78\x3a\x31\x30\x3b\x20\ \x69\x6e\x69\x74\x3a\x34\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x4e\x22\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\ \x65\x72\x20\x7b\x69\x64\x3a\x72\x43\x74\x72\x6c\x3b\x20\x77\x69\ \x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\ \x32\x30\x3b\x20\x6d\x69\x6e\x3a\x33\x30\x3b\x20\x6d\x61\x78\x3a\ \x31\x38\x30\x3b\x20\x69\x6e\x69\x74\x3a\x31\x30\x30\x3b\x20\x6e\ \x61\x6d\x65\x3a\x22\x52\x61\x64\x69\x75\x73\x22\x7d\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\ \x69\x64\x3a\x78\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\ \x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\ \x6d\x69\x6e\x3a\x35\x30\x3b\x20\x6d\x61\x78\x3a\x33\x30\x30\x3b\ \x20\x69\x6e\x69\x74\x3a\x31\x38\x30\x3b\x20\x6e\x61\x6d\x65\x3a\ \x22\x58\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\ \x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x79\x43\x74\x72\x6c\x3b\ \x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\ \x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x33\x30\x3b\x20\x6d\ \x61\x78\x3a\x33\x30\x30\x3b\x20\x69\x6e\x69\x74\x3a\x32\x32\x30\ \x3b\x20\x6e\x61\x6d\x65\x3a\x22\x59\x22\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\ \x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\ \x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\ \x3b\x20\x6d\x69\x6e\x3a\x30\x3b\x20\x6d\x61\x78\x3a\x31\x3b\x20\ \x69\x6e\x69\x74\x3a\x31\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x41\x6c\ \x70\x68\x61\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\ \x20\x20\x20\x20\x7d\x0a\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x13\xce\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x63\x6f\x6e\x74\x65\x6e\x74\x73\ \x22\x0a\x49\x74\x65\x6d\x20\x7b\x0a\x20\x20\x69\x64\x3a\x63\x6f\ \x6e\x74\x61\x69\x6e\x65\x72\x0a\x20\x20\x77\x69\x64\x74\x68\x3a\ \x33\x32\x30\x0a\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x34\x38\x30\ \x0a\x0a\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\ \x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x35\x0a\x20\x20\x20\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x20\x66\x6f\ \x6e\x74\x2e\x70\x6f\x69\x6e\x74\x53\x69\x7a\x65\x3a\x31\x35\x3b\ \x20\x74\x65\x78\x74\x3a\x22\x52\x6f\x75\x6e\x64\x65\x64\x20\x72\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x22\x3b\x20\x61\x6e\x63\x68\x6f\ \x72\x73\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x3a\x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\ \x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x7d\x0a\x20\x20\x20\ \x20\x43\x61\x6e\x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x69\x64\x3a\x63\x61\x6e\x76\x61\x73\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x33\x32\x30\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x38\x30\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x74\x69\x61\x6c\x69\ \x61\x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\ \x74\x20\x72\x61\x64\x69\x75\x73\x3a\x20\x72\x43\x74\x72\x6c\x2e\ \x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\x20\x72\x65\x63\x74\x78\ \x3a\x20\x72\x78\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\ \x69\x6e\x74\x20\x72\x65\x63\x74\x79\x3a\x20\x72\x79\x43\x74\x72\ \x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\x20\x72\x65\x63\ \x74\x57\x69\x64\x74\x68\x3a\x20\x77\x69\x64\x74\x68\x20\x2d\x20\ \x32\x2a\x72\x65\x63\x74\x78\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\x20\x72\x65\x63\ \x74\x48\x65\x69\x67\x68\x74\x3a\x20\x68\x65\x69\x67\x68\x74\x20\ \x2d\x20\x32\x2a\x72\x65\x63\x74\x79\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\ \x67\x20\x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x3a\x22\x62\ \x6c\x75\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\ \x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x66\x69\x6c\ \x6c\x53\x74\x79\x6c\x65\x3a\x22\x73\x74\x65\x65\x6c\x62\x6c\x75\ \x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x20\x69\x6e\x74\x20\x6c\x69\x6e\x65\x57\x69\x64\x74\ \x68\x3a\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\x74\x72\x6c\x2e\ \x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x66\x69\x6c\x6c\ \x3a\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x73\x74\x72\x6f\ \x6b\x65\x3a\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x61\x6c\ \x70\x68\x61\x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x2e\x76\x61\ \x6c\x75\x65\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x4c\ \x69\x6e\x65\x57\x69\x64\x74\x68\x43\x68\x61\x6e\x67\x65\x64\x3a\ \x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x46\x69\x6c\x6c\x43\x68\ \x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\ \x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\ \x53\x74\x72\x6f\x6b\x65\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\ \x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x6f\x6e\x52\x61\x64\x69\x75\x73\x43\x68\ \x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\ \x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\ \x52\x65\x63\x74\x78\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\ \x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x6f\x6e\x52\x65\x63\x74\x79\x43\x68\x61\x6e\ \x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\ \x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x41\x6c\ \x70\x68\x61\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\ \x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x6f\x6e\x50\x61\x69\x6e\x74\x3a\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\x63\ \x74\x78\x20\x3d\x20\x67\x65\x74\x43\x6f\x6e\x74\x65\x78\x74\x28\ \x22\x32\x64\x22\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x74\x78\x2e\x73\x61\x76\x65\x28\x29\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\ \x6c\x65\x61\x72\x52\x65\x63\x74\x28\x30\x2c\x30\x2c\x63\x61\x6e\ \x76\x61\x73\x2e\x77\x69\x64\x74\x68\x2c\x20\x63\x61\x6e\x76\x61\ \x73\x2e\x68\x65\x69\x67\x68\x74\x29\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\ \x65\x53\x74\x79\x6c\x65\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\ \x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6c\x69\x6e\ \x65\x57\x69\x64\x74\x68\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\ \x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x53\x74\ \x79\x6c\x65\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x66\x69\x6c\ \x6c\x53\x74\x79\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x74\x78\x2e\x67\x6c\x6f\x62\x61\x6c\x41\x6c\x70\ \x68\x61\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x61\x6c\x70\x68\ \x61\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x62\x65\x67\x69\x6e\x50\x61\x74\x68\x28\x29\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6d\ \x6f\x76\x65\x54\x6f\x28\x72\x65\x63\x74\x78\x2b\x72\x61\x64\x69\ \x75\x73\x2c\x72\x65\x63\x74\x79\x29\x3b\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x74\x6f\ \x70\x20\x73\x69\x64\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x74\x78\x2e\x6c\x69\x6e\x65\x54\x6f\x28\x72\x65\ \x63\x74\x78\x2b\x72\x65\x63\x74\x57\x69\x64\x74\x68\x2d\x72\x61\ \x64\x69\x75\x73\x2c\x72\x65\x63\x74\x79\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x64\x72\x61\x77\ \x20\x74\x6f\x70\x20\x72\x69\x67\x68\x74\x20\x63\x6f\x72\x6e\x65\ \x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x61\x72\x63\x54\x6f\x28\x72\x65\x63\x74\x78\x2b\x72\x65\ \x63\x74\x57\x69\x64\x74\x68\x2c\x72\x65\x63\x74\x79\x2c\x72\x65\ \x63\x74\x78\x2b\x72\x65\x63\x74\x57\x69\x64\x74\x68\x2c\x72\x65\ \x63\x74\x79\x2b\x72\x61\x64\x69\x75\x73\x2c\x72\x61\x64\x69\x75\ \x73\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x74\x78\x2e\x6c\x69\x6e\x65\x54\x6f\x28\x72\x65\x63\x74\x78\ \x2b\x72\x65\x63\x74\x57\x69\x64\x74\x68\x2c\x72\x65\x63\x74\x79\ \x2b\x72\x65\x63\x74\x48\x65\x69\x67\x68\x74\x2d\x72\x61\x64\x69\ \x75\x73\x29\x3b\x20\x20\x20\x20\x2f\x2f\x20\x72\x69\x67\x68\x74\ \x20\x73\x69\x64\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x2f\x2f\x20\x64\x72\x61\x77\x20\x62\x6f\x74\x74\x6f\x6d\ \x20\x72\x69\x67\x68\x74\x20\x63\x6f\x72\x6e\x65\x72\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x61\x72\ \x63\x54\x6f\x28\x72\x65\x63\x74\x78\x2b\x72\x65\x63\x74\x57\x69\ \x64\x74\x68\x2c\x72\x65\x63\x74\x79\x2b\x72\x65\x63\x74\x48\x65\ \x69\x67\x68\x74\x2c\x72\x65\x63\x74\x78\x2b\x72\x65\x63\x74\x57\ \x69\x64\x74\x68\x2d\x72\x61\x64\x69\x75\x73\x2c\x72\x65\x63\x74\ \x79\x2b\x72\x65\x63\x74\x48\x65\x69\x67\x68\x74\x2c\x72\x61\x64\ \x69\x75\x73\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x63\x74\x78\x2e\x6c\x69\x6e\x65\x54\x6f\x28\x72\x65\x63\ \x74\x78\x2b\x72\x61\x64\x69\x75\x73\x2c\x72\x65\x63\x74\x79\x2b\ \x72\x65\x63\x74\x48\x65\x69\x67\x68\x74\x29\x3b\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x62\x6f\x74\ \x74\x6f\x6d\x20\x73\x69\x64\x65\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x2f\x2f\x20\x64\x72\x61\x77\x20\x62\x6f\x74\ \x74\x6f\x6d\x20\x6c\x65\x66\x74\x20\x63\x6f\x72\x6e\x65\x72\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x61\x72\x63\x54\x6f\x28\x72\x65\x63\x74\x78\x2c\x72\x65\x63\x74\ \x79\x2b\x72\x65\x63\x74\x48\x65\x69\x67\x68\x74\x2c\x72\x65\x63\ \x74\x78\x2c\x72\x65\x63\x74\x79\x2b\x72\x65\x63\x74\x48\x65\x69\ \x67\x68\x74\x2d\x72\x61\x64\x69\x75\x73\x2c\x72\x61\x64\x69\x75\ \x73\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x74\x78\x2e\x6c\x69\x6e\x65\x54\x6f\x28\x72\x65\x63\x74\x78\ \x2c\x72\x65\x63\x74\x79\x2b\x72\x61\x64\x69\x75\x73\x29\x3b\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x2f\x2f\x20\x6c\x65\x66\x74\x20\x73\x69\x64\x65\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x64\x72\x61\x77\ \x20\x74\x6f\x70\x20\x6c\x65\x66\x74\x20\x63\x6f\x72\x6e\x65\x72\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\ \x2e\x61\x72\x63\x54\x6f\x28\x72\x65\x63\x74\x78\x2c\x72\x65\x63\ \x74\x79\x2c\x72\x65\x63\x74\x78\x2b\x72\x61\x64\x69\x75\x73\x2c\ \x72\x65\x63\x74\x79\x2c\x72\x61\x64\x69\x75\x73\x29\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\ \x6c\x6f\x73\x65\x50\x61\x74\x68\x28\x29\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\x61\x6e\x76\ \x61\x73\x2e\x66\x69\x6c\x6c\x29\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\ \x6c\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x69\x66\x20\x28\x63\x61\x6e\x76\x61\x73\x2e\x73\x74\x72\x6f\ \x6b\x65\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\x65\x28\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x72\x65\x73\x74\x6f\x72\x65\x28\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\ \x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x69\x64\x3a\x63\x6f\x6e\x74\x72\x6f\x6c\ \x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\ \x33\x32\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\ \x68\x74\x3a\x31\x35\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x43\ \x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x33\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\ \x3a\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\x74\x72\x6c\x3b\x20\ \x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\ \x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x31\x3b\x20\x6d\x61\x78\ \x3a\x31\x30\x3b\x20\x69\x6e\x69\x74\x3a\x32\x3b\x20\x6e\x61\x6d\ \x65\x3a\x22\x4c\x69\x6e\x65\x20\x77\x69\x64\x74\x68\x22\x7d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\ \x20\x7b\x69\x64\x3a\x72\x78\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\ \x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\ \x30\x3b\x20\x6d\x69\x6e\x3a\x35\x3b\x20\x6d\x61\x78\x3a\x33\x30\ \x3b\x20\x69\x6e\x69\x74\x3a\x31\x30\x3b\x20\x6e\x61\x6d\x65\x3a\ \x22\x72\x65\x63\x74\x78\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x72\x79\ \x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\ \x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\ \x35\x3b\x20\x6d\x61\x78\x3a\x33\x30\x3b\x20\x69\x6e\x69\x74\x3a\ \x31\x30\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x72\x65\x63\x74\x79\x22\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\ \x65\x72\x20\x7b\x69\x64\x3a\x72\x43\x74\x72\x6c\x3b\x20\x77\x69\ \x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\ \x32\x30\x3b\x20\x6d\x69\x6e\x3a\x31\x30\x3b\x20\x6d\x61\x78\x3a\ \x31\x30\x30\x3b\x20\x69\x6e\x69\x74\x3a\x34\x30\x3b\x20\x6e\x61\ \x6d\x65\x3a\x22\x52\x61\x64\x69\x75\x73\x22\x7d\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\ \x64\x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\ \x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\ \x30\x3b\x20\x6d\x69\x6e\x3a\x30\x3b\x20\x6d\x61\x78\x3a\x31\x3b\ \x20\x69\x6e\x69\x74\x3a\x31\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x41\ \x6c\x70\x68\x61\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\ \x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x12\x78\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x63\x6f\x6e\x74\x65\x6e\x74\x73\ \x22\x0a\x49\x74\x65\x6d\x20\x7b\x0a\x20\x20\x69\x64\x3a\x63\x6f\ \x6e\x74\x61\x69\x6e\x65\x72\x0a\x20\x20\x77\x69\x64\x74\x68\x3a\ \x33\x32\x30\x0a\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x34\x38\x30\ \x0a\x0a\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\ \x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x35\x0a\x20\x20\x20\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x20\x66\x6f\ \x6e\x74\x2e\x70\x6f\x69\x6e\x74\x53\x69\x7a\x65\x3a\x31\x35\x3b\ \x20\x74\x65\x78\x74\x3a\x22\x42\x65\x7a\x69\x65\x72\x20\x43\x75\ \x72\x76\x65\x22\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x68\x6f\ \x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x70\ \x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\ \x43\x65\x6e\x74\x65\x72\x7d\x0a\x0a\x20\x20\x20\x20\x43\x61\x6e\ \x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x63\ \x61\x6e\x76\x61\x73\x0a\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\ \x68\x3a\x33\x32\x30\x0a\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\ \x68\x74\x3a\x32\x38\x30\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\ \x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x73\x74\x72\ \x6f\x6b\x65\x53\x74\x79\x6c\x65\x3a\x22\x72\x65\x64\x22\x0a\x20\ \x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\ \x72\x69\x6e\x67\x20\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x3a\x22\ \x72\x65\x64\x22\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x20\x69\x6e\x74\x20\x6c\x69\x6e\x65\x57\x69\x64\x74\ \x68\x3a\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\x74\x72\x6c\x2e\ \x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x66\x69\x6c\x6c\x3a\x74\ \x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\ \x74\x79\x20\x62\x6f\x6f\x6c\x20\x73\x74\x72\x6f\x6b\x65\x3a\x74\ \x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\ \x74\x79\x20\x72\x65\x61\x6c\x20\x61\x6c\x70\x68\x61\x3a\x61\x6c\ \x70\x68\x61\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\ \x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\ \x6c\x20\x73\x63\x61\x6c\x65\x58\x20\x3a\x20\x73\x63\x61\x6c\x65\ \x58\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\ \x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\ \x73\x63\x61\x6c\x65\x59\x20\x3a\x20\x73\x63\x61\x6c\x65\x59\x43\ \x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x72\x6f\ \x74\x61\x74\x65\x20\x3a\x20\x72\x6f\x74\x61\x74\x65\x43\x74\x72\ \x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x61\x6e\ \x74\x69\x61\x6c\x69\x61\x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\ \x0a\x0a\x20\x20\x20\x20\x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\ \x20\x6f\x6e\x20\x73\x63\x61\x6c\x65\x58\x20\x7b\x20\x53\x70\x72\ \x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x73\ \x70\x72\x69\x6e\x67\x3a\x20\x32\x3b\x20\x64\x61\x6d\x70\x69\x6e\ \x67\x3a\x20\x30\x2e\x32\x3b\x20\x6c\x6f\x6f\x70\x73\x3a\x41\x6e\ \x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\x69\x6e\x69\x74\x65\ \x20\x7d\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x42\x65\x68\x61\x76\ \x69\x6f\x72\x20\x6f\x6e\x20\x73\x63\x61\x6c\x65\x59\x20\x7b\x20\ \x53\x70\x72\x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\ \x7b\x20\x73\x70\x72\x69\x6e\x67\x3a\x20\x32\x3b\x20\x64\x61\x6d\ \x70\x69\x6e\x67\x3a\x20\x30\x2e\x32\x3b\x20\x6c\x6f\x6f\x70\x73\ \x3a\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\x69\x6e\ \x69\x74\x65\x7d\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x42\x65\x68\ \x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x72\x6f\x74\x61\x74\x65\x20\ \x7b\x20\x53\x70\x72\x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\ \x6e\x20\x7b\x20\x73\x70\x72\x69\x6e\x67\x3a\x20\x32\x3b\x20\x64\ \x61\x6d\x70\x69\x6e\x67\x3a\x20\x30\x2e\x32\x3b\x20\x6c\x6f\x6f\ \x70\x73\x3a\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\ \x69\x6e\x69\x74\x65\x7d\x20\x7d\x0a\x0a\x20\x20\x20\x20\x6f\x6e\ \x4c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\x68\x61\x6e\x67\x65\x64\ \x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x6f\x6e\x46\x69\x6c\x6c\x43\x68\x61\x6e\x67\ \x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\ \x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\x53\x74\x72\x6f\x6b\x65\x43\ \x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\ \x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\x41\x6c\x70\ \x68\x61\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\ \x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x6f\x6e\ \x53\x63\x61\x6c\x65\x58\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\ \x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\ \x20\x20\x6f\x6e\x53\x63\x61\x6c\x65\x59\x43\x68\x61\x6e\x67\x65\ \x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\ \x3b\x0a\x20\x20\x20\x20\x6f\x6e\x52\x6f\x74\x61\x74\x65\x43\x68\ \x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\ \x6e\x74\x28\x29\x3b\x0a\x0a\x20\x20\x20\x20\x6f\x6e\x50\x61\x69\ \x6e\x74\x3a\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\ \x63\x74\x78\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x67\x65\x74\ \x43\x6f\x6e\x74\x65\x78\x74\x28\x27\x32\x64\x27\x29\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x61\x76\x65\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\x6c\x65\x61\x72\ \x52\x65\x63\x74\x28\x30\x2c\x20\x30\x2c\x20\x63\x61\x6e\x76\x61\ \x73\x2e\x77\x69\x64\x74\x68\x2c\x20\x63\x61\x6e\x76\x61\x73\x2e\ \x68\x65\x69\x67\x68\x74\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\ \x74\x78\x2e\x67\x6c\x6f\x62\x61\x6c\x41\x6c\x70\x68\x61\x20\x3d\ \x20\x63\x61\x6e\x76\x61\x73\x2e\x61\x6c\x70\x68\x61\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\x65\x53\ \x74\x79\x6c\x65\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x73\x74\ \x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x20\x3d\ \x20\x63\x61\x6e\x76\x61\x73\x2e\x66\x69\x6c\x6c\x53\x74\x79\x6c\ \x65\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6c\x69\x6e\ \x65\x57\x69\x64\x74\x68\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\ \x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x73\x63\x61\x6c\x65\x28\x63\x61\x6e\x76\x61\ \x73\x2e\x73\x63\x61\x6c\x65\x58\x2c\x20\x63\x61\x6e\x76\x61\x73\ \x2e\x73\x63\x61\x6c\x65\x59\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x63\x74\x78\x2e\x72\x6f\x74\x61\x74\x65\x28\x63\x61\x6e\x76\x61\ \x73\x2e\x72\x6f\x74\x61\x74\x65\x29\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x63\ \x74\x78\x2e\x62\x65\x67\x69\x6e\x50\x61\x74\x68\x28\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6d\x6f\x76\x65\x54\x6f\ \x28\x37\x35\x2c\x34\x30\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\ \x74\x78\x2e\x62\x65\x7a\x69\x65\x72\x43\x75\x72\x76\x65\x54\x6f\ \x28\x37\x35\x2c\x33\x37\x2c\x37\x30\x2c\x32\x35\x2c\x35\x30\x2c\ \x32\x35\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x62\ \x65\x7a\x69\x65\x72\x43\x75\x72\x76\x65\x54\x6f\x28\x32\x30\x2c\ \x32\x35\x2c\x32\x30\x2c\x36\x32\x2e\x35\x2c\x32\x30\x2c\x36\x32\ \x2e\x35\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x62\ \x65\x7a\x69\x65\x72\x43\x75\x72\x76\x65\x54\x6f\x28\x32\x30\x2c\ \x38\x30\x2c\x34\x30\x2c\x31\x30\x32\x2c\x37\x35\x2c\x31\x32\x30\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x62\x65\x7a\ \x69\x65\x72\x43\x75\x72\x76\x65\x54\x6f\x28\x31\x31\x30\x2c\x31\ \x30\x32\x2c\x31\x33\x30\x2c\x38\x30\x2c\x31\x33\x30\x2c\x36\x32\ \x2e\x35\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x62\ \x65\x7a\x69\x65\x72\x43\x75\x72\x76\x65\x54\x6f\x28\x31\x33\x30\ \x2c\x36\x32\x2e\x35\x2c\x31\x33\x30\x2c\x32\x35\x2c\x31\x30\x30\ \x2c\x32\x35\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x62\x65\x7a\x69\x65\x72\x43\x75\x72\x76\x65\x54\x6f\x28\x38\x35\ \x2c\x32\x35\x2c\x37\x35\x2c\x33\x37\x2c\x37\x35\x2c\x34\x30\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\x6c\x6f\x73\ \x65\x50\x61\x74\x68\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x2f\ \x2f\x21\x20\x5b\x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x69\x66\x20\ \x28\x63\x61\x6e\x76\x61\x73\x2e\x66\x69\x6c\x6c\x29\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x28\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\x61\x6e\ \x76\x61\x73\x2e\x73\x74\x72\x6f\x6b\x65\x29\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\x65\x28\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x72\x65\x73\ \x74\x6f\x72\x65\x28\x29\x3b\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\ \x7d\x0a\x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x63\x6f\ \x6e\x74\x72\x6f\x6c\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\ \x69\x64\x74\x68\x3a\x33\x32\x30\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x68\x65\x69\x67\x68\x74\x3a\x31\x35\x30\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x33\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\ \x72\x20\x7b\x69\x64\x3a\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\ \x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\ \x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x31\ \x3b\x20\x6d\x61\x78\x3a\x31\x30\x3b\x20\x69\x6e\x69\x74\x3a\x32\ \x3b\x20\x6e\x61\x6d\x65\x3a\x22\x4c\x69\x6e\x65\x20\x77\x69\x64\ \x74\x68\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\ \x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x73\x63\x61\x6c\x65\x58\ \x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\ \x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\ \x30\x2e\x31\x3b\x20\x6d\x61\x78\x3a\x31\x30\x3b\x20\x69\x6e\x69\ \x74\x3a\x31\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x53\x63\x61\x6c\x65\ \x58\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\ \x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x73\x63\x61\x6c\x65\x59\x43\ \x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\ \x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\ \x2e\x31\x3b\x20\x6d\x61\x78\x3a\x31\x30\x3b\x20\x69\x6e\x69\x74\ \x3a\x31\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x53\x63\x61\x6c\x65\x59\ \x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\ \x64\x65\x72\x20\x7b\x69\x64\x3a\x72\x6f\x74\x61\x74\x65\x43\x74\ \x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\ \x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\x3b\ \x20\x6d\x61\x78\x3a\x4d\x61\x74\x68\x2e\x50\x49\x2a\x32\x3b\x20\ \x69\x6e\x69\x74\x3a\x30\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x52\x6f\ \x74\x61\x74\x65\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x61\x6c\x70\x68\ \x61\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\ \x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\ \x3a\x30\x3b\x20\x6d\x61\x78\x3a\x31\x3b\x20\x69\x6e\x69\x74\x3a\ \x31\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x41\x6c\x70\x68\x61\x22\x7d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\ \x0a\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x13\x00\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x63\x6f\x6e\x74\x65\x6e\x74\x73\ \x22\x0a\x69\x6d\x70\x6f\x72\x74\x20\x22\x74\x69\x67\x65\x72\x2e\ \x6a\x73\x22\x20\x61\x73\x20\x54\x69\x67\x65\x72\x0a\x49\x74\x65\ \x6d\x20\x7b\x0a\x20\x20\x69\x64\x3a\x63\x6f\x6e\x74\x61\x69\x6e\ \x65\x72\x0a\x20\x20\x77\x69\x64\x74\x68\x3a\x33\x32\x30\x0a\x20\ \x20\x68\x65\x69\x67\x68\x74\x3a\x34\x38\x30\x0a\x0a\x20\x20\x43\ \x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\x20\x73\x70\x61\x63\ \x69\x6e\x67\x3a\x35\x0a\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\ \x73\x2e\x66\x69\x6c\x6c\x3a\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\ \x20\x20\x54\x65\x78\x74\x20\x7b\x20\x66\x6f\x6e\x74\x2e\x70\x6f\ \x69\x6e\x74\x53\x69\x7a\x65\x3a\x31\x35\x3b\x20\x74\x65\x78\x74\ \x3a\x22\x54\x69\x67\x65\x72\x20\x77\x69\x74\x68\x20\x53\x56\x47\ \x20\x70\x61\x74\x68\x22\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\ \x3a\x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\ \x61\x6c\x43\x65\x6e\x74\x65\x72\x7d\x0a\x0a\x20\x20\x20\x20\x43\ \x61\x6e\x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x69\x64\x3a\x63\x61\x6e\x76\x61\x73\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x77\x69\x64\x74\x68\x3a\x33\x32\x30\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x38\x30\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x61\x6e\x74\x69\x61\x6c\x69\x61\x73\ \x69\x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\ \x67\x20\x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x3a\x22\x73\ \x74\x65\x65\x6c\x62\x6c\x75\x65\x22\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\ \x67\x20\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x3a\x22\x79\x65\x6c\ \x6c\x6f\x77\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\ \x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x66\x69\x6c\x6c\x3a\ \x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\ \x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x73\x74\x72\x6f\x6b\ \x65\x3a\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\ \x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x61\x6c\x70\ \x68\x61\x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x2e\x76\x61\x6c\ \x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x20\x72\x65\x61\x6c\x20\x73\x63\x61\x6c\x65\x58\x20\ \x3a\x20\x73\x63\x61\x6c\x65\x58\x43\x74\x72\x6c\x2e\x76\x61\x6c\ \x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x20\x72\x65\x61\x6c\x20\x73\x63\x61\x6c\x65\x59\x20\ \x3a\x20\x73\x63\x61\x6c\x65\x59\x43\x74\x72\x6c\x2e\x76\x61\x6c\ \x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x20\x72\x65\x61\x6c\x20\x72\x6f\x74\x61\x74\x65\x20\ \x3a\x20\x72\x6f\x74\x61\x74\x65\x43\x74\x72\x6c\x2e\x76\x61\x6c\ \x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x20\x69\x6e\x74\x20\x66\x72\x61\x6d\x65\x3a\x30\x0a\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x46\x69\x6c\x6c\x43\ \x68\x61\x6e\x67\x65\x64\x3a\x20\x72\x65\x71\x75\x65\x73\x74\x50\ \x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x6f\x6e\x53\x74\x72\x6f\x6b\x65\x43\x68\x61\x6e\x67\x65\x64\x3a\ \x20\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x41\x6c\x70\x68\x61\ \x43\x68\x61\x6e\x67\x65\x64\x3a\x20\x72\x65\x71\x75\x65\x73\x74\ \x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x6f\x6e\x53\x63\x61\x6c\x65\x58\x43\x68\x61\x6e\x67\x65\x64\ \x3a\x20\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x53\x63\x61\x6c\ \x65\x59\x43\x68\x61\x6e\x67\x65\x64\x3a\x20\x72\x65\x71\x75\x65\ \x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x6f\x6e\x52\x6f\x74\x61\x74\x65\x43\x68\x61\x6e\x67\ \x65\x64\x3a\x20\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\ \x28\x29\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x50\ \x61\x69\x6e\x74\x65\x64\x20\x3a\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x63\x61\x6e\x76\x61\x73\x2e\x66\x72\ \x61\x6d\x65\x2b\x2b\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x69\x66\x20\x28\x63\x61\x6e\x76\x61\x73\x2e\x66\x72\ \x61\x6d\x65\x20\x3c\x20\x54\x69\x67\x65\x72\x2e\x74\x69\x67\x65\ \x72\x2e\x6c\x65\x6e\x67\x74\x68\x29\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x71\x75\x65\x73\ \x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x50\x61\ \x69\x6e\x74\x3a\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x76\x61\x72\x20\x63\x74\x78\x20\x3d\x20\x63\x61\x6e\ \x76\x61\x73\x2e\x67\x65\x74\x43\x6f\x6e\x74\x65\x78\x74\x28\x27\ \x32\x64\x27\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x63\x74\x78\x2e\x73\x61\x76\x65\x28\x29\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\x6c\ \x65\x61\x72\x52\x65\x63\x74\x28\x30\x2c\x20\x30\x2c\x20\x63\x61\ \x6e\x76\x61\x73\x2e\x77\x69\x64\x74\x68\x2c\x20\x63\x61\x6e\x76\ \x61\x73\x2e\x68\x65\x69\x67\x68\x74\x29\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x67\x6c\x6f\x62\ \x61\x6c\x41\x6c\x70\x68\x61\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\ \x2e\x61\x6c\x70\x68\x61\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x73\x63\x61\x6c\x65\x28\x63\x61\ \x6e\x76\x61\x73\x2e\x73\x63\x61\x6c\x65\x58\x2c\x20\x63\x61\x6e\ \x76\x61\x73\x2e\x73\x63\x61\x6c\x65\x59\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x72\x6f\x74\ \x61\x74\x65\x28\x63\x61\x6e\x76\x61\x73\x2e\x72\x6f\x74\x61\x74\ \x65\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x74\x78\x2e\x67\x6c\x6f\x62\x61\x6c\x43\x6f\x6d\x70\x6f\x73\ \x69\x74\x65\x4f\x70\x65\x72\x61\x74\x69\x6f\x6e\x20\x3d\x20\x22\ \x73\x6f\x75\x72\x63\x65\x2d\x6f\x76\x65\x72\x22\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x74\x72\ \x61\x6e\x73\x6c\x61\x74\x65\x28\x63\x61\x6e\x76\x61\x73\x2e\x77\ \x69\x64\x74\x68\x2f\x32\x2c\x20\x63\x61\x6e\x76\x61\x73\x2e\x68\ \x65\x69\x67\x68\x74\x2f\x32\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\x65\ \x53\x74\x79\x6c\x65\x20\x3d\x20\x51\x74\x2e\x72\x67\x62\x61\x28\ \x2e\x33\x2c\x20\x2e\x33\x2c\x20\x2e\x33\x2c\x31\x29\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6c\ \x69\x6e\x65\x57\x69\x64\x74\x68\x20\x3d\x20\x31\x3b\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x21\x20\x5b\ \x30\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\ \x6f\x72\x20\x28\x76\x61\x72\x20\x69\x20\x3d\x20\x30\x3b\x20\x69\ \x20\x3c\x20\x63\x61\x6e\x76\x61\x73\x2e\x66\x72\x61\x6d\x65\x20\ \x26\x26\x20\x69\x20\x3c\x20\x54\x69\x67\x65\x72\x2e\x74\x69\x67\ \x65\x72\x2e\x6c\x65\x6e\x67\x74\x68\x3b\x20\x69\x2b\x2b\x29\x20\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x69\x66\x20\x28\x54\x69\x67\x65\x72\x2e\x74\x69\x67\x65\ \x72\x5b\x69\x5d\x2e\x77\x69\x64\x74\x68\x20\x21\x3d\x20\x75\x6e\ \x64\x65\x66\x69\x6e\x65\x64\x29\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\ \x2e\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x20\x3d\x20\x54\x69\x67\ \x65\x72\x2e\x74\x69\x67\x65\x72\x5b\x69\x5d\x2e\x77\x69\x64\x74\ \x68\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x69\x66\x20\x28\x54\x69\x67\x65\x72\x2e\x74\x69\ \x67\x65\x72\x5b\x69\x5d\x2e\x70\x61\x74\x68\x20\x21\x3d\x20\x75\ \x6e\x64\x65\x66\x69\x6e\x65\x64\x29\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x70\x61\x74\x68\x20\x3d\x20\x54\x69\x67\x65\x72\x2e\x74\ \x69\x67\x65\x72\x5b\x69\x5d\x2e\x70\x61\x74\x68\x3b\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\ \x66\x20\x28\x54\x69\x67\x65\x72\x2e\x74\x69\x67\x65\x72\x5b\x69\ \x5d\x2e\x66\x69\x6c\x6c\x20\x21\x3d\x20\x75\x6e\x64\x65\x66\x69\ \x6e\x65\x64\x29\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\ \x69\x6c\x6c\x53\x74\x79\x6c\x65\x20\x3d\x20\x54\x69\x67\x65\x72\ \x2e\x74\x69\x67\x65\x72\x5b\x69\x5d\x2e\x66\x69\x6c\x6c\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x28\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x69\x66\x20\x28\x54\x69\x67\x65\x72\x2e\x74\x69\x67\ \x65\x72\x5b\x69\x5d\x2e\x73\x74\x72\x6f\x6b\x65\x20\x21\x3d\x20\ \x75\x6e\x64\x65\x66\x69\x6e\x65\x64\x29\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\ \x20\x3d\x20\x54\x69\x67\x65\x72\x2e\x74\x69\x67\x65\x72\x5b\x69\ \x5d\x2e\x73\x74\x72\x6f\x6b\x65\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x73\x74\x72\x6f\x6b\x65\x28\x29\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x21\x20\x5b\x30\x5d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x72\x65\x73\x74\x6f\x72\x65\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x52\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x69\x64\x3a\x63\x6f\x6e\x74\x72\x6f\x6c\x73\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x33\x32\x30\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\ \x31\x35\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x43\x6f\x6c\x75\ \x6d\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\ \x70\x61\x63\x69\x6e\x67\x3a\x33\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x73\x63\ \x61\x6c\x65\x58\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\ \x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\ \x6d\x69\x6e\x3a\x30\x2e\x31\x3b\x20\x6d\x61\x78\x3a\x31\x30\x3b\ \x20\x69\x6e\x69\x74\x3a\x30\x2e\x35\x3b\x20\x6e\x61\x6d\x65\x3a\ \x22\x53\x63\x61\x6c\x65\x58\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x73\ \x63\x61\x6c\x65\x59\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\ \x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\ \x20\x6d\x69\x6e\x3a\x30\x2e\x31\x3b\x20\x6d\x61\x78\x3a\x31\x30\ \x3b\x20\x69\x6e\x69\x74\x3a\x30\x2e\x35\x3b\x20\x6e\x61\x6d\x65\ \x3a\x22\x53\x63\x61\x6c\x65\x59\x22\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\ \x72\x6f\x74\x61\x74\x65\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\ \x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\ \x3b\x20\x6d\x69\x6e\x3a\x30\x3b\x20\x6d\x61\x78\x3a\x4d\x61\x74\ \x68\x2e\x50\x49\x2a\x32\x3b\x20\x69\x6e\x69\x74\x3a\x30\x3b\x20\ \x6e\x61\x6d\x65\x3a\x22\x52\x6f\x74\x61\x74\x65\x22\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\ \x7b\x69\x64\x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x3b\x20\x77\ \x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\ \x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\x3b\x20\x6d\x61\x78\x3a\ \x31\x3b\x20\x69\x6e\x69\x74\x3a\x31\x3b\x20\x6e\x61\x6d\x65\x3a\ \x22\x41\x6c\x70\x68\x61\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x7d\x0a\x7d\x0a\ \x00\x01\x6d\xec\ \x76\ \x61\x72\x20\x74\x69\x67\x65\x72\x20\x3d\x20\x5b\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\ \x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\ \x31\x37\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x2d\x31\x32\x32\x2e\x33\x30\x34\x20\x38\x34\x2e\x32\x38\x35\x43\ \x2d\x31\x32\x32\x2e\x33\x30\x34\x20\x38\x34\x2e\x32\x38\x35\x20\ \x2d\x31\x32\x32\x2e\x32\x30\x33\x20\x38\x36\x2e\x31\x37\x39\x20\ \x2d\x31\x32\x33\x2e\x30\x32\x37\x20\x38\x36\x2e\x31\x36\x43\x2d\ \x31\x32\x33\x2e\x38\x35\x31\x20\x38\x36\x2e\x31\x34\x31\x20\x2d\ \x31\x34\x30\x2e\x33\x30\x35\x20\x33\x38\x2e\x30\x36\x36\x20\x2d\ \x31\x36\x30\x2e\x38\x33\x33\x20\x34\x30\x2e\x33\x30\x39\x43\x2d\ \x31\x36\x30\x2e\x38\x33\x33\x20\x34\x30\x2e\x33\x30\x39\x20\x2d\ \x31\x34\x33\x2e\x30\x35\x20\x33\x32\x2e\x39\x35\x36\x20\x2d\x31\ \x32\x32\x2e\x33\x30\x34\x20\x38\x34\x2e\x32\x38\x35\x7a\x22\x7d\ \x0a\x20\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\ \x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\ \x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x37\x32\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x31\x38\x2e\x37\x37\x34\ \x20\x38\x31\x2e\x32\x36\x32\x43\x2d\x31\x31\x38\x2e\x37\x37\x34\ \x20\x38\x31\x2e\x32\x36\x32\x20\x2d\x31\x31\x39\x2e\x33\x32\x33\ \x20\x38\x33\x2e\x30\x37\x38\x20\x2d\x31\x32\x30\x2e\x30\x39\x32\ \x20\x38\x32\x2e\x37\x37\x39\x43\x2d\x31\x32\x30\x2e\x38\x36\x20\ \x38\x32\x2e\x34\x38\x31\x20\x2d\x31\x31\x39\x2e\x39\x37\x37\x20\ \x33\x31\x2e\x36\x37\x35\x20\x2d\x31\x34\x30\x2e\x30\x34\x33\x20\ \x32\x36\x2e\x38\x30\x31\x43\x2d\x31\x34\x30\x2e\x30\x34\x33\x20\ \x32\x36\x2e\x38\x30\x31\x20\x2d\x31\x32\x30\x2e\x38\x32\x20\x32\ \x35\x2e\x39\x33\x37\x20\x2d\x31\x31\x38\x2e\x37\x37\x34\x20\x38\ \x31\x2e\x32\x36\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\ \x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\ \x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\ \x37\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x39\x31\x2e\x32\x38\x34\x20\x31\x32\x33\x2e\x35\x39\x43\x2d\x39\ \x31\x2e\x32\x38\x34\x20\x31\x32\x33\x2e\x35\x39\x20\x2d\x38\x39\ \x2e\x36\x34\x38\x20\x31\x32\x34\x2e\x35\x35\x20\x2d\x39\x30\x2e\ \x31\x31\x38\x20\x31\x32\x35\x2e\x32\x32\x37\x43\x2d\x39\x30\x2e\ \x35\x38\x39\x20\x31\x32\x35\x2e\x39\x30\x34\x20\x2d\x31\x33\x39\ \x2e\x37\x36\x33\x20\x31\x31\x33\x2e\x31\x30\x32\x20\x2d\x31\x34\ \x39\x2e\x32\x31\x38\x20\x31\x33\x31\x2e\x34\x35\x39\x43\x2d\x31\ \x34\x39\x2e\x32\x31\x38\x20\x31\x33\x31\x2e\x34\x35\x39\x20\x2d\ \x31\x34\x35\x2e\x35\x33\x39\x20\x31\x31\x32\x2e\x35\x37\x32\x20\ \x2d\x39\x31\x2e\x32\x38\x34\x20\x31\x32\x33\x2e\x35\x39\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\ \x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\ \x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x37\x32\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x39\x34\x2e\x30\x39\x33\x20\ \x31\x33\x33\x2e\x38\x30\x31\x43\x2d\x39\x34\x2e\x30\x39\x33\x20\ \x31\x33\x33\x2e\x38\x30\x31\x20\x2d\x39\x32\x2e\x32\x33\x37\x20\ \x31\x33\x34\x2e\x31\x39\x37\x20\x2d\x39\x32\x2e\x34\x37\x31\x20\ \x31\x33\x34\x2e\x39\x38\x38\x43\x2d\x39\x32\x2e\x37\x30\x34\x20\ \x31\x33\x35\x2e\x37\x37\x39\x20\x2d\x31\x34\x33\x2e\x34\x30\x37\ \x20\x31\x33\x39\x2e\x31\x32\x31\x20\x2d\x31\x34\x36\x2e\x35\x39\ \x37\x20\x31\x35\x39\x2e\x35\x32\x32\x43\x2d\x31\x34\x36\x2e\x35\ \x39\x37\x20\x31\x35\x39\x2e\x35\x32\x32\x20\x2d\x31\x34\x39\x2e\ \x30\x35\x35\x20\x31\x34\x30\x2e\x34\x33\x37\x20\x2d\x39\x34\x2e\ \x30\x39\x33\x20\x31\x33\x33\x2e\x38\x30\x31\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\ \x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x30\x2e\x31\x37\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x39\x38\x2e\x33\x30\x34\x20\x31\x32\x38\ \x2e\x32\x37\x36\x43\x2d\x39\x38\x2e\x33\x30\x34\x20\x31\x32\x38\ \x2e\x32\x37\x36\x20\x2d\x39\x36\x2e\x35\x32\x36\x20\x31\x32\x38\ \x2e\x39\x33\x39\x20\x2d\x39\x36\x2e\x38\x37\x32\x20\x31\x32\x39\ \x2e\x36\x38\x37\x43\x2d\x39\x37\x2e\x32\x31\x38\x20\x31\x33\x30\ \x2e\x34\x33\x35\x20\x2d\x31\x34\x37\x2e\x38\x36\x36\x20\x31\x32\ \x36\x2e\x33\x34\x36\x20\x2d\x31\x35\x33\x2e\x39\x39\x38\x20\x31\ \x34\x36\x2e\x30\x36\x34\x43\x2d\x31\x35\x33\x2e\x39\x39\x38\x20\ \x31\x34\x36\x2e\x30\x36\x34\x20\x2d\x31\x35\x33\x2e\x36\x34\x36\ \x20\x31\x32\x36\x2e\x38\x32\x35\x20\x2d\x39\x38\x2e\x33\x30\x34\ \x20\x31\x32\x38\x2e\x32\x37\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\ \x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\ \x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\ \x30\x2e\x31\x37\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x2d\x31\x30\x39\x2e\x30\x30\x39\x20\x31\x31\x30\x2e\x30\ \x37\x32\x43\x2d\x31\x30\x39\x2e\x30\x30\x39\x20\x31\x31\x30\x2e\ \x30\x37\x32\x20\x2d\x31\x30\x37\x2e\x37\x30\x31\x20\x31\x31\x31\ \x2e\x34\x34\x36\x20\x2d\x31\x30\x38\x2e\x33\x34\x20\x31\x31\x31\ \x2e\x39\x36\x37\x43\x2d\x31\x30\x38\x2e\x39\x37\x39\x20\x31\x31\ \x32\x2e\x34\x38\x38\x20\x2d\x31\x35\x32\x2e\x37\x32\x32\x20\x38\ \x36\x2e\x36\x33\x34\x20\x2d\x31\x36\x36\x2e\x38\x36\x39\x20\x31\ \x30\x31\x2e\x36\x37\x36\x43\x2d\x31\x36\x36\x2e\x38\x36\x39\x20\ \x31\x30\x31\x2e\x36\x37\x36\x20\x2d\x31\x35\x38\x2e\x31\x32\x38\ \x20\x38\x34\x2e\x35\x33\x33\x20\x2d\x31\x30\x39\x2e\x30\x30\x39\ \x20\x31\x31\x30\x2e\x30\x37\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\ \x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\ \x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\ \x30\x2e\x31\x37\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x2d\x31\x31\x36\x2e\x35\x35\x34\x20\x31\x31\x34\x2e\x32\ \x36\x33\x43\x2d\x31\x31\x36\x2e\x35\x35\x34\x20\x31\x31\x34\x2e\ \x32\x36\x33\x20\x2d\x31\x31\x35\x2e\x30\x39\x38\x20\x31\x31\x35\ \x2e\x34\x38\x20\x2d\x31\x31\x35\x2e\x36\x37\x34\x20\x31\x31\x36\ \x2e\x30\x37\x31\x43\x2d\x31\x31\x36\x2e\x32\x35\x20\x31\x31\x36\ \x2e\x36\x36\x31\x20\x2d\x31\x36\x32\x2e\x36\x33\x38\x20\x39\x35\ \x2e\x39\x32\x32\x20\x2d\x31\x37\x34\x2e\x39\x39\x32\x20\x31\x31\ \x32\x2e\x34\x36\x39\x43\x2d\x31\x37\x34\x2e\x39\x39\x32\x20\x31\ \x31\x32\x2e\x34\x36\x39\x20\x2d\x31\x36\x38\x2e\x32\x34\x37\x20\ \x39\x34\x2e\x34\x34\x37\x20\x2d\x31\x31\x36\x2e\x35\x35\x34\x20\ \x31\x31\x34\x2e\x32\x36\x33\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\ \x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\ \x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\ \x2e\x31\x37\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x2d\x31\x31\x39\x2e\x31\x35\x34\x20\x31\x31\x38\x2e\x33\x33\ \x35\x43\x2d\x31\x31\x39\x2e\x31\x35\x34\x20\x31\x31\x38\x2e\x33\ \x33\x35\x20\x2d\x31\x31\x37\x2e\x35\x34\x36\x20\x31\x31\x39\x2e\ \x33\x34\x33\x20\x2d\x31\x31\x38\x2e\x30\x33\x36\x20\x31\x32\x30\ \x2e\x30\x30\x36\x43\x2d\x31\x31\x38\x2e\x35\x32\x36\x20\x31\x32\ \x30\x2e\x36\x36\x39\x20\x2d\x31\x36\x37\x2e\x33\x30\x38\x20\x31\ \x30\x36\x2e\x34\x34\x36\x20\x2d\x31\x37\x37\x2e\x32\x39\x31\x20\ \x31\x32\x34\x2e\x35\x32\x32\x43\x2d\x31\x37\x37\x2e\x32\x39\x31\ \x20\x31\x32\x34\x2e\x35\x32\x32\x20\x2d\x31\x37\x33\x2e\x30\x36\ \x36\x20\x31\x30\x35\x2e\x37\x34\x39\x20\x2d\x31\x31\x39\x2e\x31\ \x35\x34\x20\x31\x31\x38\x2e\x33\x33\x35\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\ \x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\ \x22\x3a\x30\x2e\x31\x37\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x31\x30\x38\x2e\x34\x32\x20\x31\x31\x38\x2e\ \x39\x34\x39\x43\x2d\x31\x30\x38\x2e\x34\x32\x20\x31\x31\x38\x2e\ \x39\x34\x39\x20\x2d\x31\x30\x37\x2e\x32\x39\x38\x20\x31\x32\x30\ \x2e\x34\x38\x20\x2d\x31\x30\x37\x2e\x39\x39\x39\x20\x31\x32\x30\ \x2e\x39\x31\x35\x43\x2d\x31\x30\x38\x2e\x37\x20\x31\x32\x31\x2e\ \x33\x35\x20\x2d\x31\x34\x38\x2e\x37\x36\x39\x20\x39\x30\x2e\x31\ \x30\x32\x20\x2d\x31\x36\x34\x2e\x37\x32\x37\x20\x31\x30\x33\x2e\ \x32\x30\x37\x43\x2d\x31\x36\x34\x2e\x37\x32\x37\x20\x31\x30\x33\ \x2e\x32\x30\x37\x20\x2d\x31\x35\x33\x2e\x38\x36\x32\x20\x38\x37\ \x2e\x33\x32\x36\x20\x2d\x31\x30\x38\x2e\x34\x32\x20\x31\x31\x38\ \x2e\x39\x34\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\ \x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\ \x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x37\ \x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\ \x32\x38\x2e\x32\x20\x39\x30\x43\x2d\x31\x32\x38\x2e\x32\x20\x39\ \x30\x20\x2d\x31\x32\x37\x2e\x36\x20\x39\x31\x2e\x38\x20\x2d\x31\ \x32\x38\x2e\x34\x20\x39\x32\x43\x2d\x31\x32\x39\x2e\x32\x20\x39\ \x32\x2e\x32\x20\x2d\x31\x35\x37\x2e\x38\x20\x35\x30\x2e\x32\x20\ \x2d\x31\x37\x37\x2e\x30\x30\x31\x20\x35\x37\x2e\x38\x43\x2d\x31\ \x37\x37\x2e\x30\x30\x31\x20\x35\x37\x2e\x38\x20\x2d\x31\x36\x31\ \x2e\x38\x20\x34\x36\x20\x2d\x31\x32\x38\x2e\x32\x20\x39\x30\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\ \x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\ \x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x37\x32\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x32\x37\x2e\x35\x30\ \x35\x20\x39\x36\x2e\x39\x37\x39\x43\x2d\x31\x32\x37\x2e\x35\x30\ \x35\x20\x39\x36\x2e\x39\x37\x39\x20\x2d\x31\x32\x36\x2e\x35\x33\ \x20\x39\x38\x2e\x36\x30\x38\x20\x2d\x31\x32\x37\x2e\x32\x36\x39\ \x20\x39\x38\x2e\x39\x37\x35\x43\x2d\x31\x32\x38\x2e\x30\x30\x37\ \x20\x39\x39\x2e\x33\x34\x33\x20\x2d\x31\x36\x34\x2e\x39\x39\x32\ \x20\x36\x34\x2e\x34\x39\x39\x20\x2d\x31\x38\x32\x2e\x31\x30\x31\ \x20\x37\x36\x2e\x30\x36\x31\x43\x2d\x31\x38\x32\x2e\x31\x30\x31\ \x20\x37\x36\x2e\x30\x36\x31\x20\x2d\x31\x36\x39\x2e\x38\x30\x34\ \x20\x36\x31\x2e\x32\x36\x31\x20\x2d\x31\x32\x37\x2e\x35\x30\x35\ \x20\x39\x36\x2e\x39\x37\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\ \x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\ \x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\ \x2e\x31\x37\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x2d\x31\x32\x37\x2e\x36\x32\x20\x31\x30\x31\x2e\x33\x34\x39\ \x43\x2d\x31\x32\x37\x2e\x36\x32\x20\x31\x30\x31\x2e\x33\x34\x39\ \x20\x2d\x31\x32\x36\x2e\x34\x39\x38\x20\x31\x30\x32\x2e\x38\x38\ \x20\x2d\x31\x32\x37\x2e\x31\x39\x39\x20\x31\x30\x33\x2e\x33\x31\ \x35\x43\x2d\x31\x32\x37\x2e\x39\x20\x31\x30\x33\x2e\x37\x34\x39\ \x20\x2d\x31\x36\x37\x2e\x39\x36\x39\x20\x37\x32\x2e\x35\x30\x32\ \x20\x2d\x31\x38\x33\x2e\x39\x32\x37\x20\x38\x35\x2e\x36\x30\x37\ \x43\x2d\x31\x38\x33\x2e\x39\x32\x37\x20\x38\x35\x2e\x36\x30\x37\ \x20\x2d\x31\x37\x33\x2e\x30\x36\x32\x20\x36\x39\x2e\x37\x32\x36\ \x20\x2d\x31\x32\x37\x2e\x36\x32\x20\x31\x30\x31\x2e\x33\x34\x39\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\ \x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x32\x39\x2e\ \x38\x33\x20\x31\x30\x33\x2e\x30\x36\x35\x43\x2d\x31\x32\x39\x2e\ \x33\x32\x37\x20\x31\x30\x39\x2e\x31\x31\x33\x20\x2d\x31\x32\x38\ \x2e\x33\x33\x39\x20\x31\x31\x35\x2e\x36\x38\x32\x20\x2d\x31\x32\ \x36\x2e\x36\x20\x31\x31\x38\x2e\x38\x30\x31\x43\x2d\x31\x32\x36\ \x2e\x36\x20\x31\x31\x38\x2e\x38\x30\x31\x20\x2d\x31\x33\x30\x2e\ \x32\x20\x31\x33\x31\x2e\x32\x30\x31\x20\x2d\x31\x32\x31\x2e\x34\ \x20\x31\x34\x34\x2e\x34\x30\x31\x43\x2d\x31\x32\x31\x2e\x34\x20\ \x31\x34\x34\x2e\x34\x30\x31\x20\x2d\x31\x32\x31\x2e\x38\x20\x31\ \x35\x31\x2e\x36\x30\x31\x20\x2d\x31\x32\x30\x2e\x32\x20\x31\x35\ \x34\x2e\x38\x30\x31\x43\x2d\x31\x32\x30\x2e\x32\x20\x31\x35\x34\ \x2e\x38\x30\x31\x20\x2d\x31\x31\x36\x2e\x32\x20\x31\x36\x33\x2e\ \x32\x30\x31\x20\x2d\x31\x31\x31\x2e\x34\x20\x31\x36\x34\x2e\x30\ \x30\x31\x43\x2d\x31\x30\x37\x2e\x35\x31\x36\x20\x31\x36\x34\x2e\ \x36\x34\x38\x20\x2d\x39\x38\x2e\x37\x39\x33\x20\x31\x36\x37\x2e\ \x37\x31\x37\x20\x2d\x38\x38\x2e\x39\x33\x32\x20\x31\x36\x39\x2e\ \x31\x32\x31\x43\x2d\x38\x38\x2e\x39\x33\x32\x20\x31\x36\x39\x2e\ \x31\x32\x31\x20\x2d\x37\x31\x2e\x38\x20\x31\x38\x33\x2e\x32\x30\ \x31\x20\x2d\x37\x35\x20\x31\x39\x36\x2e\x30\x30\x31\x43\x2d\x37\ \x35\x20\x31\x39\x36\x2e\x30\x30\x31\x20\x2d\x37\x35\x2e\x34\x20\ \x32\x31\x32\x2e\x34\x30\x31\x20\x2d\x37\x39\x20\x32\x31\x34\x2e\ \x30\x30\x31\x43\x2d\x37\x39\x20\x32\x31\x34\x2e\x30\x30\x31\x20\ \x2d\x36\x37\x2e\x34\x20\x32\x30\x32\x2e\x38\x30\x31\x20\x2d\x37\ \x37\x20\x32\x31\x39\x2e\x36\x30\x31\x4c\x2d\x38\x31\x2e\x34\x20\ \x32\x33\x38\x2e\x34\x30\x31\x43\x2d\x38\x31\x2e\x34\x20\x32\x33\ \x38\x2e\x34\x30\x31\x20\x2d\x35\x35\x2e\x38\x20\x32\x31\x36\x2e\ \x38\x30\x31\x20\x2d\x37\x31\x2e\x34\x20\x32\x33\x35\x2e\x32\x30\ \x31\x4c\x2d\x38\x31\x2e\x34\x20\x32\x36\x31\x2e\x32\x30\x31\x43\ \x2d\x38\x31\x2e\x34\x20\x32\x36\x31\x2e\x32\x30\x31\x20\x2d\x36\ \x31\x2e\x38\x20\x32\x34\x32\x2e\x38\x30\x31\x20\x2d\x36\x39\x20\ \x32\x35\x31\x2e\x32\x30\x31\x4c\x2d\x37\x32\x2e\x32\x20\x32\x36\ \x30\x2e\x30\x30\x31\x43\x2d\x37\x32\x2e\x32\x20\x32\x36\x30\x2e\ \x30\x30\x31\x20\x2d\x32\x39\x20\x32\x33\x32\x2e\x38\x30\x31\x20\ \x2d\x35\x39\x2e\x38\x20\x32\x36\x32\x2e\x34\x30\x31\x43\x2d\x35\ \x39\x2e\x38\x20\x32\x36\x32\x2e\x34\x30\x31\x20\x2d\x35\x31\x2e\ \x38\x20\x32\x35\x38\x2e\x38\x30\x31\x20\x2d\x34\x37\x2e\x34\x20\ \x32\x36\x31\x2e\x36\x30\x31\x43\x2d\x34\x37\x2e\x34\x20\x32\x36\ \x31\x2e\x36\x30\x31\x20\x2d\x34\x30\x2e\x36\x20\x32\x36\x30\x2e\ \x34\x30\x31\x20\x2d\x34\x31\x2e\x34\x20\x32\x36\x32\x2e\x30\x30\ \x31\x43\x2d\x34\x31\x2e\x34\x20\x32\x36\x32\x2e\x30\x30\x31\x20\ \x2d\x36\x32\x2e\x32\x20\x32\x37\x32\x2e\x34\x30\x31\x20\x2d\x36\ \x35\x2e\x38\x20\x32\x39\x30\x2e\x38\x30\x31\x43\x2d\x36\x35\x2e\ \x38\x20\x32\x39\x30\x2e\x38\x30\x31\x20\x2d\x35\x37\x2e\x34\x20\ \x32\x38\x30\x2e\x38\x30\x31\x20\x2d\x36\x30\x2e\x36\x20\x32\x39\ \x31\x2e\x36\x30\x31\x4c\x2d\x36\x30\x2e\x32\x20\x33\x30\x33\x2e\ \x32\x30\x31\x43\x2d\x36\x30\x2e\x32\x20\x33\x30\x33\x2e\x32\x30\ \x31\x20\x2d\x35\x36\x2e\x32\x20\x32\x38\x31\x2e\x36\x30\x31\x20\ \x2d\x35\x36\x2e\x36\x20\x33\x31\x39\x2e\x32\x30\x31\x43\x2d\x35\ \x36\x2e\x36\x20\x33\x31\x39\x2e\x32\x30\x31\x20\x2d\x33\x37\x2e\ \x34\x20\x33\x30\x31\x2e\x32\x30\x31\x20\x2d\x34\x39\x20\x33\x32\ \x32\x2e\x30\x30\x31\x4c\x2d\x34\x39\x20\x33\x33\x38\x2e\x38\x30\ \x31\x43\x2d\x34\x39\x20\x33\x33\x38\x2e\x38\x30\x31\x20\x2d\x33\ \x33\x2e\x38\x20\x33\x32\x32\x2e\x34\x30\x31\x20\x2d\x34\x30\x2e\ \x32\x20\x33\x33\x35\x2e\x32\x30\x31\x43\x2d\x34\x30\x2e\x32\x20\ \x33\x33\x35\x2e\x32\x30\x31\x20\x2d\x33\x30\x2e\x32\x20\x33\x32\ \x36\x2e\x34\x30\x31\x20\x2d\x33\x34\x2e\x32\x20\x33\x34\x31\x2e\ \x36\x30\x31\x43\x2d\x33\x34\x2e\x32\x20\x33\x34\x31\x2e\x36\x30\ \x31\x20\x2d\x33\x35\x20\x33\x35\x32\x2e\x30\x30\x31\x20\x2d\x33\ \x30\x2e\x36\x20\x33\x34\x30\x2e\x38\x30\x31\x43\x2d\x33\x30\x2e\ \x36\x20\x33\x34\x30\x2e\x38\x30\x31\x20\x2d\x31\x34\x2e\x36\x20\ \x33\x31\x30\x2e\x32\x30\x31\x20\x2d\x32\x30\x2e\x36\x20\x33\x33\ \x36\x2e\x34\x30\x31\x43\x2d\x32\x30\x2e\x36\x20\x33\x33\x36\x2e\ \x34\x30\x31\x20\x2d\x32\x31\x2e\x34\x20\x33\x35\x35\x2e\x36\x30\ \x31\x20\x2d\x31\x36\x2e\x36\x20\x33\x34\x30\x2e\x38\x30\x31\x43\ \x2d\x31\x36\x2e\x36\x20\x33\x34\x30\x2e\x38\x30\x31\x20\x2d\x31\ \x36\x2e\x32\x20\x33\x35\x31\x2e\x32\x30\x31\x20\x2d\x37\x20\x33\ \x35\x38\x2e\x34\x30\x31\x43\x2d\x37\x20\x33\x35\x38\x2e\x34\x30\ \x31\x20\x2d\x38\x2e\x32\x20\x33\x30\x37\x2e\x36\x30\x31\x20\x34\ \x2e\x36\x20\x33\x34\x33\x2e\x36\x30\x31\x4c\x38\x2e\x36\x20\x33\ \x36\x30\x2e\x30\x30\x31\x43\x38\x2e\x36\x20\x33\x36\x30\x2e\x30\ \x30\x31\x20\x31\x31\x2e\x34\x20\x33\x35\x30\x2e\x38\x30\x31\x20\ \x31\x31\x20\x33\x34\x35\x2e\x36\x30\x31\x43\x31\x31\x20\x33\x34\ \x35\x2e\x36\x30\x31\x20\x32\x35\x2e\x38\x20\x33\x32\x39\x2e\x32\ \x30\x31\x20\x31\x39\x20\x33\x35\x33\x2e\x36\x30\x31\x43\x31\x39\ \x20\x33\x35\x33\x2e\x36\x30\x31\x20\x33\x34\x2e\x32\x20\x33\x33\ \x30\x2e\x38\x30\x31\x20\x33\x31\x20\x33\x34\x34\x2e\x30\x30\x31\ \x43\x33\x31\x20\x33\x34\x34\x2e\x30\x30\x31\x20\x32\x33\x2e\x34\ \x20\x33\x36\x30\x2e\x30\x30\x31\x20\x32\x35\x20\x33\x36\x34\x2e\ \x38\x30\x31\x43\x32\x35\x20\x33\x36\x34\x2e\x38\x30\x31\x20\x34\ \x31\x2e\x38\x20\x33\x33\x30\x2e\x30\x30\x31\x20\x34\x33\x20\x33\ \x32\x38\x2e\x34\x30\x31\x43\x34\x33\x20\x33\x32\x38\x2e\x34\x30\ \x31\x20\x34\x31\x20\x33\x37\x30\x2e\x38\x30\x32\x20\x35\x31\x2e\ \x38\x20\x33\x33\x34\x2e\x38\x30\x31\x43\x35\x31\x2e\x38\x20\x33\ \x33\x34\x2e\x38\x30\x31\x20\x35\x37\x2e\x34\x20\x33\x34\x36\x2e\ \x38\x30\x31\x20\x35\x34\x2e\x36\x20\x33\x35\x31\x2e\x32\x30\x31\ \x43\x35\x34\x2e\x36\x20\x33\x35\x31\x2e\x32\x30\x31\x20\x36\x32\ \x2e\x36\x20\x33\x34\x33\x2e\x32\x30\x31\x20\x36\x31\x2e\x38\x20\ \x33\x34\x30\x2e\x30\x30\x31\x43\x36\x31\x2e\x38\x20\x33\x34\x30\ \x2e\x30\x30\x31\x20\x36\x36\x2e\x34\x20\x33\x33\x31\x2e\x38\x30\ \x31\x20\x36\x39\x2e\x32\x20\x33\x34\x35\x2e\x34\x30\x31\x43\x36\ \x39\x2e\x32\x20\x33\x34\x35\x2e\x34\x30\x31\x20\x37\x31\x20\x33\ \x35\x34\x2e\x38\x30\x31\x20\x37\x32\x2e\x36\x20\x33\x35\x31\x2e\ \x36\x30\x31\x43\x37\x32\x2e\x36\x20\x33\x35\x31\x2e\x36\x30\x31\ \x20\x37\x36\x2e\x36\x20\x33\x37\x35\x2e\x36\x30\x32\x20\x37\x37\ \x2e\x38\x20\x33\x35\x32\x2e\x38\x30\x31\x43\x37\x37\x2e\x38\x20\ \x33\x35\x32\x2e\x38\x30\x31\x20\x37\x39\x2e\x34\x20\x33\x33\x39\ \x2e\x32\x30\x31\x20\x37\x32\x2e\x32\x20\x33\x32\x37\x2e\x36\x30\ \x31\x43\x37\x32\x2e\x32\x20\x33\x32\x37\x2e\x36\x30\x31\x20\x37\ \x33\x20\x33\x32\x34\x2e\x34\x30\x31\x20\x37\x30\x2e\x32\x20\x33\ \x32\x30\x2e\x34\x30\x31\x43\x37\x30\x2e\x32\x20\x33\x32\x30\x2e\ \x34\x30\x31\x20\x38\x33\x2e\x38\x20\x33\x34\x32\x2e\x30\x30\x31\ \x20\x37\x36\x2e\x36\x20\x33\x31\x33\x2e\x32\x30\x31\x43\x37\x36\ \x2e\x36\x20\x33\x31\x33\x2e\x32\x30\x31\x20\x38\x37\x2e\x38\x30\ \x31\x20\x33\x32\x31\x2e\x32\x30\x31\x20\x38\x39\x2e\x30\x30\x31\ \x20\x33\x32\x31\x2e\x32\x30\x31\x43\x38\x39\x2e\x30\x30\x31\x20\ \x33\x32\x31\x2e\x32\x30\x31\x20\x37\x35\x2e\x34\x20\x32\x39\x38\ \x2e\x30\x30\x31\x20\x38\x34\x2e\x32\x20\x33\x30\x32\x2e\x38\x30\ \x31\x43\x38\x34\x2e\x32\x20\x33\x30\x32\x2e\x38\x30\x31\x20\x37\ \x39\x20\x32\x39\x32\x2e\x34\x30\x31\x20\x39\x37\x2e\x30\x30\x31\ \x20\x33\x30\x34\x2e\x34\x30\x31\x43\x39\x37\x2e\x30\x30\x31\x20\ \x33\x30\x34\x2e\x34\x30\x31\x20\x38\x31\x20\x32\x38\x38\x2e\x34\ \x30\x31\x20\x39\x38\x2e\x36\x30\x31\x20\x32\x39\x38\x2e\x30\x30\ \x31\x43\x39\x38\x2e\x36\x30\x31\x20\x32\x39\x38\x2e\x30\x30\x31\ \x20\x31\x30\x36\x2e\x36\x30\x31\x20\x33\x30\x34\x2e\x34\x30\x31\ \x20\x39\x39\x2e\x30\x30\x31\x20\x32\x39\x34\x2e\x34\x30\x31\x43\ \x39\x39\x2e\x30\x30\x31\x20\x32\x39\x34\x2e\x34\x30\x31\x20\x38\ \x34\x2e\x36\x20\x32\x37\x38\x2e\x34\x30\x31\x20\x31\x30\x36\x2e\ \x36\x30\x31\x20\x32\x39\x36\x2e\x34\x30\x31\x43\x31\x30\x36\x2e\ \x36\x30\x31\x20\x32\x39\x36\x2e\x34\x30\x31\x20\x31\x31\x38\x2e\ \x32\x30\x31\x20\x33\x31\x32\x2e\x38\x30\x31\x20\x31\x31\x39\x2e\ \x30\x30\x31\x20\x33\x31\x35\x2e\x36\x30\x31\x43\x31\x31\x39\x2e\ \x30\x30\x31\x20\x33\x31\x35\x2e\x36\x30\x31\x20\x31\x30\x39\x2e\ \x30\x30\x31\x20\x32\x38\x36\x2e\x34\x30\x31\x20\x31\x30\x34\x2e\ \x36\x30\x31\x20\x32\x38\x33\x2e\x36\x30\x31\x43\x31\x30\x34\x2e\ \x36\x30\x31\x20\x32\x38\x33\x2e\x36\x30\x31\x20\x31\x31\x33\x2e\ \x30\x30\x31\x20\x32\x34\x37\x2e\x32\x30\x31\x20\x31\x35\x34\x2e\ \x32\x30\x31\x20\x32\x36\x32\x2e\x38\x30\x31\x43\x31\x35\x34\x2e\ \x32\x30\x31\x20\x32\x36\x32\x2e\x38\x30\x31\x20\x31\x36\x31\x2e\ \x30\x30\x31\x20\x32\x38\x30\x2e\x30\x30\x31\x20\x31\x36\x35\x2e\ \x34\x30\x31\x20\x32\x36\x31\x2e\x36\x30\x31\x43\x31\x36\x35\x2e\ \x34\x30\x31\x20\x32\x36\x31\x2e\x36\x30\x31\x20\x31\x37\x38\x2e\ \x32\x30\x31\x20\x32\x35\x35\x2e\x32\x30\x31\x20\x31\x38\x39\x2e\ \x34\x30\x31\x20\x32\x38\x32\x2e\x38\x30\x31\x43\x31\x38\x39\x2e\ \x34\x30\x31\x20\x32\x38\x32\x2e\x38\x30\x31\x20\x31\x39\x33\x2e\ \x34\x30\x31\x20\x32\x36\x39\x2e\x32\x30\x31\x20\x31\x39\x32\x2e\ \x36\x30\x31\x20\x32\x36\x36\x2e\x34\x30\x31\x43\x31\x39\x32\x2e\ \x36\x30\x31\x20\x32\x36\x36\x2e\x34\x30\x31\x20\x31\x39\x39\x2e\ \x34\x30\x31\x20\x32\x36\x37\x2e\x36\x30\x31\x20\x31\x39\x38\x2e\ \x36\x30\x31\x20\x32\x36\x36\x2e\x34\x30\x31\x43\x31\x39\x38\x2e\ \x36\x30\x31\x20\x32\x36\x36\x2e\x34\x30\x31\x20\x32\x31\x31\x2e\ \x38\x30\x31\x20\x32\x37\x30\x2e\x38\x30\x31\x20\x32\x31\x33\x2e\ \x30\x30\x31\x20\x32\x37\x30\x2e\x30\x30\x31\x43\x32\x31\x33\x2e\ \x30\x30\x31\x20\x32\x37\x30\x2e\x30\x30\x31\x20\x32\x31\x39\x2e\ \x38\x30\x31\x20\x32\x37\x36\x2e\x38\x30\x31\x20\x32\x32\x30\x2e\ \x32\x30\x31\x20\x32\x37\x33\x2e\x32\x30\x31\x43\x32\x32\x30\x2e\ \x32\x30\x31\x20\x32\x37\x33\x2e\x32\x30\x31\x20\x32\x32\x39\x2e\ \x34\x30\x31\x20\x32\x37\x36\x2e\x30\x30\x31\x20\x32\x32\x37\x2e\ \x34\x30\x31\x20\x32\x37\x32\x2e\x34\x30\x31\x43\x32\x32\x37\x2e\ \x34\x30\x31\x20\x32\x37\x32\x2e\x34\x30\x31\x20\x32\x33\x36\x2e\ \x32\x30\x31\x20\x32\x38\x38\x2e\x30\x30\x31\x20\x32\x33\x36\x2e\ \x36\x30\x31\x20\x32\x39\x31\x2e\x36\x30\x31\x4c\x32\x33\x39\x2e\ \x30\x30\x31\x20\x32\x37\x37\x2e\x36\x30\x31\x4c\x32\x34\x31\x2e\ \x30\x30\x31\x20\x32\x38\x30\x2e\x34\x30\x31\x43\x32\x34\x31\x2e\ \x30\x30\x31\x20\x32\x38\x30\x2e\x34\x30\x31\x20\x32\x34\x32\x2e\ \x36\x30\x31\x20\x32\x37\x32\x2e\x38\x30\x31\x20\x32\x34\x31\x2e\ \x38\x30\x31\x20\x32\x37\x31\x2e\x36\x30\x31\x43\x32\x34\x31\x2e\ \x30\x30\x31\x20\x32\x37\x30\x2e\x34\x30\x31\x20\x32\x36\x31\x2e\ \x38\x30\x31\x20\x32\x37\x38\x2e\x34\x30\x31\x20\x32\x36\x36\x2e\ \x36\x30\x31\x20\x32\x39\x39\x2e\x32\x30\x31\x4c\x32\x36\x38\x2e\ \x36\x30\x31\x20\x33\x30\x37\x2e\x36\x30\x31\x43\x32\x36\x38\x2e\ \x36\x30\x31\x20\x33\x30\x37\x2e\x36\x30\x31\x20\x32\x37\x34\x2e\ \x36\x30\x31\x20\x32\x39\x32\x2e\x38\x30\x31\x20\x32\x37\x33\x2e\ \x30\x30\x31\x20\x32\x38\x38\x2e\x38\x30\x31\x43\x32\x37\x33\x2e\ \x30\x30\x31\x20\x32\x38\x38\x2e\x38\x30\x31\x20\x32\x37\x38\x2e\ \x32\x30\x31\x20\x32\x38\x39\x2e\x36\x30\x31\x20\x32\x37\x38\x2e\ \x36\x30\x31\x20\x32\x39\x34\x2e\x30\x30\x31\x43\x32\x37\x38\x2e\ \x36\x30\x31\x20\x32\x39\x34\x2e\x30\x30\x31\x20\x32\x38\x32\x2e\ \x36\x30\x31\x20\x32\x37\x30\x2e\x38\x30\x31\x20\x32\x37\x37\x2e\ \x38\x30\x31\x20\x32\x36\x34\x2e\x38\x30\x31\x43\x32\x37\x37\x2e\ \x38\x30\x31\x20\x32\x36\x34\x2e\x38\x30\x31\x20\x32\x38\x32\x2e\ \x32\x30\x31\x20\x32\x36\x34\x2e\x30\x30\x31\x20\x32\x38\x33\x2e\ \x34\x30\x31\x20\x32\x36\x37\x2e\x36\x30\x31\x4c\x32\x38\x33\x2e\ \x34\x30\x31\x20\x32\x36\x30\x2e\x34\x30\x31\x43\x32\x38\x33\x2e\ \x34\x30\x31\x20\x32\x36\x30\x2e\x34\x30\x31\x20\x32\x39\x30\x2e\ \x36\x30\x31\x20\x32\x36\x31\x2e\x32\x30\x31\x20\x32\x39\x30\x2e\ \x36\x30\x31\x20\x32\x35\x38\x2e\x38\x30\x31\x43\x32\x39\x30\x2e\ \x36\x30\x31\x20\x32\x35\x38\x2e\x38\x30\x31\x20\x32\x39\x35\x2e\ \x30\x30\x31\x20\x32\x35\x34\x2e\x38\x30\x31\x20\x32\x39\x37\x2e\ \x30\x30\x31\x20\x32\x35\x39\x2e\x36\x30\x31\x43\x32\x39\x37\x2e\ \x30\x30\x31\x20\x32\x35\x39\x2e\x36\x30\x31\x20\x32\x38\x34\x2e\ \x36\x30\x31\x20\x32\x32\x34\x2e\x34\x30\x31\x20\x33\x30\x33\x2e\ \x30\x30\x31\x20\x32\x34\x33\x2e\x36\x30\x31\x43\x33\x30\x33\x2e\ \x30\x30\x31\x20\x32\x34\x33\x2e\x36\x30\x31\x20\x33\x31\x30\x2e\ \x32\x30\x31\x20\x32\x35\x34\x2e\x34\x30\x31\x20\x33\x30\x36\x2e\ \x36\x30\x31\x20\x32\x33\x35\x2e\x36\x30\x31\x43\x33\x30\x33\x2e\ \x30\x30\x31\x20\x32\x31\x36\x2e\x38\x30\x31\x20\x32\x39\x39\x2e\ \x30\x30\x31\x20\x32\x31\x35\x2e\x32\x30\x31\x20\x33\x30\x33\x2e\ \x38\x30\x31\x20\x32\x31\x34\x2e\x38\x30\x31\x43\x33\x30\x33\x2e\ \x38\x30\x31\x20\x32\x31\x34\x2e\x38\x30\x31\x20\x33\x30\x34\x2e\ \x36\x30\x31\x20\x32\x31\x31\x2e\x32\x30\x31\x20\x33\x30\x32\x2e\ \x36\x30\x31\x20\x32\x30\x39\x2e\x36\x30\x31\x43\x33\x30\x30\x2e\ \x36\x30\x31\x20\x32\x30\x38\x2e\x30\x30\x31\x20\x33\x30\x33\x2e\ \x38\x30\x31\x20\x32\x30\x39\x2e\x36\x30\x31\x20\x33\x30\x33\x2e\ \x38\x30\x31\x20\x32\x30\x39\x2e\x36\x30\x31\x43\x33\x30\x33\x2e\ \x38\x30\x31\x20\x32\x30\x39\x2e\x36\x30\x31\x20\x33\x30\x38\x2e\ \x36\x30\x31\x20\x32\x31\x33\x2e\x36\x30\x31\x20\x33\x30\x33\x2e\ \x34\x30\x31\x20\x31\x39\x31\x2e\x36\x30\x31\x43\x33\x30\x33\x2e\ \x34\x30\x31\x20\x31\x39\x31\x2e\x36\x30\x31\x20\x33\x30\x39\x2e\ \x38\x30\x31\x20\x31\x39\x33\x2e\x32\x30\x31\x20\x32\x39\x37\x2e\ \x38\x30\x31\x20\x31\x36\x34\x2e\x30\x30\x31\x43\x32\x39\x37\x2e\ \x38\x30\x31\x20\x31\x36\x34\x2e\x30\x30\x31\x20\x33\x30\x30\x2e\ \x36\x30\x31\x20\x31\x36\x31\x2e\x36\x30\x31\x20\x32\x39\x36\x2e\ \x36\x30\x31\x20\x31\x35\x33\x2e\x32\x30\x31\x43\x32\x39\x36\x2e\ \x36\x30\x31\x20\x31\x35\x33\x2e\x32\x30\x31\x20\x33\x30\x34\x2e\ \x36\x30\x31\x20\x31\x35\x37\x2e\x36\x30\x31\x20\x33\x30\x37\x2e\ \x34\x30\x31\x20\x31\x35\x36\x2e\x30\x30\x31\x43\x33\x30\x37\x2e\ \x34\x30\x31\x20\x31\x35\x36\x2e\x30\x30\x31\x20\x33\x30\x37\x2e\ \x30\x30\x31\x20\x31\x35\x34\x2e\x34\x30\x31\x20\x33\x30\x33\x2e\ \x38\x30\x31\x20\x31\x35\x30\x2e\x34\x30\x31\x43\x33\x30\x33\x2e\ \x38\x30\x31\x20\x31\x35\x30\x2e\x34\x30\x31\x20\x32\x38\x32\x2e\ \x32\x30\x31\x20\x39\x35\x2e\x36\x20\x33\x30\x32\x2e\x36\x30\x31\ \x20\x31\x31\x37\x2e\x36\x30\x31\x43\x33\x30\x32\x2e\x36\x30\x31\ \x20\x31\x31\x37\x2e\x36\x30\x31\x20\x33\x31\x34\x2e\x34\x35\x31\ \x20\x31\x33\x31\x2e\x31\x35\x31\x20\x33\x30\x38\x2e\x30\x35\x31\ \x20\x31\x30\x38\x2e\x33\x35\x31\x43\x33\x30\x38\x2e\x30\x35\x31\ \x20\x31\x30\x38\x2e\x33\x35\x31\x20\x32\x39\x38\x2e\x39\x34\x20\ \x38\x34\x2e\x33\x34\x31\x20\x32\x39\x39\x2e\x37\x31\x37\x20\x38\ \x30\x2e\x30\x34\x35\x4c\x2d\x31\x32\x39\x2e\x38\x33\x20\x31\x30\ \x33\x2e\x30\x36\x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x37\x32\x32\x36\x22\x2c\ \x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\ \x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x32\x39\x39\x2e\x37\x31\x37\x20\x38\x30\x2e\x32\x34\x35\x43\x33\ \x30\x30\x2e\x33\x34\x35\x20\x38\x30\x2e\x34\x32\x36\x20\x33\x30\ \x32\x2e\x35\x35\x31\x20\x38\x31\x2e\x35\x35\x20\x33\x30\x33\x2e\ \x38\x30\x31\x20\x38\x33\x2e\x32\x43\x33\x30\x33\x2e\x38\x30\x31\ \x20\x38\x33\x2e\x32\x20\x33\x31\x30\x2e\x36\x30\x31\x20\x39\x34\ \x20\x33\x30\x35\x2e\x34\x30\x31\x20\x37\x35\x2e\x36\x43\x33\x30\ \x35\x2e\x34\x30\x31\x20\x37\x35\x2e\x36\x20\x32\x39\x36\x2e\x32\ \x30\x31\x20\x34\x36\x2e\x38\x20\x33\x30\x35\x2e\x30\x30\x31\x20\ \x35\x38\x43\x33\x30\x35\x2e\x30\x30\x31\x20\x35\x38\x20\x33\x31\ \x31\x2e\x30\x30\x31\x20\x36\x35\x2e\x32\x20\x33\x30\x37\x2e\x38\ \x30\x31\x20\x35\x31\x2e\x36\x43\x33\x30\x33\x2e\x39\x33\x36\x20\ \x33\x35\x2e\x31\x37\x33\x20\x33\x30\x31\x2e\x34\x30\x31\x20\x32\ \x38\x2e\x38\x20\x33\x30\x31\x2e\x34\x30\x31\x20\x32\x38\x2e\x38\ \x43\x33\x30\x31\x2e\x34\x30\x31\x20\x32\x38\x2e\x38\x20\x33\x31\ \x33\x2e\x30\x30\x31\x20\x33\x33\x2e\x36\x20\x32\x38\x36\x2e\x32\ \x30\x31\x20\x2d\x36\x4c\x32\x39\x35\x2e\x30\x30\x31\x20\x2d\x32\ \x2e\x34\x43\x32\x39\x35\x2e\x30\x30\x31\x20\x2d\x32\x2e\x34\x20\ \x32\x37\x35\x2e\x34\x30\x31\x20\x2d\x34\x32\x20\x32\x35\x33\x2e\ \x38\x30\x31\x20\x2d\x34\x37\x2e\x32\x4c\x32\x34\x35\x2e\x38\x30\ \x31\x20\x2d\x35\x33\x2e\x32\x43\x32\x34\x35\x2e\x38\x30\x31\x20\ \x2d\x35\x33\x2e\x32\x20\x32\x38\x34\x2e\x32\x30\x31\x20\x2d\x39\ \x31\x2e\x32\x20\x32\x37\x31\x2e\x34\x30\x31\x20\x2d\x31\x32\x38\ \x43\x32\x37\x31\x2e\x34\x30\x31\x20\x2d\x31\x32\x38\x20\x32\x36\ \x34\x2e\x36\x30\x31\x20\x2d\x31\x33\x33\x2e\x32\x20\x32\x35\x35\ \x2e\x30\x30\x31\x20\x2d\x31\x32\x34\x43\x32\x35\x35\x2e\x30\x30\ \x31\x20\x2d\x31\x32\x34\x20\x32\x34\x38\x2e\x36\x30\x31\x20\x2d\ \x31\x31\x39\x2e\x32\x20\x32\x34\x32\x2e\x36\x30\x31\x20\x2d\x31\ \x32\x30\x2e\x38\x43\x32\x34\x32\x2e\x36\x30\x31\x20\x2d\x31\x32\ \x30\x2e\x38\x20\x32\x31\x31\x2e\x38\x30\x31\x20\x2d\x31\x31\x39\ \x2e\x36\x20\x32\x30\x39\x2e\x38\x30\x31\x20\x2d\x31\x31\x39\x2e\ \x36\x43\x32\x30\x37\x2e\x38\x30\x31\x20\x2d\x31\x31\x39\x2e\x36\ \x20\x31\x37\x33\x2e\x30\x30\x31\x20\x2d\x31\x35\x36\x2e\x38\x20\ \x31\x30\x37\x2e\x34\x30\x31\x20\x2d\x31\x33\x39\x2e\x32\x43\x31\ \x30\x37\x2e\x34\x30\x31\x20\x2d\x31\x33\x39\x2e\x32\x20\x31\x30\ \x32\x2e\x32\x30\x31\x20\x2d\x31\x33\x37\x2e\x32\x20\x39\x37\x2e\ \x38\x30\x31\x20\x2d\x31\x33\x38\x2e\x34\x43\x39\x37\x2e\x38\x30\ \x31\x20\x2d\x31\x33\x38\x2e\x34\x20\x37\x39\x2e\x34\x20\x2d\x31\ \x35\x34\x2e\x34\x20\x33\x30\x2e\x36\x20\x2d\x31\x33\x31\x2e\x36\ \x43\x33\x30\x2e\x36\x20\x2d\x31\x33\x31\x2e\x36\x20\x32\x30\x2e\ \x36\x20\x2d\x31\x32\x39\x2e\x36\x20\x31\x39\x20\x2d\x31\x32\x39\ \x2e\x36\x43\x31\x37\x2e\x34\x20\x2d\x31\x32\x39\x2e\x36\x20\x31\ \x34\x2e\x36\x20\x2d\x31\x32\x39\x2e\x36\x20\x36\x2e\x36\x20\x2d\ \x31\x32\x33\x2e\x32\x43\x2d\x31\x2e\x34\x20\x2d\x31\x31\x36\x2e\ \x38\x20\x2d\x31\x2e\x38\x20\x2d\x31\x31\x36\x20\x2d\x33\x2e\x38\ \x20\x2d\x31\x31\x34\x2e\x34\x43\x2d\x33\x2e\x38\x20\x2d\x31\x31\ \x34\x2e\x34\x20\x2d\x32\x30\x2e\x32\x20\x2d\x31\x30\x33\x2e\x32\ \x20\x2d\x32\x35\x20\x2d\x31\x30\x32\x2e\x34\x43\x2d\x32\x35\x20\ \x2d\x31\x30\x32\x2e\x34\x20\x2d\x33\x36\x2e\x36\x20\x2d\x39\x36\ \x20\x2d\x34\x31\x20\x2d\x38\x36\x4c\x2d\x34\x34\x2e\x36\x20\x2d\ \x38\x34\x2e\x38\x43\x2d\x34\x34\x2e\x36\x20\x2d\x38\x34\x2e\x38\ \x20\x2d\x34\x36\x2e\x32\x20\x2d\x37\x37\x2e\x36\x20\x2d\x34\x36\ \x2e\x36\x20\x2d\x37\x36\x2e\x34\x43\x2d\x34\x36\x2e\x36\x20\x2d\ \x37\x36\x2e\x34\x20\x2d\x35\x31\x2e\x34\x20\x2d\x37\x32\x2e\x38\ \x20\x2d\x35\x32\x2e\x32\x20\x2d\x36\x37\x2e\x32\x43\x2d\x35\x32\ \x2e\x32\x20\x2d\x36\x37\x2e\x32\x20\x2d\x36\x31\x20\x2d\x36\x31\ \x2e\x32\x20\x2d\x36\x30\x2e\x36\x20\x2d\x35\x36\x2e\x38\x43\x2d\ \x36\x30\x2e\x36\x20\x2d\x35\x36\x2e\x38\x20\x2d\x36\x32\x2e\x32\ \x20\x2d\x35\x31\x2e\x36\x20\x2d\x36\x33\x20\x2d\x34\x36\x2e\x38\ \x43\x2d\x36\x33\x20\x2d\x34\x36\x2e\x38\x20\x2d\x37\x30\x2e\x32\ \x20\x2d\x34\x32\x20\x2d\x36\x39\x2e\x34\x20\x2d\x33\x39\x2e\x32\ \x43\x2d\x36\x39\x2e\x34\x20\x2d\x33\x39\x2e\x32\x20\x2d\x37\x37\ \x20\x2d\x32\x35\x2e\x32\x20\x2d\x37\x35\x2e\x38\x20\x2d\x31\x38\ \x2e\x34\x43\x2d\x37\x35\x2e\x38\x20\x2d\x31\x38\x2e\x34\x20\x2d\ \x38\x32\x2e\x32\x20\x2d\x31\x38\x2e\x38\x20\x2d\x38\x35\x20\x2d\ \x31\x36\x2e\x34\x43\x2d\x38\x35\x20\x2d\x31\x36\x2e\x34\x20\x2d\ \x38\x35\x2e\x38\x20\x2d\x31\x31\x2e\x36\x20\x2d\x38\x37\x2e\x34\ \x20\x2d\x31\x31\x2e\x32\x43\x2d\x38\x37\x2e\x34\x20\x2d\x31\x31\ \x2e\x32\x20\x2d\x39\x30\x2e\x32\x20\x2d\x31\x30\x20\x2d\x38\x37\ \x2e\x38\x20\x2d\x36\x43\x2d\x38\x37\x2e\x38\x20\x2d\x36\x20\x2d\ \x38\x39\x2e\x34\x20\x2d\x33\x2e\x32\x20\x2d\x38\x39\x2e\x38\x20\ \x2d\x31\x2e\x36\x43\x2d\x38\x39\x2e\x38\x20\x2d\x31\x2e\x36\x20\ \x2d\x38\x39\x20\x31\x2e\x32\x20\x2d\x39\x33\x2e\x34\x20\x36\x2e\ \x38\x43\x2d\x39\x33\x2e\x34\x20\x36\x2e\x38\x20\x2d\x39\x39\x2e\ \x38\x20\x32\x35\x2e\x36\x20\x2d\x39\x37\x2e\x38\x20\x33\x30\x2e\ \x38\x43\x2d\x39\x37\x2e\x38\x20\x33\x30\x2e\x38\x20\x2d\x39\x37\ \x2e\x34\x20\x33\x35\x2e\x36\x20\x2d\x31\x30\x30\x2e\x32\x20\x33\ \x37\x2e\x32\x43\x2d\x31\x30\x30\x2e\x32\x20\x33\x37\x2e\x32\x20\ \x2d\x31\x30\x33\x2e\x38\x20\x33\x36\x2e\x38\x20\x2d\x39\x35\x2e\ \x34\x20\x34\x38\x2e\x38\x43\x2d\x39\x35\x2e\x34\x20\x34\x38\x2e\ \x38\x20\x2d\x39\x34\x2e\x36\x20\x35\x30\x20\x2d\x39\x37\x2e\x38\ \x20\x35\x32\x2e\x34\x43\x2d\x39\x37\x2e\x38\x20\x35\x32\x2e\x34\ \x20\x2d\x31\x31\x35\x20\x35\x36\x20\x2d\x31\x31\x37\x2e\x34\x20\ \x37\x32\x2e\x34\x43\x2d\x31\x31\x37\x2e\x34\x20\x37\x32\x2e\x34\ \x20\x2d\x31\x33\x31\x20\x38\x37\x2e\x32\x20\x2d\x31\x33\x31\x20\ \x39\x32\x2e\x34\x43\x2d\x31\x33\x31\x20\x39\x34\x2e\x37\x30\x35\ \x20\x2d\x31\x33\x30\x2e\x37\x32\x39\x20\x39\x37\x2e\x38\x35\x32\ \x20\x2d\x31\x33\x30\x2e\x30\x33\x20\x31\x30\x32\x2e\x34\x36\x35\ \x43\x2d\x31\x33\x30\x2e\x30\x33\x20\x31\x30\x32\x2e\x34\x36\x35\ \x20\x2d\x31\x33\x30\x2e\x36\x20\x31\x31\x30\x2e\x38\x30\x31\x20\ \x2d\x31\x30\x33\x20\x31\x31\x31\x2e\x36\x30\x31\x43\x2d\x37\x35\ \x2e\x34\x20\x31\x31\x32\x2e\x34\x30\x31\x20\x32\x39\x39\x2e\x37\ \x31\x37\x20\x38\x30\x2e\x32\x34\x35\x20\x32\x39\x39\x2e\x37\x31\ \x37\x20\x38\x30\x2e\x32\x34\x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x37\x32\x32\ \x36\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x31\x31\x35\x2e\x36\x20\x31\x30\x32\x2e\x36\x43\x2d\x31\x34\x30\ \x2e\x36\x20\x36\x33\x2e\x32\x20\x2d\x31\x32\x36\x2e\x32\x20\x31\ \x31\x39\x2e\x36\x30\x31\x20\x2d\x31\x32\x36\x2e\x32\x20\x31\x31\ \x39\x2e\x36\x30\x31\x43\x2d\x31\x31\x37\x2e\x34\x20\x31\x35\x34\ \x2e\x30\x30\x31\x20\x31\x32\x2e\x32\x20\x31\x31\x36\x2e\x34\x30\ \x31\x20\x31\x32\x2e\x32\x20\x31\x31\x36\x2e\x34\x30\x31\x43\x31\ \x32\x2e\x32\x20\x31\x31\x36\x2e\x34\x30\x31\x20\x31\x38\x31\x2e\ \x30\x30\x31\x20\x38\x36\x20\x31\x39\x32\x2e\x32\x30\x31\x20\x38\ \x32\x43\x32\x30\x33\x2e\x34\x30\x31\x20\x37\x38\x20\x32\x39\x38\ \x2e\x36\x30\x31\x20\x38\x34\x2e\x34\x20\x32\x39\x38\x2e\x36\x30\ \x31\x20\x38\x34\x2e\x34\x4c\x32\x39\x33\x2e\x30\x30\x31\x20\x36\ \x37\x2e\x36\x43\x32\x32\x38\x2e\x32\x30\x31\x20\x32\x31\x2e\x32\ \x20\x32\x30\x39\x2e\x30\x30\x31\x20\x34\x34\x2e\x34\x20\x31\x39\ \x35\x2e\x34\x30\x31\x20\x34\x30\x2e\x34\x43\x31\x38\x31\x2e\x38\ \x30\x31\x20\x33\x36\x2e\x34\x20\x31\x38\x34\x2e\x32\x30\x31\x20\ \x34\x36\x20\x31\x38\x31\x2e\x30\x30\x31\x20\x34\x36\x2e\x38\x43\ \x31\x37\x37\x2e\x38\x30\x31\x20\x34\x37\x2e\x36\x20\x31\x33\x38\ \x2e\x36\x30\x31\x20\x32\x32\x2e\x38\x20\x31\x33\x32\x2e\x32\x30\ \x31\x20\x32\x33\x2e\x36\x43\x31\x32\x35\x2e\x38\x30\x31\x20\x32\ \x34\x2e\x34\x20\x31\x30\x30\x2e\x34\x35\x39\x20\x30\x2e\x36\x34\ \x39\x20\x31\x31\x35\x2e\x34\x30\x31\x20\x33\x32\x2e\x34\x43\x31\ \x33\x31\x2e\x34\x30\x31\x20\x36\x36\x2e\x34\x20\x35\x37\x20\x37\ \x31\x2e\x36\x20\x34\x30\x2e\x32\x20\x36\x30\x2e\x34\x43\x32\x33\ \x2e\x34\x20\x34\x39\x2e\x32\x20\x34\x37\x2e\x34\x20\x37\x38\x2e\ \x38\x20\x34\x37\x2e\x34\x20\x37\x38\x2e\x38\x43\x36\x35\x2e\x38\ \x20\x39\x38\x2e\x38\x20\x33\x31\x2e\x34\x20\x38\x32\x20\x33\x31\ \x2e\x34\x20\x38\x32\x43\x2d\x33\x20\x36\x39\x2e\x32\x20\x2d\x32\ \x37\x20\x39\x34\x2e\x38\x20\x2d\x33\x30\x2e\x32\x20\x39\x35\x2e\ \x36\x43\x2d\x33\x33\x2e\x34\x20\x39\x36\x2e\x34\x20\x2d\x33\x38\ \x2e\x32\x20\x39\x39\x2e\x36\x20\x2d\x33\x39\x20\x39\x33\x2e\x32\ \x43\x2d\x33\x39\x2e\x38\x20\x38\x36\x2e\x38\x20\x2d\x34\x37\x2e\ \x33\x31\x20\x37\x30\x2e\x30\x39\x39\x20\x2d\x37\x39\x20\x39\x36\ \x2e\x34\x43\x2d\x39\x39\x20\x31\x31\x33\x2e\x30\x30\x31\x20\x2d\ \x31\x31\x32\x2e\x38\x20\x39\x31\x20\x2d\x31\x31\x32\x2e\x38\x20\ \x39\x31\x4c\x2d\x31\x31\x35\x2e\x36\x20\x31\x30\x32\x2e\x36\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x65\x38\x37\x66\x33\x61\x22\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x31\x33\x33\x2e\x35\x31\x20\x32\x35\x2e\ \x33\x34\x36\x43\x31\x32\x37\x2e\x31\x31\x20\x32\x36\x2e\x31\x34\ \x36\x20\x31\x30\x31\x2e\x37\x34\x33\x20\x32\x2e\x34\x30\x37\x20\ \x31\x31\x36\x2e\x37\x31\x20\x33\x34\x2e\x31\x34\x36\x43\x31\x33\ \x33\x2e\x33\x31\x20\x36\x39\x2e\x33\x34\x36\x20\x35\x38\x2e\x33\ \x31\x20\x37\x33\x2e\x33\x34\x36\x20\x34\x31\x2e\x35\x31\x20\x36\ \x32\x2e\x31\x34\x36\x43\x32\x34\x2e\x37\x30\x39\x20\x35\x30\x2e\ \x39\x34\x36\x20\x34\x38\x2e\x37\x31\x20\x38\x30\x2e\x35\x34\x36\ \x20\x34\x38\x2e\x37\x31\x20\x38\x30\x2e\x35\x34\x36\x43\x36\x37\ \x2e\x31\x31\x20\x31\x30\x30\x2e\x35\x34\x36\x20\x33\x32\x2e\x37\ \x30\x39\x20\x38\x33\x2e\x37\x34\x36\x20\x33\x32\x2e\x37\x30\x39\ \x20\x38\x33\x2e\x37\x34\x36\x43\x2d\x31\x2e\x36\x39\x31\x20\x37\ \x30\x2e\x39\x34\x36\x20\x2d\x32\x35\x2e\x36\x39\x31\x20\x39\x36\ \x2e\x35\x34\x36\x20\x2d\x32\x38\x2e\x38\x39\x31\x20\x39\x37\x2e\ \x33\x34\x36\x43\x2d\x33\x32\x2e\x30\x39\x31\x20\x39\x38\x2e\x31\ \x34\x36\x20\x2d\x33\x36\x2e\x38\x39\x31\x20\x31\x30\x31\x2e\x33\ \x34\x36\x20\x2d\x33\x37\x2e\x36\x39\x31\x20\x39\x34\x2e\x39\x34\ \x36\x43\x2d\x33\x38\x2e\x34\x39\x31\x20\x38\x38\x2e\x35\x34\x36\ \x20\x2d\x34\x35\x2e\x38\x37\x20\x37\x32\x2e\x30\x31\x32\x20\x2d\ \x37\x37\x2e\x36\x39\x31\x20\x39\x38\x2e\x31\x34\x36\x43\x2d\x39\ \x38\x2e\x39\x32\x37\x20\x31\x31\x35\x2e\x34\x39\x32\x20\x2d\x31\ \x31\x32\x2e\x34\x31\x38\x20\x39\x34\x2e\x30\x33\x37\x20\x2d\x31\ \x31\x32\x2e\x34\x31\x38\x20\x39\x34\x2e\x30\x33\x37\x4c\x2d\x31\ \x31\x35\x2e\x36\x31\x38\x20\x31\x30\x34\x2e\x31\x34\x36\x43\x2d\ \x31\x34\x30\x2e\x36\x31\x38\x20\x36\x34\x2e\x33\x34\x36\x20\x2d\ \x31\x32\x35\x2e\x35\x34\x36\x20\x31\x32\x32\x2e\x36\x35\x35\x20\ \x2d\x31\x32\x35\x2e\x35\x34\x36\x20\x31\x32\x32\x2e\x36\x35\x35\ \x43\x2d\x31\x31\x36\x2e\x37\x34\x35\x20\x31\x35\x37\x2e\x30\x35\ \x36\x20\x31\x33\x2e\x35\x30\x39\x20\x31\x31\x38\x2e\x31\x34\x36\ \x20\x31\x33\x2e\x35\x30\x39\x20\x31\x31\x38\x2e\x31\x34\x36\x43\ \x31\x33\x2e\x35\x30\x39\x20\x31\x31\x38\x2e\x31\x34\x36\x20\x31\ \x38\x32\x2e\x33\x31\x20\x38\x37\x2e\x37\x34\x36\x20\x31\x39\x33\ \x2e\x35\x31\x20\x38\x33\x2e\x37\x34\x36\x43\x32\x30\x34\x2e\x37\ \x31\x20\x37\x39\x2e\x37\x34\x36\x20\x32\x39\x39\x2e\x30\x33\x38\ \x20\x38\x36\x2e\x30\x37\x33\x20\x32\x39\x39\x2e\x30\x33\x38\x20\ \x38\x36\x2e\x30\x37\x33\x4c\x32\x39\x33\x2e\x35\x31\x20\x36\x38\ \x2e\x37\x36\x34\x43\x32\x32\x38\x2e\x37\x31\x20\x32\x32\x2e\x33\ \x36\x34\x20\x32\x31\x30\x2e\x33\x31\x20\x34\x36\x2e\x31\x34\x36\ \x20\x31\x39\x36\x2e\x37\x31\x20\x34\x32\x2e\x31\x34\x36\x43\x31\ \x38\x33\x2e\x31\x31\x20\x33\x38\x2e\x31\x34\x36\x20\x31\x38\x35\ \x2e\x35\x31\x20\x34\x37\x2e\x37\x34\x36\x20\x31\x38\x32\x2e\x33\ \x31\x20\x34\x38\x2e\x35\x34\x36\x43\x31\x37\x39\x2e\x31\x31\x20\ \x34\x39\x2e\x33\x34\x36\x20\x31\x33\x39\x2e\x39\x31\x20\x32\x34\ \x2e\x35\x34\x36\x20\x31\x33\x33\x2e\x35\x31\x20\x32\x35\x2e\x33\ \x34\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x65\x61\x38\x63\x34\x64\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x33\x34\x2e\x38\x31\x39\ \x20\x32\x37\x2e\x30\x39\x31\x43\x31\x32\x38\x2e\x34\x31\x39\x20\ \x32\x37\x2e\x38\x39\x31\x20\x31\x30\x33\x2e\x36\x38\x35\x20\x33\ \x2e\x38\x36\x32\x20\x31\x31\x38\x2e\x30\x31\x39\x20\x33\x35\x2e\ \x38\x39\x31\x43\x31\x33\x34\x2e\x32\x31\x39\x20\x37\x32\x2e\x30\ \x39\x32\x20\x35\x39\x2e\x36\x31\x39\x20\x37\x35\x2e\x30\x39\x32\ \x20\x34\x32\x2e\x38\x31\x39\x20\x36\x33\x2e\x38\x39\x32\x43\x32\ \x36\x2e\x30\x31\x39\x20\x35\x32\x2e\x36\x39\x32\x20\x35\x30\x2e\ \x30\x31\x39\x20\x38\x32\x2e\x32\x39\x32\x20\x35\x30\x2e\x30\x31\ \x39\x20\x38\x32\x2e\x32\x39\x32\x43\x36\x38\x2e\x34\x31\x39\x20\ \x31\x30\x32\x2e\x32\x39\x32\x20\x33\x34\x2e\x30\x31\x39\x20\x38\ \x35\x2e\x34\x39\x32\x20\x33\x34\x2e\x30\x31\x39\x20\x38\x35\x2e\ \x34\x39\x32\x43\x2d\x30\x2e\x33\x38\x31\x20\x37\x32\x2e\x36\x39\ \x32\x20\x2d\x32\x34\x2e\x33\x38\x32\x20\x39\x38\x2e\x32\x39\x32\ \x20\x2d\x32\x37\x2e\x35\x38\x32\x20\x39\x39\x2e\x30\x39\x32\x43\ \x2d\x33\x30\x2e\x37\x38\x32\x20\x39\x39\x2e\x38\x39\x32\x20\x2d\ \x33\x35\x2e\x35\x38\x32\x20\x31\x30\x33\x2e\x30\x39\x32\x20\x2d\ \x33\x36\x2e\x33\x38\x32\x20\x39\x36\x2e\x36\x39\x32\x43\x2d\x33\ \x37\x2e\x31\x38\x32\x20\x39\x30\x2e\x32\x39\x32\x20\x2d\x34\x34\ \x2e\x34\x33\x20\x37\x33\x2e\x39\x32\x35\x20\x2d\x37\x36\x2e\x33\ \x38\x32\x20\x39\x39\x2e\x38\x39\x32\x43\x2d\x39\x38\x2e\x38\x35\ \x35\x20\x31\x31\x37\x2e\x39\x38\x33\x20\x2d\x31\x31\x32\x2e\x30\ \x33\x36\x20\x39\x37\x2e\x30\x37\x34\x20\x2d\x31\x31\x32\x2e\x30\ \x33\x36\x20\x39\x37\x2e\x30\x37\x34\x4c\x2d\x31\x31\x35\x2e\x36\ \x33\x36\x20\x31\x30\x35\x2e\x36\x39\x32\x43\x2d\x31\x33\x39\x2e\ \x34\x33\x36\x20\x36\x36\x2e\x36\x39\x32\x20\x2d\x31\x32\x34\x2e\ \x38\x39\x31\x20\x31\x32\x35\x2e\x37\x31\x20\x2d\x31\x32\x34\x2e\ \x38\x39\x31\x20\x31\x32\x35\x2e\x37\x31\x43\x2d\x31\x31\x36\x2e\ \x30\x39\x31\x20\x31\x36\x30\x2e\x31\x31\x20\x31\x34\x2e\x38\x31\ \x39\x20\x31\x31\x39\x2e\x38\x39\x32\x20\x31\x34\x2e\x38\x31\x39\ \x20\x31\x31\x39\x2e\x38\x39\x32\x43\x31\x34\x2e\x38\x31\x39\x20\ \x31\x31\x39\x2e\x38\x39\x32\x20\x31\x38\x33\x2e\x36\x31\x39\x20\ \x38\x39\x2e\x34\x39\x32\x20\x31\x39\x34\x2e\x38\x31\x39\x20\x38\ \x35\x2e\x34\x39\x32\x43\x32\x30\x36\x2e\x30\x31\x39\x20\x38\x31\ \x2e\x34\x39\x32\x20\x32\x39\x39\x2e\x34\x37\x34\x20\x38\x37\x2e\ \x37\x34\x36\x20\x32\x39\x39\x2e\x34\x37\x34\x20\x38\x37\x2e\x37\ \x34\x36\x4c\x32\x39\x34\x2e\x30\x32\x20\x36\x39\x2e\x39\x32\x38\ \x43\x32\x32\x39\x2e\x32\x31\x39\x20\x32\x33\x2e\x35\x32\x38\x20\ \x32\x31\x31\x2e\x36\x31\x39\x20\x34\x37\x2e\x38\x39\x31\x20\x31\ \x39\x38\x2e\x30\x31\x39\x20\x34\x33\x2e\x38\x39\x31\x43\x31\x38\ \x34\x2e\x34\x31\x39\x20\x33\x39\x2e\x38\x39\x31\x20\x31\x38\x36\ \x2e\x38\x31\x39\x20\x34\x39\x2e\x34\x39\x31\x20\x31\x38\x33\x2e\ \x36\x31\x39\x20\x35\x30\x2e\x32\x39\x32\x43\x31\x38\x30\x2e\x34\ \x31\x39\x20\x35\x31\x2e\x30\x39\x32\x20\x31\x34\x31\x2e\x32\x31\ \x39\x20\x32\x36\x2e\x32\x39\x31\x20\x31\x33\x34\x2e\x38\x31\x39\ \x20\x32\x37\x2e\x30\x39\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x65\x63\x39\x39\x36\x31\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x33\ \x36\x2e\x31\x32\x38\x20\x32\x38\x2e\x38\x33\x37\x43\x31\x32\x39\ \x2e\x37\x32\x38\x20\x32\x39\x2e\x36\x33\x37\x20\x31\x30\x34\x2e\ \x39\x39\x39\x20\x35\x2e\x36\x30\x35\x20\x31\x31\x39\x2e\x33\x32\ \x38\x20\x33\x37\x2e\x36\x33\x37\x43\x31\x33\x36\x2e\x31\x32\x38\ \x20\x37\x35\x2e\x31\x39\x33\x20\x36\x30\x2e\x33\x39\x34\x20\x37\ \x36\x2e\x34\x38\x32\x20\x34\x34\x2e\x31\x32\x38\x20\x36\x35\x2e\ \x36\x33\x37\x43\x32\x37\x2e\x33\x32\x38\x20\x35\x34\x2e\x34\x33\ \x37\x20\x35\x31\x2e\x33\x32\x38\x20\x38\x34\x2e\x30\x33\x37\x20\ \x35\x31\x2e\x33\x32\x38\x20\x38\x34\x2e\x30\x33\x37\x43\x36\x39\ \x2e\x37\x32\x38\x20\x31\x30\x34\x2e\x30\x33\x37\x20\x33\x35\x2e\ \x33\x32\x38\x20\x38\x37\x2e\x32\x33\x37\x20\x33\x35\x2e\x33\x32\ \x38\x20\x38\x37\x2e\x32\x33\x37\x43\x30\x2e\x39\x32\x38\x20\x37\ \x34\x2e\x34\x33\x37\x20\x2d\x32\x33\x2e\x30\x37\x32\x20\x31\x30\ \x30\x2e\x30\x33\x37\x20\x2d\x32\x36\x2e\x32\x37\x32\x20\x31\x30\ \x30\x2e\x38\x33\x37\x43\x2d\x32\x39\x2e\x34\x37\x32\x20\x31\x30\ \x31\x2e\x36\x33\x37\x20\x2d\x33\x34\x2e\x32\x37\x32\x20\x31\x30\ \x34\x2e\x38\x33\x37\x20\x2d\x33\x35\x2e\x30\x37\x32\x20\x39\x38\ \x2e\x34\x33\x37\x43\x2d\x33\x35\x2e\x38\x37\x32\x20\x39\x32\x2e\ \x30\x33\x37\x20\x2d\x34\x32\x2e\x39\x38\x39\x20\x37\x35\x2e\x38\ \x33\x39\x20\x2d\x37\x35\x2e\x30\x37\x33\x20\x31\x30\x31\x2e\x36\ \x33\x37\x43\x2d\x39\x38\x2e\x37\x38\x32\x20\x31\x32\x30\x2e\x34\ \x37\x34\x20\x2d\x31\x31\x31\x2e\x36\x35\x35\x20\x31\x30\x30\x2e\ \x31\x31\x20\x2d\x31\x31\x31\x2e\x36\x35\x35\x20\x31\x30\x30\x2e\ \x31\x31\x4c\x2d\x31\x31\x35\x2e\x36\x35\x35\x20\x31\x30\x37\x2e\ \x32\x33\x37\x43\x2d\x31\x33\x37\x2e\x34\x35\x35\x20\x37\x30\x2e\ \x34\x33\x37\x20\x2d\x31\x32\x34\x2e\x32\x33\x36\x20\x31\x32\x38\ \x2e\x37\x36\x35\x20\x2d\x31\x32\x34\x2e\x32\x33\x36\x20\x31\x32\ \x38\x2e\x37\x36\x35\x43\x2d\x31\x31\x35\x2e\x34\x33\x36\x20\x31\ \x36\x33\x2e\x31\x36\x35\x20\x31\x36\x2e\x31\x32\x38\x20\x31\x32\ \x31\x2e\x36\x33\x37\x20\x31\x36\x2e\x31\x32\x38\x20\x31\x32\x31\ \x2e\x36\x33\x37\x43\x31\x36\x2e\x31\x32\x38\x20\x31\x32\x31\x2e\ \x36\x33\x37\x20\x31\x38\x34\x2e\x39\x32\x38\x20\x39\x31\x2e\x32\ \x33\x37\x20\x31\x39\x36\x2e\x31\x32\x39\x20\x38\x37\x2e\x32\x33\ \x37\x43\x32\x30\x37\x2e\x33\x32\x39\x20\x38\x33\x2e\x32\x33\x37\ \x20\x32\x39\x39\x2e\x39\x31\x31\x20\x38\x39\x2e\x34\x31\x39\x20\ \x32\x39\x39\x2e\x39\x31\x31\x20\x38\x39\x2e\x34\x31\x39\x4c\x32\ \x39\x34\x2e\x35\x32\x39\x20\x37\x31\x2e\x30\x39\x32\x43\x32\x32\ \x39\x2e\x37\x32\x39\x20\x32\x34\x2e\x36\x39\x31\x20\x32\x31\x32\ \x2e\x39\x32\x39\x20\x34\x39\x2e\x36\x33\x37\x20\x31\x39\x39\x2e\ \x33\x32\x39\x20\x34\x35\x2e\x36\x33\x37\x43\x31\x38\x35\x2e\x37\ \x32\x38\x20\x34\x31\x2e\x36\x33\x37\x20\x31\x38\x38\x2e\x31\x32\ \x38\x20\x35\x31\x2e\x32\x33\x37\x20\x31\x38\x34\x2e\x39\x32\x38\ \x20\x35\x32\x2e\x30\x33\x37\x43\x31\x38\x31\x2e\x37\x32\x38\x20\ \x35\x32\x2e\x38\x33\x37\x20\x31\x34\x32\x2e\x35\x32\x38\x20\x32\ \x38\x2e\x30\x33\x37\x20\x31\x33\x36\x2e\x31\x32\x38\x20\x32\x38\ \x2e\x38\x33\x37\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x65\x65\x61\x35\x37\x35\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x33\x37\x2e\x34\ \x33\x38\x20\x33\x30\x2e\x35\x38\x33\x43\x31\x33\x31\x2e\x30\x33\ \x37\x20\x33\x31\x2e\x33\x38\x33\x20\x31\x30\x36\x2e\x38\x31\x34\ \x20\x37\x2e\x31\x32\x39\x20\x31\x32\x30\x2e\x36\x33\x37\x20\x33\ \x39\x2e\x33\x38\x33\x43\x31\x33\x37\x2e\x34\x33\x38\x20\x37\x38\ \x2e\x35\x38\x33\x20\x36\x32\x2e\x32\x33\x37\x20\x37\x38\x2e\x35\ \x38\x33\x20\x34\x35\x2e\x34\x33\x37\x20\x36\x37\x2e\x33\x38\x33\ \x43\x32\x38\x2e\x36\x33\x37\x20\x35\x36\x2e\x31\x38\x33\x20\x35\ \x32\x2e\x36\x33\x37\x20\x38\x35\x2e\x37\x38\x33\x20\x35\x32\x2e\ \x36\x33\x37\x20\x38\x35\x2e\x37\x38\x33\x43\x37\x31\x2e\x30\x33\ \x37\x20\x31\x30\x35\x2e\x37\x38\x33\x20\x33\x36\x2e\x36\x33\x37\ \x20\x38\x38\x2e\x39\x38\x33\x20\x33\x36\x2e\x36\x33\x37\x20\x38\ \x38\x2e\x39\x38\x33\x43\x32\x2e\x32\x33\x37\x20\x37\x36\x2e\x31\ \x38\x33\x20\x2d\x32\x31\x2e\x37\x36\x33\x20\x31\x30\x31\x2e\x37\ \x38\x33\x20\x2d\x32\x34\x2e\x39\x36\x33\x20\x31\x30\x32\x2e\x35\ \x38\x33\x43\x2d\x32\x38\x2e\x31\x36\x33\x20\x31\x30\x33\x2e\x33\ \x38\x33\x20\x2d\x33\x32\x2e\x39\x36\x33\x20\x31\x30\x36\x2e\x35\ \x38\x33\x20\x2d\x33\x33\x2e\x37\x36\x33\x20\x31\x30\x30\x2e\x31\ \x38\x33\x43\x2d\x33\x34\x2e\x35\x36\x33\x20\x39\x33\x2e\x37\x38\ \x33\x20\x2d\x34\x31\x2e\x35\x34\x38\x20\x37\x37\x2e\x37\x35\x32\ \x20\x2d\x37\x33\x2e\x37\x36\x33\x20\x31\x30\x33\x2e\x33\x38\x33\ \x43\x2d\x39\x38\x2e\x37\x30\x39\x20\x31\x32\x32\x2e\x39\x36\x35\ \x20\x2d\x31\x31\x31\x2e\x32\x37\x33\x20\x31\x30\x33\x2e\x31\x34\ \x36\x20\x2d\x31\x31\x31\x2e\x32\x37\x33\x20\x31\x30\x33\x2e\x31\ \x34\x36\x4c\x2d\x31\x31\x35\x2e\x36\x37\x33\x20\x31\x30\x38\x2e\ \x37\x38\x33\x43\x2d\x31\x33\x35\x2e\x34\x37\x33\x20\x37\x33\x2e\ \x39\x38\x32\x20\x2d\x31\x32\x33\x2e\x35\x38\x32\x20\x31\x33\x31\ \x2e\x38\x31\x39\x20\x2d\x31\x32\x33\x2e\x35\x38\x32\x20\x31\x33\ \x31\x2e\x38\x31\x39\x43\x2d\x31\x31\x34\x2e\x37\x38\x32\x20\x31\ \x36\x36\x2e\x32\x32\x20\x31\x37\x2e\x34\x33\x37\x20\x31\x32\x33\ \x2e\x33\x38\x33\x20\x31\x37\x2e\x34\x33\x37\x20\x31\x32\x33\x2e\ \x33\x38\x33\x43\x31\x37\x2e\x34\x33\x37\x20\x31\x32\x33\x2e\x33\ \x38\x33\x20\x31\x38\x36\x2e\x32\x33\x38\x20\x39\x32\x2e\x39\x38\ \x33\x20\x31\x39\x37\x2e\x34\x33\x38\x20\x38\x38\x2e\x39\x38\x33\ \x43\x32\x30\x38\x2e\x36\x33\x38\x20\x38\x34\x2e\x39\x38\x33\x20\ \x33\x30\x30\x2e\x33\x34\x37\x20\x39\x31\x2e\x30\x39\x32\x20\x33\ \x30\x30\x2e\x33\x34\x37\x20\x39\x31\x2e\x30\x39\x32\x4c\x32\x39\ \x35\x2e\x30\x33\x38\x20\x37\x32\x2e\x32\x35\x35\x43\x32\x33\x30\ \x2e\x32\x33\x38\x20\x32\x35\x2e\x38\x35\x35\x20\x32\x31\x34\x2e\ \x32\x33\x38\x20\x35\x31\x2e\x33\x38\x33\x20\x32\x30\x30\x2e\x36\ \x33\x38\x20\x34\x37\x2e\x33\x38\x33\x43\x31\x38\x37\x2e\x30\x33\ \x38\x20\x34\x33\x2e\x33\x38\x33\x20\x31\x38\x39\x2e\x34\x33\x38\ \x20\x35\x32\x2e\x39\x38\x33\x20\x31\x38\x36\x2e\x32\x33\x38\x20\ \x35\x33\x2e\x37\x38\x33\x43\x31\x38\x33\x2e\x30\x33\x38\x20\x35\ \x34\x2e\x35\x38\x33\x20\x31\x34\x33\x2e\x38\x33\x38\x20\x32\x39\ \x2e\x37\x38\x33\x20\x31\x33\x37\x2e\x34\x33\x38\x20\x33\x30\x2e\ \x35\x38\x33\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x66\x31\x62\x32\x38\x38\x22\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x33\x38\x2e\x37\x34\ \x37\x20\x33\x32\x2e\x33\x32\x38\x43\x31\x33\x32\x2e\x33\x34\x37\ \x20\x33\x33\x2e\x31\x32\x38\x20\x31\x30\x36\x2e\x33\x38\x33\x20\ \x39\x2e\x36\x37\x37\x20\x31\x32\x31\x2e\x39\x34\x37\x20\x34\x31\ \x2e\x31\x32\x38\x43\x31\x34\x31\x2e\x31\x34\x37\x20\x37\x39\x2e\ \x39\x32\x38\x20\x36\x33\x2e\x35\x34\x36\x20\x38\x30\x2e\x33\x32\ \x38\x20\x34\x36\x2e\x37\x34\x36\x20\x36\x39\x2e\x31\x32\x38\x43\ \x32\x39\x2e\x39\x34\x36\x20\x35\x37\x2e\x39\x32\x38\x20\x35\x33\ \x2e\x39\x34\x36\x20\x38\x37\x2e\x35\x32\x38\x20\x35\x33\x2e\x39\ \x34\x36\x20\x38\x37\x2e\x35\x32\x38\x43\x37\x32\x2e\x33\x34\x36\ \x20\x31\x30\x37\x2e\x35\x32\x38\x20\x33\x37\x2e\x39\x34\x36\x20\ \x39\x30\x2e\x37\x32\x38\x20\x33\x37\x2e\x39\x34\x36\x20\x39\x30\ \x2e\x37\x32\x38\x43\x33\x2e\x35\x34\x36\x20\x37\x37\x2e\x39\x32\ \x38\x20\x2d\x32\x30\x2e\x34\x35\x34\x20\x31\x30\x33\x2e\x35\x32\ \x38\x20\x2d\x32\x33\x2e\x36\x35\x34\x20\x31\x30\x34\x2e\x33\x32\ \x38\x43\x2d\x32\x36\x2e\x38\x35\x34\x20\x31\x30\x35\x2e\x31\x32\ \x38\x20\x2d\x33\x31\x2e\x36\x35\x34\x20\x31\x30\x38\x2e\x33\x32\ \x38\x20\x2d\x33\x32\x2e\x34\x35\x34\x20\x31\x30\x31\x2e\x39\x32\ \x38\x43\x2d\x33\x33\x2e\x32\x35\x34\x20\x39\x35\x2e\x35\x32\x38\ \x20\x2d\x34\x30\x2e\x31\x30\x38\x20\x37\x39\x2e\x36\x36\x35\x20\ \x2d\x37\x32\x2e\x34\x35\x34\x20\x31\x30\x35\x2e\x31\x32\x38\x43\ \x2d\x39\x38\x2e\x36\x33\x36\x20\x31\x32\x35\x2e\x34\x35\x36\x20\ \x2d\x31\x31\x30\x2e\x38\x39\x31\x20\x31\x30\x36\x2e\x31\x38\x33\ \x20\x2d\x31\x31\x30\x2e\x38\x39\x31\x20\x31\x30\x36\x2e\x31\x38\ \x33\x4c\x2d\x31\x31\x35\x2e\x36\x39\x31\x20\x31\x31\x30\x2e\x33\ \x32\x38\x43\x2d\x31\x33\x33\x2e\x36\x39\x31\x20\x37\x37\x2e\x31\ \x32\x38\x20\x2d\x31\x32\x32\x2e\x39\x32\x37\x20\x31\x33\x34\x2e\ \x38\x37\x34\x20\x2d\x31\x32\x32\x2e\x39\x32\x37\x20\x31\x33\x34\ \x2e\x38\x37\x34\x43\x2d\x31\x31\x34\x2e\x31\x32\x37\x20\x31\x36\ \x39\x2e\x32\x37\x34\x20\x31\x38\x2e\x37\x34\x36\x20\x31\x32\x35\ \x2e\x31\x32\x38\x20\x31\x38\x2e\x37\x34\x36\x20\x31\x32\x35\x2e\ \x31\x32\x38\x43\x31\x38\x2e\x37\x34\x36\x20\x31\x32\x35\x2e\x31\ \x32\x38\x20\x31\x38\x37\x2e\x35\x34\x37\x20\x39\x34\x2e\x37\x32\ \x38\x20\x31\x39\x38\x2e\x37\x34\x37\x20\x39\x30\x2e\x37\x32\x38\ \x43\x32\x30\x39\x2e\x39\x34\x37\x20\x38\x36\x2e\x37\x32\x38\x20\ \x33\x30\x30\x2e\x37\x38\x33\x20\x39\x32\x2e\x37\x36\x34\x20\x33\ \x30\x30\x2e\x37\x38\x33\x20\x39\x32\x2e\x37\x36\x34\x4c\x32\x39\ \x35\x2e\x35\x34\x37\x20\x37\x33\x2e\x34\x31\x39\x43\x32\x33\x30\ \x2e\x37\x34\x37\x20\x32\x37\x2e\x30\x31\x39\x20\x32\x31\x35\x2e\ \x35\x34\x37\x20\x35\x33\x2e\x31\x32\x38\x20\x32\x30\x31\x2e\x39\ \x34\x37\x20\x34\x39\x2e\x31\x32\x38\x43\x31\x38\x38\x2e\x33\x34\ \x37\x20\x34\x35\x2e\x31\x32\x38\x20\x31\x39\x30\x2e\x37\x34\x37\ \x20\x35\x34\x2e\x37\x32\x38\x20\x31\x38\x37\x2e\x35\x34\x37\x20\ \x35\x35\x2e\x35\x32\x38\x43\x31\x38\x34\x2e\x33\x34\x37\x20\x35\ \x36\x2e\x33\x32\x38\x20\x31\x34\x35\x2e\x31\x34\x37\x20\x33\x31\ \x2e\x35\x32\x38\x20\x31\x33\x38\x2e\x37\x34\x37\x20\x33\x32\x2e\ \x33\x32\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x66\x33\x62\x66\x39\x63\x22\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x34\x30\x2e\x30\x35\ \x36\x20\x33\x34\x2e\x30\x37\x33\x43\x31\x33\x33\x2e\x36\x35\x35\ \x20\x33\x34\x2e\x38\x37\x33\x20\x31\x30\x37\x2e\x33\x31\x33\x20\ \x31\x31\x2e\x36\x31\x33\x20\x31\x32\x33\x2e\x32\x35\x35\x20\x34\ \x32\x2e\x38\x37\x33\x43\x31\x34\x33\x2e\x36\x35\x36\x20\x38\x32\ \x2e\x38\x37\x34\x20\x36\x34\x2e\x38\x35\x35\x20\x38\x32\x2e\x30\ \x37\x34\x20\x34\x38\x2e\x30\x35\x35\x20\x37\x30\x2e\x38\x37\x34\ \x43\x33\x31\x2e\x32\x35\x35\x20\x35\x39\x2e\x36\x37\x34\x20\x35\ \x35\x2e\x32\x35\x35\x20\x38\x39\x2e\x32\x37\x34\x20\x35\x35\x2e\ \x32\x35\x35\x20\x38\x39\x2e\x32\x37\x34\x43\x37\x33\x2e\x36\x35\ \x35\x20\x31\x30\x39\x2e\x32\x37\x34\x20\x33\x39\x2e\x32\x35\x35\ \x20\x39\x32\x2e\x34\x37\x34\x20\x33\x39\x2e\x32\x35\x35\x20\x39\ \x32\x2e\x34\x37\x34\x43\x34\x2e\x38\x35\x35\x20\x37\x39\x2e\x36\ \x37\x34\x20\x2d\x31\x39\x2e\x31\x34\x35\x20\x31\x30\x35\x2e\x32\ \x37\x34\x20\x2d\x32\x32\x2e\x33\x34\x35\x20\x31\x30\x36\x2e\x30\ \x37\x34\x43\x2d\x32\x35\x2e\x35\x34\x35\x20\x31\x30\x36\x2e\x38\ \x37\x34\x20\x2d\x33\x30\x2e\x33\x34\x35\x20\x31\x31\x30\x2e\x30\ \x37\x34\x20\x2d\x33\x31\x2e\x31\x34\x35\x20\x31\x30\x33\x2e\x36\ \x37\x34\x43\x2d\x33\x31\x2e\x39\x34\x35\x20\x39\x37\x2e\x32\x37\ \x34\x20\x2d\x33\x38\x2e\x36\x36\x38\x20\x38\x31\x2e\x35\x37\x38\ \x20\x2d\x37\x31\x2e\x31\x34\x35\x20\x31\x30\x36\x2e\x38\x37\x34\ \x43\x2d\x39\x38\x2e\x35\x36\x34\x20\x31\x32\x37\x2e\x39\x34\x37\ \x20\x2d\x31\x31\x30\x2e\x35\x30\x39\x20\x31\x30\x39\x2e\x32\x31\ \x39\x20\x2d\x31\x31\x30\x2e\x35\x30\x39\x20\x31\x30\x39\x2e\x32\ \x31\x39\x4c\x2d\x31\x31\x35\x2e\x37\x30\x39\x20\x31\x31\x31\x2e\ \x38\x37\x34\x43\x2d\x31\x33\x31\x2e\x37\x30\x39\x20\x38\x31\x2e\ \x36\x37\x34\x20\x2d\x31\x32\x32\x2e\x32\x37\x33\x20\x31\x33\x37\ \x2e\x39\x32\x39\x20\x2d\x31\x32\x32\x2e\x32\x37\x33\x20\x31\x33\ \x37\x2e\x39\x32\x39\x43\x2d\x31\x31\x33\x2e\x34\x37\x33\x20\x31\ \x37\x32\x2e\x33\x32\x39\x20\x32\x30\x2e\x30\x35\x35\x20\x31\x32\ \x36\x2e\x38\x37\x34\x20\x32\x30\x2e\x30\x35\x35\x20\x31\x32\x36\ \x2e\x38\x37\x34\x43\x32\x30\x2e\x30\x35\x35\x20\x31\x32\x36\x2e\ \x38\x37\x34\x20\x31\x38\x38\x2e\x38\x35\x36\x20\x39\x36\x2e\x34\ \x37\x34\x20\x32\x30\x30\x2e\x30\x35\x36\x20\x39\x32\x2e\x34\x37\ \x34\x43\x32\x31\x31\x2e\x32\x35\x36\x20\x38\x38\x2e\x34\x37\x34\ \x20\x33\x30\x31\x2e\x32\x32\x20\x39\x34\x2e\x34\x33\x37\x20\x33\ \x30\x31\x2e\x32\x32\x20\x39\x34\x2e\x34\x33\x37\x4c\x32\x39\x36\ \x2e\x30\x35\x36\x20\x37\x34\x2e\x35\x38\x33\x43\x32\x33\x31\x2e\ \x32\x35\x36\x20\x32\x38\x2e\x31\x38\x33\x20\x32\x31\x36\x2e\x38\ \x35\x36\x20\x35\x34\x2e\x38\x37\x34\x20\x32\x30\x33\x2e\x32\x35\ \x36\x20\x35\x30\x2e\x38\x37\x34\x43\x31\x38\x39\x2e\x36\x35\x36\ \x20\x34\x36\x2e\x38\x37\x33\x20\x31\x39\x32\x2e\x30\x35\x36\x20\ \x35\x36\x2e\x34\x37\x34\x20\x31\x38\x38\x2e\x38\x35\x36\x20\x35\ \x37\x2e\x32\x37\x34\x43\x31\x38\x35\x2e\x36\x35\x36\x20\x35\x38\ \x2e\x30\x37\x34\x20\x31\x34\x36\x2e\x34\x35\x36\x20\x33\x33\x2e\ \x32\x37\x33\x20\x31\x34\x30\x2e\x30\x35\x36\x20\x33\x34\x2e\x30\ \x37\x33\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x66\x35\x63\x63\x62\x30\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x34\x31\x2e\x33\x36\x35\ \x20\x33\x35\x2e\x38\x31\x39\x43\x31\x33\x34\x2e\x39\x36\x35\x20\ \x33\x36\x2e\x36\x31\x39\x20\x31\x30\x37\x2e\x35\x32\x33\x20\x31\ \x33\x2e\x39\x34\x34\x20\x31\x32\x34\x2e\x35\x36\x35\x20\x34\x34\ \x2e\x36\x31\x39\x43\x31\x34\x36\x2e\x35\x36\x35\x20\x38\x34\x2e\ \x32\x31\x39\x20\x36\x36\x2e\x31\x36\x34\x20\x38\x33\x2e\x38\x31\ \x39\x20\x34\x39\x2e\x33\x36\x34\x20\x37\x32\x2e\x36\x31\x39\x43\ \x33\x32\x2e\x35\x36\x34\x20\x36\x31\x2e\x34\x31\x39\x20\x35\x36\ \x2e\x35\x36\x34\x20\x39\x31\x2e\x30\x31\x39\x20\x35\x36\x2e\x35\ \x36\x34\x20\x39\x31\x2e\x30\x31\x39\x43\x37\x34\x2e\x39\x36\x34\ \x20\x31\x31\x31\x2e\x30\x31\x39\x20\x34\x30\x2e\x35\x36\x34\x20\ \x39\x34\x2e\x32\x31\x39\x20\x34\x30\x2e\x35\x36\x34\x20\x39\x34\ \x2e\x32\x31\x39\x43\x36\x2e\x31\x36\x34\x20\x38\x31\x2e\x34\x31\ \x39\x20\x2d\x31\x37\x2e\x38\x33\x36\x20\x31\x30\x37\x2e\x30\x31\ \x39\x20\x2d\x32\x31\x2e\x30\x33\x36\x20\x31\x30\x37\x2e\x38\x31\ \x39\x43\x2d\x32\x34\x2e\x32\x33\x36\x20\x31\x30\x38\x2e\x36\x31\ \x39\x20\x2d\x32\x39\x2e\x30\x33\x36\x20\x31\x31\x31\x2e\x38\x31\ \x39\x20\x2d\x32\x39\x2e\x38\x33\x36\x20\x31\x30\x35\x2e\x34\x31\ \x39\x43\x2d\x33\x30\x2e\x36\x33\x36\x20\x39\x39\x2e\x30\x31\x39\ \x20\x2d\x33\x37\x2e\x32\x32\x37\x20\x38\x33\x2e\x34\x39\x32\x20\ \x2d\x36\x39\x2e\x38\x33\x36\x20\x31\x30\x38\x2e\x36\x31\x39\x43\ \x2d\x39\x38\x2e\x34\x39\x31\x20\x31\x33\x30\x2e\x34\x33\x38\x20\ \x2d\x31\x31\x30\x2e\x31\x32\x37\x20\x31\x31\x32\x2e\x32\x35\x36\ \x20\x2d\x31\x31\x30\x2e\x31\x32\x37\x20\x31\x31\x32\x2e\x32\x35\ \x36\x4c\x2d\x31\x31\x35\x2e\x37\x32\x37\x20\x31\x31\x33\x2e\x34\ \x31\x39\x43\x2d\x31\x33\x30\x2e\x31\x32\x38\x20\x38\x35\x2e\x30\ \x31\x39\x20\x2d\x31\x32\x31\x2e\x36\x31\x38\x20\x31\x34\x30\x2e\ \x39\x38\x33\x20\x2d\x31\x32\x31\x2e\x36\x31\x38\x20\x31\x34\x30\ \x2e\x39\x38\x33\x43\x2d\x31\x31\x32\x2e\x38\x31\x38\x20\x31\x37\ \x35\x2e\x33\x38\x34\x20\x32\x31\x2e\x33\x36\x34\x20\x31\x32\x38\ \x2e\x36\x31\x39\x20\x32\x31\x2e\x33\x36\x34\x20\x31\x32\x38\x2e\ \x36\x31\x39\x43\x32\x31\x2e\x33\x36\x34\x20\x31\x32\x38\x2e\x36\ \x31\x39\x20\x31\x39\x30\x2e\x31\x36\x35\x20\x39\x38\x2e\x32\x31\ \x39\x20\x32\x30\x31\x2e\x33\x36\x35\x20\x39\x34\x2e\x32\x31\x39\ \x43\x32\x31\x32\x2e\x35\x36\x35\x20\x39\x30\x2e\x32\x31\x39\x20\ \x33\x30\x31\x2e\x36\x35\x36\x20\x39\x36\x2e\x31\x31\x20\x33\x30\ \x31\x2e\x36\x35\x36\x20\x39\x36\x2e\x31\x31\x4c\x32\x39\x36\x2e\ \x35\x36\x35\x20\x37\x35\x2e\x37\x34\x36\x43\x32\x33\x31\x2e\x37\ \x36\x35\x20\x32\x39\x2e\x33\x34\x36\x20\x32\x31\x38\x2e\x31\x36\ \x35\x20\x35\x36\x2e\x36\x31\x39\x20\x32\x30\x34\x2e\x35\x36\x35\ \x20\x35\x32\x2e\x36\x31\x39\x43\x31\x39\x30\x2e\x39\x36\x35\x20\ \x34\x38\x2e\x36\x31\x39\x20\x31\x39\x33\x2e\x33\x36\x35\x20\x35\ \x38\x2e\x32\x31\x39\x20\x31\x39\x30\x2e\x31\x36\x35\x20\x35\x39\ \x2e\x30\x31\x39\x43\x31\x38\x36\x2e\x39\x36\x35\x20\x35\x39\x2e\ \x38\x31\x39\x20\x31\x34\x37\x2e\x37\x36\x35\x20\x33\x35\x2e\x30\ \x31\x39\x20\x31\x34\x31\x2e\x33\x36\x35\x20\x33\x35\x2e\x38\x31\ \x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x66\x38\x64\x38\x63\x34\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x34\x32\x2e\x36\x37\x34\x20\ \x33\x37\x2e\x35\x36\x35\x43\x31\x33\x36\x2e\x32\x37\x34\x20\x33\ \x38\x2e\x33\x36\x35\x20\x31\x30\x38\x2e\x38\x33\x32\x20\x31\x35\ \x2e\x36\x38\x39\x20\x31\x32\x35\x2e\x38\x37\x34\x20\x34\x36\x2e\ \x33\x36\x35\x43\x31\x34\x37\x2e\x38\x37\x34\x20\x38\x35\x2e\x39\ \x36\x35\x20\x36\x37\x2e\x34\x37\x34\x20\x38\x35\x2e\x35\x36\x35\ \x20\x35\x30\x2e\x36\x37\x34\x20\x37\x34\x2e\x33\x36\x35\x43\x33\ \x33\x2e\x38\x37\x34\x20\x36\x33\x2e\x31\x36\x35\x20\x35\x37\x2e\ \x38\x37\x34\x20\x39\x32\x2e\x37\x36\x35\x20\x35\x37\x2e\x38\x37\ \x34\x20\x39\x32\x2e\x37\x36\x35\x43\x37\x36\x2e\x32\x37\x34\x20\ \x31\x31\x32\x2e\x37\x36\x35\x20\x34\x31\x2e\x38\x37\x34\x20\x39\ \x35\x2e\x39\x36\x35\x20\x34\x31\x2e\x38\x37\x34\x20\x39\x35\x2e\ \x39\x36\x35\x43\x37\x2e\x34\x37\x33\x20\x38\x33\x2e\x31\x36\x35\ \x20\x2d\x31\x36\x2e\x35\x32\x37\x20\x31\x30\x38\x2e\x37\x36\x35\ \x20\x2d\x31\x39\x2e\x37\x32\x37\x20\x31\x30\x39\x2e\x35\x36\x35\ \x43\x2d\x32\x32\x2e\x39\x32\x37\x20\x31\x31\x30\x2e\x33\x36\x35\ \x20\x2d\x32\x37\x2e\x37\x32\x37\x20\x31\x31\x33\x2e\x35\x36\x35\ \x20\x2d\x32\x38\x2e\x35\x32\x37\x20\x31\x30\x37\x2e\x31\x36\x35\ \x43\x2d\x32\x39\x2e\x33\x32\x37\x20\x31\x30\x30\x2e\x37\x36\x35\ \x20\x2d\x33\x35\x2e\x37\x38\x36\x20\x38\x35\x2e\x34\x30\x35\x20\ \x2d\x36\x38\x2e\x35\x32\x37\x20\x31\x31\x30\x2e\x33\x36\x35\x43\ \x2d\x39\x38\x2e\x34\x31\x38\x20\x31\x33\x32\x2e\x39\x32\x39\x20\ \x2d\x31\x30\x39\x2e\x37\x34\x35\x20\x31\x31\x35\x2e\x32\x39\x33\ \x20\x2d\x31\x30\x39\x2e\x37\x34\x35\x20\x31\x31\x35\x2e\x32\x39\ \x33\x4c\x2d\x31\x31\x35\x2e\x37\x34\x35\x20\x31\x31\x34\x2e\x39\ \x36\x35\x43\x2d\x31\x32\x39\x2e\x33\x34\x36\x20\x38\x38\x2e\x35\ \x36\x34\x20\x2d\x31\x32\x30\x2e\x39\x36\x33\x20\x31\x34\x34\x2e\ \x30\x33\x38\x20\x2d\x31\x32\x30\x2e\x39\x36\x33\x20\x31\x34\x34\ \x2e\x30\x33\x38\x43\x2d\x31\x31\x32\x2e\x31\x36\x33\x20\x31\x37\ \x38\x2e\x34\x33\x38\x20\x32\x32\x2e\x36\x37\x33\x20\x31\x33\x30\ \x2e\x33\x36\x35\x20\x32\x32\x2e\x36\x37\x33\x20\x31\x33\x30\x2e\ \x33\x36\x35\x43\x32\x32\x2e\x36\x37\x33\x20\x31\x33\x30\x2e\x33\ \x36\x35\x20\x31\x39\x31\x2e\x34\x37\x34\x20\x39\x39\x2e\x39\x36\ \x35\x20\x32\x30\x32\x2e\x36\x37\x34\x20\x39\x35\x2e\x39\x36\x35\ \x43\x32\x31\x33\x2e\x38\x37\x34\x20\x39\x31\x2e\x39\x36\x35\x20\ \x33\x30\x32\x2e\x30\x39\x33\x20\x39\x37\x2e\x37\x38\x33\x20\x33\ \x30\x32\x2e\x30\x39\x33\x20\x39\x37\x2e\x37\x38\x33\x4c\x32\x39\ \x37\x2e\x30\x37\x35\x20\x37\x36\x2e\x39\x31\x43\x32\x33\x32\x2e\ \x32\x37\x34\x20\x33\x30\x2e\x35\x31\x20\x32\x31\x39\x2e\x34\x37\ \x34\x20\x35\x38\x2e\x33\x36\x35\x20\x32\x30\x35\x2e\x38\x37\x34\ \x20\x35\x34\x2e\x33\x36\x35\x43\x31\x39\x32\x2e\x32\x37\x34\x20\ \x35\x30\x2e\x33\x36\x35\x20\x31\x39\x34\x2e\x36\x37\x34\x20\x35\ \x39\x2e\x39\x36\x35\x20\x31\x39\x31\x2e\x34\x37\x34\x20\x36\x30\ \x2e\x37\x36\x35\x43\x31\x38\x38\x2e\x32\x37\x34\x20\x36\x31\x2e\ \x35\x36\x35\x20\x31\x34\x39\x2e\x30\x37\x34\x20\x33\x36\x2e\x37\ \x36\x35\x20\x31\x34\x32\x2e\x36\x37\x34\x20\x33\x37\x2e\x35\x36\ \x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x66\x61\x65\x35\x64\x37\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x34\x33\x2e\x39\x38\x33\x20\ \x33\x39\x2e\x33\x31\x43\x31\x33\x37\x2e\x35\x38\x33\x20\x34\x30\ \x2e\x31\x31\x20\x31\x31\x30\x2e\x35\x32\x39\x20\x31\x37\x2e\x32\ \x32\x33\x20\x31\x32\x37\x2e\x31\x38\x33\x20\x34\x38\x2e\x31\x31\ \x43\x31\x34\x39\x2e\x31\x38\x33\x20\x38\x38\x2e\x39\x31\x20\x36\ \x38\x2e\x37\x38\x33\x20\x38\x37\x2e\x33\x31\x20\x35\x31\x2e\x39\ \x38\x33\x20\x37\x36\x2e\x31\x31\x43\x33\x35\x2e\x31\x38\x33\x20\ \x36\x34\x2e\x39\x31\x20\x35\x39\x2e\x31\x38\x33\x20\x39\x34\x2e\ \x35\x31\x20\x35\x39\x2e\x31\x38\x33\x20\x39\x34\x2e\x35\x31\x43\ \x37\x37\x2e\x35\x38\x33\x20\x31\x31\x34\x2e\x35\x31\x20\x34\x33\ \x2e\x31\x38\x33\x20\x39\x37\x2e\x37\x31\x20\x34\x33\x2e\x31\x38\ \x33\x20\x39\x37\x2e\x37\x31\x43\x38\x2e\x37\x38\x33\x20\x38\x34\ \x2e\x39\x31\x20\x2d\x31\x35\x2e\x32\x31\x37\x20\x31\x31\x30\x2e\ \x35\x31\x20\x2d\x31\x38\x2e\x34\x31\x37\x20\x31\x31\x31\x2e\x33\ \x31\x43\x2d\x32\x31\x2e\x36\x31\x38\x20\x31\x31\x32\x2e\x31\x31\ \x20\x2d\x32\x36\x2e\x34\x31\x38\x20\x31\x31\x35\x2e\x33\x31\x20\ \x2d\x32\x37\x2e\x32\x31\x38\x20\x31\x30\x38\x2e\x39\x31\x43\x2d\ \x32\x38\x2e\x30\x31\x38\x20\x31\x30\x32\x2e\x35\x31\x20\x2d\x33\ \x34\x2e\x33\x34\x36\x20\x38\x37\x2e\x33\x31\x38\x20\x2d\x36\x37\ \x2e\x32\x31\x38\x20\x31\x31\x32\x2e\x31\x31\x43\x2d\x39\x38\x2e\ \x33\x34\x35\x20\x31\x33\x35\x2e\x34\x32\x20\x2d\x31\x30\x39\x2e\ \x33\x36\x33\x20\x31\x31\x38\x2e\x33\x32\x39\x20\x2d\x31\x30\x39\ \x2e\x33\x36\x33\x20\x31\x31\x38\x2e\x33\x32\x39\x4c\x2d\x31\x31\ \x35\x2e\x37\x36\x34\x20\x31\x31\x36\x2e\x35\x31\x43\x2d\x31\x32\ \x38\x2e\x37\x36\x34\x20\x39\x32\x2e\x35\x31\x20\x2d\x31\x32\x30\ \x2e\x33\x30\x39\x20\x31\x34\x37\x2e\x30\x39\x33\x20\x2d\x31\x32\ \x30\x2e\x33\x30\x39\x20\x31\x34\x37\x2e\x30\x39\x33\x43\x2d\x31\ \x31\x31\x2e\x35\x30\x39\x20\x31\x38\x31\x2e\x34\x39\x33\x20\x32\ \x33\x2e\x39\x38\x33\x20\x31\x33\x32\x2e\x31\x31\x20\x32\x33\x2e\ \x39\x38\x33\x20\x31\x33\x32\x2e\x31\x31\x43\x32\x33\x2e\x39\x38\ \x33\x20\x31\x33\x32\x2e\x31\x31\x20\x31\x39\x32\x2e\x37\x38\x33\ \x20\x31\x30\x31\x2e\x37\x31\x20\x32\x30\x33\x2e\x39\x38\x33\x20\ \x39\x37\x2e\x37\x31\x43\x32\x31\x35\x2e\x31\x38\x33\x20\x39\x33\ \x2e\x37\x31\x20\x33\x30\x32\x2e\x35\x32\x39\x20\x39\x39\x2e\x34\ \x35\x36\x20\x33\x30\x32\x2e\x35\x32\x39\x20\x39\x39\x2e\x34\x35\ \x36\x4c\x32\x39\x37\x2e\x35\x38\x33\x20\x37\x38\x2e\x30\x37\x34\ \x43\x32\x33\x32\x2e\x37\x38\x33\x20\x33\x31\x2e\x36\x37\x33\x20\ \x32\x32\x30\x2e\x37\x38\x33\x20\x36\x30\x2e\x31\x31\x20\x32\x30\ \x37\x2e\x31\x38\x33\x20\x35\x36\x2e\x31\x31\x43\x31\x39\x33\x2e\ \x35\x38\x33\x20\x35\x32\x2e\x31\x31\x20\x31\x39\x35\x2e\x39\x38\ \x33\x20\x36\x31\x2e\x37\x31\x20\x31\x39\x32\x2e\x37\x38\x33\x20\ \x36\x32\x2e\x35\x31\x43\x31\x38\x39\x2e\x35\x38\x33\x20\x36\x33\ \x2e\x33\x31\x20\x31\x35\x30\x2e\x33\x38\x33\x20\x33\x38\x2e\x35\ \x31\x20\x31\x34\x33\x2e\x39\x38\x33\x20\x33\x39\x2e\x33\x31\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x66\x63\x66\x32\x65\x62\x22\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x31\x34\x35\x2e\x32\x39\x32\x20\x34\x31\ \x2e\x30\x35\x35\x43\x31\x33\x38\x2e\x38\x39\x32\x20\x34\x31\x2e\ \x38\x35\x35\x20\x31\x31\x32\x2e\x39\x31\x37\x20\x31\x38\x2e\x34\ \x31\x31\x20\x31\x32\x38\x2e\x34\x39\x32\x20\x34\x39\x2e\x38\x35\ \x35\x43\x31\x34\x39\x2e\x36\x39\x32\x20\x39\x32\x2e\x36\x35\x36\ \x20\x37\x30\x2e\x30\x39\x32\x20\x38\x39\x2e\x30\x35\x36\x20\x35\ \x33\x2e\x32\x39\x32\x20\x37\x37\x2e\x38\x35\x36\x43\x33\x36\x2e\ \x34\x39\x32\x20\x36\x36\x2e\x36\x35\x36\x20\x36\x30\x2e\x34\x39\ \x32\x20\x39\x36\x2e\x32\x35\x36\x20\x36\x30\x2e\x34\x39\x32\x20\ \x39\x36\x2e\x32\x35\x36\x43\x37\x38\x2e\x38\x39\x32\x20\x31\x31\ \x36\x2e\x32\x35\x36\x20\x34\x34\x2e\x34\x39\x32\x20\x39\x39\x2e\ \x34\x35\x36\x20\x34\x34\x2e\x34\x39\x32\x20\x39\x39\x2e\x34\x35\ \x36\x43\x31\x30\x2e\x30\x39\x32\x20\x38\x36\x2e\x36\x35\x36\x20\ \x2d\x31\x33\x2e\x39\x30\x38\x20\x31\x31\x32\x2e\x32\x35\x36\x20\ \x2d\x31\x37\x2e\x31\x30\x38\x20\x31\x31\x33\x2e\x30\x35\x36\x43\ \x2d\x32\x30\x2e\x33\x30\x38\x20\x31\x31\x33\x2e\x38\x35\x36\x20\ \x2d\x32\x35\x2e\x31\x30\x38\x20\x31\x31\x37\x2e\x30\x35\x36\x20\ \x2d\x32\x35\x2e\x39\x30\x38\x20\x31\x31\x30\x2e\x36\x35\x36\x43\ \x2d\x32\x36\x2e\x37\x30\x38\x20\x31\x30\x34\x2e\x32\x35\x36\x20\ \x2d\x33\x32\x2e\x39\x30\x35\x20\x38\x39\x2e\x32\x33\x32\x20\x2d\ \x36\x35\x2e\x39\x30\x38\x20\x31\x31\x33\x2e\x38\x35\x36\x43\x2d\ \x39\x38\x2e\x32\x37\x33\x20\x31\x33\x37\x2e\x39\x31\x31\x20\x2d\ \x31\x30\x38\x2e\x39\x38\x32\x20\x31\x32\x31\x2e\x33\x36\x35\x20\ \x2d\x31\x30\x38\x2e\x39\x38\x32\x20\x31\x32\x31\x2e\x33\x36\x35\ \x4c\x2d\x31\x31\x35\x2e\x37\x38\x32\x20\x31\x31\x38\x2e\x30\x35\ \x36\x43\x2d\x31\x32\x38\x2e\x35\x38\x32\x20\x39\x34\x2e\x38\x35\ \x36\x20\x2d\x31\x31\x39\x2e\x36\x35\x34\x20\x31\x35\x30\x2e\x31\ \x34\x37\x20\x2d\x31\x31\x39\x2e\x36\x35\x34\x20\x31\x35\x30\x2e\ \x31\x34\x37\x43\x2d\x31\x31\x30\x2e\x38\x35\x34\x20\x31\x38\x34\ \x2e\x35\x34\x37\x20\x32\x35\x2e\x32\x39\x32\x20\x31\x33\x33\x2e\ \x38\x35\x36\x20\x32\x35\x2e\x32\x39\x32\x20\x31\x33\x33\x2e\x38\ \x35\x36\x43\x32\x35\x2e\x32\x39\x32\x20\x31\x33\x33\x2e\x38\x35\ \x36\x20\x31\x39\x34\x2e\x30\x39\x33\x20\x31\x30\x33\x2e\x34\x35\ \x36\x20\x32\x30\x35\x2e\x32\x39\x33\x20\x39\x39\x2e\x34\x35\x36\ \x43\x32\x31\x36\x2e\x34\x39\x33\x20\x39\x35\x2e\x34\x35\x36\x20\ \x33\x30\x32\x2e\x39\x36\x35\x20\x31\x30\x31\x2e\x31\x32\x38\x20\ \x33\x30\x32\x2e\x39\x36\x35\x20\x31\x30\x31\x2e\x31\x32\x38\x4c\ \x32\x39\x38\x2e\x30\x39\x33\x20\x37\x39\x2e\x32\x33\x37\x43\x32\ \x33\x33\x2e\x32\x39\x32\x20\x33\x32\x2e\x38\x33\x37\x20\x32\x32\ \x32\x2e\x30\x39\x33\x20\x36\x31\x2e\x38\x35\x36\x20\x32\x30\x38\ \x2e\x34\x39\x33\x20\x35\x37\x2e\x38\x35\x36\x43\x31\x39\x34\x2e\ \x38\x39\x33\x20\x35\x33\x2e\x38\x35\x35\x20\x31\x39\x37\x2e\x32\ \x39\x33\x20\x36\x33\x2e\x34\x35\x36\x20\x31\x39\x34\x2e\x30\x39\ \x33\x20\x36\x34\x2e\x32\x35\x36\x43\x31\x39\x30\x2e\x38\x39\x32\ \x20\x36\x35\x2e\x30\x35\x36\x20\x31\x35\x31\x2e\x36\x39\x32\x20\ \x34\x30\x2e\x32\x35\x35\x20\x31\x34\x35\x2e\x32\x39\x32\x20\x34\ \x31\x2e\x30\x35\x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x31\x35\ \x2e\x38\x20\x31\x31\x39\x2e\x36\x30\x31\x43\x2d\x31\x32\x38\x2e\ \x36\x20\x39\x37\x2e\x36\x20\x2d\x31\x31\x39\x20\x31\x35\x33\x2e\ \x32\x30\x31\x20\x2d\x31\x31\x39\x20\x31\x35\x33\x2e\x32\x30\x31\ \x43\x2d\x31\x31\x30\x2e\x32\x20\x31\x38\x37\x2e\x36\x30\x31\x20\ \x32\x36\x2e\x36\x20\x31\x33\x35\x2e\x36\x30\x31\x20\x32\x36\x2e\ \x36\x20\x31\x33\x35\x2e\x36\x30\x31\x43\x32\x36\x2e\x36\x20\x31\ \x33\x35\x2e\x36\x30\x31\x20\x31\x39\x35\x2e\x34\x30\x31\x20\x31\ \x30\x35\x2e\x32\x20\x32\x30\x36\x2e\x36\x30\x31\x20\x31\x30\x31\ \x2e\x32\x43\x32\x31\x37\x2e\x38\x30\x31\x20\x39\x37\x2e\x32\x20\ \x33\x30\x33\x2e\x34\x30\x31\x20\x31\x30\x32\x2e\x38\x20\x33\x30\ \x33\x2e\x34\x30\x31\x20\x31\x30\x32\x2e\x38\x4c\x32\x39\x38\x2e\ \x36\x30\x31\x20\x38\x30\x2e\x34\x43\x32\x33\x33\x2e\x38\x30\x31\ \x20\x33\x34\x20\x32\x32\x33\x2e\x34\x30\x31\x20\x36\x33\x2e\x36\ \x20\x32\x30\x39\x2e\x38\x30\x31\x20\x35\x39\x2e\x36\x43\x31\x39\ \x36\x2e\x32\x30\x31\x20\x35\x35\x2e\x36\x20\x31\x39\x38\x2e\x36\ \x30\x31\x20\x36\x35\x2e\x32\x20\x31\x39\x35\x2e\x34\x30\x31\x20\ \x36\x36\x43\x31\x39\x32\x2e\x32\x30\x31\x20\x36\x36\x2e\x38\x20\ \x31\x35\x33\x2e\x30\x30\x31\x20\x34\x32\x20\x31\x34\x36\x2e\x36\ \x30\x31\x20\x34\x32\x2e\x38\x43\x31\x34\x30\x2e\x32\x30\x31\x20\ \x34\x33\x2e\x36\x20\x31\x31\x34\x2e\x39\x38\x31\x20\x31\x39\x2e\ \x37\x39\x33\x20\x31\x32\x39\x2e\x38\x30\x31\x20\x35\x31\x2e\x36\ \x43\x31\x35\x32\x2e\x30\x32\x38\x20\x39\x39\x2e\x33\x30\x37\x20\ \x36\x39\x2e\x30\x34\x31\x20\x38\x39\x2e\x32\x32\x37\x20\x35\x34\ \x2e\x36\x20\x37\x39\x2e\x36\x43\x33\x37\x2e\x38\x20\x36\x38\x2e\ \x34\x20\x36\x31\x2e\x38\x20\x39\x38\x20\x36\x31\x2e\x38\x20\x39\ \x38\x43\x38\x30\x2e\x32\x20\x31\x31\x38\x2e\x30\x30\x31\x20\x34\ \x35\x2e\x38\x20\x31\x30\x31\x2e\x32\x20\x34\x35\x2e\x38\x20\x31\ \x30\x31\x2e\x32\x43\x31\x31\x2e\x34\x20\x38\x38\x2e\x34\x20\x2d\ \x31\x32\x2e\x36\x20\x31\x31\x34\x2e\x30\x30\x31\x20\x2d\x31\x35\ \x2e\x38\x20\x31\x31\x34\x2e\x38\x30\x31\x43\x2d\x31\x39\x20\x31\ \x31\x35\x2e\x36\x30\x31\x20\x2d\x32\x33\x2e\x38\x20\x31\x31\x38\ \x2e\x38\x30\x31\x20\x2d\x32\x34\x2e\x36\x20\x31\x31\x32\x2e\x34\ \x30\x31\x43\x2d\x32\x35\x2e\x34\x20\x31\x30\x36\x20\x2d\x33\x31\ \x2e\x34\x36\x35\x20\x39\x31\x2e\x31\x34\x34\x20\x2d\x36\x34\x2e\ \x36\x20\x31\x31\x35\x2e\x36\x30\x31\x43\x2d\x39\x38\x2e\x32\x20\ \x31\x34\x30\x2e\x34\x30\x31\x20\x2d\x31\x30\x38\x2e\x36\x20\x31\ \x32\x34\x2e\x34\x30\x31\x20\x2d\x31\x30\x38\x2e\x36\x20\x31\x32\ \x34\x2e\x34\x30\x31\x4c\x2d\x31\x31\x35\x2e\x38\x20\x31\x31\x39\ \x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x37\x34\x2e\x32\ \x20\x31\x34\x39\x2e\x36\x30\x31\x43\x2d\x37\x34\x2e\x32\x20\x31\ \x34\x39\x2e\x36\x30\x31\x20\x2d\x38\x31\x2e\x34\x20\x31\x36\x31\ \x2e\x32\x30\x31\x20\x2d\x36\x30\x2e\x36\x20\x31\x37\x34\x2e\x34\ \x30\x31\x43\x2d\x36\x30\x2e\x36\x20\x31\x37\x34\x2e\x34\x30\x31\ \x20\x2d\x35\x39\x2e\x32\x20\x31\x37\x35\x2e\x38\x30\x31\x20\x2d\ \x37\x37\x2e\x32\x20\x31\x37\x31\x2e\x36\x30\x31\x43\x2d\x37\x37\ \x2e\x32\x20\x31\x37\x31\x2e\x36\x30\x31\x20\x2d\x38\x33\x2e\x34\ \x20\x31\x36\x39\x2e\x36\x30\x31\x20\x2d\x38\x35\x20\x31\x35\x39\ \x2e\x32\x30\x31\x43\x2d\x38\x35\x20\x31\x35\x39\x2e\x32\x30\x31\ \x20\x2d\x38\x39\x2e\x38\x20\x31\x35\x34\x2e\x38\x30\x31\x20\x2d\ \x39\x34\x2e\x36\x20\x31\x34\x39\x2e\x32\x30\x31\x43\x2d\x39\x39\ \x2e\x34\x20\x31\x34\x33\x2e\x36\x30\x31\x20\x2d\x37\x34\x2e\x32\ \x20\x31\x34\x39\x2e\x36\x30\x31\x20\x2d\x37\x34\x2e\x32\x20\x31\ \x34\x39\x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x36\x35\x2e\ \x38\x20\x31\x30\x32\x43\x36\x35\x2e\x38\x20\x31\x30\x32\x20\x38\ \x33\x2e\x34\x39\x38\x20\x31\x32\x38\x2e\x38\x32\x31\x20\x38\x32\ \x2e\x39\x20\x31\x33\x33\x2e\x36\x30\x31\x43\x38\x31\x2e\x36\x20\ \x31\x34\x34\x2e\x30\x30\x31\x20\x38\x31\x2e\x34\x20\x31\x35\x33\ \x2e\x36\x30\x31\x20\x38\x34\x2e\x36\x20\x31\x35\x37\x2e\x36\x30\ \x31\x43\x38\x37\x2e\x38\x30\x31\x20\x31\x36\x31\x2e\x36\x30\x31\ \x20\x39\x36\x2e\x36\x30\x31\x20\x31\x39\x34\x2e\x38\x30\x31\x20\ \x39\x36\x2e\x36\x30\x31\x20\x31\x39\x34\x2e\x38\x30\x31\x43\x39\ \x36\x2e\x36\x30\x31\x20\x31\x39\x34\x2e\x38\x30\x31\x20\x39\x36\ \x2e\x32\x30\x31\x20\x31\x39\x36\x2e\x30\x30\x31\x20\x31\x30\x38\ \x2e\x36\x30\x31\x20\x31\x35\x38\x2e\x30\x30\x31\x43\x31\x30\x38\ \x2e\x36\x30\x31\x20\x31\x35\x38\x2e\x30\x30\x31\x20\x31\x32\x30\ \x2e\x32\x30\x31\x20\x31\x34\x32\x2e\x30\x30\x31\x20\x31\x30\x30\ \x2e\x32\x30\x31\x20\x31\x32\x33\x2e\x36\x30\x31\x43\x31\x30\x30\ \x2e\x32\x30\x31\x20\x31\x32\x33\x2e\x36\x30\x31\x20\x36\x35\x20\ \x39\x34\x2e\x38\x20\x36\x35\x2e\x38\x20\x31\x30\x32\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x35\x34\x2e\x32\x20\x31\x37\x36\x2e\x34\x30\ \x31\x43\x2d\x35\x34\x2e\x32\x20\x31\x37\x36\x2e\x34\x30\x31\x20\ \x2d\x34\x33\x20\x31\x38\x33\x2e\x36\x30\x31\x20\x2d\x35\x37\x2e\ \x34\x20\x32\x31\x34\x2e\x38\x30\x31\x4c\x2d\x35\x31\x20\x32\x31\ \x32\x2e\x34\x30\x31\x43\x2d\x35\x31\x20\x32\x31\x32\x2e\x34\x30\ \x31\x20\x2d\x35\x31\x2e\x38\x20\x32\x32\x33\x2e\x36\x30\x31\x20\ \x2d\x35\x35\x20\x32\x32\x36\x2e\x30\x30\x31\x4c\x2d\x34\x37\x2e\ \x38\x20\x32\x32\x32\x2e\x38\x30\x31\x43\x2d\x34\x37\x2e\x38\x20\ \x32\x32\x32\x2e\x38\x30\x31\x20\x2d\x34\x33\x20\x32\x33\x30\x2e\ \x38\x30\x31\x20\x2d\x34\x37\x20\x32\x33\x35\x2e\x36\x30\x31\x43\ \x2d\x34\x37\x20\x32\x33\x35\x2e\x36\x30\x31\x20\x2d\x33\x30\x2e\ \x32\x20\x32\x34\x33\x2e\x36\x30\x31\x20\x2d\x33\x31\x20\x32\x35\ \x30\x2e\x30\x30\x31\x43\x2d\x33\x31\x20\x32\x35\x30\x2e\x30\x30\ \x31\x20\x2d\x32\x34\x2e\x36\x20\x32\x34\x32\x2e\x30\x30\x31\x20\ \x2d\x32\x38\x2e\x36\x20\x32\x33\x35\x2e\x36\x30\x31\x43\x2d\x33\ \x32\x2e\x36\x20\x32\x32\x39\x2e\x32\x30\x31\x20\x2d\x33\x39\x2e\ \x38\x20\x32\x33\x33\x2e\x32\x30\x31\x20\x2d\x33\x39\x20\x32\x31\ \x34\x2e\x38\x30\x31\x4c\x2d\x34\x37\x2e\x38\x20\x32\x31\x38\x2e\ \x30\x30\x31\x43\x2d\x34\x37\x2e\x38\x20\x32\x31\x38\x2e\x30\x30\ \x31\x20\x2d\x34\x32\x2e\x32\x20\x32\x30\x39\x2e\x32\x30\x31\x20\ \x2d\x34\x32\x2e\x32\x20\x32\x30\x32\x2e\x38\x30\x31\x4c\x2d\x35\ \x30\x2e\x32\x20\x32\x30\x35\x2e\x32\x30\x31\x43\x2d\x35\x30\x2e\ \x32\x20\x32\x30\x35\x2e\x32\x30\x31\x20\x2d\x33\x34\x2e\x37\x33\ \x31\x20\x31\x37\x38\x2e\x36\x32\x33\x20\x2d\x34\x35\x2e\x34\x20\ \x31\x37\x37\x2e\x32\x30\x31\x43\x2d\x35\x31\x2e\x34\x20\x31\x37\ \x36\x2e\x34\x30\x31\x20\x2d\x35\x34\x2e\x32\x20\x31\x37\x36\x2e\ \x34\x30\x31\x20\x2d\x35\x34\x2e\x32\x20\x31\x37\x36\x2e\x34\x30\ \x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x32\x31\x2e\x38\x20\x31\x39\ \x33\x2e\x32\x30\x31\x43\x2d\x32\x31\x2e\x38\x20\x31\x39\x33\x2e\ \x32\x30\x31\x20\x2d\x31\x39\x20\x31\x38\x38\x2e\x38\x30\x31\x20\ \x2d\x32\x31\x2e\x38\x20\x31\x38\x39\x2e\x36\x30\x31\x43\x2d\x32\ \x34\x2e\x36\x20\x31\x39\x30\x2e\x34\x30\x31\x20\x2d\x35\x35\x2e\ \x38\x20\x32\x30\x35\x2e\x32\x30\x31\x20\x2d\x36\x31\x2e\x38\x20\ \x32\x31\x34\x2e\x38\x30\x31\x43\x2d\x36\x31\x2e\x38\x20\x32\x31\ \x34\x2e\x38\x30\x31\x20\x2d\x32\x37\x2e\x34\x20\x31\x39\x30\x2e\ \x34\x30\x31\x20\x2d\x32\x31\x2e\x38\x20\x31\x39\x33\x2e\x32\x30\ \x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x31\x2e\x34\x20\x32\x30\ \x31\x2e\x32\x30\x31\x43\x2d\x31\x31\x2e\x34\x20\x32\x30\x31\x2e\ \x32\x30\x31\x20\x2d\x38\x2e\x36\x20\x31\x39\x36\x2e\x38\x30\x31\ \x20\x2d\x31\x31\x2e\x34\x20\x31\x39\x37\x2e\x36\x30\x31\x43\x2d\ \x31\x34\x2e\x32\x20\x31\x39\x38\x2e\x34\x30\x31\x20\x2d\x34\x35\ \x2e\x34\x20\x32\x31\x33\x2e\x32\x30\x31\x20\x2d\x35\x31\x2e\x34\ \x20\x32\x32\x32\x2e\x38\x30\x31\x43\x2d\x35\x31\x2e\x34\x20\x32\ \x32\x32\x2e\x38\x30\x31\x20\x2d\x31\x37\x20\x31\x39\x38\x2e\x34\ \x30\x31\x20\x2d\x31\x31\x2e\x34\x20\x32\x30\x31\x2e\x32\x30\x31\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x31\x2e\x38\x20\x31\x38\x36\x2e\x30\ \x30\x31\x43\x31\x2e\x38\x20\x31\x38\x36\x2e\x30\x30\x31\x20\x34\ \x2e\x36\x20\x31\x38\x31\x2e\x36\x30\x31\x20\x31\x2e\x38\x20\x31\ \x38\x32\x2e\x34\x30\x31\x43\x2d\x31\x20\x31\x38\x33\x2e\x32\x30\ \x31\x20\x2d\x33\x32\x2e\x32\x20\x31\x39\x38\x2e\x30\x30\x31\x20\ \x2d\x33\x38\x2e\x32\x20\x32\x30\x37\x2e\x36\x30\x31\x43\x2d\x33\ \x38\x2e\x32\x20\x32\x30\x37\x2e\x36\x30\x31\x20\x2d\x33\x2e\x38\ \x20\x31\x38\x33\x2e\x32\x30\x31\x20\x31\x2e\x38\x20\x31\x38\x36\ \x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x32\x31\x2e\x34\ \x20\x32\x32\x39\x2e\x36\x30\x31\x43\x2d\x32\x31\x2e\x34\x20\x32\ \x32\x39\x2e\x36\x30\x31\x20\x2d\x32\x31\x2e\x34\x20\x32\x32\x33\ \x2e\x36\x30\x31\x20\x2d\x32\x34\x2e\x32\x20\x32\x32\x34\x2e\x34\ \x30\x31\x43\x2d\x32\x37\x20\x32\x32\x35\x2e\x32\x30\x31\x20\x2d\ \x36\x33\x20\x32\x34\x32\x2e\x38\x30\x31\x20\x2d\x36\x39\x20\x32\ \x35\x32\x2e\x34\x30\x31\x43\x2d\x36\x39\x20\x32\x35\x32\x2e\x34\ \x30\x31\x20\x2d\x32\x37\x20\x32\x32\x36\x2e\x38\x30\x31\x20\x2d\ \x32\x31\x2e\x34\x20\x32\x32\x39\x2e\x36\x30\x31\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\ \x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x32\x30\x2e\x32\x20\x32\x31\x38\x2e\x38\x30\x31\ \x43\x2d\x32\x30\x2e\x32\x20\x32\x31\x38\x2e\x38\x30\x31\x20\x2d\ \x31\x39\x20\x32\x31\x34\x2e\x30\x30\x31\x20\x2d\x32\x31\x2e\x38\ \x20\x32\x31\x34\x2e\x38\x30\x31\x43\x2d\x32\x33\x2e\x38\x20\x32\ \x31\x34\x2e\x38\x30\x31\x20\x2d\x35\x30\x2e\x32\x20\x32\x32\x36\ \x2e\x34\x30\x31\x20\x2d\x35\x36\x2e\x32\x20\x32\x33\x36\x2e\x30\ \x30\x31\x43\x2d\x35\x36\x2e\x32\x20\x32\x33\x36\x2e\x30\x30\x31\ \x20\x2d\x32\x36\x2e\x36\x20\x32\x31\x34\x2e\x34\x30\x31\x20\x2d\ \x32\x30\x2e\x32\x20\x32\x31\x38\x2e\x38\x30\x31\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\ \x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x33\x34\x2e\x36\x20\x32\x36\x36\x2e\x34\x30\x31\ \x4c\x2d\x34\x34\x2e\x36\x20\x32\x37\x34\x2e\x30\x30\x31\x43\x2d\ \x34\x34\x2e\x36\x20\x32\x37\x34\x2e\x30\x30\x31\x20\x2d\x33\x34\ \x2e\x32\x20\x32\x36\x36\x2e\x34\x30\x31\x20\x2d\x33\x30\x2e\x36\ \x20\x32\x36\x37\x2e\x36\x30\x31\x43\x2d\x33\x30\x2e\x36\x20\x32\ \x36\x37\x2e\x36\x30\x31\x20\x2d\x33\x37\x2e\x34\x20\x32\x37\x38\ \x2e\x38\x30\x31\x20\x2d\x33\x38\x2e\x32\x20\x32\x38\x34\x2e\x30\ \x30\x31\x43\x2d\x33\x38\x2e\x32\x20\x32\x38\x34\x2e\x30\x30\x31\ \x20\x2d\x32\x37\x2e\x38\x20\x32\x37\x31\x2e\x32\x30\x31\x20\x2d\ \x32\x32\x2e\x32\x20\x32\x37\x31\x2e\x36\x30\x31\x43\x2d\x32\x32\ \x2e\x32\x20\x32\x37\x31\x2e\x36\x30\x31\x20\x2d\x31\x34\x2e\x36\ \x20\x32\x37\x32\x2e\x30\x30\x31\x20\x2d\x31\x34\x2e\x36\x20\x32\ \x38\x32\x2e\x38\x30\x31\x43\x2d\x31\x34\x2e\x36\x20\x32\x38\x32\ \x2e\x38\x30\x31\x20\x2d\x39\x20\x32\x37\x32\x2e\x34\x30\x31\x20\ \x2d\x35\x2e\x38\x20\x32\x37\x32\x2e\x38\x30\x31\x43\x2d\x35\x2e\ \x38\x20\x32\x37\x32\x2e\x38\x30\x31\x20\x2d\x34\x2e\x36\x20\x32\ \x37\x39\x2e\x32\x30\x31\x20\x2d\x35\x2e\x38\x20\x32\x38\x36\x2e\ \x30\x30\x31\x43\x2d\x35\x2e\x38\x20\x32\x38\x36\x2e\x30\x30\x31\ \x20\x2d\x31\x2e\x38\x20\x32\x37\x38\x2e\x34\x30\x31\x20\x32\x2e\ \x32\x20\x32\x38\x30\x2e\x30\x30\x31\x43\x32\x2e\x32\x20\x32\x38\ \x30\x2e\x30\x30\x31\x20\x38\x2e\x36\x20\x32\x37\x38\x2e\x30\x30\ \x31\x20\x37\x2e\x38\x20\x32\x38\x39\x2e\x36\x30\x31\x43\x37\x2e\ \x38\x20\x32\x38\x39\x2e\x36\x30\x31\x20\x37\x2e\x38\x20\x33\x30\ \x30\x2e\x30\x30\x31\x20\x37\x20\x33\x30\x32\x2e\x38\x30\x31\x43\ \x37\x20\x33\x30\x32\x2e\x38\x30\x31\x20\x31\x32\x2e\x36\x20\x32\ \x37\x36\x2e\x34\x30\x31\x20\x31\x35\x20\x32\x37\x36\x2e\x30\x30\ \x31\x43\x31\x35\x20\x32\x37\x36\x2e\x30\x30\x31\x20\x32\x33\x20\ \x32\x37\x34\x2e\x38\x30\x31\x20\x32\x37\x2e\x38\x20\x32\x38\x33\ \x2e\x36\x30\x31\x43\x32\x37\x2e\x38\x20\x32\x38\x33\x2e\x36\x30\ \x31\x20\x32\x33\x2e\x38\x20\x32\x37\x36\x2e\x30\x30\x31\x20\x32\ \x38\x2e\x36\x20\x32\x37\x38\x2e\x30\x30\x31\x43\x32\x38\x2e\x36\ \x20\x32\x37\x38\x2e\x30\x30\x31\x20\x33\x39\x2e\x34\x20\x32\x37\ \x39\x2e\x36\x30\x31\x20\x34\x32\x2e\x36\x20\x32\x38\x36\x2e\x34\ \x30\x31\x43\x34\x32\x2e\x36\x20\x32\x38\x36\x2e\x34\x30\x31\x20\ \x33\x35\x2e\x38\x20\x32\x37\x34\x2e\x34\x30\x31\x20\x34\x31\x2e\ \x34\x20\x32\x37\x37\x2e\x36\x30\x31\x43\x34\x31\x2e\x34\x20\x32\ \x37\x37\x2e\x36\x30\x31\x20\x34\x38\x2e\x32\x20\x32\x37\x37\x2e\ \x36\x30\x31\x20\x34\x39\x2e\x34\x20\x32\x38\x34\x2e\x30\x30\x31\ \x43\x34\x39\x2e\x34\x20\x32\x38\x34\x2e\x30\x30\x31\x20\x35\x37\ \x2e\x38\x20\x33\x30\x35\x2e\x32\x30\x31\x20\x35\x39\x2e\x38\x20\ \x33\x30\x36\x2e\x38\x30\x31\x43\x35\x39\x2e\x38\x20\x33\x30\x36\ \x2e\x38\x30\x31\x20\x35\x32\x2e\x32\x20\x32\x38\x35\x2e\x32\x30\ \x31\x20\x35\x33\x2e\x38\x20\x32\x38\x35\x2e\x32\x30\x31\x43\x35\ \x33\x2e\x38\x20\x32\x38\x35\x2e\x32\x30\x31\x20\x35\x31\x2e\x38\ \x20\x32\x37\x33\x2e\x32\x30\x31\x20\x35\x37\x20\x32\x38\x38\x2e\ \x30\x30\x31\x43\x35\x37\x20\x32\x38\x38\x2e\x30\x30\x31\x20\x35\ \x33\x2e\x38\x20\x32\x37\x34\x2e\x30\x30\x31\x20\x35\x39\x2e\x34\ \x20\x32\x37\x34\x2e\x38\x30\x31\x43\x36\x35\x20\x32\x37\x35\x2e\ \x36\x30\x31\x20\x36\x39\x2e\x34\x20\x32\x38\x35\x2e\x36\x30\x31\ \x20\x37\x37\x2e\x38\x20\x32\x38\x33\x2e\x32\x30\x31\x43\x37\x37\ \x2e\x38\x20\x32\x38\x33\x2e\x32\x30\x31\x20\x38\x37\x2e\x34\x30\ \x31\x20\x32\x38\x38\x2e\x38\x30\x31\x20\x38\x39\x2e\x34\x30\x31\ \x20\x32\x31\x39\x2e\x36\x30\x31\x4c\x2d\x33\x34\x2e\x36\x20\x32\ \x36\x36\x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x32\x39\ \x2e\x38\x20\x31\x37\x33\x2e\x36\x30\x31\x43\x2d\x32\x39\x2e\x38\ \x20\x31\x37\x33\x2e\x36\x30\x31\x20\x2d\x31\x35\x20\x31\x36\x37\ \x2e\x36\x30\x31\x20\x32\x35\x20\x31\x37\x33\x2e\x36\x30\x31\x43\ \x32\x35\x20\x31\x37\x33\x2e\x36\x30\x31\x20\x33\x32\x2e\x32\x20\ \x31\x37\x34\x2e\x30\x30\x31\x20\x33\x39\x20\x31\x36\x35\x2e\x32\ \x30\x31\x43\x34\x35\x2e\x38\x20\x31\x35\x36\x2e\x34\x30\x31\x20\ \x37\x32\x2e\x36\x20\x31\x34\x39\x2e\x32\x30\x31\x20\x37\x39\x20\ \x31\x35\x31\x2e\x32\x30\x31\x4c\x38\x38\x2e\x36\x30\x31\x20\x31\ \x35\x37\x2e\x36\x30\x31\x4c\x38\x39\x2e\x34\x30\x31\x20\x31\x35\ \x38\x2e\x38\x30\x31\x43\x38\x39\x2e\x34\x30\x31\x20\x31\x35\x38\ \x2e\x38\x30\x31\x20\x31\x30\x31\x2e\x38\x30\x31\x20\x31\x36\x39\ \x2e\x32\x30\x31\x20\x31\x30\x32\x2e\x32\x30\x31\x20\x31\x37\x36\ \x2e\x38\x30\x31\x43\x31\x30\x32\x2e\x36\x30\x31\x20\x31\x38\x34\ \x2e\x34\x30\x31\x20\x38\x37\x2e\x38\x30\x31\x20\x32\x33\x32\x2e\ \x34\x30\x31\x20\x37\x38\x2e\x32\x20\x32\x34\x38\x2e\x34\x30\x31\ \x43\x36\x38\x2e\x36\x20\x32\x36\x34\x2e\x34\x30\x31\x20\x35\x39\ \x20\x32\x37\x36\x2e\x38\x30\x31\x20\x33\x39\x2e\x38\x20\x32\x37\ \x34\x2e\x34\x30\x31\x43\x33\x39\x2e\x38\x20\x32\x37\x34\x2e\x34\ \x30\x31\x20\x31\x39\x20\x32\x37\x30\x2e\x34\x30\x31\x20\x2d\x36\ \x2e\x36\x20\x32\x37\x34\x2e\x34\x30\x31\x43\x2d\x36\x2e\x36\x20\ \x32\x37\x34\x2e\x34\x30\x31\x20\x2d\x33\x35\x2e\x38\x20\x32\x37\ \x32\x2e\x38\x30\x31\x20\x2d\x33\x38\x2e\x36\x20\x32\x36\x34\x2e\ \x38\x30\x31\x43\x2d\x34\x31\x2e\x34\x20\x32\x35\x36\x2e\x38\x30\ \x31\x20\x2d\x32\x37\x2e\x34\x20\x32\x34\x31\x2e\x36\x30\x31\x20\ \x2d\x32\x37\x2e\x34\x20\x32\x34\x31\x2e\x36\x30\x31\x43\x2d\x32\ \x37\x2e\x34\x20\x32\x34\x31\x2e\x36\x30\x31\x20\x2d\x32\x33\x20\ \x32\x33\x33\x2e\x32\x30\x31\x20\x2d\x32\x34\x2e\x32\x20\x32\x31\ \x38\x2e\x38\x30\x31\x43\x2d\x32\x35\x2e\x34\x20\x32\x30\x34\x2e\ \x34\x30\x31\x20\x2d\x32\x35\x20\x31\x37\x36\x2e\x34\x30\x31\x20\ \x2d\x32\x39\x2e\x38\x20\x31\x37\x33\x2e\x36\x30\x31\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x65\x35\x36\x36\x38\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x37\x2e\x38\x20\x31\x37\x35\x2e\x36\x30\x31\ \x43\x30\x2e\x36\x20\x31\x39\x34\x2e\x30\x30\x31\x20\x2d\x32\x39\ \x20\x32\x35\x39\x2e\x32\x30\x31\x20\x2d\x32\x39\x20\x32\x35\x39\ \x2e\x32\x30\x31\x43\x2d\x33\x31\x20\x32\x36\x30\x2e\x38\x30\x31\ \x20\x2d\x31\x36\x2e\x33\x34\x20\x32\x36\x36\x2e\x38\x34\x36\x20\ \x2d\x36\x2e\x32\x20\x32\x36\x34\x2e\x34\x30\x31\x43\x34\x2e\x37\ \x34\x36\x20\x32\x36\x31\x2e\x37\x36\x33\x20\x34\x35\x20\x32\x36\ \x36\x2e\x30\x30\x31\x20\x34\x35\x20\x32\x36\x36\x2e\x30\x30\x31\ \x43\x36\x38\x2e\x36\x20\x32\x35\x30\x2e\x34\x30\x31\x20\x38\x31\ \x2e\x34\x20\x32\x30\x36\x2e\x30\x30\x31\x20\x38\x31\x2e\x34\x20\ \x32\x30\x36\x2e\x30\x30\x31\x43\x38\x31\x2e\x34\x20\x32\x30\x36\ \x2e\x30\x30\x31\x20\x39\x31\x2e\x38\x30\x31\x20\x31\x38\x32\x2e\ \x30\x30\x31\x20\x37\x34\x2e\x32\x20\x31\x37\x38\x2e\x38\x30\x31\ \x43\x35\x36\x2e\x36\x20\x31\x37\x35\x2e\x36\x30\x31\x20\x2d\x37\ \x2e\x38\x20\x31\x37\x35\x2e\x36\x30\x31\x20\x2d\x37\x2e\x38\x20\ \x31\x37\x35\x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x62\x32\x33\x32\x35\x39\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x39\ \x2e\x38\x33\x31\x20\x32\x30\x36\x2e\x34\x39\x37\x43\x2d\x36\x2e\ \x35\x30\x35\x20\x31\x39\x33\x2e\x37\x30\x37\x20\x2d\x34\x2e\x39\ \x32\x31\x20\x31\x38\x31\x2e\x39\x30\x36\x20\x2d\x37\x2e\x38\x20\ \x31\x37\x35\x2e\x36\x30\x31\x43\x2d\x37\x2e\x38\x20\x31\x37\x35\ \x2e\x36\x30\x31\x20\x35\x34\x2e\x36\x20\x31\x38\x32\x2e\x30\x30\ \x31\x20\x36\x35\x2e\x38\x20\x31\x36\x31\x2e\x32\x30\x31\x43\x37\ \x30\x2e\x30\x34\x31\x20\x31\x35\x33\x2e\x33\x32\x36\x20\x38\x34\ \x2e\x38\x30\x31\x20\x31\x38\x34\x2e\x30\x30\x31\x20\x38\x34\x2e\ \x34\x20\x31\x39\x33\x2e\x36\x30\x31\x43\x38\x34\x2e\x34\x20\x31\ \x39\x33\x2e\x36\x30\x31\x20\x32\x31\x2e\x34\x20\x32\x30\x38\x2e\ \x30\x30\x31\x20\x36\x2e\x36\x20\x31\x39\x36\x2e\x38\x30\x31\x4c\ \x2d\x39\x2e\x38\x33\x31\x20\x32\x30\x36\x2e\x34\x39\x37\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x61\x35\x32\x36\x34\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x35\x2e\x34\x20\x32\x32\x32\x2e\x38\x30\ \x31\x43\x2d\x35\x2e\x34\x20\x32\x32\x32\x2e\x38\x30\x31\x20\x2d\ \x33\x2e\x34\x20\x32\x33\x30\x2e\x30\x30\x31\x20\x2d\x35\x2e\x38\ \x20\x32\x33\x34\x2e\x30\x30\x31\x43\x2d\x35\x2e\x38\x20\x32\x33\ \x34\x2e\x30\x30\x31\x20\x2d\x37\x2e\x34\x20\x32\x33\x34\x2e\x38\ \x30\x31\x20\x2d\x38\x2e\x36\x20\x32\x33\x35\x2e\x32\x30\x31\x43\ \x2d\x38\x2e\x36\x20\x32\x33\x35\x2e\x32\x30\x31\x20\x2d\x37\x2e\ \x34\x20\x32\x33\x38\x2e\x38\x30\x31\x20\x2d\x31\x2e\x34\x20\x32\ \x34\x30\x2e\x34\x30\x31\x43\x2d\x31\x2e\x34\x20\x32\x34\x30\x2e\ \x34\x30\x31\x20\x30\x2e\x36\x20\x32\x34\x34\x2e\x38\x30\x31\x20\ \x33\x20\x32\x34\x35\x2e\x32\x30\x31\x43\x35\x2e\x34\x20\x32\x34\ \x35\x2e\x36\x30\x31\x20\x31\x30\x2e\x32\x20\x32\x35\x31\x2e\x32\ \x30\x31\x20\x31\x34\x2e\x32\x20\x32\x35\x30\x2e\x30\x30\x31\x43\ \x31\x38\x2e\x32\x20\x32\x34\x38\x2e\x38\x30\x31\x20\x32\x39\x2e\ \x34\x20\x32\x34\x34\x2e\x38\x30\x31\x20\x32\x39\x2e\x34\x20\x32\ \x34\x34\x2e\x38\x30\x31\x43\x32\x39\x2e\x34\x20\x32\x34\x34\x2e\ \x38\x30\x31\x20\x33\x35\x20\x32\x34\x31\x2e\x36\x30\x31\x20\x34\ \x33\x2e\x38\x20\x32\x34\x35\x2e\x32\x30\x31\x43\x34\x33\x2e\x38\ \x20\x32\x34\x35\x2e\x32\x30\x31\x20\x34\x36\x2e\x31\x37\x35\x20\ \x32\x34\x34\x2e\x33\x39\x39\x20\x34\x36\x2e\x36\x20\x32\x34\x30\ \x2e\x34\x30\x31\x43\x34\x37\x2e\x31\x20\x32\x33\x35\x2e\x37\x30\ \x31\x20\x35\x30\x2e\x32\x20\x32\x33\x32\x2e\x30\x30\x31\x20\x35\ \x32\x2e\x32\x20\x32\x33\x30\x2e\x30\x30\x31\x43\x35\x34\x2e\x32\ \x20\x32\x32\x38\x2e\x30\x30\x31\x20\x36\x33\x2e\x38\x20\x32\x31\ \x35\x2e\x32\x30\x31\x20\x36\x32\x2e\x36\x20\x32\x31\x34\x2e\x38\ \x30\x31\x43\x36\x31\x2e\x34\x20\x32\x31\x34\x2e\x34\x30\x31\x20\ \x2d\x35\x2e\x34\x20\x32\x32\x32\x2e\x38\x30\x31\x20\x2d\x35\x2e\ \x34\x20\x32\x32\x32\x2e\x38\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\ \x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x37\x32\ \x37\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\ \x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x39\x2e\x38\x20\x31\x37\x34\x2e\x34\x30\x31\ \x43\x2d\x39\x2e\x38\x20\x31\x37\x34\x2e\x34\x30\x31\x20\x2d\x31\ \x32\x2e\x36\x20\x31\x39\x36\x2e\x38\x30\x31\x20\x2d\x39\x2e\x34\ \x20\x32\x30\x35\x2e\x32\x30\x31\x43\x2d\x36\x2e\x32\x20\x32\x31\ \x33\x2e\x36\x30\x31\x20\x2d\x37\x20\x32\x31\x35\x2e\x36\x30\x31\ \x20\x2d\x37\x2e\x38\x20\x32\x31\x39\x2e\x36\x30\x31\x43\x2d\x38\ \x2e\x36\x20\x32\x32\x33\x2e\x36\x30\x31\x20\x2d\x34\x2e\x32\x20\ \x32\x33\x33\x2e\x36\x30\x31\x20\x31\x2e\x34\x20\x32\x33\x39\x2e\ \x36\x30\x31\x4c\x31\x33\x2e\x34\x20\x32\x34\x31\x2e\x32\x30\x31\ \x43\x31\x33\x2e\x34\x20\x32\x34\x31\x2e\x32\x30\x31\x20\x32\x38\ \x2e\x36\x20\x32\x33\x37\x2e\x36\x30\x31\x20\x33\x37\x2e\x38\x20\ \x32\x34\x30\x2e\x34\x30\x31\x43\x33\x37\x2e\x38\x20\x32\x34\x30\ \x2e\x34\x30\x31\x20\x34\x36\x2e\x37\x39\x34\x20\x32\x34\x31\x2e\ \x37\x34\x34\x20\x35\x30\x2e\x32\x20\x32\x32\x36\x2e\x38\x30\x31\ \x43\x35\x30\x2e\x32\x20\x32\x32\x36\x2e\x38\x30\x31\x20\x35\x35\ \x20\x32\x32\x30\x2e\x34\x30\x31\x20\x36\x32\x2e\x32\x20\x32\x31\ \x37\x2e\x36\x30\x31\x43\x36\x39\x2e\x34\x20\x32\x31\x34\x2e\x38\ \x30\x31\x20\x37\x36\x2e\x36\x20\x31\x37\x33\x2e\x32\x30\x31\x20\ \x37\x32\x2e\x36\x20\x31\x36\x35\x2e\x32\x30\x31\x43\x36\x38\x2e\ \x36\x20\x31\x35\x37\x2e\x32\x30\x31\x20\x35\x34\x2e\x32\x20\x31\ \x35\x32\x2e\x38\x30\x31\x20\x33\x38\x2e\x32\x20\x31\x36\x38\x2e\ \x34\x30\x31\x43\x32\x32\x2e\x32\x20\x31\x38\x34\x2e\x30\x30\x31\ \x20\x32\x30\x2e\x32\x20\x31\x36\x37\x2e\x32\x30\x31\x20\x2d\x39\ \x2e\x38\x20\x31\x37\x34\x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\ \x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\ \x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x2d\x38\x2e\x32\x20\x32\x34\x39\x2e\x32\x30\x31\x43\x2d\ \x38\x2e\x32\x20\x32\x34\x39\x2e\x32\x30\x31\x20\x2d\x39\x20\x32\ \x34\x37\x2e\x32\x30\x31\x20\x2d\x31\x33\x2e\x34\x20\x32\x34\x36\ \x2e\x38\x30\x31\x43\x2d\x31\x33\x2e\x34\x20\x32\x34\x36\x2e\x38\ \x30\x31\x20\x2d\x33\x35\x2e\x38\x20\x32\x34\x33\x2e\x32\x30\x31\ \x20\x2d\x34\x34\x2e\x32\x20\x32\x33\x30\x2e\x38\x30\x31\x43\x2d\ \x34\x34\x2e\x32\x20\x32\x33\x30\x2e\x38\x30\x31\x20\x2d\x35\x31\ \x20\x32\x32\x35\x2e\x32\x30\x31\x20\x2d\x34\x36\x2e\x36\x20\x32\ \x33\x36\x2e\x38\x30\x31\x43\x2d\x34\x36\x2e\x36\x20\x32\x33\x36\ \x2e\x38\x30\x31\x20\x2d\x33\x36\x2e\x32\x20\x32\x35\x37\x2e\x32\ \x30\x31\x20\x2d\x32\x39\x2e\x34\x20\x32\x36\x30\x2e\x30\x30\x31\ \x43\x2d\x32\x39\x2e\x34\x20\x32\x36\x30\x2e\x30\x30\x31\x20\x2d\ \x31\x33\x20\x32\x36\x34\x2e\x30\x30\x31\x20\x2d\x38\x2e\x32\x20\ \x32\x34\x39\x2e\x32\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x33\x66\x34\x63\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x37\x31\ \x2e\x37\x34\x32\x20\x31\x38\x35\x2e\x32\x32\x39\x43\x37\x32\x2e\ \x34\x30\x31\x20\x31\x37\x37\x2e\x33\x32\x33\x20\x37\x34\x2e\x33\ \x35\x34\x20\x31\x36\x38\x2e\x37\x30\x39\x20\x37\x32\x2e\x36\x20\ \x31\x36\x35\x2e\x32\x30\x31\x43\x36\x36\x2e\x31\x35\x34\x20\x31\ \x35\x32\x2e\x33\x30\x37\x20\x34\x39\x2e\x31\x38\x31\x20\x31\x35\ \x37\x2e\x36\x39\x35\x20\x33\x38\x2e\x32\x20\x31\x36\x38\x2e\x34\ \x30\x31\x43\x32\x32\x2e\x32\x20\x31\x38\x34\x2e\x30\x30\x31\x20\ \x32\x30\x2e\x32\x20\x31\x36\x37\x2e\x32\x30\x31\x20\x2d\x39\x2e\ \x38\x20\x31\x37\x34\x2e\x34\x30\x31\x43\x2d\x39\x2e\x38\x20\x31\ \x37\x34\x2e\x34\x30\x31\x20\x2d\x31\x31\x2e\x35\x34\x35\x20\x31\ \x38\x38\x2e\x33\x36\x34\x20\x2d\x31\x30\x2e\x37\x30\x35\x20\x31\ \x39\x38\x2e\x33\x37\x36\x43\x2d\x31\x30\x2e\x37\x30\x35\x20\x31\ \x39\x38\x2e\x33\x37\x36\x20\x32\x36\x2e\x36\x20\x31\x38\x36\x2e\ \x38\x30\x31\x20\x32\x37\x2e\x34\x20\x31\x39\x32\x2e\x34\x30\x31\ \x43\x32\x37\x2e\x34\x20\x31\x39\x32\x2e\x34\x30\x31\x20\x32\x39\ \x20\x31\x38\x39\x2e\x32\x30\x31\x20\x33\x38\x2e\x32\x20\x31\x38\ \x39\x2e\x32\x30\x31\x43\x34\x37\x2e\x34\x20\x31\x38\x39\x2e\x32\ \x30\x31\x20\x37\x30\x2e\x31\x34\x32\x20\x31\x38\x38\x2e\x30\x32\ \x39\x20\x37\x31\x2e\x37\x34\x32\x20\x31\x38\x35\x2e\x32\x32\x39\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\x74\x72\x6f\x6b\x65\ \x22\x3a\x22\x23\x61\x35\x31\x39\x32\x36\x22\x2c\x20\x22\x77\x69\ \x64\x74\x68\x22\x3a\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x32\x38\x2e\x36\x20\x31\x37\x35\x2e\x32\x30\x31\x43\ \x32\x38\x2e\x36\x20\x31\x37\x35\x2e\x32\x30\x31\x20\x33\x33\x2e\ \x34\x20\x31\x38\x30\x2e\x30\x30\x31\x20\x32\x39\x2e\x38\x20\x31\ \x38\x39\x2e\x36\x30\x31\x43\x32\x39\x2e\x38\x20\x31\x38\x39\x2e\ \x36\x30\x31\x20\x31\x35\x2e\x34\x20\x32\x30\x35\x2e\x36\x30\x31\ \x20\x31\x37\x2e\x34\x20\x32\x31\x39\x2e\x36\x30\x31\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\ \x66\x66\x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\ \x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\ \x74\x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x31\x39\x2e\x34\x20\x32\x36\x30\x2e\x30\x30\ \x31\x43\x2d\x31\x39\x2e\x34\x20\x32\x36\x30\x2e\x30\x30\x31\x20\ \x2d\x32\x33\x2e\x38\x20\x32\x34\x37\x2e\x32\x30\x31\x20\x2d\x31\ \x35\x20\x32\x35\x34\x2e\x30\x30\x31\x43\x2d\x31\x35\x20\x32\x35\ \x34\x2e\x30\x30\x31\x20\x2d\x31\x30\x2e\x32\x20\x32\x35\x36\x2e\ \x30\x30\x31\x20\x2d\x31\x31\x2e\x34\x20\x32\x35\x37\x2e\x36\x30\ \x31\x43\x2d\x31\x32\x2e\x36\x20\x32\x35\x39\x2e\x32\x30\x31\x20\ \x2d\x31\x38\x2e\x32\x20\x32\x36\x33\x2e\x32\x30\x31\x20\x2d\x31\ \x39\x2e\x34\x20\x32\x36\x30\x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\ \x66\x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x31\x34\x2e\x33\x36\x20\x32\x36\x31\x2e\x32\x30\ \x31\x43\x2d\x31\x34\x2e\x33\x36\x20\x32\x36\x31\x2e\x32\x30\x31\ \x20\x2d\x31\x37\x2e\x38\x38\x20\x32\x35\x30\x2e\x39\x36\x31\x20\ \x2d\x31\x30\x2e\x38\x34\x20\x32\x35\x36\x2e\x34\x30\x31\x43\x2d\ \x31\x30\x2e\x38\x34\x20\x32\x35\x36\x2e\x34\x30\x31\x20\x2d\x36\ \x2e\x34\x31\x39\x20\x32\x35\x38\x2e\x38\x34\x39\x20\x2d\x37\x2e\ \x39\x36\x20\x32\x35\x39\x2e\x32\x38\x31\x43\x2d\x31\x32\x2e\x35\ \x32\x20\x32\x36\x30\x2e\x35\x36\x31\x20\x2d\x37\x2e\x39\x36\x20\ \x32\x36\x33\x2e\x31\x32\x31\x20\x2d\x31\x34\x2e\x33\x36\x20\x32\ \x36\x31\x2e\x32\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x63\x63\x22\ \x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\ \x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x39\ \x2e\x35\x36\x20\x32\x36\x31\x2e\x32\x30\x31\x43\x2d\x39\x2e\x35\ \x36\x20\x32\x36\x31\x2e\x32\x30\x31\x20\x2d\x31\x33\x2e\x30\x38\ \x20\x32\x35\x30\x2e\x39\x36\x31\x20\x2d\x36\x2e\x30\x34\x20\x32\ \x35\x36\x2e\x34\x30\x31\x43\x2d\x36\x2e\x30\x34\x20\x32\x35\x36\ \x2e\x34\x30\x31\x20\x2d\x31\x2e\x36\x36\x35\x20\x32\x35\x38\x2e\ \x37\x31\x31\x20\x2d\x33\x2e\x31\x36\x20\x32\x35\x39\x2e\x32\x38\ \x31\x43\x2d\x36\x2e\x35\x32\x20\x32\x36\x30\x2e\x35\x36\x31\x20\ \x2d\x33\x2e\x31\x36\x20\x32\x36\x33\x2e\x31\x32\x31\x20\x2d\x39\ \x2e\x35\x36\x20\x32\x36\x31\x2e\x32\x30\x31\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\ \x66\x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x32\x2e\x39\x36\x20\x32\x36\x31\x2e\x34\x30\x31\ \x43\x2d\x32\x2e\x39\x36\x20\x32\x36\x31\x2e\x34\x30\x31\x20\x2d\ \x36\x2e\x34\x38\x20\x32\x35\x31\x2e\x31\x36\x31\x20\x30\x2e\x35\ \x36\x20\x32\x35\x36\x2e\x36\x30\x31\x43\x30\x2e\x35\x36\x20\x32\ \x35\x36\x2e\x36\x30\x31\x20\x34\x2e\x39\x34\x33\x20\x32\x35\x38\ \x2e\x39\x33\x33\x20\x33\x2e\x34\x34\x31\x20\x32\x35\x39\x2e\x34\ \x38\x31\x43\x30\x2e\x34\x38\x20\x32\x36\x30\x2e\x35\x36\x31\x20\ \x33\x2e\x34\x34\x31\x20\x32\x36\x33\x2e\x33\x32\x31\x20\x2d\x32\ \x2e\x39\x36\x20\x32\x36\x31\x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\ \x66\x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x33\x2e\x35\x32\x20\x32\x36\x31\x2e\x33\x32\x31\x43\ \x33\x2e\x35\x32\x20\x32\x36\x31\x2e\x33\x32\x31\x20\x30\x20\x32\ \x35\x31\x2e\x30\x38\x31\x20\x37\x2e\x30\x34\x31\x20\x32\x35\x36\ \x2e\x35\x32\x31\x43\x37\x2e\x30\x34\x31\x20\x32\x35\x36\x2e\x35\ \x32\x31\x20\x31\x30\x2e\x38\x38\x31\x20\x32\x35\x38\x2e\x31\x32\ \x31\x20\x39\x2e\x39\x32\x31\x20\x32\x35\x39\x2e\x34\x30\x31\x43\ \x38\x2e\x39\x36\x31\x20\x32\x36\x30\x2e\x36\x38\x31\x20\x39\x2e\ \x39\x32\x31\x20\x32\x36\x33\x2e\x32\x34\x31\x20\x33\x2e\x35\x32\ \x20\x32\x36\x31\x2e\x33\x32\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x63\ \x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\ \x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\ \x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x31\x30\x2e\x32\x20\x32\x36\x32\x2e\x30\x30\x31\x43\x31\x30\x2e\ \x32\x20\x32\x36\x32\x2e\x30\x30\x31\x20\x35\x2e\x34\x20\x32\x34\ \x39\x2e\x36\x30\x31\x20\x31\x34\x2e\x36\x20\x32\x35\x36\x2e\x30\ \x30\x31\x43\x31\x34\x2e\x36\x20\x32\x35\x36\x2e\x30\x30\x31\x20\ \x31\x39\x2e\x34\x20\x32\x35\x38\x2e\x30\x30\x31\x20\x31\x38\x2e\ \x32\x20\x32\x35\x39\x2e\x36\x30\x31\x43\x31\x37\x20\x32\x36\x31\ \x2e\x32\x30\x31\x20\x31\x38\x2e\x32\x20\x32\x36\x34\x2e\x34\x30\ \x31\x20\x31\x30\x2e\x32\x20\x32\x36\x32\x2e\x30\x30\x31\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x61\x35\x32\x36\x34\x63\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x2d\x31\x38\x2e\x32\x20\x32\x34\x34\x2e\x38\x30\x31\x43\x2d\ \x31\x38\x2e\x32\x20\x32\x34\x34\x2e\x38\x30\x31\x20\x2d\x35\x20\ \x32\x34\x32\x2e\x30\x30\x31\x20\x31\x20\x32\x34\x35\x2e\x32\x30\ \x31\x43\x31\x20\x32\x34\x35\x2e\x32\x30\x31\x20\x37\x20\x32\x34\ \x36\x2e\x34\x30\x31\x20\x38\x2e\x32\x20\x32\x34\x36\x2e\x30\x30\ \x31\x43\x39\x2e\x34\x20\x32\x34\x35\x2e\x36\x30\x31\x20\x31\x32\ \x2e\x36\x20\x32\x34\x35\x2e\x32\x30\x31\x20\x31\x32\x2e\x36\x20\ \x32\x34\x35\x2e\x32\x30\x31\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x61\x35\x32\x36\x34\x63\ \x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x32\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x35\x2e\x38\x20\x32\x35\ \x33\x2e\x36\x30\x31\x43\x31\x35\x2e\x38\x20\x32\x35\x33\x2e\x36\ \x30\x31\x20\x32\x37\x2e\x38\x20\x32\x34\x30\x2e\x30\x30\x31\x20\ \x33\x39\x2e\x38\x20\x32\x34\x34\x2e\x34\x30\x31\x43\x34\x36\x2e\ \x38\x31\x36\x20\x32\x34\x36\x2e\x39\x37\x34\x20\x34\x35\x2e\x38\ \x20\x32\x34\x33\x2e\x36\x30\x31\x20\x34\x36\x2e\x36\x20\x32\x34\ \x30\x2e\x38\x30\x31\x43\x34\x37\x2e\x34\x20\x32\x33\x38\x2e\x30\ \x30\x31\x20\x34\x37\x2e\x36\x20\x32\x33\x33\x2e\x38\x30\x31\x20\ \x35\x32\x2e\x36\x20\x32\x33\x30\x2e\x38\x30\x31\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\ \x66\x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x33\x33\x20\x32\x33\x37\x2e\x36\x30\x31\x43\x33\x33\ \x20\x32\x33\x37\x2e\x36\x30\x31\x20\x32\x39\x20\x32\x32\x36\x2e\ \x38\x30\x31\x20\x32\x36\x2e\x32\x20\x32\x33\x39\x2e\x36\x30\x31\ \x43\x32\x33\x2e\x34\x20\x32\x35\x32\x2e\x34\x30\x31\x20\x32\x30\ \x2e\x32\x20\x32\x35\x36\x2e\x30\x30\x31\x20\x31\x38\x2e\x36\x20\ \x32\x35\x38\x2e\x38\x30\x31\x43\x31\x38\x2e\x36\x20\x32\x35\x38\ \x2e\x38\x30\x31\x20\x31\x38\x2e\x36\x20\x32\x36\x34\x2e\x30\x30\ \x31\x20\x32\x37\x20\x32\x36\x33\x2e\x36\x30\x31\x43\x32\x37\x20\ \x32\x36\x33\x2e\x36\x30\x31\x20\x33\x37\x2e\x38\x20\x32\x36\x33\ \x2e\x32\x30\x31\x20\x33\x38\x2e\x32\x20\x32\x36\x30\x2e\x34\x30\ \x31\x43\x33\x38\x2e\x36\x20\x32\x35\x37\x2e\x36\x30\x31\x20\x33\ \x37\x20\x32\x34\x36\x2e\x30\x30\x31\x20\x33\x33\x20\x32\x33\x37\ \x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\x74\ \x72\x6f\x6b\x65\x22\x3a\x22\x23\x61\x35\x32\x36\x34\x63\x22\x2c\ \x20\x22\x77\x69\x64\x74\x68\x22\x3a\x32\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x34\x37\x20\x32\x34\x34\x2e\x38\x30\ \x31\x43\x34\x37\x20\x32\x34\x34\x2e\x38\x30\x31\x20\x35\x30\x2e\ \x36\x20\x32\x34\x32\x2e\x34\x30\x31\x20\x35\x33\x20\x32\x34\x33\ \x2e\x36\x30\x31\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\x74\x72\ \x6f\x6b\x65\x22\x3a\x22\x23\x61\x35\x32\x36\x34\x63\x22\x2c\x20\ \x22\x77\x69\x64\x74\x68\x22\x3a\x32\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x35\x33\x2e\x35\x20\x32\x32\x38\x2e\x34\ \x30\x31\x43\x35\x33\x2e\x35\x20\x32\x32\x38\x2e\x34\x30\x31\x20\ \x35\x36\x2e\x34\x20\x32\x32\x33\x2e\x35\x30\x31\x20\x36\x31\x2e\ \x32\x20\x32\x32\x32\x2e\x37\x30\x31\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x62\x32\x62\x32\x62\ \x32\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x32\x35\x2e\x38\x20\x32\x36\x35\x2e\x32\x30\x31\x43\x2d\x32\x35\ \x2e\x38\x20\x32\x36\x35\x2e\x32\x30\x31\x20\x2d\x37\x2e\x38\x20\ \x32\x36\x38\x2e\x34\x30\x31\x20\x2d\x33\x2e\x34\x20\x32\x36\x36\ \x2e\x38\x30\x31\x43\x2d\x33\x2e\x34\x20\x32\x36\x36\x2e\x38\x30\ \x31\x20\x35\x2e\x34\x20\x32\x36\x36\x2e\x38\x30\x31\x20\x2d\x33\ \x20\x32\x36\x38\x2e\x38\x30\x31\x43\x2d\x33\x20\x32\x36\x38\x2e\ \x38\x30\x31\x20\x2d\x31\x35\x2e\x38\x20\x32\x36\x38\x2e\x38\x30\ \x31\x20\x2d\x32\x33\x2e\x38\x20\x32\x36\x37\x2e\x36\x30\x31\x43\ \x2d\x32\x33\x2e\x38\x20\x32\x36\x37\x2e\x36\x30\x31\x20\x2d\x33\ \x35\x2e\x34\x20\x32\x36\x32\x2e\x30\x30\x31\x20\x2d\x32\x35\x2e\ \x38\x20\x32\x36\x35\x2e\x32\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\ \x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\ \x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\ \x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\ \x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x2d\x31\x31\x2e\x38\x20\x31\x37\x32\x2e\x30\x30\x31\x43\x2d\ \x31\x31\x2e\x38\x20\x31\x37\x32\x2e\x30\x30\x31\x20\x35\x2e\x38\ \x20\x31\x37\x32\x2e\x30\x30\x31\x20\x37\x2e\x38\x20\x31\x37\x32\ \x2e\x38\x30\x31\x43\x37\x2e\x38\x20\x31\x37\x32\x2e\x38\x30\x31\ \x20\x31\x35\x20\x32\x30\x33\x2e\x36\x30\x31\x20\x31\x31\x2e\x34\ \x20\x32\x31\x31\x2e\x32\x30\x31\x43\x31\x31\x2e\x34\x20\x32\x31\ \x31\x2e\x32\x30\x31\x20\x31\x30\x2e\x32\x20\x32\x31\x34\x2e\x30\ \x30\x31\x20\x37\x2e\x34\x20\x32\x30\x38\x2e\x34\x30\x31\x43\x37\ \x2e\x34\x20\x32\x30\x38\x2e\x34\x30\x31\x20\x2d\x31\x31\x20\x31\ \x37\x35\x2e\x36\x30\x31\x20\x2d\x31\x34\x2e\x32\x20\x31\x37\x33\ \x2e\x36\x30\x31\x43\x2d\x31\x37\x2e\x34\x20\x31\x37\x31\x2e\x36\ \x30\x31\x20\x2d\x31\x33\x20\x31\x37\x32\x2e\x30\x30\x31\x20\x2d\ \x31\x31\x2e\x38\x20\x31\x37\x32\x2e\x30\x30\x31\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\ \x66\x66\x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\ \x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\ \x74\x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x38\x38\x2e\x39\x20\x31\x36\x39\x2e\x33\x30\ \x31\x43\x2d\x38\x38\x2e\x39\x20\x31\x36\x39\x2e\x33\x30\x31\x20\ \x2d\x38\x30\x20\x31\x37\x31\x2e\x30\x30\x31\x20\x2d\x36\x37\x2e\ \x34\x20\x31\x37\x33\x2e\x36\x30\x31\x43\x2d\x36\x37\x2e\x34\x20\ \x31\x37\x33\x2e\x36\x30\x31\x20\x2d\x36\x32\x2e\x36\x20\x31\x39\ \x36\x2e\x30\x30\x31\x20\x2d\x35\x39\x2e\x34\x20\x32\x30\x30\x2e\ \x38\x30\x31\x43\x2d\x35\x36\x2e\x32\x20\x32\x30\x35\x2e\x36\x30\ \x31\x20\x2d\x35\x39\x2e\x38\x20\x32\x30\x35\x2e\x36\x30\x31\x20\ \x2d\x36\x33\x2e\x34\x20\x32\x30\x32\x2e\x38\x30\x31\x43\x2d\x36\ \x37\x20\x32\x30\x30\x2e\x30\x30\x31\x20\x2d\x38\x31\x2e\x38\x20\ \x31\x38\x36\x2e\x30\x30\x31\x20\x2d\x38\x33\x2e\x38\x20\x31\x38\ \x31\x2e\x36\x30\x31\x43\x2d\x38\x35\x2e\x38\x20\x31\x37\x37\x2e\ \x32\x30\x31\x20\x2d\x38\x38\x2e\x39\x20\x31\x36\x39\x2e\x33\x30\ \x31\x20\x2d\x38\x38\x2e\x39\x20\x31\x36\x39\x2e\x33\x30\x31\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x66\x66\x66\x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\ \x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\ \x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x2d\x36\x37\x2e\x30\x33\x39\x20\x31\ \x37\x33\x2e\x38\x31\x38\x43\x2d\x36\x37\x2e\x30\x33\x39\x20\x31\ \x37\x33\x2e\x38\x31\x38\x20\x2d\x36\x31\x2e\x32\x33\x39\x20\x31\ \x37\x35\x2e\x33\x36\x36\x20\x2d\x36\x30\x2e\x32\x33\x20\x31\x37\ \x37\x2e\x35\x38\x31\x43\x2d\x35\x39\x2e\x32\x32\x32\x20\x31\x37\ \x39\x2e\x37\x39\x35\x20\x2d\x36\x31\x2e\x34\x33\x32\x20\x31\x38\ \x33\x2e\x30\x39\x32\x20\x2d\x36\x31\x2e\x34\x33\x32\x20\x31\x38\ \x33\x2e\x30\x39\x32\x43\x2d\x36\x31\x2e\x34\x33\x32\x20\x31\x38\ \x33\x2e\x30\x39\x32\x20\x2d\x36\x32\x2e\x34\x33\x32\x20\x31\x38\ \x36\x2e\x33\x39\x37\x20\x2d\x36\x33\x2e\x36\x33\x34\x20\x31\x38\ \x34\x2e\x32\x33\x35\x43\x2d\x36\x34\x2e\x38\x33\x36\x20\x31\x38\ \x32\x2e\x30\x37\x32\x20\x2d\x36\x37\x2e\x37\x30\x38\x20\x31\x37\ \x34\x2e\x34\x31\x32\x20\x2d\x36\x37\x2e\x30\x33\x39\x20\x31\x37\ \x33\x2e\x38\x31\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x36\x37\x20\ \x31\x37\x33\x2e\x36\x30\x31\x43\x2d\x36\x37\x20\x31\x37\x33\x2e\ \x36\x30\x31\x20\x2d\x36\x33\x2e\x34\x20\x31\x37\x38\x2e\x38\x30\ \x31\x20\x2d\x35\x39\x2e\x38\x20\x31\x37\x38\x2e\x38\x30\x31\x43\ \x2d\x35\x36\x2e\x32\x20\x31\x37\x38\x2e\x38\x30\x31\x20\x2d\x35\ \x35\x2e\x38\x31\x38\x20\x31\x37\x38\x2e\x33\x38\x38\x20\x2d\x35\ \x33\x20\x31\x37\x39\x2e\x30\x30\x31\x43\x2d\x34\x38\x2e\x34\x20\ \x31\x38\x30\x2e\x30\x30\x31\x20\x2d\x34\x38\x2e\x38\x20\x31\x37\ \x38\x2e\x30\x30\x31\x20\x2d\x34\x32\x2e\x32\x20\x31\x37\x39\x2e\ \x32\x30\x31\x43\x2d\x33\x39\x2e\x35\x36\x20\x31\x37\x39\x2e\x36\ \x38\x31\x20\x2d\x33\x37\x20\x31\x37\x38\x2e\x38\x30\x31\x20\x2d\ \x33\x34\x2e\x32\x20\x31\x38\x30\x2e\x30\x30\x31\x43\x2d\x33\x31\ \x2e\x34\x20\x31\x38\x31\x2e\x32\x30\x31\x20\x2d\x32\x38\x2e\x32\ \x20\x31\x38\x30\x2e\x34\x30\x31\x20\x2d\x32\x37\x20\x31\x37\x38\ \x2e\x34\x30\x31\x43\x2d\x32\x35\x2e\x38\x20\x31\x37\x36\x2e\x34\ \x30\x31\x20\x2d\x32\x31\x20\x31\x37\x32\x2e\x32\x30\x31\x20\x2d\ \x32\x31\x20\x31\x37\x32\x2e\x32\x30\x31\x43\x2d\x32\x31\x20\x31\ \x37\x32\x2e\x32\x30\x31\x20\x2d\x33\x33\x2e\x38\x20\x31\x37\x34\ \x2e\x30\x30\x31\x20\x2d\x33\x36\x2e\x36\x20\x31\x37\x34\x2e\x38\ \x30\x31\x43\x2d\x33\x36\x2e\x36\x20\x31\x37\x34\x2e\x38\x30\x31\ \x20\x2d\x35\x39\x20\x31\x37\x36\x2e\x30\x30\x31\x20\x2d\x36\x37\ \x20\x31\x37\x33\x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x63\ \x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\ \x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\ \x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x2d\x32\x32\x2e\x34\x20\x31\x37\x33\x2e\x38\x30\x31\x43\x2d\x32\ \x32\x2e\x34\x20\x31\x37\x33\x2e\x38\x30\x31\x20\x2d\x32\x38\x2e\ \x38\x35\x20\x31\x37\x37\x2e\x33\x30\x31\x20\x2d\x32\x39\x2e\x32\ \x35\x20\x31\x37\x39\x2e\x37\x30\x31\x43\x2d\x32\x39\x2e\x36\x35\ \x20\x31\x38\x32\x2e\x31\x30\x31\x20\x2d\x32\x34\x20\x31\x38\x35\ \x2e\x38\x30\x31\x20\x2d\x32\x34\x20\x31\x38\x35\x2e\x38\x30\x31\ \x43\x2d\x32\x34\x20\x31\x38\x35\x2e\x38\x30\x31\x20\x2d\x32\x31\ \x2e\x32\x35\x20\x31\x39\x30\x2e\x34\x30\x31\x20\x2d\x32\x30\x2e\ \x36\x35\x20\x31\x38\x38\x2e\x30\x30\x31\x43\x2d\x32\x30\x2e\x30\ \x35\x20\x31\x38\x35\x2e\x36\x30\x31\x20\x2d\x32\x31\x2e\x36\x20\ \x31\x37\x34\x2e\x32\x30\x31\x20\x2d\x32\x32\x2e\x34\x20\x31\x37\ \x33\x2e\x38\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x63\x63\x22\x2c\ \x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\ \x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x35\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x35\x39\ \x2e\x38\x38\x35\x20\x31\x37\x39\x2e\x32\x36\x35\x43\x2d\x35\x39\ \x2e\x38\x38\x35\x20\x31\x37\x39\x2e\x32\x36\x35\x20\x2d\x35\x32\ \x2e\x38\x37\x38\x20\x31\x39\x30\x2e\x34\x35\x33\x20\x2d\x35\x32\ \x2e\x36\x36\x31\x20\x31\x37\x39\x2e\x32\x34\x32\x43\x2d\x35\x32\ \x2e\x36\x36\x31\x20\x31\x37\x39\x2e\x32\x34\x32\x20\x2d\x35\x32\ \x2e\x31\x30\x34\x20\x31\x37\x37\x2e\x39\x38\x34\x20\x2d\x35\x33\ \x2e\x38\x36\x34\x20\x31\x37\x37\x2e\x39\x36\x32\x43\x2d\x35\x39\ \x2e\x39\x33\x39\x20\x31\x37\x37\x2e\x38\x38\x36\x20\x2d\x35\x38\ \x2e\x34\x31\x38\x20\x31\x37\x33\x2e\x37\x38\x34\x20\x2d\x35\x39\ \x2e\x38\x38\x35\x20\x31\x37\x39\x2e\x32\x36\x35\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\ \x66\x66\x66\x63\x63\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\ \x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\ \x74\x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x35\x32\x2e\x37\x30\x37\x20\x31\x37\x39\x2e\ \x35\x31\x34\x43\x2d\x35\x32\x2e\x37\x30\x37\x20\x31\x37\x39\x2e\ \x35\x31\x34\x20\x2d\x34\x34\x2e\x37\x38\x36\x20\x31\x39\x30\x2e\ \x37\x30\x31\x20\x2d\x34\x35\x2e\x34\x32\x32\x20\x31\x37\x39\x2e\ \x34\x32\x31\x43\x2d\x34\x35\x2e\x34\x32\x32\x20\x31\x37\x39\x2e\ \x34\x32\x31\x20\x2d\x34\x35\x2e\x34\x31\x35\x20\x31\x37\x39\x2e\ \x30\x38\x39\x20\x2d\x34\x37\x2e\x31\x36\x38\x20\x31\x37\x38\x2e\ \x39\x33\x36\x43\x2d\x35\x31\x2e\x39\x31\x35\x20\x31\x37\x38\x2e\ \x35\x32\x32\x20\x2d\x35\x31\x2e\x35\x37\x20\x31\x37\x34\x2e\x30\ \x30\x34\x20\x2d\x35\x32\x2e\x37\x30\x37\x20\x31\x37\x39\x2e\x35\ \x31\x34\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x66\x66\x66\x66\x63\x63\x22\x2c\x20\x22\x73\ \x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\ \x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x35\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x34\x35\x2e\x34\x39\ \x34\x20\x31\x37\x39\x2e\x35\x32\x32\x43\x2d\x34\x35\x2e\x34\x39\ \x34\x20\x31\x37\x39\x2e\x35\x32\x32\x20\x2d\x33\x37\x2e\x35\x33\ \x34\x20\x31\x39\x30\x2e\x31\x35\x20\x2d\x33\x38\x2e\x32\x30\x33\ \x20\x31\x38\x30\x2e\x34\x38\x34\x43\x2d\x33\x38\x2e\x32\x30\x33\ \x20\x31\x38\x30\x2e\x34\x38\x34\x20\x2d\x33\x38\x2e\x30\x38\x34\ \x20\x31\x37\x39\x2e\x32\x35\x31\x20\x2d\x33\x39\x2e\x37\x33\x38\ \x20\x31\x37\x38\x2e\x39\x35\x43\x2d\x34\x33\x2e\x36\x33\x20\x31\ \x37\x38\x2e\x32\x34\x34\x20\x2d\x34\x33\x2e\x38\x34\x31\x20\x31\ \x37\x34\x2e\x39\x39\x35\x20\x2d\x34\x35\x2e\x34\x39\x34\x20\x31\ \x37\x39\x2e\x35\x32\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x63\x63\x22\ \x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\ \x35\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x33\ \x38\x2e\x36\x31\x38\x20\x31\x37\x39\x2e\x36\x30\x32\x43\x2d\x33\ \x38\x2e\x36\x31\x38\x20\x31\x37\x39\x2e\x36\x30\x32\x20\x2d\x33\ \x30\x2e\x37\x31\x38\x20\x31\x39\x31\x2e\x31\x36\x33\x20\x2d\x33\ \x30\x2e\x33\x37\x20\x31\x38\x31\x2e\x33\x38\x32\x43\x2d\x33\x30\ \x2e\x33\x37\x20\x31\x38\x31\x2e\x33\x38\x32\x20\x2d\x32\x38\x2e\ \x37\x32\x36\x20\x31\x38\x30\x2e\x30\x30\x34\x20\x2d\x33\x30\x2e\ \x34\x37\x32\x20\x31\x37\x39\x2e\x37\x38\x32\x43\x2d\x33\x36\x2e\ \x32\x39\x20\x31\x37\x39\x2e\x30\x34\x32\x20\x2d\x33\x35\x2e\x34\ \x39\x32\x20\x31\x37\x34\x2e\x35\x38\x38\x20\x2d\x33\x38\x2e\x36\ \x31\x38\x20\x31\x37\x39\x2e\x36\x30\x32\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x65\x35\x65\ \x35\x62\x32\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x2d\x37\x34\x2e\x37\x39\x32\x20\x31\x38\x33\x2e\x31\x33\x32\ \x4c\x2d\x38\x32\x2e\x34\x35\x20\x31\x38\x31\x2e\x36\x30\x31\x43\ \x2d\x38\x35\x2e\x30\x35\x20\x31\x37\x36\x2e\x36\x30\x31\x20\x2d\ \x38\x37\x2e\x31\x35\x20\x31\x37\x30\x2e\x34\x35\x31\x20\x2d\x38\ \x37\x2e\x31\x35\x20\x31\x37\x30\x2e\x34\x35\x31\x43\x2d\x38\x37\ \x2e\x31\x35\x20\x31\x37\x30\x2e\x34\x35\x31\x20\x2d\x38\x30\x2e\ \x38\x20\x31\x37\x31\x2e\x34\x35\x31\x20\x2d\x36\x38\x2e\x33\x20\ \x31\x37\x34\x2e\x32\x35\x31\x43\x2d\x36\x38\x2e\x33\x20\x31\x37\ \x34\x2e\x32\x35\x31\x20\x2d\x36\x37\x2e\x34\x32\x34\x20\x31\x37\ \x37\x2e\x35\x36\x39\x20\x2d\x36\x35\x2e\x39\x35\x32\x20\x31\x38\ \x33\x2e\x33\x36\x34\x4c\x2d\x37\x34\x2e\x37\x39\x32\x20\x31\x38\ \x33\x2e\x31\x33\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x65\x35\x65\x35\x62\x32\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x39\x2e\x37\ \x32\x34\x20\x31\x37\x38\x2e\x34\x37\x43\x2d\x31\x31\x2e\x33\x39\ \x20\x31\x37\x35\x2e\x39\x36\x34\x20\x2d\x31\x32\x2e\x37\x30\x37\ \x20\x31\x37\x34\x2e\x32\x30\x36\x20\x2d\x31\x33\x2e\x33\x35\x37\ \x20\x31\x37\x33\x2e\x38\x43\x2d\x31\x36\x2e\x33\x37\x20\x31\x37\ \x31\x2e\x39\x31\x37\x20\x2d\x31\x32\x2e\x32\x32\x37\x20\x31\x37\ \x32\x2e\x32\x39\x34\x20\x2d\x31\x31\x2e\x30\x39\x38\x20\x31\x37\ \x32\x2e\x32\x39\x34\x43\x2d\x31\x31\x2e\x30\x39\x38\x20\x31\x37\ \x32\x2e\x32\x39\x34\x20\x35\x2e\x34\x37\x33\x20\x31\x37\x32\x2e\ \x32\x39\x34\x20\x37\x2e\x33\x35\x36\x20\x31\x37\x33\x2e\x30\x34\ \x37\x43\x37\x2e\x33\x35\x36\x20\x31\x37\x33\x2e\x30\x34\x37\x20\ \x37\x2e\x38\x38\x20\x31\x37\x35\x2e\x32\x38\x39\x20\x38\x2e\x35\ \x36\x34\x20\x31\x37\x38\x2e\x36\x38\x43\x38\x2e\x35\x36\x34\x20\ \x31\x37\x38\x2e\x36\x38\x20\x2d\x31\x2e\x35\x32\x34\x20\x31\x37\ \x36\x2e\x36\x37\x20\x2d\x39\x2e\x37\x32\x34\x20\x31\x37\x38\x2e\ \x34\x37\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x63\x63\x37\x32\x32\x36\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x34\x33\x2e\x38\x38\x20\x34\ \x30\x2e\x33\x32\x31\x43\x37\x31\x2e\x36\x30\x31\x20\x34\x34\x2e\ \x32\x38\x31\x20\x39\x37\x2e\x31\x32\x31\x20\x38\x2e\x36\x34\x31\ \x20\x39\x38\x2e\x38\x38\x31\x20\x2d\x31\x2e\x30\x34\x43\x31\x30\ \x30\x2e\x36\x34\x31\x20\x2d\x31\x30\x2e\x37\x32\x20\x39\x30\x2e\ \x35\x32\x31\x20\x2d\x32\x32\x2e\x36\x20\x39\x30\x2e\x35\x32\x31\ \x20\x2d\x32\x32\x2e\x36\x43\x39\x31\x2e\x38\x34\x31\x20\x2d\x32\ \x35\x2e\x36\x38\x20\x38\x37\x2e\x30\x30\x31\x20\x2d\x33\x39\x2e\ \x37\x36\x20\x38\x31\x2e\x37\x32\x31\x20\x2d\x34\x39\x43\x37\x36\ \x2e\x34\x34\x31\x20\x2d\x35\x38\x2e\x32\x34\x20\x36\x30\x2e\x35\ \x34\x20\x2d\x35\x37\x2e\x32\x36\x36\x20\x34\x33\x20\x2d\x35\x38\ \x2e\x32\x34\x43\x32\x37\x2e\x31\x36\x20\x2d\x35\x39\x2e\x31\x32\ \x20\x38\x2e\x36\x38\x20\x2d\x33\x35\x2e\x38\x20\x37\x2e\x33\x36\ \x20\x2d\x33\x34\x2e\x30\x34\x43\x36\x2e\x30\x34\x20\x2d\x33\x32\ \x2e\x32\x38\x20\x31\x32\x2e\x32\x20\x36\x2e\x30\x30\x31\x20\x31\ \x33\x2e\x35\x32\x20\x31\x31\x2e\x37\x32\x31\x43\x31\x34\x2e\x38\ \x34\x20\x31\x37\x2e\x34\x34\x31\x20\x31\x32\x2e\x32\x20\x34\x33\ \x2e\x38\x34\x31\x20\x31\x32\x2e\x32\x20\x34\x33\x2e\x38\x34\x31\ \x43\x34\x36\x2e\x34\x34\x20\x33\x34\x2e\x37\x34\x31\x20\x31\x36\ \x2e\x31\x36\x20\x33\x36\x2e\x33\x36\x31\x20\x34\x33\x2e\x38\x38\ \x20\x34\x30\x2e\x33\x32\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x65\x61\x38\x65\x35\x31\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x38\x2e\ \x30\x38\x38\x20\x2d\x33\x33\x2e\x33\x39\x32\x43\x36\x2e\x37\x39\ \x32\x20\x2d\x33\x31\x2e\x36\x36\x34\x20\x31\x32\x2e\x38\x34\x20\ \x35\x2e\x39\x32\x31\x20\x31\x34\x2e\x31\x33\x36\x20\x31\x31\x2e\ \x35\x33\x37\x43\x31\x35\x2e\x34\x33\x32\x20\x31\x37\x2e\x31\x35\ \x33\x20\x31\x32\x2e\x38\x34\x20\x34\x33\x2e\x30\x37\x33\x20\x31\ \x32\x2e\x38\x34\x20\x34\x33\x2e\x30\x37\x33\x43\x34\x35\x2e\x35\ \x31\x32\x20\x33\x34\x2e\x31\x39\x33\x20\x31\x36\x2e\x37\x32\x38\ \x20\x33\x35\x2e\x37\x32\x39\x20\x34\x33\x2e\x39\x34\x34\x20\x33\ \x39\x2e\x36\x31\x37\x43\x37\x31\x2e\x31\x36\x31\x20\x34\x33\x2e\ \x35\x30\x35\x20\x39\x36\x2e\x32\x31\x37\x20\x38\x2e\x35\x31\x33\ \x20\x39\x37\x2e\x39\x34\x35\x20\x2d\x30\x2e\x39\x39\x32\x43\x39\ \x39\x2e\x36\x37\x33\x20\x2d\x31\x30\x2e\x34\x39\x36\x20\x38\x39\ \x2e\x37\x33\x37\x20\x2d\x32\x32\x2e\x31\x36\x20\x38\x39\x2e\x37\ \x33\x37\x20\x2d\x32\x32\x2e\x31\x36\x43\x39\x31\x2e\x30\x33\x33\ \x20\x2d\x32\x35\x2e\x31\x38\x34\x20\x38\x36\x2e\x32\x38\x31\x20\ \x2d\x33\x39\x2e\x30\x30\x38\x20\x38\x31\x2e\x30\x39\x37\x20\x2d\ \x34\x38\x2e\x30\x38\x43\x37\x35\x2e\x39\x31\x33\x20\x2d\x35\x37\ \x2e\x31\x35\x32\x20\x36\x30\x2e\x33\x30\x32\x20\x2d\x35\x36\x2e\ \x31\x39\x35\x20\x34\x33\x2e\x30\x38\x20\x2d\x35\x37\x2e\x31\x35\ \x32\x43\x32\x37\x2e\x35\x32\x38\x20\x2d\x35\x38\x2e\x30\x31\x36\ \x20\x39\x2e\x33\x38\x34\x20\x2d\x33\x35\x2e\x31\x32\x20\x38\x2e\ \x30\x38\x38\x20\x2d\x33\x33\x2e\x33\x39\x32\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x65\x66\ \x61\x61\x37\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x38\x2e\x38\x31\x36\x20\x2d\x33\x32\x2e\x37\x34\x34\x43\ \x37\x2e\x35\x34\x34\x20\x2d\x33\x31\x2e\x30\x34\x38\x20\x31\x33\ \x2e\x34\x38\x20\x35\x2e\x38\x34\x31\x20\x31\x34\x2e\x37\x35\x32\ \x20\x31\x31\x2e\x33\x35\x33\x43\x31\x36\x2e\x30\x32\x34\x20\x31\ \x36\x2e\x38\x36\x35\x20\x31\x33\x2e\x34\x38\x20\x34\x32\x2e\x33\ \x30\x35\x20\x31\x33\x2e\x34\x38\x20\x34\x32\x2e\x33\x30\x35\x43\ \x34\x34\x2e\x38\x38\x34\x20\x33\x33\x2e\x31\x34\x35\x20\x31\x37\ \x2e\x32\x39\x36\x20\x33\x35\x2e\x30\x39\x37\x20\x34\x34\x2e\x30\ \x30\x38\x20\x33\x38\x2e\x39\x31\x33\x43\x37\x30\x2e\x37\x32\x31\ \x20\x34\x32\x2e\x37\x32\x39\x20\x39\x35\x2e\x33\x31\x33\x20\x38\ \x2e\x33\x38\x35\x20\x39\x37\x2e\x30\x30\x39\x20\x2d\x30\x2e\x39\ \x34\x34\x43\x39\x38\x2e\x37\x30\x35\x20\x2d\x31\x30\x2e\x32\x37\ \x32\x20\x38\x38\x2e\x39\x35\x33\x20\x2d\x32\x31\x2e\x37\x32\x20\ \x38\x38\x2e\x39\x35\x33\x20\x2d\x32\x31\x2e\x37\x32\x43\x39\x30\ \x2e\x32\x32\x35\x20\x2d\x32\x34\x2e\x36\x38\x38\x20\x38\x35\x2e\ \x35\x36\x31\x20\x2d\x33\x38\x2e\x32\x35\x36\x20\x38\x30\x2e\x34\ \x37\x33\x20\x2d\x34\x37\x2e\x31\x36\x43\x37\x35\x2e\x33\x38\x35\ \x20\x2d\x35\x36\x2e\x30\x36\x34\x20\x36\x30\x2e\x30\x36\x33\x20\ \x2d\x35\x35\x2e\x31\x32\x35\x20\x34\x33\x2e\x31\x36\x20\x2d\x35\ \x36\x2e\x30\x36\x34\x43\x32\x37\x2e\x38\x39\x36\x20\x2d\x35\x36\ \x2e\x39\x31\x32\x20\x31\x30\x2e\x30\x38\x38\x20\x2d\x33\x34\x2e\ \x34\x34\x20\x38\x2e\x38\x31\x36\x20\x2d\x33\x32\x2e\x37\x34\x34\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x34\x63\x36\x61\x38\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x39\x2e\x35\x34\x34\x20\x2d\x33\x32\ \x2e\x30\x39\x36\x43\x38\x2e\x32\x39\x36\x20\x2d\x33\x30\x2e\x34\ \x33\x32\x20\x31\x34\x2e\x31\x32\x20\x35\x2e\x37\x36\x31\x20\x31\ \x35\x2e\x33\x36\x38\x20\x31\x31\x2e\x31\x36\x39\x43\x31\x36\x2e\ \x36\x31\x36\x20\x31\x36\x2e\x35\x37\x37\x20\x31\x34\x2e\x31\x32\ \x20\x34\x31\x2e\x35\x33\x37\x20\x31\x34\x2e\x31\x32\x20\x34\x31\ \x2e\x35\x33\x37\x43\x34\x33\x2e\x35\x35\x36\x20\x33\x32\x2e\x34\ \x39\x37\x20\x31\x37\x2e\x38\x36\x34\x20\x33\x34\x2e\x34\x36\x35\ \x20\x34\x34\x2e\x30\x37\x32\x20\x33\x38\x2e\x32\x30\x39\x43\x37\ \x30\x2e\x32\x38\x31\x20\x34\x31\x2e\x39\x35\x33\x20\x39\x34\x2e\ \x34\x30\x39\x20\x38\x2e\x32\x35\x37\x20\x39\x36\x2e\x30\x37\x33\ \x20\x2d\x30\x2e\x38\x39\x35\x43\x39\x37\x2e\x37\x33\x37\x20\x2d\ \x31\x30\x2e\x30\x34\x38\x20\x38\x38\x2e\x31\x36\x39\x20\x2d\x32\ \x31\x2e\x32\x38\x20\x38\x38\x2e\x31\x36\x39\x20\x2d\x32\x31\x2e\ \x32\x38\x43\x38\x39\x2e\x34\x31\x37\x20\x2d\x32\x34\x2e\x31\x39\ \x32\x20\x38\x34\x2e\x38\x34\x31\x20\x2d\x33\x37\x2e\x35\x30\x34\ \x20\x37\x39\x2e\x38\x34\x39\x20\x2d\x34\x36\x2e\x32\x34\x43\x37\ \x34\x2e\x38\x35\x37\x20\x2d\x35\x34\x2e\x39\x37\x36\x20\x35\x39\ \x2e\x38\x32\x34\x20\x2d\x35\x34\x2e\x30\x35\x35\x20\x34\x33\x2e\ \x32\x34\x20\x2d\x35\x34\x2e\x39\x37\x36\x43\x32\x38\x2e\x32\x36\ \x34\x20\x2d\x35\x35\x2e\x38\x30\x38\x20\x31\x30\x2e\x37\x39\x32\ \x20\x2d\x33\x33\x2e\x37\x36\x20\x39\x2e\x35\x34\x34\x20\x2d\x33\ \x32\x2e\x30\x39\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x39\x65\x32\x64\x33\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x30\x2e\x32\ \x37\x32\x20\x2d\x33\x31\x2e\x34\x34\x38\x43\x39\x2e\x30\x34\x38\ \x20\x2d\x32\x39\x2e\x38\x31\x36\x20\x31\x34\x2e\x37\x36\x20\x35\ \x2e\x36\x38\x31\x20\x31\x35\x2e\x39\x38\x34\x20\x31\x30\x2e\x39\ \x38\x35\x43\x31\x37\x2e\x32\x30\x38\x20\x31\x36\x2e\x32\x38\x39\ \x20\x31\x34\x2e\x37\x36\x20\x34\x30\x2e\x37\x36\x39\x20\x31\x34\ \x2e\x37\x36\x20\x34\x30\x2e\x37\x36\x39\x43\x34\x32\x2e\x36\x32\ \x38\x20\x33\x31\x2e\x38\x34\x39\x20\x31\x38\x2e\x34\x33\x32\x20\ \x33\x33\x2e\x38\x33\x33\x20\x34\x34\x2e\x31\x33\x36\x20\x33\x37\ \x2e\x35\x30\x35\x43\x36\x39\x2e\x38\x34\x31\x20\x34\x31\x2e\x31\ \x37\x37\x20\x39\x33\x2e\x35\x30\x35\x20\x38\x2e\x31\x32\x39\x20\ \x39\x35\x2e\x31\x33\x37\x20\x2d\x30\x2e\x38\x34\x38\x43\x39\x36\ \x2e\x37\x36\x39\x20\x2d\x39\x2e\x38\x32\x34\x20\x38\x37\x2e\x33\ \x38\x35\x20\x2d\x32\x30\x2e\x38\x34\x20\x38\x37\x2e\x33\x38\x35\ \x20\x2d\x32\x30\x2e\x38\x34\x43\x38\x38\x2e\x36\x30\x39\x20\x2d\ \x32\x33\x2e\x36\x39\x36\x20\x38\x34\x2e\x31\x32\x31\x20\x2d\x33\ \x36\x2e\x37\x35\x32\x20\x37\x39\x2e\x32\x32\x35\x20\x2d\x34\x35\ \x2e\x33\x32\x43\x37\x34\x2e\x33\x32\x39\x20\x2d\x35\x33\x2e\x38\ \x38\x38\x20\x35\x39\x2e\x35\x38\x35\x20\x2d\x35\x32\x2e\x39\x38\ \x35\x20\x34\x33\x2e\x33\x32\x20\x2d\x35\x33\x2e\x38\x38\x38\x43\ \x32\x38\x2e\x36\x33\x32\x20\x2d\x35\x34\x2e\x37\x30\x34\x20\x31\ \x31\x2e\x34\x39\x36\x20\x2d\x33\x33\x2e\x30\x38\x20\x31\x30\x2e\ \x32\x37\x32\x20\x2d\x33\x31\x2e\x34\x34\x38\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\ \x66\x66\x66\x66\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x34\x34\x2e\x32\x20\x33\x36\x2e\x38\x43\x36\x39\x2e\x34\ \x20\x34\x30\x2e\x34\x20\x39\x32\x2e\x36\x30\x31\x20\x38\x20\x39\ \x34\x2e\x32\x30\x31\x20\x2d\x30\x2e\x38\x43\x39\x35\x2e\x38\x30\ \x31\x20\x2d\x39\x2e\x36\x20\x38\x36\x2e\x36\x30\x31\x20\x2d\x32\ \x30\x2e\x34\x20\x38\x36\x2e\x36\x30\x31\x20\x2d\x32\x30\x2e\x34\ \x43\x38\x37\x2e\x38\x30\x31\x20\x2d\x32\x33\x2e\x32\x20\x38\x33\ \x2e\x34\x20\x2d\x33\x36\x20\x37\x38\x2e\x36\x20\x2d\x34\x34\x2e\ \x34\x43\x37\x33\x2e\x38\x20\x2d\x35\x32\x2e\x38\x20\x35\x39\x2e\ \x33\x34\x36\x20\x2d\x35\x31\x2e\x39\x31\x34\x20\x34\x33\x2e\x34\ \x20\x2d\x35\x32\x2e\x38\x43\x32\x39\x20\x2d\x35\x33\x2e\x36\x20\ \x31\x32\x2e\x32\x20\x2d\x33\x32\x2e\x34\x20\x31\x31\x20\x2d\x33\ \x30\x2e\x38\x43\x39\x2e\x38\x20\x2d\x32\x39\x2e\x32\x20\x31\x35\ \x2e\x34\x20\x35\x2e\x36\x20\x31\x36\x2e\x36\x20\x31\x30\x2e\x38\ \x43\x31\x37\x2e\x38\x20\x31\x36\x20\x31\x35\x2e\x34\x20\x34\x30\ \x20\x31\x35\x2e\x34\x20\x34\x30\x43\x34\x30\x2e\x39\x20\x33\x31\ \x2e\x34\x20\x31\x39\x20\x33\x33\x2e\x32\x20\x34\x34\x2e\x32\x20\ \x33\x36\x2e\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x39\x30\x2e\x36\x30\ \x31\x20\x32\x2e\x38\x43\x39\x30\x2e\x36\x30\x31\x20\x32\x2e\x38\ \x20\x36\x32\x2e\x38\x20\x31\x30\x2e\x34\x20\x35\x31\x2e\x32\x20\ \x38\x2e\x38\x43\x35\x31\x2e\x32\x20\x38\x2e\x38\x20\x33\x35\x2e\ \x34\x20\x32\x2e\x32\x20\x32\x36\x2e\x36\x20\x32\x34\x43\x32\x36\ \x2e\x36\x20\x32\x34\x20\x32\x33\x20\x33\x31\x2e\x32\x20\x32\x31\ \x20\x33\x33\x2e\x32\x43\x31\x39\x20\x33\x35\x2e\x32\x20\x39\x30\ \x2e\x36\x30\x31\x20\x32\x2e\x38\x20\x39\x30\x2e\x36\x30\x31\x20\ \x32\x2e\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x39\x34\x2e\x34\x30\x31\ \x20\x30\x2e\x36\x43\x39\x34\x2e\x34\x30\x31\x20\x30\x2e\x36\x20\ \x36\x35\x2e\x34\x20\x31\x32\x2e\x38\x20\x35\x35\x2e\x34\x20\x31\ \x32\x2e\x34\x43\x35\x35\x2e\x34\x20\x31\x32\x2e\x34\x20\x33\x39\ \x20\x37\x2e\x38\x20\x33\x30\x2e\x36\x20\x32\x32\x2e\x34\x43\x33\ \x30\x2e\x36\x20\x32\x32\x2e\x34\x20\x32\x32\x2e\x32\x20\x33\x31\ \x2e\x36\x20\x31\x39\x20\x33\x33\x2e\x32\x43\x31\x39\x20\x33\x33\ \x2e\x32\x20\x31\x38\x2e\x36\x20\x33\x34\x2e\x38\x20\x32\x35\x20\ \x33\x30\x2e\x38\x4c\x33\x35\x2e\x34\x20\x33\x36\x43\x33\x35\x2e\ \x34\x20\x33\x36\x20\x35\x30\x2e\x32\x20\x34\x35\x2e\x36\x20\x35\ \x39\x2e\x38\x20\x32\x39\x2e\x36\x43\x35\x39\x2e\x38\x20\x32\x39\ \x2e\x36\x20\x36\x33\x2e\x38\x20\x31\x38\x2e\x34\x20\x36\x33\x2e\ \x38\x20\x31\x36\x2e\x34\x43\x36\x33\x2e\x38\x20\x31\x34\x2e\x34\ \x20\x38\x35\x20\x38\x2e\x38\x20\x38\x36\x2e\x36\x30\x31\x20\x38\ \x2e\x34\x43\x38\x38\x2e\x32\x30\x31\x20\x38\x20\x39\x34\x2e\x38\ \x30\x31\x20\x33\x2e\x38\x20\x39\x34\x2e\x34\x30\x31\x20\x30\x2e\ \x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x39\x39\x63\x63\x33\x32\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x34\x37\x20\x33\x36\x2e\x35\x31\ \x34\x43\x34\x30\x2e\x31\x32\x38\x20\x33\x36\x2e\x35\x31\x34\x20\ \x33\x31\x2e\x37\x35\x35\x20\x33\x32\x2e\x36\x34\x39\x20\x33\x31\ \x2e\x37\x35\x35\x20\x32\x36\x2e\x34\x43\x33\x31\x2e\x37\x35\x35\ \x20\x32\x30\x2e\x31\x35\x32\x20\x34\x30\x2e\x31\x32\x38\x20\x31\ \x33\x2e\x38\x38\x37\x20\x34\x37\x20\x31\x33\x2e\x38\x38\x37\x43\ \x35\x33\x2e\x38\x37\x34\x20\x31\x33\x2e\x38\x38\x37\x20\x35\x39\ \x2e\x34\x34\x36\x20\x31\x38\x2e\x39\x35\x32\x20\x35\x39\x2e\x34\ \x34\x36\x20\x32\x35\x2e\x32\x43\x35\x39\x2e\x34\x34\x36\x20\x33\ \x31\x2e\x34\x34\x39\x20\x35\x33\x2e\x38\x37\x34\x20\x33\x36\x2e\ \x35\x31\x34\x20\x34\x37\x20\x33\x36\x2e\x35\x31\x34\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x36\x35\x39\x39\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x34\x33\x2e\x33\x37\x37\x20\x31\x39\x2e\x38\x33\ \x43\x33\x38\x2e\x35\x33\x31\x20\x32\x30\x2e\x35\x35\x32\x20\x33\ \x33\x2e\x34\x34\x32\x20\x32\x32\x2e\x30\x35\x35\x20\x33\x33\x2e\ \x35\x31\x34\x20\x32\x31\x2e\x38\x33\x39\x43\x33\x35\x2e\x30\x35\ \x34\x20\x31\x37\x2e\x32\x32\x20\x34\x31\x2e\x34\x31\x35\x20\x31\ \x33\x2e\x38\x38\x37\x20\x34\x37\x20\x31\x33\x2e\x38\x38\x37\x43\ \x35\x31\x2e\x32\x39\x36\x20\x31\x33\x2e\x38\x38\x37\x20\x35\x35\ \x2e\x30\x38\x34\x20\x31\x35\x2e\x38\x36\x35\x20\x35\x37\x2e\x33\ \x32\x20\x31\x38\x2e\x38\x37\x35\x43\x35\x37\x2e\x33\x32\x20\x31\ \x38\x2e\x38\x37\x35\x20\x35\x32\x2e\x30\x30\x34\x20\x31\x38\x2e\ \x35\x34\x35\x20\x34\x33\x2e\x33\x37\x37\x20\x31\x39\x2e\x38\x33\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x35\x35\x2e\x34\x20\x31\x39\x2e\x36\ \x43\x35\x35\x2e\x34\x20\x31\x39\x2e\x36\x20\x35\x31\x20\x31\x36\ \x2e\x34\x20\x35\x31\x20\x31\x38\x2e\x36\x43\x35\x31\x20\x31\x38\ \x2e\x36\x20\x35\x34\x2e\x36\x20\x32\x33\x20\x35\x35\x2e\x34\x20\ \x31\x39\x2e\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x34\x35\x2e\x34\x20\ \x32\x37\x2e\x37\x32\x36\x43\x34\x32\x2e\x39\x30\x31\x20\x32\x37\ \x2e\x37\x32\x36\x20\x34\x30\x2e\x38\x37\x35\x20\x32\x35\x2e\x37\ \x20\x34\x30\x2e\x38\x37\x35\x20\x32\x33\x2e\x32\x43\x34\x30\x2e\ \x38\x37\x35\x20\x32\x30\x2e\x37\x30\x31\x20\x34\x32\x2e\x39\x30\ \x31\x20\x31\x38\x2e\x36\x37\x35\x20\x34\x35\x2e\x34\x20\x31\x38\ \x2e\x36\x37\x35\x43\x34\x37\x2e\x39\x20\x31\x38\x2e\x36\x37\x35\ \x20\x34\x39\x2e\x39\x32\x36\x20\x32\x30\x2e\x37\x30\x31\x20\x34\ \x39\x2e\x39\x32\x36\x20\x32\x33\x2e\x32\x43\x34\x39\x2e\x39\x32\ \x36\x20\x32\x35\x2e\x37\x20\x34\x37\x2e\x39\x20\x32\x37\x2e\x37\ \x32\x36\x20\x34\x35\x2e\x34\x20\x32\x37\x2e\x37\x32\x36\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x63\x63\x37\x32\x32\x36\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x35\x38\x2e\x36\x20\x31\x34\x2e\x34\x43\ \x2d\x35\x38\x2e\x36\x20\x31\x34\x2e\x34\x20\x2d\x36\x31\x2e\x38\ \x20\x2d\x36\x2e\x38\x20\x2d\x35\x39\x2e\x34\x20\x2d\x31\x31\x2e\ \x32\x43\x2d\x35\x39\x2e\x34\x20\x2d\x31\x31\x2e\x32\x20\x2d\x34\ \x38\x2e\x36\x20\x2d\x32\x31\x2e\x32\x20\x2d\x34\x39\x20\x2d\x32\ \x34\x2e\x38\x43\x2d\x34\x39\x20\x2d\x32\x34\x2e\x38\x20\x2d\x34\ \x39\x2e\x34\x20\x2d\x34\x32\x2e\x38\x20\x2d\x35\x30\x2e\x36\x20\ \x2d\x34\x33\x2e\x36\x43\x2d\x35\x31\x2e\x38\x20\x2d\x34\x34\x2e\ \x34\x20\x2d\x35\x39\x2e\x34\x20\x2d\x35\x30\x2e\x34\x20\x2d\x36\ \x35\x2e\x34\x20\x2d\x34\x34\x43\x2d\x36\x35\x2e\x34\x20\x2d\x34\ \x34\x20\x2d\x37\x35\x2e\x38\x20\x2d\x32\x36\x20\x2d\x37\x35\x20\ \x2d\x31\x39\x2e\x36\x4c\x2d\x37\x35\x20\x2d\x31\x37\x2e\x36\x43\ \x2d\x37\x35\x20\x2d\x31\x37\x2e\x36\x20\x2d\x38\x32\x2e\x36\x20\ \x2d\x31\x38\x20\x2d\x38\x34\x2e\x32\x20\x2d\x31\x36\x43\x2d\x38\ \x34\x2e\x32\x20\x2d\x31\x36\x20\x2d\x38\x35\x2e\x34\x20\x2d\x31\ \x30\x2e\x38\x20\x2d\x38\x36\x2e\x36\x20\x2d\x31\x30\x2e\x34\x43\ \x2d\x38\x36\x2e\x36\x20\x2d\x31\x30\x2e\x34\x20\x2d\x38\x39\x2e\ \x34\x20\x2d\x38\x20\x2d\x38\x37\x2e\x34\x20\x2d\x35\x2e\x32\x43\ \x2d\x38\x37\x2e\x34\x20\x2d\x35\x2e\x32\x20\x2d\x38\x39\x2e\x34\ \x20\x2d\x32\x2e\x38\x20\x2d\x38\x39\x20\x31\x2e\x32\x4c\x2d\x38\ \x31\x2e\x34\x20\x35\x2e\x32\x43\x2d\x38\x31\x2e\x34\x20\x35\x2e\ \x32\x20\x2d\x37\x39\x2e\x34\x20\x31\x39\x2e\x36\x20\x2d\x36\x38\ \x2e\x36\x20\x32\x34\x2e\x38\x43\x2d\x36\x33\x2e\x37\x36\x34\x20\ \x32\x37\x2e\x31\x32\x39\x20\x2d\x36\x30\x2e\x36\x20\x32\x30\x2e\ \x34\x20\x2d\x35\x38\x2e\x36\x20\x31\x34\x2e\x34\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\ \x66\x66\x66\x66\x66\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x35\x39\x2e\x36\x20\x31\x32\x2e\x35\x36\x43\x2d\ \x35\x39\x2e\x36\x20\x31\x32\x2e\x35\x36\x20\x2d\x36\x32\x2e\x34\ \x38\x20\x2d\x36\x2e\x35\x32\x20\x2d\x36\x30\x2e\x33\x32\x20\x2d\ \x31\x30\x2e\x34\x38\x43\x2d\x36\x30\x2e\x33\x32\x20\x2d\x31\x30\ \x2e\x34\x38\x20\x2d\x35\x30\x2e\x36\x20\x2d\x31\x39\x2e\x34\x38\ \x20\x2d\x35\x30\x2e\x39\x36\x20\x2d\x32\x32\x2e\x37\x32\x43\x2d\ \x35\x30\x2e\x39\x36\x20\x2d\x32\x32\x2e\x37\x32\x20\x2d\x35\x31\ \x2e\x33\x32\x20\x2d\x33\x38\x2e\x39\x32\x20\x2d\x35\x32\x2e\x34\ \x20\x2d\x33\x39\x2e\x36\x34\x43\x2d\x35\x33\x2e\x34\x38\x20\x2d\ \x34\x30\x2e\x33\x36\x20\x2d\x36\x30\x2e\x33\x32\x20\x2d\x34\x35\ \x2e\x37\x36\x20\x2d\x36\x35\x2e\x37\x32\x20\x2d\x34\x30\x43\x2d\ \x36\x35\x2e\x37\x32\x20\x2d\x34\x30\x20\x2d\x37\x35\x2e\x30\x38\ \x20\x2d\x32\x33\x2e\x38\x20\x2d\x37\x34\x2e\x33\x36\x20\x2d\x31\ \x38\x2e\x30\x34\x4c\x2d\x37\x34\x2e\x33\x36\x20\x2d\x31\x36\x2e\ \x32\x34\x43\x2d\x37\x34\x2e\x33\x36\x20\x2d\x31\x36\x2e\x32\x34\ \x20\x2d\x38\x31\x2e\x32\x20\x2d\x31\x36\x2e\x36\x20\x2d\x38\x32\ \x2e\x36\x34\x20\x2d\x31\x34\x2e\x38\x43\x2d\x38\x32\x2e\x36\x34\ \x20\x2d\x31\x34\x2e\x38\x20\x2d\x38\x33\x2e\x37\x32\x20\x2d\x31\ \x30\x2e\x31\x32\x20\x2d\x38\x34\x2e\x38\x20\x2d\x39\x2e\x37\x36\ \x43\x2d\x38\x34\x2e\x38\x20\x2d\x39\x2e\x37\x36\x20\x2d\x38\x37\ \x2e\x33\x32\x20\x2d\x37\x2e\x36\x20\x2d\x38\x35\x2e\x35\x32\x20\ \x2d\x35\x2e\x30\x38\x43\x2d\x38\x35\x2e\x35\x32\x20\x2d\x35\x2e\ \x30\x38\x20\x2d\x38\x37\x2e\x33\x32\x20\x2d\x32\x2e\x39\x32\x20\ \x2d\x38\x36\x2e\x39\x36\x20\x30\x2e\x36\x38\x4c\x2d\x38\x30\x2e\ \x31\x32\x20\x34\x2e\x32\x38\x43\x2d\x38\x30\x2e\x31\x32\x20\x34\ \x2e\x32\x38\x20\x2d\x37\x38\x2e\x33\x32\x20\x31\x37\x2e\x32\x34\ \x20\x2d\x36\x38\x2e\x36\x20\x32\x31\x2e\x39\x32\x43\x2d\x36\x34\ \x2e\x32\x34\x38\x20\x32\x34\x2e\x30\x31\x35\x20\x2d\x36\x31\x2e\ \x34\x20\x31\x37\x2e\x39\x36\x20\x2d\x35\x39\x2e\x36\x20\x31\x32\ \x2e\x35\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x65\x62\x39\x35\x35\x63\x22\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x35\x31\x2e\x30\x35\ \x20\x2d\x34\x32\x2e\x36\x31\x43\x2d\x35\x32\x2e\x31\x34\x20\x2d\ \x34\x33\x2e\x34\x37\x20\x2d\x35\x39\x2e\x36\x33\x20\x2d\x34\x39\ \x2e\x32\x34\x20\x2d\x36\x35\x2e\x34\x38\x20\x2d\x34\x33\x43\x2d\ \x36\x35\x2e\x34\x38\x20\x2d\x34\x33\x20\x2d\x37\x35\x2e\x36\x32\ \x20\x2d\x32\x35\x2e\x34\x35\x20\x2d\x37\x34\x2e\x38\x34\x20\x2d\ \x31\x39\x2e\x32\x31\x4c\x2d\x37\x34\x2e\x38\x34\x20\x2d\x31\x37\ \x2e\x32\x36\x43\x2d\x37\x34\x2e\x38\x34\x20\x2d\x31\x37\x2e\x32\ \x36\x20\x2d\x38\x32\x2e\x32\x35\x20\x2d\x31\x37\x2e\x36\x35\x20\ \x2d\x38\x33\x2e\x38\x31\x20\x2d\x31\x35\x2e\x37\x43\x2d\x38\x33\ \x2e\x38\x31\x20\x2d\x31\x35\x2e\x37\x20\x2d\x38\x34\x2e\x39\x38\ \x20\x2d\x31\x30\x2e\x36\x33\x20\x2d\x38\x36\x2e\x31\x35\x20\x2d\ \x31\x30\x2e\x32\x34\x43\x2d\x38\x36\x2e\x31\x35\x20\x2d\x31\x30\ \x2e\x32\x34\x20\x2d\x38\x38\x2e\x38\x38\x20\x2d\x37\x2e\x39\x20\ \x2d\x38\x36\x2e\x39\x33\x20\x2d\x35\x2e\x31\x37\x43\x2d\x38\x36\ \x2e\x39\x33\x20\x2d\x35\x2e\x31\x37\x20\x2d\x38\x38\x2e\x38\x38\ \x20\x2d\x32\x2e\x38\x33\x20\x2d\x38\x38\x2e\x34\x39\x20\x31\x2e\ \x30\x37\x4c\x2d\x38\x31\x2e\x30\x38\x20\x34\x2e\x39\x37\x43\x2d\ \x38\x31\x2e\x30\x38\x20\x34\x2e\x39\x37\x20\x2d\x37\x39\x2e\x31\ \x33\x20\x31\x39\x2e\x30\x31\x20\x2d\x36\x38\x2e\x36\x20\x32\x34\ \x2e\x30\x38\x43\x2d\x36\x33\x2e\x38\x38\x36\x20\x32\x36\x2e\x33\ \x35\x20\x2d\x36\x30\x2e\x38\x20\x31\x39\x2e\x37\x39\x20\x2d\x35\ \x38\x2e\x38\x35\x20\x31\x33\x2e\x39\x34\x43\x2d\x35\x38\x2e\x38\ \x35\x20\x31\x33\x2e\x39\x34\x20\x2d\x36\x31\x2e\x39\x37\x20\x2d\ \x36\x2e\x37\x33\x20\x2d\x35\x39\x2e\x36\x33\x20\x2d\x31\x31\x2e\ \x30\x32\x43\x2d\x35\x39\x2e\x36\x33\x20\x2d\x31\x31\x2e\x30\x32\ \x20\x2d\x34\x39\x2e\x31\x20\x2d\x32\x30\x2e\x37\x37\x20\x2d\x34\ \x39\x2e\x34\x39\x20\x2d\x32\x34\x2e\x32\x38\x43\x2d\x34\x39\x2e\ \x34\x39\x20\x2d\x32\x34\x2e\x32\x38\x20\x2d\x34\x39\x2e\x38\x38\ \x20\x2d\x34\x31\x2e\x38\x33\x20\x2d\x35\x31\x2e\x30\x35\x20\x2d\ \x34\x32\x2e\x36\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x32\x62\x38\x39\x32\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x35\x31\x2e\ \x35\x20\x2d\x34\x31\x2e\x36\x32\x43\x2d\x35\x32\x2e\x34\x38\x20\ \x2d\x34\x32\x2e\x35\x34\x20\x2d\x35\x39\x2e\x38\x36\x20\x2d\x34\ \x38\x2e\x30\x38\x20\x2d\x36\x35\x2e\x35\x36\x20\x2d\x34\x32\x43\ \x2d\x36\x35\x2e\x35\x36\x20\x2d\x34\x32\x20\x2d\x37\x35\x2e\x34\ \x34\x20\x2d\x32\x34\x2e\x39\x20\x2d\x37\x34\x2e\x36\x38\x20\x2d\ \x31\x38\x2e\x38\x32\x4c\x2d\x37\x34\x2e\x36\x38\x20\x2d\x31\x36\ \x2e\x39\x32\x43\x2d\x37\x34\x2e\x36\x38\x20\x2d\x31\x36\x2e\x39\ \x32\x20\x2d\x38\x31\x2e\x39\x20\x2d\x31\x37\x2e\x33\x20\x2d\x38\ \x33\x2e\x34\x32\x20\x2d\x31\x35\x2e\x34\x43\x2d\x38\x33\x2e\x34\ \x32\x20\x2d\x31\x35\x2e\x34\x20\x2d\x38\x34\x2e\x35\x36\x20\x2d\ \x31\x30\x2e\x34\x36\x20\x2d\x38\x35\x2e\x37\x20\x2d\x31\x30\x2e\ \x30\x38\x43\x2d\x38\x35\x2e\x37\x20\x2d\x31\x30\x2e\x30\x38\x20\ \x2d\x38\x38\x2e\x33\x36\x20\x2d\x37\x2e\x38\x20\x2d\x38\x36\x2e\ \x34\x36\x20\x2d\x35\x2e\x31\x34\x43\x2d\x38\x36\x2e\x34\x36\x20\ \x2d\x35\x2e\x31\x34\x20\x2d\x38\x38\x2e\x33\x36\x20\x2d\x32\x2e\ \x38\x36\x20\x2d\x38\x37\x2e\x39\x38\x20\x30\x2e\x39\x34\x4c\x2d\ \x38\x30\x2e\x37\x36\x20\x34\x2e\x37\x34\x43\x2d\x38\x30\x2e\x37\ \x36\x20\x34\x2e\x37\x34\x20\x2d\x37\x38\x2e\x38\x36\x20\x31\x38\ \x2e\x34\x32\x20\x2d\x36\x38\x2e\x36\x20\x32\x33\x2e\x33\x36\x43\ \x2d\x36\x34\x2e\x30\x30\x36\x20\x32\x35\x2e\x35\x37\x32\x20\x2d\ \x36\x31\x20\x31\x39\x2e\x31\x38\x20\x2d\x35\x39\x2e\x31\x20\x31\ \x33\x2e\x34\x38\x43\x2d\x35\x39\x2e\x31\x20\x31\x33\x2e\x34\x38\ \x20\x2d\x36\x32\x2e\x31\x34\x20\x2d\x36\x2e\x36\x36\x20\x2d\x35\ \x39\x2e\x38\x36\x20\x2d\x31\x30\x2e\x38\x34\x43\x2d\x35\x39\x2e\ \x38\x36\x20\x2d\x31\x30\x2e\x38\x34\x20\x2d\x34\x39\x2e\x36\x20\ \x2d\x32\x30\x2e\x33\x34\x20\x2d\x34\x39\x2e\x39\x38\x20\x2d\x32\ \x33\x2e\x37\x36\x43\x2d\x34\x39\x2e\x39\x38\x20\x2d\x32\x33\x2e\ \x37\x36\x20\x2d\x35\x30\x2e\x33\x36\x20\x2d\x34\x30\x2e\x38\x36\ \x20\x2d\x35\x31\x2e\x35\x20\x2d\x34\x31\x2e\x36\x32\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x66\x38\x64\x63\x63\x38\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x35\x31\x2e\x39\x35\x20\x2d\x34\x30\x2e\x36\ \x33\x43\x2d\x35\x32\x2e\x38\x32\x20\x2d\x34\x31\x2e\x36\x31\x20\ \x2d\x36\x30\x2e\x30\x39\x20\x2d\x34\x36\x2e\x39\x32\x20\x2d\x36\ \x35\x2e\x36\x34\x20\x2d\x34\x31\x43\x2d\x36\x35\x2e\x36\x34\x20\ \x2d\x34\x31\x20\x2d\x37\x35\x2e\x32\x36\x20\x2d\x32\x34\x2e\x33\ \x35\x20\x2d\x37\x34\x2e\x35\x32\x20\x2d\x31\x38\x2e\x34\x33\x4c\ \x2d\x37\x34\x2e\x35\x32\x20\x2d\x31\x36\x2e\x35\x38\x43\x2d\x37\ \x34\x2e\x35\x32\x20\x2d\x31\x36\x2e\x35\x38\x20\x2d\x38\x31\x2e\ \x35\x35\x20\x2d\x31\x36\x2e\x39\x35\x20\x2d\x38\x33\x2e\x30\x33\ \x20\x2d\x31\x35\x2e\x31\x43\x2d\x38\x33\x2e\x30\x33\x20\x2d\x31\ \x35\x2e\x31\x20\x2d\x38\x34\x2e\x31\x34\x20\x2d\x31\x30\x2e\x32\ \x39\x20\x2d\x38\x35\x2e\x32\x35\x20\x2d\x39\x2e\x39\x32\x43\x2d\ \x38\x35\x2e\x32\x35\x20\x2d\x39\x2e\x39\x32\x20\x2d\x38\x37\x2e\ \x38\x34\x20\x2d\x37\x2e\x37\x20\x2d\x38\x35\x2e\x39\x39\x20\x2d\ \x35\x2e\x31\x31\x43\x2d\x38\x35\x2e\x39\x39\x20\x2d\x35\x2e\x31\ \x31\x20\x2d\x38\x37\x2e\x38\x34\x20\x2d\x32\x2e\x38\x39\x20\x2d\ \x38\x37\x2e\x34\x37\x20\x30\x2e\x38\x31\x4c\x2d\x38\x30\x2e\x34\ \x34\x20\x34\x2e\x35\x31\x43\x2d\x38\x30\x2e\x34\x34\x20\x34\x2e\ \x35\x31\x20\x2d\x37\x38\x2e\x35\x39\x20\x31\x37\x2e\x38\x33\x20\ \x2d\x36\x38\x2e\x36\x20\x32\x32\x2e\x36\x34\x43\x2d\x36\x34\x2e\ \x31\x32\x37\x20\x32\x34\x2e\x37\x39\x34\x20\x2d\x36\x31\x2e\x32\ \x20\x31\x38\x2e\x35\x37\x20\x2d\x35\x39\x2e\x33\x35\x20\x31\x33\ \x2e\x30\x32\x43\x2d\x35\x39\x2e\x33\x35\x20\x31\x33\x2e\x30\x32\ \x20\x2d\x36\x32\x2e\x33\x31\x20\x2d\x36\x2e\x35\x39\x20\x2d\x36\ \x30\x2e\x30\x39\x20\x2d\x31\x30\x2e\x36\x36\x43\x2d\x36\x30\x2e\ \x30\x39\x20\x2d\x31\x30\x2e\x36\x36\x20\x2d\x35\x30\x2e\x31\x20\ \x2d\x31\x39\x2e\x39\x31\x20\x2d\x35\x30\x2e\x34\x37\x20\x2d\x32\ \x33\x2e\x32\x34\x43\x2d\x35\x30\x2e\x34\x37\x20\x2d\x32\x33\x2e\ \x32\x34\x20\x2d\x35\x30\x2e\x38\x34\x20\x2d\x33\x39\x2e\x38\x39\ \x20\x2d\x35\x31\x2e\x39\x35\x20\x2d\x34\x30\x2e\x36\x33\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x66\x66\x66\x66\x66\x66\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x35\x39\x2e\x36\x20\x31\x32\x2e\x34\x36\ \x43\x2d\x35\x39\x2e\x36\x20\x31\x32\x2e\x34\x36\x20\x2d\x36\x32\ \x2e\x34\x38\x20\x2d\x36\x2e\x35\x32\x20\x2d\x36\x30\x2e\x33\x32\ \x20\x2d\x31\x30\x2e\x34\x38\x43\x2d\x36\x30\x2e\x33\x32\x20\x2d\ \x31\x30\x2e\x34\x38\x20\x2d\x35\x30\x2e\x36\x20\x2d\x31\x39\x2e\ \x34\x38\x20\x2d\x35\x30\x2e\x39\x36\x20\x2d\x32\x32\x2e\x37\x32\ \x43\x2d\x35\x30\x2e\x39\x36\x20\x2d\x32\x32\x2e\x37\x32\x20\x2d\ \x35\x31\x2e\x33\x32\x20\x2d\x33\x38\x2e\x39\x32\x20\x2d\x35\x32\ \x2e\x34\x20\x2d\x33\x39\x2e\x36\x34\x43\x2d\x35\x33\x2e\x31\x36\ \x20\x2d\x34\x30\x2e\x36\x38\x20\x2d\x36\x30\x2e\x33\x32\x20\x2d\ \x34\x35\x2e\x37\x36\x20\x2d\x36\x35\x2e\x37\x32\x20\x2d\x34\x30\ \x43\x2d\x36\x35\x2e\x37\x32\x20\x2d\x34\x30\x20\x2d\x37\x35\x2e\ \x30\x38\x20\x2d\x32\x33\x2e\x38\x20\x2d\x37\x34\x2e\x33\x36\x20\ \x2d\x31\x38\x2e\x30\x34\x4c\x2d\x37\x34\x2e\x33\x36\x20\x2d\x31\ \x36\x2e\x32\x34\x43\x2d\x37\x34\x2e\x33\x36\x20\x2d\x31\x36\x2e\ \x32\x34\x20\x2d\x38\x31\x2e\x32\x20\x2d\x31\x36\x2e\x36\x20\x2d\ \x38\x32\x2e\x36\x34\x20\x2d\x31\x34\x2e\x38\x43\x2d\x38\x32\x2e\ \x36\x34\x20\x2d\x31\x34\x2e\x38\x20\x2d\x38\x33\x2e\x37\x32\x20\ \x2d\x31\x30\x2e\x31\x32\x20\x2d\x38\x34\x2e\x38\x20\x2d\x39\x2e\ \x37\x36\x43\x2d\x38\x34\x2e\x38\x20\x2d\x39\x2e\x37\x36\x20\x2d\ \x38\x37\x2e\x33\x32\x20\x2d\x37\x2e\x36\x20\x2d\x38\x35\x2e\x35\ \x32\x20\x2d\x35\x2e\x30\x38\x43\x2d\x38\x35\x2e\x35\x32\x20\x2d\ \x35\x2e\x30\x38\x20\x2d\x38\x37\x2e\x33\x32\x20\x2d\x32\x2e\x39\ \x32\x20\x2d\x38\x36\x2e\x39\x36\x20\x30\x2e\x36\x38\x4c\x2d\x38\ \x30\x2e\x31\x32\x20\x34\x2e\x32\x38\x43\x2d\x38\x30\x2e\x31\x32\ \x20\x34\x2e\x32\x38\x20\x2d\x37\x38\x2e\x33\x32\x20\x31\x37\x2e\ \x32\x34\x20\x2d\x36\x38\x2e\x36\x20\x32\x31\x2e\x39\x32\x43\x2d\ \x36\x34\x2e\x32\x34\x38\x20\x32\x34\x2e\x30\x31\x35\x20\x2d\x36\ \x31\x2e\x34\x20\x31\x37\x2e\x38\x36\x20\x2d\x35\x39\x2e\x36\x20\ \x31\x32\x2e\x34\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x36\x32\x2e\ \x37\x20\x36\x2e\x32\x43\x2d\x36\x32\x2e\x37\x20\x36\x2e\x32\x20\ \x2d\x38\x34\x2e\x33\x20\x2d\x34\x20\x2d\x38\x35\x2e\x32\x20\x2d\ \x34\x2e\x38\x43\x2d\x38\x35\x2e\x32\x20\x2d\x34\x2e\x38\x20\x2d\ \x37\x36\x2e\x31\x20\x33\x2e\x34\x20\x2d\x37\x35\x2e\x33\x20\x33\ \x2e\x34\x43\x2d\x37\x34\x2e\x35\x20\x33\x2e\x34\x20\x2d\x36\x32\ \x2e\x37\x20\x36\x2e\x32\x20\x2d\x36\x32\x2e\x37\x20\x36\x2e\x32\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x2d\x37\x39\x2e\x38\x20\x30\x43\x2d\ \x37\x39\x2e\x38\x20\x30\x20\x2d\x36\x31\x2e\x34\x20\x33\x2e\x36\ \x20\x2d\x36\x31\x2e\x34\x20\x38\x43\x2d\x36\x31\x2e\x34\x20\x31\ \x30\x2e\x39\x31\x32\x20\x2d\x36\x31\x2e\x36\x34\x33\x20\x32\x34\ \x2e\x33\x33\x31\x20\x2d\x36\x37\x20\x32\x32\x2e\x38\x43\x2d\x37\ \x35\x2e\x34\x20\x32\x30\x2e\x34\x20\x2d\x37\x31\x2e\x38\x20\x36\ \x20\x2d\x37\x39\x2e\x38\x20\x30\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x39\x39\x63\x63\x33\ \x32\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x37\x31\x2e\x34\x20\x33\x2e\x38\x43\x2d\x37\x31\x2e\x34\x20\x33\ \x2e\x38\x20\x2d\x36\x32\x2e\x34\x32\x32\x20\x35\x2e\x32\x37\x34\ \x20\x2d\x36\x31\x2e\x34\x20\x38\x43\x2d\x36\x30\x2e\x38\x20\x39\ \x2e\x36\x20\x2d\x36\x30\x2e\x31\x33\x37\x20\x31\x37\x2e\x39\x30\ \x38\x20\x2d\x36\x35\x2e\x36\x20\x31\x39\x43\x2d\x37\x30\x2e\x31\ \x35\x32\x20\x31\x39\x2e\x39\x31\x31\x20\x2d\x37\x32\x2e\x33\x38\ \x32\x20\x39\x2e\x36\x39\x20\x2d\x37\x31\x2e\x34\x20\x33\x2e\x38\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x31\x34\x2e\x35\x39\x35\x20\x34\x36\ \x2e\x33\x34\x39\x43\x31\x34\x2e\x30\x39\x38\x20\x34\x34\x2e\x36\ \x30\x37\x20\x31\x35\x2e\x34\x30\x39\x20\x34\x34\x2e\x37\x33\x38\ \x20\x31\x37\x2e\x32\x20\x34\x34\x2e\x32\x43\x31\x39\x2e\x32\x20\ \x34\x33\x2e\x36\x20\x33\x31\x2e\x34\x20\x33\x39\x2e\x38\x20\x33\ \x32\x2e\x32\x20\x33\x37\x2e\x32\x43\x33\x33\x20\x33\x34\x2e\x36\ \x20\x34\x36\x2e\x32\x20\x33\x39\x20\x34\x36\x2e\x32\x20\x33\x39\ \x43\x34\x38\x20\x33\x39\x2e\x38\x20\x35\x32\x2e\x34\x20\x34\x32\ \x2e\x34\x20\x35\x32\x2e\x34\x20\x34\x32\x2e\x34\x43\x35\x37\x2e\ \x32\x20\x34\x33\x2e\x36\x20\x36\x33\x2e\x38\x20\x34\x34\x20\x36\ \x33\x2e\x38\x20\x34\x34\x43\x36\x36\x2e\x32\x20\x34\x35\x20\x36\ \x39\x2e\x36\x20\x34\x37\x2e\x38\x20\x36\x39\x2e\x36\x20\x34\x37\ \x2e\x38\x43\x38\x34\x2e\x32\x20\x35\x38\x20\x39\x36\x2e\x36\x30\ \x31\x20\x35\x30\x2e\x38\x20\x39\x36\x2e\x36\x30\x31\x20\x35\x30\ \x2e\x38\x43\x31\x31\x36\x2e\x36\x30\x31\x20\x34\x34\x2e\x32\x20\ \x31\x31\x30\x2e\x36\x30\x31\x20\x32\x37\x20\x31\x31\x30\x2e\x36\ \x30\x31\x20\x32\x37\x43\x31\x30\x37\x2e\x36\x30\x31\x20\x31\x38\ \x20\x31\x31\x30\x2e\x38\x30\x31\x20\x31\x34\x2e\x36\x20\x31\x31\ \x30\x2e\x38\x30\x31\x20\x31\x34\x2e\x36\x43\x31\x31\x31\x2e\x30\ \x30\x31\x20\x31\x30\x2e\x38\x20\x31\x31\x38\x2e\x32\x30\x31\x20\ \x31\x37\x2e\x32\x20\x31\x31\x38\x2e\x32\x30\x31\x20\x31\x37\x2e\ \x32\x43\x31\x32\x30\x2e\x38\x30\x31\x20\x32\x31\x2e\x34\x20\x31\ \x32\x31\x2e\x36\x30\x31\x20\x32\x36\x2e\x34\x20\x31\x32\x31\x2e\ \x36\x30\x31\x20\x32\x36\x2e\x34\x43\x31\x32\x39\x2e\x36\x30\x31\ \x20\x33\x37\x2e\x36\x20\x31\x32\x36\x2e\x32\x30\x31\x20\x31\x39\ \x2e\x38\x20\x31\x32\x36\x2e\x32\x30\x31\x20\x31\x39\x2e\x38\x43\ \x31\x32\x36\x2e\x34\x30\x31\x20\x31\x38\x2e\x38\x20\x31\x32\x33\ \x2e\x36\x30\x31\x20\x31\x35\x2e\x32\x20\x31\x32\x33\x2e\x36\x30\ \x31\x20\x31\x34\x43\x31\x32\x33\x2e\x36\x30\x31\x20\x31\x32\x2e\ \x38\x20\x31\x32\x31\x2e\x38\x30\x31\x20\x39\x2e\x34\x20\x31\x32\ \x31\x2e\x38\x30\x31\x20\x39\x2e\x34\x43\x31\x31\x38\x2e\x38\x30\ \x31\x20\x36\x20\x31\x32\x31\x2e\x32\x30\x31\x20\x2d\x31\x20\x31\ \x32\x31\x2e\x32\x30\x31\x20\x2d\x31\x43\x31\x32\x33\x2e\x30\x30\ \x31\x20\x2d\x31\x34\x2e\x38\x20\x31\x32\x30\x2e\x38\x30\x31\x20\ \x2d\x31\x33\x20\x31\x32\x30\x2e\x38\x30\x31\x20\x2d\x31\x33\x43\ \x31\x31\x39\x2e\x36\x30\x31\x20\x2d\x31\x34\x2e\x38\x20\x31\x31\ \x30\x2e\x34\x30\x31\x20\x2d\x34\x2e\x38\x20\x31\x31\x30\x2e\x34\ \x30\x31\x20\x2d\x34\x2e\x38\x43\x31\x30\x38\x2e\x32\x30\x31\x20\ \x2d\x31\x2e\x34\x20\x31\x30\x32\x2e\x32\x30\x31\x20\x30\x2e\x32\ \x20\x31\x30\x32\x2e\x32\x30\x31\x20\x30\x2e\x32\x43\x39\x39\x2e\ \x34\x30\x31\x20\x32\x20\x39\x36\x2e\x30\x30\x31\x20\x30\x2e\x36\ \x20\x39\x36\x2e\x30\x30\x31\x20\x30\x2e\x36\x43\x39\x33\x2e\x34\ \x30\x31\x20\x30\x2e\x32\x20\x38\x37\x2e\x38\x30\x31\x20\x37\x2e\ \x32\x20\x38\x37\x2e\x38\x30\x31\x20\x37\x2e\x32\x43\x39\x30\x2e\ \x36\x30\x31\x20\x37\x20\x39\x33\x2e\x30\x30\x31\x20\x31\x31\x2e\ \x34\x20\x39\x35\x2e\x34\x30\x31\x20\x31\x31\x2e\x36\x43\x39\x37\ \x2e\x38\x30\x31\x20\x31\x31\x2e\x38\x20\x39\x39\x2e\x36\x30\x31\ \x20\x39\x2e\x32\x20\x31\x30\x31\x2e\x32\x30\x31\x20\x38\x2e\x36\ \x43\x31\x30\x32\x2e\x38\x30\x31\x20\x38\x20\x31\x30\x35\x2e\x36\ \x30\x31\x20\x31\x33\x2e\x38\x20\x31\x30\x35\x2e\x36\x30\x31\x20\ \x31\x33\x2e\x38\x43\x31\x30\x36\x2e\x30\x30\x31\x20\x31\x36\x2e\ \x34\x20\x31\x30\x30\x2e\x34\x30\x31\x20\x32\x31\x2e\x32\x20\x31\ \x30\x30\x2e\x34\x30\x31\x20\x32\x31\x2e\x32\x43\x31\x30\x30\x2e\ \x30\x30\x31\x20\x32\x35\x2e\x38\x20\x39\x38\x2e\x34\x30\x31\x20\ \x32\x34\x2e\x32\x20\x39\x38\x2e\x34\x30\x31\x20\x32\x34\x2e\x32\ \x43\x39\x35\x2e\x34\x30\x31\x20\x32\x33\x2e\x36\x20\x39\x34\x2e\ \x32\x30\x31\x20\x32\x37\x2e\x34\x20\x39\x33\x2e\x32\x30\x31\x20\ \x33\x32\x43\x39\x32\x2e\x32\x30\x31\x20\x33\x36\x2e\x36\x20\x38\ \x38\x2e\x30\x30\x31\x20\x33\x37\x20\x38\x38\x2e\x30\x30\x31\x20\ \x33\x37\x43\x38\x36\x2e\x34\x30\x31\x20\x34\x34\x2e\x34\x20\x38\ \x35\x2e\x32\x20\x34\x31\x2e\x34\x20\x38\x35\x2e\x32\x20\x34\x31\ \x2e\x34\x43\x38\x35\x20\x33\x35\x2e\x38\x20\x37\x39\x20\x34\x31\ \x2e\x36\x20\x37\x39\x20\x34\x31\x2e\x36\x43\x37\x37\x2e\x38\x20\ \x34\x33\x2e\x36\x20\x37\x33\x2e\x32\x20\x34\x31\x2e\x34\x20\x37\ \x33\x2e\x32\x20\x34\x31\x2e\x34\x43\x36\x36\x2e\x34\x20\x33\x39\ \x2e\x34\x20\x36\x38\x2e\x38\x20\x33\x37\x2e\x34\x20\x36\x38\x2e\ \x38\x20\x33\x37\x2e\x34\x43\x37\x30\x2e\x36\x20\x33\x35\x2e\x32\ \x20\x38\x31\x2e\x38\x20\x33\x37\x2e\x34\x20\x38\x31\x2e\x38\x20\ \x33\x37\x2e\x34\x43\x38\x34\x20\x33\x35\x2e\x38\x20\x37\x36\x20\ \x33\x31\x2e\x38\x20\x37\x36\x20\x33\x31\x2e\x38\x43\x37\x35\x2e\ \x34\x20\x33\x30\x20\x37\x36\x2e\x34\x20\x32\x35\x2e\x36\x20\x37\ \x36\x2e\x34\x20\x32\x35\x2e\x36\x43\x37\x37\x2e\x36\x20\x32\x32\ \x2e\x34\x20\x38\x34\x2e\x34\x20\x31\x36\x2e\x38\x20\x38\x34\x2e\ \x34\x20\x31\x36\x2e\x38\x43\x39\x33\x2e\x38\x30\x31\x20\x31\x35\ \x2e\x36\x20\x39\x31\x2e\x30\x30\x31\x20\x31\x34\x20\x39\x31\x2e\ \x30\x30\x31\x20\x31\x34\x43\x38\x34\x2e\x38\x30\x31\x20\x38\x2e\ \x38\x20\x37\x39\x20\x31\x36\x2e\x34\x20\x37\x39\x20\x31\x36\x2e\ \x34\x43\x37\x36\x2e\x38\x20\x32\x32\x2e\x36\x20\x35\x39\x2e\x34\ \x20\x33\x37\x2e\x36\x20\x35\x39\x2e\x34\x20\x33\x37\x2e\x36\x43\ \x35\x34\x2e\x36\x20\x34\x31\x20\x35\x37\x2e\x32\x20\x33\x34\x2e\ \x32\x20\x35\x33\x2e\x32\x20\x33\x37\x2e\x36\x43\x34\x39\x2e\x32\ \x20\x34\x31\x20\x32\x38\x2e\x36\x20\x33\x32\x20\x32\x38\x2e\x36\ \x20\x33\x32\x43\x31\x37\x2e\x30\x33\x38\x20\x33\x30\x2e\x38\x30\ \x37\x20\x31\x34\x2e\x33\x30\x36\x20\x34\x36\x2e\x35\x34\x39\x20\ \x31\x30\x2e\x37\x37\x37\x20\x34\x33\x2e\x34\x32\x39\x43\x31\x30\ \x2e\x37\x37\x37\x20\x34\x33\x2e\x34\x32\x39\x20\x31\x36\x2e\x31\ \x39\x35\x20\x35\x31\x2e\x39\x34\x39\x20\x31\x34\x2e\x35\x39\x35\ \x20\x34\x36\x2e\x33\x34\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x30\ \x39\x2e\x34\x30\x31\x20\x2d\x31\x32\x30\x43\x32\x30\x39\x2e\x34\ \x30\x31\x20\x2d\x31\x32\x30\x20\x31\x38\x33\x2e\x38\x30\x31\x20\ \x2d\x31\x31\x32\x20\x31\x38\x31\x2e\x30\x30\x31\x20\x2d\x39\x33\ \x2e\x32\x43\x31\x38\x31\x2e\x30\x30\x31\x20\x2d\x39\x33\x2e\x32\ \x20\x31\x37\x38\x2e\x36\x30\x31\x20\x2d\x37\x30\x2e\x34\x20\x31\ \x39\x39\x2e\x30\x30\x31\x20\x2d\x35\x32\x2e\x38\x43\x31\x39\x39\ \x2e\x30\x30\x31\x20\x2d\x35\x32\x2e\x38\x20\x31\x39\x39\x2e\x34\ \x30\x31\x20\x2d\x34\x36\x2e\x34\x20\x32\x30\x31\x2e\x34\x30\x31\ \x20\x2d\x34\x33\x2e\x32\x43\x32\x30\x31\x2e\x34\x30\x31\x20\x2d\ \x34\x33\x2e\x32\x20\x31\x39\x39\x2e\x38\x30\x31\x20\x2d\x33\x38\ \x2e\x34\x20\x32\x31\x38\x2e\x36\x30\x31\x20\x2d\x34\x36\x4c\x32\ \x34\x35\x2e\x38\x30\x31\x20\x2d\x35\x34\x2e\x34\x43\x32\x34\x35\ \x2e\x38\x30\x31\x20\x2d\x35\x34\x2e\x34\x20\x32\x35\x32\x2e\x32\ \x30\x31\x20\x2d\x35\x36\x2e\x38\x20\x32\x35\x37\x2e\x34\x30\x31\ \x20\x2d\x36\x35\x2e\x36\x43\x32\x36\x32\x2e\x36\x30\x31\x20\x2d\ \x37\x34\x2e\x34\x20\x32\x37\x37\x2e\x38\x30\x31\x20\x2d\x39\x33\ \x2e\x32\x20\x32\x37\x34\x2e\x32\x30\x31\x20\x2d\x31\x31\x38\x2e\ \x34\x43\x32\x37\x34\x2e\x32\x30\x31\x20\x2d\x31\x31\x38\x2e\x34\ \x20\x32\x37\x35\x2e\x34\x30\x31\x20\x2d\x31\x32\x39\x2e\x36\x20\ \x32\x36\x39\x2e\x34\x30\x31\x20\x2d\x31\x33\x30\x43\x32\x36\x39\ \x2e\x34\x30\x31\x20\x2d\x31\x33\x30\x20\x32\x36\x31\x2e\x30\x30\ \x31\x20\x2d\x31\x33\x31\x2e\x36\x20\x32\x35\x33\x2e\x38\x30\x31\ \x20\x2d\x31\x32\x34\x43\x32\x35\x33\x2e\x38\x30\x31\x20\x2d\x31\ \x32\x34\x20\x32\x34\x37\x2e\x30\x30\x31\x20\x2d\x31\x32\x30\x2e\ \x38\x20\x32\x34\x34\x2e\x36\x30\x31\x20\x2d\x31\x32\x31\x2e\x32\ \x4c\x32\x30\x39\x2e\x34\x30\x31\x20\x2d\x31\x32\x30\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x32\x36\x34\x2e\x30\x32\x32\x20\x2d\x31\x32\x30\ \x2e\x39\x39\x43\x32\x36\x34\x2e\x30\x32\x32\x20\x2d\x31\x32\x30\ \x2e\x39\x39\x20\x32\x36\x36\x2e\x31\x32\x32\x20\x2d\x31\x32\x39\ \x2e\x39\x32\x20\x32\x36\x31\x2e\x32\x38\x32\x20\x2d\x31\x32\x35\ \x2e\x30\x38\x43\x32\x36\x31\x2e\x32\x38\x32\x20\x2d\x31\x32\x35\ \x2e\x30\x38\x20\x32\x35\x34\x2e\x32\x34\x32\x20\x2d\x31\x31\x39\ \x2e\x33\x36\x20\x32\x34\x36\x2e\x37\x36\x31\x20\x2d\x31\x31\x39\ \x2e\x33\x36\x43\x32\x34\x36\x2e\x37\x36\x31\x20\x2d\x31\x31\x39\ \x2e\x33\x36\x20\x32\x33\x32\x2e\x32\x34\x31\x20\x2d\x31\x31\x37\ \x2e\x31\x36\x20\x32\x32\x37\x2e\x38\x34\x31\x20\x2d\x31\x30\x33\ \x2e\x39\x36\x43\x32\x32\x37\x2e\x38\x34\x31\x20\x2d\x31\x30\x33\ \x2e\x39\x36\x20\x32\x32\x33\x2e\x38\x38\x31\x20\x2d\x37\x37\x2e\ \x31\x32\x20\x32\x33\x31\x2e\x38\x30\x31\x20\x2d\x37\x31\x2e\x34\ \x43\x32\x33\x31\x2e\x38\x30\x31\x20\x2d\x37\x31\x2e\x34\x20\x32\ \x33\x36\x2e\x36\x34\x31\x20\x2d\x36\x33\x2e\x39\x32\x20\x32\x34\ \x33\x2e\x36\x38\x31\x20\x2d\x37\x30\x2e\x35\x32\x43\x32\x35\x30\ \x2e\x37\x32\x32\x20\x2d\x37\x37\x2e\x31\x32\x20\x32\x36\x36\x2e\ \x32\x32\x32\x20\x2d\x31\x30\x37\x2e\x33\x35\x20\x32\x36\x34\x2e\ \x30\x32\x32\x20\x2d\x31\x32\x30\x2e\x39\x39\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x33\x32\ \x33\x32\x33\x32\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x32\x36\x33\x2e\x36\x34\x38\x20\x2d\x31\x32\x30\x2e\x36\ \x33\x32\x43\x32\x36\x33\x2e\x36\x34\x38\x20\x2d\x31\x32\x30\x2e\ \x36\x33\x32\x20\x32\x36\x35\x2e\x37\x33\x38\x20\x2d\x31\x32\x39\ \x2e\x33\x37\x36\x20\x32\x36\x30\x2e\x39\x38\x36\x20\x2d\x31\x32\ \x34\x2e\x36\x32\x34\x43\x32\x36\x30\x2e\x39\x38\x36\x20\x2d\x31\ \x32\x34\x2e\x36\x32\x34\x20\x32\x35\x34\x2e\x30\x37\x34\x20\x2d\ \x31\x31\x39\x2e\x30\x30\x38\x20\x32\x34\x36\x2e\x37\x32\x39\x20\ \x2d\x31\x31\x39\x2e\x30\x30\x38\x43\x32\x34\x36\x2e\x37\x32\x39\ \x20\x2d\x31\x31\x39\x2e\x30\x30\x38\x20\x32\x33\x32\x2e\x34\x37\ \x33\x20\x2d\x31\x31\x36\x2e\x38\x34\x38\x20\x32\x32\x38\x2e\x31\ \x35\x33\x20\x2d\x31\x30\x33\x2e\x38\x38\x38\x43\x32\x32\x38\x2e\ \x31\x35\x33\x20\x2d\x31\x30\x33\x2e\x38\x38\x38\x20\x32\x32\x34\ \x2e\x32\x36\x35\x20\x2d\x37\x37\x2e\x35\x33\x36\x20\x32\x33\x32\ \x2e\x30\x34\x31\x20\x2d\x37\x31\x2e\x39\x32\x43\x32\x33\x32\x2e\ \x30\x34\x31\x20\x2d\x37\x31\x2e\x39\x32\x20\x32\x33\x36\x2e\x37\ \x39\x33\x20\x2d\x36\x34\x2e\x35\x37\x36\x20\x32\x34\x33\x2e\x37\ \x30\x35\x20\x2d\x37\x31\x2e\x30\x35\x36\x43\x32\x35\x30\x2e\x36\ \x31\x38\x20\x2d\x37\x37\x2e\x35\x33\x36\x20\x32\x36\x35\x2e\x38\ \x30\x38\x20\x2d\x31\x30\x37\x2e\x32\x34\x20\x32\x36\x33\x2e\x36\ \x34\x38\x20\x2d\x31\x32\x30\x2e\x36\x33\x32\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x36\x36\ \x36\x36\x36\x36\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x32\x36\x33\x2e\x32\x37\x34\x20\x2d\x31\x32\x30\x2e\x32\ \x37\x34\x43\x32\x36\x33\x2e\x32\x37\x34\x20\x2d\x31\x32\x30\x2e\ \x32\x37\x34\x20\x32\x36\x35\x2e\x33\x35\x34\x20\x2d\x31\x32\x38\ \x2e\x38\x33\x32\x20\x32\x36\x30\x2e\x36\x39\x20\x2d\x31\x32\x34\ \x2e\x31\x36\x38\x43\x32\x36\x30\x2e\x36\x39\x20\x2d\x31\x32\x34\ \x2e\x31\x36\x38\x20\x32\x35\x33\x2e\x39\x30\x36\x20\x2d\x31\x31\ \x38\x2e\x36\x35\x36\x20\x32\x34\x36\x2e\x36\x39\x37\x20\x2d\x31\ \x31\x38\x2e\x36\x35\x36\x43\x32\x34\x36\x2e\x36\x39\x37\x20\x2d\ \x31\x31\x38\x2e\x36\x35\x36\x20\x32\x33\x32\x2e\x37\x30\x35\x20\ \x2d\x31\x31\x36\x2e\x35\x33\x36\x20\x32\x32\x38\x2e\x34\x36\x35\ \x20\x2d\x31\x30\x33\x2e\x38\x31\x36\x43\x32\x32\x38\x2e\x34\x36\ \x35\x20\x2d\x31\x30\x33\x2e\x38\x31\x36\x20\x32\x32\x34\x2e\x36\ \x34\x39\x20\x2d\x37\x37\x2e\x39\x35\x32\x20\x32\x33\x32\x2e\x32\ \x38\x31\x20\x2d\x37\x32\x2e\x34\x34\x43\x32\x33\x32\x2e\x32\x38\ \x31\x20\x2d\x37\x32\x2e\x34\x34\x20\x32\x33\x36\x2e\x39\x34\x35\ \x20\x2d\x36\x35\x2e\x32\x33\x32\x20\x32\x34\x33\x2e\x37\x32\x39\ \x20\x2d\x37\x31\x2e\x35\x39\x32\x43\x32\x35\x30\x2e\x35\x31\x34\ \x20\x2d\x37\x37\x2e\x39\x35\x32\x20\x32\x36\x35\x2e\x33\x39\x34\ \x20\x2d\x31\x30\x37\x2e\x31\x33\x20\x32\x36\x33\x2e\x32\x37\x34\ \x20\x2d\x31\x32\x30\x2e\x32\x37\x34\x7a\x22\x7d\x0a\x20\x2c\x0a\ \x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x39\x39\x39\x39\ \x39\x39\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x32\x36\x32\x2e\x39\x20\x2d\x31\x31\x39\x2e\x39\x31\x36\x43\x32\ \x36\x32\x2e\x39\x20\x2d\x31\x31\x39\x2e\x39\x31\x36\x20\x32\x36\ \x34\x2e\x39\x37\x20\x2d\x31\x32\x38\x2e\x32\x38\x38\x20\x32\x36\ \x30\x2e\x33\x39\x34\x20\x2d\x31\x32\x33\x2e\x37\x31\x32\x43\x32\ \x36\x30\x2e\x33\x39\x34\x20\x2d\x31\x32\x33\x2e\x37\x31\x32\x20\ \x32\x35\x33\x2e\x37\x33\x38\x20\x2d\x31\x31\x38\x2e\x33\x30\x34\ \x20\x32\x34\x36\x2e\x36\x36\x35\x20\x2d\x31\x31\x38\x2e\x33\x30\ \x34\x43\x32\x34\x36\x2e\x36\x36\x35\x20\x2d\x31\x31\x38\x2e\x33\ \x30\x34\x20\x32\x33\x32\x2e\x39\x33\x37\x20\x2d\x31\x31\x36\x2e\ \x32\x32\x34\x20\x32\x32\x38\x2e\x37\x37\x37\x20\x2d\x31\x30\x33\ \x2e\x37\x34\x34\x43\x32\x32\x38\x2e\x37\x37\x37\x20\x2d\x31\x30\ \x33\x2e\x37\x34\x34\x20\x32\x32\x35\x2e\x30\x33\x33\x20\x2d\x37\ \x38\x2e\x33\x36\x38\x20\x32\x33\x32\x2e\x35\x32\x31\x20\x2d\x37\ \x32\x2e\x39\x36\x43\x32\x33\x32\x2e\x35\x32\x31\x20\x2d\x37\x32\ \x2e\x39\x36\x20\x32\x33\x37\x2e\x30\x39\x37\x20\x2d\x36\x35\x2e\ \x38\x38\x38\x20\x32\x34\x33\x2e\x37\x35\x33\x20\x2d\x37\x32\x2e\ \x31\x32\x38\x43\x32\x35\x30\x2e\x34\x31\x20\x2d\x37\x38\x2e\x33\ \x36\x38\x20\x32\x36\x34\x2e\x39\x38\x20\x2d\x31\x30\x37\x2e\x30\ \x32\x20\x32\x36\x32\x2e\x39\x20\x2d\x31\x31\x39\x2e\x39\x31\x36\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x32\x36\x32\x2e\x35\x32\x36\x20\x2d\ \x31\x31\x39\x2e\x35\x35\x38\x43\x32\x36\x32\x2e\x35\x32\x36\x20\ \x2d\x31\x31\x39\x2e\x35\x35\x38\x20\x32\x36\x34\x2e\x35\x38\x36\ \x20\x2d\x31\x32\x37\x2e\x37\x34\x34\x20\x32\x36\x30\x2e\x30\x39\ \x38\x20\x2d\x31\x32\x33\x2e\x32\x35\x36\x43\x32\x36\x30\x2e\x30\ \x39\x38\x20\x2d\x31\x32\x33\x2e\x32\x35\x36\x20\x32\x35\x33\x2e\ \x35\x36\x39\x20\x2d\x31\x31\x37\x2e\x39\x35\x32\x20\x32\x34\x36\ \x2e\x36\x33\x33\x20\x2d\x31\x31\x37\x2e\x39\x35\x32\x43\x32\x34\ \x36\x2e\x36\x33\x33\x20\x2d\x31\x31\x37\x2e\x39\x35\x32\x20\x32\ \x33\x33\x2e\x31\x36\x39\x20\x2d\x31\x31\x35\x2e\x39\x31\x32\x20\ \x32\x32\x39\x2e\x30\x38\x39\x20\x2d\x31\x30\x33\x2e\x36\x37\x32\ \x43\x32\x32\x39\x2e\x30\x38\x39\x20\x2d\x31\x30\x33\x2e\x36\x37\ \x32\x20\x32\x32\x35\x2e\x34\x31\x37\x20\x2d\x37\x38\x2e\x37\x38\ \x34\x20\x32\x33\x32\x2e\x37\x36\x31\x20\x2d\x37\x33\x2e\x34\x38\ \x43\x32\x33\x32\x2e\x37\x36\x31\x20\x2d\x37\x33\x2e\x34\x38\x20\ \x32\x33\x37\x2e\x32\x34\x39\x20\x2d\x36\x36\x2e\x35\x34\x34\x20\ \x32\x34\x33\x2e\x37\x37\x37\x20\x2d\x37\x32\x2e\x36\x36\x34\x43\ \x32\x35\x30\x2e\x33\x30\x35\x20\x2d\x37\x38\x2e\x37\x38\x34\x20\ \x32\x36\x34\x2e\x35\x36\x36\x20\x2d\x31\x30\x36\x2e\x39\x31\x20\ \x32\x36\x32\x2e\x35\x32\x36\x20\x2d\x31\x31\x39\x2e\x35\x35\x38\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x32\x36\x32\x2e\x31\x35\x31\x20\x2d\ \x31\x31\x39\x2e\x32\x43\x32\x36\x32\x2e\x31\x35\x31\x20\x2d\x31\ \x31\x39\x2e\x32\x20\x32\x36\x34\x2e\x32\x30\x31\x20\x2d\x31\x32\ \x37\x2e\x32\x20\x32\x35\x39\x2e\x38\x30\x31\x20\x2d\x31\x32\x32\ \x2e\x38\x43\x32\x35\x39\x2e\x38\x30\x31\x20\x2d\x31\x32\x32\x2e\ \x38\x20\x32\x35\x33\x2e\x34\x30\x31\x20\x2d\x31\x31\x37\x2e\x36\ \x20\x32\x34\x36\x2e\x36\x30\x31\x20\x2d\x31\x31\x37\x2e\x36\x43\ \x32\x34\x36\x2e\x36\x30\x31\x20\x2d\x31\x31\x37\x2e\x36\x20\x32\ \x33\x33\x2e\x34\x30\x31\x20\x2d\x31\x31\x35\x2e\x36\x20\x32\x32\ \x39\x2e\x34\x30\x31\x20\x2d\x31\x30\x33\x2e\x36\x43\x32\x32\x39\ \x2e\x34\x30\x31\x20\x2d\x31\x30\x33\x2e\x36\x20\x32\x32\x35\x2e\ \x38\x30\x31\x20\x2d\x37\x39\x2e\x32\x20\x32\x33\x33\x2e\x30\x30\ \x31\x20\x2d\x37\x34\x43\x32\x33\x33\x2e\x30\x30\x31\x20\x2d\x37\ \x34\x20\x32\x33\x37\x2e\x34\x30\x31\x20\x2d\x36\x37\x2e\x32\x20\ \x32\x34\x33\x2e\x38\x30\x31\x20\x2d\x37\x33\x2e\x32\x43\x32\x35\ \x30\x2e\x32\x30\x31\x20\x2d\x37\x39\x2e\x32\x20\x32\x36\x34\x2e\ \x31\x35\x31\x20\x2d\x31\x30\x36\x2e\x38\x20\x32\x36\x32\x2e\x31\ \x35\x31\x20\x2d\x31\x31\x39\x2e\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\ \x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x39\x39\x32\x36\ \x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x35\x30\x2e\x36\x20\x38\x34\x43\x35\x30\x2e\x36\x20\x38\x34\x20\ \x33\x30\x2e\x32\x20\x36\x34\x2e\x38\x20\x32\x32\x2e\x32\x20\x36\ \x34\x43\x32\x32\x2e\x32\x20\x36\x34\x20\x2d\x31\x32\x2e\x32\x20\ \x36\x30\x20\x2d\x32\x37\x20\x37\x38\x43\x2d\x32\x37\x20\x37\x38\ \x20\x2d\x39\x2e\x34\x20\x35\x37\x2e\x36\x20\x31\x38\x2e\x32\x20\ \x36\x33\x2e\x32\x43\x31\x38\x2e\x32\x20\x36\x33\x2e\x32\x20\x2d\ \x33\x2e\x34\x20\x35\x38\x2e\x38\x20\x2d\x31\x35\x2e\x38\x20\x36\ \x32\x43\x2d\x31\x35\x2e\x38\x20\x36\x32\x20\x2d\x33\x32\x2e\x36\ \x20\x36\x32\x20\x2d\x34\x32\x2e\x32\x20\x37\x36\x4c\x2d\x34\x35\ \x20\x38\x30\x2e\x38\x43\x2d\x34\x35\x20\x38\x30\x2e\x38\x20\x2d\ \x34\x31\x20\x36\x36\x20\x2d\x32\x32\x2e\x36\x20\x36\x30\x43\x2d\ \x32\x32\x2e\x36\x20\x36\x30\x20\x30\x2e\x32\x20\x35\x35\x2e\x32\ \x20\x31\x31\x20\x36\x30\x43\x31\x31\x20\x36\x30\x20\x2d\x31\x30\ \x2e\x36\x20\x35\x33\x2e\x32\x20\x2d\x32\x30\x2e\x36\x20\x35\x35\ \x2e\x32\x43\x2d\x32\x30\x2e\x36\x20\x35\x35\x2e\x32\x20\x2d\x35\ \x31\x20\x35\x32\x2e\x38\x20\x2d\x36\x33\x2e\x38\x20\x37\x39\x2e\ \x32\x43\x2d\x36\x33\x2e\x38\x20\x37\x39\x2e\x32\x20\x2d\x35\x39\ \x2e\x38\x20\x36\x34\x2e\x38\x20\x2d\x34\x35\x20\x35\x37\x2e\x36\ \x43\x2d\x34\x35\x20\x35\x37\x2e\x36\x20\x2d\x33\x31\x2e\x34\x20\ \x34\x38\x2e\x38\x20\x2d\x31\x31\x20\x35\x31\x2e\x36\x43\x2d\x31\ \x31\x20\x35\x31\x2e\x36\x20\x33\x2e\x34\x20\x35\x34\x2e\x38\x20\ \x38\x2e\x36\x20\x35\x37\x2e\x32\x43\x31\x33\x2e\x38\x20\x35\x39\ \x2e\x36\x20\x31\x32\x2e\x36\x20\x35\x36\x2e\x38\x20\x34\x2e\x32\ \x20\x35\x32\x43\x34\x2e\x32\x20\x35\x32\x20\x2d\x31\x2e\x34\x20\ \x34\x32\x20\x2d\x31\x35\x2e\x34\x20\x34\x32\x2e\x34\x43\x2d\x31\ \x35\x2e\x34\x20\x34\x32\x2e\x34\x20\x2d\x35\x38\x2e\x32\x20\x34\ \x36\x20\x2d\x36\x38\x2e\x36\x20\x35\x38\x43\x2d\x36\x38\x2e\x36\ \x20\x35\x38\x20\x2d\x35\x35\x20\x34\x36\x2e\x38\x20\x2d\x34\x34\ \x2e\x36\x20\x34\x34\x43\x2d\x34\x34\x2e\x36\x20\x34\x34\x20\x2d\ \x32\x32\x2e\x32\x20\x33\x36\x20\x2d\x31\x33\x2e\x38\x20\x33\x36\ \x2e\x38\x43\x2d\x31\x33\x2e\x38\x20\x33\x36\x2e\x38\x20\x31\x31\ \x20\x33\x37\x2e\x38\x20\x31\x38\x2e\x36\x20\x33\x33\x2e\x38\x43\ \x31\x38\x2e\x36\x20\x33\x33\x2e\x38\x20\x37\x2e\x34\x20\x33\x38\ \x2e\x38\x20\x31\x30\x2e\x36\x20\x34\x32\x43\x31\x33\x2e\x38\x20\ \x34\x35\x2e\x32\x20\x32\x30\x2e\x36\x20\x35\x32\x2e\x38\x20\x32\ \x30\x2e\x36\x20\x35\x34\x43\x32\x30\x2e\x36\x20\x35\x35\x2e\x32\ \x20\x34\x34\x2e\x38\x20\x37\x37\x2e\x33\x20\x34\x38\x2e\x34\x20\ \x38\x31\x2e\x37\x4c\x35\x30\x2e\x36\x20\x38\x34\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\ \x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x31\x38\x39\x20\x32\x37\x38\x43\x31\x38\x39\x20\x32\ \x37\x38\x20\x31\x37\x33\x2e\x35\x20\x32\x34\x31\x2e\x35\x20\x31\ \x36\x31\x20\x32\x33\x32\x43\x31\x36\x31\x20\x32\x33\x32\x20\x31\ \x38\x37\x20\x32\x34\x38\x20\x31\x39\x30\x2e\x35\x20\x32\x36\x36\ \x43\x31\x39\x30\x2e\x35\x20\x32\x36\x36\x20\x31\x39\x30\x2e\x35\ \x20\x32\x37\x36\x20\x31\x38\x39\x20\x32\x37\x38\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\ \x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x32\x33\x36\x20\x32\x38\x35\x2e\x35\x43\x32\x33\x36\ \x20\x32\x38\x35\x2e\x35\x20\x32\x30\x39\x2e\x35\x20\x32\x33\x30\ \x2e\x35\x20\x31\x39\x31\x20\x32\x30\x36\x2e\x35\x43\x31\x39\x31\ \x20\x32\x30\x36\x2e\x35\x20\x32\x33\x34\x2e\x35\x20\x32\x34\x34\ \x20\x32\x33\x39\x2e\x35\x20\x32\x37\x30\x2e\x35\x4c\x32\x34\x30\ \x20\x32\x37\x36\x4c\x32\x33\x37\x20\x32\x37\x33\x2e\x35\x43\x32\ \x33\x37\x20\x32\x37\x33\x2e\x35\x20\x32\x33\x36\x2e\x35\x20\x32\ \x38\x32\x2e\x35\x20\x32\x33\x36\x20\x32\x38\x35\x2e\x35\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x32\x39\x32\x2e\x35\x20\x32\x33\x37\x43\x32\ \x39\x32\x2e\x35\x20\x32\x33\x37\x20\x32\x33\x30\x20\x31\x37\x37\ \x2e\x35\x20\x32\x32\x38\x2e\x35\x20\x31\x37\x35\x43\x32\x32\x38\ \x2e\x35\x20\x31\x37\x35\x20\x32\x38\x39\x20\x32\x34\x31\x20\x32\ \x39\x32\x20\x32\x34\x38\x2e\x35\x43\x32\x39\x32\x20\x32\x34\x38\ \x2e\x35\x20\x32\x39\x30\x20\x32\x33\x39\x2e\x35\x20\x32\x39\x32\ \x2e\x35\x20\x32\x33\x37\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x30\x34\ \x20\x32\x38\x30\x2e\x35\x43\x31\x30\x34\x20\x32\x38\x30\x2e\x35\ \x20\x31\x32\x33\x2e\x35\x20\x32\x32\x38\x2e\x35\x20\x31\x34\x32\ \x2e\x35\x20\x32\x35\x31\x43\x31\x34\x32\x2e\x35\x20\x32\x35\x31\ \x20\x31\x35\x37\x2e\x35\x20\x32\x36\x31\x20\x31\x35\x37\x20\x32\ \x36\x34\x43\x31\x35\x37\x20\x32\x36\x34\x20\x31\x35\x33\x20\x32\ \x35\x37\x2e\x35\x20\x31\x33\x35\x20\x32\x35\x38\x43\x31\x33\x35\ \x20\x32\x35\x38\x20\x31\x31\x36\x20\x32\x35\x35\x20\x31\x30\x34\ \x20\x32\x38\x30\x2e\x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x39\x34\ \x2e\x35\x20\x31\x35\x33\x43\x32\x39\x34\x2e\x35\x20\x31\x35\x33\ \x20\x32\x34\x39\x2e\x35\x20\x31\x32\x34\x2e\x35\x20\x32\x34\x32\ \x20\x31\x32\x33\x43\x32\x33\x30\x2e\x31\x39\x33\x20\x31\x32\x30\ \x2e\x36\x33\x39\x20\x32\x39\x31\x2e\x35\x20\x31\x35\x32\x20\x32\ \x39\x36\x2e\x35\x20\x31\x36\x32\x2e\x35\x43\x32\x39\x36\x2e\x35\ \x20\x31\x36\x32\x2e\x35\x20\x32\x39\x38\x2e\x35\x20\x31\x36\x30\ \x20\x32\x39\x34\x2e\x35\x20\x31\x35\x33\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x31\x34\x33\x2e\x38\x30\x31\x20\x32\x35\x39\x2e\x36\x30\x31\ \x43\x31\x34\x33\x2e\x38\x30\x31\x20\x32\x35\x39\x2e\x36\x30\x31\ \x20\x31\x36\x34\x2e\x32\x30\x31\x20\x32\x35\x37\x2e\x36\x30\x31\ \x20\x31\x37\x31\x2e\x30\x30\x31\x20\x32\x35\x30\x2e\x38\x30\x31\ \x4c\x31\x37\x35\x2e\x34\x30\x31\x20\x32\x35\x34\x2e\x34\x30\x31\ \x4c\x31\x39\x33\x2e\x30\x30\x31\x20\x32\x31\x36\x2e\x30\x30\x31\ \x4c\x31\x39\x36\x2e\x36\x30\x31\x20\x32\x32\x31\x2e\x32\x30\x31\ \x43\x31\x39\x36\x2e\x36\x30\x31\x20\x32\x32\x31\x2e\x32\x30\x31\ \x20\x32\x31\x31\x2e\x30\x30\x31\x20\x32\x30\x36\x2e\x34\x30\x31\ \x20\x32\x31\x30\x2e\x32\x30\x31\x20\x31\x39\x38\x2e\x34\x30\x31\ \x43\x32\x30\x39\x2e\x34\x30\x31\x20\x31\x39\x30\x2e\x34\x30\x31\ \x20\x32\x32\x33\x2e\x30\x30\x31\x20\x32\x30\x34\x2e\x34\x30\x31\ \x20\x32\x32\x33\x2e\x30\x30\x31\x20\x32\x30\x34\x2e\x34\x30\x31\ \x43\x32\x32\x33\x2e\x30\x30\x31\x20\x32\x30\x34\x2e\x34\x30\x31\ \x20\x32\x32\x32\x2e\x32\x30\x31\x20\x31\x39\x32\x2e\x38\x30\x31\ \x20\x32\x32\x39\x2e\x34\x30\x31\x20\x31\x39\x39\x2e\x36\x30\x31\ \x43\x32\x32\x39\x2e\x34\x30\x31\x20\x31\x39\x39\x2e\x36\x30\x31\ \x20\x32\x32\x37\x2e\x30\x30\x31\x20\x31\x38\x34\x2e\x30\x30\x31\ \x20\x32\x33\x35\x2e\x34\x30\x31\x20\x31\x39\x32\x2e\x30\x30\x31\ \x43\x32\x33\x35\x2e\x34\x30\x31\x20\x31\x39\x32\x2e\x30\x30\x31\ \x20\x32\x32\x34\x2e\x38\x36\x34\x20\x31\x36\x31\x2e\x38\x34\x34\ \x20\x32\x34\x37\x2e\x34\x30\x31\x20\x31\x38\x37\x2e\x36\x30\x31\ \x43\x32\x35\x33\x2e\x30\x30\x31\x20\x31\x39\x34\x2e\x30\x30\x31\ \x20\x32\x34\x38\x2e\x36\x30\x31\x20\x31\x38\x37\x2e\x32\x30\x31\ \x20\x32\x34\x38\x2e\x36\x30\x31\x20\x31\x38\x37\x2e\x32\x30\x31\ \x43\x32\x34\x38\x2e\x36\x30\x31\x20\x31\x38\x37\x2e\x32\x30\x31\ \x20\x32\x32\x32\x2e\x36\x30\x31\x20\x31\x33\x39\x2e\x32\x30\x31\ \x20\x32\x34\x34\x2e\x32\x30\x31\x20\x31\x35\x33\x2e\x36\x30\x31\ \x43\x32\x34\x34\x2e\x32\x30\x31\x20\x31\x35\x33\x2e\x36\x30\x31\ \x20\x32\x34\x36\x2e\x32\x30\x31\x20\x31\x33\x30\x2e\x38\x30\x31\ \x20\x32\x34\x35\x2e\x30\x30\x31\x20\x31\x32\x36\x2e\x34\x30\x31\ \x43\x32\x34\x33\x2e\x38\x30\x31\x20\x31\x32\x32\x2e\x30\x30\x31\ \x20\x32\x34\x31\x2e\x38\x30\x31\x20\x39\x39\x2e\x36\x20\x32\x33\ \x37\x2e\x30\x30\x31\x20\x39\x34\x2e\x34\x43\x32\x33\x32\x2e\x32\ \x30\x31\x20\x38\x39\x2e\x32\x20\x32\x33\x37\x2e\x34\x30\x31\x20\ \x38\x37\x2e\x36\x20\x32\x34\x33\x2e\x30\x30\x31\x20\x39\x32\x2e\ \x38\x43\x32\x34\x33\x2e\x30\x30\x31\x20\x39\x32\x2e\x38\x20\x32\ \x33\x31\x2e\x38\x30\x31\x20\x36\x38\x2e\x38\x20\x32\x34\x35\x2e\ \x30\x30\x31\x20\x38\x30\x2e\x38\x43\x32\x34\x35\x2e\x30\x30\x31\ \x20\x38\x30\x2e\x38\x20\x32\x34\x31\x2e\x34\x30\x31\x20\x36\x35\ \x2e\x36\x20\x32\x33\x37\x2e\x30\x30\x31\x20\x36\x32\x2e\x38\x43\ \x32\x33\x37\x2e\x30\x30\x31\x20\x36\x32\x2e\x38\x20\x32\x33\x31\ \x2e\x34\x30\x31\x20\x34\x35\x2e\x36\x20\x32\x34\x36\x2e\x36\x30\ \x31\x20\x35\x36\x2e\x34\x43\x32\x34\x36\x2e\x36\x30\x31\x20\x35\ \x36\x2e\x34\x20\x32\x34\x32\x2e\x32\x30\x31\x20\x34\x34\x20\x32\ \x33\x39\x2e\x30\x30\x31\x20\x34\x30\x2e\x38\x43\x32\x33\x39\x2e\ \x30\x30\x31\x20\x34\x30\x2e\x38\x20\x32\x32\x37\x2e\x34\x30\x31\ \x20\x31\x33\x2e\x32\x20\x32\x33\x34\x2e\x36\x30\x31\x20\x31\x38\ \x4c\x32\x33\x39\x2e\x30\x30\x31\x20\x32\x31\x2e\x36\x43\x32\x33\ \x39\x2e\x30\x30\x31\x20\x32\x31\x2e\x36\x20\x32\x33\x32\x2e\x32\ \x30\x31\x20\x37\x2e\x36\x20\x32\x33\x38\x2e\x36\x30\x31\x20\x31\ \x32\x43\x32\x34\x35\x2e\x30\x30\x31\x20\x31\x36\x2e\x34\x20\x32\ \x34\x35\x2e\x30\x30\x31\x20\x31\x36\x20\x32\x34\x35\x2e\x30\x30\ \x31\x20\x31\x36\x43\x32\x34\x35\x2e\x30\x30\x31\x20\x31\x36\x20\ \x32\x32\x33\x2e\x38\x30\x31\x20\x2d\x31\x37\x2e\x32\x20\x32\x34\ \x34\x2e\x32\x30\x31\x20\x30\x2e\x34\x43\x32\x34\x34\x2e\x32\x30\ \x31\x20\x30\x2e\x34\x20\x32\x33\x36\x2e\x30\x34\x32\x20\x2d\x31\ \x33\x2e\x35\x31\x38\x20\x32\x33\x32\x2e\x36\x30\x31\x20\x2d\x32\ \x30\x2e\x34\x43\x32\x33\x32\x2e\x36\x30\x31\x20\x2d\x32\x30\x2e\ \x34\x20\x32\x31\x33\x2e\x38\x30\x31\x20\x2d\x34\x30\x2e\x38\x20\ \x32\x32\x38\x2e\x32\x30\x31\x20\x2d\x33\x34\x2e\x34\x4c\x32\x33\ \x33\x2e\x30\x30\x31\x20\x2d\x33\x32\x2e\x38\x43\x32\x33\x33\x2e\ \x30\x30\x31\x20\x2d\x33\x32\x2e\x38\x20\x32\x32\x34\x2e\x32\x30\ \x31\x20\x2d\x34\x32\x2e\x38\x20\x32\x31\x36\x2e\x32\x30\x31\x20\ \x2d\x34\x34\x2e\x34\x43\x32\x30\x38\x2e\x32\x30\x31\x20\x2d\x34\ \x36\x20\x32\x31\x38\x2e\x36\x30\x31\x20\x2d\x35\x32\x2e\x34\x20\ \x32\x32\x35\x2e\x30\x30\x31\x20\x2d\x35\x30\x2e\x34\x43\x32\x33\ \x31\x2e\x34\x30\x31\x20\x2d\x34\x38\x2e\x34\x20\x32\x34\x37\x2e\ \x30\x30\x31\x20\x2d\x34\x30\x2e\x38\x20\x32\x34\x37\x2e\x30\x30\ \x31\x20\x2d\x34\x30\x2e\x38\x43\x32\x34\x37\x2e\x30\x30\x31\x20\ \x2d\x34\x30\x2e\x38\x20\x32\x35\x39\x2e\x38\x30\x31\x20\x2d\x32\ \x32\x20\x32\x36\x33\x2e\x38\x30\x31\x20\x2d\x32\x31\x2e\x36\x43\ \x32\x36\x33\x2e\x38\x30\x31\x20\x2d\x32\x31\x2e\x36\x20\x32\x34\ \x33\x2e\x38\x30\x31\x20\x2d\x32\x39\x2e\x32\x20\x32\x34\x39\x2e\ \x38\x30\x31\x20\x2d\x32\x31\x2e\x32\x43\x32\x34\x39\x2e\x38\x30\ \x31\x20\x2d\x32\x31\x2e\x32\x20\x32\x36\x34\x2e\x32\x30\x31\x20\ \x2d\x37\x2e\x32\x20\x32\x35\x37\x2e\x30\x30\x31\x20\x2d\x37\x2e\ \x36\x43\x32\x35\x37\x2e\x30\x30\x31\x20\x2d\x37\x2e\x36\x20\x32\ \x35\x31\x2e\x30\x30\x31\x20\x2d\x30\x2e\x34\x20\x32\x35\x35\x2e\ \x38\x30\x31\x20\x38\x2e\x34\x43\x32\x35\x35\x2e\x38\x30\x31\x20\ \x38\x2e\x34\x20\x32\x33\x37\x2e\x33\x34\x32\x20\x2d\x39\x2e\x39\ \x39\x31\x20\x32\x35\x32\x2e\x32\x30\x31\x20\x31\x35\x2e\x36\x4c\ \x32\x35\x39\x2e\x30\x30\x31\x20\x33\x32\x43\x32\x35\x39\x2e\x30\ \x30\x31\x20\x33\x32\x20\x32\x33\x34\x2e\x36\x30\x31\x20\x37\x2e\ \x32\x20\x32\x34\x35\x2e\x38\x30\x31\x20\x32\x39\x2e\x32\x43\x32\ \x34\x35\x2e\x38\x30\x31\x20\x32\x39\x2e\x32\x20\x32\x36\x33\x2e\ \x30\x30\x31\x20\x35\x32\x2e\x38\x20\x32\x36\x35\x2e\x30\x30\x31\ \x20\x35\x33\x2e\x32\x43\x32\x36\x37\x2e\x30\x30\x31\x20\x35\x33\ \x2e\x36\x20\x32\x37\x31\x2e\x34\x30\x31\x20\x36\x32\x2e\x34\x20\ \x32\x37\x31\x2e\x34\x30\x31\x20\x36\x32\x2e\x34\x4c\x32\x36\x37\ \x2e\x30\x30\x31\x20\x36\x30\x2e\x34\x4c\x32\x37\x32\x2e\x32\x30\ \x31\x20\x36\x39\x2e\x32\x43\x32\x37\x32\x2e\x32\x30\x31\x20\x36\ \x39\x2e\x32\x20\x32\x36\x31\x2e\x30\x30\x31\x20\x35\x37\x2e\x32\ \x20\x32\x36\x37\x2e\x30\x30\x31\x20\x37\x30\x2e\x34\x4c\x32\x37\ \x32\x2e\x36\x30\x31\x20\x38\x34\x2e\x38\x43\x32\x37\x32\x2e\x36\ \x30\x31\x20\x38\x34\x2e\x38\x20\x32\x35\x32\x2e\x32\x30\x31\x20\ \x36\x32\x2e\x38\x20\x32\x36\x35\x2e\x38\x30\x31\x20\x39\x32\x2e\ \x34\x43\x32\x36\x35\x2e\x38\x30\x31\x20\x39\x32\x2e\x34\x20\x32\ \x34\x39\x2e\x34\x30\x31\x20\x38\x37\x2e\x32\x20\x32\x35\x38\x2e\ \x32\x30\x31\x20\x31\x30\x34\x2e\x34\x43\x32\x35\x38\x2e\x32\x30\ \x31\x20\x31\x30\x34\x2e\x34\x20\x32\x35\x36\x2e\x36\x30\x31\x20\ \x31\x32\x30\x2e\x34\x30\x31\x20\x32\x35\x37\x2e\x30\x30\x31\x20\ \x31\x32\x35\x2e\x36\x30\x31\x43\x32\x35\x37\x2e\x34\x30\x31\x20\ \x31\x33\x30\x2e\x38\x30\x31\x20\x32\x35\x38\x2e\x36\x30\x31\x20\ \x31\x35\x39\x2e\x32\x30\x31\x20\x32\x35\x34\x2e\x32\x30\x31\x20\ \x31\x36\x37\x2e\x32\x30\x31\x43\x32\x34\x39\x2e\x38\x30\x31\x20\ \x31\x37\x35\x2e\x32\x30\x31\x20\x32\x36\x30\x2e\x32\x30\x31\x20\ \x31\x39\x34\x2e\x34\x30\x31\x20\x32\x36\x32\x2e\x32\x30\x31\x20\ \x31\x39\x38\x2e\x34\x30\x31\x43\x32\x36\x34\x2e\x32\x30\x31\x20\ \x32\x30\x32\x2e\x34\x30\x31\x20\x32\x36\x37\x2e\x38\x30\x31\x20\ \x32\x31\x33\x2e\x32\x30\x31\x20\x32\x35\x39\x2e\x30\x30\x31\x20\ \x32\x30\x34\x2e\x30\x30\x31\x43\x32\x35\x30\x2e\x32\x30\x31\x20\ \x31\x39\x34\x2e\x38\x30\x31\x20\x32\x35\x34\x2e\x36\x30\x31\x20\ \x32\x30\x30\x2e\x34\x30\x31\x20\x32\x35\x36\x2e\x36\x30\x31\x20\ \x32\x30\x39\x2e\x32\x30\x31\x43\x32\x35\x38\x2e\x36\x30\x31\x20\ \x32\x31\x38\x2e\x30\x30\x31\x20\x32\x36\x34\x2e\x36\x30\x31\x20\ \x32\x33\x33\x2e\x36\x30\x31\x20\x32\x36\x33\x2e\x38\x30\x31\x20\ \x32\x33\x39\x2e\x32\x30\x31\x43\x32\x36\x33\x2e\x38\x30\x31\x20\ \x32\x33\x39\x2e\x32\x30\x31\x20\x32\x36\x32\x2e\x36\x30\x31\x20\ \x32\x34\x30\x2e\x34\x30\x31\x20\x32\x35\x39\x2e\x34\x30\x31\x20\ \x32\x33\x36\x2e\x38\x30\x31\x43\x32\x35\x39\x2e\x34\x30\x31\x20\ \x32\x33\x36\x2e\x38\x30\x31\x20\x32\x34\x34\x2e\x36\x30\x31\x20\ \x32\x31\x34\x2e\x30\x30\x31\x20\x32\x34\x36\x2e\x32\x30\x31\x20\ \x32\x32\x38\x2e\x34\x30\x31\x43\x32\x34\x36\x2e\x32\x30\x31\x20\ \x32\x32\x38\x2e\x34\x30\x31\x20\x32\x34\x35\x2e\x30\x30\x31\x20\ \x32\x33\x36\x2e\x34\x30\x31\x20\x32\x34\x31\x2e\x38\x30\x31\x20\ \x32\x34\x35\x2e\x32\x30\x31\x43\x32\x34\x31\x2e\x38\x30\x31\x20\ \x32\x34\x35\x2e\x32\x30\x31\x20\x32\x33\x38\x2e\x36\x30\x31\x20\ \x32\x35\x36\x2e\x30\x30\x31\x20\x32\x33\x38\x2e\x36\x30\x31\x20\ \x32\x34\x37\x2e\x32\x30\x31\x43\x32\x33\x38\x2e\x36\x30\x31\x20\ \x32\x34\x37\x2e\x32\x30\x31\x20\x32\x33\x35\x2e\x34\x30\x31\x20\ \x32\x33\x30\x2e\x34\x30\x31\x20\x32\x33\x32\x2e\x36\x30\x31\x20\ \x32\x33\x38\x2e\x30\x30\x31\x43\x32\x32\x39\x2e\x38\x30\x31\x20\ \x32\x34\x35\x2e\x36\x30\x31\x20\x32\x32\x36\x2e\x32\x30\x31\x20\ \x32\x35\x31\x2e\x36\x30\x31\x20\x32\x32\x33\x2e\x34\x30\x31\x20\ \x32\x35\x34\x2e\x30\x30\x31\x43\x32\x32\x30\x2e\x36\x30\x31\x20\ \x32\x35\x36\x2e\x34\x30\x31\x20\x32\x31\x35\x2e\x34\x30\x31\x20\ \x32\x33\x33\x2e\x36\x30\x31\x20\x32\x31\x34\x2e\x32\x30\x31\x20\ \x32\x34\x34\x2e\x30\x30\x31\x43\x32\x31\x34\x2e\x32\x30\x31\x20\ \x32\x34\x34\x2e\x30\x30\x31\x20\x32\x30\x32\x2e\x32\x30\x31\x20\ \x32\x33\x31\x2e\x36\x30\x31\x20\x31\x39\x37\x2e\x34\x30\x31\x20\ \x32\x34\x38\x2e\x30\x30\x31\x4c\x31\x38\x35\x2e\x38\x30\x31\x20\ \x32\x36\x34\x2e\x34\x30\x31\x43\x31\x38\x35\x2e\x38\x30\x31\x20\ \x32\x36\x34\x2e\x34\x30\x31\x20\x31\x38\x35\x2e\x34\x30\x31\x20\ \x32\x35\x32\x2e\x30\x30\x31\x20\x31\x38\x34\x2e\x32\x30\x31\x20\ \x32\x35\x38\x2e\x30\x30\x31\x43\x31\x38\x34\x2e\x32\x30\x31\x20\ \x32\x35\x38\x2e\x30\x30\x31\x20\x31\x35\x34\x2e\x32\x30\x31\x20\ \x32\x36\x34\x2e\x30\x30\x31\x20\x31\x34\x33\x2e\x38\x30\x31\x20\ \x32\x35\x39\x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x30\ \x39\x2e\x34\x30\x31\x20\x2d\x39\x37\x2e\x32\x43\x31\x30\x39\x2e\ \x34\x30\x31\x20\x2d\x39\x37\x2e\x32\x20\x39\x37\x2e\x38\x30\x31\ \x20\x2d\x31\x30\x35\x2e\x32\x20\x39\x33\x2e\x38\x30\x31\x20\x2d\ \x31\x30\x34\x2e\x38\x43\x38\x39\x2e\x38\x30\x31\x20\x2d\x31\x30\ \x34\x2e\x34\x20\x31\x32\x31\x2e\x34\x30\x31\x20\x2d\x31\x31\x33\ \x2e\x36\x20\x31\x36\x32\x2e\x36\x30\x31\x20\x2d\x38\x36\x43\x31\ \x36\x32\x2e\x36\x30\x31\x20\x2d\x38\x36\x20\x31\x36\x37\x2e\x34\ \x30\x31\x20\x2d\x38\x33\x2e\x32\x20\x31\x37\x31\x2e\x30\x30\x31\ \x20\x2d\x38\x33\x2e\x36\x43\x31\x37\x31\x2e\x30\x30\x31\x20\x2d\ \x38\x33\x2e\x36\x20\x31\x37\x34\x2e\x32\x30\x31\x20\x2d\x38\x31\ \x2e\x32\x20\x31\x37\x31\x2e\x34\x30\x31\x20\x2d\x37\x37\x2e\x36\ \x43\x31\x37\x31\x2e\x34\x30\x31\x20\x2d\x37\x37\x2e\x36\x20\x31\ \x36\x32\x2e\x36\x30\x31\x20\x2d\x36\x38\x20\x31\x37\x33\x2e\x38\ \x30\x31\x20\x2d\x35\x36\x2e\x38\x43\x31\x37\x33\x2e\x38\x30\x31\ \x20\x2d\x35\x36\x2e\x38\x20\x31\x39\x32\x2e\x32\x30\x31\x20\x2d\ \x35\x30\x20\x31\x38\x36\x2e\x36\x30\x31\x20\x2d\x35\x38\x2e\x38\ \x43\x31\x38\x36\x2e\x36\x30\x31\x20\x2d\x35\x38\x2e\x38\x20\x31\ \x39\x37\x2e\x34\x30\x31\x20\x2d\x35\x34\x2e\x38\x20\x31\x39\x39\ \x2e\x38\x30\x31\x20\x2d\x35\x30\x2e\x38\x43\x32\x30\x32\x2e\x32\ \x30\x31\x20\x2d\x34\x36\x2e\x38\x20\x32\x30\x31\x2e\x30\x30\x31\ \x20\x2d\x35\x30\x2e\x38\x20\x32\x30\x31\x2e\x30\x30\x31\x20\x2d\ \x35\x30\x2e\x38\x43\x32\x30\x31\x2e\x30\x30\x31\x20\x2d\x35\x30\ \x2e\x38\x20\x31\x39\x34\x2e\x36\x30\x31\x20\x2d\x35\x38\x20\x31\ \x38\x38\x2e\x36\x30\x31\x20\x2d\x36\x33\x2e\x32\x43\x31\x38\x38\ \x2e\x36\x30\x31\x20\x2d\x36\x33\x2e\x32\x20\x31\x38\x33\x2e\x34\ \x30\x31\x20\x2d\x36\x35\x2e\x32\x20\x31\x38\x30\x2e\x36\x30\x31\ \x20\x2d\x37\x33\x2e\x36\x43\x31\x37\x37\x2e\x38\x30\x31\x20\x2d\ \x38\x32\x20\x31\x37\x35\x2e\x34\x30\x31\x20\x2d\x39\x32\x20\x31\ \x37\x39\x2e\x38\x30\x31\x20\x2d\x39\x35\x2e\x32\x43\x31\x37\x39\ \x2e\x38\x30\x31\x20\x2d\x39\x35\x2e\x32\x20\x31\x37\x35\x2e\x38\ \x30\x31\x20\x2d\x39\x30\x2e\x38\x20\x31\x37\x36\x2e\x36\x30\x31\ \x20\x2d\x39\x34\x2e\x38\x43\x31\x37\x37\x2e\x34\x30\x31\x20\x2d\ \x39\x38\x2e\x38\x20\x31\x38\x31\x2e\x30\x30\x31\x20\x2d\x31\x30\ \x32\x2e\x34\x20\x31\x38\x32\x2e\x36\x30\x31\x20\x2d\x31\x30\x32\ \x2e\x38\x43\x31\x38\x34\x2e\x32\x30\x31\x20\x2d\x31\x30\x33\x2e\ \x32\x20\x32\x30\x30\x2e\x36\x30\x31\x20\x2d\x31\x31\x39\x20\x32\ \x30\x37\x2e\x34\x30\x31\x20\x2d\x31\x31\x39\x2e\x34\x43\x32\x30\ \x37\x2e\x34\x30\x31\x20\x2d\x31\x31\x39\x2e\x34\x20\x31\x39\x38\ \x2e\x32\x30\x31\x20\x2d\x31\x31\x38\x20\x31\x39\x35\x2e\x32\x30\ \x31\x20\x2d\x31\x31\x39\x43\x31\x39\x32\x2e\x32\x30\x31\x20\x2d\ \x31\x32\x30\x20\x31\x36\x35\x2e\x36\x30\x31\x20\x2d\x31\x33\x31\ \x2e\x34\x20\x31\x35\x39\x2e\x36\x30\x31\x20\x2d\x31\x33\x32\x2e\ \x36\x43\x31\x35\x39\x2e\x36\x30\x31\x20\x2d\x31\x33\x32\x2e\x36\ \x20\x31\x34\x32\x2e\x38\x30\x31\x20\x2d\x31\x33\x39\x2e\x32\x20\ \x31\x35\x34\x2e\x38\x30\x31\x20\x2d\x31\x33\x37\x2e\x32\x43\x31\ \x35\x34\x2e\x38\x30\x31\x20\x2d\x31\x33\x37\x2e\x32\x20\x31\x39\ \x30\x2e\x36\x30\x31\x20\x2d\x31\x33\x33\x2e\x34\x20\x32\x30\x38\ \x2e\x38\x30\x31\x20\x2d\x31\x32\x30\x2e\x32\x43\x32\x30\x38\x2e\ \x38\x30\x31\x20\x2d\x31\x32\x30\x2e\x32\x20\x32\x30\x31\x2e\x36\ \x30\x31\x20\x2d\x31\x32\x38\x2e\x36\x20\x31\x38\x33\x2e\x32\x30\ \x31\x20\x2d\x31\x33\x35\x2e\x36\x43\x31\x38\x33\x2e\x32\x30\x31\ \x20\x2d\x31\x33\x35\x2e\x36\x20\x31\x36\x31\x2e\x30\x30\x31\x20\ \x2d\x31\x34\x38\x2e\x32\x20\x31\x32\x35\x2e\x38\x30\x31\x20\x2d\ \x31\x34\x33\x2e\x32\x43\x31\x32\x35\x2e\x38\x30\x31\x20\x2d\x31\ \x34\x33\x2e\x32\x20\x31\x30\x38\x2e\x30\x30\x31\x20\x2d\x31\x34\ \x30\x20\x31\x30\x30\x2e\x32\x30\x31\x20\x2d\x31\x33\x38\x2e\x32\ \x43\x31\x30\x30\x2e\x32\x30\x31\x20\x2d\x31\x33\x38\x2e\x32\x20\ \x39\x37\x2e\x36\x30\x31\x20\x2d\x31\x33\x38\x2e\x38\x20\x39\x37\ \x2e\x30\x30\x31\x20\x2d\x31\x33\x39\x2e\x32\x43\x39\x36\x2e\x34\ \x30\x31\x20\x2d\x31\x33\x39\x2e\x36\x20\x38\x34\x2e\x36\x20\x2d\ \x31\x34\x38\x2e\x36\x20\x35\x37\x20\x2d\x31\x34\x31\x2e\x36\x43\ \x35\x37\x20\x2d\x31\x34\x31\x2e\x36\x20\x34\x30\x20\x2d\x31\x33\ \x37\x20\x33\x31\x2e\x34\x20\x2d\x31\x33\x32\x2e\x32\x43\x33\x31\ \x2e\x34\x20\x2d\x31\x33\x32\x2e\x32\x20\x31\x36\x2e\x32\x20\x2d\ \x31\x33\x31\x20\x31\x32\x2e\x36\x20\x2d\x31\x32\x37\x2e\x38\x43\ \x31\x32\x2e\x36\x20\x2d\x31\x32\x37\x2e\x38\x20\x2d\x36\x20\x2d\ \x31\x31\x33\x2e\x32\x20\x2d\x38\x20\x2d\x31\x31\x32\x2e\x34\x43\ \x2d\x31\x30\x20\x2d\x31\x31\x31\x2e\x36\x20\x2d\x32\x31\x2e\x34\ \x20\x2d\x31\x30\x34\x20\x2d\x32\x32\x2e\x32\x20\x2d\x31\x30\x33\ \x2e\x36\x43\x2d\x32\x32\x2e\x32\x20\x2d\x31\x30\x33\x2e\x36\x20\ \x32\x2e\x34\x20\x2d\x31\x31\x30\x2e\x32\x20\x34\x2e\x38\x20\x2d\ \x31\x31\x32\x2e\x36\x43\x37\x2e\x32\x20\x2d\x31\x31\x35\x20\x32\ \x34\x2e\x36\x20\x2d\x31\x31\x37\x2e\x36\x20\x32\x37\x20\x2d\x31\ \x31\x36\x2e\x32\x43\x32\x39\x2e\x34\x20\x2d\x31\x31\x34\x2e\x38\ \x20\x33\x37\x2e\x38\x20\x2d\x31\x31\x35\x2e\x34\x20\x32\x38\x2e\ \x32\x20\x2d\x31\x31\x34\x2e\x38\x43\x32\x38\x2e\x32\x20\x2d\x31\ \x31\x34\x2e\x38\x20\x31\x30\x33\x2e\x38\x30\x31\x20\x2d\x31\x30\ \x30\x20\x31\x30\x34\x2e\x36\x30\x31\x20\x2d\x39\x38\x43\x31\x30\ \x35\x2e\x34\x30\x31\x20\x2d\x39\x36\x20\x31\x30\x39\x2e\x34\x30\ \x31\x20\x2d\x39\x37\x2e\x32\x20\x31\x30\x39\x2e\x34\x30\x31\x20\ \x2d\x39\x37\x2e\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x37\x32\x32\x36\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x38\x30\x2e\ \x38\x30\x31\x20\x2d\x31\x30\x36\x2e\x34\x43\x31\x38\x30\x2e\x38\ \x30\x31\x20\x2d\x31\x30\x36\x2e\x34\x20\x31\x37\x30\x2e\x36\x30\ \x31\x20\x2d\x31\x31\x33\x2e\x38\x20\x31\x36\x38\x2e\x36\x30\x31\ \x20\x2d\x31\x31\x33\x2e\x38\x43\x31\x36\x36\x2e\x36\x30\x31\x20\ \x2d\x31\x31\x33\x2e\x38\x20\x31\x35\x34\x2e\x32\x30\x31\x20\x2d\ \x31\x32\x34\x20\x31\x35\x30\x2e\x30\x30\x31\x20\x2d\x31\x32\x33\ \x2e\x36\x43\x31\x34\x35\x2e\x38\x30\x31\x20\x2d\x31\x32\x33\x2e\ \x32\x20\x31\x33\x33\x2e\x36\x30\x31\x20\x2d\x31\x33\x33\x2e\x32\ \x20\x31\x30\x36\x2e\x32\x30\x31\x20\x2d\x31\x32\x35\x43\x31\x30\ \x36\x2e\x32\x30\x31\x20\x2d\x31\x32\x35\x20\x31\x30\x35\x2e\x36\ \x30\x31\x20\x2d\x31\x32\x37\x20\x31\x30\x39\x2e\x32\x30\x31\x20\ \x2d\x31\x32\x37\x2e\x38\x43\x31\x30\x39\x2e\x32\x30\x31\x20\x2d\ \x31\x32\x37\x2e\x38\x20\x31\x31\x35\x2e\x36\x30\x31\x20\x2d\x31\ \x33\x30\x20\x31\x31\x36\x2e\x30\x30\x31\x20\x2d\x31\x33\x30\x2e\ \x36\x43\x31\x31\x36\x2e\x30\x30\x31\x20\x2d\x31\x33\x30\x2e\x36\ \x20\x31\x33\x36\x2e\x32\x30\x31\x20\x2d\x31\x33\x34\x2e\x38\x20\ \x31\x34\x33\x2e\x34\x30\x31\x20\x2d\x31\x33\x31\x2e\x32\x43\x31\ \x34\x33\x2e\x34\x30\x31\x20\x2d\x31\x33\x31\x2e\x32\x20\x31\x35\ \x32\x2e\x36\x30\x31\x20\x2d\x31\x32\x38\x2e\x36\x20\x31\x35\x38\ \x2e\x38\x30\x31\x20\x2d\x31\x32\x32\x2e\x34\x43\x31\x35\x38\x2e\ \x38\x30\x31\x20\x2d\x31\x32\x32\x2e\x34\x20\x31\x37\x30\x2e\x30\ \x30\x31\x20\x2d\x31\x31\x39\x2e\x32\x20\x31\x37\x33\x2e\x32\x30\ \x31\x20\x2d\x31\x32\x30\x2e\x32\x43\x31\x37\x33\x2e\x32\x30\x31\ \x20\x2d\x31\x32\x30\x2e\x32\x20\x31\x38\x32\x2e\x30\x30\x31\x20\ \x2d\x31\x31\x38\x20\x31\x38\x32\x2e\x34\x30\x31\x20\x2d\x31\x31\ \x36\x2e\x32\x43\x31\x38\x32\x2e\x34\x30\x31\x20\x2d\x31\x31\x36\ \x2e\x32\x20\x31\x38\x38\x2e\x32\x30\x31\x20\x2d\x31\x31\x33\x2e\ \x32\x20\x31\x38\x36\x2e\x34\x30\x31\x20\x2d\x31\x31\x30\x2e\x36\ \x43\x31\x38\x36\x2e\x34\x30\x31\x20\x2d\x31\x31\x30\x2e\x36\x20\ \x31\x38\x36\x2e\x38\x30\x31\x20\x2d\x31\x30\x39\x20\x31\x38\x30\ \x2e\x38\x30\x31\x20\x2d\x31\x30\x36\x2e\x34\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\ \x37\x32\x32\x36\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x31\x36\x38\x2e\x33\x33\x20\x2d\x31\x30\x38\x2e\x35\x30\ \x39\x43\x31\x36\x39\x2e\x31\x33\x37\x20\x2d\x31\x30\x37\x2e\x38\ \x37\x37\x20\x31\x37\x30\x2e\x31\x35\x36\x20\x2d\x31\x30\x37\x2e\ \x37\x37\x39\x20\x31\x37\x30\x2e\x37\x36\x31\x20\x2d\x31\x30\x36\ \x2e\x39\x37\x43\x31\x37\x30\x2e\x39\x39\x35\x20\x2d\x31\x30\x36\ \x2e\x36\x35\x36\x20\x31\x37\x30\x2e\x37\x30\x36\x20\x2d\x31\x30\ \x36\x2e\x33\x33\x20\x31\x37\x30\x2e\x33\x39\x31\x20\x2d\x31\x30\ \x36\x2e\x32\x33\x33\x43\x31\x36\x39\x2e\x33\x34\x38\x20\x2d\x31\ \x30\x35\x2e\x39\x31\x36\x20\x31\x36\x38\x2e\x32\x39\x32\x20\x2d\ \x31\x30\x36\x2e\x34\x38\x36\x20\x31\x36\x37\x2e\x31\x35\x20\x2d\ \x31\x30\x35\x2e\x38\x39\x38\x43\x31\x36\x36\x2e\x37\x34\x38\x20\ \x2d\x31\x30\x35\x2e\x36\x39\x31\x20\x31\x36\x36\x2e\x31\x30\x36\ \x20\x2d\x31\x30\x35\x2e\x38\x37\x33\x20\x31\x36\x35\x2e\x35\x35\ \x33\x20\x2d\x31\x30\x36\x2e\x30\x32\x32\x43\x31\x36\x33\x2e\x39\ \x32\x31\x20\x2d\x31\x30\x36\x2e\x34\x36\x33\x20\x31\x36\x32\x2e\ \x30\x39\x32\x20\x2d\x31\x30\x36\x2e\x34\x38\x38\x20\x31\x36\x30\ \x2e\x34\x30\x31\x20\x2d\x31\x30\x35\x2e\x38\x43\x31\x35\x38\x2e\ \x34\x31\x36\x20\x2d\x31\x30\x36\x2e\x39\x32\x39\x20\x31\x35\x36\ \x2e\x30\x35\x36\x20\x2d\x31\x30\x36\x2e\x33\x34\x35\x20\x31\x35\ \x33\x2e\x39\x37\x35\x20\x2d\x31\x30\x37\x2e\x33\x34\x36\x43\x31\ \x35\x33\x2e\x39\x31\x37\x20\x2d\x31\x30\x37\x2e\x33\x37\x33\x20\ \x31\x35\x33\x2e\x36\x39\x35\x20\x2d\x31\x30\x37\x2e\x30\x32\x37\ \x20\x31\x35\x33\x2e\x36\x32\x31\x20\x2d\x31\x30\x37\x2e\x30\x35\ \x34\x43\x31\x35\x30\x2e\x35\x37\x35\x20\x2d\x31\x30\x38\x2e\x31\ \x39\x39\x20\x31\x34\x36\x2e\x38\x33\x32\x20\x2d\x31\x30\x37\x2e\ \x39\x31\x36\x20\x31\x34\x34\x2e\x34\x30\x31\x20\x2d\x31\x31\x30\ \x2e\x32\x43\x31\x34\x31\x2e\x39\x37\x33\x20\x2d\x31\x31\x30\x2e\ \x36\x31\x32\x20\x31\x33\x39\x2e\x36\x31\x36\x20\x2d\x31\x31\x31\ \x2e\x30\x37\x34\x20\x31\x33\x37\x2e\x31\x38\x38\x20\x2d\x31\x31\ \x31\x2e\x37\x35\x34\x43\x31\x33\x35\x2e\x33\x37\x20\x2d\x31\x31\ \x32\x2e\x32\x36\x33\x20\x31\x33\x33\x2e\x39\x36\x31\x20\x2d\x31\ \x31\x33\x2e\x32\x35\x32\x20\x31\x33\x32\x2e\x33\x34\x31\x20\x2d\ \x31\x31\x34\x2e\x30\x38\x34\x43\x31\x33\x30\x2e\x39\x36\x34\x20\ \x2d\x31\x31\x34\x2e\x37\x39\x32\x20\x31\x32\x39\x2e\x35\x30\x37\ \x20\x2d\x31\x31\x35\x2e\x33\x31\x34\x20\x31\x32\x37\x2e\x39\x37\ \x33\x20\x2d\x31\x31\x35\x2e\x36\x38\x36\x43\x31\x32\x36\x2e\x31\ \x31\x20\x2d\x31\x31\x36\x2e\x31\x33\x38\x20\x31\x32\x34\x2e\x32\ \x37\x39\x20\x2d\x31\x31\x36\x2e\x30\x32\x36\x20\x31\x32\x32\x2e\ \x33\x38\x36\x20\x2d\x31\x31\x36\x2e\x35\x34\x36\x43\x31\x32\x32\ \x2e\x32\x39\x33\x20\x2d\x31\x31\x36\x2e\x35\x37\x31\x20\x31\x32\ \x32\x2e\x31\x30\x31\x20\x2d\x31\x31\x36\x2e\x32\x32\x37\x20\x31\ \x32\x32\x2e\x30\x31\x39\x20\x2d\x31\x31\x36\x2e\x32\x35\x34\x43\ \x31\x32\x31\x2e\x36\x39\x35\x20\x2d\x31\x31\x36\x2e\x33\x36\x32\ \x20\x31\x32\x31\x2e\x34\x30\x35\x20\x2d\x31\x31\x36\x2e\x39\x34\ \x35\x20\x31\x32\x31\x2e\x32\x33\x34\x20\x2d\x31\x31\x36\x2e\x38\ \x39\x32\x43\x31\x31\x39\x2e\x35\x35\x33\x20\x2d\x31\x31\x36\x2e\ \x33\x37\x20\x31\x31\x38\x2e\x30\x36\x35\x20\x2d\x31\x31\x37\x2e\ \x33\x34\x32\x20\x31\x31\x36\x2e\x34\x30\x31\x20\x2d\x31\x31\x37\ \x43\x31\x31\x35\x2e\x32\x32\x33\x20\x2d\x31\x31\x38\x2e\x32\x32\ \x34\x20\x31\x31\x33\x2e\x34\x39\x35\x20\x2d\x31\x31\x37\x2e\x39\ \x37\x39\x20\x31\x31\x31\x2e\x39\x34\x39\x20\x2d\x31\x31\x38\x2e\ \x34\x32\x31\x43\x31\x30\x38\x2e\x39\x38\x35\x20\x2d\x31\x31\x39\ \x2e\x32\x36\x39\x20\x31\x30\x35\x2e\x38\x33\x31\x20\x2d\x31\x31\ \x37\x2e\x39\x39\x39\x20\x31\x30\x32\x2e\x38\x30\x31\x20\x2d\x31\ \x31\x39\x43\x31\x30\x36\x2e\x39\x31\x34\x20\x2d\x31\x32\x30\x2e\ \x38\x34\x32\x20\x31\x31\x31\x2e\x36\x30\x31\x20\x2d\x31\x31\x39\ \x2e\x36\x31\x20\x31\x31\x35\x2e\x36\x36\x33\x20\x2d\x31\x32\x31\ \x2e\x36\x37\x39\x43\x31\x31\x37\x2e\x39\x39\x31\x20\x2d\x31\x32\ \x32\x2e\x38\x36\x35\x20\x31\x32\x30\x2e\x36\x35\x33\x20\x2d\x31\ \x32\x31\x2e\x37\x36\x33\x20\x31\x32\x33\x2e\x32\x32\x33\x20\x2d\ \x31\x32\x32\x2e\x35\x32\x33\x43\x31\x32\x33\x2e\x37\x31\x20\x2d\ \x31\x32\x32\x2e\x36\x36\x37\x20\x31\x32\x34\x2e\x34\x30\x31\x20\ \x2d\x31\x32\x32\x2e\x38\x36\x39\x20\x31\x32\x34\x2e\x38\x30\x31\ \x20\x2d\x31\x32\x32\x2e\x32\x43\x31\x32\x34\x2e\x39\x33\x35\x20\ \x2d\x31\x32\x32\x2e\x33\x33\x35\x20\x31\x32\x35\x2e\x31\x31\x37\ \x20\x2d\x31\x32\x32\x2e\x35\x37\x34\x20\x31\x32\x35\x2e\x31\x37\ \x35\x20\x2d\x31\x32\x32\x2e\x35\x34\x36\x43\x31\x32\x37\x2e\x36\ \x32\x35\x20\x2d\x31\x32\x31\x2e\x33\x38\x39\x20\x31\x32\x39\x2e\ \x39\x34\x20\x2d\x31\x32\x30\x2e\x31\x31\x35\x20\x31\x33\x32\x2e\ \x34\x32\x32\x20\x2d\x31\x31\x39\x2e\x30\x34\x39\x43\x31\x33\x32\ \x2e\x37\x36\x33\x20\x2d\x31\x31\x38\x2e\x39\x30\x33\x20\x31\x33\ \x33\x2e\x32\x39\x35\x20\x2d\x31\x31\x39\x2e\x31\x33\x35\x20\x31\ \x33\x33\x2e\x35\x34\x37\x20\x2d\x31\x31\x38\x2e\x39\x33\x33\x43\ \x31\x33\x35\x2e\x30\x36\x37\x20\x2d\x31\x31\x37\x2e\x37\x31\x37\ \x20\x31\x33\x37\x2e\x30\x31\x20\x2d\x31\x31\x37\x2e\x38\x32\x20\ \x31\x33\x38\x2e\x34\x30\x31\x20\x2d\x31\x31\x36\x2e\x36\x43\x31\ \x34\x30\x2e\x30\x39\x39\x20\x2d\x31\x31\x37\x2e\x31\x30\x32\x20\ \x31\x34\x31\x2e\x38\x39\x32\x20\x2d\x31\x31\x36\x2e\x37\x32\x32\ \x20\x31\x34\x33\x2e\x36\x32\x31\x20\x2d\x31\x31\x37\x2e\x33\x34\ \x36\x43\x31\x34\x33\x2e\x36\x39\x38\x20\x2d\x31\x31\x37\x2e\x33\ \x37\x33\x20\x31\x34\x33\x2e\x39\x33\x32\x20\x2d\x31\x31\x37\x2e\ \x30\x33\x32\x20\x31\x34\x33\x2e\x39\x36\x35\x20\x2d\x31\x31\x37\ \x2e\x30\x35\x34\x43\x31\x34\x35\x2e\x30\x39\x35\x20\x2d\x31\x31\ \x37\x2e\x38\x30\x32\x20\x31\x34\x36\x2e\x32\x35\x20\x2d\x31\x31\ \x37\x2e\x35\x33\x31\x20\x31\x34\x37\x2e\x31\x34\x32\x20\x2d\x31\ \x31\x37\x2e\x32\x32\x37\x43\x31\x34\x37\x2e\x34\x38\x20\x2d\x31\ \x31\x37\x2e\x31\x31\x32\x20\x31\x34\x38\x2e\x31\x34\x33\x20\x2d\ \x31\x31\x36\x2e\x38\x36\x35\x20\x31\x34\x38\x2e\x34\x34\x38\x20\ \x2d\x31\x31\x36\x2e\x37\x39\x31\x43\x31\x34\x39\x2e\x35\x37\x34\ \x20\x2d\x31\x31\x36\x2e\x35\x31\x35\x20\x31\x35\x30\x2e\x34\x33\ \x20\x2d\x31\x31\x36\x2e\x30\x33\x35\x20\x31\x35\x31\x2e\x36\x30\ \x39\x20\x2d\x31\x31\x35\x2e\x38\x35\x32\x43\x31\x35\x31\x2e\x37\ \x32\x33\x20\x2d\x31\x31\x35\x2e\x38\x33\x34\x20\x31\x35\x31\x2e\ \x39\x30\x38\x20\x2d\x31\x31\x36\x2e\x31\x37\x34\x20\x31\x35\x31\ \x2e\x39\x38\x20\x2d\x31\x31\x36\x2e\x31\x34\x36\x43\x31\x35\x33\ \x2e\x31\x30\x33\x20\x2d\x31\x31\x35\x2e\x37\x30\x38\x20\x31\x35\ \x34\x2e\x31\x34\x35\x20\x2d\x31\x31\x35\x2e\x37\x36\x34\x20\x31\ \x35\x34\x2e\x38\x30\x31\x20\x2d\x31\x31\x34\x2e\x36\x43\x31\x35\ \x34\x2e\x39\x33\x36\x20\x2d\x31\x31\x34\x2e\x37\x33\x35\x20\x31\ \x35\x35\x2e\x31\x30\x31\x20\x2d\x31\x31\x34\x2e\x39\x37\x33\x20\ \x31\x35\x35\x2e\x31\x38\x33\x20\x2d\x31\x31\x34\x2e\x39\x34\x36\ \x43\x31\x35\x36\x2e\x32\x31\x20\x2d\x31\x31\x34\x2e\x36\x30\x38\ \x20\x31\x35\x36\x2e\x38\x35\x39\x20\x2d\x31\x31\x33\x2e\x38\x35\ \x33\x20\x31\x35\x37\x2e\x39\x36\x20\x2d\x31\x31\x33\x2e\x36\x31\ \x32\x43\x31\x35\x38\x2e\x34\x34\x35\x20\x2d\x31\x31\x33\x2e\x35\ \x30\x36\x20\x31\x35\x39\x2e\x30\x35\x37\x20\x2d\x31\x31\x32\x2e\ \x38\x38\x20\x31\x35\x39\x2e\x36\x33\x33\x20\x2d\x31\x31\x32\x2e\ \x37\x30\x34\x43\x31\x36\x32\x2e\x30\x32\x35\x20\x2d\x31\x31\x31\ \x2e\x39\x37\x33\x20\x31\x36\x33\x2e\x38\x36\x38\x20\x2d\x31\x31\ \x30\x2e\x34\x34\x34\x20\x31\x36\x36\x2e\x30\x36\x32\x20\x2d\x31\ \x30\x39\x2e\x35\x34\x39\x43\x31\x36\x36\x2e\x38\x32\x31\x20\x2d\ \x31\x30\x39\x2e\x32\x33\x39\x20\x31\x36\x37\x2e\x36\x39\x37\x20\ \x2d\x31\x30\x39\x2e\x30\x30\x35\x20\x31\x36\x38\x2e\x33\x33\x20\ \x2d\x31\x30\x38\x2e\x35\x30\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x37\x32\x32\ \x36\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x39\ \x31\x2e\x36\x39\x36\x20\x2d\x31\x32\x32\x2e\x37\x33\x39\x43\x38\ \x39\x2e\x31\x37\x38\x20\x2d\x31\x32\x34\x2e\x34\x36\x34\x20\x38\ \x36\x2e\x38\x31\x20\x2d\x31\x32\x35\x2e\x35\x37\x20\x38\x34\x2e\ \x33\x36\x38\x20\x2d\x31\x32\x37\x2e\x33\x35\x36\x43\x38\x34\x2e\ \x31\x38\x37\x20\x2d\x31\x32\x37\x2e\x34\x38\x39\x20\x38\x33\x2e\ \x38\x32\x37\x20\x2d\x31\x32\x37\x2e\x33\x31\x39\x20\x38\x33\x2e\ \x36\x32\x35\x20\x2d\x31\x32\x37\x2e\x34\x34\x31\x43\x38\x32\x2e\ \x36\x31\x38\x20\x2d\x31\x32\x38\x2e\x30\x35\x20\x38\x31\x2e\x37\ \x33\x20\x2d\x31\x32\x38\x2e\x36\x33\x31\x20\x38\x30\x2e\x37\x34\ \x38\x20\x2d\x31\x32\x39\x2e\x33\x32\x37\x43\x38\x30\x2e\x32\x30\ \x39\x20\x2d\x31\x32\x39\x2e\x37\x30\x39\x20\x37\x39\x2e\x33\x38\ \x38\x20\x2d\x31\x32\x39\x2e\x36\x39\x38\x20\x37\x38\x2e\x38\x38\ \x20\x2d\x31\x32\x39\x2e\x39\x35\x36\x43\x37\x36\x2e\x33\x33\x36\ \x20\x2d\x31\x33\x31\x2e\x32\x34\x38\x20\x37\x33\x2e\x37\x30\x37\ \x20\x2d\x31\x33\x31\x2e\x38\x30\x36\x20\x37\x31\x2e\x32\x20\x2d\ \x31\x33\x33\x43\x37\x31\x2e\x38\x38\x32\x20\x2d\x31\x33\x33\x2e\ \x36\x33\x38\x20\x37\x33\x2e\x30\x30\x34\x20\x2d\x31\x33\x33\x2e\ \x33\x39\x34\x20\x37\x33\x2e\x36\x20\x2d\x31\x33\x34\x2e\x32\x43\ \x37\x33\x2e\x37\x39\x35\x20\x2d\x31\x33\x33\x2e\x39\x32\x20\x37\ \x34\x2e\x30\x33\x33\x20\x2d\x31\x33\x33\x2e\x36\x33\x36\x20\x37\ \x34\x2e\x33\x38\x36\x20\x2d\x31\x33\x33\x2e\x38\x32\x37\x43\x37\ \x36\x2e\x30\x36\x34\x20\x2d\x31\x33\x34\x2e\x37\x33\x31\x20\x37\ \x37\x2e\x39\x31\x34\x20\x2d\x31\x33\x34\x2e\x38\x38\x34\x20\x37\ \x39\x2e\x35\x39\x20\x2d\x31\x33\x34\x2e\x37\x39\x34\x43\x38\x31\ \x2e\x32\x39\x34\x20\x2d\x31\x33\x34\x2e\x37\x30\x32\x20\x38\x33\ \x2e\x30\x31\x34\x20\x2d\x31\x33\x34\x2e\x33\x39\x37\x20\x38\x34\ \x2e\x37\x38\x39\x20\x2d\x31\x33\x34\x2e\x31\x32\x35\x43\x38\x35\ \x2e\x30\x39\x36\x20\x2d\x31\x33\x34\x2e\x30\x37\x38\x20\x38\x35\ \x2e\x32\x39\x35\x20\x2d\x31\x33\x33\x2e\x35\x35\x35\x20\x38\x35\ \x2e\x36\x31\x38\x20\x2d\x31\x33\x33\x2e\x34\x35\x38\x43\x38\x37\ \x2e\x38\x34\x36\x20\x2d\x31\x33\x32\x2e\x37\x39\x35\x20\x39\x30\ \x2e\x32\x33\x35\x20\x2d\x31\x33\x33\x2e\x33\x32\x20\x39\x32\x2e\ \x33\x35\x34\x20\x2d\x31\x33\x32\x2e\x34\x38\x32\x43\x39\x33\x2e\ \x39\x34\x35\x20\x2d\x31\x33\x31\x2e\x38\x35\x33\x20\x39\x35\x2e\ \x35\x31\x35\x20\x2d\x31\x33\x31\x2e\x30\x33\x20\x39\x36\x2e\x37\ \x35\x34\x20\x2d\x31\x32\x39\x2e\x37\x35\x35\x43\x39\x37\x2e\x30\ \x30\x36\x20\x2d\x31\x32\x39\x2e\x34\x39\x35\x20\x39\x36\x2e\x36\ \x38\x31\x20\x2d\x31\x32\x39\x2e\x31\x39\x34\x20\x39\x36\x2e\x34\ \x30\x31\x20\x2d\x31\x32\x39\x43\x39\x36\x2e\x37\x38\x39\x20\x2d\ \x31\x32\x39\x2e\x31\x30\x39\x20\x39\x37\x2e\x30\x36\x32\x20\x2d\ \x31\x32\x38\x2e\x39\x30\x33\x20\x39\x37\x2e\x31\x37\x33\x20\x2d\ \x31\x32\x38\x2e\x35\x39\x43\x39\x37\x2e\x32\x35\x37\x20\x2d\x31\ \x32\x38\x2e\x33\x35\x31\x20\x39\x37\x2e\x32\x35\x37\x20\x2d\x31\ \x32\x38\x2e\x30\x34\x39\x20\x39\x37\x2e\x31\x37\x33\x20\x2d\x31\ \x32\x37\x2e\x38\x31\x43\x39\x37\x2e\x30\x36\x31\x20\x2d\x31\x32\ \x37\x2e\x34\x39\x38\x20\x39\x36\x2e\x37\x38\x32\x20\x2d\x31\x32\ \x37\x2e\x33\x39\x37\x20\x39\x36\x2e\x34\x30\x38\x20\x2d\x31\x32\ \x37\x2e\x33\x34\x36\x43\x39\x35\x2e\x30\x30\x31\x20\x2d\x31\x32\ \x37\x2e\x31\x35\x36\x20\x39\x36\x2e\x37\x37\x33\x20\x2d\x31\x32\ \x38\x2e\x35\x33\x36\x20\x39\x36\x2e\x30\x37\x33\x20\x2d\x31\x32\ \x38\x2e\x30\x38\x38\x43\x39\x34\x2e\x38\x20\x2d\x31\x32\x37\x2e\ \x32\x37\x34\x20\x39\x35\x2e\x35\x34\x36\x20\x2d\x31\x32\x35\x2e\ \x38\x36\x38\x20\x39\x34\x2e\x38\x30\x31\x20\x2d\x31\x32\x34\x2e\ \x36\x43\x39\x34\x2e\x35\x32\x31\x20\x2d\x31\x32\x34\x2e\x37\x39\ \x34\x20\x39\x34\x2e\x32\x39\x31\x20\x2d\x31\x32\x35\x2e\x30\x31\ \x32\x20\x39\x34\x2e\x34\x30\x31\x20\x2d\x31\x32\x35\x2e\x34\x43\ \x39\x34\x2e\x36\x33\x35\x20\x2d\x31\x32\x34\x2e\x38\x37\x38\x20\ \x39\x34\x2e\x30\x33\x33\x20\x2d\x31\x32\x34\x2e\x35\x38\x38\x20\ \x39\x33\x2e\x38\x36\x35\x20\x2d\x31\x32\x34\x2e\x32\x37\x32\x43\ \x39\x33\x2e\x34\x38\x20\x2d\x31\x32\x33\x2e\x35\x34\x37\x20\x39\ \x32\x2e\x35\x38\x31\x20\x2d\x31\x32\x32\x2e\x31\x33\x32\x20\x39\ \x31\x2e\x36\x39\x36\x20\x2d\x31\x32\x32\x2e\x37\x33\x39\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x63\x63\x37\x32\x32\x36\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x35\x39\x2e\x31\x39\x38\x20\x2d\x31\x31\x35\ \x2e\x33\x39\x31\x43\x35\x36\x2e\x30\x34\x34\x20\x2d\x31\x31\x36\ \x2e\x31\x38\x35\x20\x35\x32\x2e\x39\x39\x34\x20\x2d\x31\x31\x36\ \x2e\x30\x37\x20\x34\x39\x2e\x39\x37\x38\x20\x2d\x31\x31\x37\x2e\ \x33\x34\x36\x43\x34\x39\x2e\x39\x31\x31\x20\x2d\x31\x31\x37\x2e\ \x33\x37\x34\x20\x34\x39\x2e\x36\x38\x38\x20\x2d\x31\x31\x37\x2e\ \x30\x32\x37\x20\x34\x39\x2e\x36\x32\x34\x20\x2d\x31\x31\x37\x2e\ \x30\x35\x34\x43\x34\x38\x2e\x32\x35\x38\x20\x2d\x31\x31\x37\x2e\ \x36\x34\x38\x20\x34\x37\x2e\x33\x34\x20\x2d\x31\x31\x38\x2e\x36\ \x31\x34\x20\x34\x36\x2e\x32\x36\x34\x20\x2d\x31\x31\x39\x2e\x36\ \x36\x43\x34\x35\x2e\x33\x35\x31\x20\x2d\x31\x32\x30\x2e\x35\x34\ \x38\x20\x34\x33\x2e\x36\x39\x33\x20\x2d\x31\x32\x30\x2e\x31\x36\ \x31\x20\x34\x32\x2e\x34\x31\x39\x20\x2d\x31\x32\x30\x2e\x36\x34\ \x38\x43\x34\x32\x2e\x30\x39\x35\x20\x2d\x31\x32\x30\x2e\x37\x37\ \x32\x20\x34\x31\x2e\x38\x39\x32\x20\x2d\x31\x32\x31\x2e\x32\x38\ \x34\x20\x34\x31\x2e\x35\x39\x31\x20\x2d\x31\x32\x31\x2e\x33\x32\ \x33\x43\x34\x30\x2e\x33\x37\x32\x20\x2d\x31\x32\x31\x2e\x34\x38\ \x20\x33\x39\x2e\x34\x34\x35\x20\x2d\x31\x32\x32\x2e\x34\x32\x39\ \x20\x33\x38\x2e\x34\x20\x2d\x31\x32\x33\x43\x34\x30\x2e\x37\x33\ \x36\x20\x2d\x31\x32\x33\x2e\x37\x39\x35\x20\x34\x33\x2e\x31\x34\ \x37\x20\x2d\x31\x32\x33\x2e\x37\x36\x34\x20\x34\x35\x2e\x36\x30\ \x39\x20\x2d\x31\x32\x34\x2e\x31\x34\x38\x43\x34\x35\x2e\x37\x32\ \x32\x20\x2d\x31\x32\x34\x2e\x31\x36\x36\x20\x34\x35\x2e\x38\x36\ \x37\x20\x2d\x31\x32\x33\x2e\x38\x34\x35\x20\x34\x36\x20\x2d\x31\ \x32\x33\x2e\x38\x34\x35\x43\x34\x36\x2e\x31\x33\x36\x20\x2d\x31\ \x32\x33\x2e\x38\x34\x35\x20\x34\x36\x2e\x32\x36\x36\x20\x2d\x31\ \x32\x34\x2e\x30\x36\x36\x20\x34\x36\x2e\x34\x20\x2d\x31\x32\x34\ \x2e\x32\x43\x34\x36\x2e\x35\x39\x35\x20\x2d\x31\x32\x33\x2e\x39\ \x32\x20\x34\x36\x2e\x38\x39\x37\x20\x2d\x31\x32\x33\x2e\x35\x39\ \x34\x20\x34\x37\x2e\x31\x35\x34\x20\x2d\x31\x32\x33\x2e\x38\x34\ \x38\x43\x34\x37\x2e\x37\x30\x32\x20\x2d\x31\x32\x34\x2e\x33\x38\ \x38\x20\x34\x38\x2e\x32\x35\x38\x20\x2d\x31\x32\x34\x2e\x31\x39\ \x38\x20\x34\x38\x2e\x37\x39\x38\x20\x2d\x31\x32\x34\x2e\x31\x35\ \x38\x43\x34\x38\x2e\x39\x34\x32\x20\x2d\x31\x32\x34\x2e\x31\x34\ \x38\x20\x34\x39\x2e\x30\x36\x37\x20\x2d\x31\x32\x33\x2e\x38\x34\ \x35\x20\x34\x39\x2e\x32\x20\x2d\x31\x32\x33\x2e\x38\x34\x35\x43\ \x34\x39\x2e\x33\x33\x36\x20\x2d\x31\x32\x33\x2e\x38\x34\x35\x20\ \x34\x39\x2e\x34\x36\x37\x20\x2d\x31\x32\x34\x2e\x31\x35\x36\x20\ \x34\x39\x2e\x36\x20\x2d\x31\x32\x34\x2e\x31\x35\x36\x43\x34\x39\ \x2e\x37\x33\x36\x20\x2d\x31\x32\x34\x2e\x31\x35\x35\x20\x34\x39\ \x2e\x38\x36\x37\x20\x2d\x31\x32\x33\x2e\x38\x34\x35\x20\x35\x30\ \x20\x2d\x31\x32\x33\x2e\x38\x34\x35\x43\x35\x30\x2e\x31\x33\x36\ \x20\x2d\x31\x32\x33\x2e\x38\x34\x35\x20\x35\x30\x2e\x32\x36\x36\ \x20\x2d\x31\x32\x34\x2e\x30\x36\x36\x20\x35\x30\x2e\x34\x20\x2d\ \x31\x32\x34\x2e\x32\x43\x35\x31\x2e\x30\x39\x32\x20\x2d\x31\x32\ \x33\x2e\x34\x31\x38\x20\x35\x31\x2e\x39\x37\x37\x20\x2d\x31\x32\ \x33\x2e\x39\x37\x32\x20\x35\x32\x2e\x37\x39\x39\x20\x2d\x31\x32\ \x33\x2e\x37\x39\x33\x43\x35\x33\x2e\x38\x33\x37\x20\x2d\x31\x32\ \x33\x2e\x35\x36\x36\x20\x35\x34\x2e\x31\x30\x34\x20\x2d\x31\x32\ \x32\x2e\x34\x31\x38\x20\x35\x35\x2e\x31\x37\x38\x20\x2d\x31\x32\ \x32\x2e\x31\x32\x43\x35\x39\x2e\x38\x39\x33\x20\x2d\x31\x32\x30\ \x2e\x38\x31\x36\x20\x36\x34\x2e\x30\x33\x20\x2d\x31\x31\x38\x2e\ \x36\x37\x31\x20\x36\x38\x2e\x33\x39\x33\x20\x2d\x31\x31\x36\x2e\ \x35\x38\x34\x43\x36\x38\x2e\x37\x20\x2d\x31\x31\x36\x2e\x34\x33\ \x37\x20\x36\x38\x2e\x39\x31\x20\x2d\x31\x31\x36\x2e\x31\x38\x39\ \x20\x36\x38\x2e\x38\x20\x2d\x31\x31\x35\x2e\x38\x43\x36\x39\x2e\ \x30\x36\x37\x20\x2d\x31\x31\x35\x2e\x38\x20\x36\x39\x2e\x33\x38\ \x20\x2d\x31\x31\x35\x2e\x38\x38\x38\x20\x36\x39\x2e\x35\x37\x20\ \x2d\x31\x31\x35\x2e\x37\x35\x36\x43\x37\x30\x2e\x36\x32\x38\x20\ \x2d\x31\x31\x35\x2e\x30\x32\x34\x20\x37\x31\x2e\x36\x36\x39\x20\ \x2d\x31\x31\x34\x2e\x34\x37\x36\x20\x37\x32\x2e\x33\x36\x36\x20\ \x2d\x31\x31\x33\x2e\x33\x37\x38\x43\x37\x32\x2e\x35\x38\x32\x20\ \x2d\x31\x31\x33\x2e\x30\x33\x39\x20\x37\x32\x2e\x32\x35\x33\x20\ \x2d\x31\x31\x32\x2e\x36\x33\x32\x20\x37\x32\x2e\x30\x32\x20\x2d\ \x31\x31\x32\x2e\x36\x38\x34\x43\x36\x37\x2e\x35\x39\x31\x20\x2d\ \x31\x31\x33\x2e\x36\x37\x39\x20\x36\x33\x2e\x35\x38\x35\x20\x2d\ \x31\x31\x34\x2e\x32\x38\x37\x20\x35\x39\x2e\x31\x39\x38\x20\x2d\ \x31\x31\x35\x2e\x33\x39\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x37\x32\x32\x36\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x34\x35\ \x2e\x33\x33\x38\x20\x2d\x37\x31\x2e\x31\x37\x39\x43\x34\x33\x2e\ \x37\x34\x36\x20\x2d\x37\x32\x2e\x33\x39\x38\x20\x34\x33\x2e\x31\ \x36\x32\x20\x2d\x37\x34\x2e\x34\x32\x39\x20\x34\x32\x2e\x30\x33\ \x34\x20\x2d\x37\x36\x2e\x32\x32\x31\x43\x34\x31\x2e\x38\x32\x20\ \x2d\x37\x36\x2e\x35\x36\x31\x20\x34\x32\x2e\x30\x39\x34\x20\x2d\ \x37\x36\x2e\x38\x37\x35\x20\x34\x32\x2e\x34\x31\x31\x20\x2d\x37\ \x36\x2e\x39\x36\x34\x43\x34\x32\x2e\x39\x37\x31\x20\x2d\x37\x37\ \x2e\x31\x32\x33\x20\x34\x33\x2e\x35\x31\x34\x20\x2d\x37\x36\x2e\ \x36\x34\x35\x20\x34\x33\x2e\x39\x32\x33\x20\x2d\x37\x36\x2e\x34\ \x34\x33\x43\x34\x35\x2e\x36\x36\x38\x20\x2d\x37\x35\x2e\x35\x38\ \x31\x20\x34\x37\x2e\x32\x30\x33\x20\x2d\x37\x34\x2e\x33\x33\x39\ \x20\x34\x39\x2e\x32\x20\x2d\x37\x34\x2e\x32\x43\x35\x31\x2e\x31\ \x39\x20\x2d\x37\x31\x2e\x39\x36\x36\x20\x35\x35\x2e\x34\x35\x20\ \x2d\x37\x31\x2e\x35\x38\x31\x20\x35\x35\x2e\x34\x35\x37\x20\x2d\ \x36\x38\x2e\x32\x43\x35\x35\x2e\x34\x35\x38\x20\x2d\x36\x37\x2e\ \x33\x34\x31\x20\x35\x34\x2e\x30\x33\x20\x2d\x36\x38\x2e\x32\x35\ \x39\x20\x35\x33\x2e\x36\x20\x2d\x36\x37\x2e\x34\x43\x35\x31\x2e\ \x31\x34\x39\x20\x2d\x36\x38\x2e\x34\x30\x33\x20\x34\x38\x2e\x37\ \x36\x20\x2d\x36\x38\x2e\x33\x20\x34\x36\x2e\x33\x38\x20\x2d\x36\ \x39\x2e\x37\x36\x37\x43\x34\x35\x2e\x37\x36\x33\x20\x2d\x37\x30\ \x2e\x31\x34\x38\x20\x34\x36\x2e\x30\x39\x33\x20\x2d\x37\x30\x2e\ \x36\x30\x31\x20\x34\x35\x2e\x33\x33\x38\x20\x2d\x37\x31\x2e\x31\ \x37\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x63\x63\x37\x32\x32\x36\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x37\x2e\x38\x20\x2d\x31\ \x32\x33\x2e\x37\x35\x36\x43\x31\x37\x2e\x39\x33\x35\x20\x2d\x31\ \x32\x33\x2e\x37\x35\x35\x20\x32\x34\x2e\x39\x36\x36\x20\x2d\x31\ \x32\x33\x2e\x35\x32\x32\x20\x32\x34\x2e\x39\x34\x39\x20\x2d\x31\ \x32\x33\x2e\x34\x30\x38\x43\x32\x34\x2e\x39\x30\x34\x20\x2d\x31\ \x32\x33\x2e\x30\x39\x39\x20\x31\x37\x2e\x31\x37\x34\x20\x2d\x31\ \x32\x32\x2e\x30\x35\x20\x31\x36\x2e\x38\x31\x20\x2d\x31\x32\x32\ \x2e\x32\x32\x43\x31\x36\x2e\x36\x34\x36\x20\x2d\x31\x32\x32\x2e\ \x32\x39\x36\x20\x39\x2e\x31\x33\x34\x20\x2d\x31\x31\x39\x2e\x38\ \x36\x36\x20\x39\x20\x2d\x31\x32\x30\x43\x39\x2e\x32\x36\x38\x20\ \x2d\x31\x32\x30\x2e\x31\x33\x35\x20\x31\x37\x2e\x35\x33\x34\x20\ \x2d\x31\x32\x33\x2e\x37\x35\x36\x20\x31\x37\x2e\x38\x20\x2d\x31\ \x32\x33\x2e\x37\x35\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\x33\x2e\ \x32\x20\x2d\x31\x31\x34\x43\x33\x33\x2e\x32\x20\x2d\x31\x31\x34\ \x20\x31\x38\x2e\x34\x20\x2d\x31\x31\x32\x2e\x32\x20\x31\x34\x20\ \x2d\x31\x31\x31\x43\x39\x2e\x36\x20\x2d\x31\x30\x39\x2e\x38\x20\ \x2d\x39\x20\x2d\x31\x30\x32\x2e\x32\x20\x2d\x31\x32\x20\x2d\x31\ \x30\x30\x2e\x32\x43\x2d\x31\x32\x20\x2d\x31\x30\x30\x2e\x32\x20\ \x2d\x32\x35\x2e\x34\x20\x2d\x39\x34\x2e\x38\x20\x2d\x34\x32\x2e\ \x34\x20\x2d\x37\x34\x2e\x38\x43\x2d\x34\x32\x2e\x34\x20\x2d\x37\ \x34\x2e\x38\x20\x2d\x33\x34\x2e\x38\x20\x2d\x37\x38\x2e\x32\x20\ \x2d\x33\x32\x2e\x36\x20\x2d\x38\x31\x43\x2d\x33\x32\x2e\x36\x20\ \x2d\x38\x31\x20\x2d\x31\x39\x20\x2d\x39\x33\x2e\x36\x20\x2d\x31\ \x39\x2e\x32\x20\x2d\x39\x31\x43\x2d\x31\x39\x2e\x32\x20\x2d\x39\ \x31\x20\x2d\x37\x20\x2d\x39\x39\x2e\x36\x20\x2d\x37\x2e\x36\x20\ \x2d\x39\x37\x2e\x34\x43\x2d\x37\x2e\x36\x20\x2d\x39\x37\x2e\x34\ \x20\x31\x36\x2e\x38\x20\x2d\x31\x30\x38\x2e\x36\x20\x31\x34\x2e\ \x38\x20\x2d\x31\x30\x35\x2e\x34\x43\x31\x34\x2e\x38\x20\x2d\x31\ \x30\x35\x2e\x34\x20\x33\x36\x2e\x34\x20\x2d\x31\x31\x30\x20\x33\ \x35\x2e\x34\x20\x2d\x31\x30\x38\x43\x33\x35\x2e\x34\x20\x2d\x31\ \x30\x38\x20\x35\x34\x2e\x32\x20\x2d\x31\x30\x33\x2e\x36\x20\x35\ \x31\x2e\x34\x20\x2d\x31\x30\x33\x2e\x34\x43\x35\x31\x2e\x34\x20\ \x2d\x31\x30\x33\x2e\x34\x20\x34\x35\x2e\x36\x20\x2d\x31\x30\x32\ \x2e\x32\x20\x35\x32\x20\x2d\x39\x38\x2e\x36\x43\x35\x32\x20\x2d\ \x39\x38\x2e\x36\x20\x34\x38\x2e\x36\x20\x2d\x39\x34\x2e\x32\x20\ \x34\x33\x2e\x32\x20\x2d\x39\x38\x2e\x32\x43\x33\x37\x2e\x38\x20\ \x2d\x31\x30\x32\x2e\x32\x20\x34\x30\x2e\x38\x20\x2d\x31\x30\x30\ \x20\x33\x35\x2e\x38\x20\x2d\x39\x39\x43\x33\x35\x2e\x38\x20\x2d\ \x39\x39\x20\x33\x33\x2e\x32\x20\x2d\x39\x38\x2e\x32\x20\x32\x38\ \x2e\x36\x20\x2d\x31\x30\x32\x2e\x32\x43\x32\x38\x2e\x36\x20\x2d\ \x31\x30\x32\x2e\x32\x20\x32\x33\x20\x2d\x31\x30\x36\x2e\x38\x20\ \x31\x34\x2e\x32\x20\x2d\x31\x30\x33\x2e\x32\x43\x31\x34\x2e\x32\ \x20\x2d\x31\x30\x33\x2e\x32\x20\x2d\x31\x36\x2e\x34\x20\x2d\x39\ \x30\x2e\x36\x20\x2d\x31\x38\x2e\x34\x20\x2d\x39\x30\x43\x2d\x31\ \x38\x2e\x34\x20\x2d\x39\x30\x20\x2d\x32\x32\x20\x2d\x38\x37\x2e\ \x32\x20\x2d\x32\x34\x2e\x34\x20\x2d\x38\x33\x2e\x36\x43\x2d\x32\ \x34\x2e\x34\x20\x2d\x38\x33\x2e\x36\x20\x2d\x33\x30\x2e\x32\x20\ \x2d\x37\x39\x2e\x32\x20\x2d\x33\x33\x2e\x32\x20\x2d\x37\x37\x2e\ \x38\x43\x2d\x33\x33\x2e\x32\x20\x2d\x37\x37\x2e\x38\x20\x2d\x34\ \x36\x20\x2d\x36\x36\x2e\x32\x20\x2d\x34\x37\x2e\x32\x20\x2d\x36\ \x34\x2e\x38\x43\x2d\x34\x37\x2e\x32\x20\x2d\x36\x34\x2e\x38\x20\ \x2d\x35\x30\x2e\x36\x20\x2d\x35\x39\x2e\x36\x20\x2d\x35\x31\x2e\ \x34\x20\x2d\x35\x39\x2e\x32\x43\x2d\x35\x31\x2e\x34\x20\x2d\x35\ \x39\x2e\x32\x20\x2d\x34\x35\x20\x2d\x36\x33\x20\x2d\x34\x33\x20\ \x2d\x36\x35\x43\x2d\x34\x33\x20\x2d\x36\x35\x20\x2d\x32\x39\x20\ \x2d\x37\x35\x20\x2d\x32\x33\x2e\x36\x20\x2d\x37\x35\x2e\x38\x43\ \x2d\x32\x33\x2e\x36\x20\x2d\x37\x35\x2e\x38\x20\x2d\x31\x39\x2e\ \x32\x20\x2d\x37\x38\x2e\x38\x20\x2d\x31\x38\x2e\x34\x20\x2d\x38\ \x30\x2e\x32\x43\x2d\x31\x38\x2e\x34\x20\x2d\x38\x30\x2e\x32\x20\ \x2d\x34\x20\x2d\x38\x39\x2e\x34\x20\x30\x2e\x32\x20\x2d\x38\x39\ \x2e\x34\x43\x30\x2e\x32\x20\x2d\x38\x39\x2e\x34\x20\x39\x2e\x34\ \x20\x2d\x38\x34\x2e\x32\x20\x31\x31\x2e\x38\x20\x2d\x39\x31\x2e\ \x32\x43\x31\x31\x2e\x38\x20\x2d\x39\x31\x2e\x32\x20\x31\x37\x2e\ \x36\x20\x2d\x39\x33\x20\x32\x33\x2e\x32\x20\x2d\x39\x31\x2e\x38\ \x43\x32\x33\x2e\x32\x20\x2d\x39\x31\x2e\x38\x20\x32\x36\x2e\x34\ \x20\x2d\x39\x34\x2e\x34\x20\x32\x35\x2e\x36\x20\x2d\x39\x36\x2e\ \x36\x43\x32\x35\x2e\x36\x20\x2d\x39\x36\x2e\x36\x20\x32\x37\x2e\ \x32\x20\x2d\x39\x38\x2e\x34\x20\x32\x38\x2e\x32\x20\x2d\x39\x34\ \x2e\x36\x43\x32\x38\x2e\x32\x20\x2d\x39\x34\x2e\x36\x20\x33\x31\ \x2e\x36\x20\x2d\x39\x31\x20\x33\x36\x2e\x34\x20\x2d\x39\x33\x43\ \x33\x36\x2e\x34\x20\x2d\x39\x33\x20\x34\x30\x2e\x34\x20\x2d\x39\ \x33\x2e\x32\x20\x33\x38\x2e\x34\x20\x2d\x39\x30\x2e\x38\x43\x33\ \x38\x2e\x34\x20\x2d\x39\x30\x2e\x38\x20\x33\x34\x20\x2d\x38\x37\ \x20\x32\x32\x2e\x32\x20\x2d\x38\x36\x2e\x38\x43\x32\x32\x2e\x32\ \x20\x2d\x38\x36\x2e\x38\x20\x39\x2e\x38\x20\x2d\x38\x36\x2e\x32\ \x20\x2d\x36\x2e\x36\x20\x2d\x37\x38\x2e\x36\x43\x2d\x36\x2e\x36\ \x20\x2d\x37\x38\x2e\x36\x20\x2d\x33\x36\x2e\x34\x20\x2d\x36\x38\ \x2e\x32\x20\x2d\x34\x35\x2e\x36\x20\x2d\x35\x37\x2e\x38\x43\x2d\ \x34\x35\x2e\x36\x20\x2d\x35\x37\x2e\x38\x20\x2d\x35\x32\x20\x2d\ \x34\x39\x20\x2d\x35\x37\x2e\x34\x20\x2d\x34\x37\x2e\x38\x43\x2d\ \x35\x37\x2e\x34\x20\x2d\x34\x37\x2e\x38\x20\x2d\x36\x33\x2e\x32\ \x20\x2d\x34\x37\x20\x2d\x36\x39\x2e\x32\x20\x2d\x33\x39\x2e\x36\ \x43\x2d\x36\x39\x2e\x32\x20\x2d\x33\x39\x2e\x36\x20\x2d\x35\x39\ \x2e\x34\x20\x2d\x34\x35\x2e\x34\x20\x2d\x35\x30\x2e\x34\x20\x2d\ \x34\x35\x2e\x34\x43\x2d\x35\x30\x2e\x34\x20\x2d\x34\x35\x2e\x34\ \x20\x2d\x34\x36\x2e\x34\x20\x2d\x34\x37\x2e\x38\x20\x2d\x35\x30\ \x2e\x32\x20\x2d\x34\x34\x2e\x32\x43\x2d\x35\x30\x2e\x32\x20\x2d\ \x34\x34\x2e\x32\x20\x2d\x35\x33\x2e\x38\x20\x2d\x33\x36\x2e\x36\ \x20\x2d\x35\x32\x2e\x32\x20\x2d\x33\x31\x2e\x32\x43\x2d\x35\x32\ \x2e\x32\x20\x2d\x33\x31\x2e\x32\x20\x2d\x35\x32\x2e\x38\x20\x2d\ \x32\x36\x20\x2d\x35\x33\x2e\x36\x20\x2d\x32\x34\x2e\x34\x43\x2d\ \x35\x33\x2e\x36\x20\x2d\x32\x34\x2e\x34\x20\x2d\x36\x31\x2e\x34\ \x20\x2d\x31\x31\x2e\x36\x20\x2d\x36\x31\x2e\x34\x20\x2d\x39\x2e\ \x32\x43\x2d\x36\x31\x2e\x34\x20\x2d\x36\x2e\x38\x20\x2d\x36\x30\ \x2e\x32\x20\x33\x20\x2d\x35\x39\x2e\x38\x20\x33\x2e\x36\x43\x2d\ \x35\x39\x2e\x34\x20\x34\x2e\x32\x20\x2d\x36\x30\x2e\x38\x20\x32\ \x20\x2d\x35\x37\x20\x34\x2e\x34\x43\x2d\x35\x33\x2e\x32\x20\x36\ \x2e\x38\x20\x2d\x35\x30\x2e\x34\x20\x38\x2e\x34\x20\x2d\x34\x39\ \x2e\x36\x20\x31\x31\x2e\x32\x43\x2d\x34\x38\x2e\x38\x20\x31\x34\ \x20\x2d\x35\x31\x2e\x36\x20\x35\x2e\x38\x20\x2d\x35\x31\x2e\x38\ \x20\x34\x43\x2d\x35\x32\x20\x32\x2e\x32\x20\x2d\x35\x36\x2e\x32\ \x20\x2d\x35\x20\x2d\x35\x35\x2e\x34\x20\x2d\x37\x2e\x34\x43\x2d\ \x35\x35\x2e\x34\x20\x2d\x37\x2e\x34\x20\x2d\x35\x34\x2e\x34\x20\ \x2d\x36\x2e\x34\x20\x2d\x35\x33\x2e\x36\x20\x2d\x35\x43\x2d\x35\ \x33\x2e\x36\x20\x2d\x35\x20\x2d\x35\x34\x2e\x32\x20\x2d\x35\x2e\ \x36\x20\x2d\x35\x33\x2e\x36\x20\x2d\x39\x2e\x32\x43\x2d\x35\x33\ \x2e\x36\x20\x2d\x39\x2e\x32\x20\x2d\x35\x32\x2e\x38\x20\x2d\x31\ \x34\x2e\x34\x20\x2d\x35\x31\x2e\x34\x20\x2d\x31\x37\x2e\x36\x43\ \x2d\x35\x30\x20\x2d\x32\x30\x2e\x38\x20\x2d\x34\x38\x20\x2d\x32\ \x34\x2e\x36\x20\x2d\x34\x37\x2e\x36\x20\x2d\x32\x35\x2e\x34\x43\ \x2d\x34\x37\x2e\x32\x20\x2d\x32\x36\x2e\x32\x20\x2d\x34\x37\x2e\ \x32\x20\x2d\x33\x32\x20\x2d\x34\x35\x2e\x38\x20\x2d\x32\x39\x2e\ \x34\x4c\x2d\x34\x32\x2e\x34\x20\x2d\x32\x36\x2e\x38\x43\x2d\x34\ \x32\x2e\x34\x20\x2d\x32\x36\x2e\x38\x20\x2d\x34\x35\x2e\x32\x20\ \x2d\x32\x39\x2e\x34\x20\x2d\x34\x33\x20\x2d\x33\x31\x2e\x36\x43\ \x2d\x34\x33\x20\x2d\x33\x31\x2e\x36\x20\x2d\x34\x34\x20\x2d\x33\ \x37\x2e\x32\x20\x2d\x34\x32\x2e\x32\x20\x2d\x33\x39\x2e\x38\x43\ \x2d\x34\x32\x2e\x32\x20\x2d\x33\x39\x2e\x38\x20\x2d\x33\x35\x2e\ \x32\x20\x2d\x34\x38\x2e\x32\x20\x2d\x33\x33\x2e\x36\x20\x2d\x34\ \x39\x2e\x32\x43\x2d\x33\x32\x20\x2d\x35\x30\x2e\x32\x20\x2d\x33\ \x33\x2e\x34\x20\x2d\x34\x39\x2e\x38\x20\x2d\x33\x33\x2e\x34\x20\ \x2d\x34\x39\x2e\x38\x43\x2d\x33\x33\x2e\x34\x20\x2d\x34\x39\x2e\ \x38\x20\x2d\x32\x37\x2e\x34\x20\x2d\x35\x34\x20\x2d\x33\x33\x2e\ \x32\x20\x2d\x35\x32\x2e\x34\x43\x2d\x33\x33\x2e\x32\x20\x2d\x35\ \x32\x2e\x34\x20\x2d\x33\x37\x2e\x32\x20\x2d\x35\x30\x2e\x38\x20\ \x2d\x34\x30\x2e\x32\x20\x2d\x35\x30\x2e\x38\x43\x2d\x34\x30\x2e\ \x32\x20\x2d\x35\x30\x2e\x38\x20\x2d\x34\x37\x2e\x38\x20\x2d\x34\ \x38\x2e\x38\x20\x2d\x34\x33\x2e\x38\x20\x2d\x35\x33\x43\x2d\x33\ \x39\x2e\x38\x20\x2d\x35\x37\x2e\x32\x20\x2d\x32\x39\x2e\x38\x20\ \x2d\x36\x32\x2e\x36\x20\x2d\x32\x36\x20\x2d\x36\x32\x2e\x34\x4c\ \x2d\x32\x35\x2e\x32\x20\x2d\x36\x30\x2e\x38\x4c\x2d\x31\x34\x20\ \x2d\x36\x33\x2e\x32\x4c\x2d\x31\x35\x2e\x32\x20\x2d\x36\x32\x2e\ \x34\x43\x2d\x31\x35\x2e\x32\x20\x2d\x36\x32\x2e\x34\x20\x2d\x31\ \x35\x2e\x34\x20\x2d\x36\x32\x2e\x36\x20\x2d\x31\x31\x2e\x32\x20\ \x2d\x36\x33\x43\x2d\x37\x20\x2d\x36\x33\x2e\x34\x20\x2d\x31\x2e\ \x32\x20\x2d\x36\x32\x20\x30\x2e\x32\x20\x2d\x36\x33\x2e\x38\x43\ \x31\x2e\x36\x20\x2d\x36\x35\x2e\x36\x20\x35\x20\x2d\x36\x36\x2e\ \x36\x20\x34\x2e\x36\x20\x2d\x36\x35\x2e\x32\x43\x34\x2e\x32\x20\ \x2d\x36\x33\x2e\x38\x20\x34\x20\x2d\x36\x31\x2e\x38\x20\x34\x20\ \x2d\x36\x31\x2e\x38\x43\x34\x20\x2d\x36\x31\x2e\x38\x20\x39\x20\ \x2d\x36\x37\x2e\x36\x20\x38\x2e\x34\x20\x2d\x36\x35\x2e\x34\x43\ \x37\x2e\x38\x20\x2d\x36\x33\x2e\x32\x20\x2d\x30\x2e\x34\x20\x2d\ \x35\x38\x20\x2d\x31\x2e\x38\x20\x2d\x35\x31\x2e\x38\x4c\x38\x2e\ \x36\x20\x2d\x36\x30\x4c\x31\x32\x2e\x32\x20\x2d\x36\x33\x43\x31\ \x32\x2e\x32\x20\x2d\x36\x33\x20\x31\x35\x2e\x38\x20\x2d\x36\x30\ \x2e\x38\x20\x31\x36\x20\x2d\x36\x32\x2e\x34\x43\x31\x36\x2e\x32\ \x20\x2d\x36\x34\x20\x32\x30\x2e\x38\x20\x2d\x36\x39\x2e\x38\x20\ \x32\x32\x20\x2d\x36\x39\x2e\x36\x43\x32\x33\x2e\x32\x20\x2d\x36\ \x39\x2e\x34\x20\x32\x35\x2e\x32\x20\x2d\x37\x32\x2e\x32\x20\x32\ \x35\x20\x2d\x36\x39\x2e\x36\x43\x32\x34\x2e\x38\x20\x2d\x36\x37\ \x20\x33\x32\x2e\x34\x20\x2d\x36\x31\x2e\x36\x20\x33\x32\x2e\x34\ \x20\x2d\x36\x31\x2e\x36\x43\x33\x32\x2e\x34\x20\x2d\x36\x31\x2e\ \x36\x20\x33\x35\x2e\x36\x20\x2d\x36\x33\x2e\x34\x20\x33\x37\x20\ \x2d\x36\x32\x43\x33\x38\x2e\x34\x20\x2d\x36\x30\x2e\x36\x20\x34\ \x32\x2e\x36\x20\x2d\x38\x31\x2e\x38\x20\x34\x32\x2e\x36\x20\x2d\ \x38\x31\x2e\x38\x4c\x36\x37\x2e\x36\x20\x2d\x39\x32\x2e\x34\x4c\ \x31\x31\x31\x2e\x32\x30\x31\x20\x2d\x39\x35\x2e\x38\x4c\x39\x34\ \x2e\x32\x30\x31\x20\x2d\x31\x30\x32\x2e\x36\x4c\x33\x33\x2e\x32\ \x20\x2d\x31\x31\x34\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\ \x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x34\x63\x30\x30\x30\x30\x22\ \x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x32\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x35\x31\x2e\x34\x20\x38\x35\x43\ \x35\x31\x2e\x34\x20\x38\x35\x20\x33\x36\x2e\x34\x20\x36\x38\x2e\ \x32\x20\x32\x38\x20\x36\x35\x2e\x36\x43\x32\x38\x20\x36\x35\x2e\ \x36\x20\x31\x34\x2e\x36\x20\x35\x38\x2e\x38\x20\x2d\x31\x30\x20\ \x36\x36\x2e\x36\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\x74\x72\ \x6f\x6b\x65\x22\x3a\x22\x23\x34\x63\x30\x30\x30\x30\x22\x2c\x20\ \x22\x77\x69\x64\x74\x68\x22\x3a\x32\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x32\x34\x2e\x38\x20\x36\x34\x2e\x32\x43\ \x32\x34\x2e\x38\x20\x36\x34\x2e\x32\x20\x2d\x30\x2e\x34\x20\x35\ \x36\x2e\x32\x20\x2d\x31\x35\x2e\x38\x20\x36\x30\x2e\x34\x43\x2d\ \x31\x35\x2e\x38\x20\x36\x30\x2e\x34\x20\x2d\x33\x34\x2e\x32\x20\ \x36\x32\x2e\x34\x20\x2d\x34\x32\x2e\x36\x20\x37\x36\x2e\x32\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x34\x63\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x32\x31\x2e\x32\x20\x36\x33\x43\x32\x31\x2e\x32\x20\x36\x33\ \x20\x34\x2e\x32\x20\x35\x35\x2e\x38\x20\x2d\x31\x30\x2e\x36\x20\ \x35\x33\x2e\x36\x43\x2d\x31\x30\x2e\x36\x20\x35\x33\x2e\x36\x20\ \x2d\x32\x37\x2e\x32\x20\x35\x31\x20\x2d\x34\x33\x2e\x38\x20\x35\ \x38\x2e\x32\x43\x2d\x34\x33\x2e\x38\x20\x35\x38\x2e\x32\x20\x2d\ \x35\x36\x20\x36\x34\x2e\x32\x20\x2d\x36\x31\x2e\x34\x20\x37\x34\ \x2e\x34\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\x74\x72\x6f\x6b\ \x65\x22\x3a\x22\x23\x34\x63\x30\x30\x30\x30\x22\x2c\x20\x22\x77\ \x69\x64\x74\x68\x22\x3a\x32\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x32\x32\x2e\x32\x20\x36\x33\x2e\x34\x43\x32\x32\ \x2e\x32\x20\x36\x33\x2e\x34\x20\x36\x2e\x38\x20\x35\x32\x2e\x34\ \x20\x35\x2e\x38\x20\x35\x31\x43\x35\x2e\x38\x20\x35\x31\x20\x2d\ \x31\x2e\x32\x20\x34\x30\x20\x2d\x31\x34\x2e\x32\x20\x33\x39\x2e\ \x36\x43\x2d\x31\x34\x2e\x32\x20\x33\x39\x2e\x36\x20\x2d\x33\x35\ \x2e\x36\x20\x34\x30\x2e\x34\x20\x2d\x35\x32\x2e\x38\x20\x34\x38\ \x2e\x34\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x30\x2e\x38\x39\x35\x20\x35\ \x34\x2e\x34\x30\x37\x43\x32\x32\x2e\x34\x33\x37\x20\x35\x35\x2e\ \x38\x37\x20\x34\x39\x2e\x34\x20\x38\x34\x2e\x38\x20\x34\x39\x2e\ \x34\x20\x38\x34\x2e\x38\x43\x38\x34\x2e\x36\x20\x31\x32\x31\x2e\ \x34\x30\x31\x20\x35\x36\x2e\x36\x20\x38\x37\x2e\x32\x20\x35\x36\ \x2e\x36\x20\x38\x37\x2e\x32\x43\x34\x39\x20\x38\x32\x2e\x34\x20\ \x33\x39\x2e\x38\x20\x36\x33\x2e\x36\x20\x33\x39\x2e\x38\x20\x36\ \x33\x2e\x36\x43\x33\x38\x2e\x36\x20\x36\x30\x2e\x38\x20\x35\x33\ \x2e\x38\x20\x37\x30\x2e\x38\x20\x35\x33\x2e\x38\x20\x37\x30\x2e\ \x38\x43\x35\x37\x2e\x38\x20\x37\x31\x2e\x36\x20\x37\x31\x2e\x34\ \x20\x39\x30\x2e\x38\x20\x37\x31\x2e\x34\x20\x39\x30\x2e\x38\x43\ \x36\x34\x2e\x36\x20\x38\x38\x2e\x34\x20\x36\x39\x2e\x34\x20\x39\ \x35\x2e\x36\x20\x36\x39\x2e\x34\x20\x39\x35\x2e\x36\x43\x37\x32\ \x2e\x32\x20\x39\x37\x2e\x36\x20\x39\x32\x2e\x36\x30\x31\x20\x31\ \x31\x33\x2e\x32\x30\x31\x20\x39\x32\x2e\x36\x30\x31\x20\x31\x31\ \x33\x2e\x32\x30\x31\x43\x39\x36\x2e\x32\x30\x31\x20\x31\x31\x37\ \x2e\x32\x30\x31\x20\x31\x30\x30\x2e\x32\x30\x31\x20\x31\x31\x38\ \x2e\x38\x30\x31\x20\x31\x30\x30\x2e\x32\x30\x31\x20\x31\x31\x38\ \x2e\x38\x30\x31\x43\x31\x31\x34\x2e\x32\x30\x31\x20\x31\x31\x33\ \x2e\x36\x30\x31\x20\x31\x30\x37\x2e\x38\x30\x31\x20\x31\x32\x36\ \x2e\x38\x30\x31\x20\x31\x30\x37\x2e\x38\x30\x31\x20\x31\x32\x36\ \x2e\x38\x30\x31\x43\x31\x31\x30\x2e\x32\x30\x31\x20\x31\x33\x33\ \x2e\x36\x30\x31\x20\x31\x31\x35\x2e\x38\x30\x31\x20\x31\x32\x32\ \x2e\x30\x30\x31\x20\x31\x31\x35\x2e\x38\x30\x31\x20\x31\x32\x32\ \x2e\x30\x30\x31\x43\x31\x32\x37\x2e\x30\x30\x31\x20\x31\x30\x35\ \x2e\x32\x20\x31\x31\x30\x2e\x36\x30\x31\x20\x31\x30\x37\x2e\x36\ \x30\x31\x20\x31\x31\x30\x2e\x36\x30\x31\x20\x31\x30\x37\x2e\x36\ \x30\x31\x43\x38\x30\x2e\x36\x20\x31\x31\x30\x2e\x34\x30\x31\x20\ \x37\x33\x2e\x38\x20\x39\x34\x2e\x34\x20\x37\x33\x2e\x38\x20\x39\ \x34\x2e\x34\x43\x37\x31\x2e\x34\x20\x39\x32\x20\x38\x30\x2e\x32\ \x20\x39\x34\x2e\x34\x20\x38\x30\x2e\x32\x20\x39\x34\x2e\x34\x43\ \x38\x38\x2e\x36\x30\x31\x20\x39\x36\x2e\x34\x20\x37\x33\x20\x38\ \x32\x20\x37\x33\x20\x38\x32\x43\x37\x35\x2e\x34\x20\x38\x32\x20\ \x38\x34\x2e\x36\x20\x38\x38\x2e\x38\x20\x38\x34\x2e\x36\x20\x38\ \x38\x2e\x38\x43\x39\x35\x2e\x30\x30\x31\x20\x39\x38\x20\x39\x37\ \x2e\x30\x30\x31\x20\x39\x36\x20\x39\x37\x2e\x30\x30\x31\x20\x39\ \x36\x43\x31\x31\x35\x2e\x30\x30\x31\x20\x38\x37\x2e\x32\x20\x31\ \x32\x35\x2e\x34\x30\x31\x20\x39\x34\x2e\x38\x20\x31\x32\x35\x2e\ \x34\x30\x31\x20\x39\x34\x2e\x38\x43\x31\x32\x37\x2e\x34\x30\x31\ \x20\x39\x36\x2e\x34\x20\x31\x32\x31\x2e\x38\x30\x31\x20\x31\x30\ \x33\x2e\x32\x20\x31\x32\x33\x2e\x34\x30\x31\x20\x31\x30\x38\x2e\ \x34\x30\x31\x43\x31\x32\x35\x2e\x30\x30\x31\x20\x31\x31\x33\x2e\ \x36\x30\x31\x20\x31\x32\x39\x2e\x38\x30\x31\x20\x31\x32\x36\x2e\ \x30\x30\x31\x20\x31\x32\x39\x2e\x38\x30\x31\x20\x31\x32\x36\x2e\ \x30\x30\x31\x43\x31\x32\x37\x2e\x34\x30\x31\x20\x31\x32\x37\x2e\ \x36\x30\x31\x20\x31\x32\x37\x2e\x38\x30\x31\x20\x31\x33\x38\x2e\ \x34\x30\x31\x20\x31\x32\x37\x2e\x38\x30\x31\x20\x31\x33\x38\x2e\ \x34\x30\x31\x43\x31\x34\x34\x2e\x36\x30\x31\x20\x31\x36\x31\x2e\ \x36\x30\x31\x20\x31\x33\x35\x2e\x30\x30\x31\x20\x31\x35\x39\x2e\ \x36\x30\x31\x20\x31\x33\x35\x2e\x30\x30\x31\x20\x31\x35\x39\x2e\ \x36\x30\x31\x43\x31\x31\x39\x2e\x34\x30\x31\x20\x31\x35\x39\x2e\ \x32\x30\x31\x20\x31\x33\x34\x2e\x32\x30\x31\x20\x31\x36\x36\x2e\ \x38\x30\x31\x20\x31\x33\x34\x2e\x32\x30\x31\x20\x31\x36\x36\x2e\ \x38\x30\x31\x43\x31\x33\x37\x2e\x34\x30\x31\x20\x31\x36\x38\x2e\ \x38\x30\x31\x20\x31\x34\x36\x2e\x32\x30\x31\x20\x31\x37\x36\x2e\ \x30\x30\x31\x20\x31\x34\x36\x2e\x32\x30\x31\x20\x31\x37\x36\x2e\ \x30\x30\x31\x43\x31\x34\x33\x2e\x34\x30\x31\x20\x31\x37\x34\x2e\ \x38\x30\x31\x20\x31\x34\x31\x2e\x38\x30\x31\x20\x31\x38\x30\x2e\ \x30\x30\x31\x20\x31\x34\x31\x2e\x38\x30\x31\x20\x31\x38\x30\x2e\ \x30\x30\x31\x43\x31\x34\x36\x2e\x36\x30\x31\x20\x31\x38\x34\x2e\ \x30\x30\x31\x20\x31\x34\x33\x2e\x38\x30\x31\x20\x31\x38\x38\x2e\ \x38\x30\x31\x20\x31\x34\x33\x2e\x38\x30\x31\x20\x31\x38\x38\x2e\ \x38\x30\x31\x43\x31\x33\x37\x2e\x38\x30\x31\x20\x31\x39\x30\x2e\ \x30\x30\x31\x20\x31\x33\x36\x2e\x36\x30\x31\x20\x31\x39\x34\x2e\ \x30\x30\x31\x20\x31\x33\x36\x2e\x36\x30\x31\x20\x31\x39\x34\x2e\ \x30\x30\x31\x43\x31\x34\x33\x2e\x34\x30\x31\x20\x32\x30\x32\x2e\ \x30\x30\x31\x20\x31\x33\x33\x2e\x34\x30\x31\x20\x32\x30\x32\x2e\ \x34\x30\x31\x20\x31\x33\x33\x2e\x34\x30\x31\x20\x32\x30\x32\x2e\ \x34\x30\x31\x43\x31\x33\x37\x2e\x30\x30\x31\x20\x32\x30\x36\x2e\ \x38\x30\x31\x20\x31\x33\x32\x2e\x32\x30\x31\x20\x32\x31\x38\x2e\ \x38\x30\x31\x20\x31\x33\x32\x2e\x32\x30\x31\x20\x32\x31\x38\x2e\ \x38\x30\x31\x43\x31\x32\x37\x2e\x34\x30\x31\x20\x32\x31\x38\x2e\ \x38\x30\x31\x20\x31\x32\x31\x2e\x30\x30\x31\x20\x32\x32\x34\x2e\ \x34\x30\x31\x20\x31\x32\x31\x2e\x30\x30\x31\x20\x32\x32\x34\x2e\ \x34\x30\x31\x43\x31\x32\x33\x2e\x34\x30\x31\x20\x32\x32\x39\x2e\ \x32\x30\x31\x20\x31\x31\x33\x2e\x30\x30\x31\x20\x32\x33\x34\x2e\ \x38\x30\x31\x20\x31\x31\x33\x2e\x30\x30\x31\x20\x32\x33\x34\x2e\ \x38\x30\x31\x43\x31\x30\x34\x2e\x36\x30\x31\x20\x32\x33\x36\x2e\ \x34\x30\x31\x20\x31\x30\x37\x2e\x34\x30\x31\x20\x32\x34\x33\x2e\ \x32\x30\x31\x20\x31\x30\x37\x2e\x34\x30\x31\x20\x32\x34\x33\x2e\ \x32\x30\x31\x43\x39\x39\x2e\x34\x30\x31\x20\x32\x34\x39\x2e\x32\ \x30\x31\x20\x39\x37\x2e\x30\x30\x31\x20\x32\x36\x35\x2e\x32\x30\ \x31\x20\x39\x37\x2e\x30\x30\x31\x20\x32\x36\x35\x2e\x32\x30\x31\ \x43\x39\x36\x2e\x32\x30\x31\x20\x32\x37\x35\x2e\x36\x30\x31\x20\ \x39\x33\x2e\x38\x30\x31\x20\x32\x37\x38\x2e\x38\x30\x31\x20\x39\ \x39\x2e\x30\x30\x31\x20\x32\x37\x36\x2e\x38\x30\x31\x43\x31\x30\ \x34\x2e\x32\x30\x31\x20\x32\x37\x34\x2e\x38\x30\x31\x20\x31\x30\ \x33\x2e\x34\x30\x31\x20\x32\x36\x32\x2e\x34\x30\x31\x20\x31\x30\ \x33\x2e\x34\x30\x31\x20\x32\x36\x32\x2e\x34\x30\x31\x43\x39\x38\ \x2e\x36\x30\x31\x20\x32\x34\x36\x2e\x38\x30\x31\x20\x31\x34\x31\ \x2e\x34\x30\x31\x20\x32\x33\x30\x2e\x38\x30\x31\x20\x31\x34\x31\ \x2e\x34\x30\x31\x20\x32\x33\x30\x2e\x38\x30\x31\x43\x31\x34\x35\ \x2e\x34\x30\x31\x20\x32\x32\x39\x2e\x32\x30\x31\x20\x31\x34\x36\ \x2e\x32\x30\x31\x20\x32\x32\x34\x2e\x30\x30\x31\x20\x31\x34\x36\ \x2e\x32\x30\x31\x20\x32\x32\x34\x2e\x30\x30\x31\x43\x31\x34\x38\ \x2e\x32\x30\x31\x20\x32\x32\x34\x2e\x34\x30\x31\x20\x31\x35\x37\ \x2e\x30\x30\x31\x20\x32\x33\x32\x2e\x30\x30\x31\x20\x31\x35\x37\ \x2e\x30\x30\x31\x20\x32\x33\x32\x2e\x30\x30\x31\x43\x31\x36\x34\ \x2e\x36\x30\x31\x20\x32\x34\x33\x2e\x32\x30\x31\x20\x31\x36\x35\ \x2e\x30\x30\x31\x20\x32\x33\x34\x2e\x30\x30\x31\x20\x31\x36\x35\ \x2e\x30\x30\x31\x20\x32\x33\x34\x2e\x30\x30\x31\x43\x31\x36\x36\ \x2e\x32\x30\x31\x20\x32\x33\x30\x2e\x34\x30\x31\x20\x31\x36\x34\ \x2e\x36\x30\x31\x20\x32\x32\x34\x2e\x34\x30\x31\x20\x31\x36\x34\ \x2e\x36\x30\x31\x20\x32\x32\x34\x2e\x34\x30\x31\x43\x31\x37\x30\ \x2e\x36\x30\x31\x20\x32\x30\x32\x2e\x38\x30\x31\x20\x31\x35\x36\ \x2e\x36\x30\x31\x20\x31\x39\x36\x2e\x34\x30\x31\x20\x31\x35\x36\ \x2e\x36\x30\x31\x20\x31\x39\x36\x2e\x34\x30\x31\x43\x31\x34\x36\ \x2e\x36\x30\x31\x20\x31\x36\x32\x2e\x38\x30\x31\x20\x31\x36\x30\ \x2e\x36\x30\x31\x20\x31\x37\x31\x2e\x32\x30\x31\x20\x31\x36\x30\ \x2e\x36\x30\x31\x20\x31\x37\x31\x2e\x32\x30\x31\x43\x31\x36\x33\ \x2e\x34\x30\x31\x20\x31\x37\x36\x2e\x38\x30\x31\x20\x31\x37\x34\ \x2e\x32\x30\x31\x20\x31\x38\x32\x2e\x30\x30\x31\x20\x31\x37\x34\ \x2e\x32\x30\x31\x20\x31\x38\x32\x2e\x30\x30\x31\x4c\x31\x37\x37\ \x2e\x38\x30\x31\x20\x31\x37\x39\x2e\x36\x30\x31\x43\x31\x37\x36\ \x2e\x32\x30\x31\x20\x31\x37\x34\x2e\x38\x30\x31\x20\x31\x38\x34\ \x2e\x36\x30\x31\x20\x31\x36\x38\x2e\x38\x30\x31\x20\x31\x38\x34\ \x2e\x36\x30\x31\x20\x31\x36\x38\x2e\x38\x30\x31\x43\x31\x38\x37\ \x2e\x34\x30\x31\x20\x31\x37\x35\x2e\x32\x30\x31\x20\x31\x39\x33\ \x2e\x34\x30\x31\x20\x31\x36\x37\x2e\x32\x30\x31\x20\x31\x39\x33\ \x2e\x34\x30\x31\x20\x31\x36\x37\x2e\x32\x30\x31\x43\x31\x39\x37\ \x2e\x30\x30\x31\x20\x31\x34\x32\x2e\x38\x30\x31\x20\x32\x30\x39\ \x2e\x34\x30\x31\x20\x31\x35\x37\x2e\x32\x30\x31\x20\x32\x30\x39\ \x2e\x34\x30\x31\x20\x31\x35\x37\x2e\x32\x30\x31\x43\x32\x31\x33\ \x2e\x34\x30\x31\x20\x31\x35\x38\x2e\x34\x30\x31\x20\x32\x31\x34\ \x2e\x36\x30\x31\x20\x31\x35\x31\x2e\x36\x30\x31\x20\x32\x31\x34\ \x2e\x36\x30\x31\x20\x31\x35\x31\x2e\x36\x30\x31\x43\x32\x31\x38\ \x2e\x32\x30\x31\x20\x31\x34\x31\x2e\x32\x30\x31\x20\x32\x31\x34\ \x2e\x36\x30\x31\x20\x31\x32\x37\x2e\x36\x30\x31\x20\x32\x31\x34\ \x2e\x36\x30\x31\x20\x31\x32\x37\x2e\x36\x30\x31\x43\x32\x31\x38\ \x2e\x32\x30\x31\x20\x31\x32\x37\x2e\x32\x30\x31\x20\x32\x32\x37\ \x2e\x38\x30\x31\x20\x31\x33\x33\x2e\x32\x30\x31\x20\x32\x32\x37\ \x2e\x38\x30\x31\x20\x31\x33\x33\x2e\x32\x30\x31\x43\x32\x33\x30\ \x2e\x36\x30\x31\x20\x31\x32\x39\x2e\x36\x30\x31\x20\x32\x32\x31\ \x2e\x34\x30\x31\x20\x31\x31\x32\x2e\x38\x30\x31\x20\x32\x32\x35\ \x2e\x34\x30\x31\x20\x31\x31\x35\x2e\x32\x30\x31\x43\x32\x32\x39\ \x2e\x34\x30\x31\x20\x31\x31\x37\x2e\x36\x30\x31\x20\x32\x33\x33\ \x2e\x38\x30\x31\x20\x31\x31\x39\x2e\x32\x30\x31\x20\x32\x33\x33\ \x2e\x38\x30\x31\x20\x31\x31\x39\x2e\x32\x30\x31\x43\x32\x33\x34\ \x2e\x36\x30\x31\x20\x31\x31\x37\x2e\x32\x30\x31\x20\x32\x32\x34\ \x2e\x36\x30\x31\x20\x31\x30\x34\x2e\x38\x30\x31\x20\x32\x32\x34\ \x2e\x36\x30\x31\x20\x31\x30\x34\x2e\x38\x30\x31\x43\x32\x32\x30\ \x2e\x32\x30\x31\x20\x31\x30\x32\x20\x32\x31\x35\x2e\x30\x30\x31\ \x20\x38\x31\x2e\x36\x20\x32\x31\x35\x2e\x30\x30\x31\x20\x38\x31\ \x2e\x36\x43\x32\x32\x32\x2e\x32\x30\x31\x20\x38\x35\x2e\x32\x20\ \x32\x31\x32\x2e\x32\x30\x31\x20\x37\x30\x20\x32\x31\x32\x2e\x32\ \x30\x31\x20\x37\x30\x43\x32\x31\x32\x2e\x32\x30\x31\x20\x36\x36\ \x2e\x38\x20\x32\x31\x38\x2e\x32\x30\x31\x20\x35\x35\x2e\x36\x20\ \x32\x31\x38\x2e\x32\x30\x31\x20\x35\x35\x2e\x36\x43\x32\x31\x37\ \x2e\x34\x30\x31\x20\x34\x38\x2e\x38\x20\x32\x31\x38\x2e\x32\x30\ \x31\x20\x34\x39\x2e\x32\x20\x32\x31\x38\x2e\x32\x30\x31\x20\x34\ \x39\x2e\x32\x43\x32\x32\x31\x2e\x30\x30\x31\x20\x35\x30\x2e\x34\ \x20\x32\x32\x39\x2e\x30\x30\x31\x20\x35\x32\x20\x32\x32\x32\x2e\ \x32\x30\x31\x20\x34\x35\x2e\x36\x43\x32\x31\x35\x2e\x34\x30\x31\ \x20\x33\x39\x2e\x32\x20\x32\x32\x33\x2e\x30\x30\x31\x20\x33\x34\ \x2e\x34\x20\x32\x32\x33\x2e\x30\x30\x31\x20\x33\x34\x2e\x34\x43\ \x32\x32\x37\x2e\x34\x30\x31\x20\x33\x31\x2e\x36\x20\x32\x31\x33\ \x2e\x38\x30\x31\x20\x33\x32\x20\x32\x31\x33\x2e\x38\x30\x31\x20\ \x33\x32\x43\x32\x30\x38\x2e\x36\x30\x31\x20\x32\x37\x2e\x36\x20\ \x32\x30\x39\x2e\x30\x30\x31\x20\x32\x33\x2e\x36\x20\x32\x30\x39\ \x2e\x30\x30\x31\x20\x32\x33\x2e\x36\x43\x32\x31\x37\x2e\x30\x30\ \x31\x20\x32\x35\x2e\x36\x20\x32\x30\x32\x2e\x36\x30\x31\x20\x31\ \x31\x2e\x32\x20\x32\x30\x30\x2e\x32\x30\x31\x20\x37\x2e\x36\x43\ \x31\x39\x37\x2e\x38\x30\x31\x20\x34\x20\x32\x30\x37\x2e\x34\x30\ \x31\x20\x2d\x31\x2e\x32\x20\x32\x30\x37\x2e\x34\x30\x31\x20\x2d\ \x31\x2e\x32\x43\x32\x32\x30\x2e\x36\x30\x31\x20\x2d\x34\x2e\x38\ \x20\x32\x30\x39\x2e\x30\x30\x31\x20\x2d\x38\x20\x32\x30\x39\x2e\ \x30\x30\x31\x20\x2d\x38\x43\x31\x38\x39\x2e\x34\x30\x31\x20\x2d\ \x37\x2e\x36\x20\x32\x30\x30\x2e\x32\x30\x31\x20\x2d\x31\x38\x2e\ \x34\x20\x32\x30\x30\x2e\x32\x30\x31\x20\x2d\x31\x38\x2e\x34\x43\ \x32\x30\x36\x2e\x32\x30\x31\x20\x2d\x31\x38\x20\x32\x30\x34\x2e\ \x36\x30\x31\x20\x2d\x32\x30\x2e\x34\x20\x32\x30\x34\x2e\x36\x30\ \x31\x20\x2d\x32\x30\x2e\x34\x43\x31\x39\x39\x2e\x34\x30\x31\x20\ \x2d\x32\x31\x2e\x36\x20\x31\x38\x39\x2e\x38\x30\x31\x20\x2d\x32\ \x38\x20\x31\x38\x39\x2e\x38\x30\x31\x20\x2d\x32\x38\x43\x31\x38\ \x35\x2e\x38\x30\x31\x20\x2d\x33\x31\x2e\x36\x20\x31\x38\x39\x2e\ \x34\x30\x31\x20\x2d\x33\x30\x2e\x38\x20\x31\x38\x39\x2e\x34\x30\ \x31\x20\x2d\x33\x30\x2e\x38\x43\x32\x30\x36\x2e\x32\x30\x31\x20\ \x2d\x32\x39\x2e\x36\x20\x31\x37\x37\x2e\x34\x30\x31\x20\x2d\x34\ \x30\x2e\x38\x20\x31\x37\x37\x2e\x34\x30\x31\x20\x2d\x34\x30\x2e\ \x38\x43\x31\x38\x35\x2e\x34\x30\x31\x20\x2d\x34\x30\x2e\x38\x20\ \x31\x36\x37\x2e\x34\x30\x31\x20\x2d\x35\x31\x2e\x32\x20\x31\x36\ \x37\x2e\x34\x30\x31\x20\x2d\x35\x31\x2e\x32\x43\x31\x36\x35\x2e\ \x34\x30\x31\x20\x2d\x35\x32\x2e\x38\x20\x31\x36\x32\x2e\x32\x30\ \x31\x20\x2d\x36\x30\x2e\x34\x20\x31\x36\x32\x2e\x32\x30\x31\x20\ \x2d\x36\x30\x2e\x34\x43\x31\x35\x36\x2e\x32\x30\x31\x20\x2d\x36\ \x35\x2e\x36\x20\x31\x35\x31\x2e\x34\x30\x31\x20\x2d\x37\x32\x2e\ \x34\x20\x31\x35\x31\x2e\x34\x30\x31\x20\x2d\x37\x32\x2e\x34\x43\ \x31\x35\x31\x2e\x30\x30\x31\x20\x2d\x37\x36\x2e\x38\x20\x31\x34\ \x36\x2e\x32\x30\x31\x20\x2d\x38\x31\x2e\x36\x20\x31\x34\x36\x2e\ \x32\x30\x31\x20\x2d\x38\x31\x2e\x36\x43\x31\x33\x34\x2e\x36\x30\ \x31\x20\x2d\x39\x35\x2e\x32\x20\x31\x32\x39\x2e\x30\x30\x31\x20\ \x2d\x39\x34\x2e\x38\x20\x31\x32\x39\x2e\x30\x30\x31\x20\x2d\x39\ \x34\x2e\x38\x43\x31\x31\x34\x2e\x32\x30\x31\x20\x2d\x39\x38\x2e\ \x34\x20\x31\x30\x39\x2e\x30\x30\x31\x20\x2d\x39\x37\x2e\x36\x20\ \x31\x30\x39\x2e\x30\x30\x31\x20\x2d\x39\x37\x2e\x36\x4c\x35\x36\ \x2e\x32\x20\x2d\x39\x33\x2e\x32\x43\x32\x39\x2e\x38\x20\x2d\x38\ \x30\x2e\x34\x20\x33\x37\x2e\x36\x20\x2d\x35\x39\x2e\x34\x20\x33\ \x37\x2e\x36\x20\x2d\x35\x39\x2e\x34\x43\x34\x34\x20\x2d\x35\x31\ \x20\x35\x33\x2e\x32\x20\x2d\x35\x34\x2e\x38\x20\x35\x33\x2e\x32\ \x20\x2d\x35\x34\x2e\x38\x43\x35\x37\x2e\x38\x20\x2d\x36\x31\x20\ \x36\x39\x2e\x34\x20\x2d\x35\x38\x2e\x38\x20\x36\x39\x2e\x34\x20\ \x2d\x35\x38\x2e\x38\x43\x38\x39\x2e\x38\x30\x31\x20\x2d\x35\x35\ \x2e\x36\x20\x38\x37\x2e\x32\x30\x31\x20\x2d\x35\x39\x2e\x32\x20\ \x38\x37\x2e\x32\x30\x31\x20\x2d\x35\x39\x2e\x32\x43\x38\x34\x2e\ \x38\x30\x31\x20\x2d\x36\x33\x2e\x38\x20\x36\x38\x2e\x36\x20\x2d\ \x37\x30\x20\x36\x38\x2e\x34\x20\x2d\x37\x30\x2e\x36\x43\x36\x38\ \x2e\x32\x20\x2d\x37\x31\x2e\x32\x20\x35\x39\x2e\x34\x20\x2d\x37\ \x34\x2e\x36\x20\x35\x39\x2e\x34\x20\x2d\x37\x34\x2e\x36\x43\x35\ \x36\x2e\x34\x20\x2d\x37\x35\x2e\x38\x20\x35\x32\x20\x2d\x38\x35\ \x20\x35\x32\x20\x2d\x38\x35\x43\x34\x38\x2e\x38\x20\x2d\x38\x38\ \x2e\x34\x20\x36\x34\x2e\x36\x20\x2d\x38\x32\x2e\x36\x20\x36\x34\ \x2e\x36\x20\x2d\x38\x32\x2e\x36\x43\x36\x33\x2e\x34\x20\x2d\x38\ \x31\x2e\x36\x20\x37\x30\x2e\x38\x20\x2d\x37\x37\x2e\x36\x20\x37\ \x30\x2e\x38\x20\x2d\x37\x37\x2e\x36\x43\x38\x38\x2e\x32\x30\x31\ \x20\x2d\x37\x38\x2e\x36\x20\x39\x38\x2e\x38\x30\x31\x20\x2d\x36\ \x37\x2e\x38\x20\x39\x38\x2e\x38\x30\x31\x20\x2d\x36\x37\x2e\x38\ \x43\x31\x30\x39\x2e\x36\x30\x31\x20\x2d\x35\x31\x2e\x32\x20\x31\ \x30\x39\x2e\x38\x30\x31\x20\x2d\x35\x39\x2e\x34\x20\x31\x30\x39\ \x2e\x38\x30\x31\x20\x2d\x35\x39\x2e\x34\x43\x31\x31\x32\x2e\x36\ \x30\x31\x20\x2d\x36\x38\x2e\x38\x20\x31\x30\x30\x2e\x38\x30\x31\ \x20\x2d\x39\x30\x20\x31\x30\x30\x2e\x38\x30\x31\x20\x2d\x39\x30\ \x43\x31\x30\x31\x2e\x32\x30\x31\x20\x2d\x39\x32\x20\x31\x30\x39\ \x2e\x34\x30\x31\x20\x2d\x38\x35\x2e\x34\x20\x31\x30\x39\x2e\x34\ \x30\x31\x20\x2d\x38\x35\x2e\x34\x43\x31\x31\x30\x2e\x38\x30\x31\ \x20\x2d\x38\x37\x2e\x34\x20\x31\x31\x31\x2e\x36\x30\x31\x20\x2d\ \x38\x31\x2e\x36\x20\x31\x31\x31\x2e\x36\x30\x31\x20\x2d\x38\x31\ \x2e\x36\x43\x31\x31\x31\x2e\x38\x30\x31\x20\x2d\x37\x39\x2e\x32\ \x20\x31\x31\x35\x2e\x36\x30\x31\x20\x2d\x37\x31\x2e\x32\x20\x31\ \x31\x35\x2e\x36\x30\x31\x20\x2d\x37\x31\x2e\x32\x43\x31\x31\x38\ \x2e\x34\x30\x31\x20\x2d\x35\x38\x2e\x32\x20\x31\x32\x32\x2e\x30\ \x30\x31\x20\x2d\x36\x35\x2e\x36\x20\x31\x32\x32\x2e\x30\x30\x31\ \x20\x2d\x36\x35\x2e\x36\x4c\x31\x32\x36\x2e\x36\x30\x31\x20\x2d\ \x35\x36\x2e\x32\x43\x31\x32\x38\x2e\x30\x30\x31\x20\x2d\x35\x33\ \x2e\x36\x20\x31\x32\x32\x2e\x30\x30\x31\x20\x2d\x34\x36\x20\x31\ \x32\x32\x2e\x30\x30\x31\x20\x2d\x34\x36\x43\x31\x32\x31\x2e\x38\ \x30\x31\x20\x2d\x34\x33\x2e\x32\x20\x31\x32\x32\x2e\x36\x30\x31\ \x20\x2d\x34\x33\x2e\x34\x20\x31\x31\x37\x2e\x30\x30\x31\x20\x2d\ \x33\x35\x2e\x38\x43\x31\x31\x31\x2e\x34\x30\x31\x20\x2d\x32\x38\ \x2e\x32\x20\x31\x31\x34\x2e\x38\x30\x31\x20\x2d\x32\x33\x2e\x38\ \x20\x31\x31\x34\x2e\x38\x30\x31\x20\x2d\x32\x33\x2e\x38\x43\x31\ \x31\x33\x2e\x34\x30\x31\x20\x2d\x31\x37\x2e\x32\x20\x31\x32\x32\ \x2e\x32\x30\x31\x20\x2d\x31\x37\x2e\x36\x20\x31\x32\x32\x2e\x32\ \x30\x31\x20\x2d\x31\x37\x2e\x36\x43\x31\x32\x34\x2e\x38\x30\x31\ \x20\x2d\x31\x35\x2e\x34\x20\x31\x32\x38\x2e\x32\x30\x31\x20\x2d\ \x31\x35\x2e\x34\x20\x31\x32\x38\x2e\x32\x30\x31\x20\x2d\x31\x35\ \x2e\x34\x43\x31\x33\x30\x2e\x30\x30\x31\x20\x2d\x31\x33\x2e\x34\ \x20\x31\x33\x32\x2e\x34\x30\x31\x20\x2d\x31\x34\x20\x31\x33\x32\ \x2e\x34\x30\x31\x20\x2d\x31\x34\x43\x31\x33\x34\x2e\x30\x30\x31\ \x20\x2d\x31\x37\x2e\x38\x20\x31\x34\x30\x2e\x32\x30\x31\x20\x2d\ \x31\x35\x2e\x38\x20\x31\x34\x30\x2e\x32\x30\x31\x20\x2d\x31\x35\ \x2e\x38\x43\x31\x34\x31\x2e\x36\x30\x31\x20\x2d\x31\x38\x2e\x32\ \x20\x31\x34\x39\x2e\x38\x30\x31\x20\x2d\x31\x38\x2e\x36\x20\x31\ \x34\x39\x2e\x38\x30\x31\x20\x2d\x31\x38\x2e\x36\x43\x31\x35\x30\ \x2e\x38\x30\x31\x20\x2d\x32\x31\x2e\x32\x20\x31\x35\x31\x2e\x32\ \x30\x31\x20\x2d\x32\x32\x2e\x38\x20\x31\x35\x34\x2e\x36\x30\x31\ \x20\x2d\x32\x33\x2e\x34\x43\x31\x35\x38\x2e\x30\x30\x31\x20\x2d\ \x32\x34\x20\x31\x33\x33\x2e\x34\x30\x31\x20\x2d\x36\x37\x20\x31\ \x33\x33\x2e\x34\x30\x31\x20\x2d\x36\x37\x43\x31\x33\x39\x2e\x38\ \x30\x31\x20\x2d\x36\x37\x2e\x38\x20\x31\x33\x31\x2e\x36\x30\x31\ \x20\x2d\x38\x30\x2e\x32\x20\x31\x33\x31\x2e\x36\x30\x31\x20\x2d\ \x38\x30\x2e\x32\x43\x31\x32\x39\x2e\x34\x30\x31\x20\x2d\x38\x36\ \x2e\x38\x20\x31\x34\x30\x2e\x38\x30\x31\x20\x2d\x37\x32\x2e\x32\ \x20\x31\x34\x33\x2e\x30\x30\x31\x20\x2d\x37\x30\x2e\x38\x43\x31\ \x34\x35\x2e\x32\x30\x31\x20\x2d\x36\x39\x2e\x34\x20\x31\x34\x36\ \x2e\x32\x30\x31\x20\x2d\x36\x37\x2e\x32\x20\x31\x34\x34\x2e\x36\ \x30\x31\x20\x2d\x36\x37\x2e\x34\x43\x31\x34\x33\x2e\x30\x30\x31\ \x20\x2d\x36\x37\x2e\x36\x20\x31\x34\x31\x2e\x32\x30\x31\x20\x2d\ \x36\x35\x2e\x34\x20\x31\x34\x32\x2e\x36\x30\x31\x20\x2d\x36\x35\ \x2e\x32\x43\x31\x34\x34\x2e\x30\x30\x31\x20\x2d\x36\x35\x20\x31\ \x35\x37\x2e\x30\x30\x31\x20\x2d\x35\x30\x20\x31\x36\x30\x2e\x34\ \x30\x31\x20\x2d\x33\x39\x2e\x38\x43\x31\x36\x33\x2e\x38\x30\x31\ \x20\x2d\x32\x39\x2e\x36\x20\x31\x36\x39\x2e\x38\x30\x31\x20\x2d\ \x32\x35\x2e\x36\x20\x31\x37\x36\x2e\x30\x30\x31\x20\x2d\x31\x39\ \x2e\x36\x43\x31\x38\x32\x2e\x32\x30\x31\x20\x2d\x31\x33\x2e\x36\ \x20\x31\x38\x31\x2e\x34\x30\x31\x20\x31\x30\x2e\x36\x20\x31\x38\ \x31\x2e\x34\x30\x31\x20\x31\x30\x2e\x36\x43\x31\x38\x31\x2e\x30\ \x30\x31\x20\x31\x39\x2e\x34\x20\x31\x38\x37\x2e\x30\x30\x31\x20\ \x33\x30\x20\x31\x38\x37\x2e\x30\x30\x31\x20\x33\x30\x43\x31\x38\ \x39\x2e\x30\x30\x31\x20\x33\x33\x2e\x38\x20\x31\x38\x34\x2e\x38\ \x30\x31\x20\x35\x32\x20\x31\x38\x34\x2e\x38\x30\x31\x20\x35\x32\ \x43\x31\x38\x32\x2e\x38\x30\x31\x20\x35\x34\x2e\x32\x20\x31\x38\ \x34\x2e\x32\x30\x31\x20\x35\x35\x20\x31\x38\x34\x2e\x32\x30\x31\ \x20\x35\x35\x43\x31\x38\x35\x2e\x32\x30\x31\x20\x35\x36\x2e\x32\ \x20\x31\x39\x32\x2e\x30\x30\x31\x20\x36\x39\x2e\x34\x20\x31\x39\ \x32\x2e\x30\x30\x31\x20\x36\x39\x2e\x34\x43\x31\x39\x30\x2e\x32\ \x30\x31\x20\x36\x39\x2e\x32\x20\x31\x39\x33\x2e\x38\x30\x31\x20\ \x37\x32\x2e\x38\x20\x31\x39\x33\x2e\x38\x30\x31\x20\x37\x32\x2e\ \x38\x43\x31\x39\x39\x2e\x30\x30\x31\x20\x37\x38\x2e\x38\x20\x31\ \x39\x32\x2e\x36\x30\x31\x20\x37\x35\x2e\x38\x20\x31\x39\x32\x2e\ \x36\x30\x31\x20\x37\x35\x2e\x38\x43\x31\x38\x36\x2e\x36\x30\x31\ \x20\x37\x34\x2e\x32\x20\x31\x39\x33\x2e\x36\x30\x31\x20\x38\x34\ \x20\x31\x39\x33\x2e\x36\x30\x31\x20\x38\x34\x43\x31\x39\x34\x2e\ \x38\x30\x31\x20\x38\x35\x2e\x38\x20\x31\x38\x35\x2e\x38\x30\x31\ \x20\x38\x31\x2e\x32\x20\x31\x38\x35\x2e\x38\x30\x31\x20\x38\x31\ \x2e\x32\x43\x31\x37\x36\x2e\x36\x30\x31\x20\x38\x30\x2e\x36\x20\ \x31\x38\x38\x2e\x32\x30\x31\x20\x38\x37\x2e\x38\x20\x31\x38\x38\ \x2e\x32\x30\x31\x20\x38\x37\x2e\x38\x43\x31\x39\x36\x2e\x38\x30\ \x31\x20\x39\x35\x20\x31\x38\x35\x2e\x34\x30\x31\x20\x39\x30\x2e\ \x36\x20\x31\x38\x35\x2e\x34\x30\x31\x20\x39\x30\x2e\x36\x43\x31\ \x38\x30\x2e\x38\x30\x31\x20\x38\x38\x2e\x38\x20\x31\x38\x34\x2e\ \x30\x30\x31\x20\x39\x35\x2e\x36\x20\x31\x38\x34\x2e\x30\x30\x31\ \x20\x39\x35\x2e\x36\x43\x31\x38\x37\x2e\x32\x30\x31\x20\x39\x37\ \x2e\x32\x20\x32\x30\x34\x2e\x34\x30\x31\x20\x31\x30\x34\x2e\x32\ \x20\x32\x30\x34\x2e\x34\x30\x31\x20\x31\x30\x34\x2e\x32\x43\x32\ \x30\x34\x2e\x38\x30\x31\x20\x31\x30\x38\x2e\x30\x30\x31\x20\x32\ \x30\x31\x2e\x38\x30\x31\x20\x31\x31\x33\x2e\x30\x30\x31\x20\x32\ \x30\x31\x2e\x38\x30\x31\x20\x31\x31\x33\x2e\x30\x30\x31\x43\x32\ \x30\x32\x2e\x32\x30\x31\x20\x31\x31\x37\x2e\x30\x30\x31\x20\x32\ \x30\x30\x2e\x30\x30\x31\x20\x31\x32\x30\x2e\x34\x30\x31\x20\x32\ \x30\x30\x2e\x30\x30\x31\x20\x31\x32\x30\x2e\x34\x30\x31\x43\x31\ \x39\x38\x2e\x38\x30\x31\x20\x31\x32\x38\x2e\x36\x30\x31\x20\x31\ \x39\x38\x2e\x32\x30\x31\x20\x31\x32\x39\x2e\x34\x30\x31\x20\x31\ \x39\x38\x2e\x32\x30\x31\x20\x31\x32\x39\x2e\x34\x30\x31\x43\x31\ \x39\x34\x2e\x30\x30\x31\x20\x31\x32\x39\x2e\x36\x30\x31\x20\x31\ \x38\x36\x2e\x36\x30\x31\x20\x31\x34\x33\x2e\x34\x30\x31\x20\x31\ \x38\x36\x2e\x36\x30\x31\x20\x31\x34\x33\x2e\x34\x30\x31\x43\x31\ \x38\x34\x2e\x38\x30\x31\x20\x31\x34\x36\x2e\x30\x30\x31\x20\x31\ \x37\x34\x2e\x36\x30\x31\x20\x31\x35\x38\x2e\x30\x30\x31\x20\x31\ \x37\x34\x2e\x36\x30\x31\x20\x31\x35\x38\x2e\x30\x30\x31\x43\x31\ \x37\x32\x2e\x36\x30\x31\x20\x31\x36\x35\x2e\x30\x30\x31\x20\x31\ \x35\x34\x2e\x36\x30\x31\x20\x31\x35\x37\x2e\x38\x30\x31\x20\x31\ \x35\x34\x2e\x36\x30\x31\x20\x31\x35\x37\x2e\x38\x30\x31\x43\x31\ \x34\x38\x2e\x30\x30\x31\x20\x31\x36\x31\x2e\x32\x30\x31\x20\x31\ \x35\x30\x2e\x30\x30\x31\x20\x31\x35\x37\x2e\x38\x30\x31\x20\x31\ \x35\x30\x2e\x30\x30\x31\x20\x31\x35\x37\x2e\x38\x30\x31\x43\x31\ \x34\x39\x2e\x36\x30\x31\x20\x31\x35\x35\x2e\x36\x30\x31\x20\x31\ \x35\x34\x2e\x34\x30\x31\x20\x31\x34\x39\x2e\x36\x30\x31\x20\x31\ \x35\x34\x2e\x34\x30\x31\x20\x31\x34\x39\x2e\x36\x30\x31\x43\x31\ \x36\x31\x2e\x34\x30\x31\x20\x31\x34\x37\x2e\x30\x30\x31\x20\x31\ \x35\x38\x2e\x38\x30\x31\x20\x31\x33\x36\x2e\x32\x30\x31\x20\x31\ \x35\x38\x2e\x38\x30\x31\x20\x31\x33\x36\x2e\x32\x30\x31\x43\x31\ \x36\x32\x2e\x38\x30\x31\x20\x31\x33\x34\x2e\x38\x30\x31\x20\x31\ \x35\x31\x2e\x36\x30\x31\x20\x31\x33\x32\x2e\x30\x30\x31\x20\x31\ \x35\x31\x2e\x38\x30\x31\x20\x31\x33\x30\x2e\x38\x30\x31\x43\x31\ \x35\x32\x2e\x30\x30\x31\x20\x31\x32\x39\x2e\x36\x30\x31\x20\x31\ \x35\x37\x2e\x38\x30\x31\x20\x31\x32\x38\x2e\x32\x30\x31\x20\x31\ \x35\x37\x2e\x38\x30\x31\x20\x31\x32\x38\x2e\x32\x30\x31\x43\x31\ \x36\x35\x2e\x38\x30\x31\x20\x31\x32\x36\x2e\x32\x30\x31\x20\x31\ \x36\x31\x2e\x34\x30\x31\x20\x31\x32\x33\x2e\x38\x30\x31\x20\x31\ \x36\x31\x2e\x34\x30\x31\x20\x31\x32\x33\x2e\x38\x30\x31\x43\x31\ \x36\x30\x2e\x38\x30\x31\x20\x31\x31\x39\x2e\x38\x30\x31\x20\x31\ \x36\x33\x2e\x38\x30\x31\x20\x31\x31\x34\x2e\x32\x30\x31\x20\x31\ \x36\x33\x2e\x38\x30\x31\x20\x31\x31\x34\x2e\x32\x30\x31\x43\x31\ \x37\x35\x2e\x34\x30\x31\x20\x31\x31\x33\x2e\x34\x30\x31\x20\x31\ \x36\x33\x2e\x38\x30\x31\x20\x39\x37\x2e\x32\x20\x31\x36\x33\x2e\ \x38\x30\x31\x20\x39\x37\x2e\x32\x43\x31\x35\x33\x2e\x30\x30\x31\ \x20\x38\x39\x2e\x36\x20\x31\x35\x32\x2e\x30\x30\x31\x20\x38\x33\ \x2e\x38\x20\x31\x35\x32\x2e\x30\x30\x31\x20\x38\x33\x2e\x38\x43\ \x31\x36\x34\x2e\x36\x30\x31\x20\x37\x35\x2e\x36\x20\x31\x35\x36\ \x2e\x34\x30\x31\x20\x36\x33\x2e\x32\x20\x31\x35\x36\x2e\x36\x30\ \x31\x20\x35\x39\x2e\x36\x43\x31\x35\x36\x2e\x38\x30\x31\x20\x35\ \x36\x20\x31\x35\x38\x2e\x30\x30\x31\x20\x33\x34\x2e\x34\x20\x31\ \x35\x38\x2e\x30\x30\x31\x20\x33\x34\x2e\x34\x43\x31\x35\x36\x2e\ \x30\x30\x31\x20\x32\x38\x2e\x32\x20\x31\x35\x33\x2e\x30\x30\x31\ \x20\x31\x34\x2e\x36\x20\x31\x35\x33\x2e\x30\x30\x31\x20\x31\x34\ \x2e\x36\x43\x31\x35\x35\x2e\x32\x30\x31\x20\x39\x2e\x34\x20\x31\ \x36\x32\x2e\x36\x30\x31\x20\x2d\x33\x2e\x32\x20\x31\x36\x32\x2e\ \x36\x30\x31\x20\x2d\x33\x2e\x32\x43\x31\x36\x35\x2e\x34\x30\x31\ \x20\x2d\x37\x2e\x34\x20\x31\x37\x34\x2e\x32\x30\x31\x20\x2d\x31\ \x32\x2e\x32\x20\x31\x37\x32\x2e\x30\x30\x31\x20\x2d\x31\x35\x2e\ \x32\x43\x31\x36\x39\x2e\x38\x30\x31\x20\x2d\x31\x38\x2e\x32\x20\ \x31\x36\x32\x2e\x30\x30\x31\x20\x2d\x31\x36\x2e\x34\x20\x31\x36\ \x32\x2e\x30\x30\x31\x20\x2d\x31\x36\x2e\x34\x43\x31\x35\x34\x2e\ \x32\x30\x31\x20\x2d\x31\x37\x2e\x38\x20\x31\x35\x34\x2e\x38\x30\ \x31\x20\x2d\x31\x32\x2e\x36\x20\x31\x35\x34\x2e\x38\x30\x31\x20\ \x2d\x31\x32\x2e\x36\x43\x31\x35\x33\x2e\x32\x30\x31\x20\x2d\x31\ \x31\x2e\x36\x20\x31\x35\x32\x2e\x34\x30\x31\x20\x2d\x36\x2e\x36\ \x20\x31\x35\x32\x2e\x34\x30\x31\x20\x2d\x36\x2e\x36\x43\x31\x35\ \x31\x2e\x36\x38\x20\x31\x2e\x33\x33\x33\x20\x31\x34\x32\x2e\x38\ \x30\x31\x20\x37\x2e\x36\x20\x31\x34\x32\x2e\x38\x30\x31\x20\x37\ \x2e\x36\x43\x31\x33\x31\x2e\x36\x30\x31\x20\x31\x33\x2e\x38\x20\ \x31\x34\x30\x2e\x38\x30\x31\x20\x31\x37\x2e\x38\x20\x31\x34\x30\ \x2e\x38\x30\x31\x20\x31\x37\x2e\x38\x43\x31\x34\x36\x2e\x38\x30\ \x31\x20\x32\x34\x2e\x34\x20\x31\x33\x37\x2e\x30\x30\x31\x20\x32\ \x34\x2e\x36\x20\x31\x33\x37\x2e\x30\x30\x31\x20\x32\x34\x2e\x36\ \x43\x31\x32\x36\x2e\x30\x30\x31\x20\x32\x32\x2e\x38\x20\x31\x33\ \x34\x2e\x32\x30\x31\x20\x33\x33\x20\x31\x33\x34\x2e\x32\x30\x31\ \x20\x33\x33\x43\x31\x34\x35\x2e\x30\x30\x31\x20\x34\x35\x2e\x38\ \x20\x31\x34\x32\x2e\x30\x30\x31\x20\x34\x38\x2e\x36\x20\x31\x34\ \x32\x2e\x30\x30\x31\x20\x34\x38\x2e\x36\x43\x31\x33\x31\x2e\x38\ \x30\x31\x20\x34\x39\x2e\x36\x20\x31\x34\x34\x2e\x34\x30\x31\x20\ \x35\x38\x2e\x38\x20\x31\x34\x34\x2e\x34\x30\x31\x20\x35\x38\x2e\ \x38\x43\x31\x34\x34\x2e\x34\x30\x31\x20\x35\x38\x2e\x38\x20\x31\ \x34\x33\x2e\x36\x30\x31\x20\x35\x36\x2e\x38\x20\x31\x34\x33\x2e\ \x38\x30\x31\x20\x35\x38\x2e\x36\x43\x31\x34\x34\x2e\x30\x30\x31\ \x20\x36\x30\x2e\x34\x20\x31\x34\x37\x2e\x30\x30\x31\x20\x36\x34\ \x2e\x36\x20\x31\x34\x37\x2e\x38\x30\x31\x20\x36\x36\x2e\x36\x43\ \x31\x34\x38\x2e\x36\x30\x31\x20\x36\x38\x2e\x36\x20\x31\x34\x34\ \x2e\x36\x30\x31\x20\x36\x38\x2e\x38\x20\x31\x34\x34\x2e\x36\x30\ \x31\x20\x36\x38\x2e\x38\x43\x31\x34\x35\x2e\x32\x30\x31\x20\x37\ \x38\x2e\x34\x20\x31\x32\x39\x2e\x38\x30\x31\x20\x37\x34\x2e\x32\ \x20\x31\x32\x39\x2e\x38\x30\x31\x20\x37\x34\x2e\x32\x43\x31\x32\ \x39\x2e\x38\x30\x31\x20\x37\x34\x2e\x32\x20\x31\x32\x39\x2e\x38\ \x30\x31\x20\x37\x34\x2e\x32\x20\x31\x32\x38\x2e\x32\x30\x31\x20\ \x37\x34\x2e\x34\x43\x31\x32\x36\x2e\x36\x30\x31\x20\x37\x34\x2e\ \x36\x20\x31\x31\x35\x2e\x34\x30\x31\x20\x37\x33\x2e\x38\x20\x31\ \x30\x39\x2e\x36\x30\x31\x20\x37\x31\x2e\x36\x43\x31\x30\x33\x2e\ \x38\x30\x31\x20\x36\x39\x2e\x34\x20\x39\x37\x2e\x30\x30\x31\x20\ \x36\x39\x2e\x34\x20\x39\x37\x2e\x30\x30\x31\x20\x36\x39\x2e\x34\ \x43\x39\x37\x2e\x30\x30\x31\x20\x36\x39\x2e\x34\x20\x39\x33\x2e\ \x30\x30\x31\x20\x37\x31\x2e\x32\x20\x38\x35\x2e\x34\x20\x37\x31\ \x43\x37\x37\x2e\x38\x20\x37\x30\x2e\x38\x20\x36\x39\x2e\x38\x20\ \x37\x33\x2e\x36\x20\x36\x39\x2e\x38\x20\x37\x33\x2e\x36\x43\x36\ \x35\x2e\x34\x20\x37\x33\x2e\x32\x20\x37\x34\x20\x36\x38\x2e\x38\ \x20\x37\x34\x2e\x32\x20\x36\x39\x43\x37\x34\x2e\x34\x20\x36\x39\ \x2e\x32\x20\x38\x30\x20\x36\x33\x2e\x36\x20\x37\x32\x20\x36\x34\ \x2e\x32\x43\x35\x30\x2e\x32\x30\x33\x20\x36\x35\x2e\x38\x33\x35\ \x20\x33\x39\x2e\x34\x20\x35\x35\x2e\x36\x20\x33\x39\x2e\x34\x20\ \x35\x35\x2e\x36\x43\x33\x37\x2e\x34\x20\x35\x34\x2e\x32\x20\x33\ \x34\x2e\x38\x20\x35\x31\x2e\x34\x20\x33\x34\x2e\x38\x20\x35\x31\ \x2e\x34\x43\x32\x34\x2e\x38\x20\x34\x39\x2e\x34\x20\x33\x36\x2e\ \x32\x20\x36\x33\x2e\x38\x20\x33\x36\x2e\x32\x20\x36\x33\x2e\x38\ \x43\x33\x37\x2e\x34\x20\x36\x35\x2e\x32\x20\x33\x36\x20\x36\x36\ \x2e\x32\x20\x33\x36\x20\x36\x36\x2e\x32\x43\x33\x35\x2e\x32\x20\ \x36\x34\x2e\x36\x20\x32\x37\x2e\x34\x20\x35\x39\x2e\x32\x20\x32\ \x37\x2e\x34\x20\x35\x39\x2e\x32\x43\x32\x34\x2e\x35\x38\x39\x20\ \x35\x38\x2e\x32\x32\x37\x20\x32\x33\x2e\x32\x32\x36\x20\x35\x36\ \x2e\x38\x39\x33\x20\x32\x30\x2e\x38\x39\x35\x20\x35\x34\x2e\x34\ \x30\x37\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x34\x63\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x33\x20\x34\x32\x2e\x38\ \x43\x2d\x33\x20\x34\x32\x2e\x38\x20\x38\x2e\x36\x20\x34\x38\x2e\ \x34\x20\x31\x31\x2e\x32\x20\x35\x31\x2e\x32\x43\x31\x33\x2e\x38\ \x20\x35\x34\x20\x32\x37\x2e\x38\x20\x36\x35\x2e\x34\x20\x32\x37\ \x2e\x38\x20\x36\x35\x2e\x34\x43\x32\x37\x2e\x38\x20\x36\x35\x2e\ \x34\x20\x32\x32\x2e\x34\x20\x36\x33\x2e\x34\x20\x31\x39\x2e\x38\ \x20\x36\x31\x2e\x36\x43\x31\x37\x2e\x32\x20\x35\x39\x2e\x38\x20\ \x36\x2e\x34\x20\x35\x31\x2e\x36\x20\x36\x2e\x34\x20\x35\x31\x2e\ \x36\x43\x36\x2e\x34\x20\x35\x31\x2e\x36\x20\x32\x2e\x36\x20\x34\ \x35\x2e\x36\x20\x2d\x33\x20\x34\x32\x2e\x38\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x39\x39\ \x63\x63\x33\x32\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x2d\x36\x31\x2e\x30\x30\x39\x20\x31\x31\x2e\x36\x30\x33\ \x43\x2d\x36\x30\x2e\x36\x37\x32\x20\x31\x31\x2e\x34\x35\x35\x20\ \x2d\x36\x31\x2e\x31\x39\x36\x20\x38\x2e\x37\x34\x33\x20\x2d\x36\ \x31\x2e\x34\x20\x38\x2e\x32\x43\x2d\x36\x32\x2e\x34\x32\x32\x20\ \x35\x2e\x34\x37\x34\x20\x2d\x37\x31\x2e\x34\x20\x34\x20\x2d\x37\ \x31\x2e\x34\x20\x34\x43\x2d\x37\x31\x2e\x36\x32\x37\x20\x35\x2e\ \x33\x36\x35\x20\x2d\x37\x31\x2e\x36\x38\x32\x20\x36\x2e\x39\x36\ \x31\x20\x2d\x37\x31\x2e\x35\x37\x36\x20\x38\x2e\x35\x39\x39\x43\ \x2d\x37\x31\x2e\x35\x37\x36\x20\x38\x2e\x35\x39\x39\x20\x2d\x36\ \x36\x2e\x37\x30\x38\x20\x31\x34\x2e\x31\x31\x38\x20\x2d\x36\x31\ \x2e\x30\x30\x39\x20\x31\x31\x2e\x36\x30\x33\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x36\x35\ \x39\x39\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x2d\x36\x31\x2e\x30\x30\x39\x20\x31\x31\x2e\x34\x30\x33\ \x43\x2d\x36\x31\x2e\x34\x35\x38\x20\x31\x31\x2e\x35\x36\x31\x20\ \x2d\x36\x31\x2e\x30\x32\x34\x20\x38\x2e\x36\x36\x39\x20\x2d\x36\ \x31\x2e\x32\x20\x38\x2e\x32\x43\x2d\x36\x32\x2e\x32\x32\x32\x20\ \x35\x2e\x34\x37\x34\x20\x2d\x37\x31\x2e\x34\x20\x33\x2e\x39\x20\ \x2d\x37\x31\x2e\x34\x20\x33\x2e\x39\x43\x2d\x37\x31\x2e\x36\x32\ \x37\x20\x35\x2e\x32\x36\x35\x20\x2d\x37\x31\x2e\x36\x38\x32\x20\ \x36\x2e\x38\x36\x31\x20\x2d\x37\x31\x2e\x35\x37\x36\x20\x38\x2e\ \x34\x39\x39\x43\x2d\x37\x31\x2e\x35\x37\x36\x20\x38\x2e\x34\x39\ \x39\x20\x2d\x36\x37\x2e\x33\x30\x38\x20\x31\x33\x2e\x36\x31\x38\ \x20\x2d\x36\x31\x2e\x30\x30\x39\x20\x31\x31\x2e\x34\x30\x33\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x2d\x36\x35\x2e\x34\x20\x31\x31\x2e\x35\ \x34\x36\x43\x2d\x36\x36\x2e\x30\x32\x35\x20\x31\x31\x2e\x35\x34\ \x36\x20\x2d\x36\x36\x2e\x35\x33\x31\x20\x31\x30\x2e\x34\x30\x36\ \x20\x2d\x36\x36\x2e\x35\x33\x31\x20\x39\x43\x2d\x36\x36\x2e\x35\ \x33\x31\x20\x37\x2e\x35\x39\x35\x20\x2d\x36\x36\x2e\x30\x32\x35\ \x20\x36\x2e\x34\x35\x35\x20\x2d\x36\x35\x2e\x34\x20\x36\x2e\x34\ \x35\x35\x43\x2d\x36\x34\x2e\x37\x37\x35\x20\x36\x2e\x34\x35\x35\ \x20\x2d\x36\x34\x2e\x32\x36\x38\x20\x37\x2e\x35\x39\x35\x20\x2d\ \x36\x34\x2e\x32\x36\x38\x20\x39\x43\x2d\x36\x34\x2e\x32\x36\x38\ \x20\x31\x30\x2e\x34\x30\x36\x20\x2d\x36\x34\x2e\x37\x37\x35\x20\ \x31\x31\x2e\x35\x34\x36\x20\x2d\x36\x35\x2e\x34\x20\x31\x31\x2e\ \x35\x34\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x36\x35\x2e\x34\x20\ \x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x31\x31\x20\x31\x30\x39\ \x2e\x36\x30\x31\x43\x2d\x31\x31\x31\x20\x31\x30\x39\x2e\x36\x30\ \x31\x20\x2d\x31\x31\x36\x2e\x36\x20\x31\x31\x39\x2e\x36\x30\x31\ \x20\x2d\x39\x31\x2e\x38\x20\x31\x31\x33\x2e\x36\x30\x31\x43\x2d\ \x39\x31\x2e\x38\x20\x31\x31\x33\x2e\x36\x30\x31\x20\x2d\x37\x37\ \x2e\x38\x20\x31\x31\x32\x2e\x34\x30\x31\x20\x2d\x37\x35\x2e\x34\ \x20\x31\x31\x30\x2e\x30\x30\x31\x43\x2d\x37\x34\x2e\x32\x20\x31\ \x31\x30\x2e\x38\x30\x31\x20\x2d\x36\x35\x2e\x38\x33\x34\x20\x31\ \x31\x33\x2e\x37\x33\x34\x20\x2d\x36\x33\x20\x31\x31\x34\x2e\x34\ \x30\x31\x43\x2d\x35\x36\x2e\x32\x20\x31\x31\x36\x2e\x30\x30\x31\ \x20\x2d\x34\x37\x2e\x38\x20\x31\x30\x36\x20\x2d\x34\x37\x2e\x38\ \x20\x31\x30\x36\x43\x2d\x34\x37\x2e\x38\x20\x31\x30\x36\x20\x2d\ \x34\x33\x2e\x32\x20\x39\x35\x2e\x35\x20\x2d\x34\x30\x2e\x34\x20\ \x39\x35\x2e\x35\x43\x2d\x33\x37\x2e\x36\x20\x39\x35\x2e\x35\x20\ \x2d\x34\x30\x2e\x38\x20\x39\x37\x2e\x31\x20\x2d\x34\x30\x2e\x38\ \x20\x39\x37\x2e\x31\x43\x2d\x34\x30\x2e\x38\x20\x39\x37\x2e\x31\ \x20\x2d\x34\x37\x2e\x34\x20\x31\x30\x37\x2e\x32\x30\x31\x20\x2d\ \x34\x37\x20\x31\x30\x38\x2e\x38\x30\x31\x43\x2d\x34\x37\x20\x31\ \x30\x38\x2e\x38\x30\x31\x20\x2d\x35\x32\x2e\x32\x20\x31\x32\x38\ \x2e\x38\x30\x31\x20\x2d\x36\x38\x2e\x32\x20\x31\x32\x39\x2e\x36\ \x30\x31\x43\x2d\x36\x38\x2e\x32\x20\x31\x32\x39\x2e\x36\x30\x31\ \x20\x2d\x38\x34\x2e\x33\x35\x20\x31\x33\x30\x2e\x35\x35\x31\x20\ \x2d\x38\x33\x20\x31\x33\x36\x2e\x34\x30\x31\x43\x2d\x38\x33\x20\ \x31\x33\x36\x2e\x34\x30\x31\x20\x2d\x37\x34\x2e\x32\x20\x31\x33\ \x34\x2e\x30\x30\x31\x20\x2d\x37\x31\x2e\x38\x20\x31\x33\x36\x2e\ \x34\x30\x31\x43\x2d\x37\x31\x2e\x38\x20\x31\x33\x36\x2e\x34\x30\ \x31\x20\x2d\x36\x31\x20\x31\x33\x36\x2e\x30\x30\x31\x20\x2d\x36\ \x39\x20\x31\x34\x32\x2e\x34\x30\x31\x4c\x2d\x37\x35\x2e\x38\x20\ \x31\x35\x34\x2e\x30\x30\x31\x43\x2d\x37\x35\x2e\x38\x20\x31\x35\ \x34\x2e\x30\x30\x31\x20\x2d\x37\x35\x2e\x36\x36\x20\x31\x35\x37\ \x2e\x39\x31\x39\x20\x2d\x38\x35\x2e\x38\x20\x31\x35\x34\x2e\x34\ \x30\x31\x43\x2d\x39\x35\x2e\x36\x20\x31\x35\x31\x2e\x30\x30\x31\ \x20\x2d\x31\x30\x35\x2e\x39\x20\x31\x33\x38\x2e\x31\x30\x31\x20\ \x2d\x31\x30\x35\x2e\x39\x20\x31\x33\x38\x2e\x31\x30\x31\x43\x2d\ \x31\x30\x35\x2e\x39\x20\x31\x33\x38\x2e\x31\x30\x31\x20\x2d\x31\ \x32\x31\x2e\x38\x35\x20\x31\x32\x33\x2e\x35\x35\x31\x20\x2d\x31\ \x31\x31\x20\x31\x30\x39\x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x65\x35\x39\ \x39\x39\x39\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x2d\x31\x31\x32\x2e\x32\x20\x31\x31\x33\x2e\x36\x30\x31\x43\ \x2d\x31\x31\x32\x2e\x32\x20\x31\x31\x33\x2e\x36\x30\x31\x20\x2d\ \x31\x31\x34\x2e\x32\x20\x31\x32\x33\x2e\x32\x30\x31\x20\x2d\x37\ \x37\x2e\x34\x20\x31\x31\x32\x2e\x38\x30\x31\x43\x2d\x37\x37\x2e\ \x34\x20\x31\x31\x32\x2e\x38\x30\x31\x20\x2d\x37\x33\x20\x31\x31\ \x32\x2e\x38\x30\x31\x20\x2d\x37\x30\x2e\x36\x20\x31\x31\x33\x2e\ \x36\x30\x31\x43\x2d\x36\x38\x2e\x32\x20\x31\x31\x34\x2e\x34\x30\ \x31\x20\x2d\x35\x36\x2e\x32\x20\x31\x31\x37\x2e\x32\x30\x31\x20\ \x2d\x35\x34\x2e\x32\x20\x31\x31\x36\x2e\x30\x30\x31\x43\x2d\x35\ \x34\x2e\x32\x20\x31\x31\x36\x2e\x30\x30\x31\x20\x2d\x36\x31\x2e\ \x34\x20\x31\x32\x39\x2e\x36\x30\x31\x20\x2d\x37\x33\x20\x31\x32\ \x38\x2e\x30\x30\x31\x43\x2d\x37\x33\x20\x31\x32\x38\x2e\x30\x30\ \x31\x20\x2d\x38\x36\x2e\x32\x20\x31\x32\x39\x2e\x36\x30\x31\x20\ \x2d\x38\x35\x2e\x38\x20\x31\x33\x34\x2e\x34\x30\x31\x43\x2d\x38\ \x35\x2e\x38\x20\x31\x33\x34\x2e\x34\x30\x31\x20\x2d\x38\x31\x2e\ \x38\x20\x31\x34\x31\x2e\x36\x30\x31\x20\x2d\x37\x37\x20\x31\x34\ \x34\x2e\x30\x30\x31\x43\x2d\x37\x37\x20\x31\x34\x34\x2e\x30\x30\ \x31\x20\x2d\x37\x34\x2e\x32\x20\x31\x34\x36\x2e\x34\x30\x31\x20\ \x2d\x37\x34\x2e\x36\x20\x31\x34\x39\x2e\x36\x30\x31\x43\x2d\x37\ \x35\x20\x31\x35\x32\x2e\x38\x30\x31\x20\x2d\x37\x37\x2e\x38\x20\ \x31\x35\x34\x2e\x34\x30\x31\x20\x2d\x37\x39\x2e\x38\x20\x31\x35\ \x35\x2e\x32\x30\x31\x43\x2d\x38\x31\x2e\x38\x20\x31\x35\x36\x2e\ \x30\x30\x31\x20\x2d\x38\x35\x20\x31\x35\x32\x2e\x38\x30\x31\x20\ \x2d\x38\x36\x2e\x36\x20\x31\x35\x32\x2e\x38\x30\x31\x43\x2d\x38\ \x38\x2e\x32\x20\x31\x35\x32\x2e\x38\x30\x31\x20\x2d\x39\x36\x2e\ \x36\x20\x31\x34\x36\x2e\x34\x30\x31\x20\x2d\x31\x30\x31\x20\x31\ \x34\x31\x2e\x36\x30\x31\x43\x2d\x31\x30\x35\x2e\x34\x20\x31\x33\ \x36\x2e\x38\x30\x31\x20\x2d\x31\x31\x33\x2e\x38\x20\x31\x32\x34\ \x2e\x38\x30\x31\x20\x2d\x31\x31\x33\x2e\x34\x20\x31\x32\x32\x2e\ \x30\x30\x31\x43\x2d\x31\x31\x33\x20\x31\x31\x39\x2e\x32\x30\x31\ \x20\x2d\x31\x31\x32\x2e\x32\x20\x31\x31\x33\x2e\x36\x30\x31\x20\ \x2d\x31\x31\x32\x2e\x32\x20\x31\x31\x33\x2e\x36\x30\x31\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x62\x32\x36\x35\x36\x35\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x31\x30\x39\x20\x31\x33\x31\x2e\x30\x35\ \x31\x43\x2d\x31\x30\x36\x2e\x34\x20\x31\x33\x35\x2e\x30\x30\x31\ \x20\x2d\x31\x30\x33\x2e\x32\x20\x31\x33\x39\x2e\x32\x30\x31\x20\ \x2d\x31\x30\x31\x20\x31\x34\x31\x2e\x36\x30\x31\x43\x2d\x39\x36\ \x2e\x36\x20\x31\x34\x36\x2e\x34\x30\x31\x20\x2d\x38\x38\x2e\x32\ \x20\x31\x35\x32\x2e\x38\x30\x31\x20\x2d\x38\x36\x2e\x36\x20\x31\ \x35\x32\x2e\x38\x30\x31\x43\x2d\x38\x35\x20\x31\x35\x32\x2e\x38\ \x30\x31\x20\x2d\x38\x31\x2e\x38\x20\x31\x35\x36\x2e\x30\x30\x31\ \x20\x2d\x37\x39\x2e\x38\x20\x31\x35\x35\x2e\x32\x30\x31\x43\x2d\ \x37\x37\x2e\x38\x20\x31\x35\x34\x2e\x34\x30\x31\x20\x2d\x37\x35\ \x20\x31\x35\x32\x2e\x38\x30\x31\x20\x2d\x37\x34\x2e\x36\x20\x31\ \x34\x39\x2e\x36\x30\x31\x43\x2d\x37\x34\x2e\x32\x20\x31\x34\x36\ \x2e\x34\x30\x31\x20\x2d\x37\x37\x20\x31\x34\x34\x2e\x30\x30\x31\ \x20\x2d\x37\x37\x20\x31\x34\x34\x2e\x30\x30\x31\x43\x2d\x38\x30\ \x2e\x30\x36\x36\x20\x31\x34\x32\x2e\x34\x36\x38\x20\x2d\x38\x32\ \x2e\x38\x30\x36\x20\x31\x33\x38\x2e\x39\x37\x36\x20\x2d\x38\x34\ \x2e\x33\x38\x35\x20\x31\x33\x36\x2e\x36\x35\x33\x43\x2d\x38\x34\ \x2e\x33\x38\x35\x20\x31\x33\x36\x2e\x36\x35\x33\x20\x2d\x38\x34\ \x2e\x32\x20\x31\x33\x39\x2e\x32\x30\x31\x20\x2d\x38\x39\x2e\x34\ \x20\x31\x33\x38\x2e\x34\x30\x31\x43\x2d\x39\x34\x2e\x36\x20\x31\ \x33\x37\x2e\x36\x30\x31\x20\x2d\x39\x39\x2e\x38\x20\x31\x33\x34\ \x2e\x38\x30\x31\x20\x2d\x31\x30\x31\x2e\x34\x20\x31\x33\x31\x2e\ \x36\x30\x31\x43\x2d\x31\x30\x33\x20\x31\x32\x38\x2e\x34\x30\x31\ \x20\x2d\x31\x30\x35\x2e\x34\x20\x31\x32\x36\x2e\x30\x30\x31\x20\ \x2d\x31\x30\x33\x2e\x38\x20\x31\x32\x39\x2e\x36\x30\x31\x43\x2d\ \x31\x30\x32\x2e\x32\x20\x31\x33\x33\x2e\x32\x30\x31\x20\x2d\x39\ \x39\x2e\x38\x20\x31\x33\x36\x2e\x38\x30\x31\x20\x2d\x39\x38\x2e\ \x32\x20\x31\x33\x37\x2e\x32\x30\x31\x43\x2d\x39\x36\x2e\x36\x20\ \x31\x33\x37\x2e\x36\x30\x31\x20\x2d\x39\x37\x20\x31\x33\x38\x2e\ \x38\x30\x31\x20\x2d\x39\x39\x2e\x34\x20\x31\x33\x38\x2e\x34\x30\ \x31\x43\x2d\x31\x30\x31\x2e\x38\x20\x31\x33\x38\x2e\x30\x30\x31\ \x20\x2d\x31\x30\x34\x2e\x36\x20\x31\x33\x37\x2e\x36\x30\x31\x20\ \x2d\x31\x30\x39\x20\x31\x33\x32\x2e\x34\x30\x31\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x39\ \x39\x32\x36\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x31\x31\x31\x2e\x36\x20\x31\x31\x30\x2e\x30\x30\ \x31\x43\x2d\x31\x31\x31\x2e\x36\x20\x31\x31\x30\x2e\x30\x30\x31\ \x20\x2d\x31\x30\x39\x2e\x38\x20\x39\x36\x2e\x34\x20\x2d\x31\x30\ \x38\x2e\x36\x20\x39\x32\x2e\x34\x43\x2d\x31\x30\x38\x2e\x36\x20\ \x39\x32\x2e\x34\x20\x2d\x31\x30\x39\x2e\x34\x20\x38\x35\x2e\x36\ \x20\x2d\x31\x30\x37\x20\x38\x31\x2e\x34\x43\x2d\x31\x30\x34\x2e\ \x36\x20\x37\x37\x2e\x32\x20\x2d\x31\x30\x32\x2e\x36\x20\x37\x31\ \x20\x2d\x39\x39\x2e\x36\x20\x36\x35\x2e\x36\x43\x2d\x39\x36\x2e\ \x36\x20\x36\x30\x2e\x32\x20\x2d\x39\x36\x2e\x34\x20\x35\x36\x2e\ \x32\x20\x2d\x39\x32\x2e\x34\x20\x35\x34\x2e\x36\x43\x2d\x38\x38\ \x2e\x34\x20\x35\x33\x20\x2d\x38\x32\x2e\x34\x20\x34\x34\x2e\x34\ \x20\x2d\x37\x39\x2e\x36\x20\x34\x33\x2e\x34\x43\x2d\x37\x36\x2e\ \x38\x20\x34\x32\x2e\x34\x20\x2d\x37\x37\x20\x34\x33\x2e\x32\x20\ \x2d\x37\x37\x20\x34\x33\x2e\x32\x43\x2d\x37\x37\x20\x34\x33\x2e\ \x32\x20\x2d\x37\x30\x2e\x32\x20\x32\x38\x2e\x34\x20\x2d\x35\x36\ \x2e\x36\x20\x33\x32\x2e\x34\x43\x2d\x35\x36\x2e\x36\x20\x33\x32\ \x2e\x34\x20\x2d\x37\x32\x2e\x38\x20\x32\x39\x2e\x36\x20\x2d\x35\ \x37\x20\x32\x30\x2e\x32\x43\x2d\x35\x37\x20\x32\x30\x2e\x32\x20\ \x2d\x36\x31\x2e\x38\x20\x32\x31\x2e\x33\x20\x2d\x35\x38\x2e\x35\ \x20\x31\x34\x2e\x33\x43\x2d\x35\x36\x2e\x32\x39\x39\x20\x39\x2e\ \x36\x33\x32\x20\x2d\x35\x36\x2e\x38\x20\x31\x36\x2e\x34\x20\x2d\ \x36\x37\x2e\x38\x20\x32\x38\x2e\x32\x43\x2d\x36\x37\x2e\x38\x20\ \x32\x38\x2e\x32\x20\x2d\x37\x32\x2e\x38\x20\x33\x36\x2e\x38\x20\ \x2d\x37\x38\x20\x33\x39\x2e\x38\x43\x2d\x38\x33\x2e\x32\x20\x34\ \x32\x2e\x38\x20\x2d\x39\x35\x2e\x32\x20\x34\x39\x2e\x38\x20\x2d\ \x39\x36\x2e\x34\x20\x35\x33\x2e\x36\x43\x2d\x39\x37\x2e\x36\x20\ \x35\x37\x2e\x34\x20\x2d\x31\x30\x30\x2e\x38\x20\x36\x33\x2e\x32\ \x20\x2d\x31\x30\x32\x2e\x38\x20\x36\x34\x2e\x38\x43\x2d\x31\x30\ \x34\x2e\x38\x20\x36\x36\x2e\x34\x20\x2d\x31\x30\x37\x2e\x36\x20\ \x37\x30\x2e\x36\x20\x2d\x31\x30\x38\x20\x37\x34\x43\x2d\x31\x30\ \x38\x20\x37\x34\x20\x2d\x31\x30\x39\x2e\x32\x20\x37\x38\x20\x2d\ \x31\x31\x30\x2e\x36\x20\x37\x39\x2e\x32\x43\x2d\x31\x31\x32\x20\ \x38\x30\x2e\x34\x20\x2d\x31\x31\x32\x2e\x32\x20\x38\x33\x2e\x36\ \x20\x2d\x31\x31\x32\x2e\x32\x20\x38\x35\x2e\x36\x43\x2d\x31\x31\ \x32\x2e\x32\x20\x38\x37\x2e\x36\x20\x2d\x31\x31\x34\x2e\x32\x20\ \x39\x30\x2e\x34\x20\x2d\x31\x31\x34\x20\x39\x32\x2e\x38\x43\x2d\ \x31\x31\x34\x20\x39\x32\x2e\x38\x20\x2d\x31\x31\x33\x2e\x32\x20\ \x31\x31\x31\x2e\x38\x30\x31\x20\x2d\x31\x31\x33\x2e\x36\x20\x31\ \x31\x33\x2e\x38\x30\x31\x4c\x2d\x31\x31\x31\x2e\x36\x20\x31\x31\ \x30\x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x32\x30\ \x2e\x32\x20\x31\x31\x34\x2e\x36\x30\x31\x43\x2d\x31\x32\x30\x2e\ \x32\x20\x31\x31\x34\x2e\x36\x30\x31\x20\x2d\x31\x32\x32\x2e\x32\ \x20\x31\x31\x33\x2e\x32\x30\x31\x20\x2d\x31\x32\x36\x2e\x36\x20\ \x31\x31\x39\x2e\x32\x30\x31\x43\x2d\x31\x32\x36\x2e\x36\x20\x31\ \x31\x39\x2e\x32\x30\x31\x20\x2d\x31\x31\x39\x2e\x33\x20\x31\x35\ \x32\x2e\x32\x30\x31\x20\x2d\x31\x31\x39\x2e\x33\x20\x31\x35\x33\ \x2e\x36\x30\x31\x43\x2d\x31\x31\x39\x2e\x33\x20\x31\x35\x33\x2e\ \x36\x30\x31\x20\x2d\x31\x31\x38\x2e\x32\x20\x31\x35\x31\x2e\x35\ \x30\x31\x20\x2d\x31\x31\x39\x2e\x35\x20\x31\x34\x34\x2e\x33\x30\ \x31\x43\x2d\x31\x32\x30\x2e\x38\x20\x31\x33\x37\x2e\x31\x30\x31\ \x20\x2d\x31\x32\x31\x2e\x37\x20\x31\x32\x34\x2e\x34\x30\x31\x20\ \x2d\x31\x32\x31\x2e\x37\x20\x31\x32\x34\x2e\x34\x30\x31\x4c\x2d\ \x31\x32\x30\x2e\x32\x20\x31\x31\x34\x2e\x36\x30\x31\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x39\x39\x32\x36\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x39\x38\x2e\x36\x20\x35\x34\x43\x2d\x39\x38\ \x2e\x36\x20\x35\x34\x20\x2d\x31\x31\x36\x2e\x32\x20\x35\x37\x2e\ \x32\x20\x2d\x31\x31\x35\x2e\x38\x20\x38\x36\x2e\x34\x4c\x2d\x31\ \x31\x36\x2e\x36\x20\x31\x31\x31\x2e\x32\x30\x31\x43\x2d\x31\x31\ \x36\x2e\x36\x20\x31\x31\x31\x2e\x32\x30\x31\x20\x2d\x31\x31\x37\ \x2e\x38\x20\x38\x35\x2e\x36\x20\x2d\x31\x31\x39\x20\x38\x34\x43\ \x2d\x31\x32\x30\x2e\x32\x20\x38\x32\x2e\x34\x20\x2d\x31\x31\x36\ \x2e\x32\x20\x37\x31\x2e\x32\x20\x2d\x31\x31\x39\x2e\x34\x20\x37\ \x37\x2e\x32\x43\x2d\x31\x31\x39\x2e\x34\x20\x37\x37\x2e\x32\x20\ \x2d\x31\x33\x33\x2e\x34\x20\x39\x31\x2e\x32\x20\x2d\x31\x32\x35\ \x2e\x34\x20\x31\x31\x32\x2e\x34\x30\x31\x43\x2d\x31\x32\x35\x2e\ \x34\x20\x31\x31\x32\x2e\x34\x30\x31\x20\x2d\x31\x32\x33\x2e\x39\ \x20\x31\x31\x35\x2e\x37\x30\x31\x20\x2d\x31\x32\x36\x2e\x39\x20\ \x31\x31\x31\x2e\x31\x30\x31\x43\x2d\x31\x32\x36\x2e\x39\x20\x31\ \x31\x31\x2e\x31\x30\x31\x20\x2d\x31\x33\x31\x2e\x35\x20\x39\x38\ \x2e\x35\x20\x2d\x31\x33\x30\x2e\x34\x20\x39\x32\x2e\x31\x43\x2d\ \x31\x33\x30\x2e\x34\x20\x39\x32\x2e\x31\x20\x2d\x31\x33\x30\x2e\ \x32\x20\x38\x39\x2e\x39\x20\x2d\x31\x32\x38\x2e\x33\x20\x38\x37\ \x2e\x31\x43\x2d\x31\x32\x38\x2e\x33\x20\x38\x37\x2e\x31\x20\x2d\ \x31\x31\x39\x2e\x37\x20\x37\x35\x2e\x34\x20\x2d\x31\x31\x37\x20\ \x37\x33\x2e\x31\x43\x2d\x31\x31\x37\x20\x37\x33\x2e\x31\x20\x2d\ \x31\x31\x35\x2e\x32\x20\x35\x38\x2e\x37\x20\x2d\x39\x39\x2e\x38\ \x20\x35\x33\x2e\x35\x43\x2d\x39\x39\x2e\x38\x20\x35\x33\x2e\x35\ \x20\x2d\x39\x34\x2e\x31\x20\x35\x31\x2e\x32\x20\x2d\x39\x38\x2e\ \x36\x20\x35\x34\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x34\x30\x2e\x38\x20\ \x2d\x31\x32\x2e\x32\x43\x34\x31\x2e\x34\x36\x20\x2d\x31\x32\x2e\ \x35\x35\x34\x20\x34\x31\x2e\x34\x35\x31\x20\x2d\x31\x33\x2e\x35\ \x32\x34\x20\x34\x32\x2e\x30\x33\x31\x20\x2d\x31\x33\x2e\x36\x39\ \x37\x43\x34\x33\x2e\x31\x38\x20\x2d\x31\x34\x2e\x30\x34\x31\x20\ \x34\x33\x2e\x33\x34\x34\x20\x2d\x31\x35\x2e\x31\x30\x38\x20\x34\ \x33\x2e\x38\x36\x32\x20\x2d\x31\x35\x2e\x38\x39\x32\x43\x34\x34\ \x2e\x37\x33\x35\x20\x2d\x31\x37\x2e\x32\x31\x31\x20\x34\x34\x2e\ \x39\x32\x38\x20\x2d\x31\x38\x2e\x37\x34\x34\x20\x34\x35\x2e\x35\ \x31\x20\x2d\x32\x30\x2e\x32\x33\x35\x43\x34\x35\x2e\x37\x38\x32\ \x20\x2d\x32\x30\x2e\x39\x33\x35\x20\x34\x35\x2e\x38\x30\x39\x20\ \x2d\x32\x31\x2e\x38\x39\x20\x34\x35\x2e\x34\x39\x36\x20\x2d\x32\ \x32\x2e\x35\x35\x43\x34\x34\x2e\x33\x32\x32\x20\x2d\x32\x35\x2e\ \x30\x33\x31\x20\x34\x33\x2e\x36\x32\x20\x2d\x32\x37\x2e\x34\x38\ \x20\x34\x32\x2e\x31\x37\x38\x20\x2d\x32\x39\x2e\x39\x30\x36\x43\ \x34\x31\x2e\x39\x31\x20\x2d\x33\x30\x2e\x33\x35\x36\x20\x34\x31\ \x2e\x36\x34\x38\x20\x2d\x33\x31\x2e\x31\x35\x20\x34\x31\x2e\x34\ \x34\x37\x20\x2d\x33\x31\x2e\x37\x34\x38\x43\x34\x30\x2e\x39\x38\ \x34\x20\x2d\x33\x33\x2e\x31\x33\x32\x20\x33\x39\x2e\x37\x32\x37\ \x20\x2d\x33\x34\x2e\x31\x32\x33\x20\x33\x38\x2e\x38\x36\x37\x20\ \x2d\x33\x35\x2e\x34\x34\x33\x43\x33\x38\x2e\x35\x37\x39\x20\x2d\ \x33\x35\x2e\x38\x38\x34\x20\x33\x39\x2e\x31\x30\x34\x20\x2d\x33\ \x36\x2e\x38\x30\x39\x20\x33\x38\x2e\x33\x38\x38\x20\x2d\x33\x36\ \x2e\x38\x39\x33\x43\x33\x37\x2e\x34\x39\x31\x20\x2d\x33\x36\x2e\ \x39\x39\x38\x20\x33\x36\x2e\x30\x34\x32\x20\x2d\x33\x37\x2e\x35\ \x37\x38\x20\x33\x35\x2e\x38\x30\x39\x20\x2d\x33\x36\x2e\x35\x35\ \x32\x43\x33\x35\x2e\x32\x32\x31\x20\x2d\x33\x33\x2e\x39\x36\x35\ \x20\x33\x36\x2e\x32\x33\x32\x20\x2d\x33\x31\x2e\x34\x34\x32\x20\ \x33\x37\x2e\x32\x20\x2d\x32\x39\x43\x33\x36\x2e\x34\x31\x38\x20\ \x2d\x32\x38\x2e\x33\x30\x38\x20\x33\x36\x2e\x37\x35\x32\x20\x2d\ \x32\x37\x2e\x33\x38\x37\x20\x33\x36\x2e\x39\x30\x34\x20\x2d\x32\ \x36\x2e\x36\x32\x43\x33\x37\x2e\x36\x31\x34\x20\x2d\x32\x33\x2e\ \x30\x31\x34\x20\x33\x36\x2e\x34\x31\x36\x20\x2d\x31\x39\x2e\x36\ \x36\x32\x20\x33\x35\x2e\x36\x35\x35\x20\x2d\x31\x36\x2e\x31\x38\ \x38\x43\x33\x35\x2e\x36\x33\x32\x20\x2d\x31\x36\x2e\x30\x38\x34\ \x20\x33\x35\x2e\x39\x37\x34\x20\x2d\x31\x35\x2e\x38\x38\x36\x20\ \x33\x35\x2e\x39\x34\x36\x20\x2d\x31\x35\x2e\x38\x32\x34\x43\x33\ \x34\x2e\x37\x32\x34\x20\x2d\x31\x33\x2e\x31\x33\x38\x20\x33\x33\ \x2e\x32\x37\x32\x20\x2d\x31\x30\x2e\x36\x39\x33\x20\x33\x31\x2e\ \x34\x35\x33\x20\x2d\x38\x2e\x33\x31\x32\x43\x33\x30\x2e\x36\x39\ \x35\x20\x2d\x37\x2e\x33\x32\x20\x32\x39\x2e\x38\x32\x33\x20\x2d\ \x36\x2e\x34\x30\x34\x20\x32\x39\x2e\x33\x32\x36\x20\x2d\x35\x2e\ \x33\x34\x31\x43\x32\x38\x2e\x39\x35\x38\x20\x2d\x34\x2e\x35\x35\ \x34\x20\x32\x38\x2e\x35\x35\x20\x2d\x33\x2e\x35\x38\x38\x20\x32\ \x38\x2e\x38\x20\x2d\x32\x2e\x36\x43\x32\x35\x2e\x33\x36\x35\x20\ \x30\x2e\x31\x38\x20\x32\x33\x2e\x31\x31\x35\x20\x34\x2e\x30\x32\ \x35\x20\x32\x30\x2e\x35\x30\x34\x20\x37\x2e\x38\x37\x31\x43\x32\ \x30\x2e\x30\x34\x32\x20\x38\x2e\x35\x35\x31\x20\x32\x30\x2e\x33\ \x33\x33\x20\x39\x2e\x37\x36\x20\x32\x30\x2e\x38\x38\x34\x20\x31\ \x30\x2e\x30\x32\x39\x43\x32\x31\x2e\x36\x39\x37\x20\x31\x30\x2e\ \x34\x32\x37\x20\x32\x32\x2e\x36\x35\x33\x20\x39\x2e\x34\x30\x33\ \x20\x32\x33\x2e\x31\x32\x33\x20\x38\x2e\x35\x35\x37\x43\x32\x33\ \x2e\x35\x31\x32\x20\x37\x2e\x38\x35\x39\x20\x32\x33\x2e\x38\x36\ \x35\x20\x37\x2e\x32\x30\x39\x20\x32\x34\x2e\x33\x35\x36\x20\x36\ \x2e\x35\x36\x36\x43\x32\x34\x2e\x34\x38\x39\x20\x36\x2e\x33\x39\ \x31\x20\x32\x34\x2e\x33\x31\x20\x35\x2e\x39\x37\x32\x20\x32\x34\ \x2e\x34\x34\x35\x20\x35\x2e\x38\x35\x31\x43\x32\x37\x2e\x30\x37\ \x38\x20\x33\x2e\x35\x30\x34\x20\x32\x38\x2e\x37\x34\x37\x20\x30\ \x2e\x35\x36\x38\x20\x33\x31\x2e\x32\x20\x2d\x31\x2e\x38\x43\x33\ \x33\x2e\x31\x35\x20\x2d\x32\x2e\x31\x32\x39\x20\x33\x34\x2e\x36\ \x38\x37\x20\x2d\x33\x2e\x31\x32\x37\x20\x33\x36\x2e\x34\x33\x35\ \x20\x2d\x34\x2e\x31\x34\x43\x33\x36\x2e\x37\x34\x33\x20\x2d\x34\ \x2e\x33\x31\x39\x20\x33\x37\x2e\x32\x36\x37\x20\x2d\x34\x2e\x30\ \x37\x20\x33\x37\x2e\x35\x35\x37\x20\x2d\x34\x2e\x32\x36\x35\x43\ \x33\x39\x2e\x33\x31\x20\x2d\x35\x2e\x34\x34\x32\x20\x33\x39\x2e\ \x33\x30\x38\x20\x2d\x37\x2e\x34\x37\x38\x20\x33\x39\x2e\x34\x31\ \x34\x20\x2d\x39\x2e\x33\x38\x38\x43\x33\x39\x2e\x34\x36\x34\x20\ \x2d\x31\x30\x2e\x32\x37\x32\x20\x33\x39\x2e\x36\x36\x20\x2d\x31\ \x31\x2e\x35\x38\x39\x20\x34\x30\x2e\x38\x20\x2d\x31\x32\x2e\x32\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x33\x31\x2e\x39\x35\x39\x20\x2d\x31\ \x36\x2e\x36\x36\x36\x43\x33\x32\x2e\x30\x38\x33\x20\x2d\x31\x36\ \x2e\x37\x34\x33\x20\x33\x31\x2e\x39\x32\x38\x20\x2d\x31\x37\x2e\ \x31\x36\x36\x20\x33\x32\x2e\x30\x33\x37\x20\x2d\x31\x37\x2e\x33\ \x38\x32\x43\x33\x32\x2e\x31\x39\x39\x20\x2d\x31\x37\x2e\x37\x30\ \x36\x20\x33\x32\x2e\x36\x30\x32\x20\x2d\x31\x37\x2e\x38\x39\x34\ \x20\x33\x32\x2e\x37\x36\x34\x20\x2d\x31\x38\x2e\x32\x31\x38\x43\ \x33\x32\x2e\x38\x37\x33\x20\x2d\x31\x38\x2e\x34\x33\x34\x20\x33\ \x32\x2e\x37\x31\x20\x2d\x31\x38\x2e\x38\x31\x34\x20\x33\x32\x2e\ \x38\x34\x36\x20\x2d\x31\x38\x2e\x39\x35\x36\x43\x33\x35\x2e\x31\ \x37\x39\x20\x2d\x32\x31\x2e\x34\x30\x33\x20\x33\x35\x2e\x34\x33\ \x36\x20\x2d\x32\x34\x2e\x34\x32\x37\x20\x33\x34\x2e\x34\x20\x2d\ \x32\x37\x2e\x34\x43\x33\x35\x2e\x34\x32\x34\x20\x2d\x32\x38\x2e\ \x30\x32\x20\x33\x35\x2e\x34\x38\x35\x20\x2d\x32\x39\x2e\x32\x38\ \x32\x20\x33\x35\x2e\x30\x36\x20\x2d\x33\x30\x2e\x31\x32\x39\x43\ \x33\x34\x2e\x32\x30\x37\x20\x2d\x33\x31\x2e\x38\x32\x39\x20\x33\ \x34\x2e\x30\x31\x34\x20\x2d\x33\x33\x2e\x37\x35\x35\x20\x33\x33\ \x2e\x30\x33\x39\x20\x2d\x33\x35\x2e\x32\x39\x38\x43\x33\x32\x2e\ \x32\x33\x37\x20\x2d\x33\x36\x2e\x35\x36\x37\x20\x33\x30\x2e\x36\ \x35\x39\x20\x2d\x33\x37\x2e\x38\x31\x31\x20\x32\x39\x2e\x32\x38\ \x38\x20\x2d\x33\x36\x2e\x35\x30\x38\x43\x32\x38\x2e\x38\x36\x37\ \x20\x2d\x33\x36\x2e\x31\x30\x38\x20\x32\x38\x2e\x35\x34\x36\x20\ \x2d\x33\x35\x2e\x33\x32\x31\x20\x32\x38\x2e\x38\x32\x34\x20\x2d\ \x33\x34\x2e\x36\x30\x39\x43\x32\x38\x2e\x38\x38\x38\x20\x2d\x33\ \x34\x2e\x34\x34\x36\x20\x32\x39\x2e\x31\x37\x33\x20\x2d\x33\x34\ \x2e\x33\x20\x32\x39\x2e\x31\x34\x36\x20\x2d\x33\x34\x2e\x32\x31\ \x38\x43\x32\x39\x2e\x30\x33\x39\x20\x2d\x33\x33\x2e\x38\x39\x34\ \x20\x32\x38\x2e\x34\x39\x33\x20\x2d\x33\x33\x2e\x36\x37\x20\x32\ \x38\x2e\x34\x38\x37\x20\x2d\x33\x33\x2e\x33\x39\x38\x43\x32\x38\ \x2e\x34\x35\x37\x20\x2d\x33\x31\x2e\x39\x30\x32\x20\x32\x37\x2e\ \x35\x30\x33\x20\x2d\x33\x30\x2e\x33\x39\x31\x20\x32\x38\x2e\x31\ \x33\x33\x20\x2d\x32\x39\x2e\x30\x36\x32\x43\x32\x38\x2e\x39\x30\ \x35\x20\x2d\x32\x37\x2e\x34\x33\x33\x20\x32\x39\x2e\x37\x32\x34\ \x20\x2d\x32\x35\x2e\x35\x37\x36\x20\x33\x30\x2e\x34\x20\x2d\x32\ \x33\x2e\x38\x43\x32\x39\x2e\x31\x36\x36\x20\x2d\x32\x31\x2e\x36\ \x38\x34\x20\x33\x30\x2e\x31\x39\x39\x20\x2d\x31\x39\x2e\x32\x33\ \x35\x20\x32\x38\x2e\x34\x34\x36\x20\x2d\x31\x37\x2e\x33\x35\x38\ \x43\x32\x38\x2e\x33\x31\x20\x2d\x31\x37\x2e\x32\x31\x32\x20\x32\ \x38\x2e\x33\x31\x39\x20\x2d\x31\x36\x2e\x38\x32\x36\x20\x32\x38\ \x2e\x34\x34\x31\x20\x2d\x31\x36\x2e\x36\x32\x34\x43\x32\x38\x2e\ \x37\x33\x33\x20\x2d\x31\x36\x2e\x31\x33\x38\x20\x32\x39\x2e\x31\ \x33\x39\x20\x2d\x31\x35\x2e\x37\x33\x32\x20\x32\x39\x2e\x36\x32\ \x35\x20\x2d\x31\x35\x2e\x34\x34\x43\x32\x39\x2e\x38\x32\x37\x20\ \x2d\x31\x35\x2e\x33\x31\x39\x20\x33\x30\x2e\x31\x37\x35\x20\x2d\ \x31\x35\x2e\x33\x31\x37\x20\x33\x30\x2e\x33\x37\x35\x20\x2d\x31\ \x35\x2e\x34\x34\x31\x43\x33\x30\x2e\x39\x35\x33\x20\x2d\x31\x35\ \x2e\x38\x30\x33\x20\x33\x31\x2e\x33\x35\x31\x20\x2d\x31\x36\x2e\ \x32\x39\x20\x33\x31\x2e\x39\x35\x39\x20\x2d\x31\x36\x2e\x36\x36\ \x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x39\x34\x2e\x37\x37\x31\x20\x2d\ \x32\x36\x2e\x39\x37\x37\x43\x39\x36\x2e\x31\x36\x20\x2d\x32\x35\ \x2e\x31\x38\x35\x20\x39\x36\x2e\x34\x35\x20\x2d\x32\x32\x2e\x33\ \x39\x20\x39\x34\x2e\x34\x30\x31\x20\x2d\x32\x31\x43\x39\x34\x2e\ \x39\x35\x31\x20\x2d\x31\x37\x2e\x36\x39\x31\x20\x39\x38\x2e\x33\ \x30\x32\x20\x2d\x31\x39\x2e\x36\x37\x20\x31\x30\x30\x2e\x34\x30\ \x31\x20\x2d\x32\x30\x2e\x32\x43\x31\x30\x30\x2e\x32\x39\x32\x20\ \x2d\x32\x30\x2e\x35\x38\x38\x20\x31\x30\x30\x2e\x35\x31\x39\x20\ \x2d\x32\x30\x2e\x39\x33\x32\x20\x31\x30\x30\x2e\x38\x30\x32\x20\ \x2d\x32\x30\x2e\x39\x33\x37\x43\x31\x30\x31\x2e\x38\x35\x39\x20\ \x2d\x32\x30\x2e\x39\x35\x32\x20\x31\x30\x32\x2e\x35\x33\x39\x20\ \x2d\x32\x31\x2e\x39\x38\x34\x20\x31\x30\x33\x2e\x36\x30\x31\x20\ \x2d\x32\x31\x2e\x38\x43\x31\x30\x34\x2e\x30\x33\x35\x20\x2d\x32\ \x33\x2e\x33\x35\x37\x20\x31\x30\x35\x2e\x36\x37\x33\x20\x2d\x32\ \x34\x2e\x30\x35\x39\x20\x31\x30\x36\x2e\x33\x31\x37\x20\x2d\x32\ \x35\x2e\x34\x33\x39\x43\x31\x30\x38\x2e\x30\x34\x33\x20\x2d\x32\ \x39\x2e\x31\x33\x34\x20\x31\x30\x37\x2e\x34\x35\x32\x20\x2d\x33\ \x33\x2e\x34\x30\x37\x20\x31\x30\x34\x2e\x38\x36\x38\x20\x2d\x33\ \x36\x2e\x36\x35\x33\x43\x31\x30\x34\x2e\x36\x36\x36\x20\x2d\x33\ \x36\x2e\x39\x30\x37\x20\x31\x30\x34\x2e\x38\x38\x33\x20\x2d\x33\ \x37\x2e\x34\x32\x34\x20\x31\x30\x34\x2e\x37\x35\x39\x20\x2d\x33\ \x37\x2e\x37\x38\x36\x43\x31\x30\x34\x2e\x30\x30\x33\x20\x2d\x33\ \x39\x2e\x39\x39\x37\x20\x31\x30\x31\x2e\x39\x33\x35\x20\x2d\x34\ \x30\x2e\x33\x31\x32\x20\x31\x30\x30\x2e\x30\x30\x31\x20\x2d\x34\ \x31\x43\x39\x38\x2e\x38\x32\x34\x20\x2d\x34\x34\x2e\x38\x37\x35\ \x20\x39\x38\x2e\x31\x36\x33\x20\x2d\x34\x38\x2e\x39\x30\x36\x20\ \x39\x36\x2e\x34\x30\x31\x20\x2d\x35\x32\x2e\x36\x43\x39\x34\x2e\ \x37\x38\x37\x20\x2d\x35\x32\x2e\x38\x35\x20\x39\x34\x2e\x30\x38\ \x39\x20\x2d\x35\x34\x2e\x35\x38\x39\x20\x39\x32\x2e\x37\x35\x32\ \x20\x2d\x35\x35\x2e\x33\x30\x39\x43\x39\x31\x2e\x34\x31\x39\x20\ \x2d\x35\x36\x2e\x30\x32\x38\x20\x39\x30\x2e\x38\x35\x31\x20\x2d\ \x35\x34\x2e\x34\x34\x39\x20\x39\x30\x2e\x38\x39\x32\x20\x2d\x35\ \x33\x2e\x34\x30\x33\x43\x39\x30\x2e\x38\x39\x39\x20\x2d\x35\x33\ \x2e\x31\x39\x38\x20\x39\x31\x2e\x33\x35\x31\x20\x2d\x35\x32\x2e\ \x39\x37\x34\x20\x39\x31\x2e\x31\x38\x31\x20\x2d\x35\x32\x2e\x36\ \x30\x39\x43\x39\x31\x2e\x31\x30\x35\x20\x2d\x35\x32\x2e\x34\x34\ \x35\x20\x39\x30\x2e\x38\x34\x35\x20\x2d\x35\x32\x2e\x33\x33\x34\ \x20\x39\x30\x2e\x38\x34\x35\x20\x2d\x35\x32\x2e\x32\x43\x39\x30\ \x2e\x38\x34\x36\x20\x2d\x35\x32\x2e\x30\x36\x35\x20\x39\x31\x2e\ \x30\x36\x37\x20\x2d\x35\x31\x2e\x39\x33\x34\x20\x39\x31\x2e\x32\ \x30\x31\x20\x2d\x35\x31\x2e\x38\x43\x39\x30\x2e\x32\x38\x33\x20\ \x2d\x35\x30\x2e\x39\x38\x20\x38\x38\x2e\x38\x36\x20\x2d\x35\x30\ \x2e\x35\x30\x33\x20\x38\x38\x2e\x35\x36\x35\x20\x2d\x34\x39\x2e\ \x33\x35\x38\x43\x38\x37\x2e\x36\x31\x31\x20\x2d\x34\x35\x2e\x36\ \x34\x38\x20\x39\x30\x2e\x31\x38\x34\x20\x2d\x34\x32\x2e\x35\x32\ \x33\x20\x39\x31\x2e\x38\x35\x32\x20\x2d\x33\x39\x2e\x33\x32\x32\ \x43\x39\x32\x2e\x34\x34\x33\x20\x2d\x33\x38\x2e\x31\x38\x37\x20\ \x39\x31\x2e\x37\x30\x37\x20\x2d\x33\x36\x2e\x39\x31\x36\x20\x39\ \x30\x2e\x39\x34\x37\x20\x2d\x33\x35\x2e\x37\x30\x38\x43\x39\x30\ \x2e\x35\x30\x39\x20\x2d\x33\x35\x2e\x30\x31\x33\x20\x39\x30\x2e\ \x36\x31\x37\x20\x2d\x33\x33\x2e\x38\x38\x36\x20\x39\x30\x2e\x38\ \x39\x33\x20\x2d\x33\x33\x2e\x30\x33\x43\x39\x31\x2e\x36\x34\x35\ \x20\x2d\x33\x30\x2e\x36\x39\x39\x20\x39\x33\x2e\x32\x33\x36\x20\ \x2d\x32\x38\x2e\x39\x36\x20\x39\x34\x2e\x37\x37\x31\x20\x2d\x32\ \x36\x2e\x39\x37\x37\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x35\x37\x2e\x36\ \x31\x31\x20\x2d\x38\x2e\x35\x39\x31\x43\x35\x36\x2e\x31\x32\x34\ \x20\x2d\x36\x2e\x37\x34\x20\x35\x32\x2e\x37\x31\x32\x20\x2d\x34\ \x2e\x31\x37\x31\x20\x35\x35\x2e\x36\x32\x39\x20\x2d\x32\x2e\x32\ \x34\x33\x43\x35\x35\x2e\x38\x32\x33\x20\x2d\x32\x2e\x31\x31\x34\ \x20\x35\x36\x2e\x31\x39\x33\x20\x2d\x32\x2e\x31\x31\x20\x35\x36\ \x2e\x33\x36\x36\x20\x2d\x32\x2e\x32\x34\x34\x43\x35\x38\x2e\x33\ \x38\x37\x20\x2d\x33\x2e\x38\x30\x39\x20\x36\x30\x2e\x33\x39\x20\ \x2d\x34\x2e\x37\x31\x32\x20\x36\x32\x2e\x38\x32\x36\x20\x2d\x35\ \x2e\x32\x39\x34\x43\x36\x32\x2e\x39\x35\x20\x2d\x35\x2e\x33\x32\ \x33\x20\x36\x33\x2e\x32\x32\x34\x20\x2d\x34\x2e\x38\x35\x36\x20\ \x36\x33\x2e\x35\x39\x33\x20\x2d\x35\x2e\x30\x31\x37\x43\x36\x35\ \x2e\x32\x30\x36\x20\x2d\x35\x2e\x37\x32\x20\x36\x37\x2e\x32\x31\ \x36\x20\x2d\x35\x2e\x36\x36\x32\x20\x36\x38\x2e\x34\x20\x2d\x37\ \x43\x37\x32\x2e\x31\x36\x37\x20\x2d\x36\x2e\x37\x37\x36\x20\x37\ \x35\x2e\x37\x33\x32\x20\x2d\x37\x2e\x38\x39\x32\x20\x37\x39\x2e\ \x31\x32\x33\x20\x2d\x39\x2e\x32\x43\x38\x30\x2e\x32\x38\x34\x20\ \x2d\x39\x2e\x36\x34\x38\x20\x38\x31\x2e\x35\x35\x34\x20\x2d\x31\ \x30\x2e\x32\x30\x37\x20\x38\x32\x2e\x37\x35\x35\x20\x2d\x31\x30\ \x2e\x37\x30\x39\x43\x38\x34\x2e\x31\x33\x31\x20\x2d\x31\x31\x2e\ \x32\x38\x35\x20\x38\x35\x2e\x33\x33\x35\x20\x2d\x31\x32\x2e\x32\ \x31\x33\x20\x38\x36\x2e\x34\x34\x37\x20\x2d\x31\x33\x2e\x33\x35\ \x34\x43\x38\x36\x2e\x35\x38\x20\x2d\x31\x33\x2e\x34\x39\x20\x38\ \x36\x2e\x39\x33\x34\x20\x2d\x31\x33\x2e\x34\x20\x38\x37\x2e\x32\ \x30\x31\x20\x2d\x31\x33\x2e\x34\x43\x38\x37\x2e\x31\x36\x31\x20\ \x2d\x31\x34\x2e\x32\x36\x33\x20\x38\x38\x2e\x31\x32\x33\x20\x2d\ \x31\x34\x2e\x33\x39\x20\x38\x38\x2e\x33\x37\x20\x2d\x31\x35\x2e\ \x30\x31\x32\x43\x38\x38\x2e\x34\x36\x32\x20\x2d\x31\x35\x2e\x32\ \x34\x34\x20\x38\x38\x2e\x33\x31\x32\x20\x2d\x31\x35\x2e\x36\x34\ \x20\x38\x38\x2e\x34\x34\x35\x20\x2d\x31\x35\x2e\x37\x34\x32\x43\ \x39\x30\x2e\x35\x38\x33\x20\x2d\x31\x37\x2e\x33\x37\x32\x20\x39\ \x31\x2e\x35\x30\x33\x20\x2d\x31\x39\x2e\x33\x39\x20\x39\x30\x2e\ \x33\x33\x34\x20\x2d\x32\x31\x2e\x37\x36\x37\x43\x39\x30\x2e\x30\ \x34\x39\x20\x2d\x32\x32\x2e\x33\x34\x35\x20\x38\x39\x2e\x38\x20\ \x2d\x32\x32\x2e\x39\x36\x33\x20\x38\x39\x2e\x32\x33\x34\x20\x2d\ \x32\x33\x2e\x34\x33\x39\x43\x38\x38\x2e\x31\x34\x39\x20\x2d\x32\ \x34\x2e\x33\x35\x20\x38\x37\x2e\x30\x34\x37\x20\x2d\x32\x33\x2e\ \x34\x39\x36\x20\x38\x36\x20\x2d\x32\x33\x2e\x38\x43\x38\x35\x2e\ \x38\x34\x31\x20\x2d\x32\x33\x2e\x31\x37\x32\x20\x38\x35\x2e\x31\ \x31\x32\x20\x2d\x32\x33\x2e\x33\x34\x34\x20\x38\x34\x2e\x37\x32\ \x36\x20\x2d\x32\x33\x2e\x31\x34\x36\x43\x38\x33\x2e\x38\x36\x37\ \x20\x2d\x32\x32\x2e\x37\x30\x37\x20\x38\x32\x2e\x35\x33\x34\x20\ \x2d\x32\x33\x2e\x32\x39\x32\x20\x38\x31\x2e\x36\x37\x35\x20\x2d\ \x32\x32\x2e\x38\x35\x34\x43\x38\x30\x2e\x33\x31\x33\x20\x2d\x32\ \x32\x2e\x31\x35\x39\x20\x37\x39\x2e\x30\x37\x32\x20\x2d\x32\x31\ \x2e\x39\x39\x20\x37\x37\x2e\x36\x35\x20\x2d\x32\x31\x2e\x36\x31\ \x33\x43\x37\x37\x2e\x33\x33\x38\x20\x2d\x32\x31\x2e\x35\x33\x31\ \x20\x37\x36\x2e\x35\x36\x20\x2d\x32\x31\x2e\x36\x32\x37\x20\x37\ \x36\x2e\x34\x20\x2d\x32\x31\x43\x37\x36\x2e\x32\x36\x36\x20\x2d\ \x32\x31\x2e\x31\x33\x34\x20\x37\x36\x2e\x31\x31\x38\x20\x2d\x32\ \x31\x2e\x33\x36\x38\x20\x37\x36\x2e\x30\x31\x32\x20\x2d\x32\x31\ \x2e\x33\x34\x36\x43\x37\x34\x2e\x31\x30\x34\x20\x2d\x32\x30\x2e\ \x39\x35\x20\x37\x32\x2e\x38\x34\x34\x20\x2d\x32\x30\x2e\x37\x33\ \x36\x20\x37\x31\x2e\x35\x34\x33\x20\x2d\x31\x39\x2e\x30\x34\x34\ \x43\x37\x31\x2e\x34\x34\x20\x2d\x31\x38\x2e\x39\x31\x31\x20\x37\ \x30\x2e\x39\x39\x38\x20\x2d\x31\x39\x2e\x30\x39\x20\x37\x30\x2e\ \x38\x33\x39\x20\x2d\x31\x38\x2e\x39\x35\x35\x43\x36\x39\x2e\x38\ \x38\x32\x20\x2d\x31\x38\x2e\x31\x34\x37\x20\x36\x39\x2e\x34\x37\ \x37\x20\x2d\x31\x36\x2e\x39\x31\x33\x20\x36\x38\x2e\x33\x37\x36\ \x20\x2d\x31\x36\x2e\x32\x34\x31\x43\x36\x38\x2e\x31\x37\x35\x20\ \x2d\x31\x36\x2e\x31\x31\x38\x20\x36\x37\x2e\x38\x32\x33\x20\x2d\ \x31\x36\x2e\x32\x38\x36\x20\x36\x37\x2e\x36\x32\x39\x20\x2d\x31\ \x36\x2e\x31\x35\x37\x43\x36\x36\x2e\x39\x38\x33\x20\x2d\x31\x35\ \x2e\x37\x32\x36\x20\x36\x36\x2e\x36\x31\x36\x20\x2d\x31\x35\x2e\ \x30\x38\x35\x20\x36\x35\x2e\x39\x37\x34\x20\x2d\x31\x34\x2e\x36\ \x33\x38\x43\x36\x35\x2e\x36\x34\x35\x20\x2d\x31\x34\x2e\x34\x30\ \x39\x20\x36\x35\x2e\x32\x34\x35\x20\x2d\x31\x34\x2e\x37\x33\x34\ \x20\x36\x35\x2e\x32\x37\x37\x20\x2d\x31\x34\x2e\x39\x39\x43\x36\ \x35\x2e\x35\x32\x32\x20\x2d\x31\x36\x2e\x39\x33\x37\x20\x36\x36\ \x2e\x31\x37\x35\x20\x2d\x31\x38\x2e\x37\x32\x34\x20\x36\x35\x2e\ \x36\x20\x2d\x32\x30\x2e\x36\x43\x36\x37\x2e\x36\x37\x37\x20\x2d\ \x32\x33\x2e\x31\x32\x20\x37\x30\x2e\x31\x39\x34\x20\x2d\x32\x35\ \x2e\x30\x36\x39\x20\x37\x32\x20\x2d\x32\x37\x2e\x38\x43\x37\x32\ \x2e\x30\x31\x35\x20\x2d\x32\x39\x2e\x39\x36\x36\x20\x37\x32\x2e\ \x37\x30\x37\x20\x2d\x33\x32\x2e\x31\x31\x32\x20\x37\x32\x2e\x35\ \x39\x34\x20\x2d\x33\x34\x2e\x31\x38\x39\x43\x37\x32\x2e\x35\x38\ \x34\x20\x2d\x33\x34\x2e\x33\x38\x32\x20\x37\x32\x2e\x32\x39\x36\ \x20\x2d\x33\x35\x2e\x31\x31\x35\x20\x37\x32\x2e\x31\x37\x20\x2d\ \x33\x35\x2e\x34\x36\x32\x43\x37\x31\x2e\x38\x35\x38\x20\x2d\x33\ \x36\x2e\x33\x31\x36\x20\x37\x32\x2e\x37\x36\x34\x20\x2d\x33\x37\ \x2e\x33\x38\x32\x20\x37\x31\x2e\x39\x32\x20\x2d\x33\x38\x2e\x31\ \x30\x36\x43\x37\x30\x2e\x35\x31\x36\x20\x2d\x33\x39\x2e\x33\x30\ \x39\x20\x36\x39\x2e\x32\x32\x34\x20\x2d\x33\x38\x2e\x34\x33\x33\ \x20\x36\x38\x2e\x34\x20\x2d\x33\x37\x43\x36\x36\x2e\x35\x36\x32\ \x20\x2d\x33\x36\x2e\x36\x31\x20\x36\x34\x2e\x34\x39\x36\x20\x2d\ \x33\x35\x2e\x39\x31\x37\x20\x36\x32\x2e\x39\x31\x38\x20\x2d\x33\ \x37\x2e\x31\x35\x31\x43\x36\x31\x2e\x39\x31\x31\x20\x2d\x33\x37\ \x2e\x39\x33\x38\x20\x36\x31\x2e\x33\x33\x33\x20\x2d\x33\x38\x2e\ \x38\x34\x34\x20\x36\x30\x2e\x35\x33\x34\x20\x2d\x33\x39\x2e\x39\ \x43\x35\x39\x2e\x35\x34\x39\x20\x2d\x34\x31\x2e\x32\x30\x32\x20\ \x35\x39\x2e\x38\x38\x34\x20\x2d\x34\x32\x2e\x36\x33\x38\x20\x35\ \x39\x2e\x39\x35\x34\x20\x2d\x34\x34\x2e\x32\x30\x32\x43\x35\x39\ \x2e\x39\x36\x20\x2d\x34\x34\x2e\x33\x33\x20\x35\x39\x2e\x36\x34\ \x35\x20\x2d\x34\x34\x2e\x34\x36\x36\x20\x35\x39\x2e\x36\x34\x35\ \x20\x2d\x34\x34\x2e\x36\x43\x35\x39\x2e\x36\x34\x36\x20\x2d\x34\ \x34\x2e\x37\x33\x35\x20\x35\x39\x2e\x38\x36\x36\x20\x2d\x34\x34\ \x2e\x38\x36\x36\x20\x36\x30\x20\x2d\x34\x35\x43\x35\x39\x2e\x32\ \x39\x34\x20\x2d\x34\x35\x2e\x36\x32\x36\x20\x35\x39\x2e\x30\x31\ \x39\x20\x2d\x34\x36\x2e\x36\x38\x34\x20\x35\x38\x20\x2d\x34\x37\ \x43\x35\x38\x2e\x33\x30\x35\x20\x2d\x34\x38\x2e\x30\x39\x32\x20\ \x35\x37\x2e\x36\x32\x39\x20\x2d\x34\x38\x2e\x39\x37\x36\x20\x35\ \x36\x2e\x37\x35\x38\x20\x2d\x34\x39\x2e\x32\x37\x38\x43\x35\x34\ \x2e\x37\x36\x33\x20\x2d\x34\x39\x2e\x39\x36\x39\x20\x35\x33\x2e\ \x30\x38\x36\x20\x2d\x34\x38\x2e\x30\x35\x37\x20\x35\x31\x2e\x31\ \x39\x34\x20\x2d\x34\x37\x2e\x39\x38\x34\x43\x35\x30\x2e\x36\x38\ \x20\x2d\x34\x37\x2e\x39\x36\x35\x20\x35\x30\x2e\x32\x31\x33\x20\ \x2d\x34\x39\x2e\x30\x30\x33\x20\x34\x39\x2e\x35\x36\x34\x20\x2d\ \x34\x39\x2e\x33\x32\x38\x43\x34\x39\x2e\x31\x33\x32\x20\x2d\x34\ \x39\x2e\x35\x34\x34\x20\x34\x38\x2e\x34\x32\x38\x20\x2d\x34\x39\ \x2e\x35\x37\x37\x20\x34\x38\x2e\x30\x36\x36\x20\x2d\x34\x39\x2e\ \x33\x31\x31\x43\x34\x37\x2e\x33\x37\x38\x20\x2d\x34\x38\x2e\x38\ \x30\x37\x20\x34\x36\x2e\x37\x38\x39\x20\x2d\x34\x38\x2e\x36\x39\ \x33\x20\x34\x36\x2e\x30\x33\x31\x20\x2d\x34\x38\x2e\x34\x38\x38\ \x43\x34\x34\x2e\x34\x31\x34\x20\x2d\x34\x38\x2e\x30\x35\x32\x20\ \x34\x33\x2e\x31\x33\x36\x20\x2d\x34\x36\x2e\x39\x35\x38\x20\x34\ \x31\x2e\x36\x35\x36\x20\x2d\x34\x36\x2e\x31\x30\x33\x43\x34\x30\ \x2e\x31\x37\x31\x20\x2d\x34\x35\x2e\x32\x34\x36\x20\x33\x39\x2e\ \x32\x31\x36\x20\x2d\x34\x33\x2e\x38\x30\x39\x20\x33\x38\x2e\x31\ \x33\x36\x20\x2d\x34\x32\x2e\x34\x38\x39\x43\x33\x37\x2e\x31\x39\ \x35\x20\x2d\x34\x31\x2e\x33\x33\x37\x20\x33\x37\x2e\x30\x35\x39\ \x20\x2d\x33\x38\x2e\x39\x32\x33\x20\x33\x38\x2e\x34\x37\x39\x20\ \x2d\x33\x38\x2e\x34\x32\x33\x43\x34\x30\x2e\x33\x32\x32\x20\x2d\ \x33\x37\x2e\x37\x37\x33\x20\x34\x31\x2e\x36\x32\x36\x20\x2d\x34\ \x30\x2e\x34\x37\x36\x20\x34\x33\x2e\x35\x39\x32\x20\x2d\x34\x30\ \x2e\x31\x35\x43\x34\x33\x2e\x39\x30\x34\x20\x2d\x34\x30\x2e\x30\ \x39\x39\x20\x34\x34\x2e\x31\x31\x20\x2d\x33\x39\x2e\x37\x38\x38\ \x20\x34\x34\x20\x2d\x33\x39\x2e\x34\x43\x34\x34\x2e\x33\x38\x39\ \x20\x2d\x33\x39\x2e\x32\x39\x31\x20\x34\x34\x2e\x36\x30\x37\x20\ \x2d\x33\x39\x2e\x35\x32\x20\x34\x34\x2e\x38\x20\x2d\x33\x39\x2e\ \x38\x43\x34\x35\x2e\x36\x35\x38\x20\x2d\x33\x38\x2e\x37\x38\x31\ \x20\x34\x36\x2e\x38\x32\x32\x20\x2d\x33\x38\x2e\x34\x34\x34\x20\ \x34\x37\x2e\x37\x36\x20\x2d\x33\x37\x2e\x35\x37\x31\x43\x34\x38\ \x2e\x37\x33\x20\x2d\x33\x36\x2e\x36\x36\x37\x20\x35\x30\x2e\x34\ \x37\x36\x20\x2d\x33\x37\x2e\x30\x38\x35\x20\x35\x31\x2e\x34\x39\ \x31\x20\x2d\x33\x36\x2e\x30\x38\x38\x43\x35\x33\x2e\x30\x32\x20\ \x2d\x33\x34\x2e\x35\x38\x36\x20\x35\x32\x2e\x34\x36\x31\x20\x2d\ \x33\x31\x2e\x39\x30\x35\x20\x35\x34\x2e\x34\x20\x2d\x33\x30\x2e\ \x36\x43\x35\x33\x2e\x38\x31\x34\x20\x2d\x32\x39\x2e\x32\x38\x37\ \x20\x35\x33\x2e\x32\x30\x37\x20\x2d\x32\x38\x2e\x30\x31\x20\x35\ \x32\x2e\x38\x37\x32\x20\x2d\x32\x36\x2e\x35\x38\x33\x43\x35\x32\ \x2e\x35\x39\x20\x2d\x32\x35\x2e\x33\x37\x37\x20\x35\x33\x2e\x35\ \x38\x34\x20\x2d\x32\x34\x2e\x31\x38\x20\x35\x34\x2e\x37\x39\x35\ \x20\x2d\x32\x34\x2e\x32\x37\x31\x43\x35\x36\x2e\x30\x35\x33\x20\ \x2d\x32\x34\x2e\x33\x36\x35\x20\x35\x36\x2e\x33\x31\x35\x20\x2d\ \x32\x35\x2e\x31\x32\x34\x20\x35\x36\x2e\x38\x20\x2d\x32\x36\x2e\ \x32\x43\x35\x37\x2e\x30\x36\x37\x20\x2d\x32\x35\x2e\x39\x33\x33\ \x20\x35\x37\x2e\x35\x33\x36\x20\x2d\x32\x35\x2e\x36\x33\x36\x20\ \x35\x37\x2e\x34\x39\x35\x20\x2d\x32\x35\x2e\x34\x32\x43\x35\x37\ \x2e\x30\x33\x38\x20\x2d\x32\x33\x2e\x30\x33\x33\x20\x35\x36\x2e\ \x30\x31\x31\x20\x2d\x32\x31\x2e\x30\x34\x20\x35\x35\x2e\x35\x35\ \x33\x20\x2d\x31\x38\x2e\x36\x30\x39\x43\x35\x35\x2e\x34\x39\x34\ \x20\x2d\x31\x38\x2e\x32\x39\x32\x20\x35\x35\x2e\x31\x38\x39\x20\ \x2d\x31\x38\x2e\x30\x39\x20\x35\x34\x2e\x38\x20\x2d\x31\x38\x2e\ \x32\x43\x35\x34\x2e\x33\x33\x32\x20\x2d\x31\x34\x2e\x30\x35\x31\ \x20\x35\x30\x2e\x32\x38\x20\x2d\x31\x31\x2e\x36\x35\x37\x20\x34\ \x37\x2e\x37\x33\x35\x20\x2d\x38\x2e\x34\x39\x32\x43\x34\x37\x2e\ \x33\x33\x32\x20\x2d\x37\x2e\x39\x39\x20\x34\x37\x2e\x33\x32\x38\ \x20\x2d\x36\x2e\x37\x34\x31\x20\x34\x37\x2e\x37\x33\x37\x20\x2d\ \x36\x2e\x33\x33\x38\x43\x34\x39\x2e\x31\x34\x20\x2d\x34\x2e\x39\ \x35\x31\x20\x35\x31\x2e\x31\x20\x2d\x36\x2e\x34\x39\x37\x20\x35\ \x32\x2e\x38\x20\x2d\x37\x43\x35\x33\x2e\x30\x31\x33\x20\x2d\x38\ \x2e\x32\x30\x36\x20\x35\x33\x2e\x38\x37\x32\x20\x2d\x39\x2e\x31\ \x34\x38\x20\x35\x35\x2e\x32\x30\x34\x20\x2d\x39\x2e\x30\x39\x32\ \x43\x35\x35\x2e\x34\x36\x20\x2d\x39\x2e\x30\x38\x32\x20\x35\x35\ \x2e\x36\x39\x35\x20\x2d\x39\x2e\x36\x32\x34\x20\x35\x36\x2e\x30\ \x31\x39\x20\x2d\x39\x2e\x37\x35\x34\x43\x35\x36\x2e\x33\x36\x37\ \x20\x2d\x39\x2e\x38\x39\x32\x20\x35\x36\x2e\x38\x36\x39\x20\x2d\ \x39\x2e\x36\x36\x38\x20\x35\x37\x2e\x31\x35\x35\x20\x2d\x39\x2e\ \x38\x36\x36\x43\x35\x38\x2e\x38\x38\x34\x20\x2d\x31\x31\x2e\x30\ \x36\x31\x20\x36\x30\x2e\x32\x39\x32\x20\x2d\x31\x32\x2e\x31\x36\ \x37\x20\x36\x32\x2e\x30\x33\x20\x2d\x31\x33\x2e\x33\x35\x36\x43\ \x36\x32\x2e\x32\x32\x32\x20\x2d\x31\x33\x2e\x34\x38\x37\x20\x36\ \x32\x2e\x35\x36\x36\x20\x2d\x31\x33\x2e\x33\x32\x38\x20\x36\x32\ \x2e\x37\x38\x32\x20\x2d\x31\x33\x2e\x34\x33\x36\x43\x36\x33\x2e\ \x31\x30\x37\x20\x2d\x31\x33\x2e\x35\x39\x38\x20\x36\x33\x2e\x32\ \x39\x34\x20\x2d\x31\x33\x2e\x39\x38\x35\x20\x36\x33\x2e\x36\x31\ \x37\x20\x2d\x31\x34\x2e\x31\x37\x43\x36\x33\x2e\x39\x36\x35\x20\ \x2d\x31\x34\x2e\x33\x37\x20\x36\x34\x2e\x32\x30\x37\x20\x2d\x31\ \x34\x2e\x30\x38\x20\x36\x34\x2e\x34\x20\x2d\x31\x33\x2e\x38\x43\ \x36\x33\x2e\x37\x35\x34\x20\x2d\x31\x33\x2e\x34\x35\x31\x20\x36\ \x33\x2e\x37\x35\x20\x2d\x31\x32\x2e\x34\x39\x34\x20\x36\x33\x2e\ \x31\x36\x38\x20\x2d\x31\x32\x2e\x32\x39\x32\x43\x36\x32\x2e\x33\ \x39\x33\x20\x2d\x31\x32\x2e\x30\x32\x34\x20\x36\x31\x2e\x38\x33\ \x32\x20\x2d\x31\x31\x2e\x35\x31\x31\x20\x36\x31\x2e\x31\x35\x38\ \x20\x2d\x31\x31\x2e\x30\x36\x34\x43\x36\x30\x2e\x38\x36\x36\x20\ \x2d\x31\x30\x2e\x38\x37\x31\x20\x36\x30\x2e\x32\x30\x37\x20\x2d\ \x31\x31\x2e\x31\x31\x39\x20\x36\x30\x2e\x31\x30\x33\x20\x2d\x31\ \x30\x2e\x39\x34\x43\x35\x39\x2e\x35\x30\x35\x20\x2d\x39\x2e\x39\ \x31\x32\x20\x35\x38\x2e\x33\x32\x31\x20\x2d\x39\x2e\x34\x37\x34\ \x20\x35\x37\x2e\x36\x31\x31\x20\x2d\x38\x2e\x35\x39\x31\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x32\x2e\x32\x20\x2d\x35\x38\x43\x32\x2e\x32\ \x20\x2d\x35\x38\x20\x2d\x37\x2e\x30\x33\x38\x20\x2d\x36\x30\x2e\ \x38\x37\x32\x20\x2d\x31\x38\x2e\x32\x20\x2d\x33\x35\x2e\x32\x43\ \x2d\x31\x38\x2e\x32\x20\x2d\x33\x35\x2e\x32\x20\x2d\x32\x30\x2e\ \x36\x20\x2d\x33\x30\x20\x2d\x32\x33\x20\x2d\x32\x38\x43\x2d\x32\ \x35\x2e\x34\x20\x2d\x32\x36\x20\x2d\x33\x36\x2e\x36\x20\x2d\x32\ \x32\x2e\x34\x20\x2d\x33\x38\x2e\x36\x20\x2d\x31\x38\x2e\x34\x4c\ \x2d\x34\x39\x20\x2d\x32\x2e\x34\x43\x2d\x34\x39\x20\x2d\x32\x2e\ \x34\x20\x2d\x33\x34\x2e\x32\x20\x2d\x31\x38\x2e\x34\x20\x2d\x33\ \x31\x20\x2d\x32\x30\x2e\x38\x43\x2d\x33\x31\x20\x2d\x32\x30\x2e\ \x38\x20\x2d\x32\x33\x20\x2d\x32\x39\x2e\x32\x20\x2d\x32\x36\x2e\ \x32\x20\x2d\x32\x32\x2e\x34\x43\x2d\x32\x36\x2e\x32\x20\x2d\x32\ \x32\x2e\x34\x20\x2d\x34\x30\x2e\x32\x20\x2d\x31\x31\x2e\x36\x20\ \x2d\x33\x39\x20\x2d\x32\x2e\x34\x43\x2d\x33\x39\x20\x2d\x32\x2e\ \x34\x20\x2d\x34\x34\x2e\x36\x20\x31\x32\x20\x2d\x34\x35\x2e\x34\ \x20\x31\x34\x43\x2d\x34\x35\x2e\x34\x20\x31\x34\x20\x2d\x32\x39\ \x2e\x34\x20\x2d\x31\x38\x20\x2d\x32\x37\x20\x2d\x31\x39\x2e\x32\ \x43\x2d\x32\x34\x2e\x36\x20\x2d\x32\x30\x2e\x34\x20\x2d\x32\x33\ \x2e\x34\x20\x2d\x32\x30\x2e\x34\x20\x2d\x32\x34\x2e\x36\x20\x2d\ \x31\x36\x2e\x38\x43\x2d\x32\x35\x2e\x38\x20\x2d\x31\x33\x2e\x32\ \x20\x2d\x32\x36\x2e\x32\x20\x33\x2e\x32\x20\x2d\x32\x39\x20\x35\ \x2e\x32\x43\x2d\x32\x39\x20\x35\x2e\x32\x20\x2d\x32\x31\x20\x2d\ \x31\x35\x2e\x32\x20\x2d\x32\x31\x2e\x38\x20\x2d\x31\x38\x2e\x34\ \x43\x2d\x32\x31\x2e\x38\x20\x2d\x31\x38\x2e\x34\x20\x2d\x31\x38\ \x2e\x36\x20\x2d\x32\x32\x20\x2d\x31\x36\x2e\x32\x20\x2d\x31\x36\ \x2e\x38\x4c\x2d\x31\x37\x2e\x34\x20\x2d\x30\x2e\x38\x4c\x2d\x31\ \x33\x20\x31\x31\x2e\x32\x43\x2d\x31\x33\x20\x31\x31\x2e\x32\x20\ \x2d\x31\x35\x2e\x34\x20\x30\x20\x2d\x31\x33\x2e\x38\x20\x2d\x31\ \x35\x2e\x36\x43\x2d\x31\x33\x2e\x38\x20\x2d\x31\x35\x2e\x36\x20\ \x2d\x31\x35\x2e\x38\x20\x2d\x32\x36\x20\x2d\x31\x31\x2e\x38\x20\ \x2d\x32\x30\x2e\x34\x43\x2d\x37\x2e\x38\x20\x2d\x31\x34\x2e\x38\ \x20\x31\x2e\x38\x20\x2d\x38\x2e\x38\x20\x31\x2e\x38\x20\x2d\x34\ \x43\x31\x2e\x38\x20\x2d\x34\x20\x2d\x33\x2e\x34\x20\x2d\x32\x31\ \x2e\x36\x20\x2d\x31\x32\x2e\x36\x20\x2d\x32\x36\x2e\x34\x4c\x2d\ \x31\x36\x2e\x36\x20\x2d\x32\x30\x2e\x34\x4c\x2d\x31\x37\x2e\x38\ \x20\x2d\x32\x32\x2e\x34\x43\x2d\x31\x37\x2e\x38\x20\x2d\x32\x32\ \x2e\x34\x20\x2d\x32\x31\x2e\x34\x20\x2d\x32\x33\x2e\x32\x20\x2d\ \x31\x37\x20\x2d\x33\x30\x43\x2d\x31\x32\x2e\x36\x20\x2d\x33\x36\ \x2e\x38\x20\x2d\x31\x33\x20\x2d\x33\x37\x2e\x36\x20\x2d\x31\x33\ \x20\x2d\x33\x37\x2e\x36\x43\x2d\x31\x33\x20\x2d\x33\x37\x2e\x36\ \x20\x2d\x36\x2e\x36\x20\x2d\x33\x30\x2e\x34\x20\x2d\x35\x20\x2d\ \x33\x30\x2e\x34\x43\x2d\x35\x20\x2d\x33\x30\x2e\x34\x20\x38\x2e\ \x32\x20\x2d\x33\x38\x20\x39\x2e\x34\x20\x2d\x31\x33\x2e\x36\x43\ \x39\x2e\x34\x20\x2d\x31\x33\x2e\x36\x20\x31\x36\x2e\x32\x20\x2d\ \x32\x38\x20\x37\x20\x2d\x33\x34\x2e\x38\x43\x37\x20\x2d\x33\x34\ \x2e\x38\x20\x2d\x37\x2e\x38\x20\x2d\x33\x36\x2e\x38\x20\x2d\x36\ \x2e\x36\x20\x2d\x34\x32\x4c\x30\x2e\x36\x20\x2d\x35\x34\x2e\x34\ \x43\x34\x2e\x32\x20\x2d\x35\x39\x2e\x36\x20\x32\x2e\x36\x20\x2d\ \x35\x36\x2e\x38\x20\x32\x2e\x36\x20\x2d\x35\x36\x2e\x38\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x31\x37\x2e\x38\x20\x2d\x34\x31\x2e\x36\ \x43\x2d\x31\x37\x2e\x38\x20\x2d\x34\x31\x2e\x36\x20\x2d\x33\x30\ \x2e\x36\x20\x2d\x34\x31\x2e\x36\x20\x2d\x33\x33\x2e\x38\x20\x2d\ \x33\x36\x2e\x34\x4c\x2d\x34\x31\x20\x2d\x32\x36\x2e\x38\x43\x2d\ \x34\x31\x20\x2d\x32\x36\x2e\x38\x20\x2d\x32\x33\x2e\x38\x20\x2d\ \x33\x36\x2e\x38\x20\x2d\x31\x39\x2e\x38\x20\x2d\x33\x38\x43\x2d\ \x31\x35\x2e\x38\x20\x2d\x33\x39\x2e\x32\x20\x2d\x31\x37\x2e\x38\ \x20\x2d\x34\x31\x2e\x36\x20\x2d\x31\x37\x2e\x38\x20\x2d\x34\x31\ \x2e\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x35\x37\x2e\x38\x20\x2d\ \x33\x35\x2e\x32\x43\x2d\x35\x37\x2e\x38\x20\x2d\x33\x35\x2e\x32\ \x20\x2d\x35\x39\x2e\x38\x20\x2d\x33\x34\x20\x2d\x36\x30\x2e\x32\ \x20\x2d\x33\x31\x2e\x32\x43\x2d\x36\x30\x2e\x36\x20\x2d\x32\x38\ \x2e\x34\x20\x2d\x36\x33\x20\x2d\x32\x38\x20\x2d\x36\x32\x2e\x32\ \x20\x2d\x32\x35\x2e\x32\x43\x2d\x36\x31\x2e\x34\x20\x2d\x32\x32\ \x2e\x34\x20\x2d\x35\x39\x2e\x34\x20\x2d\x32\x30\x20\x2d\x35\x39\ \x2e\x34\x20\x2d\x32\x34\x43\x2d\x35\x39\x2e\x34\x20\x2d\x32\x38\ \x20\x2d\x35\x37\x2e\x38\x20\x2d\x33\x30\x20\x2d\x35\x37\x20\x2d\ \x33\x31\x2e\x32\x43\x2d\x35\x36\x2e\x32\x20\x2d\x33\x32\x2e\x34\ \x20\x2d\x35\x34\x2e\x36\x20\x2d\x33\x36\x2e\x38\x20\x2d\x35\x37\ \x2e\x38\x20\x2d\x33\x35\x2e\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\ \x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x36\x36\x2e\x36\x20\x32\x36\x43\x2d\x36\x36\x2e\x36\x20\x32\x36\ \x20\x2d\x37\x35\x20\x32\x32\x20\x2d\x37\x38\x2e\x32\x20\x31\x38\ \x2e\x34\x43\x2d\x38\x31\x2e\x34\x20\x31\x34\x2e\x38\x20\x2d\x38\ \x30\x2e\x39\x34\x38\x20\x31\x39\x2e\x39\x36\x36\x20\x2d\x38\x35\ \x2e\x38\x20\x31\x39\x2e\x36\x43\x2d\x39\x31\x2e\x36\x34\x37\x20\ \x31\x39\x2e\x31\x35\x39\x20\x2d\x39\x30\x2e\x36\x20\x33\x2e\x32\ \x20\x2d\x39\x30\x2e\x36\x20\x33\x2e\x32\x4c\x2d\x39\x34\x2e\x36\ \x20\x31\x30\x2e\x38\x43\x2d\x39\x34\x2e\x36\x20\x31\x30\x2e\x38\ \x20\x2d\x39\x35\x2e\x38\x20\x32\x35\x2e\x32\x20\x2d\x38\x37\x2e\ \x38\x20\x32\x32\x2e\x38\x43\x2d\x38\x33\x2e\x38\x39\x33\x20\x32\ \x31\x2e\x36\x32\x38\x20\x2d\x38\x32\x2e\x36\x20\x32\x33\x2e\x32\ \x20\x2d\x38\x34\x2e\x32\x20\x32\x34\x43\x2d\x38\x35\x2e\x38\x20\ \x32\x34\x2e\x38\x20\x2d\x37\x38\x2e\x36\x20\x32\x35\x2e\x32\x20\ \x2d\x38\x31\x2e\x34\x20\x32\x36\x2e\x38\x43\x2d\x38\x34\x2e\x32\ \x20\x32\x38\x2e\x34\x20\x2d\x36\x39\x2e\x38\x20\x32\x33\x2e\x32\ \x20\x2d\x37\x32\x2e\x32\x20\x33\x33\x2e\x36\x4c\x2d\x36\x36\x2e\ \x36\x20\x32\x36\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x37\x39\x2e\x32\ \x20\x34\x30\x2e\x34\x43\x2d\x37\x39\x2e\x32\x20\x34\x30\x2e\x34\ \x20\x2d\x39\x34\x2e\x36\x20\x34\x34\x2e\x38\x20\x2d\x39\x38\x2e\ \x32\x20\x33\x35\x2e\x32\x43\x2d\x39\x38\x2e\x32\x20\x33\x35\x2e\ \x32\x20\x2d\x31\x30\x33\x20\x33\x37\x2e\x36\x20\x2d\x31\x30\x30\ \x2e\x38\x20\x34\x30\x2e\x36\x43\x2d\x39\x38\x2e\x36\x20\x34\x33\ \x2e\x36\x20\x2d\x39\x37\x2e\x34\x20\x34\x34\x20\x2d\x39\x37\x2e\ \x34\x20\x34\x34\x43\x2d\x39\x37\x2e\x34\x20\x34\x34\x20\x2d\x39\ \x32\x20\x34\x35\x2e\x32\x20\x2d\x39\x32\x2e\x36\x20\x34\x36\x43\ \x2d\x39\x33\x2e\x32\x20\x34\x36\x2e\x38\x20\x2d\x39\x35\x2e\x36\ \x20\x35\x30\x2e\x32\x20\x2d\x39\x35\x2e\x36\x20\x35\x30\x2e\x32\ \x43\x2d\x39\x35\x2e\x36\x20\x35\x30\x2e\x32\x20\x2d\x38\x35\x2e\ \x34\x20\x34\x34\x2e\x32\x20\x2d\x37\x39\x2e\x32\x20\x34\x30\x2e\ \x34\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x34\x39\x2e\x32\x30\x31\x20\ \x31\x31\x38\x2e\x36\x30\x31\x43\x31\x34\x38\x2e\x37\x37\x34\x20\ \x31\x32\x30\x2e\x37\x33\x35\x20\x31\x34\x37\x2e\x31\x30\x33\x20\ \x31\x32\x31\x2e\x35\x33\x36\x20\x31\x34\x35\x2e\x32\x30\x31\x20\ \x31\x32\x32\x2e\x32\x30\x31\x43\x31\x34\x33\x2e\x32\x38\x34\x20\ \x31\x32\x31\x2e\x32\x34\x33\x20\x31\x34\x30\x2e\x36\x38\x36\x20\ \x31\x31\x38\x2e\x31\x33\x37\x20\x31\x33\x38\x2e\x38\x30\x31\x20\ \x31\x32\x30\x2e\x32\x30\x31\x43\x31\x33\x38\x2e\x33\x32\x37\x20\ \x31\x31\x39\x2e\x37\x32\x31\x20\x31\x33\x37\x2e\x35\x34\x38\x20\ \x31\x31\x39\x2e\x36\x36\x31\x20\x31\x33\x37\x2e\x32\x30\x34\x20\ \x31\x31\x38\x2e\x39\x39\x39\x43\x31\x33\x36\x2e\x37\x33\x39\x20\ \x31\x31\x38\x2e\x31\x30\x31\x20\x31\x33\x37\x2e\x30\x31\x31\x20\ \x31\x31\x37\x2e\x30\x35\x35\x20\x31\x33\x36\x2e\x36\x36\x39\x20\ \x31\x31\x36\x2e\x32\x35\x37\x43\x31\x33\x36\x2e\x31\x32\x34\x20\ \x31\x31\x34\x2e\x39\x38\x35\x20\x31\x33\x35\x2e\x34\x31\x35\x20\ \x31\x31\x33\x2e\x36\x31\x39\x20\x31\x33\x35\x2e\x36\x30\x31\x20\ \x31\x31\x32\x2e\x32\x30\x31\x43\x31\x33\x37\x2e\x34\x30\x37\x20\ \x31\x31\x31\x2e\x34\x38\x39\x20\x31\x33\x38\x2e\x30\x30\x32\x20\ \x31\x30\x39\x2e\x35\x38\x33\x20\x31\x33\x37\x2e\x35\x32\x38\x20\ \x31\x30\x37\x2e\x38\x32\x43\x31\x33\x37\x2e\x34\x35\x39\x20\x31\ \x30\x37\x2e\x35\x36\x33\x20\x31\x33\x37\x2e\x30\x33\x20\x31\x30\ \x37\x2e\x33\x36\x36\x20\x31\x33\x37\x2e\x32\x33\x20\x31\x30\x37\ \x2e\x30\x31\x37\x43\x31\x33\x37\x2e\x34\x31\x36\x20\x31\x30\x36\ \x2e\x36\x39\x34\x20\x31\x33\x37\x2e\x37\x33\x34\x20\x31\x30\x36\ \x2e\x34\x36\x37\x20\x31\x33\x38\x2e\x30\x30\x31\x20\x31\x30\x36\ \x2e\x32\x43\x31\x33\x37\x2e\x38\x36\x36\x20\x31\x30\x36\x2e\x33\ \x33\x35\x20\x31\x33\x37\x2e\x37\x32\x31\x20\x31\x30\x36\x2e\x35\ \x36\x38\x20\x31\x33\x37\x2e\x36\x31\x20\x31\x30\x36\x2e\x35\x34\ \x38\x43\x31\x33\x37\x20\x31\x30\x36\x2e\x34\x34\x32\x20\x31\x33\ \x37\x2e\x31\x32\x34\x20\x31\x30\x35\x2e\x38\x30\x35\x20\x31\x33\ \x37\x2e\x32\x35\x34\x20\x31\x30\x35\x2e\x34\x31\x38\x43\x31\x33\ \x37\x2e\x38\x33\x39\x20\x31\x30\x33\x2e\x36\x37\x32\x20\x31\x33\ \x39\x2e\x38\x35\x33\x20\x31\x30\x33\x2e\x34\x30\x38\x20\x31\x34\ \x31\x2e\x32\x30\x31\x20\x31\x30\x34\x2e\x36\x43\x31\x34\x31\x2e\ \x34\x35\x37\x20\x31\x30\x34\x2e\x30\x33\x35\x20\x31\x34\x31\x2e\ \x39\x36\x36\x20\x31\x30\x34\x2e\x32\x32\x39\x20\x31\x34\x32\x2e\ \x34\x30\x31\x20\x31\x30\x34\x2e\x32\x43\x31\x34\x32\x2e\x33\x35\ \x31\x20\x31\x30\x33\x2e\x36\x32\x31\x20\x31\x34\x32\x2e\x37\x35\ \x39\x20\x31\x30\x33\x2e\x30\x39\x34\x20\x31\x34\x32\x2e\x39\x35\ \x37\x20\x31\x30\x32\x2e\x36\x37\x34\x43\x31\x34\x33\x2e\x34\x37\ \x35\x20\x31\x30\x31\x2e\x35\x37\x36\x20\x31\x34\x35\x2e\x31\x30\ \x34\x20\x31\x30\x32\x2e\x36\x38\x32\x20\x31\x34\x35\x2e\x39\x30\ \x31\x20\x31\x30\x32\x2e\x30\x37\x43\x31\x34\x36\x2e\x39\x37\x37\ \x20\x31\x30\x31\x2e\x32\x34\x35\x20\x31\x34\x38\x2e\x30\x34\x20\ \x31\x30\x30\x2e\x35\x34\x36\x20\x31\x34\x39\x2e\x31\x31\x38\x20\ \x31\x30\x31\x2e\x31\x34\x39\x43\x31\x35\x30\x2e\x39\x32\x37\x20\ \x31\x30\x32\x2e\x31\x36\x32\x20\x31\x35\x32\x2e\x36\x33\x36\x20\ \x31\x30\x33\x2e\x33\x37\x34\x20\x31\x35\x33\x2e\x38\x33\x35\x20\ \x31\x30\x35\x2e\x31\x31\x35\x43\x31\x35\x34\x2e\x34\x31\x20\x31\ \x30\x35\x2e\x39\x34\x39\x20\x31\x35\x34\x2e\x36\x35\x20\x31\x30\ \x37\x2e\x32\x33\x20\x31\x35\x34\x2e\x35\x39\x32\x20\x31\x30\x38\ \x2e\x31\x38\x38\x43\x31\x35\x34\x2e\x35\x35\x34\x20\x31\x30\x38\ \x2e\x38\x33\x35\x20\x31\x35\x33\x2e\x31\x37\x33\x20\x31\x30\x38\ \x2e\x34\x38\x33\x20\x31\x35\x32\x2e\x38\x33\x20\x31\x30\x39\x2e\ \x34\x31\x32\x43\x31\x35\x32\x2e\x31\x38\x35\x20\x31\x31\x31\x2e\ \x31\x36\x20\x31\x35\x34\x2e\x30\x31\x36\x20\x31\x31\x31\x2e\x36\ \x37\x39\x20\x31\x35\x34\x2e\x37\x37\x32\x20\x31\x31\x33\x2e\x30\ \x31\x37\x43\x31\x35\x34\x2e\x39\x37\x20\x31\x31\x33\x2e\x33\x36\ \x36\x20\x31\x35\x34\x2e\x37\x30\x36\x20\x31\x31\x33\x2e\x36\x37\ \x20\x31\x35\x34\x2e\x33\x39\x31\x20\x31\x31\x33\x2e\x37\x36\x38\ \x43\x31\x35\x33\x2e\x39\x38\x20\x31\x31\x33\x2e\x38\x39\x36\x20\ \x31\x35\x33\x2e\x31\x39\x36\x20\x31\x31\x33\x2e\x37\x30\x37\x20\ \x31\x35\x33\x2e\x33\x33\x34\x20\x31\x31\x34\x2e\x31\x36\x43\x31\ \x35\x34\x2e\x33\x30\x36\x20\x31\x31\x37\x2e\x33\x35\x33\x20\x31\ \x35\x31\x2e\x35\x35\x20\x31\x31\x38\x2e\x30\x33\x31\x20\x31\x34\ \x39\x2e\x32\x30\x31\x20\x31\x31\x38\x2e\x36\x30\x31\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x66\x66\x66\x66\x66\x66\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x31\x33\x39\x2e\x36\x20\x31\x33\x38\x2e\x32\x30\ \x31\x43\x31\x33\x39\x2e\x35\x39\x33\x20\x31\x33\x36\x2e\x34\x36\ \x33\x20\x31\x33\x37\x2e\x39\x39\x32\x20\x31\x33\x34\x2e\x37\x30\ \x37\x20\x31\x33\x39\x2e\x32\x30\x31\x20\x31\x33\x33\x2e\x30\x30\ \x31\x43\x31\x33\x39\x2e\x33\x33\x36\x20\x31\x33\x33\x2e\x31\x33\ \x35\x20\x31\x33\x39\x2e\x34\x36\x37\x20\x31\x33\x33\x2e\x33\x35\ \x36\x20\x31\x33\x39\x2e\x36\x30\x31\x20\x31\x33\x33\x2e\x33\x35\ \x36\x43\x31\x33\x39\x2e\x37\x33\x36\x20\x31\x33\x33\x2e\x33\x35\ \x36\x20\x31\x33\x39\x2e\x38\x36\x37\x20\x31\x33\x33\x2e\x31\x33\ \x35\x20\x31\x34\x30\x2e\x30\x30\x31\x20\x31\x33\x33\x2e\x30\x30\ \x31\x43\x31\x34\x31\x2e\x34\x39\x36\x20\x31\x33\x35\x2e\x32\x31\ \x37\x20\x31\x34\x35\x2e\x31\x34\x38\x20\x31\x33\x36\x2e\x31\x34\ \x35\x20\x31\x34\x35\x2e\x30\x30\x36\x20\x31\x33\x38\x2e\x39\x39\ \x31\x43\x31\x34\x34\x2e\x39\x38\x34\x20\x31\x33\x39\x2e\x34\x33\ \x38\x20\x31\x34\x33\x2e\x38\x39\x37\x20\x31\x34\x30\x2e\x33\x35\ \x36\x20\x31\x34\x34\x2e\x38\x30\x31\x20\x31\x34\x31\x2e\x30\x30\ \x31\x43\x31\x34\x32\x2e\x39\x38\x38\x20\x31\x34\x32\x2e\x33\x34\ \x39\x20\x31\x34\x32\x2e\x39\x33\x33\x20\x31\x34\x34\x2e\x37\x31\ \x39\x20\x31\x34\x32\x2e\x30\x30\x31\x20\x31\x34\x36\x2e\x36\x30\ \x31\x43\x31\x34\x30\x2e\x37\x36\x33\x20\x31\x34\x36\x2e\x33\x31\ \x35\x20\x31\x33\x39\x2e\x35\x35\x31\x20\x31\x34\x35\x2e\x39\x35\ \x32\x20\x31\x33\x38\x2e\x34\x30\x31\x20\x31\x34\x35\x2e\x34\x30\ \x31\x43\x31\x33\x38\x2e\x37\x35\x33\x20\x31\x34\x33\x2e\x39\x31\ \x35\x20\x31\x33\x38\x2e\x36\x33\x36\x20\x31\x34\x32\x2e\x32\x33\ \x31\x20\x31\x33\x39\x2e\x34\x35\x36\x20\x31\x34\x30\x2e\x39\x31\ \x31\x43\x31\x33\x39\x2e\x38\x39\x20\x31\x34\x30\x2e\x32\x31\x33\ \x20\x31\x33\x39\x2e\x36\x30\x33\x20\x31\x33\x39\x2e\x31\x33\x34\ \x20\x31\x33\x39\x2e\x36\x20\x31\x33\x38\x2e\x32\x30\x31\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x32\x36\x2e\x36\x20\x31\x32\x39\x2e\x32\ \x30\x31\x43\x2d\x32\x36\x2e\x36\x20\x31\x32\x39\x2e\x32\x30\x31\ \x20\x2d\x34\x33\x2e\x34\x35\x38\x20\x31\x33\x39\x2e\x33\x33\x37\ \x20\x2d\x32\x39\x2e\x34\x20\x31\x32\x34\x2e\x30\x30\x31\x43\x2d\ \x32\x30\x2e\x36\x20\x31\x31\x34\x2e\x34\x30\x31\x20\x2d\x31\x30\ \x2e\x36\x20\x31\x30\x38\x2e\x38\x30\x31\x20\x2d\x31\x30\x2e\x36\ \x20\x31\x30\x38\x2e\x38\x30\x31\x43\x2d\x31\x30\x2e\x36\x20\x31\ \x30\x38\x2e\x38\x30\x31\x20\x2d\x30\x2e\x32\x20\x31\x30\x34\x2e\ \x34\x20\x33\x2e\x34\x20\x31\x30\x33\x2e\x32\x43\x37\x20\x31\x30\ \x32\x20\x32\x32\x2e\x32\x20\x39\x36\x2e\x38\x20\x32\x35\x2e\x34\ \x20\x39\x36\x2e\x34\x43\x32\x38\x2e\x36\x20\x39\x36\x20\x33\x38\ \x2e\x32\x20\x39\x32\x20\x34\x35\x20\x39\x36\x43\x35\x31\x2e\x38\ \x20\x31\x30\x30\x20\x35\x39\x2e\x38\x20\x31\x30\x34\x2e\x34\x20\ \x35\x39\x2e\x38\x20\x31\x30\x34\x2e\x34\x43\x35\x39\x2e\x38\x20\ \x31\x30\x34\x2e\x34\x20\x34\x33\x2e\x34\x20\x39\x36\x20\x33\x39\ \x2e\x38\x20\x39\x38\x2e\x34\x43\x33\x36\x2e\x32\x20\x31\x30\x30\ \x2e\x38\x20\x32\x39\x20\x31\x30\x30\x2e\x34\x20\x32\x33\x20\x31\ \x30\x33\x2e\x36\x43\x32\x33\x20\x31\x30\x33\x2e\x36\x20\x38\x2e\ \x32\x20\x31\x30\x38\x2e\x30\x30\x31\x20\x35\x20\x31\x31\x30\x2e\ \x30\x30\x31\x43\x31\x2e\x38\x20\x31\x31\x32\x2e\x30\x30\x31\x20\ \x2d\x38\x2e\x36\x20\x31\x32\x33\x2e\x36\x30\x31\x20\x2d\x31\x30\ \x2e\x32\x20\x31\x32\x32\x2e\x38\x30\x31\x43\x2d\x31\x31\x2e\x38\ \x20\x31\x32\x32\x2e\x30\x30\x31\x20\x2d\x39\x2e\x38\x20\x31\x32\ \x31\x2e\x36\x30\x31\x20\x2d\x38\x2e\x36\x20\x31\x31\x38\x2e\x38\ \x30\x31\x43\x2d\x37\x2e\x34\x20\x31\x31\x36\x2e\x30\x30\x31\x20\ \x2d\x39\x2e\x34\x20\x31\x31\x34\x2e\x34\x30\x31\x20\x2d\x31\x37\ \x2e\x34\x20\x31\x32\x30\x2e\x38\x30\x31\x43\x2d\x32\x35\x2e\x34\ \x20\x31\x32\x37\x2e\x32\x30\x31\x20\x2d\x32\x36\x2e\x36\x20\x31\ \x32\x39\x2e\x32\x30\x31\x20\x2d\x32\x36\x2e\x36\x20\x31\x32\x39\ \x2e\x32\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x39\x2e\x31\ \x39\x35\x20\x31\x32\x33\x2e\x32\x33\x34\x43\x2d\x31\x39\x2e\x31\ \x39\x35\x20\x31\x32\x33\x2e\x32\x33\x34\x20\x2d\x31\x37\x2e\x37\ \x38\x35\x20\x31\x31\x30\x2e\x31\x39\x34\x20\x2d\x39\x2e\x33\x30\ \x37\x20\x31\x31\x31\x2e\x38\x35\x39\x43\x2d\x39\x2e\x33\x30\x37\ \x20\x31\x31\x31\x2e\x38\x35\x39\x20\x2d\x31\x2e\x30\x38\x31\x20\ \x31\x30\x37\x2e\x36\x38\x39\x20\x31\x2e\x36\x34\x31\x20\x31\x30\ \x35\x2e\x37\x32\x31\x43\x31\x2e\x36\x34\x31\x20\x31\x30\x35\x2e\ \x37\x32\x31\x20\x39\x2e\x37\x38\x20\x31\x30\x34\x2e\x30\x31\x39\ \x20\x31\x31\x2e\x30\x39\x20\x31\x30\x33\x2e\x34\x30\x32\x43\x32\ \x39\x2e\x35\x36\x39\x20\x39\x34\x2e\x37\x30\x32\x20\x34\x34\x2e\ \x32\x38\x38\x20\x39\x39\x2e\x32\x32\x31\x20\x34\x34\x2e\x38\x33\ \x35\x20\x39\x38\x2e\x31\x30\x31\x43\x34\x35\x2e\x33\x38\x31\x20\ \x39\x36\x2e\x39\x38\x32\x20\x36\x35\x2e\x30\x30\x36\x20\x31\x30\ \x34\x2e\x30\x39\x39\x20\x36\x38\x2e\x36\x31\x35\x20\x31\x30\x38\ \x2e\x31\x38\x35\x43\x36\x39\x2e\x30\x30\x36\x20\x31\x30\x38\x2e\ \x36\x32\x38\x20\x35\x38\x2e\x33\x38\x34\x20\x31\x30\x32\x2e\x35\ \x38\x38\x20\x34\x38\x2e\x36\x38\x36\x20\x31\x30\x30\x2e\x36\x39\ \x37\x43\x34\x30\x2e\x34\x31\x33\x20\x39\x39\x2e\x30\x38\x33\x20\ \x31\x38\x2e\x38\x31\x31\x20\x31\x30\x30\x2e\x39\x34\x34\x20\x37\ \x2e\x39\x30\x35\x20\x31\x30\x36\x2e\x34\x38\x43\x34\x2e\x39\x33\ \x32\x20\x31\x30\x37\x2e\x39\x38\x39\x20\x2d\x34\x2e\x30\x31\x33\ \x20\x31\x31\x33\x2e\x37\x37\x33\x20\x2d\x36\x2e\x35\x34\x34\x20\ \x31\x31\x33\x2e\x36\x36\x32\x43\x2d\x39\x2e\x30\x37\x35\x20\x31\ \x31\x33\x2e\x35\x35\x20\x2d\x31\x39\x2e\x31\x39\x35\x20\x31\x32\ \x33\x2e\x32\x33\x34\x20\x2d\x31\x39\x2e\x31\x39\x35\x20\x31\x32\ \x33\x2e\x32\x33\x34\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x32\x33\x20\ \x31\x34\x38\x2e\x38\x30\x31\x43\x2d\x32\x33\x20\x31\x34\x38\x2e\ \x38\x30\x31\x20\x2d\x33\x38\x2e\x32\x20\x31\x34\x36\x2e\x34\x30\ \x31\x20\x2d\x32\x31\x2e\x34\x20\x31\x34\x34\x2e\x38\x30\x31\x43\ \x2d\x32\x31\x2e\x34\x20\x31\x34\x34\x2e\x38\x30\x31\x20\x2d\x33\ \x2e\x34\x20\x31\x34\x32\x2e\x38\x30\x31\x20\x30\x2e\x36\x20\x31\ \x33\x37\x2e\x36\x30\x31\x43\x30\x2e\x36\x20\x31\x33\x37\x2e\x36\ \x30\x31\x20\x31\x34\x2e\x32\x20\x31\x32\x38\x2e\x34\x30\x31\x20\ \x31\x37\x20\x31\x32\x38\x2e\x30\x30\x31\x43\x31\x39\x2e\x38\x20\ \x31\x32\x37\x2e\x36\x30\x31\x20\x34\x39\x2e\x38\x20\x31\x32\x30\ \x2e\x34\x30\x31\x20\x35\x30\x2e\x32\x20\x31\x31\x38\x2e\x30\x30\ \x31\x43\x35\x30\x2e\x36\x20\x31\x31\x35\x2e\x36\x30\x31\x20\x35\ \x36\x2e\x32\x20\x31\x31\x35\x2e\x36\x30\x31\x20\x35\x37\x2e\x38\ \x20\x31\x31\x36\x2e\x34\x30\x31\x43\x35\x39\x2e\x34\x20\x31\x31\ \x37\x2e\x32\x30\x31\x20\x35\x38\x2e\x36\x20\x31\x31\x38\x2e\x34\ \x30\x31\x20\x35\x35\x2e\x38\x20\x31\x31\x39\x2e\x32\x30\x31\x43\ \x35\x33\x20\x31\x32\x30\x2e\x30\x30\x31\x20\x32\x31\x2e\x38\x20\ \x31\x33\x36\x2e\x34\x30\x31\x20\x31\x35\x2e\x34\x20\x31\x33\x37\ \x2e\x36\x30\x31\x43\x39\x20\x31\x33\x38\x2e\x38\x30\x31\x20\x2d\ \x32\x2e\x36\x20\x31\x34\x36\x2e\x34\x30\x31\x20\x2d\x37\x2e\x34\ \x20\x31\x34\x37\x2e\x36\x30\x31\x43\x2d\x31\x32\x2e\x32\x20\x31\ \x34\x38\x2e\x38\x30\x31\x20\x2d\x32\x33\x20\x31\x34\x38\x2e\x38\ \x30\x31\x20\x2d\x32\x33\x20\x31\x34\x38\x2e\x38\x30\x31\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x33\x2e\x34\x38\x20\x31\x34\x31\x2e\x34\ \x30\x33\x43\x2d\x33\x2e\x34\x38\x20\x31\x34\x31\x2e\x34\x30\x33\ \x20\x2d\x31\x32\x2e\x30\x36\x32\x20\x31\x34\x30\x2e\x35\x37\x34\ \x20\x2d\x33\x2e\x34\x36\x31\x20\x31\x33\x39\x2e\x37\x35\x35\x43\ \x2d\x33\x2e\x34\x36\x31\x20\x31\x33\x39\x2e\x37\x35\x35\x20\x35\ \x2e\x33\x35\x35\x20\x31\x33\x36\x2e\x33\x33\x31\x20\x37\x2e\x34\ \x30\x33\x20\x31\x33\x33\x2e\x36\x36\x38\x43\x37\x2e\x34\x30\x33\ \x20\x31\x33\x33\x2e\x36\x36\x38\x20\x31\x34\x2e\x33\x36\x37\x20\ \x31\x32\x38\x2e\x39\x35\x37\x20\x31\x35\x2e\x38\x20\x31\x32\x38\ \x2e\x37\x35\x33\x43\x31\x37\x2e\x32\x33\x34\x20\x31\x32\x38\x2e\ \x35\x34\x38\x20\x33\x31\x2e\x31\x39\x34\x20\x31\x32\x34\x2e\x38\ \x36\x31\x20\x33\x31\x2e\x33\x39\x39\x20\x31\x32\x33\x2e\x36\x33\ \x33\x43\x33\x31\x2e\x36\x30\x34\x20\x31\x32\x32\x2e\x34\x30\x34\ \x20\x36\x35\x2e\x36\x37\x20\x31\x30\x39\x2e\x38\x32\x33\x20\x37\ \x30\x2e\x30\x39\x20\x31\x31\x33\x2e\x30\x31\x33\x43\x37\x33\x2e\ \x30\x30\x31\x20\x31\x31\x35\x2e\x31\x31\x34\x20\x36\x33\x2e\x31\ \x20\x31\x31\x33\x2e\x34\x33\x37\x20\x35\x33\x2e\x34\x36\x36\x20\ \x31\x31\x37\x2e\x38\x34\x37\x43\x35\x32\x2e\x31\x31\x31\x20\x31\ \x31\x38\x2e\x34\x36\x37\x20\x31\x38\x2e\x32\x35\x38\x20\x31\x33\ \x33\x2e\x30\x35\x34\x20\x31\x34\x2e\x39\x38\x31\x20\x31\x33\x33\ \x2e\x36\x36\x38\x43\x31\x31\x2e\x37\x30\x34\x20\x31\x33\x34\x2e\ \x32\x38\x33\x20\x35\x2e\x37\x36\x35\x20\x31\x33\x38\x2e\x31\x37\ \x34\x20\x33\x2e\x33\x30\x37\x20\x31\x33\x38\x2e\x37\x38\x38\x43\ \x30\x2e\x38\x35\x20\x31\x33\x39\x2e\x34\x30\x33\x20\x2d\x33\x2e\ \x34\x38\x20\x31\x34\x31\x2e\x34\x30\x33\x20\x2d\x33\x2e\x34\x38\ \x20\x31\x34\x31\x2e\x34\x30\x33\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\ \x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x31\x31\x2e\x34\x20\x31\x34\x33\x2e\x36\x30\x31\x43\x2d\x31\x31\ \x2e\x34\x20\x31\x34\x33\x2e\x36\x30\x31\x20\x2d\x36\x2e\x32\x20\ \x31\x34\x33\x2e\x32\x30\x31\x20\x2d\x37\x2e\x34\x20\x31\x34\x34\ \x2e\x38\x30\x31\x43\x2d\x38\x2e\x36\x20\x31\x34\x36\x2e\x34\x30\ \x31\x20\x2d\x31\x31\x20\x31\x34\x35\x2e\x36\x30\x31\x20\x2d\x31\ \x31\x20\x31\x34\x35\x2e\x36\x30\x31\x4c\x2d\x31\x31\x2e\x34\x20\ \x31\x34\x33\x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\ \x38\x2e\x36\x20\x31\x34\x35\x2e\x32\x30\x31\x43\x2d\x31\x38\x2e\ \x36\x20\x31\x34\x35\x2e\x32\x30\x31\x20\x2d\x31\x33\x2e\x34\x20\ \x31\x34\x34\x2e\x38\x30\x31\x20\x2d\x31\x34\x2e\x36\x20\x31\x34\ \x36\x2e\x34\x30\x31\x43\x2d\x31\x35\x2e\x38\x20\x31\x34\x38\x2e\ \x30\x30\x31\x20\x2d\x31\x38\x2e\x32\x20\x31\x34\x37\x2e\x32\x30\ \x31\x20\x2d\x31\x38\x2e\x32\x20\x31\x34\x37\x2e\x32\x30\x31\x4c\ \x2d\x31\x38\x2e\x36\x20\x31\x34\x35\x2e\x32\x30\x31\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x32\x39\x20\x31\x34\x36\x2e\x38\x30\x31\x43\ \x2d\x32\x39\x20\x31\x34\x36\x2e\x38\x30\x31\x20\x2d\x32\x33\x2e\ \x38\x20\x31\x34\x36\x2e\x34\x30\x31\x20\x2d\x32\x35\x20\x31\x34\ \x38\x2e\x30\x30\x31\x43\x2d\x32\x36\x2e\x32\x20\x31\x34\x39\x2e\ \x36\x30\x31\x20\x2d\x32\x38\x2e\x36\x20\x31\x34\x38\x2e\x38\x30\ \x31\x20\x2d\x32\x38\x2e\x36\x20\x31\x34\x38\x2e\x38\x30\x31\x4c\ \x2d\x32\x39\x20\x31\x34\x36\x2e\x38\x30\x31\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\ \x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x2d\x33\x36\x2e\x36\x20\x31\x34\x37\x2e\x36\x30\x31\x43\ \x2d\x33\x36\x2e\x36\x20\x31\x34\x37\x2e\x36\x30\x31\x20\x2d\x33\ \x31\x2e\x34\x20\x31\x34\x37\x2e\x32\x30\x31\x20\x2d\x33\x32\x2e\ \x36\x20\x31\x34\x38\x2e\x38\x30\x31\x43\x2d\x33\x33\x2e\x38\x20\ \x31\x35\x30\x2e\x34\x30\x31\x20\x2d\x33\x36\x2e\x32\x20\x31\x34\ \x39\x2e\x36\x30\x31\x20\x2d\x33\x36\x2e\x32\x20\x31\x34\x39\x2e\ \x36\x30\x31\x4c\x2d\x33\x36\x2e\x36\x20\x31\x34\x37\x2e\x36\x30\ \x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x2e\x38\x20\x31\x30\x38\x2e\ \x30\x30\x31\x43\x31\x2e\x38\x20\x31\x30\x38\x2e\x30\x30\x31\x20\ \x36\x2e\x32\x20\x31\x30\x38\x2e\x30\x30\x31\x20\x35\x20\x31\x30\ \x39\x2e\x36\x30\x31\x43\x33\x2e\x38\x20\x31\x31\x31\x2e\x32\x30\ \x31\x20\x30\x2e\x36\x20\x31\x31\x30\x2e\x38\x30\x31\x20\x30\x2e\ \x36\x20\x31\x31\x30\x2e\x38\x30\x31\x4c\x31\x2e\x38\x20\x31\x30\ \x38\x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x38\x2e\x32\ \x20\x31\x31\x33\x2e\x36\x30\x31\x43\x2d\x38\x2e\x32\x20\x31\x31\ \x33\x2e\x36\x30\x31\x20\x2d\x31\x2e\x36\x39\x34\x20\x31\x31\x31\ \x2e\x34\x36\x20\x2d\x34\x2e\x32\x20\x31\x31\x34\x2e\x38\x30\x31\ \x43\x2d\x35\x2e\x34\x20\x31\x31\x36\x2e\x34\x30\x31\x20\x2d\x37\ \x2e\x38\x20\x31\x31\x35\x2e\x36\x30\x31\x20\x2d\x37\x2e\x38\x20\ \x31\x31\x35\x2e\x36\x30\x31\x4c\x2d\x38\x2e\x32\x20\x31\x31\x33\ \x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x39\x2e\x34\ \x20\x31\x31\x38\x2e\x34\x30\x31\x43\x2d\x31\x39\x2e\x34\x20\x31\ \x31\x38\x2e\x34\x30\x31\x20\x2d\x31\x34\x2e\x32\x20\x31\x31\x38\ \x2e\x30\x30\x31\x20\x2d\x31\x35\x2e\x34\x20\x31\x31\x39\x2e\x36\ \x30\x31\x43\x2d\x31\x36\x2e\x36\x20\x31\x32\x31\x2e\x32\x30\x31\ \x20\x2d\x31\x39\x20\x31\x32\x30\x2e\x34\x30\x31\x20\x2d\x31\x39\ \x20\x31\x32\x30\x2e\x34\x30\x31\x4c\x2d\x31\x39\x2e\x34\x20\x31\ \x31\x38\x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x32\x37\ \x20\x31\x32\x34\x2e\x34\x30\x31\x43\x2d\x32\x37\x20\x31\x32\x34\ \x2e\x34\x30\x31\x20\x2d\x32\x31\x2e\x38\x20\x31\x32\x34\x2e\x30\ \x30\x31\x20\x2d\x32\x33\x20\x31\x32\x35\x2e\x36\x30\x31\x43\x2d\ \x32\x34\x2e\x32\x20\x31\x32\x37\x2e\x32\x30\x31\x20\x2d\x32\x36\ \x2e\x36\x20\x31\x32\x36\x2e\x34\x30\x31\x20\x2d\x32\x36\x2e\x36\ \x20\x31\x32\x36\x2e\x34\x30\x31\x4c\x2d\x32\x37\x20\x31\x32\x34\ \x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x33\x33\x2e\x38\ \x20\x31\x32\x39\x2e\x32\x30\x31\x43\x2d\x33\x33\x2e\x38\x20\x31\ \x32\x39\x2e\x32\x30\x31\x20\x2d\x32\x38\x2e\x36\x20\x31\x32\x38\ \x2e\x38\x30\x31\x20\x2d\x32\x39\x2e\x38\x20\x31\x33\x30\x2e\x34\ \x30\x31\x43\x2d\x33\x31\x20\x31\x33\x32\x2e\x30\x30\x31\x20\x2d\ \x33\x33\x2e\x34\x20\x31\x33\x31\x2e\x32\x30\x31\x20\x2d\x33\x33\ \x2e\x34\x20\x31\x33\x31\x2e\x32\x30\x31\x4c\x2d\x33\x33\x2e\x38\ \x20\x31\x32\x39\x2e\x32\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\ \x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x35\ \x2e\x32\x38\x32\x20\x31\x33\x35\x2e\x35\x39\x38\x43\x35\x2e\x32\ \x38\x32\x20\x31\x33\x35\x2e\x35\x39\x38\x20\x31\x32\x2e\x32\x30\ \x33\x20\x31\x33\x35\x2e\x30\x36\x36\x20\x31\x30\x2e\x36\x30\x36\ \x20\x31\x33\x37\x2e\x31\x39\x35\x43\x39\x2e\x30\x30\x39\x20\x31\ \x33\x39\x2e\x33\x32\x35\x20\x35\x2e\x38\x31\x34\x20\x31\x33\x38\ \x2e\x32\x36\x20\x35\x2e\x38\x31\x34\x20\x31\x33\x38\x2e\x32\x36\ \x4c\x35\x2e\x32\x38\x32\x20\x31\x33\x35\x2e\x35\x39\x38\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x31\x35\x2e\x36\x38\x32\x20\x31\x33\x30\x2e\ \x37\x39\x38\x43\x31\x35\x2e\x36\x38\x32\x20\x31\x33\x30\x2e\x37\ \x39\x38\x20\x32\x32\x2e\x36\x30\x33\x20\x31\x33\x30\x2e\x32\x36\ \x36\x20\x32\x31\x2e\x30\x30\x36\x20\x31\x33\x32\x2e\x33\x39\x35\ \x43\x31\x39\x2e\x34\x30\x39\x20\x31\x33\x34\x2e\x35\x32\x35\x20\ \x31\x36\x2e\x32\x31\x34\x20\x31\x33\x33\x2e\x34\x36\x20\x31\x36\ \x2e\x32\x31\x34\x20\x31\x33\x33\x2e\x34\x36\x4c\x31\x35\x2e\x36\ \x38\x32\x20\x31\x33\x30\x2e\x37\x39\x38\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x32\x36\x2e\x34\x38\x32\x20\x31\x32\x36\x2e\x33\x39\x38\x43\ \x32\x36\x2e\x34\x38\x32\x20\x31\x32\x36\x2e\x33\x39\x38\x20\x33\ \x33\x2e\x34\x30\x33\x20\x31\x32\x35\x2e\x38\x36\x36\x20\x33\x31\ \x2e\x38\x30\x36\x20\x31\x32\x37\x2e\x39\x39\x35\x43\x33\x30\x2e\ \x32\x30\x39\x20\x31\x33\x30\x2e\x31\x32\x35\x20\x32\x37\x2e\x30\ \x31\x34\x20\x31\x32\x39\x2e\x30\x36\x20\x32\x37\x2e\x30\x31\x34\ \x20\x31\x32\x39\x2e\x30\x36\x4c\x32\x36\x2e\x34\x38\x32\x20\x31\ \x32\x36\x2e\x33\x39\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\x36\x2e\ \x38\x38\x32\x20\x31\x32\x31\x2e\x35\x39\x38\x43\x33\x36\x2e\x38\ \x38\x32\x20\x31\x32\x31\x2e\x35\x39\x38\x20\x34\x33\x2e\x38\x30\ \x33\x20\x31\x32\x31\x2e\x30\x36\x36\x20\x34\x32\x2e\x32\x30\x36\ \x20\x31\x32\x33\x2e\x31\x39\x35\x43\x34\x30\x2e\x36\x30\x39\x20\ \x31\x32\x35\x2e\x33\x32\x35\x20\x33\x37\x2e\x34\x31\x34\x20\x31\ \x32\x34\x2e\x32\x36\x20\x33\x37\x2e\x34\x31\x34\x20\x31\x32\x34\ \x2e\x32\x36\x4c\x33\x36\x2e\x38\x38\x32\x20\x31\x32\x31\x2e\x35\ \x39\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x39\x2e\x32\x38\x32\x20\x31\ \x30\x33\x2e\x35\x39\x38\x43\x39\x2e\x32\x38\x32\x20\x31\x30\x33\ \x2e\x35\x39\x38\x20\x31\x36\x2e\x32\x30\x33\x20\x31\x30\x33\x2e\ \x30\x36\x36\x20\x31\x34\x2e\x36\x30\x36\x20\x31\x30\x35\x2e\x31\ \x39\x35\x43\x31\x33\x2e\x30\x30\x39\x20\x31\x30\x37\x2e\x33\x32\ \x35\x20\x39\x2e\x30\x31\x34\x20\x31\x30\x37\x2e\x30\x36\x20\x39\ \x2e\x30\x31\x34\x20\x31\x30\x37\x2e\x30\x36\x4c\x39\x2e\x32\x38\ \x32\x20\x31\x30\x33\x2e\x35\x39\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\ \x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\ \x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x31\x39\x2e\x32\x38\x32\x20\x31\x30\x30\x2e\x33\x39\x38\x43\x31\ \x39\x2e\x32\x38\x32\x20\x31\x30\x30\x2e\x33\x39\x38\x20\x32\x36\ \x2e\x32\x30\x33\x20\x39\x39\x2e\x38\x36\x36\x20\x32\x34\x2e\x36\ \x30\x36\x20\x31\x30\x31\x2e\x39\x39\x35\x43\x32\x33\x2e\x30\x30\ \x39\x20\x31\x30\x34\x2e\x31\x32\x35\x20\x31\x38\x2e\x36\x31\x34\ \x20\x31\x30\x33\x2e\x38\x36\x20\x31\x38\x2e\x36\x31\x34\x20\x31\ \x30\x33\x2e\x38\x36\x4c\x31\x39\x2e\x32\x38\x32\x20\x31\x30\x30\ \x2e\x33\x39\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x33\x2e\x34\x20\ \x31\x34\x30\x2e\x34\x30\x31\x43\x2d\x33\x2e\x34\x20\x31\x34\x30\ \x2e\x34\x30\x31\x20\x31\x2e\x38\x20\x31\x34\x30\x2e\x30\x30\x31\ \x20\x30\x2e\x36\x20\x31\x34\x31\x2e\x36\x30\x31\x43\x2d\x30\x2e\ \x36\x20\x31\x34\x33\x2e\x32\x30\x31\x20\x2d\x33\x20\x31\x34\x32\ \x2e\x34\x30\x31\x20\x2d\x33\x20\x31\x34\x32\x2e\x34\x30\x31\x4c\ \x2d\x33\x2e\x34\x20\x31\x34\x30\x2e\x34\x30\x31\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x39\ \x39\x32\x36\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x37\x36\x2e\x36\x20\x34\x31\x2e\x32\x43\x2d\x37\ \x36\x2e\x36\x20\x34\x31\x2e\x32\x20\x2d\x38\x31\x20\x35\x30\x20\ \x2d\x38\x31\x2e\x34\x20\x35\x33\x2e\x32\x43\x2d\x38\x31\x2e\x34\ \x20\x35\x33\x2e\x32\x20\x2d\x38\x30\x2e\x36\x20\x34\x34\x2e\x34\ \x20\x2d\x37\x39\x2e\x34\x20\x34\x32\x2e\x34\x43\x2d\x37\x38\x2e\ \x32\x20\x34\x30\x2e\x34\x20\x2d\x37\x36\x2e\x36\x20\x34\x31\x2e\ \x32\x20\x2d\x37\x36\x2e\x36\x20\x34\x31\x2e\x32\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x39\ \x39\x32\x36\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x39\x35\x20\x35\x35\x2e\x32\x43\x2d\x39\x35\x20\ \x35\x35\x2e\x32\x20\x2d\x39\x38\x2e\x32\x20\x36\x39\x2e\x36\x20\ \x2d\x39\x37\x2e\x38\x20\x37\x32\x2e\x34\x43\x2d\x39\x37\x2e\x38\ \x20\x37\x32\x2e\x34\x20\x2d\x39\x39\x20\x36\x30\x2e\x38\x20\x2d\ \x39\x38\x2e\x36\x20\x35\x39\x2e\x36\x43\x2d\x39\x38\x2e\x32\x20\ \x35\x38\x2e\x34\x20\x2d\x39\x35\x20\x35\x35\x2e\x32\x20\x2d\x39\ \x35\x20\x35\x35\x2e\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x37\x34\ \x2e\x32\x20\x2d\x31\x39\x2e\x34\x4c\x2d\x37\x34\x2e\x34\x20\x2d\ \x31\x36\x2e\x32\x4c\x2d\x37\x36\x2e\x36\x20\x2d\x31\x36\x43\x2d\ \x37\x36\x2e\x36\x20\x2d\x31\x36\x20\x2d\x36\x32\x2e\x34\x20\x2d\ \x33\x2e\x34\x20\x2d\x36\x31\x2e\x38\x20\x34\x2e\x32\x43\x2d\x36\ \x31\x2e\x38\x20\x34\x2e\x32\x20\x2d\x36\x31\x20\x2d\x34\x20\x2d\ \x37\x34\x2e\x32\x20\x2d\x31\x39\x2e\x34\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x2d\x37\x30\x2e\x32\x31\x36\x20\x2d\x31\x38\x2e\x31\x33\x35\ \x43\x2d\x37\x30\x2e\x36\x34\x37\x20\x2d\x31\x38\x2e\x35\x35\x31\ \x20\x2d\x37\x30\x2e\x34\x32\x38\x20\x2d\x31\x39\x2e\x32\x39\x36\ \x20\x2d\x37\x30\x2e\x38\x33\x36\x20\x2d\x31\x39\x2e\x35\x35\x36\ \x43\x2d\x37\x31\x2e\x36\x34\x35\x20\x2d\x32\x30\x2e\x30\x37\x32\ \x20\x2d\x36\x39\x2e\x35\x33\x38\x20\x2d\x32\x30\x2e\x31\x32\x39\ \x20\x2d\x36\x39\x2e\x37\x36\x36\x20\x2d\x32\x30\x2e\x38\x34\x35\ \x43\x2d\x37\x30\x2e\x31\x34\x39\x20\x2d\x32\x32\x2e\x30\x35\x31\ \x20\x2d\x36\x39\x2e\x39\x36\x32\x20\x2d\x32\x32\x2e\x30\x37\x32\ \x20\x2d\x37\x30\x2e\x30\x38\x34\x20\x2d\x32\x33\x2e\x33\x34\x38\ \x43\x2d\x37\x30\x2e\x31\x34\x31\x20\x2d\x32\x33\x2e\x39\x34\x36\ \x20\x2d\x36\x39\x2e\x35\x35\x33\x20\x2d\x32\x35\x2e\x34\x38\x36\ \x20\x2d\x36\x39\x2e\x31\x36\x38\x20\x2d\x32\x35\x2e\x39\x32\x36\ \x43\x2d\x36\x37\x2e\x37\x32\x32\x20\x2d\x32\x37\x2e\x35\x37\x38\ \x20\x2d\x36\x39\x2e\x30\x34\x36\x20\x2d\x33\x30\x2e\x35\x31\x20\ \x2d\x36\x37\x2e\x34\x30\x36\x20\x2d\x33\x32\x2e\x30\x36\x31\x43\ \x2d\x36\x37\x2e\x31\x30\x32\x20\x2d\x33\x32\x2e\x33\x35\x20\x2d\ \x36\x36\x2e\x37\x32\x36\x20\x2d\x33\x32\x2e\x39\x30\x32\x20\x2d\ \x36\x36\x2e\x34\x34\x31\x20\x2d\x33\x33\x2e\x33\x32\x43\x2d\x36\ \x35\x2e\x37\x38\x32\x20\x2d\x33\x34\x2e\x32\x38\x33\x20\x2d\x36\ \x34\x2e\x35\x39\x38\x20\x2d\x33\x34\x2e\x37\x37\x31\x20\x2d\x36\ \x33\x2e\x36\x34\x38\x20\x2d\x33\x35\x2e\x35\x39\x39\x43\x2d\x36\ \x33\x2e\x33\x33\x20\x2d\x33\x35\x2e\x38\x37\x35\x20\x2d\x36\x33\ \x2e\x35\x33\x31\x20\x2d\x33\x36\x2e\x37\x30\x32\x20\x2d\x36\x32\ \x2e\x39\x36\x32\x20\x2d\x33\x36\x2e\x36\x31\x43\x2d\x36\x32\x2e\ \x32\x34\x38\x20\x2d\x33\x36\x2e\x34\x39\x35\x20\x2d\x36\x31\x2e\ \x30\x30\x37\x20\x2d\x33\x36\x2e\x36\x32\x35\x20\x2d\x36\x31\x2e\ \x30\x35\x32\x20\x2d\x33\x35\x2e\x37\x38\x34\x43\x2d\x36\x31\x2e\ \x31\x36\x35\x20\x2d\x33\x33\x2e\x36\x36\x34\x20\x2d\x36\x32\x2e\ \x34\x39\x34\x20\x2d\x33\x31\x2e\x39\x34\x34\x20\x2d\x36\x33\x2e\ \x37\x37\x34\x20\x2d\x33\x30\x2e\x32\x37\x36\x43\x2d\x36\x33\x2e\ \x33\x32\x33\x20\x2d\x32\x39\x2e\x35\x37\x32\x20\x2d\x36\x33\x2e\ \x37\x38\x31\x20\x2d\x32\x38\x2e\x39\x33\x37\x20\x2d\x36\x34\x2e\ \x30\x36\x35\x20\x2d\x32\x38\x2e\x33\x38\x43\x2d\x36\x35\x2e\x34\ \x20\x2d\x32\x35\x2e\x37\x36\x20\x2d\x36\x35\x2e\x32\x31\x31\x20\ \x2d\x32\x32\x2e\x39\x31\x39\x20\x2d\x36\x35\x2e\x33\x38\x35\x20\ \x2d\x32\x30\x2e\x30\x37\x39\x43\x2d\x36\x35\x2e\x33\x39\x20\x2d\ \x31\x39\x2e\x39\x39\x34\x20\x2d\x36\x35\x2e\x36\x39\x37\x20\x2d\ \x31\x39\x2e\x39\x31\x36\x20\x2d\x36\x35\x2e\x36\x38\x39\x20\x2d\ \x31\x39\x2e\x38\x36\x33\x43\x2d\x36\x35\x2e\x33\x33\x36\x20\x2d\ \x31\x37\x2e\x35\x32\x38\x20\x2d\x36\x34\x2e\x37\x35\x32\x20\x2d\ \x31\x35\x2e\x33\x32\x39\x20\x2d\x36\x33\x2e\x38\x37\x33\x20\x2d\ \x31\x33\x2e\x31\x43\x2d\x36\x33\x2e\x35\x30\x37\x20\x2d\x31\x32\ \x2e\x31\x37\x20\x2d\x36\x33\x2e\x30\x33\x36\x20\x2d\x31\x31\x2e\ \x32\x37\x35\x20\x2d\x36\x32\x2e\x38\x38\x36\x20\x2d\x31\x30\x2e\ \x33\x34\x38\x43\x2d\x36\x32\x2e\x37\x37\x35\x20\x2d\x39\x2e\x36\ \x36\x32\x20\x2d\x36\x32\x2e\x36\x37\x32\x20\x2d\x38\x2e\x38\x32\ \x39\x20\x2d\x36\x33\x2e\x30\x38\x20\x2d\x38\x2e\x31\x32\x34\x43\ \x2d\x36\x31\x2e\x30\x34\x35\x20\x2d\x35\x2e\x32\x33\x34\x20\x2d\ \x36\x32\x2e\x33\x35\x34\x20\x2d\x32\x2e\x35\x38\x33\x20\x2d\x36\ \x31\x2e\x31\x38\x35\x20\x30\x2e\x39\x34\x38\x43\x2d\x36\x30\x2e\ \x39\x37\x38\x20\x31\x2e\x35\x37\x33\x20\x2d\x35\x39\x2e\x32\x38\ \x36\x20\x33\x2e\x34\x38\x37\x20\x2d\x35\x39\x2e\x37\x34\x39\x20\ \x33\x2e\x33\x32\x36\x43\x2d\x36\x32\x2e\x32\x36\x32\x20\x32\x2e\ \x34\x35\x35\x20\x2d\x36\x32\x2e\x33\x37\x34\x20\x32\x2e\x30\x35\ \x37\x20\x2d\x36\x32\x2e\x35\x35\x31\x20\x31\x2e\x33\x30\x34\x43\ \x2d\x36\x32\x2e\x36\x39\x37\x20\x30\x2e\x36\x38\x31\x20\x2d\x36\ \x33\x2e\x30\x32\x37\x20\x2d\x30\x2e\x36\x39\x36\x20\x2d\x36\x33\ \x2e\x32\x36\x34\x20\x2d\x31\x2e\x32\x39\x38\x43\x2d\x36\x33\x2e\ \x33\x32\x38\x20\x2d\x31\x2e\x34\x36\x32\x20\x2d\x36\x33\x2e\x34\ \x39\x39\x20\x2d\x33\x2e\x33\x34\x36\x20\x2d\x36\x33\x2e\x35\x37\ \x37\x20\x2d\x33\x2e\x34\x36\x38\x43\x2d\x36\x35\x2e\x30\x39\x20\ \x2d\x35\x2e\x38\x35\x20\x2d\x36\x33\x2e\x37\x33\x32\x20\x2d\x35\ \x2e\x36\x37\x34\x20\x2d\x36\x35\x2e\x31\x30\x32\x20\x2d\x38\x2e\ \x30\x33\x32\x43\x2d\x36\x36\x2e\x35\x33\x20\x2d\x38\x2e\x37\x31\ \x32\x20\x2d\x36\x37\x2e\x34\x39\x36\x20\x2d\x39\x2e\x38\x31\x36\ \x20\x2d\x36\x38\x2e\x36\x31\x39\x20\x2d\x31\x30\x2e\x39\x37\x38\ \x43\x2d\x36\x38\x2e\x38\x31\x37\x20\x2d\x31\x31\x2e\x31\x38\x32\ \x20\x2d\x36\x37\x2e\x36\x37\x34\x20\x2d\x31\x31\x2e\x39\x30\x36\ \x20\x2d\x36\x37\x2e\x38\x35\x35\x20\x2d\x31\x32\x2e\x31\x31\x39\ \x43\x2d\x36\x38\x2e\x39\x34\x37\x20\x2d\x31\x33\x2e\x34\x30\x38\ \x20\x2d\x37\x30\x2e\x31\x20\x2d\x31\x34\x2e\x31\x37\x35\x20\x2d\ \x36\x39\x2e\x37\x36\x34\x20\x2d\x31\x35\x2e\x36\x36\x38\x43\x2d\ \x36\x39\x2e\x36\x30\x39\x20\x2d\x31\x36\x2e\x33\x35\x38\x20\x2d\ \x36\x39\x2e\x34\x37\x32\x20\x2d\x31\x37\x2e\x34\x31\x35\x20\x2d\ \x37\x30\x2e\x32\x31\x36\x20\x2d\x31\x38\x2e\x31\x33\x35\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x2d\x37\x33\x2e\x38\x20\x2d\x31\x36\x2e\x34\ \x43\x2d\x37\x33\x2e\x38\x20\x2d\x31\x36\x2e\x34\x20\x2d\x37\x33\ \x2e\x34\x20\x2d\x39\x2e\x36\x20\x2d\x37\x31\x20\x2d\x38\x43\x2d\ \x36\x38\x2e\x36\x20\x2d\x36\x2e\x34\x20\x2d\x36\x39\x2e\x38\x20\ \x2d\x37\x2e\x32\x20\x2d\x37\x33\x20\x2d\x38\x2e\x34\x43\x2d\x37\ \x36\x2e\x32\x20\x2d\x39\x2e\x36\x20\x2d\x37\x35\x20\x2d\x31\x30\ \x2e\x34\x20\x2d\x37\x35\x20\x2d\x31\x30\x2e\x34\x43\x2d\x37\x35\ \x20\x2d\x31\x30\x2e\x34\x20\x2d\x37\x37\x2e\x38\x20\x2d\x31\x30\ \x20\x2d\x37\x35\x2e\x34\x20\x2d\x38\x43\x2d\x37\x33\x20\x2d\x36\ \x20\x2d\x36\x39\x2e\x34\x20\x2d\x33\x2e\x36\x20\x2d\x37\x31\x20\ \x2d\x33\x2e\x36\x43\x2d\x37\x32\x2e\x36\x20\x2d\x33\x2e\x36\x20\ \x2d\x38\x30\x2e\x32\x20\x2d\x37\x2e\x36\x20\x2d\x38\x30\x2e\x32\ \x20\x2d\x31\x30\x2e\x34\x43\x2d\x38\x30\x2e\x32\x20\x2d\x31\x33\ \x2e\x32\x20\x2d\x38\x31\x2e\x32\x20\x2d\x31\x37\x2e\x33\x20\x2d\ \x38\x31\x2e\x32\x20\x2d\x31\x37\x2e\x33\x43\x2d\x38\x31\x2e\x32\ \x20\x2d\x31\x37\x2e\x33\x20\x2d\x38\x30\x2e\x31\x20\x2d\x31\x38\ \x2e\x31\x20\x2d\x37\x35\x2e\x33\x20\x2d\x31\x38\x43\x2d\x37\x35\ \x2e\x33\x20\x2d\x31\x38\x20\x2d\x37\x33\x2e\x39\x20\x2d\x31\x37\ \x2e\x33\x20\x2d\x37\x33\x2e\x38\x20\x2d\x31\x36\x2e\x34\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\ \x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\ \x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x2d\x37\x34\x2e\x36\x20\x32\x2e\x32\x43\ \x2d\x37\x34\x2e\x36\x20\x32\x2e\x32\x20\x2d\x38\x33\x2e\x31\x32\ \x20\x2d\x30\x2e\x35\x39\x31\x20\x2d\x31\x30\x31\x2e\x36\x20\x32\ \x2e\x38\x43\x2d\x31\x30\x31\x2e\x36\x20\x32\x2e\x38\x20\x2d\x39\ \x32\x2e\x35\x36\x39\x20\x30\x2e\x37\x32\x32\x20\x2d\x37\x33\x2e\ \x38\x20\x33\x43\x2d\x36\x33\x2e\x35\x20\x34\x2e\x32\x35\x20\x2d\ \x37\x34\x2e\x36\x20\x32\x2e\x32\x20\x2d\x37\x34\x2e\x36\x20\x32\ \x2e\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\ \x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\ \x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x37\x32\x2e\x35\x30\ \x32\x20\x32\x2e\x31\x32\x39\x43\x2d\x37\x32\x2e\x35\x30\x32\x20\ \x32\x2e\x31\x32\x39\x20\x2d\x38\x30\x2e\x37\x34\x38\x20\x2d\x31\ \x2e\x33\x38\x39\x20\x2d\x39\x39\x2e\x34\x35\x33\x20\x30\x2e\x33\ \x39\x32\x43\x2d\x39\x39\x2e\x34\x35\x33\x20\x30\x2e\x33\x39\x32\ \x20\x2d\x39\x30\x2e\x32\x37\x35\x20\x2d\x30\x2e\x38\x39\x37\x20\ \x2d\x37\x31\x2e\x37\x37\x34\x20\x32\x2e\x39\x39\x35\x43\x2d\x36\ \x31\x2e\x36\x32\x20\x35\x2e\x31\x33\x31\x20\x2d\x37\x32\x2e\x35\ \x30\x32\x20\x32\x2e\x31\x32\x39\x20\x2d\x37\x32\x2e\x35\x30\x32\ \x20\x32\x2e\x31\x32\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\ \x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\ \x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x37\ \x30\x2e\x37\x31\x34\x20\x32\x2e\x32\x32\x32\x43\x2d\x37\x30\x2e\ \x37\x31\x34\x20\x32\x2e\x32\x32\x32\x20\x2d\x37\x38\x2e\x36\x37\ \x36\x20\x2d\x31\x2e\x38\x39\x39\x20\x2d\x39\x37\x2e\x34\x36\x31\ \x20\x2d\x31\x2e\x35\x31\x34\x43\x2d\x39\x37\x2e\x34\x36\x31\x20\ \x2d\x31\x2e\x35\x31\x34\x20\x2d\x38\x38\x2e\x32\x31\x33\x20\x2d\ \x32\x2e\x31\x31\x38\x20\x2d\x37\x30\x2e\x30\x35\x32\x20\x33\x2e\ \x31\x34\x43\x2d\x36\x30\x2e\x30\x38\x36\x20\x36\x2e\x30\x32\x35\ \x20\x2d\x37\x30\x2e\x37\x31\x34\x20\x32\x2e\x32\x32\x32\x20\x2d\ \x37\x30\x2e\x37\x31\x34\x20\x32\x2e\x32\x32\x32\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\ \x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\ \x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\ \x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x36\x39\x2e\x34\x34\x34\x20\x32\x2e\x34\x34\ \x35\x43\x2d\x36\x39\x2e\x34\x34\x34\x20\x32\x2e\x34\x34\x35\x20\ \x2d\x37\x36\x2e\x32\x36\x38\x20\x2d\x31\x2e\x38\x36\x32\x20\x2d\ \x39\x33\x2e\x31\x34\x32\x20\x2d\x32\x2e\x39\x36\x43\x2d\x39\x33\ \x2e\x31\x34\x32\x20\x2d\x32\x2e\x39\x36\x20\x2d\x38\x34\x2e\x38\ \x30\x33\x20\x2d\x32\x2e\x37\x39\x20\x2d\x36\x38\x2e\x39\x32\x32\ \x20\x33\x2e\x33\x31\x39\x43\x2d\x36\x30\x2e\x32\x30\x36\x20\x36\ \x2e\x36\x37\x32\x20\x2d\x36\x39\x2e\x34\x34\x34\x20\x32\x2e\x34\ \x34\x35\x20\x2d\x36\x39\x2e\x34\x34\x34\x20\x32\x2e\x34\x34\x35\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\ \x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\ \x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x34\x35\x2e\x38\x34\x20\x31\x32\ \x2e\x39\x36\x31\x43\x34\x35\x2e\x38\x34\x20\x31\x32\x2e\x39\x36\ \x31\x20\x34\x34\x2e\x39\x31\x20\x31\x33\x2e\x36\x30\x35\x20\x34\ \x35\x2e\x31\x32\x34\x20\x31\x32\x2e\x34\x32\x34\x43\x34\x35\x2e\ \x33\x33\x39\x20\x31\x31\x2e\x32\x34\x33\x20\x37\x33\x2e\x35\x34\ \x37\x20\x2d\x31\x2e\x39\x32\x37\x20\x37\x37\x2e\x31\x36\x31\x20\ \x2d\x31\x2e\x36\x37\x37\x43\x37\x37\x2e\x31\x36\x31\x20\x2d\x31\ \x2e\x36\x37\x37\x20\x34\x36\x2e\x39\x31\x33\x20\x31\x31\x2e\x35\ \x32\x39\x20\x34\x35\x2e\x38\x34\x20\x31\x32\x2e\x39\x36\x31\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\ \x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\ \x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x34\x32\x2e\x34\x34\x36\x20\x31\x33\ \x2e\x36\x43\x34\x32\x2e\x34\x34\x36\x20\x31\x33\x2e\x36\x20\x34\ \x31\x2e\x35\x37\x20\x31\x34\x2e\x33\x31\x35\x20\x34\x31\x2e\x36\ \x39\x31\x20\x31\x33\x2e\x31\x32\x31\x43\x34\x31\x2e\x38\x31\x32\ \x20\x31\x31\x2e\x39\x32\x37\x20\x36\x38\x2e\x38\x39\x39\x20\x2d\ \x33\x2e\x34\x31\x38\x20\x37\x32\x2e\x35\x32\x31\x20\x2d\x33\x2e\ \x34\x35\x32\x43\x37\x32\x2e\x35\x32\x31\x20\x2d\x33\x2e\x34\x35\ \x32\x20\x34\x33\x2e\x34\x30\x34\x20\x31\x32\x2e\x30\x38\x39\x20\ \x34\x32\x2e\x34\x34\x36\x20\x31\x33\x2e\x36\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\ \x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x33\x39\x2e\x31\x36\x20\x31\x34\x2e\x39\x37\x35\x43\ \x33\x39\x2e\x31\x36\x20\x31\x34\x2e\x39\x37\x35\x20\x33\x38\x2e\ \x33\x33\x32\x20\x31\x35\x2e\x37\x34\x37\x20\x33\x38\x2e\x33\x37\ \x34\x20\x31\x34\x2e\x35\x34\x37\x43\x33\x38\x2e\x34\x31\x36\x20\ \x31\x33\x2e\x33\x34\x38\x20\x35\x38\x2e\x32\x33\x33\x20\x2d\x32\ \x2e\x31\x34\x39\x20\x36\x38\x2e\x30\x34\x35\x20\x2d\x34\x2e\x30\ \x32\x33\x43\x36\x38\x2e\x30\x34\x35\x20\x2d\x34\x2e\x30\x32\x33\ \x20\x35\x30\x2e\x30\x31\x35\x20\x34\x2e\x31\x30\x34\x20\x33\x39\ \x2e\x31\x36\x20\x31\x34\x2e\x39\x37\x35\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\ \x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\ \x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x33\x36\x2e\x32\x38\x34\x20\x31\x36\x2e\x38\x33\x38\x43\ \x33\x36\x2e\x32\x38\x34\x20\x31\x36\x2e\x38\x33\x38\x20\x33\x35\ \x2e\x35\x33\x39\x20\x31\x37\x2e\x35\x33\x32\x20\x33\x35\x2e\x35\ \x37\x37\x20\x31\x36\x2e\x34\x35\x33\x43\x33\x35\x2e\x36\x31\x35\ \x20\x31\x35\x2e\x33\x37\x33\x20\x35\x33\x2e\x34\x34\x39\x20\x31\ \x2e\x34\x32\x36\x20\x36\x32\x2e\x32\x38\x20\x2d\x30\x2e\x32\x36\ \x43\x36\x32\x2e\x32\x38\x20\x2d\x30\x2e\x32\x36\x20\x34\x36\x2e\ \x30\x35\x34\x20\x37\x2e\x30\x35\x34\x20\x33\x36\x2e\x32\x38\x34\ \x20\x31\x36\x2e\x38\x33\x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x34\x2e\ \x36\x20\x31\x36\x34\x2e\x38\x30\x31\x43\x34\x2e\x36\x20\x31\x36\ \x34\x2e\x38\x30\x31\x20\x2d\x31\x30\x2e\x36\x20\x31\x36\x32\x2e\ \x34\x30\x31\x20\x36\x2e\x32\x20\x31\x36\x30\x2e\x38\x30\x31\x43\ \x36\x2e\x32\x20\x31\x36\x30\x2e\x38\x30\x31\x20\x32\x34\x2e\x32\ \x20\x31\x35\x38\x2e\x38\x30\x31\x20\x32\x38\x2e\x32\x20\x31\x35\ \x33\x2e\x36\x30\x31\x43\x32\x38\x2e\x32\x20\x31\x35\x33\x2e\x36\ \x30\x31\x20\x34\x31\x2e\x38\x20\x31\x34\x34\x2e\x34\x30\x31\x20\ \x34\x34\x2e\x36\x20\x31\x34\x34\x2e\x30\x30\x31\x43\x34\x37\x2e\ \x34\x20\x31\x34\x33\x2e\x36\x30\x31\x20\x36\x33\x2e\x38\x20\x31\ \x34\x30\x2e\x30\x30\x31\x20\x36\x34\x2e\x32\x20\x31\x33\x37\x2e\ \x36\x30\x31\x43\x36\x34\x2e\x36\x20\x31\x33\x35\x2e\x32\x30\x31\ \x20\x37\x30\x2e\x36\x20\x31\x33\x32\x2e\x38\x30\x31\x20\x37\x32\ \x2e\x32\x20\x31\x33\x33\x2e\x36\x30\x31\x43\x37\x33\x2e\x38\x20\ \x31\x33\x34\x2e\x34\x30\x31\x20\x37\x33\x2e\x38\x20\x31\x34\x33\ \x2e\x36\x30\x31\x20\x37\x31\x20\x31\x34\x34\x2e\x34\x30\x31\x43\ \x36\x38\x2e\x32\x20\x31\x34\x35\x2e\x32\x30\x31\x20\x34\x39\x2e\ \x34\x20\x31\x35\x32\x2e\x34\x30\x31\x20\x34\x33\x20\x31\x35\x33\ \x2e\x36\x30\x31\x43\x33\x36\x2e\x36\x20\x31\x35\x34\x2e\x38\x30\ \x31\x20\x32\x35\x20\x31\x36\x32\x2e\x34\x30\x31\x20\x32\x30\x2e\ \x32\x20\x31\x36\x33\x2e\x36\x30\x31\x43\x31\x35\x2e\x34\x20\x31\ \x36\x34\x2e\x38\x30\x31\x20\x34\x2e\x36\x20\x31\x36\x34\x2e\x38\ \x30\x31\x20\x34\x2e\x36\x20\x31\x36\x34\x2e\x38\x30\x31\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x37\x37\x2e\x36\x20\x31\x32\x37\x2e\x34\x30\ \x31\x43\x37\x37\x2e\x36\x20\x31\x32\x37\x2e\x34\x30\x31\x20\x37\ \x34\x2e\x36\x20\x31\x32\x39\x2e\x30\x30\x31\x20\x37\x33\x2e\x34\ \x20\x31\x33\x31\x2e\x36\x30\x31\x43\x37\x33\x2e\x34\x20\x31\x33\ \x31\x2e\x36\x30\x31\x20\x36\x37\x20\x31\x34\x32\x2e\x32\x30\x31\ \x20\x35\x32\x2e\x38\x20\x31\x34\x35\x2e\x34\x30\x31\x43\x35\x32\ \x2e\x38\x20\x31\x34\x35\x2e\x34\x30\x31\x20\x32\x39\x2e\x38\x20\ \x31\x35\x34\x2e\x34\x30\x31\x20\x32\x32\x20\x31\x35\x36\x2e\x34\ \x30\x31\x43\x32\x32\x20\x31\x35\x36\x2e\x34\x30\x31\x20\x38\x2e\ \x36\x20\x31\x36\x31\x2e\x34\x30\x31\x20\x31\x2e\x32\x20\x31\x36\ \x30\x2e\x36\x30\x31\x43\x31\x2e\x32\x20\x31\x36\x30\x2e\x36\x30\ \x31\x20\x2d\x35\x2e\x38\x20\x31\x36\x30\x2e\x38\x30\x31\x20\x30\ \x2e\x34\x20\x31\x36\x32\x2e\x34\x30\x31\x43\x30\x2e\x34\x20\x31\ \x36\x32\x2e\x34\x30\x31\x20\x32\x30\x2e\x36\x20\x31\x36\x30\x2e\ \x34\x30\x31\x20\x32\x34\x20\x31\x35\x38\x2e\x36\x30\x31\x43\x32\ \x34\x20\x31\x35\x38\x2e\x36\x30\x31\x20\x33\x39\x2e\x36\x20\x31\ \x35\x33\x2e\x34\x30\x31\x20\x34\x32\x2e\x36\x20\x31\x35\x30\x2e\ \x38\x30\x31\x43\x34\x35\x2e\x36\x20\x31\x34\x38\x2e\x32\x30\x31\ \x20\x36\x33\x2e\x38\x20\x31\x34\x33\x2e\x32\x30\x31\x20\x36\x36\ \x20\x31\x34\x31\x2e\x32\x30\x31\x43\x36\x38\x2e\x32\x20\x31\x33\ \x39\x2e\x32\x30\x31\x20\x37\x38\x20\x31\x33\x30\x2e\x38\x30\x31\ \x20\x37\x37\x2e\x36\x20\x31\x32\x37\x2e\x34\x30\x31\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x31\x38\x2e\x38\x38\x32\x20\x31\x35\x38\x2e\x39\ \x31\x31\x43\x31\x38\x2e\x38\x38\x32\x20\x31\x35\x38\x2e\x39\x31\ \x31\x20\x32\x34\x2e\x31\x31\x31\x20\x31\x35\x38\x2e\x36\x38\x35\ \x20\x32\x32\x2e\x39\x35\x38\x20\x31\x36\x30\x2e\x32\x33\x34\x43\ \x32\x31\x2e\x38\x30\x35\x20\x31\x36\x31\x2e\x37\x38\x34\x20\x31\ \x39\x2e\x33\x35\x37\x20\x31\x36\x30\x2e\x39\x31\x20\x31\x39\x2e\ \x33\x35\x37\x20\x31\x36\x30\x2e\x39\x31\x4c\x31\x38\x2e\x38\x38\ \x32\x20\x31\x35\x38\x2e\x39\x31\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\ \x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\ \x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x31\x31\x2e\x36\x38\x20\x31\x36\x30\x2e\x32\x36\x33\x43\x31\x31\ \x2e\x36\x38\x20\x31\x36\x30\x2e\x32\x36\x33\x20\x31\x36\x2e\x39\ \x30\x38\x20\x31\x36\x30\x2e\x30\x33\x37\x20\x31\x35\x2e\x37\x35\ \x36\x20\x31\x36\x31\x2e\x35\x38\x36\x43\x31\x34\x2e\x36\x30\x33\ \x20\x31\x36\x33\x2e\x31\x33\x36\x20\x31\x32\x2e\x31\x35\x35\x20\ \x31\x36\x32\x2e\x32\x36\x33\x20\x31\x32\x2e\x31\x35\x35\x20\x31\ \x36\x32\x2e\x32\x36\x33\x4c\x31\x31\x2e\x36\x38\x20\x31\x36\x30\ \x2e\x32\x36\x33\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x2e\x32\x35\x31\ \x20\x31\x36\x31\x2e\x35\x31\x31\x43\x31\x2e\x32\x35\x31\x20\x31\ \x36\x31\x2e\x35\x31\x31\x20\x36\x2e\x34\x38\x20\x31\x36\x31\x2e\ \x32\x38\x34\x20\x35\x2e\x33\x32\x37\x20\x31\x36\x32\x2e\x38\x33\ \x34\x43\x34\x2e\x31\x37\x34\x20\x31\x36\x34\x2e\x33\x38\x33\x20\ \x31\x2e\x37\x32\x36\x20\x31\x36\x33\x2e\x35\x31\x20\x31\x2e\x37\ \x32\x36\x20\x31\x36\x33\x2e\x35\x31\x4c\x31\x2e\x32\x35\x31\x20\ \x31\x36\x31\x2e\x35\x31\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x36\ \x2e\x33\x38\x33\x20\x31\x36\x32\x2e\x30\x35\x35\x43\x2d\x36\x2e\ \x33\x38\x33\x20\x31\x36\x32\x2e\x30\x35\x35\x20\x2d\x31\x2e\x31\ \x35\x34\x20\x31\x36\x31\x2e\x38\x32\x39\x20\x2d\x32\x2e\x33\x30\ \x37\x20\x31\x36\x33\x2e\x33\x37\x38\x43\x2d\x33\x2e\x34\x36\x20\ \x31\x36\x34\x2e\x39\x32\x38\x20\x2d\x35\x2e\x39\x30\x38\x20\x31\ \x36\x34\x2e\x30\x35\x34\x20\x2d\x35\x2e\x39\x30\x38\x20\x31\x36\ \x34\x2e\x30\x35\x34\x4c\x2d\x36\x2e\x33\x38\x33\x20\x31\x36\x32\ \x2e\x30\x35\x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\x35\x2e\x34\x31\ \x35\x20\x31\x35\x31\x2e\x35\x31\x33\x43\x33\x35\x2e\x34\x31\x35\ \x20\x31\x35\x31\x2e\x35\x31\x33\x20\x34\x32\x2e\x33\x37\x35\x20\ \x31\x35\x31\x2e\x32\x31\x32\x20\x34\x30\x2e\x38\x34\x20\x31\x35\ \x33\x2e\x32\x37\x34\x43\x33\x39\x2e\x33\x30\x36\x20\x31\x35\x35\ \x2e\x33\x33\x36\x20\x33\x36\x2e\x30\x34\x37\x20\x31\x35\x34\x2e\ \x31\x37\x34\x20\x33\x36\x2e\x30\x34\x37\x20\x31\x35\x34\x2e\x31\ \x37\x34\x4c\x33\x35\x2e\x34\x31\x35\x20\x31\x35\x31\x2e\x35\x31\ \x33\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x34\x35\x2e\x37\x33\x20\x31\x34\ \x37\x2e\x30\x38\x38\x43\x34\x35\x2e\x37\x33\x20\x31\x34\x37\x2e\ \x30\x38\x38\x20\x35\x31\x2e\x36\x38\x39\x20\x31\x34\x33\x2e\x37\ \x38\x37\x20\x35\x31\x2e\x31\x35\x35\x20\x31\x34\x38\x2e\x38\x34\ \x39\x43\x35\x30\x2e\x38\x38\x35\x20\x31\x35\x31\x2e\x34\x30\x35\ \x20\x34\x36\x2e\x33\x36\x32\x20\x31\x34\x39\x2e\x37\x34\x39\x20\ \x34\x36\x2e\x33\x36\x32\x20\x31\x34\x39\x2e\x37\x34\x39\x4c\x34\ \x35\x2e\x37\x33\x20\x31\x34\x37\x2e\x30\x38\x38\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\ \x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x35\x34\x2e\x38\x36\x32\x20\x31\x34\x34\x2e\x32\x37\ \x34\x43\x35\x34\x2e\x38\x36\x32\x20\x31\x34\x34\x2e\x32\x37\x34\ \x20\x36\x32\x2e\x30\x32\x31\x20\x31\x34\x30\x2e\x35\x37\x33\x20\ \x36\x30\x2e\x32\x38\x37\x20\x31\x34\x36\x2e\x30\x33\x35\x43\x35\ \x39\x2e\x35\x30\x39\x20\x31\x34\x38\x2e\x34\x38\x35\x20\x35\x35\ \x2e\x34\x39\x33\x20\x31\x34\x36\x2e\x39\x33\x35\x20\x35\x35\x2e\ \x34\x39\x33\x20\x31\x34\x36\x2e\x39\x33\x35\x4c\x35\x34\x2e\x38\ \x36\x32\x20\x31\x34\x34\x2e\x32\x37\x34\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x36\x34\x2e\x33\x37\x36\x20\x31\x33\x39\x2e\x34\x34\x39\x43\ \x36\x34\x2e\x33\x37\x36\x20\x31\x33\x39\x2e\x34\x34\x39\x20\x36\ \x38\x2e\x37\x33\x35\x20\x31\x33\x34\x2e\x35\x34\x38\x20\x36\x39\ \x2e\x38\x30\x31\x20\x31\x34\x31\x2e\x32\x31\x43\x37\x30\x2e\x32\ \x30\x37\x20\x31\x34\x33\x2e\x37\x34\x38\x20\x36\x35\x2e\x30\x30\ \x38\x20\x31\x34\x32\x2e\x31\x31\x20\x36\x35\x2e\x30\x30\x38\x20\ \x31\x34\x32\x2e\x31\x31\x4c\x36\x34\x2e\x33\x37\x36\x20\x31\x33\ \x39\x2e\x34\x34\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x36\x2e\x38\ \x33\x34\x20\x31\x35\x35\x2e\x39\x39\x37\x43\x32\x36\x2e\x38\x33\ \x34\x20\x31\x35\x35\x2e\x39\x39\x37\x20\x33\x32\x2e\x30\x36\x32\ \x20\x31\x35\x35\x2e\x37\x37\x20\x33\x30\x2e\x39\x31\x20\x31\x35\ \x37\x2e\x33\x32\x43\x32\x39\x2e\x37\x35\x37\x20\x31\x35\x38\x2e\ \x38\x36\x39\x20\x32\x37\x2e\x33\x30\x38\x20\x31\x35\x37\x2e\x39\ \x39\x36\x20\x32\x37\x2e\x33\x30\x38\x20\x31\x35\x37\x2e\x39\x39\ \x36\x4c\x32\x36\x2e\x38\x33\x34\x20\x31\x35\x35\x2e\x39\x39\x37\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\ \x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\ \x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x36\x32\x2e\x34\x33\x34\x20\x33\ \x34\x2e\x36\x30\x33\x43\x36\x32\x2e\x34\x33\x34\x20\x33\x34\x2e\ \x36\x30\x33\x20\x36\x31\x2e\x37\x30\x38\x20\x33\x35\x2e\x32\x36\ \x38\x20\x36\x31\x2e\x37\x30\x37\x20\x33\x34\x2e\x31\x39\x37\x43\ \x36\x31\x2e\x37\x30\x37\x20\x33\x33\x2e\x31\x32\x37\x20\x37\x39\ \x2e\x31\x39\x31\x20\x31\x39\x2e\x38\x36\x33\x20\x38\x38\x2e\x30\ \x33\x34\x20\x31\x38\x2e\x34\x37\x39\x43\x38\x38\x2e\x30\x33\x34\ \x20\x31\x38\x2e\x34\x37\x39\x20\x37\x31\x2e\x39\x33\x35\x20\x32\ \x35\x2e\x32\x30\x38\x20\x36\x32\x2e\x34\x33\x34\x20\x33\x34\x2e\ \x36\x30\x33\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x36\x35\x2e\x34\x20\x39\ \x38\x2e\x34\x43\x36\x35\x2e\x34\x20\x39\x38\x2e\x34\x20\x38\x37\ \x2e\x34\x30\x31\x20\x31\x32\x30\x2e\x38\x30\x31\x20\x39\x36\x2e\ \x36\x30\x31\x20\x31\x32\x34\x2e\x34\x30\x31\x43\x39\x36\x2e\x36\ \x30\x31\x20\x31\x32\x34\x2e\x34\x30\x31\x20\x31\x30\x35\x2e\x38\ \x30\x31\x20\x31\x33\x35\x2e\x36\x30\x31\x20\x31\x30\x31\x2e\x38\ \x30\x31\x20\x31\x36\x31\x2e\x36\x30\x31\x43\x31\x30\x31\x2e\x38\ \x30\x31\x20\x31\x36\x31\x2e\x36\x30\x31\x20\x39\x38\x2e\x36\x30\ \x31\x20\x31\x36\x39\x2e\x32\x30\x31\x20\x39\x35\x2e\x34\x30\x31\ \x20\x31\x34\x38\x2e\x34\x30\x31\x43\x39\x35\x2e\x34\x30\x31\x20\ \x31\x34\x38\x2e\x34\x30\x31\x20\x39\x38\x2e\x36\x30\x31\x20\x31\ \x32\x33\x2e\x32\x30\x31\x20\x38\x37\x2e\x34\x30\x31\x20\x31\x33\ \x39\x2e\x32\x30\x31\x43\x38\x37\x2e\x34\x30\x31\x20\x31\x33\x39\ \x2e\x32\x30\x31\x20\x37\x39\x20\x31\x32\x39\x2e\x33\x30\x31\x20\ \x38\x35\x2e\x34\x20\x31\x32\x39\x2e\x36\x30\x31\x43\x38\x35\x2e\ \x34\x20\x31\x32\x39\x2e\x36\x30\x31\x20\x38\x38\x2e\x36\x30\x31\ \x20\x31\x33\x31\x2e\x36\x30\x31\x20\x38\x39\x2e\x30\x30\x31\x20\ \x31\x33\x30\x2e\x30\x30\x31\x43\x38\x39\x2e\x34\x30\x31\x20\x31\ \x32\x38\x2e\x34\x30\x31\x20\x38\x31\x2e\x34\x20\x31\x31\x34\x2e\ \x38\x30\x31\x20\x36\x34\x2e\x32\x20\x31\x30\x30\x2e\x34\x43\x34\ \x37\x20\x38\x36\x20\x36\x35\x2e\x34\x20\x39\x38\x2e\x34\x20\x36\ \x35\x2e\x34\x20\x39\x38\x2e\x34\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\ \x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\ \x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\ \x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\ \x37\x20\x31\x33\x37\x2e\x32\x30\x31\x43\x37\x20\x31\x33\x37\x2e\ \x32\x30\x31\x20\x36\x2e\x38\x20\x31\x33\x35\x2e\x34\x30\x31\x20\ \x38\x2e\x36\x20\x31\x33\x36\x2e\x32\x30\x31\x43\x31\x30\x2e\x34\ \x20\x31\x33\x37\x2e\x30\x30\x31\x20\x31\x30\x34\x2e\x36\x30\x31\ \x20\x31\x34\x33\x2e\x32\x30\x31\x20\x31\x33\x36\x2e\x32\x30\x31\ \x20\x31\x36\x37\x2e\x32\x30\x31\x43\x31\x33\x36\x2e\x32\x30\x31\ \x20\x31\x36\x37\x2e\x32\x30\x31\x20\x39\x31\x2e\x30\x30\x31\x20\ \x31\x34\x34\x2e\x30\x30\x31\x20\x37\x20\x31\x33\x37\x2e\x32\x30\ \x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\ \x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\ \x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x37\x2e\x34\x20\x31\x33\ \x32\x2e\x38\x30\x31\x43\x31\x37\x2e\x34\x20\x31\x33\x32\x2e\x38\ \x30\x31\x20\x31\x37\x2e\x32\x20\x31\x33\x31\x2e\x30\x30\x31\x20\ \x31\x39\x20\x31\x33\x31\x2e\x38\x30\x31\x43\x32\x30\x2e\x38\x20\ \x31\x33\x32\x2e\x36\x30\x31\x20\x31\x35\x37\x2e\x34\x30\x31\x20\ \x31\x33\x31\x2e\x36\x30\x31\x20\x31\x38\x31\x2e\x30\x30\x31\x20\ \x31\x36\x34\x2e\x30\x30\x31\x43\x31\x38\x31\x2e\x30\x30\x31\x20\ \x31\x36\x34\x2e\x30\x30\x31\x20\x31\x35\x39\x2e\x30\x30\x31\x20\ \x31\x33\x38\x2e\x38\x30\x31\x20\x31\x37\x2e\x34\x20\x31\x33\x32\ \x2e\x38\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\ \x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\ \x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x39\x20\x31\ \x32\x38\x2e\x38\x30\x31\x43\x32\x39\x20\x31\x32\x38\x2e\x38\x30\ \x31\x20\x32\x38\x2e\x38\x20\x31\x32\x37\x2e\x30\x30\x31\x20\x33\ \x30\x2e\x36\x20\x31\x32\x37\x2e\x38\x30\x31\x43\x33\x32\x2e\x34\ \x20\x31\x32\x38\x2e\x36\x30\x31\x20\x32\x30\x35\x2e\x38\x30\x31\ \x20\x31\x31\x35\x2e\x36\x30\x31\x20\x32\x32\x39\x2e\x34\x30\x31\ \x20\x31\x34\x38\x2e\x30\x30\x31\x43\x32\x32\x39\x2e\x34\x30\x31\ \x20\x31\x34\x38\x2e\x30\x30\x31\x20\x32\x31\x39\x2e\x38\x30\x31\ \x20\x31\x32\x32\x2e\x34\x30\x31\x20\x32\x39\x20\x31\x32\x38\x2e\ \x38\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\ \x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\ \x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\x39\x20\x31\x32\ \x34\x2e\x30\x30\x31\x43\x33\x39\x20\x31\x32\x34\x2e\x30\x30\x31\ \x20\x33\x38\x2e\x38\x20\x31\x32\x32\x2e\x32\x30\x31\x20\x34\x30\ \x2e\x36\x20\x31\x32\x33\x2e\x30\x30\x31\x43\x34\x32\x2e\x34\x20\ \x31\x32\x33\x2e\x38\x30\x31\x20\x31\x36\x34\x2e\x36\x30\x31\x20\ \x38\x35\x2e\x32\x20\x31\x38\x38\x2e\x32\x30\x31\x20\x31\x31\x37\ \x2e\x36\x30\x31\x43\x31\x38\x38\x2e\x32\x30\x31\x20\x31\x31\x37\ \x2e\x36\x30\x31\x20\x31\x37\x34\x2e\x38\x30\x31\x20\x39\x33\x20\ \x33\x39\x20\x31\x32\x34\x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\ \x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\ \x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x2d\x31\x39\x20\x31\x34\x36\x2e\x38\x30\x31\x43\x2d\x31\ \x39\x20\x31\x34\x36\x2e\x38\x30\x31\x20\x2d\x31\x39\x2e\x32\x20\ \x31\x34\x35\x2e\x30\x30\x31\x20\x2d\x31\x37\x2e\x34\x20\x31\x34\ \x35\x2e\x38\x30\x31\x43\x2d\x31\x35\x2e\x36\x20\x31\x34\x36\x2e\ \x36\x30\x31\x20\x32\x2e\x32\x20\x31\x34\x38\x2e\x38\x30\x31\x20\ \x34\x2e\x32\x20\x31\x38\x37\x2e\x36\x30\x31\x43\x34\x2e\x32\x20\ \x31\x38\x37\x2e\x36\x30\x31\x20\x2d\x33\x20\x31\x34\x35\x2e\x36\ \x30\x31\x20\x2d\x31\x39\x20\x31\x34\x36\x2e\x38\x30\x31\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\ \x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\ \x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x2d\x32\x37\x2e\x38\x20\x31\x34\x38\x2e\ \x34\x30\x31\x43\x2d\x32\x37\x2e\x38\x20\x31\x34\x38\x2e\x34\x30\ \x31\x20\x2d\x32\x38\x20\x31\x34\x36\x2e\x36\x30\x31\x20\x2d\x32\ \x36\x2e\x32\x20\x31\x34\x37\x2e\x34\x30\x31\x43\x2d\x32\x34\x2e\ \x34\x20\x31\x34\x38\x2e\x32\x30\x31\x20\x2d\x31\x30\x2e\x32\x20\ \x31\x34\x33\x2e\x36\x30\x31\x20\x2d\x31\x33\x20\x31\x38\x32\x2e\ \x34\x30\x31\x43\x2d\x31\x33\x20\x31\x38\x32\x2e\x34\x30\x31\x20\ \x2d\x31\x31\x2e\x38\x20\x31\x34\x37\x2e\x32\x30\x31\x20\x2d\x32\ \x37\x2e\x38\x20\x31\x34\x38\x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\ \x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\ \x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x33\x35\x2e\x38\x20\x31\x34\x38\x2e\x38\x30\x31\ \x43\x2d\x33\x35\x2e\x38\x20\x31\x34\x38\x2e\x38\x30\x31\x20\x2d\ \x33\x36\x20\x31\x34\x37\x2e\x30\x30\x31\x20\x2d\x33\x34\x2e\x32\ \x20\x31\x34\x37\x2e\x38\x30\x31\x43\x2d\x33\x32\x2e\x34\x20\x31\ \x34\x38\x2e\x36\x30\x31\x20\x2d\x31\x37\x20\x31\x34\x39\x2e\x32\ \x30\x31\x20\x2d\x32\x39\x2e\x34\x20\x31\x37\x31\x2e\x36\x30\x31\ \x43\x2d\x32\x39\x2e\x34\x20\x31\x37\x31\x2e\x36\x30\x31\x20\x2d\ \x31\x39\x2e\x38\x20\x31\x34\x37\x2e\x36\x30\x31\x20\x2d\x33\x35\ \x2e\x38\x20\x31\x34\x38\x2e\x38\x30\x31\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\ \x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\ \x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x31\x31\x2e\x35\x32\x36\x20\x31\x30\x34\x2e\x34\x36\x35\ \x43\x31\x31\x2e\x35\x32\x36\x20\x31\x30\x34\x2e\x34\x36\x35\x20\ \x31\x31\x2e\x30\x38\x32\x20\x31\x30\x36\x2e\x34\x36\x34\x20\x31\ \x32\x2e\x36\x33\x31\x20\x31\x30\x35\x2e\x32\x34\x37\x43\x32\x38\ \x2e\x36\x39\x39\x20\x39\x32\x2e\x36\x32\x32\x20\x36\x31\x2e\x31\ \x34\x31\x20\x33\x33\x2e\x37\x32\x20\x31\x31\x36\x2e\x38\x32\x36\ \x20\x32\x38\x2e\x30\x38\x36\x43\x31\x31\x36\x2e\x38\x32\x36\x20\ \x32\x38\x2e\x30\x38\x36\x20\x37\x38\x2e\x35\x31\x38\x20\x31\x35\ \x2e\x39\x37\x36\x20\x31\x31\x2e\x35\x32\x36\x20\x31\x30\x34\x2e\ \x34\x36\x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\ \x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\ \x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x32\x2e\x37\x32\ \x36\x20\x31\x30\x32\x2e\x36\x36\x35\x43\x32\x32\x2e\x37\x32\x36\ \x20\x31\x30\x32\x2e\x36\x36\x35\x20\x32\x31\x2e\x33\x36\x33\x20\ \x31\x30\x31\x2e\x34\x37\x32\x20\x32\x33\x2e\x32\x33\x31\x20\x31\ \x30\x30\x2e\x38\x34\x37\x43\x32\x35\x2e\x30\x39\x39\x20\x31\x30\ \x30\x2e\x32\x32\x32\x20\x31\x33\x37\x2e\x35\x34\x31\x20\x32\x37\ \x2e\x37\x32\x20\x31\x37\x36\x2e\x38\x32\x36\x20\x33\x35\x2e\x36\ \x38\x36\x43\x31\x37\x36\x2e\x38\x32\x36\x20\x33\x35\x2e\x36\x38\ \x36\x20\x31\x34\x39\x2e\x37\x31\x39\x20\x32\x38\x2e\x31\x37\x36\ \x20\x32\x32\x2e\x37\x32\x36\x20\x31\x30\x32\x2e\x36\x36\x35\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\ \x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\ \x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x31\x2e\x38\x38\x35\x20\x31\x30\x38\ \x2e\x37\x36\x37\x43\x31\x2e\x38\x38\x35\x20\x31\x30\x38\x2e\x37\ \x36\x37\x20\x31\x2e\x33\x37\x36\x20\x31\x31\x30\x2e\x33\x36\x36\ \x20\x33\x2e\x30\x38\x37\x20\x31\x30\x39\x2e\x33\x39\x43\x31\x32\ \x2e\x30\x36\x32\x20\x31\x30\x34\x2e\x32\x37\x20\x31\x35\x2e\x36\ \x37\x37\x20\x34\x37\x2e\x30\x35\x39\x20\x35\x39\x2e\x32\x35\x34\ \x20\x34\x35\x2e\x38\x30\x34\x43\x35\x39\x2e\x32\x35\x34\x20\x34\ \x35\x2e\x38\x30\x34\x20\x32\x36\x2e\x38\x34\x33\x20\x33\x31\x2e\ \x30\x39\x20\x31\x2e\x38\x38\x35\x20\x31\x30\x38\x2e\x37\x36\x37\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\ \x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\ \x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x38\x2e\x30\x33\x38\x20\ \x31\x31\x39\x2e\x37\x39\x33\x43\x2d\x31\x38\x2e\x30\x33\x38\x20\ \x31\x31\x39\x2e\x37\x39\x33\x20\x2d\x31\x39\x2e\x31\x31\x35\x20\ \x31\x32\x31\x2e\x30\x37\x39\x20\x2d\x31\x37\x2e\x31\x36\x32\x20\ \x31\x32\x30\x2e\x38\x32\x35\x43\x2d\x36\x2e\x39\x31\x36\x20\x31\ \x31\x39\x2e\x34\x39\x33\x20\x31\x34\x2e\x34\x38\x39\x20\x37\x38\ \x2e\x32\x32\x32\x20\x35\x38\x2e\x39\x32\x38\x20\x38\x33\x2e\x33\ \x30\x31\x43\x35\x38\x2e\x39\x32\x38\x20\x38\x33\x2e\x33\x30\x31\ \x20\x32\x36\x2e\x39\x36\x32\x20\x36\x38\x2e\x39\x35\x35\x20\x2d\ \x31\x38\x2e\x30\x33\x38\x20\x31\x31\x39\x2e\x37\x39\x33\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\ \x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\ \x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x2d\x36\x2e\x38\x20\x31\x31\x33\x2e\x36\ \x36\x37\x43\x2d\x36\x2e\x38\x20\x31\x31\x33\x2e\x36\x36\x37\x20\ \x2d\x37\x2e\x36\x31\x31\x20\x31\x31\x35\x2e\x31\x33\x36\x20\x2d\ \x35\x2e\x37\x34\x32\x20\x31\x31\x34\x2e\x35\x31\x31\x43\x34\x2e\ \x30\x35\x37\x20\x31\x31\x31\x2e\x32\x33\x37\x20\x31\x37\x2e\x31\ \x34\x31\x20\x36\x36\x2e\x36\x32\x35\x20\x36\x31\x2e\x37\x32\x39\ \x20\x36\x33\x2e\x30\x37\x38\x43\x36\x31\x2e\x37\x32\x39\x20\x36\ \x33\x2e\x30\x37\x38\x20\x32\x37\x2e\x36\x30\x33\x20\x35\x35\x2e\ \x31\x33\x35\x20\x2d\x36\x2e\x38\x20\x31\x31\x33\x2e\x36\x36\x37\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\ \x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\ \x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x32\x35\x2e\x30\x37\x38\x20\ \x31\x32\x34\x2e\x39\x31\x32\x43\x2d\x32\x35\x2e\x30\x37\x38\x20\ \x31\x32\x34\x2e\x39\x31\x32\x20\x2d\x32\x35\x2e\x39\x35\x31\x20\ \x31\x32\x35\x2e\x39\x35\x34\x20\x2d\x32\x34\x2e\x33\x36\x39\x20\ \x31\x32\x35\x2e\x37\x34\x38\x43\x2d\x31\x36\x2e\x30\x37\x20\x31\ \x32\x34\x2e\x36\x36\x39\x20\x31\x2e\x32\x36\x38\x20\x39\x31\x2e\ \x32\x34\x20\x33\x37\x2e\x32\x36\x34\x20\x39\x35\x2e\x33\x35\x34\ \x43\x33\x37\x2e\x32\x36\x34\x20\x39\x35\x2e\x33\x35\x34\x20\x31\ \x31\x2e\x33\x37\x31\x20\x38\x33\x2e\x37\x33\x34\x20\x2d\x32\x35\ \x2e\x30\x37\x38\x20\x31\x32\x34\x2e\x39\x31\x32\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\ \x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\ \x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\ \x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x33\x32\x2e\x36\x37\x37\x20\x31\x33\x30\x2e\ \x38\x32\x31\x43\x2d\x33\x32\x2e\x36\x37\x37\x20\x31\x33\x30\x2e\ \x38\x32\x31\x20\x2d\x33\x33\x2e\x36\x38\x32\x20\x31\x33\x31\x2e\ \x38\x36\x36\x20\x2d\x33\x32\x2e\x30\x39\x31\x20\x31\x33\x31\x2e\ \x37\x34\x38\x43\x2d\x32\x37\x2e\x39\x32\x33\x20\x31\x33\x31\x2e\ \x34\x33\x39\x20\x32\x2e\x37\x31\x35\x20\x39\x38\x2e\x33\x36\x20\ \x32\x31\x2e\x31\x38\x33\x20\x31\x31\x33\x2e\x38\x36\x32\x43\x32\ \x31\x2e\x31\x38\x33\x20\x31\x31\x33\x2e\x38\x36\x32\x20\x39\x2e\ \x31\x36\x38\x20\x39\x35\x2e\x31\x33\x39\x20\x2d\x33\x32\x2e\x36\ \x37\x37\x20\x31\x33\x30\x2e\x38\x32\x31\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\ \x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\ \x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x33\x36\x2e\x38\x35\x35\x20\x39\x38\x2e\x38\x39\x38\x43\ \x33\x36\x2e\x38\x35\x35\x20\x39\x38\x2e\x38\x39\x38\x20\x33\x35\ \x2e\x36\x35\x34\x20\x39\x37\x2e\x35\x34\x33\x20\x33\x37\x2e\x35\ \x38\x36\x20\x39\x37\x2e\x31\x35\x38\x43\x33\x39\x2e\x35\x31\x38\ \x20\x39\x36\x2e\x37\x37\x34\x20\x31\x36\x30\x2e\x32\x32\x31\x20\ \x33\x39\x2e\x30\x36\x31\x20\x31\x39\x38\x2e\x31\x38\x34\x20\x35\ \x31\x2e\x39\x32\x37\x43\x31\x39\x38\x2e\x31\x38\x34\x20\x35\x31\ \x2e\x39\x32\x37\x20\x31\x37\x32\x2e\x32\x34\x33\x20\x34\x31\x2e\ \x30\x35\x33\x20\x33\x36\x2e\x38\x35\x35\x20\x39\x38\x2e\x38\x39\ \x38\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\ \x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\ \x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\x2e\x34\x20\x31\x36\x33\ \x2e\x32\x30\x31\x43\x33\x2e\x34\x20\x31\x36\x33\x2e\x32\x30\x31\ \x20\x33\x2e\x32\x20\x31\x36\x31\x2e\x34\x30\x31\x20\x35\x20\x31\ \x36\x32\x2e\x32\x30\x31\x43\x36\x2e\x38\x20\x31\x36\x33\x2e\x30\ \x30\x31\x20\x32\x32\x2e\x32\x20\x31\x36\x33\x2e\x36\x30\x31\x20\ \x39\x2e\x38\x20\x31\x38\x36\x2e\x30\x30\x31\x43\x39\x2e\x38\x20\ \x31\x38\x36\x2e\x30\x30\x31\x20\x31\x39\x2e\x34\x20\x31\x36\x32\ \x2e\x30\x30\x31\x20\x33\x2e\x34\x20\x31\x36\x33\x2e\x32\x30\x31\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\ \x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\ \x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x31\x33\x2e\x38\x20\x31\x36\x31\ \x2e\x36\x30\x31\x43\x31\x33\x2e\x38\x20\x31\x36\x31\x2e\x36\x30\ \x31\x20\x31\x33\x2e\x36\x20\x31\x35\x39\x2e\x38\x30\x31\x20\x31\ \x35\x2e\x34\x20\x31\x36\x30\x2e\x36\x30\x31\x43\x31\x37\x2e\x32\ \x20\x31\x36\x31\x2e\x34\x30\x31\x20\x33\x35\x20\x31\x36\x33\x2e\ \x36\x30\x31\x20\x33\x37\x20\x32\x30\x32\x2e\x34\x30\x31\x43\x33\ \x37\x20\x32\x30\x32\x2e\x34\x30\x31\x20\x32\x39\x2e\x38\x20\x31\ \x36\x30\x2e\x34\x30\x31\x20\x31\x33\x2e\x38\x20\x31\x36\x31\x2e\ \x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\ \x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\ \x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x30\x2e\x36\x20\ \x31\x36\x30\x2e\x30\x30\x31\x43\x32\x30\x2e\x36\x20\x31\x36\x30\ \x2e\x30\x30\x31\x20\x32\x30\x2e\x34\x20\x31\x35\x38\x2e\x32\x30\ \x31\x20\x32\x32\x2e\x32\x20\x31\x35\x39\x2e\x30\x30\x31\x43\x32\ \x34\x20\x31\x35\x39\x2e\x38\x30\x31\x20\x34\x38\x2e\x36\x20\x31\ \x36\x33\x2e\x32\x30\x31\x20\x37\x32\x2e\x32\x20\x31\x39\x35\x2e\ \x36\x30\x31\x43\x37\x32\x2e\x32\x20\x31\x39\x35\x2e\x36\x30\x31\ \x20\x33\x36\x2e\x36\x20\x31\x35\x38\x2e\x38\x30\x31\x20\x32\x30\ \x2e\x36\x20\x31\x36\x30\x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\ \x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\ \x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\ \x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x32\x38\x2e\x32\x32\x35\x20\x31\x35\x37\x2e\x39\x37\x32\ \x43\x32\x38\x2e\x32\x32\x35\x20\x31\x35\x37\x2e\x39\x37\x32\x20\ \x32\x37\x2e\x37\x38\x38\x20\x31\x35\x36\x2e\x32\x31\x34\x20\x32\ \x39\x2e\x36\x37\x38\x20\x31\x35\x36\x2e\x37\x36\x38\x43\x33\x31\ \x2e\x35\x36\x38\x20\x31\x35\x37\x2e\x33\x32\x32\x20\x35\x32\x2e\ \x30\x30\x32\x20\x31\x35\x35\x2e\x34\x32\x33\x20\x39\x30\x2e\x30\ \x39\x39\x20\x31\x38\x39\x2e\x35\x39\x39\x43\x39\x30\x2e\x30\x39\ \x39\x20\x31\x38\x39\x2e\x35\x39\x39\x20\x34\x33\x2e\x39\x32\x34\ \x20\x31\x35\x34\x2e\x36\x35\x36\x20\x32\x38\x2e\x32\x32\x35\x20\ \x31\x35\x37\x2e\x39\x37\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\ \x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\ \x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\ \x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\ \x38\x2e\x36\x32\x35\x20\x31\x35\x33\x2e\x35\x37\x32\x43\x33\x38\ \x2e\x36\x32\x35\x20\x31\x35\x33\x2e\x35\x37\x32\x20\x33\x38\x2e\ \x31\x38\x38\x20\x31\x35\x31\x2e\x38\x31\x34\x20\x34\x30\x2e\x30\ \x37\x38\x20\x31\x35\x32\x2e\x33\x36\x38\x43\x34\x31\x2e\x39\x36\ \x38\x20\x31\x35\x32\x2e\x39\x32\x32\x20\x37\x36\x2e\x38\x30\x32\ \x20\x31\x35\x37\x2e\x34\x32\x33\x20\x31\x32\x38\x2e\x34\x39\x39\ \x20\x31\x39\x32\x2e\x33\x39\x39\x43\x31\x32\x38\x2e\x34\x39\x39\ \x20\x31\x39\x32\x2e\x33\x39\x39\x20\x35\x34\x2e\x33\x32\x34\x20\ \x31\x35\x30\x2e\x32\x35\x36\x20\x33\x38\x2e\x36\x32\x35\x20\x31\ \x35\x33\x2e\x35\x37\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\ \x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\ \x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\ \x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\ \x2e\x38\x20\x31\x34\x32\x2e\x30\x30\x31\x43\x2d\x31\x2e\x38\x20\ \x31\x34\x32\x2e\x30\x30\x31\x20\x2d\x32\x20\x31\x34\x30\x2e\x32\ \x30\x31\x20\x2d\x30\x2e\x32\x20\x31\x34\x31\x2e\x30\x30\x31\x43\ \x31\x2e\x36\x20\x31\x34\x31\x2e\x38\x30\x31\x20\x35\x35\x20\x31\ \x34\x34\x2e\x34\x30\x31\x20\x38\x35\x2e\x34\x20\x31\x37\x31\x2e\ \x32\x30\x31\x43\x38\x35\x2e\x34\x20\x31\x37\x31\x2e\x32\x30\x31\ \x20\x35\x30\x2e\x34\x39\x39\x20\x31\x34\x36\x2e\x34\x32\x36\x20\ \x2d\x31\x2e\x38\x20\x31\x34\x32\x2e\x30\x30\x31\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\ \x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\ \x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\ \x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x31\x31\x2e\x38\x20\x31\x34\x36\x2e\x30\x30\ \x31\x43\x2d\x31\x31\x2e\x38\x20\x31\x34\x36\x2e\x30\x30\x31\x20\ \x2d\x31\x32\x20\x31\x34\x34\x2e\x32\x30\x31\x20\x2d\x31\x30\x2e\ \x32\x20\x31\x34\x35\x2e\x30\x30\x31\x43\x2d\x38\x2e\x34\x20\x31\ \x34\x35\x2e\x38\x30\x31\x20\x31\x36\x2e\x32\x20\x31\x34\x39\x2e\ \x32\x30\x31\x20\x33\x39\x2e\x38\x20\x31\x38\x31\x2e\x36\x30\x31\ \x43\x33\x39\x2e\x38\x20\x31\x38\x31\x2e\x36\x30\x31\x20\x34\x2e\ \x32\x20\x31\x34\x34\x2e\x38\x30\x31\x20\x2d\x31\x31\x2e\x38\x20\ \x31\x34\x36\x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\ \x22\x2c\x20\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\ \x30\x30\x30\x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\ \x2e\x31\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x34\ \x39\x2e\x35\x30\x33\x20\x31\x34\x38\x2e\x39\x36\x32\x43\x34\x39\ \x2e\x35\x30\x33\x20\x31\x34\x38\x2e\x39\x36\x32\x20\x34\x38\x2e\ \x39\x33\x38\x20\x31\x34\x37\x2e\x32\x34\x31\x20\x35\x30\x2e\x38\ \x36\x34\x20\x31\x34\x37\x2e\x36\x35\x35\x43\x35\x32\x2e\x37\x39\ \x20\x31\x34\x38\x2e\x30\x36\x38\x20\x38\x37\x2e\x38\x36\x20\x31\ \x35\x30\x2e\x30\x30\x34\x20\x31\x34\x31\x2e\x39\x38\x31\x20\x31\ \x38\x31\x2e\x30\x39\x38\x43\x31\x34\x31\x2e\x39\x38\x31\x20\x31\ \x38\x31\x2e\x30\x39\x38\x20\x36\x34\x2e\x33\x31\x37\x20\x31\x34\ \x36\x2e\x37\x30\x34\x20\x34\x39\x2e\x35\x30\x33\x20\x31\x34\x38\ \x2e\x39\x36\x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\ \x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\ \x30\x22\x2c\x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x35\x37\x2e\x39\ \x30\x33\x20\x31\x34\x36\x2e\x35\x36\x32\x43\x35\x37\x2e\x39\x30\ \x33\x20\x31\x34\x36\x2e\x35\x36\x32\x20\x35\x37\x2e\x33\x33\x38\ \x20\x31\x34\x34\x2e\x38\x34\x31\x20\x35\x39\x2e\x32\x36\x34\x20\ \x31\x34\x35\x2e\x32\x35\x35\x43\x36\x31\x2e\x31\x39\x20\x31\x34\ \x35\x2e\x36\x36\x38\x20\x39\x36\x2e\x32\x36\x20\x31\x34\x37\x2e\ \x36\x30\x34\x20\x31\x35\x30\x2e\x33\x38\x31\x20\x31\x37\x38\x2e\ \x36\x39\x38\x43\x31\x35\x30\x2e\x33\x38\x31\x20\x31\x37\x38\x2e\ \x36\x39\x38\x20\x37\x33\x2e\x33\x31\x37\x20\x31\x34\x33\x2e\x39\ \x30\x34\x20\x35\x37\x2e\x39\x30\x33\x20\x31\x34\x36\x2e\x35\x36\ \x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x66\x66\x66\x66\x66\x66\x22\x2c\x20\x22\x73\x74\ \x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\ \x20\x22\x77\x69\x64\x74\x68\x22\x3a\x30\x2e\x31\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x36\x37\x2e\x35\x30\x33\x20\ \x31\x34\x31\x2e\x35\x36\x32\x43\x36\x37\x2e\x35\x30\x33\x20\x31\ \x34\x31\x2e\x35\x36\x32\x20\x36\x36\x2e\x39\x33\x38\x20\x31\x33\ \x39\x2e\x38\x34\x31\x20\x36\x38\x2e\x38\x36\x34\x20\x31\x34\x30\ \x2e\x32\x35\x35\x43\x37\x30\x2e\x37\x39\x20\x31\x34\x30\x2e\x36\ \x36\x38\x20\x31\x31\x33\x2e\x38\x36\x20\x31\x34\x35\x2e\x30\x30\ \x34\x20\x32\x30\x33\x2e\x35\x38\x32\x20\x31\x37\x39\x2e\x32\x39\ \x38\x43\x32\x30\x33\x2e\x35\x38\x32\x20\x31\x37\x39\x2e\x32\x39\ \x38\x20\x38\x32\x2e\x39\x31\x37\x20\x31\x33\x38\x2e\x39\x30\x34\ \x20\x36\x37\x2e\x35\x30\x33\x20\x31\x34\x31\x2e\x35\x36\x32\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x2d\x34\x33\x2e\x38\x20\x31\x34\x38\x2e\ \x34\x30\x31\x43\x2d\x34\x33\x2e\x38\x20\x31\x34\x38\x2e\x34\x30\ \x31\x20\x2d\x33\x38\x2e\x36\x20\x31\x34\x38\x2e\x30\x30\x31\x20\ \x2d\x33\x39\x2e\x38\x20\x31\x34\x39\x2e\x36\x30\x31\x43\x2d\x34\ \x31\x20\x31\x35\x31\x2e\x32\x30\x31\x20\x2d\x34\x33\x2e\x34\x20\ \x31\x35\x30\x2e\x34\x30\x31\x20\x2d\x34\x33\x2e\x34\x20\x31\x35\ \x30\x2e\x34\x30\x31\x4c\x2d\x34\x33\x2e\x38\x20\x31\x34\x38\x2e\ \x34\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x33\x20\x31\x36\ \x32\x2e\x34\x30\x31\x43\x2d\x31\x33\x20\x31\x36\x32\x2e\x34\x30\ \x31\x20\x2d\x37\x2e\x38\x20\x31\x36\x32\x2e\x30\x30\x31\x20\x2d\ \x39\x20\x31\x36\x33\x2e\x36\x30\x31\x43\x2d\x31\x30\x2e\x32\x20\ \x31\x36\x35\x2e\x32\x30\x31\x20\x2d\x31\x32\x2e\x36\x20\x31\x36\ \x34\x2e\x34\x30\x31\x20\x2d\x31\x32\x2e\x36\x20\x31\x36\x34\x2e\ \x34\x30\x31\x4c\x2d\x31\x33\x20\x31\x36\x32\x2e\x34\x30\x31\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x2d\x32\x31\x2e\x38\x20\x31\x36\x32\x2e\ \x30\x30\x31\x43\x2d\x32\x31\x2e\x38\x20\x31\x36\x32\x2e\x30\x30\ \x31\x20\x2d\x31\x36\x2e\x36\x20\x31\x36\x31\x2e\x36\x30\x31\x20\ \x2d\x31\x37\x2e\x38\x20\x31\x36\x33\x2e\x32\x30\x31\x43\x2d\x31\ \x39\x20\x31\x36\x34\x2e\x38\x30\x31\x20\x2d\x32\x31\x2e\x34\x20\ \x31\x36\x34\x2e\x30\x30\x31\x20\x2d\x32\x31\x2e\x34\x20\x31\x36\ \x34\x2e\x30\x30\x31\x4c\x2d\x32\x31\x2e\x38\x20\x31\x36\x32\x2e\ \x30\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\ \x6c\x22\x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\ \x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x31\x37\x2e\x31\ \x36\x39\x20\x31\x35\x30\x2e\x31\x38\x32\x43\x2d\x31\x31\x37\x2e\ \x31\x36\x39\x20\x31\x35\x30\x2e\x31\x38\x32\x20\x2d\x31\x31\x32\ \x2e\x31\x32\x34\x20\x31\x35\x31\x2e\x35\x30\x35\x20\x2d\x31\x31\ \x33\x2e\x37\x38\x32\x20\x31\x35\x32\x2e\x36\x32\x34\x43\x2d\x31\ \x31\x35\x2e\x34\x33\x39\x20\x31\x35\x33\x2e\x37\x34\x34\x20\x2d\ \x31\x31\x37\x2e\x34\x34\x36\x20\x31\x35\x32\x2e\x32\x30\x32\x20\ \x2d\x31\x31\x37\x2e\x34\x34\x36\x20\x31\x35\x32\x2e\x32\x30\x32\ \x4c\x2d\x31\x31\x37\x2e\x31\x36\x39\x20\x31\x35\x30\x2e\x31\x38\ \x32\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\ \x3a\x20\x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\ \x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x31\x35\x2e\x31\x36\x39\ \x20\x31\x34\x30\x2e\x35\x38\x32\x43\x2d\x31\x31\x35\x2e\x31\x36\ \x39\x20\x31\x34\x30\x2e\x35\x38\x32\x20\x2d\x31\x31\x30\x2e\x31\ \x32\x34\x20\x31\x34\x31\x2e\x39\x30\x35\x20\x2d\x31\x31\x31\x2e\ \x37\x38\x32\x20\x31\x34\x33\x2e\x30\x32\x34\x43\x2d\x31\x31\x33\ \x2e\x34\x33\x39\x20\x31\x34\x34\x2e\x31\x34\x34\x20\x2d\x31\x31\ \x35\x2e\x34\x34\x36\x20\x31\x34\x32\x2e\x36\x30\x32\x20\x2d\x31\ \x31\x35\x2e\x34\x34\x36\x20\x31\x34\x32\x2e\x36\x30\x32\x4c\x2d\ \x31\x31\x35\x2e\x31\x36\x39\x20\x31\x34\x30\x2e\x35\x38\x32\x7a\ \x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\ \x22\x23\x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\ \x74\x68\x22\x3a\x22\x4d\x2d\x31\x32\x32\x2e\x33\x36\x39\x20\x31\ \x33\x36\x2e\x31\x38\x32\x43\x2d\x31\x32\x32\x2e\x33\x36\x39\x20\ \x31\x33\x36\x2e\x31\x38\x32\x20\x2d\x31\x31\x37\x2e\x33\x32\x34\ \x20\x31\x33\x37\x2e\x35\x30\x35\x20\x2d\x31\x31\x38\x2e\x39\x38\ \x32\x20\x31\x33\x38\x2e\x36\x32\x34\x43\x2d\x31\x32\x30\x2e\x36\ \x33\x39\x20\x31\x33\x39\x2e\x37\x34\x34\x20\x2d\x31\x32\x32\x2e\ \x36\x34\x36\x20\x31\x33\x38\x2e\x32\x30\x32\x20\x2d\x31\x32\x32\ \x2e\x36\x34\x36\x20\x31\x33\x38\x2e\x32\x30\x32\x4c\x2d\x31\x32\ \x32\x2e\x33\x36\x39\x20\x31\x33\x36\x2e\x31\x38\x32\x7a\x22\x7d\ \x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\ \x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x34\x32\x2e\x36\x20\x32\x31\x31\x2e\x32\x30\ \x31\x43\x2d\x34\x32\x2e\x36\x20\x32\x31\x31\x2e\x32\x30\x31\x20\ \x2d\x34\x34\x2e\x32\x20\x32\x31\x31\x2e\x32\x30\x31\x20\x2d\x34\ \x38\x2e\x32\x20\x32\x31\x33\x2e\x32\x30\x31\x43\x2d\x35\x30\x2e\ \x32\x20\x32\x31\x33\x2e\x32\x30\x31\x20\x2d\x36\x31\x2e\x34\x20\ \x32\x31\x36\x2e\x38\x30\x31\x20\x2d\x36\x37\x20\x32\x32\x36\x2e\ \x38\x30\x31\x43\x2d\x36\x37\x20\x32\x32\x36\x2e\x38\x30\x31\x20\ \x2d\x35\x34\x2e\x36\x20\x32\x31\x37\x2e\x32\x30\x31\x20\x2d\x34\ \x32\x2e\x36\x20\x32\x31\x31\x2e\x32\x30\x31\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\ \x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x34\x35\x2e\x31\x31\x36\x20\x33\x30\x33\x2e\x38\x34\x37\ \x43\x34\x35\x2e\x32\x35\x37\x20\x33\x30\x34\x2e\x31\x30\x35\x20\ \x34\x35\x2e\x33\x31\x32\x20\x33\x30\x34\x2e\x35\x32\x35\x20\x34\ \x35\x2e\x36\x30\x34\x20\x33\x30\x34\x2e\x35\x34\x32\x43\x34\x36\ \x2e\x32\x36\x32\x20\x33\x30\x34\x2e\x35\x38\x32\x20\x34\x37\x2e\ \x34\x39\x35\x20\x33\x30\x34\x2e\x38\x38\x33\x20\x34\x37\x2e\x33\ \x37\x20\x33\x30\x34\x2e\x32\x34\x37\x43\x34\x36\x2e\x35\x32\x32\ \x20\x32\x39\x39\x2e\x39\x34\x31\x20\x34\x35\x2e\x36\x34\x38\x20\ \x32\x39\x35\x2e\x30\x30\x34\x20\x34\x31\x2e\x35\x31\x35\x20\x32\ \x39\x33\x2e\x31\x39\x37\x43\x34\x30\x2e\x38\x37\x36\x20\x32\x39\ \x32\x2e\x39\x31\x38\x20\x33\x39\x2e\x34\x33\x34\x20\x32\x39\x33\ \x2e\x33\x33\x31\x20\x33\x39\x2e\x33\x36\x20\x32\x39\x34\x2e\x32\ \x31\x35\x43\x33\x39\x2e\x32\x33\x33\x20\x32\x39\x35\x2e\x37\x33\ \x39\x20\x33\x39\x2e\x31\x31\x36\x20\x32\x39\x37\x2e\x30\x38\x38\ \x20\x33\x39\x2e\x34\x32\x35\x20\x32\x39\x38\x2e\x35\x35\x34\x43\ \x33\x39\x2e\x37\x32\x35\x20\x32\x39\x39\x2e\x39\x37\x35\x20\x34\ \x31\x2e\x38\x38\x33\x20\x32\x39\x39\x2e\x39\x38\x35\x20\x34\x32\ \x2e\x38\x20\x32\x39\x38\x2e\x36\x30\x31\x43\x34\x33\x2e\x37\x33\ \x36\x20\x33\x30\x30\x2e\x32\x37\x33\x20\x34\x34\x2e\x31\x36\x38\ \x20\x33\x30\x32\x2e\x31\x31\x36\x20\x34\x35\x2e\x31\x31\x36\x20\ \x33\x30\x33\x2e\x38\x34\x37\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\ \x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\x34\ \x2e\x30\x33\x38\x20\x33\x30\x38\x2e\x35\x38\x31\x43\x33\x34\x2e\ \x37\x38\x36\x20\x33\x30\x39\x2e\x39\x39\x34\x20\x33\x34\x2e\x36\ \x35\x39\x20\x33\x31\x31\x2e\x38\x35\x33\x20\x33\x36\x2e\x30\x37\ \x34\x20\x33\x31\x32\x2e\x34\x31\x36\x43\x33\x36\x2e\x38\x31\x34\ \x20\x33\x31\x32\x2e\x37\x31\x20\x33\x38\x2e\x36\x36\x34\x20\x33\ \x31\x31\x2e\x37\x33\x35\x20\x33\x38\x2e\x32\x34\x36\x20\x33\x31\ \x30\x2e\x36\x36\x31\x43\x33\x37\x2e\x34\x34\x34\x20\x33\x30\x38\ \x2e\x36\x20\x33\x37\x2e\x30\x35\x36\x20\x33\x30\x36\x2e\x33\x36\ \x31\x20\x33\x35\x2e\x36\x36\x37\x20\x33\x30\x34\x2e\x35\x35\x43\ \x33\x35\x2e\x34\x36\x37\x20\x33\x30\x34\x2e\x32\x38\x38\x20\x33\ \x35\x2e\x37\x30\x37\x20\x33\x30\x33\x2e\x37\x35\x35\x20\x33\x35\ \x2e\x35\x34\x37\x20\x33\x30\x33\x2e\x34\x32\x37\x43\x33\x34\x2e\ \x39\x35\x33\x20\x33\x30\x32\x2e\x32\x30\x37\x20\x33\x33\x2e\x38\ \x30\x38\x20\x33\x30\x31\x2e\x34\x37\x32\x20\x33\x32\x2e\x34\x20\ \x33\x30\x31\x2e\x38\x30\x31\x43\x33\x31\x2e\x32\x38\x35\x20\x33\ \x30\x34\x2e\x30\x30\x34\x20\x33\x32\x2e\x34\x33\x33\x20\x33\x30\ \x36\x2e\x31\x33\x33\x20\x33\x33\x2e\x39\x35\x35\x20\x33\x30\x37\ \x2e\x38\x34\x32\x43\x33\x34\x2e\x30\x39\x31\x20\x33\x30\x37\x2e\ \x39\x39\x34\x20\x33\x33\x2e\x39\x32\x35\x20\x33\x30\x38\x2e\x33\ \x37\x20\x33\x34\x2e\x30\x33\x38\x20\x33\x30\x38\x2e\x35\x38\x31\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x2d\x35\x2e\x35\x36\x34\x20\x33\x30\ \x33\x2e\x33\x39\x31\x43\x2d\x35\x2e\x36\x37\x32\x20\x33\x30\x33\ \x2e\x30\x31\x34\x20\x2d\x35\x2e\x37\x31\x20\x33\x30\x32\x2e\x35\ \x35\x31\x20\x2d\x35\x2e\x35\x34\x35\x20\x33\x30\x32\x2e\x32\x33\ \x43\x2d\x35\x2e\x30\x31\x34\x20\x33\x30\x31\x2e\x31\x39\x37\x20\ \x2d\x34\x2e\x32\x32\x31\x20\x33\x30\x30\x2e\x30\x37\x35\x20\x2d\ \x34\x2e\x35\x35\x38\x20\x32\x39\x39\x2e\x30\x35\x33\x43\x2d\x34\ \x2e\x39\x30\x36\x20\x32\x39\x37\x2e\x39\x39\x37\x20\x2d\x36\x2e\ \x30\x32\x32\x20\x32\x39\x38\x2e\x31\x37\x39\x20\x2d\x36\x2e\x36\ \x37\x32\x20\x32\x39\x38\x2e\x37\x34\x38\x43\x2d\x37\x2e\x38\x30\ \x37\x20\x32\x39\x39\x2e\x37\x34\x32\x20\x2d\x37\x2e\x38\x35\x36\ \x20\x33\x30\x31\x2e\x35\x36\x38\x20\x2d\x38\x2e\x35\x34\x37\x20\ \x33\x30\x32\x2e\x39\x32\x37\x43\x2d\x38\x2e\x37\x34\x33\x20\x33\ \x30\x33\x2e\x33\x31\x33\x20\x2d\x38\x2e\x36\x39\x32\x20\x33\x30\ \x33\x2e\x38\x38\x36\x20\x2d\x39\x2e\x31\x33\x33\x20\x33\x30\x34\ \x2e\x32\x37\x37\x43\x2d\x39\x2e\x36\x30\x37\x20\x33\x30\x34\x2e\ \x36\x39\x38\x20\x2d\x31\x30\x2e\x30\x34\x37\x20\x33\x30\x36\x2e\ \x32\x32\x32\x20\x2d\x39\x2e\x39\x35\x31\x20\x33\x30\x36\x2e\x37\ \x39\x33\x43\x2d\x39\x2e\x38\x39\x38\x20\x33\x30\x37\x2e\x31\x30\ \x36\x20\x2d\x31\x30\x2e\x30\x38\x31\x20\x33\x31\x37\x2e\x30\x31\ \x34\x20\x2d\x39\x2e\x38\x35\x39\x20\x33\x31\x36\x2e\x37\x35\x31\ \x43\x2d\x39\x2e\x32\x34\x20\x33\x31\x36\x2e\x30\x31\x38\x20\x2d\ \x36\x2e\x31\x39\x20\x33\x30\x36\x2e\x32\x38\x34\x20\x2d\x36\x2e\ \x31\x32\x31\x20\x33\x30\x35\x2e\x33\x39\x32\x43\x2d\x36\x2e\x30\ \x36\x34\x20\x33\x30\x34\x2e\x36\x36\x31\x20\x2d\x35\x2e\x33\x33\ \x32\x20\x33\x30\x34\x2e\x31\x39\x36\x20\x2d\x35\x2e\x35\x36\x34\ \x20\x33\x30\x33\x2e\x33\x39\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\ \x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x33\x31\x2e\x32\x30\x32\x20\x32\x39\x36\x2e\x35\x39\x39\x43\x2d\ \x32\x38\x2e\x35\x36\x38\x20\x32\x39\x34\x2e\x31\x20\x2d\x32\x35\ \x2e\x37\x37\x38\x20\x32\x39\x31\x2e\x31\x33\x39\x20\x2d\x32\x36\ \x2e\x32\x32\x20\x32\x38\x37\x2e\x34\x32\x37\x43\x2d\x32\x36\x2e\ \x33\x33\x36\x20\x32\x38\x36\x2e\x34\x35\x31\x20\x2d\x32\x38\x2e\ \x31\x31\x31\x20\x32\x38\x36\x2e\x39\x37\x38\x20\x2d\x32\x38\x2e\ \x32\x39\x38\x20\x32\x38\x37\x2e\x38\x32\x34\x43\x2d\x32\x39\x2e\ \x31\x20\x32\x39\x31\x2e\x34\x34\x39\x20\x2d\x33\x31\x2e\x31\x33\ \x39\x20\x32\x39\x34\x2e\x31\x31\x20\x2d\x33\x33\x2e\x37\x30\x37\ \x20\x32\x39\x36\x2e\x35\x30\x32\x43\x2d\x33\x35\x2e\x39\x30\x33\ \x20\x32\x39\x38\x2e\x35\x34\x39\x20\x2d\x33\x37\x2e\x37\x36\x35\ \x20\x33\x30\x34\x2e\x38\x39\x33\x20\x2d\x33\x38\x20\x33\x30\x35\ \x2e\x34\x30\x31\x43\x2d\x33\x34\x2e\x33\x30\x33\x20\x33\x30\x30\ \x2e\x31\x34\x35\x20\x2d\x33\x32\x2e\x30\x34\x36\x20\x32\x39\x37\ \x2e\x33\x39\x39\x20\x2d\x33\x31\x2e\x32\x30\x32\x20\x32\x39\x36\ \x2e\x35\x39\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x34\x34\x2e\x37\ \x37\x36\x20\x32\x39\x30\x2e\x36\x33\x35\x43\x2d\x34\x34\x2e\x32\ \x35\x33\x20\x32\x39\x30\x2e\x32\x36\x35\x20\x2d\x34\x34\x2e\x35\ \x35\x35\x20\x32\x38\x39\x2e\x37\x37\x34\x20\x2d\x34\x34\x2e\x33\ \x33\x38\x20\x32\x38\x39\x2e\x34\x34\x32\x43\x2d\x34\x33\x2e\x33\ \x38\x35\x20\x32\x38\x37\x2e\x39\x38\x34\x20\x2d\x34\x32\x2e\x30\ \x38\x34\x20\x32\x38\x36\x2e\x37\x33\x38\x20\x2d\x34\x32\x2e\x30\ \x36\x36\x20\x32\x38\x35\x43\x2d\x34\x32\x2e\x30\x36\x33\x20\x32\ \x38\x34\x2e\x37\x32\x33\x20\x2d\x34\x32\x2e\x34\x34\x31\x20\x32\ \x38\x34\x2e\x34\x31\x34\x20\x2d\x34\x32\x2e\x37\x37\x36\x20\x32\ \x38\x34\x2e\x36\x33\x38\x43\x2d\x34\x33\x2e\x30\x35\x33\x20\x32\ \x38\x34\x2e\x38\x32\x32\x20\x2d\x34\x33\x2e\x33\x39\x35\x20\x32\ \x38\x34\x2e\x39\x35\x32\x20\x2d\x34\x33\x2e\x35\x30\x33\x20\x32\ \x38\x35\x2e\x30\x38\x32\x43\x2d\x34\x35\x2e\x35\x33\x33\x20\x32\ \x38\x37\x2e\x35\x33\x31\x20\x2d\x34\x36\x2e\x39\x33\x33\x20\x32\ \x39\x30\x2e\x32\x30\x32\x20\x2d\x34\x38\x2e\x33\x37\x36\x20\x32\ \x39\x33\x2e\x30\x31\x34\x43\x2d\x34\x38\x2e\x35\x35\x39\x20\x32\ \x39\x33\x2e\x33\x37\x31\x20\x2d\x34\x39\x2e\x37\x30\x33\x20\x32\ \x39\x37\x2e\x38\x36\x32\x20\x2d\x34\x39\x2e\x33\x39\x20\x32\x39\ \x37\x2e\x39\x37\x33\x43\x2d\x34\x39\x2e\x31\x35\x31\x20\x32\x39\ \x38\x2e\x30\x35\x38\x20\x2d\x34\x37\x2e\x34\x33\x31\x20\x32\x39\ \x33\x2e\x38\x37\x37\x20\x2d\x34\x37\x2e\x32\x32\x31\x20\x32\x39\ \x33\x2e\x37\x36\x33\x43\x2d\x34\x35\x2e\x39\x35\x38\x20\x32\x39\ \x33\x2e\x30\x37\x37\x20\x2d\x34\x35\x2e\x39\x34\x36\x20\x32\x39\ \x31\x2e\x34\x36\x32\x20\x2d\x34\x34\x2e\x37\x37\x36\x20\x32\x39\ \x30\x2e\x36\x33\x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\ \x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\ \x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x32\x38\x2e\ \x30\x34\x33\x20\x33\x31\x30\x2e\x31\x37\x39\x43\x2d\x32\x37\x2e\ \x35\x39\x39\x20\x33\x30\x39\x2e\x33\x31\x20\x2d\x32\x36\x2e\x30\ \x32\x33\x20\x33\x30\x38\x2e\x31\x30\x38\x20\x2d\x32\x36\x2e\x31\ \x33\x36\x20\x33\x30\x37\x2e\x32\x31\x39\x43\x2d\x32\x36\x2e\x32\ \x35\x34\x20\x33\x30\x36\x2e\x32\x39\x31\x20\x2d\x32\x35\x2e\x37\ \x38\x36\x20\x33\x30\x34\x2e\x38\x34\x38\x20\x2d\x32\x36\x2e\x36\ \x39\x38\x20\x33\x30\x35\x2e\x35\x33\x36\x43\x2d\x32\x37\x2e\x39\ \x35\x35\x20\x33\x30\x36\x2e\x34\x38\x34\x20\x2d\x33\x31\x2e\x34\ \x30\x34\x20\x33\x30\x37\x2e\x38\x33\x33\x20\x2d\x33\x31\x2e\x36\ \x37\x34\x20\x33\x31\x33\x2e\x36\x34\x31\x43\x2d\x33\x31\x2e\x37\ \x20\x33\x31\x34\x2e\x32\x31\x32\x20\x2d\x32\x38\x2e\x37\x32\x36\ \x20\x33\x31\x31\x2e\x35\x31\x39\x20\x2d\x32\x38\x2e\x30\x34\x33\ \x20\x33\x31\x30\x2e\x31\x37\x39\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\ \x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\ \x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x31\x33\x2e\x36\x20\x32\x39\x33\x2e\x30\x30\x31\x43\x2d\x31\x33\ \x2e\x32\x20\x32\x39\x32\x2e\x33\x33\x33\x20\x2d\x31\x32\x2e\x34\ \x39\x32\x20\x32\x39\x32\x2e\x38\x30\x36\x20\x2d\x31\x32\x2e\x30\ \x33\x33\x20\x32\x39\x32\x2e\x35\x34\x33\x43\x2d\x31\x31\x2e\x33\ \x38\x35\x20\x32\x39\x32\x2e\x31\x37\x31\x20\x2d\x31\x30\x2e\x37\ \x37\x34\x20\x32\x39\x31\x2e\x36\x31\x33\x20\x2d\x31\x30\x2e\x34\ \x38\x32\x20\x32\x39\x30\x2e\x39\x36\x34\x43\x2d\x39\x2e\x35\x31\ \x32\x20\x32\x38\x38\x2e\x38\x31\x35\x20\x2d\x37\x2e\x37\x34\x33\ \x20\x32\x38\x36\x2e\x39\x39\x35\x20\x2d\x37\x2e\x36\x20\x32\x38\ \x34\x2e\x36\x30\x31\x43\x2d\x39\x2e\x30\x39\x31\x20\x32\x38\x33\ \x2e\x31\x39\x36\x20\x2d\x39\x2e\x37\x37\x20\x32\x38\x35\x2e\x32\ \x33\x36\x20\x2d\x31\x30\x2e\x34\x20\x32\x38\x36\x2e\x32\x30\x31\ \x43\x2d\x31\x31\x2e\x37\x32\x33\x20\x32\x38\x34\x2e\x35\x35\x34\ \x20\x2d\x31\x32\x2e\x37\x32\x32\x20\x32\x38\x36\x2e\x34\x32\x38\ \x20\x2d\x31\x34\x2e\x30\x32\x32\x20\x32\x38\x36\x2e\x39\x34\x37\ \x43\x2d\x31\x34\x2e\x30\x39\x32\x20\x32\x38\x36\x2e\x39\x37\x35\ \x20\x2d\x31\x34\x2e\x33\x30\x35\x20\x32\x38\x36\x2e\x36\x32\x38\ \x20\x2d\x31\x34\x2e\x33\x38\x20\x32\x38\x36\x2e\x36\x35\x35\x43\ \x2d\x31\x35\x2e\x35\x35\x37\x20\x32\x38\x37\x2e\x30\x39\x35\x20\ \x2d\x31\x36\x2e\x32\x33\x37\x20\x32\x38\x38\x2e\x31\x37\x36\x20\ \x2d\x31\x37\x2e\x32\x33\x35\x20\x32\x38\x38\x2e\x39\x35\x37\x43\ \x2d\x31\x37\x2e\x34\x30\x36\x20\x32\x38\x39\x2e\x30\x39\x31\x20\ \x2d\x31\x37\x2e\x38\x31\x31\x20\x32\x38\x38\x2e\x39\x31\x31\x20\ \x2d\x31\x37\x2e\x39\x35\x38\x20\x32\x38\x39\x2e\x30\x34\x37\x43\ \x2d\x31\x38\x2e\x36\x31\x20\x32\x38\x39\x2e\x36\x35\x20\x2d\x31\ \x39\x2e\x35\x38\x33\x20\x32\x38\x39\x2e\x39\x37\x35\x20\x2d\x31\ \x39\x2e\x38\x36\x33\x20\x32\x39\x30\x2e\x36\x35\x37\x43\x2d\x32\ \x30\x2e\x39\x37\x33\x20\x32\x39\x33\x2e\x33\x36\x34\x20\x2d\x32\ \x34\x2e\x31\x31\x33\x20\x32\x39\x35\x2e\x34\x35\x39\x20\x2d\x32\ \x36\x20\x33\x30\x33\x2e\x30\x30\x31\x43\x2d\x32\x35\x2e\x36\x31\ \x39\x20\x33\x30\x33\x2e\x39\x31\x20\x2d\x32\x31\x2e\x34\x38\x38\ \x20\x32\x39\x36\x2e\x33\x35\x39\x20\x2d\x32\x31\x2e\x30\x30\x31\ \x20\x32\x39\x35\x2e\x36\x36\x31\x43\x2d\x32\x30\x2e\x31\x36\x35\ \x20\x32\x39\x34\x2e\x34\x36\x35\x20\x2d\x32\x30\x2e\x30\x34\x37\ \x20\x32\x39\x37\x2e\x33\x32\x32\x20\x2d\x31\x38\x2e\x37\x37\x31\ \x20\x32\x39\x36\x2e\x36\x35\x36\x43\x2d\x31\x38\x2e\x37\x32\x20\ \x32\x39\x36\x2e\x36\x32\x39\x20\x2d\x31\x38\x2e\x35\x33\x34\x20\ \x32\x39\x36\x2e\x38\x36\x37\x20\x2d\x31\x38\x2e\x34\x20\x32\x39\ \x37\x2e\x30\x30\x31\x43\x2d\x31\x38\x2e\x32\x30\x36\x20\x32\x39\ \x36\x2e\x37\x32\x31\x20\x2d\x31\x37\x2e\x39\x38\x38\x20\x32\x39\ \x36\x2e\x34\x39\x32\x20\x2d\x31\x37\x2e\x36\x20\x32\x39\x36\x2e\ \x36\x30\x31\x43\x2d\x31\x37\x2e\x36\x20\x32\x39\x36\x2e\x32\x30\ \x31\x20\x2d\x31\x37\x2e\x37\x33\x34\x20\x32\x39\x35\x2e\x36\x34\ \x35\x20\x2d\x31\x37\x2e\x35\x33\x33\x20\x32\x39\x35\x2e\x34\x38\ \x36\x43\x2d\x31\x36\x2e\x32\x39\x36\x20\x32\x39\x34\x2e\x35\x30\ \x39\x20\x2d\x31\x36\x2e\x33\x38\x20\x32\x39\x33\x2e\x34\x34\x31\ \x20\x2d\x31\x35\x2e\x36\x20\x32\x39\x32\x2e\x32\x30\x31\x43\x2d\ \x31\x35\x2e\x31\x34\x32\x20\x32\x39\x32\x2e\x39\x39\x20\x2d\x31\ \x34\x2e\x30\x38\x31\x20\x32\x39\x32\x2e\x32\x37\x31\x20\x2d\x31\ \x33\x2e\x36\x20\x32\x39\x33\x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\ \x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\ \x22\x4d\x34\x36\x2e\x32\x20\x33\x34\x37\x2e\x34\x30\x31\x43\x34\ \x36\x2e\x32\x20\x33\x34\x37\x2e\x34\x30\x31\x20\x35\x33\x2e\x36\ \x20\x33\x32\x37\x2e\x30\x30\x31\x20\x34\x39\x2e\x32\x20\x33\x31\ \x35\x2e\x38\x30\x31\x43\x34\x39\x2e\x32\x20\x33\x31\x35\x2e\x38\ \x30\x31\x20\x36\x30\x2e\x36\x20\x33\x33\x37\x2e\x34\x30\x31\x20\ \x35\x36\x20\x33\x34\x38\x2e\x36\x30\x31\x43\x35\x36\x20\x33\x34\ \x38\x2e\x36\x30\x31\x20\x35\x35\x2e\x36\x20\x33\x33\x38\x2e\x32\ \x30\x31\x20\x35\x31\x2e\x36\x20\x33\x33\x33\x2e\x32\x30\x31\x43\ \x35\x31\x2e\x36\x20\x33\x33\x33\x2e\x32\x30\x31\x20\x34\x37\x2e\ \x36\x20\x33\x34\x36\x2e\x30\x30\x31\x20\x34\x36\x2e\x32\x20\x33\ \x34\x37\x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\x31\x2e\ \x34\x20\x33\x34\x34\x2e\x38\x30\x31\x43\x33\x31\x2e\x34\x20\x33\ \x34\x34\x2e\x38\x30\x31\x20\x33\x36\x2e\x38\x20\x33\x33\x36\x2e\ \x30\x30\x31\x20\x32\x38\x2e\x38\x20\x33\x31\x37\x2e\x36\x30\x31\ \x43\x32\x38\x2e\x38\x20\x33\x31\x37\x2e\x36\x30\x31\x20\x32\x38\ \x20\x33\x33\x38\x2e\x30\x30\x31\x20\x32\x31\x2e\x32\x20\x33\x34\ \x39\x2e\x30\x30\x31\x43\x32\x31\x2e\x32\x20\x33\x34\x39\x2e\x30\ \x30\x31\x20\x33\x35\x2e\x34\x20\x33\x32\x38\x2e\x38\x30\x31\x20\ \x33\x31\x2e\x34\x20\x33\x34\x34\x2e\x38\x30\x31\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\ \x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x32\x31\x2e\x34\x20\x33\x34\x32\x2e\x38\x30\x31\x43\ \x32\x31\x2e\x34\x20\x33\x34\x32\x2e\x38\x30\x31\x20\x32\x31\x2e\ \x32\x20\x33\x32\x32\x2e\x38\x30\x31\x20\x32\x31\x2e\x36\x20\x33\ \x31\x39\x2e\x38\x30\x31\x43\x32\x31\x2e\x36\x20\x33\x31\x39\x2e\ \x38\x30\x31\x20\x31\x37\x2e\x38\x20\x33\x33\x36\x2e\x34\x30\x31\ \x20\x37\x2e\x36\x20\x33\x34\x36\x2e\x30\x30\x31\x43\x37\x2e\x36\ \x20\x33\x34\x36\x2e\x30\x30\x31\x20\x32\x32\x20\x33\x33\x34\x2e\ \x30\x30\x31\x20\x32\x31\x2e\x34\x20\x33\x34\x32\x2e\x38\x30\x31\ \x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\ \x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\ \x61\x74\x68\x22\x3a\x22\x4d\x31\x31\x2e\x38\x20\x33\x31\x30\x2e\ \x38\x30\x31\x43\x31\x31\x2e\x38\x20\x33\x31\x30\x2e\x38\x30\x31\ \x20\x31\x37\x2e\x38\x20\x33\x32\x34\x2e\x34\x30\x31\x20\x37\x2e\ \x38\x20\x33\x34\x32\x2e\x38\x30\x31\x43\x37\x2e\x38\x20\x33\x34\ \x32\x2e\x38\x30\x31\x20\x31\x34\x2e\x32\x20\x33\x33\x30\x2e\x36\ \x30\x31\x20\x39\x2e\x34\x20\x33\x32\x33\x2e\x36\x30\x31\x43\x39\ \x2e\x34\x20\x33\x32\x33\x2e\x36\x30\x31\x20\x31\x32\x20\x33\x32\ \x30\x2e\x32\x30\x31\x20\x31\x31\x2e\x38\x20\x33\x31\x30\x2e\x38\ \x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x37\x2e\x34\x20\x33\x34\ \x32\x2e\x34\x30\x31\x43\x2d\x37\x2e\x34\x20\x33\x34\x32\x2e\x34\ \x30\x31\x20\x2d\x38\x2e\x34\x20\x33\x32\x36\x2e\x38\x30\x31\x20\ \x2d\x36\x2e\x36\x20\x33\x32\x34\x2e\x36\x30\x31\x43\x2d\x36\x2e\ \x36\x20\x33\x32\x34\x2e\x36\x30\x31\x20\x2d\x36\x2e\x34\x20\x33\ \x31\x38\x2e\x32\x30\x31\x20\x2d\x36\x2e\x38\x20\x33\x31\x37\x2e\ \x32\x30\x31\x43\x2d\x36\x2e\x38\x20\x33\x31\x37\x2e\x32\x30\x31\ \x20\x2d\x32\x2e\x38\x20\x33\x31\x31\x2e\x30\x30\x31\x20\x2d\x32\ \x2e\x36\x20\x33\x31\x38\x2e\x34\x30\x31\x43\x2d\x32\x2e\x36\x20\ \x33\x31\x38\x2e\x34\x30\x31\x20\x2d\x31\x2e\x32\x20\x33\x32\x36\ \x2e\x32\x30\x31\x20\x31\x2e\x36\x20\x33\x33\x30\x2e\x38\x30\x31\ \x43\x31\x2e\x36\x20\x33\x33\x30\x2e\x38\x30\x31\x20\x35\x2e\x32\ \x20\x33\x33\x36\x2e\x32\x30\x31\x20\x35\x20\x33\x34\x32\x2e\x36\ \x30\x31\x43\x35\x20\x33\x34\x32\x2e\x36\x30\x31\x20\x2d\x35\x20\ \x33\x31\x32\x2e\x34\x30\x31\x20\x2d\x37\x2e\x34\x20\x33\x34\x32\ \x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x31\x31\x20\x33\ \x31\x34\x2e\x38\x30\x31\x43\x2d\x31\x31\x20\x33\x31\x34\x2e\x38\ \x30\x31\x20\x2d\x31\x37\x2e\x36\x20\x33\x32\x35\x2e\x36\x30\x31\ \x20\x2d\x31\x39\x2e\x34\x20\x33\x34\x34\x2e\x36\x30\x31\x43\x2d\ \x31\x39\x2e\x34\x20\x33\x34\x34\x2e\x36\x30\x31\x20\x2d\x32\x30\ \x2e\x38\x20\x33\x33\x38\x2e\x34\x30\x31\x20\x2d\x31\x37\x20\x33\ \x32\x34\x2e\x30\x30\x31\x43\x2d\x31\x37\x20\x33\x32\x34\x2e\x30\ \x30\x31\x20\x2d\x31\x32\x2e\x38\x20\x33\x30\x38\x2e\x36\x30\x31\ \x20\x2d\x31\x31\x20\x33\x31\x34\x2e\x38\x30\x31\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\ \x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x33\x32\x2e\x38\x20\x33\x33\x34\x2e\x36\x30\x31\ \x43\x2d\x33\x32\x2e\x38\x20\x33\x33\x34\x2e\x36\x30\x31\x20\x2d\ \x32\x37\x2e\x38\x20\x33\x32\x39\x2e\x32\x30\x31\x20\x2d\x32\x36\ \x2e\x34\x20\x33\x32\x34\x2e\x32\x30\x31\x43\x2d\x32\x36\x2e\x34\ \x20\x33\x32\x34\x2e\x32\x30\x31\x20\x2d\x32\x32\x2e\x38\x20\x33\ \x30\x38\x2e\x34\x30\x31\x20\x2d\x32\x39\x2e\x32\x20\x33\x31\x37\ \x2e\x30\x30\x31\x43\x2d\x32\x39\x2e\x32\x20\x33\x31\x37\x2e\x30\ \x30\x31\x20\x2d\x32\x39\x20\x33\x32\x35\x2e\x30\x30\x31\x20\x2d\ \x33\x37\x2e\x32\x20\x33\x33\x32\x2e\x34\x30\x31\x43\x2d\x33\x37\ \x2e\x32\x20\x33\x33\x32\x2e\x34\x30\x31\x20\x2d\x33\x32\x2e\x34\ \x20\x33\x33\x30\x2e\x30\x30\x31\x20\x2d\x33\x32\x2e\x38\x20\x33\ \x33\x34\x2e\x36\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\ \x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x33\x38\ \x2e\x36\x20\x33\x32\x39\x2e\x36\x30\x31\x43\x2d\x33\x38\x2e\x36\ \x20\x33\x32\x39\x2e\x36\x30\x31\x20\x2d\x33\x35\x2e\x32\x20\x33\ \x31\x32\x2e\x32\x30\x31\x20\x2d\x33\x34\x2e\x34\x20\x33\x31\x31\ \x2e\x34\x30\x31\x43\x2d\x33\x34\x2e\x34\x20\x33\x31\x31\x2e\x34\ \x30\x31\x20\x2d\x33\x32\x2e\x36\x20\x33\x30\x38\x2e\x30\x30\x31\ \x20\x2d\x33\x35\x2e\x34\x20\x33\x31\x31\x2e\x32\x30\x31\x43\x2d\ \x33\x35\x2e\x34\x20\x33\x31\x31\x2e\x32\x30\x31\x20\x2d\x34\x34\ \x2e\x32\x20\x33\x33\x30\x2e\x34\x30\x31\x20\x2d\x34\x38\x2e\x32\ \x20\x33\x33\x37\x2e\x30\x30\x31\x43\x2d\x34\x38\x2e\x32\x20\x33\ \x33\x37\x2e\x30\x30\x31\x20\x2d\x34\x30\x2e\x32\x20\x33\x32\x37\ \x2e\x38\x30\x31\x20\x2d\x33\x38\x2e\x36\x20\x33\x32\x39\x2e\x36\ \x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\ \x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\ \x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\x34\x34\x2e\x34\x20\x33\ \x31\x33\x2e\x30\x30\x31\x43\x2d\x34\x34\x2e\x34\x20\x33\x31\x33\ \x2e\x30\x30\x31\x20\x2d\x33\x32\x2e\x38\x20\x32\x39\x30\x2e\x36\ \x30\x31\x20\x2d\x35\x34\x2e\x36\x20\x33\x31\x36\x2e\x34\x30\x31\ \x43\x2d\x35\x34\x2e\x36\x20\x33\x31\x36\x2e\x34\x30\x31\x20\x2d\ \x34\x33\x2e\x36\x20\x33\x30\x36\x2e\x36\x30\x31\x20\x2d\x34\x34\ \x2e\x34\x20\x33\x31\x33\x2e\x30\x30\x31\x7a\x22\x7d\x0a\x20\x2c\ \x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\ \x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\ \x4d\x2d\x35\x39\x2e\x38\x20\x32\x39\x38\x2e\x34\x30\x31\x43\x2d\ \x35\x39\x2e\x38\x20\x32\x39\x38\x2e\x34\x30\x31\x20\x2d\x35\x35\ \x20\x32\x37\x39\x2e\x36\x30\x31\x20\x2d\x35\x32\x2e\x34\x20\x32\ \x37\x39\x2e\x38\x30\x31\x43\x2d\x35\x32\x2e\x34\x20\x32\x37\x39\ \x2e\x38\x30\x31\x20\x2d\x34\x34\x2e\x32\x20\x32\x37\x30\x2e\x38\ \x30\x31\x20\x2d\x35\x30\x2e\x38\x20\x32\x38\x31\x2e\x34\x30\x31\ \x43\x2d\x35\x30\x2e\x38\x20\x32\x38\x31\x2e\x34\x30\x31\x20\x2d\ \x35\x36\x2e\x38\x20\x32\x39\x31\x2e\x30\x30\x31\x20\x2d\x35\x36\ \x2e\x32\x20\x33\x30\x30\x2e\x38\x30\x31\x43\x2d\x35\x36\x2e\x32\ \x20\x33\x30\x30\x2e\x38\x30\x31\x20\x2d\x35\x36\x2e\x38\x20\x32\ \x39\x31\x2e\x32\x30\x31\x20\x2d\x35\x39\x2e\x38\x20\x32\x39\x38\ \x2e\x34\x30\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x37\x30\x2e\x35\ \x20\x32\x38\x37\x43\x32\x37\x30\x2e\x35\x20\x32\x38\x37\x20\x32\ \x35\x38\x2e\x35\x20\x32\x37\x37\x20\x32\x35\x36\x20\x32\x37\x33\ \x2e\x35\x43\x32\x35\x36\x20\x32\x37\x33\x2e\x35\x20\x32\x36\x39\ \x2e\x35\x20\x32\x39\x32\x20\x32\x36\x39\x2e\x35\x20\x32\x39\x39\ \x43\x32\x36\x39\x2e\x35\x20\x32\x39\x39\x20\x32\x37\x32\x20\x32\ \x39\x31\x2e\x35\x20\x32\x37\x30\x2e\x35\x20\x32\x38\x37\x7a\x22\ \x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\x6c\x6c\x22\x3a\x20\x22\ \x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\ \x68\x22\x3a\x22\x4d\x32\x37\x36\x20\x32\x36\x35\x43\x32\x37\x36\ \x20\x32\x36\x35\x20\x32\x35\x35\x20\x32\x35\x30\x20\x32\x35\x31\ \x2e\x35\x20\x32\x34\x32\x2e\x35\x43\x32\x35\x31\x2e\x35\x20\x32\ \x34\x32\x2e\x35\x20\x32\x37\x38\x20\x32\x37\x32\x20\x32\x37\x38\ \x20\x32\x37\x36\x2e\x35\x43\x32\x37\x38\x20\x32\x37\x36\x2e\x35\ \x20\x32\x37\x38\x2e\x35\x20\x32\x36\x37\x2e\x35\x20\x32\x37\x36\ \x20\x32\x36\x35\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x39\x33\x20\x31\ \x31\x31\x43\x32\x39\x33\x20\x31\x31\x31\x20\x32\x38\x31\x20\x31\ \x30\x33\x20\x32\x37\x39\x2e\x35\x20\x31\x30\x35\x43\x32\x37\x39\ \x2e\x35\x20\x31\x30\x35\x20\x32\x39\x30\x20\x31\x31\x31\x2e\x35\ \x20\x32\x39\x32\x2e\x35\x20\x31\x32\x30\x43\x32\x39\x32\x2e\x35\ \x20\x31\x32\x30\x20\x32\x39\x31\x20\x31\x31\x31\x20\x32\x39\x33\ \x20\x31\x31\x31\x7a\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x66\x69\ \x6c\x6c\x22\x3a\x20\x22\x23\x63\x63\x63\x63\x63\x63\x22\x2c\x0a\ \x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x33\x30\x31\x2e\x35\ \x20\x31\x39\x31\x2e\x35\x4c\x32\x38\x34\x20\x31\x37\x39\x2e\x35\ \x43\x32\x38\x34\x20\x31\x37\x39\x2e\x35\x20\x33\x30\x33\x20\x31\ \x39\x36\x2e\x35\x20\x33\x30\x33\x2e\x35\x20\x32\x30\x30\x2e\x35\ \x4c\x33\x30\x31\x2e\x35\x20\x31\x39\x31\x2e\x35\x7a\x22\x7d\x0a\ \x20\x2c\x0a\x20\x7b\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\ \x30\x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\ \x22\x3a\x22\x4d\x2d\x38\x39\x2e\x32\x35\x20\x31\x36\x39\x4c\x2d\ \x36\x37\x2e\x32\x35\x20\x31\x37\x33\x2e\x37\x35\x22\x7d\x0a\x20\ \x2c\x0a\x20\x7b\x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\ \x30\x30\x30\x30\x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\ \x3a\x22\x4d\x2d\x33\x39\x20\x33\x33\x31\x43\x2d\x33\x39\x20\x33\ \x33\x31\x20\x2d\x33\x39\x2e\x35\x20\x33\x32\x37\x2e\x35\x20\x2d\ \x34\x38\x2e\x35\x20\x33\x33\x38\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\ \x22\x73\x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\ \x30\x22\x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x2d\ \x33\x33\x2e\x35\x20\x33\x33\x36\x43\x2d\x33\x33\x2e\x35\x20\x33\ \x33\x36\x20\x2d\x33\x31\x2e\x35\x20\x33\x32\x39\x2e\x35\x20\x2d\ \x33\x38\x20\x33\x33\x34\x22\x7d\x0a\x20\x2c\x0a\x20\x7b\x22\x73\ \x74\x72\x6f\x6b\x65\x22\x3a\x22\x23\x30\x30\x30\x30\x30\x30\x22\ \x2c\x0a\x20\x20\x22\x70\x61\x74\x68\x22\x3a\x22\x4d\x32\x30\x2e\ \x35\x20\x33\x34\x34\x2e\x35\x43\x32\x30\x2e\x35\x20\x33\x34\x34\ \x2e\x35\x20\x32\x32\x20\x33\x33\x33\x2e\x35\x20\x31\x30\x2e\x35\ \x20\x33\x34\x36\x2e\x35\x22\x7d\x0a\x5d\x3b\ \x00\x00\x13\xc7\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x63\x6f\x6e\x74\x65\x6e\x74\x73\ \x22\x0a\x49\x74\x65\x6d\x20\x7b\x0a\x20\x20\x69\x64\x3a\x63\x6f\ \x6e\x74\x61\x69\x6e\x65\x72\x0a\x20\x20\x77\x69\x64\x74\x68\x3a\ \x33\x32\x30\x0a\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x34\x38\x30\ \x0a\x0a\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\ \x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x35\x0a\x20\x20\x20\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x20\x66\x6f\ \x6e\x74\x2e\x70\x6f\x69\x6e\x74\x53\x69\x7a\x65\x3a\x31\x35\x3b\ \x20\x74\x65\x78\x74\x3a\x22\x53\x6d\x69\x6c\x65\x20\x77\x69\x74\ \x68\x20\x61\x72\x63\x73\x22\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\ \x72\x3a\x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\ \x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x7d\x0a\x0a\x20\x20\x20\x20\ \x43\x61\x6e\x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x69\x64\x3a\x63\x61\x6e\x76\x61\x73\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x77\x69\x64\x74\x68\x3a\x33\x32\x30\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x38\x30\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x74\x69\x61\x6c\x69\x61\ \x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\ \x69\x6e\x67\x20\x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x3a\ \x22\x67\x72\x65\x65\x6e\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\ \x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x3a\x22\x79\x65\x6c\x6c\x6f\ \x77\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\ \x72\x74\x79\x20\x69\x6e\x74\x20\x6c\x69\x6e\x65\x57\x69\x64\x74\ \x68\x3a\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\x74\x72\x6c\x2e\ \x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x66\x69\x6c\x6c\ \x3a\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x73\x74\x72\x6f\ \x6b\x65\x3a\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x61\x6c\ \x70\x68\x61\x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x2e\x76\x61\ \x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x73\x63\x61\x6c\x65\x58\ \x20\x3a\x20\x73\x63\x61\x6c\x65\x58\x43\x74\x72\x6c\x2e\x76\x61\ \x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x73\x63\x61\x6c\x65\x59\ \x20\x3a\x20\x73\x63\x61\x6c\x65\x59\x43\x74\x72\x6c\x2e\x76\x61\ \x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x72\x6f\x74\x61\x74\x65\ \x20\x3a\x20\x72\x6f\x74\x61\x74\x65\x43\x74\x72\x6c\x2e\x76\x61\ \x6c\x75\x65\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x4c\ \x69\x6e\x65\x57\x69\x64\x74\x68\x43\x68\x61\x6e\x67\x65\x64\x3a\ \x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x46\x69\x6c\x6c\x43\x68\ \x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\ \x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\ \x53\x74\x72\x6f\x6b\x65\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\ \x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x6f\x6e\x41\x6c\x70\x68\x61\x43\x68\x61\ \x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\ \x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x53\ \x63\x61\x6c\x65\x58\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\ \x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x6f\x6e\x53\x63\x61\x6c\x65\x59\x43\x68\x61\ \x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\ \x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x52\ \x6f\x74\x61\x74\x65\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\ \x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\ \x6e\x20\x73\x63\x61\x6c\x65\x58\x20\x7b\x20\x53\x70\x72\x69\x6e\ \x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x73\x70\x72\ \x69\x6e\x67\x3a\x20\x32\x3b\x20\x64\x61\x6d\x70\x69\x6e\x67\x3a\ \x20\x30\x2e\x32\x3b\x20\x6c\x6f\x6f\x70\x73\x3a\x41\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\x69\x6e\x69\x74\x65\x20\x7d\ \x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x42\x65\x68\x61\x76\ \x69\x6f\x72\x20\x6f\x6e\x20\x73\x63\x61\x6c\x65\x59\x20\x7b\x20\ \x53\x70\x72\x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\ \x7b\x20\x73\x70\x72\x69\x6e\x67\x3a\x20\x32\x3b\x20\x64\x61\x6d\ \x70\x69\x6e\x67\x3a\x20\x30\x2e\x32\x3b\x20\x6c\x6f\x6f\x70\x73\ \x3a\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\x66\x69\x6e\ \x69\x74\x65\x7d\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x42\ \x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x72\x6f\x74\x61\x74\ \x65\x20\x7b\x20\x53\x70\x72\x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\ \x69\x6f\x6e\x20\x7b\x20\x73\x70\x72\x69\x6e\x67\x3a\x20\x32\x3b\ \x20\x64\x61\x6d\x70\x69\x6e\x67\x3a\x20\x30\x2e\x32\x3b\x20\x6c\ \x6f\x6f\x70\x73\x3a\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\ \x6e\x66\x69\x6e\x69\x74\x65\x7d\x20\x7d\x0a\x0a\x20\x20\x20\x20\ \x6f\x6e\x50\x61\x69\x6e\x74\x3a\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x76\x61\x72\x20\x63\x74\x78\x20\x3d\x20\x63\ \x61\x6e\x76\x61\x73\x2e\x67\x65\x74\x43\x6f\x6e\x74\x65\x78\x74\ \x28\x27\x32\x64\x27\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x63\x74\x78\x2e\x73\x61\x76\x65\x28\x29\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\x6c\x65\x61\ \x72\x52\x65\x63\x74\x28\x30\x2c\x20\x30\x2c\x20\x63\x61\x6e\x76\ \x61\x73\x2e\x77\x69\x64\x74\x68\x2c\x20\x63\x61\x6e\x76\x61\x73\ \x2e\x68\x65\x69\x67\x68\x74\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x67\x6c\x6f\x62\x61\x6c\x41\x6c\ \x70\x68\x61\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x61\x6c\x70\ \x68\x61\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x20\x3d\x20\ \x63\x61\x6e\x76\x61\x73\x2e\x73\x74\x72\x6f\x6b\x65\x53\x74\x79\ \x6c\x65\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x20\x3d\x20\x63\x61\ \x6e\x76\x61\x73\x2e\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6c\x69\ \x6e\x65\x57\x69\x64\x74\x68\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\ \x2e\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x63\x61\x6c\x65\x28\ \x63\x61\x6e\x76\x61\x73\x2e\x73\x63\x61\x6c\x65\x58\x2c\x20\x63\ \x61\x6e\x76\x61\x73\x2e\x73\x63\x61\x6c\x65\x59\x29\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x72\x6f\x74\ \x61\x74\x65\x28\x63\x61\x6e\x76\x61\x73\x2e\x72\x6f\x74\x61\x74\ \x65\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x62\x65\x67\x69\x6e\x50\x61\x74\x68\x28\x29\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6d\x6f\x76\ \x65\x54\x6f\x28\x37\x35\x20\x2b\x20\x35\x30\x20\x20\x2a\x20\x4d\ \x61\x74\x68\x2e\x63\x6f\x73\x28\x30\x29\x2c\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x37\x35\x20\x2d\x20\x35\x30\x20\x20\x2a\x20\x4d\x61\x74\x68\ \x2e\x73\x69\x6e\x28\x4d\x61\x74\x68\x2e\x50\x49\x2a\x32\x29\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x61\x72\x63\x28\x37\x35\x2c\x37\x35\x2c\x35\x30\x2c\x30\x2c\x4d\ \x61\x74\x68\x2e\x50\x49\x2a\x32\x2c\x74\x72\x75\x65\x29\x3b\x20\ \x2f\x2f\x20\x4f\x75\x74\x65\x72\x20\x63\x69\x72\x63\x6c\x65\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6d\x6f\ \x76\x65\x54\x6f\x28\x37\x35\x2c\x37\x30\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x61\x72\x63\x28\x37\ \x35\x2c\x37\x30\x2c\x33\x35\x2c\x30\x2c\x4d\x61\x74\x68\x2e\x50\ \x49\x2c\x66\x61\x6c\x73\x65\x29\x3b\x20\x20\x20\x2f\x2f\x20\x4d\ \x6f\x75\x74\x68\x20\x28\x63\x6c\x6f\x63\x6b\x77\x69\x73\x65\x29\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x6d\ \x6f\x76\x65\x54\x6f\x28\x36\x30\x2c\x36\x35\x29\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x61\x72\x63\x28\ \x36\x30\x2c\x36\x35\x2c\x35\x2c\x30\x2c\x4d\x61\x74\x68\x2e\x50\ \x49\x2a\x32\x2c\x74\x72\x75\x65\x29\x3b\x20\x20\x2f\x2f\x20\x4c\ \x65\x66\x74\x20\x65\x79\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x63\x74\x78\x2e\x6d\x6f\x76\x65\x54\x6f\x28\x39\x30\x20\ \x2b\x20\x35\x20\x20\x2a\x20\x4d\x61\x74\x68\x2e\x63\x6f\x73\x28\ \x30\x29\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x36\x35\x20\x2d\x20\x35\x20\ \x20\x2a\x20\x4d\x61\x74\x68\x2e\x73\x69\x6e\x28\x4d\x61\x74\x68\ \x2e\x50\x49\x2a\x32\x29\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x74\x78\x2e\x6d\x6f\x76\x65\x54\x6f\x28\x39\x30\ \x2c\x36\x35\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x74\x78\x2e\x61\x72\x63\x28\x39\x30\x2c\x36\x35\x2c\x35\x2c\ \x30\x2c\x4d\x61\x74\x68\x2e\x50\x49\x2a\x32\x2c\x74\x72\x75\x65\ \x29\x3b\x20\x20\x2f\x2f\x20\x52\x69\x67\x68\x74\x20\x65\x79\x65\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\ \x6c\x6f\x73\x65\x50\x61\x74\x68\x28\x29\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\x61\x6e\x76\x61\x73\ \x2e\x66\x69\x6c\x6c\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x28\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\x61\ \x6e\x76\x61\x73\x2e\x73\x74\x72\x6f\x6b\x65\x29\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\ \x72\x6f\x6b\x65\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x63\x74\x78\x2e\x72\x65\x73\x74\x6f\x72\x65\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\ \x0a\x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x63\x6f\x6e\ \x74\x72\x6f\x6c\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\ \x64\x74\x68\x3a\x33\x32\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x68\x65\x69\x67\x68\x74\x3a\x31\x35\x30\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x33\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\ \x20\x7b\x69\x64\x3a\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\x74\ \x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\ \x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x31\x3b\ \x20\x6d\x61\x78\x3a\x31\x30\x3b\x20\x69\x6e\x69\x74\x3a\x32\x3b\ \x20\x6e\x61\x6d\x65\x3a\x22\x4c\x69\x6e\x65\x20\x77\x69\x64\x74\ \x68\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\ \x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x73\x63\x61\x6c\x65\x58\x43\ \x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\ \x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\ \x2e\x31\x3b\x20\x6d\x61\x78\x3a\x31\x30\x3b\x20\x69\x6e\x69\x74\ \x3a\x31\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x53\x63\x61\x6c\x65\x58\ \x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\ \x64\x65\x72\x20\x7b\x69\x64\x3a\x73\x63\x61\x6c\x65\x59\x43\x74\ \x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\ \x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\x2e\ \x31\x3b\x20\x6d\x61\x78\x3a\x31\x30\x3b\x20\x69\x6e\x69\x74\x3a\ \x31\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x53\x63\x61\x6c\x65\x59\x22\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\ \x65\x72\x20\x7b\x69\x64\x3a\x72\x6f\x74\x61\x74\x65\x43\x74\x72\ \x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\ \x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\x3b\x20\ \x6d\x61\x78\x3a\x4d\x61\x74\x68\x2e\x50\x49\x2a\x32\x3b\x20\x69\ \x6e\x69\x74\x3a\x30\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x52\x6f\x74\ \x61\x74\x65\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x61\x6c\x70\x68\x61\ \x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\ \x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\ \x30\x3b\x20\x6d\x61\x78\x3a\x31\x3b\x20\x69\x6e\x69\x74\x3a\x31\ \x3b\x20\x6e\x61\x6d\x65\x3a\x22\x41\x6c\x70\x68\x61\x22\x7d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\ \x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x03\x03\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\xd4\x00\x00\x00\x15\x04\x03\x00\x00\x00\xcc\x44\xdd\x3a\ \x00\x00\x00\x30\x50\x4c\x54\x45\xff\xff\xff\x00\x00\x00\x50\x50\ \x50\xcc\xcc\xcc\x30\x30\x30\x40\x40\x40\xb6\xb6\xb6\x74\x74\x74\ \x62\x62\x62\x8a\x8a\x8a\x22\x22\x22\x16\x16\x16\xe6\xe6\xe6\x9e\ \x9e\x9e\x0c\x0c\x0c\x04\x04\x04\xa7\x93\x44\x89\x00\x00\x02\x8e\ \x49\x44\x41\x54\x48\x0d\x9d\x54\x3d\x88\x13\x41\x14\xfe\xf2\xe3\ \x6d\x2e\xb7\xb9\x04\xc1\x43\x21\x07\x0b\x36\x87\xd5\xca\x9d\x8d\ \x85\x06\x56\xb1\x50\x44\x50\xb0\x38\x8b\x04\x14\xdb\x08\x11\x53\ \x89\x82\x07\x87\x36\xb1\x3f\xb8\x05\x4b\x9b\xa0\x28\x4a\x9a\x28\ \x72\x57\x1a\x0b\x11\xad\xae\x92\x6b\xec\x3d\x44\xf0\xcd\xce\x4c\ \xde\x9b\x64\x37\x1c\x3e\xd8\x99\x37\xef\xfb\xde\xfb\xe6\xcd\x0c\ \x0b\x64\x9b\xff\xf4\xdb\x46\x36\xea\x22\x87\xe1\x9e\x74\x53\x78\ \x95\x0f\xbd\xc5\x5e\x8e\xd7\xca\xcb\x87\xee\xda\xae\xd2\xb8\x30\ \x95\xf3\xa1\xdd\x46\x64\xe9\x93\x73\x31\xc4\x67\x9c\x77\xa3\x14\ \x9b\xb2\xb3\xc7\x80\x34\x2e\x4c\xe5\xe2\x78\xcb\xb3\xa4\x7e\x60\ \xe2\x00\xd3\xa4\x70\x22\x91\x9a\xe2\xb2\x94\xdd\xf2\x2c\xa9\x15\ \xbc\x6d\xeb\x2e\x86\x7a\x4a\x93\x9a\xab\x27\x52\xcc\xb5\x7d\x8f\ \xbb\x82\xd9\xc6\x2c\xa9\x17\xb8\x34\xd2\x89\x71\xb6\x54\x69\x2f\ \x91\x62\xae\xa6\x42\x74\x65\xb6\x31\x4b\xca\x26\x01\xb1\x76\xd3\ \xba\x2a\x5f\x4b\xa4\x98\x6b\x3d\xee\xca\x6c\x83\x02\x77\x37\x4a\ \x1d\x8b\xeb\xf9\x6b\xf7\xbb\xba\x6a\xb6\x58\xbb\xc5\x70\xae\x33\ \xc2\x4d\x8e\x93\x57\xdd\xec\x0c\x1d\xae\x45\x23\xcc\x3f\xf1\x3a\ \x4d\xc6\x22\x14\x7a\xe5\xf8\x9e\xac\x0b\xaf\x5f\x38\x9a\x21\x55\ \xca\x37\x70\x60\x8b\x25\x73\x2b\xf0\x1a\x5c\x6e\x7d\xa0\x2c\x56\ \x48\x84\xdd\xea\x95\xd3\x6d\xc6\x22\x94\xb0\x10\xec\x24\x59\x76\ \x68\x85\x58\xce\x90\xda\x5a\x6c\xab\x77\x20\xec\x21\x2a\x35\x2e\ \x27\x80\x08\x5b\x1f\x46\x15\x51\x47\x9d\x68\xae\xa9\x18\x85\x55\ \x65\x43\xf2\x5e\x52\xb6\xa0\x50\x24\xa6\x8f\x8c\x4a\xb6\x86\xea\ \x1d\x08\xf2\x45\x78\x59\x52\xd8\xd6\x39\x34\x2a\x53\x52\x5f\x12\ \x6f\xed\x82\xb2\x47\xe4\x1f\x47\xa9\x2f\xa4\x2e\x0f\x06\x7f\xf4\ \xa1\x90\xd4\x29\xa8\x77\x00\x26\x1f\xa0\xb8\x97\xd1\x15\x6e\x10\ \x93\x31\x25\xf5\x8c\x3e\x61\x85\x25\x94\x03\x41\x21\x28\xd6\x30\ \xa5\xbd\x43\xae\x27\xb8\xf0\xeb\xa8\x06\x5c\x6e\x5d\x5d\x95\xbd\ \x2b\xec\x13\x93\xb1\x08\x15\xbc\xc2\xae\xcc\x2e\xd4\x91\x1b\x89\ \xeb\x24\x2c\xd6\x38\xa5\xfd\xa5\x23\xd4\x0b\x3d\xfa\x35\x6c\x0f\ \xb9\x9c\x80\x22\xf8\x4b\xb4\x64\x2c\xc2\xf3\xd5\x7d\x04\x82\x02\ \xfc\xc4\xe3\x9d\x11\x53\x08\x8b\x35\x4e\xb1\xf7\xb8\xea\x70\xf1\ \xda\xff\x25\xca\x09\x8c\x9a\xa8\xd1\xd2\xd4\xf1\x7f\xd3\x5d\xad\ \x3d\xf8\xd4\x75\xde\x3a\xee\x74\x3f\xae\x58\x8a\xce\x8d\xf5\x44\ \x69\xb7\xbb\x6f\xb4\x6f\xc7\x33\xf7\x9b\x2e\xd7\x02\x11\xbc\x06\ \xf9\x52\xca\x42\x13\xb3\xa1\xe8\x68\xac\xa7\x24\xb6\x3c\x41\xa4\ \xa5\xc3\xb5\xb0\x7a\x05\x64\x8c\x99\x80\x0e\xcb\x91\x29\x14\x6d\ \x68\xa4\x18\x2e\x04\x5e\x5f\xb2\x6c\x7c\x3a\x26\xfe\x81\x06\x3c\ \x9c\x94\x21\x93\x54\xf3\x9c\x7b\xd8\x09\xe2\x6c\xcb\xaa\xfe\x67\ \x57\x63\xa9\xf9\xcd\x5b\xb6\x94\x98\x0f\x27\x75\x5d\x64\x38\xee\ \x91\x94\xdd\xa7\xc5\x54\x52\x6a\xdc\x54\x1e\x63\xff\x00\xe5\x5b\ \x8c\x44\xbf\xe2\x5a\x9c\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x15\x03\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x63\x6f\x6e\x74\x65\x6e\x74\x73\ \x22\x0a\x49\x74\x65\x6d\x20\x7b\x0a\x20\x20\x69\x64\x3a\x63\x6f\ \x6e\x74\x61\x69\x6e\x65\x72\x0a\x20\x20\x77\x69\x64\x74\x68\x3a\ \x33\x32\x30\x0a\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x34\x38\x30\ \x0a\x0a\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\ \x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x35\x0a\x20\x20\x20\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x20\x66\x6f\ \x6e\x74\x2e\x70\x6f\x69\x6e\x74\x53\x69\x7a\x65\x3a\x31\x35\x3b\ \x20\x74\x65\x78\x74\x3a\x22\x53\x71\x75\x69\x72\x63\x6c\x65\x73\ \x22\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x68\x6f\x72\x69\x7a\ \x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x70\x61\x72\x65\ \x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x7d\x0a\x20\x20\x20\x20\x49\x6d\x61\x67\x65\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\ \x3a\x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\ \x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\ \x73\x6f\x75\x72\x63\x65\x3a\x22\x73\x71\x75\x69\x72\x63\x6c\x65\ \x2e\x70\x6e\x67\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\ \x74\x68\x3a\x32\x35\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x68\x65\ \x69\x67\x68\x74\x3a\x32\x35\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\ \x20\x20\x43\x61\x6e\x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x69\x64\x3a\x63\x61\x6e\x76\x61\x73\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x33\x32\x30\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x35\ \x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x74\x69\x61\x6c\ \x69\x61\x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\ \x74\x72\x69\x6e\x67\x20\x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\ \x65\x3a\x22\x62\x6c\x75\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\ \x20\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x3a\x22\x73\x74\x65\x65\ \x6c\x62\x6c\x75\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\ \x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\x20\x6c\x69\x6e\x65\ \x57\x69\x64\x74\x68\x3a\x32\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x69\x6e\x74\x20\x6e\x53\x69\ \x7a\x65\x3a\x6e\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\ \x72\x65\x61\x6c\x20\x72\x61\x64\x69\x75\x73\x3a\x72\x43\x74\x72\ \x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x66\x69\ \x6c\x6c\x3a\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x62\x6f\x6f\x6c\x20\x73\x74\ \x72\x6f\x6b\x65\x3a\x66\x61\x6c\x73\x65\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\ \x20\x70\x78\x3a\x78\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\ \x20\x72\x65\x61\x6c\x20\x70\x79\x3a\x79\x43\x74\x72\x6c\x2e\x76\ \x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\ \x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x61\x6c\x70\x68\x61\ \x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\ \x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x41\x6c\x70\x68\ \x61\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\ \x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x6f\x6e\x52\x61\x64\x69\x75\x73\x43\x68\x61\x6e\x67\x65\x64\ \x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x4c\x69\x6e\x65\x57\ \x69\x64\x74\x68\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\ \x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x6f\x6e\x4e\x53\x69\x7a\x65\x43\x68\x61\x6e\x67\ \x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x46\x69\x6c\ \x6c\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\ \x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x6f\x6e\x53\x74\x72\x6f\x6b\x65\x43\x68\x61\x6e\x67\x65\x64\ \x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x50\x78\x43\x68\x61\ \x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\ \x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x50\ \x79\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\ \x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x6f\x6e\x50\x61\x69\x6e\x74\x3a\x20\x73\x71\x75\x63\ \x69\x72\x6c\x65\x28\x29\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x73\x71\x75\x63\x69\x72\ \x6c\x65\x28\x29\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x76\x61\x72\x20\x63\x74\x78\x20\x3d\x20\x63\x61\x6e\x76\x61\ \x73\x2e\x67\x65\x74\x43\x6f\x6e\x74\x65\x78\x74\x28\x22\x32\x64\ \x22\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x61\ \x72\x20\x4e\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x6e\x53\x69\ \x7a\x65\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x61\ \x72\x20\x52\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x72\x61\x64\ \x69\x75\x73\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x4e\x3d\x4d\x61\x74\x68\x2e\x61\x62\x73\x28\x4e\x29\x3b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\x4d\x3d\x4e\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\ \x4e\x3e\x31\x30\x30\x29\x20\x4d\x3d\x31\x30\x30\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x4e\x3c\x30\x2e\ \x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x31\x29\x20\x4d\x3d\x30\ \x2e\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x31\x3b\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x61\x76\ \x65\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\ \x74\x78\x2e\x67\x6c\x6f\x62\x61\x6c\x41\x6c\x70\x68\x61\x20\x3d\ \x63\x61\x6e\x76\x61\x73\x2e\x61\x6c\x70\x68\x61\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\ \x53\x74\x79\x6c\x65\x20\x3d\x20\x22\x67\x72\x61\x79\x22\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\ \x6c\x6c\x52\x65\x63\x74\x28\x30\x2c\x20\x30\x2c\x20\x63\x61\x6e\ \x76\x61\x73\x2e\x77\x69\x64\x74\x68\x2c\x20\x63\x61\x6e\x76\x61\ \x73\x2e\x68\x65\x69\x67\x68\x74\x29\x3b\x0a\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\x65\ \x53\x74\x79\x6c\x65\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x73\ \x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x53\x74\ \x79\x6c\x65\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x66\x69\x6c\ \x6c\x53\x74\x79\x6c\x65\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x63\x74\x78\x2e\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x20\ \x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x6c\x69\x6e\x65\x57\x69\x64\ \x74\x68\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\ \x74\x78\x2e\x62\x65\x67\x69\x6e\x50\x61\x74\x68\x28\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\x69\x20\ \x3d\x20\x30\x2c\x20\x78\x2c\x20\x79\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x66\x6f\x72\x20\x28\x69\x3d\x30\x3b\x20\x69\ \x3c\x28\x32\x2a\x52\x2b\x31\x29\x3b\x20\x69\x2b\x2b\x29\x7b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x78\x20\x3d\ \x20\x4d\x61\x74\x68\x2e\x72\x6f\x75\x6e\x64\x28\x69\x2d\x52\x29\ \x20\x2b\x20\x63\x61\x6e\x76\x61\x73\x2e\x70\x78\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x79\x20\x3d\x20\x4d\ \x61\x74\x68\x2e\x72\x6f\x75\x6e\x64\x28\x4d\x61\x74\x68\x2e\x70\ \x6f\x77\x28\x4d\x61\x74\x68\x2e\x61\x62\x73\x28\x4d\x61\x74\x68\ \x2e\x70\x6f\x77\x28\x52\x2c\x4d\x29\x2d\x4d\x61\x74\x68\x2e\x70\ \x6f\x77\x28\x4d\x61\x74\x68\x2e\x61\x62\x73\x28\x69\x2d\x52\x29\ \x2c\x4d\x29\x29\x2c\x31\x2f\x4d\x29\x29\x20\x2b\x20\x63\x61\x6e\ \x76\x61\x73\x2e\x70\x79\x3b\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x69\x20\x3d\x3d\x20\x30\ \x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x6d\x6f\x76\x65\x54\x6f\x28\x78\x2c\x20\x79\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x65\x6c\x73\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x6c\x69\x6e\x65\x54\x6f\x28\x78\ \x2c\x20\x79\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x72\ \x20\x28\x69\x3d\x28\x32\x2a\x52\x29\x3b\x20\x69\x3c\x28\x34\x2a\ \x52\x2b\x31\x29\x3b\x20\x69\x2b\x2b\x29\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x78\x20\x3d\x4d\x61\x74\x68\x2e\ \x72\x6f\x75\x6e\x64\x28\x33\x2a\x52\x2d\x69\x29\x2b\x63\x61\x6e\ \x76\x61\x73\x2e\x70\x78\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x79\x20\x3d\x20\x4d\x61\x74\x68\x2e\x72\x6f\x75\ \x6e\x64\x28\x2d\x4d\x61\x74\x68\x2e\x70\x6f\x77\x28\x4d\x61\x74\ \x68\x2e\x61\x62\x73\x28\x4d\x61\x74\x68\x2e\x70\x6f\x77\x28\x52\ \x2c\x4d\x29\x2d\x4d\x61\x74\x68\x2e\x70\x6f\x77\x28\x4d\x61\x74\ \x68\x2e\x61\x62\x73\x28\x33\x2a\x52\x2d\x69\x29\x2c\x4d\x29\x29\ \x2c\x31\x2f\x4d\x29\x29\x20\x2b\x20\x63\x61\x6e\x76\x61\x73\x2e\ \x70\x79\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x74\x78\x2e\x6c\x69\x6e\x65\x54\x6f\x28\x78\x2c\x20\x79\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\x6c\x6f\x73\ \x65\x50\x61\x74\x68\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x69\x66\x20\x28\x63\x61\x6e\x76\x61\x73\x2e\x73\x74\ \x72\x6f\x6b\x65\x29\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\x65\ \x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\ \x61\x6e\x76\x61\x73\x2e\x66\x69\x6c\x6c\x29\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x66\x69\x6c\x6c\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\ \x74\x78\x2e\x66\x69\x6c\x6c\x53\x74\x79\x6c\x65\x20\x3d\x20\x22\ \x79\x65\x6c\x6c\x6f\x77\x22\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x74\x78\x2e\x66\x6f\x6e\x74\x20\x3d\x20\x22\x48\ \x65\x6c\x76\x65\x74\x69\x63\x61\x20\x20\x31\x36\x70\x78\x22\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\ \x69\x6c\x6c\x54\x65\x78\x74\x28\x22\x7c\x58\x2d\x22\x20\x2b\x20\ \x4d\x61\x74\x68\x2e\x72\x6f\x75\x6e\x64\x28\x63\x61\x6e\x76\x61\ \x73\x2e\x70\x78\x29\x20\x2b\x20\x22\x7c\x5e\x22\x20\x2b\x20\x4e\ \x20\x2b\x20\x22\x20\x2b\x20\x7c\x59\x2d\x22\x2b\x4d\x61\x74\x68\ \x2e\x72\x6f\x75\x6e\x64\x28\x63\x61\x6e\x76\x61\x73\x2e\x70\x79\ \x29\x2b\x22\x7c\x5e\x22\x20\x2b\x20\x4e\x20\x2b\x20\x22\x20\x3d\ \x20\x7c\x22\x20\x2b\x20\x4d\x61\x74\x68\x2e\x72\x6f\x75\x6e\x64\ \x28\x52\x29\x20\x2b\x20\x22\x7c\x5e\x22\x20\x2b\x20\x4e\x2c\x20\ \x63\x61\x6e\x76\x61\x73\x2e\x70\x78\x20\x2d\x20\x31\x32\x35\x2c\ \x20\x63\x61\x6e\x76\x61\x73\x2e\x70\x79\x29\x3b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x72\x65\x73\x74\x6f\ \x72\x65\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\ \x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\ \x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\ \x64\x3a\x63\x6f\x6e\x74\x72\x6f\x6c\x73\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x77\x69\x64\x74\x68\x3a\x33\x32\x30\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x31\x35\x30\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x70\x61\x63\x69\ \x6e\x67\x3a\x33\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\ \x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x6e\x43\x74\x72\x6c\x3b\ \x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\ \x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x31\x3b\x20\x6d\x61\ \x78\x3a\x31\x30\x3b\x20\x69\x6e\x69\x74\x3a\x34\x3b\x20\x6e\x61\ \x6d\x65\x3a\x22\x4e\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x72\x43\x74\ \x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\ \x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x33\x30\ \x3b\x20\x6d\x61\x78\x3a\x31\x38\x30\x3b\x20\x69\x6e\x69\x74\x3a\ \x31\x30\x30\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x52\x61\x64\x69\x75\ \x73\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\ \x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x78\x43\x74\x72\x6c\x3b\x20\ \x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\ \x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x35\x30\x3b\x20\x6d\x61\ \x78\x3a\x33\x30\x30\x3b\x20\x69\x6e\x69\x74\x3a\x31\x38\x30\x3b\ \x20\x6e\x61\x6d\x65\x3a\x22\x58\x22\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\ \x79\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\ \x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\ \x3a\x33\x30\x3b\x20\x6d\x61\x78\x3a\x33\x30\x30\x3b\x20\x69\x6e\ \x69\x74\x3a\x32\x32\x30\x3b\x20\x6e\x61\x6d\x65\x3a\x22\x59\x22\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\ \x65\x72\x20\x7b\x69\x64\x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\ \x3b\x20\x77\x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\ \x67\x68\x74\x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\x3b\x20\x6d\ \x61\x78\x3a\x31\x3b\x20\x69\x6e\x69\x74\x3a\x31\x3b\x20\x6e\x61\ \x6d\x65\x3a\x22\x41\x6c\x70\x68\x61\x22\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x7d\x0a\ \x7d\x0a\ \x00\x00\x0b\xd2\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x49\x74\ \x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\x3a\x20\x63\x6f\x6e\ \x74\x61\x69\x6e\x65\x72\x0a\x0a\x20\x20\x20\x20\x73\x69\x67\x6e\ \x61\x6c\x20\x63\x6c\x69\x63\x6b\x65\x64\x0a\x0a\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\ \x74\x65\x78\x74\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\ \x62\x75\x74\x74\x6f\x6e\x54\x65\x78\x74\x2e\x77\x69\x64\x74\x68\ \x20\x2b\x20\x32\x38\x0a\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\ \x3a\x20\x62\x75\x74\x74\x6f\x6e\x54\x65\x78\x74\x2e\x68\x65\x69\ \x67\x68\x74\x20\x2b\x20\x31\x34\x0a\x0a\x20\x20\x20\x20\x42\x6f\ \x72\x64\x65\x72\x49\x6d\x61\x67\x65\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x69\x64\x3a\x20\x62\x75\x74\x74\x6f\x6e\x49\x6d\ \x61\x67\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\x75\x72\ \x63\x65\x3a\x20\x22\x69\x6d\x61\x67\x65\x73\x2f\x74\x6f\x6f\x6c\ \x62\x75\x74\x74\x6f\x6e\x2e\x73\x63\x69\x22\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x63\x6f\x6e\x74\x61\ \x69\x6e\x65\x72\x2e\x77\x69\x64\x74\x68\x20\x2d\x20\x31\x30\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\ \x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x68\x65\x69\x67\x68\x74\ \x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x42\x6f\x72\x64\x65\ \x72\x49\x6d\x61\x67\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x69\x64\x3a\x20\x70\x72\x65\x73\x73\x65\x64\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x6f\x70\x61\x63\x69\x74\x79\x3a\x20\x30\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\x75\x72\x63\x65\x3a\x20\ \x22\x69\x6d\x61\x67\x65\x73\x2f\x74\x6f\x6f\x6c\x62\x75\x74\x74\ \x6f\x6e\x2e\x73\x63\x69\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x77\x69\x64\x74\x68\x3a\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\ \x2e\x77\x69\x64\x74\x68\x20\x2d\x20\x31\x30\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x63\x6f\x6e\x74\ \x61\x69\x6e\x65\x72\x2e\x68\x65\x69\x67\x68\x74\x0a\x20\x20\x20\ \x20\x7d\x0a\x20\x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x6d\ \x6f\x75\x73\x65\x52\x65\x67\x69\x6f\x6e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\ \x20\x62\x75\x74\x74\x6f\x6e\x49\x6d\x61\x67\x65\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x6f\x6e\x43\x6c\x69\x63\x6b\x65\x64\x3a\x20\ \x7b\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x63\x6c\x69\x63\ \x6b\x65\x64\x28\x29\x3b\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x20\ \x20\x20\x20\x54\x65\x78\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x69\x64\x3a\x20\x62\x75\x74\x74\x6f\x6e\x54\x65\x78\x74\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x77\x68\x69\x74\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x61\x6e\x63\x68\x6f\x72\x73\x2e\x63\x65\x6e\x74\x65\x72\x49\x6e\ \x3a\x20\x62\x75\x74\x74\x6f\x6e\x49\x6d\x61\x67\x65\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x66\x6f\x6e\x74\x2e\x62\x6f\x6c\x64\x3a\ \x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\ \x6e\x74\x2e\x70\x6f\x69\x6e\x74\x53\x69\x7a\x65\x3a\x20\x31\x35\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x74\x65\x78\x74\x3a\x20\x63\ \x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x74\x65\x78\x74\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3a\x20\x54\x65\x78\ \x74\x2e\x52\x61\x69\x73\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x73\x74\x79\x6c\x65\x43\x6f\x6c\x6f\x72\x3a\x20\x22\x62\x6c\ \x61\x63\x6b\x22\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x73\ \x74\x61\x74\x65\x73\x3a\x20\x5b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x53\x74\x61\x74\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x6e\x61\x6d\x65\x3a\x20\x22\x50\x72\x65\x73\ \x73\x65\x64\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x77\x68\x65\x6e\x3a\x20\x6d\x6f\x75\x73\x65\x52\x65\x67\x69\ \x6f\x6e\x2e\x70\x72\x65\x73\x73\x65\x64\x20\x3d\x3d\x20\x74\x72\ \x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x50\ \x72\x6f\x70\x65\x72\x74\x79\x43\x68\x61\x6e\x67\x65\x73\x20\x7b\ \x20\x74\x61\x72\x67\x65\x74\x3a\x20\x70\x72\x65\x73\x73\x65\x64\ \x3b\x20\x6f\x70\x61\x63\x69\x74\x79\x3a\x20\x31\x20\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x5d\x0a\x7d\ \x0a\ \x00\x00\x0f\x4b\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x51\x75\x69\x63\x6b\x20\ \x6d\x6f\x64\x75\x6c\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\ \x20\x54\x6f\x6f\x6c\x6b\x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\ \x24\x51\x54\x5f\x42\x45\x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\ \x45\x3a\x4c\x47\x50\x4c\x24\x0a\x2a\x2a\x20\x43\x6f\x6d\x6d\x65\ \x72\x63\x69\x61\x6c\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\x55\x73\ \x61\x67\x65\x0a\x2a\x2a\x20\x4c\x69\x63\x65\x6e\x73\x65\x65\x73\ \x20\x68\x6f\x6c\x64\x69\x6e\x67\x20\x76\x61\x6c\x69\x64\x20\x63\ \x6f\x6d\x6d\x65\x72\x63\x69\x61\x6c\x20\x51\x74\x20\x6c\x69\x63\ \x65\x6e\x73\x65\x73\x20\x6d\x61\x79\x20\x75\x73\x65\x20\x74\x68\ \x69\x73\x20\x66\x69\x6c\x65\x20\x69\x6e\x0a\x2a\x2a\x20\x61\x63\ \x63\x6f\x72\x64\x61\x6e\x63\x65\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x20\x63\x6f\x6d\x6d\x65\x72\x63\x69\x61\x6c\x20\x6c\x69\x63\ \x65\x6e\x73\x65\x20\x61\x67\x72\x65\x65\x6d\x65\x6e\x74\x20\x70\ \x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\ \x0a\x2a\x2a\x20\x53\x6f\x66\x74\x77\x61\x72\x65\x20\x6f\x72\x2c\ \x20\x61\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x6c\x79\x2c\x20\ \x69\x6e\x20\x61\x63\x63\x6f\x72\x64\x61\x6e\x63\x65\x20\x77\x69\ \x74\x68\x20\x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x63\x6f\x6e\ \x74\x61\x69\x6e\x65\x64\x20\x69\x6e\x0a\x2a\x2a\x20\x61\x20\x77\ \x72\x69\x74\x74\x65\x6e\x20\x61\x67\x72\x65\x65\x6d\x65\x6e\x74\ \x20\x62\x65\x74\x77\x65\x65\x6e\x20\x79\x6f\x75\x20\x61\x6e\x64\ \x20\x44\x69\x67\x69\x61\x2e\x20\x20\x46\x6f\x72\x20\x6c\x69\x63\ \x65\x6e\x73\x69\x6e\x67\x20\x74\x65\x72\x6d\x73\x20\x61\x6e\x64\ \x0a\x2a\x2a\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x73\ \x65\x65\x20\x68\x74\x74\x70\x3a\x2f\x2f\x71\x74\x2e\x64\x69\x67\ \x69\x61\x2e\x63\x6f\x6d\x2f\x6c\x69\x63\x65\x6e\x73\x69\x6e\x67\ \x2e\x20\x20\x46\x6f\x72\x20\x66\x75\x72\x74\x68\x65\x72\x20\x69\ \x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a\x2a\x2a\x20\x75\x73\ \x65\x20\x74\x68\x65\x20\x63\x6f\x6e\x74\x61\x63\x74\x20\x66\x6f\ \x72\x6d\x20\x61\x74\x20\x68\x74\x74\x70\x3a\x2f\x2f\x71\x74\x2e\ \x64\x69\x67\x69\x61\x2e\x63\x6f\x6d\x2f\x63\x6f\x6e\x74\x61\x63\ \x74\x2d\x75\x73\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x47\x4e\x55\x20\ \x4c\x65\x73\x73\x65\x72\x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x50\ \x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\x55\x73\ \x61\x67\x65\x0a\x2a\x2a\x20\x41\x6c\x74\x65\x72\x6e\x61\x74\x69\ \x76\x65\x6c\x79\x2c\x20\x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\ \x6d\x61\x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x75\x6e\x64\x65\ \x72\x20\x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\ \x68\x65\x20\x47\x4e\x55\x20\x4c\x65\x73\x73\x65\x72\x0a\x2a\x2a\ \x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\ \x4c\x69\x63\x65\x6e\x73\x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\ \x32\x2e\x31\x20\x61\x73\x20\x70\x75\x62\x6c\x69\x73\x68\x65\x64\ \x20\x62\x79\x20\x74\x68\x65\x20\x46\x72\x65\x65\x20\x53\x6f\x66\ \x74\x77\x61\x72\x65\x0a\x2a\x2a\x20\x46\x6f\x75\x6e\x64\x61\x74\ \x69\x6f\x6e\x20\x61\x6e\x64\x20\x61\x70\x70\x65\x61\x72\x69\x6e\ \x67\x20\x69\x6e\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x4c\x49\ \x43\x45\x4e\x53\x45\x2e\x4c\x47\x50\x4c\x20\x69\x6e\x63\x6c\x75\ \x64\x65\x64\x20\x69\x6e\x20\x74\x68\x65\x0a\x2a\x2a\x20\x70\x61\ \x63\x6b\x61\x67\x69\x6e\x67\x20\x6f\x66\x20\x74\x68\x69\x73\x20\ \x66\x69\x6c\x65\x2e\x20\x20\x50\x6c\x65\x61\x73\x65\x20\x72\x65\ \x76\x69\x65\x77\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\ \x6e\x67\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x74\ \x6f\x0a\x2a\x2a\x20\x65\x6e\x73\x75\x72\x65\x20\x74\x68\x65\x20\ \x47\x4e\x55\x20\x4c\x65\x73\x73\x65\x72\x20\x47\x65\x6e\x65\x72\ \x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\x73\ \x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x32\x2e\x31\x20\x72\x65\ \x71\x75\x69\x72\x65\x6d\x65\x6e\x74\x73\x0a\x2a\x2a\x20\x77\x69\ \x6c\x6c\x20\x62\x65\x20\x6d\x65\x74\x3a\x20\x68\x74\x74\x70\x3a\ \x2f\x2f\x77\x77\x77\x2e\x67\x6e\x75\x2e\x6f\x72\x67\x2f\x6c\x69\ \x63\x65\x6e\x73\x65\x73\x2f\x6f\x6c\x64\x2d\x6c\x69\x63\x65\x6e\ \x73\x65\x73\x2f\x6c\x67\x70\x6c\x2d\x32\x2e\x31\x2e\x68\x74\x6d\ \x6c\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x49\x6e\x20\x61\x64\x64\x69\ \x74\x69\x6f\x6e\x2c\x20\x61\x73\x20\x61\x20\x73\x70\x65\x63\x69\ \x61\x6c\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x2c\x20\x44\x69\ \x67\x69\x61\x20\x67\x69\x76\x65\x73\x20\x79\x6f\x75\x20\x63\x65\ \x72\x74\x61\x69\x6e\x20\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\ \x0a\x2a\x2a\x20\x72\x69\x67\x68\x74\x73\x2e\x20\x20\x54\x68\x65\ \x73\x65\x20\x72\x69\x67\x68\x74\x73\x20\x61\x72\x65\x20\x64\x65\ \x73\x63\x72\x69\x62\x65\x64\x20\x69\x6e\x20\x74\x68\x65\x20\x44\ \x69\x67\x69\x61\x20\x51\x74\x20\x4c\x47\x50\x4c\x20\x45\x78\x63\ \x65\x70\x74\x69\x6f\x6e\x0a\x2a\x2a\x20\x76\x65\x72\x73\x69\x6f\ \x6e\x20\x31\x2e\x31\x2c\x20\x69\x6e\x63\x6c\x75\x64\x65\x64\x20\ \x69\x6e\x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x4c\x47\x50\x4c\ \x5f\x45\x58\x43\x45\x50\x54\x49\x4f\x4e\x2e\x74\x78\x74\x20\x69\ \x6e\x20\x74\x68\x69\x73\x20\x70\x61\x63\x6b\x61\x67\x65\x2e\x0a\ \x2a\x2a\x0a\x2a\x2a\x20\x47\x4e\x55\x20\x47\x65\x6e\x65\x72\x61\ \x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\x73\x65\ \x20\x55\x73\x61\x67\x65\x0a\x2a\x2a\x20\x41\x6c\x74\x65\x72\x6e\ \x61\x74\x69\x76\x65\x6c\x79\x2c\x20\x74\x68\x69\x73\x20\x66\x69\ \x6c\x65\x20\x6d\x61\x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x75\ \x6e\x64\x65\x72\x20\x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\ \x66\x20\x74\x68\x65\x20\x47\x4e\x55\x0a\x2a\x2a\x20\x47\x65\x6e\ \x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\ \x6e\x73\x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x33\x2e\x30\x20\ \x61\x73\x20\x70\x75\x62\x6c\x69\x73\x68\x65\x64\x20\x62\x79\x20\ \x74\x68\x65\x20\x46\x72\x65\x65\x20\x53\x6f\x66\x74\x77\x61\x72\ \x65\x0a\x2a\x2a\x20\x46\x6f\x75\x6e\x64\x61\x74\x69\x6f\x6e\x20\ \x61\x6e\x64\x20\x61\x70\x70\x65\x61\x72\x69\x6e\x67\x20\x69\x6e\ \x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x4c\x49\x43\x45\x4e\x53\ \x45\x2e\x47\x50\x4c\x20\x69\x6e\x63\x6c\x75\x64\x65\x64\x20\x69\ \x6e\x20\x74\x68\x65\x0a\x2a\x2a\x20\x70\x61\x63\x6b\x61\x67\x69\ \x6e\x67\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x66\x69\x6c\x65\x2e\ \x20\x20\x50\x6c\x65\x61\x73\x65\x20\x72\x65\x76\x69\x65\x77\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x69\x6e\ \x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x74\x6f\x0a\x2a\x2a\x20\ \x65\x6e\x73\x75\x72\x65\x20\x74\x68\x65\x20\x47\x4e\x55\x20\x47\ \x65\x6e\x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\ \x63\x65\x6e\x73\x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x33\x2e\ \x30\x20\x72\x65\x71\x75\x69\x72\x65\x6d\x65\x6e\x74\x73\x20\x77\ \x69\x6c\x6c\x20\x62\x65\x0a\x2a\x2a\x20\x6d\x65\x74\x3a\x20\x68\ \x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6e\x75\x2e\x6f\x72\ \x67\x2f\x63\x6f\x70\x79\x6c\x65\x66\x74\x2f\x67\x70\x6c\x2e\x68\ \x74\x6d\x6c\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\ \x54\x5f\x45\x4e\x44\x5f\x4c\x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\ \x2a\x0a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\ \x0a\x69\x6d\x70\x6f\x72\x74\x20\x51\x74\x51\x75\x69\x63\x6b\x20\ \x32\x2e\x30\x0a\x0a\x49\x74\x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\ \x69\x64\x3a\x73\x6c\x69\x64\x65\x72\x0a\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x6d\x69\x6e\x3a\ \x30\x0a\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\ \x65\x61\x6c\x20\x6d\x61\x78\x3a\x31\x0a\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x76\x61\x6c\x75\ \x65\x3a\x20\x6d\x69\x6e\x20\x2b\x20\x28\x6d\x61\x78\x20\x2d\x20\ \x6d\x69\x6e\x29\x20\x2a\x20\x28\x62\x61\x72\x2e\x78\x20\x2f\x20\ \x28\x66\x6f\x6f\x2e\x77\x69\x64\x74\x68\x20\x2d\x20\x62\x61\x72\ \x2e\x77\x69\x64\x74\x68\x29\x29\x0a\x20\x20\x20\x20\x70\x72\x6f\ \x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x69\x6e\x69\x74\x3a\ \x6d\x69\x6e\x2b\x28\x6d\x61\x78\x2d\x6d\x69\x6e\x29\x2f\x32\x0a\ \x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\ \x69\x6e\x67\x20\x6e\x61\x6d\x65\x3a\x22\x53\x6c\x69\x64\x65\x72\ \x22\x0a\x0a\x20\x20\x20\x20\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\ \x2e\x6f\x6e\x43\x6f\x6d\x70\x6c\x65\x74\x65\x64\x3a\x20\x73\x65\ \x74\x56\x61\x6c\x75\x65\x28\x69\x6e\x69\x74\x29\x0a\x20\x20\x20\ \x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x73\x65\x74\x56\x61\x6c\ \x75\x65\x28\x76\x29\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x69\ \x66\x20\x28\x6d\x69\x6e\x20\x3c\x20\x6d\x61\x78\x29\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x62\x61\x72\x2e\x78\x20\x3d\x20\ \x76\x2f\x28\x6d\x61\x78\x20\x2d\x20\x6d\x69\x6e\x29\x20\x2a\x20\ \x28\x66\x6f\x6f\x2e\x77\x69\x64\x74\x68\x20\x2d\x20\x62\x61\x72\ \x2e\x77\x69\x64\x74\x68\x29\x3b\x0a\x20\x20\x20\x20\x7d\x0a\x20\ \x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x73\x6c\x69\x64\x65\x72\ \x4e\x61\x6d\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\ \x68\x6f\x72\x73\x2e\x6c\x65\x66\x74\x3a\x70\x61\x72\x65\x6e\x74\ \x2e\x6c\x65\x66\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\ \x69\x67\x68\x74\x3a\x20\x63\x68\x69\x6c\x64\x72\x65\x6e\x52\x65\ \x63\x74\x2e\x68\x65\x69\x67\x68\x74\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x77\x69\x64\x74\x68\x3a\x63\x68\x69\x6c\x64\x72\x65\x6e\ \x52\x65\x63\x74\x2e\x77\x69\x64\x74\x68\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x76\x65\x72\x74\x69\ \x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x70\x61\x72\x65\x6e\x74\ \x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x65\x78\x74\x3a\x73\ \x6c\x69\x64\x65\x72\x2e\x6e\x61\x6d\x65\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x66\x6f\x6e\x74\x2e\x70\x6f\x69\x6e\x74\ \x53\x69\x7a\x65\x3a\x31\x32\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x49\x74\x65\ \x6d\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\ \x66\x6f\x6f\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\ \x68\x74\x3a\x20\x36\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\ \x64\x74\x68\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x77\x69\x64\x74\ \x68\x20\x2d\x20\x34\x20\x2d\x20\x73\x6c\x69\x64\x65\x72\x4e\x61\ \x6d\x65\x2e\x77\x69\x64\x74\x68\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x76\x65\x72\x74\x69\x63\x61\ \x6c\x43\x65\x6e\x74\x65\x72\x3a\x70\x61\x72\x65\x6e\x74\x2e\x76\ \x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x6c\x65\ \x66\x74\x3a\x73\x6c\x69\x64\x65\x72\x4e\x61\x6d\x65\x2e\x72\x69\ \x67\x68\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\ \x6f\x72\x73\x2e\x6c\x65\x66\x74\x4d\x61\x72\x67\x69\x6e\x3a\x35\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\ \x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x68\x65\x69\x67\x68\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\ \x68\x65\x69\x67\x68\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x6c\x65\x66\x74\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x72\x69\x67\x68\x74\x3a\x20\x62\x61\x72\x2e\x68\x6f\x72\x69\ \x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x62\x6c\x75\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x72\x61\x64\x69\x75\x73\x3a\x20\x33\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x70\ \x61\x72\x65\x6e\x74\x2e\x68\x65\x69\x67\x68\x74\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x6c\x65\x66\x74\x3a\x20\x62\x61\x72\x2e\x68\x6f\x72\x69\x7a\ \x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x72\x69\x67\x68\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x72\x69\ \x67\x68\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x6f\x6c\x6f\x72\x3a\x20\x22\x67\x72\x61\x79\x22\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x64\x69\x75\x73\ \x3a\x20\x33\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\ \x6f\x6c\x6f\x72\x3a\x20\x22\x74\x72\x61\x6e\x73\x70\x61\x72\x65\ \x6e\x74\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x72\x61\x64\x69\x75\x73\x3a\x20\x33\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x77\x69\x64\ \x74\x68\x3a\x20\x32\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x62\x6c\x61\x63\x6b\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x63\x74\x61\ \x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x69\x64\x3a\x20\x62\x61\x72\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x79\x3a\x20\x2d\x37\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\ \x32\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x68\ \x65\x69\x67\x68\x74\x3a\x20\x32\x30\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x72\x61\x64\x69\x75\x73\x3a\x20\x31\x35\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\ \x6f\x72\x3a\x20\x22\x77\x68\x69\x74\x65\x22\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x77\ \x69\x64\x74\x68\x3a\x20\x32\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\x6f\x72\ \x3a\x20\x22\x62\x6c\x61\x63\x6b\x22\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\x20\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\ \x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x64\x72\x61\x67\x2e\x74\x61\x72\x67\ \x65\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x72\x61\x67\x2e\ \x61\x78\x69\x73\x3a\x20\x44\x72\x61\x67\x2e\x58\x41\x78\x69\x73\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x64\x72\x61\x67\x2e\x6d\x69\x6e\x69\x6d\x75\x6d\x58\x3a\x20\ \x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x64\x72\x61\x67\x2e\x6d\x61\x78\x69\x6d\x75\x6d\x58\x3a\ \x20\x66\x6f\x6f\x2e\x77\x69\x64\x74\x68\x20\x2d\x20\x70\x61\x72\ \x65\x6e\x74\x2e\x77\x69\x64\x74\x68\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x0a\x04\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x49\x74\ \x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\x3a\x20\x74\x6f\x6f\ \x6c\x62\x61\x72\x0a\x0a\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\ \x74\x79\x20\x76\x61\x72\x69\x61\x6e\x74\x20\x6c\x61\x62\x65\x6c\ \x73\x0a\x20\x20\x20\x20\x73\x69\x67\x6e\x61\x6c\x20\x62\x75\x74\ \x74\x6f\x6e\x43\x6c\x69\x63\x6b\x65\x64\x28\x69\x6e\x74\x20\x69\ \x6e\x64\x65\x78\x29\x0a\x0a\x20\x20\x20\x20\x42\x6f\x72\x64\x65\ \x72\x49\x6d\x61\x67\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x73\x6f\x75\x72\x63\x65\x3a\x20\x22\x69\x6d\x61\x67\x65\x73\ \x2f\x74\x69\x74\x6c\x65\x62\x61\x72\x2e\x73\x63\x69\x22\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x77\x69\x64\x74\x68\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x70\x61\x72\x65\x6e\ \x74\x2e\x68\x65\x69\x67\x68\x74\x20\x2b\x20\x31\x34\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x79\x3a\x20\x2d\x37\x0a\x20\x20\x20\x20\ \x7d\x0a\x0a\x20\x20\x20\x20\x52\x6f\x77\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x79\x3a\x20\x33\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x68\x6f\x72\x69\x7a\x6f\ \x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x70\x65\ \x61\x74\x65\x72\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x6d\x6f\x64\x65\x6c\x3a\x20\x74\x6f\x6f\x6c\x62\x61\ \x72\x2e\x6c\x61\x62\x65\x6c\x73\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x64\x65\x6c\x65\x67\x61\x74\x65\x3a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x42\ \x75\x74\x74\x6f\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x65\x78\x74\ \x3a\x20\x6d\x6f\x64\x65\x6c\x44\x61\x74\x61\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x6f\x6e\x43\x6c\x69\x63\x6b\x65\x64\x3a\x20\x74\x6f\x6f\x6c\x62\ \x61\x72\x2e\x62\x75\x74\x74\x6f\x6e\x43\x6c\x69\x63\x6b\x65\x64\ \x28\x6d\x6f\x64\x65\x6c\x2e\x69\x6e\x64\x65\x78\x29\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\ \x0a\x7d\x0a\ \x00\x00\x0b\x0a\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x49\x74\ \x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\x3a\x20\x74\x69\x74\ \x6c\x65\x42\x61\x72\x0a\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\ \x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x74\x69\x74\x6c\x65\x3a\ \x20\x22\x22\x0a\x0a\x20\x20\x20\x20\x42\x6f\x72\x64\x65\x72\x49\ \x6d\x61\x67\x65\x20\x7b\x20\x73\x6f\x75\x72\x63\x65\x3a\x20\x22\ \x69\x6d\x61\x67\x65\x73\x2f\x74\x69\x74\x6c\x65\x62\x61\x72\x2e\ \x73\x63\x69\x22\x3b\x20\x77\x69\x64\x74\x68\x3a\x20\x70\x61\x72\ \x65\x6e\x74\x2e\x77\x69\x64\x74\x68\x3b\x20\x68\x65\x69\x67\x68\ \x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x68\x65\x69\x67\x68\x74\ \x20\x2b\x20\x31\x34\x3b\x20\x79\x3a\x20\x2d\x37\x20\x7d\x0a\x0a\ \x20\x20\x20\x20\x49\x6d\x61\x67\x65\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x69\x64\x3a\x20\x71\x75\x69\x74\x42\x75\x74\x74\ \x6f\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\ \x72\x73\x2e\x6c\x65\x66\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\ \x6c\x65\x66\x74\x2f\x2f\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x6c\x65\x66\x74\x4d\x61\x72\x67\x69\x6e\x3a\x20\x30\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x76\x65\ \x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\ \x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\x75\x72\ \x63\x65\x3a\x20\x22\x69\x6d\x61\x67\x65\x73\x2f\x71\x75\x69\x74\ \x2e\x70\x6e\x67\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4d\x6f\ \x75\x73\x65\x41\x72\x65\x61\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\ \x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x43\x6c\x69\x63\x6b\x65\x64\ \x3a\x20\x51\x74\x2e\x71\x75\x69\x74\x28\x29\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\ \x20\x54\x65\x78\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x69\x64\x3a\x20\x63\x61\x74\x65\x67\x6f\x72\x79\x54\x65\x78\x74\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6c\ \x65\x66\x74\x3a\x20\x71\x75\x69\x74\x42\x75\x74\x74\x6f\x6e\x2e\ \x72\x69\x67\x68\x74\x3b\x20\x72\x69\x67\x68\x74\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x72\x69\x67\x68\x74\x3b\x20\x2f\x2f\x6c\x65\ \x66\x74\x4d\x61\x72\x67\x69\x6e\x3a\x20\x31\x30\x3b\x20\x72\x69\ \x67\x68\x74\x4d\x61\x72\x67\x69\x6e\x3a\x20\x31\x30\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x65\x72\x74\x69\x63\ \x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\x6e\x74\ \x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x65\x6c\x69\x64\x65\x3a\x20\x54\x65\x78\x74\x2e\x45\x6c\ \x69\x64\x65\x4c\x65\x66\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x74\x65\x78\x74\x3a\x20\x74\x69\x74\x6c\x65\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x66\x6f\x6e\x74\x2e\x62\x6f\x6c\x64\x3a\x20\x74\ \x72\x75\x65\x3b\x20\x66\x6f\x6e\x74\x2e\x70\x6f\x69\x6e\x74\x53\ \x69\x7a\x65\x3a\x20\x32\x30\x3b\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x57\x68\x69\x74\x65\x22\x3b\x20\x73\x74\x79\x6c\x65\x3a\x20\ \x54\x65\x78\x74\x2e\x52\x61\x69\x73\x65\x64\x3b\x20\x73\x74\x79\ \x6c\x65\x43\x6f\x6c\x6f\x72\x3a\x20\x22\x42\x6c\x61\x63\x6b\x22\ \x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x0d\x3f\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x4d\x6f\x62\x69\x6c\ \x69\x74\x79\x20\x43\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x2e\x0a\ \x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\x47\x49\x4e\x5f\ \x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\x0a\x2a\x2a\x20\ \x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\x74\x68\x69\x73\ \x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\ \x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x42\x53\x44\ \x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\x66\x6f\x6c\x6c\ \x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\x6e\x64\x20\x75\ \x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\x20\x61\x6e\x64\ \x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\x73\x2c\x20\x77\ \x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\x75\x74\x0a\x2a\ \x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x2c\x20\ \x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x20\x70\x72\ \x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\x74\x68\x65\x20\ \x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\x6e\x64\x69\x74\ \x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\x6d\x65\x74\x3a\ \x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\ \x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\x6f\x75\x72\x63\ \x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\x72\x65\x74\x61\ \x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\x6f\x70\ \x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6e\x6f\ \x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\x74\x20\ \x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x6e\ \x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\ \x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\x2a\x2a\x20\x20\ \x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\ \x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\ \x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\x64\x75\x63\x65\ \x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\x6f\x70\x79\x72\ \x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6e\x6f\x74\x69\ \x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\x74\x20\x6f\x66\ \x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x6e\x64\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x64\x69\ \x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\x2a\x2a\x20\x20\ \x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\x65\x6e\x74\x61\ \x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\x6f\x74\x68\x65\ \x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\x70\x72\x6f\x76\ \x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\x0a\x2a\x2a\ \x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\ \x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\x69\x74\x68\x65\ \x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\x66\x20\x44\x69\ \x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\x69\x74\x73\x20\ \x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\ \x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x73\x0a\x2a\ \x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\x20\x63\x6f\x6e\ \x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\x79\x20\x62\x65\ \x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\x6f\x72\x73\x65\ \x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\x70\x72\x6f\x64\ \x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\x0a\x2a\x2a\x20\ \x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\x73\x20\x73\x6f\ \x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\x75\x74\x20\x73\ \x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\x72\x20\x77\x72\ \x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\x73\x69\x6f\x6e\ \x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\x48\x49\x53\x20\ \x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\x50\x52\x4f\x56\ \x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\x43\x4f\x50\x59\ \x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\x53\x20\x41\x4e\ \x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\x53\x0a\x2a\ \x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\x44\x20\x41\x4e\ \x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\x20\x49\x4d\x50\ \x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x2c\ \x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\x54\x20\ \x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\x20\x54\ \x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\ \x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\x20\x4d\x45\x52\ \x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\x20\x41\x4e\x44\ \x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\x0a\x2a\x2a\x20\ \x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\x20\x50\x55\x52\ \x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\x43\x4c\x41\x49\ \x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\x56\x45\x4e\x54\ \x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\x4f\x50\x59\x52\ \x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\x52\x20\x4f\x52\ \x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\x53\x20\x42\x45\ \x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\x41\x4e\x59\x20\ \x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\x52\x45\x43\x54\ \x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\x2c\x0a\x2a\x2a\ \x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\x45\x4d\x50\x4c\ \x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\x45\x51\x55\x45\ \x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\x53\x20\x28\x49\ \x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\x54\x20\x4e\x4f\ \x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\x20\x54\x4f\x2c\ \x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\x20\x4f\x46\x20\ \x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\x4f\x4f\x44\x53\ \x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\x3b\x20\x4c\x4f\ \x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\x2a\x20\x44\x41\ \x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\x54\x53\x3b\x20\ \x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\x49\x4e\x54\x45\ \x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\x57\x45\x56\x45\ \x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\x20\x4f\x4e\x20\ \x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\x59\x20\x4f\x46\ \x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\x57\x48\x45\x54\ \x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\x41\x43\x54\x2c\ \x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\ \x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\x2a\x20\x28\x49\ \x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\x4c\x49\x47\x45\ \x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\x57\x49\x53\x45\ \x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\x20\x41\x4e\x59\ \x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\x54\x48\x45\x20\ \x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\x49\x53\x20\x53\ \x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\x4e\x20\x49\x46\ \x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\x54\x48\x45\x20\ \x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\x4f\x46\x20\x53\ \x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\x49\x43\x45\x4e\ \x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\x20\x51\x74\x51\ \x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x49\x74\x65\x6d\x20\x7b\ \x0a\x20\x20\x20\x20\x69\x64\x3a\x20\x73\x63\x72\x6f\x6c\x6c\x42\ \x61\x72\x0a\x20\x20\x20\x20\x2f\x2f\x20\x54\x68\x65\x20\x70\x72\ \x6f\x70\x65\x72\x74\x69\x65\x73\x20\x74\x68\x61\x74\x20\x64\x65\ \x66\x69\x6e\x65\x20\x74\x68\x65\x20\x73\x63\x72\x6f\x6c\x6c\x62\ \x61\x72\x27\x73\x20\x73\x74\x61\x74\x65\x2e\x0a\x20\x20\x20\x20\ \x2f\x2f\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x20\x61\x6e\x64\x20\ \x70\x61\x67\x65\x53\x69\x7a\x65\x20\x61\x72\x65\x20\x69\x6e\x20\ \x74\x68\x65\x20\x72\x61\x6e\x67\x65\x20\x30\x2e\x30\x20\x2d\x20\ \x31\x2e\x30\x2e\x20\x20\x54\x68\x65\x79\x20\x61\x72\x65\x20\x72\ \x65\x6c\x61\x74\x69\x76\x65\x20\x74\x6f\x20\x74\x68\x65\x0a\x20\ \x20\x20\x20\x2f\x2f\x20\x68\x65\x69\x67\x68\x74\x20\x6f\x66\x20\ \x74\x68\x65\x20\x70\x61\x67\x65\x2c\x20\x69\x2e\x65\x2e\x20\x61\ \x20\x70\x61\x67\x65\x53\x69\x7a\x65\x20\x6f\x66\x20\x30\x2e\x35\ \x20\x6d\x65\x61\x6e\x73\x20\x74\x68\x61\x74\x20\x79\x6f\x75\x20\ \x63\x61\x6e\x20\x73\x65\x65\x20\x35\x30\x25\x0a\x20\x20\x20\x20\ \x2f\x2f\x20\x6f\x66\x20\x74\x68\x65\x20\x68\x65\x69\x67\x68\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x76\x69\x65\x77\x2e\x0a\x20\x20\ \x20\x20\x2f\x2f\x20\x6f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\x6e\ \x20\x63\x61\x6e\x20\x62\x65\x20\x65\x69\x74\x68\x65\x72\x20\x27\ \x56\x65\x72\x74\x69\x63\x61\x6c\x27\x20\x6f\x72\x20\x27\x48\x6f\ \x72\x69\x7a\x6f\x6e\x74\x61\x6c\x27\x0a\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x70\x6f\x73\x69\ \x74\x69\x6f\x6e\x0a\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\ \x79\x20\x72\x65\x61\x6c\x20\x70\x61\x67\x65\x53\x69\x7a\x65\x0a\ \x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\ \x69\x6e\x67\x20\x6f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\ \x3a\x20\x22\x56\x65\x72\x74\x69\x63\x61\x6c\x22\x0a\x20\x20\x20\ \x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x61\x6c\x69\x61\x73\x20\ \x62\x67\x43\x6f\x6c\x6f\x72\x3a\x20\x62\x61\x63\x6b\x67\x72\x6f\ \x75\x6e\x64\x2e\x63\x6f\x6c\x6f\x72\x0a\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x61\x6c\x69\x61\x73\x20\x66\x67\x43\ \x6f\x6c\x6f\x72\x3a\x20\x74\x68\x75\x6d\x62\x2e\x63\x6f\x6c\x6f\ \x72\x0a\x0a\x20\x20\x20\x20\x2f\x2f\x20\x41\x20\x6c\x69\x67\x68\ \x74\x2c\x20\x73\x65\x6d\x69\x2d\x74\x72\x61\x6e\x73\x70\x61\x72\ \x65\x6e\x74\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x0a\x20\ \x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x62\x61\x63\x6b\x67\ \x72\x6f\x75\x6e\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\ \x64\x69\x75\x73\x3a\x20\x6f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\ \x6e\x20\x3d\x3d\x20\x27\x56\x65\x72\x74\x69\x63\x61\x6c\x27\x20\ \x3f\x20\x28\x77\x69\x64\x74\x68\x2f\x32\x20\x2d\x20\x31\x29\x20\ \x3a\x20\x28\x68\x65\x69\x67\x68\x74\x2f\x32\x20\x2d\x20\x31\x29\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\ \x22\x77\x68\x69\x74\x65\x22\x3b\x20\x6f\x70\x61\x63\x69\x74\x79\ \x3a\x20\x30\x2e\x33\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x2f\x2f\x20\ \x53\x69\x7a\x65\x20\x74\x68\x65\x20\x62\x61\x72\x20\x74\x6f\x20\ \x74\x68\x65\x20\x72\x65\x71\x75\x69\x72\x65\x64\x20\x73\x69\x7a\ \x65\x2c\x20\x64\x65\x70\x65\x6e\x64\x69\x6e\x67\x20\x75\x70\x6f\ \x6e\x20\x74\x68\x65\x20\x6f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\ \x6e\x2e\x0a\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x74\ \x68\x75\x6d\x62\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x70\x61\ \x63\x69\x74\x79\x3a\x20\x30\x2e\x37\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x62\x6c\x61\x63\x6b\x22\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x64\x69\x75\x73\x3a\ \x20\x6f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x3d\x3d\x20\ \x27\x56\x65\x72\x74\x69\x63\x61\x6c\x27\x20\x3f\x20\x28\x77\x69\ \x64\x74\x68\x2f\x32\x20\x2d\x20\x31\x29\x20\x3a\x20\x28\x68\x65\ \x69\x67\x68\x74\x2f\x32\x20\x2d\x20\x31\x29\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x78\x3a\x20\x6f\x72\x69\x65\x6e\x74\x61\x74\x69\ \x6f\x6e\x20\x3d\x3d\x20\x27\x56\x65\x72\x74\x69\x63\x61\x6c\x27\ \x20\x3f\x20\x31\x20\x3a\x20\x28\x73\x63\x72\x6f\x6c\x6c\x42\x61\ \x72\x2e\x70\x6f\x73\x69\x74\x69\x6f\x6e\x20\x2a\x20\x28\x73\x63\ \x72\x6f\x6c\x6c\x42\x61\x72\x2e\x77\x69\x64\x74\x68\x2d\x32\x29\ \x20\x2b\x20\x31\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x79\x3a\ \x20\x6f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x3d\x3d\x20\ \x27\x56\x65\x72\x74\x69\x63\x61\x6c\x27\x20\x3f\x20\x28\x73\x63\ \x72\x6f\x6c\x6c\x42\x61\x72\x2e\x70\x6f\x73\x69\x74\x69\x6f\x6e\ \x20\x2a\x20\x28\x73\x63\x72\x6f\x6c\x6c\x42\x61\x72\x2e\x68\x65\ \x69\x67\x68\x74\x2d\x32\x29\x20\x2b\x20\x31\x29\x20\x3a\x20\x31\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\ \x6f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x3d\x3d\x20\x27\ \x56\x65\x72\x74\x69\x63\x61\x6c\x27\x20\x3f\x20\x28\x70\x61\x72\ \x65\x6e\x74\x2e\x77\x69\x64\x74\x68\x2d\x32\x29\x20\x3a\x20\x28\ \x73\x63\x72\x6f\x6c\x6c\x42\x61\x72\x2e\x70\x61\x67\x65\x53\x69\ \x7a\x65\x20\x2a\x20\x28\x73\x63\x72\x6f\x6c\x6c\x42\x61\x72\x2e\ \x77\x69\x64\x74\x68\x2d\x32\x29\x29\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x6f\x72\x69\x65\x6e\x74\ \x61\x74\x69\x6f\x6e\x20\x3d\x3d\x20\x27\x56\x65\x72\x74\x69\x63\ \x61\x6c\x27\x20\x3f\x20\x28\x73\x63\x72\x6f\x6c\x6c\x42\x61\x72\ \x2e\x70\x61\x67\x65\x53\x69\x7a\x65\x20\x2a\x20\x28\x73\x63\x72\ \x6f\x6c\x6c\x42\x61\x72\x2e\x68\x65\x69\x67\x68\x74\x2d\x32\x29\ \x29\x20\x3a\x20\x28\x70\x61\x72\x65\x6e\x74\x2e\x68\x65\x69\x67\ \x68\x74\x2d\x32\x29\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x5b\xdf\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\xfa\x00\x00\x00\xfa\x08\x06\x00\x00\x00\x88\xec\x5a\x3d\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x5b\x81\x49\x44\x41\x54\x78\xda\xec\ \xbd\x09\xb8\x1c\x57\x75\x27\x7e\x4e\xef\x6f\x5f\xb4\xcb\xda\x2c\ \x4b\xf2\xbe\xaf\x60\xc0\xd8\xc6\x66\x0b\x90\x00\x21\x26\x99\x24\ \x40\x18\x26\xdf\x4c\x20\x93\x49\xbe\xcc\x7c\x59\x26\x5f\x32\x90\ \xc9\x42\x02\x61\x48\x32\xff\x10\xf8\x87\x40\x02\x81\xb0\x24\x61\ \x09\x8b\x01\x2f\xd8\x80\xc1\xbb\x25\x59\xfb\xae\x27\xe9\xe9\xe9\ \xe9\xed\xbd\x9e\xb9\xb7\xaa\x5f\x77\xd5\xad\x73\x6e\xd5\x7b\xaf\ \x5a\x96\xcd\xbd\x9f\x4a\xdd\xaf\xbb\xba\xfa\xf6\xad\x7b\xb6\xdf\ \xd9\x90\x88\xc0\x0d\x37\xdc\x78\x61\x8f\x8c\x5b\x02\x37\xdc\x70\ \x84\xee\x86\x1b\x6e\x38\x42\x77\xc3\x0d\x37\x1c\xa1\xbb\xe1\x86\ \x1b\x8e\xd0\xdd\x70\xc3\x0d\x47\xe8\x6e\xb8\xe1\x46\x4a\x23\x17\ \x77\x02\xfe\xd2\x56\xcb\x9b\x08\x10\xf4\xce\x21\x73\x0e\x05\xde\ \xf3\x5c\x79\xd8\x7c\xee\x3d\xcd\xab\xc7\x82\x7a\x96\x55\xcf\x97\ \xa9\xc7\x3e\x75\x0c\x43\x8d\x7a\xa1\x41\x83\x90\xcb\x0c\xac\x1c\ \x2e\xf4\xae\x18\xc8\xaf\xdc\xb6\xae\xd4\xb3\x75\x5d\x69\x79\x6f\ \x77\xa6\xaf\x41\x30\xa4\x2e\xd0\xf0\x27\x00\x33\xea\x38\xa1\xfe\ \xde\xa7\x1e\xf7\xfa\x07\xea\xc7\x53\xea\x98\x0b\x4f\x04\x17\xbf\ \x52\x41\x37\x24\x62\xe8\xf5\xe9\x39\x82\xee\x12\xaa\x97\x31\xf0\ \x9b\xc9\x3b\xaf\x5a\x6d\x40\x3e\xd7\xfc\xcd\x81\xef\xd7\xa7\xce\ \xce\x35\xa0\x58\xc8\x84\x2e\xe7\x7d\x4f\xeb\x3a\x14\xf8\x08\x06\ \x7e\x83\xf0\x5b\x5a\xe7\x23\x44\x6e\x4c\xe8\x5a\x81\xb9\x50\xe0\ \x06\xa1\x7c\x33\x1b\x6a\xb5\xa7\x66\xea\x30\xd0\x97\x05\x0a\x7e\ \xa6\x39\xdf\x4a\xa5\x01\xd9\x2c\x7a\x47\x70\x2e\xd9\x0c\xc2\xc8\ \xe9\x1a\x14\xf2\x08\x43\xfd\x59\x68\xd4\x29\xf0\x13\x90\x59\xe3\ \xf9\xb5\xa2\xf6\xf5\x83\xbf\x07\x31\xbc\x46\xc1\xb5\x50\xaf\xff\ \xde\x4b\xbf\xe5\xa8\x7a\x31\x84\x9e\xd2\x28\xa9\x63\x9b\x3a\x6e\ \x52\xc7\x65\xea\xd8\xa0\x8e\x15\xea\x1e\x0d\xaa\xc7\x21\x75\x9f\ \x7a\xd5\x63\x41\x11\x78\x5e\x3f\x0e\x0f\xe5\xe1\x92\x8d\xdd\x70\ \xd9\x86\x2e\x58\x39\x94\x83\xee\x62\x16\x32\x19\x82\x5a\x5d\x6d\ \x38\x62\x18\x09\x86\x37\x9d\x7a\x9c\x52\x7f\x8e\xa8\x3f\x76\xaa\ \x37\x76\x37\x8f\x1d\xea\xd8\xa3\x8e\x71\x75\x4c\xb9\x5b\xef\x86\ \x23\xf4\xf4\xc6\xcd\x8a\xe0\xde\xa4\x88\xf1\x55\xea\x50\x04\x8e\ \xd9\x90\x94\x9f\x1f\x9a\xcb\x2b\x89\xb1\x7a\x55\x09\x5e\x7c\x45\ \x2f\x5c\xaa\x08\xbc\xaf\x3b\x03\x75\xf5\x5a\x5d\xbd\x57\x57\x04\ \x5c\xab\x92\x21\x01\x30\x2a\x78\x10\xe7\x25\xa9\x62\x1c\xb4\x45\ \xfd\xb1\xc5\x90\x7e\x5a\xc2\x1f\x69\x12\xbc\xd6\x00\x34\x23\xd8\ \xde\xd4\x04\xc6\xd4\x31\xe1\xb6\x84\x1b\x8e\xd0\x93\x8f\xd7\xab\ \xe3\x57\x15\x8d\xdd\x2e\xea\xcb\xf3\xda\x98\x52\x6d\x7b\xfa\xf2\ \x70\xc7\x75\x03\x70\xed\xb6\x6e\xe8\x56\xaa\x6c\x45\x11\xf7\x5c\ \x85\xc2\xaa\x2c\x1a\x6a\xed\x3c\xc7\x08\xa9\x80\x9c\x4a\x8b\xc1\ \xc7\x92\x4f\xfc\xde\x11\xbc\x4e\x59\xbd\x7f\x48\x3d\x39\xa8\x9e\ \x1f\x50\xcf\x35\xf1\x3f\xa5\x0e\xfd\xda\xc9\xa6\x16\xe0\x86\x1b\ \x8e\xd0\x9b\xe3\x0a\x75\xbc\x57\xd1\xdb\x1b\x58\x53\x2f\x68\x6e\ \x69\x1d\xbc\xa6\xf4\xf8\x8b\x7a\xe1\xee\x9b\x07\x61\xf5\x70\x1e\ \x2a\x8a\xe8\xe7\xd4\x11\x25\xd6\xa0\xed\x16\xbc\xd0\xfc\xc5\x82\ \x7f\x5b\x0d\x6d\x61\x42\x50\x54\xc7\xd6\xe6\x11\x7c\xbd\xd2\x24\ \x76\x7d\x1c\x56\xc7\xd3\xea\x78\xa6\xf9\xfc\x58\x53\x0b\x00\x17\ \x44\xec\xc6\x8f\x13\xa1\xff\x8a\xda\xf1\xef\x55\x8f\x03\x21\x2c\ \x88\xc3\x77\x1a\x3e\x21\xbd\xf4\xa6\x01\xb8\xeb\xda\x7e\x65\x7f\ \x2b\x9d\xba\xdc\x88\x00\x56\x6d\xf0\xc5\x42\xc3\x68\x12\x7b\x10\ \x94\x22\x41\xba\x07\x40\x28\x0c\x7e\xce\xbc\x26\x16\x5a\x1a\x40\ \x48\x6b\xf0\x18\xc0\x51\x75\x1c\x57\x1f\xdd\x95\xcb\xe2\xb3\x4d\ \x0c\xe0\x70\x93\x29\x8c\xba\xad\xe5\xc6\x0b\x8d\xd0\xbb\xd5\xf1\ \x21\xb5\xe1\x7f\xa9\x45\x07\x36\x11\xa7\x88\x5c\x11\x06\xfc\xc4\ \xad\xcb\xe0\xe6\xcb\x7a\xa0\x5a\xf3\x41\x36\x9e\x90\xe7\x25\xb9\ \x49\xe9\x28\x13\x30\xc4\xa9\xf2\xe6\xc7\xd0\x50\x08\x9a\x44\x4e\ \x68\x30\x8b\x90\x09\xa0\x19\xc0\x85\xfe\x81\x2f\xee\x2a\xb6\xf8\ \x46\x55\x1d\x23\xea\xaf\x91\xa6\xfd\xff\x74\xd3\xfe\xd7\xc4\xbf\ \xdf\x31\x00\x37\x9e\xaf\x84\xae\x89\xfc\x53\x6a\xef\xbf\x3e\xec\ \x46\x03\xd6\xc3\xa3\x01\x37\x4d\x40\xaf\x7f\xe9\x72\x8f\xc8\xb5\ \x14\xa7\x96\xdd\x4d\x0c\xd1\x62\xf8\x31\x62\xa3\x1b\x84\xd8\x42\ \xdd\x21\xaa\x1d\x98\xae\xaa\xe0\x75\x90\xe1\x00\x08\xcc\x0f\xe1\ \x19\x07\xb5\x5c\x40\xa0\xbd\x06\xeb\xd5\xd3\xf5\xea\xef\x1b\xbd\ \x05\xf6\x5d\x6b\x8a\x01\xe0\xa8\xcf\x04\x3c\xc9\xff\x4c\x93\x01\ \x1c\x80\x36\x10\xd8\x70\xdb\xd1\x8d\xf3\x91\xd0\xbb\x5a\x44\x6e\ \xa3\xcf\x20\x8d\xd4\x09\xee\xbc\x79\x18\x6e\xbc\xa4\xdb\x27\xf2\ \xb0\x9a\x6c\xa8\x03\x98\xd0\xce\x0e\x7c\x6e\x9e\x78\x91\x04\x29\ \x4f\x82\xfd\x6f\x10\x39\x91\xa1\x19\x00\xef\xf7\x9d\x07\x03\x25\ \x2c\x42\x3d\xf1\x3f\x82\x9a\x01\xac\x51\x7f\xaf\x51\x2f\x5d\xab\ \x5f\xd4\x5f\x51\x2c\x60\x4d\x3d\x3b\xab\xde\x3f\xda\xd4\x00\xf4\ \xa1\x3d\x02\xbb\x9a\x0c\x60\xa2\x69\x26\xb8\xe1\x46\xa7\x09\x5d\ \x54\x7d\xff\x52\x6d\xda\xd7\x47\xe8\x0d\x18\x69\xee\x29\xb5\x04\ \x57\x5d\xdc\x0b\x77\x5c\xdb\x07\x15\xa5\xae\x13\xfb\x1d\x68\x21\ \x68\x62\xec\x75\x12\x08\x10\x85\xf7\x51\xf8\x4c\x50\x63\x30\x83\ \x4e\x6c\x20\x1f\x07\x10\x52\x20\xa8\xc3\x98\x8b\x81\x39\x20\xa2\ \x5a\x7f\xd2\x81\x42\xfa\xb8\xaa\xfd\x3e\x69\x63\x66\x52\x9d\xa3\ \x55\xfe\xdd\x01\xe2\xdf\xde\x34\x01\x14\x73\x08\x06\x03\xb9\xe1\ \x46\x67\x24\xfa\xbb\xd5\xf1\xf6\xd0\x1e\xb6\xd9\xe5\x4a\x92\x0f\ \x2d\x2b\xc0\x6b\x5f\x34\x04\x9a\xc4\x5b\x81\x55\x56\x55\xdc\x24\ \x76\xc3\xee\x0e\xba\xdd\x22\x00\x9b\xf0\x7e\x90\x18\x5b\xdf\x8d\ \x8c\xc2\x80\xf2\xd7\xb7\xa6\x68\x9a\x1c\x10\x65\x4a\x12\xc3\x44\ \xe3\x37\x98\x6a\x01\x42\xd6\x0f\x26\x42\x75\xd0\x55\xc6\x24\x26\ \x9a\x2a\xff\xbe\xe6\xe3\x8e\x26\x03\x98\x07\x01\x67\xdc\xb6\x76\ \x23\x0d\x42\xbf\x5a\x1d\x7f\x64\x3d\x83\xd1\x86\xef\xbe\x61\x10\ \xfa\x7b\x32\x50\xb6\xb9\xcf\x42\x2a\xb3\xe0\x0a\x6b\x05\xc5\x30\ \x5f\x18\x04\xe1\x10\x65\xa9\x8f\x02\xd3\x88\x08\x6c\x49\xc3\xa0\ \xa8\x96\x10\x41\xee\x8d\xcf\x84\x42\x5b\x9b\xc4\x1e\xbc\x06\x05\ \xcd\x0f\x4e\x3d\x6a\x5d\xa7\x5f\x9d\x73\x55\x4b\x03\x68\x01\x87\ \x34\xad\x4e\xd9\x1f\x60\x02\xcf\x36\xc1\x40\x6d\x16\x9c\x00\x17\ \x0d\xe8\x08\x7d\x01\x43\x27\xc1\xfc\xa9\xda\x50\xdd\xac\xfb\x9a\ \x73\xa5\x55\x1a\x70\xc9\x45\xbd\x70\xe5\xe6\x2e\xcf\x4f\x1e\x26\ \xcc\x20\x21\x92\x21\xb4\xd1\x2e\xd1\x43\xcf\x63\x00\x33\xd6\xd5\ \x16\x20\x22\xe4\x08\xdb\x62\xc2\xd8\xce\xc3\x00\xd1\x06\x09\x3c\ \x18\xf0\xc3\x79\x05\xcc\xd7\xd8\xbc\x01\x41\x53\xf0\x5f\xea\x51\ \x4f\x74\x1c\xc3\x15\x06\xb7\xd1\x04\x7e\x58\x3d\x3d\xd2\x24\xfe\ \x67\x9a\xa6\xc0\x91\x26\x13\x98\x74\x64\xe0\x08\xdd\xdc\x70\x3f\ \xa5\xf6\xd0\x5d\x40\x82\x04\x37\xe9\x4d\x6d\xcc\x4c\x3e\x03\x2f\ \xb9\xb2\xaf\x69\x9a\x9a\x52\xd6\x04\xca\x24\x95\x00\x2c\x51\x71\ \x14\x66\x0c\xa6\x0d\x0f\xc0\x73\x22\xe2\xa4\x27\x58\x98\x89\x04\ \x0a\x32\x89\x26\x11\x26\x45\xc6\x5a\x92\xc0\xcc\x24\x24\x33\x60\ \x96\x50\xf0\x5a\x28\x98\x13\xa1\x75\xee\x55\x7f\x5e\xaa\x5e\x53\ \x07\xdd\xd5\xd6\x60\x94\x06\xe0\x07\xfd\x1c\x6b\xaa\xff\x4f\x35\ \xf1\x80\xe3\x4d\x33\xc0\x85\x03\xff\x58\x11\x7a\x7b\xaf\x69\xdf\ \xf1\xff\x88\x80\x6f\x36\x57\xb5\xb2\xcd\x37\x6f\xec\x86\x4d\xab\ \x0b\x50\xab\x19\xe2\x1e\xe3\xb2\xc9\x82\xea\xac\x00\xb8\x21\x19\ \x34\x2a\x80\x63\x1c\x81\x4a\x28\xbc\x99\x3d\x16\x61\x76\xa6\x16\ \x81\x0c\xa1\x05\xfe\x96\x00\x4d\xd1\xbe\x87\xa8\xaa\x24\x9a\x34\ \x9c\x46\xc0\x68\x2c\xac\x99\x42\x4a\x03\x80\xad\xea\xb9\x8e\x06\ \xbc\x2d\x70\xfe\x8c\x3a\xf5\x84\x7a\x7a\xac\x69\xfb\x07\x5d\x81\ \x8e\x01\xfc\x18\x48\xf4\x3b\xd4\x06\xb8\xc1\x26\x74\xa3\x66\x25\ \xc2\x35\xdb\x7a\xbc\x00\x99\x5a\x83\x62\xd0\x2d\x26\x35\x13\x39\ \xb5\xc2\x40\xc3\x51\x92\xc4\x16\xe2\x8c\x20\xe2\x82\x6d\x8f\x36\ \x29\xce\xa8\xf3\xc4\xd8\xf7\x44\x76\xf0\x22\x62\x72\x18\x04\x19\ \xf2\xff\x53\x0c\x37\x66\x6c\x7b\x14\x18\x4d\x14\x5d\x9c\x5f\xa3\ \x6e\xf5\xf7\x85\xfe\x81\xb7\xb6\x6c\xb6\x0c\xcc\xf4\x76\x67\xc7\ \xd4\x74\x8e\x36\x89\x7f\x47\x13\x0b\x98\x4f\x10\x9a\x06\x17\x0d\ \xfc\x82\x90\xe8\x6f\x8f\xec\x11\x69\x0f\x37\x63\xd9\x7b\xfb\xf2\ \xb0\x75\x6d\xd1\x4b\x52\x09\x7d\x50\x02\xbf\x4c\xb4\x3a\xa2\x79\ \x93\x00\xa4\xc5\xd0\xb9\x4d\xe3\x8e\x7c\xd9\xfc\x75\x85\x88\x3c\ \xc9\x53\xc0\x05\xe9\xb4\xe8\x4d\x40\xf8\x59\x06\x85\x61\x5b\x9f\ \x63\x18\x68\x73\xfb\x49\x6e\x43\x80\x50\xa0\x10\x19\x58\x40\x50\ \x23\xe1\x31\x88\x6e\x45\xec\x3a\x40\x6a\x9d\x5a\x9b\x9b\xfd\x39\ \x78\xe7\x6b\x37\xdf\x78\x36\x03\x07\xd5\xc7\x76\x35\x71\x80\x3d\ \xcd\x47\xad\x05\x4c\x92\x9f\x80\xe8\xc6\xf3\x00\x8c\x5b\xe9\x49\ \x74\x41\x68\x48\x6a\xfb\x96\xb5\x25\xe8\xeb\xce\x7a\x7e\xf3\x30\ \x31\x4b\x94\xcc\x81\x68\x01\x62\xe6\xd4\x5d\xe4\xd4\xf6\xf9\xcf\ \x81\x50\x88\x21\xe6\xb5\x79\x22\x20\x86\xc9\xa0\xf0\x39\x8c\xc3\ \x00\x28\xe6\xbb\x63\x98\x5e\x28\x86\x80\x84\xf5\xe3\x70\x0d\x13\ \x20\xc4\x30\xf0\x19\x99\xbf\xe9\x01\x31\xb1\x80\x08\x00\x5a\x52\ \x8f\xab\xb3\x59\x5c\xad\x5e\xba\x39\x60\xb2\xe8\x70\xe0\xb3\x8a\ \xdf\xef\xe9\xed\xce\xec\x51\x8c\x60\xbf\xfa\xe8\x3c\x18\xa8\xb5\ \x82\xf1\xe6\x39\x6e\x9c\x47\x84\x7e\x9b\xba\x89\xcb\x6d\xc0\x75\ \x54\xb3\x46\xd8\xb0\xba\xe8\x25\xac\x44\x24\xd7\x7c\x60\x8a\x75\ \x9f\x0a\x15\x5d\x80\x01\xa1\xac\xda\x01\x86\xcf\x0b\x6d\x68\xee\ \xcb\x51\x30\x19\xb8\xef\xa7\xb0\x2d\x2e\xa1\xf1\x68\x86\xe2\x26\ \x8c\xfe\x0b\xf9\xd9\x6d\xae\x0d\x10\xc0\x3f\x8c\xc1\x04\xc8\xb2\ \x8e\x1c\xb8\x19\x64\x1a\x18\x66\xd0\x18\x60\xe2\xfe\xb5\x74\x34\ \xe0\x72\x75\xea\xf2\x9e\xae\xcc\x2d\x3e\xff\xf4\xde\xd7\xd9\x4b\ \x67\xd4\x1a\xcc\xab\xfd\x7b\x9b\xd2\x7f\x67\x13\x08\xd4\x95\x81\ \x5c\x34\xe0\x73\x60\xa3\xeb\x5b\x77\x37\xab\xfa\x4a\x76\xba\x46\ \xdb\x0b\x19\xd8\xb8\xa2\x00\xb5\x3a\xe3\x87\xb3\xda\xc1\x12\x91\ \x31\x3e\xe9\x50\x96\x1a\xda\x55\x62\x04\xc6\xb6\x0f\x20\xf7\xa2\ \xcd\x0a\xd1\x39\x47\x6c\x73\xc1\x6f\xcf\xa9\xf9\xb6\x52\x48\x12\ \xf7\x34\x81\x3e\x76\xae\x86\x09\xd1\xfa\x5d\x12\x16\x60\x82\x93\ \xe6\x14\x24\xcf\x83\x14\xa3\x20\xdb\x4d\x6d\xb5\xdd\xd3\x4a\x32\ \xcd\xb2\x61\xea\xa0\x1b\x8d\xb5\x3c\xa3\xde\xdf\xdf\x04\xfd\xb4\ \x19\xf0\x54\xf3\x51\xd7\x04\xd0\x79\x02\x2e\x1a\xb0\x83\x12\x7d\ \xad\x5a\xfc\x2b\x01\x2d\x04\xce\x84\xab\xf7\xf7\xe4\xa0\xbf\x37\ \xeb\xd5\x1a\x8b\x4a\x23\x4b\x90\x4a\x9c\xb1\x1d\xdc\x58\x88\x36\ \x24\x90\xb9\x54\x82\x0d\xce\xfe\x28\x06\xd0\x33\xed\xe9\x90\x7a\ \x2f\x30\x87\xa0\xfa\x1f\x22\x44\x81\xc1\x20\x46\xa5\x71\x44\x7d\ \x5f\x48\xec\x3e\xd8\xb5\x02\xf3\x9e\x44\x80\xc0\x84\xda\x0f\x5a\ \x98\x74\xc4\xa3\x10\x62\x2a\x43\xea\xb9\x0e\x9f\xbc\xce\xf8\x2a\ \xa5\x01\x78\x29\xc0\x87\x9b\x20\xa0\x0e\x04\x9a\x77\x05\x1e\x77\ \x0c\x20\x1d\x42\xdf\x08\xba\xde\x1b\x25\x00\xec\xe6\x1f\x95\x61\ \xb6\xbc\x2f\x07\x85\x1c\x36\xf7\x18\x13\x59\x13\x1b\x9c\x42\x56\ \xac\x2a\xba\x31\xd1\x2e\xb1\xa4\x8d\x66\x55\xa1\x2d\xf3\x33\x8b\ \x2d\x12\x73\x1d\x1b\x33\x43\xc9\x9e\x97\x18\x4d\x12\xe4\x1c\x8d\ \xc4\x1e\x53\x6d\xe7\x08\xd0\xb0\xc9\x43\x44\xcc\x31\x04\x14\xb4\ \xa0\x38\xf3\xc3\xd0\xe0\x5a\x4c\x8f\x04\xa6\x17\x62\x76\x43\xea\ \x89\x3a\xbc\x68\xc0\xd7\x06\xd6\x74\xac\x29\xe9\x8f\x34\x6d\xff\ \xaf\x35\x0f\x37\x16\x41\xe8\x3a\xef\x7a\xd0\x6a\x93\x33\x4c\xbb\ \xaf\x27\xe3\x55\x3f\xad\xd4\x1a\x16\xa2\x84\x64\xa0\x52\x24\x8b\ \x4c\x48\x66\x31\xcb\x4a\x11\x30\x2a\x26\x42\x62\x37\x5c\x44\x1a\ \x52\xd8\xd6\x0f\xfa\xb7\x51\x08\xce\x11\x89\x1d\x19\x2e\x29\xe4\ \xf8\x06\xaf\x81\x5c\xf1\x0c\xb4\xfc\x06\x48\x08\xfc\x41\x0c\x33\ \x0c\xda\xfe\x82\x66\x11\x44\xf7\xe7\xf3\xf9\xa5\x0c\x40\x44\x01\ \xc8\xc4\x18\x2d\x22\x34\x86\xd5\xfb\xea\x20\x5d\x8f\xf0\x6e\x75\ \xcd\x55\x8e\xd0\xf9\x11\x5f\xd7\x9d\x60\x53\x6b\xb5\x2d\x39\x1c\ \xa6\x90\x28\x15\x33\xcd\xd2\xbf\x86\xbb\x48\x44\xf4\x38\x0e\x82\ \xf2\x97\x62\x50\x0a\x19\xc4\x18\x92\x08\x10\x6f\x03\x9b\xd7\x27\ \x29\x10\x05\xf9\x69\x8b\x6a\x2d\x63\x1a\x10\x19\xd2\x13\xc3\x52\ \x2e\xa2\x21\xd8\xfc\xf9\xe6\x3a\x30\xd7\xb1\x62\x1e\xc1\x9f\x1e\ \xa7\xe1\x70\x38\x8b\x69\xbb\x07\x19\x07\x59\xa6\x40\x16\xcd\xd0\ \x06\x36\x4a\x9b\x2e\x54\xfc\xd3\x8d\x45\x11\x3a\xc0\x72\xab\xe9\ \xcc\xd1\x8b\xda\x04\x5d\x85\x60\xfd\x6f\x13\x05\xa7\xf0\xa6\x37\ \x37\x5b\x88\x18\x88\x91\xee\x08\x32\xe3\x11\x40\x23\x8e\x10\xc8\ \x90\x9a\x04\x82\x84\x04\x0b\x61\xa1\x45\x4a\x43\xf4\xf7\x07\x5d\ \x74\xa1\xfa\xe8\xc0\x30\xa8\xf9\x79\x0a\x4c\x12\x0d\x75\x9a\xab\ \x8b\x2e\xa2\xa7\x18\x50\xf5\x83\xef\x07\xd6\xbd\x75\x1f\x24\x60\ \x8e\x7b\x44\xde\xf6\xb7\x12\x2a\x77\xad\xe0\x77\x53\xe0\xf7\xc5\ \x5d\xc7\x8d\xc5\x12\xfa\xa0\xc8\x99\x45\xef\x13\x41\x2e\x83\xd1\ \x30\x50\x4e\x7a\x20\x63\x9f\x45\xa4\x28\xca\x80\x80\x88\xe7\x71\ \xf1\xe7\x20\x13\x0a\xa2\x10\xcd\x86\xbc\xf6\x60\x53\x6d\x09\xe3\ \x25\x69\x44\x03\x01\xc6\xf5\x67\xea\xc9\x18\x05\xd8\x4c\x26\xc2\ \x9d\x2b\xad\x23\x49\xf8\x43\xf0\x23\x68\x98\x40\x68\x30\x00\x86\ \xc9\x91\x61\x36\x20\x0a\x73\x32\x88\xd9\xac\xff\x17\xfc\x5c\x64\ \xb9\x31\x6a\x9e\x39\xa2\x5f\x12\xa1\x37\x22\x7b\x2e\xd6\xf4\x43\ \x2f\xef\xbc\x2d\x71\x91\x51\xdd\xb8\x0d\x00\x16\xe4\xd6\xdc\x9c\ \x31\xaa\xa6\x14\xe2\x6a\x6a\x05\x60\x91\x94\x24\xf8\xfa\x51\x62\ \x3c\x41\x20\x2c\xce\x35\x21\x04\x07\xb5\xa4\xb3\xa1\x45\x20\x84\ \xb5\x00\x34\xba\x97\x00\xa3\x15\x01\x47\x04\x46\xe0\x0c\x31\x8c\ \x0b\x25\xc6\x10\x30\x25\x22\xda\x54\x92\x28\x2a\xd3\x34\x42\x3b\ \x90\xc9\xda\x49\xc8\x83\x8f\x6e\x2c\x99\xd0\x63\x6b\x31\x82\x85\ \x5e\x45\x35\x98\x6c\xba\xbf\xb9\x41\x19\xd7\x12\x51\xbc\xaa\x1c\ \x34\x11\xc4\x24\x17\x1b\xe8\x64\x84\x8b\xc6\xb9\xfd\xb8\x6b\x12\ \x63\x83\x12\x58\x54\xdd\x98\x44\x17\x94\x00\x3d\x26\xd3\x4d\xbc\ \x56\x9c\x2b\x0c\x64\x93\xcb\xd4\x82\x28\x8e\xc0\x19\xd0\xd1\x0c\ \xe4\x41\x01\xdf\x08\x4a\xfb\x58\x89\x8d\x4e\xa0\x2f\x99\xd0\x49\ \x00\x71\xd1\x86\xdb\x70\x36\x1a\xf2\x6a\x73\x44\x1d\xa3\x98\x4d\ \x89\x96\x1c\x73\x46\x62\xb0\x40\x0f\x25\x20\x04\x02\x1e\x15\x67\ \x00\xaa\xa0\xda\x1d\x54\x6d\xd1\xd4\x60\x84\xf9\x12\x09\xbc\xc7\ \xc4\x31\x92\x30\x66\xb4\xa4\xe0\x1a\x52\xdd\xca\x28\x6c\xb6\x11\ \xa3\xfd\x44\x18\x03\x83\x71\x40\x92\xac\x3d\x06\x8f\x61\x99\x69\ \x12\x2d\xd0\x8d\x85\x4b\x74\x1b\x61\x93\x45\x7b\x43\xc6\xdd\xc3\ \x01\x62\xa1\x9b\x69\x84\x97\xb2\x1b\x06\x63\x24\xab\x69\xbf\x1a\ \x92\x96\xe2\xc0\x9c\xa0\x8b\x28\x26\x72\x2e\xa8\x82\xa2\xcd\x8f\ \xcf\x30\x29\xc4\xd8\xe8\xb2\x70\xe8\x29\x13\x0d\xc7\x69\x48\x2d\ \x06\x21\xb9\x15\xc9\x8e\x25\x44\x18\x90\xc5\xfd\x07\xe6\xf7\x80\ \x8c\xab\x98\x0c\x9d\x28\x66\x53\xa1\xb0\xae\xb1\x37\xdf\x8d\xc4\ \x84\x1e\x67\x72\x51\x32\xdc\x29\xb2\x41\xcc\xe4\x0c\xc9\x25\x44\ \x28\xa8\x65\x02\x92\x8e\x64\xd9\x60\xa6\x76\x1d\x97\x86\x07\x16\ \x55\x46\x60\x0a\x11\xe6\x66\x8b\x51\x4f\xa0\x5a\x03\x17\x69\x67\ \x44\xe7\x85\xf8\x90\x94\x7c\x20\x31\x9e\x18\x0c\x23\x08\x90\x91\ \x8d\x11\x99\xf7\x8d\xd1\x98\x08\xa2\x9a\x4b\x50\x13\x20\xcb\x85\ \x89\x93\x26\x71\x36\xa6\x1b\x8b\xb7\xd1\x69\x91\xef\x49\x46\xbd\ \x29\x2d\x11\xa3\xa0\x1d\x97\xae\x49\x5c\xf5\x96\x60\x5b\xe6\x24\ \x51\x65\x64\x31\x19\x18\x89\x49\xd2\x0f\x36\xd3\x70\x03\x1b\x93\ \x48\x90\xc4\x46\x61\x09\xb2\xe4\xba\x13\xa7\xf9\x48\xb5\xf0\x2d\ \xf9\xed\x71\x1a\x89\x29\x4d\xcd\x75\x44\x01\x59\x47\xae\x48\x06\ \x03\xde\x44\xf8\x5e\xc0\xdb\x41\xc8\x14\xca\xc4\x18\x0d\xca\x21\ \xed\xe9\x11\xba\x84\x83\x24\x66\x9e\x64\x17\xfb\x24\x00\x5f\x14\ \xd8\x04\x5c\xa0\x05\x0a\x29\xae\xa6\xd4\xa1\x38\xe9\x09\x82\x4d\ \xc8\x45\xba\x71\x84\x69\x30\x8d\x48\x91\xc7\xe0\x6f\xb3\x49\x43\ \x4b\x96\x5a\xa4\xce\x1c\xf0\x4d\x27\x4c\x02\x09\x6a\x2d\x56\x0d\ \x43\x42\x55\xd1\xce\x70\x38\xdf\x76\xc4\xec\x67\x54\xf0\x90\xa6\ \x60\x32\x75\xc9\xc5\xc9\x61\x36\x92\xc6\xe5\xc6\xe2\x54\xf7\x38\ \x20\x35\xf2\x3a\x43\x84\x14\x03\xe6\x44\xd0\x75\xe2\xed\xf2\xb8\ \xb4\x4d\x34\x91\x5d\x8a\xb7\xfd\x42\xc4\x4a\x3c\x13\x0a\x9d\x8a\ \x76\x42\x43\x09\xd5\x96\x6c\x52\x0c\xb7\x87\x22\x92\x6d\xe6\x88\ \xfd\xcd\xb9\xce\x38\xe6\x03\x42\xf0\x8b\x04\x50\x9a\xf9\xef\x18\ \x7d\x3d\xe4\x67\x27\x8b\xa9\xc3\x71\x00\x81\x31\xa2\x74\x3e\x32\ \xc0\xa4\x14\xb8\xe3\xc6\xe2\x24\x3a\x5a\x4c\x5e\x2e\x69\x0c\x31\ \x6a\xd3\xa1\x25\xfa\x4a\x34\x1f\x99\x40\x15\xb2\x64\x42\x71\x80\ \x50\xa4\xec\x32\x87\x1d\x18\xea\x22\x49\x21\xb5\x0c\x40\x65\x2e\ \x06\x92\x4c\xd0\xb6\x52\xd5\x10\xc0\x18\xd0\xe6\xee\x33\x7c\xd9\ \x80\xbc\x47\x21\x54\x3b\xdf\xe4\x65\x04\xd1\x10\x63\xce\xb7\xcf\ \x61\x1b\x64\x68\x28\xc4\x7b\x08\x58\x10\x93\xc3\x35\x90\x67\x4a\ \x48\xe1\x79\x52\x40\xda\x23\x09\x8c\xca\x8d\xa5\xd9\xe8\x52\x17\ \x24\x0b\xf8\x1d\x01\xa7\x88\x18\x3a\x37\xcb\x1a\x71\x65\x9b\x8c\ \x89\xa0\x0d\x20\x20\x86\xfe\x98\x09\xa2\xa0\x9e\x46\x92\x44\x62\ \x0a\x5e\xb0\xaa\x3d\x0a\xa1\xb4\x4b\xdd\x9b\xb6\x68\x41\x46\x75\ \x47\x8b\xfa\x85\x9c\x79\x62\xb8\x43\x39\x8c\x03\x39\xd5\x19\xa2\ \xbf\xdb\xd4\x88\x42\x8c\x9a\x33\x61\x04\x20\x2e\x52\xa7\x9f\x2c\ \x9a\x14\x08\x18\x8b\x1b\x7a\x24\x2b\x0e\x99\xa4\x1a\xb2\x14\x8f\ \x22\x6d\x2e\x36\x35\x93\x6b\x78\x60\x8b\x30\x93\xa4\x3a\x2c\xa0\ \xda\x4b\x32\x04\x17\x8d\xcf\x93\xa9\x52\x7b\xfd\xd4\xa8\x49\x63\ \xc4\x30\x2c\x21\x77\x9d\x53\x75\x23\x19\x6f\x36\x9f\x74\x0c\x63\ \x62\x89\x33\x58\x2a\x4b\xba\xa6\x00\x4a\xda\x0a\x66\x98\xcc\x05\ \x99\xcd\x82\x42\x11\x8c\x48\xfa\xb1\x65\x2f\x9a\x95\x76\xd1\xa9\ \xed\x4b\x27\x74\x49\x45\x8f\xed\x64\x4c\xd6\x10\x59\x3e\xc5\x11\ \x13\x70\x1a\x8a\x4a\x56\xb4\x65\xdb\x60\x02\x4e\xd6\x26\x62\x1d\ \xa2\x9f\xcd\xe8\xaa\xa7\x7e\x2e\xbd\x2e\x9c\xa1\x0b\xd8\x36\xbc\ \x0a\x87\x0d\xa8\xd6\x6a\x50\xad\x57\xbd\x4f\x65\x31\xa3\xce\x53\ \x87\x7a\x44\xf5\xd9\x6c\x26\xeb\xfd\x8e\x3a\x34\x80\x1a\xba\xf5\ \x54\x03\x1a\x7e\x0b\x59\x75\x6e\x4e\x9d\x97\xf3\x0a\xf6\x20\xa2\ \x85\x90\x8d\x66\x0f\xdc\x5c\x63\x8b\x76\x80\x50\xdc\x92\x12\xd8\ \xb4\xb6\x7c\x7e\xdb\x8d\x0f\xa2\xfb\x49\x8a\x8a\x08\x60\xa6\x35\ \xe5\x36\xb8\x36\x60\x71\x29\xba\xb1\x78\x42\x07\x0b\x00\x97\x74\ \x8d\x23\x35\xd0\xd0\x0e\xfa\x85\xee\xb7\x19\x70\x83\x86\x3d\x6b\ \xa8\x14\x84\xbc\x8d\x19\x9c\x47\xf3\xb3\x59\x45\xd4\xb9\xac\x4f\ \xd4\x33\xe5\x06\x9c\x3a\x53\x83\x53\x13\x55\x18\x1b\xaf\xc0\xc8\ \x99\x32\x8c\x4e\xcd\xa8\xcf\xe4\x60\xa0\xd8\x0f\x97\xac\xdc\x00\ \x5b\xd6\x6c\x81\x0b\x87\x56\xc2\xea\xfe\x65\x30\xd0\xdd\x0f\x43\ \xbd\x43\xd0\x53\xec\x81\x35\xc3\x6b\xa0\x56\xaf\xc0\x74\x75\x1c\ \xca\xb5\x29\x98\x2c\x9f\x86\xb3\x95\x93\x70\xb6\x3c\x02\x63\xb3\ \x47\xe1\xf4\xdc\x51\xf5\xfa\x34\x54\xd4\x39\x19\xcc\xaa\xef\xcd\ \x2b\xdb\x29\x13\x95\x84\x64\x03\xb3\x80\x37\x33\x42\xd5\x70\x91\ \x97\x72\x66\x73\x0b\x0e\xed\x67\x9b\x58\x1a\x00\xa7\x8d\x09\x21\ \x67\xdb\x41\x0c\xa2\x8b\xc2\x1e\xb1\x20\xe9\x6c\x4d\x0c\x27\xd5\ \x97\x46\xe8\x49\x3c\x54\xa6\x2d\x4d\x86\x64\x22\x92\x03\x3e\x58\ \x7b\xdb\x02\x0e\x44\x4a\x2b\x33\xc5\x14\xd1\xc2\x35\x9a\xf3\xc8\ \x67\xbd\x8e\xa6\x30\x3e\x55\x83\x5d\x87\xcb\xb0\xff\xe8\x1c\x1c\ \x38\x55\x86\xb3\x53\x15\x80\xc9\x69\xc5\x01\x72\xb0\x69\xed\x45\ \xf0\x96\xab\x6e\x83\xbb\x2e\xbd\x05\xae\xdf\x7c\x0d\xac\xe8\x1d\ \x84\xae\x52\xd7\x82\x17\xba\xd6\xd0\x0c\xe0\x0c\x9c\x98\xda\x0f\ \x87\x26\x9e\x84\x03\xe3\x8f\xc3\xc8\xcc\x1e\x98\xa9\x4d\x7a\x44\ \x9f\x53\x44\x8f\x20\x15\x73\x14\x9a\x44\xb0\xb8\x84\x24\xc9\xd1\ \x2e\x89\x41\x68\x12\x81\x4c\xad\xf9\x44\x9b\x45\x30\xbb\x5a\xc5\ \x31\x91\x61\x4a\xc4\x77\xbe\x0d\x4d\x97\xeb\x56\x6b\x66\xcc\xb9\ \xb1\x70\x42\x97\xe2\x17\x6c\xde\x2b\x0e\x88\x43\x1b\x82\x17\x53\ \x20\x91\x4d\x4f\x24\xbe\xeb\x29\x07\xd0\x18\x6a\xb2\xae\x7c\xa3\ \x51\xc8\x03\x27\x2b\xf0\xc8\x8e\x29\xd8\x75\x68\x16\xa6\x14\xb1\ \x43\xbd\xae\x28\x72\x16\xf2\x7d\x03\xf0\x93\x2f\x7d\x03\xbc\xed\ \x25\x6f\x84\xdb\x2f\x7f\x29\x74\x15\xba\x96\xbe\xd0\x99\x82\xd2\ \x08\x56\x79\xc7\xb6\x65\xb7\x78\x6a\xfd\xe8\xcc\x21\x78\x76\xec\ \x21\xd8\x3e\x7a\x1f\x1c\x99\xdc\x01\x35\x9a\x85\x42\xb6\x4b\x4d\ \x37\x13\xc3\x70\x49\xb0\x87\x41\x70\xcd\x21\x2f\xc1\xcd\xeb\x84\ \x2a\xd4\x9a\x52\x9e\x04\x80\x2f\xae\xc8\xa5\x45\xbb\x9b\x67\x24\ \x1e\x3d\x93\x6f\xd2\x98\x8c\x09\x39\x14\x93\x09\x2e\x72\x74\x9e\ \x32\x18\x97\x30\x1f\x41\xee\x5d\xce\x31\x80\x18\x15\xd3\x2c\x53\ \x64\x82\x74\x28\x55\x3d\x09\x7f\x7f\x46\x6d\xd6\x42\x3e\x03\x47\ \x47\xab\x70\xdf\x13\x93\xf0\xd4\xbe\x69\xa0\x72\x5d\x1b\xdb\x4a\ \x6f\x2f\x03\x2a\xfd\xfd\x9e\x5b\xdf\x04\xbf\xf9\xea\xff\x04\xd7\ \x6c\xba\xb2\xa3\x0b\xaf\x89\x79\x45\xcf\x26\xef\xb8\x75\xdd\x3d\ \xb0\xf7\xcc\x0f\xe1\x91\x63\x5f\x84\x67\xcf\x3c\x04\x95\x86\x26\ \xf8\x92\x81\x41\x98\xf8\x86\x80\x8c\x26\xaa\xaa\x1b\x20\x7c\x32\ \x4a\x35\x03\x53\x5d\x17\x31\x86\x7e\xc9\x82\xd4\x72\x26\x44\x50\ \xeb\xf0\xf7\x00\x4a\x09\x48\xa6\x84\x47\x83\xb0\x91\x0c\xf3\xce\ \x8d\xc5\x4b\x74\x14\x00\x39\x6b\x6c\xbb\x01\x9c\x70\x52\x3c\xd4\ \x18\xd1\x06\xc4\x09\xd5\x49\xd9\xb2\xc9\xbc\xd3\xdf\x6b\x0b\x55\ \x43\xb8\xf7\x87\x13\xf0\xe0\x13\x67\x61\x76\xb6\xae\xc5\xac\x3a\ \xd4\xf9\xe5\x69\xb8\x66\xf3\x55\xf0\x27\x3f\xfd\xdf\xe1\xae\xab\ \x6e\x3f\xe7\x37\x41\x13\xfd\x96\xe1\x9b\xbc\xe3\xc0\xf8\x63\x70\ \xff\xa1\x4f\xc2\xae\x33\x0f\x37\xed\xf8\x02\x8f\x46\x73\x6a\x34\ \x09\xe8\x75\xa4\x91\x85\xd9\xab\x1d\x40\x2e\x6d\xcd\x80\x68\x64\ \x12\x1a\xda\x19\x4a\xf8\xc7\xc6\xa4\xfd\x2e\x00\x45\x4f\x54\x36\ \xdc\x8d\xe4\x12\x9d\xa1\x3b\x11\xa0\x65\x55\x33\x62\x54\x47\x90\ \x61\x7c\x8c\x4b\xcc\x30\x91\x7b\x0c\x4b\x26\x83\xa9\x14\x15\x31\ \x9f\x38\x53\x85\x2f\x3e\x78\x06\x0e\x1c\x9e\xf1\x25\x78\x41\x11\ \x79\xad\xaa\x24\x79\x0d\x7e\xe5\x95\xef\x80\xf7\xbd\xf9\x37\xa1\ \xbf\xbb\xff\x39\xbf\x21\x9b\x06\xaf\x85\x4d\x03\xd7\xc0\xa3\x23\ \x5f\x81\x6f\x1f\xfc\x28\x8c\x95\x8f\x7b\xea\x3c\x9f\x34\x43\x51\ \x40\x93\xd0\x80\x3d\xa4\x86\x96\x0c\x43\x24\x01\x1b\xb0\xfa\x57\ \x25\x80\xce\x52\x60\x92\xad\xa9\xcf\x15\xb5\xe4\x50\x7a\x02\xb1\ \x80\x87\xf3\xa3\xa7\x64\xa3\xc7\xa9\xf5\x12\x87\x98\x27\x76\xae\ \x45\x12\x71\x21\xa7\x12\x1a\x1c\x54\x39\x29\x5a\x3f\x8e\x01\xac\ \x8a\x79\x84\x9d\x87\xe7\xe0\xf3\xdf\x39\x0d\x93\x93\x35\x9f\xc0\ \xf5\xa8\x56\xa0\x27\x5f\x80\x0f\xfe\x87\xf7\xc2\x3b\x5f\xfe\x73\ \xe7\xd7\x5d\x51\x73\xbf\x6e\xcd\x6b\xe1\xa2\xa1\x1b\xe1\x2b\x7b\ \x3e\x08\x4f\x9f\xfe\x36\xe4\x33\x45\xf5\x72\x36\xde\x06\x16\x6b\ \xb7\x0b\x5d\x60\x9b\xaa\xba\x57\xc8\x93\xe9\xc2\x52\xa9\x55\xbc\ \xf3\xb5\x7b\x91\x9a\xae\x42\x7d\x46\xc6\x73\x13\x66\xd5\x63\xd6\ \xc7\x14\x50\x8c\x3c\x60\x78\x84\xc1\x4c\x88\x78\x1c\x26\xe2\x46\ \x95\xf0\x01\x27\xce\xd3\x41\xdd\x01\x16\x9e\xd4\xc2\xe6\xa4\x83\ \xdd\x0e\xb3\xd5\xfd\x37\x83\x42\x50\xb0\x0b\x03\xa1\xb6\x25\x45\ \xd4\x8f\xee\x9e\x55\x44\x3e\xaa\xd4\x76\xb5\x49\xf3\xd8\x22\xf2\ \xbe\x62\x17\x7c\xe6\xbf\xfc\x1f\x78\xd5\xd5\xaf\x38\x6f\x6f\xce\ \x40\x69\x25\xfc\xcc\xe5\xff\x0b\xd6\x1e\xfc\x04\xdc\x7b\xe8\x63\ \xea\x27\x35\x3c\x97\x9c\x8c\x77\x70\xb8\x87\x10\x9d\x16\x58\xeb\ \x9c\x32\x61\xfe\xed\xa1\x33\x70\xf8\xd8\x9c\x6f\xca\x34\xaf\x47\ \xd5\x59\xf8\xe3\x7b\x7e\x07\x6e\xbf\xec\x46\x18\x9d\x3e\x02\x53\ \x95\x31\x98\xa8\x9c\x82\xc9\xea\x18\xcc\x54\xce\xc2\x4c\x55\x99\ \x40\xb5\x09\x98\xa9\x9d\x85\x3a\xd5\x7c\x06\x80\xb9\xa8\x74\x10\ \x3b\xe4\x52\x14\x1b\x68\xdd\x43\x2e\x28\x28\xae\x15\xb6\x93\xe8\ \x4b\x23\xf4\x24\x65\x9e\xcd\xf3\x6c\x25\xb9\x23\xa1\xa6\x52\x9f\ \x72\x88\x57\x19\x23\xcf\xfd\x6b\x97\xf2\x19\xf8\xd1\xee\x19\xf8\ \xdc\xb7\x47\xa1\xa1\xdb\x42\x65\x9b\xe7\x28\x09\xd5\x5f\xea\x86\ \xcf\xfc\xe7\x0f\xc3\x2b\xaf\xbe\xe3\xbc\xbf\x41\xda\x4e\xbf\x6d\ \xd3\xdb\x14\xd1\xaf\x86\x7f\xdd\xf3\x7e\xa8\x36\xe6\x20\xa7\xa4\ \x3b\xab\x2e\x13\xc4\xac\x61\x94\xa1\xea\x00\xa1\x99\xd9\x3a\x6c\ \x3f\x30\x0b\x93\xe3\x15\x7f\x9d\x3c\xfa\xab\x2b\x29\x9f\x83\x6b\ \x57\xbf\x18\xd6\xf5\x5d\xa2\x8e\x28\x38\x59\xa9\xcf\xb6\x8e\xc9\ \xf2\x18\xec\x3a\xfd\x20\x3c\x70\xf4\x53\x5e\x70\x10\x5b\x63\xcf\ \x9c\x0f\x26\x89\x66\xa4\x68\x6e\x02\x72\xed\xaf\x93\xb4\xd2\xfd\ \xf1\x1d\x99\x05\x7f\xc2\xe6\x4d\x91\x4a\x2f\x73\xc9\x1d\xd2\x4d\ \x0d\xdd\x74\xa1\x5b\x84\x94\x54\xd2\x74\xed\x15\x15\x91\xcf\xab\ \xeb\x0d\xdd\xc9\x75\xbe\x22\x6d\xbd\xae\x34\xf7\x2c\x7c\xea\x97\ \xff\xe2\x79\x41\xe4\xc1\x71\xcd\xea\x57\xc1\x3d\x97\xfe\x3e\x14\ \x95\xbd\x5e\x6b\x54\xf9\x0e\x28\x92\x64\x24\x99\x5b\xeb\x28\xc0\ \x53\x13\x75\x8f\xd8\x3d\x8d\x47\x13\xba\x27\xd5\xeb\xb0\x65\xed\ \x46\xd8\xb2\x66\xa3\x38\x27\x8d\x1d\xf4\x16\x86\x61\xb8\xeb\x02\ \xd8\x38\x78\x25\x6c\x1a\xba\xd6\x73\x1b\x92\x64\xcf\xc5\xb6\x8e\ \xb6\x80\xc1\x66\x33\x08\xae\x26\x9f\x1b\x4b\x20\x74\x5b\x81\x12\ \xb2\xe9\xf9\xc1\xaa\x24\x49\x00\x00\x4b\x24\x14\x71\x29\x8d\x60\ \xa4\x6a\xfa\x43\x07\xc1\x9c\x3c\x53\x83\xcf\x29\x22\xaf\x57\x1a\ \xfe\xc6\x9d\x07\x7f\xaa\x73\xf0\xa7\x3f\xf3\x5b\xf0\x9a\x6b\xef\ \x7a\x5e\xde\xac\x6d\xcb\x6e\x85\x37\x6d\xfb\x1d\x2f\xe4\xb6\xae\ \x24\x6e\x2c\x78\x4a\x86\x04\x64\x34\x1f\xed\xbb\x1e\x19\xad\xf8\ \x6b\x95\x09\xbc\xdf\xa8\xc3\xb5\x17\x6c\x55\xe6\x4f\xf2\x18\x02\ \x1d\x14\x14\x2e\xdb\x05\x4c\xb6\x1f\x30\xf8\x8c\xd9\x4c\x42\x68\ \x05\x95\x58\x0b\x70\x63\xe9\x12\x3d\x86\x01\x47\x2a\x8b\x20\x26\ \xd3\xa8\x42\xb5\xcd\x6c\x78\x80\x54\x26\x19\xbc\x16\xcd\x55\xb5\ \xff\x3f\xff\xc0\x18\x4c\x4e\x54\x7d\xc9\x34\x7f\xfa\xdc\x34\xbc\ \xfd\xe5\xf7\xc0\x7b\x5e\xf9\x4b\xcf\xeb\x1b\x76\xe9\x8a\xdb\xe0\ \x75\x17\xfd\x1a\x34\x14\xa1\x6b\xe9\xd9\x5e\x04\x23\xc5\x76\x1e\ \xc7\x98\x4f\x4b\x25\xd3\x65\xd2\x66\xae\x07\x4f\x96\xa3\xc1\x8a\ \x8a\xd0\x5f\x7e\xe9\x8b\x17\xb7\x31\xcc\x42\x91\x18\xe7\x9f\x45\ \x26\x4d\xde\x00\x66\x49\xea\xfc\x92\x34\xa7\xc1\x11\x7a\x32\x82\ \x4e\x9a\x1b\x41\x0b\xd9\x08\x71\x35\xc8\x21\xac\x3e\x58\x3d\x44\ \xe4\x45\xbc\x7d\xfb\xd1\x09\x38\x78\x68\x46\x89\xf6\x40\x0c\x79\ \xa5\x0c\x17\x6f\xb8\x04\xfe\xec\x9e\xdf\x7e\x41\xdc\xb4\x1b\xd6\ \xbe\x01\x6e\xbd\xe0\x2d\x9e\x6d\x6c\xaf\x5e\x6d\x32\x5a\x34\xac\ \x23\x84\xd9\x72\x03\x46\x4e\x57\xc2\x6b\xdb\x68\x40\xb6\xd4\x03\ \xd7\xae\xbb\x78\x89\x33\x8d\x89\x94\xe3\x5a\x51\x01\xa7\xa6\x0b\ \xe7\x01\x3a\x02\x4f\x55\x75\x97\xb4\x29\x5b\xdc\x43\xa8\xf0\x9f\ \x19\xae\x28\x75\x01\x25\x39\x0a\x2f\xe4\xbf\x37\x42\x69\xd5\xbf\ \x7c\x2e\x03\xfb\x8f\x95\xe1\xc1\xa7\x26\xda\xe8\xba\x77\x6e\x03\ \x50\x89\xfa\xbf\xfc\xd9\xdf\x83\xa1\xde\xe1\x17\xcc\x8d\xbb\xeb\ \xc2\xff\x04\x17\x0d\xde\xe0\x45\xd1\x85\x08\x41\x6a\xaa\xc0\x30\ \x63\x6d\x9f\x8f\x4f\xd5\xe1\xcc\x64\xdd\x57\xdb\xe7\xe9\xa6\x5e\ \x83\x0b\x86\xd7\xc0\xa5\xeb\x2e\x59\x9c\xa6\x67\xde\x5f\x8a\x29\ \xb3\xcd\x7a\x64\x20\x19\xf1\xbb\x91\xb2\xea\x2e\x35\x69\x90\x4c\ \x6b\x02\x7b\x83\x42\xab\x39\x80\x4c\x3e\x0b\x0a\x95\x57\xc8\x7b\ \xb9\x56\x23\xf8\xea\x23\x67\xc3\xb6\xa6\x7e\x7b\x6e\x06\xde\xf1\ \xd2\x37\xc3\x9d\x57\xde\xf6\x82\xba\x71\xb9\x6c\x11\x7e\x62\xcb\ \xaf\x41\x77\xae\x4f\xa9\xf1\x35\xd6\x94\x61\x6f\x4c\xe0\x1e\xea\ \x54\xdc\xe3\xca\x3e\xaf\xea\x30\xe0\xa0\x66\xdf\xa8\xc1\xd5\x6b\ \xb7\x40\x5f\x57\xdf\x12\xcd\xb9\x00\x13\x0f\xb5\xcf\x36\x99\x00\ \xc9\xc8\x7c\x70\xe2\x44\x8c\x3d\x9f\x58\x95\xfc\xb1\x1e\x8b\x0b\ \x81\xb5\x81\x75\x20\xd5\x32\x13\x88\x9d\x4b\x4b\xb6\x15\x84\x60\ \xb2\xe0\x74\x1f\xf6\x1f\x6c\x9f\x82\xc3\x47\x67\xfc\xb0\xd6\xf9\ \x51\xaf\xc2\xb2\xa1\x95\xf0\x3f\xdf\xf0\x9e\x73\xb2\x98\x3b\x47\ \x9e\x81\xbf\xbf\xef\x5f\xe0\x99\x23\xfb\xa0\x01\x55\x25\x31\x33\ \xb0\x5e\x49\xc6\x9b\xb6\xde\x00\x2f\xdf\x76\x23\xac\x5f\xbe\x3e\ \xd5\xef\x5b\xd5\x7b\x11\xbc\x7c\xc3\xdb\xe0\xcb\xfb\xfe\x02\x8a\ \xd9\x9c\x5c\xf7\x5c\x28\xe2\xa1\x5f\xd1\x89\x3d\x91\x5b\xa3\x24\ \xfa\xad\x6a\xbe\x8b\xd6\xd4\x89\x69\xc3\x2c\xb9\x52\x11\x44\xcc\ \x25\x1a\x40\x15\x04\xe5\x20\x81\x6a\xef\x46\x72\x42\xe7\x08\xdc\ \x9a\xb6\x6a\xc9\x13\xe7\xc2\x24\x11\xa3\xfd\xc4\xd8\x2a\x24\x66\ \x4b\x22\xff\xef\x8c\x3a\x77\x7a\xb6\x01\xf7\x3d\x39\x11\xe8\x5b\ \xde\xb6\xcd\xdf\x73\xe7\x2f\xc0\x86\x94\x09\xcc\x1c\x27\xa7\xf7\ \xc1\x03\x87\xff\x01\x1e\x1f\xf9\x0e\x6c\x9f\x39\x05\x0f\x1f\x9f\ \x85\x53\x47\x67\xfd\xb9\x64\xd4\x64\xbe\xfe\x77\xb0\x7c\x68\x35\ \xbc\xed\xc5\x6f\x80\xff\xf6\xea\x77\xc1\x9a\xa1\x35\xa9\x7d\xf7\ \xcd\x17\xbc\x11\x9e\x19\xfd\x36\x1c\x9a\x7c\x06\xf2\x99\x12\x23\ \x05\x81\x2d\xd0\xa0\x9f\x95\x2b\x04\xc7\x4f\x1b\x40\x9c\x36\x75\ \xf2\x25\xb8\x7e\xe3\xa5\x4b\x34\xcd\x17\xa2\xcd\x19\x11\x90\x41\ \x10\x8f\x88\xc9\x9e\x8b\xc9\x76\x74\x63\x09\xaa\xbb\x8d\xc0\x6d\ \xbd\xd7\xd8\x0a\xae\xc6\x45\x82\x6a\x79\xf0\xe6\x86\x6e\x20\x5f\ \xf1\x53\x03\x70\x8f\xed\x9e\x86\xb1\xb1\x40\xb0\x87\x27\x95\x2a\ \xb0\x76\xe5\x7a\x78\xcf\x5d\x6f\xef\xe8\x02\x3e\x75\xe2\x9b\xf0\ \xb7\x4f\xfc\x0a\xfc\x70\xe4\x4b\x90\xcd\xd5\xe1\xe6\xcb\x56\xc1\ \xaf\xbe\x71\x23\xbc\xea\xf6\x0b\x20\xdb\xdd\xa3\x26\xd8\x0d\xd0\ \xd5\x0b\xa3\x53\x67\xe0\xfd\xff\xf6\x57\x70\xdb\x1f\xbe\x05\xbe\ \xfb\xec\xf7\xd2\xe3\xd4\x99\x22\xdc\xbe\xf1\x1d\x9a\xe5\xf1\xfe\ \x6b\x64\x9a\x2b\xea\x8a\x37\xda\x3e\x9f\xae\xc3\xe8\x78\xad\xbd\ \x0b\x9a\x68\xfb\xf0\xe0\x0a\xb8\x66\xe3\x55\x8b\xb7\xcf\x69\x11\ \x1b\x28\xa8\x96\xc7\xf6\x66\x13\xec\x7d\x67\xc3\xa7\x44\xe8\x10\ \x03\x94\x91\x69\x7b\x71\xad\x7b\x6c\x2d\x95\xb8\x88\x39\x46\x95\ \x6b\x7e\x99\x76\xa7\xcd\xce\x35\xe0\x91\x9d\xd3\xd1\x4b\x29\x69\ \xfe\x4b\xca\x36\x1f\xec\x1d\xea\xd8\xe2\x3d\x36\xf2\x65\xf8\xec\ \xb3\xbf\x0f\xb3\xb5\x29\x28\xe5\x7a\x3d\x62\xab\x54\x1a\xd0\x68\ \x34\xe0\xf6\x6b\xfa\xe0\x4d\x2f\x5f\x06\x19\xcd\x7c\xbc\xc8\xbc\ \x3c\x40\xf7\x00\xec\x1e\x39\x00\xaf\xfd\xb3\xb7\xc1\xd7\x9f\xfc\ \x56\x6a\xf3\xd8\x3a\x7c\x0b\x5c\x32\x7c\xab\x8f\xc2\x73\xeb\x1c\ \x6a\xcd\xd4\xd4\x84\x94\x7d\xae\x89\xbc\x3c\x57\x0f\x23\xf3\x4a\ \x6d\xbf\x7c\xd5\x46\x58\xde\xbf\x6c\x91\xfb\x82\x64\x34\x9d\x2d\ \x35\xcd\x85\xbd\x72\x9b\xcc\x6c\xa7\xc5\x24\xde\x38\xd5\x7d\x09\ \x84\xbe\xa8\xae\x42\x66\xf2\x04\xf1\x1c\x97\x2c\x36\x01\x67\xa3\ \x1b\xfe\xf4\xbc\x22\xa2\x1d\x07\xe7\xe0\xe4\x68\xd9\x87\x90\x5b\ \x52\xa9\x06\xfd\x4a\x2a\xbd\xf3\x65\xf7\x74\x6c\xe1\x0e\x9d\x7d\ \x0a\xfe\x6d\xf7\x9f\x7b\x5f\x98\xc3\x5c\x68\x1f\x2b\xe5\x17\x66\ \x95\x5a\x7c\xfd\xb6\x6e\x78\xcd\x8b\x87\xc3\xf3\x2f\x76\xc1\xd9\ \xb9\x19\xf8\x85\x8f\xfc\x06\xec\x3c\xba\x2b\xb5\xf9\xbc\x64\xdd\ \x5b\xa1\xa0\xa4\x7b\xdb\xb7\x1e\x20\x26\x26\xd1\x45\xe3\x95\x07\ \x4f\x94\xa3\xe1\xe3\xb5\x2a\xbc\xe4\xe2\x9b\x97\xa0\xb2\x83\xdc\ \xa8\xc2\x5a\x87\x9d\x2b\x93\x6d\x11\x04\x91\xc8\x49\x27\xcd\x97\ \x2e\xd1\x6d\x71\xee\xb6\x92\x4d\x12\xd2\x2a\xa9\x5a\x24\xd4\x17\ \x8f\x7c\x14\x5b\x48\xfb\x0f\x77\x4f\x41\xc4\xc7\x5e\x99\x83\x9f\ \xba\xf6\x15\xb0\x61\x45\x67\x6c\x73\x5d\xf7\xed\x4b\x7b\xfe\x1c\ \xca\x8d\xd9\x66\x5c\x37\xb2\xf8\xc3\x9c\x22\xf6\x17\x5f\xda\x0b\ \xd7\x5d\xd2\xa7\x26\x1b\xf8\xdd\xca\x06\x3e\x31\x36\x02\xff\xf1\ \xe3\xbf\x05\x95\x6a\x39\x95\x39\x6d\x1c\xbc\x1a\x2e\x1a\xbc\xc9\ \x8b\x85\x0f\x83\x95\x66\xeb\x2b\xbf\xc4\x83\x0e\x2c\xf2\xec\xf3\ \x60\x69\x2e\xfd\x1b\xf2\x05\xb8\x71\xfd\x52\xec\x73\xa3\x89\x86\ \xd8\xc2\x59\x28\x9d\x8d\x68\xb8\x66\x6d\x9b\x10\x2c\x82\xc0\x8d\ \x85\x11\x3a\x25\x90\xf2\x68\xb9\xe1\x14\x73\xe1\x60\x88\x24\xdb\ \xdb\xcb\x6c\xf7\xe3\x9f\xaf\xc1\xf5\x63\xa7\xab\x70\xf0\xf8\x9c\ \x2f\xcd\xe7\xe7\xa1\x2b\x3c\xe6\x8b\xf0\x8b\x2f\xfe\xa9\x8e\x2d\ \xda\xf7\x8f\x7d\x01\x0e\x4f\x6e\xf7\xab\xc0\x20\xd7\xa0\x62\xfe\ \x57\xe8\xc4\x4e\x82\x57\x5c\x3f\x00\xbd\xfd\x39\x5f\x85\x9f\x1f\ \xa5\x1e\x78\xf0\x99\x87\xe0\xa3\xf7\x7d\x3a\xb5\x79\xdd\xb0\xfa\ \x75\x5e\xda\x28\x89\xc5\xe3\xfd\xd7\xb4\xda\x3e\x35\x53\x87\x91\ \xb1\x6a\x3b\xd9\x87\xfc\xb5\xeb\xed\x1d\x84\xeb\x36\x5f\xbd\x78\ \x73\xae\xd5\x73\xce\x64\xe6\x28\x84\xc3\x22\x93\x7e\x0a\x31\xb5\ \xe7\x09\xec\xbd\xd8\xdd\x48\xcf\x46\x8f\xc3\x5a\xb8\xa2\x7e\x12\ \x57\x10\x6d\x72\x86\xe3\x37\x87\xae\xdc\xfa\xf4\x81\x59\x68\x68\ \xbf\x79\xf0\x92\x4a\xf5\xbc\x7c\xdd\x36\xa5\x7e\xde\xd2\x91\x05\ \x9b\xac\x8c\xc1\x0f\x8e\x7d\x1e\xf2\x5e\xe5\x17\x13\x83\x80\x08\ \x06\xa1\xb5\x8e\xe1\xfe\x2c\xdc\x74\x59\x9f\x4f\xe8\x41\x02\xc8\ \x15\xe0\x7d\x5f\xfe\x6b\x18\x3d\x7b\x2a\x95\xb9\xe9\x0a\x35\xab\ \x7a\x36\x43\x5d\xc7\x9c\x5b\x92\x47\xb4\xda\x7e\xea\x6c\xcd\x23\ \x76\xd3\x3e\xbf\x74\xe5\x06\x2f\x58\x66\x49\x9b\xc0\x8c\xa1\x10\ \x99\x39\x59\xcc\x37\x8b\x14\xa1\x98\xf7\xdd\x58\xa4\x8d\x2e\x71\ \x6f\xa9\x55\x93\xd9\xff\xdb\x96\x23\x2d\x45\x45\x21\x19\x15\x52\ \x82\x1f\x41\x98\x51\x6a\xf1\xb3\x87\x66\xdb\x11\x5d\xf3\x9f\xad\ \x57\xe1\x4d\x4a\x6d\xcf\xe7\xf2\x1d\x59\xb0\x67\x4e\x7e\x0b\xc6\ \xe6\x8e\x2a\x41\x98\xe0\xfa\xcd\xdf\x5d\x55\xc4\x7e\xd3\xb6\x1e\ \xe8\x1b\x2a\xf8\x45\xe2\xe7\x87\x22\xf4\xa3\x27\x0f\xc2\x27\x1f\ \xfe\x42\x2a\x73\xcb\x67\x8b\x70\xc5\xf2\x3b\xfc\xec\x36\x4b\x4f\ \xb5\x6c\x16\xe0\x90\xf6\x9f\xd7\x8c\xe0\x93\x5a\x05\xae\xbd\xf0\ \x6a\xc5\x44\x73\x8b\xa6\x71\xb1\xac\x93\x84\x9e\xb3\xc0\x9d\x59\ \x09\x96\x78\xb0\x0f\x98\xa6\x20\x6e\xa4\xa0\xba\xdb\x7a\xb0\x45\ \x18\x03\x86\x5b\xe3\x5a\x81\x16\xc6\xb5\x12\x6a\xdd\x13\x6e\xdd\ \xa4\xeb\xbf\x1d\x55\x1b\xf5\xd4\x19\xed\x52\x0b\x6f\xb2\x5c\xa9\ \x1b\xde\x70\xdd\xdd\x1d\x59\x2c\xa2\x3a\x3c\x75\xea\x5e\xa5\xfa\ \xe6\xa2\xdd\x42\x22\x73\x6f\x2f\x4e\x5d\x29\x1d\x83\xbd\x59\xb8\ \xfa\xc2\x1e\x5f\xaa\x07\x7f\x7a\xb6\x00\x1f\xfb\xee\x17\xa0\x9c\ \x92\xad\x7e\xd9\xf2\x97\x41\x77\xae\x5f\xf1\x93\x46\x98\x23\x53\ \x1b\xdb\xd0\xf3\x39\x76\xaa\x1c\x05\xea\x32\x59\xb8\x65\xd3\xe5\ \x69\xae\x98\xb1\x2e\xc4\xac\x57\x5c\x79\x6e\x14\x6a\xd1\x2f\x30\ \xea\xd2\x11\xfa\x02\xd5\x72\x5b\x5b\x32\x34\xd4\x2a\x64\xec\x29\ \xb1\x08\xa4\xe1\x3e\x41\x0c\x34\xda\x0b\x7f\xa7\x56\xdb\xf7\x28\ \xdb\x9c\xaa\x81\x4d\x4c\xbe\x44\xba\x64\xcd\x45\x9e\xea\xde\x89\ \x71\x6a\xe6\x10\x9c\x98\xde\xeb\x4b\x73\x12\xaa\xa3\xb0\xfe\x60\ \xf2\x84\xe7\x95\x9b\xbb\x14\x5d\xeb\x4e\x11\x01\x06\x91\x2f\xc0\ \xd3\x87\x77\xc0\x43\xbb\x7e\x90\xca\x1c\x57\xf6\x6e\x86\x0d\xfd\ \x57\x29\x9a\xad\x42\x57\x31\x03\x5d\xea\xfb\xbc\xc7\x92\xff\x48\ \x58\x86\x53\x13\x93\xb0\x7b\x64\xd2\x8b\x35\xd0\xd5\x76\xbc\xda\ \x79\xfa\x28\x76\xc1\x8b\xb6\xdc\xb0\x44\xf3\xcd\x68\xfa\x48\x46\ \x9b\x29\xa9\xb1\x44\x04\x94\x35\xf7\x4e\xc0\x45\x28\xf5\xb1\x77\ \x7e\x74\x71\x2c\xbe\x94\x14\x97\xd0\x42\x36\x9d\x3f\x86\x03\x13\ \xd7\x40\x20\x40\xec\xcd\x0d\xe2\x45\x74\x55\x1b\xb0\xf7\xe8\x5c\ \x94\xb9\xa8\xcd\x7a\xe7\x25\xb7\x40\x31\xdf\xd5\x91\xc5\x3a\x78\ \xf6\x49\x98\xae\x9d\xf5\x7c\xe6\x91\x84\x1d\xb6\x2a\x6d\xfb\xf7\ \xd6\x15\xa5\xaf\x1e\xce\xc3\x9a\x65\x05\x38\x72\xa2\x59\xb2\xa9\ \x59\xc8\x91\x14\xb1\x7d\xfe\x47\x5f\xf3\x6a\xc8\xa7\x31\xb6\x0d\ \xdf\x08\x9f\x7d\xe4\x1b\x30\x3e\x3e\x1b\x00\xdb\xfc\xfe\x52\x6f\ \xbd\xe5\x95\x70\xd9\xea\xd5\xf0\xf8\xba\xef\xc2\xd9\x65\xd3\x70\ \x6a\x6e\xda\xd3\x26\x66\x67\x26\x60\xcb\xaa\x0d\xb0\x69\xf9\xba\ \x25\xc8\x6f\xbf\x0d\x15\xa9\x7b\x86\x66\x1b\x27\xb6\xce\x7f\x90\ \x39\x34\x6b\xca\x13\x93\x80\x63\x96\x1a\xe3\xba\xdc\x7a\x97\x75\ \xaa\xfb\xd2\x09\x3d\x8e\xf8\xad\xfe\xf4\x38\xe3\x9e\xeb\x29\xce\ \x77\x69\xd1\x88\xf1\xd8\x44\x0d\x4e\x6a\xc4\x38\x63\x30\x9c\x6c\ \x0e\x6e\xbf\xe4\x96\x8e\x2d\xd6\x81\xb3\x8f\x7b\x45\x1f\xc2\x73\ \x34\xec\x5c\x2e\x60\x04\xfd\xb6\x8b\xba\x50\xe5\x45\xeb\x4a\x70\ \xe4\xd8\x6c\x18\xed\xce\xe6\xe1\x81\x3d\x8f\x41\xb9\x32\x07\xc5\ \x42\x69\xc9\xf3\xbc\x78\xd9\xcd\xb0\xe7\x50\x16\x9e\x7d\x76\x0c\ \xa0\x90\x6b\x9b\x12\x8a\xa0\xdf\x7d\xcb\xad\xf0\xd3\x57\xbd\x5e\ \x1d\xbf\x06\xd4\xa8\x43\x55\x11\xff\xd4\xdc\x14\x8c\x4e\x9c\x52\ \x26\x51\x0e\x4a\xc5\xee\x25\xa8\x87\x59\x8f\x56\xeb\x8d\x1a\x54\ \xa8\xea\x13\x7b\x8b\x46\xe7\x5d\x7b\xfe\xbd\x46\xf2\x7b\xd0\xe9\ \x52\x59\x18\x44\xde\x51\x02\x6a\x21\xb2\x17\x92\xc2\x49\x6e\x2c\ \x95\xd0\xad\x44\x1e\x8c\x7c\xb2\xf5\x5c\x26\x8b\x44\x37\x6f\xbe\ \x6f\x9f\x1f\x38\x51\x86\x8a\x8e\xe8\xca\x05\x5c\x78\x6a\xd3\x2e\ \xeb\x5f\x06\x37\x6d\xbe\xa6\x23\x0b\x55\xad\xcf\x29\xb5\x7d\x9f\ \xb7\x31\x79\xc4\x97\xa9\xe4\x62\x94\x59\xd6\x7f\xad\x5f\x59\x04\ \xcc\x65\xc2\x81\x6a\xb9\x02\xec\x1a\xd9\x07\x07\x4f\x1f\x81\x6d\ \x6b\xb6\x2c\x79\xae\xc3\x5d\xeb\x61\x75\xef\x7a\x78\x36\x3f\xd6\ \xae\x7a\xab\xd7\x37\x9b\x51\x56\x43\xa5\x7d\x27\x94\x4d\xae\x4b\ \x6b\x0d\xf7\x0e\x79\xc7\x52\xc7\x85\x83\xd7\xc2\x3b\xaf\xf9\x2b\ \xc5\x3c\xca\x50\x6e\xcc\x78\x05\x24\xe7\x6a\x53\x30\x53\x1d\xf7\ \xa2\xf6\x66\x6a\x13\xea\xef\x49\x98\xab\xcf\xa8\xbf\x67\x3c\x86\ \x30\x55\x1d\x83\x3a\x55\xc3\x31\xee\x6c\xc5\x57\xe0\xf7\x91\xa8\ \x45\xb9\x91\x0e\xa1\x4b\x45\x43\xa4\x0e\x1b\x62\x33\x3f\xb3\x2e\ \xb9\x3d\x79\x41\xbf\x3d\x32\x5a\x8d\xaa\x7f\x4a\x6d\xbf\x78\xed\ \x16\x58\x35\xb8\xa2\x23\x0b\x35\x51\x3e\x05\x93\x95\xd1\x66\x95\ \x53\x63\xde\x66\x76\x98\xd0\x81\x46\xbb\xda\xd6\x0e\xe7\x94\x29\ \x9c\x81\x39\xcd\xa8\x02\x99\x58\xb3\xb3\x53\xf0\x83\xbd\x8f\xa5\ \x42\xe8\xfa\xb6\x5e\xba\xf2\x0a\xb8\xaf\xfe\x88\x9a\x4b\xf1\x9c\ \x6d\xa6\x62\xae\xc7\x0b\xdc\x49\x32\x34\xe1\x6b\x37\xe0\x97\x76\ \x7f\x00\x9e\x18\xfd\x86\x57\xce\x5a\x96\xe2\x52\x97\x56\xb4\x17\ \x9b\x74\x63\x01\x60\x1c\xca\xcc\x34\x5e\x67\x32\x91\x69\x2e\xf6\ \xdd\x70\xba\xdb\x52\xa9\x75\x34\x5c\x9d\xe0\xd0\xa9\x8a\x81\x7a\ \x83\x57\xb5\xf4\x86\xf5\x97\xfa\x88\x78\x07\xc6\x99\xf2\x88\xd7\ \x25\xd5\x53\xdd\x4d\xb0\x08\x99\x3e\x60\x8c\xcb\x47\xdb\xb0\x3d\ \x5d\x4a\x82\xf6\xe5\x7d\x40\xae\x65\xdd\xa0\xa7\x91\x3c\x7e\x78\ \x47\x6a\xf3\xd5\x69\xb1\xe0\xb9\x18\x29\x46\xf3\x7a\x6e\x86\x2e\ \x2c\xd9\x95\x1f\xf0\xf0\x0e\x22\xa9\xd9\x83\x71\xf3\x31\x49\x16\ \x9c\x1b\x8b\x23\x74\x5a\xc0\x1a\xa2\x41\xdc\x44\x32\x87\x6e\x55\ \x0c\x41\xc3\x46\xe7\x9a\x0c\xb4\x2f\x33\x31\xad\x2b\xa2\xd4\xda\ \xf6\x79\xe0\x9a\x2f\xb9\xf8\xc6\x8e\x2d\xd4\xe8\xf4\xa1\x76\x1c\ \x79\x2b\x44\xd3\xe6\xe6\x41\x46\xf0\xfb\x0d\x1e\x2f\x58\x96\x0f\ \x47\xc9\x79\x97\xca\xc0\x13\x47\x77\xa7\xe6\x0b\xbe\x65\xeb\x8d\ \x50\xd2\x85\x23\xce\x73\x80\x8a\xa0\x61\x98\x7a\xa6\xd9\x27\x6d\ \x46\x47\xd4\x9d\x97\xe8\xb6\xaa\x32\x41\x09\x2e\xa6\xad\x46\xab\ \xb7\x26\x69\xbc\xae\x23\x5d\x4f\x4f\xd4\xbc\x8c\xb5\x30\xf3\x68\ \x40\xa9\xd4\x03\x57\x5e\x70\x71\xc7\x16\xea\xf4\xec\xc1\x68\x2d\ \x36\x49\xad\x89\x44\x6e\x05\x92\x49\xd4\x6f\x58\x3e\x98\x8f\xf2\ \x33\x25\x7d\x0f\x9d\x3a\x0c\x93\xb3\x93\xa9\xcc\x57\xf7\x6e\xdf\ \xb6\x62\x9d\x17\x40\x74\xfe\x8f\x24\x11\x6e\x8c\x66\x42\x74\xde\ \x6a\x2c\xcf\x3f\x42\x97\xee\x85\x10\xef\x12\xae\x2f\x0e\x42\xdd\ \x38\xe0\xab\xa1\x90\xad\x96\x18\x79\x45\x26\x74\xe8\x26\xe9\x8c\ \x8c\x4c\x60\x0e\xf5\x3a\xac\x1e\x5c\x09\xab\x16\x9b\x5a\x99\x50\ \x75\x6f\x0b\x1a\x4a\xb0\x08\xc4\xbe\xdf\x68\x90\xaf\xba\xeb\x60\ \xfd\x46\xe0\xd4\x4c\x16\x8e\x8c\x9f\x82\x33\x29\x11\x7a\xb1\xd0\ \x05\x97\xeb\xe4\x14\xed\x1f\x7f\x5e\x98\xae\x06\x7e\x13\x29\x50\ \x64\x54\xab\x21\x88\x96\x95\x76\x36\x7a\x0a\xaa\xbb\x4d\xda\x83\ \xb4\xdf\x91\x69\xda\x47\x61\xa9\x4e\x82\x8b\x8d\x28\x92\xf9\xa4\ \xa3\x47\x3d\xb7\x9a\x69\x9f\xab\xcd\xbc\x71\xc5\x7a\x18\xea\xeb\ \x0c\xa1\x37\x1a\x35\xcf\x3e\xd7\x45\x26\xf9\x1f\x6a\x98\x1c\x6c\ \x85\x15\x6c\xfd\x86\x81\x9e\xac\xdf\xeb\xcc\x60\x6a\x33\x95\x59\ \x38\x70\xea\x50\x6a\xf3\xbe\x5e\x07\x0e\x05\x31\x05\x3c\x8f\x69\ \x3c\xd2\x89\x37\x98\x05\xc7\x25\xb6\x00\x13\x9c\xe4\x44\xfa\xd2\ \x54\x77\xc9\xcb\x21\x61\x28\x41\xd4\x5c\xec\xde\x82\xd1\x62\xff\ \xd6\x62\xf1\xe8\x23\xee\xe3\x15\xe6\x54\x82\x4b\x57\xac\xeb\xd8\ \x22\x95\xeb\xd3\x30\x57\x9d\xf4\xfc\xc4\xd1\xee\xcf\xc1\x46\x15\ \xc6\xfc\x19\xfb\x58\x13\x7a\x5f\x4f\x06\x0a\x79\xa6\xea\x6d\xbd\ \x06\x07\x53\x24\xf4\x2b\x37\x28\x89\x9e\xcd\x9e\xff\xaa\x2d\x0b\ \x75\x08\xc4\x2d\x99\x82\xe7\x35\x27\x7b\xbe\x48\x74\xb2\x10\x7d\ \xac\x36\x26\x65\xac\xc5\xa8\x08\x46\x5e\xb2\xfe\x73\xae\xdc\x68\ \x66\x5c\x99\x73\x21\xd8\xb6\xe6\xa2\x8e\x2d\xd2\x5c\x6d\xda\xab\ \x22\xe3\x75\x0d\x05\xae\x53\x08\xf2\x31\xd8\x66\x72\x4f\xd3\x9c\ \xd1\xc5\x2c\xfb\xba\x73\x6d\xe4\x7d\xfe\x3d\x65\x82\x8c\x8c\x9f\ \x4c\x6d\xde\x5b\x57\x6d\x86\x2e\x1d\x00\xf3\xbc\x88\x18\xc3\x18\ \x09\xc3\x98\x77\x98\x54\xf5\x74\x23\x93\xf8\x1e\x24\x6d\x99\xc5\ \x76\xcd\x04\x19\xb5\x13\x37\x61\x58\xdd\xd4\x5a\xf3\xd4\x4c\x03\ \x66\xcb\xd4\x9e\x75\x4b\xa3\x40\xd8\xb6\x76\x5b\xc7\x16\xa9\x5c\ \x9f\x81\xb9\xfa\x94\x57\x2a\x2a\xb4\x20\xb4\xd0\xcd\xeb\x67\x8a\ \xeb\xa0\x9f\xde\x52\x36\xfa\xdb\xa9\x0e\xc7\xa6\xcf\xa6\x36\xef\ \xe1\xee\x7e\xb8\x60\x70\xa5\xa7\x29\x9c\xd7\xa6\xb9\x50\x2a\x2c\ \xfc\x5a\xb0\xa6\x20\xb3\xd9\x1c\x9d\xa7\xa0\xba\x9b\x00\x49\x5c\ \x29\xb0\x08\x78\x47\x0b\x30\xf2\x39\x8e\x41\x5e\x3f\xee\xc9\xb9\ \xba\x27\xd5\x43\xb3\x6e\x34\x20\x5f\xea\x81\xb5\xfd\x9d\xab\x0d\ \x37\xa7\x54\xf7\x9a\x0e\xe9\x44\xae\x38\x02\x31\x78\x03\x85\x5f\ \x37\xb4\x23\x6d\x9f\xf7\x94\x32\xd1\x9f\x9b\xc9\xc2\xe1\xb1\xe3\ \xa9\xcd\xbb\x5f\x11\xfa\x9a\xe1\xb5\x3a\x52\xa7\xe5\xe5\x28\xe4\ \x0a\xe7\xb7\x91\x4e\x46\x73\x3f\xd6\xb4\xe3\x8a\x60\x3a\xb5\xdd\ \x36\x16\x56\xd7\x5d\x0a\x66\xb1\x06\xcc\x34\x78\xb5\x8c\xc8\x00\ \xeb\xb8\xf2\xd0\xed\x5c\x74\x7d\xda\xe4\x4c\x13\x71\x2f\x84\x2b\ \xca\x0c\x76\x0f\xc2\xb2\x0e\x76\x61\x99\xae\x8c\x85\x7f\x74\xc4\ \x24\x41\xc6\x44\xc1\x68\xcf\xf2\x66\xcc\xbb\x06\xdc\x7b\xba\x32\ \x61\xd5\xdd\xfb\x78\x16\xc6\x26\x46\x3d\x7f\x3d\xe2\xd2\x6b\x82\ \xe8\x10\xd7\x8b\xd7\xac\x87\xef\x6e\xf7\xb5\x20\xca\xe4\x60\xfb\ \x91\x67\x61\xd3\xf2\x47\x7d\x89\xdf\x3b\xe4\x7d\x4f\xaf\x62\x94\ \xcb\xfa\x96\x05\x18\xd9\x73\xa4\xba\x23\xc8\x99\x69\x41\xb5\x12\ \x9d\x3d\x9e\x3e\xa1\x43\x0c\x71\x73\x5e\x25\x02\x9b\x78\x87\x48\ \x1e\x34\x71\xf6\xec\xfc\xf5\xda\x37\x77\x62\xaa\x11\xbe\xd9\xcd\ \x56\xc8\x03\x3d\x03\x8b\xaf\x5a\x9a\x60\xe8\x98\xed\xb0\x77\x80\ \xa2\x84\x1c\x5a\x17\x63\x43\x46\x0a\x67\x00\x94\x8a\x19\x36\x81\ \x63\x72\x76\x4a\x09\xe0\x2a\xe4\xf3\xe9\x84\xae\xfe\xf4\xad\x17\ \x43\x71\xf9\x3a\x28\xe6\x4a\x5e\x95\xad\x7f\xfe\xe1\x3f\xc2\x7b\ \xbf\xf4\x11\xaf\x37\x5d\x57\xbe\xcb\x9b\x4b\x41\xbd\xf1\xbe\x37\ \xff\x06\xbc\xf3\x8e\x9f\x5f\xd2\x77\x8d\x4d\x9d\x81\xc3\xa3\x47\ \xbd\x12\xd4\x6b\x86\xd7\x40\x43\xdd\xbb\xac\xfa\x82\x9c\xb2\xbb\ \xb4\x6b\x34\x9f\xcd\x7b\xdf\xa7\x1b\x5b\x64\x9a\x18\xa1\x9f\x3b\ \xc0\x25\x34\x19\xc4\x1c\x74\x9f\xb9\xc2\x32\x1d\x24\x74\xb9\xf3\ \x6e\xf8\x7d\x09\x84\x6a\x11\x35\x86\xfd\xec\x6c\x4f\x2d\xa6\x7a\ \xac\x7a\x3a\xa5\x7b\x78\x07\x53\x19\xbd\x53\x1a\xb0\x52\x49\xa6\ \xee\x62\x4f\xc7\x16\x49\xc7\x65\x93\x55\x5d\x24\x23\x5a\x4e\x04\ \x2c\x7c\x3b\x5d\xcd\xbf\x4b\x6b\x25\x68\x00\x77\x8a\x00\xc6\x67\ \x26\xa0\x5c\xab\xa4\x46\xe8\x2b\xfb\xd6\xc0\xb2\x81\x3c\x14\x14\ \x91\x69\x10\xb0\xa7\x07\xa1\x52\xad\x7a\x56\x5b\xa5\xd2\xf4\x60\ \x94\xa7\x61\x6c\x7a\x7c\xc9\xdf\xb5\xeb\xd4\x0f\xe1\xc3\x0f\xff\ \x2e\xd4\xea\x45\x75\x3f\xba\x61\xa6\xda\x80\x6e\x28\xc0\x60\xa9\ \x04\xd3\xb3\x00\x83\x5d\x03\x9e\xd6\xd0\x5b\xea\x85\xc1\x9e\x7e\ \x9d\xa2\x04\x73\xb9\xdd\x1e\x03\xb0\xa3\xec\xf3\xcc\xd2\xec\xd9\ \x6d\xb6\x77\x72\x04\xbd\x78\x42\x47\xe0\x7b\xa2\xdb\x6a\xf5\x11\ \xb7\xc9\x89\x89\x79\x17\x52\x10\xc9\x28\x23\xd5\x24\xa0\xb3\x33\ \x75\x88\x44\xa0\xa9\x63\x95\x92\xe8\x9d\x1c\x3a\xeb\x8a\x9d\xaf\ \x19\xe2\x8b\x5c\x4d\xad\x28\xf1\x6b\xbd\xa4\xbb\x98\x8d\xe6\x59\ \xab\x27\x53\x95\x39\xa8\xa6\x08\x9e\xf5\x17\x57\x79\x15\x65\x6a\ \xcd\x5a\x71\xe4\x31\xc9\xac\x8f\x6e\xb6\xd2\x7b\xf3\x4a\xea\x66\ \x97\xfc\x5d\x83\xfd\x45\xb8\x68\x43\x56\x5d\x4b\x5f\x78\xb6\xa9\ \x90\x95\x95\x64\x3f\x0b\xbd\x75\x52\xf3\x38\xe6\xaf\xa7\x62\xce\ \x53\xcd\x92\x5a\xf9\x7a\x01\x72\x98\x4f\x1e\x18\x87\x01\xbb\x3d\ \xb2\xfe\x4e\xcc\x2f\x5d\xa2\xdb\x00\x38\x16\x47\x63\x38\xac\xd9\ \xa6\x09\x85\xb0\x57\x8c\x66\xd0\xe8\x33\xa7\x75\x33\xc0\xc8\x7c\ \x1a\xca\x3e\xef\x2c\xa1\xfb\xc5\x16\x19\xd4\x91\xad\x77\xc7\xcc\ \x9f\x8c\x14\x56\xf5\xb7\xae\x49\xcf\xa9\xee\xe3\x9a\xd0\x43\xb5\ \xd9\x97\x36\x7a\xf2\x43\x5e\x66\x98\x1f\xa7\x9f\x8d\x9a\x5d\x01\ \xe5\x6a\xc9\x90\x5a\x43\x43\x26\x19\xa8\x7b\xd0\x69\x90\x21\x67\ \x7c\x15\x3e\xdb\x2a\x11\x01\x7e\x6e\xba\xbe\xaf\x36\xaf\x8c\x99\ \xf6\x6b\x46\x57\x1a\xe7\xb8\xc2\x13\xe2\x58\x5a\x64\x9c\x15\x90\ \x0b\x80\x2b\x44\xe1\xa2\xfe\xd6\x30\x52\xe6\xb9\xba\xc1\x75\x25\ \x11\xca\xe5\x06\x1b\xb0\xb2\x6a\x60\x65\x47\x17\x49\xbb\xd6\x88\ \xa9\xf0\xca\xcf\x95\x59\x24\xc3\xd5\xa8\xaf\xd5\x55\xc4\x68\x62\ \x8e\x4e\x62\x53\xd4\x32\xa7\x88\x3d\xad\x51\xc8\x94\xa0\x98\xe9\ \xf2\x93\x47\xce\x05\x1d\x90\x5c\x6a\x9a\xe6\xdf\xa7\xf9\xbf\x83\ \xb5\xe4\xa4\xcd\x64\x4a\x6b\x8b\x69\xe4\x24\xfa\x12\x08\x5d\x92\ \xd8\x5c\x5d\x77\x6e\xff\xcf\x23\xeb\x18\x70\x39\xa1\xc9\x8d\xcd\ \x0b\x87\xd5\x05\xfd\xf1\x8a\x32\x2b\xab\x66\xd5\xd2\xe6\x29\xda\ \x8d\xd4\x51\x42\x6f\xcc\x80\x9c\xc1\x63\x6e\x34\xb3\x69\x01\x46\ \x55\x7d\xf0\x7b\xc6\x45\x03\x90\x10\xaa\xd5\x0a\x1c\x1b\x3b\x96\ \x1e\xa1\x67\x15\xa1\x67\x7b\xfc\x54\x50\x4b\xb1\x96\x54\x48\x04\ \x81\xef\xbd\x16\x74\x91\x21\x13\xea\x2c\x09\x0a\xd3\x2e\xa4\x24\ \xd2\xc7\x8d\xc5\x11\xba\x94\x89\xc9\x09\xdf\x90\x9f\x3d\x49\x81\ \x7d\x29\x8b\x2d\xcc\xe9\xb5\xc9\x57\xad\x35\x14\xb1\x53\x94\x91\ \x34\x1a\xb0\x76\xf8\x82\x8e\x2e\x12\x86\x22\x74\x6c\xfd\xe0\x4c\ \xc9\x26\xa9\xa5\xe8\x15\xb8\x94\xc2\x0c\xd2\x74\x73\xe5\xb3\x5d\ \x5e\xee\x37\x05\xba\xa8\xca\xda\x47\x6a\x0b\x66\xdc\x63\x29\x00\ \x03\x84\xf6\x4a\xe6\x5e\xb0\x70\xa3\x40\x08\xb2\xab\x19\x97\xa6\ \x44\x27\x46\x6b\x92\x32\x36\x51\xb2\xb7\x50\x60\x14\xc4\x4b\x08\ \xf0\x4b\x14\xd7\x1b\x14\x65\x3e\xea\xfd\x4e\x07\x81\xe8\x16\x4c\ \x9e\x5f\x9b\xe5\x5d\x66\x25\x1d\x88\x26\xdd\x84\x54\x78\x54\xea\ \x39\x41\x77\x57\xc6\xab\x7f\x17\xb5\x73\xeb\x30\x91\x52\x06\x9b\ \x07\xc2\x64\x0a\x5e\xbd\x77\x10\x60\x93\xd4\x85\x23\x99\xf6\xb2\ \x94\xcf\x80\x31\xd7\xe0\xd4\x74\xe6\xf5\x80\x06\xe1\x34\xf7\xa5\ \x12\x3a\xe7\x46\x8b\xad\x01\xc0\xa0\xee\xac\xdb\x04\xa3\xb6\x2c\ \x45\x33\xc3\xb4\x44\xaf\xce\xd7\x44\x0f\x6a\x0d\xf9\x02\x0c\x97\ \xba\x3a\xb7\x42\x6a\x2e\xba\x5e\x1c\x06\x55\x4e\x32\x23\xb9\x88\ \x27\x76\x4c\x4a\x18\x41\x23\xbd\x0e\x67\xa7\x27\xd2\xbb\xc1\x98\ \x85\x62\xae\x57\x31\x97\xba\xbd\x4a\x50\x6a\xd2\x1c\x85\x72\xcd\ \x9c\x54\x10\xda\x27\xb3\x31\xec\x31\x4d\x1a\x5c\xf2\x5a\x87\x24\ \x7a\x1c\x5d\xa3\xa1\xde\x12\x0a\x92\xd0\xb0\xe1\x18\x55\xc1\xb3\ \xd1\x15\x91\x57\x6a\xbc\x3a\x9c\xe9\xf0\x22\x21\x32\x29\xa7\x64\ \x04\xee\x58\xc1\x45\xbe\x81\x7c\x18\xe0\x6b\x3f\xcd\xa4\x2c\x9a\ \x82\x51\x76\x6c\x88\x03\x76\x88\xe0\x21\xa6\x15\x32\x31\xcc\x00\ \x39\x9f\x2d\xf1\x00\x10\x85\xe3\x2c\x5c\x10\xcd\x52\x08\x3d\xae\ \xc9\xa2\xc4\xa4\x83\x76\x59\x24\x57\x58\xe2\xce\x1c\x7a\xda\x8c\ \x75\x47\x8c\xda\xae\xea\xf3\x59\x1d\x08\x92\xef\x70\x01\x44\x56\ \x30\x19\x1b\x0d\x25\xe0\x82\x97\xe0\xda\x46\x2f\x16\x78\x97\x10\ \xa6\xbc\x63\x7b\x72\x03\xe1\x59\xd9\x84\xea\x52\xd7\x89\x75\x3b\ \x5a\x4a\x3f\x11\x80\x98\xe7\x6c\x35\x95\x8c\xeb\x3b\xbd\x3d\x25\ \x89\x8e\x60\x2f\x34\x81\x12\xd2\x63\x89\x7a\x43\x8c\x82\x35\xcc\ \xa6\xd0\x1b\x5f\x4b\xf4\x46\xbd\x11\x16\x8e\xea\xdc\x82\x52\xdd\ \xfb\x4a\x3d\x9d\x5d\xa5\x50\x0d\x77\x06\x8c\x20\x32\x28\x88\xf8\ \xdf\xdd\xdc\x90\xfa\x41\xc7\xab\x14\x72\x7c\x90\x4a\xad\x51\x4f\ \x75\xfa\x79\x2c\xf0\x38\x19\x76\x42\xe5\x45\x46\xe2\xda\xb4\x1e\ \x8b\x19\x83\x28\xaf\x63\xd0\xec\x43\x8c\xb7\xfb\x1d\xa1\x2f\x52\ \xaa\xc5\xaa\x4a\x14\xef\x67\x07\x53\xcd\x47\x36\x1c\xd6\xeb\x17\ \xa6\x6c\x74\xaa\x11\x13\x9c\x46\x1d\x0d\x94\xf0\x1a\x1f\x53\x33\ \x22\x2f\xa8\xad\x04\xa3\xfc\x82\xc9\x39\x6c\x6f\xc3\xe0\xc6\xa4\ \xf0\xdc\xcd\xb5\xa9\xd7\x60\x6c\xfa\x4c\xaa\xbf\xa1\xd1\xee\x01\ \x15\xc1\x07\x53\xc5\xe4\x10\xc2\x5d\x73\x91\xaf\xcd\x1f\xd6\x84\ \x90\x07\x7a\x6c\x7e\x75\x27\xbd\x3b\x6c\xa3\x4b\x52\x9d\xcd\x22\ \xc4\x84\x12\x3e\xae\x9a\x05\xf2\x80\xcb\x39\x2a\x2a\x52\xa9\xcf\ \x79\xd5\x65\x3c\x3b\x17\x03\xcc\x28\xb4\x16\x1c\xc2\x4c\x01\x15\ \x1f\x6c\x1c\x2f\x9c\x5f\xed\x75\x4e\x4a\x97\x71\x79\x21\xa6\xcd\ \xef\x45\xe1\xbb\x31\x5d\xee\xc8\x00\x72\x28\x84\xaa\x72\xa5\xc4\ \x48\xc8\x64\xb3\x00\x72\xce\xb5\xb6\x44\x42\x8f\xab\xfe\x9a\x84\ \xf0\x63\x0d\x7f\xa1\x80\xa4\x4d\xce\x20\x9c\x33\x4d\x8d\x50\x52\ \x6b\x92\x70\x45\x8c\x36\x9b\xc4\x05\xac\x79\x1a\x36\x7a\x7e\x88\ \x5f\xd1\x8e\x81\x70\xa6\xe6\x93\x50\xd5\x37\xd7\x0e\x13\xf4\x4a\ \x77\x23\x65\x30\x0e\x2d\x34\x4a\x36\x61\x4c\xac\xbb\x2c\xb6\xea\ \x64\x70\x93\x10\xc9\x74\x7f\xce\x18\xb9\x89\x22\xa3\x05\xd0\x22\ \x01\x70\x12\x7e\x77\xa4\x2d\x70\x07\xa6\x2e\xc0\x24\xe9\x73\x45\ \x53\x2d\x67\xa4\x31\x91\xdd\x2c\x14\x25\x8b\xc0\x28\x89\x1c\x0f\ \x48\xd5\x46\x97\x34\x70\x94\x3e\x60\x96\xfd\x21\xe1\xc6\x62\x60\ \x03\x04\x43\x25\x19\x29\x61\x30\x97\x73\x62\xae\x49\x2a\x24\x0a\ \xed\x92\x23\x51\x73\xe1\x38\x7f\x3c\xd7\xcc\x8a\x3a\xab\x31\xc4\ \x33\x19\x26\xbc\x32\xd4\x4e\xd9\x58\xcb\x88\x40\x90\x62\xae\x9d\ \xba\x9e\xd8\x7c\x5b\xf4\xa6\x21\x8b\x70\x26\x4e\x95\x93\x62\x66\ \xb9\x5a\x60\x82\xe4\x67\x98\xcb\xb9\x33\xcd\x28\xba\x51\x83\xb9\ \xf4\x44\xd1\x49\xb5\xca\x15\xf3\x93\x8d\x40\x18\x74\x0e\x6b\x9f\ \x75\x02\xe3\x08\xe6\x36\xb4\x0a\x8a\x08\xf1\x13\xc4\x30\x71\xb3\ \xe8\x04\x31\xae\xd9\x48\x31\x22\x79\x7d\xdd\x58\x0c\xa1\xa3\xc5\ \x3e\x67\x43\x60\x31\x80\xc3\x04\x75\x45\x92\x4b\x01\x89\x3d\xb4\ \x51\xa4\xff\x73\x22\x9c\xd0\x12\xf4\x61\x02\x4d\x64\x89\xc7\x6c\ \xbe\x16\xc7\xcf\x3a\xae\xba\x27\xc2\x51\xd2\xd0\x7e\x98\x9a\xfe\ \x92\x8a\x4e\x0c\xb1\x73\xdd\x70\x22\x4d\x15\x03\xb5\xf9\x9c\xfa\ \xbe\x44\xd5\x1d\x2d\xc4\x6d\xc5\xa7\x98\xce\xa8\x64\x21\x4f\xa2\ \xa8\x34\x4c\x6a\x32\x9f\xb3\x41\x46\x27\x58\x29\xe2\x8f\x62\xa5\ \xe9\x79\x91\x8c\x95\xe6\x1a\x86\x42\x98\x0d\x2c\x83\x0c\x09\x8f\ \x46\xcc\x41\x80\x51\x12\xc5\xdd\x68\x09\xb8\x73\x94\xbe\x78\x42\ \x37\x09\x3a\xa9\x7b\x0b\x83\xc4\x6a\xa4\x29\xb2\xdc\xdf\x14\xd1\ \x06\x47\x11\xd3\xd6\x3b\x7b\x83\x75\x3e\xb7\xd7\xf1\x53\x6c\x27\ \xb5\x00\x9d\x38\x50\xa3\x7e\x41\xd2\x77\xc9\x42\xb6\x11\xbd\x7c\ \x42\xe7\xc6\xa2\xb4\x1f\x29\x9a\x39\x62\xca\xf0\xda\x1a\x5a\x01\ \x06\x5b\x56\xa0\x53\xdd\xd3\x97\xe8\x89\x6d\x3d\x29\xb2\x89\x51\ \xcd\x30\x98\xd9\xd6\x7e\xbd\xe1\x35\x3d\xc8\x40\x26\x9f\x89\xa8\ \x9d\xe4\x49\x80\x46\xc7\x16\x48\xfb\xcf\xfd\x9e\xe8\x06\x65\x10\ \x02\x5f\x97\x1e\x63\x4d\x00\xbb\x29\x99\x7e\xba\xe5\x54\xf5\x0c\ \x4f\x36\x1d\xa1\x0d\x8a\xb1\x15\x20\x86\x61\x9a\xf9\xea\x60\x09\ \x9e\x31\x37\xa0\x93\xe8\x8b\x27\x74\x4a\xc0\xfd\xe3\x00\x39\x6e\ \x1f\x90\xa5\xae\x1a\x46\x6f\xb2\x4e\xe9\xcc\xa0\xe1\x76\xcb\x64\ \xa0\x5c\x9d\x83\xf1\x14\xd3\x3a\xad\xea\x3a\x84\xb5\x4d\x39\xc1\ \xc7\x12\x0f\x60\x0b\x03\xf5\xf6\x6a\x06\xba\x0a\xe9\x66\xe3\x45\ \x18\x21\x41\x02\xaf\xc9\x12\x69\x5d\x6a\x3a\x19\x49\x49\xa6\x45\ \x02\x69\xe4\xc0\xb7\x05\x8c\x85\x57\x81\x5d\x34\xa0\x13\xb4\xd1\ \x88\xdf\x18\x68\x74\xc6\x0c\x85\x4d\x42\x58\xd2\xb5\x30\x18\xdd\ \xa1\xb4\xd1\xe1\x65\x12\x5c\x7d\x26\xa8\x18\x2c\x6a\x19\xfa\x4d\ \x0c\x4a\x6f\xaa\xb6\xf3\x9f\xcf\x64\x61\xb0\xa7\xaf\xb3\x68\xdc\ \x39\x01\xff\x4c\x13\x0d\x23\x75\x04\xe4\x29\x52\x94\x69\x92\x09\ \xe2\xa2\xdc\xee\xcb\x8d\x25\xa8\xee\x49\xb2\x30\x93\xd8\x6f\xc1\ \xe7\x04\x06\x01\xf0\x50\x3a\x79\x1d\x46\x7c\xf5\x3d\x3a\x07\xe2\ \x4b\x31\xa7\x2a\xa0\xb8\xfc\x6a\x29\x36\x1b\x2d\xd9\x54\xd8\xfa\ \xe9\x3a\xb7\x7e\x76\xbe\x06\x5e\x7c\x6f\xc6\x25\x8d\x3a\x55\xc3\ \x33\x48\xd4\x7c\x63\xb1\x92\x1c\x18\x49\x1d\x28\x04\x4a\x66\x4e\ \xbf\x90\x06\xc9\xa6\xf0\xa2\xdc\xe0\xc1\x49\xf7\x14\x08\x3d\x89\ \x8a\x4e\x0b\xe5\x16\x14\x2e\xdd\xcb\x01\x70\x81\xef\xc8\x65\x33\ \x5e\xcf\xb2\x88\x8f\xbe\x52\x86\xd3\x73\x33\x1d\x94\x4e\x08\x05\ \xaf\x8a\xaa\x19\xb8\x61\x04\x71\x88\xee\x34\x32\x82\x6a\xda\xd4\ \xec\xc7\xb4\x63\x67\xc1\x31\x6d\xa3\xd7\xc6\x19\x13\xa1\x03\x92\ \xbd\x15\x0b\x40\x3c\x91\x46\xb4\x18\x0b\x92\x8b\xc8\x33\x50\xc9\ \x16\x74\x82\x3d\x25\x42\xb7\xe5\xa4\x58\x89\xdf\x52\xa9\xc2\xf6\ \x3e\xb5\x6f\xec\x7c\x5a\x67\x26\xc3\x13\x42\xad\xd1\xd9\x26\x82\ \x85\x5c\x8f\x61\xe7\x32\x36\x77\x30\x0c\xd3\x74\x29\x62\x4c\xc6\ \x55\xa4\xed\x77\xda\xa6\x08\x59\x85\x6e\x6a\xc4\xde\x8a\x99\x08\ \x5c\x94\xab\xca\x13\xda\x38\x64\x07\x86\x82\x81\x54\x66\x95\x9f\ \xd0\xc7\x1d\xa5\x2f\x9d\xd0\x93\x80\x71\x92\xc4\x88\x35\xea\x25\ \x87\x3c\x85\x02\x4c\x8a\x39\x84\x62\x1e\x19\x6d\x2f\x03\x47\x47\ \x8f\x76\x5e\x75\x47\x4e\xaf\xa6\x70\x46\x5b\x50\x55\xb5\x9a\xca\ \xc8\x27\x70\xe9\x47\x65\xa3\xf7\x76\xf5\xa6\x36\x77\x5d\x42\xaa\ \x5c\x9d\x6a\x55\xad\x39\x77\x01\x46\x12\xa8\x43\x86\x94\xe6\xec\ \x40\x53\x6d\x67\x0a\x59\xb8\xa6\x0d\x29\x13\x7a\xe2\x0e\x1a\x49\ \xb9\x05\x19\x6a\x1c\x85\x39\x03\x17\x59\x46\x7e\xab\xe1\x5c\x0e\ \xa3\xa8\xb7\x7a\x9c\x2a\x4f\x75\x74\x91\x4a\x99\x6e\xe0\x1b\xfc\ \x61\x42\x7b\x35\xfc\xbb\x51\x49\xbd\x99\xd9\x46\x38\x1d\xb5\xa9\ \xdd\xa0\x07\xc6\x0d\xa6\xc7\xa4\x14\xa1\xd7\x3c\x1b\x1d\x93\x9b\ \xd7\xe9\x89\x77\x88\x56\x19\xe2\xa2\xdb\x18\x9c\x83\xd3\x98\xcc\ \xcf\x98\x91\x94\xce\x4e\x5f\x02\xa1\x73\x6e\x25\xb0\x00\x73\x91\ \xbf\x31\x46\xf7\x0f\x5c\xdc\x04\xb1\xa8\x5d\x2c\x21\xa7\xa4\x79\ \x3e\x8f\x0c\x83\x41\x18\x9d\x38\xdd\x59\x42\xcf\xf6\x00\x2e\xc8\ \x90\xe6\xc2\x7c\x31\xf4\xac\x56\x27\x51\xf8\xd7\x53\xac\x30\xa3\ \xfb\xc6\xe9\x03\x01\xad\x94\x9d\x9e\x5c\xb4\xdc\x67\xd1\xe5\x2a\ \xc4\xc5\x87\x88\x1a\x23\x18\x07\x9f\x53\xe1\xc6\xe2\x55\x77\x26\ \x43\x93\x15\xd2\x68\xd1\xf7\x49\x4a\x57\x35\x99\x88\xc1\xb9\x03\ \x37\xd7\xeb\x57\xc6\xa8\x83\xe3\x29\x56\x4d\xe5\x86\x2e\x99\xcc\ \xce\x59\xdc\xe7\x92\xfd\xd9\xd6\x56\x24\xe1\x93\xcd\xe4\x60\xa8\ \x37\x3d\x89\x5e\xad\x97\x9b\x55\x6c\x33\xc0\xba\xd9\x52\x55\xd9\ \x41\x50\xd7\x11\xac\x69\xca\x52\x4a\xab\x29\x65\x4c\xaf\x0d\x4a\ \xcd\xff\xdc\x48\xc7\x46\xa7\x84\x52\xdd\x6a\x9e\x1b\x95\x45\xa4\ \xd8\xf1\x26\xf7\xd6\xaf\xf6\x96\xb2\xac\xea\x77\x62\x6a\xbc\xa3\ \x8b\xd4\x95\xef\x8f\xfe\xd0\x16\x13\xb2\x95\x54\xe5\x37\xa2\x7e\ \x75\x6a\xb6\xd1\xec\x8f\x1e\x5e\xdc\x6c\x2e\x07\xcb\xfb\x96\xa7\ \x27\xd1\x1b\xb3\x50\xae\xcf\x34\x09\x9d\xc9\xeb\xc7\x94\x09\x84\ \x2c\x1b\x00\x25\xd5\xcf\xac\x17\xc8\x68\x05\xb1\x21\x7d\xae\xc4\ \x54\x3a\x12\xdd\x52\xf3\x90\xbf\xc1\xc1\x28\xa8\x40\xa5\x15\xb4\ \x21\x78\x12\x20\xe7\x9f\xdb\xdf\x95\x65\x30\x1b\x45\xe8\x4a\xa2\ \x37\x3a\x18\x06\x5b\xc8\x76\x0b\x2a\x8d\xc5\x14\x21\x80\xa8\x7f\ \x17\x03\xbc\x8b\x0c\x02\xf0\x19\x5a\x29\x9b\x4d\x55\xd0\x96\xeb\ \x9a\xd0\xa7\xc3\xaa\x7b\x88\xff\xa4\x4c\x1c\xa1\x7e\x7b\x06\xc8\ \x4a\x01\xe9\x4e\x8c\xba\x88\x68\xf8\xd9\x03\xea\x62\xc4\x55\x69\ \x02\x44\xce\x46\x4f\x57\xa2\x27\x01\xec\x22\xaa\xbc\xd0\x6b\x99\ \xab\x2b\x16\x69\xb3\xdc\x96\x3a\x7d\xdd\x19\x46\x22\x65\xe1\xec\ \xcc\x19\x38\x33\x39\xd6\xb1\x45\xea\xce\xf7\x33\xc4\x97\xa0\xea\ \x85\x99\xe5\xd6\xdc\xfc\xfa\x63\xd3\x73\x0d\x3f\x88\x3f\xc4\x2c\ \x09\x86\x8a\xdd\x50\xcc\xe6\x52\x9b\xfb\x54\x65\xac\xc9\x04\x85\ \x38\xfb\x4e\x84\xbf\xa2\x51\x18\x32\x02\xbe\x02\xf0\x93\x09\x68\ \x18\x71\x4d\x15\x31\x09\xc3\x75\x63\xe1\x12\x9d\xa3\x59\x69\x7d\ \x43\x1e\x33\xe2\x4b\xff\x50\x5c\x90\x43\x54\x15\xeb\xed\xce\x44\ \x0b\x8d\x64\x32\x30\x31\x33\x09\xa7\x3b\x4a\xe8\x83\x61\xbb\x92\ \x24\xd5\x86\x29\x74\x68\x02\x46\xe8\xcb\xd6\x72\xbd\xc1\x94\xe9\ \x22\x65\x26\x94\x94\x9d\x9e\x4d\x6d\xee\x93\xe5\xd1\x50\xe4\xa0\ \x35\xb5\x3e\x15\x89\x1e\x57\x3c\xc3\x28\xb0\x49\x02\x96\xc1\x16\ \x98\x14\x40\x39\x07\xc8\xa5\x40\xe8\x28\x98\xa0\x5c\x45\x1f\xee\ \x6f\x2e\x60\x02\x51\x70\x53\x91\xa8\x06\x6b\x55\xb7\xbb\x94\x03\ \x2c\x64\xc2\x37\x57\x11\xfa\xd4\xec\x74\x47\x13\x5b\xba\x72\xbd\ \x90\xcb\xe4\xda\x05\x93\x31\xa1\xcf\xd1\x0c\xed\x9d\xc7\x1b\xd4\ \x6b\x5e\xf8\x2b\x45\x63\x5f\xfb\x4a\xdd\x50\xc8\xa5\x27\xd1\xcf\ \x96\x47\x80\xcf\x2d\xe8\x90\x30\x24\xb2\x0b\x08\x56\x25\x67\x36\ \x59\xa0\x76\x7f\xe8\x62\x91\x34\x69\x57\x56\x2a\x1d\x42\x97\xfa\ \xac\xd9\x5a\xaa\x89\xaa\x3f\xf2\x20\x4c\xdc\x2e\x44\xf4\xb4\x5c\ \x0d\xc6\x75\x17\x32\xc6\xa9\x08\xf5\xca\x2c\x1c\x9d\x18\xed\xd8\ \x22\x15\x95\x8d\x5e\xca\xf5\xf9\x11\x6b\x24\x81\x41\x01\x0d\xc6\ \x2c\x6e\x09\xe1\x64\x1d\xdd\x64\xd1\xeb\xf5\x0e\x60\x94\xb0\x6e\ \xc0\x40\xcf\xa0\xd7\x7d\x26\xad\x31\x5e\x3e\xd9\xc4\x03\x28\x7a\ \x2b\x3a\x12\x06\x2b\xd4\x86\x43\xc3\x86\x4f\xaa\x4a\x9a\x8c\x00\ \xb9\x38\x0b\x72\xc4\x9e\xba\xea\x6e\x2b\x01\x67\x6e\xa2\x60\x06\ \x17\x4a\x3b\xca\x4c\x53\xe5\x39\xb4\x0e\x2e\xe9\xe9\x42\x28\x15\ \x33\x3e\x5a\x6d\x20\xef\x3b\x0e\xef\xec\x28\x18\xa7\x83\x66\x08\ \x1a\x21\x06\xc3\x6e\xf2\x56\x71\x05\x60\xca\x3c\xfb\x11\x71\xf5\ \x3a\xc0\xcc\x1c\x45\x89\xac\x51\x87\xa1\xde\xa1\x50\xaf\xb4\xa5\ \x4a\xd7\x89\xca\xa8\xba\x5e\x16\xc4\x34\xe0\xb4\x07\x51\x14\x18\ \x23\x8a\x61\xfa\x8c\x64\x21\x2e\x81\x88\x58\x93\xce\xa9\xec\x69\ \x83\x71\x71\xdc\x3f\x88\x84\xb6\xfa\x2a\x62\x38\x6a\x89\x38\x60\ \x4e\x02\x5e\xc2\x92\xa8\xa8\xa4\xf9\x40\x4f\x36\x10\x60\xd1\x3e\ \xf7\xc0\xa9\xc3\x9d\x93\xe8\xb9\x1e\xaf\x23\xa9\x27\xd1\xc5\xbe\ \x62\x71\x71\xc0\xed\x85\xab\x37\x1a\xbe\xea\x9e\x31\x7e\xb6\x7a\ \xfd\x82\xa1\xd5\xa9\xcd\x5b\xa3\xed\x53\xe5\xd3\x5e\x47\xd5\xa8\ \x0a\xdd\x61\x21\x18\x0c\x74\x31\xd5\xeb\x24\x25\x76\x30\x6e\x7f\ \x38\xdf\x79\xe7\x6c\x74\x93\x3e\xad\x1f\xa0\xb6\x4b\x87\xcb\x5e\ \x0a\x01\x73\x20\x14\x50\x0b\x87\xc5\xea\xbf\x56\xf4\x17\xd8\xfb\ \xbb\x7b\xec\x78\xc7\x16\x49\x07\xcc\x74\x17\x06\xdb\x2e\xbc\x48\ \xab\xe7\x84\x1d\x19\x9a\xf1\x00\x35\x25\xd1\x27\x66\xeb\x86\xdd\ \xe9\x67\xee\xac\x4c\x31\xce\x7d\xa6\x36\xe9\x49\xf4\x16\xa1\x93\ \xa0\x40\xa5\x25\x10\xc9\x54\x17\x38\x33\x2c\x4e\x1d\x64\x37\x89\ \xf0\x19\x5c\xc8\xc6\x74\x84\x1e\x7b\xf3\x30\xa1\x34\x40\xe3\x86\ \x9b\xb5\xda\x25\xc4\x2e\x02\xbc\x10\x23\x1d\xd0\xcb\x5e\x5b\x3e\ \x94\x8d\xce\x4d\xd9\xb4\x87\x46\x8f\xc0\xd9\xa9\x33\x1d\x5b\xa8\ \x81\xc2\x0a\x88\xa6\x9c\x22\xff\x7b\x88\xdb\xcc\xed\x35\xa8\x36\ \x74\xc0\x4c\x2d\xba\x2f\xb3\x39\x58\x35\x90\x5e\xb0\xcc\xf8\xec\ \x71\x25\xd5\xdb\x09\x2d\x21\xaf\x54\xa7\x24\x3a\x42\xb8\x24\x18\ \xe7\x4f\x0f\x11\xaf\xad\xad\x32\x09\x0c\x04\x18\xff\xbf\x93\xee\ \x4b\x57\xdd\xa5\xf5\x8c\xf3\x9f\xb3\x92\xcf\xb8\xc1\x11\x17\x0b\ \x8a\x52\x41\x3f\x1b\xee\xcf\xeb\x38\xd1\x90\x89\x00\xd9\x2c\x8c\ \x8c\x9f\x84\x13\x1d\x04\xe4\x86\x4a\x6b\x04\xbb\x90\x29\xe9\x8a\ \x42\x84\x1c\xea\x72\x58\x4a\xd2\xce\xd4\xa1\xca\x34\x8c\xd4\x99\ \x6b\x6b\x87\xd7\xa4\x36\xe7\x93\xd3\xfb\xa1\xde\x0a\x24\xa2\x64\ \xf7\x74\xa9\x44\x4e\x64\xe9\xd6\x82\x82\x59\x13\x33\x09\x14\x84\ \x03\x5b\xae\xca\x8d\x74\x08\x1d\x44\x41\x25\x48\x79\x34\xba\x8a\ \x32\xa0\x0b\x0a\x9d\x54\x29\x0c\x0b\xd7\xeb\x04\xcb\xfa\xb2\x50\ \x2a\x65\xc3\xdf\xad\x44\xfd\xcc\xcc\x14\xec\x1c\xd9\xdf\xb1\x85\ \x5a\xde\xbd\xb1\x99\xae\x2a\xf8\x14\x43\xbf\x13\x98\x0e\x2e\xed\ \xda\x77\x67\xa7\xea\x5e\x52\x8b\xc9\xec\xb2\xf9\x22\x6c\x5e\x75\ \x61\x7a\x84\x3e\xbb\xbf\xd9\x09\x96\xe1\xca\x21\xb0\xb0\x43\xf6\ \x79\x88\xbe\x31\x62\xc6\xb0\x19\x8d\x84\xbc\x2d\x1f\x6a\x4d\xdd\ \x49\x6e\xe5\xc0\xb8\x45\x48\x7d\xa6\x84\x33\xc1\x02\xb8\x79\x58\ \xf5\xd7\x2e\xb6\x01\x45\xe8\xbd\xbd\x59\x68\x75\x02\x6e\xed\x8b\ \x06\x3c\xba\xff\xf1\x8e\x2d\xd4\x60\x69\x15\x14\x33\x5d\x4d\x17\ \x9b\xe0\xef\x47\xb2\x6c\x72\x9c\xe7\x49\x30\x3e\xa3\xd4\x76\x53\ \xa2\x37\x1a\xb0\xb6\x77\x10\x96\x75\xf7\xa7\x32\x5f\x9d\x87\xae\ \x25\x7a\x26\x93\x0d\x61\x01\x14\x6b\x0f\xa7\x24\xd5\x83\x89\x4c\ \x64\xda\x7b\x5c\x2f\x3d\x12\x80\xcd\x60\xd3\x0f\xb0\xd8\x8a\xce\ \x46\xef\x9c\x44\xc7\x24\x6b\x6c\xe4\x20\x63\x60\xc7\x85\xee\x29\ \x63\xc7\x19\x2e\x2a\xed\x0f\xce\x2b\xb5\x7d\xdd\x70\x21\x1a\x3e\ \xaa\x4e\xfc\xd1\xe1\x67\x3b\xc6\xd9\xfb\x95\x8d\xde\x5b\x18\xf6\ \x7b\x8d\x9b\xde\x04\x2e\x52\x0e\x05\x4c\x42\x3d\x8c\x4d\xd4\xda\ \xf3\x6f\x51\x66\x0d\x2e\x58\xb6\x06\x06\x52\x22\xf4\xd9\xea\x04\ \x9c\x9e\x3d\x0a\x59\xcc\xf3\x34\xdd\x09\xd0\x9a\x92\x98\x78\x5c\ \x8d\xff\x60\xb4\x1c\xca\x20\x1f\x13\x7c\x14\xf2\xe5\xba\x58\xf7\ \x25\x12\x3a\x47\xc8\x09\x4b\x77\x0b\xe1\x72\xc2\xa6\x33\x6b\x2a\ \x01\x98\xa9\xac\xba\x3e\xe4\x05\x2b\xf3\xd1\x4d\x9a\xcb\xc3\x53\ \x47\x9e\x85\xf1\x0e\x01\x72\xbd\x85\x65\x30\x50\x5c\xad\x04\x6f\ \xcd\xc0\x1d\xa4\x05\xc0\x88\xe4\x42\xf5\xa4\xa2\x54\xf6\x53\xe3\ \xb5\xf0\xca\xeb\xf7\xeb\x35\xd8\xba\x6a\x73\x6a\xc1\x32\x27\xa6\ \xf7\xc1\x74\xed\x8c\x86\x30\x65\x93\x2b\x41\xfd\x8c\x45\x71\x7f\ \x34\x0e\xd6\x74\x90\x4a\x62\x13\x3f\x51\xae\x28\x85\xf3\x9f\xa7\ \x48\xe8\xb6\xd4\x6a\x62\x84\xf1\x82\x5a\x25\x59\x7c\xad\xec\xa9\ \x08\xda\xb4\x5d\x33\x54\x80\x4c\xd1\xa8\x08\x9b\xc9\xc1\xe1\xb1\ \xe3\xb0\xa7\x43\xfe\x74\x1d\xb6\xba\xaa\xfb\x42\x5f\xa2\x87\x92\ \x2b\x4c\x49\x63\x76\x8c\xa5\x76\x59\x62\x75\x9e\x06\xe1\x4e\x8c\ \x57\xd8\xa0\x8f\x2b\x56\x6f\x4a\x6d\xbe\xc7\x26\x77\x42\xb5\x51\ \x6e\x7e\x0d\xa3\x29\x19\x2f\xa5\x27\x0b\x99\x80\x99\x48\xc5\x98\ \x84\x4d\x00\x88\x29\xbe\x69\xc6\x63\xd0\x02\xfa\xce\x3b\x42\x5f\ \xa0\x7d\x8e\xf1\x42\x2c\xbe\xe7\x35\xc3\xc5\x83\xee\x35\x22\xa6\ \xf3\x26\x79\x80\xdc\xaa\xa1\x1c\xf4\xf6\xe4\xc2\xea\xaf\x0e\x2d\ \xad\xcc\xc1\x83\x3b\xbf\xd7\xb1\xc5\x5a\xd7\x7f\xb9\x45\x3d\x0c\ \x6a\x1e\xc4\x86\x97\x6a\x67\xc1\x99\xb3\x75\x98\x9c\xae\x87\x83\ \x65\xd0\x67\x54\xd7\x6d\xbe\x26\xb5\xb9\x1e\x9c\x78\xaa\x29\xcd\ \xcf\x65\x93\x3a\x12\x4a\x8b\x31\x4c\x10\x98\x10\x61\xd3\x97\x8b\ \x8c\x3a\x8e\x86\xb7\xc6\xd6\xde\xc9\x8d\x05\x4a\x74\x4e\x85\x8f\ \xdd\x3b\x09\x32\x27\x10\x19\x9b\x8d\x51\xed\x03\x80\x96\xa6\xed\ \xee\x52\x16\x36\xad\x2c\x82\x27\xde\x0d\xef\xca\xb7\x77\xfd\xa8\ \x63\x8b\xb5\xb6\xf7\x62\x2f\x65\xb5\x85\x64\x53\x0c\x17\x34\x7a\ \xc3\xeb\xba\x77\xc7\xce\x54\xa0\x56\xae\x87\x1b\x54\xd4\xeb\xb0\ \x72\x70\x39\x5c\x75\xc1\xc5\xa9\xcc\x73\xba\x3a\x0e\x47\xa7\x76\ \x28\x33\x27\x6f\x85\x4d\x42\x38\x62\x1a\x9b\x09\x73\x61\xe6\x12\ \x01\xe3\x02\x1a\x50\x04\x9f\xb1\x25\xb7\xc4\x68\x7b\xf3\xa9\xb1\ \xce\x44\x4f\x01\x8c\x93\x82\x95\x92\x54\x95\x89\x2d\xf3\x6b\x0b\ \xa4\x88\x02\x5d\xd9\x2c\xc0\x85\x6b\x8a\xd1\x22\x81\x85\x12\x3c\ \xb4\xe7\x47\x70\xaa\x43\xfe\xf4\xe5\xdd\xeb\x61\x59\x69\x1d\xd4\ \xc5\xf2\xd2\x46\x33\x0a\xa3\x32\xac\x6e\x28\x73\x70\xa4\x12\xd5\ \x7a\xaa\x65\xb8\x72\xdd\xa5\xb0\xa2\x3f\x9d\x60\x99\xa3\x13\xdb\ \x61\xb2\x32\xd6\x8c\x71\x67\xd6\x98\xe9\x82\x95\x06\x8d\x68\x26\ \xe8\x31\x17\xa2\x28\x61\x2f\xd4\x2d\x16\x69\xd9\x65\xba\x0c\x30\ \xda\xb4\x11\x1d\xa5\x2f\x4d\x75\x47\x81\x0e\x6d\x80\x4e\x88\xc3\ \x62\xf4\xc3\xc4\xb5\x7f\x91\xfe\x0e\x3f\xd7\x76\xee\x85\x6b\x4a\ \x8a\xae\xb3\x61\x86\x93\xc9\xc0\xe8\xd9\x53\xf0\xd0\xae\x1f\x74\ \x64\xb1\xb2\x6a\x13\x6f\x1e\xbc\xde\xaf\xaa\x2a\xaa\x8a\x66\x40\ \x10\xb6\x92\x59\x66\xca\x0d\xd8\x77\x7c\x16\xbc\xa8\x99\x10\xd1\ \x35\xe0\x55\x97\xbf\x18\x30\x93\x4e\x32\xcb\xee\xb1\xef\x2b\x65\ \xa7\x12\xa8\x2a\x23\x78\x05\x52\xf6\x4a\xf5\x14\x86\x94\xd6\x52\ \x68\x27\xff\xa0\x40\xcc\x91\x4e\x36\xa6\xbf\xdc\x8c\x57\x90\x26\ \x89\xe0\x8a\x4f\xa4\x29\xd1\x6d\x35\xf6\xa5\x2a\xb1\x66\xc1\x09\ \x8a\x23\x62\x12\x54\xdf\x68\x01\x07\xad\xbe\x0f\x0f\x64\x61\xdd\ \x8a\x82\xaf\xbe\x07\x6f\x74\xbd\x06\x5f\x7c\xec\x9b\x1d\x5b\xb0\ \x4b\x96\xbd\xc4\x6b\xa5\x4c\x2d\x90\xcd\xb6\xf1\xda\x13\xcf\xe7\ \x10\x0e\x9d\xa8\xc0\xf8\x59\xa5\x0d\x64\x03\x61\xbf\x4a\xcc\x97\ \xba\xfb\xe0\x35\x57\xdf\x91\xca\xfc\x6a\x8d\x2a\xec\x1b\x7f\x4c\ \x7d\x45\x01\xd8\xa8\x31\x1b\xa8\xba\xc4\x31\x50\x5c\x05\xdd\xb9\ \x01\x2f\x0d\x37\x22\x7d\x83\x5f\x8e\x46\xef\x74\x30\xf6\x0c\x0a\ \x1b\xd0\xa9\xe7\xe7\x40\x75\xa7\x04\x66\x37\x02\x2f\xc5\xd9\x92\ \x41\x42\xb6\x4c\x10\x90\x43\xc6\x95\x42\x7e\x99\xe4\x82\x22\x9c\ \x4b\x36\x74\x47\xf9\x43\xbe\x08\xdf\xd8\xfe\x10\x8c\x4f\x77\xa6\ \x60\xe4\xfa\xfe\x2b\x94\xad\xbe\xb5\x59\x2b\x5d\xe2\x88\xbc\x2f\ \xf8\xf1\x3d\x33\x40\xb5\x46\x78\xdf\x57\xe6\xe0\x25\xdb\x6e\x84\ \x4b\xd6\x6e\x4d\x07\x84\x3b\xfb\x38\x9c\x9a\x3d\xa0\x08\x3d\xc7\ \x77\xc2\x11\x04\x63\x26\x05\x69\xa8\x35\x9e\x75\x7d\x97\x29\x66\ \x53\x0e\xdd\x3b\xed\x12\xd5\xf7\xcb\xab\xcd\x9f\x05\xef\xc8\x7a\ \xca\x58\x1d\xe6\x6a\xb3\x5e\x70\x0f\xbf\x27\xcc\x7d\x61\x32\x57\ \x47\xf5\x49\xc7\x02\x4a\x99\x04\x02\x5f\x92\x14\x9b\x60\x35\x2a\ \x26\x75\x8a\xcc\xe2\xfe\x18\xff\xfd\x5a\x72\x29\xf5\xfd\xe2\x0d\ \x25\xb8\xb7\x3b\x0b\xe5\x4a\xa0\x30\x64\x36\xe7\x75\x6e\xf9\xe6\ \xd3\xf7\xc3\x9b\x6f\x7e\x7d\xfa\x9c\x31\x93\x85\xab\x57\xbe\xd2\ \x43\xb5\x21\x53\x34\x1a\x4e\x20\x6b\x67\xea\x82\x31\xc7\x46\xab\ \xb0\xf3\xe0\x8c\xfa\x03\x23\xeb\xf7\xcb\xb7\xfd\x4c\x33\x82\x6d\ \xe9\x63\xfb\xa9\xfb\x14\x13\x2a\x43\x31\xd3\x1b\x61\x3e\xda\x62\ \x28\x79\x15\x7a\x4c\xf3\x97\xe0\x74\x4a\xf1\x07\xd7\xae\x7e\x35\ \x3c\x71\xea\xeb\xea\xda\x55\x28\xe6\x0a\x5e\xee\xfd\xc8\x99\x2a\ \x3c\xb5\x77\x06\x76\x1d\x99\xf1\x6a\xd6\xcf\xd5\x2a\x90\x55\xdf\ \xb9\x7e\x68\x05\xbc\xf9\xfa\xd7\xc0\xf2\x55\x23\x30\x52\xde\xe1\ \xf7\xa1\x8f\xab\xef\x1e\xb4\xd7\x23\x25\xa2\x9d\xea\x9e\x02\xa1\ \x0b\xa5\x7c\x20\x06\x53\x13\x6b\x7a\x73\xbe\xe7\xc0\xeb\x08\x42\ \x57\x52\xff\x6f\x5d\x72\x6d\xb9\x52\xdf\x2f\xbc\xa0\x04\x3b\xf7\ \x4c\x2b\x49\x1e\x88\x95\x56\xea\xf0\x3f\x7e\xff\x4b\x1d\x21\x74\ \x3d\xae\x5c\x79\x17\x7c\xf7\xe8\x3f\xc1\x78\xf9\x44\x13\xd9\x46\ \x10\xa1\x6c\xd2\x9a\x3a\xc2\x43\xdb\x27\xa1\xa2\x33\xd6\xf2\x01\ \x25\xaa\x3c\x03\x37\x6e\xbb\x01\x5e\x77\xed\xdd\xa9\xcc\x6b\xa6\ \x7a\x16\x9e\x1d\x7b\x48\xcd\xa9\x18\x5e\xaf\xe6\x3a\xea\xa5\x2c\ \x16\x31\x4a\x17\x9a\xd0\xe7\xd2\xe9\x76\x73\xd1\xd0\x8d\xf0\xba\ \x2d\xbf\x06\x9f\xfc\xd1\x87\xe0\xf1\xfd\x47\xe0\xd9\x43\x73\x70\ \xf2\x84\x92\xf0\x15\xf5\x65\x85\x02\xf4\xf7\x0d\xc3\xcd\x9b\x6e\ \x82\xd7\x5c\xf1\x32\x78\xdd\x75\x77\xc3\x45\xab\x37\xc0\xe7\x77\ \xbe\x17\x8e\x9c\x78\x12\x0a\xba\x28\x26\x5a\xaa\xea\x22\xf2\x78\ \x8f\x23\xf2\x34\x09\x1d\x92\x27\x08\x85\x24\x86\x4c\xac\x6d\x0d\ \x61\xbe\x0a\x4d\x10\x5d\xc5\x70\xcb\x26\x06\x25\xd6\x41\x2c\xd7\ \x6d\xe9\x81\x9d\xfb\xa6\xc3\xf3\x2a\x94\xe0\xab\x4f\x3f\x00\xbb\ \x8e\xed\x86\x6d\x29\xa9\xc4\x61\xd0\x69\x10\x6e\xbd\xe0\x67\xe0\ \x5f\xf7\xbc\x3f\xe0\xc2\xc2\x76\x93\xc1\xc0\x5c\x0b\x8a\xb0\x0f\ \x2a\xdb\xfc\xa9\xdd\xd3\xbe\x34\x6f\x01\x0d\x0d\x0f\x7c\xfb\x83\ \x37\xbc\x47\x9d\x53\x4c\x49\x9a\x7f\x07\xce\xcc\x1d\x53\x6a\x72\ \x37\xbb\xdc\x1a\xdb\xe8\xeb\xca\x85\xe7\xd1\xf4\x12\x1c\x3c\x73\ \x22\x35\x82\xb9\x69\xed\x9b\x80\xa6\xd7\x43\xdf\xec\xfd\x70\xf5\ \xd0\x1c\xf4\x94\x0a\xb0\x69\x70\x39\x6c\x5b\x73\x11\x5c\xb1\xfe\ \x32\x58\x39\xb0\x22\x74\x7e\xd8\x8b\x61\x60\x09\xad\x84\x27\x2e\ \x01\x26\xc0\x50\x9d\x1a\xbf\x44\x42\xe7\x04\xb2\xa9\x2d\x91\xa0\ \x99\x73\x88\x2a\xe7\x13\x35\xe3\xc2\xd1\x80\xf6\x29\xd0\x30\x21\ \x70\xae\xee\x31\xbe\x6d\x5d\x09\xd6\x2c\x2f\xc2\xf1\x53\xe5\x36\ \xc8\xa5\xd4\xe0\x39\xa5\x8a\x7e\xec\xfe\xcf\xc0\x1f\xdd\xf3\xdb\ \x1d\x59\xb8\x1b\xd6\xfe\x24\x3c\x35\xfa\x2d\xd8\xaf\x6c\xe2\x62\ \xb6\x3b\x30\xef\x36\xf3\xca\xaa\xf9\x54\xaa\x04\x5f\xf9\xfe\x38\ \x54\xb5\x79\x91\x0b\xb8\x03\x67\xa6\xe0\x9d\x77\xff\x22\xbc\x2a\ \x25\x10\x4e\x17\xc5\x78\x74\xe4\xab\xed\xb2\x51\x4c\xf5\xdd\x3a\ \xe9\xec\xbf\x1c\x64\xd4\x3c\x1a\xc1\xec\xb9\x6c\x1e\x8e\x8c\x1e\ \x86\xb9\xf2\x2c\x94\x8a\xdd\xa9\xcc\xe7\xe6\xad\x37\x79\xc7\x82\ \x46\x50\x1d\x47\x69\x23\xba\xe6\x8a\x9d\x03\xe3\x4c\x6d\x49\xaa\ \xa9\x20\x55\x54\x22\x2e\x03\x29\x98\x96\x08\x4c\xd1\x09\x9b\x9d\ \xd6\xae\x51\x5e\x2c\x20\xdc\x78\x49\x6f\xd4\xa4\x28\x74\xc1\xc7\ \x1f\xfe\x22\x8c\x4e\x9c\xea\x0c\x87\x54\x92\xfc\xf5\x5b\x7e\x03\ \xfa\xf2\xc3\x3e\xf8\x64\x98\x35\x3a\x1d\x35\xab\x8e\x2f\x2b\x22\ \x3f\x74\x64\xd6\x27\xf2\xf9\xe9\xcf\x4c\xc2\xf5\x5b\xaf\x87\x3f\ \xfe\xe9\xff\x91\xda\x7c\x76\x9d\x7e\x18\x0e\x4f\x3d\x03\xb9\x6c\ \xd1\x58\x8b\x76\x88\x9e\x6e\xe9\x36\xd4\x9f\x55\x6b\x96\x0d\xdf\ \x86\x4c\x0e\xf6\x8c\x1e\x85\x13\x1d\x2c\x99\x9d\x68\x7f\x21\x19\ \x9b\x8c\xa2\xea\x3b\x41\x42\xdb\xd1\x8d\x85\x11\x3a\x57\x0f\x22\ \xce\x36\x0f\xc5\x7b\x13\x63\x5b\x05\x1e\xd1\x04\xe1\xe2\x80\x98\ \xf0\xd0\x3e\xf5\xab\x95\xfa\xbe\x62\x59\xd1\x37\xdc\xe7\x4f\x55\ \x52\x6a\x64\xf4\x08\x7c\xe4\x3b\x9f\xea\xd8\xe2\xad\xea\xbd\x08\ \xde\x7c\xc9\xff\xf4\x9a\x30\x56\xea\x73\x2d\xa6\x96\xcf\x81\x47\ \xe4\xff\xf6\xbd\x71\x78\xe4\xa9\x09\x1f\x3f\x98\x67\x78\xb3\x13\ \x70\xcd\x85\x57\xc2\x17\xde\xf3\x7f\xbd\x42\x90\x69\x49\xf3\xef\ \x1e\xf9\xb4\x87\x5e\x63\x24\x9a\xac\x4d\x4d\xfa\xeb\xbb\x8b\x19\ \x58\xab\xb3\xff\x6a\x81\x7b\xa4\xe6\x3a\xab\x98\xcf\xe3\x07\x9e\ \x7c\x6e\x76\x61\xc4\x15\x87\x51\x4d\x10\xa4\x02\xa3\xb6\x4a\x28\ \x6e\x24\x27\x74\xae\xec\x90\xad\xa0\x6b\xd0\xf6\x66\x4f\x40\x23\ \xbd\x10\x79\xce\xcd\x12\x76\x94\x61\x34\xbc\x7a\xef\x08\x2f\xba\ \x5c\x49\xf5\x86\xf1\xa5\xca\xf6\xfd\xf0\xb7\x3e\x09\x27\xcf\x9e\ \xec\xd8\x02\x6e\x1d\xbe\x19\x7e\xf6\xb2\x3f\xf4\x12\x5e\x74\x8f\ \xb3\x6c\x8e\xe0\xcc\x54\x1d\x3e\xf3\xad\xd3\xf0\xf0\x63\x67\x7d\ \x73\x42\xe7\xb0\x97\x67\xbc\xe3\x27\x6f\xfe\x09\xf8\xf7\xdf\xfc\ \x24\xac\x5f\xbe\x3e\xb5\x39\xec\x1c\x7d\x40\x99\x10\x8f\x41\x3e\ \x53\x32\xc0\xc0\xf0\xda\xea\x67\xda\xcd\xb5\x7e\x75\x31\x4a\x5c\ \xf5\x1a\x7c\x63\xc7\xc3\xcf\xf1\x76\xc4\x68\xdd\xf7\x10\xb1\x3b\ \x95\xbd\xf3\xaa\x3b\x81\xdc\x18\xd3\xd6\xf7\x9e\xe3\xbc\x68\xc9\ \x79\x6d\xd9\x69\x5c\xb1\xba\xa0\xfd\xd0\xd6\x00\x2a\x4a\x3a\x5d\ \xb3\xb5\x1b\xd6\xac\x2a\xb6\x0b\x3a\xe8\x23\x57\x80\x63\x27\x0f\ \xc3\x1f\x7e\xe9\x2f\x3b\xba\x88\x17\x0e\x5d\x0f\xef\xbc\xe6\x2f\ \xe1\xee\x8d\xef\x82\xc7\xb7\x37\xe0\x03\x9f\x39\x00\x4f\x3c\xa5\ \x98\x8b\x96\xf2\xd5\x59\xe8\xce\xe5\xe1\xf6\xcb\x6f\x85\x4f\xfd\ \xe7\xff\x03\x9f\x7f\xf7\xff\x07\xab\x06\x56\xa6\xf6\xdd\xba\x5b\ \xea\x7d\x87\x3e\x6e\x24\x00\x1a\x80\x55\xa0\xbc\x53\xad\x41\x70\ \xd9\xfa\x12\x64\x4a\x86\x3b\x4f\xad\xd5\x57\x9f\xba\x1f\xa6\xe7\ \xa6\x9e\x63\x5a\x67\x36\x12\x22\x6f\xb3\x47\x02\x73\x9c\xea\xbe\ \x78\x30\x2e\x69\x83\x06\x33\xdc\xd1\xe4\xc0\x14\x50\xd3\x83\xc0\ \x9c\x01\xb0\xf1\xc0\x00\x32\x60\x5e\x90\xd9\x93\xe7\x1f\xbe\xf3\ \xfa\x01\xf8\x87\xaf\x9d\x02\x0a\x66\x92\x96\xba\x95\xfa\xfe\x4f\ \xf0\xf6\x97\xbc\x19\xae\xde\x78\x65\xc7\x16\xb2\x3b\x3f\x00\x2f\ \xdf\xf4\x0e\x58\xff\x9a\x57\xc0\x2f\x5d\xbf\x17\x0e\x8c\x1e\xf0\ \x5e\xdf\xb0\x6c\x1d\x6c\x5b\xbd\x19\xb6\xae\xb9\xa8\x23\xdf\xfb\ \xfd\xa3\x9f\x85\xc3\x93\x3b\xa0\x98\xeb\x02\x6b\x5d\x2f\x6c\xbb\ \x25\xd7\xae\x28\xc0\xe6\xb5\x25\xd8\xb3\x7f\x5a\x89\xf8\xcc\x7c\ \x03\x7a\xd8\x77\x7c\x2f\xfc\xf3\x23\x5f\x81\x5f\x7c\xe9\x5b\x9e\ \x1b\x1b\x9d\x6b\x9a\x88\x28\x84\xc4\x52\xb8\x77\x00\x39\x69\xbf\ \x34\x42\x67\xcc\x6a\x56\x7d\x27\x46\xfc\x87\x52\x36\x85\xe4\x04\ \xe4\x7c\xcf\x14\x6d\xa3\x1c\x41\x91\xc3\x3e\x54\x2d\xd5\x2f\xdb\ \xd8\x05\x57\x5f\xdc\xab\xa4\xea\x44\xdb\x5f\x9d\xc9\xc2\xcc\xec\ \x14\xfc\xfa\xa7\xff\x10\xbe\xfa\xeb\x1f\x57\xf6\x73\xa1\xa3\x0b\ \x7a\xd1\x9a\x0d\xde\x71\x2e\xc6\xc9\xa9\x7d\x70\xff\xe1\x7f\x80\ \x7c\xb6\xc8\x63\x1a\xa1\x26\x8f\xf3\xf6\xbc\xbf\x34\xb7\x28\x53\ \x67\xcf\xa1\x99\xb0\xfd\x8b\x19\x78\xff\xd7\x3f\x06\x6f\xbd\xe5\ \x0d\xa9\xb9\xfc\x16\x66\xa3\x73\x9a\x5d\x8c\x3d\x6e\x78\x3a\xdc\ \x58\x8a\xea\x2e\x99\xc9\xb0\x08\x1c\x24\xd2\x6d\x13\xf8\x22\x05\ \x04\x72\x1f\xaf\xe0\xe7\x02\xf6\x7c\x5d\xed\xe2\xbb\x95\x54\x1f\ \x18\x0c\xc4\xc0\x7b\x9d\x1f\xba\xe1\xde\x27\xef\x83\x0f\x7e\xed\ \x6f\x5f\x30\x37\xae\xde\xa8\xc2\x97\xf7\x7e\x10\xa6\x6b\xe3\xe1\ \x06\x0d\x56\x49\xe9\xd7\x95\xd7\x2e\xbf\x4b\x37\x28\xa6\xb8\xad\ \x4f\xfd\x11\x90\x8c\xf9\x12\x3c\xbd\xef\x49\xf8\xb3\x7f\xff\x9b\ \x73\xbb\x09\x31\x1b\xae\x1e\x1b\x51\xee\x12\x76\xf4\x74\x12\x7d\ \x89\x60\x1c\x67\x87\xc7\xd6\x05\xa7\x68\x6b\x26\xe0\x08\x9c\x69\ \xc7\x84\xc8\x97\x0a\x26\x06\xb0\x0b\x6c\x02\x4d\xdb\xda\x7d\xf4\ \x9a\x17\x0d\x79\xc1\x34\xe1\x20\x9a\x2e\xf8\x83\x7f\xf9\x10\x3c\ \xbc\xfb\x91\x17\xc4\x8d\xbb\xf7\xc0\x47\x61\xf7\x99\x1f\x40\x21\ \xdb\x05\x6c\x76\x18\xbb\x6e\xed\xa1\x53\x66\x5f\x7d\xd3\x00\x2c\ \x5b\x59\x6a\x13\xbb\xb7\x4e\x25\xf8\xfd\x2f\x7e\x08\xbe\xf1\xe4\ \xb7\xcf\xc9\xef\x98\xa9\x8c\xfb\x6d\xa3\x74\x08\x30\x22\xb3\x27\ \x8c\x62\x24\x80\xb2\x70\x70\x23\x05\x89\x4e\x02\x08\x07\x02\x10\ \x17\x57\x90\x2c\x54\xe6\x79\x21\x6a\x5e\x40\x55\x0b\xe6\x7b\x37\ \x6f\x7c\x59\x49\xab\xab\x36\x77\xc1\xcb\xaf\x1f\x6c\x4b\x75\xaf\ \xc9\x43\x16\xa6\x66\x67\xe0\x6d\x7f\xfb\x1b\x70\x72\xfc\xe4\xf3\ \xfa\xa6\x3d\x31\xf2\xef\xf0\xc0\x91\x7f\x68\x12\x39\x32\x26\x8e\ \x71\x63\x18\x0c\x44\x6b\x3f\x7d\x3d\x59\xf8\xf9\xbb\x96\xc3\x8a\ \xe5\x4a\x03\x9a\x6f\xfa\x98\xcd\x41\xb9\x56\x85\x9f\xfd\xeb\x5f\ \x85\x6f\x3c\xfd\x9d\x0e\x69\x23\x35\x38\x32\xf1\x0c\x7c\x65\xcf\ \x87\xe0\xaf\x1e\x7d\x07\x1c\x98\x78\x42\x99\x13\x85\x18\x03\x9e\ \x2b\x46\xe2\x88\x3d\x3d\x42\x27\x61\x3d\x29\x6e\x7d\x4d\x20\xc8\ \x50\x07\xb8\xd6\x4c\x91\xe7\x4c\x38\xa4\x64\xb7\x05\xea\xaa\x6b\ \xdf\xfa\x1d\xd7\xf5\xc1\x15\xca\x5e\xf7\xda\xa2\xcc\xff\x06\x25\ \xad\x76\x1d\xdd\x03\x3f\xff\x91\xff\x0a\x33\xe5\xe9\xe7\xe5\x0d\ \xdb\x33\xf6\x03\xf8\x97\xdd\xef\xf7\x1a\x31\x26\x6b\xc6\x88\x22\ \xa0\xa2\xd7\x69\xc5\x60\x16\xde\xfe\xda\x95\x70\xd5\xc5\x4a\x8d\ \xd7\x49\x64\x7a\xbd\xb2\x05\x18\x9d\x99\x80\xd7\x7d\xf0\x5d\xf0\ \xde\x2f\x7e\x00\x66\xe6\x96\xbe\x56\xb5\x46\x05\x8e\x4f\xee\x82\ \xfb\x0f\xfe\x3d\x7c\xf4\xf1\xff\x02\x1f\x7d\xe2\xdd\xf0\xe0\x91\ \x7f\x84\x89\xaa\xee\x0d\x97\x89\x86\xbc\x72\xea\x22\xa1\xf0\xbb\ \x5c\x1f\xb6\xa5\x83\x71\x68\x51\xd5\x59\x70\x8e\x8c\xd2\x3e\x04\ \xd6\x38\x5a\xb3\xad\x6e\x48\x55\x03\xa3\xe4\xb3\x09\xcc\x51\x98\ \xbb\xe3\x7c\xfd\x77\xf2\x12\x49\xde\xf4\xd2\x61\x28\xcf\x35\x60\ \xf7\x3c\xba\xac\x47\xb1\x07\xbe\xfe\xd8\xb7\xe1\x9d\x1f\xfb\xef\ \xf0\xf7\xef\xfa\x00\xe4\x52\x6c\x51\xdc\xe9\x71\x60\xfc\x09\xf8\ \xec\xce\x3f\x80\x2a\xcd\xf9\x89\x2b\x9c\x6f\x19\xa3\x40\xa5\x8d\ \x8b\x57\xab\x00\xfd\x5d\x19\x78\xcb\x9d\xcb\xe0\xea\xad\x3d\xf0\ \xe8\xce\x29\xd8\x3f\x32\x07\x33\x33\x79\xb5\x76\x35\xf8\xdd\x4f\ \xfd\x29\x7c\xe2\xe1\xaf\xc2\xdb\x5e\xf4\x06\x78\xed\x35\x77\x7a\ \xe9\xb4\x85\x42\x7c\xa6\xdd\x5c\x75\x12\xce\x96\x4f\xc2\xa9\x99\ \x83\x9e\x8f\xff\xc8\xe4\x76\x38\x39\x73\x00\x2a\xf5\x19\x2f\x4c\ \x37\x87\x79\x3f\x74\x38\x14\xf2\xda\xec\xcc\x89\x64\xb8\x59\x0d\ \x89\x4e\x5c\xea\xad\xeb\xd4\xb2\x34\x42\x07\x0b\xfe\x21\xbd\x89\ \xc4\x14\x14\x40\x8b\xfa\x1e\xd8\x98\x64\xdc\x38\x4a\xd2\xc8\x30\ \xda\x0c\x42\x17\x91\xd4\xc5\x1e\xde\x72\xfb\x32\xf8\x8c\xfa\x7b\ \xf7\x81\xe9\x36\x12\xdf\xd5\x07\x9f\x7a\xe0\x73\x8a\x58\xb2\xf0\ \x91\x77\xfc\x31\x14\xf3\xa5\xf3\xfe\x46\xe9\x84\x95\x2f\xec\xfa\ \x23\x98\xab\x4f\x85\xb3\xd3\xd8\xa8\x41\x7b\x0b\xea\x70\x3b\x6b\ \xdf\xb7\xae\xcf\xbc\x64\x63\x09\x2e\x5e\x5f\x84\xb1\xc9\x3a\x1c\ \x3d\x55\x81\x93\x67\x6a\x30\x36\x55\x55\xc7\x21\xf8\xf0\xc3\x7f\ \x0e\xff\xf4\xd4\xc7\xe0\xd2\x0b\xb6\xc0\xa5\x2b\x36\xc0\xfa\xe1\ \xd5\xb0\xbc\x7f\x39\xac\x19\x5a\x03\x03\x3d\x03\x30\x31\x77\x0a\ \xa6\x2a\x63\x70\x76\x6e\x04\xce\x54\x8e\xab\xc7\x93\x1e\xa1\xcf\ \xd5\xa7\xbd\xef\xca\x40\xd6\xcb\x57\x2f\x78\x79\x01\xc1\x3e\x75\ \x86\x87\x25\xc2\x9f\x4c\x17\x6c\x30\x5d\x99\x92\x99\x89\x6e\x24\ \xf4\xa3\x03\x24\x8f\x90\x43\x03\x8c\xe3\xfa\xad\xc5\xa2\xa9\x66\ \x9e\x3a\x2c\x80\x83\xb7\x5f\xd7\x39\xeb\x5d\x25\x84\xb7\x2a\x3b\ \xf4\x0b\x0f\x64\xe0\xa9\x9d\x93\x7e\x15\x04\x7d\x4a\x57\x2f\x7c\ \xe2\xfe\xcf\xa8\x4d\x3c\x0e\x7f\xf7\x1f\xff\xcc\xdb\xb4\xe7\xeb\ \x78\xf8\xc8\x67\xe1\x6b\xfb\xff\xca\x0b\x71\xf5\x89\x9c\xf8\xe2\ \x8a\x64\xd4\xa9\x43\x4b\xfa\x6c\xeb\x63\xf3\x6d\xa9\xc9\xef\x07\ \xa7\xde\x1c\xea\xcb\xc2\xf2\xc1\xee\xc8\x9d\xa9\x35\x1a\x50\xa9\ \x1d\x81\x0a\x1d\x86\x3d\x35\x6d\x46\xa8\x17\xc7\xc8\xf8\x86\x66\ \x47\x1a\xd4\x84\x9d\x6b\x83\x85\xd6\xe2\xb9\x5c\xc2\x8a\x14\x60\ \x15\xcc\x64\x33\x7e\x97\x13\xe8\x29\x80\x71\xe6\xba\xa2\xc0\x50\ \x43\x79\xe8\x10\xb6\x9f\x63\x0b\xc4\x23\x93\xbd\x64\xd8\x6c\xa1\ \x92\xd0\x92\x2b\xa0\xfd\x11\xdd\xa2\x38\xaf\x34\xcd\x9f\xbe\x6d\ \x18\xee\xbc\x69\xd8\x7f\xb9\xd6\x24\x82\x52\x1f\x7c\xf9\xd1\x6f\ \xc0\x2b\xff\xe4\x67\xe1\x07\x7b\x1f\x3d\xef\x6e\xce\x64\x79\x14\ \x3e\xb7\xe3\x7f\xc1\x97\xf6\x7e\xc0\x23\xc4\xac\x97\x12\x4b\x06\ \x81\x40\x94\x40\x42\xa6\x0d\xca\xb6\x56\xab\xe3\x8c\x01\x96\x29\ \x6d\x48\xbb\xe0\xf4\x51\x0e\x1c\x75\x5d\x05\x0b\x8a\x90\xc7\x92\ \x57\x4e\x4b\x13\xb1\x96\xd0\x5a\x05\x2f\xb4\x8e\x2e\xef\xd0\xad\ \xa6\x91\x90\x01\x4f\xa5\xee\x11\xb6\x16\x5d\x5c\x77\x16\x46\x12\ \x39\xf7\x5a\x4a\x84\x2e\x75\x40\x16\x19\x82\x69\x53\x4b\x85\x03\ \x92\x38\xe6\xa5\xe4\x17\xb3\x41\x5f\x74\xe3\xd7\x9b\x80\xf2\x5d\ \x37\xf6\xc3\xcf\xbd\x6a\x25\xac\x18\x6a\xa2\xcc\x3a\x7a\x44\x49\ \xf6\x47\x0f\xee\x80\x3b\xff\xe4\x3f\xc0\x07\xbe\xf2\xd7\x6a\x93\ \x57\xcf\x8b\x1b\xf3\xc4\xc8\xd7\xe0\xa3\x4f\xfc\x0a\xfc\xe8\xc4\ \x97\x15\xa3\x2a\x05\x7c\xe5\x08\x7c\xbb\x66\x73\x8d\x90\xe9\x79\ \x86\x7c\x02\x12\x0a\x15\x7f\x38\x5b\x38\xe8\xfa\x8c\x0b\x50\x89\ \x10\x37\x41\xb4\x7d\x52\xb0\xe1\x03\x31\xed\xa8\x03\xf3\xb2\x01\ \xbe\x04\x2e\x60\x66\xc9\x36\xba\xe4\x3f\xb7\x99\x87\x60\xb4\xcf\ \x65\xeb\x78\x5b\xec\x78\xc9\xae\x0f\xa9\x78\xc6\x06\x42\x02\xd6\ \xe7\x47\x7e\x5d\xd2\x39\x45\xc3\x97\x6f\xec\x82\xf5\xcb\xf3\xf0\ \xc0\x93\x93\xf0\xfd\xed\x93\x50\x9d\x53\x22\x3f\xd7\xa5\xec\xcb\ \x39\xf8\x6f\xff\xf8\x5e\xf8\xe2\x63\xf7\xc2\xef\xfd\xe4\x7b\xe0\ \x8e\xcb\x5f\xf6\x9c\xdc\x90\xdd\x63\xdf\x83\x87\x94\xaa\xbe\xfb\ \xcc\xf7\xbc\x58\x80\x62\xae\xc7\xbe\x4e\xa1\x35\x91\x54\x5e\xa3\ \x73\xab\x64\xbb\x73\x26\x80\xf8\xbd\x94\x60\x5e\x82\xd4\x26\x46\ \x18\x48\x15\x63\xcd\xdf\x22\x55\x8f\x45\xa7\xba\x2f\x8d\xd0\x6d\ \xc0\x9b\xcd\x7e\x37\x2b\xc4\x58\xaa\xc5\x84\xab\x84\x30\xa5\xa4\ \xcc\x8e\x1c\x5c\x97\x8e\x44\x7d\xdf\xb4\x9f\xbd\x0e\xdd\xa5\x0c\ \xbc\xf6\x45\x83\x70\xed\xd6\x1e\xf8\xde\x33\x53\xf0\xe4\xbe\x69\ \x28\xcf\x28\xe5\x46\xa9\x9c\xf7\x6f\xff\x1e\xdc\xb5\xf7\x31\x78\ \xcb\x0d\xaf\x84\x77\xdd\xf6\x56\xb8\xfd\xb2\x5b\xbd\xd0\xd0\x4e\ \x0e\x5d\x02\x6a\xd7\xd8\xc3\xf0\xf8\xc8\xbf\xc3\xbe\x89\x47\x3d\ \x3f\xb3\x96\xe2\xc8\xf9\xc6\x31\x86\xb8\xad\x9c\x99\x5b\x73\x64\ \x08\x8e\x89\x2f\xe7\x92\x4a\xd8\xe8\x35\x1b\xc1\x9a\x36\x78\x5c\ \x3f\x35\x4e\x9a\x58\x70\x1d\x47\xe9\x29\x80\x71\x0b\x65\x02\x2c\ \xb1\x05\x7b\x89\x33\x2a\x63\xe8\x74\x4b\x33\x3d\xa9\x4d\x8f\x95\ \xe0\xdb\x1b\x45\xab\xf2\xf5\x46\x03\x56\x0d\xe7\xe1\xa7\x5e\x36\ \x04\x2f\xba\xb2\x17\xb6\xef\x9f\x85\x67\x0e\xce\xc0\x89\xd3\x59\ \x68\x94\xab\xf0\xe9\xfb\xbe\x08\x9f\x7e\xe4\xdf\xe1\x65\x5b\x6f\ \x80\x7b\x6e\x7c\x35\xbc\xfa\xea\x3b\x60\xd3\xca\x8d\xa9\xdf\x80\ \x4a\x7d\x16\xfe\xf1\xe9\xdf\x82\xbd\x67\x7f\xe8\xa9\xe7\x3a\x6e\ \x3d\xd2\x68\xd1\x2c\xd8\x61\xc6\x81\x07\x13\x86\xcc\xe4\xa1\x44\ \x80\x0b\x08\x4c\x00\x0c\xad\x2c\xce\x7b\x62\xde\x04\x53\x43\x8b\ \xfb\x7e\x29\x22\x4b\x32\xd5\x5c\xd8\x6b\x8a\xaa\x3b\xf1\xf5\xb4\ \x11\x12\x84\xc1\x4a\x37\xd9\xb2\xb1\x4c\xa9\x2d\x75\xe1\x24\x41\ \xbd\x33\xb3\xe1\x42\x85\x2f\xc2\x9b\xb0\x56\xf7\xa5\xca\xca\xc1\ \x1c\xac\xb9\xbe\x1f\x5e\x72\x55\x1f\x1c\x3f\x5d\x85\xc3\x23\x65\ \x78\xf6\xc8\x1c\xec\x3d\x3a\x0d\xf7\xef\x78\x58\x49\xf9\xef\xc2\ \x40\xff\x32\xb8\x76\xe3\xe5\x70\xeb\x85\x57\xc2\x2f\xdf\xf9\x8b\ \xb0\x6e\xd9\x05\xa9\xdc\x80\x7c\xa6\xe8\x55\xab\xd1\x44\x5e\x50\ \x52\x3c\x4c\xb4\xc4\xa0\xd2\xc4\x36\x68\x94\x83\x46\xe2\x2a\xa5\ \x5a\x7c\xee\x26\xf3\x45\x09\xb0\x11\x40\x36\xb2\x08\x60\x89\x2b\ \xb7\xfc\xe8\x64\x29\xff\x6c\xe2\x35\xae\x38\x64\x0a\x60\x1c\x2e\ \x5c\xd2\xb3\xf6\x55\x8c\xfd\x4d\xc6\x7b\x56\xe6\x80\xd1\x0d\x6c\ \x2b\xbb\x1c\xf9\xa2\xb0\xe4\xd0\xc8\xbc\x46\x95\xf5\x47\x37\xac\ \x2a\xc0\xcb\xae\xed\x83\x9f\xbb\x6b\x19\x0c\xf4\x16\x14\x2b\x2c\ \x79\x41\x36\x67\xe7\xa6\xe1\x3b\x4f\x3f\x08\xef\xfb\xcc\x9f\xc0\ \xe7\x1f\xf9\x72\x6a\x37\x40\x47\xb7\x6d\x1a\xb8\xda\x6f\x08\x11\ \x01\xc9\x38\x62\x14\x18\x69\xb0\xc7\xb8\x15\x25\x25\x0b\xb1\x72\ \xb6\x2f\x08\x1d\x77\x80\x01\x55\x25\x65\x8e\x12\x99\x55\x51\x9c\ \x05\x12\x30\x2f\x70\x44\x9e\x0a\xa1\x27\x09\xb0\x8a\x5d\x67\x03\ \x55\x8d\xa4\x14\x06\x36\x68\xa8\x6f\x19\xca\x1d\x59\x31\xd0\xc0\ \x2f\xc8\x24\xe2\xd0\x59\x4b\xce\x36\x35\xc3\x67\x35\xd1\xe7\xb3\ \x19\x58\xa3\x54\xfb\x76\xbc\x7c\x56\x11\x7c\x97\x97\x09\xf7\xc3\ \x43\x3b\x52\xbd\x09\x9b\x87\x6f\xf4\x22\xc5\xa8\x95\xd9\x27\x2d\ \x2a\xca\x04\x25\xfd\x6e\x5a\x48\xd9\x5e\x8a\xf6\x4d\x03\xae\xa5\ \x35\xd3\xde\xc9\xd6\x46\xd7\x16\xd6\x0a\x0b\xa9\xcd\xce\xb5\x07\ \x5a\x8c\xe4\x71\x84\x6e\xdd\x03\x10\xd3\x5b\x81\x2f\x12\xc9\x11\ \x34\x18\x99\x4a\x16\x62\x44\xb2\xdb\xe6\xa1\xec\x3a\x46\x2a\x71\ \x80\x93\xd8\x5d\xb0\x19\x3c\xa2\xeb\xbe\xe5\x11\x56\xaf\x28\x44\ \xa7\x94\x2f\xc0\x0f\xf6\x3d\x01\x95\x6a\x39\xb5\x9b\xb0\xa6\x67\ \x0b\xac\xea\xde\xec\xf5\x4b\x0b\x71\x57\x32\x88\xdb\x96\x0f\x20\ \x49\x4e\xae\xca\x0f\x59\xe2\x98\x23\x42\x9f\x2c\x08\x6c\x70\x7e\ \x42\x9b\xa5\xe0\x77\x92\x21\xc9\x89\x12\x68\x1c\x71\xa6\x42\xf0\ \x6d\x27\xd9\x97\xa0\xba\x2f\x40\xb2\x93\xa4\xee\xa1\xbd\xfb\x06\ \x49\x69\x89\x8c\x1a\x29\x72\x15\xce\xfd\x22\xa5\x35\x72\xf6\x6d\ \xf8\xbb\x74\x76\xd7\xe6\x55\x25\x3f\x92\x2e\x28\x4c\x74\xc5\xd4\ \xd3\x47\x61\xe7\xb1\x5d\xa9\xdd\x04\x8d\xb0\x5f\xb9\xe2\x4e\xaf\ \x6f\x5a\x94\x29\x06\xa4\x18\x02\x13\xdf\x8e\x61\xa6\x67\xc3\x49\ \x4c\x66\x2b\xdd\x3c\x0c\x10\x22\x62\xf4\xf3\xc4\xf5\xb3\x17\xee\ \x2b\x19\x18\x0d\x31\xe7\x73\xd2\xa4\x75\x5b\x38\x26\x4d\x8b\xd6\ \x2d\x1d\xa1\x27\x1d\x52\x8c\x0b\x25\xfd\x30\xc5\xd8\x6a\x18\xdd\ \x70\xb1\x9b\xd7\x72\xdf\xc9\x28\x49\x14\x34\x21\x42\xfd\xbb\xc3\ \x9f\xd3\x75\xcf\x57\x0c\xe7\xa0\xb7\x37\x07\xf3\xcd\x41\xfd\xdf\ \x9d\x81\xfa\xf4\x04\x3c\xb8\x27\xdd\x48\xba\xeb\xd7\xbc\x0e\x96\ \x95\x2e\xf0\xb2\xbc\xd8\xb5\x22\x86\x48\x89\x4b\x2d\x34\xfa\x91\ \xc7\xda\x5c\x5c\x2b\x29\x86\x39\x23\x44\x99\x29\xa2\xc5\x4c\x20\ \xa3\xae\x00\x86\xb5\x33\x36\x13\x11\x63\x18\x92\xc5\x04\xf3\x99\ \x60\xd9\x91\xf4\x52\x08\x5d\xea\x70\x6c\xdd\x47\xc4\x23\xaa\x84\ \x81\x3d\x4c\x0b\xe4\xc3\xb8\x00\xdb\xcf\xdc\x50\xc1\x92\x56\x5c\ \x81\x8b\xf0\xe7\xb5\x69\x3e\xd0\x9d\x85\x4d\x5e\xc7\xd6\x86\xb1\ \x6a\x19\xf8\xe6\x33\x0f\xa6\x7a\x23\x74\xf7\x97\xdb\x36\xfc\xbc\ \x47\xe8\x7e\x78\x0f\x0a\x1a\x11\x45\x25\x2c\x1b\x39\x96\x74\xad\ \x18\x35\x0c\x89\x6f\xd0\x68\x03\xd6\x42\xd1\x72\x24\x33\x22\xb4\ \x01\x79\x14\xc3\xc8\x84\xdf\xd6\x0e\xb3\x3d\xe9\x48\x7a\x29\x84\ \x6e\xeb\x78\x9c\x18\xa1\xa3\x40\x81\x7e\x88\x02\x4e\xc4\x01\x49\ \x02\x17\x20\x26\x2a\x6b\x41\x73\xe2\x12\x66\xa2\x48\xaf\x3e\x65\ \xdb\xfa\xae\xa8\x5a\x9c\x2b\xc2\x03\x7b\x1e\x4b\xbd\x80\x85\xee\ \xfe\x72\xcb\x9a\x37\xc2\x5c\x6d\x4a\xf1\x96\x0a\x43\xc0\x86\xed\ \x14\x24\x2c\x14\x0a\x34\x48\xea\x7b\x28\xdc\xd4\x6c\xa9\x2c\x01\ \x82\x64\x29\x01\x06\xd1\xd8\x08\xd6\x42\x40\xc6\xbe\x87\xb0\x7d\ \x1f\x6a\xf8\x11\x13\x73\x1d\x06\x77\x47\x1c\x49\x2f\x55\xa2\x73\ \x1a\x5f\xa2\x7c\x7f\x23\xa6\x9d\xab\x17\xc7\x02\x29\xc8\x00\x49\ \x42\x6d\x6f\xce\x3e\xa5\x04\x9d\x3c\xc8\x54\x39\x03\x73\x55\xaf\ \x69\x3f\xfb\x85\x6b\x8b\xd0\xdd\x93\xf3\xe3\xe2\xe7\x47\x36\x0b\ \xa3\x63\x23\x70\xef\xf6\x74\xa5\xba\x8e\x84\x7b\xdd\xd6\x5f\x87\ \xd7\x6e\x7e\x0f\xf4\x17\x56\x78\xb9\xdb\x95\xc6\x2c\x94\x6b\xd3\ \xea\x98\x69\x1e\xd3\x6a\x2a\x35\xb9\xc7\x78\xa2\xee\x97\xa6\x6a\ \x8c\x16\xcd\x4a\xea\xe0\x61\x0b\x56\x41\x1e\x4b\x21\x9b\x94\x08\ \x68\x13\x88\x76\x75\x91\x88\xc3\x2a\x34\x67\xdc\xe7\x48\x9a\x1f\ \x8b\xcb\x47\xa7\x04\x60\x1d\x26\xbc\x00\x5b\x27\x8c\x91\x10\x6c\ \xac\x07\xc5\x24\xd6\x48\xe8\x21\x86\xa5\xba\x10\x77\xa1\x35\xf6\ \xe1\xbe\x1c\x6c\x5a\x53\x84\xed\x3a\x2f\xd3\x88\xcf\xfe\xf4\x0f\ \xbe\x0c\x6f\x7d\xf1\x1b\xd3\xe5\xbc\x99\x1c\xbc\x54\xa9\xf0\xd7\ \xae\x7e\x2d\x1c\x18\x7f\x1c\x0e\x4d\x3c\x03\xc7\xce\x8c\x78\x29\ \xa2\x7a\x94\x94\x36\x31\x03\x07\x61\x64\x7a\xaf\x9f\xcd\x16\x89\ \x60\xe3\x7e\x37\x0a\x12\xd2\xc6\x04\x49\x6e\x05\x8d\xc1\x9e\x78\ \x8c\xed\x1e\x49\x31\x46\x88\x96\xb5\x8a\xf9\x9e\xd0\xfd\x8d\xab\ \x04\xec\x31\xfa\x83\xea\xbf\xc3\x8e\xa4\x97\x4a\xe8\x4c\x59\x6d\ \x6b\x48\x35\xd9\x3e\x2c\xb9\x47\x2c\xc4\x8a\x92\x1a\xc9\x55\x9e\ \x31\x36\x22\x49\x58\x80\xa0\x0a\x07\x5c\x75\x3a\xcc\xfd\xaa\x8b\ \x7a\x60\xfb\x5e\xa3\x9c\x52\xbe\x08\xf7\xee\xfc\x1e\xec\x3e\xbe\ \x07\xb6\xae\xd9\x92\xfa\x8d\xe9\x2d\x0c\xc3\x15\x2b\xef\xf0\x0e\ \x73\x7c\x65\xcf\x5f\x78\x15\x5b\xb2\xc1\x4e\xae\x56\x42\x5e\xa0\ \x6f\x94\x2c\x9f\x63\x03\xeb\xcc\xe4\x22\xe1\x03\x5c\x20\x14\x17\ \x0e\x1d\xc2\x15\x24\x61\x12\x31\xb5\xb6\xab\xd7\xf6\x3b\x92\x4e\ \xc3\x46\x8f\x25\x4a\xe6\xa6\x90\x64\x2b\x4a\x45\x28\x78\x6d\x5d\ \xb6\x0b\x31\x0a\x38\x99\x6a\x9d\x09\xc2\x59\xed\xbd\xb0\x59\xa1\ \x03\x68\xb6\xae\x2b\xc1\x8a\xe5\x45\x1f\xa1\x9b\x7f\x3b\x93\x85\ \xe9\x89\x31\xf8\xf8\x77\x3f\x7f\xce\x6f\x5a\x5d\xab\xee\x22\x01\ \x1a\x40\x18\x51\x32\xf5\xde\x54\x87\xd1\xa6\xc2\x93\x01\x74\x1a\ \x6d\x8c\x6d\x6b\x0c\xa6\xb9\x04\x42\x5a\x2c\x17\x27\x60\x55\x17\ \x1f\x51\x27\xcc\x3a\x92\x5e\xaa\x8d\x9e\x10\x00\x8d\x10\x28\x82\ \x6c\xa3\x71\xdd\x5c\x88\x09\x67\x35\xa3\xea\x4c\x29\x46\x46\x53\ \x47\x96\x21\x70\x1b\xdc\x16\x96\xeb\xff\xed\x37\x26\x44\xb8\x61\ \x5b\x8f\x5f\x3c\x31\x38\x0a\x45\xf8\xff\xbf\xfb\x05\x38\x3d\x79\ \xfa\x39\xb8\x75\xd2\xcd\x30\xa4\x3b\xa2\x85\x11\x70\x12\xd4\x02\ \x94\x81\xb1\xd6\xe6\xf5\x5a\x99\x6f\x46\xcd\x81\xd0\xfd\x33\x22\ \x20\x43\x04\x8e\x4c\xb8\xad\xd0\xe0\x23\xfa\xbb\xef\x75\x6e\xf4\ \xb4\x24\x3a\x0a\x0c\x57\xb2\xcf\xcd\x84\x0c\xb4\x04\xcf\x04\x6f\ \xa4\xe9\xbf\x45\x8e\xeb\x70\xc4\x4e\xe1\xe2\x08\x5c\x61\xc1\x24\ \xea\x8a\x81\xe2\x57\x6b\x0d\xb8\xfa\xa2\x6e\x18\x9c\x0f\x89\x6d\ \x75\x6c\x2d\xc0\xb1\x13\x07\xe0\x6f\x3a\xd8\xb1\x55\xb4\xa2\x30\ \x89\x4a\x65\xe1\xbe\xa6\xbb\x2e\x92\x18\x43\x4c\xf4\x5d\xd0\x26\ \xa6\x18\x20\xcf\x78\x9f\x8d\xb6\x33\x18\x0b\x42\x4c\x24\x24\x48\ \x66\xdc\x2e\x75\xee\x13\xae\xf0\xc4\x52\x08\x3d\x61\x85\x1f\xb0\ \x01\xaa\x12\x95\xb1\x85\x26\xa4\xc4\x0b\xb4\x17\x5c\x88\x84\xc0\ \x12\xd8\x53\x21\xcd\x8d\x8a\x06\x76\xd4\x36\x01\x34\x0e\x36\xd0\ \x9b\xf5\xb2\xdb\x3c\xa9\x1e\x3c\xaf\x50\x82\x0f\x7d\xf3\xef\xe1\ \xe8\xd8\xb1\x73\x27\xcb\xc9\x54\xcd\x29\x81\xca\x2c\x55\xa6\xb1\ \x48\x6d\x6e\xdd\x30\xee\x3b\x18\xc0\xcd\x6c\xc8\x81\x36\x97\xa9\ \x91\xb2\x1c\xeb\x3a\xf5\xde\xff\x57\x75\xcd\x59\x17\x02\xbb\x14\ \x42\x8f\x53\xd7\x31\x4e\xa0\x10\x63\x9b\x31\xea\x35\x4a\x3e\x75\ \xb4\xa8\x16\xc2\x66\xa3\x45\xe6\x63\xa3\x19\x4e\xdb\x9e\xa3\xee\ \xed\x76\xc3\xc5\xbd\xb0\x71\x5d\x57\xbb\x63\x6b\xb3\x39\xa1\xee\ \xc3\xfe\x7b\x5f\xf8\xf3\x73\x27\xd1\xcd\xaa\xa9\xb1\x1c\x39\x81\ \x5d\x6e\x95\x9c\xb6\x56\x3d\x12\xf6\x62\x61\x1a\xa6\xa6\x80\x96\ \x84\x97\x20\x5e\x10\x64\x70\x6d\x57\x68\x55\x9d\xf3\x49\x47\xca\ \x69\xa8\xee\x49\x98\x01\x25\x7c\x2d\x68\x2f\x4b\x31\xd7\x62\x59\ \xa1\x60\xab\x5c\xb2\x83\x7b\x22\x60\x80\xf6\xc9\x12\x45\xed\xd7\ \xa6\xad\xae\xcb\x47\xbf\xe6\x96\x41\x28\xea\x96\xc3\xa1\xde\x6e\ \x3d\xf0\x77\xf7\x7f\x16\x3e\xf7\xc8\x97\x9e\x03\xeb\x1c\x21\x91\ \x6d\x4a\x0c\x56\x21\x85\xa1\x26\x4a\x55\xc4\x64\x8a\x1b\x02\x24\ \x2a\x5c\x10\xa9\x56\x93\x58\x0d\xff\x9a\x3a\x9e\x74\xa4\xdc\x09\ \x42\xb7\x55\x31\xe2\xa4\x6f\x04\x05\x37\x22\xa0\xc4\xf0\x4d\xae\ \x57\x76\x10\xd8\x63\xb4\x81\x48\xf4\x56\x48\xdf\x85\x58\x17\x42\ \x08\x71\x0e\x5f\x4b\x23\xf0\x3a\x5f\xfd\x95\x37\x0f\x86\x81\xbf\ \x0c\x42\x5d\x9d\xf7\xee\x4f\xfc\x1e\xec\x38\xb2\xf3\x1c\x1a\xea\ \xcc\x7a\x8b\xc9\x3b\xf2\x92\x2e\x38\xc5\x93\x24\x33\xc8\x9c\x87\ \xd9\x30\x53\x52\xdd\x39\xcf\x00\x5a\x4c\x87\x96\x86\xa1\x83\x0b\ \xde\x0f\x2e\x47\xb5\x83\x12\xdd\x52\x6f\x20\x02\x80\xa1\xe0\x1b\ \x45\xae\x86\x18\x57\x90\x42\xa8\x46\x2a\x6d\x6a\x53\x6a\x51\x64\ \x83\x08\x48\x22\xca\x00\x52\xf3\x0f\x5d\x02\xf9\x96\xcb\x7a\xe0\ \xf6\x9b\x86\xfc\x64\x97\xf9\x73\x72\x45\x38\x3e\x76\x02\xee\xf9\ \xbf\xef\x81\x63\x1d\xb6\xd7\x51\xb2\x6d\x83\x68\x3b\xc5\xd8\xed\ \xc4\x68\x32\x91\x9b\x4b\xbc\xd6\x13\x97\x6c\x14\x09\xc9\xc5\x04\ \x8d\x26\x2c\xd5\x67\x59\x86\xee\x5d\xeb\xcb\xea\xb8\xcf\xb5\x65\ \xea\x14\xa1\xc7\x6a\x76\x14\x6f\x37\x8a\x71\xd0\x96\x2f\xa4\xb8\ \x94\x54\x4e\xb5\x94\xaa\x97\xc6\x25\x6c\x10\x9b\xdf\xde\xf0\x24\ \x3b\xc0\xdd\xd7\xf5\xc3\x1d\x37\x0f\xfb\x97\xa9\x35\x37\x67\xb1\ \x1b\x9e\x3c\xb0\x1d\x5e\xf9\xfe\x5f\x80\x27\x0f\x3e\x7d\x6e\xf4\ \x77\xb3\x9c\x92\xb5\x87\x99\x99\x11\x87\x51\xa0\x93\xab\x9b\xce\ \x01\x62\x91\x14\x52\x94\x99\x48\x12\xcd\x81\x20\x46\x72\x44\x4c\ \x06\xed\x33\xff\x5d\x47\xc2\x69\x11\x3a\xc6\xa8\xee\xe6\xb9\x24\ \xa9\x5d\x66\x66\x93\x79\x63\x2d\x69\xa9\x44\xd1\x02\x84\x44\x72\ \x76\x93\xd8\xae\x87\x20\x92\x0a\x69\x9a\x17\x12\xd3\x69\xbe\x8f\ \xba\x74\xb4\x3a\x2a\xca\x46\x7f\xc5\xb5\x7d\x70\xcf\x5d\x2b\x60\ \xb0\x3f\xaf\x44\x7d\xb3\x4e\x7c\xa9\x1b\x9e\x3e\xf4\x2c\xbc\xe2\ \x8f\x7f\x16\x3e\xf2\xad\xbf\xef\x88\x94\x21\x5b\xcc\x38\x97\x8e\ \x6b\xba\x24\x39\xe9\x6a\xe2\x26\x66\xd1\x0b\x2e\xbf\x80\x84\x4d\ \x21\xa2\xea\xb6\x8a\x41\xe6\x77\x09\x1a\x45\xfb\x3e\xfd\xa1\x3a\ \xf1\x89\x68\x5f\x6f\x37\xd2\x91\xe8\xb6\x5e\x0b\x64\x03\xc1\x38\ \xc0\x05\xa3\xc4\x1c\xe9\xba\x8a\xbc\x2f\xdd\xea\x47\xe6\xea\x8e\ \xc5\x01\x76\x1c\xd3\x32\x03\x3d\xfc\x79\x63\x13\x9c\x9b\xf7\xaf\ \xbf\xeb\x0d\xab\xe0\xb6\x1b\x06\xa1\xb7\x3b\xeb\x13\x7c\xb6\x04\ \xa7\x26\x27\xe0\x5d\x1f\xfd\x2d\xb8\xeb\x4f\x7e\x0e\xbe\xf2\xd8\ \xd7\x53\xad\x48\xa3\x5b\x1d\x51\x44\x03\x61\xe2\xc1\x89\x03\xd9\ \x88\x61\x88\x14\x05\x37\xd9\x52\xce\x68\x51\xed\x39\xb7\x9d\x60\ \xa6\x11\xc7\x64\x38\x1c\x45\xaa\x18\x04\xf7\xa9\x73\xdf\x1f\xae\ \x29\x40\xae\x81\x83\x65\x2c\x3e\xd6\xdd\xa6\x8d\x91\xb9\xb1\x88\ \xd7\xae\x43\x82\xc0\xe6\xb3\x43\x19\x38\xb3\xaa\x1a\x42\x96\x0d\ \xa7\xca\x87\x92\x67\x02\x01\x3e\x6c\x82\x86\xbf\x29\x49\xbd\x5e\ \xae\x36\xa0\xaf\x2b\x03\xaf\xba\x65\x10\x6e\xba\xac\x0f\xb6\x1f\ \x9c\x81\x9d\x07\x67\xe1\xc4\x58\x0e\xa6\x66\x6a\xf0\xcd\x47\xef\ \x83\x6f\x3e\xfe\x20\x5c\xb9\xe9\x72\x78\xfd\x35\x77\xc0\x5d\x57\ \xbc\x0c\xb6\xac\xdc\x08\xab\x07\x57\x41\x36\x97\x4c\x02\xcd\xd5\ \x26\xbd\xd4\x55\x5d\xff\xfd\xcc\xec\x71\x38\x31\xbd\xd7\xab\x1c\ \x6b\x6d\xb2\x80\x49\x18\x1b\x32\xbf\x9f\x8b\x61\x10\x34\x20\x2e\ \x81\x26\x51\x41\x56\xf3\x3e\x9a\x4a\x17\xf7\xbb\x5a\x27\x1e\x22\ \xa2\x5f\xd4\xcb\xe2\xc8\xb7\x13\x84\x4e\x96\xfb\x25\xed\x07\xb3\ \x1b\x6a\xa4\xa0\x41\x5c\x7d\xaa\x04\xbb\xc6\xd6\x8c\xb1\x35\x07\ \xce\xe6\x86\x18\x69\x24\xb5\x80\x8a\xda\xc6\x7e\x9d\x78\x80\xfe\ \x9e\x2c\xbc\xe4\xca\x7e\x78\x91\x22\xf8\xf1\xa9\x3a\x9c\x38\x5b\ \x85\xb3\x93\x35\x18\x9b\xa8\xc1\x99\xa9\x43\xf0\xf1\xc7\xff\x06\ \x3e\xb7\xe3\x13\xb0\x61\x70\x39\x5c\xb8\xf2\x42\xd8\x38\xbc\x1a\ \x56\xf4\x0c\xc0\xb2\xbe\x61\xd8\xb8\x62\x1d\x74\x15\xba\x60\xa6\ \x32\x01\xb3\x8a\xb0\xa7\xaa\x63\xde\x31\x31\x37\x0a\xd3\xb5\x31\ \xaf\x53\xe9\x6c\x6d\x5a\x7f\x9b\x52\xc3\x72\x81\x8e\xaa\x1c\x9a\ \x1d\xd3\x73\xcd\xd6\x05\x07\x0d\x13\xc7\x0c\x39\x4e\x52\xb8\x86\ \x0d\x97\xe4\x2a\xd9\x32\x20\x28\x32\x66\x5a\x7b\xae\xa7\xd4\x71\ \x8f\x3a\x0e\x3a\xd2\x4d\x9b\xd0\x29\x81\x76\x8c\x20\x57\x24\x46\ \x99\x40\x16\x56\x80\x5f\xd8\x34\x18\xa7\x72\x40\xcc\x77\x18\x2a\ \x2f\x22\x6f\xb3\xc6\x6e\x68\xbf\xce\x5c\x5d\x53\xbc\xfa\xcc\x40\ \x6f\x06\x86\xfb\x4b\x01\x9d\x66\x40\x7d\x05\x7a\x65\x9d\x6b\xf5\ \x1a\x54\xeb\x3b\x60\xa2\xf1\x0c\x4c\xd6\x10\xf6\x9d\x41\xf8\xd1\ \x38\x06\xae\x4a\xad\xff\x33\xea\x0a\x99\x4c\x56\xfd\x9f\x53\x2a\ \xbb\x32\x0d\x28\xbb\xc0\xa5\x32\x19\x21\xe3\x7e\x44\x61\x4d\xb8\ \xe2\x1c\xc8\xdd\x0b\xf3\xa3\x31\xeb\x1d\x1b\xcb\x64\xd4\xee\xf7\ \xb5\x93\x51\xf5\xdf\x4f\xa9\xdf\xf3\xb0\x23\xdb\x4e\x49\xf4\xb8\ \xe2\x9c\xb1\x02\x98\xd1\xd9\xc9\xa2\x16\x10\x08\xe1\xb0\xcc\xc4\ \x88\x2c\x8a\x01\xca\x14\xc0\xf9\xf6\xd9\x00\xfe\x24\x9d\x41\xa2\ \xa9\x98\xf3\x52\x3e\x64\xb6\xb4\xcc\x4c\xdd\x4e\x58\x11\x6c\x16\ \x17\xc0\xd4\x4c\x22\x8d\x0b\x53\x0d\x6a\x24\xc1\x35\xe5\x62\xc9\ \x17\x82\xb8\x9a\x9c\xdd\x96\x05\xc8\x78\x04\x90\x2c\x8c\x59\xf4\ \xcc\xec\x50\xef\xfd\xbc\x7a\xfc\x91\x23\xd9\x4e\x82\x71\xb6\xf2\ \xd9\xb6\xe6\x9e\xec\x85\x84\x2a\xa6\x9c\xcd\xd6\x22\x12\x94\x41\ \x35\x0c\x72\x7d\x09\xa2\xe6\x32\xe6\x0c\x10\x90\x0c\x44\x1e\x05\ \xe0\x28\x42\x20\x5c\xcb\x66\xc6\x27\x6f\xad\x8d\x2e\x95\xbd\x36\ \x10\xf1\x44\x48\x28\x87\x40\x0b\xdd\x4f\xd1\x16\xa6\x1a\x41\xca\ \x20\x92\x69\xc6\xae\xb5\xa5\x0e\x7c\xb0\x6d\x94\x35\x86\x3d\xc8\ \x44\xf0\xe3\xea\xbf\xdb\x1d\x91\x9f\x2b\x1b\x9d\xdb\xa3\x71\x26\ \x18\x27\xf1\x82\x76\x1f\xc6\x6d\xdc\xc0\x06\x21\x88\xf7\x9b\x73\ \x15\x67\x42\x15\x4a\x24\x00\x8e\x78\x02\x36\xbf\x13\x2d\x5d\x4d\ \xcc\x9e\x67\x5c\xe7\x98\x60\x8c\x37\x57\x6f\x9e\xb8\x6c\xbb\x00\ \xb6\x81\x49\xd0\x51\x46\xb2\xb6\xcc\x12\x09\x6b\x08\x97\xd0\x8a\ \x68\x38\xd2\x3d\x23\xa9\xf8\x87\x14\x13\x8f\x42\x0f\x36\x56\x3b\ \x78\x44\x1d\xff\x5b\x1d\x5f\x70\x64\x7a\xae\x09\x3d\x0e\x9c\x13\ \xb5\x66\x12\xa4\xb5\x51\xd5\x04\x4d\x17\x91\x2d\x6c\x52\x28\x8c\ \x18\x45\x69\xc3\x2a\x23\xb7\x51\x51\x68\xe7\x8b\x36\xf0\x8f\xf9\ \x7d\x1c\x62\x2f\xae\x0d\x67\xff\x32\xaa\xb5\x2d\xe3\x2b\xa2\x55\ \x08\xa1\xc0\xd8\xd4\x8a\x92\xfc\x1e\xb6\xe1\x85\xd4\x05\xd7\x72\ \x8f\x38\xbc\x35\x12\x0b\x11\x5a\x0b\x0d\x6e\x68\xb0\xed\x5e\x75\ \xde\xe7\xd4\xe3\xbf\xaa\xa3\xe6\x32\xd2\xce\x15\xa1\xc7\xd5\x6f\ \x67\xf7\x58\xb0\x82\xab\xc9\xd1\x19\x26\x40\xc0\xa0\xac\x1c\xa4\ \x6f\x22\xbf\x8c\x5f\x98\x93\x18\x28\x00\x49\x68\xaa\xea\x36\xc4\ \xd1\x06\xce\x09\x15\x59\x24\x66\x45\xd4\x66\x3c\xac\xa4\x16\x42\ \x4d\x89\x84\x6c\x35\x8b\x3b\x91\xc8\xd2\xdc\x81\xec\xf1\x08\x11\ \x1c\xc3\x2c\x19\xc5\x31\x5b\x46\xf2\x47\x93\x94\xce\xaa\xa7\xa7\ \xd5\x39\xcf\x80\x57\x02\x0a\xf6\xa8\x93\x9e\x55\x8f\x3a\x9c\xf0\ \x8c\x23\xcb\xe7\x82\xd0\x29\x86\xd8\x59\x75\x9d\x89\x72\x23\x10\ \x22\xdf\xa4\x1a\x63\xc8\x70\x7d\x53\x44\x08\x92\x4f\x94\xba\x08\ \x6c\x94\x18\x67\x77\x06\xb5\x0a\x6b\xbb\x1f\x49\x6d\x8d\xc3\x15\ \xb8\xce\xa8\x71\xa6\x83\x45\x6b\x91\x34\x1a\xab\xb9\x63\xbb\xa1\ \x4c\xb5\x5e\xce\xcf\x1d\x24\xf6\x20\x73\xf7\xbf\x7f\x5c\x3d\x3f\ \xa9\x1e\x0f\xaa\xc7\x67\xd4\x6b\xba\x69\xdd\xbe\xe6\xa1\x0b\x39\ \x56\x1d\x09\x9e\x4f\xaa\xbb\xa5\xe2\x2f\xcb\x10\x42\x71\x32\x81\ \x82\x81\x41\x9b\x31\x82\x12\x73\xd0\xb9\x69\x27\x0a\xd5\x46\x91\ \x78\x55\x9c\xe3\x54\x41\xc6\xc1\x9e\x0f\x7c\x59\x29\xa9\x02\x29\ \x1b\x93\x83\x31\x9c\xd0\xd6\xcf\xdd\x64\x70\xb6\xd2\xba\x71\xbe\ \x70\xb0\xaf\xa9\x78\x3d\xe6\x5e\xa0\x25\x48\x06\x71\xca\x23\x5c\ \x84\x23\xbe\x84\xc6\xa7\xd4\x39\xfb\xd5\x71\x08\x7c\x9f\xb7\x23\ \xe8\xe7\x2d\x18\x17\x27\xe9\x81\x51\x85\x31\xb0\x11\x83\x6a\x61\ \x50\x95\xb5\x01\x4c\xa6\x7f\xd8\x66\x66\x44\x5c\x3c\x42\xc4\x18\ \xd9\xfa\x8d\x0b\xfe\x64\x32\xec\xdf\x85\x00\x16\x2c\xb0\x25\x11\ \xa3\xd4\x3e\x9a\x53\xe7\x05\x22\xb5\x01\xa6\xb1\xd5\x62\x22\xbf\ \x75\xd6\x23\x68\x52\x04\x8d\xb0\x1b\xbc\x3c\x70\x52\x2a\x37\x1e\ \x55\xcf\x0f\x80\x8b\x56\x7b\x9e\x13\xba\x69\x2a\xc7\xd6\x11\x48\ \x98\xf7\x2d\xc6\x4a\x07\x7c\xae\x12\x18\x15\x11\x5a\x24\xd8\xfc\ \x00\x7c\xa4\x96\x8d\xd0\xe2\xd6\xc3\x2c\x77\x04\x7c\x74\x5e\x84\ \x08\xb9\x1a\xf2\x52\x17\x59\x93\x91\x08\x36\xb0\x99\xda\x69\xeb\ \xa4\x62\x03\xb6\xc2\x80\x59\xd9\x97\xc6\x78\x40\x3d\xd7\x6a\x76\ \xd3\x96\xd6\x75\xd3\x69\x44\xbd\x36\xe1\x48\xe7\x85\x2a\xd1\x39\ \x20\x96\xd3\x04\x89\x01\xb4\x44\x00\x0e\xa2\x1d\x3b\x93\x20\xc5\ \x26\xb3\x40\x5b\xe9\x63\x09\xb4\x02\x8b\x4a\x4c\x16\xbb\xd6\x04\ \xa2\x4c\x42\x03\x81\x99\x19\xe0\x1b\xa2\x5d\xfd\x16\xb1\x08\x4e\ \xa5\x32\xc3\x8b\xe3\xba\xa5\xb6\xde\xd7\x75\xa3\x95\x34\xa6\x3d\ \xea\xe5\xfd\xea\x94\x67\xd5\x7b\xba\x7b\xa4\xae\x8f\xae\x4b\xdb\ \x3a\x82\xfe\xb1\x21\x74\x8c\x51\xdf\x01\xe2\xdb\x33\x71\xd2\x2e\ \x88\xe4\xb2\xc8\xb0\x25\xfc\x94\x8b\xc1\x86\x80\xdd\x2d\x99\x0f\ \x5c\xfb\x5e\xf1\x3b\x80\x37\x27\x42\xf4\x65\xd3\x50\x48\x52\x7f\ \xa3\x0b\x49\xc4\x37\x51\x64\x19\x98\xc5\xbe\x37\x7d\xe2\xed\xcf\ \xcf\x79\x84\xeb\x11\xb2\xa7\x72\xef\x55\xd7\xdf\xae\xde\xd7\x48\ \xf7\x68\x13\x34\x73\xd4\xe0\xc0\x38\xcb\x6b\x62\x03\x46\x21\xf2\ \x8d\xc0\x40\xc6\xd1\xde\x46\x28\xb6\xc1\x7d\x92\x10\x55\x81\xa8\ \x6d\x2e\x2e\xa9\x6e\x1d\x32\xde\x00\xd3\xad\x67\xa2\xef\x71\xa5\ \x90\x39\x9b\x04\x39\xc9\x8e\x32\x8e\xe0\x6b\x3f\x73\x3e\xd1\x6a\ \x77\x95\xa7\x6e\xeb\x32\xc8\xbb\xd4\xb9\xbb\xd4\xeb\xc7\xd5\x49\ \x93\x6e\xcb\x3b\x42\x8f\x07\xe0\x38\x93\xd2\x1a\x11\x67\x4a\x43\ \xe2\x89\x9d\x62\xdc\x4c\xac\x86\x20\x11\x94\x25\x76\x9a\x05\xe0\ \x6c\xae\x38\x86\x18\x43\x34\x27\x14\x62\x43\x09\x18\x33\xfb\x96\ \x19\xf1\xe8\x52\xd3\x82\xe8\x04\x66\xd5\xe3\xe9\xa6\xcd\xac\xfd\ \xd0\x3b\x3d\x29\x0d\xb8\xc7\x47\xbb\x3d\x14\xdc\x0d\x37\x16\x24\ \xd1\xb3\xec\x7e\x43\x88\xf1\xa7\x93\x45\x85\x47\x19\x38\x32\x93\ \x59\x50\x08\xb2\x89\xa4\x90\xda\x08\x5c\x02\xca\x62\xe2\xcf\xb9\ \x3e\x5f\x28\x9c\xc7\xd9\xf1\x11\x8d\x82\x17\xce\x61\x53\x24\xc4\ \x18\x74\x29\xe3\x11\xf5\x78\xb4\xe9\x83\x7e\xc6\x27\x66\x38\xa0\ \x4e\xdb\xaf\x84\xf8\x84\x8b\x1b\x73\x23\x2d\x42\x9f\x8a\x55\xe7\ \x63\x04\x70\x3c\x0e\x20\x35\x72\x90\x24\x2e\xf2\x80\x55\x2b\xa8\ \x03\x99\xc2\x0b\x16\xb4\x5d\x6c\xdb\x9c\xd0\x2c\x40\x30\x80\x30\ \x8c\x6a\x32\xa6\x8d\x1e\xfc\x4e\xc4\xba\x7a\xe1\xb8\x3a\xef\xb8\ \x7a\xae\x6d\x68\x1d\x21\xb6\x43\x3d\x3f\x0c\xbe\xdb\xea\xb4\xdb\ \xaa\x6e\x74\x9a\xd0\xdf\xa7\x0e\x5d\xe5\xe0\x9d\x56\x42\x36\x25\ \x54\x24\xb9\x03\x04\xb5\x54\xaa\x67\x06\x06\x58\xc5\x00\x51\xc4\ \x94\x9c\x02\x4a\xde\xb2\x59\x92\xcc\x28\x31\x07\x9b\x7f\x3f\x26\ \x4e\xbd\x0d\xee\x1d\x51\x4f\xe6\x03\x49\xb4\x1d\xfd\x94\x3a\x0e\ \xa9\xf7\x75\xe9\xd8\x93\x6e\x4b\xba\xf1\x5c\x11\xba\x92\x32\xf0\ \x2e\xb5\x11\xe7\xd4\xf1\x2b\x89\xd4\x76\x44\x59\xf5\x8d\x48\x52\ \x0e\x00\x48\x1a\xc0\x61\x89\x3a\x0b\xa9\xc4\xc1\x00\x14\x46\xda\ \x23\x44\x41\xb3\x60\x82\x4a\xac\x9a\x1f\x78\xbd\xcd\xd8\x74\x82\ \xc6\x3e\xf5\x82\xee\xdb\xbd\x4b\x5d\xeb\x09\xf5\xf7\xb3\x1e\x31\ \x13\x9c\x70\x5b\xcf\x8d\xf3\x8d\xd0\xfd\x5d\x8c\xf0\x6e\xf5\xff\ \x59\xf5\xfc\xb7\x63\x55\x75\xb2\xd8\xb3\x1c\x30\xc6\x69\x04\x68\ \xf3\x23\xdb\xae\x27\xe1\x68\xc8\xcc\xc9\x90\xe2\xc1\xef\xe5\x7c\ \xfb\x91\x48\x35\x9d\x71\xe5\x25\x61\xec\x6b\xda\xce\x7b\xd5\x7b\ \xdb\xd5\x39\xda\x9e\x1e\x01\xdf\x75\x55\x73\xdb\xcc\x8d\xe7\x0b\ \xa1\xcf\xef\xf3\xdf\x51\x34\x70\x46\x3d\xbe\x3f\x94\xab\x41\x36\ \x6a\x33\xa5\x22\x31\x69\xa3\x5c\x81\x02\x88\x06\x97\x98\x8c\xc3\ \xac\x6d\x4e\x52\x89\x67\xc9\x55\x60\x9e\x2e\xd5\xc6\x22\x65\x43\ \xe3\xa4\xa7\x6e\x6b\x50\x8c\x60\xa7\x9a\xa3\xb2\xa5\x71\xbb\x7a\ \x4f\xc7\x77\x6b\x06\x58\x5d\x70\x84\x9d\x1b\x6e\x9c\x97\x84\xee\ \xd3\xc0\x9f\xa9\xff\xcb\xea\xf1\x2f\x40\xaa\x50\x63\x0b\x90\x09\ \x75\x70\x01\xc1\xee\x95\x8a\x1d\x32\x7e\x76\xb3\xbe\x98\x15\x3c\ \x00\x8b\x76\xe0\x8d\x7a\x93\x68\x8f\xab\xeb\x6d\x6f\xaa\xda\xda\ \x6d\xb5\x53\x7d\x40\x3f\xea\xf7\x2a\x6e\xdb\xb8\xf1\xc2\x27\x74\ \x9f\xee\x3e\xac\xfe\xd7\x76\xe6\x27\xc0\x07\xea\xa2\x12\x1d\x31\ \x01\x02\x2f\xc4\xc3\x4b\xaa\x7b\x88\xe8\x89\x67\x1e\x41\x95\xdc\ \x16\x0a\x8b\x5e\xa4\xd8\x88\x92\xcc\x5a\xcd\xd6\xea\xb6\x56\xbd\ \xf7\xa8\x6b\x2a\x82\xf6\x50\xee\xba\x8b\x16\x73\xe3\xc7\x9b\xd0\ \xfd\xf1\x59\xd0\xa1\x95\x08\x1f\x57\xf4\x30\x24\x4b\x4c\x1b\x30\ \x27\xb8\xae\x6c\x95\x58\xe7\xe3\xdf\x13\x55\x3b\xf1\x2e\x30\xea\ \x33\x25\x1d\x48\xa2\xdd\x56\xa8\x09\xfb\x80\xfa\x4e\xfd\xf7\x11\ \x70\xd4\xec\x86\x23\xf4\xd8\xf1\x6f\x8a\x4c\xde\xa8\x68\xeb\x9f\ \xd5\xf3\x65\xe1\xc0\x11\x34\x02\x49\xb8\x0a\xab\x31\x89\x1d\x91\ \x92\x4b\x28\x54\x91\xf1\xde\xd7\x52\x58\xa7\x4b\x1e\x56\x6f\x3e\ \xe3\x13\xb5\x97\x9c\x71\xb8\x79\x34\xdc\xed\x76\xc3\x11\xfa\xe2\ \xc7\x77\x14\x9d\xdd\xad\x1e\x75\x9d\xaf\x4d\xb2\x6d\x6f\x21\x6e\ \x64\xa4\x3a\x81\x94\xe1\x35\xa1\xfe\xd4\x29\x94\x5a\x1a\xef\xf4\ \x08\x9a\xbc\xe0\x92\xa3\xea\x1a\xc7\xd4\x7b\xae\xc8\x81\x1b\x6e\ \x74\x80\xd0\xf5\x78\x54\x11\xd8\xeb\xd5\xe3\x67\xd4\x71\x89\x9c\ \xca\x86\x31\xaa\x76\xc0\x6e\x47\x9c\x06\x3f\xa8\x64\xaf\xa7\x66\ \xfb\xf5\xc5\xd4\xa1\x88\x19\x50\xe3\x03\x33\xee\xf6\xb9\xe1\xc6\ \xb9\x25\x74\x3d\x74\x84\xd7\x2b\x15\x9d\xfe\x8b\xb2\xa3\xaf\x89\ \xef\xc8\xd1\xb2\xdb\x75\x91\x03\xad\x6e\xeb\xd0\xcf\xdd\xbe\x74\ \xf6\xd4\x6e\x4d\xe4\x63\x8a\xc8\xa7\xdd\x6d\x72\xc3\x8d\xf3\x87\ \xd0\xf5\xd0\xa1\x9d\x3f\xa1\x8e\x4f\x2a\x1a\x7e\xb9\x21\xd4\x15\ \xc1\xd2\x09\xaf\xda\x27\xd1\x6e\x25\xa1\x75\xa6\x95\xee\xc0\xb1\ \x4b\x9d\x37\xa6\x88\xdb\x65\x5c\xb9\xe1\xc6\xf3\x84\xd0\xf5\xd0\ \x99\x56\x3f\x59\xc8\xe2\x1f\x93\x5f\x14\x50\xa3\xdc\x7b\xbc\xbc\ \x68\x8d\x7e\xfb\x75\xc7\xdc\x70\xc3\x8d\x73\x38\x90\x5c\x4f\x69\ \x37\xdc\x78\xc1\x8f\x8c\x5b\x02\x37\xdc\x70\x84\xee\x86\x1b\x6e\ \x38\x42\x77\xc3\x0d\x37\x1c\xa1\xbb\xe1\x86\x1b\x8e\xd0\xdd\x70\ \xc3\x0d\x47\xe8\x6e\xb8\xe1\x86\x23\x74\x37\xdc\x70\xc3\x11\xba\ \x1b\x6e\xb8\xe1\x08\xdd\x0d\x37\x1c\xa1\xbb\xe1\x86\x1b\x8e\xd0\ \xdd\x70\xc3\x0d\x47\xe8\x6e\xb8\xe1\x86\x23\x74\x37\xdc\x70\xc3\ \x11\xba\x1b\x6e\xb8\xe1\x08\xdd\x0d\x37\xdc\x70\x84\xee\x86\x1b\ \x6e\x38\x42\x77\xc3\x0d\x47\xe8\x6e\xb8\xe1\x86\x23\x74\x37\xdc\ \x70\xc3\x11\xba\x1b\x6e\xb8\xe1\x08\xdd\x0d\x37\xdc\x70\x84\xee\ \x86\x1b\x6e\x38\x42\x77\xc3\x0d\x37\x1c\xa1\xbb\xe1\x86\x1b\x8e\ \xd0\xdd\x70\xc3\x11\xba\x1b\x6e\xb8\xe1\x08\xdd\x0d\x37\xdc\x70\ \x84\xee\x86\x1b\x6e\x38\x42\x77\xc3\x0d\x37\x1c\xa1\xbb\xe1\x86\ \x1b\x8e\xd0\xdd\x70\xc3\x0d\x47\xe8\x6e\xb8\xe1\x86\x23\x74\x37\ \xdc\x70\xc3\x11\xba\x1b\x6e\x38\x42\x77\xc3\x0d\x37\x1c\xa1\xbb\ \xe1\x86\x1b\xcf\xab\xf1\xff\x04\x18\x00\x0f\x62\x62\xc5\x0e\x9e\ \x8d\xff\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x08\xa9\ \x00\ \x00\x1d\x22\x78\x9c\xc5\x58\x59\x6f\xdb\x48\x12\x7e\xcf\xaf\x20\ \x94\x97\x04\x2b\x51\x7d\x1f\x86\xe5\x41\xd6\x83\x19\xcc\x42\xb3\ \x0b\x24\x13\xec\x33\x4d\xb5\x6c\x4e\x64\x52\x43\x52\xb1\x95\x5f\ \xbf\x55\xdd\x3c\x75\x38\x76\xb2\x83\x18\x48\xc4\xee\xae\xf3\xab\ \xea\xea\xea\xbe\xfc\xe9\xf1\x7e\x13\x7d\x76\x65\x95\x15\xf9\x62\ \x42\x63\x32\x89\x5c\x9e\x16\xab\x2c\xbf\x5d\x4c\x3e\xfe\xf1\xcb\ \xcc\x4c\xa2\xaa\x4e\xf2\x55\xb2\x29\x72\xb7\x98\xe4\xc5\xe4\xa7\ \xab\x57\x97\xd5\xe7\xdb\x08\x38\xf3\xea\x62\x95\x2e\x26\x77\x75\ \xbd\xbd\x98\xcf\xb7\xbb\x72\x13\x17\xe5\xed\x7c\x95\xce\xdd\xc6\ \xdd\xbb\xbc\xae\xe6\x34\xa6\xf3\x49\x43\x9b\xf6\xb4\x69\xe9\x92\ \x3a\xfb\xec\xd2\xe2\xfe\xbe\xc8\x2b\xcf\x96\x57\xaf\x5b\xca\x72\ \xb5\xee\x48\x1f\x1e\x1e\xe2\x07\xee\x29\xa8\xb5\x76\x4e\xd8\x9c\ \xb1\x19\x50\xcc\xaa\x7d\x5e\x27\x8f\xb3\x01\x1f\xd8\x75\x8a\x8f\ \x11\x42\xe6\xb0\xd6\x90\x3d\x83\xe4\xe2\x71\x93\xe5\x9f\xce\xda\ \xe0\x57\x27\xd1\x43\xb6\xaa\xef\x16\x13\x61\xb6\x8f\x93\xe8\xce\ \x65\xb7\x77\x75\x3b\xca\x56\x8b\x09\x88\xa3\x9c\xa8\xc9\xd5\xab\ \x28\xba\x5c\xb9\x75\xe5\x67\xf1\x03\xa6\x8d\x9f\x86\x05\x10\xe5\ \x92\xf2\xd7\x32\x59\x65\x80\x98\x27\x19\x4f\x09\x62\x78\x43\x0c\ \xe4\x55\x5d\x6c\x83\x74\xf8\x80\x25\x39\x89\x8a\xf5\xba\x72\xa0\ \x99\x60\xac\x8a\xed\x2c\x2d\x36\x45\xb9\x98\xbc\x5e\xfb\xbf\x66\ \xb2\xd8\x26\x69\x56\xef\x91\x6a\x3e\x16\xd6\xb1\xc7\x5a\x4e\x86\ \xa2\xed\xb7\xc9\x1b\x48\xd0\xbd\x71\xf4\x59\xc2\x68\x2b\xec\x72\ \x3e\x06\xe1\xf9\x60\x71\x76\x16\x2c\x2e\x9e\x04\x4b\xa7\xec\xc8\ \xb9\x58\x71\xc3\xac\x36\xea\x3c\x6a\xd2\x72\x2b\x28\xb7\x43\xec\ \xb8\x3a\x14\x9f\x26\x6b\xee\x8e\xc5\x53\xc3\x85\x51\x4c\x9c\x07\ \x91\x9b\x81\xd1\xb1\xe1\x46\x12\x29\x8f\xd0\x3c\x23\x5e\x12\x21\ \x8d\xa6\xfa\xbc\x78\x41\x9e\x88\xd1\x49\xa9\xff\x87\x18\x31\x75\ \x36\x46\xcc\x3c\x19\x23\x9b\xaa\xb3\xf6\x9c\x08\x8d\xa0\x0a\xfe\ \x46\xa1\x11\xec\x58\x2a\x33\xe9\x57\xa5\x0e\x22\xf2\x14\x64\x6b\ \x97\xe0\x9e\xfc\x2e\xc8\x7c\x79\xb9\xb8\x2b\x1d\x54\xc1\xd7\x27\ \xb0\x3b\x81\x29\xa7\x0a\x80\xbb\x6d\x46\x1f\xf3\xac\x86\x32\xb7\ \xab\x5c\xf9\x01\x6c\x70\xff\xc9\x3f\x56\x10\xc7\x47\xba\x98\xcc\ \x98\x89\xad\x32\x56\x80\x91\x7b\x3f\x96\x31\x67\xca\x50\x18\x3f\ \x32\x18\x73\x1d\x53\xab\x2c\x48\xdb\xe3\xd0\xc6\x52\x5a\x22\x49\ \xb7\x01\x2e\x51\x47\xb2\x79\x9e\xb1\xb0\x19\xbd\xb1\x63\x1e\x70\ \x02\x20\x4c\x1f\x51\x1b\x8f\x25\xb5\x44\x73\x18\xef\xd1\x1a\x16\ \x53\xca\x61\xc7\x4d\xa2\xf5\xc1\xfa\xfa\x60\x1d\xe0\x06\xe3\xbe\ \xea\x74\xbb\xfc\x47\x99\xe4\xd5\xba\x28\xef\x17\x93\xfb\xa4\x2e\ \xb3\xc7\x37\x24\x16\x46\x6b\x6e\xa7\x34\x66\x96\x81\x51\xd3\x19\ \x1c\x57\x00\xb0\x9e\xc2\x92\xd5\x4c\xc0\x8c\xa0\x31\xd2\xf0\x29\ \x67\xb1\xa0\xc2\xb2\xb7\xdf\x04\x04\x94\xf0\x93\x40\x18\x1a\x80\ \x60\x3c\xb6\xf8\x17\x60\x80\x11\x87\x88\x00\xe8\x1e\x85\x7e\x71\ \x3d\x5e\x04\x08\xa8\x8d\xa9\xa0\x16\xe5\x9c\xf7\x14\x0e\x76\xa2\ \x34\xa1\x53\x16\x33\x2e\x21\xdc\x6e\x46\xd5\x74\x86\x23\x4d\xa5\ \x1f\x20\x89\x96\x0c\x3c\x86\xa2\xa4\xc0\x2e\x85\x20\x30\x48\x04\ \xfa\xf6\x6b\x18\x7b\x40\x2e\xe7\x78\xb2\xe1\x17\x0e\xee\x5d\x9d\ \xac\x92\x3a\xf1\x4e\xb7\x03\xca\x29\x6d\x8f\x3d\x38\xc0\x2f\xde\ \xff\xfc\x4b\xb7\xc7\xd2\xf4\xe2\xbf\x45\xf9\x29\xc2\xf9\xe4\xa6\ \xd8\xc1\xde\xea\x6a\x04\x1e\x9f\xe9\x05\x7a\x94\xd4\x57\xd9\x7d\ \x72\xeb\xf0\xa8\xfe\x07\x9c\xd4\xa0\xb4\x5b\x18\x11\xd7\xfb\xad\ \xf3\xb2\x4a\x57\x15\xbb\x32\x75\x27\xdb\x94\x55\x7a\x9f\x21\xe5\ \xfc\x43\x9d\x6d\x36\xbf\xa1\xe4\x7e\xdb\x37\x82\xb2\x7a\xe3\xae\ \x1e\xa0\x5d\xb9\x73\xe5\x2c\xdd\x40\x54\xbd\xd2\x30\x3f\x22\x05\ \x17\xdd\xd5\xbf\x92\x7c\x97\x94\xfb\x08\x1a\x0a\xe5\x09\xfd\xec\ \x88\xce\x37\x3f\x45\xd9\x4f\x06\xf7\xdf\xdd\x76\x05\xe1\xd8\x80\ \xf7\xfb\x24\x8f\xae\x8b\xcd\x26\x73\x65\xf4\x66\x5b\xb9\xdd\xaa\ \x78\x7b\xca\x10\x0c\xc4\xb1\x30\x4f\x79\xa4\x17\xc5\x6f\x77\x37\ \x9b\xac\x02\xdf\x5e\x64\xce\xa0\x2f\x82\xee\xf0\xb6\x98\x6d\xcb\ \xe2\x4f\x97\xd6\x08\xec\x0b\xad\x3a\x61\x00\xea\x09\x51\x1b\x2a\ \x0a\x4e\x43\x73\xea\x3a\x2d\x0d\xd1\x98\x71\x77\x83\x96\x8c\x74\ \x63\x22\xfc\x33\xb9\x3d\xf0\x06\x67\x37\x59\x1b\xdb\xcb\x79\x33\ \x3e\x49\x94\x6c\xb7\x1b\x57\x3f\x4d\x93\x17\x75\xb6\xce\x52\x68\ \x6c\x8b\xfc\x14\x65\x98\x1b\xd9\x11\xbc\x38\xb4\x18\xe1\xdf\x64\ \xa9\xcb\xab\x33\x39\x7c\xaa\x7d\x6e\x18\xaa\xf9\xcd\x7e\x56\x25\ \x73\x16\x93\xf9\x61\x2e\xa7\x45\x0e\xe5\xe0\x66\xf7\xd2\xe4\xfb\ \x35\x29\x4b\x57\xd7\xd1\xd2\x7d\x80\x1d\xf2\xd2\xac\x3b\x56\xea\ \x69\x71\xb7\x0f\x77\xff\x72\xe0\x70\x53\x00\x5e\xe8\xed\x18\xc0\ \xad\x2b\x61\x73\x57\xa7\x01\x7c\x70\x37\x71\x3b\xe9\xe5\xa5\xe9\ \xfc\xbd\x83\x24\x5e\xed\x52\x0c\xdf\x08\xb9\x6f\x11\xf6\x73\x56\ \x05\xaf\x4f\x08\x2b\xdd\x5f\xbb\x0c\x18\x9e\x2f\xed\xdf\x90\x59\ \xa9\xfb\x7e\x39\xef\xea\xb3\x46\xbd\xdc\x43\x57\x66\x9f\x7d\x5c\ \x30\x92\xd5\xf7\x1b\xf7\xe1\x2e\x29\xdd\xbb\x4d\xf6\x69\xe0\xa8\ \xcf\x94\x26\x33\xda\x0e\x6a\x70\x72\x5c\xce\xdb\xa3\xc5\x8f\x6e\ \x43\x63\x94\xec\x5d\xd9\x9d\x33\xdd\x66\x83\xd5\x41\x63\xac\x87\ \xd9\xb2\x85\x02\x10\x01\xe7\xef\x11\x13\x11\x8b\x65\xb4\x8c\x18\ \x8d\x15\x93\x11\x1c\xae\x46\xcb\xe8\x3a\x82\xbe\x83\x5b\x0b\x37\ \x08\x98\x22\x0a\xda\x7d\x6a\x22\x38\x88\xa9\xa5\x82\xa8\xc8\x22\ \xa3\x45\x32\x11\x1b\xb8\x93\x59\x1c\x41\x63\xa5\x08\xb1\x4a\x75\ \x2c\x3a\x62\x2a\xe6\xba\x13\xbb\x6c\xf5\x7d\x89\x7e\x8f\x4c\x6c\ \x28\x68\x34\xb1\xf6\xbf\xcb\x88\xd2\xd8\x08\xa4\xa6\x32\x66\x8d\ \x19\x94\x41\x37\xe2\xcd\xa0\xd0\x13\x30\x23\x95\x1d\x7e\xf5\xab\ \x2d\x4b\x27\x64\x79\xa8\x00\x75\x72\xdb\x90\xf5\x5a\xa1\xcd\x09\ \x9f\x1d\xe7\x75\xc4\x45\x4c\x34\x15\x9c\x0e\x34\x70\xd0\xc0\xbc\ \x77\xbd\x7e\xae\x62\x2a\x11\xb6\x4e\xfd\xf2\x58\x05\xea\x6d\xfc\ \x07\x90\xe1\xf2\x14\x80\x00\x14\xb0\xcd\x51\x81\xab\x25\x00\xb8\ \x1a\x1b\x10\x43\xcd\xb9\xe6\x88\xab\xd4\x56\x32\x8f\x7a\xac\xe1\ \x72\x46\x79\x88\xc0\x35\xfe\x40\x50\x0c\x09\xb1\x23\xd0\xc7\x18\ \x69\x7c\xf0\xb4\x96\x9a\x1e\x29\xf6\x20\x34\xc0\x34\x21\xbf\xc6\ \x09\xcb\xa5\x51\x66\x10\x75\x6e\x07\xe1\xe6\x8d\x36\xff\xdb\x06\ \x7c\xc0\xd5\x05\xbe\x13\x1d\xc2\xbe\x8c\x84\x44\x3f\x05\xe2\x32\ \xd6\x8a\x86\x74\x88\x77\x31\xe8\x82\xc6\xbb\x8c\xe9\xa0\xed\xc0\ \xbe\x1e\x46\xa0\x8f\x4a\x1f\xa9\x3e\x7a\x47\x0a\xbc\xff\xad\xa0\ \x6e\xf6\x3a\xc8\x01\x64\xad\xe7\x96\x96\x29\xff\x61\xb4\x82\x24\ \x86\x45\x6a\x85\xb6\x16\x39\x82\x79\x20\x82\x8d\xa2\xdd\x1b\x7c\ \x2c\x1e\x95\x36\x6e\xb7\x28\xf8\x9d\xe0\xc1\x59\xb6\x60\xb5\x4b\ \xd7\x63\x3c\x5b\x8c\x7b\xdc\x7d\x30\xb8\xdf\x7d\xa3\x08\xf5\xb1\ \xeb\xb9\xc6\x5a\xbf\x44\xd0\x51\x43\xe3\xe7\xaf\xba\xce\x8a\x75\ \x18\x0e\xef\x6d\x70\x91\x2b\x8b\x4f\x6e\x74\x19\xc6\x89\x59\xf3\ \xf6\x03\x95\x04\x72\x92\x19\x2b\xbb\x15\x6c\xfd\xd3\x64\x0b\xb7\ \xc5\xbf\xa0\x13\x74\xa3\xf9\x3f\x8b\x2c\x87\x7e\x38\xab\x5d\xd9\ \xcd\xfb\xd1\x26\x83\x9f\xc5\x44\x74\xb3\xab\xa4\x82\x7a\x58\x26\ \x7b\x7c\x74\xcb\x7b\x29\xa7\x2e\xa8\x87\x25\x0c\x82\xe7\x81\x64\ \xb1\x92\xed\x4e\x08\x48\xf2\x98\x58\x03\x7f\x38\xc5\x38\x15\x46\ \xe1\x9c\x14\x1a\x82\x35\xaa\x62\x42\xb2\x76\x5b\xc5\x96\x50\x4a\ \xd9\x90\x45\x36\xdb\xb2\x11\xbc\xec\x94\xfa\x34\x26\x6d\x05\xc1\ \x17\x25\x4c\x59\xdc\xdc\x54\xc4\x61\x23\x43\xb2\x42\x3a\x4a\x6e\ \xf0\x4b\x59\x7c\x67\xc2\x2f\xb8\x6d\x11\xe2\xcb\x1a\xe1\x46\x0b\ \xcf\x20\xbc\x74\x60\x17\x4d\x59\x38\x10\xed\xb3\x57\xc7\x03\x55\ \x70\x5d\x1c\xb1\xf8\xda\xc5\x89\x50\x58\x0a\xbd\x68\x1a\x72\xda\ \x2a\x6a\x28\x0d\x26\xc0\x85\x48\x62\x52\x4b\xee\x45\x8b\x66\xaf\ \x0e\x25\x87\xa2\xe5\xcd\x41\x54\xbd\xcf\xe0\x70\xd8\xc1\xc3\xb2\ \x15\x48\x00\x9f\x90\xba\x88\x99\x80\x2b\x94\xcf\x57\x43\xa8\x08\ \x67\x45\x2c\x04\x23\xb0\x21\x87\x55\x4b\x72\xe5\x8f\x12\xe0\xa0\ \x4c\x73\x2f\x97\xe0\x16\x36\x07\x9a\x9b\x9a\xe5\xeb\x57\x17\xe2\ \x50\xb5\xb4\x32\x92\x0e\xa2\x1c\xaa\x56\x13\xde\x71\xd5\x6a\x02\ \x3c\xe0\xea\x02\xdd\x09\x6f\xc3\x0c\x75\x0b\xf6\x6e\xa8\x9c\x4d\ \xed\x1a\x6b\xf7\x26\xb5\x00\xe2\x95\xdd\x76\x07\x87\x95\x86\x59\ \x8e\x5f\x0c\x8a\xb6\x08\xf1\xb0\xd6\xc8\xb0\xa8\xb9\xe2\x6d\xd4\ \x3a\x09\x2d\xf6\xe1\xff\xe5\x09\xd1\x3e\xcf\x30\xad\x1a\xd6\x41\ \x6a\x20\x53\x5b\x2b\x43\x28\x91\x3d\x24\x9e\x26\x60\x0b\xf3\x9a\ \xa1\x20\x98\x90\x6e\x70\x34\x53\x5f\xde\xa0\xe0\x11\x28\x12\x43\ \xb9\xbe\x54\xb5\x5e\xb6\x6e\x87\x62\xd5\x22\xb2\xec\x71\x6a\x09\ \xae\x0f\xc0\xec\x00\x6e\x41\x1f\x95\xac\x41\x78\xfa\xc0\xf5\x5c\ \x87\xda\xfb\xa2\x15\xea\xc2\xd9\x8a\x05\xf7\xdc\x37\xaf\x8f\xdf\ \x1b\xde\x1e\x97\x30\x23\x94\x50\x90\xa7\x3f\xb0\x84\x5d\xce\x07\ \x8d\xda\xa0\xae\x8d\xee\x6c\xa1\xca\xd5\x27\x1e\x72\xb4\xc6\x33\ \x1f\xdf\x6f\x88\xa2\x70\x14\x4e\x9b\x0f\x7c\xc9\x69\xd6\x94\x8e\ \x05\xb6\x0d\x53\x88\x2c\x34\x63\x4c\x00\x10\xbe\x60\xe2\x9b\x92\ \x8c\x66\x54\xc3\xff\xef\x60\xaf\x49\xff\x8f\x44\x50\x1d\xa2\x08\ \xdf\x7f\xe4\xf4\xdc\xe2\x80\xf3\x4b\x7f\x94\xac\x9d\x93\xe2\x9b\ \x8e\x12\x69\x2d\xa5\xda\xfc\xd0\xa3\xe4\x3c\xcc\x34\x66\x50\xb7\ \xa4\x0e\x4f\x44\x5a\x13\x44\x97\x51\xa5\x04\xc3\x27\x34\x49\x8d\ \x10\x08\xb3\xa2\x4a\x98\xa9\x20\xb1\x64\xfa\x6f\x02\xf9\x64\x6e\ \x33\xf2\xf6\x09\xd4\x47\xae\x37\x90\x43\x96\x50\x38\xbf\x8d\xf8\ \xb1\xa7\xf7\x93\x99\x4d\xa1\xd9\xa5\x08\x39\x14\x04\x2e\xec\x34\ \x7c\xc8\x69\xb3\x04\x89\x0d\x8d\x19\x1c\x9d\x62\x0a\x07\x12\x1c\ \x66\xe2\xef\x4a\xec\xe7\x94\x9b\xe3\x47\xe9\x53\xe5\x86\x29\x82\ \x0d\xe4\x8f\xed\x98\x06\x05\xa7\xfd\x6c\x3e\xfc\xcf\x25\x3e\x31\ \x5e\xbd\xfa\x1f\x0e\x0e\xd3\xe3\ \x00\x00\x02\x3b\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x5e\x00\x00\x00\x18\x08\x04\x00\x00\x00\xd9\xda\x82\x94\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x02\x62\x4b\x47\x44\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09\x70\ \x48\x59\x73\x00\x00\x0f\x12\x00\x00\x0f\x12\x01\x21\x9b\xf2\x33\ \x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x03\x12\x16\x2e\x21\x1b\ \x90\xc4\x33\x00\x00\x00\x19\x74\x45\x58\x74\x43\x6f\x6d\x6d\x65\ \x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\ \x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x01\x9a\x49\x44\x41\x54\ \x58\xc3\xd5\xd7\xbd\x6e\xd4\x50\x10\x05\xe0\x6f\xee\xde\xec\x26\ \xab\x68\x05\xa1\xe1\x4d\x22\xc4\x1b\x90\x16\xf1\x98\xa9\x68\x42\ \x81\x68\x79\x01\x7a\x24\x0a\x42\xc1\xcf\x06\x6d\xb2\x7f\xbe\x14\ \xeb\xfd\xb3\x12\x44\x12\x0a\x7b\x2a\x5b\x77\x46\x3e\xe7\xf8\x8c\ \x67\x1c\x97\x8a\x2b\x3f\xfd\x36\x53\x29\xba\x10\x3d\x7d\x27\x9e\ \xc8\xfc\x30\x2b\x23\xcf\xc5\xce\x71\x5b\x49\x04\x8a\xb1\x2f\xbe\ \x06\xf9\x46\x55\x9e\x39\xf7\xc1\x75\x03\x74\x1b\x09\x24\x1c\x79\ \xe9\x8d\x4f\xe5\x7b\xe4\x99\x63\xe7\xde\x9a\x5a\xaa\x6a\x6e\xed\ \x8e\x89\x0b\x9c\xf9\x2c\xd3\xf7\xce\xc4\xd4\xb2\xf5\xa6\x59\x45\ \xb6\x70\xe1\xb5\x4a\x86\x2b\x53\x4b\x8b\x96\x82\x6d\x4a\xb9\x40\ \x36\x97\x24\x58\xb6\x18\x7a\xd3\xc8\x21\x2c\xcd\xeb\x77\xd0\x7a\ \x9b\xdc\xdd\x87\x49\x47\x23\xba\x0c\xbe\xb6\x4d\x18\x28\xb5\x8b\ \xba\x11\x07\x0e\xb6\x9e\x1f\xae\x2f\x3a\xa3\xf8\xa1\x58\x63\xee\ \xab\x5a\xfc\xb5\xb9\x0d\x7c\x7f\x6b\x9b\xbe\xd2\x29\xf3\x67\x03\ \x69\xad\x7c\xbb\x3b\xb7\xfa\x5b\xc3\x92\x44\x0d\x3e\x3a\x41\x20\ \x76\xc1\x93\x76\x06\x55\xec\x0d\xe6\xe6\xa2\xfc\xaf\xa7\xf7\xab\ \xde\xbd\x6b\xd6\xf5\x14\x49\xb5\x47\x21\xb6\x0d\x1b\x9b\xf4\xd4\ \x5a\xd5\x7b\xb5\xbc\x55\xd3\x36\xab\x4d\xad\x39\x76\xe3\x96\xb5\ \xe8\xa1\xb6\x2a\xf7\xaa\x5d\x65\x97\x1a\xe8\x4a\xf5\x22\x36\x04\ \xd6\x28\x33\xc5\xd0\x78\x07\x76\xec\x3d\x26\x36\x05\x8f\xe9\x87\ \x78\x40\x76\x48\x8a\xa2\x92\xa8\x7f\x51\x43\x52\x09\x61\x20\xcb\ \xcc\x9d\x7a\x5f\xb3\xdc\x02\x8f\x47\xab\xfd\x3f\x96\xe1\xd8\x28\ \xbf\xab\x7f\xf2\xc2\xc4\xb1\xdc\x37\x77\x26\xfb\xe8\x57\x0b\xe0\ \xde\xb5\xcb\xaf\x80\x17\x2c\x9d\x38\xf5\xca\x37\x23\x71\x69\x4c\ \x39\xd2\xeb\xcc\x98\xaa\xcc\x4c\x88\xa7\x32\x23\x37\x71\xdd\xb1\ \x7d\x72\xe8\x10\x7f\x00\x8d\x5e\x7a\xab\x47\xd7\x46\x98\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x9c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x31\x00\x00\x00\x2c\x08\x06\x00\x00\x00\xcc\xd4\x50\x59\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\ \x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x08\x18\ \x02\x2f\x2b\xe1\x1c\xc6\xb5\x00\x00\x00\x19\x74\x45\x58\x74\x43\ \x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\ \x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x04\xf7\ \x49\x44\x41\x54\x68\xde\xd5\x9a\xbf\x6e\x1b\x47\x10\xc6\x7f\xb3\ \xb7\xa4\xe8\x08\x56\xd2\xda\x30\x14\x03\x2e\x92\x00\x2e\xdc\x06\ \x70\x5e\xc1\xcf\x92\x22\x6d\x9a\x3c\x5d\x6a\x37\x56\xe3\xc2\x08\ \xdc\x18\x10\x04\x39\x81\x4d\xde\xed\xce\xa4\xd8\xdd\xbb\xbd\xe3\ \x91\x92\x9c\xc0\xa4\x16\x58\xdc\x81\x77\xfb\xe7\x9b\xef\x9b\x99\ \x25\x87\x02\x2c\x00\x99\xe9\xa5\xd5\xf7\x87\x6a\x36\xb9\x1f\x75\ \x0f\x34\x80\xab\x3a\xd5\x55\x8e\x00\xc8\x2e\x00\x5a\xae\x1e\x58\ \xe6\x4d\xd7\x60\xa4\xba\x1e\x0b\x88\x7a\xe3\x06\xc4\xdc\x7b\x10\ \x3e\xcb\xaa\xa9\xba\x3b\x02\x59\x4d\x59\xd0\x6a\xf3\x11\x08\x40\ \xf0\xc0\x83\x0c\x64\x99\x81\xec\x92\xd8\x21\x41\xe8\xc4\xfa\x01\ \xe8\x80\x16\xe8\x3c\x70\x0a\xac\x80\x93\xdc\x97\x15\x90\xa6\x02\ \x70\x28\x10\x05\x48\x0d\xa0\xcd\x7d\x0d\xac\x0b\x88\x6f\x72\x7f\ \x90\x81\x2c\x72\x77\x07\xf4\x8d\xa9\x2f\x68\x05\x60\x93\x01\x7c\ \x02\xbc\x07\xce\x56\xab\x93\x57\xe7\xe7\xdf\xff\xfa\xec\xd9\x33\ \x4e\x4f\x4f\x71\xce\xa1\x9a\xc3\x94\xbb\xdd\x8a\x5a\xc9\xd7\x65\ \xac\x26\x69\xe5\x12\xee\x24\xbf\x22\x96\x9e\x95\x77\x98\x3c\x1b\ \x21\x11\x10\x19\xdb\xee\xe3\xc7\x8f\xbc\x7d\xfb\x96\x77\xef\xde\ \xfd\x16\x42\xb8\x90\xd5\xea\xe4\x8f\x97\x2f\x7f\xf9\xfd\xc9\x93\ \x27\x84\x10\xb8\xba\xba\x22\x84\x40\xd7\x75\x80\xc3\x39\x30\x33\ \xcc\xc6\xb3\x8b\x48\x9a\x5c\x6d\x0b\xc4\x6d\x36\x59\x3e\x2f\xe3\ \xea\xe7\x7e\x62\x39\x11\x41\xab\x35\xcf\xbe\xfb\x96\xb3\xb3\x33\ \x2e\x2e\x2e\x78\xf3\xe6\xcd\x9f\xf2\xe2\xc5\x0b\x7b\xfe\xfc\x39\ \x1f\x3e\x7c\xe0\xfa\xfa\x1a\xe7\x1c\x4d\x93\x5c\x21\xc6\x48\x23\ \x6e\x2f\x08\xef\x5c\xe6\x7a\x78\xde\x18\xa3\xcf\x8a\x25\xc5\x12\ \x23\x9a\x63\x85\x09\x68\x9e\x57\x2a\x20\x2e\xf3\xa7\x35\x23\xf9\ \x3d\xe7\x1c\x5d\xd7\xf1\xf0\xe1\x43\x1e\x3d\x7a\xc4\xeb\xd7\xaf\ \xf1\xe7\xe7\xe7\x5c\x5d\x5d\x71\x79\x79\xc9\x6a\xb5\x02\xa0\x6d\ \x5b\x16\x8b\x05\x22\xb2\xb5\x79\x26\x13\x87\x10\xb6\x40\x40\xb2\ \x9c\x99\x81\x93\x5e\x62\xa3\x50\x63\xd6\xb3\x51\x84\x5f\x40\xa8\ \xb3\x09\x0b\x86\x9a\x66\x43\x18\xce\x39\xae\xaf\xaf\x39\x39\x39\ \xe1\xe9\xd3\xa7\xf8\xd5\xf2\x01\xef\xdf\xff\x45\x23\x8e\xd8\x05\ \x54\x15\xef\x7d\xba\xb7\x80\xf4\x01\x6a\xbe\x39\xe7\xb7\x02\x7a\ \x24\x81\x57\x80\x68\xc9\x18\x92\x36\x99\x00\x74\x3d\x13\x66\x36\ \x62\x0a\x40\xd5\x7a\x90\x2e\x4b\x4b\xb3\x93\x8a\x08\x5d\x1b\x58\ \x2c\x16\x5c\x5e\x5e\xf2\xf8\xf1\x63\x7c\x8c\x91\xcd\xa6\xc3\xfb\ \x44\xd3\x62\xb1\x40\x55\xd9\xb4\x9f\x59\x2e\x97\x3d\xdd\xbb\xd9\ \xc8\xd4\xdb\x94\x09\x43\x35\xf1\x23\x22\x43\x78\xb3\x24\x97\x58\ \x31\x51\x83\x68\xb2\x4c\x4d\x2d\x8d\x51\x4d\x6c\xaa\xf5\xf1\xd1\ \xf9\x86\x68\xca\x66\xbd\xc1\xf9\x06\x6f\x66\xc4\x18\x71\x6e\xd0\ \x7e\x88\x83\x9c\x34\xea\x48\x93\x35\xcd\xa3\xe8\x64\x86\xe6\x8f\ \x1a\xe7\xd3\x5c\x0c\x41\x41\x44\xc0\x2c\x5b\x3b\x24\x00\x56\x18\ \xcc\x20\x45\x30\x03\x67\x0b\x2c\x56\x72\x8c\x69\x9c\x99\x21\x4e\ \x08\x99\xb2\xa6\x59\x24\x02\xba\x6e\x83\x59\xa4\x6d\x23\xd2\x38\ \x36\x5d\x9b\x37\xa5\x88\xd8\x60\x81\xca\x0f\x6a\x09\x98\x85\xd1\ \xb9\x44\x44\xe8\x24\xee\x3c\xab\x18\x10\xb2\xa5\x8b\x31\x8a\x7d\ \x0a\xab\x66\xeb\xc1\x50\x16\xab\xb1\x49\x8f\x25\xa8\x68\x88\x10\ \x3a\x7c\x08\x81\x18\x63\x5e\x70\xbc\xc1\x51\xe8\x9b\x58\xbe\x30\ \x53\xae\x03\x28\xdb\x1b\x0c\xea\xf0\x3a\x1d\xdb\xb3\xaa\xba\xc5\ \xf8\x9c\x12\x34\x46\x62\x8c\xc9\x27\x62\x8c\x19\xdd\xe0\x68\xfd\ \x35\xea\xd6\x22\xfb\x26\xbf\x55\x2a\xbe\x01\xc4\xbe\xf9\x8b\x91\ \x52\x42\x56\xba\x18\x13\x13\xaa\x9a\x7c\x42\x75\xcb\x9a\x22\x92\ \x68\xdc\xf6\xe8\xe2\x0c\x3b\x37\x72\xe3\x79\xa2\x32\xd8\x08\x80\ \x31\xbf\x66\x25\x2b\x55\xed\x43\x7c\x0f\xa2\x56\xf0\x54\xf7\x83\ \x76\xb7\x27\x16\xe3\x8b\x99\x98\x82\xef\xad\x7c\xc3\x11\x4d\x44\ \x50\x31\xa2\x46\xda\xd0\x25\x39\x95\xc1\xa6\x83\x65\x54\x93\x8c\ \xca\x75\xce\xda\x52\x39\xe8\x5d\x5a\x9d\xc9\xe7\x40\x14\x63\xee\ \xf2\x43\xe7\x1c\x5a\x22\xa9\xc6\xc1\xb1\xa7\x19\xb4\xde\xfc\x1c\ \xed\xfd\x02\x33\xec\xdc\xc5\xb1\xe7\x40\xd4\xc3\xe7\x7c\x43\x55\ \x53\x1e\x22\xcb\xa9\x6d\x5b\xba\xae\x4b\xe8\x18\x33\x51\x72\xc7\ \x2e\xbd\x8b\x48\x1f\xbf\xef\x02\xa2\x1c\x45\x76\x1d\x65\xc4\xd8\ \x62\xbf\x8e\x86\xe5\x04\x10\x4d\x59\xb7\x2d\x7e\xdd\x6e\x58\xb7\ \x1b\x9c\x73\xb3\xd6\xfe\x92\xe8\xf3\x35\x5a\x91\x7a\xf7\x79\x8d\ \x2b\xc8\xe6\xf4\x7e\xac\x6d\x2a\x41\x3f\x97\x44\x66\xb5\x7f\xa4\ \x4d\x55\x71\x25\xd1\xed\x43\x7b\xf4\x20\xea\x14\x7f\x5f\xda\x28\ \x11\x9b\x25\x26\x6e\x7a\xf9\x5e\x32\x71\xec\x9b\xaf\xa5\xae\xaa\ \x29\x3a\xdd\x27\xcb\xcf\x25\x41\x37\x77\xac\xa8\x93\xdc\xec\x79\ \xe9\x3f\x9c\x60\xff\x4f\x19\xf5\x3e\x71\x17\xe4\xf5\xf7\xdd\x7d\ \x99\xfc\x6b\x3b\xf9\x8d\x20\x9a\xa6\xe9\x8f\xbc\xfd\x97\xa7\x0c\ \xc8\x39\x77\x14\xd2\xf2\xb7\x41\x2a\x22\x34\x4d\xd3\x67\xf6\x72\ \xb6\x2a\x5f\x4e\x0e\xed\xdc\x37\x82\x88\x31\xf6\x00\x54\x75\xf4\ \xd3\x49\xf1\x9d\x43\xcb\xc9\x37\xe2\x68\x9a\x3d\xd6\x6c\x6a\x69\ \xb9\xa3\x8c\x54\xfe\x87\x9f\x7e\xe4\xbe\x37\x01\x7e\xae\x7e\xd6\ \x5f\x31\x14\x5b\xea\x6a\xd1\xa1\xeb\x13\x75\x95\xa8\xab\x6a\x13\ \x9f\x81\x4f\x1e\xf8\x3b\x3f\xd8\x30\x14\x58\x4a\x91\x45\x38\x6c\ \xdd\xce\x26\x60\xfa\x12\x17\x93\x22\xcb\x3f\x19\xc4\x9a\x71\xdd\ \xee\xd0\x2c\xec\x63\xa3\x30\xd2\x01\x1b\x9f\x29\x09\xd9\xfa\xd3\ \x2a\x2a\x07\x64\x61\xca\x46\xf9\x41\xbd\x00\x29\x95\xa3\xce\x67\ \x06\xba\x89\xf5\x8f\xa5\xfc\x3b\x27\x2b\x9d\xb2\xe2\x33\x80\xc8\ \x71\x16\xe2\xe7\x40\x14\x46\x7a\x66\x7c\xa6\xe4\x98\xff\x12\x31\ \x27\xab\xd1\xdf\x22\xfe\x05\x87\x94\x8c\x6a\x16\x44\xdd\xd8\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x09\xf6\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x2a\x08\x06\x00\x00\x00\x03\x06\x5d\xe2\ \x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ \xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\ \x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ \xd9\x0a\x0d\x01\x0d\x15\x98\x8e\xd7\xaa\x00\x00\x00\x19\x74\x45\ \x58\x74\x43\x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\ \x64\x20\x77\x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\ \x00\x09\x5e\x49\x44\x41\x54\x68\xde\x9d\x5a\xcb\x6e\x64\x49\x11\ \x3d\x11\x79\xab\xca\xed\xf6\x8c\xba\x57\xb4\x64\x46\xf4\x16\x50\ \xef\x50\x6f\x40\xf2\x7c\x00\x42\xc0\x07\xb0\x9d\x0f\xe0\x03\xe0\ \x03\x46\xac\xe1\x0f\xd8\xb2\x64\x56\xb3\x69\x66\x37\x4c\xaf\x5b\ \x6a\xc9\x12\xcd\x2c\x2c\x0f\x66\xdc\x6e\xbb\x5c\x99\x11\x2c\xf2\ \x66\xde\xc8\x57\x95\x85\x25\xcb\xae\xba\xb7\xf2\x66\x9e\x3c\x71\ \xe2\x44\x64\x11\xcc\xcf\xc7\x27\x1f\x7d\xe6\xbd\xff\xf3\x6a\xb5\ \xb2\x6f\x43\x55\xa1\xaa\x20\x72\xc5\x7b\x42\xf1\x7f\x82\x80\x68\ \x7e\x01\x01\xa5\xeb\x1a\xdf\x23\xa2\x7c\x5d\x55\xf3\x7b\x1a\x04\ \xcc\x6c\x9e\xc4\xc5\x7d\x5e\xe3\xb8\x4c\x6a\x3e\xa7\x79\x7c\x15\ \xea\x8e\x9d\x7e\xbc\x04\x10\x11\x1e\x6d\x8e\xb0\xdb\xed\x10\x42\ \x80\x5b\x4d\x5f\xae\x36\xeb\x3f\xad\x56\xab\x2f\x21\x7a\x9a\x66\ \x8d\xd5\x6a\xf5\xc7\x9f\xfe\xf8\x27\x7f\x38\x3b\x3b\xc3\xd3\xa7\ \x4f\x71\x74\x74\x54\x2c\xd6\x4e\x32\x83\x42\xe9\x9a\x80\x31\x9e\ \x48\x9a\x64\xfd\xbe\xc8\x02\xdc\x02\x60\x39\x7e\x5a\x34\x44\xcd\ \x3d\x25\x90\xf5\x66\xe5\x67\xba\x09\x44\x84\xbb\x0f\xb7\x58\xaf\ \xd7\xb8\xbc\xbc\xc4\x3f\x5f\x7f\x83\x7f\x7c\xf5\x15\x8e\x8f\x8f\ \xbf\x76\x8c\x9f\x11\x00\x9c\x9c\x9c\xfc\xfe\xc5\x8b\x17\x9f\xff\ \xf6\xd7\xbf\xc1\xc5\xc5\x05\xae\xae\xae\xb0\xff\x87\x67\x46\xb4\ \x0b\xb5\x93\x70\xcd\xe2\x4a\x70\xc2\x70\x11\xb4\x77\xfc\x11\x78\ \x76\x6c\x22\x42\x98\x5f\xae\xa7\x15\x42\x08\x38\x3e\x3e\xc6\xe9\ \x27\x3f\xc4\xab\x57\xaf\xf0\xf7\x2f\xbe\xc0\xc7\x1f\x3d\xfe\xdd\ \x04\x00\x9b\xcd\xe6\xf3\xb3\xb3\x33\x9c\x9f\x9f\xe3\xfa\xfa\x1a\ \xeb\xf5\x1a\x21\x84\xe1\xf2\x7b\xe8\xc7\xff\xb9\xd8\x69\x51\xdf\ \xfd\x7c\x9e\x30\xb9\xf9\xde\x30\x60\x5b\x0b\x7c\x1a\x3f\x31\x6f\ \x04\x2e\x11\x01\xec\x40\x0a\xdc\xee\x6e\xa1\xaa\xb8\xbb\xbb\xc3\ \xfb\xf7\xef\xf1\xf2\xe5\x4b\x7c\xf3\xfa\x35\xbe\xbb\xbc\xf8\xf9\ \x04\x00\x4f\x9e\x3c\xc1\x66\xb3\xc1\x7f\x76\xdf\xc5\xd8\xf3\xfe\ \x41\x8b\x6f\x43\x43\x21\x50\x7b\x73\x9f\x9a\x69\x92\xd0\x79\x31\ \x91\xe6\xcb\xc2\x30\x0c\x0d\x81\x02\x04\x28\x00\xd2\xfd\x80\x89\ \x78\x68\x10\x4c\xd3\x04\x52\x00\xec\x70\x73\x73\x8d\xdb\xdb\x1b\ \xfc\xe8\xf9\x27\xf8\xf6\xdf\xff\xfa\x6c\x02\x80\xf5\x7a\x9d\x63\ \xe4\xe4\xe4\x04\xde\xfb\x2c\x4e\xcb\x03\x38\x3e\x3e\x0b\x22\xe5\ \xbf\x60\x02\xb0\x4c\x5e\xe7\x9d\xa2\xc1\xce\xe6\xc5\xa9\x54\x0b\ \x2e\xc7\xcf\xda\x41\xc8\xe3\x13\x51\x16\x57\xd6\x31\x4b\x89\x08\ \xde\x7b\xac\xd7\x6b\xdc\xdf\xdf\x63\xe5\x1c\x76\xdb\x2d\x9c\x73\ \xf0\xde\x63\x9a\x26\x30\x33\x26\x00\xd8\x6e\xb7\x50\x55\x30\x33\ \x44\x04\x22\x52\xa8\x3f\x00\xf0\xbc\xc8\x7c\x0d\x01\x50\x86\x52\ \xdc\x09\x40\x21\x79\x91\x33\x10\x2a\x5d\xf6\xe4\x49\x9a\xd7\x11\ \x70\xc3\x02\x12\x48\x88\xe0\x26\xb0\xa5\xd8\x8c\xc8\x87\x7d\x00\ \xb3\x03\x76\x7e\x0b\x12\x85\xd7\x00\xe7\x18\x5b\x7f\x8f\xdd\x6e\ \x0b\x47\x40\x08\x21\x02\x30\x4d\x13\xbc\xf7\x10\x11\xec\x76\xbb\ \x39\x85\x98\x5d\x50\x81\x97\x5d\xdc\x01\x4d\x34\x8e\x60\xa5\x39\ \xe4\xd8\xa4\x22\x62\x1b\x20\x8b\xac\xc0\xcb\x8e\x7b\x1f\x9f\x97\ \xb2\x89\x0a\x21\x84\x00\x12\xcb\x82\x72\xa1\x82\x25\x0c\x7b\x00\ \xa8\x60\x61\x13\x00\xd9\x79\x88\x28\x54\x09\x22\x80\x73\x2e\x02\ \xa0\xaa\x08\x21\x94\xbb\x4f\xbc\x7c\x58\x05\x61\xde\xcd\x0c\xc0\ \x40\x7c\x96\xd4\x08\x28\x68\xa8\x1d\xf1\x6f\x79\x6d\xd1\x83\x32\ \xa5\x96\x29\xb7\x2b\x31\x5d\x6d\xb2\x9b\xa1\xaa\x79\x7d\x22\x4b\ \xe8\x4d\x00\x70\x71\x71\x81\x10\x42\x34\x0a\xce\xcd\x0f\x34\x88\ \xaa\x00\x4c\x25\x03\xa8\xbf\xbb\x76\xa7\x2c\x00\xbd\x2c\x20\x68\ \x73\x7b\x6f\xfc\x2c\x7e\xf5\x38\x8a\x03\x59\xa6\x15\xf0\xb4\xce\ \x04\xc2\x94\x73\xb2\x61\x80\x15\xb9\x39\xba\xa3\x66\xcf\x13\x2c\ \x28\xdf\xa4\x9e\xe5\x73\x41\xa4\xc9\xf1\x85\x4a\x43\xdb\xc5\x8a\ \x0e\x19\xd0\xe4\x7d\xd1\xff\x0b\x80\x86\x01\xc9\x58\x24\x9a\x64\ \x75\xc7\xe2\xf4\x12\x00\x90\x52\xa5\xeb\xb4\x95\x26\x95\xc0\xb2\ \x63\xd5\x74\xdd\x07\x40\x7d\x6f\x02\xc0\x02\xcf\x03\x86\xe5\x8d\ \xe1\xf6\xb9\x36\xcc\x0b\x00\x7a\x0c\x30\x1f\x85\xce\x0b\x87\x5d\ \x60\x4d\x5f\xa2\x4c\x55\x0b\x52\xcf\x0f\xd4\xa9\x34\x33\x49\xb4\ \xcb\x1a\xad\x3e\x0b\x00\x5a\xd4\x11\x9d\x4c\x13\x5a\xbf\x32\x64\ \x40\xba\x10\x42\x88\xe8\xaa\x42\x79\x29\x70\x32\xb5\x65\xd9\x71\ \x8b\x64\xad\x01\x3d\xfb\xfa\x10\x1f\xdf\x8b\xeb\x61\x16\x98\x9f\ \x3f\x62\x58\xef\x9a\x5d\x23\x11\x95\x00\x84\x10\xc0\x1c\xd5\x1f\ \x33\xf3\x95\x09\x44\x0a\x09\x91\x1d\x49\xa4\x46\x45\x8f\x8d\xd5\ \xde\xf5\xbd\x3b\xb6\x58\x88\xc2\xef\x5b\x00\x0a\xaf\x1f\x42\xc7\ \x8e\x1f\x06\xc0\x5e\x2f\x34\x60\x17\x3c\xc0\x04\xe6\x09\xca\x69\ \xc1\xd1\x77\x16\x82\xa7\x0c\x82\x03\x71\x00\xe9\x62\x4b\x54\xe6\ \x52\x78\xb0\x63\x29\xcf\x2f\xc5\x10\xcf\x52\x2e\xd0\xec\xea\xd8\ \xf8\x7e\x40\xa1\x40\x90\xd2\xfa\xcc\xe6\xa8\x57\x10\x51\x8c\x95\ \xac\x01\x16\xc4\xf4\x7f\xb2\xfa\x05\x03\xb2\xda\x6a\x72\x7b\xd2\ \xe4\xd6\x62\x31\x20\x40\x23\x00\xda\xa8\x3b\xba\x79\xdb\x9a\xa3\ \x79\xe0\xe8\x28\x21\x85\xab\x2b\x47\x5a\xd2\x5d\xcc\x06\x94\xbd\ \x42\x2a\xd8\x2c\x08\x45\x7d\xa0\xd4\x08\xb6\x15\xfa\x86\x01\xc9\ \x07\xa4\x1a\xdc\x0a\x54\x9d\x19\x14\x1e\xd0\x18\x12\xd2\x31\xa7\ \x4a\x83\x58\xb6\xa6\x07\x01\x20\xbb\x78\xa9\xee\xd7\x26\xdd\x49\ \xe5\x36\x9b\x30\x2a\xd8\x4a\xdd\x4d\x4c\x7a\x37\x14\xc1\x24\x00\ \xb5\xd2\x2f\x00\x98\xee\xcf\xfc\xc0\x1c\x06\x83\x1c\x6c\x29\xba\ \xa4\xc1\xb2\x93\x94\xa5\x1b\x80\xaa\x5f\xf4\x48\xca\xf1\x95\xc6\ \x06\x88\x0c\x00\x3c\x97\xdb\x76\x1d\xd6\x08\x35\x00\x58\x27\x68\ \x19\x10\x07\x77\x73\x36\x93\x32\xed\xcd\x13\x94\x5a\xb1\xb5\xaf\ \xf8\x05\x45\xd9\xb5\x3e\xc2\x54\x78\x99\xaa\x62\x9d\x26\xe5\xfc\ \x5e\x67\xa1\x3a\x04\xc4\x2f\x6c\x4b\x60\x7a\xef\xe1\xbd\xef\xa7\ \x41\xef\xfd\x0c\x00\x81\xe7\xca\x6f\x31\x2a\x5a\xee\x14\x09\x90\ \x1a\x1a\xb5\x23\xe3\x71\x93\xc2\xc6\x33\x72\x0c\xbb\x26\xee\x41\ \x82\xbc\xef\xa2\xf9\xe9\x4a\x04\x95\x7e\x1a\x6e\x00\x08\x6d\x36\ \x48\xbd\xc1\x83\x00\x40\x42\x15\x3f\x86\xf6\x3c\x3f\x80\x38\xa6\ \xc5\x6a\xb7\xc1\x64\xca\xe4\xb1\x08\x2e\x0b\xe0\x59\xf5\x93\xcf\ \xf6\xf3\xba\x29\x7f\x86\x2b\x81\x6d\xfc\x03\x51\x53\x81\xa6\x8d\ \xb0\xd7\xbd\xf7\x45\xb7\xab\x09\x81\x48\x3b\xca\xfd\xbc\x9e\x80\ \x59\x81\xaa\x55\x38\x8a\xdb\xd8\x94\x94\x61\xb5\xf4\x86\x96\x5f\ \xa3\x0b\xb9\xf4\x5e\xba\x48\xa8\xb2\x51\x0d\xc2\xe8\x9a\xb5\xc2\ \x5d\x1f\x40\x44\x98\xd8\xc1\x11\x83\x38\x5a\x5a\xaa\xbc\x76\x7c\ \xbd\xd0\x95\x44\x9a\xce\x91\x63\x67\x54\x7e\x01\x23\x87\x92\x2d\ \x51\x1d\xb5\xd4\x07\xa0\xe9\x19\x12\x8d\x59\xd2\x1a\x11\x01\x13\ \x61\x35\x3f\x23\x98\x86\x8b\xed\x20\xd9\x4d\x75\xce\x15\x69\x30\ \x85\x4e\x32\x51\x93\x5d\xa0\xbd\x99\x70\xf8\x67\x9a\xa6\x22\xbd\ \x58\xaf\xa0\xaa\x39\xa5\xf6\xac\xaf\xcd\x1c\xc3\xb6\x96\x73\x0b\ \x00\x33\xd8\x36\xac\x98\xf9\x41\x4d\x5b\x0b\x0c\x11\xe5\x31\x0b\ \x06\x24\x00\xd2\xa0\x5c\x87\x40\xaf\xf9\xc0\x5c\x16\x3d\x46\xe5\ \x7b\xb6\xd7\xfa\x88\xc4\x86\x51\xb9\x9c\x94\xdb\xce\xad\xae\x45\ \xf4\xc0\x2e\xa5\xc5\xf6\xc2\xa3\x11\xc1\x84\x68\xba\xd1\x1e\x74\ \xa4\x30\x6d\x52\x56\xe7\xb3\x75\xb1\xd4\x00\xf4\x00\xbf\x1e\x7b\ \x82\xd4\x58\x59\x9b\x8d\x52\xff\xb2\x5b\x6b\xd0\x22\x82\x35\xf5\ \xad\x2d\x6e\x9c\x60\x11\x02\x07\x0e\x35\x54\x15\xec\xb8\xa8\xc8\ \x88\x08\x56\x02\x6d\x08\xd4\x42\xb9\x2f\x34\xf2\x3d\xf3\x0e\x96\ \x34\xd6\x62\x77\xf7\xed\xbe\x4d\xc7\x54\x8d\xd5\x30\x20\x51\xae\ \x29\x2e\x3a\x4d\x8f\x3c\x51\x73\x7f\x7e\x50\x8f\xb6\x83\x6c\x90\ \x00\x1a\x29\x36\xb9\xa9\x55\x75\xb2\x00\xf7\x2b\xca\xfc\xda\xcc\ \xcd\x86\x42\x76\x98\x23\x00\x2c\x6d\x7a\xdd\xde\x94\xb8\xea\x38\ \x5d\xda\xe7\x63\x1d\x28\x45\x8e\x7b\xc1\x9f\xc7\x07\xa8\xc9\x32\ \x44\x76\xbe\x07\x00\x98\x7b\x18\xcc\x5c\xb4\xfc\x97\x82\x6f\xa0\ \x01\xcc\x9c\xd3\x84\x8d\xab\x91\xc8\x14\x27\xc8\x68\x5b\x65\x3d\ \xa0\x12\x83\xf6\x1f\x87\x51\x13\xb3\xae\x78\x5e\x18\x9c\x22\xa1\ \x69\x89\xd5\x62\x98\xcc\xd0\xd4\x5b\x3c\x11\x81\x27\xb7\xc4\x21\ \x71\xb4\xa3\x54\xaa\xaf\xd3\x85\xe2\x42\xa1\x14\x47\x4b\xb5\x4e\ \x63\x84\xe7\xe3\xf1\x42\x4d\xd9\x00\x4a\x00\xc3\x99\x94\x9a\x4c\ \x96\xe4\x0d\xa1\xea\x38\xbd\x00\x41\x63\xff\xdf\xee\x3e\x11\xe6\ \x13\xa1\x29\xdb\xef\x26\x04\x6c\x1a\x2c\xce\xf3\x98\x9a\xd6\x74\ \xef\xb0\xe3\x21\xc7\xe2\x79\xc7\x2a\x06\xd8\x30\x23\x5d\x58\x17\ \xef\xef\x67\x92\x51\xf7\x29\x6a\xc4\x54\xcc\xa3\x0e\xf1\x61\x16\ \xb0\xf1\x53\x6a\x4f\x39\x51\x36\x56\x46\x3b\x39\xbd\xb6\xbe\x2d\ \x08\x5a\x7c\x17\x80\x06\x21\x70\xa8\xad\x36\xd2\x01\x9b\x2a\x6d\ \x08\x5a\x20\xa7\x5e\xff\xcd\xf6\xf6\xd4\x88\x12\x77\x3d\x7c\x59\ \x01\x8e\x58\xd1\x6d\x84\xd2\xf2\x59\xea\x2c\x50\x95\x1e\xdc\x54\ \xed\xa5\xd2\x9e\xf3\xdb\x2b\x82\xce\xb9\x0c\x84\x56\x3d\xfb\x9e\ \x0e\xda\x94\xa7\x24\x43\x7a\x0e\x1b\xa2\x8c\xbd\xae\x53\x8a\xe7\ \x53\x97\x59\x3d\x86\xd5\x47\xea\x49\x8b\xea\x90\xc9\x0c\x78\xf4\ \xe8\x11\xec\x21\x69\x12\xa9\x83\x2d\x67\x3b\xa9\x43\x3d\xfa\xde\ \xd7\x1d\x7a\x99\xc1\xc6\x3e\x4a\x00\xf6\x7d\x1d\xa6\x1f\x72\xdc\ \xbc\x5f\x1b\xa2\x29\xd5\xc8\xbb\xdd\x2e\x56\x83\xc9\xbd\x0d\xda\ \xdb\x65\x53\xb3\x65\xc0\xc8\xee\x1e\xf2\xec\x4b\xe3\xc3\x18\x1d\ \x76\xfb\x8f\xbe\x8a\xe3\x7b\x6e\x40\x11\x29\x41\xb6\xa1\xb0\xdb\ \xed\x16\x00\xb6\xdb\x2d\xb6\xdb\x2d\xa6\x47\xc7\xcb\x07\x98\xba\ \x07\x10\xb6\x28\x22\x72\x7b\x0f\x2f\xf7\x59\xd5\x54\xce\xda\xb3\ \xc6\xba\x38\x22\x63\xa5\xbb\x1d\x66\xe3\xe8\x7a\x61\xc0\x5c\xfa\ \x14\xbb\xf8\x9b\x9b\x1b\x00\xf8\x8b\x9b\xbf\x21\xf2\xa9\x88\x3c\ \x7f\xf6\x83\x67\xa6\x6e\xaf\x68\x33\xb7\x25\x12\x85\x98\x19\x4a\ \x0a\xe2\x48\x84\xf4\x9e\x15\xd2\x89\x1d\x08\x31\x9c\x78\x4e\xa5\ \xf6\xba\xab\xee\x27\x8e\xbf\xec\x18\xec\x1c\x54\x65\x76\x7e\xda\ \x88\x59\x7a\x5e\xed\x5f\x1c\x31\x98\x22\x4f\x79\xb6\xe2\xab\xd5\ \x2a\xff\x3d\x3a\x3a\xc2\xf9\xf9\x39\xde\xbd\x7b\xf7\xf5\xf7\xdf\ \xff\xf7\x57\x6e\xfe\x8e\xd0\x5f\x2f\x2f\x2f\x7f\xf1\xfe\xfa\xfa\ \xf9\xe3\xc7\x8f\xb1\xd9\x6c\x72\x4c\xe7\x0a\x71\xfe\x6e\x4e\xfc\ \x25\xe8\x1e\x3a\x2f\x85\xd1\x5c\x99\xcd\xc4\x1e\x89\x55\x01\x42\ \x95\x39\xea\xc2\xec\x50\x55\x59\x9e\x68\x12\xa6\x69\xca\x0c\xba\ \xbb\xbb\xc3\x9b\x37\x6f\xf0\xf6\xed\x5b\xac\xd7\xeb\x5f\xde\xde\ \x7e\xf8\x96\x00\xe0\xf4\xf4\xf4\xd9\x76\xbb\xfd\x70\x7f\xb7\xfd\ \x9b\x73\xee\x53\xe7\x1c\x78\x72\xdd\xb3\xbf\x07\xc5\x72\x7d\x36\ \x90\x4a\x64\xad\xbe\xea\x06\xdd\xab\x15\xc3\x13\xe8\x3d\x06\x88\ \xcd\x59\x40\x2a\xa7\xd3\x26\xa6\xb6\xdf\xd5\xd5\x55\x9e\xc4\xff\ \x00\x5c\x02\x19\x87\x64\x82\xd5\x44\x00\x00\x00\x00\x49\x45\x4e\ \x44\xae\x42\x60\x82\ \x00\x00\x02\x34\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x5e\x00\x00\x00\x18\x08\x04\x00\x00\x00\xd9\xda\x82\x94\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x02\x62\x4b\x47\x44\x00\xff\x87\x8f\xcc\xbf\x00\x00\x00\x09\x70\ \x48\x59\x73\x00\x00\x0f\x12\x00\x00\x0f\x12\x01\x21\x9b\xf2\x33\ \x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x03\x12\x05\x2d\x12\x91\ \x0d\xeb\xcf\x00\x00\x00\x19\x74\x45\x58\x74\x43\x6f\x6d\x6d\x65\ \x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\ \x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x01\x93\x49\x44\x41\x54\ \x58\xc3\xd5\x96\xbb\x4e\xc3\x30\x14\x86\x3f\x27\x4e\x7a\x91\x90\ \x80\x89\x37\x61\x40\x62\x04\x09\x31\x31\xf0\xa4\x2c\x30\x20\x36\ \xd4\x17\x60\x61\x65\x29\x12\x88\x96\x2a\x4d\x42\xed\xc3\x90\x4b\ \x93\xa6\xad\x14\x21\x21\xfb\x78\xf0\xe5\xd8\xd2\xe7\x93\x3f\xc7\ \x47\x4d\x81\x94\x1c\xbf\x2c\x66\x08\x68\x98\x83\x8c\x08\x09\x3c\ \x01\xb7\xe4\x24\x24\xea\x08\x9d\x12\xca\x98\x7b\x26\xcc\x6a\xb7\ \x72\x06\x54\x6a\x60\x10\x04\x30\x1c\x73\xca\x15\xef\x32\x53\xea\ \x95\xa1\x3c\xf0\xc8\x4f\x89\xad\x1c\xba\x80\x94\xc8\xb6\x71\x01\ \x80\x90\x73\xae\xf9\x50\x01\x44\x4c\x30\x58\x2c\x16\xc1\x96\x1b\ \xa4\x6e\xb6\xf6\xfd\x77\x6b\xa3\x57\x2b\x06\xcb\x33\x63\x16\x68\ \x50\x24\x0d\x3d\x01\xa5\xfa\x55\xeb\xc3\x15\x23\xf5\x87\x18\xaa\ \x9e\xbb\x2b\xec\x66\xcc\xa5\x16\x50\xc6\x0a\x5d\xb8\x57\x2d\x6c\ \xeb\xd8\x0f\xda\x04\xb7\x40\x58\xae\xeb\xb5\xb6\x00\x4c\x2b\x42\ \x9b\xf1\x92\x1e\xde\x7e\xa7\x9b\xb3\xee\x39\x29\xa1\x37\x83\xaa\ \xdb\xb7\x53\x2d\xa1\xd0\x99\xf5\xf3\xf6\x3b\x2d\x3b\xc6\x66\x0b\ \x76\x71\x21\x5d\xa1\x5b\x87\xf3\xfa\xae\x04\x5a\xcb\xc6\x5d\xf8\ \xdd\xa6\x41\xc8\xc9\x58\x79\x04\x5d\xe9\x5f\x03\xe4\xa4\x5e\xc1\ \xeb\x66\x9f\x90\x96\x2f\xac\x1f\x16\x61\xaa\x1f\x56\xc8\x3c\x8b\ \xbc\x29\xfb\x00\x8f\xcd\x5b\xf8\x3a\xcf\x2b\x0f\x40\xb7\x95\xeb\ \xba\x28\x31\x43\x70\x56\xf5\xdd\x77\x38\x24\x5a\xc3\x1f\x60\xc8\ \xf6\x3c\xea\xae\x25\xca\x98\x01\x51\x51\x98\xe5\x5c\x70\x47\x88\ \xc1\x7a\x20\x21\xd0\x0c\xb8\x64\x49\x80\x8e\x59\x70\x03\x3c\xb1\ \xdc\x53\x1c\xb9\x94\x5f\x46\x9c\x71\xcb\x0b\x31\x6a\xca\x27\xb9\ \x0c\x19\x77\xca\x57\x17\xad\xa8\x7a\xe7\xbc\x81\x3a\x41\x4d\x11\ \xbe\xf9\x62\x41\x5e\x17\xc6\xae\x5b\x48\xcc\x31\x87\xfc\x02\xe8\ \xd1\xec\xea\x42\xfb\xcf\xc2\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x01\x01\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x08\x00\x00\x00\x08\x08\x06\x00\x00\x00\xc4\x0f\xbe\x8b\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\ \x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x08\x15\ \x01\x1e\x17\xf8\x02\xdb\x04\x00\x00\x00\x81\x49\x44\x41\x54\x18\ \xd3\x9d\xcd\xb1\x0d\xc2\x30\x14\x45\xd1\x1b\xf1\xf5\x95\xca\x8e\ \x15\xb9\x77\x91\x21\x68\x90\xd2\x31\x12\x6b\xb0\x8d\x33\x02\x3d\ \xec\x81\x2b\xe4\x02\x7f\x68\x40\x22\x52\x2a\x5e\x7b\xf4\x74\x77\ \x71\x1c\x1f\xcf\xd6\x0e\xad\xb5\x0b\x70\xe7\xb3\x94\x52\x6f\x66\ \x09\x15\x59\x44\x64\x06\xfa\x5f\x1c\x86\x61\xf6\xde\x2f\x00\xd3\ \x16\x3a\xe7\x16\x55\xbd\x75\x40\x07\xbc\xbe\x58\x4a\xd9\x9b\xd9\ \xa9\xd6\x8a\x99\x9d\xd9\x78\x66\x55\xcd\xab\xec\xff\x08\x10\x63\ \x9c\x42\x08\x59\x55\xaf\x22\x72\x5c\x21\xf0\x06\x78\x82\x2b\x9e\ \x02\x46\xc4\xbc\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x04\xd4\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x4f\x00\x00\x00\x4f\x08\x06\x00\x00\x00\xaa\x34\x98\x86\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01\ \x42\x28\x9b\x78\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x08\x15\ \x04\x1c\x13\xcb\x92\xbf\x74\x00\x00\x04\x54\x49\x44\x41\x54\x78\ \xda\xed\x5c\xd9\x52\x1b\x31\x10\x6c\xad\x97\x60\xcc\x6d\xe3\x04\ \x08\xb9\xf8\xff\x2f\xcb\x47\x78\xf2\xe0\x71\x50\x09\xad\x56\xc7\ \xe8\x58\x90\xaa\x28\x5c\xae\x95\xbd\x6a\x4d\xf7\xf4\xcc\x0a\x14\ \x11\x3d\xe1\x38\x48\xfb\x81\xf1\x7b\xea\x75\x89\x79\x50\x4a\xa1\ \xc5\x31\x02\xd0\xef\x4c\x19\x37\x6f\x7b\x4f\x19\x8b\x53\x13\xf3\ \xcc\x6b\x63\xe7\x81\x88\xa8\x45\x00\x47\x00\xc3\xcc\xa2\x48\x03\ \xd8\x06\x06\x79\x80\x81\xc0\x0d\x7a\xf7\x1e\x11\x35\x17\x89\xe3\ \x04\x30\x14\x11\x89\x53\xd7\xa8\x09\x4a\x2a\x47\xc4\x39\x37\x84\ \x18\xc9\xda\x20\xea\x91\xe7\x43\x39\xd7\xa2\x94\x05\x2c\x1f\xaa\ \xfa\x82\x68\xa5\x73\x4d\x10\x47\xed\xa6\xa6\x16\x12\x1c\x19\xda\ \xb5\x07\x87\x0c\x84\x80\xef\xa4\xf8\x89\xd2\xa5\x41\x3c\x45\x1e\ \x2c\x34\x4b\x5e\x94\xf1\xd9\x21\xf3\x42\x75\x92\x00\xa8\xd2\x91\ \x68\x66\xdb\x50\x61\x9f\xa3\x5c\xca\xbc\x58\x19\x28\x16\x89\x66\ \xb6\xd5\x6f\x58\x92\x72\xa9\x54\x45\x0a\x9d\x73\x45\xe3\xe8\xd0\ \xad\x14\xca\xa9\x02\x54\x9d\x03\x3f\xbb\x57\xf4\x31\xc9\x2e\xb3\ \x3b\xb7\xd0\xc3\x94\xf1\x8d\x00\xc3\x37\x49\x4d\x6e\x88\x34\x9d\ \x75\xda\x86\x46\x8b\xcf\x42\x87\x19\xdd\x2a\x19\xc1\x90\xa6\xb3\ \x2d\x61\x48\xec\x7a\xcb\xc9\x46\xcc\x2b\x9a\x9a\x27\xe1\xef\xa4\ \xc1\xf0\x31\xd7\x31\x74\x4e\xd6\x44\x5b\x79\x96\xea\xef\x54\x24\ \x55\x53\x33\x36\x05\x6e\xda\x3b\x10\x43\xe9\x6c\x96\x67\x4a\x48\ \xef\x52\x93\x0d\x32\x68\x70\x10\xb0\x3e\x74\x1e\x3d\x01\xa3\xc8\ \x12\x2e\xa7\xde\xc5\xb6\xc3\xe0\x68\x60\x04\xd5\xcf\x2e\x93\x4c\ \x8e\x0e\x49\xa9\x48\x94\x68\x87\x29\x81\x4d\xb3\xda\x9c\x31\x82\ \xaa\xc8\x70\xc3\x59\x2b\x8d\x84\x79\xce\xfa\xd9\x65\x92\x69\xa2\ \xee\x8d\xd5\x91\x9c\x0b\x4d\xd5\xd2\xa8\xfa\xd9\xa4\x6d\x8e\x66\ \x66\x8e\xa4\x21\xde\xd6\x8a\xf9\x3e\xd3\xaa\x00\xb2\x86\xb4\x56\ \xe6\x2d\x32\xcf\xb4\x2a\x3e\xd1\xb2\xa4\x4a\x23\xc7\xa6\xfd\xc7\ \xc0\x65\x92\x6b\xe9\xd6\x1c\x75\x42\x74\x2b\x56\xef\x7c\x9c\x05\ \xd9\xca\xb3\x52\xbb\x1e\x1b\xc1\x53\x8b\xca\x31\xcf\x29\x57\x53\ \xd9\x36\xf4\xe1\x4d\x69\x8b\x91\xd2\x0e\x13\x7b\xd6\x3c\x02\xf8\ \x0b\x60\xef\x01\x62\x8d\xa6\x40\x2c\xe5\xe6\xda\x61\x22\xb2\xa3\ \x88\x48\x31\x78\x3f\x01\x9c\x1b\x17\x1c\x8c\x6e\x72\xea\x71\x0b\ \xfd\xb3\x25\xe7\xcd\xdd\x53\xe8\xf7\x79\xbd\x56\x5a\xe9\x71\x01\ \xe0\x37\x80\xad\xe5\xc3\x11\xb1\xd0\x1c\x67\x5d\x72\x81\x1f\x35\ \x4f\x19\xb5\xdb\x29\x0a\x7f\x69\x51\x98\x6b\xd7\x4b\x1f\x18\x12\ \x07\x51\x4d\xf4\xf9\xd7\x0c\xe0\x03\xec\xc7\x30\x4a\x50\x27\x57\ \xe4\x8b\x31\x46\x39\x1e\x96\x0c\x00\xee\x59\x0b\xaf\x1a\xd6\xad\ \x6a\x91\xef\x6c\x97\x72\x14\xae\x00\x3c\x01\xf8\x0e\xe0\x4b\x01\ \xca\x51\x64\x92\xa2\x84\xe4\x76\x70\x00\x3d\x39\xcf\xab\x69\xaf\ \x25\x94\x1f\xac\x89\x43\x03\x7a\x17\x4b\x4b\xb1\xef\x0b\x7a\xe2\ \xc1\xb6\xe6\x96\x41\xbc\x5b\x68\x06\x15\xdb\xec\xe0\xe7\x6d\x5a\ \x56\xbe\x67\x10\xaf\x1d\x6d\xab\x5a\x99\x37\x57\x72\x0b\xa7\xed\ \x8c\x1e\x6e\x01\x3c\x03\xb8\x69\xd8\x62\x64\x89\x44\x91\x73\x07\ \x44\xb4\x62\x5b\xf3\x02\x60\x53\x89\x72\xc5\x93\x8d\xd8\xc9\x17\ \x8e\xc4\x01\xc0\x57\x8e\xc4\x8d\x07\x9d\x51\x3a\x5a\x24\xe7\x89\ \x9f\xbb\x62\x10\x47\xd6\xc4\x67\x4d\x13\x73\x2c\x2a\x26\x82\xc5\ \x74\x39\xdb\xe9\x3f\x4d\x13\x6f\x19\xc4\xbb\x99\x48\x6c\x85\xe2\ \xde\x20\x16\x39\x7f\xca\x40\x5e\xb2\xd9\xde\x72\xdd\xdc\x02\x55\ \x93\xc0\x2f\x7a\x02\x9a\x41\x3c\x67\xa3\xbd\x67\x40\x55\x21\x30\ \xc4\xfd\x64\x95\x33\xf8\x9a\x2e\x5e\x03\x78\x64\x7d\x5c\x15\xea\ \xac\xd4\x33\xc9\x99\x80\x5c\x73\x24\x3e\x70\x19\x38\x34\x5a\x07\ \xcb\x98\xe4\x4c\x40\x0e\x6c\xb6\x77\x9a\x36\xd6\x6c\x82\xd6\xc9\ \xb6\x02\xd1\x78\xc6\x99\x7a\xcf\x99\x7a\x68\xad\x7e\x6e\xf3\x6f\ \x31\xed\xb4\xde\xf1\xcf\xa5\x85\xd6\x55\x2a\x94\xe6\xc1\xb3\xd0\ \xfa\x8a\xb5\x51\xa7\x75\x15\xfb\xb2\x28\xf0\x2c\xb4\xde\x72\xb6\ \xde\x38\xaa\x98\x6c\x1d\xef\x45\x82\x67\xe9\x31\x5e\x03\xf8\xc6\ \xda\x78\x56\xa8\xd2\xc0\xe2\xc1\x33\x40\x5c\x6b\x06\xfc\x5c\xd8\ \x5c\xe7\x69\x49\x35\x48\xe9\x2f\x9c\x5c\x1e\x19\x50\x85\x0c\x7d\ \xbf\x0f\x07\x9e\x25\xc1\x3c\x30\x88\x66\x29\x58\xaf\x93\xbc\x30\ \x10\xf5\x16\xd9\xa5\x14\x9d\x3f\x05\x78\x46\x8b\x6c\x8b\x63\xc7\ \xfb\xe2\xc3\x9b\xe4\x8c\x91\xb8\xe7\x16\xd9\x3a\xd6\x5c\x7f\x4a\ \xf0\x8c\xc4\xf2\xc8\x20\xae\x42\x23\xf1\xd3\x82\x67\x80\xb8\x61\ \x2a\xef\x0c\xb3\x8d\x0f\x6d\x92\x85\x7d\xe2\x1d\xde\xce\xe6\xcc\ \x9a\xeb\x0e\x9e\xbd\xec\x3b\x9d\xcd\x19\xd0\x5a\x27\x79\x21\x20\ \xde\xe0\x78\xd8\xf3\x66\x2a\xf3\x76\xf0\xdc\x20\x9e\x4e\x88\xbd\ \xe0\xed\x1f\xf8\xf4\xc8\x0b\x8c\xc2\x2b\x00\x7f\x70\x6c\xce\xa2\ \x83\x17\x67\xb0\x5f\x58\x0b\x57\x9d\xb6\x71\x20\xee\x00\xbc\x02\ \x58\x77\xf0\xe2\x7d\xe1\x6b\x07\x2f\x1e\xc0\x8e\x5d\x1f\x7d\xf4\ \xd1\x47\x1f\x7d\xf4\xd1\x47\x1f\x7d\xf4\xd1\x47\x1b\xe3\x1f\xe0\ \x81\xec\x5e\x51\xd2\x2e\xc1\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x09\x41\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x2a\x00\x00\x00\x2a\x08\x06\x00\x00\x00\xc5\xc3\xc9\x5b\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\ \x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xda\x04\x1b\ \x04\x2f\x1f\x95\xf4\x7e\xf3\x00\x00\x00\x19\x74\x45\x58\x74\x43\ \x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\ \x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x08\x9c\ \x49\x44\x41\x54\x58\xc3\xed\xd8\xcb\x6b\x1c\xc9\x1d\x07\xf0\x6f\ \xf5\x68\x66\xa4\xe9\xe9\xd7\x8c\x34\xef\x87\xde\xb6\x25\x3f\xd6\ \x22\x78\x2f\x59\x08\x59\x58\x91\xc3\xc2\x9c\x96\x60\x12\x1c\xc8\ \x3f\x60\xcc\x1e\xb2\xe7\xdc\x42\x62\x72\x0e\x39\x38\xe0\x40\x72\ \x32\xe4\x92\xd3\x1e\xf6\x12\x23\x2c\xaf\xac\x40\x62\x58\xad\xa4\ \xd1\x8c\xe7\xa9\x79\xb5\xa6\xbb\xa7\xbb\xa7\xbb\x2a\x87\x1e\x8d\ \xed\xc5\xd6\xc3\xab\xe4\x10\x5c\xd0\x8c\x98\x47\xd5\x87\x5f\xfd\ \xea\xf7\x2b\x04\xbc\x1f\xef\xc7\xfb\xf1\x3f\x1f\x04\x80\x74\x81\ \xf3\x45\x00\x70\x17\x8e\x5c\x58\x5c\xfc\x3c\x93\xcd\xb2\xb5\xb5\ \x1f\xdc\xb9\x80\xf9\x62\x89\x44\xc2\x9a\x9b\x9b\xfb\x62\x14\x80\ \x53\x87\xef\x2c\xc8\xa5\xc5\xa5\xbb\x93\xc1\xc9\xdf\x5d\xb9\x72\ \x05\xd5\x6a\xb5\x90\xcf\xe7\x8a\xf5\x7a\x7d\xfb\x5d\x91\xb3\xf9\ \xfc\xd7\xab\xab\xab\x8a\x69\x9a\x1f\x4b\x92\xac\x76\x3a\x9d\x8d\ \xef\x0b\x25\x8b\x0b\x0b\x77\x83\xc1\xc0\xfd\x6b\x57\x57\x11\x89\ \x46\x11\x89\x28\x38\x38\x38\x28\x64\xb3\xd9\x62\xa3\xd1\x38\x17\ \x56\x10\x84\x54\x2a\x91\xdc\xbc\x76\xed\x6a\x3a\x37\x3b\x0b\x51\ \x94\xd0\x6e\xb7\xd7\x25\x49\x3a\x15\xeb\x3b\x71\xbb\xe7\xe7\xef\ \x06\x83\xc1\xfb\xab\xab\x57\x11\x0a\xf1\xd0\x34\x0d\x93\x53\x93\ \x88\x44\xa3\x28\x95\x4a\x85\x6c\x26\x5b\x6c\x34\xcf\x86\x5d\x5d\ \x5d\xbd\xee\xf3\xf9\x1e\xaf\x5c\xb9\x92\x48\xa6\x52\xe8\x1f\x69\ \x98\x9a\x9a\x84\x2c\xcb\x68\xb5\xdb\xeb\xa2\x28\xaa\xdd\x6e\x77\ \xe3\xbc\x50\x32\x3f\x37\x77\x37\x10\x08\xde\x5f\x59\x59\x05\xcf\ \x87\xa0\xf5\xfb\xa0\x8c\xc2\xb6\x6d\xf0\xa1\x10\xa2\x91\x08\x4a\ \xa5\x52\x21\x93\xc9\x14\x9b\xcd\xe6\x89\xd8\x95\x95\x95\xeb\xba\ \xae\x7f\x75\x79\xf9\x52\x24\x95\x4e\xa3\x7f\xd4\x87\xeb\x3a\xb0\ \x2d\x1b\x21\x3e\x04\x49\x92\xd1\xe9\x74\xd6\x05\x41\x50\x7b\xbd\ \xde\xc6\x59\xa1\x5c\x36\x93\xfd\xd5\xe4\xe4\xe4\x6f\xae\x5e\x5d\ \x05\xcf\xf3\xe8\x1f\xf5\xc1\x18\x03\xc0\xc0\x18\x7b\x89\x8d\x4e\ \xa3\x5c\x3e\x19\xbb\xb6\xb6\xf6\x43\x55\x55\xbf\x5c\x5e\x5e\x96\ \xd2\xe9\x34\x54\x55\x85\xe3\xb8\x60\x8c\x81\x52\x0a\xdb\xb2\xc0\ \x0b\x61\x48\x92\x84\x6e\xb7\xbb\xce\xf3\xbc\xa6\xaa\xea\xe3\xb3\ \x40\x15\x9f\xcf\xf7\x97\xc5\x85\x85\xa9\x6c\x2e\x87\x5e\x4f\x85\ \xeb\xb8\x20\x60\xa0\x23\xe8\x78\x81\x70\x18\xd3\xd1\x28\x4a\xe5\ \x72\x21\x9d\x4e\x17\x0f\x0f\x0f\x5f\xc3\x7e\xf8\xe1\x87\x9f\x1e\ \x1e\x1e\xfe\x6d\x69\x69\x89\xcf\x64\x32\x50\xbb\x5d\xb8\x8e\x0b\ \xc6\x00\xc6\xd8\xf8\x75\x38\xb4\xa1\x28\x0a\x08\x21\x28\x95\x4a\ \x37\x0d\xc3\xf8\x03\x00\xeb\x34\xe8\xc0\x34\xcd\x07\xc3\xe1\xf0\ \xb6\x8f\x70\x62\x2c\x36\x03\xd3\x34\xe1\xba\x2e\x28\xf5\x90\x8c\ \x31\x50\x60\x8c\x8d\x46\xa3\x28\x97\xcb\x85\x64\x32\x59\x6c\xb5\ \x5a\xdb\x00\x70\xeb\xd6\xad\x42\xa3\xd1\x78\xb4\xb0\xb0\x10\xc8\ \x66\xb3\xe8\x74\x3a\x70\x1c\x07\x60\x0c\x8c\xd1\x11\xd4\x7b\xc2\ \xa2\x80\x7e\xbf\x8f\x67\xcf\x9e\x55\x1a\x8d\xc6\xc7\x00\x5e\xbc\ \xa9\x88\xbf\xb5\x8c\xa4\x92\xc9\xaf\x97\x96\x96\xd3\xf9\x7c\x1e\ \xdd\x76\x1b\x43\xea\x82\x10\x02\x42\x08\x28\xa5\xe3\x2f\xca\xb2\ \x0c\xc3\x30\xb0\xbd\xbd\x8d\xa9\xa9\xa9\x5f\x84\xc3\x61\xf5\xf0\ \xf0\xf0\xd1\xfc\xfc\x3c\x72\xb9\x1c\x3a\x9d\x0e\x5c\xd7\x05\xc6\ \x3f\xf1\x80\x20\x80\x2c\x2b\x30\x06\x06\x9e\x3c\x79\x52\xa9\x56\ \xab\x9f\x00\xf8\xf7\xdb\xba\x0d\x4e\xc3\x5e\x5a\x5a\x4e\xe7\xf2\ \x39\xb4\xdb\x6d\x6f\xeb\x38\xef\x67\xc7\x58\x42\x08\x64\x59\xc6\ \x60\x30\xc0\xd3\xa7\x4f\x41\x29\xc5\xf2\xf2\x65\xe4\xf3\x39\xb4\ \xdb\x2d\x38\xce\x10\x00\x03\x18\x19\x2d\x49\x40\x08\x20\xcb\x12\ \x0c\xdd\xc0\x93\xcd\xcd\x4a\xad\x5e\x7b\x2b\xf2\x2c\x75\x54\xef\ \x6b\xda\x43\xcb\xb2\x6e\xfb\x38\x4e\x4c\xa6\x52\x18\x0c\x06\x70\ \x5c\x77\x9c\x02\xc7\x8f\x69\x9a\x08\xf3\x61\x0c\xcc\x01\x9c\xa1\ \x83\xd5\x95\x55\xb4\x3b\x1d\x0c\x87\x43\x50\xea\x8e\xb6\x1b\xa3\ \x43\x49\x20\xcb\x12\x34\xc3\xc0\xe6\xe6\x66\xa5\x5e\xaf\x9f\x88\ \xc4\x59\xdb\x17\x80\x58\x32\x9e\xf8\x7a\x61\x71\x21\x3d\x37\x37\ \x87\x46\xb3\xe9\xe5\xdb\xab\x13\x11\x02\xc2\x00\x59\x51\xe0\xf7\ \x4f\xa0\xd5\xea\xc2\xa5\x14\xde\x7e\xb3\xd1\xe3\xa5\x8d\xa2\x44\ \x30\x18\x18\x78\xfa\xf4\x69\x43\x55\xd5\x9f\x0c\x06\x83\xad\x8b\ \x68\xa1\x00\xa0\x6b\xba\xf6\xd0\xb2\xec\xdb\x60\x44\x4c\x67\xd2\ \x30\x0c\x03\xae\xeb\x8e\x23\xea\xa5\x1e\x83\x61\x18\x30\x0c\x03\ \x8e\xe3\x82\x8e\xde\x3f\x3e\x3c\x00\x81\xa2\x28\x30\x0c\x1d\x5b\ \x5b\x5b\x3d\xd3\x34\x3f\xd5\x34\x6d\xf3\xa2\x7a\xfd\x18\xab\xeb\ \xfa\x43\xcb\xb2\x6e\x03\x10\xb3\xd9\x2c\x34\x4d\xf3\x0e\x09\x46\ \xe5\x66\x54\x15\x28\xa5\xe3\x73\x73\x5c\x86\x00\x0e\x91\x88\x02\ \xc3\x30\xb0\xb5\xb5\xd5\x07\xf0\x59\xab\xd5\xfa\xea\xac\x8b\xfb\ \xce\x79\xa1\xd0\x75\xc3\xc3\x52\x4a\xc5\x4c\x26\x03\x5d\xd7\xe1\ \x38\x8e\x17\x3d\xea\x95\x1e\x4a\x19\x18\xa5\x60\xcc\x05\xa3\x0c\ \xcc\xa5\x50\x14\xef\xb0\x6d\x3f\xdb\xb6\x27\x7c\xbe\x9f\xd6\x6a\ \xb5\xbf\x9f\xf7\x8e\x79\xee\x21\x08\x42\xd6\xef\xf7\x17\x05\x41\ \xe0\x3e\xfa\xe8\x23\xec\xed\xed\x61\xe8\x38\xe0\xd8\xcb\xef\x1c\ \x77\x32\x80\x43\x24\x1a\x41\xad\x56\x43\xa5\x52\x45\x28\x34\xf9\ \xf3\x52\xb9\xfc\xf0\xbc\x6b\xbe\xd3\xc5\x55\x92\xe5\x1f\x13\x42\ \x38\x49\x92\xd0\x6c\x36\x61\x59\x16\x28\xa5\x70\x29\x7d\xad\x98\ \x53\x0a\xf8\x26\x26\x30\x3d\x3d\x83\x6e\xa7\x07\x97\xba\xc3\x6e\ \xb7\xfb\xd5\xbb\xac\x79\xee\x88\xe6\x73\xb9\x3b\x03\xd3\x7c\x70\ \xed\xea\x35\x04\x83\x41\x34\x1a\x0d\x70\xa3\x26\x70\x3c\x1d\x01\ \xc0\x38\x2f\x9e\x00\xe0\xf7\xfb\x91\xc9\x64\xf0\xed\xce\x0e\x0e\ \x4a\x07\x75\xcb\xb2\x6f\x69\xfd\x7e\xf9\x3c\xeb\x9e\x2b\x47\x73\ \xd9\xdc\x1d\xcb\xf2\x90\xe1\x30\x8f\x76\xab\x05\x8e\x70\xe0\x38\ \x02\x42\x7c\xe3\xae\x45\xc8\x88\x3b\xfa\x9b\x52\x0a\x5d\xd7\x31\ \x3f\x37\x0f\xd7\xa5\x61\xad\xdf\xff\x6c\x30\x18\x3c\x04\xa0\x5f\ \x38\x34\x9f\xcf\xdf\xb1\x2d\xeb\xc1\xf5\x6b\x37\xc0\x87\x79\xb4\ \x0e\x5b\xaf\xec\x09\x01\xc7\x79\xb5\x34\x10\x08\x78\x1d\x6b\x8c\ \xf6\x1e\x46\x19\x74\x5d\xc7\xdc\xec\x2c\x18\x63\xa2\x6d\xdb\xb7\ \x0d\xc3\x38\x33\xf6\x4c\xd0\xd9\xd9\xd9\x9f\x59\xb6\xf5\xe0\xc6\ \xf5\x1b\x84\x0f\xf3\x68\xb7\xda\xe3\xda\xe9\x41\x38\x00\x04\x81\ \x80\x1f\xf9\xd9\x59\x98\x96\x09\xc7\x76\xc0\x71\x5e\xb4\x39\xe2\ \x3d\x60\x0c\x86\x6e\x20\xff\x0e\x58\xdf\x99\x90\x96\xf5\xa7\x1b\ \xd7\x6f\x70\xa1\xd0\xcb\x48\x12\x42\xc0\x71\xdc\xf8\x35\x10\x0c\ \x20\x99\x4c\xe2\xf1\xe3\x7f\x80\x52\x8a\x54\x2a\x05\xcb\xb4\x46\ \x9f\x8f\xa0\x20\xa0\x94\x61\x60\x18\xc8\xe7\x67\xc1\x70\x76\xec\ \x89\xd0\x4c\x26\xf3\xa9\x6d\xdb\x7f\xfe\xe0\x83\x0f\x26\x78\x9e\ \x47\xa7\xd5\x06\xc0\x40\x08\xe0\xf3\xf9\xc6\x11\xf3\xfb\xfd\x48\ \xa6\x52\xd8\xdf\xdb\x47\xbd\xde\xa0\xba\xa6\x93\x78\x2c\x06\x59\ \x91\x61\x59\xe6\x6b\x29\x40\x08\x01\x63\x2e\x0c\xd3\x44\x3e\x9f\ \x07\x63\x10\x87\x43\xfb\xb6\xae\xeb\x27\x62\xdf\x0a\x4d\x26\x93\ \x9f\x50\x4a\xff\x7a\xf3\xe6\xcd\x10\xcf\xf3\xe8\x76\xbb\x20\x78\ \x35\x8a\x5e\x84\xfc\x7e\x3f\xe2\xc9\x04\xf6\xf7\x76\xb1\xbb\xb7\ \x57\x39\x6c\x1d\x2e\xc7\x63\xf1\x7f\x55\x6b\xd5\x42\x34\x1a\x85\ \x24\x49\x30\x2d\x0b\x20\x04\xe0\x08\x08\xe7\xa5\x0a\x03\x30\x18\ \x98\xc8\xe5\xb2\xe0\x38\x4e\xb4\xed\x93\xb1\x6f\x84\xc6\x62\xb1\ \x1f\x71\x1c\xf7\x68\x6d\x6d\x4d\xe0\x79\x1e\xbd\x5e\x0f\x8c\x31\ \x10\xc2\xc1\xc7\xbd\xcc\x49\xbf\xdf\x8f\x78\x22\x8e\xe2\xfe\x3e\ \x76\xf7\xf6\x2a\xcd\x66\x73\x0d\x40\xb3\xdb\xeb\x6e\xc7\xe3\xf1\ \xe2\x8b\x6a\xa5\x10\x8d\x46\x21\x4a\x12\x2c\xcb\xfa\x4e\xf5\xf6\ \x4a\xb8\x69\x9a\xc8\x64\xd2\x20\x64\x62\x84\xd5\xde\x88\x7d\x13\ \x54\x9a\x9c\x9c\xdc\xbc\x74\xe9\xb2\x90\x4e\xa7\xd1\x69\xf7\x40\ \xd9\xf1\xbd\xf3\x65\xd9\x09\x04\x03\x88\xc5\x63\x1e\x72\x77\xaf\ \xd2\x68\x34\xd6\x00\x34\x8f\x27\xe9\x74\x3a\xdb\x89\x58\xa2\x58\ \x79\xf1\xa2\x10\x89\x46\x21\x8a\x22\x86\xc3\x21\x38\x8e\x03\x38\ \x02\x1f\x37\x31\x4a\x03\x06\xcb\xb2\xb0\xb8\x38\x0f\xdb\xb6\xc5\ \x7e\xbf\xff\x4b\xcb\xb2\xfe\x08\x60\x70\x1a\xd4\x56\x22\x8a\x3d\ \x30\x06\x9f\xf0\x53\x21\x48\xb2\x04\xcb\x34\x47\x3e\x2f\xc7\xfc\ \x7e\x3f\x66\x66\x66\x70\x70\x70\x80\x9d\x6f\xbf\xad\xd4\x1b\xf5\ \xd7\x90\xaf\x62\xe3\xf1\x44\xb1\xf2\xa2\x52\x88\x4e\x47\x21\x08\ \x02\x2c\xcb\x1a\x55\x34\x6f\x2e\x9f\xcf\x07\x59\x96\xd0\x6e\xb7\ \x51\x2c\x16\x41\x08\xf9\xb5\xa6\x69\x5f\xe2\x65\xbf\x78\xfb\xd6\ \xf7\xfb\xfd\xc7\x61\x3e\xac\x76\xba\xdd\x75\x51\x94\xa0\x28\x32\ \x6c\xdb\x1e\x77\x99\xe9\xe9\x69\x94\x4a\x25\xec\xec\xec\x54\xea\ \xf5\x37\x23\x5f\xc5\x26\x13\x89\xe2\x8b\xca\x28\x0d\x44\x11\xb6\ \x6d\x83\xc0\x43\x46\x22\x0a\xfa\xfd\x3e\x9e\x3f\x7f\x0e\xc7\x71\ \xee\x55\x2a\x95\xdf\x7e\x17\x79\xe2\x61\x3a\x3a\x3a\xda\x08\x0b\ \x82\xda\xed\x76\xd7\x25\x59\x82\x2c\xcb\x70\x5d\x17\x51\xef\x9f\ \x0f\xf8\xe6\x9b\x6f\x2a\xb5\x5a\xed\x44\xe4\xf1\x68\x77\xda\xdb\ \x89\x44\x62\xb7\x52\xa9\x14\xa6\xa7\xa7\x89\x28\x8a\x70\x1c\x17\ \x8a\x22\x43\xd3\x34\x3c\x7f\xfe\x1c\xc3\xa1\x7d\xaf\x5c\x2e\xff\ \xfe\x4d\xc8\x53\xcb\xd3\xd1\x91\xba\x21\x84\x05\xb5\xdb\xed\xac\ \xcb\xb2\x8c\x44\x22\x81\xfd\xfd\xfd\x73\x21\xc7\xd8\x76\xfb\x9f\ \x8a\xa2\x6c\x56\xab\xd5\xc2\xcc\xf4\x4c\x20\x3a\x1d\x85\xaa\x1e\ \x8d\x90\xc3\x7b\xe5\x72\xe9\xad\xc8\x33\x15\x7c\xf5\x48\xdd\x10\ \x04\x41\xed\x74\x3a\xeb\x96\x65\x61\x67\x67\xa7\x52\xad\x56\xcf\ \x85\x3c\x1e\xbd\x5e\x6f\x47\x14\x84\x8d\x7a\xbd\x56\x98\x98\xf0\ \x07\x77\x77\x77\x31\x1c\x0e\xef\x95\x4a\x07\x27\x22\xcf\x75\xcb\ \xca\x64\x32\x5f\x28\x8a\xd2\x06\x10\xfb\xbe\x93\x65\xd2\xe9\x8f\ \x67\x66\x66\xd4\x5c\x2e\xf7\xf9\xbb\xde\x89\x4f\xbb\xbb\x46\x2e\ \x70\x3e\xe9\xbf\x81\x7c\x3f\xfe\xef\xc6\x7f\x00\xba\x0e\x9f\x79\ \x33\xcd\x2d\x45\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x00\x57\ \x62\ \x6f\x72\x64\x65\x72\x2e\x6c\x65\x66\x74\x3a\x20\x31\x30\x0a\x62\ \x6f\x72\x64\x65\x72\x2e\x74\x6f\x70\x3a\x20\x31\x30\x0a\x62\x6f\ \x72\x64\x65\x72\x2e\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x31\x30\x0a\ \x62\x6f\x72\x64\x65\x72\x2e\x72\x69\x67\x68\x74\x3a\x20\x31\x30\ \x0a\x73\x6f\x75\x72\x63\x65\x3a\x20\x6c\x69\x6e\x65\x65\x64\x69\ \x74\x2e\x70\x6e\x67\x0a\ \x00\x00\x00\x57\ \x62\ \x6f\x72\x64\x65\x72\x2e\x6c\x65\x66\x74\x3a\x20\x31\x30\x0a\x62\ \x6f\x72\x64\x65\x72\x2e\x74\x6f\x70\x3a\x20\x31\x32\x0a\x62\x6f\ \x72\x64\x65\x72\x2e\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x31\x32\x0a\ \x62\x6f\x72\x64\x65\x72\x2e\x72\x69\x67\x68\x74\x3a\x20\x31\x30\ \x0a\x73\x6f\x75\x72\x63\x65\x3a\x20\x74\x69\x74\x6c\x65\x62\x61\ \x72\x2e\x70\x6e\x67\x0a\ \x00\x00\x00\x57\ \x62\ \x6f\x72\x64\x65\x72\x2e\x6c\x65\x66\x74\x3a\x20\x31\x35\x0a\x62\ \x6f\x72\x64\x65\x72\x2e\x74\x6f\x70\x3a\x20\x34\x0a\x62\x6f\x72\ \x64\x65\x72\x2e\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x34\x0a\x62\x6f\ \x72\x64\x65\x72\x2e\x72\x69\x67\x68\x74\x3a\x20\x31\x35\x0a\x73\ \x6f\x75\x72\x63\x65\x3a\x20\x74\x6f\x6f\x6c\x62\x75\x74\x74\x6f\ \x6e\x2e\x70\x6e\x67\x0a\ \x00\x00\x05\x87\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x2c\x00\x00\x00\x26\x08\x06\x00\x00\x00\xbf\x1f\x79\x67\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\ \x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\ \x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x08\x18\ \x05\x1c\x2a\x67\x3f\x85\x96\x00\x00\x00\x19\x74\x45\x58\x74\x43\ \x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\ \x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x04\xe2\ \x49\x44\x41\x54\x58\xc3\xed\x99\xdb\x6b\x5c\x55\x18\xc5\x7f\xfb\ \x72\xce\x4c\x26\x93\xdb\x34\x33\x49\x26\x8d\xf6\x06\xf5\x52\xaa\ \xf6\xa2\xa2\x2f\xa3\x0f\xfa\x24\x42\x11\x45\x10\x7d\x53\x9f\x8b\ \xe0\x93\x54\xff\x05\xfd\x07\xc4\x17\x95\xa2\x2f\x82\x97\x2a\x18\ \x14\xfa\x50\x83\xa0\xb4\x5a\x2f\xb5\xb5\x6a\xad\x69\xd2\xc6\x34\ \xe9\xe4\xcc\x39\xfb\xfb\x7c\x98\x4c\x4c\x6c\x35\x49\x49\x9a\x14\ \xfb\xc1\xe6\xc0\xcc\x3e\x67\xd6\x5e\x7b\xed\xb5\xcf\x5e\x63\x98\ \x57\x03\x5b\x07\x5e\xae\x6c\xab\x1c\x28\xdf\xda\x47\xbe\x3f\x87\ \x69\xb3\x18\x07\x9a\x0a\xd7\xba\x5c\x12\x73\xfe\xf4\x38\x67\x8f\ \xfe\x4e\xb1\xbf\x7d\x78\xf0\x9e\xc1\xc7\xb1\x8c\x19\x80\x6a\xf7\ \x40\xc9\x6e\x72\xef\xec\x7a\x7a\x57\xad\x74\x4b\x09\x11\x41\x32\ \xa1\x91\x65\xa4\x2e\xc5\xa9\xc3\x5a\xbb\xac\x1f\x34\xc6\xfc\xe7\ \xf7\xaa\x3a\xf7\x4c\x11\x59\x70\x4f\x08\x81\x28\x8a\xc8\x05\x83\ \x51\xc3\x99\x91\x73\x9c\x3a\x72\x92\x1d\xcf\xee\xac\x9a\xbe\x72\ \x5f\x7f\xe7\xc6\xee\x37\xef\x79\x69\x6f\xcd\xc7\x96\x7a\x92\x12\ \x12\xa5\x73\xaa\x40\x57\x57\x17\x91\xe6\x50\x03\xce\xb9\x15\x67\ \x71\x3e\x60\x55\xc5\x18\x83\xaa\x22\x22\x8c\x5d\x1a\x65\x34\x3b\ \x47\xcf\x40\x0f\x05\x5f\xe0\x8f\x63\x67\xf9\xf5\xfd\x5f\x86\xbd\ \x2d\xda\x47\xb7\x3e\xb1\xb9\xe6\xbd\x65\xf2\xec\x04\x4c\xc5\x3c\ \x7d\xdf\x33\xec\x1d\xdc\x45\xb9\xaf\x8c\xb7\x7e\x51\xb6\x56\xba\ \x44\x84\x9f\xc6\x4e\xf2\xf1\x57\x87\xf8\xe0\xdb\x8f\x91\x9b\x61\ \xe0\xf6\x0a\xe3\xc7\xcf\xd5\xdc\xc6\x9d\x43\x23\xdb\xf7\x6d\x27\ \x6b\x18\x64\xcc\x72\xe0\xb1\x97\xb8\x7f\xf3\xbd\x74\x74\x14\x91\ \x46\x00\xcb\xb2\xe5\xb0\x54\x50\x2d\x19\xb4\xd8\x9d\x5f\x5d\xbe\ \x9d\x3d\x9b\xf6\x50\x8a\x37\xf0\xd9\x57\xc3\x84\x28\xa3\x7b\xa8\ \x8c\xad\x6c\x29\x63\xd4\xf1\xe7\x85\x49\xf6\xdd\xbd\x8f\xdb\xaa\ \xb7\x11\x7c\x40\x8c\x40\xac\x60\xb4\xa9\xb9\x20\x2b\xda\x8c\x02\ \xa2\x68\x90\xb9\x6b\xab\x21\x8a\x44\x60\x62\xc3\x83\x3b\x1f\x60\ \xf7\xe0\x5e\x92\xc9\x19\xa2\x1e\x8f\x2f\x54\xda\x49\xd2\x3a\x7e\ \xcc\xb0\xbb\x7f\x27\xa8\x10\xbb\xdc\xec\x38\xa3\xbf\x17\x91\xb3\ \xab\x2a\x83\x7f\xb2\x1c\x69\x4c\x08\x29\xb9\x5c\x4c\x6d\x4b\x8d\ \x4f\x3f\xfa\x84\xf6\xfe\x4e\xbc\x14\x94\xac\x21\x74\x16\xba\xb9\ \x69\x68\x13\xce\xfa\x05\x0f\x4a\xb3\x19\xbc\xcb\x2d\x5b\xc7\xaa\ \xba\x64\x17\x69\xf5\x5d\x70\x8f\x28\x9a\x00\x1e\x86\xba\xaa\x38\ \xf5\x44\x2e\x87\xcf\x48\x11\x11\xea\xd3\xd3\xe4\x7d\xae\x69\x67\ \x9a\x90\x8f\xda\x08\x49\x4a\x94\xcb\x2f\x09\xc0\xd5\xd8\x5a\xab\ \xdf\x95\xfa\x06\x32\x5c\xce\x92\x25\x33\xc4\xc5\x18\xa7\x79\xc0\ \xe2\xbd\xc4\x20\x60\xc5\x36\xa7\xc5\x19\xf2\xa6\xad\x69\xde\xb9\ \x68\xc9\x00\x96\x5b\x8b\x3d\xcf\xb9\x08\x55\xc5\x7b\x8f\x55\x43\ \x72\x71\xaa\x69\x85\x8b\x4e\xad\x84\x65\xb3\xbb\x9a\x65\x57\x82\ \x8d\x35\x05\xbc\x9e\xc0\x5d\x15\xc3\xc6\xba\xeb\x0b\xf0\xba\xd7\ \xf0\x3f\xc1\x19\xeb\xd6\xb7\x86\xd7\x3d\xc3\xc6\x18\x04\x01\x6b\ \x16\xbc\x8c\xcc\xa3\x78\x4d\x80\xcd\xdf\xaa\x5b\x57\x55\xc5\x72\ \x9d\xd5\x0d\xc0\x37\x00\xff\x2f\x00\x5f\x57\x3e\xbc\xee\x18\x36\ \xc6\xe2\x89\x17\x78\xdd\x7a\x60\xd7\x18\xd3\x3c\xe3\xa9\x12\x10\ \xe2\x38\xd7\x02\x0c\x21\xa4\x64\x59\x63\xde\xee\xc6\x5c\xa0\xb1\ \x56\xbb\x9c\xaa\x82\x35\x28\x82\x33\x8e\x34\x0d\x58\x6b\xb1\x22\ \xcd\x53\xaa\xc5\xce\x1d\x57\xac\x9b\x65\x1b\x59\xb3\xa9\x57\x99\ \x3d\x3e\x61\xb1\x58\x9c\x1a\x2c\xcc\x02\xb6\xe6\xb2\x2d\x39\x4d\ \x53\xdc\x1a\x84\x28\xf3\xdf\x08\x54\x15\x45\xc8\xb2\x0c\xef\x63\ \x32\x11\xac\x9f\x7d\xdf\x15\x11\x8c\x31\x73\x32\x88\xa2\x68\x4d\ \xdd\x61\xc1\x9a\xb2\xd0\x90\x04\x69\x02\xf6\xf8\x38\x46\x1d\x04\ \x15\xac\xb5\xa8\xcc\x8e\x4e\x15\x09\x3a\x97\xd2\x5c\xf3\x12\xc5\ \x1a\x47\x3d\xcc\xa0\x4e\x89\x7d\x8c\x4d\xea\x0d\x4c\xa4\xd4\x93\ \x3a\x3f\x9c\xf8\x7e\x76\x78\x4d\xb0\x21\x04\xcc\x2a\x45\x55\x4b\ \x59\x74\x2d\xa2\x8e\x9d\xf8\x86\xa8\xa3\x99\x8d\xd8\xe9\xe9\x69\ \xac\xb7\x4c\x4c\x4d\x30\xf2\xe5\x08\xa9\x34\x9a\x7a\x46\x9a\x89\ \xa5\xac\x91\x4b\xd0\x34\x83\x46\x9a\x70\xe4\xcb\x23\x98\x08\x1a\ \x8d\x06\x76\xea\x8b\x09\x62\x9f\xa7\xbc\xb5\xc2\xeb\x87\xdf\xe0\ \xc8\xb1\x11\x10\x20\x18\x82\x86\xab\x76\x8a\x96\xa4\xfe\xab\x89\ \x08\x21\x04\x42\x08\x73\x91\x6b\xeb\x33\x6b\x1c\x58\xc3\xc1\x8f\ \x0e\x32\xfc\xe3\x30\x85\x6a\x9e\xf4\x42\x82\x73\xde\xbd\xd7\xb3\ \xb9\xf4\x5c\x79\x73\x85\xd1\xe9\x3f\x38\xfc\xf9\x61\x48\x1d\xbd\ \xa5\x0a\xdd\x1d\x5d\x08\x82\xc1\xac\xca\x02\x34\xc6\x34\xbd\xd5\ \xda\xcb\xa2\xab\x9f\x7f\xfb\x95\xd7\xde\x7d\x95\xb7\x3e\x7c\x9b\ \xd2\x8e\x5e\xfa\x37\x56\x39\x7d\xe8\x14\x66\x43\x79\xc3\x23\x6d\ \x03\xd1\xfe\xda\xfe\x87\x6a\x49\x7b\xc2\x85\xef\xc6\x19\x3f\x31\ \x4e\x6f\xa9\x97\xa2\x2d\x52\xa4\x03\x1b\x5b\x74\x99\x78\x17\x0b\ \xc0\xb3\x2c\xbb\x2c\xa6\x6a\xb1\xac\x0a\x63\x97\xce\x33\xee\xc6\ \xe8\xbd\xa9\x44\x79\x6b\x99\xf1\xa3\x67\x99\xfc\xa2\xfe\x82\xa9\ \x0e\x0c\x9a\x34\x0d\x0f\x77\x6c\x2b\xbe\x78\xd7\x93\xbb\x6a\x6d\ \x43\x05\x34\x18\x46\xcf\x8c\xd2\x98\x9a\x41\x26\x53\x1a\x64\x78\ \xef\x57\x34\x8a\x0a\x9a\xfd\xeb\x7d\xc6\x40\x57\x5f\x0f\x85\xee\ \x1c\xf9\x42\x91\xf3\x5f\x5f\xe0\xf8\xa1\xa3\xaf\x14\xfa\x0b\x2f\ \x37\xff\xe3\xa8\x56\x73\x72\x49\x7a\x28\xf2\x7c\xf9\x8e\xca\x81\ \xce\xa1\x22\x6d\xa5\x3c\xb9\xae\x36\xea\x49\x83\xbc\xcf\xb3\x5c\ \x45\xc8\x22\x8b\x55\x35\x5c\x31\x18\x6c\x49\x64\xe6\xe2\x25\x2e\ \x9e\x9a\xa2\x31\x16\x3e\x29\xdd\x59\x7a\xca\x17\xfc\xb8\x71\x46\ \xfe\x02\x18\x0f\xa2\x8d\xe6\x63\xa5\x8b\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ \x00\x00\x13\x80\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x22\x2e\x2e\x2f\x63\x6f\x6e\x74\x65\x6e\x74\x73\ \x22\x0a\x49\x74\x65\x6d\x20\x7b\x0a\x20\x20\x69\x64\x3a\x63\x6f\ \x6e\x74\x61\x69\x6e\x65\x72\x0a\x20\x20\x77\x69\x64\x74\x68\x3a\ \x33\x32\x30\x0a\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x34\x38\x30\ \x0a\x0a\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\ \x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x35\x0a\x20\x20\x20\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x20\x66\x6f\ \x6e\x74\x2e\x70\x6f\x69\x6e\x74\x53\x69\x7a\x65\x3a\x31\x35\x3b\ \x20\x74\x65\x78\x74\x3a\x22\x51\x75\x61\x64\x72\x61\x74\x69\x63\ \x20\x43\x75\x72\x76\x65\x22\x3b\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x68\x6f\x72\x69\x7a\x6f\x6e\x74\x61\x6c\x43\x65\x6e\x74\x65\ \x72\x3a\x70\x61\x72\x65\x6e\x74\x2e\x68\x6f\x72\x69\x7a\x6f\x6e\ \x74\x61\x6c\x43\x65\x6e\x74\x65\x72\x7d\x0a\x0a\x20\x20\x20\x20\ \x43\x61\x6e\x76\x61\x73\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x69\ \x64\x3a\x63\x61\x6e\x76\x61\x73\x0a\x20\x20\x20\x20\x20\x20\x77\ \x69\x64\x74\x68\x3a\x33\x32\x30\x0a\x20\x20\x20\x20\x20\x20\x68\ \x65\x69\x67\x68\x74\x3a\x32\x38\x30\x0a\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\ \x73\x74\x72\x6f\x6b\x65\x53\x74\x79\x6c\x65\x3a\x22\x73\x74\x65\ \x65\x6c\x62\x6c\x75\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x66\x69\ \x6c\x6c\x53\x74\x79\x6c\x65\x3a\x22\x79\x65\x6c\x6c\x6f\x77\x22\ \x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\ \x69\x6e\x74\x20\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x3a\x6c\x69\ \x6e\x65\x57\x69\x64\x74\x68\x43\x74\x72\x6c\x2e\x76\x61\x6c\x75\ \x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\ \x20\x62\x6f\x6f\x6c\x20\x66\x69\x6c\x6c\x3a\x74\x72\x75\x65\x0a\ \x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x62\ \x6f\x6f\x6c\x20\x73\x74\x72\x6f\x6b\x65\x3a\x74\x72\x75\x65\x0a\ \x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\ \x65\x61\x6c\x20\x61\x6c\x70\x68\x61\x3a\x61\x6c\x70\x68\x61\x43\ \x74\x72\x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\ \x70\x72\x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x73\x63\ \x61\x6c\x65\x58\x20\x3a\x20\x73\x63\x61\x6c\x65\x58\x43\x74\x72\ \x6c\x2e\x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\ \x6f\x70\x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x73\x63\x61\x6c\ \x65\x59\x20\x3a\x20\x73\x63\x61\x6c\x65\x59\x43\x74\x72\x6c\x2e\ \x76\x61\x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x72\x65\x61\x6c\x20\x72\x6f\x74\x61\x74\x65\ \x20\x3a\x20\x72\x6f\x74\x61\x74\x65\x43\x74\x72\x6c\x2e\x76\x61\ \x6c\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x61\x6e\x74\x69\x61\x6c\ \x69\x61\x73\x69\x6e\x67\x3a\x20\x74\x72\x75\x65\x0a\x0a\x20\x20\ \x20\x20\x20\x20\x6f\x6e\x4c\x69\x6e\x65\x57\x69\x64\x74\x68\x43\ \x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\ \x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x6f\x6e\x46\ \x69\x6c\x6c\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\ \x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x6f\x6e\x53\x74\x72\x6f\x6b\x65\x43\x68\x61\x6e\x67\x65\x64\ \x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x6f\x6e\x41\x6c\x70\x68\x61\x43\x68\ \x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\ \x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x6f\x6e\x53\x63\ \x61\x6c\x65\x58\x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\ \x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x6f\x6e\x53\x63\x61\x6c\x65\x59\x43\x68\x61\x6e\x67\x65\ \x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\x61\x69\x6e\x74\x28\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x6f\x6e\x52\x6f\x74\x61\x74\x65\ \x43\x68\x61\x6e\x67\x65\x64\x3a\x72\x65\x71\x75\x65\x73\x74\x50\ \x61\x69\x6e\x74\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x42\x65\ \x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x73\x63\x61\x6c\x65\x58\ \x20\x7b\x20\x53\x70\x72\x69\x6e\x67\x41\x6e\x69\x6d\x61\x74\x69\ \x6f\x6e\x20\x7b\x20\x73\x70\x72\x69\x6e\x67\x3a\x20\x32\x3b\x20\ \x64\x61\x6d\x70\x69\x6e\x67\x3a\x20\x30\x2e\x32\x3b\x20\x6c\x6f\ \x6f\x70\x73\x3a\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x2e\x49\x6e\ \x66\x69\x6e\x69\x74\x65\x20\x7d\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x73\x63\x61\ \x6c\x65\x59\x20\x7b\x20\x53\x70\x72\x69\x6e\x67\x41\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x20\x7b\x20\x73\x70\x72\x69\x6e\x67\x3a\x20\ \x32\x3b\x20\x64\x61\x6d\x70\x69\x6e\x67\x3a\x20\x30\x2e\x32\x3b\ \x20\x6c\x6f\x6f\x70\x73\x3a\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\ \x2e\x49\x6e\x66\x69\x6e\x69\x74\x65\x7d\x20\x7d\x0a\x20\x20\x20\ \x20\x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x72\ \x6f\x74\x61\x74\x65\x20\x7b\x20\x53\x70\x72\x69\x6e\x67\x41\x6e\ \x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x73\x70\x72\x69\x6e\x67\ \x3a\x20\x32\x3b\x20\x64\x61\x6d\x70\x69\x6e\x67\x3a\x20\x30\x2e\ \x32\x3b\x20\x6c\x6f\x6f\x70\x73\x3a\x41\x6e\x69\x6d\x61\x74\x69\ \x6f\x6e\x2e\x49\x6e\x66\x69\x6e\x69\x74\x65\x7d\x20\x7d\x0a\x0a\ \x20\x20\x20\x20\x20\x20\x6f\x6e\x50\x61\x69\x6e\x74\x3a\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x76\x61\x72\x20\x63\ \x74\x78\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x67\x65\x74\x43\ \x6f\x6e\x74\x65\x78\x74\x28\x27\x32\x64\x27\x29\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\x61\x76\x65\ \x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x63\x6c\x65\x61\x72\x52\x65\x63\x74\x28\x30\x2c\x20\x30\ \x2c\x20\x63\x61\x6e\x76\x61\x73\x2e\x77\x69\x64\x74\x68\x2c\x20\ \x63\x61\x6e\x76\x61\x73\x2e\x68\x65\x69\x67\x68\x74\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x67\x6c\ \x6f\x62\x61\x6c\x41\x6c\x70\x68\x61\x20\x3d\x20\x63\x61\x6e\x76\ \x61\x73\x2e\x61\x6c\x70\x68\x61\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x73\x74\x72\x6f\x6b\x65\x53\x74\ \x79\x6c\x65\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x73\x74\x72\ \x6f\x6b\x65\x53\x74\x79\x6c\x65\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x53\x74\x79\x6c\ \x65\x20\x3d\x20\x63\x61\x6e\x76\x61\x73\x2e\x66\x69\x6c\x6c\x53\ \x74\x79\x6c\x65\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x63\x74\x78\x2e\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\x20\x3d\x20\ \x63\x61\x6e\x76\x61\x73\x2e\x6c\x69\x6e\x65\x57\x69\x64\x74\x68\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x73\x63\x61\x6c\x65\x28\x63\x61\x6e\x76\x61\x73\x2e\x73\x63\x61\ \x6c\x65\x58\x2c\x20\x63\x61\x6e\x76\x61\x73\x2e\x73\x63\x61\x6c\ \x65\x59\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\ \x74\x78\x2e\x72\x6f\x74\x61\x74\x65\x28\x63\x61\x6e\x76\x61\x73\ \x2e\x72\x6f\x74\x61\x74\x65\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x2f\x2f\x20\x21\x5b\x30\x5d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x62\x65\x67\x69\x6e\x50\ \x61\x74\x68\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x63\x74\x78\x2e\x6d\x6f\x76\x65\x54\x6f\x28\x37\x35\x2c\x32\ \x35\x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\ \x78\x2e\x71\x75\x61\x64\x72\x61\x74\x69\x63\x43\x75\x72\x76\x65\ \x54\x6f\x28\x32\x35\x2c\x32\x35\x2c\x32\x35\x2c\x36\x32\x2e\x35\ \x29\x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\ \x2e\x71\x75\x61\x64\x72\x61\x74\x69\x63\x43\x75\x72\x76\x65\x54\ \x6f\x28\x32\x35\x2c\x31\x30\x30\x2c\x35\x30\x2c\x31\x30\x30\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x71\x75\x61\x64\x72\x61\x74\x69\x63\x43\x75\x72\x76\x65\x54\x6f\ \x28\x35\x30\x2c\x31\x32\x30\x2c\x33\x30\x2c\x31\x32\x35\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x71\ \x75\x61\x64\x72\x61\x74\x69\x63\x43\x75\x72\x76\x65\x54\x6f\x28\ \x36\x30\x2c\x31\x32\x30\x2c\x36\x35\x2c\x31\x30\x30\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x71\x75\ \x61\x64\x72\x61\x74\x69\x63\x43\x75\x72\x76\x65\x54\x6f\x28\x31\ \x32\x35\x2c\x31\x30\x30\x2c\x31\x32\x35\x2c\x36\x32\x2e\x35\x29\ \x3b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\ \x71\x75\x61\x64\x72\x61\x74\x69\x63\x43\x75\x72\x76\x65\x54\x6f\ \x28\x31\x32\x35\x2c\x32\x35\x2c\x37\x35\x2c\x32\x35\x29\x3b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x63\x6c\ \x6f\x73\x65\x50\x61\x74\x68\x28\x29\x3b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x2f\x2f\x20\x21\x5b\x30\x5d\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\x61\x6e\x76\x61\ \x73\x2e\x66\x69\x6c\x6c\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x28\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\ \x61\x6e\x76\x61\x73\x2e\x73\x74\x72\x6f\x6b\x65\x29\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x73\ \x74\x72\x6f\x6b\x65\x28\x29\x3b\x0a\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x2f\x2f\x20\x21\x5b\x31\x5d\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x69\x6c\x6c\x53\ \x74\x79\x6c\x65\x3d\x22\x67\x72\x65\x65\x6e\x22\x3b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\x6f\x6e\x74\ \x20\x3d\x20\x22\x42\x6f\x6c\x64\x20\x31\x35\x70\x78\x22\x3b\x0a\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\x2e\x66\ \x69\x6c\x6c\x54\x65\x78\x74\x28\x22\x51\x4d\x4c\xe9\x85\xb7\xe6\ \xaf\x99\xe4\xba\x86\x22\x2c\x20\x33\x30\x2c\x20\x36\x30\x29\x3b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x20\x21\x5b\ \x31\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x74\x78\ \x2e\x72\x65\x73\x74\x6f\x72\x65\x28\x29\x3b\x0a\x20\x20\x20\x20\ \x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x52\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x69\x64\x3a\x63\x6f\x6e\x74\x72\x6f\x6c\x73\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x33\x32\x30\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\ \x31\x35\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x43\x6f\x6c\x75\ \x6d\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\ \x70\x61\x63\x69\x6e\x67\x3a\x33\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\x6c\x69\ \x6e\x65\x57\x69\x64\x74\x68\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\ \x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\ \x30\x3b\x20\x6d\x69\x6e\x3a\x31\x3b\x20\x6d\x61\x78\x3a\x31\x30\ \x3b\x20\x69\x6e\x69\x74\x3a\x32\x3b\x20\x6e\x61\x6d\x65\x3a\x22\ \x4c\x69\x6e\x65\x20\x77\x69\x64\x74\x68\x22\x7d\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\ \x64\x3a\x73\x63\x61\x6c\x65\x58\x43\x74\x72\x6c\x3b\x20\x77\x69\ \x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\ \x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\x2e\x31\x3b\x20\x6d\x61\x78\ \x3a\x31\x30\x3b\x20\x69\x6e\x69\x74\x3a\x31\x3b\x20\x6e\x61\x6d\ \x65\x3a\x22\x53\x63\x61\x6c\x65\x58\x22\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\ \x3a\x73\x63\x61\x6c\x65\x59\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\ \x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\ \x30\x3b\x20\x6d\x69\x6e\x3a\x30\x2e\x31\x3b\x20\x6d\x61\x78\x3a\ \x31\x30\x3b\x20\x69\x6e\x69\x74\x3a\x31\x3b\x20\x6e\x61\x6d\x65\ \x3a\x22\x53\x63\x61\x6c\x65\x59\x22\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\x7b\x69\x64\x3a\ \x72\x6f\x74\x61\x74\x65\x43\x74\x72\x6c\x3b\x20\x77\x69\x64\x74\ \x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\x3a\x32\x30\ \x3b\x20\x6d\x69\x6e\x3a\x30\x3b\x20\x6d\x61\x78\x3a\x4d\x61\x74\ \x68\x2e\x50\x49\x2a\x32\x3b\x20\x69\x6e\x69\x74\x3a\x30\x3b\x20\ \x6e\x61\x6d\x65\x3a\x22\x52\x6f\x74\x61\x74\x65\x22\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6c\x69\x64\x65\x72\x20\ \x7b\x69\x64\x3a\x61\x6c\x70\x68\x61\x43\x74\x72\x6c\x3b\x20\x77\ \x69\x64\x74\x68\x3a\x33\x30\x30\x3b\x20\x68\x65\x69\x67\x68\x74\ \x3a\x32\x30\x3b\x20\x6d\x69\x6e\x3a\x30\x3b\x20\x6d\x61\x78\x3a\ \x31\x3b\x20\x69\x6e\x69\x74\x3a\x31\x3b\x20\x6e\x61\x6d\x65\x3a\ \x22\x41\x6c\x70\x68\x61\x22\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x7d\x0a\x7d\x0a\ " qt_resource_name = b"\ \x00\x06\ \x06\x98\x5c\x83\ \x00\x63\ \x00\x61\x00\x6e\x00\x76\x00\x61\x00\x73\ \x00\x10\ \x0d\xc6\xb9\xaf\ \x00\x71\ \x00\x75\x00\x61\x00\x64\x00\x72\x00\x61\x00\x74\x00\x69\x00\x63\x00\x43\x00\x75\x00\x72\x00\x76\x00\x65\x00\x54\x00\x6f\ \x00\x08\ \x06\x5a\xc8\xf3\ \x00\x63\ \x00\x6f\x00\x6e\x00\x74\x00\x65\x00\x6e\x00\x74\x00\x73\ \x00\x08\ \x08\xc0\x89\x65\ \x00\x73\ \x00\x71\x00\x75\x00\x69\x00\x72\x00\x63\x00\x6c\x00\x65\ \x00\x05\ \x00\x7a\x40\x25\ \x00\x73\ \x00\x6d\x00\x69\x00\x6c\x00\x65\ \x00\x05\ \x00\x7a\xfd\xc2\ \x00\x74\ \x00\x69\x00\x67\x00\x65\x00\x72\ \x00\x0b\ \x0c\xbb\x68\x25\ \x00\x62\ \x00\x65\x00\x7a\x00\x69\x00\x65\x00\x72\x00\x43\x00\x75\x00\x72\x00\x76\x00\x65\ \x00\x0b\ \x0a\x49\x53\x24\ \x00\x72\ \x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x65\x00\x64\x00\x72\x00\x65\x00\x63\x00\x74\ \x00\x04\ \x00\x06\xa3\x00\ \x00\x63\ \x00\x6c\x00\x69\x00\x70\ \x00\x0a\ \x0c\x8b\x68\x9c\ \x00\x63\ \x00\x61\x00\x6e\x00\x76\x00\x61\x00\x73\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x08\ \x03\x03\x5d\x7c\ \x00\x63\ \x00\x6c\x00\x69\x00\x70\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0f\ \x03\x33\xc6\x9c\ \x00\x72\ \x00\x6f\x00\x75\x00\x6e\x00\x64\x00\x65\x00\x64\x00\x72\x00\x65\x00\x63\x00\x74\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0f\ \x08\x41\x22\xfc\ \x00\x62\ \x00\x65\x00\x7a\x00\x69\x00\x65\x00\x72\x00\x43\x00\x75\x00\x72\x00\x76\x00\x65\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x09\ \x0d\xc5\xa5\xdc\ \x00\x74\ \x00\x69\x00\x67\x00\x65\x00\x72\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x08\ \x0f\xdc\x5a\x53\ \x00\x74\ \x00\x69\x00\x67\x00\x65\x00\x72\x00\x2e\x00\x6a\x00\x73\ \x00\x09\ \x00\x28\xa4\xbc\ \x00\x73\ \x00\x6d\x00\x69\x00\x6c\x00\x65\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0c\ \x09\x79\xd6\x47\ \x00\x73\ \x00\x71\x00\x75\x00\x69\x00\x72\x00\x63\x00\x6c\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x09\x79\xd9\x3c\ \x00\x73\ \x00\x71\x00\x75\x00\x69\x00\x72\x00\x63\x00\x6c\x00\x65\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0a\ \x0b\x68\x71\x5c\ \x00\x42\ \x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0a\ \x0a\xce\x15\xdc\ \x00\x53\ \x00\x6c\x00\x69\x00\x64\x00\x65\x00\x72\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0b\ \x08\x33\x9c\x3c\ \x00\x54\ \x00\x6f\x00\x6f\x00\x6c\x00\x42\x00\x61\x00\x72\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0c\ \x03\xe4\x35\x1c\ \x00\x54\ \x00\x69\x00\x74\x00\x6c\x00\x65\x00\x42\x00\x61\x00\x72\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x0d\ \x0b\xd7\x93\x5c\ \x00\x53\ \x00\x63\x00\x72\x00\x6f\x00\x6c\x00\x6c\x00\x42\x00\x61\x00\x72\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0b\ \x05\x52\xbf\x27\ \x00\x71\ \x00\x74\x00\x2d\x00\x6c\x00\x6f\x00\x67\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x0c\xe2\x23\xc7\ \x00\x64\ \x00\x65\x00\x66\x00\x61\x00\x75\x00\x6c\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x12\ \x01\x4a\xa3\xa7\ \x00\x62\ \x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x2d\x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\ \x00\x67\ \x00\x0c\ \x07\xe4\x32\x27\ \x00\x74\ \x00\x69\x00\x74\x00\x6c\x00\x65\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x07\xa4\x70\xe7\ \x00\x74\ \x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x0b\x6c\x6e\x27\ \x00\x62\ \x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x06\x33\x25\x47\ \x00\x73\ \x00\x74\x00\x72\x00\x69\x00\x70\x00\x65\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x06\xa6\x8b\x27\ \x00\x67\ \x00\x6c\x00\x6f\x00\x73\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x0c\x07\x58\x47\ \x00\x71\ \x00\x75\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x05\x67\xce\xf9\ \x00\x6c\ \x00\x69\x00\x6e\x00\x65\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x73\x00\x63\x00\x69\ \x00\x0c\ \x07\xe4\x3c\xf9\ \x00\x74\ \x00\x69\x00\x74\x00\x6c\x00\x65\x00\x62\x00\x61\x00\x72\x00\x2e\x00\x73\x00\x63\x00\x69\ \x00\x0e\ \x07\xa4\x7e\x39\ \x00\x74\ \x00\x6f\x00\x6f\x00\x6c\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x2e\x00\x73\x00\x63\x00\x69\ \x00\x0c\ \x05\x67\xc0\x27\ \x00\x6c\ \x00\x69\x00\x6e\x00\x65\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x14\ \x09\xad\xdd\x5c\ \x00\x71\ \x00\x75\x00\x61\x00\x64\x00\x72\x00\x61\x00\x74\x00\x69\x00\x63\x00\x43\x00\x75\x00\x72\x00\x76\x00\x65\x00\x54\x00\x6f\x00\x2e\ \x00\x71\x00\x6d\x00\x6c\ " qt_resource_struct_v1 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\ \x00\x00\x00\xbc\x00\x02\x00\x00\x00\x01\x00\x00\x00\x26\ \x00\x00\x00\x64\x00\x02\x00\x00\x00\x01\x00\x00\x00\x25\ \x00\x00\x00\x74\x00\x02\x00\x00\x00\x02\x00\x00\x00\x23\ \x00\x00\x00\x38\x00\x02\x00\x00\x00\x07\x00\x00\x00\x10\ \x00\x00\x00\x4e\x00\x02\x00\x00\x00\x02\x00\x00\x00\x0e\ \x00\x00\x00\xa0\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0d\ \x00\x00\x00\xca\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x84\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0c\ \x00\x00\x00\x12\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0b\ \x00\x00\x03\xe6\x00\x00\x00\x00\x00\x01\x00\x02\xbe\xaa\ \x00\x00\x01\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x33\x84\ \x00\x00\x00\xfa\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xb2\ \x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x01\xda\xbf\ \x00\x00\x01\xa6\x00\x00\x00\x00\x00\x01\x00\x01\xdd\xc6\ \x00\x00\x02\x14\x00\x00\x00\x00\x00\x01\x00\x02\x17\xfa\ \x00\x00\x02\x64\x00\x00\x00\x00\x00\x01\x00\x02\x30\x4b\ \x00\x00\x02\x52\x00\x02\x00\x00\x00\x0c\x00\x00\x00\x17\ \x00\x00\x01\xf8\x00\x00\x00\x00\x00\x01\x00\x02\x0d\xf2\ \x00\x00\x01\xde\x00\x00\x00\x00\x00\x01\x00\x01\xfe\xa3\ \x00\x00\x01\xc4\x00\x00\x00\x00\x00\x01\x00\x01\xf2\xcd\ \x00\x00\x02\x32\x00\x00\x00\x00\x00\x01\x00\x02\x23\x08\ \x00\x00\x02\x9c\x00\x00\x00\x00\x00\x01\x00\x02\x94\xdb\ \x00\x00\x03\xc8\x00\x00\x00\x00\x00\x01\x00\x02\xb9\x1f\ \x00\x00\x03\x6a\x00\x00\x00\x00\x00\x01\x00\x02\xb8\x0e\ \x00\x00\x03\x20\x00\x00\x00\x00\x00\x01\x00\x02\xa8\xec\ \x00\x00\x03\x3c\x00\x00\x00\x00\x00\x01\x00\x02\xa9\xf1\ \x00\x00\x02\xe4\x00\x00\x00\x00\x00\x01\x00\x02\x9c\xba\ \x00\x00\x03\xa6\x00\x00\x00\x00\x00\x01\x00\x02\xb8\xc4\ \x00\x00\x02\xc6\x00\x00\x00\x00\x00\x01\x00\x02\x97\x1a\ \x00\x00\x03\x88\x00\x00\x00\x00\x00\x01\x00\x02\xb8\x69\ \x00\x00\x03\x06\x00\x00\x00\x00\x00\x01\x00\x02\xa6\xb4\ \x00\x00\x03\x54\x00\x00\x00\x00\x00\x01\x00\x02\xae\xc9\ \x00\x00\x02\x80\x00\x01\x00\x00\x00\x01\x00\x02\x8c\x2e\ \x00\x00\x01\x42\x00\x00\x00\x00\x00\x01\x00\x00\x46\x00\ \x00\x00\x01\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x59\x04\ \x00\x00\x01\x70\x00\x00\x00\x00\x00\x01\x00\x01\xc6\xf4\ \x00\x00\x00\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x01\ " qt_resource_struct_v2 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\xbc\x00\x02\x00\x00\x00\x01\x00\x00\x00\x26\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x64\x00\x02\x00\x00\x00\x01\x00\x00\x00\x25\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x74\x00\x02\x00\x00\x00\x02\x00\x00\x00\x23\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x38\x00\x02\x00\x00\x00\x07\x00\x00\x00\x10\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x4e\x00\x02\x00\x00\x00\x02\x00\x00\x00\x0e\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\xa0\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0d\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\xca\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x00\x84\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0c\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x12\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0b\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x03\xe6\x00\x00\x00\x00\x00\x01\x00\x02\xbe\xaa\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x01\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x33\x84\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x00\xfa\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xb2\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x01\xda\xbf\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x01\xa6\x00\x00\x00\x00\x00\x01\x00\x01\xdd\xc6\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x02\x14\x00\x00\x00\x00\x00\x01\x00\x02\x17\xfa\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x02\x64\x00\x00\x00\x00\x00\x01\x00\x02\x30\x4b\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x02\x52\x00\x02\x00\x00\x00\x0c\x00\x00\x00\x17\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\xf8\x00\x00\x00\x00\x00\x01\x00\x02\x0d\xf2\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x01\xde\x00\x00\x00\x00\x00\x01\x00\x01\xfe\xa3\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x01\xc4\x00\x00\x00\x00\x00\x01\x00\x01\xf2\xcd\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x02\x32\x00\x00\x00\x00\x00\x01\x00\x02\x23\x08\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x02\x9c\x00\x00\x00\x00\x00\x01\x00\x02\x94\xdb\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x03\xc8\x00\x00\x00\x00\x00\x01\x00\x02\xb9\x1f\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x03\x6a\x00\x00\x00\x00\x00\x01\x00\x02\xb8\x0e\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x03\x20\x00\x00\x00\x00\x00\x01\x00\x02\xa8\xec\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x03\x3c\x00\x00\x00\x00\x00\x01\x00\x02\xa9\xf1\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x02\xe4\x00\x00\x00\x00\x00\x01\x00\x02\x9c\xba\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x03\xa6\x00\x00\x00\x00\x00\x01\x00\x02\xb8\xc4\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x02\xc6\x00\x00\x00\x00\x00\x01\x00\x02\x97\x1a\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x03\x88\x00\x00\x00\x00\x00\x01\x00\x02\xb8\x69\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x03\x06\x00\x00\x00\x00\x00\x01\x00\x02\xa6\xb4\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x03\x54\x00\x00\x00\x00\x00\x01\x00\x02\xae\xc9\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x02\x80\x00\x01\x00\x00\x00\x01\x00\x02\x8c\x2e\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x01\x42\x00\x00\x00\x00\x00\x01\x00\x00\x46\x00\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x01\x5a\x00\x00\x00\x00\x00\x01\x00\x00\x59\x04\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x01\x70\x00\x00\x00\x00\x00\x01\x00\x01\xc6\xf4\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x00\xe4\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x01\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ " qt_version = QtCore.qVersion().split('.') if qt_version < ['5', '8', '0']: rcc_version = 1 qt_resource_struct = qt_resource_struct_v1 else: rcc_version = 2 qt_resource_struct = qt_resource_struct_v2 def qInitResources(): QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt5_gpl-5.10.1/examples/quick/canvas/clip/0000755000076500000240000000000013245231431020633 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/canvas/clip/clip.qml0000644000076500000240000001165513245231431022305 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import "../contents" Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Makes squircle icon with clip"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 property string strokeStyle:"blue" property string fillStyle:"steelblue" property int lineWidth:2 property int nSize:nCtrl.value property real radius:rCtrl.value property bool fill:true property bool stroke:false property real px:xCtrl.value property real py:yCtrl.value property real alpha:alphaCtrl.value property string imagefile:"../contents/qt-logo.png" antialiasing: true Component.onCompleted:loadImage(canvas.imagefile); onAlphaChanged:requestPaint(); onRadiusChanged:requestPaint(); onLineWidthChanged:requestPaint(); onNSizeChanged:requestPaint(); onFillChanged:requestPaint(); onStrokeChanged:requestPaint(); onPxChanged:requestPaint(); onPyChanged:requestPaint(); onImageLoaded : requestPaint(); onPaint: squcirle(); function squcirle() { var ctx = canvas.getContext("2d"); var N = canvas.nSize; var R = canvas.radius; N=Math.abs(N); var M=N; if (N>100) M=100; if (N<0.00000000001) M=0.00000000001; ctx.save(); ctx.globalAlpha =canvas.alpha; ctx.fillStyle = "gray"; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.strokeStyle = canvas.strokeStyle; ctx.fillStyle = canvas.fillStyle; ctx.lineWidth = canvas.lineWidth; ctx.beginPath(); var i = 0, x, y; for (i=0; i<(2*R+1); i++){ x = Math.round(i-R) + canvas.px; y = Math.round(Math.pow(Math.abs(Math.pow(R,M)-Math.pow(Math.abs(i-R),M)),1/M)) + canvas.py; if (i == 0) ctx.moveTo(x, y); else ctx.lineTo(x, y); } for (i=(2*R); i<(4*R+1); i++){ x =Math.round(3*R-i)+canvas.px; y = Math.round(-Math.pow(Math.abs(Math.pow(R,M)-Math.pow(Math.abs(3*R-i),M)),1/M)) + canvas.py; ctx.lineTo(x, y); } ctx.closePath(); if (canvas.stroke) { ctx.stroke(); } if (canvas.fill) { ctx.fill(); } //! [0] ctx.clip(); ctx.drawImage(canvas.imagefile, 0, 0); //! [0] ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:nCtrl; width:300; height:20; min:1; max:10; init:4; name:"N"} Slider {id:rCtrl; width:300; height:20; min:30; max:180; init:100; name:"Radius"} Slider {id:xCtrl; width:300; height:20; min:50; max:300; init:180; name:"X"} Slider {id:yCtrl; width:300; height:20; min:30; max:300; init:220; name:"Y"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } PyQt5_gpl-5.10.1/examples/quick/canvas/contents/0000755000076500000240000000000013245231431021541 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/canvas/contents/Button.qml0000644000076500000240000000572213245231431023535 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Item { id: container signal clicked property string text width: buttonText.width + 28 height: buttonText.height + 14 BorderImage { id: buttonImage source: "images/toolbutton.sci" width: container.width - 10 height: container.height } BorderImage { id: pressed opacity: 0 source: "images/toolbutton.sci" width: container.width - 10 height: container.height } MouseArea { id: mouseRegion anchors.fill: buttonImage onClicked: { container.clicked(); } } Text { id: buttonText color: "white" anchors.centerIn: buttonImage font.bold: true font.pointSize: 15 text: container.text style: Text.Raised styleColor: "black" } states: [ State { name: "Pressed" when: mouseRegion.pressed == true PropertyChanges { target: pressed; opacity: 1 } } ] } PyQt5_gpl-5.10.1/examples/quick/canvas/contents/images/0000755000076500000240000000000013245231431023006 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/canvas/contents/images/button-pressed.png0000644000076500000240000000107313245231431026473 0ustar philstaff00000000000000‰PNG  IHDR^ÙÚ‚”sRGB®ÎébKGDÿ‡Ì¿ pHYs!›ò3tIMEÙ.!Ä3tEXtCommentCreated with GIMPWšIDATXÃÕ×½nÔPàoîÞì&«h¡áM"Äñ˜©hBhyz$ BÁÏm²¾ëý³D {*[wF>çøŒg—Š+?ý6S)º=}'žÈü0+#ÏÅÎq[Iб/¾ùFUž9÷Áut $yéOå{ä™cçÞšZªjn펉 œù,Ó÷ÎÄÔ²õ¦YE¶páµJ†+SK‹–‚mJ¹@6—$X¶zÓÈ!,ÍëwÐz›Ü݇IG#º ¾¶M(µ‹º¶ž®/:£ø¡Xcî«Züµ¹ |k›¾Ò)ógi­|»;·ú[Ã’D >:A vÁ“vUì ææ¢ü¯§÷«Þ½kÖõIµG!¶ ›ôÔZÕ{µ¼UÓ6«M­9v㖵衶*÷ª]e—èJõ"6Ö(3ÅÐxvì=&6é‡x@vHŠ¢’¨QCR a ËÌz_³ÜG«ý?–áØ(¿«òÂıÜ7w&ûèW à޵˯€,8õÊ7#qiL9Òë̘ªÌLˆ§2#7qݱ}rè^z«G×F˜IEND®B`‚PyQt5_gpl-5.10.1/examples/quick/canvas/contents/images/button.png0000644000076500000240000000106413245231431025030 0ustar philstaff00000000000000‰PNG  IHDR^ÙÚ‚”sRGB®ÎébKGDÿ‡Ì¿ pHYs!›ò3tIMEÙ-‘ ëÏtEXtCommentCreated with GIMPW“IDATXÃÕ–»NÃ0†?'Nz‘€‰7a@b 11ð¤,0 6Ô`ae)ˆ–*MBíÃK“¦­!!ûxðåØÒç“?ÇGM”¿,fh˜ƒŒ <·ä$$êʘ{&Ìj·rTj`0sÊï2Sê•¡<ðÈO‰­º€”ȶq€s®ùPDL0X,Á–¤n¶öýwk£W+Ë3chP$ =¥úUëÃ#õ‡ªž»+ìfÌ¥PÆ ]¸W-lëØÚ·@X®ëµ¶L+B›ñ’Þ~§›³î9)¡7ƒªÛ·S-¡Ð™õóö;-;Æf vq!]¡[‡óú®ZËÆ]øÝ¦AÈÉXy]é_ä¤^ÁëfŸ–/¬aªVÈ<‹¼)ûÍ[ø:Ï+@·•ëº(1CpVõÝw8$ZÃ`Èö<ê®%ʘQQ˜å\pGˆÁz !Ð ¸dI€ŽYp<±ÜS¹”_FœqË 1jÊ'¹ wÊW­¨zç¼:AM¾ùbA^Æ®[HÌ1‡üèÑìêBûÏÂIEND®B`‚PyQt5_gpl-5.10.1/examples/quick/canvas/contents/images/default.svg0000644000076500000240000001644213245231431025162 0ustar philstaff00000000000000 image/svg+xml weather-clear January 2006 Ryan Collier (pseudo) http://www.tango-project.org http://www.pseudocode.org weather applet notification Garrett LeSage PyQt5_gpl-5.10.1/examples/quick/canvas/contents/images/gloss.png0000644000076500000240000000232413245231431024644 0ustar philstaff00000000000000‰PNG  IHDROOª4˜†sRGB®ÎébKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÙË’¿tTIDATxÚí\ÙR1l­—`Ìmã¹øÿ/ËGxòàqP ­VÇèXª(\®•½jM÷ôÌ =á8Hûñ{êu‰yPJ¡Å1ÐïL7o{O‹SóÌkc爨EGÃÌ¢HØy€À z÷5‰ã0‰Sר J*GÄ97„ÉÚ ê‘çC9×¢”,ªú‚h¥sMGí¦¦Úµ‡ „€ï¤ø‰Ò¥At=£È.§ÞŶÃàh`ÕÏ.“LŽI©H”h‡)M³Úœ1‚ªÈpÃY+„yÎúÙe’i¢îÕ‘œ MÕÒ¨úÙ¤mŽffޤ!ÞÖŠù>Óª²†´Væ-2Ï´*>Ѳ¤J#ǦýÇÀe’kéÖuBt+Vï|œÙʳR»ÁS‹Ê1Ï)WSÙ6ôáMi‹‘Ò{Ö<ø `ïb¦@,åæÚa"²£ˆH1x?œŒnrêq ý³%çÍÝSè÷y½VZéqà7€­åñÐg]r5OµÛ) iQ˜k×KQMôù× àìÇ0JP'Wä‹1F9– îY ¯Ö­j‘ïl—r®<øàKÊQd’¢„ävp=9Ï«i¯%”¬‰CzKK±ï zâÁ¶æ–A¼[hÛìàçmZV¾g¯m«Z™7Wr §íŒn<¸iØbd‰D‘sD´b[ó`S‰rÅ“ØÉŽÄÀWŽÄQ:Z$牟»bGÖÄgMs,*&‚Åt9Ûé?MoÄ»™Hl…âÞ 9Ê@^²ÙÞrÝÜU“À/zšAp84Z˘äL@l¶wš6Öl‚ÖɶÑxÆ™zÏ™zh­~nóo1í´ÞñÏ¥…ÖU*”æÁ³ÐúеQ§uû²(ð,´Þr¶Þ8ª˜lïE‚gé1^øÆÚxV¨ÒÀâÁ3@\kü\Ø\çiI5Hé/œ\P… }¿ž%Á<0ˆf)X¯“¼0õÙ¥?xF‹l‹cÇûâÛ䌑¸çÙ:Ö\JðŒÄòÈ ®B#ñÓ‚g€¸a*ï ³m’…}âÞÎæÌšëž½ì;ÍÐZ'y! ÞàxØóf*óvðÜ žNˆ½àíøôÈ ŒÂ+pl΢ƒg°_X W¶q î¼Xwðâ}ák/ÀŽ]}ôÑG}ôÑG}ôÑGãàì^QÒ.ÁIEND®B`‚PyQt5_gpl-5.10.1/examples/quick/canvas/contents/images/lineedit.png0000644000076500000240000000260713245231431025316 0ustar philstaff00000000000000‰PNG  IHDR,&¿ygsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ*g?…–tEXtCommentCreated with GIMPWâIDATXÃí™Ûk\UÅûrÎL&“Û43I&öõRªö¢¢/£ú$BE}SŸ‹à“TÿýÄ•¢/‚—*úPƒ ´Z/µµj­iÒÆ4éäÌ9ûû|˜LLl5IIšûÁæÀÌ>gÖ^{íµÏ^c˜W[^®l«(ßÚG¾?‡i³š ׺\sþô8gþN±¿}xðžÁDZŒ€j÷@ÉnrïìzzW­tK A2¡‘e¤.Å©ÃZ»¬4Æüç÷ª:÷LYpO(ŠÈƒQÙ‘sœ:r’Ï¾r_çÆî7ïyioÍÇ–z’¥sª@WW‘æPιgq>`UŃª""Œ]e4;GÏ@_àcgùõý_†½-ÚG·>±¹æ½eòìLÅ<}ß3ìÜE¹¯Œ·~Q¶VºD„ŸÆNòñW‡øàÛ‘›aàö ãÇÏÕÜÆC#Û÷m'kdÌrà±—¸ó½tt‘F˲å°TP-´Ø_]¾=›öPŠ7ðÙWÄ(£{¨Œ­l)cÔñç…Iöݽ۪·|@Œ@¬`´©¹ +ÚŒ¢h¹k«!ŠD`bÃ;`÷à^’É¢/TÚIÒ:~̰»'¨»Üì8£¿‘³«*ƒ²iL)¹\LmKO?ú„öþN¼”¬!tº¹ihÎúJ³¼Ë-[Ǫºdiõ]p(š†ºª8õD.‡ÏHêÓÓä}®igšÚIJ”Ë/ ÀÕØZ«ß•ú2\Î’%3ÄŧyÀâ½Ä `Å6§Åò¦­iÞ¹hÉ–[‹=ϹUÅ{UCrqªi…‹N­„e³»šeW‚5¼žÀ]ÃÆºë ðº×ð?ÁëÖ·†×=ÃÆk¼ŒÌ£xM€Íߪ[WUÅrÕ À7ÿ/_W>¼î6Æâ‰xÝz`×Ó<ã©â8× !¤dYcÞîÆ\ ±V»œª‚5(‚3Ž4 Xk±"ÍSªÅÎW¬›eY³©W™=>a±Xœ,̶æ²-9MSÜ„(óßTEȲ ïc2¬Ÿ}ߌ1s2ˆ¢hMÝaÁš²Ðiöø8F¬µ¨ÌŽN :—Ò\óÅG=Ì N‰}ŒMê L¤Ô“:?œø~vxM°!Ì*EUKYt-¢Žø†¨£™Øééi¬·LLM0òå©4šzFš‰¥¬‘KÐ4ƒFšpäË#˜vê‹ bŸ§¼µÂë‡ßàȱ ‚†«vŠ–¤þ«‰!Bs‘kë3kXÃÁ2üã0…jžôB‚s޽׳¹ô\ys…Ñé?8üùaH½¥ Ý]‚Á¬Ê4Æ4½ÕÚË¢«Ÿû•×Þ}•·>|›ÒŽ^ú7V9}èfCyÃ#mÑþÚþ‡jI{Â…ïÆ?1No©—¢-R¤™x À³,»,¦j±¬ c—Î3îÆè½©Dyk™ñ£g™ü¢þ‚© š4 wl+¾xד»jmC4FόҘšA&SdxïW4Š šýë}Æ@W_…îùB‘ó__àø¡£¯ú /7ÿã¨VsrIz(ò|ùŽÊΡ"m¥<¹®6êIƒ¼Ï³\EÈ"‹U5\1lIdæâ%.žš¢1>)ÝYzÊü¸qFþ¢æc¥‹IEND®B`‚PyQt5_gpl-5.10.1/examples/quick/canvas/contents/images/lineedit.sci0000644000076500000240000000012713245231431025303 0ustar philstaff00000000000000border.left: 10 border.top: 10 border.bottom: 10 border.right: 10 source: lineedit.png PyQt5_gpl-5.10.1/examples/quick/canvas/contents/images/quit.png0000644000076500000240000000450113245231431024476 0ustar philstaff00000000000000‰PNG  IHDR**ÅÃÉ[sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÚ/•ô~ótEXtCommentCreated with GIMPWœIDATXÃíØËkÉðoõhf¤éé׌4ï‡Þ¶%?Ö"x/YYX‘Ü–`È?`̲çÜBbr98à@r2ä’Óö#,¯¬@bX­¤ÑŒç©yµ¦»§»§»*‡íÅÖëä\ÐŒ˜GÕ‡_ýê÷+¼ïÇûñ?€tóEpŽ\X\ü<“Ͳµµܹ€ùb‰Dš››ûb€S‡ï,ȥť»“ÁÉß]¹rÕjµÏçŠõz}û]‘³ùü׫««ŠišK’¬v:ï %‹ wƒÁÀýkWW‰F‰(888(d³Ùb£Ñ8V„T*‘ܼvíj:7; Q”Ðn·×%I:ë;q»ççïƒÁû««W ñÐ4 “S“ˆD£(•J…l&[l4φ]]]½îóù¯\¹’H¦Rèi˜šš„,ËhµÛë¢(ªÝnwã¼P2?7w7Þ_YYχ õû ŒÂ¶m𡢑J¥R!“É›Íæ‰Ø•••뺮uyùR$•N£Ô‡ë:°-!>I’ÑétÖAP{½ÞÆY¡\6“ýÕäääo®^]ÏóèõÁÀÀ{‰N£\>»¶¶öCUU¿\^^–Òé4TU…ã¸`ŒR Û²À aH’„n·»Î󼦪êã³@ŸÏ÷—Å……©l.‡^O…ë¸ ` #èxpÓÑ(Jår!N_Ã~øá‡Ÿþmii‰Ïd2P»]¸Ž ÆÆØøu8´¡( !(•J7 Ãøë4èÀ4ÍÃáð¶pb,6Ó4áº.(õŒ1P`ŒF£(—Ë…d2YlµZÛpëÖ­B£Ñx´°°Èf³èt:p` ŒÑÔ{¢€~¿gÏžUÆÇ^¼©ˆ¿µŒ¤’ɯ—––Óù|ÝvCê‚B(¥ã/ʲ Ã0°½½©©©_„ÃaõðððÑüü<¢(0 [[[=Ó4?Õ4mó¢zý«ëúC˲n³Ù,4Mó FåfT(¥ãss\†‘ˆÃ0°µµÕðY«ÕúꬋûÎy¡ÐuÃÃRJÅL&]×á8Ž=ê•J¥`Ì£ Ì¥Pï°m?Û¶'|¾ŸÖjµ¿Ÿ÷Žyî!BÖï÷Aà>úè#ìííaè8àØËïw2€C$A­VC¥RE(4ùóR¹üð¼k¾ÓÅU’åB8I’Ðl6aY(¥p)}­˜S ø&&0==ƒn§—ºÃn·ûÕ»¬yîˆæs¹;Ó|píê5ƒA4 p£&p<À8/žà÷û‘ÉdðíÎJu˲oiý~ù<ëž+GsÙÜËòá0v«Žpà8B|ã®EȈ;ú›R ]×1?7×¥a­ßÿl0< _84ŸÏß±-ëÁõk7À‡y´[¯ì Çyµ4xkŒöFt]ÇÜì,c¢mÛ· Ã83öLÐÙÙÙŸY¶õàÆõ„óh·ÚãÚéA8€ùÙY˜– ÇvÀq^´9â=` †n ÿXß™–õ§×op¡ÐËHBÀqÜø5 ™Lâñã€RŠT*Ë´FŸ   ”a`ÈçgÁpvì‰ÐL&ó©mÛþàƒ&xžG§ÕÀ@àóùÆóûýH¦RØßÛG½Þ º¦“x,Y‘aYæk)@c. ÓD>Ÿc‡Cû¶®ë'bß M&“ŸPJÿzóæÍÏóèv» x5Š^„ü~?âÉö÷v±»·W9l.ÇcñUkÕB4…$I0- àç¥ 0˜Èå²à8N´í“±o„Æb±q÷hmmMày½^Œ1ÂÁǽÌI¿ßx"Žâþ>v÷ö*Ífs @³ÛënÇãñâ‹j¥F!J,ËúNõöJ¸išÈdÒ db„ÕÞˆ}TšœœÜ¼té²N§Ñi÷@Ùñ½óeÙ ˆÅcrw¯Òh4Ö4'ét:Û‰X¢Xyñ¢‰F!Š"†Ã!8Ž871J˲°¸8Û¶Å~¿ÿK˲þ`pÔV"Š=0ŸðS!H²Ë4G>/Çü~?fffppp€o¿­ÔõׯbãñD±ò¢RˆNG!,ËU4o.ŸÏY–Ðn·Q,Aùµ¦i_âe¿xûÖ÷ûýÇa>¬vºÝuQ” (2lÛw™ééi”J%ìììTêõ7#_Å&‰â‹Ê( D¶mƒÀCF" úý>ž?ÇqîU*•ß~yâa:::Ú ‚Úív×%Y‚,Ëp]QïŸøæ›o*µZíDäñhwÚÛ‰Db·R©¦§§‰(ŠpŠ"CÓ4<þá}¯\.ÿþMÈSËÓÑ‘º!„µÛí¬Ë²ŒD"ýýýs!ÇØvûŸŠ¢lV«ÕÂÌôL :…ªÃ{åré­È3|õHÝAít:ë–eagg§R­VÏ…<½^oG„z½V˜˜ðwww1ï•J'"ÏuËÊd2_(ŠÒû¾“eÒégffÔ\.÷ù»Þ‰O»»F.p>é¿|?þïÆºŸy3Í-EIEND®B`‚PyQt5_gpl-5.10.1/examples/quick/canvas/contents/images/stripes.png0000644000076500000240000000040113245231431025200 0ustar philstaff00000000000000‰PNG  IHDRľ‹sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙøÛIDATÓͱ Â0EÑñõ•ÊŽ¹w‘!hÒ1k°3=ì+äh@"R*^{ôtwqÏÖ­µ pç³”Rof YDdú_†aöÞ/Ó:çU½u@¼¾XJÙ›Ù©ÖŠ™ÙxfUÍ«ìÿcœBYU¯"r\!ðx‚+žFļIEND®B`‚PyQt5_gpl-5.10.1/examples/quick/canvas/contents/images/titlebar.png0000644000076500000240000000263413245231431025327 0ustar philstaff00000000000000‰PNG  IHDR1,ÌÔPYsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ/+áƵtEXtCommentCreated with GIMPW÷IDAThÞÕš¿nGƳ·¤èVÒÚ0.’.Üp^ÁÏ’"mš<]j7VãÂÜ9MÞíΤØÝ»½ã‘’œÀ¤XÜwûç›ï›™%‡,™é¥Õ÷‡j6¹u4€«:ÕUŽÈ.Z®XæM×`¤º ˆzãÄÜ{>˪©º;YMYÐjó@ðÀƒ d™ì’Ø!AèÄúè€è

      /ãêç~b9A«5Ͼû–³³3...xóæÍŸòâÅ {þü9>|àúúçM“\!ÆH#n/ï\æzxޣϊ%Å#šc… hžW* .ó§5#ù=ç]×ñðáC=zÄëׯñççç\]]qyyÉjµ m[‹"²µy&‡¶@@²œ™“^b£PcÖ³Q„_@¨³ †šfCÎ9®¯¯999áéÓ§øÕòïßÿE#ŽØTï}º·€ôj¾9ç·z$W€hÉ’6™t=f6b @Õz.KK³“Š]X,\^^òøñc|Œ‘ͦÃûDÓb±@UÙ´ŸY.—=Ý»ÙÈÔÛ” C5ñ#"Cx³$—X1Qƒh²LM-QMlªõñÑù†hÊf½ÁùofÄqnÐ~ˆƒœ4êH“5Í£èd†æçÓ\ AADÀ,[;$VÌ E0g ,VrŒiœ™!N™²¦Y$ºnƒY¤m#Ò86]›7¥ˆØ`Êj ˜…ѹDDè$î<«²¥‹1Š} «fëÁP«±I%¨hˆ:|c^p¼ÁQè›X¾0S®(Û êð:Û³ªºÅøœ4FbŒÉ'bŒÝàhý5êÖ"û&¿U*¾ľù‹‘RBVºªš|BuËš"’hÜöèâ ;7rãy¢2Ø€1¿f%+UíC|¢VðT÷ƒv·'ã‹™˜‚ï­|ÃMDP1¢FÚÐ%9•Á¦ƒeT“ŒÊuÎÚR9è]ZÉç@cîòCçZ"©ÆÁ±§´Þüíý3ìÜűç@ÔÃç|CUS"Ë©m[º®Kè3QrÇ.½‹H¿ï¢EveÄØb¿Ž†åMY·-~ÝnX·œs³Öþ’èó5Z‘z÷y+Èæô~¬m*A?—Dfµ¤MUq%ÑíC{ô ê_Ú(›%&nzù^2q웯¥®ª):Ý'ËÏ%A7w¬¨“Üìyé?œ`ÿOõ>qäõ÷Ý}™ük;ù š¦é¼ý—§ È9wÒò·A*"4MÓgör¶*_NíÜ7‚ˆ1öTuôÓIñCËÉ7âhš=Ölji¹£ŒTþ‡Ÿ~ä¾7~®~Ö_1[êjÑ¡ëu•¨«jŸOø;?Ø0XJ‘E8lÝÎ&`ú“"Ë?ÄšqÝîÐ,ìc£0ÒŸ) ÙúÓ**daÊFùA½)•£Îgº‰õ¥ü;'+²â3€Èqâç@Fzf|¦ä˜ÿ1'«Ñß"þ‡”ŒjDÝØIEND®B`‚PyQt5_gpl-5.10.1/examples/quick/canvas/contents/images/titlebar.sci0000644000076500000240000000012713245231431025314 0ustar philstaff00000000000000border.left: 10 border.top: 12 border.bottom: 12 border.right: 10 source: titlebar.png PyQt5_gpl-5.10.1/examples/quick/canvas/contents/images/toolbutton.png0000644000076500000240000000476613245231431025742 0ustar philstaff00000000000000‰PNG  IHDR@*]âbKGDÿÿÿ ½§“ pHYs  šœtIMEÙ  ˜Ž×ªtEXtCommentCreated with GIMPW ^IDAThÞZËndI=y«ÊíöŒºW´dFôPïPo@ò|BÀ°ààF¬áزdV³if7L¯[jÉÍ,,fÜn»\™,òfÞÈW•…%Ë®º·òfž§y|êŽ~¼mްÛíB€[M_®6ë?­V«/!zšfÕjõÇŸþø'8;;ÃÓ§OqttT,ÖN2ƒB隀1žHšdý¾ÈÜ`9~Z4DÍ=%õfågº D„»·X¯×¸¼¼Ä?_ƒ|õŽ¿vŒŸœœœüþÅ‹Ÿÿö׿ÁÅÅ®®®°ÿ‡gF´ µ“pÍâJpÂp´wüxvl"B˜_®§B8>>Æé'?Ä«W¯ð÷/¾ÀÇ=þÝ›Íæó³³3œŸŸãúúëõ!„áò{èÇÿ¹ØiQßý|ž0¹ùÞ0`[ |?1o.ì@ Üîn¡ª¸»»Ãû÷ïñòåK|óú5¾»¼øùOž<Áf³ÁvßÅØóþA‹oCC!P{sŸši’Ðy1‘æËÂ0 (Òý€‰xhLÓRìpssÛÛüèù'øößÿúl€õzcäääÞû,NË8>> "å¿`°L^ç¢ÁÎæÅ©T .ÇÏÚAÈãQWÖ1K‰Þ{¬×kÜßßcåvÛ-œsðÞcš&03&Øn·PU03D"R¨?ð¼È| P†RÜ @!y‘3*]öäIš×pÃHˆà&°¥ØŒÈ‡}³v~ …×ç[Ýn G@!0M¼÷ìv»9…˜]P—]ÜM4Ž`¥9䨤"b ‹¬ÀËŽ{Ÿ—²‰ !„Ë‚r¡‚% {¨`aÙyˆ(T "€s. ª!”»O¼|XaÞÍ À@|–Ô(h¨ñoymу2¥–)·+1]m²›¡ªy}"KèMpqqB4 ÎÍ4ˆªL%¨¿»v§,½, hs{oü,~õ8ŠY¦ð´Î”s²a€¹9º£fÏ,(ߤžåsA¤Éñ…JCÛÅŠÐä}Ñÿ €†ÉX$šduÇâôR¥ë´•&•À²cÕtÝ@}oÀφåáö¹6Ì z 0…Î ‡]`M_¢LU RÏÔ©43I´Ë­> ZÔLZ¿2d@ºBˆèªBy)p2µeÙq‹d­=ûúß‹ëa˜Ÿ?bXïš]#•„ÀÕ3ó• D ‘I¤FEÕÞõ½;¶XˆÂï[ ¯BÇŽÀ^/4`<Àæ ÊiÁÑw‚§ ‚qébKTæRx°c)Ï/ÅÏR.ÐìêØø~@¡@ÒúÌæ¨WQŒ•¬Äô²ú²Újr{ÒäÖb1 @#Ú¨;ºyÛš£yàè(!…«+GZÒ]Ì”½B*Ø,E} Ô¶ú†É¤Ü TÐÒ1§JƒX¶¦ »x©î×&ÝIå6›0*ØJÝMLz7Á$µÒ/˜îÏüÀƒl)º¤Á²“”¥€ª_ôHÊñ•ƈ <—ÛvÖ5X'hws6“2íÍ”Z±µ¯øEÙµ>ÂTx™ªb&åü^g¡:Ä/lK`zïá½ï§Aïý çÊo1*Zî µ#ãq“ÂÆ3r »&îA‚¼ï¢ùéJ•~nm6H½Áƒ@B?†öæ¡)Ûï&l,Îó˜šÖtï°ã!ÇâyÇ*Ø0#]Xïïg’Q÷)jÄTÌ£ña°ñSjO9Q6VF;9½¶¾-Z|€!p¨­6Ò›*mZ §^ÿÍööÔˆw=|YŽXÑm„ÒòYê,P•ÜTí¥ÒžóÛ+‚ι „V=ûžÚ”§$Cz¢Œ½®SŠçS—Y=†ÕGêI‹êÉ xôèì!i©ƒ-g;©C=úÞ×z™ÁÆ>Jö}¦rܼ_¢)ÕÈ»Ý.VƒÉ½ ÚÛeS³eÀÈîòìKãÃvû¾Šã{n@)A¶¡°Ûí¶Û-¶Û-¦GǢº¶("r{/÷YÕTÎڳƺ8"c¥»fãèzaÀ\ú»ø››ø‹›¿!ò©ˆ<öƒg¦n¯h3·%…˜J âH„ôžÒ‰1œxN¥öº«î'Ž¿ììTev~ÚˆYz^í_1˜"Oy¶â«Õ*ÿ=::Âùù9Þ½{÷õ÷ßÿ÷WnþŽÐ_///ñþúúùãDZÙlrLç qþnNü%è:/…Ñ\™ÍĉUB•9êÂìPUYžh¦iÊ º»»Ã›7oðöí[¬×ë_ÞÞ~ø–àôôôÙv»ýp·ý›sîSçxrݳ¿År}6Jd­¾êÝ«Ãè=ˆÍY@*§Ó&¦¶ßÕÕUžÄÿ\‡d‚ÕDIEND®B`‚PyQt5_gpl-5.10.1/examples/quick/canvas/contents/images/toolbutton.sci0000644000076500000240000000012713245231431025717 0ustar philstaff00000000000000border.left: 15 border.top: 4 border.bottom: 4 border.right: 15 source: toolbutton.png PyQt5_gpl-5.10.1/examples/quick/canvas/contents/qt-logo.png0000644000076500000240000005573713245231431023652 0ustar philstaff00000000000000‰PNG  IHDRúúˆìZ=tEXtSoftwareAdobe ImageReadyqÉe<[IDATxÚì½ ¸Wu'~Nïo_´ËÚ,Kò¾¯`ÀØÆf !&™$@&ßL “I¾Ì|Y&_2ÉBaH2ÿø‡@°$a ‹/Ø€Á»%Yû®'ééééí½ž¹·ª_wÕ­snÕ{¯Z–ͽŸJݯ»ºúö­{¶ßÙˆÀ 7ÜxaŒ[7Üp„î†n8Bwà 7¡»á†ŽÐÝpà Gèn¸áFJ#wþÒVË›ôÎ!sÞó\yØ|î=ͫǂz–UÏ—©Ç>u Cz¡AƒË ¬.ô®ȯܶ®Ô³u]iyow¦¯A0¤.Ðð'3ê8¡þÞ§÷úêÇSê˜ O¿RA7$bèõé9‚1ð›É;¯Zm@>×üÍï×§ÎÎ5 XÈ„.ç}Oë:ø~ƒð[Zç#DnLèZ¹Pà¡|3jµ§fê0З ~¦9ßJ¥Ù,zGp.Ù ÂÈéòCýYhÔ)ðYãùµ¢öõƒ¿1¼FÁµP¯ÿÞK¿å¨z1„žÒ(©c›:nRÇeêØ Žê ªÇ!uŸzÕcAx^?åá’ÝpÙ†.X9”ƒîb2‚Z]m8b †7zœRލ?vª7v7êØ£ŽquL¹[ï†#ôôÆÍŠàÞ¤ˆñUêPŽÙ”ŸšË+‰±zU ^|E/\ª¼¯;uõZ]½WW\«’!0*xç%©b´Eý±Å~ZÂi¼Ö4#ØÞÔÆÔ1á¶„ŽÐ“׫ãWÝ.êËóÚ˜Rm{úòpÇupí¶nèVªlE÷\…ª,jí<Ç©€œJ‹ÁÇ’OüÞ¼NY½H=9¨žPÏ5ñ?¥ýÚɦà†ŽÐ›ã u¼WÑÛXS/hni¼¦ôø‹záî›aõp*ŠèçÔ%Ö í¼ÐüÅ‚[ maBPTÇÖæ|½Ò$v}VÇÓêx¦ùüXS DìÆ¡ÿŠÚñïU!,ˆÃw>!½ô¦¸ëÚ~e+ºÜˆVmðÅBÃh{”"Aº@( ~μ&Z@HkðÀQuWÝ•Ëâ³M àp“)Œº­åÆ Ð»Õñ!µá©E6§ˆ\üÄ­ËàæËz ZóA6žç%¹Ié(0Ä©òæÇÐPšDNh0‹  À…þ/î*¶øFU#ꯑ¦ýÿtÓþ×Ä¿ß17ž¯„®‰üSjï¿>ìFÖã7M@¯érȵ§–ÝM Ñbø1b£„ØBÝ!ª˜®ªàuáÌáµ\@ ½ëÕÓõêï½ö]kŠà¨Ï<ÉÿL“€6ØpÛÑó‘лZDn£Ï Ô î¼yn¼¤Û'ò°šl¨˜ÐÎ|nžx‘)O‚ýo9‘¡ï÷%,B=ñ?‚š¬Q¯Q/]«_Ô_Q,`M=;«Þ?ÚÔô¡=»š `¢i&¸áF§ ]T}ÿRmÚ×Gè iî)µW]Ü w\Û¥®ûh!hbìu…÷QøLPc0ƒNl R ¨Ã˜‹9 ¢ZÒBú¸ªý>icfR£UþÝâßÞ4s¹áFg$ú»ÕñöжÙåJ’-+Àk_4šÄ[UVUÜ$vÃîºÝ"›ð~[ߌ€ò×·¦hšeJÃDã7˜jBÖ&BuÐUÆ$&š*ÿ¾æãŽ&˜gܶv# B¿Zd=ƒÑ†ï¾aú{2P¶¹ÏB*³à kÅ0_áe©ÓˆlIਖAîÏ„B[›Ä¼ÍN=j]§_sUKh‡4­NÙ`Ï6Á@mœ è}C'Áü©ÚPݬûšs¥UpÉE½påæ.ÏO&Ì !’!´Ñ.ÑCÏc3ÖÕ "äÛbÂØÎÃÑ <ðÃyÌר¼ASð_êQOt÷Ñ~X==Ò$þgš¦À‘&˜tdàÝÜp?¥öÐ]@‚7éMmÌL>/¹²¯iššRÖÊ$•,Qqf ¦ Às"â¤'X˜‰ 2‰&&EÆZ’ÀÌ$$3`–PðZ(˜¡uîU^ª^SÝÕÖ`”àýkªÿO5ñ€ãM3À…ÿXz{¯ißñÿˆ€o6Wµ²Í7oì†M« P«âã²É‚ꬸ!4*€cJ(¼™=av¦ ¡þ–MѾ‡¨ª$š4œFÀh,¬™BJ€­ê¹Ž¼-pþŒ:õ„zz¬iû]ŽüHô;Ô¸Á&t£f%Â5Ûz¼™ZƒbÐ-&59µÂ@ÃQ’Ä⌠â‚m6)ΨóÄØ÷Dvð"bròÿS 7fl{M]œ_£nõ÷…þ·¶l¶ ÌôvgÇÔtŽ6‰G ˜Oš ü‚èoìi7cÙ{ûò°umÑKR }P¿L´:¢y“¤ÅйMãŽ|Ùüu…ˆ<ÉSÀé´èM@øY…a[ŸchsûInC€P X@P#á1ˆnEì:@jZ››ý9xçk7ßx6ÕÇv5q€=ÍG­L’Ÿ€èÆóŒ[éItAhHjû–µ%èëÎz~ó01K”ÌhbæÔ]äÔöùÏPˆ!æµy" †É ð9ŒÃ(æ»c˜^(†€„õãp  Ä0ð™¿é1±€ZR«³Y\­^º9`²èpೊßïéíÎìQŒ`¿úè<¨µ‚ñæ9nœG„~›º‰ËmÀuT³Fذºè%¬D$×|`ŠuŸ ]€¡¬Ú†Ï mhîËQ0¸ï§°-.¡ñh†â&Œþ ùÙm® À?ŒÁȲޏdfÐ`âþµt4àruêòž®Ì->ÿôÞ×ÙKgÔÌ«ý{›ÒgÔ•\4às`£ë[w7«úJvºFÛ ظ¢µ:ㇳÚÁ‘1>éP–ÚUbƶ ÷¢Í Ñ9GlsÁoÏ©ù¶RH÷4>v®† Ñú]`‚“æ$σ£ ÛMmµÝÓJ2Ͳaê µ<£Þßßý´ðTóQ×Ðy.°ƒ}­Zü+-΄«÷÷ä ¿7ëÕ‹J#KJœ±ÜXˆ6$¹T‚ Îþ(Ð3íéz/0‡ ú"DÁ F¥qD}_Hì>صóžD€À„ÚZ˜tÄ£b*C깟¼Îø*¥x)À‡›  šww BߺÞ%ìæ•a¶¼/…6÷YœBV¬*º1Ñ.±¤fU¡-ó3‹-s3CÉž—MäÄSmçаÉCDÌ1´ 8óÃÐàZL¦bvCê‰:¼hÀ×Öt¬)é4mÿ¯57Aè:ïzÐj“3L»¯'ãU?­Ô¢„d R$‹LHf1ËJ0*&Bb7\DRØÖú·QΉ.)äø¯\ñ ´üHüA 3 Úþ‚fD÷çóù¥ @DÈÄ-"4†Õûê ]ðnuÍUŽÐù_×`Skµ-9¦(3ÍÒ¿†»HDô8‚ò—bP Ä’o›×')ùi‹j-cÒÃR.¢!Øüùæ:0×±bÁŸ§áp8‹i»Y¦@ÍÐ6J›.TüÓE:Àr«éÌÑ‹Ú]…`ýo§ð¦77[ˆˆ‘î2ã@#ŽÈš‚„ a¡EJCô÷]t¡úèÀ0¨ùy L uš«‹.¢§PõƒïÖ½u$`Ž{DÞö·*w­àwSà÷Å]ÇÅú È™EïA.ƒÑ0PNz cŸE¤(Ê€€ˆçqñç  ¢͆¼ö`Sm ã%iDÆõgêÉØL&Â+­#IøCð#h˜@h0†É‘a6 s2ˆÙ¬ÿü\d¹1jž9¢_¡7"{.ÖôC/ï¼-q‘Qݸ äÖÜœ1ª¦âjj`‘”$øúQb2À¤¸ãÆâ$:ZL^.i 1jÓ¡%úJ4™@²dBq€P¤ì2‡ê"I!µ @e.’LжRÕÀÐæî3|Ù€¼G!T;ßäeÑcηÏadh(Ä{X“Ã5gJHáyR@Ú# ŒÊ¥ÙèR$ ø§ˆ:7Ëqe›Œ‰  †þ˜ ¢ žF’Db ^°ª= ¡´KÝ›¶hAFuG‹ú…œyb¸C9Œ9Õ¢¿ÛÔˆBŒš3a .R§Ÿ,š‹z$+™¤²"m.65“kx`‹0“¤:, ÚK2Ï“©R{ýÔ¨IcÄ0,!wSu#o6Ÿt cb‰3X*Kº¦JÚ f˜Ì™Í‚BŒHú±e/š•vÑ©íK'tIEídLÖY>ÅpŠJV´eÛ`NÖ&b¢ŸÍ誧~.½.œ¡ Ø6¼ ‡ ¨ÖjP­W½Oe1£ÎS‡zDõÙl&ëýŽ:4€ºõT~ YunN—ó ö ¢…fÜ\c‹v€PÜ’Ø´¶|~Û¢ûIŠŠ`¦5å6¸6`q)º±xB —t#5ÐÐú…î·pƒ†=k¨„¼œGó³YEÔ¹¬OÔ3åœ:SƒSU¯ÀÈ™2ŒNͨÏä` Ø—¬Ü[Öl ‡VÂêþe0ÐÝC½CÐSì5Ãk V¯Àtuʵ)˜,Ÿ†³•“p¶<c³GáôÜQõú4TÔ9̪ïÍ+Û)•„d³€73BÕp‘—rfs íg›X§ !gÛA ¢‹Â± élM 'Õ—FèIX{ÛDJ+3ÅÑÂ5šóÈg½Ž¦0>Uƒ]‡Ë°ÿè8U†³S€ÉiÅr°iíEð–«nƒ».½®ß| ¬è„®RׂºÖÐ à œ˜Ú‡&ž„ãÃÈ̘©MzDŸSD sšD°¸„$ÉÑ.‰AhL­ùD›E0»ZÅ1‘aJÄw¾ M—ëVkf̹±pB—âlÞ+ˆC‚S ‘MO$¾ë)Ðj²®|£QÈ'+ðÈŽ)Øuh¦±C½®(rò}ð“/}¼í%o„Û/)tº–¾Ð™‚ÒVyǶe·xjýèÌ!xvì!Ø>z™Ü5š…B¶KM7ÃpI°‡ApÍ!/ÁÍë„*ÔšRž€/®È¥E»›g$=“oÒ˜Œ 9“ .rtž2—0Aî]Î1€Ó,Sd‚t(U= FmÖB>GG«pß“ðÔ¾i r]ÛJo/*ýýž[ß¿ùêÿ×lº²£ ¯‰yEÏ&ï¸uÝ=°÷Ìá‘c_„gÏ<•†&ø’A˜ø†€Œ&ªª |2J5S]1†~É‚Ôr&DPëð÷J H¦„Gƒ°‘ óÎÅKt9kl»œpR<ÔÑÄ ÕIٲɼÓßk UC¸÷‡ðàgav¶®Å¬:Ôùåi¸fóUð'?ýß᮫n?ç7Aý–᛼ãÀøcpÿ¡O®37íøFsj4 èu¤‘…Ù«@.mÍ€hdÚJøÇƤý.EOT6Üä¡; eU3bTGa|ŒKÌ0‘{ K&ƒ©1Ÿ8S…/>xžñ%xAy­ª$y ~å•ï€÷½ù7¡¿»ÿ9¿!›¯…M×À£#_oü(Œ•{ê<Ÿ4CQ@“Ѐ=¤†– C$°úW%€ÎR`’­©ÏµäPz±€‡ó£§d£Ç©õ‡˜'v®Eq!§T9)Z?ެŠy„‡çàóß9 ““5ŸÀõ¨V '_€þ‡÷Â;_þsç×]Qs¿nÍkᢡá+{>OŸþ6ä3Eõr6Þk· ]`›ªºWÈ“éÂR©U¼óµ{‘š®B}FÆsfÕcÖÇPŒ<`x„ÁLˆx&âF•ð'ÎÓAÝžÔÂæ¤ƒÝ³Õý7ƒBP° ¡¶%EÔîžUD>ªÔvµIóØ"ò¾b|æ¿üxÕÕ¯8ooÎ@i%üÌåÿ ÖüÜ{ècê'5<—œŒwp¸‡Xëœ2aþí¡3pøØœoÊ4¯GÕYøã{~n¿ìF>S•1˜¨œ‚ÉêÌTÎÂLU™@µ ˜©…:Õ|€¹¨t;äRhÝC.((®¶“èK#ô$ežÍól%¹#¡¦RŸrˆW#Ïýk—òøÑîøÜ·G¡¡ÛBe›ç( Õ_ê†ÏüçÃ+¯¾ã¼¿AÚN¿mÓÛѯ†Ýó~¨6æ §¤;«.Ĭa”¡ê¡™Ù:l?0 “ã<ú«+)ŸƒkW¿Öõ]¢Ž(8Y©Ï¶ŽÉòì:ý •½^kTù(’d$™[ë(ÀSuØ=Gº'Õë°eíFزf£8'ô†a¸ëØ8x%lºÖs’dÏŶ޶€Áf3®&ŸK t[²éùÁª$IK$q)`¤júCÁœX=DäE¼}ûÑ 8xhF‰ö@ y¥ o¸þìžß~AÜ´Ö¾n½à-žml¯^m2Z4¬#„ÙrFNWÂkÛh@¶Ô×®»x‰3‰”ãZQ§¦ ç:OUu—´)[ÜC¨ðŸ®(u%9 /ä¿7BiÕ¿|.û•áÁ§&ÚèºwnP‰ú¿üÙ߃¡ÞáÌ»ëÂÿ ÞàEÑ…AjªÀ0cmŸOÕáÌdÝWÛçé¦^ƒ †×À¥ë.Yœ¦gÞ_Š)³Ízd ñ»‘²ê.5iLk{ƒB«9€L> •WÈ{¹V#øê#gö¦~{nÞñÒ7ÃWÞö‚ºq¹l~b˯Aw®O©ñ5Ö”aoLàêTÜãÊ>¯ê0à fߨÁÕk·@_Wß͹µÏ6™ÉÈ|pâDŒ=ŸX•ü±‹ µu Õ2ˆKK¶„`²àtölŸ‚ÃGgü°ÖùQ¯Â²¡•ð?ßðžs²˜;Gž¿¿ï_à™#û U%13°^IÆ›¶Þ/ßv#¬_¾>Õï[Õ{¼|ÃÛàËûþŠÙœ\÷\(â¡_щ=‘[£$ú­j¾‹ÖÔ‰iÃ,¹RDÌ%@å jïFrBçÜš¶jÉçÂ$£ýÄØ*$fK"ÿïŒ:wz¶÷=9è[Þ¶Íßsç/À†” Ì'§÷Á‡ÿùlŸ9Ÿ…SGgý¹dÔd¾þw°|h5¼íÅo€ÿöêwÁš¡5©}÷ͼžý6š|ò™#-РŸ•+ÇO@œ6uò%¸~ã¥K4Í¢ÍAˆÉž‹Évtc ª»Àm½×Ø ®ÆE‚jyðæ†n _ñSp힆±±@°‡'•*°våzxÏ]oïè>uâ›ð·Oü üpäKÍÕáæËVÁ¯¾q#¼êö ÛÝ£&Ø ÐÕ £SgàýÿöWpÛ¾¾ûì÷ÒãÔ™"ܾñšåñþkdš+êŠ7Ú>Ÿ®Ãèx­½ šhûðà ¸fãU‹·Ïi(¨–Çöfì}gçD蔑i{q­{l-•¸ˆ9F•k~™v§ÍÎ5à‘ÓÑK)iþKÊ6ìêØâ=6òeøì³¿³µ)(åz=b«TÐh4àökúàM/_Í|¼È¼<@÷ì9¯ý³·ÁןüVjóØ:| \2|«ÂsëjÍÔÔ„”}®‰¼16ÿñã¿•j9•9m¼.¼É‹…ƒ•fë+¿Äƒ,òìó`i.ýò¸qýRìs£‰†ØÂY(h¸fm›,‚À…:%òh¹ásá`ˆ$ÛÛËl÷㟯Áõc§«pðøœ/Íçç¡+<æ‹ð‹/þ©Ž-Ú÷}On÷«À × bþWèÄN‚W\?½ý9_…Ÿ¥xð™‡à£÷}:µyݰúu^Ú(‰Åãý×´Ú>5S‡‘±j;Ù‡üµëí„ë6_½xs®ÕsÎdæ(„Ã"“~ 1µç ì½ØÝHÏFÃZ¸¢~Wmr†ã7‡®ÜúôYhh¿yð’Jõ¼|Ý6¥~ÞÒ‘›¬ŒÁŽ}ò^僀¡µŽáþ,ÜtYŸOèAÈà}_þk={*•¹é 5«z6C]Çœ[’G´Ú~êlÍ#vÓ>¿tå/XfI›ÀŒ¡™9YÌ7‹¡˜÷ÝX¤.qo©U“ÙÿÛ–#-EE!R‚A˜Qjñ³‡fÛ]óŸ­WáMJmÏçòY°gN~ ÆæŽ*A˜àúÍß]UÄ~Ó¶è*øEâç‡"ô£'Â'þB*sËg‹pÅò;üì6KOµlàöŸ×Œà“Z®½ðjÅDs‹¦q±¬“„ž³ÀY –x°˜¦ n¤ ºÛz°E†[ãZƵjÝnݤë¿UõÔíR o²\©ÞpÝÝY,¢:A 4Ú §VÛ÷(ÛœªML¾DºdÍEžêÞ‰qj朘ÞëKsª£°þ`ò„ç•›»]ëN‘/ÀÓ‡wÀC»~ÊWön† ýW)š­BW1]êû¼Ç’ÿHX†S“°{dÒ‹5ÐÕv¼Úyú(vÁ‹¶Ü°DóÍhúHF›)©±D”5÷NÀE(õ±w~tq,¾”—ÐB6?†×@ @ìÍ âEtU°÷è\”¹¨Ízç%·@1ßÕ‘Å:xöI˜®õ|æ‘„¶*mû÷Ö¥¯ÎÚe8r¢Y²©YÈ‘±}þG_ójȧ1¶ ߟ}ä0>>ÛüþRo½å•pÙêÕðøºïÂÙeÓpjnÚÓ&fg&`˪ °iùº%Èo¿ ©{†f'¶Î94kÊ“€c–ãºÜz—uªûÒ =Žø­þô8ãžë)ÎwiшñØD NjÄ8c0œln¿ä–Ž-Ö³{EÂs4ì\.`ý¶‹ºPåEëJpäØlíÎæá=A¹2ÅBiÉó¼xÙͰçPž}v  k›Š ß}Ë­ðÓW½^¿Ô¨CUÿÔÜŒNœR&QJÅî%¨‡YVëT¨ê{‹Fç]{þ½Fò{ÐéRYDÞQj!²’ÂIn,•ЭDŒ|²õ\&‹D7o¾oŸ8Q†ŠŽèÊ\xjÓ.ë_7m¾¦# U­Ï)µ}Ÿ·1yÄ—©äb”YÖ­_YÌeÂj¹ìÙOmk¶,y®Ã]ëauïzx6?Ö®z«×7›QVC¥}'”M®Kk ÷yÇRÇ…ƒ×Â;¯ù+Å<ÊPnÌx$çjS0S÷¢öfjêïI˜«Ï¨¿g<†0Uƒ:UÃ1îlÅWà÷‘¨E¹‘¡KEC¤b3?³.¹=yA¿=2ZªJm¿xíX5¸¢# 5Q>“•Ñf•ScÞfv˜ÐF»ÚÖç”)œ9ͨ™X³³Sðƒ½¥Bèú¶^ºò ¸¯þˆšKñœm¦b®Ç ÜI24ák7à—vžý†WÎZ–âR—V´›tc`ÊÌ4^g2‘i.öÝpºÛR©u4\àЩŠzƒWµô†õ—úˆxÆ™òˆ×%ÕSÝM°™>`ŒËGÛ°=]J‚öå}@®eÝ §‘<~xGjóÕi±à¹)Fózn†.,Ù•ðð"©Ùƒqó1Iœ‹#tZÀ¢AÜD2‡nU AÃFçš ´/31­+¢ÔÚöyàš/¹øÆŽ-Ôèô¡vy+DÓææAFðû /X–GÉy—ÊÀGw§æ ¾eëPÒ…#Îs€Š a˜z¦Ù'mFGԗ趪2A .¦­F«·&i¼®#]OOÔ¼Œµ0óh@©ÔW^pqÇêôìÁh-6I­‰Dn’IÔoX>˜ò3%}: “³“©ÌW÷nß¶b@tþ$nŒfBtÞj,Ï?B—î…ï®/BÝ8à«¡­–yE&tè&錌L`õ:¬\ «›Z™Puo J°ľßh¯ºë`ýFàÔLŽŒŸ‚3)z±Ð—ëäí^˜®~)PdT«!ˆ–•v6z ª»MÚƒ´ß‘iÚGa©N‚‹(’ù¤£G=·šiŸ«Í¼qÅzêë ¡75Ï>×E&ùj˜l…lý†ž¬ßëÌ`j3•Y8pêPjó¾^1¡C qs^%›x‡H4qöìüõÚ7wbª¾ÙÍVÈ=‹¯Zš`è˜í°w€¢„ZcCF g”Š6crvJ à*äóé„®þô­Cqù:(æJ^•­þá?Â{¿ô¯7]W¾Ë›KA½ñ¾7ÿ¼óŽŸ_ÒwMãG½Ôk†×@CÝ»¬ú‚œ²»´k4ŸÍ{ß§š¡Ÿ;À%4ÄtŸ¹Â2$t¹ónø} „j5†ýìlO-¦z¬z:¥{xS½S°RI¦îbOÇIÇe“U]$#ZN,|;]Í¿Kk%hwŠÆg& \«¤Fè+ûÖÀ²<‘i°§¡R­zV[¥Òô`”§alz|ÉßµëÔáÃÿ.ÔêEu?ºa¦Ú€n(À`©Ó³ƒ]žÖÐ[ê…Áž~¢s¹Ý°£ìóÌÒìÙm¶wr½xBGà{¢Ûjõ·É‰‰yRÉ(#Õ$ ³3uˆD ©c•’è:늯â‹\M­(ñk½¤»˜æY«'S•9¨¦žõWyejÍZqä1ɬn¶Ò{óJêf—ü]ƒýE¸hCV]K_x¶©••d? ½uRó8毧bÎSÍ’Zùzr˜O‡»=²þNÌ/]¢Û8Gc8¬Ù¦ …°WŒfÐè3§u3ÀÈ|Ê>ï,¡ûÅÔ‘­wÇÌŸŒVõ·®IÏ©îãšÐCµÙ—6zòC^f˜§Ÿš]åjÉZCC&¨{Ði!g|>Û*~nº¾¯6¯Œ™ökFWç¸ÂâXZdœ €+Dá¢þÖ0R湺Áu%Êå°²j`eGI»Öˆ©ðÊÏ•Y$ÃÕ¨¯ÕUÄhbŽNbSÔ2§ˆ=­QÈ” ˜éò“GÎ\jšæß§ù¿ƒµä¤ÍdJk‹iä$ú]’Ø\]wnÿÏ#ëp9¡ÉÍ ‡ÕýñŠ2+«fÕÒæ)ÚÔQBoÌ€œÁcn4³iFU}ð{ÆEªÕ ;–¡g¡g{üTPK±–THï½t‘!ê, Ó.¤$ÒÇź”‰É ߟ=I})‹-ÌéµÉW­5±S”‘4°vø‚Ž.†"tlýàLÉ&©¥è¸” Òtså³]^î7º¨ÊÚGj fÜc)„öJæ^°p£@²«—¦D'Fk’26Q²·P`ÄKðK×e>êýNèLž_›å]f%ˆ&Ý„TxTê9AwWÆ«µsë0‘R›Âd ^½w`“Ô…#™ö²”Ï€1×àÔtæõ€á4÷¥:çF‹­À î¬Û£¶,E3ôD¯Î×Dj ù —º:·Bj.º^UN2#¹ˆ'vLJA#½g§'Ò»Á˜…b®W1—º½JPjÒ…rÍœTÚ'³1ì1M\òZ‡$z]£¡Þ ’аáUÁ³Ñ‘Wj¼:œéð"!2)§dîXÁE¾|àk?ͤ,š‚Qvlˆvˆà!¦21Ì9Ÿ-ñ…ã,\ÍR=®É¢Ä¤ƒvY$WXâÎzÚŒuGŒÚ®êóY’ïpDV0 %à‚—àÚF/x—¦¼c{ráYÙ„êR׉u;ZJ?€˜çl5•Œë;½=%‰Ž`/4Òc‰zCŒ‚5̦Ð_KôF½ŽêÜ‚RÝûJ=]¥P wŒ 2(ˆøßÝÜúAÇ«r|J­QOuúy,ð8vBåEFâÚ´‹ƒ(¯cÐìCŒ·û¡/RªÅªJïgSÍG6Öë¦ltªœF ”ðS3"/¨­£ü‚É9loÃàÆ¤ðÜ͵©×`lúLª¿¡ÑîÁSÅäÂ]s‘¯ÍÖ„zl~u'½;l£KRÍ"Ä„>®šò€Ë9**R©ÏyÕe<;Ì(´ÂLl/œ_íuNJ—qy!¦ÍïEá»1]îÈr(„ªr¥ÄHÈd³rε¶DB«þš„ðc ¡€¤MÎ œ3MPRk’pEŒ6›Ä¬y6z~ˆ_ÑŽp¦æ“PÕ7×ôJw#e0-4J6aL¬»,¶êdp“Étι‰"£Ð"p~w¤-p¦.À$ésES-g¤1‘Ý,%‹À(‰HÕF—4p”>`–ý!áÆb`C%)a0—sb®I*$ í’#Qsá8<×ÌŠ:«1Ä3&¼2ÔNÙXˈ@b®ºžØ|[ô¦!‹p&N•“bf¹Z`‚äg˜Ë¹3Í(ºQƒ¹ôDÑIµÊó“@tkŸuãæ6´ ŠñÄ0q³è1®ÙH1"y}ÝX ¡£Å>gC`1€ÃuE’K‰=´Q¤ÿs"œÐôaMd‰Çl¾ÇÏ:®º'ÂQÒÐ~˜šþ’ŠN ±sÝp"Mµùœú¾DÕ-Ämŧ˜Î¨d!O¢¨4Lj2Ÿ³AF'X)âb¥éy‘Œ•æ†B˜ ,ƒ FÌA€QÅÝh ¸s”¾xB7 :©{ ƒÄj¤)²ÜßÑGÓÖ;{ƒu>·×ñSl'µ8P£~AÒwÉB¶½|BçÆ¢´)š9bÊðÚZ[V SÝÓ—è‰m=)²‰QÍ0˜ÙÖ~½á5=È@&Ÿ‰¨äI€FÇHûÏýžèe_—cM»)™~ºåTõ O6¡ б †ašùê` ž17 “è‹'tJÀýã9n¥®Fo²NéÌ ávËd \ƒñÓ:­ê:„µM9ÁÇ` õöjº éfãE!A¯Éi]j:II¦EiäÀ·Œ…W]4 ´ÑˆßhtÆ …MBXÒµ0Ý¡´Ñáe\}&¨,júM Joª¶óŸÏda°§¯³hÜ9ÿL #uä)R”i’ â¢ÜîË%¨îI²0“ØoÁçðP:yF|õ=:âK1§* ¸üj)6-ÙTØúé:·~v¾^|oÆ%:UÃ3HÔ|c±’I(JfN¿ɦð¢ÜàÁI÷=‰ŠN å.ÝËpïÈe3^ϲˆ¾R†Ós3”N¯Šª¸aqˆî42‚jÚÔìÇ´cgÁ1m£×Æ¡’½ @<‘F´ ’‹È3PÉt‚=%B·å¤X‰ßR©Âö>µoì|Zg&ÃB­ÑÙ&‚…\aç26w0 Ót)bLÆU¤íwÚ¦Y…njÄÞŠ™\”«ÊÚ8d†‚Tf•ŸÐÇ¥/Г€q’Ĉ5ê%‡<…LŠ9„bm/GGv^uGN¯¦pF[PUµšÊÈ'péGe£÷võ¦6w]Bª\jU­9wF¨C†”æì@Smg Y¸¦ )zâI¹j…9YF~«á\£¨·zœ*Out‘J™nàüaB{5ü»QI½™ÙF8µ©Ý Æ ¦Ç¤¡×<“›×é‰wˆVâ¢ÛœƒÓ˜ÌϘ‘”ÎN_¡sn%°s‘¿1F÷\ܱ¨],!§¤y> ƒA8ÝYBÏö.ÈæÂ|1ô¬V'Qø×S¬0£ûÆé­”ž\´ÜgÑå*ÄŇˆ#ŸSáÆâUw&C“ÒhÑ÷IJW5™ˆÁ¹7×ëWƨƒã)VMå†.™ÌÎYÜç’ýÙÖV$á“Íä`¨7=‰^­—›Ul3ÀºÙRUÙAP׬iÊRJ«)eL¯ JÍÿÜHÇF§„RÝjž•E¤Øñ&÷Ö¯ö–²¬êwbj¼£‹Ô•ïþв•Tå7¢~uj¶Ñì^Ül.Ëû–§'ѳP®Ï4 ÉëÇ” „,%ÕϬÈh±!}®ÄT:ÝRó¿ÁÁ(¨@¥´!x çŸÛß•e0EèJ¢7:[Èv *Å!€¨¼‹ ðZ)›MUЖëšÐ§Ãª{ˆÿ¤L¡~{ÈJéNŒºˆhøÙêbÄUiDÎFOW¢'ì"ª¼Ðk™«+i³Ü–:}ÝF"eáìÌ839Ö±EêÎ÷3Ä— ê…™åÖÜüúcÓs ?ˆ?Ä, †ŠÝPÌæR›ûTe¬É…8ûN„¿¢Q2¾ð“ hqM1 Ãucá£Yi}C3âKÿP\CTëíÎD d2013 §;Jèƒa»’$Õ†)thFèËÖr½Á”é"e&””žMmî“åÑPä 5µ>‰W<Ã(°I–Á˜@9È¥@è(˜ \Eîo.`QpS‘¨kU·»”,dÂ7WúÔìtG[ºr½ËäÚ“1¡ÏÑ íÇÔk^ø+Ec_ûJÝPÈ¥'ÑÏ–G€Ï-è0$² V%g6Y vèb‘4iWV*B—ú¬ÙZª‰ª?ò LÜ.Dô´\ Æu2Æ©õÊ,íØ"•^Êõùk$A Æ,n ádÝdÑëõ`”°nÀ@Ï ×}&­1^>ÙÄ(z+:+Ô†CÆOªJšŒ¹8 rÄžºên+gn¢`J;ÊLSå9´.ééB(3>Zm ï;ïì(§ƒf!ÃnòVq`Ê<ûqõ:ÀÌE‰¬Q‡¡Þ¡P¯´¥J׉ʨº^Ä4à´Q#ŠaúŒd!.ˆX“ΩìiƒqqÜ?ˆ„¶ú*b8j‰8`N^Â’¨¨¤ù@O6`Ñ>÷À©Ã“蹯#©'ÑžbqqÀí…«7¾êž1~¶zý‚¡Õ©Í[£íSåÓ^GÕ¨ Ýa! t1Õë$%v0n8ßyçlt“>­ ¶K‡Ë^ s P ‡Åê¿VôØû»{ìxÇIÌtÛ.¼H«ç„šñ5%Ñ'fë†Ýégî¬L1Î}¦6éIô¡“ @¥%ÉT83,Nd7‰ð\ÈÆt„{ó0¡4@㆛µÚ%Ä.¼#ÐË^[>”ÎMÙ´‡FÀÙ©3[¨Â ˆ¦œ"ÿ{ˆÛÌí5¨6tÀL-º/³9X5^°Ìøìq%ÕÛ -!¯T§$:B¸$çO¯­­2 ÿ¿“îKWÝ¥õŒóŸ³’ϸÁ ŠRA?îÏë8щÙ,ŒŒŸ„ä†Jk»)éŠB„êrXJÒÎÔ¡Ê4ŒÔ™kk‡×¤6ç“Óû¡Þ $¢d÷t©DNdéÖ‚‚Y3 „[®ÊtDA%Hy4ºŠ2  T) ×ëËú²P*eÃß­DýÌÌìÙß±…ZÞ½±™®*øC¿˜.íÚwg§ê^R‹Éì²ù"l^uaz„>»¿Ù –áÊ!°°Cöyˆ¾1bư„¼-jMÝInåÀ¸EH}¦„3Á¸yXõ×.¶Eè½½Yhuní‹<ºÿñŽ-Ô`i3]M›àïG²lrœçI0>£ÔvS¢7°¶w–u÷§2_‡®%z&“ ak§$Õƒ‰LdÚ{\/=€Í`Ó°ØŠÎFïœDÇ$klä c`Ç…î)cÇ.*íÎ+µ}Ýp!>ªNüÑág;ÆÙû•Þ[ö{›Þ.RLB=ŒMÔÚóoQf .X¶R"ôÙꜞ= YÌó4Ý Ðš’˜x\ÿ`´Ê |òåºX÷%:GÈ Kw ár¦3k*˜©¬º>ä+óÑMšËÃSGž…ñr½…e0P\­oÍÀ¤ÀˆäBõ¤¢TöSãµðÊë÷ë5غjsjÁ2'¦÷Át팆0e“+AýŒEq4ÖtJb?Q®(…óŸ§Hè¶Ôjb„ñ‚Z%Y|­ì©Ú´]3T€LѨ›ÉÁá±ã°§Cþt¶ºªûB_¢‡’+LIcvŒ¥vYbužáNŒWØ +VoJm¾Ç&wBµQn~ £)/¥' ™€™HŘ„Mˆ)¾iÆcÐúÎ;B_ }ŽñB,¾ç5ÃŃî5"¦ó&y€Üª¡ôöäÂê¯-­ÌÁƒ;¿×±ÅZ×¹E= jĆ—jgÁ™³u˜œ®‡ƒeÐgT×m¾&µ¹œxª)ÍÏe“:J‹1L˜aÓ—‹Œ:ކ·ÆÖÞÉJtN…Ý; 2'›Q퀖¦íîR6­,‚'Þ ïÊ·wý¨c‹µ¶÷b/eµ…dS 4zÃëºwÇÎT V®‡TÔë°rp9\uÁÅ©Ìsº:G§v(3'o…MB8b› saæãPŸ±%·Äh{ó©±ÎDOŒ“‚•’T•‰-ók ¤ˆ]Ù,À…kŠÑ"…<´çGpªCþôåÝëaYiÔÅòÒF3 £2¬n(sp¤Õzªe¸rÝ¥°¢?`™£Ûa²2ÖŒqg֘邕h&è1¢(a/Ô-iÙeº 0Ú´¥/MuGm€NˆÃbôÃĵ‘þ?×vî…kJŠ®³a†“ÉÀèÙSðЮtd±²jo¼Þ¯ª*ªŠf@¶’YfÊ Øw|¼¨™Ñ5àU—¿0“N2Ëî±ï+e§¨*#xRöJõ†”ÖRh'ÿ @Ì‘N6¦¿ÜŒW&‰àŠO¤)Ñm5ö¥*±fÁ Š#bTßh­¾daÝŠ‚¯¾ot½_|ì›[°K–½Äk¥L-ͶñÚÏç¨ÀøY¥ da¿JÌ—ºûà5Wß‘Êüj*ìL}Eب1¨ºÄ1P\ݹ/ 7"}ƒ_ŽFït0ö Щçç@u§f7/ÅÙ’AB¶LCÆ•B~™ä‚"œK6tGùC¾ߨþŒOw¦`äúþ+”­¾µY+]∼/øñ=3@µFxßWæà%Ûn„KÖnM„;û8œš= =ÇwÂc&i¨5žu}—)fSÝ;íÕ÷˫͟ïÈzÊXæj³^p¿'Ì}a2WGõIÇJ™_’›`5*&uŠÌâþÿýZr)õýâ %¸·; åJ 0d6çunùæÓ÷Ûo~}úœ1“…«W¾ÒCµ!S4N kgê‚1ÇF«°óàŒú#ë÷Ë·ýL3‚mécû©û*C1Óa>Úb(yzLó—àtJñ×®~5ød˜5:5«Ž/+"?tdÖ'òùéÏLÂõ[¯‡?þéÿ‘Ú|v~O=¹lÑX‹vˆžné6ÔŸUk– ߆LöŒ…,™h!›Œ¢ê;ABÛÑ…:W"Î6Å{c[Ñá‘ðÐ>õ«•ú¾bYÑ7ÜçOURjdô|ä;ŸêØâ­ê½Þ|Éÿôš0Vês-¦–ÏGäÿö½qxä© ?˜gx³pÍ…WÂÞó½BiIóïù´‡^c$š¬MMú뻋X«³ÿj{¤æ:«˜Ïãž|nvaćQM¤£¶J(n$'t®ì­ kÐöfO@#½yÎÍv”a4¼zï/º\Iõ†ñ¥Êöýð·> 'ÏžìØn¾~ö²?ô^t³lŽàÌT>ó­Óððcg}sBç°—g¼ã'oþ ø÷ßü$¬_¾>µ9ì}@™A>S2ÀÀðÚêgÚ͵~u1J\õ|cÇÃÏñvÄhÝ÷±;•½óª;ÜÓÖ÷žã¼hÉymÙi\±º ýÐÖ*J:]³µÖ¬*¶ :è#W€c'Ã~é/;ºˆ]ï¼æ/áîï‚Ç·7àŸ9O<¥˜‹–òÕYèÎåáöËo…OýçÿŸ÷ÿ«V¦öݺ[ê}‡>n$€U ¼S­ApÙúdJ†;O­ÕWŸº¦ç¦žcZg6"o³Gsœê¾x0.iƒ3ÜÑäÀPÓƒÀœ°ñÀ2`^Ù“ç¾óúø‡¯ f’–º•úþOðö—¼®ÞxeDz;?/ßôXÿšWÀ/]¿Œð^ß°ll[½¶®¹¨#ßûý£Ÿ…Ó; ˜ëk]/l»%×®(Àæµ%سZ‰øÌ|zØw|/üó#__|é[žkšˆ(„ÄR¸w9i¿4BgÌjV}'Fü‡R6…ää|Ïm£A‘Ã>T-Õ/ÛØW_Ü«¤êDÛ_ÉÂÌìüú§ÿ¾úëWös¡£ zÑš Þq.ÆÉ©}pÿá€|¶Èc¡&óö¼¿4·(SgÏ¡™°ý‹xÿ×?o½å ©¹üf£sš]Œ=nx:ÜXŠê.™É°$Òmø"r¯àçö|]í⻕T ÄÀ{ºáÞ'ïƒ~ío_07®Þ¨Â—÷~¦kãá VIéו×.¿K7(¦¸­OýŒù<½ïIø³ÿ›s» 1®Qîvôt}‰`g‡ÇÖ§hk&àœiDŽȗ &° lMÛÚ}ôš yÁ4á š.øƒù<¼û‘Ä»÷ÀGa÷™@!Ûlv»ní¡Sf_}Ó,[Yj»·N%øý/~¾ñä·ÏÉŒûm£t0"³'Œb$€²pp#‰NW,Tæy!j^@U æ{7o|YI««6wÁ˯lKu¯ÉC¦fgàmûprüäóú¦=1òïðÀ‘h92&Žqc Dk?}=Yøù»–ÊåJšoú˜ÍA¹V…Ÿýë_…o<ýi#582ñ |eχà¯}˜xB™…ž+Fâˆ==B'a=)n}M ÈP¸ÖL‘çL8¤d·êªkßú×õÁÊ^÷Ú¢Ìÿ%­vÝ?ÿ‘ÿ 3åéçå Û3öø—Ýï÷1&kƈ" ¢×iÅ`ÞþÚ•pÕÅJ×Idz½²™€×}ð]ðÞ/~fæ–¾VµFŽOî‚ûþ=|ôñÿ}âÝðà‘„‰ªî —‰†¼rê"¡ð»\¶¥ƒqhQÕYpŽŒÒ>Ö8Z³­nHU£ä³ ÌQ˜»ã|ýwòIÞôÒa(Ï5`÷<º¬G±¾þØ·áûïð÷ïúäRlQÜéq`ü øìÎ?€*Íù‰+œo£@¥‹W«ý]xËËàê­=ðèÎ)Ø?233yµv5øÝOý)|âá¯ÂÛ^ôxí5wzé´…B|¦Ý\uΖO©™ƒžÿÈäv89s*õ/L7‡y?t8òÚì̉d¸Y ‰N\ê­ëÔ²4B þ!½‰Ä@‹úؘdÜ8JÒÈ0Ú B‘ÔÅÞrû2øŒú{÷é6ßÕŸzàsŠX²ð‘wü1ó¥óþFé„•/ìú#˜«O…³ÓبA{ êp;kß·®Ï¼dc .^_„±É:=U“gj06UUÇ!øðÃÿôÔÇàÒ ¶À¥+6ÀúáÕ°¼9¬Z=01w ¦*cpvnÎTŽ«Ç“¡ÏÕ§½ïÊ@ÖËW/xyÁ>u†‡%ŸLl0]™’™‰n$ô£$CŒãú­Å¢©fž:,€ƒ·_×9ë]%„·*;ô dà©“~}JW/|âþϨM<÷ÿÌÛ´çëxøÈgákûÿÊ qõ‰œøâŠdÔ©CKúlëcóm©Éï§ÞêËÂòÁîÈ©5P© †=5mF¨ÇÈø†fGÔ„kƒ…Öâ¹\Š`Ìd3~—è)€q溢ÀPCyè¶Ÿc Ä#“½dØl¡’Ð’+ ýÝ¢8¯4ÍŸ¾mî¼iعÖ$‚R|ùÑoÀ+ÿägá{=ïnÎdy>·ãÁ—ö~À#Ĭ—K@”@B¦ ʶV«ãŒ–)mH»àôQu] ŠÇ’WNK±–ÐZ/´Ž.ïЭ¦‘O¥î¶]\wF9÷ZJ„.u@‚iSK…’8æ¥ä³A_tã×›€ò]7öÃϽj%¬j¢Ì:zDIöGî€;ÿä?À¾ò×j“WÏ‹óÄÈ×à£Oü üèÄ—£*|å|»fséy†| 8[8èúŒ P‰7A´}R°á1í¨ó²¾.`fÉ6ºä?·™‡`´Ïeëx[ìxÉ®©xÆBÖçG~]Ò9E×oì‚õËóðÀ““ðýí“PS"?×¥ìË9øoÿø^øâc÷Âïýä{àŽË_öœÜÝc߃‡”ª¾ûÌ÷¼X€b®Ç¾N¡5‘T^£s«d»s&€ø½”`^‚Ô&FHcÍß"UE§º/ÐmÀ›Í~7+ÄXªÅ„«„0¥¤ÌŽ\—ŽD}ß´Ÿ½Ý¥ ¼öEƒpíÖøÞ3Sðä¾i(Ï(åF©œ÷oÿܵ÷1xË ¯„wÝöV¸ý²[½ÐÐN]jרÃðøÈ¿Ã¾‰G=?³–âÈùÆ1†¸­œ™[sdމ/ç’JØè5Áš6x\?5NšXpGé)€q e,±{‰3*cètK3=©M•àÛE«òõFV çá§^6/º²¶ïŸ…gÎÀ‰ÓYh”«ðéû¾Ÿ~äßáe[o€{n|5¼úê;`Óʩ߀J}þñéß‚½gè©ç:n=ÒhÑ,ØaƆÌä¡D€ L ­,Î{bÞSC‹û~)"K2Õ\ØkŠª;ñõ´„ÁJ7Ù²±L©-uá$A½3³áB…/›°V÷¥ÊÊÁ¬¹¾^rU?]…Ã#exöÈì=: ÷ïxXIùïÂ@ÿ2¸vãåpë…WÂ/ßù‹°nÙ©Ü€|¦èU«ÑD^PRÐ…M^ÇÖ†±jøæ3¦z#t÷—Û6ü¼Gè~x E%,9–t­5 ‰oÐhÖBÑr$3"´yÃÈ„ßÖ³=éHz)„nëxœ¡£@~ˆNÄI &*kAsâf¢H¯>eÛú®¨Zœ+Â{K½€…îþrËš7Â\mJñ– CÀ†í$, 4Hê{(ÜÔl©,‚d)ÑØÖB@ƾ‡°}jøswGI/U¢s_¢|#¦«Ç)ÈIBmoÎ>¥<ÈT9sU¯i?û…k‹ÐÝ“óãâçG6 £c#pïöt¥ºŽ„{ÝÖ_‡×n~ôVx¹Û•Æ,”kÓê˜iÓj*5¹Çx¢î—¦jŒÍJêàa VAK!›”hˆvu‘ˆÃ*4gÜçHš‹ËG§`&¼['Œ‘l¬Å$ÖHè!†¥ºw¡5öá¾lZS„í:/ÓˆÏþô¾ o}ñÓå¼™¼T©ð×®~-M<ÇÎŒx)¢z””61adz¯ŸÍ‰`ã~7 ÒÆInÁžxŒíI1Fˆ–µŠùžÐý«ì1úƒê¿Ãޤ—JèLYmkH5Ù>,¹G,ÄŠ’ÉUž16"IX€  \u:Ìýª‹z`û^£œR¾÷îüì>¾¶®Ù’úé- Ã+ïðs|eÏ_x[²ÁN®VB^ o”,ŸcëÌä"á\ Â$a1µ¶«×ö;’NÃF%Jæ¦d+JE(xm]¶ 1 8™j ÂYí½°Y¡h¶®+ÁŠåE¡›;“…é‰1øøw?ÎoZ]«î"@Q2õÞT‡Ñ¦Â“tmŒmk ¦¹BZ,'`UQ'Ì:’^ªž(‚l£qÝ\ˆ g5£êL)FFSG–!pÜ–ëÿí7&D¸a[_<18 Eøÿ¿û8=yú9¸uÒÍ0¤;¢…pÔ”±ÖæõZ™oFÍÐý3" CŽL¸­Ðà#ú»ïunô´$: W²ÏÍ„ ´Ïo¤é¿EŽëpÄNáâ\aÁ$êŠâWk ¸ú¢nœ‰mul-À±ào:رU´¢0‰Jeᾦ».’CLô]Ð&¦ ÏxŸ¶3 BL$$HfÜ.uî®ðÄR=a…°ª•±…&¤Ä ´\ˆ„ÀØS!ÍŠvÔ646Лõ²Û<©<¯P‚}óïáèØ±s'ËÉTÍ)Ê,U¦±HmnÝ0î;ÀÍlÈ6—©‘²ë:õÞÿWuÍY»BS×1N c›1ê5J>u´¨Âf£Eæc£NÛž£îívÃŽ°q]W»ck³9¡îÃþ{_øós'Ñͪ©±9]n•œ¶V=öba¦¦€–„— ^dpmWhUóIGÊi¨îI˜%|-h/K1×bY¡`«\²ƒ{"`€öÉEíצ­®ËG¿æ–A(ê–áÞn=ðw÷>÷È—žë!‘mJ V!…¡&JUÄdŠ$*\©V“X ÿš:žt¤Ü B·U1â¤o7" ÄðM®WvØc´HôVHß…XBq_K#ð:_ý•7†¿ B]÷îOüì8²óêÌz‹É;ò’.8Å“$3Èœ‡Ù0SRÝ9ÏZL‡–†¡ƒ Þ.GµƒÝRo €¡àE®†WB¨F*mjSjQdƒH"ÊRó]ù–Ëzàö›†üd—ùsrE8>vîù¿ïc¶×Q²mƒh;ÅØíÄh2‘›K¼Ö—l ÉÅ&,ÕgY†î]ëËê¸Ïµeê¡Çjvo7ŠqЖ/¤¸”TNµ”ª—Æ%l›ßÞð$;ÀÝ×õÃ7û—©57g±ž<°^ùþ_€'>}nôw³œ’µ‡™™‡Q “«›Îb‘R”™HÍ FrDLí3ÿ]GÂi:Æ¨îæ¹$©]ff“yc-i©DÑ„Drv“Ø®‡ ’ išÓi¾ºt´:*ÊFŵ}pÏ]+`°?¯D}³N|©ž>ô,¼â>ò­¿ïˆ”![Ì8—Žkº$9éjâ&fÑ .¿€„M!¢ê¶ŠAæw Eû>ý¡:ñ‰h_o7Ò‘è¶^ dÁ8À£Ä麊¼/ÝêGæêŽÅvÓ2=üycœ›÷¯¿ë «à¶¡·;ë|¶§&'à]ý-¸ëO~¾òØ×S­H£[QDaâÁ‰Ùˆaˆ7ÙRÎhQí9·`¦Çd8Eª÷©sß®)@®ƒe,>Öݦ‘¹±ˆ×®C‚Àæ³C8³ªB– §Ê‡’g>l‚†¿)I½^®6 ¯+¯ºenº¬¶œgáÄX¦fjðÍGïƒo>þ \¹érxý5wÀ]W¼ ¶¬Ü«WA6—LÍÕ&½ÔU]ÿýÌìq81½×«km²€I2¿Ÿ‹a4 .&QAVó>šJ÷»Z'"¢_ÔËâÈ·„N–û%í³j¤ A\}ª»ÆÖŒ±5Îæ†i$µ€ŠÚÆ~x€þž,¼äÊ~x‘"øñ©:œ8[…³“5›¨Á™©CðñÇÿ>·ã°ap9\¸òBØ8¼Vô À²¾aظbtº`¦2³Š°§ªcÞ117 Óµ1¯SélmZ›RÃrŽªšÓsÍÖ Ç 9NR¸† —ä*Ù2 (2fZ{®§Ôq::ÒM›Ð)vŒ W$F™@V€_Ø4§r@Ìw*/"o³Ænh¿Î\]S¼úÌ@o†ûKf@}zekõTë;`¢ñ LÖöAøÑ8®J­ÿ3ê ™LVýŸS*»2 (»À¥2!ã~DaM¸âÈÝ ó£1ëËdÔî÷µ“QõßO©ßó°#ÛNIô¸âœ±˜ÑÙÉ¢á°ÌĈ,ŠÊÀùöÙþ$A¢©˜óR>d¶´ÌLÝNXlÀÔL" S j$Á5åbÉ‚¸šœÝ–Èx,ŒYôÌìPïý¼zü‘#ÙN‚q¶òÙ¶æžì…„*¦œÍÖ"”A5 r} ¢æ2æ  Dà(B \ËfÆ'o­.•½6ñDH(‡@ ÝOѦAÊ ’iÆ®µ¥|°m”5†=ÈDðãê¿Û‘Ÿ+Û£q&'ñ‚vÆmÜÀ!ˆ÷›sgBJ$Žx6¿-]MÌžg\ç˜`Œ7Wož¸l»¶IÐQF²¶Ì k—Њh8Ò=#©ø‡B6V;xDÿ[_pdz® =œµf¤µQÕM‘-lR(ŒEiÃ*#·QQhç‹6ðù}b/® gÿ2ªµ-ã+¢U¡ÀØÔŠ’ü¶á…Ô×r8¼5 Z nh°í^uÞçÔ㿪£æ2ÒΡÇÕog÷X°‚«ÉÑ&@À ¬¤o"¿Œ_˜“(Ihªê6ÄÑÎ Y$fEÔf<¬¤BM‰„l5‹;‘ÈÒÜìñÃ,Å1[FòG“”Ϊ§§Õ9Ï€W ö¨“žU:œðŒ#Ëç‚Ð)†ØYu‰r#"ߤcÈp}SD’O”ºl”gwµ k»ImøΨq¦ƒEk‘4«¹c»¡Lµ^ÎÏ$ö s÷¿\=?©ªÇgÔkºiÝ¾æ¡ 9V žOª»¥â/ËBq2‚A›1‚sйi' ÕF‘xUœãTAÆÁž|Y)©)“ƒ1œÐÖÏÝdp¶Òºq¾p°¯©x=æ^ %HqÊ#\„#¾„ƧÔ9ûÕq|Ÿ·#èç-'éQ…1°ƒjaP•µL¦ØffD\šSç"µ¦±Õb"¿uÖ#hR°¼Ñjw•§në2ȻԹ»ÔëÇÕI“nË;Bà8“ÒgJCâ‰bÜL¬† ”%všàl®8†C4'bC 3û–ñèRÓ‚èfÕãé¦Í¬ýÐ;=) ¸ÇG»=Ü 7$ѳì~Cˆñ§“E…G82“YP²‰¤Ú\ÊbâϹ>_(œÇÙñ‚ÎaS$Ät)ãõx´éƒ~Æ'f8 NÛ¯„ø„‹s#-BŸŠUçcp< 5r$.ò€U+¨™Â ´]lÛœÐ,@0€0Œj2¦üNĺzá¸:ï¸z®mh!¶C=? ¾Ûê´ÛªntšÐß§]åàVB6%T$¹µTªgXÅQÄ”œJÞ²Y’Ì(1›?&N½ îQOæI´ý”:©÷u験nKºñ\º’2ð.µçÔñ+‰ÔvDYõHRHÀa‰: ©ÄÁFÚ#DA³`‚J¬šx½ÍØt‚Æ>õ‚îÛ½K]ë õ÷³1œp[ÏóÐý]ŒðnõÿYõü·cUu²Ø³0Æihó#Û®'áhÈÌÉâÁïå|û‘H5qå%aìkÚÎ{Õ{ÛÕ9ÚžßuUsÛÌç ¡ÏïóßQ4pF=¾?”«A6j3¥"1i£\ˆ—˜ŒÃ¬mNR‰gÉU`ž.ÕÆ"eC㤧nkPŒ`§š£²¥q»zOÇwkX]p„nœ—„îÓÀŸ©ÿËêñ/@ªPc upÁ2~v³¾˜<‹vàz“h«ëmoªÚÚmµS}@?ê÷*nÛ¸ñÂ'tŸî>¬þ×væ'Àê¢1/ÄÃKª{ˆè‰gA•Ü ‹^¤Øˆ’ÌZÍÖê¶V½÷¨k*‚öPsãÇ›ÐýñYС•Wô0$KL0'¸®l•XçãßU;ñ.0ê3%H¢ÝV¨ û€úNý÷pÔì†#ôØñoŠLÞ¨hëŸÕóeáÀ4I¸ «1‰‘’K(T‘ñÞ×RX§KVo>ãµ—œq¸y4ÜívÃúâÇwÝ­u¯M²mo!nd¤:”á5¡þÔ)”Zïôš¼à’£êÇÔ{®Ènt€ÐõxTØëÕãgÔq‰œÊ†1ªvÀnGœ?¨d¯§fûõÅÔ¡ˆPã3îö¹áƹ%t=t„×+þ‹²£¯‰ïÈѲÛu‘­nëÐÏݾtöÔnMäcŠÈ§ÝmrÃó‡ÐõС?¡ŽO*~¹!ÔÁÒ ¯Ú'Ñn%¡u¦•îÀ±K7¦ˆÛe\¹áÆó„ÐõЙV?YÈâ“_P£Ü{¼¼h~ûuÇÜpÃs8\Oi7ÜxÁŒ[7Üp„î†n8Bwà 7¡»á†ŽÐÝpà Gèn¸á†#t7Üpún¸áÝ 7¡»á†ŽÐÝpà Gèn¸á†#t7Üpún¸áÝ 7Üp„î†n8Bwà Gèn¸á†#t7Üpún¸áÝ 7Üp„î†n8Bwà 7¡»á†ŽÐÝpún¸áÝ 7Üp„î†n8Bwà 7¡»á†ŽÐÝpà Gèn¸á†#t7Üpún8Bwà 7¡»á†Ï«ñÿbbÅžÿIEND®B`‚PyQt5_gpl-5.10.1/examples/quick/canvas/contents/ScrollBar.qml0000644000076500000240000000647713245231431024155 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Mobility Components. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Item { id: scrollBar // The properties that define the scrollbar's state. // position and pageSize are in the range 0.0 - 1.0. They are relative to the // height of the page, i.e. a pageSize of 0.5 means that you can see 50% // of the height of the view. // orientation can be either 'Vertical' or 'Horizontal' property real position property real pageSize property string orientation : "Vertical" property alias bgColor: background.color property alias fgColor: thumb.color // A light, semi-transparent background Rectangle { id: background radius: orientation == 'Vertical' ? (width/2 - 1) : (height/2 - 1) color: "white"; opacity: 0.3 anchors.fill: parent } // Size the bar to the required size, depending upon the orientation. Rectangle { id: thumb opacity: 0.7 color: "black" radius: orientation == 'Vertical' ? (width/2 - 1) : (height/2 - 1) x: orientation == 'Vertical' ? 1 : (scrollBar.position * (scrollBar.width-2) + 1) y: orientation == 'Vertical' ? (scrollBar.position * (scrollBar.height-2) + 1) : 1 width: orientation == 'Vertical' ? (parent.width-2) : (scrollBar.pageSize * (scrollBar.width-2)) height: orientation == 'Vertical' ? (scrollBar.pageSize * (scrollBar.height-2)) : (parent.height-2) } } PyQt5_gpl-5.10.1/examples/quick/canvas/contents/Slider.qml0000644000076500000240000000751313245231431023504 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtQuick module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Item { id:slider property real min:0 property real max:1 property real value: min + (max - min) * (bar.x / (foo.width - bar.width)) property real init:min+(max-min)/2 property string name:"Slider" Component.onCompleted: setValue(init) function setValue(v) { if (min < max) bar.x = v/(max - min) * (foo.width - bar.width); } Rectangle { id:sliderName anchors.left:parent.left height: childrenRect.height width:childrenRect.width anchors.verticalCenter:parent.verticalCenter Text { text:slider.name font.pointSize:12 } } Item { id: foo height: 6 width: parent.width - 4 - sliderName.width anchors.verticalCenter:parent.verticalCenter anchors.left:sliderName.right anchors.leftMargin:5 Rectangle { height: parent.height anchors.left: parent.left anchors.right: bar.horizontalCenter color: "blue" radius: 3 } Rectangle { height: parent.height anchors.left: bar.horizontalCenter anchors.right: parent.right color: "gray" radius: 3 } Rectangle { anchors.fill: parent color: "transparent" radius: 3 border.width: 2 border.color: "black" } Rectangle { id: bar y: -7 width: 20 height: 20 radius: 15 color: "white" border.width: 2 border.color: "black" MouseArea { anchors.fill: parent drag.target: parent drag.axis: Drag.XAxis drag.minimumX: 0 drag.maximumX: foo.width - parent.width } } } } PyQt5_gpl-5.10.1/examples/quick/canvas/contents/TitleBar.qml0000644000076500000240000000541213245231431023764 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Item { id: titleBar property string title: "" BorderImage { source: "images/titlebar.sci"; width: parent.width; height: parent.height + 14; y: -7 } Image { id: quitButton anchors.left: parent.left//; anchors.leftMargin: 0 anchors.verticalCenter: parent.verticalCenter source: "images/quit.png" MouseArea { anchors.fill: parent onClicked: Qt.quit() } } Text { id: categoryText anchors { left: quitButton.right; right: parent.right; //leftMargin: 10; rightMargin: 10 verticalCenter: parent.verticalCenter } elide: Text.ElideLeft text: title font.bold: true; font.pointSize: 20; color: "White"; style: Text.Raised; styleColor: "Black" } } PyQt5_gpl-5.10.1/examples/quick/canvas/contents/ToolBar.qml0000644000076500000240000000500413245231431023615 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Item { id: toolbar property variant labels signal buttonClicked(int index) BorderImage { source: "images/titlebar.sci" width: parent.width height: parent.height + 14 y: -7 } Row { y: 3 anchors.horizontalCenter: parent.horizontalCenter Repeater { model: toolbar.labels delegate: Button { text: modelData onClicked: toolbar.buttonClicked(model.index) } } } } PyQt5_gpl-5.10.1/examples/quick/canvas/quadraticCurveTo/0000755000076500000240000000000013245231431023171 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/canvas/quadraticCurveTo/quadraticCurveTo.qml0000644000076500000240000001160013245231431027167 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import "../contents" Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Quadratic Curve"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 property string strokeStyle:"steelblue" property string fillStyle:"yellow" property int lineWidth:lineWidthCtrl.value property bool fill:true property bool stroke:true property real alpha:alphaCtrl.value property real scaleX : scaleXCtrl.value property real scaleY : scaleYCtrl.value property real rotate : rotateCtrl.value antialiasing: true onLineWidthChanged:requestPaint(); onFillChanged:requestPaint(); onStrokeChanged:requestPaint(); onAlphaChanged:requestPaint(); onScaleXChanged:requestPaint(); onScaleYChanged:requestPaint(); onRotateChanged:requestPaint(); Behavior on scaleX { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite } } Behavior on scaleY { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } Behavior on rotate { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } onPaint: { var ctx = canvas.getContext('2d'); ctx.save(); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.globalAlpha = canvas.alpha; ctx.strokeStyle = canvas.strokeStyle; ctx.fillStyle = canvas.fillStyle; ctx.lineWidth = canvas.lineWidth; ctx.scale(canvas.scaleX, canvas.scaleY); ctx.rotate(canvas.rotate); // ![0] ctx.beginPath(); ctx.moveTo(75,25); ctx.quadraticCurveTo(25,25,25,62.5); ctx.quadraticCurveTo(25,100,50,100); ctx.quadraticCurveTo(50,120,30,125); ctx.quadraticCurveTo(60,120,65,100); ctx.quadraticCurveTo(125,100,125,62.5); ctx.quadraticCurveTo(125,25,75,25); ctx.closePath(); // ![0] if (canvas.fill) ctx.fill(); if (canvas.stroke) ctx.stroke(); // ![1] ctx.fillStyle="green"; ctx.font = "Bold 15px"; ctx.fillText("QML酷毙了", 30, 60); // ![1] ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:lineWidthCtrl; width:300; height:20; min:1; max:10; init:2; name:"Line width"} Slider {id:scaleXCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleX"} Slider {id:scaleYCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleY"} Slider {id:rotateCtrl; width:300; height:20; min:0; max:Math.PI*2; init:0; name:"Rotate"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } PyQt5_gpl-5.10.1/examples/quick/canvas/roundedrect/0000755000076500000240000000000013245231431022222 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/canvas/roundedrect/roundedrect.qml0000644000076500000240000001171613245231431025261 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import "../contents" Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Rounded rectangle"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 antialiasing: true property int radius: rCtrl.value property int rectx: rxCtrl.value property int recty: ryCtrl.value property int rectWidth: width - 2*rectx property int rectHeight: height - 2*recty property string strokeStyle:"blue" property string fillStyle:"steelblue" property int lineWidth:lineWidthCtrl.value property bool fill:true property bool stroke:true property real alpha:alphaCtrl.value onLineWidthChanged:requestPaint(); onFillChanged:requestPaint(); onStrokeChanged:requestPaint(); onRadiusChanged:requestPaint(); onRectxChanged:requestPaint(); onRectyChanged:requestPaint(); onAlphaChanged:requestPaint(); onPaint: { var ctx = getContext("2d"); ctx.save(); ctx.clearRect(0,0,canvas.width, canvas.height); ctx.strokeStyle = canvas.strokeStyle; ctx.lineWidth = canvas.lineWidth ctx.fillStyle = canvas.fillStyle ctx.globalAlpha = canvas.alpha ctx.beginPath(); ctx.moveTo(rectx+radius,recty); // top side ctx.lineTo(rectx+rectWidth-radius,recty); // draw top right corner ctx.arcTo(rectx+rectWidth,recty,rectx+rectWidth,recty+radius,radius); ctx.lineTo(rectx+rectWidth,recty+rectHeight-radius); // right side // draw bottom right corner ctx.arcTo(rectx+rectWidth,recty+rectHeight,rectx+rectWidth-radius,recty+rectHeight,radius); ctx.lineTo(rectx+radius,recty+rectHeight); // bottom side // draw bottom left corner ctx.arcTo(rectx,recty+rectHeight,rectx,recty+rectHeight-radius,radius); ctx.lineTo(rectx,recty+radius); // left side // draw top left corner ctx.arcTo(rectx,recty,rectx+radius,recty,radius); ctx.closePath(); if (canvas.fill) ctx.fill(); if (canvas.stroke) ctx.stroke(); ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:lineWidthCtrl; width:300; height:20; min:1; max:10; init:2; name:"Line width"} Slider {id:rxCtrl; width:300; height:20; min:5; max:30; init:10; name:"rectx"} Slider {id:ryCtrl; width:300; height:20; min:5; max:30; init:10; name:"recty"} Slider {id:rCtrl; width:300; height:20; min:10; max:100; init:40; name:"Radius"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } PyQt5_gpl-5.10.1/examples/quick/canvas/smile/0000755000076500000240000000000013245231431021015 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/canvas/smile/smile.qml0000644000076500000240000001170713245231431022647 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import "../contents" Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Smile with arcs"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 antialiasing: true property string strokeStyle:"green" property string fillStyle:"yellow" property int lineWidth:lineWidthCtrl.value property bool fill:true property bool stroke:true property real alpha:alphaCtrl.value property real scaleX : scaleXCtrl.value property real scaleY : scaleYCtrl.value property real rotate : rotateCtrl.value onLineWidthChanged:requestPaint(); onFillChanged:requestPaint(); onStrokeChanged:requestPaint(); onAlphaChanged:requestPaint(); onScaleXChanged:requestPaint(); onScaleYChanged:requestPaint(); onRotateChanged:requestPaint(); Behavior on scaleX { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite } } Behavior on scaleY { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } Behavior on rotate { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } onPaint: { var ctx = canvas.getContext('2d'); ctx.save(); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.globalAlpha = canvas.alpha; ctx.strokeStyle = canvas.strokeStyle; ctx.fillStyle = canvas.fillStyle; ctx.lineWidth = canvas.lineWidth; ctx.scale(canvas.scaleX, canvas.scaleY); ctx.rotate(canvas.rotate); ctx.beginPath(); ctx.moveTo(75 + 50 * Math.cos(0), 75 - 50 * Math.sin(Math.PI*2)); ctx.arc(75,75,50,0,Math.PI*2,true); // Outer circle ctx.moveTo(75,70); ctx.arc(75,70,35,0,Math.PI,false); // Mouth (clockwise) ctx.moveTo(60,65); ctx.arc(60,65,5,0,Math.PI*2,true); // Left eye ctx.moveTo(90 + 5 * Math.cos(0), 65 - 5 * Math.sin(Math.PI*2)); ctx.moveTo(90,65); ctx.arc(90,65,5,0,Math.PI*2,true); // Right eye ctx.closePath(); if (canvas.fill) ctx.fill(); if (canvas.stroke) ctx.stroke(); ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:lineWidthCtrl; width:300; height:20; min:1; max:10; init:2; name:"Line width"} Slider {id:scaleXCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleX"} Slider {id:scaleYCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleY"} Slider {id:rotateCtrl; width:300; height:20; min:0; max:Math.PI*2; init:0; name:"Rotate"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } PyQt5_gpl-5.10.1/examples/quick/canvas/squircle/0000755000076500000240000000000013245231431021533 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/canvas/squircle/squircle.png0000644000076500000240000000140313245231431024066 0ustar philstaff00000000000000‰PNG  IHDRÔÌDÝ:0PLTEÿÿÿPPPÌÌÌ000@@@¶¶¶tttbbbŠŠŠ"""æææžžž §“D‰ŽIDATH T=ˆAþòãm.·¹ÁC! 6‡ÕÊ…V±PDP°8‹ÛS‰‚‡6±?¸K› (Jš(rW ­®’kì=DðÍÎLÞ›d7>Ø™7ïûÞûæÍ d›ÿôÛF6ê"‡ážtSx•½Å^Ž×ÊˇîÚ®Ò¸0•ó¡ÝFdé“s1Ägœw£›²³Ç€4.Låâx˳¤~`âÓ¤p"‘šâ²”Ýò,©¼më.†zJ“š«'R̵}»‚ÙÆ,©¸4Ò‰q¶Ti/‘b®¦Bte¶1KÊ&±vÓº*_K¤˜k=îÊlƒw7J‹ëùk÷»ºj¶X»Åp®3ÂMŽ“WÝì ®E#Ì?ñ:MÆ"zåøž¬ ¯_8š!UÊ7p`‹%s+ð\n} ,VH„Ýê•ÓmÆ"”°ì$Yvh…XÎÚZl«w ì!*5.'€[FQGh®©…UeCò^R¶ P$¦ŒJ¶†êòExYRØÖ94*SR_o킲GäG©/¤.ô¡Ô)¨w& ¸—Ñn“1%õŒ>a…%”A!(Ö0¥½C®'¸ðë¨\n]]•½+쓱¼Â®Ì.Ô‘‰ë$,Ö8¥ý¥#Ô =ú5l¹œ€"øK´d,ÂóÕ}‚üÄãS‹5N±÷¸êpñÚÿ%Ê Œš¨ÑÒÔñÓ]­=øÔuÞ:ît?®XŠÎõDi·»o´oÇ3÷›.×¼ùRÊB³¡èh¬§$¶100) M=100; if (N<0.00000000001) M=0.00000000001; ctx.save(); ctx.globalAlpha =canvas.alpha; ctx.fillStyle = "gray"; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.strokeStyle = canvas.strokeStyle; ctx.fillStyle = canvas.fillStyle; ctx.lineWidth = canvas.lineWidth; ctx.beginPath(); var i = 0, x, y; for (i=0; i<(2*R+1); i++){ x = Math.round(i-R) + canvas.px; y = Math.round(Math.pow(Math.abs(Math.pow(R,M)-Math.pow(Math.abs(i-R),M)),1/M)) + canvas.py; if (i == 0) ctx.moveTo(x, y); else ctx.lineTo(x, y); } for (i=(2*R); i<(4*R+1); i++){ x =Math.round(3*R-i)+canvas.px; y = Math.round(-Math.pow(Math.abs(Math.pow(R,M)-Math.pow(Math.abs(3*R-i),M)),1/M)) + canvas.py; ctx.lineTo(x, y); } ctx.closePath(); if (canvas.stroke) { ctx.stroke(); } if (canvas.fill) { ctx.fill(); } ctx.fillStyle = "yellow"; ctx.font = "Helvetica 16px"; ctx.fillText("|X-" + Math.round(canvas.px) + "|^" + N + " + |Y-"+Math.round(canvas.py)+"|^" + N + " = |" + Math.round(R) + "|^" + N, canvas.px - 125, canvas.py); ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:nCtrl; width:300; height:20; min:1; max:10; init:4; name:"N"} Slider {id:rCtrl; width:300; height:20; min:30; max:180; init:100; name:"Radius"} Slider {id:xCtrl; width:300; height:20; min:50; max:300; init:180; name:"X"} Slider {id:yCtrl; width:300; height:20; min:30; max:300; init:220; name:"Y"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } PyQt5_gpl-5.10.1/examples/quick/canvas/tiger/0000755000076500000240000000000013245231431021016 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/canvas/tiger/tiger.js0000644000076500000240000026675413245231431022512 0ustar philstaff00000000000000var tiger = [ {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-122.304 84.285C-122.304 84.285 -122.203 86.179 -123.027 86.16C-123.851 86.141 -140.305 38.066 -160.833 40.309C-160.833 40.309 -143.05 32.956 -122.304 84.285z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-118.774 81.262C-118.774 81.262 -119.323 83.078 -120.092 82.779C-120.86 82.481 -119.977 31.675 -140.043 26.801C-140.043 26.801 -120.82 25.937 -118.774 81.262z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-91.284 123.59C-91.284 123.59 -89.648 124.55 -90.118 125.227C-90.589 125.904 -139.763 113.102 -149.218 131.459C-149.218 131.459 -145.539 112.572 -91.284 123.59z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-94.093 133.801C-94.093 133.801 -92.237 134.197 -92.471 134.988C-92.704 135.779 -143.407 139.121 -146.597 159.522C-146.597 159.522 -149.055 140.437 -94.093 133.801z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-98.304 128.276C-98.304 128.276 -96.526 128.939 -96.872 129.687C-97.218 130.435 -147.866 126.346 -153.998 146.064C-153.998 146.064 -153.646 126.825 -98.304 128.276z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-109.009 110.072C-109.009 110.072 -107.701 111.446 -108.34 111.967C-108.979 112.488 -152.722 86.634 -166.869 101.676C-166.869 101.676 -158.128 84.533 -109.009 110.072z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-116.554 114.263C-116.554 114.263 -115.098 115.48 -115.674 116.071C-116.25 116.661 -162.638 95.922 -174.992 112.469C-174.992 112.469 -168.247 94.447 -116.554 114.263z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-119.154 118.335C-119.154 118.335 -117.546 119.343 -118.036 120.006C-118.526 120.669 -167.308 106.446 -177.291 124.522C-177.291 124.522 -173.066 105.749 -119.154 118.335z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-108.42 118.949C-108.42 118.949 -107.298 120.48 -107.999 120.915C-108.7 121.35 -148.769 90.102 -164.727 103.207C-164.727 103.207 -153.862 87.326 -108.42 118.949z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-128.2 90C-128.2 90 -127.6 91.8 -128.4 92C-129.2 92.2 -157.8 50.2 -177.001 57.8C-177.001 57.8 -161.8 46 -128.2 90z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-127.505 96.979C-127.505 96.979 -126.53 98.608 -127.269 98.975C-128.007 99.343 -164.992 64.499 -182.101 76.061C-182.101 76.061 -169.804 61.261 -127.505 96.979z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-127.62 101.349C-127.62 101.349 -126.498 102.88 -127.199 103.315C-127.9 103.749 -167.969 72.502 -183.927 85.607C-183.927 85.607 -173.062 69.726 -127.62 101.349z"} , {"fill": "#ffffff", "stroke":"#000000", "path":"M-129.83 103.065C-129.327 109.113 -128.339 115.682 -126.6 118.801C-126.6 118.801 -130.2 131.201 -121.4 144.401C-121.4 144.401 -121.8 151.601 -120.2 154.801C-120.2 154.801 -116.2 163.201 -111.4 164.001C-107.516 164.648 -98.793 167.717 -88.932 169.121C-88.932 169.121 -71.8 183.201 -75 196.001C-75 196.001 -75.4 212.401 -79 214.001C-79 214.001 -67.4 202.801 -77 219.601L-81.4 238.401C-81.4 238.401 -55.8 216.801 -71.4 235.201L-81.4 261.201C-81.4 261.201 -61.8 242.801 -69 251.201L-72.2 260.001C-72.2 260.001 -29 232.801 -59.8 262.401C-59.8 262.401 -51.8 258.801 -47.4 261.601C-47.4 261.601 -40.6 260.401 -41.4 262.001C-41.4 262.001 -62.2 272.401 -65.8 290.801C-65.8 290.801 -57.4 280.801 -60.6 291.601L-60.2 303.201C-60.2 303.201 -56.2 281.601 -56.6 319.201C-56.6 319.201 -37.4 301.201 -49 322.001L-49 338.801C-49 338.801 -33.8 322.401 -40.2 335.201C-40.2 335.201 -30.2 326.401 -34.2 341.601C-34.2 341.601 -35 352.001 -30.6 340.801C-30.6 340.801 -14.6 310.201 -20.6 336.401C-20.6 336.401 -21.4 355.601 -16.6 340.801C-16.6 340.801 -16.2 351.201 -7 358.401C-7 358.401 -8.2 307.601 4.6 343.601L8.6 360.001C8.6 360.001 11.4 350.801 11 345.601C11 345.601 25.8 329.201 19 353.601C19 353.601 34.2 330.801 31 344.001C31 344.001 23.4 360.001 25 364.801C25 364.801 41.8 330.001 43 328.401C43 328.401 41 370.802 51.8 334.801C51.8 334.801 57.4 346.801 54.6 351.201C54.6 351.201 62.6 343.201 61.8 340.001C61.8 340.001 66.4 331.801 69.2 345.401C69.2 345.401 71 354.801 72.6 351.601C72.6 351.601 76.6 375.602 77.8 352.801C77.8 352.801 79.4 339.201 72.2 327.601C72.2 327.601 73 324.401 70.2 320.401C70.2 320.401 83.8 342.001 76.6 313.201C76.6 313.201 87.801 321.201 89.001 321.201C89.001 321.201 75.4 298.001 84.2 302.801C84.2 302.801 79 292.401 97.001 304.401C97.001 304.401 81 288.401 98.601 298.001C98.601 298.001 106.601 304.401 99.001 294.401C99.001 294.401 84.6 278.401 106.601 296.401C106.601 296.401 118.201 312.801 119.001 315.601C119.001 315.601 109.001 286.401 104.601 283.601C104.601 283.601 113.001 247.201 154.201 262.801C154.201 262.801 161.001 280.001 165.401 261.601C165.401 261.601 178.201 255.201 189.401 282.801C189.401 282.801 193.401 269.201 192.601 266.401C192.601 266.401 199.401 267.601 198.601 266.401C198.601 266.401 211.801 270.801 213.001 270.001C213.001 270.001 219.801 276.801 220.201 273.201C220.201 273.201 229.401 276.001 227.401 272.401C227.401 272.401 236.201 288.001 236.601 291.601L239.001 277.601L241.001 280.401C241.001 280.401 242.601 272.801 241.801 271.601C241.001 270.401 261.801 278.401 266.601 299.201L268.601 307.601C268.601 307.601 274.601 292.801 273.001 288.801C273.001 288.801 278.201 289.601 278.601 294.001C278.601 294.001 282.601 270.801 277.801 264.801C277.801 264.801 282.201 264.001 283.401 267.601L283.401 260.401C283.401 260.401 290.601 261.201 290.601 258.801C290.601 258.801 295.001 254.801 297.001 259.601C297.001 259.601 284.601 224.401 303.001 243.601C303.001 243.601 310.201 254.401 306.601 235.601C303.001 216.801 299.001 215.201 303.801 214.801C303.801 214.801 304.601 211.201 302.601 209.601C300.601 208.001 303.801 209.601 303.801 209.601C303.801 209.601 308.601 213.601 303.401 191.601C303.401 191.601 309.801 193.201 297.801 164.001C297.801 164.001 300.601 161.601 296.601 153.201C296.601 153.201 304.601 157.601 307.401 156.001C307.401 156.001 307.001 154.401 303.801 150.401C303.801 150.401 282.201 95.6 302.601 117.601C302.601 117.601 314.451 131.151 308.051 108.351C308.051 108.351 298.94 84.341 299.717 80.045L-129.83 103.065z"} , {"fill": "#cc7226", "stroke":"#000000", "path":"M299.717 80.245C300.345 80.426 302.551 81.55 303.801 83.2C303.801 83.2 310.601 94 305.401 75.6C305.401 75.6 296.201 46.8 305.001 58C305.001 58 311.001 65.2 307.801 51.6C303.936 35.173 301.401 28.8 301.401 28.8C301.401 28.8 313.001 33.6 286.201 -6L295.001 -2.4C295.001 -2.4 275.401 -42 253.801 -47.2L245.801 -53.2C245.801 -53.2 284.201 -91.2 271.401 -128C271.401 -128 264.601 -133.2 255.001 -124C255.001 -124 248.601 -119.2 242.601 -120.8C242.601 -120.8 211.801 -119.6 209.801 -119.6C207.801 -119.6 173.001 -156.8 107.401 -139.2C107.401 -139.2 102.201 -137.2 97.801 -138.4C97.801 -138.4 79.4 -154.4 30.6 -131.6C30.6 -131.6 20.6 -129.6 19 -129.6C17.4 -129.6 14.6 -129.6 6.6 -123.2C-1.4 -116.8 -1.8 -116 -3.8 -114.4C-3.8 -114.4 -20.2 -103.2 -25 -102.4C-25 -102.4 -36.6 -96 -41 -86L-44.6 -84.8C-44.6 -84.8 -46.2 -77.6 -46.6 -76.4C-46.6 -76.4 -51.4 -72.8 -52.2 -67.2C-52.2 -67.2 -61 -61.2 -60.6 -56.8C-60.6 -56.8 -62.2 -51.6 -63 -46.8C-63 -46.8 -70.2 -42 -69.4 -39.2C-69.4 -39.2 -77 -25.2 -75.8 -18.4C-75.8 -18.4 -82.2 -18.8 -85 -16.4C-85 -16.4 -85.8 -11.6 -87.4 -11.2C-87.4 -11.2 -90.2 -10 -87.8 -6C-87.8 -6 -89.4 -3.2 -89.8 -1.6C-89.8 -1.6 -89 1.2 -93.4 6.8C-93.4 6.8 -99.8 25.6 -97.8 30.8C-97.8 30.8 -97.4 35.6 -100.2 37.2C-100.2 37.2 -103.8 36.8 -95.4 48.8C-95.4 48.8 -94.6 50 -97.8 52.4C-97.8 52.4 -115 56 -117.4 72.4C-117.4 72.4 -131 87.2 -131 92.4C-131 94.705 -130.729 97.852 -130.03 102.465C-130.03 102.465 -130.6 110.801 -103 111.601C-75.4 112.401 299.717 80.245 299.717 80.245z"} , {"fill": "#cc7226", "path":"M-115.6 102.6C-140.6 63.2 -126.2 119.601 -126.2 119.601C-117.4 154.001 12.2 116.401 12.2 116.401C12.2 116.401 181.001 86 192.201 82C203.401 78 298.601 84.4 298.601 84.4L293.001 67.6C228.201 21.2 209.001 44.4 195.401 40.4C181.801 36.4 184.201 46 181.001 46.8C177.801 47.6 138.601 22.8 132.201 23.6C125.801 24.4 100.459 0.649 115.401 32.4C131.401 66.4 57 71.6 40.2 60.4C23.4 49.2 47.4 78.8 47.4 78.8C65.8 98.8 31.4 82 31.4 82C-3 69.2 -27 94.8 -30.2 95.6C-33.4 96.4 -38.2 99.6 -39 93.2C-39.8 86.8 -47.31 70.099 -79 96.4C-99 113.001 -112.8 91 -112.8 91L-115.6 102.6z"} , {"fill": "#e87f3a", "path":"M133.51 25.346C127.11 26.146 101.743 2.407 116.71 34.146C133.31 69.346 58.31 73.346 41.51 62.146C24.709 50.946 48.71 80.546 48.71 80.546C67.11 100.546 32.709 83.746 32.709 83.746C-1.691 70.946 -25.691 96.546 -28.891 97.346C-32.091 98.146 -36.891 101.346 -37.691 94.946C-38.491 88.546 -45.87 72.012 -77.691 98.146C-98.927 115.492 -112.418 94.037 -112.418 94.037L-115.618 104.146C-140.618 64.346 -125.546 122.655 -125.546 122.655C-116.745 157.056 13.509 118.146 13.509 118.146C13.509 118.146 182.31 87.746 193.51 83.746C204.71 79.746 299.038 86.073 299.038 86.073L293.51 68.764C228.71 22.364 210.31 46.146 196.71 42.146C183.11 38.146 185.51 47.746 182.31 48.546C179.11 49.346 139.91 24.546 133.51 25.346z"} , {"fill": "#ea8c4d", "path":"M134.819 27.091C128.419 27.891 103.685 3.862 118.019 35.891C134.219 72.092 59.619 75.092 42.819 63.892C26.019 52.692 50.019 82.292 50.019 82.292C68.419 102.292 34.019 85.492 34.019 85.492C-0.381 72.692 -24.382 98.292 -27.582 99.092C-30.782 99.892 -35.582 103.092 -36.382 96.692C-37.182 90.292 -44.43 73.925 -76.382 99.892C-98.855 117.983 -112.036 97.074 -112.036 97.074L-115.636 105.692C-139.436 66.692 -124.891 125.71 -124.891 125.71C-116.091 160.11 14.819 119.892 14.819 119.892C14.819 119.892 183.619 89.492 194.819 85.492C206.019 81.492 299.474 87.746 299.474 87.746L294.02 69.928C229.219 23.528 211.619 47.891 198.019 43.891C184.419 39.891 186.819 49.491 183.619 50.292C180.419 51.092 141.219 26.291 134.819 27.091z"} , {"fill": "#ec9961", "path":"M136.128 28.837C129.728 29.637 104.999 5.605 119.328 37.637C136.128 75.193 60.394 76.482 44.128 65.637C27.328 54.437 51.328 84.037 51.328 84.037C69.728 104.037 35.328 87.237 35.328 87.237C0.928 74.437 -23.072 100.037 -26.272 100.837C-29.472 101.637 -34.272 104.837 -35.072 98.437C-35.872 92.037 -42.989 75.839 -75.073 101.637C-98.782 120.474 -111.655 100.11 -111.655 100.11L-115.655 107.237C-137.455 70.437 -124.236 128.765 -124.236 128.765C-115.436 163.165 16.128 121.637 16.128 121.637C16.128 121.637 184.928 91.237 196.129 87.237C207.329 83.237 299.911 89.419 299.911 89.419L294.529 71.092C229.729 24.691 212.929 49.637 199.329 45.637C185.728 41.637 188.128 51.237 184.928 52.037C181.728 52.837 142.528 28.037 136.128 28.837z"} , {"fill": "#eea575", "path":"M137.438 30.583C131.037 31.383 106.814 7.129 120.637 39.383C137.438 78.583 62.237 78.583 45.437 67.383C28.637 56.183 52.637 85.783 52.637 85.783C71.037 105.783 36.637 88.983 36.637 88.983C2.237 76.183 -21.763 101.783 -24.963 102.583C-28.163 103.383 -32.963 106.583 -33.763 100.183C-34.563 93.783 -41.548 77.752 -73.763 103.383C-98.709 122.965 -111.273 103.146 -111.273 103.146L-115.673 108.783C-135.473 73.982 -123.582 131.819 -123.582 131.819C-114.782 166.22 17.437 123.383 17.437 123.383C17.437 123.383 186.238 92.983 197.438 88.983C208.638 84.983 300.347 91.092 300.347 91.092L295.038 72.255C230.238 25.855 214.238 51.383 200.638 47.383C187.038 43.383 189.438 52.983 186.238 53.783C183.038 54.583 143.838 29.783 137.438 30.583z"} , {"fill": "#f1b288", "path":"M138.747 32.328C132.347 33.128 106.383 9.677 121.947 41.128C141.147 79.928 63.546 80.328 46.746 69.128C29.946 57.928 53.946 87.528 53.946 87.528C72.346 107.528 37.946 90.728 37.946 90.728C3.546 77.928 -20.454 103.528 -23.654 104.328C-26.854 105.128 -31.654 108.328 -32.454 101.928C-33.254 95.528 -40.108 79.665 -72.454 105.128C-98.636 125.456 -110.891 106.183 -110.891 106.183L-115.691 110.328C-133.691 77.128 -122.927 134.874 -122.927 134.874C-114.127 169.274 18.746 125.128 18.746 125.128C18.746 125.128 187.547 94.728 198.747 90.728C209.947 86.728 300.783 92.764 300.783 92.764L295.547 73.419C230.747 27.019 215.547 53.128 201.947 49.128C188.347 45.128 190.747 54.728 187.547 55.528C184.347 56.328 145.147 31.528 138.747 32.328z"} , {"fill": "#f3bf9c", "path":"M140.056 34.073C133.655 34.873 107.313 11.613 123.255 42.873C143.656 82.874 64.855 82.074 48.055 70.874C31.255 59.674 55.255 89.274 55.255 89.274C73.655 109.274 39.255 92.474 39.255 92.474C4.855 79.674 -19.145 105.274 -22.345 106.074C-25.545 106.874 -30.345 110.074 -31.145 103.674C-31.945 97.274 -38.668 81.578 -71.145 106.874C-98.564 127.947 -110.509 109.219 -110.509 109.219L-115.709 111.874C-131.709 81.674 -122.273 137.929 -122.273 137.929C-113.473 172.329 20.055 126.874 20.055 126.874C20.055 126.874 188.856 96.474 200.056 92.474C211.256 88.474 301.22 94.437 301.22 94.437L296.056 74.583C231.256 28.183 216.856 54.874 203.256 50.874C189.656 46.873 192.056 56.474 188.856 57.274C185.656 58.074 146.456 33.273 140.056 34.073z"} , {"fill": "#f5ccb0", "path":"M141.365 35.819C134.965 36.619 107.523 13.944 124.565 44.619C146.565 84.219 66.164 83.819 49.364 72.619C32.564 61.419 56.564 91.019 56.564 91.019C74.964 111.019 40.564 94.219 40.564 94.219C6.164 81.419 -17.836 107.019 -21.036 107.819C-24.236 108.619 -29.036 111.819 -29.836 105.419C-30.636 99.019 -37.227 83.492 -69.836 108.619C-98.491 130.438 -110.127 112.256 -110.127 112.256L-115.727 113.419C-130.128 85.019 -121.618 140.983 -121.618 140.983C-112.818 175.384 21.364 128.619 21.364 128.619C21.364 128.619 190.165 98.219 201.365 94.219C212.565 90.219 301.656 96.11 301.656 96.11L296.565 75.746C231.765 29.346 218.165 56.619 204.565 52.619C190.965 48.619 193.365 58.219 190.165 59.019C186.965 59.819 147.765 35.019 141.365 35.819z"} , {"fill": "#f8d8c4", "path":"M142.674 37.565C136.274 38.365 108.832 15.689 125.874 46.365C147.874 85.965 67.474 85.565 50.674 74.365C33.874 63.165 57.874 92.765 57.874 92.765C76.274 112.765 41.874 95.965 41.874 95.965C7.473 83.165 -16.527 108.765 -19.727 109.565C-22.927 110.365 -27.727 113.565 -28.527 107.165C-29.327 100.765 -35.786 85.405 -68.527 110.365C-98.418 132.929 -109.745 115.293 -109.745 115.293L-115.745 114.965C-129.346 88.564 -120.963 144.038 -120.963 144.038C-112.163 178.438 22.673 130.365 22.673 130.365C22.673 130.365 191.474 99.965 202.674 95.965C213.874 91.965 302.093 97.783 302.093 97.783L297.075 76.91C232.274 30.51 219.474 58.365 205.874 54.365C192.274 50.365 194.674 59.965 191.474 60.765C188.274 61.565 149.074 36.765 142.674 37.565z"} , {"fill": "#fae5d7", "path":"M143.983 39.31C137.583 40.11 110.529 17.223 127.183 48.11C149.183 88.91 68.783 87.31 51.983 76.11C35.183 64.91 59.183 94.51 59.183 94.51C77.583 114.51 43.183 97.71 43.183 97.71C8.783 84.91 -15.217 110.51 -18.417 111.31C-21.618 112.11 -26.418 115.31 -27.218 108.91C-28.018 102.51 -34.346 87.318 -67.218 112.11C-98.345 135.42 -109.363 118.329 -109.363 118.329L-115.764 116.51C-128.764 92.51 -120.309 147.093 -120.309 147.093C-111.509 181.493 23.983 132.11 23.983 132.11C23.983 132.11 192.783 101.71 203.983 97.71C215.183 93.71 302.529 99.456 302.529 99.456L297.583 78.074C232.783 31.673 220.783 60.11 207.183 56.11C193.583 52.11 195.983 61.71 192.783 62.51C189.583 63.31 150.383 38.51 143.983 39.31z"} , {"fill": "#fcf2eb", "path":"M145.292 41.055C138.892 41.855 112.917 18.411 128.492 49.855C149.692 92.656 70.092 89.056 53.292 77.856C36.492 66.656 60.492 96.256 60.492 96.256C78.892 116.256 44.492 99.456 44.492 99.456C10.092 86.656 -13.908 112.256 -17.108 113.056C-20.308 113.856 -25.108 117.056 -25.908 110.656C-26.708 104.256 -32.905 89.232 -65.908 113.856C-98.273 137.911 -108.982 121.365 -108.982 121.365L-115.782 118.056C-128.582 94.856 -119.654 150.147 -119.654 150.147C-110.854 184.547 25.292 133.856 25.292 133.856C25.292 133.856 194.093 103.456 205.293 99.456C216.493 95.456 302.965 101.128 302.965 101.128L298.093 79.237C233.292 32.837 222.093 61.856 208.493 57.856C194.893 53.855 197.293 63.456 194.093 64.256C190.892 65.056 151.692 40.255 145.292 41.055z"} , {"fill": "#ffffff", "path":"M-115.8 119.601C-128.6 97.6 -119 153.201 -119 153.201C-110.2 187.601 26.6 135.601 26.6 135.601C26.6 135.601 195.401 105.2 206.601 101.2C217.801 97.2 303.401 102.8 303.401 102.8L298.601 80.4C233.801 34 223.401 63.6 209.801 59.6C196.201 55.6 198.601 65.2 195.401 66C192.201 66.8 153.001 42 146.601 42.8C140.201 43.6 114.981 19.793 129.801 51.6C152.028 99.307 69.041 89.227 54.6 79.6C37.8 68.4 61.8 98 61.8 98C80.2 118.001 45.8 101.2 45.8 101.2C11.4 88.4 -12.6 114.001 -15.8 114.801C-19 115.601 -23.8 118.801 -24.6 112.401C-25.4 106 -31.465 91.144 -64.6 115.601C-98.2 140.401 -108.6 124.401 -108.6 124.401L-115.8 119.601z"} , {"fill": "#000000", "path":"M-74.2 149.601C-74.2 149.601 -81.4 161.201 -60.6 174.401C-60.6 174.401 -59.2 175.801 -77.2 171.601C-77.2 171.601 -83.4 169.601 -85 159.201C-85 159.201 -89.8 154.801 -94.6 149.201C-99.4 143.601 -74.2 149.601 -74.2 149.601z"} , {"fill": "#cccccc", "path":"M65.8 102C65.8 102 83.498 128.821 82.9 133.601C81.6 144.001 81.4 153.601 84.6 157.601C87.801 161.601 96.601 194.801 96.601 194.801C96.601 194.801 96.201 196.001 108.601 158.001C108.601 158.001 120.201 142.001 100.201 123.601C100.201 123.601 65 94.8 65.8 102z"} , {"fill": "#000000", "path":"M-54.2 176.401C-54.2 176.401 -43 183.601 -57.4 214.801L-51 212.401C-51 212.401 -51.8 223.601 -55 226.001L-47.8 222.801C-47.8 222.801 -43 230.801 -47 235.601C-47 235.601 -30.2 243.601 -31 250.001C-31 250.001 -24.6 242.001 -28.6 235.601C-32.6 229.201 -39.8 233.201 -39 214.801L-47.8 218.001C-47.8 218.001 -42.2 209.201 -42.2 202.801L-50.2 205.201C-50.2 205.201 -34.731 178.623 -45.4 177.201C-51.4 176.401 -54.2 176.401 -54.2 176.401z"} , {"fill": "#cccccc", "path":"M-21.8 193.201C-21.8 193.201 -19 188.801 -21.8 189.601C-24.6 190.401 -55.8 205.201 -61.8 214.801C-61.8 214.801 -27.4 190.401 -21.8 193.201z"} , {"fill": "#cccccc", "path":"M-11.4 201.201C-11.4 201.201 -8.6 196.801 -11.4 197.601C-14.2 198.401 -45.4 213.201 -51.4 222.801C-51.4 222.801 -17 198.401 -11.4 201.201z"} , {"fill": "#cccccc", "path":"M1.8 186.001C1.8 186.001 4.6 181.601 1.8 182.401C-1 183.201 -32.2 198.001 -38.2 207.601C-38.2 207.601 -3.8 183.201 1.8 186.001z"} , {"fill": "#cccccc", "path":"M-21.4 229.601C-21.4 229.601 -21.4 223.601 -24.2 224.401C-27 225.201 -63 242.801 -69 252.401C-69 252.401 -27 226.801 -21.4 229.601z"} , {"fill": "#cccccc", "path":"M-20.2 218.801C-20.2 218.801 -19 214.001 -21.8 214.801C-23.8 214.801 -50.2 226.401 -56.2 236.001C-56.2 236.001 -26.6 214.401 -20.2 218.801z"} , {"fill": "#cccccc", "path":"M-34.6 266.401L-44.6 274.001C-44.6 274.001 -34.2 266.401 -30.6 267.601C-30.6 267.601 -37.4 278.801 -38.2 284.001C-38.2 284.001 -27.8 271.201 -22.2 271.601C-22.2 271.601 -14.6 272.001 -14.6 282.801C-14.6 282.801 -9 272.401 -5.8 272.801C-5.8 272.801 -4.6 279.201 -5.8 286.001C-5.8 286.001 -1.8 278.401 2.2 280.001C2.2 280.001 8.6 278.001 7.8 289.601C7.8 289.601 7.8 300.001 7 302.801C7 302.801 12.6 276.401 15 276.001C15 276.001 23 274.801 27.8 283.601C27.8 283.601 23.8 276.001 28.6 278.001C28.6 278.001 39.4 279.601 42.6 286.401C42.6 286.401 35.8 274.401 41.4 277.601C41.4 277.601 48.2 277.601 49.4 284.001C49.4 284.001 57.8 305.201 59.8 306.801C59.8 306.801 52.2 285.201 53.8 285.201C53.8 285.201 51.8 273.201 57 288.001C57 288.001 53.8 274.001 59.4 274.801C65 275.601 69.4 285.601 77.8 283.201C77.8 283.201 87.401 288.801 89.401 219.601L-34.6 266.401z"} , {"fill": "#000000", "path":"M-29.8 173.601C-29.8 173.601 -15 167.601 25 173.601C25 173.601 32.2 174.001 39 165.201C45.8 156.401 72.6 149.201 79 151.201L88.601 157.601L89.401 158.801C89.401 158.801 101.801 169.201 102.201 176.801C102.601 184.401 87.801 232.401 78.2 248.401C68.6 264.401 59 276.801 39.8 274.401C39.8 274.401 19 270.401 -6.6 274.401C-6.6 274.401 -35.8 272.801 -38.6 264.801C-41.4 256.801 -27.4 241.601 -27.4 241.601C-27.4 241.601 -23 233.201 -24.2 218.801C-25.4 204.401 -25 176.401 -29.8 173.601z"} , {"fill": "#e5668c", "path":"M-7.8 175.601C0.6 194.001 -29 259.201 -29 259.201C-31 260.801 -16.34 266.846 -6.2 264.401C4.746 261.763 45 266.001 45 266.001C68.6 250.401 81.4 206.001 81.4 206.001C81.4 206.001 91.801 182.001 74.2 178.801C56.6 175.601 -7.8 175.601 -7.8 175.601z"} , {"fill": "#b23259", "path":"M-9.831 206.497C-6.505 193.707 -4.921 181.906 -7.8 175.601C-7.8 175.601 54.6 182.001 65.8 161.201C70.041 153.326 84.801 184.001 84.4 193.601C84.4 193.601 21.4 208.001 6.6 196.801L-9.831 206.497z"} , {"fill": "#a5264c", "path":"M-5.4 222.801C-5.4 222.801 -3.4 230.001 -5.8 234.001C-5.8 234.001 -7.4 234.801 -8.6 235.201C-8.6 235.201 -7.4 238.801 -1.4 240.401C-1.4 240.401 0.6 244.801 3 245.201C5.4 245.601 10.2 251.201 14.2 250.001C18.2 248.801 29.4 244.801 29.4 244.801C29.4 244.801 35 241.601 43.8 245.201C43.8 245.201 46.175 244.399 46.6 240.401C47.1 235.701 50.2 232.001 52.2 230.001C54.2 228.001 63.8 215.201 62.6 214.801C61.4 214.401 -5.4 222.801 -5.4 222.801z"} , {"fill": "#ff727f", "stroke":"#000000", "path":"M-9.8 174.401C-9.8 174.401 -12.6 196.801 -9.4 205.201C-6.2 213.601 -7 215.601 -7.8 219.601C-8.6 223.601 -4.2 233.601 1.4 239.601L13.4 241.201C13.4 241.201 28.6 237.601 37.8 240.401C37.8 240.401 46.794 241.744 50.2 226.801C50.2 226.801 55 220.401 62.2 217.601C69.4 214.801 76.6 173.201 72.6 165.201C68.6 157.201 54.2 152.801 38.2 168.401C22.2 184.001 20.2 167.201 -9.8 174.401z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-8.2 249.201C-8.2 249.201 -9 247.201 -13.4 246.801C-13.4 246.801 -35.8 243.201 -44.2 230.801C-44.2 230.801 -51 225.201 -46.6 236.801C-46.6 236.801 -36.2 257.201 -29.4 260.001C-29.4 260.001 -13 264.001 -8.2 249.201z"} , {"fill": "#cc3f4c", "path":"M71.742 185.229C72.401 177.323 74.354 168.709 72.6 165.201C66.154 152.307 49.181 157.695 38.2 168.401C22.2 184.001 20.2 167.201 -9.8 174.401C-9.8 174.401 -11.545 188.364 -10.705 198.376C-10.705 198.376 26.6 186.801 27.4 192.401C27.4 192.401 29 189.201 38.2 189.201C47.4 189.201 70.142 188.029 71.742 185.229z"} , {"stroke":"#a51926", "width":2, "path":"M28.6 175.201C28.6 175.201 33.4 180.001 29.8 189.601C29.8 189.601 15.4 205.601 17.4 219.601"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-19.4 260.001C-19.4 260.001 -23.8 247.201 -15 254.001C-15 254.001 -10.2 256.001 -11.4 257.601C-12.6 259.201 -18.2 263.201 -19.4 260.001z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-14.36 261.201C-14.36 261.201 -17.88 250.961 -10.84 256.401C-10.84 256.401 -6.419 258.849 -7.96 259.281C-12.52 260.561 -7.96 263.121 -14.36 261.201z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-9.56 261.201C-9.56 261.201 -13.08 250.961 -6.04 256.401C-6.04 256.401 -1.665 258.711 -3.16 259.281C-6.52 260.561 -3.16 263.121 -9.56 261.201z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-2.96 261.401C-2.96 261.401 -6.48 251.161 0.56 256.601C0.56 256.601 4.943 258.933 3.441 259.481C0.48 260.561 3.441 263.321 -2.96 261.401z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M3.52 261.321C3.52 261.321 0 251.081 7.041 256.521C7.041 256.521 10.881 258.121 9.921 259.401C8.961 260.681 9.921 263.241 3.52 261.321z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M10.2 262.001C10.2 262.001 5.4 249.601 14.6 256.001C14.6 256.001 19.4 258.001 18.2 259.601C17 261.201 18.2 264.401 10.2 262.001z"} , {"stroke":"#a5264c", "width":2, "path":"M-18.2 244.801C-18.2 244.801 -5 242.001 1 245.201C1 245.201 7 246.401 8.2 246.001C9.4 245.601 12.6 245.201 12.6 245.201"} , {"stroke":"#a5264c", "width":2, "path":"M15.8 253.601C15.8 253.601 27.8 240.001 39.8 244.401C46.816 246.974 45.8 243.601 46.6 240.801C47.4 238.001 47.6 233.801 52.6 230.801"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M33 237.601C33 237.601 29 226.801 26.2 239.601C23.4 252.401 20.2 256.001 18.6 258.801C18.6 258.801 18.6 264.001 27 263.601C27 263.601 37.8 263.201 38.2 260.401C38.6 257.601 37 246.001 33 237.601z"} , {"stroke":"#a5264c", "width":2, "path":"M47 244.801C47 244.801 50.6 242.401 53 243.601"} , {"stroke":"#a5264c", "width":2, "path":"M53.5 228.401C53.5 228.401 56.4 223.501 61.2 222.701"} , {"fill": "#b2b2b2", "path":"M-25.8 265.201C-25.8 265.201 -7.8 268.401 -3.4 266.801C-3.4 266.801 5.4 266.801 -3 268.801C-3 268.801 -15.8 268.801 -23.8 267.601C-23.8 267.601 -35.4 262.001 -25.8 265.201z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-11.8 172.001C-11.8 172.001 5.8 172.001 7.8 172.801C7.8 172.801 15 203.601 11.4 211.201C11.4 211.201 10.2 214.001 7.4 208.401C7.4 208.401 -11 175.601 -14.2 173.601C-17.4 171.601 -13 172.001 -11.8 172.001z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-88.9 169.301C-88.9 169.301 -80 171.001 -67.4 173.601C-67.4 173.601 -62.6 196.001 -59.4 200.801C-56.2 205.601 -59.8 205.601 -63.4 202.801C-67 200.001 -81.8 186.001 -83.8 181.601C-85.8 177.201 -88.9 169.301 -88.9 169.301z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-67.039 173.818C-67.039 173.818 -61.239 175.366 -60.23 177.581C-59.222 179.795 -61.432 183.092 -61.432 183.092C-61.432 183.092 -62.432 186.397 -63.634 184.235C-64.836 182.072 -67.708 174.412 -67.039 173.818z"} , {"fill": "#000000", "path":"M-67 173.601C-67 173.601 -63.4 178.801 -59.8 178.801C-56.2 178.801 -55.818 178.388 -53 179.001C-48.4 180.001 -48.8 178.001 -42.2 179.201C-39.56 179.681 -37 178.801 -34.2 180.001C-31.4 181.201 -28.2 180.401 -27 178.401C-25.8 176.401 -21 172.201 -21 172.201C-21 172.201 -33.8 174.001 -36.6 174.801C-36.6 174.801 -59 176.001 -67 173.601z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-22.4 173.801C-22.4 173.801 -28.85 177.301 -29.25 179.701C-29.65 182.101 -24 185.801 -24 185.801C-24 185.801 -21.25 190.401 -20.65 188.001C-20.05 185.601 -21.6 174.201 -22.4 173.801z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-59.885 179.265C-59.885 179.265 -52.878 190.453 -52.661 179.242C-52.661 179.242 -52.104 177.984 -53.864 177.962C-59.939 177.886 -58.418 173.784 -59.885 179.265z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-52.707 179.514C-52.707 179.514 -44.786 190.701 -45.422 179.421C-45.422 179.421 -45.415 179.089 -47.168 178.936C-51.915 178.522 -51.57 174.004 -52.707 179.514z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-45.494 179.522C-45.494 179.522 -37.534 190.15 -38.203 180.484C-38.203 180.484 -38.084 179.251 -39.738 178.95C-43.63 178.244 -43.841 174.995 -45.494 179.522z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-38.618 179.602C-38.618 179.602 -30.718 191.163 -30.37 181.382C-30.37 181.382 -28.726 180.004 -30.472 179.782C-36.29 179.042 -35.492 174.588 -38.618 179.602z"} , {"fill": "#e5e5b2", "path":"M-74.792 183.132L-82.45 181.601C-85.05 176.601 -87.15 170.451 -87.15 170.451C-87.15 170.451 -80.8 171.451 -68.3 174.251C-68.3 174.251 -67.424 177.569 -65.952 183.364L-74.792 183.132z"} , {"fill": "#e5e5b2", "path":"M-9.724 178.47C-11.39 175.964 -12.707 174.206 -13.357 173.8C-16.37 171.917 -12.227 172.294 -11.098 172.294C-11.098 172.294 5.473 172.294 7.356 173.047C7.356 173.047 7.88 175.289 8.564 178.68C8.564 178.68 -1.524 176.67 -9.724 178.47z"} , {"fill": "#cc7226", "path":"M43.88 40.321C71.601 44.281 97.121 8.641 98.881 -1.04C100.641 -10.72 90.521 -22.6 90.521 -22.6C91.841 -25.68 87.001 -39.76 81.721 -49C76.441 -58.24 60.54 -57.266 43 -58.24C27.16 -59.12 8.68 -35.8 7.36 -34.04C6.04 -32.28 12.2 6.001 13.52 11.721C14.84 17.441 12.2 43.841 12.2 43.841C46.44 34.741 16.16 36.361 43.88 40.321z"} , {"fill": "#ea8e51", "path":"M8.088 -33.392C6.792 -31.664 12.84 5.921 14.136 11.537C15.432 17.153 12.84 43.073 12.84 43.073C45.512 34.193 16.728 35.729 43.944 39.617C71.161 43.505 96.217 8.513 97.945 -0.992C99.673 -10.496 89.737 -22.16 89.737 -22.16C91.033 -25.184 86.281 -39.008 81.097 -48.08C75.913 -57.152 60.302 -56.195 43.08 -57.152C27.528 -58.016 9.384 -35.12 8.088 -33.392z"} , {"fill": "#efaa7c", "path":"M8.816 -32.744C7.544 -31.048 13.48 5.841 14.752 11.353C16.024 16.865 13.48 42.305 13.48 42.305C44.884 33.145 17.296 35.097 44.008 38.913C70.721 42.729 95.313 8.385 97.009 -0.944C98.705 -10.272 88.953 -21.72 88.953 -21.72C90.225 -24.688 85.561 -38.256 80.473 -47.16C75.385 -56.064 60.063 -55.125 43.16 -56.064C27.896 -56.912 10.088 -34.44 8.816 -32.744z"} , {"fill": "#f4c6a8", "path":"M9.544 -32.096C8.296 -30.432 14.12 5.761 15.368 11.169C16.616 16.577 14.12 41.537 14.12 41.537C43.556 32.497 17.864 34.465 44.072 38.209C70.281 41.953 94.409 8.257 96.073 -0.895C97.737 -10.048 88.169 -21.28 88.169 -21.28C89.417 -24.192 84.841 -37.504 79.849 -46.24C74.857 -54.976 59.824 -54.055 43.24 -54.976C28.264 -55.808 10.792 -33.76 9.544 -32.096z"} , {"fill": "#f9e2d3", "path":"M10.272 -31.448C9.048 -29.816 14.76 5.681 15.984 10.985C17.208 16.289 14.76 40.769 14.76 40.769C42.628 31.849 18.432 33.833 44.136 37.505C69.841 41.177 93.505 8.129 95.137 -0.848C96.769 -9.824 87.385 -20.84 87.385 -20.84C88.609 -23.696 84.121 -36.752 79.225 -45.32C74.329 -53.888 59.585 -52.985 43.32 -53.888C28.632 -54.704 11.496 -33.08 10.272 -31.448z"} , {"fill": "#ffffff", "path":"M44.2 36.8C69.4 40.4 92.601 8 94.201 -0.8C95.801 -9.6 86.601 -20.4 86.601 -20.4C87.801 -23.2 83.4 -36 78.6 -44.4C73.8 -52.8 59.346 -51.914 43.4 -52.8C29 -53.6 12.2 -32.4 11 -30.8C9.8 -29.2 15.4 5.6 16.6 10.8C17.8 16 15.4 40 15.4 40C40.9 31.4 19 33.2 44.2 36.8z"} , {"fill": "#cccccc", "path":"M90.601 2.8C90.601 2.8 62.8 10.4 51.2 8.8C51.2 8.8 35.4 2.2 26.6 24C26.6 24 23 31.2 21 33.2C19 35.2 90.601 2.8 90.601 2.8z"} , {"fill": "#000000", "path":"M94.401 0.6C94.401 0.6 65.4 12.8 55.4 12.4C55.4 12.4 39 7.8 30.6 22.4C30.6 22.4 22.2 31.6 19 33.2C19 33.2 18.6 34.8 25 30.8L35.4 36C35.4 36 50.2 45.6 59.8 29.6C59.8 29.6 63.8 18.4 63.8 16.4C63.8 14.4 85 8.8 86.601 8.4C88.201 8 94.801 3.8 94.401 0.6z"} , {"fill": "#99cc32", "path":"M47 36.514C40.128 36.514 31.755 32.649 31.755 26.4C31.755 20.152 40.128 13.887 47 13.887C53.874 13.887 59.446 18.952 59.446 25.2C59.446 31.449 53.874 36.514 47 36.514z"} , {"fill": "#659900", "path":"M43.377 19.83C38.531 20.552 33.442 22.055 33.514 21.839C35.054 17.22 41.415 13.887 47 13.887C51.296 13.887 55.084 15.865 57.32 18.875C57.32 18.875 52.004 18.545 43.377 19.83z"} , {"fill": "#ffffff", "path":"M55.4 19.6C55.4 19.6 51 16.4 51 18.6C51 18.6 54.6 23 55.4 19.6z"} , {"fill": "#000000", "path":"M45.4 27.726C42.901 27.726 40.875 25.7 40.875 23.2C40.875 20.701 42.901 18.675 45.4 18.675C47.9 18.675 49.926 20.701 49.926 23.2C49.926 25.7 47.9 27.726 45.4 27.726z"} , {"fill": "#cc7226", "path":"M-58.6 14.4C-58.6 14.4 -61.8 -6.8 -59.4 -11.2C-59.4 -11.2 -48.6 -21.2 -49 -24.8C-49 -24.8 -49.4 -42.8 -50.6 -43.6C-51.8 -44.4 -59.4 -50.4 -65.4 -44C-65.4 -44 -75.8 -26 -75 -19.6L-75 -17.6C-75 -17.6 -82.6 -18 -84.2 -16C-84.2 -16 -85.4 -10.8 -86.6 -10.4C-86.6 -10.4 -89.4 -8 -87.4 -5.2C-87.4 -5.2 -89.4 -2.8 -89 1.2L-81.4 5.2C-81.4 5.2 -79.4 19.6 -68.6 24.8C-63.764 27.129 -60.6 20.4 -58.6 14.4z"} , {"fill": "#ffffff", "path":"M-59.6 12.56C-59.6 12.56 -62.48 -6.52 -60.32 -10.48C-60.32 -10.48 -50.6 -19.48 -50.96 -22.72C-50.96 -22.72 -51.32 -38.92 -52.4 -39.64C-53.48 -40.36 -60.32 -45.76 -65.72 -40C-65.72 -40 -75.08 -23.8 -74.36 -18.04L-74.36 -16.24C-74.36 -16.24 -81.2 -16.6 -82.64 -14.8C-82.64 -14.8 -83.72 -10.12 -84.8 -9.76C-84.8 -9.76 -87.32 -7.6 -85.52 -5.08C-85.52 -5.08 -87.32 -2.92 -86.96 0.68L-80.12 4.28C-80.12 4.28 -78.32 17.24 -68.6 21.92C-64.248 24.015 -61.4 17.96 -59.6 12.56z"} , {"fill": "#eb955c", "path":"M-51.05 -42.61C-52.14 -43.47 -59.63 -49.24 -65.48 -43C-65.48 -43 -75.62 -25.45 -74.84 -19.21L-74.84 -17.26C-74.84 -17.26 -82.25 -17.65 -83.81 -15.7C-83.81 -15.7 -84.98 -10.63 -86.15 -10.24C-86.15 -10.24 -88.88 -7.9 -86.93 -5.17C-86.93 -5.17 -88.88 -2.83 -88.49 1.07L-81.08 4.97C-81.08 4.97 -79.13 19.01 -68.6 24.08C-63.886 26.35 -60.8 19.79 -58.85 13.94C-58.85 13.94 -61.97 -6.73 -59.63 -11.02C-59.63 -11.02 -49.1 -20.77 -49.49 -24.28C-49.49 -24.28 -49.88 -41.83 -51.05 -42.61z"} , {"fill": "#f2b892", "path":"M-51.5 -41.62C-52.48 -42.54 -59.86 -48.08 -65.56 -42C-65.56 -42 -75.44 -24.9 -74.68 -18.82L-74.68 -16.92C-74.68 -16.92 -81.9 -17.3 -83.42 -15.4C-83.42 -15.4 -84.56 -10.46 -85.7 -10.08C-85.7 -10.08 -88.36 -7.8 -86.46 -5.14C-86.46 -5.14 -88.36 -2.86 -87.98 0.94L-80.76 4.74C-80.76 4.74 -78.86 18.42 -68.6 23.36C-64.006 25.572 -61 19.18 -59.1 13.48C-59.1 13.48 -62.14 -6.66 -59.86 -10.84C-59.86 -10.84 -49.6 -20.34 -49.98 -23.76C-49.98 -23.76 -50.36 -40.86 -51.5 -41.62z"} , {"fill": "#f8dcc8", "path":"M-51.95 -40.63C-52.82 -41.61 -60.09 -46.92 -65.64 -41C-65.64 -41 -75.26 -24.35 -74.52 -18.43L-74.52 -16.58C-74.52 -16.58 -81.55 -16.95 -83.03 -15.1C-83.03 -15.1 -84.14 -10.29 -85.25 -9.92C-85.25 -9.92 -87.84 -7.7 -85.99 -5.11C-85.99 -5.11 -87.84 -2.89 -87.47 0.81L-80.44 4.51C-80.44 4.51 -78.59 17.83 -68.6 22.64C-64.127 24.794 -61.2 18.57 -59.35 13.02C-59.35 13.02 -62.31 -6.59 -60.09 -10.66C-60.09 -10.66 -50.1 -19.91 -50.47 -23.24C-50.47 -23.24 -50.84 -39.89 -51.95 -40.63z"} , {"fill": "#ffffff", "path":"M-59.6 12.46C-59.6 12.46 -62.48 -6.52 -60.32 -10.48C-60.32 -10.48 -50.6 -19.48 -50.96 -22.72C-50.96 -22.72 -51.32 -38.92 -52.4 -39.64C-53.16 -40.68 -60.32 -45.76 -65.72 -40C-65.72 -40 -75.08 -23.8 -74.36 -18.04L-74.36 -16.24C-74.36 -16.24 -81.2 -16.6 -82.64 -14.8C-82.64 -14.8 -83.72 -10.12 -84.8 -9.76C-84.8 -9.76 -87.32 -7.6 -85.52 -5.08C-85.52 -5.08 -87.32 -2.92 -86.96 0.68L-80.12 4.28C-80.12 4.28 -78.32 17.24 -68.6 21.92C-64.248 24.015 -61.4 17.86 -59.6 12.46z"} , {"fill": "#cccccc", "path":"M-62.7 6.2C-62.7 6.2 -84.3 -4 -85.2 -4.8C-85.2 -4.8 -76.1 3.4 -75.3 3.4C-74.5 3.4 -62.7 6.2 -62.7 6.2z"} , {"fill": "#000000", "path":"M-79.8 0C-79.8 0 -61.4 3.6 -61.4 8C-61.4 10.912 -61.643 24.331 -67 22.8C-75.4 20.4 -71.8 6 -79.8 0z"} , {"fill": "#99cc32", "path":"M-71.4 3.8C-71.4 3.8 -62.422 5.274 -61.4 8C-60.8 9.6 -60.137 17.908 -65.6 19C-70.152 19.911 -72.382 9.69 -71.4 3.8z"} , {"fill": "#000000", "path":"M14.595 46.349C14.098 44.607 15.409 44.738 17.2 44.2C19.2 43.6 31.4 39.8 32.2 37.2C33 34.6 46.2 39 46.2 39C48 39.8 52.4 42.4 52.4 42.4C57.2 43.6 63.8 44 63.8 44C66.2 45 69.6 47.8 69.6 47.8C84.2 58 96.601 50.8 96.601 50.8C116.601 44.2 110.601 27 110.601 27C107.601 18 110.801 14.6 110.801 14.6C111.001 10.8 118.201 17.2 118.201 17.2C120.801 21.4 121.601 26.4 121.601 26.4C129.601 37.6 126.201 19.8 126.201 19.8C126.401 18.8 123.601 15.2 123.601 14C123.601 12.8 121.801 9.4 121.801 9.4C118.801 6 121.201 -1 121.201 -1C123.001 -14.8 120.801 -13 120.801 -13C119.601 -14.8 110.401 -4.8 110.401 -4.8C108.201 -1.4 102.201 0.2 102.201 0.2C99.401 2 96.001 0.6 96.001 0.6C93.401 0.2 87.801 7.2 87.801 7.2C90.601 7 93.001 11.4 95.401 11.6C97.801 11.8 99.601 9.2 101.201 8.6C102.801 8 105.601 13.8 105.601 13.8C106.001 16.4 100.401 21.2 100.401 21.2C100.001 25.8 98.401 24.2 98.401 24.2C95.401 23.6 94.201 27.4 93.201 32C92.201 36.6 88.001 37 88.001 37C86.401 44.4 85.2 41.4 85.2 41.4C85 35.8 79 41.6 79 41.6C77.8 43.6 73.2 41.4 73.2 41.4C66.4 39.4 68.8 37.4 68.8 37.4C70.6 35.2 81.8 37.4 81.8 37.4C84 35.8 76 31.8 76 31.8C75.4 30 76.4 25.6 76.4 25.6C77.6 22.4 84.4 16.8 84.4 16.8C93.801 15.6 91.001 14 91.001 14C84.801 8.8 79 16.4 79 16.4C76.8 22.6 59.4 37.6 59.4 37.6C54.6 41 57.2 34.2 53.2 37.6C49.2 41 28.6 32 28.6 32C17.038 30.807 14.306 46.549 10.777 43.429C10.777 43.429 16.195 51.949 14.595 46.349z"} , {"fill": "#000000", "path":"M209.401 -120C209.401 -120 183.801 -112 181.001 -93.2C181.001 -93.2 178.601 -70.4 199.001 -52.8C199.001 -52.8 199.401 -46.4 201.401 -43.2C201.401 -43.2 199.801 -38.4 218.601 -46L245.801 -54.4C245.801 -54.4 252.201 -56.8 257.401 -65.6C262.601 -74.4 277.801 -93.2 274.201 -118.4C274.201 -118.4 275.401 -129.6 269.401 -130C269.401 -130 261.001 -131.6 253.801 -124C253.801 -124 247.001 -120.8 244.601 -121.2L209.401 -120z"} , {"fill": "#000000", "path":"M264.022 -120.99C264.022 -120.99 266.122 -129.92 261.282 -125.08C261.282 -125.08 254.242 -119.36 246.761 -119.36C246.761 -119.36 232.241 -117.16 227.841 -103.96C227.841 -103.96 223.881 -77.12 231.801 -71.4C231.801 -71.4 236.641 -63.92 243.681 -70.52C250.722 -77.12 266.222 -107.35 264.022 -120.99z"} , {"fill": "#323232", "path":"M263.648 -120.632C263.648 -120.632 265.738 -129.376 260.986 -124.624C260.986 -124.624 254.074 -119.008 246.729 -119.008C246.729 -119.008 232.473 -116.848 228.153 -103.888C228.153 -103.888 224.265 -77.536 232.041 -71.92C232.041 -71.92 236.793 -64.576 243.705 -71.056C250.618 -77.536 265.808 -107.24 263.648 -120.632z"} , {"fill": "#666666", "path":"M263.274 -120.274C263.274 -120.274 265.354 -128.832 260.69 -124.168C260.69 -124.168 253.906 -118.656 246.697 -118.656C246.697 -118.656 232.705 -116.536 228.465 -103.816C228.465 -103.816 224.649 -77.952 232.281 -72.44C232.281 -72.44 236.945 -65.232 243.729 -71.592C250.514 -77.952 265.394 -107.13 263.274 -120.274z"} , {"fill": "#999999", "path":"M262.9 -119.916C262.9 -119.916 264.97 -128.288 260.394 -123.712C260.394 -123.712 253.738 -118.304 246.665 -118.304C246.665 -118.304 232.937 -116.224 228.777 -103.744C228.777 -103.744 225.033 -78.368 232.521 -72.96C232.521 -72.96 237.097 -65.888 243.753 -72.128C250.41 -78.368 264.98 -107.02 262.9 -119.916z"} , {"fill": "#cccccc", "path":"M262.526 -119.558C262.526 -119.558 264.586 -127.744 260.098 -123.256C260.098 -123.256 253.569 -117.952 246.633 -117.952C246.633 -117.952 233.169 -115.912 229.089 -103.672C229.089 -103.672 225.417 -78.784 232.761 -73.48C232.761 -73.48 237.249 -66.544 243.777 -72.664C250.305 -78.784 264.566 -106.91 262.526 -119.558z"} , {"fill": "#ffffff", "path":"M262.151 -119.2C262.151 -119.2 264.201 -127.2 259.801 -122.8C259.801 -122.8 253.401 -117.6 246.601 -117.6C246.601 -117.6 233.401 -115.6 229.401 -103.6C229.401 -103.6 225.801 -79.2 233.001 -74C233.001 -74 237.401 -67.2 243.801 -73.2C250.201 -79.2 264.151 -106.8 262.151 -119.2z"} , {"fill": "#992600", "path":"M50.6 84C50.6 84 30.2 64.8 22.2 64C22.2 64 -12.2 60 -27 78C-27 78 -9.4 57.6 18.2 63.2C18.2 63.2 -3.4 58.8 -15.8 62C-15.8 62 -32.6 62 -42.2 76L-45 80.8C-45 80.8 -41 66 -22.6 60C-22.6 60 0.2 55.2 11 60C11 60 -10.6 53.2 -20.6 55.2C-20.6 55.2 -51 52.8 -63.8 79.2C-63.8 79.2 -59.8 64.8 -45 57.6C-45 57.6 -31.4 48.8 -11 51.6C-11 51.6 3.4 54.8 8.6 57.2C13.8 59.6 12.6 56.8 4.2 52C4.2 52 -1.4 42 -15.4 42.4C-15.4 42.4 -58.2 46 -68.6 58C-68.6 58 -55 46.8 -44.6 44C-44.6 44 -22.2 36 -13.8 36.8C-13.8 36.8 11 37.8 18.6 33.8C18.6 33.8 7.4 38.8 10.6 42C13.8 45.2 20.6 52.8 20.6 54C20.6 55.2 44.8 77.3 48.4 81.7L50.6 84z"} , {"fill": "#cccccc", "path":"M189 278C189 278 173.5 241.5 161 232C161 232 187 248 190.5 266C190.5 266 190.5 276 189 278z"} , {"fill": "#cccccc", "path":"M236 285.5C236 285.5 209.5 230.5 191 206.5C191 206.5 234.5 244 239.5 270.5L240 276L237 273.5C237 273.5 236.5 282.5 236 285.5z"} , {"fill": "#cccccc", "path":"M292.5 237C292.5 237 230 177.5 228.5 175C228.5 175 289 241 292 248.5C292 248.5 290 239.5 292.5 237z"} , {"fill": "#cccccc", "path":"M104 280.5C104 280.5 123.5 228.5 142.5 251C142.5 251 157.5 261 157 264C157 264 153 257.5 135 258C135 258 116 255 104 280.5z"} , {"fill": "#cccccc", "path":"M294.5 153C294.5 153 249.5 124.5 242 123C230.193 120.639 291.5 152 296.5 162.5C296.5 162.5 298.5 160 294.5 153z"} , {"fill": "#000000", "path":"M143.801 259.601C143.801 259.601 164.201 257.601 171.001 250.801L175.401 254.401L193.001 216.001L196.601 221.201C196.601 221.201 211.001 206.401 210.201 198.401C209.401 190.401 223.001 204.401 223.001 204.401C223.001 204.401 222.201 192.801 229.401 199.601C229.401 199.601 227.001 184.001 235.401 192.001C235.401 192.001 224.864 161.844 247.401 187.601C253.001 194.001 248.601 187.201 248.601 187.201C248.601 187.201 222.601 139.201 244.201 153.601C244.201 153.601 246.201 130.801 245.001 126.401C243.801 122.001 241.801 99.6 237.001 94.4C232.201 89.2 237.401 87.6 243.001 92.8C243.001 92.8 231.801 68.8 245.001 80.8C245.001 80.8 241.401 65.6 237.001 62.8C237.001 62.8 231.401 45.6 246.601 56.4C246.601 56.4 242.201 44 239.001 40.8C239.001 40.8 227.401 13.2 234.601 18L239.001 21.6C239.001 21.6 232.201 7.6 238.601 12C245.001 16.4 245.001 16 245.001 16C245.001 16 223.801 -17.2 244.201 0.4C244.201 0.4 236.042 -13.518 232.601 -20.4C232.601 -20.4 213.801 -40.8 228.201 -34.4L233.001 -32.8C233.001 -32.8 224.201 -42.8 216.201 -44.4C208.201 -46 218.601 -52.4 225.001 -50.4C231.401 -48.4 247.001 -40.8 247.001 -40.8C247.001 -40.8 259.801 -22 263.801 -21.6C263.801 -21.6 243.801 -29.2 249.801 -21.2C249.801 -21.2 264.201 -7.2 257.001 -7.6C257.001 -7.6 251.001 -0.4 255.801 8.4C255.801 8.4 237.342 -9.991 252.201 15.6L259.001 32C259.001 32 234.601 7.2 245.801 29.2C245.801 29.2 263.001 52.8 265.001 53.2C267.001 53.6 271.401 62.4 271.401 62.4L267.001 60.4L272.201 69.2C272.201 69.2 261.001 57.2 267.001 70.4L272.601 84.8C272.601 84.8 252.201 62.8 265.801 92.4C265.801 92.4 249.401 87.2 258.201 104.4C258.201 104.4 256.601 120.401 257.001 125.601C257.401 130.801 258.601 159.201 254.201 167.201C249.801 175.201 260.201 194.401 262.201 198.401C264.201 202.401 267.801 213.201 259.001 204.001C250.201 194.801 254.601 200.401 256.601 209.201C258.601 218.001 264.601 233.601 263.801 239.201C263.801 239.201 262.601 240.401 259.401 236.801C259.401 236.801 244.601 214.001 246.201 228.401C246.201 228.401 245.001 236.401 241.801 245.201C241.801 245.201 238.601 256.001 238.601 247.201C238.601 247.201 235.401 230.401 232.601 238.001C229.801 245.601 226.201 251.601 223.401 254.001C220.601 256.401 215.401 233.601 214.201 244.001C214.201 244.001 202.201 231.601 197.401 248.001L185.801 264.401C185.801 264.401 185.401 252.001 184.201 258.001C184.201 258.001 154.201 264.001 143.801 259.601z"} , {"fill": "#000000", "path":"M109.401 -97.2C109.401 -97.2 97.801 -105.2 93.801 -104.8C89.801 -104.4 121.401 -113.6 162.601 -86C162.601 -86 167.401 -83.2 171.001 -83.6C171.001 -83.6 174.201 -81.2 171.401 -77.6C171.401 -77.6 162.601 -68 173.801 -56.8C173.801 -56.8 192.201 -50 186.601 -58.8C186.601 -58.8 197.401 -54.8 199.801 -50.8C202.201 -46.8 201.001 -50.8 201.001 -50.8C201.001 -50.8 194.601 -58 188.601 -63.2C188.601 -63.2 183.401 -65.2 180.601 -73.6C177.801 -82 175.401 -92 179.801 -95.2C179.801 -95.2 175.801 -90.8 176.601 -94.8C177.401 -98.8 181.001 -102.4 182.601 -102.8C184.201 -103.2 200.601 -119 207.401 -119.4C207.401 -119.4 198.201 -118 195.201 -119C192.201 -120 165.601 -131.4 159.601 -132.6C159.601 -132.6 142.801 -139.2 154.801 -137.2C154.801 -137.2 190.601 -133.4 208.801 -120.2C208.801 -120.2 201.601 -128.6 183.201 -135.6C183.201 -135.6 161.001 -148.2 125.801 -143.2C125.801 -143.2 108.001 -140 100.201 -138.2C100.201 -138.2 97.601 -138.8 97.001 -139.2C96.401 -139.6 84.6 -148.6 57 -141.6C57 -141.6 40 -137 31.4 -132.2C31.4 -132.2 16.2 -131 12.6 -127.8C12.6 -127.8 -6 -113.2 -8 -112.4C-10 -111.6 -21.4 -104 -22.2 -103.6C-22.2 -103.6 2.4 -110.2 4.8 -112.6C7.2 -115 24.6 -117.6 27 -116.2C29.4 -114.8 37.8 -115.4 28.2 -114.8C28.2 -114.8 103.801 -100 104.601 -98C105.401 -96 109.401 -97.2 109.401 -97.2z"} , {"fill": "#cc7226", "path":"M180.801 -106.4C180.801 -106.4 170.601 -113.8 168.601 -113.8C166.601 -113.8 154.201 -124 150.001 -123.6C145.801 -123.2 133.601 -133.2 106.201 -125C106.201 -125 105.601 -127 109.201 -127.8C109.201 -127.8 115.601 -130 116.001 -130.6C116.001 -130.6 136.201 -134.8 143.401 -131.2C143.401 -131.2 152.601 -128.6 158.801 -122.4C158.801 -122.4 170.001 -119.2 173.201 -120.2C173.201 -120.2 182.001 -118 182.401 -116.2C182.401 -116.2 188.201 -113.2 186.401 -110.6C186.401 -110.6 186.801 -109 180.801 -106.4z"} , {"fill": "#cc7226", "path":"M168.33 -108.509C169.137 -107.877 170.156 -107.779 170.761 -106.97C170.995 -106.656 170.706 -106.33 170.391 -106.233C169.348 -105.916 168.292 -106.486 167.15 -105.898C166.748 -105.691 166.106 -105.873 165.553 -106.022C163.921 -106.463 162.092 -106.488 160.401 -105.8C158.416 -106.929 156.056 -106.345 153.975 -107.346C153.917 -107.373 153.695 -107.027 153.621 -107.054C150.575 -108.199 146.832 -107.916 144.401 -110.2C141.973 -110.612 139.616 -111.074 137.188 -111.754C135.37 -112.263 133.961 -113.252 132.341 -114.084C130.964 -114.792 129.507 -115.314 127.973 -115.686C126.11 -116.138 124.279 -116.026 122.386 -116.546C122.293 -116.571 122.101 -116.227 122.019 -116.254C121.695 -116.362 121.405 -116.945 121.234 -116.892C119.553 -116.37 118.065 -117.342 116.401 -117C115.223 -118.224 113.495 -117.979 111.949 -118.421C108.985 -119.269 105.831 -117.999 102.801 -119C106.914 -120.842 111.601 -119.61 115.663 -121.679C117.991 -122.865 120.653 -121.763 123.223 -122.523C123.71 -122.667 124.401 -122.869 124.801 -122.2C124.935 -122.335 125.117 -122.574 125.175 -122.546C127.625 -121.389 129.94 -120.115 132.422 -119.049C132.763 -118.903 133.295 -119.135 133.547 -118.933C135.067 -117.717 137.01 -117.82 138.401 -116.6C140.099 -117.102 141.892 -116.722 143.621 -117.346C143.698 -117.373 143.932 -117.032 143.965 -117.054C145.095 -117.802 146.25 -117.531 147.142 -117.227C147.48 -117.112 148.143 -116.865 148.448 -116.791C149.574 -116.515 150.43 -116.035 151.609 -115.852C151.723 -115.834 151.908 -116.174 151.98 -116.146C153.103 -115.708 154.145 -115.764 154.801 -114.6C154.936 -114.735 155.101 -114.973 155.183 -114.946C156.21 -114.608 156.859 -113.853 157.96 -113.612C158.445 -113.506 159.057 -112.88 159.633 -112.704C162.025 -111.973 163.868 -110.444 166.062 -109.549C166.821 -109.239 167.697 -109.005 168.33 -108.509z"} , {"fill": "#cc7226", "path":"M91.696 -122.739C89.178 -124.464 86.81 -125.57 84.368 -127.356C84.187 -127.489 83.827 -127.319 83.625 -127.441C82.618 -128.05 81.73 -128.631 80.748 -129.327C80.209 -129.709 79.388 -129.698 78.88 -129.956C76.336 -131.248 73.707 -131.806 71.2 -133C71.882 -133.638 73.004 -133.394 73.6 -134.2C73.795 -133.92 74.033 -133.636 74.386 -133.827C76.064 -134.731 77.914 -134.884 79.59 -134.794C81.294 -134.702 83.014 -134.397 84.789 -134.125C85.096 -134.078 85.295 -133.555 85.618 -133.458C87.846 -132.795 90.235 -133.32 92.354 -132.482C93.945 -131.853 95.515 -131.03 96.754 -129.755C97.006 -129.495 96.681 -129.194 96.401 -129C96.789 -129.109 97.062 -128.903 97.173 -128.59C97.257 -128.351 97.257 -128.049 97.173 -127.81C97.061 -127.498 96.782 -127.397 96.408 -127.346C95.001 -127.156 96.773 -128.536 96.073 -128.088C94.8 -127.274 95.546 -125.868 94.801 -124.6C94.521 -124.794 94.291 -125.012 94.401 -125.4C94.635 -124.878 94.033 -124.588 93.865 -124.272C93.48 -123.547 92.581 -122.132 91.696 -122.739z"} , {"fill": "#cc7226", "path":"M59.198 -115.391C56.044 -116.185 52.994 -116.07 49.978 -117.346C49.911 -117.374 49.688 -117.027 49.624 -117.054C48.258 -117.648 47.34 -118.614 46.264 -119.66C45.351 -120.548 43.693 -120.161 42.419 -120.648C42.095 -120.772 41.892 -121.284 41.591 -121.323C40.372 -121.48 39.445 -122.429 38.4 -123C40.736 -123.795 43.147 -123.764 45.609 -124.148C45.722 -124.166 45.867 -123.845 46 -123.845C46.136 -123.845 46.266 -124.066 46.4 -124.2C46.595 -123.92 46.897 -123.594 47.154 -123.848C47.702 -124.388 48.258 -124.198 48.798 -124.158C48.942 -124.148 49.067 -123.845 49.2 -123.845C49.336 -123.845 49.467 -124.156 49.6 -124.156C49.736 -124.155 49.867 -123.845 50 -123.845C50.136 -123.845 50.266 -124.066 50.4 -124.2C51.092 -123.418 51.977 -123.972 52.799 -123.793C53.837 -123.566 54.104 -122.418 55.178 -122.12C59.893 -120.816 64.03 -118.671 68.393 -116.584C68.7 -116.437 68.91 -116.189 68.8 -115.8C69.067 -115.8 69.38 -115.888 69.57 -115.756C70.628 -115.024 71.669 -114.476 72.366 -113.378C72.582 -113.039 72.253 -112.632 72.02 -112.684C67.591 -113.679 63.585 -114.287 59.198 -115.391z"} , {"fill": "#cc7226", "path":"M45.338 -71.179C43.746 -72.398 43.162 -74.429 42.034 -76.221C41.82 -76.561 42.094 -76.875 42.411 -76.964C42.971 -77.123 43.514 -76.645 43.923 -76.443C45.668 -75.581 47.203 -74.339 49.2 -74.2C51.19 -71.966 55.45 -71.581 55.457 -68.2C55.458 -67.341 54.03 -68.259 53.6 -67.4C51.149 -68.403 48.76 -68.3 46.38 -69.767C45.763 -70.148 46.093 -70.601 45.338 -71.179z"} , {"fill": "#cc7226", "path":"M17.8 -123.756C17.935 -123.755 24.966 -123.522 24.949 -123.408C24.904 -123.099 17.174 -122.05 16.81 -122.22C16.646 -122.296 9.134 -119.866 9 -120C9.268 -120.135 17.534 -123.756 17.8 -123.756z"} , {"fill": "#000000", "path":"M33.2 -114C33.2 -114 18.4 -112.2 14 -111C9.6 -109.8 -9 -102.2 -12 -100.2C-12 -100.2 -25.4 -94.8 -42.4 -74.8C-42.4 -74.8 -34.8 -78.2 -32.6 -81C-32.6 -81 -19 -93.6 -19.2 -91C-19.2 -91 -7 -99.6 -7.6 -97.4C-7.6 -97.4 16.8 -108.6 14.8 -105.4C14.8 -105.4 36.4 -110 35.4 -108C35.4 -108 54.2 -103.6 51.4 -103.4C51.4 -103.4 45.6 -102.2 52 -98.6C52 -98.6 48.6 -94.2 43.2 -98.2C37.8 -102.2 40.8 -100 35.8 -99C35.8 -99 33.2 -98.2 28.6 -102.2C28.6 -102.2 23 -106.8 14.2 -103.2C14.2 -103.2 -16.4 -90.6 -18.4 -90C-18.4 -90 -22 -87.2 -24.4 -83.6C-24.4 -83.6 -30.2 -79.2 -33.2 -77.8C-33.2 -77.8 -46 -66.2 -47.2 -64.8C-47.2 -64.8 -50.6 -59.6 -51.4 -59.2C-51.4 -59.2 -45 -63 -43 -65C-43 -65 -29 -75 -23.6 -75.8C-23.6 -75.8 -19.2 -78.8 -18.4 -80.2C-18.4 -80.2 -4 -89.4 0.2 -89.4C0.2 -89.4 9.4 -84.2 11.8 -91.2C11.8 -91.2 17.6 -93 23.2 -91.8C23.2 -91.8 26.4 -94.4 25.6 -96.6C25.6 -96.6 27.2 -98.4 28.2 -94.6C28.2 -94.6 31.6 -91 36.4 -93C36.4 -93 40.4 -93.2 38.4 -90.8C38.4 -90.8 34 -87 22.2 -86.8C22.2 -86.8 9.8 -86.2 -6.6 -78.6C-6.6 -78.6 -36.4 -68.2 -45.6 -57.8C-45.6 -57.8 -52 -49 -57.4 -47.8C-57.4 -47.8 -63.2 -47 -69.2 -39.6C-69.2 -39.6 -59.4 -45.4 -50.4 -45.4C-50.4 -45.4 -46.4 -47.8 -50.2 -44.2C-50.2 -44.2 -53.8 -36.6 -52.2 -31.2C-52.2 -31.2 -52.8 -26 -53.6 -24.4C-53.6 -24.4 -61.4 -11.6 -61.4 -9.2C-61.4 -6.8 -60.2 3 -59.8 3.6C-59.4 4.2 -60.8 2 -57 4.4C-53.2 6.8 -50.4 8.4 -49.6 11.2C-48.8 14 -51.6 5.8 -51.8 4C-52 2.2 -56.2 -5 -55.4 -7.4C-55.4 -7.4 -54.4 -6.4 -53.6 -5C-53.6 -5 -54.2 -5.6 -53.6 -9.2C-53.6 -9.2 -52.8 -14.4 -51.4 -17.6C-50 -20.8 -48 -24.6 -47.6 -25.4C-47.2 -26.2 -47.2 -32 -45.8 -29.4L-42.4 -26.8C-42.4 -26.8 -45.2 -29.4 -43 -31.6C-43 -31.6 -44 -37.2 -42.2 -39.8C-42.2 -39.8 -35.2 -48.2 -33.6 -49.2C-32 -50.2 -33.4 -49.8 -33.4 -49.8C-33.4 -49.8 -27.4 -54 -33.2 -52.4C-33.2 -52.4 -37.2 -50.8 -40.2 -50.8C-40.2 -50.8 -47.8 -48.8 -43.8 -53C-39.8 -57.2 -29.8 -62.6 -26 -62.4L-25.2 -60.8L-14 -63.2L-15.2 -62.4C-15.2 -62.4 -15.4 -62.6 -11.2 -63C-7 -63.4 -1.2 -62 0.2 -63.8C1.6 -65.6 5 -66.6 4.6 -65.2C4.2 -63.8 4 -61.8 4 -61.8C4 -61.8 9 -67.6 8.4 -65.4C7.8 -63.2 -0.4 -58 -1.8 -51.8L8.6 -60L12.2 -63C12.2 -63 15.8 -60.8 16 -62.4C16.2 -64 20.8 -69.8 22 -69.6C23.2 -69.4 25.2 -72.2 25 -69.6C24.8 -67 32.4 -61.6 32.4 -61.6C32.4 -61.6 35.6 -63.4 37 -62C38.4 -60.6 42.6 -81.8 42.6 -81.8L67.6 -92.4L111.201 -95.8L94.201 -102.6L33.2 -114z"} , {"stroke":"#4c0000", "width":2, "path":"M51.4 85C51.4 85 36.4 68.2 28 65.6C28 65.6 14.6 58.8 -10 66.6"} , {"stroke":"#4c0000", "width":2, "path":"M24.8 64.2C24.8 64.2 -0.4 56.2 -15.8 60.4C-15.8 60.4 -34.2 62.4 -42.6 76.2"} , {"stroke":"#4c0000", "width":2, "path":"M21.2 63C21.2 63 4.2 55.8 -10.6 53.6C-10.6 53.6 -27.2 51 -43.8 58.2C-43.8 58.2 -56 64.2 -61.4 74.4"} , {"stroke":"#4c0000", "width":2, "path":"M22.2 63.4C22.2 63.4 6.8 52.4 5.8 51C5.8 51 -1.2 40 -14.2 39.6C-14.2 39.6 -35.6 40.4 -52.8 48.4"} , {"fill": "#000000", "path":"M20.895 54.407C22.437 55.87 49.4 84.8 49.4 84.8C84.6 121.401 56.6 87.2 56.6 87.2C49 82.4 39.8 63.6 39.8 63.6C38.6 60.8 53.8 70.8 53.8 70.8C57.8 71.6 71.4 90.8 71.4 90.8C64.6 88.4 69.4 95.6 69.4 95.6C72.2 97.6 92.601 113.201 92.601 113.201C96.201 117.201 100.201 118.801 100.201 118.801C114.201 113.601 107.801 126.801 107.801 126.801C110.201 133.601 115.801 122.001 115.801 122.001C127.001 105.2 110.601 107.601 110.601 107.601C80.6 110.401 73.8 94.4 73.8 94.4C71.4 92 80.2 94.4 80.2 94.4C88.601 96.4 73 82 73 82C75.4 82 84.6 88.8 84.6 88.8C95.001 98 97.001 96 97.001 96C115.001 87.2 125.401 94.8 125.401 94.8C127.401 96.4 121.801 103.2 123.401 108.401C125.001 113.601 129.801 126.001 129.801 126.001C127.401 127.601 127.801 138.401 127.801 138.401C144.601 161.601 135.001 159.601 135.001 159.601C119.401 159.201 134.201 166.801 134.201 166.801C137.401 168.801 146.201 176.001 146.201 176.001C143.401 174.801 141.801 180.001 141.801 180.001C146.601 184.001 143.801 188.801 143.801 188.801C137.801 190.001 136.601 194.001 136.601 194.001C143.401 202.001 133.401 202.401 133.401 202.401C137.001 206.801 132.201 218.801 132.201 218.801C127.401 218.801 121.001 224.401 121.001 224.401C123.401 229.201 113.001 234.801 113.001 234.801C104.601 236.401 107.401 243.201 107.401 243.201C99.401 249.201 97.001 265.201 97.001 265.201C96.201 275.601 93.801 278.801 99.001 276.801C104.201 274.801 103.401 262.401 103.401 262.401C98.601 246.801 141.401 230.801 141.401 230.801C145.401 229.201 146.201 224.001 146.201 224.001C148.201 224.401 157.001 232.001 157.001 232.001C164.601 243.201 165.001 234.001 165.001 234.001C166.201 230.401 164.601 224.401 164.601 224.401C170.601 202.801 156.601 196.401 156.601 196.401C146.601 162.801 160.601 171.201 160.601 171.201C163.401 176.801 174.201 182.001 174.201 182.001L177.801 179.601C176.201 174.801 184.601 168.801 184.601 168.801C187.401 175.201 193.401 167.201 193.401 167.201C197.001 142.801 209.401 157.201 209.401 157.201C213.401 158.401 214.601 151.601 214.601 151.601C218.201 141.201 214.601 127.601 214.601 127.601C218.201 127.201 227.801 133.201 227.801 133.201C230.601 129.601 221.401 112.801 225.401 115.201C229.401 117.601 233.801 119.201 233.801 119.201C234.601 117.201 224.601 104.801 224.601 104.801C220.201 102 215.001 81.6 215.001 81.6C222.201 85.2 212.201 70 212.201 70C212.201 66.8 218.201 55.6 218.201 55.6C217.401 48.8 218.201 49.2 218.201 49.2C221.001 50.4 229.001 52 222.201 45.6C215.401 39.2 223.001 34.4 223.001 34.4C227.401 31.6 213.801 32 213.801 32C208.601 27.6 209.001 23.6 209.001 23.6C217.001 25.6 202.601 11.2 200.201 7.6C197.801 4 207.401 -1.2 207.401 -1.2C220.601 -4.8 209.001 -8 209.001 -8C189.401 -7.6 200.201 -18.4 200.201 -18.4C206.201 -18 204.601 -20.4 204.601 -20.4C199.401 -21.6 189.801 -28 189.801 -28C185.801 -31.6 189.401 -30.8 189.401 -30.8C206.201 -29.6 177.401 -40.8 177.401 -40.8C185.401 -40.8 167.401 -51.2 167.401 -51.2C165.401 -52.8 162.201 -60.4 162.201 -60.4C156.201 -65.6 151.401 -72.4 151.401 -72.4C151.001 -76.8 146.201 -81.6 146.201 -81.6C134.601 -95.2 129.001 -94.8 129.001 -94.8C114.201 -98.4 109.001 -97.6 109.001 -97.6L56.2 -93.2C29.8 -80.4 37.6 -59.4 37.6 -59.4C44 -51 53.2 -54.8 53.2 -54.8C57.8 -61 69.4 -58.8 69.4 -58.8C89.801 -55.6 87.201 -59.2 87.201 -59.2C84.801 -63.8 68.6 -70 68.4 -70.6C68.2 -71.2 59.4 -74.6 59.4 -74.6C56.4 -75.8 52 -85 52 -85C48.8 -88.4 64.6 -82.6 64.6 -82.6C63.4 -81.6 70.8 -77.6 70.8 -77.6C88.201 -78.6 98.801 -67.8 98.801 -67.8C109.601 -51.2 109.801 -59.4 109.801 -59.4C112.601 -68.8 100.801 -90 100.801 -90C101.201 -92 109.401 -85.4 109.401 -85.4C110.801 -87.4 111.601 -81.6 111.601 -81.6C111.801 -79.2 115.601 -71.2 115.601 -71.2C118.401 -58.2 122.001 -65.6 122.001 -65.6L126.601 -56.2C128.001 -53.6 122.001 -46 122.001 -46C121.801 -43.2 122.601 -43.4 117.001 -35.8C111.401 -28.2 114.801 -23.8 114.801 -23.8C113.401 -17.2 122.201 -17.6 122.201 -17.6C124.801 -15.4 128.201 -15.4 128.201 -15.4C130.001 -13.4 132.401 -14 132.401 -14C134.001 -17.8 140.201 -15.8 140.201 -15.8C141.601 -18.2 149.801 -18.6 149.801 -18.6C150.801 -21.2 151.201 -22.8 154.601 -23.4C158.001 -24 133.401 -67 133.401 -67C139.801 -67.8 131.601 -80.2 131.601 -80.2C129.401 -86.8 140.801 -72.2 143.001 -70.8C145.201 -69.4 146.201 -67.2 144.601 -67.4C143.001 -67.6 141.201 -65.4 142.601 -65.2C144.001 -65 157.001 -50 160.401 -39.8C163.801 -29.6 169.801 -25.6 176.001 -19.6C182.201 -13.6 181.401 10.6 181.401 10.6C181.001 19.4 187.001 30 187.001 30C189.001 33.8 184.801 52 184.801 52C182.801 54.2 184.201 55 184.201 55C185.201 56.2 192.001 69.4 192.001 69.4C190.201 69.2 193.801 72.8 193.801 72.8C199.001 78.8 192.601 75.8 192.601 75.8C186.601 74.2 193.601 84 193.601 84C194.801 85.8 185.801 81.2 185.801 81.2C176.601 80.6 188.201 87.8 188.201 87.8C196.801 95 185.401 90.6 185.401 90.6C180.801 88.8 184.001 95.6 184.001 95.6C187.201 97.2 204.401 104.2 204.401 104.2C204.801 108.001 201.801 113.001 201.801 113.001C202.201 117.001 200.001 120.401 200.001 120.401C198.801 128.601 198.201 129.401 198.201 129.401C194.001 129.601 186.601 143.401 186.601 143.401C184.801 146.001 174.601 158.001 174.601 158.001C172.601 165.001 154.601 157.801 154.601 157.801C148.001 161.201 150.001 157.801 150.001 157.801C149.601 155.601 154.401 149.601 154.401 149.601C161.401 147.001 158.801 136.201 158.801 136.201C162.801 134.801 151.601 132.001 151.801 130.801C152.001 129.601 157.801 128.201 157.801 128.201C165.801 126.201 161.401 123.801 161.401 123.801C160.801 119.801 163.801 114.201 163.801 114.201C175.401 113.401 163.801 97.2 163.801 97.2C153.001 89.6 152.001 83.8 152.001 83.8C164.601 75.6 156.401 63.2 156.601 59.6C156.801 56 158.001 34.4 158.001 34.4C156.001 28.2 153.001 14.6 153.001 14.6C155.201 9.4 162.601 -3.2 162.601 -3.2C165.401 -7.4 174.201 -12.2 172.001 -15.2C169.801 -18.2 162.001 -16.4 162.001 -16.4C154.201 -17.8 154.801 -12.6 154.801 -12.6C153.201 -11.6 152.401 -6.6 152.401 -6.6C151.68 1.333 142.801 7.6 142.801 7.6C131.601 13.8 140.801 17.8 140.801 17.8C146.801 24.4 137.001 24.6 137.001 24.6C126.001 22.8 134.201 33 134.201 33C145.001 45.8 142.001 48.6 142.001 48.6C131.801 49.6 144.401 58.8 144.401 58.8C144.401 58.8 143.601 56.8 143.801 58.6C144.001 60.4 147.001 64.6 147.801 66.6C148.601 68.6 144.601 68.8 144.601 68.8C145.201 78.4 129.801 74.2 129.801 74.2C129.801 74.2 129.801 74.2 128.201 74.4C126.601 74.6 115.401 73.8 109.601 71.6C103.801 69.4 97.001 69.4 97.001 69.4C97.001 69.4 93.001 71.2 85.4 71C77.8 70.8 69.8 73.6 69.8 73.6C65.4 73.2 74 68.8 74.2 69C74.4 69.2 80 63.6 72 64.2C50.203 65.835 39.4 55.6 39.4 55.6C37.4 54.2 34.8 51.4 34.8 51.4C24.8 49.4 36.2 63.8 36.2 63.8C37.4 65.2 36 66.2 36 66.2C35.2 64.6 27.4 59.2 27.4 59.2C24.589 58.227 23.226 56.893 20.895 54.407z"} , {"fill": "#4c0000", "path":"M-3 42.8C-3 42.8 8.6 48.4 11.2 51.2C13.8 54 27.8 65.4 27.8 65.4C27.8 65.4 22.4 63.4 19.8 61.6C17.2 59.8 6.4 51.6 6.4 51.6C6.4 51.6 2.6 45.6 -3 42.8z"} , {"fill": "#99cc32", "path":"M-61.009 11.603C-60.672 11.455 -61.196 8.743 -61.4 8.2C-62.422 5.474 -71.4 4 -71.4 4C-71.627 5.365 -71.682 6.961 -71.576 8.599C-71.576 8.599 -66.708 14.118 -61.009 11.603z"} , {"fill": "#659900", "path":"M-61.009 11.403C-61.458 11.561 -61.024 8.669 -61.2 8.2C-62.222 5.474 -71.4 3.9 -71.4 3.9C-71.627 5.265 -71.682 6.861 -71.576 8.499C-71.576 8.499 -67.308 13.618 -61.009 11.403z"} , {"fill": "#000000", "path":"M-65.4 11.546C-66.025 11.546 -66.531 10.406 -66.531 9C-66.531 7.595 -66.025 6.455 -65.4 6.455C-64.775 6.455 -64.268 7.595 -64.268 9C-64.268 10.406 -64.775 11.546 -65.4 11.546z"} , {"fill": "#000000", "path":"M-65.4 9z"} , {"fill": "#000000", "path":"M-111 109.601C-111 109.601 -116.6 119.601 -91.8 113.601C-91.8 113.601 -77.8 112.401 -75.4 110.001C-74.2 110.801 -65.834 113.734 -63 114.401C-56.2 116.001 -47.8 106 -47.8 106C-47.8 106 -43.2 95.5 -40.4 95.5C-37.6 95.5 -40.8 97.1 -40.8 97.1C-40.8 97.1 -47.4 107.201 -47 108.801C-47 108.801 -52.2 128.801 -68.2 129.601C-68.2 129.601 -84.35 130.551 -83 136.401C-83 136.401 -74.2 134.001 -71.8 136.401C-71.8 136.401 -61 136.001 -69 142.401L-75.8 154.001C-75.8 154.001 -75.66 157.919 -85.8 154.401C-95.6 151.001 -105.9 138.101 -105.9 138.101C-105.9 138.101 -121.85 123.551 -111 109.601z"} , {"fill": "#e59999", "path":"M-112.2 113.601C-112.2 113.601 -114.2 123.201 -77.4 112.801C-77.4 112.801 -73 112.801 -70.6 113.601C-68.2 114.401 -56.2 117.201 -54.2 116.001C-54.2 116.001 -61.4 129.601 -73 128.001C-73 128.001 -86.2 129.601 -85.8 134.401C-85.8 134.401 -81.8 141.601 -77 144.001C-77 144.001 -74.2 146.401 -74.6 149.601C-75 152.801 -77.8 154.401 -79.8 155.201C-81.8 156.001 -85 152.801 -86.6 152.801C-88.2 152.801 -96.6 146.401 -101 141.601C-105.4 136.801 -113.8 124.801 -113.4 122.001C-113 119.201 -112.2 113.601 -112.2 113.601z"} , {"fill": "#b26565", "path":"M-109 131.051C-106.4 135.001 -103.2 139.201 -101 141.601C-96.6 146.401 -88.2 152.801 -86.6 152.801C-85 152.801 -81.8 156.001 -79.8 155.201C-77.8 154.401 -75 152.801 -74.6 149.601C-74.2 146.401 -77 144.001 -77 144.001C-80.066 142.468 -82.806 138.976 -84.385 136.653C-84.385 136.653 -84.2 139.201 -89.4 138.401C-94.6 137.601 -99.8 134.801 -101.4 131.601C-103 128.401 -105.4 126.001 -103.8 129.601C-102.2 133.201 -99.8 136.801 -98.2 137.201C-96.6 137.601 -97 138.801 -99.4 138.401C-101.8 138.001 -104.6 137.601 -109 132.401z"} , {"fill": "#992600", "path":"M-111.6 110.001C-111.6 110.001 -109.8 96.4 -108.6 92.4C-108.6 92.4 -109.4 85.6 -107 81.4C-104.6 77.2 -102.6 71 -99.6 65.6C-96.6 60.2 -96.4 56.2 -92.4 54.6C-88.4 53 -82.4 44.4 -79.6 43.4C-76.8 42.4 -77 43.2 -77 43.2C-77 43.2 -70.2 28.4 -56.6 32.4C-56.6 32.4 -72.8 29.6 -57 20.2C-57 20.2 -61.8 21.3 -58.5 14.3C-56.299 9.632 -56.8 16.4 -67.8 28.2C-67.8 28.2 -72.8 36.8 -78 39.8C-83.2 42.8 -95.2 49.8 -96.4 53.6C-97.6 57.4 -100.8 63.2 -102.8 64.8C-104.8 66.4 -107.6 70.6 -108 74C-108 74 -109.2 78 -110.6 79.2C-112 80.4 -112.2 83.6 -112.2 85.6C-112.2 87.6 -114.2 90.4 -114 92.8C-114 92.8 -113.2 111.801 -113.6 113.801L-111.6 110.001z"} , {"fill": "#ffffff", "path":"M-120.2 114.601C-120.2 114.601 -122.2 113.201 -126.6 119.201C-126.6 119.201 -119.3 152.201 -119.3 153.601C-119.3 153.601 -118.2 151.501 -119.5 144.301C-120.8 137.101 -121.7 124.401 -121.7 124.401L-120.2 114.601z"} , {"fill": "#992600", "path":"M-98.6 54C-98.6 54 -116.2 57.2 -115.8 86.4L-116.6 111.201C-116.6 111.201 -117.8 85.6 -119 84C-120.2 82.4 -116.2 71.2 -119.4 77.2C-119.4 77.2 -133.4 91.2 -125.4 112.401C-125.4 112.401 -123.9 115.701 -126.9 111.101C-126.9 111.101 -131.5 98.5 -130.4 92.1C-130.4 92.1 -130.2 89.9 -128.3 87.1C-128.3 87.1 -119.7 75.4 -117 73.1C-117 73.1 -115.2 58.7 -99.8 53.5C-99.8 53.5 -94.1 51.2 -98.6 54z"} , {"fill": "#000000", "path":"M40.8 -12.2C41.46 -12.554 41.451 -13.524 42.031 -13.697C43.18 -14.041 43.344 -15.108 43.862 -15.892C44.735 -17.211 44.928 -18.744 45.51 -20.235C45.782 -20.935 45.809 -21.89 45.496 -22.55C44.322 -25.031 43.62 -27.48 42.178 -29.906C41.91 -30.356 41.648 -31.15 41.447 -31.748C40.984 -33.132 39.727 -34.123 38.867 -35.443C38.579 -35.884 39.104 -36.809 38.388 -36.893C37.491 -36.998 36.042 -37.578 35.809 -36.552C35.221 -33.965 36.232 -31.442 37.2 -29C36.418 -28.308 36.752 -27.387 36.904 -26.62C37.614 -23.014 36.416 -19.662 35.655 -16.188C35.632 -16.084 35.974 -15.886 35.946 -15.824C34.724 -13.138 33.272 -10.693 31.453 -8.312C30.695 -7.32 29.823 -6.404 29.326 -5.341C28.958 -4.554 28.55 -3.588 28.8 -2.6C25.365 0.18 23.115 4.025 20.504 7.871C20.042 8.551 20.333 9.76 20.884 10.029C21.697 10.427 22.653 9.403 23.123 8.557C23.512 7.859 23.865 7.209 24.356 6.566C24.489 6.391 24.31 5.972 24.445 5.851C27.078 3.504 28.747 0.568 31.2 -1.8C33.15 -2.129 34.687 -3.127 36.435 -4.14C36.743 -4.319 37.267 -4.07 37.557 -4.265C39.31 -5.442 39.308 -7.478 39.414 -9.388C39.464 -10.272 39.66 -11.589 40.8 -12.2z"} , {"fill": "#000000", "path":"M31.959 -16.666C32.083 -16.743 31.928 -17.166 32.037 -17.382C32.199 -17.706 32.602 -17.894 32.764 -18.218C32.873 -18.434 32.71 -18.814 32.846 -18.956C35.179 -21.403 35.436 -24.427 34.4 -27.4C35.424 -28.02 35.485 -29.282 35.06 -30.129C34.207 -31.829 34.014 -33.755 33.039 -35.298C32.237 -36.567 30.659 -37.811 29.288 -36.508C28.867 -36.108 28.546 -35.321 28.824 -34.609C28.888 -34.446 29.173 -34.3 29.146 -34.218C29.039 -33.894 28.493 -33.67 28.487 -33.398C28.457 -31.902 27.503 -30.391 28.133 -29.062C28.905 -27.433 29.724 -25.576 30.4 -23.8C29.166 -21.684 30.199 -19.235 28.446 -17.358C28.31 -17.212 28.319 -16.826 28.441 -16.624C28.733 -16.138 29.139 -15.732 29.625 -15.44C29.827 -15.319 30.175 -15.317 30.375 -15.441C30.953 -15.803 31.351 -16.29 31.959 -16.666z"} , {"fill": "#000000", "path":"M94.771 -26.977C96.16 -25.185 96.45 -22.39 94.401 -21C94.951 -17.691 98.302 -19.67 100.401 -20.2C100.292 -20.588 100.519 -20.932 100.802 -20.937C101.859 -20.952 102.539 -21.984 103.601 -21.8C104.035 -23.357 105.673 -24.059 106.317 -25.439C108.043 -29.134 107.452 -33.407 104.868 -36.653C104.666 -36.907 104.883 -37.424 104.759 -37.786C104.003 -39.997 101.935 -40.312 100.001 -41C98.824 -44.875 98.163 -48.906 96.401 -52.6C94.787 -52.85 94.089 -54.589 92.752 -55.309C91.419 -56.028 90.851 -54.449 90.892 -53.403C90.899 -53.198 91.351 -52.974 91.181 -52.609C91.105 -52.445 90.845 -52.334 90.845 -52.2C90.846 -52.065 91.067 -51.934 91.201 -51.8C90.283 -50.98 88.86 -50.503 88.565 -49.358C87.611 -45.648 90.184 -42.523 91.852 -39.322C92.443 -38.187 91.707 -36.916 90.947 -35.708C90.509 -35.013 90.617 -33.886 90.893 -33.03C91.645 -30.699 93.236 -28.96 94.771 -26.977z"} , {"fill": "#000000", "path":"M57.611 -8.591C56.124 -6.74 52.712 -4.171 55.629 -2.243C55.823 -2.114 56.193 -2.11 56.366 -2.244C58.387 -3.809 60.39 -4.712 62.826 -5.294C62.95 -5.323 63.224 -4.856 63.593 -5.017C65.206 -5.72 67.216 -5.662 68.4 -7C72.167 -6.776 75.732 -7.892 79.123 -9.2C80.284 -9.648 81.554 -10.207 82.755 -10.709C84.131 -11.285 85.335 -12.213 86.447 -13.354C86.58 -13.49 86.934 -13.4 87.201 -13.4C87.161 -14.263 88.123 -14.39 88.37 -15.012C88.462 -15.244 88.312 -15.64 88.445 -15.742C90.583 -17.372 91.503 -19.39 90.334 -21.767C90.049 -22.345 89.8 -22.963 89.234 -23.439C88.149 -24.35 87.047 -23.496 86 -23.8C85.841 -23.172 85.112 -23.344 84.726 -23.146C83.867 -22.707 82.534 -23.292 81.675 -22.854C80.313 -22.159 79.072 -21.99 77.65 -21.613C77.338 -21.531 76.56 -21.627 76.4 -21C76.266 -21.134 76.118 -21.368 76.012 -21.346C74.104 -20.95 72.844 -20.736 71.543 -19.044C71.44 -18.911 70.998 -19.09 70.839 -18.955C69.882 -18.147 69.477 -16.913 68.376 -16.241C68.175 -16.118 67.823 -16.286 67.629 -16.157C66.983 -15.726 66.616 -15.085 65.974 -14.638C65.645 -14.409 65.245 -14.734 65.277 -14.99C65.522 -16.937 66.175 -18.724 65.6 -20.6C67.677 -23.12 70.194 -25.069 72 -27.8C72.015 -29.966 72.707 -32.112 72.594 -34.189C72.584 -34.382 72.296 -35.115 72.17 -35.462C71.858 -36.316 72.764 -37.382 71.92 -38.106C70.516 -39.309 69.224 -38.433 68.4 -37C66.562 -36.61 64.496 -35.917 62.918 -37.151C61.911 -37.938 61.333 -38.844 60.534 -39.9C59.549 -41.202 59.884 -42.638 59.954 -44.202C59.96 -44.33 59.645 -44.466 59.645 -44.6C59.646 -44.735 59.866 -44.866 60 -45C59.294 -45.626 59.019 -46.684 58 -47C58.305 -48.092 57.629 -48.976 56.758 -49.278C54.763 -49.969 53.086 -48.057 51.194 -47.984C50.68 -47.965 50.213 -49.003 49.564 -49.328C49.132 -49.544 48.428 -49.577 48.066 -49.311C47.378 -48.807 46.789 -48.693 46.031 -48.488C44.414 -48.052 43.136 -46.958 41.656 -46.103C40.171 -45.246 39.216 -43.809 38.136 -42.489C37.195 -41.337 37.059 -38.923 38.479 -38.423C40.322 -37.773 41.626 -40.476 43.592 -40.15C43.904 -40.099 44.11 -39.788 44 -39.4C44.389 -39.291 44.607 -39.52 44.8 -39.8C45.658 -38.781 46.822 -38.444 47.76 -37.571C48.73 -36.667 50.476 -37.085 51.491 -36.088C53.02 -34.586 52.461 -31.905 54.4 -30.6C53.814 -29.287 53.207 -28.01 52.872 -26.583C52.59 -25.377 53.584 -24.18 54.795 -24.271C56.053 -24.365 56.315 -25.124 56.8 -26.2C57.067 -25.933 57.536 -25.636 57.495 -25.42C57.038 -23.033 56.011 -21.04 55.553 -18.609C55.494 -18.292 55.189 -18.09 54.8 -18.2C54.332 -14.051 50.28 -11.657 47.735 -8.492C47.332 -7.99 47.328 -6.741 47.737 -6.338C49.14 -4.951 51.1 -6.497 52.8 -7C53.013 -8.206 53.872 -9.148 55.204 -9.092C55.46 -9.082 55.695 -9.624 56.019 -9.754C56.367 -9.892 56.869 -9.668 57.155 -9.866C58.884 -11.061 60.292 -12.167 62.03 -13.356C62.222 -13.487 62.566 -13.328 62.782 -13.436C63.107 -13.598 63.294 -13.985 63.617 -14.17C63.965 -14.37 64.207 -14.08 64.4 -13.8C63.754 -13.451 63.75 -12.494 63.168 -12.292C62.393 -12.024 61.832 -11.511 61.158 -11.064C60.866 -10.871 60.207 -11.119 60.103 -10.94C59.505 -9.912 58.321 -9.474 57.611 -8.591z"} , {"fill": "#000000", "path":"M2.2 -58C2.2 -58 -7.038 -60.872 -18.2 -35.2C-18.2 -35.2 -20.6 -30 -23 -28C-25.4 -26 -36.6 -22.4 -38.6 -18.4L-49 -2.4C-49 -2.4 -34.2 -18.4 -31 -20.8C-31 -20.8 -23 -29.2 -26.2 -22.4C-26.2 -22.4 -40.2 -11.6 -39 -2.4C-39 -2.4 -44.6 12 -45.4 14C-45.4 14 -29.4 -18 -27 -19.2C-24.6 -20.4 -23.4 -20.4 -24.6 -16.8C-25.8 -13.2 -26.2 3.2 -29 5.2C-29 5.2 -21 -15.2 -21.8 -18.4C-21.8 -18.4 -18.6 -22 -16.2 -16.8L-17.4 -0.8L-13 11.2C-13 11.2 -15.4 0 -13.8 -15.6C-13.8 -15.6 -15.8 -26 -11.8 -20.4C-7.8 -14.8 1.8 -8.8 1.8 -4C1.8 -4 -3.4 -21.6 -12.6 -26.4L-16.6 -20.4L-17.8 -22.4C-17.8 -22.4 -21.4 -23.2 -17 -30C-12.6 -36.8 -13 -37.6 -13 -37.6C-13 -37.6 -6.6 -30.4 -5 -30.4C-5 -30.4 8.2 -38 9.4 -13.6C9.4 -13.6 16.2 -28 7 -34.8C7 -34.8 -7.8 -36.8 -6.6 -42L0.6 -54.4C4.2 -59.6 2.6 -56.8 2.6 -56.8z"} , {"fill": "#000000", "path":"M-17.8 -41.6C-17.8 -41.6 -30.6 -41.6 -33.8 -36.4L-41 -26.8C-41 -26.8 -23.8 -36.8 -19.8 -38C-15.8 -39.2 -17.8 -41.6 -17.8 -41.6z"} , {"fill": "#000000", "path":"M-57.8 -35.2C-57.8 -35.2 -59.8 -34 -60.2 -31.2C-60.6 -28.4 -63 -28 -62.2 -25.2C-61.4 -22.4 -59.4 -20 -59.4 -24C-59.4 -28 -57.8 -30 -57 -31.2C-56.2 -32.4 -54.6 -36.8 -57.8 -35.2z"} , {"fill": "#000000", "path":"M-66.6 26C-66.6 26 -75 22 -78.2 18.4C-81.4 14.8 -80.948 19.966 -85.8 19.6C-91.647 19.159 -90.6 3.2 -90.6 3.2L-94.6 10.8C-94.6 10.8 -95.8 25.2 -87.8 22.8C-83.893 21.628 -82.6 23.2 -84.2 24C-85.8 24.8 -78.6 25.2 -81.4 26.8C-84.2 28.4 -69.8 23.2 -72.2 33.6L-66.6 26z"} , {"fill": "#000000", "path":"M-79.2 40.4C-79.2 40.4 -94.6 44.8 -98.2 35.2C-98.2 35.2 -103 37.6 -100.8 40.6C-98.6 43.6 -97.4 44 -97.4 44C-97.4 44 -92 45.2 -92.6 46C-93.2 46.8 -95.6 50.2 -95.6 50.2C-95.6 50.2 -85.4 44.2 -79.2 40.4z"} , {"fill": "#ffffff", "path":"M149.201 118.601C148.774 120.735 147.103 121.536 145.201 122.201C143.284 121.243 140.686 118.137 138.801 120.201C138.327 119.721 137.548 119.661 137.204 118.999C136.739 118.101 137.011 117.055 136.669 116.257C136.124 114.985 135.415 113.619 135.601 112.201C137.407 111.489 138.002 109.583 137.528 107.82C137.459 107.563 137.03 107.366 137.23 107.017C137.416 106.694 137.734 106.467 138.001 106.2C137.866 106.335 137.721 106.568 137.61 106.548C137 106.442 137.124 105.805 137.254 105.418C137.839 103.672 139.853 103.408 141.201 104.6C141.457 104.035 141.966 104.229 142.401 104.2C142.351 103.621 142.759 103.094 142.957 102.674C143.475 101.576 145.104 102.682 145.901 102.07C146.977 101.245 148.04 100.546 149.118 101.149C150.927 102.162 152.636 103.374 153.835 105.115C154.41 105.949 154.65 107.23 154.592 108.188C154.554 108.835 153.173 108.483 152.83 109.412C152.185 111.16 154.016 111.679 154.772 113.017C154.97 113.366 154.706 113.67 154.391 113.768C153.98 113.896 153.196 113.707 153.334 114.16C154.306 117.353 151.55 118.031 149.201 118.601z"} , {"fill": "#ffffff", "path":"M139.6 138.201C139.593 136.463 137.992 134.707 139.201 133.001C139.336 133.135 139.467 133.356 139.601 133.356C139.736 133.356 139.867 133.135 140.001 133.001C141.496 135.217 145.148 136.145 145.006 138.991C144.984 139.438 143.897 140.356 144.801 141.001C142.988 142.349 142.933 144.719 142.001 146.601C140.763 146.315 139.551 145.952 138.401 145.401C138.753 143.915 138.636 142.231 139.456 140.911C139.89 140.213 139.603 139.134 139.6 138.201z"} , {"fill": "#cccccc", "path":"M-26.6 129.201C-26.6 129.201 -43.458 139.337 -29.4 124.001C-20.6 114.401 -10.6 108.801 -10.6 108.801C-10.6 108.801 -0.2 104.4 3.4 103.2C7 102 22.2 96.8 25.4 96.4C28.6 96 38.2 92 45 96C51.8 100 59.8 104.4 59.8 104.4C59.8 104.4 43.4 96 39.8 98.4C36.2 100.8 29 100.4 23 103.6C23 103.6 8.2 108.001 5 110.001C1.8 112.001 -8.6 123.601 -10.2 122.801C-11.8 122.001 -9.8 121.601 -8.6 118.801C-7.4 116.001 -9.4 114.401 -17.4 120.801C-25.4 127.201 -26.6 129.201 -26.6 129.201z"} , {"fill": "#000000", "path":"M-19.195 123.234C-19.195 123.234 -17.785 110.194 -9.307 111.859C-9.307 111.859 -1.081 107.689 1.641 105.721C1.641 105.721 9.78 104.019 11.09 103.402C29.569 94.702 44.288 99.221 44.835 98.101C45.381 96.982 65.006 104.099 68.615 108.185C69.006 108.628 58.384 102.588 48.686 100.697C40.413 99.083 18.811 100.944 7.905 106.48C4.932 107.989 -4.013 113.773 -6.544 113.662C-9.075 113.55 -19.195 123.234 -19.195 123.234z"} , {"fill": "#cccccc", "path":"M-23 148.801C-23 148.801 -38.2 146.401 -21.4 144.801C-21.4 144.801 -3.4 142.801 0.6 137.601C0.6 137.601 14.2 128.401 17 128.001C19.8 127.601 49.8 120.401 50.2 118.001C50.6 115.601 56.2 115.601 57.8 116.401C59.4 117.201 58.6 118.401 55.8 119.201C53 120.001 21.8 136.401 15.4 137.601C9 138.801 -2.6 146.401 -7.4 147.601C-12.2 148.801 -23 148.801 -23 148.801z"} , {"fill": "#000000", "path":"M-3.48 141.403C-3.48 141.403 -12.062 140.574 -3.461 139.755C-3.461 139.755 5.355 136.331 7.403 133.668C7.403 133.668 14.367 128.957 15.8 128.753C17.234 128.548 31.194 124.861 31.399 123.633C31.604 122.404 65.67 109.823 70.09 113.013C73.001 115.114 63.1 113.437 53.466 117.847C52.111 118.467 18.258 133.054 14.981 133.668C11.704 134.283 5.765 138.174 3.307 138.788C0.85 139.403 -3.48 141.403 -3.48 141.403z"} , {"fill": "#000000", "path":"M-11.4 143.601C-11.4 143.601 -6.2 143.201 -7.4 144.801C-8.6 146.401 -11 145.601 -11 145.601L-11.4 143.601z"} , {"fill": "#000000", "path":"M-18.6 145.201C-18.6 145.201 -13.4 144.801 -14.6 146.401C-15.8 148.001 -18.2 147.201 -18.2 147.201L-18.6 145.201z"} , {"fill": "#000000", "path":"M-29 146.801C-29 146.801 -23.8 146.401 -25 148.001C-26.2 149.601 -28.6 148.801 -28.6 148.801L-29 146.801z"} , {"fill": "#000000", "path":"M-36.6 147.601C-36.6 147.601 -31.4 147.201 -32.6 148.801C-33.8 150.401 -36.2 149.601 -36.2 149.601L-36.6 147.601z"} , {"fill": "#000000", "path":"M1.8 108.001C1.8 108.001 6.2 108.001 5 109.601C3.8 111.201 0.6 110.801 0.6 110.801L1.8 108.001z"} , {"fill": "#000000", "path":"M-8.2 113.601C-8.2 113.601 -1.694 111.46 -4.2 114.801C-5.4 116.401 -7.8 115.601 -7.8 115.601L-8.2 113.601z"} , {"fill": "#000000", "path":"M-19.4 118.401C-19.4 118.401 -14.2 118.001 -15.4 119.601C-16.6 121.201 -19 120.401 -19 120.401L-19.4 118.401z"} , {"fill": "#000000", "path":"M-27 124.401C-27 124.401 -21.8 124.001 -23 125.601C-24.2 127.201 -26.6 126.401 -26.6 126.401L-27 124.401z"} , {"fill": "#000000", "path":"M-33.8 129.201C-33.8 129.201 -28.6 128.801 -29.8 130.401C-31 132.001 -33.4 131.201 -33.4 131.201L-33.8 129.201z"} , {"fill": "#000000", "path":"M5.282 135.598C5.282 135.598 12.203 135.066 10.606 137.195C9.009 139.325 5.814 138.26 5.814 138.26L5.282 135.598z"} , {"fill": "#000000", "path":"M15.682 130.798C15.682 130.798 22.603 130.266 21.006 132.395C19.409 134.525 16.214 133.46 16.214 133.46L15.682 130.798z"} , {"fill": "#000000", "path":"M26.482 126.398C26.482 126.398 33.403 125.866 31.806 127.995C30.209 130.125 27.014 129.06 27.014 129.06L26.482 126.398z"} , {"fill": "#000000", "path":"M36.882 121.598C36.882 121.598 43.803 121.066 42.206 123.195C40.609 125.325 37.414 124.26 37.414 124.26L36.882 121.598z"} , {"fill": "#000000", "path":"M9.282 103.598C9.282 103.598 16.203 103.066 14.606 105.195C13.009 107.325 9.014 107.06 9.014 107.06L9.282 103.598z"} , {"fill": "#000000", "path":"M19.282 100.398C19.282 100.398 26.203 99.866 24.606 101.995C23.009 104.125 18.614 103.86 18.614 103.86L19.282 100.398z"} , {"fill": "#000000", "path":"M-3.4 140.401C-3.4 140.401 1.8 140.001 0.6 141.601C-0.6 143.201 -3 142.401 -3 142.401L-3.4 140.401z"} , {"fill": "#992600", "path":"M-76.6 41.2C-76.6 41.2 -81 50 -81.4 53.2C-81.4 53.2 -80.6 44.4 -79.4 42.4C-78.2 40.4 -76.6 41.2 -76.6 41.2z"} , {"fill": "#992600", "path":"M-95 55.2C-95 55.2 -98.2 69.6 -97.8 72.4C-97.8 72.4 -99 60.8 -98.6 59.6C-98.2 58.4 -95 55.2 -95 55.2z"} , {"fill": "#cccccc", "path":"M-74.2 -19.4L-74.4 -16.2L-76.6 -16C-76.6 -16 -62.4 -3.4 -61.8 4.2C-61.8 4.2 -61 -4 -74.2 -19.4z"} , {"fill": "#000000", "path":"M-70.216 -18.135C-70.647 -18.551 -70.428 -19.296 -70.836 -19.556C-71.645 -20.072 -69.538 -20.129 -69.766 -20.845C-70.149 -22.051 -69.962 -22.072 -70.084 -23.348C-70.141 -23.946 -69.553 -25.486 -69.168 -25.926C-67.722 -27.578 -69.046 -30.51 -67.406 -32.061C-67.102 -32.35 -66.726 -32.902 -66.441 -33.32C-65.782 -34.283 -64.598 -34.771 -63.648 -35.599C-63.33 -35.875 -63.531 -36.702 -62.962 -36.61C-62.248 -36.495 -61.007 -36.625 -61.052 -35.784C-61.165 -33.664 -62.494 -31.944 -63.774 -30.276C-63.323 -29.572 -63.781 -28.937 -64.065 -28.38C-65.4 -25.76 -65.211 -22.919 -65.385 -20.079C-65.39 -19.994 -65.697 -19.916 -65.689 -19.863C-65.336 -17.528 -64.752 -15.329 -63.873 -13.1C-63.507 -12.17 -63.036 -11.275 -62.886 -10.348C-62.775 -9.662 -62.672 -8.829 -63.08 -8.124C-61.045 -5.234 -62.354 -2.583 -61.185 0.948C-60.978 1.573 -59.286 3.487 -59.749 3.326C-62.262 2.455 -62.374 2.057 -62.551 1.304C-62.697 0.681 -63.027 -0.696 -63.264 -1.298C-63.328 -1.462 -63.499 -3.346 -63.577 -3.468C-65.09 -5.85 -63.732 -5.674 -65.102 -8.032C-66.53 -8.712 -67.496 -9.816 -68.619 -10.978C-68.817 -11.182 -67.674 -11.906 -67.855 -12.119C-68.947 -13.408 -70.1 -14.175 -69.764 -15.668C-69.609 -16.358 -69.472 -17.415 -70.216 -18.135z"} , {"fill": "#000000", "path":"M-73.8 -16.4C-73.8 -16.4 -73.4 -9.6 -71 -8C-68.6 -6.4 -69.8 -7.2 -73 -8.4C-76.2 -9.6 -75 -10.4 -75 -10.4C-75 -10.4 -77.8 -10 -75.4 -8C-73 -6 -69.4 -3.6 -71 -3.6C-72.6 -3.6 -80.2 -7.6 -80.2 -10.4C-80.2 -13.2 -81.2 -17.3 -81.2 -17.3C-81.2 -17.3 -80.1 -18.1 -75.3 -18C-75.3 -18 -73.9 -17.3 -73.8 -16.4z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-74.6 2.2C-74.6 2.2 -83.12 -0.591 -101.6 2.8C-101.6 2.8 -92.569 0.722 -73.8 3C-63.5 4.25 -74.6 2.2 -74.6 2.2z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-72.502 2.129C-72.502 2.129 -80.748 -1.389 -99.453 0.392C-99.453 0.392 -90.275 -0.897 -71.774 2.995C-61.62 5.131 -72.502 2.129 -72.502 2.129z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-70.714 2.222C-70.714 2.222 -78.676 -1.899 -97.461 -1.514C-97.461 -1.514 -88.213 -2.118 -70.052 3.14C-60.086 6.025 -70.714 2.222 -70.714 2.222z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-69.444 2.445C-69.444 2.445 -76.268 -1.862 -93.142 -2.96C-93.142 -2.96 -84.803 -2.79 -68.922 3.319C-60.206 6.672 -69.444 2.445 -69.444 2.445z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M45.84 12.961C45.84 12.961 44.91 13.605 45.124 12.424C45.339 11.243 73.547 -1.927 77.161 -1.677C77.161 -1.677 46.913 11.529 45.84 12.961z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M42.446 13.6C42.446 13.6 41.57 14.315 41.691 13.121C41.812 11.927 68.899 -3.418 72.521 -3.452C72.521 -3.452 43.404 12.089 42.446 13.6z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M39.16 14.975C39.16 14.975 38.332 15.747 38.374 14.547C38.416 13.348 58.233 -2.149 68.045 -4.023C68.045 -4.023 50.015 4.104 39.16 14.975z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M36.284 16.838C36.284 16.838 35.539 17.532 35.577 16.453C35.615 15.373 53.449 1.426 62.28 -0.26C62.28 -0.26 46.054 7.054 36.284 16.838z"} , {"fill": "#cccccc", "path":"M4.6 164.801C4.6 164.801 -10.6 162.401 6.2 160.801C6.2 160.801 24.2 158.801 28.2 153.601C28.2 153.601 41.8 144.401 44.6 144.001C47.4 143.601 63.8 140.001 64.2 137.601C64.6 135.201 70.6 132.801 72.2 133.601C73.8 134.401 73.8 143.601 71 144.401C68.2 145.201 49.4 152.401 43 153.601C36.6 154.801 25 162.401 20.2 163.601C15.4 164.801 4.6 164.801 4.6 164.801z"} , {"fill": "#000000", "path":"M77.6 127.401C77.6 127.401 74.6 129.001 73.4 131.601C73.4 131.601 67 142.201 52.8 145.401C52.8 145.401 29.8 154.401 22 156.401C22 156.401 8.6 161.401 1.2 160.601C1.2 160.601 -5.8 160.801 0.4 162.401C0.4 162.401 20.6 160.401 24 158.601C24 158.601 39.6 153.401 42.6 150.801C45.6 148.201 63.8 143.201 66 141.201C68.2 139.201 78 130.801 77.6 127.401z"} , {"fill": "#000000", "path":"M18.882 158.911C18.882 158.911 24.111 158.685 22.958 160.234C21.805 161.784 19.357 160.91 19.357 160.91L18.882 158.911z"} , {"fill": "#000000", "path":"M11.68 160.263C11.68 160.263 16.908 160.037 15.756 161.586C14.603 163.136 12.155 162.263 12.155 162.263L11.68 160.263z"} , {"fill": "#000000", "path":"M1.251 161.511C1.251 161.511 6.48 161.284 5.327 162.834C4.174 164.383 1.726 163.51 1.726 163.51L1.251 161.511z"} , {"fill": "#000000", "path":"M-6.383 162.055C-6.383 162.055 -1.154 161.829 -2.307 163.378C-3.46 164.928 -5.908 164.054 -5.908 164.054L-6.383 162.055z"} , {"fill": "#000000", "path":"M35.415 151.513C35.415 151.513 42.375 151.212 40.84 153.274C39.306 155.336 36.047 154.174 36.047 154.174L35.415 151.513z"} , {"fill": "#000000", "path":"M45.73 147.088C45.73 147.088 51.689 143.787 51.155 148.849C50.885 151.405 46.362 149.749 46.362 149.749L45.73 147.088z"} , {"fill": "#000000", "path":"M54.862 144.274C54.862 144.274 62.021 140.573 60.287 146.035C59.509 148.485 55.493 146.935 55.493 146.935L54.862 144.274z"} , {"fill": "#000000", "path":"M64.376 139.449C64.376 139.449 68.735 134.548 69.801 141.21C70.207 143.748 65.008 142.11 65.008 142.11L64.376 139.449z"} , {"fill": "#000000", "path":"M26.834 155.997C26.834 155.997 32.062 155.77 30.91 157.32C29.757 158.869 27.308 157.996 27.308 157.996L26.834 155.997z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M62.434 34.603C62.434 34.603 61.708 35.268 61.707 34.197C61.707 33.127 79.191 19.863 88.034 18.479C88.034 18.479 71.935 25.208 62.434 34.603z"} , {"fill": "#000000", "path":"M65.4 98.4C65.4 98.4 87.401 120.801 96.601 124.401C96.601 124.401 105.801 135.601 101.801 161.601C101.801 161.601 98.601 169.201 95.401 148.401C95.401 148.401 98.601 123.201 87.401 139.201C87.401 139.201 79 129.301 85.4 129.601C85.4 129.601 88.601 131.601 89.001 130.001C89.401 128.401 81.4 114.801 64.2 100.4C47 86 65.4 98.4 65.4 98.4z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M7 137.201C7 137.201 6.8 135.401 8.6 136.201C10.4 137.001 104.601 143.201 136.201 167.201C136.201 167.201 91.001 144.001 7 137.201z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M17.4 132.801C17.4 132.801 17.2 131.001 19 131.801C20.8 132.601 157.401 131.601 181.001 164.001C181.001 164.001 159.001 138.801 17.4 132.801z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M29 128.801C29 128.801 28.8 127.001 30.6 127.801C32.4 128.601 205.801 115.601 229.401 148.001C229.401 148.001 219.801 122.401 29 128.801z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M39 124.001C39 124.001 38.8 122.201 40.6 123.001C42.4 123.801 164.601 85.2 188.201 117.601C188.201 117.601 174.801 93 39 124.001z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-19 146.801C-19 146.801 -19.2 145.001 -17.4 145.801C-15.6 146.601 2.2 148.801 4.2 187.601C4.2 187.601 -3 145.601 -19 146.801z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-27.8 148.401C-27.8 148.401 -28 146.601 -26.2 147.401C-24.4 148.201 -10.2 143.601 -13 182.401C-13 182.401 -11.8 147.201 -27.8 148.401z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-35.8 148.801C-35.8 148.801 -36 147.001 -34.2 147.801C-32.4 148.601 -17 149.201 -29.4 171.601C-29.4 171.601 -19.8 147.601 -35.8 148.801z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M11.526 104.465C11.526 104.465 11.082 106.464 12.631 105.247C28.699 92.622 61.141 33.72 116.826 28.086C116.826 28.086 78.518 15.976 11.526 104.465z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M22.726 102.665C22.726 102.665 21.363 101.472 23.231 100.847C25.099 100.222 137.541 27.72 176.826 35.686C176.826 35.686 149.719 28.176 22.726 102.665z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M1.885 108.767C1.885 108.767 1.376 110.366 3.087 109.39C12.062 104.27 15.677 47.059 59.254 45.804C59.254 45.804 26.843 31.09 1.885 108.767z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-18.038 119.793C-18.038 119.793 -19.115 121.079 -17.162 120.825C-6.916 119.493 14.489 78.222 58.928 83.301C58.928 83.301 26.962 68.955 -18.038 119.793z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-6.8 113.667C-6.8 113.667 -7.611 115.136 -5.742 114.511C4.057 111.237 17.141 66.625 61.729 63.078C61.729 63.078 27.603 55.135 -6.8 113.667z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-25.078 124.912C-25.078 124.912 -25.951 125.954 -24.369 125.748C-16.07 124.669 1.268 91.24 37.264 95.354C37.264 95.354 11.371 83.734 -25.078 124.912z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-32.677 130.821C-32.677 130.821 -33.682 131.866 -32.091 131.748C-27.923 131.439 2.715 98.36 21.183 113.862C21.183 113.862 9.168 95.139 -32.677 130.821z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M36.855 98.898C36.855 98.898 35.654 97.543 37.586 97.158C39.518 96.774 160.221 39.061 198.184 51.927C198.184 51.927 172.243 41.053 36.855 98.898z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M3.4 163.201C3.4 163.201 3.2 161.401 5 162.201C6.8 163.001 22.2 163.601 9.8 186.001C9.8 186.001 19.4 162.001 3.4 163.201z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M13.8 161.601C13.8 161.601 13.6 159.801 15.4 160.601C17.2 161.401 35 163.601 37 202.401C37 202.401 29.8 160.401 13.8 161.601z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M20.6 160.001C20.6 160.001 20.4 158.201 22.2 159.001C24 159.801 48.6 163.201 72.2 195.601C72.2 195.601 36.6 158.801 20.6 160.001z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M28.225 157.972C28.225 157.972 27.788 156.214 29.678 156.768C31.568 157.322 52.002 155.423 90.099 189.599C90.099 189.599 43.924 154.656 28.225 157.972z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M38.625 153.572C38.625 153.572 38.188 151.814 40.078 152.368C41.968 152.922 76.802 157.423 128.499 192.399C128.499 192.399 54.324 150.256 38.625 153.572z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-1.8 142.001C-1.8 142.001 -2 140.201 -0.2 141.001C1.6 141.801 55 144.401 85.4 171.201C85.4 171.201 50.499 146.426 -1.8 142.001z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-11.8 146.001C-11.8 146.001 -12 144.201 -10.2 145.001C-8.4 145.801 16.2 149.201 39.8 181.601C39.8 181.601 4.2 144.801 -11.8 146.001z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M49.503 148.962C49.503 148.962 48.938 147.241 50.864 147.655C52.79 148.068 87.86 150.004 141.981 181.098C141.981 181.098 64.317 146.704 49.503 148.962z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M57.903 146.562C57.903 146.562 57.338 144.841 59.264 145.255C61.19 145.668 96.26 147.604 150.381 178.698C150.381 178.698 73.317 143.904 57.903 146.562z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M67.503 141.562C67.503 141.562 66.938 139.841 68.864 140.255C70.79 140.668 113.86 145.004 203.582 179.298C203.582 179.298 82.917 138.904 67.503 141.562z"} , {"fill": "#000000", "path":"M-43.8 148.401C-43.8 148.401 -38.6 148.001 -39.8 149.601C-41 151.201 -43.4 150.401 -43.4 150.401L-43.8 148.401z"} , {"fill": "#000000", "path":"M-13 162.401C-13 162.401 -7.8 162.001 -9 163.601C-10.2 165.201 -12.6 164.401 -12.6 164.401L-13 162.401z"} , {"fill": "#000000", "path":"M-21.8 162.001C-21.8 162.001 -16.6 161.601 -17.8 163.201C-19 164.801 -21.4 164.001 -21.4 164.001L-21.8 162.001z"} , {"fill": "#000000", "path":"M-117.169 150.182C-117.169 150.182 -112.124 151.505 -113.782 152.624C-115.439 153.744 -117.446 152.202 -117.446 152.202L-117.169 150.182z"} , {"fill": "#000000", "path":"M-115.169 140.582C-115.169 140.582 -110.124 141.905 -111.782 143.024C-113.439 144.144 -115.446 142.602 -115.446 142.602L-115.169 140.582z"} , {"fill": "#000000", "path":"M-122.369 136.182C-122.369 136.182 -117.324 137.505 -118.982 138.624C-120.639 139.744 -122.646 138.202 -122.646 138.202L-122.369 136.182z"} , {"fill": "#cccccc", "path":"M-42.6 211.201C-42.6 211.201 -44.2 211.201 -48.2 213.201C-50.2 213.201 -61.4 216.801 -67 226.801C-67 226.801 -54.6 217.201 -42.6 211.201z"} , {"fill": "#cccccc", "path":"M45.116 303.847C45.257 304.105 45.312 304.525 45.604 304.542C46.262 304.582 47.495 304.883 47.37 304.247C46.522 299.941 45.648 295.004 41.515 293.197C40.876 292.918 39.434 293.331 39.36 294.215C39.233 295.739 39.116 297.088 39.425 298.554C39.725 299.975 41.883 299.985 42.8 298.601C43.736 300.273 44.168 302.116 45.116 303.847z"} , {"fill": "#cccccc", "path":"M34.038 308.581C34.786 309.994 34.659 311.853 36.074 312.416C36.814 312.71 38.664 311.735 38.246 310.661C37.444 308.6 37.056 306.361 35.667 304.55C35.467 304.288 35.707 303.755 35.547 303.427C34.953 302.207 33.808 301.472 32.4 301.801C31.285 304.004 32.433 306.133 33.955 307.842C34.091 307.994 33.925 308.37 34.038 308.581z"} , {"fill": "#cccccc", "path":"M-5.564 303.391C-5.672 303.014 -5.71 302.551 -5.545 302.23C-5.014 301.197 -4.221 300.075 -4.558 299.053C-4.906 297.997 -6.022 298.179 -6.672 298.748C-7.807 299.742 -7.856 301.568 -8.547 302.927C-8.743 303.313 -8.692 303.886 -9.133 304.277C-9.607 304.698 -10.047 306.222 -9.951 306.793C-9.898 307.106 -10.081 317.014 -9.859 316.751C-9.24 316.018 -6.19 306.284 -6.121 305.392C-6.064 304.661 -5.332 304.196 -5.564 303.391z"} , {"fill": "#cccccc", "path":"M-31.202 296.599C-28.568 294.1 -25.778 291.139 -26.22 287.427C-26.336 286.451 -28.111 286.978 -28.298 287.824C-29.1 291.449 -31.139 294.11 -33.707 296.502C-35.903 298.549 -37.765 304.893 -38 305.401C-34.303 300.145 -32.046 297.399 -31.202 296.599z"} , {"fill": "#cccccc", "path":"M-44.776 290.635C-44.253 290.265 -44.555 289.774 -44.338 289.442C-43.385 287.984 -42.084 286.738 -42.066 285C-42.063 284.723 -42.441 284.414 -42.776 284.638C-43.053 284.822 -43.395 284.952 -43.503 285.082C-45.533 287.531 -46.933 290.202 -48.376 293.014C-48.559 293.371 -49.703 297.862 -49.39 297.973C-49.151 298.058 -47.431 293.877 -47.221 293.763C-45.958 293.077 -45.946 291.462 -44.776 290.635z"} , {"fill": "#cccccc", "path":"M-28.043 310.179C-27.599 309.31 -26.023 308.108 -26.136 307.219C-26.254 306.291 -25.786 304.848 -26.698 305.536C-27.955 306.484 -31.404 307.833 -31.674 313.641C-31.7 314.212 -28.726 311.519 -28.043 310.179z"} , {"fill": "#cccccc", "path":"M-13.6 293.001C-13.2 292.333 -12.492 292.806 -12.033 292.543C-11.385 292.171 -10.774 291.613 -10.482 290.964C-9.512 288.815 -7.743 286.995 -7.6 284.601C-9.091 283.196 -9.77 285.236 -10.4 286.201C-11.723 284.554 -12.722 286.428 -14.022 286.947C-14.092 286.975 -14.305 286.628 -14.38 286.655C-15.557 287.095 -16.237 288.176 -17.235 288.957C-17.406 289.091 -17.811 288.911 -17.958 289.047C-18.61 289.65 -19.583 289.975 -19.863 290.657C-20.973 293.364 -24.113 295.459 -26 303.001C-25.619 303.91 -21.488 296.359 -21.001 295.661C-20.165 294.465 -20.047 297.322 -18.771 296.656C-18.72 296.629 -18.534 296.867 -18.4 297.001C-18.206 296.721 -17.988 296.492 -17.6 296.601C-17.6 296.201 -17.734 295.645 -17.533 295.486C-16.296 294.509 -16.38 293.441 -15.6 292.201C-15.142 292.99 -14.081 292.271 -13.6 293.001z"} , {"fill": "#cccccc", "path":"M46.2 347.401C46.2 347.401 53.6 327.001 49.2 315.801C49.2 315.801 60.6 337.401 56 348.601C56 348.601 55.6 338.201 51.6 333.201C51.6 333.201 47.6 346.001 46.2 347.401z"} , {"fill": "#cccccc", "path":"M31.4 344.801C31.4 344.801 36.8 336.001 28.8 317.601C28.8 317.601 28 338.001 21.2 349.001C21.2 349.001 35.4 328.801 31.4 344.801z"} , {"fill": "#cccccc", "path":"M21.4 342.801C21.4 342.801 21.2 322.801 21.6 319.801C21.6 319.801 17.8 336.401 7.6 346.001C7.6 346.001 22 334.001 21.4 342.801z"} , {"fill": "#cccccc", "path":"M11.8 310.801C11.8 310.801 17.8 324.401 7.8 342.801C7.8 342.801 14.2 330.601 9.4 323.601C9.4 323.601 12 320.201 11.8 310.801z"} , {"fill": "#cccccc", "path":"M-7.4 342.401C-7.4 342.401 -8.4 326.801 -6.6 324.601C-6.6 324.601 -6.4 318.201 -6.8 317.201C-6.8 317.201 -2.8 311.001 -2.6 318.401C-2.6 318.401 -1.2 326.201 1.6 330.801C1.6 330.801 5.2 336.201 5 342.601C5 342.601 -5 312.401 -7.4 342.401z"} , {"fill": "#cccccc", "path":"M-11 314.801C-11 314.801 -17.6 325.601 -19.4 344.601C-19.4 344.601 -20.8 338.401 -17 324.001C-17 324.001 -12.8 308.601 -11 314.801z"} , {"fill": "#cccccc", "path":"M-32.8 334.601C-32.8 334.601 -27.8 329.201 -26.4 324.201C-26.4 324.201 -22.8 308.401 -29.2 317.001C-29.2 317.001 -29 325.001 -37.2 332.401C-37.2 332.401 -32.4 330.001 -32.8 334.601z"} , {"fill": "#cccccc", "path":"M-38.6 329.601C-38.6 329.601 -35.2 312.201 -34.4 311.401C-34.4 311.401 -32.6 308.001 -35.4 311.201C-35.4 311.201 -44.2 330.401 -48.2 337.001C-48.2 337.001 -40.2 327.801 -38.6 329.601z"} , {"fill": "#cccccc", "path":"M-44.4 313.001C-44.4 313.001 -32.8 290.601 -54.6 316.401C-54.6 316.401 -43.6 306.601 -44.4 313.001z"} , {"fill": "#cccccc", "path":"M-59.8 298.401C-59.8 298.401 -55 279.601 -52.4 279.801C-52.4 279.801 -44.2 270.801 -50.8 281.401C-50.8 281.401 -56.8 291.001 -56.2 300.801C-56.2 300.801 -56.8 291.201 -59.8 298.401z"} , {"fill": "#cccccc", "path":"M270.5 287C270.5 287 258.5 277 256 273.5C256 273.5 269.5 292 269.5 299C269.5 299 272 291.5 270.5 287z"} , {"fill": "#cccccc", "path":"M276 265C276 265 255 250 251.5 242.5C251.5 242.5 278 272 278 276.5C278 276.5 278.5 267.5 276 265z"} , {"fill": "#cccccc", "path":"M293 111C293 111 281 103 279.5 105C279.5 105 290 111.5 292.5 120C292.5 120 291 111 293 111z"} , {"fill": "#cccccc", "path":"M301.5 191.5L284 179.5C284 179.5 303 196.5 303.5 200.5L301.5 191.5z"} , {"stroke":"#000000", "path":"M-89.25 169L-67.25 173.75"} , {"stroke":"#000000", "path":"M-39 331C-39 331 -39.5 327.5 -48.5 338"} , {"stroke":"#000000", "path":"M-33.5 336C-33.5 336 -31.5 329.5 -38 334"} , {"stroke":"#000000", "path":"M20.5 344.5C20.5 344.5 22 333.5 10.5 346.5"} ];PyQt5_gpl-5.10.1/examples/quick/canvas/tiger/tiger.qml0000644000076500000240000001140013245231431022637 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import "../contents" import "tiger.js" as Tiger Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Tiger with SVG path"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 antialiasing: true property string strokeStyle:"steelblue" property string fillStyle:"yellow" property bool fill:true property bool stroke:true property real alpha:alphaCtrl.value property real scaleX : scaleXCtrl.value property real scaleY : scaleYCtrl.value property real rotate : rotateCtrl.value property int frame:0 onFillChanged: requestPaint(); onStrokeChanged: requestPaint(); onAlphaChanged: requestPaint(); onScaleXChanged: requestPaint(); onScaleYChanged: requestPaint(); onRotateChanged: requestPaint(); onPainted : { canvas.frame++; if (canvas.frame < Tiger.tiger.length) requestPaint(); } onPaint: { var ctx = canvas.getContext('2d'); ctx.save(); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.globalAlpha = canvas.alpha; ctx.scale(canvas.scaleX, canvas.scaleY); ctx.rotate(canvas.rotate); ctx.globalCompositeOperation = "source-over"; ctx.translate(canvas.width/2, canvas.height/2); ctx.strokeStyle = Qt.rgba(.3, .3, .3,1); ctx.lineWidth = 1; //! [0] for (var i = 0; i < canvas.frame && i < Tiger.tiger.length; i++) { if (Tiger.tiger[i].width != undefined) ctx.lineWidth = Tiger.tiger[i].width; if (Tiger.tiger[i].path != undefined) ctx.path = Tiger.tiger[i].path; if (Tiger.tiger[i].fill != undefined) { ctx.fillStyle = Tiger.tiger[i].fill; ctx.fill(); } if (Tiger.tiger[i].stroke != undefined) { ctx.strokeStyle = Tiger.tiger[i].stroke; ctx.stroke(); } } //! [0] ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:scaleXCtrl; width:300; height:20; min:0.1; max:10; init:0.5; name:"ScaleX"} Slider {id:scaleYCtrl; width:300; height:20; min:0.1; max:10; init:0.5; name:"ScaleY"} Slider {id:rotateCtrl; width:300; height:20; min:0; max:Math.PI*2; init:0; name:"Rotate"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } PyQt5_gpl-5.10.1/examples/quick/models/0000755000076500000240000000000013245231431017714 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/models/abstractitemmodel/0000755000076500000240000000000013245231431023417 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/models/abstractitemmodel/abstractitemmodel.py0000644000076500000240000000734413245231431027504 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2016 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QAbstractListModel, QModelIndex, Qt, QUrl, QVariant from PyQt5.QtGui import QGuiApplication from PyQt5.QtQuick import QQuickView import abstractitemmodel_rc class Animal(object): def __init__(self, type, size): self._type = type self._size = size def type(self): return self._type def size(self): return self._size class AnimalModel(QAbstractListModel): TypeRole = Qt.UserRole + 1 SizeRole = Qt.UserRole + 2 _roles = {TypeRole: b"type", SizeRole: b"size"} def __init__(self, parent=None): super(AnimalModel, self).__init__(parent) self._animals = [] def addAnimal(self, animal): self.beginInsertRows(QModelIndex(), self.rowCount(), self.rowCount()) self._animals.append(animal) self.endInsertRows() def rowCount(self, parent=QModelIndex()): return len(self._animals) def data(self, index, role=Qt.DisplayRole): try: animal = self._animals[index.row()] except IndexError: return QVariant() if role == self.TypeRole: return animal.type() if role == self.SizeRole: return animal.size() return QVariant() def roleNames(self): return self._roles if __name__ == '__main__': import sys app = QGuiApplication(sys.argv) model = AnimalModel() model.addAnimal(Animal("Wolf", "Medium")) model.addAnimal(Animal("Polar bear", "Large")) model.addAnimal(Animal("Quoll", "Small")) view = QQuickView() view.setResizeMode(QQuickView.SizeRootObjectToView) ctxt = view.rootContext() ctxt.setContextProperty('myModel', model) view.setSource(QUrl('qrc:view.qml')) view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/quick/models/abstractitemmodel/abstractitemmodel.qrc0000644000076500000240000000013513245231431027630 0ustar philstaff00000000000000 view.qml PyQt5_gpl-5.10.1/examples/quick/models/abstractitemmodel/abstractitemmodel_rc.py0000644000076500000240000002354413245231431030170 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created by: The Resource Compiler for PyQt5 (Qt v5.8.0) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x08\x67\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x69\x6d\x70\x6f\x72\x74\x20\ \x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x2f\x2f\x21\ \x5b\x30\x5d\x0a\x4c\x69\x73\x74\x56\x69\x65\x77\x20\x7b\x0a\x20\ \x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x32\x30\x30\x3b\x20\x68\ \x65\x69\x67\x68\x74\x3a\x20\x32\x35\x30\x0a\x0a\x20\x20\x20\x20\ \x6d\x6f\x64\x65\x6c\x3a\x20\x6d\x79\x4d\x6f\x64\x65\x6c\x0a\x20\ \x20\x20\x20\x64\x65\x6c\x65\x67\x61\x74\x65\x3a\x20\x54\x65\x78\ \x74\x20\x7b\x20\x74\x65\x78\x74\x3a\x20\x22\x41\x6e\x69\x6d\x61\ \x6c\x3a\x20\x22\x20\x2b\x20\x74\x79\x70\x65\x20\x2b\x20\x22\x2c\ \x20\x22\x20\x2b\x20\x73\x69\x7a\x65\x20\x7d\x0a\x7d\x0a\x2f\x2f\ \x21\x5b\x30\x5d\x0a\x0a\ " qt_resource_name = b"\ \x00\x08\ \x0f\xca\x5b\xbc\ \x00\x76\ \x00\x69\x00\x65\x00\x77\x00\x2e\x00\x71\x00\x6d\x00\x6c\ " qt_resource_struct_v1 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " qt_resource_struct_v2 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ " qt_version = QtCore.qVersion().split('.') if qt_version < ['5', '8', '0']: rcc_version = 1 qt_resource_struct = qt_resource_struct_v1 else: rcc_version = 2 qt_resource_struct = qt_resource_struct_v2 def qInitResources(): QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt5_gpl-5.10.1/examples/quick/models/abstractitemmodel/view.qml0000644000076500000240000000414713245231431025112 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 //![0] ListView { width: 200; height: 250 model: myModel delegate: Text { text: "Animal: " + type + ", " + size } } //![0] PyQt5_gpl-5.10.1/examples/quick/models/objectlistmodel/0000755000076500000240000000000013245231431023077 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/models/objectlistmodel/objectlistmodel.py0000644000076500000240000000654013245231431026641 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import pyqtProperty, pyqtSignal, QObject, QUrl from PyQt5.QtGui import QGuiApplication from PyQt5.QtQuick import QQuickView import objectlistmodel_rc class DataObject(QObject): nameChanged = pyqtSignal() @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @name.setter def name(self, name): if self._name != name: self._name = name self.nameChanged.emit() colorChanged = pyqtSignal() @pyqtProperty(str, notify=colorChanged) def color(self): return self._color @color.setter def color(self, color): if self._color != color: self._color = color self.colorChanged.emit() def __init__(self, name='', color='', parent=None): super(DataObject, self).__init__(parent) self._name = name self._color = color if __name__ == '__main__': import sys app = QGuiApplication(sys.argv) dataList = [DataObject("Item 1", 'red'), DataObject("Item 2", 'green'), DataObject("Item 3", 'blue'), DataObject("Item 4", 'yellow')] view = QQuickView() view.setResizeMode(QQuickView.SizeRootObjectToView) ctxt = view.rootContext() ctxt.setContextProperty('myModel', dataList) view.setSource(QUrl('qrc:view.qml')) view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/quick/models/objectlistmodel/objectlistmodel.qrc0000644000076500000240000000013413245231431026767 0ustar philstaff00000000000000 view.qml PyQt5_gpl-5.10.1/examples/quick/models/objectlistmodel/objectlistmodel_rc.py0000644000076500000240000002422613245231431027326 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created by: The Resource Compiler for PyQt5 (Qt v5.8.0) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x08\xb1\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x2f\x2f\ \x21\x5b\x30\x5d\x0a\x4c\x69\x73\x74\x56\x69\x65\x77\x20\x7b\x0a\ \x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x31\x30\x30\x3b\x20\ \x68\x65\x69\x67\x68\x74\x3a\x20\x31\x30\x30\x0a\x0a\x20\x20\x20\ \x20\x6d\x6f\x64\x65\x6c\x3a\x20\x6d\x79\x4d\x6f\x64\x65\x6c\x0a\ \x20\x20\x20\x20\x64\x65\x6c\x65\x67\x61\x74\x65\x3a\x20\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x32\x35\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x31\x30\x30\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x6d\ \x6f\x64\x65\x6c\x2e\x6d\x6f\x64\x65\x6c\x44\x61\x74\x61\x2e\x63\ \x6f\x6c\x6f\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x65\x78\ \x74\x20\x7b\x20\x74\x65\x78\x74\x3a\x20\x6e\x61\x6d\x65\x20\x7d\ \x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\x2f\x2f\x21\x5b\x30\x5d\x0a\ \ " qt_resource_name = b"\ \x00\x08\ \x0f\xca\x5b\xbc\ \x00\x76\ \x00\x69\x00\x65\x00\x77\x00\x2e\x00\x71\x00\x6d\x00\x6c\ " qt_resource_struct_v1 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " qt_resource_struct_v2 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ " qt_version = QtCore.qVersion().split('.') if qt_version < ['5', '8', '0']: rcc_version = 1 qt_resource_struct = qt_resource_struct_v1 else: rcc_version = 2 qt_resource_struct = qt_resource_struct_v2 def qInitResources(): QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt5_gpl-5.10.1/examples/quick/models/objectlistmodel/view.qml0000644000076500000240000000426113245231431024567 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 //![0] ListView { width: 100; height: 100 model: myModel delegate: Rectangle { height: 25 width: 100 color: model.modelData.color Text { text: name } } } //![0] PyQt5_gpl-5.10.1/examples/quick/models/stringlistmodel/0000755000076500000240000000000013245231431023137 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/models/stringlistmodel/stringlistmodel.py0000644000076500000240000000455413245231431026744 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import QUrl from PyQt5.QtGui import QGuiApplication from PyQt5.QtQuick import QQuickView import stringlistmodel_rc app = QGuiApplication(sys.argv) dataList = ["Item 1", "Item 2", "Item 3", "Item 4"] view = QQuickView() ctxt = view.rootContext() ctxt.setContextProperty('myModel', dataList) view.setSource(QUrl('qrc:view.qml')) view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/quick/models/stringlistmodel/stringlistmodel.qrc0000644000076500000240000000013413245231431027067 0ustar philstaff00000000000000 view.qml PyQt5_gpl-5.10.1/examples/quick/models/stringlistmodel/stringlistmodel_rc.py0000644000076500000240000002402213245231431027420 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created by: The Resource Compiler for PyQt5 (Qt v5.8.0) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x08\x91\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x2f\x2f\x21\ \x5b\x30\x5d\x0a\x0a\x4c\x69\x73\x74\x56\x69\x65\x77\x20\x7b\x0a\ \x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x31\x30\x30\x3b\x20\ \x68\x65\x69\x67\x68\x74\x3a\x20\x31\x30\x30\x0a\x0a\x20\x20\x20\ \x20\x6d\x6f\x64\x65\x6c\x3a\x20\x6d\x79\x4d\x6f\x64\x65\x6c\x0a\ \x20\x20\x20\x20\x64\x65\x6c\x65\x67\x61\x74\x65\x3a\x20\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x32\x35\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x31\x30\x30\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x20\x74\ \x65\x78\x74\x3a\x20\x6d\x6f\x64\x65\x6c\x44\x61\x74\x61\x20\x7d\ \x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\x2f\x2f\x21\x5b\x30\x5d\x0a\ \ " qt_resource_name = b"\ \x00\x08\ \x0f\xca\x5b\xbc\ \x00\x76\ \x00\x69\x00\x65\x00\x77\x00\x2e\x00\x71\x00\x6d\x00\x6c\ " qt_resource_struct_v1 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " qt_resource_struct_v2 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ " qt_version = QtCore.qVersion().split('.') if qt_version < ['5', '8', '0']: rcc_version = 1 qt_resource_struct = qt_resource_struct_v1 else: rcc_version = 2 qt_resource_struct = qt_resource_struct_v2 def qInitResources(): QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt5_gpl-5.10.1/examples/quick/models/stringlistmodel/view.qml0000644000076500000240000000422113245231431024623 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 //![0] ListView { width: 100; height: 100 model: myModel delegate: Rectangle { height: 25 width: 100 Text { text: modelData } } } //![0] PyQt5_gpl-5.10.1/examples/quick/README0000644000076500000240000000124513245231431017313 0ustar philstaff00000000000000PyQt's QtQuick module provides the framework to execute programs written in QML. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/quick/scenegraph/0000755000076500000240000000000013245231431020550 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/scenegraph/customgeometry/0000755000076500000240000000000013245231431023636 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/scenegraph/customgeometry/customgeometry.py0000644000076500000240000001342713245231431027305 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import pyqtProperty, pyqtSignal, QPointF, QUrl from PyQt5.QtGui import QColor, QGuiApplication from PyQt5.QtQml import qmlRegisterType from PyQt5.QtQuick import (QQuickItem, QQuickView, QSGFlatColorMaterial, QSGGeometry, QSGGeometryNode, QSGNode) import customgeometry_rc class BezierCurve(QQuickItem): p1Changed = pyqtSignal(QPointF) @pyqtProperty(QPointF, notify=p1Changed) def p1(self): return self._p1 @p1.setter def p1(self, p): if self._p1 != p: self._p1 = QPointF(p) self.p1Changed.emit(p) self.update() p2Changed = pyqtSignal(QPointF) @pyqtProperty(QPointF, notify=p2Changed) def p2(self): return self._p2 @p2.setter def p2(self, p): if self._p2 != p: self._p2 = QPointF(p) self.p2Changed.emit(p) self.update() p3Changed = pyqtSignal(QPointF) @pyqtProperty(QPointF, notify=p3Changed) def p3(self): return self._p3 @p3.setter def p3(self, p): if self._p3 != p: self._p3 = QPointF(p) self.p3Changed.emit(p) self.update() p4Changed = pyqtSignal(QPointF) @pyqtProperty(QPointF, notify=p4Changed) def p4(self): return self._p4 @p4.setter def p4(self, p): if self._p4 != p: self._p4 = QPointF(p) self.p4Changed.emit(p) self.update() segmentCountChanged = pyqtSignal(int) @pyqtProperty(int, notify=segmentCountChanged) def segmentCount(self): return self._segmentCount @segmentCount.setter def segmentCount(self, count): if self._segmentCount != count: self._segmentCount = count self.segmentCountChanged.emit(count) self.update() def __init__(self, parent=None): super(BezierCurve, self).__init__(parent) self._p1 = QPointF(0, 0) self._p2 = QPointF(1, 0) self._p3 = QPointF(0, 1) self._p4 = QPointF(1, 1) self._segmentCount = 32 self._root_node = None self.setFlag(QQuickItem.ItemHasContents, True) def updatePaintNode(self, oldNode, nodeData): if self._root_node is None: self._root_node = QSGGeometryNode() geometry = QSGGeometry(QSGGeometry.defaultAttributes_Point2D(), self._segmentCount) geometry.setLineWidth(2) geometry.setDrawingMode(QSGGeometry.GL_LINE_STRIP) self._root_node.setGeometry(geometry) self._root_node.setFlag(QSGNode.OwnsGeometry) material = QSGFlatColorMaterial() material.setColor(QColor(255, 0, 0)) self._root_node.setMaterial(material) self._root_node.setFlag(QSGNode.OwnsMaterial) else: geometry = self._root_node.geometry() geometry.allocate(self._segmentCount) w = self.width() h = self.height() vertices = geometry.vertexDataAsPoint2D() for i in range(self._segmentCount): t = i / float(self._segmentCount - 1) invt = 1 - t pos = invt * invt * invt * self._p1 \ + 3 * invt * invt * t * self._p2 \ + 3 * invt * t * t * self._p3 \ + t * t * t * self._p4 vertices[i].set(pos.x() * w, pos.y() * h) self._root_node.markDirty(QSGNode.DirtyGeometry) return self._root_node if __name__ == '__main__': import sys app = QGuiApplication(sys.argv) qmlRegisterType(BezierCurve, "CustomGeometry", 1, 0, "BezierCurve") view = QQuickView() format = view.format() format.setSamples(16) view.setFormat(format) view.setSource(QUrl('qrc:///scenegraph/customgeometry/main.qml')) view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/quick/scenegraph/customgeometry/customgeometry.qrc0000644000076500000240000000016013245231431027430 0ustar philstaff00000000000000 main.qml PyQt5_gpl-5.10.1/examples/quick/scenegraph/customgeometry/customgeometry_rc.py0000644000076500000240000003135413245231431027770 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created by: The Resource Compiler for PyQt5 (Qt v5.8.0) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x0a\xac\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x64\x65\x6d\x6f\x6e\x73\x74\x72\ \x61\x74\x69\x6f\x6e\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\ \x6e\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\ \x6c\x6b\x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\ \x42\x45\x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x4c\x47\ \x50\x4c\x24\x0a\x2a\x2a\x20\x43\x6f\x6d\x6d\x65\x72\x63\x69\x61\ \x6c\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\x55\x73\x61\x67\x65\x0a\ \x2a\x2a\x20\x4c\x69\x63\x65\x6e\x73\x65\x65\x73\x20\x68\x6f\x6c\ \x64\x69\x6e\x67\x20\x76\x61\x6c\x69\x64\x20\x63\x6f\x6d\x6d\x65\ \x72\x63\x69\x61\x6c\x20\x51\x74\x20\x6c\x69\x63\x65\x6e\x73\x65\ \x73\x20\x6d\x61\x79\x20\x75\x73\x65\x20\x74\x68\x69\x73\x20\x66\ \x69\x6c\x65\x20\x69\x6e\x0a\x2a\x2a\x20\x61\x63\x63\x6f\x72\x64\ \x61\x6e\x63\x65\x20\x77\x69\x74\x68\x20\x74\x68\x65\x20\x63\x6f\ \x6d\x6d\x65\x72\x63\x69\x61\x6c\x20\x6c\x69\x63\x65\x6e\x73\x65\ \x20\x61\x67\x72\x65\x65\x6d\x65\x6e\x74\x20\x70\x72\x6f\x76\x69\ \x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\x65\x0a\x2a\x2a\x20\ \x53\x6f\x66\x74\x77\x61\x72\x65\x20\x6f\x72\x2c\x20\x61\x6c\x74\ \x65\x72\x6e\x61\x74\x69\x76\x65\x6c\x79\x2c\x20\x69\x6e\x20\x61\ \x63\x63\x6f\x72\x64\x61\x6e\x63\x65\x20\x77\x69\x74\x68\x20\x74\ \x68\x65\x20\x74\x65\x72\x6d\x73\x20\x63\x6f\x6e\x74\x61\x69\x6e\ \x65\x64\x20\x69\x6e\x0a\x2a\x2a\x20\x61\x20\x77\x72\x69\x74\x74\ \x65\x6e\x20\x61\x67\x72\x65\x65\x6d\x65\x6e\x74\x20\x62\x65\x74\ \x77\x65\x65\x6e\x20\x79\x6f\x75\x20\x61\x6e\x64\x20\x44\x69\x67\ \x69\x61\x2e\x20\x20\x46\x6f\x72\x20\x6c\x69\x63\x65\x6e\x73\x69\ \x6e\x67\x20\x74\x65\x72\x6d\x73\x20\x61\x6e\x64\x0a\x2a\x2a\x20\ \x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x73\x65\x65\x20\x68\ \x74\x74\x70\x3a\x2f\x2f\x71\x74\x2e\x64\x69\x67\x69\x61\x2e\x63\ \x6f\x6d\x2f\x6c\x69\x63\x65\x6e\x73\x69\x6e\x67\x2e\x20\x20\x46\ \x6f\x72\x20\x66\x75\x72\x74\x68\x65\x72\x20\x69\x6e\x66\x6f\x72\ \x6d\x61\x74\x69\x6f\x6e\x0a\x2a\x2a\x20\x75\x73\x65\x20\x74\x68\ \x65\x20\x63\x6f\x6e\x74\x61\x63\x74\x20\x66\x6f\x72\x6d\x20\x61\ \x74\x20\x68\x74\x74\x70\x3a\x2f\x2f\x71\x74\x2e\x64\x69\x67\x69\ \x61\x2e\x63\x6f\x6d\x2f\x63\x6f\x6e\x74\x61\x63\x74\x2d\x75\x73\ \x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x47\x4e\x55\x20\x4c\x65\x73\x73\ \x65\x72\x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\ \x63\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\x55\x73\x61\x67\x65\x0a\ \x2a\x2a\x20\x41\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\x65\x6c\x79\ \x2c\x20\x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x6d\x61\x79\x20\ \x62\x65\x20\x75\x73\x65\x64\x20\x75\x6e\x64\x65\x72\x20\x74\x68\ \x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x47\ \x4e\x55\x20\x4c\x65\x73\x73\x65\x72\x0a\x2a\x2a\x20\x47\x65\x6e\ \x65\x72\x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\ \x6e\x73\x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x32\x2e\x31\x20\ \x61\x73\x20\x70\x75\x62\x6c\x69\x73\x68\x65\x64\x20\x62\x79\x20\ \x74\x68\x65\x20\x46\x72\x65\x65\x20\x53\x6f\x66\x74\x77\x61\x72\ \x65\x0a\x2a\x2a\x20\x46\x6f\x75\x6e\x64\x61\x74\x69\x6f\x6e\x20\ \x61\x6e\x64\x20\x61\x70\x70\x65\x61\x72\x69\x6e\x67\x20\x69\x6e\ \x20\x74\x68\x65\x20\x66\x69\x6c\x65\x20\x4c\x49\x43\x45\x4e\x53\ \x45\x2e\x4c\x47\x50\x4c\x20\x69\x6e\x63\x6c\x75\x64\x65\x64\x20\ \x69\x6e\x20\x74\x68\x65\x0a\x2a\x2a\x20\x70\x61\x63\x6b\x61\x67\ \x69\x6e\x67\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x66\x69\x6c\x65\ \x2e\x20\x20\x50\x6c\x65\x61\x73\x65\x20\x72\x65\x76\x69\x65\x77\ \x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x69\ \x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x74\x6f\x0a\x2a\x2a\ \x20\x65\x6e\x73\x75\x72\x65\x20\x74\x68\x65\x20\x47\x4e\x55\x20\ \x4c\x65\x73\x73\x65\x72\x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x50\ \x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\x76\x65\ \x72\x73\x69\x6f\x6e\x20\x32\x2e\x31\x20\x72\x65\x71\x75\x69\x72\ \x65\x6d\x65\x6e\x74\x73\x0a\x2a\x2a\x20\x77\x69\x6c\x6c\x20\x62\ \x65\x20\x6d\x65\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\ \x77\x2e\x67\x6e\x75\x2e\x6f\x72\x67\x2f\x6c\x69\x63\x65\x6e\x73\ \x65\x73\x2f\x6f\x6c\x64\x2d\x6c\x69\x63\x65\x6e\x73\x65\x73\x2f\ \x6c\x67\x70\x6c\x2d\x32\x2e\x31\x2e\x68\x74\x6d\x6c\x2e\x0a\x2a\ \x2a\x0a\x2a\x2a\x20\x49\x6e\x20\x61\x64\x64\x69\x74\x69\x6f\x6e\ \x2c\x20\x61\x73\x20\x61\x20\x73\x70\x65\x63\x69\x61\x6c\x20\x65\ \x78\x63\x65\x70\x74\x69\x6f\x6e\x2c\x20\x44\x69\x67\x69\x61\x20\ \x67\x69\x76\x65\x73\x20\x79\x6f\x75\x20\x63\x65\x72\x74\x61\x69\ \x6e\x20\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x0a\x2a\x2a\x20\ \x72\x69\x67\x68\x74\x73\x2e\x20\x20\x54\x68\x65\x73\x65\x20\x72\ \x69\x67\x68\x74\x73\x20\x61\x72\x65\x20\x64\x65\x73\x63\x72\x69\ \x62\x65\x64\x20\x69\x6e\x20\x74\x68\x65\x20\x44\x69\x67\x69\x61\ \x20\x51\x74\x20\x4c\x47\x50\x4c\x20\x45\x78\x63\x65\x70\x74\x69\ \x6f\x6e\x0a\x2a\x2a\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x31\x2e\ \x31\x2c\x20\x69\x6e\x63\x6c\x75\x64\x65\x64\x20\x69\x6e\x20\x74\ \x68\x65\x20\x66\x69\x6c\x65\x20\x4c\x47\x50\x4c\x5f\x45\x58\x43\ \x45\x50\x54\x49\x4f\x4e\x2e\x74\x78\x74\x20\x69\x6e\x20\x74\x68\ \x69\x73\x20\x70\x61\x63\x6b\x61\x67\x65\x2e\x0a\x2a\x2a\x0a\x2a\ \x2a\x20\x47\x4e\x55\x20\x47\x65\x6e\x65\x72\x61\x6c\x20\x50\x75\ \x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\x55\x73\x61\ \x67\x65\x0a\x2a\x2a\x20\x41\x6c\x74\x65\x72\x6e\x61\x74\x69\x76\ \x65\x6c\x79\x2c\x20\x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x6d\ \x61\x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x75\x6e\x64\x65\x72\ \x20\x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\ \x65\x20\x47\x4e\x55\x0a\x2a\x2a\x20\x47\x65\x6e\x65\x72\x61\x6c\ \x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\ \x76\x65\x72\x73\x69\x6f\x6e\x20\x33\x2e\x30\x20\x61\x73\x20\x70\ \x75\x62\x6c\x69\x73\x68\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\ \x46\x72\x65\x65\x20\x53\x6f\x66\x74\x77\x61\x72\x65\x0a\x2a\x2a\ \x20\x46\x6f\x75\x6e\x64\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x20\ \x61\x70\x70\x65\x61\x72\x69\x6e\x67\x20\x69\x6e\x20\x74\x68\x65\ \x20\x66\x69\x6c\x65\x20\x4c\x49\x43\x45\x4e\x53\x45\x2e\x47\x50\ \x4c\x20\x69\x6e\x63\x6c\x75\x64\x65\x64\x20\x69\x6e\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x70\x61\x63\x6b\x61\x67\x69\x6e\x67\x20\x6f\ \x66\x20\x74\x68\x69\x73\x20\x66\x69\x6c\x65\x2e\x20\x20\x50\x6c\ \x65\x61\x73\x65\x20\x72\x65\x76\x69\x65\x77\x20\x74\x68\x65\x20\ \x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x69\x6e\x66\x6f\x72\x6d\ \x61\x74\x69\x6f\x6e\x20\x74\x6f\x0a\x2a\x2a\x20\x65\x6e\x73\x75\ \x72\x65\x20\x74\x68\x65\x20\x47\x4e\x55\x20\x47\x65\x6e\x65\x72\ \x61\x6c\x20\x50\x75\x62\x6c\x69\x63\x20\x4c\x69\x63\x65\x6e\x73\ \x65\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x33\x2e\x30\x20\x72\x65\ \x71\x75\x69\x72\x65\x6d\x65\x6e\x74\x73\x20\x77\x69\x6c\x6c\x20\ \x62\x65\x0a\x2a\x2a\x20\x6d\x65\x74\x3a\x20\x68\x74\x74\x70\x3a\ \x2f\x2f\x77\x77\x77\x2e\x67\x6e\x75\x2e\x6f\x72\x67\x2f\x63\x6f\ \x70\x79\x6c\x65\x66\x74\x2f\x67\x70\x6c\x2e\x68\x74\x6d\x6c\x2e\ \x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\ \x44\x5f\x4c\x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\ \x6f\x72\x74\x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\ \x69\x6d\x70\x6f\x72\x74\x20\x43\x75\x73\x74\x6f\x6d\x47\x65\x6f\ \x6d\x65\x74\x72\x79\x20\x31\x2e\x30\x0a\x0a\x49\x74\x65\x6d\x20\ \x7b\x0a\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x33\x30\x30\ \x0a\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x32\x30\x30\ \x0a\x0a\x20\x20\x20\x20\x42\x65\x7a\x69\x65\x72\x43\x75\x72\x76\ \x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\ \x6c\x69\x6e\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\ \x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\ \x73\x2e\x6d\x61\x72\x67\x69\x6e\x73\x3a\x20\x32\x30\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\ \x72\x65\x61\x6c\x20\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x53\ \x65\x71\x75\x65\x6e\x74\x69\x61\x6c\x41\x6e\x69\x6d\x61\x74\x69\ \x6f\x6e\x20\x6f\x6e\x20\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\x72\x41\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x20\x7b\x20\x74\x6f\x3a\x20\x31\x3b\x20\x64\ \x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x32\x30\x30\x30\x3b\x20\x65\ \x61\x73\x69\x6e\x67\x2e\x74\x79\x70\x65\x3a\x20\x45\x61\x73\x69\ \x6e\x67\x2e\x49\x6e\x4f\x75\x74\x51\x75\x61\x64\x20\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4e\x75\x6d\x62\x65\ \x72\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x74\x6f\x3a\ \x20\x30\x3b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\x32\x30\ \x30\x30\x3b\x20\x65\x61\x73\x69\x6e\x67\x2e\x74\x79\x70\x65\x3a\ \x20\x45\x61\x73\x69\x6e\x67\x2e\x49\x6e\x4f\x75\x74\x51\x75\x61\ \x64\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x6c\x6f\x6f\x70\x73\x3a\x20\x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\ \x2e\x49\x6e\x66\x69\x6e\x69\x74\x65\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x32\x3a\ \x20\x51\x74\x2e\x70\x6f\x69\x6e\x74\x28\x74\x2c\x20\x31\x20\x2d\ \x20\x74\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x70\x33\x3a\x20\ \x51\x74\x2e\x70\x6f\x69\x6e\x74\x28\x31\x20\x2d\x20\x74\x2c\x20\ \x74\x29\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x54\x65\ \x78\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\ \x68\x6f\x72\x73\x2e\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x6c\x69\x6e\ \x65\x2e\x62\x6f\x74\x74\x6f\x6d\x0a\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x78\x3a\x20\x32\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x77\x69\x64\x74\x68\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x77\x69\ \x64\x74\x68\x20\x2d\x20\x34\x30\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x77\x72\x61\x70\x4d\x6f\x64\x65\x3a\x20\x54\x65\x78\x74\x2e\ \x57\x6f\x72\x64\x57\x72\x61\x70\x0a\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x74\x65\x78\x74\x3a\x20\x22\x54\x68\x69\x73\x20\x63\x75\ \x72\x76\x65\x20\x69\x73\x20\x61\x20\x63\x75\x73\x74\x6f\x6d\x20\ \x73\x63\x65\x6e\x65\x20\x67\x72\x61\x70\x68\x20\x69\x74\x65\x6d\ \x2c\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x20\x75\x73\ \x69\x6e\x67\x20\x47\x4c\x5f\x4c\x49\x4e\x45\x5f\x53\x54\x52\x49\ \x50\x22\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ " qt_resource_name = b"\ \x00\x0a\ \x04\xb1\xbb\xe8\ \x00\x73\ \x00\x63\x00\x65\x00\x6e\x00\x65\x00\x67\x00\x72\x00\x61\x00\x70\x00\x68\ \x00\x0e\ \x05\x35\x16\x99\ \x00\x63\ \x00\x75\x00\x73\x00\x74\x00\x6f\x00\x6d\x00\x67\x00\x65\x00\x6f\x00\x6d\x00\x65\x00\x74\x00\x72\x00\x79\ \x00\x08\ \x08\x01\x5a\x5c\ \x00\x6d\ \x00\x61\x00\x69\x00\x6e\x00\x2e\x00\x71\x00\x6d\x00\x6c\ " qt_resource_struct_v1 = b"\ \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\x1a\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\ \x00\x00\x00\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ " qt_resource_struct_v2 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x1a\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ " qt_version = QtCore.qVersion().split('.') if qt_version < ['5', '8', '0']: rcc_version = 1 qt_resource_struct = qt_resource_struct_v1 else: rcc_version = 2 qt_resource_struct = qt_resource_struct_v2 def qInitResources(): QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt5_gpl-5.10.1/examples/quick/scenegraph/customgeometry/main.qml0000644000076500000240000000525413245231431025303 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the demonstration applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import CustomGeometry 1.0 Item { width: 300 height: 200 BezierCurve { id: line anchors.fill: parent anchors.margins: 20 property real t SequentialAnimation on t { NumberAnimation { to: 1; duration: 2000; easing.type: Easing.InOutQuad } NumberAnimation { to: 0; duration: 2000; easing.type: Easing.InOutQuad } loops: Animation.Infinite } p2: Qt.point(t, 1 - t) p3: Qt.point(1 - t, t) } Text { anchors.bottom: line.bottom x: 20 width: parent.width - 40 wrapMode: Text.WordWrap text: "This curve is a custom scene graph item, implemented using GL_LINE_STRIP" } } PyQt5_gpl-5.10.1/examples/quick/shared/0000755000076500000240000000000013245231431017677 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/shared/Button.qml0000644000076500000240000000633313245231431021672 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Item { id: container property string text: "Button" property string subText: "" signal clicked property alias containsMouse: mouseArea.containsMouse property alias pressed: mouseArea.pressed implicitHeight: col.height height: implicitHeight width: buttonLabel.width + 20 MouseArea { id: mouseArea anchors.fill: parent onClicked: container.clicked() hoverEnabled: true } Column { spacing: 2 id: col anchors.verticalCenter: parent.verticalCenter width: parent.width Text { id: buttonLabel anchors.left: parent.left anchors.leftMargin: 10 anchors.right: parent.right anchors.rightMargin: 10 text: container.text color: "black" font.pixelSize: 22 wrapMode: Text.WrapAtWordBoundaryOrAnywhere styleColor: "white" style: Text.Raised } Text { id: buttonLabel2 anchors.left: parent.left anchors.leftMargin: 10 text: container.subText wrapMode: Text.WrapAtWordBoundaryOrAnywhere color: "#666" font.pixelSize: 12 } } } PyQt5_gpl-5.10.1/examples/quick/shared/images/0000755000076500000240000000000013245231431021144 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/shared/images/back.png0000644000076500000240000000306613245231431022557 0ustar philstaff00000000000000‰PNG  IHDR ЦÅtEXtSoftwareAdobe ImageReadyqÉe<$iTXtXML:com.adobe.xmp — =بIDATxÚŒ”_HSQÇϽ»×;·ÝÝQ¾ b›“ÔõÁ ôÅ)Ø)FdÔCêKäCBö˜´µ­=ÈèÉõô’Ò–Eë!Y–Ŕ”²ùHí¡‡67Áýóö=×ML—zàËÝïÜ}8¿óýžsY–ÉAÃjµp÷˜Èr¡P,Þ`‚ÚZ[ïiuº1µ r¹Lrëë1n?Àf³¹ ÃQ¯'u Ù ßÀÍIDATxÚ¬•;KA…7™4ÚF1>@ňAŒ,*b#XZ £­…` m,5ˆ‰Ø(B4>@Bˆ"b:ÿ† X]Ï•+„eæî®fàìÌî¾yì½3‘¥tºÙ²¬hzƒ2‡¹\Ö XÂÐ4E (´øú_@ãšï[€e‚‚ }›€mû)Û¶PO@½šþIô7½T«%/Pˆ¼á—ДÁ·­á'8ÆÑ#Ö0ò©03úÞÏ5¼f 6 h¼cLÕ¿0ì M[€µÃs¯c1ìÓ6 Åá9¯‡)Ýzë`q(©±$Ý0eú +xÀúá)’7ä ,-,E(¥¼@4uZš1Þw¡}Œ)?áϰ+4;¡Ý2Ãò2Ê1¦+ï!?ìS+ª24d°¬¨@V‘ƒ»ÊÒª$Í„ bÒ…êJ¬Ù ©@}šî/h}1×éá=1A9³J‡{¨[€‹çC*tîR£›ñ„$ÁË1AR€ÄÃA^NL€\xÅ]Š´q-š¾h[?Ñ1$!Af)¹ Ÿÿ ùÑõÄï¯ÐtPÈÏé8ŽÕˆò-Àªú®G|9mIEND®B`‚PyQt5_gpl-5.10.1/examples/quick/shared/LauncherList.qml0000644000076500000240000001206613245231431023014 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { //model is a list of {"name":"somename", "url":"file:///some/url/mainfile.qml"} //function used to add to model A) to enforce scheme B) to allow Qt.resolveUrl in url assignments color: "#eee" function addExample(name, desc, url) { myModel.append({"name":name, "description":desc, "url":url}) } function hideExample() { ei.visible = false; } ListView { clip: true delegate: SimpleLauncherDelegate{exampleItem: ei} model: ListModel {id:myModel} anchors.fill: parent } Item { id: ei visible: false clip: true property url exampleUrl onExampleUrlChanged: visible = (exampleUrl == '' ? false : true); //Setting exampleUrl automatically shows example anchors.fill: parent anchors.bottomMargin: 40 Rectangle { id: bg anchors.fill: parent color: "white" } MouseArea{ anchors.fill: parent enabled: ei.visible //Eats mouse events } Loader{ focus: true source: ei.exampleUrl anchors.fill: parent } } Rectangle { id: bar visible: ei.visible anchors.bottom: parent.bottom width: parent.width height: 40 Rectangle { height: 1 color: "#ccc" anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right } Rectangle { height: 1 color: "#fff" anchors.top: parent.top anchors.topMargin: 1 anchors.left: parent.left anchors.right: parent.right } gradient: Gradient { GradientStop { position: 0 ; color: "#eee" } GradientStop { position: 1 ; color: "#ccc" } } MouseArea{ anchors.fill: parent enabled: ei.visible //Eats mouse events } Image { id: back source: "images/back.png" anchors.verticalCenter: parent.verticalCenter anchors.verticalCenterOffset: 2 anchors.left: parent.left anchors.leftMargin: 16 MouseArea { id: mouse hoverEnabled: true anchors.centerIn: parent width: 38 height: 31 anchors.verticalCenterOffset: -1 onClicked: ei.exampleUrl = "" Rectangle { anchors.fill: parent opacity: mouse.pressed ? 1 : 0 Behavior on opacity { NumberAnimation{ duration: 100 }} gradient: Gradient { GradientStop { position: 0 ; color: "#22000000" } GradientStop { position: 0.2 ; color: "#11000000" } } border.color: "darkgray" antialiasing: true radius: 4 } } } } } PyQt5_gpl-5.10.1/examples/quick/shared/shared.qrc0000644000076500000240000000037713245231431021663 0ustar philstaff00000000000000 LauncherList.qml SimpleLauncherDelegate.qml Button.qml images/back.png images/next.png PyQt5_gpl-5.10.1/examples/quick/shared/shared_rc.py0000644000076500000240000017425013245231431022214 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created by: The Resource Compiler for PyQt5 (Qt v5.8.0) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x0c\xdb\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x0a\x69\x6d\x70\x6f\x72\x74\ \x20\x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x49\x74\ \x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\x3a\x20\x63\x6f\x6e\ \x74\x61\x69\x6e\x65\x72\x0a\x0a\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x74\x65\x78\x74\ \x3a\x20\x22\x42\x75\x74\x74\x6f\x6e\x22\x0a\x20\x20\x20\x20\x70\ \x72\x6f\x70\x65\x72\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x20\x73\ \x75\x62\x54\x65\x78\x74\x3a\x20\x22\x22\x0a\x20\x20\x20\x20\x73\ \x69\x67\x6e\x61\x6c\x20\x63\x6c\x69\x63\x6b\x65\x64\x0a\x20\x20\ \x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x61\x6c\x69\x61\x73\ \x20\x63\x6f\x6e\x74\x61\x69\x6e\x73\x4d\x6f\x75\x73\x65\x3a\x20\ \x6d\x6f\x75\x73\x65\x41\x72\x65\x61\x2e\x63\x6f\x6e\x74\x61\x69\ \x6e\x73\x4d\x6f\x75\x73\x65\x0a\x20\x20\x20\x20\x70\x72\x6f\x70\ \x65\x72\x74\x79\x20\x61\x6c\x69\x61\x73\x20\x70\x72\x65\x73\x73\ \x65\x64\x3a\x20\x6d\x6f\x75\x73\x65\x41\x72\x65\x61\x2e\x70\x72\ \x65\x73\x73\x65\x64\x0a\x20\x20\x20\x20\x69\x6d\x70\x6c\x69\x63\ \x69\x74\x48\x65\x69\x67\x68\x74\x3a\x20\x63\x6f\x6c\x2e\x68\x65\ \x69\x67\x68\x74\x0a\x20\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\ \x20\x69\x6d\x70\x6c\x69\x63\x69\x74\x48\x65\x69\x67\x68\x74\x0a\ \x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x62\x75\x74\x74\x6f\ \x6e\x4c\x61\x62\x65\x6c\x2e\x77\x69\x64\x74\x68\x20\x2b\x20\x32\ \x30\x0a\x0a\x20\x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x6d\ \x6f\x75\x73\x65\x41\x72\x65\x61\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\ \x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\ \x43\x6c\x69\x63\x6b\x65\x64\x3a\x20\x63\x6f\x6e\x74\x61\x69\x6e\ \x65\x72\x2e\x63\x6c\x69\x63\x6b\x65\x64\x28\x29\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x68\x6f\x76\x65\x72\x45\x6e\x61\x62\x6c\x65\ \x64\x3a\x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\ \x20\x20\x20\x43\x6f\x6c\x75\x6d\x6e\x20\x7b\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x73\x70\x61\x63\x69\x6e\x67\x3a\x20\x32\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x63\x6f\x6c\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x76\ \x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\ \x61\x72\x65\x6e\x74\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\ \x6e\x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\ \x74\x68\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x77\x69\x64\x74\x68\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\ \x62\x75\x74\x74\x6f\x6e\x4c\x61\x62\x65\x6c\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x6c\x65\x66\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x63\x68\x6f\x72\x73\x2e\x6c\x65\x66\x74\x4d\x61\x72\x67\x69\x6e\ \x3a\x20\x31\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x72\x69\x67\x68\x74\x3a\x20\ \x70\x61\x72\x65\x6e\x74\x2e\x72\x69\x67\x68\x74\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x72\x69\x67\x68\x74\x4d\x61\x72\x67\x69\x6e\x3a\x20\x31\x30\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x65\x78\ \x74\x3a\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x74\x65\x78\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\ \x6c\x6f\x72\x3a\x20\x22\x62\x6c\x61\x63\x6b\x22\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x6e\x74\x2e\x70\x69\ \x78\x65\x6c\x53\x69\x7a\x65\x3a\x20\x32\x32\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x77\x72\x61\x70\x4d\x6f\x64\x65\ \x3a\x20\x54\x65\x78\x74\x2e\x57\x72\x61\x70\x41\x74\x57\x6f\x72\ \x64\x42\x6f\x75\x6e\x64\x61\x72\x79\x4f\x72\x41\x6e\x79\x77\x68\ \x65\x72\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x73\x74\x79\x6c\x65\x43\x6f\x6c\x6f\x72\x3a\x20\x22\x77\x68\x69\ \x74\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x73\x74\x79\x6c\x65\x3a\x20\x54\x65\x78\x74\x2e\x52\x61\x69\x73\ \x65\x64\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x54\x65\x78\x74\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x62\x75\x74\ \x74\x6f\x6e\x4c\x61\x62\x65\x6c\x32\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x6c\x65\ \x66\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\ \x6f\x72\x73\x2e\x6c\x65\x66\x74\x4d\x61\x72\x67\x69\x6e\x3a\x20\ \x31\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\ \x65\x78\x74\x3a\x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x2e\x73\ \x75\x62\x54\x65\x78\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x77\x72\x61\x70\x4d\x6f\x64\x65\x3a\x20\x54\x65\x78\ \x74\x2e\x57\x72\x61\x70\x41\x74\x57\x6f\x72\x64\x42\x6f\x75\x6e\ \x64\x61\x72\x79\x4f\x72\x41\x6e\x79\x77\x68\x65\x72\x65\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\ \x3a\x20\x22\x23\x36\x36\x36\x22\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x66\x6f\x6e\x74\x2e\x70\x69\x78\x65\x6c\x53\ \x69\x7a\x65\x3a\x20\x31\x32\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x20\x20\x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x0c\xd7\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x69\x6d\x70\x6f\x72\x74\x20\ \x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\x63\ \x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x69\x64\x3a\ \x20\x63\x6f\x6e\x74\x61\x69\x6e\x65\x72\x0a\x20\x20\x20\x20\x70\ \x72\x6f\x70\x65\x72\x74\x79\x20\x49\x74\x65\x6d\x20\x65\x78\x61\ \x6d\x70\x6c\x65\x49\x74\x65\x6d\x0a\x20\x20\x20\x20\x77\x69\x64\ \x74\x68\x3a\x20\x4c\x69\x73\x74\x56\x69\x65\x77\x2e\x76\x69\x65\ \x77\x2e\x77\x69\x64\x74\x68\x0a\x20\x20\x20\x20\x68\x65\x69\x67\ \x68\x74\x3a\x20\x62\x75\x74\x74\x6f\x6e\x2e\x69\x6d\x70\x6c\x69\ \x63\x69\x74\x48\x65\x69\x67\x68\x74\x20\x2b\x20\x32\x32\x0a\x0a\ \x20\x20\x20\x20\x67\x72\x61\x64\x69\x65\x6e\x74\x3a\x20\x47\x72\ \x61\x64\x69\x65\x6e\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x47\x72\x61\x64\x69\x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x6f\x73\x69\ \x74\x69\x6f\x6e\x3a\x20\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\ \x63\x6f\x6c\x6f\x72\x20\x7b\x43\x6f\x6c\x6f\x72\x41\x6e\x69\x6d\ \x61\x74\x69\x6f\x6e\x20\x7b\x20\x64\x75\x72\x61\x74\x69\x6f\x6e\ \x3a\x20\x31\x30\x30\x20\x7d\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x62\x75\x74\x74\ \x6f\x6e\x2e\x70\x72\x65\x73\x73\x65\x64\x20\x3f\x20\x22\x23\x65\ \x30\x65\x30\x65\x30\x22\x20\x3a\x20\x22\x23\x66\x66\x66\x22\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x70\x6f\x73\ \x69\x74\x69\x6f\x6e\x3a\x20\x31\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\ \x20\x63\x6f\x6c\x6f\x72\x20\x7b\x43\x6f\x6c\x6f\x72\x41\x6e\x69\ \x6d\x61\x74\x69\x6f\x6e\x20\x7b\x20\x64\x75\x72\x61\x74\x69\x6f\ \x6e\x3a\x20\x31\x30\x30\x20\x7d\x7d\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x62\x75\x74\ \x74\x6f\x6e\x2e\x70\x72\x65\x73\x73\x65\x64\x20\x3f\x20\x22\x23\ \x65\x30\x65\x30\x65\x30\x22\x20\x3a\x20\x62\x75\x74\x74\x6f\x6e\ \x2e\x63\x6f\x6e\x74\x61\x69\x6e\x73\x4d\x6f\x75\x73\x65\x20\x3f\ \x20\x22\x23\x66\x35\x66\x35\x66\x35\x22\x20\x3a\x20\x22\x23\x65\ \x65\x65\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\ \x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x49\x6d\x61\x67\x65\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x69\x6d\x61\ \x67\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x70\x61\x63\x69\ \x74\x79\x3a\x20\x30\x2e\x37\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\x6f\x70\x61\x63\ \x69\x74\x79\x20\x7b\x4e\x75\x6d\x62\x65\x72\x41\x6e\x69\x6d\x61\ \x74\x69\x6f\x6e\x20\x7b\x64\x75\x72\x61\x74\x69\x6f\x6e\x3a\x20\ \x31\x30\x30\x7d\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\ \x75\x72\x63\x65\x3a\x20\x22\x69\x6d\x61\x67\x65\x73\x2f\x6e\x65\ \x78\x74\x2e\x70\x6e\x67\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x61\x6e\x63\x68\x6f\x72\x73\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\ \x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x76\ \x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x72\x69\ \x67\x68\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x72\x69\x67\x68\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\ \x73\x2e\x72\x69\x67\x68\x74\x4d\x61\x72\x67\x69\x6e\x3a\x20\x31\ \x36\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x42\x75\x74\ \x74\x6f\x6e\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\ \x3a\x20\x62\x75\x74\x74\x6f\x6e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x74\x6f\x70\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x74\x6f\x70\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x6c\x65\x66\x74\x3a\x20\x70\ \x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x62\x6f\x74\x74\x6f\ \x6d\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x62\x6f\x74\x74\x6f\x6d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x72\x69\x67\x68\x74\x3a\x69\x6d\x61\x67\x65\x2e\x6c\x65\x66\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x74\x65\x78\x74\x3a\x20\ \x6e\x61\x6d\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x75\x62\ \x54\x65\x78\x74\x3a\x20\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6f\ \x6e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x43\x6c\x69\x63\ \x6b\x65\x64\x3a\x20\x65\x78\x61\x6d\x70\x6c\x65\x49\x74\x65\x6d\ \x2e\x65\x78\x61\x6d\x70\x6c\x65\x55\x72\x6c\x20\x3d\x20\x75\x72\ \x6c\x3b\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x52\x65\ \x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x31\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x63\x63\x63\ \x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\ \x73\x2e\x62\x6f\x74\x74\x6f\x6d\x3a\x20\x70\x61\x72\x65\x6e\x74\ \x2e\x62\x6f\x74\x74\x6f\x6d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x61\x6e\x63\x68\x6f\x72\x73\x2e\x6c\x65\x66\x74\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x72\x69\x67\x68\x74\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x2e\x72\x69\x67\x68\x74\x0a\x20\x20\ \x20\x20\x7d\x0a\x7d\x0a\ \x00\x00\x14\x36\ \x2f\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0a\x2a\x2a\x0a\ \x2a\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x43\x29\ \x20\x32\x30\x31\x33\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\ \x61\x6e\x64\x2f\x6f\x72\x20\x69\x74\x73\x20\x73\x75\x62\x73\x69\ \x64\x69\x61\x72\x79\x28\x2d\x69\x65\x73\x29\x2e\x0a\x2a\x2a\x20\ \x43\x6f\x6e\x74\x61\x63\x74\x3a\x20\x68\x74\x74\x70\x3a\x2f\x2f\ \x77\x77\x77\x2e\x71\x74\x2d\x70\x72\x6f\x6a\x65\x63\x74\x2e\x6f\ \x72\x67\x2f\x6c\x65\x67\x61\x6c\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x68\x69\x73\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x70\x61\x72\x74\ \x20\x6f\x66\x20\x74\x68\x65\x20\x65\x78\x61\x6d\x70\x6c\x65\x73\ \x20\x6f\x66\x20\x74\x68\x65\x20\x51\x74\x20\x54\x6f\x6f\x6c\x6b\ \x69\x74\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x42\x45\ \x47\x49\x4e\x5f\x4c\x49\x43\x45\x4e\x53\x45\x3a\x42\x53\x44\x24\ \x0a\x2a\x2a\x20\x59\x6f\x75\x20\x6d\x61\x79\x20\x75\x73\x65\x20\ \x74\x68\x69\x73\x20\x66\x69\x6c\x65\x20\x75\x6e\x64\x65\x72\x20\ \x74\x68\x65\x20\x74\x65\x72\x6d\x73\x20\x6f\x66\x20\x74\x68\x65\ \x20\x42\x53\x44\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x61\x73\x20\ \x66\x6f\x6c\x6c\x6f\x77\x73\x3a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x22\ \x52\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x20\x61\ \x6e\x64\x20\x75\x73\x65\x20\x69\x6e\x20\x73\x6f\x75\x72\x63\x65\ \x20\x61\x6e\x64\x20\x62\x69\x6e\x61\x72\x79\x20\x66\x6f\x72\x6d\ \x73\x2c\x20\x77\x69\x74\x68\x20\x6f\x72\x20\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x2a\x2a\x20\x6d\x6f\x64\x69\x66\x69\x63\x61\x74\x69\ \x6f\x6e\x2c\x20\x61\x72\x65\x20\x70\x65\x72\x6d\x69\x74\x74\x65\ \x64\x20\x70\x72\x6f\x76\x69\x64\x65\x64\x20\x74\x68\x61\x74\x20\ \x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x20\x63\x6f\ \x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x0a\x2a\x2a\x20\ \x6d\x65\x74\x3a\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\ \x73\x74\x72\x69\x62\x75\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x73\ \x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x6d\x75\x73\x74\x20\ \x72\x65\x74\x61\x69\x6e\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\ \x20\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\ \x20\x20\x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\ \x69\x73\x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\ \x73\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\ \x69\x6e\x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x2e\x0a\ \x2a\x2a\x20\x20\x20\x2a\x20\x52\x65\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x73\x20\x69\x6e\x20\x62\x69\x6e\x61\x72\x79\ \x20\x66\x6f\x72\x6d\x20\x6d\x75\x73\x74\x20\x72\x65\x70\x72\x6f\ \x64\x75\x63\x65\x20\x74\x68\x65\x20\x61\x62\x6f\x76\x65\x20\x63\ \x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x2a\x2a\x20\x20\x20\x20\x20\ \x6e\x6f\x74\x69\x63\x65\x2c\x20\x74\x68\x69\x73\x20\x6c\x69\x73\ \x74\x20\x6f\x66\x20\x63\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\ \x61\x6e\x64\x20\x74\x68\x65\x20\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\ \x67\x20\x64\x69\x73\x63\x6c\x61\x69\x6d\x65\x72\x20\x69\x6e\x0a\ \x2a\x2a\x20\x20\x20\x20\x20\x74\x68\x65\x20\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x61\x74\x69\x6f\x6e\x20\x61\x6e\x64\x2f\x6f\x72\x20\ \x6f\x74\x68\x65\x72\x20\x6d\x61\x74\x65\x72\x69\x61\x6c\x73\x20\ \x70\x72\x6f\x76\x69\x64\x65\x64\x20\x77\x69\x74\x68\x20\x74\x68\ \x65\x0a\x2a\x2a\x20\x20\x20\x20\x20\x64\x69\x73\x74\x72\x69\x62\ \x75\x74\x69\x6f\x6e\x2e\x0a\x2a\x2a\x20\x20\x20\x2a\x20\x4e\x65\ \x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\x65\x20\x6f\ \x66\x20\x44\x69\x67\x69\x61\x20\x50\x6c\x63\x20\x61\x6e\x64\x20\ \x69\x74\x73\x20\x53\x75\x62\x73\x69\x64\x69\x61\x72\x79\x28\x2d\ \x69\x65\x73\x29\x20\x6e\x6f\x72\x20\x74\x68\x65\x20\x6e\x61\x6d\ \x65\x73\x0a\x2a\x2a\x20\x20\x20\x20\x20\x6f\x66\x20\x69\x74\x73\ \x20\x63\x6f\x6e\x74\x72\x69\x62\x75\x74\x6f\x72\x73\x20\x6d\x61\ \x79\x20\x62\x65\x20\x75\x73\x65\x64\x20\x74\x6f\x20\x65\x6e\x64\ \x6f\x72\x73\x65\x20\x6f\x72\x20\x70\x72\x6f\x6d\x6f\x74\x65\x20\ \x70\x72\x6f\x64\x75\x63\x74\x73\x20\x64\x65\x72\x69\x76\x65\x64\ \x0a\x2a\x2a\x20\x20\x20\x20\x20\x66\x72\x6f\x6d\x20\x74\x68\x69\ \x73\x20\x73\x6f\x66\x74\x77\x61\x72\x65\x20\x77\x69\x74\x68\x6f\ \x75\x74\x20\x73\x70\x65\x63\x69\x66\x69\x63\x20\x70\x72\x69\x6f\ \x72\x20\x77\x72\x69\x74\x74\x65\x6e\x20\x70\x65\x72\x6d\x69\x73\ \x73\x69\x6f\x6e\x2e\x0a\x2a\x2a\x0a\x2a\x2a\x0a\x2a\x2a\x20\x54\ \x48\x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x20\x49\x53\x20\ \x50\x52\x4f\x56\x49\x44\x45\x44\x20\x42\x59\x20\x54\x48\x45\x20\ \x43\x4f\x50\x59\x52\x49\x47\x48\x54\x20\x48\x4f\x4c\x44\x45\x52\ \x53\x20\x41\x4e\x44\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\ \x52\x53\x0a\x2a\x2a\x20\x22\x41\x53\x20\x49\x53\x22\x20\x41\x4e\ \x44\x20\x41\x4e\x59\x20\x45\x58\x50\x52\x45\x53\x53\x20\x4f\x52\ \x20\x49\x4d\x50\x4c\x49\x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\ \x49\x45\x53\x2c\x20\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\ \x42\x55\x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\ \x45\x44\x20\x54\x4f\x2c\x20\x54\x48\x45\x20\x49\x4d\x50\x4c\x49\ \x45\x44\x20\x57\x41\x52\x52\x41\x4e\x54\x49\x45\x53\x20\x4f\x46\ \x20\x4d\x45\x52\x43\x48\x41\x4e\x54\x41\x42\x49\x4c\x49\x54\x59\ \x20\x41\x4e\x44\x20\x46\x49\x54\x4e\x45\x53\x53\x20\x46\x4f\x52\ \x0a\x2a\x2a\x20\x41\x20\x50\x41\x52\x54\x49\x43\x55\x4c\x41\x52\ \x20\x50\x55\x52\x50\x4f\x53\x45\x20\x41\x52\x45\x20\x44\x49\x53\ \x43\x4c\x41\x49\x4d\x45\x44\x2e\x20\x49\x4e\x20\x4e\x4f\x20\x45\ \x56\x45\x4e\x54\x20\x53\x48\x41\x4c\x4c\x20\x54\x48\x45\x20\x43\ \x4f\x50\x59\x52\x49\x47\x48\x54\x0a\x2a\x2a\x20\x4f\x57\x4e\x45\ \x52\x20\x4f\x52\x20\x43\x4f\x4e\x54\x52\x49\x42\x55\x54\x4f\x52\ \x53\x20\x42\x45\x20\x4c\x49\x41\x42\x4c\x45\x20\x46\x4f\x52\x20\ \x41\x4e\x59\x20\x44\x49\x52\x45\x43\x54\x2c\x20\x49\x4e\x44\x49\ \x52\x45\x43\x54\x2c\x20\x49\x4e\x43\x49\x44\x45\x4e\x54\x41\x4c\ \x2c\x0a\x2a\x2a\x20\x53\x50\x45\x43\x49\x41\x4c\x2c\x20\x45\x58\ \x45\x4d\x50\x4c\x41\x52\x59\x2c\x20\x4f\x52\x20\x43\x4f\x4e\x53\ \x45\x51\x55\x45\x4e\x54\x49\x41\x4c\x20\x44\x41\x4d\x41\x47\x45\ \x53\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x2c\x20\x42\x55\ \x54\x20\x4e\x4f\x54\x0a\x2a\x2a\x20\x4c\x49\x4d\x49\x54\x45\x44\ \x20\x54\x4f\x2c\x20\x50\x52\x4f\x43\x55\x52\x45\x4d\x45\x4e\x54\ \x20\x4f\x46\x20\x53\x55\x42\x53\x54\x49\x54\x55\x54\x45\x20\x47\ \x4f\x4f\x44\x53\x20\x4f\x52\x20\x53\x45\x52\x56\x49\x43\x45\x53\ \x3b\x20\x4c\x4f\x53\x53\x20\x4f\x46\x20\x55\x53\x45\x2c\x0a\x2a\ \x2a\x20\x44\x41\x54\x41\x2c\x20\x4f\x52\x20\x50\x52\x4f\x46\x49\ \x54\x53\x3b\x20\x4f\x52\x20\x42\x55\x53\x49\x4e\x45\x53\x53\x20\ \x49\x4e\x54\x45\x52\x52\x55\x50\x54\x49\x4f\x4e\x29\x20\x48\x4f\ \x57\x45\x56\x45\x52\x20\x43\x41\x55\x53\x45\x44\x20\x41\x4e\x44\ \x20\x4f\x4e\x20\x41\x4e\x59\x0a\x2a\x2a\x20\x54\x48\x45\x4f\x52\ \x59\x20\x4f\x46\x20\x4c\x49\x41\x42\x49\x4c\x49\x54\x59\x2c\x20\ \x57\x48\x45\x54\x48\x45\x52\x20\x49\x4e\x20\x43\x4f\x4e\x54\x52\ \x41\x43\x54\x2c\x20\x53\x54\x52\x49\x43\x54\x20\x4c\x49\x41\x42\ \x49\x4c\x49\x54\x59\x2c\x20\x4f\x52\x20\x54\x4f\x52\x54\x0a\x2a\ \x2a\x20\x28\x49\x4e\x43\x4c\x55\x44\x49\x4e\x47\x20\x4e\x45\x47\ \x4c\x49\x47\x45\x4e\x43\x45\x20\x4f\x52\x20\x4f\x54\x48\x45\x52\ \x57\x49\x53\x45\x29\x20\x41\x52\x49\x53\x49\x4e\x47\x20\x49\x4e\ \x20\x41\x4e\x59\x20\x57\x41\x59\x20\x4f\x55\x54\x20\x4f\x46\x20\ \x54\x48\x45\x20\x55\x53\x45\x0a\x2a\x2a\x20\x4f\x46\x20\x54\x48\ \x49\x53\x20\x53\x4f\x46\x54\x57\x41\x52\x45\x2c\x20\x45\x56\x45\ \x4e\x20\x49\x46\x20\x41\x44\x56\x49\x53\x45\x44\x20\x4f\x46\x20\ \x54\x48\x45\x20\x50\x4f\x53\x53\x49\x42\x49\x4c\x49\x54\x59\x20\ \x4f\x46\x20\x53\x55\x43\x48\x20\x44\x41\x4d\x41\x47\x45\x2e\x22\ \x0a\x2a\x2a\x0a\x2a\x2a\x20\x24\x51\x54\x5f\x45\x4e\x44\x5f\x4c\ \x49\x43\x45\x4e\x53\x45\x24\x0a\x2a\x2a\x0a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\ \x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2f\x0a\x69\x6d\x70\x6f\x72\x74\x20\ \x51\x74\x51\x75\x69\x63\x6b\x20\x32\x2e\x30\x0a\x0a\x52\x65\x63\ \x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x2f\x2f\x6d\ \x6f\x64\x65\x6c\x20\x69\x73\x20\x61\x20\x6c\x69\x73\x74\x20\x6f\ \x66\x20\x7b\x22\x6e\x61\x6d\x65\x22\x3a\x22\x73\x6f\x6d\x65\x6e\ \x61\x6d\x65\x22\x2c\x20\x22\x75\x72\x6c\x22\x3a\x22\x66\x69\x6c\ \x65\x3a\x2f\x2f\x2f\x73\x6f\x6d\x65\x2f\x75\x72\x6c\x2f\x6d\x61\ \x69\x6e\x66\x69\x6c\x65\x2e\x71\x6d\x6c\x22\x7d\x0a\x20\x20\x20\ \x20\x2f\x2f\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x75\x73\x65\x64\ \x20\x74\x6f\x20\x61\x64\x64\x20\x74\x6f\x20\x6d\x6f\x64\x65\x6c\ \x20\x41\x29\x20\x74\x6f\x20\x65\x6e\x66\x6f\x72\x63\x65\x20\x73\ \x63\x68\x65\x6d\x65\x20\x42\x29\x20\x74\x6f\x20\x61\x6c\x6c\x6f\ \x77\x20\x51\x74\x2e\x72\x65\x73\x6f\x6c\x76\x65\x55\x72\x6c\x20\ \x69\x6e\x20\x75\x72\x6c\x20\x61\x73\x73\x69\x67\x6e\x6d\x65\x6e\ \x74\x73\x0a\x0a\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\ \x23\x65\x65\x65\x22\x0a\x20\x20\x20\x20\x66\x75\x6e\x63\x74\x69\ \x6f\x6e\x20\x61\x64\x64\x45\x78\x61\x6d\x70\x6c\x65\x28\x6e\x61\ \x6d\x65\x2c\x20\x64\x65\x73\x63\x2c\x20\x75\x72\x6c\x29\x0a\x20\ \x20\x20\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x79\x4d\ \x6f\x64\x65\x6c\x2e\x61\x70\x70\x65\x6e\x64\x28\x7b\x22\x6e\x61\ \x6d\x65\x22\x3a\x6e\x61\x6d\x65\x2c\x20\x22\x64\x65\x73\x63\x72\ \x69\x70\x74\x69\x6f\x6e\x22\x3a\x64\x65\x73\x63\x2c\x20\x22\x75\ \x72\x6c\x22\x3a\x75\x72\x6c\x7d\x29\x0a\x20\x20\x20\x20\x7d\x0a\ \x20\x20\x20\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x68\x69\x64\ \x65\x45\x78\x61\x6d\x70\x6c\x65\x28\x29\x0a\x20\x20\x20\x20\x7b\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x69\x2e\x76\x69\x73\x69\ \x62\x6c\x65\x20\x3d\x20\x66\x61\x6c\x73\x65\x3b\x0a\x20\x20\x20\ \x20\x7d\x0a\x0a\x20\x20\x20\x20\x4c\x69\x73\x74\x56\x69\x65\x77\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6c\x69\x70\x3a\ \x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x64\x65\ \x6c\x65\x67\x61\x74\x65\x3a\x20\x53\x69\x6d\x70\x6c\x65\x4c\x61\ \x75\x6e\x63\x68\x65\x72\x44\x65\x6c\x65\x67\x61\x74\x65\x7b\x65\ \x78\x61\x6d\x70\x6c\x65\x49\x74\x65\x6d\x3a\x20\x65\x69\x7d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x6d\x6f\x64\x65\x6c\x3a\x20\x4c\ \x69\x73\x74\x4d\x6f\x64\x65\x6c\x20\x7b\x69\x64\x3a\x6d\x79\x4d\ \x6f\x64\x65\x6c\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x0a\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x49\x74\ \x65\x6d\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\ \x20\x65\x69\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x76\x69\x73\x69\ \x62\x6c\x65\x3a\x20\x66\x61\x6c\x73\x65\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x63\x6c\x69\x70\x3a\x20\x74\x72\x75\x65\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x75\ \x72\x6c\x20\x65\x78\x61\x6d\x70\x6c\x65\x55\x72\x6c\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x6f\x6e\x45\x78\x61\x6d\x70\x6c\x65\x55\ \x72\x6c\x43\x68\x61\x6e\x67\x65\x64\x3a\x20\x76\x69\x73\x69\x62\ \x6c\x65\x20\x3d\x20\x28\x65\x78\x61\x6d\x70\x6c\x65\x55\x72\x6c\ \x20\x3d\x3d\x20\x27\x27\x20\x3f\x20\x66\x61\x6c\x73\x65\x20\x3a\ \x20\x74\x72\x75\x65\x29\x3b\x20\x2f\x2f\x53\x65\x74\x74\x69\x6e\ \x67\x20\x65\x78\x61\x6d\x70\x6c\x65\x55\x72\x6c\x20\x61\x75\x74\ \x6f\x6d\x61\x74\x69\x63\x61\x6c\x6c\x79\x20\x73\x68\x6f\x77\x73\ \x20\x65\x78\x61\x6d\x70\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\ \x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x63\x68\x6f\x72\x73\x2e\x62\x6f\x74\x74\x6f\x6d\x4d\x61\x72\x67\ \x69\x6e\x3a\x20\x34\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x52\ \x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x62\x67\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\ \x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\ \x3a\x20\x22\x77\x68\x69\x74\x65\x22\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4d\x6f\x75\x73\ \x65\x41\x72\x65\x61\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x66\x69\x6c\x6c\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x65\x6e\x61\x62\x6c\x65\x64\x3a\x20\x65\x69\x2e\ \x76\x69\x73\x69\x62\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x2f\x2f\x45\x61\x74\x73\x20\x6d\x6f\x75\x73\x65\ \x20\x65\x76\x65\x6e\x74\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4c\x6f\x61\x64\x65\x72\ \x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\ \x63\x75\x73\x3a\x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x73\x6f\x75\x72\x63\x65\x3a\x20\x65\x69\ \x2e\x65\x78\x61\x6d\x70\x6c\x65\x55\x72\x6c\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\ \x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\x20\x7b\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x69\x64\x3a\x20\x62\x61\x72\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x76\x69\x73\x69\x62\x6c\x65\x3a\x20\x65\x69\ \x2e\x76\x69\x73\x69\x62\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x62\x6f\x74\x74\x6f\x6d\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x2e\x62\x6f\x74\x74\x6f\x6d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x70\x61\ \x72\x65\x6e\x74\x2e\x77\x69\x64\x74\x68\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x68\x65\x69\x67\x68\x74\x3a\x20\x34\x30\x0a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\x65\ \x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x68\ \x65\x69\x67\x68\x74\x3a\x20\x31\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x63\x63\ \x63\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\ \x6e\x63\x68\x6f\x72\x73\x2e\x74\x6f\x70\x3a\x20\x70\x61\x72\x65\ \x6e\x74\x2e\x74\x6f\x70\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x6c\x65\x66\x74\x3a\ \x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x72\x69\x67\x68\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x72\ \x69\x67\x68\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\ \x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x68\x65\x69\x67\x68\x74\x3a\x20\x31\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x66\ \x66\x66\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x61\x6e\x63\x68\x6f\x72\x73\x2e\x74\x6f\x70\x3a\x20\x70\x61\x72\ \x65\x6e\x74\x2e\x74\x6f\x70\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x74\x6f\x70\x4d\ \x61\x72\x67\x69\x6e\x3a\x20\x31\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x6c\x65\x66\ \x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\x74\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\ \x72\x73\x2e\x72\x69\x67\x68\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\ \x2e\x72\x69\x67\x68\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\ \x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x67\x72\x61\x64\x69\x65\ \x6e\x74\x3a\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x20\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x72\x61\x64\x69\ \x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\x20\x70\x6f\x73\x69\x74\x69\ \x6f\x6e\x3a\x20\x30\x20\x3b\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\ \x23\x65\x65\x65\x22\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x53\x74\x6f\x70\ \x20\x7b\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x3a\x20\x31\x20\x3b\ \x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x63\x63\x63\x22\x20\x7d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\x7b\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\ \x72\x73\x2e\x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6e\x61\x62\ \x6c\x65\x64\x3a\x20\x65\x69\x2e\x76\x69\x73\x69\x62\x6c\x65\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x2f\x45\x61\ \x74\x73\x20\x6d\x6f\x75\x73\x65\x20\x65\x76\x65\x6e\x74\x73\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x49\x6d\x61\x67\x65\x20\x7b\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x69\x64\x3a\x20\x62\x61\x63\x6b\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x6f\x75\x72\ \x63\x65\x3a\x20\x22\x69\x6d\x61\x67\x65\x73\x2f\x62\x61\x63\x6b\ \x2e\x70\x6e\x67\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\x76\x65\x72\x74\x69\x63\ \x61\x6c\x43\x65\x6e\x74\x65\x72\x3a\x20\x70\x61\x72\x65\x6e\x74\ \x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\ \x6f\x72\x73\x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\ \x65\x72\x4f\x66\x66\x73\x65\x74\x3a\x20\x32\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x6c\x65\x66\x74\x3a\x20\x70\x61\x72\x65\x6e\x74\x2e\x6c\x65\x66\ \x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\ \x63\x68\x6f\x72\x73\x2e\x6c\x65\x66\x74\x4d\x61\x72\x67\x69\x6e\ \x3a\x20\x31\x36\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x4d\x6f\x75\x73\x65\x41\x72\x65\x61\x20\x7b\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\ \x3a\x20\x6d\x6f\x75\x73\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x68\x6f\x76\x65\x72\x45\x6e\x61\ \x62\x6c\x65\x64\x3a\x20\x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\ \x72\x73\x2e\x63\x65\x6e\x74\x65\x72\x49\x6e\x3a\x20\x70\x61\x72\ \x65\x6e\x74\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x77\x69\x64\x74\x68\x3a\x20\x33\x38\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x68\x65\ \x69\x67\x68\x74\x3a\x20\x33\x31\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\ \x2e\x76\x65\x72\x74\x69\x63\x61\x6c\x43\x65\x6e\x74\x65\x72\x4f\ \x66\x66\x73\x65\x74\x3a\x20\x2d\x31\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x6e\x43\x6c\x69\x63\ \x6b\x65\x64\x3a\x20\x65\x69\x2e\x65\x78\x61\x6d\x70\x6c\x65\x55\ \x72\x6c\x20\x3d\x20\x22\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x52\x65\x63\x74\x61\x6e\x67\x6c\ \x65\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x61\x6e\x63\x68\x6f\x72\x73\x2e\ \x66\x69\x6c\x6c\x3a\x20\x70\x61\x72\x65\x6e\x74\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x6f\x70\x61\x63\x69\x74\x79\x3a\x20\x6d\x6f\x75\x73\x65\x2e\ \x70\x72\x65\x73\x73\x65\x64\x20\x3f\x20\x31\x20\x3a\x20\x30\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x42\x65\x68\x61\x76\x69\x6f\x72\x20\x6f\x6e\x20\ \x6f\x70\x61\x63\x69\x74\x79\x20\x7b\x20\x4e\x75\x6d\x62\x65\x72\ \x41\x6e\x69\x6d\x61\x74\x69\x6f\x6e\x7b\x20\x64\x75\x72\x61\x74\ \x69\x6f\x6e\x3a\x20\x31\x30\x30\x20\x7d\x7d\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x67\x72\x61\x64\x69\x65\x6e\x74\x3a\x20\x47\x72\x61\x64\x69\x65\ \x6e\x74\x20\x7b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x47\x72\x61\ \x64\x69\x65\x6e\x74\x53\x74\x6f\x70\x20\x7b\x20\x70\x6f\x73\x69\ \x74\x69\x6f\x6e\x3a\x20\x30\x20\x3b\x20\x63\x6f\x6c\x6f\x72\x3a\ \x20\x22\x23\x32\x32\x30\x30\x30\x30\x30\x30\x22\x20\x7d\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x47\x72\x61\x64\x69\x65\x6e\x74\x53\ \x74\x6f\x70\x20\x7b\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x3a\x20\ \x30\x2e\x32\x20\x3b\x20\x63\x6f\x6c\x6f\x72\x3a\x20\x22\x23\x31\ \x31\x30\x30\x30\x30\x30\x30\x22\x20\x7d\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7d\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2e\x63\x6f\x6c\x6f\ \x72\x3a\x20\x22\x64\x61\x72\x6b\x67\x72\x61\x79\x22\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x61\x6e\x74\x69\x61\x6c\x69\x61\x73\x69\x6e\x67\x3a\x20\ \x74\x72\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x64\x69\x75\x73\x3a\ \x20\x34\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x7d\x0a\x20\x20\x20\ \x20\x7d\x0a\x7d\x0a\ \x00\x00\x05\x5b\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x12\x00\x00\x00\x1f\x08\x06\x00\x00\x00\xea\x50\x9d\x89\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x03\x24\x69\x54\x58\x74\x58\x4d\x4c\ \x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\x70\x00\x00\ \x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x62\x65\x67\ \x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\x57\x35\x4d\ \x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\x4e\x54\x63\ \x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\x6d\x70\x6d\ \x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\x61\x64\x6f\ \x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\x78\x3a\x78\ \x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\x4d\x50\x20\ \x43\x6f\x72\x65\x20\x35\x2e\x33\x2d\x63\x30\x31\x31\x20\x36\x36\ \x2e\x31\x34\x35\x36\x36\x31\x2c\x20\x32\x30\x31\x32\x2f\x30\x32\ \x2f\x30\x36\x2d\x31\x34\x3a\x35\x36\x3a\x32\x37\x20\x20\x20\x20\ \x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\x20\ \x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\ \x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\ \x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\ \x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\x3a\x44\x65\ \x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\x3a\x61\x62\ \x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\ \x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\ \x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\ \x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x4d\x4d\x3d\x22\x68\x74\x74\ \x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ \x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x6d\x6d\x2f\x22\x20\x78\x6d\ \x6c\x6e\x73\x3a\x73\x74\x52\x65\x66\x3d\x22\x68\x74\x74\x70\x3a\ \x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\ \x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\x79\x70\x65\x2f\x52\x65\x73\ \x6f\x75\x72\x63\x65\x52\x65\x66\x23\x22\x20\x78\x6d\x70\x3a\x43\ \x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ \x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x53\x36\x20\ \x28\x4d\x61\x63\x69\x6e\x74\x6f\x73\x68\x29\x22\x20\x78\x6d\x70\ \x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\ \x6d\x70\x2e\x69\x69\x64\x3a\x44\x43\x45\x38\x32\x37\x36\x35\x35\ \x37\x34\x38\x31\x31\x45\x32\x42\x30\x45\x45\x39\x32\x42\x45\x45\ \x32\x37\x30\x34\x37\x44\x42\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\ \x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\ \x69\x64\x3a\x44\x43\x45\x38\x32\x37\x36\x36\x35\x37\x34\x38\x31\ \x31\x45\x32\x42\x30\x45\x45\x39\x32\x42\x45\x45\x32\x37\x30\x34\ \x37\x44\x42\x22\x3e\x20\x3c\x78\x6d\x70\x4d\x4d\x3a\x44\x65\x72\ \x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\x52\x65\x66\x3a\x69\ \x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\ \x69\x64\x3a\x44\x43\x45\x38\x32\x37\x36\x33\x35\x37\x34\x38\x31\ \x31\x45\x32\x42\x30\x45\x45\x39\x32\x42\x45\x45\x32\x37\x30\x34\ \x37\x44\x42\x22\x20\x73\x74\x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x44\ \x43\x45\x38\x32\x37\x36\x34\x35\x37\x34\x38\x31\x31\x45\x32\x42\ \x30\x45\x45\x39\x32\x42\x45\x45\x32\x37\x30\x34\x37\x44\x42\x22\ \x2f\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\ \x74\x69\x6f\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\ \x20\x3c\x2f\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\ \x78\x70\x61\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\ \x3e\xd9\x0c\xdf\xc0\x00\x00\x01\xcd\x49\x44\x41\x54\x78\xda\xac\ \x95\x3b\x4b\x03\x41\x14\x85\x37\x99\x34\xda\x46\x31\x3e\x40\xc5\ \x88\x41\x8c\x2c\x2a\x16\x62\x23\x58\x5a\x08\x06\x04\x0b\xa3\xad\ \x85\x9d\x60\x13\x0b\x1b\x6d\x2c\x35\x8d\x88\x89\xd8\x28\x42\x34\ \x3e\x40\x42\x88\x16\x16\x22\x62\x3a\xff\x86\x20\x58\x04\x5d\xcf\ \x95\x2b\x84\x65\xe6\xee\xae\x66\xe0\xec\xcc\xee\x1c\xbe\x79\xec\ \xbd\x33\x91\xa5\x74\xba\xd9\xb2\xac\x03\x68\x0e\x7a\x83\x32\x87\ \xb9\x5c\xd6\x0a\x58\xc2\xd0\x06\x34\x0f\x45\xa0\x28\xb4\x07\xf8\ \xfa\x5f\x40\xe3\x9a\xef\x5b\x80\x65\x82\x82\x1e\x0d\x7d\x9b\x80\ \x6d\xfb\x05\x29\xdb\xb6\x1f\x50\x4f\x40\xbd\x9a\xfe\x49\xf4\x37\ \xbd\x54\xab\x25\x2f\x50\x88\x1e\xbc\xe1\x97\xd0\x94\xc1\xb7\x03\ \xad\xe1\x27\x38\xc6\x19\xd1\x03\x23\xd6\x30\xf2\xa9\x30\x33\xfa\ \xde\x06\xcf\x35\xbc\x66\x90\x0b\x36\x0c\x0d\x68\xbc\x63\x12\x4c\ \xd5\xbf\x30\xec\x0c\x4d\x5b\x80\xb5\xc3\x73\x03\xaf\x63\x04\x31\ \xec\xd3\x03\x36\x0a\xc5\xe1\x39\xaf\x87\x29\xdd\x7a\xeb\x60\x71\ \x28\xa9\xb1\x24\xdd\x30\x65\xfa\x0b\x0c\x2b\x78\xc0\xfa\xe1\x29\ \x92\x37\xe4\x15\x1f\x08\x0d\x1a\x2c\x0f\x2d\x18\x2c\x45\x28\xa5\ \xbc\x40\x34\x75\x5a\x02\x9a\x31\xde\x1f\x77\xa1\x7d\x8c\x29\x3f\ \xe1\xcf\xb0\x2b\x34\x3b\xa1\x11\xdd\x32\xc3\x01\xf2\x32\xca\x31\ \xa6\x2b\xef\x21\x3f\x04\xec\x53\x2b\xaa\x32\x34\x64\xb0\xac\xa8\ \x06\x40\x56\x91\x83\xbb\xca\x03\xd2\x81\xaa\x24\xcd\x84\x20\x62\ \x1c\x01\xd2\x85\xea\x0e\x4a\x08\x90\xac\x18\xd9\x0c\xa9\x40\x7d\ \x9a\xee\x2f\x68\x19\x90\x7d\x31\xd7\x00\xe9\xe1\x3d\x31\x41\x16\ \x01\x39\x12\xb3\x1f\x10\x4a\x87\x7b\xa8\x5b\x80\x1c\x8b\xe7\x11\ \x43\x2a\x1c\x74\xee\x52\xa3\x9b\x06\x90\x13\xf1\x84\x04\x24\xc1\ \xcb\x31\x41\x52\x80\x14\xc4\xc3\x1f\x90\x41\x5e\x4e\x4c\x80\x5c\ \x78\xc5\x1b\x5d\x8a\xb4\x71\x2d\x9a\xbe\x0f\x68\x16\x90\x5b\x3f\ \xd1\x1f\x31\x24\x21\x41\x66\x00\x29\x07\xb9\x20\x9f\xff\x0b\xf9\ \x05\xd1\x81\xf5\xc4\xef\xaf\xd0\x74\x50\xc8\xcf\x05\xe9\x38\x8e\ \xd5\x88\xf2\x2d\xc0\x00\xaa\xfa\xae\x1f\x47\x7c\x39\x6d\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x06\x36\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x17\x08\x06\x00\x00\x00\xd0\xa6\xc5\x81\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x03\x24\x69\x54\x58\x74\x58\x4d\x4c\ \x3a\x63\x6f\x6d\x2e\x61\x64\x6f\x62\x65\x2e\x78\x6d\x70\x00\x00\ \x00\x00\x00\x3c\x3f\x78\x70\x61\x63\x6b\x65\x74\x20\x62\x65\x67\ \x69\x6e\x3d\x22\xef\xbb\xbf\x22\x20\x69\x64\x3d\x22\x57\x35\x4d\ \x30\x4d\x70\x43\x65\x68\x69\x48\x7a\x72\x65\x53\x7a\x4e\x54\x63\ \x7a\x6b\x63\x39\x64\x22\x3f\x3e\x20\x3c\x78\x3a\x78\x6d\x70\x6d\ \x65\x74\x61\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x3d\x22\x61\x64\x6f\ \x62\x65\x3a\x6e\x73\x3a\x6d\x65\x74\x61\x2f\x22\x20\x78\x3a\x78\ \x6d\x70\x74\x6b\x3d\x22\x41\x64\x6f\x62\x65\x20\x58\x4d\x50\x20\ \x43\x6f\x72\x65\x20\x35\x2e\x33\x2d\x63\x30\x31\x31\x20\x36\x36\ \x2e\x31\x34\x35\x36\x36\x31\x2c\x20\x32\x30\x31\x32\x2f\x30\x32\ \x2f\x30\x36\x2d\x31\x34\x3a\x35\x36\x3a\x32\x37\x20\x20\x20\x20\ \x20\x20\x20\x20\x22\x3e\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\x20\ \x78\x6d\x6c\x6e\x73\x3a\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\ \x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\ \x39\x2f\x30\x32\x2f\x32\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\ \x61\x78\x2d\x6e\x73\x23\x22\x3e\x20\x3c\x72\x64\x66\x3a\x44\x65\ \x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x72\x64\x66\x3a\x61\x62\ \x6f\x75\x74\x3d\x22\x22\x20\x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\ \x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\ \x65\x2e\x63\x6f\x6d\x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x22\x20\ \x78\x6d\x6c\x6e\x73\x3a\x78\x6d\x70\x4d\x4d\x3d\x22\x68\x74\x74\ \x70\x3a\x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\ \x2f\x78\x61\x70\x2f\x31\x2e\x30\x2f\x6d\x6d\x2f\x22\x20\x78\x6d\ \x6c\x6e\x73\x3a\x73\x74\x52\x65\x66\x3d\x22\x68\x74\x74\x70\x3a\ \x2f\x2f\x6e\x73\x2e\x61\x64\x6f\x62\x65\x2e\x63\x6f\x6d\x2f\x78\ \x61\x70\x2f\x31\x2e\x30\x2f\x73\x54\x79\x70\x65\x2f\x52\x65\x73\ \x6f\x75\x72\x63\x65\x52\x65\x66\x23\x22\x20\x78\x6d\x70\x3a\x43\ \x72\x65\x61\x74\x6f\x72\x54\x6f\x6f\x6c\x3d\x22\x41\x64\x6f\x62\ \x65\x20\x50\x68\x6f\x74\x6f\x73\x68\x6f\x70\x20\x43\x53\x36\x20\ \x28\x4d\x61\x63\x69\x6e\x74\x6f\x73\x68\x29\x22\x20\x78\x6d\x70\ \x4d\x4d\x3a\x49\x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\ \x6d\x70\x2e\x69\x69\x64\x3a\x44\x43\x45\x38\x32\x37\x36\x39\x35\ \x37\x34\x38\x31\x31\x45\x32\x42\x30\x45\x45\x39\x32\x42\x45\x45\ \x32\x37\x30\x34\x37\x44\x42\x22\x20\x78\x6d\x70\x4d\x4d\x3a\x44\ \x6f\x63\x75\x6d\x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\ \x69\x64\x3a\x44\x43\x45\x38\x32\x37\x36\x41\x35\x37\x34\x38\x31\ \x31\x45\x32\x42\x30\x45\x45\x39\x32\x42\x45\x45\x32\x37\x30\x34\ \x37\x44\x42\x22\x3e\x20\x3c\x78\x6d\x70\x4d\x4d\x3a\x44\x65\x72\ \x69\x76\x65\x64\x46\x72\x6f\x6d\x20\x73\x74\x52\x65\x66\x3a\x69\ \x6e\x73\x74\x61\x6e\x63\x65\x49\x44\x3d\x22\x78\x6d\x70\x2e\x69\ \x69\x64\x3a\x44\x43\x45\x38\x32\x37\x36\x37\x35\x37\x34\x38\x31\ \x31\x45\x32\x42\x30\x45\x45\x39\x32\x42\x45\x45\x32\x37\x30\x34\ \x37\x44\x42\x22\x20\x73\x74\x52\x65\x66\x3a\x64\x6f\x63\x75\x6d\ \x65\x6e\x74\x49\x44\x3d\x22\x78\x6d\x70\x2e\x64\x69\x64\x3a\x44\ \x43\x45\x38\x32\x37\x36\x38\x35\x37\x34\x38\x31\x31\x45\x32\x42\ \x30\x45\x45\x39\x32\x42\x45\x45\x32\x37\x30\x34\x37\x44\x42\x22\ \x2f\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x44\x65\x73\x63\x72\x69\x70\ \x74\x69\x6f\x6e\x3e\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\ \x20\x3c\x2f\x78\x3a\x78\x6d\x70\x6d\x65\x74\x61\x3e\x20\x3c\x3f\ \x78\x70\x61\x63\x6b\x65\x74\x20\x65\x6e\x64\x3d\x22\x72\x22\x3f\ \x3e\x97\xa0\x3d\xd8\x00\x00\x02\xa8\x49\x44\x41\x54\x78\xda\x8c\ \x94\x5f\x48\x53\x51\x1c\xc7\xcf\xbd\xbb\xd7\x3b\xb7\xdd\xdd\x51\ \x90\xbe\x0c\x62\x9b\x93\xd4\xf5\x10\xc1\x0a\xf4\xc5\x29\xd8\x1f\ \x29\x46\x64\xd4\x43\xea\x4b\xe4\x43\x42\xf6\x98\xb4\xb5\xad\x3d\ \xc8\xe8\xc9\xf5\x1e\xf4\x92\xd2\x96\x45\xeb\x21\x59\x96\xc5\x94\ \xc2\x94\x05\xb2\xf9\x10\x48\xed\xa1\x87\x36\x37\xc1\xfd\xf3\xf6\ \x3d\xd7\x4d\x4c\x97\x7a\xe0\xcb\xdd\xef\xdc\x7d\x38\xbf\xf3\xfd\ \x9e\x73\x19\x59\x96\xc9\x41\xc3\x6a\xb5\x0e\x70\x1c\xf7\x98\xc8\ \x72\xa1\x50\x2c\xde\x60\x0e\x82\xda\x5a\x5b\xef\x69\x75\xba\x31\ \xb5\x20\x90\x72\xb9\x4c\x72\xeb\xeb\x31\x6e\x3f\xc0\x66\xb3\xb9\ \x0c\x06\xc3\x03\x51\xaf\x27\x75\x3c\x4f\x0a\x85\x02\x11\x45\x71\ \xb5\x26\x64\x36\x99\x18\xad\x56\x3b\x06\x60\x44\x02\xa0\xd1\x68\ \x94\xf9\x63\x0d\x0d\x3f\xfc\x7e\xff\xcc\x1e\xc8\x6c\x36\xab\x74\ \x3a\xdd\xb8\x24\x49\xb7\x20\x52\x5f\x5f\x4f\x18\x86\x21\x8d\x8d\ \x8d\x09\xaf\xcf\x37\xb1\x67\x25\xcb\x16\xf0\xd4\x20\x49\xd7\xf5\ \x55\x00\xf3\x46\xa3\xf1\xbb\xc7\xeb\x0d\xa1\x5e\x41\xf9\x76\x1b\ \xb2\x58\x2c\x75\x3a\x51\x9c\x04\xd0\xab\x47\x4b\xea\x0a\x60\x32\ \x99\xbe\x3d\xf4\x78\xa6\x78\x9e\x5f\x46\x39\x09\x15\xb9\x0a\xa0\ \xc1\xb2\x2f\x01\x74\x29\x80\x5a\x4d\xa8\xa7\xd6\xe6\xe6\x79\xb7\ \xdb\x1d\x61\x59\x36\x8e\x32\x04\x95\xe9\xff\x19\xb4\x24\x01\x78\ \x2d\x19\x0c\xed\x7a\x51\xdc\x06\x4e\xda\x6c\xb3\xf7\x47\x47\xa7\ \xf1\x73\x01\x7a\x05\x6d\x56\xbb\xe2\x90\xc1\x73\x6c\xb8\x5d\xaa\ \xae\x80\xdc\xce\xd8\xed\xd3\x77\x47\x46\x66\xf1\x7e\x1e\x8a\x40\ \xff\x84\xc9\xc1\xda\x4e\xec\x45\xb1\x95\xba\x84\xf6\x56\xef\x0c\ \x0f\x7f\xc2\x3b\x0a\xbd\xab\x15\x09\xdb\xda\xd2\xf2\x91\xe7\x38\ \x82\xbe\x95\x89\x54\x2a\x65\xbc\xd6\xd7\x77\x16\x27\xe1\xfd\xff\ \x42\x67\xc7\x83\xc1\x0f\x38\x5b\x0b\xa5\x52\x49\x99\x50\xa9\x54\ \x24\x9d\x4e\x77\xd7\x09\xc2\x0b\xea\x68\x4d\x08\x56\x7e\x79\xe4\ \xf7\x4f\xc1\xa9\x39\x0a\xa2\x26\x68\x99\x60\x8f\xbd\x30\x28\xd2\ \x04\x67\x77\x43\xf4\xc0\xd2\xbe\x2e\x42\xa7\x7c\x5e\x6f\xe7\xe2\ \xd2\x52\x07\xcd\x27\x9f\xcf\x93\xcc\xda\x1a\xc9\xa4\xd3\x9f\xb3\ \xb9\xdc\xf9\x64\x32\x99\xd9\x09\x29\x4f\xa8\x07\xb2\x07\x02\x81\ \xf6\xb9\x58\xcc\x41\xf7\xb8\xb1\xb1\x41\xd6\x00\xa6\x33\x99\xaf\ \xb9\x5c\xee\x5c\x22\x91\xf8\xbd\x13\xaa\x0e\x07\xd4\xf1\x24\x18\ \x3c\x1d\x8d\x46\x2f\x28\x20\x56\xcc\x66\xb3\x74\x9f\x71\x3c\x7b\ \x00\xfe\xdc\x7d\x60\x69\x98\xf9\xdb\x43\x43\x34\xb3\xe2\x9b\x48\ \xe4\x12\xee\x11\xc3\x6c\xb5\xd2\x06\xcd\xc0\x34\x47\xad\xab\x41\ \xf3\xc9\x0f\x0c\x0e\x52\xb0\x10\x0e\x87\xaf\x08\x82\xc0\xd2\x0c\ \xd1\x93\x79\x53\x96\x43\x2a\x97\xcb\x55\xcb\xd5\x5f\xd0\x1f\x5c\ \xc2\xa3\x88\x20\x15\x8f\xc7\x4f\xe0\xc9\x22\x7d\xb2\x59\x2e\x1f\ \x61\xf7\xb9\xb8\x8b\xd0\x84\xd3\xe9\x5c\xbe\xd9\xdf\xff\x0c\xdf\ \x88\x0c\x96\x2b\x75\x75\x77\x87\x99\x43\x7c\x58\x9a\xa0\xab\x10\ \x5f\xa9\x4b\x87\x81\xe8\x38\x0e\x5d\x86\xb4\xf4\x3c\xfe\x15\x60\ \x00\x07\x7f\xeb\x18\x9a\x66\x83\x5f\x00\x00\x00\x00\x49\x45\x4e\ \x44\xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x9e\x88\xb4\ \x00\x73\ \x00\x68\x00\x61\x00\x72\x00\x65\x00\x64\ \x00\x0a\ \x0b\x68\x71\x5c\ \x00\x42\ \x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x1a\ \x04\x27\x53\xdc\ \x00\x53\ \x00\x69\x00\x6d\x00\x70\x00\x6c\x00\x65\x00\x4c\x00\x61\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x72\x00\x44\x00\x65\x00\x6c\ \x00\x65\x00\x67\x00\x61\x00\x74\x00\x65\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x10\ \x09\x8e\x7d\x5c\ \x00\x4c\ \x00\x61\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x72\x00\x4c\x00\x69\x00\x73\x00\x74\x00\x2e\x00\x71\x00\x6d\x00\x6c\ \x00\x08\ \x0c\xf7\x59\xc7\ \x00\x6e\ \x00\x65\x00\x78\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x08\ \x07\x9e\x5a\x47\ \x00\x62\ \x00\x61\x00\x63\x00\x6b\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct_v1 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x02\ \x00\x00\x00\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xdf\ \x00\x00\x00\x66\x00\x02\x00\x00\x00\x02\x00\x00\x00\x06\ \x00\x00\x00\x78\x00\x00\x00\x00\x00\x01\x00\x00\x19\xba\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x33\x53\ \x00\x00\x00\x9e\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xf4\ " qt_resource_struct_v2 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x02\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xdf\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x00\x66\x00\x02\x00\x00\x00\x02\x00\x00\x00\x06\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x78\x00\x00\x00\x00\x00\x01\x00\x00\x19\xba\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x00\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x33\x53\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ \x00\x00\x00\x9e\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xf4\ \x00\x00\x01\x5a\x38\x00\xd4\xd8\ " qt_version = QtCore.qVersion().split('.') if qt_version < ['5', '8', '0']: rcc_version = 1 qt_resource_struct = qt_resource_struct_v1 else: rcc_version = 2 qt_resource_struct = qt_resource_struct_v2 def qInitResources(): QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) def qCleanupResources(): QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) qInitResources() PyQt5_gpl-5.10.1/examples/quick/shared/SimpleLauncherDelegate.qml0000644000076500000240000000632713245231431024770 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { id: container property Item exampleItem width: ListView.view.width height: button.implicitHeight + 22 gradient: Gradient { GradientStop { position: 0 Behavior on color {ColorAnimation { duration: 100 }} color: button.pressed ? "#e0e0e0" : "#fff" } GradientStop { position: 1 Behavior on color {ColorAnimation { duration: 100 }} color: button.pressed ? "#e0e0e0" : button.containsMouse ? "#f5f5f5" : "#eee" } } Image { id: image opacity: 0.7 Behavior on opacity {NumberAnimation {duration: 100}} source: "images/next.png" anchors.verticalCenter: parent.verticalCenter anchors.right: parent.right anchors.rightMargin: 16 } Button { id: button anchors.top: parent.top anchors.left: parent.left anchors.bottom: parent.bottom anchors.right:image.left text: name subText: description onClicked: exampleItem.exampleUrl = url; } Rectangle { height: 1 color: "#ccc" anchors.bottom: parent.bottom anchors.left: parent.left anchors.right: parent.right } } PyQt5_gpl-5.10.1/examples/quick/tutorials/0000755000076500000240000000000013245231431020457 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/0000755000076500000240000000000013245231431022444 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter1-basics/0000755000076500000240000000000013245231432025416 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter1-basics/app.qml0000644000076500000240000000452113245231431026712 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import Charts 1.0 import QtQuick 2.0 Item { width: 300; height: 200 PieChart { id: aPieChart anchors.centerIn: parent width: 100; height: 100 name: "A simple pie chart" color: "red" } Text { anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 20 } text: aPieChart.name } } PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter1-basics/chapter1-basics.py0000644000076500000240000000653013245231432030745 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2018 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import pyqtProperty, QRectF, QUrl from PyQt5.QtGui import QColor, QGuiApplication, QPainter, QPen from PyQt5.QtQml import qmlRegisterType from PyQt5.QtQuick import QQuickPaintedItem, QQuickView class PieChart(QQuickPaintedItem): @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = QColor(color) def __init__(self, parent=None): super(PieChart, self).__init__(parent) self._name = '' self._color = QColor() def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHints(QPainter.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, 90 * 16, 290 * 16) if __name__ == '__main__': import os import sys app = QGuiApplication(sys.argv) qmlRegisterType(PieChart, "Charts", 1, 0, "PieChart") view = QQuickView() view.setResizeMode(QQuickView.SizeRootObjectToView) view.setSource( QUrl.fromLocalFile( os.path.join(os.path.dirname(os.path.abspath(__file__)), 'app.qml'))) view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter2-methods/0000755000076500000240000000000013245231432025616 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter2-methods/app.qml0000644000076500000240000000474413245231431027121 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import Charts 1.0 import QtQuick 2.0 Item { width: 300; height: 200 PieChart { id: aPieChart anchors.centerIn: parent width: 100; height: 100 color: "red" onChartCleared: console.log("The chart has been cleared") } MouseArea { anchors.fill: parent onClicked: aPieChart.clearChart() } Text { anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 20 } text: "Click anywhere to clear the chart" } } PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter2-methods/chapter2-methods.py0000644000076500000240000000704213245231432031344 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2018 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QRectF, Qt, QUrl from PyQt5.QtGui import QColor, QGuiApplication, QPainter, QPen from PyQt5.QtQml import qmlRegisterType from PyQt5.QtQuick import QQuickPaintedItem, QQuickView class PieChart(QQuickPaintedItem): chartCleared = pyqtSignal() @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = QColor(color) def __init__(self, parent=None): super(PieChart, self).__init__(parent) self._name = '' self._color = QColor() def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHints(QPainter.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, 90 * 16, 290 * 16) @pyqtSlot() def clearChart(self): self.color = QColor(Qt.transparent) self.update() self.chartCleared.emit() if __name__ == '__main__': import os import sys app = QGuiApplication(sys.argv) qmlRegisterType(PieChart, "Charts", 1, 0, "PieChart") view = QQuickView() view.setResizeMode(QQuickView.SizeRootObjectToView) view.setSource( QUrl.fromLocalFile( os.path.join(os.path.dirname(os.path.abspath(__file__)), 'app.qml'))) view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter3-bindings/0000755000076500000240000000000013245231432025751 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter3-bindings/app.qml0000644000076500000240000000513213245231431027244 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import Charts 1.0 import QtQuick 2.0 Item { width: 300; height: 200 Row { anchors.centerIn: parent spacing: 20 PieChart { id: chartA width: 100; height: 100 color: "red" } PieChart { id: chartB width: 100; height: 100 color: chartA.color } } MouseArea { anchors.fill: parent onClicked: { chartA.color = "blue" } } Text { anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 20 } text: "Click anywhere to change the chart color" } } PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter3-bindings/chapter3-bindings.py0000644000076500000240000000717113245231432031635 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2018 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QRectF, Qt, QUrl from PyQt5.QtGui import QColor, QGuiApplication, QPainter, QPen from PyQt5.QtQml import qmlRegisterType from PyQt5.QtQuick import QQuickPaintedItem, QQuickView class PieChart(QQuickPaintedItem): @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name colorChanged = pyqtSignal() @pyqtProperty(QColor, notify=colorChanged) def color(self): return self._color @color.setter def color(self, color): if self._color != color: self._color = QColor(color) self.update() self.colorChanged.emit() def __init__(self, parent=None): super(PieChart, self).__init__(parent) self._name = '' self._color = QColor() def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHints(QPainter.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, 90 * 16, 290 * 16) @pyqtSlot() def clearChart(self): self.color = QColor(Qt.transparent) self.update() if __name__ == '__main__': import os import sys app = QGuiApplication(sys.argv) qmlRegisterType(PieChart, "Charts", 1, 0, "PieChart") view = QQuickView() view.setResizeMode(QQuickView.SizeRootObjectToView) view.setSource( QUrl.fromLocalFile( os.path.join(os.path.dirname(os.path.abspath(__file__)), 'app.qml'))) view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter4-customPropertyTypes/0000755000076500000240000000000013245231432030261 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter4-customPropertyTypes/app.qml0000644000076500000240000000447113245231431031561 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import Charts 1.0 import QtQuick 2.0 Item { width: 300; height: 200 PieChart { id: chart anchors.centerIn: parent width: 100; height: 100 pieSlice: PieSlice { anchors.fill: parent color: "red" } } Component.onCompleted: console.log("The pie is colored " + chart.pieSlice.color) } ././@LongLink0000000000000000000000000000016100000000000011213 Lustar 00000000000000PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pyPyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter4-customPropertyTypes/chapter4-customProp0000644000076500000240000000740213245231432034072 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2018 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import pyqtProperty, QRectF, QUrl from PyQt5.QtGui import QColor, QGuiApplication, QPainter, QPen from PyQt5.QtQml import qmlRegisterType from PyQt5.QtQuick import QQuickItem, QQuickPaintedItem, QQuickView class PieSlice(QQuickPaintedItem): @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = QColor(color) def __init__(self, parent=None): super(PieSlice, self).__init__(parent) self._color = QColor() def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHints(QPainter.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, 90 * 16, 290 * 16) class PieChart(QQuickItem): @pyqtProperty(PieSlice) def pieSlice(self): return self._pieSlice @pieSlice.setter def pieSlice(self, pieSlice): self._pieSlice = pieSlice pieSlice.setParentItem(self) @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name def __init__(self, parent=None): super(PieChart, self).__init__(parent) self._pieSlice = None self._name = '' if __name__ == '__main__': import os import sys app = QGuiApplication(sys.argv) qmlRegisterType(PieChart, "Charts", 1, 0, "PieChart") qmlRegisterType(PieSlice, "Charts", 1, 0, "PieSlice") view = QQuickView() view.setResizeMode(QQuickView.SizeRootObjectToView) view.setSource( QUrl.fromLocalFile( os.path.join(os.path.dirname(os.path.abspath(__file__)), 'app.qml'))) view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter5-listproperties/0000755000076500000240000000000013245231432027246 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter5-listproperties/app.qml0000644000076500000240000000512313245231431030541 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import Charts 1.0 import QtQuick 2.0 Item { width: 300; height: 200 PieChart { anchors.centerIn: parent width: 100; height: 100 slices: [ PieSlice { anchors.fill: parent color: "red" fromAngle: 0; angleSpan: 110 }, PieSlice { anchors.fill: parent color: "black" fromAngle: 110; angleSpan: 50 }, PieSlice { anchors.fill: parent color: "blue" fromAngle: 160; angleSpan: 100 } ] } } ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter5-listproperties/chapter5-listproperties.pyPyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter5-listproperties/chapter5-listproperties.0000644000076500000240000001021213245231432034044 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2018 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import pyqtProperty, QRectF, QUrl from PyQt5.QtGui import QColor, QGuiApplication, QPainter, QPen from PyQt5.QtQml import qmlRegisterType, QQmlListProperty from PyQt5.QtQuick import QQuickItem, QQuickPaintedItem, QQuickView class PieSlice(QQuickPaintedItem): @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = QColor(color) @pyqtProperty(int) def fromAngle(self): return self._fromAngle @fromAngle.setter def fromAngle(self, fromAngle): self._fromAngle = fromAngle @pyqtProperty(int) def angleSpan(self): return self._angleSpan @angleSpan.setter def angleSpan(self, angleSpan): self._angleSpan = angleSpan def __init__(self, parent=None): super(PieSlice, self).__init__(parent) self._color = QColor() self._fromAngle = 0 self._angleSpan = 0 def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHints(QPainter.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, self._fromAngle * 16, self._angleSpan * 16) class PieChart(QQuickItem): @pyqtProperty(QQmlListProperty) def slices(self): return QQmlListProperty(PieSlice, self, append=lambda pie_ch, pie_sl: pie_sl.setParentItem(pie_ch)) @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name def __init__(self, parent=None): super(PieChart, self).__init__(parent) self._name = '' if __name__ == '__main__': import os import sys app = QGuiApplication(sys.argv) qmlRegisterType(PieChart, "Charts", 1, 0, "PieChart") qmlRegisterType(PieSlice, "Charts", 1, 0, "PieSlice") view = QQuickView() view.setResizeMode(QQuickView.SizeRootObjectToView) view.setSource( QUrl.fromLocalFile( os.path.join(os.path.dirname(os.path.abspath(__file__)), 'app.qml'))) view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter6-plugins/0000755000076500000240000000000013245231431025637 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter6-plugins/app.qml0000644000076500000240000000512313245231431027133 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import Charts 1.0 Item { width: 300; height: 200 PieChart { anchors.centerIn: parent width: 100; height: 100 slices: [ PieSlice { anchors.fill: parent color: "red" fromAngle: 0; angleSpan: 110 }, PieSlice { anchors.fill: parent color: "black" fromAngle: 110; angleSpan: 50 }, PieSlice { anchors.fill: parent color: "blue" fromAngle: 160; angleSpan: 100 } ] } } PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter6-plugins/Charts/0000755000076500000240000000000013245231431027063 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter6-plugins/Charts/chartsplugin.py0000644000076500000240000000441213245231431032141 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtQml import qmlRegisterType, QQmlExtensionPlugin from piechart import PieChart from pieslice import PieSlice class ChartsPlugin(QQmlExtensionPlugin): def registerTypes(self, uri): qmlRegisterType(PieChart, "Charts", 1, 0, "PieChart") qmlRegisterType(PieSlice, "Charts", 1, 0, "PieSlice") PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter6-plugins/Charts/piechart.py0000644000076500000240000000505013245231431031234 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import pyqtProperty from PyQt5.QtQml import QQmlListProperty from PyQt5.QtQuick import QQuickItem from pieslice import PieSlice class PieChart(QQuickItem): @pyqtProperty(QQmlListProperty) def slices(self): return QQmlListProperty(PieSlice, self, append=lambda pie_ch, pie_sl: pie_sl.setParentItem(pie_ch)) @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name def __init__(self, parent=None): super(PieChart, self).__init__(parent) self._name = '' PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter6-plugins/Charts/pieslice.py0000644000076500000240000000610013245231431031227 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import pyqtProperty, QRectF from PyQt5.QtGui import QColor, QPainter, QPen from PyQt5.QtQuick import QQuickPaintedItem class PieSlice(QQuickPaintedItem): @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = QColor(color) @pyqtProperty(int) def fromAngle(self): return self._fromAngle @fromAngle.setter def fromAngle(self, fromAngle): self._fromAngle = fromAngle @pyqtProperty(int) def angleSpan(self): return self._angleSpan @angleSpan.setter def angleSpan(self, angleSpan): self._angleSpan = angleSpan def __init__(self, parent=None): super(PieSlice, self).__init__(parent) self._color = QColor() self._fromAngle = 0 self._angleSpan = 0 def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHints(QPainter.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, self._fromAngle * 16, self._angleSpan * 16) PyQt5_gpl-5.10.1/examples/quick/tutorials/extending/chapter6-plugins/Charts/qmldir0000644000076500000240000000004413245231431030274 0ustar philstaff00000000000000module Charts plugin pyqt5qmlplugin PyQt5_gpl-5.10.1/examples/README0000644000076500000240000000170613245231431016201 0ustar philstaff00000000000000PyQt is supplied with a number of example applications and demonstrations that have been written to provide developers with examples of the Qt API in use, highlight good programming practise, and showcase features found in each of Qt's core technologies. The example and demo launcher can be used to explore the different categories available. It provides an overview of each example, lets you view the documentation in Qt Assistant, and is able to launch examples and demos. Documentation for these examples can be found in the Tutorial and Examples section of the Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/richtext/0000755000076500000240000000000013245231431017147 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/richtext/calendar.py0000755000076500000240000001563713245231431021311 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDate, Qt from PyQt5.QtGui import (QColor, QFont, QTextCharFormat, QTextLength, QTextTableFormat) from PyQt5.QtWidgets import (QApplication, QComboBox, QDateTimeEdit, QHBoxLayout, QLabel, QMainWindow, QSpinBox, QTextBrowser, QVBoxLayout, QWidget) class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.selectedDate = QDate.currentDate() self.fontSize = 10 centralWidget = QWidget() dateLabel = QLabel("Date:") monthCombo = QComboBox() for month in range(1, 13): monthCombo.addItem(QDate.longMonthName(month)) yearEdit = QDateTimeEdit() yearEdit.setDisplayFormat('yyyy') yearEdit.setDateRange(QDate(1753, 1, 1), QDate(8000, 1, 1)) monthCombo.setCurrentIndex(self.selectedDate.month() - 1) yearEdit.setDate(self.selectedDate) self.fontSizeLabel = QLabel("Font size:") self.fontSizeSpinBox = QSpinBox() self.fontSizeSpinBox.setRange(1, 64) self.fontSizeSpinBox.setValue(10) self.editor = QTextBrowser() self.insertCalendar() monthCombo.activated.connect(self.setMonth) yearEdit.dateChanged.connect(self.setYear) self.fontSizeSpinBox.valueChanged.connect(self.setfontSize) controlsLayout = QHBoxLayout() controlsLayout.addWidget(dateLabel) controlsLayout.addWidget(monthCombo) controlsLayout.addWidget(yearEdit) controlsLayout.addSpacing(24) controlsLayout.addWidget(self.fontSizeLabel) controlsLayout.addWidget(self.fontSizeSpinBox) controlsLayout.addStretch(1) centralLayout = QVBoxLayout() centralLayout.addLayout(controlsLayout) centralLayout.addWidget(self.editor, 1) centralWidget.setLayout(centralLayout) self.setCentralWidget(centralWidget) def insertCalendar(self): self.editor.clear() cursor = self.editor.textCursor() cursor.beginEditBlock() date = QDate(self.selectedDate.year(), self.selectedDate.month(), 1) tableFormat = QTextTableFormat() tableFormat.setAlignment(Qt.AlignHCenter) tableFormat.setBackground(QColor('#e0e0e0')) tableFormat.setCellPadding(2) tableFormat.setCellSpacing(4) constraints = [QTextLength(QTextLength.PercentageLength, 14), QTextLength(QTextLength.PercentageLength, 14), QTextLength(QTextLength.PercentageLength, 14), QTextLength(QTextLength.PercentageLength, 14), QTextLength(QTextLength.PercentageLength, 14), QTextLength(QTextLength.PercentageLength, 14), QTextLength(QTextLength.PercentageLength, 14)] tableFormat.setColumnWidthConstraints(constraints) table = cursor.insertTable(1, 7, tableFormat) frame = cursor.currentFrame() frameFormat = frame.frameFormat() frameFormat.setBorder(1) frame.setFrameFormat(frameFormat) format = cursor.charFormat() format.setFontPointSize(self.fontSize) boldFormat = QTextCharFormat(format) boldFormat.setFontWeight(QFont.Bold) highlightedFormat = QTextCharFormat(boldFormat) highlightedFormat.setBackground(Qt.yellow) for weekDay in range(1, 8): cell = table.cellAt(0, weekDay-1) cellCursor = cell.firstCursorPosition() cellCursor.insertText(QDate.longDayName(weekDay), boldFormat) table.insertRows(table.rows(), 1) while date.month() == self.selectedDate.month(): weekDay = date.dayOfWeek() cell = table.cellAt(table.rows()-1, weekDay-1) cellCursor = cell.firstCursorPosition() if date == QDate.currentDate(): cellCursor.insertText(str(date.day()), highlightedFormat) else: cellCursor.insertText(str(date.day()), format) date = date.addDays(1) if weekDay == 7 and date.month() == self.selectedDate.month(): table.insertRows(table.rows(), 1) cursor.endEditBlock() self.setWindowTitle("Calendar for %s %d" % (QDate.longMonthName(self.selectedDate.month()), self.selectedDate.year())) def setfontSize(self, size): self.fontSize = size self.insertCalendar() def setMonth(self, month): self.selectedDate = QDate(self.selectedDate.year(), month + 1, self.selectedDate.day()) self.insertCalendar() def setYear(self, date): self.selectedDate = QDate(date.year(), self.selectedDate.month(), self.selectedDate.day()) self.insertCalendar() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.resize(640, 256) window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/richtext/orderform.py0000755000076500000240000002547513245231431021540 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDate, Qt from PyQt5.QtGui import (QFont, QTextCharFormat, QTextCursor, QTextFrameFormat, QTextLength, QTextTableFormat) from PyQt5.QtWidgets import (QApplication, QCheckBox, QDialog, QDialogButtonBox, QGridLayout, QLabel, QLineEdit, QMainWindow, QMessageBox, QMenu, QTableWidget, QTableWidgetItem, QTabWidget, QTextEdit) from PyQt5.QtPrintSupport import QAbstractPrintDialog, QPrintDialog, QPrinter class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() fileMenu = QMenu("&File", self) newAction = fileMenu.addAction("&New...") newAction.setShortcut("Ctrl+N") self.printAction = fileMenu.addAction("&Print...", self.printFile) self.printAction.setShortcut("Ctrl+P") self.printAction.setEnabled(False) quitAction = fileMenu.addAction("E&xit") quitAction.setShortcut("Ctrl+Q") self.menuBar().addMenu(fileMenu) self.letters = QTabWidget() newAction.triggered.connect(self.openDialog) quitAction.triggered.connect(self.close) self.setCentralWidget(self.letters) self.setWindowTitle("Order Form") def createLetter(self, name, address, orderItems, sendOffers): editor = QTextEdit() tabIndex = self.letters.addTab(editor, name) self.letters.setCurrentIndex(tabIndex) cursor = editor.textCursor() cursor.movePosition(QTextCursor.Start) topFrame = cursor.currentFrame() topFrameFormat = topFrame.frameFormat() topFrameFormat.setPadding(16) topFrame.setFrameFormat(topFrameFormat) textFormat = QTextCharFormat() boldFormat = QTextCharFormat() boldFormat.setFontWeight(QFont.Bold) referenceFrameFormat = QTextFrameFormat() referenceFrameFormat.setBorder(1) referenceFrameFormat.setPadding(8) referenceFrameFormat.setPosition(QTextFrameFormat.FloatRight) referenceFrameFormat.setWidth(QTextLength(QTextLength.PercentageLength, 40)) cursor.insertFrame(referenceFrameFormat) cursor.insertText("A company", boldFormat) cursor.insertBlock() cursor.insertText("321 City Street") cursor.insertBlock() cursor.insertText("Industry Park") cursor.insertBlock() cursor.insertText("Another country") cursor.setPosition(topFrame.lastPosition()) cursor.insertText(name, textFormat) for line in address.split("\n"): cursor.insertBlock() cursor.insertText(line) cursor.insertBlock() cursor.insertBlock() date = QDate.currentDate() cursor.insertText("Date: %s" % date.toString('d MMMM yyyy'), textFormat) cursor.insertBlock() bodyFrameFormat = QTextFrameFormat() bodyFrameFormat.setWidth(QTextLength(QTextLength.PercentageLength, 100)) cursor.insertFrame(bodyFrameFormat) cursor.insertText("I would like to place an order for the following " "items:", textFormat) cursor.insertBlock() cursor.insertBlock() orderTableFormat = QTextTableFormat() orderTableFormat.setAlignment(Qt.AlignHCenter) orderTable = cursor.insertTable(1, 2, orderTableFormat) orderFrameFormat = cursor.currentFrame().frameFormat() orderFrameFormat.setBorder(1) cursor.currentFrame().setFrameFormat(orderFrameFormat) cursor = orderTable.cellAt(0, 0).firstCursorPosition() cursor.insertText("Product", boldFormat) cursor = orderTable.cellAt(0, 1).firstCursorPosition() cursor.insertText("Quantity", boldFormat) for text, quantity in orderItems: row = orderTable.rows() orderTable.insertRows(row, 1) cursor = orderTable.cellAt(row, 0).firstCursorPosition() cursor.insertText(text, textFormat) cursor = orderTable.cellAt(row, 1).firstCursorPosition() cursor.insertText(str(quantity), textFormat) cursor.setPosition(topFrame.lastPosition()) cursor.insertBlock() cursor.insertText("Please update my records to take account of the " "following privacy information:") cursor.insertBlock() offersTable = cursor.insertTable(2, 2) cursor = offersTable.cellAt(0, 1).firstCursorPosition() cursor.insertText("I want to receive more information about your " "company's products and special offers.", textFormat) cursor = offersTable.cellAt(1, 1).firstCursorPosition() cursor.insertText("I do not want to receive any promotional " "information from your company.", textFormat) if sendOffers: cursor = offersTable.cellAt(0, 0).firstCursorPosition() else: cursor = offersTable.cellAt(1, 0).firstCursorPosition() cursor.insertText('X', boldFormat) cursor.setPosition(topFrame.lastPosition()) cursor.insertBlock() cursor.insertText("Sincerely,", textFormat) cursor.insertBlock() cursor.insertBlock() cursor.insertBlock() cursor.insertText(name) self.printAction.setEnabled(True) def createSample(self): dialog = DetailsDialog('Dialog with default values', self) self.createLetter('Mr Smith', '12 High Street\nSmall Town\nThis country', dialog.orderItems(), True) def openDialog(self): dialog = DetailsDialog("Enter Customer Details", self) if dialog.exec_() == QDialog.Accepted: self.createLetter(dialog.senderName(), dialog.senderAddress(), dialog.orderItems(), dialog.sendOffers()) def printFile(self): editor = self.letters.currentWidget() printer = QPrinter() dialog = QPrintDialog(printer, self) dialog.setWindowTitle("Print Document") if editor.textCursor().hasSelection(): dialog.addEnabledOption(QAbstractPrintDialog.PrintSelection) if dialog.exec_() != QDialog.Accepted: return editor.print_(printer) class DetailsDialog(QDialog): def __init__(self, title, parent): super(DetailsDialog, self).__init__(parent) self.items = ("T-shirt", "Badge", "Reference book", "Coffee cup") nameLabel = QLabel("Name:") addressLabel = QLabel("Address:") addressLabel.setAlignment(Qt.AlignLeft | Qt.AlignTop) self.nameEdit = QLineEdit() self.addressEdit = QTextEdit() self.offersCheckBox = QCheckBox( "Send information about products and special offers:") self.setupItemsTable() buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) buttonBox.accepted.connect(self.verify) buttonBox.rejected.connect(self.reject) mainLayout = QGridLayout() mainLayout.addWidget(nameLabel, 0, 0) mainLayout.addWidget(self.nameEdit, 0, 1) mainLayout.addWidget(addressLabel, 1, 0) mainLayout.addWidget(self.addressEdit, 1, 1) mainLayout.addWidget(self.itemsTable, 0, 2, 2, 1) mainLayout.addWidget(self.offersCheckBox, 2, 1, 1, 2) mainLayout.addWidget(buttonBox, 3, 0, 1, 3) self.setLayout(mainLayout) self.setWindowTitle(title) def setupItemsTable(self): self.itemsTable = QTableWidget(len(self.items), 2) for row, item in enumerate(self.items): name = QTableWidgetItem(item) name.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable) self.itemsTable.setItem(row, 0, name) quantity = QTableWidgetItem('1') self.itemsTable.setItem(row, 1, quantity) def orderItems(self): orderList = [] for row in range(len(self.items)): text = self.itemsTable.item(row, 0).text() quantity = int(self.itemsTable.item(row, 1).data(Qt.DisplayRole)) orderList.append((text, max(0, quantity))) return orderList def senderName(self): return self.nameEdit.text() def senderAddress(self): return self.addressEdit.toPlainText() def sendOffers(self): return self.offersCheckBox.isChecked() def verify(self): if self.nameEdit.text() and self.addressEdit.toPlainText(): self.accept() return answer = QMessageBox.warning(self, "Incomplete Form", "The form does not contain all the necessary information.\n" "Do you want to discard it?", QMessageBox.Yes, QMessageBox.No) if answer == QMessageBox.Yes: self.reject() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.resize(640, 480) window.show() window.createSample() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/richtext/README0000644000076500000240000000167213245231431020035 0ustar philstaff00000000000000PyQt provides powerful document-oriented rich text engine that supports Unicode and right-to-left scripts. Documents can be manipulated using a cursor-based API, and their contents can be imported and exported as both HTML and in a custom XML format. Text is rendered using anti-aliased outline fonts to provide the best possible on-screen representation. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/richtext/syntaxhighlighter.py0000755000076500000240000001716713245231431023305 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QFile, QRegExp, Qt from PyQt5.QtGui import QFont, QSyntaxHighlighter, QTextCharFormat from PyQt5.QtWidgets import (QApplication, QFileDialog, QMainWindow, QMenu, QMessageBox, QTextEdit) class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setupFileMenu() self.setupHelpMenu() self.setupEditor() self.setCentralWidget(self.editor) self.setWindowTitle("Syntax Highlighter") def about(self): QMessageBox.about(self, "About Syntax Highlighter", "

      The Syntax Highlighter example shows how to " \ "perform simple syntax highlighting by subclassing the " \ "QSyntaxHighlighter class and describing highlighting " \ "rules using regular expressions.

      ") def newFile(self): self.editor.clear() def openFile(self, path=None): if not path: path, _ = QFileDialog.getOpenFileName(self, "Open File", '', "C++ Files (*.cpp *.h)") if path: inFile = QFile(path) if inFile.open(QFile.ReadOnly | QFile.Text): text = inFile.readAll() try: # Python v3. text = str(text, encoding='ascii') except TypeError: # Python v2. text = str(text) self.editor.setPlainText(text) def setupEditor(self): font = QFont() font.setFamily('Courier') font.setFixedPitch(True) font.setPointSize(10) self.editor = QTextEdit() self.editor.setFont(font) self.highlighter = Highlighter(self.editor.document()) def setupFileMenu(self): fileMenu = QMenu("&File", self) self.menuBar().addMenu(fileMenu) fileMenu.addAction("&New...", self.newFile, "Ctrl+N") fileMenu.addAction("&Open...", self.openFile, "Ctrl+O") fileMenu.addAction("E&xit", QApplication.instance().quit, "Ctrl+Q") def setupHelpMenu(self): helpMenu = QMenu("&Help", self) self.menuBar().addMenu(helpMenu) helpMenu.addAction("&About", self.about) helpMenu.addAction("About &Qt", QApplication.instance().aboutQt) class Highlighter(QSyntaxHighlighter): def __init__(self, parent=None): super(Highlighter, self).__init__(parent) keywordFormat = QTextCharFormat() keywordFormat.setForeground(Qt.darkBlue) keywordFormat.setFontWeight(QFont.Bold) keywordPatterns = ["\\bchar\\b", "\\bclass\\b", "\\bconst\\b", "\\bdouble\\b", "\\benum\\b", "\\bexplicit\\b", "\\bfriend\\b", "\\binline\\b", "\\bint\\b", "\\blong\\b", "\\bnamespace\\b", "\\boperator\\b", "\\bprivate\\b", "\\bprotected\\b", "\\bpublic\\b", "\\bshort\\b", "\\bsignals\\b", "\\bsigned\\b", "\\bslots\\b", "\\bstatic\\b", "\\bstruct\\b", "\\btemplate\\b", "\\btypedef\\b", "\\btypename\\b", "\\bunion\\b", "\\bunsigned\\b", "\\bvirtual\\b", "\\bvoid\\b", "\\bvolatile\\b"] self.highlightingRules = [(QRegExp(pattern), keywordFormat) for pattern in keywordPatterns] classFormat = QTextCharFormat() classFormat.setFontWeight(QFont.Bold) classFormat.setForeground(Qt.darkMagenta) self.highlightingRules.append((QRegExp("\\bQ[A-Za-z]+\\b"), classFormat)) singleLineCommentFormat = QTextCharFormat() singleLineCommentFormat.setForeground(Qt.red) self.highlightingRules.append((QRegExp("//[^\n]*"), singleLineCommentFormat)) self.multiLineCommentFormat = QTextCharFormat() self.multiLineCommentFormat.setForeground(Qt.red) quotationFormat = QTextCharFormat() quotationFormat.setForeground(Qt.darkGreen) self.highlightingRules.append((QRegExp("\".*\""), quotationFormat)) functionFormat = QTextCharFormat() functionFormat.setFontItalic(True) functionFormat.setForeground(Qt.blue) self.highlightingRules.append((QRegExp("\\b[A-Za-z0-9_]+(?=\\()"), functionFormat)) self.commentStartExpression = QRegExp("/\\*") self.commentEndExpression = QRegExp("\\*/") def highlightBlock(self, text): for pattern, format in self.highlightingRules: expression = QRegExp(pattern) index = expression.indexIn(text) while index >= 0: length = expression.matchedLength() self.setFormat(index, length, format) index = expression.indexIn(text, index + length) self.setCurrentBlockState(0) startIndex = 0 if self.previousBlockState() != 1: startIndex = self.commentStartExpression.indexIn(text) while startIndex >= 0: endIndex = self.commentEndExpression.indexIn(text, startIndex) if endIndex == -1: self.setCurrentBlockState(1) commentLength = len(text) - startIndex else: commentLength = endIndex - startIndex + self.commentEndExpression.matchedLength() self.setFormat(startIndex, commentLength, self.multiLineCommentFormat) startIndex = self.commentStartExpression.indexIn(text, startIndex + commentLength); if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.resize(640, 512) window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/richtext/textedit/0000755000076500000240000000000013245231431021001 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/richtext/textedit/example.html0000644000076500000240000003403513245231431023327 0ustar philstaff00000000000000QTextEdit Demonstration

      QTextEdit

      The QTextEdit widget is an advanced editor that supports formatted rich text. It can be used to display HTML and other rich document formats. Internally, QTextEdit uses the QTextDocument class to describe both the high-level structure of each document and the low-level formatting of paragraphs.

      If you are viewing this document in the textedit demo, you can edit this document to explore Qt's rich text editing features. We have included some comments in each of the following sections to encourage you to experiment.

      Font and Paragraph Styles

      QTextEdit supports bold, italic, and underlined font styles, and can display multicolored text. Font families such as Times New Roman and Courier can also be used directly. If you place the cursor in a region of styled text, the controls in the tool bars will change to reflect the current style.

      Paragraphs can be formatted so that the text is left-aligned, right-aligned, centered, or fully justified.

      Try changing the alignment of some text and resize the editor to see how the text layout changes.

      Lists

      Different kinds of lists can be included in rich text documents. Standard bullet lists can be nested, using different symbols for each level of the list:

      • Disc symbols are typically used for top-level list items.
      • Circle symbols can be used to distinguish between items in lower-level lists.
      • Square symbols provide a reasonable alternative to discs and circles.

      Ordered lists can be created that can be used for tables of contents. Different characters can be used to enumerate items, and we can use both Roman and Arabic numerals in the same list structure:

      1. Introduction
      2. Qt Tools
      1. Qt Assistant
      2. Qt Designer
        1. Form Editor
        2. Component Architecture
      3. Qt Linguist

      The list will automatically be renumbered if you add or remove items. Try adding new sections to the above list or removing existing item to see the numbers change.

      Images

      Inline images are treated like ordinary ranges of characters in the text editor, so they flow with the surrounding text. Images can also be selected in the same way as text, making it easy to cut, copy, and paste them.

      Try to select this image by clicking and dragging over it with the mouse, or use the text cursor to select it by holding down Shift and using the arrow keys. You can then cut or copy it, and paste it into different parts of this document.

      Tables

      QTextEdit can arrange and format tables, supporting features such as row and column spans, text formatting within cells, and size constraints for columns.

      Development Tools

      Programming Techniques

      Graphical User Interfaces

      9:00 - 11:00

      Introduction to Qt

      11:00 - 13:00

      Using qmake

      Object-oriented Programming

      Layouts in Qt

      13:00 - 15:00

      Qt Designer Tutorial

      Extreme Programming

      Writing Custom Styles

      15:00 - 17:00

      Qt Linguist and Internationalization

      Try adding text to the cells in the table and experiment with the alignment of the paragraphs.

      Hyperlinks

      QTextEdit is designed to support hyperlinks between documents, and this feature is used extensively in Qt Assistant. Hyperlinks are automatically created when an HTML file is imported into an editor. Since the rich text framework supports hyperlinks natively, they can also be created programatically.

      Undo and Redo

      Full support for undo and redo operations is built into QTextEdit and the underlying rich text framework. Operations on a document can be packaged together to make editing a more comfortable experience for the user.

      Try making changes to this document and press Ctrl+Z to undo them. You can always recover the original contents of the document.

      PyQt5_gpl-5.10.1/examples/richtext/textedit/images/0000755000076500000240000000000013245231431022246 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/richtext/textedit/images/logo.png0000644000076500000240000000117013245231431023713 0ustar philstaff00000000000000‰PNG  IHDR D¤ŠÆsRGB®ÎéEPLTE  & +59E GXVj d| qŒ}›†¦± ’¶ •¹˜¾ ™¿ ›¿œÃ ¢Ê ªÕ E¹TŒbKGDˆH pHYs  šœtIMEÚ  7ªú²tEXtCommentCreated with GIMPW‡IDAT8Ë•“RÄ „)-…טðþêJõtt”¹ŸøØd“`êïëiþ]?ÌÒ¾r§g¢@1Ÿ"uê¼M ˆdï¬Á².<„Ë+P¤„Õ̵lqP䨗qvý…ç €û»n¯žb¤ÝšÅ,~h €%èÅ=«‡&iW‚äCA’fçkc˜anOÕ[³L€«×s‰…\n§ÃFÀ§ò€í¢Åˆ‹!éN.(BÈIõóñ3‚Ø,ð¥ëk1,±n™xþÂ…4Ù5JÕH†¾ÜCHß ‘Z%­Ð „®ÇH¡å^Á¥— ©hBZG·™‡MD°ÔÃ8ÚºÍÚj7…º4B~#ýªñŒ”,a$n«ÔR_³ï->ZC³4>.tf§{[H9E¿õ±ØÒ‡‚æéÆ X»Ì¹R7 ŸÀç®Íz\ͺ48î#»eݼ¸ãn÷{μñQñ6Íyúäé«Á‡»¢Žä+p=½1ïã÷+ðmýx?À3½/ÙIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/logo32.png0000644000076500000240000000260213245231431024061 0ustar philstaff00000000000000‰PNG  IHDR@ •C޶ÀPLTEqŒ¥¥¤ ———¢Ê ìììûûüŒŒ‹ÊÊÊxxwÔÔÔ³³³Vj ººº::7VVUòòòõõõÅÅÅhigIJH%'" @A?ØØØ451qrpœÃ øøøÏÏÏïïïááá-.*ÞÞÞççèÿÿÿäää9E d| ± ˜¾ ‚‚+5ÛÛÛ]^YGXªÕ & ™¿ ¿¿¿}›aa`’¶ †¦›¿•¹ØÚÑÆÈ¿bcXÒÔË3î¢.}IDATx^•å²#7„G0ÌÌŒfö… ¼ÿ[åH³¾»›T%é?®»?µŒ…û¿ëÛÙ9Pj†…-KÓ>‹p’`’öEßã)"ÿ (…"ÃPuK+ì¸èq’…YcšÈß{¦_%¥ü\ZVㄆ±ói`ID¦ég@U‰\ÕÏHY~“®» ƒäֵ쵃~j¬ÒQ²i"?{p¿ æÅÜ>ßEñþÊñ‰ú)櫓ˇÖu™ßõZ¹n­··|ö¢øÜÜ"Šn—±Úü®Ÿ†ü´è†‘Bªß ú8C ŠJáåß_0yiJ·/ÂçŸÝ2JË¢«u’(Jâ>sŠbùJ˜M<Áêß§Õûýãòm%|þ6JZT-!$JMÓ‚sVØ fMà~þ‘ÙðÆÜnÍcľÙ@è$wQÑ9!8CÒÌåŽ'K± ùJP‰vðñ)‚®¢pdS\¯Ð<蹇âd† ^™ÉóÆNÒé ¬z›ûµ‚fTÕõ˃Ÿ"aÌKkó\×àƨÒÒI@V@uß0%î÷Ƽ=¯ï7°\P½s7ä‹©îºÒ2zµd… †'Ó@üÀ„¤;qφa; lÁw{¯öàuâ4²UŒ LÖ:¯•Ðû1BUÁôÀ›á8ŽSŒõ|àfüêÖ ¸o+òü˜ýܬØ#Ö+dJe”*È›gm²3ÅŽHOi‘›õ8ð³Ÿã­xg7!&°öyefyË<¶ó\fC7[…c$Dö/ðó\Xø0eÖâ[ê°Œ², ¥¹S Z¤™†2òã Âõç¿¢ùý »ì4{^×¹®<×Ã"»Nøh½åqpÔ¢ý«ˆ`¼\Ÿ¯,+ %@Yv‡¥õꙩ–ÔN ›êmí¹unX%&kŸ¼ì‘ɯq3SÞÆ{µûC%דåZn‡f¬O6ô¥•eWU´pZÐ4>7Wê·‚Q6"Ø(Ï@xn§7‹«Ú“ct’4<;ŒÉ XK™¢ø|µ”Â( Vüæ4ÂBºƒïç’‘žªAƒÐ.¢ ª6|…w×+,»?/׊–¯ õËj$”$ 5…í„=;èµÎ»ó¤á)l7)-¤Oj†Õ cÛ¶¾eœä&KRõ©í81T`ð:ÞÖÑŒ"qñ.T;ü† _FOBE¯ó‚›&(øFqÀšaΗð‘-Ó[&ì ãÑ ‹+k8=£76«AprUǯp‰Õöˆ×ø(@/n»u3øz·H9 ú”¥L4ÍXr_+{òëk½zš—Íæ²ý¸‹beÂrp@¬ „(P`~5L¢Ô~;”¥®>šîÀ?T‰  ÌO~ÀŽ8ŠÑ,ÝÒ ‡ý¯…¡c+¾•ËèŸm\œö0Åoj[o\dosØ÷qŸ$EÑKžàß]ÐfïÔÊ:Œ”ïÄI J [)cBþ€à€!uhÔ&W’B;OS%”„ü,ƒÜôùñ¾IEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/mac/0000755000076500000240000000000013245231431023006 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/richtext/textedit/images/mac/editcopy.png0000644000076500000240000000267413245231431025345 0ustar philstaff00000000000000‰PNG  IHDR szzôƒIDATx^µWKlTÕþî;[héP†:ØHµJxˆ !ÔG\(DCĉº‘¸qå#>7$®Ü¸Ò°Ð• ÿä¿ +*h•J ´Lé“–N;ÓΫó¸ÏsïçwrO2ÉdŠ“Œ¿äËyLæ|ßïq~gFªV«hÅž;ýéKãñ6àöÿ}^@SZ$Ç·G_ýþ« ªEI7@@„O£ãó7Îvé ?¡‰ÉhͶ98°ÃE@µÀd€ëŽ °<`N ÌAIc84øÔ˼óæ»5᯵KÆÀL{R|¯%a¨T*(òÅ Þ:~øìë/îƒR×R Þþèò¡º%Ÿ÷õõG—Rëƒ×þœó¸vDB žŒãé'£V,•`KèêÞ†ÂzŸœ?ý^&_6k"îÕê¡ÔL€ ¦“ν°7~NìíˆuÓÈl¦èº¶e`çvD»Tä*læáÇŸ81´ûž‰Œ1Ë3Af¶@×uõìÉ¡Ãw'÷øãq8uîäÁ÷OèÇfYŠÅ"úz{pæ•~ŒÜ_FOW½=$ ¦a€,PÍVÉdä]š¦q/62ÇqèÐA»vöbOßfÜJ¬ •-C¨˜Ÿºƒ¯/~ŒKß\DrqšjGÚ ZõÃ÷RQ<»'ŽÀÜnO®àøÑ~9:„Á½ûàUetvvbµ²Pm«!BئM›p`W/îLM`9gâ‰Þ>Äj ÛbÛ ¡PÊk«Y–y†‡‡©øº££¦®aœÜ°©^¨W´©„B!Äãqž†r¹L5ÃSáT%è&`;0@z˜ ´5T|$€òK‘ µmÛ˜H'áVy‡„épr˜\D›#@W-cëÖ­ˆÅbˆF£<0˜ÄêN7ì¶ h,B¯êÁó<0bP4x ¸mSÛn³"£ëº ñ¹Çù)ü~ð¨h6ðŸ\Cy.Ö²,A³€€Í#À½÷xM´1Â{"#íñ7Àö8¡Å€¼ÆSÁç&ks(ìD, ’æt ]WFA\èÙÌ=G8ØÆk(ÂN¤4Ò£$ñtT]D‚@¼ÜÒE 3DQªÒ´vA&BN÷ŸDƒAzÄø5¬XÀìí rwgs`–&y Ô„ËtœfUi5ç"Ô|hM"(~êŽ$Ž:c9·ˆ_ÆÇy”$Ù´ä–$è8þ½Vˆi¤žOsÓ4‰”PC¢‘ïÍŽ]ÃÈ•‡È–ôE%¤N1DY5¸ÈÌÔøÌï "˜W٨ȈŒLä\´\êÿº®CUUÄ?3t·bæ8ÅåŠú۲ǭ|zAË/¥ ɉ¬ïu' €!|Tšy.D¯ép‘kBÏo©TbÉ{©5¯›·~»þðÞõž.[Ô/È‘ÑhD*rÌQ(ˆ€<¦_¼$ö¨÷“÷$Ž£\.1Óu™òC­úˆÔ> úBd¡¦©òš"‰D¨ÊÉsÚãO2™ä{sssƒ')öjF²+…Õ¬…> ˆ-ÓD0ªÄ ÷˜|0‰ùùy¤2EÃòBe+Í›VÊù•›ùô\Ê¿jž€H毽&(Ü<§Œ1òD"ÑÑQNšÎ•57˺áø: ï˜5´ÂTjöîÈüØp¸D,ŠpCº®aii œxzzù2«xj|òˆ‡XåܯËSý¹œ ûêêø`MÌÌÌà÷+—°–×+‘m»ÓÁîcÙà¶® ‡Ù×J¹å‘«ß^¤’@ƒ€æBh^Ïþ8`ÀU7øòLZª™ ò‰Ñ„¼^„Ե⫂ÂRdÍIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/mac/editcut.png0000644000076500000240000000275013245231431025161 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<zIDATXÃÅ– LÔuÇ.±À8oaš$W !©¼Ô(–-“6'E¹ÊˆJÙ`3)PG€¼¸°@@NŽW‰àpŠ2r‘Ó9`— ,%…‰/ÍݹàéyÎßûëLŽºí3Žßÿÿçû¼ÿáÿÄ´›‰b#D¸Î™ú¸= °' àì€ÞOZ‚1îs! *@—O·Êa1‹vÒuËÙ° ²þÎF9|ö@ù̶€ìí'èûó\,B&*jÖpŽWì˸•êäÔÎ…(Î7åâ2ÄÂXàl 0zÏÞjüüô"çÜ › ¼¼®Ï…w®x®|µ§§¾"4ÔÀ‘`j7l@)-&XÆ)­lkj ¸òBŠ¯Ù¨vëV#ßEG›\ôñ K<ߨø‹~tô¯¡îî?ù™&"ñ0ŽD±rrƒȵAç>ÈpHHHâ9­¶_¯×#364„'“’®I§#À–k à¦|¼ pˆC+»Ï’ %þTSÓ?22‚Ì(ÑÓØxû•ªT¤ÁmZ$¸&Øð©˜íïǬ€€VÑž ˆµa¾¾™§ÊËûQâJO~›Ð'ŠØwÚ»àÞT´þf09—›ËùÜâãy"?ÿj_o/öÊ8[U¥Y¹’½“ o¦lƒƒƒÇÇÇ‘¹yõ*–¤¦Þ¨®®ÆÖÖVììì4rþôi,‰‹»Èâ¯mÃ{°7§kj® £Z­Æääd¬­­ÅââbÔjµx¼ ÿÖk…× f¼Žeí±ÂÁa÷„„ëeeeÆûûû£  àñ†L‰ŽîžÎ¦œÊ¨(°w¹øv;;ÿ|$7w²¢¢³³³1//+++±¾¾/]ºdä²NgP©Òö)ÐÇ“½à÷žvûÆŒmgf†VV¨IKÃÃùù“»bc{“ãâ†JÓÓ§œOvtt N§Ã?†‡'Ó¶m«ç®0Y€ÔF¬ž¬««ÃË==Ñ‘‘dÖÝ%€ —ûøà‹{eÆŸ"¢?øQíæ†G""’>À^‰¶|œgº þ1áB8¯,µ³ËÊ‹¿¡ÑhP×ގɱ± òéõŠW-¿ë­º$lïn€>öœ¯å)zo€·…0á%‹yF†Jœsa® –Ïonñó;V˜‘1qL­6ÐÿoÈS°–ó¯ñòšÈHdƒ¼jιdœæmcxVÿ  ˆöf1¹œ²îNÈÝÿ#JÑ)Š©&¡‚˜Gxuçkk›ÂÏyðîQF À†öhvWUeŽ«!IOOáp˜»)•JaL Ô9ÝuK´tÍU¨’ÿ€¸9ØGÅH³·\þqò$3‹cÙHÀ4Mr¹ù|Û¶©­­¥">E¢BÃv¹/%õHpÆ à¿þ†™™CÃEˆè.º&ð q[²,b pÁ¨<õÂϾþÒ/»6Q hA‰Ïwÿ`}_Y€#GŽ]×5©9 `Õªø2:’RJÏ Ô‡ƒ €Oc<+¸>1É¿'ÇnÚ¹gë¶m{*Â!–Ötª+uêÂ~¢U~zF’íÇ>› ûKæw¥x‹¬‰V’µ,ÛÅ•Mü†FЧ“u‰h o¼ù>KP …QÙ+“*WuµŸÆÚF&çö½ôÖç>°aÿ]ÐAh ë׳á $W 4¡î+ßJ9|õéÍDëêUo”‘ê—d2I0TÍüýíÍØö"DöîÝ+;::\C|øu ÃÐÑغ‹+Q†¦04õŒ™Íª >Ÿr²,‹D"AMMìjÿî©›û:Þ¼pþW/o iª P"¥Lq®\”">|¡¥ª­ôñ@ØÏÙ+gYÿÈnBAƒ¬gÛ–ž] ]P&( ‰,f‡»f@Y¨qžÎÌ08k±£ã-zf£èÁ ®‚Û–ÏÐP»t]$%’æÐ4Pfžú§R¼ú^ý·Òˆj“æú ²¦Cδ1½qÓêΜ(_`ññ¿Y(UkS˜×w¯g(a£7¬fͺ¯¨Î.ˆ3#ÐÖÖ¶0€\¬(Áã­µ|me„O{'ñ?²Ž»^T]^¢EX0ÊšAQ®e’OMcÍÍ`gâäf$†•)ÙÑâR` 7¡P–ÒÁ1“äç¼ ©i @$Äs08+Y:çÞ€Dbá dƺŠAMÉhBr-æ2–’æ`¾.ñíª÷ à8Ž2 ¿†–3YIÿŒçi—‰9iN¥eÿlVöÇeϺ-íë«›ZŸ),xzzšÑÑQ&ÒA`Y¼,Àäœä⸋„›I¿='ûÆçdÏí´œÆ oXÞÖ¤~H§ÓêDWW7GѪWiÞ ï”ýtعÑ=%ÇÇS²Ëƒ&q øZyÓp§€ú™˜˜P?ËÝÝÝÄÒ:†µT­Þ†æýÞÒŒ·½¯ãsåºþØåüˆ€ „J ÀMÞ×DEÃfüu‘³®tÞ¾vîOýÝn{ÀnÙ·À›èB\4 Pœt@NaN÷ùƒ¶D03;ËÄø¸ :04JÊ®B¯nA4=:f¥œûèƒK§ßïæ“Ì—,#À)€_B±‘[S\ýì/Lgø£ÍÛföØÔ­Þcÿüó+g ÈYÀ\@. = !Ü ‹¬¬^ÐÎôëßDŸ{mI ù»»+s™™äô‰ ÿöã®Oâ…5NÁVѸ²¤aþ ªÓé¯p50#IEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/mac/editredo.png0000644000076500000240000000333013245231431025312 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<jIDATXÃíUiL”WUÔV[c´ÕhµZµZq©%uP‘Ò TedÑj+‹S48,e7Q`@¨âRYD¤T-Žà‚6.5.£Æšj'…©†ˆ1¥É$$§çoZKE±µ±?:ÉÉ—oy÷ž{î¹wºèò"Ñåÿ)¦xID¡D&±„°ûW 0QªZ­5$dê[3¦Ä,£)5çæ½øÌ³·«K¯ó}$gû\ 0àP·° Ýšœ;­¡ÑÀ¬P`F0àª<>¬"S5ùæ¶u[ô-ÁÑEz©ŽËó"Ÿ¡kö_L˜ Œr%Ü€±ÞÀxÀ.p#±p 8ˆÝdn5š>‰µ¨ò‰u±iæ¶©~À› 5ÜL\(HJLfr{ª1p‰ãHd3µÃh ^aQD-”ü[„üË)ñûó€‘^À¸V¬f{DŒô†¦äN«_¸¦¾3-’6îÔ·¨4 –D}”Ÿ§ Y9Ú-*AD½©êFõ“yû÷@ÂA`ávzd#0“¾ñ&‰ÏGSfn[o™uû¤b—XwŠåÆ/BS¯ÙÏŠ(¡z/P©#‘5–ÃÝ€|â±$CWñÝÍ{U Ë:îŠr ` àF?x±a¼f•1iZã¾°&/(~¨°5 :s—®9ý …DÊÙÿŒ]uBúޤã;{±ªS µ†škæ¶‚s$O£*wP…M½¤$‰u;ià­ºfkÅâšKÅOž„ÿ¬Á†º/ÎЕ̹֙t~1ƒí=qóžHð´Š>/N(Ò×êMæÝT.™ÞXÊ ògK½Ó¸¼ˆ8ŽjB¶¥âªT}K&•ÖÖ=BÀ*«rU‘¾òœ¹m=pÚÓuf÷[[RsõNk[’vXVÁIabß,`•^GRj“Ù‡;dY2Û¬mGÀZMb®ÖpìpòG ìÈÃ>ufœÄØy’DñQ}KÕuú‚ûcyBƒúp2fÓ Nü¯qäv cÄ}5!`õC²Fk¸ô3ÐpXgYµ>$aéq I|Mi§=²‹$8®ÎÉØRNIÕqIàq? ‰<­¡áp‚²Š¿j{¨|ÕM¢{èæè7Þ) )%³üì­¢zz‚íˆ %w†/}áÅä*¶æàéÇèJ؈@N‰ña±Ûô æ6Mù™ÛÓýãÃù¼ñ ñjïzÙ{ªÞû`~â¶ìãFS Àj—sBsÆñž#{øâ_ ØÈ*^"z½æªWúGå4¿|ç×ä¼êF…{Ä>H ’xCÂz?pŒýœI¾«Ò‹jîVÜ ¸¾7q¬×Ó_pB⸸r¹iO]û3‘¼‡¬°ñº 8Änæ’¥Óçªd—žjVÆÞxk¢ó,>KØã$lå³w&»ElØU}¡¥þ.P÷ pˆ^:ð{NS—sBʹÆþÔ7þA «¬\$ï++.‚»~‡»¼;C™6x´"÷Ž„“°J;8 ~[±@³ÅpDרzôrck-¯µ—›ÔêšÔ\jzpøRÓ}í…¦û‡Ïï:g4‰µn­þeY¹¨z$1‘˜"¹³ w‹ð&|‰¹í žy˜äš¨p‹ÐZàY­ðˆ:8ÅSU5uNô>Ÿ˜²é~q»ç%ì Ç¶Ñ¬"¶ÅÕ¢çý„äRJ{bá&úó ¡@B„¶Cˆ|(¿õ“gÝd,{{ˆÌÕSæ~ñžk ä7îòŒ«Œ1EÆ)sô‘9m:eBBAL%ždBùÎA~«g'ÈXÃeì¾2Ww™ûÉcH #F£ˆÑ2X‡c(¿%Ï “1ɘ}dŽÖꟸˆäѯ׈þÄ€§-"ùMy¦ŸŒÑ[Æ|Iæ°±þü³¤žkã4úIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/mac/editundo.png0000644000076500000240000000332213245231431025327 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<dIDATXÃíV L•eF´’r.Sgnê2MRÌKNAB¤48 wá˜\1à€\½ÞAD@Io‰y /(jq’#áDcÐÜŽÒv6¶§ç?|xAEr6·ÖÙžqÎÿÿï÷>ïó>ïû£@çUBçÿYŸÊãf¾D ‘!CØükx¸HRîšWšXݵ­ñntŠJ½q§JŸ¦ìM(mâý<Âá¥àaR…òµÙJE’²c}‚¦ËS8‹|sw`¡'ಈJr Ú;­½“k3î¥$ö É«KR©}¢&ï Ì^Lw¦:“íIÖü.,=€-{€ÙµmŒ ~ÑÄã…TqåõŠ¬ÖŸ¬`b&ŸãG¬"Hf¶?0Õë»mŽ€7ÕÉ/ÑtI­z‘ä«­–'×Ç×¶ùodkÓ•€1å5]O"1”š2{ìÜwNÉ”ŸÊ‘àT¶b‰ÈC€cßRþqÕ¾… ë“5]N<ä3jÈ¿¬È.ðËb¿ÒÎ_U™ßñE€/¯[‘¬!ŸŸC•–F@ à™WßßäÖRÕ µm+âh¬uìsPwâÅLì›lf¢#—€Ó—Têäœòæ€Myõñ9Õ­Égåû€ÑŒ fâ­À©r€çÖôKr‡•©·Â¶µwº’¹90 cE[(s:ΊT@éU•Ú-(õ–˜y¹Ø1É'8~ÇÇm€ý&N ŸùQxà‘Ù5xJr…”¤é² erÊn 8ïŽÛ/Åu@e½Z¾³°A$¶èu†YPRaÃJî™Áê÷’0¿gæ+;¤¼Ò1ûr»ôèé÷ÊèÒ¦U”XÆŠÍÃišVÍ~n8ä\ªîEUwm|µ3íþ¬è—WŸrX—ÇÌÊjiÔ5Z¥ ¤jÊh˜=9IHC’Ùïx&gb :ÛžUûå‰4X«¾zGÓµy¿v«I«Ö¨Êc3Ë›w– t~Á%`ï1íPh7¡D ý°‘cš¨%Q¯ìðd­¥ùÞ ¸¦kO»*Ø»_KjOd¶RòG?<”’^Üx7ƒ±Ç˜üü5µFæÓ½ˆ’ÌÁ£sL\j#+–Ñí¶IÀ2JBÉ÷K§ä•·Û;û’¼÷»a MyêgVNÙ+”š.¯0-ñ±Z!\f>Ý[ÌŒ._Û-¹WAüT«€“åÊÛîäýߘƒ¥ÊŽ ·Ù²ß€˜TmËSMK@ÁÝlι6"Ì™Üíð:Ìä¥@ÖuJþ;WçÅÇÚŸÝá‘­¼ÉØ›$›¦M®xâÿ‰@ìn2JnÉ~;¦29Í¶Ž†Ù^Í1ã|ï+¨n5s‹‰3u‰øHGGg 1èî 4² )½r/þÔÞY×ú0¹ÎÓ>DlçÓ…‹Åç( Çä±\£éì[n•J=ß5:ËÈ6èc>®G¼I¼õ H÷ôæ¹lXz¼êkMš®åáYJ3·è ‚œ.1à Ùº7Zp!·×fÇr7¥?ô g–ò(¯ûÓÄ1,éC#»™ E¼+0Z ç÷(CYÀÒØ´âæ²í¹î®3qR|ÉëCˆÁÄëB)ÝÇTÔsDj˜IsÆ¿á¨nεWÚ€&5_.Å5s¬2™˜BS¤ïSÞŸnþ¹ghFî¼Ê¶yNŠ¢Y‹|ýx}¬ 7œ*T|í i}–\V©‰{%W[î}w½åÞ™ë-÷ÏÖ7ZÑÜ)á\ms§ghzÓ˜I†Kf&…ö‚tÍtŒ¾¡|ÆÏ­ÃF·àïYÄ4Az¼PëmAb¶4—%{”eº$òà<çˆÃ&¡Gí‚óçÚÚž6”­)6´(•0a¦e4ƒì G©ŽńŒ°",±¹Ätb¢PCRâŠþ rIò kq¨3áJȉ/w£ÜÅ=¹xÖYÄZ‹³ŒÄÙcE®Á"÷«' +ä*ä™(äš+ä³rÊ„¼/½„!ô„AF ÃL’ŒdH&’Ñú2¡xÆXÄ<ß„â£+FCO°.˜Jr½GL > ôûCqO_<;AÄö=†|t«×E†ˆ©_ï#ˆ‘Ï[Dâ™"f˜8ã‰EÔó.ø• [&Ð7IEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/mac/exportpdf.png0000644000076500000240000000227713245231431025537 0ustar philstaff00000000000000‰PNG  IHDR szzô†IDATx^í—Kh\UÆç>æÎLÛt¦Qb1µ>ªVmKÅ E\ˆB×ED]˜MWÒºD\ˆ¥ÒEIQZܹŠbt@%bl¨$éËušU+’úþpû /ëlnA{†¡Q !†Ð…/Ípõz¶ ¡áX„{LKÐ( ”JELý£„:©ÂÔOÅVÈT^B¡¼Uû·K`è/LŽ1==E¡çNäºm¬[·tÇ]·²F@HÉï¿Ãüü<ù|žJ¥²в¬%lÛÖ­ ­ÃúFV.——øìóãÚS¡Ç¨ ŒÆU¸:•¦¦úúú8|ø0‡ÒÇ·!í¥<ú*‹ Pß„®ëRÓÈÈ©TŠt:­&JRJêB{ÕNLD_†µeHY/L$úÉXbÝF¨a°^R혪 CÔMê›'4¿ý«C‚D>ä¢î„ ª€ UòO¿ ”Ë%MÓð¼2¥R‰R±¨wvË$!·cfæ27æf›ÏÀÍ…›Ìg³8Nœɶð¹0>ÆØù³´%Ü 0¸l€B©ÀÕ«3x¾§d¾û‘d2ÉÎç_lxŽOMÏÐ\‰ÄW>³³7PߌŽþBÚÄ׬7S G!R£š«¿X,N—†‡‡©¹µ#j->|НË6M@…>M‹PKËäL"‘ ê kÉá#©H¤$ðô)qu:cƒAêëïþß‘H$B×j“¦ %žO _£ÛwêGÝ–H4J…[h4E 1<:pph4ÁP”nþõ7]½ú]¨¬¤ªª‹ôgÍuÚ¸£ì¡Åbykˆ bƒcÄšMÐ#›ƒ*/^¢Óg~¡³ç~§Ú[w(ÿ˃÷MˆKH\1P_(N®n?uº<äæ±o ?÷Lˆqµ¡nuTHçë“b|ü OüˆŠU1ó@D_Ãë3M@“U÷i"Œ«N¨uH›&æÊzÃbcŒ¾òõ@¬áX¸Æ4 WßÓ¯‡cÆ@ˆàœ×"àÖºûˆº"Jkkjîòóí0Y›"8{Å1¤0þãÕ瀮1U¡Øc‡Gˆ ÐÑ«ws%ç×Lð†ÅÆ@µ0 ;‚5[É]A½:»èq·A(d”>Ã=!!€7áxoÔP BÖÖ%Âp¬PÇPr÷C ¯â)L3éY2) ô²@«[` W2UãXuàß‚&|—y‡™jII'¢ Ü"D…·<BUáNÙþûN~øš¢âCͼÇûÌf–AG&½P@¶k²µ¤¼ílê$zàA†À1>û—»à䇰Ã+ªwz‚C_—ÖðË™%Ì|&]J¤©.Œ'€V¥AÀá׫n°ëíovŠ–#4)ÙRøæû㎂¯Öæ|¾óGÞ#—ùˆY&%ÞcÞV]x‘ÀÜÇ'ýz»Û¹ÅuvŠõ{6oüدվ’½޼ÍjV¯ÝubþÒÜ]|íZÆÊ0Ÿ0ÙÌ"&ƒ™öR¨îWÝÉpñ÷¼¡¿UûŠ÷VØš¿í§Œy˶óù˜õÌ:³’· Ä?­ 6_ìø¹k=%û~îÈßò]õ*ëŽCs2³¶ð9…L‘Bº†ùt"· ùm++Cø?ܪ7}»?sE6^É|(7ÎaVÈ‘ë¨8ë•BƒDšlÙLÙ¾¹ÌCm›ÎÌ2Øp¶¬*Ã@º\Ÿ%Û=î‹è?a>àaoN0IEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/mac/fileopen.png0000644000076500000240000000417013245231431025317 0ustar philstaff00000000000000‰PNG  IHDR szzô?IDATXíW P“÷®Úm¶·ëm]·ÛçyûºµÛÚ«¶ÚÞvçz7»³nÓÞ©Ô­Ûê´îægÕÚ"ˆB,ÑÈ—Ñ"Š„@$@ù’@BÂWÂ7(ˆ¥gžýþ¯(Úvç{÷\rÇËÿùýžçùýÞ7xìQ‚®oV¢  ?~èýøqÂo—-_!6{:ûì×Whä:/â«ìo„Cüó‘_¿&ìÖÔ›\Ö±pXúJG/Á1VYô’%KÄ11ÇýšÊÊ0/â‘]¿ üídršÊ1öémýPdïA‰É •Å[ïöìÙל{1êÄèèØ4Ý¿ýQ >oܲUÚ:xcÊ0 (ÜÃ(1·¡Äè@ÎŒ„Ìdeç‚_Ÿ¸)ÀíöôÑÿýá‹=Kx•û;ÇgùlÔ]“™Ú ¤®¯Ö4!5¿¢¤Ó°¶ØïÏ ??¿–Ÿùù¤•æÔ2_™¿„×fû\œ†¬¹¥fdudk“ ¦R;‡tüÆ$Æ®O`tüV¬X!¦3?Œø{„¿0Oí$­qÐÆÑ20q[guúí£s}–×ÛWQ#ñb\.ÝGÌH‡GÇÑ?8ŒîÞ¾):{Ç=Ó0£ì1ažZÁa—uŒBióC×ÖƒZOô¾A”»Bw|6Øq¹Úˆ¸4)Ò3³æø<‡x`ˆˆƒèðùQ«×w±t“+t+¾f”]=SÀê:›Óo ‡+{¦Pl Ä UÎ.Tµ ¶v@ajÅÕkH¹$GŒ(^:xv×Lꑱë¼ã Üí^Xl-(’— ¸L嚸5ÝspÓŽ°ŽLƒ/+኶…–*»ÄÚV?46ï]Ÿ3åj|}ƒa^¹‡GÑ ³–«4H:}Z] |“@h 0ÒÄ(½cP›­þÙ D7R¢óªL¨vu W´øPÖÔ†"½Uðùýc"(ËUóŒ 6ø»zàhuQF$$&"¯°ÞáIø&€–ï$¤¦NÔù‡Ø>8­ÿ_µT:üPYÛïø\e@tR ròòçø<#÷ŒÏ]=}p¹ÛajlBnÞ%ÄÆŸ„­«í7€N"W>Áe×(Òõt®³/¼÷pdq®ŸþhÓðmdkô(mt¡°¶Ùe:ˆÄ’û|žéz`hD»ÝÛ‰f« ¥¥å8v<õVÚÈc Y¤=H¬°ãBs.½PÔ4°ðíºwü¢ú?A–²WªMÈ’k°÷¨ Ó¼rûàówÁîp¢ŠüŸ– ïJoÊ’6Dy¢ö3 ~œ®v!½Þ‡ ê¾Îb£øá;÷p´¶w)¥8'SA”~k#¶Ì+w »Î6 ¦F¤gœCj–îž~¸¨ëF ˜Üw猤Զ#MïÅ™kn¤Öz  éß|k³”¸ÖÌ·€Ži½CH8ñçr±+ò8~yw¬˜Ü=}!x:|h²XQ(“#>!&›J7mc¨úÂ8ÛÐ)tˈÅÚVœªr"¹Æ¬z7.*TÍÄóïmÀزÖnÄ$Kñþ‰SxkÛN¤ÍÆjFî{+´U:¸PQŠñi @«Š;§3M]w»ŽU˜ï¥F´Ÿ½&<õ D²F}$ÁŽƒ‘xõ7«ÐÔlÒÍän0š!9“ iÎE« ¡ë¦‘;r_jÆIM‹ ;#MPÛp´¨A@’ÆŠ²¶¾ðÒ——‹ùê]ð âój­Ø%–íÿÁÊU¯ ]³e"+¢§›èlzi‹ùùXå9†ð±%(¤œ-NÙ(ÈκO(oÆÙ'4®îéû]¥ówò½¿èAE$J5õضÿC¬Ûü6vï}Í+”øÇ;ÛhCzá¡™¾Öä¶ @¢kC¶5$x.R×ѲzÄ–qNïÜÞÎ×èÚèÜžúoqùŸà…ÜWĩԢ lݹ¯¯Y'Œ•¢´ ;Þ}â|⊄p±nÙ'óúx‰I(„_nä>Oa+3Ûƒ/,]–‚Íçý%Âù“ö넯Þ[@rR^1Öÿ}žé!åGŽDá½èX$–›C~2¢ÔºAf.æ{ûTY¬µ¡®#8µsÿA9Ë'g›îeÂ+„e„Ÿžáï÷—u Þô6^[õ{¤¤¦aý¦Í8£6á@ŽF[*¬ó¨Û¨B=â¤@¥ Å-þÛYWK¬tÆ –%Â;õ‘ŠòÈT/Q*Â%¼$ *B}")Pµjœ®o*Ž×—µ×{Ë×ß93ë&$µp˜õú›ùvæ;çüÎïüÎ7Šö9æææfßyç§?¯ÕÖ£ÏÊ?Òøð_ªxÎìýŠscT¥RÑ.\x÷üùó¿þ*ö~¸®[š™yú¥ ( CÒZ‰F£ÈhCZiã9ä{àY–EÙlö¯ûÙØ×,Òîv»´±±! ö`ƒ*6®0o0¯yĵ֑q­ }m¨Lív»¹Ÿ ½/œ˜}Ó²-²m [¥FT–¥ÈÒ˜ãhùšÈ[1*‰ÜàwÏ<óì÷*•±±;066–ªŒŒ|Û„ŒDÁâöÐÈï!>ÊŠoް§€,þM!eÝ®GO>räÀììì„­V»åÞXån½G3üÅ‘U‹­÷”ˆvwwÏ3þ£¤8ŸÁ}Qrd{UÐ?,+vÉbhb§4…x&ºÝÉGd9ç(1÷Üô¯Œù•þÂV é CŸ”¯ÌØÜœo`Á^ˆE$ý€ÔÀ 9$èËhï/h¬>haÏô¶÷-Ãdž††¦ûK¢Ô‘‘‘t"a Âoô¨G6›Ó…ÂзŽ;VFuè(c–Fy./,,|">ž>ª†‡‡õÊÒõÀ Ý )ŸÏOe2™¢ x3/½|zòõ³g)áºÒI¹\Ž–——YÅèøñJ&8M”J¥XžÉÅèXV,ËÌt#R%~®Ýî@:tëÖ¿èìÙ×Ì™3g”çyT¯×Á¯MšŸŸ/øáß·ñ`~½¶6ô›K¿¥Ô@JeizjŠ>úôSúàƒ¿Â@é5´i‚ÐÖ{²¬DC ßgG<Œy^GœºuëßtèÐcjvvVU«Uêtz(¨¥¥üŠ B¸ÿù|Õv–äÌv\ÚªoÒÇBµ»› LÆl1f³A›Ïµ0œ¹ X˜L?÷Ô½ï{£Å_»v¦§§éÆ4:z˜VWï“ϧlðÎmµ[Vo»GÉD’ɵšM*•*ô£ÿ‘„¢éqsUt-ºÇú£”%ÚÏ_%j!#Õ缎GƒÙAºxñ"«+ݹ3OM¤ç›/¾È(&gkkKã b;A(¶i}}ƒš­šŒ5˜¸#rÎmŽç–b. ²ôÊ9§ÇÜÆùþ±¯Q»Ó¦,È W©˜OÒÆæ:çØ€Âéø²áç×E²‘„c“[,‰±06Nl h¨©¡(p-ްa·ežc'º^—JC¥XÑ‘J ‚èȑà )CQ[)-Ž”àñóÕ&4ÀHƒ‘Z§¨îYbù#hP_¾”Å~e¤S„ÂcܪL¹Ié¨â@§Û"k'êë\ŠL˜Û·oS:‰4^…ôÆ}ŠI÷ß7p´è¨´PýŒÞxó'Rž¼·°·tY|˜„¡çùfg§éÄÛ-CPªB.ĢáÚÄÝbx-îx}õ“mb+a´=ãÜ6[Yu€+ÍñQRhFhC<¸¦Ó)a¶ƒ¼3!_›£Þü=â9j4‘1Çç¤A©(^ç]DÊ$å/ î_‚úMNN#¸Aùâ½¢#‚¶ººÚã*è Å€‚¢Ænƒ&ÆÑÒB• `’ Fƒó™H¸"6&î ÑÎÀP¾X'y ¾£M¦EA'&&hy±JYÔ¾ŠÑsAxÎ>§ Lº^2™$ßÃÆ$q¡VÛ;u:qâ:wîœ À›S–YŽŠáó$ˆÄ{Þj«ÙÞ"7w”%ýï7oÒ•?\¡ÖÔm˜re'@“ØEÔ-\äº~Í;­.ÓñgŸ‹Øìƒ¯Ø¢EÓ”‰ÊÍ‹£tŒMŒ \É dDóÅ¢çã33tåB*îzJÙ²Ç,—Ë ßº uÚ†ÕS§NlÕ·@›vu àa.—‘E:½Ž0¸fj(!›•`T8eìêjsܨøw&o× …">}FÐcö»®C‹‹ËÍ•••.ÃàòåË¿¸zõêGA´¹4^à…¯¼üê+ßyý»óGS*•a°°hüâÁ uB+ÞÀ9éÜÛ.ÂÁd2±õÞ{¿ú]«Õò”–îõZ·TMt;“÷1¼o ÿÜ~Ž%,..Q±˜£õµMÉÈsàTW˜ÑL6¦×7ëHC^Öi4ww¥¤ßBElý¯oFN­¶–«TÊñ®ÛÒ°aŽ–‘ZDyÙ ;bÎdóypŧµµ5QɾùlM¨1€h݃¼šÙ;]!æcjj’îÛsàˆÔ°Ù©Õjæ tÖkwß]¨.<„AJGÛžû„VÝûªüà;¥Š4‚B¤§W­Îÿ絇:¸óöm‡ÁæâÃ…Í›Ì"²mE{/îä£jaÞXöfä ¼æ¹Á¶lcIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/mac/filesave.png0000644000076500000240000000226613245231431025320 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<HIDATXÃåWÏoEþfwíõn¶$±$ mD?  4BäPHˆ¿‚SþŽH¨âÀ… \¸rá‡"%@!P‘¤-NKLÚÊu×öz×Ã{3»›Ô?ÓÖÐ#½Ìlæù½o¾÷æÍŒRâA6¸Yñ`~~þ]êNÿG~—¾¼;ä±ÎÌ<Ó4±ú“µå:öªá}yòÆMœ<íàÙWÓÃW®\Åkås4Õß|›Gae ÙìQÜܰðÞû¯d¹Ÿ}ú=n6,þG67…“OÍt‡€[ÊJab"‹ÜÑ)8¦ƒL&3ÓO< w¼®Æ>zæ·´ã¸p]¶9†K—ÖIƒTRiÀ¶D:ªOÓw:­çƒð}’&ÐhÍFÔÓwËÇdî!˜¶‰^|ë¥Ëý¦Ab‘˜ü3g^²¶P [±è7®K·Këüù5eSÛý´Ã6Iˆ0 i:¬/uR%U/uÏ?ä)5¦¹¨¬´+‰€l™d·­D@FÃv¨…@‹hŠmŠ›Mt;$;§Sœ8D3‡ E”Sê’º¯¿›-e –¶Û–ȶD[ 1!Û˜›{ix†±A¦_…€›ìVY)”!Ø&Ùf}hB¥6JbsâEME‚ÿ E4’.¢Ÿíô<ÇBêql/±ß€Ð"´üR,CZDÚÒt3õq8lÞZ9Q,) ¢¡)WBcIa~ØKì÷ ßÞD g_{þpw ƒòÜžÓ–¥])öqôe@å\ÇOÑS#)Dl«TÚUv;t0 `Ðþ7 ×qðó…UŒñT}¸—ÆÛºº»§l†¡D `ðê ¡¯]¯`ë¯jÈýô9ø-¢CWt÷ÓºI•Ñdçl{ JÁˆÐšêTE3É–`f…1$†r¼qµ„ÍÍ2êõÚ}9wœ1;v¹©‡½z¦‹+ÖÇ}€Ôj5´Z­ EÕ1NTî4Ï©ØSÑñépŠåó/¾R6YØÇ8 LfsÉÿ±´´¤pš¥*9whØ–ˆr “£@œ„enÜŠÅ"åtOÈå” …!ÕYv„ÁI&ÄB¤Ã Ô©7—ŽY>cŠã¾_ëZ¥Ò—=wÉ BÈ 9˜<Üßõ¬Œ¹•ð@Ùî‰÷Þß-ø.àÓ‰¥/AàSÑhÒª¡2{d–¿»·‹Jåný½ÝÀí½ÛØ©V•’!Føb’!6ÖK(]¾H‡©•çwAÏÔ›ulmUèt pÄCþ»áyξùN×9^Þ¬ JCÒ¦ÛÙÙÞ¾ÅשּׁüF—¨Tþ™§Ÿü„ò=\ßü¿_\UI÷5… 3›ïzáRß®Bº5OOOçOzN9§WQ­€å·ßzãÜ¿ùët®¸úß¿ŽÿŒ®¬"B!©IEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/mac/textbold.png0000644000076500000240000000311313245231431025337 0ustar philstaff00000000000000‰PNG  IHDR szzôIDATXÃÅWklUžÇÓÝ¥Ó.îBa·¥ÑZ|Ô´@%Æ¡Jxù¡ òH‰Á¨ˆÑ€ñØ 1>€Äb ‘4¼Ä†Ê+<"PR´Û-­´tívgvggïŒçìÜ…q»»lËor2;wî½ç»ç|籬aÌÿ9l© W}\e)Óm !Ë»2=Íy!ºöÜÉýÛÚF•oyÍjë„¿«WQ”I¾;v¾¸¸È‘ºQQ¢ÄßÕ£üuõV.ò;L 'F 1&Mò8m‚ÈÇ4†ñx|R\7çY6ñ #ÀNïèÅxœa4ÒÒ2ׂ5ÞîñàÑd'€ØI›Ê‹ ʧN))Z¾lñäüC™ŠP©]d˜–––î_›NôâXç˜9£LšŠ£*ÃäTòMþöö›þâ§œ¤€©Ÿ8Ñýé¦M* ÜœʃýЗ_}·–l†ƒeX‡|¨Ÿ7÷Ùµõ¯/yRŽ˜`íy0KBê[¾h†uõétpÙü›šzzúULŽ0uŠ•å|—é³ ä³Ó­—Zî÷)覸C‰‚%ò$€UÈE#`hVBL¨ Ã8v­íF¿#g?è:Çvc¼#"¡u R]7E z–ÔÁ&׃Þ\Ÿ-Óäd¸ñPyÒ †Wr¹D4œEw…•(Â5ƒ*ÇPC"¦ã-øØ Ù“¼%ùhzŒZŒÆPÉÙ?/Ñ=£v*×Ч„J|˜òjx,zùµº*NÄ(oŒ >ÔÜ+{€¤¡QH˜ŸÞ>¤ÂX‡Q Š/àÊYåҌʙ®ÉOU¸‡d“¤,¯’ßšš;Ïž¹´'["Ê™„3 Ä*pû¤­Û·UÙíf&D@²‚¾6× @ž8rpÿmEVöÀöŸ™Ç%!I ¦¢Q•º¡®Î@Èr·;Æ@̃Ù1g¸'ø¤56V¾ôj݇αŽS˜Ð˨#0Άûäýß'2¡uT×,œë~nN­/¦‰|4.òÓž®ñ–•—»Ž4Þ ¼é\‘3 ã4´0lƒL¸>…Œë/ž¿¼öíõ+՘ȇ‡Ç±tõ›Sløv|¿‘Z¹‘DQ·¤â4©{· Œ¿|þº#„í‡ ‰ü’õ%iúŒÜ ‰…Ù2!‚8}²µ_Ì3Ý…õ`0Ì0c]> ø0¬ <RhI7<º‹;×ס¿pO@(P!‹KK0Y•Ê N-Arh# šÂÑjI1FŠ K$$\`@¡³0x‹pIÁ[: >yÂQ ž^ük%Þ¦pÇÚ¦šB-} hÜý El“ø•A½À&ð —Й?ˆr8Ó>´Ö)‘Ô<®ehÅé‡&e¡^SzÁÔs½hÉiäC~]pÒ²g]Š9Þ:­¨Ö78W)Ê-‘–ŒI,œ]´äµnƒ2 ÃóÙEÒÄXZv&V”M FâVm¶2£Æ}ªáœOŒ;ª`Èq5óî†B«s¿. Õ öpL’î¬Èc¢o»zùj½Ú±ß­ØÝŽí– hÉ¥€VsÝ Ÿµcßÿ‚…?‰J(8E$Þ0º×ì iU]°YXRZ?³l=ÿÐ1¡uE<³M~ÉÔþat?Û>2³®7‚ÿ 4kQ&À_„óŠÒD8H鉢O!aw½g²øÙ›z̶‡ãÍ.[ãù§Ïÿcõ¸Ú É(:Æq»`ôßþ˜ØU±Z¾a;!ëä®w@í È¢¯»âWíwõ$@¢Fêù.Y`,¶WäÑﻚÍ,Îø †ãíòóHìIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/mac/textitalic.png0000644000076500000240000000221413245231431025665 0ustar philstaff00000000000000‰PNG  IHDR szzôSIDATx^Å–]hUÇÏÌìÎdf?’˜æc?fÍÖE³V$bIª5H„Dl­QŒ…"ê›BßJû >4à‹¾åEA‚Ò>Ø”J}¨(E!Z›T“Í&»kC[²»³³3{w<—9°ƒ„M›vâ—»ì=÷?çãÞ+8Žÿ§à>lüÄG1¦‘,´l ¹î™'¤g>÷ýW^z`Äô»o=­ëŸðà†ÉrkCܽûº•žž.ÈÎ~<ˇ‡$€ˆÇ{CAI‘L ÑÐõL7ˆ"ŠÐcé@ ù[DJ ˆ¹/¾<ÈÏ %§¦^IÉJT±P@0ˆí:;é‡üw®lRjæ íª©Þ;v쥳£‡Æ5@’4c}q~õÂü•Ìûçp&Âî-«'c×Ï@àæ›­Íý0’JéQ›0 ¡§|>Ï;âg|@áÏf2©ÀBäùo¢=ŠEƒòîË9à%›N'5‹ºÀÜX]Ýh ð9C±D,T·lFŽ$€……%ÿS@Œ&õTÄä®—Je«^©9,À-ßR@ùOôìÛ/«Q¥|‡çß .—+ÀO¾ÞDv0­kõ:€eñ©ÛùB'‹{" ‘Œk<üs]¹víF+>×ÀH\4jÖlÛ]ÀX•Š›·0ÿë¾  üGCaí©pW¯V³ÜH ð𯵪ßç ¦S¡ZÍÍ¿CøO±@ýï¿€l"×jÔ~Ü€¥ëíYFãz:Âo?‹ú?(¬,ç ÌÿžD`¤«7É ãíÇÃO_oBcÓ§ŸÜÿxF3LÞ‚ Ü×ÏúÍ¿ËN“]Å¿y£é à íZmL€ˆÓC=‘‰r–EO¯ @~u½f™ÆŸ€ÓÖæ.¸¦¹“±Íæ ”9¸ú@gÏ€Ûü¤ hñ·?ª?~ûéï8U‘B¡uAò#pÛ^@ûÍD}vòý—Cáðd¨;1jîÌϩƘ½üH,3Qz€†‘¢‘™üí,€TŠH`ôÕ&^xóÔgco974|pæèñƒuK‘˜ã¾ÿ¸©á~ulbòðÃÇçž{íä ŽÐIDHˆB‘ÉÛ8O¿øŽžLg>92=¥÷ÅúÕ&(Rµ À¿¾ å5™û  ÛáçÇûÆŒ÷å–WÏ}ýÍÁÍõÅ“¥•… °<þÒ@¨&Ú¡åÎM 8à¥BÑäkLÃlòëu*3PTUêÇ•-ü¥|Û]hT ¨Þ-5(ô"Òôï¹ ~™Ÿ½á8pfyiñul± 8M©Ñ°M³zg G@¢5E¤(wno^®Ü-z8ûõâìe¯"ª7ˆD£ðŸ5M Ä"ìVøwî‡`H1 RF¶îƒ2­«"5oþÛFÀA£Ã£-²éôåÈöðF¶‡æv‡Ñ¿Ù¨Í@¹… IEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/mac/textjustify.png0000644000076500000240000000235113245231431026117 0ustar philstaff00000000000000‰PNG  IHDR szzô°IDATx^µ—A‹]5Ç'É}ïMëFð“L¿€~Û…íBŠÒ…Š ¨ y¾º± jw ºpcÖÏP]XA«P´j§:cÛ©éLÛ™wïMŽ!YÂõN©øsroÎ#¹9¿wN"ªÊAí©  ØA)d{ዹrpCT5Or|ñpŒá&#ïut1Ã:áÜü]GiÇÎ|0?²sBïÅ÷ÇÞ+ÎD¢µBÛ*t]`21´}€bßa qŒdU³ŒQf3xëµÓi†Ò’³³€À¥ëphfãä–Kk‚ˆ°lßü¬iò”oײoãLôà}Zì×W:zð!$Ÿ¶ëX™ÂÅ_•‰•ñ ÄYŠÊópüѪ¯Õx‚Â@ ›ÉÂÑ“lq€) €è€6[ú"BRsšö²¨¡ÝþêPí@±c~xv~dkWézÏc+Žeç“ ë¼"äØ7Žèb$Å}:q¨Âþ²g6uÉLJü[k¢ø& Ñ^}e1a‚̉2\¼ê™6–•™py+ô½çÇ ¡ëk„ï®y…þg ³iì¯ s<ÃO‘ÿ>úX£ÔæØ+5„µLe‡ •­ Ã!Îï6©@7Íb–-“¤jÈ¢Íb ìgU ôDUlP^¯v`ðË+Q8¾e€BŽ~tv¾º¿H΄McPа½Óá¬Mï!gÁÉD’Á5Òà…eÛ1Zú>gIØÝ]òÄãS^zyB±¨Ò¶WnÀÞ^‹—¯ö¯4üq× >§è«›B蕉“è¯tË€ ü²© Hß+kÛgÁøíŽ*Ÿ<þ¶ ¼  Úró!Õ3ev¾D8“’–Aý l³ Â(À–D„ºûÅf8묘2b aÙK¿ná`Ë BøÙÇóÕû€ÆæòÚ8ƒ>(ÆÞ+"$(wïuÌf ´>`ERÌÙÒb-BŒ•©pòÔB‡ ¤íÓÆ`€ë[phjP ü~›ø^”k·‘(`cÇá½ÇXß2X#qËz \ÛTfÁeíoJiÕ|uêÅwäÿË¥ eÂ÷ó;ì „Y“ÛÞ0„¾*ÍŒAH ÝHIfôëKŸƒ |úóOæ«!ÀréqÎTÖnîä‰7vURY_ßÖTÊQ¸u¬ðÙÕ)过`¤UG² HUŽ›R‚¹÷u9ŽY0TÐg³Ø+*é·ªý£“ü"¼í,w)Ö^IEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/mac/textleft.png0000644000076500000240000000232313245231431025353 0ustar philstaff00000000000000‰PNG  IHDR szzôšIDATx^­—MoE†ßêî¯ Žø„¿—ü ÈÉœ@â­6A á2'àÀ…\€Ü‡H(HK‚B@A `G‰½ŽcïÌt½5-µÔš™UJzÝížšîÚ­g«fHD°ÈNŸ™€ 5B¿ âxå˱`±Aˆ‡|Á3}~ë2L¾ºriü>8${îâ‡ãÕéÀ xÏ`|ÃxjÅÁ{sDa´„ªD€ºf½¹, ª†õæ²t0f~ :Š´2F0gß9€A2uv×7€•‘ ‡[\ÿ‹@D˜UŒ«ˆÎ,a½õ-œÑ9{§C°?Ü®Ñ4 ÏŒ_ÂzU×-×þ–¦ Ï3%¥ÿ{ò/Ù\²ëƒ)¸ ¹¸¹‰rI(‚Ê8:õI pPTUql’Àª Î<€ ø¹ƒvŠ2]ßFϧæ4Çeæ›"ìHAd~´>^½(hšËe‡Yíõ\ç(¬I»# Ô ` Á{¥Ò)d'³&äÚ)žçé àÔz€ðøDÝ´…¨»h>kXkuh«`Y’ú\ଭMÀÇ]ÁAHFãTUßw€ããJï¼¹ÁaÎXY.ð÷ø¶DßÙ#p#(áöŽ ž±ú}cy0NlíÖÚ[“íè€ló˜)ø.óÉ›—‚?ÑÍÿÄ ~á½TùPF2ƒP›6TÂëb"s%ëú<Áµ…?¿4Ï;*¡Ž™¾áBg%üü“ñ³Ó#Ö…Âj{ÕN§»³ÄÊ' –JÂáÃË£Ô×Ò.È"(œ…µ ™aˆ°2"¼úæ.tAˆªæ@±ÑÅÀÊ’ãî=hU#H˜ ˆ‚lMïµoî `yd±yËw÷£b~M‚ÿp¸õÆÚy…ðÉëÀp :È ´ÝªÊ« U‚±Šò©5Gë‡PÍ,®†Ñúo@±#¤àÔŸŽW™ÙÌÃ9«0¢ "­ÎÍG躵Ԏs‚¶r"RxÏ•/¿>áØ’‘aò*á}KûÖ¾®þ»[Ø3îˆfV°}€¹þï=|gJiÛóî‘$N0 áo!Ò¬ý_)¸¬c_ b5ìhÇ*mÁOÐŽ› :¯‚‹ÛqÞTÂ4WKãé—&Oŧ.}6^­ÀÀ+X„ªb}é¨AáH‹•µ±:2+/c%R0^éµöäȇ>î μÖób¢î"úúàéÖRL×öOŒn)ÌØ;TP¸Ýi{°Ý ƒvþH?P ó€Ì@%|ñ•Évž‚å&}êz1ÉÞŒ²·àüå$Aé¢lþb’*ªÎ*_ö0šÌdtæ0qÚ4uœ”Êoôk†Oöªz¯ºˆ#1IEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/mac/textright.png0000644000076500000240000000257613245231431025550 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<IDATXí—ËU‡¿snUÏ0 #OqI|`ݸ‘…îŒñ‘Ø‘øˆ… ¨ ¦e£ DcÀ…1Ýø'˜1.|"Fã‹A@‰À »ªî=.ªjzª»XÉÉ­ª¾Ýý«ßùêœ{ÅÌèulÚÒ@ŠKé2uêÇll´Þû‡™°iscðx§y]î[1Ußš­?Ð.ààÞ7woüôçÀ†åÙ³b¾;#‹ªpð¸²nIF9¾>bܳ b§|~8áÞ•J9¾ÿK¸ïvH3øêÀúeP«)‡NÀÝ‹=Š0wHyõ¥ÆøØh}é 7vml&Š÷È)ª¹à$ „ˆ#G !|ÒÔS‹#ZIÊà@Ìå¦g`–ãÂdÊÐ`L+5úkB+ÙðZåH›Íí HË­íÜ*SR•‚6Ø´ˆ¨1P+ƨø|Šd@ $Ř•"ac£uÛ´¥Q­7¦;põÏsÆà‘i÷ªÝ¨zêPáÈÕ±ÂéOï0¾Üºc÷ú•CB08tÌö8§üzJÎg{$cýrADùõ”pÇ¢ŒZñÃß°fi@Q7F–xœ*CƒÊËÛª¸*À¾xëíúú “žZì¸Üò`F_-€$õDNɲ€sJC³è‹f†àœà½áœÐleÌŒpÊLmö»"¯tHv0T¤Àf¤£=\ º¾"ú‹±VĨS€%E´€f1¶JPú" Ø=6Zß3S€±x´ 6í¡T¼‚ÖÉß¾¸§¾á–<¯?3F– ©÷üvRX·B ~‡5Ë¡Ùô>¥l¸Mh¶?ý ko¢Høñ¬Ä5å—qX5?P«)*íÛ÷V2 ßìÛWß0yѰ`¨ST ŸA’e¨*‘SB0âZ^&/]J˜;TãrÓÀÀEx‘€Ašæ"²$0wHyö…„÷oÞ3eåÔ»ÿØ•ëéi¸Þ„¶ër8 <86Z·éL¯~S°õ·AØWêJ…È µÚ l–à,WÅ]UvÐñ,ð@É‘ö#\„W¨‚°—€Oö¿S_=y9ðçiáÎ%B’ŽžV,0T„¿Î +æC濟2îv´Z)Ç&+æ{â(bV¿ðÌ öðþ»õÕi©CÒÔˆ¢Ü, øœ‘¦H>' 8U è«ÁÓÏߘ€r n´\s \ûK-¹ ¤¯ B-Ê4ŒmÀC]ª!]Zq××°S/˜î€ñÙ‡ûëk[-81·-‚VbüsAX:¼œ˜0–/PÌŒñsÂðP ŠãçáÖù`Gÿ ,›'8œ3¶>÷zÇn¨¥fTÃøìƒ÷v¯KCDPÒ,;½—ª`NÁ§‚¹‘S’4Ÿ;Ð/lyªw;Η`y þRн ­hÇq©ßh;Î*Úñ®™kÂÍ«b©è ×ê@ùœÞlnüø@}ã‰3Æ’yy®Ï\TÎ6Dá䄱l’f³—”…ƒ`Á8}QX4Ç„Î7ÏQ8=),ÌÙ9yÎX|“à"O<ÙacòÑúFï 3ÉOrŠUsý>@J€j>W„W¿ H³\€ùÄqg;:¤ StÚ˜t^ ^ÇÆ¤ª2Æ¥"å*6&¾ÔrÓ¶Êw…‹ö]³´oÏ;ˆp!%V¢¼]ÿà?´>3îYJÎIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/mac/textunder.png0000644000076500000240000000223713245231431025542 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<1IDATXÃÅ—mLSWÇ+êâfÆ2c¶lݦË&Q7£!™šM S–l:'CŒsY6@^MF0¾G—½2¬Ê‡QQ7@“¡-`G¡/XyGTÓ„%$ÿî5µ–ÒÞûÁ¿Ü{Ï9Ï9¿óœs{OD¤x–<ñµqÏLð=h(¹^ˆu|¿Ò+> ¨…ú2¯¸2¡œëÃ&Øò[±¾¯û!SÛîtWZ® ³Ãu\µ:\bßsÇ^ñês×lC\o¶»F¸?s9×s;¿Ø”žc;œ_Ù£kqº›ˆL"Ë"ë‘Ñ_!øMf~‹¿ ˆñ5mNwÇ}¢L„Ÿ¹Üo<:R‚Xhì#ª»ETßKt0¯²å‰`¿uãY´ë‘0p,—ûÝ>:j4aæ5]ãé‡Ïu li Œã;]D| húê : &A }X¦€KPÕeè!J• Ð*WÀ€ xµH‡‚h¾/S 3/o&ªî$J‘ `»'S@‡™_¶! X†íƒ°Þ•)p °ÔJTÑ*MÀ<$Sà f~Á„,`’%48e üÓNt¶¨Ët xúA™—[ˆŠþ%ºˆeH” p}@¦@)R_p3Ñwjûe üu“èD-Ñitñ­Ý2þÆhôȂ߂Ën¡,:ÀÁ•q©9¶ò®‘QÜWIÈ=^åpij…:¢ì}ŸˆNƒpaÝÓç†`¶ì)Ô÷åaö9ZHhn>%( þé’mˆãýIOÖIèêmG,šFFÇ2ä‰Ö§Œ}Û×M·ŽÛUØ·WJ:KÌBêOá-Ðàm8†,@ʪŠß«P(¦zÂD&dÅŒIîÅ ý| øPúD…B1…; ÿäëÐÈ„Ì]ûÏNß :e!:Y7èNþ¡ôvdB¶YŸuœÁÀš¨Ù¦í(/¬t3¼\v½Î}% > <ž_¤ÚüND\FvÒÑ’î"ËðÿñëX‚cÚ¥ndEÛû@£µÁÏÌÞ3ÆO¿:Ò„˜8¡Ÿ‰$ü >¼fWÀk¬NN‰ˆSWnÚy¢3#¯ºÿçòöáÜêÞ‡ ßsYLÒ/­ÆìÜ?/ü³÷óxLg‰I„Á§ ƒsð«à-ð.˜‚EsßÿøË%«¶f-[“R°ü‹ôóËצ/û<õðèmjå¼¥QhÞœþ—‰i¾²à-"4œùQÌŽ}ª »mXÛ˜u ÒÙʬXŸÑ6b›ñöêfŽWÅg6aXxùÊ‚/NW(ŠB:‡¥#öÁ6h¾dŒçB­€Î>þ¬ïíu|õ(ã«apœ`žé´ Áb°ÄƒÅB9ïü’7ád¯!P‚7Á0׃9‚è ,>;×ðÃMUTÀIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/mac/zoomin.png0000644000076500000240000000324013245231431025026 0ustar philstaff00000000000000‰PNG  IHDR szzôgIDATXÃÅW P•UþüïáV„Xn( ¨”Êfˆ b¨¸ƒK²¨¥ ¨áhZ*Æ–’(‹ È"È"©‘ 3À ˆ ˆ8¸å0ÓÔ¸ ££ït>º3™=,ëÍ|s8ç|çÜsÏ]þ‹DDÒÿ‰ç;%IÁËpdx2>dlÒSØáWü«ˆÇ0-Y²$1!!á,ÿÚ[[[ïvtt¨!¡Ã?x‚¯øÇðO‹aåààœ””TÙÒÒrAǧàà` è–Ða‡<ð‡ø.@ >ÅÍÍ-¶¸¸¸­¹¹™RRRè=ŸUW­æ/-å¼6ûŽÃÐa‡<ð‡ø¾ñ§õ¶³³ ),,lkhh !¡Ó¯9¥ï•¦ç—?î“ü¯&n-J‚„;üà8Ä÷e_ô.@fxÄÆÆV555QLܾN›U[ó¤•)1C6Ü;ó@CüÆ’k9ág:ŽBB‡~ðÀGâ‘ù4.@ÌÞÔÕÕõPUUÕý’’ZöôAæ^iSEجŒ[Ñ©wO¼».Ž|wd$tØá|Ä!yO“.ô Í˜^Q__O{â⯎\—’üúŽªH«´ÎÉ-]þE}Ù'²–|ân$tØá|Ä!yy5-@ÅX••u½ººš#Π½s3;bBk¥7ÿLÍè¶Ë×Èe?$tØá|Ä!yy5- ?cKiié½òòrZ¸-%{RT]ôöŠ;’éïAök hÚö²ÙIÝ:ìðƒ>â<ȇ¼š0€~úôiuee% :rÐ:¾5:úüÃ\É)ŸTËIÍu2ê¢1ŸQ·„;üà8Ä#ò!¯¦ dlåÖÝ«««#Ϙo2,Ú¿ ­}œ.y\ É—I«ï÷tØÙøˆC<ò òö¥룢¢nbÅæžúvè®æç¢»#ÎSZâEªÉl£iù}’|8€%tØá|Ä!y¯/Àðð÷÷ÿž•UV_™°«&zxâOÁ6GÕ!³ó¨tc5K‹ÚIòä–Ða‡<ð‡xäwAÿ¾œ‚·­­­³’““»)¶°²H ¿ºU:ðp£I*%ÏÉ£Ji/Ç2` vøÁqˆGäëË)À=ðÃ×ËË«žïuª;áv`ö¹$)ò‡O‡'? µÎR§»£³ Ò9Hè°Ãøˆóôôl@‘O»/7!–ÁÆØØ8Ž[x½¬¬Œ/6ÿ˜|¦©`RâµH´Ùúȃ0‡ÂÇÐa‡ÿBÓÅÛàûùùuÕpžŒ‘ß„½¾º gSSÓ ooïë¹¹¹téÒ%jhikÍ©l- (¸œh%:ìðƒÇü.wwwòññ¹£««›e6Lë0,}ýb/è3\ ØÛÛ7p7ºøX>4ííítãÆn vø™×ÈüZ Î:m˜7áQº›ÎÓÅå’¿+âYïQ„#ÀÐаÀÌ̬ÖÖÖö–££ã}'''5$tØá±†gž³jÆøG‘3•”°@E™î:O½Í察WÄ_½ˆTb9 sĽދe7c?#бMl¶¹ŒÑ “aý™“eõ¶©JÚýŽ’.TQ–‡Î“2–cÖ³öÄóÞ„²Ø˜ØÍCÅ xhŒ# |Cp1˜é)N|ÄEÛ(i£’’œU”ÍEøXÈb2Z"¿BÓW±¶ènËWzb‰†9XØôÄßnVúм@3Yýù4%í¥ê."g±Î“•–r¦øLË¿¢Ñ«åŽôc¼"Â̇‹ã6ŠaÈ0ð²¬(2—Õ!¶JŠž­¢C.*Ê]ªó”——Ô†²» ׃ëöZñêy‹1™aΰè_‹ÁŠâ Yf§¤Ø9*JuUQþ2õ K9[!kR€–˜ý@1kc1¨%c*cc:c†89=€¾ÁR_qb“¥¬Ÿ®¤}N*J[¤CG¹-¼ ‡iZ€R¬ÿÆñþ·á¿£Ù 'q"zà$6]QºÙJVGØÿVÄzke9öJwWÿƒpü>æ"Nn™"«—™jãÕì%NP¿—½ÓE¡6 ÿQ©â;a"&¤z™›Ð\Ø'2ÞdŒ!Žì6á C#¡­! "&1 çþ Ñû‚þAÉnIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/mac/zoomout.png0000644000076500000240000000317613245231431025237 0ustar philstaff00000000000000‰PNG  IHDR szzôEIDATXÃÅWyPÕUþ=x‹[‘ˤ ¨!æ‚!²H¡Ršâ@¸Å&% ¥è((5(bF¬ï¹ ‚Ê¢ Ãj! 0ˆ!»:˜Ø`ŽÓ-Ȩ…ït¾ß\Œ™Ê–õf¾¹œs¾sîw×ßE""éÿÄヒ¤`Lf¸1|¢õ~ÄÿªÑñ$ÆÒåË—HKK;Ï¿ÎŽŽŽŸ»»»õhaÃ8x‚¯øÇøgİsuuJOO¯ikkëaЙ3g(**ŠBCCå6üˆƒ>òÿÄDç³<==µÅÅÅW[[[)33“Vù^·[¸¢rÂâ÷NŽðŠ>Š6üˆƒ>ò?Xo''§˜¢¢¢«{ÇyYP™‰OB–䟡•Öä$Këòå–mø|ä!0ûb %Ã[«ÕÖ677SªnχÀÈiufª´áô'RÄ…X)º%Jн²CnaÃÏqðÀGòQõ  Foåááq¸¶¶önII ½½eç9éÝìdikõα©]1+‹ÐE]¸wdó¯haÃ8xà#ù¨ƒz†ÌB¿cÆÂ¸¸¸ê††JÒí¿>6äð!¹xü­Êîët-ú¼ÔÊélø—E2yÈGÔC]C¨krssoÔÕÕÑ–ø´ Lï´´›»Ãªï§Ÿ¿EU•·¨º¢›¾ìlø|ä!uPu 0”ñAiiiOUU½¹=3k¼©üÇÃ’UY.ÙE.:šã›B>)r ~Äeó‘‡|ÔA=Ô5TÀ0F\yy¹¾¦¦†&‡8ˆ–Ôpï„ä~’Ô+›ht`+™®k£Iï·Ë-lø—yÌGòQõP×PÑ>>¨#êæ&Ä28XXXèx oTVVRSKëwÍ…–{¿Ù-/‡®g«´ï~¸Ü² ?â—›[nƒÜknn~‘ë0^4ø&ð-0a,¶²²:æççw#??ŸÚÛÛ©±íjÇñšŽS¡…WØì¿6üˆƒÇü^///ò÷÷ÿÉÄÄ$×zœÑQÚAEIn*J_¬¦š£¢äy*ÊX¢¦Ë4}«m•Ùâ3­|$Ä WËï32„ñŒè#A· 3†¹€/‹( ³QêcU”2_M™j*X¡yÈËKjC%‹0°scѹɀå˜"^=/3f0l3`­í(Eq¸­R¿ÓIEÚjÊb'Whôþ¶Ê˜¥Ô¯šjŒW³¯8ACžö8 ¡Œ ÃYâ;1E Hý47¡ðOgLcXŠ™/Žì0ƒ6áCsaOS=^#1¬ÿþ£¿k\nq. IEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/win/0000755000076500000240000000000013245231431023043 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/richtext/textedit/images/win/editcopy.png0000644000076500000240000000245513245231431025377 0ustar philstaff00000000000000‰PNG  IHDRàw=øôIDATx^¥–Kl\WÆçÜÇxfüšÄ¯Gj"îûòÃ(LfBl*h€Òá£åCüòûŸ=ûƒgç/ "üê,׬Mä?'V66·ÄŠHucU^ùñ ¹vñ[²6û’ÔVßêÒk27ý¢´[ÛR½ý‘¬ÝxUÞ{錼ñÔŸ4€8ŒK;€€D 0Ùuܪ²¶²H% å¡ï\¢2ü ÿxçw´Ûqæb{»ÁÖÖC£'‘Þ<ðØ(äI äF ƒÀÅ`šà¢lA§½Guc8ò™SŒÝÿMV?z›­ZƒÔ´Ö\¿ÀÏ~rŽÙÿBœFXk”RM`»\£;±¾A+ÿÎÕ«oòÞ»¢^ß ŠÍ¹‹³Žþ2_9ý9¾öÕ“ŒŽ "b°N >9H ¨<G†3žat¸L­z‹Íõ:Þ‘£ŽÞ‡³BÅ$i‚Ö02<9 {Š”úÓWô5àí°`[`wA—@pm|àØØ•¾S¤VQ(ô¢} ¬uXk3Î9@UÈîpP@Y¸]¨ˆ!ð-} è^ ˜È"Ö’$1Ƭ±Xk<ß`] ¨ƒ/Z¶ØÆ€ÎER H„ Ì">¢È Ž£˜4M»Ë=´&Þ«ÓìXÐä }ÐØ-p»@pÝȰ]Q³(Ä9ÄH¶8Š"€,¢$IH“q È°û:0`¶»±(Ì:Ø6þ¡¬L‚¤AP LU’9è)±"ˆ"WÀ"Š8NñýüЊb¹ŸÊÐzûð´Vy.9€¹Î?^?`ÉH—»âá)…ö4…b™ÞÁŠw¦çHÔÀÖYš_fr¦y r;²É,àç.zº‘Äs Êà•ºQ‰A« ìatä8e•мù!Õ’¶ëL~¸6SÛµ3ÆW~4}P·á´&A…y7K ´6HÜdåýßâ6¼~mùò¥ö»·6¢é…õxh-iïë ÒÊOФà}`J w¡8„§ìÔ;Íç/]¦Õ±¿¯ïÙ täà‡ˆƒf‚1ˆ!µÅ~ Þjq3£tîJ@{¬Ç­=Áqæ§®Ôçÿú‡ÆîíYsþ¢{n©Æ°Ôóâ,wM.†üæ×çÏö ŸX`aê_LÜÜäýfÂPÏŠû”ømQJU€ÐÙâÿ“OÂ0ì$õr•%IEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/win/editcut.png0000644000076500000240000000355013245231431025215 0ustar philstaff00000000000000‰PNG  IHDR szzô/IDATXÃÍ— TTeÇŸ€ˆ  (›l² 3,n ÀèĨ„l¹ df¹æZ–)‰ZJ§R:™Qƒê ŒÀ@£CÀ`%!«1 ÛÌ»Ý7=;í‚É©wÎï çûî{÷~÷û¾ÿ½@ü—LÈÈÝÝéæævÜÕÕ•ëââòÖüùóý ‚ÐFÔêàß>èØ+$$äVaA~}]­übfæÀöíÛÚ™Lf¶½½ý4ÑEÔ‰©z0€÷D¥é2hÝÐèðý.€þ¨­z{{ßÑÖÖ@3ƒ) Ó_Í+¡†KÀ†¼J€ðf·q$Ä277¿€fÎÈô) €Íf.áÀK`*LLLĦ:…k8†£PE@EÎf…Í7hÆAž˜ŠÕ?µatèÆ"²˜©°´´ãð«®,ûÚÖ\S –¶¶¶Í8…OÅþ'7\O†j]èªÝ ^žKî£Ã+xËZ Ÿ"oòÉyóæµ¢éVÄü±àää~d›ÑH~÷„Ðq»˜ÌÏùh¤@pNÞýõvȈ³TšššÞ@ÓÓ ,È:Ô,눵µ5 ‡f<ìÝÝëõ¢£tîÛ>ƒì®ZwëâTtU®ƒÊ Ž?$A»Èœpü|XXXiÝ7U²ñ±²ï~—ÂÎÎXÔý6CVr|æÜÈ'`¬Œ#e& ,ÕYÅbÀ,uáü–¿Êå844´´®¶bhddT Ë Iü¥·®M‚&²È“FFF+"gvgá,¡)Ó};#d8÷Ú8P{xxèRŽQ¼ÊnT— õ÷÷Ã/ À½n)ùÚ+‘rŸÅsîêëëg¡}ÄdŽ„öB7«¸·^š©„"t~kòÛ ølÛ8jAá¬Y³‚ðÊX¿6¬©B˜?ÔÑÑèê¸׋.(|—ºÈØN†ÔM:‹l£.Úd˜Fís°¿I‘T£££*zoç’(É­áa«ÚE×#R©(Z¥­ªßI¹wø0ËÉD:×XK€ßˆE‘ù´ŒOêÑ066öåp8ƒƒƒ b .ó’”™™™PYY õõõ*n6Ô@î¥ÄqgG›NW§'kñÝDú¬x"&¬œ¸ZGGÇ¿ª¼:ÞÓÓ\.bbb€ÏçCrr2r òÉ7Êíç™6kjjRRý*uºŠN{QZH•ä¾éܸ±´´4UŠ===AOOÚÚÚ  à*¼¿oå¹ÍÚ _{¡*&aÐzRNÍHþ®->· RŸÌ»œéé阘gÏž9Ù9ÐÜܬ¢³½‰ Zé÷nU}ÊmhÁ™øª±£ÓOW¯\ܘ’ÐÓym™„–0–£ ‚ÓÚÎ= ¼Ï“áØ—'ŽîWfeœQ6ÔWáÞ×ø¦~¸'íÄ»žŒŸ³œÐʱÛa ãÝHùɃKlÈõ‘ƒÈ:ÓfÿMNïP'û.YÀÝrÌÀß×M†2Ü€pmîܹÕ!«¼ú+Š>!E"Ptuþ_^½0ŠŠ—Æ`0Üþ1 ¸Ú?_qJü¢Y9“„âÙPƒú»Y }JÈËÑ„mØÝ¶åîÕ<ÒRwÛЦ''ä æ‰<ýíBùÛõ¯#OÝúe"•h“ñXYqû¼¼â“ítuu`;ëVBåßò;cc¨ú±ÝÝûdæeÏŸ­]»?QssÕÚ;–©ïþ×'úù#4ÉéoÊsòâ‹/ÈêÕߑڇ—É=Õ5²pѽòT’ÄØ\ޏ$’c—²†Ÿ-Šîx”™ºŒB¥ŒaNe%ÇŽÕóQË1"'èm!àoÃç ‚$AÀôƒé%>6@ÿ…N¼”Àâ3\‹åJ)˜è2(æUä1šÐŒŒØØ¶…BQ^âÂñI` RA”"f ¯t€¼ü©8ŽPñuEpn¹$ ,[1¥ÈÇÝ‹K‰]LðRh­Èɱ9Ñìd즀h ÄC)CÒ‹ÓÜô^:ZN.!Úq. äe;PŽÆïj´íðk@°-…ßg¥s ËÑ€ÛIÑØ–¤Ï@RãÄc)¯ˆØ8°²@+l[a”Òyã ¯mel,FWë¿ ¯@iCaAûkîdÁ¯`ëù¡å¥“‰{>‚¡é\<À|Öhõ)•£‰´pðè8oþ §:ƒÌÆ2.®æ–^àÕ×À‚E_Äv…à$Ÿ[€QA|9Óð» ™%`[ÖÄÏÈ 8xñQúG‡iè*ä£ÖÉ$úÀ‡MK‚tvžFA<\;…cJ/¸¹é˜¬æÚ€#`\ä‰u3xý™[¸-ç:ÐWàyCssÀL€Èr°µžÊþ¢0ÜWÌ´²¢Ñ!ζõ0»b=nâr@– "™ÊiŠd"d  ”zpëÝÖ”ÙŸã¹ý?a¸ç8E%³(»}-ÑûVòæð\È› öàhŒÁ¤ ƘÌÍ ¹\èîmÿ;×W×R²½‘žž$ížCc/D»Á燻>7üóOx¾YÌ)/£õbŒ`Ä i™˜ "ïÆÞ|¾ówË+ Ù…R1†ò|ðÕÂ8Ÿá¦w–óñogàí'ˆE™ÿåJÄKaR)D$ãHö¥Vd5ùK7ÐwxÏxëÀq_ÚL͉í¬kßGÕÇÏÒsh%GëÒÐpˆmO­àµ_=ÃÒêù$“ ÊEÙA,w à`i4 ²š÷Pö” G÷Føó¿àƒ¡%ÇAƒ·æNHáØ¥å%Ô¥/PPˆƒåLBÛyXnˆähÜt·½ßó<¿ß{¯€è¿„è ÿS‡kÛàcÛàTã i†ã$Ƀ¬üôFL*‰¾!¾úä s™ÚKmMüæšy;Xv©B*+QJcJ”aqW+%‘ÙÝf¯+5?/däºCœŒ¹¤ÑDôO\¦ö 4,Ý£ ÅßWºÍF¹f.€…; ž8Í|‹•uáò¼J{ï„Û$²³¯™‡3—G4ýLRI,·Ìn k hZ£^6€Ž ç y’˜7àÅQ+¯W¹ÍZsÏ@ì›Ùg˜›ëg¡ôǃ¢^Ô¶4ÌÎc€žÞÀ@’8ÐçæTÃ0÷ƒId9½úz•ÝŒø»zSRºöµÈrÍ?ÙšQn‘…~”x€=ÐÍÐvåûV ¹ßÖ=pæ§Mm‘&s?*2‹÷BiM2w¢ÒÜ9¼„Dd,ÙŽPk4OÉÆþ‘À z¯Eï YØ.˜·HÌ6Vç²=Àœ4’!!ËÅÀ°yÌ ÉŒ f’\|š²njЦ²>fî©u‡6Z ;ée©Ni (µÕ 0Ø– ,I9På17¡2Dž¡L?R\½«æne8I„Ïg.F‘Œs8°8§Na7uMX¾uƒj°ïÏ,Ýô¢Ö6„þÒ[÷$ é°rûÙ—ÝŒ¾ÖúgÍÌNÚ¦zu){.|¬8V\½#Ÿþ¼©ˆ]< P‘´G¨1‡ÙˆßXZ-öˆ¼Ë5‰Ü¢ÃßIpÖhó¥÷3ŸdðªYÏ^.[}á™ÿ ‹|SÅ9]ó¼†ÎA>äKXVZÆr¦þ¢ÏÂõOwç=ª]wf똑¥ÀHæÆ†$¦³Ž|³²ÎÅoUŸßĵD³W›sÐ%¥<Ö1u¿Ó ƒÅzrô­»¸)% Üì¸À¢ •m:öHrJ´'~"ºC»³a¸ãüi‡ ^f±Ùœ `âJ`4ó`M;<ù½‘5(*ô-½õæêÅÉ¿¶ <ç$0xìì;¬e/¨Ò¢ÿH¯¤ˆ”“Ï¢wÒCQÐÿЄ e'í!û„ ‰–*›ªz¾Õèq>»õéBeݪ3$Ï º¯§ ì1mq‰`˜™•…‰¾4°ò¿âšÿ$–/¹Ÿ„ Ä~XgŽP´‰¦Þ¨.á%›?ªM`òÓX,uAµ¶±ýEÞ­Þ‰ŽšJ•Á½ßâ迬lÁ£ÚT*ÆlLÝL;i©»k<‰L$&HžÖõf„Qáýœ/bßr®—¾)Øœíâà÷`û)eÝVfàÄ ¾C×îWíP•‡ï¶ÔWÄ·‚$!7w’ÞÏ<_Z£ %ì”i´Òiõk5FÒc¶·ÑtZËÙ±ýàû„âm)éÊÙ¶ò#W€œ"`Ý®sUZ†¶9¼7Hu}èÔèØs u„…“ô^2פ“ÄÎ_ZêÊذSÌÂ^Ï/4ãèûÞR+‘)*òn…wŸØònýFÊU*¨}„„zM}/æ)_q¦´:ù"B¯g2Sîl×ñ´Äš›ûsrfžø07…4Ø¿[$ÑŠŠÂ;@eíg1ù÷ïÛtÇ{?~dº kÛjÙÍ'‰ ñÙ¥ÕQlÓù|[?†s2‡›ÛZ¶-»åÀùú W3¢“@ÂÁgYÙ¹?”u1ë=ï¡o¥xÕ·"Ñ×õ 5Ãq mæ.MÞ—ÿDQ ¬âäŒcGErœ/`8ƒ938äŽ_ù8·$tL&®±š´øá¡³¥5Kì–(Á¦úŽ^áhß°7·ìR] 죻¯ÓsæI§‚ôðUàÒ­† ¼!¡ÑC_,ãO²ËÑk³*ýâªwé;™ß·y× ë=<ƒS®eå•Ô~Áª¶Þ“%ÉÇD3É›~ ›Ò—ÄÜ{,Ü|9`ùáÛ¡Ñ«+®¨˯¨£Î<)vßlç—o`1]Æ#Ÿï¾âÅ–$M™47Y‘Pv7 ŒÜI$L¦†“=)ÐÛèfKŒúÙÒ9À‚ð"u¯ÁrÆàõ‰ëŠI¾Éª•I¼p ,äÀPVlL dƒ¼ ’é{=]€Nc] `ˆ¥~6ÐVVÉpN¯E>|bˆÜÆ#ª,<¾¤*<˜º„ûfs‰ù”[ØG“©ÆÔ8&Æ÷qßP_ ï «`ä Ì¥EæNwÒ÷µª–-Ùq5&]SëM’ñô–¤#ü›’’p~:°|/°¾ØT$üøo¥ì+¨íÃ^Ì^ð]Æä¼ã«Zñ ä '¡êÈÄ’ªˆu$ cÕ$E¿m"Ùl ôt{È*¶TÕ„ÄîQ{,ˆ{¹.O³½„’gP ^kLkFÑ*E,í#¿ÇðKþކ1¿øˆÐz^rϘ ±i75óéµS`I™­Y±4±bå`W)°­@U3Æ#ôA_Ó‰W;ôZ¬Ó®ûN6Ú±µ»J4‰ù´$‘}TcUšú™‘µçí:òÄÔ²ß -gmêÒßb¼¸(´˜Xð ÿÔŠØ-šZ/%½åA+úi¿ ðHa9@Ê1 ûôZYè†Gñ—ôóyv9áEŒc<ßÈôß2O>©Lšq|ãȤOº9ÏküJ 0«u§é›»e陹ȹÁ¶ùEä\Wn¦Ño;ÊnËw—$@ž ¬,ö”iûËžŽpö¿ß¡·I ƒ­!< s¢3ñYÿî^!)×wýH¶S1ZŸEÝBh·ê¸›×¸ V–Ë€+ù£—â”Úxœï…ð¤ëz붔˄rÛ ]ý-ƒ°ÁÖòÊÕÏ)·p–í+>oßc_—‰ÑõùUkâ°hÚ² ûÍd„‘XùžtøqW+¡ú0ÂX°àÜ®\`N(;Ûp\T]ëBRb»UJÉfmBéu*+É-»S;Q®¬îÔoD)Ä3‰!D놫U¸d¼XΤã8iïÔš;ùßo¡Ý:“?»mëعŸ¾r¦M¼SŽ‹UX}Õ“Öž”n);<“’眺Q#J~’‡•„ƒXu â†÷©<æBñe6({`çQõ3G/eµx6˜0$>¨K` f+ëgz$•°g‡O¡ÿ>”,’3AòµY'žŒ$y»nð`$1–hߨ Ehîô¼²»…* ÿ0/r‹ZTMHÜ–ø¢nâ„rŠÙÜlvLÂ’OåxyÓ³öFòVpìF ´R»•nޏ<¬ˆ6‘ »ÃÃ?YUþ pú*÷ÄÒ­DßW^H\H ïÇŠÝí¾˜Á¥1—ÍLU¢8fk êÉÛwTÈË ÖŠÙ¿¼r§ &°óPéMMy%É£¶>É…~/œ(¢Dq\AœíÅl¶e\£ÑìܵÜl™—¸R³N>î=dÂQ¶Ý<Åì} `¼9qE·J*4µÎ²÷ºZ—‹#êLt$š7k_ ÷1Ñ*íWyîk&&ÑFl°¿C›&žjµê–‹DÒ’xï%Iþû¯·ÿŒÞ&ÐþÆm_Qª–$IEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/win/exportpdf.png0000644000076500000240000000204313245231431025563 0ustar philstaff00000000000000‰PNG  IHDRàw=øsBIT|dˆtEXtSoftwarewww.inkscape.org›î<µIDATHǵ–ML\UÇo¾‡¦ƒ ´` %ND V£M´5RÆ`ýXƒ,HŒ1vá®nMw.ºkº¨Ä˜6³nXØ&e#¦¸€¨i-¥ª|ÚóÁ›÷î½Çņ@‰ÜÅ{÷Þ—{~÷œÿ9÷>KDØËæc[`­óâ§çûö§ö}]D˜}ðt²”Ý™ñK‰ÊWß8_,Ú…¦?<3^8Ð8óÍço·ß™Î’»:ÅËwßÕNiÿ„ºW;Ÿª ûþã{àx „ÿœ^áîÌ Ë¿Þ¤yôÚ®¿Y/ÐØÆhM<Jýÿ­ÑÚ [i°¹ÅZZxwlŒâì,.P×ÙIñchÛæçîn^ÏdðG£ä''¹ÑÓƒˆ µAk½&Ì“sCCŒ>Ík—/S˜šb¤·—x[‡ûûé룴´Tv@0F{Ùaš6uuñÆà ÷.^¬Ì§§ ××Ðyö,‡Nª„H)Rzë4Ý΃==ìäIé4õGòèÖ-êŽa¤¯cÛž}‘ @‚;‘›Ë1ýze¼8ÓJ.WD‹)¼oÆD Z{BƒÄX‚r J)„Ѐ ;º}sœÚæ£ãñY‚ƒ1¥4Fk”Ö(W1ÿh•Ûsµ©zü=C$ÆuÕÖ•,åbÑÚ¥&¥9)¼”®ã‡¹úÓ5Dà˯¾àùŽvÇÁ))š~Æ ‡53óﮫp]UUhÍ™`ŒxçŠ1Øv‰¹¹yîMÜàáòC ù<ŽãP*•°íZG+áõîö…&Æ`´ñÊ^lÛ.§]9[ìUòù<¶]¶mlÛÆèpy­T<ØxKÖ»V4ìC¯ÔµÑ ·µòV×›cˆÅbd³+ã««6Ú¤Ö+ÙuQ®ªöÀ², °:>ø®tô¯ÁýM©D! 4,amnOíàÔÔÑéØJ!«"Ä"•FSµ%ä«òÞðgÆ| ¥ïY|á@€0éoéì¾±³µ¶ÞÔÖsÊó•t½Ú“­µÇêÏD,S²¸ÖÛ<ø‰«~† ”Ús?¹s^­´~.;T½í<ª‚ôúc© @b:¡™9ûPÝêáAÀŠÌ÷=/sòP¤€$`.ÒÝÆÙIпN¼û\‡Ýz¡ƒë ÀàÑhCCOYYÙæÂå+¬'}€v`Ž¢|\.ä¶Móé´œm µµŽŽŽ!ììeÍ"PH@¡a3Ä¥®‹€D9µÐty$‹>⨠ ÔÍVI–_6…Ò’™(ÐЬÃò(€¼EB#D¶ËùüÛEÒY¼*øD”cQZ[‘•̘”‘ôˈ‚$ FÎ&•Ë„,Ç"Gw¯™ËB~I'· _%'ÙÕ³(*‰ÂÐî€q$‹Œ@Ε¥BêX TS®È¾`”£«H"ðAŽë8ÇêêFé!0ÐL-Øxl-Œ1ûa‚Ñ‘÷þ³Á¯ó?7™Ñƒ.yh@ĪŒ@£’ ¤–Œ¿¸Í›Ñqèõò·©5&à ðXÔq8@cP°ÄÈÀc†î;ã“rab‘wZ0LËͰ·Aÿ*ºšÅµä7ç·ùcÃ(0Ì¿ö«Ë]zA?™=-Dú½æü~€ÂýûÆ“‚2,ÌIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/win/fileopen.png0000644000076500000240000000317613245231431025361 0ustar philstaff00000000000000‰PNG  IHDRàw=øEIDATH‰•{l•wÇ?¿sÞsëåœ^à@i»²^(åEcƒÉÇ`[48cf"ScD75&ÆfH4&j6]0dqÈ(Ä®`iY¡á:*ÔõµÐÓ;½žë{ù½ïûó4¨˜Ì=ÉóïçóäûÇóJ)>ɼýCQ\QÚ>»lÉ÷•ëè#±ÎW¶»m_ÝÄÒ´Åà¦WÕ8€öÿ‚ÿð#*)`ë²úµß©¨{n]Qq-®'HvòÙŸoy²¸/Sðä Ádã~!Ä×”Ròc „âøÖÕVE_™¿bÇ3Ñyk|"yÌÝè¼ÅŒû¿¸<¿þÅ啵ŸæÆáó@†€‡ :ÞŠÀê]*Ðøš¨<óFñ7ËnúVÙ‚ó½Ù>ìá&FÆ§éŸ #‹ÊYõì.‘rêw†­.Àû_ýä+Â÷Ä"žˆÎ_¾Só‡ š~&öù|bVͪ­¯”Õl©Êõù±îµŸ™äƤsÖ2oÅç¨^°\‰âwÙ­—œ ”R!ı×X8+:{wŲ/Íž·:(¬â‰a݈h‘H‰OM_ef¢Á)A_ºŠê•/PZµ„p®]×QÊ‹+¼t¿»f|øïWýÂТò¢õ—b¥Ç^[Q÷ôž’Û#Ak•º‰GÓ EÙ:úÌwFR fJ ”mfyýB¹!\ÛBJ‰ëzI&'éÚÑ{P.\¿CËVˆ ïìŠi‘¢’×£n®dÁ¶ oE9:o)%¶cb2ÉµÑ ž9Û¨{l3%%Q¤e`Y¤í`w{šéî8FmÅÖïØëó㤧S("³4×Wå÷y‚é¡vBž›‹aZ$Ò:×Ò9Q½þÊÊ+ñ #›ÆQË´è¢ãôï@ùøÌÓ[©®Š “íLܼð½7iÊu=BÙ8.Xʃ--îŒô§Ê©XñVÖ,!à÷"-CJlW#>ÕÏÕÓûéaéŠÇÙ°¾ך"k$ž=‘õË-ƒï_á= ÀU`I…aY Œ&¹ë>ÅÆçv’Ò¶ÄÐM,ÛÁ4,®w¼ÃZ)-«á¥—¿M$4ÄÌÐqFFÞÁðb®´LïkËüêò-º5Wm;R’Œgh»<ʆ/Š‚pl&ƒã€aZ õ]àêÙø}A>»y ÕµÅècçè¿ôl^üy•LuÈßzn´]¾ÅI`R³mKÚ$“&}ýSdÄ\ò ¢˜¦Ä²=L uÑy±øø]V?¾™5õ•ÙÇHw™¬Ä´$Ž# †ËHÞKÐð—¶ž½-ütM: ô‰§LzoßC›³„pd‰øçÿHìú9©x„Ï}7Áa‡‰ÇduÛ–d2)ü¡B„˜ËЕ·õ½'õߘ’»@R)¥4i) COÄî,]TPïø1Ÿ`Ûö—)-ÏAnb,6B:c‘H&@¹h¾ ¾ÜrrrKé?w‚3WcG“:íÀ”RÊÐLé’Ñ%“Óo 9¥5œjÚǾ^v÷”äõ0ÔÙM6›A Û–X†7'J~þ£ˆ‰1šßû}æPûôÉ‹·ù5p0ÿù~4ÝR]25caÆ6¦é¸ô›žZÅè­#dÃùHÛÁ4M\WÇ£å]ŽÏÒÓÖèì?ÖÛû×eMZ€~ ¥(Í0\TV’Ò]$~®œo`Au1³‚#DÂa’É8®ò —ãŒv~¨ÚÚ/¾ÙlÉÒ ÜÆîèfX ×8ÊO*™ ¶j. +yADZqE0RŽ…˜£œiiHý¶9uêÖzïƒgC=¤5G«ÊLSVh±¬®€ˆá’6 ¯¨st”Á®F÷÷:NߤÁ’\†€)@ÿÏ«ÿMð{ÉÉÑ( ,]Y›î!/ZŽí™G "v¶…#ÍWœuަLŽ1`H+¥äÿÿKŸœì–Ùî•u«Ÿ/4¬ëDŠJæÔ’ˆõÒrâÔô»ç³­Ý®Ý#˜‹ã¡‚·šÜ?W‹‹ís+7NÒÑtÐzýÈÀ¹ÎšLÉY`˜¾‡ûqÀÎü¹E<ÿÖ÷ò®7þt‘úÒº`W®Ÿ=ÀF (4¥Ÿdÿ8¤n_UI‚ùIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/win/fileprint.png0000644000076500000240000000266013245231431025551 0ustar philstaff00000000000000‰PNG  IHDRàw=øwIDATHÇ•U{LSwþ -}ð”gy­a !ñ1Ü&á$NÄ-‹ÑG2—˜-fΗ‘hØöÇþqL·¸d™dfYŒÉŒÿ L÷À)ãý¨´´½mo{wÎ :us'=ùÝ{{ï÷óïw¯JQ”–í…_öi²s >ŽzB‘Ÿ›|Wòø‹dÙ'[̉¯ì[¡ Ñê½nÕÔÖª— &gú†ð¸Á6ìGYÙ»ØRµÿ¤òñÕ‰…Ký_€šRŧªúc—ƒrÚµ”V÷<—ÒdZùÍãâÍ/L | _QwkpÓ‰MZÊ»N`Lš¿sSÕë•´¤?6ArÂS0%d#Þ¸}×Z¿ÿý×9¸|€Ë 8¡ªT?w´_¶ÎÑ¡ƒÔsx—rŽH&ü@VA!=¥}N¯‹^‹ÊÊJ>|²,/H¾Ü1žY»Qüá'™ÈšÏ~Û±ñ­’]2 ûãan:Ÿ$ª?<üÉ‚0ý8ÒÌðRq î÷û „ê¡Võcë‹H¯¤4Ýøt§j'íÀðpk ø™/ëýÚž–$i·Çãy$øb|ÝïW’eù®šõ_ªF%X‡uˆ0æDÀ@U난T‘ jºñ…·_…,ýñ鉆“1DòÉ;Å•(p­¥å"‘x“NŸf†À5gCϵ.H#^Øe7‚x&’„  -nÝŽ€Å’ãÇ×NOO×¶µµÝ$¢ÕôàÌC0æ;TÙÜü"ÃCA ³³’Û cl<" Ñj`0hàqû±jõjáœññqddddFDDL:t¨€ ¯ÝG@ÀEÙÙÙ_íÚõF–Ëå„Ãá€äñ¢»÷:,™Y($װΡ¡¡ˆ‰‰¡æ·ÍfUOÃWaddÛ¶mc²Îúúú¸@'‚À`0|X]]•‘aÁðð04 t:rrrÐßßøøxqcrrV«Ut7;; §ÓIŽ ‡ÙlFZZÊË˃›šš>Ÿ˜˜ØºH@0¸>fÞ™™™hmm…ÑhvT«ÕÂ1TË"ŽN$§×{®ãÎí;ü|>A¹ A066¦Ð°@] 55QQQ íëõz’6AL:ƒ­9::ŠÞÞ^Øív:ÃðЦ¬3ˆ‹‰C0Ô´ƒ ãzü•——WÄrœ9sFfee!%%E0wÃ:³4ÕœfAîÊ\\Œ<{·>·ƒ·¨_¸ÝîÉÉÉ())3 »‡5-..FWWÄðY&­V‹0rTnn.–/_ŽèÈh8=¨œ¯Á™¬B“rî~›G²±±±¨©©Áàà º»»ÑÐÐ *‹‹i2™ÀÅ0ëÏ]ôôü‚S §ðRIâ’°K6ÿBŠ &Ο?5kÖ,2§§§ ¾ÖÜÜB2i)æ0==‰«W¯ ¹Ü¼GÈU¯T"11Q¸oÙ2‹‘æ"LÛŒ}Më:Ò¼±®®.‘‡Ø€lÇ .itº9ò Ü%†’’Š„„Däç磢¢‚•€_ñ#/7ÏÞ××÷‘IEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/win/filesave.png0000644000076500000240000000226513245231431025354 0ustar philstaff00000000000000‰PNG  IHDRàw=ø|IDATx^µ”ÝkÕÆ?çefg_ònÒ´iÁ7ê âMôÎK¡ˆ‚HAè•z!½ôÇïðFôRðÒK[-ŠŠB¬(ÁhmÚ›”&mš¶I7Mšînvgwgwfgæ8=„°¡€àÏÎ~™™çó=ß93ÂÃ)ÍŽ¦§O¿æ 0GAòï$IVâ¸ûË•+g"̛ͮï}ô¿“zø‘üŹY¹ð׌èvšB"„ý)D߉v]¦žx–'_<Áøäaægç^šûì‹ãÀ%à^€ãÎð˜÷kY鯿<Çï¾ÊãG'‘Rb#R$ÂÖ¤RØÚ)pæÒ&ß.kô?hà04vƘf¥ê§76óÔ·}=EÁôâ‰DkYÙôziš Rç*¢ÅŸñ^c Œ“$éE@Pš>I EGÚ€Òà…b‘8ŽÉî°¡JÙpëîñ__ÿû<°t÷î"­*‘e7çÚ]bßd¥®«³0;g‚ 4õzÀýû jµëë•öÊÒ¹jué"pØÂ~€t]!·ÊË$þZMóö;oÑjvM»ÝãêÕM®©V[a¥RókµÚ¦ï×Ö}ÿÞjµZ^]\¼|ǘ´ÜÊ@Ëdê˜Öü…+͹ó3Åòê¦ù°|6*òa‡ÕV«±áû•r¥²¾V.__«VïÖ€.Ђ>·€&˜L{¶iw¾úäý7!tÃÞveùêìÆööê]cÒèô9°µÐësLf¼«>À™ï€?@6xçq˜ÉÈ,þÑOˆ–xÿQIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/win/textbold.png0000644000076500000240000000215613245231431025402 0ustar philstaff00000000000000‰PNG  IHDRàw=ø5IDATHǵ•L”uǯZ­åŠ-gšþQ6ÄĤ, EK׬.ÅÊj+•QÔ(D eœüˆ@eÒ‰œ`Ê“pHü~àP~(äá‘G‡6®¨£Ñ®vÛýáöîýÝu ƒs«?Þ{öìûy>¯ÏÏç« ø?5áeå†ý TÏmHC½G͘@£À݇´¦ëBׯã(p•ø 0ý ýá<¢~°mVû§dKèú½å¡ë’"¦Ì{sW¾!O+[ćW~:. ]|~Ä™PUÇà˜€÷ÂN¦ýk›3{^Ùæ§P(îp[¢À°í„Åì~ã£jU™li§óæï)ŸgºG|ƒÖž_¨<æÿR´6)O2÷ <ëù 8Ù`}öÕ*îu ta°tõ/ÆÔš:nM´›ì“²eaàëE<QÎYùieíe«½ÅÄ ™ 3}áÙ<·€ñý=ßV(—-¾Á‘¹tð°Y•’¬ÖF¯õ âÒÏÀ†¸|Ã\oÿUãËä°3CkjeúµýÌ‚Qvr\ÚTê‡muF'@ÃqsydâEžPwM ØA@S—ú¹ džøÀse£m1;Ïij ª{dQPDÏ{”AlºÖTÇô+{€³½@Z‰lqÍÿ'¹’ùt§Õ^Íìj8Þ08æ·bc£×¬G¶Òùlz°€¦_vÒ èXNK›ÙÎéѱ,g¾ãèJƒcËÖ&v.Y_LçS÷xˆ9 5U€’v ´(ª¶¥kdKÆ §ÎöÙR¿òM¿ãf|Žd O}òùw½<l#à4ë_ÔJ³Ø_,[¼—¾\±è¹ðÑ‹ð›SK b§.±TÌH¬Üs€YÜ=-`+åü°°‰5¾gÂ9?öž9×g!š£ öb=3e–:NÛšM™½?ö´·«Ñn¦iMšnÖ¸R¿š8¦B¡ë’ßß§–-Ge§]ùe`×aÉL»hWnѨ¹ª8Ò|V: þ¤)|Ù dÕ2Ó. Ž€Ï„ÅÓîþ)[Rµ¦B:N¯ft,Ó¾’[fqвÎsOt€†%}'Qmä6o¡ÝS”1™’9«Hù8ÄèŽMX´âîÎŽ°|é5@N£ØAÊ=zÚ¬týônyáĪ$sv՞Ψ’ HY4Ú›™•kÙö2£RÖ<›åɡʮ ôñ_£þ{îœtálú\k:ÇœÄÕWsƒó8¢*6/·…æ{%7ûÜu§*¸xÇ (¡ŠÚ¬váü‰eQUt¼šòš4¦â‰ؑoHbÓnGo'¨¼GZçû­*¤cñ'åŠÞí…³$ô­ QoO4gþS±tøå#;Þ¹Û ‡zP4ÓCͤîû·ã)7ù¿Ô_dù”yo³ØIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/win/textcenter.png0000644000076500000240000000116313245231431025737 0ustar philstaff00000000000000‰PNG  IHDRàw=øgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<IDATHÇÝTÝNQæÑ| e/5јxebÂX½áR´j©](©öÅ`i»ýÙ-Ûn‰P¹rwÎçÌœ£¬)ë…“3ÿßÙovÎÒ­Ûw<SxK¢¼K€r‹ð¢•ã¡T{ξ_!¼íõxPÖBö· wË„×m‹Õý ÷*`4_j%ÿùþ7,o¤·4W\€7]‹õ¡K’³Ì >Ÿ«lK¬Ú#½@mÀ¹‹—Ÿ2¼:p¿^‚méy P,E •ŸŒúï:óô#°ÁüúÌõãM§W;9–<£³E¯…„µv†G¾UçTjZåýZ€Ý#idÑàoô-6‡¬Ç˜«ßs‰¯ÖÍÔ~?’šRû'€b)*dÈÿd“wSÂÎØŠ+M`o ‡„gÆéflñ„7s+bžS¨ßŒ¡5%ñs¼X¥À¢™JŒ7;ü±h&OïŸé—0Ý™6x;ÿ³ç·ó¼—‰ˆþ§æ¼!êXN:Iç„ÒèK1Y%œyô70ò øð°:4ø ú°3&‰DîB[Ïg)ŒÅu¼E;òÓ®ÿ ôŒ:ôö‹Äu›lì|Gôérø ŽhW\šdç W÷$¦«Uºñ `ÒY€ã²ƒ$*¥EW¾|…W|赘ä™|CÓ5lŸÔ ü0ðTc²1s:K$m"­&- ˜Žê\¦Â¨ý ¨?f ”ë ?RC¦›I‹\î¢)€´@É[x2n:G€Œbμ!pß2_7¯6ä*)’ÖA É@€OÀ¡³yz75Éð\@5GV½^‘ÚMöɽIò^2Ÿ)w¡ƒæÁ~m;ÅóòÐØTµ™lAѧTd¾m¶üÄ\/äÌMF î è òjy‹8$¾ŒÌýbU\*zÑ7V¯j{("*rêݺ!_q˜|¦¾w[Öb²ÕöOº¨ÈTèXŠÌÝÓ‡õÿÊ…´5ôÛ'Ëy ¢¨éŸ‰½¨!óPÒ’yØ€I3ÆgÏCµP̬'êÉÜ®;Þªâ- Ц¨`ïì³h£™› ™¯gùp´-[û*ZSŠ\a\ë'¹Bo—Ó0I—K ÷”}cTÜü×@.h¨EŸ¬Ïäéi»ÞŒ8š)v k¥¥ÆÔ@S¥Sö¥@¥Öq6¬»_c»h™à'È®ä-ÓÊ™Rö_JËçÌ[‚ãdð p‹—¥nä¾ÂûàWݧi$=/åžcMµôÔ¢¼0~Ï•œoð=j—ð`¼ðd‡·8¹¡)¼øí#ÕÒüUíîI ®.ð2ÆA$Š‘ðuÂÖføR¯â@œƒ¤çM’ÄžB‚Ï»)àx¬·"¯!ra8Ü{š;Ìq·Ùž˜FaL܈[ Èt¹_j–ëkKÞé)S#½ùu©ÿƒp®D.N4šs¼wRîy¾Íøp: Glø\ y—„m…9½Â?ó|cŸN€Ó‘µwŽÒùVäuDnL5ŠC…ê9Œ¯P ‰Ëü³H\i»—6_b|6ðqÚ_˜\e"y›“º*÷ïÍîˆÜ¾"Ùˆg€·ß•1ÏBÕÆ5‡yÿkr€à5¯_~/Êòb|‰HU£aê•9/­?Ûs½ŽÈ£¿@óB¡Í½y—Úú©xãÖT¡3Ó«œ`Rß$ÞI­ºíaøþÕoòàZ›¢lÇ q®k‰?≸iÌ/cšmÛú.MâÞÌærü×®ïIäÿû'ê÷±DIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/win/textleft.png0000644000076500000240000000124113245231431025406 0ustar philstaff00000000000000‰PNG  IHDRàw=øgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<3IDATHÇÕUËnA̧ñ|ŠO!ˆBpàâRx„l Ø$ñcm’àøí]{ý¶;FïÎÕ3ˆdöàCkzªkºv»5=[7nÞNÐܘ,±%ÎaØ©¯Ë Ûå/O–pšš˜Â^ Hz©ˆ» òªŠÜÐ쓞=+ø»úO_#ÝÕÜF 7²Á»o•9à4î'-ñMEáq›\ãž¼:]"Õnm/‰QŒœßqÉ“àJ ÞˆÕþç$Ö ¸9ÖË©E8èï›MãSfK²Î)_™Uö»Õ{à£'±Ù¾mèZâH’)<ü!€€'À>æÔCSäi>‚ÛU8/JLÞÓÈ Ï‹ú ßiü›@¼%Ú¤›¼òÏLZ3òH¡~³ÖØ<ñ«müÊXß›Çýú¥a„/ƒÐÄjS‰Û³Âë,~õÆ_™lÌqÀQíÍ€Ú„c¡nýÆ™†Ãù/˜O½º&4Ïéó½¨Ê‡M-Þ2|…Üàº@¼%Ú´&'V^´ñ7À?W.€Î\Ûu&«õÛ3…îB›˜ðº–ïï-„«0¼\}éŒÀðRRµ–ÄÅŒ/øGD0×F4ÏQ!¾ˆ9b§“õ±–è;1Í6å-ÓIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/win/textright.png0000644000076500000240000000124513245231431025575 0ustar philstaff00000000000000‰PNG  IHDRàw=øgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<7IDATHÇÝT]oAíOógøSö±&ŸšýV_úh µˆPhi] ÆX °,lù°¬°3ÇsgÕú&ðP&÷ιwÎÙ½wî¬Ý¹»nq9+ZÖš8ûmõXˆ—ÇS¼=¥€XYáuUá~Ø>žÑ׸Sˆ{S&€L&ÿA\™üDãúìan#öâ5`§–D9(ûW'3ìºÉf„'’«):Eª%d!öh·?LÝeL8²? ¬¶DVºþ–üGÖ<g³¤‘a=3¬ûFŠ5­Î¬+<9ÒÍše?ÜÐìï)öFü=m|§÷­óŠ! ‘óå`ˆdm†,oLÖ‹ö™–6V°úéSmb™fdß@áëö5y…WÕúQ÷‡Ã J¬Ýs[Ãæ ä¼›¶ÂљĀPd<× ñ,ÏF¥~„Û…÷ô·J0ùÅžºî8î<à0ñˆd¥žF¡«I6C¾š˜í“„²$&#¸ìÅÿŽú¿XÿÏ$/ùÚZ#àxŸ€rŸ¯(Ÿì{U(à~Œð“î½ øòò©® 4š“ƒ6OÀ¿š$®‘°qN‘‘F•"å^DuÁÎQt¨Mž÷Öíkò¯­µ°îý+Àgm¾˜gŸYÓ Z'ÂZ#E\+û§>`Ÿº¼ ùV„—zq$лÒðÇ ‰Fw"ÊX!iÓ÷ÇŒO¢%ä¿ûÃ/¸Q`i%ú +…5~ü~JíIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/win/textunder.png0000644000076500000240000000171313245231431025575 0ustar philstaff00000000000000‰PNG  IHDRàw=øgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<]IDATHǵ•]H“QÇW”–Rš¨)™’åW™šß¡”Úù±YYM]Œ”¤"ç4%ÃÈ›D»qXŠ7¡™ŠR~…Sgêt¶t:5§M ÊÂ{ñÂéyôéÜÜvÑàïÎùŸó?ÏsÎy‹ÂúŸ¬D^+tr€/høô|¦MŸçqÔ5ÈÕ÷©§þ‚Œ/¢øMÈäòÚù"EG$?ig±XVŒ¾Û´z­Áy‚¯>Ì­Å¦ÂØÂ|\A†‘ª iêWi®g—ÊÂÙÂ.¿¨´0Èþ_mØ×"UiÆ`1Ue?q¼_Tz…ƒ«O4h÷mÎ8ºûž÷ŽàäwöLSôÀB2òDrg r苎i#`ôVÞ‘·R2òEòáŠKôØ:yB{à°)‚`ø}*Š–.¬8ºâƒØØ¡« çä{¢fh ØB1hBË-›¬kÐ ƒó„ÜY ƒöÐGÍ€š¢1 ;©÷éˆ!E}"ž ¨‘Ì™iÐ1EÑb!éBã¨éž5Ó UIÑ3„¤™`€šÏ3f4+(ºu rM3hÿn¦AÓE·L’j‚j>M™iÐ4* áš`€šf¥ye•]*͇ Bî—Ô)=ü/=ØxÁt´ 9¯[¦ß€>àbf-è/kÿ…ú!œй™b` 7´ú­dq¥ö"1«TvöJ¶nª“NõÍÌ|Y§¬ÖPq¼âAkûx0°3j€%!,)7&©ì]Xy&Ϫ%óPÜúµÄòŠ¥Ø†}7"¹gp®Þkc™Ðk¿Àn`O@ܽÛÁñê…¢Ž¹òö™å:HÙ{ü~Z%™I/ò ¿Å08¨[¯ôMn ì‡mì\NÃEgbøáì<Ù:œ¼a¯ˆ”èç3“;aõ4ø¢¡3°+41§ò?ù4}ä¡ G/g)ü/ÜðN›ôJ]Å/š§„“3š(/H.ÛX p_(@±d:Ú1øà5è†2-ÚfÖhghÛ13ƘÞÁKõm+Ø€÷ÄhŠ l2nœ àŠpg8 œ™§O.Pw“ÿn8üã IÛIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/images/win/zoomin.png0000644000076500000240000000227013245231431025065 0ustar philstaff00000000000000‰PNG  IHDRàw=øgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<JIDATHÇÅVaL[eýl2Ói e$K7VZгÒN¥BqCÀµ”æBªc£ccÙY·¦£ˆa )²Í)fº„ÚŠ‰Ô)C3 ¥P×jWJ#ÄlQY”1»øÃn»Þ»¼EÔ3µÉÉK_ß½çûÎ=ç}eÀþM°ÿ?1…J¥2(Š#<ïeü¾QŒP"â¼D€ŸR©´²®®îãþþþKçF0¼5>>~Õf³ùL&“]"‘9¢û—"º[óô²²²w‡?€Óé„¶¶60›ÍÐÑÑàõzÁb± ;ñùÄÊH$[95ýÞívƒé•Úßò÷¯4 kß¶ÂÖº7C»Í?wZ? ãnÀj³]Ñh4¬ËŒDò'ÍIZ95/=\sõéC¯O¥4wYL°ØÍÀVg‚¬Ù2ó‰®éö¾³ “““P__?#ê°^Lr-E  ÍIZ95—ýÀ©>Õçyv[%<_V Ï óÌàÌ£m_–xÖ7<>îîî†ÜÜÜA¬ÏGDýu‹ ìv»—4×TüQÔðþhq§ã+ã9Ÿ÷Å}G`»¡JM'áÀÈÌEyÿ³d«{àÔ¹ñHª’’’ ÖW!b+"ìEiæi JCý4‹QÂÆ¬rx®¨¶è^ƒ¬—!§¼2t À⠭ɃÃn¯ÏçƒŠŠŠkXÿB€àG"0¡o’[äµo¹Yl¬L*†˜”ݰ>Û¢¬Ûb„(Å^`IÛ%ê`kï×秦¦ˆà&ÖGD"Øçr¹æÉŠªWÍÓ4P–PlÃN„þ<†Òu'ÔŒ/øý~Ðjµ´ƒ£ˆă‘Š)DäóЦֹ¤c=CÂ÷¾Ú~c"\±‰$zÛCʱ_zžšûÔêùö29 ÓN3¨^nJJ(…ˆ|^|Òz1þ„˵öôåI¶5’,z}M™·ÇfÝž©@¸¥¥d2ÙÖïXnqJ(9£½opAßõ¹?±ýÂ,.ØzÝí]$;æÔ¼×íûuxxÔjõBttô¬ß¼œ‹x´ Š?%”¶N>'+’[h ¤9ÉâñÂÔ\¿k×­ôôôëX׋ °É#æ€#¡WÅŸJ!¢ÝÉ-4P"&Yð™¥RJMM…ü4áõƒÛ6\ÁÚ”è¥xÜ;%“âO ¥‘ÏÉŠä(i޲œæóùάÇãoÔä%Â;{R V'»Dn\Lr··é1ÿ*.DÇ9+Vs͸±ÑMkW…*7­ƒ¦")tT¥AãŽ'f“D:xœ\QÜàœ¸«€»/G’óÙ¢GBÆl!˜K’¡ëP:4韼M²ì‘É­ ë‘¿)DÜ•ÏݧßÅHÒ¯®ú®Z-‚ÖR9ìш}x_{ÏÎdޤ[#~x6/y55/G߬Íf»a0Ü%%%ÆØØX Ktï|Dwj.U©T›L&×ë…¨««ƒššÐét088.— ššš|999 x}:bq(’¿Ý95·X­ß1 %o–ÿš¹C3]y8¨øPYÚ÷¯ì¯™lÐÄi@o0\—ËåMX—ŠäOš“,tçÔ|Ë޲Ͽ5œt°Á·©ÞôËæV3([-³ ›F_8Ú8RßqÖïp8 ¢¢b”Çãi±^HrÍG &ÍIºsj.:ðÉ€ìx‡ScrLTž»8SØé˜N9Ý=º²®ë|~óY·Ù6liiŒŒŒn¬ÏD„ÿuйÙF£ÑEšË vÿ ¨EVLÛW3²òØ—=œGåÀnÎ*õx§†$ó¤±Ìâòx< P(h‚ˆhÄý¡ò(Däó‚êC4ÿÄÅ~¾áÇ~Á™€UаDŸ œfqÿOm4Þyù9 ÓN;(]h %”BD>Ïû@)ê¨Ýyꚃ÷©ˆ×<à .>X“,SFMÿãökkk!!!¡ë·.´ƒeJ(9£¾£Û¯nüÚS?t.J7n‹l˜tZ§¬ñ¦ 5ogÜ?›ÍfÉdþˆˆˆÓX¿v!qi Š?%”F'Ÿ“É-´PÒœdqz¼Aj®Þ¶mV*•Î`];‚Â& ™–„\éJ(…ˆ¦!+’[h¡DL²à5~‰DHNN†Ì5ü™]›V]ÇÚ”èù¸ì3%…âO ¥‘ÏÉŠäZ(i޲œ H}2êfÙÆøh{”¿”0NnœKr§§ém!ÿ"6DGX+–² ]w‡c]¹$Pøìr¨Î]ÑØ¿5ql.I¨÷—•+œ]µ`4{ä±çEHÒ·>ú¡€f=ÞSÆCc±ªÕOýN²à+“%ZDÖ#SˆØc{ž~"IgÉÕR™mÁv¹ÐçwíÌ’´È…ŽmŒ„šç#¸«/}vg¤½âvóÿä_Åo&MîðÃuIEND®B`‚PyQt5_gpl-5.10.1/examples/richtext/textedit/textedit.py0000755000076500000240000005770213245231431023223 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:LGPL$ ## Commercial Usage ## Licensees holding valid Qt Commercial licenses may use this file in ## accordance with the Qt Commercial License Agreement provided with the ## Software or, alternatively, in accordance with the terms contained in ## a written agreement between you and Nokia. ## ## GNU Lesser General Public License Usage ## Alternatively, this file may be used under the terms of the GNU Lesser ## General Public License version 2.1 as published by the Free Software ## Foundation and appearing in the file LICENSE.LGPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU Lesser General Public License version 2.1 requirements ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ## ## In addition, as a special exception, Nokia gives you certain additional ## rights. These rights are described in the Nokia Qt LGPL Exception ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ## ## GNU General Public License Usage ## Alternatively, this file may be used under the terms of the GNU ## General Public License version 3.0 as published by the Free Software ## Foundation and appearing in the file LICENSE.GPL included in the ## packaging of this file. Please review the following information to ## ensure the GNU General Public License version 3.0 requirements will be ## met: http://www.gnu.org/copyleft/gpl.html. ## ## If you have questions regarding the use of this file, please contact ## Nokia at qt-info@nokia.com. ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import QFile, QFileInfo, Qt, QTextCodec from PyQt5.QtGui import (QFont, QFontDatabase, QFontInfo, QIcon, QKeySequence, QPixmap, QTextBlockFormat, QTextCharFormat, QTextCursor, QTextDocumentWriter, QTextListFormat) from PyQt5.QtWidgets import (QAction, QActionGroup, QApplication, QColorDialog, QComboBox, QFileDialog, QFontComboBox, QMainWindow, QMenu, QMessageBox, QTextEdit, QToolBar) from PyQt5.QtPrintSupport import QPrintDialog, QPrinter, QPrintPreviewDialog import textedit_rc if sys.platform.startswith('darwin'): rsrcPath = ":/images/mac" else: rsrcPath = ":/images/win" class TextEdit(QMainWindow): def __init__(self, fileName=None, parent=None): super(TextEdit, self).__init__(parent) self.setWindowIcon(QIcon(':/images/logo.png')) self.setToolButtonStyle(Qt.ToolButtonFollowStyle) self.setupFileActions() self.setupEditActions() self.setupTextActions() helpMenu = QMenu("Help", self) self.menuBar().addMenu(helpMenu) helpMenu.addAction("About", self.about) helpMenu.addAction("About &Qt", QApplication.instance().aboutQt) self.textEdit = QTextEdit(self) self.textEdit.currentCharFormatChanged.connect( self.currentCharFormatChanged) self.textEdit.cursorPositionChanged.connect(self.cursorPositionChanged) self.setCentralWidget(self.textEdit) self.textEdit.setFocus() self.setCurrentFileName() self.fontChanged(self.textEdit.font()) self.colorChanged(self.textEdit.textColor()) self.alignmentChanged(self.textEdit.alignment()) self.textEdit.document().modificationChanged.connect( self.actionSave.setEnabled) self.textEdit.document().modificationChanged.connect( self.setWindowModified) self.textEdit.document().undoAvailable.connect( self.actionUndo.setEnabled) self.textEdit.document().redoAvailable.connect( self.actionRedo.setEnabled) self.setWindowModified(self.textEdit.document().isModified()) self.actionSave.setEnabled(self.textEdit.document().isModified()) self.actionUndo.setEnabled(self.textEdit.document().isUndoAvailable()) self.actionRedo.setEnabled(self.textEdit.document().isRedoAvailable()) self.actionUndo.triggered.connect(self.textEdit.undo) self.actionRedo.triggered.connect(self.textEdit.redo) self.actionCut.setEnabled(False) self.actionCopy.setEnabled(False) self.actionCut.triggered.connect(self.textEdit.cut) self.actionCopy.triggered.connect(self.textEdit.copy) self.actionPaste.triggered.connect(self.textEdit.paste) self.textEdit.copyAvailable.connect(self.actionCut.setEnabled) self.textEdit.copyAvailable.connect(self.actionCopy.setEnabled) QApplication.clipboard().dataChanged.connect(self.clipboardDataChanged) if fileName is None: fileName = ':/example.html' if not self.load(fileName): self.fileNew() def closeEvent(self, e): if self.maybeSave(): e.accept() else: e.ignore() def setupFileActions(self): tb = QToolBar(self) tb.setWindowTitle("File Actions") self.addToolBar(tb) menu = QMenu("&File", self) self.menuBar().addMenu(menu) self.actionNew = QAction( QIcon.fromTheme('document-new', QIcon(rsrcPath + '/filenew.png')), "&New", self, priority=QAction.LowPriority, shortcut=QKeySequence.New, triggered=self.fileNew) tb.addAction(self.actionNew) menu.addAction(self.actionNew) self.actionOpen = QAction( QIcon.fromTheme('document-open', QIcon(rsrcPath + '/fileopen.png')), "&Open...", self, shortcut=QKeySequence.Open, triggered=self.fileOpen) tb.addAction(self.actionOpen) menu.addAction(self.actionOpen) menu.addSeparator() self.actionSave = QAction( QIcon.fromTheme('document-save', QIcon(rsrcPath + '/filesave.png')), "&Save", self, shortcut=QKeySequence.Save, triggered=self.fileSave, enabled=False) tb.addAction(self.actionSave) menu.addAction(self.actionSave) self.actionSaveAs = QAction("Save &As...", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.SHIFT + Qt.Key_S, triggered=self.fileSaveAs) menu.addAction(self.actionSaveAs) menu.addSeparator() self.actionPrint = QAction( QIcon.fromTheme('document-print', QIcon(rsrcPath + '/fileprint.png')), "&Print...", self, priority=QAction.LowPriority, shortcut=QKeySequence.Print, triggered=self.filePrint) tb.addAction(self.actionPrint) menu.addAction(self.actionPrint) self.actionPrintPreview = QAction( QIcon.fromTheme('fileprint', QIcon(rsrcPath + '/fileprint.png')), "Print Preview...", self, shortcut=Qt.CTRL + Qt.SHIFT + Qt.Key_P, triggered=self.filePrintPreview) menu.addAction(self.actionPrintPreview) self.actionPrintPdf = QAction( QIcon.fromTheme('exportpdf', QIcon(rsrcPath + '/exportpdf.png')), "&Export PDF...", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_D, triggered=self.filePrintPdf) tb.addAction(self.actionPrintPdf) menu.addAction(self.actionPrintPdf) menu.addSeparator() self.actionQuit = QAction("&Quit", self, shortcut=QKeySequence.Quit, triggered=self.close) menu.addAction(self.actionQuit) def setupEditActions(self): tb = QToolBar(self) tb.setWindowTitle("Edit Actions") self.addToolBar(tb) menu = QMenu("&Edit", self) self.menuBar().addMenu(menu) self.actionUndo = QAction( QIcon.fromTheme('edit-undo', QIcon(rsrcPath + '/editundo.png')), "&Undo", self, shortcut=QKeySequence.Undo) tb.addAction(self.actionUndo) menu.addAction(self.actionUndo) self.actionRedo = QAction( QIcon.fromTheme('edit-redo', QIcon(rsrcPath + '/editredo.png')), "&Redo", self, priority=QAction.LowPriority, shortcut=QKeySequence.Redo) tb.addAction(self.actionRedo) menu.addAction(self.actionRedo) menu.addSeparator() self.actionCut = QAction( QIcon.fromTheme('edit-cut', QIcon(rsrcPath + '/editcut.png')), "Cu&t", self, priority=QAction.LowPriority, shortcut=QKeySequence.Cut) tb.addAction(self.actionCut) menu.addAction(self.actionCut) self.actionCopy = QAction( QIcon.fromTheme('edit-copy', QIcon(rsrcPath + '/editcopy.png')), "&Copy", self, priority=QAction.LowPriority, shortcut=QKeySequence.Copy) tb.addAction(self.actionCopy) menu.addAction(self.actionCopy) self.actionPaste = QAction( QIcon.fromTheme('edit-paste', QIcon(rsrcPath + '/editpaste.png')), "&Paste", self, priority=QAction.LowPriority, shortcut=QKeySequence.Paste, enabled=(len(QApplication.clipboard().text()) != 0)) tb.addAction(self.actionPaste) menu.addAction(self.actionPaste) def setupTextActions(self): tb = QToolBar(self) tb.setWindowTitle("Format Actions") self.addToolBar(tb) menu = QMenu("F&ormat", self) self.menuBar().addMenu(menu) self.actionTextBold = QAction( QIcon.fromTheme('format-text-bold', QIcon(rsrcPath + '/textbold.png')), "&Bold", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_B, triggered=self.textBold, checkable=True) bold = QFont() bold.setBold(True) self.actionTextBold.setFont(bold) tb.addAction(self.actionTextBold) menu.addAction(self.actionTextBold) self.actionTextItalic = QAction( QIcon.fromTheme('format-text-italic', QIcon(rsrcPath + '/textitalic.png')), "&Italic", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_I, triggered=self.textItalic, checkable=True) italic = QFont() italic.setItalic(True) self.actionTextItalic.setFont(italic) tb.addAction(self.actionTextItalic) menu.addAction(self.actionTextItalic) self.actionTextUnderline = QAction( QIcon.fromTheme('format-text-underline', QIcon(rsrcPath + '/textunder.png')), "&Underline", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_U, triggered=self.textUnderline, checkable=True) underline = QFont() underline.setUnderline(True) self.actionTextUnderline.setFont(underline) tb.addAction(self.actionTextUnderline) menu.addAction(self.actionTextUnderline) menu.addSeparator() grp = QActionGroup(self, triggered=self.textAlign) # Make sure the alignLeft is always left of the alignRight. if QApplication.isLeftToRight(): self.actionAlignLeft = QAction( QIcon.fromTheme('format-justify-left', QIcon(rsrcPath + '/textleft.png')), "&Left", grp) self.actionAlignCenter = QAction( QIcon.fromTheme('format-justify-center', QIcon(rsrcPath + '/textcenter.png')), "C&enter", grp) self.actionAlignRight = QAction( QIcon.fromTheme('format-justify-right', QIcon(rsrcPath + '/textright.png')), "&Right", grp) else: self.actionAlignRight = QAction( QIcon.fromTheme('format-justify-right', QIcon(rsrcPath + '/textright.png')), "&Right", grp) self.actionAlignCenter = QAction( QIcon.fromTheme('format-justify-center', QIcon(rsrcPath + '/textcenter.png')), "C&enter", grp) self.actionAlignLeft = QAction( QIcon.fromTheme('format-justify-left', QIcon(rsrcPath + '/textleft.png')), "&Left", grp) self.actionAlignJustify = QAction( QIcon.fromTheme('format-justify-fill', QIcon(rsrcPath + '/textjustify.png')), "&Justify", grp) self.actionAlignLeft.setShortcut(Qt.CTRL + Qt.Key_L) self.actionAlignLeft.setCheckable(True) self.actionAlignLeft.setPriority(QAction.LowPriority) self.actionAlignCenter.setShortcut(Qt.CTRL + Qt.Key_E) self.actionAlignCenter.setCheckable(True) self.actionAlignCenter.setPriority(QAction.LowPriority) self.actionAlignRight.setShortcut(Qt.CTRL + Qt.Key_R) self.actionAlignRight.setCheckable(True) self.actionAlignRight.setPriority(QAction.LowPriority) self.actionAlignJustify.setShortcut(Qt.CTRL + Qt.Key_J) self.actionAlignJustify.setCheckable(True) self.actionAlignJustify.setPriority(QAction.LowPriority) tb.addActions(grp.actions()) menu.addActions(grp.actions()) menu.addSeparator() pix = QPixmap(16, 16) pix.fill(Qt.black) self.actionTextColor = QAction(QIcon(pix), "&Color...", self, triggered=self.textColor) tb.addAction(self.actionTextColor) menu.addAction(self.actionTextColor) tb = QToolBar(self) tb.setAllowedAreas(Qt.TopToolBarArea | Qt.BottomToolBarArea) tb.setWindowTitle("Format Actions") self.addToolBarBreak(Qt.TopToolBarArea) self.addToolBar(tb) comboStyle = QComboBox(tb) tb.addWidget(comboStyle) comboStyle.addItem("Standard") comboStyle.addItem("Bullet List (Disc)") comboStyle.addItem("Bullet List (Circle)") comboStyle.addItem("Bullet List (Square)") comboStyle.addItem("Ordered List (Decimal)") comboStyle.addItem("Ordered List (Alpha lower)") comboStyle.addItem("Ordered List (Alpha upper)") comboStyle.addItem("Ordered List (Roman lower)") comboStyle.addItem("Ordered List (Roman upper)") comboStyle.activated.connect(self.textStyle) self.comboFont = QFontComboBox(tb) tb.addWidget(self.comboFont) self.comboFont.activated[str].connect(self.textFamily) self.comboSize = QComboBox(tb) self.comboSize.setObjectName("comboSize") tb.addWidget(self.comboSize) self.comboSize.setEditable(True) db = QFontDatabase() for size in db.standardSizes(): self.comboSize.addItem("%s" % (size)) self.comboSize.activated[str].connect(self.textSize) self.comboSize.setCurrentIndex( self.comboSize.findText( "%s" % (QApplication.font().pointSize()))) def load(self, f): if not QFile.exists(f): return False fh = QFile(f) if not fh.open(QFile.ReadOnly): return False data = fh.readAll() codec = QTextCodec.codecForHtml(data) unistr = codec.toUnicode(data) if Qt.mightBeRichText(unistr): self.textEdit.setHtml(unistr) else: self.textEdit.setPlainText(unistr) self.setCurrentFileName(f) return True def maybeSave(self): if not self.textEdit.document().isModified(): return True if self.fileName.startswith(':/'): return True ret = QMessageBox.warning(self, "Application", "The document has been modified.\n" "Do you want to save your changes?", QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel) if ret == QMessageBox.Save: return self.fileSave() if ret == QMessageBox.Cancel: return False return True def setCurrentFileName(self, fileName=''): self.fileName = fileName self.textEdit.document().setModified(False) if not fileName: shownName = 'untitled.txt' else: shownName = QFileInfo(fileName).fileName() self.setWindowTitle(self.tr("%s[*] - %s" % (shownName, "Rich Text"))) self.setWindowModified(False) def fileNew(self): if self.maybeSave(): self.textEdit.clear() self.setCurrentFileName() def fileOpen(self): fn, _ = QFileDialog.getOpenFileName(self, "Open File...", None, "HTML-Files (*.htm *.html);;All Files (*)") if fn: self.load(fn) def fileSave(self): if not self.fileName: return self.fileSaveAs() writer = QTextDocumentWriter(self.fileName) success = writer.write(self.textEdit.document()) if success: self.textEdit.document().setModified(False) return success def fileSaveAs(self): fn, _ = QFileDialog.getSaveFileName(self, "Save as...", None, "ODF files (*.odt);;HTML-Files (*.htm *.html);;All Files (*)") if not fn: return False lfn = fn.lower() if not lfn.endswith(('.odt', '.htm', '.html')): # The default. fn += '.odt' self.setCurrentFileName(fn) return self.fileSave() def filePrint(self): printer = QPrinter(QPrinter.HighResolution) dlg = QPrintDialog(printer, self) if self.textEdit.textCursor().hasSelection(): dlg.addEnabledOption(QPrintDialog.PrintSelection) dlg.setWindowTitle("Print Document") if dlg.exec_() == QPrintDialog.Accepted: self.textEdit.print_(printer) del dlg def filePrintPreview(self): printer = QPrinter(QPrinter.HighResolution) preview = QPrintPreviewDialog(printer, self) preview.paintRequested.connect(self.printPreview) preview.exec_() def printPreview(self, printer): self.textEdit.print_(printer) def filePrintPdf(self): fn, _ = QFileDialog.getSaveFileName(self, "Export PDF", None, "PDF files (*.pdf);;All Files (*)") if fn: if QFileInfo(fn).suffix().isEmpty(): fn += '.pdf' printer = QPrinter(QPrinter.HighResolution) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(fn) self.textEdit.document().print_(printer) def textBold(self): fmt = QTextCharFormat() fmt.setFontWeight(self.actionTextBold.isChecked() and QFont.Bold or QFont.Normal) self.mergeFormatOnWordOrSelection(fmt) def textUnderline(self): fmt = QTextCharFormat() fmt.setFontUnderline(self.actionTextUnderline.isChecked()) self.mergeFormatOnWordOrSelection(fmt) def textItalic(self): fmt = QTextCharFormat() fmt.setFontItalic(self.actionTextItalic.isChecked()) self.mergeFormatOnWordOrSelection(fmt) def textFamily(self, family): fmt = QTextCharFormat() fmt.setFontFamily(family) self.mergeFormatOnWordOrSelection(fmt) def textSize(self, pointSize): pointSize = float(pointSize) if pointSize > 0: fmt = QTextCharFormat() fmt.setFontPointSize(pointSize) self.mergeFormatOnWordOrSelection(fmt) def textStyle(self, styleIndex): cursor = self.textEdit.textCursor() if styleIndex: styleDict = { 1: QTextListFormat.ListDisc, 2: QTextListFormat.ListCircle, 3: QTextListFormat.ListSquare, 4: QTextListFormat.ListDecimal, 5: QTextListFormat.ListLowerAlpha, 6: QTextListFormat.ListUpperAlpha, 7: QTextListFormat.ListLowerRoman, 8: QTextListFormat.ListUpperRoman, } style = styleDict.get(styleIndex, QTextListFormat.ListDisc) cursor.beginEditBlock() blockFmt = cursor.blockFormat() listFmt = QTextListFormat() if cursor.currentList(): listFmt = cursor.currentList().format() else: listFmt.setIndent(blockFmt.indent() + 1) blockFmt.setIndent(0) cursor.setBlockFormat(blockFmt) listFmt.setStyle(style) cursor.createList(listFmt) cursor.endEditBlock() else: bfmt = QTextBlockFormat() bfmt.setObjectIndex(-1) cursor.mergeBlockFormat(bfmt) def textColor(self): col = QColorDialog.getColor(self.textEdit.textColor(), self) if not col.isValid(): return fmt = QTextCharFormat() fmt.setForeground(col) self.mergeFormatOnWordOrSelection(fmt) self.colorChanged(col) def textAlign(self, action): if action == self.actionAlignLeft: self.textEdit.setAlignment(Qt.AlignLeft | Qt.AlignAbsolute) elif action == self.actionAlignCenter: self.textEdit.setAlignment(Qt.AlignHCenter) elif action == self.actionAlignRight: self.textEdit.setAlignment(Qt.AlignRight | Qt.AlignAbsolute) elif action == self.actionAlignJustify: self.textEdit.setAlignment(Qt.AlignJustify) def currentCharFormatChanged(self, format): self.fontChanged(format.font()) self.colorChanged(format.foreground().color()) def cursorPositionChanged(self): self.alignmentChanged(self.textEdit.alignment()) def clipboardDataChanged(self): self.actionPaste.setEnabled(len(QApplication.clipboard().text()) != 0) def about(self): QMessageBox.about(self, "About", "This example demonstrates Qt's rich text editing facilities " "in action, providing an example document for you to " "experiment with.") def mergeFormatOnWordOrSelection(self, format): cursor = self.textEdit.textCursor() if not cursor.hasSelection(): cursor.select(QTextCursor.WordUnderCursor) cursor.mergeCharFormat(format) self.textEdit.mergeCurrentCharFormat(format) def fontChanged(self, font): self.comboFont.setCurrentIndex( self.comboFont.findText(QFontInfo(font).family())) self.comboSize.setCurrentIndex( self.comboSize.findText("%s" % font.pointSize())) self.actionTextBold.setChecked(font.bold()) self.actionTextItalic.setChecked(font.italic()) self.actionTextUnderline.setChecked(font.underline()) def colorChanged(self, color): pix = QPixmap(16, 16) pix.fill(color) self.actionTextColor.setIcon(QIcon(pix)) def alignmentChanged(self, alignment): if alignment & Qt.AlignLeft: self.actionAlignLeft.setChecked(True) elif alignment & Qt.AlignHCenter: self.actionAlignCenter.setChecked(True) elif alignment & Qt.AlignRight: self.actionAlignRight.setChecked(True) elif alignment & Qt.AlignJustify: self.actionAlignJustify.setChecked(True) if __name__ == '__main__': app = QApplication(sys.argv) mainWindows = [] for fn in sys.argv[1:] or [None]: textEdit = TextEdit(fn) textEdit.resize(700, 800) textEdit.show() mainWindows.append(textEdit) sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/richtext/textedit/textedit.qrc0000644000076500000240000000320113245231431023336 0ustar philstaff00000000000000 images/logo.png images/logo32.png images/mac/editcopy.png images/mac/editcut.png images/mac/editpaste.png images/mac/editredo.png images/mac/editundo.png images/mac/exportpdf.png images/mac/filenew.png images/mac/fileopen.png images/mac/fileprint.png images/mac/filesave.png images/mac/textbold.png images/mac/textcenter.png images/mac/textitalic.png images/mac/textjustify.png images/mac/textleft.png images/mac/textright.png images/mac/textunder.png images/mac/zoomin.png images/mac/zoomout.png images/win/editcopy.png images/win/editcut.png images/win/editpaste.png images/win/editredo.png images/win/editundo.png images/win/exportpdf.png images/win/filenew.png images/win/fileopen.png images/win/fileprint.png images/win/filesave.png images/win/textbold.png images/win/textcenter.png images/win/textitalic.png images/win/textjustify.png images/win/textleft.png images/win/textright.png images/win/textunder.png images/win/zoomin.png images/win/zoomout.png example.html PyQt5_gpl-5.10.1/examples/richtext/textedit/textedit_rc.py0000644000076500000240000072022613245231431023702 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Wed May 15 17:46:46 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x0a\x15\ \x00\ \x00\x38\x1d\x78\x9c\xdd\x5b\x5b\x73\xdb\xb8\x15\x7e\xcf\xaf\xc0\ \xb0\xd3\xc9\x43\x2d\x59\xb6\xb3\xd9\x8d\x6c\x79\x26\x63\x27\xbb\ \x99\x49\x9b\xcd\x46\x99\x9d\xf6\x0d\x02\x21\x11\x6b\x90\xa0\x01\ \xd0\x0a\xb7\xd3\xff\xde\x73\x0e\x40\x52\xb2\xe4\x58\x49\x9d\x98\ \x6a\x1e\x1c\x89\xc2\xe5\x5c\x3e\x9c\x1b\x0e\xcf\x32\x9f\xeb\xf3\ \xb3\x4c\xf2\xf4\xfc\x2c\x97\x9e\xb3\x82\xe7\x72\x92\x5c\x5b\x25\ \x32\x2f\x3f\xf9\x84\x09\x53\x78\x59\xf8\x49\x72\x94\xb0\xc3\x38\ \x28\xf3\xbe\x1c\xc8\xeb\x4a\xdd\x4c\x92\x8b\xf0\xfb\x60\x5a\x97\ \x72\x65\x34\x4e\x3e\xc4\xd5\x4f\x99\xc8\xb8\x75\xd2\x4f\x3e\x4e\ \x5f\x0f\x7e\xa2\x45\xbc\xf2\x5a\x9e\xbf\x9f\xc2\x98\x57\xa9\xf2\ \xec\x52\xe6\xa6\x70\xde\x72\xaf\x4c\x71\x76\x18\x7e\x3e\x73\xbe\ \xd6\x92\x79\x58\x37\x2e\x27\x9c\x4b\xce\x9f\x94\x07\x4c\x2b\xf6\ \x6f\xb6\xcc\x94\x97\x03\x57\x72\x21\xc7\xac\xb4\x72\xb0\xb4\xbc\ \x3c\x65\xff\x79\x72\x76\x48\x33\xcf\xcf\x0e\x03\x5f\x33\x93\xd6\ \x8c\x1e\x4d\x12\x36\x07\x02\x07\x4e\xfd\x29\xc7\x2f\x4a\x7f\x1a\ \xbe\x2e\xa5\x5a\x64\x7e\xfc\x6c\x34\x8a\x0f\x68\xf0\xb8\x30\x36\ \xe7\x40\x3f\xee\x3d\x48\xa5\x30\x81\x3e\x78\x5e\xc8\x53\x20\xe4\ \xac\x64\x5c\xab\x45\x31\x49\x04\xb0\x2c\x6d\xd2\x6e\x92\x73\xbb\ \x50\xc5\xc0\x9b\x72\x7c\x74\x5c\x7e\x3a\x6d\x1e\xcc\x8c\xf7\x26\ \x5f\x7f\xa6\xe5\xdc\x8f\x47\x2b\x0f\x2c\x11\x43\x4f\x06\xd7\x7e\ \x30\xd3\x46\x5c\x0d\x54\x91\xc2\x1e\xe3\x51\xa4\xa6\xf9\x0a\x83\ \x12\x10\x54\xc9\x8b\x2d\x0c\x1e\x8f\x6e\x73\xf8\x1c\x38\x4c\x3a\ \xb9\x83\xa0\x60\x26\xc8\xa9\x5c\x65\xe6\x8f\xca\x79\x35\xaf\xfb\ \xc6\xcd\xd1\x11\x70\x93\x9c\x4f\x33\xc9\x3a\xe0\x2c\x55\xba\x90\ \x9e\x29\xc7\x60\x0e\x4f\x6f\x78\x21\x64\xca\x24\xfc\x64\x2c\xf3\ \x19\xf7\xcc\x55\x65\x69\xac\x77\xb0\x12\x68\xd3\x7b\xf8\x19\xb1\ \x4d\x1b\x0f\xd9\x1b\xcf\x04\xcc\x9c\x49\x56\x39\xf8\xc5\x1b\x96\ \x2a\x57\x6a\x5e\xb3\x5f\xa6\x7f\x7f\x0b\x8b\xa6\xcc\xf8\x4c\xda\ \x30\x27\x35\xa2\xca\x81\xd2\xb8\x96\x83\xf9\xa8\xf7\x82\x6b\x5d\ \x1f\xac\x50\x05\x6b\x39\xd8\x3d\x12\x7a\xd9\xcc\x12\x9a\x3b\x47\ \x7b\x48\x27\xac\x82\x4d\x41\x82\x19\x0d\xcc\x40\x4a\x20\xbb\x1b\ \xa9\x81\x73\x5b\x09\x5f\x59\xc9\xcc\x9c\x49\xbe\xba\x2d\x92\x83\ \xa3\xb5\x59\xc6\xc1\x91\x29\x55\x2c\x70\x74\xc9\x2d\x5f\xc0\x21\ \xc8\xdc\xb0\x87\xaa\xdd\xd4\xe5\x9b\x39\xab\x4d\xc5\x38\xf0\x7a\ \xa3\xe4\x12\xb9\xf0\x19\xe8\xb2\x65\x58\x15\xc4\xef\x36\x48\xd0\ \x09\x55\x1e\x18\x13\xb0\x12\xee\x25\x3b\x44\x83\x84\x73\x73\x40\ \x8b\xa3\x7a\xf1\x97\x5b\x2b\x83\x16\xe4\xa7\x52\x1b\xd8\xfa\xbd\ \x7f\xea\x3a\x4c\xd0\x60\xa4\x64\x2e\x39\x6a\x01\x94\xfc\x3b\xe8\ \x87\xdf\x48\xa0\x46\xe8\x2a\x05\x98\x38\x93\x4b\xb0\x74\x39\xae\ \xe4\x90\x48\x52\x13\x28\x00\x89\x9d\x1b\x0d\xfa\xc1\x15\x9c\x14\ \x68\x2f\x48\xe5\xb2\x10\xa6\x02\xed\x48\x22\x2a\xec\x2e\xad\xc2\ \x15\x86\x8c\x35\x6a\xda\xa6\x96\xe7\xdf\x51\x2d\x3f\x6d\x37\x18\ \x77\x1e\xc9\xe7\xa4\xc6\xd7\x26\x62\xf3\xd7\x06\x7f\xec\x03\x8e\ \x75\x3d\x04\xe1\xbd\xf6\xa5\x3b\xc5\xad\xe5\x68\xd8\xf8\xdc\xc4\ \x2d\x52\x9b\x19\x9d\xee\x32\x35\x39\x3f\xf8\x82\x2d\x6e\x01\x3f\ \x7c\xd8\x75\x1b\x54\xd2\x4e\x5b\xdd\x76\x79\xac\x02\x11\x5a\xad\ \xc8\xf1\xb5\x9f\x77\x64\x8f\x9e\x84\x9f\x5d\xa0\x01\x0f\x65\x63\ \x68\xbf\x4a\xba\x70\xfa\xe0\xec\x8e\xff\x32\x82\x7f\x3f\xce\x61\ \x8f\xbc\xd2\x5e\xd1\xc3\x9d\xa9\xfa\x9f\x36\xe6\x1c\xb7\x8e\x96\ \x67\xb7\x0d\x87\x8c\x0e\xca\x9c\xe7\x4a\x2b\x70\x10\xae\x02\xa3\ \xc1\x3f\x07\x2f\x1a\x5a\x8f\x9f\x4e\xc1\x4e\xb8\xa7\x1b\x06\x74\ \x0b\xe6\x68\x24\xfb\x87\x5c\xb2\xdf\x4c\xce\x8b\x1d\x25\xf1\x79\ \x58\x34\x54\x5c\x80\x01\x53\xd2\xee\x44\x47\x1c\xbb\xe3\xfe\x08\ \x07\xae\x9d\x69\xfd\x70\xaa\x2c\xd8\x4e\x5d\x0f\xbf\xfe\x60\x44\ \xdf\x02\x10\x13\x92\xec\xb2\xa8\xac\x83\xa0\x00\xac\x35\x67\x56\ \x2e\x00\xd5\x68\xb1\x69\x56\x4a\x78\x3f\x08\xc3\x60\x2d\x6b\xb4\ \x6b\x7c\x8f\x37\x46\xb3\x19\x04\xb0\x10\x6b\x68\x8d\xb1\x6c\xb1\ \xc0\xa7\xb0\xc6\x5c\x03\x91\xcd\xda\x56\x36\x18\xdf\x0f\xdf\xdb\ \xda\x6a\xd7\x44\x40\x5d\x80\x04\x9a\xa0\xd8\x89\xf8\x47\x9f\x08\ \x9e\x13\x29\x18\x10\x2b\x32\x3d\x60\xb4\x7d\xf7\x35\xc4\xbf\xf8\ \x09\x24\x3c\xaf\x20\x1c\x62\x81\x5d\x25\xd3\xe1\x2d\x39\x3c\x66\ \xac\xbc\x29\x86\xfb\x43\x8b\xa9\xad\x83\xd6\x43\x78\x22\x03\x1f\ \x14\x44\x20\x7e\x30\x14\x20\x19\xe1\x21\x82\x70\x01\xd6\xa6\x51\ \x4d\x0c\x6a\x20\x0c\x80\xf8\xc1\x2c\x3b\x69\x82\xd5\x33\x95\x8f\ \x50\x6a\x43\x35\xd6\x27\xbc\xdc\xe3\xf3\xb7\x9c\xf8\xb7\xca\xf9\ \x3e\x3a\xfc\x1d\x48\xdf\xdd\x03\x3c\xa3\xf1\x97\x6a\x3e\x97\x74\ \xde\xaf\x60\x23\x87\x30\xd0\xc8\x7d\x73\x90\xda\x38\x11\x4c\x48\ \x17\x57\x36\xa1\x27\x04\x94\x1f\x3c\x80\x85\xdb\x94\xcd\xe0\xa8\ \x40\xfa\xb2\x36\xbb\x90\xce\xe3\x49\xaa\x1c\x02\x2e\x6d\xf7\x72\ \x75\x3e\x43\xbb\x04\xc7\x34\xc4\x9b\x21\x03\x88\x51\x27\x2e\x31\ \x66\x6b\xf2\xaf\x74\xc3\x13\xca\x09\x07\x34\x72\x61\x47\xc8\x35\ \x24\xd1\x77\x99\xe4\x6d\x9a\x1a\x7d\x73\xc8\x5d\x2a\x27\x5a\x36\ \x31\x29\x80\xd4\x5f\x09\x4c\xae\x82\x57\x98\xd3\x79\x2a\x63\xea\ \x83\x0c\x31\xe5\x65\xee\xd0\x4b\x68\x05\x5c\x57\x3a\xb0\x4d\x25\ \x03\xa1\xac\xd0\xf2\x4e\x11\x1c\xf7\x52\x04\x17\x91\xe8\x28\x84\ \xcd\xdc\x14\x53\x93\x4a\xb9\x0c\x1e\xfb\xa5\x94\x45\x90\x00\x22\ \x0d\x92\x0e\x69\x57\x64\x83\x86\x65\x53\x2a\xee\xba\x42\xc9\xde\ \x25\x95\x93\x5e\x4a\xe5\x43\x24\x3a\x4a\xa5\xb4\xe6\x46\xa5\x92\ \xfc\x38\x77\xa6\xe0\x33\x8d\x56\x99\x32\x71\xaf\x6e\x64\x14\x95\ \x70\x21\xd6\x24\x91\xde\x02\xc9\xf6\x54\xeb\xfb\xbb\x9f\x77\x36\ \x45\xbf\xb9\x6e\x01\x04\xb0\x85\x6e\x98\x7c\xf0\x2a\x04\xe8\x00\ \x20\xb7\x64\x73\x62\xa9\x0d\x38\xeb\x0c\x12\x96\xda\xb8\x00\x49\ \x6c\x60\x47\x16\x60\x7d\x20\x9a\x97\x01\x31\x21\x0e\x5f\x4a\x1a\ \x06\x63\x42\x29\x82\x82\x46\xfa\xe5\xa5\xe5\x33\x25\x58\x98\xd4\ \x45\x43\x8e\xe7\xc1\xd6\x74\x65\x8a\x71\x74\x5c\xe6\x9b\x9b\x9b\ \xd1\x83\x82\xea\x0d\xc6\x79\x69\x25\x42\xc9\x11\xa0\xf1\xa4\x7f\ \xc0\x7f\xef\xd9\xd4\x20\xe4\x23\x76\x8d\x0e\x82\xa6\xa3\xcc\xbf\ \xb5\x6d\x7b\x58\x79\x03\x2f\x2f\x9d\x03\x32\x79\xe1\x1f\x4c\xde\ \x0f\x4e\xe2\x25\x44\x70\x10\xd3\xda\x48\x61\x23\xeb\x97\xdf\xda\ \x62\x3e\x2c\x23\xaf\x21\x94\x67\xaf\x28\x02\xed\xa9\xa8\x2f\x4c\ \x5e\x9a\x02\x4d\xd6\x4b\x2b\xb0\x90\x4f\xb6\x64\x15\xe6\x7d\x3c\ \x8c\x6f\x83\xf7\xf5\xab\x74\x96\xab\xd0\x68\x2b\xb0\x03\x84\xcd\ \x58\xe6\xa5\xaf\x4f\xbf\xa3\x60\xb7\x24\x38\x77\x97\x16\xbf\x3b\ \x2d\xd3\x18\xa8\x86\x54\x9a\x57\xb0\x23\x38\xec\x10\xe1\x81\xab\ \xb2\xe8\xa3\x66\xe4\x0f\x55\xac\x0c\xa7\x29\x66\x94\x56\xe6\xe6\ \x46\xb6\xc1\xde\x4e\x29\x1b\x4c\xc5\xf8\xb9\x90\xcb\xb5\x3a\x2c\ \x25\x70\x33\x5c\x8d\x08\x69\x16\xc7\xa1\xf2\x53\x08\xaf\x68\x9f\ \x26\x71\xc3\xf1\x81\x2a\x17\x13\xb6\x8d\x7c\xed\xff\x48\xfd\x8f\ \x90\x6c\x7f\x2e\x31\x7b\x93\xf3\xc5\x46\x15\xf9\x91\x39\x79\xa0\ \x1c\xf2\x4d\x81\x05\x54\xa6\x88\xc3\x90\xec\xc4\xa8\x4f\xab\x2b\ \x09\xb8\x04\xf4\x72\x80\xb1\xa5\x1a\x01\x85\x7b\x5d\x68\xd7\x94\ \xa6\x9a\xeb\x0a\x63\x0f\x42\xcd\x46\xd6\x6c\x0e\x79\x00\x9c\xaf\ \x78\xaf\xe4\x2a\x6b\x4d\x55\xd0\x51\x88\x37\x5e\x61\xc7\xd5\x92\ \x9b\x93\x58\xc8\x0a\xf9\x6a\x1b\xe4\x2d\x79\x8d\xc5\xc9\x50\x18\ \xcb\xf9\x55\x38\x18\x90\x79\xba\x1a\xcf\x86\xa8\xe0\xb1\x30\x65\ \x1d\x02\xc9\x92\x43\xd2\x8a\x93\xf3\x21\xeb\x79\x11\x20\x42\x51\ \xe5\x0b\xe6\xac\x98\x24\xe3\xc3\xa0\x84\x43\x6d\x16\xe6\xe4\x78\ \x58\x16\x0b\xba\xa3\xbe\xd7\xca\x30\x34\x33\x64\x26\x62\x1d\x50\ \xb9\xa0\x4f\x36\xab\x99\x80\x31\x24\x33\x94\x4e\x0a\x56\x81\xca\ \x47\x60\x77\x2c\xa3\x6b\xcb\xa8\x9f\xdc\x40\xec\x4d\x55\x33\x8c\ \xc1\x5b\xa5\xc6\x5a\x65\xb7\x38\xcc\x81\x45\x33\xa3\x49\x93\xa9\ \x59\x16\xec\x43\xa6\xe6\xa1\xea\x14\x2a\x05\x64\xd9\x40\xdb\x4b\ \x76\x25\x6b\x30\x93\xff\x8c\x97\x5f\xf0\xbc\x40\x75\xe1\x26\xa8\ \x30\x58\x6b\x55\x67\x0a\x6f\xd9\x28\x61\x6a\x72\x08\x30\x62\xde\ \x85\xba\xc2\xca\x8d\xd9\x7e\x54\x35\xbf\xd4\xc2\x4c\x29\x9b\xea\ \x39\x6b\x0f\x64\x72\xba\x9b\x2d\x3a\xfc\x96\x4c\x0b\x21\x21\x54\ \x7e\x63\x6a\x79\xd0\x5c\x7c\xad\x5e\x82\xb6\x97\x15\x88\x2f\xca\ \xaa\x8d\xae\x72\xd8\x1d\x48\x80\x19\x04\xda\x95\xbb\x68\xc4\x37\ \x18\x13\x21\xb5\x8e\x99\x26\xd5\x45\x45\x68\xf2\x50\x45\xb8\x8e\ \x8f\x8b\xb8\x0d\x93\xb1\x4f\x1e\xb5\xcf\x44\x92\x42\x21\xb3\xc7\ \x22\x03\xf5\xef\xdc\x2a\xc1\x2f\x55\xea\xb3\x49\xf2\x62\xf4\xd7\ \x24\xe8\xaa\xe4\x02\xd4\x37\x49\x46\xe1\x7b\x19\x82\xa8\x49\xf2\ \x0c\xbb\x5d\xbc\xc5\x3f\xe9\x23\x45\x93\x49\x08\xb8\xce\x0e\x89\ \x82\x47\x24\x63\xcb\xb1\x5b\x3b\x96\x97\x58\x81\x33\x25\x5d\x10\ \x34\xc9\x7b\x8b\xee\xfe\x93\xff\xab\x35\x00\xe5\x3c\xc7\x63\x3c\ \x95\x22\x2b\xd4\x75\x25\xf7\x8c\x87\x9f\xf1\x2c\x62\x5e\xc1\x3e\ \x3a\x70\xb8\xd4\xa4\x33\xe7\x62\x0b\x1b\xf0\xc7\xf6\x00\xda\xf7\ \x31\xf4\x62\x3c\x1a\xb1\x01\x3b\x3a\xc2\xff\xb7\xa9\x02\x4d\x29\ \x3e\x9d\x24\x27\xbb\x36\xa6\x7d\xd7\x02\x1b\x86\x32\xf7\x47\x54\ \x90\x61\xef\xa9\x82\x82\x66\x40\x43\x27\x77\x69\xe8\xd1\x48\xff\ \x48\xd1\xe1\xfd\xc2\xbf\x86\x20\x5f\xae\xe6\xb6\x8f\x4f\xfa\xbb\ \xd9\x1f\x10\xfc\x0e\x8c\x55\x08\xe3\x94\xad\xda\xa6\x7e\x50\xf8\ \x96\xae\x72\x29\x23\xdb\x05\xde\x1b\xe2\xdd\x17\x78\x9f\x44\x78\ \xff\xd0\x3b\x78\xef\x64\x55\xba\xaa\x6e\x90\xff\xb4\x82\x9c\x59\ \x81\x7f\x58\x37\xa2\x10\xdc\x06\x23\x7a\x9c\x3c\x1a\x3f\xaf\x3e\ \x79\x2b\x21\xff\xee\x1f\xd6\x7f\xb7\xa1\x31\xf2\x02\xf2\x22\x93\ \xc7\x16\xbf\xfd\x83\xf2\x0f\x11\xca\x3f\xee\x27\x94\xbb\x12\x74\ \x80\x32\x26\x57\xb1\x0b\x19\x1d\x2d\x0c\xfc\x93\x3e\xdc\x02\x4d\ \xa7\x22\xf8\x83\x69\xc1\xbe\xe4\x30\xfd\xb8\xa9\xbd\xaf\xcc\x4c\ \x09\x70\x2c\x2f\x53\x26\xd5\xd6\xe8\xc2\xe5\x34\x28\xa9\x6b\xf8\ \xed\xca\x3f\x6b\xad\x44\xf8\x60\xad\x83\xbb\x3f\xec\x7f\x79\x61\ \xe5\x17\x00\x11\xf6\x88\x5e\xed\x50\xbe\xed\x53\xd3\x2f\x56\xbc\ \x82\xb3\xa0\x5b\xf3\x58\x0a\x61\x59\xcb\x4e\xdb\x78\xd1\xf6\xf3\ \x1c\xc4\xbe\x7c\x98\x1a\xcb\x25\xb8\x0a\xdd\xbb\x63\x57\x7a\xe1\ \x14\x24\x84\x35\x85\x08\x5f\xdb\xcc\xb8\x7e\x77\xba\x5b\xb3\x69\ \xa7\x01\x2a\x2f\xaf\xdf\xb6\x34\x2d\x06\x4b\x2c\x0e\xc2\x3a\xf4\ \xb6\xc3\x5c\x69\x22\x5d\xe5\xc8\x33\xd5\x83\x41\x04\xb1\x7f\xde\ \xd8\x21\xfb\xa0\x8a\xd8\x4c\xd9\xb5\x35\xcd\xc1\x49\xc9\xa5\xb1\ \x57\x5d\xbf\xf4\x8a\xb0\x42\x43\x06\xbe\x1d\x41\xc5\xe9\xd5\xaa\ \x73\x43\x42\x19\x1c\x5d\x43\xda\xed\x3a\xe3\x7e\xc2\xff\x63\x91\ \x1a\x82\xc5\x6f\x32\x35\xbd\xe4\xe8\x75\xa5\x75\x0b\x6f\x2c\xc6\ \x55\x0d\xc9\x16\x48\x66\xa6\x94\xa1\xf5\xdb\x21\x22\x66\x95\xd2\ \xb1\x4e\xdc\x1d\x95\xe6\x6d\x94\xd0\x0e\x5e\xa3\x19\xdc\x02\x8b\ \x21\x7b\xd7\x2d\x65\xb0\xf9\xb6\x7d\x07\x23\x76\xa8\x94\x5c\x5c\ \xf1\x05\x9d\xb7\x85\xa4\x97\x6d\x60\x1b\x4c\x46\xda\x57\x31\x38\ \xcb\xf1\x45\x0d\x61\x72\x20\x34\x58\xd4\x60\x4d\x25\xe2\x91\xba\ \x62\x32\xea\x74\xb1\x7b\x60\x35\x37\x7d\x48\xbc\x5d\x89\xfd\xa0\ \xc1\x8d\xac\xbe\xab\x42\xc5\x7a\x2b\x9d\x63\x17\xde\xea\xbf\xfd\ \x0b\x47\x90\xb6\xc2\x7d\x4b\x53\xe8\xe7\x7a\xc9\x6b\x07\xea\x13\ \x74\xcd\x40\x32\x81\x28\x17\x18\x81\x40\xb7\x69\x16\x6a\x1c\xcd\ \xed\xb2\x7e\x0c\x17\xf0\x55\x39\x7c\x6f\x0e\xdf\x0a\x7c\xf2\x5f\ \x2d\x31\x7f\x54\ \x00\x00\x02\x78\ \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\x03\x00\x00\x00\x44\xa4\x8a\xc6\ \x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ \x45\x50\x4c\x54\x45\x00\x00\x00\x01\x01\x01\x05\x06\x04\x0c\x0d\ \x07\x12\x14\x0c\x1f\x26\x09\x2b\x35\x08\x39\x45\x0b\x47\x58\x08\ \x56\x6a\x09\x64\x7c\x0a\x71\x8c\x0e\x7d\x9b\x0e\x86\xa6\x0e\x8d\ \xb1\x0a\x92\xb6\x0b\x95\xb9\x0e\x98\xbe\x0c\x99\xbf\x0c\x9b\xbf\ \x14\x9c\xc3\x0c\xa2\xca\x0c\xaa\xd5\x0c\x45\xb9\x54\x8c\x00\x00\ \x00\x01\x62\x4b\x47\x44\x00\x88\x05\x1d\x48\x00\x00\x00\x09\x70\ \x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\ \x00\x00\x00\x07\x74\x49\x4d\x45\x07\xda\x0b\x04\x00\x20\x37\xaa\ \xfa\xb2\x02\x00\x00\x00\x19\x74\x45\x58\x74\x43\x6f\x6d\x6d\x65\ \x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\ \x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x01\x87\x49\x44\x41\x54\ \x38\xcb\x95\x93\x8d\x52\xc4\x20\x0c\x84\x29\x2d\x85\x00\xd7\x1e\ \x98\xf0\xfe\x8f\xea\x06\x4a\xf5\x74\x74\x94\xb9\x9f\x19\xf8\xd8\ \x64\x93\x60\xea\xef\xeb\x69\xfe\x07\x14\x5d\x3f\x03\xcc\xd2\x17\ \x7f\xbe\x72\x03\x05\xa7\x67\xa2\x40\x31\x9f\x22\x75\xea\xbc\x4d\ \xa0\x88\x64\xef\xac\xc1\xb2\x2e\x3c\x84\xcb\x2b\x50\xa4\x84\xd5\ \xcc\xb5\x6c\x71\x12\x17\x50\xe4\xd8\x97\x71\x76\xfd\x85\xe7\x20\ \x06\x80\xfb\xbb\x6e\xaf\x9e\x62\xa4\xdd\x9a\xc5\x2c\x7e\x68\x0c\ \x80\x25\xe8\xc5\x3d\xab\x87\x26\x69\x57\x82\xe4\x43\x41\x92\x66\ \xe7\x6b\x63\x98\x61\x6e\x4f\xd5\x5b\xb3\x4c\x80\xab\xd7\x73\x16\ \x14\x89\x85\x5c\x6e\xa7\xc3\x46\x00\xc0\xa7\x02\xf2\x80\x81\xed\ \x90\xa2\xc5\x88\x8b\x01\x11\x21\xe9\x4e\x2e\x1d\x28\x42\xc8\x00\ \x49\xf5\xf3\x15\xf1\x1d\x33\x82\xd8\x2c\x13\x08\xf0\x15\xa5\xeb\ \x6b\x31\x2c\xb1\x6e\x99\x78\x03\xfe\xc2\x85\x34\xd9\x35\x4a\xd5\ \x48\x86\xbe\x00\xdc\x43\x01\x48\xdf\x00\x0d\x91\x5a\x25\xad\xd0\ \x20\x84\xae\x10\xc7\x48\x12\x07\xa1\xe5\x5e\xc1\xa5\x97\xa0\xa9\ \x68\x42\x5a\x47\xb7\x99\x87\x4d\x44\xb0\xd4\xc3\x38\xda\xba\xcd\ \xda\x15\x6a\x37\x85\xba\x34\x42\x7e\x23\x11\xfd\xaa\xf1\x01\x8c\ \x94\x2c\x61\x24\x6e\xab\x90\xd4\x52\x5f\x00\xb3\xef\x2d\x3e\x5a\ \x43\xb3\x34\x3e\x2e\x04\x74\x66\x02\x18\x07\xa7\x7b\x5b\x48\x39\ \x45\xbf\xf5\xb1\xd8\xd2\x87\x82\xe6\xe9\xc6\xa0\x58\xbb\xcc\xb9\ \x52\x17\x37\x00\x0d\x7f\x9f\xc0\xe7\xae\xcd\x7a\x5c\xcd\xba\x34\ \x38\xee\x23\xbb\x65\xdd\x13\xbc\xb8\xe3\x6e\xf7\x1c\x7b\xce\x14\ \xbc\x0f\xf1\x51\xf1\x36\x08\xcd\x79\x01\xfa\xe4\xe9\xab\xc1\x87\ \xbb\xa2\x8e\xe4\x2b\x70\x3d\xbd\x31\xef\xe3\xf7\x2b\xf0\x6d\xfd\ \x01\x78\x07\x3f\xc0\x33\x81\xbd\x2f\xd9\x1a\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x82\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x40\x00\x00\x00\x20\x08\x03\x00\x00\x00\x95\x43\x8e\xb6\ \x00\x00\x00\xc0\x50\x4c\x54\x45\x71\x8c\x0e\xa5\xa5\xa4\x0c\x0d\ \x07\x00\x00\x00\x97\x97\x97\xa2\xca\x0c\xec\xec\xec\xfb\xfb\xfc\ \x8c\x8c\x8b\xca\xca\xca\x78\x78\x77\xd4\xd4\xd4\xb3\xb3\xb3\x56\ \x6a\x09\xba\xba\xba\x3a\x3a\x37\x56\x56\x55\xf2\xf2\xf2\xf5\xf5\ \xf5\xc5\xc5\xc5\x68\x69\x67\x49\x4a\x48\x05\x06\x04\x25\x27\x22\ \x1c\x1d\x19\x12\x14\x0c\x40\x41\x3f\xd8\xd8\xd8\x34\x35\x31\x71\ \x72\x70\x9c\xc3\x0c\xf8\xf8\xf8\xcf\xcf\xcf\xef\xef\xef\xe1\xe1\ \xe1\x2d\x2e\x2a\xde\xde\xde\xe7\xe7\xe8\x01\x01\x01\xff\xff\xff\ \xe4\xe4\xe4\x39\x45\x0b\x64\x7c\x0a\x8d\xb1\x0a\x98\xbe\x0c\x82\ \x82\x81\x2b\x35\x08\xdb\xdb\xdb\x5d\x5e\x59\x47\x58\x08\xaa\xd5\ \x0c\x1f\x26\x09\x99\xbf\x0c\xbf\xbf\xbf\x7d\x9b\x0e\x61\x61\x60\ \x92\xb6\x0b\x86\xa6\x0e\x9b\xbf\x14\x95\xb9\x0e\xd8\xda\xd1\xc6\ \xc8\xbf\x62\x63\x58\xd2\xd4\xcb\x33\xee\xa2\x2e\x00\x00\x04\x7d\ \x49\x44\x41\x54\x78\x5e\x8d\x95\xe5\xb2\x23\x37\x14\x84\x47\x30\ \xcc\xcc\x8c\x66\xf6\x85\x0d\xbc\xff\x5b\xe5\x48\xb3\xbe\xbb\x9b\ \x54\x25\xe9\x3f\xae\x1a\xbb\x3f\xb5\x0e\x8c\x85\xfb\xbf\xeb\xdb\ \xd9\x39\x50\x6a\x18\x86\x85\x14\x2d\x4b\xd3\x3e\x8b\x70\x92\x60\ \x92\xf6\x45\xdf\xe3\x29\x22\xff\x0d\x28\x15\x85\x22\xc3\x50\x75\ \x4b\x2b\xec\xb8\xe8\x71\x92\x85\x59\x11\x63\x02\x9a\xc8\xdf\x00\ \x7b\xa6\x5f\x01\x25\xa5\x08\xfc\x8f\x5c\x5a\x1e\x56\xe3\x0f\x0f\ \x84\x86\xb1\xf3\x69\x60\x17\x49\x44\xa6\xe9\x67\x40\x55\x89\x5c\ \xd5\xcf\x48\x05\x59\x7e\x93\x8f\xae\xbb\x0c\x83\xe4\xd6\xb5\xec\ \xb5\x83\x7e\x6a\xac\xd2\x51\xb2\x69\x22\x3f\x00\x7b\x70\xbf\x0b\ \xe6\xc5\xdc\x3e\xdf\x45\xf1\xfe\xca\xf1\x89\x1e\xfa\x29\xef\xa4\ \xb1\xcb\x87\xd6\x75\x99\xdf\xf5\x5a\xb9\x6e\xad\xb7\xb7\x18\x02\ \x7c\x01\xf6\xa2\xf8\xdc\xdc\x22\x02\x8a\x6e\x97\x0f\xb1\xda\x7f\ \x07\xfc\xae\x9f\x86\xfc\xb4\xe8\x86\x91\x0f\x16\x42\xaa\xdf\x0c\ \xfa\x38\x43\x0c\x8a\x4a\x00\x10\xe1\xe5\xdf\x5f\x30\x79\x69\x4a\ \xb7\x2f\xc2\xe7\x9f\xdd\x32\x4a\xcb\xa2\xab\x16\x75\x92\x28\x4a\ \xe2\x3e\x73\x0e\x8a\x62\xf9\x4a\x98\x4d\x3c\xc1\xea\xdf\x1d\xa7\ \xd5\xfb\xfd\xe3\xf2\x6d\x25\x7c\xfe\x36\x4a\x10\x5a\x1a\x54\x2d\ \x21\x24\x0e\x4a\x4d\xd3\x82\x73\x56\xd8\x09\x66\x4d\xe0\x00\x7e\ \xfe\x91\xd9\xf0\xc6\xdc\x6e\xcd\x63\xc4\xbe\xd9\x40\x06\x0e\xe8\ \x24\x77\x51\xd1\x39\x21\x38\x43\xd2\xcc\xe5\x8e\x27\x4b\xb1\x09\ \xf9\x4a\x50\x89\x17\x76\xf0\xf1\x29\x82\xae\xa2\x70\x64\x04\x53\ \x5c\xaf\xd0\x3c\xe8\xb9\x87\xe2\x64\x86\x0c\x5e\x99\xc9\xf3\xc6\ \x4e\x0f\xd2\xe9\x0b\x20\x0a\xac\x7a\x9b\xfb\xb5\x82\x66\x54\xd5\ \xf5\x1b\xcb\x83\x9f\x22\x03\x04\x61\xcc\x4b\x6b\x8f\xf3\x5c\xd7\ \xe0\x06\xc6\xa8\xd2\xd2\x49\x00\x40\x56\x40\x75\xdf\x30\x7f\x25\ \xee\xf7\x10\xc6\xbc\x3d\xaf\xef\x37\xb0\x5c\x00\x50\xbd\x73\x37\ \xe4\x8b\xa9\xee\xba\xd2\x32\x7a\xb5\x64\x85\x09\x86\x27\xd3\x17\ \x40\xfc\xc0\x84\xa4\x3b\x71\xcf\x86\x61\x3b\x11\x20\x6c\xc1\x77\ \x7b\xaf\xf6\x00\xe0\x75\x8d\xe2\x34\xb2\x0f\x0f\x55\x1f\x8c\x20\ \x4c\xd6\x3a\xaf\x04\x81\x95\xd0\x04\x1e\x14\x8d\xfb\x31\x01\x42\ \x55\x1d\xc1\xf4\x14\x01\xc0\x9b\x1b\xe1\x38\x8e\x53\x12\x8c\xf5\ \x7c\xe0\x66\xfc\xea\xd6\x0a\xb8\x00\x6f\x2b\xf2\xfc\x98\xfd\xdc\ \xac\xd8\x23\x02\x8f\xd6\x2b\x64\x4a\x1a\x65\x94\x2a\xc8\x9b\x67\ \x6d\xb2\x33\xc5\x8e\x48\x11\x4f\x69\x91\x12\xc2\x01\x9b\xf5\x38\ \xf0\xb3\x9f\xe3\xad\x78\x67\x37\x21\x26\x07\xb0\xf6\x79\x65\x66\ \x79\xcb\x3c\xb6\xf3\x5c\x66\x43\x37\x5b\x85\x63\x04\x24\x44\xf6\ \x2f\x00\xf0\xf3\x5c\x58\xf8\x19\x30\x65\xd6\xe2\x5b\xea\xb0\x8c\ \xb2\x2c\x01\x20\x08\xa5\xb9\x53\x0d\x5a\xa4\x99\x86\x32\xf2\xe3\ \x0a\xc2\xf5\x0e\xe7\xbf\x08\xa2\xf9\xfd\x0a\xbb\xec\x34\x7b\x5e\ \xd7\xb9\xae\x3c\xd7\xc3\x22\xbb\x4e\xf8\x68\xbd\xe5\x71\x70\x0e\ \xd4\xa2\xfd\xab\x88\x60\xbc\x5c\x9f\x11\xaf\x2c\x1f\x81\x2b\x0b\ \x25\x40\x59\x76\x87\xa5\xf5\xea\x99\xa9\x96\xd4\x4e\x1e\x0a\x9b\ \xea\x6d\xed\xb9\x75\x6e\x58\x25\x26\x6b\x1b\x9f\xbc\x8d\xec\x06\ \x91\xc9\xaf\x71\x33\x53\xde\xc6\x7b\xb5\xfb\x43\x1d\x25\xd7\x93\ \xe5\x5a\x6e\x87\x66\xac\x4f\x36\x0e\xf4\xa5\x95\x65\x57\x55\xb4\ \x70\x5a\x01\xd0\x34\x3e\x37\x57\x13\xea\xb7\x16\x82\x51\x36\x22\ \x03\xd8\x28\xcf\x07\x40\x78\x6e\xa7\x37\x8b\xab\xda\x93\x63\x74\ \x92\x34\x3c\x14\x3b\x8c\xc9\x0a\x58\x4b\x16\x99\xa2\xf8\x7c\xb5\ \x12\x94\xc2\x28\x03\x20\x56\xfc\xe6\x34\xc2\x42\xba\x83\xef\xe7\ \x92\x91\x90\x9e\xaa\x8d\x41\x83\xd0\x2e\xa2\x17\xa0\xaa\x36\x7c\ \x85\x77\xd7\x2b\x2c\x13\xbb\x3f\x00\x2f\xd7\x8a\x03\x0e\x96\xaf\ \x03\xa0\xf5\x1a\xcb\x6a\x24\x94\x24\x09\x35\x0e\x85\xed\x84\x3d\ \x3b\xe8\xb5\xce\xbb\x1b\xf3\xa4\x17\xe1\x29\x6c\x37\x29\x7f\x2d\ \xa4\x02\x4f\x90\x6a\x86\xd5\x0c\x63\xdb\xb6\xbe\x65\x9c\xe4\x26\ \x4b\x52\x05\xf5\xa9\xed\x38\x31\x54\x60\x05\xf0\x3a\xde\xd6\xd1\ \x8c\x22\x00\x71\xf1\x2e\x54\x3b\xfc\x86\x0c\x5f\x1f\x46\x4f\x42\ \x07\x45\xaf\xf3\x82\x10\x9b\x16\x8f\x26\x28\xf8\x46\x71\xc0\x9a\ \x61\x03\xce\x97\xf0\x91\x2d\xd3\x07\x5b\x26\xec\x20\xe3\xd1\x0c\ \x8b\x2b\x6b\x38\x3d\xa3\x37\x36\xab\x41\x70\x72\x55\x1a\xc7\xaf\ \x1a\x70\x89\xd5\xf6\x88\xd7\x14\xf8\x28\x40\x2f\x6e\xbb\x75\x9d\ \x33\x00\xf8\x7a\xb7\x48\x39\x0d\xfa\x94\xa5\x4c\x34\xcd\x58\x72\ \x5f\x2b\x7b\xf2\xeb\x6b\xbd\x7a\x9a\x97\xcd\xe6\xb2\xfd\xb8\x8b\ \x62\x65\xc2\x72\x70\x40\xac\x20\x84\x28\x50\x60\x7e\x35\x4c\xa2\ \xd4\x7e\x3b\x94\xa5\xae\x3e\x9a\xee\xc0\x01\x3f\x54\x89\xa0\x0a\ \xcc\x15\x4f\x04\x7e\x06\xc0\x8e\x12\x38\x8a\xd1\x2c\xdd\xd2\x20\ \x87\xfd\xaf\x85\xa1\x63\x2b\xbe\x95\xcb\xe8\x9f\x7f\x6d\x5c\x9c\ \x06\xf6\x15\x30\xc5\x6f\x01\x6a\x5b\x6f\x5c\x64\x6f\x19\x8d\x73\ \xd8\xf7\x71\x9f\x24\x07\x45\xd1\x4b\x9e\xe0\xdf\x04\x00\x08\x5d\ \xd0\x06\x66\xef\xd4\xca\x3a\x8c\x94\xef\xc4\x49\x0a\x4a\x0a\x5b\ \x29\x63\x42\xfe\x07\x80\xe0\x80\x1a\x14\x21\x75\x68\xd4\x26\x57\ \x92\x42\x3b\x4f\x53\x12\x25\x81\x81\x94\x84\xfc\x05\x2c\x83\xdc\ \xf4\xf9\xf1\xbe\x01\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x06\xd8\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x06\x6a\x49\x44\x41\x54\x58\xc3\xed\ \x55\x69\x4c\x94\x57\x14\x55\xd4\x56\x5b\x63\xb4\xd5\x68\x13\xb5\ \x5a\xb5\x5a\x71\xa9\x25\x75\x50\x91\xd2\x0a\x54\x65\x13\x10\x14\ \x64\x19\xd1\x6a\x2b\x8b\x53\x34\x38\x2c\x65\x11\x37\x16\x51\x60\ \x40\xa8\xe2\x52\x59\x44\xa4\x54\x2d\x8e\xe0\x82\x36\x2e\x35\x2e\ \xa3\x18\xc6\x9a\x6a\x27\x85\xa9\x86\x88\x31\x19\xa5\xc9\x24\x24\ \xa7\xe7\x8d\x6f\x5a\x4b\x45\xb1\xb5\xb1\x3f\x3a\xc9\xc9\x97\x6f\ \x79\xf7\x9e\x7b\xee\xb9\x77\xba\x00\xe8\xf2\x22\xd1\xe5\x7f\x02\ \xff\x29\x02\x1f\x06\xa6\x78\x10\x49\x44\xa1\x44\x26\xb1\x84\xb0\ \xfb\x57\x09\x30\x81\x0f\x51\xaa\x5a\xad\x35\x24\x64\xea\x5b\x12\ \x33\x8d\xa6\xc4\x2c\xa3\x29\x35\xe7\xe6\xbd\xf8\xcc\xb3\xb7\x16\ \xab\x4b\xaf\xf3\x7d\x9d\x24\x67\xfb\x5c\x09\x30\xe0\x50\xb7\xb0\ \x0c\xdd\x9a\x9c\x3b\xad\xa1\xd1\xc0\xac\x50\x60\x46\x30\xe0\xaa\ \x04\x3c\x3e\x05\x16\xac\x04\x22\x53\x81\x35\xf9\xe6\xb6\x75\x5b\ \xf4\x2d\xc1\xd1\x45\x7a\xa9\x8e\xcb\xf3\x22\x10\x1d\x9f\xa1\x6b\ \xf6\x5f\x06\x4c\x98\x0d\x8c\x72\x25\xdc\x80\xb1\xde\xc0\x78\x7f\ \xc0\x2e\x08\x70\x08\x23\xb1\x70\x20\x38\x16\x88\xdd\x04\x64\x6e\ \x35\x9a\x3e\x89\xb5\xa8\xf2\x8f\x89\x08\x02\x75\xb1\x69\xe6\xb6\ \xa9\x7e\xc0\x9b\x0c\x35\xdc\x1d\x18\x13\x00\x4c\x5c\x08\x28\x48\ \x4a\x11\x01\x4c\x66\x72\x7b\xaa\x31\x8d\x70\x89\x04\x02\xe3\x48\ \x64\x33\x90\xb5\xc3\x68\x0a\x5e\x61\x51\x44\x2d\x94\xfc\x5b\x04\ \x84\xfc\xcb\x29\xf1\xfb\xf3\x80\x91\x5e\xc0\xb8\x10\x56\xac\x02\ \x3c\x57\x33\x11\xab\x55\xe6\x02\x41\xbc\x7a\x6f\x60\x5b\x12\x00\ \xc7\x15\xc4\x72\x2a\xf2\x39\xdf\x25\x01\xa9\x85\xc0\xda\x7c\x5d\ \xb3\xdb\xa2\x0c\x1d\x49\x84\x3f\x33\x01\x21\xa5\x6a\x3d\x30\x85\ \xbd\xb7\x65\xef\xa7\x31\xb0\x7f\x06\xb0\xaa\x14\xc8\x3b\x02\xec\ \x3c\x05\x6c\x3d\x09\xa4\x7d\x0b\xac\x28\x26\x19\x12\x9a\xbd\x06\ \xf8\x68\x15\xbd\x42\x32\x73\xd4\x40\x04\xc9\xe5\x94\x98\xdb\xa2\ \x56\x57\xdd\x78\x56\x35\x44\x0b\x2e\x24\xe4\x00\xce\x94\xd6\x9e\ \xfc\x3d\xd7\x02\xea\x32\x60\xef\x05\x60\x73\xe9\xd9\x5b\x91\xa9\ \xa5\xd7\xd3\x77\xd6\x35\x56\x9e\x32\x9a\xf6\x5f\x65\xa2\xe3\xc0\ \xca\x3d\x34\x67\x1e\x89\xf0\x5b\x67\xfa\x62\x16\xc9\x04\xa5\xd0\ \xa8\x5f\x02\xeb\x0b\x7e\x57\xc3\xa7\xd3\x1e\xc8\x2a\x36\xb7\xf9\ \x25\xb2\xbf\xec\xad\x32\x1f\xc8\x3f\xc6\xca\x0f\xe9\x5b\xe4\xd8\ \xd9\x11\x81\xc2\x70\xf3\x55\x9a\xfa\xaa\xb3\x46\x53\xe5\x15\x20\ \xbd\x16\x08\xa7\x22\xfe\xd9\x24\x40\x45\x3e\x66\x7b\x44\x8c\x15\ \xf4\x86\xa6\xe4\x4e\xab\x5f\xb8\xa6\xbe\x33\x2d\x11\x04\x92\x36\ \xee\xd4\xb7\xa8\x34\x0c\x96\x0e\x44\x7d\x05\x94\x9f\xa7\x0a\x59\ \x16\x39\x9d\xda\x2d\x2a\x17\x41\x44\xbd\xa9\xea\x46\xf5\x15\x93\ \x79\xfb\xf7\x40\xc2\x41\x60\xe1\x76\x7a\x64\x23\x30\x93\xbe\xf1\ \x26\x89\xcf\x18\x47\x53\x66\x6e\x5b\x12\x6f\x99\x14\x75\xfb\xa4\ \x62\x97\x58\x77\x8a\xe5\xc6\x2f\x42\x53\xaf\xd9\xcf\x8a\x28\xa1\ \x7a\x2f\x50\xa9\x23\x91\x35\x96\xc3\x8f\xdd\x80\x7c\x1e\xe2\xb1\ \x24\x43\x57\xf1\xdd\xcd\x7b\x55\x0d\x1c\xcb\x3a\xee\x8a\x72\x20\ \x60\x0b\xe0\x46\x3f\x78\xb1\x1d\x61\xbc\x66\x95\x00\x31\x69\x5a\ \xc3\xa3\xbe\xb0\x26\x2f\x28\x7e\xa8\xb0\x35\xa0\x3a\x73\x97\xae\ \x39\xfd\x1b\x20\x85\x44\xca\xd9\xff\x8c\x5d\x75\x8d\x42\xfa\x8e\ \xa4\xe3\x3b\x7b\xb1\xaa\x53\x0b\xb5\x86\x9a\x6b\xe6\xb6\x82\x73\ \x24\x4f\xa3\x2a\x77\x50\x85\x4d\x0f\xbd\xa4\x24\x89\x75\x3b\x69\ \xe0\xad\xba\x66\x6b\xc5\xe2\x9a\x4b\xc5\x4f\x9e\x01\x84\xff\xac\ \xc1\x86\xba\x2f\xce\xd0\x95\xd6\x99\xcc\xb9\x74\x7e\x31\x83\xed\ \x3d\x71\xf3\x9e\x48\xf0\xb4\x1e\x8a\x3e\x2f\x4e\x28\xd2\xd7\xea\ \x4d\xe6\xdd\x54\x2e\x99\xde\x58\xca\x09\xf2\x67\x4b\xbd\xd3\xb8\ \xbc\x88\x38\x8e\x6a\x42\xb6\xa5\xe2\x03\xaa\x54\x7d\x4b\x26\x95\ \xd6\xd6\x3d\x42\xc0\x2a\xab\x72\x55\x91\xbe\xf2\x9c\xb9\x6d\x0f\ \x3d\x70\xda\x00\x08\xd3\x75\x66\xf7\x5b\x5b\x52\x73\xf5\x4e\x6b\ \x05\x5b\x92\x76\x02\x58\x56\xc1\x49\x61\x62\xdf\x2c\x60\x1e\x95\ \x08\x5e\x47\x52\x6a\x93\xd9\x87\x3b\x64\x59\x32\xdb\xac\x6d\x47\ \xc0\x5a\x4d\x62\xae\xd6\x70\xec\x1a\x70\xf2\x47\xa0\xec\xc8\xc3\ \x3e\x75\x66\x9c\xc4\xd8\x79\x92\x44\xf1\x51\x7d\x4b\xd5\x75\xfa\ \x82\xfb\x63\x79\x15\x10\x42\x83\xfa\x70\x32\x66\xd3\xa0\x4e\xfc\ \xaf\x71\xe4\x76\x0d\x63\xc4\x7d\x35\x8f\x21\x60\xf5\x43\xb2\x46\ \x6b\xb8\xf4\x33\xd0\x70\x1b\x58\x14\x67\x59\xb5\x3e\x9d\x24\x61\ \xe9\x71\x09\x49\x7c\x4d\x12\x69\xa7\x01\x15\x3d\x15\xb2\x8b\x24\ \x38\xae\xce\xc9\x0f\x17\xd8\x52\x4e\x49\xd5\x71\x49\xe0\x71\x3f\ \x0b\x89\x3c\xad\xa1\xe1\x16\x70\x82\xb2\x8a\xbf\x6a\x7b\x8f\xa8\ \x01\x7c\xd5\x4d\xa2\x7b\x07\xe8\xe6\xe8\x1f\x37\xde\x29\x20\x29\ \x25\xb3\xfc\xec\xad\xa2\x7a\x7a\x82\xed\x88\x20\x09\x25\x77\x86\ \x2f\x7d\xe1\xc5\xe4\x2a\xb6\xe6\xe0\xe9\xc7\x13\xe8\x4a\xd8\x88\ \x40\x4e\x01\x89\xf1\x61\xb1\xdb\xf4\x17\x0d\xe6\x36\x4d\xf9\x99\ \xdb\xd3\xfd\xe3\xc3\xf9\xbc\x17\xf1\x0a\xf1\x6a\x07\x10\xef\x7a\ \xd9\x7b\xaa\xde\xfb\x60\x7e\xe2\xb6\xec\xe3\x46\x53\x1a\x0d\x9d\ \xc0\x6a\x97\x73\x42\x16\x73\xc3\x86\x16\xf1\x9e\x23\x7b\xf8\xe2\ \x5f\x09\xd8\xc8\x2a\x5e\x22\x7a\x12\xbd\x1d\xe6\xaa\x57\xfa\x47\ \xe5\x34\x1c\xbf\x7c\xe7\xd7\xe4\xbc\xea\x46\x85\x7b\xc4\x02\x3e\ \x1f\x48\x0c\x92\x78\x43\xc2\x7a\x3f\x70\x8c\xfd\x9c\x49\x0e\xbe\ \xab\xd2\x8b\x6a\x1b\xee\x56\xdc\x04\x0a\xb8\xbe\x37\x71\xac\xd7\ \xd3\x13\x5f\x70\x42\xe2\xb8\xb8\x72\xb9\x69\x4f\x5d\xfb\x33\x01\ \x91\xbc\x87\xac\xb0\x0f\xf1\xba\x0c\x38\xc4\x6e\xe6\x92\xa5\xd3\ \xe7\xaa\x0f\x64\x97\x9e\x6a\x56\xc6\x14\xde\x78\x6b\xa2\xf3\x2c\ \x3e\x1f\x4b\xd8\x12\xe3\x24\x6c\xe5\xb3\x77\x26\xbb\x45\x6c\xd8\ \x55\x7d\xa1\xa5\xfe\x2e\x50\xf7\x0b\x70\x88\x5e\x3a\xf0\x13\x7b\ \x4e\x53\x97\x73\x42\xca\xb9\xc6\x8f\xfe\x00\xd4\x37\xfe\x41\xa0\ \xab\xac\x5c\x24\xef\x2b\x2b\x1a\x2e\x82\x11\x13\x08\xbb\x7e\x03\ \x87\xbb\xbc\x3b\x43\x99\x36\x78\xb4\x22\x90\xf7\x8e\x84\x93\xb0\ \x4a\x3b\x38\x0d\x7e\x5b\xb1\x40\x19\xb3\xc5\x70\x44\xd7\xd8\x7a\ \xf4\x72\x63\x6b\x2d\xaf\xb5\x97\x9b\x1e\xd4\xea\x9a\x1e\xd4\x5c\ \x6a\x7a\x70\xf8\x52\xd3\x7d\xed\x85\xa6\xfb\x87\xcf\x1b\xef\x1f\ \x3a\x67\x34\x89\xb5\x6e\xad\xfe\x65\x59\xb9\xa8\x7a\x24\x31\x91\ \x98\x22\x13\xb9\x12\xb3\x09\x77\xc2\x8b\xf0\x26\x7c\x89\xb9\xed\ \x20\x9e\x79\x8f\x98\xe4\x9a\xa8\x70\x8b\xd0\x5a\xe0\x1e\x59\xad\ \xf0\x88\x3a\x38\xc5\x53\x55\x35\x75\x4e\xf4\x3e\x07\x9f\x98\xb2\ \xe9\x7e\x71\xbb\x1d\xe7\x25\xec\xa0\xc7\xb6\xd1\xac\x22\xb6\xc5\ \xd5\xa2\xe7\xfd\x84\xe4\x52\x4a\x7b\x62\x06\xe1\x26\x13\xfa\x11\ \xf3\x09\xa1\x40\x10\x11\x42\x84\xb6\x43\x88\x7c\x17\x28\xbf\xf5\ \x93\x67\xdd\x64\x2c\x7b\x19\x7b\x88\xcc\xd5\x53\xe6\x7e\xf1\x04\ \x9e\x6b\x0b\xe4\x37\xee\xf2\x8c\xab\x8c\x31\x45\xc6\x1c\x29\x73\ \xf4\x91\x39\x6d\x3a\x65\x42\x42\x41\x4c\x25\x1c\x9e\x64\x42\xf9\ \xce\x41\x7e\xab\x90\x67\x27\xc8\x58\xc3\x65\xec\xbe\x32\x57\x77\ \x99\xfb\xc9\x63\x48\x0c\x23\x46\x10\xa3\x88\xd1\x32\x58\x87\x63\ \x28\xbf\x19\x25\xcf\x0c\x93\x31\x06\xc9\x98\x7d\x64\x8e\x1e\xd6\ \xea\x9f\xb8\x88\xe4\x01\xd1\xaf\xd7\x88\xfe\xc4\x80\xa7\x2d\x22\ \xf9\x4d\x7f\x79\xa6\x9f\x8c\xd1\x5b\xc6\x7c\x49\xe6\xb0\xb1\xfe\ \x7f\xfc\x06\xb3\xa4\x19\x9e\x6b\xe3\x34\xfa\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\x94\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\x26\x49\x44\x41\x54\x58\x85\xc5\ \x96\x6d\x4c\x53\x57\x18\xc7\x3b\xc5\xa9\x73\x4e\x21\xc6\x45\x65\ \xbe\xc4\xf8\xc2\xc8\xc4\x84\x2d\x43\x08\x74\x33\x6a\xf4\x83\x73\ \xcb\x14\x4c\x8c\x89\xc9\x8c\xc9\xa2\x26\x66\x89\x19\x59\x50\xdc\ \xa7\xc5\x84\x7d\x33\xc6\x97\xf8\x61\x5b\xf4\x83\x13\xfc\x60\x8c\ \x41\x37\xd4\x11\xa7\x20\x82\x88\xa0\x85\xad\xa5\xb5\x40\x5b\x4a\ \x69\x7b\x5b\x5a\x28\xf2\xec\xf9\xf7\x9c\xb3\x7b\x21\x8a\x55\xae\ \x91\xe4\x97\x73\xee\xe9\xbd\xe7\xff\x7b\x9e\x7b\x7b\x8b\x85\x88\ \x2c\x6f\x92\x37\x1a\x9e\xb2\xc0\x67\xdb\x8f\xe4\x1a\xd8\x33\x86\ \x72\xe6\xa4\xa4\x82\xc9\x33\x55\x80\x37\x2c\x2d\x3d\x7a\xd6\xa6\ \x38\x7f\xf9\x76\xb7\x91\x9b\x75\x6d\xfe\xd6\x76\x57\xb8\xdd\xee\ \x8e\x34\xb7\x39\xc2\x5f\xec\x3e\xda\xc4\xd7\xac\x37\x53\xa0\x81\ \x47\x1a\x19\x21\x52\xa3\x9a\xab\xbf\x58\x2c\x4e\x1e\x8f\x97\x86\ \x87\x87\xa9\xb9\xb5\x23\x6a\x2d\x3e\x7c\x8a\xaf\xcb\x36\x4d\x40\ \x85\x3e\x0f\x4d\x8b\x50\x4b\xcb\xc3\xa4\x4c\x22\x91\xa0\xea\x1b\ \x0d\x01\x6b\xc9\xe1\x23\xa9\x48\xa4\x24\xf0\xf4\x29\x71\x75\x3a\ \x63\x8f\x83\x41\x8d\xea\xeb\xef\xfe\xdf\x91\x48\x24\x42\xd7\x6a\ \x1b\x93\x12\xa6\x09\x0c\x25\x9e\x4f\xa0\x5f\xa3\xdb\x77\xea\x47\ \xdd\x96\x48\x34\x4a\x85\x5b\x7f\x68\x34\x45\x20\x31\x3c\x3a\x70\ \x70\x68\x34\xc1\x50\x94\x6e\xfe\xf5\x37\x5d\xbd\xfa\x07\x5d\xa8\ \xac\xa4\xaa\xaa\x8b\xf4\x67\xcd\x75\xda\xb8\xa3\xec\xa1\xc5\x62\ \x79\x6b\xc2\x02\x08\x1d\x88\x0b\x62\x83\x02\x04\x63\xc4\x9a\x16\ \x4d\xd0\x23\x9b\x83\x2a\x2f\x5e\xa2\xd3\x67\x7e\xa1\xb3\xe7\x7e\ \xa7\xda\x5b\x77\x28\xff\xcb\x83\xf7\x4d\x11\x88\x4b\x81\x48\x5c\ \x17\x31\x12\x8d\x8d\x50\x5f\x28\x4e\xae\x6e\x3f\x75\xba\x3c\xe4\ \xe6\xb1\x8f\x6f\x0b\x3f\x03\xf7\x4c\x11\x88\x71\xb5\xa1\x01\x6e\ \x75\x54\x48\x18\xe7\x18\x81\x16\x13\xeb\x18\x93\x62\x7c\x8d\xfc\ \x0a\x4f\xfc\x19\x88\x0e\x8a\x8d\x55\x90\x31\x10\xf3\x40\x44\x5f\ \xc3\x1c\xeb\x90\x33\x4d\x40\x93\x55\xf7\x69\x22\x00\x8c\x9d\xab\ \x4e\xa8\x75\x48\x9b\x26\x10\xe6\xca\x7a\xc3\x62\x63\x8c\xbe\x90\ \x08\xf2\x04\xf5\x40\xac\xe1\x58\x8d\xb8\xc6\x34\x81\x20\x57\xdf\ \xd3\xaf\x87\x63\x04\xc6\x40\x88\xe0\x9c\xd7\x22\x10\xe0\xd6\xba\ \xfb\x88\xba\x02\x22\x04\x01\x4a\x06\x6b\x00\x6b\x6a\xee\xf2\xf3\ \xed\x18\x30\x59\x00\x9b\x22\x1c\x38\x7b\xc5\x31\xa4\x30\xfe\xe3\ \xd5\xe7\x10\x80\x18\xae\x31\x55\x00\xa1\xd8\x1c\x63\x87\x47\x88\ \x20\xd0\xd1\xab\x77\x07\x73\x25\xe7\xd7\x4c\x14\xf0\x86\xc5\xc6\ \x08\x40\xb5\x10\x30\x0a\x19\x3b\x82\x35\x5b\x8f\xc9\x02\x5d\x41\ \xbd\x3a\xbb\x8f\xe8\x71\xb7\x10\x41\x28\x64\x94\x18\x3e\xc3\x1c\ \x02\x3d\x21\x21\x80\x37\xe1\x78\x6f\xc3\x94\x04\x50\x0d\x42\x11\ \xd6\xd6\x25\xc2\x70\xac\x50\xc7\x10\x50\x1d\x72\xf7\x43\xa0\x1c\ \xaf\xe2\x29\x4c\x1a\x33\xe9\x59\x32\x29\x09\xf4\xb2\x40\xab\x5b\ \x60\x0c\x57\x32\x00\x55\xe3\x58\x75\x01\x1d\xe0\xdf\x82\x26\x0e\ \x7c\x97\x79\x87\x99\x6a\x14\x49\x49\x00\x27\xa2\x0a\xdc\x02\x04\ \x22\x44\x85\xb7\x3c\x11\x42\x08\x55\xe1\x4e\xd9\xfe\xfb\x4e\x7e\ \x16\xf8\x9a\xa2\xe2\x43\xcd\xbc\xc7\xfb\xcc\x1c\x66\x96\x14\x41\ \x47\x26\xbd\x50\x40\xb6\x6b\xb2\xb5\xa4\xbc\x11\xed\x6c\xea\x24\ \x7a\xe0\x12\x41\x08\x86\x00\xc0\x31\x3e\xfb\x97\xbb\xe0\xe4\x87\ \xb0\xc3\x2b\xaa\x77\x7a\x82\x43\x05\x5f\x97\xd6\xf0\x1e\xcb\x99\ \x25\xcc\x7c\x26\x5d\x4a\xa4\xa9\x2e\x8c\x27\x80\x56\xa5\x41\xc0\ \xe1\xd7\xab\x6e\xb0\xeb\xed\x6f\x76\x8a\x96\x23\x34\x29\xd9\xee\ \x8d\x9f\xbf\x52\x17\xf8\xe6\xfb\xe3\x8e\x82\xaf\x0e\xd6\xe6\x7c\ \xbe\xf3\x47\xde\x23\x97\xf9\x88\x59\x26\x25\xde\x63\xde\x56\x5d\ \x78\x91\xc0\x14\xdc\xc7\x27\xfd\x7a\xbb\xdb\xb9\xc5\x75\x76\x11\ \x8a\xf5\x7b\x36\x6f\xfc\xd8\xaf\xd5\xbe\x92\xbd\x15\x8e\xbc\xcd\ \x07\x6a\x56\xaf\xdd\x75\x62\xfe\xd2\xdc\x5d\x7c\xed\x5a\xc6\xca\ \x14\x30\x9f\x30\xd9\xcc\x22\x26\x83\x99\xf6\x52\x02\xa8\xee\x11\ \x57\xdd\xc9\x9d\x70\xf1\xf7\xbc\x11\xa1\xbf\x55\xfb\x8a\xf7\x56\ \xd8\x11\x9a\x9d\xbf\xed\xa7\x8c\x79\xcb\xb6\xf3\xf9\x1b\x98\xf5\ \xcc\x3a\xb3\x04\x92\xb7\x20\xc4\x3f\xad\x0d\x36\x5f\xec\xf8\xb9\ \x6b\x3d\x25\xfb\x7e\xee\xc8\xdf\xf2\x5d\xf5\x2a\xeb\x8e\x43\x73\ \x32\xb3\xb6\xf0\x39\x85\x4c\x91\x81\x42\x19\xba\x86\xf9\x74\x22\ \xb7\x20\xf9\x10\x16\x6d\x2b\x2b\x43\x17\xf8\x3f\xdc\xaa\x8f\x37\ \x7d\xbb\x3f\x73\x45\x1e\x36\x5e\xc9\x7c\x28\x37\xce\x61\x56\x1b\ \xc8\x91\xeb\xa8\x38\xeb\x95\x1f\x42\x83\x44\x9a\x6c\xd9\x4c\xd9\ \xbe\xb9\xcc\x3c\x66\x01\xf3\x81\x6c\xeb\x62\x03\x38\x5e\xc8\x64\ \xca\xd0\x57\xfb\x1a\x3e\x43\x02\x6d\x9b\xce\xcc\x90\x32\xd8\x70\ \xb6\xac\x2a\xc3\x40\xba\x5c\x9f\x25\xdb\x3d\xee\x8b\xe8\x3f\x61\ \x3e\xe0\x61\x6f\x4e\x8f\x30\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x06\xa0\ \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\x06\x67\x49\x44\x41\x54\x58\xc3\xc5\x57\x09\x50\x95\x55\ \x14\xfe\x1f\xfc\xef\xe1\x56\x84\x58\x6e\x28\xa0\xa8\x94\xca\x66\ \x88\x20\x62\xa8\xb8\x01\x06\x83\x4b\xb2\xa8\xa5\x0c\xa8\xe1\x14\ \x68\x5a\x2a\xc6\x96\x92\x28\x8b\x0a\x18\xc8\x22\x04\xc8\x22\x02\ \xa9\x91\x0b\x33\xc0\x10\x20\x88\x20\x88\x38\xb8\x0e\xe5\x30\xd3\ \xd4\xb8\xa0\xa3\xa3\xef\x74\x3e\xba\x14\x33\x99\x3d\x2c\xeb\xcd\ \x7c\x73\x38\xe7\x7c\xe7\xdc\x73\xcf\x5d\xfe\x8b\x44\x44\xd2\xff\ \x89\xe7\x3b\x25\x49\xc1\x18\xcb\x70\x64\x78\x32\x3e\x64\x6c\x16\ \xd2\x53\xd8\xe1\x57\xfc\xab\x05\x88\x81\xc7\x30\x16\x2d\x59\xb2\ \x24\x31\x21\x21\xe1\x2c\xff\xda\x5b\x5b\x5b\xef\x76\x74\x74\xa8\ \x21\xa1\xc3\x0e\x3f\x78\x82\xaf\xf8\xc7\x05\xf0\x4f\x8b\x61\xe5\ \xe0\xe0\x10\x9c\x94\x94\x54\xd9\xd2\xd2\x72\x8f\x41\xc7\x8f\x1f\ \xa7\xe0\xe0\x60\x0a\x08\x08\xe8\x96\xd0\x61\x87\x1f\x3c\xf0\x11\ \x87\xf8\x17\x2e\x40\x0c\x3e\xc5\xcd\xcd\x2d\xb6\xb8\xb8\xb8\xad\ \xb9\xb9\x99\x52\x52\x52\xe8\x3d\x9f\x55\x57\xad\xe6\x2f\x2d\x1b\ \xe5\xbc\x36\x7f\x90\xfb\x8e\xc3\x90\xd0\x61\x87\x1f\x3c\xf0\x11\ \x87\xf8\xbe\x14\xf1\xa7\xf5\xb6\xb3\xb3\x0b\x29\x2c\x2c\x6c\x6b\ \x68\x68\xa0\x1d\x21\xa1\x9d\xd3\x17\xaf\x39\xa5\xef\x1d\x95\xa6\ \xe7\x97\x1e\x3f\xee\x93\xfc\xaf\x26\x6e\x2d\x4a\x82\x84\x0e\x3b\ \xfc\xe0\x81\x8f\x38\xc4\xf7\x65\x5f\xf4\x2e\x40\x66\x78\xc4\xc6\ \xc6\x56\x35\x35\x35\x51\x4c\xdc\xbe\x4e\x9b\x55\x5b\xf3\xa4\x95\ \x29\x31\x43\x36\x9d\xdc\x3b\xf3\x40\x43\xfc\xc6\x92\x6b\x39\xe1\ \x67\x3a\x8e\x42\x42\x87\x1d\x7e\xf0\xc0\x47\x1c\xe2\x91\x07\xf9\ \x34\x2e\x40\xcc\xde\xd4\xd5\xd5\xf5\x50\x55\x55\xd5\xfd\x92\x92\ \x12\x5a\x1e\x18\xf6\x9d\xf4\x41\xe6\x5e\x69\x53\x45\xd8\xac\x8c\ \x5b\xd1\xa9\x8d\x77\x4f\xbc\xbb\x2e\x8e\x7c\x77\x64\x13\x24\x74\ \xd8\xe1\x07\x0f\x7c\xc4\x21\x1e\x79\x90\x4f\x93\x2e\xf4\x14\xa0\ \xcd\x98\x1f\x1e\x1e\x5e\x51\x5f\x5f\x4f\x7b\xe2\xe2\xaf\x8e\x5c\ \x97\x92\xfc\xfa\x8e\xaa\x48\xab\xb4\xce\x9d\xc9\x2d\x8f\x8f\x5d\ \xfe\x45\x7d\xd9\x27\xb2\x96\x7c\xe2\x6e\x12\x24\x74\xd8\xe1\x07\ \x0f\x7c\xc4\x21\x1e\x79\x90\x0f\x79\x35\x2d\x40\xc5\x58\x9d\x95\ \x95\x75\xbd\xba\xba\x9a\x02\x23\x13\xce\xa0\xbd\x73\x33\x3b\x62\ \x42\x6b\x1e\xa5\x37\xff\x4c\xcd\x9d\x0f\xe8\xb6\xcb\x17\xd7\xc8\ \x65\x3f\x11\x24\x74\xd8\xe1\x07\x0f\x7c\xc4\x21\x1e\x79\x90\x0f\ \x79\x35\x2d\xa0\x3f\x63\x4b\x69\x69\xe9\xbd\xf2\xf2\x72\x5a\xb8\ \x2d\x25\x7b\x52\x54\x5d\xf4\xf6\x8a\x3b\x19\x92\xe9\x1a\x1a\xef\ \x12\x41\xf6\x6b\x0b\x68\xda\xf6\x0e\xb2\xd9\x49\xdd\x12\x3a\xec\ \xf0\x83\x07\x3e\xe2\x10\x8f\x3c\xc8\x87\xbc\x9a\x16\x30\x80\x11\ \x7e\xfa\xf4\x69\x75\x65\x65\x25\x8d\x0d\x3a\x72\xd0\x3a\xbe\x35\ \x3a\xfa\xfc\xc3\x5c\xc9\x29\x9f\x54\xcb\x1a\x49\x7f\xcd\x75\x32\ \x08\xea\xa2\x31\x9f\x51\xb7\x84\x0e\x3b\xfc\xe0\x81\x8f\x38\xc4\ \x23\x0f\xf2\x21\xaf\xa6\x05\x0c\x64\x6c\xe5\xd6\xdd\xab\xab\xab\ \x23\xcf\x98\x6f\x32\x2c\x12\xda\xbf\x0c\xad\x7d\x9c\x2e\x79\x5c\ \x20\xc9\x97\x49\xab\x19\xef\xf7\x02\x74\xd8\xd9\x0f\x1e\xf8\x88\ \x43\x3c\xf2\x20\x1f\xf2\xf6\xa5\x03\xeb\xa3\xa2\xa2\x6e\x62\x13\ \xc5\xe6\x9e\xfa\x76\xe8\xae\xe6\x08\xe7\xa2\x07\xbb\x23\xce\x53\ \x5a\xe2\x45\xaa\xc9\x6c\xa3\x0e\x69\xf9\x7d\x92\x7c\x38\x80\x25\ \x74\xd8\xe1\x07\x0f\x7c\xc4\x21\x1e\x79\x90\xaf\x2f\x1d\xc0\x1e\ \xf0\xf0\xf7\xf7\xff\x9e\x8f\x11\x95\x55\x56\x5f\x99\xb0\xab\x26\ \x7a\x78\xe2\x4f\xc1\x36\x47\xd5\x21\xb3\xf3\xa8\x74\x63\x05\x35\ \x4b\x8b\xda\x49\xf2\xe4\x00\x96\xd0\x61\x87\x1f\x3c\xf0\x11\x87\ \x78\xe4\x11\x77\x41\xff\xbe\x9c\x82\xb7\xad\xad\xad\xb3\x92\x93\ \x93\xbb\x1a\x1b\x1b\x29\xb6\xb0\xb2\x48\x0a\xbf\xba\x55\x3a\xf0\ \x70\xa3\x49\x2a\x25\xcf\xc9\xa3\x4a\x69\x1e\x2f\xc7\x32\x0e\x60\ \x09\x1d\x76\xf8\xc1\x03\x1f\x71\x88\x47\x1e\xe4\xeb\xcb\x29\xc0\ \x3d\xf0\x1a\xc3\xd7\xcb\xcb\xab\x9e\xef\x75\xaa\x3b\x7f\xe1\x76\ \x60\xf6\xb9\x24\x29\xf2\x87\x4f\x87\x27\x3f\x0c\xb5\xce\x52\xa7\ \xbb\x1e\xa3\xb3\x0b\x8f\xd2\x39\x48\xe8\xb0\xc3\x0f\x1e\xf8\x88\ \xf3\xf4\xf4\x6c\x40\x1e\x91\x4f\xbb\x2f\x37\x21\x96\xc1\xc6\xd8\ \xd8\x38\x8e\x5b\x78\xbd\xac\xac\x8c\x1a\x2f\x36\xff\x98\x7c\xa6\ \xa9\x60\x52\xe2\xb5\x48\xb4\xd9\xfa\xc8\x83\x30\x87\xc2\xc7\x11\ \x90\xd0\x61\x87\xff\x42\xd3\xc5\xdb\xe0\xfb\xf9\xf9\x75\x19\x19\ \x19\xd5\x70\x9e\x15\x8c\x91\x1a\xdf\x84\xbd\xbe\x05\xba\x0c\x67\ \x53\x53\xd3\x0c\x6f\x6f\xef\xeb\xb9\xb9\xb9\x74\xe9\xd2\x25\x6a\ \x68\x69\x6b\xcd\xa9\x6c\x2d\x0a\x28\xb8\x9c\x68\x1e\x7f\x25\x12\ \x12\x3a\xec\xf0\x83\xc7\xfc\x2e\x77\x77\x77\xf2\xf1\xf1\xb9\xa3\ \xab\xab\x9b\x65\x36\x4c\xeb\x30\x1e\x2c\x7d\xfd\x1a\x62\x2f\xe8\ \x33\x5c\x0c\x0c\x0c\x0e\xd8\xdb\xdb\x37\x70\x37\xba\xf8\x58\x11\ \x3e\x34\xed\xed\xed\x74\xe3\xc6\x8d\x6e\x09\x1d\x76\xf8\x99\xd7\ \xc8\xfc\x5a\x0c\xce\x3a\x6d\x98\x37\xe1\x51\xba\x9b\xce\xd3\xc5\ \x13\xe5\x92\xbf\x2b\xe2\x59\xef\x01\x1d\x51\x84\x03\x23\xc0\xd0\ \xd0\xb0\xc0\xcc\xcc\xac\xd6\xd6\xd6\xf6\x96\xa3\xa3\xe3\x7d\x27\ \x27\x27\x35\x24\x74\xd8\xe1\x07\x8f\xb1\x86\x67\x9e\xb3\x6a\xc6\ \xf8\x47\x91\x33\x95\x94\xb0\x40\x45\x99\xee\x3a\x4f\xbd\xcd\xe5\ \xaf\x9f\x57\xc4\x5f\xbd\x88\x54\x62\x39\x0c\x18\x73\xc4\xbd\x8e\ \x8b\x65\x37\x63\x3f\x23\x8a\xb1\x4d\x6c\xb6\xb9\x8c\xd1\x0c\x93\ \x61\xfd\x15\x99\x01\x93\x65\xf5\xb6\xa9\x4a\xda\xfd\x8e\x92\x0e\ \x2e\x54\x51\x96\x87\xce\x93\x15\x16\x32\x96\x63\xd6\xb3\xf6\xc4\ \xf3\xde\x84\xb2\xd8\x98\xd8\xcd\x43\xc5\x20\x78\x68\x8c\x13\x18\ \x23\x0a\x7c\x43\x70\x06\x31\x16\x98\xe9\x29\x4e\x7c\xc4\x45\x04\ \xdb\x28\x69\x8f\xa3\x92\x92\x9c\x55\x94\xcd\x45\xf8\x58\xc8\x19\ \x62\x32\x5a\x22\xbf\x42\xd3\x57\xb1\xb6\xe8\x08\x6e\xcb\x57\x19\ \x7a\x62\x89\x86\x08\x39\x58\xd8\xf4\xc4\xdf\x6e\x56\xfa\x8a\xbc\ \x40\x33\x59\xfd\xf9\x34\x25\xed\x9d\xa5\xea\x2e\x22\x67\xb1\xce\ \x93\x95\x96\x72\xa6\xf8\x4c\xcb\xbf\x17\xa2\xd1\xab\xe5\x8f\x8e\ \xf4\x63\xbc\x22\x06\xc2\xcc\x87\x8b\xe3\x36\x8a\x61\xc8\x30\x12\ \xf0\xb2\x1a\xac\x28\x08\x32\x97\xd5\x21\xb6\x4a\x8a\x9e\xad\xa2\ \x43\x2e\x2a\xca\x5d\xaa\xf3\x94\x97\x03\x97\xd4\x02\x86\xb2\xbb\ \x08\x0d\x07\xd7\x16\x83\xeb\xf6\x5a\x0e\x13\xf1\xea\x79\x8b\x31\ \x99\x61\xce\xb0\xe8\x05\x5f\x8b\xc1\x8a\xe2\x20\x0b\x59\x1d\x66\ \xa7\xa4\xd8\x39\x2a\x4a\x75\x55\x51\xfe\x32\x1d\xf5\x0a\x4b\x39\ \x5b\x14\x21\x6b\x52\x80\x96\x98\xfd\x40\x31\x6b\x63\x31\xa8\x25\ \x63\x2a\x63\x1a\x63\x3a\x63\x86\x38\x39\x3d\x80\xbe\xc1\x52\x5f\ \x71\x62\x93\xa5\xac\x0e\x9f\xae\xa4\x7d\x4e\x2a\x4a\x5b\xa4\x43\ \x47\xb9\x08\x1b\x03\x2d\xbc\xa0\x87\x69\x5a\x80\x52\xac\xff\x08\ \xc6\x04\xf1\xfe\xb7\x15\x03\xe1\xbf\xa3\xd9\x0c\x27\x71\x22\x7a\ \xe0\x24\x36\x5d\x10\x17\x51\xba\xd9\x4a\x56\x47\xd8\xff\x56\xc4\ \x7a\x6b\x65\x39\xf6\x4a\x77\x57\xff\x83\x02\x70\xfc\x3e\xe6\x22\ \x4e\x6e\x99\x22\xab\x97\x99\x6a\xe3\xd5\xec\x25\x4e\x50\xbf\x97\ \xbd\x04\xd3\x45\xa1\x36\x0c\xff\x51\x03\x15\xa9\xe2\x3b\x61\x22\ \x26\xa4\x7a\x99\x9b\xd0\x5c\xd8\x27\x32\xde\x64\x8c\x17\x9d\x1b\ \x21\x8e\xec\x00\x8d\x36\xe1\x0b\x1e\x43\x23\xa1\x8f\x16\xad\x1e\ \x21\x0a\x1f\x22\x26\x31\xa0\xe7\x18\xfe\x0a\xd1\xfb\x82\xfe\x41\ \x1a\xc9\x6e\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x06\x7e\ \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\x06\x45\x49\x44\x41\x54\x58\xc3\xc5\x57\x79\x50\xd5\x55\ \x14\xfe\x3d\x78\x8b\x5b\x91\xcb\xa4\x19\x0a\xa8\x21\xe6\x08\x82\ \x21\xb2\x48\xa1\x52\x9a\xe2\x40\xb8\xc5\x26\x25\x0a\xa5\xe8\x28\ \x28\x35\x28\x04\x62\x46\xac\xef\xb9\xa0\x82\x90\xca\xa2\x20\xc3\ \x08\x6a\x21\x20\x13\x30\x88\x06\x21\xbb\x3a\x98\xd8\x60\x8e\xd3\ \x1f\x2d\xc8\xa8\x85\xef\x74\xbe\xdf\x5c\x8c\x99\xca\x1e\x96\xf5\ \x66\xbe\xb9\x9c\x73\xbe\x73\xee\x77\xd7\xdf\x45\x22\x22\xe9\xff\ \xc4\xe3\x83\x92\xa4\x60\x4c\x66\xb8\x31\x7c\x18\x1b\x18\x11\xa2\ \xf5\x11\x7e\xc4\x15\xff\xaa\x00\xd1\xf1\x24\xc6\xd2\xe5\xcb\x97\ \x1f\x48\x4b\x4b\x3b\xcf\xbf\xce\x8e\x8e\x8e\x9f\xbb\xbb\xbb\xf5\ \x68\x61\xc3\x8f\x38\x78\x82\xaf\xf8\xc7\x02\xf8\x67\xc4\xb0\x73\ \x75\x75\x8d\x4a\x4f\x4f\xaf\x69\x6b\x6b\xeb\x61\xd0\x99\x33\x67\ \x28\x2a\x2a\x8a\x42\x43\x43\xe5\x16\x36\xfc\x88\x83\x07\x3e\xf2\ \x90\xff\xc4\x02\x44\xe7\xb3\x3c\x3d\x3d\xb5\xc5\xc5\xc5\x57\x5b\ \x5b\x5b\x29\x33\x33\x93\x56\xf9\x07\x5e\xb7\x5b\xb8\xa2\x72\xc2\ \xe2\xf7\x4e\x8e\xf0\x8a\x3e\x8a\x16\x36\xfc\x88\x83\x07\x3e\xf2\ \x90\x3f\x18\x11\x7f\x58\x6f\x27\x27\xa7\x98\xa2\xa2\xa2\xab\x8d\ \x8d\x8d\x14\x1d\x13\x7b\xc7\x79\x59\x50\x99\x89\x4f\x42\x96\xe4\ \x9f\xa1\x95\xd6\xe4\x24\x4b\xeb\xf2\x13\xe5\x96\x6d\xf8\x11\x07\ \x0f\x7c\xe4\x21\x7f\x30\xfb\x62\xa0\x00\x25\xc3\x5b\xab\xd5\xd6\ \x36\x37\x37\x53\xaa\x6e\xcf\x1d\x87\xc0\xc8\x02\x69\x75\x66\xaa\ \xb4\xe1\xf4\x27\x52\xc4\x85\x58\x29\xba\x25\x4a\x8a\xbd\xb2\x43\ \x6e\x61\xc3\xcf\x71\xf0\xc0\x47\x1e\xf2\x51\x07\xf5\x0c\x16\x20\ \x46\x6f\xe5\xe1\xe1\x71\xb8\xb6\xb6\xf6\x6e\x49\x49\x09\xbd\xbd\ \x65\xe7\x39\xe9\xdd\xec\x64\x69\x6b\xf5\xce\xb1\xa9\x5d\x31\x2b\ \x8b\x7f\xd0\x45\x5d\xb8\x77\x64\x7f\xf3\xaf\x05\x68\x61\xc3\x8f\ \x38\x78\xe0\x23\x0f\xf9\xa8\x83\x7a\x86\xcc\x42\xbf\x00\x63\xc6\ \xc2\xb8\xb8\xb8\xea\x86\x86\x06\x4a\xd2\xed\xbf\x3e\x36\xe4\xf0\ \x21\xb9\x78\xfc\xad\x0f\x03\xca\xee\xeb\x74\x2d\xfa\xbc\xd4\x16\ \xca\xe9\x07\x6c\xf8\x11\x97\x45\x32\x1f\x79\xc8\x47\x1d\xd4\x43\ \x5d\x43\x05\xa8\x19\x6b\x72\x73\x73\x6f\xd4\xd5\xd5\xd1\x96\xf8\ \xb4\x0a\x4c\xef\xb4\xb4\x9b\xbb\xc3\xaa\xef\xa7\x9f\xbf\x45\x55\ \x95\xb7\xa8\xba\xa2\x9b\xbe\xec\x07\x6c\xf8\x11\x07\x0f\x7c\xe4\ \x21\x1f\x75\x50\x0f\x75\x0d\x15\x30\x94\xf1\x41\x69\x69\x69\x4f\ \x55\x55\x15\xbd\xb9\x3d\x33\x0f\x6b\xbc\xa9\xfc\xc7\xc3\x92\x55\ \x10\x59\x2e\xd9\x45\x2e\x01\x3a\x9a\xe3\x9b\x42\x0e\x3e\x29\x72\ \x0b\x1b\x7e\xc4\x65\x1e\xf3\x91\x87\x7c\xd4\x41\x3d\xd4\x35\x54\ \xc0\x30\x46\x5c\x79\x79\xb9\xbe\xa6\xa6\x86\x26\x87\x9d\x38\x88\ \x8d\x96\xd4\x70\xef\x84\xe4\x7e\x92\xd4\x2b\x9b\x68\x74\x60\x2b\ \x99\xae\x6b\xa3\x49\xef\xb7\xcb\x2d\x6c\xf8\x11\x97\x79\xcc\x47\ \x1e\xf2\x51\x07\xf5\x50\xd7\x50\x01\xc3\x19\x91\x3c\x75\x3d\xf5\ \xf5\xf5\xe4\x93\x7a\xfa\x18\x76\x7b\x78\xcd\x2f\x87\x24\xef\xcb\ \x24\xad\x65\xd2\x1a\xc6\x3b\x03\x00\x1b\x7e\x8e\xcb\x3c\xe6\x23\ \x0f\xf9\xa8\x83\x7a\xa8\x3b\x98\x19\x58\x9f\x98\x98\x78\x13\x9b\ \x48\x9b\x5f\xf6\x05\x46\x34\x23\xfb\x6e\xec\xb6\x3a\x3a\x18\x56\ \x4d\xa7\x83\xca\xa8\x7c\x5d\x05\x9d\x0b\x66\xa0\x85\x0d\x3f\xe2\ \xe0\x81\x8f\x3c\xe4\xa3\x0e\xea\x0d\x66\x06\xb0\x07\xbc\x43\x42\ \x42\x2e\xf0\x31\xa2\xca\x9a\xba\x6b\x93\x3f\xbe\x98\x24\x25\x7f\ \x1f\x21\xa5\xf5\x85\x49\x09\x94\x29\x23\x91\x32\x1e\xa1\xdf\x87\ \x38\xf3\xc0\x47\x1e\xf2\x51\x47\xdc\x05\x43\x07\x73\x0a\x5e\xb1\ \xb7\xb7\xcf\xcd\xc8\xc8\xe8\x6d\x6a\x6a\x22\x6d\x51\xcd\x29\x29\ \xee\x7a\xa4\xb4\xef\x5e\xb8\x94\x42\xa9\x52\x3c\xe5\x49\x9f\x52\ \xce\x23\xc0\x86\x1f\x71\xe6\x81\x8f\x3c\xe4\xa3\x0e\xea\x0d\xe6\ \x14\xe0\x1e\x78\x8e\xb1\xd6\xd7\xd7\xb7\x81\xef\x75\xaa\xff\xfa\ \xf2\xed\x2d\x79\x5f\xa5\xcb\xe7\x5c\x77\x2f\x52\x4a\xd6\x27\xf3\ \x88\xb3\xb8\xe3\x7c\xb9\x85\x0d\x3f\xc7\xc1\x03\x1f\x79\x3e\x3e\ \x3e\x8d\xa8\x23\xea\x19\x0f\xe6\x26\xc4\x32\x38\x58\x58\x58\xe8\ \x78\x0a\x6f\x54\x56\x56\x52\x53\x4b\xeb\x77\x19\x15\xcd\x85\x96\ \x7b\xbf\xd9\x2d\x2f\x87\xae\x67\xab\xb4\xef\x7e\xb8\xdc\xb2\x0d\ \x3f\xe2\x97\x9b\x5b\x6e\x83\x1f\x1c\x1c\xdc\x6b\x6e\x6e\x7e\x91\ \xeb\x04\x30\x5e\x34\xf8\x26\x1c\xf0\x2d\x30\x61\x2c\xb6\xb2\xb2\ \x3a\xe6\xe7\xe7\x77\x23\x3f\x3f\x9f\xda\xdb\xdb\xa9\xb1\xed\x6a\ \xc7\xf1\x9a\x8e\x53\xa1\x85\x57\x0e\xd8\xec\xbf\x16\x8f\x16\x36\ \xfc\x88\x83\xc7\xfc\x5e\x2f\x2f\x2f\xf2\xf7\xf7\xff\xc9\xc4\xc4\ \x24\xd7\x7a\x9c\xd1\x51\x3c\x58\x06\xfb\x35\xc4\x5e\x18\xcd\x58\ \x62\x6a\x6a\xba\xcf\xc5\xc5\xa5\x91\x67\xa3\x97\x8f\x15\xe1\x43\ \xd3\xd9\xd9\x49\x5d\x5d\x5d\x72\x0b\x1b\x7e\xc4\x99\xd7\xc4\xfc\ \x4b\xe8\x9c\x6d\xda\xf8\xc6\xd4\x07\x47\xbc\x34\x0f\x97\x4d\x57\ \x96\xfc\x9d\x88\x3f\x7b\x0f\x68\x84\x08\x57\x46\xa8\x99\x99\x59\ \xa1\xb5\xb5\xf5\x25\x47\x47\xc7\x6f\xdd\xdc\xdc\xee\xba\xbb\xbb\ \xeb\xd1\xc2\x86\x1f\x71\xf0\x18\x41\x3c\xf2\xe3\x81\x73\x2d\x1f\ \xc4\xbf\xaa\xa2\x03\x8b\xd4\x94\xcd\x22\xfc\x6c\x94\x39\x8f\x13\ \xf1\x57\x2f\x22\xb5\x58\x0e\x53\xc6\x02\x71\xaf\xe3\x62\x49\x60\ \xec\x65\x24\x32\xb6\x8b\xcd\xf6\x3a\x63\x22\x63\xca\xb8\xa1\x8a\ \xec\xd0\x19\x4a\xfd\x8e\xd9\x2a\x4a\x78\x4d\x45\x07\x59\x44\xce\ \x5b\x9a\xbe\x80\x99\x4a\x2c\xc7\xbc\x3f\xdb\x13\x8f\x7b\x13\x2a\ \xc5\xc6\xc4\x6e\x1e\x2b\x3a\xc1\x43\xe3\x25\x81\x49\x42\xe0\xf3\ \x82\x33\x82\xb1\xc8\x7a\xa4\xe2\xec\x26\x6b\xa5\x3e\xda\x41\x45\ \x49\x6e\x2a\x4a\x5f\xac\xa6\x3c\x6f\x4d\x9f\xff\x4c\xe5\x31\x31\ \x18\x23\x51\x5f\x61\xe8\xab\xd8\x58\xcc\x08\x6e\xcb\x67\x19\x23\ \xc5\x12\x8d\x11\xed\x28\xe1\x1b\x29\xfe\xf6\xb4\x1b\xa5\x28\xd8\ \xcc\x22\x3e\x9a\xa3\xa2\xe4\x79\x2a\xca\x58\xa2\xa6\x13\xcb\x34\ \x7d\xab\x6d\x95\xd9\xe2\x33\xad\x7c\x24\xc4\xa0\x57\xcb\xef\x33\ \x32\x84\xf1\x8c\xe8\x08\x23\x7f\x41\x1c\xb7\x09\x0c\x33\x86\xb9\ \x80\x2f\x8b\x28\x0c\xb3\x51\xea\x63\x1c\x55\x94\x32\x5f\x4d\x99\ \x1e\x6a\x2a\x58\xa1\x79\xc8\xcb\x81\x4b\x6a\x11\x43\x25\x8b\x30\ \xb0\x73\x63\xd1\xb9\xc9\x80\xe5\x98\x22\x5e\x3d\x2f\x33\x66\x30\ \x6c\x18\x33\x07\x60\xad\xed\x28\x45\x71\xb8\xad\x52\xbf\xd3\x49\ \x45\xda\x05\x6a\xca\x62\x11\x27\x57\x68\xf4\xfe\xb6\xca\x3c\x21\ \x42\x69\x88\x00\x23\x31\xfa\xe1\x62\xd4\x16\xa2\x53\x5b\xc6\x6c\ \xc6\x1c\x86\x33\x63\xae\x38\x39\xfd\x80\xbd\xd1\x76\xb4\xe2\xec\ \x36\x16\xb1\xcb\x59\x45\x7b\xdc\xd5\xf4\xd9\x52\x0d\x15\xae\xd4\ \xe8\x1d\x4c\x8d\xf0\x82\x1e\x67\xa8\x00\x95\x58\xff\xf1\x8c\xa9\ \xe2\xfd\xef\x28\x3a\xc2\x7f\x47\xf3\x19\xee\xe2\x44\xf4\xc3\x5d\ \x6c\xba\x30\x16\x51\x1a\x61\xc7\x22\x5c\x54\xb4\x97\x45\xac\xb7\ \x57\x55\x61\xaf\xc8\xb3\xfa\x1f\x08\xc0\xf1\xdb\xcc\x22\x3e\x8f\ \x98\xa5\xd4\xaf\x9a\x6a\x8c\x57\xb3\xaf\x38\x41\x43\x9e\xf6\x12\ \x38\x0b\xa1\x0e\x8c\x90\x09\xc3\x15\x59\xe2\x3b\x31\x45\x0c\x48\ \xfd\x34\x37\xa1\x8d\xf0\x4f\x67\x4c\x63\x58\x8a\x99\x1b\x2f\x8e\ \xec\x30\x83\x36\xe1\x13\x1e\x43\x73\x61\x4f\x14\x53\x3d\x5e\x08\ \x1f\x23\x06\x31\xac\xff\x18\xfe\x06\xa3\xbf\x6b\x5c\x6e\x71\x2e\ \x0b\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\xbf\ \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\x04\x86\x49\x44\x41\x54\x78\x5e\xed\x97\x4b\x68\x5c\x55\ \x1c\xc6\x7f\xe7\x3e\xe6\xce\x9d\x4c\xdb\x74\xa6\x51\x62\x1f\x31\ \xb5\x3e\xaa\x56\x14\x6d\x4b\xc5\xa0\x45\x5c\x88\x42\xd7\x45\x44\ \x5d\x98\x4d\x57\xd2\xba\x13\x44\x5c\x88\xa5\xd2\x45\x49\x17\x51\ \x5a\xdc\xb9\x11\x8a\x62\x17\x15\x74\x40\x25\x62\x6c\xa8\x24\xe9\ \xcb\x3c\x6c\x4c\x5b\xd3\x47\xd2\xc9\x64\x3a\xaf\x7b\xef\xf1\xe4\ \xdc\x99\x0c\x32\x99\x6b\x4b\x07\x5d\xe8\x07\x3f\xce\xdc\x33\x7f\ \xbe\xf3\xdd\x73\xce\x7d\xf1\x9f\x97\xa0\xaa\xde\xde\xde\x97\x80\ \xad\xfc\x33\x1a\xec\xef\xef\xff\x0a\xc0\xa2\xae\xad\x9d\x6b\x37\ \xbc\xbb\x71\x63\x37\xa6\x69\x72\xfa\xa7\x32\x67\x06\x0b\x2c\x64\ \x7d\xee\x44\xc9\x55\x26\x9b\xb7\xba\x3c\xbc\x2d\x86\xef\xfb\x4c\ \x4c\x4c\x72\xf9\xe2\xd4\x7b\x40\x43\x00\xbe\xf9\x36\xc3\xf0\xe8\ \x19\x52\xa9\x35\x5c\xb9\x60\xf1\xc6\xbe\x67\x68\x85\x8e\xf6\x7f\ \xcf\x95\xa2\xc7\xc0\x0f\x19\x52\xe9\x0e\x36\x3f\xb0\x11\x80\x86\ \x00\xb6\x65\xd3\xde\x9e\x22\xbd\xa6\x03\xd7\x74\x89\xc7\xe3\xb4\ \x42\x5d\xf7\xdd\x43\x62\x55\x41\x9f\x98\x1a\x03\x60\xf9\x00\x31\ \x27\x8e\xeb\x26\x48\x24\x92\x38\x66\x1b\xe7\xce\x8d\x83\x65\x81\ \x1d\x03\xc7\x41\x25\x02\x55\xa3\xdb\x98\xa3\x88\x85\xff\x7b\x1e\ \x94\xcb\x8a\x12\x14\x8b\x50\x52\xe8\xb6\x04\x95\x32\xab\xd3\x2b\ \x31\x1d\x93\xc7\x1e\x7f\x8a\xf1\xb1\xf3\xcd\x03\x18\xa6\xa1\xb0\ \x14\x26\xea\x80\xed\xdb\x9f\xc4\xda\xb5\x0b\xb9\x76\x2d\x48\x89\ \xc8\xe5\x08\x76\xec\x20\xd8\xb3\xa7\xde\xef\xfb\x3a\x9c\xbf\x77\ \x2f\x74\x75\xa9\xfe\xdd\x61\x3f\x84\xfd\x07\x0f\x72\xe2\xc4\x19\ \xed\x19\x7a\x8b\xe6\x01\x02\x3f\x50\xf8\xf8\x9e\x22\xf0\xf4\x12\ \xf8\xed\xed\x58\x47\x8e\x22\x90\xc8\xb9\x59\xfc\x37\x7b\x71\xf6\ \xed\xc3\x53\xfd\xf6\xd1\x23\x48\x40\x9e\x1c\xc2\xfc\xe8\x00\xc6\ \xc7\x9f\xe8\x7a\x5b\xd5\x4b\x01\x02\x00\x89\xa7\xbc\x4c\xe5\x1b\ \x68\x64\x44\x00\x29\xf1\x03\x3f\xc4\xf3\x19\x19\xf9\x8d\x4d\xd7\ \x66\xc9\xbf\xf2\x2a\xc2\x10\x04\x2a\xd0\xf5\xb7\xde\xe6\x66\x60\ \xd0\x2d\x04\x93\xc9\x95\x60\x5b\xf0\xec\x73\x74\xef\xdf\xcf\xa4\ \x34\xd8\x74\x23\x4b\xfe\xb5\xd7\x21\x08\xc8\x6d\xdb\xc1\xdc\x0b\ \x2f\x6b\x2f\xac\xd0\x37\x90\x11\x01\x64\x20\x09\x34\x01\x81\x0c\ \xe8\xe9\x79\x82\xb9\xbb\x3b\xe8\x3c\xfe\x25\x35\xdd\x4b\xa8\x39\ \xc3\xa0\xc7\x32\x41\x4a\x2a\x43\x27\x29\x74\x77\xd3\xb3\x7a\x25\ \x73\xe9\x14\x9d\x5f\x1c\xa3\x2e\x18\x1d\x9e\x42\x04\x81\xf6\x96\ \x41\x44\x00\x90\x21\x32\xc4\x71\x1c\x84\x10\x61\x0b\x48\x04\x08\ \x89\x40\x40\x36\xcb\xfc\xee\xdd\xba\xce\x48\xa7\x49\x7d\xb8\x1f\ \xb3\x5a\x1f\x77\xe2\x48\x21\x41\xa2\x6b\x6b\x7e\xa0\x89\x0a\x20\ \x42\x44\xc8\xc9\x91\x29\x64\xdf\xa7\x4c\x4f\xfc\x01\x31\x1b\xe5\ \x0c\x8e\xad\x88\xc1\xd0\x29\xb0\x6d\x85\x09\x9e\x8f\xac\x78\x88\ \x62\x19\x8e\x1d\x67\xfa\x5a\x0e\xd4\x6f\x59\xae\x20\xca\xde\x92\ \x1f\x68\x9a\x07\x10\xa2\x86\x20\xd9\x6e\xb3\xf3\xe9\x47\xb9\x25\ \x99\x66\x18\x2a\x99\x60\x39\x9d\x1a\x1c\xa2\x58\x14\x35\xff\xe6\ \x01\x10\x02\xa1\x31\x58\xbf\xbe\x03\xdb\xb6\x69\x81\xb4\xd7\xd8\ \x58\x4e\xfb\x22\x22\x67\x40\x60\x18\xa6\x42\x90\x70\x5d\x7e\x3e\ \x75\x9a\x55\x2b\x92\xfa\xfe\x70\xfb\x0a\x2f\xeb\x6c\x6e\x41\x7b\ \x19\x86\xa1\x11\x51\x01\x0c\x21\x10\x86\xd0\x85\x17\x2f\xcd\x70\ \xf5\x7a\xb6\x1a\x0c\x90\x20\xa1\xe1\x58\x84\x7b\x4c\x4b\xd0\x28\ \x09\x94\x4a\x45\x4c\xc3\x08\xbd\xa3\x02\x84\x05\x3a\xa9\xc2\xd4\ \x4f\xc5\x56\xc8\x54\x5e\x42\xa1\xbc\x55\xfb\xb7\x4b\x60\xe8\x81\ \x2f\x4c\x8e\x31\x3d\x3d\x45\xa1\x90\xe7\x4e\xe4\xba\x6d\xac\x5b\ \xb7\x81\x74\xc7\x5d\xb7\xb2\x04\x46\x18\x40\x11\x48\xc9\x07\xef\ \xbf\xc3\xfc\xfc\x3c\xf9\x7c\x9e\x4a\xa5\xb2\x14\xd0\xb2\xac\x25\ \x6c\xdb\xd6\xad\x0a\xad\xc3\x03\xfa\x46\x56\x2e\x97\x97\xf8\xec\ \xf3\xe3\xda\x53\xa1\xc7\xa8\x0b\x8c\xc6\x19\x10\x08\x55\xb8\x3a\ \x95\xa6\xa6\x81\x81\x01\xfa\xfa\xfa\x38\x7c\xf8\x30\x87\x0e\x1d\ \xd2\xc7\xb7\x21\xed\xa5\x3c\x15\xfa\x2a\x8b\x0a\x50\xdf\x84\xae\ \xeb\x52\xd3\xc8\xc8\x08\xa9\x54\x8a\x74\x3a\xad\x19\x1e\x1e\x26\ \x4a\x52\x4a\xea\x42\x7b\xd5\x4e\x4c\x44\x5f\x86\xb5\x65\x10\x48\ \x59\x2f\x4c\x24\x12\xfa\xc9\x58\x9d\x62\xdd\x46\xa8\x61\x90\xb0\ \x5e\x52\xed\x8d\x98\x01\xaa\x09\x17\x43\xd4\x4d\xea\x9b\x27\x34\ \xbf\xfd\xab\x43\x82\x44\x11\x3e\xe4\xa2\xee\x84\x20\xaa\x80\xa0\ \x55\xf2\x03\x4f\xbf\x0b\x94\xcb\x25\x4d\xd3\x19\xf0\xbc\x32\xa5\ \x52\x89\x52\xb1\xa8\x77\x76\xcb\x24\x21\xb7\x90\x63\x66\xe6\x32\ \x37\xe6\x66\x9b\xcf\xc0\xcd\x85\x9b\xcc\x67\xb3\x38\x4e\x9c\x15\ \xc9\xb6\x16\x06\xf0\xb9\x30\x3e\xc6\xd8\xf9\xb3\xb4\x25\xdc\x0c\ \x30\xb8\x6c\x80\x42\xa9\xc0\xd5\xab\x33\x78\xbe\xa7\x03\x64\xbe\ \xfb\x91\x64\x32\xc9\xce\xe7\x5f\x6c\x78\x8e\x4f\x4d\xcf\xd0\x5c\ \x02\x89\xc4\x57\x3e\xb3\xb3\x37\x50\xdf\x01\x8c\x8e\xfe\x42\x3c\ \x66\x67\x1e\x7a\xf0\xfe\x03\x40\x66\xd9\x00\x97\xa6\x7f\xe7\xd7\ \xb3\xa7\xf5\xa6\xfb\xda\xb2\xf4\x86\xbb\x13\x49\x19\xbe\x5d\xf9\ \x9e\x47\x57\x57\x57\x66\xcb\x96\x47\xf4\xe0\xea\xab\x28\xff\x6f\ \x7c\x9a\x0d\xd6\x07\xaf\xeb\x7f\xfd\x09\x8d\xfd\xd4\x8a\xd6\x19\ \x48\x3f\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x08\x27\ \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\xee\x49\x44\x41\x54\x58\xc3\xa5\x57\xdb\x6f\x1c\x67\ \x15\x3f\xdf\x37\x33\x3b\xbb\xf6\xde\xf1\xae\xd7\x4d\x4c\xec\xc4\ \xbd\xd8\xc6\x4d\x2f\x69\xac\x06\xa9\xa1\x69\x65\x1a\x55\x20\xa1\ \x08\x81\x84\x90\x5a\xfe\x86\x3e\xf5\x91\x8a\x17\xf2\xc8\x1b\x54\ \x15\x2f\x51\x2a\x11\xc2\x25\xbc\x24\xa0\x2a\x42\x7d\x08\x22\x02\ \x29\x50\xb5\x6a\x9c\xae\x6f\x2a\x8e\xd7\x97\xb5\xd7\x7b\x9d\xcb\ \xd7\xdf\x39\x33\xeb\x26\x24\xb5\x70\x98\xf5\xfa\x9b\xf9\x76\xe6\ \x3b\xe7\xfc\xce\xef\xfc\xce\x37\x8a\xf6\x39\xe6\xe6\xe6\x66\xdf\ \x79\xe7\xa7\x3f\xaf\xd5\xd6\x15\x0e\xa3\x14\xcf\xca\x3f\xd2\xf8\ \xf0\x1f\x5f\xaa\x78\xce\xec\xfd\x8a\x73\x63\x54\xa5\x52\xd1\x17\ \x2e\x5c\x78\xf7\xfc\xf9\xf3\xbf\xfe\x2a\x1b\xf6\x7e\x0e\xb8\xae\ \x5b\x9a\x99\x79\xfa\xa5\x20\x08\x28\x0c\x43\xd2\x5a\x13\x1c\x89\ \x46\xa3\xc8\x68\x43\x5a\x69\x18\xe3\x39\x18\x8f\x1d\xe4\x7b\xe0\ \x00\x59\x96\x45\xd9\x6c\xf6\xaf\xfb\xd9\xd8\xd7\x01\x2c\xd2\xee\ \x76\xbb\xb4\xb1\xb1\x21\x0b\xf6\x1d\x60\x83\x2a\x36\xae\x30\x6f\ \x30\xaf\x79\xc4\xb5\xd6\x91\x71\xad\x0c\x7d\x6d\xa8\x4c\xed\x76\ \xbb\xb9\x9f\x0d\xbd\x1f\x00\x2f\x9c\x98\x7d\xd3\xb2\x2d\xb2\x6d\ \x1b\x0b\x5b\x12\xa5\x46\x54\x96\xa5\xc8\xd2\x98\xe3\x68\xf9\x9a\ \x1d\xc3\x88\x5b\x31\x2a\x89\xdc\xe0\x77\x1b\x13\xcf\x3c\xf3\xec\ \xf7\x2a\x95\xb1\xb1\x03\x3b\x30\x36\x36\x96\xaa\x8c\x8c\x7c\xdb\ \x84\x8c\x44\x18\xc1\x1b\xe2\xf6\xd0\xc8\xef\x21\x3e\xca\x8a\x6f\ \x8e\xb0\xa7\x80\x2c\xfe\x17\x4d\x21\x65\xdd\xae\x47\x13\x13\x4f\ \x3c\x3f\x3e\x3e\x72\xe4\xc0\x0e\xec\xec\xec\x84\xad\x56\xbb\x19\ \xe5\xde\x12\x58\xe5\x6e\xbd\x47\x33\xfc\xc5\x8f\x07\x91\x55\x8b\ \xad\xf7\x9d\x12\x94\x88\x76\x77\x77\x03\xcf\x33\xfe\xa3\xa4\x00\ \x06\x38\x9f\xc1\x7d\x51\x72\x64\x7b\x55\xd0\x3f\x2c\x2b\x76\xc9\ \x62\x68\x62\xa7\x34\x85\x78\x26\xba\xdd\x7f\x14\x0e\x14\xc9\x47\ \x64\x12\x39\x1b\xe7\x28\x31\x06\xf7\xdc\x11\xf4\xaf\x8c\xf9\x12\ \x95\xfe\xc2\x56\x20\xe9\x0a\x43\x9f\x94\xaf\xcc\x81\x1d\xd8\xdc\ \x9c\x6f\x60\xc1\x5e\x88\x45\x24\xfd\x80\xd4\xc0\x09\x39\x17\x24\ \xe8\xcb\x68\xef\x2f\x9d\x68\x08\xac\x3e\x68\x61\xcf\xf4\xb6\xf7\ \x2d\xc3\x81\x81\x81\xc7\x86\x86\x86\xa6\xfb\x4b\xa2\xd4\xc2\x91\ \x91\x91\x74\x22\x61\x0f\x16\x0a\x05\xc2\x6f\xf4\xa8\x47\x36\x9b\ \xd3\x85\xc2\xd0\xb7\x8e\x1d\x3b\x56\x46\x75\xe8\x28\x63\x96\x46\ \x79\x2e\x2f\x2c\x2c\x7c\x22\x3e\x9e\x3c\x79\xf2\x67\x47\x8f\x1e\ \x7d\x1b\x82\x13\xa0\x74\x8c\x6d\x3b\x1c\x88\xbe\x7e\xfd\xba\x7e\ \x6a\xf2\x49\x44\xab\xc8\x67\x32\x5a\x26\xe6\x45\xac\x01\xd0\x02\ \xf6\x58\x33\x19\xd5\xbd\x20\x44\x38\x25\x12\x09\xaa\x56\x97\xe9\ \xc9\xa7\x26\x4c\xb9\x54\xf2\x71\x28\x46\x51\xa3\xae\xb7\xb7\xb7\ \xff\x7c\xe9\xd2\xa5\xd7\x04\x81\xd1\x43\xa3\x4f\xa7\xd3\x69\xea\ \xf5\x7a\x64\x27\x5c\x55\xc8\x65\x45\x4a\x57\x56\x96\x89\xbf\xff\ \xef\x31\x3e\x3e\xaa\x86\x87\x87\xf5\xca\xd2\x12\xf5\xc0\x09\xdd\ \x0b\x29\x9f\xcf\x4f\x65\x32\x99\xa2\x0d\x78\x33\x2f\xbd\x7c\x7a\ \xf2\xf5\xb3\x67\x29\xe1\xba\x1a\xd2\x49\xb9\x5c\x8e\x96\x97\x97\ \x59\xc5\xe8\xf8\xf1\x19\x4a\x26\x07\x38\x4d\x94\x4a\xa5\x58\x9e\ \xc9\xc5\xe8\x58\x56\x2c\xcb\xcc\x74\x23\x52\x8d\x08\x25\x08\x7e\ \xae\xdd\xee\x40\x07\x3a\x74\xeb\xd6\xbf\xe8\xec\xd9\xd7\xcc\x99\ \x33\x67\x94\xe7\x79\x54\xaf\xd7\xc1\xaf\x4d\x9a\x9f\x9f\x2f\x7f\ \xf8\xe1\xdf\x1e\xb7\xf1\x60\x7e\xbd\xb6\x36\xf4\x9b\x4b\xbf\xa5\ \xd4\x40\x4a\x65\x06\x07\x69\x7a\x6a\x8a\x3e\xfa\xf4\x53\xfa\xe0\ \x83\xbf\x00\xc2\x05\x40\xe9\x90\x03\x35\xb4\x00\x69\x82\x15\xd0\ \xd6\x7b\xb2\xac\x44\x0f\x43\x0a\x90\x16\xdf\x67\x47\x3c\x8c\x01\ \x79\x5e\x47\x9c\xba\x75\xeb\xdf\x74\xe8\xd0\x63\x6a\x76\x76\x56\ \x55\xab\x55\xea\x74\x7a\x28\xa8\x0e\xa5\x06\x07\x1d\xa5\xfc\x8a\ \x0d\x42\xb8\xff\xf9\x7c\xd5\x76\x12\x96\xe4\xcc\x76\x5c\xda\xaa\ \x6f\xd2\xc7\x1f\x7f\x42\xb5\xbb\x9b\x20\x4c\x15\xc6\x6c\x31\x66\ \xb3\x41\x9b\xcf\xb5\x30\x9c\xb9\xa0\x58\x98\x4c\x3f\xf7\x81\xd4\ \xbd\xef\x7b\x18\xa3\x06\xc5\x11\x5f\xbb\x76\x8d\xa6\xa7\xa7\xe9\ \xc6\x8d\x1b\x34\x3a\x7a\x98\x56\x57\xef\x12\x93\x1b\xcf\xa7\x6c\ \xf0\xce\x6d\xb5\x5b\x56\x6f\xbb\x47\xc9\x44\x92\x12\xc9\x04\xb5\ \x9a\x4d\x2a\x95\x2a\xf4\xa3\x1f\xff\x10\x91\x84\xa2\xe9\x71\x73\ \x12\x55\x74\x1c\x2d\xba\xc7\xfa\xa3\x94\x25\xda\xcf\x5f\x25\x6a\ \x19\x21\x23\xd5\x04\xe7\xbc\x8e\x47\x83\xd9\x41\xba\x78\xf1\x22\ \xab\x2b\xdd\xb9\x33\x4f\x4d\xa4\xe7\x9b\x2f\xbe\xc8\x28\x26\x19\ \x01\x67\x6b\x6b\x4b\xe3\x0b\x0e\x00\x62\x3b\x41\x0e\x90\x28\x14\ \xb6\x69\x7d\x7d\x83\x9a\xad\x06\x9a\x8c\x13\x35\x98\xb8\x23\x72\ \xce\x6d\x8e\x1c\xe7\x96\x62\x2e\xa0\x13\xb2\xf4\xca\x39\xa7\xc7\ \x08\x12\xdc\xc6\xf9\xfe\xb1\xaf\x8f\x51\xbb\xd3\xa6\x2c\xc8\x0d\ \x57\xa9\x98\x4f\xd2\xc6\xe6\x3a\x07\xe7\xd8\x80\xc2\x01\xe9\xf8\ \x19\xb2\xe1\x00\xe7\xd7\x45\x19\xb2\x91\x84\x63\x93\x5b\x2c\x89\ \xb1\x30\x36\x4e\x6c\x00\x0a\x68\xa8\x1f\xa9\xa1\x28\x70\x2d\x8e\ \xb0\x61\x15\xb7\x65\x9e\x63\x27\xba\x5e\x97\x4a\x43\xa5\x58\xd1\ \x91\x4a\x09\x82\xe8\xc8\x91\xc3\x09\x29\x43\x07\x51\x5b\x29\x10\ \x2d\x8e\x94\x11\xe0\xf1\xf3\xd5\x26\x34\xc0\x48\x83\x91\x5a\xa7\ \xa8\xee\x59\x62\xf9\x23\x68\x50\x5f\xbe\x1e\x94\xc5\x7e\x65\xa4\ \x06\x53\x84\x1a\xc2\x63\xdc\xaa\x81\x1a\x02\x4c\xb9\x49\xe9\xa8\ \xe2\x40\xa7\xdb\x22\x03\x06\x6b\x27\xea\xeb\x5c\x8a\x4c\x98\xdb\ \xb7\x6f\x53\x3a\x9d\x89\x34\x5e\x7f\x85\xf4\xc6\x7d\x8a\x49\xf7\ \xdf\x37\x70\xb4\xe8\xa8\xb4\x50\xfd\x8c\xde\x78\xf3\x27\x52\x9e\ \xbc\xb7\xb0\x11\xb7\x74\x59\x7c\x98\x84\xa1\xe7\xf9\x66\x67\xa7\ \x81\x12\xe9\xc4\xdb\x2d\x43\x50\xaa\x18\x42\x2e\x1b\xc4\xcb\x98\ \xe1\xda\xc4\xdd\x90\x11\x62\x78\x2d\xee\x78\x7d\xf5\x93\x6d\x62\ \x18\x2b\x61\xb4\x3d\xe3\xdc\x36\x5b\x1d\x59\x8f\x75\x80\x2b\xcd\ \xf1\x1c\x51\x52\x68\x46\x68\x43\x14\x3c\xb8\x1a\xa6\xd3\x29\x61\ \xb6\x83\xbc\x33\x21\x5f\x9d\x9b\xa3\x7f\xde\xfc\x07\x3d\x7f\xe2\ \x39\x6a\x34\x1a\x91\x31\xc7\x11\xe7\xa4\x41\xa9\x28\x5e\x01\x06\ \xe7\x5d\x44\xca\x24\xe5\x2f\x0b\x16\x8f\x0e\xee\x5f\x82\xfa\x4d\ \x4e\x4e\x23\xb8\x16\x41\xf9\xe2\xbd\xa2\x23\x82\xb6\xba\xba\xda\ \xe3\x2a\xe8\x16\x0b\xc5\x80\x17\x14\x82\x00\xa2\xc6\x6e\x83\x26\ \xc6\x8f\xd1\xd2\x42\x95\xa0\x60\x92\x0a\x46\x83\xf3\x99\x48\xb8\ \x22\x36\x26\xee\x09\xd1\xce\xc0\x50\xbe\x58\x10\x27\x79\x0d\xbe\ \x8f\xa3\x4d\x0f\xa6\x45\x41\x27\x26\x26\x68\x79\xb1\x4a\x59\xd4\ \xbe\x8a\xd1\x73\x41\x78\xce\x3e\xa7\xa0\x9d\x4c\xba\x5e\x32\x99\ \x24\xdf\xc3\xc6\x01\x24\x71\xa1\x56\xdb\x3b\x75\x3a\x71\xe2\x05\ \x3a\x77\xee\x9c\x20\xc0\x9b\x53\x96\x59\x8e\x8a\x9d\xe1\xf3\x24\ \x88\xc4\x7b\x02\xde\x1d\x6a\x10\xab\xd9\xde\x15\x22\x37\x00\x77\ \x11\x1d\x94\x25\xfd\xef\x37\x6f\xd2\x95\x3f\x5c\xa1\x16\xd6\xd4\ \x8d\x6d\x04\x98\x90\x72\x65\x27\x11\x40\x93\x1d\xd8\x45\xd4\x2d\ \x5c\xe4\xba\x7e\x17\xcd\x3b\x14\xad\x1e\x1e\x2e\xd3\xf1\x67\x9f\ \x8b\xd8\xec\x83\xaf\xd8\x17\xa2\x45\xd3\x0e\x94\x8d\x89\xca\xcd\ \x8b\xa3\x74\x8c\x4d\x1d\x8c\x0a\x5c\xc9\x0c\x64\x44\x05\xf3\xc5\ \xa2\x18\xe7\xe3\x1b\x33\x33\x74\xe5\x8f\x7f\x42\x2a\xee\x08\x7a\ \x4a\xd9\xb2\xc7\x2c\x97\xcb\x0c\xdf\xba\x0d\x75\xda\x86\x03\xd5\ \x53\xa7\x4e\x8d\x6c\xd5\xb7\x40\x0e\x9b\x76\x1a\x75\x0a\xe0\x61\ \x2e\x97\x91\x45\x3a\xbd\x8e\x30\xb8\x66\x6a\x28\x21\x9b\x02\x90\ \x95\x11\x60\x54\x38\x65\xec\x08\xc3\xaa\x81\x6a\x13\x73\xdc\xa8\ \xf8\x77\x26\x1c\x6f\xd7\x0b\x85\x22\x9d\x3e\x7d\x46\xd0\x63\xf6\ \xbb\xae\x43\x8b\x8b\xcb\xcd\x95\x95\x95\x05\x2e\xc3\xe0\xf2\xe5\ \xcb\xbf\xb8\x7a\xf5\xea\x47\x41\xb4\xb9\x34\x5e\xe0\x85\xaf\xbc\ \xfc\xea\x2b\xdf\x79\xfd\xbb\x8f\xf3\x04\x47\x53\x2a\x95\x61\xb0\ \x05\x07\xb0\x68\xfc\xe2\xc1\x0b\x1a\x13\x75\x42\x2b\xde\x17\x0e\ \xc0\x39\x17\xe9\xdc\xdb\x2e\xc2\xc1\x64\x32\xb1\xf5\xde\x7b\xbf\ \xfa\x5d\xab\xd5\xf2\x94\x1c\x96\xee\xf5\x5a\xb7\x11\x54\x4d\x74\ \x00\x3b\x93\xf7\x31\xbc\x7f\x6f\x0d\x7f\xff\xdc\x0f\x7e\x8f\x8e\ \x25\x0e\x2c\x2e\x2e\x51\xb1\x98\xa3\xf5\xb5\x4d\xc9\x7f\x06\xc8\ \x14\x01\x73\xe0\x05\x54\x07\x57\x98\xd1\x4c\x36\x18\x10\xa6\xd7\ \x37\xeb\x48\x43\x5e\xd6\x69\x34\x77\x01\x77\xa5\x0e\xa4\xdf\x42\ \x45\x6c\xfd\xaf\x6f\x46\x4e\xad\xb6\x96\xab\x54\xca\xf1\xae\xdb\ \x17\xd2\xb0\x61\x8e\x96\x91\x5a\x44\x79\xd9\x0c\x3b\x1c\x62\xce\ \x64\xf3\x79\x70\xc5\xa7\xb5\xb5\x35\x51\xc9\xbe\x03\xf9\x6c\x0e\ \x4d\xa8\x31\x80\x68\xdd\x83\xbc\x9a\xd9\x3b\x8d\x5d\x8f\x21\xe6\ \x63\x6a\x6a\x92\xee\xdb\x73\x1d\xe0\x88\xd4\xb0\xd9\xa9\xd5\x6a\ \xe6\x20\x0e\x74\xd6\x6b\x77\xdf\x5d\xa8\x2e\x3c\x11\x84\x41\x4a\ \x47\xdb\x9e\xfb\x84\x56\xdd\xfb\xaa\xfc\xe0\x3b\xa5\x8a\x34\x82\ \x42\xa4\xa7\x57\xad\xce\xff\x12\xe7\xb5\x87\x3a\xb8\x8f\xf3\x16\ \xf6\x6d\x87\xc1\xe6\xe2\xc3\x1c\x85\x01\xcd\x9b\xcc\x07\x22\xb2\ \x6d\x45\x7b\x2f\xee\xe4\xa3\x12\x6a\x90\x61\xde\x58\xf6\x1e\x66\ \xe4\x0b\x0e\xbc\xe6\xb9\xc1\xb6\x6c\x63\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\xd3\ \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\x04\x9a\x49\x44\x41\x54\x78\x5e\xad\x97\x4d\x6f\x1c\x45\ \x10\x86\xdf\xea\xee\x19\xaf\x0d\x17\x8e\xf8\x1f\x84\xbf\x00\x97\ \xfc\x0b\xc8\x81\x13\x1f\x02\xc9\x9c\x40\xe2\x12\xad\x36\x41\x0a\ \xe1\x00\x32\x27\x90\xe0\xc0\x85\x5c\x80\xdc\x90\x10\x87\x48\x28\ \x48\x11\x90\x4b\x82\x42\x40\x41\x0a\x06\x7f\x60\x47\x89\xbd\x8e\ \x63\xef\xcc\x74\x15\xbd\x35\x2d\xb5\xd4\x9a\x99\x55\x14\x4a\x7a\ \xdd\xed\x9e\x9a\xee\xda\xad\x67\xab\x66\x48\x44\xb0\xc8\x4e\x9f\ \x99\x10\x80\x20\x35\x42\xbf\x09\xe2\x78\xe5\xcb\xb1\x60\xb1\x41\ \x03\x88\x87\x7c\x0f\xc1\x33\x7d\x7e\x03\xeb\x32\x14\x4c\x8f\xbe\ \xba\x72\x69\xfc\x3e\x00\x38\x24\x7b\xee\xe2\x87\xe3\xd5\xe9\x11\ \xc0\x0c\x78\xcf\x60\x08\x7c\xc3\x78\x6a\xc5\xc1\x7b\x81\x73\x06\ \x44\x61\xb4\x84\xaa\x06\x44\x80\xba\x66\xbd\xb9\x2c\x0d\xaa\x86\ \xf5\xe6\xb2\x74\x30\x66\x7e\x0d\x3a\x8a\xb4\x32\x46\x30\x1a\x01\ \x67\xdf\x39\x07\x00\x1a\x80\x41\x32\x75\x76\x16\x00\x01\xd7\x37\ \x80\x95\x91\x0d\x87\x5b\x5c\xff\x8b\x40\x44\x98\x55\x8c\xab\x7f\ \x88\x1e\xce\x2c\x61\xbd\xf5\x2d\x9c\xd1\x39\x7b\x8f\xa7\x43\xb0\ \x3f\xdc\xae\xd1\x34\x0c\xcf\x8c\x5f\xc2\x7a\x55\xd7\x18\x2d\x01\ \xd7\xfe\x14\x14\x96\x16\xa6\x20\xcf\x33\x25\xa5\xff\x7b\xf2\x2f\ \xd9\x5c\xb2\xeb\x83\x29\xb8\x0a\xc2\xb9\xb8\xb9\x89\x72\x49\x28\ \x82\xca\x38\x3a\xf5\x49\x0c\x70\x50\x13\x54\x07\x55\x71\x6c\x92\ \xc0\xaa\x0c\xce\x3c\x80\x17\x20\xf8\xb9\x83\x76\x8a\x32\x5d\xdf\ \x46\xcf\xa7\xe6\x34\xc7\x65\x90\xe6\x9b\x22\xec\x48\x41\x64\x10\ \x7e\xb4\x3e\x5e\xbd\x7f\x28\x68\x9a\x90\xcb\x65\x87\x59\xed\xf5\ \x5c\xe7\x28\xac\x49\xbb\x23\x0b\x0a\x07\xd4\x0d\x60\x0c\xc1\x7b\ \x8f\xa5\xd2\x29\x64\x27\xb3\x26\xe4\xda\x29\x1f\x9e\xe7\x3c\x58\ \xbc\xfb\xb6\x02\xf7\x41\x47\x4a\x90\x43\xa8\x90\x15\x86\xe0\x8c\ \xc1\xb5\x3b\x61\xe3\xc2\x62\x79\x44\xb8\xf9\x0f\x94\x7c\xdf\x78\ \xfc\xba\x45\xa8\x1b\x81\x35\x84\xeb\x77\x3d\x08\xa4\xdb\xde\x50\ \x1f\xa3\xb0\xdd\xd8\x24\x94\xce\x85\xfb\x09\x03\xdc\x24\x08\x63\ \xa1\xc9\x21\xcc\x65\xd2\xd8\x0b\x21\xf7\xa4\xe0\x22\x00\x9f\xd6\ \x13\x0b\x39\x84\xe7\x01\x58\x55\x82\x6e\x29\x6a\x14\xc7\x32\xca\ \x44\x71\x54\x15\x35\x0b\x3a\xd1\xb1\x55\x95\x71\x83\x21\x08\x7f\ \xd2\xd9\xf0\x27\x4f\x4a\x26\x99\xbe\x05\x61\xbd\xe7\x3e\xe9\x0b\ \xe0\xd4\x7a\x80\xf0\xf8\x44\xdd\xb4\x12\x16\x85\x81\xa8\xbb\x68\ \x3e\x0f\x0e\x6b\x58\x6b\x75\x1d\x68\xab\x60\x59\x92\xfa\x08\x13\ \x5c\x81\xe0\x07\xac\xad\x4d\x18\xc0\xc7\x5d\xc1\x0e\x41\x48\x46\ \xe3\x13\x54\x55\x8d\xdf\x77\x80\xe3\xe3\x4a\xef\xbc\xb9\xc1\x61\ \xce\x58\x59\x2e\xf0\xf7\x81\x81\xf8\xb6\x44\xdf\xd9\x23\x70\x23\ \x28\x1d\xe1\xf6\x8e\xa0\x9e\xb1\xfa\x0f\x7d\x63\x79\x30\x4e\x01\ \x6c\xed\xd6\xda\x5b\x93\xed\xe8\x80\x6c\x03\xf3\x98\x29\xf8\x2e\ \xf3\xc9\x9b\x97\x82\x3f\x07\xd1\xcd\xff\xc4\x20\x7e\x04\xe1\xbd\ \x54\xf9\x50\x46\x8d\x32\x08\x83\x14\x50\x9b\x36\x54\xc2\xeb\x04\ \x1e\x62\x22\x73\x25\xeb\xfa\x15\x3c\x0f\xc1\xb5\x85\x3f\xbf\x34\ \xcf\x8d\x3b\x2a\xa1\x8e\x99\xbe\x06\xe1\x42\x67\x25\xfc\xfc\x93\ \xf1\xb3\xd3\x23\xd6\x85\xc2\x6a\x7b\xd5\x4e\xa7\xbb\xb3\xc4\xca\ \x27\x20\x02\x96\x4a\xc2\xe1\xc3\x1a\xcb\xa3\x02\x00\xd4\xd7\x1a\ \xd2\x2e\xc8\x22\x28\x9c\x85\xb5\x00\x0b\x81\x99\x61\x88\xb0\x32\ \x22\xbc\xfa\xe6\x04\x00\x2e\x74\x41\x88\xaa\xe6\x40\xb1\xd1\xc5\ \x8d\x07\xc0\xca\x92\x81\x08\xe3\xee\x3d\x68\x55\x23\x48\x98\x0b\ \x88\x82\x00\x6c\x4d\x1d\x1a\xef\xb5\x8d\x6f\xee\x1b\x0d\x60\x79\ \x64\xb1\x79\x10\xcb\x03\x08\x77\xf7\x04\xa3\x62\x7e\x4d\x82\xff\ \x70\x1d\xb8\xf5\xc6\xda\x79\x85\xf0\xc9\xeb\xc0\x70\x0a\x3a\x03\ \xc8\x20\xb4\xdd\x10\xaa\xca\x01\x08\xab\xa0\x13\x55\x82\xb1\x8a\ \xf2\xa9\x35\x47\xeb\x87\x50\xcd\x2c\xae\x86\xd1\x16\x7f\xfa\x6f\ \x40\xb1\x23\x0e\xa4\xe0\xd4\x17\x9f\x8e\x57\x99\x81\xd9\xcc\xc3\ \x39\xab\x30\x19\xa2\x08\x20\x00\x22\xad\x90\xce\xcd\x47\xe8\xba\ \xb5\xd4\x8e\x73\x07\x82\xb6\x72\x22\x52\x78\x1b\xcf\x18\x95\x06\ \x2f\xbf\x3e\xe1\xd8\x92\x91\x07\x61\xf2\x2a\xe1\x7d\x4b\xfb\xd6\ \xbe\x1e\xae\xfe\xbb\x0f\x5b\x1c\xd8\x33\xee\x1d\x19\x88\x66\x56\ \xb0\x7d\x80\xb9\x8f\x1e\xfe\xef\x14\x10\x16\x3d\x7c\x67\x4a\x10\ \x69\xdb\xf3\xee\x91\x24\x4e\x30\x0c\xe1\x6f\x21\xd2\x9d\xac\x19\ \xfd\x5f\x29\xb8\xac\x63\x5f\x0a\x62\x35\xec\x68\xc7\x2a\x6d\xc1\ \x4f\xd0\x8e\x9b\xa0\x3a\xaf\x82\x8b\xdb\x71\xde\x54\x1e\x1f\xc2\ \x34\x57\x4b\xe3\xe9\x97\x26\x9d\x4f\xc5\xa7\x2e\x7d\x36\x5e\xad\ \x1b\xc0\x1a\xc0\x2b\x58\x84\xaa\x62\x7d\xe9\xa8\x1b\x41\xe1\x48\ \x8b\x95\xb5\xb1\x3a\x32\x2b\x2f\x14\x63\x25\x52\x30\x15\x5e\x02\ \xe9\xb5\xf6\xe4\xc8\x87\x3e\xee\x09\xce\xbc\xd6\xf3\x62\xa2\xee\ \x22\xfa\x00\xfa\xe0\x11\xe9\x9d\xd6\x52\x00\x4c\x0f\xd7\x03\xf6\ \x4f\x8c\x6e\x29\xcc\xd8\x3b\x54\x50\x15\xb8\xdd\x69\x7b\xb0\x04\ \xdd\x0f\xa0\x1a\x83\x76\xfe\x48\x3f\x50\x0b\xf3\x81\x80\xcc\x40\ \x25\x7c\xf1\x95\xc9\x76\x9e\x82\x01\xe5\x26\x7d\xea\x7a\x31\xc9\ \xde\x8c\xb2\xb7\xe0\xfc\xe5\x24\x41\xe9\xa2\x6c\xfe\x62\x92\x2a\ \x9d\xaa\xce\x2a\x5f\xf6\x30\x9a\xcc\x64\x74\xe6\x30\x71\xda\x34\ \x11\x1e\x75\x9c\x94\xca\x6f\xf4\x6b\x86\x0f\x4f\xf6\x1f\xaa\x7a\ \xaf\xba\x88\x23\x10\x31\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x06\xd2\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x06\x64\x49\x44\x41\x54\x58\xc3\xed\ \x56\x0b\x4c\x95\x65\x18\x46\xb4\x92\x72\x2e\x53\x67\x6e\xea\x32\ \x4d\x52\xcc\x4b\x4e\x41\x42\xa4\x04\x34\x38\x20\x77\xe1\x98\x5c\ \x04\x01\x15\x11\x31\xe0\x80\x5c\xbd\x00\x02\xde\x41\x44\x40\x49\ \x11\x6f\x04\x89\x01\x79\x03\x0b\x02\x2f\x28\x6a\x71\x92\x05\x23\ \xe1\x44\x63\xd0\xdc\x8e\xd2\x76\x36\xb6\xa7\xe7\x3f\x7c\x78\x41\ \x45\x72\x36\xb7\xd6\xd9\x9e\x71\xce\xff\xff\xef\xf7\x3e\xef\xf3\ \x3e\xef\xfb\xa3\x03\x40\xe7\x55\x42\xe7\x7f\x02\xff\x59\x02\x9f\ \xca\xe3\x66\x11\xbe\x44\x0a\x91\x21\x10\x43\xd8\xfc\x6b\x04\x78\ \xb8\x81\x48\x52\xee\x15\x9a\x57\x1f\x9a\x58\xdd\x1a\xb5\xad\xf1\ \x6e\x74\x8a\x4a\xbd\x71\xa7\x4a\x1d\x9f\xa6\xec\x08\x4d\x28\x6d\ \xe2\xfd\x3c\xc2\xe1\xa5\x11\xe0\x61\x16\x52\x85\xf2\xb5\xd9\x4a\ \x45\x92\xb2\x63\x7d\x82\xa6\xcb\x53\x01\x38\x04\x00\x8b\x7c\x00\ \x73\x77\x60\xa1\x27\xe0\xb2\x1a\x88\x4a\x01\x72\x0b\xda\x3b\xad\ \xbd\x93\x6b\x19\x33\xee\xa5\x24\xf6\x0c\xc9\xab\x0f\x4b\x52\xa9\ \x7d\xa2\x00\x1b\x26\x9d\xef\x0d\xcc\x5e\x06\x4c\x77\x03\xa6\x3a\ \x03\x93\xed\x81\x49\xd6\xfc\x2e\x03\x2c\x3d\x80\x2d\x7b\x80\x1d\ \xd9\xb5\x6d\x8c\x0d\x7e\xd1\xc4\xe3\x08\x85\x54\x71\x18\xe5\xf5\ \x8a\x04\xac\xd6\x00\x9f\xac\x60\x62\x26\x9f\xe3\x47\xac\x22\x48\ \x66\xb6\x3f\x30\x8d\xd5\xeb\xbb\x02\x13\x6d\x81\x19\x8e\x80\x37\ \xd5\xc9\x2f\xd1\x74\x49\xad\x7a\x91\xe4\xab\xad\x96\x27\xd7\x06\ \xc7\xd7\xb6\xf9\x6f\x04\x64\x6b\x01\xd3\x95\x80\x31\xe5\x35\x5d\ \x4f\x22\x31\x94\x9a\x32\x7b\xec\x02\xdc\x77\x03\x4e\xc9\x94\x9f\ \xca\x18\x91\xe0\x54\xb6\x62\x06\x89\xc8\x43\x80\x63\xdf\x02\x52\ \x1b\xfe\x71\xd5\xbe\x11\x85\x0d\xeb\x93\x35\x5d\x4e\x3c\xe4\x33\ \x1e\x6a\x12\xc8\xbf\xac\xc8\x2e\x11\xf0\xcb\x04\x62\xbf\x06\xd2\ \xce\x03\x5f\x55\x02\x99\xdf\x03\xf1\x45\x80\x2f\xaf\x5b\x91\xac\ \x21\x9f\x9f\x43\x95\x96\x46\x90\x40\x09\xe0\x1f\x99\x57\xdf\xdf\ \xe4\x0e\xd6\x52\xd5\x09\xb5\x6d\x2b\xe2\x68\xac\x75\xec\x73\x50\ \x77\xe2\xc5\x4c\xec\x9b\x05\x6c\x66\xa2\x23\x97\x81\x1f\x1a\x80\ \xd3\x97\x54\xea\xe4\x9c\xf2\xe6\x80\x4d\x79\xf5\xf1\x39\xd5\xad\ \xc9\x67\x81\xe5\xfb\x80\x05\xd1\x8c\x09\x66\xe2\xad\xc0\xa9\x72\ \x80\xe7\xd6\xf4\x4b\x72\x87\x95\xa9\xb7\xc2\xb6\xb5\x77\xba\x92\ \xb9\x39\x0f\x30\x0b\x63\x45\x5b\x28\x73\x3a\x10\xce\x8a\x0f\x54\ \x01\x15\x8d\x40\xe9\x55\x95\xda\x2d\x28\xf5\x96\x98\x79\xb9\xd8\ \x05\x31\xc9\x27\x38\x7e\xc7\x01\xc7\x6d\x80\xfd\x26\x4e\x02\x09\ \x9f\xf9\x51\x78\xe0\x91\xd9\x35\x78\x4a\x72\x85\x07\x1d\x1e\x94\ \xa4\xe9\xb2\x0b\x65\x72\xca\x6e\x11\x0b\x38\xef\x00\x02\x8e\x00\ \xdb\x2f\x00\xc5\x75\x40\x65\xbd\x5a\x13\xbe\xb3\xb0\x41\x24\xb6\ \xe8\x75\x86\x59\x50\x52\x61\xc3\x16\x4a\xee\x99\xc1\xea\xf7\x92\ \x30\xbf\x67\xe6\x2b\x3b\xa4\xbc\xd2\x03\x31\xfb\x72\xbb\x7f\xf4\ \x90\xe8\xe9\xf7\xca\xe8\xd2\xa6\x55\x94\x58\xc6\x8a\xcd\xc3\x69\ \x9a\x04\x56\xcd\x7e\x6e\x38\x05\xe4\x5c\x01\xaa\xee\x00\x45\x55\ \x8d\x77\x6d\x7c\xb5\x33\xed\xfe\xac\x8d\xe8\x1f\x97\x57\x9f\x72\ \x0e\x58\x97\xc7\x11\xcc\x07\xca\x6a\x69\xd4\x35\x5a\xa5\x0c\xa4\ \x07\x6a\xca\x68\x98\x3d\x39\x0f\x49\x48\x7f\x43\x92\xd9\xef\x78\ \x26\x67\x62\x0b\x3a\xdb\x9e\x55\xfb\xe5\x02\x89\x34\x58\x01\xab\ \xbe\x7a\x47\xd3\xb5\x79\xbf\x76\xab\x49\xab\xd6\xa8\x8f\x16\xca\ \x63\x33\xcb\x9b\x77\x96\x01\x09\x74\x7e\xc1\x25\x60\xef\x31\xed\ \x0e\x50\x68\x37\xa1\x44\x20\xfd\x10\xb0\x91\x63\x13\x9a\xa8\x25\ \x51\x14\x18\xaf\xec\xf0\x64\x8f\xad\xa5\xf9\xde\x0c\xb8\xa6\x01\ \x6b\x4f\x02\xbb\x2a\xd8\xbb\x5f\x81\x4b\x8d\x6a\x8d\x4f\x64\xb6\ \x52\xf2\x47\x3f\x3c\x94\x92\x5e\xdc\x78\x37\x83\xb1\xc7\x98\xfc\ \xfc\x35\xb5\x46\xe6\xd3\xbd\x05\x1f\x10\x88\x92\xcc\xc1\xa3\x16\ \x73\x4c\x5c\x14\x6a\x8d\x23\x2b\x96\xd1\xed\xb6\x49\xc0\x32\x4a\ \x1e\x42\xc9\xf7\x4b\x0e\xa7\xe4\x95\xb7\xdb\x3b\xfb\x92\xbc\xf7\ \xbb\x61\x09\x4d\x79\xea\x67\x56\x4e\xd9\x2b\x94\x9a\x2e\xaf\x30\ \x2d\xf1\x07\xb1\x5a\x02\x21\x5c\x16\x66\x3e\xdd\x5b\xcc\x8c\x2e\ \x5f\x18\xdb\x2d\xb9\x57\x0e\x10\x41\xc3\x1c\xbc\x06\x54\xab\x80\ \x93\xe5\xca\x0e\xdb\xee\xe4\x0e\xfd\x1c\xdf\x98\x83\xa5\xca\x8e\ \x0b\xb7\xd9\xb2\xdf\x80\x98\x54\x6d\xcb\x1e\x53\x4d\x4b\x40\xc1\ \xdd\x6c\xce\xb9\x36\x22\xcc\x99\xdc\x81\xed\xf0\x3a\xcc\xe4\xa5\ \x40\xd6\x75\x4a\xfe\x3b\x57\xe7\xc5\xc7\x8d\xda\x9f\xdd\xe1\x1d\ \x91\xad\xbc\xc9\xd8\x9b\x24\x1f\x9b\xa6\x4d\xae\x78\xe2\xff\x01\ \x89\x40\xec\x01\x6e\x32\x4a\x6e\xc9\x7e\x3b\xa6\x32\x39\xcd\xb6\ \x8e\x86\xd9\x5e\xcd\x31\xe3\x7c\xef\x2b\xa8\x6e\x35\x73\x8b\x89\ \x33\x75\x89\xf8\x48\x47\x47\x67\x20\x31\xe8\x19\x90\xee\x0d\x34\ \xb2\x09\x1c\x29\xbd\x72\x2f\xfe\xd4\xde\x59\xd7\xfa\x30\xb9\xce\ \xd3\x3e\x12\x81\x44\x1a\x6c\x19\xe7\xd3\x85\x8b\xc5\xe7\x28\x0d\ \xc7\xe4\xb1\x5c\xa3\xe9\xec\x5b\x6e\x95\x4a\x3d\xdf\x35\x3a\xcb\ \xc8\x36\xe8\x63\x3e\xae\x47\xbc\x49\xbc\xf5\x0c\x48\xf7\xf4\xe6\ \xb9\x6c\x58\x9d\x7a\xbc\xea\x8f\x6b\x4d\x9a\xae\xe5\xe1\x59\x4a\ \x33\xb7\xe8\x0d\x82\x9c\x2e\x31\xe0\x09\x02\xd9\x17\xba\x37\x5a\ \x70\x21\xb7\x14\xd7\x66\x02\xc7\x72\x37\xa5\x3f\xf4\x0b\x67\x96\ \xf2\x9d\x28\xaf\xfb\xd3\xc4\x31\x2c\xe9\x43\x23\xbb\x99\x0c\x19\ \x45\xbc\x2b\x30\x5a\xa0\xe7\xf7\x28\x43\x59\xc0\xd2\xd8\xb4\xe2\ \xe6\xb2\x1b\xed\x7f\xb9\x04\xee\xae\x33\x71\x52\x7c\xc9\xeb\x43\ \x88\xc1\xc4\xeb\x42\x29\xdd\xc7\x08\x54\xd4\x73\x44\x6a\x98\x90\ \x49\x8f\x73\xc6\xbf\xe1\xa8\x9d\x6e\x02\xce\xb5\x00\x57\xda\x80\ \x26\x35\x5f\x2e\xc5\x35\x1d\x73\xac\x03\x12\x19\x32\x99\x98\x42\ \x18\x10\x53\x05\xa4\xef\x53\xde\x9f\x6e\xfe\xb9\x67\x68\x46\xc3\ \xae\xbc\xca\xb6\x79\x4e\x8a\xa2\x59\x8b\x7c\xfd\x78\x7d\xac\x20\ \x37\x9c\x18\x2a\x54\x7c\xed\x01\x09\x69\x7d\x96\x5c\x56\xa9\x89\ \x7b\x25\x57\x5b\xee\x7d\x77\xbd\xe5\xde\x99\xeb\x2d\xf7\xcf\xd6\ \x12\x37\x5a\xee\x9f\xbf\xd1\xdc\x29\xe1\x5c\x6d\x73\xa7\x67\x68\ \x7a\xd3\x98\x49\x86\x4b\x19\x66\x26\x85\xf6\x82\x74\xcd\x74\x8c\ \xbe\xa1\x7c\xc6\x02\xcf\xad\xc3\x46\x8d\xb7\xe0\xef\x59\xc4\x34\ \x41\x7a\xbc\x50\xeb\x6d\x41\x62\x90\xb6\x1d\x34\x97\x25\x7b\x94\ \x65\xba\x24\xf2\xe0\x3c\xe7\x88\xc3\x26\x0e\xa1\x47\x8d\xed\x82\ \xf3\xe7\xda\x06\x15\x1a\xda\x04\x9e\x36\x94\xad\x29\x36\xb4\x0e\ \x28\x95\x30\x61\xa6\x65\x34\x83\xec\x09\x47\xc2\xa9\x17\x1c\xc5\ \xbd\xc5\x84\x8c\xb0\x22\x2c\x05\xb1\xb9\xc4\x74\x62\xa2\x50\x43\ \x52\xe2\x8d\x1e\x15\x06\x8a\xfe\x0c\x13\x72\x49\xf2\x1a\x11\x0b\ \x08\x6b\x71\xa8\x33\xe1\x4a\xc8\x89\x2f\x08\x77\xc2\xa3\x17\xdc\ \xc5\x3d\xb9\x78\xd6\x59\xc4\x5a\x8b\xb3\x8c\xc4\xd9\x63\x45\xae\ \xc1\x22\xf7\xab\x27\xa0\x2b\xe4\x18\x2a\xe4\x99\x28\xe4\x9a\x2b\ \xe4\xb3\x14\x72\xca\x84\xbc\x2f\xbd\x05\x03\x84\x21\xf4\x84\x41\ \x46\x0b\xc3\x4c\x16\x06\x92\x8c\x64\x48\x18\x13\x26\x92\xd1\xfa\ \x32\xa1\x78\xc6\x58\xc4\x3c\xdf\x84\xe2\xa3\x2b\x46\x43\x4f\xb0\ \x1b\x2e\x98\x4a\x72\xbd\x47\x4c\x20\x3e\x20\xf4\xfb\x1a\x43\x71\ \x4f\x5f\x3c\x3b\x41\xc4\xf6\x3d\x86\x8f\x7c\x74\x05\xab\xd7\x45\ \x7f\x86\x88\x00\xa9\x5f\xef\x10\x23\x88\x91\xcf\x5b\x44\xe2\x99\ \x11\x22\x66\x98\x38\xe3\x89\x45\xd4\xf3\x2e\xf8\x1b\x95\x0d\x18\ \x5b\x26\xd0\x37\x16\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x04\xe9\ \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\x04\xb0\x49\x44\x41\x54\x78\x5e\xb5\x97\x41\x8b\x5d\x35\ \x14\xc7\x7f\x27\xc9\x7d\xef\x4d\xeb\x46\xf0\x93\x4c\xbf\x80\x7e\ \x05\xdb\x85\xed\x42\x10\x8a\xd2\x85\x8a\xa0\xa8\x0b\x79\xbe\xba\ \xb1\x0a\x6a\x77\x0a\xba\x70\x63\x17\xd6\xcf\x50\x10\x17\x5d\x58\ \x41\xab\x50\xb4\x6a\xa7\x3a\x63\xdb\xa9\x9d\xe9\x4c\xdb\x99\x77\ \xef\x4d\x8e\x21\x59\x04\xc2\xf5\x4e\xa9\x18\xf8\x73\x72\x6f\xce\ \x23\xb9\x39\xbf\x77\x4e\x22\xaa\xca\x41\xed\xa9\x13\x0b\x01\x04\ \xa0\xd8\x41\x29\x64\x7b\xe1\x8b\xb9\x72\x70\x43\x54\x35\x4f\x72\ \x7c\xf1\x06\x70\x8c\xe1\x26\x23\xef\x75\x74\x31\xc3\x3a\x7f\xe1\ \xdc\xfc\x5d\x00\x47\x69\xc7\xce\x7c\x30\x3f\xb2\x73\x1f\x42\x00\ \xef\x03\x01\xc5\xf7\x81\xc3\x87\x1c\xde\x2b\xce\x19\x44\xa2\xb5\ \x42\xdb\x81\x2a\x74\x5d\x00\x60\x32\x31\xb4\x7d\x80\x10\x62\xdf\ \x61\x0c\x71\x8c\x64\x55\xb3\x8c\x51\x66\x33\x78\xeb\xb5\xd3\x00\ \x69\x01\x86\xd2\x92\xb3\xb3\x80\xc0\xa5\xeb\x70\x68\x66\xe3\xe4\ \x96\x4b\x6b\x82\x88\xb0\x6c\x03\xdf\xfc\xac\x69\xf2\x10\x94\x6f\ \xd7\xb2\x6f\xe3\x4c\xf4\x81\xe0\x7d\x5a\xec\xd7\x57\x3a\x7a\x1f\ \xf0\x21\x24\x9f\xb6\xeb\x58\x99\xc2\xc5\x5f\x95\x89\x95\xf1\x10\ \x0c\xc4\x59\x8a\xca\xf3\x70\xfc\xd1\xaa\xaf\xd5\x78\x15\x82\xc2\ \x40\x0d\x9b\xc9\xc2\x15\xd1\x00\x93\x6c\x71\x80\x29\x0c\x10\x80\ \x1e\xe8\x80\x36\x5b\xfa\x22\x42\x52\x81\x73\x14\xc2\x9a\xf6\xb2\ \xa8\xa1\xdd\x18\xfe\xea\x50\xed\x40\xb1\x63\x10\x7e\x78\x76\x7e\ \x64\x6b\x57\xe9\x7a\xcf\x63\x2b\x8e\x65\xe7\x01\x93\xa0\xeb\xbc\ \x22\xe4\xd8\x37\x8e\xe8\x03\x62\x24\xc5\x7d\x3a\x71\xa8\xc2\xfe\ \xb2\x67\x36\x75\xc9\xc7\x87\xfc\x5b\x6b\xa2\x1c\xf8\x1e\x26\x0d\ \xd1\x17\x5e\x7d\x65\x31\x08\x61\x82\xcc\x19\x89\x32\x5c\xbc\xea\ \x99\x36\x96\x95\x99\x70\x79\x1d\x1a\x2b\xf4\xbd\xe7\xc7\x0d\xa1\ \xeb\x15\x6b\x84\xef\xae\x79\x04\x01\x85\x1f\xfe\x04\x67\x0d\xb3\ \x69\xec\xaf\x0b\x8d\x73\x11\x3c\xc3\x4f\x7f\x81\x91\x90\x00\xff\ \x3e\xfa\x58\xa3\xd4\x10\xe6\xd8\x2b\x35\x84\xb5\x4c\x65\x87\x20\ \x0c\x95\xad\x05\xa0\xc3\x21\x10\xce\x00\xef\x01\x36\xa9\x40\x37\ \xcd\x62\x96\x2d\x93\xa4\x02\x6a\xc8\xa2\xcd\x62\x09\xec\x67\x1b\ \x55\xa0\xf4\x44\x55\x6c\x14\x06\x50\x5e\xaf\x76\x60\xf0\xcb\x2b\ \x51\x03\x38\xbe\x13\x65\x07\x80\x1a\x42\x8e\x7e\x74\x76\xbe\xba\ \xbf\x0f\x48\xce\x84\x4d\x63\x50\x05\xd0\x08\x8f\xb0\xbd\xd3\xe1\ \xac\x4d\xef\x21\x67\xc1\xc9\x44\x92\x8f\x06\xc1\x35\x19\xd2\xe0\ \x85\x65\xdb\x31\x9d\x5a\xfa\x3e\x67\x49\x11\xd8\xdd\x5d\xf2\xc4\ \xe3\x53\x5e\x7a\x79\x18\x42\xb1\x02\xa8\xd2\xb6\x1d\x57\x6e\xc0\ \xde\x5e\x8b\x00\x97\xaf\x07\xf6\x1e\x04\x0e\xaf\x34\xfc\x71\xd7\ \xa0\x3e\xa7\xe8\xab\x9b\x42\xe8\x95\x89\x93\xe8\xaf\x74\xcb\x80\ \x20\xfc\xb2\xa9\x09\x48\xdf\x2b\x6b\xdb\x06\x67\xc1\x1a\xf8\xed\ \x8e\x03\x2a\x08\x9f\x3c\xfe\xb6\x00\xa0\xbc\x09\x1c\x05\x04\xa0\ \xda\x72\xf3\x08\x21\x08\xd5\x33\x65\x76\xbe\x44\x38\x13\x93\x92\ \x96\x7f\x41\x9d\xfd\x0a\x6c\xb3\x0a\xc2\x28\x1a\xc0\x96\x44\x84\ \x07\xba\x02\x1e\xfb\xc5\x66\x38\xeb\xac\x98\x32\x62\x0d\x61\xd9\ \x81\x11\x08\x4b\xbf\x6e\xe1\x60\x08\xcb\x0e\x0c\x42\xf8\xd9\xc7\ \xf3\xd5\x9d\xfb\x01\x80\xc6\xe6\xf2\xda\x38\x83\x00\x3e\x28\xc6\ \x08\xde\x2b\x22\x24\x28\x77\xef\x75\xcc\x66\x0d\x02\xb4\x3e\x60\ \x45\x52\x15\xcc\xd9\xd2\x62\x2d\x04\x15\x42\x08\x18\x11\x8c\x81\ \x95\xa9\x70\xf2\xd4\x42\x87\x20\xa4\xed\x02\xd3\xc6\x60\x80\xeb\ \x5b\x70\x68\x6a\x50\x0d\xfc\x7e\x9b\xf8\x5e\x10\x94\x6b\xb7\x15\ \x91\x28\x60\x63\xc7\xe1\xbd\xc7\x18\x58\xdf\x32\x58\x23\x71\x02\ \xcb\x7a\x04\x15\x02\x20\x5c\xdb\x54\x66\x8d\xc1\x1a\x65\xed\x6f\ \x08\x4a\x69\xd5\x0e\x7c\x75\xea\xc5\x77\x00\xe4\xff\xcb\x03\xa5\ \x18\x01\x0c\x65\xc2\xf7\xf3\x3b\xec\x20\x84\x59\x93\x11\x08\xdb\ \x04\xde\x30\x84\xbe\x2a\xcd\x8c\x41\x48\x0d\xdd\x48\x49\x66\xf4\ \xeb\x4b\x9f\x83\x20\x7c\xfa\xf3\x4f\xe6\xab\x21\xc0\x72\xe9\x71\ \xce\x12\x54\x13\x3c\x21\x01\x08\x88\xa4\x0c\xe9\x9c\x44\x0b\x1a\ \x14\x63\xf3\xb8\x35\x06\x84\x54\x31\x45\x24\xc1\x1b\x81\xc4\x88\ \x21\x68\x06\x57\x03\x34\x0d\x3c\x77\xea\xf4\x30\x84\x02\x78\x9f\ \x69\xdf\xd8\xce\x93\x83\x72\xf3\x5e\xc6\x21\xf8\xc0\xed\xfb\x06\ \x0d\x80\x2a\x1b\x77\x49\x3e\xd6\x18\x6e\xee\xe4\x05\x89\x08\x37\ \x76\x04\x55\x52\x59\x5f\xdf\xd6\x54\xca\x51\xb8\x75\x0f\xac\x19\ \x81\xf0\xd9\x17\x16\xd5\x29\xe8\xbf\x87\x60\xa4\x18\x55\x47\xb2\ \x13\x0b\x03\x48\x55\x8e\x9b\x52\x82\x1f\xb9\x1c\xf7\x75\x39\x8e\ \x59\x30\x3c\x4c\x39\xa6\x06\xef\xe1\x21\xac\xfb\x00\xc5\xc6\xf3\ \xe7\xe0\x99\xf0\xe8\xb9\x4f\xe7\xab\x5d\x9f\xe3\xe4\x13\x58\x42\ \xdb\x86\x54\x4e\xfb\x5e\xb1\x4e\x52\x09\xb6\x39\x90\x39\xc3\x19\ \x41\x00\x10\x44\x48\x40\x26\xe8\x90\x34\x06\xa0\x90\xf9\x48\xc7\ \x3d\xe5\xc4\xf3\xa7\xf9\x57\x08\x51\x4d\x65\x74\xeb\x41\x06\xc7\ \x5a\x89\x80\x69\x22\xdf\x08\x6c\xef\x1b\x04\x45\x43\x60\x73\x27\ \x83\xaa\x0a\xb7\x62\x5f\x35\xeb\x4e\x04\xd5\x18\x72\xff\x41\x06\ \x4f\x51\x6e\xdd\x55\x64\x04\xc2\xf3\xcf\x9c\x5c\x50\x87\x60\x44\ \x75\xd3\x11\x51\x6c\xc9\x84\x23\x17\x93\xea\x72\x52\xa0\x74\xe5\ \xb9\xba\x98\x94\x4c\x57\xa0\xab\x2e\x25\xf5\xc5\xa4\x0e\x01\x79\ \xb0\x3e\x54\xd0\x67\x15\xc2\xb3\xd8\x2b\x2a\xe9\xb7\xaa\xfd\xa3\ \x93\x03\xfc\x03\x22\xbc\xed\x2c\x77\x29\xd6\x5e\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x7c\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x05\x0e\x49\x44\x41\x54\x58\xc3\xb5\ \x57\xdd\x6f\x15\x55\x10\xa7\xb4\x5a\xa8\x42\x48\x25\x14\x34\x90\ \xc2\x03\x36\xbe\x54\x1e\x0c\x0f\x04\x35\x10\xfd\x1b\xca\x9f\xe0\ \x93\x89\x4f\x05\x0d\xb9\x8d\x18\x13\xa2\x0d\x81\x04\x13\x31\x9a\ \xf2\x46\x62\x80\x68\x53\x6d\x29\x94\x7e\x72\xa5\xbd\xb7\xbd\xbd\ \xdb\xfb\xd5\xf6\x7e\xb5\xb7\xb4\x40\x6b\x8b\xf8\xd2\xdb\x3d\xe3\ \x6f\xce\xce\xd2\x75\xdd\xdd\x16\xc5\x87\x5f\xe6\xec\x9c\x99\x39\ \xbf\x3d\x67\x76\xe6\xec\x16\x22\xda\xb2\x11\xde\x3f\x15\xaa\x00\ \xb6\x0a\x2a\x03\x60\xdb\x54\x6c\x26\x2e\x63\x7d\x91\xa6\x50\x33\ \x30\xe2\x83\x88\x0f\xb2\x01\x73\x7e\xb1\x9a\xfd\x08\x8c\x0c\xcd\ \x12\x75\x24\x4c\x6a\x4f\xac\xd1\xf9\x1e\xa2\xee\x29\xeb\xf9\x8b\ \x2e\x93\x6e\x4f\x13\xf5\x15\x88\xbe\xec\x26\xfa\x35\xa5\xe8\x67\ \xa3\x4c\x1f\x5d\x8e\xd1\xad\x49\xd8\xa4\x4c\x6a\xe9\x30\x9f\xe9\ \xcf\x75\xb1\x8d\xa9\x7d\x39\x0e\xfb\xfe\x64\xac\xd2\xe5\xfb\x26\ \xf1\x3a\xbe\x04\x06\x41\xa0\x2b\x43\xd4\x9b\x27\xea\xcc\x28\xba\ \x9b\x83\x63\x7c\x55\xcb\x0e\x90\xea\xc9\x12\x16\x58\xd5\x36\x8c\ \xd6\x1f\xc7\xb5\x5d\xf7\x94\xa9\xc9\xde\xc1\x7c\x67\x5a\x51\xfb\ \x44\x99\x3a\x92\x96\x8e\xc1\xb6\xfc\xcc\xf1\x83\x08\x34\xfb\x6c\ \x79\x14\x18\x05\xc6\x04\x31\x60\x5c\x50\x70\x8c\x63\x0e\x9b\x51\ \xf1\xf3\x3a\x12\xef\x23\x70\x25\x5b\x15\xf0\x32\x50\x03\xec\x04\ \x6a\x81\x3a\x60\x3f\x70\x08\x38\x0c\x34\x00\x1f\x8b\x3c\x2c\xfa\ \xfd\x62\x57\x2b\x7e\x35\x12\xa7\xca\x2f\x39\xbd\x16\xaf\x04\xcb\ \x4f\xe5\x0d\x9c\x6f\xcf\x6f\x19\x07\x0c\x60\x42\x30\xeb\x18\x1b\ \x32\x3f\xee\xda\x85\xa8\x8e\xb7\xfe\x95\x54\x6c\x44\xa0\x8a\xb7\ \xac\x6d\x8c\xa8\x07\xe7\x77\x1b\xe7\x7b\xa1\xd7\x1a\x77\xa6\xca\ \x74\xa9\x1f\xe7\x8a\x73\xbf\x95\x5e\xa3\x4f\xae\x8c\x53\xcf\xb4\ \x35\x77\x51\xeb\x4d\xea\x4c\x96\xe9\xab\x3b\x4a\xeb\x7b\x91\x13\ \x6d\x63\x8a\xf4\x11\xf8\xec\x82\x17\x81\x97\x98\x75\x64\x9e\x03\ \x2b\xea\xcb\x89\xcc\x2a\xea\xcf\xf1\x22\x6b\x34\x50\x50\x5a\x77\ \xe9\x46\x9c\xee\x4e\x2b\xad\x63\x3b\x3d\x9f\x2e\xeb\xe7\xc1\x02\ \xfb\xad\x11\xc7\xd1\xbb\xc0\x71\xfd\x08\xfc\x6d\xfb\xf9\xcc\x9a\ \x42\x9f\x39\xb6\xde\x4e\x3a\x7b\xeb\x93\x40\x4a\x50\x72\x8c\x93\ \x8e\xa3\x70\x26\xe5\xa8\x8e\x67\x11\xf8\xc7\x31\x78\x13\x38\x15\ \xda\x2e\x49\xb4\x1b\x78\x43\x12\xec\x2d\xe0\x08\x70\x14\x38\x0e\ \xbc\x07\x84\x44\x1e\x17\xfd\x11\xb1\x3b\x24\x7e\xbb\x25\xce\x76\ \x89\x1b\x40\xa0\x29\x74\xda\xe7\xd3\xb3\x93\x8f\xdf\x2e\xe1\xd8\ \x81\x34\x30\x27\xd2\xde\x81\x84\xd8\x79\x25\xa3\x1d\xfb\xb4\x1f\ \x81\x91\x91\x92\x49\xf7\x51\x2c\x06\xb2\x26\x5d\x8d\x10\x8d\xcc\ \x11\xdd\xcb\x9b\xf4\xfd\x3d\x6b\x1c\x2e\x2a\xfa\x76\xd0\xd4\xba\ \xe8\x03\xa2\xb3\x57\x0d\xea\xcf\xae\xd1\x70\x89\xb4\x4d\xb8\x48\ \xda\xff\x0a\x6c\x58\x1f\x46\x1e\x7c\x37\xa4\xf4\x7c\xb8\x68\xd2\ \xcd\x94\x55\x88\xfc\x08\x44\x92\x8b\x58\x30\x67\x6a\xb0\xd3\x10\ \x4b\x04\xd4\x01\x90\x78\x3c\x0e\xe7\x95\x1e\xc7\x16\x88\xbe\xb9\ \x19\xd3\x73\xb6\x2d\xeb\x07\xb0\x70\xdf\xd4\xaa\xb6\x1b\x9e\x55\ \xf4\x5b\xd1\x8a\xc9\x73\xc6\x63\xb2\xbf\x88\x75\x02\x72\xfe\x4c\ \xe0\x8c\x63\xfb\xa3\x1e\x09\xe8\xde\xfe\x8c\x1c\x41\xc6\xe3\x18\ \xdc\x89\x18\x75\x1c\xc3\x19\x7b\x4d\x77\x12\x56\x4a\xa6\x72\xc2\ \xec\x00\x5e\x03\xf6\x01\x07\xa5\xda\xbd\x2d\x89\xf6\x2e\x70\x12\ \xf8\x10\x38\x27\xf2\xa4\xe8\x8f\x8a\x5d\x83\xf8\xed\x93\x38\x3b\ \x24\xae\xfd\x25\x78\x7e\x05\xfe\x04\x9a\x42\xad\xae\x1d\xc8\xb8\ \x76\x20\xe3\xda\x81\xd6\x17\x4d\xc0\x48\x3d\x56\x14\x47\x51\x69\ \x4f\x10\x8d\x95\x14\x45\x91\xb0\xe7\xaf\x19\x18\x9b\x94\x78\x44\ \x74\x23\xa6\x68\x14\xe3\xc9\x25\x7d\xce\xc6\x0b\x27\x50\x78\x42\ \x14\x9d\x29\x53\x0c\x8b\x4c\x20\x01\x19\x6d\xbf\x18\x94\x78\xa8\ \x30\xb6\xc8\x25\x41\x64\xfa\xf7\xff\x87\x40\xeb\x73\x26\xe1\xd7\ \xff\x95\xc0\xab\xd2\x52\xf7\x02\xf5\xc0\x9b\x40\xa3\xa3\x0a\x9e\ \x00\x3e\x00\x3e\x17\x79\xc2\x51\x0d\x1b\xc5\xbe\x5e\xfc\x6b\x25\ \xde\xa6\x08\x70\xc7\xda\xa6\x1d\x9a\x42\x2d\x01\x7d\x20\x68\x07\ \xdc\xfd\xa0\x45\x08\x6c\x93\xf8\x95\x41\xbd\xc0\x26\xf0\x0a\x97\ \xd0\x99\x3f\x88\x72\x38\xd3\x3e\xb4\xd6\x29\x14\x91\xd4\x3c\xae\ \x65\x68\xc5\xe9\x87\x26\x65\x1e\xa1\x1b\x5e\x8f\x53\x7a\xc1\xd4\ \x73\xbd\x68\xc9\x69\xe4\x43\x7e\x19\x5d\x70\xd2\xb2\x67\x7f\x5d\ \x8a\x39\xde\x3a\x81\xad\x1b\x11\xa8\xd6\x37\x19\x38\x16\x57\x14\ \x02\x29\xca\x2d\x91\x96\x8c\x49\x2c\x9c\x5d\xb4\xe4\xb5\x6e\x83\ \x32\x20\xc3\xf3\xd9\x45\xd2\xc4\x58\x5a\x76\x26\x15\x56\x94\x4d\ \xa0\x46\xe2\x56\x6d\xb6\x1b\x32\x81\x90\xa3\x1a\xc6\x7d\xaa\xe1\ \x9c\x4f\x15\x8c\x3b\xaa\x60\xc8\x71\x35\xf3\xee\x86\x42\xc2\xab\ \x1d\x73\x06\xbf\x2e\x09\xd5\x20\x09\xf6\x0e\x70\x4c\x92\xee\xac\ \xc8\x63\xa2\x6f\x14\xbb\x7a\xf9\x02\x6a\xbd\xda\xb1\xdf\xad\xd8\ \xdd\x8e\xed\x96\x1c\x0b\x68\xc9\xa5\x80\x56\x1c\x73\xdd\x0b\x9f\ \xb5\x63\xdf\xff\x82\x85\x3f\x89\x4a\x28\x38\x45\x24\xde\x30\xba\ \xd7\xec\x0a\x12\x69\x19\x55\x0f\x5d\xb0\x08\x59\x58\x52\x5a\x3f\ \xb3\x6c\x3d\xff\xd0\x31\xa1\x75\x45\x3c\xb3\x4d\x7e\xc9\xd4\xfe\ \x61\x74\x3f\xdb\x3e\x32\xb3\xae\x37\x16\x82\xff\x0b\x34\x01\x6b\ \x51\x26\x81\xc0\x08\x90\x5f\x84\xf3\x8a\xd2\x44\x38\x48\xe9\x89\ \xa2\x07\x4f\x21\x61\x77\xbd\x67\xc2\xb2\x03\xf8\xd9\x1a\x9b\x7a\ \xcc\xb6\x1c\x87\xe3\xcd\x2e\x5b\xe3\xf9\xa7\xcf\xff\x63\x12\xf5\ \xb8\x1b\xda\x09\xc9\x28\x3a\xc6\x71\x8f\xbb\x60\xf4\xdf\xfe\x98\ \xd8\x55\xb1\x5a\xbe\x61\x3b\x21\xeb\xe4\xae\x77\x40\x12\xed\xa0\ \xc8\x03\xa2\xaf\x13\xbb\x9d\xe2\x57\xed\x77\x19\xf5\x24\x10\x40\ \xa2\x46\xea\xf9\x2e\x59\x60\x8f\x2c\xb6\x57\xe4\x1e\xd1\xef\x12\ \xbb\x9a\xcd\x2c\xce\xf8\x0b\x15\x86\xe3\xed\xf2\xf3\x48\xec\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\xbc\ \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\x83\x49\x44\x41\x54\x78\x5e\xb5\x57\x4b\x6c\x54\xd5\ \x1f\xfe\xee\x9d\x3b\x8f\x5b\x68\xe9\x50\x86\x3a\xd8\x48\xb5\x04\ \x4a\x78\x88\x0a\x21\xd4\x47\x5c\x28\x44\x43\x02\xc4\x05\x89\x1b\ \x16\xba\x91\x90\xb8\x71\xe5\x23\x3e\x12\x37\x24\xae\xdc\xb8\xd2\ \xb0\xd0\x95\x09\xff\xe4\xbf\x20\x04\x2b\x2a\x68\x95\x4a\xa0\xb4\ \x4c\xe9\x93\x96\x4e\x3b\xd3\xce\xab\xf3\xb8\xcf\x73\xef\x1d\xe7\ \x77\x72\x4f\x32\xc9\x64\x8a\x93\x8c\xbf\xe4\xcb\x79\x4c\xe6\x7c\ \xdf\xef\x71\x7e\x67\x46\xaa\x56\xab\x68\xc5\x9e\x3b\xfd\xe9\x4b\ \x00\x0e\x01\x08\xe3\xf1\x36\x06\xe0\xf6\x9d\xff\x7d\x5e\x40\x13\ \x53\x5a\x24\x0f\xc7\xb7\x47\x5f\xfd\xfe\xab\x0b\x1f\xaa\x11\x45\ \x05\x00\x49\x02\x37\x7f\x40\x40\x06\x84\x4f\xa3\xe3\xf3\x37\xce\ \x7f\x76\xe9\x0b\x00\x3f\xa1\x89\xc9\x68\xcd\xb6\x1f\x39\x38\xb0\ \xc3\x45\x40\xb5\x1d\xc0\x64\x80\xeb\x01\x8e\x0b\xb0\x1a\x3c\x0f\ \x60\x4e\x0d\xcc\x41\x49\x63\x38\x34\xf8\xd4\xcb\x1f\xbc\xf3\xe6\ \xbb\x35\xe1\xaf\xb5\x4b\x00\x1c\xc6\xc0\x4c\x8d\x7b\x1e\x52\x7c\ \xaf\x25\x0e\x61\xa8\x54\x2a\x28\x19\x0e\xf2\xc5\x0a\xde\x3a\x7e\ \xf8\xec\xeb\x2f\xee\x7f\x83\x52\xd7\x52\x0a\xde\xfe\xe8\xf2\xa1\ \xba\x25\x9f\xf7\xf5\xf5\x47\x97\x52\xeb\x83\xd7\xfe\x9c\x05\xf3\ \xb8\x76\x44\x42\x0a\x9e\x1f\x8c\xe3\xe9\x27\xa3\x10\x56\x2c\x95\ \x60\x4b\x1d\xe8\xea\xde\x86\xc2\x7a\x0e\x9f\x9c\x3f\xfd\x5e\x26\ \x5f\x36\x6b\x22\xee\xd5\xea\xa1\xd4\x4c\x80\x20\xa6\x93\xce\xbd\ \xb0\x37\x7e\x4e\xec\xed\x1f\x88\x75\xd3\xc8\x6c\xa6\xe8\xba\xb6\ \x65\x60\xe7\x76\x44\xbb\x54\x04\xe4\x2a\x6c\xe6\xe1\xc7\x9f\x13\ \x38\x31\xb4\x1b\xfb\x9e\x89\x81\x8c\x31\x06\xcb\x33\x41\x66\x07\ \xb6\x40\xd7\x75\xf5\xec\xc9\xa1\xc3\x77\x27\x17\xf7\x03\xf8\xe3\ \x71\x11\x38\x75\xee\xe4\xc1\xf7\x4f\x1c\x1b\xe8\xc7\x06\x66\x59\ \x16\x8a\xc5\x22\xfa\x7a\x7b\x70\xe6\x95\x7e\x8c\xdc\x5f\x46\x4f\ \x57\x04\xbd\x3d\x9d\x90\x24\x09\xa6\x61\x80\x2c\x10\x50\x90\xcd\ \x56\x90\xc9\x64\xe4\x7f\x5d\x03\x9a\xa6\x71\x2f\x36\x32\xc7\x71\ \xe8\xd0\x1a\x41\x00\xbb\x76\xf6\x62\x4f\xdf\x66\xdc\x4a\xac\x20\ \x95\x2d\x43\x8d\xa8\x98\x9f\xba\x83\xaf\x2f\x7e\x8c\x4b\xdf\x5c\ \x44\x72\x71\x9a\x6a\x47\xda\xa0\x06\x5a\x07\xf5\x0f\xc3\xf7\x52\ \x51\x14\x3c\xbb\x27\x8e\xc0\xdc\x1a\x6e\x4f\xae\xe0\xf8\xd1\x7e\ \x1c\x39\x3a\x84\xc1\xbd\xfb\xe0\x55\x65\x74\x76\x76\x62\xb5\xb2\ \x50\x6d\xab\x00\x21\x42\xd8\xa6\x4d\x9b\x70\x60\x57\x2f\xee\x4c\ \x4d\x60\x39\x67\xe2\x89\xde\x3e\xc4\x6a\xa0\xdb\x62\xdb\x0c\xa1\ \x50\xca\x6b\xab\x00\x59\x96\x79\x1a\x86\x87\x87\xa9\x16\xf8\xba\ \xa3\xa3\x03\xa6\xae\x08\x61\x9c\xdc\xb0\xa9\x5e\xa8\x57\xb4\xa9\ \x0f\x08\x84\x42\x21\xc4\xe3\x71\x9e\x86\x72\xb9\x4c\x35\xc3\x53\ \xe1\x54\x25\xe8\x26\x60\x3b\x1c\x30\x18\x40\x7a\x98\x0b\xb4\x35\ \x02\x54\x7c\x24\x80\xf2\x4b\x91\xa0\xb5\x6d\xdb\x98\x48\x27\xe1\ \x56\x79\x87\x84\xe9\x70\x72\x98\x5c\x44\x9b\x23\x40\x57\x2d\x1c\ \x0e\x63\xeb\xd6\xad\x88\xc5\x62\x88\x46\xa3\x3c\x05\x90\x02\x30\ \x98\xc4\x05\x04\xea\x4e\x37\xec\xb6\x0a\x68\x2c\x42\xaf\xea\xc1\ \xf3\x3c\x30\x62\x06\x50\x34\x78\x0a\xb8\x6d\x0e\x53\xdb\x6e\xb3\ \x00\x22\x17\xa3\xeb\xba\x90\x20\xf1\xb9\xc7\xf9\x29\xfc\x7e\x1a\ \x18\xf0\xa8\x00\x68\x36\xf0\x9f\x5c\x43\x02\x79\x2e\xd6\xb2\x2c\ \x41\xb3\x80\x80\xcd\x23\xc0\xbd\xf7\x78\x4d\xb4\x31\x02\xc2\x7b\ \x22\x16\x23\xed\xf1\x37\xc0\xf6\x38\xa1\xc5\x80\xbc\xc6\x53\xc1\ \xe7\x26\x6b\x73\x04\x28\xec\x44\x2c\x0a\x92\xe6\x74\x0d\x5d\x57\ \x46\x41\x03\x5c\x05\xe8\xd9\xcc\x3d\x47\x38\xd8\xc6\x6b\x28\xc2\ \x4e\xa4\x34\xd2\xa3\x24\x04\xf1\x74\x54\x5d\x44\x82\x40\xbc\x1b\ \xdc\xd2\x45\xa0\x33\x44\x51\xaa\xd2\x17\x1a\x05\xb4\x1a\x76\x41\ \x26\x42\x4e\xf7\x9f\x44\x04\x83\x41\x7a\xc4\xf8\x35\xac\x58\xc0\ \xec\x1a\x10\xed\x20\x72\x17\x77\x67\x73\x60\x96\x26\x79\x1e\x0b\ \xd4\x84\xcb\x74\x9c\x7f\x66\x55\x69\x35\xe7\x22\x02\xd4\x7c\x68\ \x4d\x22\x28\x1a\x14\x7e\xea\x8e\x24\x8e\x3a\x63\x39\xb7\x88\x5f\ \xc6\xc7\x90\x79\x94\x00\x24\xd9\xb4\xe4\xee\x05\xa3\xb4\x96\x06\ \x10\x24\x1f\xe8\x38\xfe\xbd\x56\x88\x69\xa4\x9e\x4f\x73\xd3\x34\ \x89\x94\x04\x50\x43\xa2\x91\xef\xcd\x8e\x5d\xc3\xc8\x95\x87\xc8\ \x96\xf4\x45\x25\xa4\x4e\x31\x44\x16\x59\x35\xb8\xc8\xcc\xd4\xf8\ \xcc\x8d\xef\x0a\x00\x22\x00\x98\x0f\x57\xd9\xa8\xc8\x88\x8c\x4c\ \xe4\x5c\xb4\x5c\xea\xff\xba\xae\x43\x55\x55\x12\xc4\x3f\x33\x74\ \x9d\xb7\x62\xe6\x38\xc5\xe5\x8a\xfa\x7f\xdb\xb2\xc7\xad\x7c\x7a\ \x41\xcb\x2f\xa5\x0a\xc9\x89\xac\xef\x75\x27\x00\x0b\x80\x21\x7c\ \x54\x9a\x79\x2e\x44\x08\xaf\xe9\x70\x91\x6b\x12\x42\xcf\x6f\xa9\ \x54\x12\x62\xc9\x7b\x1a\xa9\x35\xaf\x9b\xb7\x7e\xbb\xfe\xf0\xde\ \xf5\x19\x00\x9e\x8f\x2e\x00\x0e\x00\x5b\xd4\x9d\x2f\xc8\x91\xd1\ \x68\x44\x2a\x72\xcc\x51\x28\x14\x88\x80\x3c\xa6\x5f\xbc\x24\x90\ \xf6\xa8\xf7\x93\xf7\x24\x8e\xa3\x5c\x2e\x81\x31\xd3\x75\x99\x15\ \xf2\x43\xad\xfa\x88\xd4\x81\x3e\x0b\xfa\x42\x64\xa1\xa6\xa9\x08\ \xf2\x9a\x22\x10\x89\x44\xa8\xca\xc9\x73\xda\xe3\x8f\x4f\x32\x99\ \xe4\x7b\x73\x73\x73\x18\x1b\x1b\x83\x27\x29\xf6\x6a\x46\xb2\x2b\ \x85\xd5\x02\x1a\xac\x85\x3e\x20\x88\x2d\xd3\x44\x30\x14\xaa\x17\ \xc4\x09\x13\xf7\x13\x98\x7c\x30\x89\xf9\xf9\x79\xa4\x32\x45\xc3\ \xf2\x42\x65\x2b\x10\xcd\x9b\x0e\x56\xca\xf9\x95\x9b\xf9\xf4\x5c\ \xca\xbf\x6a\x9e\x80\x48\x81\x0f\xe6\xaf\xbd\x26\x11\x90\x28\xdc\ \x3c\xa7\x8c\x31\x1e\xf2\x44\x22\x81\xd1\xd1\x51\x4e\x9a\xce\x95\ \x35\x37\x18\xcb\xba\xe1\xf8\x3a\x0b\xef\x98\x35\xb4\xc2\x54\x6a\ \xf6\xee\xc8\xfc\xd8\x70\x12\xc2\x1a\x05\xb8\x44\x2c\x8a\x70\x43\ \x01\xba\xae\x61\x69\x69\x09\x0b\x0b\x0b\x9c\x78\x7a\x7a\x1a\xf9\ \x32\xab\x78\x6a\x7c\x15\x1d\x07\xf2\x88\x87\x1f\x58\xe5\xdc\xaf\ \xcb\x53\x7f\xfd\x9d\x18\xb9\x9c\x05\x20\xfb\x90\xea\x05\x10\xea\ \x05\xf8\x60\x02\x4d\x05\xcc\xcc\xcc\xe0\xf7\x2b\x97\xb0\x96\xd7\ \x2b\x91\x6d\xbb\xd3\xc1\xee\x63\xd9\xe0\xb6\xae\x09\x87\xd9\xd7\ \x4a\xb9\xe5\x91\xab\xdf\x5e\x10\xa4\x02\x92\x40\x83\x80\xe6\x42\ \x68\x5e\x15\x7f\xcf\x1b\xfe\x19\x01\x38\x05\x60\x16\xc0\x55\x00\ \x37\x7f\xf8\xf2\x4c\x5a\xaa\x99\x20\xf2\x89\xd1\x84\xbc\x5e\x04\ \x1a\x84\xd4\xb5\xe2\x7f\x00\x12\xab\x82\xc2\x52\x64\x01\xcd\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\xb6\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\x48\x49\x44\x41\x54\x58\xc3\xe5\ \x57\xcf\x6f\x1b\x45\x14\xfe\x66\x77\xed\xf5\x6e\xb6\x24\xb1\x1b\ \x24\xa0\x6d\x44\x10\x3f\x0a\x14\x81\xa0\x34\x42\xe4\x50\x10\x48\ \x88\xbf\x82\x53\xfe\x01\x8e\x48\xa8\xe2\xc0\x85\x7f\x20\x5c\xb8\ \x72\xe1\x08\x87\x22\x81\x25\x40\x21\x04\x50\x91\x9d\xa4\x2d\x4e\ \x4b\x4c\xda\xca\x8d\x08\x75\x12\xd7\xf6\x7a\xd7\xc3\x7b\x33\xbb\ \x9b\xd4\x3f\xd3\xd6\xd0\x03\x23\xbd\xcc\x6c\xe6\xf9\xbd\x6f\xbe\ \xf7\xe6\xcd\x8c\x90\x52\xe2\x41\x36\x03\x0f\xb8\x59\xf1\x60\x7e\ \x7e\xfe\x5d\xea\x4e\xff\x47\x7e\x97\x17\x16\x16\xbe\xbc\x03\x00\ \x3b\x7f\xe4\xb1\x13\x1f\xce\xcc\x3c\x0e\xd3\x34\xb1\xfa\x93\x8f\ \xb5\xe5\x3a\xf6\xaa\xe1\x7d\x79\xf2\xc6\x4d\x9c\x3c\xed\xe0\xd9\ \x57\xd3\x08\xc3\x10\x57\xae\x5c\xc5\x8d\x6b\xe5\x73\x34\xd5\x05\ \x00\xdf\x7c\x9b\x47\x61\x65\x0d\xd9\xec\x51\xdc\xdc\xb0\xf0\xde\ \xfb\xaf\x8f\x64\xb9\x9f\x7d\xfa\x3d\x6e\x36\x02\x2c\xfe\x90\x47\ \x36\x37\x85\x93\x4f\xcd\x74\x87\x80\x5b\xca\x4a\x61\x62\x22\x8b\ \xdc\xd1\x29\x38\xa6\x83\x4c\x26\x33\x12\x00\xd3\x4f\x3c\x0a\x77\ \xbc\xae\x16\xc6\x3e\x7a\xe6\x00\xb7\xb4\x9d\x81\xe3\xb8\x70\x5d\ \x0f\xb6\x39\x86\x4b\x97\xd6\x49\x83\x54\x52\x69\xc0\xb6\x01\x06\ \x44\x3a\xaa\x4f\xd3\x77\x3a\xad\xe7\x83\x00\xf0\x7d\x92\x26\xd0\ \x68\x00\xcd\x46\xd4\xd3\x77\xcb\xc7\x64\xee\x21\x98\xb6\x89\x17\ \x5e\x7c\x05\xeb\xa5\xcb\xfd\x01\x18\xa6\x41\x62\x91\x98\xfc\x81\ \x33\x67\x5e\x1e\xb2\xb6\x50\x0b\x5b\xb1\xe8\x37\xae\x4b\x03\xb7\ \x4b\xeb\xfc\xf9\x35\x65\x53\xdb\x16\xfd\x01\xb4\xc3\x36\x49\x88\ \x30\x20\x69\x07\x3a\x04\xac\x2f\x05\x75\x52\x8d\x25\x8f\x55\x2f\ \x75\xcf\x3f\xe4\x29\x35\xa6\xb9\xa8\xac\x90\x1a\xb4\x2b\x89\x80\ \x6c\x99\x64\xb7\xad\x44\x0e\x00\x40\x46\xc3\x76\xa8\x85\x40\x14\ \x8b\x7f\x68\x8a\x6d\x8a\x9b\x4d\x74\x3b\x24\x19\x3b\x12\x1a\xa7\ \x53\x9c\x38\x44\x33\x87\xa0\x45\x94\x53\x18\xea\x1c\x06\x92\xba\ \xaf\xbf\x9b\x2d\x65\x0b\x96\xb6\xdb\x96\x03\x00\xc8\xb6\x44\x5b\ \x09\x31\x21\xdb\x98\x9b\x7b\x69\x78\x86\xb1\x41\xa6\x5f\x85\x80\ \x18\x9b\xec\x56\x59\x29\x94\x21\xd8\x26\xd9\x66\x1f\x7d\x01\x68\ \x42\xa5\x36\x4a\x62\x73\xe2\x45\x4d\x45\x82\xff\x0a\x45\x34\x92\ \x12\x2e\xa2\x9f\xed\x0f\xf4\x3c\xc7\x42\xea\x71\x6c\x2f\xb1\xdf\ \x1f\x80\xd0\x22\xb4\xfc\x52\x2c\x43\x5a\x06\x44\xda\xd2\x74\x33\ \xf5\x71\x38\x6c\xde\x1d\x1c\x02\x5a\x39\x51\x2c\x29\x0c\xa2\xa1\ \x29\x57\x42\x63\x49\x61\x11\x7e\x90\xd8\x4b\xec\xf7\x03\x20\x12\ \xdf\x02\xde\x44\x0a\x67\x5f\x7b\xfe\x70\x1b\x9d\x77\x0d\x83\xf2\ \xdc\x9e\xd3\x17\x96\x7f\xa5\x5d\x29\xf6\x71\xf4\x65\x40\x08\xe5\ \x5c\x08\x03\xc7\x8f\x4f\xd1\x02\x53\x23\x29\x44\x6c\xab\x54\xda\ \x55\x76\x3b\x11\x74\x30\x20\x60\xd0\xfe\x37\x0c\x01\xd7\x71\xf0\ \xf3\x85\x55\x8c\x1f\xf1\x54\x7d\xb8\x97\xc6\xdb\xba\xba\xbb\xa7\ \x6c\x19\x86\xa1\x44\x0c\x02\x60\xf0\xea\x0d\xa1\x14\xaf\x5d\xaf\ \x60\xeb\xaf\x6a\x12\x1a\xc8\xfd\xf4\x39\xf8\x2d\xa2\x1c\x43\x57\ \x74\xf7\xd3\xba\x49\x95\xd1\x64\xe7\x6c\x7b\x20\x03\x4a\xc1\x88\ \xd0\x9a\xea\x54\x1c\x45\x33\xc9\x96\x60\x66\x85\x06\x31\x24\x04\ \x86\x72\xbc\x71\xb5\x84\xcd\xcd\x32\xea\xf5\xda\x7d\x39\x77\x9c\ \x31\x1c\x3b\x76\x02\xb9\xa9\x87\x0f\x13\x02\xbd\x7a\xa6\x8b\x2b\ \xd6\xc7\x1f\x7d\x80\x9d\x9d\x1d\xd4\x6a\x35\xb4\x5a\xad\x04\xa0\ \x45\xd5\x31\x16\x4e\x54\xee\x19\x34\xcf\xa9\xd8\x53\xd1\xf1\xe9\ \x70\x8a\xe5\xf3\x2f\xbe\x52\x36\x59\xd8\xc7\x10\x06\x38\x0f\x0c\ \x4c\x66\x73\xc9\xff\x17\x17\x17\xb1\xb4\xb4\xa4\x1c\x70\x01\x9a\ \x9d\x9d\xa5\x2a\x39\x77\x68\x16\xd8\x96\x88\x72\xa0\x93\x01\xa3\ \x13\x40\x9c\x84\x0e\x65\x6e\xdc\x8a\xc5\x22\x9d\xe5\x74\x4f\xc8\ \xe5\x94\x14\x0a\x85\x21\xd5\x59\x76\x84\xc1\x49\x16\x26\xc4\x90\ \x42\xa4\xc3\x20\xd4\xa9\x17\x37\x97\x8e\x59\x3e\x19\x63\x8a\xe3\ \xbe\x5f\xeb\x5a\xa5\xd2\x97\x3d\x77\xc9\x9d\x0c\x20\x42\xc8\x20\ \x0e\x18\x39\x98\x3c\xdc\xdf\xf5\xee\x88\xb6\xac\x8c\x0e\xb9\x01\ \x95\xf0\x40\xd9\xee\x89\xf7\xde\x1a\xdf\x2d\xf8\x2e\xe0\xd3\x8d\ \x89\xa5\x2f\x03\x41\xe0\x53\xd1\x68\xd2\x8d\xaa\xa1\x32\x7b\x64\ \x8d\x96\xbf\xbb\xb7\x8b\x4a\xe5\x06\x6e\xfd\xbd\xdd\x1f\xc0\xed\ \xbd\xdb\xd8\xa9\x56\x95\x92\x21\x46\xf8\x62\x92\x21\x36\xd6\x4b\ \x28\x5d\xbe\x48\x87\xa9\x95\xe7\x77\x41\xcf\x10\xd4\x9b\x75\x6c\ \x6d\x55\xe8\x74\x0d\x70\xc4\x1b\x43\xfe\xbb\x1f\xe1\x79\x1e\xce\ \xbe\xf9\x4e\xd7\x39\x5e\xde\xac\x0c\x4a\x43\xd2\xa6\xdb\x15\xd9\ \xd9\xde\xbe\xc5\xef\x00\xac\xac\xfc\x46\x97\xa8\x54\xfe\x99\xa7\ \x9f\xfc\x84\x14\xf2\x3d\x01\x5c\xdf\xfc\x13\xbf\x5f\x5c\x55\x49\ \xf7\x35\x85\xa0\x33\x9b\xef\x7a\xe1\x52\xdf\xae\x42\xba\x35\x4f\ \x4f\x4f\xe7\x4f\x9d\x7a\x4e\x39\xa7\x57\x51\xad\x17\x80\xe5\xb7\ \xdf\x7a\xe3\xdc\xbf\xf9\x1c\xeb\x74\xae\xb8\xfa\xdf\xbf\x8e\xff\ \x01\x8c\xae\xac\x22\x42\x7f\x21\xa9\x00\x00\x00\x00\x49\x45\x4e\ \x44\xae\x42\x60\x82\ \x00\x00\x06\x4b\ \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\x06\x12\x49\x44\x41\x54\x58\xc3\xc5\x57\x6b\x6c\x14\x55\ \x14\x9e\xc7\x0e\xd3\xdd\xa5\xd3\x2e\xee\x42\x61\xb7\xa5\xd1\x02\ \x05\x5a\x7c\xd4\x14\x81\xb4\x40\x25\xc6\x07\xa1\x4a\x78\x04\xf9\ \xa1\x09\xf2\x03\x48\x08\x89\xc1\xa8\x18\x88\xd1\x80\xf1\x8f\x1a\ \x81\xd8\xa0\x31\x3e\x80\xc4\x90\x62\x09\x91\x34\xbc\xc4\x86\xca\ \x2b\x3c\x22\x50\x52\x08\xb4\xdb\x2d\xad\xb4\x74\xed\x76\x67\x76\ \x67\x67\xef\x8c\xe7\xec\xdc\x85\x71\xbb\xbb\x6c\xcb\x0f\x6f\x72\ \x32\x3b\x77\xee\xbd\xe7\xbb\xe7\x7c\xe7\xb1\xac\x61\x18\xcc\xff\ \x39\x6c\xa9\x13\x0b\x57\x7d\x5c\x07\x8f\x65\x29\xd3\x6d\x20\x21\ \xcb\xbb\x04\x32\x3d\xcd\x79\x21\xba\xf6\xdc\xc9\xfd\xdb\xda\x46\ \x05\x00\x95\x6f\x79\x7f\xcd\x6a\xeb\x84\xbf\xab\x57\x51\x94\x08\ \x49\xbe\x3b\x1d\x76\xbe\xb8\xb8\xc8\x91\xba\x51\x51\xa2\xc4\xdf\ \xd5\xa3\xfc\x75\xf5\x56\x08\x2e\xf2\x3b\x4c\x1d\x00\x20\x27\x46\ \x0a\x20\x31\x26\x4d\xf2\x38\x6d\x82\xc8\xc7\x34\x86\xf1\x78\x7c\ \x52\x5c\x37\xe7\x59\x16\x36\xf1\x0c\x23\xc0\x4e\x1b\x08\x07\xef\ \xe8\xc5\x78\x9c\x61\x34\x90\xd2\xd2\x32\xd7\x82\x05\x35\xde\xee\ \xee\x80\xb7\xf1\xe0\xd1\x05\x00\x64\x27\x80\xd8\x9d\x49\x0f\x9b\ \xca\x01\x8b\x0b\xca\xa7\x4e\x29\x29\x5a\xbe\x6c\xf1\xe4\xfc\x02\ \x8f\x43\x8d\x99\x8a\x50\xa9\x5d\x64\x98\x96\x96\x96\xee\x5f\x9b\ \x4e\xf4\xe2\x1e\x58\xe7\x98\x39\xa3\x4c\x9a\x0f\x8a\xa3\x2a\xc3\ \x10\x9d\x02\xe4\x54\xf2\x4d\xc3\xbe\xf6\xf6\x9b\xfe\x1d\x00\xe2\ \xa7\x9c\x00\xa4\x80\xa9\x9f\x38\xd1\xfd\xe9\xa6\x4d\x1b\x2a\xc2\ \x0a\xdc\x12\x9c\x90\x07\xca\x83\xfd\x81\xd0\x97\x5f\x7d\xb7\x17\ \x96\x6c\x86\x83\x65\x58\x87\x7c\xa8\x9f\x37\xf7\xd9\xb5\xf5\xaf\ \x2f\x79\x52\x8e\x98\x60\xed\x79\x30\x4b\x42\xea\x07\x5b\xbe\x68\ \x86\x75\xf5\xe9\x74\x70\xd9\xfc\x03\x9b\x9a\x7a\x7a\xfa\x55\x0e\ \x4c\x8e\x30\x75\x8a\x95\xe5\x1e\x7c\x97\xe9\xb3\x0d\xe4\xb3\xd3\ \xad\x97\x5a\x07\xee\xf7\x29\xe8\xa6\x18\xb8\x43\x89\x82\x25\xf2\ \x24\x11\x80\x55\x00\xc8\x45\x23\x06\x60\x1d\x68\x56\x42\x4c\x10\ \xa8\x20\xc3\x38\x76\xad\xed\x46\x10\xbf\x23\x67\x90\x3f\xe8\x3a\ \x8f\xc7\x05\x76\x63\xbc\x23\x22\xa1\x75\xa0\x52\x5d\x37\x0f\x45\ \x20\x7a\x96\xd4\xc1\x26\xd7\x83\x05\x18\xde\x5c\x9f\x2d\xd3\xe4\ \x64\x81\xb8\xf1\x50\x79\xd2\x0a\x19\x86\x57\x72\xb9\x44\x34\x7f\ \x9c\x02\x45\x77\x85\x95\x28\xc2\x19\x1a\x35\x00\x83\x2a\xc7\x50\ \x43\x22\xa6\xe3\x2d\xf8\xd8\x09\x8f\xd9\x93\xbc\x25\xf9\x68\x7a\ \x8c\x5a\x8c\x18\xc6\x50\xc9\xd9\x3f\x2f\x07\xd1\x3d\xa3\x76\x01\ \x2a\xd7\xd0\xa7\x84\x4a\x7c\x98\xf2\x6a\x78\x2c\x7a\xf9\xb5\xba\ \x2a\x4e\x90\xc4\x28\x90\x6f\x8c\x00\x09\x0b\x20\x1d\x3e\xd4\xdc\ \x19\x0e\x2b\x7b\x80\xa4\xa1\x51\x03\x48\x98\x9f\xde\x3e\x06\xa4\ \xc2\x58\x87\x51\x0d\x8a\x2f\xe0\x8f\xca\x59\xe5\xd2\x8c\xca\x99\ \xae\xc9\x4f\x55\xb8\x87\x64\x93\xa4\x2c\xaf\x92\xdf\x9a\x9a\x3b\ \xcf\x9e\xb9\xb4\x27\x5b\x22\xca\x99\x84\x08\x02\x33\x9d\x0a\xc4\ \x2a\x70\xfb\xa4\xad\xdb\xb7\x55\xd9\xed\x66\x26\x44\x40\xb2\x82\ \xbe\x36\xd7\x0c\x40\x9e\x38\x72\x70\xff\x6d\x45\x56\xf6\xc0\xf6\ \x9f\x99\xc7\x25\x21\x49\x02\x20\xa6\x15\xa2\x51\x95\x04\xba\x02\ \xa1\xae\xce\x40\xc8\x0f\x72\xb7\x3b\x10\x12\xc6\x40\xcc\x83\xd9\ \x31\x67\xb8\x27\xf8\xa4\x35\x1b\x36\x56\xbe\xf4\x6a\xdd\x87\xce\ \xb1\x8e\x53\x98\xd0\x1e\xcb\x02\xa8\x1c\x15\x23\x17\x30\xce\x86\ \x06\xfb\xe4\xfd\xdf\x27\x32\xa1\x75\x54\xd7\x2c\x9c\xeb\x7e\x6e\ \x4e\xad\x2f\xa6\x89\x7c\x34\x2e\xf2\xd3\x9e\xae\xf1\x96\x95\x97\ \xbb\x8e\x34\x1d\xde\x01\x20\xbc\xe9\x5c\x91\x33\x09\xe3\x34\xb4\ \x30\x00\x6c\xc2\x83\x4c\xb8\x3e\x85\x8c\xeb\x2f\x9e\xbf\xbc\xf6\ \xed\xf5\x1b\x2b\xd5\x98\xc8\x87\x81\x0f\x0e\x87\xc7\xb1\x74\xf5\ \x9b\x53\x7f\x6c\xf8\x76\x1d\x7c\xbf\x91\x5a\x1d\xb9\x91\x44\x01\ \x12\x51\xb7\xa4\xe2\x34\xa9\x7b\xb7\x0c\x8c\xbf\x7c\xfe\x8f\x00\ \xba\x23\x02\x84\xed\x87\x00\x0c\x0e\x89\xfc\x92\x15\xf5\x25\x69\ \xfa\x8c\xdc\x00\x20\x09\x89\x85\x03\xd9\x32\x21\x82\x38\x7d\xb2\ \xb5\x5f\xcc\x33\xdd\x85\xf5\x60\x30\xcc\x30\x63\x5d\x3e\x09\xf8\ \x30\x07\xac\x20\x8d\x3c\x13\x52\x0e\x68\x49\x37\x3c\xba\x8b\x3b\ \xd7\xd7\x1b\x08\xa1\xbf\x70\x4f\x04\x40\x28\x50\x21\x8b\x4b\x4b\ \x30\x59\x95\x8f\xca\x05\x08\x20\x4e\x2d\x41\x72\x68\x23\x0d\x9a\ \xc2\xd1\x6a\x49\x31\x46\x9d\x8a\x0d\x4b\x24\x24\x5c\x60\x40\x1f\ \xa1\xb3\x30\x78\x8b\x70\x49\xc1\x5b\x3a\x0b\x3c\x4e\x4c\x5a\xb8\ \x87\xa1\x35\x01\xf2\xc2\xb0\x9a\x90\x11\x00\x6b\x0e\xf8\x6e\xb0\ \x49\xdf\x27\xda\x2e\xfd\x41\x3d\xc0\xbd\x42\xaa\xcc\x5b\xfa\x5e\ \xb5\xaf\xb4\x78\x22\x86\x21\x92\x10\x49\xcb\xd9\x90\x0e\x2a\xe9\ \xba\xe3\xef\x4d\x6d\x56\x6d\x99\x94\x9b\xc5\x94\xe1\x40\x11\x8b\ \xc5\x45\xb3\xa4\x62\xec\x09\x0d\xa2\xa1\x42\x87\xc5\xe2\x09\xe1\ \x38\xdb\xca\x59\x2f\xd4\x14\x0d\xc2\x3d\x55\x0d\xdb\x32\x0c\x45\ \x86\xe9\xeb\xbe\x99\xb6\x20\x71\x59\x94\xdb\xe6\xd4\xbf\xbb\x14\ \x6e\xe3\x0c\x47\xcc\x02\x84\xb7\xc7\x5b\xf1\xf6\xf1\x0e\x87\x94\ \x3f\xfb\x99\xba\xb7\x5e\xa1\x2d\xba\x54\x51\xbb\xaa\x76\xee\x1b\ \x9b\xb7\x3f\x5f\x5b\xbb\x4c\x2c\x9c\x52\x98\xa8\x09\xf0\x21\x1f\ \xbe\x16\x8c\x55\x49\xeb\xf1\x53\xd8\x3f\x1e\xc8\xda\x13\xa2\xf2\ \xda\x15\x1f\xbd\x08\xb8\x96\x03\x8c\xe9\xde\xc9\x25\x45\x55\x75\ \x8b\x7d\x91\xf8\x04\x3b\xde\x08\xad\x80\x3d\x61\x21\x1c\xca\x6a\ \x9d\x72\xc7\xb5\x0b\xff\x5c\xbd\x70\x11\xab\x9c\x51\x36\xa3\xdc\ \x39\xbd\xaa\xda\xe5\x18\x37\x4d\x0a\x0e\xc2\x5a\x0d\xdb\x77\x48\ \xcb\x85\x2a\x39\xde\xb8\xf7\x56\xf7\x9d\x8e\x5d\xa7\x7e\xf9\x64\ \xa7\x91\xd2\x84\xa6\x02\xe0\xe6\xaf\xdc\xba\x6b\xd5\xba\x77\x56\ \xbb\x27\x8c\x77\xc4\x88\xc8\xa3\x62\x2c\x34\xe8\x7f\x5c\xca\xf3\ \x66\xa9\x45\xb3\x3a\xa1\x18\x89\xa2\xb9\x17\x5b\x2f\x45\x31\x43\ \x0e\xbb\xa7\x3c\xc8\x03\x5a\xc8\x1f\x6e\x3d\x76\xb4\xc7\x7f\xab\ \xbd\xe1\x74\xe3\xe7\x5f\x27\x02\xc3\x30\xf4\x47\x72\x00\x21\xdd\ \xeb\xfd\x3b\x02\x1a\x59\x0c\x3b\x35\x18\xd4\x42\xc1\x01\x0d\xdf\ \x13\x76\x85\x05\x85\x4f\x8c\x13\xb4\x71\x2e\xe1\x61\xb6\x82\x08\ \x81\x87\x16\x8d\x92\x7b\x77\xef\x46\x3b\xda\xdb\x65\x7f\xfb\xcd\ \x33\x4a\xf8\xfe\xa1\x2b\x27\x7e\x68\xce\x44\xf8\x61\x00\x74\x12\ \x6f\xdc\xb7\xab\x41\xd0\x09\xb1\xe9\x7a\x5c\x30\x74\x22\xc4\x55\ \x79\x40\x8d\xc8\x03\x06\xa3\x73\x09\x10\x10\x01\x42\x9e\xd3\x2d\ \x08\x79\x6e\x6a\x3a\x83\x36\x84\x86\xae\x13\x39\xa6\x84\x6f\x0f\ \xf6\x75\x5c\xe9\xbc\xde\x72\x1d\x66\xc3\xd9\x42\x7c\x98\x0b\x28\ \x52\x34\xac\x93\x8a\x9d\xbe\x0b\xf4\x1b\x4f\x9f\x6c\x8a\xd1\x74\ \x8b\x60\xbc\x83\x53\x18\x70\x08\x23\x53\x10\xd1\x5c\x5c\x90\x0c\ \x27\xb4\xa6\x4a\x95\x10\x7a\x98\x6d\x04\x00\x12\xde\xa0\x67\x44\ \x28\x20\x9d\x49\x93\x0c\x6d\xff\xcd\x78\x60\x5f\x96\x4d\xde\x80\ \x7a\x36\x71\x90\xcd\xa2\x98\xcb\x00\xc0\x48\x01\x90\x04\x91\x14\ \xdd\x48\xf3\x37\xec\x5f\x35\x1d\x2c\x65\x8c\x04\xaa\xe9\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\x8c\ \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\x04\x53\x49\x44\x41\x54\x78\x5e\xc5\x96\x5d\x68\x1c\x55\ \x14\xc7\xcf\xcc\xec\xce\x64\x66\x3f\x92\x98\xe6\x63\x3f\x66\xcd\ \xd6\x45\xb3\x56\x24\x62\x49\xaa\x35\x48\x84\x44\x6c\xad\x51\x8c\ \x85\x22\xea\x9b\x8f\x42\xdf\x4a\xfb\x20\x3e\x14\x34\xe0\x8b\x0f\ \xbe\xe5\x45\x10\x41\x82\x0f\xd2\x3e\xd8\x94\x4a\x7d\xa8\x28\x45\ \x21\x5a\x9b\x54\x1b\x93\xcd\x26\xbb\x6b\x43\x5b\xb2\xbb\xb3\xb3\ \x33\x7b\x77\x3c\x97\x39\xb0\x83\x84\x4d\x9b\x76\xe2\x81\x1f\x97\ \xbb\xec\x3d\xf7\x3f\xe7\xe3\xde\x2b\x38\x8e\x03\xff\xa7\x05\xe0\ \x3e\x6c\xfc\xc4\x47\x31\x1c\xa6\x91\x2c\xb4\x6c\x0b\xb9\xee\x99\ \x27\x90\xa4\x67\x3e\xf7\xfd\x57\x1f\x5e\x7a\x60\x01\xc4\xf4\xbb\ \x6f\x1f\x3d\xad\xeb\x03\x1a\x9f\xf0\xe0\x19\x86\xc9\x72\x6b\x05\ \x43\x10\xdc\x05\xbd\xfb\xba\x95\x9e\x9e\x2e\x19\xc8\xce\x7e\x3c\ \xcb\x87\x87\x24\x80\x88\xc7\x7b\x43\x41\x49\x91\x4c\x1b\xa0\xd1\ \x00\xd0\xf5\x4c\x37\x88\x00\x22\x8a\x90\xd0\x63\x10\xe9\x40\x09\ \xf9\x8d\x5b\x06\x00\x44\x1e\x4a\x0a\x88\xb9\x2f\xbe\x3c\x0f\xc8\ \x1b\xcf\x0c\x0f\x25\xa7\xa6\x5e\x49\xc9\x4a\x54\xb1\x50\x08\x8f\ \x40\x30\x88\x0e\xed\x3a\x3b\x7f\xe9\x87\xfc\x77\x17\xae\x6c\x52\ \x6a\xe6\xa0\x8d\xed\xaa\x08\xa9\x1e\xde\x3b\x76\xec\xa5\xb3\xa3\ \x87\xc6\x12\x35\x13\x40\x92\x00\x34\x15\x63\x7d\x71\x7e\xf5\xc2\ \xfc\x95\x19\xcc\xfb\xe7\x70\x0f\x26\xc2\xee\x2d\xab\x27\x63\x1a\ \xd7\xcf\x01\x01\x40\x0e\x00\xe0\xe6\x9b\xad\xcd\xfd\x15\x30\x92\ \x4a\xe9\x51\x9b\x01\x30\x14\x20\xa1\xa7\x7c\x3e\xcf\x3b\xe2\x67\ \x04\x7c\x13\x40\xe1\xcf\x66\x32\xa9\x01\xc0\x42\xe4\xf9\x6f\xa2\ \x00\x01\x3d\x15\x8a\x45\x83\xf2\xee\xcb\x39\xe0\x25\x9b\x4e\x27\ \x35\x8b\xba\xc0\x11\xdc\x0e\x58\x5d\xdd\x68\x09\xf0\x39\x05\x43\ \xb1\x44\x2c\x54\xb7\x00\x6c\x46\x8e\x24\x80\x85\x85\x25\xff\x53\ \x40\x8c\x26\xf5\x54\xc4\xe4\x02\x1a\xae\x97\x4a\x65\xab\x5e\xa9\ \x18\x39\x2c\xc0\x2d\xdf\x52\x40\xf9\x4f\xf4\x0f\xec\xdb\x2f\xab\ \x51\xa5\x7c\x87\xe7\xdf\x0d\x7f\x2e\x97\x2b\x03\xc0\x4f\xbe\xde\ \x05\x44\x76\x30\xad\x6b\xf5\x3a\x80\x65\xf1\xa9\xdb\x01\x1b\xf9\ \x42\x15\x27\x8b\x7b\x22\x20\x91\x8c\x6b\x3c\xfc\x16\x73\x8f\x5d\ \x11\xb9\x76\xed\x46\x2b\x02\x3e\xd7\xc0\x48\x5c\x7f\x34\x6a\xd6\ \x01\x6c\xdb\x5d\xc0\x58\x9d\x95\x8a\x9b\xb7\x30\xff\xeb\xbe\x09\ \xa0\xfc\x47\x43\x61\xed\xa9\x70\x57\xaf\x56\xb3\xdc\x03\x48\x0c\ \xf0\xf0\xaf\xb5\xaa\xdf\xe7\x08\x0c\x0d\xa6\x53\xa1\x5a\xcd\xcd\ \xbf\x43\x05\xf8\x4f\xb1\x40\xfd\xef\xbf\x80\x6c\x22\x15\xd7\x6a\ \xd4\x7e\xdc\x02\x01\x80\xa5\xeb\x7f\xed\x59\x04\x46\xe3\x7a\x3a\ \xc2\x6f\x3f\x8b\xfa\x3f\x28\x03\xac\x2c\xe7\x0c\xcc\xff\x9e\x44\ \x60\xa4\xab\x37\xc9\x0b\x10\x18\xe3\xed\xc7\xc3\x4f\x17\x90\x5f\ \x6f\x42\x01\x8d\x8f\x63\xd3\xa7\x9f\xdc\xff\x78\x46\x33\x4c\x00\ \xde\x82\x0c\xdc\xd7\xcf\xfa\xcd\xbf\xcb\x4e\x93\x5d\xc5\xbf\x79\ \xa3\xe9\x20\xe0\xa0\xed\x5a\x00\x6d\x4c\x80\x88\xd3\x43\x8f\x3d\ \x91\x89\x72\x01\x96\x45\x4f\xaf\x20\x40\x7e\x75\xbd\x66\x99\xc6\ \x9f\x80\xd3\xd6\xe6\x2e\xb8\xa6\xb9\x93\x18\xb1\xcd\xe6\x12\x09\ \x94\x39\xb8\xfa\x40\x67\xcf\x80\xdb\x01\xfc\x06\xa4\x0b\x68\xf1\ \xb7\x3f\xaa\x3f\x7e\xfb\xe9\xef\x38\x55\x91\x0e\x42\xa1\x75\x41\ \xf2\x23\x70\xdb\x5e\x40\xfb\xcd\x15\x44\x7d\x76\xf2\xfd\x97\x43\ \xe1\xf0\x64\xa8\x3b\x15\x31\x6a\xee\x15\xcc\x18\xcf\x7f\xa9\xc6\ \x98\xbd\xfc\x48\x2c\x33\x00\x00\x51\x7a\x80\x86\x91\x10\xa2\x91\ \x18\x99\xfc\xed\x2c\x80\x54\x8a\x48\x60\xf4\xd5\x0f\x26\x5e\x78\ \xf3\xd4\x67\x63\x6f\x9d\x39\x37\x34\x7c\x70\xe6\xe8\xf1\x13\x83\ \x75\x4b\x91\x98\xe3\xbe\xff\xb8\xa9\xe1\x7e\x75\x6c\x62\xf2\xf0\ \x81\xc3\xc7\xe7\x9e\x7b\xed\xe4\x0c\x8e\x13\x00\xd0\x49\x44\x48\ \x88\x42\x91\x10\xc9\x7f\xdb\x1a\x10\x38\x4f\xbf\xf8\x8e\x9e\x4c\ \x67\x3e\x39\x32\x3d\xa5\xf7\xc5\xfa\xd5\x26\x28\x52\xb5\x0a\xc0\ \xbf\xbe\x0b\xe5\x35\x99\xfb\x02\x0a\xa0\xdb\xe1\xe7\xc7\xfb\xc6\ \x8f\x8c\xf7\xe5\x96\x57\x06\xcf\x7d\xfd\xcd\xc1\xcd\xf5\xc5\x93\ \xa5\x95\x85\x0d\x00\xb0\x3c\xfe\x19\xd2\x40\xa8\x26\xda\x17\xa1\ \x10\x90\xe5\xce\x0e\x4d\x0b\x38\xe0\x08\xa5\x42\xd1\xe4\x6b\x4c\ \xc3\x6c\x16\xf2\xeb\x75\x2a\x33\x50\x54\x55\xea\x8f\xc7\x95\x2d\ \xfc\xa5\x7c\xdb\x5d\x68\x54\x0c\xa8\xde\x2d\x35\x28\xf4\x22\xd2\ \xf4\x08\x11\xef\xb9\x0b\x7e\x99\x9f\xbd\xe1\x38\x70\x66\x79\x69\ \xf1\x75\x6c\xb1\x20\x38\x4d\xa9\xd1\xb0\x4d\xb3\x7a\x67\x0d\x1c\ \x47\x40\x01\xa2\x14\x90\x35\x45\x8d\xa4\x28\x77\x0e\x1f\x6e\x17\ \x6f\x5e\xae\xdc\x2d\x19\x0f\x7a\x0e\x38\x08\xfb\xf5\xe2\xec\x65\ \x1c\xaf\x22\xaa\x37\x8f\x88\x44\xa3\xf0\x9f\x35\x4d\x0f\x0d\xc4\ \x22\xec\x56\xf8\x77\xee\x02\x87\x60\x48\x1d\x31\x90\x0a\x52\x46\ \xb6\xee\x83\x32\xad\xab\x22\x35\x6f\xfe\xdb\x46\xc0\x41\xa3\xc3\ \xa3\x81\x00\x2d\xb2\xe9\x7f\xf4\xe5\xc8\xf6\x11\xf0\x46\x81\x11\ \xb6\x87\xe6\x76\x87\xd1\xbf\xd9\xa8\xcd\x40\xb9\x85\xa0\x1e\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\x9f\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\x31\x49\x44\x41\x54\x58\xc3\xc5\ \x97\x6d\x4c\x53\x57\x18\xc7\x2b\xea\xe2\x66\xc6\x32\x63\xb6\x6c\ \xdd\xa6\xcb\x26\x51\x37\xa3\x21\x99\x9a\x4d\x0a\x53\x96\x6c\x3a\ \x27\x43\x04\x8d\x1f\x8c\x73\x59\x36\x40\x5e\x12\x4d\x46\x15\x30\ \xbe\x47\x97\xbd\x32\xac\xca\x00\x87\x51\x51\x37\x40\x93\x81\x18\ \xa1\x2d\x60\x47\xa1\x2f\x58\x79\x47\x81\x16\x07\x14\x8d\x54\xd3\ \x84\x25\x24\x8f\xff\x07\xee\x35\xb5\x96\xd2\xde\xfb\xc1\x0f\xbf\ \xdc\x7b\xcf\x39\xcf\x39\xbf\xf3\x9c\x73\x7b\x4f\x15\x44\xa4\x78\ \x96\x3c\xf1\x10\xb5\x71\xcf\x4c\xf0\x3d\x68\x14\x28\x02\xb9\x5e\ \x88\x75\x7c\xbf\xd2\x2b\x3e\x0c\xa8\x85\xfa\x32\xaf\xb8\x32\xa1\ \x9c\xeb\xc3\x26\x12\xd8\xf2\x5b\xb1\xbe\xaf\xfb\x21\x11\x53\xdb\ \xee\x74\x57\x5a\x1c\xae\x0a\xb3\xc3\x75\x05\x5c\xb5\x3a\x5c\x62\ \x1d\xdf\x73\xc7\x5e\xf1\xea\x73\xd7\x6c\x43\x5c\x6f\xb6\xbb\x46\ \xb8\x8d\x08\x3f\x73\x39\xd7\x73\x3b\xbf\x19\xd8\x94\x9e\x63\x3b\ \x9c\x5f\xd9\xa3\x6b\x71\xba\x9b\x06\x88\x4c\x0e\x22\xcb\x1d\x22\ \xeb\x9d\x91\xd1\x5f\x21\xf8\x4d\x66\x7e\x8b\xbf\x0c\x88\xf1\x35\ \x6d\x4e\x77\xc7\x7d\xa2\x1a\x4c\x84\x9f\xb9\xdc\x6f\x06\x3c\x3a\ \x52\x82\x58\x0e\x68\xec\x23\xaa\xbb\x45\x54\xdf\x4b\x74\x30\xaf\ \xb2\x07\xe5\x89\x60\x81\xbf\x75\x15\xe3\x59\xb4\xeb\x01\x91\x30\ \x70\x2c\x97\xfb\xdd\x03\x3e\x3a\x6a\x34\x61\xe6\x35\x5d\xe3\x02\ \xe9\x87\xcf\x75\xa0\x6c\x69\xa0\x1b\x8c\xe3\x3b\x5d\x44\x7c\x0d\ \x68\x13\xfa\xea\xa0\x11\x02\x3a\x08\x18\x20\x90\x26\x41\xa0\x7d\ \x58\xa6\x80\x11\x4b\x50\xd5\x81\x65\xe8\x21\x4a\x95\x20\xd0\x2a\ \x57\xc0\x80\x0d\x78\xb5\x8d\x48\x7f\x1b\x02\x87\x82\x17\x68\xbe\ \x2f\x53\xa0\x16\x33\x2f\x6f\x26\xaa\xee\x24\x4a\x91\x20\x60\xbb\ \x27\x53\x40\x87\x99\x5f\xb6\x21\x0b\x58\x86\xed\x07\x83\x17\xb0\ \xde\x95\x29\x70\x0d\x1b\xb0\xd4\x4a\x54\xd1\x2a\x4d\xc0\x3c\x24\ \x53\xe0\x0a\x66\x7e\xc1\x84\x2c\x60\x19\x92\x25\x08\x34\x38\x65\ \x0a\xfc\xd3\x4e\x74\xb6\x81\xa8\x04\xcb\x90\x74\x20\x78\x81\xfa\ \x41\x99\x02\x97\x5b\x88\x8a\xfe\x25\xba\x88\x65\x48\x94\x20\x70\ \x7d\x40\xa6\x40\x29\x52\x5f\x70\x1d\x1f\x11\x33\xd1\x77\x12\x04\ \x6a\xfb\x65\x0a\xfc\x75\x93\xe8\x44\x2d\xd1\x69\x74\xf1\xad\x04\ \x01\xdd\x7f\x32\x05\xfe\xc6\x12\x68\xf4\xc8\x82\x01\xdf\x82\x1f\ \xcb\x6e\xa1\x2c\x3a\xc0\xc1\x95\x71\xa9\x39\xb6\xf2\xae\x91\x51\ \xdc\x57\x49\x15\xc8\x3d\x5e\xe5\x70\x69\x6a\x90\x85\x3a\xa2\xec\ \x02\x7d\x1f\x9f\x19\x02\x14\x88\x4e\x83\x70\x61\xdd\xd3\xe7\x86\ \x60\x04\xb6\xec\x29\xd4\xf7\xe5\x61\xf6\x39\x5a\x48\x68\x9d\x6e\ \x3e\x25\x05\x28\xa0\xfe\xe9\x92\x6d\x88\xe3\xfd\x49\x4f\xd6\x49\ \xe8\xea\x6d\x47\x2c\x7f\x9a\x46\x46\x7f\xc7\x32\xe4\x1b\x89\xd6\ \xa7\x8c\x7d\xdb\xd7\x4d\x12\xb7\x8e\xdb\x55\xd8\x1f\xb7\x57\x4a\ \x12\x10\x3a\x4b\xcc\x42\xea\x4f\xe1\x2d\xd0\xe0\x6d\x38\x86\x2c\ \x40\xca\xaa\x8a\xdf\x1d\xab\x50\x28\xa6\x7a\x10\xc2\x44\x26\x64\ \xc5\x8c\x49\x1b\x9d\xee\x03\xc5\x0d\xfd\x7c\xc2\x0a\xf8\x50\xfa\ \x44\x85\x42\x31\x85\x3b\x0c\xff\xe4\xeb\xd0\xc8\x84\xcc\x5d\xfb\ \xcf\x1a\x07\x4e\xdf\x20\x3a\x65\x21\x3a\x59\x37\xe8\x4e\xfe\xa1\ \xf4\x76\x64\x42\xb6\x59\x15\x9f\x75\x9c\xc1\xc0\x9a\xa8\x8d\xd9\ \xa6\xed\x28\x2f\xac\x1f\x74\x33\xbc\x5c\x11\x1b\x76\xbd\xce\x7d\ \x05\x25\x20\x0c\x3e\x0d\x3c\x07\x9e\x5f\xa4\xda\xfc\x4e\x44\x5c\ \x46\x76\xd2\xd1\x92\xee\x22\xcb\xf0\xff\x17\xf1\xeb\x58\x82\x63\ \xda\xa5\x6e\x64\x45\xdb\xfb\x40\xa3\xb5\x8f\xc1\xcf\xcc\xde\x33\ \xc6\x81\x4f\xbf\x3a\xd2\x84\x98\x38\xa1\x9f\x90\x89\x24\xfc\x0d\ \x3e\x03\xbc\x08\x66\x81\x57\xc0\x6b\x1f\xac\x4e\x4e\x89\x88\x53\ \x57\x6e\xda\x79\xa2\x33\x23\xaf\xba\xff\xe7\xf2\xf6\xe1\xdc\xea\ \xde\x87\x0c\xdf\x73\x59\x4c\xd2\x2f\xad\x1f\xc6\xec\xdc\x3f\x2f\ \xfc\xb3\xf7\x10\xf3\x12\x78\x01\x4c\x67\x89\x49\x05\x84\xc1\xa7\ \x0a\x83\x73\xf0\xab\xe0\x2d\xf0\x2e\x98\x0f\x16\x82\x45\x73\xdf\ \xff\xf8\xcb\x25\xab\xb6\x66\x2d\x5b\x93\x52\xb0\xfc\x8b\xf4\xf3\ \xcb\xd7\xa6\x15\x2f\xfb\x3c\xf5\x8f\xf0\xe8\x6d\x6a\xe5\xbc\xa5\ \x51\x68\x13\x06\xde\x06\x9c\xfe\x97\x05\x89\x69\xbe\xb2\xe0\x2d\ \x10\x22\x34\x9c\xf9\x51\xcc\x8e\x7d\xaa\x0d\xbb\x6d\x58\xc3\x9b\ \x98\x75\x0b\xd2\xd9\xca\xac\x58\x9f\xd1\x36\x11\x62\x9b\xf1\xf6\ \xea\x66\x8e\x57\xc5\x67\x36\x61\x7f\x58\x78\x1f\xf9\xca\x82\x2f\ \x01\x4e\x57\x28\x07\x8a\x7f\x42\x3a\x87\xa5\x23\xf6\xc1\x1b\x36\ \x68\x01\x03\xbe\x64\x8c\x0e\xe7\x42\xad\x80\xce\x3e\xfe\xac\x13\ \xef\xed\x1e\x75\x7c\xf5\x28\xe3\xab\x61\x70\x9c\x60\x04\x9e\xe9\ \x12\x04\xb4\x09\xc1\x62\xb0\xc4\x83\xc5\x42\x39\xef\xfc\x05\x92\ \x37\xe1\x64\xaf\x21\x50\x82\x37\xc1\x1c\x30\xd7\x83\x39\x82\xe8\ \x1b\xc2\xa0\x2c\x3e\x3b\x90\xd7\xf0\x11\x90\xc3\x06\x4d\x55\x03\ \x54\xc0\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\xe8\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x05\x7a\x49\x44\x41\x54\x58\xc3\xc5\ \x96\x0d\x4c\xd4\x75\x18\xc7\x1f\x2e\x01\xb1\xc0\x38\x1c\x6f\x81\ \x61\x9a\x24\x18\x57\x20\x21\xa9\xbc\x1b\xd4\x28\x96\x2d\x93\x36\ \x27\x45\xb9\xca\x88\x4a\xd9\x60\x33\x29\x50\x47\x80\xbc\xb8\xb0\ \x40\x40\x4e\x8e\x57\x89\xe0\x70\x8a\x32\x72\x91\x81\xd3\x39\x60\ \x97\x20\x06\x2c\x25\x85\x89\x16\x2f\xcd\xdd\xb9\xe0\xe9\x79\xce\ \xdf\x7f\xfb\xeb\x4c\x8e\x08\xba\xed\x33\x8e\xdf\xff\x7f\xff\xe7\ \xfb\xbc\xff\x01\x11\xe1\xff\xc4\xb4\x9b\x00\x1c\x89\x08\x62\x23\ \x11\x44\xb8\xce\x99\x00\xfa\xb8\x3d\x09\xb0\x27\x09\xe0\xec\x1e\ \x80\xde\x4f\x00\x5a\x82\x01\x0e\x08\x31\xee\x73\x21\x20\x2a\x19\ \x40\x97\x4f\xb7\xca\x61\x31\x8b\x00\x76\xd2\x75\xcb\xd9\x16\xb0\ \x9d\x0d\xb2\x08\xfe\xce\x46\x39\x1a\x7c\xf6\x16\x40\x1d\x9d\xf9\ \xcc\xb6\x80\x8d\xec\xed\x07\x00\x27\xe8\xfb\xf3\x5c\x0f\x2c\x42\ \x26\x2a\x6a\xd6\x04\x70\x8e\x57\x01\xec\xcb\x03\xb8\x95\xea\xe4\ \xd4\xce\x85\x28\xce\x37\x7f\xe5\xe2\x32\xc4\xc2\x58\xe0\x6c\x0a\ \x30\x7a\xcf\xde\x6a\xfc\xfc\xf4\x22\xe7\xdc\x0d\x9b\x0b\xbc\xbc\ \xae\xcf\x85\x00\x77\xae\x78\xae\x7c\xb5\xa7\xa7\xbe\x22\x34\xd4\ \xc0\x91\x60\x6a\x37\x6c\x40\x29\x2d\x26\x1b\x03\x58\xc6\x29\x13\ \xad\x6c\x6b\x6a\x0d\xb8\xf2\x0f\x42\x15\x8a\xaf\xd9\xa8\x76\xeb\ \x56\x23\xdf\x45\x47\x9b\x5c\x03\xf4\xf1\x0d\x0b\x0b\x4b\x3c\xdf\ \xd8\xf8\x8b\x7e\x74\xf4\xaf\xa1\xee\xee\x3f\xf9\x99\x26\x0f\x22\ \xf1\x90\x30\x8e\x44\xb1\x9d\x1d\x1e\x72\x72\xc2\x83\x16\x16\xc8\ \xb5\x41\xe7\x1f\x3e\xc8\x70\x48\x48\x48\xe2\x39\xad\xb6\x5f\xaf\ \xd7\x23\x33\x36\x34\x84\x27\x93\x92\xae\x49\xc2\xa7\x23\xc0\x96\ \x6b\x20\x07\xe0\xa6\x7c\x1e\xbc\x0c\x70\x88\x43\x2b\xbb\xcf\x92\ \x0d\x07\x05\x05\x25\xfe\x54\x53\xd3\x3f\x32\x32\x82\xcc\x28\xd1\ \xd3\xd8\x78\xfb\x1d\x95\xaa\x54\xa4\xc1\x6d\x5a\x02\x24\x8f\xb8\ \x26\xd8\xf0\xa9\x98\x18\x1c\xed\xef\xc7\xac\x80\x80\x56\xd1\x9e\ \x0b\x88\xb5\x61\xbe\xbe\x99\xa7\xca\xcb\xfb\x07\x07\x07\x51\xe2\ \x4a\x4f\x0f\x7e\x9b\x90\xd0\x27\x8a\xd8\x77\xda\xbb\xe0\xde\x54\ \xb4\x16\x16\xfe\x66\x30\x18\x90\x39\x97\x9b\xcb\xf9\xdc\x1c\xe2\ \xe3\x9d\x79\x22\x3f\xff\x6a\x5f\x6f\x2f\xf6\xca\x38\x5b\x55\xa5\ \x8f\x59\xb9\x92\xbd\x0e\x93\x0a\x6f\xa6\x02\x6c\x83\x83\x83\x13\ \xc7\xc7\xc7\x91\xb9\x79\xf5\x2a\x96\xa4\xa6\xde\xa8\xae\xae\xc6\ \xd6\xd6\x56\xec\xec\xec\x34\x72\xfe\xf4\x69\x2c\x89\x8b\xbb\xc8\ \xe2\x08\xaf\x19\x6d\xc3\x7b\x05\xb0\x37\xa7\x6b\x6a\xae\x0d\x0f\ \x0f\xa3\x5a\xad\xc6\xe4\xe4\x64\xac\xad\xad\xc5\xe2\xe2\x62\xd4\ \x6a\xb5\x78\xbc\x20\xff\xd6\x6b\x1e\x1e\x07\x85\xd7\x0b\x66\xbc\ \x8e\x65\xed\x18\xb1\xc2\xc1\x61\xf7\x81\x84\x84\xeb\x65\x65\x65\ \xc6\x10\xfb\xfb\xfb\xa3\x8d\x8d\x0d\x0e\x0c\x0c\xe0\xf1\x86\x06\ \x4c\x89\x8e\xee\x9e\xce\xa6\x9c\xca\xa8\x8d\x28\xb0\x77\xb9\xf8\ \x76\x3b\x3b\xff\x7c\x24\x37\x77\xb2\xa2\xa2\x02\xb3\xb3\xb3\x31\ \x2f\x2f\x0f\x2b\x2b\x2b\xb1\xbe\xbe\x1e\x2f\x5d\xba\x64\xe4\xb2\ \x4e\x67\x08\x50\xa9\xd2\x1f\x14\xf6\x29\x05\xd0\xc7\x93\xbd\xe0\ \xf7\x00\x9e\x76\xfb\x01\xc6\x8c\x6d\x67\x66\x86\x05\x56\x56\xa8\ \x49\x4b\xc3\xc3\xf9\xf9\x93\xbb\x62\x63\x7b\x93\xe3\xe2\x86\x4a\ \xd3\xd3\x7f\xa7\x9c\x4f\x76\x74\x74\xa0\x4e\xa7\xc3\x3f\x86\x87\ \x27\xd3\xb6\x6d\xab\xe7\xae\x30\x59\x80\xd4\x46\x3c\x58\x36\x01\ \x54\xee\x05\xe8\x67\xa3\xdf\x00\x4c\xf0\x5f\x7a\x03\x31\x94\x2c\ \x5e\x6c\xec\xfd\x02\x47\x47\xf4\x51\x2a\x33\xc5\xfd\x2c\x36\x68\ \xb5\x83\xc3\xbe\x86\x9c\x9c\xd1\xb6\xd6\x36\x6c\x6b\x6b\xc3\x6b\ \x57\x06\xb0\x49\xa3\xb9\x38\x55\x1d\x48\xc6\xbd\xb8\x47\xd9\x5b\ \x32\xa4\x97\x86\x0c\x7f\x4f\x00\x68\xa2\x61\xb3\x85\xd3\x50\xe4\ \xea\x6a\x28\xb4\xb6\x36\x5e\x7b\x1d\x60\x07\x9d\x3d\x24\xe3\x09\ \xe2\xd5\x9d\x51\x51\xdf\x37\x69\xb5\x93\xcd\xcd\xcd\xd8\xd5\xd5\ \x85\xdd\x67\xce\x8c\x89\x05\xe6\xf8\x0f\xd1\x06\x77\x36\x9e\x05\ \x70\x5d\x32\x9c\x0b\x30\xf2\x11\x40\xa1\x2f\x09\xa3\xeb\x66\xc4\ \xfa\xf7\x01\x4e\x56\x05\x06\x62\x81\xb9\x39\xee\x02\xa8\x15\x13\ \x6f\xfe\x7d\x08\x59\x6e\x6f\x9f\x56\x96\x92\x32\x76\xf4\xe8\x51\ \x6c\x69\x69\xc1\x5f\x2f\x5c\x30\xac\xf1\xf0\xc8\xa0\x6b\xaa\xfb\ \x09\xd8\xf8\x25\xc0\x80\x31\xb4\x36\x36\xb7\xdf\xa3\xfd\x2f\xa9\ \xa5\x8f\x92\x08\xa7\x92\xae\x2e\x75\x77\xc7\x32\x95\x0a\xbf\x00\ \x68\xa6\xb3\x85\xc4\xa3\xa2\x25\x95\x32\x6c\xc5\xf9\xd3\xc4\xa6\ \x4f\xc3\xc3\x7f\xa8\x3e\xac\x9e\xac\xab\xab\xc3\xcb\x3d\x3d\x13\ \xd1\x91\x91\x64\x06\xd6\xdd\x25\x80\x0b\x8d\x8d\x97\xfb\xf8\xe0\ \x8b\x00\x7b\x65\xc6\x9f\x22\xa2\x3f\x06\xf8\x51\xed\xe6\x86\x47\ \x22\x22\x90\x92\x3e\xc0\x5e\x10\x8f\x89\xb6\x7c\x9c\x67\xba\x0c\ \xfe\x7f\x31\xe1\x42\x38\x13\xaf\x2c\xb5\xb3\xcb\xca\x8b\x8f\xbf\ \xa1\xd1\x68\x50\xd7\xde\x8e\xc9\xb1\xb1\x0d\xf2\x16\x05\xe9\xf5\ \x8a\x57\x2d\xbf\xeb\xad\xba\x13\x81\x1d\x24\x6c\xef\x6e\x80\x3e\ \xf6\x9c\xaf\xe5\x29\x14\x7a\x6f\x80\xb7\x85\x30\x0f\xe1\x25\x8b\ \x79\x46\x86\x4a\x9c\x73\x61\xae\x20\x96\x13\xcf\x11\x6f\x6e\xf1\ \xf3\x3b\x56\x98\x91\x31\x71\x4c\xad\x36\xd0\xff\x6f\xc8\x53\xb0\ \x96\xf3\xaf\xf1\xf2\xc2\x9a\xc8\x48\x64\x83\xbc\x6a\x19\xce\xb9\ \x64\x9c\xe6\x00\x6d\x63\x78\x56\x3c\x70\x35\xb1\x86\xc3\x49\x04\ \xc8\x58\x27\xce\xfd\x09\x3f\x7e\x61\x15\x82\xc8\x1f\x78\x69\xa9\ \x52\x99\x11\xe5\xe9\x59\xc6\x4e\xdc\xd5\x05\x24\x75\x0d\xd5\x41\ \x57\x81\x42\x81\xbc\xef\x4b\x9c\x9d\x8d\x14\xd1\x84\xe3\x9d\x1f\ \x02\x10\x4f\x3f\xf2\x16\x0f\x66\x43\xa4\x07\x42\xb9\x38\x89\x17\ \x64\xac\x17\x6d\x47\x3f\x81\x40\x21\xc6\x57\x44\x84\xd3\xe3\x24\ \xd2\xa3\xb8\xef\x20\x8a\x21\xc5\xdb\x01\x3e\xff\x0c\xa0\x88\xf6\ \x66\x31\xb9\x9c\xb2\xee\x4e\xc8\xdd\xff\x23\x01\x4a\xd1\x29\x8a\ \xa9\x26\xa1\x82\x98\x47\x3c\x4c\xd8\x13\x4b\x44\xde\x67\x92\x02\ \x67\x31\xda\x2d\x4c\x11\x60\x26\x86\xcb\x7c\xd1\x72\x0e\xa2\xba\ \x97\xfd\x8b\x22\x5c\x22\x8c\xdb\x8a\x69\xcb\x8e\x99\x4d\xb9\x8c\ \x84\x88\x79\x42\x84\xb5\x08\x9f\xbd\xc8\xa3\xa9\x6d\xc8\xc2\x17\ \x09\x27\xd8\xb8\xb9\xdc\x7b\x53\xb6\xa1\x24\x82\xc3\x66\x25\x52\ \x62\x6d\xc2\x20\x5a\x28\xc2\xfd\x88\x30\x6c\x29\x9e\xa3\x90\x7b\ \xcf\xfc\x0d\xe3\x58\x91\xad\x93\x78\x02\x2d\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x07\x72\ \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\x39\x49\x44\x41\x54\x78\x5e\xa5\x97\x6b\x6c\x14\xd7\ \x19\x86\x9f\x33\x33\x7b\xf1\xda\xbb\x5e\xdb\xf1\x05\x1a\xb0\x21\ \xb8\x01\x43\x02\x85\xa6\x51\x29\x14\x2b\xa2\x49\x14\x89\x5f\x6d\ \x41\x55\xc9\x45\x28\x42\x02\xa7\x28\x4d\xaa\xfe\xea\x45\xe2\x47\ \xfe\x94\x44\x51\x4a\x93\x8a\xaa\x45\x4d\xa3\x46\x8a\x5a\x95\x48\ \x16\x69\x68\x43\x21\xad\x02\x82\x16\x62\x2e\x36\x36\xc6\x57\xf0\ \x8d\xb5\xbd\x17\xef\xee\xec\xce\xe5\x74\x38\x5a\x65\xd5\xf5\x62\ \x0b\xfa\x4a\xaf\xce\x68\xce\x1c\x7d\xcf\xf9\xbe\x6f\xce\xce\x0a\ \x29\x25\xe5\x24\x84\xd8\x0e\xac\x67\x71\x75\x49\x29\xff\xce\x7d\ \x4a\x01\x94\x04\x5e\xab\x69\x5a\xd4\x03\xfb\x9e\xe3\x38\x1d\x2c\ \x22\xef\xd9\x3f\x00\x9d\x05\x90\x5e\xee\x51\x5a\xe9\xae\x0f\x3c\ \xbd\xe9\xa7\xaf\xef\xdb\xf9\xf3\x27\x36\xae\x79\xf2\xe2\xc5\x8b\ \x0c\x0e\x0d\x31\x34\xe8\x79\xa8\xe0\xc1\x41\x35\x7a\xf7\xf1\xe6\ \xd9\xfd\xe4\xe6\x67\x3e\x78\x75\xe7\x6b\x6b\x9b\xc2\xcf\x79\xf0\ \x11\xee\x51\x46\x09\xc0\x86\xf6\x68\x76\x57\x55\x65\x8e\xab\x21\ \x49\x4f\x4f\x0f\xe1\x70\x98\xbb\x29\x95\x4a\x61\x4c\x0d\xd4\x39\ \xdd\x03\x75\x4b\xb4\x74\xcd\x55\xa8\x06\x92\xff\x0f\x80\xb8\x39\ \xd8\x47\xc5\x48\x1f\xb3\xb7\x5c\xfe\x71\xf2\x24\x19\x33\x8b\x63\ \xd9\x48\xc0\x34\x4d\x72\xb9\x1c\xf9\x7c\x1e\xdb\xb6\xa9\xad\xad\ \xa5\x22\x3e\x45\xa2\x42\xc3\x76\xb9\x2f\x19\x25\xf5\x14\x48\x70\ \x81\xc6\xa0\xe0\xc2\xbf\xfe\x86\x99\x99\x43\xc3\x45\x02\x02\x88\ \xe8\x2e\xba\x26\xf0\x09\x81\x71\x5b\xb2\x2c\x62\x20\x70\xc1\xa8\ \x08\x3c\xf5\xc2\xcf\xbe\xfe\xd2\x2f\xbb\x1e\x02\x36\x00\x51\xa0\ \x19\x68\x41\x89\xcf\x81\x77\x0e\xff\x60\x7d\x5f\x59\x80\x23\x47\ \x8e\x08\x5d\xd7\x35\xa9\x39\x0a\x60\xd5\xaa\x15\xf8\x32\x3a\x92\ \x10\x52\x4a\xcf\x20\x04\xd4\x87\x83\x04\x0c\x9d\x80\x4f\x63\x3c\ \x2b\xb8\x3e\x31\xc9\xbf\x27\xc7\x08\x6e\xda\xb9\x67\xeb\xb6\x6d\ \x7b\x2a\xc2\x21\x96\xd6\x06\x08\x05\x74\xaa\x2b\x75\xea\xc2\x7e\ \xa2\x55\x7e\x7a\x46\x92\xed\xc7\x3e\x9b\x0a\x00\xfb\x4b\x00\xe6\ \x77\xa5\x10\x78\x8b\x03\xac\x89\x56\x92\xb5\x1c\x2c\xdb\xc5\x95\ \x12\x4d\x08\xfc\x86\x46\xd0\xa7\x93\x75\x04\x89\x68\x0b\x6f\xbc\ \xf9\x3e\x8d\x4b\x1f\x04\x50\xa0\x85\x51\xd9\x2b\x93\x2a\x57\x75\ \xb5\x9f\xc6\xda\x06\x46\x26\xe7\xf6\xbd\xf4\xd6\xe7\x1c\x3e\xb0\ \x61\xff\x5d\x01\xd0\x41\x68\xa0\xeb\x02\xd7\xb3\xe1\x0a\x24\x02\ \x57\x0a\x34\xa1\xee\x2b\xdf\x4a\x39\x7c\xf5\xe9\xcd\x44\xeb\xea\ \x55\x6f\x94\x91\xea\x97\x64\x32\x49\x30\x18\x54\xcd\xfc\xfd\xed\ \xcd\xd8\xf6\x8d\x22\x44\x11\x00\xf6\xee\xdd\x2b\x3b\x3a\x3a\x5c\ \x43\x08\x7c\x1a\xf8\x75\x0d\xc3\xd0\xd1\x10\xd8\xba\x8b\x2b\x51\ \x00\x86\xa6\x11\x30\x34\xf5\x8c\x99\xcd\xaa\x20\x3e\x9f\x8f\x72\ \xb2\x2c\x8b\x44\x22\x41\x4d\x4d\x8d\x02\x08\x04\x02\xec\x6a\xff\ \x12\xee\xa9\x9b\xfb\x3a\xde\xbc\x70\xfe\x57\x2f\x6f\x3c\x6a\x50\ \x14\xae\xeb\x4a\xa1\xeb\x18\x06\xaa\xc6\x04\xee\x5c\x6b\xcc\xe5\ \x6c\xe2\xe9\x1c\xd9\xbc\x8d\xe5\x48\x42\x7e\x9d\xd9\x2c\xd4\x9a\ \x26\x0b\xc9\x71\x1c\x32\x99\x8c\x2a\x03\xc5\x46\x67\x63\x4b\x80\ \x4b\x03\xd9\xe7\x81\xa3\x1a\x45\x21\x3d\xe9\x1a\x18\x3a\xf8\x7d\ \x02\x5b\x4a\x06\x62\x29\xae\x26\x0d\x8c\x55\x5b\x78\xb0\xfd\x59\ \xbe\xbc\xe3\x65\xea\xb7\x3c\x4b\xcd\xc3\x5b\xb9\xd6\x3f\xc2\xe9\ \xd3\xa7\x89\xc5\x62\xaa\xe6\xa7\x4e\x9d\xe2\xf0\xe1\xc3\x6a\x2c\ \x9e\xb0\x70\xfc\xf8\x71\x0e\x1d\x3a\xc4\xc1\x83\x07\xe9\xec\xec\ \xa4\xff\xc6\x20\xb6\x9d\xd7\x84\xa7\xf9\x00\xba\x02\x60\x68\x36\ \xcb\xb9\x49\x87\xd6\x1d\x1d\x6c\xfb\xe1\x51\x2a\xb7\xbe\xc2\xf8\ \x03\x3b\xb8\xec\x3c\xc6\x65\xf9\x04\x99\xe5\x7b\x68\x79\x7c\x3f\ \x96\xa8\xe3\xd8\x87\x9d\xea\x54\x1c\x1e\x9d\xe4\x9b\x4f\xed\xe5\ \xca\x95\x2b\x0a\x40\xd7\x75\x42\xa1\x10\x95\x95\x95\xea\x3a\x12\ \x89\x60\x18\x06\xae\x6a\x52\xf7\x2e\x6f\x81\x10\x4c\x66\x25\xf1\ \xa5\xad\x7c\xe7\xc0\x2f\x48\xe9\xf5\x24\x52\x39\x84\x6e\x81\x26\ \x48\xe7\x5c\x62\x71\x93\x54\x2a\x4f\x77\xde\xe5\x72\x55\x80\x8d\ \xad\x5b\xb8\xd2\xdb\xc7\x58\xb6\x8d\x99\xb3\x13\x18\x2a\x80\xfc\ \x22\x68\x4b\x4b\x8b\x3a\xb4\x84\x10\x54\x55\x55\x31\x91\x04\x6f\ \x4e\x96\x05\x10\x1a\x0c\xa7\x24\xbb\x5e\xfc\x31\xe1\x25\xcb\x18\ \xe9\x7c\x97\xa9\xfe\xcb\x18\x81\x0a\x5a\x5b\x36\xb0\x7c\xd5\xa3\ \xf4\x4e\x84\xb9\x31\x9c\x22\x36\x63\x32\x3a\x95\x61\xcc\xb3\x21\ \x1a\x99\x8a\x25\x68\x7f\x2c\x48\x43\x11\x40\xed\xde\xdb\x35\x75\ \x75\x75\x00\x0a\x2a\xe5\xa4\xbd\xd1\x96\x77\x34\x3f\x03\x1a\xb4\ \x44\x05\x9f\xbc\xfb\x06\x12\x8d\x8a\xc4\x20\x0d\x91\x20\x8e\xeb\ \x72\xb3\xe7\x24\x31\xb7\x8a\x75\xdf\x7a\x9e\x68\xdb\x37\xb8\xd8\ \x13\x67\xcc\xce\x90\x4a\xe6\x49\xa7\x2d\xcf\x36\x08\x40\x16\xcf\ \x04\xef\x0d\x51\x00\x85\xa3\x5e\x81\xf9\x8c\x3c\x42\x97\x77\xcf\ \xc0\xb2\x88\x20\x6f\x0f\xe0\xaf\x8c\x50\xb7\xb2\x96\x82\x58\xd1\ \x50\x45\x3c\x63\xd1\x7f\xea\x6d\x92\xf5\xff\xe1\xa1\x87\x5f\x20\ \x99\xf6\x61\x59\x0e\xb6\xe3\x2a\x1b\x3e\x0d\x69\xaa\x0c\x50\x22\ \x05\xa5\x4c\x71\xae\x5c\x06\x94\x1b\x22\x3e\x7c\xa1\x00\xa5\xaa\ \xad\xf4\xf1\x40\xd8\xcf\xd9\x2b\x67\x59\xff\xc8\x6e\x42\x41\x83\ \xac\x67\xdb\x96\x9e\x5d\x0c\x5d\x03\x50\x8d\x26\x28\x0a\x09\x08\ \x89\x2c\x66\x87\xbb\x66\x40\x59\xa8\x71\x9e\xce\x0f\xcc\x30\x38\ \x6b\xb1\xa3\xe3\x2d\x7a\x66\xa3\xe8\x81\x14\xc1\xa0\xae\x82\xdb\ \x96\x81\xcf\xd0\x50\xbb\x74\x5d\x24\x25\x92\x14\xe6\x16\x01\xd0\ \x34\x81\x50\x66\x9e\xfa\xa7\x52\xbc\xfa\x5e\x17\xfd\xb7\xd2\x88\ \x6a\x93\xe6\xfa\x0a\xb2\xa6\x43\xce\xb4\x31\xbd\x71\xd3\xea\x1a\ \xce\x9c\x28\x5f\x02\x60\xf1\x12\x08\xf1\xbf\x59\x28\x55\x6b\x53\ \x98\xd7\x77\xaf\x67\x28\x61\xa3\x37\xac\x66\xcd\xba\xaf\xa8\xce\ \x2e\x88\x33\x23\xd0\xd6\xd6\xb6\x30\x80\x5c\xac\x07\x16\x28\xc1\ \xe3\xad\xb5\x7c\x6d\x65\x84\x4f\x7b\x27\xf1\x3f\xb2\x8e\x1d\xbb\ \x5e\x54\x5d\x5e\xa2\x45\x00\x58\x30\x03\xca\x9a\x00\x41\x51\xae\ \x65\x92\x4f\x4d\x63\xcd\xcd\x60\x67\xe2\xe4\x66\x24\x86\x95\x29\ \xd9\xd1\xe2\x52\x60\x0b\x37\xa1\x50\x96\xd2\xc1\x31\x93\xe4\xe7\ \xbc\xa0\xa9\x69\x05\xa0\x40\x24\xc4\x73\x30\x38\x2b\x59\x3a\xe7\ \xde\x17\x80\x44\x02\x62\xe1\x0c\x64\xc6\xba\x01\x8a\x41\x4d\xc9\ \x68\x42\x72\x2d\xe6\x32\x96\x92\xe6\x60\xbe\x2e\xf1\xed\xaa\x15\ \x8d\xf7\x0a\xe0\x38\x8e\x32\x18\x0b\xbf\x86\x96\x03\x33\x59\x49\ \xff\x8c\xe7\x69\x97\x89\x39\x69\x4e\xa5\x65\xff\x6c\x56\xf6\x0f\ \xc7\x65\xcf\xba\x2d\xed\xeb\xab\x9b\x5a\x9f\x29\x02\x2c\x1e\x78\ \x7a\x7a\x9a\xd1\xd1\x51\x26\xd2\x41\x60\x59\xbc\x2c\xc0\xe4\x9c\ \xe4\xe2\xb8\x8b\x17\x84\x9b\x49\x19\xbf\x3d\x27\xfb\xc6\xe7\x64\ \xcf\xed\xb4\x9c\x00\xc6\x0a\x1e\x6f\x58\xde\xd6\xa4\x1b\x7e\x16\ \x03\x48\xa7\xd3\xea\x7f\x44\x57\x57\x17\x37\x06\x47\xd1\xaa\x57\ \x12\x69\xde\x0c\x1a\xef\x94\x03\x18\xfd\x74\xd8\xb9\xd1\x3d\x25\ \xc7\xc7\x53\xb2\xcb\x83\x19\x02\x26\x81\x71\x20\x0d\xf8\x00\x1d\ \x08\x5a\x79\xd3\x70\x1d\xa7\x1c\x80\xfa\x00\x99\x98\x98\x50\x3f\ \xcb\xdd\xdd\xdd\xc4\xd2\x3a\x81\x86\xb5\x54\xad\xde\x86\xe6\x0f\ \xfd\xde\xd2\x8c\xb7\xbd\xaf\xe3\x73\xe5\x00\xba\xfe\xd8\xe5\xfc\ \x04\x88\x01\x03\x80\x09\x84\x81\x4a\x20\xc0\x3c\x49\x0a\x00\x2a\ \xc5\x33\x33\x33\x5c\xbf\x7e\x9d\x4b\x97\x2e\x31\x3a\x3e\x4d\xde\ \xd7\x44\x45\xc3\x66\xfc\x75\x91\xb3\xae\x74\xde\x1b\xbe\x76\xee\ \x4f\x7f\xfd\xdd\x8f\x6e\x7b\xc0\x6e\xd9\xb7\xc0\x9b\xe8\x15\x42\ \x5c\x07\x34\x20\x50\x08\x9c\x07\x74\x40\x02\x4e\x61\x4e\xf7\xf9\ \x83\xb6\x44\x30\x33\x3b\xcb\xc4\xf8\xb8\x0a\x3a\x30\x34\x4a\xca\ \xae\x42\xaf\x6e\x41\x34\x3d\x3a\x66\xa5\x13\x1f\x0e\x9c\xfb\xe8\ \x83\x4b\xa7\xdf\xef\x03\xe6\x00\x93\x12\x19\xcc\x97\x2c\x06\x23\ \x07\x08\xc0\x29\x80\x18\x5f\x00\x04\x42\xb1\x91\x5b\x53\x5c\xfd\ \xec\x2f\x4c\x67\x03\xf8\xa3\xcd\x18\x8d\xdb\x11\x66\xf6\xd8\xd4\ \xad\xde\x63\xff\xfc\xf3\x2b\x67\x00\x0b\xc8\x01\x59\xc0\x06\x5c\ \x40\x2e\x08\x20\x3d\x09\x21\xdc\xc2\x02\x0a\x8b\xac\x02\xac\x5e\ \x00\xd0\xce\x7f\xf4\xeb\xdf\x44\x9f\x7b\x6d\x49\xa0\xf9\xbb\xbb\ \x2b\x73\x99\x13\x99\xe4\xf4\x89\x0b\x1f\xff\xf6\xe3\x81\xae\x4f\ \xe2\x85\x35\x4e\xc1\x56\xd1\xb8\xb2\xa4\x61\xfe\x0b\xaa\xd3\xe9\ \xaf\x70\x35\x30\x23\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x08\x78\ \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\x08\x3f\x49\x44\x41\x54\x58\xc3\xad\x57\x0d\x50\x93\xf7\ \x1d\xae\xda\x6d\xb6\xb7\xeb\x6d\x5d\xb7\xdb\xe7\x79\xfb\xba\xb5\ \xdb\xda\xab\xb6\xda\xde\x76\xe7\x7a\x37\xbb\x8f\xb3\x6e\xd3\xde\ \xa9\xd4\x8f\xad\xdb\xea\xb4\xee\xe6\x67\xd5\xda\x22\x88\x42\x2c\ \x08\xd1\xc8\x97\x08\xd1\x02\x22\x8a\x84\x40\x02\x24\x81\x40\x04\ \x02\xf9\x00\x92\x90\x90\x90\x40\x42\xc2\x57\xc2\x37\x28\x88\xa5\ \x67\x9e\xfd\xfe\xaf\x7f\x1c\x28\xda\x76\xe7\x7b\xf7\x5c\x72\xc7\ \xcb\xff\xf9\xfd\x9e\xe7\xf9\xfd\xde\x37\x8f\x01\x78\xec\x51\x82\ \xae\x6f\x10\x56\x13\xa2\x09\x1b\x09\x3f\x7e\xe8\xfd\x8f\x90\xf8\ \x71\xc2\x6f\x97\x2d\x5f\x21\x36\x7b\x3a\xfb\xec\xd7\x01\x57\x68\ \xe4\x3a\x2f\xe2\xab\xec\x6f\x84\x43\xfc\xf3\x91\x5f\xbf\x26\xec\ \xd6\xd4\x9b\x5c\xd6\xb1\x70\x58\x17\xfa\x14\x4a\x47\x2f\x1c\xc1\ \x31\x56\x59\xf4\x92\x25\x4b\xc4\x31\x31\xc7\xfd\x9a\xca\xca\x30\ \x2f\xe2\x91\x5d\xbf\x20\xfc\xed\x64\x72\x9a\xca\x31\xf6\xe9\x6d\ \xfd\x10\x50\x64\xef\x41\x89\xc9\x09\x95\xc5\x03\x5b\xef\x08\xf6\ \xec\xd9\xd7\x9c\x9d\x7b\x31\x1c\xea\x1f\xc4\xe8\xe8\xd8\x34\xdd\ \xbf\xfd\x51\x10\x0b\x3e\x6f\xdc\xb2\x55\xda\x3a\x78\x63\xca\x30\ \x0c\x28\xdc\xc3\x28\x31\xb7\xa1\xc4\xe8\x40\x81\xce\x8c\x84\xcc\ \x1c\x64\x65\xe7\x82\x11\x5f\x9f\xb8\x29\xc0\xed\xf6\xf4\xd1\xff\ \xfd\xe1\x8b\x10\x3d\x4b\x78\x95\xfb\x3b\xc7\x67\x13\xf9\x6c\x1e\ \x05\xd4\x5d\x93\x90\x99\xda\xa0\xa4\xae\xaf\xd6\x34\x21\x35\xbf\ \x18\xa2\xa4\xd3\xb0\xb6\xd8\xef\x12\xcf\x20\x3f\x3f\xbf\x96\x9f\ \xf9\xf9\xa4\x95\xe6\x17\xd4\x32\x5f\x99\xbf\x84\xd7\x66\xfb\x5c\ \x1d\x9c\x86\xac\xb9\x13\xa5\x66\x17\x64\x75\x16\x64\x15\x6b\x10\ \x93\x20\x81\xa6\x52\x3b\x87\x74\xfc\xc6\x24\xc6\xae\x4f\x60\x74\ \xfc\x06\x56\xac\x58\x21\xa6\x33\x16\x3f\x8c\xf8\x7b\x84\xbf\x30\ \x4f\xed\x24\xad\x71\x04\xd0\x05\xc6\xd1\x32\x30\x71\x5b\x67\x75\ \xfa\xed\xa3\x73\x7d\x96\xd7\xdb\x90\x57\x51\x8f\x23\xf1\x62\x5c\ \x2e\x90\xdd\x47\xcc\x48\x87\x47\xc7\xd1\x3f\x38\x8c\xee\xde\xbe\ \x29\x3a\x7b\xc7\x3d\xd3\x30\xa3\xec\x9d\x31\x61\x9e\x5a\x02\xc1\ \x61\x13\x11\x97\x75\x8c\x42\x69\xf3\x43\xd7\xd6\x83\x5a\x4f\x1f\ \xf4\xbe\x41\x94\xbb\x42\x77\x7c\x36\xd8\x71\xb9\xda\x88\xb8\x34\ \x29\xd2\x33\xb3\xe6\xf8\x3c\x87\x78\x60\x88\x88\x83\xe8\xf0\xf9\ \x51\xab\xd7\x77\xb1\x02\x74\x06\x93\x2b\x74\x2b\x1c\xbe\x66\x10\ \x94\x5d\x3d\x53\xc0\xea\x3a\x9b\xd3\x6f\x19\x0d\x87\x2b\x7b\xa6\ \x50\x6c\x0b\x08\xc4\x0c\x55\xce\x2e\x54\xb5\x06\xa0\xb6\x76\x40\ \x61\x6a\xc5\xd5\x6b\x8d\x48\xb9\x24\x47\x8c\x28\x1e\x5e\x3a\x78\ \x76\xd7\x4c\xea\x91\xb1\xeb\xbc\xe3\x20\xdc\xed\x5e\x58\x6c\x2d\ \x28\x92\x97\xa0\xb8\x4c\xe5\x1f\x9a\xb8\x35\xdd\x73\x13\x70\xd3\ \x8e\xb0\x8e\x4c\x83\x2f\x2b\xe1\x8a\xb6\x8d\x03\x85\x96\x00\x2a\ \x1c\x81\xbb\xc4\xda\x56\x3f\x34\x36\xef\x5d\x9f\x33\xe5\x6a\x7c\ \x18\x17\x0f\x7d\x83\x61\x5e\xb9\x07\x87\x47\xd1\x1b\x0c\x09\x1d\ \xb3\x10\x96\xab\x34\x48\x3a\x7d\x06\x5a\x5d\x0d\x7c\x93\x40\x68\ \x0a\x30\xd2\xc4\x28\xbd\x63\x50\x9b\xad\xfe\xd9\x0a\x44\x37\x52\ \xa2\xf3\xaa\x4c\xa8\x76\x75\x0b\x1d\x57\xb4\xf8\x50\xd6\xd4\x86\ \x22\xbd\x55\xf0\xf9\xfd\x63\x22\x28\xcb\x55\xf3\x12\x0f\x8d\x8c\ \x09\x36\xf8\xbb\x7a\xe0\x68\x75\x51\x81\x46\x24\x24\x26\x22\xaf\ \xb0\x08\xde\xe1\x49\xf8\x26\x80\x06\x96\x1d\xef\x24\xa4\xa6\x4e\ \xd4\xf9\x87\xd8\x3e\x38\xc2\xad\xff\x5f\x01\x17\xb5\x06\x54\x3a\ \xfc\x50\x59\xdb\xef\xf8\x5c\x65\x40\x74\x52\x0a\x72\xf2\xf2\xe7\ \xf8\x3c\x23\xf7\x8c\xcf\x5d\x3d\x7d\x70\xb9\xdb\x61\x6a\x6c\x42\ \x6e\xde\x25\xc4\xc6\x9f\x84\xad\xab\x1f\xed\x37\x80\x4e\x22\x57\ \x04\x3e\xc1\x65\xd7\x28\xd2\xf5\x74\xae\xb3\x2f\xbc\xf7\x70\x64\ \x01\x71\xae\x9f\x9d\xfe\x68\xd3\xf0\x6d\x64\x6b\xf4\x28\x6d\x74\ \xa1\xb0\xb6\x19\xd9\x65\x3a\x88\xc4\x92\xfb\x7c\x9e\xe9\x7a\x60\ \x68\x44\x90\xbb\xdd\xdb\x89\x66\xab\x0d\xa5\xa5\xe5\x38\x76\x3c\ \x16\xf5\x56\x07\xda\xc8\x63\x0b\x05\x59\x1d\x04\xa4\x8d\x3d\x48\ \xac\xb0\xe3\x42\x73\x1f\x2e\x18\xbd\x50\xd4\x34\xb0\xf0\xed\xba\ \x77\xfc\xa2\x1b\xfa\x3f\x41\x96\xb2\x1a\x57\xaa\x4d\xc8\x92\x6b\ \xb0\xf7\xa8\x08\x0d\x06\xd3\xbc\x72\x07\xfb\x07\xe0\xf3\x77\xc1\ \xee\x70\xa2\x8a\xfc\x15\x9f\x96\x20\xef\x4a\x01\x06\x6f\x01\x0e\ \xca\x92\x36\x44\x79\xa2\xf6\x33\x0c\x7e\x9c\xae\x76\x21\xbd\xde\ \x87\x0c\xea\xbe\xce\x17\x62\xa3\xf8\x01\xe1\x3b\xf7\x16\x70\xb4\ \xb6\x77\x02\x29\x05\xa5\x38\x27\x53\x41\x94\x7e\x01\x6b\x23\xb6\ \xcc\x2b\x77\xa0\xbb\x17\xce\x36\x0f\x0c\xa6\x46\xa4\x67\x9c\x43\ \x6a\x96\x14\xee\x9e\x7e\xb8\xa8\xeb\x46\x0a\x98\xdc\x77\x13\xe7\ \x8c\x01\xa4\xd4\xb6\x23\x4d\xef\xc5\x99\x6b\x6e\xa4\xd6\x7a\xa0\ \x20\xe9\xdf\x7c\x6b\xb3\x94\xb8\xd6\xcc\xb7\x80\x8e\x69\xbd\x43\ \x48\x38\x7f\x05\xf1\xe7\x72\xb1\x2b\xf2\x38\x0e\x7e\x10\x79\x77\ \xac\x98\xdc\x3d\x7d\x21\x78\x3a\x7c\x68\xb2\x58\x51\x28\x93\x23\ \x3e\x21\x11\x26\x9b\x03\x01\x4a\x37\x6d\x63\xa8\xfa\xc2\x38\xdb\ \xd0\x29\x74\xcb\x88\xc5\xda\x56\x9c\xaa\x72\x22\xb9\xc6\x8d\xac\ \x7a\x37\x2e\x2a\x54\xcd\xc4\xf3\xef\x07\x6d\xc0\xd8\xb2\xd6\x6e\ \xc4\x24\x4b\xf1\xfe\x89\x53\x78\x6b\xdb\x4e\xa4\x9d\xcd\x10\xc6\ \x6a\x46\xee\x16\x7b\x2b\xb4\x55\x3a\x81\xb8\x50\x51\x8a\xf1\x69\ \x20\x40\x01\xab\x1d\x00\x8a\x3b\xa7\x04\x8f\x33\x4d\x5d\x77\xbb\ \x8e\x55\x98\x05\xef\xa5\x46\x1f\x8d\xb4\x9f\xbd\x17\x1c\x26\x3c\ \xf5\xa0\x02\x44\xb2\x46\x0f\x0e\x7d\x24\xc1\x8e\x83\x91\x78\xf5\ \x37\xab\xd0\xd4\x6c\x15\xd2\xcd\xe4\x6e\x30\x9a\x21\x39\x93\x0c\ \x69\xce\x45\x1a\xab\x09\xa1\xeb\xa6\x91\x3b\x72\x5f\x6a\x1d\xc6\ \x49\x4d\x8b\x20\x3b\x23\x4d\x50\xdb\x70\xb4\xa8\x41\x40\x92\xc6\ \x8a\xb2\xb6\xbe\xf0\xd2\x97\x97\x8b\xf9\xea\x5d\xf0\xa0\x02\xe2\ \xf3\x6a\xad\xd8\x15\x25\xc2\x96\xed\xff\xc1\xca\x55\xaf\x0b\x5d\ \xb3\x65\x22\x2b\xa2\xa7\x9b\xe8\x04\x6c\x1e\x1f\x7a\x69\x8b\xf9\ \xf9\x58\xe5\x39\x86\xf0\xb1\x25\x28\xa4\x9c\x05\x2d\x4e\xd9\x28\ \xc8\xce\xba\x4f\x28\x6f\xc6\xd9\x1a\x27\x34\xae\xee\xe9\x9d\xfb\ \x0f\x5d\xa5\xf3\x77\xf2\xbd\xbf\xe8\x41\x45\x24\x4a\x35\xf5\xd8\ \xb6\xff\x43\xac\xdb\xfc\x36\x76\xef\x7d\x0f\x8d\xcd\x16\x14\x2b\ \x94\xf8\xc7\x3b\xdb\x68\x43\x7a\xe1\xa1\x99\xbe\xd6\x0f\xe4\xb6\ \x0c\x40\xa2\x6b\x43\xb6\x35\x24\x78\x2e\x10\x52\xd7\xd1\xb2\x7a\ \xc4\x96\x18\x71\x4e\xef\x81\xdc\xde\x1d\xce\xd7\xe8\xda\xe8\xdc\ \x18\x9e\xfa\x6f\x71\xf9\x9f\xe0\x85\xdc\x57\xc4\xa9\xd4\xa2\x0a\ \x6c\xdd\xb9\x17\xaf\xaf\x59\x27\x8c\x95\xa2\xb4\x0c\x3b\xde\x7d\ \x17\xe2\x7c\x05\xe2\x8a\x1b\x84\x70\xb1\x6e\xd9\x27\xf3\xfa\x78\ \x89\x49\x28\x84\x15\x11\x5f\x6e\x11\xe4\x3e\x4f\x61\x2b\x33\xdb\ \x83\x2f\x2c\x5d\x96\xc2\x82\xcd\xe7\xfd\x25\xc2\x0f\xf9\x93\xf6\ \xeb\x84\xaf\x10\x16\xde\x5b\x40\x72\x52\x5e\x31\xd6\xff\x7d\x07\ \x9e\x7f\xe9\x15\x21\xe5\x47\x8e\x44\xe1\xbd\xe8\x58\x24\x96\x9b\ \x11\x43\x7e\x32\xa2\xd4\xba\x0e\x41\x66\x16\x2e\xe6\x7b\x12\xfb\ \x54\x59\x90\xac\xb5\xa1\xae\x23\x38\xb5\x73\xff\x41\x39\xcb\x13\ \x27\x67\x9b\xee\x65\xc2\x2b\x84\x65\x84\x9f\x12\x9e\xe1\xef\x03\ \xf7\x15\x90\x1e\x97\x75\x09\x7f\xde\xf4\x36\x5e\x5b\xf5\x7b\xa4\ \xa4\xa6\x61\xfd\xa6\xcd\x38\xa3\x36\xe1\x40\x8e\x46\x08\x18\x5b\ \x2a\xac\xf3\x8f\xa8\xdb\xa8\x42\x3d\xe2\x14\xa4\x40\xa5\x0d\xc5\ \x2d\xfe\xdb\x59\x57\x4b\xac\x74\xc6\x09\x96\x25\xc2\x3b\x3c\x70\ \xbf\xe3\xaf\x5f\xec\xfb\x72\xc2\x8f\xb8\x02\x5f\x9e\xcf\x82\xcc\ \xa8\x94\xf3\x78\x63\xfd\x66\x44\x6c\xda\x82\x0d\x1b\x23\x90\x4c\ \x96\x1c\xcc\x51\x0b\x84\xac\x80\xe4\x1a\x8f\xa0\x82\x88\xc2\x96\ \x5e\xe7\x26\xb9\xdb\x50\xda\xd0\x14\x78\xfe\xc5\xa5\x69\x9c\xf8\ \x00\x7b\x99\xe1\x4f\xb8\xb5\xfc\x3b\x2b\xe0\x57\x84\x9f\xf1\x1c\ \x3c\xc1\x83\x78\xdf\x25\x8d\x94\x64\x62\x4d\xc4\x56\x6c\xd8\xb0\ \x11\xc7\x92\x33\x10\x27\xd7\x63\x7f\xb6\x5a\xe8\xfa\x44\x59\x33\ \x24\x94\x74\x49\x95\x03\x17\x9b\xfc\xd0\xba\xba\xa6\xd6\x6e\x88\ \xf8\x98\xcb\x1d\x45\xd8\xc4\xc9\x18\xf1\x9b\x84\x3f\x11\x56\xf1\ \xce\x7f\x42\xf8\x26\xe1\xc9\x87\x4d\x81\x34\x26\x3d\x5b\xc8\xc0\ \xf6\x43\x51\x10\xc9\x74\xd8\x23\x2d\x15\x36\x19\xf3\xfd\xa4\xda\ \x8a\x4c\xbd\x1b\x15\xed\xc1\xdb\x51\x09\x62\x35\x5b\xdd\xdc\xe7\ \x08\xfe\xae\xf8\x47\x4e\xfa\x06\x27\x66\x2f\xb2\x3f\x27\x7c\x9f\ \xf0\x35\xee\xfb\xa2\x87\xed\x81\x0c\x71\x9e\x1c\xff\x3a\x10\x89\ \x33\x65\x7a\x6c\x93\x5c\xc6\xe1\x7c\x1d\x75\xed\x84\x44\x6b\x47\ \xae\xd1\x13\x2e\x37\x5a\xfc\xbc\x5b\x36\x56\x7f\xe5\x04\x2f\x12\ \x56\x72\x9f\x57\xf2\x8e\x9f\xe5\xc4\x4f\xf3\xae\xbf\x34\x5f\xe8\ \xee\xbd\xf6\xe5\x16\x97\x4e\x66\x57\xd6\x63\xdf\x79\x25\xb6\xc4\ \x67\xe3\x84\xd2\x84\x1c\xb3\x17\x1a\xab\x67\x78\x5d\xc4\x26\x29\ \x5f\xa5\x3b\xf8\x48\x3d\xc5\x49\x9e\x23\xbc\x40\xf8\x25\x97\xfa\ \xbb\x3c\x68\xb3\x89\x17\x7c\x9e\xd7\x70\x16\x14\x89\x54\xef\xc4\ \x3f\x4f\x5f\xc2\x79\x43\x07\xb4\xee\xbe\xe9\x63\x49\x12\x15\xef\ \x78\x37\xbf\x67\x01\x5f\x24\x4f\xf2\x1f\x27\xdf\xe6\x78\x66\xd6\ \xa2\xf9\x42\xc4\x33\x17\x3b\xf0\x60\x86\xac\xdc\xad\x6c\xed\x0e\ \x17\x55\xeb\x5d\xfc\x95\xe9\x10\x0f\xd7\xec\x87\xc8\x42\x4e\xb2\ \x98\x13\x2e\xe6\xa3\xb5\xe8\xff\x21\x9e\x7d\x3d\xce\x65\x8e\xe2\ \x9f\x5b\x09\x3f\x78\xc0\xbd\x0b\x38\xd9\xc2\xcf\x22\xfd\xac\x5f\ \xd5\xff\x05\x42\x5a\xb5\xfc\x4a\x39\x80\xc8\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\x7e\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x05\x10\x49\x44\x41\x54\x58\xc3\xad\ \x97\xcb\x8f\x14\x55\x14\x87\xbf\x73\x6e\x55\xcf\x30\x0c\x23\x4f\ \x71\x00\x01\x49\x7c\x60\x06\x08\x10\xdd\xb8\x91\x85\xee\x8c\xf1\ \x91\x18\xd8\x91\xf8\x88\x8f\x85\x09\xa8\xa0\x81\xa6\x65\xa3\x0b\ \x13\x17\x44\x63\xc0\x85\x31\x19\xdd\xf8\x27\x98\x31\x2e\x7c\x22\ \x46\xe3\x8b\x18\x41\x40\x07\x89\xc0\x00\x19\xa0\xbb\xaa\xee\x3d\ \x2e\xaa\x06\x6a\x7a\xaa\xbb\x81\x58\xc9\xc9\xad\xaa\xbe\xdd\xfd\ \xab\xdf\xf9\xea\x9c\x7b\xc5\xcc\xe8\x75\x6c\xda\xd2\x10\x40\x8a\ \x4b\xe9\x32\x75\xea\xc7\x6c\x6c\xb4\xde\xfb\x87\x01\x99\x12\xb0\ \x69\x73\x63\x07\xf0\x78\xa7\x79\x5d\xee\x5b\x0f\x31\x55\xdf\x9a\ \x18\x1b\xad\x3f\xd0\x2e\xe0\xe0\xde\x37\x77\x6f\xfc\xf4\xe7\xc0\ \x86\xe5\x81\xd9\xb3\x62\xbe\x3b\x0e\x23\x8b\x03\xaa\x70\xf0\xb8\ \xb2\x6e\x49\x46\x1c\x39\xbe\x3e\x62\xdc\xb3\x0a\x62\xa7\x7c\x7e\ \x38\xe1\xde\x95\x4a\x1c\x39\xbe\xff\x4b\xb8\xef\x76\x48\x33\xf8\ \xea\x8f\xc0\xfa\x65\x50\xab\x29\x87\x4e\xc0\xdd\x8b\x3d\x8a\x30\ \x77\x48\x79\xf5\xa5\xc6\xf8\xd8\x68\x7d\xe9\x0c\x01\x8d\x37\x76\ \x6d\x6c\x26\x8a\xf7\x81\xc8\x29\xaa\xb9\xe0\x24\x0d\x84\x10\x88\ \x23\x47\x1c\x0b\x21\x00\x04\x7c\x10\xd2\xd4\x53\x8b\x23\x00\x5a\ \x49\xca\xe0\x40\xcc\xe5\xa6\x67\x60\x96\xe3\xc2\x64\xca\xd0\x60\ \x4c\x2b\x35\xfa\x6b\x42\x2b\x81\xd9\x03\xf0\x5a\x07\x01\xe5\x14\ \x48\x9b\xcd\xed\x0c\x48\x07\xcb\xad\xed\xdc\x2a\x53\x52\x95\x82\ \x36\xd8\xb4\x88\xa8\x14\x31\x50\x2b\xc6\xa8\xf8\x7c\x8a\x81\x00\ \x64\x40\x0a\x24\xc5\x98\x95\x22\x14\x61\x63\xa3\x75\xdb\xb4\xa5\ \x51\x1f\x1b\xad\x37\xa6\x3b\x70\xf5\xcf\x73\x01\xc6\x0e\xe0\x91\ \x69\xf7\xaa\xdd\xa8\x7a\xea\x50\xe1\xc8\xd5\xb1\x12\xc2\xe9\x4f\ \xef\x30\xbe\xdc\xba\x63\xf7\xfa\x95\x43\x42\x30\x38\x74\xcc\x18\ \x19\xf6\x38\xa7\xfc\x7a\x4a\x19\x19\xce\x67\x7f\x7b\x24\x63\xfd\ \x72\x41\x44\xf9\xf5\x94\x70\xc7\xa2\x8c\x5a\x14\xf1\xc3\xdf\xb0\ \x66\x69\x40\x51\x0e\x1d\x37\x46\x96\x78\x9c\x2a\x43\x83\xca\xcb\ \xdb\xaa\x18\xb8\x2a\xc0\x15\x02\xbe\x78\xeb\xed\xfa\xfa\x0b\x93\ \x9e\x5a\xec\xb8\xdc\xf2\x60\x46\x5f\x2d\xc2\x80\x24\xf5\x44\x4e\ \xc9\xb2\x80\x73\x4a\x1c\x43\xb3\x15\xe8\x8b\x1d\x66\x86\x0f\xe0\ \x9c\xe0\xbd\xe1\x9c\xd0\x6c\x65\xcc\x19\x8c\x70\xca\x4c\x01\x6d\ \xf6\xbb\x22\x05\xaf\x74\x48\x81\x76\x81\x30\x54\xa4\xc0\x66\xa4\ \xa3\x3d\x05\x15\x02\x5c\x09\xba\xbe\x22\xfa\x8b\xb1\x56\xc4\x14\ \xa8\x53\x80\x25\x45\xb4\x80\x66\x31\xb6\x4a\x50\xfa\x22\x0c\xd8\ \x3d\x36\x5a\xdf\x33\x53\x80\xb1\x13\x78\xb4\x0d\x36\xed\x00\xa1\ \x54\xbc\x82\xd6\xc3\x89\x1e\x0e\x18\xdf\xbe\xb8\xa7\xbe\xe1\x96\ \x81\x3c\xaf\x3f\x1c\x33\x46\x96\x0a\xa9\xf7\xfc\x76\x52\x58\xb7\ \x42\x09\x1e\x7e\x19\x87\x35\xcb\xa1\xd9\xf4\x1c\x3e\xa5\x6c\xb8\ \x4d\x68\xb6\x02\x3f\xfd\x0d\x6b\x6f\x15\xa2\x48\xf8\xf1\x18\xac\ \x1e\x0e\xc4\x35\xe5\x97\x71\x58\x35\x3f\x50\xab\x29\x2a\x81\xed\ \xdb\xf7\x56\x32\xa0\x18\xdf\xec\xdb\x57\xdf\x30\x79\xd1\xb0\x60\ \xa8\x53\x54\x0d\x9f\x41\x92\x65\xa8\x2a\x91\x53\x42\x30\xe2\x5a\ \x5e\x26\x2f\x5d\x4a\x98\x3b\x54\xe3\x72\xd3\xc0\xc0\x45\x05\x78\ \x91\x80\x41\x9a\xe6\x22\xb2\x24\x00\x30\x77\x48\x79\xf6\x85\x12\ \x84\xf7\x6f\xde\x33\x65\xe5\xd4\xbb\xff\xd8\x95\xeb\xe9\x69\xb8\ \xde\x14\x84\xb6\xeb\x72\x1d\x38\x0b\x3c\x38\x36\x5a\xb7\xe9\x0e\ \x4c\xaf\x7e\x53\xb0\xf5\xb7\x41\xd8\x57\x00\xea\x4a\x85\xc8\x17\ \xa0\xb5\xda\x20\x6c\x96\xe0\x2c\x57\xc5\x5d\x55\x10\x76\x13\xd0\ \x8f\xf1\x2c\xf0\x40\xc9\x91\xf6\x23\x5c\x03\x84\x57\x1c\xa8\x82\ \xb0\x97\x80\x4f\xf6\xbf\x53\x5f\x3d\x79\x39\xf0\xe7\x69\xe1\xce\ \x25\x42\x92\x04\x8e\x9e\x16\x56\x2c\x30\x54\x84\xbf\xce\x0b\x2b\ \xe6\x43\xe6\x03\xbf\x9f\x32\xee\x1a\x76\xb4\x5a\x29\xc7\x26\x1c\ \x2b\xe6\x7b\xe2\x28\x62\x56\xbf\xf0\xcc\x0b\x8d\x0e\x10\xf6\x10\ \xf0\xfe\xbb\xf5\xd5\x69\x06\xa9\x07\x15\x43\x04\xd2\xd4\x88\xa2\ \xdc\x90\x2c\x0b\xf8\x10\x18\x9c\x1d\x91\xa6\x06\x48\x3e\x27\x0b\ \x38\x55\x0c\xe8\xab\xc1\xd3\xcf\xdf\x98\x80\x72\x0a\x6e\xb4\x0e\ \x5c\x73\x0a\x5c\x07\x08\xfb\x4b\x2d\xb9\x0a\xc2\xa4\x00\xaf\x0a\ \x42\x7f\x2d\x10\xca\x34\x07\x8c\x6d\xc0\x43\x5d\xaa\x21\x5d\x5a\ \x71\xd7\xd7\xb0\x53\x2f\x98\xee\x80\xf1\xd9\x87\xfb\xeb\x6b\x5b\ \x2d\x38\x31\x01\xb7\x2d\x82\x56\x62\xfc\x73\x41\x58\x3a\x17\xbc\ \x0f\x9c\x98\x30\x96\x2f\x50\xcc\x8c\xf1\x73\xc2\xf0\x50\x20\x8a\ \x1c\xe3\xe7\xe1\xd6\xf9\x60\x06\x47\xff\x0d\x2c\x9b\x27\x38\x15\ \x9c\x33\xb6\x3e\xf7\x7a\xc7\x6e\xa8\xa5\x66\x54\xc3\xf8\xec\x83\ \xf7\x76\xaf\x4b\x12\x43\x44\x50\x15\xd2\x2c\x10\x3b\xbd\x02\x97\ \xaa\x60\x06\x4e\xc1\x07\x90\xc2\x17\xa7\x82\x0f\xb9\x01\x91\x53\ \x92\x34\x9f\x3b\xd0\x2f\x6c\x79\xaa\x77\x3b\xce\x97\x60\x79\x0a\ \x1e\xfe\x1f\x52\xd0\xbd\x19\x15\x0b\x12\xad\x68\xc7\x71\xa9\x05\ \xdf\x68\x3b\xce\x2a\xda\xf1\xae\x99\x6b\xc2\xcd\x8d\x9d\x15\xab\ \x62\xa9\xe8\x09\xd7\xea\x40\xf9\x9c\xde\x0e\x6c\x6e\x1c\xfc\xf8\ \x40\x7d\xe3\x89\x33\xc6\x92\x79\x79\xae\xcf\x5c\x54\x16\xce\x36\ \x44\xe1\xe4\x84\xb1\x6c\x81\x92\x66\x81\xb3\x97\x94\x85\x83\x60\ \xc1\x38\x7d\x51\x58\x34\xc7\x10\x84\x7f\xce\x1b\x37\xcf\x01\x51\ \x38\x3d\x29\x2c\x1a\xcc\xd9\x39\x79\xce\x58\x7c\x93\xe0\x14\x22\ \x07\x4f\x3c\xd9\x61\x63\xf2\xd1\x81\xfa\x46\xef\x0d\x33\xc9\x1f\ \x4f\x72\x8a\x55\x73\xfd\x3e\x04\x40\x4a\x80\x81\x6a\x3e\x57\x1d\ \x84\x90\x57\xbf\x10\x0c\x15\x48\xb3\x5c\x80\x08\xf9\x08\xc4\x71\ \x67\x01\x3b\x3a\xa4\xa0\x53\x74\xda\x98\x74\x5e\x0b\x5e\xc7\xc6\ \xa4\xaa\x32\xc6\xa5\x22\xe5\x2a\x36\x26\xbe\xd4\x72\xd3\xb6\xca\ \x77\x85\x8b\xf6\x5d\xb3\xb4\x6f\xcf\x3b\x88\x70\x15\x21\x25\x01\ \x56\xa2\xbc\x1c\x5d\xff\x1c\xe0\x3f\xb4\x3e\x33\xee\x59\x4a\xce\ \x0f\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x06\xfb\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x06\x8d\x49\x44\x41\x54\x58\xc3\xed\ \x57\x79\x54\x8d\x69\x1c\xbe\x46\xe6\x18\x63\x16\x63\x3b\x0d\x33\ \xd9\xc2\xd1\x62\x89\x44\x1b\x52\x88\x5b\x42\x8b\xf6\xb2\x84\xb4\ \x58\xba\x2a\x57\x8b\xa5\xba\x15\xe9\xa6\x28\x7b\x22\xd7\x70\x42\ \xf6\x90\xce\xb1\x4b\x24\x0d\x47\x0d\x31\xb2\x9e\x28\xe4\x4a\xcb\ \x33\xcf\xc7\xe5\xcc\x41\xca\x31\x73\x66\xfe\xf0\x9d\xf3\x9c\x7b\ \xce\xfd\xbe\xf7\xf7\x3e\xdf\xf3\x3c\xbf\xdf\x7b\xaf\x08\x80\xe8\ \xbf\x84\xe8\x0b\x81\xff\x15\x01\x53\x87\x10\x6b\x13\xdb\xe0\x08\ \x63\xdb\xe0\x54\xe3\x09\x81\x69\x86\xe3\x24\xc9\x83\xac\xfc\x03\ \xf4\x46\x4c\x19\x2a\x12\x89\xbe\x21\xbe\xfa\xe4\x0d\x1a\x73\x99\ \xda\x4b\x6d\x4d\x1d\x16\xfc\xe6\x13\x9a\x79\x3b\x58\x76\xa9\x42\ \x2a\x2b\x51\x4a\x63\x4a\x94\x61\x71\x57\x2b\x25\x91\xd9\x8f\xdd\ \x66\xaf\x2b\x35\x1a\x3f\x2f\x8f\x64\xe4\xba\x43\x9c\x8c\xb9\xa4\ \x05\xd1\x44\xf4\x4f\x5c\xa6\xf6\x0b\x34\x2c\xdd\xa3\x0a\x16\xc5\ \xdf\x57\xba\xcd\x06\x46\xb9\x01\x66\x2e\x80\x85\x3b\x20\x9e\x06\ \x38\xcd\x05\x7c\x16\x01\x8b\x12\x95\x75\xe1\xf2\xbc\x4a\x7b\xef\ \x84\xdb\x24\xb2\xb3\xaf\x99\x87\x33\x97\x7f\x47\x34\xfd\x4c\x02\ \x52\x49\x90\x2c\xb7\xcc\x6e\x06\xa0\x6b\x09\x68\x5a\x10\xa3\x81\ \x5e\x36\x80\x8e\x1d\xa0\xe7\x0c\x18\x79\x92\x98\x37\xe0\x12\x04\ \x04\xc5\x01\x51\x2b\xaf\x57\xb9\xcd\x5a\x73\xcf\x40\xec\x9b\xd9\ \x67\x98\x9b\xeb\x67\x11\xa1\xf4\xc7\x83\xa2\x5e\xd4\x0e\xb6\x05\ \x34\xcc\x81\xce\x63\x80\x9e\x13\x81\xde\x1e\xc0\x40\x92\x1a\x38\ \x13\xd0\xe7\xe6\x06\x54\xc3\x90\x30\xf7\x01\x1c\x83\x49\x64\x39\ \x10\xbd\xfa\x7a\x95\xdd\x8c\xf8\xbb\x7a\x16\x53\x52\xba\xf6\xb5\ \x18\xc8\x72\xcd\x3f\xd9\x9a\x51\x6e\x91\x85\x7e\x94\x78\x80\x3d\ \xd0\xcd\x1a\xd0\x76\xe5\x1b\xfb\x03\x56\x0b\xb9\x11\xdf\xd6\x3d\ \x01\x70\xe6\xa7\x4d\x14\x6d\x91\x02\x26\x73\x08\x3f\x2a\x32\x8b\ \xf7\x42\x69\x4d\x32\x10\x1a\x77\xa2\xd2\xdc\x39\xbc\x84\x44\x64\ \x2c\xd9\x8e\x50\x6b\x34\x01\x4f\xc9\xc6\x1b\xfe\x91\xc0\x20\x7a\ \xaf\x45\xef\x0d\x59\xd8\x2e\x06\x98\xb7\x05\x48\xcc\x02\x36\x1c\ \x07\x56\xe7\x00\xb2\x3d\xc0\x9c\x34\x92\x21\x21\xcb\xc5\xc0\xb0\ \x79\xcc\x0a\xc9\x8c\x0d\x04\x66\x92\x5c\x7c\x9a\xb2\x6e\x6a\xd0\ \xa6\xb2\x3e\x66\xee\xa9\x9d\x75\x87\x19\x36\x5a\x0d\x13\x3b\xe9\ \x65\xa9\x1c\x18\x4e\x69\x0d\x28\xb5\xd5\x12\x20\x30\x1d\xd8\x96\ \x0b\x2c\x49\x39\x50\xe5\x31\x37\xa1\x32\x44\x9e\xa1\x4c\x3f\x52\ \x5c\xbd\xab\x00\x90\x1f\x05\xe6\x6e\x65\x38\x13\x49\x84\xcf\x0e\ \x67\x2e\x46\x91\x8c\x73\x38\xb0\x38\x05\x08\x8f\xa7\x1a\x4e\x61\ \x37\x75\x4d\x9d\x02\x58\xbe\x75\x83\x6a\xb0\xef\xcf\x2c\xdd\xf4\ \xa2\xd6\x36\x84\xfe\xd2\x5b\xf7\x24\x20\xe9\x08\xb0\x72\xfb\xd9\ \x97\xdd\x07\x8c\xbe\xd6\xfa\x67\xcd\xcc\x4e\xda\xa6\x07\x7a\x0f\ \x75\x29\x14\x7b\x2e\x7c\xac\x38\x56\x5c\xbd\x23\x9f\xfe\x1f\x02\ \xbc\xa9\x88\x5d\x3c\x09\x50\x91\x11\xb4\x47\xa8\x31\x87\xd9\x88\ \xdf\x58\x5a\x2d\xf6\x88\xbc\xcb\x35\x89\xdc\xa2\xc3\xdf\x49\x70\ \xd6\x68\xf3\xa5\x17\xf7\x33\x9f\x64\xf0\xaa\x9d\x07\x59\xcf\x5e\ \x2e\x5b\x7d\xe1\x99\xff\x0a\x16\x8b\x06\x7c\x53\x01\xc5\x39\x16\ \x0f\x5d\xf3\xbc\x9d\x86\xce\x41\x3e\xe4\x4b\x58\x12\x56\x1a\x5a\ \xc6\x72\xa6\xfe\xa2\xcf\xc2\xf5\x4f\x77\xe7\x3d\xaa\x5d\x77\x1a\ \x90\x66\x02\x1e\xeb\x98\x91\xa5\xc0\x48\xe6\xc6\x86\x24\xa6\xb3\ \x8e\x7c\xb3\xb2\xce\xc5\x6f\x55\x19\x9f\xdf\xc4\xb5\x1a\x44\xb3\ \x57\x9b\x73\xd0\x25\xa5\x16\x3c\xd6\x1b\x31\x75\x03\xbf\xd3\x12\ \x09\x83\xc5\x7a\x72\xf4\xad\x15\xbb\xb8\x29\x25\x0c\xdc\x06\xec\ \xb8\xc0\xa2\x01\x09\x95\x6d\x3a\xf6\x48\x17\x72\x4a\xb4\x27\x7e\ \x22\xba\x10\x43\xbb\x0f\x18\xb3\x61\xb8\xe3\xfc\x07\x69\x87\x0a\ \x5e\x66\x14\x02\xb1\xd9\x9c\x15\x0a\x60\xe2\x4a\x60\x34\xf3\x60\ \x4d\x3b\x3c\xf9\x19\xbd\x91\x35\x17\x28\x2a\xf4\x2d\xbd\x8f\xf5\ \x1e\xe6\xea\xc5\xc9\x1a\x13\xbf\xb6\xa0\x3c\xe7\x24\x30\x78\xec\ \xec\x3b\xac\x65\x2f\xa8\xd2\xa2\xff\x48\xaf\xa4\x88\x94\x93\xcf\ \xa2\x77\xd2\x43\x12\x51\xd0\xff\xd0\x84\x0c\x65\x27\xed\x21\xfb\ \x84\x0d\x89\x96\x2a\x05\x9b\xaa\x7a\xbe\x1b\xd5\x90\xe8\x0e\x71\ \x3e\x11\x18\xbb\xf5\xe9\x81\x42\x65\xdd\xaa\x33\x24\xcf\xa0\xba\ \xaf\xa7\x0a\xec\x1a\x31\x6d\x71\x89\x60\x98\x99\x95\x85\x89\x7f\ \xbe\x34\xb0\xf2\xbf\xe2\x1d\x9a\xff\x24\x96\x2f\xb9\x9f\x84\x0d\ \xc4\x7e\x8f\x58\x67\x8e\x50\xb4\x89\xa6\xde\xa8\x01\x16\x2e\xe1\ \x25\x9b\x0e\x3f\xaa\x4d\x60\xf2\xd3\x58\x2c\x75\x7f\x41\xb5\xb6\ \xb1\xfd\x45\xde\x17\x13\xad\xde\x89\x8e\x9a\x4a\x95\xc1\xbd\x06\ \x8f\xdf\xe2\xe8\xbf\xac\x6c\x7f\xc1\xa3\xda\x54\x2a\x17\xc6\x6c\ \x4c\xdd\x4c\x3b\x69\xa9\x15\xbb\x6b\x3c\x89\x4c\x24\x26\x48\x9e\ \xd6\x8d\xf5\x05\x66\x84\x51\xe1\xfd\x9c\x2f\x62\xdf\x72\xae\x97\ \xbe\x29\xd8\x9c\xed\x13\xe2\xe0\x13\xf7\x60\xfb\x29\x65\xdd\x56\ \x66\xe0\xc4\x0d\xbe\x05\x43\xd7\xee\x57\xed\x50\x95\x87\xef\xb6\ \xd4\x57\xc4\xb7\x82\x1a\x24\x21\x37\x77\x92\xde\xcf\x3c\x5f\x5a\ \xa3\xa0\x25\x11\xec\x94\x69\xb4\xd2\x69\xf5\x6b\x35\x46\xd2\x12\ \x63\xb6\xb7\xd1\x74\x5a\xcb\xd9\xb1\xfd\xe0\xfb\x04\x84\xe2\x6d\ \x29\xe9\xca\x00\xd9\xb6\xf2\x23\x57\x80\x9c\x22\x60\xdd\xae\x73\ \x55\x5a\x86\xb6\x39\xbc\x37\x48\x75\x00\x7d\xe8\x12\xd4\xe8\xd8\ \x73\xa0\x75\x84\x85\x93\xf4\x5e\x32\xd7\xa4\x93\xc4\x12\xce\x0e\ \x5f\x5a\xea\xca\x1c\xd8\xb0\x53\xcc\xc2\x5e\xcf\x0e\x2f\x06\x34\ \xe3\xe8\xfb\x04\xde\x16\x12\x52\x2b\x91\x29\x2a\xf2\x6e\x02\x85\ \x77\x01\x07\x9f\xd8\xf2\x6e\xfd\x46\xca\x55\x2a\xa8\x7d\x84\x84\ \x7a\x07\x4d\x7d\x2f\xe6\x29\x5f\x71\xa6\xb4\x3a\xf9\x22\x10\x42\ \xaf\x67\x32\x53\xee\x6c\xd7\xf1\xb4\xc4\x9a\x9b\xfb\x73\x72\x66\ \x9e\xf8\x30\x81\x37\x85\x34\xd8\xbf\x5b\x24\xd1\x8a\x8a\xc2\x3b\ \x40\x16\x65\xed\x67\x31\xf9\xf7\xef\xdb\x74\x1c\xc7\x7b\x3f\x7e\ \x64\xba\x09\x6b\xdb\x6a\x19\xd9\xcd\x27\x89\x0b\xf1\xd9\xa5\xd5\ \x51\x6c\xd3\xf9\x7c\x5b\x3f\x86\x73\x32\x87\x9b\xdb\x5a\xb6\x2d\ \xbb\xe5\xc0\xf9\xfa\x09\x08\x57\x33\xa2\x93\x40\xc2\xc1\x67\x59\ \xd9\xb9\x3f\x94\x75\x31\xeb\x0f\x3d\xef\xa1\x6f\xa5\x78\xd5\xb7\ \x22\xd1\xd7\xf5\x0d\x35\xc3\x71\x01\x9d\x0d\x6d\xe6\x2e\x4d\xde\ \x97\xff\x44\x51\x0c\xac\xe2\xe4\x8c\x63\x47\x45\x72\x9c\x2f\x60\ \x38\x83\x39\x33\x12\x38\xe4\x8e\x5f\xf9\x38\x81\xb7\x24\x74\x4c\ \x26\xae\xb1\x9a\xb4\xf8\xe1\xa1\xb3\xa5\x35\x81\x4b\x15\x15\xec\ \x96\x28\xc1\xa6\xfa\x8e\x5e\xe1\x68\xdf\xb0\x37\xb7\xec\x52\x19\ \x90\x5d\x0a\xec\xa3\x8d\xbb\xaf\xd3\x73\xe6\x49\x08\xa7\x82\x13\ \xf4\xf0\x55\xe0\xd2\xad\x86\x09\xbc\x21\xa1\xd1\x43\x5f\x2c\xe3\ \x4f\xb2\xcb\xd1\x6b\xb3\x2a\x1d\xfd\xe2\x1e\xaa\x77\xe9\x3b\x99\ \xdf\xb7\x79\xd7\x0a\x1e\xeb\x3d\x3c\x83\x53\xae\x65\xe5\x95\x3c\ \x3f\x98\x7b\xbd\x6a\xef\xd9\xe2\xea\x3d\x67\x8a\x6a\xf6\x9c\x2e\ \xaa\xc9\x3c\x55\x54\xb3\x9b\xd8\x75\x9c\x9f\x44\x46\x4e\x51\x8d\ \xb6\xb1\x43\x09\x97\x49\x1a\x3a\xab\x04\x5f\x3b\xfc\xd0\xe6\x97\ \xb1\x4c\x79\x7a\xab\xf6\x9d\x85\x30\x3a\x09\xea\x7c\x40\x85\xa6\ \xbd\x87\xba\xba\x71\xc4\xe6\x08\xe7\x86\x8e\xa9\x63\x91\x8e\x89\ \x63\x71\x7d\x50\xef\xda\x6f\x0f\xd7\xb8\x37\xe6\xc4\x56\x53\x85\ \x4f\xf0\x7f\x08\xd1\xb7\x9e\x30\x36\x51\x9d\x7e\x46\x84\x0b\xe1\ \xd5\x00\x1c\x89\xfe\x8d\xfd\xd9\xd0\x44\x15\xbe\x96\x0d\x9c\xf3\ \x6f\x46\xb5\xba\x2a\x2b\x1f\x83\xba\xea\xd9\x7f\xf7\xfa\xf2\xcf\ \xe8\x0b\x81\x86\xf0\x17\xce\x95\x4e\x3d\xa5\x4e\x62\x58\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x03\x00\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\x92\x49\x44\x41\x54\x48\xc7\xb5\ \x96\x4d\x4b\x54\x51\x1c\xc6\x7f\xe7\xde\x99\x3b\xbe\x0c\x86\x12\ \x96\xa6\x34\x44\x8a\x94\x42\x90\xd9\x62\x10\xfb\x0e\x6d\x6c\x97\ \x50\xab\x56\x2d\xdc\xf6\x2d\xa2\x45\x50\x14\xb8\xa8\x90\x12\x37\ \x51\x1b\xb5\x30\x2b\x2a\xad\xc1\x34\x4c\x57\xa1\xf9\x92\xa2\xce\ \x78\xe7\xde\x7b\xee\x69\x31\x67\x5e\x1a\xbd\xea\x38\x74\xe0\x70\ \x0f\x33\xdc\xe7\x77\xfe\xcf\xff\x65\x46\x28\xa5\xf8\x9f\x2b\x14\ \xf4\xc5\xdd\x3e\x61\x6d\x6e\x12\x4f\xed\xe0\xd4\xd4\xd1\xe9\xd8\ \x18\x4a\x21\xab\x22\xc4\x22\x95\x46\x53\xb5\x25\xe4\xab\x8f\xf2\ \xde\xf0\x67\xc6\x7c\x20\xa5\xef\x59\x7c\xe1\x40\x80\x30\xe9\x6f\ \xe9\xec\xbe\xb1\xb3\xb5\xb6\xde\xd4\xd6\x73\xca\xf3\x95\x81\x74\ \xbd\xda\x93\xad\xb5\xc7\xea\xcf\x44\x2c\x53\xb2\xb8\xd6\xdb\x3c\ \xf8\x89\xab\x02\x7e\x07\x86\xa0\x94\xda\x73\x3f\xb9\x73\x5e\x05\ \xad\xb4\x7e\x2e\xcd\xbe\x54\xbd\xed\x3c\x07\xaa\x82\xf4\x02\x01\ \x8f\xfa\x63\xa9\x20\x40\x62\x3a\xa1\x1c\x99\x39\x7f\x7f\xfb\x50\ \xdd\xea\xe1\x41\x10\xc0\x08\x8a\xcc\xf7\x3d\x2f\x73\xf2\x50\xa4\ \x80\x24\x60\x03\x2e\xd2\xdd\xc6\xd9\x49\x01\xd0\x16\xbf\x4e\xbc\ \xfb\x5c\x1f\x10\x87\xdd\x7a\xa1\x83\xeb\x20\x8d\xc0\x03\x14\xe0\ \x01\x16\xd1\x68\x05\x43\x43\x4f\x59\x59\xd9\xe6\xc2\xe5\x2b\xac\ \x27\x7d\x80\x76\x60\x8e\xa2\x7c\x18\x07\x03\x5c\x14\x2e\xe4\xb6\ \x4d\xf3\xe9\x13\xb4\x9c\x6d\xa0\xb5\xb5\x8e\x8e\x8e\x18\x21\xec\ \xec\x65\xcd\x12\x22\x50\x05\x11\x48\x40\xa1\x10\x08\x14\x61\x33\ \xc4\xa5\xae\x8b\x80\x05\x44\x39\x16\xb5\xd0\x74\x79\x24\x8b\x14\ \x3e\xe2\x1f\xa8\x0b\x08\x20\x0d\xd4\x90\xcd\x56\x49\x8d\x96\x5f\ \x36\x02\x85\xd2\x92\x99\x28\xd0\xd0\xac\xc3\xf2\x28\x80\xbc\x45\ \x00\x42\x23\x44\xb6\x11\xcb\x1d\x15\xf9\xfc\xdb\x45\xd2\x59\xbc\ \x2a\xf8\x44\x94\x63\x51\x5a\x5b\x91\x95\xcc\x98\x94\x91\xf4\xcb\ \x01\x88\x82\x24\x0b\x04\x46\xce\x26\x95\xcb\x84\x2c\xc7\x22\x00\ \x47\x77\xaf\x99\xcb\x42\x7e\x49\x9d\x27\xb7\x20\x5f\x25\x27\xd9\ \xd5\x10\xb3\x28\x2a\x89\xc2\xd0\x1d\xee\x80\x71\x24\x8b\x8c\x1c\ \x40\x10\xce\x95\xa5\x42\xea\x58\x0c\x20\x0c\x54\x53\x11\xae\xc8\ \xbe\x60\x94\x18\x81\xa3\xab\x48\x22\xf0\x01\x1f\x41\x15\x10\x03\ \x8e\xeb\x01\x38\xc7\xea\xea\x46\xe9\x00\x21\x30\xd0\x16\x08\x4c\ \x2d\xd8\x06\x78\x6c\x2d\x8c\x31\xfb\x61\x82\xd1\x91\xf7\xfe\xb3\ \xc1\xaf\xf3\x3f\x37\x99\xd1\x83\x2e\x79\x68\x40\xc4\xaa\x8c\x40\ \xa3\x1e\x92\x0d\xa4\x96\x12\x8c\xbf\xb8\xcd\x9b\xd1\x71\x7f\xe8\ \xf5\xf2\xb7\xa9\x35\x26\x81\x19\xe0\x0b\xf0\x03\x58\xd4\x15\x71\ \x38\x40\x63\x9d\x50\xb0\xc4\xc8\xc0\x63\x86\x07\xee\x3b\xe3\x93\ \x72\x61\x62\x91\x77\x5a\x30\x01\x4c\x03\xcb\x05\xcd\xb0\xb7\x13\ \x41\xff\x2a\xba\x9a\xc5\xb5\xe4\x06\x37\xe7\xb7\xf9\x63\xc3\x28\ \x30\x05\xcc\x03\xbf\xf6\xab\xcb\x5d\x7a\x41\x3f\x99\x3d\x2d\x00\ \x44\x81\xfa\xbd\xe6\xfc\x7e\x80\xc2\xfd\x17\xfb\xc6\x93\x82\x32\ \x2c\x7f\xcc\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\xb8\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\x4a\x49\x44\x41\x54\x48\xc7\xc5\ \x56\x61\x4c\x5b\x65\x14\xfd\x6c\x32\xd3\x69\x20\x0e\x65\x24\x4b\ \x37\x56\x5a\x8a\xb3\xd2\x4e\xa5\x42\x71\x43\xc0\xb5\x94\x10\xe6\ \x02\x42\x13\xaa\x63\xa3\x63\x63\xd9\x18\x59\xb7\xa6\x01\xa3\x08\ \x88\x61\x0b\x29\xb2\xcd\x29\x66\xba\x81\x84\xda\x8a\x89\xd4\x00\ \x29\x43\x33\x1c\x20\xa5\x50\xd7\x6a\x57\x4a\x23\xc4\x6c\x51\x59\ \x94\x31\xbb\xf8\xc3\x6e\xbb\xde\xbb\xbc\x45\xd4\x15\x12\x33\xb5\ \xc9\xc9\x4b\x5f\xdf\xbd\xe7\xfb\xce\x3d\xe7\x7d\x65\x00\xc0\xfe\ \x4d\xb0\xff\x8d\x00\x3f\x31\x08\x85\x4a\xa5\x32\x28\x14\x8a\x23\ \x3c\x1e\xef\x65\xfc\xbe\x1f\x51\x8c\x50\x22\xe2\x10\xbc\x7f\x44\ \x80\x9f\x8d\x52\xa9\xb4\xb2\xae\xae\xee\xe3\xfe\xfe\xfe\x4b\x1e\ \x8f\xe7\x46\x30\x18\xbc\x35\x3e\x3e\x7e\xd5\x66\xb3\xf9\x4c\x26\ \x93\x5d\x22\x91\x18\x39\xa2\xfb\x97\x22\xba\x5b\xf3\xf4\xb2\xb2\ \xb2\x77\x1d\x0e\x87\x3f\x10\x08\x80\xd3\xe9\x84\xb6\xb6\x36\x30\ \x9b\xcd\xd0\xd1\xd1\x01\x13\x13\x13\xe0\xf5\x7a\xc1\x62\xb1\x04\ \x0b\x0b\x0b\x3b\xf1\xf9\x1c\xc4\xca\x48\x24\x7f\x5b\x39\x35\x1f\ \x19\x1d\xfd\xde\xed\x76\x83\xe9\x95\xda\xdf\xf2\xf7\x1b\xaf\x15\ \x34\x1c\x0b\x6b\xdf\xb6\xc2\xd6\xba\x37\x43\xbb\x1b\xcd\x3f\x77\ \x5a\x3f\x0a\xe3\x6e\xc0\x6a\xb3\x5d\xd1\x68\x34\x16\xac\xcb\x8c\ \x44\xf2\x27\xcd\x49\x16\x5a\x39\x35\x2f\x3d\x5c\x73\xf5\xe9\x43\ \xaf\x4f\xa5\x34\x77\x06\x59\x4c\x1a\xb0\xd8\xcd\xc0\x56\x67\x82\ \xac\xd9\x32\xf3\xc2\x89\xae\xe9\xf6\xbe\xb3\x0b\x93\x93\x93\x50\ \x5f\x5f\x3f\x23\x10\x08\xea\xb0\x5e\x4c\x72\x2d\x45\xa0\x20\xcd\ \x49\x16\x5a\x39\x35\x97\x1f\xfd\xc0\xa9\x3e\xd5\xe7\x79\x76\x5b\ \x25\x3c\x5f\x56\x0b\xcf\x14\x18\x20\xf3\xcc\xe0\xcc\xa3\x6d\x03\ \x5f\x96\x7f\x78\xd6\x37\x3c\x3e\x11\xee\xee\xee\x86\xdc\xdc\xdc\ \x41\xac\xcf\x47\x44\xfd\x75\x17\x8b\x09\x0a\xec\x76\xbb\x97\x34\ \xd7\x54\x1c\xfc\x51\xd4\xf0\xfe\x68\x71\xa7\xe3\x2b\xe3\x39\x9f\ \xf7\xc5\x7d\x47\x60\xbb\xa1\x15\x4a\x4d\x27\xe1\xc0\xc8\xcc\x45\ \x79\x8f\xff\xb3\x64\xab\x7b\xe0\xd4\xb9\xf1\x1f\x48\xaa\x92\x92\ \x92\x20\xd6\x57\x21\x62\x11\x2b\x22\x11\xec\x45\x69\xe6\x69\xa0\ \x4a\x43\xfd\x34\x8b\x51\xc2\xc6\xac\x72\x78\xae\xa8\x1a\xb6\xe8\ \x5e\x83\xac\x97\x1a\x21\xa7\xbc\x19\x32\x74\x0d\xc0\xe2\x0b\x81\ \xad\xc9\x83\xc3\x03\x6e\xaf\xcf\xe7\x83\x8a\x8a\x8a\x6b\x58\xff\ \x06\x42\x80\xe0\x47\x22\x30\xa1\x15\x6f\x92\x5b\xe4\xb5\x6f\xb9\ \x59\x6c\x06\xac\x4c\x2a\x86\x98\x94\xdd\xb0\x3e\xdb\x00\xa2\x1c\ \x13\xac\xdb\x62\x84\x28\xc5\x5e\x60\x49\xdb\x81\x25\xea\x60\x6b\ \xef\xd7\xe7\xa7\xa6\xa6\x88\xe0\x26\xd6\x1f\x47\x08\x11\x0f\x44\ \x22\xd8\xe7\x72\xb9\xe6\xc9\x8a\xaa\x57\xcd\xd3\x34\x50\x96\x50\ \x04\x6c\xc3\x4e\x84\xfe\x0f\x3c\x86\x90\xd2\x75\x27\xd4\x8c\x04\ \x2f\xf8\xfd\x7e\xd0\x6a\xb5\xb4\x83\xa3\x88\x04\xc4\x83\x91\x08\ \x8a\x29\x44\xe4\xf3\x8a\xa6\xd6\xb9\xa4\x63\x3d\x43\xc2\xf7\xbe\ \x19\x13\xda\x7e\x1a\x63\x22\x5c\xb1\x04\x89\x24\x7a\x10\xdb\x43\ \xc3\x8a\xb1\x5f\x7a\x9e\x1a\x9a\xfb\xd4\xea\xf9\xf6\x32\x39\x09\ \xd3\x4e\x33\xa8\x5e\x6e\x07\x4a\x4a\x28\x85\x88\x7c\x5e\x7c\xd2\ \x7a\x31\xfe\x84\xcb\xb5\xf6\xf4\xe5\x49\xb6\x06\x35\x17\x92\x2c\ \x7a\x10\x7d\x12\x1a\x4d\x19\x99\xb7\x1b\xc7\x66\xdd\x9e\xa9\x40\ \xb8\xa5\xa5\x05\x64\x32\xd9\x10\xd6\xef\x58\x6e\x06\x71\x14\x7f\ \x4a\x28\x39\xa3\xbd\x6f\x70\x41\xdf\xf5\xb9\x3f\xb1\xfd\xc2\x17\ \x2c\x2e\x0f\xd8\x7a\xdd\xed\x5d\x24\x3b\xe6\x1c\xd4\xbc\xd7\xed\ \xfb\x75\x78\x78\x18\xd4\x6a\xf5\x42\x74\x74\xf4\x19\xac\xdf\xbc\ \x9c\x8b\x78\xb4\x0b\x8a\x3f\x25\x94\xb6\x4e\x3e\x27\x2b\x92\x5b\ \x68\xa0\xa4\x39\xc9\xe2\xf1\x07\xc2\xd4\x5c\xbf\x6b\xd7\xad\xf4\ \xf4\xf4\xeb\x58\xd7\x8b\xa0\xb0\xc9\x23\xe6\x80\x23\xa1\x17\x57\ \x0e\xc5\x9f\x12\x4a\x21\xa2\xdd\x90\x15\xc9\x2d\x34\x50\x22\x26\ \x59\xf0\x99\x05\xa5\x52\x19\x4a\x4d\x4d\x85\xfc\x34\xe1\xf5\x83\ \xdb\x36\x5c\xc1\xda\x03\x94\xe8\xa5\x08\x78\xdc\x3b\x25\x93\xe2\ \x4f\x09\xa5\x10\x91\xcf\xc9\x8a\xe4\x16\x1a\x28\x69\x8e\xb2\x9c\ \xe6\xf3\xf9\xce\xac\xc7\xe3\x6f\xd4\xe4\x25\xc2\x3b\x7b\x52\xa0\ \x56\x27\xbb\x44\x6e\x5c\x4c\x72\xb7\xb7\xe9\x1d\x12\x31\x17\xff\ \x2a\x2e\x44\xc7\x39\x2b\x56\x73\x03\xcd\xb8\x8f\xb1\xd1\x4d\x6b\ \x57\x85\x2a\x37\xad\x83\xa6\x22\x29\x74\x54\xa5\x41\xe3\x8e\x27\ \x66\x17\x93\x44\x3a\x0f\x78\x9c\x5c\x51\xdc\xe0\x04\x9c\x05\x13\ \xb8\xab\x80\xbb\x2f\x47\x92\xf3\xd9\xa2\x47\x42\xc6\x6c\x21\x98\ \x4b\x92\xa1\xeb\x50\x3a\x34\xe9\x9f\xbc\x4d\xb2\xec\x91\xc9\x11\ \xad\x20\xeb\x91\xbf\x29\x44\xdc\x95\xcf\xdd\xa7\xdf\xc5\x48\xd2\ \xaf\x12\xae\xfa\xae\x5a\x2d\x82\xd6\x52\x39\xec\xd1\x88\x7d\x78\ \x5f\x7b\xcf\xce\x64\x8e\xa4\x5b\x23\x7e\x78\x36\x2f\x79\x35\x35\ \x2f\x47\x3c\x74\x4f\x0f\x7d\x6e\x66\xa4\xbd\xf6\x4e\xf3\xff\xe4\ \x5f\xc5\xef\x49\x57\xd6\xb7\x03\x79\xba\xe9\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\xca\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x04\x5c\x49\x44\x41\x54\x48\xc7\xc5\ \x56\x0b\x4c\x5b\x05\x14\xad\x4d\x66\x98\x06\xe2\xe6\x67\x31\x96\ \xb1\xd2\x82\x9b\x08\x1d\x4a\x65\x6d\xdc\x84\x39\x4a\xc9\x02\x59\ \x40\xa8\xa9\x33\x5b\xda\xe1\x30\x8e\xb1\x8d\x35\x08\xc6\x91\x82\ \x43\x9c\x13\xdc\x4f\xc5\xec\x47\x45\xa0\x15\x32\xa9\x02\x29\x43\ \x03\xa3\xed\xa0\xa5\x6f\xb4\xae\x2b\xa5\x19\x6c\xb2\xa8\x2c\xc2\ \x8a\x25\xc6\xd8\x8d\xeb\xbd\xe6\x2d\xa2\xae\x90\x98\xa9\x4d\x4e\ \x5e\xfa\xfa\xee\x3d\xef\x9e\x7b\xce\x7b\xe5\x00\x00\xe7\xdf\x04\ \xe7\x7f\x23\xc0\xcf\x52\x84\x38\x2d\x2d\x6d\x8f\x58\x2c\x7e\x87\ \xcb\xe5\xbe\x81\xdf\x77\x20\xf2\x10\x12\xc4\x32\x04\xf7\x1f\x11\ \xe0\x67\x75\x5c\x5c\x5c\xa1\x56\xab\x6d\xed\xec\xec\x1c\x77\x3a\ \x9d\x37\x7d\x3e\xdf\xac\xcd\x66\xbb\x61\x30\x18\xdc\x25\x25\x25\ \xc6\xd8\xd8\x58\x0d\x4b\x74\xef\x7c\x44\x77\x6a\x2e\x55\xa9\x54\ \x1f\x9b\x4c\x26\x8f\xd7\xeb\x85\x81\x81\x01\xa8\xab\xab\x83\x9a\ \x9a\x1a\xd0\xe9\x74\x30\x38\x38\x08\x2e\x97\x0b\x9a\x9a\x9a\x7c\ \x39\x39\x39\x0d\x78\x7d\x3a\x62\x71\x28\x92\xbf\xdd\x39\x35\xb7\ \x58\xad\xdf\x31\x0c\x03\x25\x6f\x96\xff\x9a\xb9\x43\x33\x9d\x5d\ \x79\x38\xa8\xf8\x50\x0f\x59\xda\xf7\x03\xaf\xec\xaf\x99\x6c\xd0\ \x7f\x16\xc4\x69\x40\x6f\x30\x5c\x97\xcb\xe5\x4d\x58\x97\x12\x8a\ \xe4\x4f\x9a\x93\x2c\x74\xe7\xd4\x7c\xcb\xde\xb2\x1b\xcf\x14\xbf\ \x35\x9c\x74\xb0\xc1\xb7\xa9\xde\xf4\xcb\xe6\x56\x33\x28\x5b\x2d\ \xb3\x09\x07\x9b\x46\x5f\x38\xda\x38\x52\xdf\x71\xd6\xef\x70\x38\ \xa0\xa2\xa2\x62\x94\xc7\xe3\x69\xb1\x5e\x48\x72\xcd\x47\x20\x26\ \xcd\x49\x16\xba\x73\x6a\x2e\x3a\xf0\xc9\x80\xec\x78\x87\x53\x63\ \x72\x4c\x54\x9e\xbb\x38\x53\xd8\xe9\x98\x4e\x39\xdd\x3d\xba\xb2\ \xae\xeb\x7c\x7e\xf3\x59\xb7\xd9\x36\x18\x6c\x69\x69\x81\x8c\x8c\ \x8c\x6e\xac\xcf\x44\x84\xff\x75\x8a\xb9\x04\xd9\x46\xa3\xd1\x45\ \x9a\xcb\x0b\x76\xff\x20\xa8\x3c\x69\xcd\x6b\x30\x5d\xd0\xf4\xb8\ \x5d\x6f\x33\xe3\x9e\x2a\xe6\xdb\xcb\x55\x8e\xab\x57\x76\x5a\x46\ \x2f\x89\xda\x3c\x5f\xc5\xeb\x99\xae\xe3\x3d\xb6\xef\x49\x2a\xa5\ \x52\xe9\xc3\xfa\x22\xc4\xc3\x88\x45\xa1\x08\x5e\x45\x69\xa6\x68\ \xa1\x92\x3d\x15\x23\x31\xef\x36\xf7\xad\x7e\x4e\x05\xcf\xe7\x96\ \xc2\x86\x17\xf7\x41\x6a\x6e\x19\xa4\x2b\xcb\x61\x5d\xf6\xeb\xc0\ \x79\x2c\x0b\x12\x4d\x57\x3a\xf6\x76\x31\x2e\xb7\xdb\x0d\x05\x05\ \x05\xd3\x58\x5f\x85\xe0\x21\xc2\x42\x11\x94\xa0\x15\x6f\x91\x5b\ \x44\xe5\xc7\x98\xc7\x0f\xb7\xf5\x2e\x5e\x91\x09\x4b\x13\x55\xb0\ \x22\x75\x37\x08\x36\x14\xc3\xf2\x94\x5d\x10\x9e\x98\x0f\x9c\xd8\ \x97\xe1\xe9\xde\x89\x2f\xb2\xda\xbf\xe9\x1b\x1e\x1e\x26\x82\x5b\ \x58\x7f\x04\xc1\x47\xdc\x17\x8a\xe0\x35\xbb\xdd\x3e\x45\x56\x4c\ \xdb\x57\x33\xb2\xf2\xd8\x97\x3d\x9c\x47\xe5\xc0\x11\x6e\x06\xce\ \x2a\xf5\x1f\x78\x02\x11\xa7\x86\x24\xf3\xa4\xb1\xcc\xe2\x1b\xf2\ \x78\x3c\xa0\x50\x28\x68\x82\x03\x88\x68\xc4\xfd\xa1\x08\xf2\x28\ \x44\xe4\xf3\x82\xea\x43\x13\x34\x01\xff\xc4\xc5\x7e\xbe\xe1\xc7\ \x7e\xc1\x99\x80\x55\xd0\x16\xb0\x44\x9f\x09\x9c\x17\x1a\x03\x66\ \x71\xff\x4f\x6d\x34\x81\xde\x79\xf9\x1a\x39\x09\xd3\x4e\x3b\x28\ \x5d\x68\x02\x09\x25\x94\x42\x44\x3e\xcf\xfb\x40\x7f\x29\xea\xa8\ \xdd\x1e\x79\xea\x9a\x83\xf7\xa9\x7f\x88\xd7\x3c\xc3\x20\x2e\x08\ \x3e\x0f\x58\x93\x2c\x53\x46\x4d\xff\x18\xe3\x1c\xf6\x06\x6b\x6b\ \x6b\x21\x21\x21\xa1\x17\xeb\xb7\x2e\xb4\x83\x65\x14\x7f\x4a\x28\ \x39\xa3\xbe\xa3\xdb\xaf\x6e\xfc\xda\x13\x53\x3f\x74\x2e\x4a\x37\ \x6e\x8b\x6c\x98\x74\x08\x5a\xa7\xac\xf1\xa6\x09\x13\x35\x6f\x67\ \xdc\x3f\x9b\xcd\x66\x90\xc9\x64\xfe\x88\x88\x88\xd3\x58\xbf\x76\ \x21\x17\x71\x69\x0a\x8a\x3f\x25\x94\x46\x27\x9f\x93\x15\xc9\x2d\ \xb4\x50\xd2\x9c\x64\x71\x7a\xbc\x41\x6a\xae\xde\xb6\x6d\x56\x2a\ \x95\xce\x60\x5d\x3b\x82\xc2\x26\x0a\x99\x03\x96\x84\x1e\x5c\xe9\ \x14\x7f\x4a\x28\x85\x88\xa6\x21\x2b\x92\x5b\x68\xa1\x44\x4c\xb2\ \xe0\x35\x7e\x89\x44\x12\x48\x4e\x4e\x86\xcc\x35\xfc\x99\x5d\x9b\ \x56\x5d\xc7\xda\x9d\x94\xe8\xf9\x08\xb8\xec\x33\x25\x85\xe2\x4f\ \x09\xa5\x10\x91\xcf\xc9\x8a\xe4\x16\x5a\x28\x69\x8e\xb2\x9c\x0a\ \x0b\x0b\x1b\x48\x7d\x32\xea\x66\xd9\xc6\x18\xf8\x68\x7b\x12\x94\ \xbf\x94\x30\x4e\x6e\x9c\x4b\x72\xa7\xa7\xe9\x6d\x12\x21\x1b\xff\ \x22\x36\x44\x47\x58\x2b\x96\xb2\x0b\x5d\x77\x0f\x87\x63\x5d\x1b\ \xb9\x24\x50\xf8\xec\x72\xa8\xce\x8d\x03\x5d\xd1\x1a\xd8\xbf\x35\ \x71\x6c\x2e\x49\xa8\xf7\x01\x97\x95\x2b\x9c\x5d\x1c\x8f\xb5\x60\ \x34\x7b\xe4\xb1\xe7\x45\x48\xd2\xb7\x3e\xfa\xa1\x80\x66\x3d\x1f\ \xde\x53\xc6\x43\x63\xb1\x14\xaa\xd5\x4f\xfd\x4e\xb2\xe0\x2b\x93\ \x25\x5a\x44\xd6\x23\x7f\x53\x88\xd8\x63\x18\x7b\x9e\x7e\x17\x22\ \x49\x67\x1a\x7f\xc9\xd5\x52\x99\x00\x0e\x6d\x11\xc1\x76\xb9\xd0\ \x8d\xe7\x15\x77\xed\x9d\xcc\x92\xb4\xc8\x85\x0f\x8e\x6d\x8c\x7f\ \x84\x9a\xe7\x23\x1e\xb8\xab\x2f\x7d\x76\x67\xa4\xbd\xe2\x76\xf3\ \xff\xe4\x5f\xc5\x6f\x26\x4d\xee\x1d\xf0\xc3\x08\x75\x00\x00\x00\ \x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\x23\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x03\xb5\x49\x44\x41\x54\x48\xc7\xb5\ \x96\x4d\x4c\x5c\x55\x14\xc7\x7f\x6f\xbe\x87\x19\xa6\x83\x0c\xb4\ \x60\x1b\x09\x25\x4e\x44\x0c\x56\xa3\x4d\xb4\x8d\x35\x52\x8d\xc6\ \x60\xfd\x58\x10\x83\x2c\x48\x8c\x31\x76\xe1\xae\x6e\x4d\x77\x2e\ \xba\x6b\xba\xa8\xc4\x98\x36\xb3\x6e\x58\xd8\x26\x65\x23\xa6\xb8\ \x80\xa8\x69\x1b\x2d\xa5\x15\xaa\x7c\x07\xda\x0e\xf3\xc1\x9b\xf7\ \xee\xbd\xc7\xc5\x1b\x06\x86\x40\x03\x89\xdc\xc5\x7b\xf7\xde\x97\ \x7b\x7e\xf7\x9c\xff\x39\xf7\x3e\x4b\x44\xd8\xcb\xe6\x63\x8f\x5b\ \x60\xad\xf3\xe2\xa7\xe7\xfb\xf6\xa7\xf6\x7d\x5d\x13\x0e\x44\x98\ \x7d\xf0\x74\xb2\x94\xdd\x99\x05\xf1\x1e\x4b\x89\x03\xca\x57\xdf\ \x38\x5f\x2c\xda\x85\x7f\xa6\x17\x3f\x1b\x1f\x3c\x33\x5e\x05\x38\ \xd0\x90\x38\xf3\xcd\xe7\x6f\xb7\xdf\x99\xce\x92\xbb\x3a\xc5\xcb\ \x77\x7f\xdf\xd5\x4e\x7f\x69\xff\x84\xba\x57\x3b\x9f\xaa\x0d\xfb\ \x19\x1a\xfe\xe3\x7b\xe0\x78\x15\x20\x1a\x0e\x84\xff\x9c\x5e\xe1\ \xee\xcc\x0a\xcb\xbf\xde\xa4\x79\xf4\xda\xae\x00\xbf\x59\x2f\xd0\ \xd8\x90\xc6\x68\x4d\x3c\x12\x4a\xfd\xff\x1a\x08\x18\xad\xd1\xda\ \x20\x5b\x69\xb0\xb9\xc5\x5a\x5a\x78\x77\x6c\x8c\xe2\xec\x2c\x13\ \x17\x2e\x50\xd7\xd9\x49\xc3\xb1\x63\x68\xdb\xe6\xe7\xee\x6e\x5e\ \xcf\x64\xf0\x47\xa3\xe4\x27\x27\xb9\xd1\xd3\x83\x88\xa0\xb5\x41\ \x6b\xbd\x26\xcc\x93\x01\x00\x73\x43\x43\x8c\x9d\x3e\xcd\x6b\x97\ \x2f\x53\x98\x9a\x62\xa4\xb7\x97\x78\x5b\x1b\x87\xfb\xfb\x01\x18\ \xe9\xeb\xa3\xb4\xb4\x54\x76\x40\x30\x46\x7b\x00\xd9\x61\x9a\x36\ \x75\x75\xf1\xc6\xe0\x20\xf7\x2e\x5e\xac\xcc\x15\xa7\xa7\x09\xd7\ \xd7\x03\xd0\x79\xf6\x2c\x87\x4e\x9d\xaa\x84\x48\x29\x8d\x52\x7a\ \xeb\x34\xdd\xce\x83\x1b\x3d\x3d\x1e\xec\xe4\x49\x12\xe9\x34\xf5\ \x47\x8f\xf2\xe8\xd6\x2d\xea\x8e\x1c\x61\xa4\xaf\x0f\x63\xdb\x9e\ \x7d\x91\x0a\x40\x82\x3b\x08\x91\x9b\xcb\x31\x7f\xfd\x7a\x65\xbc\ \x38\x3c\x4c\xe3\x89\x13\xe4\x26\x26\x98\xbc\x74\x89\x50\x32\x89\ \x28\xb5\xae\xb1\x08\x5a\x69\xb4\xd2\x55\x56\xb7\x05\x38\xcb\xcb\ \xdc\x1f\x18\xa8\x8c\xa7\x32\x19\xa6\x32\x99\xca\xf8\xce\xb9\x73\ \xd5\x49\x54\x09\x91\x02\xac\xed\x01\x96\xcf\xc7\xe3\x78\x0a\xc7\ \x1f\xc2\x27\x66\x47\x19\xba\x1a\xaa\xc1\x0e\xd7\x60\x55\x34\x08\ \x3c\x01\x00\xa4\xde\xe9\xe6\x4a\x6b\x1a\xad\x3d\x80\x18\x83\x08\ \x88\xac\xbf\x8d\x08\x62\x04\x63\x04\xf1\xfb\x09\x36\x1d\x44\x29\ \xe5\x01\xc4\xbf\x35\x40\xc4\x5b\x10\x4d\xc4\x89\x3e\xd3\x4a\x2e\ \x57\x44\x8b\x29\x03\xbc\x6f\xc6\x18\x44\x0c\x5a\x7b\x42\x06\x83\ \x01\xc4\x08\x58\x82\x72\x0d\x4a\x29\x84\xd0\x16\x80\x0d\x3b\xba\ \x7d\x73\x9c\xda\x90\xe6\xa3\xe3\x07\xf1\x59\x82\x11\x83\x31\x06\ \xa5\x34\x46\x6b\x94\xd6\x28\x57\x31\xff\x68\x95\xdb\x73\x16\xb5\ \xa9\x7a\x1e\xfc\x3d\x43\x24\x1a\xc6\x75\xd5\xd6\x95\x2c\xe5\x62\ \xd1\xda\xa5\x26\x16\xa5\x39\x29\xbc\x94\xae\xe3\x87\x81\x1f\xb9\ \xfa\xd3\x35\x44\xe0\xcb\xaf\xbe\xe0\xf9\x8e\x76\x1c\xc7\xc1\x29\ \x29\x9a\x12\x7e\xc6\x17\x0c\x87\x0e\x35\x33\xf3\xef\x02\xae\xab\ \x70\x5d\x55\x55\x68\x81\xcd\x99\x60\x8c\x78\xe7\x8a\x31\xd8\x76\ \x89\xb9\xb9\x79\xee\x4d\xdc\x07\xe0\xe1\xf2\x43\x0a\xf9\x3c\x8e\ \xe3\x50\x2a\x95\xb0\xed\x12\x5a\x47\x2b\xe1\xf5\x00\xee\xf6\x85\ \x26\xc6\x60\xb4\xf1\xca\x5e\x1b\x6c\xdb\x2e\xa7\x5d\x39\x5b\xec\ \x55\xf2\xf9\x3c\xb6\x5d\xc2\xb6\x6d\x6c\xdb\xc6\xe8\x70\x79\xad\ \x54\x3c\xd8\x78\x4b\x06\xd6\x17\xbb\x56\x34\xec\x43\x1b\xaf\xd4\ \xb5\xd1\x14\x0b\x05\x0e\xb7\xb5\xf2\x56\xd7\x9b\x18\x63\x88\xc5\ \x62\x64\xb3\x2b\x15\xe3\xab\xab\x36\xda\xa4\xd6\x2b\xd9\x75\x51\ \xae\xaa\xf6\xc0\xb2\x2c\x0b\xb0\x3a\x3e\xf8\xae\x7f\x74\xf4\xaf\ \xc1\xfd\x4d\xa9\x44\x21\x16\x20\x12\x34\x2c\x3c\x76\x79\xb6\xe3\ \x15\x5a\xd2\x9d\xb8\x8e\x8b\xe3\xb8\x64\x6d\x07\xc7\x09\x52\x72\ \x0c\x8e\x82\x64\x3c\x4c\x50\x1c\x52\xc9\x08\xd1\x80\x66\x5f\x2c\ \xa4\x6a\x22\xc1\x49\xcb\xb2\xfc\x80\xb1\x80\x08\xd0\x0c\xc4\x1a\ \x9e\x7b\xaf\xe3\xfd\x0f\x3f\xee\x0d\x05\x03\xc1\x35\xa5\x84\xf5\ \xd3\x57\x36\x8a\xc5\xe6\x39\x6f\xda\x6f\xdc\xb9\x2b\x03\xdf\x9e\ \x5f\x5c\x9c\xc9\x02\xf3\x56\xf9\x44\x8d\x03\x21\xc0\xbf\xa1\xce\ \xad\xdd\x5f\x39\x55\x7d\x07\xc8\x59\x7b\xfd\xdb\xf2\x1f\x88\xe0\ \x23\xf6\xca\xd4\xed\xc7\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x05\xb0\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x05\x77\x49\x44\x41\x54\x48\xc7\x95\x55\x7b\x4c\x53\x77\ \x14\xfe\x0a\x2d\x7d\xf0\x1c\x94\x67\x79\xad\x16\x61\x20\x0c\x21\ \x19\xf1\x31\xdc\x26\x81\xe1\x24\x4e\xc4\x2d\x19\x8b\xd1\x18\x47\ \x32\x97\x98\x2d\x66\xce\x18\x97\x91\x68\xd8\xf6\xc7\xfe\x71\x4c\ \xb7\xb8\x64\x13\x1d\x99\x64\x66\x59\x8c\xc9\x04\x8c\x03\xff\x90\ \x81\x0a\x4c\x10\xf7\xc0\x29\xe3\xfd\xa8\xb4\xb4\xbd\x6d\x6f\x7b\ \x77\xce\x0f\x0a\x3a\x75\x73\x27\x3d\xf9\xdd\x7b\x7b\xef\xf7\x9d\ \xf3\x9d\xef\x77\xaf\x4a\x51\x14\x94\x96\xed\x85\x5f\xf6\x69\xb2\ \x73\x0a\x3e\x8e\x7a\x42\x1d\x91\x9f\x9b\x7c\x57\xf2\xf8\x8b\x64\ \xd9\x27\x5b\xcc\x89\x06\xaf\xec\x5b\xa1\x09\xd1\xea\xbd\x6e\xd5\ \xd4\xd6\xaa\x97\x0b\x26\x67\xfa\x86\xf0\xb8\xc1\x04\x1b\x36\xec\ \x47\x59\xd9\xbb\xd8\x52\xb5\xff\xa4\xf2\x1f\xf1\xd5\x89\x16\x85\ \x1e\x4b\xfd\x5f\x04\x80\x9a\x52\xc5\xa7\xaa\xfa\x63\x97\x05\x90\ \x83\x72\xda\xb5\x94\x56\xf7\x3c\x81\x97\xd2\x64\x5a\xf9\xcd\xe3\ \xe2\x07\xcd\x2f\x4c\xa0\x11\x7c\x0d\x5f\x7f\x51\x77\x6b\x06\x70\ \xd3\x89\x4d\x5a\xca\xbb\x4e\x60\x4c\x9a\xbf\x73\x53\xd5\xeb\x95\ \xb4\xa4\x3f\x36\x41\x72\xc2\x53\x30\x25\x64\x23\xde\xb8\x02\x7d\ \xd7\x5a\xbf\xff\xfd\xd7\x39\xb8\x7c\x80\xcb\x0b\x38\x3c\x4b\x69\ \x9d\x03\xe8\x87\xc2\x55\xeb\xb4\xb4\x14\xff\x13\x2c\x29\x29\x09\ \xd1\xd1\xd1\x0f\x12\x78\x65\x2f\x64\xaf\x17\x3e\x1f\xa1\xaa\x54\ \x3f\x77\xb4\x5f\xb6\xce\xd1\xa1\x83\xd4\x73\x78\x97\x72\x8e\x48\ \x26\xfc\x40\x56\x41\x21\x3d\xa5\x7d\x4e\xaf\x8b\x81\x5e\x1f\x8b\ \xca\xca\x4a\x1c\x3e\x7c\x18\xb2\x2c\x2f\x48\xbe\x14\xdc\x31\x9e\ \x59\xbb\x51\xfc\xe1\x27\x02\x99\xc8\x9a\xcf\x7e\xdb\xb1\xf1\xad\ \x92\x17\x5d\x32\x20\xfb\x02\xe3\x61\x6e\x3a\x9f\x05\x24\xaa\x3f\ \x3c\xfc\xc9\x82\x30\xfd\x38\xd2\xcc\x19\xf0\x52\x71\x0c\xee\xf7\ \xfb\x1f\x20\x10\x1d\x84\xea\x06\xa1\x56\xf5\x63\xeb\x16\x8b\x48\ \xaf\xa4\x34\xdd\xf8\x8d\x74\xa7\x6a\x27\xed\xc0\xf0\x14\x70\x6b\ \x0c\x18\xf8\x13\x18\x1a\x99\x2f\xeb\xfd\xda\x0f\x9e\x96\x24\x69\ \xb7\xc7\xe3\x79\x24\xf8\x62\x07\x7c\xdd\xef\x57\x81\x15\x92\x65\ \x7f\xf9\xae\x9a\xf5\x5f\xaa\x46\x25\x58\x87\x75\x88\x30\x00\xe6\ \x44\xc0\x40\x55\xeb\x82\x9c\x54\x91\x0b\x6a\xba\xf1\x85\xb7\x5f\ \x85\x2c\xfd\xf1\xe9\x89\x86\x93\x31\x44\xf2\x19\xc9\x3b\xc5\x04\ \x0f\x95\x28\x70\xad\xa5\xe5\x22\x91\x78\x93\x4e\x9f\x66\x17\x86\ \xc0\x35\x67\x43\xcf\xb5\x2e\x48\x23\x5e\xd8\x65\x37\x82\x78\x26\ \x92\x84\xa0\x20\x2d\x6e\xdd\x8e\x80\xc5\x92\x81\xe3\xc7\x8f\xd7\ \x4e\x4f\x4f\xd7\xb6\xb5\xb5\xdd\x24\xa2\xd5\xf4\xe0\xcc\x43\x08\ \x14\x1e\x30\x15\xe6\x3b\x90\x90\x90\x54\xd9\xdc\xfc\x13\x22\xc3\ \x43\x41\x12\xa0\xb3\xb3\x13\x92\xdb\x0d\x63\x6c\x3c\x22\xc2\xc2\ \xa0\xd1\x6a\x60\x30\x68\xe0\x71\xfb\xb1\x6a\xf5\x6a\xe1\x9c\xf1\ \xf1\x71\x64\x64\x64\x64\x46\x44\x44\x4c\x1f\x3a\x74\xa8\x80\x20\ \xaf\xdd\x47\x40\xc0\x45\xd9\xd9\xd9\x5f\xed\xda\xf5\x46\x96\xcb\ \xe5\x84\xc3\xe1\x80\xe4\xf1\xa2\xbb\xf7\x3a\x2c\x99\x59\x28\x24\ \xd7\xb0\xce\xa1\xa1\xa1\x88\x89\x89\xa1\x0e\xe6\xb7\x8f\xcd\x66\ \x07\x55\x4f\xc3\x57\x61\x64\x64\x04\xdb\xb6\x6d\x63\xb2\xce\xfa\ \xfa\xfa\xb8\x40\x27\x82\xc0\x60\x30\x7c\x58\x5d\x5d\x9d\x95\x91\ \x61\xc1\xf0\xf0\x30\x34\x1a\x0d\x74\x3a\x1d\x72\x72\x72\xd0\xdf\ \xdf\x8f\xf8\xf8\x78\x71\x8d\x63\x72\x72\x12\x56\xab\x55\x74\x37\ \x3b\x3b\x0b\xa7\xd3\x49\x8e\x0a\x87\xd9\x6c\x46\x5a\x5a\x1a\xca\ \xcb\xcb\x83\x9b\x9a\x9a\x3e\x9f\x98\x98\xd8\xba\x48\x40\x0e\x30\ \x04\x00\xb8\x1a\x3e\x66\x10\xde\x17\x99\x99\x99\x68\x6d\x6d\x85\ \xd1\x68\x14\x76\x54\xab\xd5\xc2\x31\x54\x14\xcb\x22\x8e\x9d\x4e\ \x17\x24\xa7\x1b\xd7\x7b\xae\xe3\xce\xed\x3b\xfc\x7c\x3e\x41\x19\ \xb9\x0b\x41\x30\x36\x36\xa6\xd0\xb0\x40\x5d\x20\x35\x35\x15\x51\ \x51\x51\x08\x09\x09\x11\xed\xeb\xf5\x7a\x14\x16\x16\x92\x1c\x36\ \x41\x4c\x3a\x83\xad\x39\x3a\x3a\x8a\xde\xde\x5e\xd8\xed\x76\x3a\ \x1e\xc3\xf0\xd0\x10\xa6\xac\x33\x88\x8b\x89\x43\x30\xd4\xb4\x83\ \xa0\xe3\x7a\x05\x01\x81\xfc\x95\x97\x97\x57\xc4\x72\x9c\x39\x73\ \x46\x00\x66\x65\x65\x21\x25\x25\x45\x00\x30\x19\x77\xc3\x3a\x0f\ \x11\x10\x13\xb3\x34\x81\xd5\x9c\x66\x41\xee\xca\x5c\x5c\x8c\x3c\ \x06\x7b\xb7\x0f\x3e\xb7\x10\x83\xb7\xa8\x5f\x10\xb8\xdd\xee\x1b\ \xc9\xc9\xc9\x28\x29\x29\x11\x1a\x33\x09\xbb\x87\x35\x2d\x2e\x2e\ \x46\x57\x57\x17\x06\x06\x06\xc4\xf0\x59\x26\xad\x56\x8b\x30\x72\ \x54\x6e\x6e\x2e\x96\x2f\x5f\x8e\xe8\xc8\x68\x38\x3d\x0e\xa8\x9c\ \xaf\xc1\x99\xac\x42\x93\x72\xee\x7e\x9b\x06\x07\x07\x47\xb2\x14\ \x1c\xb1\xb1\xb1\xa8\xa9\xa9\xc1\xe0\xe0\x20\xba\xbb\xbb\xd1\xd0\ \xd0\x20\x2a\x8f\x8b\x8b\x13\x69\x32\x99\xc0\xc5\x30\x01\xeb\xcf\ \x5d\xf4\xf4\xfc\x82\x53\x0d\xa7\xf0\x52\x49\x05\xe2\x92\x8d\xb0\ \x4b\x36\xff\x42\x07\x8a\x20\x20\x19\x26\xce\x9f\x3f\x8f\x35\x6b\ \xd6\x2c\x32\xa7\xa7\xa7\x0b\x20\xbe\xd6\xdc\xdc\x42\x32\x69\x10\ \x19\x19\x29\xe6\x30\x3d\x3d\x89\xab\x57\xaf\x0a\xb9\xdc\xbc\x47\ \xc8\x00\x55\xaf\x54\x22\x31\x31\x51\xb8\x6f\xd9\x32\x8b\x91\xe6\ \x13\x22\x4c\xc3\x9b\x8c\x7d\x4d\xeb\x3a\xd2\xbc\xb1\xae\xae\x2e\ \x91\x87\x1d\xd8\x80\x6c\xc7\x0b\x17\x2e\x08\x69\x74\xba\x10\x1c\ \x39\xf2\x09\x0d\xdc\x25\x86\x9d\x92\x92\x8a\x84\x84\x44\xe4\xe7\ \xe7\xa3\xa2\xa2\x82\x95\x80\x5f\xf1\x23\x2f\x37\xcf\xde\xd7\xd7\ \xf7\x3c\x41\xdc\x14\x20\x3c\xc4\x7b\x24\xab\x2d\x2a\x2a\x52\x5a\ \x5a\x5a\x16\x3f\x93\x34\x0f\xa5\xbd\xfd\xa2\xd2\xd6\x76\x45\xd9\ \xb3\xe7\x88\xb2\x73\xe7\x6e\x65\xdf\xbe\xbd\xca\xb9\x73\x67\x17\ \xef\xb9\x74\xe9\x92\x52\x5a\x5a\xca\xe3\xed\xa2\xfc\x88\x3f\x0f\ \x02\x8f\x09\xb8\x2d\xf6\xff\x3d\x91\x40\xf9\xc3\xe6\xcd\x9b\x15\ \xb2\xa3\xd2\xd1\xd1\xa1\x1c\x3c\x78\x40\x59\xbb\xf6\x59\x65\xc7\ \x8e\x5a\xe5\xe8\xd1\x2b\x8a\xcd\x36\x0f\xdc\xd8\xd8\xa8\x90\x19\ \xe8\x7b\x87\x1f\x29\xdf\xa1\x34\xdf\xf7\xb6\x0b\x10\x04\xb6\x7f\ \x20\xd8\x29\x14\xeb\xe9\xd5\x70\x83\x36\x1b\xbf\x0e\xad\x94\xdf\ \x51\xbe\x67\x32\xa5\xb7\x6f\xdf\xfe\xa6\x42\x3b\x98\x5f\x07\x8d\ \x94\xd5\x0b\x15\x3f\x18\x8f\x22\x60\x97\xdc\x13\x9b\x28\x4b\xb0\ \xf0\xe1\x5e\x88\xb2\x85\xd4\xe2\x5f\xe2\x6f\x80\x26\xfe\x87\xb0\ \x39\x3e\x91\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x02\xa1\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\x33\x49\x44\x41\x54\x48\xc7\xd5\ \x55\xcb\x6e\x13\x41\x10\xcc\xa7\xf1\x19\x7c\x8a\x4f\x08\x21\x0e\ \x88\x13\x42\x70\xe0\x03\x10\xe2\x06\x52\x78\x84\x6c\x0c\xd8\x24\ \xf1\x63\x6d\x92\xe0\xf8\xed\x5d\x7b\xfd\xb6\x13\x3b\x46\x11\x07\ \xef\xce\x14\xd5\x33\x10\x88\x64\x03\x07\xf6\xe0\x43\x6b\x7a\xaa\ \x6b\xba\x76\xbb\x35\x3d\x5b\x37\x6e\xde\x4e\xd0\xdc\x98\x2c\xb1\ \x25\xce\x61\x1f\xd8\xa9\x01\xaf\xcb\x0a\xdb\xe5\x08\x2f\x4f\x96\ \x70\x9a\x9a\x98\xc2\x5e\x0b\x48\x7a\x1a\xa9\x0e\x88\x01\xbb\x0d\ \xf2\xaa\x8a\xdc\xd0\xec\x93\x9e\x3d\x2b\xf8\xbb\xfa\x4f\x5f\x23\ \xdd\xd5\x90\xdc\x46\x20\x37\xb2\xc1\xbb\x6f\x95\x39\xe0\x34\x15\ \xee\x27\x2d\xf1\x4d\x45\xe1\x0e\x71\x9b\x5c\xe3\x9e\x03\xbc\x3a\ \x5d\x22\xd5\x06\x6e\x6d\x2f\x89\x51\x8c\x9c\xdf\x71\xc9\x93\x1d\ \xe0\x4a\x20\xde\x12\x01\x88\xd5\xfe\xe7\x1f\x24\xd6\x09\xb8\x39\ \xd6\xcb\xa9\x45\x38\xe8\x02\xef\x9b\x11\x4d\xe3\x53\x07\x66\x15\ \x4b\xb2\xce\x29\x5f\x99\x55\xf6\xbb\xd5\x90\x7b\xe0\xa3\x27\xb1\ \x08\xd9\xbe\x6d\xe8\x5a\x81\xe2\x48\x92\x29\x3c\xfc\x10\x21\x13\ \x80\x07\x80\x27\x07\xc0\x3e\x1b\xe6\xd4\x43\x3c\x4a\x51\x88\x89\ \x52\x4c\xf8\x20\x19\x1a\x6e\x9e\x1f\xf5\x38\x0d\xa4\x29\x74\x32\ \xc1\x1f\x05\xe2\x2d\xd1\x26\x34\x39\xf1\x37\x01\xb7\x34\x05\x5c\ \xd6\x3d\xdb\x51\x28\xb2\xb6\x85\xbe\x98\x46\x89\xb5\xdd\xf7\x42\ \x64\xda\xea\x07\x06\x64\xc8\x39\x66\xcf\x8a\x03\xc6\xa7\xeb\x6b\ \x7f\x4d\xa0\x3c\xd5\xc8\xf8\x4b\x3c\x73\x15\x0e\xbd\x25\x3e\x53\ \xe4\x69\x3e\x82\xdb\x55\x38\x1a\x02\x2f\x4a\x4c\xde\xd3\xc8\x07\ \x0a\xcf\x8b\xfa\x0a\xdf\x69\xfc\x9b\x40\xbc\x25\xda\xa4\x9b\xbc\ \xf2\xcf\x4c\x0f\x5a\x33\x8d\xf2\x48\xa1\x7e\x06\xb3\xd6\xd8\x3c\ \xf1\xab\x13\x6d\xfc\xca\x58\x1b\xdf\x9b\x03\xc7\xfd\x10\x15\xfa\ \xa5\x61\x84\x2f\x83\xd0\xc4\x6a\x53\x89\xdb\xb3\xc2\xeb\x2c\x7e\ \xf5\xc6\x08\x04\x5f\x99\x6c\xcc\x71\xc0\x51\xed\xcd\x80\xda\x84\ \x63\xa1\x6e\xfd\xc6\x99\x86\xc3\xf9\x2f\x98\x4f\x81\xbd\xba\x26\ \x06\x34\xcf\xe9\xf3\xbd\xa8\xca\x87\x4d\x2d\xde\x32\x7c\x85\xdc\ \xe0\xba\x40\xbc\x25\xda\xb4\x26\x27\x56\x5e\xb4\xf1\x37\xc0\x3f\ \x57\x08\x2e\x80\xce\x5c\xdb\x75\x26\xab\xf5\xdb\x33\x85\xee\x42\ \x9b\x98\xf0\xba\x17\x96\xef\x13\xef\x2d\x84\xab\x30\xbc\x5c\x7d\ \xe9\x8c\xc0\xf0\x52\x1b\x52\x81\x0f\xb5\x1c\x96\xc4\xc5\x1e\x8c\ \x2f\xf8\x11\x47\x44\x30\xd7\x46\x34\xcf\x51\x21\xbe\x88\x16\x02\ \x8d\x1e\x39\x62\xa7\x93\xf5\x02\xb1\x96\xe8\x3b\x31\xcd\x36\x1d\ \xe5\x2d\x08\xd3\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x06\xe8\ \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\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x06\x7a\x49\x44\x41\x54\x58\xc3\xed\ \x57\x09\x4c\x54\x57\x14\x1d\x6a\xed\xa6\x4d\x69\x69\xb5\x2e\x15\ \xf7\x1d\xb1\x20\x8a\x0a\x28\x2a\xb2\xa9\x88\xc0\x20\x28\x22\xae\ \xe0\x30\x08\x6e\x6c\x23\x42\x01\xc5\x71\x41\x76\x71\xa1\x0a\x28\ \xe2\x5a\xc0\x0a\x5a\x91\x60\xc0\x15\xad\x88\x68\xcd\x18\xd4\xaa\ \xd4\x5a\xb1\x2e\xe8\x8c\x0a\x9e\x9e\x0f\x3f\x8d\x52\x29\x9a\x9a\ \x36\x69\x9c\xe4\x64\x32\x33\xff\xdd\x73\xef\x39\xf7\xde\xff\x47\ \x02\x40\xf2\x5f\x42\xf2\x36\x81\xff\x65\x02\x66\x52\x85\x91\x99\ \x34\x58\x66\xea\x14\x14\x6f\xea\x18\x98\x66\xea\x18\x90\x3e\xd4\ \x7e\xc1\xaa\x81\xb6\xde\x93\x25\x12\xc9\xc7\x44\x33\xc9\x9b\x7e\ \x0d\x9b\x18\xd2\x97\xc4\x11\xc3\x9c\x17\x17\x7b\x2c\xdc\x7c\x39\ \x60\xf9\xe1\xdb\xa1\xd1\x17\xab\x15\x2b\xae\xa8\x15\xcb\xaf\xa8\ \x03\xa3\xce\x3c\x90\x29\x76\xdf\x1a\x6c\xe7\x97\x6f\x60\x31\x5d\ \xc6\x23\x9f\x10\xef\xbe\x01\xe2\xc5\x96\x24\x4d\x99\x34\x37\x59\ \x15\x91\x50\x76\x37\x3c\x41\x53\x2b\x0f\x07\x26\x2d\x00\xc6\x7a\ \x02\xa3\xa7\x02\x23\xdd\x00\x6b\x77\xc0\x7d\x1e\x10\x16\x5d\xf9\ \xc4\xc2\x75\xc9\xb5\xd6\xba\x7a\x52\x1e\xd7\xf9\xc7\xc4\xd3\x17\ \xa5\x56\x28\x93\xaf\x3e\x0c\x8c\x06\xdc\x02\x49\x24\x03\x4c\xa6\ \x01\x86\x93\x01\x3d\x29\xd0\xdb\x1e\xe8\x66\x4b\x8c\x06\xfa\xd9\ \x00\xd2\x39\xc0\x82\xf0\x22\x75\xaf\xc1\x13\x72\x18\xc6\xe0\xf5\ \x89\x9d\x17\xeb\x12\x8a\x49\xbe\xc9\xaa\x95\x1b\x49\xbc\x06\x70\ \x0d\x02\x2c\xe4\xc0\x50\x56\x6c\x4c\x0c\x64\x12\x83\xbc\x09\x92\ \xe9\x7b\x00\x3d\x5d\x80\x4e\x63\x00\x5d\x0b\x60\x88\x13\x10\x10\ \xa5\x7e\x36\xd0\x56\x56\xc9\x70\x4e\xaf\x45\x3e\x7c\x62\x88\xdc\ \xc6\x23\xaa\x2c\x3c\xbe\xa4\x2a\x3c\x19\x98\xba\x84\x15\xfb\x01\ \x66\x73\x89\xf9\x94\x5b\x01\xd8\x47\x01\x93\xa9\xc6\xd4\x38\x26\ \xc6\xf7\x71\xdf\x50\x11\x5f\xa0\xef\x14\xa0\xab\x1d\x60\xe4\x0c\ \xcc\xa5\x45\xe6\x4e\x01\x77\x19\xd2\xf7\xb5\xaa\x96\x2d\xd9\x71\ \x35\x26\x5d\x53\xeb\x4d\x92\xf1\x01\xf4\x96\xa4\x23\xfc\x01\x9b\ \x08\x92\x92\x70\x7e\x3a\xb0\x7c\x2f\xb0\xbe\x10\xd8\x54\x04\x24\ \xfc\x00\xf8\x6f\xa5\xec\x2b\xa8\x0e\x13\xed\xc3\x5e\x18\xcc\x5e\ \xf0\x5d\xc6\xe4\xbc\xe3\xab\x19\x5a\xf1\x0a\xe4\x0a\x27\xa1\xea\ \xc8\xc4\x92\xaa\x88\x75\x24\x0a\x63\xd5\x24\x1d\x45\xbf\x6d\x22\ \xd9\x6c\x09\xf4\x74\x1b\x10\x7b\x08\xc8\x2a\x03\xb6\x1e\x54\xd5\ \x84\xc4\xee\x51\x7b\x2c\x88\x7b\x18\xb9\x2e\x4f\xb3\xbd\x84\x92\ \x67\x50\x09\x5e\x6b\x4c\x6b\x46\xd1\x2a\x45\x2c\xed\x19\x23\xbf\ \xc7\xf0\x4b\xfe\x1c\x1f\x8e\x86\x31\xbf\xf8\x88\xd0\x7a\x5e\x72\ \x07\xcf\x98\x0b\xb1\x69\x37\x35\xf3\xe9\xb5\x53\x08\x60\x49\x99\ \xad\x59\xb1\x34\x06\x90\xb1\x62\xe5\x01\x60\x57\x29\xb0\xad\x40\ \x55\x33\xc6\x23\xf4\x41\x5f\xd3\x89\x57\x3b\xf4\x1a\x5a\xac\xd3\ \xae\xfb\x4e\x36\xda\xb1\xb5\xbb\x4a\x34\x89\xf9\xb4\x24\x91\x7d\ \x12\x54\x1f\x63\x55\x9a\xfa\x99\x91\xb5\xe7\xed\x3a\x05\x04\xf2\ \xc4\xd4\xb2\xdf\x0d\x2d\x67\x6d\xea\xd2\xdf\x62\xbc\xb8\x28\xb4\ \x98\x58\xf0\x0c\xff\xd4\x8a\xd8\x2d\x9a\x5a\x2f\x25\xbd\xe5\x41\ \x2b\xfa\x69\xbf\x0a\xf0\x48\x61\x15\x39\x40\xca\x31\x20\xfb\xf4\ \x9d\x5a\x59\xe8\x86\x47\x02\xf1\x97\x9d\xf4\xf3\x79\x76\x39\xe1\ \x45\x8c\x63\x3c\x7f\xdf\xc8\xf4\xdf\x32\x4f\x02\x3e\xa9\x4c\x9a\ \x71\x7c\xe3\x81\xc8\xa4\x13\x4f\xba\x1b\x8d\x39\xcf\x6b\xfc\x04\ \x05\x4a\x0b\x8f\x30\xab\x75\xa7\x1f\xe9\x9b\xbb\x65\xe9\x99\xb9\ \xc8\xb9\xc1\xb6\xf9\x45\xe4\x5c\x57\x6e\x06\xa6\xd1\x6f\x3b\xca\ \x6e\xcb\x77\x97\x24\x40\x9e\x09\xac\x2c\x00\xf6\x94\x03\x69\xfb\ \xcb\x9e\x8e\x70\xf6\xbf\xdf\xa1\xb7\x49\x09\x83\xad\x21\x3c\x09\ \x73\xa2\x33\xf1\x59\xff\x11\xee\x16\x5e\x21\x29\xd7\x77\xfd\x48\ \x1b\xb6\x53\x31\x5a\x18\x9f\x45\x05\xdd\x42\x1f\x68\xb7\xea\xb8\ \x9b\xd7\xb8\x08\x0d\x56\x96\xcb\x80\x2b\xf9\xa3\x97\xe2\x94\xda\ \x78\x9c\xef\x85\xf0\xa4\xeb\x1a\x7f\x7a\xeb\xb6\x94\xcb\x84\x72\ \xdb\x0b\x5d\xfd\x2d\x83\xb0\xc1\xd6\x1e\x07\xf2\xca\xd5\xcf\x16\ \x29\xb7\x70\x96\xed\x2b\x3e\x6f\xdf\x63\x5f\x9d\x97\x12\x89\x1d\ \xd1\xf5\xf9\x55\x6b\xe2\xb0\x68\xda\xb2\x0d\xfb\x7f\xcd\x64\x1f\ \x84\x91\x58\xf9\x1d\x10\x9e\x74\xf8\x71\x57\x03\x2b\xa1\xfa\x30\ \xc2\x58\xb0\xe0\xdc\xae\x5c\x60\x4e\x28\x3b\xdb\x07\x70\x5c\x54\ \x5d\xeb\x42\x52\x07\x62\x1c\xbb\x55\x4a\xc9\x66\x6d\x01\x42\xe9\ \x75\x2a\x2b\xc9\x2d\xbb\x53\x3b\x51\xae\xac\xee\xd4\x6f\x44\x29\ \x03\xc4\x10\x33\x89\x21\x44\xeb\x86\xab\x55\xb8\x17\x64\x1c\xbc\ \x58\x9d\xce\xa4\xe3\x38\x11\x69\x07\xef\xd4\x9a\x3b\xf9\xdf\x6f\ \xa1\xdd\x3a\x93\x3f\xbb\x12\x6d\xeb\x12\xd8\xb9\x9f\xbe\x72\xa6\ \x4d\xbc\x00\x53\x8e\x8b\x55\x58\x7d\xd5\x93\xd6\x03\x9e\x94\x6e\ \x29\x3b\x3c\x93\x92\xe7\x9c\xba\x51\x23\x4a\x7e\x92\x87\x95\x84\ \x83\x58\x75\x0b\xe2\x9d\x86\xf7\x06\xa9\x3c\xe6\x42\xf1\x65\x36\ \x28\x7b\x60\xe7\x51\xf5\x33\x47\x2f\x65\xb5\x78\x36\x98\x30\x24\ \x3e\xa8\x4b\x60\x0f\x09\x66\x2b\xeb\x67\x7a\x24\x95\xb0\x67\x87\ \x4f\xa1\xff\x3e\x94\x2c\x92\x33\x9d\x41\xf2\xb5\x59\x27\x9e\x8c\ \x24\x79\xbb\x6e\x03\x8f\xf0\x60\x24\x31\x96\x68\xdf\xd8\x0d\x45\ \x68\xee\xf4\xbc\xb2\xbb\x85\x2a\x20\xff\x02\x30\x2f\x72\x8b\x5a\ \x54\x4d\x48\xdc\x96\xf8\xa2\x6e\xe2\x84\x04\x72\x8a\xd9\x9d\xdc\ \x6c\x76\x4c\xc2\x81\x92\x4f\xe5\x78\x79\xd3\xb3\x10\xf6\x46\xf2\ \x19\x56\x70\xec\x46\x0d\x1b\xb4\x52\xbb\x95\x6e\x8e\xb8\x3c\xac\ \x88\x36\x8d\x91\x0b\xbb\xc3\xc3\x3f\x59\x55\xfe\x0b\x70\xfa\x2a\ \xf7\xc4\xd2\xad\x8f\x44\xdf\x57\x13\x13\x5e\x48\x5c\x48\x20\xef\ \x14\xc7\x8a\xdd\xed\xbe\x11\x98\xc1\xa5\x31\x97\xcd\x16\x4c\x55\ \xa2\x38\x66\x6b\x0a\xea\xc9\xdb\x77\x1f\x54\xc8\xcb\x17\x0a\xd6\ \x8a\xd9\xbf\xbc\x72\xa7\x20\x1d\x26\xb0\xf3\x50\xe9\x4d\x4d\x79\ \x25\xc9\xa3\xb6\x3e\x14\xc9\x85\x7e\x11\xee\x80\xba\x2f\x9c\x15\ \x12\x28\xa2\x44\x71\x5c\x16\x41\x9c\xed\xc5\x6c\xb6\x65\x5c\xa3\ \xd1\xec\xdc\xb5\xdc\x6c\x99\x97\xb8\x52\xb3\x4e\x3e\xee\x3d\x64\ \xc2\x51\x9d\xb6\xdd\x3c\xc5\xec\x1b\x7d\xa0\x60\xbc\x39\x71\x19\ \x45\xb7\x4a\x2a\x34\xb5\xce\xb2\x15\xf7\xba\x19\x5a\x97\x8b\x23\ \xea\x4c\x74\x24\x9a\x37\x3c\x70\xee\xec\xcf\xc0\xc1\x9f\x48\x56\ \x5a\xdf\x6c\x7b\xe8\x5b\x76\x05\xb0\x8f\xf2\x15\xdc\x00\xce\x56\ \x01\xeb\x76\x17\xa9\xfb\x98\x48\x77\xf0\x48\x1f\xe2\xfd\x46\x1e\ \x4a\xec\x42\x13\xf7\x5e\xcb\x3f\x7d\x53\x33\x76\x7a\xc4\xed\xce\ \xfa\xa3\x84\xfd\xb0\x52\xbc\xeb\xfd\x95\x5c\x9c\xd5\x8c\xec\xa2\ \xcb\x9a\xec\xe2\x4b\x4f\xb3\x8a\x54\x35\xd9\x47\x55\x35\x39\xc4\ \xde\x63\xc4\x71\x55\xcd\xf7\x44\xee\x09\x01\x97\x9e\xba\xfa\xae\ \xae\x6a\xa5\xab\xe7\x23\xfa\xaf\xd5\xe0\xf9\xa0\x87\x47\xc0\xfa\ \x8b\xab\xd3\x0a\xab\x0c\x2d\x67\x9e\xfb\xaa\xe7\xe0\x03\xfc\x3a\ \x82\xb0\x17\x65\x6f\xfe\x52\xc9\x0c\x46\xcf\x70\x19\x60\x35\xbb\ \xa0\xdf\xf0\xc9\xe7\xf5\xcc\x5c\x2f\x35\x8a\x61\xae\xaa\x36\x5d\ \x0c\x72\xc4\xb9\xef\xf2\x12\x1b\x9a\x75\x37\xb2\x35\xef\x3d\xd4\ \x71\xe3\x87\x2d\x3f\x8d\xe2\x67\x39\x31\x92\x68\xd7\xd4\xa3\x97\ \xb0\xb9\x06\x88\x8b\x61\x76\x13\x70\x13\x44\x13\x1f\xa5\xb4\x1a\ \xc4\x11\x3e\x6b\x13\x5f\x0b\xf7\x31\xd1\x2a\xed\x57\x79\xee\x6b\ \x26\x26\xd1\x46\x6c\xb0\xbf\x43\x9b\x26\x9e\x6a\xb5\xea\x96\x8b\ \x44\xd2\x92\x78\xef\x25\x49\xfe\xfb\xaf\xb7\xff\x8c\xde\x26\xd0\ \x14\xfe\x00\xc6\x8f\x6d\x5f\x51\xaa\x96\x24\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x02\xb7\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\x49\x49\x44\x41\x54\x48\xc7\xed\ \x55\xdb\x6e\x52\x51\x10\xe5\xd3\xfc\x0c\x3f\xa5\x4f\xc6\x44\x1f\ \xf4\xd5\xa8\xb1\x1f\xa0\xc6\x07\x8d\x26\x48\xbc\x00\x5a\x2e\xa5\ \x94\x03\xf4\x42\xb9\x73\xe0\x70\xbf\xb4\x54\x9a\xc6\x44\x38\x7b\ \x2f\xd7\xec\x4d\x69\x5f\x79\xa0\x4f\x3c\x4c\x66\xce\x9a\x99\x35\ \x27\xb3\x60\x4e\xe0\xc1\xc3\xc7\x3b\x34\x67\x43\xb6\x13\x90\x20\ \xd5\x03\xbe\x57\x80\x50\x51\x21\x58\xf4\xf1\xe5\x64\x8e\x70\x5d\ \x13\x53\x88\x34\x80\xa8\xab\x11\xf3\x40\xcc\x5a\xa8\xac\x58\xbb\ \x30\x71\xd4\xb5\xbd\x3f\x6b\xc0\x8f\xea\x4d\xac\x11\xef\x68\x08\ \xb7\x19\x70\x38\xb4\xc9\xa7\xdf\x94\x69\x08\xd7\x15\x9e\x47\x6d\ \x61\xa8\xa4\xf0\x84\xb8\x90\xc9\xb3\xe0\x5f\xcf\xe6\x88\xb5\x80\ \x47\xc1\x39\x31\x65\x6a\x9e\x85\x81\xe0\x12\x17\x9e\x74\x1f\xab\ \x01\x9b\x5d\x11\x80\x8d\x5a\xe0\x5e\x44\x3e\xe4\xbe\xc2\x15\x1f\ \xfb\x1d\xe0\x57\xdd\xa7\x69\x24\x3d\x18\x2f\x16\xe5\x9e\x63\x4d\ \xb5\xf4\xd4\xa2\xbc\x30\x7e\xcf\x95\x9c\x6f\xf0\x3d\x6a\x97\xf0\ \x60\xbc\xf0\x64\x87\xb7\x1a\x38\xb9\xa1\x90\x29\xbc\xf8\xed\x23\ \xd5\x06\xd2\xfc\x55\xed\xee\x03\x49\x0a\x16\xae\x2e\xf0\x32\xc6\ \x41\x24\x8a\x91\xf0\x75\xc2\xd6\x66\xf8\x52\xaf\xe2\x40\x9c\x83\ \xa4\xe7\x4d\x92\xc4\x9e\x42\x82\xcf\xbb\x29\xe0\x78\xac\xb7\x22\ \xaf\x21\x72\x61\x02\x38\xdc\x7b\x9a\x3b\xcc\x71\xb7\xd9\x9e\x98\ \x46\x61\x4c\x1d\xdc\x05\x0e\x88\x5b\x0c\xc8\x74\xb9\x5f\x6a\x96\ \xeb\x6b\x13\x4b\xde\xe9\x29\x53\x23\xbd\xf9\x01\x75\xa9\xff\x83\ \x70\xae\x44\x2e\x4e\x34\x0e\x9a\x73\xbc\x77\x14\x52\xee\x1c\x79\ \x16\xbe\xcd\xf8\x70\x3a\x0a\x47\x6c\xf8\x5c\x20\x79\x97\x84\x6d\ \x85\x0f\x39\xbd\xc2\x3f\x1e\x13\xf3\x7c\x63\x9f\x4e\x80\xd3\x91\ \xb5\x77\x8e\x8f\xd2\xf9\x56\xe4\x75\x44\x6e\x4c\x35\x8a\x43\x85\ \xea\x39\x8c\xaf\x50\x20\x89\xcb\xfc\xb3\x48\x5c\x1a\x69\x13\xbb\ \x97\x36\x5f\x62\x7c\x36\xf0\x71\xda\x5f\x98\x5c\x65\x22\x79\x9b\ \x93\xba\x2a\xf7\xef\xcd\xee\x88\xdc\xbe\x22\xd9\x88\x67\x80\xb7\ \xdf\x9d\x02\x95\x31\xcf\x42\xd5\xc6\x35\x16\x87\x79\xff\x05\x6b\ \x72\x80\xe0\x35\x0e\xaf\x5f\x00\x11\x7e\x2f\xca\xf2\x62\x7c\x89\ \x48\x55\xa3\x61\xea\x95\x39\x2f\xad\x3f\xdb\x73\xbd\x8e\xc8\xa3\ \xbf\x40\xf3\x42\xa1\xcd\xbd\x79\x97\xda\xfa\xa9\x78\x8d\x0e\xe3\ \xd6\x54\xa1\x33\xd3\xab\x9c\x60\x52\xdf\x24\xde\x9d\x49\xad\xba\ \xed\x61\x8d\xf8\xfe\xd5\x9d\x6f\xf2\xe0\x5a\x9b\xa2\x6c\xc7\x12\ \x0a\x71\xae\x6b\x89\x04\x3f\xe2\x89\xb8\x69\xcc\x2f\x63\x19\x9a\ \x6d\xdb\xfa\x2e\x4d\xe2\xde\xcc\xe6\x72\xfc\xd7\x0f\xae\xef\x49\ \xe4\xff\xfb\x02\x27\xea\xf7\xb1\x15\x44\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ \x00\x00\x02\x73\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\x05\x49\x44\x41\x54\x48\xc7\xdd\ \x54\xdd\x4e\x13\x51\x10\xe6\xd1\x7c\x0c\x1f\x65\x2f\x35\xd1\x98\ \x78\x65\x62\xc2\x03\x58\xbd\xe1\x52\xb4\x6a\xa9\x5d\x28\xa9\x12\ \xf6\x08\xc5\x60\x69\xbb\xfd\xd9\x2d\xdb\x6e\x89\x50\x10\xb9\x72\ \x77\xce\xe7\xcc\x9c\x10\xa3\x12\xac\x29\xeb\x85\x17\x93\x33\xff\ \xdf\xd9\x6f\x76\xce\xd2\xad\xdb\x77\x3c\x16\x53\x90\x78\x4b\xa2\ \xbc\x4b\x80\x72\x8b\xf0\xa2\x95\xe3\xa1\x0f\x54\x7b\xce\xbe\x5f\ \x21\xbc\xed\x03\xf5\x18\x78\x50\x05\xd6\x42\xf6\xb7\x09\x77\xcb\ \x84\xd7\x6d\x8b\xd5\xfd\x0c\xf7\x2a\x60\x9d\x34\x5f\x6a\x25\xff\ \xf9\xfe\x37\x2c\x6f\x13\xa4\xb7\x02\x34\x12\x57\x5c\x8f\x80\x37\ \x5d\x8b\xf5\xa1\x4b\x92\xb3\xcc\xa0\x3e\x9f\xab\x6c\x4b\xac\xda\ \x23\xbd\x40\x6d\xc0\xb9\x1d\x8b\x97\x9f\x32\xbc\x3a\x70\x17\x11\ \xbf\x5e\x82\x6d\xe9\x79\x09\x50\x2c\x45\x00\x0a\x95\x9f\x8c\x1b\ \xfa\x1a\xef\x3a\x00\xf3\xf4\x23\xb0\xc1\xfc\xfa\xcc\xf5\xe3\x4d\ \xa7\x57\x3b\x39\x96\x1b\x3c\xa3\x81\xb3\x45\xaf\x85\x84\xb5\x76\ \x86\x47\xbe\x55\x7f\x9d\xe7\x54\x6a\x5a\xe5\xfd\x5a\x80\xdd\x23\ \x69\x64\xd1\xe0\x81\x6f\xf4\x2d\x36\x87\xac\xc7\x02\x98\xab\xdf\ \x0f\x73\x8d\x89\xaf\xd6\xcd\xd4\x7e\x3f\x92\x9a\x1c\x52\xfb\x27\ \x80\x62\x29\x2a\x64\xc8\xff\x64\x93\x77\x53\xc2\xce\x04\xd8\x8a\ \x08\x2b\x4d\x60\x6f\x0a\x04\x87\x84\x67\xc6\xe9\x66\x6c\xf1\x84\ \x37\x73\x2b\x62\x9e\x53\xa8\xdf\x8c\xa1\x35\x25\xf1\x0f\x73\x04\ \xbc\x58\xa5\xc0\xa2\x99\x4a\x8c\x37\x3b\xfc\xb1\x68\x26\x3c\x65\ \x27\x37\x14\xd9\xe3\x84\x60\x44\x9a\x28\xfa\xce\xd8\x15\x7d\x48\ \xac\xda\x97\x71\xf1\x6f\xc7\x39\x37\xcf\x34\xd6\x4c\x2d\xfb\x5c\ \x1f\x89\x75\x66\xff\xe5\x26\xff\x2a\x73\x7e\x9d\xb7\x08\x80\xe9\ \xcf\x98\xcf\xcf\xb2\x68\xc0\xc1\x11\xa1\xc7\xdc\x56\xf8\xa9\x6e\ \x4d\x09\xd1\x97\xdf\x17\xeb\xaf\x01\x26\x17\x40\x2b\xcd\xd1\x96\ \xe6\x27\x16\xbd\x63\x8b\x2e\x03\x0e\x18\x68\x74\xbe\x38\x40\xb1\ \x14\x15\x32\xe4\x05\x7f\x5b\x6f\x1e\x00\x33\x65\xde\xc7\xe7\xb2\ \x5c\xcc\xf3\x19\x30\x3c\x21\x04\xb1\xd5\x53\x6c\xc3\xaf\x67\xc4\ \xc3\x9f\x7c\xe5\xa5\x8b\x5d\x8e\xd4\x5c\x35\x8f\x2b\x01\xd2\x0b\ \xcb\x45\x56\x41\xe4\x54\x39\xb5\x88\x67\x84\x84\xff\x9c\xe4\x4c\ \x00\x48\xcf\x43\x8d\x11\xa4\x66\x5e\x80\x1b\xa5\xe8\x3b\x80\x6d\ \x3c\xea\x2d\x2a\x08\xd7\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x05\x2d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x04\xf4\x49\x44\x41\x54\x78\x5e\xa5\x96\x4b\x6c\x5c\x57\ \x1d\xc6\x7f\xe7\xdc\xc7\x78\x66\xfc\x9a\xc4\xaf\x3c\x5a\x16\xa1\ \x20\x12\xa8\xda\x80\x84\x28\xdb\x2e\x4a\xbb\x0e\x2c\x50\x14\x60\ \xd7\x05\x48\x48\x25\x8b\xb2\x41\x95\x80\x45\x5a\x09\x51\xd4\x76\ \x55\x44\x53\x15\xd5\x55\x9b\x84\x2a\x02\x16\x55\xa8\x68\x4b\xb1\ \x23\x53\x5c\xda\x18\xbf\x82\xe3\x57\xec\xf1\x8c\x3d\x1e\xcf\xcc\ \x7d\x9c\x73\xfe\x8d\xee\x5c\x09\x5b\x42\x10\x95\xdf\xe6\x7f\x75\ \x75\xf5\xff\xf4\x7d\xdf\xb9\xba\x57\x89\x08\x77\xc3\xa5\x9f\x9e\ \x7e\xd8\x99\xf4\xbc\x73\xe6\x7e\x11\x69\x23\xe2\xf8\x37\xea\x0e\ \xbd\x9e\xef\xbf\x5e\x2a\x86\x4f\x3f\xf2\xa3\xa9\x45\x72\x7c\x72\ \x5e\xf8\x9e\x7a\xd4\x39\xfa\x10\x12\x81\x2f\x20\x00\x08\xc2\x31\ \x11\x06\x0b\x25\xbe\xf1\xf5\x6f\xff\xfc\xd0\xe7\x1f\x3a\x43\xda\ \xde\xc1\x3a\x4b\x86\x73\xa0\x35\x41\xa1\x8f\xcd\xc5\xc9\xc7\xa7\ \xdf\xbc\xf0\x38\xa0\x0e\x08\x3c\xff\x5d\x75\xee\x81\x47\x7f\xf8\ \x6c\xa1\x54\x71\x36\x8d\xd2\xa1\x7b\x4f\x17\x51\x28\x40\x4a\x83\ \xf7\x04\xa5\xca\xbd\x7e\x1a\xb5\xf4\x9f\x5f\x3e\x47\x6a\x22\xee\ \xfb\xf2\xc3\x28\x4c\x66\x42\x10\x6c\x2a\x68\x7f\x80\xd2\xe1\xa3\ \x04\xe5\x43\xfc\xf2\xfb\x9f\x3d\xfb\x83\x67\xe7\x2f\x02\x20\x22\ \xfc\xea\x2c\xd7\xac\x4d\xe4\x3f\x11\x27\x56\x36\x36\xb7\xc4\x8a\ \x48\x75\x63\x55\x5e\xf9\xf1\x09\xb9\x76\xf1\x5b\xb2\x36\xfb\x92\ \xd4\x56\xdf\x90\xea\xd2\x6b\x32\x37\xfd\xa2\xb4\x5b\xdb\x52\xbd\ \xfd\x91\xac\xdd\x78\x55\xde\x7b\xe9\x8c\xbc\xf1\xd4\x17\x9f\x10\ \x11\x34\x80\x38\x8c\x4b\x3b\x80\x80\x44\x20\x06\x30\xd9\x75\xdc\ \xaa\xb2\xb6\xb2\x48\x1c\x25\x0c\x8d\x1c\xe5\xa1\xef\x5c\xa2\x32\ \xfc\x20\xff\x78\xe7\x77\xb4\xdb\x71\xe6\x62\x7b\xbb\xc1\xd6\xd6\ \x16\x43\xa3\x27\x91\xde\x13\x3c\xf0\xd8\x13\x28\xe4\x49\x00\x0d\ \xe4\x46\x0c\x10\x83\x8d\xc0\xc5\x60\x9a\xe0\xa2\x6c\x41\xa7\xbd\ \x47\x75\x63\x1d\x11\x38\xf2\x99\x53\x8c\xdd\xff\x4d\x56\x3f\x7a\ \x9b\xad\x5a\x83\xd4\x18\xb4\xd6\x5c\x1e\xbf\xc0\xcf\x7e\x72\x8e\ \xd9\x8f\xff\x42\x9c\x46\x58\x6b\x07\x94\x52\x15\x4d\x0e\x08\x60\ \xbb\x0e\x5c\xa3\x3b\xb1\x04\xbe\x41\x2b\xc3\x07\x7f\xbf\xce\xd5\ \xab\x6f\xf2\xde\xbb\x7f\xa2\x5e\xdf\x20\x8a\xcd\x9d\xb9\x8b\xb3\ \x8e\x81\xfe\x32\x5f\x39\xfd\x39\xbe\xf6\xd5\x93\x8c\x8e\x0c\x22\ \x62\xb0\x4e\x00\x0a\x3e\x39\x48\x0c\xa8\x3c\x1e\x47\x86\x33\x04\ \x9e\x61\x74\xb8\x4c\xad\x7a\x8b\xcd\xf5\x3a\xde\x91\xa3\x14\x8e\ \xde\x87\xb3\x42\x14\xc5\x24\x69\x82\xd6\x30\x32\x3c\x90\x39\x09\ \x7b\x8a\x94\xfa\x0e\xd3\x57\xf4\x35\xe0\xed\x13\xb0\x60\x5b\x60\ \x77\x41\x97\x40\x12\x70\x6d\x7c\xe0\xd8\xd8\x00\x95\xbe\x53\xa4\ \x56\x51\x28\xf4\xa2\x7d\x0d\x1a\xac\x75\x58\x6b\x33\x17\xce\x39\ \x40\x10\x55\xc8\xee\x81\x70\x50\x40\x59\x90\x0e\xb8\x0e\x5d\x14\ \xa8\x02\x88\x21\xf0\x2d\x03\x7d\x09\xe8\x5e\x08\x0b\x98\xc8\x22\ \xd6\x92\x24\x31\xc6\x18\xac\xb1\x58\x6b\x10\x11\x3c\xdf\x60\x5d\ \x0a\xa8\x83\x2f\x5a\xb6\xd8\xc6\x80\xce\x45\x52\x20\x00\x0c\x48\ \x00\x84\x20\x0a\xcc\x1e\x22\x3e\xa2\xc8\x0a\x8e\xa3\x98\x34\x4d\ \xbb\xcb\x3d\x0f\xb4\x26\xde\xab\xd3\xec\x58\x01\xd0\xe4\xa0\x7d\ \xd0\x01\xd8\x2d\x70\xbb\x40\x01\x70\xdd\xc8\xb0\x5d\x51\xb3\x05\ \x28\xc4\x39\xc4\x48\xb6\x38\x8a\x22\x80\x2c\xa2\x24\x49\x48\x93\ \x04\x71\xa0\xc8\xb0\xfb\x3a\x30\x60\xb6\xbb\xb1\x28\x1f\xcc\x3a\ \xd8\x36\x19\xfe\xa1\xac\x0f\x4c\x13\x82\x10\xa4\x17\x41\x50\x0a\ \x4c\x16\x55\x92\x39\xe8\x29\x16\xb1\x22\x88\x22\x57\xc0\x1d\x3c\ \x45\x4a\x83\x6b\x81\x2e\xe6\x91\xd5\xc0\xab\x40\x34\x0f\xde\x20\ \x78\x7d\xf9\x73\x3e\x22\x8a\x38\x4e\xf1\xfd\x00\xfc\x1e\xd0\x8a\ \x62\xb9\x9f\xca\xd0\x11\x7a\xfb\x07\xf0\xb4\x56\x79\x2e\x39\x08\ \x90\x80\xb9\x05\xce\x81\x3f\x02\x5e\x3f\x60\xc9\x48\x97\xbb\xe2\ \xe1\x29\x04\x85\xf6\x34\x85\x62\x99\xde\xc1\x11\x8a\x77\xa6\xe7\ \x07\x48\xd4\xc0\xd6\x16\x59\x9a\x5f\x66\x72\xa6\x79\x0d\x10\x1f\ \x72\x3b\xb2\x07\xc9\x2c\xe0\xe7\x2e\x7a\xba\x91\xc4\x73\xa0\xca\ \xe0\x95\xba\x51\x89\x41\xab\x90\x20\xec\x61\x74\xe4\x38\x65\x95\ \xd0\xbc\xf9\x21\x8d\xd5\x7f\x92\xb6\xeb\x4c\x7e\xb8\x36\x53\xdb\ \xb5\x33\x17\xc6\x57\x7e\x01\x34\x7d\x0e\x50\x02\xb7\x03\xe1\x18\ \xb4\x26\x41\x85\x79\x37\x4b\x20\x15\x08\x8f\x81\x12\xb4\x36\x48\ \xdc\x64\xe5\xfd\xdf\xe2\x1d\x36\xbc\x7e\x6d\xf9\xf2\x8d\xa5\xf6\ \xbb\xb7\x36\xa2\xe9\x85\xf5\x78\x1e\x68\x02\x2d\x11\x69\xef\xeb\ \xa0\x03\xd2\xca\x4f\x8a\x0f\xa4\xe0\x0f\x01\x7d\x60\x02\x08\x4a\ \xa0\x77\xa1\x38\x84\x17\xa7\xec\xd4\x3b\xcd\xe7\x2f\x5d\x7f\xa6\ \xd5\xb1\xbf\xaf\xef\xd9\x15\xa0\x01\x74\xe4\xe0\x87\x88\x83\x02\ \x66\x07\x82\x31\x88\x17\x21\x1c\x05\xb5\x07\xc5\x13\x10\x7e\x09\ \x3c\x8f\x76\x75\x27\x59\x9b\xba\xd2\xd9\xab\xad\xf0\xc1\x12\x6f\ \x2d\x57\x93\x71\x11\xb9\xc1\x7f\xc1\x27\x07\xd5\x03\xe1\x30\xa4\ \x0d\x28\xdf\x03\x85\x61\x08\xfb\xe9\x54\x37\xd3\xb9\x89\x2b\xb5\ \xb5\x99\xa9\x56\x63\x63\xce\xfc\x71\x22\x99\x6e\xa7\xac\x8f\x4f\ \x32\x0e\xac\x00\xfc\x4f\x01\xa5\x08\x7c\xcf\x41\x78\x18\xda\xbd\ \xec\x35\xe3\x78\xf9\xfa\xdb\x8d\xd9\x77\xae\xee\x34\x6e\x2f\x9b\ \xcb\x93\x4c\x2e\x6c\xf2\xb7\xb5\x6d\x3e\xde\x6a\x71\x33\x8f\xa3\ \x05\x74\xee\x4a\x40\x7b\xac\xc7\xad\x1a\x3d\xc1\x71\xe6\xa7\xae\ \xd4\xe7\xff\xfa\x87\xc6\xee\xed\x59\x73\xfe\xa2\x7b\x6e\xa9\xc6\ \x04\xb0\x0e\xd4\xf3\xe2\x2c\x77\x4d\x2e\x10\x86\xfc\xe6\xd7\xe7\ \xcf\xf6\x20\x1c\x9f\x58\x60\x61\xea\x5f\x4c\xdc\xdc\xe4\xfd\x66\ \xc2\x1c\x50\xcf\x8a\xfb\x94\x1c\xf8\x6d\x51\x4a\x55\x80\x12\xd0\ \x06\x1a\xd9\xe2\xff\x93\x4f\x00\xc2\x30\xec\x24\xf5\x72\x95\x25\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\xb5\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x04\x7c\x49\x44\x41\x54\x78\x5e\xb5\x94\xdd\x6b\x1c\xd5\ \x1f\xc6\x3f\xe7\x65\x66\x67\x5f\xf2\x6e\xd2\xb4\x69\xc1\x37\xea\ \x0b\xe2\x4d\xf4\xce\x4b\xa1\x88\x82\x48\x41\xe8\x95\x7a\x21\xbd\ \xf4\xc7\xef\x0f\xf0\x46\xf4\x52\xf0\xd2\x4b\x11\x5b\x14\x2d\x8a\ \x8a\x42\xac\x28\xc1\x68\x6d\xda\x9b\x94\x26\x6d\x9a\xb6\x49\x37\ \x4d\x9a\xee\x6e\x76\x67\x77\x67\x77\x66\x67\xe6\x38\x3d\x84\xb0\ \xa1\x90\x80\xe0\x03\xcf\xce\x7e\x99\x99\xe7\xf3\x3d\xdf\x39\x33\ \xc2\x18\xc3\x7f\x29\xcd\x8e\xa6\xa7\x4f\xbf\x02\xe6\x0d\x30\x47\ \x8d\x41\xf2\xef\x24\x8d\x49\x56\xe2\xb8\xfb\xcb\x95\x2b\x67\x7f\ \x04\x22\xcd\xae\xcc\x9b\xef\x7d\xf4\xbf\x93\x7a\xf8\x91\xfc\xc5\ \xb9\x59\xb9\xf0\xd7\x8c\xe8\x76\x9a\x42\x22\x11\x02\x84\xfd\x01\ \x29\x44\xdf\x7f\x89\x76\x5d\xa6\x9e\x78\x96\x27\x5f\x3c\xc1\xf8\ \xe4\x61\xe6\x67\xe7\x5e\x9a\xfb\xec\x8b\xe3\xc0\x25\xe0\x5e\x1f\ \x80\xe3\xce\xf0\x98\xf7\x6b\x59\xe9\xaf\xbf\x3c\xc7\x07\xef\xbe\ \xca\xe3\x47\x27\x91\x52\x62\x00\x23\x52\x24\xc2\xd6\x02\x01\x18\ \xa4\x52\xd8\xda\x29\x70\xe6\xd2\x26\xdf\x2e\x6b\xf4\x1f\x3f\x68\ \xe0\x08\x30\x05\x34\x76\x01\xc6\x98\x66\xa5\xea\xa7\x37\x36\xf3\ \xd4\xb7\x7d\x06\x3d\x45\xc1\x15\xf4\xe2\x08\x00\x89\x44\x6b\x9d\ \x59\xd9\x15\xf4\x7a\x11\x69\x9a\x20\x52\x81\xe7\x2a\xa2\xc5\x9f\ \xf1\x07\x5e\x63\x20\x8c\x93\x24\xe9\x45\x40\x01\x50\x9a\x3e\x49\ \x09\x45\x47\xda\x80\xd2\xe0\x10\x85\x62\x91\x38\x8e\xc9\xee\xb0\ \xa1\x4a\xd9\x70\xeb\x9d\xee\xf1\x3c\x8f\x52\x69\x80\xe9\x97\x4f\ \x72\xfd\x5a\x1e\x29\x15\x20\x00\x0c\x40\x3f\xc0\x86\x68\x47\xa2\ \xa4\x60\x28\x03\x0c\x0f\x0f\x13\x86\x21\xbd\x5e\x6f\x17\xb2\x23\ \x5b\x67\xa6\xdd\x6e\x13\x85\x21\xc5\xe1\x49\xf2\xf9\x88\x68\xf7\ \x9a\x87\x01\x68\x21\xc8\x69\x89\x56\x92\x7a\xbd\xce\x60\xc1\xf2\ \x6d\xe7\xae\xeb\xda\x11\x29\xdb\xb9\x5d\xa5\xad\x9d\xcc\xf9\x42\ \x9e\xdb\xab\x0a\xcf\xa9\xd3\x13\x86\x7e\xed\x1d\x91\x10\xb8\x8e\ \x44\x1a\xc3\xc4\xe4\x04\x47\xa6\x0e\x13\xf7\x7a\x76\x4c\x3b\xb2\ \xe1\x80\x5d\x55\xa7\xd3\x21\x30\x86\x7a\x7d\x9b\x38\x1c\xa3\xe0\ \x28\xda\x42\xec\x03\x90\x90\xd7\x12\xc7\x73\x09\x3b\x1d\x3a\x41\ \x60\x3b\xf4\xbc\x1c\x8e\xe3\xe2\x68\x85\xd2\x1a\x21\xec\x18\x11\ \x52\x61\x57\xe7\x68\x5a\xb7\x23\xf2\x2b\x15\x84\xdc\x07\xa0\xa5\ \x24\xa7\x05\x03\x87\x9f\xe6\xa9\x67\x9e\xe3\xd8\xc4\x10\x08\x30\ \x69\x4a\x6a\xc8\x6c\x48\x52\xe8\x25\x86\x4e\x02\x61\x04\x51\x22\ \x41\xc0\x76\xd7\x90\x77\x25\x12\xf6\x01\x08\x70\x94\xe1\xd1\x17\ \x4e\x30\x73\x4b\xf0\x58\x60\xb2\x5a\xd2\x89\x15\x9d\x28\xa5\x19\ \x26\x04\x9d\x88\x7a\xab\x8b\xdf\x6c\x53\x6f\x36\x69\x36\x7c\x8c\ \x72\xd0\x03\x87\xc8\xe5\x73\x28\x79\xc0\x88\x72\x0a\x26\x8e\x4c\ \xf1\xe9\xf7\xf3\xe4\x13\x1f\x11\xb5\xe9\x76\x03\xa2\x4e\x40\x1a\ \x77\x51\x26\xc6\x73\x04\x43\xc5\x1c\x23\x25\x8f\xb1\x91\x12\x13\ \x13\x87\xa8\xb9\x63\x24\xba\x80\x14\xfb\xac\x40\x09\x41\x21\xe7\ \xd2\xb8\x35\xcf\xf3\x4e\x8d\x63\x53\xc3\x94\xbc\x7c\x16\x36\x42\ \x31\x27\x19\x1d\x2c\x32\x92\xb9\x54\x2c\xe0\xe5\x5c\x94\x94\x44\ \x71\x4c\xd0\x6a\x72\xd9\x77\xb9\x19\x68\x84\xdc\x6f\x44\x4a\x90\ \x73\x35\x7e\xf9\x1a\xa7\xff\xff\x3a\xbf\xcd\xfc\xc4\xd6\x5a\x85\ \xbb\x71\xc2\xa9\x53\xa7\x30\xc6\x90\xcb\x39\x28\x25\x31\x40\x62\ \xc0\xa4\x86\x14\x41\xc9\x53\x14\x13\xbd\xff\x33\x10\x02\x3c\x47\ \xe2\x3a\x8e\xdd\x2d\x8b\x4b\x4b\xf6\x65\x1b\x1f\x1f\x27\x4d\x53\ \x80\xec\x68\x76\x2d\xa5\xc1\x60\x65\x77\x58\xde\xd3\x64\x70\x91\ \x69\x97\xb3\x07\xa8\xa4\xc8\x00\x1a\x2f\xe7\xd0\x09\x7b\x94\x4a\ \x25\xc6\xc6\xc6\x18\x1d\x1d\xb5\x80\xfd\x94\x73\x14\x3d\x7f\x83\ \x34\x0a\x30\x26\x8d\x01\xf1\x10\x40\x4b\x81\xa3\x1e\x58\xee\x7c\ \x96\xad\x39\x50\x42\xa2\xe2\x36\xcb\xb3\xdf\x98\xca\x7a\x54\xad\ \xd7\x6f\xfd\x0e\x74\x81\x64\x0f\x40\x0a\x70\x1d\x81\x94\x80\x31\ \x1c\x20\x0b\xd7\x5a\xd9\xe7\x12\x6c\x5d\x63\xe5\xf2\xed\xee\x8d\ \xeb\x17\x3e\x5f\x5f\xff\xfb\x3c\xb0\x05\x74\xf7\xee\x22\xad\x18\ \x2a\x91\x8d\x65\x14\x37\xe7\xda\x0f\x5d\x16\x62\xdf\x64\xa5\x04\ \xae\xab\xb3\x30\x3b\x67\x82\x20\x34\xf5\x7a\xc0\xfd\xfb\x0d\x6a\ \xb5\x16\xeb\xeb\x95\xf6\xca\xd2\xc2\xb9\x6a\x75\xe9\x22\x70\x13\ \xd8\x00\xc2\x7e\x80\x74\x5d\x21\xb7\xca\xcb\x24\xfe\x1a\x5a\x4d\ \xf3\xf6\x3b\x6f\xd1\x6a\x76\x4d\xbb\xdd\xe3\xea\xd5\x4d\x1a\x8d\ \xae\xa9\x56\x5b\x61\xa5\x52\xf3\x6b\xb5\xda\xa6\xef\xd7\xd6\x7d\ \xff\xde\x6a\xb5\x5a\x5e\x5d\x5c\xbc\x7c\xc7\x98\xb4\x01\xdc\x01\ \xca\x40\xcb\x64\xea\x03\x98\xd6\xfc\x85\x2b\xcd\xb9\xf3\x33\xc5\ \xf2\xea\xa6\xf9\xb0\x7c\x36\x2a\x16\xf2\x61\x1c\x87\xd5\x56\xab\ \xb1\xe1\xfb\x95\x72\xa5\xb2\xbe\x56\x2e\x5f\x5f\xab\x56\xef\xd6\ \x80\x2e\xd0\x01\x82\x3e\xb7\x80\x26\x10\x98\x4c\x7b\xb6\x69\x1c\ \x77\xbe\xfa\xe4\xfd\x8f\x37\x21\x74\xc3\xde\x76\x65\xf9\xea\xec\ \xc6\xf6\xf6\xea\x5d\x63\xd2\x10\xe8\xf4\x39\xb0\xb5\x05\xd0\xeb\ \x73\x4c\x66\x1b\xbc\xab\x3e\xc0\xc2\xc2\x99\xef\x80\x3f\x81\x11\ \x40\x00\x36\x78\xe7\x18\x01\x71\x7f\x98\xc9\xc8\x1c\x2c\xfe\x01\ \xd1\x4f\x0f\x88\x96\x78\xff\x51\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ \x00\x00\x04\x6e\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x04\x35\x49\x44\x41\x54\x48\xc7\xb5\x95\x7f\x4c\x94\x75\ \x1c\xc7\xaf\x5a\xad\xe5\x8a\x2d\x67\x9a\xfe\x51\x36\xc4\xc4\xa4\ \x2c\xa0\x00\x45\x4b\xd7\x0f\xac\x2e\x10\xc5\xca\x6a\x2b\x95\x14\ \x51\xd4\x28\x08\x44\x0b\x04\x65\x9c\xfc\x88\x40\x65\x1c\xd2\x89\ \x9c\x60\xca\x93\x70\x48\xfc\x7e\xe0\x50\x7e\x28\xe4\xe1\x91\x47\ \x87\x36\xae\xa8\xa3\xd1\xae\x76\xdb\xfd\xe1\xf6\xee\xfd\xdd\x75\ \x0b\xc2\x83\x73\xab\x3f\xde\x7b\xf6\xec\xfb\x79\x3e\xaf\xcf\xcf\ \xe7\xab\x00\xa0\xf8\x3f\x35\xe1\x65\xe5\x86\xfd\x09\x54\xcf\x6d\ \x48\x43\xbd\x47\xcd\x98\x16\x40\xa3\xc0\xdd\x87\xb4\xa6\xeb\x7f\ \x02\x42\xd7\xc6\x00\xe3\x28\x70\x95\x1a\xf8\x0d\x30\xfd\x0e\x0c\ \xfd\xe1\x3c\x1b\xa2\x7e\xb0\x01\x6d\x03\x56\xfb\x17\xa7\x64\x4b\ \xe8\xfa\xbd\xe5\xa1\xeb\x92\x22\xa6\x03\xcc\x7b\x73\x57\xbe\x21\ \x4f\x2b\x5b\xc4\x87\x57\x7e\x01\x3a\x7f\x04\x2e\x0c\x01\x5d\x7c\ \x1a\x7e\x05\xc4\x99\x50\x55\xc7\xe0\x98\x80\xf7\x8d\x00\xc2\x4e\ \xa6\xfd\x6b\x9b\x33\x7b\x03\x5e\xd9\xe6\xa7\x50\x28\xee\x70\x5b\ \xa2\xc0\xb0\xed\x8f\x06\x84\xc5\xec\x0e\x7e\xe3\xa3\x6a\x55\x99\ \x6c\x69\xa7\xf3\xe6\xef\x19\x29\x9f\x05\x67\xba\x47\x7c\x83\xd6\ \x9e\x5f\x18\xa8\x3c\xe6\xff\x52\xb4\x36\x29\x4f\x32\xf7\x0c\x03\ \x1d\x3c\xeb\xf9\x09\x38\xd9\x60\x18\x7d\xf6\xd5\x9d\x2a\x02\xee\ \x75\x0b\x10\x74\x61\xb0\x74\xf5\x07\x2f\xc6\x1d\xd4\x9a\x3a\x6e\ \x00\x4d\x04\xb4\x9b\x81\xec\x93\xb2\x65\x61\xe0\xeb\x45\x3c\x17\ \x51\xce\x59\x1e\xf9\x69\x65\xed\x65\xab\xbd\xc5\xc4\x0c\x06\x99\ \x09\x33\x14\x7d\xe1\xd9\x3c\xb7\x80\xf1\xfd\x10\x00\x3d\x01\xdf\ \x1a\x81\x56\x01\x28\x97\x2d\xbe\xc1\x91\xb9\x74\xf0\x90\xb0\x59\ \x11\x95\x92\xac\xd6\x19\x46\x1b\xaf\x01\xf5\x0c\xe2\xd2\xcf\xc0\ \x86\xb8\x7c\xc3\x5c\x6f\xff\x55\xe3\xcb\xe4\x16\xb0\x33\x43\x6b\ \x6a\x65\xfa\xb5\xfd\xcc\x82\x51\x1e\x76\x02\x72\x5c\x00\xda\x14\ \x54\xea\x87\x6d\x75\x46\x27\x40\x7f\xc3\x71\x73\x79\x64\xe2\x45\ \x9e\x07\x50\x77\x4d\x0b\xd8\x41\x40\x13\x53\x97\xfa\x08\xb9\x0a\ \x64\x9e\xf8\x07\xc0\x73\x65\x14\xa3\x6d\x31\x3b\xcf\xc4\xb3\xa0\ \xaa\x7b\x64\x51\x50\x44\x05\xcf\x17\x7b\x94\x41\x6c\xba\xd6\x54\ \xc7\xf4\x2b\x7b\x80\xb3\xbd\x40\x5a\x89\x6c\x71\xcd\xff\x27\xb9\ \x92\xf9\x74\xa7\xd5\x5e\xcd\xec\x6a\x08\x38\xde\x30\x38\xe6\xb7\ \x62\x63\xa3\xd7\xac\x47\xb6\xd2\xf9\x6c\x8f\x7a\xb0\x9d\x80\x1a\ \xa6\x5f\x76\x81\x13\xd2\x09\xe8\x06\x58\x06\x4e\x4b\x17\x9b\xd9\ \xce\xe9\xd1\xb1\x2c\x67\xbe\xe3\xe8\x4a\x83\x63\xcb\xd6\x26\x76\ \x2e\x0e\x59\x5f\x4c\xe7\x8f\x53\xf7\x78\x04\x88\x39\xa0\x35\x55\ \x19\x80\x92\x76\xa0\xb4\x03\x28\xaa\x1f\xb6\xa5\x6b\x64\x4b\xc6\ \x09\xa7\xce\xf6\xd9\x1c\x52\xbf\x13\xf2\x4d\xbf\xe3\x66\x7c\x8e\ \x64\x0e\x09\x8f\x4f\x7d\xf2\xf9\x77\xbd\x3c\x02\x6c\x23\xe0\x34\ \xeb\x5f\xd4\x4a\x00\xb3\xd8\x5f\x2c\x5b\xbc\x97\xbe\x5c\xb1\xe8\ \xb9\xf0\x02\xd1\x8b\x90\xf0\x8f\x9b\x53\x4b\x09\x62\x10\xa7\x2e\ \xb1\x54\xcc\x48\x04\x10\xac\xdc\x73\x80\x59\xdc\x3d\x2d\x60\x2b\ \x01\xe5\xfc\xb0\xb0\x89\x35\xbe\x08\x08\x67\xc2\x39\x3f\xf6\x15\ \x8d\x9e\x39\xd7\x67\x01\x21\x9a\xa3\x0d\xc3\xb6\x62\x3d\x33\x65\ \x96\x3a\x4e\xdb\x9a\x4d\x99\xbd\x0f\x3f\xf6\xb4\xb7\xab\xd1\x6e\ \x01\x1f\xa6\x69\x4d\x9a\x6e\xd6\xb8\x01\x10\x0e\x52\xbf\x9a\x38\ \xa6\x42\xa1\xeb\x92\xdf\xdf\xa7\x96\x2d\x47\x65\xa7\x5d\xf9\x65\ \x60\xd7\x61\xc9\x4c\xbb\x68\x57\x16\x6e\x01\xd1\x04\xa8\x19\xb9\ \xaa\x0e\x38\xd2\x06\x7c\x56\x3a\x19\x20\xfe\xa4\x29\x04\x7c\xd9\ \x0c\x64\xd5\x32\xd3\x2e\x20\x8e\x80\x05\xcf\x84\xc5\xd3\xee\xfe\ \x29\x01\x5b\x52\xb5\xa6\x42\x3a\x4e\xaf\x66\x74\x2c\xd3\xbe\x92\ \x5b\x02\x0e\x66\x71\x8a\xb2\xce\x73\x4f\x74\x80\x86\x25\x7d\x27\ \x51\x6d\xe4\x36\x6f\xa1\xdd\x03\x53\x01\x94\x31\x99\x92\x39\xab\ \x1e\x48\xf9\x1a\x38\xc4\xe8\x12\x8e\x4d\x58\xb4\x19\xe2\xee\x10\ \xce\x8e\xb0\x7c\xe9\x35\x40\x4e\xa3\x00\xd8\x1c\x41\xca\x3d\x7a\ \xda\xac\x74\xfd\xf4\x6e\x79\xe1\xc4\xaa\x24\x73\x76\x9d\xd5\x9e\ \xce\xa8\x92\x09\x48\x13\x59\x34\xda\x1c\x9b\x99\x95\x6b\xd9\xf6\ \x32\xa3\x52\xd6\x3c\x9b\xe5\xc9\xa1\xca\xae\x00\x1b\x09\xf4\xf1\ \x5f\xa3\xfe\x7b\x1f\xee\x9c\x74\xe1\x6c\xfa\x5c\x6b\x3a\xc7\x1f\ \x9c\xc4\xd5\x57\x73\x83\xf3\x38\xa2\x2a\x36\x2f\xb7\x85\x8d\xe6\ \x7b\x25\x37\xfb\xdc\x75\xa7\x2a\xb8\x78\xc7\x09\x28\xa1\x8a\xda\ \xac\x76\xe1\xfc\x89\x65\x51\x55\x74\xbc\x9a\xf2\x9a\x34\xa6\xe2\ \xc2\x89\xd8\x91\x6f\x48\x62\xd3\x6e\x47\x6f\x27\xa8\x8d\xbc\x47\ \x5a\xe7\xfb\xad\x2a\xa4\x63\xf1\x27\x9d\xe5\x8a\xde\xed\x85\xb3\ \x24\xf4\xad\x0c\x51\x6f\x4f\x34\x67\xfe\x53\xb1\x74\xf8\x02\xe5\ \x23\x1a\x3b\xde\xb9\xdb\x0b\x87\x7a\x50\x34\xd3\x43\xcd\xa4\xee\ \xfb\xb7\xe3\x29\x37\xf9\xbf\xd4\x5f\x64\xf9\x94\x79\x6f\xb3\xd8\ \x06\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x03\x3d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\xcf\x49\x44\x41\x54\x48\xc7\xb5\ \x95\x6b\x48\x53\x71\x18\xc6\x57\x14\x91\x96\x86\x99\x05\x21\x18\ \x5d\x66\x86\xcd\x20\x35\xad\xd4\x50\x22\x32\xc5\xc4\xb2\x28\x19\ \x5d\x21\xac\x6c\x50\xe1\x44\x53\xba\x9a\x20\x5e\x90\xca\xc4\x69\ \x5e\x98\x95\x25\xc7\x26\xa1\x32\x1d\xc7\xeb\x72\x35\x6c\x38\xcb\ \x39\x8d\x5a\x08\xae\x16\x15\xc2\x3e\x08\x4f\xef\x9f\xe9\x97\x30\ \xdd\x99\x36\x78\x18\x3b\xff\xb3\xe7\xb7\xf3\xbc\x97\x89\x00\x88\ \xfe\xa7\xe6\xbc\x21\xea\x58\x4e\x3a\x49\xe7\x84\xd2\x05\x03\xe8\ \x4b\x31\x59\x25\x9c\x79\xf4\x37\x30\xf2\x0b\xf8\xf0\x1d\x18\xb0\ \x3a\x34\xf8\x0d\x18\xfa\x01\xb0\x33\x26\x06\x11\x89\x44\xee\x42\ \x01\x5b\xcf\x67\x29\x8c\xc5\x75\xbc\x45\x3b\xf2\xd3\xae\xff\x0a\ \xf4\x8c\x3a\xf4\xf6\x8b\x03\xc4\x75\x9b\x6c\xec\x7c\x47\xf4\xe9\ \x72\x02\xf8\x0a\x8e\x68\x57\x5c\x9a\x64\xe7\x81\x0b\x57\xf7\x24\ \xa6\xab\x55\xba\xf1\x09\x8d\x09\x60\xd2\x59\x80\xe3\xb2\x12\x83\ \x24\x2a\xa5\x45\x1c\x1c\x57\xbe\x7c\x85\x57\x02\x01\x7c\x04\x03\ \xe8\xb5\x98\xe4\x16\x99\x7c\x43\xd3\x35\x6c\x9f\xd4\x0c\x01\xfc\ \x30\xf0\x54\x63\xb2\x31\x73\x3a\x4b\x24\x6d\x22\xad\x26\x2d\x15\ \x0c\x98\x8e\xea\x5c\xa6\xc2\xa8\xfd\x0c\xa8\x3f\x02\x1d\x66\xa0\ \x94\xeb\x1b\x0b\x08\x3f\x52\x43\xa6\x9b\x49\x8b\x5c\xee\xa2\x29\ \x80\xb4\x40\xc9\x5b\x78\x32\x6e\x1e\x00\x3a\x47\x80\x8c\x62\xce\ \xbc\x21\x70\xdf\x1d\x32\x5f\x37\xaf\x36\x9d\x02\xe4\x2a\x29\x92\ \xd6\x41\xa0\xc9\x40\x80\x4f\xc0\xa1\xb3\x79\x7a\x37\x8f\x35\xc9\ \x04\xf0\x5c\x08\x40\x35\x47\x05\x56\xbd\x07\x5e\x91\xda\x4d\xf6\ \xc9\xbd\x49\xf2\x5e\x32\x0f\x9f\x29\x77\xa1\x83\xe6\xc1\x7e\x6d\ \x3b\xc5\xf3\xf2\x1d\xd0\xd8\x0f\x54\xb5\x99\x6c\x41\xd1\xa7\x54\ \x64\xbe\x6d\xb6\xfc\x9d\x05\xc4\x5c\x2f\xe4\xcc\x4d\x46\xa0\xee\ \x0d\x01\xe8\x09\xf2\x6a\x79\x8b\x38\x24\xbe\x8c\xcc\xfd\x16\x62\ \x55\x5c\x2a\x7a\xd1\x37\x56\xaf\x07\x6a\x7b\x28\x22\x2a\x72\xea\ \xdd\xba\x21\x5f\x71\x98\x7c\xa6\xbe\x77\x05\x90\x5b\xd6\x62\xb2\ \xd5\xf6\x02\x4f\xba\xa8\xc8\x54\xe8\x58\x8a\xcc\xdd\xd3\x87\xf5\ \xff\xca\x85\x00\xb4\x35\xf4\xdb\x27\xcb\x79\xa0\xa2\x13\xa8\xe9\ \x1e\x9f\x08\x89\xbd\xa8\x21\xf3\x50\xd2\x92\x79\x01\xd8\x80\x49\ \x33\x14\xc6\x67\x14\xcf\x43\xb5\x03\x50\xcc\x19\xac\x81\x11\x27\ \xea\xc9\xdc\x7f\xae\x02\x3b\x03\x90\xde\xaa\xe2\x2d\x0a\x8a\xa6\ \xa8\x19\x60\xef\xec\xb3\x7f\x68\xc2\xa3\x99\x16\x9b\x20\x00\x99\ \xaf\x67\xf9\x17\x70\xb4\x2d\x5b\x81\xfb\x2a\x5a\x0f\x14\x53\x8a\ \x5c\x61\x5c\xeb\x27\xb9\x42\x00\x6f\x97\x00\xd3\x7f\x30\x49\x97\ \x4b\x0c\xf7\x94\x7d\x63\x15\x54\xdc\xfc\xd7\x40\x2e\x01\x1e\x68\ \xa8\x45\x9f\x1b\xac\x07\xcf\xe4\xe9\x69\xbb\xde\x8c\x38\x9a\x29\ \x76\x05\xa0\x6b\xa5\xa5\xc6\xd4\x40\x1d\x53\xa5\x03\x1e\x53\xf6\ \xa5\x1d\x40\xa5\xd6\x71\x8d\x9d\x15\x36\x1a\xac\xbb\x0f\x5f\x63\ \xbb\x68\x99\xe0\x27\xc8\xae\xe4\x2d\xd3\xca\x99\x52\xf6\x5f\x4a\ \xcb\xe7\xcc\x5b\x82\xe3\x64\x04\xf0\x12\x0a\x70\x0f\x8b\x97\xa5\ \x6e\x8f\x3c\x79\x3b\x20\x3c\xa9\xf0\x5f\xda\x18\xb4\x3f\x93\xcc\ \x83\x5d\x5a\x76\x6c\x81\x91\x56\xb1\x49\x9d\x45\xde\x6c\xd0\xe6\ \x9a\x05\xa7\xb6\xe9\x7c\xf4\x07\x31\x37\xf2\xb9\x28\x8c\xc6\xad\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x03\xcb\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x03\x5d\x49\x44\x41\x54\x48\xc7\xb5\ \x95\x5d\x48\x93\x51\x18\xc7\x57\x94\x96\x52\x16\x9a\xa8\x29\x99\ \x92\x90\xe5\x57\x99\x9a\xdf\xa1\x94\xda\x07\xf9\xb1\x59\x59\x4d\ \x5d\x12\x8c\x94\xa4\x22\xe7\x34\x25\x02\xc3\xc8\x9b\x44\xbb\x71\ \x58\x17\x8a\x37\xa1\x99\x8a\x52\x7e\x85\x53\x67\xea\x74\xb6\x74\ \x3a\x35\xa7\x4d\x0d\xca\x19\xc2\x7b\xf1\xc2\xe9\x79\xf4\x9d\xe9\ \xdc\xdc\x76\xd1\xe0\x07\xef\xce\xf9\x9f\xf3\x3f\xcf\x73\xce\x79\ \x0e\x8b\x10\xc2\xfa\x9f\xac\x7f\x44\x5e\x2b\x74\x04\x72\x80\x2f\ \x06\x68\x05\xf8\x1b\xf4\x7c\xa6\x4d\x9f\x16\xe7\x71\xd4\x35\xc8\ \x14\xd5\xf7\xa9\xa7\xfe\x10\x82\x8c\x2f\x11\xa2\xf8\x4d\xc8\xe4\ \xf2\xda\x7f\xf9\x22\x45\x47\x24\x3f\x69\x67\xb1\x58\x56\x8c\xbe\ \x15\xdb\xb4\x7a\xad\x0e\xc1\x79\x82\xaf\x3e\xcc\x01\xad\xc5\xa6\ \x08\xc2\xd8\xc2\x7c\x5c\x41\x05\x08\x86\x17\x08\x91\xaa\x09\x69\ \xea\x57\x69\xae\x67\x97\xca\xc2\xd9\xc2\x2e\xbf\xa8\xb4\x17\x30\ \xc8\xfe\x5f\x04\x05\x6d\xd8\xd7\x22\x55\x69\xc6\x60\x31\x55\x1f\ \x65\x3f\x71\xbc\x5f\x54\x7a\x85\x83\xab\x4f\x34\x68\xf7\x6d\xce\ \x17\x38\xba\xfb\x9e\xf7\x8e\xe0\xe4\x77\xf6\x4c\x53\xf4\xc0\x0f\ \x42\x32\xf2\x44\x72\x67\x8f\xa0\x72\xe8\x8b\x05\x8e\x69\x23\x60\ \xf4\x56\xde\x91\xb7\x52\x32\xf2\x45\xf2\xe1\x05\x8a\x0e\x4b\x12\ \xf4\xd8\x3a\x79\x14\x42\x7b\x10\xe0\xb0\x29\x82\x8d\x60\xf8\x7d\ \x2a\x8a\x96\x2e\xac\x19\x38\xba\x9d\xe2\x83\xd8\x16\xd8\xa1\xab\ \x0d\xe7\xe4\x7b\xa2\x66\x68\x1e\x0c\xd8\x42\x31\x68\x42\x00\xcb\ \x2d\x9b\xac\x6b\xd0\x0b\x06\x83\xf3\x84\xdc\x59\x8d\x20\x90\x0b\ \x83\xf6\x1a\xd0\x1e\x47\xcd\x80\x9a\xa2\x31\x8d\xa0\x3b\xa9\xf7\ \x14\xe9\x1a\x88\x21\x45\x7d\x90\x22\x9e\x09\x06\xa8\x91\xcc\x99\ \x69\xd0\x31\x45\xd1\x62\x15\x21\xe9\x42\xe3\x06\xa8\xe9\x9e\x35\ \xd3\xa0\x55\x49\xd1\x9d\x33\x84\xa4\x99\x60\x80\x9a\xcf\x33\x66\ \x1a\x34\x2b\x28\xba\x75\x1a\x0c\x72\x4d\x33\x68\xff\x6e\xa6\x41\ \xd3\x18\x45\xb7\x4c\x12\x92\x6a\x82\x01\x6a\x3e\x4d\x99\x69\xd0\ \x00\x11\x34\x2a\x09\xe1\x9a\x60\x80\x9a\x66\xa5\x79\x06\x65\x95\ \x5d\x2a\xcd\x87\x09\x42\xee\x97\xd4\x29\x3d\xfc\x2f\x3d\xd8\x78\ \xc1\x74\xb4\x09\x39\xaf\x5b\xa6\xdf\x80\x3e\xe0\x62\x66\x2d\xe8\ \x3c\x4d\x31\xe0\x16\x54\x76\xce\x36\x4c\x11\x52\x54\xd3\xa7\xf6\ \x39\xc7\x7d\x05\x03\x0f\x18\xd0\x3e\x2f\x6b\x19\xff\x85\xfa\x13\ \x21\x9c\x12\xd0\xb9\x99\x62\x60\x0d\x37\xb4\xfa\xad\x64\x71\xa5\ \x16\xf6\x22\x31\xab\x54\x76\xf6\x4a\xb6\x10\x6e\xaa\x93\x4e\xf5\ \xcd\xcc\x7c\x59\xa7\xac\x19\xd6\x50\x71\xbc\xe2\x41\x6b\x1b\xfb\ \x78\x30\xb0\x33\x6a\x80\x25\x21\x2c\x29\x37\x11\x26\x1e\xa9\xec\ \x5d\x58\x79\x07\x26\xcf\xaa\x25\xf3\x50\xdc\xfa\xb5\xc4\xf2\x8a\ \xa5\xd8\x86\x7d\x37\x05\x22\xb9\x67\x70\x12\xae\xde\x6b\x63\x99\ \xd0\x6b\x00\xbf\x9d\xc0\x6e\x60\x4f\x40\xdc\xbd\xdb\xc1\xf1\x8f\ \xea\x85\xa2\x8e\xb9\xf2\xf6\x99\xe5\x3a\x48\xd9\x7b\x06\xfc\x7e\ \x5a\x25\x99\x8f\x49\x2f\x1e\xf2\x0a\xbf\x81\xc5\x30\x14\x38\xa8\ \x5b\xaf\xf4\x4d\x6e\x09\xec\x07\x0e\x01\x87\x6d\xec\x5c\x4e\xc3\ \x04\x45\x67\x62\xf8\x8d\xe1\xec\x3c\xd9\x3a\x9c\xbc\x61\xaf\x88\ \x94\x1a\xe8\xe7\x33\x93\x3b\x61\xf5\x34\xf8\xa2\xa1\x33\xb0\x2b\ \x34\x31\xa7\x10\xf2\x3f\x04\xf9\x1e\x81\x34\x7d\x05\xe4\xa1\x09\ \x8f\x47\x03\x2f\x67\x29\xfc\x2f\xdc\x9d\xf0\x8d\x4e\x9b\xf4\x8d\ \x4a\x5d\xc5\x2f\x9a\xa7\x84\x93\x33\x1a\x9a\x28\x18\x81\x12\x2f\ \x8d\x48\x2e\x18\x00\x04\xdb\x19\x58\xa0\x70\x12\x5f\x28\x40\xb1\ \x64\x3a\xda\x31\xf8\xe0\x18\x35\xe8\x86\x32\x2d\x06\xda\x66\xd6\ \x68\x67\x68\xdb\x06\x31\x33\xc6\x98\x81\xde\x14\xc1\x4b\xf5\x6d\ \x2b\xd8\x0e\x80\x0e\xf7\xc4\x68\x8a\x0c\x6c\x32\x6e\x9c\x0b\xe0\ \x8a\x17\x08\x70\x67\x38\x0a\x1c\x01\x9c\x99\xa7\x11\x4f\x8f\x15\ \x2e\x50\x77\x93\xff\x02\x6e\x02\x38\xfc\xe3\x20\x49\xdb\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x07\x68\ \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\x2f\x49\x44\x41\x54\x58\xc3\xcd\x97\x09\x54\x54\x65\ \x14\xc7\x9f\x80\x88\x20\x04\x0d\x28\x9b\x6c\x02\xb2\x0c\x33\x2c\ \x6e\xa0\xc0\x11\xe8\xc4\xa8\x84\x6c\xb9\xa0\x64\x66\xb9\xe6\x12\ \x5a\x96\x29\x89\x5a\x4a\x08\xa7\x52\x3a\x99\x51\x83\x10\x03\xea\ \x00\x03\x1a\x10\x20\x8c\xc0\x40\x12\x01\xa3\x43\xc0\x60\x25\x21\ \xab\x02\x31\x0c\xdb\xcc\xbb\xdd\x37\x3d\x3b\xed\x82\xc9\xa9\x77\ \xce\xef\x0c\xe7\xfb\xee\x7b\xf7\x7e\xf7\xfb\xbe\xff\xbd\x10\x00\ \x40\xfc\x97\x4c\xc8\xc8\xdd\xdd\x9d\xe9\xe6\xe6\x76\xdc\xd5\xd5\ \x95\xeb\xe2\xe2\xf2\xd6\xfc\xf9\xf3\xfd\x09\x82\xd0\x46\xd4\x1e\ \xea\xe0\xdf\x3e\xe8\xd8\x2b\x24\x24\xe4\x56\x61\x41\x7e\x7f\x7d\ \x5d\xad\xfc\x62\x66\xe6\xc0\xf6\xed\xdb\xda\x99\x4c\x66\xb6\xbd\ \xbd\xfd\x06\x34\xd1\x45\xd4\x89\xa9\x7a\x30\x80\xf7\x44\xa5\xe9\ \x32\x68\xdd\x08\xd0\xe8\x03\xf0\xfd\x2e\x80\xfe\x02\xa8\xad\x11\ \x8d\x7a\x7b\x7b\xdf\xd1\xd6\xd6\x0e\x40\x33\x83\x29\x0b\x00\xd3\ \x5f\x0f\xcd\x2b\xa1\x86\x4b\xc0\x86\x15\x04\xbc\x14\x4a\x80\xf0\ \x1c\x66\xb7\x71\x19\x24\xc4\x1d\x1e\x32\x37\x37\xbf\x80\x66\xce\ \xc8\xf4\x29\x09\x80\xcd\x66\x7f\x2e\xe1\x11\xc0\x4b\x60\x2a\x4c\ \x4c\x4c\xc4\x16\xa6\x3a\x85\x6b\x38\x86\xa3\x50\x45\x40\x45\xce\ \x66\x85\x8d\x8d\xcd\x37\x68\xc6\x41\x9e\x98\x8a\xd5\x3f\x1d\xb5\ \x61\x8d\x74\xe8\xc6\x22\xb2\x98\x17\xa9\xb0\xb4\xb4\x14\xe3\xf0\ \xab\xae\x2c\xfb\xda\xd6\x5c\x53\x10\x0b\x96\x90\xb6\xb6\xb6\xcd\ \x38\x16\x85\x18\x4f\xc5\xfe\x27\x37\x5c\x4f\x18\x86\x6a\x5d\xe8\ \xaa\xdd\x0d\x5e\x9e\x4b\xee\xa3\xc3\x2b\x78\x00\xcb\x5a\x0a\x9f\ \x22\x6f\xf2\x9d\xc9\x79\xf3\xe6\xb5\xa2\xe9\x56\xc4\xfc\xb1\x07\ \xe0\xe4\xe4\x14\x7e\x64\x9b\xd1\x48\x7e\x02\x01\xf7\x84\x1e\xd0\ \x71\xbb\x98\xcc\xcf\xf9\x68\xa4\x40\x70\x4e\xde\xfd\xf5\x76\xc8\ \x88\xb3\x54\x9a\x9a\x9a\xde\x40\xd3\x17\x10\xd3\x09\x2c\xc8\x8f\ \x3a\xd4\x2c\x16\xeb\x88\xb5\xb5\x35\x0b\x87\x66\x3c\xec\x1d\xdd\ \xdd\xeb\xf5\x12\xa2\xa3\x74\xee\x1c\xdb\x3e\x83\xec\xae\x5a\x0f\ \x77\xeb\xe2\x54\x74\x55\xae\x83\xca\x0c\x8e\x12\x3f\x24\x41\xbb\ \x8d\xc8\x9c\x7f\x70\xfc\x7c\x58\x58\x58\x69\xdd\x37\x55\xb2\xf1\ \xb1\x11\xb2\xef\x7e\x97\xc2\xce\xce\xee\x13\x9c\xb2\x7f\x58\x00\ \xd4\xfd\x36\x43\x56\x72\x7c\xe6\xdc\xc8\x8f\x27\x60\xac\x8c\x01\ \x23\x65\x26\xa0\x2c\xd5\x04\x59\xc5\x62\xc0\x2c\x75\xe1\xfc\x96\ \xbf\xca\x00\xe5\x38\x34\x34\xb4\xb4\xae\xb6\x62\x68\x64\x64\x04\ \x54\x0c\xcb\xa0\x49\xfc\xa5\x02\xb7\xae\x06\x4d\x82\x26\xb2\x13\ \x1a\xc8\x93\x46\x46\x46\x2b\x22\x02\x67\x0f\x76\x67\xe1\x15\x2c\ \xa1\x29\xd3\x81\x7d\x3b\x23\x64\x38\xf7\x11\xda\x38\x50\x01\x7b\ \x78\x78\xe8\x52\x8e\x51\xbc\xca\x6e\x54\x97\x0c\xf5\xf7\xf7\xc3\ \x2f\x0c\xc0\xbd\x6e\x29\xf9\xda\x2b\x91\x72\x9f\xc5\x73\xee\xea\ \xeb\xeb\x67\xa1\x7d\xc4\x64\x8e\x84\xf6\x42\x37\xab\xb8\xb7\x5e\ \x9a\xa9\x84\x22\x74\x7e\x6b\x13\x90\xf2\xdb\x20\xf8\x6c\xdb\x38\ \x6a\x41\xe1\xac\x59\xb3\x82\xf0\xca\x1e\x58\xbf\x36\xac\xa9\x42\ \x98\x3f\xd4\xd1\xd1\x01\x0f\xe8\xea\xb8\x03\xd7\x8b\x2e\x28\x7c\ \x97\xba\xc8\xd8\x4e\x86\xd4\x4d\x3a\x8b\x6c\xa3\x2e\xda\x64\x02\ \x98\x46\xed\x73\xb0\xbf\x49\x91\x54\x14\x0f\xa3\xa3\xa3\x2a\x7a\ \x6f\xe7\x92\x28\xc9\xad\xe1\x61\xab\xda\x45\xd7\x05\x23\x52\xa9\ \x14\x28\x5a\xa5\xad\xaa\xdf\x16\x49\x05\xb9\x7f\x77\xf8\x30\xcb\ \xc9\x44\x3a\xd7\x58\x4b\x80\xdf\x88\x45\xc2\x91\xf9\xb4\x8c\x4f\ \xea\xd1\x30\x36\x36\xf6\xe5\x70\x38\x8d\x83\x83\x83\xa0\x62\xa0\ \x1b\x2e\xf3\x92\x94\x99\x99\x99\x50\x59\x59\x09\xf5\xf5\xf5\x2a\ \x6e\x36\xd4\x40\xee\xa5\xc4\x71\x67\x47\x9b\x4e\x57\xa7\x27\x6b\ \xf1\xdd\x44\xfa\xac\x78\x22\x26\x8f\xac\x9c\xb8\x5a\x07\x47\x47\ \xc7\x0f\xbf\xaa\xbc\x3a\xde\xd3\xd3\x03\x5c\x2e\x17\x62\x62\x62\ \x80\xcf\xe7\x43\x72\x72\x32\x08\x72\x04\x20\x12\xf2\xc9\x17\x37\ \x05\xca\xed\xe7\x99\x36\x6b\x6a\x6a\x52\x52\xfd\x2a\x75\x90\x11\ \x1b\xba\x8a\x4e\x7b\x14\x51\x5a\x48\x95\xe4\x15\x81\xbe\x8d\xe9\ \xdc\xb8\xb1\xb4\xb4\x34\x55\x8a\x3d\x3d\x3d\x41\x4f\x4f\x0f\xda\ \xda\xda\xa0\xa0\xe0\x2a\xbc\x1f\xbf\x6f\x1c\xe5\xb9\xcd\xda\xc2\ \xa0\x1c\x5f\x7b\x17\xa1\x2a\x26\x1b\x61\xd0\x07\x7a\x52\x4e\xcd\ \x90\x1d\x48\xfe\xae\x2d\x3e\xb7\x0b\x52\x9f\x1d\xcc\xbb\x9c\x04\ \xe9\xe9\xe9\x90\x98\x98\x08\x67\xcf\x9e\x05\x1e\x8f\x07\x39\xd9\ \x39\xd0\xdc\xdc\xac\xa2\xb3\xbd\x89\x0c\x5a\xe9\xf7\x13\x6e\x55\ \x0e\x7d\xca\x6d\x68\xc1\x99\xf8\xaa\xb1\x06\x04\xa3\xd3\x4f\x57\ \xaf\x5c\xdc\x98\x92\x10\xd0\xd3\x79\x6d\x99\x02\x84\x96\x30\x96\ \xa3\x09\x82\xd3\xda\x90\xce\x3d\x09\xbc\xcf\x93\xe1\x9d\xd8\x97\ \x15\x27\x8e\xee\x57\x66\x65\x9c\x51\x36\xd4\x57\xe1\xde\xd7\x81\ \xf8\xa6\x18\x7e\x1a\xb8\x07\x27\x8f\xed\x1d\xc4\xbb\x9e\x8c\x9f\ \xb3\x9c\xd0\xca\xb1\xdb\x61\xa0\xe3\xdd\x48\xf9\xc9\x83\x4b\x7f\ \x6c\xc8\xf5\x91\x83\xc8\x01\x3a\xd3\x66\x02\xff\x4d\x02\x4e\xef\ \x50\x27\xfb\x2e\x59\xc0\xdd\x14\x02\x72\x12\xcc\xc0\xdf\xd7\x4d\ \x86\x32\xdc\x80\x1a\x70\x6d\xee\xdc\xb9\xd5\x21\xab\xbc\xfa\x2b\ \x8a\x3e\x21\x45\x22\x11\x50\x74\x75\xfe\x08\x5f\x5e\xbd\x30\x8a\ \x8a\x97\xc6\x60\x30\xdc\xfe\x31\x0b\xb8\xda\x08\x3f\x5f\x0f\x71\ \x4a\xfc\xa2\x1e\x59\x39\x93\x84\xe2\xd9\x50\x83\xfa\x1f\xbb\x59\ \x9d\x0c\x7d\x4a\x7f\xc8\xcb\x9d\xd1\x84\x6d\xd8\xdd\xb6\x3c\x77\ \x52\x91\xa5\x0b\xe7\xf6\x10\xe0\xb7\xc4\xf0\x0e\xbe\xfa\x01\x7d\ \xb2\x43\x9c\xec\x18\xf1\x58\xa8\xaa\x4e\x1d\x8d\x1a\x2e\x2b\xb9\ \x02\xc5\xc5\xc5\x20\x91\x48\xa0\xa5\xb1\x5a\x89\x41\xf0\x31\xc8\ \x55\x68\xa7\xf3\xa7\x20\xa8\x92\xeb\xe7\xeb\x2e\x6e\xcd\x73\x18\ \x85\xab\xb3\x40\xf8\x0e\x01\x3b\xc3\xa7\x2b\x23\x02\x0d\x7a\x2d\ \xcc\xf4\xae\xa3\xc9\x39\x2b\x2b\xab\x92\xf3\x6f\xb3\x06\xfb\x4a\ \x56\xc0\xc7\x7b\xa7\xc3\xce\xb5\x3a\x7d\x38\x9e\x82\x6c\x46\xec\ \xe8\x8e\xc8\x02\xf1\xc1\xda\x90\x1e\xb0\x7c\x51\x6f\x7e\xd6\xbb\ \xca\xbc\xbc\x3c\x10\x0a\x85\xd0\xfe\x83\x84\x5c\x1d\xe4\xdf\x8e\ \x5b\x72\x10\x6d\x8c\x7e\xb7\x25\xaa\x92\x9b\x61\x33\x0c\x97\xd5\ \xe0\xfc\x01\x03\x32\x24\xc0\xa0\x13\x55\xad\x10\xa7\xce\xe0\xef\ \x71\x2a\x85\x27\xa2\x99\x5d\xf2\x4a\x2f\x28\x4f\x62\xc3\xde\x0d\ \xda\x03\x38\x97\x81\xec\x43\x98\xbf\xa9\x68\xea\xb4\xb0\xd8\xe1\ \x01\x3c\x88\xd9\x10\x1d\x3f\x14\x26\xcf\xbe\x7c\x01\xb2\xb3\xb3\ \xa1\xbd\xad\x19\x9e\x8b\x0a\xef\xc5\xf1\x24\xba\x74\xff\x12\xc4\ \x6a\x0e\xbb\x11\xb2\xa7\x43\x4b\xaa\x07\x2c\x5b\x68\xd6\x8b\x4e\ \xaf\xe0\xf0\xeb\x98\xb2\x37\xb0\x03\xe6\xf3\xdf\xb7\xbd\x3f\x5c\ \xce\x86\xa6\x8c\x40\xd8\xb5\x76\xc6\x18\xce\x17\xe1\xfc\x1b\xc8\ \x02\x64\xe6\xdf\xd4\x0e\x4a\x68\x96\x51\xd9\xf0\xf7\x5d\xd0\x9b\ \xf9\xe9\x7e\x65\x6a\x6a\x2a\x48\x6e\xd5\x41\xec\xe1\x2d\x83\x28\ \xdd\x31\x74\x91\x53\x27\x96\x7b\xb3\x25\x43\xd8\xef\x75\x17\x46\ \x40\xee\x19\xf3\xb1\x35\x41\x0e\xf7\x51\xd3\xbf\x7b\xe6\x69\x66\ \x6b\xfd\x25\x33\xb9\xbc\x84\x0d\xdf\x5e\x0c\x85\x17\x83\x35\x48\ \x96\xa3\x81\x98\xbe\xdb\x7e\x0f\x91\x51\x35\x7a\xbf\x6d\x0d\x0d\ \x0d\xf7\xa0\x2e\x94\x46\xef\x08\x18\x4a\xe3\x9e\x06\x61\x51\x0a\ \x25\xdd\x54\x1b\xb7\x5c\xf5\x0d\x67\x67\xe7\x98\xfd\xeb\x66\x8c\ \xb7\x70\x59\xd0\xfb\x45\x10\xc8\x85\x2e\xa0\xfc\x4a\x1f\x94\xd5\ \x06\xd0\x97\xbf\xfc\x57\xe7\x5e\xee\x4f\x34\xe2\x0b\x49\xf4\xdd\ \x36\x99\xe0\xbd\xd6\xa0\xfb\x84\x25\xd8\xce\x9d\xc7\xb3\xd6\xb3\ \x39\x72\xa9\x0c\x6f\xc5\x17\x38\xf6\x2c\x62\x48\x19\x31\xdc\x98\ \x66\x89\x5b\x23\x66\xca\x0f\x45\xaa\x01\xef\x10\x03\x04\xb1\xa6\ \x2a\x92\xa3\xf5\xe0\x40\x94\x9a\x92\x76\xfe\x21\x12\x89\x58\x4d\ \x52\xd1\xa6\xd1\xf2\x6b\xad\xa5\xa5\x15\x81\xaa\x19\x87\x7f\x47\ \x23\xde\x0f\xb2\xa8\x41\x9f\xe0\xe0\xc5\x2c\x9d\xcf\x9e\x0b\xd6\ \x95\xec\x5a\xa7\xd3\x8e\x74\x6c\x0a\xd6\x91\x1a\x33\x88\x8b\x38\ \x77\x8a\x8e\xd8\x9a\x78\xf4\xf6\x5b\x83\x96\x63\xaa\x6f\x70\xa2\ \x57\xaf\xfe\xc7\x49\xea\x54\x73\xe8\x1e\x6f\x2f\xb2\x87\xd6\x72\ \x4f\x3a\x95\x8f\xa3\xf7\x57\xa7\xfd\x4d\xfb\xbb\x49\x5d\x7a\x8f\ \xad\x68\x19\x9d\x8d\x68\x3d\x52\x05\xfb\x3f\x3c\x8f\xe5\xbf\xe3\ \xa9\xe4\x67\x2f\x79\x73\x70\x22\x76\x00\x17\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x05\xca\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x05\x91\x49\x44\x41\x54\x78\x5e\x8d\x95\x0b\x6c\x54\xc7\ \x15\x86\xbf\x99\xfb\xd8\xf5\x9a\xf5\xda\x06\xf3\x30\x8e\x1d\x13\ \x48\xf3\xb0\xdc\xd0\x84\xf4\x21\x4a\xd4\x9a\x10\x48\x1c\xea\xa4\ \x69\xe2\x84\x20\x28\x88\x47\x53\x09\x0a\x69\x52\x29\xa9\x2a\x48\ \x48\xab\x4a\x81\x54\x51\xc5\x2b\x85\xd0\x16\xb7\x29\xb8\x51\x12\ \x90\x5c\x2b\x34\xcd\x8b\x50\x4a\x95\xb5\xe5\x26\xc6\x50\x82\xed\ \xae\xb7\x36\xf5\xf3\x81\xbd\x8f\xbb\x73\xba\x8a\x56\xb8\x1b\x5a\ \xe8\x2f\xfd\x73\x74\x66\xa4\xf3\xcf\x3f\x47\xa3\xa3\x44\x84\x0c\ \xd8\xb7\x4e\x2d\xfd\x43\x98\x79\x6d\x11\x66\x8e\xc7\xf1\x23\x28\ \x40\x50\x08\xa0\xf2\x72\x29\xbc\xa9\x94\xf8\xd7\x6e\x66\x27\x9a\ \xe6\x55\xbb\xa4\x9b\xab\x41\x44\x3e\xe5\xee\xd5\x3c\xd2\x52\x77\ \xdb\xd0\xa6\x07\x27\x27\xe4\x7f\x20\xe6\x89\x3c\xfd\xed\x42\xf9\ \xdb\x1e\xf5\xaf\x23\x4f\x13\xdd\xfa\x00\x65\x22\xc2\x95\x68\x93\ \x81\xf1\x58\x59\x71\xfb\xbc\xbc\xe2\x93\xed\x74\x75\x75\x60\x3b\ \x01\x3c\x2f\x89\xa0\xd0\xca\x22\x85\xe2\xa7\x5b\x36\x53\x22\xfd\ \x9c\xe9\x20\x77\x74\x90\x84\x5f\xb3\x65\xe7\x0a\xd5\xa5\xe1\x5a\ \x81\x5c\xdb\x66\xff\x9a\x7d\x72\x84\x09\xa0\xc9\x40\x0c\x53\xb1\ \x87\xc0\xeb\xa5\xb3\xa3\x9d\xa6\x70\x33\xe1\x70\x13\xcd\x69\x7e\ \x18\x0e\xf3\xde\xe1\x2d\xcc\xcd\x0f\x53\x3e\xeb\x56\x42\xe5\xdf\ \xf2\xcd\xbe\x63\x63\xa8\xfa\xb1\xdd\x0f\xdd\xfb\x64\xc3\xa6\x65\ \xcf\x9f\xad\x5d\xbb\x3f\x51\x73\x73\xd5\xda\x03\x3b\x96\xa9\xef\ \xfe\xd7\x27\xfa\xf9\x23\x34\xc9\xe9\x6f\xca\x73\x1b\x02\xf2\xe2\ \x8b\x2f\xc8\xea\xd5\xdf\x91\xda\x87\x97\xc9\x3d\xd5\x35\xb2\x70\ \xd1\xbd\xf2\x54\x8d\x92\xc4\xd8\x90\x5c\x8e\xb8\x24\x92\x63\x97\ \xb2\x86\x9f\x2d\x8a\xee\x78\x94\x8d\x99\xba\x13\x0e\x8c\x42\xa5\ \x8c\x61\x4e\x65\x25\xc7\x8e\xd5\xf3\x51\xcb\x31\x22\x1d\x27\x19\ \xe8\x6d\x21\xe0\x6f\xc3\xe7\x0a\x82\x07\x24\x41\x06\xc0\xf4\x83\ \xe9\x25\x3e\x36\x40\xff\x85\x4e\xbc\x94\x07\xc0\xe2\x8d\x8d\x33\ \x5c\x8b\xe5\x4a\x29\x07\x98\xe8\x81\x32\x08\x28\xe6\x55\xe4\x31\ \x9a\xd0\x8c\x8c\xd8\xd8\xb6\x85\x42\x51\x5e\x1e\xe2\xc2\xf1\x0e\ \x14\x49\x60\x0c\x52\x17\x41\x04\x94\x22\x11\x1b\x66\xa0\xaf\x1b\ \x74\x80\xbc\xfc\xa9\x38\x8e\x8f\x50\xf1\x75\x45\x70\x6e\x1a\x10\ \xb9\x24\x20\x1a\x2c\x5b\x31\xa5\xc8\xc7\xdd\x8b\x4b\x89\x5d\x4c\ \x90\xf0\x52\x68\xad\xc8\xc9\xb1\x39\xd1\xec\x64\xec\xa6\x80\x18\ \x68\x0b\xc4\x43\x29\x43\xd2\x8b\xd3\xdc\xf4\x5e\x3a\x5a\x14\x4e\ \x2e\x21\xda\x71\x2e\x09\xe4\x65\x3b\x50\x08\x8e\xc6\xef\x6a\xb4\ \xed\x10\xf0\x6b\x40\xb0\x2d\x85\xdf\x67\xa5\x73\x0b\xcb\xd1\x80\ \x02\xdb\x01\x49\x81\xd1\xd8\x96\xa4\xcf\x40\x52\xe3\xc4\x63\x1e\ \x29\xaf\x88\xd8\x38\x06\xb0\xb2\x04\x04\x40\x2b\x6c\x5b\x61\x05\ \x1c\x94\xd2\x1c\x79\xe3\x0c\xaf\x1d\x6d\x65\x6c\x2c\x46\x57\xeb\ \x10\xbf\x09\xaf\x40\x69\x43\x61\x41\x90\xfb\x6b\xee\x64\xc1\xc2\ \xaf\x60\xeb\x04\xf9\xa1\x00\xe5\xa5\x93\x89\x7b\x3e\x82\xa1\xe9\ \x04\x5c\x3c\xc0\x7c\xd6\x01\x68\xf5\x29\x95\xa3\x89\xb4\x0f\x70\ \xf0\xe8\x38\x0f\x6f\xfe\x0b\xa7\x3a\x83\xcc\x1c\x18\xc6\x32\x2e\ \xae\x11\xe6\x96\x5e\xe0\xd5\xd7\x7f\xc0\x82\x45\x5f\xc4\x76\x85\ \xe0\x24\x07\x9f\x5b\x80\x51\x41\x7c\x39\xd3\xf0\xbb\x18\x20\x99\ \x25\x60\x5b\x08\xd6\xc4\xcf\xc8\x0d\x38\x78\xf1\x51\xfa\x47\x87\ \x69\xe8\x2a\xe4\xa3\xd6\xc9\x24\xfa\xc0\x17\x87\x4d\x4b\x82\x74\ \x76\x9e\x07\x46\x41\x3c\x5c\x3b\x85\x63\x81\x4a\x2f\xb8\xb9\xe9\ \x1c\x03\x98\xac\x8f\xe6\xda\x80\x23\x60\x03\x16\x14\x5c\x13\xe4\ \x89\x75\x33\x78\xfd\x99\x5b\xb8\x2d\xe7\x14\x3a\x07\xd0\x10\x57\ \xe0\x79\x43\x04\x73\x73\xc0\x18\x90\x4c\x10\x00\x05\x80\x12\x00\ \xc8\x72\xb0\xb5\x9e\xca\xfe\xa2\x30\x0f\xdc\x57\xcc\xb4\xb2\x11\ \xa2\xd1\x21\xce\xb6\xf5\x30\xbb\x62\x01\x3d\x6e\x11\xe2\x07\x72\ \x40\x01\x96\x0d\x22\x99\xca\x69\x8a\x08\x00\x64\x22\x64\x0b\xa0\ \x94\x7a\x70\xeb\x81\xdd\xd6\x94\xd9\x9f\xe3\xb9\xfd\x3f\x61\xb8\ \xe7\x38\x45\x25\xb3\x28\xbb\x7d\x2d\xd1\xfb\x56\xf2\xe6\x19\xf0\ \x5c\xc8\x9b\x0a\xf6\x18\xe0\x68\x8c\x11\x10\xc1\xa4\x0c\xc6\x98\ \xcc\xcd\x0d\x1a\xb9\x5c\x00\xe8\xee\x6d\xff\x3b\xd7\x57\xd7\x52\ \xb2\xbd\x91\x9e\x9e\x24\xed\x9e\x43\x63\x2f\x44\xbb\xc1\xe7\x87\ \xbb\x3e\x0f\x37\xfc\xf3\x4f\x78\xbe\x59\xcc\x29\x2f\xa3\xf5\x62\ \x02\x8c\x60\xc4\x20\x69\x02\x99\x98\x0d\x0d\x20\x22\xef\xc6\xde\ \x7c\xbe\xf3\x77\xcb\x2b\x09\x1e\xd9\x85\x52\x31\x86\x05\xf2\x7c\ \xf0\xd5\xc2\x38\x8f\x15\x9f\xe1\xa6\x77\x96\xf3\xf1\x6f\x1f\x67\ \xe0\xed\x27\x88\x45\x1a\x99\xff\xe5\x4a\xc4\x4b\x61\x52\x29\x44\ \x24\xe3\x48\x01\xf6\xa5\x56\x64\x35\xf9\x4b\x37\xd0\x77\x78\xcf\ \x17\x78\xeb\xc0\x8f\x71\x5f\xda\x4c\xcd\x89\xed\xac\x6b\xdf\x47\ \xd5\xc7\xcf\xd2\x73\x68\x25\x47\xeb\x0e\xd2\xd0\x70\x88\x6d\x4f\ \xad\xe0\xb5\x5f\x3d\xc3\xd2\xea\xf9\x24\x93\x1e\x06\x0d\xca\x45\ \xd9\x41\x2c\x77\x0a\xe0\x60\x69\x34\xa0\xb2\x9a\x1c\xf7\x50\xf6\ \x94\x20\x47\xf7\x46\xf8\xf3\x07\xbf\xe0\x83\x0f\xa1\x25\x02\x17\ \xc7\x41\x83\xb7\xe6\x4e\x48\xe1\xd8\xa5\xe5\x25\xd4\xa5\x2f\x50\ \x50\x90\x8f\x88\x83\xe5\x4c\x42\xdb\x79\x58\x6e\x88\xe4\x68\xdc\ \x74\xb7\xbd\x3c\x7a\xea\x3c\x9f\x00\x5e\x96\x03\x01\x0b\xaf\x8d\ \x37\x1a\xe1\x9d\x26\xe8\x1f\x24\x31\x33\x48\xdf\xad\x33\xe8\x9c\ \x3f\x9d\x56\xe3\x31\x60\x8c\x83\x31\x2e\x05\x85\x25\x68\x67\x3a\ \x6e\x70\x0e\xda\x2e\x26\x7a\xba\x69\xe8\xc4\xc1\xc7\xff\xf1\xfb\ \x1f\x95\x9f\xdd\xb2\x79\xd5\x5b\x0d\xcd\xd4\x03\x83\xd9\x23\x73\ \x15\x07\xce\xfd\x11\xd9\xba\x8a\xc1\x9d\xeb\xf9\xa4\x6e\x03\xa7\ \xd7\x57\x51\x7f\xf7\x2d\x6c\xcb\xf7\xb3\x64\x7b\x2d\xef\x4b\x2a\ \x2e\x22\xa3\x22\xa6\x4f\x06\x23\x27\xc7\xff\x5a\xbf\x21\xf2\xea\ \x0f\x4b\xda\x7e\xbd\x9e\xd6\xaa\x1b\xd9\x9e\x6b\xf3\x0d\xe0\x46\ \xa0\x00\xd0\x22\x32\x21\xb0\x6f\x1d\x5f\xdf\xbb\x86\x43\xdf\xbf\ \x87\x5d\xf3\x66\xf1\x64\x51\x90\x25\xc0\x6c\x20\x5f\x44\x78\x79\ \x2d\xbf\x4c\x8c\x74\x49\xdf\xf9\xe3\xb1\xb7\xf7\x2c\xed\x78\xe5\ \x7b\x56\xdb\xe2\x0a\x5e\x2a\x2b\x60\x25\x30\x17\x98\x0e\xe4\x7c\ \x76\x26\x73\xd9\x06\x84\x80\x7c\xc0\xf9\xcf\xfd\x57\x36\xb0\x70\ \xef\x6a\xea\x9f\xbd\x9f\xc3\xf3\xe7\xb0\x2d\xe0\x50\x0d\x5c\x07\ \x4c\xba\xd2\xd0\x57\x99\xa2\xff\x37\x94\x52\x21\xc0\x01\x46\x44\ \x24\xce\x55\xf0\x6f\x03\xe2\xf6\xe2\xcc\x69\x65\x93\x00\x00\x00\ \x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x06\x7e\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x06\x45\x49\x44\x41\x54\x48\x89\x9d\x95\x7b\x6c\x95\x77\ \x19\xc7\x3f\xbf\x73\xde\x73\xeb\xe5\x9c\x5e\xe0\x40\x69\xbb\xb2\ \x5e\x28\xe5\x0e\x45\x1c\x63\x83\x11\xc9\x14\xc7\x60\x5b\x34\x38\ \x63\x66\x22\x53\x11\x63\x44\x37\x35\x26\xc6\x7f\x66\x48\x34\x26\ \x6a\x36\x5d\x30\x64\x71\x19\xc8\x28\x0e\xc4\xae\x60\x69\x59\xa1\ \xe1\x3a\x2a\xd4\xf5\xc2\xb5\xd0\xd3\x3b\xbd\x9d\x9e\xeb\x7b\xf9\ \xbd\xef\xfb\xf3\x1f\x34\xa8\x98\xcc\x3d\xc9\xf3\xef\xe7\xf3\xe4\ \xfb\xc7\xf3\x15\x4a\x29\x3e\xc9\xbc\xfd\x43\x51\x5c\x51\x1a\xda\ \x3e\xbb\x6c\xc9\xf7\x95\xeb\xe8\x23\xb1\xce\x57\x8f\xb6\xbb\x6d\ \x5f\xdd\xc4\xd2\xb4\xc5\xe0\xa6\x57\xd5\x38\x80\xf6\xff\x82\xff\ \xf0\x23\x11\x2a\x29\x60\xeb\xb2\xfa\xb5\xdf\xa9\xa8\x7b\x6e\x5d\ \x51\x71\x2d\xae\x27\x48\x76\xf2\xd9\x9f\x6f\x79\xb2\xb8\x2f\x53\ \xf0\xe4\x0b\xc1\x64\xe3\x7e\x21\xc4\xd7\x94\x52\xf2\x63\x0b\x84\ \x10\xe2\xf8\x1e\xd6\xd5\x56\x45\x5f\x99\xbf\x62\xc7\x33\xd1\x79\ \x6b\x7c\x22\x79\x8d\xcc\xdd\xc3\xa8\xbc\xc5\x8c\xfb\xbf\xb8\x3c\ \xbf\xfe\xc5\xe5\x95\xb5\x9f\xe6\xc6\xe1\x13\xf3\x40\x86\x80\x87\ \x0b\x3a\xde\x14\x1a\x8a\xc0\xea\x5d\x2a\x03\xd0\xf8\x9a\xa8\x3c\ \xf3\x46\xf1\x37\xcb\x17\x6e\xfa\x56\xd9\x82\x17\xf3\xbd\xd9\x3e\ \xec\xe1\x26\x46\xc6\xa7\xe9\x9f\x09\x23\x8b\xca\x59\xf5\xec\x2e\ \xc2\x91\x08\x72\xea\x12\x77\x86\xad\x2e\xc0\xfb\x5f\x11\xfd\xe4\ \x2b\xc2\xf7\xc4\x22\x9e\x88\xce\x5f\xbe\x53\xf3\x87\x0b\x9a\x7e\ \x26\xf6\xf9\x7c\x62\x56\xcd\xaa\xad\xaf\x94\xd5\x6c\xa9\xca\xf5\ \xf9\xb1\xee\xb5\x12\x9f\x99\xe4\xc6\x10\xa4\x73\xd6\x32\x6f\xc5\ \xe7\xa8\x5e\xb0\x08\x5c\x89\x02\xe2\x77\x0e\xd9\xad\x97\x9c\x0f\ \x00\x09\x20\x94\x52\x08\x21\xc4\xb1\xd7\x58\x38\x2b\x3a\x7b\x77\ \xc5\xb2\x1d\x2f\xcd\x9e\xb7\x3a\x28\xac\x19\xe2\x89\x61\xdd\x17\ \x88\x68\x91\x48\x89\x4f\x4d\x5f\x65\x66\xa2\x8f\xc1\x29\x41\x5f\ \xba\x8a\xea\x95\x2f\x50\x5a\xb5\x84\x70\xae\x1f\x5d\xd7\x51\xca\ \x8b\x2b\xbc\x74\xbf\xbb\x66\x7c\xf8\xef\x9d\x57\xfd\xc2\x17\xd0\ \xa2\xf2\x07\xa2\xf5\x97\x62\xa5\xc7\x17\x5e\x5b\x51\xf7\xf4\x9e\ \x92\x05\xdb\x23\x41\x6b\x18\x95\xba\x89\x47\xd3\x20\x10\x45\xd9\ \x3a\xfa\xcc\x00\x77\x46\x52\x0c\x66\x4a\x09\x94\x6d\x66\x79\xfd\ \x06\x42\xb9\x21\x5c\xdb\x42\x4a\x89\xeb\x7a\x49\x26\x27\x18\xe9\ \xda\x8f\xd1\x7b\x50\x2e\x5c\xbf\x43\xcb\x8f\x56\x88\x0b\xef\xec\ \x8a\x69\x91\xa2\x92\xd7\xa3\x8f\x6e\xae\x7f\x64\xc1\xb6\xa0\x1a\ \x6f\x45\x39\x3a\x1e\x6f\x00\x29\x25\xb6\x11\x63\x62\x32\xc9\xb5\ \xd1\x20\x9e\x39\xdb\xa8\x7b\x6c\x33\x25\x25\x51\xa4\x65\x60\x19\ \x59\xa4\xed\x60\x18\x16\x77\x7b\x9a\xe9\xee\x38\x46\x6d\xc5\x1c\ \xd6\xef\xd8\xeb\xf3\x05\xe3\xa4\xa7\x53\x28\x22\xb3\x34\x8f\xd7\ \x57\xe5\xf7\x79\x82\xe9\xa1\x76\x42\x9e\x14\xc2\x9b\x8b\x61\x5a\ \x24\xd2\x3a\xd7\x06\x1d\xd2\x39\x8f\x51\xbd\xfe\x19\xca\xca\x2b\ \xf1\x0a\x07\x23\x9b\xc6\x51\x02\xcb\xb4\x18\x1d\xe8\xa2\xe3\xf4\ \xef\x40\xf9\xf8\xcc\xd3\x5b\xa9\xae\x8a\x20\x93\xed\x4c\x8f\x19\ \xdc\xbc\xf0\x11\xbd\x03\x37\x0f\x69\xca\x75\x3d\x42\xd9\x38\x2e\ \x58\xca\x83\x2d\x2d\xee\x8c\x18\xf4\xa7\xca\xa9\x58\xf1\x05\x56\ \xd6\x2c\x21\xe0\xf7\x22\x2d\x13\x43\x4a\x6c\x57\x23\x3e\xd5\xcf\ \xd5\xd3\xfb\x18\x1f\xe9\x61\xe9\x8a\xc7\xd9\xb0\xbe\x1e\xd7\x9a\ \x22\x11\x6b\x24\x9e\x01\x3d\x91\xc3\xb5\xcb\x2d\x83\xef\x5f\xe1\ \x3d\x0d\xc0\x55\x60\x49\x85\x61\x59\x0c\x8c\x26\xb9\xeb\x3e\xc5\ \xc6\xe7\x76\x92\x17\xd2\x90\xb6\xc4\xd0\x4d\x2c\xdb\xc1\x34\x2c\ \xae\x77\xbc\xc3\x8d\x8f\x5a\x29\x2d\xab\xe1\xa5\x97\xbf\x4d\x24\ \x34\xc4\xcc\xd0\x71\x46\x46\x06\x11\xde\x10\xc1\xf0\x62\xae\xb4\ \x1d\x4c\xef\x6b\xcb\xfc\xea\xf2\x2d\xba\x35\x57\x81\x6d\x3b\x18\ \x52\x92\x8c\x67\x68\xbb\x3c\xca\x86\x2f\x7f\x8a\x82\x70\x90\x6c\ \x26\x83\xe3\x80\x61\x5a\x0c\xf5\x5d\xe0\xea\xd9\x03\xf8\x7d\x41\ \x3e\xbb\x79\x0b\xd5\xb5\xc5\xe8\x63\xe7\xe8\xbf\x13\xc3\xb4\x6c\ \x14\x5e\xfc\x79\x95\x4c\x75\x7f\xc8\xdf\x7a\x6e\xb4\x5d\xbe\xc5\ \x49\x60\x52\xb3\x6d\x17\x4b\xda\x24\x93\x26\x7d\xfd\x53\x64\xc4\ \x5c\xf2\x0b\xa2\x98\xa6\xc4\xb2\x3d\x4c\x0c\x75\xd1\x79\xb1\x81\ \xf8\xf8\x5d\x56\x3f\xbe\x99\x35\xf5\x95\x08\xd9\xc7\x48\x77\x03\ \x99\xac\xc4\xb4\x24\x8e\x23\x09\x86\xcb\x48\xde\x4b\xd0\xf0\x97\ \xb6\x9e\xbd\x2d\xfc\x02\x18\x05\x74\x4d\x3a\x0a\xc3\xb4\x89\xa7\ \x4c\x7a\x6f\xdf\x43\x9b\xb3\x84\x70\x64\x16\x89\xf8\x04\x9d\xe7\ \xff\x48\xec\xfa\x39\x1e\xa9\x78\x84\xcf\x7f\x7d\x37\x05\xc1\x61\ \x12\x03\x87\x89\xc7\x13\x64\x75\x13\xdb\x96\x64\x32\x29\xfc\xa1\ \x42\x84\x98\xcb\xd0\x95\xb7\xf5\xbd\x27\xf5\xdf\x98\x92\xbb\x40\ \x52\x29\xa5\x34\x69\x29\x0c\x43\x12\x4f\x1a\xc4\xee\x19\x2c\x5d\ \x54\x81\x50\x16\xef\x1f\xf8\x31\x01\x9f\x60\xdb\xf6\x97\x29\x2d\ \xcf\x41\x1f\x6e\x62\x2c\x36\x42\x3a\x63\x91\x48\x26\x40\xb9\x68\ \xbe\x20\xbe\xdc\x72\x72\x72\x4b\xe9\x3f\x77\x82\x33\x57\x63\x47\ \x93\x3a\xed\xc0\x94\x52\xca\x06\xd0\x4c\xe9\x92\xd1\x25\x93\xd3\ \x12\x6f\xa0\x90\x39\xa5\x35\x9c\x6a\xda\xc7\x9d\xbe\x5e\x76\x7f\ \xf7\x1b\x94\xe4\xf5\x30\xd4\xd9\x4d\x36\x9b\x41\x08\x0d\xdb\x96\ \x58\x86\x81\x37\x27\x4a\x7e\xfe\xa3\x88\x89\x31\x9a\xdf\xfb\x7d\ \xe6\x50\xfb\xf4\xc9\x8b\xb7\xf9\x35\x70\x0f\x30\xff\xf9\x7e\x34\ \xdd\x52\x08\x5d\x32\x35\x63\x61\x11\xc6\x36\xa6\xe9\xb8\xf4\x01\ \x9b\x9e\x5a\xc5\xe8\xad\x23\x64\xc3\xf9\x48\xdb\xc1\x34\x4d\x5c\ \x57\xc7\xa3\xe5\x90\x17\x5d\x8e\x13\xcf\xd2\xd3\xd6\xe8\xec\x3f\ \xd6\xdb\xfb\xd7\x1e\x0e\x65\x4d\x5a\x80\x7e\x20\xa5\x1e\x28\x19\ \xcd\x30\x5c\x54\x56\x92\xd2\x5d\x24\x7e\xae\x9c\x6f\x60\x41\x75\ \x31\xb3\x82\x23\x44\xc2\x61\x10\x1e\x92\xc9\x38\xae\xf2\x10\x0c\ \x97\xe3\x15\x05\x8c\x76\x7e\xa8\xda\xda\x2f\x8d\xbe\xd9\x6c\x1d\ \x9d\xc9\xd2\x0c\xdc\x06\xc6\xee\xc3\x9d\x07\x1f\xa8\x66\x58\x0a\ \xd7\x90\x38\xca\x4f\x2a\x99\xa0\xb6\x6a\x2e\x0b\x2b\x04\x79\x41\ \x17\xc7\xb1\x71\x1c\x45\x30\x52\x8e\x10\x85\x98\xa3\x03\x9c\x69\ \x69\x48\xfd\xb6\x39\x75\xea\xd6\x18\x7f\x02\x7a\xef\x83\x67\x00\ \x43\x3d\xa4\x1e\x35\x47\x81\xab\x04\xca\x4c\x53\x56\x68\xb1\xac\ \xae\x80\x90\x88\xe1\x0f\x14\x92\x36\x20\xaf\xa8\x0e\x73\x74\x94\ \xc1\xae\x46\xf7\x8d\xc3\xb7\x3a\x4e\xdf\xa4\xc1\x92\x5c\x04\x86\ \x80\x29\x40\xff\xcf\xab\xff\x4d\x10\xf0\x7b\xc9\xc9\xd1\x28\x0c\ \x1a\x2c\x5d\x59\x8d\x9b\xee\x21\x2f\x5a\x8e\xed\x99\x47\x20\x10\ \x22\x76\xb6\x85\x23\xcd\x57\x06\x0e\x9c\x75\x8e\xa6\x4c\x8e\x03\ \x31\x60\x1c\x48\x2b\xa5\xe4\xff\x02\xff\x4b\x10\x9f\x9c\xec\x96\ \xd9\xee\x95\x75\xab\x9f\x2f\x34\xac\xeb\x44\x8a\x4a\x08\xe6\xd4\ \x92\x88\xf5\xd2\x72\xe2\xd4\xf4\xbb\xe7\xb3\xad\xdd\x03\x1c\x05\ \xae\xdd\x8f\x23\x01\x98\x0f\x8b\xe3\xa1\x82\xb7\x9a\xdc\x3f\x57\ \x17\x8f\x8b\x9d\x8b\xed\x8d\x73\x2b\x37\x10\x4e\x0f\xd2\xd1\x74\ \xd0\x7a\xfd\xc8\xc0\xb9\xce\x01\x9a\x4c\xc9\x59\x60\x04\x98\xbe\ \x1f\x87\xfb\x71\xc0\x0f\xce\xfc\xb9\x45\x3c\xff\xd6\xf7\xf2\xae\ \x37\xfe\x74\x91\xfa\xd2\xba\x60\x57\xae\x9f\x3d\xc0\x46\xa0\x06\ \x28\x00\x34\xa5\x14\x9f\x64\xff\x01\x38\xa4\x6e\x5f\x55\x49\x82\ \xf9\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x02\xa5\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ \x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ \x79\x71\xc9\x65\x3c\x00\x00\x02\x37\x49\x44\x41\x54\x48\xc7\xdd\ \x54\x5d\x6f\x12\x41\x14\xed\x4f\xf3\x67\xf8\x53\xf6\xb1\x26\x1a\ \x13\x9f\x9a\x18\xfd\x01\x56\x5f\xfa\x68\x0d\xb5\x88\x50\x68\x69\ \x90\x5d\x0a\xc6\x16\x58\xa0\xb0\x2c\x6c\xf9\xb0\x14\xac\x8d\x0f\ \xb0\x33\xc7\x73\x67\xd5\xfa\x01\x8d\x26\xf0\x50\x1f\x26\xf7\xce\ \xb9\x77\xce\xd9\xbd\x77\xee\xac\xdd\xb9\xbb\x6e\x71\x39\x2b\x5a\ \xd6\x9a\x38\xfb\x6d\x8d\xf5\x58\x88\x97\xc7\x53\xbc\x3d\x05\x1e\ \xa5\x80\x58\x59\xe1\x75\x55\xe1\x7e\x1c\xd8\x3e\x9e\xd1\xd7\xb8\ \x17\x53\x88\x11\x7b\x53\x07\x1e\x26\x80\x4c\x1b\x26\xff\x41\x5c\ \x99\xfc\x44\xe3\xfa\xec\x61\x17\x10\x6e\x23\x90\xf6\x14\xe2\x35\ \x60\xa7\x12\x1d\x96\x44\x39\x28\xfb\x57\x27\x33\xec\xba\x1a\xc9\ \x66\x84\x27\x1a\x92\xab\x29\x3a\x45\xaa\x25\x64\x21\xf6\x68\xb7\ \x3f\x4c\x8d\xdd\x65\x4c\x38\xb2\x3f\x09\xac\xb6\x44\x00\x56\xba\ \xfe\x00\x96\xfc\x47\xd6\x3c\x01\x67\xb3\xa4\x91\x61\x3d\x33\xac\ \xfb\x46\x8a\x35\xad\xce\x90\xac\x2b\x3c\x39\x00\xd2\xcd\x08\x7f\ \x9a\x65\x3f\xdc\xd0\xec\x1f\xef\x03\x29\xf6\x46\xfc\x8d\x3d\x6d\ \x7c\xa7\xf7\xad\x07\xf3\x04\x8a\x03\x21\x09\x91\xf3\xe5\x60\x88\ \x64\x6d\x86\x2c\x6f\x4c\xd6\x8b\xf6\x99\x96\x36\x56\xb0\x03\xfa\ \xe9\x53\x6d\x62\x99\x66\x64\xdf\x05\x40\xe1\x06\x01\xeb\xf6\x35\ \x79\x85\x57\xd5\xfa\x51\xf7\x18\x87\xc3\x09\x14\x4a\xac\xdd\x73\ \x5b\xc3\xe6\xa0\xe4\xbc\x10\x9b\xb6\xc2\xd1\x99\xc4\x80\x17\x0e\ \x50\x64\x3c\xd7\x0a\xf1\x2c\xcf\x46\x06\x1a\xa5\x7e\x84\xdb\x1d\ \x85\xf7\xf4\xb7\x4a\x30\xf9\xc5\x9e\xba\xee\x81\x38\xee\x05\x03\ \x3c\xe0\x30\xf1\x88\x64\xa5\x9e\x46\xa1\xab\x49\x36\x43\xbe\x1d\ \x9a\x98\xed\x93\x84\x02\xb2\x24\x26\x1f\x23\xb8\xec\xc5\xff\x1e\ \x17\x8e\xfa\x18\xbf\x08\x58\xff\xcf\x24\x2f\xf9\xda\x5a\x7f\x23\ \xe0\x78\x9f\x80\x72\x9f\xaf\x28\x9f\xec\x06\x7b\x55\x19\x28\x0e\ \x1a\xe0\x7e\x8c\xf0\x9d\x93\x10\xee\x90\xbd\x09\xf8\xf2\xf2\xa9\ \xae\x0c\x34\x9a\x93\x05\x83\x36\x4f\xc0\xbf\x04\x9a\x24\xae\x91\ \xb0\x71\x4e\x91\x91\x46\x95\x22\xe5\x5e\x08\x8f\x44\x75\xc1\xce\ \x19\x1b\x51\x74\xa8\x4d\x9e\xf7\x0f\x02\xd6\xed\x6b\xf2\x12\xaf\ \xad\xb5\xb0\xee\xfd\x2b\xc0\x67\x1d\x6d\xbe\x98\x67\x9f\x59\xd3\ \x0b\x0e\x5a\x27\xc2\x5a\x23\x45\x5c\x1b\x2b\xfb\x02\xa7\x3e\x60\ \x9f\xba\xbc\x0c\xf9\x56\x84\x05\x97\x7a\x71\x0f\x24\xd0\xbb\xd2\ \xf0\xc7\x0a\x9d\x89\x46\x77\x22\x02\xca\x58\x21\x69\xd3\xf7\xc7\ \x8c\x4f\xa2\x25\xe4\xbf\xfb\xc3\x2f\xb8\x51\x60\x69\x25\xfa\x0a\ \x2b\x85\x35\x7e\xfc\x7e\x4a\xed\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x0c\ \x00\x19\xf2\x3c\ \x00\x65\ \x00\x78\x00\x61\x00\x6d\x00\x70\x00\x6c\x00\x65\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x08\ \x05\xe2\x59\x27\ \x00\x6c\ \x00\x6f\x00\x67\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x03\ \x00\x00\x7d\xfe\ \x00\x77\ \x00\x69\x00\x6e\ \x00\x03\ \x00\x00\x73\x73\ \x00\x6d\ \x00\x61\x00\x63\ \x00\x0a\ \x02\x6b\x3c\x87\ \x00\x6c\ \x00\x6f\x00\x67\x00\x6f\x00\x33\x00\x32\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x06\xc8\x40\x47\ \x00\x65\ \x00\x64\x00\x69\x00\x74\x00\x72\x00\x65\x00\x64\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x04\x14\x52\xc7\ \x00\x66\ \x00\x69\x00\x6c\x00\x65\x00\x6e\x00\x65\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x04\x11\x7b\x87\ \x00\x7a\ \x00\x6f\x00\x6f\x00\x6d\x00\x69\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x07\xc5\x9b\xc7\ \x00\x7a\ \x00\x6f\x00\x6f\x00\x6d\x00\x6f\x00\x75\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x0f\x47\x85\x87\ \x00\x65\ \x00\x78\x00\x70\x00\x6f\x00\x72\x00\x74\x00\x70\x00\x64\x00\x66\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x06\x52\xd9\xe7\ \x00\x66\ \x00\x69\x00\x6c\x00\x65\x00\x70\x00\x72\x00\x69\x00\x6e\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x04\x8e\xa1\x07\ \x00\x74\ \x00\x65\x00\x78\x00\x74\x00\x6c\x00\x65\x00\x66\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x09\xc8\x40\xc7\ \x00\x65\ \x00\x64\x00\x69\x00\x74\x00\x75\x00\x6e\x00\x64\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0f\ \x00\xba\x29\x27\ \x00\x74\ \x00\x65\x00\x78\x00\x74\x00\x6a\x00\x75\x00\x73\x00\x74\x00\x69\x00\x66\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x03\x30\x79\x47\ \x00\x74\ \x00\x65\x00\x78\x00\x74\x00\x63\x00\x65\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x0b\x0e\x42\x07\ \x00\x65\ \x00\x64\x00\x69\x00\x74\x00\x63\x00\x6f\x00\x70\x00\x79\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x05\x68\x0e\x67\ \x00\x66\ \x00\x69\x00\x6c\x00\x65\x00\x73\x00\x61\x00\x76\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x0d\x7e\xa2\x67\ \x00\x74\ \x00\x65\x00\x78\x00\x74\x00\x62\x00\x6f\x00\x6c\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x0b\x04\x5d\xe7\ \x00\x74\ \x00\x65\x00\x78\x00\x74\x00\x69\x00\x74\x00\x61\x00\x6c\x00\x69\x00\x63\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x0f\x5a\x2e\x27\ \x00\x74\ \x00\x65\x00\x78\x00\x74\x00\x75\x00\x6e\x00\x64\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0b\ \x0a\x10\x36\x07\ \x00\x65\ \x00\x64\x00\x69\x00\x74\x00\x63\x00\x75\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x0d\xc9\x3b\xe7\ \x00\x65\ \x00\x64\x00\x69\x00\x74\x00\x70\x00\x61\x00\x73\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x0b\x21\x0f\x87\ \x00\x66\ \x00\x69\x00\x6c\x00\x65\x00\x6f\x00\x70\x00\x65\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0d\ \x08\x68\x27\x47\ \x00\x74\ \x00\x65\x00\x78\x00\x74\x00\x72\x00\x69\x00\x67\x00\x68\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x1e\x00\x02\x00\x00\x00\x04\x00\x00\x00\x03\ \x00\x00\x00\x52\x00\x02\x00\x00\x00\x13\x00\x00\x00\x1a\ \x00\x00\x00\x46\x00\x02\x00\x00\x00\x13\x00\x00\x00\x07\ \x00\x00\x00\x5e\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x95\ \x00\x00\x00\x30\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x19\ \x00\x00\x01\x64\x00\x00\x00\x00\x00\x01\x00\x00\xaa\x12\ \x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x00\xac\xcd\ \x00\x00\x00\xb2\x00\x00\x00\x00\x00\x01\x00\x00\x8d\x1c\ \x00\x00\x00\x96\x00\x00\x00\x00\x00\x01\x00\x00\x8a\x18\ \x00\x00\x01\x28\x00\x00\x00\x00\x00\x01\x00\x00\xa0\x81\ \x00\x00\x01\xc8\x00\x00\x00\x00\x00\x01\x00\x00\xb4\x75\ \x00\x00\x01\x08\x00\x00\x00\x00\x00\x01\x00\x00\x9a\xcd\ \x00\x00\x00\x78\x00\x00\x00\x00\x00\x01\x00\x00\x83\x19\ \x00\x00\x00\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x91\xd8\ \x00\x00\x02\xa0\x00\x00\x00\x00\x00\x01\x00\x00\xd8\x6c\ \x00\x00\x01\x46\x00\x00\x00\x00\x00\x01\x00\x00\xa3\x26\ \x00\x00\x02\x46\x00\x00\x00\x00\x00\x01\x00\x00\xc4\xb0\ \x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\xbd\xa0\ \x00\x00\x01\xaa\x00\x00\x00\x00\x00\x01\x00\x00\xaf\x44\ \x00\x00\x02\x82\x00\x00\x00\x00\x00\x01\x00\x00\xd1\xea\ \x00\x00\x01\xe6\x00\x00\x00\x00\x00\x01\x00\x00\xb9\x2e\ \x00\x00\x02\x62\x00\x00\x00\x00\x00\x01\x00\x00\xcc\x1c\ \x00\x00\x00\xe8\x00\x00\x00\x00\x00\x01\x00\x00\x96\xa6\ \x00\x00\x02\x26\x00\x00\x00\x00\x00\x01\x00\x00\xc0\xe1\ \x00\x00\x01\x64\x00\x00\x00\x00\x00\x01\x00\x00\x43\x50\ \x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x00\x48\x3d\ \x00\x00\x00\xb2\x00\x00\x00\x00\x00\x01\x00\x00\x1d\x8f\ \x00\x00\x00\x96\x00\x00\x00\x00\x00\x01\x00\x00\x18\xf7\ \x00\x00\x01\x28\x00\x00\x00\x00\x00\x01\x00\x00\x37\xa3\ \x00\x00\x01\xc8\x00\x00\x00\x00\x00\x01\x00\x00\x53\x7d\ \x00\x00\x01\x08\x00\x00\x00\x00\x00\x01\x00\x00\x2f\x78\ \x00\x00\x00\x78\x00\x00\x00\x00\x00\x01\x00\x00\x12\x1b\ \x00\x00\x00\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x24\x33\ \x00\x00\x02\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x7d\x97\ \x00\x00\x01\x46\x00\x00\x00\x00\x00\x01\x00\x00\x3c\x7a\ \x00\x00\x02\x46\x00\x00\x00\x00\x00\x01\x00\x00\x67\xb9\ \x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\x5e\x86\ \x00\x00\x01\xaa\x00\x00\x00\x00\x00\x01\x00\x00\x4d\xbd\ \x00\x00\x02\x82\x00\x00\x00\x00\x00\x01\x00\x00\x75\x1b\ \x00\x00\x01\xe6\x00\x00\x00\x00\x00\x01\x00\x00\x58\x37\ \x00\x00\x02\x62\x00\x00\x00\x00\x00\x01\x00\x00\x6d\xa5\ \x00\x00\x00\xe8\x00\x00\x00\x00\x00\x01\x00\x00\x2a\xb5\ \x00\x00\x02\x26\x00\x00\x00\x00\x00\x01\x00\x00\x63\x16\ " 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() PyQt5_gpl-5.10.1/examples/richtext/textobject/0000755000076500000240000000000013245231431021322 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/richtext/textobject/files/0000755000076500000240000000000013245231431022424 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/richtext/textobject/files/heart.svg0000644000076500000240000000744113245231431024256 0ustar philstaff00000000000000 Heart Left-Highlight This is a normal valentines day heart. holiday valentines valentine hash(0x8a091c0) hash(0x8a0916c) signs_and_symbols hash(0x8a091f0) day Jon Phillips Jon Phillips Jon Phillips image/svg+xml en PyQt5_gpl-5.10.1/examples/richtext/textobject/textobject.py0000755000076500000240000001144213245231431024054 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QFile, QIODevice, QObject, QSizeF from PyQt5.QtGui import QTextCharFormat, QTextFormat, QTextObjectInterface from PyQt5.QtWidgets import (QApplication, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QTextEdit, QVBoxLayout, QWidget) from PyQt5.QtSvg import QSvgRenderer class SvgTextObject(QObject, QTextObjectInterface): def intrinsicSize(self, doc, posInDocument, format): renderer = QSvgRenderer(format.property(Window.SvgData)) size = renderer.defaultSize() if size.height() > 25: size *= 25.0 / size.height() return QSizeF(size) def drawObject(self, painter, rect, doc, posInDocument, format): renderer = QSvgRenderer(format.property(Window.SvgData)) renderer.render(painter, rect) class Window(QWidget): SvgTextFormat = QTextFormat.UserObject + 1 SvgData = 1 def __init__(self): super(Window, self).__init__() self.setupGui() self.setupTextObject() self.setWindowTitle("Text Object Example") def insertTextObject(self): fileName = self.fileNameLineEdit.text() file = QFile(fileName) if not file.open(QIODevice.ReadOnly): QMessageBox.warning(self, "Error Opening File", "Could not open '%s'" % fileName) svgData = file.readAll() svgCharFormat = QTextCharFormat() svgCharFormat.setObjectType(Window.SvgTextFormat) svgCharFormat.setProperty(Window.SvgData, svgData) try: # Python v2. orc = unichr(0xfffc) except NameError: # Python v3. orc = chr(0xfffc) cursor = self.textEdit.textCursor() cursor.insertText(orc, svgCharFormat) self.textEdit.setTextCursor(cursor) def setupTextObject(self): svgInterface = SvgTextObject(self) self.textEdit.document().documentLayout().registerHandler(Window.SvgTextFormat, svgInterface) def setupGui(self): fileNameLabel = QLabel("Svg File Name:") self.fileNameLineEdit = QLineEdit() insertTextObjectButton = QPushButton("Insert Image") self.fileNameLineEdit.setText('./files/heart.svg') insertTextObjectButton.clicked.connect(self.insertTextObject) bottomLayout = QHBoxLayout() bottomLayout.addWidget(fileNameLabel) bottomLayout.addWidget(self.fileNameLineEdit) bottomLayout.addWidget(insertTextObjectButton) self.textEdit = QTextEdit() mainLayout = QVBoxLayout() mainLayout.addWidget(self.textEdit) mainLayout.addLayout(bottomLayout) self.setLayout(mainLayout) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/sql/0000755000076500000240000000000013245231431016114 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/sql/cachedtable.py0000755000076500000240000001013013245231431020703 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QApplication, QDialog, QDialogButtonBox, QHBoxLayout, QMessageBox, QPushButton, QTableView) from PyQt5.QtSql import QSqlTableModel import connection class TableEditor(QDialog): def __init__(self, tableName, parent=None): super(TableEditor, self).__init__(parent) self.model = QSqlTableModel(self) self.model.setTable(tableName) self.model.setEditStrategy(QSqlTableModel.OnManualSubmit) self.model.select() self.model.setHeaderData(0, Qt.Horizontal, "ID") self.model.setHeaderData(1, Qt.Horizontal, "First name") self.model.setHeaderData(2, Qt.Horizontal, "Last name") view = QTableView() view.setModel(self.model) submitButton = QPushButton("Submit") submitButton.setDefault(True) revertButton = QPushButton("&Revert") quitButton = QPushButton("Quit") buttonBox = QDialogButtonBox(Qt.Vertical) buttonBox.addButton(submitButton, QDialogButtonBox.ActionRole) buttonBox.addButton(revertButton, QDialogButtonBox.ActionRole) buttonBox.addButton(quitButton, QDialogButtonBox.RejectRole) submitButton.clicked.connect(self.submit) revertButton.clicked.connect(self.model.revertAll) quitButton.clicked.connect(self.close) mainLayout = QHBoxLayout() mainLayout.addWidget(view) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Cached Table") def submit(self): self.model.database().transaction() if self.model.submitAll(): self.model.database().commit() else: self.model.database().rollback() QMessageBox.warning(self, "Cached Table", "The database reported an error: %s" % self.model.lastError().text()) if __name__ == '__main__': import sys app = QApplication(sys.argv) if not connection.createConnection(): sys.exit(1) editor = TableEditor('person') editor.show() sys.exit(editor.exec_()) PyQt5_gpl-5.10.1/examples/sql/connection.py0000644000076500000240000001357313245231431020636 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtWidgets import QMessageBox from PyQt5.QtSql import QSqlDatabase, QSqlQuery def createConnection(): db = QSqlDatabase.addDatabase('QSQLITE') db.setDatabaseName(':memory:') if not db.open(): QMessageBox.critical(None, "Cannot open database", "Unable to establish a database connection.\n" "This example needs SQLite support. Please read the Qt SQL " "driver documentation for information how to build it.\n\n" "Click Cancel to exit.", QMessageBox.Cancel) return False query = QSqlQuery() query.exec_("create table person(id int primary key, " "firstname varchar(20), lastname varchar(20))") query.exec_("insert into person values(101, 'Danny', 'Young')") query.exec_("insert into person values(102, 'Christine', 'Holand')") query.exec_("insert into person values(103, 'Lars', 'Gordon')") query.exec_("insert into person values(104, 'Roberto', 'Robitaille')") query.exec_("insert into person values(105, 'Maria', 'Papadopoulos')") query.exec_("create table offices (id int primary key," "imagefile int," "location varchar(20)," "country varchar(20)," "description varchar(100))"); query.exec_("insert into offices " "values(0, 0, 'Oslo', 'Norway'," "'Oslo is home to more than 500 000 citizens and has a " "lot to offer.It has been called \"The city with the big " "heart\" and this is a nickname we are happy to live up to.')") query.exec_("insert into offices " "values(1, 1, 'Brisbane', 'Australia'," "'Brisbane is the capital of Queensland, the Sunshine State, " "where it is beautiful one day, perfect the next. " "Brisbane is Australia''s 3rd largest city, being home " "to almost 2 million people.')") query.exec_("insert into offices " "values(2, 2, 'Redwood City', 'US'," "'You find Redwood City in the heart of the Bay Area " "just north of Silicon Valley. The largest nearby city is " "San Jose which is the third largest city in California " "and the 10th largest in the US.')") query.exec_("insert into offices " "values(3, 3, 'Berlin', 'Germany'," "'Berlin, the capital of Germany is dynamic, cosmopolitan " "and creative, allowing for every kind of lifestyle. " "East meets West in the metropolis at the heart of a " "changing Europe.')") query.exec_("insert into offices " "values(4, 4, 'Munich', 'Germany'," "'Several technology companies are represented in Munich, " "and the city is often called the \"Bavarian Silicon Valley\". " "The exciting city is also filled with culture, " "art and music. ')") query.exec_("insert into offices " "values(5, 5, 'Beijing', 'China'," "'Beijing as a capital city has more than 3000 years of " "history. Today the city counts 12 million citizens, and " "is the political, economic and cultural centre of China.')") query.exec_("create table images (locationid int, file varchar(20))") query.exec_("insert into images values(0, 'images/oslo.png')") query.exec_("insert into images values(1, 'images/brisbane.png')") query.exec_("insert into images values(2, 'images/redwood.png')") query.exec_("insert into images values(3, 'images/berlin.png')") query.exec_("insert into images values(4, 'images/munich.png')") query.exec_("insert into images values(5, 'images/beijing.png')") return True PyQt5_gpl-5.10.1/examples/sql/querymodel.py0000755000076500000240000001174413245231431020666 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtGui import QColor from PyQt5.QtWidgets import QApplication, QTableView from PyQt5.QtSql import QSqlQuery, QSqlQueryModel import connection class CustomSqlModel(QSqlQueryModel): def data(self, index, role): value = super(CustomSqlModel, self).data(index, role) if value is not None and role == Qt.DisplayRole: if index.column() == 0: return '#%d' % value elif index.column() == 2: return value.upper() if role == Qt.TextColorRole and index.column() == 1: return QColor(Qt.blue) return value class EditableSqlModel(QSqlQueryModel): def flags(self, index): flags = super(EditableSqlModel, self).flags(index) if index.column() in (1, 2): flags |= Qt.ItemIsEditable return flags def setData(self, index, value, role): if index.column() not in (1, 2): return False primaryKeyIndex = self.index(index.row(), 0) id = self.data(primaryKeyIndex) self.clear() if index.column() == 1: ok = self.setFirstName(id, value) else: ok = self.setLastName(id, value) self.refresh() return ok def refresh(self): self.setQuery('select * from person') self.setHeaderData(0, Qt.Horizontal, "ID") self.setHeaderData(1, Qt.Horizontal, "First name") self.setHeaderData(2, Qt.Horizontal, "Last name") def setFirstName(self, personId, firstName): query = QSqlQuery() query.prepare('update person set firstname = ? where id = ?') query.addBindValue(firstName) query.addBindValue(personId) return query.exec_() def setLastName(self, personId, lastName): query = QSqlQuery() query.prepare('update person set lastname = ? where id = ?') query.addBindValue(lastName) query.addBindValue(personId) return query.exec_() def initializeModel(model): model.setQuery('select * from person') model.setHeaderData(0, Qt.Horizontal, "ID") model.setHeaderData(1, Qt.Horizontal, "First name") model.setHeaderData(2, Qt.Horizontal, "Last name") offset = 0 views = [] def createView(title, model): global offset, views view = QTableView() views.append(view) view.setModel(model) view.setWindowTitle(title) view.move(100 + offset, 100 + offset) offset += 20 view.show() if __name__ == '__main__': import sys app = QApplication(sys.argv) if not connection.createConnection(): sys.exit(1) plainModel = QSqlQueryModel() editableModel = EditableSqlModel() customModel = CustomSqlModel() initializeModel(plainModel) initializeModel(editableModel) initializeModel(customModel) createView("Plain Query Model", plainModel) createView("Editable Query Model", editableModel) createView("Custom Query Model", customModel) sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/sql/README0000644000076500000240000000153513245231431017000 0ustar philstaff00000000000000PyQt provides extensive database interoperability, with support for products from both open source and proprietary vendors. SQL support is integrated with PyQt's model/view architecture, making it easier to provide GUI integration for your database applications. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/sql/relationaltablemodel.py0000755000076500000240000001001613245231431022652 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QTableView from PyQt5.QtSql import (QSqlQuery, QSqlRelation, QSqlRelationalDelegate, QSqlRelationalTableModel, QSqlTableModel) import connection def initializeModel(model): model.setTable('employee') model.setEditStrategy(QSqlTableModel.OnManualSubmit) model.setRelation(2, QSqlRelation('city', 'id', 'name')) model.setRelation(3, QSqlRelation('country', 'id', 'name')) model.setHeaderData(0, Qt.Horizontal, "ID") model.setHeaderData(1, Qt.Horizontal, "Name") model.setHeaderData(2, Qt.Horizontal, "City") model.setHeaderData(3, Qt.Horizontal, "Country") model.select() def createView(title, model): view = QTableView() view.setModel(model) view.setItemDelegate(QSqlRelationalDelegate(view)) view.setWindowTitle(title) return view def createRelationalTables(): query = QSqlQuery() query.exec_("create table employee(id int, name varchar(20), city int, country int)") query.exec_("insert into employee values(1, 'Espen', 5000, 47)") query.exec_("insert into employee values(2, 'Harald', 80000, 49)") query.exec_("insert into employee values(3, 'Sam', 100, 41)") query.exec_("create table city(id int, name varchar(20))") query.exec_("insert into city values(100, 'San Jose')") query.exec_("insert into city values(5000, 'Oslo')") query.exec_("insert into city values(80000, 'Munich')") query.exec_("create table country(id int, name varchar(20))") query.exec_("insert into country values(41, 'USA')") query.exec_("insert into country values(47, 'Norway')") query.exec_("insert into country values(49, 'Germany')") if __name__ == '__main__': import sys app = QApplication(sys.argv) if not connection.createConnection(): sys.exit(1) createRelationalTables() model = QSqlRelationalTableModel() initializeModel(model) view = createView("Relational Table Model", model) view.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/sql/tablemodel.py0000755000076500000240000000575113245231431020611 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QTableView from PyQt5.QtSql import QSqlTableModel import connection def initializeModel(model): model.setTable('person') model.setEditStrategy(QSqlTableModel.OnManualSubmit) model.select() model.setHeaderData(0, Qt.Horizontal, "ID") model.setHeaderData(1, Qt.Horizontal, "First name") model.setHeaderData(2, Qt.Horizontal, "Last name") def createView(title, model): view = QTableView() view.setModel(model) view.setWindowTitle(title) return view if __name__ == '__main__': import sys app = QApplication(sys.argv) if not connection.createConnection(): sys.exit(1) model = QSqlTableModel() initializeModel(model) view1 = createView("Table Model (View 1)", model) view2 = createView("Table Model (View 2)", model) view1.show() view2.move(view1.x() + view1.width() + 20, view1.y()) view2.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/threads/0000755000076500000240000000000013245231431016747 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/threads/mandelbrot.py0000755000076500000240000002764113245231431021465 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import (pyqtSignal, QMutex, QMutexLocker, QPoint, QSize, Qt, QThread, QWaitCondition) from PyQt5.QtGui import QColor, QImage, QPainter, QPixmap, qRgb from PyQt5.QtWidgets import QApplication, QWidget DefaultCenterX = -0.647011 DefaultCenterY = -0.0395159 DefaultScale = 0.00403897 ZoomInFactor = 0.8 ZoomOutFactor = 1 / ZoomInFactor ScrollStep = 20 class RenderThread(QThread): ColormapSize = 512 renderedImage = pyqtSignal(QImage, float) def __init__(self, parent=None): super(RenderThread, self).__init__(parent) self.mutex = QMutex() self.condition = QWaitCondition() self.centerX = 0.0 self.centerY = 0.0 self.scaleFactor = 0.0 self.resultSize = QSize() self.colormap = [] self.restart = False self.abort = False for i in range(RenderThread.ColormapSize): self.colormap.append(self.rgbFromWaveLength(380.0 + (i * 400.0 / RenderThread.ColormapSize))) def __del__(self): self.mutex.lock() self.abort = True self.condition.wakeOne() self.mutex.unlock() self.wait() def render(self, centerX, centerY, scaleFactor, resultSize): locker = QMutexLocker(self.mutex) self.centerX = centerX self.centerY = centerY self.scaleFactor = scaleFactor self.resultSize = resultSize if not self.isRunning(): self.start(QThread.LowPriority) else: self.restart = True self.condition.wakeOne() def run(self): while True: self.mutex.lock() resultSize = self.resultSize scaleFactor = self.scaleFactor centerX = self.centerX centerY = self.centerY self.mutex.unlock() halfWidth = resultSize.width() // 2 halfHeight = resultSize.height() // 2 image = QImage(resultSize, QImage.Format_RGB32) NumPasses = 8 curpass = 0 while curpass < NumPasses: MaxIterations = (1 << (2 * curpass + 6)) + 32 Limit = 4 allBlack = True for y in range(-halfHeight, halfHeight): if self.restart: break if self.abort: return ay = 1j * (centerY + (y * scaleFactor)) for x in range(-halfWidth, halfWidth): c0 = centerX + (x * scaleFactor) + ay c = c0 numIterations = 0 while numIterations < MaxIterations: numIterations += 1 c = c*c + c0 if abs(c) >= Limit: break numIterations += 1 c = c*c + c0 if abs(c) >= Limit: break numIterations += 1 c = c*c + c0 if abs(c) >= Limit: break numIterations += 1 c = c*c + c0 if abs(c) >= Limit: break if numIterations < MaxIterations: image.setPixel(x + halfWidth, y + halfHeight, self.colormap[numIterations % RenderThread.ColormapSize]) allBlack = False else: image.setPixel(x + halfWidth, y + halfHeight, qRgb(0, 0, 0)) if allBlack and curpass == 0: curpass = 4 else: if not self.restart: self.renderedImage.emit(image, scaleFactor) curpass += 1 self.mutex.lock() if not self.restart: self.condition.wait(self.mutex) self.restart = False self.mutex.unlock() def rgbFromWaveLength(self, wave): r = 0.0 g = 0.0 b = 0.0 if wave >= 380.0 and wave <= 440.0: r = -1.0 * (wave - 440.0) / (440.0 - 380.0) b = 1.0 elif wave >= 440.0 and wave <= 490.0: g = (wave - 440.0) / (490.0 - 440.0) b = 1.0 elif wave >= 490.0 and wave <= 510.0: g = 1.0 b = -1.0 * (wave - 510.0) / (510.0 - 490.0) elif wave >= 510.0 and wave <= 580.0: r = (wave - 510.0) / (580.0 - 510.0) g = 1.0 elif wave >= 580.0 and wave <= 645.0: r = 1.0 g = -1.0 * (wave - 645.0) / (645.0 - 580.0) elif wave >= 645.0 and wave <= 780.0: r = 1.0 s = 1.0 if wave > 700.0: s = 0.3 + 0.7 * (780.0 - wave) / (780.0 - 700.0) elif wave < 420.0: s = 0.3 + 0.7 * (wave - 380.0) / (420.0 - 380.0) r = pow(r * s, 0.8) g = pow(g * s, 0.8) b = pow(b * s, 0.8) return qRgb(r*255, g*255, b*255) class MandelbrotWidget(QWidget): def __init__(self, parent=None): super(MandelbrotWidget, self).__init__(parent) self.thread = RenderThread() self.pixmap = QPixmap() self.pixmapOffset = QPoint() self.lastDragPos = QPoint() self.centerX = DefaultCenterX self.centerY = DefaultCenterY self.pixmapScale = DefaultScale self.curScale = DefaultScale self.thread.renderedImage.connect(self.updatePixmap) self.setWindowTitle("Mandelbrot") self.setCursor(Qt.CrossCursor) self.resize(550, 400) def paintEvent(self, event): painter = QPainter(self) painter.fillRect(self.rect(), Qt.black) if self.pixmap.isNull(): painter.setPen(Qt.white) painter.drawText(self.rect(), Qt.AlignCenter, "Rendering initial image, please wait...") return if self.curScale == self.pixmapScale: painter.drawPixmap(self.pixmapOffset, self.pixmap) else: scaleFactor = self.pixmapScale / self.curScale newWidth = int(self.pixmap.width() * scaleFactor) newHeight = int(self.pixmap.height() * scaleFactor) newX = self.pixmapOffset.x() + (self.pixmap.width() - newWidth) / 2 newY = self.pixmapOffset.y() + (self.pixmap.height() - newHeight) / 2 painter.save() painter.translate(newX, newY) painter.scale(scaleFactor, scaleFactor) exposed, _ = painter.matrix().inverted() exposed = exposed.mapRect(self.rect()).adjusted(-1, -1, 1, 1) painter.drawPixmap(exposed, self.pixmap, exposed) painter.restore() text = "Use mouse wheel or the '+' and '-' keys to zoom. Press and " \ "hold left mouse button to scroll." metrics = painter.fontMetrics() textWidth = metrics.width(text) painter.setPen(Qt.NoPen) painter.setBrush(QColor(0, 0, 0, 127)) painter.drawRect((self.width() - textWidth) / 2 - 5, 0, textWidth + 10, metrics.lineSpacing() + 5) painter.setPen(Qt.white) painter.drawText((self.width() - textWidth) / 2, metrics.leading() + metrics.ascent(), text) def resizeEvent(self, event): self.thread.render(self.centerX, self.centerY, self.curScale, self.size()) def keyPressEvent(self, event): if event.key() == Qt.Key_Plus: self.zoom(ZoomInFactor) elif event.key() == Qt.Key_Minus: self.zoom(ZoomOutFactor) elif event.key() == Qt.Key_Left: self.scroll(-ScrollStep, 0) elif event.key() == Qt.Key_Right: self.scroll(+ScrollStep, 0) elif event.key() == Qt.Key_Down: self.scroll(0, -ScrollStep) elif event.key() == Qt.Key_Up: self.scroll(0, +ScrollStep) else: super(MandelbrotWidget, self).keyPressEvent(event) def wheelEvent(self, event): numDegrees = event.angleDelta().y() / 8 numSteps = numDegrees / 15.0 self.zoom(pow(ZoomInFactor, numSteps)) def mousePressEvent(self, event): if event.buttons() == Qt.LeftButton: self.lastDragPos = QPoint(event.pos()) def mouseMoveEvent(self, event): if event.buttons() & Qt.LeftButton: self.pixmapOffset += event.pos() - self.lastDragPos self.lastDragPos = QPoint(event.pos()) self.update() def mouseReleaseEvent(self, event): if event.button() == Qt.LeftButton: self.pixmapOffset += event.pos() - self.lastDragPos self.lastDragPos = QPoint() deltaX = (self.width() - self.pixmap.width()) / 2 - self.pixmapOffset.x() deltaY = (self.height() - self.pixmap.height()) / 2 - self.pixmapOffset.y() self.scroll(deltaX, deltaY) def updatePixmap(self, image, scaleFactor): if not self.lastDragPos.isNull(): return self.pixmap = QPixmap.fromImage(image) self.pixmapOffset = QPoint() self.lastDragPosition = QPoint() self.pixmapScale = scaleFactor self.update() def zoom(self, zoomFactor): self.curScale *= zoomFactor self.update() self.thread.render(self.centerX, self.centerY, self.curScale, self.size()) def scroll(self, deltaX, deltaY): self.centerX += deltaX * self.curScale self.centerY += deltaY * self.curScale self.update() self.thread.render(self.centerX, self.centerY, self.curScale, self.size()) if __name__ == '__main__': import sys app = QApplication(sys.argv) widget = MandelbrotWidget() widget.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/threads/README0000644000076500000240000000155113245231431017631 0ustar philstaff00000000000000PyQt makes it easier than ever to write multithreaded applications. More classes have been made usable from non-GUI threads, and the signals and slots mechanism can now be used to communicate between threads. Additionally, it is now possible to move objects between threads. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/threads/semaphores.py0000755000076500000240000000554613245231431021504 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys import random from PyQt5.QtCore import QCoreApplication, QSemaphore, QThread DataSize = 100000 BufferSize = 8192 buffer = list(range(BufferSize)) freeBytes = QSemaphore(BufferSize) usedBytes = QSemaphore() class Producer(QThread): def run(self): for i in range(DataSize): freeBytes.acquire() buffer[i % BufferSize] = "ACGT"[random.randint(0, 3)] usedBytes.release() class Consumer(QThread): def run(self): for i in range(DataSize): usedBytes.acquire() sys.stderr.write(buffer[i % BufferSize]) freeBytes.release() sys.stderr.write("\n") if __name__ == '__main__': app = QCoreApplication(sys.argv) producer = Producer() consumer = Consumer() producer.start() consumer.start() producer.wait() consumer.wait() PyQt5_gpl-5.10.1/examples/threads/waitconditions.py0000755000076500000240000000656413245231431022375 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys import random from PyQt5.QtCore import QCoreApplication, QMutex, QThread, QWaitCondition DataSize = 100000 BufferSize = 8192 buffer = list(range(BufferSize)) bufferNotEmpty = QWaitCondition() bufferNotFull = QWaitCondition() mutex = QMutex() numUsedBytes = 0 class Producer(QThread): def run(self): global numUsedBytes for i in range(DataSize): mutex.lock() if numUsedBytes == BufferSize: bufferNotFull.wait(mutex) mutex.unlock() buffer[i % BufferSize] = "ACGT"[random.randint(0, 3)] mutex.lock() numUsedBytes += 1 bufferNotEmpty.wakeAll() mutex.unlock() class Consumer(QThread): def run(self): global numUsedBytes for i in range(DataSize): mutex.lock() if numUsedBytes == 0: bufferNotEmpty.wait(mutex) mutex.unlock() sys.stderr.write(buffer[i % BufferSize]) mutex.lock() numUsedBytes -= 1 bufferNotFull.wakeAll() mutex.unlock() sys.stderr.write("\n") if __name__ == '__main__': app = QCoreApplication(sys.argv) producer = Producer() consumer = Consumer() producer.start() consumer.start() producer.wait() consumer.wait() PyQt5_gpl-5.10.1/examples/tools/0000755000076500000240000000000013245231431016455 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/tools/codecs/0000755000076500000240000000000013245231431017715 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/tools/codecs/codecs.py0000755000076500000240000002073113245231431021535 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QFile, QRegExp, QTextCodec, QTextStream from PyQt5.QtWidgets import (QAction, QApplication, QComboBox, QDialog, QDialogButtonBox, QFileDialog, QGridLayout, QLabel, QMainWindow, QMenu, QMessageBox, QTextEdit) def codec_name(codec): try: # Python v3. name = str(codec.name(), encoding='ascii') except TypeError: # Python v2. name = str(codec.name()) return name class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.textEdit = QTextEdit() self.textEdit.setLineWrapMode(QTextEdit.NoWrap) self.setCentralWidget(self.textEdit) self.codecs = [] self.findCodecs() self.previewForm = PreviewForm(self) self.previewForm.setCodecList(self.codecs) self.saveAsActs = [] self.createActions() self.createMenus() self.setWindowTitle("Codecs") self.resize(500, 400) def open(self): fileName, _ = QFileDialog.getOpenFileName(self) if fileName: inFile = QFile(fileName) if not inFile.open(QFile.ReadOnly): QMessageBox.warning(self, "Codecs", "Cannot read file %s:\n%s" % (fileName, inFile.errorString())) return data = inFile.readAll() self.previewForm.setEncodedData(data) if self.previewForm.exec_(): self.textEdit.setPlainText(self.previewForm.decodedString()) def save(self): fileName, _ = QFileDialog.getSaveFileName(self) if fileName: outFile = QFile(fileName) if not outFile.open(QFile.WriteOnly|QFile.Text): QMessageBox.warning(self, "Codecs", "Cannot write file %s:\n%s" % (fileName, outFile.errorString())) return action = self.sender() codecName = action.data() out = QTextStream(outFile) out.setCodec(codecName) out << self.textEdit.toPlainText() def about(self): QMessageBox.about(self, "About Codecs", "The Codecs example demonstrates how to read and " "write files using various encodings.") def aboutToShowSaveAsMenu(self): currentText = self.textEdit.toPlainText() for action in self.saveAsActs: codecName = action.data() codec = QTextCodec.codecForName(codecName) action.setVisible(codec and codec.canEncode(currentText)) def findCodecs(self): codecMap = [] iso8859RegExp = QRegExp('ISO[- ]8859-([0-9]+).*') for mib in QTextCodec.availableMibs(): codec = QTextCodec.codecForMib(mib) sortKey = codec_name(codec).upper() rank = 0 if sortKey.startswith('UTF-8'): rank = 1 elif sortKey.startswith('UTF-16'): rank = 2 elif iso8859RegExp.exactMatch(sortKey): if len(iso8859RegExp.cap(1)) == 1: rank = 3 else: rank = 4 else: rank = 5 codecMap.append((str(rank) + sortKey, codec)) codecMap.sort() self.codecs = [item[-1] for item in codecMap] def createActions(self): self.openAct = QAction("&Open...", self, shortcut="Ctrl+O", triggered=self.open) for codec in self.codecs: name = codec_name(codec) action = QAction(name + '...', self, triggered=self.save) action.setData(name) self.saveAsActs.append(action) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=self.close) self.aboutAct = QAction("&About", self, triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, triggered=QApplication.instance().aboutQt) def createMenus(self): self.saveAsMenu = QMenu("&Save As", self) for action in self.saveAsActs: self.saveAsMenu.addAction(action) self.saveAsMenu.aboutToShow.connect(self.aboutToShowSaveAsMenu) self.fileMenu = QMenu("&File", self) self.fileMenu.addAction(self.openAct) self.fileMenu.addMenu(self.saveAsMenu) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.helpMenu = QMenu("&Help", self) self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) self.menuBar().addMenu(self.fileMenu) self.menuBar().addSeparator() self.menuBar().addMenu(self.helpMenu) class PreviewForm(QDialog): def __init__(self, parent): super(PreviewForm, self).__init__(parent) self.encodingComboBox = QComboBox() encodingLabel = QLabel("&Encoding:") encodingLabel.setBuddy(self.encodingComboBox) self.textEdit = QTextEdit() self.textEdit.setLineWrapMode(QTextEdit.NoWrap) self.textEdit.setReadOnly(True) buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) self.encodingComboBox.activated.connect(self.updateTextEdit) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) mainLayout = QGridLayout() mainLayout.addWidget(encodingLabel, 0, 0) mainLayout.addWidget(self.encodingComboBox, 0, 1) mainLayout.addWidget(self.textEdit, 1, 0, 1, 2) mainLayout.addWidget(buttonBox, 2, 0, 1, 2) self.setLayout(mainLayout) self.setWindowTitle("Choose Encoding") self.resize(400, 300) def setCodecList(self, codecs): self.encodingComboBox.clear() for codec in codecs: self.encodingComboBox.addItem(codec_name(codec), codec.mibEnum()) def setEncodedData(self, data): self.encodedData = data self.updateTextEdit() def decodedString(self): return self.decodedStr def updateTextEdit(self): mib = self.encodingComboBox.itemData(self.encodingComboBox.currentIndex()) codec = QTextCodec.codecForMib(mib) data = QTextStream(self.encodedData) data.setAutoDetectUnicode(False) data.setCodec(codec) self.decodedStr = data.readAll() self.textEdit.setPlainText(self.decodedStr) if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/tools/codecs/encodedfiles/0000755000076500000240000000000013245231431022341 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/tools/codecs/encodedfiles/iso-8859-1.txt0000644000076500000240000000037413245231431024451 0ustar philstaff00000000000000Paulo Coelho: O Gênio e as Rosas Anna Hallström, Urban Östberg: Svår svenska Darrell Huff: How to Lie with Statistics Franz Kafka: Das Schloß Walter Moers: Die 13½ Leben des Käpt'n Blaubär Dag Solstad: Forsøk på å beskrive det ugjennomtrengelige PyQt5_gpl-5.10.1/examples/tools/codecs/encodedfiles/iso-8859-15.txt0000644000076500000240000000052113245231431024530 0ustar philstaff00000000000000Paulo Coelho: O Gênio e as Rosas Jean-Pierre Coffe: À table en famille avec 15 ¤ par jour Anna Hallström, Urban Östberg: Svår svenska Darrell Huff: How to Lie with Statistics Franz Kafka: Das Schloß Helena Lehecková: T¨ekkiä suomalaisille Arthur Rimbaud: ¼uvres complètes Dag Solstad: Forsøk på å beskrive det ugjennomtrengelige PyQt5_gpl-5.10.1/examples/tools/codecs/encodedfiles/utf-16.txt0000644000076500000240000000024213245231431024122 0ustar philstaff00000000000000ÿþSpråk: Norsk “»ÎÃñ: •»»·½¹º¬ /7K:: CAA:89 ¸Å´Å : \Õm­´Å ŠžŠ: åe,gžŠ Langage : Français PyQt5_gpl-5.10.1/examples/tools/codecs/encodedfiles/utf-16be.txt0000644000076500000240000000024013245231431024427 0ustar philstaff00000000000000Språk: Norsk “»ÎÃñ: •»»·½¹º¬ /7K::  CAA:89 ŸŴ : Õ\­mÅ´ ŠŠž: eåg,Šž Langage : Français PyQt5_gpl-5.10.1/examples/tools/codecs/encodedfiles/utf-16le.txt0000644000076500000240000000024013245231431024441 0ustar philstaff00000000000000Språk: Norsk “»ÎÃñ: •»»·½¹º¬ /7K:: CAA:89 ¸Å´Å : \Õm­´Å ŠžŠ: åe,gžŠ Langage : Français PyQt5_gpl-5.10.1/examples/tools/codecs/encodedfiles/utf-8.txt0000644000076500000240000000017713245231431024052 0ustar philstaff00000000000000SprÃ¥k: Norsk Γλώσσα: Ελληνικά Язык: РуÑÑкий 언어 : 한국어 言語: 日本語 Langage : Français PyQt5_gpl-5.10.1/examples/tools/customcompleter/0000755000076500000240000000000013245231431021702 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/tools/customcompleter/customcompleter.py0000644000076500000240000001673313245231431025513 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2012 Digia Plc ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QFile, QStringListModel, Qt from PyQt5.QtGui import QCursor, QKeySequence, QTextCursor from PyQt5.QtWidgets import (QAction, QApplication, QCompleter, QMainWindow, QMessageBox, QTextEdit) import customcompleter_rc class TextEdit(QTextEdit): def __init__(self, parent=None): super(TextEdit, self).__init__(parent) self._completer = None self.setPlainText( "This TextEdit provides autocompletions for words that have " "more than 3 characters. You can trigger autocompletion " "using %s" % QKeySequence("Ctrl+E").toString( QKeySequence.NativeText)) def setCompleter(self, c): if self._completer is not None: self._completer.activated.disconnect() self._completer = c c.setWidget(self) c.setCompletionMode(QCompleter.PopupCompletion) c.setCaseSensitivity(Qt.CaseInsensitive) c.activated.connect(self.insertCompletion) def completer(self): return self._completer def insertCompletion(self, completion): if self._completer.widget() is not self: return tc = self.textCursor() extra = len(completion) - len(self._completer.completionPrefix()) tc.movePosition(QTextCursor.Left) tc.movePosition(QTextCursor.EndOfWord) tc.insertText(completion[-extra:]) self.setTextCursor(tc) def textUnderCursor(self): tc = self.textCursor() tc.select(QTextCursor.WordUnderCursor) return tc.selectedText() def focusInEvent(self, e): if self._completer is not None: self._completer.setWidget(self) super(TextEdit, self).focusInEvent(e) def keyPressEvent(self, e): if self._completer is not None and self._completer.popup().isVisible(): # The following keys are forwarded by the completer to the widget. if e.key() in (Qt.Key_Enter, Qt.Key_Return, Qt.Key_Escape, Qt.Key_Tab, Qt.Key_Backtab): e.ignore() # Let the completer do default behavior. return isShortcut = ((e.modifiers() & Qt.ControlModifier) != 0 and e.key() == Qt.Key_E) if self._completer is None or not isShortcut: # Do not process the shortcut when we have a completer. super(TextEdit, self).keyPressEvent(e) ctrlOrShift = e.modifiers() & (Qt.ControlModifier | Qt.ShiftModifier) if self._completer is None or (ctrlOrShift and len(e.text()) == 0): return eow = "~!@#$%^&*()_+{}|:\"<>?,./;'[]\\-=" hasModifier = (e.modifiers() != Qt.NoModifier) and not ctrlOrShift completionPrefix = self.textUnderCursor() if not isShortcut and (hasModifier or len(e.text()) == 0 or len(completionPrefix) < 3 or e.text()[-1] in eow): self._completer.popup().hide() return if completionPrefix != self._completer.completionPrefix(): self._completer.setCompletionPrefix(completionPrefix) self._completer.popup().setCurrentIndex( self._completer.completionModel().index(0, 0)) cr = self.cursorRect() cr.setWidth(self._completer.popup().sizeHintForColumn(0) + self._completer.popup().verticalScrollBar().sizeHint().width()) self._completer.complete(cr) class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.createMenu() self.completingTextEdit = TextEdit() self.completer = QCompleter(self) self.completer.setModel(self.modelFromFile(':/resources/wordlist.txt')) self.completer.setModelSorting(QCompleter.CaseInsensitivelySortedModel) self.completer.setCaseSensitivity(Qt.CaseInsensitive) self.completer.setWrapAround(False) self.completingTextEdit.setCompleter(self.completer) self.setCentralWidget(self.completingTextEdit) self.resize(500, 300) self.setWindowTitle("Completer") def createMenu(self): exitAction = QAction("Exit", self) aboutAct = QAction("About", self) aboutQtAct = QAction("About Qt", self) exitAction.triggered.connect(QApplication.instance().quit) aboutAct.triggered.connect(self.about) aboutQtAct.triggered.connect(QApplication.instance().aboutQt) fileMenu = self.menuBar().addMenu("File") fileMenu.addAction(exitAction) helpMenu = self.menuBar().addMenu("About") helpMenu.addAction(aboutAct) helpMenu.addAction(aboutQtAct) def modelFromFile(self, fileName): f = QFile(fileName) if not f.open(QFile.ReadOnly): return QStringListModel(self.completer) QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) words = [] while not f.atEnd(): line = f.readLine().trimmed() if line.length() != 0: try: line = str(line, encoding='ascii') except TypeError: line = str(line) words.append(line) QApplication.restoreOverrideCursor() return QStringListModel(words, self.completer) def about(self): QMessageBox.about(self, "About", "This example demonstrates the different features of the " "QCompleter class.") if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/tools/customcompleter/customcompleter.qrc0000644000076500000240000000016413245231431025637 0ustar philstaff00000000000000 resources/wordlist.txt PyQt5_gpl-5.10.1/examples/tools/customcompleter/customcompleter_rc.py0000644000076500000240000013322013245231431026166 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Tue May 14 15:36:48 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x2b\x52\ \x41\ \x34\x0a\x61\x62\x6c\x65\x0a\x61\x62\x6f\x75\x74\x0a\x61\x62\x6f\ \x76\x65\x0a\x61\x62\x73\x65\x6e\x63\x65\x0a\x61\x62\x73\x6f\x6c\ \x75\x74\x65\x6c\x79\x0a\x61\x62\x73\x74\x72\x61\x63\x74\x0a\x61\ \x63\x63\x65\x73\x73\x0a\x61\x63\x63\x6f\x72\x64\x69\x6e\x67\x0a\ \x61\x63\x63\x75\x6d\x75\x6c\x61\x74\x65\x64\x0a\x61\x63\x68\x69\ \x65\x76\x65\x0a\x61\x63\x68\x69\x65\x76\x69\x6e\x67\x0a\x61\x63\ \x74\x69\x76\x69\x74\x79\x0a\x61\x63\x74\x73\x0a\x61\x63\x74\x75\ \x61\x6c\x0a\x61\x63\x74\x75\x61\x6c\x6c\x79\x0a\x61\x64\x64\x0a\ \x61\x64\x64\x65\x64\x0a\x61\x64\x64\x69\x6e\x67\x0a\x61\x64\x64\ \x69\x74\x69\x6f\x6e\x0a\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\ \x6c\x79\x0a\x61\x64\x64\x69\x74\x69\x6f\x6e\x73\x0a\x61\x64\x64\ \x72\x65\x73\x73\x65\x73\x0a\x61\x64\x6a\x75\x73\x74\x0a\x61\x64\ \x6a\x75\x73\x74\x6d\x65\x6e\x74\x73\x0a\x61\x64\x76\x61\x6e\x63\ \x65\x64\x0a\x61\x64\x76\x69\x63\x65\x0a\x61\x66\x74\x65\x72\x0a\ \x61\x66\x74\x65\x72\x77\x61\x72\x64\x73\x0a\x61\x67\x61\x69\x6e\ \x0a\x61\x67\x65\x6e\x64\x61\x0a\x61\x69\x6d\x0a\x61\x6c\x67\x6f\ \x72\x69\x74\x68\x6d\x0a\x61\x6c\x6c\x0a\x61\x6c\x6c\x6f\x63\x61\ \x74\x65\x64\x0a\x61\x6c\x6c\x6f\x77\x0a\x61\x6c\x6c\x6f\x77\x65\ \x64\x0a\x61\x6c\x6c\x6f\x77\x69\x6e\x67\x0a\x61\x6c\x6c\x6f\x77\ \x73\x0a\x61\x6c\x6f\x6e\x67\x0a\x61\x6c\x70\x68\x61\x0a\x61\x6c\ \x72\x65\x61\x64\x79\x0a\x61\x6c\x73\x6f\x0a\x61\x6c\x74\x65\x72\ \x6e\x61\x74\x69\x76\x65\x0a\x61\x6c\x74\x65\x72\x6e\x61\x74\x69\ \x76\x65\x6c\x79\x0a\x61\x6c\x74\x68\x6f\x75\x67\x68\x0a\x41\x6d\ \x65\x72\x69\x63\x61\x6e\x0a\x61\x6e\x0a\x61\x6e\x64\x0a\x61\x6e\ \x6e\x6f\x75\x6e\x63\x65\x64\x0a\x61\x6e\x6e\x6f\x79\x0a\x61\x6e\ \x6f\x74\x68\x65\x72\x0a\x61\x6e\x73\x77\x65\x72\x0a\x61\x6e\x73\ \x77\x65\x72\x73\x0a\x61\x6e\x79\x0a\x61\x6e\x79\x74\x68\x69\x6e\ \x67\x0a\x61\x6e\x79\x77\x61\x79\x0a\x61\x70\x61\x72\x74\x0a\x41\ \x50\x49\x0a\x61\x70\x70\x65\x61\x72\x0a\x61\x70\x70\x65\x61\x72\ \x73\x0a\x61\x70\x70\x65\x6e\x64\x69\x63\x65\x73\x0a\x61\x70\x70\ \x65\x6e\x64\x69\x78\x0a\x61\x70\x70\x65\x6e\x64\x73\x0a\x61\x70\ \x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x0a\x61\x70\x70\x6c\x69\x63\ \x61\x74\x69\x6f\x6e\x73\x0a\x61\x70\x70\x6c\x79\x0a\x61\x70\x70\ \x72\x6f\x61\x63\x68\x0a\x61\x70\x70\x72\x6f\x61\x63\x68\x65\x73\ \x0a\x61\x70\x70\x72\x6f\x70\x72\x69\x61\x74\x65\x0a\x41\x72\x61\ \x62\x69\x63\x0a\x61\x72\x62\x69\x74\x72\x61\x72\x79\x0a\x61\x72\ \x65\x0a\x61\x72\x65\x61\x73\x0a\x41\x52\x47\x42\x0a\x61\x72\x67\ \x75\x6d\x65\x6e\x74\x0a\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x0a\ \x61\x72\x6f\x75\x6e\x64\x0a\x61\x72\x72\x61\x6e\x67\x65\x6d\x65\ \x6e\x74\x73\x0a\x61\x72\x72\x69\x76\x65\x0a\x61\x72\x72\x69\x76\ \x65\x64\x0a\x41\x72\x74\x68\x75\x72\x0a\x61\x72\x74\x69\x63\x6c\ \x65\x0a\x61\x72\x74\x69\x63\x6c\x65\x73\x0a\x61\x73\x0a\x61\x73\ \x6b\x65\x64\x0a\x61\x73\x70\x65\x63\x74\x73\x0a\x61\x73\x73\x75\ \x6d\x65\x0a\x61\x74\x0a\x61\x74\x74\x61\x63\x68\x6d\x65\x6e\x74\ \x0a\x61\x74\x74\x65\x6d\x70\x74\x0a\x61\x74\x74\x65\x6d\x70\x74\ \x69\x6e\x67\x0a\x61\x74\x74\x65\x6e\x64\x0a\x61\x74\x74\x65\x6e\ \x64\x65\x65\x73\x0a\x61\x74\x74\x72\x69\x62\x75\x74\x65\x73\x0a\ \x61\x75\x74\x68\x6f\x72\x73\x0a\x61\x76\x61\x69\x6c\x61\x62\x69\ \x6c\x69\x74\x79\x0a\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x0a\x61\ \x76\x6f\x69\x64\x0a\x61\x77\x61\x79\x0a\x62\x61\x63\x6b\x0a\x62\ \x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x0a\x62\x61\x63\x6b\x67\x72\ \x6f\x75\x6e\x64\x73\x0a\x62\x61\x6e\x64\x77\x69\x64\x74\x68\x0a\ \x62\x61\x6e\x64\x77\x69\x64\x74\x68\x73\x0a\x42\x61\x72\x63\x65\ \x6c\x6f\x6e\x61\x0a\x62\x61\x73\x65\x0a\x62\x61\x73\x65\x64\x0a\ \x62\x61\x73\x69\x63\x0a\x62\x61\x73\x69\x63\x61\x6c\x6c\x79\x0a\ \x62\x61\x73\x69\x63\x73\x0a\x62\x65\x0a\x62\x65\x63\x61\x75\x73\ \x65\x0a\x62\x65\x65\x6e\x0a\x62\x65\x66\x6f\x72\x65\x0a\x62\x65\ \x68\x61\x76\x65\x0a\x62\x65\x68\x61\x76\x69\x6f\x72\x0a\x62\x65\ \x68\x69\x6e\x64\x0a\x62\x65\x69\x6e\x67\x0a\x62\x65\x6c\x6f\x77\ \x0a\x62\x65\x6e\x65\x66\x69\x74\x73\x0a\x42\x65\x72\x6b\x65\x6c\ \x65\x79\x0a\x62\x65\x74\x77\x65\x65\x6e\x0a\x62\x69\x74\x0a\x62\ \x69\x74\x73\x0a\x62\x69\x74\x77\x69\x73\x65\x0a\x62\x6c\x61\x63\ \x6b\x0a\x62\x6c\x65\x6e\x64\x65\x64\x0a\x62\x6c\x65\x6e\x64\x69\ \x6e\x67\x0a\x62\x6c\x65\x6e\x64\x73\x0a\x62\x6c\x6f\x63\x6b\x0a\ \x62\x6c\x75\x65\x0a\x42\x4d\x50\x0a\x62\x6f\x64\x79\x0a\x62\x6f\ \x6c\x64\x0a\x62\x6f\x6f\x6b\x69\x6e\x67\x0a\x62\x6f\x6f\x6c\x0a\ \x42\x6f\x73\x74\x6f\x6e\x0a\x62\x6f\x74\x68\x0a\x62\x6f\x74\x74\ \x6f\x6d\x0a\x62\x6f\x78\x0a\x62\x6f\x78\x65\x73\x0a\x62\x72\x61\ \x63\x65\x73\x0a\x62\x72\x65\x61\x6b\x0a\x62\x72\x65\x61\x6b\x73\ \x0a\x62\x72\x6f\x61\x64\x0a\x62\x72\x6f\x77\x73\x65\x72\x73\x0a\ \x62\x75\x66\x66\x65\x72\x0a\x62\x75\x66\x66\x65\x72\x73\x0a\x62\ \x75\x69\x6c\x64\x0a\x62\x75\x69\x6c\x64\x73\x0a\x62\x75\x69\x6c\ \x74\x0a\x62\x75\x6e\x64\x6c\x65\x64\x0a\x62\x75\x72\x64\x65\x6e\ \x73\x0a\x62\x75\x73\x79\x0a\x62\x75\x74\x0a\x62\x79\x0a\x62\x79\ \x70\x61\x73\x73\x0a\x62\x79\x70\x61\x73\x73\x69\x6e\x67\x0a\x62\ \x79\x74\x65\x73\x0a\x63\x61\x6c\x65\x6e\x64\x61\x72\x0a\x63\x61\ \x6c\x6c\x0a\x63\x61\x6c\x6c\x65\x64\x0a\x63\x61\x6c\x6c\x69\x6e\ \x67\x0a\x63\x61\x6c\x6c\x73\x0a\x43\x61\x6d\x62\x72\x69\x64\x67\ \x65\x0a\x63\x61\x6e\x0a\x63\x61\x6e\x6f\x6e\x69\x63\x61\x6c\x0a\ \x63\x61\x6e\x6f\x6e\x69\x63\x61\x6c\x69\x73\x65\x64\x0a\x63\x61\ \x70\x0a\x63\x61\x70\x61\x62\x69\x6c\x69\x74\x69\x65\x73\x0a\x63\ \x61\x70\x61\x63\x69\x74\x79\x0a\x63\x61\x70\x74\x69\x6f\x6e\x0a\ \x63\x61\x72\x64\x0a\x63\x61\x72\x65\x0a\x63\x61\x73\x65\x0a\x63\ \x61\x73\x74\x0a\x63\x61\x74\x63\x68\x0a\x63\x61\x75\x73\x69\x6e\ \x67\x0a\x63\x65\x6e\x74\x72\x65\x0a\x63\x65\x72\x74\x61\x69\x6e\ \x0a\x63\x68\x61\x6c\x6c\x65\x6e\x67\x65\x73\x0a\x63\x68\x61\x6e\ \x63\x65\x0a\x63\x68\x61\x6e\x67\x65\x0a\x63\x68\x61\x6e\x67\x65\ \x73\x0a\x63\x68\x61\x6e\x67\x69\x6e\x67\x0a\x63\x68\x61\x6e\x6e\ \x65\x6c\x0a\x63\x68\x61\x6e\x6e\x65\x6c\x73\x0a\x63\x68\x61\x70\ \x74\x65\x72\x0a\x63\x68\x61\x72\x0a\x63\x68\x61\x72\x74\x0a\x63\ \x68\x61\x72\x74\x73\x0a\x63\x68\x65\x63\x6b\x0a\x63\x68\x65\x63\ \x6b\x73\x0a\x43\x68\x69\x63\x61\x67\x6f\x0a\x63\x68\x6f\x73\x65\ \x6e\x0a\x63\x68\x75\x6e\x6b\x0a\x63\x69\x72\x63\x6c\x65\x0a\x63\ \x69\x74\x61\x74\x69\x6f\x6e\x0a\x63\x69\x74\x79\x0a\x63\x6c\x61\ \x69\x6d\x0a\x63\x6c\x61\x73\x73\x0a\x63\x6c\x61\x73\x73\x65\x73\ \x0a\x63\x6c\x61\x75\x73\x65\x0a\x63\x6c\x61\x75\x73\x65\x73\x0a\ \x63\x6c\x65\x61\x72\x0a\x63\x6c\x65\x61\x72\x69\x6e\x67\x0a\x63\ \x6c\x69\x65\x6e\x74\x0a\x63\x6c\x69\x65\x6e\x74\x73\x0a\x63\x6c\ \x6f\x73\x65\x0a\x63\x6c\x6f\x73\x65\x64\x0a\x63\x6f\x64\x65\x0a\ \x63\x6f\x6c\x6f\x6e\x0a\x63\x6f\x6c\x6f\x72\x0a\x63\x6f\x6c\x6f\ \x72\x69\x7a\x65\x0a\x63\x6f\x6c\x6f\x72\x69\x7a\x65\x72\x0a\x63\ \x6f\x6c\x6f\x72\x73\x0a\x63\x6f\x6c\x6f\x75\x72\x0a\x63\x6f\x6c\ \x75\x6d\x6e\x0a\x63\x6f\x6c\x75\x6d\x6e\x73\x0a\x63\x6f\x6d\x62\ \x69\x6e\x65\x0a\x63\x6f\x6d\x62\x69\x6e\x65\x64\x0a\x63\x6f\x6d\ \x62\x69\x6e\x65\x73\x0a\x63\x6f\x6d\x62\x69\x6e\x69\x6e\x67\x0a\ \x63\x6f\x6d\x65\x73\x0a\x63\x6f\x6d\x6d\x61\x6e\x64\x0a\x63\x6f\ \x6d\x6d\x61\x6e\x64\x73\x0a\x63\x6f\x6d\x6d\x65\x6e\x74\x0a\x63\ \x6f\x6d\x6d\x6f\x6e\x0a\x63\x6f\x6d\x6d\x75\x6e\x69\x63\x61\x74\ \x65\x0a\x63\x6f\x6d\x6d\x75\x6e\x69\x74\x79\x0a\x63\x6f\x6d\x70\ \x69\x6c\x65\x64\x0a\x63\x6f\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x0a\ \x63\x6f\x6d\x70\x6c\x65\x74\x65\x0a\x63\x6f\x6d\x70\x6c\x65\x74\ \x65\x6c\x79\x0a\x63\x6f\x6d\x70\x6c\x65\x74\x65\x6e\x65\x73\x73\ \x0a\x63\x6f\x6d\x70\x6c\x65\x74\x65\x73\x0a\x63\x6f\x6d\x70\x6c\ \x65\x74\x69\x6f\x6e\x0a\x63\x6f\x6d\x70\x6c\x65\x78\x0a\x63\x6f\ \x6d\x70\x6c\x69\x61\x6e\x74\x0a\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\ \x74\x0a\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x0a\x63\x6f\x6d\ \x70\x6f\x73\x69\x74\x69\x6e\x67\x0a\x63\x6f\x6d\x70\x6f\x73\x69\ \x74\x69\x6f\x6e\x0a\x63\x6f\x6d\x70\x72\x65\x73\x73\x69\x6f\x6e\ \x0a\x63\x6f\x6d\x70\x75\x74\x61\x74\x69\x6f\x6e\x0a\x63\x6f\x6d\ \x70\x75\x74\x65\x72\x0a\x63\x6f\x6e\x63\x65\x70\x74\x73\x0a\x63\ \x6f\x6e\x63\x6c\x75\x73\x69\x6f\x6e\x0a\x63\x6f\x6e\x63\x75\x72\ \x72\x65\x6e\x74\x0a\x63\x6f\x6e\x66\x69\x67\x75\x72\x61\x62\x6c\ \x65\x0a\x63\x6f\x6e\x67\x65\x73\x74\x65\x64\x0a\x63\x6f\x6e\x67\ \x65\x73\x74\x69\x6f\x6e\x0a\x63\x6f\x6e\x6e\x65\x63\x74\x0a\x63\ \x6f\x6e\x6e\x65\x63\x74\x65\x64\x0a\x63\x6f\x6e\x6e\x65\x63\x74\ \x69\x6f\x6e\x0a\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x73\x0a\ \x63\x6f\x6e\x73\x0a\x63\x6f\x6e\x73\x69\x64\x65\x72\x0a\x63\x6f\ \x6e\x73\x69\x73\x74\x69\x6e\x67\x0a\x63\x6f\x6e\x73\x69\x73\x74\ \x73\x0a\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x0a\x63\x6f\x6e\x73\ \x74\x72\x75\x63\x74\x65\x64\x0a\x63\x6f\x6e\x73\x74\x72\x75\x63\ \x74\x69\x6e\x67\x0a\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\ \x0a\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x73\x0a\x63\x6f\x6e\x73\ \x75\x6d\x65\x0a\x63\x6f\x6e\x74\x61\x63\x74\x0a\x63\x6f\x6e\x74\ \x61\x69\x6e\x0a\x63\x6f\x6e\x74\x61\x69\x6e\x69\x6e\x67\x0a\x63\ \x6f\x6e\x74\x61\x69\x6e\x73\x0a\x63\x6f\x6e\x74\x65\x6e\x74\x73\ \x0a\x63\x6f\x6e\x74\x65\x6e\x74\x73\x0a\x63\x6f\x6e\x74\x69\x6e\ \x75\x65\x0a\x63\x6f\x6e\x74\x69\x6e\x75\x65\x64\x0a\x63\x6f\x6e\ \x74\x72\x69\x62\x75\x74\x6f\x72\x73\x0a\x63\x6f\x6e\x74\x72\x6f\ \x6c\x0a\x63\x6f\x6e\x74\x72\x6f\x6c\x6c\x65\x64\x0a\x63\x6f\x6e\ \x74\x72\x6f\x6c\x6c\x65\x72\x0a\x63\x6f\x6e\x74\x72\x6f\x6c\x6c\ \x65\x72\x0a\x63\x6f\x6e\x74\x72\x6f\x6c\x6c\x69\x6e\x67\x0a\x63\ \x6f\x6e\x74\x72\x6f\x6c\x73\x0a\x63\x6f\x6e\x74\x72\x6f\x6c\x73\ \x0a\x63\x6f\x6e\x76\x65\x6e\x74\x69\x6f\x6e\x73\x0a\x63\x6f\x6f\ \x6b\x0a\x63\x6f\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x0a\x63\x6f\ \x70\x79\x0a\x63\x6f\x70\x79\x72\x69\x67\x68\x74\x0a\x63\x6f\x72\ \x65\x0a\x63\x6f\x72\x65\x73\x0a\x63\x6f\x72\x6f\x6c\x6c\x61\x72\ \x79\x0a\x63\x6f\x72\x72\x65\x63\x74\x0a\x63\x6f\x72\x72\x65\x63\ \x74\x6c\x79\x0a\x63\x6f\x72\x72\x65\x73\x70\x6f\x6e\x64\x69\x6e\ \x67\x0a\x63\x6f\x75\x6c\x64\x0a\x63\x6f\x75\x70\x6c\x65\x0a\x63\ \x6f\x77\x6f\x72\x6b\x65\x72\x73\x0a\x43\x50\x55\x0a\x63\x72\x65\ \x61\x74\x65\x0a\x63\x72\x65\x61\x74\x65\x73\x0a\x63\x72\x65\x61\ \x74\x69\x6e\x67\x0a\x63\x72\x75\x63\x69\x61\x6c\x0a\x63\x75\x6c\ \x74\x75\x72\x65\x73\x0a\x63\x75\x72\x72\x65\x6e\x74\x0a\x63\x75\ \x72\x72\x65\x6e\x74\x6c\x79\x0a\x63\x75\x73\x74\x6f\x6d\x0a\x63\ \x75\x73\x74\x6f\x6d\x69\x7a\x65\x64\x0a\x63\x75\x74\x0a\x64\x61\ \x74\x61\x0a\x64\x61\x74\x61\x62\x61\x73\x65\x0a\x64\x61\x74\x61\ \x73\x65\x74\x73\x0a\x64\x61\x74\x75\x6d\x0a\x64\x61\x79\x0a\x64\ \x61\x79\x73\x0a\x64\x65\x61\x6c\x0a\x64\x65\x61\x6c\x69\x6e\x67\ \x0a\x64\x65\x63\x69\x64\x65\x0a\x64\x65\x63\x6f\x75\x70\x6c\x65\ \x0a\x64\x65\x63\x6f\x75\x70\x6c\x65\x64\x0a\x64\x65\x65\x70\x6c\ \x79\x0a\x64\x65\x66\x0a\x64\x65\x66\x61\x75\x6c\x74\x0a\x64\x65\ \x66\x69\x6e\x65\x0a\x64\x65\x66\x69\x6e\x65\x73\x0a\x64\x65\x66\ \x69\x6e\x69\x74\x69\x6f\x6e\x0a\x64\x65\x66\x69\x6e\x69\x74\x69\ \x6f\x6e\x73\x0a\x64\x65\x6c\x65\x67\x61\x74\x65\x0a\x64\x65\x6c\ \x65\x74\x65\x0a\x64\x65\x6d\x6f\x0a\x64\x65\x6d\x6f\x6e\x73\x74\ \x72\x61\x74\x65\x0a\x64\x65\x6d\x6f\x6e\x73\x74\x72\x61\x74\x69\ \x6f\x6e\x73\x0a\x64\x65\x70\x6c\x6f\x79\x65\x64\x0a\x64\x65\x73\ \x63\x72\x69\x62\x65\x0a\x64\x65\x73\x63\x72\x69\x62\x65\x73\x0a\ \x64\x65\x73\x69\x67\x6e\x0a\x64\x65\x73\x6b\x74\x6f\x70\x0a\x64\ \x65\x73\x6b\x74\x6f\x70\x73\x0a\x64\x65\x73\x74\x69\x6e\x61\x74\ \x69\x6f\x6e\x0a\x64\x65\x73\x74\x69\x6e\x61\x74\x69\x6f\x6e\x73\ \x0a\x64\x65\x73\x74\x72\x75\x63\x74\x6f\x72\x0a\x64\x65\x74\x61\ \x69\x6c\x73\x0a\x64\x65\x74\x65\x63\x74\x0a\x64\x65\x74\x65\x72\ \x6d\x69\x6e\x65\x0a\x64\x65\x74\x65\x72\x6d\x69\x6e\x65\x73\x0a\ \x64\x65\x76\x65\x6c\x6f\x70\x65\x72\x0a\x64\x65\x76\x65\x6c\x6f\ \x70\x65\x72\x73\x0a\x64\x65\x76\x65\x6c\x6f\x70\x6d\x65\x6e\x74\ \x0a\x64\x65\x76\x65\x6c\x6f\x70\x6d\x65\x6e\x74\x73\x0a\x64\x65\ \x76\x69\x63\x65\x0a\x64\x65\x76\x69\x63\x65\x73\x0a\x64\x69\x61\ \x67\x72\x61\x6d\x0a\x64\x69\x61\x6c\x6f\x67\x73\x0a\x64\x69\x63\ \x74\x69\x6f\x6e\x61\x72\x79\x0a\x64\x69\x64\x0a\x64\x69\x66\x66\ \x65\x72\x65\x6e\x63\x65\x0a\x64\x69\x66\x66\x65\x72\x65\x6e\x63\ \x65\x73\x0a\x64\x69\x66\x66\x65\x72\x65\x6e\x74\x0a\x64\x69\x66\ \x66\x65\x72\x73\x0a\x64\x69\x67\x69\x74\x61\x6c\x0a\x64\x69\x72\ \x65\x63\x74\x0a\x64\x69\x72\x65\x63\x74\x0a\x64\x69\x72\x65\x63\ \x74\x69\x6f\x6e\x73\x0a\x64\x69\x72\x65\x63\x74\x6c\x79\x0a\x64\ \x69\x72\x65\x63\x74\x6f\x72\x79\x0a\x64\x69\x73\x63\x75\x73\x73\ \x0a\x64\x69\x73\x70\x6c\x61\x79\x0a\x64\x69\x73\x70\x6c\x61\x79\ \x69\x6e\x67\x0a\x64\x69\x73\x70\x6c\x61\x79\x73\x0a\x64\x69\x73\ \x74\x72\x69\x62\x75\x74\x65\x0a\x64\x69\x73\x74\x72\x69\x62\x75\ \x74\x69\x6f\x6e\x0a\x64\x69\x73\x74\x75\x72\x62\x69\x6e\x67\x0a\ \x64\x69\x76\x69\x64\x65\x0a\x64\x6f\x0a\x64\x6f\x63\x75\x6d\x65\ \x6e\x74\x61\x74\x69\x6f\x6e\x0a\x64\x6f\x63\x75\x6d\x65\x6e\x74\ \x73\x0a\x64\x6f\x65\x73\x0a\x64\x6f\x6e\x65\x0a\x64\x6f\x77\x6e\ \x0a\x64\x6f\x77\x6e\x4c\x69\x6d\x69\x74\x0a\x64\x6f\x77\x6e\x6c\ \x6f\x61\x64\x0a\x64\x6f\x77\x6e\x6c\x6f\x61\x64\x65\x64\x0a\x64\ \x6f\x77\x6e\x6c\x6f\x61\x64\x69\x6e\x67\x0a\x64\x72\x61\x77\x0a\ \x64\x72\x61\x77\x69\x6e\x67\x0a\x64\x72\x61\x77\x6e\x0a\x64\x72\ \x6f\x70\x0a\x44\x75\x66\x66\x0a\x64\x75\x72\x69\x6e\x67\x0a\x44\ \x56\x44\x0a\x64\x79\x6e\x61\x6d\x69\x63\x0a\x64\x79\x6e\x61\x6d\ \x69\x63\x61\x6c\x6c\x79\x0a\x64\x79\x6e\x61\x6d\x69\x63\x73\x0a\ \x65\x61\x63\x68\x0a\x65\x61\x72\x6c\x69\x65\x72\x0a\x65\x61\x73\ \x69\x6c\x79\x0a\x65\x64\x69\x74\x69\x6e\x67\x0a\x65\x64\x69\x74\ \x6f\x72\x73\x0a\x65\x64\x75\x63\x61\x74\x69\x6f\x6e\x0a\x65\x66\ \x66\x65\x63\x74\x0a\x65\x66\x66\x65\x63\x74\x69\x76\x65\x6c\x79\ \x0a\x65\x66\x66\x65\x63\x74\x73\x0a\x65\x69\x74\x68\x65\x72\x0a\ \x65\x6c\x6c\x69\x70\x73\x65\x0a\x65\x6c\x6c\x69\x70\x73\x65\x73\ \x0a\x65\x6c\x6c\x69\x70\x74\x69\x63\x61\x6c\x0a\x65\x6c\x73\x65\ \x0a\x65\x6d\x61\x69\x6c\x0a\x65\x6d\x62\x65\x64\x64\x65\x64\x0a\ \x65\x6d\x69\x74\x0a\x65\x6d\x69\x74\x73\x0a\x65\x6d\x70\x74\x79\ \x0a\x65\x6e\x61\x62\x6c\x65\x0a\x65\x6e\x61\x62\x6c\x65\x73\x0a\ \x65\x6e\x63\x61\x70\x73\x75\x6c\x61\x74\x65\x73\x0a\x65\x6e\x63\ \x6c\x6f\x73\x65\x0a\x65\x6e\x64\x0a\x65\x6e\x64\x6e\x6f\x74\x65\ \x0a\x65\x6e\x64\x6e\x6f\x74\x65\x73\x0a\x65\x6e\x67\x69\x6e\x65\ \x65\x72\x0a\x65\x6e\x67\x69\x6e\x65\x65\x72\x69\x6e\x67\x0a\x45\ \x6e\x67\x6c\x69\x73\x68\x0a\x65\x6e\x6a\x6f\x79\x73\x0a\x65\x6e\ \x6f\x75\x67\x68\x0a\x65\x6e\x73\x75\x72\x65\x0a\x65\x6e\x73\x75\ \x72\x65\x73\x0a\x65\x6e\x74\x61\x69\x6c\x73\x0a\x65\x6e\x74\x65\ \x72\x0a\x65\x6e\x74\x69\x72\x65\x0a\x65\x6e\x74\x69\x74\x6c\x65\ \x64\x0a\x65\x6e\x74\x72\x69\x65\x73\x0a\x65\x6e\x74\x72\x79\x0a\ \x65\x6e\x76\x69\x72\x6f\x6e\x6d\x65\x6e\x74\x0a\x65\x72\x61\x73\ \x65\x73\x0a\x65\x72\x72\x6f\x72\x0a\x65\x72\x72\x6f\x72\x73\x0a\ \x65\x73\x70\x65\x63\x69\x61\x6c\x6c\x79\x0a\x65\x73\x74\x61\x62\ \x6c\x69\x73\x68\x65\x64\x0a\x65\x74\x63\x2e\x0a\x45\x75\x72\x6f\ \x70\x65\x0a\x65\x76\x65\x6e\x0a\x65\x76\x65\x6e\x6c\x79\x0a\x65\ \x76\x65\x6e\x74\x0a\x65\x76\x65\x6e\x74\x73\x0a\x65\x76\x65\x6e\ \x74\x75\x61\x6c\x6c\x79\x0a\x65\x76\x65\x72\x79\x0a\x65\x76\x65\ \x72\x79\x6f\x6e\x65\x0a\x65\x78\x61\x6d\x70\x6c\x65\x0a\x65\x78\ \x61\x6d\x70\x6c\x65\x73\x0a\x65\x78\x63\x65\x70\x74\x0a\x65\x78\ \x63\x65\x70\x74\x69\x6f\x6e\x0a\x65\x78\x63\x65\x73\x73\x69\x76\ \x65\x0a\x65\x78\x63\x6c\x75\x73\x69\x76\x65\x0a\x65\x78\x69\x73\ \x74\x69\x6e\x67\x0a\x65\x78\x69\x73\x74\x73\x0a\x65\x78\x70\x61\ \x6e\x64\x0a\x65\x78\x70\x65\x63\x74\x65\x64\x0a\x65\x78\x70\x65\ \x6e\x73\x65\x0a\x65\x78\x70\x6f\x72\x74\x0a\x65\x78\x70\x6f\x73\ \x65\x73\x0a\x65\x78\x74\x65\x6e\x64\x0a\x65\x78\x74\x65\x6e\x64\ \x65\x64\x0a\x65\x78\x74\x65\x6e\x64\x69\x6e\x67\x0a\x65\x78\x74\ \x65\x6e\x73\x69\x62\x6c\x65\x0a\x65\x78\x74\x65\x6e\x73\x69\x6f\ \x6e\x0a\x65\x78\x74\x65\x72\x6e\x61\x6c\x0a\x65\x78\x74\x72\x61\ \x0a\x65\x78\x74\x72\x61\x63\x74\x0a\x66\x61\x63\x65\x73\x0a\x66\ \x61\x63\x69\x6c\x69\x74\x69\x65\x73\x0a\x66\x61\x63\x74\x6f\x72\ \x79\x0a\x66\x61\x64\x65\x0a\x66\x61\x69\x6c\x75\x72\x65\x0a\x66\ \x61\x69\x72\x6e\x65\x73\x73\x0a\x66\x61\x6c\x6c\x73\x0a\x66\x61\ \x6c\x73\x65\x0a\x66\x61\x6d\x69\x6c\x79\x0a\x66\x61\x73\x68\x69\ \x6f\x6e\x0a\x66\x61\x73\x74\x0a\x66\x61\x73\x74\x65\x72\x0a\x66\ \x65\x61\x74\x75\x72\x65\x73\x0a\x46\x65\x62\x72\x75\x61\x72\x79\ \x0a\x66\x65\x65\x64\x62\x61\x63\x6b\x0a\x66\x65\x65\x6c\x0a\x66\ \x65\x74\x63\x68\x0a\x66\x65\x74\x63\x68\x69\x6e\x67\x0a\x66\x65\ \x77\x0a\x66\x69\x65\x6c\x64\x73\x0a\x66\x69\x67\x75\x72\x65\x0a\ \x66\x69\x67\x75\x72\x65\x73\x0a\x66\x69\x6c\x65\x0a\x66\x69\x6c\ \x65\x20\x6e\x61\x6d\x65\x0a\x66\x69\x6c\x65\x73\x0a\x66\x69\x6c\ \x6c\x65\x64\x0a\x66\x69\x6c\x6c\x65\x72\x0a\x66\x69\x6e\x61\x6c\ \x0a\x66\x69\x6e\x61\x6c\x6c\x79\x0a\x66\x69\x6e\x64\x0a\x66\x69\ \x6e\x65\x0a\x66\x69\x6e\x69\x73\x68\x0a\x66\x69\x6e\x69\x73\x68\ \x65\x64\x0a\x66\x69\x72\x73\x74\x0a\x66\x6c\x6f\x77\x0a\x66\x6c\ \x79\x0a\x66\x6f\x63\x75\x73\x0a\x66\x6f\x6c\x6c\x6f\x77\x65\x64\ \x0a\x66\x6f\x6c\x6c\x6f\x77\x69\x6e\x67\x0a\x66\x6f\x6e\x74\x0a\ \x66\x6f\x6f\x74\x0a\x66\x6f\x6f\x74\x6e\x6f\x74\x65\x0a\x66\x6f\ \x6f\x74\x6e\x6f\x74\x65\x73\x0a\x66\x6f\x72\x0a\x66\x6f\x72\x6d\ \x0a\x66\x6f\x72\x6d\x61\x74\x0a\x66\x6f\x72\x6d\x61\x74\x73\x0a\ \x66\x6f\x72\x6d\x73\x0a\x66\x6f\x72\x6d\x75\x6c\x61\x0a\x66\x6f\ \x72\x6d\x75\x6c\x61\x73\x0a\x66\x6f\x72\x75\x6d\x0a\x66\x6f\x75\ \x6e\x64\x0a\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x46\x72\x61\ \x6e\x63\x65\x0a\x66\x72\x6f\x6d\x0a\x66\x72\x6f\x6e\x74\x0a\x66\ \x75\x6c\x6c\x0a\x66\x75\x6c\x6c\x79\x0a\x66\x75\x6e\x63\x74\x69\ \x6f\x6e\x0a\x66\x75\x6e\x63\x74\x69\x6f\x6e\x61\x6c\x69\x74\x79\ \x0a\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x0a\x66\x75\x74\x75\x72\ \x65\x0a\x67\x61\x69\x6e\x0a\x67\x61\x6d\x65\x73\x0a\x67\x61\x70\ \x0a\x67\x65\x6e\x65\x72\x61\x6c\x0a\x67\x65\x6e\x65\x72\x69\x63\ \x0a\x47\x65\x72\x6d\x61\x6e\x79\x0a\x67\x65\x74\x0a\x67\x69\x6c\ \x6c\x0a\x67\x69\x76\x65\x0a\x67\x69\x76\x65\x6e\x0a\x67\x69\x76\ \x65\x73\x0a\x67\x69\x76\x69\x6e\x67\x0a\x67\x6c\x6f\x62\x61\x6c\ \x0a\x67\x6f\x0a\x67\x6f\x65\x73\x0a\x67\x6f\x74\x0a\x67\x72\x61\ \x64\x69\x65\x6e\x74\x0a\x67\x72\x61\x70\x68\x0a\x67\x72\x61\x70\ \x68\x69\x63\x61\x6c\x0a\x67\x72\x61\x70\x68\x69\x63\x73\x0a\x67\ \x72\x61\x79\x0a\x67\x72\x65\x61\x74\x0a\x67\x72\x65\x61\x74\x6c\ \x79\x0a\x67\x72\x65\x65\x6e\x0a\x67\x72\x65\x79\x0a\x67\x72\x6f\ \x75\x70\x0a\x67\x72\x6f\x77\x69\x6e\x67\x0a\x67\x75\x69\x0a\x47\ \x55\x49\x0a\x68\x61\x63\x6b\x0a\x68\x61\x64\x0a\x68\x61\x6c\x66\ \x0a\x48\x61\x6d\x62\x75\x72\x67\x0a\x68\x61\x6e\x64\x0a\x68\x61\ \x6e\x64\x69\x6e\x67\x0a\x68\x61\x6e\x64\x6c\x65\x0a\x68\x61\x6e\ \x64\x6c\x65\x72\x0a\x68\x61\x6e\x64\x6c\x65\x72\x73\x0a\x68\x61\ \x6e\x64\x6c\x65\x73\x0a\x68\x61\x6e\x64\x6c\x69\x6e\x67\x0a\x68\ \x61\x70\x70\x65\x6e\x73\x0a\x68\x61\x72\x64\x77\x61\x72\x65\x0a\ \x68\x61\x72\x6d\x6f\x6e\x69\x63\x61\x0a\x68\x61\x73\x0a\x68\x61\ \x76\x65\x0a\x68\x61\x76\x69\x6e\x67\x0a\x68\x65\x0a\x68\x65\x61\ \x64\x0a\x68\x65\x61\x64\x65\x72\x0a\x68\x65\x61\x64\x65\x72\x73\ \x0a\x68\x65\x61\x72\x0a\x68\x65\x69\x67\x68\x74\x0a\x68\x65\x6c\ \x70\x0a\x68\x65\x6c\x70\x65\x72\x0a\x68\x65\x72\x65\x0a\x68\x69\ \x67\x68\x0a\x68\x69\x67\x68\x6c\x69\x67\x68\x74\x0a\x68\x69\x67\ \x68\x6c\x79\x0a\x68\x69\x6e\x74\x73\x0a\x68\x69\x73\x0a\x68\x6f\ \x6c\x64\x0a\x68\x6f\x6c\x64\x65\x72\x0a\x68\x6f\x6c\x64\x69\x6e\ \x67\x0a\x68\x6f\x6c\x65\x0a\x68\x6f\x6d\x65\x0a\x68\x6f\x72\x69\ \x7a\x6f\x6e\x74\x61\x6c\x0a\x68\x6f\x73\x74\x0a\x68\x6f\x73\x74\ \x69\x6e\x67\x0a\x68\x6f\x75\x72\x73\x0a\x48\x6f\x75\x73\x74\x6f\ \x6e\x0a\x68\x6f\x77\x0a\x68\x6f\x77\x65\x76\x65\x72\x0a\x68\x75\ \x67\x65\x0a\x68\x79\x70\x68\x65\x6e\x0a\x49\x44\x0a\x69\x64\x65\ \x61\x0a\x69\x64\x65\x61\x6c\x6c\x79\x0a\x69\x66\x0a\x49\x6c\x6c\ \x69\x6e\x6f\x69\x73\x0a\x69\x6c\x6c\x75\x73\x74\x72\x61\x74\x65\ \x0a\x69\x6c\x6c\x75\x73\x74\x72\x61\x74\x65\x64\x0a\x69\x6c\x6c\ \x75\x73\x74\x72\x61\x74\x65\x73\x0a\x69\x6d\x61\x67\x65\x0a\x69\ \x6d\x61\x67\x65\x73\x0a\x69\x6d\x70\x61\x63\x74\x0a\x69\x6d\x70\ \x6c\x65\x6d\x65\x6e\x74\x0a\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\ \x61\x74\x69\x6f\x6e\x0a\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x61\ \x74\x69\x6f\x6e\x73\x0a\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\ \x64\x0a\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x69\x6e\x67\x0a\x69\ \x6d\x70\x6c\x65\x6d\x65\x6e\x74\x73\x0a\x69\x6d\x70\x6f\x72\x74\ \x0a\x69\x6d\x70\x6f\x72\x74\x61\x6e\x74\x0a\x69\x6d\x70\x72\x6f\ \x76\x65\x6d\x65\x6e\x74\x73\x0a\x69\x6e\x0a\x69\x6e\x63\x6c\x75\ \x64\x65\x0a\x69\x6e\x63\x6c\x75\x64\x65\x64\x0a\x69\x6e\x63\x6c\ \x75\x64\x65\x73\x0a\x69\x6e\x63\x6c\x75\x64\x69\x6e\x67\x0a\x69\ \x6e\x63\x6c\x75\x73\x69\x6f\x6e\x0a\x69\x6e\x63\x6f\x6d\x69\x6e\ \x67\x0a\x69\x6e\x63\x6f\x6e\x76\x65\x6e\x69\x65\x6e\x74\x0a\x69\ \x6e\x64\x65\x6e\x74\x0a\x69\x6e\x64\x65\x78\x0a\x69\x6e\x64\x69\ \x63\x61\x74\x65\x0a\x69\x6e\x65\x78\x70\x65\x6e\x73\x69\x76\x65\ \x6c\x79\x0a\x69\x6e\x66\x6c\x75\x65\x6e\x63\x65\x0a\x69\x6e\x66\ \x6f\x0a\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x0a\x69\x6e\ \x67\x65\x6e\x69\x6f\x75\x73\x0a\x69\x6e\x68\x65\x72\x69\x74\x73\ \x0a\x69\x6e\x69\x74\x69\x61\x6c\x0a\x69\x6e\x69\x74\x69\x61\x6c\ \x6c\x79\x0a\x69\x6e\x6e\x65\x72\x0a\x69\x6e\x70\x75\x74\x0a\x69\ \x6e\x73\x70\x69\x72\x65\x64\x0a\x69\x6e\x73\x74\x61\x6c\x6c\x0a\ \x69\x6e\x73\x74\x61\x6c\x6c\x73\x0a\x69\x6e\x73\x74\x61\x6e\x63\ \x65\x0a\x69\x6e\x73\x74\x65\x61\x64\x0a\x69\x6e\x73\x74\x72\x75\ \x63\x74\x73\x0a\x69\x6e\x74\x65\x67\x65\x72\x0a\x69\x6e\x74\x65\ \x67\x65\x72\x73\x0a\x69\x6e\x74\x65\x67\x72\x61\x74\x69\x6f\x6e\ \x0a\x69\x6e\x74\x65\x6e\x64\x65\x64\x0a\x69\x6e\x74\x65\x6e\x73\ \x69\x76\x65\x0a\x69\x6e\x74\x65\x72\x65\x73\x74\x0a\x69\x6e\x74\ \x65\x72\x65\x73\x74\x73\x0a\x69\x6e\x74\x65\x72\x66\x61\x63\x65\ \x0a\x69\x6e\x74\x65\x72\x66\x61\x63\x65\x73\x0a\x69\x6e\x74\x65\ \x72\x66\x65\x72\x65\x0a\x69\x6e\x74\x65\x72\x6e\x61\x6c\x0a\x69\ \x6e\x74\x65\x72\x76\x61\x6c\x0a\x69\x6e\x74\x6f\x0a\x69\x6e\x74\ \x72\x69\x67\x75\x69\x6e\x67\x0a\x69\x6e\x74\x72\x6f\x0a\x69\x6e\ \x74\x72\x6f\x64\x75\x63\x65\x0a\x69\x6e\x74\x72\x6f\x64\x75\x63\ \x65\x64\x0a\x69\x6e\x76\x61\x6c\x69\x64\x0a\x69\x6e\x76\x65\x6e\ \x74\x65\x64\x0a\x69\x6e\x76\x65\x72\x73\x65\x0a\x69\x6e\x76\x6f\ \x63\x61\x74\x69\x6f\x6e\x0a\x69\x6e\x76\x6f\x6c\x76\x65\x64\x0a\ \x49\x72\x69\x73\x68\x0a\x69\x72\x72\x65\x67\x75\x6c\x61\x72\x0a\ \x69\x73\x0a\x49\x53\x4f\x0a\x49\x53\x50\x73\x0a\x69\x73\x73\x75\ \x65\x0a\x69\x73\x73\x75\x65\x73\x0a\x69\x74\x0a\x69\x74\x65\x6d\ \x73\x0a\x69\x74\x65\x72\x61\x74\x65\x0a\x69\x74\x73\x0a\x69\x74\ \x73\x65\x6c\x66\x0a\x6a\x6f\x62\x0a\x6a\x6f\x69\x6e\x0a\x4a\x50\ \x45\x47\x0a\x6a\x75\x6e\x67\x6c\x65\x0a\x6a\x75\x73\x74\x0a\x4b\ \x61\x72\x61\x6f\x6b\x65\x0a\x6b\x65\x65\x70\x0a\x6b\x65\x65\x70\ \x69\x6e\x67\x0a\x6b\x65\x79\x0a\x6b\x69\x6e\x64\x0a\x6b\x69\x6e\ \x67\x0a\x6b\x6e\x6f\x77\x6e\x0a\x6c\x61\x62\x65\x6c\x0a\x6c\x61\ \x62\x65\x6c\x73\x0a\x6c\x61\x6e\x64\x73\x63\x61\x70\x65\x0a\x6c\ \x61\x6e\x67\x75\x61\x67\x65\x0a\x6c\x61\x72\x67\x65\x0a\x6c\x61\ \x73\x74\x0a\x6c\x61\x74\x65\x72\x0a\x6c\x61\x74\x65\x73\x74\x0a\ \x6c\x61\x77\x6e\x0a\x6c\x61\x79\x6f\x75\x74\x0a\x6c\x65\x61\x64\ \x0a\x6c\x65\x61\x64\x65\x72\x0a\x6c\x65\x61\x64\x65\x72\x73\x0a\ \x6c\x65\x61\x6e\x0a\x6c\x65\x61\x76\x65\x73\x0a\x6c\x65\x61\x76\ \x69\x6e\x67\x0a\x6c\x65\x66\x74\x0a\x6c\x65\x6d\x6d\x61\x0a\x6c\ \x65\x6e\x67\x74\x68\x0a\x6c\x65\x73\x73\x0a\x6c\x65\x74\x0a\x6c\ \x65\x76\x65\x6c\x0a\x6c\x65\x76\x65\x6c\x73\x0a\x6c\x69\x62\x72\ \x61\x72\x69\x65\x73\x0a\x6c\x69\x62\x72\x61\x72\x79\x0a\x6c\x69\ \x65\x73\x0a\x6c\x69\x6b\x65\x0a\x6c\x69\x6b\x65\x6c\x79\x0a\x6c\ \x69\x6d\x69\x74\x0a\x6c\x69\x6d\x69\x74\x69\x6e\x67\x0a\x6c\x69\ \x6d\x69\x74\x73\x0a\x6c\x69\x6e\x65\x0a\x6c\x69\x6e\x65\x61\x72\ \x0a\x6c\x69\x6e\x65\x73\x0a\x6c\x69\x6e\x65\x77\x69\x64\x74\x68\ \x0a\x6c\x69\x6e\x6b\x0a\x6c\x69\x6e\x6b\x65\x64\x0a\x6c\x69\x6e\ \x6b\x69\x6e\x67\x0a\x4c\x69\x6e\x75\x78\x0a\x6c\x69\x73\x74\x0a\ \x6c\x69\x73\x74\x73\x0a\x6c\x69\x74\x74\x6c\x65\x0a\x6c\x69\x76\ \x65\x73\x0a\x6c\x6f\x61\x64\x0a\x6c\x6f\x61\x64\x69\x6e\x67\x0a\ \x6c\x6f\x61\x64\x73\x0a\x6c\x6f\x63\x61\x74\x65\x64\x0a\x6c\x6f\ \x63\x61\x74\x69\x6f\x6e\x0a\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x73\ \x0a\x6c\x6f\x67\x6f\x0a\x6c\x6f\x6e\x67\x0a\x6c\x6f\x6e\x67\x65\ \x72\x0a\x6c\x6f\x6f\x6b\x0a\x6c\x6f\x6f\x6b\x65\x64\x0a\x6c\x6f\ \x6f\x6b\x69\x6e\x67\x0a\x6c\x6f\x6f\x6b\x73\x0a\x6c\x6f\x6f\x6b\ \x75\x70\x0a\x6c\x6f\x6f\x6b\x75\x70\x73\x0a\x6c\x6f\x6f\x70\x0a\ \x6c\x6f\x75\x74\x0a\x6c\x6f\x77\x0a\x6d\x61\x63\x72\x6f\x0a\x6d\ \x61\x64\x65\x0a\x6d\x61\x67\x61\x7a\x69\x6e\x65\x0a\x6d\x61\x67\ \x69\x63\x0a\x6d\x61\x69\x6e\x0a\x6d\x61\x6a\x6f\x72\x0a\x6d\x61\ \x6b\x65\x0a\x6d\x61\x6b\x65\x73\x0a\x6d\x61\x6b\x69\x6e\x67\x0a\ \x6d\x61\x6e\x61\x67\x65\x0a\x6d\x61\x6e\x61\x67\x65\x64\x0a\x6d\ \x61\x6e\x61\x67\x69\x6e\x67\x0a\x6d\x61\x6e\x64\x61\x74\x6f\x72\ \x79\x0a\x6d\x61\x6e\x69\x70\x75\x6c\x61\x74\x65\x0a\x6d\x61\x6e\ \x69\x70\x75\x6c\x61\x74\x69\x6f\x6e\x0a\x6d\x61\x6e\x6e\x65\x72\ \x0a\x6d\x61\x6e\x79\x0a\x6d\x61\x70\x0a\x6d\x61\x70\x73\x0a\x4d\ \x61\x72\x63\x68\x0a\x6d\x61\x72\x67\x69\x6e\x0a\x6d\x61\x73\x6b\ \x0a\x6d\x61\x73\x6b\x69\x6e\x67\x0a\x4d\x61\x73\x73\x61\x63\x68\ \x75\x73\x65\x74\x74\x73\x0a\x6d\x61\x74\x63\x68\x0a\x6d\x61\x74\ \x68\x65\x6d\x61\x74\x69\x63\x61\x6c\x0a\x6d\x61\x78\x69\x6d\x75\ \x6d\x0a\x6d\x61\x79\x0a\x6d\x65\x61\x6e\x73\x0a\x6d\x65\x65\x74\ \x0a\x6d\x65\x6d\x62\x65\x72\x0a\x6d\x65\x6d\x62\x65\x72\x73\x0a\ \x6d\x65\x6d\x6f\x72\x79\x0a\x6d\x65\x72\x67\x65\x64\x0a\x6d\x65\ \x74\x68\x6f\x64\x0a\x6d\x69\x67\x68\x74\x0a\x6d\x69\x6c\x6c\x69\ \x73\x65\x63\x6f\x6e\x64\x73\x0a\x6d\x69\x6e\x69\x6d\x69\x7a\x65\ \x0a\x6d\x69\x6e\x69\x6d\x75\x6d\x0a\x6d\x69\x6e\x6f\x72\x0a\x6d\ \x69\x78\x0a\x4d\x4e\x47\x0a\x6d\x6f\x64\x65\x0a\x6d\x6f\x64\x65\ \x6c\x0a\x6d\x6f\x64\x65\x6c\x73\x0a\x6d\x6f\x64\x65\x73\x0a\x6d\ \x6f\x64\x69\x66\x69\x65\x64\x0a\x6d\x6f\x64\x75\x6c\x65\x0a\x6d\ \x6f\x6d\x65\x6e\x74\x73\x0a\x6d\x6f\x6e\x69\x74\x6f\x72\x65\x64\ \x0a\x6d\x6f\x6e\x74\x68\x6c\x79\x0a\x6d\x6f\x72\x65\x0a\x6d\x6f\ \x73\x74\x0a\x6d\x6f\x73\x74\x6c\x79\x0a\x6d\x6f\x76\x65\x0a\x6d\ \x75\x63\x68\x0a\x6d\x75\x6c\x74\x69\x74\x75\x64\x65\x0a\x4d\x75\ \x6e\x69\x63\x68\x0a\x6d\x75\x73\x74\x0a\x6e\x61\x6d\x65\x0a\x6e\ \x61\x6d\x65\x64\x0a\x6e\x61\x6d\x65\x73\x0a\x6e\x65\x63\x65\x73\ \x73\x61\x72\x79\x0a\x6e\x65\x65\x64\x0a\x6e\x65\x65\x64\x65\x64\ \x0a\x6e\x65\x65\x64\x73\x0a\x6e\x65\x74\x77\x6f\x72\x6b\x0a\x6e\ \x65\x77\x0a\x6e\x65\x77\x73\x0a\x6e\x65\x77\x73\x6c\x65\x74\x74\ \x65\x72\x0a\x6e\x65\x78\x74\x0a\x6e\x69\x63\x65\x6c\x79\x0a\x6e\ \x6f\x0a\x6e\x6f\x6e\x65\x0a\x6e\x6f\x72\x6d\x61\x6c\x6c\x79\x0a\ \x4e\x6f\x72\x77\x61\x79\x0a\x6e\x6f\x74\x0a\x6e\x6f\x74\x65\x0a\ \x6e\x6f\x74\x65\x73\x0a\x6e\x6f\x74\x68\x69\x6e\x67\x0a\x6e\x6f\ \x74\x69\x66\x69\x65\x73\x0a\x6e\x6f\x74\x69\x66\x79\x0a\x6e\x6f\ \x77\x0a\x6e\x75\x6c\x6c\x0a\x6e\x75\x6d\x62\x65\x72\x0a\x6e\x75\ \x6d\x62\x65\x72\x65\x64\x0a\x6e\x75\x6d\x62\x65\x72\x69\x6e\x67\ \x0a\x6e\x75\x6d\x62\x65\x72\x73\x0a\x4e\x79\x64\x61\x6c\x65\x6e\ \x0a\x6f\x62\x6a\x65\x63\x74\x0a\x6f\x62\x6a\x65\x63\x74\x73\x0a\ \x6f\x62\x74\x61\x69\x6e\x0a\x6f\x62\x74\x61\x69\x6e\x69\x6e\x67\ \x0a\x6f\x64\x64\x0a\x6f\x66\x0a\x6f\x66\x66\x0a\x6f\x66\x66\x69\ \x63\x65\x0a\x6f\x66\x66\x73\x65\x74\x0a\x6f\x66\x66\x73\x65\x74\ \x73\x0a\x6f\x66\x74\x65\x6e\x0a\x6f\x6c\x64\x0a\x6f\x6e\x0a\x6f\ \x6e\x63\x65\x0a\x6f\x6e\x65\x0a\x6f\x6e\x65\x73\x0a\x6f\x6e\x6c\ \x69\x6e\x65\x0a\x6f\x6e\x6c\x79\x0a\x6f\x6e\x74\x6f\x0a\x6f\x70\ \x61\x63\x69\x74\x79\x0a\x6f\x70\x61\x71\x75\x65\x0a\x6f\x70\x65\ \x6e\x0a\x6f\x70\x65\x6e\x73\x0a\x6f\x70\x65\x72\x61\x74\x65\x73\ \x0a\x6f\x70\x65\x72\x61\x74\x69\x6e\x67\x0a\x6f\x70\x65\x72\x61\ \x74\x69\x6f\x6e\x0a\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\x73\x0a\ \x6f\x70\x65\x72\x61\x74\x6f\x72\x0a\x6f\x70\x70\x6f\x72\x74\x75\ \x6e\x69\x74\x79\x0a\x6f\x70\x70\x6f\x73\x65\x64\x0a\x6f\x70\x74\ \x69\x6d\x69\x7a\x65\x0a\x6f\x70\x74\x69\x6f\x6e\x0a\x6f\x70\x74\ \x69\x6f\x6e\x61\x6c\x6c\x79\x0a\x6f\x70\x74\x69\x6f\x6e\x73\x0a\ \x6f\x72\x0a\x4f\x52\x0a\x6f\x72\x64\x65\x72\x0a\x6f\x72\x64\x69\ \x6e\x61\x72\x79\x0a\x6f\x72\x69\x67\x69\x6e\x61\x6c\x0a\x6f\x72\ \x69\x67\x69\x6e\x61\x6c\x6c\x79\x0a\x4f\x73\x6c\x6f\x0a\x6f\x74\ \x68\x65\x72\x0a\x6f\x74\x68\x65\x72\x77\x69\x73\x65\x0a\x6f\x75\ \x72\x0a\x6f\x75\x74\x0a\x6f\x75\x74\x65\x72\x0a\x6f\x75\x74\x67\ \x6f\x69\x6e\x67\x0a\x6f\x75\x74\x70\x75\x74\x0a\x6f\x75\x74\x73\ \x69\x64\x65\x0a\x6f\x76\x65\x72\x0a\x6f\x76\x65\x72\x63\x6f\x6d\ \x69\x6e\x67\x0a\x6f\x76\x65\x72\x72\x69\x64\x65\x73\x0a\x6f\x76\ \x65\x72\x76\x69\x65\x77\x0a\x6f\x77\x6e\x0a\x6f\x77\x6e\x65\x72\ \x0a\x6f\x77\x6e\x65\x72\x73\x0a\x70\x61\x63\x65\x0a\x50\x61\x63\ \x69\x66\x69\x63\x0a\x70\x61\x63\x6b\x61\x67\x65\x0a\x70\x61\x63\ \x6b\x61\x67\x65\x73\x0a\x70\x61\x63\x6b\x65\x74\x73\x0a\x70\x61\ \x67\x65\x0a\x70\x61\x67\x65\x73\x0a\x70\x61\x69\x6e\x74\x0a\x70\ \x61\x69\x6e\x74\x65\x64\x0a\x70\x61\x69\x6e\x74\x69\x6e\x67\x0a\ \x70\x61\x72\x61\x67\x72\x61\x70\x68\x0a\x70\x61\x72\x61\x67\x72\ \x61\x70\x68\x73\x0a\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x73\x0a\ \x70\x61\x72\x65\x6e\x74\x0a\x50\x61\x72\x69\x73\x0a\x70\x61\x72\ \x73\x65\x0a\x70\x61\x72\x74\x0a\x70\x61\x72\x74\x69\x61\x6c\x0a\ \x70\x61\x72\x74\x69\x61\x6c\x6c\x79\x0a\x70\x61\x72\x74\x69\x63\ \x75\x6c\x61\x72\x0a\x70\x61\x72\x74\x6e\x65\x72\x73\x0a\x70\x61\ \x72\x74\x73\x0a\x70\x61\x72\x74\x79\x0a\x70\x61\x73\x73\x65\x64\ \x0a\x70\x61\x73\x73\x69\x6e\x67\x0a\x70\x61\x74\x63\x68\x65\x73\ \x0a\x70\x61\x74\x68\x0a\x70\x61\x74\x74\x65\x72\x6e\x0a\x70\x61\ \x74\x74\x65\x72\x6e\x73\x0a\x70\x61\x75\x73\x65\x0a\x50\x44\x46\ \x0a\x70\x65\x65\x6b\x0a\x70\x65\x6e\x64\x69\x6e\x67\x0a\x70\x65\ \x72\x66\x6f\x72\x6d\x0a\x70\x65\x72\x66\x6f\x72\x6d\x65\x64\x0a\ \x70\x65\x72\x66\x6f\x72\x6d\x73\x0a\x70\x65\x72\x6d\x69\x73\x73\ \x69\x6f\x6e\x0a\x70\x65\x72\x6d\x75\x74\x61\x74\x69\x6f\x6e\x73\ \x0a\x70\x65\x72\x73\x6f\x6e\x61\x6c\x0a\x70\x69\x63\x6b\x0a\x70\ \x69\x65\x0a\x70\x69\x70\x65\x0a\x70\x69\x78\x65\x6c\x0a\x70\x69\ \x78\x65\x6c\x73\x0a\x70\x6c\x61\x63\x65\x0a\x70\x6c\x61\x63\x65\ \x73\x0a\x70\x6c\x61\x6e\x6e\x69\x6e\x67\x0a\x70\x6c\x61\x74\x66\ \x6f\x72\x6d\x73\x0a\x70\x6c\x61\x79\x0a\x70\x6c\x61\x79\x65\x72\ \x73\x0a\x70\x6c\x61\x79\x69\x6e\x67\x0a\x70\x6c\x65\x61\x73\x65\ \x0a\x70\x6c\x65\x61\x73\x69\x6e\x67\x0a\x70\x6c\x75\x67\x69\x6e\ \x0a\x70\x6c\x75\x67\x69\x6e\x73\x0a\x70\x6c\x75\x73\x0a\x50\x4e\ \x47\x0a\x70\x6f\x69\x6e\x74\x65\x72\x0a\x70\x6f\x70\x0a\x70\x6f\ \x70\x75\x6c\x61\x72\x0a\x70\x6f\x70\x75\x6c\x61\x74\x65\x73\x0a\ \x70\x6f\x72\x74\x65\x72\x0a\x50\x6f\x72\x74\x65\x72\x0a\x70\x6f\ \x72\x74\x72\x61\x69\x74\x0a\x70\x6f\x73\x73\x69\x62\x69\x6c\x69\ \x74\x79\x0a\x70\x6f\x73\x73\x69\x62\x6c\x65\x0a\x70\x6f\x74\x65\ \x6e\x74\x69\x61\x6c\x0a\x70\x6f\x74\x65\x6e\x74\x69\x61\x6c\x6c\ \x79\x0a\x70\x6f\x77\x65\x72\x0a\x70\x6f\x77\x65\x72\x73\x0a\x70\ \x72\x65\x63\x65\x64\x65\x64\x0a\x70\x72\x65\x73\x65\x6e\x63\x65\ \x0a\x70\x72\x65\x73\x65\x6e\x74\x0a\x70\x72\x65\x76\x65\x6e\x74\ \x0a\x70\x72\x65\x76\x65\x6e\x74\x73\x0a\x70\x72\x65\x76\x69\x6f\ \x75\x73\x0a\x70\x72\x65\x76\x69\x6f\x75\x73\x6c\x79\x0a\x70\x72\ \x69\x6d\x61\x72\x69\x6c\x79\x0a\x70\x72\x69\x6d\x61\x72\x79\x0a\ \x70\x72\x69\x6d\x69\x74\x69\x76\x65\x73\x0a\x70\x72\x69\x6e\x74\ \x65\x64\x0a\x70\x72\x69\x6e\x74\x69\x6e\x67\x0a\x70\x72\x69\x6f\ \x72\x0a\x70\x72\x6f\x62\x61\x62\x6c\x79\x0a\x70\x72\x6f\x62\x6c\ \x65\x6d\x0a\x70\x72\x6f\x63\x65\x73\x73\x0a\x70\x72\x6f\x63\x65\ \x73\x73\x65\x73\x0a\x70\x72\x6f\x63\x65\x73\x73\x69\x6e\x67\x0a\ \x70\x72\x6f\x64\x75\x63\x65\x0a\x70\x72\x6f\x64\x75\x63\x65\x64\ \x0a\x70\x72\x6f\x64\x75\x63\x65\x73\x0a\x70\x72\x6f\x64\x75\x63\ \x74\x73\x0a\x70\x72\x6f\x67\x72\x61\x6d\x6d\x69\x6e\x67\x0a\x70\ \x72\x6f\x67\x72\x61\x6d\x73\x0a\x70\x72\x6f\x6a\x65\x63\x74\x0a\ \x70\x72\x6f\x6a\x65\x63\x74\x73\x0a\x70\x72\x6f\x6f\x66\x0a\x70\ \x72\x6f\x70\x65\x72\x0a\x70\x72\x6f\x70\x65\x72\x6c\x79\x0a\x70\ \x72\x6f\x70\x65\x72\x74\x69\x65\x73\x0a\x70\x72\x6f\x70\x65\x72\ \x74\x79\x0a\x70\x72\x6f\x70\x6f\x73\x65\x64\x0a\x70\x72\x6f\x70\ \x6f\x73\x69\x74\x69\x6f\x6e\x0a\x70\x72\x6f\x73\x0a\x70\x72\x6f\ \x74\x6f\x63\x6f\x6c\x73\x0a\x70\x72\x6f\x75\x64\x0a\x70\x72\x6f\ \x76\x69\x64\x65\x0a\x70\x72\x6f\x76\x69\x64\x65\x64\x0a\x70\x72\ \x6f\x76\x69\x64\x65\x73\x0a\x70\x72\x6f\x76\x69\x73\x69\x6f\x6e\ \x0a\x70\x72\x6f\x78\x79\x0a\x70\x75\x62\x6c\x69\x63\x0a\x70\x75\ \x62\x6c\x69\x73\x68\x65\x64\x0a\x70\x75\x6e\x63\x68\x0a\x70\x75\ \x6e\x63\x68\x65\x73\x0a\x70\x75\x72\x73\x75\x69\x6e\x67\x0a\x70\ \x75\x74\x0a\x51\x74\x0a\x51\x74\x6f\x70\x69\x61\x0a\x71\x75\x61\ \x6c\x69\x74\x79\x0a\x71\x75\x61\x72\x74\x65\x72\x0a\x71\x75\x61\ \x72\x74\x65\x72\x6c\x79\x0a\x71\x75\x65\x72\x69\x65\x64\x0a\x71\ \x75\x65\x72\x69\x65\x73\x0a\x71\x75\x65\x72\x79\x0a\x71\x75\x65\ \x73\x74\x69\x6f\x6e\x0a\x71\x75\x65\x73\x74\x69\x6f\x6e\x73\x0a\ \x72\x61\x64\x69\x61\x6c\x0a\x72\x61\x67\x67\x65\x64\x0a\x72\x61\ \x6e\x67\x65\x0a\x72\x61\x74\x65\x0a\x72\x61\x74\x65\x73\x0a\x72\ \x61\x74\x68\x65\x72\x0a\x72\x61\x74\x69\x6f\x0a\x72\x61\x77\x0a\ \x72\x65\x61\x64\x0a\x72\x65\x61\x64\x65\x72\x0a\x72\x65\x61\x64\ \x69\x6e\x67\x0a\x72\x65\x61\x64\x73\x0a\x72\x65\x61\x64\x79\x0a\ \x72\x65\x61\x6c\x0a\x72\x65\x61\x6c\x69\x73\x74\x69\x63\x0a\x72\ \x65\x61\x6c\x6c\x79\x0a\x72\x65\x63\x65\x69\x76\x65\x64\x0a\x72\ \x65\x63\x65\x6e\x74\x0a\x72\x65\x63\x6f\x67\x6e\x69\x7a\x65\x64\ \x0a\x72\x65\x63\x6f\x6d\x6d\x65\x6e\x64\x65\x64\x0a\x72\x65\x63\ \x6f\x6d\x70\x69\x6c\x65\x0a\x72\x65\x63\x74\x61\x6e\x67\x6c\x65\ \x0a\x72\x65\x63\x74\x61\x6e\x67\x75\x6c\x61\x72\x0a\x72\x65\x64\ \x0a\x72\x65\x64\x69\x73\x74\x72\x69\x62\x75\x74\x65\x0a\x72\x65\ \x64\x75\x63\x69\x6e\x67\x0a\x72\x65\x66\x65\x72\x65\x6e\x63\x65\ \x0a\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x73\x0a\x72\x65\x66\x6c\ \x65\x63\x74\x0a\x72\x65\x67\x61\x72\x64\x6c\x65\x73\x73\x0a\x72\ \x65\x67\x69\x6f\x6e\x61\x6c\x0a\x72\x65\x67\x69\x73\x74\x65\x72\ \x0a\x72\x65\x67\x69\x73\x74\x65\x72\x65\x64\x0a\x72\x65\x67\x69\ \x73\x74\x72\x61\x74\x69\x6f\x6e\x0a\x72\x65\x69\x6d\x70\x6c\x65\ \x6d\x65\x6e\x74\x0a\x72\x65\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\ \x61\x74\x69\x6f\x6e\x0a\x72\x65\x69\x6d\x70\x6c\x65\x6d\x65\x6e\ \x74\x65\x64\x0a\x72\x65\x6c\x65\x61\x73\x65\x0a\x72\x65\x6c\x65\ \x61\x73\x65\x64\x0a\x72\x65\x6c\x65\x61\x73\x65\x73\x0a\x72\x65\ \x6c\x69\x61\x62\x6c\x65\x0a\x72\x65\x6c\x79\x0a\x72\x65\x6d\x61\ \x69\x6e\x73\x0a\x72\x65\x6d\x65\x6d\x62\x65\x72\x0a\x72\x65\x6d\ \x6f\x76\x65\x64\x0a\x72\x65\x6d\x6f\x76\x65\x73\x0a\x72\x65\x70\ \x65\x61\x74\x65\x64\x6c\x79\x0a\x72\x65\x70\x6c\x61\x63\x65\x0a\ \x72\x65\x70\x6f\x72\x74\x0a\x72\x65\x70\x72\x65\x73\x65\x6e\x74\ \x0a\x72\x65\x70\x72\x65\x73\x65\x6e\x74\x65\x64\x0a\x72\x65\x70\ \x72\x65\x73\x65\x6e\x74\x73\x0a\x72\x65\x70\x72\x6f\x64\x75\x63\ \x65\x64\x0a\x72\x65\x71\x75\x65\x73\x74\x65\x64\x0a\x72\x65\x71\ \x75\x69\x72\x65\x0a\x72\x65\x71\x75\x69\x72\x65\x64\x0a\x72\x65\ \x71\x75\x69\x72\x65\x73\x0a\x72\x65\x73\x65\x74\x74\x69\x6e\x67\ \x0a\x72\x65\x73\x69\x64\x65\x73\x0a\x72\x65\x73\x6f\x6c\x76\x65\ \x0a\x72\x65\x73\x70\x65\x63\x74\x69\x76\x65\x0a\x72\x65\x73\x70\ \x65\x63\x74\x69\x76\x65\x6c\x79\x0a\x72\x65\x73\x70\x6f\x6e\x73\ \x65\x0a\x72\x65\x73\x74\x0a\x72\x65\x73\x74\x61\x72\x74\x0a\x72\ \x65\x73\x75\x6c\x74\x0a\x72\x65\x73\x75\x6c\x74\x69\x6e\x67\x0a\ \x72\x65\x73\x75\x6d\x65\x0a\x72\x65\x74\x75\x72\x6e\x0a\x72\x65\ \x74\x75\x72\x6e\x69\x6e\x67\x0a\x72\x65\x74\x75\x72\x6e\x73\x0a\ \x72\x65\x75\x73\x65\x0a\x72\x65\x76\x65\x61\x6c\x69\x6e\x67\x0a\ \x72\x69\x63\x68\x0a\x72\x69\x63\x68\x65\x73\x0a\x72\x69\x67\x68\ \x74\x0a\x72\x6f\x61\x64\x73\x68\x6f\x77\x0a\x72\x6f\x6c\x65\x0a\ \x52\x6f\x6d\x61\x6e\x0a\x72\x6f\x75\x74\x65\x72\x0a\x72\x6f\x75\ \x74\x65\x72\x73\x0a\x72\x75\x6c\x65\x0a\x72\x75\x6e\x0a\x72\x75\ \x6e\x6e\x65\x72\x0a\x72\x75\x6e\x6e\x65\x72\x73\x0a\x72\x75\x6e\ \x6e\x69\x6e\x67\x0a\x72\x75\x6e\x73\x0a\x73\x61\x6b\x65\x0a\x73\ \x61\x6c\x65\x73\x0a\x73\x61\x6c\x65\x73\x70\x65\x6f\x70\x6c\x65\ \x0a\x73\x61\x6d\x65\x0a\x73\x61\x6d\x70\x6c\x65\x0a\x53\x61\x6e\ \x20\x4a\x6f\x73\x65\x0a\x73\x61\x76\x65\x0a\x73\x61\x76\x65\x64\ \x0a\x73\x61\x76\x65\x73\x0a\x73\x61\x79\x0a\x73\x63\x61\x6c\x61\ \x62\x6c\x65\x0a\x73\x63\x61\x6c\x65\x0a\x73\x63\x61\x6e\x6c\x69\ \x6e\x65\x0a\x73\x63\x65\x6e\x65\x0a\x73\x63\x65\x6e\x65\x73\x0a\ \x73\x63\x68\x65\x64\x75\x6c\x65\x0a\x73\x63\x68\x6f\x6f\x6c\x0a\ \x73\x63\x72\x69\x70\x74\x0a\x73\x65\x61\x6d\x0a\x73\x65\x61\x6d\ \x6c\x65\x73\x73\x0a\x73\x65\x61\x72\x63\x68\x0a\x73\x65\x61\x72\ \x63\x68\x65\x73\x0a\x73\x65\x61\x72\x63\x68\x69\x6e\x67\x0a\x73\ \x65\x63\x6f\x6e\x64\x0a\x73\x65\x63\x6f\x6e\x64\x73\x0a\x73\x65\ \x63\x74\x69\x6f\x6e\x0a\x73\x65\x63\x74\x69\x6f\x6e\x73\x0a\x73\ \x65\x63\x75\x72\x69\x74\x79\x0a\x73\x65\x65\x0a\x73\x65\x65\x6e\ \x0a\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x0a\x73\x65\x6d\x69\x6e\ \x61\x72\x0a\x73\x65\x6d\x69\x6e\x61\x72\x73\x0a\x73\x65\x6e\x64\ \x69\x6e\x67\x0a\x73\x65\x70\x61\x72\x61\x74\x65\x64\x0a\x73\x65\ \x70\x61\x72\x61\x74\x65\x73\x0a\x73\x65\x72\x69\x65\x73\x0a\x73\ \x65\x72\x76\x69\x63\x65\x0a\x73\x65\x72\x76\x69\x63\x65\x73\x0a\ \x73\x65\x74\x0a\x73\x65\x74\x74\x69\x6e\x67\x0a\x73\x65\x74\x75\ \x70\x0a\x73\x65\x76\x65\x6e\x0a\x73\x65\x76\x65\x6e\x74\x68\x0a\ \x73\x65\x76\x65\x72\x61\x6c\x0a\x73\x68\x61\x64\x65\x0a\x73\x68\ \x61\x64\x6f\x77\x0a\x73\x68\x61\x70\x65\x0a\x73\x68\x61\x72\x65\ \x73\x0a\x73\x68\x61\x76\x65\x73\x0a\x73\x68\x69\x6e\x65\x0a\x73\ \x68\x6f\x72\x74\x65\x72\x0a\x73\x68\x6f\x75\x6c\x64\x0a\x73\x68\ \x6f\x77\x0a\x73\x68\x6f\x77\x6e\x0a\x73\x68\x6f\x77\x73\x0a\x73\ \x69\x64\x65\x0a\x73\x69\x67\x6e\x61\x6c\x0a\x73\x69\x67\x6e\x61\ \x6c\x73\x0a\x73\x69\x67\x6e\x61\x74\x75\x72\x65\x0a\x73\x69\x67\ \x6e\x69\x66\x69\x63\x61\x6e\x74\x6c\x79\x0a\x73\x69\x6d\x69\x6c\ \x61\x72\x0a\x73\x69\x6d\x69\x6c\x61\x72\x69\x6c\x79\x0a\x73\x69\ \x6d\x69\x6c\x61\x72\x6c\x79\x0a\x73\x69\x6d\x70\x6c\x65\x0a\x73\ \x69\x6d\x70\x6c\x65\x73\x74\x0a\x73\x69\x6d\x70\x6c\x69\x66\x69\ \x65\x64\x0a\x73\x69\x6d\x70\x6c\x69\x66\x79\x69\x6e\x67\x0a\x73\ \x69\x6d\x70\x6c\x79\x0a\x73\x69\x6d\x75\x6c\x61\x74\x65\x0a\x73\ \x69\x6d\x75\x6c\x74\x61\x6e\x65\x6f\x75\x73\x0a\x73\x69\x6e\x63\ \x65\x0a\x73\x69\x6e\x67\x6c\x65\x0a\x73\x69\x7a\x65\x0a\x73\x69\ \x7a\x65\x73\x0a\x73\x6c\x69\x67\x68\x74\x6c\x79\x0a\x73\x6c\x6f\ \x70\x65\x0a\x73\x6c\x6f\x74\x0a\x73\x6c\x6f\x77\x69\x6e\x67\x0a\ \x73\x6d\x61\x6c\x6c\x0a\x73\x6d\x61\x6c\x6c\x65\x72\x0a\x73\x6f\ \x0a\x73\x6f\x63\x6b\x65\x74\x0a\x73\x6f\x63\x6b\x65\x74\x73\x0a\ \x73\x6f\x66\x74\x77\x61\x72\x65\x0a\x73\x6f\x6c\x75\x74\x69\x6f\ \x6e\x73\x0a\x73\x6f\x6c\x76\x65\x64\x0a\x73\x6f\x6d\x65\x0a\x73\ \x6f\x6f\x6e\x0a\x73\x6f\x72\x74\x0a\x73\x6f\x72\x74\x69\x6e\x67\ \x0a\x73\x6f\x75\x72\x63\x65\x0a\x73\x6f\x75\x72\x63\x65\x73\x0a\ \x73\x6f\x75\x74\x68\x0a\x73\x70\x61\x63\x65\x0a\x73\x70\x65\x63\ \x69\x61\x6c\x0a\x73\x70\x65\x63\x69\x61\x6c\x69\x7a\x65\x64\x0a\ \x73\x70\x65\x63\x69\x66\x69\x63\x0a\x73\x70\x65\x63\x69\x66\x69\ \x63\x61\x6c\x6c\x79\x0a\x73\x70\x65\x63\x69\x66\x69\x63\x61\x74\ \x69\x6f\x6e\x0a\x73\x70\x65\x63\x69\x66\x69\x63\x61\x74\x69\x6f\ \x6e\x73\x0a\x73\x70\x65\x63\x69\x66\x69\x65\x64\x0a\x73\x70\x65\ \x63\x69\x66\x79\x0a\x73\x70\x65\x65\x64\x0a\x73\x70\x65\x6e\x64\ \x0a\x73\x70\x6c\x69\x74\x0a\x53\x51\x4c\x0a\x73\x74\x61\x6e\x64\ \x61\x72\x64\x0a\x73\x74\x61\x6e\x64\x61\x72\x64\x73\x0a\x73\x74\ \x61\x72\x74\x0a\x73\x74\x61\x72\x74\x73\x0a\x73\x74\x61\x72\x76\ \x65\x0a\x73\x74\x61\x74\x65\x0a\x73\x74\x61\x74\x65\x73\x0a\x73\ \x74\x61\x74\x69\x63\x0a\x73\x74\x65\x61\x64\x79\x0a\x73\x74\x65\ \x61\x6c\x69\x6e\x67\x0a\x73\x74\x65\x70\x0a\x73\x74\x69\x6c\x6c\ \x0a\x73\x74\x6f\x70\x0a\x73\x74\x6f\x70\x77\x61\x74\x63\x68\x0a\ \x73\x74\x6f\x72\x65\x0a\x73\x74\x6f\x72\x65\x64\x0a\x73\x74\x6f\ \x72\x65\x73\x0a\x73\x74\x72\x61\x69\x67\x68\x74\x66\x6f\x72\x77\ \x61\x72\x64\x0a\x73\x74\x72\x65\x61\x6d\x0a\x73\x74\x72\x69\x6e\ \x67\x0a\x73\x74\x72\x69\x6e\x67\x73\x0a\x73\x74\x72\x75\x63\x74\ \x75\x72\x65\x0a\x73\x74\x72\x75\x63\x74\x75\x72\x65\x64\x0a\x73\ \x74\x72\x75\x74\x0a\x73\x74\x79\x6c\x65\x0a\x73\x74\x79\x6c\x65\ \x73\x0a\x73\x74\x79\x6c\x69\x6e\x67\x0a\x73\x75\x62\x63\x6c\x61\ \x73\x73\x0a\x73\x75\x62\x63\x6c\x61\x73\x73\x69\x6e\x67\x0a\x73\ \x75\x62\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x0a\x73\x75\x62\x73\ \x65\x63\x74\x69\x6f\x6e\x0a\x73\x75\x62\x73\x65\x63\x74\x69\x6f\ \x6e\x73\x0a\x73\x75\x63\x63\x65\x65\x64\x73\x0a\x73\x75\x63\x63\ \x65\x73\x73\x0a\x73\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x0a\x73\ \x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x0a\x73\x75\x63\x68\ \x0a\x73\x75\x67\x67\x65\x73\x74\x69\x6f\x6e\x0a\x73\x75\x67\x67\ \x65\x73\x74\x69\x6f\x6e\x73\x0a\x73\x75\x69\x74\x61\x62\x6c\x65\ \x0a\x73\x75\x70\x70\x6f\x72\x74\x0a\x73\x75\x70\x70\x6f\x72\x74\ \x65\x64\x0a\x73\x75\x70\x70\x6f\x72\x74\x73\x0a\x73\x75\x70\x70\ \x6f\x73\x65\x0a\x73\x75\x70\x70\x6f\x73\x65\x73\x0a\x73\x75\x72\ \x65\x0a\x73\x77\x69\x74\x63\x68\x0a\x73\x77\x69\x74\x63\x68\x65\ \x73\x0a\x73\x79\x6d\x62\x6f\x6c\x0a\x73\x79\x6d\x62\x6f\x6c\x73\ \x0a\x73\x79\x6e\x6f\x6e\x79\x6d\x73\x0a\x73\x79\x73\x74\x65\x6d\ \x0a\x73\x79\x73\x74\x65\x6d\x73\x0a\x74\x61\x62\x6c\x65\x0a\x74\ \x61\x62\x6c\x65\x73\x0a\x74\x61\x67\x73\x0a\x74\x61\x6b\x65\x0a\ \x74\x61\x6b\x65\x73\x0a\x74\x61\x70\x0a\x74\x61\x72\x67\x65\x74\ \x0a\x74\x61\x72\x67\x65\x74\x73\x0a\x54\x43\x50\x0a\x74\x65\x61\ \x6d\x0a\x74\x65\x63\x68\x6e\x69\x71\x75\x65\x0a\x74\x65\x63\x68\ \x6e\x6f\x6c\x6f\x67\x79\x0a\x74\x65\x6d\x70\x6c\x61\x74\x65\x0a\ \x74\x65\x6d\x70\x6c\x61\x74\x65\x73\x0a\x54\x65\x78\x61\x73\x0a\ \x74\x65\x78\x74\x0a\x74\x68\x61\x6e\x0a\x74\x68\x61\x74\x0a\x74\ \x68\x65\x0a\x74\x68\x65\x69\x72\x0a\x74\x68\x65\x6d\x0a\x74\x68\ \x65\x6e\x0a\x74\x68\x65\x6f\x72\x65\x6d\x0a\x74\x68\x65\x72\x65\ \x0a\x74\x68\x65\x73\x65\x0a\x74\x68\x65\x79\x0a\x74\x68\x69\x63\ \x6b\x6e\x65\x73\x73\x0a\x74\x68\x69\x6e\x0a\x74\x68\x69\x72\x64\ \x0a\x74\x68\x69\x73\x0a\x74\x68\x6f\x73\x65\x0a\x74\x68\x72\x65\ \x65\x0a\x74\x68\x72\x6f\x74\x74\x6c\x69\x6e\x67\x0a\x74\x68\x72\ \x6f\x75\x67\x68\x0a\x74\x69\x67\x68\x74\x6c\x79\x0a\x74\x69\x6d\ \x65\x0a\x74\x69\x6d\x65\x72\x0a\x74\x69\x6d\x65\x73\x0a\x74\x69\ \x6e\x79\x0a\x74\x69\x70\x73\x0a\x74\x69\x74\x6c\x65\x0a\x74\x69\ \x74\x6c\x65\x73\x0a\x74\x6f\x0a\x74\x6f\x67\x65\x74\x68\x65\x72\ \x0a\x74\x6f\x6f\x0a\x74\x6f\x70\x0a\x74\x6f\x72\x72\x65\x6e\x74\ \x0a\x74\x6f\x74\x61\x6c\x0a\x74\x6f\x75\x72\x0a\x74\x72\x61\x64\ \x65\x6d\x61\x72\x6b\x73\x0a\x74\x72\x61\x66\x66\x69\x63\x0a\x74\ \x72\x61\x69\x6e\x69\x6e\x67\x0a\x74\x72\x61\x6e\x73\x61\x63\x74\ \x69\x6f\x6e\x0a\x74\x72\x61\x6e\x73\x66\x65\x72\x0a\x74\x72\x61\ \x6e\x73\x66\x65\x72\x72\x65\x64\x0a\x74\x72\x61\x6e\x73\x66\x65\ \x72\x72\x69\x6e\x67\x0a\x74\x72\x61\x6e\x73\x66\x65\x72\x73\x0a\ \x74\x72\x61\x6e\x73\x6c\x75\x63\x65\x6e\x63\x79\x0a\x74\x72\x61\ \x6e\x73\x6c\x75\x63\x65\x6e\x74\x0a\x74\x72\x61\x6e\x73\x70\x61\ \x72\x65\x6e\x63\x79\x0a\x74\x72\x61\x6e\x73\x70\x61\x72\x65\x6e\ \x74\x0a\x74\x72\x61\x76\x65\x6c\x0a\x74\x72\x61\x76\x65\x6c\x65\ \x64\x0a\x74\x72\x75\x65\x0a\x74\x72\x79\x0a\x74\x75\x72\x6e\x0a\ \x74\x77\x69\x63\x65\x0a\x74\x77\x6f\x0a\x74\x79\x70\x65\x0a\x74\ \x79\x70\x65\x64\x0a\x74\x79\x70\x69\x63\x61\x6c\x0a\x74\x79\x70\ \x69\x63\x61\x6c\x6c\x79\x0a\x75\x6e\x61\x62\x6c\x65\x0a\x75\x6e\ \x64\x65\x72\x0a\x75\x6e\x64\x65\x72\x6c\x79\x69\x6e\x67\x0a\x75\ \x6e\x64\x65\x72\x73\x74\x61\x6e\x64\x69\x6e\x67\x0a\x75\x6e\x64\ \x6f\x65\x73\x0a\x75\x6e\x69\x71\x75\x65\x0a\x75\x6e\x69\x74\x65\ \x64\x0a\x75\x6e\x6c\x69\x6b\x65\x0a\x75\x6e\x70\x61\x63\x6b\x0a\ \x75\x6e\x73\x69\x67\x6e\x65\x64\x0a\x75\x6e\x74\x69\x6c\x0a\x75\ \x6e\x74\x6f\x75\x63\x68\x65\x64\x0a\x75\x70\x0a\x75\x70\x64\x61\ \x74\x65\x0a\x75\x70\x64\x61\x74\x65\x64\x0a\x75\x70\x64\x61\x74\ \x65\x73\x0a\x75\x70\x6c\x6f\x61\x64\x0a\x75\x70\x6c\x6f\x61\x64\ \x69\x6e\x67\x0a\x75\x70\x6c\x6f\x61\x64\x73\x0a\x75\x73\x0a\x75\ \x73\x65\x0a\x75\x73\x65\x64\x0a\x75\x73\x65\x66\x75\x6c\x0a\x75\ \x73\x65\x72\x0a\x75\x73\x65\x72\x73\x0a\x75\x73\x65\x73\x0a\x75\ \x73\x69\x6e\x67\x0a\x75\x73\x75\x61\x6c\x0a\x75\x73\x75\x61\x6c\ \x6c\x79\x0a\x76\x61\x6c\x69\x64\x0a\x76\x61\x6c\x75\x65\x0a\x76\ \x61\x6c\x75\x65\x73\x0a\x76\x61\x72\x69\x61\x62\x6c\x65\x0a\x76\ \x61\x72\x69\x61\x74\x69\x6f\x6e\x0a\x76\x61\x72\x69\x65\x74\x79\ \x0a\x76\x61\x72\x69\x6f\x75\x73\x0a\x76\x65\x63\x74\x6f\x72\x0a\ \x76\x65\x6e\x74\x75\x72\x69\x6e\x67\x0a\x76\x65\x72\x69\x66\x79\ \x69\x6e\x67\x0a\x76\x65\x72\x73\x61\x0a\x76\x65\x72\x73\x69\x6f\ \x6e\x0a\x76\x65\x72\x73\x69\x6f\x6e\x73\x0a\x76\x65\x72\x74\x69\ \x63\x61\x6c\x0a\x76\x65\x72\x79\x0a\x76\x69\x61\x0a\x76\x69\x63\ \x65\x0a\x76\x69\x72\x74\x75\x61\x6c\x0a\x76\x69\x73\x75\x61\x6c\ \x0a\x76\x6f\x69\x64\x0a\x56\x50\x0a\x77\x61\x69\x74\x69\x6e\x67\ \x0a\x57\x61\x6c\x65\x73\x0a\x77\x61\x6e\x74\x0a\x77\x61\x6e\x74\ \x73\x0a\x77\x61\x73\x0a\x77\x61\x79\x0a\x77\x61\x79\x73\x0a\x77\ \x65\x0a\x77\x65\x62\x0a\x77\x65\x62\x73\x69\x74\x65\x0a\x77\x65\ \x6c\x6c\x0a\x77\x65\x72\x65\x0a\x77\x68\x61\x74\x0a\x77\x68\x65\ \x6e\x0a\x77\x68\x65\x6e\x65\x76\x65\x72\x0a\x77\x68\x65\x72\x65\ \x0a\x77\x68\x65\x74\x68\x65\x72\x0a\x77\x68\x69\x63\x68\x0a\x77\ \x68\x69\x6c\x65\x0a\x77\x68\x69\x73\x74\x6c\x65\x0a\x77\x68\x69\ \x74\x65\x0a\x77\x68\x6f\x0a\x77\x68\x6f\x6c\x65\x0a\x77\x68\x79\ \x0a\x77\x69\x64\x67\x65\x74\x0a\x77\x69\x64\x67\x65\x74\x73\x0a\ \x77\x69\x64\x74\x68\x0a\x77\x69\x64\x74\x68\x73\x0a\x77\x69\x6c\ \x6c\x0a\x77\x69\x6e\x64\x6f\x77\x0a\x77\x69\x6e\x64\x6f\x77\x73\ \x0a\x77\x69\x73\x68\x0a\x77\x69\x74\x68\x0a\x77\x69\x74\x68\x6f\ \x75\x74\x0a\x77\x6f\x72\x64\x0a\x77\x6f\x72\x64\x73\x0a\x77\x6f\ \x72\x6b\x0a\x77\x6f\x72\x6b\x69\x6e\x67\x0a\x77\x6f\x72\x6b\x73\ \x0a\x77\x6f\x75\x6c\x64\x0a\x77\x72\x61\x70\x0a\x77\x72\x61\x70\ \x70\x65\x72\x0a\x77\x72\x69\x74\x65\x0a\x77\x72\x69\x74\x65\x73\ \x0a\x77\x72\x69\x74\x69\x6e\x67\x0a\x77\x72\x69\x74\x69\x6e\x67\ \x73\x0a\x77\x72\x69\x74\x74\x65\x6e\x0a\x58\x0a\x58\x31\x31\x0a\ \x58\x4f\x52\x0a\x79\x65\x61\x72\x0a\x79\x65\x61\x72\x73\x0a\x79\ \x65\x73\x0a\x79\x6f\x75\x0a\x79\x6f\x75\x72\x0a\x7a\x65\x72\x6f\ \x0a\ " qt_resource_name = b"\ \x00\x09\ \x0a\x6c\x78\x43\ \x00\x72\ \x00\x65\x00\x73\x00\x6f\x00\x75\x00\x72\x00\x63\x00\x65\x00\x73\ \x00\x0c\ \x0f\x6a\x4d\x94\ \x00\x77\ \x00\x6f\x00\x72\x00\x64\x00\x6c\x00\x69\x00\x73\x00\x74\x00\x2e\x00\x74\x00\x78\x00\x74\ " qt_resource_struct = b"\ \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\x18\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() PyQt5_gpl-5.10.1/examples/tools/customcompleter/resources/0000755000076500000240000000000013245231431023714 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/tools/customcompleter/resources/wordlist.txt0000644000076500000240000002552213245231431026332 0ustar philstaff00000000000000A4 able about above absence absolutely abstract access according accumulated achieve achieving activity acts actual actually add added adding addition additionally additions addresses adjust adjustments advanced advice after afterwards again agenda aim algorithm all allocated allow allowed allowing allows along alpha already also alternative alternatively although American an and announced annoy another answer answers any anything anyway apart API appear appears appendices appendix appends application applications apply approach approaches appropriate Arabic arbitrary are areas ARGB argument arguments around arrangements arrive arrived Arthur article articles as asked aspects assume at attachment attempt attempting attend attendees attributes authors availability available avoid away back background backgrounds bandwidth bandwidths Barcelona base based basic basically basics be because been before behave behavior behind being below benefits Berkeley between bit bits bitwise black blended blending blends block blue BMP body bold booking bool Boston both bottom box boxes braces break breaks broad browsers buffer buffers build builds built bundled burdens busy but by bypass bypassing bytes calendar call called calling calls Cambridge can canonical canonicalised cap capabilities capacity caption card care case cast catch causing centre certain challenges chance change changes changing channel channels chapter char chart charts check checks Chicago chosen chunk circle citation city claim class classes clause clauses clear clearing client clients close closed code colon color colorize colorizer colors colour column columns combine combined combines combining comes command commands comment common communicate community compiled complement complete completely completeness completes completion complex compliant component components compositing composition compression computation computer concepts conclusion concurrent configurable congested congestion connect connected connection connections cons consider consisting consists construct constructed constructing constructor constructs consume contact contain containing contains contents contents continue continued contributors control controlled controller controller controlling controls controls conventions cook cooperation copy copyright core cores corollary correct correctly corresponding could couple coworkers CPU create creates creating crucial cultures current currently custom customized cut data database datasets datum day days deal dealing decide decouple decoupled deeply def default define defines definition definitions delegate delete demo demonstrate demonstrations deployed describe describes design desktop desktops destination destinations destructor details detect determine determines developer developers development developments device devices diagram dialogs dictionary did difference differences different differs digital direct direct directions directly directory discuss display displaying displays distribute distribution disturbing divide do documentation documents does done down downLimit download downloaded downloading draw drawing drawn drop Duff during DVD dynamic dynamically dynamics each earlier easily editing editors education effect effectively effects either ellipse ellipses elliptical else email embedded emit emits empty enable enables encapsulates enclose end endnote endnotes engineer engineering English enjoys enough ensure ensures entails enter entire entitled entries entry environment erases error errors especially established etc. Europe even evenly event events eventually every everyone example examples except exception excessive exclusive existing exists expand expected expense export exposes extend extended extending extensible extension external extra extract faces facilities factory fade failure fairness falls false family fashion fast faster features February feedback feel fetch fetching few fields figure figures file file name files filled filler final finally find fine finish finished first flow fly focus followed following font foot footnote footnotes for form format formats forms formula formulas forum found framework France from front full fully function functionality functions future gain games gap general generic Germany get gill give given gives giving global go goes got gradient graph graphical graphics gray great greatly green grey group growing gui GUI hack had half Hamburg hand handing handle handler handlers handles handling happens hardware harmonica has have having he head header headers hear height help helper here high highlight highly hints his hold holder holding hole home horizontal host hosting hours Houston how however huge hyphen ID idea ideally if Illinois illustrate illustrated illustrates image images impact implement implementation implementations implemented implementing implements import important improvements in include included includes including inclusion incoming inconvenient indent index indicate inexpensively influence info information ingenious inherits initial initially inner input inspired install installs instance instead instructs integer integers integration intended intensive interest interests interface interfaces interfere internal interval into intriguing intro introduce introduced invalid invented inverse invocation involved Irish irregular is ISO ISPs issue issues it items iterate its itself job join JPEG jungle just Karaoke keep keeping key kind king known label labels landscape language large last later latest lawn layout lead leader leaders lean leaves leaving left lemma length less let level levels libraries library lies like likely limit limiting limits line linear lines linewidth link linked linking Linux list lists little lives load loading loads located location locations logo long longer look looked looking looks lookup lookups loop lout low macro made magazine magic main major make makes making manage managed managing mandatory manipulate manipulation manner many map maps March margin mask masking Massachusetts match mathematical maximum may means meet member members memory merged method might milliseconds minimize minimum minor mix MNG mode model models modes modified module moments monitored monthly more most mostly move much multitude Munich must name named names necessary need needed needs network new news newsletter next nicely no none normally Norway not note notes nothing notifies notify now null number numbered numbering numbers Nydalen object objects obtain obtaining odd of off office offset offsets often old on once one ones online only onto opacity opaque open opens operates operating operation operations operator opportunity opposed optimize option optionally options or OR order ordinary original originally Oslo other otherwise our out outer outgoing output outside over overcoming overrides overview own owner owners pace Pacific package packages packets page pages paint painted painting paragraph paragraphs parameters parent Paris parse part partial partially particular partners parts party passed passing patches path pattern patterns pause PDF peek pending perform performed performs permission permutations personal pick pie pipe pixel pixels place places planning platforms play players playing please pleasing plugin plugins plus PNG pointer pop popular populates porter Porter portrait possibility possible potential potentially power powers preceded presence present prevent prevents previous previously primarily primary primitives printed printing prior probably problem process processes processing produce produced produces products programming programs project projects proof proper properly properties property proposed proposition pros protocols proud provide provided provides provision proxy public published punch punches pursuing put Qt Qtopia quality quarter quarterly queried queries query question questions radial ragged range rate rates rather ratio raw read reader reading reads ready real realistic really received recent recognized recommended recompile rectangle rectangular red redistribute reducing reference references reflect regardless regional register registered registration reimplement reimplementation reimplemented release released releases reliable rely remains remember removed removes repeatedly replace report represent represented represents reproduced requested require required requires resetting resides resolve respective respectively response rest restart result resulting resume return returning returns reuse revealing rich riches right roadshow role Roman router routers rule run runner runners running runs sake sales salespeople same sample San Jose save saved saves say scalable scale scanline scene scenes schedule school script seam seamless search searches searching second seconds section sections security see seen selection seminar seminars sending separated separates series service services set setting setup seven seventh several shade shadow shape shares shaves shine shorter should show shown shows side signal signals signature significantly similar similarily similarly simple simplest simplified simplifying simply simulate simultaneous since single size sizes slightly slope slot slowing small smaller so socket sockets software solutions solved some soon sort sorting source sources south space special specialized specific specifically specification specifications specified specify speed spend split SQL standard standards start starts starve state states static steady stealing step still stop stopwatch store stored stores straightforward stream string strings structure structured strut style styles styling subclass subclassing subdirectory subsection subsections succeeds success successful successfully such suggestion suggestions suitable support supported supports suppose supposes sure switch switches symbol symbols synonyms system systems table tables tags take takes tap target targets TCP team technique technology template templates Texas text than that the their them then theorem there these they thickness thin third this those three throttling through tightly time timer times tiny tips title titles to together too top torrent total tour trademarks traffic training transaction transfer transferred transferring transfers translucency translucent transparency transparent travel traveled true try turn twice two type typed typical typically unable under underlying understanding undoes unique united unlike unpack unsigned until untouched up update updated updates upload uploading uploads us use used useful user users uses using usual usually valid value values variable variation variety various vector venturing verifying versa version versions vertical very via vice virtual visual void VP waiting Wales want wants was way ways we web website well were what when whenever where whether which while whistle white who whole why widget widgets width widths will window windows wish with without word words work working works would wrap wrapper write writes writing writings written X X11 XOR year years yes you your zero PyQt5_gpl-5.10.1/examples/tools/i18n/0000755000076500000240000000000013245231431017234 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/tools/i18n/i18n.py0000755000076500000240000001731113245231431020373 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDir, QEvent, Qt, QT_TRANSLATE_NOOP, QTranslator from PyQt5.QtGui import QColor, QPalette from PyQt5.QtWidgets import (QAction, QApplication, QCheckBox, QDialog, QDialogButtonBox, QGridLayout, QGroupBox, QListWidget, QMainWindow, QRadioButton, QVBoxLayout, QWidget) import i18n_rc class LanguageChooser(QDialog): def __init__(self, parent=None): super(LanguageChooser, self).__init__(parent, Qt.WindowStaysOnTopHint) self.qmFileForCheckBoxMap = {} self.mainWindowForCheckBoxMap = {} groupBox = QGroupBox("Languages") groupBoxLayout = QGridLayout() qmFiles = self.findQmFiles() for i, qmf in enumerate(qmFiles): checkBox = QCheckBox(self.languageName(qmf)) self.qmFileForCheckBoxMap[checkBox] = qmf checkBox.toggled.connect(self.checkBoxToggled) groupBoxLayout.addWidget(checkBox, i / 2, i % 2) groupBox.setLayout(groupBoxLayout) buttonBox = QDialogButtonBox() showAllButton = buttonBox.addButton("Show All", QDialogButtonBox.ActionRole) hideAllButton = buttonBox.addButton("Hide All", QDialogButtonBox.ActionRole) showAllButton.clicked.connect(self.showAll) hideAllButton.clicked.connect(self.hideAll) mainLayout = QVBoxLayout() mainLayout.addWidget(groupBox) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("I18N") def eventFilter(self, object, event): if event.type() == QEvent.Close: if isinstance(object, MainWindow): window = object for checkBox, w in self.mainWindowForCheckBoxMap.items(): if w is window: break else: checkBox = None if checkBox: checkBox.setChecked(False) return QWidget.eventFilter(self, object, event) def closeEvent(self, event): QApplication.instance().quit() def checkBoxToggled(self): checkBox = self.sender() window = self.mainWindowForCheckBoxMap.get(checkBox) if not window: translator = QTranslator() translator.load(self.qmFileForCheckBoxMap[checkBox]) QApplication.installTranslator(translator) # Because we will be installing an event filter for the main window # it is important that this instance isn't garbage collected before # the main window when the program terminates. We ensure this by # making the main window a child of this one. window = MainWindow(self) window.setPalette(QPalette(self.colorForLanguage(checkBox.text()))) window.installEventFilter(self) self.mainWindowForCheckBoxMap[checkBox] = window window.setVisible(checkBox.isChecked()) def showAll(self): for checkBox in self.qmFileForCheckBoxMap.keys(): checkBox.setChecked(True) def hideAll(self): for checkBox in self.qmFileForCheckBoxMap.keys(): checkBox.setChecked(False) def findQmFiles(self): trans_dir = QDir(':/translations') fileNames = trans_dir.entryList(['*.qm'], QDir.Files, QDir.Name) return [trans_dir.filePath(fn) for fn in fileNames] def languageName(self, qmFile): translator = QTranslator() translator.load(qmFile) return translator.translate("MainWindow", "English") def colorForLanguage(self, language): hashValue = hash(language) red = 156 + (hashValue & 0x3F) green = 156 + ((hashValue >> 6) & 0x3F) blue = 156 + ((hashValue >> 12) & 0x3F) return QColor(red, green, blue) class MainWindow(QMainWindow): listEntries = [QT_TRANSLATE_NOOP("MainWindow", "First"), QT_TRANSLATE_NOOP("MainWindow", "Second"), QT_TRANSLATE_NOOP("MainWindow", "Third")] def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.centralWidget = QWidget() self.setCentralWidget(self.centralWidget) self.createGroupBox() listWidget = QListWidget() for le in MainWindow.listEntries: listWidget.addItem(self.tr(le)) mainLayout = QVBoxLayout() mainLayout.addWidget(self.groupBox) mainLayout.addWidget(listWidget) self.centralWidget.setLayout(mainLayout) exitAction = QAction(self.tr("E&xit"), self, triggered=QApplication.instance().quit) fileMenu = self.menuBar().addMenu(self.tr("&File")) fileMenu.setPalette(QPalette(Qt.red)) fileMenu.addAction(exitAction) self.setWindowTitle(self.tr("Language: %s") % self.tr("English")) self.statusBar().showMessage(self.tr("Internationalization Example")) if self.tr("LTR") == "RTL": self.setLayoutDirection(Qt.RightToLeft) def createGroupBox(self): self.groupBox = QGroupBox(self.tr("View")) perspectiveRadioButton = QRadioButton(self.tr("Perspective")) isometricRadioButton = QRadioButton(self.tr("Isometric")) obliqueRadioButton = QRadioButton(self.tr("Oblique")) perspectiveRadioButton.setChecked(True) self.groupBoxLayout = QVBoxLayout() self.groupBoxLayout.addWidget(perspectiveRadioButton) self.groupBoxLayout.addWidget(isometricRadioButton) self.groupBoxLayout.addWidget(obliqueRadioButton) self.groupBox.setLayout(self.groupBoxLayout) if __name__ == "__main__": import sys app = QApplication(sys.argv) chooser = LanguageChooser() chooser.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/tools/i18n/i18n.qrc0000644000076500000240000000120013245231431020513 0ustar philstaff00000000000000 translations/i18n_ar.qm translations/i18n_cs.qm translations/i18n_de.qm translations/i18n_el.qm translations/i18n_en.qm translations/i18n_eo.qm translations/i18n_fr.qm translations/i18n_it.qm translations/i18n_jp.qm translations/i18n_ko.qm translations/i18n_no.qm translations/i18n_ru.qm translations/i18n_sv.qm translations/i18n_zh.qm PyQt5_gpl-5.10.1/examples/tools/i18n/i18n_rc.py0000644000076500000240000013724413245231431021064 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Tue May 14 15:44:15 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x03\x24\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x22\x00\x47\xdf\x04\ \x00\x00\x00\x35\x00\x4d\x09\xa4\x00\x00\x00\x50\x00\x5a\xf0\x84\ \x00\x00\x00\x67\x02\xf0\x8c\x31\x00\x00\x00\x7e\x05\x93\x08\xe5\ \x00\x00\x00\x9b\x05\x9b\xa6\x44\x00\x00\x00\xb2\x06\x3c\xe8\x53\ \x00\x00\x00\xc7\x06\xec\x79\x65\x00\x00\x00\xe6\x0c\x4e\x30\xd8\ \x00\x00\x01\x05\x0e\x9f\xe7\x05\x00\x00\x01\x1a\x69\x00\x00\x01\ \x5f\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x06\x00\x56\x00\x69\x00\x73\x05\x00\x05\ \xcf\xc7\x01\x03\x00\x00\x00\x08\x00\x26\x00\x46\x00\x69\x00\x6c\ \x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\x10\x00\x26\x00\x41\x00\ \x76\x00\x73\x00\x6c\x00\x75\x00\x74\x00\x74\x05\x00\x47\xdf\x04\ \x01\x03\x00\x00\x00\x0c\x00\x46\x00\xf8\x00\x72\x00\x73\x00\x74\ \x00\x65\x05\x00\x4d\x09\xa4\x01\x03\x00\x00\x00\x0c\x00\x54\x00\ \x72\x00\x65\x00\x64\x00\x6a\x00\x65\x05\x00\x5a\xf0\x84\x01\x03\ \x00\x00\x00\x12\x00\x53\x00\x70\x00\x72\x00\xe5\x00\x6b\x00\x3a\ \x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\x03\x00\x00\x00\ \x0c\x00\x53\x00\x6b\x00\x6a\x00\x65\x00\x76\x00\x74\x05\x05\x93\ \x08\xe5\x01\x03\x00\x00\x00\x0a\x00\x41\x00\x6e\x00\x64\x00\x72\ \x00\x65\x05\x05\x9b\xa6\x44\x01\x03\x00\x00\x00\x14\x00\x49\x00\ \x73\x00\x6f\x00\x6d\x00\x65\x00\x74\x00\x72\x00\x69\x00\x73\x00\ \x6b\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x14\x00\x50\x00\x65\ \x00\x72\x00\x73\x00\x70\x00\x65\x00\x6b\x00\x74\x00\x69\x00\x76\ \x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\x0a\x00\x4e\x00\x6f\x00\ \x72\x00\x73\x00\x6b\x05\x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x3a\ \x00\x49\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x6e\x00\x61\x00\x73\ \x00\x6a\x00\x6f\x00\x6e\x00\x61\x00\x6c\x00\x69\x00\x73\x00\x65\ \x00\x72\x00\x69\x00\x6e\x00\x67\x00\x73\x00\x65\x00\x6b\x00\x73\ \x00\x65\x00\x6d\x00\x70\x00\x65\x00\x6c\x05\x0e\x9f\xe7\x05\x01\ \x2f\x00\x00\x01\x3e\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x0a\x4d\x61\x69\x6e\x57\x69\x6e\x64\ \x6f\x77\x00\ \x00\x00\x03\x26\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x2a\x00\x47\xdf\x04\ \x00\x00\x00\x45\x00\x4d\x09\xa4\x00\x00\x00\x5a\x00\x5a\xf0\x84\ \x00\x00\x00\x6d\x02\xf0\x8c\x31\x00\x00\x00\x80\x05\x93\x08\xe5\ \x00\x00\x00\x9f\x05\x9b\xa6\x44\x00\x00\x00\xb8\x06\x3c\xe8\x53\ \x00\x00\x00\xc9\x06\xec\x79\x65\x00\x00\x00\xe6\x0c\x4e\x30\xd8\ \x00\x00\x01\x07\x0e\x9f\xe7\x05\x00\x00\x01\x24\x69\x00\x00\x01\ \x61\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x0e\x00\x41\x00\x73\x00\x70\x00\x65\x00\ \x6b\x00\x74\x00\x6f\x05\x00\x05\xcf\xc7\x01\x03\x00\x00\x00\x10\ \x00\x26\x00\x44\x00\x6f\x00\x73\x00\x69\x00\x65\x00\x72\x00\x6f\ \x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\x0a\x00\x26\x00\x46\x00\ \x69\x00\x6e\x00\x69\x05\x00\x47\xdf\x04\x01\x03\x00\x00\x00\x08\ \x00\x55\x00\x6e\x00\x75\x00\x65\x05\x00\x4d\x09\xa4\x01\x03\x00\ \x00\x00\x08\x00\x54\x00\x72\x00\x69\x00\x65\x05\x00\x5a\xf0\x84\ \x01\x03\x00\x00\x00\x14\x00\x4c\x00\x69\x00\x6e\x00\x67\x00\x76\ \x00\x6f\x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\ \x03\x00\x00\x00\x0e\x00\x4f\x00\x62\x00\x6c\x00\x69\x00\x6b\x00\ \x76\x00\x61\x05\x05\x93\x08\xe5\x01\x03\x00\x00\x00\x06\x00\x44\ \x00\x75\x00\x65\x05\x05\x9b\xa6\x44\x01\x03\x00\x00\x00\x12\x00\ \x49\x00\x73\x00\x6f\x00\x6d\x00\x65\x00\x74\x00\x72\x00\x69\x00\ \x61\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x16\x00\x50\x00\x65\ \x00\x72\x00\x73\x00\x70\x00\x65\x00\x6b\x00\x74\x00\x69\x00\x76\ \x00\x61\x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\x12\x00\x45\x00\ \x73\x00\x70\x00\x65\x00\x72\x00\x61\x00\x6e\x00\x74\x00\x6f\x05\ \x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x32\x00\x45\x00\x6b\x00\x7a\ \x00\x65\x00\x6d\x00\x70\x00\x6c\x00\x6f\x00\x20\x00\x70\x00\x72\ \x00\x69\x00\x20\x00\x69\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x6e\ \x00\x61\x00\x63\x00\x69\x00\x69\x00\x67\x00\x6f\x05\x0e\x9f\xe7\ \x05\x01\x2f\x00\x00\x01\x3e\x00\x97\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x4d\x61\x69\x6e\x57\x69\ \x6e\x64\x6f\x77\x00\ \x00\x00\x03\x4c\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x22\x00\x47\xdf\x04\ \x00\x00\x00\x3d\x00\x4d\x09\xa4\x00\x00\x00\x58\x00\x5a\xf0\x84\ \x00\x00\x00\x71\x02\xf0\x8c\x31\x00\x00\x00\x8e\x05\x93\x08\xe5\ \x00\x00\x00\xaf\x05\x9b\xa6\x44\x00\x00\x00\xc8\x06\x3c\xe8\x53\ \x00\x00\x00\xe3\x06\xec\x79\x65\x00\x00\x01\x04\x0c\x4e\x30\xd8\ \x00\x00\x01\x25\x0e\x9f\xe7\x05\x00\x00\x01\x40\x69\x00\x00\x01\ \x87\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x06\x00\x56\x00\x75\x00\x65\x05\x00\x05\ \xcf\xc7\x01\x03\x00\x00\x00\x10\x00\x26\x00\x46\x00\x69\x00\x63\ \x00\x68\x00\x69\x00\x65\x00\x72\x05\x00\x2a\xd0\x25\x01\x03\x00\ \x00\x00\x10\x00\x26\x00\x51\x00\x75\x00\x69\x00\x74\x00\x74\x00\ \x65\x00\x72\x05\x00\x47\xdf\x04\x01\x03\x00\x00\x00\x0e\x00\x50\ \x00\x72\x00\x65\x00\x6d\x00\x69\x00\x65\x00\x72\x05\x00\x4d\x09\ \xa4\x01\x03\x00\x00\x00\x12\x00\x54\x00\x72\x00\x6f\x00\x69\x00\ \x73\x00\x69\x00\xe8\x00\x6d\x00\x65\x05\x00\x5a\xf0\x84\x01\x03\ \x00\x00\x00\x16\x00\x4c\x00\x61\x00\x6e\x00\x67\x00\x75\x00\x65\ \x00\x20\x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\ \x03\x00\x00\x00\x0e\x00\x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\ \x75\x00\x65\x05\x05\x93\x08\xe5\x01\x03\x00\x00\x00\x10\x00\x44\ \x00\x65\x00\x75\x00\x78\x00\x69\x00\xe8\x00\x6d\x00\x65\x05\x05\ \x9b\xa6\x44\x01\x03\x00\x00\x00\x16\x00\x49\x00\x73\x00\x6f\x00\ \x6d\x00\xe9\x00\x74\x00\x72\x00\x69\x00\x71\x00\x75\x00\x65\x05\ \x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x16\x00\x50\x00\x65\x00\x72\ \x00\x73\x00\x70\x00\x65\x00\x63\x00\x74\x00\x69\x00\x76\x00\x65\ \x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\x10\x00\x46\x00\x72\x00\ \x61\x00\x6e\x00\xe7\x00\x61\x00\x69\x00\x73\x05\x0c\x4e\x30\xd8\ \x01\x03\x00\x00\x00\x3c\x00\x45\x00\x78\x00\x65\x00\x6d\x00\x70\ \x00\x6c\x00\x65\x00\x20\x00\x64\x00\x27\x00\x69\x00\x6e\x00\x74\ \x00\x65\x00\x72\x00\x6e\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\ \x00\x61\x00\x6c\x00\x69\x00\x73\x00\x61\x00\x74\x00\x69\x00\x6f\ \x00\x6e\x05\x0e\x9f\xe7\x05\x01\x2f\x00\x00\x01\x3e\x00\x97\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\ \x4d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\x00\ \x00\x00\x03\x1c\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x28\x00\x47\xdf\x04\ \x00\x00\x00\x41\x00\x4d\x09\xa4\x00\x00\x00\x58\x00\x5a\xf0\x84\ \x00\x00\x00\x6d\x02\xf0\x8c\x31\x00\x00\x00\x82\x05\x93\x08\xe5\ \x00\x00\x00\x9f\x05\x9b\xa6\x44\x00\x00\x00\xbc\x06\x3c\xe8\x53\ \x00\x00\x00\xd1\x06\xec\x79\x65\x00\x00\x00\xf2\x0c\x4e\x30\xd8\ \x00\x00\x01\x15\x0e\x9f\xe7\x05\x00\x00\x01\x2a\x69\x00\x00\x01\ \x57\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x0c\x00\x50\x00\x6f\x00\x68\x00\x6c\x00\ \x65\x00\x64\x05\x00\x05\xcf\xc7\x01\x03\x00\x00\x00\x0e\x00\x26\ \x00\x53\x00\x6f\x00\x75\x00\x62\x00\x6f\x00\x72\x05\x00\x2a\xd0\ \x25\x01\x03\x00\x00\x00\x0c\x00\x26\x00\x4b\x00\x6f\x00\x6e\x00\ \x65\x00\x63\x05\x00\x47\xdf\x04\x01\x03\x00\x00\x00\x0a\x00\x50\ \x00\x72\x00\x76\x00\x6e\x00\xed\x05\x00\x4d\x09\xa4\x01\x03\x00\ \x00\x00\x0a\x00\x54\x01\x59\x00\x65\x00\x74\x00\xed\x05\x00\x5a\ \xf0\x84\x01\x03\x00\x00\x00\x12\x00\x4a\x00\x61\x00\x79\x00\x7a\ \x00\x6b\x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\ \x03\x00\x00\x00\x12\x00\x4e\x00\x61\x00\x6b\x00\x6c\x00\x6f\x00\ \x6e\x01\x1b\x00\x6e\x00\xfd\x05\x05\x93\x08\xe5\x01\x03\x00\x00\ \x00\x0a\x00\x44\x00\x72\x00\x75\x00\x68\x00\xfd\x05\x05\x9b\xa6\ \x44\x01\x03\x00\x00\x00\x16\x00\x49\x00\x73\x00\x6f\x00\x6d\x00\ \x65\x00\x74\x00\x72\x00\x69\x00\x63\x00\x6b\x00\xfd\x05\x06\x3c\ \xe8\x53\x01\x03\x00\x00\x00\x18\x00\x50\x00\x65\x00\x72\x00\x73\ \x00\x70\x00\x65\x00\x6b\x00\x74\x00\x69\x00\x76\x00\x6e\x00\xed\ \x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\x0a\x01\x0c\x00\x65\x00\ \x73\x00\x6b\x00\xfd\x05\x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x22\ \x00\x55\x00\x6b\x00\xe1\x00\x7a\x00\x6b\x00\x61\x00\x20\x00\x6c\ \x00\x6f\x00\x6b\x00\x61\x00\x6c\x00\x69\x00\x7a\x00\x61\x00\x63\ \x00\x65\x05\x0e\x9f\xe7\x05\x01\x2f\x00\x00\x01\x3e\x00\x97\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\ \x4d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\x00\ \x00\x00\x03\x50\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x2a\x00\x47\xdf\x04\ \x00\x00\x00\x41\x00\x4d\x09\xa4\x00\x00\x00\x5c\x00\x5a\xf0\x84\ \x00\x00\x00\x75\x02\xf0\x8c\x31\x00\x00\x00\x90\x05\x93\x08\xe5\ \x00\x00\x00\xb1\x05\x9b\xa6\x44\x00\x00\x00\xc8\x06\x3c\xe8\x53\ \x00\x00\x00\xe3\x06\xec\x79\x65\x00\x00\x01\x04\x0c\x4e\x30\xd8\ \x00\x00\x01\x2b\x0e\x9f\xe7\x05\x00\x00\x01\x44\x69\x00\x00\x01\ \x8b\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x0e\x00\x41\x00\x6e\x00\x73\x00\x69\x00\ \x63\x00\x68\x00\x74\x05\x00\x05\xcf\xc7\x01\x03\x00\x00\x00\x0c\ \x00\x26\x00\x44\x00\x61\x00\x74\x00\x65\x00\x69\x05\x00\x2a\xd0\ \x25\x01\x03\x00\x00\x00\x10\x00\x42\x00\x65\x00\x26\x00\x65\x00\ \x6e\x00\x64\x00\x65\x00\x6e\x05\x00\x47\xdf\x04\x01\x03\x00\x00\ \x00\x0e\x00\x45\x00\x72\x00\x73\x00\x74\x00\x65\x00\x6e\x00\x73\ \x05\x00\x4d\x09\xa4\x01\x03\x00\x00\x00\x10\x00\x44\x00\x72\x00\ \x69\x00\x74\x00\x74\x00\x65\x00\x6e\x00\x73\x05\x00\x5a\xf0\x84\ \x01\x03\x00\x00\x00\x16\x00\x53\x00\x70\x00\x72\x00\x61\x00\x63\ \x00\x68\x00\x65\x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\ \x31\x01\x03\x00\x00\x00\x0c\x00\x53\x00\x63\x00\x68\x00\x69\x00\ \x65\x00\x66\x05\x05\x93\x08\xe5\x01\x03\x00\x00\x00\x10\x00\x5a\ \x00\x77\x00\x65\x00\x69\x00\x74\x00\x65\x00\x6e\x00\x73\x05\x05\ \x9b\xa6\x44\x01\x03\x00\x00\x00\x16\x00\x49\x00\x73\x00\x6f\x00\ \x6d\x00\x65\x00\x74\x00\x72\x00\x69\x00\x73\x00\x63\x00\x68\x05\ \x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x1c\x00\x50\x00\x65\x00\x72\ \x00\x73\x00\x70\x00\x65\x00\x6b\x00\x74\x00\x69\x00\x76\x00\x69\ \x00\x73\x00\x63\x00\x68\x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\ \x0e\x00\x44\x00\x65\x00\x75\x00\x74\x00\x73\x00\x63\x00\x68\x05\ \x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x3c\x00\x49\x00\x6e\x00\x74\ \x00\x65\x00\x72\x00\x6e\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\ \x00\x61\x00\x6c\x00\x69\x00\x73\x00\x69\x00\x65\x00\x72\x00\x75\ \x00\x6e\x00\x67\x00\x73\x00\x62\x00\x65\x00\x69\x00\x73\x00\x70\ \x00\x69\x00\x65\x00\x6c\x05\x0e\x9f\xe7\x05\x01\x2f\x00\x00\x01\ \x3e\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x0a\x4d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\x00\ \x00\x00\x03\x28\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x26\x00\x47\xdf\x04\ \x00\x00\x00\x3b\x00\x4d\x09\xa4\x00\x00\x00\x50\x00\x5a\xf0\x84\ \x00\x00\x00\x65\x02\xf0\x8c\x31\x00\x00\x00\x7a\x05\x93\x08\xe5\ \x00\x00\x00\x99\x05\x9b\xa6\x44\x00\x00\x00\xb2\x06\x3c\xe8\x53\ \x00\x00\x00\xcb\x06\xec\x79\x65\x00\x00\x00\xea\x0c\x4e\x30\xd8\ \x00\x00\x01\x0b\x0e\x9f\xe7\x05\x00\x00\x01\x26\x69\x00\x00\x01\ \x63\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x0a\x00\x56\x00\x69\x00\x73\x00\x74\x00\ \x61\x05\x00\x05\xcf\xc7\x01\x03\x00\x00\x00\x0a\x00\x26\x00\x46\ \x00\x69\x00\x6c\x00\x65\x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\ \x0a\x00\x26\x00\x45\x00\x73\x00\x63\x00\x69\x05\x00\x47\xdf\x04\ \x01\x03\x00\x00\x00\x0a\x00\x50\x00\x72\x00\x69\x00\x6d\x00\x6f\ \x05\x00\x4d\x09\xa4\x01\x03\x00\x00\x00\x0a\x00\x54\x00\x65\x00\ \x72\x00\x7a\x00\x6f\x05\x00\x5a\xf0\x84\x01\x03\x00\x00\x00\x14\ \x00\x4c\x00\x69\x00\x6e\x00\x67\x00\x75\x00\x61\x00\x3a\x00\x20\ \x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\x03\x00\x00\x00\x0e\x00\ \x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\x75\x00\x61\x05\x05\x93\ \x08\xe5\x01\x03\x00\x00\x00\x0e\x00\x53\x00\x65\x00\x63\x00\x6f\ \x00\x6e\x00\x64\x00\x6f\x05\x05\x9b\xa6\x44\x01\x03\x00\x00\x00\ \x14\x00\x49\x00\x73\x00\x6f\x00\x6d\x00\x65\x00\x74\x00\x72\x00\ \x69\x00\x63\x00\x61\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x16\ \x00\x50\x00\x72\x00\x6f\x00\x73\x00\x70\x00\x65\x00\x74\x00\x74\ \x00\x69\x00\x63\x00\x61\x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\ \x10\x00\x49\x00\x74\x00\x61\x00\x6c\x00\x69\x00\x61\x00\x6e\x00\ \x6f\x05\x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x32\x00\x45\x00\x73\ \x00\x65\x00\x6d\x00\x70\x00\x69\x00\x6f\x00\x20\x00\x64\x00\x69\ \x00\x20\x00\x6c\x00\x6f\x00\x63\x00\x61\x00\x6c\x00\x69\x00\x7a\ \x00\x7a\x00\x61\x00\x7a\x00\x69\x00\x6f\x00\x6e\x00\x65\x05\x0e\ \x9f\xe7\x05\x01\x2f\x00\x00\x01\x3e\x00\x97\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x4d\x61\x69\x6e\ \x57\x69\x6e\x64\x6f\x77\x00\ \x00\x00\x02\xe0\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x24\x00\x47\xdf\x04\ \x00\x00\x00\x39\x00\x4d\x09\xa4\x00\x00\x00\x4c\x00\x5a\xf0\x84\ \x00\x00\x00\x5d\x02\xf0\x8c\x31\x00\x00\x00\x70\x05\x93\x08\xe5\ \x00\x00\x00\x8d\x05\x9b\xa6\x44\x00\x00\x00\xa0\x06\x3c\xe8\x53\ \x00\x00\x00\xb3\x06\xec\x79\x65\x00\x00\x00\xca\x0c\x4e\x30\xd8\ \x00\x00\x00\xdf\x0e\x9f\xe7\x05\x00\x00\x00\xf8\x69\x00\x00\x01\ \x1b\x03\x00\x00\x00\x06\x00\x52\x00\x54\x00\x4c\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x08\x06\x45\x06\x31\x06\x26\x06\x49\x05\ \x00\x05\xcf\xc7\x01\x03\x00\x00\x00\x0a\x06\x27\x06\x44\x06\x45\ \x06\x44\x06\x41\x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\x08\x06\ \x23\x06\x2e\x06\x31\x06\x2c\x05\x00\x47\xdf\x04\x01\x03\x00\x00\ \x00\x06\x06\x23\x06\x48\x06\x44\x05\x00\x4d\x09\xa4\x01\x03\x00\ \x00\x00\x08\x06\x2b\x06\x27\x06\x44\x06\x2b\x05\x00\x5a\xf0\x84\ \x01\x03\x00\x00\x00\x12\x06\x27\x06\x44\x06\x44\x06\x3a\x06\x29\ \x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\x03\x00\ \x00\x00\x08\x06\x45\x06\x35\x06\x45\x06\x2a\x05\x05\x93\x08\xe5\ \x01\x03\x00\x00\x00\x08\x06\x2b\x06\x27\x06\x46\x06\x49\x05\x05\ \x9b\xa6\x44\x01\x03\x00\x00\x00\x0c\x06\x45\x06\x2a\x06\x45\x06\ \x27\x06\x2b\x06\x44\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x0a\ \x06\x45\x06\x46\x06\x38\x06\x48\x06\x31\x05\x06\xec\x79\x65\x01\ \x03\x00\x00\x00\x0e\x06\x27\x06\x44\x06\x39\x06\x31\x06\x28\x06\ \x4a\x06\x29\x05\x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x18\x06\x45\ \x06\x2b\x06\x27\x06\x44\x00\x20\x06\x27\x06\x44\x06\x2a\x06\x2f\ \x06\x48\x06\x4a\x06\x44\x05\x0e\x9f\xe7\x05\x01\x2f\x00\x00\x01\ \x3e\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x0a\x4d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\x00\ \x00\x00\x02\xbc\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x20\x00\x47\xdf\x04\ \x00\x00\x00\x37\x00\x4d\x09\xa4\x00\x00\x00\x4e\x00\x5a\xf0\x84\ \x00\x00\x00\x5f\x02\xf0\x8c\x31\x00\x00\x00\x70\x05\x93\x08\xe5\ \x00\x00\x00\x87\x05\x9b\xa6\x44\x00\x00\x00\x98\x06\x3c\xe8\x53\ \x00\x00\x00\xa9\x06\xec\x79\x65\x00\x00\x00\xbc\x0c\x4e\x30\xd8\ \x00\x00\x00\xcf\x0e\x9f\xe7\x05\x00\x00\x00\xe2\x69\x00\x00\x00\ \xf7\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x04\x89\xc6\x56\xfe\x05\x00\x05\xcf\xc7\ \x01\x03\x00\x00\x00\x0c\x65\x87\x4e\xf6\x00\x5b\x00\x26\x00\x46\ \x00\x5d\x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\x0c\x90\x00\x51\ \xfa\x00\x5b\x00\x26\x00\x78\x00\x5d\x05\x00\x47\xdf\x04\x01\x03\ \x00\x00\x00\x06\x7b\x2c\x4e\x00\x4e\x2a\x05\x00\x4d\x09\xa4\x01\ \x03\x00\x00\x00\x06\x7b\x2c\x4e\x09\x4e\x2a\x05\x00\x5a\xf0\x84\ \x01\x03\x00\x00\x00\x0c\x8b\xed\x8a\x00\x00\x3a\x00\x20\x00\x25\ \x00\x31\x05\x02\xf0\x8c\x31\x01\x03\x00\x00\x00\x06\x65\x9c\x62\ \x95\x5f\x71\x05\x05\x93\x08\xe5\x01\x03\x00\x00\x00\x06\x7b\x2c\ \x4e\x8c\x4e\x2a\x05\x05\x9b\xa6\x44\x01\x03\x00\x00\x00\x08\x7b\ \x49\x89\xd2\x62\x95\x5f\x71\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\ \x00\x08\x90\x0f\x89\xc6\x62\x95\x5f\x71\x05\x06\xec\x79\x65\x01\ \x03\x00\x00\x00\x08\x7b\x80\x4f\x53\x4e\x2d\x65\x87\x05\x0c\x4e\ \x30\xd8\x01\x03\x00\x00\x00\x0a\x56\xfd\x96\x45\x53\x16\x83\x03\ \x4f\x8b\x05\x0e\x9f\xe7\x05\x01\x2f\x00\x00\x01\x3e\x00\x97\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\ \x4d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\x00\ \x00\x00\x02\xd2\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x24\x00\x47\xdf\x04\ \x00\x00\x00\x3f\x00\x4d\x09\xa4\x00\x00\x00\x56\x00\x5a\xf0\x84\ \x00\x00\x00\x67\x02\xf0\x8c\x31\x00\x00\x00\x78\x05\x93\x08\xe5\ \x00\x00\x00\x8f\x05\x9b\xa6\x44\x00\x00\x00\xa4\x06\x3c\xe8\x53\ \x00\x00\x00\xb5\x06\xec\x79\x65\x00\x00\x00\xca\x0c\x4e\x30\xd8\ \x00\x00\x00\xdb\x0e\x9f\xe7\x05\x00\x00\x00\xec\x69\x00\x00\x01\ \x0d\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x08\x88\x68\x79\x3a\x65\xb9\x5f\x0f\x05\ \x00\x05\xcf\xc7\x01\x03\x00\x00\x00\x10\x30\xd5\x30\xa1\x30\xa4\ \x30\xeb\x00\x28\x00\x26\x00\x46\x00\x29\x05\x00\x2a\xd0\x25\x01\ \x03\x00\x00\x00\x0c\x7d\x42\x4e\x86\x00\x28\x00\x26\x00\x58\x00\ \x29\x05\x00\x47\xdf\x04\x01\x03\x00\x00\x00\x06\x7b\x2c\x4e\x00\ \x88\x4c\x05\x00\x4d\x09\xa4\x01\x03\x00\x00\x00\x06\x7b\x2c\x4e\ \x09\x88\x4c\x05\x00\x5a\xf0\x84\x01\x03\x00\x00\x00\x0c\x8a\x00\ \x8a\x9e\x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\ \x03\x00\x00\x00\x0a\x65\x9c\x30\x81\x62\x95\x5f\x71\x6c\xd5\x05\ \x05\x93\x08\xe5\x01\x03\x00\x00\x00\x06\x7b\x2c\x4e\x8c\x88\x4c\ \x05\x05\x9b\xa6\x44\x01\x03\x00\x00\x00\x0a\x7b\x49\x89\xd2\x62\ \x95\x5f\x71\x6c\xd5\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x06\ \x90\x60\x8f\xd1\x6c\xd5\x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\ \x06\x65\xe5\x67\x2c\x8a\x9e\x05\x0c\x4e\x30\xd8\x01\x03\x00\x00\ \x00\x16\x56\xfd\x96\x9b\x53\x16\x00\x28\x00\x69\x00\x31\x00\x38\ \x00\x6e\x00\x29\x30\x6e\x4f\x8b\x05\x0e\x9f\xe7\x05\x01\x2f\x00\ \x00\x01\x3e\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x0a\x4d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\ \x00\ \x00\x00\x03\x26\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x22\x00\x47\xdf\x04\ \x00\x00\x00\x35\x00\x4d\x09\xa4\x00\x00\x00\x4a\x00\x5a\xf0\x84\ \x00\x00\x00\x61\x02\xf0\x8c\x31\x00\x00\x00\x78\x05\x93\x08\xe5\ \x00\x00\x00\x93\x05\x9b\xa6\x44\x00\x00\x00\xaa\x06\x3c\xe8\x53\ \x00\x00\x00\xc1\x06\xec\x79\x65\x00\x00\x00\xe8\x0c\x4e\x30\xd8\ \x00\x00\x01\x09\x0e\x9f\xe7\x05\x00\x00\x01\x22\x69\x00\x00\x01\ \x61\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x06\x04\x12\x04\x38\x04\x34\x05\x00\x05\ \xcf\xc7\x01\x03\x00\x00\x00\x08\x04\x24\x04\x30\x04\x39\x04\x3b\ \x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\x0a\x04\x12\x04\x4b\x04\ \x45\x04\x3e\x04\x34\x05\x00\x47\xdf\x04\x01\x03\x00\x00\x00\x0c\ \x04\x1f\x04\x35\x04\x40\x04\x32\x04\x4b\x04\x39\x05\x00\x4d\x09\ \xa4\x01\x03\x00\x00\x00\x0c\x04\x22\x04\x40\x04\x35\x04\x42\x04\ \x38\x04\x39\x05\x00\x5a\xf0\x84\x01\x03\x00\x00\x00\x10\x04\x2f\ \x04\x37\x04\x4b\x04\x3a\x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\ \xf0\x8c\x31\x01\x03\x00\x00\x00\x0c\x04\x1a\x04\x43\x04\x40\x04\ \x41\x04\x38\x04\x32\x05\x05\x93\x08\xe5\x01\x03\x00\x00\x00\x0c\ \x04\x12\x04\x42\x04\x3e\x04\x40\x04\x3e\x04\x39\x05\x05\x9b\xa6\ \x44\x01\x03\x00\x00\x00\x1c\x04\x18\x04\x37\x04\x3e\x04\x3c\x04\ \x35\x04\x42\x04\x40\x04\x38\x04\x47\x04\x35\x04\x41\x04\x3a\x04\ \x38\x04\x39\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x16\x04\x1f\ \x04\x35\x04\x40\x04\x41\x04\x3f\x04\x35\x04\x3a\x04\x42\x04\x38\ \x04\x32\x04\x30\x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\x0e\x04\ \x20\x04\x43\x04\x41\x04\x41\x04\x3a\x04\x38\x04\x39\x05\x0c\x4e\ \x30\xd8\x01\x03\x00\x00\x00\x34\x04\x1f\x04\x40\x04\x38\x04\x3c\ \x04\x35\x04\x40\x00\x20\x04\x38\x04\x3d\x04\x42\x04\x35\x04\x40\ \x04\x3d\x04\x30\x04\x46\x04\x38\x04\x3d\x04\x3e\x04\x30\x04\x3b\ \x04\x38\x04\x37\x04\x30\x04\x46\x04\x38\x04\x38\x05\x0e\x9f\xe7\ \x05\x01\x2f\x00\x00\x01\x3e\x00\x97\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x4d\x61\x69\x6e\x57\x69\ \x6e\x64\x6f\x77\x00\ \x00\x00\x03\x2a\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x24\x00\x47\xdf\x04\ \x00\x00\x00\x39\x00\x4d\x09\xa4\x00\x00\x00\x4e\x00\x5a\xf0\x84\ \x00\x00\x00\x63\x02\xf0\x8c\x31\x00\x00\x00\x78\x05\x93\x08\xe5\ \x00\x00\x00\x9b\x05\x9b\xa6\x44\x00\x00\x00\xb4\x06\x3c\xe8\x53\ \x00\x00\x00\xcb\x06\xec\x79\x65\x00\x00\x00\xe8\x0c\x4e\x30\xd8\ \x00\x00\x01\x09\x0e\x9f\xe7\x05\x00\x00\x01\x22\x69\x00\x00\x01\ \x65\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x08\x00\x56\x00\x69\x00\x65\x00\x77\x05\ \x00\x05\xcf\xc7\x01\x03\x00\x00\x00\x0a\x00\x26\x00\x46\x00\x69\ \x00\x6c\x00\x65\x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\x0a\x00\ \x45\x00\x26\x00\x78\x00\x69\x00\x74\x05\x00\x47\xdf\x04\x01\x03\ \x00\x00\x00\x0a\x00\x46\x00\x69\x00\x72\x00\x73\x00\x74\x05\x00\ \x4d\x09\xa4\x01\x03\x00\x00\x00\x0a\x00\x54\x00\x68\x00\x69\x00\ \x72\x00\x64\x05\x00\x5a\xf0\x84\x01\x03\x00\x00\x00\x18\x00\x4c\ \x00\x61\x00\x6e\x00\x67\x00\x75\x00\x61\x00\x67\x00\x65\x00\x3a\ \x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\x03\x00\x00\x00\ \x0e\x00\x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\x75\x00\x65\x05\ \x05\x93\x08\xe5\x01\x03\x00\x00\x00\x0c\x00\x53\x00\x65\x00\x63\ \x00\x6f\x00\x6e\x00\x64\x05\x05\x9b\xa6\x44\x01\x03\x00\x00\x00\ \x12\x00\x49\x00\x73\x00\x6f\x00\x6d\x00\x65\x00\x74\x00\x72\x00\ \x69\x00\x63\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\x00\x16\x00\x50\ \x00\x65\x00\x72\x00\x73\x00\x70\x00\x65\x00\x63\x00\x74\x00\x69\ \x00\x76\x00\x65\x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\x0e\x00\ \x45\x00\x6e\x00\x67\x00\x6c\x00\x69\x00\x73\x00\x68\x05\x0c\x4e\ \x30\xd8\x01\x03\x00\x00\x00\x38\x00\x49\x00\x6e\x00\x74\x00\x65\ \x00\x72\x00\x6e\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x61\ \x00\x6c\x00\x69\x00\x7a\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\ \x00\x20\x00\x45\x00\x78\x00\x61\x00\x6d\x00\x70\x00\x6c\x00\x65\ \x05\x0e\x9f\xe7\x05\x01\x2f\x00\x00\x01\x3e\x00\x97\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x4d\x61\ \x69\x6e\x57\x69\x6e\x64\x6f\x77\x00\ \x00\x00\x02\xb2\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x20\x00\x47\xdf\x04\ \x00\x00\x00\x33\x00\x4d\x09\xa4\x00\x00\x00\x46\x00\x5a\xf0\x84\ \x00\x00\x00\x57\x02\xf0\x8c\x31\x00\x00\x00\x68\x05\x93\x08\xe5\ \x00\x00\x00\x81\x05\x9b\xa6\x44\x00\x00\x00\x90\x06\x3c\xe8\x53\ \x00\x00\x00\xa1\x06\xec\x79\x65\x00\x00\x00\xb2\x0c\x4e\x30\xd8\ \x00\x00\x00\xc5\x0e\x9f\xe7\x05\x00\x00\x00\xd6\x69\x00\x00\x00\ \xed\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x04\xbc\xf4\xae\x30\x05\x00\x05\xcf\xc7\ \x01\x03\x00\x00\x00\x08\xd3\x0c\xc7\x7c\x00\x26\x00\x46\x05\x00\ \x2a\xd0\x25\x01\x03\x00\x00\x00\x08\xc8\x85\xb8\xcc\x00\x26\x00\ \x58\x05\x00\x47\xdf\x04\x01\x03\x00\x00\x00\x06\xcc\xab\xbc\x88\ \xc9\xf8\x05\x00\x4d\x09\xa4\x01\x03\x00\x00\x00\x06\xc1\x38\xbc\ \x88\xc9\xf8\x05\x00\x5a\xf0\x84\x01\x03\x00\x00\x00\x0e\xc5\xb8\ \xc5\xb4\x00\x20\x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\ \x31\x01\x03\x00\x00\x00\x04\xbe\x57\xac\x01\x05\x05\x93\x08\xe5\ \x01\x03\x00\x00\x00\x06\xb4\x50\xbc\x88\xc9\xf8\x05\x05\x9b\xa6\ \x44\x01\x03\x00\x00\x00\x06\xb4\xf1\xce\x21\xb3\xc4\x05\x06\x3c\ \xe8\x53\x01\x03\x00\x00\x00\x08\xc6\xd0\xad\xfc\xd6\x54\xbc\x95\ \x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\x06\xd5\x5c\xad\x6d\xc5\ \xb4\x05\x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x0c\xad\x6d\xc8\x1c\ \xd6\x54\x00\x20\xc6\x08\xc8\x1c\x05\x0e\x9f\xe7\x05\x01\x2f\x00\ \x00\x01\x3e\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x0a\x4d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\ \x00\ \x00\x00\x03\x2e\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x24\x00\x47\xdf\x04\ \x00\x00\x00\x3b\x00\x4d\x09\xa4\x00\x00\x00\x56\x00\x5a\xf0\x84\ \x00\x00\x00\x6d\x02\xf0\x8c\x31\x00\x00\x00\x84\x05\x93\x08\xe5\ \x00\x00\x00\xa1\x05\x9b\xa6\x44\x00\x00\x00\xb6\x06\x3c\xe8\x53\ \x00\x00\x00\xcb\x06\xec\x79\x65\x00\x00\x00\xec\x0c\x4e\x30\xd8\ \x00\x00\x01\x0d\x0e\x9f\xe7\x05\x00\x00\x01\x26\x69\x00\x00\x01\ \x69\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x08\x00\x56\x00\x69\x00\x73\x00\x61\x05\ \x00\x05\xcf\xc7\x01\x03\x00\x00\x00\x0c\x00\x26\x00\x41\x00\x72\ \x00\x6b\x00\x69\x00\x76\x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\ \x10\x00\x26\x00\x41\x00\x76\x00\x73\x00\x6c\x00\x75\x00\x74\x00\ \x61\x05\x00\x47\xdf\x04\x01\x03\x00\x00\x00\x0c\x00\x46\x00\xf6\ \x00\x72\x00\x73\x00\x74\x00\x61\x05\x00\x4d\x09\xa4\x01\x03\x00\ \x00\x00\x0c\x00\x54\x00\x72\x00\x65\x00\x64\x00\x6a\x00\x65\x05\ \x00\x5a\xf0\x84\x01\x03\x00\x00\x00\x12\x00\x53\x00\x70\x00\x72\ \x00\xe5\x00\x6b\x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\ \x31\x01\x03\x00\x00\x00\x0a\x00\x53\x00\x6b\x00\x65\x00\x76\x00\ \x74\x05\x05\x93\x08\xe5\x01\x03\x00\x00\x00\x0a\x00\x41\x00\x6e\ \x00\x64\x00\x72\x00\x61\x05\x05\x9b\xa6\x44\x01\x03\x00\x00\x00\ \x16\x00\x49\x00\x73\x00\x6f\x00\x6d\x00\x65\x00\x74\x00\x72\x00\ \x69\x00\x73\x00\x6b\x00\x74\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\ \x00\x16\x00\x50\x00\x65\x00\x72\x00\x73\x00\x70\x00\x65\x00\x6b\ \x00\x74\x00\x69\x00\x76\x00\x74\x05\x06\xec\x79\x65\x01\x03\x00\ \x00\x00\x0e\x00\x53\x00\x76\x00\x65\x00\x6e\x00\x73\x00\x6b\x00\ \x61\x05\x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x38\x00\x49\x00\x6e\ \x00\x74\x00\x65\x00\x72\x00\x6e\x00\x61\x00\x74\x00\x69\x00\x6f\ \x00\x6e\x00\x61\x00\x6c\x00\x69\x00\x73\x00\x65\x00\x72\x00\x69\ \x00\x6e\x00\x67\x00\x73\x00\x65\x00\x78\x00\x65\x00\x6d\x00\x70\ \x00\x65\x00\x6c\x05\x0e\x9f\xe7\x05\x01\x2f\x00\x00\x01\x3e\x00\ \x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x0a\x4d\x61\x69\x6e\x57\x69\x6e\x64\x6f\x77\x00\ \x00\x00\x03\x24\ \x3c\ \xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\x42\ \x00\x00\x00\x68\x00\x00\x51\x92\x00\x00\x00\x00\x00\x05\xcf\xc7\ \x00\x00\x00\x11\x00\x2a\xd0\x25\x00\x00\x00\x22\x00\x47\xdf\x04\ \x00\x00\x00\x3b\x00\x4d\x09\xa4\x00\x00\x00\x54\x00\x5a\xf0\x84\ \x00\x00\x00\x69\x02\xf0\x8c\x31\x00\x00\x00\x7e\x05\x93\x08\xe5\ \x00\x00\x00\x9d\x05\x9b\xa6\x44\x00\x00\x00\xb4\x06\x3c\xe8\x53\ \x00\x00\x00\xcd\x06\xec\x79\x65\x00\x00\x00\xec\x0c\x4e\x30\xd8\ \x00\x00\x01\x09\x0e\x9f\xe7\x05\x00\x00\x01\x24\x69\x00\x00\x01\ \x5f\x03\x00\x00\x00\x06\x00\x4c\x00\x54\x00\x52\x05\x00\x00\x51\ \x92\x01\x03\x00\x00\x00\x06\x03\x8c\x03\xc8\x03\xb7\x05\x00\x05\ \xcf\xc7\x01\x03\x00\x00\x00\x0e\x00\x26\x03\x91\x03\xc1\x03\xc7\ \x03\xb5\x03\xaf\x03\xbf\x05\x00\x2a\xd0\x25\x01\x03\x00\x00\x00\ \x0e\x03\x88\x00\x26\x03\xbe\x03\xbf\x03\xb4\x03\xbf\x03\xc2\x05\ \x00\x47\xdf\x04\x01\x03\x00\x00\x00\x0a\x03\xa0\x03\xc1\x03\xce\ \x03\xc4\x03\xbf\x05\x00\x4d\x09\xa4\x01\x03\x00\x00\x00\x0a\x03\ \xa4\x03\xc1\x03\xaf\x03\xc4\x03\xbf\x05\x00\x5a\xf0\x84\x01\x03\ \x00\x00\x00\x14\x03\x93\x03\xbb\x03\xce\x03\xc3\x03\xc3\x03\xb1\ \x00\x3a\x00\x20\x00\x25\x00\x31\x05\x02\xf0\x8c\x31\x01\x03\x00\ \x00\x00\x0c\x03\xa0\x03\xbb\x03\xac\x03\xb3\x03\xb9\x03\xb1\x05\ \x05\x93\x08\xe5\x01\x03\x00\x00\x00\x0e\x03\x94\x03\xb5\x03\xcd\ \x03\xc4\x03\xb5\x03\xc1\x03\xbf\x05\x05\x9b\xa6\x44\x01\x03\x00\ \x00\x00\x14\x03\x99\x03\xc3\x03\xbf\x03\xbc\x03\xb5\x03\xc4\x03\ \xc1\x03\xb9\x03\xba\x03\xae\x05\x06\x3c\xe8\x53\x01\x03\x00\x00\ \x00\x12\x03\xa0\x03\xc1\x03\xbf\x03\xbf\x03\xc0\x03\xc4\x03\xb9\ \x03\xba\x03\xae\x05\x06\xec\x79\x65\x01\x03\x00\x00\x00\x10\x03\ \x95\x03\xbb\x03\xbb\x03\xb7\x03\xbd\x03\xb9\x03\xba\x03\xac\x05\ \x0c\x4e\x30\xd8\x01\x03\x00\x00\x00\x30\x03\xa0\x03\xb1\x03\xc1\ \x03\xac\x03\xb4\x03\xb5\x03\xb9\x03\xb3\x03\xbc\x03\xb1\x00\x20\ \x03\xb4\x03\xb9\x03\xb5\x03\xb8\x03\xbd\x03\xbf\x03\xc0\x03\xbf\ \x03\xaf\x03\xb7\x03\xc3\x03\xb7\x03\xc2\x05\x0e\x9f\xe7\x05\x01\ \x2f\x00\x00\x01\x3e\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x0a\x4d\x61\x69\x6e\x57\x69\x6e\x64\ \x6f\x77\x00\ " qt_resource_name = b"\ \x00\x0c\ \x0d\xfc\x11\x13\ \x00\x74\ \x00\x72\x00\x61\x00\x6e\x00\x73\x00\x6c\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x73\ \x00\x0a\ \x04\x68\xac\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x6e\x00\x6f\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x59\xac\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x65\x00\x6f\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x50\xdc\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x66\x00\x72\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x57\xec\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x63\x00\x73\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x58\x0c\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x64\x00\x65\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x6d\xfc\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x69\x00\x74\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x55\xdc\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x61\x00\x72\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x7d\x3c\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x7a\x00\x68\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x6c\xbc\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x6a\x00\x70\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x65\x0c\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x72\x00\x75\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x59\x9c\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x65\x00\x6e\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x6f\xac\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x6b\x00\x6f\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x67\x1c\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x73\x00\x76\x00\x2e\x00\x71\x00\x6d\ \x00\x0a\ \x04\x56\x7c\x9d\ \x00\x69\ \x00\x31\x00\x38\x00\x6e\x00\x5f\x00\x65\x00\x6c\x00\x2e\x00\x71\x00\x6d\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x02\ \x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x06\x52\ \x00\x00\x00\xba\x00\x00\x00\x00\x00\x01\x00\x00\x13\x42\ \x00\x00\x01\x70\x00\x00\x00\x00\x00\x01\x00\x00\x27\xfc\ \x00\x00\x00\x6c\x00\x00\x00\x00\x00\x01\x00\x00\x09\xa2\ \x00\x00\x00\x86\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xc2\ \x00\x00\x01\x22\x00\x00\x00\x00\x00\x01\x00\x00\x1e\xe6\ \x00\x00\x00\x38\x00\x00\x00\x00\x00\x01\x00\x00\x03\x28\ \x00\x00\x01\x08\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xbc\ \x00\x00\x01\x56\x00\x00\x00\x00\x00\x01\x00\x00\x24\xca\ \x00\x00\x00\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\xee\x00\x00\x00\x00\x00\x01\x00\x00\x18\xe6\ \x00\x00\x00\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x10\x16\ \x00\x00\x01\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x22\x14\ \x00\x00\x00\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x16\x26\ " 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() PyQt5_gpl-5.10.1/examples/tools/i18n/translations/0000755000076500000240000000000013245231431021755 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_ar.qm0000644000076500000240000000134013245231431023553 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%$Gß9M ¤LZð„]ðŒ1p“囦D <èS³ìyeÊ N0ØßŸçøiRTLQ’E1&IÏÇ 'DEDA*Ð%#.1,Gß#HDM ¤+'D+Zð„'DD:): %1ðŒ1E5E*“å+'FI›¦D E*E'+D<èS EF8H1ìye'D91(J) N0ØE+'D 'D*/HJDŸç/>— MainWindowPyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_ar.ts0000644000076500000240000000273713245231431023577 0ustar philstaff00000000000000 MainWindow First أول Internationalization Example مثال التدويل Isometric متماثل Language: %1 اللغة: %1 English العربية Oblique مصمت Perspective منظور Second ثانى Third ثالث View مرئى E&xit أخرج &File المل٠LTR RTL PyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_cs.qm0000644000076500000240000000143413245231431023562 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%(GßAM ¤XZð„mðŒ1‚“埛¦D¼<èSÑìyeò N0ØŸç*iWLTRQ’ PohledÏÇ&Soubor*Ð% &KonecGß PrvníM ¤ TYetíZð„Jayzk: %1ðŒ1Naklonný“å Druhý›¦DIsometrický<èSPerspektivníìye  eský N0Ø"Ukázka lokalizaceŸç/>— MainWindowPyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_cs.ts0000644000076500000240000000272213245231431023574 0ustar philstaff00000000000000 MainWindow View Pohled &File &Soubor E&xit &Konec First První Third TÅ™etí Language: %1 Jayzk: %1 English ÄŒeský Oblique NaklonÄ›ný Second Druhý Isometric Isometrický Perspective Perspektivní Internationalization Example Ukázka lokalizace LTR LTR PyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_de.qm0000644000076500000240000000152013245231431023541 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%*GßAM ¤\Zð„uðŒ1“å±›¦DÈ<èSãìye N0Ø+ŸçDi‹LTRQ’AnsichtÏÇ &Datei*Ð%Be&endenGßErstensM ¤DrittensZð„Sprache: %1ðŒ1 Schief“åZweitens›¦DIsometrisch<èSPerspektivischìyeDeutsch N0Ø<InternationalisierungsbeispielŸç/>— MainWindowPyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_de.ts0000644000076500000240000000274113245231431023560 0ustar philstaff00000000000000 MainWindow View Ansicht &File &Datei E&xit Be&enden First Erstens Third Drittens English Deutsch Language: %1 Sprache: %1 Oblique Schief Second Zweitens Isometric Isometrisch Perspective Perspektivisch Internationalization Example Internationalisierungsbeispiel LTR LTR PyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_el.qm0000644000076500000240000000144413245231431023556 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%"Gß;M ¤TZð„iðŒ1~“囦D´<èSÍìyeì N0Ø Ÿç$i_LTRQ’ŒÈ·ÏÇ&‘Áǵ¯¿*Ð%ˆ&¾¿´¿ÂGß  ÁÎÄ¿M ¤ ¤Á¯Ä¿Zð„“»ÎÃñ: %1ðŒ1  »¬³¹±“唵ÍĵÁ¿›¦D™Ã¿¼µÄÁ¹º®<èS Á¿¿ÀĹº®ìye•»»·½¹º¬ N0Ø0 ±Á¬´µ¹³¼± ´¹µ¸½¿À¿¯·Ã·ÂŸç/>— MainWindowPyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_el.ts0000644000076500000240000000305113245231431023563 0ustar philstaff00000000000000 MainWindow &File &ΑÏχείο E&xit Έ&ξοδος First ΠÏώτο Internationalization Example ΠαÏάδειγμα διεθνοποίησης Isometric ΙσομετÏική Language: %1 Γλώσσα: %1 English Ελληνικά Oblique Πλάγια Perspective ΠÏοοπτική Second ΔεÏτεÏο Third ΤÏίτο View Όψη LTR LTR PyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_en.qm0000644000076500000240000000145213245231431023557 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%$Gß9M ¤NZð„cðŒ1x“å››¦D´<èSËìyeè N0Ø Ÿç"ieLTRQ’ViewÏÇ &File*Ð% E&xitGß FirstM ¤ ThirdZð„Language: %1ðŒ1Oblique“å Second›¦DIsometric<èSPerspectiveìyeEnglish N0Ø8Internationalization ExampleŸç/>— MainWindowPyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_en.ts0000644000076500000240000000271613245231431023574 0ustar philstaff00000000000000 MainWindow E&xit E&xit &File &File Internationalization Example Internationalization Example Language: %1 Language: %1 English English View View Perspective Perspective Isometric Isometric Oblique Oblique First First Second Second Third Third LTR LTR PyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_eo.qm0000644000076500000240000000144613245231431023563 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%*GßEM ¤ZZð„mðŒ1€“埛¦D¸<èSÉìyeæ N0ØŸç$iaLTRQ’AspektoÏÇ&Dosiero*Ð% &FiniGßUnueM ¤TrieZð„Lingvo: %1ðŒ1Oblikva“åDue›¦DIsometria<èSPerspektivaìyeEsperanto N0Ø2Ekzemplo pri internaciigoŸç/>— MainWindowPyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_eo.ts0000644000076500000240000000271413245231431023573 0ustar philstaff00000000000000 MainWindow &File &Dosiero First Unue Internationalization Example Ekzemplo pri internaciigo Isometric Isometria Language: %1 Lingvo: %1 English Esperanto Oblique Oblikva Perspective Perspektiva Second Due Third Trie View Aspekto E&xit &Fini LTR LTR PyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_fr.qm0000644000076500000240000000151413245231431023563 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%"Gß=M ¤XZð„qðŒ1ޓ坛¦DÈ<èSãìye N0Ø%Ÿç@i‡LTRQ’VueÏÇ&Fichier*Ð%&QuitterGßPremierM ¤TroisièmeZð„Langue : %1ðŒ1Oblique“åDeuxième›¦DIsométrique<èSPerspectiveìyeFrançais N0Ø<Exemple d'internationalisationŸç/>— MainWindowPyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_fr.ts0000644000076500000240000000275013245231431023577 0ustar philstaff00000000000000 MainWindow View Vue &File &Fichier E&xit &Quitter First Premier Third Troisième Language: %1 Langue : %1 English Français Oblique Oblique Second Deuxième Isometric Isométrique Perspective Perspective Internationalization Example Exemple d'internationalisation LTR LTR PyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_it.qm0000644000076500000240000000145013245231431023567 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%&Gß;M ¤PZð„eðŒ1z“å™›¦D²<èSËìyeê N0Ø Ÿç&icLTRQ’ VistaÏÇ &File*Ð% &EsciGß PrimoM ¤ TerzoZð„Lingua: %1ðŒ1Obliqua“åSecondo›¦DIsometrica<èSProspetticaìyeItaliano N0Ø2Esempio di localizzazioneŸç/>— MainWindowPyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_it.ts0000644000076500000240000000271513245231431023605 0ustar philstaff00000000000000 MainWindow First Primo Internationalization Example Esempio di localizzazione Isometric Isometrica Language: %1 Lingua: %1 English Italiano Oblique Obliqua Perspective Prospettica Second Secondo Third Terzo View Vista E&xit &Esci &File &File LTR LTR PyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_jp.qm0000644000076500000240000000132213245231431023562 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%$Gß?M ¤VZð„gðŒ1x“囦D¤<èSµìyeÊ N0ØÛŸçìi LTRQ’ˆhy:e¹_ÏÇ0Õ0¡0¤0ë(&F)*Ð% }BN†(&X)Gß{,NˆLM ¤{,N ˆLZð„ ŠŠž: %1ðŒ1 eœ0b•_qlÕ“å{,NŒˆL›¦D {I‰Òb•_qlÕ<èS`ÑlÕìyeeåg,Šž N0ØVý–›S(i18n)0nO‹Ÿç/>— MainWindowPyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_jp.ts0000644000076500000240000000276613245231431023610 0ustar philstaff00000000000000 MainWindow &File ファイル(&F) E&xit 終了(&X) First 第一行 Internationalization Example 国際化(i18n)ã®ä¾‹ Isometric 等角投影法 Language: %1 言語: %1 English 日本語 Oblique æ–œã‚æŠ•å½±æ³• Perspective é è¿‘法 Second 第二行 Third 第三行 View è¡¨ç¤ºæ–¹å¼ LTR LTR PyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_ko.qm0000644000076500000240000000126213245231431023565 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð% Gß3M ¤FZð„WðŒ1h“囦D<èS¡ìye² N0ØÅŸçÖiíLTRQ’¼ô®0ÏÇÓ Ç|&F*Ð%È…¸Ì&XGßÌ«¼ˆÉøM ¤Á8¼ˆÉøZð„ŸŴ : %1ðŒ1¾W¬“å´P¼ˆÉø›¦D´ñÎ!³Ä<èSÆÐ­üÖT¼•ìyeÕ\­mÅ´ N0Ø ­mÈÖT ÆÈŸç/>— MainWindowPyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_ko.ts0000644000076500000240000000272613245231431023604 0ustar philstaff00000000000000 MainWindow &File 파ì¼&F E&xit 종료&X First 첫번째 Internationalization Example 국제화 예제 Isometric ë“±ì¸¡ë„ Language: %1 언어 : %1 English 한국어 Oblique ë¹—ê° Perspective ì›ê·¼í™”법 Second ë‘번째 Third 세번째 View 보기 LTR LTR PyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_no.qm0000644000076500000240000000144413245231431023572 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%"Gß5M ¤PZð„gðŒ1~“å››¦D²<èSÇìyeæ N0ØŸçi_LTRQ’VisÏÇ&Fil*Ð%&AvsluttGß FørsteM ¤ TredjeZð„Språk: %1ðŒ1 Skjevt“å Andre›¦DIsometrisk<èSPerspektivìye Norsk N0Ø:InternasjonaliseringseksempelŸç/>— MainWindowPyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_no.ts0000644000076500000240000000271513245231431023605 0ustar philstaff00000000000000 MainWindow View Vis &File &Fil E&xit &Avslutt First Første Third Tredje Language: %1 SprÃ¥k: %1 English Norsk Oblique Skjevt Second Andre Isometric Isometrisk Perspective Perspektiv Internationalization Example Internasjonaliseringseksempel LTR LTR PyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_pt.qm0000644000076500000240000000150613245231431023600 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%&GßAM ¤VZð„qðŒ1Œ“å«›¦DÄ<èSÝìyeü N0ØŸç:iLTRQ’ VisãoÏÇ&Arquivo*Ð% &SairGßPrimeiroM ¤TerceiroZð„Idioma: %1ðŒ1Oblíquo“åSegundo›¦DIsométrico<èSPerspectivaìyePortuguês N0Ø<Exemplo de InternacionalizaçãoŸç/>— MainWindowPyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_pt.ts0000644000076500000240000000274213245231431023614 0ustar philstaff00000000000000 MainWindow E&xit &Sair &File &Arquivo Internationalization Example Exemplo de Internacionalização Language: %1 Idioma: %1 English Português View Visão Perspective Perspectiva Isometric Isométrico Oblique Oblíquo First Primeiro Second Segundo Third Terceiro LTR LTR PyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_ru.qm0000644000076500000240000000144613245231431023606 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%"Gß5M ¤JZð„aðŒ1x“å“›¦Dª<èSÁìyeè N0Ø Ÿç"iaLTRQ’84ÏÇ$09;*Ð% KE>4Gß 5@2K9M ¤ "@5B89Zð„/7K:: %1ðŒ1 C@A82“å B>@>9›¦D7><5B@8G5A:89<èS5@A?5:B820ìye CAA:89 N0Ø4@8<5@ 8=B5@=0F8=>0;870F88Ÿç/>— MainWindowPyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_ru.ts0000644000076500000240000000304513245231431023614 0ustar philstaff00000000000000 MainWindow View Вид &File Файл E&xit Выход First Первый Third Третий Language: %1 Язык: %1 English РуÑÑкий Oblique КурÑив Second Второй Isometric ИзометричеÑкий Perspective ПерÑпектива Internationalization Example Пример интернациноализации LTR LTR PyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_sv.qm0000644000076500000240000000145613245231431023611 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð%$Gß;M ¤VZð„mðŒ1„“å¡›¦D¶<èSËìyeì N0Ø Ÿç&iiLTRQ’VisaÏÇ &Arkiv*Ð%&AvslutaGß FörstaM ¤ TredjeZð„Språk: %1ðŒ1 Skevt“å Andra›¦DIsometriskt<èSPerspektivtìyeSvenska N0Ø8InternationaliseringsexempelŸç/>— MainWindowPyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_sv.ts0000644000076500000240000000272213245231431023617 0ustar philstaff00000000000000 MainWindow View Visa &File &Arkiv E&xit &Avsluta First Första Third Tredje Language: %1 SprÃ¥k: %1 English Svenska Oblique Skevt Second Andra Isometric Isometriskt Perspective Perspektivt Internationalization Example Internationaliseringsexempel LTR LTR PyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_zh.qm0000644000076500000240000000127413245231431023600 0ustar philstaff00000000000000<¸dÊÍ!¿`¡½ÝBhQ’ÏÇ*Ð% Gß7M ¤NZð„_ðŒ1p“凛¦D˜<èS©ìye¼ N0ØÏŸçâi÷LTRQ’‰ÆVþÏÇ e‡Nö[&F]*Ð% Qú[&x]Gß{,NN*M ¤{,N N*Zð„ ‹íŠ: %1ðŒ1eœb•_q“å{,NŒN*›¦D{I‰Òb•_q<èS‰Æb•_qìye{€OSN-e‡ N0Ø Vý–ESƒO‹Ÿç/>— MainWindowPyQt5_gpl-5.10.1/examples/tools/i18n/translations/i18n_zh.ts0000644000076500000240000000274113245231431023611 0ustar philstaff00000000000000 MainWindow View 视图 &File 文件[&F] E&xit 退出[&x] First 第一个 Third 第三个 Language: %1 语言: %1 English 简体中文 Oblique 斜投影 Second 第二个 Isometric 等角投影 Perspective é€è§†æŠ•å½± Internationalization Example 国际化范例 LTR LTR PyQt5_gpl-5.10.1/examples/tools/README0000644000076500000240000000152013245231431017333 0ustar philstaff00000000000000PyQt is equipped with a range of capable tool classes, from containers and iterators to classes for string handling and manipulation. Other classes provide application infrastructure support, handling plugin loading and managing configuration files. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/tools/regexp.py0000755000076500000240000001723413245231431020333 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QRegExp, Qt from PyQt5.QtGui import QPalette from PyQt5.QtWidgets import (QApplication, QCheckBox, QComboBox, QDialog, QGridLayout, QHBoxLayout, QLabel, QLineEdit, QSizePolicy) class RegExpDialog(QDialog): MaxCaptures = 6 def __init__(self, parent=None): super(RegExpDialog, self).__init__(parent) self.patternComboBox = QComboBox() self.patternComboBox.setEditable(True) self.patternComboBox.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) patternLabel = QLabel("&Pattern:") patternLabel.setBuddy(self.patternComboBox) self.escapedPatternLineEdit = QLineEdit() self.escapedPatternLineEdit.setReadOnly(True) palette = self.escapedPatternLineEdit.palette() palette.setBrush(QPalette.Base, palette.brush(QPalette.Disabled, QPalette.Base)) self.escapedPatternLineEdit.setPalette(palette) escapedPatternLabel = QLabel("&Escaped Pattern:") escapedPatternLabel.setBuddy(self.escapedPatternLineEdit) self.syntaxComboBox = QComboBox() self.syntaxComboBox.addItem("Regular expression v1", QRegExp.RegExp) self.syntaxComboBox.addItem("Regular expression v2", QRegExp.RegExp2) self.syntaxComboBox.addItem("Wildcard", QRegExp.Wildcard) self.syntaxComboBox.addItem("Fixed string", QRegExp.FixedString) syntaxLabel = QLabel("&Pattern Syntax:") syntaxLabel.setBuddy(self.syntaxComboBox) self.textComboBox = QComboBox() self.textComboBox.setEditable(True) self.textComboBox.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) textLabel = QLabel("&Text:") textLabel.setBuddy(self.textComboBox) self.caseSensitiveCheckBox = QCheckBox("Case &Sensitive") self.caseSensitiveCheckBox.setChecked(True) self.minimalCheckBox = QCheckBox("&Minimal") indexLabel = QLabel("Index of Match:") self.indexEdit = QLineEdit() self.indexEdit.setReadOnly(True) matchedLengthLabel = QLabel("Matched Length:") self.matchedLengthEdit = QLineEdit() self.matchedLengthEdit.setReadOnly(True) self.captureLabels = [] self.captureEdits = [] for i in range(self.MaxCaptures): self.captureLabels.append(QLabel("Capture %d:" % i)) self.captureEdits.append(QLineEdit()) self.captureEdits[i].setReadOnly(True) self.captureLabels[0].setText("Match:") checkBoxLayout = QHBoxLayout() checkBoxLayout.addWidget(self.caseSensitiveCheckBox) checkBoxLayout.addWidget(self.minimalCheckBox) checkBoxLayout.addStretch(1) mainLayout = QGridLayout() mainLayout.addWidget(patternLabel, 0, 0) mainLayout.addWidget(self.patternComboBox, 0, 1) mainLayout.addWidget(escapedPatternLabel, 1, 0) mainLayout.addWidget(self.escapedPatternLineEdit, 1, 1) mainLayout.addWidget(syntaxLabel, 2, 0) mainLayout.addWidget(self.syntaxComboBox, 2, 1) mainLayout.addLayout(checkBoxLayout, 3, 0, 1, 2) mainLayout.addWidget(textLabel, 4, 0) mainLayout.addWidget(self.textComboBox, 4, 1) mainLayout.addWidget(indexLabel, 5, 0) mainLayout.addWidget(self.indexEdit, 5, 1) mainLayout.addWidget(matchedLengthLabel, 6, 0) mainLayout.addWidget(self.matchedLengthEdit, 6, 1) for i in range(self.MaxCaptures): mainLayout.addWidget(self.captureLabels[i], 7 + i, 0) mainLayout.addWidget(self.captureEdits[i], 7 + i, 1) self.setLayout(mainLayout) self.patternComboBox.editTextChanged.connect(self.refresh) self.textComboBox.editTextChanged.connect(self.refresh) self.caseSensitiveCheckBox.toggled.connect(self.refresh) self.minimalCheckBox.toggled.connect(self.refresh) self.syntaxComboBox.currentIndexChanged.connect(self.refresh) self.patternComboBox.addItem("[A-Za-z_]+([A-Za-z_0-9]*)") self.textComboBox.addItem("(10 + delta4)* 32") self.setWindowTitle("RegExp") self.setFixedHeight(self.sizeHint().height()) self.refresh() def refresh(self): self.setUpdatesEnabled(False) pattern = self.patternComboBox.currentText() text = self.textComboBox.currentText() escaped = str(pattern) escaped.replace('\\', '\\\\') escaped.replace('"', '\\"') self.escapedPatternLineEdit.setText('"' + escaped + '"') rx = QRegExp(pattern) cs = Qt.CaseSensitive if self.caseSensitiveCheckBox.isChecked() else Qt.CaseInsensitive rx.setCaseSensitivity(cs) rx.setMinimal(self.minimalCheckBox.isChecked()) syntax = self.syntaxComboBox.itemData(self.syntaxComboBox.currentIndex()) rx.setPatternSyntax(syntax) palette = self.patternComboBox.palette() if rx.isValid(): palette.setColor(QPalette.Text, self.textComboBox.palette().color(QPalette.Text)) else: palette.setColor(QPalette.Text, Qt.red) self.patternComboBox.setPalette(palette) self.indexEdit.setText(str(rx.indexIn(text))) self.matchedLengthEdit.setText(str(rx.matchedLength())) for i in range(self.MaxCaptures): self.captureLabels[i].setEnabled(i <= rx.captureCount()) self.captureEdits[i].setEnabled(i <= rx.captureCount()) self.captureEdits[i].setText(rx.cap(i)) self.setUpdatesEnabled(True) if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = RegExpDialog() dialog.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/tools/settingseditor/0000755000076500000240000000000013245231431021524 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/tools/settingseditor/inifiles/0000755000076500000240000000000013245231431023326 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/tools/settingseditor/inifiles/licensepage.ini0000644000076500000240000000141713245231431026311 0ustar philstaff00000000000000[Field%201] Bottom=89 Flags=MULTILINE|VSCROLL|READONLY Left=4 Right=296 State=No license agreement file found. Please contact support. Top=14 Type=Text [Field%202] Bottom=8 Left=4 Right=294 Text=Press Page Down to see the rest of the agreement. Top=0 Type=Label [Field%203] Bottom=111 Left=4 Right=297 Text=If you accept the terms of the agreement, select the first option below. You must accept the agreement to install this software. Click Next to continue. Top=92 Type=Label [Field%204] Bottom=129 Flags=GROUP|NOTIFY Left=4 Right=299 Text=I &accept the terms in the License Agreement Top=120 Type=RadioButton [Field%205] Bottom=140 Flags=NOTIFY Left=4 Right=300 State=1 Text=I &do not accept the terms in the License Agreement Top=129 Type=RadioButton [Settings] NumFields=5 PyQt5_gpl-5.10.1/examples/tools/settingseditor/inifiles/qsa.ini0000644000076500000240000000051313245231431024612 0ustar philstaff00000000000000[Field%201] Bottom=65 Left=0 Right=299 Text=QSA Build Options Top=9 Type=Groupbox [Field%202] Bottom=37 Left=20 Right=284 Text=Don't compile QSA Workbench into QSA. Top=27 Type=Checkbox [Field%203] Bottom=56 Left=20 Right=247 Text=Don't compile QSA Workbench nor QSA Editor into QSA. Top=45 Type=Checkbox [Settings] NumFields=3 PyQt5_gpl-5.10.1/examples/tools/settingseditor/settingseditor.py0000755000076500000240000006444613245231431025166 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt5.QtCore import (QByteArray, QDate, QDateTime, QEvent, QPoint, QRect, QRegExp, QSettings, QSize, Qt, QTime, QTimer) from PyQt5.QtGui import QColor, QIcon, QRegExpValidator, QValidator from PyQt5.QtWidgets import (QAbstractItemView, QAction, QApplication, QComboBox, QDialog, QDialogButtonBox, QFileDialog, QGridLayout, QGroupBox, QHeaderView, QInputDialog, QItemDelegate, QLabel, QLineEdit, QMainWindow, QMessageBox, QStyle, QStyleOptionViewItem, QTableWidget, QTableWidgetItem, QTreeWidget, QTreeWidgetItem, QVBoxLayout) class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.settingsTree = SettingsTree() self.setCentralWidget(self.settingsTree) self.locationDialog = None self.createActions() self.createMenus() self.autoRefreshAct.setChecked(True) self.fallbacksAct.setChecked(True) self.setWindowTitle("Settings Editor") self.resize(500, 600) def openSettings(self): if self.locationDialog is None: self.locationDialog = LocationDialog(self) if self.locationDialog.exec_(): settings = QSettings(self.locationDialog.format(), self.locationDialog.scope(), self.locationDialog.organization(), self.locationDialog.application()) self.setSettingsObject(settings) self.fallbacksAct.setEnabled(True) def openIniFile(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open INI File", '', "INI Files (*.ini *.conf)") if fileName: settings = QSettings(fileName, QSettings.IniFormat) self.setSettingsObject(settings) self.fallbacksAct.setEnabled(False) def openPropertyList(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open Property List", '', "Property List Files (*.plist)") if fileName: settings = QSettings(fileName, QSettings.NativeFormat) self.setSettingsObject(settings) self.fallbacksAct.setEnabled(False) def openRegistryPath(self): path, ok = QInputDialog.getText(self, "Open Registry Path", "Enter the path in the Windows registry:", QLineEdit.Normal, 'HKEY_CURRENT_USER\\') if ok and path != '': settings = QSettings(path, QSettings.NativeFormat) self.setSettingsObject(settings) self.fallbacksAct.setEnabled(False) def about(self): QMessageBox.about(self, "About Settings Editor", "The Settings Editor example shows how to access " "application settings using Qt.") def createActions(self): self.openSettingsAct = QAction("&Open Application Settings...", self, shortcut="Ctrl+O", triggered=self.openSettings) self.openIniFileAct = QAction("Open I&NI File...", self, shortcut="Ctrl+N", triggered=self.openIniFile) self.openPropertyListAct = QAction("Open Mac &Property List...", self, shortcut="Ctrl+P", triggered=self.openPropertyList) if sys.platform != 'darwin': self.openPropertyListAct.setEnabled(False) self.openRegistryPathAct = QAction("Open Windows &Registry Path...", self, shortcut="Ctrl+G", triggered=self.openRegistryPath) if sys.platform != 'win32': self.openRegistryPathAct.setEnabled(False) self.refreshAct = QAction("&Refresh", self, shortcut="Ctrl+R", enabled=False, triggered=self.settingsTree.refresh) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=self.close) self.autoRefreshAct = QAction("&Auto-Refresh", self, shortcut="Ctrl+A", checkable=True, enabled=False) self.autoRefreshAct.triggered.connect(self.settingsTree.setAutoRefresh) self.autoRefreshAct.triggered.connect(self.refreshAct.setDisabled) self.fallbacksAct = QAction("&Fallbacks", self, shortcut="Ctrl+F", checkable=True, enabled=False, triggered=self.settingsTree.setFallbacksEnabled) self.aboutAct = QAction("&About", self, triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, triggered=QApplication.instance().aboutQt) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.openSettingsAct) self.fileMenu.addAction(self.openIniFileAct) self.fileMenu.addAction(self.openPropertyListAct) self.fileMenu.addAction(self.openRegistryPathAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.refreshAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.optionsMenu = self.menuBar().addMenu("&Options") self.optionsMenu.addAction(self.autoRefreshAct) self.optionsMenu.addAction(self.fallbacksAct) self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def setSettingsObject(self, settings): settings.setFallbacksEnabled(self.fallbacksAct.isChecked()) self.settingsTree.setSettingsObject(settings) self.refreshAct.setEnabled(True) self.autoRefreshAct.setEnabled(True) niceName = settings.fileName() niceName.replace('\\', '/') niceName = niceName.split('/')[-1] if not settings.isWritable(): niceName += " (read only)" self.setWindowTitle("%s - Settings Editor" % niceName) class LocationDialog(QDialog): def __init__(self, parent=None): super(LocationDialog, self).__init__(parent) self.formatComboBox = QComboBox() self.formatComboBox.addItem("Native") self.formatComboBox.addItem("INI") self.scopeComboBox = QComboBox() self.scopeComboBox.addItem("User") self.scopeComboBox.addItem("System") self.organizationComboBox = QComboBox() self.organizationComboBox.addItem("Trolltech") self.organizationComboBox.setEditable(True) self.applicationComboBox = QComboBox() self.applicationComboBox.addItem("Any") self.applicationComboBox.addItem("Application Example") self.applicationComboBox.addItem("Assistant") self.applicationComboBox.addItem("Designer") self.applicationComboBox.addItem("Linguist") self.applicationComboBox.setEditable(True) self.applicationComboBox.setCurrentIndex(3) formatLabel = QLabel("&Format:") formatLabel.setBuddy(self.formatComboBox) scopeLabel = QLabel("&Scope:") scopeLabel.setBuddy(self.scopeComboBox) organizationLabel = QLabel("&Organization:") organizationLabel.setBuddy(self.organizationComboBox) applicationLabel = QLabel("&Application:") applicationLabel.setBuddy(self.applicationComboBox) self.locationsGroupBox = QGroupBox("Setting Locations") self.locationsTable = QTableWidget() self.locationsTable.setSelectionMode(QAbstractItemView.SingleSelection) self.locationsTable.setSelectionBehavior(QAbstractItemView.SelectRows) self.locationsTable.setEditTriggers(QAbstractItemView.NoEditTriggers) self.locationsTable.setColumnCount(2) self.locationsTable.setHorizontalHeaderLabels(("Location", "Access")) self.locationsTable.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch) self.locationsTable.horizontalHeader().resizeSection(1, 180) self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) self.formatComboBox.activated.connect(self.updateLocationsTable) self.scopeComboBox.activated.connect(self.updateLocationsTable) self.organizationComboBox.lineEdit().editingFinished.connect(self.updateLocationsTable) self.applicationComboBox.lineEdit().editingFinished.connect(self.updateLocationsTable) self.buttonBox.accepted.connect(self.accept) self.buttonBox.rejected.connect(self.reject) locationsLayout = QVBoxLayout() locationsLayout.addWidget(self.locationsTable) self.locationsGroupBox.setLayout(locationsLayout) mainLayout = QGridLayout() mainLayout.addWidget(formatLabel, 0, 0) mainLayout.addWidget(self.formatComboBox, 0, 1) mainLayout.addWidget(scopeLabel, 1, 0) mainLayout.addWidget(self.scopeComboBox, 1, 1) mainLayout.addWidget(organizationLabel, 2, 0) mainLayout.addWidget(self.organizationComboBox, 2, 1) mainLayout.addWidget(applicationLabel, 3, 0) mainLayout.addWidget(self.applicationComboBox, 3, 1) mainLayout.addWidget(self.locationsGroupBox, 4, 0, 1, 2) mainLayout.addWidget(self.buttonBox, 5, 0, 1, 2) self.setLayout(mainLayout) self.updateLocationsTable() self.setWindowTitle("Open Application Settings") self.resize(650, 400) def format(self): if self.formatComboBox.currentIndex() == 0: return QSettings.NativeFormat else: return QSettings.IniFormat def scope(self): if self.scopeComboBox.currentIndex() == 0: return QSettings.UserScope else: return QSettings.SystemScope def organization(self): return self.organizationComboBox.currentText() def application(self): if self.applicationComboBox.currentText() == "Any": return '' return self.applicationComboBox.currentText() def updateLocationsTable(self): self.locationsTable.setUpdatesEnabled(False) self.locationsTable.setRowCount(0) for i in range(2): if i == 0: if self.scope() == QSettings.SystemScope: continue actualScope = QSettings.UserScope else: actualScope = QSettings.SystemScope for j in range(2): if j == 0: if not self.application(): continue actualApplication = self.application() else: actualApplication = '' settings = QSettings(self.format(), actualScope, self.organization(), actualApplication) row = self.locationsTable.rowCount() self.locationsTable.setRowCount(row + 1) item0 = QTableWidgetItem() item0.setText(settings.fileName()) item1 = QTableWidgetItem() disable = not (settings.childKeys() or settings.childGroups()) if row == 0: if settings.isWritable(): item1.setText("Read-write") disable = False else: item1.setText("Read-only") self.buttonBox.button(QDialogButtonBox.Ok).setDisabled(disable) else: item1.setText("Read-only fallback") if disable: item0.setFlags(item0.flags() & ~Qt.ItemIsEnabled) item1.setFlags(item1.flags() & ~Qt.ItemIsEnabled) self.locationsTable.setItem(row, 0, item0) self.locationsTable.setItem(row, 1, item1) self.locationsTable.setUpdatesEnabled(True) class SettingsTree(QTreeWidget): def __init__(self, parent=None): super(SettingsTree, self).__init__(parent) self.setItemDelegate(VariantDelegate(self)) self.setHeaderLabels(("Setting", "Type", "Value")) self.header().setSectionResizeMode(0, QHeaderView.Stretch) self.header().setSectionResizeMode(2, QHeaderView.Stretch) self.settings = None self.refreshTimer = QTimer() self.refreshTimer.setInterval(2000) self.autoRefresh = False self.groupIcon = QIcon() self.groupIcon.addPixmap(self.style().standardPixmap(QStyle.SP_DirClosedIcon), QIcon.Normal, QIcon.Off) self.groupIcon.addPixmap(self.style().standardPixmap(QStyle.SP_DirOpenIcon), QIcon.Normal, QIcon.On) self.keyIcon = QIcon() self.keyIcon.addPixmap(self.style().standardPixmap(QStyle.SP_FileIcon)) self.refreshTimer.timeout.connect(self.maybeRefresh) def setSettingsObject(self, settings): self.settings = settings self.clear() if self.settings is not None: self.settings.setParent(self) self.refresh() if self.autoRefresh: self.refreshTimer.start() else: self.refreshTimer.stop() def sizeHint(self): return QSize(800, 600) def setAutoRefresh(self, autoRefresh): self.autoRefresh = autoRefresh if self.settings is not None: if self.autoRefresh: self.maybeRefresh() self.refreshTimer.start() else: self.refreshTimer.stop() def setFallbacksEnabled(self, enabled): if self.settings is not None: self.settings.setFallbacksEnabled(enabled) self.refresh() def maybeRefresh(self): if self.state() != QAbstractItemView.EditingState: self.refresh() def refresh(self): if self.settings is None: return # The signal might not be connected. try: self.itemChanged.disconnect(self.updateSetting) except: pass self.settings.sync() self.updateChildItems(None) self.itemChanged.connect(self.updateSetting) def event(self, event): if event.type() == QEvent.WindowActivate: if self.isActiveWindow() and self.autoRefresh: self.maybeRefresh() return super(SettingsTree, self).event(event) def updateSetting(self, item): key = item.text(0) ancestor = item.parent() while ancestor: key = ancestor.text(0) + '/' + key ancestor = ancestor.parent() d = item.data(2, Qt.UserRole) self.settings.setValue(key, item.data(2, Qt.UserRole)) if self.autoRefresh: self.refresh() def updateChildItems(self, parent): dividerIndex = 0 for group in self.settings.childGroups(): childIndex = self.findChild(parent, group, dividerIndex) if childIndex != -1: child = self.childAt(parent, childIndex) child.setText(1, '') child.setText(2, '') child.setData(2, Qt.UserRole, None) self.moveItemForward(parent, childIndex, dividerIndex) else: child = self.createItem(group, parent, dividerIndex) child.setIcon(0, self.groupIcon) dividerIndex += 1 self.settings.beginGroup(group) self.updateChildItems(child) self.settings.endGroup() for key in self.settings.childKeys(): childIndex = self.findChild(parent, key, 0) if childIndex == -1 or childIndex >= dividerIndex: if childIndex != -1: child = self.childAt(parent, childIndex) for i in range(child.childCount()): self.deleteItem(child, i) self.moveItemForward(parent, childIndex, dividerIndex) else: child = self.createItem(key, parent, dividerIndex) child.setIcon(0, self.keyIcon) dividerIndex += 1 else: child = self.childAt(parent, childIndex) value = self.settings.value(key) if value is None: child.setText(1, 'Invalid') else: child.setText(1, value.__class__.__name__) child.setText(2, VariantDelegate.displayText(value)) child.setData(2, Qt.UserRole, value) while dividerIndex < self.childCount(parent): self.deleteItem(parent, dividerIndex) def createItem(self, text, parent, index): after = None if index != 0: after = self.childAt(parent, index - 1) if parent is not None: item = QTreeWidgetItem(parent, after) else: item = QTreeWidgetItem(self, after) item.setText(0, text) item.setFlags(item.flags() | Qt.ItemIsEditable) return item def deleteItem(self, parent, index): if parent is not None: item = parent.takeChild(index) else: item = self.takeTopLevelItem(index) del item def childAt(self, parent, index): if parent is not None: return parent.child(index) else: return self.topLevelItem(index) def childCount(self, parent): if parent is not None: return parent.childCount() else: return self.topLevelItemCount() def findChild(self, parent, text, startIndex): for i in range(self.childCount(parent)): if self.childAt(parent, i).text(0) == text: return i return -1 def moveItemForward(self, parent, oldIndex, newIndex): for int in range(oldIndex - newIndex): self.deleteItem(parent, newIndex) class VariantDelegate(QItemDelegate): def __init__(self, parent=None): super(VariantDelegate, self).__init__(parent) self.boolExp = QRegExp() self.boolExp.setPattern('true|false') self.boolExp.setCaseSensitivity(Qt.CaseInsensitive) self.byteArrayExp = QRegExp() self.byteArrayExp.setPattern('[\\x00-\\xff]*') self.charExp = QRegExp() self.charExp.setPattern('.') self.colorExp = QRegExp() self.colorExp.setPattern('\\(([0-9]*),([0-9]*),([0-9]*),([0-9]*)\\)') self.doubleExp = QRegExp() self.doubleExp.setPattern('') self.pointExp = QRegExp() self.pointExp.setPattern('\\((-?[0-9]*),(-?[0-9]*)\\)') self.rectExp = QRegExp() self.rectExp.setPattern('\\((-?[0-9]*),(-?[0-9]*),(-?[0-9]*),(-?[0-9]*)\\)') self.signedIntegerExp = QRegExp() self.signedIntegerExp.setPattern('-?[0-9]*') self.sizeExp = QRegExp(self.pointExp) self.unsignedIntegerExp = QRegExp() self.unsignedIntegerExp.setPattern('[0-9]*') self.dateExp = QRegExp() self.dateExp.setPattern('([0-9]{,4})-([0-9]{,2})-([0-9]{,2})') self.timeExp = QRegExp() self.timeExp.setPattern('([0-9]{,2}):([0-9]{,2}):([0-9]{,2})') self.dateTimeExp = QRegExp() self.dateTimeExp.setPattern(self.dateExp.pattern() + 'T' + self.timeExp.pattern()) def paint(self, painter, option, index): if index.column() == 2: value = index.model().data(index, Qt.UserRole) if not self.isSupportedType(value): myOption = QStyleOptionViewItem(option) myOption.state &= ~QStyle.State_Enabled super(VariantDelegate, self).paint(painter, myOption, index) return super(VariantDelegate, self).paint(painter, option, index) def createEditor(self, parent, option, index): if index.column() != 2: return None originalValue = index.model().data(index, Qt.UserRole) if not self.isSupportedType(originalValue): return None lineEdit = QLineEdit(parent) lineEdit.setFrame(False) if isinstance(originalValue, bool): regExp = self.boolExp elif isinstance(originalValue, float): regExp = self.doubleExp elif isinstance(originalValue, int): regExp = self.signedIntegerExp elif isinstance(originalValue, QByteArray): regExp = self.byteArrayExp elif isinstance(originalValue, QColor): regExp = self.colorExp elif isinstance(originalValue, QDate): regExp = self.dateExp elif isinstance(originalValue, QDateTime): regExp = self.dateTimeExp elif isinstance(originalValue, QTime): regExp = self.timeExp elif isinstance(originalValue, QPoint): regExp = self.pointExp elif isinstance(originalValue, QRect): regExp = self.rectExp elif isinstance(originalValue, QSize): regExp = self.sizeExp else: regExp = QRegExp() if not regExp.isEmpty(): validator = QRegExpValidator(regExp, lineEdit) lineEdit.setValidator(validator) return lineEdit def setEditorData(self, editor, index): value = index.model().data(index, Qt.UserRole) if editor is not None: editor.setText(self.displayText(value)) def setModelData(self, editor, model, index): if not editor.isModified(): return text = editor.text() validator = editor.validator() if validator is not None: state, text, _ = validator.validate(text, 0) if state != QValidator.Acceptable: return originalValue = index.model().data(index, Qt.UserRole) if isinstance(originalValue, QColor): self.colorExp.exactMatch(text) value = QColor(min(int(self.colorExp.cap(1)), 255), min(int(self.colorExp.cap(2)), 255), min(int(self.colorExp.cap(3)), 255), min(int(self.colorExp.cap(4)), 255)) elif isinstance(originalValue, QDate): value = QDate.fromString(text, Qt.ISODate) if not value.isValid(): return elif isinstance(originalValue, QDateTime): value = QDateTime.fromString(text, Qt.ISODate) if not value.isValid(): return elif isinstance(originalValue, QTime): value = QTime.fromString(text, Qt.ISODate) if not value.isValid(): return elif isinstance(originalValue, QPoint): self.pointExp.exactMatch(text) value = QPoint(int(self.pointExp.cap(1)), int(self.pointExp.cap(2))) elif isinstance(originalValue, QRect): self.rectExp.exactMatch(text) value = QRect(int(self.rectExp.cap(1)), int(self.rectExp.cap(2)), int(self.rectExp.cap(3)), int(self.rectExp.cap(4))) elif isinstance(originalValue, QSize): self.sizeExp.exactMatch(text) value = QSize(int(self.sizeExp.cap(1)), int(self.sizeExp.cap(2))) elif isinstance(originalValue, list): value = text.split(',') else: value = type(originalValue)(text) model.setData(index, self.displayText(value), Qt.DisplayRole) model.setData(index, value, Qt.UserRole) @staticmethod def isSupportedType(value): return isinstance(value, (bool, float, int, QByteArray, str, QColor, QDate, QDateTime, QTime, QPoint, QRect, QSize, list)) @staticmethod def displayText(value): if isinstance(value, (bool, int, QByteArray)): return str(value) if isinstance(value, str): return value elif isinstance(value, float): return '%g' % value elif isinstance(value, QColor): return '(%u,%u,%u,%u)' % (value.red(), value.green(), value.blue(), value.alpha()) elif isinstance(value, (QDate, QDateTime, QTime)): return value.toString(Qt.ISODate) elif isinstance(value, QPoint): return '(%d,%d)' % (value.x(), value.y()) elif isinstance(value, QRect): return '(%d,%d,%d,%d)' % (value.x(), value.y(), value.width(), value.height()) elif isinstance(value, QSize): return '(%d,%d)' % (value.width(), value.height()) elif isinstance(value, list): return ','.join(value) elif value is None: return '' return '<%s>' % value if __name__ == '__main__': app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/tutorials/0000755000076500000240000000000013245231431017343 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/tutorials/addressbook/0000755000076500000240000000000013245231431021643 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/tutorials/addressbook/part1.py0000755000076500000240000000564213245231431023256 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QGridLayout, QLabel, QLineEdit, QTextEdit, QWidget class AddressBook(QWidget): def __init__(self, parent=None): super(AddressBook, self).__init__(parent) nameLabel = QLabel("Name:") self.nameLine = QLineEdit() addressLabel = QLabel("Address:") self.addressText = QTextEdit() mainLayout = QGridLayout() mainLayout.addWidget(nameLabel, 0, 0) mainLayout.addWidget(self.nameLine, 0, 1) mainLayout.addWidget(addressLabel, 1, 0, Qt.AlignTop) mainLayout.addWidget(self.addressText, 1, 1) self.setLayout(mainLayout) self.setWindowTitle("Simple Address Book") if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) addressBook = AddressBook() addressBook.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/tutorials/addressbook/part2.py0000755000076500000240000001420213245231431023247 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QGridLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QTextEdit, QVBoxLayout, QWidget class SortedDict(dict): class Iterator(object): def __init__(self, sorted_dict): self._dict = sorted_dict self._keys = sorted(self._dict.keys()) self._nr_items = len(self._keys) self._idx = 0 def __iter__(self): return self def next(self): if self._idx >= self._nr_items: raise StopIteration key = self._keys[self._idx] value = self._dict[key] self._idx += 1 return key, value __next__ = next def __iter__(self): return SortedDict.Iterator(self) iterkeys = __iter__ class AddressBook(QWidget): def __init__(self, parent=None): super(AddressBook, self).__init__(parent) self.contacts = SortedDict() self.oldName = '' self.oldAddress = '' nameLabel = QLabel("Name:") self.nameLine = QLineEdit() self.nameLine.setReadOnly(True) addressLabel = QLabel("Address:") self.addressText = QTextEdit() self.addressText.setReadOnly(True) self.addButton = QPushButton("&Add") self.addButton.show() self.submitButton = QPushButton("&Submit") self.submitButton.hide() self.cancelButton = QPushButton("&Cancel") self.cancelButton.hide() self.addButton.clicked.connect(self.addContact) self.submitButton.clicked.connect(self.submitContact) self.cancelButton.clicked.connect(self.cancel) buttonLayout1 = QVBoxLayout() buttonLayout1.addWidget(self.addButton, Qt.AlignTop) buttonLayout1.addWidget(self.submitButton) buttonLayout1.addWidget(self.cancelButton) buttonLayout1.addStretch() mainLayout = QGridLayout() mainLayout.addWidget(nameLabel, 0, 0) mainLayout.addWidget(self.nameLine, 0, 1) mainLayout.addWidget(addressLabel, 1, 0, Qt.AlignTop) mainLayout.addWidget(self.addressText, 1, 1) mainLayout.addLayout(buttonLayout1, 1, 2) self.setLayout(mainLayout) self.setWindowTitle("Simple Address Book") def addContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(False) self.nameLine.setFocus(Qt.OtherFocusReason) self.addressText.setReadOnly(False) self.addButton.setEnabled(False) self.submitButton.show() self.cancelButton.show() def submitContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name == "" or address == "": QMessageBox.information(self, "Empty Field", "Please enter a name and address.") return if name not in self.contacts: self.contacts[name] = address QMessageBox.information(self, "Add Successful", "\"%s\" has been added to your address book." % name) else: QMessageBox.information(self, "Add Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return if not self.contacts: self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(True) self.addressText.setReadOnly(True) self.addButton.setEnabled(True) self.submitButton.hide() self.cancelButton.hide() def cancel(self): self.nameLine.setText(self.oldName) self.nameLine.setReadOnly(True) self.addressText.setText(self.oldAddress) self.addressText.setReadOnly(True) self.addButton.setEnabled(True) self.submitButton.hide() self.cancelButton.hide() if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) addressBook = AddressBook() addressBook.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/tutorials/addressbook/part3.py0000755000076500000240000002017113245231431023252 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QGridLayout, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QTextEdit, QVBoxLayout, QWidget) class SortedDict(dict): class Iterator(object): def __init__(self, sorted_dict): self._dict = sorted_dict self._keys = sorted(self._dict.keys()) self._nr_items = len(self._keys) self._idx = 0 def __iter__(self): return self def next(self): if self._idx >= self._nr_items: raise StopIteration key = self._keys[self._idx] value = self._dict[key] self._idx += 1 return key, value __next__ = next def __iter__(self): return SortedDict.Iterator(self) iterkeys = __iter__ class AddressBook(QWidget): def __init__(self, parent=None): super(AddressBook, self).__init__(parent) self.contacts = SortedDict() self.oldName = '' self.oldAddress = '' nameLabel = QLabel("Name:") self.nameLine = QLineEdit() self.nameLine.setReadOnly(True) addressLabel = QLabel("Address:") self.addressText = QTextEdit() self.addressText.setReadOnly(True) self.addButton = QPushButton("&Add") self.addButton.show() self.submitButton = QPushButton("&Submit") self.submitButton.hide() self.cancelButton = QPushButton("&Cancel") self.cancelButton.hide() self.nextButton = QPushButton("&Next") self.nextButton.setEnabled(False) self.previousButton = QPushButton("&Previous") self.previousButton.setEnabled(False) self.addButton.clicked.connect(self.addContact) self.submitButton.clicked.connect(self.submitContact) self.cancelButton.clicked.connect(self.cancel) self.nextButton.clicked.connect(self.next) self.previousButton.clicked.connect(self.previous) buttonLayout1 = QVBoxLayout() buttonLayout1.addWidget(self.addButton, Qt.AlignTop) buttonLayout1.addWidget(self.submitButton) buttonLayout1.addWidget(self.cancelButton) buttonLayout1.addStretch() buttonLayout2 = QHBoxLayout() buttonLayout2.addWidget(self.previousButton) buttonLayout2.addWidget(self.nextButton) mainLayout = QGridLayout() mainLayout.addWidget(nameLabel, 0, 0) mainLayout.addWidget(self.nameLine, 0, 1) mainLayout.addWidget(addressLabel, 1, 0, Qt.AlignTop) mainLayout.addWidget(self.addressText, 1, 1) mainLayout.addLayout(buttonLayout1, 1, 2) mainLayout.addLayout(buttonLayout2, 3, 1) self.setLayout(mainLayout) self.setWindowTitle("Simple Address Book") def addContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(False) self.nameLine.setFocus(Qt.OtherFocusReason) self.addressText.setReadOnly(False) self.addButton.setEnabled(False) self.nextButton.setEnabled(False) self.previousButton.setEnabled(False) self.submitButton.show() self.cancelButton.show() def submitContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name == "" or address == "": QMessageBox.information(self, "Empty Field", "Please enter a name and address.") return if name not in self.contacts: self.contacts[name] = address QMessageBox.information(self, "Add Successful", "\"%s\" has been added to your address book." % name) else: QMessageBox.information(self, "Add Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return if not self.contacts: self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(True) self.addressText.setReadOnly(True) self.addButton.setEnabled(True) number = len(self.contacts) self.nextButton.setEnabled(number > 1) self.previousButton.setEnabled(number > 1) self.submitButton.hide() self.cancelButton.hide() def cancel(self): self.nameLine.setText(self.oldName) self.addressText.setText(self.oldAddress) if not self.contacts: self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(True) self.addressText.setReadOnly(True) self.addButton.setEnabled(True) number = len(self.contacts) self.nextButton.setEnabled(number > 1) self.previousButton.setEnabled(number > 1) self.submitButton.hide() self.cancelButton.hide() def next(self): name = self.nameLine.text() it = iter(self.contacts) try: while True: this_name, _ = it.next() if this_name == name: next_name, next_address = it.next() break except StopIteration: next_name, next_address = iter(self.contacts).next() self.nameLine.setText(next_name) self.addressText.setText(next_address) def previous(self): name = self.nameLine.text() prev_name = prev_address = None for this_name, this_address in self.contacts: if this_name == name: break prev_name = this_name prev_address = this_address else: self.nameLine.clear() self.addressText.clear() return if prev_name is None: for prev_name, prev_address in self.contacts: pass self.nameLine.setText(prev_name) self.addressText.setText(prev_address) if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) addressBook = AddressBook() addressBook.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/tutorials/addressbook/part4.py0000755000076500000240000002477413245231431023270 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QGridLayout, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QTextEdit, QVBoxLayout, QWidget) class SortedDict(dict): class Iterator(object): def __init__(self, sorted_dict): self._dict = sorted_dict self._keys = sorted(self._dict.keys()) self._nr_items = len(self._keys) self._idx = 0 def __iter__(self): return self def next(self): if self._idx >= self._nr_items: raise StopIteration key = self._keys[self._idx] value = self._dict[key] self._idx += 1 return key, value __next__ = next def __iter__(self): return SortedDict.Iterator(self) iterkeys = __iter__ class AddressBook(QWidget): NavigationMode, AddingMode, EditingMode = range(3) def __init__(self, parent=None): super(AddressBook, self).__init__(parent) self.contacts = SortedDict() self.oldName = '' self.oldAddress = '' self.currentMode = self.NavigationMode nameLabel = QLabel("Name:") self.nameLine = QLineEdit() self.nameLine.setReadOnly(True) addressLabel = QLabel("Address:") self.addressText = QTextEdit() self.addressText.setReadOnly(True) self.addButton = QPushButton("&Add") self.addButton.show() self.editButton = QPushButton("&Edit") self.editButton.setEnabled(False) self.removeButton = QPushButton("&Remove") self.removeButton.setEnabled(False) self.submitButton = QPushButton("&Submit") self.submitButton.hide() self.cancelButton = QPushButton("&Cancel") self.cancelButton.hide() self.nextButton = QPushButton("&Next") self.nextButton.setEnabled(False) self.previousButton = QPushButton("&Previous") self.previousButton.setEnabled(False) self.addButton.clicked.connect(self.addContact) self.submitButton.clicked.connect(self.submitContact) self.editButton.clicked.connect(self.editContact) self.removeButton.clicked.connect(self.removeContact) self.cancelButton.clicked.connect(self.cancel) self.nextButton.clicked.connect(self.next) self.previousButton.clicked.connect(self.previous) buttonLayout1 = QVBoxLayout() buttonLayout1.addWidget(self.addButton) buttonLayout1.addWidget(self.editButton) buttonLayout1.addWidget(self.removeButton) buttonLayout1.addWidget(self.submitButton) buttonLayout1.addWidget(self.cancelButton) buttonLayout1.addStretch() buttonLayout2 = QHBoxLayout() buttonLayout2.addWidget(self.previousButton) buttonLayout2.addWidget(self.nextButton) mainLayout = QGridLayout() mainLayout.addWidget(nameLabel, 0, 0) mainLayout.addWidget(self.nameLine, 0, 1) mainLayout.addWidget(addressLabel, 1, 0, Qt.AlignTop) mainLayout.addWidget(self.addressText, 1, 1) mainLayout.addLayout(buttonLayout1, 1, 2) mainLayout.addLayout(buttonLayout2, 3, 1) self.setLayout(mainLayout) self.setWindowTitle("Simple Address Book") def addContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.nameLine.clear() self.addressText.clear() self.updateInterface(self.AddingMode) def editContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.updateInterface(self.EditingMode) def submitContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name == "" or address == "": QMessageBox.information(self, "Empty Field", "Please enter a name and address.") return if self.currentMode == self.AddingMode: if name not in self.contacts: self.contacts[name] = address QMessageBox.information(self, "Add Successful", "\"%s\" has been added to your address book." % name) else: QMessageBox.information(self, "Add Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return elif self.currentMode == self.EditingMode: if self.oldName != name: if name not in self.contacts: QMessageBox.information(self, "Edit Successful", "\"%s\" has been edited in your address book." % self.oldName) del self.contacts[self.oldName] self.contacts[name] = address else: QMessageBox.information(self, "Edit Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return elif self.oldAddress != address: QMessageBox.information(self, "Edit Successful", "\"%s\" has been edited in your address book." % name) self.contacts[name] = address self.updateInterface(self.NavigationMode) def cancel(self): self.nameLine.setText(self.oldName) self.addressText.setText(self.oldAddress) self.updateInterface(self.NavigationMode) def removeContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name in self.contacts: button = QMessageBox.question(self, "Confirm Remove", "Are you sure you want to remove \"%s\"?" % name, QMessageBox.Yes | QMessageBox.No) if button == QMessageBox.Yes: self.previous() del self.contacts[name] QMessageBox.information(self, "Remove Successful", "\"%s\" has been removed from your address book." % name) self.updateInterface(self.NavigationMode) def next(self): name = self.nameLine.text() it = iter(self.contacts) try: while True: this_name, _ = it.next() if this_name == name: next_name, next_address = it.next() break except StopIteration: next_name, next_address = iter(self.contacts).next() self.nameLine.setText(next_name) self.addressText.setText(next_address) def previous(self): name = self.nameLine.text() prev_name = prev_address = None for this_name, this_address in self.contacts: if this_name == name: break prev_name = this_name prev_address = this_address else: self.nameLine.clear() self.addressText.clear() return if prev_name is None: for prev_name, prev_address in self.contacts: pass self.nameLine.setText(prev_name) self.addressText.setText(prev_address) def updateInterface(self, mode): self.currentMode = mode if self.currentMode in (self.AddingMode, self.EditingMode): self.nameLine.setReadOnly(False) self.nameLine.setFocus(Qt.OtherFocusReason) self.addressText.setReadOnly(False) self.addButton.setEnabled(False) self.editButton.setEnabled(False) self.removeButton.setEnabled(False) self.nextButton.setEnabled(False) self.previousButton.setEnabled(False) self.submitButton.show() self.cancelButton.show() elif self.currentMode == self.NavigationMode: if not self.contacts: self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(True) self.addressText.setReadOnly(True) self.addButton.setEnabled(True) number = len(self.contacts) self.editButton.setEnabled(number >= 1) self.removeButton.setEnabled(number >= 1) self.nextButton.setEnabled(number > 1) self.previousButton.setEnabled(number >1 ) self.submitButton.hide() self.cancelButton.hide() if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) addressBook = AddressBook() addressBook.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/tutorials/addressbook/part5.py0000755000076500000240000003047313245231431023262 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QDialog, QGridLayout, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QTextEdit, QVBoxLayout, QWidget) class SortedDict(dict): class Iterator(object): def __init__(self, sorted_dict): self._dict = sorted_dict self._keys = sorted(self._dict.keys()) self._nr_items = len(self._keys) self._idx = 0 def __iter__(self): return self def next(self): if self._idx >= self._nr_items: raise StopIteration key = self._keys[self._idx] value = self._dict[key] self._idx += 1 return key, value __next__ = next def __iter__(self): return SortedDict.Iterator(self) iterkeys = __iter__ class AddressBook(QWidget): NavigationMode, AddingMode, EditingMode = range(3) def __init__(self, parent=None): super(AddressBook, self).__init__(parent) self.contacts = SortedDict() self.oldName = '' self.oldAddress = '' self.currentMode = self.NavigationMode nameLabel = QLabel("Name:") self.nameLine = QLineEdit() self.nameLine.setReadOnly(True) addressLabel = QLabel("Address:") self.addressText = QTextEdit() self.addressText.setReadOnly(True) self.addButton = QPushButton("&Add") self.addButton.show() self.editButton = QPushButton("&Edit") self.editButton.setEnabled(False) self.removeButton = QPushButton("&Remove") self.removeButton.setEnabled(False) self.findButton = QPushButton("&Find") self.findButton.setEnabled(False) self.submitButton = QPushButton("&Submit") self.submitButton.hide() self.cancelButton = QPushButton("&Cancel") self.cancelButton.hide() self.nextButton = QPushButton("&Next") self.nextButton.setEnabled(False) self.previousButton = QPushButton("&Previous") self.previousButton.setEnabled(False) self.dialog = FindDialog() self.addButton.clicked.connect(self.addContact) self.submitButton.clicked.connect(self.submitContact) self.editButton.clicked.connect(self.editContact) self.removeButton.clicked.connect(self.removeContact) self.findButton.clicked.connect(self.findContact) self.cancelButton.clicked.connect(self.cancel) self.nextButton.clicked.connect(self.next) self.previousButton.clicked.connect(self.previous) buttonLayout1 = QVBoxLayout() buttonLayout1.addWidget(self.addButton) buttonLayout1.addWidget(self.editButton) buttonLayout1.addWidget(self.removeButton) buttonLayout1.addWidget(self.findButton) buttonLayout1.addWidget(self.submitButton) buttonLayout1.addWidget(self.cancelButton) buttonLayout1.addStretch() buttonLayout2 = QHBoxLayout() buttonLayout2.addWidget(self.previousButton) buttonLayout2.addWidget(self.nextButton) mainLayout = QGridLayout() mainLayout.addWidget(nameLabel, 0, 0) mainLayout.addWidget(self.nameLine, 0, 1) mainLayout.addWidget(addressLabel, 1, 0, Qt.AlignTop) mainLayout.addWidget(self.addressText, 1, 1) mainLayout.addLayout(buttonLayout1, 1, 2) mainLayout.addLayout(buttonLayout2, 2, 1) self.setLayout(mainLayout) self.setWindowTitle("Simple Address Book") def addContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.nameLine.clear() self.addressText.clear() self.updateInterface(self.AddingMode) def editContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.updateInterface(self.EditingMode) def submitContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name == "" or address == "": QMessageBox.information(self, "Empty Field", "Please enter a name and address.") return if self.currentMode == self.AddingMode: if name not in self.contacts: self.contacts[name] = address QMessageBox.information(self, "Add Successful", "\"%s\" has been added to your address book." % name) else: QMessageBox.information(self, "Add Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return elif self.currentMode == self.EditingMode: if self.oldName != name: if name not in self.contacts: QMessageBox.information(self, "Edit Successful", "\"%s\" has been edited in your address book." % self.oldName) del self.contacts[self.oldName] self.contacts[name] = address else: QMessageBox.information(self, "Edit Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return elif self.oldAddress != address: QMessageBox.information(self, "Edit Successful", "\"%s\" has been edited in your address book." % name) self.contacts[name] = address self.updateInterface(self.NavigationMode) def cancel(self): self.nameLine.setText(self.oldName) self.addressText.setText(self.oldAddress) self.updateInterface(self.NavigationMode) def removeContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name in self.contacts: button = QMessageBox.question(self, "Confirm Remove", "Are you sure you want to remove \"%s\"?" % name, QMessageBox.Yes | QMessageBox.No) if button == QMessageBox.Yes: self.previous() del self.contacts[name] QMessageBox.information(self, "Remove Successful", "\"%s\" has been removed from your address book." % name) self.updateInterface(self.NavigationMode) def next(self): name = self.nameLine.text() it = iter(self.contacts) try: while True: this_name, _ = it.next() if this_name == name: next_name, next_address = it.next() break except StopIteration: next_name, next_address = iter(self.contacts).next() self.nameLine.setText(next_name) self.addressText.setText(next_address) def previous(self): name = self.nameLine.text() prev_name = prev_address = None for this_name, this_address in self.contacts: if this_name == name: break prev_name = this_name prev_address = this_address else: self.nameLine.clear() self.addressText.clear() return if prev_name is None: for prev_name, prev_address in self.contacts: pass self.nameLine.setText(prev_name) self.addressText.setText(prev_address) def findContact(self): self.dialog.show() if self.dialog.exec_() == QDialog.Accepted: contactName = self.dialog.getFindText() if contactName in self.contacts: self.nameLine.setText(contactName) self.addressText.setText(self.contacts[contactName]) else: QMessageBox.information(self, "Contact Not Found", "Sorry, \"%s\" is not in your address book." % contactName) return self.updateInterface(self.NavigationMode) def updateInterface(self, mode): self.currentMode = mode if self.currentMode in (self.AddingMode, self.EditingMode): self.nameLine.setReadOnly(False) self.nameLine.setFocus(Qt.OtherFocusReason) self.addressText.setReadOnly(False) self.addButton.setEnabled(False) self.editButton.setEnabled(False) self.removeButton.setEnabled(False) self.nextButton.setEnabled(False) self.previousButton.setEnabled(False) self.submitButton.show() self.cancelButton.show() elif self.currentMode == self.NavigationMode: if not self.contacts: self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(True) self.addressText.setReadOnly(True) self.addButton.setEnabled(True) number = len(self.contacts) self.editButton.setEnabled(number >= 1) self.removeButton.setEnabled(number >= 1) self.findButton.setEnabled(number > 2) self.nextButton.setEnabled(number > 1) self.previousButton.setEnabled(number >1 ) self.submitButton.hide() self.cancelButton.hide() class FindDialog(QDialog): def __init__(self, parent=None): super(FindDialog, self).__init__(parent) findLabel = QLabel("Enter the name of a contact:") self.lineEdit = QLineEdit() self.findButton = QPushButton("&Find") self.findText = '' layout = QHBoxLayout() layout.addWidget(findLabel) layout.addWidget(self.lineEdit) layout.addWidget(self.findButton) self.setLayout(layout) self.setWindowTitle("Find a Contact") self.findButton.clicked.connect(self.findClicked) self.findButton.clicked.connect(self.accept) def findClicked(self): text = self.lineEdit.text() if not text: QMessageBox.information(self, "Empty Field", "Please enter a name.") return else: self.findText = text self.lineEdit.clear() self.hide() def getFindText(self): return self.findText if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) addressBook = AddressBook() addressBook.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/tutorials/addressbook/part6.py0000755000076500000240000003462113245231431023262 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import pickle from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QDialog, QFileDialog, QGridLayout, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QTextEdit, QVBoxLayout, QWidget) class SortedDict(dict): class Iterator(object): def __init__(self, sorted_dict): self._dict = sorted_dict self._keys = sorted(self._dict.keys()) self._nr_items = len(self._keys) self._idx = 0 def __iter__(self): return self def next(self): if self._idx >= self._nr_items: raise StopIteration key = self._keys[self._idx] value = self._dict[key] self._idx += 1 return key, value __next__ = next def __iter__(self): return SortedDict.Iterator(self) iterkeys = __iter__ class AddressBook(QWidget): NavigationMode, AddingMode, EditingMode = range(3) def __init__(self, parent=None): super(AddressBook, self).__init__(parent) self.contacts = SortedDict() self.oldName = '' self.oldAddress = '' self.currentMode = self.NavigationMode nameLabel = QLabel("Name:") self.nameLine = QLineEdit() self.nameLine.setReadOnly(True) addressLabel = QLabel("Address:") self.addressText = QTextEdit() self.addressText.setReadOnly(True) self.addButton = QPushButton("&Add") self.addButton.show() self.editButton = QPushButton("&Edit") self.editButton.setEnabled(False) self.removeButton = QPushButton("&Remove") self.removeButton.setEnabled(False) self.findButton = QPushButton("&Find") self.findButton.setEnabled(False) self.submitButton = QPushButton("&Submit") self.submitButton.hide() self.cancelButton = QPushButton("&Cancel") self.cancelButton.hide() self.nextButton = QPushButton("&Next") self.nextButton.setEnabled(False) self.previousButton = QPushButton("&Previous") self.previousButton.setEnabled(False) self.loadButton = QPushButton("&Load...") self.loadButton.setToolTip("Load contacts from a file") self.saveButton = QPushButton("Sa&ve...") self.saveButton.setToolTip("Save contacts to a file") self.saveButton.setEnabled(False) self.dialog = FindDialog() self.addButton.clicked.connect(self.addContact) self.submitButton.clicked.connect(self.submitContact) self.editButton.clicked.connect(self.editContact) self.removeButton.clicked.connect(self.removeContact) self.findButton.clicked.connect(self.findContact) self.cancelButton.clicked.connect(self.cancel) self.nextButton.clicked.connect(self.next) self.previousButton.clicked.connect(self.previous) self.loadButton.clicked.connect(self.loadFromFile) self.saveButton.clicked.connect(self.saveToFile) buttonLayout1 = QVBoxLayout() buttonLayout1.addWidget(self.addButton) buttonLayout1.addWidget(self.editButton) buttonLayout1.addWidget(self.removeButton) buttonLayout1.addWidget(self.findButton) buttonLayout1.addWidget(self.submitButton) buttonLayout1.addWidget(self.cancelButton) buttonLayout1.addWidget(self.loadButton) buttonLayout1.addWidget(self.saveButton) buttonLayout1.addStretch() buttonLayout2 = QHBoxLayout() buttonLayout2.addWidget(self.previousButton) buttonLayout2.addWidget(self.nextButton) mainLayout = QGridLayout() mainLayout.addWidget(nameLabel, 0, 0) mainLayout.addWidget(self.nameLine, 0, 1) mainLayout.addWidget(addressLabel, 1, 0, Qt.AlignTop) mainLayout.addWidget(self.addressText, 1, 1) mainLayout.addLayout(buttonLayout1, 1, 2) mainLayout.addLayout(buttonLayout2, 2, 1) self.setLayout(mainLayout) self.setWindowTitle("Simple Address Book") def addContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.nameLine.clear() self.addressText.clear() self.updateInterface(self.AddingMode) def editContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.updateInterface(self.EditingMode) def submitContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name == "" or address == "": QMessageBox.information(self, "Empty Field", "Please enter a name and address.") return if self.currentMode == self.AddingMode: if name not in self.contacts: self.contacts[name] = address QMessageBox.information(self, "Add Successful", "\"%s\" has been added to your address book." % name) else: QMessageBox.information(self, "Add Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return elif self.currentMode == self.EditingMode: if self.oldName != name: if name not in self.contacts: QMessageBox.information(self, "Edit Successful", "\"%s\" has been edited in your address book." % self.oldName) del self.contacts[self.oldName] self.contacts[name] = address else: QMessageBox.information(self, "Edit Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return elif self.oldAddress != address: QMessageBox.information(self, "Edit Successful", "\"%s\" has been edited in your address book." % name) self.contacts[name] = address self.updateInterface(self.NavigationMode) def cancel(self): self.nameLine.setText(self.oldName) self.addressText.setText(self.oldAddress) self.updateInterface(self.NavigationMode) def removeContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name in self.contacts: button = QMessageBox.question(self, "Confirm Remove", "Are you sure you want to remove \"%s\"?" % name, QMessageBox.Yes | QMessageBox.No) if button == QMessageBox.Yes: self.previous() del self.contacts[name] QMessageBox.information(self, "Remove Successful", "\"%s\" has been removed from your address book." % name) self.updateInterface(self.NavigationMode) def next(self): name = self.nameLine.text() it = iter(self.contacts) try: while True: this_name, _ = it.next() if this_name == name: next_name, next_address = it.next() break except StopIteration: next_name, next_address = iter(self.contacts).next() self.nameLine.setText(next_name) self.addressText.setText(next_address) def previous(self): name = self.nameLine.text() prev_name = prev_address = None for this_name, this_address in self.contacts: if this_name == name: break prev_name = this_name prev_address = this_address else: self.nameLine.clear() self.addressText.clear() return if prev_name is None: for prev_name, prev_address in self.contacts: pass self.nameLine.setText(prev_name) self.addressText.setText(prev_address) def findContact(self): self.dialog.show() if self.dialog.exec_() == QDialog.Accepted: contactName = self.dialog.getFindText() if contactName in self.contacts: self.nameLine.setText(contactName) self.addressText.setText(self.contacts[contactName]) else: QMessageBox.information(self, "Contact Not Found", "Sorry, \"%s\" is not in your address book." % contactName) return self.updateInterface(self.NavigationMode) def updateInterface(self, mode): self.currentMode = mode if self.currentMode in (self.AddingMode, self.EditingMode): self.nameLine.setReadOnly(False) self.nameLine.setFocus(Qt.OtherFocusReason) self.addressText.setReadOnly(False) self.addButton.setEnabled(False) self.editButton.setEnabled(False) self.removeButton.setEnabled(False) self.nextButton.setEnabled(False) self.previousButton.setEnabled(False) self.submitButton.show() self.cancelButton.show() self.loadButton.setEnabled(False) self.saveButton.setEnabled(False) elif self.currentMode == self.NavigationMode: if not self.contacts: self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(True) self.addressText.setReadOnly(True) self.addButton.setEnabled(True) number = len(self.contacts) self.editButton.setEnabled(number >= 1) self.removeButton.setEnabled(number >= 1) self.findButton.setEnabled(number > 2) self.nextButton.setEnabled(number > 1) self.previousButton.setEnabled(number >1 ) self.submitButton.hide() self.cancelButton.hide() self.loadButton.setEnabled(True) self.saveButton.setEnabled(number >= 1) def saveToFile(self): fileName, _ = QFileDialog.getSaveFileName(self, "Save Address Book", '', "Address Book (*.abk);;All Files (*)") if not fileName: return try: out_file = open(str(fileName), 'wb') except IOError: QMessageBox.information(self, "Unable to open file", "There was an error opening \"%s\"" % fileName) return pickle.dump(self.contacts, out_file) out_file.close() def loadFromFile(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open Address Book", '', "Address Book (*.abk);;All Files (*)") if not fileName: return try: in_file = open(str(fileName), 'rb') except IOError: QMessageBox.information(self, "Unable to open file", "There was an error opening \"%s\"" % fileName) return self.contacts = pickle.load(in_file) in_file.close() if len(self.contacts) == 0: QMessageBox.information(self, "No contacts in file", "The file you are attempting to open contains no " "contacts.") else: for name, address in self.contacts: self.nameLine.setText(name) self.addressText.setText(address) self.updateInterface(self.NavigationMode) class FindDialog(QDialog): def __init__(self, parent=None): super(FindDialog, self).__init__(parent) findLabel = QLabel("Enter the name of a contact:") self.lineEdit = QLineEdit() self.findButton = QPushButton("&Find") self.findText = '' layout = QHBoxLayout() layout.addWidget(findLabel) layout.addWidget(self.lineEdit) layout.addWidget(self.findButton) self.setLayout(layout) self.setWindowTitle("Find a Contact") self.findButton.clicked.connect(self.findClicked) self.findButton.clicked.connect(self.accept) def findClicked(self): text = self.lineEdit.text() if not text: QMessageBox.information(self, "Empty Field", "Please enter a name.") return self.findText = text self.lineEdit.clear() self.hide() def getFindText(self): return self.findText if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) addressBook = AddressBook() addressBook.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/tutorials/addressbook/part7.py0000755000076500000240000004002413245231431023255 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import pickle from PyQt5.QtCore import QFile, QIODevice, Qt, QTextStream from PyQt5.QtWidgets import (QDialog, QFileDialog, QGridLayout, QHBoxLayout, QLabel, QLineEdit, QMessageBox, QPushButton, QTextEdit, QVBoxLayout, QWidget) class SortedDict(dict): class Iterator(object): def __init__(self, sorted_dict): self._dict = sorted_dict self._keys = sorted(self._dict.keys()) self._nr_items = len(self._keys) self._idx = 0 def __iter__(self): return self def next(self): if self._idx >= self._nr_items: raise StopIteration key = self._keys[self._idx] value = self._dict[key] self._idx += 1 return key, value __next__ = next def __iter__(self): return SortedDict.Iterator(self) iterkeys = __iter__ class AddressBook(QWidget): NavigationMode, AddingMode, EditingMode = range(3) def __init__(self, parent=None): super(AddressBook, self).__init__(parent) self.contacts = SortedDict() self.oldName = '' self.oldAddress = '' self.currentMode = self.NavigationMode nameLabel = QLabel("Name:") self.nameLine = QLineEdit() self.nameLine.setReadOnly(True) addressLabel = QLabel("Address:") self.addressText = QTextEdit() self.addressText.setReadOnly(True) self.addButton = QPushButton("&Add") self.addButton.show() self.editButton = QPushButton("&Edit") self.editButton.setEnabled(False) self.removeButton = QPushButton("&Remove") self.removeButton.setEnabled(False) self.findButton = QPushButton("&Find") self.findButton.setEnabled(False) self.submitButton = QPushButton("&Submit") self.submitButton.hide() self.cancelButton = QPushButton("&Cancel") self.cancelButton.hide() self.nextButton = QPushButton("&Next") self.nextButton.setEnabled(False) self.previousButton = QPushButton("&Previous") self.previousButton.setEnabled(False) self.loadButton = QPushButton("&Load...") self.loadButton.setToolTip("Load contacts from a file") self.saveButton = QPushButton("Sa&ve...") self.saveButton.setToolTip("Save contacts to a file") self.saveButton.setEnabled(False) self.exportButton = QPushButton("Ex&port") self.exportButton.setToolTip("Export as vCard") self.exportButton.setEnabled(False) self.dialog = FindDialog() self.addButton.clicked.connect(self.addContact) self.submitButton.clicked.connect(self.submitContact) self.editButton.clicked.connect(self.editContact) self.removeButton.clicked.connect(self.removeContact) self.findButton.clicked.connect(self.findContact) self.cancelButton.clicked.connect(self.cancel) self.nextButton.clicked.connect(self.next) self.previousButton.clicked.connect(self.previous) self.loadButton.clicked.connect(self.loadFromFile) self.saveButton.clicked.connect(self.saveToFile) self.exportButton.clicked.connect(self.exportAsVCard) buttonLayout1 = QVBoxLayout() buttonLayout1.addWidget(self.addButton) buttonLayout1.addWidget(self.editButton) buttonLayout1.addWidget(self.removeButton) buttonLayout1.addWidget(self.findButton) buttonLayout1.addWidget(self.submitButton) buttonLayout1.addWidget(self.cancelButton) buttonLayout1.addWidget(self.loadButton) buttonLayout1.addWidget(self.saveButton) buttonLayout1.addWidget(self.exportButton) buttonLayout1.addStretch() buttonLayout2 = QHBoxLayout() buttonLayout2.addWidget(self.previousButton) buttonLayout2.addWidget(self.nextButton) mainLayout = QGridLayout() mainLayout.addWidget(nameLabel, 0, 0) mainLayout.addWidget(self.nameLine, 0, 1) mainLayout.addWidget(addressLabel, 1, 0, Qt.AlignTop) mainLayout.addWidget(self.addressText, 1, 1) mainLayout.addLayout(buttonLayout1, 1, 2) mainLayout.addLayout(buttonLayout2, 2, 1) self.setLayout(mainLayout) self.setWindowTitle("Simple Address Book") def addContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.nameLine.clear() self.addressText.clear() self.updateInterface(self.AddingMode) def editContact(self): self.oldName = self.nameLine.text() self.oldAddress = self.addressText.toPlainText() self.updateInterface(self.EditingMode) def submitContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name == "" or address == "": QMessageBox.information(self, "Empty Field", "Please enter a name and address.") return if self.currentMode == self.AddingMode: if name not in self.contacts: self.contacts[name] = address QMessageBox.information(self, "Add Successful", "\"%s\" has been added to your address book." % name) else: QMessageBox.information(self, "Add Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return elif self.currentMode == self.EditingMode: if self.oldName != name: if name not in self.contacts: QMessageBox.information(self, "Edit Successful", "\"%s\" has been edited in your address book." % self.oldName) del self.contacts[self.oldName] self.contacts[name] = address else: QMessageBox.information(self, "Edit Unsuccessful", "Sorry, \"%s\" is already in your address book." % name) return elif self.oldAddress != address: QMessageBox.information(self, "Edit Successful", "\"%s\" has been edited in your address book." % name) self.contacts[name] = address self.updateInterface(self.NavigationMode) def cancel(self): self.nameLine.setText(self.oldName) self.addressText.setText(self.oldAddress) self.updateInterface(self.NavigationMode) def removeContact(self): name = self.nameLine.text() address = self.addressText.toPlainText() if name in self.contacts: button = QMessageBox.question(self, "Confirm Remove", "Are you sure you want to remove \"%s\"?" % name, QMessageBox.Yes | QMessageBox.No) if button == QMessageBox.Yes: self.previous() del self.contacts[name] QMessageBox.information(self, "Remove Successful", "\"%s\" has been removed from your address book." % name) self.updateInterface(self.NavigationMode) def next(self): name = self.nameLine.text() it = iter(self.contacts) try: while True: this_name, _ = it.next() if this_name == name: next_name, next_address = it.next() break except StopIteration: next_name, next_address = iter(self.contacts).next() self.nameLine.setText(next_name) self.addressText.setText(next_address) def previous(self): name = self.nameLine.text() prev_name = prev_address = None for this_name, this_address in self.contacts: if this_name == name: break prev_name = this_name prev_address = this_address else: self.nameLine.clear() self.addressText.clear() return if prev_name is None: for prev_name, prev_address in self.contacts: pass self.nameLine.setText(prev_name) self.addressText.setText(prev_address) def findContact(self): self.dialog.show() if self.dialog.exec_() == QDialog.Accepted: contactName = self.dialog.getFindText() if contactName in self.contacts: self.nameLine.setText(contactName) self.addressText.setText(self.contacts[contactName]) else: QMessageBox.information(self, "Contact Not Found", "Sorry, \"%s\" is not in your address book." % contactName) return self.updateInterface(self.NavigationMode) def updateInterface(self, mode): self.currentMode = mode if self.currentMode in (self.AddingMode, self.EditingMode): self.nameLine.setReadOnly(False) self.nameLine.setFocus(Qt.OtherFocusReason) self.addressText.setReadOnly(False) self.addButton.setEnabled(False) self.editButton.setEnabled(False) self.removeButton.setEnabled(False) self.nextButton.setEnabled(False) self.previousButton.setEnabled(False) self.submitButton.show() self.cancelButton.show() self.loadButton.setEnabled(False) self.saveButton.setEnabled(False) self.exportButton.setEnabled(False) elif self.currentMode == self.NavigationMode: if not self.contacts: self.nameLine.clear() self.addressText.clear() self.nameLine.setReadOnly(True) self.addressText.setReadOnly(True) self.addButton.setEnabled(True) number = len(self.contacts) self.editButton.setEnabled(number >= 1) self.removeButton.setEnabled(number >= 1) self.findButton.setEnabled(number > 2) self.nextButton.setEnabled(number > 1) self.previousButton.setEnabled(number >1 ) self.submitButton.hide() self.cancelButton.hide() self.exportButton.setEnabled(number >= 1) self.loadButton.setEnabled(True) self.saveButton.setEnabled(number >= 1) def saveToFile(self): fileName, _ = QFileDialog.getSaveFileName(self, "Save Address Book", '', "Address Book (*.abk);;All Files (*)") if not fileName: return try: out_file = open(str(fileName), 'wb') except IOError: QMessageBox.information(self, "Unable to open file", "There was an error opening \"%s\"" % fileName) return pickle.dump(self.contacts, out_file) out_file.close() def loadFromFile(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open Address Book", '', "Address Book (*.abk);;All Files (*)") if not fileName: return try: in_file = open(str(fileName), 'rb') except IOError: QMessageBox.information(self, "Unable to open file", "There was an error opening \"%s\"" % fileName) return self.contacts = pickle.load(in_file) in_file.close() if len(self.contacts) == 0: QMessageBox.information(self, "No contacts in file", "The file you are attempting to open contains no " "contacts.") else: for name, address in self.contacts: self.nameLine.setText(name) self.addressText.setText(address) self.updateInterface(self.NavigationMode) def exportAsVCard(self): name = str(self.nameLine.text()) address = self.addressText.toPlainText() nameList = name.split() if len(nameList) > 1: firstName = nameList[0] lastName = nameList[-1] else: firstName = name lastName = '' fileName, _ = QFileDialog.getSaveFileName(self, "Export Contact", '', "vCard Files (*.vcf);;All Files (*)") if not fileName: return out_file = QFile(fileName) if not out_file.open(QIODevice.WriteOnly): QMessageBox.information(self, "Unable to open file", out_file.errorString()) return out_s = QTextStream(out_file) out_s << 'BEGIN:VCARD' << '\n' out_s << 'VERSION:2.1' << '\n' out_s << 'N:' << lastName << ';' << firstName << '\n' out_s << 'FN:' << ' '.join(nameList) << '\n' address.replace(';', '\\;') address.replace('\n', ';') address.replace(',', ' ') out_s << 'ADR;HOME:;' << address << '\n' out_s << 'END:VCARD' << '\n' QMessageBox.information(self, "Export Successful", "\"%s\" has been exported as a vCard." % name) class FindDialog(QDialog): def __init__(self, parent=None): super(FindDialog, self).__init__(parent) findLabel = QLabel("Enter the name of a contact:") self.lineEdit = QLineEdit() self.findButton = QPushButton("&Find") self.findText = '' layout = QHBoxLayout() layout.addWidget(findLabel) layout.addWidget(self.lineEdit) layout.addWidget(self.findButton) self.setLayout(layout) self.setWindowTitle("Find a Contact") self.findButton.clicked.connect(self.findClicked) self.findButton.clicked.connect(self.accept) def findClicked(self): text = self.lineEdit.text() if not text: QMessageBox.information(self, "Empty Field", "Please enter a name.") return self.findText = text self.lineEdit.clear() self.hide() def getFindText(self): return self.findText if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) addressBook = AddressBook() addressBook.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/tutorials/addressbook/README0000644000076500000240000000125013245231431022521 0ustar philstaff00000000000000The Address Book Tutorial shows how to put together a simple yet fully-functioning GUI application. The tutorial chapters can be found in the Qt documentation, which can be viewed using Qt Assistant or a Web browser. The tutorial is also available online at http://doc.trolltech.com/tutorial.html Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/webkit/0000755000076500000240000000000013245231431016602 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/webkit/domtraversal/0000755000076500000240000000000013245231431021305 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/webkit/domtraversal/domtraversal.py0000755000076500000240000000641013245231431024366 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ########################################################################### from PyQt5.QtCore import QUrl from PyQt5.QtWidgets import QApplication, QMainWindow, QTreeWidgetItem from ui_window import Ui_Window class Window(QMainWindow, Ui_Window): def __init__(self, parent=None): super(Window, self).__init__(parent) self.setupUi(self) def setUrl(self, url): self.webView.setUrl(url) def on_webView_loadFinished(self): # Begin document inspection. self.treeWidget.clear() frame = self.webView.page().mainFrame() document = frame.documentElement() self.examineChildElements(document, self.treeWidget.invisibleRootItem()) def examineChildElements(self, parentElement, parentItem): # Traverse the document. element = parentElement.firstChild() while not element.isNull(): item = QTreeWidgetItem() item.setText(0, element.tagName()) parentItem.addChild(item) self.examineChildElements(element, item) element = element.nextSibling() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() window.setUrl(QUrl('http://qt-project.org/')) sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/webkit/domtraversal/ui_window.py0000644000076500000240000000520313245231431023663 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'window.ui' # # Created: Fri Jul 26 06:50:59 2013 # by: PyQt5 UI code generator 5.0.1-snapshot-2a99e59669ee # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Window(object): def setupUi(self, Window): Window.setObjectName("Window") Window.resize(800, 600) self.centralwidget = QtWidgets.QWidget(Window) self.centralwidget.setObjectName("centralwidget") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.centralwidget) self.verticalLayout_2.setContentsMargins(-1, 4, -1, 4) self.verticalLayout_2.setObjectName("verticalLayout_2") self.webView = QtWebKitWidgets.QWebView(self.centralwidget) self.webView.setUrl(QtCore.QUrl("http://qt.nokia.com/")) self.webView.setObjectName("webView") self.verticalLayout_2.addWidget(self.webView) Window.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(Window) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 27)) self.menubar.setObjectName("menubar") Window.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(Window) self.statusbar.setObjectName("statusbar") Window.setStatusBar(self.statusbar) self.dockWidget = QtWidgets.QDockWidget(Window) self.dockWidget.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea|QtCore.Qt.RightDockWidgetArea) self.dockWidget.setObjectName("dockWidget") self.dockWidgetContents = QtWidgets.QWidget() self.dockWidgetContents.setObjectName("dockWidgetContents") self.verticalLayout = QtWidgets.QVBoxLayout(self.dockWidgetContents) self.verticalLayout.setContentsMargins(4, 4, 4, 4) self.verticalLayout.setObjectName("verticalLayout") self.treeWidget = QtWidgets.QTreeWidget(self.dockWidgetContents) self.treeWidget.setObjectName("treeWidget") self.treeWidget.headerItem().setText(0, "1") self.treeWidget.header().setVisible(False) self.verticalLayout.addWidget(self.treeWidget) self.dockWidget.setWidget(self.dockWidgetContents) Window.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidget) self.retranslateUi(Window) QtCore.QMetaObject.connectSlotsByName(Window) def retranslateUi(self, Window): _translate = QtCore.QCoreApplication.translate Window.setWindowTitle(_translate("Window", "Web Element DOM Traversal")) self.dockWidget.setWindowTitle(_translate("Window", "Document Structure")) from PyQt5 import QtWebKitWidgets PyQt5_gpl-5.10.1/examples/webkit/domtraversal/window.ui0000644000076500000240000000426613245231431023163 0ustar philstaff00000000000000 Window 0 0 800 600 Web Element DOM Traversal 4 4 http://qt.nokia.com/ 0 0 800 27 Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea Document Structure 1 4 false false 1 QWebView QWidget
      QtWebKit/QWebView
      PyQt5_gpl-5.10.1/examples/webkit/fancybrowser/0000755000076500000240000000000013245231431021306 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/webkit/fancybrowser/fancybrowser.py0000755000076500000240000001736713245231431024405 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ########################################################################### from PyQt5.QtCore import QFile, QIODevice, Qt, QTextStream, QUrl from PyQt5.QtWidgets import (QAction, QApplication, QLineEdit, QMainWindow, QSizePolicy, QStyle, QTextEdit) from PyQt5.QtNetwork import QNetworkProxyFactory, QNetworkRequest from PyQt5.QtWebKitWidgets import QWebPage, QWebView import jquery_rc class MainWindow(QMainWindow): def __init__(self, url): super(MainWindow, self).__init__() self.progress = 0 fd = QFile(":/jquery.min.js") if fd.open(QIODevice.ReadOnly | QFile.Text): self.jQuery = QTextStream(fd).readAll() fd.close() else: self.jQuery = '' QNetworkProxyFactory.setUseSystemConfiguration(True) self.view = QWebView(self) self.view.load(url) self.view.loadFinished.connect(self.adjustLocation) self.view.titleChanged.connect(self.adjustTitle) self.view.loadProgress.connect(self.setProgress) self.view.loadFinished.connect(self.finishLoading) self.locationEdit = QLineEdit(self) self.locationEdit.setSizePolicy(QSizePolicy.Expanding, self.locationEdit.sizePolicy().verticalPolicy()) self.locationEdit.returnPressed.connect(self.changeLocation) toolBar = self.addToolBar("Navigation") toolBar.addAction(self.view.pageAction(QWebPage.Back)) toolBar.addAction(self.view.pageAction(QWebPage.Forward)) toolBar.addAction(self.view.pageAction(QWebPage.Reload)) toolBar.addAction(self.view.pageAction(QWebPage.Stop)) toolBar.addWidget(self.locationEdit) viewMenu = self.menuBar().addMenu("&View") viewSourceAction = QAction("Page Source", self) viewSourceAction.triggered.connect(self.viewSource) viewMenu.addAction(viewSourceAction) effectMenu = self.menuBar().addMenu("&Effect") effectMenu.addAction("Highlight all links", self.highlightAllLinks) self.rotateAction = QAction( self.style().standardIcon(QStyle.SP_FileDialogDetailedView), "Turn images upside down", self, checkable=True, toggled=self.rotateImages) effectMenu.addAction(self.rotateAction) toolsMenu = self.menuBar().addMenu("&Tools") toolsMenu.addAction("Remove GIF images", self.removeGifImages) toolsMenu.addAction("Remove all inline frames", self.removeInlineFrames) toolsMenu.addAction("Remove all object elements", self.removeObjectElements) toolsMenu.addAction("Remove all embedded elements", self.removeEmbeddedElements) self.setCentralWidget(self.view) def viewSource(self): accessManager = self.view.page().networkAccessManager() request = QNetworkRequest(self.view.url()) reply = accessManager.get(request) reply.finished.connect(self.slotSourceDownloaded) def slotSourceDownloaded(self): reply = self.sender() self.textEdit = QTextEdit() self.textEdit.setAttribute(Qt.WA_DeleteOnClose) self.textEdit.show() self.textEdit.setPlainText(QTextStream(reply).readAll()) self.textEdit.resize(600, 400) reply.deleteLater() def adjustLocation(self): self.locationEdit.setText(self.view.url().toString()) def changeLocation(self): url = QUrl.fromUserInput(self.locationEdit.text()) self.view.load(url) self.view.setFocus() def adjustTitle(self): if 0 < self.progress < 100: self.setWindowTitle("%s (%s%%)" % (self.view.title(), self.progress)) else: self.setWindowTitle(self.view.title()) def setProgress(self, p): self.progress = p self.adjustTitle() def finishLoading(self): self.progress = 100 self.adjustTitle() self.view.page().mainFrame().evaluateJavaScript(self.jQuery) self.rotateImages(self.rotateAction.isChecked()) def highlightAllLinks(self): code = """$('a').each( function () { $(this).css('background-color', 'yellow') } )""" self.view.page().mainFrame().evaluateJavaScript(code) def rotateImages(self, invert): if invert: code = """ $('img').each( function () { $(this).css('-webkit-transition', '-webkit-transform 2s'); $(this).css('-webkit-transform', 'rotate(180deg)') } )""" else: code = """ $('img').each( function () { $(this).css('-webkit-transition', '-webkit-transform 2s'); $(this).css('-webkit-transform', 'rotate(0deg)') } )""" self.view.page().mainFrame().evaluateJavaScript(code) def removeGifImages(self): code = "$('[src*=gif]').remove()" self.view.page().mainFrame().evaluateJavaScript(code) def removeInlineFrames(self): code = "$('iframe').remove()" self.view.page().mainFrame().evaluateJavaScript(code) def removeObjectElements(self): code = "$('object').remove()" self.view.page().mainFrame().evaluateJavaScript(code) def removeEmbeddedElements(self): code = "$('embed').remove()" self.view.page().mainFrame().evaluateJavaScript(code) if __name__ == '__main__': import sys app = QApplication(sys.argv) if len(sys.argv) > 1: url = QUrl(sys.argv[1]) else: url = QUrl('http://www.google.com/ncr') browser = MainWindow(url) browser.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/webkit/fancybrowser/jquery.qrc0000644000076500000240000000013513245231431023333 0ustar philstaff00000000000000 jquery.min.js PyQt5_gpl-5.10.1/examples/webkit/formextractor/0000755000076500000240000000000013245231431021501 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/webkit/formextractor/form.html0000644000076500000240000000177513245231431023344 0ustar philstaff00000000000000

      The Green People Book Club

      Welcome to The Green People Book Club. Please register to obtain a membership with us.

      First name:
      Last name:
      Gender: Male Female
      Check here if you would like to receive regular updates from us:
      PyQt5_gpl-5.10.1/examples/webkit/formextractor/formextractor.py0000755000076500000240000001247513245231431024766 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ########################################################################### from PyQt5.QtCore import pyqtSlot, QUrl from PyQt5.QtGui import QKeySequence from PyQt5.QtWidgets import (QAction, QApplication, QMainWindow, QMessageBox, QWidget) import formextractor_rc from ui_formextractor import Ui_Form class FormExtractor(QWidget): def __init__(self, parent=None): super(FormExtractor, self).__init__(parent) self.ui = Ui_Form() self.ui.setupUi(self) webView = self.ui.webView webView.setUrl(QUrl('qrc:/form.html')) webView.page().mainFrame().javaScriptWindowObjectCleared.connect( self.populateJavaScriptWindowObject) self.resize(300, 300) @pyqtSlot() def submit(self): frame = self.ui.webView.page().mainFrame() firstName = frame.findFirstElement('#firstname') lastName = frame.findFirstElement('#lastname') maleGender = frame.findFirstElement('#genderMale') femaleGender = frame.findFirstElement('#genderFemale') updates = frame.findFirstElement('#updates') self.ui.firstNameEdit.setText(firstName.evaluateJavaScript('this.value')) self.ui.lastNameEdit.setText(lastName.evaluateJavaScript('this.value')) if maleGender.evaluateJavaScript('this.checked'): self.ui.genderEdit.setText( maleGender.evaluateJavaScript('this.value')) elif femaleGender.evaluateJavaScript('this.checked'): self.ui.genderEdit.setText( femaleGender.evaluateJavaScript('this.value')) if updates.evaluateJavaScript('this.checked'): self.ui.updatesEdit.setText("Yes") else: self.ui.updatesEdit.setText("No") def populateJavaScriptWindowObject(self): self.ui.webView.page().mainFrame().addToJavaScriptWindowObject( 'formExtractor', self) class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.createActions() self.createMenus() self.centralWidget = FormExtractor(self) self.setCentralWidget(self.centralWidget) def createActions(self): self.exitAct = QAction("E&xit", self, statusTip="Exit the application", shortcut=QKeySequence.Quit, triggered=self.close) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=QApplication.instance().aboutQt) def createMenus(self): fileMenu = self.menuBar().addMenu("&File") fileMenu.addAction(self.exitAct) self.menuBar().addSeparator() helpMenu = self.menuBar().addMenu("&Help") helpMenu.addAction(self.aboutAct) helpMenu.addAction(self.aboutQtAct) def about(self): QMessageBox.about(self, "About Form Extractor", "The Form Extractor example demonstrates how to " "extract data from a web form using QtWebKit.") if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWindow = MainWindow() mainWindow.setWindowTitle("Form Extractor") mainWindow.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/webkit/formextractor/formextractor.qrc0000644000076500000240000000014013245231431025102 0ustar philstaff00000000000000 form.html PyQt5_gpl-5.10.1/examples/webkit/formextractor/formextractor.ui0000644000076500000240000001034313245231431024740 0ustar philstaff00000000000000 Form 0 0 680 218 Form Web Form 200 150 400 16777215 about:blank Qt::Horizontal 28 20 Extracted Data QFormLayout::FieldsStayAtSizeHint First Name true Last Name true Gender true Receive Updates true Qt::Vertical 20 24 QWebView QWidget
      QtWebKit/QWebView
      PyQt5_gpl-5.10.1/examples/webkit/formextractor/formextractor_rc.py0000644000076500000240000001162613245231431025444 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Tue May 14 17:58:45 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x03\xfd\ \x3c\ \x68\x74\x6d\x6c\x3e\x3c\x62\x6f\x64\x79\x3e\x0a\x3c\x68\x31\x3e\ \x0a\x54\x68\x65\x20\x47\x72\x65\x65\x6e\x20\x50\x65\x6f\x70\x6c\ \x65\x20\x42\x6f\x6f\x6b\x20\x43\x6c\x75\x62\x0a\x3c\x2f\x68\x31\ \x3e\x0a\x0a\x3c\x70\x3e\x0a\x57\x65\x6c\x63\x6f\x6d\x65\x20\x74\ \x6f\x20\x54\x68\x65\x20\x47\x72\x65\x65\x6e\x20\x50\x65\x6f\x70\ \x6c\x65\x20\x42\x6f\x6f\x6b\x20\x43\x6c\x75\x62\x2e\x20\x50\x6c\ \x65\x61\x73\x65\x20\x72\x65\x67\x69\x73\x74\x65\x72\x20\x74\x6f\ \x20\x6f\x62\x74\x61\x69\x6e\x20\x61\x20\x6d\x65\x6d\x62\x65\x72\ \x73\x68\x69\x70\x20\x77\x69\x74\x68\x20\x75\x73\x2e\x0a\x3c\x2f\ \x70\x3e\x0a\x20\x20\x20\x20\x3c\x66\x6f\x72\x6d\x20\x6f\x6e\x73\ \x75\x62\x6d\x69\x74\x3d\x22\x66\x6f\x72\x6d\x45\x78\x74\x72\x61\ \x63\x74\x6f\x72\x2e\x73\x75\x62\x6d\x69\x74\x28\x29\x22\x3e\x0a\ \x20\x20\x20\x20\x3c\x74\x61\x62\x6c\x65\x3e\x0a\x20\x20\x20\x20\ \x3c\x74\x62\x6f\x64\x79\x3e\x3c\x74\x72\x3e\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x3c\x74\x64\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x46\x69\x72\x73\x74\x20\x6e\x61\x6d\x65\x3a\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x2f\x74\x64\x3e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x3c\x74\x64\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x3c\x69\x6e\x70\x75\x74\x20\x74\x79\x70\x65\x3d\ \x22\x74\x65\x78\x74\x22\x20\x69\x64\x3d\x22\x66\x69\x72\x73\x74\ \x6e\x61\x6d\x65\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\ \x2f\x74\x64\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x74\x72\x3e\x0a\x20\ \x20\x20\x20\x3c\x74\x72\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x3c\x74\x64\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4c\x61\x73\ \x74\x20\x6e\x61\x6d\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x3c\x2f\x74\x64\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x74\ \x64\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\ \x69\x6e\x70\x75\x74\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\ \x22\x20\x69\x64\x3d\x22\x6c\x61\x73\x74\x6e\x61\x6d\x65\x22\x3e\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x2f\x74\x64\x3e\x0a\x20\ \x20\x20\x20\x3c\x2f\x74\x72\x3e\x0a\x20\x20\x20\x20\x3c\x74\x72\ \x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x74\x64\x3e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x47\x65\x6e\x64\x65\x72\x3a\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x2f\x74\x64\x3e\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x74\x64\x3e\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x3c\x69\x6e\x70\x75\x74\x20\x74\x79\x70\x65\x3d\x22\x72\ \x61\x64\x69\x6f\x22\x20\x6e\x61\x6d\x65\x3d\x22\x67\x65\x6e\x64\ \x65\x72\x22\x20\x69\x64\x3d\x22\x67\x65\x6e\x64\x65\x72\x4d\x61\ \x6c\x65\x22\x20\x76\x61\x6c\x75\x65\x3d\x22\x4d\x61\x6c\x65\x22\ \x3e\x20\x4d\x61\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\ \x69\x6e\x70\x75\x74\x20\x74\x79\x70\x65\x3d\x22\x72\x61\x64\x69\ \x6f\x22\x20\x6e\x61\x6d\x65\x3d\x22\x67\x65\x6e\x64\x65\x72\x22\ \x20\x69\x64\x3d\x22\x67\x65\x6e\x64\x65\x72\x46\x65\x6d\x61\x6c\ \x65\x22\x20\x76\x61\x6c\x75\x65\x3d\x22\x46\x65\x6d\x61\x6c\x65\ \x22\x3e\x20\x46\x65\x6d\x61\x6c\x65\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x3c\x2f\x74\x64\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x74\x72\ \x3e\x0a\x20\x20\x20\x20\x3c\x74\x72\x3e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x3c\x74\x64\x20\x63\x6f\x6c\x73\x70\x61\x6e\x3d\x22\ \x32\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x69\x6e\x70\ \x75\x74\x20\x74\x79\x70\x65\x3d\x22\x63\x68\x65\x63\x6b\x62\x6f\ \x78\x22\x20\x69\x64\x3d\x22\x75\x70\x64\x61\x74\x65\x73\x22\x20\ \x76\x61\x6c\x75\x65\x3d\x22\x72\x65\x63\x65\x69\x76\x65\x22\x3e\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x43\x68\x65\x63\x6b\x20\x68\ \x65\x72\x65\x20\x69\x66\x20\x79\x6f\x75\x20\x77\x6f\x75\x6c\x64\ \x20\x6c\x69\x6b\x65\x20\x74\x6f\x20\x72\x65\x63\x65\x69\x76\x65\ \x20\x72\x65\x67\x75\x6c\x61\x72\x20\x75\x70\x64\x61\x74\x65\x73\ \x20\x66\x72\x6f\x6d\x20\x75\x73\x3a\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x3c\x2f\x74\x64\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x74\x72\ \x3e\x0a\x20\x20\x20\x20\x3c\x2f\x74\x62\x6f\x64\x79\x3e\x3c\x2f\ \x74\x61\x62\x6c\x65\x3e\x0a\x20\x20\x20\x20\x3c\x69\x6e\x70\x75\ \x74\x20\x74\x79\x70\x65\x3d\x22\x73\x75\x62\x6d\x69\x74\x22\x20\ \x76\x61\x6c\x75\x65\x3d\x22\x53\x75\x62\x6d\x69\x74\x22\x3e\x0a\ \x20\x20\x20\x20\x3c\x2f\x66\x6f\x72\x6d\x3e\x0a\x0a\x3c\x2f\x62\ \x6f\x64\x79\x3e\x3c\x2f\x68\x74\x6d\x6c\x3e\x0a\ " qt_resource_name = b"\ \x00\x09\ \x09\x04\x21\xfc\ \x00\x66\ \x00\x6f\x00\x72\x00\x6d\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\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() PyQt5_gpl-5.10.1/examples/webkit/formextractor/ui_formextractor.py0000644000076500000240000001131513245231431025450 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'formextractor.ui' # # Created: Tue May 14 17:59:08 2013 # by: PyQt5 UI code generator 5.0-snapshot-b0831183bf83 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(680, 218) self.horizontalLayout = QtWidgets.QHBoxLayout(Form) self.horizontalLayout.setObjectName("horizontalLayout") self.webFormGroupBox = QtWidgets.QGroupBox(Form) self.webFormGroupBox.setObjectName("webFormGroupBox") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.webFormGroupBox) self.verticalLayout_2.setObjectName("verticalLayout_2") self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") self.webView = QtWebKitWidgets.QWebView(self.webFormGroupBox) self.webView.setMinimumSize(QtCore.QSize(200, 150)) self.webView.setMaximumSize(QtCore.QSize(400, 16777215)) self.webView.setUrl(QtCore.QUrl("about:blank")) self.webView.setObjectName("webView") self.verticalLayout.addWidget(self.webView) self.verticalLayout_2.addLayout(self.verticalLayout) self.horizontalLayout.addWidget(self.webFormGroupBox) spacerItem = QtWidgets.QSpacerItem(28, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) self.dataGroupBox = QtWidgets.QGroupBox(Form) self.dataGroupBox.setObjectName("dataGroupBox") self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.dataGroupBox) self.verticalLayout_3.setObjectName("verticalLayout_3") self.formLayout = QtWidgets.QFormLayout() self.formLayout.setFieldGrowthPolicy(QtWidgets.QFormLayout.FieldsStayAtSizeHint) self.formLayout.setObjectName("formLayout") self.firstNameLabel = QtWidgets.QLabel(self.dataGroupBox) self.firstNameLabel.setObjectName("firstNameLabel") self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.firstNameLabel) self.firstNameEdit = QtWidgets.QLineEdit(self.dataGroupBox) self.firstNameEdit.setReadOnly(True) self.firstNameEdit.setObjectName("firstNameEdit") self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.firstNameEdit) self.lastNameLabel = QtWidgets.QLabel(self.dataGroupBox) self.lastNameLabel.setObjectName("lastNameLabel") self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.lastNameLabel) self.lastNameEdit = QtWidgets.QLineEdit(self.dataGroupBox) self.lastNameEdit.setReadOnly(True) self.lastNameEdit.setObjectName("lastNameEdit") self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.lastNameEdit) self.genderLabel = QtWidgets.QLabel(self.dataGroupBox) self.genderLabel.setObjectName("genderLabel") self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.genderLabel) self.genderEdit = QtWidgets.QLineEdit(self.dataGroupBox) self.genderEdit.setReadOnly(True) self.genderEdit.setObjectName("genderEdit") self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.genderEdit) self.updatesLabel = QtWidgets.QLabel(self.dataGroupBox) self.updatesLabel.setObjectName("updatesLabel") self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.updatesLabel) self.updatesEdit = QtWidgets.QLineEdit(self.dataGroupBox) self.updatesEdit.setReadOnly(True) self.updatesEdit.setObjectName("updatesEdit") self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.updatesEdit) self.verticalLayout_3.addLayout(self.formLayout) spacerItem1 = QtWidgets.QSpacerItem(20, 24, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.verticalLayout_3.addItem(spacerItem1) self.horizontalLayout.addWidget(self.dataGroupBox) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.webFormGroupBox.setTitle(_translate("Form", "Web Form")) self.dataGroupBox.setTitle(_translate("Form", "Extracted Data")) self.firstNameLabel.setText(_translate("Form", "First Name")) self.lastNameLabel.setText(_translate("Form", "Last Name")) self.genderLabel.setText(_translate("Form", "Gender")) self.updatesLabel.setText(_translate("Form", "Receive Updates")) from PyQt5 import QtWebKitWidgets PyQt5_gpl-5.10.1/examples/webkit/framecapture.py0000755000076500000240000001245313245231431021642 0ustar philstaff00000000000000#!/usr/bin/env python """ Capture a web page and save its internal frames in different images framecapture.py Notes: 'url' is the URL of the web page to be captured 'outputfile' is the prefix of the image files to be generated Example: framecapture qt.nokia.com trolltech.png Result: trolltech.png (full page) trolltech_frame1.png (...) trolltech_frameN.png ('N' number of internal frames) """ ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ########################################################################### import sys from PyQt5.QtCore import pyqtSignal, QObject, QSize, Qt, QUrl from PyQt5.QtGui import QImage, QPainter from PyQt5.QtWidgets import QApplication from PyQt5.QtWebKitWidgets import QWebPage def cout(s): sys.stdout.write(s) sys.stdout.flush() def cerr(s): sys.stderr.write(s) sys.stderr.flush() class FrameCapture(QObject): finished = pyqtSignal() def __init__(self): super(FrameCapture, self).__init__() self._percent = 0 self._page = QWebPage() self._page.mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff) self._page.mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) self._page.loadProgress.connect(self.printProgress) self._page.loadFinished.connect(self.saveResult) def load(self, url, outputFileName): cout("Loading %s\n" % url.toString()) self._percent = 0 index = outputFileName.rfind('.') self._fileName = index == -1 and outputFileName + ".png" or outputFileName self._page.mainFrame().load(url) self._page.setViewportSize(QSize(1024, 768)) def printProgress(self, percent): if self._percent >= percent: return self._percent += 1 while self._percent < percent: self._percent += 1 cout("#") def saveResult(self, ok): cout("\n") # Crude error-checking. if not ok: cerr("Failed loading %s\n" % self._page.mainFrame().url().toString()) self.finished.emit() return # Save each frame in different image files. self._frameCounter = 0 self.saveFrame(self._page.mainFrame()) self.finished.emit() def saveFrame(self, frame): fileName = self._fileName if self._frameCounter: index = fileName.rfind('.') fileName = "%s_frame%s%s" % (fileName[:index], self._frameCounter, fileName[index:]) image = QImage(frame.contentsSize(), QImage.Format_ARGB32_Premultiplied) image.fill(Qt.transparent) painter = QPainter(image) painter.setRenderHint(QPainter.Antialiasing, True) painter.setRenderHint(QPainter.TextAntialiasing, True) painter.setRenderHint(QPainter.SmoothPixmapTransform, True) frame.documentElement().render(painter) painter.end() image.save(fileName) self._frameCounter += 1 for childFrame in frame.childFrames(): self.saveFrame(childFrame) if __name__ == '__main__': if len(sys.argv) != 3: cerr(__doc__) sys.exit(1) url = QUrl.fromUserInput(sys.argv[1]) fileName = sys.argv[2] app = QApplication(sys.argv) capture = FrameCapture() capture.finished.connect(app.quit) capture.load(url, fileName) app.exec_() PyQt5_gpl-5.10.1/examples/webkit/previewer/0000755000076500000240000000000013245231431020612 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/webkit/previewer/previewer.py0000755000076500000240000001476213245231431023211 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ########################################################################### from PyQt5.QtCore import QFile, QIODevice, QTextStream, QUrl from PyQt5.QtGui import QKeySequence from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QInputDialog, QLineEdit, QMainWindow, QMessageBox, QWidget) from ui_previewer import Ui_Form class Previewer(QWidget, Ui_Form): def __init__(self, parent=None): super(Previewer, self).__init__(parent) self.setupUi(self) self.baseUrl = QUrl() def setBaseUrl(self, url): self.baseUrl = url def on_previewButton_clicked(self): # Update the contents in the web viewer. text = self.plainTextEdit.toPlainText() self.webView.setHtml(text, self.baseUrl) class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.createActions() self.createMenus() self.centralWidget = Previewer(self) self.setCentralWidget(self.centralWidget) self.centralWidget.webView.loadFinished.connect(self.updateTextEdit) self.setStartupText() def createActions(self): self.openAct = QAction("&Open...", self, shortcut=QKeySequence.Open, statusTip="Open an existing HTML file", triggered=self.open) self.openUrlAct = QAction("&Open URL...", self, shortcut="Ctrl+U", statusTip="Open a URL", triggered=self.openUrl) self.saveAct = QAction("&Save", self, shortcut=QKeySequence.Save, statusTip="Save the HTML file to disk", triggered=self.save) self.exitAct = QAction("E&xit", self, shortcut=QKeySequence.Quit, statusTip="Exit the application", triggered=self.close) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=QApplication.instance().aboutQt) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.openAct) self.fileMenu.addAction(self.openUrlAct) self.fileMenu.addAction(self.saveAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def about(self): QMessageBox.about(self, "About Previewer", "The Previewer example demonstrates how to view HTML " "documents using a QtWebKitWidgets.QWebView.") def open(self): fileName, _ = QFileDialog.getOpenFileName(self) if fileName: fd = QFile(fileName) if not fd.open(QIODevice.ReadOnly): QMessageBox.information(self, "Unable to open file", fd.errorString()) return output = QTextStream(fd).readAll() # Display contents. self.centralWidget.plainTextEdit.setPlainText(output) self.centralWidget.setBaseUrl(QUrl.fromLocalFile(fileName)) def openUrl(self): url, ok = QInputDialog.getText(self, "Enter a URL", "URL:", QLineEdit.Normal, "http://") if ok and url: url = QUrl(url) self.centralWidget.webView.setUrl(url) def save(self): content = self.centralWidget.plainTextEdit.toPlainText() fileName, _ = QFileDialog.getSaveFileName(self) if fileName: fd = QFile(fileName) if not fd.open(QIODevice.WriteOnly): QMessageBox.information(self, "Unable to open file", fd.errorString()) return QTextStream(fd) << content def updateTextEdit(self): mainFrame = self.centralWidget.webView.page().mainFrame() frameText = mainFrame.toHtml() self.centralWidget.plainTextEdit.setPlainText(frameText) def setStartupText(self): self.centralWidget.webView.setHtml("""

      HTML Previewer

      This example shows you how to use QtWebKitWidgets.QWebView to preview HTML data written in a QtWidgets.QPlainTextEdit.

      """) if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWindow = MainWindow() mainWindow.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/webkit/previewer/previewer.ui0000644000076500000240000000475213245231431023171 0ustar philstaff00000000000000 Form 0 0 911 688 Form Qt::Horizontal HTML Editor Clear Preview HTML Preview about:blank QWebView QWidget
      QtWebKit/QWebView
      clearButton clicked() plainTextEdit clear() 56 653 98 551
      PyQt5_gpl-5.10.1/examples/webkit/previewer/ui_previewer.py0000644000076500000240000000570313245231431023676 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'previewer.ui' # # Created: Tue May 14 22:35:29 2013 # by: PyQt5 UI code generator 5.0-snapshot-3507ed3a4178 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(911, 688) self.horizontalLayout_4 = QtWidgets.QHBoxLayout(Form) self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.splitter = QtWidgets.QSplitter(Form) self.splitter.setOrientation(QtCore.Qt.Horizontal) self.splitter.setObjectName("splitter") self.editorBox = QtWidgets.QGroupBox(self.splitter) self.editorBox.setObjectName("editorBox") self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.editorBox) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.verticalLayout_2 = QtWidgets.QVBoxLayout() self.verticalLayout_2.setObjectName("verticalLayout_2") self.plainTextEdit = QtWidgets.QPlainTextEdit(self.editorBox) self.plainTextEdit.setObjectName("plainTextEdit") self.verticalLayout_2.addWidget(self.plainTextEdit) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.clearButton = QtWidgets.QPushButton(self.editorBox) self.clearButton.setObjectName("clearButton") self.horizontalLayout.addWidget(self.clearButton) self.previewButton = QtWidgets.QPushButton(self.editorBox) self.previewButton.setObjectName("previewButton") self.horizontalLayout.addWidget(self.previewButton) self.verticalLayout_2.addLayout(self.horizontalLayout) self.horizontalLayout_2.addLayout(self.verticalLayout_2) self.previewerBox = QtWidgets.QGroupBox(self.splitter) self.previewerBox.setObjectName("previewerBox") self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.previewerBox) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.webView = QtWebKitWidgets.QWebView(self.previewerBox) self.webView.setUrl(QtCore.QUrl("about:blank")) self.webView.setObjectName("webView") self.horizontalLayout_3.addWidget(self.webView) self.horizontalLayout_4.addWidget(self.splitter) self.retranslateUi(Form) self.clearButton.clicked.connect(self.plainTextEdit.clear) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.editorBox.setTitle(_translate("Form", "HTML Editor")) self.clearButton.setText(_translate("Form", "Clear")) self.previewButton.setText(_translate("Form", "Preview")) self.previewerBox.setTitle(_translate("Form", "HTML Preview")) from PyQt5 import QtWebKitWidgets PyQt5_gpl-5.10.1/examples/webkit/README0000644000076500000240000000130313245231431017457 0ustar philstaff00000000000000PyQt provides the QtWebKit and QtWebKitWidgets modules that implement the WebKit browser and related classes. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/webkit/simpleselector/0000755000076500000240000000000013245231431021634 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/webkit/simpleselector/simpleselector.py0000755000076500000240000000600113245231431025240 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ########################################################################### from PyQt5.QtCore import QUrl from PyQt5.QtWidgets import QApplication, QWidget from ui_window import Ui_Window class SimpleSelector(QWidget, Ui_Window): def __init__(self, parent=None): super(SimpleSelector, self).__init__(parent) self.setupUi(self) def on_elementLineEdit_returnPressed(self): frame = self.webView.page().mainFrame() # Select elements. document = frame.documentElement() elements = document.findAll(self.elementLineEdit.text()) for element in elements: element.setAttribute('style', 'background-color: #f0f090') def on_highlightButton_clicked(self): self.on_elementLineEdit_returnPressed() def setUrl(self, url): self.webView.setUrl(url) if __name__ == '__main__': import sys app = QApplication(sys.argv) win = SimpleSelector() win.setUrl(QUrl('http://www.webkit.org')) win.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/webkit/simpleselector/ui_window.py0000644000076500000240000000444313245231431024217 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'window.ui' # # Created: Tue May 14 22:42:29 2013 # by: PyQt5 UI code generator 5.0-snapshot-3507ed3a4178 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Window(object): def setupUi(self, Window): Window.setObjectName("Window") Window.resize(640, 480) self.verticalLayout = QtWidgets.QVBoxLayout(Window) self.verticalLayout.setObjectName("verticalLayout") self.webView = QtWebKitWidgets.QWebView(Window) self.webView.setUrl(QtCore.QUrl("http://webkit.org/")) self.webView.setObjectName("webView") self.verticalLayout.addWidget(self.webView) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.formLayout = QtWidgets.QFormLayout() self.formLayout.setFieldGrowthPolicy(QtWidgets.QFormLayout.ExpandingFieldsGrow) self.formLayout.setObjectName("formLayout") self.elementLabel = QtWidgets.QLabel(Window) self.elementLabel.setObjectName("elementLabel") self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.elementLabel) self.elementLineEdit = QtWidgets.QLineEdit(Window) self.elementLineEdit.setObjectName("elementLineEdit") self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.elementLineEdit) self.horizontalLayout.addLayout(self.formLayout) self.highlightButton = QtWidgets.QPushButton(Window) self.highlightButton.setObjectName("highlightButton") self.horizontalLayout.addWidget(self.highlightButton) self.verticalLayout.addLayout(self.horizontalLayout) self.elementLabel.setBuddy(self.elementLineEdit) self.retranslateUi(Window) QtCore.QMetaObject.connectSlotsByName(Window) def retranslateUi(self, Window): _translate = QtCore.QCoreApplication.translate Window.setWindowTitle(_translate("Window", "Web Element Selector")) self.elementLabel.setText(_translate("Window", "&Element:")) self.elementLineEdit.setText(_translate("Window", "li a")) self.highlightButton.setText(_translate("Window", "&Highlight")) from PyQt5 import QtWebKitWidgets PyQt5_gpl-5.10.1/examples/webkit/simpleselector/window.ui0000644000076500000240000000344113245231431023504 0ustar philstaff00000000000000 Window 0 0 640 480 Web Element Selector http://webkit.org/ QFormLayout::ExpandingFieldsGrow &Element: elementLineEdit li a &Highlight QWebView QWidget
      QtWebKit/QWebView
      PyQt5_gpl-5.10.1/examples/widgets/0000755000076500000240000000000013245231431016763 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/widgets/analogclock.py0000755000076500000240000001001513245231431021612 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QPoint, Qt, QTime, QTimer from PyQt5.QtGui import QColor, QPainter, QPolygon from PyQt5.QtWidgets import QApplication, QWidget class AnalogClock(QWidget): hourHand = QPolygon([ QPoint(7, 8), QPoint(-7, 8), QPoint(0, -40) ]) minuteHand = QPolygon([ QPoint(7, 8), QPoint(-7, 8), QPoint(0, -70) ]) hourColor = QColor(127, 0, 127) minuteColor = QColor(0, 127, 127, 191) def __init__(self, parent=None): super(AnalogClock, self).__init__(parent) timer = QTimer(self) timer.timeout.connect(self.update) timer.start(1000) self.setWindowTitle("Analog Clock") self.resize(200, 200) def paintEvent(self, event): side = min(self.width(), self.height()) time = QTime.currentTime() painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) painter.translate(self.width() / 2, self.height() / 2) painter.scale(side / 200.0, side / 200.0) painter.setPen(Qt.NoPen) painter.setBrush(AnalogClock.hourColor) painter.save() painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0))) painter.drawConvexPolygon(AnalogClock.hourHand) painter.restore() painter.setPen(AnalogClock.hourColor) for i in range(12): painter.drawLine(88, 0, 96, 0) painter.rotate(30.0) painter.setPen(Qt.NoPen) painter.setBrush(AnalogClock.minuteColor) painter.save() painter.rotate(6.0 * (time.minute() + time.second() / 60.0)) painter.drawConvexPolygon(AnalogClock.minuteHand) painter.restore() painter.setPen(AnalogClock.minuteColor) for j in range(60): if (j % 5) != 0: painter.drawLine(92, 0, 96, 0) painter.rotate(6.0) if __name__ == '__main__': import sys app = QApplication(sys.argv) clock = AnalogClock() clock.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/calculator.py0000755000076500000240000002762013245231431021500 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import math from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QApplication, QGridLayout, QLayout, QLineEdit, QSizePolicy, QToolButton, QWidget) class Button(QToolButton): def __init__(self, text, parent=None): super(Button, self).__init__(parent) self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) self.setText(text) def sizeHint(self): size = super(Button, self).sizeHint() size.setHeight(size.height() + 20) size.setWidth(max(size.width(), size.height())) return size class Calculator(QWidget): NumDigitButtons = 10 def __init__(self, parent=None): super(Calculator, self).__init__(parent) self.pendingAdditiveOperator = '' self.pendingMultiplicativeOperator = '' self.sumInMemory = 0.0 self.sumSoFar = 0.0 self.factorSoFar = 0.0 self.waitingForOperand = True self.display = QLineEdit('0') self.display.setReadOnly(True) self.display.setAlignment(Qt.AlignRight) self.display.setMaxLength(15) font = self.display.font() font.setPointSize(font.pointSize() + 8) self.display.setFont(font) self.digitButtons = [] for i in range(Calculator.NumDigitButtons): self.digitButtons.append(self.createButton(str(i), self.digitClicked)) self.pointButton = self.createButton(".", self.pointClicked) self.changeSignButton = self.createButton(u"\N{PLUS-MINUS SIGN}", self.changeSignClicked) self.backspaceButton = self.createButton("Backspace", self.backspaceClicked) self.clearButton = self.createButton("Clear", self.clear) self.clearAllButton = self.createButton("Clear All", self.clearAll) self.clearMemoryButton = self.createButton("MC", self.clearMemory) self.readMemoryButton = self.createButton("MR", self.readMemory) self.setMemoryButton = self.createButton("MS", self.setMemory) self.addToMemoryButton = self.createButton("M+", self.addToMemory) self.divisionButton = self.createButton(u"\N{DIVISION SIGN}", self.multiplicativeOperatorClicked) self.timesButton = self.createButton(u"\N{MULTIPLICATION SIGN}", self.multiplicativeOperatorClicked) self.minusButton = self.createButton("-", self.additiveOperatorClicked) self.plusButton = self.createButton("+", self.additiveOperatorClicked) self.squareRootButton = self.createButton("Sqrt", self.unaryOperatorClicked) self.powerButton = self.createButton(u"x\N{SUPERSCRIPT TWO}", self.unaryOperatorClicked) self.reciprocalButton = self.createButton("1/x", self.unaryOperatorClicked) self.equalButton = self.createButton("=", self.equalClicked) mainLayout = QGridLayout() mainLayout.setSizeConstraint(QLayout.SetFixedSize) mainLayout.addWidget(self.display, 0, 0, 1, 6) mainLayout.addWidget(self.backspaceButton, 1, 0, 1, 2) mainLayout.addWidget(self.clearButton, 1, 2, 1, 2) mainLayout.addWidget(self.clearAllButton, 1, 4, 1, 2) mainLayout.addWidget(self.clearMemoryButton, 2, 0) mainLayout.addWidget(self.readMemoryButton, 3, 0) mainLayout.addWidget(self.setMemoryButton, 4, 0) mainLayout.addWidget(self.addToMemoryButton, 5, 0) for i in range(1, Calculator.NumDigitButtons): row = ((9 - i) / 3) + 2 column = ((i - 1) % 3) + 1 mainLayout.addWidget(self.digitButtons[i], row, column) mainLayout.addWidget(self.digitButtons[0], 5, 1) mainLayout.addWidget(self.pointButton, 5, 2) mainLayout.addWidget(self.changeSignButton, 5, 3) mainLayout.addWidget(self.divisionButton, 2, 4) mainLayout.addWidget(self.timesButton, 3, 4) mainLayout.addWidget(self.minusButton, 4, 4) mainLayout.addWidget(self.plusButton, 5, 4) mainLayout.addWidget(self.squareRootButton, 2, 5) mainLayout.addWidget(self.powerButton, 3, 5) mainLayout.addWidget(self.reciprocalButton, 4, 5) mainLayout.addWidget(self.equalButton, 5, 5) self.setLayout(mainLayout) self.setWindowTitle("Calculator") def digitClicked(self): clickedButton = self.sender() digitValue = int(clickedButton.text()) if self.display.text() == '0' and digitValue == 0.0: return if self.waitingForOperand: self.display.clear() self.waitingForOperand = False self.display.setText(self.display.text() + str(digitValue)) def unaryOperatorClicked(self): clickedButton = self.sender() clickedOperator = clickedButton.text() operand = float(self.display.text()) if clickedOperator == "Sqrt": if operand < 0.0: self.abortOperation() return result = math.sqrt(operand) elif clickedOperator == u"x\N{SUPERSCRIPT TWO}": result = math.pow(operand, 2.0) elif clickedOperator == "1/x": if operand == 0.0: self.abortOperation() return result = 1.0 / operand self.display.setText(str(result)) self.waitingForOperand = True def additiveOperatorClicked(self): clickedButton = self.sender() clickedOperator = clickedButton.text() operand = float(self.display.text()) if self.pendingMultiplicativeOperator: if not self.calculate(operand, self.pendingMultiplicativeOperator): self.abortOperation() return self.display.setText(str(self.factorSoFar)) operand = self.factorSoFar self.factorSoFar = 0.0 self.pendingMultiplicativeOperator = '' if self.pendingAdditiveOperator: if not self.calculate(operand, self.pendingAdditiveOperator): self.abortOperation() return self.display.setText(str(self.sumSoFar)) else: self.sumSoFar = operand self.pendingAdditiveOperator = clickedOperator self.waitingForOperand = True def multiplicativeOperatorClicked(self): clickedButton = self.sender() clickedOperator = clickedButton.text() operand = float(self.display.text()) if self.pendingMultiplicativeOperator: if not self.calculate(operand, self.pendingMultiplicativeOperator): self.abortOperation() return self.display.setText(str(self.factorSoFar)) else: self.factorSoFar = operand self.pendingMultiplicativeOperator = clickedOperator self.waitingForOperand = True def equalClicked(self): operand = float(self.display.text()) if self.pendingMultiplicativeOperator: if not self.calculate(operand, self.pendingMultiplicativeOperator): self.abortOperation() return operand = self.factorSoFar self.factorSoFar = 0.0 self.pendingMultiplicativeOperator = '' if self.pendingAdditiveOperator: if not self.calculate(operand, self.pendingAdditiveOperator): self.abortOperation() return self.pendingAdditiveOperator = '' else: self.sumSoFar = operand self.display.setText(str(self.sumSoFar)) self.sumSoFar = 0.0 self.waitingForOperand = True def pointClicked(self): if self.waitingForOperand: self.display.setText('0') if "." not in self.display.text(): self.display.setText(self.display.text() + ".") self.waitingForOperand = False def changeSignClicked(self): text = self.display.text() value = float(text) if value > 0.0: text = "-" + text elif value < 0.0: text = text[1:] self.display.setText(text) def backspaceClicked(self): if self.waitingForOperand: return text = self.display.text()[:-1] if not text: text = '0' self.waitingForOperand = True self.display.setText(text) def clear(self): if self.waitingForOperand: return self.display.setText('0') self.waitingForOperand = True def clearAll(self): self.sumSoFar = 0.0 self.factorSoFar = 0.0 self.pendingAdditiveOperator = '' self.pendingMultiplicativeOperator = '' self.display.setText('0') self.waitingForOperand = True def clearMemory(self): self.sumInMemory = 0.0 def readMemory(self): self.display.setText(str(self.sumInMemory)) self.waitingForOperand = True def setMemory(self): self.equalClicked() self.sumInMemory = float(self.display.text()) def addToMemory(self): self.equalClicked() self.sumInMemory += float(self.display.text()) def createButton(self, text, member): button = Button(text) button.clicked.connect(member) return button def abortOperation(self): self.clearAll() self.display.setText("####") def calculate(self, rightOperand, pendingOperator): if pendingOperator == "+": self.sumSoFar += rightOperand elif pendingOperator == "-": self.sumSoFar -= rightOperand elif pendingOperator == u"\N{MULTIPLICATION SIGN}": self.factorSoFar *= rightOperand elif pendingOperator == u"\N{DIVISION SIGN}": if rightOperand == 0.0: return False self.factorSoFar /= rightOperand return True if __name__ == '__main__': import sys app = QApplication(sys.argv) calc = Calculator() calc.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/calendarwidget.py0000755000076500000240000004156113245231431022324 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ########################################################################### from PyQt5.QtCore import QDate, QLocale, Qt from PyQt5.QtGui import QFont, QTextCharFormat from PyQt5.QtWidgets import (QApplication, QCalendarWidget, QCheckBox, QComboBox, QDateEdit, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLayout, QWidget) class Window(QWidget): def __init__(self): super(Window, self).__init__() self.createPreviewGroupBox() self.createGeneralOptionsGroupBox() self.createDatesGroupBox() self.createTextFormatsGroupBox() layout = QGridLayout() layout.addWidget(self.previewGroupBox, 0, 0) layout.addWidget(self.generalOptionsGroupBox, 0, 1) layout.addWidget(self.datesGroupBox, 1, 0) layout.addWidget(self.textFormatsGroupBox, 1, 1) layout.setSizeConstraint(QLayout.SetFixedSize) self.setLayout(layout) self.previewLayout.setRowMinimumHeight(0, self.calendar.sizeHint().height()) self.previewLayout.setColumnMinimumWidth(0, self.calendar.sizeHint().width()) self.setWindowTitle("Calendar Widget") def localeChanged(self, index): self.calendar.setLocale(self.localeCombo.itemData(index)) def firstDayChanged(self, index): self.calendar.setFirstDayOfWeek( Qt.DayOfWeek(self.firstDayCombo.itemData(index))) def selectionModeChanged(self, index): self.calendar.setSelectionMode( QCalendarWidget.SelectionMode( self.selectionModeCombo.itemData(index))) def horizontalHeaderChanged(self, index): self.calendar.setHorizontalHeaderFormat( QCalendarWidget.HorizontalHeaderFormat( self.horizontalHeaderCombo.itemData(index))) def verticalHeaderChanged(self, index): self.calendar.setVerticalHeaderFormat( QCalendarWidget.VerticalHeaderFormat( self.verticalHeaderCombo.itemData(index))) def selectedDateChanged(self): self.currentDateEdit.setDate(self.calendar.selectedDate()) def minimumDateChanged(self, date): self.calendar.setMinimumDate(date) self.maximumDateEdit.setDate(self.calendar.maximumDate()) def maximumDateChanged(self, date): self.calendar.setMaximumDate(date) self.minimumDateEdit.setDate(self.calendar.minimumDate()) def weekdayFormatChanged(self): format = QTextCharFormat() format.setForeground( Qt.GlobalColor( self.weekdayColorCombo.itemData( self.weekdayColorCombo.currentIndex()))) self.calendar.setWeekdayTextFormat(Qt.Monday, format) self.calendar.setWeekdayTextFormat(Qt.Tuesday, format) self.calendar.setWeekdayTextFormat(Qt.Wednesday, format) self.calendar.setWeekdayTextFormat(Qt.Thursday, format) self.calendar.setWeekdayTextFormat(Qt.Friday, format) def weekendFormatChanged(self): format = QTextCharFormat() format.setForeground( Qt.GlobalColor( self.weekendColorCombo.itemData( self.weekendColorCombo.currentIndex()))) self.calendar.setWeekdayTextFormat(Qt.Saturday, format) self.calendar.setWeekdayTextFormat(Qt.Sunday, format) def reformatHeaders(self): text = self.headerTextFormatCombo.currentText() format = QTextCharFormat() if text == "Bold": format.setFontWeight(QFont.Bold) elif text == "Italic": format.setFontItalic(True) elif text == "Green": format.setForeground(Qt.green) self.calendar.setHeaderTextFormat(format) def reformatCalendarPage(self): if self.firstFridayCheckBox.isChecked(): firstFriday = QDate(self.calendar.yearShown(), self.calendar.monthShown(), 1) while firstFriday.dayOfWeek() != Qt.Friday: firstFriday = firstFriday.addDays(1) firstFridayFormat = QTextCharFormat() firstFridayFormat.setForeground(Qt.blue) self.calendar.setDateTextFormat(firstFriday, firstFridayFormat) # May 1st in Red takes precedence. if self.mayFirstCheckBox.isChecked(): mayFirst = QDate(self.calendar.yearShown(), 5, 1) mayFirstFormat = QTextCharFormat() mayFirstFormat.setForeground(Qt.red) self.calendar.setDateTextFormat(mayFirst, mayFirstFormat) def createPreviewGroupBox(self): self.previewGroupBox = QGroupBox("Preview") self.calendar = QCalendarWidget() self.calendar.setMinimumDate(QDate(1900, 1, 1)) self.calendar.setMaximumDate(QDate(3000, 1, 1)) self.calendar.setGridVisible(True) self.calendar.currentPageChanged.connect(self.reformatCalendarPage) self.previewLayout = QGridLayout() self.previewLayout.addWidget(self.calendar, 0, 0, Qt.AlignCenter) self.previewGroupBox.setLayout(self.previewLayout) def createGeneralOptionsGroupBox(self): self.generalOptionsGroupBox = QGroupBox("General Options") self.localeCombo = QComboBox() curLocaleIndex = -1 index = 0 this_language = self.locale().nativeLanguageName() this_country = self.locale().nativeCountryName() for locale in QLocale.matchingLocales(QLocale.AnyLanguage, QLocale.AnyScript, QLocale.AnyCountry): language = locale.nativeLanguageName() country = locale.nativeCountryName() if language == this_language and country == this_country: curLocaleIndex = index self.localeCombo.addItem('%s/%s' % (language, country), locale) index += 1 if curLocaleIndex != -1: self.localeCombo.setCurrentIndex(curLocaleIndex) self.localeLabel = QLabel("&Locale") self.localeLabel.setBuddy(self.localeCombo) self.firstDayCombo = QComboBox() self.firstDayCombo.addItem("Sunday", Qt.Sunday) self.firstDayCombo.addItem("Monday", Qt.Monday) self.firstDayCombo.addItem("Tuesday", Qt.Tuesday) self.firstDayCombo.addItem("Wednesday", Qt.Wednesday) self.firstDayCombo.addItem("Thursday", Qt.Thursday) self.firstDayCombo.addItem("Friday", Qt.Friday) self.firstDayCombo.addItem("Saturday", Qt.Saturday) self.firstDayLabel = QLabel("Wee&k starts on:") self.firstDayLabel.setBuddy(self.firstDayCombo) self.selectionModeCombo = QComboBox() self.selectionModeCombo.addItem("Single selection", QCalendarWidget.SingleSelection) self.selectionModeCombo.addItem("None", QCalendarWidget.NoSelection) self.selectionModeLabel = QLabel("&Selection mode:") self.selectionModeLabel.setBuddy(self.selectionModeCombo) self.gridCheckBox = QCheckBox("&Grid") self.gridCheckBox.setChecked(self.calendar.isGridVisible()) self.navigationCheckBox = QCheckBox("&Navigation bar") self.navigationCheckBox.setChecked(True) self.horizontalHeaderCombo = QComboBox() self.horizontalHeaderCombo.addItem("Single letter day names", QCalendarWidget.SingleLetterDayNames) self.horizontalHeaderCombo.addItem("Short day names", QCalendarWidget.ShortDayNames) self.horizontalHeaderCombo.addItem("Long day names", QCalendarWidget.LongDayNames) self.horizontalHeaderCombo.addItem("None", QCalendarWidget.NoHorizontalHeader) self.horizontalHeaderCombo.setCurrentIndex(1) self.horizontalHeaderLabel = QLabel("&Horizontal header:") self.horizontalHeaderLabel.setBuddy(self.horizontalHeaderCombo) self.verticalHeaderCombo = QComboBox() self.verticalHeaderCombo.addItem("ISO week numbers", QCalendarWidget.ISOWeekNumbers) self.verticalHeaderCombo.addItem("None", QCalendarWidget.NoVerticalHeader) self.verticalHeaderLabel = QLabel("&Vertical header:") self.verticalHeaderLabel.setBuddy(self.verticalHeaderCombo) self.localeCombo.currentIndexChanged.connect(self.localeChanged) self.firstDayCombo.currentIndexChanged.connect(self.firstDayChanged) self.selectionModeCombo.currentIndexChanged.connect( self.selectionModeChanged) self.gridCheckBox.toggled.connect(self.calendar.setGridVisible) self.navigationCheckBox.toggled.connect( self.calendar.setNavigationBarVisible) self.horizontalHeaderCombo.currentIndexChanged.connect( self.horizontalHeaderChanged) self.verticalHeaderCombo.currentIndexChanged.connect( self.verticalHeaderChanged) checkBoxLayout = QHBoxLayout() checkBoxLayout.addWidget(self.gridCheckBox) checkBoxLayout.addStretch() checkBoxLayout.addWidget(self.navigationCheckBox) outerLayout = QGridLayout() outerLayout.addWidget(self.localeLabel, 0, 0) outerLayout.addWidget(self.localeCombo, 0, 1) outerLayout.addWidget(self.firstDayLabel, 1, 0) outerLayout.addWidget(self.firstDayCombo, 1, 1) outerLayout.addWidget(self.selectionModeLabel, 2, 0) outerLayout.addWidget(self.selectionModeCombo, 2, 1) outerLayout.addLayout(checkBoxLayout, 3, 0, 1, 2) outerLayout.addWidget(self.horizontalHeaderLabel, 4, 0) outerLayout.addWidget(self.horizontalHeaderCombo, 4, 1) outerLayout.addWidget(self.verticalHeaderLabel, 5, 0) outerLayout.addWidget(self.verticalHeaderCombo, 5, 1) self.generalOptionsGroupBox.setLayout(outerLayout) self.firstDayChanged(self.firstDayCombo.currentIndex()) self.selectionModeChanged(self.selectionModeCombo.currentIndex()) self.horizontalHeaderChanged(self.horizontalHeaderCombo.currentIndex()) self.verticalHeaderChanged(self.verticalHeaderCombo.currentIndex()) def createDatesGroupBox(self): self.datesGroupBox = QGroupBox(self.tr("Dates")) self.minimumDateEdit = QDateEdit() self.minimumDateEdit.setDisplayFormat('MMM d yyyy') self.minimumDateEdit.setDateRange(self.calendar.minimumDate(), self.calendar.maximumDate()) self.minimumDateEdit.setDate(self.calendar.minimumDate()) self.minimumDateLabel = QLabel("&Minimum Date:") self.minimumDateLabel.setBuddy(self.minimumDateEdit) self.currentDateEdit = QDateEdit() self.currentDateEdit.setDisplayFormat('MMM d yyyy') self.currentDateEdit.setDate(self.calendar.selectedDate()) self.currentDateEdit.setDateRange(self.calendar.minimumDate(), self.calendar.maximumDate()) self.currentDateLabel = QLabel("&Current Date:") self.currentDateLabel.setBuddy(self.currentDateEdit) self.maximumDateEdit = QDateEdit() self.maximumDateEdit.setDisplayFormat('MMM d yyyy') self.maximumDateEdit.setDateRange(self.calendar.minimumDate(), self.calendar.maximumDate()) self.maximumDateEdit.setDate(self.calendar.maximumDate()) self.maximumDateLabel = QLabel("Ma&ximum Date:") self.maximumDateLabel.setBuddy(self.maximumDateEdit) self.currentDateEdit.dateChanged.connect(self.calendar.setSelectedDate) self.calendar.selectionChanged.connect(self.selectedDateChanged) self.minimumDateEdit.dateChanged.connect(self.minimumDateChanged) self.maximumDateEdit.dateChanged.connect(self.maximumDateChanged) dateBoxLayout = QGridLayout() dateBoxLayout.addWidget(self.currentDateLabel, 1, 0) dateBoxLayout.addWidget(self.currentDateEdit, 1, 1) dateBoxLayout.addWidget(self.minimumDateLabel, 0, 0) dateBoxLayout.addWidget(self.minimumDateEdit, 0, 1) dateBoxLayout.addWidget(self.maximumDateLabel, 2, 0) dateBoxLayout.addWidget(self.maximumDateEdit, 2, 1) dateBoxLayout.setRowStretch(3, 1) self.datesGroupBox.setLayout(dateBoxLayout) def createTextFormatsGroupBox(self): self.textFormatsGroupBox = QGroupBox("Text Formats") self.weekdayColorCombo = self.createColorComboBox() self.weekdayColorCombo.setCurrentIndex( self.weekdayColorCombo.findText("Black")) self.weekdayColorLabel = QLabel("&Weekday color:") self.weekdayColorLabel.setBuddy(self.weekdayColorCombo) self.weekendColorCombo = self.createColorComboBox() self.weekendColorCombo.setCurrentIndex( self.weekendColorCombo.findText("Red")) self.weekendColorLabel = QLabel("Week&end color:") self.weekendColorLabel.setBuddy(self.weekendColorCombo) self.headerTextFormatCombo = QComboBox() self.headerTextFormatCombo.addItem("Bold") self.headerTextFormatCombo.addItem("Italic") self.headerTextFormatCombo.addItem("Plain") self.headerTextFormatLabel = QLabel("&Header text:") self.headerTextFormatLabel.setBuddy(self.headerTextFormatCombo) self.firstFridayCheckBox = QCheckBox("&First Friday in blue") self.mayFirstCheckBox = QCheckBox("May &1 in red") self.weekdayColorCombo.currentIndexChanged.connect( self.weekdayFormatChanged) self.weekendColorCombo.currentIndexChanged.connect( self.weekendFormatChanged) self.headerTextFormatCombo.currentIndexChanged.connect( self.reformatHeaders) self.firstFridayCheckBox.toggled.connect(self.reformatCalendarPage) self.mayFirstCheckBox.toggled.connect(self.reformatCalendarPage) checkBoxLayout = QHBoxLayout() checkBoxLayout.addWidget(self.firstFridayCheckBox) checkBoxLayout.addStretch() checkBoxLayout.addWidget(self.mayFirstCheckBox) outerLayout = QGridLayout() outerLayout.addWidget(self.weekdayColorLabel, 0, 0) outerLayout.addWidget(self.weekdayColorCombo, 0, 1) outerLayout.addWidget(self.weekendColorLabel, 1, 0) outerLayout.addWidget(self.weekendColorCombo, 1, 1) outerLayout.addWidget(self.headerTextFormatLabel, 2, 0) outerLayout.addWidget(self.headerTextFormatCombo, 2, 1) outerLayout.addLayout(checkBoxLayout, 3, 0, 1, 2) self.textFormatsGroupBox.setLayout(outerLayout) self.weekdayFormatChanged() self.weekendFormatChanged() self.reformatHeaders() self.reformatCalendarPage() def createColorComboBox(self): comboBox = QComboBox() comboBox.addItem("Red", Qt.red) comboBox.addItem("Blue", Qt.blue) comboBox.addItem("Black", Qt.black) comboBox.addItem("Magenta", Qt.magenta) return comboBox if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/charactermap.py0000755000076500000240000002522113245231431021774 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import unicodedata from PyQt5.QtCore import pyqtSignal, QSize, Qt from PyQt5.QtGui import (QClipboard, QFont, QFontDatabase, QFontMetrics, QPainter) from PyQt5.QtWidgets import (QApplication, QCheckBox, QComboBox, QFontComboBox, QHBoxLayout, QLabel, QLineEdit, QMainWindow, QPushButton, QScrollArea, QToolTip, QVBoxLayout, QWidget) class CharacterWidget(QWidget): characterSelected = pyqtSignal(str) def __init__(self, parent=None): super(CharacterWidget, self).__init__(parent) self.displayFont = QFont() self.squareSize = 24 self.columns = 16 self.lastKey = -1 self.setMouseTracking(True) def updateFont(self, fontFamily): self.displayFont.setFamily(fontFamily) self.squareSize = max(24, QFontMetrics(self.displayFont).xHeight() * 3) self.adjustSize() self.update() def updateSize(self, fontSize): fontSize, _ = fontSize.toInt() self.displayFont.setPointSize(fontSize) self.squareSize = max(24, QFontMetrics(self.displayFont).xHeight() * 3) self.adjustSize() self.update() def updateStyle(self, fontStyle): fontDatabase = QFontDatabase() oldStrategy = self.displayFont.styleStrategy() self.displayFont = fontDatabase.font(self.displayFont.family(), fontStyle, self.displayFont.pointSize()) self.displayFont.setStyleStrategy(oldStrategy) self.squareSize = max(24, QFontMetrics(self.displayFont).xHeight() * 3) self.adjustSize() self.update() def updateFontMerging(self, enable): if enable: self.displayFont.setStyleStrategy(QFont.PreferDefault) else: self.displayFont.setStyleStrategy(QFont.NoFontMerging) self.adjustSize() self.update() def sizeHint(self): return QSize(self.columns * self.squareSize, (65536 / self.columns) * self.squareSize) def mouseMoveEvent(self, event): widgetPosition = self.mapFromGlobal(event.globalPos()) key = (widgetPosition.y() // self.squareSize) * self.columns + widgetPosition.x() // self.squareSize text = '

      Character: %s

      Value: 0x%x' % (self.displayFont.family(), self._chr(key), key) QToolTip.showText(event.globalPos(), text, self) def mousePressEvent(self, event): if event.button() == Qt.LeftButton: self.lastKey = (event.y() // self.squareSize) * self.columns + event.x() // self.squareSize key_ch = self._chr(self.lastKey) if unicodedata.category(key_ch) != 'Cn': self.characterSelected.emit(key_ch) self.update() else: super(CharacterWidget, self).mousePressEvent(event) def paintEvent(self, event): painter = QPainter(self) painter.fillRect(event.rect(), Qt.white) painter.setFont(self.displayFont) redrawRect = event.rect() beginRow = redrawRect.top() // self.squareSize endRow = redrawRect.bottom() // self.squareSize beginColumn = redrawRect.left() // self.squareSize endColumn = redrawRect.right() // self.squareSize painter.setPen(Qt.gray) for row in range(beginRow, endRow + 1): for column in range(beginColumn, endColumn + 1): painter.drawRect(column * self.squareSize, row * self.squareSize, self.squareSize, self.squareSize) fontMetrics = QFontMetrics(self.displayFont) painter.setPen(Qt.black) for row in range(beginRow, endRow + 1): for column in range(beginColumn, endColumn + 1): key = row * self.columns + column painter.setClipRect(column * self.squareSize, row * self.squareSize, self.squareSize, self.squareSize) if key == self.lastKey: painter.fillRect(column * self.squareSize + 1, row * self.squareSize + 1, self.squareSize, self.squareSize, Qt.red) key_ch = self._chr(key) painter.drawText(column * self.squareSize + (self.squareSize / 2) - fontMetrics.width(key_ch) / 2, row * self.squareSize + 4 + fontMetrics.ascent(), key_ch) @staticmethod def _chr(codepoint): try: # Python v2. return unichr(codepoint) except NameError: # Python v3. return chr(codepoint) class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() centralWidget = QWidget() fontLabel = QLabel("Font:") self.fontCombo = QFontComboBox() sizeLabel = QLabel("Size:") self.sizeCombo = QComboBox() styleLabel = QLabel("Style:") self.styleCombo = QComboBox() fontMergingLabel = QLabel("Automatic Font Merging:") self.fontMerging = QCheckBox() self.fontMerging.setChecked(True) self.scrollArea = QScrollArea() self.characterWidget = CharacterWidget() self.scrollArea.setWidget(self.characterWidget) self.findStyles(self.fontCombo.currentFont()) self.findSizes(self.fontCombo.currentFont()) self.lineEdit = QLineEdit() clipboardButton = QPushButton("&To clipboard") self.clipboard = QApplication.clipboard() self.fontCombo.currentFontChanged.connect(self.findStyles) self.fontCombo.activated[str].connect(self.characterWidget.updateFont) self.styleCombo.activated[str].connect(self.characterWidget.updateStyle) self.sizeCombo.currentIndexChanged[str].connect(self.characterWidget.updateSize) self.characterWidget.characterSelected.connect(self.insertCharacter) clipboardButton.clicked.connect(self.updateClipboard) controlsLayout = QHBoxLayout() controlsLayout.addWidget(fontLabel) controlsLayout.addWidget(self.fontCombo, 1) controlsLayout.addWidget(sizeLabel) controlsLayout.addWidget(self.sizeCombo, 1) controlsLayout.addWidget(styleLabel) controlsLayout.addWidget(self.styleCombo, 1) controlsLayout.addWidget(fontMergingLabel) controlsLayout.addWidget(self.fontMerging, 1) controlsLayout.addStretch(1) lineLayout = QHBoxLayout() lineLayout.addWidget(self.lineEdit, 1) lineLayout.addSpacing(12) lineLayout.addWidget(clipboardButton) centralLayout = QVBoxLayout() centralLayout.addLayout(controlsLayout) centralLayout.addWidget(self.scrollArea, 1) centralLayout.addSpacing(4) centralLayout.addLayout(lineLayout) centralWidget.setLayout(centralLayout) self.setCentralWidget(centralWidget) self.setWindowTitle("Character Map") def findStyles(self, font): fontDatabase = QFontDatabase() currentItem = self.styleCombo.currentText() self.styleCombo.clear() for style in fontDatabase.styles(font.family()): self.styleCombo.addItem(style) styleIndex = self.styleCombo.findText(currentItem) if styleIndex == -1: self.styleCombo.setCurrentIndex(0) else: self.styleCombo.setCurrentIndex(styleIndex) def findSizes(self, font): fontDatabase = QFontDatabase() currentSize = self.sizeCombo.currentText() self.sizeCombo.blockSignals(True) self.sizeCombo.clear() if fontDatabase.isSmoothlyScalable(font.family(), fontDatabase.styleString(font)): for size in QFontDatabase.standardSizes(): self.sizeCombo.addItem(str(size)) self.sizeCombo.setEditable(True) else: for size in fontDatabase.smoothSizes(font.family(), fontDatabase.styleString(font)): self.sizeCombo.addItem(str(size)) self.sizeCombo.setEditable(False) self.sizeCombo.blockSignals(False) sizeIndex = self.sizeCombo.findText(currentSize) if sizeIndex == -1: self.sizeCombo.setCurrentIndex(max(0, self.sizeCombo.count() / 3)) else: self.sizeCombo.setCurrentIndex(sizeIndex) def insertCharacter(self, character): self.lineEdit.insert(character) def updateClipboard(self): self.clipboard.setText(self.lineEdit.text(), QClipboard.Clipboard) self.clipboard.setText(self.lineEdit.text(), QClipboard.Selection) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/digitalclock.py0000755000076500000240000000547713245231431022006 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QTime, QTimer from PyQt5.QtWidgets import QApplication, QLCDNumber class DigitalClock(QLCDNumber): def __init__(self, parent=None): super(DigitalClock, self).__init__(parent) self.setSegmentStyle(QLCDNumber.Filled) timer = QTimer(self) timer.timeout.connect(self.showTime) timer.start(1000) self.showTime() self.setWindowTitle("Digital Clock") self.resize(150, 60) def showTime(self): time = QTime.currentTime() text = time.toString('hh:mm') if (time.second() % 2) == 0: text = text[:2] + ' ' + text[3:] self.display(text) if __name__ == '__main__': import sys app = QApplication(sys.argv) clock = DigitalClock() clock.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/groupbox.py0000755000076500000240000001327713245231431021217 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QApplication, QCheckBox, QGridLayout, QGroupBox, QMenu, QPushButton, QRadioButton, QVBoxLayout, QWidget) class Window(QWidget): def __init__(self, parent=None): super(Window, self).__init__(parent) grid = QGridLayout() grid.addWidget(self.createFirstExclusiveGroup(), 0, 0) grid.addWidget(self.createSecondExclusiveGroup(), 1, 0) grid.addWidget(self.createNonExclusiveGroup(), 0, 1) grid.addWidget(self.createPushButtonGroup(), 1, 1) self.setLayout(grid) self.setWindowTitle("Group Box") self.resize(480, 320) def createFirstExclusiveGroup(self): groupBox = QGroupBox("Exclusive Radio Buttons") radio1 = QRadioButton("&Radio button 1") radio2 = QRadioButton("R&adio button 2") radio3 = QRadioButton("Ra&dio button 3") radio1.setChecked(True) vbox = QVBoxLayout() vbox.addWidget(radio1) vbox.addWidget(radio2) vbox.addWidget(radio3) vbox.addStretch(1) groupBox.setLayout(vbox) return groupBox def createSecondExclusiveGroup(self): groupBox = QGroupBox("E&xclusive Radio Buttons") groupBox.setCheckable(True) groupBox.setChecked(False) radio1 = QRadioButton("Rad&io button 1") radio2 = QRadioButton("Radi&o button 2") radio3 = QRadioButton("Radio &button 3") radio1.setChecked(True) checkBox = QCheckBox("Ind&ependent checkbox") checkBox.setChecked(True) vbox = QVBoxLayout() vbox.addWidget(radio1) vbox.addWidget(radio2) vbox.addWidget(radio3) vbox.addWidget(checkBox) vbox.addStretch(1) groupBox.setLayout(vbox) return groupBox def createNonExclusiveGroup(self): groupBox = QGroupBox("Non-Exclusive Checkboxes") groupBox.setFlat(True) checkBox1 = QCheckBox("&Checkbox 1") checkBox2 = QCheckBox("C&heckbox 2") checkBox2.setChecked(True) tristateBox = QCheckBox("Tri-&state button") tristateBox.setTristate(True) tristateBox.setCheckState(Qt.PartiallyChecked) vbox = QVBoxLayout() vbox.addWidget(checkBox1) vbox.addWidget(checkBox2) vbox.addWidget(tristateBox) vbox.addStretch(1) groupBox.setLayout(vbox) return groupBox def createPushButtonGroup(self): groupBox = QGroupBox("&Push Buttons") groupBox.setCheckable(True) groupBox.setChecked(True) pushButton = QPushButton("&Normal Button") toggleButton = QPushButton("&Toggle Button") toggleButton.setCheckable(True) toggleButton.setChecked(True) flatButton = QPushButton("&Flat Button") flatButton.setFlat(True) popupButton = QPushButton("Pop&up Button") menu = QMenu(self) menu.addAction("&First Item") menu.addAction("&Second Item") menu.addAction("&Third Item") menu.addAction("F&ourth Item") popupButton.setMenu(menu) newAction = menu.addAction("Submenu") subMenu = QMenu("Popup Submenu", self) subMenu.addAction("Item 1") subMenu.addAction("Item 2") subMenu.addAction("Item 3") newAction.setMenu(subMenu) vbox = QVBoxLayout() vbox.addWidget(pushButton) vbox.addWidget(toggleButton) vbox.addWidget(flatButton) vbox.addWidget(popupButton) vbox.addStretch(1) groupBox.setLayout(vbox) return groupBox if __name__ == '__main__': import sys app = QApplication(sys.argv) clock = Window() clock.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/icons/0000755000076500000240000000000013245231431020076 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/widgets/icons/icons.py0000755000076500000240000004224213245231431021572 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QFileInfo, QRegExp, QSize, Qt from PyQt5.QtGui import QIcon, QImage, QPalette, QPixmap from PyQt5.QtWidgets import (QAbstractItemView, QAction, QActionGroup, QApplication, QComboBox, QFileDialog, QFrame, QGridLayout, QGroupBox, QHBoxLayout, QHeaderView, QItemDelegate, QLabel, QMainWindow, QMessageBox, QRadioButton, QSizePolicy, QSpinBox, QStyle, QStyleFactory, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget) class IconSizeSpinBox(QSpinBox): @staticmethod def valueFromText(text): regExp = QRegExp("(\\d+)(\\s*[xx]\\s*\\d+)?") if regExp.exactMatch(text): return int(regExp.cap(1)) else: return 0 @staticmethod def textFromValue(value): return "%d x %d" % (value, value) class ImageDelegate(QItemDelegate): def createEditor(self, parent, option, index): comboBox = QComboBox(parent) if index.column() == 1: comboBox.addItem("Normal") comboBox.addItem("Active") comboBox.addItem("Disabled") comboBox.addItem("Selected") elif index.column() == 2: comboBox.addItem("Off") comboBox.addItem("On") comboBox.activated.connect(self.emitCommitData) return comboBox def setEditorData(self, editor, index): comboBox = editor if not comboBox: return pos = comboBox.findText(index.model().data(index), Qt.MatchExactly) comboBox.setCurrentIndex(pos) def setModelData(self, editor, model, index): comboBox = editor if not comboBox: return model.setData(index, comboBox.currentText()) def emitCommitData(self): self.commitData.emit(self.sender()) class IconPreviewArea(QWidget): def __init__(self, parent=None): super(IconPreviewArea, self).__init__(parent) mainLayout = QGridLayout() self.setLayout(mainLayout) self.icon = QIcon() self.size = QSize() self.stateLabels = [] self.modeLabels = [] self.pixmapLabels = [] self.stateLabels.append(self.createHeaderLabel("Off")) self.stateLabels.append(self.createHeaderLabel("On")) self.modeLabels.append(self.createHeaderLabel("Normal")) self.modeLabels.append(self.createHeaderLabel("Active")) self.modeLabels.append(self.createHeaderLabel("Disabled")) self.modeLabels.append(self.createHeaderLabel("Selected")) for j, label in enumerate(self.stateLabels): mainLayout.addWidget(label, j + 1, 0) for i, label in enumerate(self.modeLabels): mainLayout.addWidget(label, 0, i + 1) self.pixmapLabels.append([]) for j in range(len(self.stateLabels)): self.pixmapLabels[i].append(self.createPixmapLabel()) mainLayout.addWidget(self.pixmapLabels[i][j], j + 1, i + 1) def setIcon(self, icon): self.icon = icon self.updatePixmapLabels() def setSize(self, size): if size != self.size: self.size = size self.updatePixmapLabels() def createHeaderLabel(self, text): label = QLabel("%s" % text) label.setAlignment(Qt.AlignCenter) return label def createPixmapLabel(self): label = QLabel() label.setEnabled(False) label.setAlignment(Qt.AlignCenter) label.setFrameShape(QFrame.Box) label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) label.setBackgroundRole(QPalette.Base) label.setAutoFillBackground(True) label.setMinimumSize(132, 132) return label def updatePixmapLabels(self): for i in range(len(self.modeLabels)): if i == 0: mode = QIcon.Normal elif i == 1: mode = QIcon.Active elif i == 2: mode = QIcon.Disabled else: mode = QIcon.Selected for j in range(len(self.stateLabels)): state = QIcon.Off if j == 0 else QIcon.On pixmap = self.icon.pixmap(self.size, mode, state) self.pixmapLabels[i][j].setPixmap(pixmap) self.pixmapLabels[i][j].setEnabled(not pixmap.isNull()) class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.centralWidget = QWidget() self.setCentralWidget(self.centralWidget) self.createPreviewGroupBox() self.createImagesGroupBox() self.createIconSizeGroupBox() self.createActions() self.createMenus() self.createContextMenu() mainLayout = QGridLayout() mainLayout.addWidget(self.previewGroupBox, 0, 0, 1, 2) mainLayout.addWidget(self.imagesGroupBox, 1, 0) mainLayout.addWidget(self.iconSizeGroupBox, 1, 1) self.centralWidget.setLayout(mainLayout) self.setWindowTitle("Icons") self.checkCurrentStyle() self.otherRadioButton.click() self.resize(self.minimumSizeHint()) def about(self): QMessageBox.about(self, "About Icons", "The Icons example illustrates how Qt renders an icon " "in different modes (active, normal, disabled and selected) " "and states (on and off) based on a set of images.") def changeStyle(self, checked): if not checked: return action = self.sender() style = QStyleFactory.create(action.data()) if not style: return QApplication.setStyle(style) self.setButtonText(self.smallRadioButton, "Small (%d x %d)", style, QStyle.PM_SmallIconSize) self.setButtonText(self.largeRadioButton, "Large (%d x %d)", style, QStyle.PM_LargeIconSize) self.setButtonText(self.toolBarRadioButton, "Toolbars (%d x %d)", style, QStyle.PM_ToolBarIconSize) self.setButtonText(self.listViewRadioButton, "List views (%d x %d)", style, QStyle.PM_ListViewIconSize) self.setButtonText(self.iconViewRadioButton, "Icon views (%d x %d)", style, QStyle.PM_IconViewIconSize) self.setButtonText(self.tabBarRadioButton, "Tab bars (%d x %d)", style, QStyle.PM_TabBarIconSize) self.changeSize() @staticmethod def setButtonText(button, label, style, metric): metric_value = style.pixelMetric(metric) button.setText(label % (metric_value, metric_value)) def changeSize(self, checked=True): if not checked: return if self.otherRadioButton.isChecked(): extent = self.otherSpinBox.value() else: if self.smallRadioButton.isChecked(): metric = QStyle.PM_SmallIconSize elif self.largeRadioButton.isChecked(): metric = QStyle.PM_LargeIconSize elif self.toolBarRadioButton.isChecked(): metric = QStyle.PM_ToolBarIconSize elif self.listViewRadioButton.isChecked(): metric = QStyle.PM_ListViewIconSize elif self.iconViewRadioButton.isChecked(): metric = QStyle.PM_IconViewIconSize else: metric = QStyle.PM_TabBarIconSize extent = QApplication.style().pixelMetric(metric) self.previewArea.setSize(QSize(extent, extent)) self.otherSpinBox.setEnabled(self.otherRadioButton.isChecked()) def changeIcon(self): icon = QIcon() for row in range(self.imagesTable.rowCount()): item0 = self.imagesTable.item(row, 0) item1 = self.imagesTable.item(row, 1) item2 = self.imagesTable.item(row, 2) if item0.checkState() == Qt.Checked: if item1.text() == "Normal": mode = QIcon.Normal elif item1.text() == "Active": mode = QIcon.Active elif item1.text() == "Disabled": mode = QIcon.Disabled else: mode = QIcon.Selected if item2.text() == "On": state = QIcon.On else: state = QIcon.Off fileName = item0.data(Qt.UserRole) image = QImage(fileName) if not image.isNull(): icon.addPixmap(QPixmap.fromImage(image), mode, state) self.previewArea.setIcon(icon) def addImage(self): fileNames, _ = QFileDialog.getOpenFileNames(self, "Open Images", '', "Images (*.png *.xpm *.jpg);;All Files (*)") for fileName in fileNames: row = self.imagesTable.rowCount() self.imagesTable.setRowCount(row + 1) imageName = QFileInfo(fileName).baseName() item0 = QTableWidgetItem(imageName) item0.setData(Qt.UserRole, fileName) item0.setFlags(item0.flags() & ~Qt.ItemIsEditable) item1 = QTableWidgetItem("Normal") item2 = QTableWidgetItem("Off") if self.guessModeStateAct.isChecked(): if '_act' in fileName: item1.setText("Active") elif '_dis' in fileName: item1.setText("Disabled") elif '_sel' in fileName: item1.setText("Selected") if '_on' in fileName: item2.setText("On") self.imagesTable.setItem(row, 0, item0) self.imagesTable.setItem(row, 1, item1) self.imagesTable.setItem(row, 2, item2) self.imagesTable.openPersistentEditor(item1) self.imagesTable.openPersistentEditor(item2) item0.setCheckState(Qt.Checked) def removeAllImages(self): self.imagesTable.setRowCount(0) self.changeIcon() def createPreviewGroupBox(self): self.previewGroupBox = QGroupBox("Preview") self.previewArea = IconPreviewArea() layout = QVBoxLayout() layout.addWidget(self.previewArea) self.previewGroupBox.setLayout(layout) def createImagesGroupBox(self): self.imagesGroupBox = QGroupBox("Images") self.imagesTable = QTableWidget() self.imagesTable.setSelectionMode(QAbstractItemView.NoSelection) self.imagesTable.setItemDelegate(ImageDelegate(self)) self.imagesTable.horizontalHeader().setDefaultSectionSize(90) self.imagesTable.setColumnCount(3) self.imagesTable.setHorizontalHeaderLabels(("Image", "Mode", "State")) self.imagesTable.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch) self.imagesTable.horizontalHeader().setSectionResizeMode(1, QHeaderView.Fixed) self.imagesTable.horizontalHeader().setSectionResizeMode(2, QHeaderView.Fixed) self.imagesTable.verticalHeader().hide() self.imagesTable.itemChanged.connect(self.changeIcon) layout = QVBoxLayout() layout.addWidget(self.imagesTable) self.imagesGroupBox.setLayout(layout) def createIconSizeGroupBox(self): self.iconSizeGroupBox = QGroupBox("Icon Size") self.smallRadioButton = QRadioButton() self.largeRadioButton = QRadioButton() self.toolBarRadioButton = QRadioButton() self.listViewRadioButton = QRadioButton() self.iconViewRadioButton = QRadioButton() self.tabBarRadioButton = QRadioButton() self.otherRadioButton = QRadioButton("Other:") self.otherSpinBox = IconSizeSpinBox() self.otherSpinBox.setRange(8, 128) self.otherSpinBox.setValue(64) self.smallRadioButton.toggled.connect(self.changeSize) self.largeRadioButton.toggled.connect(self.changeSize) self.toolBarRadioButton.toggled.connect(self.changeSize) self.listViewRadioButton.toggled.connect(self.changeSize) self.iconViewRadioButton.toggled.connect(self.changeSize) self.tabBarRadioButton.toggled.connect(self.changeSize) self.otherRadioButton.toggled.connect(self.changeSize) self.otherSpinBox.valueChanged.connect(self.changeSize) otherSizeLayout = QHBoxLayout() otherSizeLayout.addWidget(self.otherRadioButton) otherSizeLayout.addWidget(self.otherSpinBox) otherSizeLayout.addStretch() layout = QGridLayout() layout.addWidget(self.smallRadioButton, 0, 0) layout.addWidget(self.largeRadioButton, 1, 0) layout.addWidget(self.toolBarRadioButton, 2, 0) layout.addWidget(self.listViewRadioButton, 0, 1) layout.addWidget(self.iconViewRadioButton, 1, 1) layout.addWidget(self.tabBarRadioButton, 2, 1) layout.addLayout(otherSizeLayout, 3, 0, 1, 2) layout.setRowStretch(4, 1) self.iconSizeGroupBox.setLayout(layout) def createActions(self): self.addImagesAct = QAction("&Add Images...", self, shortcut="Ctrl+A", triggered=self.addImage) self.removeAllImagesAct = QAction("&Remove All Images", self, shortcut="Ctrl+R", triggered=self.removeAllImages) self.exitAct = QAction("&Quit", self, shortcut="Ctrl+Q", triggered=self.close) self.styleActionGroup = QActionGroup(self) for styleName in QStyleFactory.keys(): action = QAction(self.styleActionGroup, text="%s Style" % styleName, checkable=True, triggered=self.changeStyle) action.setData(styleName) self.guessModeStateAct = QAction("&Guess Image Mode/State", self, checkable=True, checked=True) self.aboutAct = QAction("&About", self, triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, triggered=QApplication.instance().aboutQt) def createMenus(self): self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.addImagesAct) self.fileMenu.addAction(self.removeAllImagesAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.viewMenu = self.menuBar().addMenu("&View") for action in self.styleActionGroup.actions(): self.viewMenu.addAction(action) self.viewMenu.addSeparator() self.viewMenu.addAction(self.guessModeStateAct) self.menuBar().addSeparator() self.helpMenu = self.menuBar().addMenu("&Help") self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) def createContextMenu(self): self.imagesTable.setContextMenuPolicy(Qt.ActionsContextMenu) self.imagesTable.addAction(self.addImagesAct) self.imagesTable.addAction(self.removeAllImagesAct) def checkCurrentStyle(self): for action in self.styleActionGroup.actions(): styleName = action.data() candidate = QStyleFactory.create(styleName) if candidate is None: return if candidate.metaObject().className() == QApplication.style().metaObject().className(): action.trigger() if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = MainWindow() mainWin.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/icons/images/0000755000076500000240000000000013245231431021343 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/widgets/icons/images/designer.png0000644000076500000240000001015513245231431023653 0ustar philstaff00000000000000‰PNG  IHDR€€Ã>aËgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<ÿIDATxÚì]mpõöî ¹¼˜‹Æ@IÐ5mÚi¢#©ƒÉt´¶3"ÅqÚ‚èøÁVAÚñS…Ê82SÑ`Ç*R§ˆ˜iŠ$T u*G@à"”„ËË%—{Ûî³w»Ù»Û»ûïæör{ûÿÍ,¹Ëm’ã~¿çõÿư, Æ…‰~T†…ôÆÌÆ’Z¿ÙTË0L™ßçËc¦¿_oEwd•d–gÊý¨ÖnfÌà;>ßÙÜÕA?úÔ+`ZÊó-~ÿFŽðµÀ/}-'Ç K–äÀí·g©ýÛT©,KÓüfŽ 6îa~øk••YPW— ™™šD^ Ýà7õ˜€év«»­ù„ƒÒ•$˜.ÙÎYüF¹@ò—.ÍŸ‰÷êà„ÑM…¡±8òÛ8ò[SŒ|E†;¥W¡,kæ·rÏÛän´Ù2 ¥åf]ýç8a`NyF—gtPaÄ—ð•™¼Þr1ÑØXQ²|Ý CF±\qñ,N6#||ø01¦“~¿¿“Ñ?7ÙöÀr³þÑnZµª,˜mdO™¶Âà`^³`#°þíÑnZ¿~. –q„¡×^/SSé> Ùàî?á½ =4¹ ©ôF´ä¯º:êêò(¥ ÆÎ5][Rá ­¼¨Å½FÝ>£¢Œ¦ÁÏú7§Ê¢ìTTTTTTFƒ%UÞHo¯Ün? zÄïÕTÜùÙ¹PvK ”•ÂÀøUï/ àüùq°Û]ÐÓã _»òQh¨®ãǸgÎ ‡îkp²÷ÿœB'@†ÑQÿü‘ºÕ°íÉ-¼¥“"+#j‹—ñ×xõ(|vñ8taB* ]|g§C´xtïooÜÆ `:@1<\µVTü >9»‹EŠ Éooc<ºø¿ÿv—"«'ÂcÕÏ@¥m ¼sâ÷н¾?ŠVÜSÞ11÷˜ðŒÁåásT‰ ÿ³Wöò@ `X°eö/~C,|o½½“âóÊÂ%°rá£÷aÞñ꿦e  ÛÈGÒÛ6¼ªùJó*aÓ}oð^CCžçË~POû‰ÀéÓN1æ#0Ù‹—á'RHËP|Ù™ÀÐdX ë?~|4Ī0¶ªò"_wñ×É‹gý\ýüF>$ÄÀ¤á¬_óàØ±^0ãW L¾^?²öì„sçÆE }ú‘õ°aͯˆ~ÇÚÅ/ò±;Z>06æKR!G1 4óø¡ „ YµR·Š÷:~ W'Oò+’–- L\²÷_MonuÚD\¬\øxÌP lDQLRò¤Ö*­uç—χX-®DD€xçÐßàµß"ú}Ø#ˆ–JÝ?&§Ô$Øæ•ºT¥*vöäúý(œ©,`ë{ÛÀá!ò˜ÄKÿ5ºTiLUšø¡ÕÇêæá¾ü„^`eÅ㲉ª4ÔÈú5€ÔúJ[½ñwp".VCÁ¿öý^lå›*x‹.˜]ðºÌ@ñ_³*`º5õÙÁ¯âÞƒKÕËŤËC’03—}þØþù”·ÚÓ ­‹Ï‡€9V¾K˜.mᄠܥªè¹2|>î=<`ÊKtœ>F$€ð “>%q›KÏÞ·S¶b9tqt}ßnì µ~µ55‰e…/U'm “L Fa–þÖP&\á5umù '_nT%Ã)j –èéÊ`l%…Õ:Á°MLŠƒ•zI€´õ«¦¦Vâl6u)̃ ôÌxPkq)®’æeTÚTR량¦ IGPðLØLÂñ sS)/ˆE¥°}ýæ¸!ërÿÿàòõÐ|#—zuÙTƒƒÞiÿ%! ¼Tæ+8f $^$š0õÁ;ß= ÃC>ðxB·ØËÊ6A–Õd\DdÛ +Ätfõ’z¡lëí=­úoå˜i/h=í+'/}C|/vô(,€ð…« *€©z›Ë¬µ„Ú>¢ªðnʾÖкަXÑ@A@A@‘šPÒ˜¡˜6¸«6¥ t…*àϸÕïaîÂó.)‚®C@øÜ%H“$Z¹k„nõ[CmÒ §², &t"ùüñ>þ‘Qp<ÎÃGùÇAA‰ ¡ŒI§jS$‡|GøèÑÿ‚grËòñf™>E|þ5–…kÙ³`tvF¤ÕgX ²éA˜c»‰/и«ECdN+ Ô/{ž3 ¦ÀóôD¾^¦çb’?8tƒÏnä[alŠÀÇ_`1â¦Õe+È_sµ@øIãû}ª¸Œµ»'&Òígq’dõHó“D’`˜û\úÞƒyÞßÅ$_ÀðM¹àœ3‹·ü»š‚ìÂHò5ö¤"Àýü”†úÒÆ¨¯áþÃRîAˆÛ·H{jKVÜt–âûøàƒ>صë*|øþd÷?¤ùæ^70nlL;”1[c’/Àuk!Tÿ´‰#ß&K>_FjåÓ*+³B¬½€’íâРµ…[,Z¿TXþ‘–€G/óuÒÁ+Ü€úÛ¯ª*VWòá=<µÿš‘/VZL`¢‹þ£’Ÿ‘‘÷ß[9y¹QÉ×Tè°ö Ä •îˆtøžÿxî€Pÿ 'ŽfÿrîËV¡¢èVгxéçϨþl‚Vª"_|ßl;Œõ¹á<•ü¼8äkH7tD÷Š¡@i9ˆ{þcs]î¾}×E²pÑ :AºødïéíqÖN¯ò[¿Ó!_óõš`ÞägðCïÕäk.ÜÖUÚ"ÝÖ5\Ïßû˜u})TϽ‡OøÐê¿Úñ)qæÏŸ.ÖÛÅSÍã{Sš°Îù¬›áŸÎóM‰@)ù†å’sS)ËŠ¥–¬h±h¹Ò„ H0|àŽã±š?V„¡eÕñ×þ©úï=µÿÇI#_ŠþÙ«!oéûŠÈ×Ü1V* ÜÝ[K+“sýñ:¸¹0Љ+ÒmèIKL­Ég2ò¡ôþW“Ÿ^«ø'cÍ–}$;wbûº±Ñ&v01WYñÂcDï‘ß!ôÂxá`³ìaRÉ ?³á0ù5ŠÉOJˆæj1ƒÇ$N«M‘”h‰_¼…å+~usd`’YSq'?Ö°¬ºž'w2;;ð¿¥m¬¹©N~Ò€8rÄ!&"À|@í9BÑb>?Ó{öêüßpá, ’êy5GÇFsùξ9ã£}z!Æ íèáÙB³=V JÃBª¯7ògTáq÷̧êаûÄ֔ئ]oä'­ )ñT0µ ™*ÛÝ”|= @€t"‰’¶,ÎHÖ‚’t"?âH{Âññ”| |"‰’Á#£oZôdR=ÞÉO™$P œ`!TX^xKù߬ <¡ÕQïé@~ÊyAppY͸Ž âd ¦o¥ù)) Òåe/¿¿=¥Þ_:‘Ÿ’@òëë§&xb"Hz>0%? €À‰$ÒÑCœH2Ó;Ž¥#ù)+D]]®ØÀ’tx–’Ÿ&ÀP€cô˜âcÁ’ ?­\NÌ (Ó™ü”,å ,ÁÕ@89ÇpÇèñXšÀ˜}`I˜•sn0ðõÀ·oRòõ.êö (ùT3l…|„…RЦª'ù¯^W/øÆÓ›|êd¬_hÙ/Âpÿ/Òš|ê°²âqþëä踸 °D=÷æ7Ò’|# ÀÁÛÍ0 ~S ˜îu?Úê¨-^†ûíÃHßEñF×hP¶7ÒŽ|# ‚h¸ºÛšOÈö༓ã0q#tr)ŠÀäôA>»#­ÈO'(!Z8!OÞ€á«geo÷¯ÜÈìHòE0 ó˲m :6"·~ŸœßG½i8°A¤ù¢¼¿;£©Ôî<~dÆÀÝ¡ÑѰÿ•Äþx"Èé}]÷䇄ÏË™%Ë}&æp2E€Ds_ìfÆÜÃYÿxgs—=‰ŸA«`ý£×.ýŠÀŸË@îÀëº&?"p·_éÖJ)@t4lÆ0ñCÂe]¨‚"Ð#ù²I (†  S–FDË¡§lEMþHD7ü®.Éç…‹£²/´”ç3^ïá»—äÔÊêŒèh@O×€‰ß४~ÁìœB(()‹u®îÈY²û.98,ϰ0mÙ-‡Ú €žï¾«YÙg·¼¹U`™%N]Óù1=€€eoë©S_ÖÍ/Á³ëš ôV[Ì0™3 çÖ…m+•ØÍ]/Cpf=Á¨ƒAeÁì>úh?Œ»ÜðêÛàòµAy7É‘m+_ skVI­-þOÜUÎ]Oè‘|#{\l°±¯¯Ö¶®¿™5;3Ä`|Ï)ª€97…bD¿´z‡Þ?#z€|Áúßýë{¡õ}И¬EP´è>¸…»$äw-½b´Êæ¸Ëœà æ°ˆiêäù€1ÍN.¡ÀˆL²m~¸ÙëW 8±“ ¼™aþvxÃØÄWrü lä<û¡bÔ!Ìócºåu–Sµ‘ïÙ8b8d7–°‡žÅ¸²o'w£Ë?¨*ªÒÛ£*Öµoñ¿uLQÎIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/icons/images/find_normal.png0000644000076500000240000000150613245231431024343 0ustar philstaff00000000000000‰PNG  IHDRójœ ÎPLTEÿÿÿÜÜÜÄÄÄfÌÿÑÑÑÈÈÈÔÔÔ%%%ÏÏÏ’’’Z³à=z™úúúMMMcccèè袢¢>?@ÌÌÌ‘‘‘ÕÕÕáááäääÐÐÐ÷÷÷rrrÆÆÆ´´´ËËËÍÍÍxxx3@R£ÌøøøÛÛÛØØØ!!!§§§¦¦¦ÅÊÌææænnnttt¨¨¨¹¹¹hhh­­­õüÿôûÿ’—™___···>>>+++LLLóûÿïúÿÕÜàôôôòòòëëëžžžWWWvvv•˜™íùÿ•••ZZZßßßîîîÝÝÝœœœìùÿ¼ÆÌ¬¬¬ÇÇÇNNN¥¥¥Œ•™:>?666G6 QQQõõõ××תªªVVV\\\J8¬0‚T ñúÿÎÎÎÓÓÓŸŸŸ¸¸¸£££zO[vJ oooŽ•™÷üÿ iC~Pb> ©©©;>@bbbššškkk V7F,eeeÁÁÁÉÉÉ———òûÿÀÀÀiii  BBB«««½½½”””ÂÂÂÒÜàààà KKK€€€‡‡‡ƒƒƒîùÿüüü…ÔǽtRNS@™àcñI× IDATx^ÑSwA€Ñ,’îÏÚvhÛ¶mÛ¶müÛÌfÏNŸ$oùïCU×éˆÿÂýâO!•.#î§•PtRk{ v‰T4iv{¿uP “ÃéW*Õ†ÚÒ2K¼ÚfK¹Ä b%ÑànhL(@í|»TIefeç”ÃÔJ½P_ÐeŠ —8u07/ŸeÙBÌÅNëçž­ é* ù¨Y®³ÔC3Éq\W6·lkÚ „1B@|`gWwO¯ˆÒñœ¡á‘ѱqÇäÃ0Óâ¥À<ó<7¿°¸äáH’ÆL«kë›[”Ñ»‹ÙK¡½ýƒÃ£ãêô ³Ç…..¯®onïëóÏ›´¾—×7­‰ÇŒûûGry”<_mÀ8³›ŠIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/icons/images/monkey_off_128x128.png0000644000076500000240000001560513245231431025231 0ustar philstaff00000000000000‰PNG  IHDR€€Ã>aËLIDATxÚí]xמոQB„ ‚ (JCq Z´¸;Á‹»{p/¥EÚB½}-T€Ê£î}µWãU“óî¹;w3;Ù™Ygí~ßÿñ‘ݹsÏ™{ŽóÿðQƒ Ÿ`0Á$‚"‚­ëæŒ#@Љ Ñ¿\ž=´ýÖ„Ëœ‡› Ñg\g[¹ü ˜ ©àwÙçîfÚuº¥h„ë3Ú̺tá žÏO9ƒëù[‚ož#˜v¯ ‚Ù¿p–‡Y¡ð³Œ?÷éß:$j|ŽøˆcDÐM 7Ê¿¤‹Là?Z¸¦7 š»šø­…!45Ô¯“êÕ ˜4õ壑äP»ŸdÄúæz¡<ðŠ9¯§¸È_>Fü%¼¹V«É#»ÃµÓ«áï/.AéWWŒøùÎ9xdîp 2™0q,k¬óYâ3 ©©®Ëw&/“Z ¹Í²`ý¢ÑpéèrxüÐR8µ{>Œ*ì•£#¥ŽÚÞ.Ñ×)Õ*Ø#>½~Ø„èæðíí“Ó0Ãø[<}øÌy„ꯘ˜Y™ipû™]²kz™0EFõªâß–òtr¸`¹Mx£ð°`:%Â3àΕ™JàÛ[¿¹ u™÷úäÂߟ_²h]ÿùâ2¬ ;,îÂ"F8îH&˜$¼xjÕ8EîcçªIÆß?\[ë'¼í T©TpýÒ«ÖñêÅÍSQÌ+A|ÔãKØE«ÄW¢Û¹5“ûùΣFŸF$ß“~‚—ÁXDQÛõ¬fÃ1{ 2k$‹™à!{ˆÇ«(ôbÑQápçÅ}VOlÅœáÆ a0¥Ÿàæ1°z™@øÜÙµ61ÁWoƒ¤ÄÊBÀ—·…­ p™](0@ÏŸ[gõ„~ÿäqˆã·& —òZ˜´Áû º´oj n^Ý a!B&@CR¨µÄ/n%ëˆ*bËdv­.;û4ô¿ýJÀp2& ܺ¶Ëf&xêÄJaXbƒ5į(´D5ήYN¿·TB­‘VÅxöÛïRÕÊ&zWG ã ¦eé`N},n¬s™\9EtT“©¥É(‹ÉÿO¶wœÛ8PcX÷A½ÚÛ̈òÅVØ&–2ÀjöCN o>½Ã¦ œÙ»Ð8)Y:›]¨}É[!Šª)oT« )T -ãÔ0 ]KcòvÚ™7°0æ>˜¢Ì(5j¥ç Ó¨ £æ!j(ƒØãÖîRÕ h5øòc63Àïk7-Q +íûSG÷´yùyMè5*ª¬~CÆ’7 “3™×,",Æ ì[ ƒç-€g‹çÃÅ]3áÄú °væ@Ü­5ÔÏHHFs3fͨ§ƒâ¶ò÷¶¾BxŒì“/-‚Òw¼§Œ’wŽÀ;¯†ckÇÜQ„)’g![j‘·´'yKWås0îN­ã5PFôZ©ñðP϶ptÍ8øäê&‹îxïâضpôê”Cï‹÷DFXc#`d ’!G¨= €hÖ(CÈÏ)¹v¿a_YØÅæ›®]8ʘ‹oIî†áV[)¾Å3G<wß<`ñÂËáÛ—vÀáÕàn­ ¾rãbD”ÕÀ{¶mš ëfÂWÖ;ä¾È …­ÈVn &&°¶Ð:±®Î8Ï—/l´‹Îí+ïÍ%ôêÝyi¿Í7Í®]^ÏEKˆß$ưHͲ«ÃÍó+B)¼qnÌó !xmèI¶uÜ-~}}ŸÓî÷ås[a@׆Զ`55ý*ª„„Q˜ahÌà®v1À?_^†ZéIB8+ÅçØ— :6³ù†o?»Ûx3””•ˆŸÃ<9ãIø{s[¦@Xp &-б&= #BáOŸ°‹ ö¬"d€¿835 °Ú…±´Jñæ™6߬hj¡1}ûH;yOX‹XñÇöï@Îù#^͈·/¬‚jI1ô™1¡TŽP›`ô¸rl…] p÷ÃÇ 8(PÈÄ ð€Q¥Ñjá‡wÏØ.tðnß,Ë.~¯° ¥OŸe›&YÕ¨€8_&µ’¯Fêa·0ˆ»º€NŠ`/û°]Ël›o‚Œƒú+5dÔÐÊ:?BõjÈLK€¿nòâ3|ýÂ6ˆ­AQµ¬½‚µk&ÛÍûÖO2À¯¼Ðo·Ø‡k‹FÙ|“;ço²^&Ò·-¾];8Ïcˆv–œáuj$A½šUáÎ¥uf¿SJ°aö ª>þrC^°ÄgǨ”¥’aFgjÚÔç7ŽØÅè-ÔhLìmñ5œ ÿÉØ|“aý:<‡*Ù| ¾ùÍ<†øÝ*† @½qñ’â*–Óðkß¼Žñ;–<ßÒ‰½éw‡ÕÔJ…ØõvAÎÞ] NÍ!Œe *Ô?³ƒÓ’«œ¼é/ŒFgÇÏnqqpáÑB¸h|Oøï«»Æ•¢ÂMô鉃:™|¾xB/“ÏC‚e›Þ9 ) • .DMÏ|sëÅJÐôíÖÆnèžßR8ÇŒ:±?bðf ÑmÝb”¢~ð!#ȹײaM‡¿Eƒ²ècd¬+{f;…¦íR.úµSKégWÌo¯Ð½Cc‹®‹¦lüþ ‰*g,Z¨zj¢Ý 0{|_á/3ÈþhécÙuÖHœÿ(õâç›ævQ¶,jZ”0š¿y§Ãà·7öC2y[…÷ËÎH¦;Yl%Ó(]Ü->·p‡ûéúj@߇¹5™¡5áþtçœ] °Ã4á<ßg Ðý1=%Áæ‹/Ÿ=Œ^cÝ¥„š<ÂÍø _=¿Í!D‰!’´ÈïM±tRo§ìOìœQî^L¯FK_Ú=Óªë¢ »¹Eù]àìÚÏœYcß1W8×ôdL©kóÅ{ÞßÊÀDÒúl°rê¥;„èô1çšEÔ©^Åi²@Ÿüf²®é¹£»Y}ÍgΗ´œ¢kY£²_CCÞ2K8×;ÂÀOúGôÛzñ´äxz t¿šM‡"‚Æá=Û:„[EÛ¿Ž2Åøæ…íP!"Äì=Û4É€Þ>lõ5¾¾—_%Ö [ãõ1Ã8°aºp¾ï0h,kä² €2‚£‰aûtãQgø†¬ÙríÕÓûÓkl4óÍkPæü÷ ûl">æpŠæn$ÚHø Öäý!Md0$é8I K½âw~ë Cˆ±cÑpY8¼êa‡ÿÓ«› bd¨É=0Â(½j¬Éßj¥%À7‹­g€$€ÉOôˆ>n›©3¸óü‘¯Ëh2^a_ÀÜ~kváý >”V]ÅWÌ•e uñÿ¼U M³ÒM®^Ïç/ Á¡â]¡h\‡2†’±kïYg½Oà—÷…°P“ý"sAýMÎÐyY|ƒnš+Æ8š((y›ë÷ #oáA‡1À‘ÕãÊÝcÅ”¾’òÆ~zm³U÷XÃ3€Ti\–/` ]$rPà7ÇXÌéšÐÖýâùõÝà¾Ü†Æ"®b)APútË,§ ~ù¹Ù&Žžþµ *WŒ0ùÎÞe#­º25“·0Ï,mláÔB«ˆ¡x‰x¶ËE'üľŒaDO^ªx“–M nPLÌp%|øäú¶«[0nÇ/-r( Q)œßBQüŸ™ˆåãë&æÀÁó‡Zu¡Ýsi‚‹TR –Ò£N£±½-&þÕS«È¼ƒ…Äÿ L)7 »°â.(†$ý)˜Ø «º!šHÆ Œ¸ð;ŽvÙbT/šÙ|çŒêæõ¯„¼ñJƥ맗AA^#†níõ1L,!TúJäÝÂã†XDüÇ.½N+NkjizÖšùS¸u bÿ†é4çO|³ŒêIƦR0ØÁv!~¹±ÖÎ7Î,óÈ1€ÑžÀÆä’Í-äå€b²ýÕã«b'ÆDÑD_`€ŸÞÑÂèÎ×=U#+0cs ˜ê €íOK”J¡b™öøPµ±¢†¯‹üþ•]Сy]úüX_JÄq5OXxV2ÆhUÃÔÔÙ‚ |5ÕR DaUÕä•·˜F”lô$XÊìÇÌlo™äa1ÙÄY< èÁõj/ЧdQÔ<ò=‰Œ%g&ŠÂœÇógÚ”¡]üÄžêœSΑÖ)I#l/ÄyØx'Ÿ-í?X§‚ÔÄJp÷ý~ k¾¶Bƒ ¤YàLxÙö¿—óÀ1›ãûôìâcÝX‰4»ú‰n¦â / »›\ ¶ÿ\Od€$¦  çÏܨ†äøh—\z0<ŒãÃÃX ‚OÜ%ê×–ñ4>öücA –í'¶L€hZ}Qíä—p<ŒF!ÖøÀYŽãÜ'ÜúÑù“ìÉ  cA"¡Dø‹©î'²R)š5&¥hNq^0&p|ý^´|ù‰,—Ž-2@co`Œ`ý‘…YÝë.yç0ܹ¼Ž¶Å6nXµôôÆIprÃD8»y Ü8½ ¾yqû=›öä‰ÿ1çEƒf a$Ž+;†"a'îLSÃ*W ·8&5éɱ´28ö6¸qf¹ÓcY¾¬ËÓÞÄ9ªfÙ,3}xWJ<ÎΜ1‚ƒhÌ æÚRÜRðím/z`IRÚeÛY}ø<Ü]1èÓ‘ÀŠaxOgD2¥V©Œö“«ÞÄ GÀ‡ûÕîê]Før‘ÄZ í€Q>Žz®Zi ¨þ½àM @ëï\äûñ | ¥lÑfWã±<¬#2‰êÕªŠ×|Í› ..†_Ûë?Çc£i¬%V=Åž~ ¾`lwؽdõI\Ø1žé¨`¡Ç53P¡;~‰DY<¿­íd®^ aî›ÞÄX™’Z¹lö–]ßcÒN‘àj5tn]–OîCU;[ýXƒV&ɇ ½…„Š>«¹j¢–‹R“kÜö&àA¾±5ßÓ»,}ë»äfSuS©m«mÝCÁéM“È=ê›-P-–‘ÿð)ë…Ä´¤Ÿá¼l¸¨ƒ›{ø[çWJZõPÐó”Ô@p—âdª™ó%üçÅí˜3ˆVÀbÎK‡^­V× 3¥´\gî×÷“·#^’ø®p$9¶¹äaÈkVG’ °Eœø7ëf²ÏÛs^<0Æ ßaZ}kÿòÑ.íÿçª"™ÕÍ>S#rL˜0ÌíC’X¹”0ûWÞºý³Iò‡š©ñ%Ø‚•-@aA+³ 5ˆüÝ“#|>¸²¢D½z‰urÛÂaì³Qœ ,gç6.ÚçÅ‹”AÞžß¼ û ¢³HølóÆ”õLÀöv±Ñ%äÅø€sB}wDPÝ ЕÜ~l]„ßß:€~pãUOŽ£o·Äú¡ŠˆÖÊ´¤G€>¢†Å¢87.묑A˜ài %wy§ zû°ë&–úH謑ŒøË9Ãðá»¶màÔ+wÆ+bì!Ñû/¡¿Œóѱ™kæ–¾ë;)cè  ç¾ ?Uà|x`ë™ýÈ=îkbS×mOËGŠ ¦bª|w9Cǟȇ êÖH*}ÿò:¯%þv¢î‰}~rü¤7#ÉyøgXHPÉéM“½ŠðXkD¯v̲ù&ù·ªŸÜæGr.~‚7Xß׊G}ôÔFTkY¿ElÂì'³ü@¡è¼Á{O1»³P X{ãô:m)‘ö1ÊgªŸ´Ö±äHø…w£–Z匀åo–NìÍ Kx7ö%oõï»b`q¤‰äXø3%±rɉõÝÒP„QÀVNdºÝ«Uªœ›W÷ö4F˜@Þ&l†ŒÑ5¥ýïoNc˜Yõ^}GÈ•ß:û ”ÞxÚØ±7¯Ýø‡ƒZÌF\& ýgÈÊ)E{úö¢áð¾ üŸ]ÛL»}axžïüÛŽ:=rt"ÐúÉäšÁ¢ŒŽ’ág®,q³[ÂbÎÞºYáòžYð¹ ¥i°ñ$¶ÃÌ!ì&Ú¥M}ÌO0vO'÷ü›ü{ /禼|mgÀfÖóÎ’7ò}NÔêwЍˆÐ’¤¸Š%ÕK1 C·h×úæ7ƒûZÔ…µS¡j|tIh°A€ãLûþJþ½Â*¡Dû—ݽúÖ³ø7t or>Ãñ%‚›µúc‚ïÔjÕoäß/ÈßÞ xŠà8gˆÍ_@Ð Ý¿œþá•ãÿZãÆþ†Wq¢Ë 5&¬šd¥Då}\-æ›(6vZ°}GÖŒŒ3´X®ëª+xºÚMjƒ»ˆ· 5è¿g»þgXKÿÀ¥äŠÕ®ìÿSÝõ¾ü}ºó|˜Û ^V_W‹E?nû¿c~ÍÿyŽÿçgØþ?² üÿ¾)Ùÿ7TûÿßÓŸú×´üÿGç—ýŸ®ñ¿ÁQüÿ‡›þ¿»±îŸ½¥^CQzÈ.í³ËÿOÐþÿïúòÿÿo,ÿ¿mV9˜á‰Õñÿ»J£ÿ¿>>óÿ7±ÿÛç×þéÉJðÛÀêkwÄ™”bÿ]…XÃó#3þ»ÛèÁ ¨Jø_”è f/L6ý¿¨%l@ˆÝnyq¹Ø— ¥Nr¿×–{Á5]ÚÔ g¿øpßd0{~¬Þÿú›‰îWä¤Åäá1§Æ²gaŠ\Ó›³ÿÛ›iþÏq‡‹}¿¸èÿTw‘ÿÖ̳ZQ¢2D‰yæ,7Áÿ/M+…Èï{€ 3`ÏÔÜÿËœÙÿë 3%a¤+ ¦’É¡ÿ¿œ›×€Žß±ÙCî+7 ƒ ¶ôľ¶+õ+²sç·güß:³ ú³à†L+ ½3¯êÍ~øëÊ’ÿažÿÝmõÿ¯ìÏû?¥6ñB =8þ\]úiwö6œL©KìÈ‹õ@I0¼fRáÿ–‚°ÿ­…áå¸3’ž2Pólþ*ÐK[eD9eH “ó7M/]¾snåáý‹jÏm˜Z¼ØÖD#(Ç„®wsÂg·ªã´IEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/icons/images/monkey_off_32x32.png0000644000076500000240000000311113245231431025042 0ustar philstaff00000000000000‰PNG  IHDR szzôIDATXõW PSWÍOÈ"a @Â’D ¨²%„M@YŠV ²X)RAÐRDD­E(¢‚ZD­Zµ"jÖ±uŠ V…QQÇ­­´Õ±â†äöýI‰ …Dý37óóÞ÷œwß݉¤ûCaâm™ØF¾vÂÎûÚ”†e£q'Ò{~èì« ä›Kܨ½Õ2ì¡Ã®`:¬ð ÂG#)#BçÌéØäwŽlFÇüF›b]¤4:˜àd¦ÛSº­™X=ZF{'à,:áË£ÏBm¬8%š‘cF¹Ù¨hkÙ(4÷‘Øæ&Ÿ—,™£Š€¤/Àc?[ÂÑ0wSe`ófLÒ?\³„\eg-uyªñÊŒ("§»ráéƒ*(êzPôÍ'2Ÿ9ËøÚÞºÂå“\“åKÌà÷SÕj OÎog¸°¿TƒÀ©Äݳ’ £/JèKsàöÙø‰Ýe}8æÀTMGÙj'Ê‚=⑽ø‚>Lèü®B«©u‘¢x)A Æ‘¡X4?ú…½€×mÅfA˜L­éÕùsø‚äÖgjUªè@g›9¦øº@l˜7òüµƒÈ u L²¥t“1lÁUÕü] ¯ J‚L«Òºây@&“ ‡ÄÅW,ÒúÝ­ãU°LbJèò´$ß$ÏPª`åÞýÍFV ú´$š¿6€•CW«f8>k߯ð«u&Ò6PÑ_gj!:Ô0vF† ðuÁ|y0$M“AT;P(db.EÇý¿T#è5vµÎfMóÛ©TÐZ¿è4*\ºHN„á›;Å{†Æ²O€eÂs–\EiY™¾½]ëLÀ}œ}Z÷O5Šv”÷q`´ è¹°eÈ3ÿóçpòˆ²}çäp¬~és¾5{¬>í¹Az|h{é¢8ÂÜ=ç· Ûñðã ö'P“23RrRïKÉxG;÷¢Œ˜N}¼oÕ2“Â.ðylÁ[ÝŒDöÖãrçFu Öj¼K ¹Èe›Ú½“ëò62iÙÂYámÈ'ž|ù`yoNrdê ñeïåŠ,´á$È&:­™ìU›ØŒÌ|xf¤t«Ì]´v´€ƒ—t]ôý ýýïËö«‡cIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/icons/images/monkey_off_64x64.png0000644000076500000240000000671513245231431025071 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞ ”IDATxÚÝ[ XS×ΞBØd ²¯TdAªm« àBQ‹E[­VT7T (* Z­¢(ŠZ[—V­íkíb­[´ÏåÙÖå¹´µÕ*‹$Ó9×’@B¢I¤½ß7_¶{î™™33ç?3íÙ\,¤¤HHLÚ¿ü’0è´õ<&í[6ƒö~B–,Z½ò=~ÿ—I;‰ïK‘ìÿ Bs‘Ò8LÚq|•Kmõ£|YÛ Ë£9°# »¹PÏ…â˜Ñ• #}XàiE¯£ãýíŽKú§ZG‹A»ÉgÑ»3å«{q(aõ%¢ S†JhD˸¬p“ÄÅFS_Š${Áƒ)ÛÏ5HpMÚÒ— }]˜ðyÐ*¦âóéYx\õ ÖzýüpöS ®IÓÑ=,Кðù$Ft꣩ÞéfÇoíÇ5ªðJz'ŽÞ"z#*á"Îgב„wDá‰p`4îL0ðJÚ†Êõ106œÅy…Axkþ¼TÌhxZ×—*1.Hôzœ÷3ÅNcžUF Cêªò™øÚÊÞ`*³×FoÇrÀÞ‚NbÂ>S M"nÒn:Þ¤,H¼,@šŒÀ¦‘ø¦9…WRYo0é4Â׋ ~Ç"f0èá{b!èÓàË…&˜L†|ÄÐ~P^8V.š¾ž9õ=nu“ƒYÏDx%¥û°äh…·‘Ÿ]„'›©/Ä!śŤøD9âkŠA~Í Ó¿!ƒgæ¤Â½‹ïüÆáfztíCps¶ƒ@1ã™ Oˆ Ig>½ q¤ î¯ìoæóÁå}P¶$Ü$ät\,”çe}„£ùœB­Áê‚5Á•´gÃ<ಙ`(º3D°(à䡲6ù½õ} ù»ËJÈlO5Dø5K'·ù0BR ${1;„ðJê+aÁ€ØîZy¾ýC „xÈ1,Q+~'‡–±é´>èØÞ`3TÖÅP Ò¦8.¬Á@Eà¬Áû=n©pŽŠlŽÓï쀖 —WêPÂ.XZÈð¾Ú6X¸òÇx<ŽìÚéíZ’:8z»´-üFdxt\møâa½‚:àþîç îöèíe ©þ|Êdk4Á¤lä'?G+ˆ”@\Wx.ÜâC=ÁßÉ Ò¤(ŒÒ®x©=fd§håPIþ«ÊlŒ¦üƒÉ³¦¤i|ó»Àa1a¡Î'«=!„.¶xkú¨û®àÇí­èÊÑ•°gÕT=0D|• #ÐÂÜDÐÍ«äO‚÷×N‡¦sU­Æ6ÕVQcûGúAwµâš ˜Ì‘%Ô]9 U†ºŸ ˆVÀ¸ŽòZ¨*à¨Hh)»é}­ƒçf‚‡¸µ©ôâÃÈ‘Ððý–6×FŸn™ •…ÙðàìfƒÆÝ»<Ä0¥+O’WóÙP¹j†N+¨*ËUZÁD•#,½.9)FçÀnî᫾ïÀÄÔ~ ` ªû¶#ý!+H}A¹1aHb”N9¯~–|Ùö(I4Rº0[ë ‚Á2,Á¬NT +ÈÏo3º€Ÿl΃kŸ–©}W»ÿ-µÏÄâ"ü%PÙÂÉ*٢Ȯҩ„ø˜P šŒ;ÊüÂ4¢€“‡Öhp¸z)ð9Ìæ4¡h7!œAslO˜Û_VÀ…CË R€H\~ü „ú<3ke¶UE“ÔîûéãUàí P Ä(œûlƒNä¿1Zé¾DU!åMˆð´ ˜;u$tslžlq¡ÞŽz ßÉVb+Kصòu½0fh,Å`lD ¼»z*³”Öî/juï¨0/¬%0wÆ8µ®èu 8²c™RDåd‚úŸjÐîÕâÿ9!XòZr»‚Ì8”Z2™Ÿ§³Þ øíëõà`kEã[p©×â™#Û¼÷›]‹!ÁGÔÌ[‚+ FáÙE—žQ(€‚ÇyäÕ[´°à²Õ´<,@G6ÎjWçc»)'+ƒvŠÍK&4ÓUk¬y„[d€s‹&±ÀËÕA§ªËg+Ÿ@S€ÔÊò6oþýÇ=ÔÍ«T°?5ÄÿÚÂ×Ý©Y{T€>1CI“F$6Mî©ó^âŽÛ ™|\(K ŽNçW>[JàO>ŒNNhóæ _n¢nV…¤]\E¸ojWˆ˜ð€f!H,øù“Õz ¿cÅPoy ÉûCoçjŸ'Ä”y ’ÈýôhS@LT0‰+$¯ÁWn…Û ÈOYÛêæ¯ö¯&âì•ý6ÚÃþÿùÚv)x=•Âè”  Oë³eþz|}³Ð«ò2aÙéÔ{WG[¨×‚2ûtiQÀº>  ÒغX¹(…jY]ÔHC€Og¸zj›Ú€}• )„¥ 8â}ĸE·+Lí"°µPF†xëµú2“•Ïx1Fáã[!Ø×•z†6· óu¢¦Ês¹÷ìGå­„ÿãÂ^ðñt‘#¸KŽþšçá$õ…QW¶£b‚‰Çƒ6•N7uØ™ä/‚ã;ê%Ж‰Ð3Ôþ÷Q©ÞþÿP?úa+|U½@ëýþÎÖjüñ9,8ZS¨&üÁª°[HŽÅéÚŽÄ¡¨„KDƒ6b¡<#%Æáñ8ÀA])B8´!×ì¸-ºþÙèá¡®!vcâæÒW›¡0RXÝñÊÖ§½¤ˆi9 )²(à`AW› Cʇ¨:‚v#ÀJ °TãˤƒÔÏM™!“$i‘æ P¯ä(R –±›T'ÈbÃÊÙOÌ41éO*ó bþ8øîý§:OŒ TŽèÕŠ€«M*HËz 1žªÒKŠª»9½Ô'Ø`f 4ŽÀ`ÈBXKà1ŸÇk!w¤êICŸ)ílK ­äm½b@r1V}À‡Â}Õó~.Ö3äãJù¢J¡™xˆ6—NK3èy¿ ®ˆÒð²8ŠgòŒ¥²]´Ê÷öÁùƒÅ1,ÂÕnKx…ŸR‡ Cž·qqdJ-ÔøšHkuF­¡ 4䇱5JÖ˜:2Á †«Kr¦r)“W^hÉŸ <6'÷íEé±< `«Í5ãöº0i_§y«gƒª17àÙÉÊàTØå#+ <, é~N3ò9ÜQ^ƒ»'Þ6,b¼ðÂùk4rƒ¤³k†Û]'\Œ=>š‰ÈQ|(ÕrL55}¼y$ùYµJŽ:ò©RØxc+ ?ZA«ú?Nb¾Á‰McPjB(äug·j¢ ?FzRc+À ,{KÅßHn¿ŸR±"sÞüðŸÊ9 ±±¤:Δ<ÍÄ44ÿ{&é%B 8Ÿé×½0'+院ÀKOHXóX I˜ÆjñAS5 ÌsÐ먂d$Vqzv(|¢f„¹ ©„­MñǘªaÂÏMDø(7+ª@Ñ@(Zê ãYÄüï«&9LÐHÛÛÝžÑ4 Ê¿ÃO¨,/$VÒO¸ÜÔ½BqlC¶fîËJ¤hB’® ØnÒ‹n/Þ?V•ÿDŒÞ?ý|ºu.¬™7²†÷ƒ4<e§'ÂÌWÃâ׆ÃúEY­’!úÐckÁÉÞúžYÚÅœÄ'O¿»DoæÂ+ÉþXÐvÐ<ã‚ÉÉpî@‘^s\¡£õU³( ³“Ý»§v´ËÔÅÃËaZæó¤YI/ÁÛ"’P%–B %í͇pÕ\P¡+F’+fÆb §•@$7øJJ_ü=>zg6µÂ_lŸbÊ{{qL3¨MK± aÃâñ:'.ln˜E¸*©ù9ÃjËÏõ õScž‰ŸûÞ2½ÝæÏ“©t8É«>+¡g0•%Ö¼¿dhWÌÕ5ê…EË[šLÜú¢$Ž6*¾LƒWSã©À÷¤ÑýgLƒ¿®¦„äþQ­ºHHо³“íÇfkv°Ý‘©0ñ×™MÐ]êÑ̤£½5¨xÓhÛÜþŠj±dì°85w؃d,½›S+Ð'Éä²sÛà¹^!ÍÌaŒ \ÁØ{ýÞ²iÀRQ¼IC[*Cw4ú˜M~ÙyHìo+ø~_¡ZfçŒ !2é)b(rŠ8?õÝ?,AÿŸ1ÿŸì¬+VÎ~¹‰ý¤íðƼ|°©ézå²ìs.CKËÍrßÖZHþ@%ê(ÿb8˜žp—l‰¦ž´ÎEvñ¾‹àjùÓ–»Lran?û®OHKøóæçåFœô `éìwì2©UÔú:ôÅÀÚ_š‡Äát×÷Û%3G5^>Rj°Ð¤hºznfc¯ëmV§L‘ê6ÇeƒàeþÃäºÈ©·äÖˆ¤ž¿æe¿ôW鬌¦¯Rýƒäë‚õëÝÝÿ6i<@l{瓌4í_t±­¹/(zô&¡b‘W¤4¤X$ws2ô7©™›•£Êç§IEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/icons/images/monkey_on_128x128.png0000644000076500000240000001537513245231431025077 0ustar philstaff00000000000000‰PNG  IHDR€€Ã>aËÄIDATxÚí]t×ÞÝì&DHpˆHBÁ%¸4¸;E‹»Üݽ‡-´HÚBíQ£T}uãU¨òÚB“ûþovîf²ìÌÚì²vÏù‡ÍîÜ™ûsåW&ÐÍZB{ ÂDBa+aaa,¡¡-!.0\ÞÝô„>„5„+„? ÌNüJ8'¥ AVÏna„n„ã„»JÂ%I²Â!ZV¶ –Å„iYd°VøÌ !þ+ÎM AáöœV’°–ð»¹Ð¢H°µŠëX$=›YÝÀ¶5f‡3BØÉV–‘Ý"„mjÌ&V5°NeƒXå":ª·H†o“EÒÚCj‰„„¿¤Â)ªe™ Ale½`YAÛƒc-CØÜšÖ"6ˆE´æDø‘0—P8 ÷µpÂnÂ}.VÚÆ±ô–«!t9œ L¢Ù¡ Í ö ØDêâqmëDø’¼A§a­K±­‚]*xKXV× ,/f{‡× i1©ßJNJߺÆÑAlW÷ ÞkÒƒYéˆ|KÃ?„éÙ@½V[úÖcÇšü°Ÿoi }°Jz–Ãx•Ÿsm°ô ß.>ˆÍñ(áK±¿Y«VTg~ZHˆÑþ¥Ë|>8ŠM«fðXÁ›o{•Ó3­ÖDlV{DjŸï0~l¸–mhì—bV  Ï[rEõs YiQ“' \UšNd„xð¥KB©°|ÄiË·`Â)>X8by³ð9vÒI%&< fDmyÍ’R:ÞìÙ Wãò“`\@äùÛ>8Õ‹éõ«¯_ºÄ摺‚¶±[/q“Ä*òi_ÛÉU(X+U§ú»ðkñs~ Rðìiì³ÂçXJ*ä`i)øœPÌ—Z€Ð—0’0šð¡³ŒZ4ŠkøpÎ_[ß÷…Ï1¡ŠAjC¸¨ñrg}&á:ŸÊ-à„lB=Éïð¿{šj×èL&kÉøŒ²0®!„£åó Ñôü=á6á%ÂÔ‡½„„f~ÓØîf…ÍÏRqÝ>käwÂŽÒF71Ò´øƒl¦¿cã˜Þ 4p·ð›H 4RéX*ɬvµ dnZ°åCIr°Eˆ_XONÉ~à5KVO;p^ct|uyN¸'í\¯b“Fte—ŸXÍî}å~{É„_oa+æ cá¡ùnNKëüVøƒ+ê¥ãòC¾—I§cMë§±õ G± G–±§.a'wÏc#t`%Š’[j{ºå¼.Q§eý»e°/®Ê'tKøþæ –^+Åô[¬þ.|n<Âñ×\˜i©Iìæ•]Šcz‘H‘R¾ŒùosE9©¾±Ü&í(²`˜pÖÏ™!-5Qøm‘ÿžú-9•èò¬‡¬WfSvÿ« 6ë?__dËi†Å,lF„cj’`¢ôâ‰e¢­²Ó;WM4ýþ±Êú€àÍÐ2Î(@­VË®_ØbרoœßÌbJ5'Ár5„s|¿hé˜âÂtnÏÍýzëIV¤PAá÷I´ó=ø€Œ{5oXÍn—Ù“,µBYs<êŒð£Å#Šp±bE"Ù­kû쾱峇™nΔ[Fÿòy—N¯uˆß¾s”ÅÇ•/oCG p‘_¨@H0{ùÌ:»oèÏÏŸfÑâÔw©€ å •(ÑVСe=‡Üxa'‹*.%Iö €t*YGGGnf×ê¼µ~­ÀÛo p'ã{÷.ïr˜Ï_)uK6Ø#ü¢RMTê8ßÛºC­TÚ´ö;oR fËë³±UôlajšÍ&׫E¤Op×¾1Yµ ÂFvtª^FYDÿ?ÑR=³q ã¸ìÑÒaÃûµ7×ÂÖµ•«ù ={çùÝÀ©½ L709Íà° µ7½f^5j I'¡c¢u¬_²^ðÉÛédÜÀ>"b »Î"•¢ èåïÁ¤e)…‡$ijv‡2Æ>(ˆ}óöQ‡ pç£Óæ'ƒ¶ KõûSFuwøÚgÔ®Q¼€Öî7d ½aÎäV³(Ò;Œí߆m?”½tp>{1{;¿k;¾~<[;£?Ô¹ «‘’À fça¨›=4¼Š³›+÷yœîq1Í&ˆ-Œ/˜_9ʺµ©Ë–MêŲWŽaW/`WèžÚ6•íY2‚õíØ€Ž 3}?„‘^RǶ8µÒóç^<}°S³4‡fdí`³L¿Áì»w9Ô1~Ç•X×l}xDçV}ë G†³½2ص#Y,÷Ã#Œ}d9f<½š];ŽÍ™I¤(kZ ¡l©DoiwzKW¥s€HÙ© ÅF†ä ½Rb {´{svdÍXöù ›lêøèü¶mÁPÖ£mºÐ/úV§ÛGxF N2´„:C ~í)^¶fڽͿ<‚tÎŽvºvÁHS,¾-±{pÃT©oñŒá°»ïÇwW·±RE£h#ªSÔWðå±rŲN`ßú)Rü.núMí=þǵY#îäøÎ9¦NÖ+xú6×·Ëæúð9ðìðúÁFY.fTªÞtšúêÍÃNÖ  |úf\øAIþ³ÇW8ÜÉÐ>m–ÃZEpœ4û£‹f¿½©®#é®M…¹ ¤ÒŒFczÚ,üN®¢˜†0éýB(h-6 «4ã.I+8&ÖL+oô&R0£¾£¶É^½ÒÚì‘U7wk]7ÎmŸ¦zp‹âD³ðØ!™6 ÿìE,Ø 7«gkxrÍü-e>”ûI•ˆ˜?óÎRÊÇ›Š:È=À •õRüöæ^¶vföæ©¥.sÞxýøb¶aö@v÷íýª_KMÁð¬^Iy$‰Yņöi£(øO^;`îÿÇ…ßÕ‘Lž¤+IÓß4š†¤¹¸#ˆRîŸ)iƳì3;§û½'9¾¸¼I›î‰òã×1%ǗϬeº·BùÍdö§èôëP‹Õ 8XL™I»ÿ,Òð¬UJ@r|ç÷€Ðó/ÆE+­ Wf¾zë0[Cúý$JÛ#s\ýΞi_©5³}æ*½Û+,H›.dÕ% tÃ–Ü (e\jTMŽÝqÑŬÕ>ždIÙãlK ,Ö "=Ðq†BæO9ô´B$o@èù‰â¡Êqfåéä𞘣¹;Š< ºd“¨A̵v Ž2äÒ‚bòBÏï €Òæ±Ê¹ù1Pæmß%šõZò Õ-¡³ö Ÿ½œ‡ ôÓë»Ø¢ñ=„(#½2«ÍÒ)µGÛzB4òÞ¥#Ê}=¹Õ°1¾Šr¼ ¤ÖÀ'¢2g¡ŠÆCŠTžAS&@ßdãQðÆS+ܺÁÂkKÎÝrÎÌÛ]È3à®ûƒ_ÔÙ»­d4‘T2Ÿê‰iã÷I$­äZRÇxØ@­à YN›ºN VÆ_þµÇ¥÷SsÅBÖÓèôL2àGO­Êu£¬¤…AfX½⊻ôØ KQC¶btŸ–.þ¿i´¦ÿ7§w=¶}nÍ"È1@LŒ|iï,—ò³týÂQáv ÊBä®+ïmË·¶[Ž:ʼnÈZ™\˜2è<[ÀÛaí$ßµã6d­O ¢!éRÜ1à°¹?·o6ÛµèQ6oLW6¸KSáM_?k ñÓ]ç~®þ…³’dY'$™”µ…' ¿Ñ ¬çÂ[Y/Ø”!ÌßôÿÈ@ŠgŸdCº¸Ñ©zi= "žL€RœÖôÚ5©L<²t·ϟÐ¥Ud[í$Œš‡s{rÌÄrQ®óÑN½w‡ú~åýëŸ-Ó?·<á ÈæYºmMŒÌ>:¿Ö/°eÞ`«iô8v7 –ÚFyLÁ%›*ï²iú«&fÅŽ+YDÕäKž Ä+\P˜ùº’@iÌ⒠`¢7åOs¬¥BEšö˜£ðáåoÉ"SتAUáù‘_î(ólÞÐx€Õ*ny{œÊ¢”!ó'Œ-(øà¯ž@8–Â…gU?œñ Æ4*Ï d£7` ×µ0½¥ÒÃ"ØD>‘,r¢1/@K3JîE-¢½7À”rf‚™›ó8qM›L ˜€ðóЋ²ƒ˜ÒÚÆIˡj¼¬}ˆ›¯.qÃÔfвD2¹"ºÆ›«cD¨±4wœ‰Ì›þ÷j¼°ÍÒˆuzv‰¾n´Ào €ƒ¢ð?ÓøP¢†à‰#÷à°4©çÇß±Y a0|E°H);¼g VBÔõç»–«¢ÂIVLëò¼/  „ŠàK{Ò²×®’äBÔ É÷lÈ&÷}±¼íy_"R’ U¶å¤,9jŽÐÆë§ti½bBNB ª¡?yÁ—PǸ —¨´<Èyë"|Ú…txuª–³øLU+ÄËþ®RR,ŽW}‰Bâ å÷?“.N!– >ƒ§7Oö:SoWòû“#5*œÉ&¨®Tßù—/ *î×Jƒöê±EÌ?¯] èsoÉ.†s][ˇ¥¡B:¾£”/Ìå7|‰ÈL)h¹¬æËÑO>pƒf”Xódá#~ËúUdŸ¡ttQvûªr‘‰ziÉ ÀM_"€†@nÛo©³ÿ##xzцñ4'ØS­’|‰™°!6%²LŠ/‰MàµËÆϱe s(&o€Ð Q>ž"|è8^Fî~uv»mf𨈰_QKÛ: „­ÊföéÐÀj'2 ³1;³e²KÜ̱?€d6"ã–Îêý”¢ô¹öV]9µÿ}U¶g##BsÙÀ}G¬Ôä8»²{ $2 /ñ—Näù¹ODBýA”y/Z(Âæþ±Q½ã@ZüvMªƒÈx³Rë…ÁÙ½x¸C¸GvèÐÍõê¶ Œ~uó´aÙ&2Æ@»ø*™^‘þ‹Ùõ'– 5ˆ¬Í–NêÅFÒô[„RÁ(K@ ›ƒ«ú/Œ(fZÀl¶`š:¨™šë”eÎÑíéMÑ8™JM`ù™0°SR” ¯×Rãà >nìéÎgßzëÔ2¡Ú&j=<ÁkØ#-j±NVÇR“W"—fœo}uúç­=äOcrÎF qvcú¶Nî·‘•/Íë-¢gX@ÌÊ ›¢§0`bءչ{›ðá˜Æè›?ŸÐ‡Î@óÉöD®2H'#IEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/icons/images/monkey_on_16x16.png0000644000076500000240000000125113245231431024713 0ustar philstaff00000000000000‰PNG  IHDRóÿapIDAT8Ëc`ÀÔø™´Ýd™ÛR5YvE«²¬0cjá`` ˜‰17˜°>ZãÆþ†Wq¢Ë 5&¬šd¥Då}\-æ›(6vZ°}GÖŒŒ3´X®ëª+xºÚMjƒ»ˆ· 5è¿g»þgXKÿÀ¥äŠÕ®ìÿSÝõ¾ü}ºó|˜Û ^V_W‹E?nû¿c~ÍÿyŽÿçgØþ?² üÿ¾)Ùÿ7TûÿßÓŸú×´üÿGç—ýŸ®ñ¿ÁQüÿ‡›þ¿»±îŸ½¥^CQzÈ.í³ËÿOÐþÿïúòÿÿo,ÿ¿mV9˜á]s«Àôëã3ÿOpû¿}~힬¿ ¡¾v‡@œI)öÿ×Uø€>?2ã¿»˜ýëÊ’ÿfz*pÃ&›þ_Ô’6 ÄÇn7ƒ¼Œ¸\lˆË…R'¹ßk˽à /mêÄÊž«÷¿>Ææ_b„û9i1yxLÄ©±ìY˜bWøæÄìÿöfšÿscÜábß/.ú?Õ]俵ól F”¨ Qbž9ËMðÿ‹CSÁŠAa1±:þÿ`à Ø35÷ÿ2göÿzÂLIiÁJ‚©dr¨Æÿ/çæÃ5 ãwÀ@löûÊÍ ƒ-=±¯íJýzdYVÍ ]ÞÜõZYè}œÉxUoöÕýùÿ]MÿFrɇÓsÿ¸˜üß:³üÿÒîìm8 ˜R—ØÒ°cNÅ_G£ÿ!îæÿm5€šMÿßÙ5lXkax9§ÌL@[`6ÿ¾ºÅ óÛ3¶*ʈrÊ, öù›¦—.ß9·òðþEµç6L-^lk¢ ”cBW “ÑÄÄËoIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/icons/images/monkey_on_32x32.png0000644000076500000240000000305113245231431024707 0ustar philstaff00000000000000‰PNG  IHDR szzôðIDATXõW PSGÎËÁ‹„#@Â)©"((äJwP±•r(WE`d@)9¤ ‚ £Œ©€Z„ZEkÔqœŽ§hE˜*êX±­ÌTÇEòw÷!‘4¡Ô7ó3aßÛïûv÷¿–FSÿap˜´¨éb@‹8g®E|§«Ad¢q[ÚG~HDöÍ|ú ެ¡*‰4KI8âOB3 >›Áø º¢O‹>8³IxÎÔ%úv‹5d˜t<Ãb–[1L9D-š¦ñAȹ$äaÂxØô?Äÿµ"ÖkÃiD>®©p²±ß’;¹Ñ¨C>j[²5‰fuˆ ¾n>G“ýÒÁî“ûèw¥6q³Ñ_}òQ[mÃ|Œ|"ј¯wI`fø7WGëI²U‘3 yܶ’Í ÏÞô·‚ìA$†zÉòY²©’cÃ;7‹Ë:ÛT"ØOoµ€Øá±žN¶»®6'7;5âþÛ£Þ`™ƒ‰àïG›ÈÇþ_æNBaF$Œbýq\mŸ0èty´ðÌÍ ¾¼û£ü£ÒœØæ:°ß‹„d‰ÊRƒ¡./Š“ƒ 0Z b Èu×µbSÈ‹p†¢x_(M] •é!ìeåŽ\D ÐÞÜo•ãßýµŒøz}ˆ›NÓœFfìÚ–24úÛ"GKùгWH`øÆ!€ÞÃJÖsjÈzT¿;Z– [ýž˜àb ÝÇ‹¦, ak |íÉE ŠðÙDÖ¤ÔÛµæ¡Bsñàæ÷‚ÕRð6eô#X“I ˜Æ Ib|æ¼~_rl¿Ÿ.+žf—Ú}Yäbç' ¹rä$…¨EŠw[FtŸ,…—u0¶ Jm)QÒ ÖZ“C…ZNâäDàò÷©' S:ßfL×¹%j @ ‡GA ÒÃ(.ógÂí3ã’÷µW`2@ ꊓåéÛmõzµ8ÙY¥ ü²O6 ~jßzªãb޲_ÞÚÏáèî hØžcA*š,&Œù\h“ÎÔn˜òæN¥=g¦FtŽ]!>Ïê‚Dðs·&"Í„˜Ø×ÍöæÆÃ›îƒïŽÙÊ`Ñù)_Jì­ÍòÓÂzÇÛr\-Ÿ^®×Òc—\˜ð,Þëfdcej—Ò3^_¨Êp—¼BÚeÌÓ5ÿ ×3-M6ÏßÝ~ûº¸Àäك㣰ÊZÜz†<<í£\‘-ÍøÑ’…¶;ùV'„ù4¡m>µ2X|@âd³s¦…q.éêàý ™€õf^qIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/icons/images/monkey_on_64x64.png0000644000076500000240000000662713245231431024735 0ustar philstaff00000000000000‰PNG  IHDR@@ªiqÞ ^IDATxÚÝ[ \”ÕŸ}``˜6YÙ×ATD6•JŸ © (Š&iBdéÓÜPL%%AQQÈ0DE5[´”¬—¶˜¹e©=—gåò\*KS™9û9Ì Ì0£Ì@}¿ßù Ëwï=çÏ=÷ϹÃ`tÍÃA BŒ€ÂfüÃ)‹ÉØ`Æf|Ëe1~Ç߈‡Ñ@ÿŒÿ•ÏfßKQìþ FóQ2xlÆüTȬY ã|80§/VFòàíD>ìLâÃö>Gð`V.dzsÀÊYÏÄ÷y,F¶Kþ»zG8‡Å¸!à0Sܨеy”±ú $QÊ–#Mè—”ËäoñpÑÕ—¡È‡»³åÛø®)›ãøçÌ~ˆý=D¯˜Žý3»³ñî8ëçÅ*c¢_»[1åöÚäÍØ™3ILxߘF“ˆ‹²‹Éd6Ó„…—WQ^DbÓDÖ¦)§¥lØLÑ륾“P°XÌûDðgâ!£”¬ÓàÇ&Øl–bìÈx(/š«—䂇TAý·º{qºÄxZÆxsè…·PŸD'—éÃcQb€ËaSz¢ð3Í uÍb2¿!gç¥ÃÝ ï‚âúyxõ#pu²… «K'Bؤ“€ÙŒ<ÒR¢áÁåZô¼é}({-\¥=Lœ,´g‚>ÆKÐ}Ž#j°¶0OÍpZvW.>— †²;cIa(Çö—µ«ïÍïj!ÐÏM®abGÔã×-{±ÝΈȼ¥êÉîÆÓ'åÀà˜~Zu¾õ}-ù»+”1,I+'‡–Ickíèðžà²YTÖ¥P-JU,Öa "tÖàý·ÔJ£"Š›bõ;; çÂ¥#Õ:@Ø –ær|ïL»,œùÃff<ùÕÛ´v’žƒœÛ7~#*<ÞŸ.Ör·ƒ=ah„ô÷u7;Kä)†t?å²µ„‰pˆ©2. õ¯ƒDH!¶;<Õß‚=ÀÏÑ 2d–P®x™få¤iÕHIÁóôNö¬¦ý)äs§ehm|ãôàqذXƒç“ÙždÎ6–ðú̱Pºà‡mmäòÁÕ°{Ít?¤?Ø‹,µ„¬sqA_Ï?%Þ[?šÏnmÓ¶ùÌVªíÓa¾á&¢f\€i½¸`-²€úË{µÚPÿã^Ñ X×Ð^sUŠ„ò{ßÓÚx霉à.iëêC<9$ ¿ÛÜ®áÚä³Í  º(îŸÚdP»S{–‡£¦õ1SÓ…ä$.T¯™¥Ó ¶–Í¡½ WåˬOMŽÒÙ°¯¿dù¨ïû£ý-!7=Þ :Cê¿­†¤0?˜¨>!C]Ù0,)\§MW> ÙvÓ„DJçhmD¸"X®²K0«àŠs5&€ñ¸P?)†µêD²J6¸ ä×öë!!*ƒ&ë6_˜A8¶Ö¶/Ý’Æ"é*„“èŽ)zëË 8¿¥Þ†@mY¨°?~²¼ì-Õ1ZgUê àßãéeàCØŠRÑŒ O[ƒÓ3¡¯C«ñd‹ örÐËø6"XYÀÎÕ/ë@XX Ì i@^ï CZsOŒSo¬xY'uo/§È"”òÓðÓ>­ ¢C`´gëúÏ âÁk/¥v¨Ü‚ܑԌÁ|=œôšQ;k+ê}òùÓ§k:lóÍÎ¥è-jÑ-Ñ…ãðì¢ Âg”Pô8Ÿürùèf­ Ìù\5”Gù ¡nãÜ•ûWL_z °Gƒ:Ú)`Ÿb¡õ¾¹¶çu8ÆCÜ"ýZÈ ä€§‹½N¶—Ï£õJd(I¢²²Ý—ûa7õòîOH ™­Ž”óqsl€ÌhG1c킉Èë™-m²SãôZd9Ö(28Qæ<L¡ÇüÈ/ãSÛ}ùü—UÔ˪”´·‹÷懲êïßb ‰?}ºVçûï¬A­ºM~νˆ r:/AHiKH6¢Â{‘c2Ékè­°‘Wœ¨[ßæå¯>X läÙµ*ûm¤»þÿùú+|9âèÔ°±ê0²ßø¢œz¼/0DZJ_Ò €èÞ­¼ým”~ï–¥4ÀEjY]D¤Ñß»'\9^£ÖàýêÅÃR% ÞøáÃâ;³w؈-©It×ÇzÙvW?+Ó«Mˆ#•0¥Ï¤ý©ËÛÿûù=àíá¬@p‡ý5Ï£Iê ‘—¿]1ÉÄ£FU¥3ÁÕZv&û‰àÈŽÅz)·¹(ûÀÿ>.Õë}lxoØS6Coîàç$VÓOÀãÀÁÚ"5ã÷m-‰a€äXT,ʆÓï=Ñy"{X$¼ªrDß®Œ8Û¤‚´%…õD•^RìTÝÈAhDt/ƒ•%Ô8ƒ!V„ 숅ÜeX0fèŠÔÚ§¬§ e4­Ûå.€âÜYõoŠÄ©ç|Å+èíB­E•C‹˜!Û\6#àþ~F^®±þÉä(û4ë,ÈvÑ& <ÈCçö¤°g»=ã•ëžcP—N†‰2s5½!ÄšE}§Vˆp 4„p5JÖ<˜ž™hÂÛKò¦ò)—W5^haF1À ›‰¤Æõ†é±<< àU›«{×…Íø:ÃK=´s=¬ N…]ª[å“`X|øº;B^æS¸£¼w޾iX Åxá‰ã×jäÉͬnëì:á’^xÇG39.@¥³3»dûûdÓ|Höµj“uP¥°) ÀÓèmêÿ„v:J'6;CÒƒ!¿·Í% æ#¦'ël¬°cùë*ëäöã]Í = +2çLïÿ©žRk êÆ­Ól¼†î×(w‰ÐÎMômIž–0rr—²À‹OHXõ„dÌ cµxŸ±. ,t±dÖSÉ0¬â èTøhíqR [!—:ã?k¬ Nx6h&Ƈ»ZQŠî‘H™ L à÷¿§šä0Â%@Æž~v¬æÁá~ÝÆx"eùY µâ‘û„+}W(–ËaÉ×-˜Ð­8óÁëTÒUIÛú0í$Â{‡·¨)°ð…‘Pñj6U²2¶±ò³5PƒÙbÕ"ìõÃëÁÑN|×$×Åœì%ÇN¼óZËàŸ×´PÚ´Áá 7b©ìc!$Ѓ«~Òo@0lÅWL@OGÛwŽï*lü—#oPÇ[„WžK1ŠñlE‡¶f™õSCèWLåšé0R»§³¿D òFujÑ´ (ªE1æ4w!çÖ×MšŽ>ÐT²ø•Lµ^\¸Œ:¯?©ñ¬‚L’¶|ÉO“_l[¤ÈÐ.›êÖ¨gLhÀÍö”•¬ŸÇ…‚FÁŸ'« 6üÏUØ_ pñî_k8P9·ÝLrOG›OLvAØÞFt[~¶ýôÕ‡fƒ£½D r13e Ô½5OgÚëÁ·›¨k2“GÇS•$Õ>H í`ÕüvÛí^;”ÞŠM ÀªÊ¥Sš´rç›J‘ª5ûƒëžGDÃð„ˆ„`™»Z]P<XuyV¯okÜc6úcë.µ»¥Í h9ýîrÈ›¤3¦+E–×Êûëã¿•àú—œ4ý—lÅ«çMhÖ7Š“Ê螺±ÖÛ‹šÕöŒv°Á„g¢¡k‚w¿¥W¬âwSl ]ñ]3,d~ëRþ¸ôõ$ªñúܯG6<Ö¶¹xZÚ}\Ž»ôÛ"|n"¨©ù?Ö8ö‰Ç½ß™·µÈòZõòœFSN¨öœÉÃîÙˆ…ä T¢îò½!¡­D¸/gLâÇÙóõR.ÇrƒêÊ'-wåÁÜ~*Öõ¯MÍHüãÆçåf8¹f‹¥³ßœQÖúºõÃÂÃQ†»ÔþD·[%³Ç5]ª+5ØhR4Å£)ÐÇå–ƒø¸1Rݦx¬9öTü†ÉQ\"·e^Ò›c“ü‚wþ,›Õ¼±ðyêþ ùĺ`Ãóé ¿â)ï&^Ò¸ÜþÞN]D2ÒŒÐÃQ^Í®¼£÷³„|¢d Ä ¸™R¡¿¯}°Ôc4 ©IEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/icons/images/qt_extended_16x16.png0000644000076500000240000000150213245231431025220 0ustar philstaff00000000000000‰PNG  IHDRóÿagAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<ÔIDATxÚŒR]HQþî̬»;®mº®¶þ•)BeýSVh‰FÒÏK¡`½ØCad†TôóZDEú” ½ôо„%j`VVF¦¦¬­²®µºîÌîÌÎtïjbFÑoÎ9ßsîù¹¹IçvÄŸÎZ!j¡ 6  C€N5 H¯®ë£Ô–êöwêX ÄZ”6r¬Ô‘¤*a„0)ý€N£¬0òF„uE†NÆ9³„j ;jç'à8k*dxÜ@a攬¯‚I0# LhFÇ )´:ôÍ +àèmº` µöO¢tÕMìÈʇ<š€Šœ: ø°I<‰$k $eáäHÙ„äR”3ÍQ!U‚9¸ yë¶ãñ—[¨l< }ʆüäSØ»!' U‰Ì^¼æåóÖj¦Æä -i0˜è¤”bJ <šŸ4¢©³Ã>㪓‘r’sûî–(G`_:e:Œˆ =š®A Ëèéy‡ Å7`³ÛÙñÆYDä|eå¾HT”A€_¢T©Í ª,¦hÈ´5Ú7ÚÛÚqÿY¢ÌÑsà IÓ(Ù³»]4™1êǘ7€ôÅNµØl"ú—À㤼3-„ ˆMþŽëÍqéàU¬-;€–¯õpó¯àõȰ-Ú…åXš•=—`ÈÈ!8ÐŽ9¬dG¼Ÿ¹‡¨xpŽ8;zǺáHˆÃ7¥²,Ájâ' |Ìg¹Þ¸²¥mrq_kæ‹$ËtÈ@µ_P”QÛ©…IfLT|^CчãôÝ׸º}ïýS~\¾v^¯÷7Íx¶ð/aOöÈ¡ÃÕ;ðÒõº n÷è¼Ã±?Øm%23IEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/icons/images/qt_extended_32x32.png0000644000076500000240000000354413245231431025224 0ustar philstaff00000000000000‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<öIDATxÚ¬W lTUþî{óß)ÓiéRJi),Ýþ¸²k\ùsA$dw×ífÃB²!ŠY•]“5+º$’T²ˆ×(Ý• ‰+‘ʰۥBµ? Å)´Ì”ÎL™yÓ™÷ç¹w^§:––å&'7çÜsßýîù»ç1Ó4ÁVÎzLv°­ë6{Ê+\r2i€Fˆ¨Ã„ÙNs; Ð|‰¨÷¥ '5ܤÁ°¶ìaÄÔ6ý®Õ5y¥@˜Æüà‹ÿ#`ÿ¥ù˽šƒ7à®Ò€×o+ûã¶2Ä šz×I59 ÆØ9âO¨S×ÛdƒaºÜ.IÜÚ0²mRº%™hÝnsÃ)»r܂Ѳ馃»Ø„0ái¢Û¯@"JòƒÅËô’Äàò0ôÐÛ…ÏYŠbï,$RCÅ{¡ZúXÒc6 qmš¡Ž~ =®NÆl¶¬«€¹=&š>ý síë°«áiÔ•W‰µ¾Øy¼ÕöŽ^ø'Š=¥„žáZDCùŒJ„• a“#_Ó'@ú.ÃÝàΓðù©nä_^†÷žzuéÿé a¦w.^ÒˆuÕ[pÍèÇW¸Ò\‹çV¿%sîA$1 Ü1•ñ=²,AÓSøâx /ïØ“‘ïùb;ê-AãÁ~Ë¢¿ ¼d>o a~eE•„r©ß8cçù *¦ßŽ[ªÊ…,0Ô‰£`á.üéõ'F•{걪| vÜÿÁ.(]†µU›¡ë:³6uLX¸ÜswUÿ,£ŒõBK1ÔT΃ÌÂè»2(ä…ú-øýÒ1¯¬TðËçü/}GeNÒúâƒÐ¤=¡A5uó3²èpˆ2pȸœ&¡~ÌœQˆuknÊíë±üÖ¯Q2ÝCg^ÁÙþf¤Œ$l²#;#Ò—dìçÜXDg¨f㘔” ¿¿0#R-sÊÕ Ù@$>$x¿/ÑP±xLðb§q$°ŸÀê” öñ.¼ ¥åÔ. DŽ4¤4à5AbÒw|$Y¥†–u8<œ'¥«n+ ÞiLƒq¾í'ÄÝu.»=’`Ycc£˜Égh>‘Uì^SGƒÈ°Ò™I&3xœîô£@~V5 ßÝÖ‹5s°uûQKhÔ`/vå2ÃÎϯç9·m{ðo¶ì˜ÌsH¾+.ÙmYÆ3|y^Ë5ªx™$+Öz»‚X»öìÞ÷*Žý§ ²=·tUÅÒÛæcEý­«‰m²e+úíhïíÊð~÷ Š~F‘­Cf(Î/r%7€lY€]0DWXÂâU›àtçåLÄÑÕ}uÁà÷c€ûͤά(ÄÇÇNd6LÏ+…ÛåB0ÒE÷¢rv‰w…[„_lÖã”ÔˆÊrÕQQ»²m Ðs+“Ù4íÒØB”Jøáœ` ÒŠÎ —…¬4.–-Ãá÷®à×õ¿q9N^ú€G"F _•¿ªªÃëõÂítЫÉ(uÇ_ã:\w U3à´;P[ïBÃseäÛºol~ž~QðÇ{¡'zåÕ<ûÖßÓ@ fS`ªte„#rŽC\G³)ë1„7°âŽ*ó?ÂÏ>$xsà7+ï MݯãÅæÇàÒüøÅêùøÒ܃?Ø€cAMiÔ3HtÈÄÄuT+Ó¤lQ-ÂpBÂú5Õè/z ¾ß££'~"_ãÉ0¬Çà”òÉ.TÿÈîkŸ¡'Ü.nÅMï²ML\GÍeLîë&’Š„Eµµðúqðýw…|vA5Þ¾¿ ?)Y‰X2BIiå †¥û4º• »<¾éGˆëhêFzå°þžjì>þ<šÛ:„¼ÒOQ^PEmTbÌžTJv=p®;’†ãöÀ<+ ¼¸{£†'>¹w^¹þüiè¶bš³pŒ>·€ OürUP4‘òð°"ïtxçÅÑ9ãªIåØOÒÕOÍç7¤Âél %2;5CÝl—Òé6Ñà:£0ÑJó’qûvÆÓSo—ànõ9Üü Ó:ô"ý „3zôðh«T„zΡª¦†:êÜ…ˆ*×ICnåDÿ&ZÄÝ:àïïin¥Þþüd»nÖP ‡÷ýuRº"Í£—UŠÄW)x¨óªÂwï&:<•ÃÓ·Ó ( <óÌND"Cbæ|.×–3'ø›Ò/clݲyÿWPâJ&²½yQÀb1%Sì<^ÕûöíÔ†›8ÃÔOØáñxFK+uR<§ôŒ„æPtˆª¦š£#úÿÆ™ææÓMÑhtõd”}>_ßs3]à±²iÁdó–ì[%AÑKwbChIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/icons/images/qt_extended_48x48.png0000644000076500000240000000713013245231431025235 0ustar philstaff00000000000000‰PNG  IHDR00Wù‡gAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe< êIDATxÚÄZ tUÕ™þιçu_yܼHHb‚„jQlÕbefÚñÑ:klµ•ÚêL§]Sgj]«ƒ}`Ûe×¢Xkmí¬ÎZÓ®Qq´V¡P(‚‘—@I`†››û>÷œùö¾‡›\Hb€Xlö=gŸ{ÏÿüþïßÅu]ˆC¹©a¹/„+õêk®Xµ“ Ýuä’¸áG'G‹ ·®ò&·+§EÁ™Cq.¹ùox—þáw ³üAWœ«P”¡_þ.äÐô›@9ŸCÚY^ZcâöÏÖÀïW‘Lä¼ÇÉ£‚ã Ž„ ùgʹq¼É±Ï›rtá/th4Ú]Ž‹åà?K¯+G èC|ІëŽëûB±EÞÈ[?¯Û;ü÷˜ðÇAonåh›p8¾‚ŒƒÒjõõ&-?náÇ:j¼qU!lòsŒã0Ç~Ž={½óû‚ á§ˆ*)Óàó)H§ßW‡9æ1oæQ¥;ÜBŠa=Çõê[þƸ­îÙ²à&Åû«\ŒbBã]xǧ9ˆ%cˆ§SòkŠ¢rr`úü°ô <¿@ER£À˜‡@IÓTÑa÷[=h®œ%º³ššaê*Ú£±çÔ´öµÀÒ‚ •“®ƒ©r9†Ï‚OÑ1z'"‰ÇÞo©Ø{¨›× à§_\ƒ{>õ÷nä…X†[g}¯u¾„'w=ˆDv= UU¥—Ú;1£þ2ü&zã'‘Ê&èMíbC®p¨c-¦‚ö®6ü× <÷­gqÏÍÅÂ?6܈•×=“ÈäRÐ =}Iüþ©¸oÞ¯ðkÿ77߃8„;q¨ Žóù<]ûÌaÜù·_Á²…‹‹Ö÷œØŠÏýðNünÓ‹…kµ¡&Üýá•2Åç ­#ŠÒš4ÖVæ ¢,76&RƒQ0hÁÖ£´VŸ…ïÞý¯EkGúö`Õ¶Ï¡M[‹Û¾qþwû†ÂÚ¢Æe˜9i.lu»[:1Ú¬¡LµHç’È:¸®ûþ) b_Äð®7»1köbÔUT­¿ðö“°iÈEW6£b^ xâ{Eë37`çö(®›ù)|þ†[†Œ¢ùQbU@W-ä\{B”1‰Eþe³9t·Çp÷mKÏYï8}~= ®h®Â–ö^ãûƒr½ÞúÞØèCnãóEß[zém¸öÒ[MöâÁ ŸF<¥RÖûã8ÉNÛX4cnÑZ‚ñ=È«ŠFh*+@ò4Žwñ·™MSÑ0©zddãŸ2¤MH.¨#'°Š W-\R3ù,µ3TÀ'øü&³]qpª¿w¨¬–”aÞ LûÒ_]o9¾k6>Œµ-OÁ&R©ªïýQ@„P<™eò£²¤¼h-m§‘_e :…0€†ÐðcjSoÛ†wcѵ¶Øn<{ôaüvÿJòÇ4|ª>ñ9pæ³6ÍëÓ øÏY^„dQ%è(6‚Ká]†oè~ÒH¨†‰¡Uô¶&=‘ÂÔ¾7bõÉ"ФŽãmŽÓcVâ,)6¡^Wö^üéL¦˜vš‘b‹2@ñ  `ËšN${¥tåU_¬FoO¸I AÄ´V8“ã]×/ñûýuV P×óÎ;»ˆ`7©€n0DHà.”·¤íä˜ë{ž>^Ö¸Û?>]Sm“ê§–•–G ËÒÂAòªP€aæ#R0܇‹²H:ÛÛë^ÝøÊoù3·i#3[wrH¥3‚…uG4g£‡ª .-V UømOv Þ»îù$2ÉÁÀñ9®»(L!“ÉÒ›Y&¹ÃÎ0I@ÑgU×- uS¦!ÚÝA‚¨¡qÊ¥·v´Ý4¢G  —ìúßEUùP"ª™G ©ˆ[@‘¸ß(ÆóL.3jïoKãÆåWbßÞ}(©šLK—’ª³#¬«C $‚pY•µU0YWJ+ªX0üBl‡~ö͇°£í0Ê««q¼£ý#* d8Dhaœ$ Îh˜ZX %’;Ž-ãÛÎRú,=*ö@,Í~_YÐ{º¯¬5+ŸX#PX8[‚x¶0 ¨ô?ä²¢b÷’6¢6é¸'`}í$ …’#*£û‚AU¢HKë\3ûªÂZÈ(E@ #šî‘ÂÇ'¹>T•F†¤Î &ù½ ÑM74 FŽ4˜ïà*Ca|͵IHoY¦TìÀþ}T2—SG !ÓòA¯´ðÊžs÷kªCÈæÒÐtݽ º« à މD+b¬ÖBá›s²tŠ#÷ƒü€ÌQÍ…¬í7’ühŽäæÑšM”Ë41½y&/7:OWÌŒà»þtÎÚ¬š¿’”BÓ²ïæ]v%,ÃB˜“[)s€¹âVmÃf9ŽìF*å²Á!œQnŒB‚ŠYV>×úûz¥7ÔÑr “q1› ¤zá÷Û_)Z¿þò;ÐTq9Öoñ)ühŃE믶¿€Hi©ÁÄ-n¼ÿ¾p-¦UÎA€‚¨"Ç!¼`9‚E*Aü–¼£« ±X|täl *°âÑb--„oìi,«ÿ6ýb;®™³¨°¶ùèÓ8Ò»µUÌ ‚×/_|¦ˆ%.¿êFø…¦Eª’O%¸Hl±‡p$´š„Ð a½²¦fì†Fx!•>ù‰&t%vãÎUïƒøk°ê¿%s®µŸ>ˆ_ïþ|aÖ@Ÿ¾å2<µm5~öÒ¯Ñë–DP4C=ñN¶«†¤BHUu½9?D. ÅRIƒyË»…k" ÈDÊÙÔ;¤º®â®»gâwÏ<†èC=xôËßE!¬ˆv0¡7·=ÿ~ëÖ…,›ú³˜TÂ-·ëX×ýlýÃY+L$™;Ýñv|†¬ò)¢‰)­+«¤LjÇq½¤Î3Ub%«²)bßÃÜ1›z™ YWfþçÁºu˜zï4|ãñ‡‹î{ýø:¬Üô²e„-è¢)â“Ê+`ȸ^ÑyMM7EJÄÒ´p–ÖΦÝ|=  „€o ;DyîÃá#GizB—^RÇCÔl2ÓLZÅÜæFLná±çÿ³è–ù“?Ž«›–Ka×-JL×Qh•!¥±•Ôå,7ÛéY…¡£ x×òÔE#÷:s.aŸI.†^ñ(‹ÃÐå&šÀu¼äLÈ•L8˜?{2’=G±é¡ú`²×}øãkñãëÿ(?gsÙ±!‘VÕ©ˆB OP‹±‰fR 1¼¦K% KÆ<­ä#nü ÈXgHÔTY˜²¸ŸýÞ¿ÀΜµ%žŒüûØœ F†iÀGJ!ÂDnY ‚–Š_!yÌÏÎâºÁ‚)¶6¥Å©h„Ï+ç¥@™,»¾ %S[qõCKñìk/ ëÝN6è§±¿ûuØ®ííÊõ;.¢ƒ1¸ªMK‹Ý? /„ŠáC؛ʏnr]Ó!ßñÁ}º*Ãi\{£çò¤¼"7,‚¾h~sø>ýù†i¾òúÎ×¾ô‡ÑÐÐ$|ݺõ’¡îùóNÌšý!ÄIØÚÛ;PBoÍœ= ϯ]Ë‚gáŠ9s …°Þj=x`Ó¢€®ë›vüyçƒôúä;'%»=ò}{qß½_•÷Ürûí¸zéRœThe Image Viewer example shows how to combine " "QLabel and QScrollArea to display an image. QLabel is " "typically used for displaying text, but it can also display " "an image. QScrollArea provides a scrolling view around " "another widget. If the child widget exceeds the size of the " "frame, QScrollArea automatically provides scroll bars.

      " "

      The example demonstrates how QLabel's ability to scale " "its contents (QLabel.scaledContents), and QScrollArea's " "ability to automatically resize its contents " "(QScrollArea.widgetResizable), can be used to implement " "zooming and scaling features.

      " "

      In addition the example shows how to use QPainter to " "print an image.

      ") def createActions(self): self.openAct = QAction("&Open...", self, shortcut="Ctrl+O", triggered=self.open) self.printAct = QAction("&Print...", self, shortcut="Ctrl+P", enabled=False, triggered=self.print_) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=self.close) self.zoomInAct = QAction("Zoom &In (25%)", self, shortcut="Ctrl++", enabled=False, triggered=self.zoomIn) self.zoomOutAct = QAction("Zoom &Out (25%)", self, shortcut="Ctrl+-", enabled=False, triggered=self.zoomOut) self.normalSizeAct = QAction("&Normal Size", self, shortcut="Ctrl+S", enabled=False, triggered=self.normalSize) self.fitToWindowAct = QAction("&Fit to Window", self, enabled=False, checkable=True, shortcut="Ctrl+F", triggered=self.fitToWindow) self.aboutAct = QAction("&About", self, triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, triggered=QApplication.instance().aboutQt) def createMenus(self): self.fileMenu = QMenu("&File", self) self.fileMenu.addAction(self.openAct) self.fileMenu.addAction(self.printAct) self.fileMenu.addSeparator() self.fileMenu.addAction(self.exitAct) self.viewMenu = QMenu("&View", self) self.viewMenu.addAction(self.zoomInAct) self.viewMenu.addAction(self.zoomOutAct) self.viewMenu.addAction(self.normalSizeAct) self.viewMenu.addSeparator() self.viewMenu.addAction(self.fitToWindowAct) self.helpMenu = QMenu("&Help", self) self.helpMenu.addAction(self.aboutAct) self.helpMenu.addAction(self.aboutQtAct) self.menuBar().addMenu(self.fileMenu) self.menuBar().addMenu(self.viewMenu) self.menuBar().addMenu(self.helpMenu) def updateActions(self): self.zoomInAct.setEnabled(not self.fitToWindowAct.isChecked()) self.zoomOutAct.setEnabled(not self.fitToWindowAct.isChecked()) self.normalSizeAct.setEnabled(not self.fitToWindowAct.isChecked()) def scaleImage(self, factor): self.scaleFactor *= factor self.imageLabel.resize(self.scaleFactor * self.imageLabel.pixmap().size()) self.adjustScrollBar(self.scrollArea.horizontalScrollBar(), factor) self.adjustScrollBar(self.scrollArea.verticalScrollBar(), factor) self.zoomInAct.setEnabled(self.scaleFactor < 3.0) self.zoomOutAct.setEnabled(self.scaleFactor > 0.333) def adjustScrollBar(self, scrollBar, factor): scrollBar.setValue(int(factor * scrollBar.value() + ((factor - 1) * scrollBar.pageStep()/2))) if __name__ == '__main__': import sys app = QApplication(sys.argv) imageViewer = ImageViewer() imageViewer.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/lineedits.py0000755000076500000240000001725513245231431021332 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtGui import QDoubleValidator, QIntValidator from PyQt5.QtWidgets import (QApplication, QComboBox, QGridLayout, QGroupBox, QLabel, QLineEdit, QWidget) class Window(QWidget): def __init__(self): super(Window, self).__init__() echoGroup = QGroupBox("Echo") echoLabel = QLabel("Mode:") echoComboBox = QComboBox() echoComboBox.addItem("Normal") echoComboBox.addItem("Password") echoComboBox.addItem("PasswordEchoOnEdit") echoComboBox.addItem("No Echo") self.echoLineEdit = QLineEdit() self.echoLineEdit.setFocus() validatorGroup = QGroupBox("Validator") validatorLabel = QLabel("Type:") validatorComboBox = QComboBox() validatorComboBox.addItem("No validator") validatorComboBox.addItem("Integer validator") validatorComboBox.addItem("Double validator") self.validatorLineEdit = QLineEdit() alignmentGroup = QGroupBox("Alignment") alignmentLabel = QLabel("Type:") alignmentComboBox = QComboBox() alignmentComboBox.addItem("Left") alignmentComboBox.addItem("Centered") alignmentComboBox.addItem("Right") self.alignmentLineEdit = QLineEdit() inputMaskGroup = QGroupBox("Input mask") inputMaskLabel = QLabel("Type:") inputMaskComboBox = QComboBox() inputMaskComboBox.addItem("No mask") inputMaskComboBox.addItem("Phone number") inputMaskComboBox.addItem("ISO date") inputMaskComboBox.addItem("License key") self.inputMaskLineEdit = QLineEdit() accessGroup = QGroupBox("Access") accessLabel = QLabel("Read-only:") accessComboBox = QComboBox() accessComboBox.addItem("False") accessComboBox.addItem("True") self.accessLineEdit = QLineEdit() echoComboBox.activated.connect(self.echoChanged) validatorComboBox.activated.connect(self.validatorChanged) alignmentComboBox.activated.connect(self.alignmentChanged) inputMaskComboBox.activated.connect(self.inputMaskChanged) accessComboBox.activated.connect(self.accessChanged) echoLayout = QGridLayout() echoLayout.addWidget(echoLabel, 0, 0) echoLayout.addWidget(echoComboBox, 0, 1) echoLayout.addWidget(self.echoLineEdit, 1, 0, 1, 2) echoGroup.setLayout(echoLayout) validatorLayout = QGridLayout() validatorLayout.addWidget(validatorLabel, 0, 0) validatorLayout.addWidget(validatorComboBox, 0, 1) validatorLayout.addWidget(self.validatorLineEdit, 1, 0, 1, 2) validatorGroup.setLayout(validatorLayout) alignmentLayout = QGridLayout() alignmentLayout.addWidget(alignmentLabel, 0, 0) alignmentLayout.addWidget(alignmentComboBox, 0, 1) alignmentLayout.addWidget(self.alignmentLineEdit, 1, 0, 1, 2) alignmentGroup. setLayout(alignmentLayout) inputMaskLayout = QGridLayout() inputMaskLayout.addWidget(inputMaskLabel, 0, 0) inputMaskLayout.addWidget(inputMaskComboBox, 0, 1) inputMaskLayout.addWidget(self.inputMaskLineEdit, 1, 0, 1, 2) inputMaskGroup.setLayout(inputMaskLayout) accessLayout = QGridLayout() accessLayout.addWidget(accessLabel, 0, 0) accessLayout.addWidget(accessComboBox, 0, 1) accessLayout.addWidget(self.accessLineEdit, 1, 0, 1, 2) accessGroup.setLayout(accessLayout) layout = QGridLayout() layout.addWidget(echoGroup, 0, 0) layout.addWidget(validatorGroup, 1, 0) layout.addWidget(alignmentGroup, 2, 0) layout.addWidget(inputMaskGroup, 0, 1) layout.addWidget(accessGroup, 1, 1) self.setLayout(layout) self.setWindowTitle("Line Edits") def echoChanged(self, index): if index == 0: self.echoLineEdit.setEchoMode(QLineEdit.Normal) elif index == 1: self.echoLineEdit.setEchoMode(QLineEdit.Password) elif index == 2: self.echoLineEdit.setEchoMode(QLineEdit.PasswordEchoOnEdit) elif index == 3: self.echoLineEdit.setEchoMode(QLineEdit.NoEcho) def validatorChanged(self, index): if index == 0: self.validatorLineEdit.setValidator(0) elif index == 1: self.validatorLineEdit.setValidator(QIntValidator(self.validatorLineEdit)) elif index == 2: self.validatorLineEdit.setValidator(QDoubleValidator(-999.0, 999.0, 2, self.validatorLineEdit)) self.validatorLineEdit.clear() def alignmentChanged(self, index): if index == 0: self.alignmentLineEdit.setAlignment(Qt.AlignLeft) elif index == 1: self.alignmentLineEdit.setAlignment(Qt.AlignCenter) elif index == 2: self.alignmentLineEdit.setAlignment(Qt.AlignRight) def inputMaskChanged(self, index): if index == 0: self.inputMaskLineEdit.setInputMask('') elif index == 1: self.inputMaskLineEdit.setInputMask('+99 99 99 99 99;_') elif index == 2: self.inputMaskLineEdit.setInputMask('0000-00-00') self.inputMaskLineEdit.setText('00000000') self.inputMaskLineEdit.setCursorPosition(0) elif index == 3: self.inputMaskLineEdit.setInputMask('>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#') def accessChanged(self, index): if index == 0: self.accessLineEdit.setReadOnly(False) elif index == 1: self.accessLineEdit.setReadOnly(True) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/movie/0000755000076500000240000000000013245231431020102 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/widgets/movie/animation.mng0000644000076500000240000001253013245231431022565 0ustar philstaff00000000000000ŠMNG  MHDRddI~iË IHDRddpâ•TìIDATxÚíÑ1 àù7ÝÙฅR¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜ø+¬Ö´hQÊIEND®B`‚ IHDRddpâ•T IDATxÚíÚ± ! ±ßÖìð¬@:$[JK‘+Ã÷“"HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Äl™™+ƒ 9‚Äì9º´“o¿HAb‰$FAb‰$FAb‰$FAb‰$FAbÜÔc‰$ÆÏÅAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰$FAb‰Y<äp¸¿Î¶hIEND®B`‚ IHDRddpâ•TUIDATxÚíÚ±m1A÷_Û—Âl…Ü û À”ÁmHþü’"HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚ļ亮É$æ ·ŽvçÝO$HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1ÞÔc‰$ÆÏÅAb‰$FAb‰äåœóñ#ˆ Ïq 2ô¨; 2jAáP ‚ ‡Zd8Ô‚ áµ Èp¨A†C-2jAáP ‚ ‡Zd8Ô‚ áµ Èp¨A†C-2jAáP ‚ ‡Zd8Ô‚ áµ Èp¨A|”{¦3X¡3X/%HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HÌþÄ›1L¹7IEND®B`‚ IHDRddpâ•TTIDATxÚíÚ±m1Awü²'[¡C÷¾00ep’?¿¤#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1o¹®ë#Ar‰y'È­£Ýy÷ #HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ7õAb‰ñs1FAb‰$FAby9ç|ü"ÈsœÁÀ‚ ýêN‚ ‡Zd8Ô‚ áµ Èp¨A†C-2jAáP ‚ ‡Zd8Ô‚ áµ Èp¨A†C-2jAáP ‚ ‡Zd8Ô‚ áµ Èp¨A†C-2jAåžé dè äK #HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Ä#HŒ 1‚Äó' 5kÖ£IEND®B`‚ IHDRddpâ•TdIDATxÚíÚ1nÃ@Aþ˜çd‡ìž›@5p™ ¦Béú(X@b‰$X@b‰$X@b‰u}õ¡ë:ò$X߬°:Úæw¿1 ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Äò›z, ±€Ä²B, ±€Ä H, ±€ÄòÛ}ßÇ ïéÈ`‡Ú ÈàPj" ƒCMdp¨‰€ 5Á¡&28ÔD@‡šÈàP%@žçù·79ÔD@‡šÈàPå@Nda Ó÷€,da Ó÷€,da Ó÷€,da Ó÷€,da Ó÷€,da Ó÷î?¾½ær@€™èM÷¦ H, ±€Ä H, ±€Ä H¬£ §ß H¬uyu@b‰$X@b‰$X@b‰õI+"EWâ‚IEND®B`‚ IHDRddpâ•TeIDATxÚíÚ1ŽAÁý1?Ê? Kî5£\ — T˜ÜçG©€Ä H, ±€Ä H, ±€Ä H¬_|>Ÿ+O@r‰õ££üí7$X@b‰$X@b‰$X@b‰$X@b‰$XþS$X¾\Œ$X@b‰$X@þŽð<× ïé dØ¿¡ÎÎd8Ô" áµÈp¨E@†C-2jáP‹€ ‡Zd8Ô¢È÷ûýoo9Ô" áµ(r# º}ÈÁ€èö= r` Û÷€ Ènßr0 º}ÈÁ€èö½gðáÛk>”Èz 7Ý[$X@b‰$X@b‰$XWAn¿7$XÇAäÕ‰$X@b‰$X@b‰$ÖeÆÐÓVˆIEND®B`‚ IHDRddpâ•T£IDATxÚíÚ1NQAn¼õQ| °ˆz׳¨ZrúøšÊl>>5±€Œd, c ÈX@Æ2±€ŒäWÏç3ûœòx<.ù,ô €„ýŒù¶@Â1‹9u´3o_=fqH8fqH8fqH8fqH8fqH8fqH8fqH8fqH8fqH8fqH8fqH8fqH8fqÈÝ©;ó6òd, cùM}, cË.Žd, c ÈX@Æ2ïŽã¸üÈ}:‚„½uf@Â¡Š€„C ‡*U$ªH8Tp¨" áPE@¡Š&@Žàk†úë oú”C ‡*š¹" Á#Ê€(<¢ Hðˆ2 Á#Ê€(<¢ Hðˆ2 Á#Ê€(<¢ìåïMß oø{u@Æ2±€Œd, c ÈX@Æ2Ö¥ Wî±€Œu:ˆ€Ü: c ÈX@Æ2±€Œd, cë uEB?¿¡IEND®B`‚ IHDRddpâ•TÔIDATxÚíš±qÃ@ľÿÚXŠz°8r¤»\ÊÀ Ó» “þ|Éà cd ƒŒa1 2†AÆ0Èà cä×ua_,Èëõª| \@ƒ€üʼm†A@™ÄŒw‚D¥%g·e3 Ê$f”IÌ0(“˜aP&1à  Lb†A@™Ä ƒ€2‰e3 Ê$f”IÌ0(“˜aP&1à Oÿ?„&9Û än 2†AÆ0Èþ§>†AÆ0Ⱦ\à cd ƒŒa1 2†AÆ0ü“û›ŸA ò .@°A@~!ÿ¥{ b= 2†AÆ0Èà cd ƒŒñ¯‚œsnûHQEE0¤A‚Úû Ä Aí} b€ ö>ƒ1H@P{ŸA‚$ ¨½Ï A ÔÞwßóPÎ 1-èIûhâW·µ÷Ñįn j_ÝÔÞG¿º-¨½&~u[P{Müê¶ ö>šøÕmAí}4ñ«Û‚ÚûhâW·µ÷Ñįn j_}€ˆé—‹Kį>€Xƒ€@¬Aä6 2†AÆ0Èà cd ƒŒa1 2†AÆ0Èߣúu9róÐIEND®B`‚ IHDRddpâ•T‘IDATxÚíÚ1nA ÅÐÜx.¾wˆS¤0RS2' ·à¿Òûõ]ª‘ˆ¬@d"+YÈ DV ²‘ˆ¬@þtÎÁ~"°ß1?v#pLâF à˜Ä@À1‰€c7Ç$nŽIÜ“¸8&q#pLâF à˜Ä@À1‰€c7Ç$nŽIܤÿCÜ"T ²‘ˆ¬@d"+YÈ DV ²‘ˆ¬@d"+ŸžçYÿÈ==ÀÀ€½5Y àPD€CE8Q àPD€CE8Q àPD |#;ýmm K?r(¢@À¡ˆt 20Ðö{ ÈÀ@Ûï2X m¿È` ´ý^ ƒ20Ðö{ ÈÀ@Ûï=À‡o×|(H ÐÝô] ²‘ˆ¬@d"+YÈ DV ²‘µ ²ý»±@d"k¤¹º@d"+YÈ DV ²‘ˆ¬@d"ëh!I[ 2çˆIEND®B`‚ IHDRddpâ•TMIDATxÚíÙ±Ã@ÁË?6æôrd½=¢šB5pî˜2yþ” H, ±€Ä H, ±€Ä H, ±€üäœÙ2è € {ùµ@†c.n޹¸d8æâᘋ@†c.n޹¸d8æâᘋ@†c.n޹¸d8æâᘋ@†c.n޹¸Äÿvgä‡ H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H¬ƒ\×õµ÷Ä€ÄëV;ºû{ë€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±n¹û=1 ±€Äú8ˆ€<: ±€Ä H, ±€Ä H, ±€Äz6wM€OÐQIEND®B`‚ IHDRddpâ•TMIDATxÚíÙ1nÃ@Aÿø>Î?؉"Ç#ª)T—.©?¿J$X@b‰$X@b‰$X@þuΙ= ƒÎȰט»d8æâᘋ@†c.n޹¸d8æâᘋ@†c.n޹¸d8æâᘋ@†c.n޹¸d8æâᘋ@üiw@¾( ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Äz;Èu]{O H, ±n¹£»¿·H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€Ä H, ±€ÄëV»ß H¬·ƒÈ£ H, ±€Ä H, ±€Ä H¬?X|wTIEND®B`‚ IHDRddpâ•T;IDATxÚíÙ± AAòms {¤o¡jéÜ5¦Ì{½• H, ±€Ä H, ±€Ä H, ±€ütw³dÐ € ûŽùØ Ã17€ Ç\Ü2sqÈpÌÅ Ã17€ Ç\Ü2sqÈpÌÅ Ã17€ Ç\Ü2sqÈpÌÅ Ã17€ Ç\Üâ?¤Ý €üQ@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b}‡´[ŽRØ$÷IEND®B`‚ IHDRddpâ•T;IDATxÚíÙ± AAòus {¤o¡jéÜ5¦Ì{½• H, ±€Ä H, ±€Ä H, ±€ütw³dÐ € ûŽùØ Ã17€ Ç\Ü2sqÈpÌÅ Ã17€ Ç\Ü2sqÈpÌÅ Ã17€ Ç\Ü2sqÈpÌÅ Ã17€ Ç\Üâ?¤Ý €üQ@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b‰$X@b}(©ŽŽÚŸ‰IEND®B`‚ IHDRddpâ•TìIDATxÚíÑ1 àù7ÝÙฅR¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜B0…` Á‚)S¦L!˜ø+¬Ö´hQÊIEND®B`‚MEND! ÷ÕPyQt5_gpl-5.10.1/examples/widgets/movie/movie.py0000755000076500000240000001762213245231431021606 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QFileInfo, QSize, Qt from PyQt5.QtGui import QMovie, QPalette from PyQt5.QtWidgets import (QApplication, QCheckBox, QFileDialog, QGridLayout, QHBoxLayout, QLabel, QSizePolicy, QSlider, QSpinBox, QStyle, QToolButton, QVBoxLayout, QWidget) class MoviePlayer(QWidget): def __init__(self, parent=None): super(MoviePlayer, self).__init__(parent) self.movie = QMovie(self) self.movie.setCacheMode(QMovie.CacheAll) self.movieLabel = QLabel("No movie loaded") self.movieLabel.setAlignment(Qt.AlignCenter) self.movieLabel.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) self.movieLabel.setBackgroundRole(QPalette.Dark) self.movieLabel.setAutoFillBackground(True) self.currentMovieDirectory = '' self.createControls() self.createButtons() self.movie.frameChanged.connect(self.updateFrameSlider) self.movie.stateChanged.connect(self.updateButtons) self.fitCheckBox.clicked.connect(self.fitToWindow) self.frameSlider.valueChanged.connect(self.goToFrame) self.speedSpinBox.valueChanged.connect(self.movie.setSpeed) mainLayout = QVBoxLayout() mainLayout.addWidget(self.movieLabel) mainLayout.addLayout(self.controlsLayout) mainLayout.addLayout(self.buttonsLayout) self.setLayout(mainLayout) self.updateFrameSlider() self.updateButtons() self.setWindowTitle("Movie Player") self.resize(400, 400) def open(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open a Movie", self.currentMovieDirectory) if fileName: self.openFile(fileName) def openFile(self, fileName): self.currentMovieDirectory = QFileInfo(fileName).path() self.movie.stop() self.movieLabel.setMovie(self.movie) self.movie.setFileName(fileName) self.movie.start() self.updateFrameSlider(); self.updateButtons(); def goToFrame(self, frame): self.movie.jumpToFrame(frame) def fitToWindow(self): self.movieLabel.setScaledContents(self.fitCheckBox.isChecked()) def updateFrameSlider(self): hasFrames = (self.movie.currentFrameNumber() >= 0) if hasFrames: if self.movie.frameCount() > 0: self.frameSlider.setMaximum(self.movie.frameCount() - 1) elif self.movie.currentFrameNumber() > self.frameSlider.maximum(): self.frameSlider.setMaximum(self.movie.currentFrameNumber()) self.frameSlider.setValue(self.movie.currentFrameNumber()) else: self.frameSlider.setMaximum(0) self.frameLabel.setEnabled(hasFrames) self.frameSlider.setEnabled(hasFrames) def updateButtons(self): state = self.movie.state() self.playButton.setEnabled(self.movie.isValid() and self.movie.frameCount() != 1 and state == QMovie.NotRunning) self.pauseButton.setEnabled(state != QMovie.NotRunning) self.pauseButton.setChecked(state == QMovie.Paused) self.stopButton.setEnabled(state != QMovie.NotRunning) def createControls(self): self.fitCheckBox = QCheckBox("Fit to Window") self.frameLabel = QLabel("Current frame:") self.frameSlider = QSlider(Qt.Horizontal) self.frameSlider.setTickPosition(QSlider.TicksBelow) self.frameSlider.setTickInterval(10) speedLabel = QLabel("Speed:") self.speedSpinBox = QSpinBox() self.speedSpinBox.setRange(1, 9999) self.speedSpinBox.setValue(100) self.speedSpinBox.setSuffix("%") self.controlsLayout = QGridLayout() self.controlsLayout.addWidget(self.fitCheckBox, 0, 0, 1, 2) self.controlsLayout.addWidget(self.frameLabel, 1, 0) self.controlsLayout.addWidget(self.frameSlider, 1, 1, 1, 2) self.controlsLayout.addWidget(speedLabel, 2, 0) self.controlsLayout.addWidget(self.speedSpinBox, 2, 1) def createButtons(self): iconSize = QSize(36, 36) openButton = QToolButton() openButton.setIcon(self.style().standardIcon(QStyle.SP_DialogOpenButton)) openButton.setIconSize(iconSize) openButton.setToolTip("Open File") openButton.clicked.connect(self.open) self.playButton = QToolButton() self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.setIconSize(iconSize) self.playButton.setToolTip("Play") self.playButton.clicked.connect(self.movie.start) self.pauseButton = QToolButton() self.pauseButton.setCheckable(True) self.pauseButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPause)) self.pauseButton.setIconSize(iconSize) self.pauseButton.setToolTip("Pause") self.pauseButton.clicked.connect(self.movie.setPaused) self.stopButton = QToolButton() self.stopButton.setIcon(self.style().standardIcon(QStyle.SP_MediaStop)) self.stopButton.setIconSize(iconSize) self.stopButton.setToolTip("Stop") self.stopButton.clicked.connect(self.movie.stop) quitButton = QToolButton() quitButton.setIcon(self.style().standardIcon(QStyle.SP_DialogCloseButton)) quitButton.setIconSize(iconSize) quitButton.setToolTip("Quit") quitButton.clicked.connect(self.close) self.buttonsLayout = QHBoxLayout() self.buttonsLayout.addStretch() self.buttonsLayout.addWidget(openButton) self.buttonsLayout.addWidget(self.playButton) self.buttonsLayout.addWidget(self.pauseButton) self.buttonsLayout.addWidget(self.stopButton) self.buttonsLayout.addWidget(quitButton) self.buttonsLayout.addStretch() if __name__ == '__main__': import sys app = QApplication(sys.argv) player = MoviePlayer() player.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/README0000644000076500000240000000171713245231431017651 0ustar philstaff00000000000000PyQt comes with a large range of standard widgets that users of modern application have come to expect. You can also develop your own custom widgets and controls, and use them alongside standard widgets. It is even possible to provide custom styles and themes for widgets that can be used to change the appearance of standard widgets and appropriately written custom widgets. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/widgets/scribble.py0000755000076500000240000002634313245231431021135 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDir, QPoint, QRect, QSize, Qt from PyQt5.QtGui import QImage, QImageWriter, QPainter, QPen, qRgb from PyQt5.QtWidgets import (QAction, QApplication, QColorDialog, QFileDialog, QInputDialog, QMainWindow, QMenu, QMessageBox, QWidget) from PyQt5.QtPrintSupport import QPrintDialog, QPrinter class ScribbleArea(QWidget): def __init__(self, parent=None): super(ScribbleArea, self).__init__(parent) self.setAttribute(Qt.WA_StaticContents) self.modified = False self.scribbling = False self.myPenWidth = 1 self.myPenColor = Qt.blue self.image = QImage() self.lastPoint = QPoint() def openImage(self, fileName): loadedImage = QImage() if not loadedImage.load(fileName): return False newSize = loadedImage.size().expandedTo(self.size()) self.resizeImage(loadedImage, newSize) self.image = loadedImage self.modified = False self.update() return True def saveImage(self, fileName, fileFormat): visibleImage = self.image self.resizeImage(visibleImage, self.size()) if visibleImage.save(fileName, fileFormat): self.modified = False return True else: return False def setPenColor(self, newColor): self.myPenColor = newColor def setPenWidth(self, newWidth): self.myPenWidth = newWidth def clearImage(self): self.image.fill(qRgb(255, 255, 255)) self.modified = True self.update() def mousePressEvent(self, event): if event.button() == Qt.LeftButton: self.lastPoint = event.pos() self.scribbling = True def mouseMoveEvent(self, event): if (event.buttons() & Qt.LeftButton) and self.scribbling: self.drawLineTo(event.pos()) def mouseReleaseEvent(self, event): if event.button() == Qt.LeftButton and self.scribbling: self.drawLineTo(event.pos()) self.scribbling = False def paintEvent(self, event): painter = QPainter(self) dirtyRect = event.rect() painter.drawImage(dirtyRect, self.image, dirtyRect) def resizeEvent(self, event): if self.width() > self.image.width() or self.height() > self.image.height(): newWidth = max(self.width() + 128, self.image.width()) newHeight = max(self.height() + 128, self.image.height()) self.resizeImage(self.image, QSize(newWidth, newHeight)) self.update() super(ScribbleArea, self).resizeEvent(event) def drawLineTo(self, endPoint): painter = QPainter(self.image) painter.setPen(QPen(self.myPenColor, self.myPenWidth, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin)) painter.drawLine(self.lastPoint, endPoint) self.modified = True rad = self.myPenWidth / 2 + 2 self.update(QRect(self.lastPoint, endPoint).normalized().adjusted(-rad, -rad, +rad, +rad)) self.lastPoint = QPoint(endPoint) def resizeImage(self, image, newSize): if image.size() == newSize: return newImage = QImage(newSize, QImage.Format_RGB32) newImage.fill(qRgb(255, 255, 255)) painter = QPainter(newImage) painter.drawImage(QPoint(0, 0), image) self.image = newImage def print_(self): printer = QPrinter(QPrinter.HighResolution) printDialog = QPrintDialog(printer, self) if printDialog.exec_() == QPrintDialog.Accepted: painter = QPainter(printer) rect = painter.viewport() size = self.image.size() size.scale(rect.size(), Qt.KeepAspectRatio) painter.setViewport(rect.x(), rect.y(), size.width(), size.height()) painter.setWindow(self.image.rect()) painter.drawImage(0, 0, self.image) painter.end() def isModified(self): return self.modified def penColor(self): return self.myPenColor def penWidth(self): return self.myPenWidth class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.saveAsActs = [] self.scribbleArea = ScribbleArea() self.setCentralWidget(self.scribbleArea) self.createActions() self.createMenus() self.setWindowTitle("Scribble") self.resize(500, 500) def closeEvent(self, event): if self.maybeSave(): event.accept() else: event.ignore() def open(self): if self.maybeSave(): fileName, _ = QFileDialog.getOpenFileName(self, "Open File", QDir.currentPath()) if fileName: self.scribbleArea.openImage(fileName) def save(self): action = self.sender() fileFormat = action.data() self.saveFile(fileFormat) def penColor(self): newColor = QColorDialog.getColor(self.scribbleArea.penColor()) if newColor.isValid(): self.scribbleArea.setPenColor(newColor) def penWidth(self): newWidth, ok = QInputDialog.getInt(self, "Scribble", "Select pen width:", self.scribbleArea.penWidth(), 1, 50, 1) if ok: self.scribbleArea.setPenWidth(newWidth) def about(self): QMessageBox.about(self, "About Scribble", "

      The Scribble example shows how to use " "QMainWindow as the base widget for an application, and how " "to reimplement some of QWidget's event handlers to receive " "the events generated for the application's widgets:

      " "

      We reimplement the mouse event handlers to facilitate " "drawing, the paint event handler to update the application " "and the resize event handler to optimize the application's " "appearance. In addition we reimplement the close event " "handler to intercept the close events before terminating " "the application.

      " "

      The example also demonstrates how to use QPainter to " "draw an image in real time, as well as to repaint " "widgets.

      ") def createActions(self): self.openAct = QAction("&Open...", self, shortcut="Ctrl+O", triggered=self.open) for format in QImageWriter.supportedImageFormats(): format = str(format) text = format.upper() + "..." action = QAction(text, self, triggered=self.save) action.setData(format) self.saveAsActs.append(action) self.printAct = QAction("&Print...", self, triggered=self.scribbleArea.print_) self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=self.close) self.penColorAct = QAction("&Pen Color...", self, triggered=self.penColor) self.penWidthAct = QAction("Pen &Width...", self, triggered=self.penWidth) self.clearScreenAct = QAction("&Clear Screen", self, shortcut="Ctrl+L", triggered=self.scribbleArea.clearImage) self.aboutAct = QAction("&About", self, triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, triggered=QApplication.instance().aboutQt) def createMenus(self): self.saveAsMenu = QMenu("&Save As", self) for action in self.saveAsActs: self.saveAsMenu.addAction(action) fileMenu = QMenu("&File", self) fileMenu.addAction(self.openAct) fileMenu.addMenu(self.saveAsMenu) fileMenu.addAction(self.printAct) fileMenu.addSeparator() fileMenu.addAction(self.exitAct) optionMenu = QMenu("&Options", self) optionMenu.addAction(self.penColorAct) optionMenu.addAction(self.penWidthAct) optionMenu.addSeparator() optionMenu.addAction(self.clearScreenAct) helpMenu = QMenu("&Help", self) helpMenu.addAction(self.aboutAct) helpMenu.addAction(self.aboutQtAct) self.menuBar().addMenu(fileMenu) self.menuBar().addMenu(optionMenu) self.menuBar().addMenu(helpMenu) def maybeSave(self): if self.scribbleArea.isModified(): ret = QMessageBox.warning(self, "Scribble", "The image has been modified.\n" "Do you want to save your changes?", QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel) if ret == QMessageBox.Save: return self.saveFile('png') elif ret == QMessageBox.Cancel: return False return True def saveFile(self, fileFormat): initialPath = QDir.currentPath() + '/untitled.' + fileFormat fileName, _ = QFileDialog.getSaveFileName(self, "Save As", initialPath, "%s Files (*.%s);;All Files (*)" % (fileFormat.upper(), fileFormat)) if fileName: return self.scribbleArea.saveImage(fileName, fileFormat) return False if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/shapedclock.py0000755000076500000240000001211213245231431021615 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QPoint, QSize, Qt, QTime, QTimer from PyQt5.QtGui import QColor, QPainter, QPolygon, QRegion from PyQt5.QtWidgets import QAction, QApplication, QWidget class ShapedClock(QWidget): hourHand = QPolygon([ QPoint(7, 8), QPoint(-7, 8), QPoint(0, -40) ]) minuteHand = QPolygon([ QPoint(7, 8), QPoint(-7, 8), QPoint(0, -70) ]) hourColor = QColor(127, 0, 127) minuteColor = QColor(0, 127, 127, 191) def __init__(self, parent=None): super(ShapedClock, self).__init__(parent, Qt.FramelessWindowHint | Qt.WindowSystemMenuHint) timer = QTimer(self) timer.timeout.connect(self.update) timer.start(1000) quitAction = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=QApplication.instance().quit) self.addAction(quitAction) self.setContextMenuPolicy(Qt.ActionsContextMenu) self.setToolTip("Drag the clock with the left mouse button.\n" "Use the right mouse button to open a context menu.") self.setWindowTitle(self.tr("Shaped Analog Clock")) def mousePressEvent(self, event): if event.button() == Qt.LeftButton: self.dragPosition = event.globalPos() - self.frameGeometry().topLeft() event.accept() def mouseMoveEvent(self, event): if event.buttons() == Qt.LeftButton: self.move(event.globalPos() - self.dragPosition) event.accept() def paintEvent(self, event): side = min(self.width(), self.height()) time = QTime.currentTime() painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) painter.translate(self.width() / 2, self.height() / 2) painter.scale(side / 200.0, side / 200.0) painter.setPen(Qt.NoPen) painter.setBrush(ShapedClock.hourColor) painter.save() painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0))) painter.drawConvexPolygon(ShapedClock.hourHand) painter.restore() painter.setPen(ShapedClock.hourColor) for i in range(12): painter.drawLine(88, 0, 96, 0) painter.rotate(30.0) painter.setPen(Qt.NoPen) painter.setBrush(ShapedClock.minuteColor) painter.save() painter.rotate(6.0 * (time.minute() + time.second() / 60.0)) painter.drawConvexPolygon(ShapedClock.minuteHand) painter.restore() painter.setPen(ShapedClock.minuteColor) for j in range(60): if (j % 5) != 0: painter.drawLine(92, 0, 96, 0) painter.rotate(6.0) def resizeEvent(self, event): side = min(self.width(), self.height()) maskedRegion = QRegion(self.width()/2 - side/2, self.height()/2 - side/2, side, side, QRegion.Ellipse) self.setMask(maskedRegion) def sizeHint(self): return QSize(100, 100) if __name__ == '__main__': import sys app = QApplication(sys.argv) clock = ShapedClock() clock.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/sliders.py0000755000076500000240000001707113245231431021013 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import pyqtSignal, Qt from PyQt5.QtWidgets import (QApplication, QBoxLayout, QCheckBox, QComboBox, QDial, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QScrollBar, QSlider, QSpinBox, QStackedWidget, QWidget) class SlidersGroup(QGroupBox): valueChanged = pyqtSignal(int) def __init__(self, orientation, title, parent=None): super(SlidersGroup, self).__init__(title, parent) self.slider = QSlider(orientation) self.slider.setFocusPolicy(Qt.StrongFocus) self.slider.setTickPosition(QSlider.TicksBothSides) self.slider.setTickInterval(10) self.slider.setSingleStep(1) self.scrollBar = QScrollBar(orientation) self.scrollBar.setFocusPolicy(Qt.StrongFocus) self.dial = QDial() self.dial.setFocusPolicy(Qt.StrongFocus) self.slider.valueChanged.connect(self.scrollBar.setValue) self.scrollBar.valueChanged.connect(self.dial.setValue) self.dial.valueChanged.connect(self.slider.setValue) self.dial.valueChanged.connect(self.valueChanged) if orientation == Qt.Horizontal: direction = QBoxLayout.TopToBottom else: direction = QBoxLayout.LeftToRight slidersLayout = QBoxLayout(direction) slidersLayout.addWidget(self.slider) slidersLayout.addWidget(self.scrollBar) slidersLayout.addWidget(self.dial) self.setLayout(slidersLayout) def setValue(self, value): self.slider.setValue(value) def setMinimum(self, value): self.slider.setMinimum(value) self.scrollBar.setMinimum(value) self.dial.setMinimum(value) def setMaximum(self, value): self.slider.setMaximum(value) self.scrollBar.setMaximum(value) self.dial.setMaximum(value) def invertAppearance(self, invert): self.slider.setInvertedAppearance(invert) self.scrollBar.setInvertedAppearance(invert) self.dial.setInvertedAppearance(invert) def invertKeyBindings(self, invert): self.slider.setInvertedControls(invert) self.scrollBar.setInvertedControls(invert) self.dial.setInvertedControls(invert) class Window(QWidget): def __init__(self): super(Window, self).__init__() self.horizontalSliders = SlidersGroup(Qt.Horizontal, "Horizontal") self.verticalSliders = SlidersGroup(Qt.Vertical, "Vertical") self.stackedWidget = QStackedWidget() self.stackedWidget.addWidget(self.horizontalSliders) self.stackedWidget.addWidget(self.verticalSliders) self.createControls("Controls") self.horizontalSliders.valueChanged.connect(self.verticalSliders.setValue) self.verticalSliders.valueChanged.connect(self.valueSpinBox.setValue) self.valueSpinBox.valueChanged.connect(self.horizontalSliders.setValue) layout = QHBoxLayout() layout.addWidget(self.controlsGroup) layout.addWidget(self.stackedWidget) self.setLayout(layout) self.minimumSpinBox.setValue(0) self.maximumSpinBox.setValue(20) self.valueSpinBox.setValue(5) self.setWindowTitle("Sliders") def createControls(self, title): self.controlsGroup = QGroupBox(title) minimumLabel = QLabel("Minimum value:") maximumLabel = QLabel("Maximum value:") valueLabel = QLabel("Current value:") invertedAppearance = QCheckBox("Inverted appearance") invertedKeyBindings = QCheckBox("Inverted key bindings") self.minimumSpinBox = QSpinBox() self.minimumSpinBox.setRange(-100, 100) self.minimumSpinBox.setSingleStep(1) self.maximumSpinBox = QSpinBox() self.maximumSpinBox.setRange(-100, 100) self.maximumSpinBox.setSingleStep(1) self.valueSpinBox = QSpinBox() self.valueSpinBox.setRange(-100, 100) self.valueSpinBox.setSingleStep(1) orientationCombo = QComboBox() orientationCombo.addItem("Horizontal slider-like widgets") orientationCombo.addItem("Vertical slider-like widgets") orientationCombo.activated.connect(self.stackedWidget.setCurrentIndex) self.minimumSpinBox.valueChanged.connect(self.horizontalSliders.setMinimum) self.minimumSpinBox.valueChanged.connect(self.verticalSliders.setMinimum) self.maximumSpinBox.valueChanged.connect(self.horizontalSliders.setMaximum) self.maximumSpinBox.valueChanged.connect(self.verticalSliders.setMaximum) invertedAppearance.toggled.connect(self.horizontalSliders.invertAppearance) invertedAppearance.toggled.connect(self.verticalSliders.invertAppearance) invertedKeyBindings.toggled.connect(self.horizontalSliders.invertKeyBindings) invertedKeyBindings.toggled.connect(self.verticalSliders.invertKeyBindings) controlsLayout = QGridLayout() controlsLayout.addWidget(minimumLabel, 0, 0) controlsLayout.addWidget(maximumLabel, 1, 0) controlsLayout.addWidget(valueLabel, 2, 0) controlsLayout.addWidget(self.minimumSpinBox, 0, 1) controlsLayout.addWidget(self.maximumSpinBox, 1, 1) controlsLayout.addWidget(self.valueSpinBox, 2, 1) controlsLayout.addWidget(invertedAppearance, 0, 2) controlsLayout.addWidget(invertedKeyBindings, 1, 2) controlsLayout.addWidget(orientationCombo, 3, 0, 1, 3) self.controlsGroup.setLayout(controlsLayout) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/spinboxes.py0000755000076500000240000002107013245231431021352 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDate, QDateTime, Qt, QTime from PyQt5.QtWidgets import (QApplication, QComboBox, QDateEdit, QDateTimeEdit, QDoubleSpinBox, QGroupBox, QHBoxLayout, QLabel, QSpinBox, QTimeEdit, QVBoxLayout, QWidget) class Window(QWidget): def __init__(self): super(Window, self).__init__() self.createSpinBoxes() self.createDateTimeEdits() self.createDoubleSpinBoxes() layout = QHBoxLayout() layout.addWidget(self.spinBoxesGroup) layout.addWidget(self.editsGroup) layout.addWidget(self.doubleSpinBoxesGroup) self.setLayout(layout) self.setWindowTitle("Spin Boxes") def createSpinBoxes(self): self.spinBoxesGroup = QGroupBox("Spinboxes") integerLabel = QLabel("Enter a value between %d and %d:" % (-20, 20)) integerSpinBox = QSpinBox() integerSpinBox.setRange(-20, 20) integerSpinBox.setSingleStep(1) integerSpinBox.setValue(0) zoomLabel = QLabel("Enter a zoom value between %d and %d:" % (0, 1000)) zoomSpinBox = QSpinBox() zoomSpinBox.setRange(0, 1000) zoomSpinBox.setSingleStep(10) zoomSpinBox.setSuffix('%') zoomSpinBox.setSpecialValueText("Automatic") zoomSpinBox.setValue(100) priceLabel = QLabel("Enter a price between %d and %d:" % (0, 999)) priceSpinBox = QSpinBox() priceSpinBox.setRange(0, 999) priceSpinBox.setSingleStep(1) priceSpinBox.setPrefix('$') priceSpinBox.setValue(99) spinBoxLayout = QVBoxLayout() spinBoxLayout.addWidget(integerLabel) spinBoxLayout.addWidget(integerSpinBox) spinBoxLayout.addWidget(zoomLabel) spinBoxLayout.addWidget(zoomSpinBox) spinBoxLayout.addWidget(priceLabel) spinBoxLayout.addWidget(priceSpinBox) self.spinBoxesGroup.setLayout(spinBoxLayout) def createDateTimeEdits(self): self.editsGroup = QGroupBox("Date and time spin boxes") dateLabel = QLabel() dateEdit = QDateEdit(QDate.currentDate()) dateEdit.setDateRange(QDate(2005, 1, 1), QDate(2010, 12, 31)) dateLabel.setText("Appointment date (between %s and %s):" % (dateEdit.minimumDate().toString(Qt.ISODate), dateEdit.maximumDate().toString(Qt.ISODate))) timeLabel = QLabel() timeEdit = QTimeEdit(QTime.currentTime()) timeEdit.setTimeRange(QTime(9, 0, 0, 0), QTime(16, 30, 0, 0)) timeLabel.setText("Appointment time (between %s and %s):" % (timeEdit.minimumTime().toString(Qt.ISODate), timeEdit.maximumTime().toString(Qt.ISODate))) self.meetingLabel = QLabel() self.meetingEdit = QDateTimeEdit(QDateTime.currentDateTime()) formatLabel = QLabel("Format string for the meeting date and time:") formatComboBox = QComboBox() formatComboBox.addItem('yyyy-MM-dd hh:mm:ss (zzz \'ms\')') formatComboBox.addItem('hh:mm:ss MM/dd/yyyy') formatComboBox.addItem('hh:mm:ss dd/MM/yyyy') formatComboBox.addItem('hh:mm:ss') formatComboBox.addItem('hh:mm ap') formatComboBox.activated[str].connect(self.setFormatString) self.setFormatString(formatComboBox.currentText()) editsLayout = QVBoxLayout() editsLayout.addWidget(dateLabel) editsLayout.addWidget(dateEdit) editsLayout.addWidget(timeLabel) editsLayout.addWidget(timeEdit) editsLayout.addWidget(self.meetingLabel) editsLayout.addWidget(self.meetingEdit) editsLayout.addWidget(formatLabel) editsLayout.addWidget(formatComboBox) self.editsGroup.setLayout(editsLayout) def setFormatString(self, formatString): self.meetingEdit.setDisplayFormat(formatString) if self.meetingEdit.displayedSections() & QDateTimeEdit.DateSections_Mask: self.meetingEdit.setDateRange(QDate(2004, 11, 1), QDate(2005, 11, 30)) self.meetingLabel.setText("Meeting date (between %s and %s):" % (self.meetingEdit.minimumDate().toString(Qt.ISODate), self.meetingEdit.maximumDate().toString(Qt.ISODate))) else: self.meetingEdit.setTimeRange(QTime(0, 7, 20, 0), QTime(21, 0, 0, 0)) self.meetingLabel.setText("Meeting time (between %s and %s):" % (self.meetingEdit.minimumTime().toString(Qt.ISODate), self.meetingEdit.maximumTime().toString(Qt.ISODate))) def createDoubleSpinBoxes(self): self.doubleSpinBoxesGroup = QGroupBox("Double precision spinboxes") precisionLabel = QLabel("Number of decimal places to show:") precisionSpinBox = QSpinBox() precisionSpinBox.setRange(0, 100) precisionSpinBox.setValue(2) doubleLabel = QLabel("Enter a value between %d and %d:" % (-20, 20)) self.doubleSpinBox = QDoubleSpinBox() self.doubleSpinBox.setRange(-20.0, 20.0) self.doubleSpinBox.setSingleStep(1.0) self.doubleSpinBox.setValue(0.0) scaleLabel = QLabel("Enter a scale factor between %d and %d:" % (0, 1000)) self.scaleSpinBox = QDoubleSpinBox() self.scaleSpinBox.setRange(0.0, 1000.0) self.scaleSpinBox.setSingleStep(10.0) self.scaleSpinBox.setSuffix('%') self.scaleSpinBox.setSpecialValueText("No scaling") self.scaleSpinBox.setValue(100.0) priceLabel = QLabel("Enter a price between %d and %d:" % (0, 1000)) self.priceSpinBox = QDoubleSpinBox() self.priceSpinBox.setRange(0.0, 1000.0) self.priceSpinBox.setSingleStep(1.0) self.priceSpinBox.setPrefix('$') self.priceSpinBox.setValue(99.99) precisionSpinBox.valueChanged.connect(self.changePrecision) spinBoxLayout = QVBoxLayout() spinBoxLayout.addWidget(precisionLabel) spinBoxLayout.addWidget(precisionSpinBox) spinBoxLayout.addWidget(doubleLabel) spinBoxLayout.addWidget(self.doubleSpinBox) spinBoxLayout.addWidget(scaleLabel) spinBoxLayout.addWidget(self.scaleSpinBox) spinBoxLayout.addWidget(priceLabel) spinBoxLayout.addWidget(self.priceSpinBox) self.doubleSpinBoxesGroup.setLayout(spinBoxLayout) def changePrecision(self, decimals): self.doubleSpinBox.setDecimals(decimals) self.scaleSpinBox.setDecimals(decimals) self.priceSpinBox.setDecimals(decimals) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/styles.py0000755000076500000240000002203513245231431020665 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QDateTime, Qt, QTimer from PyQt5.QtWidgets import (QApplication, QCheckBox, QComboBox, QDateTimeEdit, QDial, QDialog, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit, QProgressBar, QPushButton, QRadioButton, QScrollBar, QSizePolicy, QSlider, QSpinBox, QStyleFactory, QTableWidget, QTabWidget, QTextEdit, QVBoxLayout, QWidget) class WidgetGallery(QDialog): def __init__(self, parent=None): super(WidgetGallery, self).__init__(parent) self.originalPalette = QApplication.palette() styleComboBox = QComboBox() styleComboBox.addItems(QStyleFactory.keys()) styleLabel = QLabel("&Style:") styleLabel.setBuddy(styleComboBox) self.useStylePaletteCheckBox = QCheckBox("&Use style's standard palette") self.useStylePaletteCheckBox.setChecked(True) disableWidgetsCheckBox = QCheckBox("&Disable widgets") self.createTopLeftGroupBox() self.createTopRightGroupBox() self.createBottomLeftTabWidget() self.createBottomRightGroupBox() self.createProgressBar() styleComboBox.activated[str].connect(self.changeStyle) self.useStylePaletteCheckBox.toggled.connect(self.changePalette) disableWidgetsCheckBox.toggled.connect(self.topLeftGroupBox.setDisabled) disableWidgetsCheckBox.toggled.connect(self.topRightGroupBox.setDisabled) disableWidgetsCheckBox.toggled.connect(self.bottomLeftTabWidget.setDisabled) disableWidgetsCheckBox.toggled.connect(self.bottomRightGroupBox.setDisabled) topLayout = QHBoxLayout() topLayout.addWidget(styleLabel) topLayout.addWidget(styleComboBox) topLayout.addStretch(1) topLayout.addWidget(self.useStylePaletteCheckBox) topLayout.addWidget(disableWidgetsCheckBox) mainLayout = QGridLayout() mainLayout.addLayout(topLayout, 0, 0, 1, 2) mainLayout.addWidget(self.topLeftGroupBox, 1, 0) mainLayout.addWidget(self.topRightGroupBox, 1, 1) mainLayout.addWidget(self.bottomLeftTabWidget, 2, 0) mainLayout.addWidget(self.bottomRightGroupBox, 2, 1) mainLayout.addWidget(self.progressBar, 3, 0, 1, 2) mainLayout.setRowStretch(1, 1) mainLayout.setRowStretch(2, 1) mainLayout.setColumnStretch(0, 1) mainLayout.setColumnStretch(1, 1) self.setLayout(mainLayout) self.setWindowTitle("Styles") self.changeStyle('Windows') def changeStyle(self, styleName): QApplication.setStyle(QStyleFactory.create(styleName)) self.changePalette() def changePalette(self): if (self.useStylePaletteCheckBox.isChecked()): QApplication.setPalette(QApplication.style().standardPalette()) else: QApplication.setPalette(self.originalPalette) def advanceProgressBar(self): curVal = self.progressBar.value() maxVal = self.progressBar.maximum() self.progressBar.setValue(curVal + (maxVal - curVal) / 100) def createTopLeftGroupBox(self): self.topLeftGroupBox = QGroupBox("Group 1") radioButton1 = QRadioButton("Radio button 1") radioButton2 = QRadioButton("Radio button 2") radioButton3 = QRadioButton("Radio button 3") radioButton1.setChecked(True) checkBox = QCheckBox("Tri-state check box") checkBox.setTristate(True) checkBox.setCheckState(Qt.PartiallyChecked) layout = QVBoxLayout() layout.addWidget(radioButton1) layout.addWidget(radioButton2) layout.addWidget(radioButton3) layout.addWidget(checkBox) layout.addStretch(1) self.topLeftGroupBox.setLayout(layout) def createTopRightGroupBox(self): self.topRightGroupBox = QGroupBox("Group 2") defaultPushButton = QPushButton("Default Push Button") defaultPushButton.setDefault(True) togglePushButton = QPushButton("Toggle Push Button") togglePushButton.setCheckable(True) togglePushButton.setChecked(True) flatPushButton = QPushButton("Flat Push Button") flatPushButton.setFlat(True) layout = QVBoxLayout() layout.addWidget(defaultPushButton) layout.addWidget(togglePushButton) layout.addWidget(flatPushButton) layout.addStretch(1) self.topRightGroupBox.setLayout(layout) def createBottomLeftTabWidget(self): self.bottomLeftTabWidget = QTabWidget() self.bottomLeftTabWidget.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Ignored) tab1 = QWidget() tableWidget = QTableWidget(10, 10) tab1hbox = QHBoxLayout() tab1hbox.setContentsMargins(5, 5, 5, 5) tab1hbox.addWidget(tableWidget) tab1.setLayout(tab1hbox) tab2 = QWidget() textEdit = QTextEdit() textEdit.setPlainText("Twinkle, twinkle, little star,\n" "How I wonder what you are.\n" "Up above the world so high,\n" "Like a diamond in the sky.\n" "Twinkle, twinkle, little star,\n" "How I wonder what you are!\n") tab2hbox = QHBoxLayout() tab2hbox.setContentsMargins(5, 5, 5, 5) tab2hbox.addWidget(textEdit) tab2.setLayout(tab2hbox) self.bottomLeftTabWidget.addTab(tab1, "&Table") self.bottomLeftTabWidget.addTab(tab2, "Text &Edit") def createBottomRightGroupBox(self): self.bottomRightGroupBox = QGroupBox("Group 3") self.bottomRightGroupBox.setCheckable(True) self.bottomRightGroupBox.setChecked(True) lineEdit = QLineEdit('s3cRe7') lineEdit.setEchoMode(QLineEdit.Password) spinBox = QSpinBox(self.bottomRightGroupBox) spinBox.setValue(50) dateTimeEdit = QDateTimeEdit(self.bottomRightGroupBox) dateTimeEdit.setDateTime(QDateTime.currentDateTime()) slider = QSlider(Qt.Horizontal, self.bottomRightGroupBox) slider.setValue(40) scrollBar = QScrollBar(Qt.Horizontal, self.bottomRightGroupBox) scrollBar.setValue(60) dial = QDial(self.bottomRightGroupBox) dial.setValue(30) dial.setNotchesVisible(True) layout = QGridLayout() layout.addWidget(lineEdit, 0, 0, 1, 2) layout.addWidget(spinBox, 1, 0, 1, 2) layout.addWidget(dateTimeEdit, 2, 0, 1, 2) layout.addWidget(slider, 3, 0) layout.addWidget(scrollBar, 4, 0) layout.addWidget(dial, 3, 1, 2, 1) layout.setRowStretch(5, 1) self.bottomRightGroupBox.setLayout(layout) def createProgressBar(self): self.progressBar = QProgressBar() self.progressBar.setRange(0, 10000) self.progressBar.setValue(0) timer = QTimer(self) timer.timeout.connect(self.advanceProgressBar) timer.start(1000) if __name__ == '__main__': import sys app = QApplication(sys.argv) gallery = WidgetGallery() gallery.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/stylesheet/0000755000076500000240000000000013245231431021154 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/0000755000076500000240000000000013245231431022421 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/checkbox_checked.png0000644000076500000240000000040713245231431026364 0ustar philstaff00000000000000‰PNG  IHDR Øâ,÷sBITUìFtEXtSoftwarewww.inkscape.org›î<›IDATÓch¬hüV04þÇÁR÷&¿ìA†÷&Ã¥>tüo€Ásó¦Ü=µ‹Ôíé­?ÿo܉$umP¢óÕÚžïÿ§Ü{Ó—Z¿»ñÿŠ{_OúÒø¿÷ÅÇöp©ã‹›þ6þïêèøø¼÷’Ô‡ŽM;@të›Ó@6¢HýoXxªíËéÇ IAüõ¼‹¿p…Î0•ÞøÐ`e9IEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/checkbox_checked_hover.png0000644000076500000240000000041213245231431027563 0ustar philstaff00000000000000‰PNG  IHDR Øâ,÷sBITUìFtEXtSoftwarewww.inkscape.org›î<žIDATÓc˜U1ëVXÁ0ë?.–z2ùm2|2.õ¹ã Þ›·óî…X¤žO_ÿsíÿÓ;‘¤žÎJt~\»åûÚÿ;ï½ï‚KÚ½öÿ±{?oÿ²öÿÖ_Û?wÀ¥n.^û(Ô±ñã»Þÿ HRŸ;ÎîXûíÿõ?žOÙˆ"õ¿áЩ _î.€8I â¯×½Xü…+4p†!Œà>dýIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/checkbox_checked_pressed.png0000644000076500000240000000065113245231431030112 0ustar philstaff00000000000000‰PNG  IHDR rëä|sBIT|dˆtEXtSoftwarewww.inkscape.org›î<;IDAT(‘c˜5kVÿ W0‰ÿ¤b¸¦µ«V-ݸnÝÔÍ6ôlÝ´©yûæÍU;·n-ܽm[ÆžíÛãvlÞ¡iÓ† €Šê÷ìØQz`×®ìÃ{÷&;p |×Ö­‘S&Mš¸yݺ@ MÛ6nlÛ»cGÉÝ»³€€ÂìÜÔÞÖv£±±ñ_oï M;¶l©jÈjˆj½zñbÒäI“n‚4ñ›¥‹y`hš?gÎŒ–––7ë×®]üþíÛ©‹-ºÕðuÞìÙ¾wïÖÆÐ4cÚ´… EÍÍÍ¿-Z³áÏÔÉ“nœ?/‹UÓþ]»b»:;@ÿ‡ú£ ¤§& `ðÁ]»Ü6=ièìè˜Ó€S0^"¡çºiÝ:×éS§&ƒÚÅí14‘š"HN{±=¾x WÐõIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/checkbox_unchecked.png0000644000076500000240000000023713245231431026730 0ustar philstaff00000000000000‰PNG  IHDR Øâ,÷sBITUìFtEXtSoftwarewww.inkscape.org›î<3IDATÓch¬hüV04þÇÁR÷&¿ìA†÷&Ã¥>tüo@†:†á œaõùTÍßIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/checkbox_unchecked_hover.png0000644000076500000240000000023713245231431030133 0ustar philstaff00000000000000‰PNG  IHDR Øâ,÷sBITUìFtEXtSoftwarewww.inkscape.org›î<3IDATÓc˜U1ëVXÁ0ë?.–z2ùm2|2.õ¹ã2üÜ1„¤ðø Whà C2XuEsÂIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/checkbox_unchecked_pressed.png0000644000076500000240000000050013245231431030446 0ustar philstaff00000000000000‰PNG  IHDR rëä|sBIT|dˆtEXtSoftwarewww.inkscape.org›î<ÒIDAT(Ï•’¿‚0ÆÛëÆÄ„Ä—Õw`râÁtèà  “þñŠP‹e€KŽ»¤ß¯×~ëº>3ÆJ¶>J¤OŶE…Sw*Š_Ð Éy¨œs¥µæ7)¯^ ,Ï»,{ !(_‡h}U]“6@H»¡í(œ>I"¾‹­ˆ¦ŒÐ9‡)D»b E€ïIrH  Z8™abûâI3!Ž=9gÿ=ÿAs#&À-ý¨©¾Ïµ1{º°5Ö:ÝÁGÿ~è.e³öIxè²õí}ÊÑbÇn.éˆIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/down_arrow.png0000644000076500000240000000025713245231431025314 0ustar philstaff00000000000000‰PNG  IHDR#“>SsBITUìFtEXtSoftwarewww.inkscape.org›î<CIDATcÈ[8ã: æÌbp’ëÚSsBITUìFtEXtSoftwarewww.inkscape.org›î<BIDAT×c¨_½æ Ö.aHVÚñèÄWÜt>\„á?Ck&ˆ³ïUÅ —qÁ†ã_ûrþ3€¹ÿRÕzgþ³³")îòET¥IEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/frame.png0000644000076500000240000000037513245231431024226 0ustar philstaff00000000000000‰PNG  IHDRaakpF•pž(hmm}¶òAUwG÷`%¾øV¢9[À+èèèx¥±±Ñ¥5X ¾ÉÕ% ’†y[­V{&‹¿Û3vW² “Éô®N§ ööö®Ìy0–ø^’ ƒÁpÞh4FFGG™Vor÷ OK„¢×ë?4›ÍQ¿ßÏìöÎ¸Ùæ|šÛýNr ”ØGV«5Øààà®Zk´xƒ ×%B‘Ëå_Q¿ŒÏçc&“9dïñ–I„"“ÉZÆÆÆ…`\.×¶FoQ¦6.K ¤®®®P«Õ&&&R0Ô7ÃÃÃL«3 õöK$B©¯¯ÿ+±J0ããã)˜‘‘ÖÙÙ¹¬3uþ31»S$ t‰UH(JÁPߢ˜J­sôûb7$RRRrZîD",³`0ȸ¨ÔÌfË´ÉæªÈ{JMMÍ›}}}‹SSS.‚q»ÝI¥Z¯ -_ÉkJKKK1Ap.‚¡¾‚ô~{ï𼡳X,#±XŒE£Q699ÉöJÀëõ2‡Ã±¡Ò›ÆcÛEy ’¶Ø5™™™IÁPßì•Áx<¦T©]ÎÁЯy ‚U9 õúâñx fzz:Ã%@0Ô78Þ0¬`\k´ÿÃóÚÑ@(MMM¿ÌÏÏ3Êììlf?£ ö¡ÝÖ¶vóàØÜµ¼Áª<…É/--e`¨Ü“@?Óju!húnÞ€P Åí••F0 lnnŽ&‚¡ "H(ÚÔ d½(/@JKKÏ¡lB«««lyy9Ã%@0\Ã%@0Ø ‚ö¡N×èÍS¡h4šû›››lmm-³¸¸È¸3õ Y "XQª5Á™Ó©ªªº€•HÌúú:£Rã0ÙH€`œN'“+Úìnoä§S¡ eâM$lkk+“†Kdž§ÒiÁö&ö͉ƒPpYQ¹»»Ëvvv20Ô7†K€`¸ø³PÔ7ARà±úÒ‰ƒÔÖÖ~B“ç0ÛÛÛlccƒí•À£Ž5ZgJ¥2`¶»?QÚé1‰P’Éd F(‚ÉFC}C0Á¦L¡úw,ºùõ‰€Pp}TÇA8 õ ‡9Ѝozzz˜L®pv¹ý×OwÇWhòB ‡Mx¬9èÙF(²êZUú?C³É‹9)++{}Ø r˜²=ÖPß ª¬¹EfôŒN_ÊiXØ'ûÁEB£ •šJ¥ CÓ·š„ÒÕÕ¥9D(‚9Ž· ‰Æf¹l4¼rQt\€—rÑ„Çêš¼Íf[Æïqráu‡£½½ÝŽ•°AËÖ¶¶63^P™š››•÷îÝoªøëA¡¨ Eû5ü~Ù+üûÛ˜|—Vl°ÕX[(­ß"äòò"òò<ò\:ôÝc¢‚”——¿Cÿn6 ¬FuÅ{ *Ò§\EÞGžÉvlQAÐðç Ñ…GÁp9Á?/Gýß|‰¼Šœù¿c‹ BAIø36ŽÚ7ÀFÅ*Ÿ—Ž3®è °Š}?ô5o@J?#ï!w\ÑA `ÅÞ¦îîîáû2åcäi±ÆMûC`÷ÞD#»pvº%¸¼%ö¸¢ƒ S{ væ \¯~‘.ñ©Sì1s‚›•«XkuuõËôÿ< ñR˜ ˆœ€@ÁOÒó ÿŒÉ¿œ§M+W”ÿ r,±LÉÁ©IEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/pushbutton.png0000644000076500000240000000102513245231431025340 0ustar philstaff00000000000000‰PNG  IHDR0Ö:ŽsBIT|dˆtEXtSoftwarewww.inkscape.org›î<§IDATHÇÕ—¿ŽRAÆ¿fÿh$\Ín®Æìjìl(hÄ팕‚!¾€¥7±£Ó'0ò$·pílp*-Hn@®˜s> XC|‚;_7ÝùåwÎÉCY–cÞcž¨ê-T7´ÖNUõ€7½^O\–e÷1_†k·Ûë4M—€÷>L&¯I>ðÂdY6h6›Ï:ÎçœpD²Ê ¥÷þ`0ÜðÜYk;­V µš5"!T<ççg«$IŠ<ÏŸ:kmrà\6›šªV¾ø«Ôë78›Ín; ª"šPUë¶BBˆ `7§fg€U¨Hløg€¢À>Ihˆ„X ¢!.èžl hˆ@ÿo¡È l—ÿU ‰t¨º” N7âÙBÅŸª:w¢úyúÝ?>­ES}>_.~/¯—eyéH¾ütqqyr39}pïîòÚñqeûH•&Ÿ/¿M}ä—~¿ÿÁì>4mcÌ{’#° !|F¯†Ãá/³ûw»Ý“¢(Òõz]«èàr<ÿôÞ¯¬H®þžÅMa¾vìIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/pushbutton_hover.png0000644000076500000240000000101513245231431026542 0ustar philstaff00000000000000‰PNG  IHDR0Ö:ŽsBIT|dˆtEXtSoftwarewww.inkscape.org›î<ŸIDATHÇÕWÍJÃ@ÜMÖZ*ýÁŸF…Z)ˆô L=©'Á^|”Jñ˜(æPz²—*^¥·ª‡ØTHLbò­ßÒØö²öËifgv)眴Z­¥ô×1¬’ä‚+Šò†oqÝl6#†äw‘øs>Ÿgº®š¦9 @†Ã¡Öëõ®ðàp<§(À¨T*§õz}ÄøsY¸’`x(bÉ0Œ-ÜŸ1JÉQ­V㌩*@"ùˆ$åòŽ_(\Û¶O/¤ÓéŸ(!ˆ$Èå²Ü²¬M6kD”ƒ4ü‘0!Xf…ýOÄ™ø P6S#>.‘±Ÿ¿ðƒÈ¡Sþ\dJ6þd^bŒ—9B’–x!A¤íÀ´Æ’E(v/rN†ªJU©"ä8®HÌ·pài4z?,mÄ_âf°¾Æ){2Éxž×gHúâÑ4ûÅâÆZuÏYÉdÂ䯍eSƒ—×,ò´Ûí{?htŒÒî«ð‹‘0Mó²Óé|ÒÅØ4u×uµ Ôd:Ày·ÛýÀ÷€££ÿ-j÷ę̂IEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/pushbutton_pressed.png0000644000076500000240000000100113245231431027057 0ustar philstaff00000000000000‰PNG  IHDR0Ö:ŽsBIT|dˆtEXtSoftwarewww.inkscape.org›î<“IDATHÇÕ—ÍjZQ…×ö¼ÞÛúcH )8í¤ƒÚR:É(b¼@†9Й³ä JûT œ¡RÐJ¡ÄãÕ£¸W¹J}ƒ{ìùÚ¬õmÎ’°Ö¾‘Þ’|†âŠ%‘ŸJÞ¸n6›c­­ ÐO“Š©Ÿgq\ž×>ðo6«ý¾p à\¬µ_Ò¤òáýëÓqE’(²&Ó¿É×ïý€3àMýä8‹¢ˆ$EIAÁ8xþÔ?J“lž-Þ’O’¤2Þ(EU(M*¼›¹#J`£*E¯ÎTµd¶W!-KL7”@Hþ·Vw 0´r¯f×§ rœ®>L€ Ú&_!šóþ‡´Àÿ ̽÷‘ÀÊ{¨ê]ID¾ý™N%…@3s®œ-ér¹ì’ιÞ`0¨ÖjµyÇ›â‚KqΕG£ÑcUýÑjµ>Iþ¡y%"·$_Оõz½þÜét.Ûíödï×h4ªY–®V«¨  °Û펇áàIú{U:!䟠ŠIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/radiobutton_checked.png0000644000076500000240000000054313245231431027131 0ustar philstaff00000000000000‰PNG  IHDR E5N{PLTEÿÿÿ‹‹‹‹‹‹ŽŽŽ÷÷÷ôóóðððòññìììíííïííëèèÞÞÞÜÜÜãáááÝÝßÚÚÞÙÙÃÃÃÚÔÔÂÂÂÔÏÏÒËËÐÈÈ   ÉÂÂû»Á··Á¸¸Á··ŒŒŒÁ¸¸ŒŒŒÂ¸¸Â¹¹ÃººÕO})tRNS3‡Ÿ¦ÈÊËËÌÌÍÑÒÓÕØÚÚÛÝÞÞßâäæçìðòõö÷ùùúúúý>+ønIDAT[]ŽAÁ0·I3¢¥¡¤‚ Eñÿ:ô¢æ¾³#I¦lmi$I…Í]ã›.ÛB’íkêÞJ&WLTÙÈ%`µYÉ)ØÞ†ëBÔèáòþ<àGŧûkØCˆr ‡ónÚÍó¿¿–ßÎ/¿ Æ©£TøIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/radiobutton_checked_hover.png0000644000076500000240000000102413245231431030327 0ustar philstaff00000000000000‰PNG  IHDR rëä|sBIT|dˆtEXtSoftwarewww.inkscape.org›î<¦IDAT(S}RËNÂP4ò/ƘøWºÕ¸qåÒŸÐDkð¥”G€†(š¶*ÏL€XÑi\œ!bjb\œœžsgzÎ̽s“Édn‚ ,"¶qDõ;³^ôãfàbá„C![ŒFo²ÜŽK’szrrutxh|Ÿü¤AhI±Ø£šÏ¿™†1hÖëÝ+ËrË¥Ò8“Nß„‚Á20ëSËœ@BY×_\×µ=Ï3g1|~n\_^”lÖ±@ˆ¬—ÍX^Á’™ ±f ñ ç]ôu„8‡®ã|ññšÅsˆŸ–MTÜ1D·±_ƒ¸õ;÷€XÿÿíýD 2©NÞIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/radiobutton_unchecked.png0000644000076500000240000000036013245231431027471 0ustar philstaff00000000000000‰PNG  IHDR E5N¢(FÇO¸æVóÂÊ[åå=Ÿó~Ïñ?㇂ðIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/radiobutton_unchecked_hover.png0000644000076500000240000000075413245231431030703 0ustar philstaff00000000000000‰PNG  IHDR rëä|sBIT|dˆtEXtSoftwarewww.inkscape.org›î<~IDAT(S}’ËNÂ`…‰¼‹!&¾•n%nX¹ä%4Ñ,…R®ÊUÓäÖ&°h©¢[–x¦¡¤Ââ¤íßóufÎÔ·^¯}®† @a(u6Wzx}®Ù!ƒ‹Fu>‘eÒéIJŒ‡X¬u‰È›÷~/t~Ë0!™üJ¥E–-­×›µTÕlÔjËB>?Œ²lž 8¦ 4êõ/Ó4õÕj¥¸²‹þk³i‰Å¢°B~‚ÂÔU°LSó®>m»¯Ê²-ð|­^”Jòü­]€+CÓæ¨&s,{MP'›ÉLi†}Ðd<žVËåî=ÇeJHi@CïƒF†1“DñÐ¥3Ó#b¥”hè]À÷rÙë¶Ûf.Σ½“†S(VJ‰†þ t}^¯VU|\€÷h»'ÚÅJ)éýþü3 ÑU ðñxžÓ?w†Ã2b-? /Ij—D±†–r¨@À <[ÈûïÑ`¸ÁÀ9è ÷!œz}¿¢Nü¾%$ÎIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/radiobutton_unchecked_pressed.png0000644000076500000240000000105413245231431031217 0ustar philstaff00000000000000‰PNG  IHDR rëä|sBIT|dˆtEXtSoftwarewww.inkscape.org›î<¾IDAT(S]’;KA…g7›"L:16&ˆøÄÆBì ÑBÁBAí²[FÁX vÚh)úí;ƒ$&»$&ÙGvfi+d˜ÇÄIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/spinup.png0000644000076500000240000000043313245231431024445 0ustar philstaff00000000000000‰PNG  IHDR  G×\sBIT|dˆtEXtSoftwarewww.inkscape.org›î<­IDAT(ÏAJÄ@EßOþ¸ÈNtçqÔk¨xïlïá*‚+Ï#CFHºÛr!ÙOúAAý‚GQ¥a¾º®»áŸ[¿åˆmD¬ëzL)½ö}ÿæƒÝ==>$ÎC˲\NÓÇË8Ž4H*9sn¹mïïn—ƒýlASrf'aû•œöʨQk¡šÍ`@¥¤ 70u7C¨FŽŒP®xžçÓÕûôù½×O?×õ‹jf41íYIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/spinup_hover.png0000644000076500000240000000042513245231431025651 0ustar philstaff00000000000000‰PNG  IHDR  G×\sBIT|dˆtEXtSoftwarewww.inkscape.org›î<§IDAT(ÏA Â@ Eÿ³Ýy½†=@Áx‡v#xAp]מGÇÕ´˜¸Ù·}HŸÿ6MóŒ1nñÇIzéËì^Vð¾ïÓ0 纮/¢ª±ªÆÁœóªë§¶mÐÌ0¶TÕöû]VÕ£ n†)ÒEd)$höÅTB !¦;— HÚ±B`¦3 ˜y³Ã!$ésc§ôY_o÷×Tí;¥ÍÚf°ÉeóaIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/spinup_off.png0000644000076500000240000000042213245231431025275 0ustar philstaff00000000000000‰PNG  IHDR  G×\sBIT|dˆtEXtSoftwarewww.inkscape.org›î<¤IDAT(Ï!Â@EÿL&+†^ ÈžŠ p<ÇAt5X…BP0Mwg…„Ô°ÛçþO~^ò©mÛ‹sn‹ÿ˜™©ª¾TõÜ4ÍI˜y±¯kE”RZ…ŽÞ{“±ˆ(@«j×w×çApŠ 1&r£9æ˜i ‚û&!Œ2ÍÝoˆq`óÌÓëótŽÏasÌÍ4›A†¤ëÛ½{”n£êæ ›bU-ão¢IEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/spinup_pressed.png0000644000076500000240000000042513245231431026173 0ustar philstaff00000000000000‰PNG  IHDR  G×\sBIT|dˆtEXtSoftwarewww.inkscape.org›î<§IDAT(Ï¥Ž1 ÂPDßd? v¢7lì,,=¹GHìïc¡‚•x ±I$É_ µ7ñÁÂlñ˜Qže‡~¿7á ü›Gzÿî^7Í£®›Ý:M÷ÁÌ«å¢â7TUõðr½m¶yN"¡èίgÁâ|6}šY@ItÚ¡Äͬø4·E’AÒE ÅHGYÝš'éÙ¨éâ:„¢,GÇÓùÞÖ-Šbü`Ò`ÅT¥»[IEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/up_arrow.png0000644000076500000240000000030513245231431024763 0ustar philstaff00000000000000‰PNG  IHDR¾Dê9PLTEÿÿÿn]]n\\QDD #YJJ4,,^OO$G<u>|`„@Ín(IDATÁ‡ Ã0§eoøÿX$€˜³ _÷}˜ÙÚIÒû ··MäÇêIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/images/up_arrow_disabled.png0000644000076500000240000000025413245231431026615 0ustar philstaff00000000000000‰PNG  IHDR#“>SsBITUìFtEXtSoftwarewww.inkscape.org›î<@IDAT×cøÏ‚ë“•@4˜3%êÁ®U} Œ`nÁ•-v=ÚÕä† ^â<ÚufC’C]÷®0Ø8e'n=]IEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/stylesheet/mainwindow.ui0000644000076500000240000002456513245231431023703 0ustar philstaff00000000000000 MainWindow 0 0 400 413 Style Sheet 9 6 QFrame::StyledPanel QFrame::Raised 9 6 Please read the LICENSE file before checking I accept the terms and &conditions Profession: Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing professionList &Name: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter nameCombo Check this if you are male &Male &Password: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter passwordEdit Specify country of origin Specify country of origin 6 Egypt France Germany India Italy Norway Pakistan &Age: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter ageSpinBox Country: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter countryCombo Gender: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter Specify your password Specify your password Password QLineEdit::Password Check this if you are female &Female Specify your age Specify your age 12 22 Specify your name true Qt::Horizontal 40 20 Qt::Horizontal 61 20 Qt::Horizontal QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok Select your profession Specify your name here Specify your name here 0 Developer Student Fisherman 0 0 400 29 &File &Help &Exit About Qt Edit &Style... About PyQt5_gpl-5.10.1/examples/widgets/stylesheet/qss/0000755000076500000240000000000013245231431021762 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/widgets/stylesheet/qss/coffee.qss0000644000076500000240000000430713245231431023745 0ustar philstaff00000000000000.QWidget { background-color: beige; } /* Nice Windows-XP-style password character. */ QLineEdit[echoMode="2"] { lineedit-password-character: 9679; } /* We provide a min-width and min-height for push buttons so that they look elegant regardless of the width of the text. */ QPushButton { background-color: palegoldenrod; border-width: 2px; border-color: darkkhaki; border-style: solid; border-radius: 5; padding: 3px; min-width: 9ex; min-height: 2.5ex; } QPushButton:hover { background-color: khaki; } /* Increase the padding, so the text is shifted when the button is pressed. */ QPushButton:pressed { padding-left: 5px; padding-top: 5px; background-color: #d0d67c; } QLabel, QAbstractButton { font: bold; } /* Mark mandatory fields with a brownish color. */ .mandatory { color: brown; } /* Bold text on status bar looks awful. */ QStatusBar QLabel { font: normal; } QStatusBar::item { border-width: 1; border-color: darkkhaki; border-style: solid; border-radius: 2; } QComboBox, QLineEdit, QSpinBox, QTextEdit, QListView { background-color: cornsilk; selection-color: #0a214c; selection-background-color: #C19A6B; } QListView { show-decoration-selected: 1; } QListView::item:hover { background-color: wheat; } /* We reserve 1 pixel space in padding. When we get the focus, we kill the padding and enlarge the border. This makes the items glow. */ QLineEdit, QFrame { border-width: 2px; padding: 1px; border-style: solid; border-color: darkkhaki; border-radius: 5px; } /* As mentioned above, eliminate the padding and increase the border. */ QLineEdit:focus, QFrame:focus { border-width: 3px; padding: 0px; } /* A QLabel is a QFrame ... */ QLabel { border: none; padding: 0; background: none; } /* A QToolTip is a QLabel ... */ QToolTip { border: 2px solid darkkhaki; padding: 5px; border-radius: 3px; opacity: 200; } /* Nice to have the background color change when hovered. */ QRadioButton:hover, QCheckBox:hover { background-color: wheat; } /* Force the dialog's buttons to follow the Windows guidelines. */ QDialogButtonBox { button-layout: 0; } PyQt5_gpl-5.10.1/examples/widgets/stylesheet/qss/default.qss0000644000076500000240000000002713245231431024135 0ustar philstaff00000000000000/* empty stylesheet */ PyQt5_gpl-5.10.1/examples/widgets/stylesheet/qss/pagefold.qss0000644000076500000240000001517113245231431024300 0ustar philstaff00000000000000/* Customize any plain widget that is a child of a QMainWindow. */ QMainWindow > .QWidget { background-color: gainsboro; background-image: url(:/images/pagefold.png); background-position: top right; background-repeat: no-repeat } /* Provide a padding for the layout inside the frame. The frame exists only to provide a padding for the top-right image, so we explicitly disable the border. */ #mainFrame { padding-right: 30px; border-style: none; border-image: none; /* since we set a border-image below */ } /* mainFrame won't have this border-image since we have explicitly set it to 'none' using a more specific selector. */ QFrame, QLineEdit, QComboBox[editable="true"], QSpinBox { border-image: url(:/images/frame.png) 4; border-width: 3; } QLabel { border: none; border-image: none; padding: 0; background: none; } /* Make text in message boxes selectable. */ QMessageBox { /* LinksAccessibleByMouse | TextSelectableByMouse */ messagebox-text-interaction-flags: 5; } /* Set the selection colors for all widgets. */ QWidget { selection-color: black; selection-background-color: Silver; color: black; } /* Make the entire row selected in item views. */ QAbstractItemView { show-decoration-selected: 1; } /* Nice WindowsXP-style password character for password line edits. */ QLineEdit[echoMode="2"] { lineedit-password-character: 9679; } /* Customize tooltips. */ QToolTip { background-color: rgb(200,200,255); border-color: darkslategray; border-width: 1px; border-style: solid; padding: 3px; font: bold; border-radius: 3px; opacity: 200; } /* Customize radio buttons. */ QRadioButton { spacing: 5px; } QRadioButton::indicator { width: 13px; height: 13px; } QRadioButton::indicator::unchecked { image: url(:/images/radiobutton_unchecked.png); } QRadioButton::indicator:unchecked:hover { image: url(:/images/radiobutton_unchecked_hover.png); } QRadioButton::indicator:unchecked:pressed { image: url(:/images/radiobutton_unchecked_pressed.png); } QRadioButton::indicator::checked { image: url(:/images/radiobutton_checked.png); } QRadioButton::indicator:checked:hover { image: url(:/images/radiobutton_checked_hover.png); } QRadioButton::indicator:checked:pressed { image: url(:/images/radiobutton_checked_pressed.png); } /* Customize arrows. */ *::down-arrow, *::menu-indicator { image: url(:/images/down_arrow.png); width: 7px; height: 7px; } *::down-arrow:disabled, *::down-arrow:off { image: url(:/images/down_arrow_disabled.png); } *::up-arrow { image: url(:/images/up_arrow.png); width: 7px; height: 7px; } *::up-arrow:disabled, *::up-arrow:off { image: url(:/images/up_arrow_disabled.png); } /* Customize push buttons and comboboxes. Our read-only combobox is very similar to a push button, so they share the same border image. */ QPushButton { min-width: 4em; } QPushButton, QComboBox[editable="false"], QComboBox[editable="true"]::drop-down { border-image: url(:/images/pushbutton.png) 5; border-width: 5; } QPushButton:hover, QComboBox[editable="false"]:hover, QComboBox[editable="true"]::drop-down:hover, QMenuBar::item:hover { border-image: url(:/images/pushbutton_hover.png) 5; border-width: 5; } QPushButton:pressed, QComboBox[editable="false"]:on, QComboBox[editable="true"]::drop-down:on, QMenuBar::item:on { border-image: url(:/images/pushbutton_pressed.png) 5; border-width: 5; } /* Customize read-only comboboxes. */ QComboBox[editable="false"] { padding-left: 3px; padding-right: 20px; /* space for the arrow */ } QComboBox[editable="false"]::drop-down { subcontrol-origin: padding; subcontrol-position: top right; width: 15px; border-left-style: solid; border-left-color: darkgray; border-left-width: 1px; } QComboBox[editable="false"]::down-arrow { subcontrol-origin: content; subcontrol-position: center; position: relative; left: 1px; /* 1 pixel dropdown border */ } /* The combobox arrow is on when the popup is open. */ QComboBox[editable="false"]::down-arrow:on { position: relative; top: 1px; left: 2px; } /* Customize editable comboboxes. */ QComboBox[editable="true"] { padding-right: 16px; } QComboBox[editable="true"]::drop-down { subcontrol-origin: border; subcontrol-position: top right; width: 13px; position: absolute; top: 2px; bottom: 2px; right: 2px; } QComboBox[editable="true"]::drop-down, QComboBox[editable="true"]::drop-down:hover, QComboBox[editable="true"]::drop-down:on { border-width: 0px; border-left-width: 3px; /* we need only left and center part */ } /* Shift the arrow when it's open. */ QComboBox[editable="true"]::down-arrow:on { position: relative; top: 1px; left: 1px; } /* Customize check boxes. */ QCheckBox { spacing: 5px; } QCheckBox::indicator { width: 13px; height: 13px; } QCheckBox::indicator:unchecked { image: url(:/images/checkbox_unchecked.png); } QCheckBox::indicator:unchecked:hover { image: url(:/images/checkbox_unchecked_hover.png); } QCheckBox::indicator:unchecked:pressed { image: url(:/images/checkbox_unchecked_pressed.png); } QCheckBox::indicator:checked { image: url(:/images/checkbox_checked.png); } QCheckBox::indicator:checked:hover { image: url(:/images/checkbox_checked_hover.png); } QCheckBox::indicator:checked:pressed { image: url(:/images/checkbox_checked_pressed.png); } /* Customize the size grip. */ QSizeGrip { image: url(:/images/sizegrip.png); width: 16px; height: 16px; } /* Customize the menu bar. */ QMenuBar { border-image: none; border-style: none; border-width: 1px; border-bottom-style: solid; border-bottom-color: darkslategray; padding: 2px; } /* Customize spin boxes. */ QSpinBox { padding-right: 15px; } QSpinBox::up-button { subcontrol-origin: border; subcontrol-position: top right; width: 16px; /* 16 + 2*1px border-width = 15px padding + 3px parent border */ border-image: url(:/images/spinup.png) 1; border-width: 1px; } QSpinBox::up-button:hover { border-image: url(:/images/spinup_hover.png) 1; } QSpinBox::up-button:pressed { border-image: url(:/images/spinup_pressed.png) 1; } QSpinBox::down-button { subcontrol-origin: border; subcontrol-position: bottom right; width: 16px; border-image: url(:/images/spindown.png) 1; border-width: 1px; border-top-width: 0; } QSpinBox::down-button:hover { border-image: url(:/images/spindown_hover.png) 1; } QSpinBox::down-button:pressed { border-image: url(:/images/spindown_pressed.png) 1; } PyQt5_gpl-5.10.1/examples/widgets/stylesheet/stylesheet.py0000755000076500000240000000673513245231431023735 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ########################################################################### from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow, QMessageBox import stylesheet_rc from ui_mainwindow import Ui_MainWindow from stylesheeteditor import StyleSheetEditor class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.nameLabel.setProperty('class', 'mandatory QLabel') self.styleSheetEditor = StyleSheetEditor(self) self.statusBar().addWidget(QLabel("Ready")) self.ui.exitAction.triggered.connect(QApplication.instance().quit) self.ui.aboutQtAction.triggered.connect(QApplication.instance().aboutQt) def on_editStyleAction_triggered(self): self.styleSheetEditor.show() self.styleSheetEditor.activateWindow() def on_aboutAction_triggered(self): QMessageBox.about(self, "About Style sheet", "The Style Sheet example shows how widgets can be " "styled using " "
      Qt " "Style Sheets. Click File|Edit Style Sheet to pop " "up the style editor, and either choose an existing style " "sheet or design your own.") if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/stylesheet/stylesheet.qrc0000644000076500000240000000274313245231431024062 0ustar philstaff00000000000000 qss/coffee.qss qss/default.qss qss/pagefold.qss images/pagefold.png images/frame.png images/radiobutton_unchecked.png images/radiobutton_unchecked_pressed.png images/radiobutton_unchecked_hover.png images/radiobutton_checked.png images/radiobutton_checked_pressed.png images/radiobutton_checked_hover.png images/pushbutton.png images/pushbutton_hover.png images/pushbutton_pressed.png images/checkbox_unchecked.png images/checkbox_unchecked_pressed.png images/checkbox_unchecked_hover.png images/checkbox_checked.png images/checkbox_checked_pressed.png images/checkbox_checked_hover.png images/down_arrow.png images/down_arrow_disabled.png images/up_arrow.png images/up_arrow_disabled.png images/sizegrip.png images/spinup.png images/spinup_off.png images/spinup_hover.png images/spinup_pressed.png images/spindown.png images/spindown_off.png images/spindown_hover.png images/spindown_pressed.png PyQt5_gpl-5.10.1/examples/widgets/stylesheet/stylesheet_rc.py0000644000076500000240000021151413245231431024407 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Wed May 15 13:03:40 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x02\x01\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x13\x08\x06\x00\x00\x00\xd6\x3a\x8e\x1f\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x01\x93\x49\x44\x41\x54\x48\xc7\xd5\ \x97\xcd\x6a\x5a\x51\x14\x85\xd7\xf6\x1e\xbc\xde\xdb\x0e\xfa\x63\ \x48\x0c\x29\x38\xed\x13\xa4\x83\x0e\xda\x52\x3a\xc9\x28\x8f\x62\ \x90\xbc\x40\x86\x39\xd0\x99\xb3\xe4\x09\x4a\xfb\x00\x0e\x04\x07\ \x1d\x54\x0a\x15\x9c\x16\xa1\x52\xd0\x4a\xa1\xc4\xe3\xd5\xa3\xb8\ \x57\x06\xb9\x4a\x7d\x83\x7b\x16\xec\xf9\xda\xac\xf5\x6d\xce\x11\ \x92\xb0\xd6\xbe\x10\x91\x8f\x00\xde\x92\x7c\x86\xe2\x8a\x25\x91\ \x9f\x4a\xde\x00\xb8\x6e\x36\x9b\x1b\x63\xad\xad\x0b\xd0\x4f\x93\ \x8a\xa9\x9f\x1c\x67\x71\x5c\x9e\x14\xd7\x3e\xf0\x6f\x36\xab\x0e\ \x7f\xfd\xbe\x02\x70\x0a\xe0\x5c\xac\xb5\x5f\xd2\xa4\xf2\xe1\xfd\ \xeb\xd3\x71\x14\x45\x04\x00\x92\x28\xb2\x26\xd3\xbf\xc9\xd7\xef\ \xfd\x1a\x80\x33\x03\xe0\x4d\xfd\xe4\x38\x8b\xa2\x88\x24\x45\x49\ \x41\xc1\x17\x38\x78\xfe\xd4\x3f\x4a\x93\x6c\x9e\x2d\xde\x19\x92\ \x4f\x92\xa4\x32\xde\x28\x45\x55\x05\x81\x28\x4d\x2a\xbc\x9b\xb9\ \x23\x03\x00\x4a\x60\xa3\x2a\x45\xaf\xce\x1e\x0e\x04\x54\xb5\x64\ \xb6\x9d\x57\x12\x21\x2d\x90\x4b\x4c\x0e\x37\x94\x40\x48\xfe\xb7\ \x56\x77\x09\x30\xb4\x04\x72\xaf\x66\xd7\xa7\xa0\x13\x00\x72\x06\ \x10\x9c\x1e\xae\x90\x3e\x4c\x80\x0d\xda\x26\x90\x5f\x21\x04\x9a\ \x00\xf3\xfe\x87\xb4\xc0\xff\x0c\xcc\xbd\xf7\x91\x06\x06\xc0\xca\ \x7b\xa8\xea\x5d\x49\x44\xbe\xfd\x99\x4e\x13\x25\x85\x40\x10\x33\ \x73\xae\x9c\x2d\x16\xe9\x72\xb9\xec\x19\x92\x17\xce\xb9\xde\x60\ \x30\xa8\xd6\x6a\xb5\x79\x1c\xc7\x9b\xe2\x82\x4b\x71\xce\x95\x47\ \xa3\xd1\x63\x55\xfd\xd1\x6a\xb5\x3e\x49\xfe\xa1\x79\x25\x22\xb7\ \x24\x5f\x06\xd0\x9e\xf5\x7a\xbd\xfe\xdc\xe9\x74\x2e\xdb\xed\xf6\ \x64\xef\x01\xd7\x68\x34\xaa\x59\x96\x1d\xae\x56\xab\xa8\xa0\x09\ \xb0\xdb\xed\x8e\x87\xc3\xa1\x07\xe0\x49\xfa\x7b\x55\x3a\x21\x14\ \xe4\x9f\xa0\x8a\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x00\xfd\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x61\x00\x00\x00\x15\x08\x03\x00\x00\x00\x61\x6b\x70\x46\ \x00\x00\x00\x3c\x50\x4c\x54\x45\xf7\xf7\xf7\xb0\xb0\xb0\xff\xff\ \xff\x8b\x8b\x8b\x8c\x8c\x8c\x9d\x9d\x9d\xae\xae\xae\x8b\x8b\x8b\ \x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\xde\ \xde\xde\x97\x97\x97\x8b\x8b\x8b\xdf\xdf\xdf\x8b\x8b\x8b\x8b\x8b\ \x8b\x8b\x8b\x8b\x51\x5f\xc0\xbc\x00\x00\x00\x13\x74\x52\x4e\x53\ \xca\xea\x00\xf4\xfd\xf3\xeb\x52\x9d\xd6\xfc\x1e\x20\xd4\xf6\x9c\ \xd4\xda\xfe\x7e\x17\x61\x47\x00\x00\x00\x5d\x49\x44\x41\x54\x78\ \x5e\xed\xd5\xc7\x01\xc0\x20\x14\x02\x50\xfc\xcd\x6e\x8a\xfb\xef\ \x9a\x63\x26\xe0\xe6\x5b\x80\x13\x00\x91\x51\x6a\xdb\x0c\xad\x96\ \x21\x02\xc9\x6a\x1e\x89\x21\xdc\x34\x0b\xba\xae\x09\x96\xb9\xb4\ \xe3\xb2\x1b\x3c\xb7\x5d\x78\x1c\x4c\xfe\xe0\x0d\x30\xc5\x8b\x9d\ \xc0\x94\xf6\x49\xf8\x9d\x84\x93\xc0\xef\x34\x7f\x97\xf8\xdb\xca\ \xff\x07\xfe\xc7\xf1\x7f\xfa\x03\x24\xa3\x11\xb1\xa1\x0a\xfe\x19\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\x9f\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x04\x00\x00\x00\xd8\xe2\x2c\xf7\ \x00\x00\x00\x02\x73\x42\x49\x54\x08\x08\x55\xec\x46\x04\x00\x00\ \x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x77\ \x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x9b\ \xee\x3c\x1a\x00\x00\x00\x33\x49\x44\x41\x54\x18\xd3\x63\x98\x55\ \x31\xeb\x07\x56\x58\xc1\x30\xeb\x3f\x2e\x08\x96\x7a\x32\xf9\x6d\ \x0f\x32\x7c\x32\x19\x2e\xf5\xb9\xe3\x7f\x03\x32\xfc\xdc\x31\x84\ \xa4\xf0\xf8\x0b\x57\x68\xe0\x0c\x43\x00\x32\x58\x02\x75\x45\x0f\ \x73\xc2\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x14\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa0\x47\xd7\x5c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\xa6\x49\x44\x41\x54\x28\xcf\x9d\ \x90\x31\x0e\x41\x51\x14\x44\xe7\x72\xa3\x7d\x91\x58\x1e\x6b\x60\ \x19\xba\xdf\x4a\x94\x2c\x41\xa5\xb0\x01\x85\xc4\x3a\xf0\x55\x12\ \xfe\xdc\x3b\x0a\x11\x0d\xc5\x33\xe5\x24\x27\x33\x39\xd6\x34\xcd\ \xa5\x94\x72\xc5\x8f\x98\xd9\xd7\xbe\x6d\xdb\x91\x97\x52\xce\x93\ \xc9\xd8\x50\x99\xd5\x6a\x7d\xf2\xcc\x54\x90\xd5\xb0\x24\xb8\x94\ \x0a\x76\xb5\x2c\x20\xc1\x95\xca\x20\xfb\xd5\x2c\x04\x4f\x49\x41\ \xfe\xb1\x0c\xb8\x94\x19\x51\x7f\x5b\x78\xdd\xfe\x6b\x39\x23\xc2\ \x25\x65\x2d\x1c\x99\x46\xf2\xee\x92\xaa\x6c\x3f\xba\xae\xb7\x3f\ \x1c\x07\x64\xcc\x9d\xc1\xdb\x66\xbb\x1b\x1a\x0c\x30\xe8\xa5\xe2\ \xad\x04\x32\x40\xfa\xb0\x22\xa3\x25\xb9\x98\xce\x66\xcb\x27\x2a\ \x8d\x77\x7e\xf9\xf5\x91\x67\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x00\xc5\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x07\x00\x00\x00\x05\x08\x03\x00\x00\x00\xbe\x44\x06\xea\ \x00\x00\x00\x39\x50\x4c\x54\x45\xff\xff\xff\x6e\x5d\x5d\x6e\x5c\ \x5c\x51\x44\x44\x14\x11\x11\x05\x04\x04\x03\x02\x02\x20\x1a\x1a\ \x00\x00\x00\x1a\x16\x16\x23\x1d\x1d\x1c\x17\x17\x59\x4a\x4a\x34\ \x2c\x2c\x5e\x4f\x4f\x24\x1e\x1e\x47\x3c\x3c\x47\x3c\x3c\x49\x3d\ \x3d\x21\xaf\x18\x83\x00\x00\x00\x13\x74\x52\x4e\x53\x00\xa2\x7e\ \x5d\x32\x39\x16\x23\x01\x46\x3e\x0f\x75\x3e\x7c\x19\x7f\x60\x84\ \x40\x08\xcd\x6e\x00\x00\x00\x28\x49\x44\x41\x54\x08\x1d\x05\xc1\ \x87\x01\x00\x20\x0c\xc3\x30\xa7\x65\x6f\xf8\xff\x58\x24\x80\x98\ \x00\x08\xb3\x16\x20\x5f\xf7\x06\x7d\x98\xd9\xda\x1c\x49\xd2\xfb\ \x0b\xb7\x00\xb7\x4d\xe4\xc7\xea\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ \x00\x00\x01\x1b\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa0\x47\xd7\x5c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\xad\x49\x44\x41\x54\x28\xcf\x9d\ \x90\x41\x4a\xc4\x40\x10\x45\xdf\x4f\xfe\xb8\xc8\x4e\x74\xe7\x71\ \xd4\x6b\xa8\x17\x08\x78\x03\xef\x90\x6c\x04\xef\xe1\x2a\x82\x2b\ \xcf\x23\x43\x46\x48\xba\xdb\x72\x21\xd9\x4f\xfa\x41\x41\xfd\x82\ \x47\x51\xa5\x61\x18\xbe\xba\xae\xbb\xe1\x9f\x90\x14\x5b\xbf\xe5\ \x88\x6d\x44\xac\xeb\x7a\x4c\x29\xbd\xf6\x7d\xff\xe6\x83\xdd\x3d\ \x3d\x3e\x24\xce\x43\xcb\xb2\x5c\x4e\xd3\xc7\xcb\x38\x8e\x34\x48\ \x2a\x39\x73\x6e\xb9\x6d\x7f\xef\xef\x6e\x97\x83\xfd\x6c\x41\x53\ \x72\x66\x27\x61\xfb\xc2\x08\x95\x9c\xf6\xca\xa8\x51\x6b\xa1\x9a\ \xcd\x10\x60\x40\xa5\xa4\x0a\x37\x30\x75\x37\x43\x04\x16\xa8\x46\ \x8e\x08\x8c\x50\xae\x78\x18\x01\x9e\xe7\xd3\xd5\xfb\xf4\xf9\xbd\ \xd7\x9d\x4f\x3f\xd7\x7f\xf5\x8b\x6a\x66\x34\x31\xed\x59\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\xf0\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x03\x00\x00\x00\x45\x35\x14\x4e\ \x00\x00\x00\x3c\x50\x4c\x54\x45\xf7\xf7\xf7\xff\xff\xff\x90\x90\ \x90\x8b\x8b\x8b\x8e\x8e\x8e\x8b\x8b\x8b\xec\xec\xec\x90\x90\x90\ \xc3\xc3\xc3\xde\xde\xde\xf0\xf0\xf0\xa0\xa0\xa0\xed\xed\xed\x90\ \x90\x90\xc2\xc2\xc2\x8f\x8f\x8f\xdc\xdc\xdc\x90\x90\x90\x8c\x8c\ \x8c\x8c\x8c\x8c\x20\x9b\x87\x59\x00\x00\x00\x14\x74\x52\x4e\x53\ \xc8\x00\xf0\x33\x87\x04\xcc\x9f\xde\xd2\xcb\xe7\xcc\xda\xdf\xa6\ \xd3\xdd\xf9\xfa\x54\x29\x6f\x66\x00\x00\x00\x4f\x49\x44\x41\x54\ \x78\x5e\x55\x8e\x59\x0a\x80\x30\x10\x43\x93\x99\x69\xab\xdd\xb5\ \xf7\xbf\xab\x88\x58\x98\xf7\x17\x42\x16\x90\xd4\xd4\xee\x96\x94\ \x24\x18\x4c\x8e\x33\x9f\x87\x58\x20\x68\xa5\xe2\xa5\x16\x23\x54\ \x22\x3e\xa2\x28\x46\xc7\x4f\x1f\xb8\xe6\x56\xf3\xc2\xca\x5b\xe5\ \xe5\x3d\x9f\xf3\x9d\x7e\xcf\x7f\xf1\x3f\x1f\x07\x1b\x02\xe3\x87\ \x82\x10\xf0\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\xec\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x72\xeb\xe4\x7c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x01\x7e\x49\x44\x41\x54\x28\x53\x7d\ \x92\xcb\x4e\xc2\x60\x10\x85\x89\xbc\x8b\x21\x26\xbe\x95\x6e\x25\ \x6e\x58\xb9\xe4\x25\x34\xd1\x1a\x2c\x15\x85\x52\xae\x01\x1b\xca\ \x55\xd3\x16\xe4\xd6\x16\x90\x08\x26\xb0\x68\xa9\xa2\x5b\x96\x78\ \xa6\xa1\xa4\x1a\xc2\xe2\xa4\xed\xdf\xf3\x75\x66\xce\xd4\xb7\x5e\ \xaf\x7d\xae\x18\x86\x09\x40\x61\x28\x05\x75\x36\x57\x7a\x0e\x78\ \x7d\xae\xd9\x0f\x05\x21\x83\x8b\x46\x75\x3e\x91\x18\x65\xd2\xe9\ \x49\x4a\x10\x8c\x87\x58\xac\x75\x17\x89\xc8\x9b\xf7\x7e\x2f\x74\ \x7e\xcb\x30\x03\x21\x99\xfc\x90\x4a\xa5\x1f\x45\x96\x2d\xad\xd7\ \x9b\xb5\x54\xd5\x6c\xd4\x6a\xcb\x42\x3e\x3f\x8c\xb2\x6c\x03\x9e\ \xa0\x03\x01\x38\xa6\x0a\x04\x34\xea\xf5\x2f\xd3\x34\xf5\xd5\x6a\ \xa5\xb8\xb2\x17\x8b\xfe\x6b\xb3\x69\x89\xc5\xa2\x0e\xb0\x42\x7e\ \x82\xc2\xd4\x12\x55\xb0\x4c\x53\xf3\x02\xae\x3e\x6d\xbb\xaf\xca\ \xb2\x2d\xf0\x7c\x05\xad\x5e\x10\x94\x4a\xf2\xfc\x1b\x0e\xad\x5d\ \x80\x2b\x43\xd3\xe6\xa8\x26\x73\x2c\x7b\x4d\x50\x27\x9b\xc9\x4c\ \x69\x86\x7d\xd0\x64\x3c\x9e\x56\xcb\xe5\xee\x3d\xc7\x65\x9d\x4a\ \x48\x69\x40\x43\xef\x83\x46\x86\x31\x93\x44\xf1\x19\xd0\xa5\x33\ \xd3\x23\x62\xa5\x94\x68\xe8\x5d\xc0\xf7\x72\xd9\xeb\xb6\xdb\x66\ \x2e\x9d\xce\xa3\xbd\x90\x93\x1e\x86\x53\x28\x56\x4a\x89\x86\xfe\ \x0f\x0c\x74\x7d\x5e\xaf\x56\x55\x7c\x5c\x80\xf7\x68\xbb\x27\xda\ \x03\xc5\x4a\x29\xe9\xfd\xfe\xfc\x1d\x33\x0c\xd1\x12\x55\x00\xa0\ \xf0\xf1\x78\x12\x9e\xd3\x3f\x7f\x04\x16\x77\x86\xc3\x32\x62\x2d\ \x3f\x15\x0a\x2f\x15\x49\x6a\x97\x44\xb1\x86\x96\x72\xa8\x40\xc0\ \x09\x3c\x07\x5b\xc8\xfb\xef\xd1\x1e\x60\xb8\xc1\xc0\x39\xe8\x0a\ \xf7\x21\x9c\x1d\x7a\x7d\xbf\xa2\x4e\xfc\xbe\x25\x1e\x24\xce\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\x81\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x10\x00\x00\x00\x10\x01\x03\x00\x00\x00\x25\x3d\x6d\x22\ \x00\x00\x00\x06\x50\x4c\x54\x45\x00\x00\x00\xae\xae\xae\x77\x6b\ \xd6\x2d\x00\x00\x00\x01\x74\x52\x4e\x53\x00\x40\xe6\xd8\x66\x00\ \x00\x00\x29\x49\x44\x41\x54\x78\x5e\x05\xc0\xb1\x0d\x00\x20\x08\ \x04\xc0\xc3\x58\xd8\xfe\x0a\xcc\xc2\x70\x8c\x6d\x28\x0e\x97\x47\ \x68\x86\x55\x71\xda\x1d\x6f\x25\xba\xcd\xd8\xfd\x35\x0a\x04\x1b\ \xd6\xd9\x1a\x92\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \ \x00\x00\x01\xa9\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x72\xeb\xe4\x7c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x01\x3b\x49\x44\x41\x54\x28\x91\x63\ \x98\x35\x6b\x56\x05\x10\xff\x20\x01\x57\x30\x00\x89\xff\xa4\x62\ \xb8\xa6\xb5\xab\x56\x2d\xdd\xb8\x6e\xdd\xd4\xcd\x1b\x36\xf4\x6c\ \xdd\xb4\xa9\x79\xfb\xe6\xcd\x55\x3b\xb7\x6e\x2d\xdc\xbd\x6d\x5b\ \xc6\x9e\xed\xdb\xe3\x76\x6c\xde\x1c\x8f\xa1\x69\xd3\x86\x0d\x13\ \x80\x8a\xea\xf7\xec\xd8\x51\x7a\x60\xd7\xae\xec\xc3\x7b\xf7\x26\ \x1e\x3b\x70\x20\x7c\xd7\xd6\xad\x91\x53\x26\x4d\x9a\xb8\x79\xdd\ \xba\x40\x0c\x4d\xdb\x36\x6e\x6c\xdb\xbb\x63\x47\xc9\x81\xdd\xbb\ \xb3\x80\x1a\x12\x80\x1a\xc2\x0e\xec\xdc\x19\xd4\xde\xd6\x76\xa3\ \xb1\xb1\xf1\x7f\x5f\x6f\xef\x14\x0c\x4d\x3b\xb6\x6c\xa9\x01\x6a\ \xc8\x04\x6a\x88\x07\x6a\x08\xbd\x7a\xf1\x62\xd2\xe4\x49\x93\x6e\ \x82\x34\x00\xf1\x9b\xa5\x8b\x16\x79\x60\x68\x9a\x3f\x67\xce\x8c\ \x96\x96\x96\x37\xeb\xd7\xae\x5d\xfc\xfe\xed\xdb\xa9\x8b\x17\x2d\ \xba\x05\xd5\xf0\x75\xde\xec\xd9\xbe\x07\x77\xef\xd6\xc6\xd0\x34\ \x63\xda\xb4\x85\x20\x45\xcd\xcd\xcd\xbf\x17\x2d\x5a\x04\xb3\xe1\ \xcf\xd4\xc9\x93\x13\x6e\x9c\x3f\x2f\x8b\x55\xd3\xfe\x5d\xbb\x62\ \xbb\x3a\x3b\x8f\x40\x15\xff\x87\xfa\xa3\x0c\xa4\x01\xa7\x26\xa0\ \x60\xf0\xc1\x5d\xbb\xdc\x81\x36\x3d\x00\x69\xe8\xec\xe8\x98\x00\ \xd3\x80\x53\x13\x30\x5e\x22\x81\xa1\xe7\xba\x69\xdd\x3a\xd7\xe9\ \x53\xa7\x26\x02\x83\xda\x08\x19\x03\xc5\xed\x31\x34\x91\x9a\x22\ \x48\x4e\x7b\x00\xb1\x3d\xbe\x78\xa0\x57\xd0\xf5\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\x9f\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x04\x00\x00\x00\xd8\xe2\x2c\xf7\ \x00\x00\x00\x02\x73\x42\x49\x54\x08\x08\x55\xec\x46\x04\x00\x00\ \x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x77\ \x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x9b\ \xee\x3c\x1a\x00\x00\x00\x33\x49\x44\x41\x54\x18\xd3\x63\x68\xac\ \x68\xfc\x81\x15\x56\x30\x34\xfe\xc7\x05\xc1\x52\xf7\x26\xbf\xec\ \x41\x86\xf7\x26\xc3\xa5\x3e\x74\xfc\x6f\x40\x86\x1f\x3a\x86\x90\ \x14\x1e\x7f\xe1\x0a\x0d\x9c\x61\x08\x00\xf5\x8f\xf9\x54\xcd\x1d\ \xdf\x00\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x12\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa0\x47\xd7\x5c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\xa4\x49\x44\x41\x54\x28\xcf\x9d\ \x90\x21\x0e\xc2\x40\x10\x45\xff\x4c\x26\x2b\x10\x90\x10\x04\x86\ \x5e\xa0\xc8\x9e\x8a\x0b\x70\x10\x3c\xc7\x41\x74\x35\x07\x58\x85\ \x42\x50\x30\x4d\x77\x67\x10\x85\x84\xd4\xb0\xdb\xe7\xfe\x4f\x7e\ \x5e\xf2\xa9\x6d\xdb\x8b\x73\x6e\x8b\xff\x98\x99\xa9\xaa\xbe\x54\ \xf5\xdc\x34\xcd\x49\x98\x79\xb1\xaf\x6b\x45\x1e\x94\x52\x5a\x85\ \x10\x8e\xde\x7b\x93\xb1\x88\x28\x40\xab\x6a\xd7\x77\xd7\xe7\x41\ \x00\x70\x8a\x03\x0a\x31\x26\x72\xa3\x39\xe6\x98\x69\x09\x82\xfb\ \x26\x11\x21\x01\x8c\x32\xcd\xdd\x6f\x88\x71\x60\x81\x81\xf3\xcc\ \xd3\xeb\x81\x12\xf3\x74\x8e\xcf\x61\x73\xcc\x06\x81\xcd\x34\x9b\ \x41\x86\xa4\xeb\xdb\xbd\x7b\x94\x6e\xa3\xea\xe6\x0d\x9b\x62\x55\ \x2d\xe3\x08\x6f\xa2\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ \x00\x00\x02\x0d\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x13\x08\x06\x00\x00\x00\xd6\x3a\x8e\x1f\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x01\x9f\x49\x44\x41\x54\x48\xc7\xd5\ \x57\xcd\x4a\xc3\x40\x18\xdc\x4d\xd6\x5a\x2a\xfd\xc1\x9f\x46\x85\ \x5a\x29\x88\xf4\x09\x4c\x3d\xa9\x27\xc1\x5e\x7c\x94\x4a\xf1\x05\ \x3c\x5a\xf0\xd6\x9b\x3e\x81\x98\x07\x28\xe6\x50\x7a\xb2\x97\x2a\ \x5e\xa5\xb7\xaa\x87\xd8\x54\x48\x4c\x62\xf2\xad\xdf\xd2\xd8\xf6\ \x11\xb2\x13\x16\xf6\xcb\x69\x66\x67\x06\x76\x29\xe7\x9c\xb4\x5a\ \xad\x12\xa5\xf4\x06\xd7\x31\x00\xac\x92\xe4\x82\x2b\x8a\xf2\x86\ \x1c\x6f\x71\x7f\xdd\x6c\x36\x23\x86\xe4\x77\x91\xf8\x73\x3e\x9f\ \x67\xba\xae\x07\x9a\xa6\x39\x09\x16\x40\x86\xc3\xa1\xd6\xeb\xf5\ \xae\xf0\xe0\x0f\x70\x3c\xa7\x28\xc0\xa8\x54\x2a\xa7\xf5\x7a\x7d\ \xc4\x10\xf8\x73\x59\xb8\x92\x60\x78\x28\x62\xc9\x30\x8c\x2d\xdc\ \x9f\x31\x4a\xc9\x51\xad\x56\xe3\x8c\xa9\x2a\x40\x14\x22\xf9\x88\ \x24\x1c\xe5\xf2\x8e\x5f\x28\x14\x5c\xdb\xb6\x4f\x18\x00\x2f\xa4\ \xd3\xe9\x9f\x28\x02\x21\x00\x88\x24\xc8\xe5\xb2\xdc\xb2\xac\x4d\ \x36\x6b\x07\x44\x94\x83\x34\xfc\x91\x30\x21\x58\x66\x85\xfd\x4f\ \x1c\xc4\x02\x99\xf8\x0b\x50\x36\x53\x23\x3e\x2e\x91\x03\xb1\x04\ \x16\x9f\xbf\xf0\x83\xc8\x15\xa1\x05\x01\x53\xfe\x5c\x64\x4a\x36\ \xfe\x64\x5e\x62\x8c\x10\x97\x39\x42\x92\x96\x78\x1e\x21\x41\x1e\ \xa4\xed\xc0\xb4\xc6\x92\x45\x28\x76\x00\x2f\x72\x4e\x18\x86\xaa\ \x4a\x55\xa9\x22\xe4\x38\xae\x48\xcc\xb7\x70\xe0\x69\x34\x7a\x3f\ \x2c\x6d\x17\xc3\x84\x5f\xe2\x66\xb0\xbe\xc6\x29\x7b\x32\xc9\x78\ \x9e\xd7\x67\x48\xfa\xe2\xd1\x34\xfb\xc5\xe2\xc6\x5a\x75\x7f\xcf\ \x59\xc9\x64\xc2\xe4\xc6\x1e\xa8\x65\x8d\x53\x83\x97\xd7\x2c\xf2\ \x1e\xb4\xdb\xed\x7b\x1a\x3f\x68\x74\x8c\xd2\x1d\xee\xab\x12\x18\ \xf0\x8b\x91\x7f\x30\x4d\xf3\xb2\xd3\xe9\x7c\xd2\xc5\xd8\x34\x1a\ \x8d\x75\xd7\x75\xb5\x20\x08\xd4\x64\x3a\xc0\x79\xb7\xdb\xfd\xc0\ \xf7\x80\x8f\xa3\x8f\xa3\xff\x07\x2d\x6a\xf7\xea\xcc\x13\x18\xa8\ \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x15\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa0\x47\xd7\x5c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\xa7\x49\x44\x41\x54\x28\xcf\x9d\ \x90\x41\x0a\xc2\x40\x0c\x45\xff\x1f\x13\x17\xb3\x13\xdd\x79\x1f\ \xbd\x86\x3d\x40\xc1\x1b\x78\x87\x76\x23\x78\x04\x41\x70\x5d\xd7\ \x9e\x47\xc7\xd5\xb4\x98\xb8\x90\xd9\xb7\x7d\x10\x48\x02\x9f\xff\ \x13\x36\x4d\xf3\x8c\x31\x6e\xf1\xc7\x49\x7a\xe9\xcb\xec\x5e\x56\ \xf0\xbe\xef\xd3\x30\x0c\xe7\xba\xae\x2f\xa2\xaa\xb1\xaa\x0e\x03\ \xc6\xc1\x9c\xf3\xaa\xeb\x1e\xa7\xb6\x6d\x11\x00\xd0\xcc\x30\xb6\ \x54\xd5\xf6\xfb\x5d\x56\xd5\xa3\x90\x0c\x6e\x86\x29\x04\xd2\x45\ \x64\x29\x24\x68\xf6\xc5\x54\x42\x08\x0b\x21\xa6\x3b\x97\x7f\x0a\ \x48\xda\x1c\xb1\x03\x42\x60\xa6\x33\x20\x98\x79\xb3\xc3\x21\x24\ \xe9\x73\x63\xa7\xf4\x59\x5f\x6f\xf7\xd7\x54\xed\x3b\xa5\xcd\x0f\ \xda\x7f\x66\xb0\xc9\x65\xf3\x61\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ \x00\x00\x00\xf9\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa0\x47\xd7\x5c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\x8b\x49\x44\x41\x54\x28\x91\x9d\ \xd0\x31\x12\x82\x30\x14\x84\xe1\xe5\x15\xe6\x2e\xd2\xcb\x19\xed\ \x1d\xcf\x04\x1d\x27\xb0\xa6\x20\x38\x50\xe8\x4c\x12\xde\x6f\xa3\ \xbd\xa1\xf8\xca\x9d\xdd\x59\x1b\x86\x21\x8e\xe3\xf8\xa8\xd5\xf7\ \xfd\x66\x21\x9c\x96\xb6\x3d\x7b\xad\x10\xc2\x6c\x38\xec\xa5\xa8\ \x96\x24\x19\xe0\x7b\xc9\xaa\x05\xc8\xe0\x60\x33\xc8\x10\x7e\x24\ \x8c\x7e\xcd\x7b\x56\x2d\x21\x99\xd0\xa1\xd9\xe0\xfe\x3d\xac\x2e\ \x58\x72\x6e\xdc\x49\x86\xa0\xe6\xe5\x9c\x92\xcd\xcf\x35\x00\x77\ \x03\x5e\x53\xdc\xec\x0f\xcd\x14\x57\xa6\x65\x5b\xdf\x29\x5f\x2f\ \x5d\x77\xfb\x00\x6e\x37\xd5\xb0\x67\xb7\x7c\x1f\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x06\x09\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x32\x00\x00\x00\x2d\x08\x06\x00\x00\x00\xec\xbf\x38\xff\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x05\x9b\x49\x44\x41\x54\x68\xde\xd5\ \x99\x4b\x4c\x63\x55\x18\xc7\x31\x63\x9c\x48\x4c\x34\xce\xca\xc4\ \xc4\x85\x0b\x17\x6a\x8c\xc6\xa8\x1b\x63\x62\x66\xa5\x9b\x89\x3b\ \x17\x46\x63\x8c\x2b\xc7\x07\xa3\xf3\xd0\x4c\xcc\x18\x1d\xc6\x30\ \x99\x90\xcc\x42\x98\x41\x23\x03\x03\x41\x79\xb6\x85\x96\xbe\x5f\ \xb4\x94\x47\x5b\xca\xa3\x40\x5b\x28\x2d\xa5\x14\x28\xef\x77\x29\ \xc7\xff\xd7\xf4\x34\x37\x04\x98\x0a\xb7\xd0\xbb\xf8\x2f\xda\x45\ \xcf\xf9\xf5\x7c\xdf\xef\x9c\x7b\x6e\x41\x75\x4d\xdd\x1d\xcf\x48\ \xf4\x72\x38\xce\x3e\x95\x70\x9e\x28\x68\x6d\x6d\x7d\xb6\xf2\x41\ \x55\x77\x47\xf7\x60\x25\xbe\xf8\x56\xa2\x39\x5b\xc0\x18\x2b\xe8\ \xe8\xe8\x78\xa5\xb1\xb1\xd1\xa5\x35\x58\x0d\xbe\xc9\xd5\x1f\x25\ \x0b\x92\x86\x79\x5b\xad\x56\x7b\x8d\x26\x8b\xbf\xdb\x33\x76\x57\ \xb2\x20\x14\x93\xc9\xf4\xae\x4e\xa7\x0b\xf6\xf6\xf6\xae\x1b\xcc\ \x0e\x79\x30\x96\xf8\x5e\x92\x20\x14\x83\xc1\x70\xde\x68\x34\x46\ \x46\x47\x47\x99\x56\x6f\x72\xf7\x0d\x4f\x15\x4b\x12\x84\xa2\xd7\ \xeb\x3f\x34\x9b\xcd\x51\xbf\xdf\xcf\xec\xf6\xce\xb8\xd9\xe6\x7c\ \x18\x9a\xdb\xfd\x4e\x72\x20\x14\x94\xd8\x47\x56\xab\x35\x16\x08\ \x04\xd8\xe0\xe0\xe0\xae\x5a\x6b\xb4\x78\x83\x0b\xd7\x25\x07\x42\ \x91\xcb\xe5\x5f\x51\xbf\x10\x8c\xcf\xe7\x63\x26\x93\x39\x64\xef\ \xf1\x96\x49\x0e\x84\x22\x93\xc9\x5a\xc6\xc6\xc6\x18\x85\x60\x5c\ \x2e\xd7\xb6\x46\x6f\x51\x05\xa6\x36\x2e\x4b\x0a\xa4\xae\xae\xae\ \x50\xab\xd5\x06\x26\x26\x26\x52\x30\xd4\x37\xc3\xc3\xc3\x4c\xab\ \x33\x0c\xf5\xf6\x07\x4b\x24\x03\x42\xa9\xaf\xaf\xff\x00\x2b\xb1\ \x4a\x30\xe3\xe3\xe3\x29\x98\x91\x91\x11\xd6\xd9\xd9\xb9\xac\x33\ \x75\xfe\x33\x31\xbb\x53\x24\x09\x90\x74\x89\x55\x10\x48\x28\x14\ \x4a\xc1\x50\xdf\x90\xa2\x07\x06\x06\x98\x4a\xad\x73\xf4\xfb\x62\ \x37\x24\x01\x52\x52\x52\x72\x06\x5a\xee\x8f\x44\x22\x2c\x1c\x0e\ \xb3\x60\x30\xc8\xb8\x04\xa8\xd4\xcc\x66\xcb\xb4\xc9\xe6\xaa\xc8\ \x7b\x10\x4a\x4d\x4d\xcd\x9b\x7d\x7d\x7d\x8b\x53\x53\x53\x19\x18\ \x2e\x01\x82\x71\xbb\xdd\x49\xa5\x5a\xaf\x1b\x09\x2d\x5f\xc9\x6b\ \x10\x4a\x4b\x4b\x4b\x31\x41\x70\x18\x2e\x01\x82\xa1\xbe\x19\x1a\ \x1a\x82\x08\xf4\x7e\x7b\xef\xf0\x9d\xbc\x06\xa1\x12\xb3\x58\x2c\ \x23\xb1\x58\x8c\x45\xa3\x51\x36\x39\x39\xc9\xf6\x4a\xc0\xeb\xf5\ \x32\x87\xc3\xb1\xa1\xd2\x18\x9b\xc6\x63\xdb\x45\x79\x09\x92\xb6\ \xd8\x35\x02\x99\x99\x99\x49\xc1\x50\xdf\xec\x95\x00\xc1\x78\x3c\ \x1e\xa6\x54\xa9\x5d\xce\xc1\xd0\xaf\x79\x09\x82\x55\x39\x0b\xf5\ \xfa\xe2\xf1\x78\x0a\x66\x7a\x7a\x3a\x03\xc3\x25\x40\x30\xd4\x37\ \x38\xde\x30\xac\x60\x5c\x6b\xb4\xff\x9d\xc3\xf3\xda\xd1\x40\x28\ \x4d\x4d\x4d\xbf\xcc\xcf\xcf\x33\xca\xec\xec\x6c\x06\x66\x3f\xa3\ \x11\x0c\xf6\xa1\xdd\xd6\xb6\x76\xf3\xe0\xd8\xdc\xb5\xbc\x02\xc1\ \xaa\x3c\x85\xc9\x8d\x2f\x2d\x2d\x65\x60\xa8\xdc\x0e\x93\x40\x7f\ \x7f\x3f\xd3\x6a\x75\x21\x68\xfa\x6e\xde\x80\x50\x14\x0a\xc5\xed\ \x95\x95\x15\x46\x30\x0b\x0b\x0b\x6c\x6e\x6e\x8e\x1d\x26\x01\x82\ \xa1\x0d\x14\x22\x48\x28\xda\xd4\x0a\x7f\x64\xbd\x28\x2f\x40\x4a\ \x4b\x4b\xcf\xa1\x6c\x42\xab\xab\xab\x6c\x79\x79\x39\x03\xc3\x25\ \x40\x30\x5c\x02\x04\xc3\x25\x40\x30\xd8\x8f\x20\x82\xf6\xa1\x4e\ \xd7\xe8\xcd\x53\x07\xa1\x68\x34\x9a\xfb\x9b\x9b\x9b\x6c\x6d\x6d\ \x2d\x05\xb3\xb8\xb8\xc8\xb8\x04\x0e\x33\x1a\xf5\x0d\x59\x0d\x22\ \x58\x51\xaa\x8d\x35\xc1\x99\x9d\xd3\x05\xa9\xaa\xaa\xba\x80\x95\ \x48\x12\xcc\xfa\xfa\x3a\xa3\x52\xe3\x30\xd9\x48\x80\x60\x9c\x4e\ \x27\x93\x2b\xda\xec\x6e\x6f\xe4\xa7\x53\x03\xa1\x0d\x12\x65\xe2\ \x4d\x24\x12\x6c\x6b\x6b\x2b\x03\x93\x8d\x04\x08\x86\x4b\x00\xc7\ \x1b\x86\xa7\xd2\x69\x8d\xc1\xf6\x07\x26\xf6\xcd\x89\x83\x50\x70\ \x59\x51\xb9\xbb\xbb\xcb\x76\x76\x76\x32\x30\xd4\x37\x1c\x86\x4b\ \x80\x60\xb8\x04\xf8\xb3\x8d\x50\x02\xd4\x37\x10\x41\x52\x06\x13\ \xe0\xb1\xfa\xd2\x89\x83\xd4\xd6\xd6\x7e\x42\x93\xe7\x30\xdb\xdb\ \xdb\x6c\x63\x63\x83\xed\x95\xc0\xa3\x8e\x35\x1c\x06\x5a\x67\x4a\ \xa5\x32\x60\xb6\xbb\x7f\x3f\x51\x10\xda\xe9\x31\x89\x00\x81\x50\ \x92\xc9\x64\x0a\x46\x28\x01\x82\xc9\x46\x02\x04\x43\x7d\x43\x30\ \x10\xc1\xa6\x4c\xa1\xfa\x77\x2c\xba\xf9\xf5\x89\x80\x50\x70\x7d\ \x54\xc7\x41\x38\x0c\xf5\x0d\x87\x39\x8a\x04\xa8\x6f\x7a\x7a\x7a\ \x98\x4c\xae\x70\x76\xb9\xfd\xd7\x4f\x04\x04\x77\xc7\x57\x68\xf2\ \x42\x18\x0a\x87\x11\x1a\x4d\x78\xac\x39\xe8\xd9\x46\x28\x01\xb2\ \x1a\x1e\xea\x16\x5a\x55\xfa\x3f\x43\xb3\xc9\x8b\x39\x05\x29\x2b\ \x2b\x7b\x1d\x7d\x90\xd8\x0b\x72\x98\x04\xb2\x3d\xd6\x50\xdf\x10\ \x0c\x0e\xaa\xac\xb9\x45\x66\xf4\x8c\x4e\x5f\xca\x19\x08\x69\x58\ \xd8\x27\xfb\xc1\x1c\x45\x02\x42\xa3\x11\x0c\x95\x9a\x4a\xa5\x0a\ \x43\xd3\xb7\x05\x9a\x16\x0f\x84\xd2\xd5\xd5\xa5\x39\x08\x44\x28\ \x01\x82\x39\x8e\x04\x08\x06\xb7\xa0\x89\xc6\x66\xb9\x6c\x34\xbc\ \x72\x51\x74\x10\x5c\x80\x97\x1d\x06\x72\x90\xd1\x84\xc7\x1a\xea\ \x1b\x9a\xbc\xcd\x66\x5b\xc6\xef\x05\x71\x04\x72\xe1\x75\x87\xa3\ \xbd\xbd\xdd\x8e\x95\xb0\x41\xcb\xd6\xb6\xb6\x36\x33\x5e\x50\x99\ \x9a\x9b\x9b\x95\xf7\xee\xdd\x6f\xaa\xf8\xeb\x41\xa1\xa8\x20\x0d\ \x0d\x0d\x45\xfb\x35\xfc\x7e\xd9\x2b\x01\xfc\xfb\xdb\x98\x7c\x10\ \x97\x81\x56\x6c\xb0\xd5\x58\x81\x5b\x28\xad\xdf\x90\x22\xe4\x02\ \xf2\x1a\xf2\x22\xf2\x02\xf2\x3c\xf2\x5c\x3a\xf4\xdd\x63\xa2\x82\ \x94\x97\x97\xbf\x43\xff\x6e\x36\x20\x14\xac\x46\x12\x75\x1f\xc5\ \x7b\x19\x07\x20\x2a\xd2\x13\xa7\x5c\x45\xde\x47\x9e\xc9\x76\x6c\ \x51\x41\xd0\xf0\xe7\xa0\xd1\x85\x47\x01\x90\xc1\x70\x39\x1e\xc1\ \x3f\x2f\x47\xfd\xdf\x14\x00\x7c\x89\xbc\x8a\x9c\xf9\xbf\x63\x8b\ \x0a\x42\x41\x49\xf8\x0f\x33\x17\x1a\x36\x8e\xda\x37\xc0\x46\xc5\ \x02\x00\x2a\x9f\x97\x8e\x33\xae\xe8\x20\xb0\x8a\x7d\x3f\x08\xf4\ \x00\x35\x6f\x17\x40\x4a\x04\x00\x3f\x23\xef\x21\x8f\x1f\x77\x5c\ \xd1\x41\xa0\x60\xc5\xde\xa6\xee\xee\xee\x0e\xe1\xfb\x32\x01\x00\ \xe5\x63\xe4\x69\xb1\xc6\x15\x1d\x04\x4d\xfb\x90\x43\x60\xf7\xde\ \x44\x23\xbb\x70\x76\xba\x25\x00\xb8\x81\xbc\x25\xf6\xb8\xa2\x83\ \xa0\x81\x53\x7b\x09\x76\xe6\x09\x5c\xaf\x7e\x91\x2e\x1f\x0e\xf1\ \x03\xa9\x53\xec\x31\x73\x02\x82\x9b\x95\xab\x58\x15\x6b\x75\x75\ \xf5\xcb\xf4\x19\x13\xff\x3c\x0d\xf1\x19\x52\x98\x0b\x88\x9c\x80\ \x40\xc1\x4f\xd2\xf3\x09\xff\x8c\xc9\xbf\x81\x9c\xa7\x4d\x2b\x57\ \x10\x94\xff\x00\x0c\x72\x2c\xb1\x4c\xc9\xc1\xa9\x00\x00\x00\x00\ \x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x63\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x03\x00\x00\x00\x45\x35\x14\x4e\ \x00\x00\x00\x7b\x50\x4c\x54\x45\xff\xff\xff\x8b\x8b\x8b\x8b\x8b\ \x8b\x8e\x8e\x8e\x90\x90\x90\x8f\x8f\x8f\xf7\xf7\xf7\xf4\xf3\xf3\ \xf0\xf0\xf0\xf2\xf1\xf1\xec\xec\xec\xed\xed\xed\xef\xed\xed\xeb\ \xe8\xe8\xde\xde\xde\xdc\xdc\xdc\xe3\xe1\xe1\xe1\xdd\xdd\x90\x90\ \x90\xdf\xda\xda\xde\xd9\xd9\x90\x90\x90\xc3\xc3\xc3\xda\xd4\xd4\ \xc2\xc2\xc2\xd4\xcf\xcf\xd2\xcb\xcb\xd0\xc8\xc8\xa0\xa0\xa0\xc9\ \xc2\xc2\x90\x90\x90\xc3\xbb\xbb\xc1\xb7\xb7\xc1\xb8\xb8\xc1\xb7\ \xb7\x8c\x8c\x8c\xc1\xb8\xb8\x8c\x8c\x8c\xc2\xb8\xb8\xc2\xb9\xb9\ \xc3\xba\xba\xd5\x0f\x4f\x7d\x00\x00\x00\x29\x74\x52\x4e\x53\x00\ \x04\x33\x87\x9f\xa6\xc8\xca\xcb\xcb\xcc\xcc\xcd\xd1\xd2\xd3\xd5\ \xd8\xda\xda\xdb\xdd\xde\xde\xdf\xe2\xe4\xe6\xe7\xec\xf0\xf2\xf5\ \xf6\xf7\xf9\xf9\xfa\xfa\xfa\xfd\x3e\x2b\x06\xf8\x00\x00\x00\x6e\ \x49\x44\x41\x54\x08\x5b\x5d\x8e\x41\x02\xc1\x30\x00\x04\xb7\x49\ \x33\xa2\xa5\xa1\xa4\x82\x0a\x45\xf1\xff\x17\x3a\xf4\xa2\xe6\xbe\ \xb3\x23\x49\xa6\x6c\x1f\x6d\x69\x24\x49\x85\xcd\x5d\xe3\x9b\x2e\ \xdb\x42\x92\xed\x6b\x00\xea\xde\x4a\x26\x57\x4c\x54\xd9\xc8\x25\ \x60\xb5\x59\x02\xc9\x29\x06\xd8\xde\x86\xeb\x1a\x42\xd4\xe8\xe1\ \xf2\xfe\x3c\x8f\xe0\x47\xc5\x00\xa7\xfb\x6b\xd8\x43\x88\x72\x09\ \x16\x87\xf3\x6e\xda\xcd\x9d\xf3\xbf\xbf\x96\xdf\xce\x2f\xbf\x0b\ \x07\xc6\xa9\xa3\x54\xf8\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ \x00\x00\x02\x15\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x13\x08\x06\x00\x00\x00\xd6\x3a\x8e\x1f\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x01\xa7\x49\x44\x41\x54\x48\xc7\xd5\ \x97\xbf\x8e\x52\x41\x14\xc6\xbf\x19\x66\xff\x68\x24\x5c\xcd\x6e\ \xae\xc6\xec\x6a\xec\x6c\x28\x68\xc4\x0e\xed\x8c\x95\x8f\x82\x21\ \xbe\x80\xa5\x37\xb1\xa3\xd3\x27\x30\xf2\x00\x24\x14\x04\xb7\x70\ \x1b\xed\x6c\x70\x2a\x13\x2d\x48\x6e\x40\xae\x17\x98\x73\x3e\x0b\ \x58\x43\x7c\x82\x3b\x5f\x37\xdd\xf9\xe5\x77\xce\xc9\x19\x43\x12\ \x59\x96\x9d\x19\x63\xde\x1a\x63\x9e\xa8\xea\x2d\x54\x37\xb4\xd6\ \x4e\x55\xf5\x1d\x80\x37\xbd\x5e\x4f\x5c\x96\x65\xf7\x8d\x31\x5f\ \x1b\x8d\x86\x6b\xb7\xdb\xeb\x34\x4d\x97\x15\x06\x80\xf7\x3e\x9d\ \x4c\x26\xaf\x49\x3e\x02\xf0\xc2\x64\x59\x36\x68\x36\x9b\xcf\x3a\ \x9d\xce\x0f\xe7\x9c\x03\x70\x44\xb2\xca\x0c\xa5\xf7\xfe\x60\x30\ \x18\xdc\x01\xf0\xdc\x59\x6b\x3b\xad\x56\x0b\xb5\x9a\x35\x22\x21\ \x90\x14\x54\x3c\xe7\xe7\x67\xab\x24\x49\x8a\x3c\xcf\x9f\x3a\x6b\ \x6d\x72\xe0\x5c\x19\x36\x9b\x9a\xaa\x56\xbe\xf8\xab\xd4\xeb\x37\ \x38\x9b\xcd\x6e\x3b\x00\x20\x00\x15\x81\xaa\x22\x9a\x10\x50\x55\ \xeb\xb6\x0f\x42\x42\x88\x0a\x60\x37\xa7\x66\x67\x80\x10\x55\xa8\ \x48\x6c\x00\xf8\x67\x80\x1a\xa2\x02\xc0\x3e\x00\x49\x68\x10\x88\ \x84\x58\x0d\x00\xa2\x21\x2e\x00\xe8\x9e\x01\x6c\x0d\x68\x88\x08\ \x40\xff\x6f\xa1\xc8\x0c\x6c\x97\xff\x55\x0b\x81\x10\x89\x74\x06\ \xa8\xba\x94\x20\x4e\x37\x01\x1a\xe2\xd9\x42\xc5\x9f\x12\xaa\x3a\ \x77\xa2\xfa\x79\xfa\xdd\x3f\x3e\xad\x1f\x45\x53\x7d\x3e\x5f\x1c\ \x2e\x7e\x2f\xaf\x97\x65\x79\xe9\x48\xbe\xfc\x74\x71\x71\x79\x72\ \x33\x39\x7d\x70\xef\xee\xf2\xda\xf1\x71\x65\xfb\x48\x95\x26\x9f\ \x2f\x0e\xbf\x4d\x7d\x9d\xe4\x97\x7e\xbf\xff\xc1\xec\x3e\x34\x6d\ \x63\xcc\x7b\x92\x0f\x23\x10\xb0\x09\x21\x7c\x1c\x8d\x46\xaf\x86\ \xc3\xe1\x2f\xb3\x7f\xfb\x77\xbb\xdd\x93\xa2\x28\xd2\xf5\x7a\x5d\ \xab\xe8\xe0\x72\x3c\x1e\xff\xf4\xde\xaf\x00\xac\x48\xae\xfe\x02\ \x9e\xc5\x10\x4d\x61\xbe\x76\xec\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ \x00\x00\x02\x14\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x72\xeb\xe4\x7c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x01\xa6\x49\x44\x41\x54\x28\x53\x7d\ \x52\xcb\x4e\xc2\x50\x14\x34\xf2\x2f\xc6\x98\xf8\x57\xba\xd5\xb8\ \x71\xe5\xd2\x9f\xd0\x44\x6b\x14\xf0\x01\xa5\x94\x47\x80\x86\x16\ \x28\x9a\xb6\x2a\xcf\x16\x1f\x11\x4c\x80\x58\x04\xd1\x9d\x69\x5c\ \x18\x9c\x21\x62\x6a\x62\x5c\x9c\x9c\x9e\x73\x67\x7a\xce\xcc\xbd\ \x73\x93\xc9\x64\x6e\x16\x82\x20\x2c\x22\xb6\x11\x71\x44\xf5\x3b\ \xb3\x5e\xf4\xe3\x66\xe0\x00\x62\x1d\xe1\x84\x43\x21\x5b\x8c\x46\ \x6f\x13\xb2\xdc\x8e\x4b\x92\x73\x7a\x72\x72\x75\x74\x78\x68\x7c\ \x9f\x07\xfc\xa4\x8d\x03\x41\x68\x49\xb1\xd8\xa3\x9a\xcf\xbf\x99\ \x86\x31\x68\xd6\xeb\xdd\x2b\xcb\x72\xcb\xa5\xd2\x38\x93\x4e\xdf\ \x84\x82\xc1\x32\x30\xeb\x53\x12\x08\xcb\x9c\x40\x42\x59\xd7\x5f\ \x5c\xd7\xb5\x3d\xcf\x33\x67\x31\x7c\x7e\x6e\x5c\x5f\x5e\x0e\x94\ \x6c\xd6\x06\xb1\x40\x3c\x49\xdb\x5c\x89\x13\x06\xae\xdb\x24\xf0\ \x75\x34\xaa\x75\x3b\x9d\x3b\x66\xd6\xa3\xe1\xb0\x61\x19\xc6\x50\ \x12\xc5\x02\x56\xdd\x22\x29\x1e\x13\xc5\x3b\x34\x07\x04\x3c\xf5\ \xfb\x8e\x9e\xcd\xbe\xeb\xb9\x9c\xc7\xcc\x9a\x7d\xa7\xd9\xec\x61\ \x9a\x11\x0e\x06\xf7\x48\xaa\x26\x13\x89\x0e\x35\xf0\xd0\xae\x56\ \xfb\x00\x7f\x94\x15\xe5\x93\x99\x35\xfb\xed\xfb\xfb\x4e\x51\xd3\ \x6a\xc7\xe1\x70\x72\x3a\x09\x2e\xb5\x28\xfa\xbf\x49\xb7\x8e\xd3\ \x55\x15\xe5\x1c\xa4\x9d\xa9\xa6\x33\xd8\x4a\x97\x28\xfa\x2f\x4d\ \xaf\xe3\x71\xbd\x56\xa9\xb8\x29\x59\x4e\x63\xbd\xcd\xa9\x7b\x10\ \x67\xd2\x56\xba\x44\xd1\x7e\xf7\x48\x68\xd9\x76\x4f\x2f\x16\x2d\ \xfc\x5c\x02\x76\xe9\xe7\x9e\x78\x0f\xb4\x95\x2e\xd9\x8d\x46\xef\ \x01\x1a\x6e\xb0\x12\x27\x80\x60\x8a\x91\x48\x0c\x98\xd5\x5f\x2f\ \x02\x17\xb7\x86\xa6\x06\x5b\xb5\x5c\x26\x73\x51\x50\xd5\x4a\x5e\ \x51\x4a\x58\x29\x85\x09\x24\xac\x00\x33\xff\x43\xf2\xbf\x3d\xde\ \x03\x00\xfb\x10\x9c\x42\xec\xe2\x7b\x13\xbd\x05\x3f\xee\x0b\x45\ \x97\xf5\xcf\x14\x60\x2f\x66\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ \x00\x00\x01\x15\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa0\x47\xd7\x5c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\xa7\x49\x44\x41\x54\x28\xcf\xa5\ \x8e\x31\x0a\xc2\x50\x10\x44\xdf\x64\x3f\x0a\x76\xa2\x9d\x37\x10\ \x6c\xec\x2c\x2c\x3d\x8f\xb9\x81\x47\x48\xec\x04\xef\x63\xa1\x82\ \x95\x78\x0d\xb1\x49\x24\xc9\x5f\x0b\xb5\x37\xf1\xc1\xc2\x6c\xf1\ \x98\x51\x9e\x65\x87\x7e\xbf\x37\xe1\x8d\x0b\xfc\x9b\x01\x47\x7a\ \xff\xee\x00\x5e\x37\xcd\xa3\xae\x9b\xdd\x3a\x4d\xf7\xc1\xcc\x06\ \xab\xe5\xa2\xe2\x37\x54\x55\xf5\xf0\x72\xbd\x6d\xb6\x79\x4e\x22\ \xa1\xe8\xce\xaf\x67\xc1\xe2\x7c\x36\x7d\x9a\x59\x1a\x40\x49\x74\ \xda\xa1\xc4\xcd\xac\x17\xf8\x34\xb7\x45\x92\x05\x41\xd2\x45\x06\ \x08\x20\xc5\x48\x47\x59\xdd\x9a\x1d\x27\x08\xe9\x8f\xd9\xa8\xe9\ \xe2\x3a\x84\xa2\x2c\x47\xc7\xd3\xf9\xde\xd6\x2d\x8a\x62\xfc\x02\ \x60\xd2\x60\xc5\x54\xa5\xbb\x5b\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ \x00\x00\x02\x57\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x72\xeb\xe4\x7c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x01\xe9\x49\x44\x41\x54\x28\x53\x4d\ \x92\x3f\x68\x14\x41\x14\xc6\x67\x77\x67\xf7\x92\xe5\x64\xd1\x2b\ \x0c\x18\x72\x9c\x57\xca\x59\x69\x61\x69\x63\x69\x61\x21\x28\x48\ \x8a\x80\x88\x11\x0b\x41\x6c\x2f\xa5\x82\xc4\xc2\x42\xc4\xc6\x2a\ \xa5\x82\x4d\x48\x25\xd8\x25\x75\x0c\x58\x5c\x4c\x10\x74\x2f\x38\ \x6b\xd8\xdb\x9d\xfd\x3b\xcf\xef\x9d\xbb\xe0\xc2\x63\x66\xd8\xef\ \xf7\xde\xf7\xe6\x8d\x24\x22\xd1\x7e\xcf\xc7\xe3\x4b\xae\xeb\xae\ \x3a\x8e\x73\xd5\x18\xd3\xb7\x6d\xfb\xa8\xae\xeb\xbd\xb2\x2c\xdf\ \x3f\x1b\x8f\xf7\x5b\x9d\x6c\xc4\xd0\x39\x4f\x7c\xdf\x5f\x1f\x0c\ \x06\x6e\x10\x04\x39\xf6\x55\x9a\xa6\x7d\xa5\xd4\xc5\xc3\xc9\xe4\ \xd6\x8b\x8d\x8d\x37\x28\xb0\x09\xb8\x9e\x43\x0c\xf4\x7a\xbd\xc7\ \xa3\xd1\x48\xa3\x52\xd6\x66\x5c\xf0\x3c\x75\xb6\xdb\x8d\x9c\x95\ \x95\x78\x72\x7c\x7c\x37\x2b\x0a\xb6\xf5\x52\xb2\x25\xae\xd0\x00\ \xa6\x05\x74\x92\x44\x7a\x36\xe3\x50\x79\x92\xa8\xc0\x75\xbf\x01\ \xba\x07\xfd\xb6\xf4\x3c\xef\xc1\x70\x38\x74\xdb\x0a\xa6\xae\xab\ \x34\x8e\x73\x40\x8b\x59\x9a\x2a\x1d\xc7\x53\x06\x33\x80\xb0\xf5\ \xb9\x14\x62\x55\x5a\x96\x75\x85\x7b\x60\xa0\x2c\x0a\x0d\x80\x20\ \x1e\x62\x6f\xe3\x02\x96\xcb\xaa\x2a\x90\xe0\xa0\x16\x22\xb2\x84\ \x88\x21\xbb\x23\xd1\xdc\x32\xec\xa5\xb9\xd6\x31\x67\x84\x60\xa9\ \xaa\x2a\x49\xc6\x78\x10\xd8\x8e\x94\x17\x2a\x21\xa6\x80\x14\xfd\ \x83\x9e\x72\xa5\x1f\xbf\x4f\x4e\x3a\x0e\x51\xc8\x3d\x64\x80\xf1\ \xf3\xbc\x20\x72\xc9\xb6\x35\x80\x3d\x86\xd0\xac\xc2\x1a\x08\xcb\ \x3a\x94\x98\xc3\xee\x34\x0c\xaf\x9d\xe9\x74\xe6\xde\x19\xac\x89\ \xbe\x7a\xbe\xbf\x84\x59\x1d\x44\x51\xf4\x85\xab\xb0\x3d\xb2\xac\ \xcb\xa8\xb4\x2f\x61\xe5\xed\xcf\x30\xbc\x61\xba\xdd\x3f\x65\x9a\ \x4e\xf3\xa2\x50\x9c\x35\xd1\x3a\x6a\xc4\x2d\xe0\x00\x78\x88\x78\ \x24\x79\xd2\xb8\xc6\x77\xbf\x4e\x4f\x6f\x2e\x12\x6d\x89\xc6\x7f\ \x2b\xe6\x04\x00\x16\x78\x3e\x88\x8f\xac\x97\xcd\x58\x5e\xc1\x92\ \x99\x09\xb1\x66\x0b\xf1\x09\xe7\x5d\xf4\x75\x84\x38\x87\x1e\xae\ \xe3\x7c\x1f\xf1\x01\xf1\x9a\xc5\x73\x88\x9f\x06\x96\x4d\x54\xdc\ \x31\x44\xb7\xb1\x5f\x83\xb8\x8f\xf5\x3b\xf7\x80\x58\xff\xff\xed\ \xfd\x05\x44\x20\x32\xa9\x4e\xde\x14\x18\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x0a\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x04\x00\x00\x00\xd8\xe2\x2c\xf7\ \x00\x00\x00\x02\x73\x42\x49\x54\x08\x08\x55\xec\x46\x04\x00\x00\ \x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x77\ \x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x9b\ \xee\x3c\x1a\x00\x00\x00\x9e\x49\x44\x41\x54\x18\xd3\x63\x98\x55\ \x31\xeb\x07\x56\x58\xc1\x30\xeb\x3f\x2e\x08\x96\x7a\x32\xf9\x6d\ \x0f\x32\x7c\x32\x19\x2e\xf5\xb9\xe3\x7f\x03\x0c\xde\x9b\xb7\xf3\ \xee\x9d\x85\x58\xa4\x9e\x4f\x5f\xff\x73\xed\xff\xd3\x3b\x91\xa4\ \x9e\xce\x00\x4a\x74\x7e\x5c\xbb\xe5\xfb\xda\xff\x3b\xef\xbd\xef\ \x82\x4b\x9d\xda\xbd\xf6\xff\xb1\x7b\x3f\x0e\x6f\xff\xb2\xf6\xff\ \xd6\x17\x5f\xdb\x3f\x77\xc0\xa5\x6e\x2e\x5e\xfb\x17\x28\x08\xd4\ \xb1\xf1\xe3\xbb\xde\xff\x0d\x48\x52\x9f\x3b\xce\xee\x58\xfb\x7f\ \xed\xff\xf5\x3f\x9e\x4f\x03\xd9\x88\x22\xf5\xbf\xe1\xd0\xa9\x0d\ \x5f\xee\x2e\x80\x38\x06\x49\x0a\xe2\xaf\xd7\xbd\x58\xfc\x85\x2b\ \x34\x70\x86\x21\x00\x8c\xe0\x06\x11\x3e\x64\x1f\xfd\x00\x00\x00\ \x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x08\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa0\x47\xd7\x5c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\x9a\x49\x44\x41\x54\x28\xcf\x9d\ \x90\x3b\x0a\x02\x41\x10\x44\x6b\xb4\x11\x76\x35\x11\x3c\x8c\x81\ \x91\x37\xda\x5b\x98\x4c\x2e\x78\x16\x33\x03\x3f\x27\x70\xcf\xe0\ \x2f\x90\x05\x61\xba\xca\xc0\xdd\xdc\x99\x86\x86\x86\xe2\x51\x8f\ \xb6\x18\xe3\x63\x56\x57\x2f\x64\xce\xbb\xeb\x16\x36\xad\xab\xfb\ \x7a\xb5\x0c\xb9\xf0\xfe\x70\xbc\x99\x24\x51\xca\x86\x01\xc0\x24\ \x88\x02\xca\x60\x88\x94\xc6\xb9\xa0\x04\x18\x7e\xda\x28\xd5\x26\ \x59\xaa\x5d\xd8\x4c\xd2\x4d\x00\x73\x61\x92\xc1\xe9\x9f\xbe\xf9\ \x7f\x30\xa5\x34\xba\xb6\xed\xc4\x9d\x1b\x23\xd9\x9d\xce\x97\xf9\ \xf0\xc4\x7e\x11\xc2\x70\x07\x0d\x91\x04\xb9\xfb\xd3\xdd\xb7\x4d\ \xd3\xec\xbe\x3e\x15\x69\x2b\x64\x98\xc7\xc4\x00\x00\x00\x00\x49\ \x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x0c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0f\x00\x00\x00\x0b\x08\x06\x00\x00\x00\xa0\x47\xd7\x5c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\x9e\x49\x44\x41\x54\x28\xcf\x9d\ \x91\x31\x0a\x02\x41\x10\x04\x7b\x74\x30\x5d\x04\xdf\xe7\xfd\x40\ \xbf\x61\x76\xa9\x60\x74\x66\x82\xe0\x1f\x04\x7d\x8d\xba\x46\x82\ \xb7\xb3\xd3\x06\x87\x9a\x68\xb0\xdb\xe1\x40\x51\x14\x23\x6d\xdb\ \xde\x42\x08\x77\xfc\x99\x88\xfc\xbc\xc7\x18\x67\x1a\x42\xb8\x36\ \xcd\x5c\x50\xb8\xae\xdb\x5e\x94\x24\xdd\xbd\x18\x06\x00\x25\x9d\ \x74\xaf\x40\x09\x1d\xc4\x79\x5c\x8c\x12\x50\x3a\xeb\xcd\x4e\xba\ \xd7\xc0\x04\x94\xac\x33\x67\xf7\xfc\x6e\x2e\x03\x73\x16\x4b\xe9\ \x59\x6c\xee\xfb\x7e\x74\x3c\x9d\x27\x66\xb6\x52\x33\x7b\xec\xf6\ \x87\xe9\xa7\x44\xc0\xe1\xe9\xc2\xa1\x0c\xfc\x66\x92\x96\x2c\xa6\ \x94\xd6\x8b\xe5\x72\xf3\x02\x01\x4c\x73\x5c\x4d\x53\x9c\xcf\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x07\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x04\x00\x00\x00\xd8\xe2\x2c\xf7\ \x00\x00\x00\x02\x73\x42\x49\x54\x08\x08\x55\xec\x46\x04\x00\x00\ \x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x77\ \x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x9b\ \xee\x3c\x1a\x00\x00\x00\x9b\x49\x44\x41\x54\x18\xd3\x63\x68\xac\ \x68\xfc\x81\x15\x56\x30\x34\xfe\xc7\x05\xc1\x52\xf7\x26\xbf\xec\ \x41\x86\xf7\x26\xc3\xa5\x3e\x74\xfc\x6f\x80\xc1\x73\xf3\xa6\xdc\ \x3d\xb5\x10\x8b\xd4\xed\xe9\xad\x3f\x1b\xff\x6f\xdc\x89\x24\x75\ \x6d\x06\x50\xa2\xf3\xd5\xda\x9e\xef\x8d\xff\xa7\xdc\x7b\xd3\x05\ \x97\x5a\xbf\xbb\xf1\xff\x8a\x7b\x5f\x0e\x4f\xfa\xd2\xf8\xbf\xf7\ \xc5\xc7\xf6\x0f\x1d\x70\xa9\xe3\x8b\x9b\xfe\x36\xfe\xef\x03\xea\ \xe8\xf8\xf8\xbc\xf7\x7f\x03\x92\xd4\x87\x8e\x4d\x3b\x40\x74\xeb\ \x8f\x9b\xd3\x40\x36\xa2\x48\xfd\x6f\x58\x78\xaa\xed\xcb\xe9\x05\ \x10\xc7\x20\x49\x41\xfc\xf5\xbc\x17\x8b\xbf\x70\x85\x06\xce\x30\ \x04\x00\x95\xde\xf8\xd0\x60\x7f\x65\x39\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\xae\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x07\x00\x00\x00\x05\x08\x04\x00\x00\x00\x23\x93\x3e\x53\ \x00\x00\x00\x02\x73\x42\x49\x54\x08\x08\x55\xec\x46\x04\x00\x00\ \x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x77\ \x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x9b\ \xee\x3c\x1a\x00\x00\x00\x42\x49\x44\x41\x54\x08\xd7\x63\xa8\x5f\ \xbd\xe6\x15\x0c\xd6\x2e\x61\x48\x56\xda\xf1\xe8\xc4\x57\x10\xdc\ \x74\x3e\x5c\x84\xe1\x3f\x43\x6b\x26\x88\xb3\xef\x55\x8d\xc5\x7f\ \x06\x20\x97\x81\x71\xc1\x86\xe3\x5f\xfb\x72\xfe\x33\x80\xb9\xff\ \x19\x52\xd5\x7a\x67\xfe\x07\xb3\x00\xb3\x22\x29\xee\xf2\x45\x54\ \xa5\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x02\x2c\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x72\xeb\xe4\x7c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x01\xbe\x49\x44\x41\x54\x28\x53\x5d\ \x92\x3b\x4b\x03\x41\x14\x85\x67\x37\x9b\x18\x22\x12\x4c\x3a\x05\ \x31\x36\x16\x26\x88\x8d\xf8\x13\xc4\xc6\x42\xec\x14\x0b\xd1\x42\ \xc1\x42\x41\xed\xb2\x5b\x46\xc1\x07\x58\x09\x0a\x76\xda\x68\x29\ \xfa\x07\x14\xed\x04\x3b\x11\x05\x83\x24\x26\xbb\x24\x26\xd9\x47\ \x76\x66\x3c\x77\x49\x82\x3a\x70\xb8\x33\xc3\xf9\xe6\xde\x99\x3b\ \x9a\x94\x92\xb5\x47\x4e\xd7\x47\xc2\xe1\xf0\x82\xaa\xaa\x13\x42\ \x88\x41\xc4\x37\xce\xf9\xbd\xef\xfb\x67\x5b\xba\xfe\xdc\xf6\x69\ \x2d\x73\x08\x63\x3d\x16\x8b\xad\xa6\x52\xa9\x70\x3c\x1e\x77\x31\ \x77\x2a\x96\x95\xf8\x2a\x16\x27\xf3\x9f\x9f\xd3\x3b\xba\x7e\x8c\ \xe3\x0f\x00\xf3\x00\x22\x20\x99\x4c\xae\x65\x32\x19\x1b\x99\x1c\ \xda\xb3\xeb\x75\x4b\x11\xc2\xea\x89\x46\xcd\xfe\x44\xa2\x96\x2f\ \x95\x66\x9a\x42\x50\x59\x7b\x1a\x95\x44\x19\xd2\xe9\xb4\x03\x40\ \x08\xce\x7d\xbb\x56\xb3\x20\x33\x10\x60\x17\x31\xca\xf9\x4b\x93\ \xb1\x39\xf8\x6f\x34\x18\x97\xa8\xa4\x48\x24\xe2\x34\x3d\xcf\xfe\ \x03\xb4\xe6\x9e\xeb\x9a\xc8\x60\x85\x18\xbb\xe6\x52\xce\x6b\xb8\ \xec\x38\xee\xe0\xb9\xb6\xfd\xfd\xdf\x4c\x6a\xfa\xbe\xc5\x19\x33\ \x49\xa8\xed\x11\xf0\xa2\x86\x57\x1a\x50\xa4\xfc\xa8\x57\x2a\xa5\ \x06\x4c\x4e\x0b\xa0\x39\x4e\xed\x00\x02\x99\x00\xbc\x33\x45\x31\ \xe8\x21\xde\x4a\x85\x82\x1b\x92\xb2\xd8\xce\xe2\x34\x1a\x1d\x63\ \x1b\x82\x2c\xa1\x28\x7d\xe4\xd7\xd0\x87\x87\x72\xb9\x3c\xda\xad\ \xaa\x05\x02\x5c\xcf\x23\x73\x60\xfa\x0d\x6c\x1a\x46\x0d\x8f\x30\ \x05\xe8\x99\xca\x3b\x31\xab\xd5\x0b\x9f\xb1\x6f\x29\x44\xe1\xbf\ \x99\x0e\x00\xe0\x02\xe8\x05\xb0\x0c\xad\x68\xd4\xe9\x5c\x36\x7b\ \x5a\x65\x6c\xb2\x8b\x31\x6a\x20\x81\x9d\xd2\xb6\x0c\x43\x00\x88\ \xc3\xbc\x0b\x5d\x92\x3f\x68\x2e\x2e\x77\x28\xf0\x9f\x6c\xc6\x36\ \xb0\x3a\x87\xee\xb0\x97\x47\x1c\x06\x30\xd6\xca\x70\x05\x1d\x91\ \x3d\x80\xe8\x6b\x20\xec\xc3\x70\x8b\x38\x0b\x6d\x43\x43\xd0\x2b\ \xf4\x04\xad\xfe\xfe\x7b\x3f\x19\xc4\x49\xa6\x7a\x07\xda\xac\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x01\x40\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x0d\x00\x00\x00\x0d\x08\x06\x00\x00\x00\x72\xeb\xe4\x7c\ \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ \x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ \x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ \x67\x9b\xee\x3c\x1a\x00\x00\x00\xd2\x49\x44\x41\x54\x28\xcf\x95\ \x92\xbf\x0e\x82\x30\x10\xc6\xdb\xeb\x81\xc6\xc4\x84\xc4\x97\xd5\ \x8d\x8d\x77\x60\x72\xe2\xc1\x74\xe8\xe0\xa0\x0b\x05\x93\xfe\xf1\ \x8a\x50\x8b\x65\x80\x4b\x8e\xbb\xa4\xdf\xaf\xd7\x7e\x14\xeb\xba\ \x3e\x33\xc6\x4a\xb6\x3e\x4a\xa4\x4f\xc5\xb6\x45\x85\x53\x77\x2a\ \x8a\x06\x11\x5f\x00\xd0\x0d\xc9\x79\xa8\x9c\x73\xa5\xb5\xe6\x37\ \x29\xaf\x5e\x1b\xa0\x2c\xcf\x1f\xbb\x2c\x7b\x0a\x21\x14\x02\x28\ \x5f\x87\x04\x68\x7d\x55\x5d\x07\x93\x36\x40\x48\xbb\xa1\x10\xed\ \x28\x9c\x01\x3e\x49\x22\x12\x08\xbe\x8b\xad\x88\xa6\x8c\x13\x07\ \xd0\x39\x87\x29\x44\xbb\x62\x0c\x45\x80\xef\x49\x72\x48\xa0\x20\ \x5a\x38\x1a\x99\x61\x62\xfb\xe2\x49\x33\x21\x8e\x3d\x39\x67\xff\ \x3d\xff\x41\x73\x23\x26\xc0\x2d\xfd\xa8\x00\xa9\xbe\xcf\xb5\x31\ \x7b\xba\xb0\x35\xd6\x3a\x1e\xdd\xc1\x47\xff\x7e\x1f\x13\xe8\x2e\ \x65\xb3\xf6\x49\x78\xe8\xb2\xf5\xed\x7d\x00\xca\xd1\x62\xc7\x6e\ \x2e\xe9\x88\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\xaf\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x07\x00\x00\x00\x05\x08\x04\x00\x00\x00\x23\x93\x3e\x53\ \x00\x00\x00\x02\x73\x42\x49\x54\x08\x08\x55\xec\x46\x04\x00\x00\ \x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x77\ \x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x9b\ \xee\x3c\x1a\x00\x00\x00\x43\x49\x44\x41\x54\x08\x1d\x63\xc8\x5b\ \x38\xe3\x3a\x0c\xe6\xcc\x62\x70\x92\xeb\xda\x3c\x73\x1f\x08\xb6\ \x2c\xb5\x14\x62\xf8\xcf\xe0\x1e\x50\x3f\xaf\x7e\x5e\xd9\x6c\x27\ \x9d\xff\x0c\x40\x2e\x03\xa3\x4b\x76\x4a\xbd\x85\xfb\x7f\x10\x1b\ \x44\x88\x4a\x29\x87\x81\xe8\xff\x0c\x00\x6d\x8c\x21\x57\xad\xbb\ \x24\x67\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\xac\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x07\x00\x00\x00\x05\x08\x04\x00\x00\x00\x23\x93\x3e\x53\ \x00\x00\x00\x02\x73\x42\x49\x54\x08\x08\x55\xec\x46\x04\x00\x00\ \x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x77\ \x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x9b\ \xee\x3c\x1a\x00\x00\x00\x40\x49\x44\x41\x54\x08\xd7\x63\xf8\xcf\ \x00\x82\x13\xeb\x93\x95\x40\x34\x98\x33\x25\xea\xc1\xae\x55\x7d\ \x0c\x8c\x60\x6e\x9d\xc1\x95\x2d\x8f\x76\x3d\xda\xd5\x1e\x01\xe4\ \x86\x0a\x1d\x5e\x04\xe2\x3c\xda\x75\x66\x43\x92\x1c\x43\x5d\xf7\ \xae\x9d\x30\xd8\x38\x01\x00\x65\x08\x27\x8f\x6e\x3d\x5d\x1d\x00\ \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x08\xc7\ \x2e\ \x51\x57\x69\x64\x67\x65\x74\x20\x7b\x0a\x20\x20\x20\x62\x61\x63\ \x6b\x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x62\ \x65\x69\x67\x65\x3b\x0a\x7d\x0a\x0a\x2f\x2a\x20\x4e\x69\x63\x65\ \x20\x57\x69\x6e\x64\x6f\x77\x73\x2d\x58\x50\x2d\x73\x74\x79\x6c\ \x65\x20\x70\x61\x73\x73\x77\x6f\x72\x64\x20\x63\x68\x61\x72\x61\ \x63\x74\x65\x72\x2e\x20\x2a\x2f\x0a\x51\x4c\x69\x6e\x65\x45\x64\ \x69\x74\x5b\x65\x63\x68\x6f\x4d\x6f\x64\x65\x3d\x22\x32\x22\x5d\ \x20\x7b\x0a\x20\x20\x20\x20\x6c\x69\x6e\x65\x65\x64\x69\x74\x2d\ \x70\x61\x73\x73\x77\x6f\x72\x64\x2d\x63\x68\x61\x72\x61\x63\x74\ \x65\x72\x3a\x20\x39\x36\x37\x39\x3b\x0a\x7d\x0a\x0a\x2f\x2a\x20\ \x57\x65\x20\x70\x72\x6f\x76\x69\x64\x65\x20\x61\x20\x6d\x69\x6e\ \x2d\x77\x69\x64\x74\x68\x20\x61\x6e\x64\x20\x6d\x69\x6e\x2d\x68\ \x65\x69\x67\x68\x74\x20\x66\x6f\x72\x20\x70\x75\x73\x68\x20\x62\ \x75\x74\x74\x6f\x6e\x73\x0a\x20\x20\x20\x73\x6f\x20\x74\x68\x61\ \x74\x20\x74\x68\x65\x79\x20\x6c\x6f\x6f\x6b\x20\x65\x6c\x65\x67\ \x61\x6e\x74\x20\x72\x65\x67\x61\x72\x64\x6c\x65\x73\x73\x20\x6f\ \x66\x20\x74\x68\x65\x20\x77\x69\x64\x74\x68\x20\x6f\x66\x20\x74\ \x68\x65\x20\x74\x65\x78\x74\x2e\x20\x2a\x2f\x0a\x51\x50\x75\x73\ \x68\x42\x75\x74\x74\x6f\x6e\x20\x7b\x0a\x20\x20\x20\x20\x62\x61\ \x63\x6b\x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\ \x70\x61\x6c\x65\x67\x6f\x6c\x64\x65\x6e\x72\x6f\x64\x3b\x0a\x20\ \x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x77\x69\x64\x74\x68\x3a\ \x20\x32\x70\x78\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\ \x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x64\x61\x72\x6b\x6b\x68\x61\x6b\ \x69\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x73\x74\ \x79\x6c\x65\x3a\x20\x73\x6f\x6c\x69\x64\x3b\x0a\x20\x20\x20\x20\ \x62\x6f\x72\x64\x65\x72\x2d\x72\x61\x64\x69\x75\x73\x3a\x20\x35\ \x3b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x33\ \x70\x78\x3b\x0a\x20\x20\x20\x20\x6d\x69\x6e\x2d\x77\x69\x64\x74\ \x68\x3a\x20\x39\x65\x78\x3b\x0a\x20\x20\x20\x20\x6d\x69\x6e\x2d\ \x68\x65\x69\x67\x68\x74\x3a\x20\x32\x2e\x35\x65\x78\x3b\x0a\x7d\ \x0a\x0a\x51\x50\x75\x73\x68\x42\x75\x74\x74\x6f\x6e\x3a\x68\x6f\ \x76\x65\x72\x20\x7b\x0a\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\ \x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x6b\x68\x61\x6b\x69\ \x3b\x0a\x7d\x0a\x0a\x2f\x2a\x20\x49\x6e\x63\x72\x65\x61\x73\x65\ \x20\x74\x68\x65\x20\x70\x61\x64\x64\x69\x6e\x67\x2c\x20\x73\x6f\ \x20\x74\x68\x65\x20\x74\x65\x78\x74\x20\x69\x73\x20\x73\x68\x69\ \x66\x74\x65\x64\x20\x77\x68\x65\x6e\x20\x74\x68\x65\x20\x62\x75\ \x74\x74\x6f\x6e\x20\x69\x73\x0a\x20\x20\x20\x70\x72\x65\x73\x73\ \x65\x64\x2e\x20\x2a\x2f\x0a\x51\x50\x75\x73\x68\x42\x75\x74\x74\ \x6f\x6e\x3a\x70\x72\x65\x73\x73\x65\x64\x20\x7b\x0a\x20\x20\x20\ \x20\x70\x61\x64\x64\x69\x6e\x67\x2d\x6c\x65\x66\x74\x3a\x20\x35\ \x70\x78\x3b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x2d\ \x74\x6f\x70\x3a\x20\x35\x70\x78\x3b\x0a\x20\x20\x20\x20\x62\x61\ \x63\x6b\x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\ \x23\x64\x30\x64\x36\x37\x63\x3b\x0a\x7d\x0a\x0a\x51\x4c\x61\x62\ \x65\x6c\x2c\x20\x51\x41\x62\x73\x74\x72\x61\x63\x74\x42\x75\x74\ \x74\x6f\x6e\x20\x7b\x0a\x20\x20\x20\x20\x66\x6f\x6e\x74\x3a\x20\ \x62\x6f\x6c\x64\x3b\x0a\x7d\x0a\x0a\x2f\x2a\x20\x4d\x61\x72\x6b\ \x20\x6d\x61\x6e\x64\x61\x74\x6f\x72\x79\x20\x66\x69\x65\x6c\x64\ \x73\x20\x77\x69\x74\x68\x20\x61\x20\x62\x72\x6f\x77\x6e\x69\x73\ \x68\x20\x63\x6f\x6c\x6f\x72\x2e\x20\x2a\x2f\x0a\x2e\x6d\x61\x6e\ \x64\x61\x74\x6f\x72\x79\x20\x7b\x0a\x20\x20\x20\x20\x63\x6f\x6c\ \x6f\x72\x3a\x20\x62\x72\x6f\x77\x6e\x3b\x0a\x7d\x0a\x0a\x2f\x2a\ \x20\x42\x6f\x6c\x64\x20\x74\x65\x78\x74\x20\x6f\x6e\x20\x73\x74\ \x61\x74\x75\x73\x20\x62\x61\x72\x20\x6c\x6f\x6f\x6b\x73\x20\x61\ \x77\x66\x75\x6c\x2e\x20\x2a\x2f\x0a\x51\x53\x74\x61\x74\x75\x73\ \x42\x61\x72\x20\x51\x4c\x61\x62\x65\x6c\x20\x7b\x0a\x20\x20\x20\ \x66\x6f\x6e\x74\x3a\x20\x6e\x6f\x72\x6d\x61\x6c\x3b\x0a\x7d\x0a\ \x0a\x51\x53\x74\x61\x74\x75\x73\x42\x61\x72\x3a\x3a\x69\x74\x65\ \x6d\x20\x7b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x77\ \x69\x64\x74\x68\x3a\x20\x31\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\ \x64\x65\x72\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x64\x61\x72\x6b\x6b\ \x68\x61\x6b\x69\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\ \x2d\x73\x74\x79\x6c\x65\x3a\x20\x73\x6f\x6c\x69\x64\x3b\x0a\x20\ \x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x72\x61\x64\x69\x75\x73\ \x3a\x20\x32\x3b\x0a\x7d\x0a\x0a\x51\x43\x6f\x6d\x62\x6f\x42\x6f\ \x78\x2c\x20\x51\x4c\x69\x6e\x65\x45\x64\x69\x74\x2c\x20\x51\x53\ \x70\x69\x6e\x42\x6f\x78\x2c\x20\x51\x54\x65\x78\x74\x45\x64\x69\ \x74\x2c\x20\x51\x4c\x69\x73\x74\x56\x69\x65\x77\x20\x7b\x0a\x20\ \x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\ \x6c\x6f\x72\x3a\x20\x63\x6f\x72\x6e\x73\x69\x6c\x6b\x3b\x0a\x20\ \x20\x20\x20\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x2d\x63\x6f\x6c\ \x6f\x72\x3a\x20\x23\x30\x61\x32\x31\x34\x63\x3b\x20\x0a\x20\x20\ \x20\x20\x73\x65\x6c\x65\x63\x74\x69\x6f\x6e\x2d\x62\x61\x63\x6b\ \x67\x72\x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x23\x43\ \x31\x39\x41\x36\x42\x3b\x0a\x7d\x0a\x0a\x51\x4c\x69\x73\x74\x56\ \x69\x65\x77\x20\x7b\x0a\x20\x20\x20\x20\x73\x68\x6f\x77\x2d\x64\ \x65\x63\x6f\x72\x61\x74\x69\x6f\x6e\x2d\x73\x65\x6c\x65\x63\x74\ \x65\x64\x3a\x20\x31\x3b\x0a\x7d\x0a\x0a\x51\x4c\x69\x73\x74\x56\ \x69\x65\x77\x3a\x3a\x69\x74\x65\x6d\x3a\x68\x6f\x76\x65\x72\x20\ \x7b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\ \x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x77\x68\x65\x61\x74\x3b\x0a\x7d\ \x0a\x0a\x2f\x2a\x20\x57\x65\x20\x72\x65\x73\x65\x72\x76\x65\x20\ \x31\x20\x70\x69\x78\x65\x6c\x20\x73\x70\x61\x63\x65\x20\x69\x6e\ \x20\x70\x61\x64\x64\x69\x6e\x67\x2e\x20\x57\x68\x65\x6e\x20\x77\ \x65\x20\x67\x65\x74\x20\x74\x68\x65\x20\x66\x6f\x63\x75\x73\x2c\ \x0a\x20\x20\x20\x77\x65\x20\x6b\x69\x6c\x6c\x20\x74\x68\x65\x20\ \x70\x61\x64\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\x65\x6e\x6c\x61\ \x72\x67\x65\x20\x74\x68\x65\x20\x62\x6f\x72\x64\x65\x72\x2e\x20\ \x54\x68\x69\x73\x20\x6d\x61\x6b\x65\x73\x20\x74\x68\x65\x20\x69\ \x74\x65\x6d\x73\x0a\x20\x20\x20\x67\x6c\x6f\x77\x2e\x20\x2a\x2f\ \x0a\x51\x4c\x69\x6e\x65\x45\x64\x69\x74\x2c\x20\x51\x46\x72\x61\ \x6d\x65\x20\x7b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\ \x77\x69\x64\x74\x68\x3a\x20\x32\x70\x78\x3b\x0a\x20\x20\x20\x20\ \x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x31\x70\x78\x3b\x0a\x20\x20\ \x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x73\x74\x79\x6c\x65\x3a\x20\ \x73\x6f\x6c\x69\x64\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\ \x72\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x64\x61\x72\x6b\x6b\x68\x61\ \x6b\x69\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x2d\x72\ \x61\x64\x69\x75\x73\x3a\x20\x35\x70\x78\x3b\x0a\x7d\x0a\x0a\x2f\ \x2a\x20\x41\x73\x20\x6d\x65\x6e\x74\x69\x6f\x6e\x65\x64\x20\x61\ \x62\x6f\x76\x65\x2c\x20\x65\x6c\x69\x6d\x69\x6e\x61\x74\x65\x20\ \x74\x68\x65\x20\x70\x61\x64\x64\x69\x6e\x67\x20\x61\x6e\x64\x20\ \x69\x6e\x63\x72\x65\x61\x73\x65\x20\x74\x68\x65\x20\x62\x6f\x72\ \x64\x65\x72\x2e\x20\x2a\x2f\x0a\x51\x4c\x69\x6e\x65\x45\x64\x69\ \x74\x3a\x66\x6f\x63\x75\x73\x2c\x20\x51\x46\x72\x61\x6d\x65\x3a\ \x66\x6f\x63\x75\x73\x20\x7b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\ \x65\x72\x2d\x77\x69\x64\x74\x68\x3a\x20\x33\x70\x78\x3b\x0a\x20\ \x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x30\x70\x78\x3b\ \x0a\x7d\x0a\x0a\x2f\x2a\x20\x41\x20\x51\x4c\x61\x62\x65\x6c\x20\ \x69\x73\x20\x61\x20\x51\x46\x72\x61\x6d\x65\x20\x2e\x2e\x2e\x20\ \x2a\x2f\x0a\x51\x4c\x61\x62\x65\x6c\x20\x7b\x0a\x20\x20\x20\x20\ \x62\x6f\x72\x64\x65\x72\x3a\x20\x6e\x6f\x6e\x65\x3b\x0a\x20\x20\ \x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\x20\x30\x3b\x0a\x20\x20\ \x20\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\x64\x3a\x20\x6e\x6f\ \x6e\x65\x3b\x0a\x7d\x0a\x0a\x2f\x2a\x20\x41\x20\x51\x54\x6f\x6f\ \x6c\x54\x69\x70\x20\x69\x73\x20\x61\x20\x51\x4c\x61\x62\x65\x6c\ \x20\x2e\x2e\x2e\x20\x2a\x2f\x0a\x51\x54\x6f\x6f\x6c\x54\x69\x70\ \x20\x7b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x3a\x20\x32\ \x70\x78\x20\x73\x6f\x6c\x69\x64\x20\x64\x61\x72\x6b\x6b\x68\x61\ \x6b\x69\x3b\x0a\x20\x20\x20\x20\x70\x61\x64\x64\x69\x6e\x67\x3a\ \x20\x35\x70\x78\x3b\x0a\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\ \x2d\x72\x61\x64\x69\x75\x73\x3a\x20\x33\x70\x78\x3b\x0a\x20\x20\ \x20\x20\x6f\x70\x61\x63\x69\x74\x79\x3a\x20\x32\x30\x30\x3b\x0a\ \x7d\x0a\x0a\x2f\x2a\x20\x4e\x69\x63\x65\x20\x74\x6f\x20\x68\x61\ \x76\x65\x20\x74\x68\x65\x20\x62\x61\x63\x6b\x67\x72\x6f\x75\x6e\ \x64\x20\x63\x6f\x6c\x6f\x72\x20\x63\x68\x61\x6e\x67\x65\x20\x77\ \x68\x65\x6e\x20\x68\x6f\x76\x65\x72\x65\x64\x2e\x20\x2a\x2f\x0a\ \x51\x52\x61\x64\x69\x6f\x42\x75\x74\x74\x6f\x6e\x3a\x68\x6f\x76\ \x65\x72\x2c\x20\x51\x43\x68\x65\x63\x6b\x42\x6f\x78\x3a\x68\x6f\ \x76\x65\x72\x20\x7b\x0a\x20\x20\x20\x20\x62\x61\x63\x6b\x67\x72\ \x6f\x75\x6e\x64\x2d\x63\x6f\x6c\x6f\x72\x3a\x20\x77\x68\x65\x61\ \x74\x3b\x0a\x7d\x0a\x0a\x2f\x2a\x20\x46\x6f\x72\x63\x65\x20\x74\ \x68\x65\x20\x64\x69\x61\x6c\x6f\x67\x27\x73\x20\x62\x75\x74\x74\ \x6f\x6e\x73\x20\x74\x6f\x20\x66\x6f\x6c\x6c\x6f\x77\x20\x74\x68\ \x65\x20\x57\x69\x6e\x64\x6f\x77\x73\x20\x67\x75\x69\x64\x65\x6c\ \x69\x6e\x65\x73\x2e\x20\x2a\x2f\x0a\x51\x44\x69\x61\x6c\x6f\x67\ \x42\x75\x74\x74\x6f\x6e\x42\x6f\x78\x20\x7b\x0a\x20\x20\x20\x20\ \x62\x75\x74\x74\x6f\x6e\x2d\x6c\x61\x79\x6f\x75\x74\x3a\x20\x30\ \x3b\x0a\x7d\x0a\x0a\x0a\ \x00\x00\x00\x17\ \x2f\ \x2a\x20\x65\x6d\x70\x74\x79\x20\x73\x74\x79\x6c\x65\x73\x68\x65\ \x65\x74\x20\x2a\x2f\x0a\ \x00\x00\x06\xb0\ \x00\ \x00\x1a\x79\x78\x9c\xa5\x59\x6d\x6f\xdb\x36\x10\xfe\xee\x5f\x71\ \xe8\x3e\xa4\x4d\xe3\xbc\xb5\x4e\x51\x05\x1d\xd0\x14\x5b\x31\xa0\ \xd9\xea\x25\x58\x07\x14\x45\x40\x49\xb4\x4d\x44\x16\x05\x92\x8a\ \xe3\x6d\xfd\xef\xbb\xe3\x8b\x2c\x59\x92\x5f\xd2\x02\x2d\x2c\xea\ \x78\x2f\xcf\x3d\x3c\xde\xa9\x27\x87\xf0\xa1\xd4\x46\xce\xc5\x3f\ \x1c\x58\xbe\x84\x22\x63\x22\x87\x85\x48\xa7\xdc\x80\x99\x31\x03\ \x42\x03\x83\x64\x26\xb2\x14\xe4\x04\x7f\x8e\xaf\x51\xe2\x8b\xc8\ \x53\xb9\x38\x86\xc3\x93\x41\xed\x19\x7e\x86\xe3\xf1\x17\xb7\xf7\ \xdf\x01\xe0\x9f\x98\x25\xf7\x53\x25\xcb\x3c\x1d\x26\x32\x93\x2a\ \x82\x29\x4a\xeb\x58\x2a\x79\xb9\x2e\x20\xe6\x6c\xca\x23\x28\x55\ \xf6\x3c\x3a\xb1\x0f\xfa\xa4\xc0\x7f\x27\x32\x4b\x8f\x8b\x7c\xfa\ \xa2\xb5\xa3\x90\x5a\x18\x21\xf3\x08\x8c\x2c\x40\x89\xe9\xcc\xb4\ \x64\x14\x2f\x38\x33\x11\xe4\xd2\xff\x1c\x7c\x1f\x0c\x4e\x0e\xe1\ \xb3\x92\x0f\x22\xc5\xa0\xa1\x60\x69\x2a\xf2\x29\x4c\xa4\xc2\x88\ \x39\x64\x6c\x29\x4b\x8c\x3b\xd7\xf4\x9e\x56\x26\x8a\xcd\xf9\x31\ \xdc\x86\x9f\x64\x83\x3f\x0a\x6d\x34\xc8\x3c\x5b\xa2\x75\x28\x7a\ \xd5\xa1\x6b\x43\xeb\x1a\xd8\x98\x8e\x40\x4b\x58\x78\x15\x45\x26\ \x12\x61\x50\x43\x2a\x34\x8b\x33\x67\x0d\xc1\x49\xb9\xb2\xd8\xfe\ \x34\x47\xb4\x7e\x25\x93\x1e\x4f\xaf\xdc\x29\x8c\xe0\xd5\x69\xf1\ \xe8\x23\xb6\x9b\x86\xda\x2c\x33\x4e\xc1\xe6\xbc\xb1\xee\xb1\xb5\ \xeb\x80\xd1\x6b\x91\x27\x1c\xdd\x00\x8d\xa9\x62\x0d\x29\x88\x79\ \x86\xa9\x44\xeb\x0e\xa8\x95\x0b\x0b\x99\x1f\x18\x98\xb1\x07\xf2\ \x13\x69\xd1\xd8\x55\x69\xa4\xf7\x6b\xd1\x91\x11\x61\x08\xa6\x03\ \xf2\xe0\x00\x4a\x4d\x08\x31\x98\x4b\x85\x3b\x0b\x9e\x88\x89\x48\ \x50\x2c\xe3\x89\x91\x2e\xf4\xb1\xb5\x79\x04\xe3\x4f\x22\xe7\xbf\ \xa4\xc2\xe0\xcf\x0f\x72\x1e\xcb\x2b\xf9\xf8\x95\xe3\x33\xe1\xf5\ \xee\x99\x51\x25\x7f\xf6\x0d\xdf\xdd\x14\x22\xc7\x57\x81\x77\x8d\ \xb0\x1b\x94\x72\xc9\x24\x3e\xc1\xeb\x06\x46\x48\x7a\x33\x43\x4c\ \x2f\x29\xf0\xf1\x27\x86\x38\x34\xb4\x6d\x81\xb5\x9e\x9f\x08\x4e\ \xd7\x89\x18\xa4\x1c\xa8\xd7\xec\x1e\x41\xe4\x8f\x44\x33\x98\x73\ \xad\x2d\xf0\xf2\x91\x6b\x8f\x02\x45\xe7\x8f\x97\x7b\xbb\x8a\x0d\ \xb7\x23\x26\xf7\xfa\x7d\x92\xe0\x2b\x81\x82\x57\xcb\x6b\x59\x6a\ \x0e\xff\xc1\x2d\xaa\xbc\xa9\x14\x84\x75\x54\x43\x1b\xbd\x1d\x34\ \x33\x24\xd3\x43\x91\x1b\xae\x58\x42\x27\x68\x38\xc9\xd8\x54\x47\ \x30\x22\x07\x51\x94\x7c\xbc\xb1\x15\x80\x7b\x87\x50\x08\xec\x11\ \xd6\x96\xd9\x2c\xcb\x7c\x95\xd0\xce\xcd\xc6\xb1\xaf\xb6\x84\x53\ \x1f\x67\x08\xc4\xe5\xda\xbb\x76\x71\xb8\x11\xd9\x03\x57\x4e\xae\ \xb9\xb3\x0e\x1b\xfa\xc4\x73\x23\x90\x3a\x0a\x89\xea\xf4\xf1\x94\ \x90\x14\x86\xcf\xe1\x41\xf0\x85\x77\xea\x7d\xac\x0d\x45\xf8\x1b\ \xae\xff\x85\xcb\xc1\xbd\x99\x5c\x0c\x53\x9e\x48\xc5\xac\x23\x41\ \x45\x04\x67\xc1\xd2\xef\x02\xd9\xec\xaa\x9a\xfe\xfb\xb3\x3b\x57\ \x98\x5d\xad\x17\x98\x79\x2c\x87\x8c\xd4\x72\x65\xb1\xa8\x96\x33\ \xa4\x2a\x10\x37\xbd\xf9\x40\xdd\xaf\x3c\x99\xc9\x6b\x99\x22\x5f\ \xcf\x9f\x7d\xf3\x4e\x90\x30\xc9\x0e\xc3\xf6\x61\xa5\x35\x82\xb7\ \x17\x6f\xde\x06\x57\x56\x05\xda\x48\x99\x19\x51\x78\xed\xb7\xf8\ \x74\x2b\x8a\xde\x4a\xab\xa6\xf1\xf3\xf3\xd3\xd3\x23\xfb\x77\x34\ \x7a\xd1\x60\xae\x97\x49\x99\xba\xd7\x19\x33\x7c\xaa\xd8\xb2\xeb\ \x34\x9c\x75\x17\x18\x2d\x33\x91\xae\x51\xfe\x55\x10\x9d\xc8\x1c\ \x6b\x53\x8c\x65\xbb\xb1\x55\xb1\x54\x94\xba\x26\x27\x0b\x86\xf5\ \x61\x19\x01\x7a\xd8\x0e\x96\xc4\x25\xc4\xa5\x31\x32\x77\x11\x0f\ \xc6\x7f\xd2\xda\x95\x5d\x0a\xa9\x24\x1d\x64\x7d\x44\x5a\xbf\x37\ \x65\xa2\x08\x13\x28\x12\x86\x35\xc5\x8b\x87\xa8\x2a\x1f\x66\xdc\ \x55\x52\xb7\xd2\xbf\x3f\x8a\xca\x3c\x99\xf1\xe4\x1e\x89\xe6\x54\ \x75\xd5\x16\xeb\xb3\x73\xf9\xae\x92\xf7\x77\xd7\x06\xdd\x95\x68\ \x34\x93\xc8\xff\x7d\x0d\xdc\xd9\x5d\xfb\x98\x29\x14\x96\x82\xfd\ \x23\xb9\xf3\xfb\xb6\x9b\x8a\xf6\xc3\x6a\x67\xa4\x9e\x82\xd3\x9e\ \x28\x3d\x0d\xa3\x5e\x84\x1a\x9c\x66\x0a\x2b\x96\x27\xf3\x61\x14\ \x61\x71\xc9\x87\x76\xed\x08\xf0\x71\xce\xf3\x72\xb8\xce\xd8\x2e\ \xc3\xb4\xef\xce\xee\xab\xf5\x45\x9e\xda\x6f\xd6\x99\xfd\xc6\x13\ \xbb\x61\x2f\xf2\x0d\x47\x6a\x0d\xd7\xd6\xe5\x64\xe2\x0c\x6f\xb6\ \x7b\x17\xf6\xaf\x02\x45\x3d\x65\xe1\xb4\x6c\x70\xbd\x2c\x9e\xe2\ \x78\x50\xdc\x74\xbb\x5a\xdd\xe8\x74\xb0\xd8\xe1\x72\x23\x37\x45\ \xa9\x67\xa1\xdc\x60\x2b\x8c\x45\x9e\xba\x0d\x7b\x27\x1f\xc3\x1f\ \xa5\x02\xc5\x59\x3a\xb4\xfd\x5e\x78\x63\x4d\x6a\x40\x5a\x61\x8f\ \x23\xe6\x22\x63\x8a\x9a\x1c\x56\xd7\x65\xfb\x3d\xbc\xb2\x50\x02\ \xcb\xbb\xbb\xbd\x34\x75\x53\xae\x2a\x3a\x97\x7d\x79\xfb\x8c\xdb\ \x1a\xd5\x6d\x2e\xf2\x50\x88\x5f\xf3\xb9\xa3\xed\x4a\xa8\xbb\x23\ \x9a\xb0\x4c\x53\x4b\x34\xe8\x6f\x97\x30\xe3\x0a\xbb\x52\x4a\xe7\ \xf6\x7e\x89\x62\x71\xa1\xb8\xa6\x69\xd4\x75\x4d\x8c\xd6\x7d\x73\ \x27\x74\xa3\x87\x5e\x64\x37\x3f\x2b\x7d\xd7\x78\x48\xae\x18\x56\ \x18\xba\xeb\x1b\x75\x60\xa7\x18\x6a\x55\x60\xd7\x48\xfc\x91\xde\ \x1c\x0b\x66\x63\xc7\x40\x6c\xde\x9a\x51\xc8\xbd\xd2\xd0\xa8\x31\ \x9b\x82\x68\x5e\xa7\x2d\xf6\xf2\x70\xab\xf6\x87\xb5\x36\x75\x64\ \x7c\x62\x6a\xf7\xf7\xda\x30\x72\x4e\xc3\x88\x1d\x2e\xf0\x4e\xe6\ \xd5\xfc\xe3\x2a\x82\x1b\x27\x36\x21\xd8\xe2\xa4\x2e\xe3\x04\x3b\ \x09\x25\xb3\xa1\x44\x13\x02\xc7\x3c\x6f\xf1\x72\xfd\x7d\xef\x20\ \x18\xee\xfb\xd1\x5a\x1b\x43\x91\x74\xf4\x32\xf5\xb7\xb5\x0e\xa9\ \xd5\x1c\x59\x81\x7a\x87\xb4\x35\xb6\xaa\xc2\xf6\x07\x47\xcf\xd8\ \xd7\x6e\x08\x2e\xe1\xd4\xb1\x7b\xf0\xab\x55\xc5\xb1\x81\x13\x0f\ \x7e\x02\x71\x39\x3a\xf3\xa9\x38\x83\x42\x3c\xe2\x1c\x43\xd8\x5a\ \x68\x7d\xd5\xa9\xa6\x3b\x9a\x69\x03\x21\x7c\xaa\x04\x4d\xb5\xb0\ \x98\xf1\xdc\xe6\xaf\x90\x45\x59\xd8\xc5\x82\xe7\xae\xf3\xdc\x2d\ \xd2\x15\xad\xfb\x7c\xc5\x64\xd5\x3a\x4c\xe7\xf9\xb9\x87\xb3\x41\ \xde\x60\x67\x27\xee\xba\x23\xd7\x3d\x30\x9f\x5d\x6c\xc8\x56\x5f\ \x71\xec\xc8\x95\x83\x71\x7f\x1e\xae\xce\x4e\x25\xc9\x62\x24\x60\ \x69\xea\x90\x9c\xaf\xd8\x8a\x07\x7e\x5e\x5b\x08\x47\x6d\x9f\x28\ \xf6\xab\xb0\x3b\x57\xb1\x66\xc9\xf2\x01\xda\x12\x00\x7d\x47\xe5\ \x95\x67\xe5\x82\x03\xcd\x3e\xee\xe3\x09\x09\xb8\xfb\xd6\xb2\x1b\ \x33\xa6\xcc\x8a\x9f\x37\x33\x31\x31\xb5\x3a\x62\x69\x29\xcc\xc1\ \x16\x3a\x56\x0e\xff\x20\x1b\xcf\xba\xd8\x68\x7b\x3d\x58\xb1\x70\ \xfc\x81\x16\x56\x03\x7a\x7b\x26\x09\x02\x4f\x1a\x48\x3a\x36\xef\ \x34\x8c\x58\x09\xf4\xb2\x73\x12\xd9\xa8\x74\x6b\x7b\xdd\x56\xdd\ \xea\xae\x37\x1b\xd8\xde\x5c\x77\x98\x68\x4f\x1f\x5d\x46\xf6\x00\ \x66\x37\x58\xf6\x06\x65\x1f\x48\x9e\x00\xc8\x6e\xa3\x86\xed\x33\ \xe9\xc7\x54\x89\xc2\xd1\xf4\x06\x1f\x3f\xaa\xea\x8b\x41\x97\x11\ \xda\x61\x37\xb4\xda\x73\x57\x39\x1b\x0c\xbd\xe8\x3a\x1c\x64\x97\ \x06\x19\x88\x99\x0a\x1f\xb0\x6c\xaf\xd3\xd9\xe2\xb4\xbe\xa8\xf5\ \x7d\xc0\xec\xf9\x1c\xe1\x0a\x64\xff\x4d\xee\xdf\xf7\x7f\xed\xa8\ \xbe\x5e\x74\xde\x3b\xba\x10\x39\xd4\xaf\x9b\xea\x2b\x23\x74\xde\ \x2e\xd5\x81\xf7\x72\x76\x46\x89\x1b\xdf\x2b\x7e\xec\x2e\x69\x65\ \xc4\x5e\xf2\x17\xf0\x12\xce\x0f\x11\x9b\x06\x5a\xf0\xce\x3a\x54\ \x7d\x90\x7e\x49\xf5\x97\xca\x2b\xd6\xd9\x5a\x1f\xb0\xa5\xef\x24\ \x08\x4a\xc7\x07\xfa\x3a\xd6\x93\x92\xee\x98\x77\x6d\xcf\x9d\x8d\ \x7a\x6b\x7e\xd6\xab\xb2\x79\x50\xb6\x2b\x6d\x34\xcb\xeb\x6a\xed\ \xf5\xf0\xc3\xf9\x71\x24\xeb\x4d\xd1\x2e\x8e\x92\x23\xdb\x30\xae\ \x2d\xd3\xff\x29\x84\x1b\xb7\x3f\xa4\x7d\xe0\xb7\xa3\xfd\x86\x04\ \xd4\xd5\xee\x95\x02\xab\xb8\x9d\x84\xff\x01\xe3\xe9\xc7\xaf\ " qt_resource_name = b"\ \x00\x03\ \x00\x00\x78\xa3\ \x00\x71\ \x00\x73\x00\x73\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x16\ \x0b\x31\x44\x87\ \x00\x70\ \x00\x75\x00\x73\x00\x68\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\ \x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x09\ \x08\x38\x8c\x47\ \x00\x66\ \x00\x72\x00\x61\x00\x6d\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x1c\ \x0e\x3c\xde\x07\ \x00\x63\ \x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\ \x00\x64\x00\x5f\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x09\xaf\x5e\x27\ \x00\x73\ \x00\x70\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x06\xe6\xe6\x67\ \x00\x75\ \x00\x70\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x05\xcc\x19\x47\ \x00\x73\ \x00\x70\x00\x69\x00\x6e\x00\x75\x00\x70\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x19\ \x08\x11\x29\x47\ \x00\x72\ \x00\x61\x00\x64\x00\x69\x00\x6f\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\ \x00\x63\x00\x6b\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x1f\ \x0c\x85\x15\xa7\ \x00\x72\ \x00\x61\x00\x64\x00\x69\x00\x6f\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\ \x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x06\x41\x40\x87\ \x00\x73\ \x00\x69\x00\x7a\x00\x65\x00\x67\x00\x72\x00\x69\x00\x70\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x1c\ \x02\x75\x51\x87\ \x00\x63\ \x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\ \x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x16\ \x01\x75\xcc\x87\ \x00\x63\ \x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\ \x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x0b\xc2\xcd\x07\ \x00\x73\ \x00\x70\x00\x69\x00\x6e\x00\x75\x00\x70\x00\x5f\x00\x6f\x00\x66\x00\x66\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x14\ \x09\x87\xa0\x87\ \x00\x70\ \x00\x75\x00\x73\x00\x68\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\ \x00\x70\x00\x6e\x00\x67\ \x00\x10\ \x07\x5f\x75\x87\ \x00\x73\ \x00\x70\x00\x69\x00\x6e\x00\x75\x00\x70\x00\x5f\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x10\ \x0c\xba\x0b\x87\ \x00\x73\ \x00\x70\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\x00\x6e\x00\x5f\x00\x6f\x00\x66\x00\x66\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x0c\xe8\xe0\xe7\ \x00\x70\ \x00\x61\x00\x67\x00\x65\x00\x66\x00\x6f\x00\x6c\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x17\ \x04\xb5\xb5\xa7\ \x00\x72\ \x00\x61\x00\x64\x00\x69\x00\x6f\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\ \x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x02\x9c\x73\xc7\ \x00\x70\ \x00\x75\x00\x73\x00\x68\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x1d\ \x05\xbc\x2c\x47\ \x00\x72\ \x00\x61\x00\x64\x00\x69\x00\x6f\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\ \x00\x65\x00\x64\x00\x5f\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x12\ \x03\xe4\x59\x27\ \x00\x73\ \x00\x70\x00\x69\x00\x6e\x00\x75\x00\x70\x00\x5f\x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\ \x00\x67\ \x00\x1f\ \x00\xbd\x9c\xe7\ \x00\x72\ \x00\x61\x00\x64\x00\x69\x00\x6f\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\ \x00\x65\x00\x64\x00\x5f\x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x1a\ \x03\x0e\xe4\x87\ \x00\x63\ \x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\ \x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x14\ \x05\x6a\xa8\xa7\ \x00\x73\ \x00\x70\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\x00\x6e\x00\x5f\x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\x00\x64\x00\x2e\ \x00\x70\x00\x6e\x00\x67\ \x00\x12\ \x0f\x99\xfb\x67\ \x00\x73\ \x00\x70\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\x00\x6e\x00\x5f\x00\x68\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x2e\x00\x70\x00\x6e\ \x00\x67\ \x00\x14\ \x07\xec\xd1\xc7\ \x00\x63\ \x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\x00\x64\x00\x2e\ \x00\x70\x00\x6e\x00\x67\ \x00\x17\ \x0c\xab\x51\x07\ \x00\x64\ \x00\x6f\x00\x77\x00\x6e\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x5f\x00\x64\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\ \x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x21\ \x09\x84\x6e\x87\ \x00\x72\ \x00\x61\x00\x64\x00\x69\x00\x6f\x00\x62\x00\x75\x00\x74\x00\x74\x00\x6f\x00\x6e\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\ \x00\x63\x00\x6b\x00\x65\x00\x64\x00\x5f\x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \ \x00\x1e\ \x00\x4f\xcb\xe7\ \x00\x63\ \x00\x68\x00\x65\x00\x63\x00\x6b\x00\x62\x00\x6f\x00\x78\x00\x5f\x00\x75\x00\x6e\x00\x63\x00\x68\x00\x65\x00\x63\x00\x6b\x00\x65\ \x00\x64\x00\x5f\x00\x70\x00\x72\x00\x65\x00\x73\x00\x73\x00\x65\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0e\ \x04\xa2\xfc\xa7\ \x00\x64\ \x00\x6f\x00\x77\x00\x6e\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x15\ \x0f\xf3\xc0\x07\ \x00\x75\ \x00\x70\x00\x5f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\x77\x00\x5f\x00\x64\x00\x69\x00\x73\x00\x61\x00\x62\x00\x6c\x00\x65\x00\x64\ \x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x0c\xbd\x13\x23\ \x00\x63\ \x00\x6f\x00\x66\x00\x66\x00\x65\x00\x65\x00\x2e\x00\x71\x00\x73\x00\x73\ \x00\x0b\ \x0c\xe2\x21\xa3\ \x00\x64\ \x00\x65\x00\x66\x00\x61\x00\x75\x00\x6c\x00\x74\x00\x2e\x00\x71\x00\x73\x00\x73\ \x00\x0c\ \x0c\xe8\xef\x03\ \x00\x70\ \x00\x61\x00\x67\x00\x65\x00\x66\x00\x6f\x00\x6c\x00\x64\x00\x2e\x00\x71\x00\x73\x00\x73\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x21\ \x00\x00\x00\x0c\x00\x02\x00\x00\x00\x1e\x00\x00\x00\x03\ \x00\x00\x05\x00\x00\x00\x00\x00\x00\x01\x00\x00\x27\xcf\ \x00\x00\x03\x80\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x5d\ \x00\x00\x01\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x0b\xbf\ \x00\x00\x01\x96\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x12\ \x00\x00\x02\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x19\x13\ \x00\x00\x03\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x20\xb8\ \x00\x00\x03\x56\x00\x00\x00\x00\x00\x01\x00\x00\x1d\x44\ \x00\x00\x05\x42\x00\x00\x00\x00\x00\x01\x00\x00\x29\x13\ \x00\x00\x02\xc0\x00\x00\x00\x00\x00\x01\x00\x00\x17\xac\ \x00\x00\x03\xfe\x00\x00\x00\x00\x00\x01\x00\x00\x21\xc6\ \x00\x00\x03\x16\x00\x00\x00\x00\x00\x01\x00\x00\x1b\x2c\ \x00\x00\x00\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x05\x8a\ \x00\x00\x01\x78\x00\x00\x00\x00\x00\x01\x00\x00\x09\x8d\ \x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x04\xc1\ \x00\x00\x02\x56\x00\x00\x00\x00\x00\x01\x00\x00\x0f\x89\ \x00\x00\x04\x56\x00\x00\x00\x00\x00\x01\x00\x00\x23\xe2\ \x00\x00\x00\xfc\x00\x00\x00\x00\x00\x01\x00\x00\x06\xa9\ \x00\x00\x00\x50\x00\x00\x00\x00\x00\x01\x00\x00\x02\x05\ \x00\x00\x04\xb8\x00\x00\x00\x00\x00\x01\x00\x00\x25\x9f\ \x00\x00\x02\x28\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x78\ \x00\x00\x00\xa6\x00\x00\x00\x00\x00\x01\x00\x00\x03\xa9\ \x00\x00\x00\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x02\x06\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x62\ \x00\x00\x01\x34\x00\x00\x00\x00\x00\x01\x00\x00\x07\x9d\ \x00\x00\x04\x84\x00\x00\x00\x00\x00\x01\x00\x00\x24\xed\ \x00\x00\x02\x7c\x00\x00\x00\x00\x00\x01\x00\x00\x10\xa2\ \x00\x00\x02\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x11\x9f\ \x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x03\x06\ \x00\x00\x04\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x22\xd2\ \x00\x00\x05\x64\x00\x00\x00\x00\x00\x01\x00\x00\x29\xc6\ \x00\x00\x05\x94\x00\x00\x00\x00\x00\x01\x00\x00\x2a\x76\ \x00\x00\x05\xae\x00\x00\x00\x00\x00\x01\x00\x00\x33\x41\ \x00\x00\x05\xca\x00\x01\x00\x00\x00\x01\x00\x00\x33\x5c\ " 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() PyQt5_gpl-5.10.1/examples/widgets/stylesheet/stylesheeteditor.py0000644000076500000240000001071513245231431025132 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ########################################################################### from PyQt5.QtCore import pyqtSlot, QFile, QRegExp, Qt, QTextStream from PyQt5.QtWidgets import (QApplication, QDialog, QFileDialog, QMessageBox, QStyleFactory) from ui_stylesheeteditor import Ui_StyleSheetEditor class StyleSheetEditor(QDialog): def __init__(self, parent=None): super(StyleSheetEditor, self).__init__(parent) self.ui = Ui_StyleSheetEditor() self.ui.setupUi(self) regExp = QRegExp(r'.(.*)\+?Style') defaultStyle = QApplication.style().metaObject().className() if regExp.exactMatch(defaultStyle): defaultStyle = regExp.cap(1) self.ui.styleCombo.addItems(QStyleFactory.keys()) self.ui.styleCombo.setCurrentIndex( self.ui.styleCombo.findText(defaultStyle, Qt.MatchContains)) self.ui.styleSheetCombo.setCurrentIndex( self.ui.styleSheetCombo.findText('Coffee')) self.loadStyleSheet('Coffee') @pyqtSlot(str) def on_styleCombo_activated(self, styleName): QApplication.setStyle(styleName) self.ui.applyButton.setEnabled(False) @pyqtSlot(str) def on_styleSheetCombo_activated(self, sheetName): self.loadStyleSheet(sheetName) def on_styleTextEdit_textChanged(self): self.ui.applyButton.setEnabled(True) def on_applyButton_clicked(self): QApplication.instance().setStyleSheet( self.ui.styleTextEdit.toPlainText()) self.ui.applyButton.setEnabled(False) def on_saveButton_clicked(self): fileName, _ = QFileDialog.getSaveFileName(self) if fileName: self.saveStyleSheet(fileName) def loadStyleSheet(self, sheetName): file = QFile(':/qss/%s.qss' % sheetName.lower()) file.open(QFile.ReadOnly) styleSheet = file.readAll() try: # Python v2. styleSheet = unicode(styleSheet, encoding='utf8') except NameError: # Python v3. styleSheet = str(styleSheet, encoding='utf8') self.ui.styleTextEdit.setPlainText(styleSheet) QApplication.instance().setStyleSheet(styleSheet) self.ui.applyButton.setEnabled(False) def saveStyleSheet(self, fileName): styleSheet = self.ui.styleTextEdit.toPlainText() file = QFile(fileName) if file.open(QFile.WriteOnly): QTextStream(file) << styleSheet else: QMessageBox.information(self, "Unable to open file", file.errorString()) PyQt5_gpl-5.10.1/examples/widgets/stylesheet/stylesheeteditor.ui0000644000076500000240000001042313245231431025113 0ustar philstaff00000000000000 StyleSheetEditor 0 0 445 289 Style Editor 9 6 Qt::Horizontal QSizePolicy::MinimumExpanding 32 20 Qt::Horizontal QSizePolicy::MinimumExpanding 32 20 Default Coffee Pagefold Qt::Horizontal QSizePolicy::Fixed 10 16 0 0 0 0 Style: 6 0 Qt::Horizontal 321 20 true &Save false &Apply 0 0 Style Sheet: PyQt5_gpl-5.10.1/examples/widgets/stylesheet/ui_mainwindow.py0000644000076500000240000002612413245231431024404 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'mainwindow.ui' # # Created: Fri Jul 26 06:49:55 2013 # by: PyQt5 UI code generator 5.0.1-snapshot-2a99e59669ee # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(400, 413) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.vboxlayout = QtWidgets.QVBoxLayout(self.centralwidget) self.vboxlayout.setContentsMargins(9, 9, 9, 9) self.vboxlayout.setSpacing(6) self.vboxlayout.setObjectName("vboxlayout") self.mainFrame = QtWidgets.QFrame(self.centralwidget) self.mainFrame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.mainFrame.setFrameShadow(QtWidgets.QFrame.Raised) self.mainFrame.setObjectName("mainFrame") self.gridlayout = QtWidgets.QGridLayout(self.mainFrame) self.gridlayout.setContentsMargins(9, 9, 9, 9) self.gridlayout.setSpacing(6) self.gridlayout.setObjectName("gridlayout") self.agreeCheckBox = QtWidgets.QCheckBox(self.mainFrame) self.agreeCheckBox.setObjectName("agreeCheckBox") self.gridlayout.addWidget(self.agreeCheckBox, 6, 0, 1, 5) self.label = QtWidgets.QLabel(self.mainFrame) self.label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTop|QtCore.Qt.AlignTrailing) self.label.setObjectName("label") self.gridlayout.addWidget(self.label, 5, 0, 1, 1) self.nameLabel = QtWidgets.QLabel(self.mainFrame) self.nameLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.nameLabel.setObjectName("nameLabel") self.gridlayout.addWidget(self.nameLabel, 0, 0, 1, 1) self.maleRadioButton = QtWidgets.QRadioButton(self.mainFrame) self.maleRadioButton.setObjectName("maleRadioButton") self.gridlayout.addWidget(self.maleRadioButton, 1, 1, 1, 1) self.passwordLabel = QtWidgets.QLabel(self.mainFrame) self.passwordLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.passwordLabel.setObjectName("passwordLabel") self.gridlayout.addWidget(self.passwordLabel, 3, 0, 1, 1) self.countryCombo = QtWidgets.QComboBox(self.mainFrame) self.countryCombo.setObjectName("countryCombo") self.countryCombo.addItem("") self.countryCombo.addItem("") self.countryCombo.addItem("") self.countryCombo.addItem("") self.countryCombo.addItem("") self.countryCombo.addItem("") self.countryCombo.addItem("") self.gridlayout.addWidget(self.countryCombo, 4, 1, 1, 4) self.ageLabel = QtWidgets.QLabel(self.mainFrame) self.ageLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.ageLabel.setObjectName("ageLabel") self.gridlayout.addWidget(self.ageLabel, 2, 0, 1, 1) self.countryLabel = QtWidgets.QLabel(self.mainFrame) self.countryLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.countryLabel.setObjectName("countryLabel") self.gridlayout.addWidget(self.countryLabel, 4, 0, 1, 1) self.genderLabel = QtWidgets.QLabel(self.mainFrame) self.genderLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.genderLabel.setObjectName("genderLabel") self.gridlayout.addWidget(self.genderLabel, 1, 0, 1, 1) self.passwordEdit = QtWidgets.QLineEdit(self.mainFrame) self.passwordEdit.setEchoMode(QtWidgets.QLineEdit.Password) self.passwordEdit.setObjectName("passwordEdit") self.gridlayout.addWidget(self.passwordEdit, 3, 1, 1, 4) self.femaleRadioButton = QtWidgets.QRadioButton(self.mainFrame) self.femaleRadioButton.setObjectName("femaleRadioButton") self.gridlayout.addWidget(self.femaleRadioButton, 1, 2, 1, 2) self.ageSpinBox = QtWidgets.QSpinBox(self.mainFrame) self.ageSpinBox.setMinimum(12) self.ageSpinBox.setProperty("value", 22) self.ageSpinBox.setObjectName("ageSpinBox") self.gridlayout.addWidget(self.ageSpinBox, 2, 1, 1, 2) self.nameCombo = QtWidgets.QComboBox(self.mainFrame) self.nameCombo.setEditable(True) self.nameCombo.setObjectName("nameCombo") self.gridlayout.addWidget(self.nameCombo, 0, 1, 1, 4) spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.gridlayout.addItem(spacerItem, 1, 4, 1, 1) spacerItem1 = QtWidgets.QSpacerItem(61, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.gridlayout.addItem(spacerItem1, 2, 3, 1, 2) self.buttonBox = QtWidgets.QDialogButtonBox(self.mainFrame) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.NoButton|QtWidgets.QDialogButtonBox.Ok) self.buttonBox.setObjectName("buttonBox") self.gridlayout.addWidget(self.buttonBox, 7, 3, 1, 2) self.professionList = QtWidgets.QListWidget(self.mainFrame) self.professionList.setObjectName("professionList") item = QtWidgets.QListWidgetItem() self.professionList.addItem(item) item = QtWidgets.QListWidgetItem() self.professionList.addItem(item) item = QtWidgets.QListWidgetItem() self.professionList.addItem(item) self.gridlayout.addWidget(self.professionList, 5, 1, 1, 4) self.vboxlayout.addWidget(self.mainFrame) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 400, 29)) self.menubar.setObjectName("menubar") self.menu_File = QtWidgets.QMenu(self.menubar) self.menu_File.setObjectName("menu_File") self.menu_Help = QtWidgets.QMenu(self.menubar) self.menu_Help.setObjectName("menu_Help") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.exitAction = QtWidgets.QAction(MainWindow) self.exitAction.setObjectName("exitAction") self.aboutQtAction = QtWidgets.QAction(MainWindow) self.aboutQtAction.setObjectName("aboutQtAction") self.editStyleAction = QtWidgets.QAction(MainWindow) self.editStyleAction.setObjectName("editStyleAction") self.aboutAction = QtWidgets.QAction(MainWindow) self.aboutAction.setObjectName("aboutAction") self.menu_File.addAction(self.editStyleAction) self.menu_File.addSeparator() self.menu_File.addAction(self.exitAction) self.menu_Help.addAction(self.aboutAction) self.menu_Help.addAction(self.aboutQtAction) self.menubar.addAction(self.menu_File.menuAction()) self.menubar.addAction(self.menu_Help.menuAction()) self.label.setBuddy(self.professionList) self.nameLabel.setBuddy(self.nameCombo) self.passwordLabel.setBuddy(self.passwordEdit) self.ageLabel.setBuddy(self.ageSpinBox) self.countryLabel.setBuddy(self.countryCombo) self.retranslateUi(MainWindow) self.countryCombo.setCurrentIndex(6) self.professionList.setCurrentRow(0) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Style Sheet")) self.agreeCheckBox.setToolTip(_translate("MainWindow", "Please read the LICENSE file before checking")) self.agreeCheckBox.setText(_translate("MainWindow", "I accept the terms and &conditions")) self.label.setText(_translate("MainWindow", "Profession:")) self.nameLabel.setText(_translate("MainWindow", "&Name:")) self.maleRadioButton.setToolTip(_translate("MainWindow", "Check this if you are male")) self.maleRadioButton.setText(_translate("MainWindow", "&Male")) self.passwordLabel.setText(_translate("MainWindow", "&Password:")) self.countryCombo.setToolTip(_translate("MainWindow", "Specify country of origin")) self.countryCombo.setStatusTip(_translate("MainWindow", "Specify country of origin")) self.countryCombo.setItemText(0, _translate("MainWindow", "Egypt")) self.countryCombo.setItemText(1, _translate("MainWindow", "France")) self.countryCombo.setItemText(2, _translate("MainWindow", "Germany")) self.countryCombo.setItemText(3, _translate("MainWindow", "India")) self.countryCombo.setItemText(4, _translate("MainWindow", "Italy")) self.countryCombo.setItemText(5, _translate("MainWindow", "Norway")) self.countryCombo.setItemText(6, _translate("MainWindow", "Pakistan")) self.ageLabel.setText(_translate("MainWindow", "&Age:")) self.countryLabel.setText(_translate("MainWindow", "Country:")) self.genderLabel.setText(_translate("MainWindow", "Gender:")) self.passwordEdit.setToolTip(_translate("MainWindow", "Specify your password")) self.passwordEdit.setStatusTip(_translate("MainWindow", "Specify your password")) self.passwordEdit.setText(_translate("MainWindow", "Password")) self.femaleRadioButton.setToolTip(_translate("MainWindow", "Check this if you are female")) self.femaleRadioButton.setText(_translate("MainWindow", "&Female")) self.ageSpinBox.setToolTip(_translate("MainWindow", "Specify your age")) self.ageSpinBox.setStatusTip(_translate("MainWindow", "Specify your age")) self.nameCombo.setToolTip(_translate("MainWindow", "Specify your name")) self.professionList.setToolTip(_translate("MainWindow", "Select your profession")) self.professionList.setStatusTip(_translate("MainWindow", "Specify your name here")) self.professionList.setWhatsThis(_translate("MainWindow", "Specify your name here")) __sortingEnabled = self.professionList.isSortingEnabled() self.professionList.setSortingEnabled(False) item = self.professionList.item(0) item.setText(_translate("MainWindow", "Developer")) item = self.professionList.item(1) item.setText(_translate("MainWindow", "Student")) item = self.professionList.item(2) item.setText(_translate("MainWindow", "Fisherman")) self.professionList.setSortingEnabled(__sortingEnabled) self.menu_File.setTitle(_translate("MainWindow", "&File")) self.menu_Help.setTitle(_translate("MainWindow", "&Help")) self.exitAction.setText(_translate("MainWindow", "&Exit")) self.aboutQtAction.setText(_translate("MainWindow", "About Qt")) self.editStyleAction.setText(_translate("MainWindow", "Edit &Style...")) self.aboutAction.setText(_translate("MainWindow", "About")) PyQt5_gpl-5.10.1/examples/widgets/stylesheet/ui_stylesheeteditor.py0000644000076500000240000001145513245231431025631 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'stylesheeteditor.ui' # # Created: Fri Jul 26 06:50:07 2013 # by: PyQt5 UI code generator 5.0.1-snapshot-2a99e59669ee # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_StyleSheetEditor(object): def setupUi(self, StyleSheetEditor): StyleSheetEditor.setObjectName("StyleSheetEditor") StyleSheetEditor.resize(445, 289) self.gridlayout = QtWidgets.QGridLayout(StyleSheetEditor) self.gridlayout.setContentsMargins(9, 9, 9, 9) self.gridlayout.setSpacing(6) self.gridlayout.setObjectName("gridlayout") spacerItem = QtWidgets.QSpacerItem(32, 20, QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Minimum) self.gridlayout.addItem(spacerItem, 0, 6, 1, 1) spacerItem1 = QtWidgets.QSpacerItem(32, 20, QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Minimum) self.gridlayout.addItem(spacerItem1, 0, 0, 1, 1) self.styleSheetCombo = QtWidgets.QComboBox(StyleSheetEditor) self.styleSheetCombo.setObjectName("styleSheetCombo") self.styleSheetCombo.addItem("") self.styleSheetCombo.addItem("") self.styleSheetCombo.addItem("") self.gridlayout.addWidget(self.styleSheetCombo, 0, 5, 1, 1) spacerItem2 = QtWidgets.QSpacerItem(10, 16, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) self.gridlayout.addItem(spacerItem2, 0, 3, 1, 1) self.styleCombo = QtWidgets.QComboBox(StyleSheetEditor) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.styleCombo.sizePolicy().hasHeightForWidth()) self.styleCombo.setSizePolicy(sizePolicy) self.styleCombo.setObjectName("styleCombo") self.gridlayout.addWidget(self.styleCombo, 0, 2, 1, 1) self.label_7 = QtWidgets.QLabel(StyleSheetEditor) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_7.sizePolicy().hasHeightForWidth()) self.label_7.setSizePolicy(sizePolicy) self.label_7.setObjectName("label_7") self.gridlayout.addWidget(self.label_7, 0, 1, 1, 1) self.hboxlayout = QtWidgets.QHBoxLayout() self.hboxlayout.setSpacing(6) self.hboxlayout.setContentsMargins(0, 0, 0, 0) self.hboxlayout.setObjectName("hboxlayout") spacerItem3 = QtWidgets.QSpacerItem(321, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.hboxlayout.addItem(spacerItem3) self.saveButton = QtWidgets.QPushButton(StyleSheetEditor) self.saveButton.setEnabled(True) self.saveButton.setObjectName("saveButton") self.hboxlayout.addWidget(self.saveButton) self.applyButton = QtWidgets.QPushButton(StyleSheetEditor) self.applyButton.setEnabled(False) self.applyButton.setObjectName("applyButton") self.hboxlayout.addWidget(self.applyButton) self.gridlayout.addLayout(self.hboxlayout, 2, 0, 1, 7) self.styleTextEdit = QtWidgets.QTextEdit(StyleSheetEditor) self.styleTextEdit.setObjectName("styleTextEdit") self.gridlayout.addWidget(self.styleTextEdit, 1, 0, 1, 7) self.label_8 = QtWidgets.QLabel(StyleSheetEditor) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_8.sizePolicy().hasHeightForWidth()) self.label_8.setSizePolicy(sizePolicy) self.label_8.setObjectName("label_8") self.gridlayout.addWidget(self.label_8, 0, 4, 1, 1) self.retranslateUi(StyleSheetEditor) QtCore.QMetaObject.connectSlotsByName(StyleSheetEditor) def retranslateUi(self, StyleSheetEditor): _translate = QtCore.QCoreApplication.translate StyleSheetEditor.setWindowTitle(_translate("StyleSheetEditor", "Style Editor")) self.styleSheetCombo.setItemText(0, _translate("StyleSheetEditor", "Default")) self.styleSheetCombo.setItemText(1, _translate("StyleSheetEditor", "Coffee")) self.styleSheetCombo.setItemText(2, _translate("StyleSheetEditor", "Pagefold")) self.label_7.setText(_translate("StyleSheetEditor", "Style:")) self.saveButton.setText(_translate("StyleSheetEditor", "&Save")) self.applyButton.setText(_translate("StyleSheetEditor", "&Apply")) self.label_8.setText(_translate("StyleSheetEditor", "Style Sheet:")) PyQt5_gpl-5.10.1/examples/widgets/tetrix.py0000755000076500000240000004034013245231431020660 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import copy import random from PyQt5.QtCore import pyqtSignal, QBasicTimer, QSize, Qt from PyQt5.QtGui import QColor, QPainter, QPixmap from PyQt5.QtWidgets import (QApplication, QFrame, QGridLayout, QLabel, QLCDNumber, QPushButton, QWidget) NoShape, ZShape, SShape, LineShape, TShape, SquareShape, LShape, MirroredLShape = range(8) class TetrixWindow(QWidget): def __init__(self): super(TetrixWindow, self).__init__() self.board = TetrixBoard() nextPieceLabel = QLabel() nextPieceLabel.setFrameStyle(QFrame.Box | QFrame.Raised) nextPieceLabel.setAlignment(Qt.AlignCenter) self.board.setNextPieceLabel(nextPieceLabel) scoreLcd = QLCDNumber(5) scoreLcd.setSegmentStyle(QLCDNumber.Filled) levelLcd = QLCDNumber(2) levelLcd.setSegmentStyle(QLCDNumber.Filled) linesLcd = QLCDNumber(5) linesLcd.setSegmentStyle(QLCDNumber.Filled) startButton = QPushButton("&Start") startButton.setFocusPolicy(Qt.NoFocus) quitButton = QPushButton("&Quit") quitButton.setFocusPolicy(Qt.NoFocus) pauseButton = QPushButton("&Pause") pauseButton.setFocusPolicy(Qt.NoFocus) startButton.clicked.connect(self.board.start) pauseButton.clicked.connect(self.board.pause) quitButton.clicked.connect(QApplication.instance().quit) self.board.scoreChanged.connect(scoreLcd.display) self.board.levelChanged.connect(levelLcd.display) self.board.linesRemovedChanged.connect(linesLcd.display) layout = QGridLayout() layout.addWidget(self.createLabel("NEXT"), 0, 0) layout.addWidget(nextPieceLabel, 1, 0) layout.addWidget(self.createLabel("LEVEL"), 2, 0) layout.addWidget(levelLcd, 3, 0) layout.addWidget(startButton, 4, 0) layout.addWidget(self.board, 0, 1, 6, 1) layout.addWidget(self.createLabel("SCORE"), 0, 2) layout.addWidget(scoreLcd, 1, 2) layout.addWidget(self.createLabel("LINES REMOVED"), 2, 2) layout.addWidget(linesLcd, 3, 2) layout.addWidget(quitButton, 4, 2) layout.addWidget(pauseButton, 5, 2) self.setLayout(layout) self.setWindowTitle("Tetrix") self.resize(550, 370) def createLabel(self, text): lbl = QLabel(text) lbl.setAlignment(Qt.AlignHCenter | Qt.AlignBottom) return lbl class TetrixBoard(QFrame): BoardWidth = 10 BoardHeight = 22 scoreChanged = pyqtSignal(int) levelChanged = pyqtSignal(int) linesRemovedChanged = pyqtSignal(int) def __init__(self, parent=None): super(TetrixBoard, self).__init__(parent) self.timer = QBasicTimer() self.nextPieceLabel = None self.isWaitingAfterLine = False self.curPiece = TetrixPiece() self.nextPiece = TetrixPiece() self.curX = 0 self.curY = 0 self.numLinesRemoved = 0 self.numPiecesDropped = 0 self.score = 0 self.level = 0 self.board = None self.setFrameStyle(QFrame.Panel | QFrame.Sunken) self.setFocusPolicy(Qt.StrongFocus) self.isStarted = False self.isPaused = False self.clearBoard() self.nextPiece.setRandomShape() def shapeAt(self, x, y): return self.board[(y * TetrixBoard.BoardWidth) + x] def setShapeAt(self, x, y, shape): self.board[(y * TetrixBoard.BoardWidth) + x] = shape def timeoutTime(self): return 1000 / (1 + self.level) def squareWidth(self): return self.contentsRect().width() / TetrixBoard.BoardWidth def squareHeight(self): return self.contentsRect().height() / TetrixBoard.BoardHeight def setNextPieceLabel(self, label): self.nextPieceLabel = label def sizeHint(self): return QSize(TetrixBoard.BoardWidth * 15 + self.frameWidth() * 2, TetrixBoard.BoardHeight * 15 + self.frameWidth() * 2) def minimumSizeHint(self): return QSize(TetrixBoard.BoardWidth * 5 + self.frameWidth() * 2, TetrixBoard.BoardHeight * 5 + self.frameWidth() * 2) def start(self): if self.isPaused: return self.isStarted = True self.isWaitingAfterLine = False self.numLinesRemoved = 0 self.numPiecesDropped = 0 self.score = 0 self.level = 1 self.clearBoard() self.linesRemovedChanged.emit(self.numLinesRemoved) self.scoreChanged.emit(self.score) self.levelChanged.emit(self.level) self.newPiece() self.timer.start(self.timeoutTime(), self) def pause(self): if not self.isStarted: return self.isPaused = not self.isPaused if self.isPaused: self.timer.stop() else: self.timer.start(self.timeoutTime(), self) self.update() def paintEvent(self, event): super(TetrixBoard, self).paintEvent(event) painter = QPainter(self) rect = self.contentsRect() if self.isPaused: painter.drawText(rect, Qt.AlignCenter, "Pause") return boardTop = rect.bottom() - TetrixBoard.BoardHeight * self.squareHeight() for i in range(TetrixBoard.BoardHeight): for j in range(TetrixBoard.BoardWidth): shape = self.shapeAt(j, TetrixBoard.BoardHeight - i - 1) if shape != NoShape: self.drawSquare(painter, rect.left() + j * self.squareWidth(), boardTop + i * self.squareHeight(), shape) if self.curPiece.shape() != NoShape: for i in range(4): x = self.curX + self.curPiece.x(i) y = self.curY - self.curPiece.y(i) self.drawSquare(painter, rect.left() + x * self.squareWidth(), boardTop + (TetrixBoard.BoardHeight - y - 1) * self.squareHeight(), self.curPiece.shape()) def keyPressEvent(self, event): if not self.isStarted or self.isPaused or self.curPiece.shape() == NoShape: super(TetrixBoard, self).keyPressEvent(event) return key = event.key() if key == Qt.Key_Left: self.tryMove(self.curPiece, self.curX - 1, self.curY) elif key == Qt.Key_Right: self.tryMove(self.curPiece, self.curX + 1, self.curY) elif key == Qt.Key_Down: self.tryMove(self.curPiece.rotatedRight(), self.curX, self.curY) elif key == Qt.Key_Up: self.tryMove(self.curPiece.rotatedLeft(), self.curX, self.curY) elif key == Qt.Key_Space: self.dropDown() elif key == Qt.Key_D: self.oneLineDown() else: super(TetrixBoard, self).keyPressEvent(event) def timerEvent(self, event): if event.timerId() == self.timer.timerId(): if self.isWaitingAfterLine: self.isWaitingAfterLine = False self.newPiece() self.timer.start(self.timeoutTime(), self) else: self.oneLineDown() else: super(TetrixBoard, self).timerEvent(event) def clearBoard(self): self.board = [NoShape for i in range(TetrixBoard.BoardHeight * TetrixBoard.BoardWidth)] def dropDown(self): dropHeight = 0 newY = self.curY while newY > 0: if not self.tryMove(self.curPiece, self.curX, newY - 1): break newY -= 1 dropHeight += 1 self.pieceDropped(dropHeight) def oneLineDown(self): if not self.tryMove(self.curPiece, self.curX, self.curY - 1): self.pieceDropped(0) def pieceDropped(self, dropHeight): for i in range(4): x = self.curX + self.curPiece.x(i) y = self.curY - self.curPiece.y(i) self.setShapeAt(x, y, self.curPiece.shape()) self.numPiecesDropped += 1 if self.numPiecesDropped % 25 == 0: self.level += 1 self.timer.start(self.timeoutTime(), self) self.levelChanged.emit(self.level) self.score += dropHeight + 7 self.scoreChanged.emit(self.score) self.removeFullLines() if not self.isWaitingAfterLine: self.newPiece() def removeFullLines(self): numFullLines = 0 for i in range(TetrixBoard.BoardHeight - 1, -1, -1): lineIsFull = True for j in range(TetrixBoard.BoardWidth): if self.shapeAt(j, i) == NoShape: lineIsFull = False break if lineIsFull: numFullLines += 1 for k in range(TetrixBoard.BoardHeight - 1): for j in range(TetrixBoard.BoardWidth): self.setShapeAt(j, k, self.shapeAt(j, k + 1)) for j in range(TetrixBoard.BoardWidth): self.setShapeAt(j, TetrixBoard.BoardHeight - 1, NoShape) if numFullLines > 0: self.numLinesRemoved += numFullLines self.score += 10 * numFullLines self.linesRemovedChanged.emit(self.numLinesRemoved) self.scoreChanged.emit(self.score) self.timer.start(500, self) self.isWaitingAfterLine = True self.curPiece.setShape(NoShape) self.update() def newPiece(self): self.curPiece = copy.deepcopy(self.nextPiece) self.nextPiece.setRandomShape() self.showNextPiece() self.curX = TetrixBoard.BoardWidth // 2 + 1 self.curY = TetrixBoard.BoardHeight - 1 + self.curPiece.minY() if not self.tryMove(self.curPiece, self.curX, self.curY): self.curPiece.setShape(NoShape) self.timer.stop() self.isStarted = False def showNextPiece(self): if self.nextPieceLabel is None: return dx = self.nextPiece.maxX() - self.nextPiece.minX() + 1 dy = self.nextPiece.maxY() - self.nextPiece.minY() + 1 pixmap = QPixmap(dx * self.squareWidth(), dy * self.squareHeight()) painter = QPainter(pixmap) painter.fillRect(pixmap.rect(), self.nextPieceLabel.palette().window()) for i in range(4): x = self.nextPiece.x(i) - self.nextPiece.minX() y = self.nextPiece.y(i) - self.nextPiece.minY() self.drawSquare(painter, x * self.squareWidth(), y * self.squareHeight(), self.nextPiece.shape()) painter.end() self.nextPieceLabel.setPixmap(pixmap) def tryMove(self, newPiece, newX, newY): for i in range(4): x = newX + newPiece.x(i) y = newY - newPiece.y(i) if x < 0 or x >= TetrixBoard.BoardWidth or y < 0 or y >= TetrixBoard.BoardHeight: return False if self.shapeAt(x, y) != NoShape: return False self.curPiece = newPiece self.curX = newX self.curY = newY self.update() return True def drawSquare(self, painter, x, y, shape): colorTable = [0x000000, 0xCC6666, 0x66CC66, 0x6666CC, 0xCCCC66, 0xCC66CC, 0x66CCCC, 0xDAAA00] color = QColor(colorTable[shape]) painter.fillRect(x + 1, y + 1, self.squareWidth() - 2, self.squareHeight() - 2, color) painter.setPen(color.lighter()) painter.drawLine(x, y + self.squareHeight() - 1, x, y) painter.drawLine(x, y, x + self.squareWidth() - 1, y) painter.setPen(color.darker()) painter.drawLine(x + 1, y + self.squareHeight() - 1, x + self.squareWidth() - 1, y + self.squareHeight() - 1) painter.drawLine(x + self.squareWidth() - 1, y + self.squareHeight() - 1, x + self.squareWidth() - 1, y + 1) class TetrixPiece(object): coordsTable = ( ((0, 0), (0, 0), (0, 0), (0, 0)), ((0, -1), (0, 0), (-1, 0), (-1, 1)), ((0, -1), (0, 0), (1, 0), (1, 1)), ((0, -1), (0, 0), (0, 1), (0, 2)), ((-1, 0), (0, 0), (1, 0), (0, 1)), ((0, 0), (1, 0), (0, 1), (1, 1)), ((-1, -1), (0, -1), (0, 0), (0, 1)), ((1, -1), (0, -1), (0, 0), (0, 1)) ) def __init__(self): self.coords = [[0, 0] for _ in range(4)] self.pieceShape = NoShape self.setShape(NoShape) def shape(self): return self.pieceShape def setShape(self, shape): table = TetrixPiece.coordsTable[shape] for i in range(4): for j in range(2): self.coords[i][j] = table[i][j] self.pieceShape = shape def setRandomShape(self): self.setShape(random.randint(1, 7)) def x(self, index): return self.coords[index][0] def y(self, index): return self.coords[index][1] def setX(self, index, x): self.coords[index][0] = x def setY(self, index, y): self.coords[index][1] = y def minX(self): m = self.coords[0][0] for i in range(4): m = min(m, self.coords[i][0]) return m def maxX(self): m = self.coords[0][0] for i in range(4): m = max(m, self.coords[i][0]) return m def minY(self): m = self.coords[0][1] for i in range(4): m = min(m, self.coords[i][1]) return m def maxY(self): m = self.coords[0][1] for i in range(4): m = max(m, self.coords[i][1]) return m def rotatedLeft(self): if self.pieceShape == SquareShape: return self result = TetrixPiece() result.pieceShape = self.pieceShape for i in range(4): result.setX(i, self.y(i)) result.setY(i, -self.x(i)) return result def rotatedRight(self): if self.pieceShape == SquareShape: return self result = TetrixPiece() result.pieceShape = self.pieceShape for i in range(4): result.setX(i, -self.y(i)) result.setY(i, self.x(i)) return result if __name__ == '__main__': import sys app = QApplication(sys.argv) window = TetrixWindow() window.show() random.seed(None) sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/tooltips/0000755000076500000240000000000013245231431020640 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/widgets/tooltips/images/0000755000076500000240000000000013245231431022105 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/widgets/tooltips/images/circle.png0000644000076500000240000000024513245231431024055 0ustar philstaff00000000000000‰PNG  IHDR szzôlIDATXÃí×[ DQË´D»dÕ1ß÷|Ѧôè©“‹æR‡YF Ü@bâ^ÄÑø.·" q "p%>Cü ¸ï!@=D}ÇÅLH1Sì›ÅnÝŽTó¡#ÛÕIEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/tooltips/images/square.png0000644000076500000240000000013613245231431024113 0ustar philstaff00000000000000‰PNG  IHDR I´è·PLTEX¨ÿŒ«IDAT×c`úÿÿÿ >MhkÏ¸Ž†IEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/tooltips/images/triangle.png0000644000076500000240000000025213245231431024417 0ustar philstaff00000000000000‰PNG  IHDR szzôqIDATXÃíÎK €0ÑÓ#zË‚¸Pb’ùÕfz]¯µZÍ6¹ÏÄSú ħ(àÏD ãY0G#PÀr<±÷F uÜaŽ[(À-®E ÷ø",¾Š@áñ?DZ|„@éñ7Bàר]o—ˆ8©IEND®B`‚PyQt5_gpl-5.10.1/examples/widgets/tooltips/tooltips.py0000755000076500000240000002276413245231431023105 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import random from PyQt5.QtCore import QEvent, QPoint, QPointF, QSize, Qt from PyQt5.QtGui import QColor, QIcon, QPainter, QPainterPath, QPalette from PyQt5.QtWidgets import (QApplication, QStyle, QToolButton, QToolTip, QWidget) import tooltips_rc class ShapeItem(object): def __init__(self): self.myPath = QPainterPath() self.myPosition = QPoint() self.myColor = QColor() self.myToolTip = '' def path(self): return self.myPath def position(self): return self.myPosition def color(self): return self.myColor def toolTip(self): return self.myToolTip def setPath(self, path): self.myPath = path def setToolTip(self, toolTip): self.myToolTip = toolTip def setPosition(self, position): self.myPosition = position def setColor(self, color): self.myColor = color class SortingBox(QWidget): circle_count = square_count = triangle_count = 1 def __init__(self): super(SortingBox, self).__init__() self.circlePath = QPainterPath() self.squarePath = QPainterPath() self.trianglePath = QPainterPath() self.shapeItems = [] self.previousPosition = QPoint() self.setMouseTracking(True) self.setBackgroundRole(QPalette.Base) self.itemInMotion = None self.newCircleButton = self.createToolButton("New Circle", QIcon(':/images/circle.png'), self.createNewCircle) self.newSquareButton = self.createToolButton("New Square", QIcon(':/images/square.png'), self.createNewSquare) self.newTriangleButton = self.createToolButton("New Triangle", QIcon(':/images/triangle.png'), self.createNewTriangle) self.circlePath.addEllipse(0, 0, 100, 100) self.squarePath.addRect(0, 0, 100, 100) x = self.trianglePath.currentPosition().x() y = self.trianglePath.currentPosition().y() self.trianglePath.moveTo(x + 120 / 2, y) self.trianglePath.lineTo(0, 100) self.trianglePath.lineTo(120, 100) self.trianglePath.lineTo(x + 120 / 2, y) self.setWindowTitle("Tooltips") self.resize(500, 300) self.createShapeItem(self.circlePath, "Circle", self.initialItemPosition(self.circlePath), self.initialItemColor()) self.createShapeItem(self.squarePath, "Square", self.initialItemPosition(self.squarePath), self.initialItemColor()) self.createShapeItem(self.trianglePath, "Triangle", self.initialItemPosition(self.trianglePath), self.initialItemColor()) def event(self, event): if event.type() == QEvent.ToolTip: helpEvent = event index = self.itemAt(helpEvent.pos()) if index != -1: QToolTip.showText(helpEvent.globalPos(), self.shapeItems[index].toolTip()) else: QToolTip.hideText() event.ignore() return True return super(SortingBox, self).event(event) def resizeEvent(self, event): margin = self.style().pixelMetric(QStyle.PM_DefaultTopLevelMargin) x = self.width() - margin y = self.height() - margin y = self.updateButtonGeometry(self.newCircleButton, x, y) y = self.updateButtonGeometry(self.newSquareButton, x, y) self.updateButtonGeometry(self.newTriangleButton, x, y) def paintEvent(self, event): painter = QPainter(self) painter.setRenderHint(QPainter.Antialiasing) for shapeItem in self.shapeItems: painter.translate(shapeItem.position()) painter.setBrush(shapeItem.color()) painter.drawPath(shapeItem.path()) painter.translate(-shapeItem.position()) def mousePressEvent(self, event): if event.button() == Qt.LeftButton: index = self.itemAt(event.pos()) if index != -1: self.itemInMotion = self.shapeItems[index] self.previousPosition = event.pos() value = self.shapeItems[index] del self.shapeItems[index] self.shapeItems.insert(len(self.shapeItems) - 1, value) self.update() def mouseMoveEvent(self, event): if (event.buttons() & Qt.LeftButton) and self.itemInMotion: self.moveItemTo(event.pos()) def mouseReleaseEvent(self, event): if (event.button() == Qt.LeftButton) and self.itemInMotion: self.moveItemTo(event.pos()) self.itemInMotion = None def createNewCircle(self): SortingBox.circle_count += 1 self.createShapeItem(self.circlePath, "Circle <%d>" % SortingBox.circle_count, self.randomItemPosition(), self.randomItemColor()) def createNewSquare(self): SortingBox.square_count += 1 self.createShapeItem(self.squarePath, "Square <%d>" % SortingBox.square_count, self.randomItemPosition(), self.randomItemColor()) def createNewTriangle(self): SortingBox.triangle_count += 1 self.createShapeItem(self.trianglePath, "Triangle <%d>" % SortingBox.triangle_count, self.randomItemPosition(), self.randomItemColor()) def itemAt(self, pos): for i in range(len(self.shapeItems) - 1, -1, -1): item = self.shapeItems[i] if item.path().contains(QPointF(pos - item.position())): return i return -1 def moveItemTo(self, pos): offset = pos - self.previousPosition self.itemInMotion.setPosition(self.itemInMotion.position() + offset) self.previousPosition = QPoint(pos) self.update() def updateButtonGeometry(self, button, x, y): size = button.sizeHint() button.setGeometry(x - size.width(), y - size.height(), size.width(), size.height()) return y - size.height() - self.style().pixelMetric(QStyle.PM_DefaultLayoutSpacing) def createShapeItem(self, path, toolTip, pos, color): shapeItem = ShapeItem() shapeItem.setPath(path) shapeItem.setToolTip(toolTip) shapeItem.setPosition(pos) shapeItem.setColor(color) self.shapeItems.append(shapeItem) self.update() def createToolButton(self, toolTip, icon, member): button = QToolButton(self) button.setToolTip(toolTip) button.setIcon(icon) button.setIconSize(QSize(32, 32)) button.clicked.connect(member) return button def initialItemPosition(self, path): y = (self.height() - path.controlPointRect().height()) / 2 if len(self.shapeItems) == 0: x = ((3 * self.width()) / 2 - path.controlPointRect().width()) / 2 else: x = (self.width() / len(self.shapeItems) - path.controlPointRect().width()) / 2 return QPoint(x, y) def randomItemPosition(self): x = random.randint(0, self.width() - 120) y = random.randint(0, self.height() - 120) return QPoint(x, y) def initialItemColor(self): hue = ((len(self.shapeItems) + 1) * 85) % 256 return QColor.fromHsv(hue, 255, 190) def randomItemColor(self): return QColor.fromHsv(random.randint(0, 256), 255, 190) if __name__ == "__main__": import sys app = QApplication(sys.argv) sortingBox = SortingBox() sortingBox.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/tooltips/tooltips.qrc0000644000076500000240000000025213245231431023223 0ustar philstaff00000000000000 images/circle.png images/square.png images/triangle.png PyQt5_gpl-5.10.1/examples/widgets/tooltips/tooltips_rc.py0000644000076500000240000000605413245231431023560 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Wed May 15 13:21:51 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x00\x5e\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x20\x00\x00\x00\x20\x01\x03\x00\x00\x00\x49\xb4\xe8\xb7\ \x00\x00\x00\x06\x50\x4c\x54\x45\x00\x00\x00\x58\xa8\xff\x8c\x14\ \x1f\xab\x00\x00\x00\x13\x49\x44\x41\x54\x08\xd7\x63\x60\x00\x81\ \xfa\xff\xff\xff\x0d\x3e\x02\x04\x00\x8d\x4d\x68\x6b\xcf\xb8\x8e\ \x86\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\xaa\ \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\x00\x71\x49\x44\x41\x54\x58\xc3\xed\xce\x4b\x0a\x80\x30\ \x10\x04\xd1\x1c\xd3\x23\x7a\xcb\x11\x82\xb8\x50\x62\x92\xf9\xd5\ \x66\x1a\x7a\x5d\xaf\xb5\x5a\xcd\x36\xb9\xcf\xc4\x8f\x53\xfa\x09\ \xc4\x13\xa7\x10\x28\xe0\x13\xcf\x44\x0c\xe3\x59\x08\x14\x30\x8d\ \x47\x23\x50\xc0\x72\x3c\x02\xb1\x1d\xf7\x46\xa0\x00\x75\xdc\x03\ \x61\x8e\x5b\x11\x28\xc0\x2d\xae\x45\xa0\x00\xf7\xf8\x0e\x22\x2c\ \xbe\x8a\x40\x01\xe1\xf1\x3f\x44\x5a\x7c\x84\x40\x01\xe9\xf1\x37\ \x42\xe0\xd7\xd8\x5d\x0f\x6f\x97\x11\x88\x38\xa9\x1e\x00\x00\x00\ \x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x00\xa5\ \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\x00\x6c\x49\x44\x41\x54\x58\xc3\xed\xd7\x5b\x0e\x00\x10\ \x0c\x44\x51\xcb\xb4\x44\xbb\x64\x03\x1e\xd5\x18\x1d\x31\x12\xdf\ \xf7\x7c\xd1\xa6\xf4\xe8\xa9\x93\x8b\x8f\xe6\x52\x87\x17\x81\x59\ \x46\x0d\x18\x7f\xdc\x13\x1e\x40\x62\xe2\x5e\xc4\xd1\xf8\x2e\x02\ \x12\xb7\x22\xa0\x71\x0b\x22\x14\x70\x25\x3e\x43\xfc\x0d\xb8\x1a\ \xef\x21\x04\x10\x40\x00\x3d\x44\x14\x00\x7d\xc7\x14\x13\x11\xc5\ \x4c\x48\x31\x15\x53\xec\x05\x14\x9b\x11\xc5\x6e\x08\xdd\x8e\x1b\ \x14\x54\x19\xf3\xa1\x23\xdb\xd5\x00\x00\x00\x00\x49\x45\x4e\x44\ \xae\x42\x60\x82\ " qt_resource_name = b"\ \x00\x06\ \x07\x03\x7d\xc3\ \x00\x69\ \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x73\ \x00\x0a\ \x08\x8b\x06\x27\ \x00\x73\ \x00\x71\x00\x75\x00\x61\x00\x72\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0c\ \x05\x59\xa7\xc7\ \x00\x74\ \x00\x72\x00\x69\x00\x61\x00\x6e\x00\x67\x00\x6c\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ \x00\x0a\ \x0a\x2d\x16\x47\ \x00\x63\ \x00\x69\x00\x72\x00\x63\x00\x6c\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\ \x00\x00\x00\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x00\x62\ \x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x4a\x00\x00\x00\x00\x00\x01\x00\x00\x01\x10\ " 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() PyQt5_gpl-5.10.1/examples/widgets/wiggly.py0000755000076500000240000001024413245231431020643 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QBasicTimer from PyQt5.QtGui import QColor, QFontMetrics, QPainter, QPalette from PyQt5.QtWidgets import (QApplication, QDialog, QLineEdit, QVBoxLayout, QWidget) class WigglyWidget(QWidget): def __init__(self, parent=None): super(WigglyWidget, self).__init__(parent) self.setBackgroundRole(QPalette.Midlight) self.setAutoFillBackground(True) newFont = self.font() newFont.setPointSize(newFont.pointSize() + 20) self.setFont(newFont) self.timer = QBasicTimer() self.text = '' self.step = 0; self.timer.start(60, self) def paintEvent(self, event): sineTable = (0, 38, 71, 92, 100, 92, 71, 38, 0, -38, -71, -92, -100, -92, -71, -38) metrics = QFontMetrics(self.font()) x = (self.width() - metrics.width(self.text)) / 2 y = (self.height() + metrics.ascent() - metrics.descent()) / 2 color = QColor() painter = QPainter(self) for i, ch in enumerate(self.text): index = (self.step + i) % 16 color.setHsv((15 - index) * 16, 255, 191) painter.setPen(color) painter.drawText(x, y - ((sineTable[index] * metrics.height()) / 400), ch) x += metrics.width(ch) def setText(self, newText): self.text = newText def timerEvent(self, event): if event.timerId() == self.timer.timerId(): self.step += 1 self.update() else: super(WigglyWidget, self).timerEvent(event) class Dialog(QDialog): def __init__(self, parent=None): super(Dialog, self).__init__(parent) wigglyWidget = WigglyWidget() lineEdit = QLineEdit() layout = QVBoxLayout() layout.addWidget(wigglyWidget) layout.addWidget(lineEdit) self.setLayout(layout) lineEdit.textChanged.connect(wigglyWidget.setText) lineEdit.setText("Hello world!") self.setWindowTitle("Wiggly") self.resize(360, 145) if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = Dialog() dialog.show(); sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/widgets/windowflags.py0000755000076500000240000002656513245231431021702 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QApplication, QCheckBox, QGridLayout, QGroupBox, QHBoxLayout, QPushButton, QRadioButton, QTextEdit, QVBoxLayout, QWidget) class PreviewWindow(QWidget): def __init__(self, parent=None): super(PreviewWindow, self).__init__(parent) self.textEdit = QTextEdit() self.textEdit.setReadOnly(True) self.textEdit.setLineWrapMode(QTextEdit.NoWrap) closeButton = QPushButton("&Close") closeButton.clicked.connect(self.close) layout = QVBoxLayout() layout.addWidget(self.textEdit) layout.addWidget(closeButton) self.setLayout(layout) self.setWindowTitle("Preview") def setWindowFlags(self, flags): super(PreviewWindow, self).setWindowFlags(flags) flag_type = (flags & Qt.WindowType_Mask) if flag_type == Qt.Window: text = "Qt.Window" elif flag_type == Qt.Dialog: text = "Qt.Dialog" elif flag_type == Qt.Sheet: text = "Qt.Sheet" elif flag_type == Qt.Drawer: text = "Qt.Drawer" elif flag_type == Qt.Popup: text = "Qt.Popup" elif flag_type == Qt.Tool: text = "Qt.Tool" elif flag_type == Qt.ToolTip: text = "Qt.ToolTip" elif flag_type == Qt.SplashScreen: text = "Qt.SplashScreen" else: text = "" if flags & Qt.MSWindowsFixedSizeDialogHint: text += "\n| Qt.MSWindowsFixedSizeDialogHint" if flags & Qt.X11BypassWindowManagerHint: text += "\n| Qt.X11BypassWindowManagerHint" if flags & Qt.FramelessWindowHint: text += "\n| Qt.FramelessWindowHint" if flags & Qt.WindowTitleHint: text += "\n| Qt.WindowTitleHint" if flags & Qt.WindowSystemMenuHint: text += "\n| Qt.WindowSystemMenuHint" if flags & Qt.WindowMinimizeButtonHint: text += "\n| Qt.WindowMinimizeButtonHint" if flags & Qt.WindowMaximizeButtonHint: text += "\n| Qt.WindowMaximizeButtonHint" if flags & Qt.WindowCloseButtonHint: text += "\n| Qt.WindowCloseButtonHint" if flags & Qt.WindowContextHelpButtonHint: text += "\n| Qt.WindowContextHelpButtonHint" if flags & Qt.WindowShadeButtonHint: text += "\n| Qt.WindowShadeButtonHint" if flags & Qt.WindowStaysOnTopHint: text += "\n| Qt.WindowStaysOnTopHint" if flags & Qt.WindowStaysOnBottomHint: text += "\n| Qt.WindowStaysOnBottomHint" if flags & Qt.CustomizeWindowHint: text += "\n| Qt.CustomizeWindowHint" self.textEdit.setPlainText(text) class ControllerWindow(QWidget): def __init__(self): super(ControllerWindow, self).__init__() self.previewWindow = PreviewWindow(self) self.createTypeGroupBox() self.createHintsGroupBox() quitButton = QPushButton("&Quit") quitButton.clicked.connect(self.close) bottomLayout = QHBoxLayout() bottomLayout.addStretch() bottomLayout.addWidget(quitButton) mainLayout = QVBoxLayout() mainLayout.addWidget(self.typeGroupBox) mainLayout.addWidget(self.hintsGroupBox) mainLayout.addLayout(bottomLayout) self.setLayout(mainLayout) self.setWindowTitle("Window Flags") self.updatePreview() def updatePreview(self): flags = Qt.WindowFlags() if self.windowRadioButton.isChecked(): flags = Qt.Window elif self.dialogRadioButton.isChecked(): flags = Qt.Dialog elif self.sheetRadioButton.isChecked(): flags = Qt.Sheet elif self.drawerRadioButton.isChecked(): flags = Qt.Drawer elif self.popupRadioButton.isChecked(): flags = Qt.Popup elif self.toolRadioButton.isChecked(): flags = Qt.Tool elif self.toolTipRadioButton.isChecked(): flags = Qt.ToolTip elif self.splashScreenRadioButton.isChecked(): flags = Qt.SplashScreen if self.msWindowsFixedSizeDialogCheckBox.isChecked(): flags |= Qt.MSWindowsFixedSizeDialogHint if self.x11BypassWindowManagerCheckBox.isChecked(): flags |= Qt.X11BypassWindowManagerHint if self.framelessWindowCheckBox.isChecked(): flags |= Qt.FramelessWindowHint if self.windowTitleCheckBox.isChecked(): flags |= Qt.WindowTitleHint if self.windowSystemMenuCheckBox.isChecked(): flags |= Qt.WindowSystemMenuHint if self.windowMinimizeButtonCheckBox.isChecked(): flags |= Qt.WindowMinimizeButtonHint if self.windowMaximizeButtonCheckBox.isChecked(): flags |= Qt.WindowMaximizeButtonHint if self.windowCloseButtonCheckBox.isChecked(): flags |= Qt.WindowCloseButtonHint if self.windowContextHelpButtonCheckBox.isChecked(): flags |= Qt.WindowContextHelpButtonHint if self.windowShadeButtonCheckBox.isChecked(): flags |= Qt.WindowShadeButtonHint if self.windowStaysOnTopCheckBox.isChecked(): flags |= Qt.WindowStaysOnTopHint if self.windowStaysOnBottomCheckBox.isChecked(): flags |= Qt.WindowStaysOnBottomHint if self.customizeWindowHintCheckBox.isChecked(): flags |= Qt.CustomizeWindowHint self.previewWindow.setWindowFlags(flags) pos = self.previewWindow.pos() if pos.x() < 0: pos.setX(0) if pos.y() < 0: pos.setY(0) self.previewWindow.move(pos) self.previewWindow.show() def createTypeGroupBox(self): self.typeGroupBox = QGroupBox("Type") self.windowRadioButton = self.createRadioButton("Window") self.dialogRadioButton = self.createRadioButton("Dialog") self.sheetRadioButton = self.createRadioButton("Sheet") self.drawerRadioButton = self.createRadioButton("Drawer") self.popupRadioButton = self.createRadioButton("Popup") self.toolRadioButton = self.createRadioButton("Tool") self.toolTipRadioButton = self.createRadioButton("Tooltip") self.splashScreenRadioButton = self.createRadioButton("Splash screen") self.windowRadioButton.setChecked(True) layout = QGridLayout() layout.addWidget(self.windowRadioButton, 0, 0) layout.addWidget(self.dialogRadioButton, 1, 0) layout.addWidget(self.sheetRadioButton, 2, 0) layout.addWidget(self.drawerRadioButton, 3, 0) layout.addWidget(self.popupRadioButton, 0, 1) layout.addWidget(self.toolRadioButton, 1, 1) layout.addWidget(self.toolTipRadioButton, 2, 1) layout.addWidget(self.splashScreenRadioButton, 3, 1) self.typeGroupBox.setLayout(layout) def createHintsGroupBox(self): self.hintsGroupBox = QGroupBox("Hints") self.msWindowsFixedSizeDialogCheckBox = self.createCheckBox("MS Windows fixed size dialog") self.x11BypassWindowManagerCheckBox = self.createCheckBox("X11 bypass window manager") self.framelessWindowCheckBox = self.createCheckBox("Frameless window") self.windowTitleCheckBox = self.createCheckBox("Window title") self.windowSystemMenuCheckBox = self.createCheckBox("Window system menu") self.windowMinimizeButtonCheckBox = self.createCheckBox("Window minimize button") self.windowMaximizeButtonCheckBox = self.createCheckBox("Window maximize button") self.windowCloseButtonCheckBox = self.createCheckBox("Window close button") self.windowContextHelpButtonCheckBox = self.createCheckBox("Window context help button") self.windowShadeButtonCheckBox = self.createCheckBox("Window shade button") self.windowStaysOnTopCheckBox = self.createCheckBox("Window stays on top") self.windowStaysOnBottomCheckBox = self.createCheckBox("Window stays on bottom") self.customizeWindowHintCheckBox = self.createCheckBox("Customize window") layout = QGridLayout() layout.addWidget(self.msWindowsFixedSizeDialogCheckBox, 0, 0) layout.addWidget(self.x11BypassWindowManagerCheckBox, 1, 0) layout.addWidget(self.framelessWindowCheckBox, 2, 0) layout.addWidget(self.windowTitleCheckBox, 3, 0) layout.addWidget(self.windowSystemMenuCheckBox, 4, 0) layout.addWidget(self.windowMinimizeButtonCheckBox, 0, 1) layout.addWidget(self.windowMaximizeButtonCheckBox, 1, 1) layout.addWidget(self.windowCloseButtonCheckBox, 2, 1) layout.addWidget(self.windowContextHelpButtonCheckBox, 3, 1) layout.addWidget(self.windowShadeButtonCheckBox, 4, 1) layout.addWidget(self.windowStaysOnTopCheckBox, 5, 1) layout.addWidget(self.windowStaysOnBottomCheckBox, 6, 1) layout.addWidget(self.customizeWindowHintCheckBox, 5, 0) self.hintsGroupBox.setLayout(layout) def createCheckBox(self, text): checkBox = QCheckBox(text) checkBox.clicked.connect(self.updatePreview) return checkBox def createRadioButton(self, text): button = QRadioButton(text) button.clicked.connect(self.updatePreview) return button if __name__ == '__main__': import sys app = QApplication(sys.argv) controller = ControllerWindow() controller.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/xmlpatterns/0000755000076500000240000000000013245231431017676 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/xmlpatterns/README0000644000076500000240000000137013245231431020557 0ustar philstaff00000000000000XQuery queries and XPath expressions can be used in PyQt with the QtXmlPatterns module. XQuery is a query language used to query XML in a concise and safe manner. The example launcher provided with PyQt can be used to explore each of the examples in this directory. Documentation for these examples can be found via the Tutorial and Examples link in the main Qt documentation. Finding the PyQt Examples and Demos launcher ============================================ On Windows: The launcher can be accessed via the Windows Start menu. Select the menu entry entitled "Examples and Demos" entry in the submenu containing PyQt5. On all platforms: The source code for the launcher can be found in the examples/demos/qtdemo directory in the PyQt package. PyQt5_gpl-5.10.1/examples/xmlpatterns/schema/0000755000076500000240000000000013245231431021136 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/xmlpatterns/schema/files/0000755000076500000240000000000013245231431022240 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/examples/xmlpatterns/schema/files/contact.xsd0000644000076500000240000000167313245231431024422 0ustar philstaff00000000000000 PyQt5_gpl-5.10.1/examples/xmlpatterns/schema/files/invalid_contact.xml0000644000076500000240000000043513245231431026125 0ustar philstaff00000000000000 John Doe Prof. Sandakerveien 116 N-0550 Oslo Norway PyQt5_gpl-5.10.1/examples/xmlpatterns/schema/files/invalid_order.xml0000644000076500000240000000045613245231431025610 0ustar philstaff00000000000000 234219
      21692 3
      24749 9
      2009-01-23 yes
      PyQt5_gpl-5.10.1/examples/xmlpatterns/schema/files/invalid_recipe.xml0000644000076500000240000000112513245231431025736 0ustar philstaff00000000000000 Cheese on Toast PyQt5_gpl-5.10.1/examples/xmlpatterns/schema/files/order.xsd0000644000076500000240000000154713245231431024102 0ustar philstaff00000000000000 PyQt5_gpl-5.10.1/examples/xmlpatterns/schema/files/recipe.xsd0000644000076500000240000000300513245231431024225 0ustar philstaff00000000000000 PyQt5_gpl-5.10.1/examples/xmlpatterns/schema/files/valid_contact.xml0000644000076500000240000000045213245231431025575 0ustar philstaff00000000000000 John Doe 1977-12-25 Sandakerveien 116 N-0550 Oslo Norway PyQt5_gpl-5.10.1/examples/xmlpatterns/schema/files/valid_order.xml0000644000076500000240000000066613245231431025264 0ustar philstaff00000000000000 194223
      22242 5
      32372 12 without stripes
      23649 2
      2009-01-23 true
      PyQt5_gpl-5.10.1/examples/xmlpatterns/schema/files/valid_recipe.xml0000644000076500000240000000104513245231431025410 0ustar philstaff00000000000000 Cheese on Toast PyQt5_gpl-5.10.1/examples/xmlpatterns/schema/schema.py0000755000076500000240000002311613245231431022756 0ustar philstaff00000000000000#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2013 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt5.QtCore import QByteArray, QFile, QRegExp, Qt from PyQt5.QtGui import (QColor, QFont, QSyntaxHighlighter, QTextCharFormat, QTextCursor, QTextFormat) from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit from PyQt5.QtXmlPatterns import (QAbstractMessageHandler, QSourceLocation, QXmlSchema, QXmlSchemaValidator) import schema_rc from ui_schema import Ui_SchemaMainWindow def encode_utf8(ba): try: return unicode(ba, encoding='utf8') except NameError: return str(ba, encoding='utf8') def decode_utf8(qs): try: return QByteArray(qs.decode(encoding='utf8')) except AttributeError: return QByteArray(bytes(qs, encoding='utf8')) class XmlSyntaxHighlighter(QSyntaxHighlighter): def __init__(self, parent=None): super(XmlSyntaxHighlighter, self).__init__(parent) self.highlightingRules = [] # Tag format. format = QTextCharFormat() format.setForeground(Qt.darkBlue) format.setFontWeight(QFont.Bold) pattern = QRegExp("(<[a-zA-Z:]+\\b|<\\?[a-zA-Z:]+\\b|\\?>|>|/>|)") self.highlightingRules.append((pattern, format)) # Attribute format. format = QTextCharFormat() format.setForeground(Qt.darkGreen) pattern = QRegExp("[a-zA-Z:]+=") self.highlightingRules.append((pattern, format)) # Attribute content format. format = QTextCharFormat() format.setForeground(Qt.red) pattern = QRegExp("(\"[^\"]*\"|'[^']*')") self.highlightingRules.append((pattern, format)) # Comment format. self.commentFormat = QTextCharFormat() self.commentFormat.setForeground(Qt.lightGray) self.commentFormat.setFontItalic(True) self.commentStartExpression = QRegExp("") def highlightBlock(self, text): for pattern, format in self.highlightingRules: expression = QRegExp(pattern) index = expression.indexIn(text) while index >= 0: length = expression.matchedLength() self.setFormat(index, length, format) index = expression.indexIn(text, index + length) self.setCurrentBlockState(0) startIndex = 0 if self.previousBlockState() != 1: startIndex = self.commentStartExpression.indexIn(text) while startIndex >= 0: endIndex = self.commentEndExpression.indexIn(text, startIndex) if endIndex == -1: self.setCurrentBlockState(1) commentLength = text.length() - startIndex else: commentLength = endIndex - startIndex + self.commentEndExpression.matchedLength() self.setFormat(startIndex, commentLength, self.commentFormat) startIndex = self.commentStartExpression.indexIn(text, startIndex + commentLength) class MessageHandler(QAbstractMessageHandler): def __init__(self): super(MessageHandler, self).__init__() self.m_description = "" self.m_sourceLocation = QSourceLocation() def statusMessage(self): return self.m_description def line(self): return self.m_sourceLocation.line() def column(self): return self.m_sourceLocation.column() def handleMessage(self, type, description, identifier, sourceLocation): self.m_description = description self.m_sourceLocation = sourceLocation class MainWindow(QMainWindow, Ui_SchemaMainWindow): def __init__(self): super(MainWindow, self).__init__() self.setupUi(self) XmlSyntaxHighlighter(self.schemaView.document()) XmlSyntaxHighlighter(self.instanceEdit.document()) self.schemaSelection.addItem("Contact Schema") self.schemaSelection.addItem("Recipe Schema") self.schemaSelection.addItem("Order Schema") self.instanceSelection.addItem("Valid Contact Instance") self.instanceSelection.addItem("Invalid Contact Instance") self.schemaSelection.currentIndexChanged.connect(self.schemaSelected) self.instanceSelection.currentIndexChanged.connect(self.instanceSelected) self.validateButton.clicked.connect(self.validate) self.instanceEdit.textChanged.connect(self.textChanged) self.validationStatus.setAlignment(Qt.AlignCenter | Qt.AlignVCenter) self.schemaSelected(0) self.instanceSelected(0) def schemaSelected(self, index): self.instanceSelection.clear() if index == 0: self.instanceSelection.addItem("Valid Contact Instance") self.instanceSelection.addItem("Invalid Contact Instance") elif index == 1: self.instanceSelection.addItem("Valid Recipe Instance") self.instanceSelection.addItem("Invalid Recipe Instance") elif index == 2: self.instanceSelection.addItem("Valid Order Instance") self.instanceSelection.addItem("Invalid Order Instance") self.textChanged() schemaFile = QFile(':/schema_%d.xsd' % index) schemaFile.open(QFile.ReadOnly) schemaData = schemaFile.readAll() self.schemaView.setPlainText(encode_utf8(schemaData)) self.validate() def instanceSelected(self, index): index += 2 * self.schemaSelection.currentIndex() instanceFile = QFile(':/instance_%d.xml' % index) instanceFile.open(QFile.ReadOnly) instanceData = instanceFile.readAll() self.instanceEdit.setPlainText(encode_utf8(instanceData)) self.validate() def validate(self): schemaData = decode_utf8(self.schemaView.toPlainText()) instanceData = decode_utf8(self.instanceEdit.toPlainText()) messageHandler = MessageHandler() schema = QXmlSchema() schema.setMessageHandler(messageHandler) schema.load(schemaData) errorOccurred = False if not schema.isValid(): errorOccurred = True else: validator = QXmlSchemaValidator(schema) if not validator.validate(instanceData): errorOccurred = True if errorOccurred: self.validationStatus.setText(messageHandler.statusMessage()) self.moveCursor(messageHandler.line(), messageHandler.column()) background = Qt.red else: self.validationStatus.setText("validation successful") background = Qt.green styleSheet = 'QLabel {background: %s; padding: 3px}' % QColor(background).lighter(160).name() self.validationStatus.setStyleSheet(styleSheet) def textChanged(self): self.instanceEdit.setExtraSelections([]) def moveCursor(self, line, column): self.instanceEdit.moveCursor(QTextCursor.Start) for i in range(1, line): self.instanceEdit.moveCursor(QTextCursor.Down) for i in range(1, column): self.instanceEdit.moveCursor(QTextCursor.Right) extraSelections = [] selection = QTextEdit.ExtraSelection() lineColor = QColor(Qt.red).lighter(160) selection.format.setBackground(lineColor) selection.format.setProperty(QTextFormat.FullWidthSelection, True) selection.cursor = self.instanceEdit.textCursor() selection.cursor.clearSelection() extraSelections.append(selection) self.instanceEdit.setExtraSelections(extraSelections) self.instanceEdit.setFocus() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) PyQt5_gpl-5.10.1/examples/xmlpatterns/schema/schema.qrc0000644000076500000240000000114713245231431023110 0ustar philstaff00000000000000 files/contact.xsd files/recipe.xsd files/order.xsd files/valid_contact.xml files/invalid_contact.xml files/valid_recipe.xml files/invalid_recipe.xml files/valid_order.xml files/invalid_order.xml PyQt5_gpl-5.10.1/examples/xmlpatterns/schema/schema.ui0000644000076500000240000000375213245231431022744 0ustar philstaff00000000000000 SchemaMainWindow 0 0 417 594 XML Schema Validation XML Schema Document: XML Instance Document: Status: not validated Validate PyQt5_gpl-5.10.1/examples/xmlpatterns/schema/schema_rc.py0000644000076500000240000005257413245231431023451 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Resource object code # # Created: Wed May 15 14:30:02 2013 # by: The Resource Compiler for PyQt (Qt v5.0.2) # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore qt_resource_data = b"\ \x00\x00\x02\x55\ \x3c\ \x72\x65\x63\x69\x70\x65\x3e\x0a\x20\x20\x20\x20\x3c\x74\x69\x74\ \x6c\x65\x3e\x43\x68\x65\x65\x73\x65\x20\x6f\x6e\x20\x54\x6f\x61\ \x73\x74\x3c\x2f\x74\x69\x74\x6c\x65\x3e\x0a\x20\x20\x20\x20\x3c\ \x69\x6e\x67\x72\x65\x64\x69\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\ \x22\x42\x72\x65\x61\x64\x22\x20\x71\x75\x61\x6e\x74\x69\x74\x79\ \x3d\x22\x32\x22\x20\x75\x6e\x69\x74\x3d\x22\x73\x6c\x69\x63\x65\ \x73\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x69\x6e\x67\x72\x65\x64\ \x69\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x43\x68\x65\x65\x73\ \x65\x22\x20\x71\x75\x61\x6e\x74\x69\x74\x79\x3d\x22\x32\x22\x20\ \x75\x6e\x69\x74\x3d\x22\x73\x6c\x69\x63\x65\x73\x22\x2f\x3e\x0a\ \x20\x20\x20\x20\x3c\x74\x69\x6d\x65\x20\x71\x75\x61\x6e\x74\x69\ \x74\x79\x3d\x22\x33\x22\x20\x75\x6e\x69\x74\x3d\x22\x64\x61\x79\ \x73\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x6d\x65\x74\x68\x6f\x64\ \x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x73\x74\x65\x70\x3e\ \x31\x2e\x20\x53\x6c\x69\x63\x65\x20\x74\x68\x65\x20\x62\x72\x65\ \x61\x64\x20\x61\x6e\x64\x20\x63\x68\x65\x65\x73\x65\x2e\x3c\x2f\ \x73\x74\x65\x70\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x73\ \x74\x65\x70\x3e\x32\x2e\x20\x47\x72\x69\x6c\x6c\x20\x6f\x6e\x65\ \x20\x73\x69\x64\x65\x20\x6f\x66\x20\x65\x61\x63\x68\x20\x73\x6c\ \x69\x63\x65\x20\x6f\x66\x20\x62\x72\x65\x61\x64\x2e\x3c\x2f\x73\ \x74\x65\x70\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x73\x74\ \x65\x70\x3e\x33\x2e\x20\x54\x75\x72\x6e\x20\x6f\x76\x65\x72\x20\ \x74\x68\x65\x20\x62\x72\x65\x61\x64\x20\x61\x6e\x64\x20\x70\x6c\ \x61\x63\x65\x20\x61\x20\x73\x6c\x69\x63\x65\x20\x6f\x66\x20\x63\ \x68\x65\x65\x73\x65\x20\x6f\x6e\x20\x65\x61\x63\x68\x20\x70\x69\ \x65\x63\x65\x2e\x3c\x2f\x73\x74\x65\x70\x3e\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x3c\x73\x74\x65\x70\x3e\x34\x2e\x20\x47\x72\x69\ \x6c\x6c\x20\x75\x6e\x74\x69\x6c\x20\x74\x68\x65\x20\x63\x68\x65\ \x65\x73\x65\x20\x68\x61\x73\x20\x73\x74\x61\x72\x74\x65\x64\x20\ \x74\x6f\x20\x6d\x65\x6c\x74\x2e\x3c\x2f\x73\x74\x65\x70\x3e\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x3c\x73\x74\x65\x70\x3e\x35\x2e\ \x20\x53\x65\x72\x76\x65\x20\x61\x6e\x64\x20\x65\x6e\x6a\x6f\x79\ \x21\x3c\x2f\x73\x74\x65\x70\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x6d\ \x65\x74\x68\x6f\x64\x3e\x0a\x20\x20\x20\x20\x3c\x63\x6f\x6d\x6d\ \x65\x6e\x74\x3e\x54\x65\x6c\x6c\x20\x79\x6f\x75\x72\x20\x66\x72\ \x69\x65\x6e\x64\x73\x20\x61\x62\x6f\x75\x74\x20\x69\x74\x21\x3c\ \x2f\x63\x6f\x6d\x6d\x65\x6e\x74\x3e\x0a\x3c\x2f\x72\x65\x63\x69\ \x70\x65\x3e\x0a\ \x00\x00\x03\x67\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x3f\x3e\x0a\x3c\x78\x73\x64\x3a\x73\x63\x68\x65\x6d\x61\ \x20\x78\x6d\x6c\x6e\x73\x3a\x78\x73\x64\x3d\x22\x68\x74\x74\x70\ \x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\ \x30\x31\x2f\x58\x4d\x4c\x53\x63\x68\x65\x6d\x61\x22\x3e\x0a\x0a\ \x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\x6e\x74\ \x20\x6e\x61\x6d\x65\x3d\x22\x6f\x72\x64\x65\x72\x22\x3e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x63\x6f\x6d\x70\ \x6c\x65\x78\x54\x79\x70\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x73\x65\x71\x75\x65\x6e\ \x63\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\x6e\x74\ \x20\x6e\x61\x6d\x65\x3d\x22\x63\x75\x73\x74\x6f\x6d\x65\x72\x49\ \x64\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\x64\x3a\x70\x6f\x73\ \x69\x74\x69\x76\x65\x49\x6e\x74\x65\x67\x65\x72\x22\x2f\x3e\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\ \x65\x3d\x22\x61\x72\x74\x69\x63\x6c\x65\x22\x20\x74\x79\x70\x65\ \x3d\x22\x61\x72\x74\x69\x63\x6c\x65\x54\x79\x70\x65\x22\x20\x6d\ \x61\x78\x4f\x63\x63\x75\x72\x73\x3d\x22\x75\x6e\x62\x6f\x75\x6e\ \x64\x65\x64\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\ \x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x64\x65\x6c\x69\x76\x65\ \x72\x79\x44\x61\x74\x65\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\ \x64\x3a\x64\x61\x74\x65\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\ \x6c\x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x70\x61\x79\ \x65\x64\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\x64\x3a\x62\x6f\ \x6f\x6c\x65\x61\x6e\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x2f\x78\x73\x64\x3a\x73\x65\x71\x75\x65\ \x6e\x63\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x2f\x78\ \x73\x64\x3a\x63\x6f\x6d\x70\x6c\x65\x78\x54\x79\x70\x65\x3e\x0a\ \x20\x20\x20\x20\x3c\x2f\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\x6e\ \x74\x3e\x0a\x0a\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x63\x6f\x6d\ \x70\x6c\x65\x78\x54\x79\x70\x65\x20\x6e\x61\x6d\x65\x3d\x22\x61\ \x72\x74\x69\x63\x6c\x65\x54\x79\x70\x65\x22\x3e\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x73\x65\x71\x75\x65\x6e\ \x63\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\ \x65\x3d\x22\x61\x72\x74\x69\x63\x6c\x65\x49\x64\x22\x20\x74\x79\ \x70\x65\x3d\x22\x78\x73\x64\x3a\x70\x6f\x73\x69\x74\x69\x76\x65\ \x49\x6e\x74\x65\x67\x65\x72\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\ \x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x63\x6f\x75\x6e\x74\x22\ \x20\x74\x79\x70\x65\x3d\x22\x78\x73\x64\x3a\x70\x6f\x73\x69\x74\ \x69\x76\x65\x49\x6e\x74\x65\x67\x65\x72\x22\x2f\x3e\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\ \x6c\x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x63\x6f\x6d\ \x6d\x65\x6e\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\x64\x3a\ \x73\x74\x72\x69\x6e\x67\x22\x20\x6d\x69\x6e\x4f\x63\x63\x75\x72\ \x73\x3d\x22\x30\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x3c\x2f\x78\x73\x64\x3a\x73\x65\x71\x75\x65\x6e\x63\x65\x3e\x0a\ \x20\x20\x20\x20\x3c\x2f\x78\x73\x64\x3a\x63\x6f\x6d\x70\x6c\x65\ \x78\x54\x79\x70\x65\x3e\x0a\x0a\x3c\x2f\x78\x73\x64\x3a\x73\x63\ \x68\x65\x6d\x61\x3e\x0a\ \x00\x00\x02\x25\ \x3c\ \x72\x65\x63\x69\x70\x65\x3e\x0a\x20\x20\x20\x20\x3c\x74\x69\x74\ \x6c\x65\x3e\x43\x68\x65\x65\x73\x65\x20\x6f\x6e\x20\x54\x6f\x61\ \x73\x74\x3c\x2f\x74\x69\x74\x6c\x65\x3e\x0a\x20\x20\x20\x20\x3c\ \x69\x6e\x67\x72\x65\x64\x69\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\ \x22\x42\x72\x65\x61\x64\x22\x20\x71\x75\x61\x6e\x74\x69\x74\x79\ \x3d\x22\x32\x22\x20\x75\x6e\x69\x74\x3d\x22\x73\x6c\x69\x63\x65\ \x73\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x69\x6e\x67\x72\x65\x64\ \x69\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x43\x68\x65\x65\x73\ \x65\x22\x20\x71\x75\x61\x6e\x74\x69\x74\x79\x3d\x22\x32\x22\x20\ \x75\x6e\x69\x74\x3d\x22\x73\x6c\x69\x63\x65\x73\x22\x2f\x3e\x0a\ \x20\x20\x20\x20\x3c\x74\x69\x6d\x65\x20\x71\x75\x61\x6e\x74\x69\ \x74\x79\x3d\x22\x33\x22\x20\x75\x6e\x69\x74\x3d\x22\x6d\x69\x6e\ \x75\x74\x65\x73\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x6d\x65\x74\ \x68\x6f\x64\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x73\x74\ \x65\x70\x3e\x31\x2e\x20\x53\x6c\x69\x63\x65\x20\x74\x68\x65\x20\ \x62\x72\x65\x61\x64\x20\x61\x6e\x64\x20\x63\x68\x65\x65\x73\x65\ \x2e\x3c\x2f\x73\x74\x65\x70\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x3c\x73\x74\x65\x70\x3e\x32\x2e\x20\x47\x72\x69\x6c\x6c\x20\ \x6f\x6e\x65\x20\x73\x69\x64\x65\x20\x6f\x66\x20\x65\x61\x63\x68\ \x20\x73\x6c\x69\x63\x65\x20\x6f\x66\x20\x62\x72\x65\x61\x64\x2e\ \x3c\x2f\x73\x74\x65\x70\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x3c\x73\x74\x65\x70\x3e\x33\x2e\x20\x54\x75\x72\x6e\x20\x6f\x76\ \x65\x72\x20\x74\x68\x65\x20\x62\x72\x65\x61\x64\x20\x61\x6e\x64\ \x20\x70\x6c\x61\x63\x65\x20\x61\x20\x73\x6c\x69\x63\x65\x20\x6f\ \x66\x20\x63\x68\x65\x65\x73\x65\x20\x6f\x6e\x20\x65\x61\x63\x68\ \x20\x70\x69\x65\x63\x65\x2e\x3c\x2f\x73\x74\x65\x70\x3e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x73\x74\x65\x70\x3e\x34\x2e\x20\ \x47\x72\x69\x6c\x6c\x20\x75\x6e\x74\x69\x6c\x20\x74\x68\x65\x20\ \x63\x68\x65\x65\x73\x65\x20\x68\x61\x73\x20\x73\x74\x61\x72\x74\ \x65\x64\x20\x74\x6f\x20\x6d\x65\x6c\x74\x2e\x3c\x2f\x73\x74\x65\ \x70\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x73\x74\x65\x70\ \x3e\x35\x2e\x20\x53\x65\x72\x76\x65\x20\x61\x6e\x64\x20\x65\x6e\ \x6a\x6f\x79\x21\x3c\x2f\x73\x74\x65\x70\x3e\x0a\x20\x20\x20\x20\ \x3c\x2f\x6d\x65\x74\x68\x6f\x64\x3e\x0a\x3c\x2f\x72\x65\x63\x69\ \x70\x65\x3e\x0a\ \x00\x00\x01\x81\ \x00\ \x00\x06\x05\x78\x9c\xbd\x54\xc1\x72\xc2\x20\x10\xbd\xfb\x15\x0c\ \x1f\x60\xb4\xbd\x39\x46\xcf\x9d\x69\xa7\x87\xf6\xd0\x2b\x92\x1d\ \xc3\x4c\x80\x08\x8b\x89\x7f\x5f\x82\x1a\x6d\x0c\x49\xbc\x94\x43\ \x26\xc3\xbe\xf7\xd8\x5d\x1e\xbb\xde\xd6\xb2\x20\x47\x30\x56\x68\ \x95\xd2\xe5\x7c\x41\xb7\x9b\xd9\xba\xb6\xd9\xca\xf2\x1c\x24\x23\ \x3e\xae\xec\xca\x6f\xa4\x34\x47\x2c\x57\x49\x52\x55\xd5\xbc\x7a\ \x9d\x6b\xb3\x4f\x5e\x16\x8b\x65\xf2\xf3\xf1\xfe\x15\xb0\x74\x33\ \x9b\x11\xbf\x02\x1d\x0a\x90\xa0\x90\x28\x26\x21\xa5\x06\xb8\x28\ \xc1\x03\xc8\x65\x05\x0c\xd7\xb2\x2c\xa0\xfe\x3e\x95\x70\x8b\xb4\ \x51\x0b\x07\x07\x8a\x77\x42\x91\x03\x50\x60\x01\x94\xa0\x97\x4a\ \x69\x60\xa3\x11\x6a\x4f\x93\x49\x6c\x8f\x34\x90\x09\xbf\x71\x95\ \xb8\xed\x34\xd9\x51\x22\x59\xfd\xc9\xb9\x33\x36\xa5\x4e\xed\xb4\ \x53\x19\x64\x13\xc5\x51\xc8\x36\xb3\xe6\x3f\x08\x4e\xa3\x4a\xc0\ \x5c\x67\xf4\x11\x3b\xde\xc2\x27\xda\x39\x92\x84\x45\x28\x7b\x3a\ \x3b\xb9\x25\xad\x74\x32\x9e\xc6\x19\x33\x58\xd4\x19\x72\x49\xb1\ \x63\x9b\xc8\x09\x11\xd5\x8e\xd2\xcd\xbb\x77\xc8\x07\x83\x84\xdb\ \xeb\xf8\x98\xa1\x6f\xc9\xce\xe1\x15\xdd\x7c\x87\xbd\xd8\x4b\x3b\ \x38\xa6\xbc\x8f\x4f\xf7\xd4\x52\x5b\x81\xe2\x08\x6f\x0a\x61\x0f\ \x66\x54\xc3\x29\x81\xf1\xa3\x7b\x1a\x31\x54\x75\xeb\xd6\xff\x4a\ \xbc\x6f\x0a\x88\x26\xab\x88\x15\x1a\x80\x81\xa6\x46\x8e\x7e\x80\ \x91\x1d\xb3\x7f\xeb\x1e\x78\x39\xa0\x9c\x04\xc3\x02\xef\xc8\x0a\ \xd7\x38\x1d\xb8\x56\x99\x8d\x99\x38\x46\x93\x42\xf9\x3a\x9e\xa6\ \xe5\xda\xbf\x9d\xde\x41\x90\x74\xea\xea\x75\x79\x4f\x5f\xce\x91\ \xb6\xb3\xf1\x3b\xbf\x48\x84\xa9\xbd\x99\xfd\x02\x2c\xd8\xc0\x1d\ \ \x00\x00\x01\x1d\ \x3c\ \x63\x6f\x6e\x74\x61\x63\x74\x3e\x0a\x20\x20\x20\x20\x3c\x67\x69\ \x76\x65\x6e\x4e\x61\x6d\x65\x3e\x4a\x6f\x68\x6e\x3c\x2f\x67\x69\ \x76\x65\x6e\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x66\x61\ \x6d\x69\x6c\x79\x4e\x61\x6d\x65\x3e\x44\x6f\x65\x3c\x2f\x66\x61\ \x6d\x69\x6c\x79\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x74\ \x69\x74\x6c\x65\x3e\x50\x72\x6f\x66\x2e\x3c\x2f\x74\x69\x74\x6c\ \x65\x3e\x0a\x20\x20\x20\x20\x3c\x77\x6f\x72\x6b\x41\x64\x64\x72\ \x65\x73\x73\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x73\x74\ \x72\x65\x65\x74\x3e\x53\x61\x6e\x64\x61\x6b\x65\x72\x76\x65\x69\ \x65\x6e\x20\x31\x31\x36\x3c\x2f\x73\x74\x72\x65\x65\x74\x3e\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x3c\x7a\x69\x70\x43\x6f\x64\x65\ \x3e\x4e\x2d\x30\x35\x35\x30\x3c\x2f\x7a\x69\x70\x43\x6f\x64\x65\ \x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x63\x69\x74\x79\x3e\ \x4f\x73\x6c\x6f\x3c\x2f\x63\x69\x74\x79\x3e\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x3c\x63\x6f\x75\x6e\x74\x72\x79\x3e\x4e\x6f\x72\ \x77\x61\x79\x3c\x2f\x63\x6f\x75\x6e\x74\x72\x79\x3e\x0a\x20\x20\ \x20\x20\x3c\x2f\x77\x6f\x72\x6b\x41\x64\x64\x72\x65\x73\x73\x3e\ \x0a\x3c\x2f\x63\x6f\x6e\x74\x61\x63\x74\x3e\x0a\ \x00\x00\x01\x2e\ \x3c\ \x6f\x72\x64\x65\x72\x3e\x0a\x20\x20\x20\x20\x3c\x63\x75\x73\x74\ \x6f\x6d\x65\x72\x49\x64\x3e\x32\x33\x34\x32\x31\x39\x3c\x2f\x63\ \x75\x73\x74\x6f\x6d\x65\x72\x49\x64\x3e\x0a\x20\x20\x20\x20\x3c\ \x61\x72\x74\x69\x63\x6c\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x3c\x61\x72\x74\x69\x63\x6c\x65\x49\x64\x3e\x32\x31\x36\x39\ \x32\x3c\x2f\x61\x72\x74\x69\x63\x6c\x65\x49\x64\x3e\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x3c\x63\x6f\x75\x6e\x74\x3e\x33\x3c\x2f\ \x63\x6f\x75\x6e\x74\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x61\x72\x74\ \x69\x63\x6c\x65\x3e\x0a\x20\x20\x20\x20\x3c\x61\x72\x74\x69\x63\ \x6c\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x61\x72\x74\ \x69\x63\x6c\x65\x49\x64\x3e\x32\x34\x37\x34\x39\x3c\x2f\x61\x72\ \x74\x69\x63\x6c\x65\x49\x64\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x3c\x63\x6f\x75\x6e\x74\x3e\x39\x3c\x2f\x63\x6f\x75\x6e\x74\ \x3e\x0a\x20\x20\x20\x20\x3c\x2f\x61\x72\x74\x69\x63\x6c\x65\x3e\ \x0a\x20\x20\x20\x20\x3c\x64\x65\x6c\x69\x76\x65\x72\x79\x44\x61\ \x74\x65\x3e\x32\x30\x30\x39\x2d\x30\x31\x2d\x32\x33\x3c\x2f\x64\ \x65\x6c\x69\x76\x65\x72\x79\x44\x61\x74\x65\x3e\x0a\x20\x20\x20\ \x20\x3c\x70\x61\x79\x65\x64\x3e\x79\x65\x73\x3c\x2f\x70\x61\x79\ \x65\x64\x3e\x0a\x3c\x2f\x6f\x72\x64\x65\x72\x3e\x0a\ \x00\x00\x03\xbb\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x3f\x3e\x0a\x3c\x78\x73\x64\x3a\x73\x63\x68\x65\x6d\x61\ \x20\x78\x6d\x6c\x6e\x73\x3a\x78\x73\x64\x3d\x22\x68\x74\x74\x70\ \x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\ \x30\x31\x2f\x58\x4d\x4c\x53\x63\x68\x65\x6d\x61\x22\x3e\x0a\x0a\ \x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\x6e\x74\ \x20\x6e\x61\x6d\x65\x3d\x22\x63\x6f\x6e\x74\x61\x63\x74\x22\x3e\ \x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x63\x6f\ \x6d\x70\x6c\x65\x78\x54\x79\x70\x65\x3e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x73\x65\x71\x75\ \x65\x6e\x63\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\ \x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x67\x69\x76\x65\x6e\x4e\x61\ \x6d\x65\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\x64\x3a\x73\x74\ \x72\x69\x6e\x67\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\ \x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x66\x61\x6d\x69\x6c\ \x79\x4e\x61\x6d\x65\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\x64\ \x3a\x73\x74\x72\x69\x6e\x67\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\ \x65\x6c\x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x62\x69\ \x72\x74\x68\x64\x61\x74\x65\x22\x20\x74\x79\x70\x65\x3d\x22\x78\ \x73\x64\x3a\x64\x61\x74\x65\x22\x20\x6d\x69\x6e\x4f\x63\x63\x75\ \x72\x73\x3d\x22\x30\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\ \x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x68\x6f\x6d\x65\ \x41\x64\x64\x72\x65\x73\x73\x22\x20\x74\x79\x70\x65\x3d\x22\x61\ \x64\x64\x72\x65\x73\x73\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\ \x6c\x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x77\x6f\x72\ \x6b\x41\x64\x64\x72\x65\x73\x73\x22\x20\x74\x79\x70\x65\x3d\x22\ \x61\x64\x64\x72\x65\x73\x73\x22\x20\x6d\x69\x6e\x4f\x63\x63\x75\ \x72\x73\x3d\x22\x30\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x2f\x78\x73\x64\x3a\x73\x65\x71\x75\x65\ \x6e\x63\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x2f\x78\ \x73\x64\x3a\x63\x6f\x6d\x70\x6c\x65\x78\x54\x79\x70\x65\x3e\x0a\ \x20\x20\x20\x20\x3c\x2f\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\x6e\ \x74\x3e\x0a\x0a\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x63\x6f\x6d\ \x70\x6c\x65\x78\x54\x79\x70\x65\x20\x6e\x61\x6d\x65\x3d\x22\x61\ \x64\x64\x72\x65\x73\x73\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x3c\x78\x73\x64\x3a\x73\x65\x71\x75\x65\x6e\x63\x65\x3e\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\ \x3a\x65\x6c\x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x73\ \x74\x72\x65\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\x64\ \x3a\x73\x74\x72\x69\x6e\x67\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\ \x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x7a\x69\x70\x43\x6f\x64\ \x65\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\x64\x3a\x73\x74\x72\ \x69\x6e\x67\x22\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x3c\x78\x73\x64\x3a\x65\x6c\x65\x6d\x65\x6e\x74\x20\ \x6e\x61\x6d\x65\x3d\x22\x63\x69\x74\x79\x22\x20\x74\x79\x70\x65\ \x3d\x22\x78\x73\x64\x3a\x73\x74\x72\x69\x6e\x67\x22\x2f\x3e\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x78\x73\x64\ \x3a\x65\x6c\x65\x6d\x65\x6e\x74\x20\x6e\x61\x6d\x65\x3d\x22\x63\ \x6f\x75\x6e\x74\x72\x79\x22\x20\x74\x79\x70\x65\x3d\x22\x78\x73\ \x64\x3a\x73\x74\x72\x69\x6e\x67\x22\x2f\x3e\x0a\x20\x20\x20\x20\ \x20\x20\x20\x20\x3c\x2f\x78\x73\x64\x3a\x73\x65\x71\x75\x65\x6e\ \x63\x65\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x78\x73\x64\x3a\x63\x6f\ \x6d\x70\x6c\x65\x78\x54\x79\x70\x65\x3e\x0a\x0a\x3c\x2f\x78\x73\ \x64\x3a\x73\x63\x68\x65\x6d\x61\x3e\x0a\ \x00\x00\x01\x2a\ \x3c\ \x63\x6f\x6e\x74\x61\x63\x74\x3e\x0a\x20\x20\x20\x20\x3c\x67\x69\ \x76\x65\x6e\x4e\x61\x6d\x65\x3e\x4a\x6f\x68\x6e\x3c\x2f\x67\x69\ \x76\x65\x6e\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x66\x61\ \x6d\x69\x6c\x79\x4e\x61\x6d\x65\x3e\x44\x6f\x65\x3c\x2f\x66\x61\ \x6d\x69\x6c\x79\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x62\ \x69\x72\x74\x68\x64\x61\x74\x65\x3e\x31\x39\x37\x37\x2d\x31\x32\ \x2d\x32\x35\x3c\x2f\x62\x69\x72\x74\x68\x64\x61\x74\x65\x3e\x0a\ \x20\x20\x20\x20\x3c\x68\x6f\x6d\x65\x41\x64\x64\x72\x65\x73\x73\ \x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x73\x74\x72\x65\x65\ \x74\x3e\x53\x61\x6e\x64\x61\x6b\x65\x72\x76\x65\x69\x65\x6e\x20\ \x31\x31\x36\x3c\x2f\x73\x74\x72\x65\x65\x74\x3e\x0a\x20\x20\x20\ \x20\x20\x20\x20\x20\x3c\x7a\x69\x70\x43\x6f\x64\x65\x3e\x4e\x2d\ \x30\x35\x35\x30\x3c\x2f\x7a\x69\x70\x43\x6f\x64\x65\x3e\x0a\x20\ \x20\x20\x20\x20\x20\x20\x20\x3c\x63\x69\x74\x79\x3e\x4f\x73\x6c\ \x6f\x3c\x2f\x63\x69\x74\x79\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x3c\x63\x6f\x75\x6e\x74\x72\x79\x3e\x4e\x6f\x72\x77\x61\x79\ \x3c\x2f\x63\x6f\x75\x6e\x74\x72\x79\x3e\x0a\x20\x20\x20\x20\x3c\ \x2f\x68\x6f\x6d\x65\x41\x64\x64\x72\x65\x73\x73\x3e\x0a\x3c\x2f\ \x63\x6f\x6e\x74\x61\x63\x74\x3e\x0a\ \x00\x00\x01\xb6\ \x3c\ \x6f\x72\x64\x65\x72\x3e\x0a\x20\x20\x20\x20\x3c\x63\x75\x73\x74\ \x6f\x6d\x65\x72\x49\x64\x3e\x31\x39\x34\x32\x32\x33\x3c\x2f\x63\ \x75\x73\x74\x6f\x6d\x65\x72\x49\x64\x3e\x0a\x20\x20\x20\x20\x3c\ \x61\x72\x74\x69\x63\x6c\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x3c\x61\x72\x74\x69\x63\x6c\x65\x49\x64\x3e\x32\x32\x32\x34\ \x32\x3c\x2f\x61\x72\x74\x69\x63\x6c\x65\x49\x64\x3e\x0a\x20\x20\ \x20\x20\x20\x20\x20\x20\x3c\x63\x6f\x75\x6e\x74\x3e\x35\x3c\x2f\ \x63\x6f\x75\x6e\x74\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x61\x72\x74\ \x69\x63\x6c\x65\x3e\x0a\x20\x20\x20\x20\x3c\x61\x72\x74\x69\x63\ \x6c\x65\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x61\x72\x74\ \x69\x63\x6c\x65\x49\x64\x3e\x33\x32\x33\x37\x32\x3c\x2f\x61\x72\ \x74\x69\x63\x6c\x65\x49\x64\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ \x20\x3c\x63\x6f\x75\x6e\x74\x3e\x31\x32\x3c\x2f\x63\x6f\x75\x6e\ \x74\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x63\x6f\x6d\x6d\ \x65\x6e\x74\x3e\x77\x69\x74\x68\x6f\x75\x74\x20\x73\x74\x72\x69\ \x70\x65\x73\x3c\x2f\x63\x6f\x6d\x6d\x65\x6e\x74\x3e\x0a\x20\x20\ \x20\x20\x3c\x2f\x61\x72\x74\x69\x63\x6c\x65\x3e\x0a\x20\x20\x20\ \x20\x3c\x61\x72\x74\x69\x63\x6c\x65\x3e\x0a\x20\x20\x20\x20\x20\ \x20\x20\x20\x3c\x61\x72\x74\x69\x63\x6c\x65\x49\x64\x3e\x32\x33\ \x36\x34\x39\x3c\x2f\x61\x72\x74\x69\x63\x6c\x65\x49\x64\x3e\x0a\ \x20\x20\x20\x20\x20\x20\x20\x20\x3c\x63\x6f\x75\x6e\x74\x3e\x32\ \x3c\x2f\x63\x6f\x75\x6e\x74\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x61\ \x72\x74\x69\x63\x6c\x65\x3e\x0a\x20\x20\x20\x20\x3c\x64\x65\x6c\ \x69\x76\x65\x72\x79\x44\x61\x74\x65\x3e\x32\x30\x30\x39\x2d\x30\ \x31\x2d\x32\x33\x3c\x2f\x64\x65\x6c\x69\x76\x65\x72\x79\x44\x61\ \x74\x65\x3e\x0a\x20\x20\x20\x20\x3c\x70\x61\x79\x65\x64\x3e\x74\ \x72\x75\x65\x3c\x2f\x70\x61\x79\x65\x64\x3e\x0a\x3c\x2f\x6f\x72\ \x64\x65\x72\x3e\x0a\ " qt_resource_name = b"\ \x00\x0e\ \x00\x73\x4a\x1c\ \x00\x69\ \x00\x6e\x00\x73\x00\x74\x00\x61\x00\x6e\x00\x63\x00\x65\x00\x5f\x00\x33\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x0c\ \x08\x16\x87\xf4\ \x00\x73\ \x00\x63\x00\x68\x00\x65\x00\x6d\x00\x61\x00\x5f\x00\x32\x00\x2e\x00\x78\x00\x73\x00\x64\ \x00\x0e\ \x00\x70\x4a\x1c\ \x00\x69\ \x00\x6e\x00\x73\x00\x74\x00\x61\x00\x6e\x00\x63\x00\x65\x00\x5f\x00\x32\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x0c\ \x08\x13\x87\xf4\ \x00\x73\ \x00\x63\x00\x68\x00\x65\x00\x6d\x00\x61\x00\x5f\x00\x31\x00\x2e\x00\x78\x00\x73\x00\x64\ \x00\x0e\ \x00\x79\x4a\x1c\ \x00\x69\ \x00\x6e\x00\x73\x00\x74\x00\x61\x00\x6e\x00\x63\x00\x65\x00\x5f\x00\x31\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x0e\ \x00\x75\x4a\x1c\ \x00\x69\ \x00\x6e\x00\x73\x00\x74\x00\x61\x00\x6e\x00\x63\x00\x65\x00\x5f\x00\x35\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x0c\ \x08\x10\x87\xf4\ \x00\x73\ \x00\x63\x00\x68\x00\x65\x00\x6d\x00\x61\x00\x5f\x00\x30\x00\x2e\x00\x78\x00\x73\x00\x64\ \x00\x0e\ \x00\x76\x4a\x1c\ \x00\x69\ \x00\x6e\x00\x73\x00\x74\x00\x61\x00\x6e\x00\x63\x00\x65\x00\x5f\x00\x30\x00\x2e\x00\x78\x00\x6d\x00\x6c\ \x00\x0e\ \x00\x72\x4a\x1c\ \x00\x69\ \x00\x6e\x00\x73\x00\x74\x00\x61\x00\x6e\x00\x63\x00\x65\x00\x5f\x00\x34\x00\x2e\x00\x78\x00\x6d\x00\x6c\ " qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x01\ \x00\x00\x00\x40\x00\x00\x00\x00\x00\x01\x00\x00\x05\xc4\ \x00\x00\x01\x04\x00\x00\x00\x00\x00\x01\x00\x00\x10\xb2\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\xa2\x00\x00\x00\x00\x00\x01\x00\x00\x0a\x93\ \x00\x00\x00\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x0f\x84\ \x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x00\x09\x72\ \x00\x00\x00\xc4\x00\x00\x00\x00\x00\x01\x00\x00\x0b\xc5\ \x00\x00\x00\x62\x00\x01\x00\x00\x00\x01\x00\x00\x07\xed\ \x00\x00\x00\x22\x00\x00\x00\x00\x00\x01\x00\x00\x02\x59\ " 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() PyQt5_gpl-5.10.1/examples/xmlpatterns/schema/ui_schema.py0000644000076500000240000000647113245231431023455 0ustar philstaff00000000000000# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'schema.ui' # # Created: Wed May 15 14:30:19 2013 # by: PyQt5 UI code generator 5.0-snapshot-3507ed3a4178 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_SchemaMainWindow(object): def setupUi(self, SchemaMainWindow): SchemaMainWindow.setObjectName("SchemaMainWindow") SchemaMainWindow.resize(417, 594) self.centralwidget = QtWidgets.QWidget(SchemaMainWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") self.schemaLabel = QtWidgets.QLabel(self.centralwidget) self.schemaLabel.setObjectName("schemaLabel") self.gridLayout.addWidget(self.schemaLabel, 0, 0, 1, 2) self.schemaSelection = QtWidgets.QComboBox(self.centralwidget) self.schemaSelection.setObjectName("schemaSelection") self.gridLayout.addWidget(self.schemaSelection, 0, 2, 1, 2) self.schemaView = QtWidgets.QTextBrowser(self.centralwidget) self.schemaView.setObjectName("schemaView") self.gridLayout.addWidget(self.schemaView, 1, 0, 1, 4) self.instanceLabel = QtWidgets.QLabel(self.centralwidget) self.instanceLabel.setObjectName("instanceLabel") self.gridLayout.addWidget(self.instanceLabel, 2, 0, 1, 2) self.instanceSelection = QtWidgets.QComboBox(self.centralwidget) self.instanceSelection.setObjectName("instanceSelection") self.gridLayout.addWidget(self.instanceSelection, 2, 2, 1, 2) self.instanceEdit = QtWidgets.QTextEdit(self.centralwidget) self.instanceEdit.setObjectName("instanceEdit") self.gridLayout.addWidget(self.instanceEdit, 3, 0, 1, 4) self.label = QtWidgets.QLabel(self.centralwidget) self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 4, 0, 1, 1) self.validationStatus = QtWidgets.QLabel(self.centralwidget) self.validationStatus.setObjectName("validationStatus") self.gridLayout.addWidget(self.validationStatus, 4, 1, 1, 2) self.validateButton = QtWidgets.QPushButton(self.centralwidget) self.validateButton.setObjectName("validateButton") self.gridLayout.addWidget(self.validateButton, 4, 3, 1, 1) SchemaMainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(SchemaMainWindow) self.statusbar.setObjectName("statusbar") SchemaMainWindow.setStatusBar(self.statusbar) self.retranslateUi(SchemaMainWindow) QtCore.QMetaObject.connectSlotsByName(SchemaMainWindow) def retranslateUi(self, SchemaMainWindow): _translate = QtCore.QCoreApplication.translate SchemaMainWindow.setWindowTitle(_translate("SchemaMainWindow", "XML Schema Validation")) self.schemaLabel.setText(_translate("SchemaMainWindow", "XML Schema Document:")) self.instanceLabel.setText(_translate("SchemaMainWindow", "XML Instance Document:")) self.label.setText(_translate("SchemaMainWindow", "Status:")) self.validationStatus.setText(_translate("SchemaMainWindow", "not validated")) self.validateButton.setText(_translate("SchemaMainWindow", "Validate")) PyQt5_gpl-5.10.1/LICENSE0000644000076500000240000010451313245233136014514 0ustar philstaff00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 3 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 . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . PyQt5_gpl-5.10.1/NEWS0000644000076500000240000001567213245231432014212 0ustar philstaff00000000000000v5.10.1 26th February 2018 - Added support for Qt v5.10.1. - Added the missing qmlClearTypeRegistrations() to the QtQml module. - Added the --disabled-feature option to configure.py. v5.10 23rd January 2018 - Added support for Qt v5.10.0. - Added the QtNetworkAuth module. v5.9.2 23rd November 2017 - Added support for Qt v5.9.3. - Added the QtAndroidExtras module. v5.9.1 1st November 2017 - Added support for Qt v5.9.2. - Added the --allow-sip-warnings option to configure.py. - Removed the unimplemented -name option to pyrcc5. - SIP v4.19.4 is required. v5.9 3rd July 2017 - Added support for Qt v5.9.0 and v5.9.1. - Improved detection of the destruction of QObject-based instances by C++. - QFlags instances are now hashable. - pyrcc5 now supports v2 of the resource file format. - Added the interview.py, frozencolumn.py and storageview.py examples from Hans-Peter Jansen. - SIP v4.19.3 is required. v5.8.2 30th March 2017 - This is a bug fix release. v5.8.1 7th March 2017 - This is a bug fix release. v5.8 15th February 2017 - Added support for Qt v5.8.0. - Added __fspath__() to QFileInfo. - Added the --qml-debug option to configure.py. The --debug option no longer enables the QML debugging infrastructure. - Added the --link-full-dll option to configure.py. - SIP v4.19.1 is required. v5.7.1 25th December 2016 - Added support for Qt v5.7.1. - Added the QtWebEngine module. - Added QRegion.setRects(). - Added QtMac to the QtMacExtras module. - Added pyuic5 plugins for QChartView and QWebEngineView. - The Python v3.4 limited API is used. - SIP v4.19 is required. v5.7 25th July 2016 - Added support for Qt v5.7.0. v5.6 24th April 2016 - Added full support for Qt v5.6.0. - Python v3.5 wheels are available for 64-bit Linux, 64-bit OS X and 32 and 64-bit Windows. (After this release Windows .exe installers will no longer be produced.) - Added the QtWebEngineCore module. - Added the missing qt_set_sequence_auto_mnemonic() to QtGui. - Added the missing MouseLock to QWebEnginePage.Feature. - Added the missing WA_DontShowOnScreen. - PEP 484 stub files are installed by default. - Added the --import-from command line argument to pyuic5. - Added the --no-stubs and --stubsdir options to configure.py. - Added the --qtconf-prefix option to configure.py. v5.5.1 25th October 2015 - Added support for Qt v5.5.1. - Added the --disable option to configure.py. - Implemented __matmul__ and __imatmul__ for QMatrix4x4 and QTransform. v5.5 17th July 2015 - Added full support for Qt v5.5.0. - Added the QtLocation module. - Added the QtNfc module. - Added Qt.NoOpaqueDetection amd Qt.NoFormatConversion to QtCore. - Added QMacToolBar and QMacToolBarItem to QtMacExtras. - Added QProxyStyle to QtWidgets. v5.4.2 11th June 2015 - Added support for Qt v5.4.2. - Added QWIDGETSIZE_MAX to QtWidgets. - Added the --no-python-dbus command line option to configure.py. v5.4.1 26th February 2015 - Added support for Qt v5.4.1. - Added the QMacCocoaViewContainer class. - All OpenGL examples use QOpenGLWidget and no longer require PyOpenGL. - Added initial implementations of _QOpenGLFunctions_2_1 and _QOpenGLFunctions_4_1_Core. - QEvent.None is now QEvent.None_. - Added missing QEvent.Type members that are now documented in Qt. - Added the --license-dir option to configure.py. - Installing into a virtual env should now work. - pyuic5 and pyrcc5 no longer include a timestamp in the generated code. v5.4 25th December 2014 - Added full support for Qt v5.4.0. - Added the QtWebChannel module. - Added the QtWebEngineWidgets module. - Added the QtXml module. v5.3.2 11th September 2014 - Added the Enginio module. - Added the QJsonDocument and QJsonValue classes. - QJsonObject is implemented as a Python dict. - QJsonArray is implemented as a Python list. - Added setUnifiedTitleAndToolBarOnMac() and unifiedTitleAndToolBarOnMac() to QWidget. - Added windowHandle() to QWidget. v5.3.1 4th July 2014 - Added support for Qt v5.3.1. - Added the -tr-function and -translate-function command line options to pylupdate5. v5.3 26th May 2014 - By default a Python slot is only invoked if the underlying C++ instance still exists. - Added the no_receiver_check argument to connect(). - Added support for Qt v5.3.0. - Added the QtQuickWidgets module. - Added the QtWebSockets module. - Added the --target-py-version, --sysroot and --no-tools option to configure.py. - Cross-compilation (specifically to iOS and Android) is now supported. v5.2.1 14th March 2014 - Added full support for Qt v5.2.1. - Properties, signals and slots can now be defined in mixins (i.e. non-QObject classes). - Added support for creating QSGGeometry.AttributeSet instances. - A fundamental value may now be given whenever a QJSValue is expected. - Building PyQt5 as static libraries now works. - Added support for building without OpenGL. v5.2 8th January 2014 - Added full support for Qt v5.2. - Added the QtBluetooth module. - Added the QtPositioning module. - Added the QtMacExtras module. - Added the QtWinExtras module. - Added the QtX11Extras module. - Improved the conversion of Python objects to Qt collection types (e.g. QList, QSet). Iterators (rather than just sequences) are accepted and failed conversions now raise much more informative exceptions. - QtCore.Q_ENUMS() and QtCore.Q_FLAGS() now populate the meta-object. - The QML debugger is automatically enabled when --debug is passed to configure.py. v5.1.1 16th October 2013 - This is a bug fix release. v5.1 2nd October 2013 - Added full support for Qt v5.1. - Added the QtSensors module. - Added the QtSerialPort module. - A (nearly) complete set of OpenGL v2.0 and OpenGL ES/2 bindings are included. - Cross-compilation is now supported. A configuration file for Python3 on the Raspberry Pi is included. v5.0.1 21st August 2013 - Added the QtQuick module including the ability to create Python Quick items from QML. - Added the QtQml module including the ability to create Python objects from QML. - Added the QtMultimediaWidgets module. - Completed the implementation of the QtMultimedia module including support for cameras and radios. - Added the remaining OpenGL classes to the QtGui module. - Added the 'revision' keyword argument to pyqtProperty(). - Added the 'revision' and 'arguments' keyword arguments to pyqtSignal(). - Added the 'revision' keyword argument to pyqtSlot(). - Added the 'pyqt5qmlplugin' plugin for qmlscene. - The DBus main loop module has been renamed to dbus.mainloop.pyqt5 from dbus.mainloop.qt. - Added the --no-qml-plugin and --qml-plugindir options to configure.py. - Added many QtMultimedia, QML and QtQuick related examples. - Classes now support co-operative multi-inheritance. (This may introduce incompatibilities with PyQt v5.0.) v5.0 16th June 2013 - The first release of PyQt5. PyQt5_gpl-5.10.1/pylupdate/0000755000076500000240000000000013245231431015506 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/pylupdate/pylupdate_main.py0000644000076500000240000001573313245233151021105 0ustar philstaff00000000000000# Copyright (c) 2018 Riverbank Computing Limited # # This file is part of PyQt5. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. import sys from PyQt5.QtCore import (PYQT_VERSION_STR, QDir, QFile, QFileInfo, QIODevice, QTextStream) from .pylupdate import * def printUsage(): sys.stderr.write( "Usage:\n" " pylupdate5 [options] project-file\n" " pylupdate5 [options] source-files -ts ts-files\n" "\n" "Options:\n" " -help Display this information and exit\n" " -version\n" " Display the version of pylupdate5 and exit\n" " -verbose\n" " Explain what is being done\n" " -noobsolete\n" " Drop all obsolete strings\n" " -tr-function name\n" " name() may be used instead of tr()\n" " -translate-function name\n" " name() may be used instead of translate()\n"); def updateTsFiles(fetchedTor, tsFileNames, codecForTr, noObsolete, verbose): dir = QDir() for t in tsFileNames: fn = dir.relativeFilePath(t) tor = MetaTranslator() out = MetaTranslator() tor.load(t) if codecForTr: tor.setCodec(codecForTr) merge(tor, fetchedTor, out, noObsolete, verbose, fn) if noObsolete: out.stripObsoleteMessages() out.stripEmptyContexts() if not out.save(t): sys.stderr.write("pylupdate5 error: Cannot save '%s'\n" % fn) def main(): # Initialise. defaultContext = "@default" fetchedTor = MetaTranslator() codecForTr = '' codecForSource = '' tsFileNames = [] uiFileNames = [] verbose = False noObsolete = False metSomething = False numFiles = 0 standardSyntax = True metTsFlag = False tr_func = None translate_func = None # Parse the command line. for arg in sys.argv[1:]: if arg == "-ts": standardSyntax = False argc = len(sys.argv) i = 1 while i < argc: arg = sys.argv[i] i += 1 if arg == "-help": printUsage() sys.exit(0) if arg == "-version": sys.stderr.write("pylupdate5 v%s\n" % PYQT_VERSION_STR) sys.exit(0) if arg == "-noobsolete": noObsolete = True continue if arg == "-verbose": verbose = True continue if arg == "-ts": metTsFlag = True continue if arg == "-tr-function": if i >= argc: sys.stderr.write( "pylupdate5 error: missing -tr-function name\n") sys.exit(2) tr_func = sys.argv[i] i += 1 continue if arg == "-translate-function": if i >= argc: sys.stderr.write( "pylupdate5 error: missing -translate-function name\n") sys.exit(2) translate_func = sys.argv[i] i += 1 continue numFiles += 1 fullText = "" if not metTsFlag: f = QFile(arg) if not f.open(QIODevice.ReadOnly): sys.stderr.write( "pylupdate5 error: Cannot open file '%s'\n" % arg) sys.exit(1) t = QTextStream(f) fullText = t.readAll() f.close() if standardSyntax: oldDir = QDir.currentPath() QDir.setCurrent(QFileInfo(arg).path()) fetchedTor = MetaTranslator() codecForTr = '' codecForSource = '' tsFileNames = [] uiFileNames = [] for key, value in proFileTagMap(fullText).items(): for t in value.split(' '): if key == "SOURCES": fetchtr_py(QDir.current().absoluteFilePath(t), fetchedTor, defaultContext, True, codecForSource, tr_func, translate_func) metSomething = True elif key == "TRANSLATIONS": tsFileNames.append(QDir.current().absoluteFilePath(t)) metSomething = True elif key in ("CODEC", "DEFAULTCODEC", "CODECFORTR"): codecForTr = t fetchedTor.setCodec(codecForTr) elif key == "CODECFORSRC": codecForSource = t elif key == "FORMS": fetchtr_ui(QDir.current().absoluteFilePath(t), fetchedTor, defaultContext, True) updateTsFiles(fetchedTor, tsFileNames, codecForTr, noObsolete, verbose) if not metSomething: sys.stderr.write( "pylupdate5 warning: File '%s' does not look like a " "project file\n" % arg) elif len(tsFileNames) == 0: sys.stderr.write( "pylupdate5 warning: Met no 'TRANSLATIONS' entry in " "project file '%s'\n" % arg) QDir.setCurrent(oldDir) else: if metTsFlag: if arg.lower().endswith(".ts"): fi = QFileInfo(arg) if not fi.exists() or fi.isWritable(): tsFileNames.append(arg) else: sys.stderr.write( "pylupdate5 warning: For some reason, I " "cannot save '%s'\n" % arg) else: sys.stderr.write( "pylupdate5 error: File '%s' lacks .ts extension\n" % arg) else: fi = QFileInfo(arg) if fi.suffix() in ("py", "pyw"): fetchtr_py(fi.absoluteFilePath(), fetchedTor, defaultContext, True, codecForSource, tr_func, translate_func) else: fetchtr_ui(fi.absoluteFilePath(), fetchedTor, defaultContext, True) if not standardSyntax: updateTsFiles(fetchedTor, tsFileNames, codecForTr, noObsolete, verbose) if numFiles == 0: printUsage() sys.exit(1) if __name__ == '__main__': main() PyQt5_gpl-5.10.1/pylupdate/pylupdatemod.sip0000644000076500000240000000540113245233151020733 0ustar philstaff00000000000000// This defines the API exposed by the Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.pylupdate, keyword_arguments="None", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %DefaultEncoding "Latin-1" %ModuleHeaderCode #include "pylupdate.h" %End void fetchtr_py(const char *fileName, MetaTranslator *tor, const char *defaultContext, bool mustExist, const char *codecForSource, const char *tr_func, const char *translate_func); void fetchtr_ui(const char *fileName, MetaTranslator *tor, const char *defaultContext, bool mustExist); void merge(const MetaTranslator *tor, const MetaTranslator *virginTor, MetaTranslator *out, bool noObsolete, bool verbose, const QString &filename); QMap proFileTagMap(const QString &text); class MetaTranslator { %TypeHeaderCode #include "pylupdate.h" %End public: MetaTranslator(); MetaTranslator(const MetaTranslator &tor); bool load(const QString &filename); bool save(const QString &filename) const; void stripObsoleteMessages(); void stripEmptyContexts(); void setCodec(const char *name); }; PyQt5_gpl-5.10.1/pyrcc/0000755000076500000240000000000013245231431014617 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/pyrcc/pyrcc_main.py0000644000076500000240000001237013245233151017321 0ustar philstaff00000000000000# Copyright (c) 2018 Riverbank Computing Limited # # This file is part of PyQt5. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. import sys from PyQt5.QtCore import PYQT_VERSION_STR, QDir, QFile from .pyrcc import * # Initialise the globals. verbose = False compressLevel = CONSTANT_COMPRESSLEVEL_DEFAULT compressThreshold = CONSTANT_COMPRESSTHRESHOLD_DEFAULT resourceRoot = '' def processResourceFile(filenamesIn, filenameOut, listFiles): if verbose: sys.stderr.write("PyQt5 resource compiler\n") # Setup. library = RCCResourceLibrary() library.setInputFiles(filenamesIn) library.setVerbose(verbose) library.setCompressLevel(compressLevel) library.setCompressThreshold(compressThreshold) library.setResourceRoot(resourceRoot) if not library.readFiles(): return False if filenameOut == '-': filenameOut = '' if listFiles: # Open the output file or use stdout if not specified. if filenameOut: try: out_fd = open(filenameOut, 'w') except Exception: sys.stderr.write( "Unable to open %s for writing\n" % filenameOut) return False else: out_fd = sys.stdout for df in library.dataFiles(): out_fd.write("%s\n" % QDir.cleanPath(df)) if out_fd is not sys.stdout: out_fd.close() return True return library.output(filenameOut) def showHelp(error): sys.stderr.write("PyQt5 resource compiler\n") if error: sys.stderr.write("pyrcc5: %s\n" % error) sys.stderr.write( "Usage: pyrcc5 [options] \n" "\n" "Options:\n" " -o file Write output to file rather than stdout\n" " -threshold level Threshold to consider compressing files\n" " -compress level Compress input files by level\n" " -root path Prefix resource access path with root path\n" " -no-compress Disable all compression\n" " -version Display version\n" " -help Display this information\n") def main(): # Parse the command line. Note that this mimics the original C++ (warts # and all) in order to preserve backwards compatibility. global verbose global compressLevel global compressThreshold global resourceRoot outFilename = '' helpRequested = False listFiles = False files = [] errorMsg = None argc = len(sys.argv) i = 1 while i < argc: arg = sys.argv[i] i += 1 if arg[0] == '-': opt = arg[1:] if opt == "o": if i >= argc: errorMsg = "Missing output name" break outFilename = sys.argv[i] i += 1 elif opt == "root": if i >= argc: errorMsg = "Missing root path" break resourceRoot = QDir.cleanPath(sys.argv[i]) i += 1 if resourceRoot == '' or resourceRoot[0] != '/': errorMsg = "Root must start with a /" break elif opt == "compress": if i >= argc: errorMsg = "Missing compression level" break compressLevel = int(sys.argv[i]) i += 1 elif opt == "threshold": if i >= argc: errorMsg = "Missing compression threshold" break compressThreshold = int(sys.argv[i]) i += 1 elif opt == "verbose": verbose = True elif opt == "list": listFiles = True elif opt == "version": sys.stderr.write("pyrcc5 v%s\n" % PYQT_VERSION_STR) sys.exit(1) elif opt == "help" or opt == "h": helpRequested = True elif opt == "no-compress": compressLevel = -2 else: errorMsg = "Unknown option: '%s'" % arg break else: if not QFile.exists(arg): sys.stderr.write( "%s: File does not exist '%s'\n" % (sys.argv[0], arg)) sys.exit(1) files.append(arg) # Handle any errors or a request for help. if len(files) == 0 or errorMsg is not None or helpRequested: showHelp(errorMsg) sys.exit(1) if not processResourceFile(files, outFilename, listFiles): sys.exit(1) if __name__ == '__main__': main() PyQt5_gpl-5.10.1/pyrcc/pyrccmod.sip0000644000076500000240000000437713245233151017170 0ustar philstaff00000000000000// Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.pyrcc, keyword_arguments="None", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper const int CONSTANT_COMPRESSLEVEL_DEFAULT; const int CONSTANT_COMPRESSTHRESHOLD_DEFAULT; class RCCResourceLibrary { %TypeHeaderCode #include "rcc.h" %End public: RCCResourceLibrary(); ~RCCResourceLibrary(); bool output(const QString &out_name); bool readFiles(); void setInputFiles(QStringList files); QStringList dataFiles() const; void setVerbose(bool b); void setCompressLevel(int c); void setCompressThreshold(int t); void setResourceRoot(QString str); }; PyQt5_gpl-5.10.1/pyuic/0000755000076500000240000000000013245231431014630 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/pyuic/uic/0000755000076500000240000000000013245231431015410 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/pyuic/uic/__init__.py0000644000076500000240000002165013245233151017526 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# __all__ = ("compileUi", "compileUiDir", "loadUiType", "loadUi", "widgetPluginPath") from .Compiler import indenter, compiler _header = """# -*- coding: utf-8 -*- # Form implementation generated from reading ui file '%s' # # Created by: PyQt5 UI code generator %s # # WARNING! All changes made in this file will be lost! """ _display_code = """ if __name__ == "__main__": \timport sys \tapp = QtWidgets.QApplication(sys.argv) \t%(widgetname)s = QtWidgets.%(baseclass)s() \tui = %(uiclass)s() \tui.setupUi(%(widgetname)s) \t%(widgetname)s.show() \tsys.exit(app.exec_()) """ def compileUiDir(dir, recurse=False, map=None, **compileUi_args): """compileUiDir(dir, recurse=False, map=None, **compileUi_args) Creates Python modules from Qt Designer .ui files in a directory or directory tree. dir is the name of the directory to scan for files whose name ends with '.ui'. By default the generated Python module is created in the same directory ending with '.py'. recurse is set if any sub-directories should be scanned. The default is False. map is an optional callable that is passed the name of the directory containing the '.ui' file and the name of the Python module that will be created. The callable should return a tuple of the name of the directory in which the Python module will be created and the (possibly modified) name of the module. The default is None. compileUi_args are any additional keyword arguments that are passed to the compileUi() function that is called to create each Python module. """ import os # Compile a single .ui file. def compile_ui(ui_dir, ui_file): # Ignore if it doesn't seem to be a .ui file. if ui_file.endswith('.ui'): py_dir = ui_dir py_file = ui_file[:-3] + '.py' # Allow the caller to change the name of the .py file or generate # it in a different directory. if map is not None: py_dir, py_file = map(py_dir, py_file) # Make sure the destination directory exists. try: os.makedirs(py_dir) except: pass ui_path = os.path.join(ui_dir, ui_file) py_path = os.path.join(py_dir, py_file) ui_file = open(ui_path, 'r') py_file = open(py_path, 'w') try: compileUi(ui_file, py_file, **compileUi_args) finally: ui_file.close() py_file.close() if recurse: for root, _, files in os.walk(dir): for ui in files: compile_ui(root, ui) else: for ui in os.listdir(dir): if os.path.isfile(os.path.join(dir, ui)): compile_ui(dir, ui) def compileUi(uifile, pyfile, execute=False, indent=4, from_imports=False, resource_suffix='_rc', import_from='.'): """compileUi(uifile, pyfile, execute=False, indent=4, from_imports=False, resource_suffix='_rc', import_from='.') Creates a Python module from a Qt Designer .ui file. uifile is a file name or file-like object containing the .ui file. pyfile is the file-like object to which the Python code will be written to. execute is optionally set to generate extra Python code that allows the code to be run as a standalone application. The default is False. indent is the optional indentation width using spaces. If it is 0 then a tab is used. The default is 4. from_imports is optionally set to generate relative import statements. At the moment this only applies to the import of resource modules. resource_suffix is the suffix appended to the basename of any resource file specified in the .ui file to create the name of the Python module generated from the resource file by pyrcc4. The default is '_rc', i.e. if the .ui file specified a resource file called foo.qrc then the corresponding Python module is foo_rc. import_from is optionally set to the package used for relative import statements. The default is ``'.'``. """ from PyQt5.QtCore import PYQT_VERSION_STR try: uifname = uifile.name except AttributeError: uifname = uifile indenter.indentwidth = indent pyfile.write(_header % (uifname, PYQT_VERSION_STR)) winfo = compiler.UICompiler().compileUi(uifile, pyfile, from_imports, resource_suffix, import_from) if execute: indenter.write_code(_display_code % winfo) def loadUiType(uifile, from_imports=False, resource_suffix='_rc', import_from='.'): """loadUiType(uifile, from_imports=False, resource_suffix='_rc', import_from='.') -> (form class, base class) Load a Qt Designer .ui file and return the generated form class and the Qt base class. uifile is a file name or file-like object containing the .ui file. from_imports is optionally set to generate relative import statements. At the moment this only applies to the import of resource modules. resource_suffix is the suffix appended to the basename of any resource file specified in the .ui file to create the name of the Python module generated from the resource file by pyrcc4. The default is '_rc', i.e. if the .ui file specified a resource file called foo.qrc then the corresponding Python module is foo_rc. import_from is optionally set to the package used for relative import statements. The default is ``'.'``. """ import sys from PyQt5 import QtWidgets if sys.hexversion >= 0x03000000: from .port_v3.string_io import StringIO else: from .port_v2.string_io import StringIO code_string = StringIO() winfo = compiler.UICompiler().compileUi(uifile, code_string, from_imports, resource_suffix, import_from) ui_globals = {} exec(code_string.getvalue(), ui_globals) return (ui_globals[winfo["uiclass"]], getattr(QtWidgets, winfo["baseclass"])) def loadUi(uifile, baseinstance=None, package='', resource_suffix='_rc'): """loadUi(uifile, baseinstance=None, package='') -> widget Load a Qt Designer .ui file and return an instance of the user interface. uifile is a file name or file-like object containing the .ui file. baseinstance is an optional instance of the Qt base class. If specified then the user interface is created in it. Otherwise a new instance of the base class is automatically created. package is the optional package which is used as the base for any relative imports of custom widgets. resource_suffix is the suffix appended to the basename of any resource file specified in the .ui file to create the name of the Python module generated from the resource file by pyrcc4. The default is '_rc', i.e. if the .ui file specified a resource file called foo.qrc then the corresponding Python module is foo_rc. """ from .Loader.loader import DynamicUILoader return DynamicUILoader(package).loadUi(uifile, baseinstance, resource_suffix) # The list of directories that are searched for widget plugins. from .objcreator import widgetPluginPath PyQt5_gpl-5.10.1/pyuic/uic/Compiler/0000755000076500000240000000000013245231431017162 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/pyuic/uic/Compiler/__init__.py0000644000076500000240000000175413245233151021303 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# PyQt5_gpl-5.10.1/pyuic/uic/Compiler/compiler.py0000644000076500000240000001110713245233151021347 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2016 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import sys from ..properties import Properties from ..uiparser import UIParser from . import qtproxies from .indenter import createCodeIndenter, getIndenter, write_code from .qobjectcreator import CompilerCreatorPolicy class UICompiler(UIParser): def __init__(self): UIParser.__init__(self, qtproxies.QtCore, qtproxies.QtGui, qtproxies.QtWidgets, CompilerCreatorPolicy()) def reset(self): qtproxies.i18n_strings = [] UIParser.reset(self) def setContext(self, context): qtproxies.i18n_context = context def createToplevelWidget(self, classname, widgetname): indenter = getIndenter() indenter.level = 0 indenter.write("from PyQt5 import QtCore, QtGui, QtWidgets") indenter.write("") indenter.write("class Ui_%s(object):" % self.uiname) indenter.indent() indenter.write("def setupUi(self, %s):" % widgetname) indenter.indent() w = self.factory.createQObject(classname, widgetname, (), is_attribute = False, no_instantiation = True) w.baseclass = classname w.uiclass = "Ui_%s" % self.uiname return w def setDelayedProps(self): write_code("") write_code("self.retranslateUi(%s)" % self.toplevelWidget) UIParser.setDelayedProps(self) def finalize(self): indenter = getIndenter() indenter.level = 1 indenter.write("") indenter.write("def retranslateUi(self, %s):" % self.toplevelWidget) indenter.indent() if qtproxies.i18n_strings: indenter.write("_translate = QtCore.QCoreApplication.translate") for s in qtproxies.i18n_strings: indenter.write(s) else: indenter.write("pass") indenter.dedent() indenter.dedent() # Keep a reference to the resource modules to import because the parser # will reset() before returning. self._resources = self.resources self._resources.sort() def compileUi(self, input_stream, output_stream, from_imports, resource_suffix, import_from): createCodeIndenter(output_stream) w = self.parse(input_stream, resource_suffix) indenter = getIndenter() indenter.write("") self.factory._cpolicy._writeOutImports() for res in self._resources: if from_imports: write_code("from %s import %s" % (import_from, res)) else: write_code("import %s" % res) return {"widgetname": str(w), "uiclass" : w.uiclass, "baseclass" : w.baseclass} PyQt5_gpl-5.10.1/pyuic/uic/Compiler/indenter.py0000644000076500000240000000526613245233151021356 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# indentwidth = 4 _indenter = None class _IndentedCodeWriter(object): def __init__(self, output): self.level = 0 self.output = output def indent(self): self.level += 1 def dedent(self): self.level -= 1 def write(self, line): if line.strip(): if indentwidth > 0: indent = " " * indentwidth line = line.replace("\t", indent) else: indent = "\t" self.output.write("%s%s\n" % (indent * self.level, line)) else: self.output.write("\n") def createCodeIndenter(output): global _indenter _indenter = _IndentedCodeWriter(output) def getIndenter(): return _indenter def write_code(string): _indenter.write(string) PyQt5_gpl-5.10.1/pyuic/uic/Compiler/misc.py0000644000076500000240000000450613245233151020475 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2016 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# def moduleMember(module, name): if module: return "%s.%s" % (module, name) return name class Literal(object): """Literal(string) -> new literal string will not be quoted when put into an argument list""" def __init__(self, string): self.string = string def __str__(self): return self.string def __or__(self, r_op): return Literal("%s|%s" % (self, r_op)) PyQt5_gpl-5.10.1/pyuic/uic/Compiler/proxy_metaclass.py0000644000076500000240000001034413245233151022754 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# from .misc import Literal, moduleMember class ProxyMetaclass(type): """ ProxyMetaclass is the meta-class for proxies. """ def __init__(*args): """ Initialise the meta-class. """ # Initialise as normal. type.__init__(*args) # The proxy type object we have created. proxy = args[0] # Go through the proxy's attributes looking for other proxies. for sub_proxy in proxy.__dict__.values(): if type(sub_proxy) is ProxyMetaclass: # Set the module name of the contained proxy to the name of the # container proxy. sub_proxy.module = proxy.__name__ # Attribute hierachies are created depth first so any proxies # contained in the sub-proxy whose module we have just set will # already exist and have an incomplete module name. We need to # revisit them and prepend the new name to their module names. # Note that this should be recursive but with current usage we # know there will be only one level to revisit. for sub_sub_proxy in sub_proxy.__dict__.values(): if type(sub_sub_proxy) is ProxyMetaclass: sub_sub_proxy.module = '%s.%s' % (proxy.__name__, sub_sub_proxy.module) # Makes sure there is a 'module' attribute. if not hasattr(proxy, 'module'): proxy.module = '' def __getattribute__(cls, name): try: return type.__getattribute__(cls, name) except AttributeError: # Make sure __init__()'s use of hasattr() works. if name == 'module': raise # Avoid a circular import. from .qtproxies import LiteralProxyClass return type(name, (LiteralProxyClass, ), {"module": moduleMember(type.__getattribute__(cls, "module"), type.__getattribute__(cls, "__name__"))}) def __str__(cls): return moduleMember(type.__getattribute__(cls, "module"), type.__getattribute__(cls, "__name__")) def __or__(self, r_op): return Literal("%s|%s" % (self, r_op)) def __eq__(self, other): return str(self) == str(other) PyQt5_gpl-5.10.1/pyuic/uic/Compiler/qobjectcreator.py0000644000076500000240000001341713245233151022552 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2018 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import logging import sys from .indenter import write_code from .qtproxies import QtGui, QtWidgets, Literal, strict_getattr if sys.hexversion >= 0x03000000: from ..port_v3.as_string import as_string else: from ..port_v2.as_string import as_string logger = logging.getLogger(__name__) DEBUG = logger.debug class _QtWrapper(object): @classmethod def search(cls, name): try: return strict_getattr(cls.module, name) except AttributeError: return None class _QtGuiWrapper(_QtWrapper): module = QtGui class _QtWidgetsWrapper(_QtWrapper): module = QtWidgets class _ModuleWrapper(object): def __init__(self, name, classes): if "." in name: idx = name.rfind(".") self._package = name[:idx] self._module = name[idx + 1:] else: self._package = None self._module = name self._classes = classes self._used = False def search(self, cls): if cls in self._classes: self._used = True # Remove any C++ scope. cls = cls.split('.')[-1] return type(cls, (QtWidgets.QWidget,), {"module": self._module}) else: return None def _writeImportCode(self): if self._used: if self._package is None: write_code("import %s" % self._module) else: write_code("from %s import %s" % (self._package, self._module)) class _CustomWidgetLoader(object): def __init__(self): self._widgets = {} self._usedWidgets = set() def addCustomWidget(self, widgetClass, baseClass, module): assert widgetClass not in self._widgets self._widgets[widgetClass] = (baseClass, module) def _resolveBaseclass(self, baseClass): try: for x in range(0, 10): try: return strict_getattr(QtWidgets, baseClass) except AttributeError: pass baseClass = self._widgets[baseClass][0] else: raise ValueError("baseclass resolve took too long, check custom widgets") except KeyError: raise ValueError("unknown baseclass %s" % baseClass) def search(self, cls): try: baseClass = self._resolveBaseclass(self._widgets[cls][0]) DEBUG("resolved baseclass of %s: %s" % (cls, baseClass)) except KeyError: return None self._usedWidgets.add(cls) return type(cls, (baseClass, ), {"module" : ""}) def _writeImportCode(self): imports = {} for widget in self._usedWidgets: _, module = self._widgets[widget] imports.setdefault(module, []).append(widget) for module, classes in sorted(imports.items()): write_code("from %s import %s" % (module, ", ".join(sorted(classes)))) class CompilerCreatorPolicy(object): def __init__(self): self._modules = [] def createQtGuiWidgetsWrappers(self): return [_QtGuiWrapper, _QtWidgetsWrapper] def createModuleWrapper(self, name, classes): mw = _ModuleWrapper(name, classes) self._modules.append(mw) return mw def createCustomWidgetLoader(self): cw = _CustomWidgetLoader() self._modules.append(cw) return cw def instantiate(self, clsObject, objectname, ctor_args, is_attribute=True, no_instantiation=False): return clsObject(objectname, is_attribute, ctor_args, no_instantiation) def invoke(self, rname, method, args): return method(rname, *args) def getSlot(self, object, slotname): return Literal("%s.%s" % (object, slotname)) def asString(self, s): return as_string(s) def _writeOutImports(self): for module in self._modules: module._writeImportCode() PyQt5_gpl-5.10.1/pyuic/uic/Compiler/qtproxies.py0000644000076500000240000003731213245233151021601 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import sys import re from .indenter import write_code from .misc import Literal, moduleMember if sys.hexversion >= 0x03000000: from ..port_v3.proxy_base import ProxyBase from ..port_v3.as_string import as_string else: from ..port_v2.proxy_base import ProxyBase from ..port_v2.as_string import as_string i18n_strings = [] i18n_context = "" def i18n_print(string): i18n_strings.append(string) def i18n_void_func(name): def _printer(self, *args): i18n_print("%s.%s(%s)" % (self, name, ", ".join(map(as_string, args)))) return _printer def i18n_func(name): def _printer(self, rname, *args): i18n_print("%s = %s.%s(%s)" % (rname, self, name, ", ".join(map(as_string, args)))) return Literal(rname) return _printer def strict_getattr(module, clsname): cls = getattr(module, clsname) if issubclass(cls, LiteralProxyClass): raise AttributeError(cls) else: return cls class i18n_string(object): def __init__(self, string, disambig): self.string = string self.disambig = disambig def __str__(self): if self.disambig is None: return '_translate("%s", %s)' % (i18n_context, as_string(self.string)) return '_translate("%s", %s, %s)' % (i18n_context, as_string(self.string), as_string(self.disambig)) # Classes with this flag will be handled as literal values. If functions are # called on these classes, the literal value changes. # Example: # the code # >>> QSize(9,10).expandedTo(...) # will print just that code. AS_ARGUMENT = 0x02 # Classes with this flag may have members that are signals which themselves # will have a connect() member. AS_SIGNAL = 0x01 # ATTENTION: currently, classes can either be literal or normal. If a class # should need both kinds of behaviour, the code has to be changed. class ProxyClassMember(object): def __init__(self, proxy, function_name, flags): self.proxy = proxy self.function_name = function_name self.flags = flags def __str__(self): return "%s.%s" % (self.proxy, self.function_name) def __call__(self, *args): if self.function_name == 'setProperty': str_args = (as_string(args[0]), as_string(args[1])) else: str_args = map(as_string, args) func_call = "%s.%s(%s)" % (self.proxy, self.function_name, ", ".join(str_args)) if self.flags & AS_ARGUMENT: self.proxy._uic_name = func_call return self.proxy else: needs_translation = False for arg in args: if isinstance(arg, i18n_string): needs_translation = True if needs_translation: i18n_print(func_call) else: write_code(func_call) def __getattribute__(self, attribute): """ Reimplemented to create a proxy connect() if requested and this might be a proxy for a signal. """ try: return object.__getattribute__(self, attribute) except AttributeError: if attribute == 'connect' and self.flags & AS_SIGNAL: return ProxyClassMember(self, attribute, 0) raise def __getitem__(self, idx): """ Reimplemented to create a proxy member that should be a signal that passes arguments. We handle signals without arguments before we get here and never apply the index notation to them. """ return ProxySignalWithArguments(self.proxy, self.function_name, idx) class ProxySignalWithArguments(object): """ This is a proxy for (what should be) a signal that passes arguments. """ def __init__(self, sender, signal_name, signal_index): self._sender = sender self._signal_name = signal_name # Convert the signal index, which will be a single argument or a tuple # of arguments, to quoted strings. if isinstance(signal_index, tuple): self._signal_index = ','.join(["'%s'" % a for a in signal_index]) else: self._signal_index = "'%s'" % signal_index def connect(self, slot): write_code("%s.%s[%s].connect(%s)" % (self._sender, self._signal_name, self._signal_index, slot)) class ProxyClass(ProxyBase): flags = 0 def __init__(self, objectname, is_attribute, args=(), noInstantiation=False): if objectname: if is_attribute: objectname = "self." + objectname self._uic_name = objectname else: self._uic_name = "Unnamed" if not noInstantiation: funcall = "%s(%s)" % \ (moduleMember(self.module, self.__class__.__name__), ", ".join(map(str, args))) if objectname: funcall = "%s = %s" % (objectname, funcall) write_code(funcall) def __str__(self): return self._uic_name def __getattribute__(self, attribute): try: return object.__getattribute__(self, attribute) except AttributeError: return ProxyClassMember(self, attribute, self.flags) class LiteralProxyClass(ProxyClass): """LiteralObject(*args) -> new literal class a literal class can be used as argument in a function call >>> class Foo(LiteralProxyClass): pass >>> str(Foo(1,2,3)) == "Foo(1,2,3)" """ flags = AS_ARGUMENT def __init__(self, *args): self._uic_name = "%s(%s)" % \ (moduleMember(self.module, self.__class__.__name__), ", ".join(map(as_string, args))) class ProxyNamespace(ProxyBase): pass # These are all the Qt classes used by pyuic5 in their namespaces. If a class # is missing, the compiler will fail, normally with an AttributeError. # # For adding new classes: # - utility classes used as literal values do not need to be listed # because they are created on the fly as subclasses of LiteralProxyClass # - classes which are *not* QWidgets inherit from ProxyClass and they # have to be listed explicitly in the correct namespace. These classes # are created via a ProxyQObjectCreator # - new QWidget-derived classes have to inherit from qtproxies.QWidget # If the widget does not need any special methods, it can be listed # in _qwidgets class QtCore(ProxyNamespace): class Qt(ProxyNamespace): pass ## connectSlotsByName and connect have to be handled as class methods, ## otherwise they would be created as LiteralProxyClasses and never be ## printed class QMetaObject(ProxyClass): @classmethod def connectSlotsByName(cls, *args): ProxyClassMember(cls, "connectSlotsByName", 0)(*args) class QObject(ProxyClass): flags = AS_SIGNAL def metaObject(self): class _FakeMetaObject(object): def className(*args): return self.__class__.__name__ return _FakeMetaObject() def objectName(self): return self._uic_name.split(".")[-1] class QtGui(ProxyNamespace): class QIcon(ProxyClass): class fromTheme(ProxyClass): pass class QConicalGradient(ProxyClass): pass class QLinearGradient(ProxyClass): pass class QRadialGradient(ProxyClass): pass class QBrush(ProxyClass): pass class QPainter(ProxyClass): pass class QPalette(ProxyClass): pass class QFont(ProxyClass): pass # These sub-class QWidget but aren't themselves sub-classed. _qwidgets = ("QCalendarWidget", "QDialogButtonBox", "QDockWidget", "QGroupBox", "QLineEdit", "QMainWindow", "QMenuBar", "QOpenGLWidget", "QProgressBar", "QStatusBar", "QToolBar", "QWizardPage") class QtWidgets(ProxyNamespace): class QApplication(QtCore.QObject): @staticmethod def translate(uiname, text, disambig): return i18n_string(text or "", disambig) class QSpacerItem(ProxyClass): pass class QSizePolicy(ProxyClass): pass # QActions inherit from QObject for the meta-object stuff and the hierarchy # has to be correct since we have a isinstance(x, QtWidgets.QLayout) call # in the UI parser. class QAction(QtCore.QObject): pass class QActionGroup(QtCore.QObject): pass class QButtonGroup(QtCore.QObject): pass class QLayout(QtCore.QObject): pass class QGridLayout(QLayout): pass class QBoxLayout(QLayout): pass class QHBoxLayout(QBoxLayout): pass class QVBoxLayout(QBoxLayout): pass class QFormLayout(QLayout): pass class QWidget(QtCore.QObject): def font(self): return Literal("%s.font()" % self) def minimumSizeHint(self): return Literal("%s.minimumSizeHint()" % self) def sizePolicy(self): sp = LiteralProxyClass() sp._uic_name = "%s.sizePolicy()" % self return sp class QDialog(QWidget): pass class QColorDialog(QDialog): pass class QFileDialog(QDialog): pass class QFontDialog(QDialog): pass class QInputDialog(QDialog): pass class QMessageBox(QDialog): pass class QWizard(QDialog): pass class QAbstractSlider(QWidget): pass class QDial(QAbstractSlider): pass class QScrollBar(QAbstractSlider): pass class QSlider(QAbstractSlider): pass class QMenu(QWidget): def menuAction(self): return Literal("%s.menuAction()" % self) class QTabWidget(QWidget): def addTab(self, *args): text = args[-1] if isinstance(text, i18n_string): i18n_print("%s.setTabText(%s.indexOf(%s), %s)" % \ (self._uic_name, self._uic_name, args[0], text)) args = args[:-1] + ("", ) ProxyClassMember(self, "addTab", 0)(*args) def indexOf(self, page): return Literal("%s.indexOf(%s)" % (self, page)) class QComboBox(QWidget): pass class QFontComboBox(QComboBox): pass class QAbstractSpinBox(QWidget): pass class QDoubleSpinBox(QAbstractSpinBox): pass class QSpinBox(QAbstractSpinBox): pass class QDateTimeEdit(QAbstractSpinBox): pass class QDateEdit(QDateTimeEdit): pass class QTimeEdit(QDateTimeEdit): pass class QFrame(QWidget): pass class QLabel(QFrame): pass class QLCDNumber(QFrame): pass class QSplitter(QFrame): pass class QStackedWidget(QFrame): pass class QToolBox(QFrame): def addItem(self, *args): text = args[-1] if isinstance(text, i18n_string): i18n_print("%s.setItemText(%s.indexOf(%s), %s)" % \ (self._uic_name, self._uic_name, args[0], text)) args = args[:-1] + ("", ) ProxyClassMember(self, "addItem", 0)(*args) def indexOf(self, page): return Literal("%s.indexOf(%s)" % (self, page)) def layout(self): return QtWidgets.QLayout("%s.layout()" % self, False, (), noInstantiation=True) class QAbstractScrollArea(QFrame): def viewport(self): return QtWidgets.QWidget("%s.viewport()" % self, False, (), noInstantiation=True) class QGraphicsView(QAbstractScrollArea): pass class QMdiArea(QAbstractScrollArea): pass class QPlainTextEdit(QAbstractScrollArea): pass class QScrollArea(QAbstractScrollArea): pass class QTextEdit(QAbstractScrollArea): pass class QTextBrowser(QTextEdit): pass class QAbstractItemView(QAbstractScrollArea): pass class QColumnView(QAbstractItemView): pass class QHeaderView(QAbstractItemView): pass class QListView(QAbstractItemView): pass class QTableView(QAbstractItemView): def horizontalHeader(self): return QtWidgets.QHeaderView("%s.horizontalHeader()" % self, False, (), noInstantiation=True) def verticalHeader(self): return QtWidgets.QHeaderView("%s.verticalHeader()" % self, False, (), noInstantiation=True) class QTreeView(QAbstractItemView): def header(self): return QtWidgets.QHeaderView("%s.header()" % self, False, (), noInstantiation=True) class QListWidgetItem(ProxyClass): pass class QListWidget(QListView): setSortingEnabled = i18n_void_func("setSortingEnabled") isSortingEnabled = i18n_func("isSortingEnabled") item = i18n_func("item") class QTableWidgetItem(ProxyClass): pass class QTableWidget(QTableView): setSortingEnabled = i18n_void_func("setSortingEnabled") isSortingEnabled = i18n_func("isSortingEnabled") item = i18n_func("item") horizontalHeaderItem = i18n_func("horizontalHeaderItem") verticalHeaderItem = i18n_func("verticalHeaderItem") class QTreeWidgetItem(ProxyClass): def child(self, index): return QtWidgets.QTreeWidgetItem("%s.child(%i)" % (self, index), False, (), noInstantiation=True) class QTreeWidget(QTreeView): setSortingEnabled = i18n_void_func("setSortingEnabled") isSortingEnabled = i18n_func("isSortingEnabled") def headerItem(self): return QtWidgets.QWidget("%s.headerItem()" % self, False, (), noInstantiation=True) def topLevelItem(self, index): return QtWidgets.QTreeWidgetItem("%s.topLevelItem(%i)" % (self, index), False, (), noInstantiation=True) class QAbstractButton(QWidget): pass class QCheckBox(QAbstractButton): pass class QRadioButton(QAbstractButton): pass class QToolButton(QAbstractButton): pass class QPushButton(QAbstractButton): pass class QCommandLinkButton(QPushButton): pass # Add all remaining classes. for _class in _qwidgets: if _class not in locals(): locals()[_class] = type(_class, (QWidget, ), {}) PyQt5_gpl-5.10.1/pyuic/uic/driver.py0000644000076500000240000001105013245233151017253 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# import sys import logging from . import compileUi, loadUi class Driver(object): """ This encapsulates access to the pyuic functionality so that it can be called by code that is Python v2/v3 specific. """ LOGGER_NAME = 'PyQt5.uic' def __init__(self, opts, ui_file): """ Initialise the object. opts is the parsed options. ui_file is the name of the .ui file. """ if opts.debug: logger = logging.getLogger(self.LOGGER_NAME) handler = logging.StreamHandler() handler.setFormatter(logging.Formatter("%(name)s: %(message)s")) logger.addHandler(handler) logger.setLevel(logging.DEBUG) self._opts = opts self._ui_file = ui_file def invoke(self): """ Invoke the action as specified by the parsed options. Returns 0 if there was no error. """ if self._opts.preview: return self._preview() self._generate() return 0 def _preview(self): """ Preview the .ui file. Return the exit status to be passed back to the parent process. """ from PyQt5 import QtWidgets app = QtWidgets.QApplication([self._ui_file]) widget = loadUi(self._ui_file) widget.show() return app.exec_() def _generate(self): """ Generate the Python code. """ needs_close = False if sys.hexversion >= 0x03000000: if self._opts.output == '-': from io import TextIOWrapper pyfile = TextIOWrapper(sys.stdout.buffer, encoding='utf8') else: pyfile = open(self._opts.output, 'wt', encoding='utf8') needs_close = True else: if self._opts.output == '-': pyfile = sys.stdout else: pyfile = open(self._opts.output, 'wt') needs_close = True import_from = self._opts.import_from if import_from: from_imports = True elif self._opts.from_imports: from_imports = True import_from = '.' else: from_imports = False compileUi(self._ui_file, pyfile, self._opts.execute, self._opts.indent, from_imports, self._opts.resource_suffix, import_from) if needs_close: pyfile.close() def on_IOError(self, e): """ Handle an IOError exception. """ sys.stderr.write("Error: %s: \"%s\"\n" % (e.strerror, e.filename)) def on_SyntaxError(self, e): """ Handle a SyntaxError exception. """ sys.stderr.write("Error in input file: %s\n" % e) def on_NoSuchClassError(self, e): """ Handle a NoSuchClassError exception. """ sys.stderr.write(str(e) + "\n") def on_NoSuchWidgetError(self, e): """ Handle a NoSuchWidgetError exception. """ sys.stderr.write(str(e) + "\n") def on_Exception(self, e): """ Handle a generic exception. """ if logging.getLogger(self.LOGGER_NAME).level == logging.DEBUG: import traceback traceback.print_exception(*sys.exc_info()) else: from PyQt5 import QtCore sys.stderr.write("""An unexpected error occurred. Check that you are using the latest version of PyQt5 and send an error report to support@riverbankcomputing.com, including the following information: * your version of PyQt (%s) * the UI file that caused this error * the debug output of pyuic5 (use the -d flag when calling pyuic5) """ % QtCore.PYQT_VERSION_STR) PyQt5_gpl-5.10.1/pyuic/uic/exceptions.py0000644000076500000240000000434713245233151020154 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2017 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# class NoSuchClassError(Exception): def __str__(self): return "Unknown C++ class: %s" % self.args[0] class NoSuchWidgetError(Exception): def __str__(self): return "Unknown Qt widget: %s" % self.args[0] class UnsupportedPropertyError(Exception): pass class WidgetPluginError(Exception): pass PyQt5_gpl-5.10.1/pyuic/uic/icon_cache.py0000644000076500000240000001163613245233151020045 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# import os.path class IconCache(object): """Maintain a cache of icons. If an icon is used more than once by a GUI then ensure that only one copy is created. """ def __init__(self, object_factory, qtgui_module): """Initialise the cache.""" self._object_factory = object_factory self._qtgui_module = qtgui_module self._base_dir = '' self._cache = [] def set_base_dir(self, base_dir): """ Set the base directory to be used for all relative filenames. """ self._base_dir = base_dir def get_icon(self, iconset): """Return an icon described by the given iconset tag.""" # Handle a themed icon. theme = iconset.attrib.get('theme') if theme is not None: return self._object_factory.createQObject("QIcon.fromTheme", 'icon', (self._object_factory.asString(theme), ), is_attribute=False) # Handle an empty iconset property. if iconset.text is None: return None iset = _IconSet(iconset, self._base_dir) try: idx = self._cache.index(iset) except ValueError: idx = -1 if idx >= 0: # Return the icon from the cache. iset = self._cache[idx] else: # Follow uic's naming convention. name = 'icon' idx = len(self._cache) if idx > 0: name += str(idx) icon = self._object_factory.createQObject("QIcon", name, (), is_attribute=False) iset.set_icon(icon, self._qtgui_module) self._cache.append(iset) return iset.icon class _IconSet(object): """An icon set, ie. the mode and state and the pixmap used for each.""" def __init__(self, iconset, base_dir): """Initialise the icon set from an XML tag.""" # Set the pre-Qt v4.4 fallback (ie. with no roles). self._fallback = self._file_name(iconset.text, base_dir) self._use_fallback = True # Parse the icon set. self._roles = {} for i in iconset: file_name = i.text if file_name is not None: file_name = self._file_name(file_name, base_dir) self._roles[i.tag] = file_name self._use_fallback = False # There is no real icon yet. self.icon = None @staticmethod def _file_name(fname, base_dir): """ Convert a relative filename if we have a base directory. """ fname = fname.replace("\\", "\\\\") if base_dir != '' and fname[0] != ':' and not os.path.isabs(fname): fname = os.path.join(base_dir, fname) return fname def set_icon(self, icon, qtgui_module): """Save the icon and set its attributes.""" if self._use_fallback: icon.addFile(self._fallback) else: for role, pixmap in self._roles.items(): if role.endswith("off"): mode = role[:-3] state = qtgui_module.QIcon.Off elif role.endswith("on"): mode = role[:-2] state = qtgui_module.QIcon.On else: continue mode = getattr(qtgui_module.QIcon, mode.title()) if pixmap: icon.addPixmap(qtgui_module.QPixmap(pixmap), mode, state) else: icon.addPixmap(qtgui_module.QPixmap(), mode, state) self.icon = icon def __eq__(self, other): """Compare two icon sets for equality.""" if not isinstance(other, type(self)): return NotImplemented if self._use_fallback: if other._use_fallback: return self._fallback == other._fallback return False if other._use_fallback: return False return self._roles == other._roles PyQt5_gpl-5.10.1/pyuic/uic/Loader/0000755000076500000240000000000013245231431016616 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/pyuic/uic/Loader/__init__.py0000644000076500000240000000175413245233151020737 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# PyQt5_gpl-5.10.1/pyuic/uic/Loader/loader.py0000644000076500000240000000602513245233151020442 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import os.path from PyQt5 import QtCore, QtGui, QtWidgets from ..uiparser import UIParser from .qobjectcreator import LoaderCreatorPolicy class DynamicUILoader(UIParser): def __init__(self, package): UIParser.__init__(self, QtCore, QtGui, QtWidgets, LoaderCreatorPolicy(package)) def createToplevelWidget(self, classname, widgetname): if self.toplevelInst is not None: if not isinstance(self.toplevelInst, self.factory.findQObjectType(classname)): raise TypeError(("Wrong base class of toplevel widget", (type(self.toplevelInst), classname))) return self.toplevelInst else: return self.factory.createQObject(classname, widgetname, ()) def loadUi(self, filename, toplevelInst, resource_suffix): self.toplevelInst = toplevelInst if hasattr(filename, 'read'): basedir = '' else: # Allow the filename to be a QString. filename = str(filename) basedir = os.path.dirname(filename) return self.parse(filename, resource_suffix, basedir) PyQt5_gpl-5.10.1/pyuic/uic/Loader/qobjectcreator.py0000644000076500000240000001163613245233151022207 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import sys from PyQt5 import QtGui, QtWidgets class _QtWrapper(object): @classmethod def search(cls, name): return getattr(cls.module, name, None) class _QtGuiWrapper(_QtWrapper): module = QtGui class _QtWidgetsWrapper(_QtWrapper): module = QtWidgets class _ModuleWrapper(object): def __init__(self, moduleName, classes): self._moduleName = moduleName self._module = None self._classes = classes def search(self, cls): if cls in self._classes: if self._module is None: self._module = __import__(self._moduleName, {}, {}, self._classes) # Remove any C++ scope. cls = cls.split('.')[-1] return getattr(self._module, cls) return None class _CustomWidgetLoader(object): def __init__(self, package): # should it stay this way? if '.' not in sys.path: sys.path.append('.') self._widgets = {} self._modules = {} self._package = package def addCustomWidget(self, widgetClass, baseClass, module): assert widgetClass not in self._widgets self._widgets[widgetClass] = module def search(self, cls): module_name = self._widgets.get(cls) if module_name is None: return None module = self._modules.get(module_name) if module is None: if module_name.startswith('.'): if self._package == '': raise ImportError( "relative import of %s without base package specified" % module_name) if self._package.startswith('.'): raise ImportError( "base package %s is relative" % self._package) mname = self._package + module_name else: mname = module_name try: module = __import__(mname, {}, {}, (cls,)) except ValueError: # Raise a more helpful exception. raise ImportError("unable to import module %s" % mname) self._modules[module_name] = module return getattr(module, cls) class LoaderCreatorPolicy(object): def __init__(self, package): self._package = package def createQtGuiWidgetsWrappers(self): return [_QtGuiWrapper, _QtWidgetsWrapper] def createModuleWrapper(self, moduleName, classes): return _ModuleWrapper(moduleName, classes) def createCustomWidgetLoader(self): return _CustomWidgetLoader(self._package) def instantiate(self, clsObject, objectName, ctor_args, is_attribute=True): return clsObject(*ctor_args) def invoke(self, rname, method, args): return method(*args) def getSlot(self, object, slotname): # Rename slots that correspond to Python keyword arguments. if slotname == 'raise': slotname += '_' return getattr(object, slotname) def asString(self, s): return s PyQt5_gpl-5.10.1/pyuic/uic/objcreator.py0000644000076500000240000001353013245233151020117 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import os.path from .exceptions import NoSuchWidgetError, WidgetPluginError # The list of directories that are searched for widget plugins. This is # exposed as part of the API. widgetPluginPath = [os.path.join(os.path.dirname(__file__), 'widget-plugins')] MATCH = True NO_MATCH = False MODULE = 0 CW_FILTER = 1 class QObjectCreator(object): def __init__(self, creatorPolicy): self._cpolicy = creatorPolicy self._cwFilters = [] self._modules = self._cpolicy.createQtGuiWidgetsWrappers() # Get the optional plugins. for plugindir in widgetPluginPath: try: plugins = os.listdir(plugindir) except: plugins = [] for filename in plugins: if not filename.endswith('.py'): continue filename = os.path.join(plugindir, filename) plugin_globals = { "MODULE": MODULE, "CW_FILTER": CW_FILTER, "MATCH": MATCH, "NO_MATCH": NO_MATCH} plugin_locals = {} if self.load_plugin(filename, plugin_globals, plugin_locals): pluginType = plugin_locals["pluginType"] if pluginType == MODULE: modinfo = plugin_locals["moduleInformation"]() self._modules.append(self._cpolicy.createModuleWrapper(*modinfo)) elif pluginType == CW_FILTER: self._cwFilters.append(plugin_locals["getFilter"]()) else: raise WidgetPluginError("Unknown plugin type of %s" % filename) self._customWidgets = self._cpolicy.createCustomWidgetLoader() self._modules.append(self._customWidgets) def createQObject(self, classname, *args, **kwargs): # Handle regular and custom widgets. factory = self.findQObjectType(classname) if factory is None: # Handle scoped names, typically static factory methods. parts = classname.split('.') if len(parts) > 1: factory = self.findQObjectType(parts[0]) if factory is not None: for part in parts[1:]: factory = getattr(factory, part, None) if factory is None: break if factory is None: raise NoSuchWidgetError(classname) return self._cpolicy.instantiate(factory, *args, **kwargs) def invoke(self, rname, method, args=()): return self._cpolicy.invoke(rname, method, args) def findQObjectType(self, classname): for module in self._modules: w = module.search(classname) if w is not None: return w return None def getSlot(self, obj, slotname): return self._cpolicy.getSlot(obj, slotname) def asString(self, s): return self._cpolicy.asString(s) def addCustomWidget(self, widgetClass, baseClass, module): for cwFilter in self._cwFilters: match, result = cwFilter(widgetClass, baseClass, module) if match: widgetClass, baseClass, module = result break self._customWidgets.addCustomWidget(widgetClass, baseClass, module) @staticmethod def load_plugin(filename, plugin_globals, plugin_locals): """ Load the plugin from the given file. Return True if the plugin was loaded, or False if it wanted to be ignored. Raise an exception if there was an error. """ plugin = open(filename, 'rU') try: exec(plugin.read(), plugin_globals, plugin_locals) except ImportError: return False except Exception as e: raise WidgetPluginError("%s: %s" % (e.__class__, str(e))) finally: plugin.close() return True PyQt5_gpl-5.10.1/pyuic/uic/port_v2/0000755000076500000240000000000013245231431017003 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/pyuic/uic/port_v2/__init__.py0000644000076500000240000000175413245233151021124 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# PyQt5_gpl-5.10.1/pyuic/uic/port_v2/as_string.py0000644000076500000240000000263313245233151021353 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# import re def as_string(obj): if isinstance(obj, basestring): return '"' + _escape(obj.encode('UTF-8')) + '"' return str(obj) _esc_regex = re.compile(r"(\"|\'|\\)") def _escape(text): # This escapes any escaped single or double quote or backslash. x = _esc_regex.sub(r"\\\1", text) # This replaces any '\n' with an escaped version and a real line break. return re.sub(r'\n', r'\\n"\n"', x) PyQt5_gpl-5.10.1/pyuic/uic/port_v2/ascii_upper.py0000644000076500000240000000245513245233151021667 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# import string # A translation table for converting ASCII lower case to upper case. _ascii_trans_table = string.maketrans(string.ascii_lowercase, string.ascii_uppercase) # Convert a string to ASCII upper case irrespective of the current locale. def ascii_upper(s): return s.translate(_ascii_trans_table) PyQt5_gpl-5.10.1/pyuic/uic/port_v2/proxy_base.py0000644000076500000240000000230313245233151021527 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# from ..Compiler.proxy_metaclass import ProxyMetaclass class ProxyBase(object): """ A base class for proxies using Python v2 syntax for setting the meta-class. """ __metaclass__ = ProxyMetaclass PyQt5_gpl-5.10.1/pyuic/uic/port_v2/string_io.py0000644000076500000240000000215213245233151021353 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # Import the StringIO object. try: from cStringIO import StringIO except ImportError: from StringIO import StringIO PyQt5_gpl-5.10.1/pyuic/uic/port_v3/0000755000076500000240000000000013245231431017004 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/pyuic/uic/port_v3/__init__.py0000644000076500000240000000175413245233151021125 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# PyQt5_gpl-5.10.1/pyuic/uic/port_v3/as_string.py0000644000076500000240000000260413245233151021352 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# import re def as_string(obj): if isinstance(obj, str): return '"' + _escape(obj) + '"' return str(obj) _esc_regex = re.compile(r"(\"|\'|\\)") def _escape(text): # This escapes any escaped single or double quote or backslash. x = _esc_regex.sub(r"\\\1", text) # This replaces any '\n' with an escaped version and a real line break. return re.sub(r'\n', r'\\n"\n"', x) PyQt5_gpl-5.10.1/pyuic/uic/port_v3/ascii_upper.py0000644000076500000240000000245213245233151021665 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # A translation table for converting ASCII lower case to upper case. _ascii_trans_table = bytes.maketrans(b'abcdefghijklmnopqrstuvwxyz', b'ABCDEFGHIJKLMNOPQRSTUVWXYZ') # Convert a string to ASCII upper case irrespective of the current locale. def ascii_upper(s): return s.translate(_ascii_trans_table) PyQt5_gpl-5.10.1/pyuic/uic/port_v3/proxy_base.py0000644000076500000240000000226113245233151021533 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# from ..Compiler.proxy_metaclass import ProxyMetaclass class ProxyBase(metaclass=ProxyMetaclass): """ A base class for proxies using Python v3 syntax for setting the meta-class. """ PyQt5_gpl-5.10.1/pyuic/uic/port_v3/string_io.py0000644000076500000240000000204413245233151021354 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # Import the StringIO object. from io import StringIO PyQt5_gpl-5.10.1/pyuic/uic/properties.py0000644000076500000240000004252113245233151020163 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2017 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import logging import os.path import sys from .exceptions import NoSuchClassError, UnsupportedPropertyError from .icon_cache import IconCache if sys.hexversion >= 0x03000000: from .port_v3.ascii_upper import ascii_upper else: from .port_v2.ascii_upper import ascii_upper logger = logging.getLogger(__name__) DEBUG = logger.debug QtCore = None QtGui = None QtWidgets = None def int_list(prop): return [int(child.text) for child in prop] def float_list(prop): return [float(child.text) for child in prop] bool_ = lambda v: v == "true" def qfont_enum(v): return getattr(QtGui.QFont, v) def needsWidget(func): func.needsWidget = True return func class Properties(object): def __init__(self, factory, qtcore_module, qtgui_module, qtwidgets_module): self.factory = factory global QtCore, QtGui, QtWidgets QtCore = qtcore_module QtGui = qtgui_module QtWidgets = qtwidgets_module self._base_dir = '' self.reset() def set_base_dir(self, base_dir): """ Set the base directory to be used for all relative filenames. """ self._base_dir = base_dir self.icon_cache.set_base_dir(base_dir) def reset(self): self.buddies = [] self.delayed_props = [] self.icon_cache = IconCache(self.factory, QtGui) def _pyEnumMember(self, cpp_name): try: prefix, membername = cpp_name.split("::") except ValueError: prefix = 'Qt' membername = cpp_name if prefix == 'Qt': return getattr(QtCore.Qt, membername) scope = self.factory.findQObjectType(prefix) if scope is None: raise NoSuchClassError(prefix) return getattr(scope, membername) def _set(self, prop): expr = [self._pyEnumMember(v) for v in prop.text.split('|')] value = expr[0] for v in expr[1:]: value |= v return value def _enum(self, prop): return self._pyEnumMember(prop.text) def _number(self, prop): return int(prop.text) _uInt = _longLong = _uLongLong = _number def _double(self, prop): return float(prop.text) def _bool(self, prop): return prop.text == 'true' def _stringlist(self, prop): return [self._string(p, notr='true') for p in prop] def _string(self, prop, notr=None): text = prop.text if text is None: return "" if prop.get('notr', notr) == 'true': return text disambig = prop.get('comment') return QtWidgets.QApplication.translate(self.uiname, text, disambig) _char = _string def _cstring(self, prop): return str(prop.text) def _color(self, prop): args = int_list(prop) # Handle the optional alpha component. alpha = int(prop.get("alpha", "255")) if alpha != 255: args.append(alpha) return QtGui.QColor(*args) def _point(self, prop): return QtCore.QPoint(*int_list(prop)) def _pointf(self, prop): return QtCore.QPointF(*float_list(prop)) def _rect(self, prop): return QtCore.QRect(*int_list(prop)) def _rectf(self, prop): return QtCore.QRectF(*float_list(prop)) def _size(self, prop): return QtCore.QSize(*int_list(prop)) def _sizef(self, prop): return QtCore.QSizeF(*float_list(prop)) def _pixmap(self, prop): if prop.text: fname = prop.text.replace("\\", "\\\\") if self._base_dir != '' and fname[0] != ':' and not os.path.isabs(fname): fname = os.path.join(self._base_dir, fname) return QtGui.QPixmap(fname) # Don't bother to set the property if the pixmap is empty. return None def _iconset(self, prop): return self.icon_cache.get_icon(prop) def _url(self, prop): return QtCore.QUrl(prop[0].text) def _locale(self, prop): lang = getattr(QtCore.QLocale, prop.attrib['language']) country = getattr(QtCore.QLocale, prop.attrib['country']) return QtCore.QLocale(lang, country) def _date(self, prop): return QtCore.QDate(*int_list(prop)) def _datetime(self, prop): args = int_list(prop) return QtCore.QDateTime(QtCore.QDate(*args[-3:]), QtCore.QTime(*args[:-3])) def _time(self, prop): return QtCore.QTime(*int_list(prop)) def _gradient(self, prop): name = 'gradient' # Create the specific gradient. gtype = prop.get('type', '') if gtype == 'LinearGradient': startx = float(prop.get('startx')) starty = float(prop.get('starty')) endx = float(prop.get('endx')) endy = float(prop.get('endy')) gradient = self.factory.createQObject('QLinearGradient', name, (startx, starty, endx, endy), is_attribute=False) elif gtype == 'ConicalGradient': centralx = float(prop.get('centralx')) centraly = float(prop.get('centraly')) angle = float(prop.get('angle')) gradient = self.factory.createQObject('QConicalGradient', name, (centralx, centraly, angle), is_attribute=False) elif gtype == 'RadialGradient': centralx = float(prop.get('centralx')) centraly = float(prop.get('centraly')) radius = float(prop.get('radius')) focalx = float(prop.get('focalx')) focaly = float(prop.get('focaly')) gradient = self.factory.createQObject('QRadialGradient', name, (centralx, centraly, radius, focalx, focaly), is_attribute=False) else: raise UnsupportedPropertyError(prop.tag) # Set the common values. spread = prop.get('spread') if spread: gradient.setSpread(getattr(QtGui.QGradient, spread)) cmode = prop.get('coordinatemode') if cmode: gradient.setCoordinateMode(getattr(QtGui.QGradient, cmode)) # Get the gradient stops. for gstop in prop: if gstop.tag != 'gradientstop': raise UnsupportedPropertyError(gstop.tag) position = float(gstop.get('position')) color = self._color(gstop[0]) gradient.setColorAt(position, color) return gradient def _palette(self, prop): palette = self.factory.createQObject("QPalette", "palette", (), is_attribute=False) for palette_elem in prop: sub_palette = getattr(QtGui.QPalette, palette_elem.tag.title()) for role, color in enumerate(palette_elem): if color.tag == 'color': # Handle simple colour descriptions where the role is # implied by the colour's position. palette.setColor(sub_palette, QtGui.QPalette.ColorRole(role), self._color(color)) elif color.tag == 'colorrole': role = getattr(QtGui.QPalette, color.get('role')) brush = self._brush(color[0]) palette.setBrush(sub_palette, role, brush) else: raise UnsupportedPropertyError(color.tag) return palette def _brush(self, prop): brushstyle = prop.get('brushstyle') if brushstyle in ('LinearGradientPattern', 'ConicalGradientPattern', 'RadialGradientPattern'): gradient = self._gradient(prop[0]) brush = self.factory.createQObject("QBrush", "brush", (gradient, ), is_attribute=False) else: color = self._color(prop[0]) brush = self.factory.createQObject("QBrush", "brush", (color, ), is_attribute=False) brushstyle = getattr(QtCore.Qt, brushstyle) brush.setStyle(brushstyle) return brush #@needsWidget def _sizepolicy(self, prop, widget): values = [int(child.text) for child in prop] if len(values) == 2: # Qt v4.3.0 and later. horstretch, verstretch = values hsizetype = getattr(QtWidgets.QSizePolicy, prop.get('hsizetype')) vsizetype = getattr(QtWidgets.QSizePolicy, prop.get('vsizetype')) else: hsizetype, vsizetype, horstretch, verstretch = values hsizetype = QtWidgets.QSizePolicy.Policy(hsizetype) vsizetype = QtWidgets.QSizePolicy.Policy(vsizetype) sizePolicy = self.factory.createQObject('QSizePolicy', 'sizePolicy', (hsizetype, vsizetype), is_attribute=False) sizePolicy.setHorizontalStretch(horstretch) sizePolicy.setVerticalStretch(verstretch) sizePolicy.setHeightForWidth(widget.sizePolicy().hasHeightForWidth()) return sizePolicy _sizepolicy = needsWidget(_sizepolicy) # font needs special handling/conversion of all child elements. _font_attributes = (("Family", lambda s: s), ("PointSize", int), ("Bold", bool_), ("Italic", bool_), ("Underline", bool_), ("Weight", int), ("StrikeOut", bool_), ("Kerning", bool_), ("StyleStrategy", qfont_enum)) def _font(self, prop): newfont = self.factory.createQObject("QFont", "font", (), is_attribute = False) for attr, converter in self._font_attributes: v = prop.findtext("./%s" % (attr.lower(),)) if v is None: continue getattr(newfont, "set%s" % (attr,))(converter(v)) return newfont def _cursor(self, prop): return QtGui.QCursor(QtCore.Qt.CursorShape(int(prop.text))) def _cursorShape(self, prop): return QtGui.QCursor(getattr(QtCore.Qt, prop.text)) def convert(self, prop, widget=None): try: func = getattr(self, "_" + prop[0].tag) except AttributeError: raise UnsupportedPropertyError(prop[0].tag) else: args = {} if getattr(func, "needsWidget", False): assert widget is not None args["widget"] = widget return func(prop[0], **args) def _getChild(self, elem_tag, elem, name, default=None): for prop in elem.findall(elem_tag): if prop.attrib["name"] == name: return self.convert(prop) else: return default def getProperty(self, elem, name, default=None): return self._getChild("property", elem, name, default) def getAttribute(self, elem, name, default=None): return self._getChild("attribute", elem, name, default) def setProperties(self, widget, elem): # Lines are sunken unless the frame shadow is explicitly set. set_sunken = (elem.attrib.get('class') == 'Line') for prop in elem.findall('property'): prop_name = prop.attrib['name'] DEBUG("setting property %s" % (prop_name,)) if prop_name == 'frameShadow': set_sunken = False try: stdset = bool(int(prop.attrib['stdset'])) except KeyError: stdset = True if not stdset: self._setViaSetProperty(widget, prop) elif hasattr(self, prop_name): getattr(self, prop_name)(widget, prop) else: prop_value = self.convert(prop, widget) if prop_value is not None: getattr(widget, 'set%s%s' % (ascii_upper(prop_name[0]), prop_name[1:]))(prop_value) if set_sunken: widget.setFrameShadow(QtWidgets.QFrame.Sunken) # SPECIAL PROPERTIES # If a property has a well-known value type but needs special, # context-dependent handling, the default behaviour can be overridden here. # Delayed properties will be set after the whole widget tree has been # populated. def _delayed_property(self, widget, prop): prop_value = self.convert(prop) if prop_value is not None: prop_name = prop.attrib["name"] self.delayed_props.append((widget, False, 'set%s%s' % (ascii_upper(prop_name[0]), prop_name[1:]), prop_value)) # These properties will be set with a widget.setProperty call rather than # calling the set function. def _setViaSetProperty(self, widget, prop): prop_value = self.convert(prop) if prop_value is not None: prop_name = prop.attrib['name'] # This appears to be a Designer/uic hack where stdset=0 means that # the viewport should be used. if prop[0].tag == 'cursorShape': widget.viewport().setProperty(prop_name, prop_value) else: widget.setProperty(prop_name, prop_value) # Ignore the property. def _ignore(self, widget, prop): pass # Define properties that use the canned handlers. currentIndex = _delayed_property currentRow = _delayed_property showDropIndicator = _setViaSetProperty intValue = _setViaSetProperty value = _setViaSetProperty objectName = _ignore margin = _ignore leftMargin = _ignore topMargin = _ignore rightMargin = _ignore bottomMargin = _ignore spacing = _ignore horizontalSpacing = _ignore verticalSpacing = _ignore # tabSpacing is actually the spacing property of the widget's layout. def tabSpacing(self, widget, prop): prop_value = self.convert(prop) if prop_value is not None: self.delayed_props.append((widget, True, 'setSpacing', prop_value)) # buddy setting has to be done after the whole widget tree has been # populated. We can't use delay here because we cannot get the actual # buddy yet. def buddy(self, widget, prop): buddy_name = prop[0].text if buddy_name: self.buddies.append((widget, buddy_name)) # geometry is handled specially if set on the toplevel widget. def geometry(self, widget, prop): if widget.objectName() == self.uiname: geom = int_list(prop[0]) widget.resize(geom[2], geom[3]) else: widget.setGeometry(self._rect(prop[0])) def orientation(self, widget, prop): # If the class is a QFrame, it's a line. if widget.metaObject().className() == 'QFrame': widget.setFrameShape( {'Qt::Horizontal': QtWidgets.QFrame.HLine, 'Qt::Vertical' : QtWidgets.QFrame.VLine}[prop[0].text]) else: widget.setOrientation(self._enum(prop[0])) # The isWrapping attribute of QListView is named inconsistently, it should # be wrapping. def isWrapping(self, widget, prop): widget.setWrapping(self.convert(prop)) # This is a pseudo-property injected to deal with margins. def pyuicMargins(self, widget, prop): widget.setContentsMargins(*int_list(prop)) # This is a pseudo-property injected to deal with spacing. def pyuicSpacing(self, widget, prop): horiz, vert = int_list(prop) if horiz == vert: widget.setSpacing(horiz) else: if horiz >= 0: widget.setHorizontalSpacing(horiz) if vert >= 0: widget.setVerticalSpacing(vert) PyQt5_gpl-5.10.1/pyuic/uic/pyuic.py0000644000076500000240000000673613245233151017130 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# import sys import optparse from PyQt5 import QtCore from .driver import Driver from .exceptions import NoSuchClassError, NoSuchWidgetError Version = "Python User Interface Compiler %s for Qt version %s" % (QtCore.PYQT_VERSION_STR, QtCore.QT_VERSION_STR) def main(): parser = optparse.OptionParser(usage="pyuic5 [options] ", version=Version) parser.add_option("-p", "--preview", dest="preview", action="store_true", default=False, help="show a preview of the UI instead of generating code") parser.add_option("-o", "--output", dest="output", default="-", metavar="FILE", help="write generated code to FILE instead of stdout") parser.add_option("-x", "--execute", dest="execute", action="store_true", default=False, help="generate extra code to test and display the class") parser.add_option("-d", "--debug", dest="debug", action="store_true", default=False, help="show debug output") parser.add_option("-i", "--indent", dest="indent", action="store", type="int", default=4, metavar="N", help="set indent width to N spaces, tab if N is 0 [default: 4]") g = optparse.OptionGroup(parser, title="Code generation options") g.add_option("--import-from", dest="import_from", metavar="PACKAGE", help="generate imports of pyrcc5 generated modules in the style 'from PACKAGE import ...'") g.add_option("--from-imports", dest="from_imports", action="store_true", default=False, help="the equivalent of '--import-from=.'") g.add_option("--resource-suffix", dest="resource_suffix", action="store", type="string", default="_rc", metavar="SUFFIX", help="append SUFFIX to the basename of resource files [default: _rc]") parser.add_option_group(g) opts, args = parser.parse_args() if len(args) != 1: sys.stderr.write("Error: one input ui-file must be specified\n") sys.exit(1) # Invoke the appropriate driver. driver = Driver(opts, args[0]) exit_status = 1 try: exit_status = driver.invoke() except IOError as e: driver.on_IOError(e) except SyntaxError as e: driver.on_SyntaxError(e) except NoSuchClassError as e: driver.on_NoSuchClassError(e) except NoSuchWidgetError as e: driver.on_NoSuchWidgetError(e) except Exception as e: driver.on_Exception(e) sys.exit(exit_status) if __name__ == '__main__': main() PyQt5_gpl-5.10.1/pyuic/uic/uiparser.py0000644000076500000240000011154213245233151017621 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2017 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import sys import logging import os.path import re from xml.etree.ElementTree import parse, SubElement from .objcreator import QObjectCreator from .properties import Properties logger = logging.getLogger(__name__) DEBUG = logger.debug QtCore = None QtWidgets = None def _parse_alignment(alignment): """ Convert a C++ alignment to the corresponding flags. """ align_flags = None for qt_align in alignment.split('|'): _, qt_align = qt_align.split('::') align = getattr(QtCore.Qt, qt_align) if align_flags is None: align_flags = align else: align_flags |= align return align_flags def _layout_position(elem): """ Return either (), (0, alignment), (row, column, rowspan, colspan) or (row, column, rowspan, colspan, alignment) depending on the type of layout and its configuration. The result will be suitable to use as arguments to the layout. """ row = elem.attrib.get('row') column = elem.attrib.get('column') alignment = elem.attrib.get('alignment') # See if it is a box layout. if row is None or column is None: if alignment is None: return () return (0, _parse_alignment(alignment)) # It must be a grid or a form layout. row = int(row) column = int(column) rowspan = int(elem.attrib.get('rowspan', 1)) colspan = int(elem.attrib.get('colspan', 1)) if alignment is None: return (row, column, rowspan, colspan) return (row, column, rowspan, colspan, _parse_alignment(alignment)) class WidgetStack(list): topwidget = None def push(self, item): DEBUG("push %s %s" % (item.metaObject().className(), item.objectName())) self.append(item) if isinstance(item, QtWidgets.QWidget): self.topwidget = item def popLayout(self): layout = list.pop(self) DEBUG("pop layout %s %s" % (layout.metaObject().className(), layout.objectName())) return layout def popWidget(self): widget = list.pop(self) DEBUG("pop widget %s %s" % (widget.metaObject().className(), widget.objectName())) for item in reversed(self): if isinstance(item, QtWidgets.QWidget): self.topwidget = item break else: self.topwidget = None DEBUG("new topwidget %s" % (self.topwidget,)) return widget def peek(self): return self[-1] def topIsLayout(self): return isinstance(self[-1], QtWidgets.QLayout) def topIsLayoutWidget(self): # A plain QWidget is a layout widget unless it's parent is a # QMainWindow or a container widget. Note that the corresponding uic # test is a little more complicated as it involves features not # supported by pyuic. if type(self[-1]) is not QtWidgets.QWidget: return False if len(self) < 2: return False parent = self[-2] return isinstance(parent, QtWidgets.QWidget) and type(parent) not in ( QtWidgets.QMainWindow, QtWidgets.QStackedWidget, QtWidgets.QToolBox, QtWidgets.QTabWidget, QtWidgets.QScrollArea, QtWidgets.QMdiArea, QtWidgets.QWizard, QtWidgets.QDockWidget) class ButtonGroup(object): """ Encapsulate the configuration of a button group and its implementation. """ def __init__(self): """ Initialise the button group. """ self.exclusive = True self.object = None class UIParser(object): def __init__(self, qtcore_module, qtgui_module, qtwidgets_module, creatorPolicy): self.factory = QObjectCreator(creatorPolicy) self.wprops = Properties(self.factory, qtcore_module, qtgui_module, qtwidgets_module) global QtCore, QtWidgets QtCore = qtcore_module QtWidgets = qtwidgets_module self.reset() def uniqueName(self, name): """UIParser.uniqueName(string) -> string Create a unique name from a string. >>> p = UIParser(QtCore, QtGui, QtWidgets) >>> p.uniqueName("foo") 'foo' >>> p.uniqueName("foo") 'foo1' """ try: suffix = self.name_suffixes[name] except KeyError: self.name_suffixes[name] = 0 return name suffix += 1 self.name_suffixes[name] = suffix return "%s%i" % (name, suffix) def reset(self): try: self.wprops.reset() except AttributeError: pass self.toplevelWidget = None self.stack = WidgetStack() self.name_suffixes = {} self.defaults = {'spacing': -1, 'margin': -1} self.actions = [] self.currentActionGroup = None self.resources = [] self.button_groups = {} def setupObject(self, clsname, parent, branch, is_attribute=True): name = self.uniqueName(branch.attrib.get('name') or clsname[1:].lower()) if parent is None: args = () else: args = (parent, ) obj = self.factory.createQObject(clsname, name, args, is_attribute) self.wprops.setProperties(obj, branch) obj.setObjectName(name) if is_attribute: setattr(self.toplevelWidget, name, obj) return obj def getProperty(self, elem, name): for prop in elem.findall('property'): if prop.attrib['name'] == name: return prop return None def createWidget(self, elem): self.column_counter = 0 self.row_counter = 0 self.item_nr = 0 self.itemstack = [] self.sorting_enabled = None widget_class = elem.attrib['class'].replace('::', '.') if widget_class == 'Line': widget_class = 'QFrame' # Ignore the parent if it is a container. parent = self.stack.topwidget if isinstance(parent, (QtWidgets.QDockWidget, QtWidgets.QMdiArea, QtWidgets.QScrollArea, QtWidgets.QStackedWidget, QtWidgets.QToolBox, QtWidgets.QTabWidget, QtWidgets.QWizard)): parent = None self.stack.push(self.setupObject(widget_class, parent, elem)) if isinstance(self.stack.topwidget, QtWidgets.QTableWidget): if self.getProperty(elem, 'columnCount') is None: self.stack.topwidget.setColumnCount(len(elem.findall("column"))) if self.getProperty(elem, 'rowCount') is None: self.stack.topwidget.setRowCount(len(elem.findall("row"))) self.traverseWidgetTree(elem) widget = self.stack.popWidget() if isinstance(widget, QtWidgets.QTreeView): self.handleHeaderView(elem, "header", widget.header()) elif isinstance(widget, QtWidgets.QTableView): self.handleHeaderView(elem, "horizontalHeader", widget.horizontalHeader()) self.handleHeaderView(elem, "verticalHeader", widget.verticalHeader()) elif isinstance(widget, QtWidgets.QAbstractButton): bg_i18n = self.wprops.getAttribute(elem, "buttonGroup") if bg_i18n is not None: # This should be handled properly in case the problem arises # elsewhere as well. try: # We are compiling the .ui file. bg_name = bg_i18n.string except AttributeError: # We are loading the .ui file. bg_name = bg_i18n # Designer allows the creation of .ui files without explicit # button groups, even though uic then issues warnings. We # handle it in two stages by first making sure it has a name # and then making sure one exists with that name. if not bg_name: bg_name = 'buttonGroup' try: bg = self.button_groups[bg_name] except KeyError: bg = self.button_groups[bg_name] = ButtonGroup() if bg.object is None: bg.object = self.factory.createQObject("QButtonGroup", bg_name, (self.toplevelWidget, )) setattr(self.toplevelWidget, bg_name, bg.object) bg.object.setObjectName(bg_name) if not bg.exclusive: bg.object.setExclusive(False) bg.object.addButton(widget) if self.sorting_enabled is not None: widget.setSortingEnabled(self.sorting_enabled) self.sorting_enabled = None if self.stack.topIsLayout(): lay = self.stack.peek() lp = elem.attrib['layout-position'] if isinstance(lay, QtWidgets.QFormLayout): lay.setWidget(lp[0], self._form_layout_role(lp), widget) else: lay.addWidget(widget, *lp) topwidget = self.stack.topwidget if isinstance(topwidget, QtWidgets.QToolBox): icon = self.wprops.getAttribute(elem, "icon") if icon is not None: topwidget.addItem(widget, icon, self.wprops.getAttribute(elem, "label")) else: topwidget.addItem(widget, self.wprops.getAttribute(elem, "label")) tooltip = self.wprops.getAttribute(elem, "toolTip") if tooltip is not None: topwidget.setItemToolTip(topwidget.indexOf(widget), tooltip) elif isinstance(topwidget, QtWidgets.QTabWidget): icon = self.wprops.getAttribute(elem, "icon") if icon is not None: topwidget.addTab(widget, icon, self.wprops.getAttribute(elem, "title")) else: topwidget.addTab(widget, self.wprops.getAttribute(elem, "title")) tooltip = self.wprops.getAttribute(elem, "toolTip") if tooltip is not None: topwidget.setTabToolTip(topwidget.indexOf(widget), tooltip) elif isinstance(topwidget, QtWidgets.QWizard): topwidget.addPage(widget) elif isinstance(topwidget, QtWidgets.QStackedWidget): topwidget.addWidget(widget) elif isinstance(topwidget, (QtWidgets.QDockWidget, QtWidgets.QScrollArea)): topwidget.setWidget(widget) elif isinstance(topwidget, QtWidgets.QMainWindow): if type(widget) == QtWidgets.QWidget: topwidget.setCentralWidget(widget) elif isinstance(widget, QtWidgets.QToolBar): tbArea = self.wprops.getAttribute(elem, "toolBarArea") if tbArea is None: topwidget.addToolBar(widget) else: topwidget.addToolBar(tbArea, widget) tbBreak = self.wprops.getAttribute(elem, "toolBarBreak") if tbBreak: topwidget.insertToolBarBreak(widget) elif isinstance(widget, QtWidgets.QMenuBar): topwidget.setMenuBar(widget) elif isinstance(widget, QtWidgets.QStatusBar): topwidget.setStatusBar(widget) elif isinstance(widget, QtWidgets.QDockWidget): dwArea = self.wprops.getAttribute(elem, "dockWidgetArea") topwidget.addDockWidget(QtCore.Qt.DockWidgetArea(dwArea), widget) def handleHeaderView(self, elem, name, header): value = self.wprops.getAttribute(elem, name + "Visible") if value is not None: header.setVisible(value) value = self.wprops.getAttribute(elem, name + "CascadingSectionResizes") if value is not None: header.setCascadingSectionResizes(value) value = self.wprops.getAttribute(elem, name + "DefaultSectionSize") if value is not None: header.setDefaultSectionSize(value) value = self.wprops.getAttribute(elem, name + "HighlightSections") if value is not None: header.setHighlightSections(value) value = self.wprops.getAttribute(elem, name + "MinimumSectionSize") if value is not None: header.setMinimumSectionSize(value) value = self.wprops.getAttribute(elem, name + "ShowSortIndicator") if value is not None: header.setSortIndicatorShown(value) value = self.wprops.getAttribute(elem, name + "StretchLastSection") if value is not None: header.setStretchLastSection(value) def createSpacer(self, elem): width = elem.findtext("property/size/width") height = elem.findtext("property/size/height") if width is None or height is None: size_args = () else: size_args = (int(width), int(height)) sizeType = self.wprops.getProperty(elem, "sizeType", QtWidgets.QSizePolicy.Expanding) policy = (QtWidgets.QSizePolicy.Minimum, sizeType) if self.wprops.getProperty(elem, "orientation") == QtCore.Qt.Horizontal: policy = policy[1], policy[0] spacer = self.factory.createQObject("QSpacerItem", self.uniqueName("spacerItem"), size_args + policy, is_attribute=False) if self.stack.topIsLayout(): lay = self.stack.peek() lp = elem.attrib['layout-position'] if isinstance(lay, QtWidgets.QFormLayout): lay.setItem(lp[0], self._form_layout_role(lp), spacer) else: lay.addItem(spacer, *lp) def createLayout(self, elem): # We use an internal property to handle margins which will use separate # left, top, right and bottom margins if they are found to be # different. The following will select, in order of preference, # separate margins, the same margin in all directions, and the default # margin. margin = -1 if self.stack.topIsLayout() else self.defaults['margin'] margin = self.wprops.getProperty(elem, 'margin', margin) left = self.wprops.getProperty(elem, 'leftMargin', margin) top = self.wprops.getProperty(elem, 'topMargin', margin) right = self.wprops.getProperty(elem, 'rightMargin', margin) bottom = self.wprops.getProperty(elem, 'bottomMargin', margin) # A layout widget should, by default, have no margins. if self.stack.topIsLayoutWidget(): if left < 0: left = 0 if top < 0: top = 0 if right < 0: right = 0 if bottom < 0: bottom = 0 if left >= 0 or top >= 0 or right >= 0 or bottom >= 0: # We inject the new internal property. cme = SubElement(elem, 'property', name='pyuicMargins') SubElement(cme, 'number').text = str(left) SubElement(cme, 'number').text = str(top) SubElement(cme, 'number').text = str(right) SubElement(cme, 'number').text = str(bottom) # We use an internal property to handle spacing which will use separate # horizontal and vertical spacing if they are found to be different. # The following will select, in order of preference, separate # horizontal and vertical spacing, the same spacing in both directions, # and the default spacing. spacing = self.wprops.getProperty(elem, 'spacing', self.defaults['spacing']) horiz = self.wprops.getProperty(elem, 'horizontalSpacing', spacing) vert = self.wprops.getProperty(elem, 'verticalSpacing', spacing) if horiz >= 0 or vert >= 0: # We inject the new internal property. cme = SubElement(elem, 'property', name='pyuicSpacing') SubElement(cme, 'number').text = str(horiz) SubElement(cme, 'number').text = str(vert) classname = elem.attrib["class"] if self.stack.topIsLayout(): parent = None else: parent = self.stack.topwidget if "name" not in elem.attrib: elem.attrib["name"] = classname[1:].lower() self.stack.push(self.setupObject(classname, parent, elem)) self.traverseWidgetTree(elem) layout = self.stack.popLayout() self.configureLayout(elem, layout) if self.stack.topIsLayout(): top_layout = self.stack.peek() lp = elem.attrib['layout-position'] if isinstance(top_layout, QtWidgets.QFormLayout): top_layout.setLayout(lp[0], self._form_layout_role(lp), layout) else: top_layout.addLayout(layout, *lp) def configureLayout(self, elem, layout): if isinstance(layout, QtWidgets.QGridLayout): self.setArray(elem, 'columnminimumwidth', layout.setColumnMinimumWidth) self.setArray(elem, 'rowminimumheight', layout.setRowMinimumHeight) self.setArray(elem, 'columnstretch', layout.setColumnStretch) self.setArray(elem, 'rowstretch', layout.setRowStretch) elif isinstance(layout, QtWidgets.QBoxLayout): self.setArray(elem, 'stretch', layout.setStretch) def setArray(self, elem, name, setter): array = elem.attrib.get(name) if array: for idx, value in enumerate(array.split(',')): value = int(value) if value > 0: setter(idx, value) def disableSorting(self, w): if self.item_nr == 0: self.sorting_enabled = self.factory.invoke("__sortingEnabled", w.isSortingEnabled) w.setSortingEnabled(False) def handleItem(self, elem): if self.stack.topIsLayout(): elem[0].attrib['layout-position'] = _layout_position(elem) self.traverseWidgetTree(elem) else: w = self.stack.topwidget if isinstance(w, QtWidgets.QComboBox): text = self.wprops.getProperty(elem, "text") icon = self.wprops.getProperty(elem, "icon") if icon: w.addItem(icon, '') else: w.addItem('') w.setItemText(self.item_nr, text) elif isinstance(w, QtWidgets.QListWidget): self.disableSorting(w) item = self.createWidgetItem('QListWidgetItem', elem, w.item, self.item_nr) w.addItem(item) elif isinstance(w, QtWidgets.QTreeWidget): if self.itemstack: parent, _ = self.itemstack[-1] _, nr_in_root = self.itemstack[0] else: parent = w nr_in_root = self.item_nr item = self.factory.createQObject("QTreeWidgetItem", "item_%d" % len(self.itemstack), (parent, ), False) if self.item_nr == 0 and not self.itemstack: self.sorting_enabled = self.factory.invoke("__sortingEnabled", w.isSortingEnabled) w.setSortingEnabled(False) self.itemstack.append((item, self.item_nr)) self.item_nr = 0 # We have to access the item via the tree when setting the # text. titm = w.topLevelItem(nr_in_root) for child, nr_in_parent in self.itemstack[1:]: titm = titm.child(nr_in_parent) column = -1 for prop in elem.findall('property'): c_prop = self.wprops.convert(prop) c_prop_name = prop.attrib['name'] if c_prop_name == 'text': column += 1 if c_prop: titm.setText(column, c_prop) elif c_prop_name == 'statusTip': item.setStatusTip(column, c_prop) elif c_prop_name == 'toolTip': item.setToolTip(column, c_prop) elif c_prop_name == 'whatsThis': item.setWhatsThis(column, c_prop) elif c_prop_name == 'font': item.setFont(column, c_prop) elif c_prop_name == 'icon': item.setIcon(column, c_prop) elif c_prop_name == 'background': item.setBackground(column, c_prop) elif c_prop_name == 'foreground': item.setForeground(column, c_prop) elif c_prop_name == 'flags': item.setFlags(c_prop) elif c_prop_name == 'checkState': item.setCheckState(column, c_prop) self.traverseWidgetTree(elem) _, self.item_nr = self.itemstack.pop() elif isinstance(w, QtWidgets.QTableWidget): row = int(elem.attrib['row']) col = int(elem.attrib['column']) self.disableSorting(w) item = self.createWidgetItem('QTableWidgetItem', elem, w.item, row, col) w.setItem(row, col, item) self.item_nr += 1 def addAction(self, elem): self.actions.append((self.stack.topwidget, elem.attrib["name"])) @staticmethod def any_i18n(*args): """ Return True if any argument appears to be an i18n string. """ for a in args: if a is not None and not isinstance(a, str): return True return False def createWidgetItem(self, item_type, elem, getter, *getter_args): """ Create a specific type of widget item. """ item = self.factory.createQObject(item_type, "item", (), False) props = self.wprops # Note that not all types of widget items support the full set of # properties. text = props.getProperty(elem, 'text') status_tip = props.getProperty(elem, 'statusTip') tool_tip = props.getProperty(elem, 'toolTip') whats_this = props.getProperty(elem, 'whatsThis') if self.any_i18n(text, status_tip, tool_tip, whats_this): self.factory.invoke("item", getter, getter_args) if text: item.setText(text) if status_tip: item.setStatusTip(status_tip) if tool_tip: item.setToolTip(tool_tip) if whats_this: item.setWhatsThis(whats_this) text_alignment = props.getProperty(elem, 'textAlignment') if text_alignment: item.setTextAlignment(text_alignment) font = props.getProperty(elem, 'font') if font: item.setFont(font) icon = props.getProperty(elem, 'icon') if icon: item.setIcon(icon) background = props.getProperty(elem, 'background') if background: item.setBackground(background) foreground = props.getProperty(elem, 'foreground') if foreground: item.setForeground(foreground) flags = props.getProperty(elem, 'flags') if flags: item.setFlags(flags) check_state = props.getProperty(elem, 'checkState') if check_state: item.setCheckState(check_state) return item def addHeader(self, elem): w = self.stack.topwidget if isinstance(w, QtWidgets.QTreeWidget): props = self.wprops col = self.column_counter text = props.getProperty(elem, 'text') if text: w.headerItem().setText(col, text) status_tip = props.getProperty(elem, 'statusTip') if status_tip: w.headerItem().setStatusTip(col, status_tip) tool_tip = props.getProperty(elem, 'toolTip') if tool_tip: w.headerItem().setToolTip(col, tool_tip) whats_this = props.getProperty(elem, 'whatsThis') if whats_this: w.headerItem().setWhatsThis(col, whats_this) text_alignment = props.getProperty(elem, 'textAlignment') if text_alignment: w.headerItem().setTextAlignment(col, text_alignment) font = props.getProperty(elem, 'font') if font: w.headerItem().setFont(col, font) icon = props.getProperty(elem, 'icon') if icon: w.headerItem().setIcon(col, icon) background = props.getProperty(elem, 'background') if background: w.headerItem().setBackground(col, background) foreground = props.getProperty(elem, 'foreground') if foreground: w.headerItem().setForeground(col, foreground) self.column_counter += 1 elif isinstance(w, QtWidgets.QTableWidget): if len(elem) != 0: if elem.tag == 'column': item = self.createWidgetItem('QTableWidgetItem', elem, w.horizontalHeaderItem, self.column_counter) w.setHorizontalHeaderItem(self.column_counter, item) self.column_counter += 1 elif elem.tag == 'row': item = self.createWidgetItem('QTableWidgetItem', elem, w.verticalHeaderItem, self.row_counter) w.setVerticalHeaderItem(self.row_counter, item) self.row_counter += 1 def setZOrder(self, elem): # Designer can generate empty zorder elements. if elem.text is None: return # Designer allows the z-order of spacer items to be specified even # though they can't be raised, so ignore any missing raise_() method. try: getattr(self.toplevelWidget, elem.text).raise_() except AttributeError: # Note that uic issues a warning message. pass def createAction(self, elem): self.setupObject("QAction", self.currentActionGroup or self.toplevelWidget, elem) def createActionGroup(self, elem): action_group = self.setupObject("QActionGroup", self.toplevelWidget, elem) self.currentActionGroup = action_group self.traverseWidgetTree(elem) self.currentActionGroup = None widgetTreeItemHandlers = { "widget" : createWidget, "addaction" : addAction, "layout" : createLayout, "spacer" : createSpacer, "item" : handleItem, "action" : createAction, "actiongroup": createActionGroup, "column" : addHeader, "row" : addHeader, "zorder" : setZOrder, } def traverseWidgetTree(self, elem): for child in iter(elem): try: handler = self.widgetTreeItemHandlers[child.tag] except KeyError: continue handler(self, child) def createUserInterface(self, elem): # Get the names of the class and widget. cname = elem.attrib["class"] wname = elem.attrib["name"] # If there was no widget name then derive it from the class name. if not wname: wname = cname if wname.startswith("Q"): wname = wname[1:] wname = wname[0].lower() + wname[1:] self.toplevelWidget = self.createToplevelWidget(cname, wname) self.toplevelWidget.setObjectName(wname) DEBUG("toplevel widget is %s", self.toplevelWidget.metaObject().className()) self.wprops.setProperties(self.toplevelWidget, elem) self.stack.push(self.toplevelWidget) self.traverseWidgetTree(elem) self.stack.popWidget() self.addActions() self.setBuddies() self.setDelayedProps() def addActions(self): for widget, action_name in self.actions: if action_name == "separator": widget.addSeparator() else: DEBUG("add action %s to %s", action_name, widget.objectName()) action_obj = getattr(self.toplevelWidget, action_name) if isinstance(action_obj, QtWidgets.QMenu): widget.addAction(action_obj.menuAction()) elif not isinstance(action_obj, QtWidgets.QActionGroup): widget.addAction(action_obj) def setDelayedProps(self): for widget, layout, setter, args in self.wprops.delayed_props: if layout: widget = widget.layout() setter = getattr(widget, setter) setter(args) def setBuddies(self): for widget, buddy in self.wprops.buddies: DEBUG("%s is buddy of %s", buddy, widget.objectName()) try: widget.setBuddy(getattr(self.toplevelWidget, buddy)) except AttributeError: DEBUG("ERROR in ui spec: %s (buddy of %s) does not exist", buddy, widget.objectName()) def classname(self, elem): DEBUG("uiname is %s", elem.text) name = elem.text if name is None: name = "" self.uiname = name self.wprops.uiname = name self.setContext(name) def setContext(self, context): """ Reimplemented by a sub-class if it needs to know the translation context. """ pass def readDefaults(self, elem): self.defaults['margin'] = int(elem.attrib['margin']) self.defaults['spacing'] = int(elem.attrib['spacing']) def setTaborder(self, elem): lastwidget = None for widget_elem in elem: widget = getattr(self.toplevelWidget, widget_elem.text) if lastwidget is not None: self.toplevelWidget.setTabOrder(lastwidget, widget) lastwidget = widget def readResources(self, elem): """ Read a "resources" tag and add the module to import to the parser's list of them. """ try: iterator = getattr(elem, 'iter') except AttributeError: iterator = getattr(elem, 'getiterator') for include in iterator("include"): loc = include.attrib.get("location") # Apply the convention for naming the Python files generated by # pyrcc5. if loc and loc.endswith('.qrc'): mname = os.path.basename(loc[:-4] + self._resource_suffix) if mname not in self.resources: self.resources.append(mname) def createConnections(self, elem): def name2object(obj): if obj == self.uiname: return self.toplevelWidget else: return getattr(self.toplevelWidget, obj) for conn in iter(elem): signal = conn.findtext('signal') signal_name, signal_args = signal.split('(') signal_args = signal_args[:-1].replace(' ', '') sender = name2object(conn.findtext('sender')) bound_signal = getattr(sender, signal_name) slot = self.factory.getSlot(name2object(conn.findtext('receiver')), conn.findtext('slot').split('(')[0]) if signal_args == '': bound_signal.connect(slot) else: signal_args = signal_args.split(',') if len(signal_args) == 1: bound_signal[signal_args[0]].connect(slot) else: bound_signal[tuple(signal_args)].connect(slot) QtCore.QMetaObject.connectSlotsByName(self.toplevelWidget) def customWidgets(self, elem): def header2module(header): """header2module(header) -> string Convert paths to C++ header files to according Python modules >>> header2module("foo/bar/baz.h") 'foo.bar.baz' """ if header.endswith(".h"): header = header[:-2] mpath = [] for part in header.split('/'): # Ignore any empty parts or those that refer to the current # directory. if part not in ('', '.'): if part == '..': # We should allow this for Python3. raise SyntaxError("custom widget header file name may not contain '..'.") mpath.append(part) return '.'.join(mpath) for custom_widget in iter(elem): classname = custom_widget.findtext("class") self.factory.addCustomWidget(classname, custom_widget.findtext("extends") or "QWidget", header2module(custom_widget.findtext("header"))) def createToplevelWidget(self, classname, widgetname): raise NotImplementedError def buttonGroups(self, elem): for button_group in iter(elem): if button_group.tag == 'buttongroup': bg_name = button_group.attrib['name'] bg = ButtonGroup() self.button_groups[bg_name] = bg prop = self.getProperty(button_group, 'exclusive') if prop is not None: if prop.findtext('bool') == 'false': bg.exclusive = False # finalize will be called after the whole tree has been parsed and can be # overridden. def finalize(self): pass def parse(self, filename, resource_suffix, base_dir=''): self.wprops.set_base_dir(base_dir) self._resource_suffix = resource_suffix # The order in which the different branches are handled is important. # The widget tree handler relies on all custom widgets being known, and # in order to create the connections, all widgets have to be populated. branchHandlers = ( ("layoutdefault", self.readDefaults), ("class", self.classname), ("buttongroups", self.buttonGroups), ("customwidgets", self.customWidgets), ("widget", self.createUserInterface), ("connections", self.createConnections), ("tabstops", self.setTaborder), ("resources", self.readResources), ) document = parse(filename) version = document.getroot().attrib["version"] DEBUG("UI version is %s" % (version,)) # Right now, only version 4.0 is supported. assert version in ("4.0",) for tagname, actor in branchHandlers: elem = document.find(tagname) if elem is not None: actor(elem) self.finalize() w = self.toplevelWidget self.reset() return w @staticmethod def _form_layout_role(layout_position): if layout_position[3] > 1: role = QtWidgets.QFormLayout.SpanningRole elif layout_position[1] == 1: role = QtWidgets.QFormLayout.FieldRole else: role = QtWidgets.QFormLayout.LabelRole return role PyQt5_gpl-5.10.1/pyuic/uic/widget-plugins/0000755000076500000240000000000013245231431020352 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/pyuic/uic/widget-plugins/qaxcontainer.py0000644000076500000240000000302513245233151023421 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return "PyQt5.QAxContainer", ("QAxWidget", ) PyQt5_gpl-5.10.1/pyuic/uic/widget-plugins/qscintilla.py0000644000076500000240000000302113245233151023064 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return "PyQt5.Qsci", ("QsciScintilla", ) PyQt5_gpl-5.10.1/pyuic/uic/widget-plugins/qtcharts.py0000644000076500000240000000303213245233151022554 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return 'PyQt5.QtChart', ('QtCharts.QChartView', ) PyQt5_gpl-5.10.1/pyuic/uic/widget-plugins/qtprintsupport.py0000644000076500000240000000306413245233151024066 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return 'PyQt5.QtPrintSupport', ('QAbstractPrintDialog', 'QPageSetupDialog') PyQt5_gpl-5.10.1/pyuic/uic/widget-plugins/qtquickwidgets.py0000644000076500000240000000303213245233151023773 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return "PyQt5.QtQuickWidgets", ("QQuickWidget", ) PyQt5_gpl-5.10.1/pyuic/uic/widget-plugins/qtwebenginewidgets.py0000644000076500000240000000304013245233151024621 0ustar philstaff00000000000000############################################################################# ## ## Copyright (c) 2018 Riverbank Computing Limited ## ## This file is part of PyQt5. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return "PyQt5.QtWebEngineWidgets", ("QWebEngineView", ) PyQt5_gpl-5.10.1/pyuic/uic/widget-plugins/qtwebkit.py0000644000076500000240000000471313245233151022564 0ustar philstaff00000000000000############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return "PyQt5.QtWebKitWidgets", ("QWebView", ) PyQt5_gpl-5.10.1/qmlscene/0000755000076500000240000000000013245231431015306 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/qmlscene/pluginloader.cpp0000644000076500000240000002436113245233151020506 0ustar philstaff00000000000000/* * This is the qmlscene plugin that collects all the Python plugins it can * find. * * Copyright (c) 2018 Riverbank Computing Limited * * This file is part of PyQt5. * * This file may be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * following information to ensure the GNU General Public License version 3.0 * requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * If you do not wish to use this file under the terms of the GPL version 3.0 * then you may purchase a commercial license. For more information contact * info@riverbankcomputing.com. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include #include #include #include #include #include #include #include #include "pluginloader.h" // Construct the C++ plugin. PyQt5QmlPlugin::PyQt5QmlPlugin(QObject *parent) : QQmlExtensionPlugin(parent), py_plugin_obj(0), sip(0) { // Make sure the interpreter is initialised. if (!Py_IsInitialized()) { QLibrary library(PYTHON_LIB); library.setLoadHints(QLibrary::ExportExternalSymbolsHint); if (library.load()) { Py_Initialize(); getSipAPI(); #ifdef WITH_THREAD // Make sure we don't have the GIL. PyEval_InitThreads(); PyEval_SaveThread(); #endif } } } // Destroy the C++ plugin. PyQt5QmlPlugin::~PyQt5QmlPlugin() { if (Py_IsInitialized()) { #ifdef WITH_THREAD PyGILState_STATE gil = PyGILState_Ensure(); #endif Py_XDECREF(py_plugin_obj); #ifdef WITH_THREAD PyGILState_Release(gil); #endif } } // Initialize the QML engine. void PyQt5QmlPlugin::initializeEngine(QQmlEngine *engine, const char *uri) { if (!Py_IsInitialized() || !py_plugin_obj || !sip) return; #ifdef WITH_THREAD PyGILState_STATE gil = PyGILState_Ensure(); #endif const sipTypeDef *td = sip->api_find_type("QQmlEngine"); if (!td) { PyErr_SetString(PyExc_AttributeError, "unable to find type for QQmlEngine"); } else { PyObject *engine_obj = sip->api_convert_from_type(engine, td, 0); if (!engine_obj) { td = 0; } else { PyObject *res_obj = PyObject_CallMethod(py_plugin_obj, const_cast("initializeEngine"), const_cast("Os"), engine_obj, uri); Py_DECREF(engine_obj); if (res_obj != Py_None) { if (res_obj) #if PY_MAJOR_VERSION >= 3 PyErr_Format(PyExc_TypeError, "unexpected result from initializeEngine(): %S", res_obj); #else { PyObject *res_s = PyObject_Str(res_obj); if (res_s != NULL) { PyErr_Format(PyExc_TypeError, "unexpected result from initializeEngine(): %s", PyString_AsString(res_s)); Py_DECREF(res_s); } } #endif td = 0; } Py_XDECREF(res_obj); } } if (!td) PyErr_Print(); #ifdef WITH_THREAD PyGILState_Release(gil); #endif } // Register the plugin's types. void PyQt5QmlPlugin::registerTypes(const char *uri) { // Construct the import path that the engine will have used by default. // Unfortunately we won't know about any directories added by qmlscene's -I // flag. QStringList import_path; import_path << QCoreApplication::applicationDirPath(); const char *env_path = getenv("QML2_IMPORT_PATH"); if (env_path) { #if defined(Q_OS_WIN) QLatin1Char sep(';'); #else QLatin1Char sep(':'); #endif QStringList env_dirs = QString::fromLatin1(env_path).split(sep, QString::SkipEmptyParts); foreach (QString dir_name, env_dirs) import_path << QDir(dir_name).canonicalPath(); } import_path << QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath); // Try and find the URI directory, check that it has a qmldir file and that // it has a file called *plugin.py. QString py_plugin; QString py_plugin_dir; foreach (QString dir_name, import_path) { dir_name.append('/'); dir_name.append(uri); QDir dir(dir_name); if (!dir.exists() || !dir.exists("qmldir")) continue; QStringList candidates = dir.entryList(QDir::Files|QDir::Readable); foreach (QString py_plugin_file, candidates) { QStringList parts = py_plugin_file.split('.'); if (parts.size() == 2 && parts.at(0).endsWith("plugin") && parts.at(1).startsWith("py")) { py_plugin = parts.at(0); break; } } if (!py_plugin.isEmpty()) { py_plugin_dir = QDir::toNativeSeparators(dir.absolutePath()); break; } } if (py_plugin.isEmpty()) return; #ifdef WITH_THREAD PyGILState_STATE gil = PyGILState_Ensure(); #endif if (!addToSysPath(py_plugin_dir) || !callRegisterTypes(py_plugin, uri)) PyErr_Print(); #ifdef WITH_THREAD PyGILState_Release(gil); #endif } // Call the registerTypes() function of a plugin. bool PyQt5QmlPlugin::callRegisterTypes(const QString &py_plugin, const char *uri) { // Import the plugin. PyObject *plugin_mod = PyImport_ImportModule(py_plugin.toLatin1().data()); if (!plugin_mod) return false; // Get QQmlExtensionPlugin. We do this after the import of the plugin to // allow it to fiddle with the context. PyObject *extension_plugin = getModuleAttr("PyQt5.QtQml", "QQmlExtensionPlugin"); if (!extension_plugin) { Py_DECREF(plugin_mod); return false; } // Go through the module looking for a type that implements // QQmlExtensionPlugin. PyObject *mod_dict = PyModule_GetDict(plugin_mod); PyObject *key, *value, *plugin_type = 0; Py_ssize_t pos = 0; while (PyDict_Next(mod_dict, &pos, &key, &value)) if (value != extension_plugin && PyType_Check(value) && PyType_IsSubtype((PyTypeObject *)value, (PyTypeObject *)extension_plugin)) { plugin_type = value; break; } Py_DECREF(extension_plugin); if (!plugin_type) { PyErr_Format(PyExc_AttributeError, "%s does not contain an implementation of QQmlExtensionPlugin", py_plugin.toLatin1().constData()); Py_DECREF(plugin_mod); return false; } // Create the plugin instance. PyObject *plugin_obj = PyObject_CallObject(plugin_type, NULL); Py_DECREF(plugin_mod); if (!plugin_obj) return false; // Call registerTypes(). PyObject *res_obj = PyObject_CallMethod(plugin_obj, const_cast("registerTypes"), const_cast("s"), uri); if (res_obj != Py_None) { Py_DECREF(plugin_obj); if (res_obj) { #if PY_MAJOR_VERSION >= 3 PyErr_Format(PyExc_TypeError, "unexpected result from registerTypes(): %S", res_obj); #else PyObject *res_s = PyObject_Str(res_obj); if (res_s != NULL) { PyErr_Format(PyExc_TypeError, "unexpected result from registerTypes(): %s", PyString_AsString(res_s)); Py_DECREF(res_s); } #endif Py_DECREF(res_obj); } return false; } Py_DECREF(res_obj); py_plugin_obj = plugin_obj; return true; } // Add a directory to sys.path. bool PyQt5QmlPlugin::addToSysPath(const QString &py_plugin_dir) { PyObject *sys_path = getModuleAttr("sys", "path"); if (!sys_path) return false; #if PY_VERSION_HEX >= 0x03030000 PyObject *plugin_dir_obj = PyUnicode_FromKindAndData(PyUnicode_2BYTE_KIND, py_plugin_dir.constData(), py_plugin_dir.length()); if (!plugin_dir_obj) { Py_DECREF(sys_path); return false; } #elif PY_VERSION_HEX >= 0x03000000 #if defined(Py_UNICODE_WIDE) QVector ucs4 = py_plugin_dir.toUcs4(); PyObject *plugin_dir_obj = PyUnicode_FromUnicode(0, ucs4.size()); if (!plugin_dir_obj) { Py_DECREF(sys_path); return false; } memcpy(PyUnicode_AS_UNICODE(plugin_dir_obj), ucs4.constData(), ucs4.size() * sizeof (Py_UNICODE)); #else PyObject *plugin_dir_obj = PyUnicode_FromUnicode(0, py_plugin_dir.length()); if (!plugin_dir_obj) { Py_DECREF(sys_path); return false; } memcpy(PyUnicode_AS_UNICODE(plugin_dir_obj), py_plugin_dir.utf16(), py_plugin_dir.length() * sizeof (Py_UNICODE)); #endif #else PyObject *plugin_dir_obj = PyString_FromString( py_plugin_dir.toLatin1().constData()); if (!plugin_dir_obj) { Py_DECREF(sys_path); return false; } #endif int rc = PyList_Append(sys_path, plugin_dir_obj); Py_DECREF(plugin_dir_obj); Py_DECREF(sys_path); if (rc < 0) { return false; } return true; } // Return the named attribute object from the named module. PyObject *PyQt5QmlPlugin::getModuleAttr(const char *module, const char *attr) { PyObject *mod = PyImport_ImportModule(module); if (!mod) return 0; PyObject *obj = PyObject_GetAttrString(mod, attr); Py_DECREF(mod); return obj; } // Get the SIP API. void PyQt5QmlPlugin::getSipAPI() { #if defined(SIP_USE_PYCAPSULE) sip = (const sipAPIDef *)PyCapsule_Import("sip._C_API", 0); #else PyObject *c_api = getModuleAttr("sip", "_C_API"); if (c_api) { sip = (const sipAPIDef *)PyCObject_AsVoidPtr(c_api); Py_DECREF(c_api); } #endif if (!sip) PyErr_Print(); } PyQt5_gpl-5.10.1/qmlscene/pluginloader.h0000644000076500000240000000320613245233151020146 0ustar philstaff00000000000000/* * This is the interface of the qmlscene plugin. * * Copyright (c) 2018 Riverbank Computing Limited * * This file is part of PyQt5. * * This file may be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * following information to ensure the GNU General Public License version 3.0 * requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * If you do not wish to use this file under the terms of the GPL version 3.0 * then you may purchase a commercial license. For more information contact * info@riverbankcomputing.com. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _PLUGINLOADER_H #define _PLUGINLOADER_H #include #include #include #include class PyQt5QmlPlugin : public QQmlExtensionPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") public: PyQt5QmlPlugin(QObject *parent = 0); virtual ~PyQt5QmlPlugin(); void initializeEngine(QQmlEngine *engine, const char *uri); void registerTypes(const char *uri); private: void getSipAPI(); static bool addToSysPath(const QString &py_plugin_dir); bool callRegisterTypes(const QString &py_plugin, const char *uri); static PyObject *getModuleAttr(const char *module, const char *attr); PyObject *py_plugin_obj; const sipAPIDef *sip; }; #endif PyQt5_gpl-5.10.1/qmlscene/qmlscene.pro-in0000644000076500000240000000070313245233151020244 0ustar philstaff00000000000000CONFIG += plugin @QTCONFIG@ warn_on QT += qml # Work around QTBUG-39300. CONFIG -= android_install TARGET = pyqt5qmlplugin TEMPLATE = lib INCLUDEPATH += @PYINCDIR@ @SIPINCDIR@ LIBS += @PYLINK@ DEFINES += PYTHON_LIB=\\\"@PYSHLIB@\\\" SOURCES = pluginloader.cpp HEADERS = pluginloader.h # Install. target.path = @QTPLUGINDIR@ python.path = @QTPLUGINDIR@ python.files = python INSTALLS += target python PyQt5_gpl-5.10.1/qpy/0000755000076500000240000000000013245231431014310 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/qpy/pylupdate/0000755000076500000240000000000013245231431016317 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/qpy/pylupdate/fetchtr.cpp0000644000076500000240000010054613245233150020470 0ustar philstaff00000000000000/********************************************************************** ** Copyright (C) 2016 Riverbank Computing Limited ** Copyright (C) 2002-2007 Detlev Offenbach ** ** This is a modified version of lupdate. The original is part of Qt-Linguist. ** The copyright of the original file can be found below. ** ** This version is modified to handle python sources. ** ** The file is provided AS IS with NO WARRANTY OF ANY KIND, ** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE. ****************************************************************************/ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include "pylupdate.h" static const char MagicComment[] = "TRANSLATOR "; static QMap needs_Q_OBJECT; static QMap lacks_Q_OBJECT; /* The first part of this source file is the Python tokenizer. We skip most of Python; the only tokens that interest us are defined here. */ enum { Tok_Eof, Tok_class, Tok_return, Tok_tr, Tok_trUtf8, Tok_translate, Tok_Ident, Tok_Comment, Tok_Dot, Tok_String, Tok_LeftParen, Tok_RightParen, Tok_Comma, Tok_None, Tok_Integer}; // The names of function aliases passed on the command line. static const char *tr_function; static const char *translate_function; /* The tokenizer maintains the following global variables. The names should be self-explanatory. */ static QByteArray yyFileName; static int yyCh; static char yyIdent[128]; static size_t yyIdentLen; static char yyComment[65536]; static size_t yyCommentLen; static char yyString[65536]; static size_t yyStringLen; static qlonglong yyInteger; static QStack yySavedParenDepth; static int yyParenDepth; static int yyLineNo; static int yyCurLineNo; static int yyParenLineNo; static QTextCodec *yyCodecForTr = 0; static QTextCodec *yyCodecForSource = 0; // the file to read from (if reading from a file) static FILE *yyInFile; // the string to read from and current position in the string (otherwise) static QString yyInStr; static int yyInPos; // - 'rawbuf' is used to hold bytes before universal newline translation. // - 'buf' is its higher-level counterpart, where every end-of-line appears as // a single '\n' character, regardless of the end-of-line style used in input // files. static int buf, rawbuf; static int (*getChar)(); static int (*peekChar)(); static bool yyParsingUtf8; static int getTranslatedCharFromFile() { int c; if ( rawbuf < 0 ) // Empty raw buffer? c = getc( yyInFile ); else { c = rawbuf; rawbuf = -1; // Declare the raw buffer empty. } // Universal newline translation, similar to what Python does if ( c == '\r' ) { c = getc( yyInFile ); // Last byte of a \r\n sequence? if ( c != '\n') { rawbuf = c; // No, put it in 'rawbuf' for later processing. // Logical character that will be seen by higher-level functions c = '\n'; } // In all cases, c == '\n' here. } return c; } static int getCharFromFile() { int c; if ( buf < 0 ) { // Empty buffer? c = getTranslatedCharFromFile(); } else { c = buf; buf = -1; // Declare the buffer empty. } if ( c == '\n' ) // This is after universal newline translation yyCurLineNo++; // (i.e., a "logical" newline character). return c; } static int peekCharFromFile() { // Read a character, possibly performing universal newline translation, // and put it in 'buf' so that the next call to getCharFromFile() finds it // already available. buf = getCharFromFile(); return buf; } static void startTokenizer( const char *fileName, int (*getCharFunc)(), int (*peekCharFunc)(), QTextCodec *codecForTr, QTextCodec *codecForSource ) { yyInPos = 0; buf = rawbuf = -1; getChar = getCharFunc; peekChar = peekCharFunc; yyFileName = fileName; yyCh = getChar(); yySavedParenDepth.clear(); yyParenDepth = 0; yyCurLineNo = 1; yyParenLineNo = 1; yyCodecForTr = codecForTr; if (!yyCodecForTr) yyCodecForTr = QTextCodec::codecForName("ISO-8859-1"); Q_ASSERT(yyCodecForTr); yyCodecForSource = codecForSource; yyParsingUtf8 = false; } static int getToken() { const char tab[] = "abfnrtv"; const char backTab[] = "\a\b\f\n\r\t\v"; uint n; bool quiet; yyIdentLen = 0; yyCommentLen = 0; yyStringLen = 0; while ( yyCh != EOF ) { yyLineNo = yyCurLineNo; if ( isalpha(yyCh) || yyCh == '_' ) { do { if ( yyIdentLen < sizeof(yyIdent) - 1 ) yyIdent[yyIdentLen++] = (char) yyCh; yyCh = getChar(); } while ( isalnum(yyCh) || yyCh == '_' ); yyIdent[yyIdentLen] = '\0'; // Check for names passed on the command line. if (tr_function && strcmp(yyIdent, tr_function) == 0) return Tok_tr; if (translate_function && strcmp(yyIdent, translate_function) == 0) return Tok_translate; bool might_be_str = false; switch ( yyIdent[0] ) { case 'N': if ( strcmp(yyIdent + 1, "one") == 0 ) return Tok_None; break; case 'Q': if (strcmp(yyIdent + 1, "T_TR_NOOP") == 0) { yyParsingUtf8 = false; return Tok_tr; } else if (strcmp(yyIdent + 1, "T_TR_NOOP_UTF8") == 0) { yyParsingUtf8 = true; return Tok_trUtf8; } else if (strcmp(yyIdent + 1, "T_TRANSLATE_NOOP") == 0) { yyParsingUtf8 = false; return Tok_translate; } break; case 'c': if ( strcmp(yyIdent + 1, "lass") == 0 ) return Tok_class; break; case 'f': /* * QTranslator::findMessage() has the same parameters as * QApplication::translate(). */ if ( strcmp(yyIdent + 1, "indMessage") == 0 ) return Tok_translate; break; case 'r': if ( strcmp(yyIdent + 1, "eturn") == 0 ) return Tok_return; /* Drop through. */ case 'R': if (yyIdent[1] == '\0') might_be_str = true; break; case 'b': case 'B': case 'u': case 'U': if (yyIdent[1] == '\0') might_be_str = true; else if ((yyIdent[1] == 'r' || yyIdent[1] == 'R') && yyIdent[2] == '\0') might_be_str = true; break; case 't': if ( strcmp(yyIdent + 1, "r") == 0 ) { yyParsingUtf8 = false; return Tok_tr; } else if ( qstrcmp(yyIdent + 1, "rUtf8") == 0 ) { yyParsingUtf8 = true; return Tok_trUtf8; } else if ( qstrcmp(yyIdent + 1, "ranslate") == 0 ) { yyParsingUtf8 = false; return Tok_translate; } break; case '_': if ( strcmp(yyIdent + 1, "_tr") == 0 ) { yyParsingUtf8 = false; return Tok_tr; } else if ( strcmp(yyIdent + 1, "_trUtf8") == 0 ) { yyParsingUtf8 = true; return Tok_trUtf8; } else if ( qstrcmp(yyIdent + 1, "translate") == 0 ) { yyParsingUtf8 = false; return Tok_translate; } break; } /* * Handle the standard Python v2 and v3 string prefixes by simply * ignoring them. */ if (!might_be_str) return Tok_Ident; if (yyCh != '"' && yyCh != '\'') return Tok_Ident; } { switch ( yyCh ) { case '#': do { yyCh = getChar(); } while ( yyCh != EOF && yyCh != '\n' ); break; case '"': case '\'': int quoteChar; int trippelQuote, singleQuote; int in; quoteChar = yyCh; trippelQuote = 0; singleQuote = 1; in = 0; yyCh = getChar(); quiet = false; while ( yyCh != EOF ) { if ( singleQuote && (yyCh == '\n' || (in && yyCh == quoteChar)) ) break; if ( yyCh == quoteChar ) { if (peekChar() == quoteChar) { yyCh = getChar(); if (!trippelQuote) { trippelQuote = 1; singleQuote = 0; in = 1; yyCh = getChar(); } else { yyCh = getChar(); if (yyCh == quoteChar) { trippelQuote = 0; break; } } } else if (trippelQuote) { if ( yyStringLen < sizeof(yyString) - 1 ) yyString[yyStringLen++] = (char) yyCh; yyCh = getChar(); continue; } else break; } else in = 1; if ( yyCh == '\\' ) { yyCh = getChar(); if ( yyCh == 'x' ) { QByteArray hex = "0"; yyCh = getChar(); while ( isxdigit(yyCh) ) { hex += (char) yyCh; yyCh = getChar(); } #if defined(_MSC_VER) && _MSC_VER >= 1400 sscanf_s( hex, "%x", &n ); #else sscanf( hex, "%x", &n ); #endif if ( yyStringLen < sizeof(yyString) - 1 ) yyString[yyStringLen++] = (char) n; } else if ( yyCh >= '0' && yyCh < '8' ) { QByteArray oct = ""; int n = 0; do { oct += (char) yyCh; ++n; yyCh = getChar(); } while ( yyCh >= '0' && yyCh < '8' && n < 3 ); #if defined(_MSC_VER) && _MSC_VER >= 1400 sscanf_s( oct, "%o", &n ); #else sscanf( oct, "%o", &n ); #endif if ( yyStringLen < sizeof(yyString) - 1 ) yyString[yyStringLen++] = (char) n; } else if ( yyCh == '\n' ) { yyCh = getChar(); } else { const char *p = strchr( tab, yyCh ); if ( yyStringLen < sizeof(yyString) - 1 ) yyString[yyStringLen++] = ( p == 0 ) ? (char) yyCh : backTab[p - tab]; yyCh = getChar(); } } else { if (!yyCodecForSource) { if ( yyParsingUtf8 && yyCh >= 0x80 && !quiet) { qWarning( "%s:%d: Non-ASCII character detected in trUtf8 string", (const char *) yyFileName, yyLineNo ); quiet = true; } // common case: optimized if ( yyStringLen < sizeof(yyString) - 1 ) yyString[yyStringLen++] = (char) yyCh; yyCh = getChar(); } else { QByteArray originalBytes; while ( yyCh != EOF && (trippelQuote || yyCh != '\n') && yyCh != quoteChar && yyCh != '\\' ) { if ( yyParsingUtf8 && yyCh >= 0x80 && !quiet) { qWarning( "%s:%d: Non-ASCII character detected in trUtf8 string", (const char *) yyFileName, yyLineNo ); quiet = true; } originalBytes += (char)yyCh; yyCh = getChar(); } QString unicodeStr = yyCodecForSource->toUnicode(originalBytes); QByteArray convertedBytes; if (!yyCodecForTr->canEncode(unicodeStr) && !quiet) { qWarning( "%s:%d: Cannot convert Python string from %s to %s", (const char *) yyFileName, yyLineNo, yyCodecForSource->name().constData(), yyCodecForTr->name().constData() ); quiet = true; } convertedBytes = yyCodecForTr->fromUnicode(unicodeStr); size_t len = qMin((size_t)convertedBytes.size(), sizeof(yyString) - yyStringLen - 1); memcpy(yyString + yyStringLen, convertedBytes.constData(), len); yyStringLen += len; } } } yyString[yyStringLen] = '\0'; if ( yyCh != quoteChar ) { if (trippelQuote) qWarning("%s:%d: Empty or unterminated triple quoted string", (const char *)yyFileName, yyLineNo); else qWarning("%s:%d: Unterminated string", (const char *)yyFileName, yyLineNo); } if ( yyCh == EOF ) { return Tok_Eof; } else { yyCh = getChar(); return Tok_String; } break; case '(': if (yyParenDepth == 0) yyParenLineNo = yyCurLineNo; yyParenDepth++; yyCh = getChar(); return Tok_LeftParen; case ')': if (yyParenDepth == 0) yyParenLineNo = yyCurLineNo; yyParenDepth--; yyCh = getChar(); return Tok_RightParen; case ',': yyCh = getChar(); return Tok_Comma; case '.': yyCh = getChar(); return Tok_Dot; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { QByteArray ba; ba+=yyCh; yyCh = getChar(); bool hex = yyCh == 'x'; if ( hex ) { ba+=yyCh; yyCh = getChar(); } while ( (hex ? isxdigit(yyCh) : isdigit(yyCh)) ) { ba+=yyCh; yyCh = getChar(); } bool ok; yyInteger = ba.toLongLong(&ok); if (ok) return Tok_Integer; break; } default: yyCh = getChar(); } } } return Tok_Eof; } /* The second part of this source file is the parser. It accomplishes a very easy task: It finds all strings inside a tr() or translate() call, and possibly finds out the context of the call. It supports three cases: (1) the context is specified, as in FunnyDialog.tr("Hello") or translate("FunnyDialog", "Hello"); (2) the call appears within an inlined function; (3) the call appears within a function defined outside the class definition. */ static int yyTok; static bool match( int t ) { bool matches = ( yyTok == t ); if ( matches ) yyTok = getToken(); return matches; } static bool matchString( QByteArray *s ) { bool matches = ( yyTok == Tok_String ); *s = ""; while ( yyTok == Tok_String ) { *s += yyString; yyTok = getToken(); } return matches; } static bool matchStringOrNone(QByteArray *s) { bool matches = matchString(s); if (!matches) matches = match(Tok_None); return matches; } /* * match any expression that can return a number, which can be * 1. Literal number (e.g. '11') * 2. simple identifier (e.g. 'm_count') * 3. simple function call (e.g. 'size()' ) * 4. function call on an object (e.g. 'list.size()') * * Other cases: * size(2,4) * list().size() * list(a,b).size(2,4) * etc... */ static bool matchExpression() { if (match(Tok_Integer)) { return true; } int parenlevel = 0; while (match(Tok_Ident) || parenlevel > 0) { if (yyTok == Tok_RightParen) { if (parenlevel == 0) break; --parenlevel; yyTok = getToken(); } else if (yyTok == Tok_LeftParen) { yyTok = getToken(); if (yyTok == Tok_RightParen) { yyTok = getToken(); } else { ++parenlevel; } } else if (yyTok == Tok_Ident) { continue; } else if (parenlevel == 0) { return false; } } return true; } static void parse( MetaTranslator *tor, const char *initialContext, const char *defaultContext ) { QMap qualifiedContexts; QByteArray context; QByteArray text; QByteArray com; QByteArray functionContext = initialContext; QByteArray prefix; bool utf8 = false; yyTok = getToken(); while ( yyTok != Tok_Eof ) { switch ( yyTok ) { case Tok_class: yyTok = getToken(); functionContext = yyIdent; yyTok = getToken(); break; case Tok_tr: case Tok_trUtf8: utf8 = (yyTok == Tok_trUtf8 || (yyCodecForTr && strcmp(yyCodecForTr->name(), "UTF-8") == 0)); yyTok = getToken(); if (match(Tok_LeftParen) && matchString(&text)) { com = ""; bool plural = false; // Note that this isn't as rigorous as the parsing of // translate() below. if (match(Tok_RightParen)) { // There is no comment or plural arguments. } else if (match(Tok_Comma) && matchStringOrNone(&com)) { // There is a comment argument. if (match(Tok_RightParen)) { // There is no plural argument. } else if (match(Tok_Comma)) { // There is a plural argument. plural = true; } } if (prefix.isNull()) context = defaultContext; else if (qstrcmp(prefix, "self") == 0) context = functionContext; else context = prefix; prefix = (const char *) 0; if (qualifiedContexts.contains(context)) context = qualifiedContexts[context]; if (!text.isEmpty()) { tor->insert(MetaTranslatorMessage(context, text, com, yyFileName, yyParenLineNo, QStringList(), utf8, MetaTranslatorMessage::Unfinished, plural)); } } break; case Tok_translate: yyTok = getToken(); if ( match(Tok_LeftParen) && matchString(&context) && match(Tok_Comma) && matchString(&text) ) { com = ""; bool plural = false; if (!match(Tok_RightParen)) { // look for comment if ( match(Tok_Comma) && matchStringOrNone(&com)) { if (!match(Tok_RightParen)) { // Look for n. if (match(Tok_Comma)) { if (matchExpression() && match(Tok_RightParen)) { plural = true; } else { break; } } else { break; } } } else { break; } } if (!text.isEmpty()) { tor->insert( MetaTranslatorMessage(context, text, com, yyFileName, yyParenLineNo, QStringList(), true, MetaTranslatorMessage::Unfinished, plural) ); } } break; case Tok_Ident: if ( !prefix.isNull() ) prefix += "."; prefix += yyIdent; yyTok = getToken(); if ( yyTok != Tok_Dot ) prefix = (const char *) 0; break; case Tok_Comment: com = yyComment; com = com.simplified(); if ( com.left(sizeof(MagicComment) - 1) == MagicComment ) { com.remove( 0, sizeof(MagicComment) - 1 ); int k = com.indexOf( ' ' ); if ( k == -1 ) { context = com; } else { context = com.left( k ); com.remove( 0, k + 1 ); tor->insert( MetaTranslatorMessage(context, "", com, yyFileName, yyParenLineNo, QStringList(), false) ); } } yyTok = getToken(); break; default: yyTok = getToken(); } } if ( yyParenDepth != 0 ) qWarning( "%s: Unbalanced parentheses in Python code", (const char *) yyFileName ); } void fetchtr_py(const char *fileName, MetaTranslator *tor, const char *defaultContext, bool mustExist, const char *codecForSource, const char *tr_func, const char *translate_func) { tr_function = tr_func; translate_function = translate_func; #if defined(_MSC_VER) && _MSC_VER >= 1400 if (fopen_s(&yyInFile, fileName, "r")) { if ( mustExist ) { char buf[100]; strerror_s(buf, sizeof(buf), errno); fprintf( stderr, "pylupdate5 error: Cannot open Python source file '%s': %s\n", fileName, buf ); } #else yyInFile = fopen( fileName, "r" ); if ( yyInFile == 0 ) { if ( mustExist ) fprintf( stderr, "pylupdate5 error: Cannot open Python source file '%s': %s\n", fileName, strerror(errno) ); #endif return; } startTokenizer( fileName, getCharFromFile, peekCharFromFile, tor->codecForTr(), QTextCodec::codecForName(codecForSource) ); parse( tor, 0, defaultContext ); fclose( yyInFile ); } class UiHandler : public QXmlDefaultHandler { public: UiHandler( MetaTranslator *translator, const char *fileName ) : tor( translator ), fname( fileName ), comment( "" ) { } virtual bool startElement( const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts ); virtual bool endElement( const QString& namespaceURI, const QString& localName, const QString& qName ); virtual bool characters( const QString& ch ); virtual bool fatalError( const QXmlParseException& exception ); virtual void setDocumentLocator(QXmlLocator *locator) { m_locator = locator; } QXmlLocator *m_locator; private: void flush(); MetaTranslator *tor; QByteArray fname; QString context; QString source; QString comment; QString accum; int m_lineNumber; bool trString; }; bool UiHandler::startElement( const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName, const QXmlAttributes& atts ) { if ( qName == QString("item") ) { flush(); if ( !atts.value(QString("text")).isEmpty() ) source = atts.value( QString("text") ); } else if ( qName == QString("string") ) { flush(); if (atts.value(QString("notr")).isEmpty() || atts.value(QString("notr")) != QString("true")) { trString = true; comment = atts.value(QString("comment")); } else { trString = false; } } if (trString) m_lineNumber = m_locator->lineNumber(); accum.truncate( 0 ); return true; } bool UiHandler::endElement( const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName ) { accum.replace( QRegExp(QString("\r\n")), "\n" ); if ( qName == QString("class") ) { if ( context.isEmpty() ) context = accum; } else if ( qName == QString("string") && trString ) { source = accum; } else if ( qName == QString("comment") ) { comment = accum; flush(); } else { flush(); } return true; } bool UiHandler::characters( const QString& ch ) { accum += ch; return true; } bool UiHandler::fatalError( const QXmlParseException& exception ) { QString msg; msg.sprintf( "Parse error at line %d, column %d (%s).", exception.lineNumber(), exception.columnNumber(), exception.message().toLatin1().data() ); fprintf( stderr, "XML error: %s\n", msg.toLatin1().data() ); return false; } void UiHandler::flush() { if ( !context.isEmpty() && !source.isEmpty() ) tor->insert( MetaTranslatorMessage(context.toUtf8(), source.toUtf8(), comment.toUtf8(), QString(fname), m_lineNumber, QStringList(), true) ); source.truncate( 0 ); comment.truncate( 0 ); } void fetchtr_ui( const char *fileName, MetaTranslator *tor, const char * /* defaultContext */, bool mustExist ) { QFile f( fileName ); if ( !f.open(QIODevice::ReadOnly) ) { if ( mustExist ) { #if defined(_MSC_VER) && _MSC_VER >= 1400 char buf[100]; strerror_s(buf, sizeof(buf), errno); fprintf( stderr, "pylupdate5 error: cannot open UI file '%s': %s\n", fileName, buf ); #else fprintf( stderr, "pylupdate5 error: cannot open UI file '%s': %s\n", fileName, strerror(errno) ); #endif } return; } QXmlInputSource in( &f ); QXmlSimpleReader reader; reader.setFeature( "http://xml.org/sax/features/namespaces", false ); reader.setFeature( "http://xml.org/sax/features/namespace-prefixes", true ); reader.setFeature( "http://trolltech.com/xml/features/report-whitespace" "-only-CharData", false ); QXmlDefaultHandler *hand = new UiHandler( tor, fileName ); reader.setContentHandler( hand ); reader.setErrorHandler( hand ); if ( !reader.parse(in) ) fprintf( stderr, "%s: Parse error in UI file\n", fileName ); reader.setContentHandler( 0 ); reader.setErrorHandler( 0 ); delete hand; f.close(); } PyQt5_gpl-5.10.1/qpy/pylupdate/merge.cpp0000644000076500000240000002256413245233150020133 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include "pylupdate.h" #include "simtexth.h" // defined in numberh.cpp extern int applyNumberHeuristic( MetaTranslator *tor ); // defined in sametexth.cpp extern int applySameTextHeuristic( MetaTranslator *tor ); typedef QList TML; /* Merges two MetaTranslator objects into the first one. The first one is a set of source texts and translations for a previous version of the internationalized program; the second one is a set of fresh source texts newly extracted from the source code, without any translation yet. */ void merge( const MetaTranslator *tor, const MetaTranslator *virginTor, MetaTranslator *outTor, bool noObsolete, bool verbose, const QString &filename ) { if (verbose) fprintf(stderr, "Updating '%s'...\n", filename.toLocal8Bit().constData()); int known = 0; int neww = 0; int obsoleted = 0; int UntranslatedObsoleted = 0; int similarTextHeuristicCount = 0; TML all = tor->messages(); TML::Iterator it; outTor->setLanguageCode(tor->languageCode()); outTor->setSourceLanguageCode(tor->sourceLanguageCode()); /* The types of all the messages from the vernacular translator are updated according to the virgin translator. */ for ( it = all.begin(); it != all.end(); ++it ) { MetaTranslatorMessage::Type newType = MetaTranslatorMessage::Finished; MetaTranslatorMessage m = *it; // skip context comment if ( !QByteArray(m.sourceText()).isEmpty() ) { MetaTranslatorMessage mv = virginTor->find(m.context(), m.sourceText(), m.comment()); if ( mv.isNull() ) { mv = virginTor->find(m.context(), m.comment(), m.fileName(), m.lineNumber()); if ( mv.isNull() ) { // did not find it in the virgin, mark it as obsolete newType = MetaTranslatorMessage::Obsolete; if ( m.type() != MetaTranslatorMessage::Obsolete ) obsoleted++; } else { // Do not just accept it if its on the same line number, but different source text. // Also check if the texts are more or less similar before we consider them to represent the same message... // ### The QString() cast is evil if (getSimilarityScore(QString(m.sourceText()), mv.sourceText()) >= textSimilarityThreshold) { // It is just slightly modified, assume that it is the same string m = MetaTranslatorMessage(m.context(), mv.sourceText(), m.comment(), m.fileName(), m.lineNumber(), m.translations()); m.setPlural(mv.isPlural()); // Mark it as unfinished. (Since the source text was changed it might require re-translating...) newType = MetaTranslatorMessage::Unfinished; ++similarTextHeuristicCount; } else { // The virgin and vernacular sourceTexts are so different that we could not find it. newType = MetaTranslatorMessage::Obsolete; if ( m.type() != MetaTranslatorMessage::Obsolete ) obsoleted++; } neww++; } } else { switch ( m.type() ) { case MetaTranslatorMessage::Finished: default: if (m.isPlural() == mv.isPlural()) { newType = MetaTranslatorMessage::Finished; } else { newType = MetaTranslatorMessage::Unfinished; } known++; break; case MetaTranslatorMessage::Unfinished: newType = MetaTranslatorMessage::Unfinished; known++; break; case MetaTranslatorMessage::Obsolete: newType = MetaTranslatorMessage::Unfinished; neww++; } // Always get the filename and linenumber info from the virgin Translator, in case it has changed location. // This should also enable us to read a file that does not have the element. m.setFileName(mv.fileName()); m.setLineNumber(mv.lineNumber()); m.setPlural(mv.isPlural()); // ### why not use operator=? } if (newType == MetaTranslatorMessage::Obsolete && !m.isTranslated()) { ++UntranslatedObsoleted; } m.setType(newType); outTor->insert(m); } } /* Messages found only in the virgin translator are added to the vernacular translator. Among these are all the context comments. */ all = virginTor->messages(); for ( it = all.begin(); it != all.end(); ++it ) { MetaTranslatorMessage mv = *it; bool found = tor->contains(mv.context(), mv.sourceText(), mv.comment()); if (!found) { MetaTranslatorMessage m = tor->find(mv.context(), mv.comment(), mv.fileName(), mv.lineNumber()); if (!m.isNull()) { if (getSimilarityScore(QString(m.sourceText()), mv.sourceText()) >= textSimilarityThreshold) { found = true; } } else { found = false; } } if ( !found ) { outTor->insert( mv ); if ( !QByteArray(mv.sourceText()).isEmpty() ) neww++; } } /* The same-text heuristic handles cases where a message has an obsolete counterpart with a different context or comment. */ int sameTextHeuristicCount = applySameTextHeuristic( outTor ); /* The number heuristic handles cases where a message has an obsolete counterpart with mostly numbers differing in the source text. */ int sameNumberHeuristicCount = applyNumberHeuristic( outTor ); if ( verbose ) { int totalFound = neww + known; fprintf( stderr, " Found %d source text%s (%d new and %d already existing)\n", totalFound, totalFound == 1 ? "" : "s", neww, known); if (obsoleted) { if (noObsolete) { fprintf( stderr, " Removed %d obsolete entr%s\n", obsoleted, obsoleted == 1 ? "y" : "ies" ); } else { int total = obsoleted - UntranslatedObsoleted; fprintf( stderr, " Kept %d obsolete translation%s\n", total, total == 1 ? "" : "s" ); fprintf( stderr, " Removed %d obsolete untranslated entr%s\n", UntranslatedObsoleted, UntranslatedObsoleted == 1 ? "y" : "ies" ); } } if (sameNumberHeuristicCount) fprintf( stderr, " Number heuristic provided %d translation%s\n", sameNumberHeuristicCount, sameNumberHeuristicCount == 1 ? "" : "s" ); if (sameTextHeuristicCount) fprintf( stderr, " Same-text heuristic provided %d translation%s\n", sameTextHeuristicCount, sameTextHeuristicCount == 1 ? "" : "s" ); if (similarTextHeuristicCount) fprintf( stderr, " Similar-text heuristic provided %d translation%s\n", similarTextHeuristicCount, similarTextHeuristicCount == 1 ? "" : "s" ); } } PyQt5_gpl-5.10.1/qpy/pylupdate/metatranslator.cpp0000644000076500000240000006565413245233150022103 0ustar philstaff00000000000000/********************************************************************** ** Copyright (C) 2002-2007 Detlev Offenbach ** ** This is a modified version of lupdate. The original is part of Qt-Linguist. ** The copyright of the original file can be found below. ** ** This version is modified to handle python sources. ** ** The file is provided AS IS with NO WARRANTY OF ANY KIND, ** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE. ****************************************************************************/ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "metatranslator.h" #include #include #include #include #include #include #include static bool encodingIsUtf8( const QXmlAttributes& atts ) { for ( int i = 0; i < atts.length(); i++ ) { // utf8="true" is a pre-3.0 syntax if ( atts.qName(i) == QString("utf8") ) { return ( atts.value(i) == QString("true") ); } else if ( atts.qName(i) == QString("encoding") ) { return ( atts.value(i) == QString("UTF-8") ); } } return false; } class TsHandler : public QXmlDefaultHandler { public: TsHandler( MetaTranslator *translator ) : tor( translator ), type( MetaTranslatorMessage::Finished ), inMessage( false ), ferrorCount( 0 ), contextIsUtf8( false ), messageIsUtf8( false ), m_isPlural(false) { } virtual bool startElement( const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts ); virtual bool endElement( const QString& namespaceURI, const QString& localName, const QString& qName ); virtual bool characters( const QString& ch ); virtual bool fatalError( const QXmlParseException& exception ); QString language() const { return m_language; } QString sourceLanguage() const { return m_sourceLanguage; } private: MetaTranslator *tor; MetaTranslatorMessage::Type type; bool inMessage; QString m_language; QString m_sourceLanguage; QString context; QString source; QString comment; QStringList translations; QString m_fileName; int m_lineNumber; QString accum; int ferrorCount; bool contextIsUtf8; bool messageIsUtf8; bool m_isPlural; }; bool TsHandler::startElement( const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName, const QXmlAttributes& atts ) { if ( qName == QString("byte") ) { for ( int i = 0; i < atts.length(); i++ ) { if ( atts.qName(i) == QString("value") ) { QString value = atts.value( i ); int base = 10; if ( value.startsWith("x") ) { base = 16; value = value.mid( 1 ); } int n = value.toUInt( 0, base ); if ( n != 0 ) accum += QChar( n ); } } } else { if ( qName == QString("TS") ) { m_language = atts.value(QLatin1String("language")); m_sourceLanguage = atts.value(QLatin1String("sourcelanguage")); } else if ( qName == QString("context") ) { context.truncate( 0 ); source.truncate( 0 ); comment.truncate( 0 ); translations.clear(); contextIsUtf8 = encodingIsUtf8( atts ); } else if ( qName == QString("message") ) { inMessage = true; type = MetaTranslatorMessage::Finished; source.truncate( 0 ); comment.truncate( 0 ); translations.clear(); messageIsUtf8 = encodingIsUtf8( atts ); m_isPlural = atts.value(QLatin1String("numerus")).compare(QLatin1String("yes")) == 0; } else if (qName == QString("location") && inMessage) { bool bOK; int lineNo = atts.value(QString("line")).toInt(&bOK); if (!bOK) lineNo = -1; m_fileName = atts.value(QString("filename")); m_lineNumber = lineNo; } else if ( qName == QString("translation") ) { for ( int i = 0; i < atts.length(); i++ ) { if ( atts.qName(i) == QString("type") ) { if ( atts.value(i) == QString("unfinished") ) type = MetaTranslatorMessage::Unfinished; else if ( atts.value(i) == QString("obsolete") ) type = MetaTranslatorMessage::Obsolete; else type = MetaTranslatorMessage::Finished; } } } accum.truncate( 0 ); } return true; } bool TsHandler::endElement( const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName ) { if ( qName == QString("codec") || qName == QString("defaultcodec") ) { // "codec" is a pre-3.0 syntax tor->setCodec( accum.toLatin1() ); } else if ( qName == QString("name") ) { context = accum; } else if ( qName == QString("source") ) { source = accum; } else if ( qName == QString("comment") ) { if ( inMessage ) { comment = accum; } else { if ( contextIsUtf8 ) tor->insert( MetaTranslatorMessage(context.toUtf8(), ContextComment, accum.toUtf8(), QString(), 0, QStringList(), true, MetaTranslatorMessage::Unfinished) ); else tor->insert( MetaTranslatorMessage(context.toLatin1(), ContextComment, accum.toLatin1(), QString(), 0, QStringList(), false, MetaTranslatorMessage::Unfinished) ); } } else if ( qName == QString("numerusform") ) { translations.append(accum); m_isPlural = true; } else if ( qName == QString("translation") ) { if (translations.isEmpty()) translations.append(accum); } else if ( qName == QString("message") ) { if ( messageIsUtf8 ) tor->insert( MetaTranslatorMessage(context.toUtf8(), source.toUtf8(), comment.toUtf8(), m_fileName, m_lineNumber, translations, true, type, m_isPlural) ); else tor->insert( MetaTranslatorMessage(context.toLatin1(), source.toLatin1(), comment.toLatin1(), m_fileName, m_lineNumber, translations, false, type, m_isPlural) ); inMessage = false; } return true; } bool TsHandler::characters( const QString& ch ) { QString t = ch; t.replace( "\r", "" ); accum += t; return true; } bool TsHandler::fatalError( const QXmlParseException& exception ) { if ( ferrorCount++ == 0 ) { QString msg; msg.sprintf( "Parse error at line %d, column %d (%s).", exception.lineNumber(), exception.columnNumber(), exception.message().toLatin1().data() ); fprintf( stderr, "XML error: %s\n", msg.toLatin1().data() ); } return false; } static QString numericEntity( int ch ) { return QString( ch <= 0x20 ? "" : "&#x%1;" ) .arg( ch, 0, 16 ); } static QString protect( const QByteArray& str ) { QString result; int len = (int) str.length(); for ( int k = 0; k < len; k++ ) { switch( str[k] ) { case '\"': result += QString( """ ); break; case '&': result += QString( "&" ); break; case '>': result += QString( ">" ); break; case '<': result += QString( "<" ); break; case '\'': result += QString( "'" ); break; default: if ( (uchar) str[k] < 0x20 && str[k] != '\n' ) result += numericEntity( (uchar) str[k] ); else result += str[k]; } } return result; } static QString evilBytes( const QByteArray& str, bool utf8 ) { if ( utf8 ) { return protect( str ); } else { QString result; QByteArray t = protect( str ).toLatin1(); int len = (int) t.length(); for ( int k = 0; k < len; k++ ) { if ( (uchar) t[k] >= 0x7f ) result += numericEntity( (uchar) t[k] ); else result += QChar( t[k] ); } return result; } } MetaTranslatorMessage::MetaTranslatorMessage() : utfeight( false ), ty( Unfinished ), m_plural(false) { } MetaTranslatorMessage::MetaTranslatorMessage( const char *context, const char *sourceText, const char *comment, const QString &fileName, int lineNumber, const QStringList& translations, bool utf8, Type type, bool plural ) : TranslatorMessage( context, sourceText, comment, fileName, lineNumber, translations ), utfeight( false ), ty( type ), m_plural(plural) { /* Don't use UTF-8 if it makes no difference. UTF-8 should be reserved for the real problematic case: non-ASCII (possibly non-Latin1) characters in .ui files. */ if ( utf8 ) { if ( sourceText != 0 ) { int i = 0; while ( sourceText[i] != '\0' ) { if ( (uchar) sourceText[i] >= 0x80 ) { utfeight = true; break; } i++; } } if ( !utfeight && comment != 0 ) { int i = 0; while ( comment[i] != '\0' ) { if ( (uchar) comment[i] >= 0x80 ) { utfeight = true; break; } i++; } } } } MetaTranslatorMessage::MetaTranslatorMessage( const MetaTranslatorMessage& m ) : TranslatorMessage( m ), utfeight( m.utfeight ), ty( m.ty ), m_plural(m.m_plural) { } MetaTranslatorMessage& MetaTranslatorMessage::operator=( const MetaTranslatorMessage& m ) { TranslatorMessage::operator=( m ); utfeight = m.utfeight; ty = m.ty; m_plural = m.m_plural; return *this; } bool MetaTranslatorMessage::operator==( const MetaTranslatorMessage& m ) const { return qstrcmp( context(), m.context() ) == 0 && qstrcmp( sourceText(), m.sourceText() ) == 0 && qstrcmp( comment(), m.comment() ) == 0; } bool MetaTranslatorMessage::operator<( const MetaTranslatorMessage& m ) const { int delta = qstrcmp( context(), m.context() ); if ( delta == 0 ) { delta = qstrcmp( sourceText(), m.sourceText() ); if ( delta == 0 ) delta = qstrcmp( comment(), m.comment() ); } return delta < 0; } MetaTranslator::MetaTranslator() { clear(); } MetaTranslator::MetaTranslator( const MetaTranslator& tor ) : mm( tor.mm ), codecName( tor.codecName ), codec( tor.codec ) { } MetaTranslator& MetaTranslator::operator=( const MetaTranslator& tor ) { mm = tor.mm; codecName = tor.codecName; codec = tor.codec; return *this; } void MetaTranslator::clear() { mm.clear(); codecName = "ISO-8859-1"; codec = 0; } bool MetaTranslator::load( const QString& filename ) { QFile f( filename ); if ( !f.open(QIODevice::ReadOnly) ) return false; QXmlInputSource in( &f ); QXmlSimpleReader reader; reader.setFeature( "http://xml.org/sax/features/namespaces", false ); reader.setFeature( "http://xml.org/sax/features/namespace-prefixes", true ); TsHandler *hand = new TsHandler( this ); reader.setContentHandler( static_cast(hand) ); reader.setErrorHandler( static_cast(hand) ); bool ok = reader.parse( in ); reader.setContentHandler( 0 ); reader.setErrorHandler( 0 ); m_language = hand->language(); m_sourceLanguage = hand->sourceLanguage(); makeFileNamesAbsolute(QFileInfo(filename).absoluteDir()); delete hand; f.close(); return ok; } bool MetaTranslator::save( const QString& filename ) const { QFile f( filename ); if ( !f.open(QIODevice::WriteOnly) ) return false; QTextStream t( &f ); t.setCodec( QTextCodec::codecForName("ISO-8859-1") ); //### The xml prolog allows processors to easily detect the correct encoding t << "\n\n"; if ( codecName != "ISO-8859-1" ) t << "" << codecName << "\n"; TMM::ConstIterator m = mm.begin(); while ( m != mm.end() ) { TMMInv inv; TMMInv::Iterator i; bool contextIsUtf8 = m.key().utf8(); QByteArray context = m.key().context(); QByteArray comment = ""; do { if (QByteArray(m.key().sourceText()) == ContextComment) { if ( m.key().type() != MetaTranslatorMessage::Obsolete ) { contextIsUtf8 = m.key().utf8(); comment = QByteArray(m.key().comment()); } } else { inv.insert( *m, m.key() ); } } while ( ++m != mm.end() && QByteArray(m.key().context()) == context ); t << "\n"; t << " " << evilBytes( context, contextIsUtf8 ) << "\n"; if ( !comment.isEmpty() ) t << " " << evilBytes( comment, contextIsUtf8 ) << "\n"; for ( i = inv.begin(); i != inv.end(); ++i ) { MetaTranslatorMessage msg = *i; // no need for such noise if ( msg.type() == MetaTranslatorMessage::Obsolete && msg.translation().isEmpty() ) continue; t << " \n"; if (!msg.fileName().isEmpty() && msg.lineNumber() >= 0) { QDir tsPath = QFileInfo(filename).absoluteDir(); QString fn = tsPath.relativeFilePath(msg.fileName()).replace('\\','/'); t << " \n"; } t << " " << evilBytes( msg.sourceText(), msg.utf8() ) << "\n"; if ( !QByteArray(msg.comment()).isEmpty() ) t << " " << evilBytes( msg.comment(), msg.utf8() ) << "\n"; t << " "; if (msg.isPlural()) { t << "\n"; QLocale::Language l; QLocale::Country c; languageAndCountry(m_language, &l, &c); QStringList translns = normalizedTranslations(msg, l, c); for (int j = 0; j < qMax(1, translns.count()); ++j) t << " " << protect( translns.value(j).toUtf8() ) << "\n"; t << " "; } else { t << protect( msg.translation().toUtf8() ); } t << "\n"; t << " \n"; } t << "\n"; } t << "\n"; f.close(); return true; } void MetaTranslator::languageAndCountry(const QString &languageCode, QLocale::Language *lang, QLocale::Country *country) { QLocale locale(languageCode); if (lang) *lang = locale.language(); if (country) { if (languageCode.indexOf(QLatin1Char('_')) != -1) { *country = locale.country(); } else { *country = QLocale::AnyCountry; } } } bool MetaTranslator::release( const QString& filename, bool verbose, bool ignoreUnfinished, Translator::SaveMode mode ) const { Translator tor( 0 ); int finished = 0; int unfinished = 0; int untranslated = 0; TMM::ConstIterator m; for ( m = mm.begin(); m != mm.end(); ++m ) { if ( m.key().type() != MetaTranslatorMessage::Obsolete ) { if ( m.key().translation().isEmpty() ) { untranslated++; } else { if ( m.key().type() == MetaTranslatorMessage::Unfinished ) unfinished++; else finished++; QByteArray context = m.key().context(); QByteArray sourceText = m.key().sourceText(); QByteArray comment = m.key().comment(); QStringList translations = m.key().translations(); if ( !ignoreUnfinished || m.key().type() != MetaTranslatorMessage::Unfinished ) { /* Drop the comment in (context, sourceText, comment), unless the context is empty, unless (context, sourceText, "") already exists or unless we already dropped the comment of (context, sourceText, comment0). */ if ( comment.isEmpty() || context.isEmpty() || contains(context, sourceText, "") || !tor.findMessage(context, sourceText, "").translation() .isNull() ) { tor.insert( m.key() ); } else { tor.insert( TranslatorMessage(context, sourceText, "", QString(), -1, translations) ); //filename and lineNumbers will be ignored from now. } } } } } bool saved = tor.save( filename, mode ); if ( saved && verbose ) fprintf( stderr, " %d finished, %d unfinished and %d untranslated messages\n", finished, unfinished, untranslated ); return saved; } QString MetaTranslator::languageCode() const { return m_language; } QString MetaTranslator::sourceLanguageCode() const { return m_sourceLanguage; } void MetaTranslator::setLanguageCode(const QString &languageCode) { m_language = languageCode; } void MetaTranslator::setSourceLanguageCode(const QString &languageCode) { m_sourceLanguage = languageCode; } bool MetaTranslator::contains( const char *context, const char *sourceText, const char *comment ) const { return mm.contains(MetaTranslatorMessage(context, sourceText, comment, QString(), 0)); } MetaTranslatorMessage MetaTranslator::find( const char *context, const char *sourceText, const char *comment ) const { QMap::const_iterator it = mm.constFind(MetaTranslatorMessage(context, sourceText, comment, QString(), 0)); return (it == mm.constEnd() ? MetaTranslatorMessage() : it.key()); } MetaTranslatorMessage MetaTranslator::find(const char *context, const char *comment, const QString &fileName, int lineNumber) const { if (lineNumber >= 0 && !fileName.isEmpty()) { MetaTranslatorMessage m; for (QMap::const_iterator it = mm.constBegin(); it != mm.constEnd(); ++it) { m = it.key(); int delta = qstrcmp(m.context(), context); if (delta == 0) { delta = qstrcmp(m.comment(), comment); if (delta == 0) { delta = QString::compare(m.fileName(), fileName); if (delta == 0) { delta = m.lineNumber() - lineNumber; if (delta == 0) return m; } } } } } return MetaTranslatorMessage(); } void MetaTranslator::insert( const MetaTranslatorMessage& m ) { int pos = mm.count(); if (mm.contains(m)) { pos = mm.value(m); mm.remove(m); } mm.insert(m, pos); } void MetaTranslator::stripObsoleteMessages() { TMM newmm; TMM::Iterator m = mm.begin(); while ( m != mm.end() ) { if ( m.key().type() != MetaTranslatorMessage::Obsolete ) newmm.insert( m.key(), *m ); ++m; } mm = newmm; } void MetaTranslator::stripEmptyContexts() { TMM newmm; TMM::Iterator m = mm.begin(); while ( m != mm.end() ) { if ( QByteArray(m.key().sourceText()) == ContextComment ) { TMM::Iterator n = m; ++n; // the context comment is followed by other messages if ( n != newmm.end() && qstrcmp(m.key().context(), n.key().context()) == 0 ) newmm.insert( m.key(), *m ); } else { newmm.insert( m.key(), *m ); } ++m; } mm = newmm; } void MetaTranslator::makeFileNamesAbsolute(const QDir &oldPath) { TMM newmm; for (TMM::iterator m = mm.begin(); m != mm.end(); ++m) { MetaTranslatorMessage msg = m.key(); QString fileName = m.key().fileName(); QFileInfo fi (fileName); if (fi.isRelative()) { fileName = oldPath.absoluteFilePath(fileName); } msg.setFileName(fileName); newmm.insert(msg, m.value()); } mm = newmm; } void MetaTranslator::setCodec( const char *name ) { const int latin1 = 4; codecName = name; codec = QTextCodec::codecForName( name ); if ( codec == 0 || codec->mibEnum() == latin1 ) codec = 0; } QString MetaTranslator::toUnicode( const char *str, bool utf8 ) const { if ( utf8 ) return QString::fromUtf8( str ); else if ( codec == 0 ) return QString( str ); else return codec->toUnicode( str ); } QList MetaTranslator::messages() const { int n = mm.count(); TMM::ConstIterator *t = new TMM::ConstIterator[n + 1]; TMM::ConstIterator m; for ( m = mm.begin(); m != mm.end(); ++m ) t[*m] = m; QList val; for ( int i = 0; i < n; i++ ) val.append( t[i].key() ); delete[] t; return val; } QList MetaTranslator::translatedMessages() const { QList val; TMM::ConstIterator m; for ( m = mm.begin(); m != mm.end(); ++m ) { if ( m.key().type() == MetaTranslatorMessage::Finished ) val.append( m.key() ); } return val; } // the grammatical numerus is the number of plural forms + singular forms. // i.e english has two forms: singular og plural. // and polish has three forms: // 1. singular (1), // 2. plural form 1 (numbers that ends with 2,3,4 except 12,13,14) // 3. plural form 2 (all others) // Thus, english returns 2, polish returns 3 int MetaTranslator::grammaticalNumerus(QLocale::Language language, QLocale::Country country) { QStringList forms; getNumerusInfo(language, country, &forms); return forms.count(); } QStringList MetaTranslator::normalizedTranslations(const MetaTranslatorMessage& m, QLocale::Language language, QLocale::Country country) { QStringList translations = m.translations(); int numTranslations = 1; if (m.isPlural()) { numTranslations = grammaticalNumerus(language, country); } // make sure that the stringlist always have the size of the language's current numerus, or 1 if its not plural if (translations.count() > numTranslations) { for (int i = translations.count(); i > numTranslations; --i) translations.removeLast(); } else if (translations.count() < numTranslations) { for (int i = translations.count(); i < numTranslations; ++i) translations << QString(); } return translations; } PyQt5_gpl-5.10.1/qpy/pylupdate/metatranslator.h0000644000076500000240000001631413245233150021535 0ustar philstaff00000000000000/********************************************************************** ** Copyright (C) 2002-2007 Detlev Offenbach ** ** This is a modified version of lupdate. The original is part of Qt-Linguist. ** The copyright of the original file can be found below. ** ** This version is modified to handle python sources. ** ** The file is provided AS IS with NO WARRANTY OF ANY KIND, ** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE. ****************************************************************************/ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef METATRANSLATOR_H #define METATRANSLATOR_H #include #include #include #include #include #include "translator.h" #if !defined(QT_BEGIN_NAMESPACE) #define QT_BEGIN_NAMESPACE #define QT_END_NAMESPACE #endif QT_BEGIN_NAMESPACE class QTextCodec; QT_END_NAMESPACE class MetaTranslatorMessage : public TranslatorMessage { public: enum Type { Unfinished, Finished, Obsolete }; MetaTranslatorMessage(); MetaTranslatorMessage( const char *context, const char *sourceText, const char *comment, const QString &fileName, int lineNumber, const QStringList& translations = QStringList(), bool utf8 = false, Type type = Unfinished, bool plural = false ); MetaTranslatorMessage( const MetaTranslatorMessage& m ); MetaTranslatorMessage& operator=( const MetaTranslatorMessage& m ); void setType( Type nt ) { ty = nt; } Type type() const { return ty; } bool utf8() const { return utfeight; } bool isPlural() const { return m_plural; } void setPlural(bool isplural) { m_plural = isplural; } bool operator==( const MetaTranslatorMessage& m ) const; bool operator!=( const MetaTranslatorMessage& m ) const { return !operator==( m ); } bool operator<( const MetaTranslatorMessage& m ) const; bool operator<=( const MetaTranslatorMessage& m ) { return !operator>( m ); } bool operator>( const MetaTranslatorMessage& m ) const { return this->operator<( m ); } bool operator>=( const MetaTranslatorMessage& m ) const { return !operator<( m ); } private: bool utfeight; Type ty; bool m_plural; }; class MetaTranslator { public: MetaTranslator(); MetaTranslator( const MetaTranslator& tor ); MetaTranslator& operator=( const MetaTranslator& tor ); void clear(); bool load( const QString& filename ); bool save( const QString& filename ) const; bool release( const QString& filename, bool verbose = false, bool ignoreUnfinished = false, Translator::SaveMode mode = Translator::Stripped ) const; bool contains( const char *context, const char *sourceText, const char *comment ) const; MetaTranslatorMessage find( const char *context, const char *sourceText, const char *comment ) const; MetaTranslatorMessage find(const char *context, const char *comment, const QString &fileName, int lineNumber) const; void insert( const MetaTranslatorMessage& m ); void stripObsoleteMessages(); void stripEmptyContexts(); void setCodec( const char *name ); // kill me void setCodecForTr( const char *name ) { setCodec(name); } QTextCodec *codecForTr() const { return codec; } QString toUnicode( const char *str, bool utf8 ) const; QString languageCode() const; QString sourceLanguageCode() const; static void languageAndCountry(const QString &languageCode, QLocale::Language *lang, QLocale::Country *country); void setLanguageCode(const QString &languageCode); void setSourceLanguageCode(const QString &languageCode); QList messages() const; QList translatedMessages() const; static int grammaticalNumerus(QLocale::Language language, QLocale::Country country); static QStringList normalizedTranslations(const MetaTranslatorMessage& m, QLocale::Language lang, QLocale::Country country); private: void makeFileNamesAbsolute(const QDir &oldPath); typedef QMap TMM; typedef QMap TMMInv; TMM mm; QByteArray codecName; QTextCodec *codec; QString m_language; // A string beginning with a 2 or 3 letter language code (ISO 639-1 or ISO-639-2), // followed by the optional country variant to distinguist between country-specific variations // of the language. The language code and country code are always separated by '_' // Note that the language part can also be a 3-letter ISO 639-2 code. // Legal examples: // 'pt' portuguese, assumes portuguese from portugal // 'pt_BR' Brazilian portuguese (ISO 639-1 language code) // 'por_BR' Brazilian portuguese (ISO 639-2 language code) QString m_sourceLanguage; }; /* This is a quick hack. The proper way to handle this would be to extend MetaTranslator's interface. */ #define ContextComment "QT_LINGUIST_INTERNAL_CONTEXT_COMMENT" #endif PyQt5_gpl-5.10.1/qpy/pylupdate/numberh.cpp0000644000076500000240000002145013245233150020465 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "metatranslator.h" #include #include #include #include #include typedef QMap TMM; typedef QList TML; static bool isDigitFriendly( int c ) { return ispunct((uchar)c) || isspace((uchar)c); } static int numberLength( const char *s ) { int i = 0; if ( isdigit((uchar)s[0]) ) { do { i++; } while (isdigit((uchar)s[i]) || (isDigitFriendly(s[i]) && (isdigit((uchar)s[i + 1]) || (isDigitFriendly(s[i + 1]) && isdigit((uchar)s[i + 2]))))); } return i; } /* Returns a version of 'key' where all numbers have been replaced by zeroes. If there were none, returns "". */ static QByteArray zeroKey( const char *key ) { QByteArray zeroed; zeroed.resize( int(strlen(key)) + 1 ); char *z = zeroed.data(); int i = 0, j = 0; int len; bool metSomething = false; while ( key[i] != '\0' ) { len = numberLength( key + i ); if ( len > 0 ) { i += len; z[j++] = '0'; metSomething = true; } else { z[j++] = key[i++]; } } z[j] = '\0'; if ( metSomething ) return zeroed; else return ""; } static QString translationAttempt( const QString& oldTranslation, const char *oldSource, const char *newSource ) { int p = zeroKey( oldSource ).count( '0' ); int oldSourceLen = qstrlen( oldSource ); QString attempt; QStringList oldNumbers; QStringList newNumbers; QVector met( p ); QVector matchedYet( p ); int i, j; int k = 0, ell, best; int m, n; int pass; /* This algorithm is hard to follow, so we'll consider an example all along: oldTranslation is "XeT 3.0", oldSource is "TeX 3.0" and newSource is "XeT 3.1". First, we set up two tables: oldNumbers and newNumbers. In our example, oldNumber[0] is "3.0" and newNumber[0] is "3.1". */ for ( i = 0, j = 0; i < oldSourceLen; i++, j++ ) { m = numberLength( oldSource + i ); n = numberLength( newSource + j ); if ( m > 0 ) { oldNumbers.append( QByteArray(oldSource + i, m + 1) ); newNumbers.append( QByteArray(newSource + j, n + 1) ); i += m; j += n; met[k] = false; matchedYet[k] = 0; k++; } } /* We now go over the old translation, "XeT 3.0", one letter at a time, looking for numbers found in oldNumbers. Whenever such a number is met, it is replaced with its newNumber equivalent. In our example, the "3.0" of "XeT 3.0" becomes "3.1". */ for ( i = 0; i < (int) oldTranslation.length(); i++ ) { attempt += oldTranslation[i]; for ( k = 0; k < p; k++ ) { if ( oldTranslation[i] == oldNumbers[k][matchedYet[k]] ) matchedYet[k]++; else matchedYet[k] = 0; } /* Let's find out if the last character ended a match. We make two passes over the data. In the first pass, we try to match only numbers that weren't matched yet; if that fails, the second pass does the trick. This is useful in some suspicious cases, flagged below. */ for ( pass = 0; pass < 2; pass++ ) { best = p; // an impossible value for ( k = 0; k < p; k++ ) { if ( (!met[k] || pass > 0) && matchedYet[k] == (int) oldNumbers[k].length() && numberLength(oldTranslation.toLatin1().constData() + (i + 1) - matchedYet[k]) == matchedYet[k] ) { // the longer the better if ( best == p || matchedYet[k] > matchedYet[best] ) best = k; } } if ( best != p ) { attempt.truncate( attempt.length() - matchedYet[best] ); attempt += newNumbers[best]; met[best] = true; for ( k = 0; k < p; k++ ) matchedYet[k] = 0; break; } } } /* We flag two kinds of suspicious cases. They are identified as such with comments such as "{2000?}" at the end. Example of the first kind: old source text "TeX 3.0" translated as "XeT 2.0" is flagged "TeX 2.0 {3.0?}", no matter what the new text is. */ for ( k = 0; k < p; k++ ) { if ( !met[k] ) attempt += QString( " {" ) + newNumbers[k] + QString( "?}" ); } /* Example of the second kind: "1 of 1" translated as "1 af 1", with new source text "1 of 2", generates "1 af 2 {1 or 2?}" because it's not clear which of "1 af 2" and "2 af 1" is right. */ for ( k = 0; k < p; k++ ) { for ( ell = 0; ell < p; ell++ ) { if ( k != ell && oldNumbers[k] == oldNumbers[ell] && newNumbers[k] < newNumbers[ell] ) attempt += QString( " {" ) + newNumbers[k] + QString( " or " ) + newNumbers[ell] + QString( "?}" ); } } return attempt; } /* Augments a MetaTranslator with translations easily derived from similar existing (probably obsolete) translations. For example, if "TeX 3.0" is translated as "XeT 3.0" and "TeX 3.1" has no translation, "XeT 3.1" is added to the translator and is marked Unfinished. Returns the number of additional messages that this heuristic translated. */ int applyNumberHeuristic( MetaTranslator *tor ) { TMM translated, untranslated; TMM::Iterator t, u; TML all = tor->messages(); TML::Iterator it; int inserted = 0; for ( it = all.begin(); it != all.end(); ++it ) { bool hasTranslation = (*it).isTranslated(); if ( (*it).type() == MetaTranslatorMessage::Unfinished ) { if ( !hasTranslation ) untranslated.insert(QByteArray((*it).context()) + "\n" + (*it).sourceText() + "\n" + (*it).comment(), *it); } else if ( hasTranslation && (*it).translations().count() == 1 ) { translated.insert( zeroKey((*it).sourceText()), *it ); } } for ( u = untranslated.begin(); u != untranslated.end(); ++u ) { t = translated.find( zeroKey((*u).sourceText()) ); if ( t != translated.end() && !t.key().isEmpty() && qstrcmp((*t).sourceText(), (*u).sourceText()) != 0 ) { MetaTranslatorMessage m( *u ); m.setTranslation(translationAttempt((*t).translation(), (*t).sourceText(), (*u).sourceText())); tor->insert( m ); inserted++; } } return inserted; } PyQt5_gpl-5.10.1/qpy/pylupdate/proparser.cpp0000644000076500000240000002061013245233150021037 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "proparser.h" #include #include #include #include #include #include #ifdef Q_OS_UNIX #include #endif #ifdef Q_OS_WIN32 #define QT_POPEN _popen #else #define QT_POPEN popen #endif QString loadFile( const QString &fileName ) { QFile file( fileName ); if ( !file.open(QIODevice::ReadOnly) ) { fprintf( stderr, "error: Cannot load '%s': %s\n", file.fileName().toLatin1().constData(), file.errorString().toLatin1().constData() ); return QString(); } QTextStream in( &file ); return in.readAll(); } QMap proFileTagMap( const QString& text ) { QString t = text; QMap tagMap; bool stillProcess = true; // If include() has a $$tag then we need to reprocess while (stillProcess) { /* Strip any commments before we try to include. We still need to do it after we include to make sure the included file does not have comments */ t.replace( QRegExp(QString("#[^\n]*\n")), QString(" ") ); /* Process include() commands. $$PWD is a special case so we have to change it while we know where the included file is. */ QRegExp callToInclude("include\\s*\\(\\s*([^()\\s]+)\\s*\\)"); int i = 0; while ( (i = callToInclude.indexIn(t, i)) != -1 ) { bool doneWithVar = false; QString fileName = callToInclude.cap(1); QString after = fileName.replace("$$PWD", QDir::currentPath()); if (!tagMap.isEmpty() && after.contains("$$")) { QRegExp var( "\\$\\$[({]?([a-zA-Z0-9_]+)[)}]?" ); int ii = 0; while ((ii = after.indexOf(var, ii)) != -1) { if (tagMap.contains(var.cap(1))) { after.replace(ii, var.cap(0).length(), tagMap[var.cap(1)]); } else { // Couldn't find it doneWithVar = true; break; } } } if (doneWithVar || !after.contains("$$")) { after = loadFile(after); QFileInfo fi(callToInclude.cap(1)); after.replace("$$PWD", fi.path()); t.replace( i, callToInclude.matchedLength(), after ); } i += after.length(); } /* Strip comments, merge lines ending with backslash, add spaces around '=' and '+=', replace '\n' with ';', and simplify white spaces. */ t.replace( QRegExp(QString("#[^\n]*\n")), QString(" ") ); t.replace( QRegExp(QString("\\\\[^\n\\S]*\n")), QString(" ") ); t.replace( "=", QString(" = ") ); t.replace( "+ =", QString(" += ") ); t.replace( "\n", QString(";") ); t.replace( "\r", QString("") ); // remove carriage return t = t.simplified(); /* Populate tagMap with 'key = value' entries. */ QStringList lines = t.split(';', QString::SkipEmptyParts); QStringList::Iterator line; for ( line = lines.begin(); line != lines.end(); ++line ) { QStringList toks = (*line).split(' ', QString::SkipEmptyParts); if ( toks.count() >= 3 && (toks[1] == QString("=") || toks[1] == QString("+=") || toks[1] == QString("*=")) ) { QString tag = toks.first(); int k = tag.lastIndexOf( QChar(':') ); // as in 'unix:' if ( k != -1 ) tag = tag.mid( k + 1 ); toks.erase( toks.begin() ); QString action = toks.first(); toks.erase( toks.begin() ); if ( tagMap.contains(tag) ) { if ( action == QString("=") ) tagMap.insert( tag, toks.join(" ") ); else tagMap[tag] += QChar( ' ' ) + toks.join( " " ); } else { tagMap[tag] = toks.join( " " ); } } } /* Expand $$variables within the 'value' part of a 'key = value' pair. */ QRegExp var( "\\$\\$[({]?([a-zA-Z0-9_]+)[)}]?" ); QMap::Iterator it; for ( it = tagMap.begin(); it != tagMap.end(); ++it ) { int i = 0; while ( (i = var.indexIn((*it), i)) != -1 ) { int len = var.matchedLength(); QString invocation = var.cap(1); QString after; if ( invocation == "system" ) { // skip system(); it will be handled in the next pass ++i; } else { if ( tagMap.contains(invocation) ) after = tagMap[invocation]; else if (invocation.toLower() == "pwd") after = QDir::currentPath(); (*it).replace( i, len, after ); i += after.length(); } } } /* Execute system() calls. */ QRegExp callToSystem( "\\$\\$system\\s*\\(([^()]*)\\)" ); for ( it = tagMap.begin(); it != tagMap.end(); ++it ) { int i = 0; while ( (i = callToSystem.indexIn((*it), i)) != -1 ) { /* This code is stolen from qmake's project.cpp file. Ideally we would use the same parser, so we wouldn't have this code duplication. */ QString after; char buff[256]; FILE *proc = QT_POPEN( callToSystem.cap(1).toLatin1().constData(), "r" ); while ( proc && !feof(proc) ) { int read_in = int(fread( buff, 1, 255, proc )); if ( !read_in ) break; for ( int i = 0; i < read_in; i++ ) { if ( buff[i] == '\n' || buff[i] == '\t' ) buff[i] = ' '; } buff[read_in] = '\0'; after += buff; } (*it).replace( i, callToSystem.matchedLength(), after ); i += after.length(); } } stillProcess = callToInclude.indexIn(t) != -1; } return tagMap; } PyQt5_gpl-5.10.1/qpy/pylupdate/proparser.h0000644000076500000240000000411413245233150020505 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef PROPARSER_H #define PROPARSER_H #include #include QMap proFileTagMap( const QString& text ); #endif PyQt5_gpl-5.10.1/qpy/pylupdate/pylupdate.h0000644000076500000240000000273113245233150020502 0ustar philstaff00000000000000// This defines the API exposed by the Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #if !defined(_PYLUPDATE_H) #define _PYLUPDATE_H #include "metatranslator.h" #include "proparser.h" void fetchtr_py(const char *fileName, MetaTranslator *tor, const char *defaultContext, bool mustExist, const char *codecForSource, const char *tr_func, const char *translate_func); void fetchtr_ui(const char *fileName, MetaTranslator *tor, const char *defaultContext, bool mustExist); void merge(const MetaTranslator *tor, const MetaTranslator *virginTor, MetaTranslator *out, bool noObsolete, bool verbose, const QString &filename); #endif PyQt5_gpl-5.10.1/qpy/pylupdate/sametexth.cpp0000644000076500000240000000756313245233150021040 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "metatranslator.h" #include #include typedef QMap TMM; typedef QList TML; /* Augments a MetaTranslator with trivially derived translations. For example, if "Enabled:" is consistendly translated as "Eingeschaltet:" no matter the context or the comment, "Eingeschaltet:" is added as the translation of any untranslated "Enabled:" text and is marked Unfinished. Returns the number of additional messages that this heuristic translated. */ int applySameTextHeuristic( MetaTranslator *tor ) { TMM translated; TMM avoid; TMM::Iterator t; TML untranslated; TML::Iterator u; TML all = tor->messages(); TML::Iterator it; int inserted = 0; for ( it = all.begin(); it != all.end(); ++it ) { if ( (*it).type() == MetaTranslatorMessage::Unfinished ) { if ( !(*it).isTranslated() ) untranslated.append( *it ); } else { QByteArray key = (*it).sourceText(); t = translated.find( key ); if ( t != translated.end() ) { /* The same source text is translated at least two different ways. Do nothing then. */ if ( (*t).translations() != (*it).translations() ) { translated.remove( key ); avoid.insert( key, *it ); } } else if ( !avoid.contains(key) && (*it).isTranslated() ) { translated.insert( key, *it ); } } } for ( u = untranslated.begin(); u != untranslated.end(); ++u ) { QByteArray key = (*u).sourceText(); t = translated.find( key ); if ( t != translated.end() ) { MetaTranslatorMessage m( *u ); m.setTranslations( (*t).translations() ); tor->insert( m ); inserted++; } } return inserted; } PyQt5_gpl-5.10.1/qpy/pylupdate/simtexth.cpp0000644000076500000240000002361513245233150020677 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "simtexth.h" #include "metatranslator.h" #include #include #include typedef QList TML; /* How similar are two texts? The approach used here relies on co-occurrence matrices and is very efficient. Let's see with an example: how similar are "here" and "hither"? The co-occurrence matrix M for "here" is M[h,e] = 1, M[e,r] = 1, M[r,e] = 1, and 0 elsewhere; the matrix N for "hither" is N[h,i] = 1, N[i,t] = 1, ..., N[h,e] = 1, N[e,r] = 1, and 0 elsewhere. The union U of both matrices is the matrix U[i,j] = max { M[i,j], N[i,j] }, and the intersection V is V[i,j] = min { M[i,j], N[i,j] }. The score for a pair of texts is score = (sum of V[i,j] over all i, j) / (sum of U[i,j] over all i, j), a formula suggested by Arnt Gulbrandsen. Here we have score = 2 / 6, or one third. The implementation differs from this in a few details. Most importantly, repetitions are ignored; for input "xxx", M[x,x] equals 1, not 2. */ /* Every character is assigned to one of 20 buckets so that the co-occurrence matrix requires only 20 * 20 = 400 bits, not 256 * 256 = 65536 bits or even more if we want the whole Unicode. Which character falls in which bucket is arbitrary. The second half of the table is a replica of the first half, because of laziness. */ static const int indexOf[256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ! " # $ % & ' ( ) * + , - . / 0, 2, 6, 7, 10, 12, 15, 19, 2, 6, 7, 10, 12, 15, 19, 0, // 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 1, 3, 4, 5, 8, 9, 11, 13, 14, 16, 2, 6, 7, 10, 12, 15, // @ A B C D E F G H I J K L M N O 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 10, 11, 12, 13, 14, // P Q R S T U V W X Y Z [ \ ] ^ _ 15, 12, 16, 17, 18, 19, 2, 10, 15, 7, 19, 2, 6, 7, 10, 0, // ` a b c d e f g h i j k l m n o 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 10, 11, 12, 13, 14, // p q r s t u v w x y z { | } ~ 15, 12, 16, 17, 18, 19, 2, 10, 15, 7, 19, 2, 6, 7, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 7, 10, 12, 15, 19, 2, 6, 7, 10, 12, 15, 19, 0, 1, 3, 4, 5, 8, 9, 11, 13, 14, 16, 2, 6, 7, 10, 12, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 10, 11, 12, 13, 14, 15, 12, 16, 17, 18, 19, 2, 10, 15, 7, 19, 2, 6, 7, 10, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 10, 11, 12, 13, 14, 15, 12, 16, 17, 18, 19, 2, 10, 15, 7, 19, 2, 6, 7, 10, 0 }; /* The entry bitCount[i] (for i between 0 and 255) is the number of bits used to represent i in binary. */ static const int bitCount[256] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8 }; struct CoMatrix { /* The matrix has 20 * 20 = 400 entries. This requires 50 bytes, or 13 words. Some operations are performed on words for more efficiency. */ union { quint8 b[52]; quint32 w[13]; }; CoMatrix() { memset( b, 0, 52 ); } CoMatrix( const char *text ) { char c = '\0', d; memset( b, 0, 52 ); /* The Knuth books are not in the office only for show; they help make loops 30% faster and 20% as readable. */ while ( (d = *text) != '\0' ) { setCoocc( c, d ); if ( (c = *++text) != '\0' ) { setCoocc( d, c ); text++; } } } void setCoocc( char c, char d ) { int k = indexOf[(uchar) c] + 20 * indexOf[(uchar) d]; b[k >> 3] |= k & 0x7; } int worth() const { int w = 0; for ( int i = 0; i < 50; i++ ) w += bitCount[b[i]]; return w; } }; static inline CoMatrix reunion( const CoMatrix& m, const CoMatrix& n ) { CoMatrix p; for ( int i = 0; i < 13; i++ ) p.w[i] = m.w[i] | n.w[i]; return p; } static inline CoMatrix intersection( const CoMatrix& m, const CoMatrix& n ) { CoMatrix p; for ( int i = 0; i < 13; i++ ) p.w[i] = m.w[i] & n.w[i]; return p; } StringSimilarityMatcher::StringSimilarityMatcher(const QString &stringToMatch) { m_cm = new CoMatrix( stringToMatch.toLatin1().constData() ); m_length = stringToMatch.length(); } int StringSimilarityMatcher::getSimilarityScore(const QString &strCandidate) { CoMatrix cmTarget( strCandidate.toLatin1().constData() ); int targetLen = strCandidate.length(); int delta = qAbs( m_length - targetLen ); int score = ( (intersection(*m_cm, cmTarget).worth() + 1) << 10 ) / ( reunion(*m_cm, cmTarget).worth() + (delta << 1) + 1 ); return score; } StringSimilarityMatcher::~StringSimilarityMatcher() { delete m_cm; } /** * Checks how similar two strings are. * The return value is the score, and a higher score is more similar than one with a low score. * Linguist considers a score over 190 to be a good match. * \sa StringSimilarityMatcher */ int getSimilarityScore(const QString &str1, const char* str2) { CoMatrix cmTarget( str2 ); int targetLen = qstrlen( str2 ); CoMatrix cm( str1.toLatin1().constData() ); int delta = qAbs( (int) str1.length() - targetLen ); int score = ( (intersection(cm, cmTarget).worth() + 1) << 10 ) / ( reunion(cm, cmTarget).worth() + (delta << 1) + 1 ); return score; } CandidateList similarTextHeuristicCandidates( const MetaTranslator *tor, const char *text, int maxCandidates ) { QList scores; CandidateList candidates; TML all = tor->translatedMessages(); foreach ( MetaTranslatorMessage mtm, all ) { if ( mtm.type() == MetaTranslatorMessage::Unfinished || mtm.translation().isEmpty() ) continue; QString s = tor->toUnicode( mtm.sourceText(), mtm.utf8() ); int score = getSimilarityScore(s, text); if ( (int) candidates.count() == maxCandidates && score > scores[maxCandidates - 1] ) candidates.removeAt( candidates.size()-1 ); if ( (int) candidates.count() < maxCandidates && score >= textSimilarityThreshold ) { Candidate cand( s, mtm.translation() ); int i; for ( i = 0; i < (int) candidates.size(); i++ ) { if ( score >= scores.at(i) ) { if ( score == scores.at(i) ) { if ( candidates.at(i) == cand ) goto continue_outer_loop; } else { break; } } } scores.insert( i, score ); candidates.insert( i, cand ); } continue_outer_loop: ; } return candidates; } PyQt5_gpl-5.10.1/qpy/pylupdate/simtexth.h0000644000076500000240000000641113245233150020337 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef SIMTEXTH_H #define SIMTEXTH_H const int textSimilarityThreshold = 190; #include #include class MetaTranslator; struct Candidate { QString source; QString target; Candidate() { } Candidate( const QString& source0, const QString& target0 ) : source( source0 ), target( target0 ) { } }; inline bool operator==( const Candidate& c, const Candidate& d ) { return c.target == d.target && c.source == d.source; } inline bool operator!=( const Candidate& c, const Candidate& d ) { return !operator==( c, d ); } typedef QList CandidateList; struct CoMatrix; /** * This class is more efficient for searching through a large array of candidate strings, since we only * have to construct the CoMatrix for the \a stringToMatch once, * after that we just call getSimilarityScore(strCandidate). * \sa getSimilarityScore */ class StringSimilarityMatcher { public: StringSimilarityMatcher(const QString &stringToMatch); ~StringSimilarityMatcher(); int getSimilarityScore(const QString &strCandidate); private: CoMatrix *m_cm; int m_length; }; int getSimilarityScore(const QString &str1, const char* str2); CandidateList similarTextHeuristicCandidates( const MetaTranslator *tor, const char *text, int maxCandidates ); #endif PyQt5_gpl-5.10.1/qpy/pylupdate/translator.cpp0000644000076500000240000010667313245233150021231 0ustar philstaff00000000000000/********************************************************************** ** Copyright (C) 2002-2007 Detlev Offenbach ** ** This is a modified version of lupdate. The original is part of Qt-Linguist. ** The copyright of the original file can be found below. ** ** This version is modified to handle python sources. ** ** The file is provided AS IS with NO WARRANTY OF ANY KIND, ** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE. ****************************************************************************/ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "translator.h" #ifndef QT_NO_TRANSLATION #include "qfileinfo.h" #include "qstring.h" #include "qcoreapplication.h" #include "qdatastream.h" #include "qfile.h" #include "qmap.h" #include "qalgorithms.h" #include "qhash.h" #include "qglobal.h" // most of the headers below are already included in qplatformdefs.h // also this lacks Large File support but that's probably irrelevant #if defined(QT_USE_MMAP) // for mmap #include #include #endif #include /* $ mcookie 3cb86418caef9c95cd211cbf60a1bddd $ */ // magic number for the file static const int MagicLength = 16; static const uchar magic[MagicLength] = { 0x3c, 0xb8, 0x64, 0x18, 0xca, 0xef, 0x9c, 0x95, 0xcd, 0x21, 0x1c, 0xbf, 0x60, 0xa1, 0xbd, 0xdd }; static uint elfHash(const char * name) { const uchar *k; uint h = 0; uint g; if (name) { k = (const uchar *) name; while (*k) { h = (h << 4) + *k++; if ((g = (h & 0xf0000000)) != 0) h ^= g >> 24; h &= ~g; } } if (!h) h = 1; return h; } extern bool qt_detectRTLLanguage(); class TranslatorPrivate { public: struct Offset { Offset() : h(0), o(0) { } Offset(const TranslatorMessage& m, int offset) : h(m.hash()), o(offset) { } bool operator<(const Offset &other) const { return (h != other.h) ? h < other.h : o < other.o; } bool operator==(const Offset &other) const { return h == other.h && o == other.o; } uint h; uint o; }; enum { Contexts = 0x2f, Hashes = 0x42, Messages = 0x69 }; TranslatorPrivate(Translator *qq) : q(qq), unmapPointer(0), unmapLength(0) {} // Translator must finalize this before deallocating it Translator *q; // for mmap'ed files, this is what needs to be unmapped. char *unmapPointer; unsigned int unmapLength; // for squeezed but non-file data, this is what needs to be deleted QByteArray messageArray; QByteArray offsetArray; QByteArray contextArray; #ifndef QT_NO_TRANSLATION_BUILDER QMap messages; #endif bool do_load(const uchar *data, int len); }; /*! \class Translator \brief The Translator class provides internationalization support for text output. \ingroup i18n \ingroup environment \mainclass An object of this class contains a set of TranslatorMessage objects, each of which specifies a translation from a source language to a target language. Translator provides functions to look up translations, add new ones, remove them, load and save them, etc. The most common use of Translator is to: load a translator file created with \l{Qt Linguist Manual}, install it using QCoreApplication::installTranslator(), and use it via QObject::tr(). For example: \code int main(int argc, char ** argv) { QCoreApplication app(argc, argv); Translator translator(0); translator.load("french.qm", "."); app.installTranslator(&translator); MyWidget m; app.setMainWidget(&m); m.show(); return app.exec(); } \endcode Note that the translator must be created \e before the application's main window. Most applications will never need to do anything else with this class. The other functions provided by this class are useful for applications that work on translator files. We call a translation a "messsage". For this reason, translation files are sometimes referred to as "message files". It is possible to lookup a translation using findMessage() (as tr() and QCoreApplication::translate() do) and contains(), to insert a new translation messsage using insert(), and to remove one using remove(). Translation tools often need more information than the bare source text and translation, for example, context information to help the translator. But end-user programs that are using translations usually only need lookup. To cater for these different needs, Translator can use stripped translator files that use the minimum of memory and which support little more functionality than findMessage(). Thus, load() may not load enough information to make anything more than findMessage() work. save() has an argument indicating whether to save just this minimum of information or to save everything. "Everything" means that for each translation item the following information is kept: \list \i The \e {translated text} - the return value from tr(). \i The input key: \list \i The \e {source text} - usually the argument to tr(). \i The \e context - usually the class name for the tr() caller. \i The \e comment - a comment that helps disambiguate different uses of the same text in the same context. \endlist \endlist The minimum for each item is just the information necessary for findMessage() to return the right text. This may include the source, context and comment, but usually it is just a hash value and the translated text. For example, the "Cancel" in a dialog might have "Anuluj" when the program runs in Polish (in this case the source text would be "Cancel"). The context would (normally) be the dialog's class name; there would normally be no comment, and the translated text would be "Anuluj". But it's not always so simple. The Spanish version of a printer dialog with settings for two-sided printing and binding would probably require both "Activado" and "Activada" as translations for "Enabled". In this case the source text would be "Enabled" in both cases, and the context would be the dialog's class name, but the two items would have disambiguating comments such as "two-sided printing" for one and "binding" for the other. The comment enables the translator to choose the appropriate gender for the Spanish version, and enables Qt to distinguish between translations. Note that when Translator loads a stripped file, most functions do not work. The functions that do work with stripped files are explicitly documented as such. \sa TranslatorMessage QCoreApplication::installTranslator() QCoreApplication::removeTranslator() QObject::tr() QCoreApplication::translate() */ /*! \enum Translator::SaveMode This enum type defines how Translator writes translation files. There are two modes: \value Everything files are saved with all available information \value Stripped files are saved with just enough information for end-user applications Note that when Translator loads a stripped file, most functions do not work. The functions that do work with stripped files are explicitly documented as such. */ /*! Constructs an empty message file object with parent \a parent that is not connected to any file. */ Translator::Translator(QObject * parent) : QTranslator(parent) { d = new TranslatorPrivate(this); } /*! Destroys the object and frees any allocated resources. */ Translator::~Translator() { if (QCoreApplication::instance()) QCoreApplication::instance()->removeTranslator(this); clear(); delete d; } /*! Loads \a filename + \a suffix (".qm" if the \a suffix is not specified), which may be an absolute file name or relative to \a directory. The previous contents of this translator object is discarded. If the file name does not exist, other file names are tried in the following order: \list 1 \i File name without \a suffix appended. \i File name with text after a character in \a search_delimiters stripped ("_." is the default for \a search_delimiters if it is an empty string) and \a suffix. \i File name stripped without \a suffix appended. \i File name stripped further, etc. \endlist For example, an application running in the fr_CA locale (French-speaking Canada) might call load("foo.fr_ca", "/opt/foolib"). load() would then try to open the first existing readable file from this list: \list 1 \i /opt/foolib/foo.fr_ca.qm \i /opt/foolib/foo.fr_ca \i /opt/foolib/foo.fr.qm \i /opt/foolib/foo.fr \i /opt/foolib/foo.qm \i /opt/foolib/foo \endlist \sa save() */ bool Translator::load(const QString & filename, const QString & directory, const QString & search_delimiters, const QString & suffix) { clear(); QString prefix; if (filename[0] == QLatin1Char('/') #ifdef Q_WS_WIN || (filename[0].isLetter() && filename[1] == QLatin1Char(':')) || filename[0] == QLatin1Char('\\') #endif ) prefix = QLatin1String(""); else prefix = directory; if (prefix.length()) { if (prefix[int(prefix.length()-1)] != QLatin1Char('/')) prefix += QLatin1Char('/'); } QString fname = filename; QString realname; QString delims; delims = search_delimiters.isNull() ? QString::fromLatin1("_.") : search_delimiters; for (;;) { QFileInfo fi; realname = prefix + fname + (suffix.isNull() ? QString::fromLatin1(".qm") : suffix); fi.setFile(realname); if (fi.isReadable()) break; realname = prefix + fname; fi.setFile(realname); if (fi.isReadable()) break; int rightmost = 0; for (int i = 0; i < (int)delims.length(); i++) { int k = fname.lastIndexOf(delims[i]); if (k > rightmost) rightmost = k; } // no truncations? fail if (rightmost == 0) return false; fname.truncate(rightmost); } // realname is now the fully qualified name of a readable file. bool ok = false; #ifdef QT_USE_MMAP #ifndef MAP_FILE #define MAP_FILE 0 #endif #ifndef MAP_FAILED #define MAP_FAILED -1 #endif int fd = -1; if (!realname.startsWith(QLatin1String(":"))) fd = QT_OPEN(QFile::encodeName(realname), O_RDONLY, #if defined(Q_OS_WIN) _S_IREAD | _S_IWRITE #else 0666 #endif ); if (fd >= 0) { struct stat st; if (!fstat(fd, &st)) { char *ptr; ptr = reinterpret_cast( mmap(0, st.st_size, // any address, whole file PROT_READ, // read-only memory MAP_FILE | MAP_PRIVATE, // swap-backed map from file fd, 0)); // from offset 0 of fd if (ptr && ptr != reinterpret_cast(MAP_FAILED)) { d->unmapPointer = ptr; d->unmapLength = st.st_size; ok = true; } } ::close(fd); } #endif // QT_USE_MMAP if (!ok) { QFile file(realname); if (!file.exists()) return false; d->unmapLength = file.size(); d->unmapPointer = new char[d->unmapLength]; if (file.open(QIODevice::ReadOnly)) ok = (d->unmapLength == (uint)file.read(d->unmapPointer, d->unmapLength)); if (!ok) { delete [] d->unmapPointer; d->unmapPointer = 0; d->unmapLength = 0; return false; } } return d->do_load(reinterpret_cast(d->unmapPointer), d->unmapLength); } /*! \overload \fn bool Translator::load(const uchar *data, int len) Loads the .qm file data \a data of length \a len into the translator. The data is not copied. The caller must be able to guarantee that \a data will not be deleted or modified. */ bool Translator::load(const uchar *data, int len) { clear(); return d->do_load(data, len); } bool TranslatorPrivate::do_load(const uchar *data, int len) { if (len < MagicLength || memcmp(data, magic, MagicLength) != 0) { q->clear(); return false; } QByteArray array = QByteArray::fromRawData((const char *) data, len); QDataStream s(&array, QIODevice::ReadOnly); bool ok = true; s.device()->seek(MagicLength); quint8 tag = 0; quint32 blockLen = 0; s >> tag >> blockLen; while (tag && blockLen) { if ((quint32) s.device()->pos() + blockLen > (quint32) len) { ok = false; break; } if (tag == TranslatorPrivate::Contexts) { contextArray = QByteArray(array.constData() + s.device()->pos(), blockLen); } else if (tag == TranslatorPrivate::Hashes) { offsetArray = QByteArray(array.constData() + s.device()->pos(), blockLen); } else if (tag == TranslatorPrivate::Messages) { messageArray = QByteArray(array.constData() + s.device()->pos(), blockLen); } if (!s.device()->seek(s.device()->pos() + blockLen)) { ok = false; break; } tag = 0; blockLen = 0; if (!s.atEnd()) s >> tag >> blockLen; } return ok; } #ifndef QT_NO_TRANSLATION_BUILDER /*! Saves this message file to \a filename, overwriting the previous contents of \a filename. If \a mode is \c Everything (the default), all the information is preserved. If \a mode is \c Stripped, any information that is not necessary for findMessage() is stripped away. \sa load() */ bool Translator::save(const QString & filename, SaveMode mode) { QFile file(filename); if (file.open(QIODevice::WriteOnly)) { squeeze(mode); QDataStream s(&file); s.writeRawData((const char *)magic, MagicLength); quint8 tag; if (!d->offsetArray.isEmpty()) { tag = (quint8)TranslatorPrivate::Hashes; quint32 oas = (quint32)d->offsetArray.size(); s << tag << oas; s.writeRawData(d->offsetArray, oas); } if (!d->messageArray.isEmpty()) { tag = (quint8)TranslatorPrivate::Messages; quint32 mas = (quint32)d->messageArray.size(); s << tag << mas; s.writeRawData(d->messageArray, mas); } if (!d->contextArray.isEmpty()) { tag = (quint8)TranslatorPrivate::Contexts; quint32 cas = (quint32)d->contextArray.size(); s << tag << cas; s.writeRawData(d->contextArray, cas); } return true; } return false; } #endif /*! Empties this translator of all contents. This function works with stripped translator files. */ void Translator::clear() { if (d->unmapPointer && d->unmapLength) { #if defined(QT_USE_MMAP) munmap(d->unmapPointer, d->unmapLength); #else delete [] d->unmapPointer; #endif d->unmapPointer = 0; d->unmapLength = 0; } d->messageArray.clear(); d->offsetArray.clear(); d->contextArray.clear(); #ifndef QT_NO_TRANSLATION_BUILDER d->messages.clear(); #endif QEvent ev(QEvent::LanguageChange); QCoreApplication::sendEvent(QCoreApplication::instance(), &ev); } #ifndef QT_NO_TRANSLATION_BUILDER /*! Converts this message file to the compact format used to store message files on disk. You should never need to call this directly; save() and other functions call it as necessary. \a mode is for internal use. \sa save() unsqueeze() */ void Translator::squeeze(SaveMode mode) { if (d->messages.isEmpty()) { if (mode == Stripped) unsqueeze(); else return; } QMap messages = d->messages; clear(); QMap offsets; QDataStream ms(&d->messageArray, QIODevice::WriteOnly); QMap::const_iterator it, next; int cpPrev = 0, cpNext = 0; for (it = messages.constBegin(); it != messages.constEnd(); ++it) { cpPrev = cpNext; next = it; ++next; if (next == messages.constEnd()) cpNext = 0; else cpNext = (int) it.key().commonPrefix(next.key()); offsets.insert(TranslatorPrivate::Offset(it.key(), ms.device()->pos()), (void *)0); it.key().write(ms, mode == Stripped, (TranslatorMessage::Prefix)qMax(cpPrev, cpNext + 1)); } QMap::Iterator offset; offset = offsets.begin(); QDataStream ds(&d->offsetArray, QIODevice::WriteOnly); while (offset != offsets.end()) { TranslatorPrivate::Offset k = offset.key(); ++offset; ds << (quint32)k.h << (quint32)k.o; } if (mode == Stripped) { QMap contextSet; for (it = messages.constBegin(); it != messages.constEnd(); ++it) ++contextSet[it.key().context()]; quint16 hTableSize; if (contextSet.size() < 200) hTableSize = (contextSet.size() < 60) ? 151 : 503; else if (contextSet.size() < 2500) hTableSize = (contextSet.size() < 750) ? 1511 : 5003; else hTableSize = (contextSet.size() < 10000) ? 15013 : 3 * contextSet.size() / 2; QMultiMap hashMap; QMap::const_iterator c; for (c = contextSet.constBegin(); c != contextSet.constEnd(); ++c) hashMap.insert(elfHash(c.key()) % hTableSize, c.key()); /* The contexts found in this translator are stored in a hash table to provide fast lookup. The context array has the following format: quint16 hTableSize; quint16 hTable[hTableSize]; quint8 contextPool[...]; The context pool stores the contexts as Pascal strings: quint8 len; quint8 data[len]; Let's consider the look-up of context "FunnyDialog". A hash value between 0 and hTableSize - 1 is computed, say h. If hTable[h] is 0, "FunnyDialog" is not covered by this translator. Else, we check in the contextPool at offset 2 * hTable[h] to see if "FunnyDialog" is one of the contexts stored there, until we find it or we meet the empty string. */ d->contextArray.resize(2 + (hTableSize << 1)); QDataStream t(&d->contextArray, QIODevice::WriteOnly); quint16 *hTable = new quint16[hTableSize]; memset(hTable, 0, hTableSize * sizeof(quint16)); t << hTableSize; t.device()->seek(2 + (hTableSize << 1)); t << (quint16)0; // the entry at offset 0 cannot be used uint upto = 2; QMap::const_iterator entry = hashMap.constBegin(); while (entry != hashMap.constEnd()) { int i = entry.key(); hTable[i] = (quint16)(upto >> 1); do { const char *con = entry.value(); uint len = (uint)qstrlen(con); len = qMin(len, 255u); t << (quint8)len; t.writeRawData(con, len); upto += 1 + len; ++entry; } while (entry != hashMap.constEnd() && entry.key() == i); do { t << (quint8) 0; // empty string ++upto; } while ((upto & 0x1) != 0); // offsets have to be even } t.device()->seek(2); for (int j = 0; j < hTableSize; j++) t << hTable[j]; delete [] hTable; if (upto > 131072) { qWarning("Translator::squeeze: Too many contexts"); d->contextArray.clear(); } } } /*! Converts this message file into an easily modifiable data structure, less compact than the format used in the files. You should never need to call this function; it is called by insert() and friends as necessary. \sa squeeze() */ void Translator::unsqueeze() { if (!d->messages.isEmpty() || d->messageArray.isEmpty()) return; qFatal("Cannot unsqueeze (bug in Linguist?)"); } /*! Returns true if this message file contains a message with the key (\a context, \a sourceText, \a comment); otherwise returns false. This function works with stripped translator files. (This is is a one-liner that calls findMessage().) */ bool Translator::contains(const char* context, const char* sourceText, const char* comment) const { return !findMessage(context, sourceText, comment).translation().isNull(); } bool Translator::contains(const char *context, const char *comment, const QString &fileName, int lineNumber) const { return !findMessage(context, 0, comment, fileName, lineNumber).isNull(); } /*! Inserts \a message into this message file. This function does \e not work with stripped translator files. It may appear to, but that is not dependable. \sa remove() */ void Translator::insert(const TranslatorMessage& message) { unsqueeze(); d->messages.remove(message); // safer d->messages.insert(message, (void *) 0); } /*! \fn void Translator::insert(const char *context, const char *sourceText, const QString &translation) \overload \obsolete Inserts the \a sourceText and \a translation into the translator with the given \a context. */ /*! Removes \a message from this translator. This function works with stripped translator files. \sa insert() */ void Translator::remove(const TranslatorMessage& message) { unsqueeze(); d->messages.remove(message); } /*! \fn void Translator::remove(const char *, const char *) \overload \obsolete Removes the translation associated to the key (\a context, \a sourceText, "") from this translator. */ #endif /*! Returns the TranslatorMessage for the key (\a context, \a sourceText, \a comment). If none is found, also tries (\a context, \a sourceText, ""). */ TranslatorMessage Translator::findMessage(const char *context, const char *sourceText, const char *comment, const QString &fileName, int lineNumber) const { if (context == 0) context = ""; if (sourceText == 0) sourceText = ""; if (comment == 0) comment = ""; QString myFilename = fileName; int myLineNumber = lineNumber; if (!d->messages.isEmpty()) { QMap::const_iterator it; // Either we want to find an item that matches context, sourcetext (and optionally comment) // Or we want to find an item that matches context, filename, linenumber (and optionally comment) it = d->messages.find(TranslatorMessage(context, sourceText, comment, myFilename, myLineNumber)); if (it != d->messages.constEnd()) return it.key(); if (comment[0]) { it = d->messages.find(TranslatorMessage(context, sourceText, "", myFilename, myLineNumber)); if (it != d->messages.constEnd()) return it.key(); } it = d->messages.find(TranslatorMessage(context, "", comment, myFilename, myLineNumber)); if (it != d->messages.constEnd()) return it.key(); if (comment[0]) { it = d->messages.find(TranslatorMessage(context, "", "", myFilename, myLineNumber)); if (it != d->messages.constEnd()) return it.key(); } return TranslatorMessage(); } return TranslatorMessage(); } /*! Returns true if this translator is empty, otherwise returns false. This function works with stripped and unstripped translation files. */ bool Translator::isEmpty() const { return !d->unmapPointer && !d->unmapLength && d->messageArray.isEmpty() && d->offsetArray.isEmpty() && d->contextArray.isEmpty() && d->messages.isEmpty(); } #ifndef QT_NO_TRANSLATION_BUILDER /*! Returns a list of the messages in the translator. This function is rather slow. Because it is seldom called, it's optimized for simplicity and small size, rather than speed. If you want to iterate over the list, you should iterate over a copy, e.g. \code QList list = myTranslator.messages(); QList::Iterator it = list.begin(); while (it != list.end()) { process_message(*it); ++it; } \endcode */ QList Translator::messages() const { ((Translator *) this)->unsqueeze(); return d->messages.keys(); } #endif /*! \class TranslatorMessage \brief The TranslatorMessage class contains a translator message and its properties. \ingroup i18n \ingroup environment This class is of no interest to most applications. It is useful for translation tools such as \l{Qt Linguist Manual}{Qt Linguist}. It is provided simply to make the API complete and regular. For a Translator object, a lookup key is a triple (\e context, \e {source text}, \e comment) that uniquely identifies a message. An extended key is a quadruple (\e hash, \e context, \e {source text}, \e comment), where \e hash is computed from the source text and the comment. Unless you plan to read and write messages yourself, you need not worry about the hash value. TranslatorMessage stores this triple or quadruple and the relevant translation if there is any. \sa Translator */ /*! Constructs a translator message with the extended key (0, 0, 0, 0) and an empty string as translation. */ TranslatorMessage::TranslatorMessage() : h(0), m_fileName(), m_lineNumber(-1) { } /*! Constructs an translator message with the extended key (\e h, \a context, \a sourceText, \a comment), where \e h is computed from \a sourceText and \a comment, and possibly with a \a translation. */ TranslatorMessage::TranslatorMessage(const char * context, const char * sourceText, const char * comment, const QString &fileName, int lineNumber, const QStringList& translations) : cx(context), st(sourceText), cm(comment), m_translations(translations), m_fileName(fileName), m_lineNumber(lineNumber) { // 0 means we don't know, "" means empty if (cx == (const char*)0) cx = ""; if (st == (const char*)0) st = ""; if (cm == (const char*)0) cm = ""; h = elfHash(st + cm); } /*! Constructs a copy of translator message \a m. */ TranslatorMessage::TranslatorMessage(const TranslatorMessage & m) : cx(m.cx), st(m.st), cm(m.cm), m_translations(m.m_translations), m_fileName(m.m_fileName), m_lineNumber(m.m_lineNumber) { h = m.h; } /*! Assigns message \a m to this translator message and returns a reference to this translator message. */ TranslatorMessage & TranslatorMessage::operator=( const TranslatorMessage & m) { h = m.h; cx = m.cx; st = m.st; cm = m.cm; m_translations = m.m_translations; m_fileName = m.m_fileName; m_lineNumber = m.m_lineNumber; return *this; } /*! \fn uint TranslatorMessage::hash() const Returns the hash value used internally to represent the lookup key. This value is zero only if this translator message was constructed from a stream containing invalid data. The hashing function is unspecified, but it will remain unchanged in future versions of Qt. */ /*! \fn const char *TranslatorMessage::context() const Returns the context for this message (e.g. "MyDialog"). */ /*! \fn const char *TranslatorMessage::sourceText() const Returns the source text of this message (e.g. "&Save"). */ /*! \fn const char *TranslatorMessage::comment() const Returns the comment for this message (e.g. "File|Save"). */ /*! \fn void TranslatorMessage::setTranslation(const QString & translation) Sets the translation of the source text to \a translation. \sa translation() */ /*! \fn QString TranslatorMessage::translation() const Returns the translation of the source text (e.g., "&Sauvegarder"). \sa setTranslation() */ /*! \enum TranslatorMessage::Prefix Let (\e h, \e c, \e s, \e m) be the extended key. The possible prefixes are \value NoPrefix no prefix \value Hash only (\e h) \value HashContext only (\e h, \e c) \value HashContextSourceText only (\e h, \e c, \e s) \value HashContextSourceTextComment the whole extended key, (\e h, \e c, \e s, \e m) \sa write() commonPrefix() */ /*! Writes this translator message to the \a stream. If \a strip is false (the default), all the information in the message is written. If \a strip is true, only the part of the extended key specified by \a prefix is written with the translation (\c HashContextSourceTextComment by default). \sa commonPrefix() */ void TranslatorMessage::write(QDataStream & stream, bool strip, Prefix prefix) const { for (int i = 0; i < m_translations.count(); ++i) stream << quint8(Tag_Translation) << m_translations.at(i); if (!strip) prefix = HashContextSourceTextComment; switch (prefix) { case HashContextSourceTextComment: stream << quint8(Tag_Comment) << cm; // fall through case HashContextSourceText: stream << quint8(Tag_SourceText) << st; // fall through case HashContext: stream << quint8(Tag_Context) << cx; default: ; } stream << quint8(Tag_End); } /*! Returns the widest lookup prefix that is common to this translator message and to message \a m. For example, if the extended key is for this message is (71, "PrintDialog", "Yes", "Print?") and that for \a m is (71, "PrintDialog", "No", "Print?"), this function returns \c HashContext. \sa write() */ TranslatorMessage::Prefix TranslatorMessage::commonPrefix( const TranslatorMessage& m) const { if (h != m.h) return NoPrefix; if (cx != m.cx) return Hash; if (st != m.st) return HashContext; if (cm != m.cm) return HashContextSourceText; return HashContextSourceTextComment; } /*! Returns true if the extended key of this object is equal to that of \a m; otherwise returns false. */ bool TranslatorMessage::operator==(const TranslatorMessage& m) const { bool isHashEq = (h == m.h ? true : false); bool isContextEq = (cx == m.cx ? true : false); bool isSourceEq = (st == m.st ? true : false); bool isCommentEq = (cm == m.cm ? true : false); bool isLocationEq = m_lineNumber == m.m_lineNumber && m_fileName == m.m_fileName; return (isHashEq && isContextEq && isSourceEq && isCommentEq) || // translation can be different, but treat the equal (st.isEmpty() && isContextEq && isCommentEq && isLocationEq); } /*! \fn bool TranslatorMessage::operator!=(const TranslatorMessage& m) const Returns true if the extended key of this object is different from that of \a m; otherwise returns false. */ /*! Returns true if the extended key of this object is lexicographically before than that of \a m; otherwise returns false. */ bool TranslatorMessage::operator<(const TranslatorMessage& m) const { return h != m.h ? h < m.h : (cx != m.cx ? cx < m.cx : (st != m.st ? st < m.st : cm < m.cm)); } /*! \fn bool TranslatorMessage::operator<=(const TranslatorMessage& m) const Returns true if the extended key of this object is lexicographically before that of \a m or if they are equal; otherwise returns false. */ /*! \fn bool TranslatorMessage::operator>(const TranslatorMessage& m) const Returns true if the extended key of this object is lexicographically after that of \a m; otherwise returns false. */ /*! \fn bool TranslatorMessage::operator>=(const TranslatorMessage& m) const Returns true if the extended key of this object is lexicographically after that of \a m or if they are equal; otherwise returns false. */ /*! \fn QString Translator::find(const char *context, const char *sourceText, const char * comment) const Use findMessage() instead. */ bool getNumerusInfo(QLocale::Language language, QLocale::Country country, QStringList *forms) { forever { for (int i = 0; i < NumerusTableSize; ++i) { const NumerusTableEntry &entry = numerusTable[i]; for (int j = 0; entry.languages[j] != EOL; ++j) { if (entry.languages[j] == language && ((!entry.countries && country == QLocale::AnyCountry) || (entry.countries && entry.countries[j] == country))) { if (forms) { forms->clear(); for (int k = 0; entry.forms[k]; ++k) forms->append(QLatin1String(entry.forms[k])); } return true; } } } if (country == QLocale::AnyCountry) break; country = QLocale::AnyCountry; } return false; } #endif // QT_NO_TRANSLATION PyQt5_gpl-5.10.1/qpy/pylupdate/translator.h0000644000076500000240000003566213245233150020675 0ustar philstaff00000000000000/********************************************************************** ** Copyright (C) 2002-2007 Detlev Offenbach ** ** This is a modified version of lupdate. The original is part of Qt-Linguist. ** The copyright of the original file can be found below. ** ** This version is modified to handle python sources. ** ** The file is provided AS IS with NO WARRANTY OF ANY KIND, ** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE. ****************************************************************************/ /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef TRANSLATOR_H #define TRANSLATOR_H #include "QtCore/qobject.h" #include "QtCore/qbytearray.h" #include "QtCore/qstringlist.h" #include "QtCore/qlocale.h" #include class TranslatorPrivate; #if !defined(QT_BEGIN_NAMESPACE) #define QT_BEGIN_NAMESPACE #define QT_END_NAMESPACE #endif QT_BEGIN_NAMESPACE template class QList; QT_END_NAMESPACE class TranslatorMessage { public: TranslatorMessage(); TranslatorMessage(const char * context, const char * sourceText, const char * comment, const QString &fileName, int lineNumber, const QStringList& translations = QStringList()); TranslatorMessage(const TranslatorMessage & m); TranslatorMessage & operator=(const TranslatorMessage & m); uint hash() const { return h; } const char *context() const { return cx.isNull() ? 0 : cx.constData(); } const char *sourceText() const { return st.isNull() ? 0 : st.constData(); } const char *comment() const { return cm.isNull() ? 0 : cm.constData(); } inline void setTranslations(const QStringList &translations); QStringList translations() const { return m_translations; } void setTranslation(const QString &translation) { m_translations = QStringList(translation); } QString translation() const { return m_translations.value(0); } bool isTranslated() const { return m_translations.count() > 1 || !m_translations.value(0).isEmpty(); } enum Prefix { NoPrefix, Hash, HashContext, HashContextSourceText, HashContextSourceTextComment }; void write(QDataStream & s, bool strip = false, Prefix prefix = HashContextSourceTextComment) const; Prefix commonPrefix(const TranslatorMessage&) const; bool operator==(const TranslatorMessage& m) const; bool operator!=(const TranslatorMessage& m) const { return !operator==(m); } bool operator<(const TranslatorMessage& m) const; bool operator<=(const TranslatorMessage& m) const { return !m.operator<(*this); } bool operator>(const TranslatorMessage& m) const { return m.operator<(*this); } bool operator>=(const TranslatorMessage& m) const { return !operator<(m); } QString fileName(void) const { return m_fileName; } void setFileName(const QString &fileName) { m_fileName = fileName; } int lineNumber(void) const { return m_lineNumber; } void setLineNumber(int lineNumber) { m_lineNumber = lineNumber; } bool isNull() const { return st.isNull() && m_lineNumber == -1 && m_translations.isEmpty(); } private: uint h; QByteArray cx; QByteArray st; QByteArray cm; QStringList m_translations; QString m_fileName; int m_lineNumber; enum Tag { Tag_End = 1, Tag_SourceText16, Tag_Translation, Tag_Context16, Tag_Hash, Tag_SourceText, Tag_Context, Tag_Comment, Tag_Obsolete1 }; }; Q_DECLARE_TYPEINFO(TranslatorMessage, Q_MOVABLE_TYPE); inline void TranslatorMessage::setTranslations(const QStringList &translations) { m_translations = translations; } class Translator : public QTranslator { Q_OBJECT public: explicit Translator(QObject *parent = 0); ~Translator(); virtual TranslatorMessage findMessage(const char *context, const char *sourceText, const char *comment = 0, const QString &fileName = 0, int lineNumber = -1) const; virtual QString translate(const char *context, const char *sourceText, const char *comment = 0, int = -1) const { return findMessage(context, sourceText, comment).translation(); } bool load(const QString & filename, const QString & directory = QString(), const QString & search_delimiters = QString(), const QString & suffix = QString()); bool load(const uchar *data, int len); void clear(); enum SaveMode { Everything, Stripped }; bool save(const QString & filename, SaveMode mode = Everything); void insert(const TranslatorMessage&); inline void insert(const char *context, const char *sourceText, const QString &fileName, int lineNo, const QStringList &translations) { insert(TranslatorMessage(context, sourceText, "", fileName, lineNo, translations)); } void remove(const TranslatorMessage&); inline void remove(const char *context, const char *sourceText) { remove(TranslatorMessage(context, sourceText, "", QLatin1String(""), -1)); } bool contains(const char *context, const char *sourceText, const char * comment = 0) const; bool contains(const char *context, const char *comment, const QString &fileName, int lineNumber) const; void squeeze(SaveMode = Everything); void unsqueeze(); QList messages() const; bool isEmpty() const; private: Q_DISABLE_COPY(Translator) TranslatorPrivate *d; }; static const char * const japaneseStyleForms[] = { "Unique Form", 0 }; static const char * const englishStyleForms[] = { "Singular", "Plural", 0 }; static const char * const frenchStyleForms[] = { "Singular", "Plural", 0 }; static const char * const latvianForms[] = { "Singular", "Plural", "Nullar", 0 }; static const char * const irishStyleForms[] = { "Singular", "Dual", "Plural", 0 }; static const char * const czechForms[] = { "Singular", "Dual", "Plural", 0 }; static const char * const slovakForms[] = { "Singular", "Dual", "Plural", 0 }; static const char * const macedonianForms[] = { "Singular", "Dual", "Plural", 0 }; static const char * const lithuanianForms[] = { "Singular", "Dual", "Plural", 0 }; static const char * const russianStyleForms[] = { "Singular", "Dual", "Plural", 0 }; static const char * const polishForms[] = { "Singular", "Paucal", "Plural", 0 }; static const char * const romanianForms[] = { "Singular", "Plural Form for 2 to 19", "Plural", 0 }; static const char * const slovenianForms[] = { "Singular", "Dual", "Trial", "Plural", 0 }; static const char * const malteseForms[] = { "Singular", "Plural Form for 2 to 10", "Plural Form for 11 to 19", "Plural", 0 }; static const char * const welshForms[] = { "Nullar", "Singular", "Dual", "Sexal", "Plural", 0 }; static const char * const arabicForms[] = { "Nullar", "Singular", "Dual", "Minority Plural", "Plural", "Plural Form for 100, 200, ...", 0 }; #define EOL QLocale::C static const QLocale::Language japaneseStyleLanguages[] = { QLocale::Afan, QLocale::Armenian, QLocale::Bhutani, QLocale::Bislama, QLocale::Burmese, QLocale::Chinese, #if QT_VERSION >= 0x050000 QLocale::Fijian, #else QLocale::FijiLanguage, #endif QLocale::Guarani, QLocale::Hungarian, QLocale::Indonesian, QLocale::Japanese, QLocale::Javanese, QLocale::Korean, QLocale::Malay, QLocale::NauruLanguage, QLocale::Persian, QLocale::Sundanese, QLocale::Thai, QLocale::Tibetan, QLocale::Vietnamese, QLocale::Yoruba, QLocale::Zhuang, EOL }; static const QLocale::Language englishStyleLanguages[] = { QLocale::Abkhazian, QLocale::Afar, QLocale::Afrikaans, QLocale::Albanian, QLocale::Amharic, QLocale::Assamese, QLocale::Aymara, QLocale::Azerbaijani, QLocale::Bashkir, QLocale::Basque, QLocale::Bengali, QLocale::Bihari, // Missing: Bokmal, QLocale::Bulgarian, QLocale::Cambodian, QLocale::Catalan, QLocale::Cornish, QLocale::Corsican, QLocale::Danish, QLocale::Dutch, QLocale::English, QLocale::Esperanto, QLocale::Estonian, QLocale::Faroese, QLocale::Finnish, // Missing: Friulian, QLocale::Frisian, QLocale::Galician, QLocale::Georgian, QLocale::German, QLocale::Greek, QLocale::Greenlandic, QLocale::Gujarati, QLocale::Hausa, QLocale::Hebrew, QLocale::Hindi, QLocale::Icelandic, QLocale::Interlingua, QLocale::Interlingue, QLocale::Italian, QLocale::Kannada, QLocale::Kashmiri, QLocale::Kazakh, QLocale::Kinyarwanda, QLocale::Kirghiz, QLocale::Kurdish, QLocale::Kurundi, #if QT_VERSION >= 0x050000 QLocale::Lao, #else QLocale::Laothian, #endif QLocale::Latin, // Missing: Letzeburgesch, QLocale::Lingala, QLocale::Malagasy, QLocale::Malayalam, QLocale::Marathi, QLocale::Mongolian, // Missing: Nahuatl, QLocale::Nepali, // Missing: Northern Sotho, QLocale::Norwegian, #if QT_VERSION >= 0x050000 QLocale::NorwegianNynorsk, #else QLocale::Nynorsk, #endif QLocale::Occitan, QLocale::Oriya, QLocale::Pashto, QLocale::Portuguese, QLocale::Punjabi, QLocale::Quechua, QLocale::RhaetoRomance, #if QT_VERSION >= 0x050000 QLocale::SouthernSotho, QLocale::Tswana, #else QLocale::Sesotho, QLocale::Setswana, #endif QLocale::Shona, QLocale::Sindhi, #if QT_VERSION >= 0x050000 QLocale::Sinhala, QLocale::Swati, #else QLocale::Singhalese, QLocale::Siswati, #endif QLocale::Somali, QLocale::Spanish, QLocale::Swahili, QLocale::Swedish, QLocale::Tagalog, QLocale::Tajik, QLocale::Tamil, QLocale::Tatar, QLocale::Telugu, #if QT_VERSION >= 0x050000 QLocale::Tongan, #else QLocale::TongaLanguage, #endif QLocale::Tsonga, QLocale::Turkish, QLocale::Turkmen, QLocale::Twi, QLocale::Uigur, QLocale::Uzbek, QLocale::Volapuk, QLocale::Wolof, QLocale::Xhosa, QLocale::Yiddish, QLocale::Zulu, EOL }; static const QLocale::Language frenchStyleLanguages[] = { // keep synchronized with frenchStyleCountries QLocale::Breton, QLocale::French, QLocale::Portuguese, // Missing: Filipino, QLocale::Tigrinya, // Missing: Walloon EOL }; static const QLocale::Language latvianLanguage[] = { QLocale::Latvian, EOL }; static const QLocale::Language irishStyleLanguages[] = { QLocale::Divehi, QLocale::Gaelic, QLocale::Inuktitut, QLocale::Inupiak, QLocale::Irish, QLocale::Manx, QLocale::Maori, // Missing: Sami, QLocale::Samoan, QLocale::Sanskrit, EOL }; static const QLocale::Language czechLanguage[] = { QLocale::Czech, EOL }; static const QLocale::Language slovakLanguage[] = { QLocale::Slovak, EOL }; static const QLocale::Language macedonianLanguage[] = { QLocale::Macedonian, EOL }; static const QLocale::Language lithuanianLanguage[] = { QLocale::Lithuanian, EOL }; static const QLocale::Language russianStyleLanguages[] = { QLocale::Bosnian, QLocale::Byelorussian, QLocale::Croatian, QLocale::Russian, QLocale::Serbian, QLocale::SerboCroatian, QLocale::Ukrainian, EOL }; static const QLocale::Language polishLanguage[] = { QLocale::Polish, EOL }; static const QLocale::Language romanianLanguages[] = { QLocale::Moldavian, QLocale::Romanian, EOL }; static const QLocale::Language slovenianLanguage[] = { QLocale::Slovenian, EOL }; static const QLocale::Language malteseLanguage[] = { QLocale::Maltese, EOL }; static const QLocale::Language welshLanguage[] = { QLocale::Welsh, EOL }; static const QLocale::Language arabicLanguage[] = { QLocale::Arabic, EOL }; static const QLocale::Country frenchStyleCountries[] = { // keep synchronized with frenchStyleLanguages QLocale::AnyCountry, QLocale::AnyCountry, QLocale::Brazil, QLocale::AnyCountry }; struct NumerusTableEntry { const char * const *forms; const QLocale::Language *languages; const QLocale::Country *countries; }; static const NumerusTableEntry numerusTable[] = { { japaneseStyleForms, japaneseStyleLanguages, 0 }, { englishStyleForms, englishStyleLanguages, 0 }, { frenchStyleForms, frenchStyleLanguages, frenchStyleCountries }, { latvianForms, latvianLanguage, 0 }, { irishStyleForms, irishStyleLanguages, 0 }, { czechForms, czechLanguage, 0 }, { slovakForms, slovakLanguage, 0 }, { macedonianForms, macedonianLanguage, 0 }, { lithuanianForms, lithuanianLanguage, 0 }, { russianStyleForms, russianStyleLanguages, 0 }, { polishForms, polishLanguage, 0 }, { romanianForms, romanianLanguages, 0 }, { slovenianForms, slovenianLanguage, 0 }, { malteseForms, malteseLanguage, 0 }, { welshForms, welshLanguage, 0 }, { arabicForms, arabicLanguage, 0 } }; static const int NumerusTableSize = sizeof(numerusTable) / sizeof(numerusTable[0]); bool getNumerusInfo(QLocale::Language language, QLocale::Country country, QStringList *forms); #endif // TRANSLATOR_H PyQt5_gpl-5.10.1/qpy/pyrcc/0000755000076500000240000000000013245231431015430 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/qpy/pyrcc/rcc.cpp0000644000076500000240000004552613245233150016717 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (c) 2017 Riverbank Computing Limited. All rights reserved. ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #include #include #include #include #include #include "rcc.h" static void qt_rcc_write_number(FILE *out, quint64 number, int width) { // Write bytes while (width-- > 0) { const quint8 tmp = number >> (width * 8); fprintf(out, "\\x%02x", tmp); } } void RCCFileInfo::writeDataInfo(FILE *out, int version) { //pointer data if(flags & RCCFileInfo::Directory) { //name offset qt_rcc_write_number(out, nameOffset, 4); //flags qt_rcc_write_number(out, flags, 2); //child count qt_rcc_write_number(out, children.size(), 4); //first child offset qt_rcc_write_number(out, childOffset, 4); } else { //name offset qt_rcc_write_number(out, nameOffset, 4); //flags qt_rcc_write_number(out, flags, 2); //locale qt_rcc_write_number(out, locale.country(), 2); qt_rcc_write_number(out, locale.language(), 2); //data offset qt_rcc_write_number(out, dataOffset, 4); } fprintf(out, "\\\n"); if (version >= 2) { const QDateTime lastModified = fileInfo.lastModified(); qt_rcc_write_number(out, lastModified.isValid() ? lastModified.toMSecsSinceEpoch() : 0, 8); fprintf(out, "\\\n"); } } qint64 RCCFileInfo::writeDataBlob(FILE *out, qint64 offset) { //capture the offset dataOffset = offset; //find the data to be written QFile file(fileInfo.absoluteFilePath()); if (!file.open(QFile::ReadOnly)) { fprintf(stderr, "Couldn't open %s\n", fileInfo.absoluteFilePath().toLatin1().constData()); return false; } QByteArray data = file.readAll(); #ifndef QT_NO_COMPRESS // Check if compression is useful for this file if (mCompressLevel != 0 && data.size() != 0) { QByteArray compressed = qCompress(reinterpret_cast(data.data()), data.size(), mCompressLevel); int compressRatio = int(100.0f * (float(data.size() - compressed.size()) / float(data.size()))); if (compressRatio >= mCompressThreshold) { data = compressed; flags |= Compressed; } } #endif // QT_NO_COMPRESS //write the length qt_rcc_write_number(out, data.size(), 4); fprintf(out, "\\\n"); offset += 4; //write the payload for (int i=0; iroot == 0) { fprintf(stderr, "No resources in resource description.\n"); return false; } return true; } bool RCCResourceLibrary::addFile(const QString &alias, const RCCFileInfo &file) { if (file.fileInfo.size() > 0xffffffff) { fprintf(stderr, "File too big: %s", file.fileInfo.absoluteFilePath().toLatin1().constData()); return false; } if(!root) root = new RCCFileInfo("", QFileInfo(), QLocale(), RCCFileInfo::Directory); RCCFileInfo *parent = root; const QStringList nodes = alias.split('/'); for(int i = 1; i < nodes.size()-1; ++i) { const QString node = nodes.at(i); if(!parent->children.contains(node)) { RCCFileInfo *s = new RCCFileInfo(node, QFileInfo(), QLocale(), RCCFileInfo::Directory); s->parent = parent; parent->children.insert(node, s); parent = s; } else { parent = parent->children[node]; } } const QString filename = nodes.at(nodes.size()-1); RCCFileInfo *s = new RCCFileInfo(file); s->parent = parent; parent->children.insertMulti(filename, s); return true; } bool RCCResourceLibrary::readFiles() { //read in data if (mVerbose) fprintf(stderr, "Processing %d files\n", mFileNames.size()); for (int i=0; i pending; if (!root) return ret; pending.push(root); while(!pending.isEmpty()) { RCCFileInfo *file = pending.pop(); for(QHash::iterator it = file->children.begin(); it != file->children.end(); ++it) { RCCFileInfo *child = it.value(); if(child->flags & RCCFileInfo::Directory) pending.push(child); ret.append(child->fileInfo.filePath()); } } return ret; } bool RCCResourceLibrary::output(const QString &out_name) { FILE *out; // Create the output file or use stdout if not specified. if (out_name.isEmpty()) { out = stdout; } #if defined(_MSC_VER) && _MSC_VER >= 1400 else if (fopen_s(&out, out_name.toLocal8Bit().constData(), "w")) #else else if ((out = fopen(out_name.toLocal8Bit().constData(), "w")) == NULL) #endif { fprintf(stderr, "Unable to open %s for writing\n", out_name.toLatin1().constData()); return false; } if (mVerbose) fprintf(stderr, "Outputting code\n"); const char *error; if (!writeHeader(out)) error = "header"; else if (!writeDataBlobs(out)) error = "data blob"; else if (!writeDataNames(out)) error = "file names"; else if (!writeDataStructure(out, 1)) error = "v1 data tree"; else if (!writeDataStructure(out, 2)) error = "v2 data tree"; else if (!writeInitializer(out)) error = "footer"; else error = 0; if (out != stdout) fclose(out); if (error) { fprintf(stderr, "Couldn't write %s\n", error); return false; } return true; } bool RCCResourceLibrary::writeHeader(FILE *out) { fprintf(out, "# -*- coding: utf-8 -*-\n\n"); fprintf(out, "# Resource object code\n"); fprintf(out, "#\n"); fprintf(out, "# Created by: The Resource Compiler for PyQt5 (Qt v%s)\n", QT_VERSION_STR); fprintf(out, "#\n"); fprintf(out, "# WARNING! All changes made in this file will be lost!\n"); fprintf(out, "\n"); fprintf(out, "from PyQt5 import QtCore\n\n"); return true; } bool RCCResourceLibrary::writeDataBlobs(FILE *out) { fprintf(out, "qt_resource_data = b\"\\\n"); QStack pending; if (!root) return false; pending.push(root); qint64 offset = 0; while(!pending.isEmpty()) { RCCFileInfo *file = pending.pop(); for(QHash::iterator it = file->children.begin(); it != file->children.end(); ++it) { RCCFileInfo *child = it.value(); if(child->flags & RCCFileInfo::Directory) pending.push(child); else offset = child->writeDataBlob(out, offset); } } fprintf(out, "\"\n\n"); return true; } bool RCCResourceLibrary::writeDataNames(FILE *out) { fprintf(out, "qt_resource_name = b\"\\\n"); QHash names; QStack pending; if (!root) return false; pending.push(root); qint64 offset = 0; while(!pending.isEmpty()) { RCCFileInfo *file = pending.pop(); for(QHash::iterator it = file->children.begin(); it != file->children.end(); ++it) { RCCFileInfo *child = it.value(); if(child->flags & RCCFileInfo::Directory) pending.push(child); if(names.contains(child->name)) { child->nameOffset = names.value(child->name); } else { names.insert(child->name, offset); offset = child->writeDataName(out, offset); } } } fprintf(out, "\"\n\n"); return true; } static bool qt_rcc_compare_hash(const RCCFileInfo *left, const RCCFileInfo *right) { return qt_hash(left->name) < qt_hash(right->name); } bool RCCResourceLibrary::writeDataStructure(FILE *out, int version) { fprintf(out, "qt_resource_struct_v%d = b\"\\\n", version); QStack pending; if (!root) return false; //calculate the child offsets (flat) pending.push(root); int offset = 1; while(!pending.isEmpty()) { RCCFileInfo *file = pending.pop(); file->childOffset = offset; //sort by hash value for binary lookup QList children = file->children.values(); qSort(children.begin(), children.end(), qt_rcc_compare_hash); //write out the actual data now for(int i = 0; i < children.size(); ++i) { RCCFileInfo *child = children.at(i); ++offset; if(child->flags & RCCFileInfo::Directory) pending.push(child); } } //write out the structure (ie iterate again!) pending.push(root); root->writeDataInfo(out, version); while(!pending.isEmpty()) { RCCFileInfo *file = pending.pop(); //sort by hash value for binary lookup QList children = file->children.values(); qSort(children.begin(), children.end(), qt_rcc_compare_hash); //write out the actual data now for(int i = 0; i < children.size(); ++i) { RCCFileInfo *child = children.at(i); child->writeDataInfo(out, version); if(child->flags & RCCFileInfo::Directory) pending.push(child); } } fprintf(out, "\"\n\n"); return true; } bool RCCResourceLibrary::writeInitializer(FILE *out) { fprintf(out, "qt_version = QtCore.qVersion().split('.')\n"); fprintf(out, "if qt_version < ['5', '8', '0']:\n"); fprintf(out, " rcc_version = 1\n"); fprintf(out, " qt_resource_struct = qt_resource_struct_v1\n"); fprintf(out, "else:\n"); fprintf(out, " rcc_version = 2\n"); fprintf(out, " qt_resource_struct = qt_resource_struct_v2\n"); fprintf(out, "\n"); fprintf(out, "def qInitResources():\n"); fprintf(out, " QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)\n"); fprintf(out, "\n"); fprintf(out, "def qCleanupResources():\n"); fprintf(out, " QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data)\n"); fprintf(out, "\n"); fprintf(out, "qInitResources()\n"); return true; } PyQt5_gpl-5.10.1/qpy/pyrcc/rcc.h0000644000076500000240000001312113245233150016346 0ustar philstaff00000000000000/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef RCC_H #define RCC_H #include #include #include #include #include #include #include #define TAG_RCC "RCC" #define TAG_RESOURCE "qresource" #define TAG_FILE "file" #define ATTRIBUTE_LANG "lang" #define ATTRIBUTE_PREFIX "prefix" #define ATTRIBUTE_ALIAS "alias" #define ATTRIBUTE_THRESHOLD "threshold" #define ATTRIBUTE_COMPRESS "compress" #define CONSTANT_HEADER_SIZE 8 #define CONSTANT_COMPRESSLEVEL_DEFAULT -1 #define CONSTANT_COMPRESSTHRESHOLD_DEFAULT 70 struct RCCFileInfo; class RCCResourceLibrary { public: inline RCCResourceLibrary(); ~RCCResourceLibrary(); bool output(const QString &out_name); bool readFiles(); inline void setInputFiles(QStringList files) { mFileNames = files; } inline QStringList inputFiles() const { return mFileNames; } QStringList dataFiles() const; inline void setVerbose(bool b) { mVerbose = b; } inline bool verbose() const { return mVerbose; } inline void setCompressLevel(int c) { mCompressLevel = c; } inline int compressLevel() const { return mCompressLevel; } inline void setCompressThreshold(int t) { mCompressThreshold = t; } inline int compressThreshold() const { return mCompressThreshold; } inline void setResourceRoot(QString str) { mResourceRoot = str; } inline QString resourceRoot() const { return mResourceRoot; } private: RCCFileInfo *root; bool addFile(const QString &alias, const RCCFileInfo &file); bool interpretResourceFile(QIODevice *inputDevice, QString file, QString currentPath = QString()); bool writeHeader(FILE *out); bool writeDataBlobs(FILE *out); bool writeDataNames(FILE *out); bool writeDataStructure(FILE *out, int version); bool writeInitializer(FILE *out); QStringList mFileNames; QString mResourceRoot; bool mVerbose; int mCompressLevel; int mCompressThreshold; int mTreeOffset, mNamesOffset, mDataOffset; }; inline RCCResourceLibrary::RCCResourceLibrary() { root = 0; mVerbose = false; mCompressLevel = -1; mCompressThreshold = 70; mTreeOffset = mNamesOffset = mDataOffset = 0; } struct RCCFileInfo { enum Flags { NoFlags = 0x00, Compressed = 0x01, Directory = 0x02 }; inline RCCFileInfo(QString name = QString(), QFileInfo fileInfo = QFileInfo(), QLocale locale = QLocale(), uint flags = NoFlags, int compressLevel = CONSTANT_COMPRESSLEVEL_DEFAULT, int compressThreshold = CONSTANT_COMPRESSTHRESHOLD_DEFAULT); ~RCCFileInfo() { qDeleteAll(children); } inline QString resourceName() { QString resource = name; for(RCCFileInfo *p = parent; p; p = p->parent) resource = resource.prepend(p->name + "/"); return ":" + resource; } int flags; QString name; QLocale locale; QFileInfo fileInfo; RCCFileInfo *parent; QHash children; int mCompressLevel; int mCompressThreshold; qint64 nameOffset, dataOffset, childOffset; qint64 writeDataBlob(FILE *out, qint64 offset); qint64 writeDataName(FILE *out, qint64 offset); void writeDataInfo(FILE *out, int version); }; inline RCCFileInfo::RCCFileInfo(QString name, QFileInfo fileInfo, QLocale locale, uint flags, int compressLevel, int compressThreshold) { this->name = name; this->fileInfo = fileInfo; this->locale = locale; this->flags = flags; this->parent = 0; this->nameOffset = this->dataOffset = this->childOffset = 0; this->mCompressLevel = compressLevel; this->mCompressThreshold = compressThreshold; } #endif PyQt5_gpl-5.10.1/qpy/QtBluetooth/0000755000076500000240000000000013245233150016562 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/qpy/QtCore/0000755000076500000240000000000013245233150015505 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_api.h0000644000076500000240000000720613245233150020176 0ustar philstaff00000000000000// This defines the API provided by this library. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_API_H #define _QPYCORE_API_H #include #include #include #include "qpycore_namespace.h" #include "qpycore_public_api.h" QT_BEGIN_NAMESPACE class QAbstractEventDispatcher; class QObject; QT_END_NAMESPACE // Support for pyqtSlot(). PyObject *qpycore_pyqtslot(PyObject *args, PyObject *kwds); // Support for pyqtConfigure(). PyObject *qpycore_pyqtconfigure(PyObject *self, PyObject *args, PyObject *kwds); // Support for the QObject %FinalisationCode. int qpycore_qobject_finalisation(PyObject *self, QObject *qobj, PyObject *kwds, PyObject **updated_kwds); // Support for converting between PyObject and QString. PyObject *qpycore_PyObject_FromQString(const QString &qstr); QString qpycore_PyObject_AsQString(PyObject *obj); // Support for converting between PyObject and QVariant. PyObject *qpycore_PyObject_FromQVariant(const QVariant &qvar); QVariant qpycore_PyObject_AsQVariant(PyObject *obj, int *is_err); // Support for Q_CLASSINFO(), Q_ENUMS() and Q_FLAGS(). PyObject *qpycore_ClassInfo(const char *name, const char *value); PyObject *qpycore_Enums(PyObject *args); PyObject *qpycore_Flags(PyObject *args); // Support for creating QGenericArgument and QGenericReturnArgument instances. PyObject *qpycore_ArgumentFactory(PyObject *type, PyObject *data); PyObject *qpycore_ReturnFactory(PyObject *type); PyObject *qpycore_ReturnValue(PyObject *gra); // Support for QObject.__getattr__(). PyObject *qpycore_qobject_getattr(const QObject *qobj, PyObject *py_qobj, const char *name); // Support for QObject.staticMetaObject %GetCode. PyObject *qpycore_qobject_staticmetaobject(PyObject *type_obj); // Support for QMetaObject.connectSlotsByName(). void qpycore_qmetaobject_connectslotsbyname(QObject *qobj, PyObject *qobj_wrapper); // Support for pyqt[Set]PickleProtocol(). extern PyObject *qpycore_pickle_protocol; // Support for qDebug() etc. int qpycore_current_context(const char **file, const char **function); // Support for QObject.disconnect(). PyObject *qpycore_qobject_disconnect(const QObject *q_obj); // Support for QObject's garbage collector code. int qpycore_clearSlotProxies(const QObject *transmitter); int qpycore_visitSlotProxies(const QObject *transmitter, visitproc visit, void *arg); // Support for QJsonValue. int qpycore_canConvertTo_QJsonValue(PyObject *py); int qpycore_convertTo_QJsonValue(PyObject *py, PyObject *transferObj, QJsonValue **cpp, int *isErr); #if defined(PYQT_QTCONF_PREFIX) // Support for an embedded qt.conf. bool qpycore_qt_conf(); #endif // Utilities. #if PY_MAJOR_VERSION >= 3 void qpycore_Unicode_ConcatAndDel(PyObject **string, PyObject *newpart); #endif // Initialisation. void qpycore_init(); void qpycore_post_init(PyObject *module_dict); #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_chimera.cpp0000644000076500000240000013153513245233150021373 0ustar philstaff00000000000000// This is the implementation of the Chimera class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_pyqtpyobject.h" #include "qpycore_types.h" #include "sipAPIQtCore.h" // The registered Python enum types. QSet Chimera::_py_enum_types; // The cache of previously parsed argument type lists. QHash > Chimera::_previously_parsed; // The registered QVariant to PyObject convertors. Chimera::FromQVariantConvertors Chimera::registeredFromQVariantConvertors; // The registered PyObject to QVariant convertors. Chimera::ToQVariantConvertors Chimera::registeredToQVariantConvertors; // The registered PyObject to QVariant data convertors. Chimera::ToQVariantDataConvertors Chimera::registeredToQVariantDataConvertors; const int UnknownType = QMetaType::UnknownType; // Construct an invalid type. Chimera::Chimera() : _type(0), _py_type(0), _metatype(UnknownType), _inexact(false), _is_qflags(false) { } // Construct a copy. Chimera::Chimera(const Chimera &other) { _type = other._type; _py_type = other._py_type; Py_XINCREF((PyObject *)_py_type); _metatype = other._metatype; _inexact = other._inexact; _is_qflags = other._is_qflags; _name = other._name; } // Destroy the type. Chimera::~Chimera() { Py_XDECREF((PyObject *)_py_type); } // Register the type of a Python enum. void Chimera::registerPyEnum(PyObject *enum_type) { Py_INCREF(enum_type); _py_enum_types.insert(enum_type); } // Parse an object as a type. const Chimera *Chimera::parse(PyObject *obj) { Chimera *ct = new Chimera; bool parse_ok; if (PyType_Check(obj)) { // Parse the type object. parse_ok = ct->parse_py_type((PyTypeObject *)obj); if (!parse_ok) raiseParseException(obj); } else { const char *cpp_type_name = sipString_AsASCIIString(&obj); if (cpp_type_name) { // Always use normalised type names so that we have a consistent // standard. QByteArray norm_name = QMetaObject::normalizedType(cpp_type_name); Py_DECREF(obj); // Parse the type name. parse_ok = ct->parse_cpp_type(norm_name); if (!parse_ok) raiseParseCppException(cpp_type_name); } else { parse_ok = false; } } if (!parse_ok) { delete ct; return 0; } return ct; } // Parse a C++ type name as a type. const Chimera *Chimera::parse(const QByteArray &name) { Chimera *ct = new Chimera; if (!ct->parse_cpp_type(name)) { delete ct; raiseParseCppException(name.constData()); return 0; } return ct; } // Parse a meta-property as a type. const Chimera *Chimera::parse(const QMetaProperty &mprop) { Chimera *ct = new Chimera; const char *type_name = mprop.typeName(); ct->_type = sipFindType(type_name); ct->_metatype = mprop.userType(); ct->_inexact = true; ct->_is_qflags = mprop.isFlagType(); ct->_name = type_name; return ct; } // Parse a normalised C++ signature as a list of types. Chimera::Signature *Chimera::parse(const QByteArray &sig, const char *context) { // Extract the argument list. int start_idx = sig.indexOf('('); if (start_idx < 0) start_idx = 0; else ++start_idx; int end_idx = sig.lastIndexOf(')'); int len; if (end_idx < start_idx) len = -1; else len = end_idx - start_idx; // Parse each argument type. Chimera::Signature *parsed_sig = new Chimera::Signature(sig, true); if (len > 0) { QByteArray args_str = sig.mid(start_idx, len); // Check we haven't already done it. QList parsed_args = _previously_parsed.value(args_str); if (parsed_args.isEmpty()) { int i, arg_start, template_level; i = arg_start = template_level = 0; // Extract each argument allowing for commas in templates. for (;;) { char ch = (i < args_str.size() ? args_str.at(i) : '\0'); QByteArray arg; switch (ch) { case '<': ++template_level; break; case '>': --template_level; break; case '\0': arg = args_str.mid(arg_start, i - arg_start); break; case ',': if (template_level == 0) { arg = args_str.mid(arg_start, i - arg_start); arg_start = i + 1; } break; } if (!arg.isEmpty()) { Chimera *ct = new Chimera; if (!ct->parse_cpp_type(arg)) { delete ct; delete parsed_sig; qDeleteAll(parsed_args.constBegin(), parsed_args.constEnd()); raiseParseCppException(arg.constData(), context); return 0; } parsed_args.append(ct); if (ch == '\0') break; } ++i; } // Only parse once. _previously_parsed.insert(args_str, parsed_args); } parsed_sig->parsed_arguments = parsed_args; } return parsed_sig; } // Parses a C++ signature given as a Python tuple of types and an optional // name. Return 0 if there was an error. Chimera::Signature *Chimera::parse(PyObject *types, const char *name, const char *context) { if (!name) name = ""; Chimera::Signature *parsed_sig = new Chimera::Signature(name, false); parsed_sig->signature.append('('); parsed_sig->py_signature.append('['); for (Py_ssize_t i = 0; i < PyTuple_Size(types); ++i) { PyObject *type = PyTuple_GetItem(types, i); const Chimera *parsed_type = parse(type); if (!parsed_type) { delete parsed_sig; raiseParseException(type, context); return 0; } parsed_sig->parsed_arguments.append(parsed_type); if (i > 0) { parsed_sig->signature.append(','); parsed_sig->py_signature.append(", "); } parsed_sig->signature.append(parsed_type->name()); if (parsed_type->_py_type) parsed_sig->py_signature.append(sipPyTypeName(parsed_type->_py_type)); else parsed_sig->py_signature.append(parsed_type->name()); } parsed_sig->signature.append(')'); parsed_sig->py_signature.append(']'); return parsed_sig; } // Raise an exception after parse() of a Python type has failed. void Chimera::raiseParseException(PyObject *type, const char *context) { if (PyType_Check(type)) { if (context) PyErr_Format(PyExc_TypeError, "Python type '%s' is not supported as %s type", sipPyTypeName((PyTypeObject *)type), context); else PyErr_Format(PyExc_TypeError, "unknown Python type '%s'", sipPyTypeName((PyTypeObject *)type)); } else { const char *cpp_type_name = sipString_AsASCIIString(&type); if (cpp_type_name) { raiseParseCppException(cpp_type_name, context); Py_DECREF(type); } } } // Raise an exception after parse() of a C++ type has failed. void Chimera::raiseParseCppException(const char *type, const char *context) { if (context) PyErr_Format(PyExc_TypeError, "C++ type '%s' is not supported as %s type", type, context); else PyErr_Format(PyExc_TypeError, "unknown C++ type '%s'", type); } // Parse the given Python type object. bool Chimera::parse_py_type(PyTypeObject *type_obj) { const sipTypeDef *td = sipTypeFromPyTypeObject(type_obj); if (td) { if (sipTypeIsNamespace(td)) return false; _type = td; _name = sipTypeName(td); if (sipTypeIsClass(td)) set_qflags(); if (sipTypeIsEnum(td) || _is_qflags) { _metatype = QMetaType::Int; } else { // If there is no assignment helper then assume it is a // pointer-type. if (!get_assign_helper()) _name.append('*'); _metatype = QMetaType::type(_name.constData()); // If it is a user type then it must be a type that SIP knows // about but was registered by Qt. if (_metatype < QMetaType::User) { if (PyType_IsSubtype(type_obj, sipTypeAsPyTypeObject(sipType_QObject))) { _metatype = QMetaType::QObjectStar; } else if (sipIsUserType((sipWrapperType *)type_obj)) { // It is a non-QObject Python sub-class so make sure it // gets wrapped in a PyQt_PyObject. _type = 0; _metatype = PyQt_PyObject::metatype; _name.clear(); } } } } else if (_py_enum_types.contains((PyObject *)type_obj)) { _metatype = QMetaType::Int; _name = sipPyTypeName(type_obj); } else if (type_obj == &PyList_Type) { _metatype = QMetaType::QVariantList; } #if PY_MAJOR_VERSION >= 3 else if (type_obj == &PyUnicode_Type) { _type = sipType_QString; _metatype = QMetaType::QString; } #else else if (type_obj == &PyString_Type || type_obj == &PyUnicode_Type) { // In this case we accept that the reverse conversion will result in an // object of a different type (i.e. a QString rather than a Python // string). _type = sipType_QString; _metatype = QMetaType::QString; } #endif else if (type_obj == &PyBool_Type) { _metatype = QMetaType::Bool; } #if PY_MAJOR_VERSION < 3 else if (type_obj == &PyInt_Type) { // We choose to map to a C++ int, even though a Python int is // potentially much larger, as it represents the most common usage in // Qt. However we will allow a larger type to be used if the context // is right. _metatype = QMetaType::Int; _inexact = true; } #endif else if (type_obj == &PyLong_Type) { // We choose to map to a C++ int for the same reasons as above and to // be consistent with Python3 where everything is a long object. If // this isn't appropriate the user can always use a string to specify // the exact C++ type they want. _metatype = QMetaType::Int; _inexact = true; } else if (type_obj == &PyFloat_Type) { _metatype = QMetaType::Double; } else if (type_obj == sipVoidPtr_Type) { _metatype = QMetaType::VoidStar; _name = "void*"; } // Fallback to using a PyQt_PyObject. if (_metatype == UnknownType) _metatype = PyQt_PyObject::metatype; // If there is no name so far then use the meta-type name. if (_name.isEmpty()) _name = QMetaType::typeName(_metatype); _py_type = type_obj; Py_INCREF((PyObject *)_py_type); return true; } // Set the internal QFlags flag. void Chimera::set_qflags() { if (qpycore_is_pyqt_class(_type)) _is_qflags = ((pyqt5ClassPluginDef *)sipTypePluginData(_type))->flags & 0x01; } // Update a C++ type so that any typedefs are resolved. QByteArray Chimera::resolve_types(const QByteArray &type) { // Split into a base type and a possible list of template arguments. QByteArray resolved = type.simplified(); // Get the raw type, ie. without any "const", "&" or "*". QByteArray raw_type; int original_raw_start; if (resolved.startsWith("const ")) original_raw_start = 6; else original_raw_start = 0; raw_type = resolved.mid(original_raw_start); while (raw_type.endsWith('&') || raw_type.endsWith('*') || raw_type.endsWith(' ')) raw_type.chop(1); int original_raw_len = raw_type.size(); if (original_raw_len == 0) return QByteArray(); // Get any template arguments. QList args; int tstart = raw_type.indexOf('<'); if (tstart >= 0) { // Make sure the template arguments are terminated. if (!raw_type.endsWith('>')) return QByteArray(); // Split the template arguments taking nested templates into account. int depth = 1, arg_start = tstart + 1; for (int i = arg_start; i < raw_type.size(); ++i) { int arg_end = -1; char ch = raw_type.at(i); if (ch == '<') { ++depth; } else if (ch == '>') { --depth; if (depth < 0) return QByteArray(); if (depth == 0) arg_end = i; } else if (ch == ',' && depth == 1) { arg_end = i; } if (arg_end >= 0) { QByteArray arg = resolve_types(raw_type.mid(arg_start, arg_end - arg_start)); if (arg.isEmpty()) return QByteArray(); args.append(arg); arg_start = arg_end + 1; } } if (depth != 0) return QByteArray(); // Remove the template arguments. raw_type.truncate(tstart); } // Expand any typedef. const char *base_type = sipResolveTypedef(raw_type.constData()); if (base_type) raw_type = base_type; // Add any (now resolved) template arguments. if (args.count() > 0) { raw_type.append('<'); for (QList::const_iterator it = args.begin();;) { raw_type.append(*it); if (++it == args.end()) break; raw_type.append(','); } if (raw_type.endsWith('>')) raw_type.append(' '); raw_type.append('>'); } // Replace the original raw type with the resolved one. resolved.replace(original_raw_start, original_raw_len, raw_type); return resolved; } // Parse the given C++ type name. bool Chimera::parse_cpp_type(const QByteArray &type) { _name = type; // Resolve any types. QByteArray resolved = resolve_types(type); if (resolved.isEmpty()) return false; // See if the type is known to Qt. _metatype = QMetaType::type(resolved.constData()); // If not then use the PyQt_PyObject wrapper. if (_metatype == UnknownType) _metatype = PyQt_PyObject::metatype; // See if the type (without a pointer) is known to SIP. bool is_ptr = resolved.endsWith('*'); if (is_ptr) { resolved.chop(1); if (resolved.endsWith('*')) return false; } _type = sipFindType(resolved.constData()); if (!_type) { // This is the only fundamental pointer type recognised by Qt. if (_metatype == QMetaType::VoidStar) return true; // This is 'int', 'bool', etc. if (_metatype != PyQt_PyObject::metatype && !is_ptr) return true; if ((resolved == "char" || resolved == "const char") && is_ptr) { // This is a special value meaning a (hopefully) '\0' terminated // string. _metatype = -1; return true; } // This is an explicit 'PyQt_PyObject'. if (resolved == "PyQt_PyObject" && !is_ptr) return true; return false; } if (sipTypeIsNamespace(_type)) return false; if (sipTypeIsClass(_type)) { set_qflags(); if (is_ptr) { PyTypeObject *type_obj = sipTypeAsPyTypeObject(_type); if (PyType_IsSubtype(type_obj, sipTypeAsPyTypeObject(sipType_QObject))) { _metatype = QMetaType::QObjectStar; } } } // We don't support pointers to enums. if (sipTypeIsEnum(_type) && is_ptr) _type = 0; if (sipTypeIsEnum(_type) || _is_qflags) _metatype = QMetaType::Int; return true; } // Convert a Python object to C++ at a given address. This has a lot in common // with the method that converts to a QVariant. However, unlike that method, // we have no control over the size of the destination storage and so must // convert exactly as requested. bool Chimera::fromPyObject(PyObject *py, void *cpp) const { // Let any registered convertors have a go first. for (int i = 0; i < registeredToQVariantDataConvertors.count(); ++i) { bool ok; if (registeredToQVariantDataConvertors.at(i)(py, cpp, _metatype, &ok)) return ok; } int iserr = 0; PyErr_Clear(); switch (_metatype) { case QMetaType::Bool: *reinterpret_cast(cpp) = PyLong_AsLong(py); break; case QMetaType::Int: // Truncate it if necessary to fit into a C++ int. This will // automatically handle enums and flag types as Python knows how to // convert them to ints. #if PY_MAJOR_VERSION >= 3 *reinterpret_cast(cpp) = PyLong_AsLong(py); #else *reinterpret_cast(cpp) = PyInt_AsLong(py); #endif break; case QMetaType::UInt: *reinterpret_cast(cpp) = sipLong_AsUnsignedLong(py); break; case QMetaType::Double: *reinterpret_cast(cpp) = PyFloat_AsDouble(py); break; case QMetaType::VoidStar: *reinterpret_cast(cpp) = sipConvertToVoidPtr(py); break; case QMetaType::Long: *reinterpret_cast(cpp) = PyLong_AsLong(py); break; case QMetaType::LongLong: *reinterpret_cast(cpp) = PyLong_AsLongLong(py); break; case QMetaType::Short: *reinterpret_cast(cpp) = PyLong_AsLong(py); break; case QMetaType::Char: if (SIPBytes_Check(py) && SIPBytes_Size(py) == 1) *reinterpret_cast(cpp) = *SIPBytes_AsString(py); else iserr = 1; break; case QMetaType::ULong: *reinterpret_cast(cpp) = sipLong_AsUnsignedLong(py); break; case QMetaType::ULongLong: *reinterpret_cast(cpp) = static_cast(PyLong_AsUnsignedLongLong(py)); break; case QMetaType::UShort: *reinterpret_cast(cpp) = sipLong_AsUnsignedLong(py); break; case QMetaType::UChar: if (SIPBytes_Check(py) && SIPBytes_Size(py) == 1) *reinterpret_cast(cpp) = *SIPBytes_AsString(py); else iserr = 1; break; case QMetaType::Float: *reinterpret_cast(cpp) = PyFloat_AsDouble(py); break; case QMetaType::QObjectStar: *reinterpret_cast(cpp) = sipForceConvertToType(py, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr); break; case QMetaType::QVariantList: { QVariantList ql; if (to_QVariantList(py, ql)) *reinterpret_cast(cpp) = ql; else iserr = 1; break; } case QMetaType::QVariantMap: { QVariantMap qm; if (to_QVariantMap(py, qm)) *reinterpret_cast(cpp) = qm; else iserr = 1; break; } case QMetaType::QVariantHash: { QVariantHash qh; if (to_QVariantHash(py, qh)) *reinterpret_cast(cpp) = qh; else iserr = 1; break; } case -1: { const char **ptr = reinterpret_cast(cpp); if (SIPBytes_Check(py)) *ptr = SIPBytes_AsString(py); else if (py == Py_None) *ptr = 0; else iserr = 1; break; } default: if (_type) { if (_name.endsWith('*')) { // This must be a pointer-type. *reinterpret_cast(cpp) = sipForceConvertToType(py, _type, 0, SIP_NO_CONVERTORS, 0, &iserr); } else { // This must be a value-type. sipAssignFunc assign = get_assign_helper(); if (assign) { int state; void *value_class; value_class = sipForceConvertToType(py, _type, 0, SIP_NOT_NONE, &state, &iserr); if (!iserr) assign(cpp, 0, value_class); sipReleaseType(value_class, _type, state); } else { iserr = 1; } } } else { iserr = 1; } } if (iserr || PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "unable to convert a Python '%s' object to a C++ '%s' instance", sipPyTypeName(Py_TYPE(py)), _name.constData()); return false; } return true; } // Return the assignment helper for the type, if any. sipAssignFunc Chimera::get_assign_helper() const { if (sipTypeIsClass(_type)) return ((sipClassTypeDef *)_type)->ctd_assign; if (sipTypeIsMapped(_type)) return ((sipMappedTypeDef *)_type)->mtd_assign; return 0; } // Convert a Python object to a QVariant. bool Chimera::fromPyObject(PyObject *py, QVariant *var, bool strict) const { // Deal with the simple case of wrapping the Python object rather than // converting it. if (_type != sipType_QVariant && _metatype == PyQt_PyObject::metatype) { // If the type was specified by a Python type (as opposed to // 'PyQt_PyObject') then check the object is an instance of it. if (_py_type && !PyObject_TypeCheck(py, _py_type)) return false; *var = keep_as_pyobject(py); return true; } // Let any registered convertors have a go first. However don't invoke // then for None because that is effectively reserved for representing a // null QString. if (py != Py_None) { for (int i = 0; i < registeredToQVariantConvertors.count(); ++i) { bool ok; if (registeredToQVariantConvertors.at(i)(py, *var, &ok)) return ok; } } int iserr = 0, value_class_state; void *ptr_class, *value_class = 0; // Temporary storage for different types. union { bool tmp_bool; int tmp_int; unsigned int tmp_unsigned_int; double tmp_double; void *tmp_void_ptr; long tmp_long; qlonglong tmp_qlonglong; short tmp_short; char tmp_char; unsigned long tmp_unsigned_long; qulonglong tmp_qulonglong; unsigned short tmp_unsigned_short; unsigned char tmp_unsigned_char; float tmp_float; } tmp_storage; void *variant_data = &tmp_storage; PyErr_Clear(); QVariant variant; int metatype_used = _metatype; switch (_metatype) { case QMetaType::Bool: tmp_storage.tmp_bool = PyLong_AsLong(py); break; case QMetaType::Int: if (!_inexact || isEnum()) { // It must fit into a C++ int. #if PY_MAJOR_VERSION >= 3 tmp_storage.tmp_int = PyLong_AsLong(py); #else tmp_storage.tmp_int = PyInt_AsLong(py); #endif } else { // Fit it into the smallest C++ type we can. qlonglong qll = PyLong_AsLongLong(py); if (PyErr_Occurred()) { // Try again in case the value is unsigned and will fit with // the extra bit. PyErr_Clear(); qulonglong qull = static_cast(PyLong_AsUnsignedLongLong(py)); if (PyErr_Occurred()) { // It won't fit into any C++ type so pass it as a Python // object. PyErr_Clear(); *var = keep_as_pyobject(py); metatype_used = UnknownType; } else { tmp_storage.tmp_qulonglong = qull; metatype_used = QMetaType::ULongLong; } } else if ((qlonglong)(int)qll == qll) { // It fits in a C++ int. tmp_storage.tmp_int = qll; } else if ((qulonglong)(unsigned int)qll == (qulonglong)qll) { // The extra bit is enough for it to fit. tmp_storage.tmp_unsigned_int = qll; metatype_used = QMetaType::UInt; } else { // This fits. tmp_storage.tmp_qlonglong = qll; metatype_used = QMetaType::LongLong; } } break; case QMetaType::UInt: tmp_storage.tmp_unsigned_int = sipLong_AsUnsignedLong(py); break; case QMetaType::Double: tmp_storage.tmp_double = PyFloat_AsDouble(py); break; case QMetaType::VoidStar: tmp_storage.tmp_void_ptr = sipConvertToVoidPtr(py); break; case QMetaType::Long: tmp_storage.tmp_long = PyLong_AsLong(py); break; case QMetaType::LongLong: tmp_storage.tmp_qlonglong = PyLong_AsLongLong(py); break; case QMetaType::Short: tmp_storage.tmp_short = PyLong_AsLong(py); break; case QMetaType::Char: if (SIPBytes_Check(py) && SIPBytes_Size(py) == 1) tmp_storage.tmp_char = *SIPBytes_AsString(py); else iserr = 1; break; case QMetaType::ULong: tmp_storage.tmp_unsigned_long = sipLong_AsUnsignedLong(py); break; case QMetaType::ULongLong: tmp_storage.tmp_qulonglong = static_cast(PyLong_AsUnsignedLongLong(py)); break; case QMetaType::UShort: tmp_storage.tmp_unsigned_short = sipLong_AsUnsignedLong(py); break; case QMetaType::UChar: if (SIPBytes_Check(py) && SIPBytes_Size(py) == 1) tmp_storage.tmp_unsigned_char = *SIPBytes_AsString(py); else iserr = 1; break; case QMetaType::Float: tmp_storage.tmp_float = PyFloat_AsDouble(py); break; case QMetaType::QObjectStar: tmp_storage.tmp_void_ptr = sipForceConvertToType(py, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr); break; case QMetaType::QVariantList: { QVariantList ql; if (to_QVariantList(py, ql)) { *var = QVariant(ql); metatype_used = UnknownType; } else { iserr = 1; } break; } case QMetaType::QVariantMap: { QVariantMap qm; if (to_QVariantMap(py, qm)) { *var = QVariant(qm); metatype_used = UnknownType; } else if (strict) { iserr = 1; } else { // Assume the failure is because the key was the wrong type. PyErr_Clear(); *var = keep_as_pyobject(py); metatype_used = UnknownType; } break; } case QMetaType::QVariantHash: { QVariantHash qh; if (to_QVariantHash(py, qh)) { *var = QVariant(qh); metatype_used = UnknownType; } else { iserr = 1; } break; } case -1: metatype_used = QMetaType::VoidStar; if (SIPBytes_Check(py)) tmp_storage.tmp_void_ptr = SIPBytes_AsString(py); else if (py == Py_None) tmp_storage.tmp_void_ptr = 0; else iserr = 1; break; default: if (_type) { if (_name.endsWith('*')) { ptr_class = sipForceConvertToType(py, _type, 0, SIP_NO_CONVERTORS, 0, &iserr); variant_data = &ptr_class; } else { value_class = sipForceConvertToType(py, _type, 0, SIP_NOT_NONE, &value_class_state, &iserr); variant_data = value_class; } } else { // This is a class we don't recognise. iserr = 1; } } if (iserr || PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "unable to convert a Python '%s' object to a C++ '%s' instance", sipPyTypeName(Py_TYPE(py)), _name.constData()); iserr = 1; } else if (_type == sipType_QVariant) { *var = QVariant(*reinterpret_cast(variant_data)); } else if (metatype_used != UnknownType) { *var = QVariant(metatype_used, variant_data); } // Release any temporary value-class instance now that QVariant will have // made a copy. if (value_class) sipReleaseType(value_class, _type, value_class_state); return (iserr == 0); } // Convert a Python object to a QVariant based on the type of the object. QVariant Chimera::fromAnyPyObject(PyObject *py, int *is_err) { QVariant variant; if (py != Py_None) { // Let any registered convertors have a go first. for (int i = 0; i < registeredToQVariantConvertors.count(); ++i) { QVariant var; bool ok; if (registeredToQVariantConvertors.at(i)(py, var, &ok)) { *is_err = !ok; return var; } } Chimera ct; if (ct.parse_py_type(Py_TYPE(py))) { // If the type is a dict then try and convert it to a QVariantMap // if possible. if (Py_TYPE(py) == &PyDict_Type) ct._metatype = QMetaType::QVariantMap; // The conversion is non-strict in case the type was a dict and we // can't convert it to a QVariantMap. if (!ct.fromPyObject(py, &variant, false)) { *is_err = 1; } } else { *is_err = 1; } } return variant; } // Convert a QVariant to Python. PyObject *Chimera::toPyObject(const QVariant &var) const { if (_type != sipType_QVariant) { // For some reason (see qvariant_p.h) an invalid QVariant can be // returned when a QMetaType::Void is expected. if (!var.isValid() && _metatype == QMetaType::Void) { Py_INCREF(Py_None); return Py_None; } // Handle the reverse of non-strict conversions of dict to QVariantMap, // ie. we want a dict but we have a QVariantMap. if (_metatype == PyQt_PyObject::metatype && _py_type == &PyDict_Type && var.type() == QVariant::Map) return from_QVariantMap(var.toMap()); // A sanity check. if (_metatype != var.userType()) { PyErr_Format(PyExc_TypeError, "unable to convert a QVariant of type %d to a QMetaType of type %d", var.userType(), _metatype); return 0; } // Deal with the simple case of unwrapping a Python object rather than // converting it. if (_metatype == PyQt_PyObject::metatype) { PyQt_PyObject pyobj_wrapper = var.value(); if (!pyobj_wrapper.pyobject) { PyErr_SetString(PyExc_TypeError, "unable to convert a QVariant back to a Python object"); return 0; } Py_INCREF(pyobj_wrapper.pyobject); return pyobj_wrapper.pyobject; } } // Let any registered convertors have a go first. for (int i = 0; i < registeredFromQVariantConvertors.count(); ++i) { PyObject *py; if (registeredFromQVariantConvertors.at(i)(var, &py)) return py; } return toPyObject(const_cast(var.data())); } // Convert a C++ object at an arbitary address to Python. PyObject *Chimera::toPyObject(void *cpp) const { if (_metatype == PyQt_PyObject::metatype) { if (_type) { // SIP knows the type (therefore it isn't really wrapped in a // PyQt_PyObject) but it's not registered with Qt. if (_name.endsWith('*')) cpp = *reinterpret_cast(cpp); return sipConvertFromType(cpp, _type, 0); } else { // Otherwise unwrap the Python object. PyQt_PyObject *pyobj_wrapper = reinterpret_cast(cpp); if (!pyobj_wrapper->pyobject) { PyErr_SetString(PyExc_TypeError, "unable to convert a QVariant back to a Python object"); return 0; } Py_INCREF(pyobj_wrapper->pyobject); return pyobj_wrapper->pyobject; } } PyObject *py = 0; switch (_metatype) { case QMetaType::Bool: py = PyBool_FromLong(*reinterpret_cast(cpp)); break; case QMetaType::Int: if (_is_qflags) { py = sipConvertFromType(cpp, _type, 0); } else if (isCppEnum()) { py = sipConvertFromEnum(*reinterpret_cast(cpp), _type); } else { py = SIPLong_FromLong(*reinterpret_cast(cpp)); } break; case QMetaType::UInt: { long ui = *reinterpret_cast(cpp); if (ui < 0) py = PyLong_FromUnsignedLong((unsigned long)ui); else py = SIPLong_FromLong(ui); break; } case QMetaType::Double: py = PyFloat_FromDouble(*reinterpret_cast(cpp)); break; case QMetaType::VoidStar: py = sipConvertFromVoidPtr(*reinterpret_cast(cpp)); break; case QMetaType::Long: py = SIPLong_FromLong(*reinterpret_cast(cpp)); break; case QMetaType::LongLong: py = PyLong_FromLongLong(*reinterpret_cast(cpp)); break; case QMetaType::Short: py = SIPLong_FromLong(*reinterpret_cast(cpp)); break; case QMetaType::Char: case QMetaType::UChar: py = SIPBytes_FromStringAndSize(reinterpret_cast(cpp), 1); break; case QMetaType::ULong: py = PyLong_FromUnsignedLong(*reinterpret_cast(cpp)); break; case QMetaType::ULongLong: py = PyLong_FromUnsignedLongLong(*reinterpret_cast(cpp)); break; case QMetaType::UShort: py = SIPLong_FromLong(*reinterpret_cast(cpp)); break; case QMetaType::Float: py = PyFloat_FromDouble(*reinterpret_cast(cpp)); break; case QMetaType::QObjectStar: py = sipConvertFromType(*reinterpret_cast(cpp), sipType_QObject, 0); break; case QMetaType::QVariantList: { QVariantList *ql = reinterpret_cast(cpp); py = PyList_New(ql->size()); if (py) { for (int i = 0; i < ql->size(); ++i) { PyObject *val_obj = toAnyPyObject(ql->at(i)); if (!val_obj) { Py_DECREF(py); py = 0; break; } PyList_SetItem(py, i, val_obj); } } break; } case QMetaType::QVariantMap: py = from_QVariantMap(*reinterpret_cast(cpp)); break; case QMetaType::QVariantHash: { py = PyDict_New(); if (py) { QVariantHash *qh = reinterpret_cast(cpp); for (QVariantHash::const_iterator it = qh->constBegin(); it != qh->constEnd(); ++it) if (!add_variant_to_dict(py, it.key(), it.value())) { Py_DECREF(py); py = 0; break; } } break; } case -1: { char *s = *reinterpret_cast(cpp); if (s) { py = SIPBytes_FromString(s); } else { Py_INCREF(Py_None); py = Py_None; } break; } default: if (_type) { if (sipTypeIsEnum(_type)) { py = sipConvertFromEnum(*reinterpret_cast(cpp), _type); } else if (_name.endsWith('*')) { py = sipConvertFromType(*reinterpret_cast(cpp), _type, 0); } else { // Make a copy as it is a value type. void *copy = QMetaType::create(_metatype, cpp); py = sipConvertFromNewType(copy, _type, 0); if (!py) QMetaType::destroy(_metatype, copy); } } else if (_name.contains("_QMLTYPE_")) { // These correspond to objects defined in QML. We assume that they // are all sub-classes of QObject. If this proves not to be the // case then we will have to look at the first part of _name (and // possibly move this code the the QtQml module). py = sipConvertFromType(*reinterpret_cast(cpp), sipType_QObject, 0); } } if (!py) PyErr_Format(PyExc_TypeError, "unable to convert a C++ '%s' instance to a Python object", _name.constData()); return py; } // Add a QVariant to a Python dict with a QString key. bool Chimera::add_variant_to_dict(PyObject *dict, const QString &key_ref, const QVariant &val_ref) { QString *key = new QString(key_ref); PyObject *key_obj = sipConvertFromNewType(key, sipType_QString, 0); PyObject *val_obj = toAnyPyObject(val_ref); if (!key_obj || !val_obj || PyDict_SetItem(dict, key_obj, val_obj) < 0) { if (key_obj) Py_DECREF(key_obj); else delete key; Py_XDECREF(val_obj); return false; } Py_DECREF(key_obj); Py_DECREF(val_obj); return true; } // Convert a QVariant to a Python object based on the type of the object. PyObject *Chimera::toAnyPyObject(const QVariant &var) { if (!var.isValid()) { Py_INCREF(Py_None); return Py_None; } const char *type_name = var.typeName(); // Qt v5.8.0 changed the way it was handling null in QML. We treat it as a // special case though there may be other implications still to be // discovered. if (qstrcmp(type_name, "std::nullptr_t") == 0) { Py_INCREF(Py_None); return Py_None; } const sipTypeDef *td = sipFindType(type_name); Chimera *ct = new Chimera; ct->_type = td; ct->_name = type_name; ct->_metatype = var.userType(); if (td && sipTypeIsClass(td)) ct->set_qflags(); PyObject *py = ct->toPyObject(var); delete ct; return py; } // Wrap a Python object in a QVariant without any conversion. QVariant Chimera::keep_as_pyobject(PyObject *py) { PyQt_PyObject pyobj_wrapper(py); return QVariant(PyQt_PyObject::metatype, &pyobj_wrapper); } // Convert a Python list object to a QVariantList and return true if there was // no error. bool Chimera::to_QVariantList(PyObject *py, QVariantList &cpp) const { Q_ASSERT(PyList_CheckExact(py)); for (Py_ssize_t i = 0; i < PyList_Size(py); ++i) { PyObject *val_obj = PyList_GetItem(py, i); if (!val_obj) return false; int val_state, iserr = 0; QVariant *val = reinterpret_cast(sipForceConvertToType( val_obj, sipType_QVariant, 0, SIP_NOT_NONE, &val_state, &iserr)); if (iserr) return false; cpp.append(*val); sipReleaseType(val, sipType_QVariant, val_state); } return true; } // Convert a Python object to a QVariantMap and return true if there was no // error. bool Chimera::to_QVariantMap(PyObject *py, QVariantMap &cpp) const { Q_ASSERT(PyDict_CheckExact(py)); PyObject *key_obj, *val_obj; Py_ssize_t i; i = 0; while (PyDict_Next(py, &i, &key_obj, &val_obj)) { int key_state, val_state, iserr = 0; QString *key = reinterpret_cast(sipForceConvertToType( key_obj, sipType_QString, NULL, SIP_NOT_NONE, &key_state, &iserr)); QVariant *val = reinterpret_cast(sipForceConvertToType( val_obj, sipType_QVariant, NULL, SIP_NOT_NONE, &val_state, &iserr)); if (iserr) return false; cpp.insert(*key, *val); sipReleaseType(key, sipType_QString, key_state); sipReleaseType(val, sipType_QVariant, val_state); } return true; } // Convert a QVariantMap to a Python object. PyObject *Chimera::from_QVariantMap(const QVariantMap &qm) { PyObject *py = PyDict_New(); if (!py) return 0; for (QVariantMap::const_iterator it = qm.constBegin(); it != qm.constEnd(); ++it) if (!add_variant_to_dict(py, it.key(), it.value())) { Py_DECREF(py); return 0; } return py; } // Convert a Python object to a QVariantHash and return true if there was no // error. bool Chimera::to_QVariantHash(PyObject *py, QVariantHash &cpp) const { Q_ASSERT(PyDict_CheckExact(py)); PyObject *key_obj, *val_obj; Py_ssize_t i; i = 0; while (PyDict_Next(py, &i, &key_obj, &val_obj)) { int key_state, val_state, iserr = 0; QString *key = reinterpret_cast(sipForceConvertToType( key_obj, sipType_QString, NULL, SIP_NOT_NONE, &key_state, &iserr)); QVariant *val = reinterpret_cast(sipForceConvertToType( val_obj, sipType_QVariant, NULL, SIP_NOT_NONE, &val_state, &iserr)); if (iserr) return false; cpp.insert(*key, *val); sipReleaseType(key, sipType_QString, key_state); sipReleaseType(val, sipType_QVariant, val_state); } return true; } // Return true if the type is either a C++ or Python enum. bool Chimera::isEnum() const { if (isCppEnum()) return true; if (_is_qflags) return true; return (_py_type ? _py_enum_types.contains((PyObject *)_py_type) : false); } // Convert a Python object to C++, allocating storage as necessary. Chimera::Storage *Chimera::fromPyObjectToStorage(PyObject *py) const { Chimera::Storage *st = new Chimera::Storage(this, py); if (!st->isValid()) { delete st; st = 0; } return st; } // Create the storage for a type. Chimera::Storage *Chimera::storageFactory() const { return new Chimera::Storage(this); } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_chimera.h0000644000076500000240000002305013245233150021030 0ustar philstaff00000000000000// This is the interface of the Chimera and related classes. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_CHIMERA_H #define _QPYCORE_CHIMERA_H #include #include #include #include #include #include #include #include "sipAPIQtCore.h" // This describes a type that can be understood by Python and C++ (specifically // Qt's meta-type system). The implementation assumes that the GIL is held. class Chimera { public: // Construct a copy. Chimera(const Chimera &other); // Destroy the type. ~Chimera(); // Parses a Python object as a type. Return 0 if there was an error. static const Chimera *parse(PyObject *obj); // Parses a Qt meta-property as a type. Return 0 if there was an error. static const Chimera *parse(const QMetaProperty &mprop); // Parses a C++ type name as a type. Return 0 if there was an error. static const Chimera *parse(const QByteArray &name); // The registered QVariant to PyObject convertors. typedef bool (*FromQVariantConvertorFn)(const QVariant &, PyObject **); typedef QList FromQVariantConvertors; static FromQVariantConvertors registeredFromQVariantConvertors; // Register a function for converting a Python object to a QVariant. typedef bool (*ToQVariantConvertorFn)(PyObject *, QVariant &, bool *); typedef QList ToQVariantConvertors; static ToQVariantConvertors registeredToQVariantConvertors; // Register a function for converting a Python object to QVariant data. typedef bool (*ToQVariantDataConvertorFn)(PyObject *, void *, int, bool *); typedef QList ToQVariantDataConvertors; static ToQVariantDataConvertors registeredToQVariantDataConvertors; class Signature { public: // Destroy the signature and any result type objects. ~Signature(); // The list of parsed argument types. QList parsed_arguments; // The optional parsed result type. const Chimera *result; // The original normalised signature (possibly including a method name // but excluding a return type). QByteArray signature; // The signature as declared by the user for use in exceptions. QByteArray py_signature; // The revision of a slot. Putting this here is an awful hack. int revision; // Return the parsed signature wrapped in a Python object. Ownership // of the signature is passed to the Python object. Return 0 if there // was an error. static PyObject *toPyObject(Signature *parsed_signature); // Return the parsed signature extracted from a Python object. static Signature *fromPyObject(PyObject *py); // Return the name from the signature. QByteArray name() const {return name(signature);} // Return the name from a signature. static QByteArray name(const QByteArray &signature); // Return the arguments from the signature. QByteArray arguments() const {return arguments(signature);} // Return the arguments from a signature. static QByteArray arguments(const QByteArray &signature); private: friend class Chimera; // Set if the parsed arguments are cached. bool _cached; Signature(const QByteArray &sig, bool cached) : result(0), signature(sig), py_signature(sig), _cached(cached) {} Signature(const Signature &); Signature &operator=(const Signature &); }; // Parses a normalised C++ signature. Return 0 if there was an error. static Signature *parse(const QByteArray &sig, const char *context); // Parses a C++ signature given as a Python tuple of types and an optional // name. Return 0 if there was an error. static Signature *parse(PyObject *types, const char *name, const char *context); // Raise an exception after parse() has failed. static void raiseParseException(PyObject *type, const char *context = 0); class Storage { public: // Destroy the type and any temporary data. ~Storage(); // Return the parsed type. const Chimera *type() const {return _parsed_type;} // Return the address of the stored value. void *address(); // Convert the stored value to a Python object. PyObject *toPyObject() const; private: friend class Chimera; // The parsed type. const Chimera *_parsed_type; // The storage for fundamental and value types. QVariant _value_storage; // The storage for pointer types. void *_ptr_storage; // The state of any temporary stored data. int _tmp_state; // Set if the value is valid. bool _valid; Storage(const Chimera *ct); Storage(const Chimera *ct, PyObject *py); // Return true if the value is valid. bool isValid() const {return _valid;} // Return true is the value is a pointer type. bool isPointerType() const; Storage(const Storage &); Storage &operator=(const Storage &); }; // Convert a Python object to C++, allocating storage as necessary. Return // 0 if there was an error. Storage *fromPyObjectToStorage(PyObject *py) const; // Create a storage instance for this type. Storage *storageFactory() const; // Convert a Python object to C++ at a given address. Return false if // there was an error. bool fromPyObject(PyObject *py, void *cpp) const; // Convert a Python object to a QVariant. Return false if there was an // error. bool fromPyObject(PyObject *py, QVariant *var, bool strict = true) const; // Convert a Python object to a QVariant based on the type of the object. static QVariant fromAnyPyObject(PyObject *py, int *is_err); // Convert a QVariant to a Python object. PyObject *toPyObject(const QVariant &var) const; // Convert a C++ object at an arbitary address to a Python object. PyObject *toPyObject(void *cpp) const; // Convert a QVariant to a Python object based on the type of the object. static PyObject *toAnyPyObject(const QVariant &var); // Returns the Qt meta-type id. It will be QMetaType::UnknownType if the // type isn't known to Qt's meta-type system. int metatype() const {return _metatype;} // Returns a borrowed reference to the Python type object that was used to // define the type (if any). PyObject *py_type() const {return (PyObject *)_py_type;} // Returns the C++ name of the type. const QByteArray &name() const {return _name;} // Returns true if the type is a C++ or Python enum (ie. has been passed to // Q_ENUMS or Q_FLAGS). bool isEnum() const; // Returns the SIP generated type structure. const sipTypeDef *typeDef() const {return _type;} // Register a type as a Python enum. static void registerPyEnum(PyObject *enum_type); private: // The generated type structure. This may be 0 if the type is known by Qt // but hasn't been wrapped. const sipTypeDef *_type; // The Python type object if a Python type (rather than a C++ type string) // was given. PyTypeObject *_py_type; // The Qt meta-type. This will always be valid but may refer to the // PyObject wrapper if the underlying type isn't known to Qt. int _metatype; // Set if the meta-type needn't be exact. bool _inexact; // Set if the the type is derived from QFlags. bool _is_qflags; // The C++ name of the type. QByteArray _name; // The registered int types. static QSet _py_enum_types; // The cache of previously parsed argument type lists. static QHash > _previously_parsed; Chimera(); bool parse_cpp_type(const QByteArray &type); bool parse_py_type(PyTypeObject *type_obj); sipAssignFunc get_assign_helper() const; void set_qflags(); bool isCppEnum() const {return (_type && sipTypeIsEnum(_type));} bool to_QVariantList(PyObject *py, QVariantList &cpp) const; bool to_QVariantMap(PyObject *py, QVariantMap &cpp) const; static PyObject *from_QVariantMap(const QVariantMap &qm); bool to_QVariantHash(PyObject *py, QVariantHash &cpp) const; static bool add_variant_to_dict(PyObject *dict, const QString &key_ref, const QVariant &val_ref); static void raiseParseCppException(const char *type, const char *context = 0); static QVariant keep_as_pyobject(PyObject *py); static int extract_raw_type(const QByteArray &type, QByteArray &raw_type); static QByteArray resolve_types(const QByteArray &type); Chimera &operator=(const Chimera &); }; #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_chimera_signature.cpp0000644000076500000240000000603613245233150023451 0ustar philstaff00000000000000// This is the implementation of the Chimera::Signature class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_chimera.h" // Forward declarations. #if defined(SIP_USE_PYCAPSULE) extern "C" {static void Signature_delete(PyObject *cap);} #else extern "C" {static void Signature_delete(void *sig);} #endif // Destroy the signature and any type objects. Chimera::Signature::~Signature() { if (!_cached) qDeleteAll(parsed_arguments.constBegin(), parsed_arguments.constEnd()); if (result) delete result; } // Return the parsed signature wrapped in a Python object. PyObject *Chimera::Signature::toPyObject(Chimera::Signature *parsed_signature) { #if defined(SIP_USE_PYCAPSULE) PyObject *py = PyCapsule_New(parsed_signature, NULL, Signature_delete); #else PyObject *py = PyCObject_FromVoidPtr(parsed_signature, Signature_delete); #endif if (!py) delete parsed_signature; return py; } // Return the parsed signature extracted from a Python object. Chimera::Signature *Chimera::Signature::fromPyObject(PyObject *py) { #if defined(SIP_USE_PYCAPSULE) return reinterpret_cast(PyCapsule_GetPointer(py, NULL)); #else return reinterpret_cast(PyCObject_AsVoidPtr(py)); #endif } // Return the name from a signature. QByteArray Chimera::Signature::name(const QByteArray &signature) { QByteArray nm = signature; int idx = signature.indexOf('('); if (idx >= 0) nm.truncate(idx); return nm; } // Return the arguments from a signature. QByteArray Chimera::Signature::arguments(const QByteArray &signature) { QByteArray args; int oparen = signature.indexOf('('); int cparen = signature.lastIndexOf(')'); if (oparen >= 0 && cparen >= 0) args = signature.mid(oparen, cparen - oparen + 1); return args; } #if defined(SIP_USE_PYCAPSULE) // The PyCapsule destructor for the Chimera::Signature type. static void Signature_delete(PyObject *cap) { delete reinterpret_cast( PyCapsule_GetPointer(cap, NULL)); } #else // The PyCObject destructor for the Chimera::Signature type. static void Signature_delete(void *sig) { delete reinterpret_cast(sig); } #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_chimera_storage.cpp0000644000076500000240000000642013245233150023111 0ustar philstaff00000000000000// This is the implementation of the Chimera::Storage class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_chimera.h" #include "qpycore_pyqtpyobject.h" #include "sipAPIQtCore.h" // Create a new storage instance containing a converted Python object. Chimera::Storage::Storage(const Chimera *ct, PyObject *py) : _parsed_type(ct), _ptr_storage(0), _tmp_state(0) { // We convert to a QVariant even for pointer types because this has the // side-effect of ensuring the object doesn't get garbage collected. _valid = _parsed_type->fromPyObject(py, &_value_storage); if (isPointerType()) { int is_err = 0; _ptr_storage = sipForceConvertToType(py, _parsed_type->typeDef(), 0, 0, &_tmp_state, &is_err); if (is_err) { _value_storage = QVariant(); _valid = false; } } } // Create a new storage instance. Chimera::Storage::Storage(const Chimera *ct) : _parsed_type(ct), _ptr_storage(0), _tmp_state(0), _valid(true) { if (!isPointerType()) { // Create a default fundamental or value type. _value_storage = QVariant(_parsed_type->metatype(), (const void *)0); } } // Destroy the storage and any temporary value. Chimera::Storage::~Storage() { if (_tmp_state) sipReleaseType(_ptr_storage, _parsed_type->typeDef(), _tmp_state); } // Return the address of the storage. void *Chimera::Storage::address() { if (isPointerType()) { if (_parsed_type->name().endsWith('*')) return &_ptr_storage; return _ptr_storage; } if (_parsed_type->typeDef() == sipType_QVariant) return &_value_storage; return _value_storage.data(); } // Return true if the value is a pointer type. bool Chimera::Storage::isPointerType() const { return (_parsed_type->metatype() == PyQt_PyObject::metatype && _parsed_type->typeDef()); } // Convert the stored value to a Python object. PyObject *Chimera::Storage::toPyObject() const { // Pointer-class and mapped types are not stored in the QVariant. if (isPointerType()) { if (!_ptr_storage) { Py_INCREF(Py_None); return Py_None; } return sipConvertFromType(_ptr_storage, _parsed_type->typeDef(), 0); } if (_parsed_type->typeDef() == sipType_QVariant) return Chimera::toAnyPyObject(_value_storage); return _parsed_type->toPyObject(_value_storage); } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_classinfo.cpp0000644000076500000240000000352713245233150021743 0ustar philstaff00000000000000// This contains the implementation of the Q_CLASSINFO support. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_api.h" #include "qpycore_classinfo.h" #include "sipAPIQtCore.h" static QMultiHash class_info_hash; // Add the given name/value pair to the current class info hash. PyObject *qpycore_ClassInfo(const char *name, const char *value) { // We need the frame we were called from, not the current one. struct _frame *frame = sipGetFrame(1); if (!frame) { PyErr_SetString(PyExc_RuntimeError, "no previous frame"); return 0; } class_info_hash.insert(frame, ClassInfo(QByteArray(name), QByteArray(value))); Py_INCREF(Py_None); return Py_None; } // Return the current class info list. QList qpycore_get_class_info_list() { struct _frame *frame = sipGetFrame(0); QList class_info_list = class_info_hash.values(frame); class_info_hash.remove(frame); return class_info_list; } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_classinfo.h0000644000076500000240000000215413245233150021403 0ustar philstaff00000000000000// This defines the interfaces to the Q_CLASSINFO support. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_CLASSINFO_H #define _QPYCORE_CLASSINFO_H #include #include #include typedef QPair ClassInfo; QList qpycore_get_class_info_list(); #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_decorators.cpp0000644000076500000240000001072113245233150022121 0ustar philstaff00000000000000// This is the implementation of the pyqtSlot decorator. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_objectified_strings.h" // Forward declarations. extern "C" {static PyObject *decorator(PyObject *self, PyObject *f);} // This implements the pyqtSlot decorator. PyObject *qpycore_pyqtslot(PyObject *args, PyObject *kwds) { const char *name_str = 0; PyObject *res_obj = 0; int revision = 0; static const char *kwlist[] = {"name", "result", "revision", 0}; static PyObject *no_args = 0; if (!no_args) { no_args = PyTuple_New(0); if (!no_args) return 0; } if (!PyArg_ParseTupleAndKeywords(no_args, kwds, "|sOi:pyqtSlot", const_cast(kwlist), &name_str, &res_obj, &revision)) return 0; Chimera::Signature *parsed_sig = Chimera::parse(args, name_str, "a pyqtSlot type argument"); if (!parsed_sig) return 0; // Sticking the revision here is an awful hack, but it saves creating // another data structure wrapped in a capsule. parsed_sig->revision = revision; // Parse any result type. if (res_obj) { parsed_sig->result = Chimera::parse(res_obj); if (!parsed_sig->result) { Chimera::raiseParseException(res_obj, "a pyqtSlot result"); delete parsed_sig; return 0; } } // Wrap the parsed signature in a Python object. PyObject *sig_obj = Chimera::Signature::toPyObject(parsed_sig); if (!sig_obj) return 0; // Create the decorator function itself. We stash the arguments in "self". // This may be an abuse, but it seems to be Ok. static PyMethodDef deco_method = { #if PY_VERSION_HEX >= 0x02050000 "_deco", decorator, METH_O, 0 #else const_cast("_deco"), decorator, METH_O, 0 #endif }; PyObject *obj = PyCFunction_New(&deco_method, sig_obj); Py_DECREF(sig_obj); return obj; } // This is the decorator function that saves the C++ signature as a function // attribute. static PyObject *decorator(PyObject *self, PyObject *f) { Chimera::Signature *parsed_sig = Chimera::Signature::fromPyObject(self); const QByteArray &sig = parsed_sig->signature; // Use the function name if there isn't already one. if (sig.startsWith('(')) { // Get the function's name. PyObject *nobj = PyObject_GetAttr(f, qpycore_dunder_name); if (!nobj) return 0; PyObject *ascii_obj = nobj; const char *ascii = sipString_AsASCIIString(&ascii_obj); Py_DECREF(nobj); if (!ascii) return 0; parsed_sig->signature.prepend(ascii); parsed_sig->py_signature.prepend(ascii); Py_DECREF(ascii_obj); } // See if the function has already been decorated. PyObject *decorations = PyObject_GetAttr(f, qpycore_dunder_pyqtsignature); int rc; if (decorations) { // Insert the new decoration at the head of the existing ones so that // the list order matches the order they appear in the script. rc = PyList_Insert(decorations, 0, self); } else { PyErr_Clear(); decorations = PyList_New(1); if (!decorations) return 0; Py_INCREF(self); PyList_SetItem(decorations, 0, self); // Save the new decoration. rc = PyObject_SetAttr(f, qpycore_dunder_pyqtsignature, decorations); } Py_DECREF(decorations); if (rc < 0) return 0; // Return the function. Py_INCREF(f); return f; } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_enums_flags.cpp0000644000076500000240000000705513245233150022265 0ustar philstaff00000000000000// This contains the implementation of the Q_ENUMS and Q_FLAGS support. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_chimera.h" #include "qpycore_enums_flags.h" #include "sipAPIQtCore.h" // Forward declarations. static PyObject *parse_enums_flags(PyObject *args, bool flags); // The enums and flags defined in each frame. static QMultiHash enums_flags_hash; // Add the given Q_ENUMS() arguments to the current enums/flags hash. PyObject *qpycore_Enums(PyObject *args) { return parse_enums_flags(args, false); } // Add the given Q_FLAGS() arguments to the current enums/flags hash. PyObject *qpycore_Flags(PyObject *args) { return parse_enums_flags(args, true); } // Add the given Q_ENUMS() or Q_FLAGS() arguments to the current enums/flags // hash. static PyObject *parse_enums_flags(PyObject *args, bool flags) { // We need the frame we were called from, not the current one. struct _frame *frame = sipGetFrame(1); if (!frame) { PyErr_SetString(PyExc_RuntimeError, "no previous frame"); return 0; } // Each argument is a separate enum/flag. for (Py_ssize_t i = 0; i < PyTuple_Size(args); ++i) { PyObject *arg = PyTuple_GetItem(args, i); // Check the argument's type is type. if (!PyType_Check(arg)) { PyErr_Format(PyExc_TypeError, "arguments to %s() must be type objects", (flags ? "Q_FLAGS" : "Q_ENUMS")); return 0; } // Create the basic enum/flag. EnumsFlags enums_flags(sipPyTypeName((PyTypeObject *)arg), flags); // Go through the type dictionary looking for int attributes. Py_ssize_t pos = 0; PyObject *key, *value, *dict; dict = sipPyTypeDict((PyTypeObject *)arg); while (PyDict_Next(dict, &pos, &key, &value)) { PyErr_Clear(); int i_value = sipLong_AsInt(value); if (PyErr_Occurred()) continue; const char *s_key = sipString_AsASCIIString(&key); if (!s_key) continue; enums_flags.keys.insert(s_key, i_value); Py_DECREF(key); } enums_flags_hash.insert(frame, enums_flags); Chimera::registerPyEnum(arg); } // Make sure there are no exceptions left after failed value conversions. PyErr_Clear(); Py_INCREF(Py_None); return Py_None; } // Return the current enums/flags list. QList qpycore_get_enums_flags_list() { struct _frame *frame = sipGetFrame(0); QList enums_flags_list = enums_flags_hash.values(frame); enums_flags_hash.remove(frame); return enums_flags_list; } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_enums_flags.h0000644000076500000240000000240313245233150021722 0ustar philstaff00000000000000// This defines the interfaces to the Q_ENUMS and Q_FLAGS support. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_ENUMS_FLAGS_H #define _QPYCORE_ENUMS_FLAGS_H #include #include #include struct EnumsFlags { EnumsFlags(const char *name_, bool isFlag_) : name(name_), isFlag(isFlag_) { } QByteArray name; bool isFlag; QHash keys; }; QList qpycore_get_enums_flags_list(); #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_event_handlers.cpp0000644000076500000240000000716413245233150022764 0ustar philstaff00000000000000// This is the implementation of the event handlers. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpycore_event_handlers.h" #include "sipAPIQtCore.h" // The singleton that monitors the destruction of QObject instances created by // C++. static PyQtMonitor *monitor = NULL; // Forward declarations. static void wrapped_instance_eh(void *cpp); static void collecting_wrapper_eh(sipSimpleWrapper *self); // Register the event handlers. void qpycore_register_event_handlers() { // Create the monitor. monitor = new PyQtMonitor; // Register the handlers. sipRegisterEventHandler(sipEventWrappedInstance, sipType_QObject, (void *)wrapped_instance_eh); sipRegisterEventHandler(sipEventCollectingWrapper, sipType_QObject, (void *)collecting_wrapper_eh); } // Invoked when a QObject that is created by C++ is wrapped. static void wrapped_instance_eh(void *cpp) { monitor->monitor(reinterpret_cast(cpp)); } // Invoked when the Python wrapper of a QObject is garbage collected. static void collecting_wrapper_eh(sipSimpleWrapper *self) { monitor->ignore(self); } // Monitor a C++ created QObject instance. void PyQtMonitor::monitor(QObject *cppInst) { // Connect the monitor. monitored.insert(cppInst); // Note that the C++ instance may be in the process of being destroyed. // This will happen if it is the argument to the destroyed() signal. // Python will have forgotten about the object (even if it was created by // Python) so by the time it gets wrapped again to be passed to the slot // it will appear to have been created by C++ and will therefore be subject // to monitoring. Note that subsequently calling disconnect() would cause // a crash - this is why we keep a separate record of C++ instances // currently being monitored and never explicitly disconnect the monitor. Py_BEGIN_ALLOW_THREADS connect(cppInst, SIGNAL(destroyed(QObject *)), SLOT(on_destroyed(QObject *)), Qt::UniqueConnection); Py_END_ALLOW_THREADS } // Stop monitoring a C++ created QObject instance. void PyQtMonitor::ignore(sipSimpleWrapper *pyObj) { void *addr = sipGetAddress(pyObj); if (addr) // Note the reason given above we do not disconnect the monitor. monitored.remove(reinterpret_cast(addr)); } // Invoked when a monitored C++ created QObject instance is destroyed. void PyQtMonitor::on_destroyed(QObject *cppInst) { QSet::iterator it = monitored.find(cppInst); // See if we are currently monitoring this instance. if (it != monitored.end()) { monitored.erase(it); if (sipGetInterpreter()) { PyObject *pyObj = sipGetPyObject(cppInst, sipType_QObject); if (pyObj) sipInstanceDestroyed((sipSimpleWrapper *)pyObj); } } } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_event_handlers.h0000644000076500000240000000244413245233150022425 0ustar philstaff00000000000000// This is the definition of the API of the event handlers. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_EVENT_HANDLERS_H #define _QPYCORE_EVENT_HANDLERS_H #include #include #include class PyQtMonitor : public QObject { Q_OBJECT public: void monitor(QObject *cppInst); void ignore(sipSimpleWrapper *pyObj); private Q_SLOTS: void on_destroyed(QObject *); private: QSet monitored; }; void qpycore_register_event_handlers(); #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_init.cpp0000644000076500000240000000535713245233150020730 0ustar philstaff00000000000000// This is the initialisation support code for the QtCore module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_api.h" #include "qpycore_public_api.h" #include "qpycore_pyqtslotproxy.h" #include "qpycore_qobject_helpers.h" #include "sipAPIQtCore.h" // Perform any required initialisation. void qpycore_init() { // Export the private helpers, ie. those that should not be used by // external handwritten code. sipExportSymbol("qtcore_qt_metaobject", (void *)qpycore_qobject_metaobject); sipExportSymbol("qtcore_qt_metacall", (void *)qpycore_qobject_qt_metacall); sipExportSymbol("qtcore_qt_metacast", (void *)qpycore_qobject_qt_metacast); sipExportSymbol("qtcore_qobject_sender", (void *)PyQtSlotProxy::lastSender); // Export the public API. sipExportSymbol("pyqt5_err_print", (void *)pyqt5_err_print); sipExportSymbol("pyqt5_from_argv_list", (void *)pyqt5_from_argv_list); sipExportSymbol("pyqt5_from_qvariant_by_type", (void *)pyqt5_from_qvariant_by_type); sipExportSymbol("pyqt5_get_connection_parts", (void *)pyqt5_get_connection_parts); sipExportSymbol("pyqt5_get_pyqtsignal_parts", (void *)pyqt5_get_pyqtsignal_parts); sipExportSymbol("pyqt5_get_pyqtslot_parts", (void *)pyqt5_get_pyqtslot_parts); sipExportSymbol("pyqt5_get_qmetaobject", (void *)pyqt5_get_qmetaobject); sipExportSymbol("pyqt5_get_signal_signature", (void *)pyqt5_get_signal_signature); sipExportSymbol("pyqt5_register_from_qvariant_convertor", (void *)pyqt5_register_from_qvariant_convertor); sipExportSymbol("pyqt5_register_to_qvariant_convertor", (void *)pyqt5_register_to_qvariant_convertor); sipExportSymbol("pyqt5_register_to_qvariant_data_convertor", (void *)pyqt5_register_to_qvariant_data_convertor); sipExportSymbol("pyqt5_update_argv_list", (void *)pyqt5_update_argv_list); } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_misc.cpp0000644000076500000240000000307313245233150020711 0ustar philstaff00000000000000// This contains the implementation of various odds and ends. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_api.h" #include "qpycore_misc.h" #include "sipAPIQtCore.h" // Return true if the given type was wrapped for PyQt5. bool qpycore_is_pyqt_class(const sipTypeDef *td) { return sipCheckPluginForType(td, "PyQt5.QtCore"); } #if PY_MAJOR_VERSION >= 3 // Python v3 doesn't have the Unicode equivalent of Python v2's // PyString_ConcatAndDel(). void qpycore_Unicode_ConcatAndDel(PyObject **string, PyObject *newpart) { PyObject *old = *string; if (old) { if (newpart) *string = PyUnicode_Concat(old, newpart); else *string = 0; Py_DECREF(old); } Py_XDECREF(newpart); } #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_misc.h0000644000076500000240000000204513245233150020354 0ustar philstaff00000000000000// This defines the interfaces to various odd and ends. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_MISC_H #define _QPYCORE_MISC_H #include #include "sipAPIQtCore.h" bool qpycore_is_pyqt_class(const sipTypeDef *td); #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_namespace.h0000644000076500000240000000216013245233150021353 0ustar philstaff00000000000000// This ensures that the Qt namespace macros are defined irrespective of the // version of Qt being used. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_NAMESPACE_H #define _QPYCORE_NAMESPACE_H #include #if !defined(QT_BEGIN_NAMESPACE) #define QT_BEGIN_NAMESPACE #define QT_END_NAMESPACE #endif #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_objectified_strings.h0000644000076500000240000000230713245233150023442 0ustar philstaff00000000000000// This declares a number of objectified string objects. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_OBJECTIFIED_STRINGS_H #define _QPYCORE_OBJECTIFIED_STRINGS_H #include // __name__ extern PyObject *qpycore_dunder_name; #if PY_VERSION_HEX >= 0x03040000 // __mro__ extern PyObject *qpycore_dunder_mro; #endif // __pyqtSignature__ extern PyObject *qpycore_dunder_pyqtsignature; #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_post_init.cpp.in0000644000076500000240000001324513245233150022375 0ustar philstaff00000000000000// This is the post-initialisation support code for the QtCore module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_api.h" #include "qpycore_event_handlers.h" #include "qpycore_objectified_strings.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtmethodproxy.h" #include "qpycore_pyqtproperty.h" #include "qpycore_pyqtpyobject.h" #include "qpycore_pyqtsignal.h" #include "qpycore_pyqtslotproxy.h" #include "qpycore_types.h" #include "sipAPIQtCore.h" // The objectified strings. PyObject *qpycore_dunder_name; #if PY_VERSION_HEX >= 0x03040000 PyObject *qpycore_dunder_mro; #endif PyObject *qpycore_dunder_pyqtsignature; // Perform any required post-initialisation. void qpycore_post_init(PyObject *module_dict) { // Disable the automatic destruction of C++ objects. sipSetDestroyOnExit(0); // Register the event handlers. qpycore_register_event_handlers(); // Set the new user type handler for QObject. sipSetNewUserTypeHandler(sipType_QObject, qpycore_new_user_type_handler); // Initialise the pyqtProperty type and add it to the module dictionary. if (!qpycore_pyqtProperty_init_type()) Py_FatalError("PyQt5.QtCore: Failed to initialise pyqtProperty type"); if (PyDict_SetItemString(module_dict, "pyqtProperty", (PyObject *)qpycore_pyqtProperty_TypeObject) < 0) Py_FatalError("PyQt5.QtCore: Failed to set pyqtProperty type"); // Initialise the pyqtSignal type and add it to the module dictionary. if (!qpycore_pyqtSignal_init_type()) Py_FatalError("PyQt5.QtCore: Failed to initialise pyqtSignal type"); if (PyDict_SetItemString(module_dict, "pyqtSignal", (PyObject *)qpycore_pyqtSignal_TypeObject) < 0) Py_FatalError("PyQt5.QtCore: Failed to set pyqtSignal type"); // Initialise the pyqtBoundSignal type and add it to the module dictionary. if (!qpycore_pyqtBoundSignal_init_type()) Py_FatalError("PyQt5.QtCore: Failed to initialise pyqtBoundSignal type"); if (PyDict_SetItemString(module_dict, "pyqtBoundSignal", (PyObject *)qpycore_pyqtBoundSignal_TypeObject) < 0) Py_FatalError("PyQt5.QtCore: Failed to set pyqtBoundSignal type"); // Initialise the private pyqtMethodProxy type. if (!qpycore_pyqtMethodProxy_init_type()) Py_FatalError("PyQt5.QtCore: Failed to initialise pyqtMethodProxy type"); // Register the C++ type that wraps Python objects. PyQt_PyObject::metatype = qRegisterMetaType("PyQt_PyObject"); qRegisterMetaTypeStreamOperators("PyQt_PyObject"); // Register the lazy attribute getter. if (sipRegisterAttributeGetter(sipType_QObject, qpycore_get_lazy_attr) < 0) Py_FatalError("PyQt5.QtCore: Failed to register attribute getter"); // Objectify some strings. #if PY_MAJOR_VERSION >= 3 qpycore_dunder_name = PyUnicode_FromString("__name__"); #else qpycore_dunder_name = PyString_FromString("__name__"); #endif if (!qpycore_dunder_name) Py_FatalError("PyQt5.QtCore: Failed to objectify '__name__'"); #if PY_VERSION_HEX >= 0x03040000 qpycore_dunder_mro = PyUnicode_FromString("__mro__"); if (!qpycore_dunder_mro) Py_FatalError("PyQt5.QtCore: Failed to objectify '__mro__'"); #endif #if PY_MAJOR_VERSION >= 3 qpycore_dunder_pyqtsignature = PyUnicode_FromString("__pyqtSignature__"); #else qpycore_dunder_pyqtsignature = PyString_FromString("__pyqtSignature__"); #endif if (!qpycore_dunder_pyqtsignature) Py_FatalError("PyQt5.QtCore: Failed to objectify '__pyqtSignature__'"); // Embed the configuration. PyObject *config = PyDict_New(); if (!config) Py_FatalError("PyQt5.QtCore: Failed to create PYQT_CONFIGURATION dict"); #if PY_MAJOR_VERSION >= 3 PyObject *sip_flags = PyUnicode_FromString("@@PYQT_SIP_FLAGS@@"); #else PyObject *sip_flags = PyString_FromString("@@PYQT_SIP_FLAGS@@"); #endif if (!sip_flags) Py_FatalError("PyQt5.QtCore: Failed to create PYQT_CONFIGURATION.sip_flags"); if (PyDict_SetItemString(config, "sip_flags", sip_flags) < 0) Py_FatalError("PyQt5.QtCore: Failed to set PYQT_CONFIGURATION.sip_flags"); Py_DECREF(sip_flags); if (PyDict_SetItemString(module_dict, "PYQT_CONFIGURATION", config) < 0) Py_FatalError("PyQt5.QtCore: Failed to set PYQT_CONFIGURATION dict"); Py_DECREF(config); // Create the mutex that serialises access to the slot proxies. We don't // use a statically initialised one because Qt needs some things to be // initialised first (at least for Windows) and this is the only way to // guarantee things are done in the right order. PyQtSlotProxy::mutex = new QMutex(QMutex::Recursive); #if defined(PYQT_QTCONF_PREFIX) // Load the embedded qt.conf file. if (!qpycore_qt_conf()) Py_FatalError("PyQt5.QtCore: Unable to embed qt.conf"); #endif } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_public_api.cpp0000644000076500000240000002762013245233150022071 0ustar philstaff00000000000000// This implements the public API provided by PyQt to external packages. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_chimera.h" #include "qpycore_objectified_strings.h" #include "qpycore_public_api.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtsignal.h" #include "qpycore_types.h" // A replacement for PyErr_Print() that passes the exception to qFatal(). void pyqt5_err_print() { #if PY_MAJOR_VERSION >= 3 #define CONST_CAST(s) s #else #define CONST_CAST(s) const_cast(s) #endif static bool recursing = false; if (recursing) return; recursing = true; // Save the exception in case of new exceptions raised here. PyObject *exception, *value, *traceback; PyErr_Fetch(&exception, &value, &traceback); // Get the standard exception hook. static PyObject *original_hook = 0; if (!original_hook) original_hook = PySys_GetObject(CONST_CAST("__excepthook__")); // See if the application has installed its own hook. PyObject *hook = PySys_GetObject(CONST_CAST("excepthook")); if (hook != original_hook) { // This will invoke the application's hook. PyErr_Restore(exception, value, traceback); PyErr_Print(); } else { // Make sure we have the StringIO ctor. static PyObject *stringio_ctor = 0; if (!stringio_ctor) { PyObject *io_module; #if PY_MAJOR_VERSION >= 3 io_module = PyImport_ImportModule("io"); #else PyErr_Clear(); io_module = PyImport_ImportModule("cStringIO"); if (!io_module) { PyErr_Clear(); io_module = PyImport_ImportModule("StringIO"); } #endif if (io_module) { stringio_ctor = PyObject_GetAttrString(io_module, "StringIO"); Py_DECREF(io_module); } } // Create a StringIO object and replace sys.stderr with it. PyObject *new_stderr = 0, *old_stderr; if (stringio_ctor) { old_stderr = PySys_GetObject(CONST_CAST("stderr")); if (old_stderr) { new_stderr = PyObject_CallObject(stringio_ctor, NULL); if (new_stderr) { // Make sure the old stderr doesn't get garbage collected // when it is replaced. Py_INCREF(old_stderr); if (PySys_SetObject(CONST_CAST("stderr"), new_stderr) < 0) { Py_DECREF(old_stderr); Py_DECREF(new_stderr); new_stderr = 0; } } } } // Restore the exception and print it. PyErr_Restore(exception, value, traceback); PyErr_Print(); // This will be passed to qFatal() if we can't get the detailed text. QByteArray message("Unhandled Python exception"); // Extract the detailed text if it was redirected. if (new_stderr) { // Restore sys.stderr. PySys_SetObject(CONST_CAST("stderr"), old_stderr); Py_DECREF(old_stderr); // Extract the text. PyObject *text = PyObject_CallMethod(new_stderr, CONST_CAST("getvalue"), NULL); if (text) { // Strip the text as qFatal() likes to add a newline. PyObject *stripped = PyObject_CallMethod(text, CONST_CAST("strip"), NULL); if (stripped) { Py_DECREF(text); text = stripped; } // Encode the text using the encoding of the original // sys.stderr. #if PY_MAJOR_VERSION >= 3 PyObject *encoding = PyObject_GetAttrString(old_stderr, "encoding"); if (encoding) { PyObject *encoding_bytes = PyUnicode_AsUTF8String( encoding); if (encoding_bytes) { Q_ASSERT(PyBytes_Check(encoding_bytes)); PyObject *bytes = PyUnicode_AsEncodedString(text, PyBytes_AsString(encoding_bytes), "strict"); if (bytes) { Q_ASSERT(PyBytes_Check(bytes)); message = QByteArray(PyBytes_AsString(bytes), PyBytes_Size(bytes)); Py_DECREF(bytes); } Py_DECREF(encoding_bytes); } Py_DECREF(encoding); } #else char *buffer; Py_ssize_t length; if (PyString_AsStringAndSize(text, &buffer, &length) == 0) message = QByteArray(buffer, length); #endif Py_DECREF(text); } Py_DECREF(new_stderr); } // qFatal() may not call abort. Py_BEGIN_ALLOW_THREADS qFatal("%s", message.data()); Py_END_ALLOW_THREADS } recursing = false; } // Convert a Python argv list to a conventional C argc count and argv array. char **pyqt5_from_argv_list(PyObject *argv_list, int &argc) { argc = PyList_Size(argv_list); // Allocate space for two copies of the argument pointers, plus the // terminating NULL. char **argv = new char *[2 * (argc + 1)]; // Convert the list. for (int a = 0; a < argc; ++a) { PyObject *arg_obj = PyList_GetItem(argv_list, a); char *arg; if (PyUnicode_Check(arg_obj)) { QByteArray ba_arg = qpycore_PyObject_AsQString(arg_obj).toLocal8Bit(); arg = qstrdup(ba_arg.constData()); } else if (SIPBytes_Check(arg_obj)) { arg = qstrdup(SIPBytes_AsString(arg_obj)); } else { arg = const_cast("invalid"); } argv[a] = argv[a + argc + 1] = arg; } argv[argc + argc + 1] = argv[argc] = NULL; return argv; } // Get the receiver object and slot signature for a connection. sipErrorState pyqt5_get_connection_parts(PyObject *slot, QObject *transmitter, const char *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature) { static QHash cache; QByteArray key(signal_signature); const Chimera::Signature *parsed_signal_signature = cache.value(key); if (!parsed_signal_signature) { parsed_signal_signature = Chimera::parse(key, "a signal argument"); if (!parsed_signal_signature) return sipErrorFail; cache.insert(key, parsed_signal_signature); } return qpycore_get_receiver_slot_signature(slot, transmitter, parsed_signal_signature, single_shot, receiver, slot_signature); } // Get the transmitter object and signal signature from a bound signal. sipErrorState pyqt5_get_pyqtsignal_parts(PyObject *signal, QObject **transmitter, QByteArray &signal_signature) { if (PyObject_TypeCheck(signal, qpycore_pyqtBoundSignal_TypeObject)) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)signal; *transmitter = bs->bound_qobject; signal_signature = bs->unbound_signal->parsed_signature->signature; return sipErrorNone; } return sipErrorContinue; } // Get the receiver object and slot signature from a decorated callable. sipErrorState pyqt5_get_pyqtslot_parts(PyObject *slot, QObject **receiver, QByteArray &slot_signature) { PyObject *py_receiver, *decorations; int is_err; void *qobj; Chimera::Signature *sig; sipMethodDef slot_m; // Get the QObject. if (!sipGetMethod(slot, &slot_m)) goto bad_callable; py_receiver = slot_m.pm_self; if (!py_receiver) goto bad_callable; is_err = 0; qobj = sipForceConvertToType(py_receiver, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &is_err); if (is_err) goto bad_callable; *receiver = reinterpret_cast(qobj); // Get the decoration. decorations = PyObject_GetAttr(slot, qpycore_dunder_pyqtsignature); if (!decorations) goto bad_callable; // Use the first one ignoring any others. sig = Chimera::Signature::fromPyObject(PyList_GetItem(decorations, 0)); Py_DECREF(decorations); slot_signature = sig->signature; slot_signature.prepend('1'); return sipErrorNone; bad_callable: PyErr_SetString(PyExc_TypeError, "callable must be a method of a QtCore.QObject instance decorated " "by QtCore.pyqtSlot"); return sipErrorFail; } // Get the signature string for a bound or unbound signal. sipErrorState pyqt5_get_signal_signature(PyObject *signal, const QObject *transmitter, QByteArray &signal_signature) { qpycore_pyqtSignal *ps; if (PyObject_TypeCheck(signal, qpycore_pyqtBoundSignal_TypeObject)) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)signal; if (transmitter && bs->bound_qobject != transmitter) { PyErr_SetString(PyExc_ValueError, "signal is bound to a different QObject"); return sipErrorFail; } ps = bs->unbound_signal; } else if (PyObject_TypeCheck(signal, qpycore_pyqtSignal_TypeObject)) { ps = (qpycore_pyqtSignal *)signal; } else { return sipErrorContinue; } signal_signature = ps->parsed_signature->signature; return sipErrorNone; } // Register a convertor function that converts a QVariant to a Python object. void pyqt5_register_from_qvariant_convertor( bool (*convertor)(const QVariant &, PyObject **)) { Chimera::registeredFromQVariantConvertors.append(convertor); } // Register a convertor function that converts a Python object to a QVariant. void pyqt5_register_to_qvariant_convertor( bool (*convertor)(PyObject *, QVariant &, bool *)) { Chimera::registeredToQVariantConvertors.append(convertor); } // Register a convertor function that converts a Python object to the // pre-allocated data of a QVariant with a specific meta-type. void pyqt5_register_to_qvariant_data_convertor( bool (*convertor)(PyObject *, void *, int, bool *)) { Chimera::registeredToQVariantDataConvertors.append(convertor); } // Remove arguments from the Python argv list that have been removed from the // C argv array. void pyqt5_update_argv_list(PyObject *argv_list, int argc, char **argv) { for (int a = 0, na = 0; a < argc; ++a) { // See if it was removed. if (argv[na] == argv[a + argc + 1]) ++na; else PyList_SetSlice(argv_list, na, na + 1, 0); } } // Get the QMetaObject instance for a Python type. const QMetaObject *pyqt5_get_qmetaobject(PyTypeObject *type) { return qpycore_get_qmetaobject((sipWrapperType *)type); } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_public_api.h0000644000076500000240000001120513245233150021526 0ustar philstaff00000000000000// This defines the public API provided by PyQt to external packages. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PUBLIC_API_H #define _QPYCORE_PUBLIC_API_H #include #include #include "qpycore_namespace.h" QT_BEGIN_NAMESPACE class QByteArray; struct QMetaObject; class QObject; class QVariant; QT_END_NAMESPACE // A replacement for PyErr_Print(). In PyQt v5.4 it raises a deprecation // warning and calls PyErr_Print(). In PyQt v5.5 and later it passes the text // of the exception and traceback to qFatal(). void pyqt5_err_print(); // Convert a Python list to a standard C array of command line arguments and an // argument count. char **pyqt5_from_argv_list(PyObject *argv_list, int &argc); // Convert a QVariant to a Python object according to an optional Python type. PyObject *pyqt5_from_qvariant_by_type(QVariant &value, PyObject *type); // Get the receiver object and slot signature to allow a signal to be connected // to an optional transmitter. single_shot is true if the signal will only // ever be emitted once. Returns the error state. If this is sipErrorFail // then a Python exception will have been raised. sipErrorState pyqt5_get_connection_parts(PyObject *slot, QObject *transmitter, const char *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature); // Get the QMetaObject instance for a Python type. The Python type must be a // sub-type of QObject's Python type. const QMetaObject *pyqt5_get_qmetaobject(PyTypeObject *type); // Get the transmitter object and signal signature from a bound signal. // Returns the error state. If this is sipErrorFail then a Python exception // will have been raised. sipErrorState pyqt5_get_pyqtsignal_parts(PyObject *signal, QObject **transmitter, QByteArray &signal_signature); // Get the receiver object and slot signature from a callable decorated with // pyqtSlot. Returns the error state. If this is sipErrorFail then a Python // exception will have been raised. sipErrorState pyqt5_get_pyqtslot_parts(PyObject *slot, QObject **receiver, QByteArray &slot_signature); // Get the signature string for a bound or unbound signal. If the signal is // bound, and the given transmitter is specified, then it must be bound to the // transmitter. Returns the error state. If this is sipErrorFail then a // Python exception will have been raised. sipErrorState pyqt5_get_signal_signature(PyObject *signal, const QObject *transmitter, QByteArray &signal_signature); // Register a convertor function that converts a QVariant to a Python object. // The convertor will return true if the QVariant was handled, so that no other // convertor need be tried. If the Python object returned was 0 then there was // an error and a Python exception raised. void pyqt5_register_from_qvariant_convertor( bool (*convertor)(const QVariant &, PyObject **)); // Register a convertor function that converts a Python object to a QVariant. // The convertor will return true if the Python object was handled, so that no // other convertor need be tried. If the flag set was false then there was an // error and a Python exception raised. void pyqt5_register_to_qvariant_convertor( bool (*convertor)(PyObject *, QVariant &, bool *)); // Register a convertor function that converts a Python object to the // pre-allocated data of a QVariant with a specific meta-type. The convertor // will return true if the Python object was handled, so that no other // convertor need be tried. If the flag set was false then there was an error // and a Python exception raised. void pyqt5_register_to_qvariant_data_convertor( bool (*convertor)(PyObject *, void *, int, bool *)); // Update an Python list from a standard C array of command line arguments and // an argument count. void pyqt5_update_argv_list(PyObject *argv_list, int argc, char **argv); #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_pyqtboundsignal.cpp0000644000076500000240000007257313245233150023214 0ustar philstaff00000000000000// This contains the implementation of the pyqtBoundSignal type. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_objectified_strings.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtpyobject.h" #include "qpycore_pyqtsignal.h" #include "qpycore_pyqtslotproxy.h" #include "sipAPIQtCore.h" #if PY_VERSION_HEX >= 0x02050000 #define CHAR_CAST(s) (s) #else #define CHAR_CAST(s) (const_cast(s)) #endif // The type object. PyTypeObject *qpycore_pyqtBoundSignal_TypeObject; // Forward declarations. extern "C" { static PyObject *pyqtBoundSignal_call(PyObject *self, PyObject *args, PyObject *kw); static void pyqtBoundSignal_dealloc(PyObject *self); static PyObject *pyqtBoundSignal_repr(PyObject *self); static PyObject *pyqtBoundSignal_get_doc(PyObject *self, void *); static PyObject *pyqtBoundSignal_get_signal(PyObject *self, void *); static PyObject *pyqtBoundSignal_connect(PyObject *self, PyObject *args, PyObject *kwd_args); static PyObject *pyqtBoundSignal_disconnect(PyObject *self, PyObject *args); static PyObject *pyqtBoundSignal_emit(PyObject *self, PyObject *args); static PyObject *pyqtBoundSignal_mp_subscript(PyObject *self, PyObject *subscript); } static PyObject *disconnect(qpycore_pyqtBoundSignal *bs, QObject *qrx, const char *slot); static bool do_emit(QObject *qtx, int signal_index, const Chimera::Signature *parsed_signature, const char *docstring, PyObject *sigargs); static bool get_receiver(PyObject *slot, const Chimera::Signature *signal_signature, QObject **receiver, QByteArray &slot_signature); static void slot_signature_from_decorations(QByteArray &slot_signature, const Chimera::Signature *signal_signature, PyObject *decorations); static QByteArray slot_signature_from_signal( const Chimera::Signature *signal_signature, const QByteArray &slot_name, int nr_args); static sipErrorState get_receiver_slot_signature(PyObject *slot, QObject *transmitter, const Chimera::Signature *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature, bool unique_connection_check, int no_receiver_check); static void add_slot_prefix(QByteArray &slot_signature); // Doc-strings. PyDoc_STRVAR(pyqtBoundSignal_connect_doc, "connect(slot, type=Qt.AutoConnection, no_receiver_check=False)\n" "\n" "slot is either a Python callable or another signal.\n" "type is a Qt.ConnectionType.\n" "no_receiver_check is True to disable the check that the receiver's C++\n" "instance still exists when the signal is emitted.\n"); PyDoc_STRVAR(pyqtBoundSignal_disconnect_doc, "disconnect([slot])\n" "\n" "slot is an optional Python callable or another signal. If it is omitted\n" "then the signal is disconnected from everything it is connected to."); PyDoc_STRVAR(pyqtBoundSignal_emit_doc, "emit(*args)\n" "\n" "*args are the values that will be passed as arguments to all connected\n" "slots."); PyDoc_STRVAR(pyqtBoundSignal_signal_doc, "The signature of the signal that would be returned by SIGNAL()"); // Define the methods. static PyMethodDef pyqtBoundSignal_methods[] = { {CHAR_CAST("connect"), (PyCFunction)pyqtBoundSignal_connect, METH_VARARGS|METH_KEYWORDS, CHAR_CAST(pyqtBoundSignal_connect_doc)}, {CHAR_CAST("disconnect"), pyqtBoundSignal_disconnect, METH_VARARGS, CHAR_CAST(pyqtBoundSignal_disconnect_doc)}, {CHAR_CAST("emit"), pyqtBoundSignal_emit, METH_VARARGS, CHAR_CAST(pyqtBoundSignal_emit_doc)}, {0, 0, 0, 0} }; // The getters/setters. static PyGetSetDef pyqtBoundSignal_getset[] = { {(char *)"__doc__", pyqtBoundSignal_get_doc, NULL, NULL, NULL}, {(char *)"signal", pyqtBoundSignal_get_signal, NULL, (char *)pyqtBoundSignal_signal_doc, NULL}, {NULL, NULL, NULL, NULL, NULL} }; #if PY_VERSION_HEX >= 0x03040000 // Define the slots. static PyType_Slot qpycore_pyqtBoundSignal_Slots[] = { {Py_tp_new, (void *)PyType_GenericNew}, {Py_tp_dealloc, (void *)pyqtBoundSignal_dealloc}, {Py_tp_repr, (void *)pyqtBoundSignal_repr}, {Py_tp_call, (void *)pyqtBoundSignal_call}, {Py_mp_subscript, (void *)pyqtBoundSignal_mp_subscript}, {Py_tp_methods, pyqtBoundSignal_methods}, {Py_tp_getset, pyqtBoundSignal_getset}, {0, 0} }; // Define the type. static PyType_Spec qpycore_pyqtBoundSignal_Spec = { "PyQt5.QtCore.pyqtBoundSignal", sizeof (qpycore_pyqtBoundSignal), 0, Py_TPFLAGS_DEFAULT, qpycore_pyqtBoundSignal_Slots }; #else // Define the mapping methods. static PyMappingMethods pyqtBoundSignal_as_mapping = { 0, /* mp_length */ pyqtBoundSignal_mp_subscript, /* mp_subscript */ 0, /* mp_ass_subscript */ }; // Define the type. static PyTypeObject qpycore_pyqtBoundSignal_Type = { PyVarObject_HEAD_INIT(NULL, 0) CHAR_CAST("PyQt5.QtCore.pyqtBoundSignal"), /* tp_name */ sizeof (qpycore_pyqtBoundSignal), /* tp_basicsize */ 0, /* tp_itemsize */ pyqtBoundSignal_dealloc, /* tp_dealloc */ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ pyqtBoundSignal_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ &pyqtBoundSignal_as_mapping, /* tp_as_mapping */ 0, /* tp_hash */ pyqtBoundSignal_call, /* tp_call */ 0, /* tp_str */ 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ 0, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ pyqtBoundSignal_methods, /* tp_methods */ 0, /* tp_members */ pyqtBoundSignal_getset, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ PyType_GenericNew, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ 0, /* tp_del */ 0, /* tp_version_tag */ #if PY_VERSION_HEX >= 0x03040000 0, /* tp_finalize */ #endif }; #endif // The __doc__ getter. static PyObject *pyqtBoundSignal_get_doc(PyObject *self, void *) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; const char *docstring = bs->unbound_signal->docstring; if (!docstring) { Py_INCREF(Py_None); return Py_None; } if (*docstring == '\1') ++docstring; return #if PY_MAJOR_VERSION >= 3 PyUnicode_FromString #else PyString_FromString #endif (docstring); } // The __signal__ getter. static PyObject *pyqtBoundSignal_get_signal(PyObject *self, void *) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; return #if PY_MAJOR_VERSION >= 3 PyUnicode_FromString #else PyString_FromString #endif (bs->unbound_signal->parsed_signature->signature.constData()); } // The type repr slot. static PyObject *pyqtBoundSignal_repr(PyObject *self) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; QByteArray name = bs->unbound_signal->parsed_signature->name(); return #if PY_MAJOR_VERSION >= 3 PyUnicode_FromFormat #else PyString_FromFormat #endif ("", name.constData() + 1, sipPyTypeName(Py_TYPE(bs->bound_pyobject)), bs->bound_pyobject); } // The type call slot. static PyObject *pyqtBoundSignal_call(PyObject *self, PyObject *args, PyObject *kw) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; return qpycore_call_signal_overload(bs->unbound_signal, bs->bound_pyobject, args, kw); } // The type dealloc slot. static void pyqtBoundSignal_dealloc(PyObject *self) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; Py_XDECREF((PyObject *)bs->unbound_signal); PyObject_Del(self); } // Initialise the type and return true if there was no error. bool qpycore_pyqtBoundSignal_init_type() { #if PY_VERSION_HEX >= 0x03040000 qpycore_pyqtBoundSignal_TypeObject = (PyTypeObject *)PyType_FromSpec( &qpycore_pyqtBoundSignal_Spec); return qpycore_pyqtBoundSignal_TypeObject; #else if (PyType_Ready(&qpycore_pyqtBoundSignal_Type) < 0) return false; qpycore_pyqtBoundSignal_TypeObject = &qpycore_pyqtBoundSignal_Type; return true; #endif } // Create a bound signal. PyObject *qpycore_pyqtBoundSignal_New(qpycore_pyqtSignal *unbound_signal, PyObject *bound_pyobject, QObject *bound_qobject) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)PyType_GenericNew( qpycore_pyqtBoundSignal_TypeObject, 0, 0); if (bs) { Py_INCREF((PyObject *)unbound_signal); bs->unbound_signal = unbound_signal; bs->bound_pyobject = bound_pyobject; bs->bound_qobject = bound_qobject; } return (PyObject *)bs; } // The mapping subscript slot. static PyObject *pyqtBoundSignal_mp_subscript(PyObject *self, PyObject *subscript) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; qpycore_pyqtSignal *ps = qpycore_find_signal(bs->unbound_signal, subscript, "a bound signal type argument"); if (!ps) return 0; // Create a new bound signal. return qpycore_pyqtBoundSignal_New(ps, bs->bound_pyobject, bs->bound_qobject); } // Connect a signal. static PyObject *pyqtBoundSignal_connect(PyObject *self, PyObject *args, PyObject *kwd_args) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; static const char *kwds[] = { "slot", "type", "no_receiver_check", 0 }; PyObject *py_slot, *py_type = 0; int no_receiver_check = 0; if (!PyArg_ParseTupleAndKeywords(args, kwd_args, #if PY_VERSION_HEX >= 0x03030000 "O|Op:connect", #else "O|Oi:connect", #endif const_cast(kwds), &py_slot, &py_type, &no_receiver_check)) return 0; Qt::ConnectionType q_type = Qt::AutoConnection; if (py_type) { int v = sipConvertToEnum(py_type, sipType_Qt_ConnectionType); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "Qt.ConnectionType expected, not '%s'", sipPyTypeName(Py_TYPE(py_slot))); return 0; } q_type = static_cast(v); } QObject *q_tx = bs->bound_qobject, *q_rx; Chimera::Signature *signal_signature = bs->unbound_signal->parsed_signature; QByteArray slot_signature; sipErrorState estate = get_receiver_slot_signature(py_slot, q_tx, signal_signature, false, &q_rx, slot_signature, ((q_type & Qt::UniqueConnection) == Qt::UniqueConnection), no_receiver_check); if (estate != sipErrorNone) { if (estate == sipErrorContinue) sipBadCallableArg(0, py_slot); return 0; } // Connect the signal to the slot and handle any errors. bool ok; Py_BEGIN_ALLOW_THREADS ok = QObject::connect(q_tx, signal_signature->signature.constData(), q_rx, slot_signature.constData(), q_type); Py_END_ALLOW_THREADS if (!ok) { QByteArray slot_name = Chimera::Signature::name(slot_signature); PyErr_Format(PyExc_TypeError, "connect() failed between %s and %s()", signal_signature->py_signature.constData(), slot_name.constData() + 1); return 0; } Py_INCREF(Py_None); return Py_None; } // Get the receiver object and slot signature from a callable or signal. sipErrorState qpycore_get_receiver_slot_signature(PyObject *slot, QObject *transmitter, const Chimera::Signature *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature) { return get_receiver_slot_signature(slot, transmitter, signal_signature, single_shot, receiver, slot_signature, false, 0); } // Get the receiver object and slot signature from a callable or signal. // Optionally disable the receiver check. static sipErrorState get_receiver_slot_signature(PyObject *slot, QObject *transmitter, const Chimera::Signature *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature, bool unique_connection_check, int no_receiver_check) { // See if the slot is a signal. if (PyObject_TypeCheck(slot, qpycore_pyqtBoundSignal_TypeObject)) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)slot; *receiver = bs->bound_qobject; slot_signature = bs->unbound_signal->parsed_signature->signature; return sipErrorNone; } // Make sure the slot is callable. if (!PyCallable_Check(slot)) return sipErrorContinue; // See if the slot can be used directly (ie. it wraps a Qt slot) or if it // needs a proxy. if (!get_receiver(slot, signal_signature, receiver, slot_signature)) return sipErrorFail; if (slot_signature.isEmpty()) { slot_signature = PyQtSlotProxy::proxy_slot_signature; // Create a proxy for the slot. PyQtSlotProxy *proxy; if (unique_connection_check) { proxy = PyQtSlotProxy::findSlotProxy(transmitter, signal_signature->signature, slot); if (proxy) { // We give more information than we could if it was a Qt slot // but to be consistent we raise a TypeError even though it's // not the most appropriate for the type of error. PyErr_SetString(PyExc_TypeError, "connection is not unique"); return sipErrorFail; } } Py_BEGIN_ALLOW_THREADS proxy = new PyQtSlotProxy(slot, transmitter, signal_signature, single_shot); if (no_receiver_check) proxy->disableReceiverCheck(); if (proxy->metaObject()) { if (*receiver) proxy->moveToThread((*receiver)->thread()); *receiver = proxy; } else { delete proxy; proxy = 0; } Py_END_ALLOW_THREADS if (!proxy) return sipErrorFail; } return sipErrorNone; } // Disconnect all of a QObject's signals. PyObject *qpycore_qobject_disconnect(const QObject *q_obj) { PyObject *res_obj; bool ok; Py_BEGIN_ALLOW_THREADS ok = q_obj->disconnect(); Py_END_ALLOW_THREADS if (ok) { res_obj = Py_None; Py_INCREF(res_obj); } else { PyErr_SetString(PyExc_TypeError, "disconnect() of all signals failed"); res_obj = 0; } PyQtSlotProxy::deleteSlotProxies(q_obj, QByteArray()); return res_obj; } // Disconnect a signal. static PyObject *pyqtBoundSignal_disconnect(PyObject *self, PyObject *args) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; PyObject *py_slot = 0, *res_obj; Chimera::Signature *signal_signature = bs->unbound_signal->parsed_signature; if (!PyArg_ParseTuple(args, "|O:disconnect", &py_slot)) return 0; // See if we are disconnecting everything from the overload. if (!py_slot) { res_obj = disconnect(bs, 0, 0); PyQtSlotProxy::deleteSlotProxies(bs->bound_qobject, signal_signature->signature); return res_obj; } // See if the slot is a signal. if (PyObject_TypeCheck(py_slot, qpycore_pyqtBoundSignal_TypeObject)) { qpycore_pyqtBoundSignal *slot_bs = (qpycore_pyqtBoundSignal *)py_slot; return disconnect(bs, slot_bs->bound_qobject, slot_bs->unbound_signal->parsed_signature->signature.constData()); } if (!PyCallable_Check(py_slot)) { sipBadCallableArg(0, py_slot); return 0; } // See if the slot has been used directly (ie. it wraps a Qt slot) or if it // has a proxy. QObject *q_rx; QByteArray slot_signature; if (!get_receiver(py_slot, signal_signature, &q_rx, slot_signature)) return 0; if (!slot_signature.isEmpty()) return disconnect(bs, q_rx, slot_signature.constData()); PyQtSlotProxy *proxy = PyQtSlotProxy::findSlotProxy(bs->bound_qobject, signal_signature->signature, py_slot); if (!proxy) { PyErr_Format(PyExc_TypeError, "'%s' object is not connected", sipPyTypeName(Py_TYPE(py_slot))); return 0; } res_obj = disconnect(bs, proxy, PyQtSlotProxy::proxy_slot_signature.constData()); proxy->disable(); return res_obj; } // Disonnect a signal from a slot and handle any errors. static PyObject *disconnect(qpycore_pyqtBoundSignal *bs, QObject *qrx, const char *slot) { Chimera::Signature *signature = bs->unbound_signal->parsed_signature; bool ok; Py_BEGIN_ALLOW_THREADS ok = QObject::disconnect(bs->bound_qobject, signature->signature.constData(), qrx, slot); Py_END_ALLOW_THREADS if (!ok) { QByteArray tx_name = signature->name(); if (slot) { QByteArray rx_name = Chimera::Signature::name(slot); PyErr_Format(PyExc_TypeError, "disconnect() failed between '%s' and '%s'", tx_name.constData() + 1, rx_name.constData() + 1); } else { PyErr_Format(PyExc_TypeError, "disconnect() failed between '%s' and all its connections", tx_name.constData() + 1); } return 0; } Py_INCREF(Py_None); return Py_None; } // Emit a signal. static PyObject *pyqtBoundSignal_emit(PyObject *self, PyObject *args) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; if (!bs->bound_qobject->signalsBlocked()) { Q_ASSERT(PyTuple_Check(args)); qpycore_pyqtSignal *ps = bs->unbound_signal; // Use the emitter if there is one. if (ps->emitter) { if (ps->emitter(bs->bound_qobject, args) < 0) return 0; } else { Chimera::Signature *signature = ps->parsed_signature; int mo_index = bs->bound_qobject->metaObject()->indexOfSignal( signature->signature.constData() + 1); if (mo_index < 0) { PyErr_Format(PyExc_AttributeError, "'%s' does not have a signal with the signature %s", sipPyTypeName(Py_TYPE(bs->bound_pyobject)), signature->signature.constData() + 1); return 0; } // Use the docstring if there is one and it is auto-generated. const char *docstring = bs->unbound_signal->docstring; if (!docstring || *docstring != '\1') { docstring = signature->py_signature.constData(); } else { // Skip the auto-generated marker. ++docstring; } if (!do_emit(bs->bound_qobject, mo_index, signature, docstring, args)) return 0; } } Py_INCREF(Py_None); return Py_None; } // Emit a signal based on a parsed signature. static bool do_emit(QObject *qtx, int signal_index, const Chimera::Signature *parsed_signature, const char *docstring, PyObject *sigargs) { const QList &args = parsed_signature->parsed_arguments; if (args.size() != PyTuple_Size(sigargs)) { PyErr_Format(PyExc_TypeError, "%s signal has %d argument(s) but %d provided", docstring, args.size(), (int)PyTuple_Size(sigargs)); return false; } // Convert the arguments. QList values; void **argv = new void *[1 + args.size()]; argv[0] = 0; QList::const_iterator it = args.constBegin(); for (int a = 0; it != args.constEnd(); ++a) { PyObject *arg_obj = PyTuple_GetItem(sigargs, a); Chimera::Storage *val = (*it)->fromPyObjectToStorage(arg_obj); if (!val) { // Mimic SIP's exception text. PyErr_Format(PyExc_TypeError, "%s.emit(): argument %d has unexpected type '%s'", docstring, a + 1, sipPyTypeName(Py_TYPE(arg_obj))); delete[] argv; qDeleteAll(values.constBegin(), values.constEnd()); return false; } argv[1 + a] = val->address(); values << val; ++it; } Py_BEGIN_ALLOW_THREADS QMetaObject::activate(qtx, signal_index, argv); Py_END_ALLOW_THREADS delete[] argv; qDeleteAll(values.constBegin(), values.constEnd()); return true; } // Get the receiver QObject from the slot (if there is one) and its signature // (if it wraps a Qt slot). Return true if there was no error. static bool get_receiver(PyObject *slot, const Chimera::Signature *signal_signature, QObject **receiver, QByteArray &slot_signature) { bool try_qt_slot = false; PyObject *rx_self = 0; QByteArray rx_name; sipMethodDef slot_m; sipCFunctionDef slot_cf; // Assume there isn't a QObject receiver. *receiver = 0; if (sipGetMethod(slot, &slot_m)) { rx_self = slot_m.pm_self; // The method may be any callable so don't assume it has a __name__. PyObject *f_name_obj = PyObject_GetAttr(slot_m.pm_function, qpycore_dunder_name); if (!f_name_obj) return false; PyObject *f_name_owner_obj = f_name_obj; const char *f_name = sipString_AsASCIIString(&f_name_owner_obj); Py_DECREF(f_name_obj); if (!f_name) return false; rx_name = f_name; Py_DECREF(f_name_owner_obj); // See if this has been decorated. PyObject *decorations = PyObject_GetAttr(slot_m.pm_function, qpycore_dunder_pyqtsignature); if (decorations) { // Choose from the decorations. slot_signature_from_decorations(slot_signature, signal_signature, decorations); Py_DECREF(decorations); if (slot_signature.isEmpty()) { PyErr_Format(PyExc_TypeError, "decorated slot has no signature compatible with %s", signal_signature->py_signature.constData()); return false; } } Py_XINCREF(rx_self); } else if (sipGetCFunction(slot, &slot_cf)) { rx_self = slot_cf.cf_self; rx_name = slot_cf.cf_function->ml_name; // We actually want the C++ name which may (in theory) be completely // different. However this will cope with the exec_ case which is // probably good enough. if (rx_name.endsWith('_')) rx_name.chop(1); try_qt_slot = true; Py_XINCREF(rx_self); } else { static PyObject *partial = 0; // Get the functools.partial type object if we haven't already got it. if (!partial) { PyObject *functools = PyImport_ImportModule("functools"); if (functools) { partial = PyObject_GetAttrString(functools, "partial"); Py_DECREF(functools); } } // If we know about functools.partial then remove the outer partials to // get to the original function. if (partial && PyObject_IsInstance(slot, partial) > 0) { PyObject *func = slot; sipMethodDef func_m; sipCFunctionDef func_cf; Py_INCREF(func); do { PyObject *subfunc = PyObject_GetAttrString(func, "func"); Py_DECREF(func); // This should never happen. if (!subfunc) return false; func = subfunc; } while (PyObject_IsInstance(func, partial) > 0); if (sipGetMethod(func, &func_m)) rx_self = func_m.pm_self; else if (sipGetCFunction(func, &func_cf)) rx_self = func_cf.cf_self; Py_XINCREF(rx_self); Py_DECREF(func); } } if (!rx_self) return true; int iserr = 0; void *rx = sipForceConvertToType(rx_self, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr); Py_DECREF(rx_self); PyErr_Clear(); if (iserr) return true; *receiver = reinterpret_cast(rx); // If there might be a Qt slot that can handle the arguments (or a subset // of them) then use it. Otherwise we will fallback to using a proxy. if (try_qt_slot) { const QMetaObject *mo = (*receiver)->metaObject(); for (int ol = signal_signature->parsed_arguments.count(); ol >= 0; --ol) { slot_signature = slot_signature_from_signal(signal_signature, rx_name, ol); if (mo->indexOfSlot(slot_signature.constData()) >= 0) { add_slot_prefix(slot_signature); break; } slot_signature.clear(); } } return true; } // Return the full name and signature of a Qt slot that a signal can be // connected to, taking the slot decorators into account. static void slot_signature_from_decorations(QByteArray &slot_signature, const Chimera::Signature *signal, PyObject *decorations) { Chimera::Signature *candidate = 0; int signal_nr_args = signal->parsed_arguments.count(); for (Py_ssize_t i = 0; i < PyList_Size(decorations); ++i) { Chimera::Signature *slot = Chimera::Signature::fromPyObject( PyList_GetItem(decorations, i)); int slot_nr_args = slot->parsed_arguments.count(); // Ignore the slot if it requires more arguments than the signal will // provide. if (slot_nr_args > signal_nr_args) continue; // Ignore the slot if any current candidate will accept more arguments. if (candidate && candidate->parsed_arguments.count() >= slot_nr_args) continue; for (int a = 0; a < slot_nr_args; ++a) { const Chimera *sig_arg = signal->parsed_arguments.at(a); const Chimera *slot_arg = slot->parsed_arguments.at(a); // We simply compare meta-types. if (sig_arg->metatype() != slot_arg->metatype()) { slot = 0; break; } } // If all of the slot's arguments were Ok then this will be the best // candidate so far. if (slot) candidate = slot; } if (candidate) { slot_signature = candidate->signature; add_slot_prefix(slot_signature); } } // Return the full name and signature of the Qt slot that a signal would be // connected to. static QByteArray slot_signature_from_signal( const Chimera::Signature *signal_signature, const QByteArray &slot_name, int nr_args) { QByteArray slot_sig = slot_name; slot_sig.append('('); for (int a = 0; a < nr_args; ++a) { if (a != 0) slot_sig.append(','); slot_sig.append(signal_signature->parsed_arguments.at(a)->name()); } slot_sig.append(')'); return slot_sig; } // Add the prefix to a signaturethat tells Qt it is a slot. static void add_slot_prefix(QByteArray &slot_signature) { slot_signature.prepend('1'); } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_pyqtboundsignal.h0000644000076500000240000000374713245233150022656 0ustar philstaff00000000000000// This defines the interfaces for the pyqtBoundSignal type. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTBOUNDSIGNAL_H #define _QPYCORE_PYQTBOUNDSIGNAL_H #include #include #include "qpycore_pyqtsignal.h" #include "qpycore_namespace.h" QT_BEGIN_NAMESPACE class QByteArray; class QObject; QT_END_NAMESPACE extern "C" { // This defines the structure of a bound PyQt signal. typedef struct { PyObject_HEAD // The unbound signal. qpycore_pyqtSignal *unbound_signal; // A borrowed reference to the wrapped QObject that is bound to the signal. PyObject *bound_pyobject; // The QObject that is bound to the signal. QObject *bound_qobject; } qpycore_pyqtBoundSignal; } // The type object. extern PyTypeObject *qpycore_pyqtBoundSignal_TypeObject; bool qpycore_pyqtBoundSignal_init_type(); PyObject *qpycore_pyqtBoundSignal_New(qpycore_pyqtSignal *unbound_signal, PyObject *bound_pyobject, QObject *bound_qobject); sipErrorState qpycore_get_receiver_slot_signature(PyObject *slot, QObject *transmitter, const Chimera::Signature *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature); #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_pyqtconfigure.cpp0000644000076500000240000001531513245233150022657 0ustar philstaff00000000000000// This implements the helper for QObject.pyqtConfigure(). // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_pyqtboundsignal.h" #include "sipAPIQtCore.h" // The result of handling a keyword argument. enum ArgStatus { AsError, AsHandled, AsUnknown }; static ArgStatus handle_argument(PyObject *self, QObject *qobj, PyObject *name_obj, PyObject *value_obj); // This is the helper for QObject.pyqtConfigure(). PyObject *qpycore_pyqtconfigure(PyObject *self, PyObject *args, PyObject *kwds) { // Check there are no positional arguments. if (PyTuple_Size(args) > 0) { PyErr_SetString(PyExc_TypeError, "QObject.pyqtConfigure() has no positional arguments"); return 0; } // Get the QObject self. QObject *qobj = reinterpret_cast( sipGetCppPtr((sipSimpleWrapper *)self, sipType_QObject)); if (!qobj) return 0; PyObject *name_obj, *value_obj; Py_ssize_t pos = 0; while (PyDict_Next(kwds, &pos, &name_obj, &value_obj)) { ArgStatus as = handle_argument(self, qobj, name_obj, value_obj); if (as == AsError) return 0; if (as == AsUnknown) { #if PY_MAJOR_VERSION >= 3 PyErr_Format(PyExc_AttributeError, "'%S' is not the name of a Qt property or signal", name_obj); #else PyObject *name_s = PyObject_Str(name_obj); if (name_s != NULL) { PyErr_Format(PyExc_AttributeError, "'%s' is not the name of a Qt property or signal", PyString_AsString(name_s)); Py_DECREF(name_s); } #endif return 0; } } Py_INCREF(Py_None); return Py_None; } // This is the helper for the QObject %FinalisationCode. int qpycore_qobject_finalisation(PyObject *self, QObject *qobj, PyObject *kwds, PyObject **updated_kwds) { // Handle the trivial case. if (!kwds) return 0; // The dict we will be removing handled arguments from, 0 if it needs to be // created. PyObject *unused = (updated_kwds ? 0 : kwds); PyObject *name_obj, *value_obj; Py_ssize_t pos = 0; while (PyDict_Next(kwds, &pos, &name_obj, &value_obj)) { ArgStatus as = handle_argument(self, qobj, name_obj, value_obj); if (as == AsError) return -1; if (as == AsHandled) { if (!unused) { unused = PyDict_Copy(kwds); if (!unused) return -1; *updated_kwds = unused; } if (PyDict_DelItem(unused, name_obj) < 0) { if (updated_kwds) Py_DECREF(unused); return -1; } } } return 0; } // Handle a single keyword argument. static ArgStatus handle_argument(PyObject *self, QObject *qobj, PyObject *name_obj, PyObject *value_obj) { const QMetaObject *mo = qobj->metaObject(); // Get the name encoded name. PyObject *enc_name_obj = name_obj; const char *name = sipString_AsASCIIString(&enc_name_obj); if (!name) return AsError; QByteArray enc_name(name); Py_DECREF(enc_name_obj); // See if it is a property. int idx = mo->indexOfProperty(enc_name.constData()); if (idx >= 0) { QMetaProperty prop = mo->property(idx); // A negative type means a QVariant property. if (prop.userType() >= 0) { const Chimera *ct = Chimera::parse(prop); if (!ct) { PyErr_Format(PyExc_TypeError, "'%s' keyword argument has an invalid type", enc_name.constData()); return AsError; } QVariant value; bool valid = ct->fromPyObject(value_obj, &value); delete ct; if (!valid) return AsError; qobj->setProperty(enc_name.constData(), value); } else { int value_state, iserr = 0; QVariant *value = reinterpret_cast( sipForceConvertToType(value_obj, sipType_QVariant, 0, SIP_NOT_NONE, &value_state, &iserr)); if (iserr) return AsError; qobj->setProperty(enc_name.constData(), *value); sipReleaseType(value, sipType_QVariant, value_state); } } else { bool unknown = true; // See if it is a signal. PyObject *sig = PyObject_GetAttr(self, name_obj); if (sig) { if (PyObject_TypeCheck(sig, qpycore_pyqtBoundSignal_TypeObject)) { static PyObject *connect_obj = NULL; if (!connect_obj) { #if PY_MAJOR_VERSION >= 3 connect_obj = PyUnicode_FromString("connect"); #else connect_obj = PyString_FromString("connect"); #endif if (!connect_obj) { Py_DECREF(sig); return AsError; } } // Connect the slot. PyObject *res = PyObject_CallMethodObjArgs(sig, connect_obj, value_obj, 0); if (!res) { Py_DECREF(sig); return AsError; } Py_DECREF(res); unknown = false; } Py_DECREF(sig); } if (unknown) { PyErr_Clear(); return AsUnknown; } } return AsHandled; } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_pyqtmethodproxy.cpp0000644000076500000240000002341113245233150023254 0ustar philstaff00000000000000// This contains the implementation of the pyqtMethodProxy type. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include #include "qpycore_chimera.h" #include "qpycore_pyqtmethodproxy.h" // The type object. PyTypeObject *qpycore_pyqtMethodProxy_TypeObject; // Forward declarations. extern "C" { static PyObject *pyqtMethodProxy_call(PyObject *self, PyObject *args, PyObject *kw_args); static void pyqtMethodProxy_dealloc(PyObject *self); } static void parse_arg(PyObject *args, int arg_nr, const QList &types, QGenericArgument &arg, Chimera::Storage **storage, bool &failed, const char *py_name); #if PY_VERSION_HEX >= 0x03040000 // Define the slots. static PyType_Slot qpycore_pyqtMethodProxy_Slots[] = { {Py_tp_new, (void *)PyType_GenericNew}, {Py_tp_dealloc, (void *)pyqtMethodProxy_dealloc}, {Py_tp_call, (void *)pyqtMethodProxy_call}, {0, 0} }; // Define the type. static PyType_Spec qpycore_pyqtMethodProxy_Spec = { "PyQt5.QtCore.pyqtMethodProxy", sizeof (qpycore_pyqtMethodProxy), 0, Py_TPFLAGS_DEFAULT, qpycore_pyqtMethodProxy_Slots }; #else // Define the type. static PyTypeObject qpycore_pyqtMethodProxy_Type = { PyVarObject_HEAD_INIT(NULL, 0) #if PY_VERSION_HEX >= 0x02050000 "PyQt5.QtCore.pyqtMethodProxy", /* tp_name */ #else const_cast("PyQt5.QtCore.pyqtMethodProxy"), /* tp_name */ #endif sizeof (qpycore_pyqtMethodProxy), /* tp_basicsize */ 0, /* tp_itemsize */ pyqtMethodProxy_dealloc, /* tp_dealloc */ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ 0, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ 0, /* tp_hash */ pyqtMethodProxy_call, /* tp_call */ 0, /* tp_str */ 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ 0, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ 0, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ PyType_GenericNew, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ 0, /* tp_del */ 0, /* tp_version_tag */ #if PY_VERSION_HEX >= 0x03040000 0, /* tp_finalize */ #endif }; #endif // The type dealloc slot. static void pyqtMethodProxy_dealloc(PyObject *self) { qpycore_pyqtMethodProxy *mp = (qpycore_pyqtMethodProxy *)self; delete mp->py_name; PyObject_Del(self); } // The type call slot. static PyObject *pyqtMethodProxy_call(PyObject *self, PyObject *args, PyObject *kw_args) { qpycore_pyqtMethodProxy *mp = (qpycore_pyqtMethodProxy *)self; const char *py_name = mp->py_name->constData(); // Check for keyword arguments. if (kw_args) { PyErr_Format(PyExc_TypeError, "%s() does not support keyword arguments", py_name); return 0; } QMetaMethod method = mp->qobject->metaObject()->method(mp->method_index); QList arg_types = method.parameterTypes(); if (PyTuple_Size(args) != arg_types.size()) { PyErr_Format(PyExc_TypeError, "%s() called with %zd arguments but %d expected", py_name, PyTuple_Size(args), arg_types.size()); return 0; } // Parse the return type and the arguments. QGenericReturnArgument ret; QGenericArgument a0, a1, a2, a3, a4, a5, a6, a7, a8, a9; Chimera::Storage *return_storage, *storage[10]; QByteArray return_type(method.typeName()); bool failed = false; return_storage = 0; if (!return_type.isEmpty()) { const Chimera *ct = Chimera::parse(return_type); if (!ct) { PyErr_Format(PyExc_TypeError, "unable to convert return value of %s from '%s' to a Python object", py_name, return_type.constData()); return 0; } return_storage = ct->storageFactory(); ret = QGenericReturnArgument(return_type.constData(), return_storage->address()); } parse_arg(args, 0, arg_types, a0, storage, failed, py_name); parse_arg(args, 1, arg_types, a1, storage, failed, py_name); parse_arg(args, 2, arg_types, a2, storage, failed, py_name); parse_arg(args, 3, arg_types, a3, storage, failed, py_name); parse_arg(args, 4, arg_types, a4, storage, failed, py_name); parse_arg(args, 5, arg_types, a5, storage, failed, py_name); parse_arg(args, 6, arg_types, a6, storage, failed, py_name); parse_arg(args, 7, arg_types, a7, storage, failed, py_name); parse_arg(args, 8, arg_types, a8, storage, failed, py_name); parse_arg(args, 9, arg_types, a9, storage, failed, py_name); // Invoke the method. PyObject *result = 0; if (!failed) { failed = !method.invoke(mp->qobject, ret, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); if (failed) { PyErr_Format(PyExc_TypeError, "invocation of %s() failed", py_name); } else if (return_storage) { result = return_storage->toPyObject(); } else { result = Py_None; Py_INCREF(result); } } // Release any storage. if (return_storage) { delete return_storage->type(); delete return_storage; } for (int i = 0; i < 10; ++i) { Chimera::Storage *st = storage[i]; if (st) { delete st->type(); delete st; } } return result; } // Convert a Python object to a QGenericArgument. static void parse_arg(PyObject *args, int arg_nr, const QList &types, QGenericArgument &arg, Chimera::Storage **storage, bool &failed, const char *py_name) { // Initialise so that we can safely release later. storage[arg_nr] = 0; // If we have already failed then there is nothing to do. if (failed) return; // If we have run out of arguments then there is nothing to do. if (arg_nr >= types.size()) return; PyObject *py_arg = PyTuple_GetItem(args, arg_nr); const QByteArray &cpp_type = types.at(arg_nr); const Chimera *ct = Chimera::parse(cpp_type); Chimera::Storage *st; if (ct) st = ct->fromPyObjectToStorage(py_arg); else st = 0; if (!st) { if (ct) delete ct; PyErr_Format(PyExc_TypeError, "unable to convert argument %d of %s from '%s' to '%s'", arg_nr, py_name, sipPyTypeName(Py_TYPE(py_arg)), cpp_type.constData()); failed = true; return; } storage[arg_nr] = st; arg = QGenericArgument(cpp_type.constData(), st->address()); } // Initialise the type and return true if there was no error. bool qpycore_pyqtMethodProxy_init_type() { #if PY_VERSION_HEX >= 0x03040000 qpycore_pyqtMethodProxy_TypeObject = (PyTypeObject *)PyType_FromSpec( &qpycore_pyqtMethodProxy_Spec); return qpycore_pyqtMethodProxy_TypeObject; #else if (PyType_Ready(&qpycore_pyqtMethodProxy_Type) < 0) return false; qpycore_pyqtMethodProxy_TypeObject = &qpycore_pyqtMethodProxy_Type; return true; #endif } // Create a proxy for a bound introspected method. PyObject *qpycore_pyqtMethodProxy_New(QObject *qobject, int method_index, const QByteArray &py_name) { qpycore_pyqtMethodProxy *mp; mp = (qpycore_pyqtMethodProxy *)PyType_GenericAlloc( qpycore_pyqtMethodProxy_TypeObject, 0); if (!mp) return 0; mp->qobject = qobject; mp->method_index = method_index; mp->py_name = new QByteArray(py_name); return (PyObject *)mp; } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_pyqtmethodproxy.h0000644000076500000240000000335113245233150022722 0ustar philstaff00000000000000// This defines the interfaces for the pyqtMethodProxy type. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTMETHODPROXY_H #define _QPYCORE_PYQTMETHODPROXY_H #include #include #include #include "qpycore_namespace.h" QT_BEGIN_NAMESPACE class QObject; QT_END_NAMESPACE extern "C" { // This defines the structure of a pyqtMethodProxy object. typedef struct _qpycore_pyqtMethodProxy { PyObject_HEAD // The QObject whose method being proxied. QObject *qobject; // The method index in the QObject's meta-object. int method_index; // The fully qualified Python name of the method. const QByteArray *py_name; } qpycore_pyqtMethodProxy; } // The type object. extern PyTypeObject *qpycore_pyqtMethodProxy_TypeObject; bool qpycore_pyqtMethodProxy_init_type(); PyObject *qpycore_pyqtMethodProxy_New(QObject *qobject, int method_index, const QByteArray &py_name); #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_pyqtproperty.cpp0000644000076500000240000004067213245233150022566 0ustar philstaff00000000000000// This is the implementation of pyqtProperty. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_chimera.h" #include "qpycore_pyqtproperty.h" #include "qpycore_pyqtsignal.h" // The type object. PyTypeObject *qpycore_pyqtProperty_TypeObject; // Forward declarations. extern "C" { static PyObject *pyqtProperty_getter(PyObject *self, PyObject *getter); static PyObject *pyqtProperty_setter(PyObject *self, PyObject *setter); static PyObject *pyqtProperty_deleter(PyObject *self, PyObject *deleter); static PyObject *pyqtProperty_reset(PyObject *self, PyObject *reset); static PyObject *pyqtProperty_descr_get(PyObject *self, PyObject *obj, PyObject *); static int pyqtProperty_descr_set(PyObject *self, PyObject *obj, PyObject *value); static PyObject *pyqtProperty_call(PyObject *self, PyObject *args, PyObject *kwds); static void pyqtProperty_dealloc(PyObject *self); static int pyqtProperty_init(PyObject *self, PyObject *args, PyObject *kwds); static int pyqtProperty_traverse(PyObject *self, visitproc visit, void *arg); } static qpycore_pyqtProperty *clone(qpycore_pyqtProperty *orig); static PyObject *getter_docstring(PyObject *getter); // Doc-strings. PyDoc_STRVAR(pyqtProperty_doc, "pyqtProperty(type, fget=None, fset=None, freset=None, fdel=None, doc=None,\n" " designable=True, scriptable=True, stored=True, user=False,\n" " constant=False, final=False, notify=None,\n" " revision=0) -> property attribute\n" "\n" "type is the type of the property. It is either a type object or a string\n" "that is the name of a C++ type.\n" "freset is a function for resetting an attribute to its default value.\n" "designable sets the DESIGNABLE flag (the default is True for writable\n" "properties and False otherwise).\n" "scriptable sets the SCRIPTABLE flag.\n" "stored sets the STORED flag.\n" "user sets the USER flag.\n" "constant sets the CONSTANT flag.\n" "final sets the FINAL flag.\n" "notify is the NOTIFY signal.\n" "revision is the REVISION.\n" "The other parameters are the same as those required by the standard Python\n" "property type. Properties defined using pyqtProperty behave as both Python\n" "and Qt properties." "\n" "Decorators can be used to define new properties or to modify existing ones."); PyDoc_STRVAR(getter_doc, "Descriptor to change the getter on a property."); PyDoc_STRVAR(setter_doc, "Descriptor to change the setter on a property."); PyDoc_STRVAR(deleter_doc, "Descriptor to change the deleter on a property."); PyDoc_STRVAR(reset_doc, "Descriptor to change the reset on a property."); // Define the attributes. static PyMemberDef pyqtProperty_members[] = { {const_cast("type"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_type), READONLY, 0}, {const_cast("fget"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_get), READONLY, 0}, {const_cast("fset"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_set), READONLY, 0}, {const_cast("fdel"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_del), READONLY, 0}, {const_cast("freset"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_reset), READONLY, 0}, {const_cast("__doc__"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_doc), READONLY, 0}, {0, 0, 0, 0, 0} }; // Define the methods. static PyMethodDef pyqtProperty_methods[] = { {"getter", pyqtProperty_getter, METH_O, getter_doc}, {"read", pyqtProperty_getter, METH_O, getter_doc}, {"setter", pyqtProperty_setter, METH_O, setter_doc}, {"write", pyqtProperty_setter, METH_O, setter_doc}, {"deleter", pyqtProperty_deleter, METH_O, deleter_doc}, {"reset", pyqtProperty_reset, METH_O, reset_doc}, {0, 0, 0, 0} }; #if PY_VERSION_HEX >= 0x03040000 // Define the slots. static PyType_Slot qpycore_pyqtProperty_Slots[] = { {Py_tp_new, (void *)PyType_GenericNew}, {Py_tp_alloc, (void *)PyType_GenericAlloc}, {Py_tp_init, (void *)pyqtProperty_init}, {Py_tp_dealloc, (void *)pyqtProperty_dealloc}, {Py_tp_free, (void *)PyObject_GC_Del}, {Py_tp_call, (void *)pyqtProperty_call}, {Py_tp_getattro, (void *)PyObject_GenericGetAttr}, {Py_tp_doc, (void *)pyqtProperty_doc}, {Py_tp_traverse, (void *)pyqtProperty_traverse}, {Py_tp_descr_get, (void *)pyqtProperty_descr_get}, {Py_tp_descr_set, (void *)pyqtProperty_descr_set}, {Py_tp_methods, pyqtProperty_methods}, {Py_tp_members, pyqtProperty_members}, {0, 0} }; // Define the type. static PyType_Spec qpycore_pyqtProperty_Spec = { "PyQt5.QtCore.pyqtProperty", sizeof (qpycore_pyqtProperty), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_BASETYPE, qpycore_pyqtProperty_Slots }; #else // Define the type. static PyTypeObject qpycore_pyqtProperty_Type = { PyVarObject_HEAD_INIT(NULL, 0) #if PY_VERSION_HEX >= 0x02050000 "PyQt5.QtCore.pyqtProperty", #else const_cast("PyQt5.QtCore.pyqtProperty"), #endif sizeof (qpycore_pyqtProperty), 0, pyqtProperty_dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, pyqtProperty_call, 0, PyObject_GenericGetAttr, 0, 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_BASETYPE, pyqtProperty_doc, pyqtProperty_traverse, 0, 0, 0, 0, 0, pyqtProperty_methods, pyqtProperty_members, 0, 0, 0, pyqtProperty_descr_get, pyqtProperty_descr_set, 0, pyqtProperty_init, PyType_GenericAlloc, PyType_GenericNew, PyObject_GC_Del, 0, 0, 0, 0, 0, 0, 0, 0, #if PY_VERSION_HEX >= 0x03040000 0, #endif }; #endif // This is the sequence number to allocate to the next PyQt property to be // defined. This ensures that properties appear in the QMetaObject in the same // order that they are defined in Python. static uint pyqtprop_sequence_nr = 0; // The pyqtProperty dealloc function. static void pyqtProperty_dealloc(PyObject *self) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; PyObject_GC_UnTrack(self); Py_XDECREF(pp->pyqtprop_get); Py_XDECREF(pp->pyqtprop_set); Py_XDECREF(pp->pyqtprop_del); Py_XDECREF(pp->pyqtprop_doc); Py_XDECREF(pp->pyqtprop_reset); Py_XDECREF(pp->pyqtprop_notify); Py_XDECREF(pp->pyqtprop_type); delete pp->pyqtprop_parsed_type; #if PY_VERSION_HEX >= 0x03040000 ((destructor)PyType_GetSlot(Py_TYPE(self), Py_tp_free))(self); #else Py_TYPE(self)->tp_free(self); #endif } // The descriptor getter. static PyObject *pyqtProperty_descr_get(PyObject *self, PyObject *obj, PyObject *) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; if (!obj || obj == Py_None) { Py_INCREF(self); return self; } if (!pp->pyqtprop_get) { PyErr_SetString(PyExc_AttributeError, "unreadable attribute"); return 0; } return PyObject_CallFunction(pp->pyqtprop_get, const_cast("(O)"), obj); } // The descriptor setter. static int pyqtProperty_descr_set(PyObject *self, PyObject *obj, PyObject *value) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; PyObject *func, *res; func = (value ? pp->pyqtprop_set : pp->pyqtprop_del); if (!func) { PyErr_SetString(PyExc_AttributeError, (value ? "can't set attribute" : "can't delete attribute")); return -1; } if (value) res = PyObject_CallFunction(func, const_cast("(OO)"), obj, value); else res = PyObject_CallFunction(func, const_cast("(O)"), obj); if (!res) return -1; Py_DECREF(res); return 0; } // The pyqtProperty traverse function. static int pyqtProperty_traverse(PyObject *self, visitproc visit, void *arg) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; int vret; if (pp->pyqtprop_get) { vret = visit(pp->pyqtprop_get, arg); if (vret != 0) return vret; } if (pp->pyqtprop_set) { vret = visit(pp->pyqtprop_set, arg); if (vret != 0) return vret; } if (pp->pyqtprop_del) { vret = visit(pp->pyqtprop_del, arg); if (vret != 0) return vret; } if (pp->pyqtprop_doc) { vret = visit(pp->pyqtprop_doc, arg); if (vret != 0) return vret; } if (pp->pyqtprop_reset) { vret = visit(pp->pyqtprop_reset, arg); if (vret != 0) return vret; } if (pp->pyqtprop_notify) { vret = visit(pp->pyqtprop_notify, arg); if (vret != 0) return vret; } if (pp->pyqtprop_type) { vret = visit(pp->pyqtprop_type, arg); if (vret != 0) return vret; } return 0; } // The pyqtProperty init function. static int pyqtProperty_init(PyObject *self, PyObject *args, PyObject *kwds) { PyObject *type, *get = 0, *set = 0, *reset = 0, *del = 0, *doc = 0, *notify = 0; int scriptable = 1, stored = 1, user = 0, constant = 0, final = 0; int designable = 1, revision = 0; static const char *kwlist[] = {"type", "fget", "fset", "freset", "fdel", "doc", "designable", "scriptable", "stored", "user", "constant", "final", "notify", "revision", 0}; qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; pp->pyqtprop_sequence = pyqtprop_sequence_nr++; if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|OOOOOiiiiiiO!i:pyqtProperty", const_cast(kwlist), &type, &get, &set, &reset, &del, &doc, &designable, &scriptable, &stored, &user, &constant, &final, qpycore_pyqtSignal_TypeObject, ¬ify, &revision)) return -1; if (get == Py_None) get = 0; if (set == Py_None) set = 0; if (del == Py_None) del = 0; if (reset == Py_None) reset = 0; if (notify == Py_None) notify = 0; // Parse the type. const Chimera *ptype = Chimera::parse(type); if (!ptype) { Chimera::raiseParseException(type, "a property"); return -1; } pp->pyqtprop_parsed_type = ptype; Py_XINCREF(get); Py_XINCREF(set); Py_XINCREF(del); Py_XINCREF(doc); Py_XINCREF(reset); Py_XINCREF(notify); Py_INCREF(type); // If no docstring was given try the getter. if (!doc || doc == Py_None) { PyObject *getter_doc = getter_docstring(get); if (getter_doc) { Py_XDECREF(doc); doc = getter_doc; } } pp->pyqtprop_get = get; pp->pyqtprop_set = set; pp->pyqtprop_del = del; pp->pyqtprop_doc = doc; pp->pyqtprop_reset = reset; pp->pyqtprop_notify = notify; pp->pyqtprop_type = type; // ResolveEditable is always set. unsigned flags = 0x00080000; if (designable) flags |= 0x00001000; if (scriptable) flags |= 0x00004000; if (stored) flags |= 0x00010000; if (user) flags |= 0x00100000; if (constant) flags |= 0x00000400; if (final) flags |= 0x00000800; pp->pyqtprop_flags = flags; pp->pyqtprop_revision = revision; return 0; } // Calling the property is a shorthand way of changing the getter. static PyObject *pyqtProperty_call(PyObject *self, PyObject *args, PyObject *kwds) { PyObject *get; static const char *kwlist[] = {"fget", 0}; if (!PyArg_ParseTupleAndKeywords(args, kwds, "O:pyqtProperty", const_cast(kwlist), &get)) return 0; return pyqtProperty_getter(self, get); } // Return a copy of the property with a different getter. static PyObject *pyqtProperty_getter(PyObject *self, PyObject *getter) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; pp = clone(pp); if (pp) { Py_XDECREF(pp->pyqtprop_get); if (getter == Py_None) getter = 0; else Py_INCREF(getter); pp->pyqtprop_get = getter; // Use the getter's docstring if it has one. PyObject *getter_doc = getter_docstring(getter); if (getter_doc) { Py_XDECREF(pp->pyqtprop_doc); pp->pyqtprop_doc = getter_doc; } } return (PyObject *)pp; } // Return a copy of the property with a different setter. static PyObject *pyqtProperty_setter(PyObject *self, PyObject *setter) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; pp = clone(pp); if (pp) { Py_XDECREF(pp->pyqtprop_set); if (setter == Py_None) setter = 0; else Py_INCREF(setter); pp->pyqtprop_set = setter; } return (PyObject *)pp; } // Return a copy of the property with a different deleter. static PyObject *pyqtProperty_deleter(PyObject *self, PyObject *deleter) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; pp = clone(pp); if (pp) { Py_XDECREF(pp->pyqtprop_del); if (deleter == Py_None) deleter = 0; else Py_INCREF(deleter); pp->pyqtprop_del = deleter; } return (PyObject *)pp; } // Return a copy of the property with a different reset. static PyObject *pyqtProperty_reset(PyObject *self, PyObject *reset) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; pp = clone(pp); if (pp) { Py_XDECREF(pp->pyqtprop_reset); if (reset == Py_None) reset = 0; else Py_INCREF(reset); pp->pyqtprop_reset = reset; } return (PyObject *)pp; } // Create a clone of a property. static qpycore_pyqtProperty *clone(qpycore_pyqtProperty *orig) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)PyType_GenericNew( Py_TYPE(orig), 0, 0); if (pp) { pp->pyqtprop_get = orig->pyqtprop_get; Py_XINCREF(pp->pyqtprop_get); pp->pyqtprop_set = orig->pyqtprop_set; Py_XINCREF(pp->pyqtprop_set); pp->pyqtprop_del = orig->pyqtprop_del; Py_XINCREF(pp->pyqtprop_del); pp->pyqtprop_doc = orig->pyqtprop_doc; Py_XINCREF(pp->pyqtprop_doc); pp->pyqtprop_reset = orig->pyqtprop_reset; Py_XINCREF(pp->pyqtprop_reset); pp->pyqtprop_notify = orig->pyqtprop_notify; Py_XINCREF(pp->pyqtprop_notify); pp->pyqtprop_type = orig->pyqtprop_type; Py_XINCREF(pp->pyqtprop_type); pp->pyqtprop_parsed_type = new Chimera(*orig->pyqtprop_parsed_type); pp->pyqtprop_flags = orig->pyqtprop_flags; pp->pyqtprop_revision = orig->pyqtprop_revision; pp->pyqtprop_sequence = orig->pyqtprop_sequence; } return pp; } // Return the docstring of an optional getter or 0 if it doesn't have one. static PyObject *getter_docstring(PyObject *getter) { // Handle the trivial case. if (!getter) return 0; PyObject *getter_doc = PyObject_GetAttrString(getter, "__doc__"); if (!getter_doc) { PyErr_Clear(); return 0; } if (getter_doc == Py_None) { Py_DECREF(getter_doc); return 0; } return getter_doc; } // Initialise the type and return true if there was no error. bool qpycore_pyqtProperty_init_type() { #if PY_VERSION_HEX >= 0x03040000 qpycore_pyqtProperty_TypeObject = (PyTypeObject *)PyType_FromSpec( &qpycore_pyqtProperty_Spec); return qpycore_pyqtProperty_TypeObject; #else if (PyType_Ready(&qpycore_pyqtProperty_Type) < 0) return false; qpycore_pyqtProperty_TypeObject = &qpycore_pyqtProperty_Type; return true; #endif } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_pyqtproperty.h0000644000076500000240000000403413245233150022223 0ustar philstaff00000000000000// This contains the definitions for the implementation of pyqtProperty. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTPROPERTY_H #define _QPYCORE_PYQTPROPERTY_H #include class Chimera; extern "C" { // This defines the structure of a PyQt property. typedef struct { PyObject_HEAD // The fget/getter/read callable. PyObject *pyqtprop_get; // The fset/setter/write callable. PyObject *pyqtprop_set; // The fdel/deleter callable. PyObject *pyqtprop_del; // The docstring. PyObject *pyqtprop_doc; // The freset/reset callable. PyObject *pyqtprop_reset; // The notify signal. PyObject *pyqtprop_notify; // The property type. PyObject *pyqtprop_type; // The parsed type information. const Chimera *pyqtprop_parsed_type; // The DESIGNABLE, SCRIPTABLE, STORED, USER, CONSTANT and FINAL flags. unsigned pyqtprop_flags; // The REVISION. int pyqtprop_revision; // The property's sequence number that determines the position of the // property in the QMetaObject. uint pyqtprop_sequence; } qpycore_pyqtProperty; } // The type object. extern PyTypeObject *qpycore_pyqtProperty_TypeObject; bool qpycore_pyqtProperty_init_type(); #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_pyqtpyobject.cpp0000644000076500000240000001071113245233150022510 0ustar philstaff00000000000000// This contains the support for Python objects and Qt's metatype system. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_api.h" #include "qpycore_pyqtpyobject.h" #include "sipAPIQtCore.h" // The Qt metatype id. int PyQt_PyObject::metatype; // The current pickle protocol. PyObject *qpycore_pickle_protocol; // Wrap a Python object. PyQt_PyObject::PyQt_PyObject(PyObject *py) { pyobject = py; SIP_BLOCK_THREADS Py_XINCREF(pyobject); SIP_UNBLOCK_THREADS } // Create a new wrapper, with no Python object. This is called by Qt's // metatype system. PyQt_PyObject::PyQt_PyObject() { pyobject = 0; } // Create a copy of an existing wrapper. This is called by Qt's metatype // system. PyQt_PyObject::PyQt_PyObject(const PyQt_PyObject &other) { pyobject = other.pyobject; SIP_BLOCK_THREADS Py_XINCREF(pyobject); SIP_UNBLOCK_THREADS } // Destroy a wrapper. PyQt_PyObject::~PyQt_PyObject() { // Qt can still be tidying up after Python has gone so make sure that it // hasn't. if (Py_IsInitialized()) { SIP_BLOCK_THREADS Py_XDECREF(pyobject); SIP_UNBLOCK_THREADS } pyobject = 0; } // Assignment operator. PyQt_PyObject &PyQt_PyObject::operator=(const PyQt_PyObject &other) { pyobject = other.pyobject; SIP_BLOCK_THREADS Py_XINCREF(pyobject); SIP_UNBLOCK_THREADS return *this; } // Serialise operator. QDataStream &operator<<(QDataStream &out, const PyQt_PyObject &obj) { PyObject *ser_obj = 0; const char *ser = 0; uint len = 0; if (obj.pyobject) { static PyObject *dumps = 0; SIP_BLOCK_THREADS if (!dumps) { PyObject *pickle = PyImport_ImportModule("pickle"); if (pickle) { dumps = PyObject_GetAttrString(pickle, "dumps"); Py_DECREF(pickle); } } if (dumps) { if (!qpycore_pickle_protocol) { Py_INCREF(Py_None); qpycore_pickle_protocol = Py_None; } ser_obj = PyObject_CallFunctionObjArgs(dumps, obj.pyobject, qpycore_pickle_protocol, 0); if (ser_obj) { if (SIPBytes_Check(ser_obj)) { ser = SIPBytes_AsString(ser_obj); len = SIPBytes_Size(ser_obj); } else { Py_DECREF(ser_obj); ser_obj = 0; } } else { pyqt5_err_print(); } } SIP_UNBLOCK_THREADS } out.writeBytes(ser, len); if (ser_obj) { SIP_BLOCK_THREADS Py_DECREF(ser_obj); SIP_UNBLOCK_THREADS } return out; } // De-serialise operator. QDataStream &operator>>(QDataStream &in, PyQt_PyObject &obj) { char *ser; uint len; in.readBytes(ser, len); if (len) { static PyObject *loads = 0; SIP_BLOCK_THREADS if (!loads) { PyObject *pickle = PyImport_ImportModule("pickle"); if (pickle) { loads = PyObject_GetAttrString(pickle, "loads"); Py_DECREF(pickle); } } if (loads) { PyObject *ser_obj = SIPBytes_FromStringAndSize(ser, len); if (ser_obj) { obj.pyobject = PyObject_CallFunctionObjArgs(loads, ser_obj, 0); Py_DECREF(ser_obj); } } SIP_UNBLOCK_THREADS } delete[] ser; return in; } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_pyqtpyobject.h0000644000076500000240000000327713245233150022166 0ustar philstaff00000000000000// This contains definitions related to the support for Python objects and Qt's // meta-type system. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTPYOBJECT_H #define _QPYCORE_PYQTPYOBJECT_H #include #include #include // This class is used to wrap a PyObject so it can be passed around Qt's // meta-type system while maintaining its reference count. class PyQt_PyObject { public: PyQt_PyObject(PyObject *py); PyQt_PyObject(); PyQt_PyObject(const PyQt_PyObject &other); ~PyQt_PyObject(); PyQt_PyObject &operator=(const PyQt_PyObject &other); // The Python object being wrapped. PyObject *pyobject; // The Qt meta-type id. static int metatype; }; QDataStream &operator<<(QDataStream &out, const PyQt_PyObject &obj); QDataStream &operator>>(QDataStream &in, PyQt_PyObject &obj); Q_DECLARE_METATYPE(PyQt_PyObject) #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_pyqtsignal.cpp0000644000076500000240000005416213245233150022156 0ustar philstaff00000000000000// This contains the implementation of the pyqtSignal type. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtsignal.h" // The type object. PyTypeObject *qpycore_pyqtSignal_TypeObject; // Forward declarations. extern "C" { static PyObject *pyqtSignal_call(PyObject *self, PyObject *args, PyObject *kw); static void pyqtSignal_dealloc(PyObject *self); static PyObject *pyqtSignal_descr_get(PyObject *self, PyObject *obj, PyObject *type); static int pyqtSignal_init(PyObject *self, PyObject *args, PyObject *kwd_args); static PyObject *pyqtSignal_repr(PyObject *self); static PyObject *pyqtSignal_mp_subscript(PyObject *self, PyObject *subscript); static PyObject *pyqtSignal_get_doc(PyObject *self, void *); } static int init_signal_from_types(qpycore_pyqtSignal *ps, const char *name, const QList *parameter_names, int revision, PyObject *types); static void append_overload(qpycore_pyqtSignal *ps); static bool is_signal_name(const char *sig, const QByteArray &name); // The getters/setters. static PyGetSetDef pyqtSignal_getset[] = { {const_cast("__doc__"), pyqtSignal_get_doc, NULL, NULL, NULL}, {NULL, NULL, NULL, NULL, NULL} }; PyDoc_STRVAR(pyqtSignal_doc, "pyqtSignal(*types, name: str = ..., revision: int = ..., arguments: Sequence = ...) -> PYQT_SIGNAL\n" "\n" "types is normally a sequence of individual types. Each type is either a\n" "type object or a string that is the name of a C++ type. Alternatively\n" "each type could itself be a sequence of types each describing a different\n" "overloaded signal.\n" "name is the optional C++ name of the signal. If it is not specified then\n" "the name of the class attribute that is bound to the signal is used.\n" "revision is the optional revision of the signal that is exported to QML.\n" "If it is not specified then 0 is used.\n" "arguments is the optional sequence of the names of the signal's arguments.\n"); #if PY_VERSION_HEX >= 0x03040000 // Define the slots. static PyType_Slot qpycore_pyqtSignal_Slots[] = { {Py_tp_new, (void *)PyType_GenericNew}, {Py_tp_init, (void *)pyqtSignal_init}, {Py_tp_dealloc, (void *)pyqtSignal_dealloc}, {Py_tp_doc, (void *)pyqtSignal_doc}, {Py_tp_repr, (void *)pyqtSignal_repr}, {Py_tp_call, (void *)pyqtSignal_call}, {Py_tp_descr_get, (void *)pyqtSignal_descr_get}, {Py_mp_subscript, (void *)pyqtSignal_mp_subscript}, {Py_tp_getset, pyqtSignal_getset}, {0, 0} }; // Define the type. static PyType_Spec qpycore_pyqtSignal_Spec = { "PyQt5.QtCore.pyqtSignal", sizeof (qpycore_pyqtSignal), 0, Py_TPFLAGS_DEFAULT, qpycore_pyqtSignal_Slots }; #else // Define the mapping methods. static PyMappingMethods pyqtSignal_as_mapping = { 0, /* mp_length */ pyqtSignal_mp_subscript, /* mp_subscript */ 0, /* mp_ass_subscript */ }; // Define the type. static PyTypeObject qpycore_pyqtSignal_Type = { PyVarObject_HEAD_INIT(NULL, 0) #if PY_VERSION_HEX >= 0x02050000 "PyQt5.QtCore.pyqtSignal", /* tp_name */ #else const_cast("PyQt5.QtCore.pyqtSignal"), /* tp_name */ #endif sizeof (qpycore_pyqtSignal), /* tp_basicsize */ 0, /* tp_itemsize */ pyqtSignal_dealloc, /* tp_dealloc */ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ pyqtSignal_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ &pyqtSignal_as_mapping, /* tp_as_mapping */ 0, /* tp_hash */ pyqtSignal_call, /* tp_call */ 0, /* tp_str */ 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ pyqtSignal_doc, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ 0, /* tp_methods */ 0, /* tp_members */ pyqtSignal_getset, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ pyqtSignal_descr_get, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ pyqtSignal_init, /* tp_init */ 0, /* tp_alloc */ PyType_GenericNew, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ 0, /* tp_del */ 0, /* tp_version_tag */ #if PY_VERSION_HEX >= 0x03040000 0, /* tp_finalize */ #endif }; #endif // The __doc__ getter. static PyObject *pyqtSignal_get_doc(PyObject *self, void *) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; // Make sure we have the default signal. ps = ps->default_signal; QByteArray doc; // Get any docstrings from any non-signal overloads. if (ps->non_signals && ps->non_signals->ml_doc) { doc.append('\n'); doc.append(ps->non_signals->ml_doc); } // Get any docstrings from the signals. do { const char *docstring = ps->docstring; if (docstring) { if (*docstring == '\1') ++docstring; doc.append('\n'); doc.append(docstring); doc.append(" [signal]"); } ps = ps->next; } while (ps); if (doc.isEmpty()) { Py_INCREF(Py_None); return Py_None; } return #if PY_MAJOR_VERSION >= 3 PyUnicode_FromString #else PyString_FromString #endif (doc.constData() + 1); } // The type repr slot. static PyObject *pyqtSignal_repr(PyObject *self) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; return #if PY_MAJOR_VERSION >= 3 PyUnicode_FromFormat #else PyString_FromFormat #endif ("", ps->parsed_signature->py_signature.constData()); } // The type call slot. static PyObject *pyqtSignal_call(PyObject *self, PyObject *args, PyObject *kw) { return qpycore_call_signal_overload((qpycore_pyqtSignal *)self, 0, args, kw); } // The type dealloc slot. static void pyqtSignal_dealloc(PyObject *self) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; delete ps->parsed_signature; if (ps->parameter_names) delete ps->parameter_names; // If we are the default then we own the overloads references. if (ps == ps->default_signal) { qpycore_pyqtSignal *next = ps->next; while (next) { ps = next; next = ps->next; Py_DECREF((PyObject *)ps); } } PyObject_Del(self); } // The type descriptor get slot. static PyObject *pyqtSignal_descr_get(PyObject *self, PyObject *obj, PyObject *) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; // Return the unbound signal if there is nothing to bind it to. if (obj == NULL || obj == Py_None) { Py_INCREF(self); return self; } // Get the QObject. int is_err = 0; void *qobject = sipForceConvertToType(obj, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &is_err); if (is_err) return 0; // Return the bound signal. return qpycore_pyqtBoundSignal_New(ps, obj, reinterpret_cast(qobject)); } // The type init slot. static int pyqtSignal_init(PyObject *self, PyObject *args, PyObject *kwd_args) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; // Get the keyword arguments. PyObject *name_obj = 0; const char *name = 0; int revision = 0; QList *parameter_names = 0; if (kwd_args) { Py_ssize_t pos = 0; PyObject *key, *value; while (PyDict_Next(kwd_args, &pos, &key, &value)) { #if PY_MAJOR_VERSION >= 3 if (PyUnicode_CompareWithASCIIString(key, "name") == 0) #else Q_ASSERT(PyString_Check(key)); if (qstrcmp(PyString_AsString(key), "name") == 0) #endif { name_obj = value; name = sipString_AsASCIIString(&name_obj); if (!name) { PyErr_Format(PyExc_TypeError, "signal 'name' must be a str, not %s", sipPyTypeName(Py_TYPE(value))); return -1; } } #if PY_MAJOR_VERSION >= 3 else if (PyUnicode_CompareWithASCIIString(key, "revision") == 0) #else else if (qstrcmp(PyString_AsString(key), "revision") == 0) #endif { revision = sipLong_AsInt(value); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "signal 'revision' must be an int, not %s", sipPyTypeName(Py_TYPE(value))); Py_XDECREF(name_obj); return -1; } } #if PY_MAJOR_VERSION >= 3 else if (PyUnicode_CompareWithASCIIString(key, "arguments") == 0) #else else if (qstrcmp(PyString_AsString(key), "arguments") == 0) #endif { bool ok = true; if (PySequence_Check(value)) { Py_ssize_t len = PySequence_Size(value); parameter_names = new QList; for (Py_ssize_t i = 0; i < len; ++i) { PyObject *py_attr = PySequence_GetItem(value, i); if (!py_attr) { ok = false; break; } PyObject *py_ascii_attr = py_attr; const char *attr = sipString_AsASCIIString( &py_ascii_attr); Py_DECREF(py_attr); if (!attr) { ok = false; break; } parameter_names->append(QByteArray(attr)); Py_DECREF(py_ascii_attr); } } else { ok = false; } if (!ok) { PyErr_Format(PyExc_TypeError, "signal 'attribute_names' must be a sequence of str, not %s", sipPyTypeName(Py_TYPE(value))); if (parameter_names) delete parameter_names; Py_XDECREF(name_obj); return -1; } } else { #if PY_MAJOR_VERSION >= 3 PyErr_Format(PyExc_TypeError, "pyqtSignal() got an unexpected keyword argument '%U'", key); #else PyErr_Format(PyExc_TypeError, "pyqtSignal() got an unexpected keyword argument '%s'", PyString_AsString(key)); #endif Py_XDECREF(name_obj); return -1; } } } // If there is at least one argument and it is a sequence then assume all // arguments are sequences. Unfortunately a string is also a sequence so // check for tuples and lists explicitly. if (PyTuple_Size(args) > 0 && (PyTuple_Check(PyTuple_GetItem(args, 0)) || PyList_Check(PyTuple_GetItem(args, 0)))) { for (Py_ssize_t i = 0; i < PyTuple_Size(args); ++i) { PyObject *types = PySequence_Tuple(PyTuple_GetItem(args, i)); if (!types) { PyErr_SetString(PyExc_TypeError, "pyqtSignal() argument expected to be sequence of types"); if (name) { Py_DECREF(name_obj); } return -1; } int rc; if (i == 0) { // The first is the default. rc = init_signal_from_types(ps, name, parameter_names, revision, types); } else { qpycore_pyqtSignal *overload = (qpycore_pyqtSignal *)PyType_GenericNew(qpycore_pyqtSignal_TypeObject, 0, 0); if (!overload) { rc = -1; } else if ((rc = init_signal_from_types(overload, name, 0, revision, types)) < 0) { Py_DECREF((PyObject *)overload); } else { overload->default_signal = ps; append_overload(overload); } } Py_DECREF(types); if (rc < 0) { if (name) { Py_DECREF(name_obj); } return -1; } } } else if (init_signal_from_types(ps, name, parameter_names, revision, args) < 0) { if (name) { Py_DECREF(name_obj); } return -1; } if (name) { Py_DECREF(name_obj); } return 0; } // The mapping subscript slot. static PyObject *pyqtSignal_mp_subscript(PyObject *self, PyObject *subscript) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; PyObject *sig = (PyObject *)qpycore_find_signal(ps, subscript, "an unbound signal type argument"); Py_XINCREF(sig); return sig; } // Initialise the type and return true if there was no error. bool qpycore_pyqtSignal_init_type() { #if PY_VERSION_HEX >= 0x03040000 qpycore_pyqtSignal_TypeObject = (PyTypeObject *)PyType_FromSpec( &qpycore_pyqtSignal_Spec); return qpycore_pyqtSignal_TypeObject; #else if (PyType_Ready(&qpycore_pyqtSignal_Type) < 0) return false; qpycore_pyqtSignal_TypeObject = &qpycore_pyqtSignal_Type; return true; #endif } // Create a new signal instance. qpycore_pyqtSignal *qpycore_pyqtSignal_New(const char *signature, bool *fatal) { // Assume any error is fatal. if (fatal) *fatal = true; Chimera::Signature *parsed_signature = Chimera::parse(signature, "a signal argument"); // At first glance the parse should never fail because the signature // originates from the .sip file. However it might if it includes a type // that has been forward declared, but not yet defined. The only example // in PyQt is the declaration of QWidget by QSignalMapper. Therefore we // assume the error isn't fatal. if (!parsed_signature) { if (fatal) *fatal = false; return 0; } parsed_signature->signature.prepend('2'); // Create and initialise the signal. qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)PyType_GenericNew( qpycore_pyqtSignal_TypeObject, 0, 0); if (!ps) { delete parsed_signature; return 0; } ps->default_signal = ps; ps->next = 0; ps->docstring = 0; ps->parameter_names = 0; ps->revision = 0; ps->parsed_signature = parsed_signature; ps->emitter = 0; ps->non_signals = 0; return ps; } // Find an overload that matches a subscript. qpycore_pyqtSignal *qpycore_find_signal(qpycore_pyqtSignal *ps, PyObject *subscript, const char *context) { // Make sure the subscript is a tuple. PyObject *args; if (PyTuple_Check(subscript)) { args = subscript; } else { args = PyTuple_New(1); if (!args) return 0; PyTuple_SetItem(args, 0, subscript); } Py_INCREF(subscript); // Parse the subscript as a tuple of types. Chimera::Signature *ss_signature = Chimera::parse(args, 0, context); Py_DECREF(args); if (!ss_signature) return 0; // Search for an overload with this signature. qpycore_pyqtSignal *overload = ps->default_signal; do { if (overload->parsed_signature->arguments() == ss_signature->signature) break; overload = overload->next; } while (overload); delete ss_signature; if (!overload) PyErr_SetString(PyExc_KeyError, "there is no matching overloaded signal"); return overload; } // Initialise a signal when given a tuple of types. static int init_signal_from_types(qpycore_pyqtSignal *ps, const char *name, const QList *parameter_names, int revision, PyObject *types) { Chimera::Signature *parsed_signature = Chimera::parse(types, name, "a pyqtSignal() type argument"); if (!parsed_signature) return -1; if (name) parsed_signature->signature.prepend('2'); ps->default_signal = ps; ps->next = 0; ps->docstring = 0; ps->parameter_names = parameter_names; ps->revision = revision; ps->parsed_signature = parsed_signature; ps->emitter = 0; ps->non_signals = 0; return 0; } // Append an overload to the default signal's list. static void append_overload(qpycore_pyqtSignal *ps) { // Append to the list of overloads. qpycore_pyqtSignal **tailp = &ps->default_signal->next; while (*tailp) tailp = &(*tailp)->next; *tailp = ps; } // Give a signal a name if it hasn't already got one. void qpycore_set_signal_name(qpycore_pyqtSignal *ps, const char *type_name, const char *name) { ps = ps->default_signal; // If the signature already has a name then they all have and there is // nothing more to do. if (!ps->parsed_signature->signature.startsWith('(')) return; do { QByteArray &sig = ps->parsed_signature->signature; sig.prepend(name); sig.prepend('2'); QByteArray &py_sig = ps->parsed_signature->py_signature; py_sig.prepend(name); py_sig.prepend('.'); py_sig.prepend(type_name); ps = ps->next; } while (ps); } // Handle the getting of a lazy attribute, ie. a native Qt signal. int qpycore_get_lazy_attr(const sipTypeDef *td, PyObject *dict) { const pyqt5QtSignal *sigs = reinterpret_cast( sipTypePluginData(td))->qt_signals; // Handle the trvial case. if (!sigs) return 0; QByteArray default_name; qpycore_pyqtSignal *default_signal = 0; do { // See if we have come to the end of the current signal. if (default_signal && !is_signal_name(sigs->signature, default_name)) { if (PyDict_SetItemString(dict, default_name.constData(), (PyObject *)default_signal) < 0) return -1; default_signal = 0; } bool fatal; qpycore_pyqtSignal *sig = qpycore_pyqtSignal_New(sigs->signature, &fatal); if (!sig) { if (fatal) return -1; PyErr_Clear(); continue; } sig->docstring = sigs->docstring; sig->emitter = sigs->emitter; // See if this is a new default. if (default_signal) { sig->default_signal = default_signal; append_overload(sig); } else { sig->non_signals = sigs->non_signals; default_signal = sig->default_signal = sig; default_name = sigs->signature; default_name.truncate(default_name.indexOf('(')); } } while ((++sigs)->signature); // Save the last one, if any (in case of a non-fatal error). if (!default_signal) return 0; return PyDict_SetItemString(dict, default_name.constData(), (PyObject *)default_signal); } // Return true if a signal signatures has a particular name. static bool is_signal_name(const char *sig, const QByteArray &name) { return (qstrncmp(sig, name.constData(), name.size()) == 0 && sig[name.size()] == '('); } // Call a signal's overloaded method (if there is one). PyObject *qpycore_call_signal_overload(qpycore_pyqtSignal *ps, PyObject *bound, PyObject *args, PyObject *kw) { if (!ps->non_signals) { PyErr_SetString(PyExc_TypeError, "native Qt signal is not callable"); return 0; } PyObject *func = PyCFunction_New(ps->non_signals, bound); if (!func) return 0; PyObject *result = PyCFunction_Call(func, args, kw); Py_DECREF(func); return result; } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_pyqtsignal.h0000644000076500000240000000475113245233150021622 0ustar philstaff00000000000000// This defines the interfaces for the pyqtSignal type. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTSIGNAL_H #define _QPYCORE_PYQTSIGNAL_H #include #include #include #include #include "qpycore_chimera.h" extern "C" { // This defines the structure of a PyQt signal. typedef struct _qpycore_pyqtSignal { PyObject_HEAD // The default signal. This is the head of the linked list of overloads // and holds references to rest of the list elements. struct _qpycore_pyqtSignal *default_signal; // The next overload in the list. struct _qpycore_pyqtSignal *next; // The docstring. const char *docstring; // The optional parameter names. const QList *parameter_names; // The revision. int revision; // The parsed signature, not set if there is an emitter. Chimera::Signature *parsed_signature; // An optional emitter. pyqt5EmitFunc emitter; // The non-signal overloads (if any). This is only set for the default. PyMethodDef *non_signals; } qpycore_pyqtSignal; int qpycore_get_lazy_attr(const sipTypeDef *td, PyObject *dict); } // The type object. extern PyTypeObject *qpycore_pyqtSignal_TypeObject; bool qpycore_pyqtSignal_init_type(); qpycore_pyqtSignal *qpycore_pyqtSignal_New(const char *signature, bool *fatal = 0); qpycore_pyqtSignal *qpycore_find_signal(qpycore_pyqtSignal *ps, PyObject *subscript, const char *context); void qpycore_set_signal_name(qpycore_pyqtSignal *ps, const char *type_name, const char *name); PyObject *qpycore_call_signal_overload(qpycore_pyqtSignal *ps, PyObject *bound, PyObject *args, PyObject *kw); #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_pyqtslot.cpp0000644000076500000240000002222613245233150021656 0ustar philstaff00000000000000// This contains the implementation of the PyQtSlot class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_chimera.h" #include "qpycore_pyqtslot.h" // Create the slot for an unbound method. PyQtSlot::PyQtSlot(PyObject *method, PyObject *type, const Chimera::Signature *slot_signature) : mfunc(method), mself(0), mself_wr(0), other(0), signature(slot_signature) { #if PY_MAJOR_VERSION < 3 mclass = type; #else Q_UNUSED(type) #endif } // Create the slot for a callable. PyQtSlot::PyQtSlot(PyObject *callable, const Chimera::Signature *slot_signature) : mfunc(0), mself(0), mself_wr(0), other(0), signature(slot_signature) { sipMethodDef callable_m; if (sipGetMethod(callable, &callable_m)) { // Save the component parts. mfunc = callable_m.pm_function; mself = callable_m.pm_self; #if PY_MAJOR_VERSION < 3 mclass = callable_m.pm_class; #endif // Try and create a weak reference to the instance object. mself_wr = PyWeakref_NewRef(mself, 0); } else { // Give the slot an extra reference to keep it alive. Py_INCREF(callable); other = callable; } } // Destroy the slot. PyQtSlot::~PyQtSlot() { Py_XDECREF(mself_wr); Py_XDECREF(other); } // Invoke the slot on behalf of C++. PyQtSlot::Result PyQtSlot::invoke(void **qargs, bool no_receiver_check) const { return invoke(qargs, 0, 0, no_receiver_check); } // Invoke the slot on behalf of C++. bool PyQtSlot::invoke(void **qargs, PyObject *self, void *result) const { return (invoke(qargs, self, result, false) != PyQtSlot::Failed); } // Invoke the slot on behalf of C++. PyQtSlot::Result PyQtSlot::invoke(void **qargs, PyObject *self, void *result, bool no_receiver_check) const { // Get the callable. PyObject *callable; if (other) { callable = other; Py_INCREF(callable); } else { // Use the value we have if one wasn't supplied. if (!self) self = instance(); // If self is NULL then we didn't have a method in the first place. // Instead we had a callable that has been cleared during garbage // collection - so we can simply ignore the invocation. if (!self) return PyQtSlot::Ignored; // See if the instance has gone (which isn't an error). if (self == Py_None) return PyQtSlot::Ignored; // If the receiver wraps a C++ object then ignore the call if it no // longer exists. if (!no_receiver_check && PyObject_TypeCheck(self, sipSimpleWrapper_Type) && !sipGetAddress((sipSimpleWrapper *)self)) return PyQtSlot::Ignored; sipMethodDef callable_m; callable_m.pm_function = mfunc; callable_m.pm_self = self; #if PY_MAJOR_VERSION < 3 callable_m.pm_class = mclass; #endif callable = sipFromMethod(&callable_m); } // Convert the C++ arguments to Python objects. const QList &args = signature->parsed_arguments; PyObject *argtup = PyTuple_New(args.size()); if (!argtup) return PyQtSlot::Failed; QList::const_iterator it = args.constBegin(); for (int a = 0; it != args.constEnd(); ++a) { PyObject *arg = (*it)->toPyObject(*++qargs); if (!arg) { Py_DECREF(argtup); return PyQtSlot::Failed; } PyTuple_SetItem(argtup, a, arg); ++it; } // Dispatch to the real slot. PyObject *res = call(callable, argtup); Py_DECREF(argtup); Py_DECREF(callable); if (!res) return PyQtSlot::Failed; // Handle any result if required. bool ok; if (result && signature->result) ok = signature->result->fromPyObject(res, result); else ok = true; Py_DECREF(res); return (ok ? PyQtSlot::Succeeded : PyQtSlot::Failed); } // See if this slot corresponds to the given callable. bool PyQtSlot::operator==(PyObject *callable) const { sipMethodDef callable_m; if (sipGetMethod(callable, &callable_m)) { if (other) return false; return (mfunc == callable_m.pm_function && instance() == callable_m.pm_self #if PY_MAJOR_VERSION < 3 && mclass == callable_m.pm_class #endif ); } if (!other) return false; // See if it is a wrapped C++ method. Note that the PyQt4 behaviour is to // not save a reference but to save the components (as we do with methods). // Hopefully it won't make a difference. However it begs the question as // to whether we should do the same with methods and rely on the garbage // collector - is the current way of handling methods purely historical? sipCFunctionDef other_cf, callable_cf; if (sipGetCFunction(other, &other_cf) && sipGetCFunction(callable, &callable_cf)) return (other_cf.cf_self == callable_cf.cf_self && other_cf.cf_function->ml_meth == callable_cf.cf_function->ml_meth); return (other == callable); } // Get the instance object. PyObject *PyQtSlot::instance() const { // Use the weak reference if possible. if (mself_wr) return PyWeakref_GetObject(mself_wr); return mself; } // Call a single slot and return the result. PyObject *PyQtSlot::call(PyObject *callable, PyObject *args) const { PyObject *sa, *oxtype, *oxvalue, *oxtb; // Keep some compilers quiet. oxtype = oxvalue = oxtb = 0; // We make repeated attempts to call a slot. If we work out that it failed // because of an immediate type error we try again with one less argument. // We keep going until we run out of arguments to drop. This emulates the // Qt ability of the slot to accept fewer arguments than a signal provides. sa = args; Py_INCREF(sa); for (;;) { PyObject *nsa, *xtype, *xvalue, *xtb, *res; if ((res = PyEval_CallObject(callable, sa)) != NULL) { // Remove any previous exception. if (sa != args) { Py_XDECREF(oxtype); Py_XDECREF(oxvalue); Py_XDECREF(oxtb); PyErr_Clear(); } Py_DECREF(sa); return res; } // Get the exception. PyErr_Fetch(&xtype, &xvalue, &xtb); // See if it is unacceptable. An acceptable failure is a type error // with no traceback - so long as we can still reduce the number of // arguments and try again. if (!PyErr_GivenExceptionMatches(xtype, PyExc_TypeError) || xtb || PyTuple_Size(sa) == 0) { // If there is a traceback then we must have called the slot and // the exception was later on - so report the exception as is. if (xtb) { if (sa != args) { Py_XDECREF(oxtype); Py_XDECREF(oxvalue); Py_XDECREF(oxtb); } PyErr_Restore(xtype,xvalue,xtb); } else if (sa == args) { PyErr_Restore(xtype, xvalue, xtb); } else { // Discard the latest exception and restore the original one. Py_XDECREF(xtype); Py_XDECREF(xvalue); Py_XDECREF(xtb); PyErr_Restore(oxtype, oxvalue, oxtb); } break; } // If this is the first attempt, save the exception. if (sa == args) { oxtype = xtype; oxvalue = xvalue; oxtb = xtb; } else { Py_XDECREF(xtype); Py_XDECREF(xvalue); Py_XDECREF(xtb); } // Create the new argument tuple. if ((nsa = PyTuple_GetSlice(sa, 0, PyTuple_Size(sa) - 1)) == NULL) { // Tidy up. Py_XDECREF(oxtype); Py_XDECREF(oxvalue); Py_XDECREF(oxtb); break; } Py_DECREF(sa); sa = nsa; } Py_DECREF(sa); return 0; } // Clear the slot if it has an extra reference. void PyQtSlot::clearOther() { Py_CLEAR(other); } // Visit the slot if it has an extra reference. int PyQtSlot::visitOther(visitproc visit, void *arg) { Py_VISIT(other); return 0; } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_pyqtslot.h0000644000076500000240000000454213245233150021324 0ustar philstaff00000000000000// This defines the definition of the PyQtSlot class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTSLOT_H #define _QPYCORE_PYQTSLOT_H #include #include "qpycore_chimera.h" class PyQtSlot { public: enum Result { Succeeded, // The invocation was successful. Failed, // The invocation failed. Ignored // The invocation was ignore because the receiver has gone. }; PyQtSlot(PyObject *method, PyObject *type, const Chimera::Signature *slot_signature); PyQtSlot(PyObject *callable, const Chimera::Signature *slot_signature); ~PyQtSlot(); PyQtSlot::Result invoke(void **qargs, bool no_receiver_check) const; bool invoke(void **qargs, PyObject *self, void *result) const; const Chimera::Signature *slotSignature() const {return signature;} void clearOther(); int visitOther(visitproc visit, void *arg); bool operator==(PyObject *callable) const; private: PyQtSlot::Result invoke(void **qargs, PyObject *self, void *result, bool no_receiver_check) const; PyObject *call(PyObject *callable, PyObject *args) const; PyObject *instance() const; PyObject *mfunc; PyObject *mself; #if PY_MAJOR_VERSION < 3 PyObject *mclass; #endif PyObject *mself_wr; PyObject *other; const Chimera::Signature *signature; // By forcing the use of pointers we don't need to worry about managing the // reference counts of the component Python objects. PyQtSlot(const PyQtSlot &); PyQtSlot &operator=(const PyQtSlot &); }; #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_pyqtslotproxy.cpp0000644000076500000240000002412513245233150022760 0ustar philstaff00000000000000// This contains the implementation of the PyQtSlotProxy class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_qmetaobjectbuilder.h" #include "qpycore_pyqtslot.h" #include "qpycore_pyqtslotproxy.h" #include "sipAPIQtCore.h" // Proxy flags. #define PROXY_SINGLE_SHOT 0x01 // The slot will only be called once. #define PROXY_SLOT_INVOKED 0x02 // The proxied slot is executing. #define PROXY_SLOT_DISABLED 0x04 // The proxy deleteLater() has been called // or should be called after the slot has // finished executing. #define PROXY_NO_RCVR_CHECK 0x08 // The existence of the receiver C++ object // should not be checked. // The last QObject sender. QObject *PyQtSlotProxy::last_sender = 0; // Create a universal proxy used as a slot. Note that this will leak if there // is no transmitter and this is not a single shot slot. There will be no // meta-object if there was a problem creating the proxy. This is called // without the GIL. PyQtSlotProxy::PyQtSlotProxy(PyObject *slot, QObject *q_tx, const Chimera::Signature *slot_signature, bool single_shot) : QObject(), proxy_flags(single_shot ? PROXY_SINGLE_SHOT : 0), signature(slot_signature->signature), transmitter(q_tx) { SIP_BLOCK_THREADS real_slot = new PyQtSlot(slot, slot_signature); SIP_UNBLOCK_THREADS // Create a new meta-object on the heap so that it looks like it has a slot // of the right name and signature. QMetaObjectBuilder builder; builder.setClassName("PyQtSlotProxy"); builder.setSuperClass(&QObject::staticMetaObject); builder.addSlot("unislot()"); builder.addSlot("disable()"); meta_object = builder.toMetaObject(); // Detect when any transmitter is destroyed. (Note that we used to do this // by making the proxy a child of the transmitter. This doesn't work as // expected because QWidget destroys its children before emitting the // destroyed signal.) We use a queued connection in case the proxy is also // connected to the same signal and we want to make sure it has a chance to // invoke the slot before being destroyed. if (transmitter) { // Add this one to the global hash. mutex->lock(); proxy_slots.insert(transmitter, this); mutex->unlock(); connect(transmitter, SIGNAL(destroyed(QObject *)), SLOT(disable()), Qt::QueuedConnection); } } // Destroy a universal proxy. This is called without the GIL. PyQtSlotProxy::~PyQtSlotProxy() { Q_ASSERT((proxy_flags & PROXY_SLOT_INVOKED) == 0); if (transmitter) { mutex->lock(); ProxyHash::iterator it(proxy_slots.find(transmitter)); ProxyHash::iterator end(proxy_slots.end()); while (it != end && it.key() == transmitter) { if (it.value() == this) it = proxy_slots.erase(it); else ++it; } mutex->unlock(); } // Qt can still be tidying up after Python has gone so make sure that it // hasn't. if (Py_IsInitialized()) { SIP_BLOCK_THREADS delete real_slot; SIP_UNBLOCK_THREADS } if (meta_object) { free(const_cast(meta_object)); } } // The static members of PyQtSlotProxy. const QByteArray PyQtSlotProxy::proxy_slot_signature(SLOT(unislot())); QMutex *PyQtSlotProxy::mutex; PyQtSlotProxy::ProxyHash PyQtSlotProxy::proxy_slots; const QMetaObject *PyQtSlotProxy::metaObject() const { return meta_object; } void *PyQtSlotProxy::qt_metacast(const char *_clname) { if (!_clname) return 0; if (qstrcmp(_clname, "PyQtSlotProxy") == 0) return static_cast(const_cast(this)); return QObject::qt_metacast(_clname); } int PyQtSlotProxy::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: unislot(_a); break; case 1: disable(); break; } _id -= 2; } return _id; } // This is the universal slot itself that dispatches to the real slot. void PyQtSlotProxy::unislot(void **qargs) { // If we are marked as disabled (possible if a queued signal has been // disconnected but there is still a signal in the event queue) then just // ignore the call. if (proxy_flags & PROXY_SLOT_DISABLED) return; // sender() must be called without the GIL to avoid possible deadlocks // between the GIL and Qt's internal thread data mutex. QObject *new_last_sender = sender(); SIP_BLOCK_THREADS QObject *saved_last_sender = last_sender; last_sender = new_last_sender; proxy_flags |= PROXY_SLOT_INVOKED; switch (real_slot->invoke(qargs, (proxy_flags & PROXY_NO_RCVR_CHECK))) { case PyQtSlot::Succeeded: break; case PyQtSlot::Failed: pyqt5_err_print(); break; case PyQtSlot::Ignored: proxy_flags |= PROXY_SLOT_DISABLED; break; } proxy_flags &= ~PROXY_SLOT_INVOKED; // Self destruct if we are a single shot or disabled. if (proxy_flags & (PROXY_SINGLE_SHOT|PROXY_SLOT_DISABLED)) { // See the comment in disable() for why we deleteLater(). deleteLater(); } last_sender = saved_last_sender; SIP_UNBLOCK_THREADS } // Disable the slot by destroying it if possible, or delaying its destruction // until the proxied slot returns. void PyQtSlotProxy::disable() { proxy_flags |= PROXY_SLOT_DISABLED; // Delete it if the slot isn't currently executing, otherwise it will be // done after the slot returns. Note that we don't rely on deleteLater() // providing the necessary delay because the slot could process the event // loop and the proxy would be deleted too soon. if ((proxy_flags & PROXY_SLOT_INVOKED) == 0) { // Despite what the Qt documentation suggests, if there are outstanding // queued signals then we may crash so we always delete later when the // event queue will have been flushed. deleteLater(); } } // Find a slot proxy connected to a transmitter. PyQtSlotProxy *PyQtSlotProxy::findSlotProxy(const QObject *transmitter, const QByteArray &signal_signature, PyObject *slot) { PyQtSlotProxy *proxy = 0; mutex->lock(); ProxyHash::const_iterator it(proxy_slots.find(transmitter)); ProxyHash::const_iterator end(proxy_slots.end()); while (it != end && it.key() == transmitter) { PyQtSlotProxy *sp = it.value(); if (!(sp->proxy_flags & PROXY_SLOT_DISABLED) && sp->signature == signal_signature && *(sp->real_slot) == slot) { proxy = sp; break; } ++it; } mutex->unlock(); return proxy; } // Delete any slot proxies for a particular transmitter and optional signal // signature. void PyQtSlotProxy::deleteSlotProxies(const QObject *transmitter, const QByteArray &signal_signature) { mutex->lock(); ProxyHash::iterator it(proxy_slots.find(transmitter)); ProxyHash::iterator end(proxy_slots.end()); while (it != end && it.key() == transmitter) { PyQtSlotProxy *sp = it.value(); if (signal_signature.isEmpty() || signal_signature == sp->signature) { it = proxy_slots.erase(it); sp->disable(); } else { ++it; } } mutex->unlock(); } // Clear the extra references of any slots connected to a transmitter. This is // called with the GIL. int PyQtSlotProxy::clearSlotProxies(const QObject *transmitter) { ProxyHash::iterator it(proxy_slots.find(transmitter)); ProxyHash::iterator end(proxy_slots.end()); while (it != end && it.key() == transmitter) { it.value()->real_slot->clearOther(); ++it; } return 0; } // A thing wrapper available to the generated code. int qpycore_clearSlotProxies(const QObject *transmitter) { return PyQtSlotProxy::clearSlotProxies(transmitter); } // Visit the extra references of any slots connected to a transmitter. This is // called with the GIL. int PyQtSlotProxy::visitSlotProxies(const QObject *transmitter, visitproc visit, void *arg) { int vret = 0; ProxyHash::iterator it(proxy_slots.find(transmitter)); ProxyHash::iterator end(proxy_slots.end()); while (it != end && it.key() == transmitter) { if ((vret = it.value()->real_slot->visitOther(visit, arg)) != 0) break; ++it; } return vret; } // A thing wrapper available to the generated code. int qpycore_visitSlotProxies(const QObject *transmitter, visitproc visit, void *arg) { return PyQtSlotProxy::visitSlotProxies(transmitter, visit, arg); } // Get the last sender. QObject *PyQtSlotProxy::lastSender() { return last_sender; } // Disable the check that the receiver C++ object exists before invoking a // slot. void PyQtSlotProxy::disableReceiverCheck() { proxy_flags |= PROXY_NO_RCVR_CHECK; } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_pyqtslotproxy.h0000644000076500000240000000646513245233150022434 0ustar philstaff00000000000000// This contains the definition of the PyQtSlotProxy class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTSLOTPROXY_H #define _QPYCORE_PYQTSLOTPROXY_H #include #include #include #include #include #include "qpycore_namespace.h" #include "qpycore_chimera.h" QT_BEGIN_NAMESPACE class QMutex; QT_END_NAMESPACE class PyQtSlot; // This class is implements a slot on behalf of Python callables. It is // derived from QObject but is not run through moc. Instead the normal // moc-generated methods are handwritten in order to implement a universal // slot. This requires some knowledge of the internal structure of QObject but // it is likely that they will only change between major Qt versions. class PyQtSlotProxy : public QObject { public: PyQtSlotProxy(PyObject *slot, QObject *transmitter, const Chimera::Signature *slot_signature, bool single_shot); ~PyQtSlotProxy(); static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); virtual int qt_metacall(QMetaObject::Call, int, void **); void unislot(void **qargs); void disable(); static void deleteSlotProxies(const QObject *transmitter, const QByteArray &signal_signature); static PyQtSlotProxy *findSlotProxy(const QObject *transmitter, const QByteArray &signal_signature, PyObject *slot); void disableReceiverCheck(); static int clearSlotProxies(const QObject *transmitter); static int visitSlotProxies(const QObject *transmitter, visitproc visit, void *arg); static QObject *lastSender(); // The signature of the slot that receives connections. static const QByteArray proxy_slot_signature; // The mutex around the proxies hash. static QMutex *mutex; private: // The last QObject sender. static QObject *last_sender; // The type of a proxy hash. typedef QMultiHash ProxyHash; // The hash of proxies. static ProxyHash proxy_slots; // The proxy flags. int proxy_flags; // The normalised signature. QByteArray signature; // The QObject transmitter the proxy will be connected to (if any). const QObject *transmitter; // The slot we are proxying for. PyQtSlot *real_slot; // The meta-object. const QMetaObject *meta_object; PyQtSlotProxy(const PyQtSlotProxy &); PyQtSlotProxy &operator=(const PyQtSlotProxy &); }; #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_qjsonvalue.cpp0000644000076500000240000001067513245233150022153 0ustar philstaff00000000000000// This is the support for QJsonValue. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_api.h" #include "sipAPIQtCore.h" // See if a Python object can be converted to a QJsonValue. int qpycore_canConvertTo_QJsonValue(PyObject *py) { // Note that the API doesn't provide a test for constrained named enums. if (PyObject_TypeCheck(py, sipTypeAsPyTypeObject(sipType_QJsonValue_Type))) return 1; if (PyBool_Check(py)) return 1; if (PyLong_Check(py)) return 1; #if PY_MAJOR_VERSION < 3 if (PyInt_Check(py)) return 1; #endif if (PyFloat_Check(py)) return 1; if (sipCanConvertToType(py, sipType_QString, 0)) return 1; // We must check for QJsonObject before QJsonArray. if (sipCanConvertToType(py, sipType_QJsonObject, 0)) return 1; if (sipCanConvertToType(py, sipType_QJsonArray, 0)) return 1; return sipCanConvertToType(py, sipType_QJsonValue, SIP_NO_CONVERTORS); } // Convert a Python object to a QJsonValue. int qpycore_convertTo_QJsonValue(PyObject *py, PyObject *transferObj, QJsonValue **cpp, int *isErr) { if (PyObject_TypeCheck(py, sipTypeAsPyTypeObject(sipType_QJsonValue_Type))) { int v = sipConvertToEnum(py, sipType_QJsonValue_Type); if (PyErr_Occurred()) { *isErr = 1; return 0; } *cpp = new QJsonValue(static_cast(v)); return sipGetState(transferObj); } if (PyBool_Check(py)) { *cpp = new QJsonValue(py == Py_True); return sipGetState(transferObj); } if (PyLong_Check(py)) { *cpp = new QJsonValue((qint64)PyLong_AsLong(py)); return sipGetState(transferObj); } #if PY_MAJOR_VERSION < 3 if (PyInt_Check(py)) { *cpp = new QJsonValue((int)PyInt_AS_LONG(py)); return sipGetState(transferObj); } #endif if (PyFloat_Check(py)) { *cpp = new QJsonValue((double)PyFloat_AsDouble(py)); return sipGetState(transferObj); } if (sipCanConvertToType(py, sipType_QString, 0)) { int state; QString *q = reinterpret_cast(sipConvertToType(py, sipType_QString, 0, 0, &state, isErr)); if (*isErr) { sipReleaseType(q, sipType_QString, state); return 0; } *cpp = new QJsonValue(*q); sipReleaseType(q, sipType_QString, state); return sipGetState(transferObj); } // We must check for QJsonObject before QJsonArray. if (sipCanConvertToType(py, sipType_QJsonObject, 0)) { int state; QJsonObject *q = reinterpret_cast(sipConvertToType(py, sipType_QJsonObject, 0, 0, &state, isErr)); if (*isErr) { sipReleaseType(q, sipType_QJsonObject, state); return 0; } *cpp = new QJsonValue(*q); sipReleaseType(q, sipType_QJsonObject, state); return sipGetState(transferObj); } if (sipCanConvertToType(py, sipType_QJsonArray, 0)) { int state; QJsonArray *q = reinterpret_cast(sipConvertToType(py, sipType_QJsonArray, 0, 0, &state, isErr)); if (*isErr) { sipReleaseType(q, sipType_QJsonArray, state); return 0; } *cpp = new QJsonValue(*q); sipReleaseType(q, sipType_QJsonArray, state); return sipGetState(transferObj); } *cpp = reinterpret_cast(sipConvertToType(py, sipType_QJsonValue, transferObj, SIP_NO_CONVERTORS, 0, isErr)); return 0; } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_qmessagelogger.cpp0000644000076500000240000000622013245233150022760 0ustar philstaff00000000000000// This is the support for QMessageLogger. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_api.h" #include "sipAPIQtCore.h" // Return the current Python context. This should be called with the GIL. int qpycore_current_context(const char **file, const char **function) { static PyObject *currentframe = 0; static PyObject *getframeinfo = 0; static PyObject *saved_file = 0; static PyObject *saved_function = 0; PyObject *frame, *info, *file_obj, *linenr_obj, *function_obj; int linenr; frame = info = NULL; // Make sure we have what we need from the inspect module. if (!currentframe || !getframeinfo) { PyObject *inspect = PyImport_ImportModule("inspect"); if (inspect) { if (!currentframe) currentframe = PyObject_GetAttrString(inspect, "currentframe"); if (!getframeinfo) getframeinfo = PyObject_GetAttrString(inspect, "getframeinfo"); Py_DECREF(inspect); } if (!currentframe || !getframeinfo) goto py_error; } // Get the current frame. if ((frame = PyObject_CallFunctionObjArgs(currentframe, NULL)) == NULL) goto py_error; // Get the frame details. if ((info = PyObject_CallFunctionObjArgs(getframeinfo, frame, NULL)) == NULL) goto py_error;; if ((file_obj = PyTuple_GetItem(info, 0)) == NULL) goto py_error; if ((linenr_obj = PyTuple_GetItem(info, 1)) == NULL) goto py_error; if ((function_obj = PyTuple_GetItem(info, 2)) == NULL) goto py_error; Py_XDECREF(saved_file); #if PY_MAJOR_VERSION >= 3 saved_file = PyUnicode_AsEncodedString(file_obj, "latin_1", "ignore"); #else saved_file = file_obj; Py_INCREF(saved_file); #endif *file = SIPBytes_AsString(saved_file); // Ignore any overflow exception. linenr = sipLong_AsInt(linenr_obj); Py_XDECREF(saved_function); #if PY_MAJOR_VERSION >= 3 saved_function = PyUnicode_AsEncodedString(function_obj, "latin_1", "ignore"); #else saved_function = function_obj; Py_INCREF(saved_function); #endif *function = SIPBytes_AsString(saved_function); Py_DECREF(info); Py_DECREF(frame); return linenr; py_error: Py_XDECREF(info); Py_XDECREF(frame); pyqt5_err_print(); *file = *function = ""; return 0; } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_qmetaobject.cpp0000644000076500000240000001221413245233150022251 0ustar philstaff00000000000000// This is the support code for QMetaObject. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "sipAPIQtCore.h" // Forward declarations. static PyObject *ArgumentStorage_New(PyObject *type, PyObject *data); #if defined(SIP_USE_PYCAPSULE) extern "C" {static void ArgumentStorage_delete(PyObject *cap);} #else extern "C" {static void ArgumentStorage_delete(void *stv);} #endif // Return a wrapped QGenericArgument for the given type and Python object. PyObject *qpycore_ArgumentFactory(PyObject *type, PyObject *data) { PyObject *as_obj = ArgumentStorage_New(type, data); if (!as_obj) { Chimera::raiseParseException(type, "a Q_ARG()"); return 0; } #if defined(SIP_USE_PYCAPSULE) Chimera::Storage *st = reinterpret_cast( PyCapsule_GetPointer(as_obj, NULL)); #else Chimera::Storage *st = reinterpret_cast( PyCObject_AsVoidPtr(as_obj)); #endif QGenericArgument *arg = new QGenericArgument( st->type()->name().constData(), st->address()); PyObject *ga_obj = sipConvertFromNewType(arg, sipType_QGenericArgument, 0); if (ga_obj) { // Stash the storage in the user field so that everything will be // properly garbage collected. sipSetUserObject((sipSimpleWrapper *)ga_obj, as_obj); } else { delete arg; Py_DECREF(as_obj); } return ga_obj; } // Return a wrapped QGenericReturnArgument for the given type. PyObject *qpycore_ReturnFactory(PyObject *type) { PyObject *as_obj = ArgumentStorage_New(type, 0); if (!as_obj) { Chimera::raiseParseException(type, "a Q_RETURN_ARG()"); return 0; } #if defined(SIP_USE_PYCAPSULE) Chimera::Storage *st = reinterpret_cast( PyCapsule_GetPointer(as_obj, NULL)); #else Chimera::Storage *st = reinterpret_cast( PyCObject_AsVoidPtr(as_obj)); #endif QGenericReturnArgument *arg = new QGenericReturnArgument( st->type()->name().constData(), st->address()); PyObject *gra_obj = sipConvertFromNewType(arg, sipType_QGenericReturnArgument, 0); if (gra_obj) { // Stash the storage in the user field so that everything will be // properly garbage collected. sipSetUserObject((sipSimpleWrapper *)gra_obj, as_obj); } else { delete arg; Py_DECREF(as_obj); } return gra_obj; } // Return the Python result from a QGenericReturnArgument. PyObject *qpycore_ReturnValue(PyObject *gra_obj) { PyObject *as_obj = sipGetUserObject((sipSimpleWrapper *)gra_obj); #if defined(SIP_USE_PYCAPSULE) Chimera::Storage *st = reinterpret_cast( PyCapsule_GetPointer(as_obj, NULL)); #else Chimera::Storage *st = reinterpret_cast( PyCObject_AsVoidPtr(as_obj)); #endif return st->toPyObject(); } #if defined(SIP_USE_PYCAPSULE) // The PyCapsule destructor for the ArgumentStorage type. static void ArgumentStorage_delete(PyObject *cap) { Chimera::Storage *st = reinterpret_cast( PyCapsule_GetPointer(cap, NULL)); const Chimera *ct = st->type(); delete st; delete ct; } #else // The PyCObject destructor for the ArgumentStorage type. static void ArgumentStorage_delete(void *stv) { Chimera::Storage *st = reinterpret_cast(stv); const Chimera *ct = st->type(); delete st; delete ct; } #endif // Returns a Python object wrapping an ArgumentStorage instance. static PyObject *ArgumentStorage_New(PyObject *type, PyObject *data) { const Chimera *ct = Chimera::parse(type); if (!ct) return 0; Chimera::Storage *st; if (data) st = ct->fromPyObjectToStorage(data); else st = ct->storageFactory(); if (!st) { delete ct; return 0; } // Convert to a Python object. #if defined(SIP_USE_PYCAPSULE) PyObject *as_obj = PyCapsule_New(st, NULL, ArgumentStorage_delete); #else PyObject *as_obj = PyCObject_FromVoidPtr(st, ArgumentStorage_delete); #endif if (!as_obj) { delete st; delete ct; } return as_obj; } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_qmetaobject_helpers.cpp0000644000076500000240000001102613245233150023773 0ustar philstaff00000000000000// This implements the helpers for QMetaObject. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_objectified_strings.h" #include "qpycore_public_api.h" #include "sipAPIQtCore.h" // Forward declarations. static void connect(QObject *qobj, PyObject *slot_obj, const QByteArray &slot_nm, const QByteArray &args); void qpycore_qmetaobject_connectslotsbyname(QObject *qobj, PyObject *qobj_wrapper) { // Get the class attributes. PyObject *dir = PyObject_Dir((PyObject *)Py_TYPE(qobj_wrapper)); if (!dir) return; PyObject *slot_obj = 0; for (Py_ssize_t li = 0; li < PyList_Size(dir); ++li) { PyObject *name_obj = PyList_GetItem(dir, li); // Get the slot object. Py_XDECREF(slot_obj); slot_obj = PyObject_GetAttr(qobj_wrapper, name_obj); if (!slot_obj) continue; // Ignore it if it is not a callable. if (!PyCallable_Check(slot_obj)) continue; // Use the signature attribute instead of the name if there is one. PyObject *sigattr = PyObject_GetAttr(slot_obj, qpycore_dunder_pyqtsignature); if (sigattr) { for (Py_ssize_t i = 0; i < PyList_Size(sigattr); ++i) { PyObject *decoration = PyList_GetItem(sigattr, i); Chimera::Signature *sig = Chimera::Signature::fromPyObject(decoration); QByteArray args = sig->arguments(); if (!args.isEmpty()) connect(qobj, slot_obj, sig->name(), args); } Py_DECREF(sigattr); } else { const char *ascii_name = sipString_AsASCIIString(&name_obj); if (!ascii_name) continue; PyErr_Clear(); connect(qobj, slot_obj, QByteArray(ascii_name), QByteArray()); Py_DECREF(name_obj); } } Py_XDECREF(slot_obj); Py_DECREF(dir); } // Connect up a particular slot name, with optional arguments. static void connect(QObject *qobj, PyObject *slot_obj, const QByteArray &slot_nm, const QByteArray &args) { // Ignore if it's not an autoconnect slot. if (!slot_nm.startsWith("on_")) return; // Extract the names of the emitting object and the signal. int i; i = slot_nm.lastIndexOf('_'); if (i - 3 < 1 || i + 1 >= slot_nm.size()) return; QByteArray ename = slot_nm.mid(3, i - 3); QByteArray sname = slot_nm.mid(i + 1); // Find the emitting object and get its meta-object. QObject *eobj = qobj->findChild(ename); if (!eobj) return; const QMetaObject *mo = eobj->metaObject(); // Got through the methods looking for a matching signal. for (int m = 0; m < mo->methodCount(); ++m) { QMetaMethod mm = mo->method(m); if (mm.methodType() != QMetaMethod::Signal) continue; QByteArray sig(mm.methodSignature()); if (Chimera::Signature::name(sig) != sname) continue; // If we have slot arguments then they must match as well. if (!args.isEmpty() && Chimera::Signature::arguments(sig) != args) continue; QObject *receiver; QByteArray slot_sig; if (pyqt5_get_connection_parts(slot_obj, eobj, sig.constData(), false, &receiver, slot_sig) != sipErrorNone) continue; // Add the type character. sig.prepend('2'); // Connect the signal. QObject::connect(eobj, sig.constData(), receiver, slot_sig.constData()); } } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_qmetaobjectbuilder.h0000644000076500000240000000651613245233150023275 0ustar philstaff00000000000000// This defines the subset of the interface to Qt5's internal // QMetaObjectBuilder class. The internal representation of a QMetaObject // changed in Qt5 (specifically revision 7) sufficiently to justify using this // internal code. The alternative would be to reverse engineer other internal // data structures which would be even more fragile. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_QMETAOBJECTBUILDER_H #define _QPYCORE_QMETAOBJECTBUILDER_H #include #include #include QT_BEGIN_NAMESPACE class QMetaEnumBuilder; class QMetaMethodBuilder; class QMetaPropertyBuilder; class Q_CORE_EXPORT QMetaObjectBuilder { public: QMetaObjectBuilder(); virtual ~QMetaObjectBuilder(); void setClassName(const QByteArray &name); void setSuperClass(const QMetaObject *meta); QMetaMethodBuilder addSlot(const QByteArray &signature); QMetaMethodBuilder addSignal(const QByteArray &signature); QMetaPropertyBuilder addProperty(const QByteArray &name, const QByteArray &type, int notifierId=-1); QMetaEnumBuilder addEnumerator(const QByteArray &name); int addClassInfo(const QByteArray &name, const QByteArray &value); int addRelatedMetaObject(const QMetaObject *meta); int indexOfSignal(const QByteArray &signature); QMetaObject *toMetaObject() const; private: Q_DISABLE_COPY(QMetaObjectBuilder) void *d; }; class Q_CORE_EXPORT QMetaMethodBuilder { public: QMetaMethodBuilder() : _mobj(0), _index(0) {} void setReturnType(const QByteArray &type); void setParameterNames(const QList ¶meter_names); void setRevision(int revision); private: const QMetaObjectBuilder *_mobj; int _index; }; class Q_CORE_EXPORT QMetaPropertyBuilder { public: QMetaPropertyBuilder() : _mobj(0), _index(0) {} void setReadable(bool value); void setWritable(bool value); void setResettable(bool value); void setDesignable(bool value); void setScriptable(bool value); void setStored(bool value); void setUser(bool value); void setStdCppSet(bool value); void setEnumOrFlag(bool value); void setConstant(bool value); void setFinal(bool value); void setRevision(int revision); private: const QMetaObjectBuilder *_mobj; int _index; }; class Q_CORE_EXPORT QMetaEnumBuilder { public: QMetaEnumBuilder() : _mobj(0), _index(0) {} void setIsFlag(bool value); int addKey(const QByteArray &name, int value); private: const QMetaObjectBuilder *_mobj; int _index; }; QT_END_NAMESPACE #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_qobject_getattr.cpp0000644000076500000240000001026113245233150023134 0ustar philstaff00000000000000// This implements the helper for QObject.__getattr__(). // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include "qpycore_api.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtmethodproxy.h" #include "qpycore_pyqtsignal.h" // See if we can find an attribute in the Qt meta-type system. This is // primarily to support access to JavaScript (e.g. QQuickItem) so we don't // support overloads. PyObject *qpycore_qobject_getattr(const QObject *qobj, PyObject *py_qobj, const char *name) { const QMetaObject *mo = qobj->metaObject(); // Try and find a method with the name. QMetaMethod method; int method_index = -1; // Count down to allow overrides (assuming they are possible). for (int m = mo->methodCount() - 1; m >= 0; --m) { method = mo->method(m); if (method.methodType() == QMetaMethod::Constructor) continue; // Get the method name. QByteArray mname(method.methodSignature()); int idx = mname.indexOf('('); if (idx >= 0) mname.truncate(idx); if (mname == name) { method_index = m; break; } } if (method_index >= 0) { // Get the value to return. Note that this is recreated each time. We // could put a descriptor in the type dictionary to satisfy the request // in future but the typical use case is getting a value from a C++ // proxy (e.g. QDeclarativeItem) and we can't assume that what is being // proxied is the same each time. if (method.methodType() == QMetaMethod::Signal) { // We need to keep explicit references to the unbound signals // (because we don't use the type dictionary to do so) because they // own the parsed signature which may be needed by a PyQtSlotProxy // at some point. typedef QHash SignalHash; static SignalHash *sig_hash = 0; // For crappy compilers. if (!sig_hash) sig_hash = new SignalHash; PyObject *sig_obj; QByteArray sig_str = method.methodSignature(); SignalHash::const_iterator it = sig_hash->find(sig_str); if (it == sig_hash->end()) { sig_obj = (PyObject *)qpycore_pyqtSignal_New( sig_str.constData()); if (!sig_obj) return 0; sig_hash->insert(sig_str, sig_obj); } else { sig_obj = it.value(); } return qpycore_pyqtBoundSignal_New((qpycore_pyqtSignal *)sig_obj, py_qobj, const_cast(qobj)); } // Respect the 'private' nature of __ names. if (name[0] != '_' || name[1] != '_') { QByteArray py_name(sipPyTypeName(Py_TYPE(py_qobj))); py_name.append('.'); py_name.append(name); return qpycore_pyqtMethodProxy_New(const_cast(qobj), method_index, py_name); } } // Replicate the standard Python exception. PyErr_Format(PyExc_AttributeError, "'%s' object has no attribute '%s'", sipPyTypeName(Py_TYPE(py_qobj)), name); return 0; } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_qobject_helpers.cpp0000644000076500000240000002202413245233150023124 0ustar philstaff00000000000000// This implements the helpers for QObject. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_objectified_strings.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtproperty.h" #include "qpycore_pyqtpyobject.h" #include "qpycore_pyqtslot.h" #include "qpycore_qobject_helpers.h" #include "qpycore_types.h" #include "sipAPIQtCore.h" // Forward declarations. static int qt_metacall_worker(sipSimpleWrapper *pySelf, PyTypeObject *pytype, sipTypeDef *base, QMetaObject::Call _c, int _id, void **_a); // This is the helper for all implementations of QObject::metaObject(). const QMetaObject *qpycore_qobject_metaobject(sipSimpleWrapper *pySelf, sipTypeDef *base) { sipWrapperType *wt = (pySelf ? (sipWrapperType *)Py_TYPE(pySelf) : 0); return qpycore_get_qmetaobject(wt, base); } // This is the helper for all implementations of QObject::qt_metacall(). int qpycore_qobject_qt_metacall(sipSimpleWrapper *pySelf, sipTypeDef *base, QMetaObject::Call _c, int _id, void **_a) { // Check if the Python object has gone. if (!pySelf) return -1; SIP_BLOCK_THREADS _id = qt_metacall_worker(pySelf, Py_TYPE(pySelf), base, _c, _id, _a); SIP_UNBLOCK_THREADS return _id; } // This does the real work for all implementations of QObject::qt_metacall(). static int qt_metacall_worker(sipSimpleWrapper *pySelf, PyTypeObject *pytype, sipTypeDef *base, QMetaObject::Call _c, int _id, void **_a) { // See if this is a wrapped C++ type rather than a Python sub-type. if (pytype == sipTypeAsPyTypeObject(base)) return _id; PyTypeObject *tp_base; #if PY_VERSION_HEX >= 0x03040000 tp_base = reinterpret_cast( PyType_GetSlot(pytype, Py_tp_base)); #else tp_base = pytype->tp_base; #endif _id = qt_metacall_worker(pySelf, tp_base, base, _c, _id, _a); if (_id < 0) return _id; qpycore_metaobject *qo = reinterpret_cast( sipGetTypeUserData((sipWrapperType *)pytype)); bool ok = true; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < qo->nr_signals + qo->pslots.count()) { if (_id < qo->nr_signals) { QObject *qthis = reinterpret_cast(sipGetCppPtr(pySelf, sipType_QObject)); Py_BEGIN_ALLOW_THREADS QMetaObject::activate(qthis, qo->mo, _id, _a); Py_END_ALLOW_THREADS } else { PyQtSlot *slot = qo->pslots.at(_id - qo->nr_signals); ok = slot->invoke(_a, (PyObject *)pySelf, _a[0]); } } _id -= qo->nr_signals + qo->pslots.count(); } else if (_c == QMetaObject::ReadProperty) { if (_id < qo->pprops.count()) { qpycore_pyqtProperty *prop = qo->pprops.at(_id); if (prop->pyqtprop_get) { PyObject *py = PyObject_CallFunction(prop->pyqtprop_get, const_cast("O"), pySelf); if (py) { ok = prop->pyqtprop_parsed_type->fromPyObject(py, _a[0]); Py_DECREF(py); } else { ok = false; } } } _id -= qo->pprops.count(); } else if (_c == QMetaObject::WriteProperty) { if (_id < qo->pprops.count()) { qpycore_pyqtProperty *prop = qo->pprops.at(_id); if (prop->pyqtprop_set) { PyObject *py = prop->pyqtprop_parsed_type->toPyObject(_a[0]); if (py) { PyObject *res = PyObject_CallFunction(prop->pyqtprop_set, const_cast("OO"), pySelf, py); if (res) Py_DECREF(res); else ok = false; Py_DECREF(py); } else { ok = false; } } } _id -= qo->pprops.count(); } else if (_c == QMetaObject::ResetProperty) { if (_id < qo->pprops.count()) { qpycore_pyqtProperty *prop = qo->pprops.at(_id); if (prop->pyqtprop_reset) { PyObject *py = PyObject_CallFunction(prop->pyqtprop_reset, const_cast("O"), pySelf); if (py) Py_DECREF(py); else ok = false; } } _id -= qo->pprops.count(); } else if (_c == QMetaObject::QueryPropertyDesignable) _id -= qo->pprops.count(); else if (_c == QMetaObject::QueryPropertyScriptable) _id -= qo->pprops.count(); else if (_c == QMetaObject::QueryPropertyStored) _id -= qo->pprops.count(); else if (_c == QMetaObject::QueryPropertyEditable) _id -= qo->pprops.count(); else if (_c == QMetaObject::QueryPropertyUser) _id -= qo->pprops.count(); // Handle any Python errors. if (!ok) { pyqt5_err_print(); return -1; } return _id; } // This is the helper for all implementations of QObject::qt_metacast(). bool qpycore_qobject_qt_metacast(sipSimpleWrapper *pySelf, const sipTypeDef *base, const char *_clname, void **sipCpp) { *sipCpp = 0; if (!_clname) return true; // Check if the Python object has gone. if (!pySelf) return true; bool is_py_class = false; SIP_BLOCK_THREADS PyTypeObject *base_pytype = sipTypeAsPyTypeObject(base); // We only need to look at the MRO if the object is a wrapped type (rather // than a user sub-class). if (base_pytype != Py_TYPE(pySelf)) { PyObject *mro; #if PY_VERSION_HEX >= 0x03040000 mro = PyObject_GetAttr((PyObject *)Py_TYPE(pySelf), qpycore_dunder_mro); Q_ASSERT(mro); #else mro = Py_TYPE(pySelf)->tp_mro; #endif for (Py_ssize_t i = 0; i < PyTuple_Size(mro); ++i) { PyTypeObject *pytype = (PyTypeObject *)PyTuple_GetItem(mro, i); const sipTypeDef *td = sipTypeFromPyTypeObject(pytype); if (!td || !qpycore_is_pyqt_class(td)) continue; if (qstrcmp(sipPyTypeName(pytype), _clname) == 0) { // The generated type definitions represent the C++ (rather // than Python) hierachy. If the C++ hierachy doesn't match // then the super-type must be provided by a mixin. if (PyType_IsSubtype(pytype, base_pytype)) *sipCpp = sipGetAddress(pySelf); else *sipCpp = sipGetMixinAddress(pySelf, td); is_py_class = true; break; } const char *iface = reinterpret_cast( sipTypePluginData(td))->qt_interface; if (iface && qstrcmp(iface, _clname) == 0) { *sipCpp = sipGetMixinAddress(pySelf, td); is_py_class = true; break; } } #if PY_VERSION_HEX >= 0x03040000 Py_DECREF(mro); #endif } SIP_UNBLOCK_THREADS return is_py_class; } // This is a helper for QObject.staticMetaObject %GetCode. PyObject *qpycore_qobject_staticmetaobject(PyObject *type_obj) { const QMetaObject *mo = qpycore_get_qmetaobject((sipWrapperType *)type_obj); if (!mo) { // We assume that this is a side effect of a wrapped class not being // fully ready until sip's meta-class's __init__() has run (rather than // after its __new__() method as might be expected). PyErr_SetString(PyExc_AttributeError, "staticMetaObject isn't available until the meta-class's __init__ returns"); return 0; } return sipConvertFromType(const_cast(mo), sipType_QMetaObject, 0); } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_qobject_helpers.h0000644000076500000240000000260013245233150022567 0ustar philstaff00000000000000// This defines the interfaces of the helpers for QObject. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_QOBJECT_HELPERS_H #define _QPYCORE_QOBJECT_HELPERS_H #include #include #include "sipAPIQtCore.h" const QMetaObject *qpycore_qobject_metaobject(sipSimpleWrapper *pySelf, sipTypeDef *base); int qpycore_qobject_qt_metacall(sipSimpleWrapper *pySelf, sipTypeDef *base, QMetaObject::Call _c, int _id, void **_a); bool qpycore_qobject_qt_metacast(sipSimpleWrapper *pySelf, const sipTypeDef *base, const char *_clname, void **); #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_qstring.cpp0000644000076500000240000001242113245233150021442 0ustar philstaff00000000000000// This is the support for QString. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include "qpycore_api.h" #include "sipAPIQtCore.h" // Work out if we should enable PEP 393 support. This is complicated by the // broken LLVM that XCode v4 installs. #if PY_VERSION_HEX >= 0x03030000 #if defined(Q_OS_MAC) #if !defined(__llvm__) || defined(__clang__) // Python v3.3 or later on a Mac using either g++ or Clang, but not LLVM. #define PYQT_PEP_393 #endif #else // Python v3.3 or later on a non-Mac. #define PYQT_PEP_393 #endif #endif // Convert a QString to a Python Unicode object. PyObject *qpycore_PyObject_FromQString(const QString &qstr) { PyObject *obj; #if defined(PYQT_PEP_393) // We have to work out exactly which kind to use. We assume ASCII while we // are checking so that we only go through the string once in the most // common case. Note that we can't use PyUnicode_FromKindAndData() because // it doesn't handle surrogates in UCS2 strings. int qt_len = qstr.length(); int kind; void *data; if ((obj = sipUnicodeNew(qt_len, 0x007f, &kind, &data)) == NULL) return NULL; const QChar *qch = qstr.constData(); for (int qt_i = 0; qt_i < qt_len; ++qt_i) { ushort uch = qch->unicode(); if (uch > 0x007f) { // This is useless. Py_DECREF(obj); // Work out what kind we really need and what the Python length // should be. uint maxchar = 0x00ff; int py_len = qt_len; while (qt_i < qt_len) { uch = qch->unicode(); if (uch > 0x00ff) { if (maxchar == 0x00ff) maxchar = 0x00ffff; // See if this is a surrogate pair. Note that we cannot // trust that the QString is terminated by a null QChar. if (qch->isHighSurrogate() && qt_i + 1 < qt_len && (qch + 1)->isLowSurrogate()) { maxchar = 0x10ffff; --py_len; ++qch; ++qt_i; } } ++qch; ++qt_i; } // Create the correctly sized object. if ((obj = sipUnicodeNew(py_len, maxchar, &kind, &data)) == NULL) return NULL; qch = qstr.constData(); int qt_i2 = 0; for (int py_i = 0; py_i < py_len; ++py_i) { uint py_ch; if (qch->isHighSurrogate() && qt_i2 + 1 < qt_len && (qch + 1)->isLowSurrogate()) { py_ch = QChar::surrogateToUcs4(*qch, *(qch + 1)); ++qt_i2; ++qch; } else { py_ch = qch->unicode(); } ++qt_i2; ++qch; sipUnicodeWrite(kind, data, py_i, py_ch); } break; } ++qch; sipUnicodeWrite(kind, data, qt_i, uch); } #elif defined(Py_UNICODE_WIDE) QVector ucs4 = qstr.toUcs4(); if ((obj = PyUnicode_FromUnicode(NULL, ucs4.size())) == NULL) return NULL; memcpy(PyUnicode_AS_UNICODE(obj), ucs4.constData(), ucs4.size() * sizeof (Py_UNICODE)); #else if ((obj = PyUnicode_FromUnicode(NULL, qstr.length())) == NULL) return NULL; memcpy(PyUnicode_AS_UNICODE(obj), qstr.utf16(), qstr.length() * sizeof (Py_UNICODE)); #endif return obj; } // Convert a Python Unicode object to a QString. QString qpycore_PyObject_AsQString(PyObject *obj) { #if defined(PYQT_PEP_393) int char_size; Py_ssize_t len; void *data = sipUnicodeData(obj, &char_size, &len); if (char_size == 1) return QString::fromLatin1(reinterpret_cast(data), len); if (char_size == 2) // The (QChar *) cast should be safe. return QString(reinterpret_cast(data), len); if (char_size == 4) return QString::fromUcs4(reinterpret_cast(data), len); return QString(); #elif defined(Py_UNICODE_WIDE) return QString::fromUcs4((const uint *)PyUnicode_AS_UNICODE(obj), PyUnicode_GET_SIZE(obj)); #else return QString::fromUtf16((const ushort *)PyUnicode_AS_UNICODE(obj), PyUnicode_GET_SIZE(obj)); #endif } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_qt_conf.cpp0000644000076500000240000000563513245233150021415 0ustar philstaff00000000000000// This is the implementatation of an embedded qt.conf file. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #if defined(PYQT_QTCONF_PREFIX) #include #include #include #include #include "qpycore_api.h" static const unsigned char qt_resource_name[] = { // qt 0x0,0x2, 0x0,0x0,0x7,0x84, 0x0,0x71, 0x0,0x74, // etc 0x0,0x3, 0x0,0x0,0x6c,0xa3, 0x0,0x65, 0x0,0x74,0x0,0x63, // qt.conf 0x0,0x7, 0x8,0x74,0xa6,0xa6, 0x0,0x71, 0x0,0x74,0x0,0x2e,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x66, }; static const unsigned char qt_resource_struct[] = { // : 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1, // :/qt 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2, // :/qt/etc 0x0,0x0,0x0,0xa,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3, // :/qt/etc/qt.conf 0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0, }; bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); // Embed a qt.conf file. bool qpycore_qt_conf() { // Get PyQt5.__file__. PyObject *pyqt5 = PyImport_ImportModule("PyQt5"); if (!pyqt5) return false; PyObject *init = PyObject_GetAttrString(pyqt5, "__file__"); Py_DECREF(pyqt5); if (!init) return false; QString init_impl(qpycore_PyObject_AsQString(init)); Py_DECREF(init); if (init_impl.isEmpty()) return false; // Get the directory containing the PyQt5 extension modules. QDir pyqt5_dir = QFileInfo(QDir::fromNativeSeparators(init_impl)).absoluteDir(); // Get the prefix path with non-native separators. static QByteArray qt_conf = pyqt5_dir.absoluteFilePath(PYQT_QTCONF_PREFIX).toLocal8Bit(); qt_conf.prepend("[Paths]\nPrefix = "); qt_conf.append("\n"); // Prepend the 4-byte size. int size = qt_conf.size(); for (int i = 0; i < 4; ++i) { qt_conf.prepend(size & 0xff); size >>= 8; } // Register the structures. qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, (const unsigned char *)qt_conf.constData()); return true; } #endif PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_qvariant.cpp0000644000076500000240000000313313245233150021600 0ustar philstaff00000000000000// This is the support for QVariant. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" // Return the Python object from the variant. PyObject *qpycore_PyObject_FromQVariant(const QVariant &qvar) { return Chimera::toAnyPyObject(qvar); } // Return a variant containing the Python object. It will be converted to a // C++ instance if possible (ie. if it is a fundamental type or a direct // wrapped type). Otherwise it is left as a Python object (with an increased // reference count). An exception is raised if there was a conversion error. // (The type of the object will never be the cause of an error.) QVariant qpycore_PyObject_AsQVariant(PyObject *obj, int *is_err) { return Chimera::fromAnyPyObject(obj, is_err); } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_qvariant_value.cpp0000644000076500000240000001424013245233150022775 0ustar philstaff00000000000000// This implements the conversion of a QVariant to a Python object and is part // of the public API. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_chimera.h" #include "sipAPIQtCore.h" // Forward declarations. static PyObject *convert_hash(const Chimera *ct, const QVariantHash &value); static PyObject *convert_list(const Chimera *ct, const QVariantList &value); static PyObject *convert_map(const Chimera *ct, const QVariantMap &value); static PyObject *convert(const Chimera *ct, const QVariant &value); static int add_variant_to_dict(const Chimera *ct, PyObject *dict, const QString &key, const QVariant &value); // Convert a QVariant to a Python object according to an optional type. PyObject *pyqt5_from_qvariant_by_type(QVariant &value, PyObject *type) { PyObject *value_obj; if (type) { const Chimera *ct = Chimera::parse(type); if (!ct) return 0; QVariant::Type wanted = static_cast(ct->metatype()); // Get QVariant to do a conversion if there is one to do. if (value.isValid() && ct->metatype() < static_cast(QVariant::UserType)) { // If we have a QStringList but are not wanting one then convert it // to a QVariantList. if (wanted != QVariant::StringList && value.type() == QVariant::StringList) value.convert(QVariant::List); // If we have a container but are not wanting one then assume we // want a container with elements of the wanted type. if (wanted != QVariant::List && value.type() == QVariant::List) { // If we have a QVariantList but we wanted a QStringList then // assume each variant is a string. if (wanted == QVariant::StringList) value_obj = convert(ct, value); else value_obj = convert_list(ct, value.toList()); } else if (wanted != QVariant::Map && value.type() == QVariant::Map) { value_obj = convert_map(ct, value.toMap()); } else if (wanted != QVariant::Hash && value.type() == QVariant::Hash) { value_obj = convert_hash(ct, value.toHash()); } else { value_obj = convert(ct, value); } } else if (!value.isValid()) { // Convert an invalid value to the default value of the requested // type. if (ct->py_type()) value_obj = PyObject_CallObject(ct->py_type(), NULL); else value_obj = ct->toPyObject(QVariant(wanted)); } else { // This is likely to fail and the exception will say why. value_obj = ct->toPyObject(value); } delete ct; } else { QVariant *heap = new QVariant(value); value_obj = sipConvertFromNewType(heap, sipType_QVariant, 0); if (!value_obj) delete heap; } return value_obj; } // Convert a QVariantList to a list of Python objects. static PyObject *convert_list(const Chimera *ct, const QVariantList &value) { PyObject *list = PyList_New(value.size()); if (!list) return 0; for (int i = 0; i < value.size(); ++i) { PyObject *el = convert(ct, value.at(i)); if (!el) { Py_DECREF(list); return 0; } PyList_SetItem(list, i, el); } return list; } // Convert a QVariantMap to a dict of Python objects. static PyObject *convert_map(const Chimera *ct, const QVariantMap &value) { PyObject *dict = PyDict_New(); if (!dict) return 0; for (QVariantMap::const_iterator it = value.constBegin(); it != value.constEnd(); ++it) { if (add_variant_to_dict(ct, dict, it.key(), it.value()) < 0) { Py_DECREF(dict); return 0; } } return dict; } // Convert a QVariantHash to a dict of Python objects. static PyObject *convert_hash(const Chimera *ct, const QVariantHash &value) { PyObject *dict = PyDict_New(); if (!dict) return 0; for (QVariantHash::const_iterator it = value.constBegin(); it != value.constEnd(); ++it) { if (add_variant_to_dict(ct, dict, it.key(), it.value()) < 0) { Py_DECREF(dict); return 0; } } return dict; } // Convert a QVariant to a Python object. static PyObject *convert(const Chimera *ct, const QVariant &value) { QVariant converted = value; if (!converted.convert(static_cast(ct->metatype()))) converted = value; return ct->toPyObject(converted); } // Add a QVariant to a Python dict with a QString key. static int add_variant_to_dict(const Chimera *ct, PyObject *dict, const QString &key, const QVariant &value) { QString *key_heap = new QString(key); PyObject *key_obj = sipConvertFromNewType(key_heap, sipType_QString, 0); if (!key_obj) { delete key_heap; return 0; } PyObject *value_obj = convert(ct, value); if (!value_obj) { Py_DECREF(key_obj); return 0; } int rc = PyDict_SetItem(dict, key_obj, value_obj); Py_DECREF(key_obj); Py_DECREF(value_obj); return rc; } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_types.cpp0000644000076500000240000004102513245233150021121 0ustar philstaff00000000000000// This contains the meta-type used by PyQt. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include #include #include "qpycore_chimera.h" #include "qpycore_classinfo.h" #include "qpycore_enums_flags.h" #include "qpycore_misc.h" #include "qpycore_objectified_strings.h" #include "qpycore_pyqtproperty.h" #include "qpycore_pyqtsignal.h" #include "qpycore_pyqtslot.h" #include "qpycore_qmetaobjectbuilder.h" #include "qpycore_types.h" #include "sipAPIQtCore.h" // A tuple of the property name and definition. typedef QPair PropertyData; // Forward declarations. static int trawl_hierarchy(PyTypeObject *pytype, qpycore_metaobject *qo, QMetaObjectBuilder &builder, QList &psigs, QMap &pprops); static int trawl_type(PyTypeObject *pytype, qpycore_metaobject *qo, QMetaObjectBuilder &builder, QList &psigs, QMap &pprops); static qpycore_metaobject *create_dynamic_metaobject(sipWrapperType *wt); static const QMetaObject *get_scope_qmetaobject(const Chimera *ct); // The handler invoked whenever a Python sub-class of QObject is defined. int qpycore_new_user_type_handler(sipWrapperType *wt) { const pyqt5ClassPluginDef *cpd = reinterpret_cast(sipTypePluginData(sipTypeFromPyTypeObject((PyTypeObject *)wt))); Q_ASSERT(cpd); // Create a dynamic meta-object as its base wrapped type has a static Qt // meta-object. if (cpd->static_metaobject) { qpycore_metaobject *qo = create_dynamic_metaobject(wt); if (!qo) return -1; sipSetTypeUserData(wt, qo); } return 0; } // Create a dynamic meta-object for a Python type by introspecting its // attributes. Note that it leaks if the type is deleted. static qpycore_metaobject *create_dynamic_metaobject(sipWrapperType *wt) { PyTypeObject *pytype = (PyTypeObject *)wt; qpycore_metaobject *qo = new qpycore_metaobject; QMetaObjectBuilder builder; // Get any class info. QList class_info_list = qpycore_get_class_info_list(); // Get any enums/flags. QList enums_flags_list = qpycore_get_enums_flags_list(); // Get the super-type's meta-object. PyTypeObject *tp_base; #if PY_VERSION_HEX >= 0x03040000 tp_base = reinterpret_cast( PyType_GetSlot(pytype, Py_tp_base)); #else tp_base = pytype->tp_base; #endif builder.setSuperClass(qpycore_get_qmetaobject((sipWrapperType *)tp_base)); // Get the name of the type. Dynamic types have simple names. builder.setClassName(sipPyTypeName(pytype)); // Go through the class hierarchy getting all PyQt properties, slots and // signals. QList psigs; QMap pprops; if (trawl_hierarchy(pytype, qo, builder, psigs, pprops) < 0) return 0; qo->nr_signals = psigs.count(); // Initialise the header section of the data table. Note that Qt v4.5 // introduced revision 2 which added constructors. However the design is // broken in that the static meta-call function doesn't provide enough // information to determine which Python sub-class of a Qt class is to be // created. So we stick with revision 1 (and don't allow pyqtSlot() to // decorate __init__). // Set up any class information. for (int i = 0; i < class_info_list.count(); ++i) { const ClassInfo &ci = class_info_list.at(i); builder.addClassInfo(ci.first, ci.second); } // Set up any enums/flags. for (int i = 0; i < enums_flags_list.count(); ++i) { const EnumsFlags &ef = enums_flags_list.at(i); QMetaEnumBuilder enum_builder = builder.addEnumerator(ef.name); enum_builder.setIsFlag(ef.isFlag); QHash::const_iterator it = ef.keys.constBegin(); while (it != ef.keys.constEnd()) { enum_builder.addKey(it.key(), it.value()); ++it; } } // Add the signals to the meta-object. for (int g = 0; g < qo->nr_signals; ++g) { const qpycore_pyqtSignal *ps = psigs.at(g); QMetaMethodBuilder signal_builder = builder.addSignal( ps->parsed_signature->signature.mid(1)); if (ps->parameter_names) signal_builder.setParameterNames(*ps->parameter_names); signal_builder.setRevision(ps->revision); } // Add the slots to the meta-object. for (int s = 0; s < qo->pslots.count(); ++s) { const Chimera::Signature *slot_signature = qo->pslots.at(s)->slotSignature(); const QByteArray &sig = slot_signature->signature; QMetaMethodBuilder slot_builder = builder.addSlot(sig); // Add any type. if (slot_signature->result) slot_builder.setReturnType(slot_signature->result->name()); slot_builder.setRevision(slot_signature->revision); } // Add the properties to the meta-object. QMapIterator it(pprops); for (int p = 0; it.hasNext(); ++p) { it.next(); const PropertyData &pprop = it.value(); const char *prop_name = SIPBytes_AsString(pprop.first); qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)pprop.second; int notifier_id; if (pp->pyqtprop_notify) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)pp->pyqtprop_notify; const QByteArray &sig = ps->parsed_signature->signature; notifier_id = builder.indexOfSignal(sig.mid(1)); if (notifier_id < 0) { PyErr_Format(PyExc_TypeError, "the notify signal '%s' was not defined in this class", sig.constData() + 1); // Note that we leak the property name. return 0; } } else { notifier_id = -1; } // A Qt v5 revision 7 meta-object holds the QMetaType::Type of the type // or its name if it is unresolved (ie. not known to the type system). // In Qt v4 both are held. For QObject sub-classes Chimera will fall // back to the QMetaType::QObjectStar if there is no specific meta-type // for the sub-class. This means that, for Qt v4, // QMetaProperty::read() can handle the type. However, Qt v5 doesn't // know that the unresolved type is a QObject sub-class. Therefore we // have to tell it that the property is a QObject, rather than the // sub-class. This means that QMetaProperty.typeName() will always // return "QObject*". QByteArray prop_type; if (pp->pyqtprop_parsed_type->metatype() == QMetaType::QObjectStar) { // However, if the type is a Python sub-class of QObject then we // use the name of the Python type. This anticipates that the type // is one that will be proxied by QML at some point. if (pp->pyqtprop_parsed_type->typeDef() == sipType_QObject) { prop_type = sipPyTypeName( (PyTypeObject *)pp->pyqtprop_parsed_type->py_type()); prop_type.append('*'); } else { prop_type = "QObject*"; } } else { prop_type = pp->pyqtprop_parsed_type->name(); } QMetaPropertyBuilder prop_builder = builder.addProperty( QByteArray(prop_name), prop_type, notifier_id); // Reset the defaults. prop_builder.setReadable(false); prop_builder.setWritable(false); // Enum or flag. if (pp->pyqtprop_parsed_type->isEnum()) { prop_builder.setEnumOrFlag(true); } if (pp->pyqtprop_get && PyCallable_Check(pp->pyqtprop_get)) { // Readable. prop_builder.setReadable(true); } if (pp->pyqtprop_set && PyCallable_Check(pp->pyqtprop_set)) { // Writable. prop_builder.setWritable(true); // See if the name of the setter follows the Designer convention. // If so tell the UI compilers not to use setProperty(). PyObject *setter_name_obj = PyObject_GetAttr(pp->pyqtprop_set, qpycore_dunder_name); if (setter_name_obj) { PyObject *ascii_obj = setter_name_obj; const char *ascii = sipString_AsASCIIString(&ascii_obj); Py_DECREF(setter_name_obj); if (ascii) { if (qstrlen(ascii) > 3 && ascii[0] == 's' && ascii[1] == 'e' && ascii[2] == 't' && ascii[3] == toupper(prop_name[0]) && qstrcmp(&ascii[4], &prop_name[1]) == 0) prop_builder.setStdCppSet(true); } Py_DECREF(ascii_obj); } PyErr_Clear(); } if (pp->pyqtprop_reset && PyCallable_Check(pp->pyqtprop_reset)) { // Resetable. prop_builder.setResettable(true); } // Add the property flags. Note that Qt4 always seems to have // ResolveEditable set but QMetaObjectBuilder doesn't provide an API // call to do it. prop_builder.setDesignable(pp->pyqtprop_flags & 0x00001000); prop_builder.setScriptable(pp->pyqtprop_flags & 0x00004000); prop_builder.setStored(pp->pyqtprop_flags & 0x00010000); prop_builder.setUser(pp->pyqtprop_flags & 0x00100000); prop_builder.setConstant(pp->pyqtprop_flags & 0x00000400); prop_builder.setFinal(pp->pyqtprop_flags & 0x00000800); prop_builder.setRevision(pp->pyqtprop_revision); // Save the property data for qt_metacall(). (We already have a // reference.) qo->pprops.append(pp); // We've finished with the property name. Py_DECREF(pprop.first); } // Initialise the rest of the meta-object. qo->mo = builder.toMetaObject(); return qo; } // Trawl a type's hierarchy looking for any slots, signals or properties. static int trawl_hierarchy(PyTypeObject *pytype, qpycore_metaobject *qo, QMetaObjectBuilder &builder, QList &psigs, QMap &pprops) { if (trawl_type(pytype, qo, builder, psigs, pprops) < 0) return -1; PyObject *tp_bases; #if PY_VERSION_HEX >= 0x03040000 if (PyType_HasFeature(pytype, Py_TPFLAGS_HEAPTYPE)) tp_bases = reinterpret_cast( PyType_GetSlot(pytype, Py_tp_bases)); else tp_bases = 0; #else tp_bases = pytype->tp_bases; #endif if (!tp_bases) return 0; Q_ASSERT(PyTuple_Check(tp_bases)); for (Py_ssize_t i = 0; i < PyTuple_Size(tp_bases); ++i) { PyTypeObject *sup = (PyTypeObject *)PyTuple_GetItem(tp_bases, i); #if PY_MAJOR_VERSION < 3 /* Ignore classic classes as mixins. */ if (PyClass_Check((PyObject *)sup)) continue; #endif if (PyType_IsSubtype(sup, sipTypeAsPyTypeObject(sipType_QObject))) continue; if (trawl_hierarchy(sup, qo, builder, psigs, pprops) < 0) return -1; } return 0; } // Trawl a type's dict looking for any slots, signals or properties. static int trawl_type(PyTypeObject *pytype, qpycore_metaobject *qo, QMetaObjectBuilder &builder, QList &psigs, QMap &pprops) { Py_ssize_t pos = 0; PyObject *key, *value, *dict; dict = sipPyTypeDict(pytype); while (PyDict_Next(dict, &pos, &key, &value)) { // See if it is a slot, ie. it has been decorated with pyqtSlot(). PyObject *sig_obj = PyObject_GetAttr(value, qpycore_dunder_pyqtsignature); if (sig_obj) { // Make sure it is a list and not some legitimate attribute that // happens to use our special name. if (PyList_Check(sig_obj)) { for (Py_ssize_t i = 0; i < PyList_Size(sig_obj); ++i) { // Set up the skeleton slot. PyObject *decoration = PyList_GetItem(sig_obj, i); Chimera::Signature *slot_signature = Chimera::Signature::fromPyObject(decoration); PyQtSlot *slot = new PyQtSlot(value, (PyObject *)pytype, slot_signature);; qo->pslots.append(slot); } } Py_DECREF(sig_obj); } else { PyErr_Clear(); // Make sure the key is an ASCII string. Delay the error checking // until we know we actually need it. const char *ascii_key = sipString_AsASCIIString(&key); // See if the value is of interest. if (PyObject_TypeCheck(value, qpycore_pyqtProperty_TypeObject)) { // It is a property. if (!ascii_key) return -1; Py_INCREF(value); qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)value; pprops.insert(pp->pyqtprop_sequence, PropertyData(key, value)); // See if the property has a scope. If so, collect all // QMetaObject pointers that are not in the super-class // hierarchy. const QMetaObject *mo = get_scope_qmetaobject(pp->pyqtprop_parsed_type); if (mo) builder.addRelatedMetaObject(mo); } else if (PyObject_TypeCheck(value, qpycore_pyqtSignal_TypeObject)) { // It is a signal. if (!ascii_key) return -1; qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)value; // Make sure the signal has a name. qpycore_set_signal_name(ps, sipPyTypeName(pytype), ascii_key); // Add all the overloads. do { psigs.append(ps); ps = ps->next; } while (ps); Py_DECREF(key); } else { PyErr_Clear(); } } } return 0; } // Return the QMetaObject for an enum type's scope. static const QMetaObject *get_scope_qmetaobject(const Chimera *ct) { // Check it is an enum. if (!ct->isEnum()) return 0; // Check it has a scope. if (!ct->typeDef()) return 0; const sipTypeDef *td = sipTypeScope(ct->typeDef()); if (!td) return 0; // Check the scope is wrapped by PyQt. if (!qpycore_is_pyqt_class(td)) return 0; return qpycore_get_qmetaobject((sipWrapperType *)sipTypeAsPyTypeObject(td)); } // Return the QMetaObject for a type. const QMetaObject *qpycore_get_qmetaobject(sipWrapperType *wt, const sipTypeDef *base_td) { if (wt) { qpycore_metaobject *qo = reinterpret_cast( sipGetTypeUserData(wt)); // See if it has a dynamic meta-object. if (qo) return qo->mo; } // Get the static meta-object if there is one. if (!base_td) { if (!wt) return 0; base_td = sipTypeFromPyTypeObject((PyTypeObject *)wt); if (!base_td) return 0; } const pyqt5ClassPluginDef *cpd = reinterpret_cast(sipTypePluginData(base_td)); return reinterpret_cast(cpd->static_metaobject); } PyQt5_gpl-5.10.1/qpy/QtCore/qpycore_types.h0000644000076500000240000000302113245233150020560 0ustar philstaff00000000000000// This defines the interfaces for the meta-type used by PyQt. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_TYPES_H #define _QPYCORE_TYPES_H #include #include #include "qpycore_pyqtproperty.h" class PyQtSlot; // This describes a dynamic meta-object. struct qpycore_metaobject { // The meta-object built by QMetaObjectBuilder. QMetaObject *mo; // The list of properties. QList pprops; // The list of slots. QList pslots; // The number of signals. int nr_signals; }; int qpycore_new_user_type_handler(sipWrapperType *wt); const QMetaObject *qpycore_get_qmetaobject(sipWrapperType *wt, const sipTypeDef *base_td = 0); #endif PyQt5_gpl-5.10.1/qpy/QtDBus/0000755000076500000240000000000013245233150015452 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/qpy/QtDBus/qpydbus_api.h0000644000076500000240000000174713245233150020154 0ustar philstaff00000000000000// This defines the API provided by this library. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDBUS_API_H #define _QPYDBUS_API_H // Initialisation. void qpydbus_post_init(); #endif PyQt5_gpl-5.10.1/qpy/QtDBus/qpydbus_chimera_helpers.cpp0000644000076500000240000001315313245233150023062 0ustar philstaff00000000000000// This is the implementation of the various Chimera helpers. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include #include "qpydbus_chimera_helpers.h" #include "sipAPIQtDBus.h" // Forward declarations. static PyObject *from_variant_type(const QDBusArgument &arg); static PyObject *from_array_type(const QDBusArgument &arg); static PyObject *from_structure_type(const QDBusArgument &arg); static PyObject *from_map_type(const QDBusArgument &arg); static PyObject *from_qstring(const QString &arg); static PyObject *from_qvariant(const QVariant &arg); // Convert a QVariant to a Python object. bool qpydbus_from_qvariant_convertor(const QVariant &var, PyObject **objp) { // Handle QDBusObjectPath. if (var.userType() == qMetaTypeId()) { *objp = from_qstring(var.value().path()); return true; } // Handle QDBusSignature. if (var.userType() == qMetaTypeId()) { *objp = from_qstring(var.value().signature()); return true; } // Handle QDBusVariant. if (var.userType() == qMetaTypeId()) { *objp = from_qvariant(var.value().variant()); return true; } // Anything else must be a QDBusArgument. if (var.userType() != qMetaTypeId()) return false; QDBusArgument arg = var.value(); switch (arg.currentType()) { case QDBusArgument::BasicType: *objp = from_qvariant(arg.asVariant()); break; case QDBusArgument::VariantType: *objp = from_variant_type(arg); break; case QDBusArgument::ArrayType: *objp = from_array_type(arg); break; case QDBusArgument::StructureType: *objp = from_structure_type(arg); break; case QDBusArgument::MapType: *objp = from_map_type(arg); break; default: PyErr_Format(PyExc_TypeError, "unsupported DBus argument type %d", (int)arg.currentType()); *objp = 0; } return true; } // Convert a QDBusArgument variant type to a Python object. static PyObject *from_variant_type(const QDBusArgument &arg) { QDBusVariant dbv; arg >> dbv; return from_qvariant(dbv.variant()); } // Convert a QDBusArgument array type to a Python object. static PyObject *from_array_type(const QDBusArgument &arg) { QVariantList vl; arg.beginArray(); while (!arg.atEnd()) vl.append(arg.asVariant()); arg.endArray(); PyObject *obj = PyList_New(vl.count()); if (!obj) return 0; for (int i = 0; i < vl.count(); ++i) { PyObject *itm = from_qvariant(vl.at(i)); if (!itm) { Py_DECREF(obj); return 0; } PyList_SetItem(obj, i, itm); } return obj; } // Convert a QDBusArgument structure type to a Python object. static PyObject *from_structure_type(const QDBusArgument &arg) { QVariantList vl; arg.beginStructure(); while (!arg.atEnd()) vl.append(arg.asVariant()); arg.endStructure(); PyObject *obj = PyTuple_New(vl.count()); if (!obj) return 0; for (int i = 0; i < vl.count(); ++i) { PyObject *itm = from_qvariant(vl.at(i)); if (!itm) { Py_DECREF(obj); return 0; } PyTuple_SetItem(obj, i, itm); } return obj; } // Convert a QDBusArgument map type to a Python object. static PyObject *from_map_type(const QDBusArgument &arg) { PyObject *obj = PyDict_New(); if (!obj) return 0; arg.beginMap(); while (!arg.atEnd()) { arg.beginMapEntry(); PyObject *key = from_qvariant(arg.asVariant()); PyObject *value = from_qvariant(arg.asVariant()); arg.endMapEntry(); if (!key || !value) { Py_XDECREF(key); Py_XDECREF(value); Py_DECREF(obj); return 0; } int rc = PyDict_SetItem(obj, key, value); Py_DECREF(key); Py_DECREF(value); if (rc < 0) { Py_DECREF(obj); return 0; } } arg.endMap(); return obj; } // Convert a QString to a Python object. static PyObject *from_qstring(const QString &arg) { QString *heap = new QString(arg); PyObject *obj = sipConvertFromNewType(heap, sipType_QString, 0); if (!obj) delete heap; return obj; } // Convert a QVariant to a Python object. static PyObject *from_qvariant(const QVariant &arg) { QVariant *heap = new QVariant(arg); PyObject *obj = sipConvertFromNewType(heap, sipType_QVariant, 0); if (!obj) delete heap; return obj; } PyQt5_gpl-5.10.1/qpy/QtDBus/qpydbus_chimera_helpers.h0000644000076500000240000000232413245233150022525 0ustar philstaff00000000000000// This is the definition of the various Chimera helpers. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDBUS_CHIMERAHELPERS_H #define _QPYDBUS_CHIMERAHELPERS_H #include #include // Keep this in sync. with that defined in the public API. typedef bool (*FromQVariantConvertorFn)(const QVariant &, PyObject **); bool qpydbus_from_qvariant_convertor(const QVariant &var, PyObject **objp); #endif PyQt5_gpl-5.10.1/qpy/QtDBus/qpydbus_post_init.cpp0000644000076500000240000000267713245233150021751 0ustar philstaff00000000000000// This is the initialisation support code for the QtDBus module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpydbus_api.h" #include "qpydbus_chimera_helpers.h" #include "sipAPIQtDBus.h" // Perform any required initialisation. void qpydbus_post_init() { // Get the Chimera helper registration function. void (*register_from_qvariant_convertor)(FromQVariantConvertorFn); register_from_qvariant_convertor = (void (*)(FromQVariantConvertorFn))sipImportSymbol("pyqt5_register_from_qvariant_convertor"); Q_ASSERT(register_from_qvariant_convertor); register_from_qvariant_convertor(qpydbus_from_qvariant_convertor); } PyQt5_gpl-5.10.1/qpy/QtDBus/qpydbuspendingreply.cpp0000644000076500000240000000351113245233150022266 0ustar philstaff00000000000000// This is the implementation of the QPyDBusPendingReply class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpydbuspendingreply.h" #include "sipAPIQtDBus.h" // Default ctor. QPyDBusPendingReply::QPyDBusPendingReply() : QDBusPendingReply() { } // Copy a reply. QPyDBusPendingReply::QPyDBusPendingReply(const QPyDBusPendingReply &other) : QDBusPendingReply(other) { } // Extract a reply from another pending call. QPyDBusPendingReply::QPyDBusPendingReply(const QDBusPendingCall &call) : QDBusPendingReply(call) { } // Extract a reply from a message. QPyDBusPendingReply::QPyDBusPendingReply(const QDBusMessage &reply) : QDBusPendingReply(reply) { } // Return the value of the reply. The GIL should be held. PyObject *QPyDBusPendingReply::value(PyObject *type) const { QVariant val; // This will wait for the call to complete. Py_BEGIN_ALLOW_THREADS val = argumentAt(0); Py_END_ALLOW_THREADS return pyqt5_qtdbus_from_qvariant_by_type(val, type); } PyQt5_gpl-5.10.1/qpy/QtDBus/qpydbuspendingreply.h0000644000076500000240000000247413245233150021742 0ustar philstaff00000000000000// This is the definition of the QPyDBusPendingReply class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDBUSPENDINGREPLY_H #define _QPYDBUSPENDINGREPLY_H #include #include class QPyDBusPendingReply : public QDBusPendingReply { public: QPyDBusPendingReply(); QPyDBusPendingReply(const QPyDBusPendingReply &other); QPyDBusPendingReply(const QDBusPendingCall &call); QPyDBusPendingReply(const QDBusMessage &reply); PyObject *value(PyObject *type) const; }; #endif PyQt5_gpl-5.10.1/qpy/QtDBus/qpydbusreply.cpp0000644000076500000240000000677713245233150020742 0ustar philstaff00000000000000// This is the implementation of the QPyDBusReply class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpydbusreply.h" #include "sipAPIQtDBus.h" // Extract a reply from a message. The GIL should be held. QPyDBusReply::QPyDBusReply(const QDBusMessage &reply) { *this = reply; } // Extract a reply from a pending call. The GIL should be held. QPyDBusReply::QPyDBusReply(const QDBusPendingCall &call) { *this = call; } // Extract a reply from an error. QPyDBusReply::QPyDBusReply(const QDBusError &error) { _q_value = 0; _q_is_valid = !error.isValid(); _q_error = error; } // Copy a reply. The GIL should be held. QPyDBusReply::QPyDBusReply(const QPyDBusReply &other) { _q_value = other._q_value; Py_XINCREF(_q_value); _q_value_variant = other._q_value_variant; _q_is_valid = other._q_is_valid; _q_error = other._q_error; } // A reply created from a QDBusReply<> mapped type convertor. QPyDBusReply::QPyDBusReply(PyObject *q_value, bool q_is_valid, const QDBusError &q_error) : _q_value(q_value), _q_is_valid(q_is_valid), _q_error(q_error) { } // The dtor. The GIL should be held. QPyDBusReply::~QPyDBusReply() { Py_XDECREF(_q_value); } // Return the value of the reply. The GIL should be held. PyObject *QPyDBusReply::value(PyObject *type) const { if (!_q_is_valid) { PyErr_SetString(PyExc_ValueError, "QDBusReply value is invalid"); return 0; } // Return any explicit value. if (_q_value) { if (type) { PyErr_SetString(PyExc_ValueError, "'type' argument cannot be used with an explcitly typed reply"); return 0; } Py_INCREF(_q_value); return _q_value; } QVariant val(_q_value_variant); return pyqt5_qtdbus_from_qvariant_by_type(val, type); } // Extract a reply from a message. The GIL should be held. QPyDBusReply &QPyDBusReply::operator=(const QDBusMessage &reply) { _q_value = 0; _q_error = reply; _q_is_valid = !_q_error.isValid(); if (_q_is_valid) { QList results = reply.arguments(); if (results.count() == 0) { Py_INCREF(Py_None); _q_value = Py_None; } else { // Convert this later if requested. _q_value_variant = results.at(0); } } return *this; } // Extract a reply from a pending call. The GIL should be held. QPyDBusReply &QPyDBusReply::operator=(const QDBusPendingCall &call) { QDBusPendingCall other(call); Py_BEGIN_ALLOW_THREADS other.waitForFinished(); Py_END_ALLOW_THREADS return *this = other.reply(); } PyQt5_gpl-5.10.1/qpy/QtDBus/qpydbusreply.h0000644000076500000240000000337413245233150020375 0ustar philstaff00000000000000// This is the definition of the QPyDBusReply class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDBUSREPLY_H #define _QPYDBUSREPLY_H #include #include #include class QDBusMessage; class QDBusPendingCall; class QPyDBusReply { public: QPyDBusReply(const QDBusMessage &reply); QPyDBusReply(const QDBusPendingCall &call); QPyDBusReply(const QDBusError &error = QDBusError()); QPyDBusReply(const QPyDBusReply &other); QPyDBusReply(PyObject *q_value, bool q_is_valid, const QDBusError &q_error); ~QPyDBusReply(); inline const QDBusError &error() const {return _q_error;} inline bool isValid() const {return _q_is_valid;} PyObject *value(PyObject *type) const; QPyDBusReply &operator=(const QDBusMessage &reply); QPyDBusReply &operator=(const QDBusPendingCall &call); private: PyObject *_q_value; QVariant _q_value_variant; bool _q_is_valid; QDBusError _q_error; }; #endif PyQt5_gpl-5.10.1/qpy/QtDesigner/0000755000076500000240000000000013245233150016355 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/qpy/QtDesigner/qpydesignercontainerextension.h0000644000076500000240000000260213245233150024720 0ustar philstaff00000000000000// This is the definition and implementation of the // QPyDesignerContainerExtension class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERCONTAINEREXTENSION_H #define _QPYDESIGNERCONTAINEREXTENSION_H #include #include class QPyDesignerContainerExtension : public QObject, public QDesignerContainerExtension { Q_OBJECT Q_INTERFACES(QDesignerContainerExtension) public: QPyDesignerContainerExtension(QObject *parent) : QObject(parent) {}; private: QPyDesignerContainerExtension(const QPyDesignerContainerExtension &); }; #endif PyQt5_gpl-5.10.1/qpy/QtDesigner/qpydesignercustomwidgetcollectionplugin.h0000644000076500000240000000272413245233150027017 0ustar philstaff00000000000000// This is the definition and implementation of the // QPyDesignerCustomWidgetCollectionPlugin class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERCUSTOMWIDGETCOLLECTIONPLUGIN_H #define _QPYDESIGNERCUSTOMWIDGETCOLLECTIONPLUGIN_H #include #include class QPyDesignerCustomWidgetCollectionPlugin : public QObject, public QDesignerCustomWidgetCollectionInterface { Q_OBJECT Q_INTERFACES(QDesignerCustomWidgetCollectionInterface) public: QPyDesignerCustomWidgetCollectionPlugin(QObject *parent = 0) : QObject(parent) {} private: QPyDesignerCustomWidgetCollectionPlugin(const QPyDesignerCustomWidgetCollectionPlugin &); }; #endif PyQt5_gpl-5.10.1/qpy/QtDesigner/qpydesignercustomwidgetplugin.h0000644000076500000240000000257213245233150024744 0ustar philstaff00000000000000// This is the definition and implementation of the // QPyDesignerCustomWidgetPlugin class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERCUSTOMWIDGETPLUGIN_H #define _QPYDESIGNERCUSTOMWIDGETPLUGIN_H #include #include class QPyDesignerCustomWidgetPlugin : public QObject, public QDesignerCustomWidgetInterface { Q_OBJECT Q_INTERFACES(QDesignerCustomWidgetInterface) public: QPyDesignerCustomWidgetPlugin(QObject *parent = 0) : QObject(parent) {} private: QPyDesignerCustomWidgetPlugin(const QPyDesignerCustomWidgetPlugin &); }; #endif PyQt5_gpl-5.10.1/qpy/QtDesigner/qpydesignermembersheetextension.h0000644000076500000240000000262613245233150025244 0ustar philstaff00000000000000// This is the definition and implementation of the // QPyDesignerMemberSheetExtension class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERMEMBERSHEETEXTENSION_H #define _QPYDESIGNERMEMBERSHEETEXTENSION_H #include #include class QPyDesignerMemberSheetExtension : public QObject, public QDesignerMemberSheetExtension { Q_OBJECT Q_INTERFACES(QDesignerMemberSheetExtension) public: QPyDesignerMemberSheetExtension(QObject *parent) : QObject(parent) {}; private: QPyDesignerMemberSheetExtension(const QPyDesignerMemberSheetExtension &); }; #endif PyQt5_gpl-5.10.1/qpy/QtDesigner/qpydesignerpropertysheetextension.h0000644000076500000240000000265213245233150025660 0ustar philstaff00000000000000// This is the definition and implementation of the // QPyDesignerPropertySheetExtension class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERPROPERTYSHEETEXTENSION_H #define _QPYDESIGNERPROPERTYSHEETEXTENSION_H #include #include class QPyDesignerPropertySheetExtension : public QObject, public QDesignerPropertySheetExtension { Q_OBJECT Q_INTERFACES(QDesignerPropertySheetExtension) public: QPyDesignerPropertySheetExtension(QObject *parent) : QObject(parent) {}; private: QPyDesignerPropertySheetExtension(const QPyDesignerPropertySheetExtension &); }; #endif PyQt5_gpl-5.10.1/qpy/QtDesigner/qpydesignertaskmenuextension.h0000644000076500000240000000257013245233150024571 0ustar philstaff00000000000000// This is the definition and implementation of the // QPyDesignerTaskMenuExtension class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERTASKMENUEXTENSION_H #define _QPYDESIGNERTASKMENUEXTENSION_H #include #include class QPyDesignerTaskMenuExtension : public QObject, public QDesignerTaskMenuExtension { Q_OBJECT Q_INTERFACES(QDesignerTaskMenuExtension) public: QPyDesignerTaskMenuExtension(QObject *parent) : QObject(parent) {}; private: QPyDesignerTaskMenuExtension(const QPyDesignerTaskMenuExtension &); }; #endif PyQt5_gpl-5.10.1/qpy/QtGui/0000755000076500000240000000000013245233150015341 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/qpy/QtGui/qpyopengl_add_constants.cpp0000644000076500000240000063226713245233150023007 0ustar philstaff00000000000000/* * This implements a function to populate a Python object with the OpenGL * constants. This file is automatically generated. * * Copyright (c) 2018 Riverbank Computing Limited * * This file is part of PyQt5. * * This file may be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * following information to ensure the GNU General Public License version 3.0 * requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * If you do not wish to use this file under the terms of the GPL version 3.0 * then you may purchase a commercial license. For more information contact * info@riverbankcomputing.com. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) struct OpenGLEnum_i { const char *name; int value; }; static OpenGLEnum_i openGLEnums_i[] = { {"GL_CURRENT_BIT", 0x00000001}, {"GL_POINT_BIT", 0x00000002}, {"GL_LINE_BIT", 0x00000004}, {"GL_POLYGON_BIT", 0x00000008}, {"GL_POLYGON_STIPPLE_BIT", 0x00000010}, {"GL_PIXEL_MODE_BIT", 0x00000020}, {"GL_LIGHTING_BIT", 0x00000040}, {"GL_FOG_BIT", 0x00000080}, {"GL_DEPTH_BUFFER_BIT", 0x00000100}, {"GL_ACCUM_BUFFER_BIT", 0x00000200}, {"GL_STENCIL_BUFFER_BIT", 0x00000400}, {"GL_VIEWPORT_BIT", 0x00000800}, {"GL_TRANSFORM_BIT", 0x00001000}, {"GL_ENABLE_BIT", 0x00002000}, {"GL_COLOR_BUFFER_BIT", 0x00004000}, {"GL_HINT_BIT", 0x00008000}, {"GL_EVAL_BIT", 0x00010000}, {"GL_LIST_BIT", 0x00020000}, {"GL_TEXTURE_BIT", 0x00040000}, {"GL_SCISSOR_BIT", 0x00080000}, {"GL_MULTISAMPLE_BIT", 0x20000000}, {"GL_MULTISAMPLE_BIT_ARB", 0x20000000}, {"GL_MULTISAMPLE_BIT_EXT", 0x20000000}, {"GL_MULTISAMPLE_BIT_3DFX", 0x20000000}, {"GL_ALL_ATTRIB_BITS", static_cast(0xFFFFFFFF)}, {"GL_COVERAGE_BUFFER_BIT_NV", 0x00008000}, {"GL_CLIENT_PIXEL_STORE_BIT", 0x00000001}, {"GL_CLIENT_VERTEX_ARRAY_BIT", 0x00000002}, {"GL_CLIENT_ALL_ATTRIB_BITS", static_cast(0xFFFFFFFF)}, {"GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT", 0x00000001}, {"GL_CONTEXT_FLAG_DEBUG_BIT", 0x00000002}, {"GL_CONTEXT_FLAG_DEBUG_BIT_KHR", 0x00000002}, {"GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB", 0x00000004}, {"GL_CONTEXT_CORE_PROFILE_BIT", 0x00000001}, {"GL_CONTEXT_COMPATIBILITY_PROFILE_BIT", 0x00000002}, {"GL_MAP_READ_BIT", 0x0001}, {"GL_MAP_READ_BIT_EXT", 0x0001}, {"GL_MAP_WRITE_BIT", 0x0002}, {"GL_MAP_WRITE_BIT_EXT", 0x0002}, {"GL_MAP_INVALIDATE_RANGE_BIT", 0x0004}, {"GL_MAP_INVALIDATE_RANGE_BIT_EXT", 0x0004}, {"GL_MAP_INVALIDATE_BUFFER_BIT", 0x0008}, {"GL_MAP_INVALIDATE_BUFFER_BIT_EXT", 0x0008}, {"GL_MAP_FLUSH_EXPLICIT_BIT", 0x0010}, {"GL_MAP_FLUSH_EXPLICIT_BIT_EXT", 0x0010}, {"GL_MAP_UNSYNCHRONIZED_BIT", 0x0020}, {"GL_MAP_UNSYNCHRONIZED_BIT_EXT", 0x0020}, {"GL_MAP_PERSISTENT_BIT", 0x0040}, {"GL_MAP_COHERENT_BIT", 0x0080}, {"GL_DYNAMIC_STORAGE_BIT", 0x0100}, {"GL_CLIENT_STORAGE_BIT", 0x0200}, {"GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT", 0x00000001}, {"GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT", 0x00000001}, {"GL_ELEMENT_ARRAY_BARRIER_BIT", 0x00000002}, {"GL_ELEMENT_ARRAY_BARRIER_BIT_EXT", 0x00000002}, {"GL_UNIFORM_BARRIER_BIT", 0x00000004}, {"GL_UNIFORM_BARRIER_BIT_EXT", 0x00000004}, {"GL_TEXTURE_FETCH_BARRIER_BIT", 0x00000008}, {"GL_TEXTURE_FETCH_BARRIER_BIT_EXT", 0x00000008}, {"GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV", 0x00000010}, {"GL_SHADER_IMAGE_ACCESS_BARRIER_BIT", 0x00000020}, {"GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT", 0x00000020}, {"GL_COMMAND_BARRIER_BIT", 0x00000040}, {"GL_COMMAND_BARRIER_BIT_EXT", 0x00000040}, {"GL_PIXEL_BUFFER_BARRIER_BIT", 0x00000080}, {"GL_PIXEL_BUFFER_BARRIER_BIT_EXT", 0x00000080}, {"GL_TEXTURE_UPDATE_BARRIER_BIT", 0x00000100}, {"GL_TEXTURE_UPDATE_BARRIER_BIT_EXT", 0x00000100}, {"GL_BUFFER_UPDATE_BARRIER_BIT", 0x00000200}, {"GL_BUFFER_UPDATE_BARRIER_BIT_EXT", 0x00000200}, {"GL_FRAMEBUFFER_BARRIER_BIT", 0x00000400}, {"GL_FRAMEBUFFER_BARRIER_BIT_EXT", 0x00000400}, {"GL_TRANSFORM_FEEDBACK_BARRIER_BIT", 0x00000800}, {"GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT", 0x00000800}, {"GL_ATOMIC_COUNTER_BARRIER_BIT", 0x00001000}, {"GL_ATOMIC_COUNTER_BARRIER_BIT_EXT", 0x00001000}, {"GL_SHADER_STORAGE_BARRIER_BIT", 0x00002000}, {"GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT", 0x00004000}, {"GL_QUERY_BUFFER_BARRIER_BIT", 0x00008000}, {"GL_ALL_BARRIER_BITS", static_cast(0xFFFFFFFF)}, {"GL_ALL_BARRIER_BITS_EXT", static_cast(0xFFFFFFFF)}, {"GL_SYNC_FLUSH_COMMANDS_BIT", 0x00000001}, {"GL_SYNC_FLUSH_COMMANDS_BIT_APPLE", 0x00000001}, {"GL_VERTEX_SHADER_BIT", 0x00000001}, {"GL_VERTEX_SHADER_BIT_EXT", 0x00000001}, {"GL_FRAGMENT_SHADER_BIT", 0x00000002}, {"GL_FRAGMENT_SHADER_BIT_EXT", 0x00000002}, {"GL_GEOMETRY_SHADER_BIT", 0x00000004}, {"GL_TESS_CONTROL_SHADER_BIT", 0x00000008}, {"GL_TESS_EVALUATION_SHADER_BIT", 0x00000010}, {"GL_COMPUTE_SHADER_BIT", 0x00000020}, {"GL_ALL_SHADER_BITS", static_cast(0xFFFFFFFF)}, {"GL_ALL_SHADER_BITS_EXT", static_cast(0xFFFFFFFF)}, {"GL_TEXTURE_STORAGE_SPARSE_BIT_AMD", 0x00000001}, {"GL_RED_BIT_ATI", 0x00000001}, {"GL_GREEN_BIT_ATI", 0x00000002}, {"GL_BLUE_BIT_ATI", 0x00000004}, {"GL_2X_BIT_ATI", 0x00000001}, {"GL_4X_BIT_ATI", 0x00000002}, {"GL_8X_BIT_ATI", 0x00000004}, {"GL_HALF_BIT_ATI", 0x00000008}, {"GL_QUARTER_BIT_ATI", 0x00000010}, {"GL_EIGHTH_BIT_ATI", 0x00000020}, {"GL_SATURATE_BIT_ATI", 0x00000040}, {"GL_COMP_BIT_ATI", 0x00000002}, {"GL_NEGATE_BIT_ATI", 0x00000004}, {"GL_BIAS_BIT_ATI", 0x00000008}, {"GL_TRACE_OPERATIONS_BIT_MESA", 0x0001}, {"GL_TRACE_PRIMITIVES_BIT_MESA", 0x0002}, {"GL_TRACE_ARRAYS_BIT_MESA", 0x0004}, {"GL_TRACE_TEXTURES_BIT_MESA", 0x0008}, {"GL_TRACE_PIXELS_BIT_MESA", 0x0010}, {"GL_TRACE_ERRORS_BIT_MESA", 0x0020}, {"GL_TRACE_ALL_BITS_MESA", 0xFFFF}, {"GL_BOLD_BIT_NV", 0x01}, {"GL_ITALIC_BIT_NV", 0x02}, {"GL_GLYPH_WIDTH_BIT_NV", 0x01}, {"GL_GLYPH_HEIGHT_BIT_NV", 0x02}, {"GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV", 0x04}, {"GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV", 0x08}, {"GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV", 0x10}, {"GL_GLYPH_VERTICAL_BEARING_X_BIT_NV", 0x20}, {"GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV", 0x40}, {"GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV", 0x80}, {"GL_GLYPH_HAS_KERNING_BIT_NV", 0x100}, {"GL_FONT_X_MIN_BOUNDS_BIT_NV", 0x00010000}, {"GL_FONT_Y_MIN_BOUNDS_BIT_NV", 0x00020000}, {"GL_FONT_X_MAX_BOUNDS_BIT_NV", 0x00040000}, {"GL_FONT_Y_MAX_BOUNDS_BIT_NV", 0x00080000}, {"GL_FONT_UNITS_PER_EM_BIT_NV", 0x00100000}, {"GL_FONT_ASCENDER_BIT_NV", 0x00200000}, {"GL_FONT_DESCENDER_BIT_NV", 0x00400000}, {"GL_FONT_HEIGHT_BIT_NV", 0x00800000}, {"GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV", 0x01000000}, {"GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV", 0x02000000}, {"GL_FONT_UNDERLINE_POSITION_BIT_NV", 0x04000000}, {"GL_FONT_UNDERLINE_THICKNESS_BIT_NV", 0x08000000}, {"GL_FONT_HAS_KERNING_BIT_NV", 0x10000000}, {"GL_VERTEX23_BIT_PGI", 0x00000004}, {"GL_VERTEX4_BIT_PGI", 0x00000008}, {"GL_COLOR3_BIT_PGI", 0x00010000}, {"GL_COLOR4_BIT_PGI", 0x00020000}, {"GL_EDGEFLAG_BIT_PGI", 0x00040000}, {"GL_INDEX_BIT_PGI", 0x00080000}, {"GL_MAT_AMBIENT_BIT_PGI", 0x00100000}, {"GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI", 0x00200000}, {"GL_MAT_DIFFUSE_BIT_PGI", 0x00400000}, {"GL_MAT_EMISSION_BIT_PGI", 0x00800000}, {"GL_MAT_COLOR_INDEXES_BIT_PGI", 0x01000000}, {"GL_MAT_SHININESS_BIT_PGI", 0x02000000}, {"GL_MAT_SPECULAR_BIT_PGI", 0x04000000}, {"GL_NORMAL_BIT_PGI", 0x08000000}, {"GL_TEXCOORD1_BIT_PGI", 0x10000000}, {"GL_TEXCOORD2_BIT_PGI", 0x20000000}, {"GL_TEXCOORD3_BIT_PGI", 0x40000000}, {"GL_TEXCOORD4_BIT_PGI", static_cast(0x80000000)}, {"GL_COLOR_BUFFER_BIT0_QCOM", 0x00000001}, {"GL_COLOR_BUFFER_BIT1_QCOM", 0x00000002}, {"GL_COLOR_BUFFER_BIT2_QCOM", 0x00000004}, {"GL_COLOR_BUFFER_BIT3_QCOM", 0x00000008}, {"GL_COLOR_BUFFER_BIT4_QCOM", 0x00000010}, {"GL_COLOR_BUFFER_BIT5_QCOM", 0x00000020}, {"GL_COLOR_BUFFER_BIT6_QCOM", 0x00000040}, {"GL_COLOR_BUFFER_BIT7_QCOM", 0x00000080}, {"GL_DEPTH_BUFFER_BIT0_QCOM", 0x00000100}, {"GL_DEPTH_BUFFER_BIT1_QCOM", 0x00000200}, {"GL_DEPTH_BUFFER_BIT2_QCOM", 0x00000400}, {"GL_DEPTH_BUFFER_BIT3_QCOM", 0x00000800}, {"GL_DEPTH_BUFFER_BIT4_QCOM", 0x00001000}, {"GL_DEPTH_BUFFER_BIT5_QCOM", 0x00002000}, {"GL_DEPTH_BUFFER_BIT6_QCOM", 0x00004000}, {"GL_DEPTH_BUFFER_BIT7_QCOM", 0x00008000}, {"GL_STENCIL_BUFFER_BIT0_QCOM", 0x00010000}, {"GL_STENCIL_BUFFER_BIT1_QCOM", 0x00020000}, {"GL_STENCIL_BUFFER_BIT2_QCOM", 0x00040000}, {"GL_STENCIL_BUFFER_BIT3_QCOM", 0x00080000}, {"GL_STENCIL_BUFFER_BIT4_QCOM", 0x00100000}, {"GL_STENCIL_BUFFER_BIT5_QCOM", 0x00200000}, {"GL_STENCIL_BUFFER_BIT6_QCOM", 0x00400000}, {"GL_STENCIL_BUFFER_BIT7_QCOM", 0x00800000}, {"GL_MULTISAMPLE_BUFFER_BIT0_QCOM", 0x01000000}, {"GL_MULTISAMPLE_BUFFER_BIT1_QCOM", 0x02000000}, {"GL_MULTISAMPLE_BUFFER_BIT2_QCOM", 0x04000000}, {"GL_MULTISAMPLE_BUFFER_BIT3_QCOM", 0x08000000}, {"GL_MULTISAMPLE_BUFFER_BIT4_QCOM", 0x10000000}, {"GL_MULTISAMPLE_BUFFER_BIT5_QCOM", 0x20000000}, {"GL_MULTISAMPLE_BUFFER_BIT6_QCOM", 0x40000000}, {"GL_MULTISAMPLE_BUFFER_BIT7_QCOM", static_cast(0x80000000)}, {"GL_TEXTURE_DEFORMATION_BIT_SGIX", 0x00000001}, {"GL_GEOMETRY_DEFORMATION_BIT_SGIX", 0x00000002}, {"GL_RESTART_SUN", 0x0001}, {"GL_REPLACE_MIDDLE_SUN", 0x0002}, {"GL_REPLACE_OLDEST_SUN", 0x0003}, {"GL_LAYOUT_DEFAULT_INTEL", 0}, {"GL_LAYOUT_LINEAR_INTEL", 1}, {"GL_LAYOUT_LINEAR_CPU_CACHED_INTEL", 2}, {"GL_NEXT_BUFFER_NV", -2}, {"GL_SKIP_COMPONENTS4_NV", -3}, {"GL_SKIP_COMPONENTS3_NV", -4}, {"GL_SKIP_COMPONENTS2_NV", -5}, {"GL_SKIP_COMPONENTS1_NV", -6}, {"GL_CLOSE_PATH_NV", 0x00}, {"GL_MOVE_TO_NV", 0x02}, {"GL_RELATIVE_MOVE_TO_NV", 0x03}, {"GL_LINE_TO_NV", 0x04}, {"GL_RELATIVE_LINE_TO_NV", 0x05}, {"GL_HORIZONTAL_LINE_TO_NV", 0x06}, {"GL_RELATIVE_HORIZONTAL_LINE_TO_NV", 0x07}, {"GL_VERTICAL_LINE_TO_NV", 0x08}, {"GL_RELATIVE_VERTICAL_LINE_TO_NV", 0x09}, {"GL_QUADRATIC_CURVE_TO_NV", 0x0A}, {"GL_RELATIVE_QUADRATIC_CURVE_TO_NV", 0x0B}, {"GL_CUBIC_CURVE_TO_NV", 0x0C}, {"GL_RELATIVE_CUBIC_CURVE_TO_NV", 0x0D}, {"GL_SMOOTH_QUADRATIC_CURVE_TO_NV", 0x0E}, {"GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV", 0x0F}, {"GL_SMOOTH_CUBIC_CURVE_TO_NV", 0x10}, {"GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV", 0x11}, {"GL_SMALL_CCW_ARC_TO_NV", 0x12}, {"GL_RELATIVE_SMALL_CCW_ARC_TO_NV", 0x13}, {"GL_SMALL_CW_ARC_TO_NV", 0x14}, {"GL_RELATIVE_SMALL_CW_ARC_TO_NV", 0x15}, {"GL_LARGE_CCW_ARC_TO_NV", 0x16}, {"GL_RELATIVE_LARGE_CCW_ARC_TO_NV", 0x17}, {"GL_LARGE_CW_ARC_TO_NV", 0x18}, {"GL_RELATIVE_LARGE_CW_ARC_TO_NV", 0x19}, {"GL_RESTART_PATH_NV", 0xF0}, {"GL_DUP_FIRST_CUBIC_CURVE_TO_NV", 0xF2}, {"GL_DUP_LAST_CUBIC_CURVE_TO_NV", 0xF4}, {"GL_RECT_NV", 0xF6}, {"GL_CIRCULAR_CCW_ARC_TO_NV", 0xF8}, {"GL_CIRCULAR_CW_ARC_TO_NV", 0xFA}, {"GL_CIRCULAR_TANGENT_ARC_TO_NV", 0xFC}, {"GL_ARC_TO_NV", 0xFE}, {"GL_RELATIVE_ARC_TO_NV", 0xFF}, {"GL_FALSE", 0}, {"GL_NO_ERROR", 0}, {"GL_ZERO", 0}, {"GL_NONE", 0}, {"GL_NONE_OES", 0}, {"GL_TRUE", 1}, {"GL_ONE", 1}, {"GL_VERSION_ES_CL_1_0", 1}, {"GL_VERSION_ES_CM_1_1", 1}, {"GL_VERSION_ES_CL_1_1", 1}, {"GL_POINTS", 0x0000}, {"GL_LINES", 0x0001}, {"GL_LINE_LOOP", 0x0002}, {"GL_LINE_STRIP", 0x0003}, {"GL_TRIANGLES", 0x0004}, {"GL_TRIANGLE_STRIP", 0x0005}, {"GL_TRIANGLE_FAN", 0x0006}, {"GL_QUADS", 0x0007}, {"GL_QUAD_STRIP", 0x0008}, {"GL_POLYGON", 0x0009}, {"GL_LINES_ADJACENCY", 0x000A}, {"GL_LINES_ADJACENCY_ARB", 0x000A}, {"GL_LINES_ADJACENCY_EXT", 0x000A}, {"GL_LINE_STRIP_ADJACENCY", 0x000B}, {"GL_LINE_STRIP_ADJACENCY_ARB", 0x000B}, {"GL_LINE_STRIP_ADJACENCY_EXT", 0x000B}, {"GL_TRIANGLES_ADJACENCY", 0x000C}, {"GL_TRIANGLES_ADJACENCY_ARB", 0x000C}, {"GL_TRIANGLES_ADJACENCY_EXT", 0x000C}, {"GL_TRIANGLE_STRIP_ADJACENCY", 0x000D}, {"GL_TRIANGLE_STRIP_ADJACENCY_ARB", 0x000D}, {"GL_TRIANGLE_STRIP_ADJACENCY_EXT", 0x000D}, {"GL_PATCHES", 0x000E}, {"GL_ACCUM", 0x0100}, {"GL_LOAD", 0x0101}, {"GL_RETURN", 0x0102}, {"GL_MULT", 0x0103}, {"GL_ADD", 0x0104}, {"GL_NEVER", 0x0200}, {"GL_LESS", 0x0201}, {"GL_EQUAL", 0x0202}, {"GL_LEQUAL", 0x0203}, {"GL_GREATER", 0x0204}, {"GL_NOTEQUAL", 0x0205}, {"GL_GEQUAL", 0x0206}, {"GL_ALWAYS", 0x0207}, {"GL_SRC_COLOR", 0x0300}, {"GL_ONE_MINUS_SRC_COLOR", 0x0301}, {"GL_SRC_ALPHA", 0x0302}, {"GL_ONE_MINUS_SRC_ALPHA", 0x0303}, {"GL_DST_ALPHA", 0x0304}, {"GL_ONE_MINUS_DST_ALPHA", 0x0305}, {"GL_DST_COLOR", 0x0306}, {"GL_ONE_MINUS_DST_COLOR", 0x0307}, {"GL_SRC_ALPHA_SATURATE", 0x0308}, {"GL_FRONT_LEFT", 0x0400}, {"GL_FRONT_RIGHT", 0x0401}, {"GL_BACK_LEFT", 0x0402}, {"GL_BACK_RIGHT", 0x0403}, {"GL_FRONT", 0x0404}, {"GL_BACK", 0x0405}, {"GL_LEFT", 0x0406}, {"GL_RIGHT", 0x0407}, {"GL_FRONT_AND_BACK", 0x0408}, {"GL_AUX0", 0x0409}, {"GL_AUX1", 0x040A}, {"GL_AUX2", 0x040B}, {"GL_AUX3", 0x040C}, {"GL_INVALID_ENUM", 0x0500}, {"GL_INVALID_VALUE", 0x0501}, {"GL_INVALID_OPERATION", 0x0502}, {"GL_STACK_OVERFLOW", 0x0503}, {"GL_STACK_OVERFLOW_KHR", 0x0503}, {"GL_STACK_UNDERFLOW", 0x0504}, {"GL_STACK_UNDERFLOW_KHR", 0x0504}, {"GL_OUT_OF_MEMORY", 0x0505}, {"GL_INVALID_FRAMEBUFFER_OPERATION", 0x0506}, {"GL_INVALID_FRAMEBUFFER_OPERATION_EXT", 0x0506}, {"GL_INVALID_FRAMEBUFFER_OPERATION_OES", 0x0506}, {"GL_2D", 0x0600}, {"GL_3D", 0x0601}, {"GL_3D_COLOR", 0x0602}, {"GL_3D_COLOR_TEXTURE", 0x0603}, {"GL_4D_COLOR_TEXTURE", 0x0604}, {"GL_PASS_THROUGH_TOKEN", 0x0700}, {"GL_POINT_TOKEN", 0x0701}, {"GL_LINE_TOKEN", 0x0702}, {"GL_POLYGON_TOKEN", 0x0703}, {"GL_BITMAP_TOKEN", 0x0704}, {"GL_DRAW_PIXEL_TOKEN", 0x0705}, {"GL_COPY_PIXEL_TOKEN", 0x0706}, {"GL_LINE_RESET_TOKEN", 0x0707}, {"GL_EXP", 0x0800}, {"GL_EXP2", 0x0801}, {"GL_CW", 0x0900}, {"GL_CCW", 0x0901}, {"GL_COEFF", 0x0A00}, {"GL_ORDER", 0x0A01}, {"GL_DOMAIN", 0x0A02}, {"GL_CURRENT_COLOR", 0x0B00}, {"GL_CURRENT_INDEX", 0x0B01}, {"GL_CURRENT_NORMAL", 0x0B02}, {"GL_CURRENT_TEXTURE_COORDS", 0x0B03}, {"GL_CURRENT_RASTER_COLOR", 0x0B04}, {"GL_CURRENT_RASTER_INDEX", 0x0B05}, {"GL_CURRENT_RASTER_TEXTURE_COORDS", 0x0B06}, {"GL_CURRENT_RASTER_POSITION", 0x0B07}, {"GL_CURRENT_RASTER_POSITION_VALID", 0x0B08}, {"GL_CURRENT_RASTER_DISTANCE", 0x0B09}, {"GL_POINT_SMOOTH", 0x0B10}, {"GL_POINT_SIZE", 0x0B11}, {"GL_POINT_SIZE_RANGE", 0x0B12}, {"GL_SMOOTH_POINT_SIZE_RANGE", 0x0B12}, {"GL_POINT_SIZE_GRANULARITY", 0x0B13}, {"GL_SMOOTH_POINT_SIZE_GRANULARITY", 0x0B13}, {"GL_LINE_SMOOTH", 0x0B20}, {"GL_LINE_WIDTH", 0x0B21}, {"GL_LINE_WIDTH_RANGE", 0x0B22}, {"GL_SMOOTH_LINE_WIDTH_RANGE", 0x0B22}, {"GL_LINE_WIDTH_GRANULARITY", 0x0B23}, {"GL_SMOOTH_LINE_WIDTH_GRANULARITY", 0x0B23}, {"GL_LINE_STIPPLE", 0x0B24}, {"GL_LINE_STIPPLE_PATTERN", 0x0B25}, {"GL_LINE_STIPPLE_REPEAT", 0x0B26}, {"GL_LIST_MODE", 0x0B30}, {"GL_MAX_LIST_NESTING", 0x0B31}, {"GL_LIST_BASE", 0x0B32}, {"GL_LIST_INDEX", 0x0B33}, {"GL_POLYGON_MODE", 0x0B40}, {"GL_POLYGON_SMOOTH", 0x0B41}, {"GL_POLYGON_STIPPLE", 0x0B42}, {"GL_EDGE_FLAG", 0x0B43}, {"GL_CULL_FACE", 0x0B44}, {"GL_CULL_FACE_MODE", 0x0B45}, {"GL_FRONT_FACE", 0x0B46}, {"GL_LIGHTING", 0x0B50}, {"GL_LIGHT_MODEL_LOCAL_VIEWER", 0x0B51}, {"GL_LIGHT_MODEL_TWO_SIDE", 0x0B52}, {"GL_LIGHT_MODEL_AMBIENT", 0x0B53}, {"GL_SHADE_MODEL", 0x0B54}, {"GL_COLOR_MATERIAL_FACE", 0x0B55}, {"GL_COLOR_MATERIAL_PARAMETER", 0x0B56}, {"GL_COLOR_MATERIAL", 0x0B57}, {"GL_FOG", 0x0B60}, {"GL_FOG_INDEX", 0x0B61}, {"GL_FOG_DENSITY", 0x0B62}, {"GL_FOG_START", 0x0B63}, {"GL_FOG_END", 0x0B64}, {"GL_FOG_MODE", 0x0B65}, {"GL_FOG_COLOR", 0x0B66}, {"GL_DEPTH_RANGE", 0x0B70}, {"GL_DEPTH_TEST", 0x0B71}, {"GL_DEPTH_WRITEMASK", 0x0B72}, {"GL_DEPTH_CLEAR_VALUE", 0x0B73}, {"GL_DEPTH_FUNC", 0x0B74}, {"GL_ACCUM_CLEAR_VALUE", 0x0B80}, {"GL_STENCIL_TEST", 0x0B90}, {"GL_STENCIL_CLEAR_VALUE", 0x0B91}, {"GL_STENCIL_FUNC", 0x0B92}, {"GL_STENCIL_VALUE_MASK", 0x0B93}, {"GL_STENCIL_FAIL", 0x0B94}, {"GL_STENCIL_PASS_DEPTH_FAIL", 0x0B95}, {"GL_STENCIL_PASS_DEPTH_PASS", 0x0B96}, {"GL_STENCIL_REF", 0x0B97}, {"GL_STENCIL_WRITEMASK", 0x0B98}, {"GL_MATRIX_MODE", 0x0BA0}, {"GL_NORMALIZE", 0x0BA1}, {"GL_VIEWPORT", 0x0BA2}, {"GL_MODELVIEW_STACK_DEPTH", 0x0BA3}, {"GL_MODELVIEW0_STACK_DEPTH_EXT", 0x0BA3}, {"GL_PROJECTION_STACK_DEPTH", 0x0BA4}, {"GL_TEXTURE_STACK_DEPTH", 0x0BA5}, {"GL_MODELVIEW_MATRIX", 0x0BA6}, {"GL_MODELVIEW0_MATRIX_EXT", 0x0BA6}, {"GL_PROJECTION_MATRIX", 0x0BA7}, {"GL_TEXTURE_MATRIX", 0x0BA8}, {"GL_ATTRIB_STACK_DEPTH", 0x0BB0}, {"GL_CLIENT_ATTRIB_STACK_DEPTH", 0x0BB1}, {"GL_ALPHA_TEST", 0x0BC0}, {"GL_ALPHA_TEST_QCOM", 0x0BC0}, {"GL_ALPHA_TEST_FUNC", 0x0BC1}, {"GL_ALPHA_TEST_FUNC_QCOM", 0x0BC1}, {"GL_ALPHA_TEST_REF", 0x0BC2}, {"GL_ALPHA_TEST_REF_QCOM", 0x0BC2}, {"GL_DITHER", 0x0BD0}, {"GL_BLEND_DST", 0x0BE0}, {"GL_BLEND_SRC", 0x0BE1}, {"GL_BLEND", 0x0BE2}, {"GL_LOGIC_OP_MODE", 0x0BF0}, {"GL_INDEX_LOGIC_OP", 0x0BF1}, {"GL_LOGIC_OP", 0x0BF1}, {"GL_COLOR_LOGIC_OP", 0x0BF2}, {"GL_AUX_BUFFERS", 0x0C00}, {"GL_DRAW_BUFFER", 0x0C01}, {"GL_DRAW_BUFFER_EXT", 0x0C01}, {"GL_READ_BUFFER", 0x0C02}, {"GL_READ_BUFFER_EXT", 0x0C02}, {"GL_READ_BUFFER_NV", 0x0C02}, {"GL_SCISSOR_BOX", 0x0C10}, {"GL_SCISSOR_TEST", 0x0C11}, {"GL_INDEX_CLEAR_VALUE", 0x0C20}, {"GL_INDEX_WRITEMASK", 0x0C21}, {"GL_COLOR_CLEAR_VALUE", 0x0C22}, {"GL_COLOR_WRITEMASK", 0x0C23}, {"GL_INDEX_MODE", 0x0C30}, {"GL_RGBA_MODE", 0x0C31}, {"GL_DOUBLEBUFFER", 0x0C32}, {"GL_STEREO", 0x0C33}, {"GL_RENDER_MODE", 0x0C40}, {"GL_PERSPECTIVE_CORRECTION_HINT", 0x0C50}, {"GL_POINT_SMOOTH_HINT", 0x0C51}, {"GL_LINE_SMOOTH_HINT", 0x0C52}, {"GL_POLYGON_SMOOTH_HINT", 0x0C53}, {"GL_FOG_HINT", 0x0C54}, {"GL_TEXTURE_GEN_S", 0x0C60}, {"GL_TEXTURE_GEN_T", 0x0C61}, {"GL_TEXTURE_GEN_R", 0x0C62}, {"GL_TEXTURE_GEN_Q", 0x0C63}, {"GL_PIXEL_MAP_I_TO_I", 0x0C70}, {"GL_PIXEL_MAP_S_TO_S", 0x0C71}, {"GL_PIXEL_MAP_I_TO_R", 0x0C72}, {"GL_PIXEL_MAP_I_TO_G", 0x0C73}, {"GL_PIXEL_MAP_I_TO_B", 0x0C74}, {"GL_PIXEL_MAP_I_TO_A", 0x0C75}, {"GL_PIXEL_MAP_R_TO_R", 0x0C76}, {"GL_PIXEL_MAP_G_TO_G", 0x0C77}, {"GL_PIXEL_MAP_B_TO_B", 0x0C78}, {"GL_PIXEL_MAP_A_TO_A", 0x0C79}, {"GL_PIXEL_MAP_I_TO_I_SIZE", 0x0CB0}, {"GL_PIXEL_MAP_S_TO_S_SIZE", 0x0CB1}, {"GL_PIXEL_MAP_I_TO_R_SIZE", 0x0CB2}, {"GL_PIXEL_MAP_I_TO_G_SIZE", 0x0CB3}, {"GL_PIXEL_MAP_I_TO_B_SIZE", 0x0CB4}, {"GL_PIXEL_MAP_I_TO_A_SIZE", 0x0CB5}, {"GL_PIXEL_MAP_R_TO_R_SIZE", 0x0CB6}, {"GL_PIXEL_MAP_G_TO_G_SIZE", 0x0CB7}, {"GL_PIXEL_MAP_B_TO_B_SIZE", 0x0CB8}, {"GL_PIXEL_MAP_A_TO_A_SIZE", 0x0CB9}, {"GL_UNPACK_SWAP_BYTES", 0x0CF0}, {"GL_UNPACK_LSB_FIRST", 0x0CF1}, {"GL_UNPACK_ROW_LENGTH", 0x0CF2}, {"GL_UNPACK_ROW_LENGTH_EXT", 0x0CF2}, {"GL_UNPACK_SKIP_ROWS", 0x0CF3}, {"GL_UNPACK_SKIP_ROWS_EXT", 0x0CF3}, {"GL_UNPACK_SKIP_PIXELS", 0x0CF4}, {"GL_UNPACK_SKIP_PIXELS_EXT", 0x0CF4}, {"GL_UNPACK_ALIGNMENT", 0x0CF5}, {"GL_PACK_SWAP_BYTES", 0x0D00}, {"GL_PACK_LSB_FIRST", 0x0D01}, {"GL_PACK_ROW_LENGTH", 0x0D02}, {"GL_PACK_SKIP_ROWS", 0x0D03}, {"GL_PACK_SKIP_PIXELS", 0x0D04}, {"GL_PACK_ALIGNMENT", 0x0D05}, {"GL_MAP_COLOR", 0x0D10}, {"GL_MAP_STENCIL", 0x0D11}, {"GL_INDEX_SHIFT", 0x0D12}, {"GL_INDEX_OFFSET", 0x0D13}, {"GL_RED_SCALE", 0x0D14}, {"GL_RED_BIAS", 0x0D15}, {"GL_ZOOM_X", 0x0D16}, {"GL_ZOOM_Y", 0x0D17}, {"GL_GREEN_SCALE", 0x0D18}, {"GL_GREEN_BIAS", 0x0D19}, {"GL_BLUE_SCALE", 0x0D1A}, {"GL_BLUE_BIAS", 0x0D1B}, {"GL_ALPHA_SCALE", 0x0D1C}, {"GL_ALPHA_BIAS", 0x0D1D}, {"GL_DEPTH_SCALE", 0x0D1E}, {"GL_DEPTH_BIAS", 0x0D1F}, {"GL_MAX_EVAL_ORDER", 0x0D30}, {"GL_MAX_LIGHTS", 0x0D31}, {"GL_MAX_CLIP_PLANES", 0x0D32}, {"GL_MAX_CLIP_DISTANCES", 0x0D32}, {"GL_MAX_TEXTURE_SIZE", 0x0D33}, {"GL_MAX_PIXEL_MAP_TABLE", 0x0D34}, {"GL_MAX_ATTRIB_STACK_DEPTH", 0x0D35}, {"GL_MAX_MODELVIEW_STACK_DEPTH", 0x0D36}, {"GL_MAX_NAME_STACK_DEPTH", 0x0D37}, {"GL_MAX_PROJECTION_STACK_DEPTH", 0x0D38}, {"GL_MAX_TEXTURE_STACK_DEPTH", 0x0D39}, {"GL_MAX_VIEWPORT_DIMS", 0x0D3A}, {"GL_MAX_CLIENT_ATTRIB_STACK_DEPTH", 0x0D3B}, {"GL_SUBPIXEL_BITS", 0x0D50}, {"GL_INDEX_BITS", 0x0D51}, {"GL_RED_BITS", 0x0D52}, {"GL_GREEN_BITS", 0x0D53}, {"GL_BLUE_BITS", 0x0D54}, {"GL_ALPHA_BITS", 0x0D55}, {"GL_DEPTH_BITS", 0x0D56}, {"GL_STENCIL_BITS", 0x0D57}, {"GL_ACCUM_RED_BITS", 0x0D58}, {"GL_ACCUM_GREEN_BITS", 0x0D59}, {"GL_ACCUM_BLUE_BITS", 0x0D5A}, {"GL_ACCUM_ALPHA_BITS", 0x0D5B}, {"GL_NAME_STACK_DEPTH", 0x0D70}, {"GL_AUTO_NORMAL", 0x0D80}, {"GL_MAP1_COLOR_4", 0x0D90}, {"GL_MAP1_INDEX", 0x0D91}, {"GL_MAP1_NORMAL", 0x0D92}, {"GL_MAP1_TEXTURE_COORD_1", 0x0D93}, {"GL_MAP1_TEXTURE_COORD_2", 0x0D94}, {"GL_MAP1_TEXTURE_COORD_3", 0x0D95}, {"GL_MAP1_TEXTURE_COORD_4", 0x0D96}, {"GL_MAP1_VERTEX_3", 0x0D97}, {"GL_MAP1_VERTEX_4", 0x0D98}, {"GL_MAP2_COLOR_4", 0x0DB0}, {"GL_MAP2_INDEX", 0x0DB1}, {"GL_MAP2_NORMAL", 0x0DB2}, {"GL_MAP2_TEXTURE_COORD_1", 0x0DB3}, {"GL_MAP2_TEXTURE_COORD_2", 0x0DB4}, {"GL_MAP2_TEXTURE_COORD_3", 0x0DB5}, {"GL_MAP2_TEXTURE_COORD_4", 0x0DB6}, {"GL_MAP2_VERTEX_3", 0x0DB7}, {"GL_MAP2_VERTEX_4", 0x0DB8}, {"GL_MAP1_GRID_DOMAIN", 0x0DD0}, {"GL_MAP1_GRID_SEGMENTS", 0x0DD1}, {"GL_MAP2_GRID_DOMAIN", 0x0DD2}, {"GL_MAP2_GRID_SEGMENTS", 0x0DD3}, {"GL_TEXTURE_1D", 0x0DE0}, {"GL_TEXTURE_2D", 0x0DE1}, {"GL_FEEDBACK_BUFFER_POINTER", 0x0DF0}, {"GL_FEEDBACK_BUFFER_SIZE", 0x0DF1}, {"GL_FEEDBACK_BUFFER_TYPE", 0x0DF2}, {"GL_SELECTION_BUFFER_POINTER", 0x0DF3}, {"GL_SELECTION_BUFFER_SIZE", 0x0DF4}, {"GL_TEXTURE_WIDTH", 0x1000}, {"GL_TEXTURE_HEIGHT", 0x1001}, {"GL_TEXTURE_INTERNAL_FORMAT", 0x1003}, {"GL_TEXTURE_COMPONENTS", 0x1003}, {"GL_TEXTURE_BORDER_COLOR", 0x1004}, {"GL_TEXTURE_BORDER_COLOR_NV", 0x1004}, {"GL_TEXTURE_BORDER", 0x1005}, {"GL_DONT_CARE", 0x1100}, {"GL_FASTEST", 0x1101}, {"GL_NICEST", 0x1102}, {"GL_AMBIENT", 0x1200}, {"GL_DIFFUSE", 0x1201}, {"GL_SPECULAR", 0x1202}, {"GL_POSITION", 0x1203}, {"GL_SPOT_DIRECTION", 0x1204}, {"GL_SPOT_EXPONENT", 0x1205}, {"GL_SPOT_CUTOFF", 0x1206}, {"GL_CONSTANT_ATTENUATION", 0x1207}, {"GL_LINEAR_ATTENUATION", 0x1208}, {"GL_QUADRATIC_ATTENUATION", 0x1209}, {"GL_COMPILE", 0x1300}, {"GL_COMPILE_AND_EXECUTE", 0x1301}, {"GL_BYTE", 0x1400}, {"GL_UNSIGNED_BYTE", 0x1401}, {"GL_SHORT", 0x1402}, {"GL_UNSIGNED_SHORT", 0x1403}, {"GL_INT", 0x1404}, {"GL_UNSIGNED_INT", 0x1405}, {"GL_FLOAT", 0x1406}, {"GL_2_BYTES", 0x1407}, {"GL_3_BYTES", 0x1408}, {"GL_4_BYTES", 0x1409}, {"GL_DOUBLE", 0x140A}, {"GL_DOUBLE_EXT", 0x140A}, {"GL_HALF_FLOAT", 0x140B}, {"GL_HALF_FLOAT_ARB", 0x140B}, {"GL_HALF_FLOAT_NV", 0x140B}, {"GL_HALF_APPLE", 0x140B}, {"GL_FIXED", 0x140C}, {"GL_FIXED_OES", 0x140C}, {"GL_INT64_NV", 0x140E}, {"GL_UNSIGNED_INT64_ARB", 0x140F}, {"GL_UNSIGNED_INT64_NV", 0x140F}, {"GL_CLEAR", 0x1500}, {"GL_AND", 0x1501}, {"GL_AND_REVERSE", 0x1502}, {"GL_COPY", 0x1503}, {"GL_AND_INVERTED", 0x1504}, {"GL_NOOP", 0x1505}, {"GL_XOR", 0x1506}, {"GL_OR", 0x1507}, {"GL_NOR", 0x1508}, {"GL_EQUIV", 0x1509}, {"GL_INVERT", 0x150A}, {"GL_OR_REVERSE", 0x150B}, {"GL_COPY_INVERTED", 0x150C}, {"GL_OR_INVERTED", 0x150D}, {"GL_NAND", 0x150E}, {"GL_SET", 0x150F}, {"GL_EMISSION", 0x1600}, {"GL_SHININESS", 0x1601}, {"GL_AMBIENT_AND_DIFFUSE", 0x1602}, {"GL_COLOR_INDEXES", 0x1603}, {"GL_MODELVIEW", 0x1700}, {"GL_MODELVIEW0_ARB", 0x1700}, {"GL_MODELVIEW0_EXT", 0x1700}, {"GL_PROJECTION", 0x1701}, {"GL_TEXTURE", 0x1702}, {"GL_COLOR", 0x1800}, {"GL_COLOR_EXT", 0x1800}, {"GL_DEPTH", 0x1801}, {"GL_DEPTH_EXT", 0x1801}, {"GL_STENCIL", 0x1802}, {"GL_STENCIL_EXT", 0x1802}, {"GL_COLOR_INDEX", 0x1900}, {"GL_STENCIL_INDEX", 0x1901}, {"GL_DEPTH_COMPONENT", 0x1902}, {"GL_RED", 0x1903}, {"GL_RED_EXT", 0x1903}, {"GL_GREEN", 0x1904}, {"GL_BLUE", 0x1905}, {"GL_ALPHA", 0x1906}, {"GL_RGB", 0x1907}, {"GL_RGBA", 0x1908}, {"GL_LUMINANCE", 0x1909}, {"GL_LUMINANCE_ALPHA", 0x190A}, {"GL_BITMAP", 0x1A00}, {"GL_POINT", 0x1B00}, {"GL_LINE", 0x1B01}, {"GL_FILL", 0x1B02}, {"GL_RENDER", 0x1C00}, {"GL_FEEDBACK", 0x1C01}, {"GL_SELECT", 0x1C02}, {"GL_FLAT", 0x1D00}, {"GL_SMOOTH", 0x1D01}, {"GL_KEEP", 0x1E00}, {"GL_REPLACE", 0x1E01}, {"GL_INCR", 0x1E02}, {"GL_DECR", 0x1E03}, {"GL_VENDOR", 0x1F00}, {"GL_RENDERER", 0x1F01}, {"GL_VERSION", 0x1F02}, {"GL_EXTENSIONS", 0x1F03}, {"GL_S", 0x2000}, {"GL_T", 0x2001}, {"GL_R", 0x2002}, {"GL_Q", 0x2003}, {"GL_MODULATE", 0x2100}, {"GL_DECAL", 0x2101}, {"GL_TEXTURE_ENV_MODE", 0x2200}, {"GL_TEXTURE_ENV_COLOR", 0x2201}, {"GL_TEXTURE_ENV", 0x2300}, {"GL_EYE_LINEAR", 0x2400}, {"GL_OBJECT_LINEAR", 0x2401}, {"GL_SPHERE_MAP", 0x2402}, {"GL_TEXTURE_GEN_MODE", 0x2500}, {"GL_OBJECT_PLANE", 0x2501}, {"GL_EYE_PLANE", 0x2502}, {"GL_NEAREST", 0x2600}, {"GL_LINEAR", 0x2601}, {"GL_NEAREST_MIPMAP_NEAREST", 0x2700}, {"GL_LINEAR_MIPMAP_NEAREST", 0x2701}, {"GL_NEAREST_MIPMAP_LINEAR", 0x2702}, {"GL_LINEAR_MIPMAP_LINEAR", 0x2703}, {"GL_TEXTURE_MAG_FILTER", 0x2800}, {"GL_TEXTURE_MIN_FILTER", 0x2801}, {"GL_TEXTURE_WRAP_S", 0x2802}, {"GL_TEXTURE_WRAP_T", 0x2803}, {"GL_CLAMP", 0x2900}, {"GL_REPEAT", 0x2901}, {"GL_POLYGON_OFFSET_UNITS", 0x2A00}, {"GL_POLYGON_OFFSET_POINT", 0x2A01}, {"GL_POLYGON_OFFSET_LINE", 0x2A02}, {"GL_R3_G3_B2", 0x2A10}, {"GL_V2F", 0x2A20}, {"GL_V3F", 0x2A21}, {"GL_C4UB_V2F", 0x2A22}, {"GL_C4UB_V3F", 0x2A23}, {"GL_C3F_V3F", 0x2A24}, {"GL_N3F_V3F", 0x2A25}, {"GL_C4F_N3F_V3F", 0x2A26}, {"GL_T2F_V3F", 0x2A27}, {"GL_T4F_V4F", 0x2A28}, {"GL_T2F_C4UB_V3F", 0x2A29}, {"GL_T2F_C3F_V3F", 0x2A2A}, {"GL_T2F_N3F_V3F", 0x2A2B}, {"GL_T2F_C4F_N3F_V3F", 0x2A2C}, {"GL_T4F_C4F_N3F_V4F", 0x2A2D}, {"GL_CLIP_PLANE0", 0x3000}, {"GL_CLIP_DISTANCE0", 0x3000}, {"GL_CLIP_PLANE1", 0x3001}, {"GL_CLIP_DISTANCE1", 0x3001}, {"GL_CLIP_PLANE2", 0x3002}, {"GL_CLIP_DISTANCE2", 0x3002}, {"GL_CLIP_PLANE3", 0x3003}, {"GL_CLIP_DISTANCE3", 0x3003}, {"GL_CLIP_PLANE4", 0x3004}, {"GL_CLIP_DISTANCE4", 0x3004}, {"GL_CLIP_PLANE5", 0x3005}, {"GL_CLIP_DISTANCE5", 0x3005}, {"GL_CLIP_DISTANCE6", 0x3006}, {"GL_CLIP_DISTANCE7", 0x3007}, {"GL_LIGHT0", 0x4000}, {"GL_LIGHT1", 0x4001}, {"GL_LIGHT2", 0x4002}, {"GL_LIGHT3", 0x4003}, {"GL_LIGHT4", 0x4004}, {"GL_LIGHT5", 0x4005}, {"GL_LIGHT6", 0x4006}, {"GL_LIGHT7", 0x4007}, {"GL_ABGR_EXT", 0x8000}, {"GL_CONSTANT_COLOR", 0x8001}, {"GL_CONSTANT_COLOR_EXT", 0x8001}, {"GL_ONE_MINUS_CONSTANT_COLOR", 0x8002}, {"GL_ONE_MINUS_CONSTANT_COLOR_EXT", 0x8002}, {"GL_CONSTANT_ALPHA", 0x8003}, {"GL_CONSTANT_ALPHA_EXT", 0x8003}, {"GL_ONE_MINUS_CONSTANT_ALPHA", 0x8004}, {"GL_ONE_MINUS_CONSTANT_ALPHA_EXT", 0x8004}, {"GL_BLEND_COLOR", 0x8005}, {"GL_BLEND_COLOR_EXT", 0x8005}, {"GL_FUNC_ADD", 0x8006}, {"GL_FUNC_ADD_EXT", 0x8006}, {"GL_FUNC_ADD_OES", 0x8006}, {"GL_MIN", 0x8007}, {"GL_MIN_EXT", 0x8007}, {"GL_MAX", 0x8008}, {"GL_MAX_EXT", 0x8008}, {"GL_BLEND_EQUATION", 0x8009}, {"GL_BLEND_EQUATION_EXT", 0x8009}, {"GL_BLEND_EQUATION_OES", 0x8009}, {"GL_BLEND_EQUATION_RGB", 0x8009}, {"GL_BLEND_EQUATION_RGB_EXT", 0x8009}, {"GL_BLEND_EQUATION_RGB_OES", 0x8009}, {"GL_FUNC_SUBTRACT", 0x800A}, {"GL_FUNC_SUBTRACT_EXT", 0x800A}, {"GL_FUNC_SUBTRACT_OES", 0x800A}, {"GL_FUNC_REVERSE_SUBTRACT", 0x800B}, {"GL_FUNC_REVERSE_SUBTRACT_EXT", 0x800B}, {"GL_FUNC_REVERSE_SUBTRACT_OES", 0x800B}, {"GL_CMYK_EXT", 0x800C}, {"GL_CMYKA_EXT", 0x800D}, {"GL_PACK_CMYK_HINT_EXT", 0x800E}, {"GL_UNPACK_CMYK_HINT_EXT", 0x800F}, {"GL_CONVOLUTION_1D", 0x8010}, {"GL_CONVOLUTION_1D_EXT", 0x8010}, {"GL_CONVOLUTION_2D", 0x8011}, {"GL_CONVOLUTION_2D_EXT", 0x8011}, {"GL_SEPARABLE_2D", 0x8012}, {"GL_SEPARABLE_2D_EXT", 0x8012}, {"GL_CONVOLUTION_BORDER_MODE", 0x8013}, {"GL_CONVOLUTION_BORDER_MODE_EXT", 0x8013}, {"GL_CONVOLUTION_FILTER_SCALE", 0x8014}, {"GL_CONVOLUTION_FILTER_SCALE_EXT", 0x8014}, {"GL_CONVOLUTION_FILTER_BIAS", 0x8015}, {"GL_CONVOLUTION_FILTER_BIAS_EXT", 0x8015}, {"GL_REDUCE", 0x8016}, {"GL_REDUCE_EXT", 0x8016}, {"GL_CONVOLUTION_FORMAT", 0x8017}, {"GL_CONVOLUTION_FORMAT_EXT", 0x8017}, {"GL_CONVOLUTION_WIDTH", 0x8018}, {"GL_CONVOLUTION_WIDTH_EXT", 0x8018}, {"GL_CONVOLUTION_HEIGHT", 0x8019}, {"GL_CONVOLUTION_HEIGHT_EXT", 0x8019}, {"GL_MAX_CONVOLUTION_WIDTH", 0x801A}, {"GL_MAX_CONVOLUTION_WIDTH_EXT", 0x801A}, {"GL_MAX_CONVOLUTION_HEIGHT", 0x801B}, {"GL_MAX_CONVOLUTION_HEIGHT_EXT", 0x801B}, {"GL_POST_CONVOLUTION_RED_SCALE", 0x801C}, {"GL_POST_CONVOLUTION_RED_SCALE_EXT", 0x801C}, {"GL_POST_CONVOLUTION_GREEN_SCALE", 0x801D}, {"GL_POST_CONVOLUTION_GREEN_SCALE_EXT", 0x801D}, {"GL_POST_CONVOLUTION_BLUE_SCALE", 0x801E}, {"GL_POST_CONVOLUTION_BLUE_SCALE_EXT", 0x801E}, {"GL_POST_CONVOLUTION_ALPHA_SCALE", 0x801F}, {"GL_POST_CONVOLUTION_ALPHA_SCALE_EXT", 0x801F}, {"GL_POST_CONVOLUTION_RED_BIAS", 0x8020}, {"GL_POST_CONVOLUTION_RED_BIAS_EXT", 0x8020}, {"GL_POST_CONVOLUTION_GREEN_BIAS", 0x8021}, {"GL_POST_CONVOLUTION_GREEN_BIAS_EXT", 0x8021}, {"GL_POST_CONVOLUTION_BLUE_BIAS", 0x8022}, {"GL_POST_CONVOLUTION_BLUE_BIAS_EXT", 0x8022}, {"GL_POST_CONVOLUTION_ALPHA_BIAS", 0x8023}, {"GL_POST_CONVOLUTION_ALPHA_BIAS_EXT", 0x8023}, {"GL_HISTOGRAM", 0x8024}, {"GL_HISTOGRAM_EXT", 0x8024}, {"GL_PROXY_HISTOGRAM", 0x8025}, {"GL_PROXY_HISTOGRAM_EXT", 0x8025}, {"GL_HISTOGRAM_WIDTH", 0x8026}, {"GL_HISTOGRAM_WIDTH_EXT", 0x8026}, {"GL_HISTOGRAM_FORMAT", 0x8027}, {"GL_HISTOGRAM_FORMAT_EXT", 0x8027}, {"GL_HISTOGRAM_RED_SIZE", 0x8028}, {"GL_HISTOGRAM_RED_SIZE_EXT", 0x8028}, {"GL_HISTOGRAM_GREEN_SIZE", 0x8029}, {"GL_HISTOGRAM_GREEN_SIZE_EXT", 0x8029}, {"GL_HISTOGRAM_BLUE_SIZE", 0x802A}, {"GL_HISTOGRAM_BLUE_SIZE_EXT", 0x802A}, {"GL_HISTOGRAM_ALPHA_SIZE", 0x802B}, {"GL_HISTOGRAM_ALPHA_SIZE_EXT", 0x802B}, {"GL_HISTOGRAM_LUMINANCE_SIZE", 0x802C}, {"GL_HISTOGRAM_LUMINANCE_SIZE_EXT", 0x802C}, {"GL_HISTOGRAM_SINK", 0x802D}, {"GL_HISTOGRAM_SINK_EXT", 0x802D}, {"GL_MINMAX", 0x802E}, {"GL_MINMAX_EXT", 0x802E}, {"GL_MINMAX_FORMAT", 0x802F}, {"GL_MINMAX_FORMAT_EXT", 0x802F}, {"GL_MINMAX_SINK", 0x8030}, {"GL_MINMAX_SINK_EXT", 0x8030}, {"GL_TABLE_TOO_LARGE_EXT", 0x8031}, {"GL_TABLE_TOO_LARGE", 0x8031}, {"GL_UNSIGNED_BYTE_3_3_2", 0x8032}, {"GL_UNSIGNED_BYTE_3_3_2_EXT", 0x8032}, {"GL_UNSIGNED_SHORT_4_4_4_4", 0x8033}, {"GL_UNSIGNED_SHORT_4_4_4_4_EXT", 0x8033}, {"GL_UNSIGNED_SHORT_5_5_5_1", 0x8034}, {"GL_UNSIGNED_SHORT_5_5_5_1_EXT", 0x8034}, {"GL_UNSIGNED_INT_8_8_8_8", 0x8035}, {"GL_UNSIGNED_INT_8_8_8_8_EXT", 0x8035}, {"GL_UNSIGNED_INT_10_10_10_2", 0x8036}, {"GL_UNSIGNED_INT_10_10_10_2_EXT", 0x8036}, {"GL_POLYGON_OFFSET_EXT", 0x8037}, {"GL_POLYGON_OFFSET_FILL", 0x8037}, {"GL_POLYGON_OFFSET_FACTOR", 0x8038}, {"GL_POLYGON_OFFSET_FACTOR_EXT", 0x8038}, {"GL_POLYGON_OFFSET_BIAS_EXT", 0x8039}, {"GL_RESCALE_NORMAL", 0x803A}, {"GL_RESCALE_NORMAL_EXT", 0x803A}, {"GL_ALPHA4", 0x803B}, {"GL_ALPHA4_EXT", 0x803B}, {"GL_ALPHA8", 0x803C}, {"GL_ALPHA8_EXT", 0x803C}, {"GL_ALPHA12", 0x803D}, {"GL_ALPHA12_EXT", 0x803D}, {"GL_ALPHA16", 0x803E}, {"GL_ALPHA16_EXT", 0x803E}, {"GL_LUMINANCE4", 0x803F}, {"GL_LUMINANCE4_EXT", 0x803F}, {"GL_LUMINANCE8", 0x8040}, {"GL_LUMINANCE8_EXT", 0x8040}, {"GL_LUMINANCE12", 0x8041}, {"GL_LUMINANCE12_EXT", 0x8041}, {"GL_LUMINANCE16", 0x8042}, {"GL_LUMINANCE16_EXT", 0x8042}, {"GL_LUMINANCE4_ALPHA4", 0x8043}, {"GL_LUMINANCE4_ALPHA4_EXT", 0x8043}, {"GL_LUMINANCE6_ALPHA2", 0x8044}, {"GL_LUMINANCE6_ALPHA2_EXT", 0x8044}, {"GL_LUMINANCE8_ALPHA8", 0x8045}, {"GL_LUMINANCE8_ALPHA8_EXT", 0x8045}, {"GL_LUMINANCE12_ALPHA4", 0x8046}, {"GL_LUMINANCE12_ALPHA4_EXT", 0x8046}, {"GL_LUMINANCE12_ALPHA12", 0x8047}, {"GL_LUMINANCE12_ALPHA12_EXT", 0x8047}, {"GL_LUMINANCE16_ALPHA16", 0x8048}, {"GL_LUMINANCE16_ALPHA16_EXT", 0x8048}, {"GL_INTENSITY", 0x8049}, {"GL_INTENSITY_EXT", 0x8049}, {"GL_INTENSITY4", 0x804A}, {"GL_INTENSITY4_EXT", 0x804A}, {"GL_INTENSITY8", 0x804B}, {"GL_INTENSITY8_EXT", 0x804B}, {"GL_INTENSITY12", 0x804C}, {"GL_INTENSITY12_EXT", 0x804C}, {"GL_INTENSITY16", 0x804D}, {"GL_INTENSITY16_EXT", 0x804D}, {"GL_RGB2_EXT", 0x804E}, {"GL_RGB4", 0x804F}, {"GL_RGB4_EXT", 0x804F}, {"GL_RGB5", 0x8050}, {"GL_RGB5_EXT", 0x8050}, {"GL_RGB8", 0x8051}, {"GL_RGB8_EXT", 0x8051}, {"GL_RGB10", 0x8052}, {"GL_RGB10_EXT", 0x8052}, {"GL_RGB12", 0x8053}, {"GL_RGB12_EXT", 0x8053}, {"GL_RGB16", 0x8054}, {"GL_RGB16_EXT", 0x8054}, {"GL_RGBA2", 0x8055}, {"GL_RGBA2_EXT", 0x8055}, {"GL_RGBA4", 0x8056}, {"GL_RGBA4_EXT", 0x8056}, {"GL_RGBA4_OES", 0x8056}, {"GL_RGB5_A1", 0x8057}, {"GL_RGB5_A1_EXT", 0x8057}, {"GL_RGB5_A1_OES", 0x8057}, {"GL_RGBA8", 0x8058}, {"GL_RGBA8_EXT", 0x8058}, {"GL_RGBA8_OES", 0x8058}, {"GL_RGB10_A2", 0x8059}, {"GL_RGB10_A2_EXT", 0x8059}, {"GL_RGBA12", 0x805A}, {"GL_RGBA12_EXT", 0x805A}, {"GL_RGBA16", 0x805B}, {"GL_RGBA16_EXT", 0x805B}, {"GL_TEXTURE_RED_SIZE", 0x805C}, {"GL_TEXTURE_RED_SIZE_EXT", 0x805C}, {"GL_TEXTURE_GREEN_SIZE", 0x805D}, {"GL_TEXTURE_GREEN_SIZE_EXT", 0x805D}, {"GL_TEXTURE_BLUE_SIZE", 0x805E}, {"GL_TEXTURE_BLUE_SIZE_EXT", 0x805E}, {"GL_TEXTURE_ALPHA_SIZE", 0x805F}, {"GL_TEXTURE_ALPHA_SIZE_EXT", 0x805F}, {"GL_TEXTURE_LUMINANCE_SIZE", 0x8060}, {"GL_TEXTURE_LUMINANCE_SIZE_EXT", 0x8060}, {"GL_TEXTURE_INTENSITY_SIZE", 0x8061}, {"GL_TEXTURE_INTENSITY_SIZE_EXT", 0x8061}, {"GL_REPLACE_EXT", 0x8062}, {"GL_PROXY_TEXTURE_1D", 0x8063}, {"GL_PROXY_TEXTURE_1D_EXT", 0x8063}, {"GL_PROXY_TEXTURE_2D", 0x8064}, {"GL_PROXY_TEXTURE_2D_EXT", 0x8064}, {"GL_TEXTURE_TOO_LARGE_EXT", 0x8065}, {"GL_TEXTURE_PRIORITY", 0x8066}, {"GL_TEXTURE_PRIORITY_EXT", 0x8066}, {"GL_TEXTURE_RESIDENT", 0x8067}, {"GL_TEXTURE_RESIDENT_EXT", 0x8067}, {"GL_TEXTURE_1D_BINDING_EXT", 0x8068}, {"GL_TEXTURE_BINDING_1D", 0x8068}, {"GL_TEXTURE_2D_BINDING_EXT", 0x8069}, {"GL_TEXTURE_BINDING_2D", 0x8069}, {"GL_TEXTURE_3D_BINDING_EXT", 0x806A}, {"GL_TEXTURE_3D_BINDING_OES", 0x806A}, {"GL_TEXTURE_BINDING_3D", 0x806A}, {"GL_PACK_SKIP_IMAGES", 0x806B}, {"GL_PACK_SKIP_IMAGES_EXT", 0x806B}, {"GL_PACK_IMAGE_HEIGHT", 0x806C}, {"GL_PACK_IMAGE_HEIGHT_EXT", 0x806C}, {"GL_UNPACK_SKIP_IMAGES", 0x806D}, {"GL_UNPACK_SKIP_IMAGES_EXT", 0x806D}, {"GL_UNPACK_IMAGE_HEIGHT", 0x806E}, {"GL_UNPACK_IMAGE_HEIGHT_EXT", 0x806E}, {"GL_TEXTURE_3D", 0x806F}, {"GL_TEXTURE_3D_EXT", 0x806F}, {"GL_TEXTURE_3D_OES", 0x806F}, {"GL_PROXY_TEXTURE_3D", 0x8070}, {"GL_PROXY_TEXTURE_3D_EXT", 0x8070}, {"GL_TEXTURE_DEPTH", 0x8071}, {"GL_TEXTURE_DEPTH_EXT", 0x8071}, {"GL_TEXTURE_WRAP_R", 0x8072}, {"GL_TEXTURE_WRAP_R_EXT", 0x8072}, {"GL_TEXTURE_WRAP_R_OES", 0x8072}, {"GL_MAX_3D_TEXTURE_SIZE", 0x8073}, {"GL_MAX_3D_TEXTURE_SIZE_EXT", 0x8073}, {"GL_MAX_3D_TEXTURE_SIZE_OES", 0x8073}, {"GL_VERTEX_ARRAY", 0x8074}, {"GL_VERTEX_ARRAY_EXT", 0x8074}, {"GL_VERTEX_ARRAY_KHR", 0x8074}, {"GL_NORMAL_ARRAY", 0x8075}, {"GL_NORMAL_ARRAY_EXT", 0x8075}, {"GL_COLOR_ARRAY", 0x8076}, {"GL_COLOR_ARRAY_EXT", 0x8076}, {"GL_INDEX_ARRAY", 0x8077}, {"GL_INDEX_ARRAY_EXT", 0x8077}, {"GL_TEXTURE_COORD_ARRAY", 0x8078}, {"GL_TEXTURE_COORD_ARRAY_EXT", 0x8078}, {"GL_EDGE_FLAG_ARRAY", 0x8079}, {"GL_EDGE_FLAG_ARRAY_EXT", 0x8079}, {"GL_VERTEX_ARRAY_SIZE", 0x807A}, {"GL_VERTEX_ARRAY_SIZE_EXT", 0x807A}, {"GL_VERTEX_ARRAY_TYPE", 0x807B}, {"GL_VERTEX_ARRAY_TYPE_EXT", 0x807B}, {"GL_VERTEX_ARRAY_STRIDE", 0x807C}, {"GL_VERTEX_ARRAY_STRIDE_EXT", 0x807C}, {"GL_VERTEX_ARRAY_COUNT_EXT", 0x807D}, {"GL_NORMAL_ARRAY_TYPE", 0x807E}, {"GL_NORMAL_ARRAY_TYPE_EXT", 0x807E}, {"GL_NORMAL_ARRAY_STRIDE", 0x807F}, {"GL_NORMAL_ARRAY_STRIDE_EXT", 0x807F}, {"GL_NORMAL_ARRAY_COUNT_EXT", 0x8080}, {"GL_COLOR_ARRAY_SIZE", 0x8081}, {"GL_COLOR_ARRAY_SIZE_EXT", 0x8081}, {"GL_COLOR_ARRAY_TYPE", 0x8082}, {"GL_COLOR_ARRAY_TYPE_EXT", 0x8082}, {"GL_COLOR_ARRAY_STRIDE", 0x8083}, {"GL_COLOR_ARRAY_STRIDE_EXT", 0x8083}, {"GL_COLOR_ARRAY_COUNT_EXT", 0x8084}, {"GL_INDEX_ARRAY_TYPE", 0x8085}, {"GL_INDEX_ARRAY_TYPE_EXT", 0x8085}, {"GL_INDEX_ARRAY_STRIDE", 0x8086}, {"GL_INDEX_ARRAY_STRIDE_EXT", 0x8086}, {"GL_INDEX_ARRAY_COUNT_EXT", 0x8087}, {"GL_TEXTURE_COORD_ARRAY_SIZE", 0x8088}, {"GL_TEXTURE_COORD_ARRAY_SIZE_EXT", 0x8088}, {"GL_TEXTURE_COORD_ARRAY_TYPE", 0x8089}, {"GL_TEXTURE_COORD_ARRAY_TYPE_EXT", 0x8089}, {"GL_TEXTURE_COORD_ARRAY_STRIDE", 0x808A}, {"GL_TEXTURE_COORD_ARRAY_STRIDE_EXT", 0x808A}, {"GL_TEXTURE_COORD_ARRAY_COUNT_EXT", 0x808B}, {"GL_EDGE_FLAG_ARRAY_STRIDE", 0x808C}, {"GL_EDGE_FLAG_ARRAY_STRIDE_EXT", 0x808C}, {"GL_EDGE_FLAG_ARRAY_COUNT_EXT", 0x808D}, {"GL_VERTEX_ARRAY_POINTER", 0x808E}, {"GL_VERTEX_ARRAY_POINTER_EXT", 0x808E}, {"GL_NORMAL_ARRAY_POINTER", 0x808F}, {"GL_NORMAL_ARRAY_POINTER_EXT", 0x808F}, {"GL_COLOR_ARRAY_POINTER", 0x8090}, {"GL_COLOR_ARRAY_POINTER_EXT", 0x8090}, {"GL_INDEX_ARRAY_POINTER", 0x8091}, {"GL_INDEX_ARRAY_POINTER_EXT", 0x8091}, {"GL_TEXTURE_COORD_ARRAY_POINTER", 0x8092}, {"GL_TEXTURE_COORD_ARRAY_POINTER_EXT", 0x8092}, {"GL_EDGE_FLAG_ARRAY_POINTER", 0x8093}, {"GL_EDGE_FLAG_ARRAY_POINTER_EXT", 0x8093}, {"GL_INTERLACE_SGIX", 0x8094}, {"GL_DETAIL_TEXTURE_2D_SGIS", 0x8095}, {"GL_DETAIL_TEXTURE_2D_BINDING_SGIS", 0x8096}, {"GL_LINEAR_DETAIL_SGIS", 0x8097}, {"GL_LINEAR_DETAIL_ALPHA_SGIS", 0x8098}, {"GL_LINEAR_DETAIL_COLOR_SGIS", 0x8099}, {"GL_DETAIL_TEXTURE_LEVEL_SGIS", 0x809A}, {"GL_DETAIL_TEXTURE_MODE_SGIS", 0x809B}, {"GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS", 0x809C}, {"GL_MULTISAMPLE", 0x809D}, {"GL_MULTISAMPLE_ARB", 0x809D}, {"GL_MULTISAMPLE_EXT", 0x809D}, {"GL_MULTISAMPLE_SGIS", 0x809D}, {"GL_SAMPLE_ALPHA_TO_COVERAGE", 0x809E}, {"GL_SAMPLE_ALPHA_TO_COVERAGE_ARB", 0x809E}, {"GL_SAMPLE_ALPHA_TO_MASK_EXT", 0x809E}, {"GL_SAMPLE_ALPHA_TO_MASK_SGIS", 0x809E}, {"GL_SAMPLE_ALPHA_TO_ONE", 0x809F}, {"GL_SAMPLE_ALPHA_TO_ONE_ARB", 0x809F}, {"GL_SAMPLE_ALPHA_TO_ONE_EXT", 0x809F}, {"GL_SAMPLE_ALPHA_TO_ONE_SGIS", 0x809F}, {"GL_SAMPLE_COVERAGE", 0x80A0}, {"GL_SAMPLE_COVERAGE_ARB", 0x80A0}, {"GL_SAMPLE_MASK_EXT", 0x80A0}, {"GL_SAMPLE_MASK_SGIS", 0x80A0}, {"GL_1PASS_EXT", 0x80A1}, {"GL_1PASS_SGIS", 0x80A1}, {"GL_2PASS_0_EXT", 0x80A2}, {"GL_2PASS_0_SGIS", 0x80A2}, {"GL_2PASS_1_EXT", 0x80A3}, {"GL_2PASS_1_SGIS", 0x80A3}, {"GL_4PASS_0_EXT", 0x80A4}, {"GL_4PASS_0_SGIS", 0x80A4}, {"GL_4PASS_1_EXT", 0x80A5}, {"GL_4PASS_1_SGIS", 0x80A5}, {"GL_4PASS_2_EXT", 0x80A6}, {"GL_4PASS_2_SGIS", 0x80A6}, {"GL_4PASS_3_EXT", 0x80A7}, {"GL_4PASS_3_SGIS", 0x80A7}, {"GL_SAMPLE_BUFFERS", 0x80A8}, {"GL_SAMPLE_BUFFERS_ARB", 0x80A8}, {"GL_SAMPLE_BUFFERS_EXT", 0x80A8}, {"GL_SAMPLE_BUFFERS_SGIS", 0x80A8}, {"GL_SAMPLES", 0x80A9}, {"GL_SAMPLES_ARB", 0x80A9}, {"GL_SAMPLES_EXT", 0x80A9}, {"GL_SAMPLES_SGIS", 0x80A9}, {"GL_SAMPLE_COVERAGE_VALUE", 0x80AA}, {"GL_SAMPLE_COVERAGE_VALUE_ARB", 0x80AA}, {"GL_SAMPLE_MASK_VALUE_EXT", 0x80AA}, {"GL_SAMPLE_MASK_VALUE_SGIS", 0x80AA}, {"GL_SAMPLE_COVERAGE_INVERT", 0x80AB}, {"GL_SAMPLE_COVERAGE_INVERT_ARB", 0x80AB}, {"GL_SAMPLE_MASK_INVERT_EXT", 0x80AB}, {"GL_SAMPLE_MASK_INVERT_SGIS", 0x80AB}, {"GL_SAMPLE_PATTERN_EXT", 0x80AC}, {"GL_SAMPLE_PATTERN_SGIS", 0x80AC}, {"GL_LINEAR_SHARPEN_SGIS", 0x80AD}, {"GL_LINEAR_SHARPEN_ALPHA_SGIS", 0x80AE}, {"GL_LINEAR_SHARPEN_COLOR_SGIS", 0x80AF}, {"GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS", 0x80B0}, {"GL_COLOR_MATRIX", 0x80B1}, {"GL_COLOR_MATRIX_SGI", 0x80B1}, {"GL_COLOR_MATRIX_STACK_DEPTH", 0x80B2}, {"GL_COLOR_MATRIX_STACK_DEPTH_SGI", 0x80B2}, {"GL_MAX_COLOR_MATRIX_STACK_DEPTH", 0x80B3}, {"GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI", 0x80B3}, {"GL_POST_COLOR_MATRIX_RED_SCALE", 0x80B4}, {"GL_POST_COLOR_MATRIX_RED_SCALE_SGI", 0x80B4}, {"GL_POST_COLOR_MATRIX_GREEN_SCALE", 0x80B5}, {"GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI", 0x80B5}, {"GL_POST_COLOR_MATRIX_BLUE_SCALE", 0x80B6}, {"GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI", 0x80B6}, {"GL_POST_COLOR_MATRIX_ALPHA_SCALE", 0x80B7}, {"GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI", 0x80B7}, {"GL_POST_COLOR_MATRIX_RED_BIAS", 0x80B8}, {"GL_POST_COLOR_MATRIX_RED_BIAS_SGI", 0x80B8}, {"GL_POST_COLOR_MATRIX_GREEN_BIAS", 0x80B9}, {"GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI", 0x80B9}, {"GL_POST_COLOR_MATRIX_BLUE_BIAS", 0x80BA}, {"GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI", 0x80BA}, {"GL_POST_COLOR_MATRIX_ALPHA_BIAS", 0x80BB}, {"GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI", 0x80BB}, {"GL_TEXTURE_COLOR_TABLE_SGI", 0x80BC}, {"GL_PROXY_TEXTURE_COLOR_TABLE_SGI", 0x80BD}, {"GL_TEXTURE_ENV_BIAS_SGIX", 0x80BE}, {"GL_SHADOW_AMBIENT_SGIX", 0x80BF}, {"GL_TEXTURE_COMPARE_FAIL_VALUE_ARB", 0x80BF}, {"GL_BLEND_DST_RGB", 0x80C8}, {"GL_BLEND_DST_RGB_EXT", 0x80C8}, {"GL_BLEND_DST_RGB_OES", 0x80C8}, {"GL_BLEND_SRC_RGB", 0x80C9}, {"GL_BLEND_SRC_RGB_EXT", 0x80C9}, {"GL_BLEND_SRC_RGB_OES", 0x80C9}, {"GL_BLEND_DST_ALPHA", 0x80CA}, {"GL_BLEND_DST_ALPHA_EXT", 0x80CA}, {"GL_BLEND_DST_ALPHA_OES", 0x80CA}, {"GL_BLEND_SRC_ALPHA", 0x80CB}, {"GL_BLEND_SRC_ALPHA_EXT", 0x80CB}, {"GL_BLEND_SRC_ALPHA_OES", 0x80CB}, {"GL_422_EXT", 0x80CC}, {"GL_422_REV_EXT", 0x80CD}, {"GL_422_AVERAGE_EXT", 0x80CE}, {"GL_422_REV_AVERAGE_EXT", 0x80CF}, {"GL_COLOR_TABLE", 0x80D0}, {"GL_COLOR_TABLE_SGI", 0x80D0}, {"GL_POST_CONVOLUTION_COLOR_TABLE", 0x80D1}, {"GL_POST_CONVOLUTION_COLOR_TABLE_SGI", 0x80D1}, {"GL_POST_COLOR_MATRIX_COLOR_TABLE", 0x80D2}, {"GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI", 0x80D2}, {"GL_PROXY_COLOR_TABLE", 0x80D3}, {"GL_PROXY_COLOR_TABLE_SGI", 0x80D3}, {"GL_PROXY_POST_CONVOLUTION_COLOR_TABLE", 0x80D4}, {"GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI", 0x80D4}, {"GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE", 0x80D5}, {"GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI", 0x80D5}, {"GL_COLOR_TABLE_SCALE", 0x80D6}, {"GL_COLOR_TABLE_SCALE_SGI", 0x80D6}, {"GL_COLOR_TABLE_BIAS", 0x80D7}, {"GL_COLOR_TABLE_BIAS_SGI", 0x80D7}, {"GL_COLOR_TABLE_FORMAT", 0x80D8}, {"GL_COLOR_TABLE_FORMAT_SGI", 0x80D8}, {"GL_COLOR_TABLE_WIDTH", 0x80D9}, {"GL_COLOR_TABLE_WIDTH_SGI", 0x80D9}, {"GL_COLOR_TABLE_RED_SIZE", 0x80DA}, {"GL_COLOR_TABLE_RED_SIZE_SGI", 0x80DA}, {"GL_COLOR_TABLE_GREEN_SIZE", 0x80DB}, {"GL_COLOR_TABLE_GREEN_SIZE_SGI", 0x80DB}, {"GL_COLOR_TABLE_BLUE_SIZE", 0x80DC}, {"GL_COLOR_TABLE_BLUE_SIZE_SGI", 0x80DC}, {"GL_COLOR_TABLE_ALPHA_SIZE", 0x80DD}, {"GL_COLOR_TABLE_ALPHA_SIZE_SGI", 0x80DD}, {"GL_COLOR_TABLE_LUMINANCE_SIZE", 0x80DE}, {"GL_COLOR_TABLE_LUMINANCE_SIZE_SGI", 0x80DE}, {"GL_COLOR_TABLE_INTENSITY_SIZE", 0x80DF}, {"GL_COLOR_TABLE_INTENSITY_SIZE_SGI", 0x80DF}, {"GL_BGR", 0x80E0}, {"GL_BGR_EXT", 0x80E0}, {"GL_BGRA", 0x80E1}, {"GL_BGRA_EXT", 0x80E1}, {"GL_COLOR_INDEX1_EXT", 0x80E2}, {"GL_COLOR_INDEX2_EXT", 0x80E3}, {"GL_COLOR_INDEX4_EXT", 0x80E4}, {"GL_COLOR_INDEX8_EXT", 0x80E5}, {"GL_COLOR_INDEX12_EXT", 0x80E6}, {"GL_COLOR_INDEX16_EXT", 0x80E7}, {"GL_MAX_ELEMENTS_VERTICES", 0x80E8}, {"GL_MAX_ELEMENTS_VERTICES_EXT", 0x80E8}, {"GL_MAX_ELEMENTS_INDICES", 0x80E9}, {"GL_MAX_ELEMENTS_INDICES_EXT", 0x80E9}, {"GL_PHONG_WIN", 0x80EA}, {"GL_PHONG_HINT_WIN", 0x80EB}, {"GL_FOG_SPECULAR_TEXTURE_WIN", 0x80EC}, {"GL_TEXTURE_INDEX_SIZE_EXT", 0x80ED}, {"GL_PARAMETER_BUFFER_ARB", 0x80EE}, {"GL_PARAMETER_BUFFER_BINDING_ARB", 0x80EF}, {"GL_CLIP_VOLUME_CLIPPING_HINT_EXT", 0x80F0}, {"GL_DUAL_ALPHA4_SGIS", 0x8110}, {"GL_DUAL_ALPHA8_SGIS", 0x8111}, {"GL_DUAL_ALPHA12_SGIS", 0x8112}, {"GL_DUAL_ALPHA16_SGIS", 0x8113}, {"GL_DUAL_LUMINANCE4_SGIS", 0x8114}, {"GL_DUAL_LUMINANCE8_SGIS", 0x8115}, {"GL_DUAL_LUMINANCE12_SGIS", 0x8116}, {"GL_DUAL_LUMINANCE16_SGIS", 0x8117}, {"GL_DUAL_INTENSITY4_SGIS", 0x8118}, {"GL_DUAL_INTENSITY8_SGIS", 0x8119}, {"GL_DUAL_INTENSITY12_SGIS", 0x811A}, {"GL_DUAL_INTENSITY16_SGIS", 0x811B}, {"GL_DUAL_LUMINANCE_ALPHA4_SGIS", 0x811C}, {"GL_DUAL_LUMINANCE_ALPHA8_SGIS", 0x811D}, {"GL_QUAD_ALPHA4_SGIS", 0x811E}, {"GL_QUAD_ALPHA8_SGIS", 0x811F}, {"GL_QUAD_LUMINANCE4_SGIS", 0x8120}, {"GL_QUAD_LUMINANCE8_SGIS", 0x8121}, {"GL_QUAD_INTENSITY4_SGIS", 0x8122}, {"GL_QUAD_INTENSITY8_SGIS", 0x8123}, {"GL_DUAL_TEXTURE_SELECT_SGIS", 0x8124}, {"GL_QUAD_TEXTURE_SELECT_SGIS", 0x8125}, {"GL_POINT_SIZE_MIN", 0x8126}, {"GL_POINT_SIZE_MIN_ARB", 0x8126}, {"GL_POINT_SIZE_MIN_EXT", 0x8126}, {"GL_POINT_SIZE_MIN_SGIS", 0x8126}, {"GL_POINT_SIZE_MAX", 0x8127}, {"GL_POINT_SIZE_MAX_ARB", 0x8127}, {"GL_POINT_SIZE_MAX_EXT", 0x8127}, {"GL_POINT_SIZE_MAX_SGIS", 0x8127}, {"GL_POINT_FADE_THRESHOLD_SIZE", 0x8128}, {"GL_POINT_FADE_THRESHOLD_SIZE_ARB", 0x8128}, {"GL_POINT_FADE_THRESHOLD_SIZE_EXT", 0x8128}, {"GL_POINT_FADE_THRESHOLD_SIZE_SGIS", 0x8128}, {"GL_DISTANCE_ATTENUATION_EXT", 0x8129}, {"GL_DISTANCE_ATTENUATION_SGIS", 0x8129}, {"GL_POINT_DISTANCE_ATTENUATION", 0x8129}, {"GL_POINT_DISTANCE_ATTENUATION_ARB", 0x8129}, {"GL_FOG_FUNC_SGIS", 0x812A}, {"GL_FOG_FUNC_POINTS_SGIS", 0x812B}, {"GL_MAX_FOG_FUNC_POINTS_SGIS", 0x812C}, {"GL_CLAMP_TO_BORDER", 0x812D}, {"GL_CLAMP_TO_BORDER_ARB", 0x812D}, {"GL_CLAMP_TO_BORDER_NV", 0x812D}, {"GL_CLAMP_TO_BORDER_SGIS", 0x812D}, {"GL_TEXTURE_MULTI_BUFFER_HINT_SGIX", 0x812E}, {"GL_CLAMP_TO_EDGE", 0x812F}, {"GL_CLAMP_TO_EDGE_SGIS", 0x812F}, {"GL_PACK_SKIP_VOLUMES_SGIS", 0x8130}, {"GL_PACK_IMAGE_DEPTH_SGIS", 0x8131}, {"GL_UNPACK_SKIP_VOLUMES_SGIS", 0x8132}, {"GL_UNPACK_IMAGE_DEPTH_SGIS", 0x8133}, {"GL_TEXTURE_4D_SGIS", 0x8134}, {"GL_PROXY_TEXTURE_4D_SGIS", 0x8135}, {"GL_TEXTURE_4DSIZE_SGIS", 0x8136}, {"GL_TEXTURE_WRAP_Q_SGIS", 0x8137}, {"GL_MAX_4D_TEXTURE_SIZE_SGIS", 0x8138}, {"GL_PIXEL_TEX_GEN_SGIX", 0x8139}, {"GL_TEXTURE_MIN_LOD", 0x813A}, {"GL_TEXTURE_MIN_LOD_SGIS", 0x813A}, {"GL_TEXTURE_MAX_LOD", 0x813B}, {"GL_TEXTURE_MAX_LOD_SGIS", 0x813B}, {"GL_TEXTURE_BASE_LEVEL", 0x813C}, {"GL_TEXTURE_BASE_LEVEL_SGIS", 0x813C}, {"GL_TEXTURE_MAX_LEVEL", 0x813D}, {"GL_TEXTURE_MAX_LEVEL_SGIS", 0x813D}, {"GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX", 0x813E}, {"GL_PIXEL_TILE_CACHE_INCREMENT_SGIX", 0x813F}, {"GL_PIXEL_TILE_WIDTH_SGIX", 0x8140}, {"GL_PIXEL_TILE_HEIGHT_SGIX", 0x8141}, {"GL_PIXEL_TILE_GRID_WIDTH_SGIX", 0x8142}, {"GL_PIXEL_TILE_GRID_HEIGHT_SGIX", 0x8143}, {"GL_PIXEL_TILE_GRID_DEPTH_SGIX", 0x8144}, {"GL_PIXEL_TILE_CACHE_SIZE_SGIX", 0x8145}, {"GL_FILTER4_SGIS", 0x8146}, {"GL_TEXTURE_FILTER4_SIZE_SGIS", 0x8147}, {"GL_SPRITE_SGIX", 0x8148}, {"GL_SPRITE_MODE_SGIX", 0x8149}, {"GL_SPRITE_AXIS_SGIX", 0x814A}, {"GL_SPRITE_TRANSLATION_SGIX", 0x814B}, {"GL_SPRITE_AXIAL_SGIX", 0x814C}, {"GL_SPRITE_OBJECT_ALIGNED_SGIX", 0x814D}, {"GL_SPRITE_EYE_ALIGNED_SGIX", 0x814E}, {"GL_TEXTURE_4D_BINDING_SGIS", 0x814F}, {"GL_IGNORE_BORDER_HP", 0x8150}, {"GL_CONSTANT_BORDER", 0x8151}, {"GL_CONSTANT_BORDER_HP", 0x8151}, {"GL_REPLICATE_BORDER", 0x8153}, {"GL_REPLICATE_BORDER_HP", 0x8153}, {"GL_CONVOLUTION_BORDER_COLOR", 0x8154}, {"GL_CONVOLUTION_BORDER_COLOR_HP", 0x8154}, {"GL_IMAGE_SCALE_X_HP", 0x8155}, {"GL_IMAGE_SCALE_Y_HP", 0x8156}, {"GL_IMAGE_TRANSLATE_X_HP", 0x8157}, {"GL_IMAGE_TRANSLATE_Y_HP", 0x8158}, {"GL_IMAGE_ROTATE_ANGLE_HP", 0x8159}, {"GL_IMAGE_ROTATE_ORIGIN_X_HP", 0x815A}, {"GL_IMAGE_ROTATE_ORIGIN_Y_HP", 0x815B}, {"GL_IMAGE_MAG_FILTER_HP", 0x815C}, {"GL_IMAGE_MIN_FILTER_HP", 0x815D}, {"GL_IMAGE_CUBIC_WEIGHT_HP", 0x815E}, {"GL_CUBIC_HP", 0x815F}, {"GL_AVERAGE_HP", 0x8160}, {"GL_IMAGE_TRANSFORM_2D_HP", 0x8161}, {"GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP", 0x8162}, {"GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP", 0x8163}, {"GL_OCCLUSION_TEST_HP", 0x8165}, {"GL_OCCLUSION_TEST_RESULT_HP", 0x8166}, {"GL_TEXTURE_LIGHTING_MODE_HP", 0x8167}, {"GL_TEXTURE_POST_SPECULAR_HP", 0x8168}, {"GL_TEXTURE_PRE_SPECULAR_HP", 0x8169}, {"GL_LINEAR_CLIPMAP_LINEAR_SGIX", 0x8170}, {"GL_TEXTURE_CLIPMAP_CENTER_SGIX", 0x8171}, {"GL_TEXTURE_CLIPMAP_FRAME_SGIX", 0x8172}, {"GL_TEXTURE_CLIPMAP_OFFSET_SGIX", 0x8173}, {"GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX", 0x8174}, {"GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX", 0x8175}, {"GL_TEXTURE_CLIPMAP_DEPTH_SGIX", 0x8176}, {"GL_MAX_CLIPMAP_DEPTH_SGIX", 0x8177}, {"GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX", 0x8178}, {"GL_POST_TEXTURE_FILTER_BIAS_SGIX", 0x8179}, {"GL_POST_TEXTURE_FILTER_SCALE_SGIX", 0x817A}, {"GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX", 0x817B}, {"GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX", 0x817C}, {"GL_REFERENCE_PLANE_SGIX", 0x817D}, {"GL_REFERENCE_PLANE_EQUATION_SGIX", 0x817E}, {"GL_IR_INSTRUMENT1_SGIX", 0x817F}, {"GL_INSTRUMENT_BUFFER_POINTER_SGIX", 0x8180}, {"GL_INSTRUMENT_MEASUREMENTS_SGIX", 0x8181}, {"GL_LIST_PRIORITY_SGIX", 0x8182}, {"GL_CALLIGRAPHIC_FRAGMENT_SGIX", 0x8183}, {"GL_PIXEL_TEX_GEN_Q_CEILING_SGIX", 0x8184}, {"GL_PIXEL_TEX_GEN_Q_ROUND_SGIX", 0x8185}, {"GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX", 0x8186}, {"GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX", 0x8187}, {"GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX", 0x8188}, {"GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX", 0x8189}, {"GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX", 0x818A}, {"GL_FRAMEZOOM_SGIX", 0x818B}, {"GL_FRAMEZOOM_FACTOR_SGIX", 0x818C}, {"GL_MAX_FRAMEZOOM_FACTOR_SGIX", 0x818D}, {"GL_TEXTURE_LOD_BIAS_S_SGIX", 0x818E}, {"GL_TEXTURE_LOD_BIAS_T_SGIX", 0x818F}, {"GL_TEXTURE_LOD_BIAS_R_SGIX", 0x8190}, {"GL_GENERATE_MIPMAP", 0x8191}, {"GL_GENERATE_MIPMAP_SGIS", 0x8191}, {"GL_GENERATE_MIPMAP_HINT", 0x8192}, {"GL_GENERATE_MIPMAP_HINT_SGIS", 0x8192}, {"GL_GEOMETRY_DEFORMATION_SGIX", 0x8194}, {"GL_TEXTURE_DEFORMATION_SGIX", 0x8195}, {"GL_DEFORMATIONS_MASK_SGIX", 0x8196}, {"GL_MAX_DEFORMATION_ORDER_SGIX", 0x8197}, {"GL_FOG_OFFSET_SGIX", 0x8198}, {"GL_FOG_OFFSET_VALUE_SGIX", 0x8199}, {"GL_TEXTURE_COMPARE_SGIX", 0x819A}, {"GL_TEXTURE_COMPARE_OPERATOR_SGIX", 0x819B}, {"GL_TEXTURE_LEQUAL_R_SGIX", 0x819C}, {"GL_TEXTURE_GEQUAL_R_SGIX", 0x819D}, {"GL_DEPTH_COMPONENT16", 0x81A5}, {"GL_DEPTH_COMPONENT16_ARB", 0x81A5}, {"GL_DEPTH_COMPONENT16_OES", 0x81A5}, {"GL_DEPTH_COMPONENT16_SGIX", 0x81A5}, {"GL_DEPTH_COMPONENT24", 0x81A6}, {"GL_DEPTH_COMPONENT24_ARB", 0x81A6}, {"GL_DEPTH_COMPONENT24_OES", 0x81A6}, {"GL_DEPTH_COMPONENT24_SGIX", 0x81A6}, {"GL_DEPTH_COMPONENT32", 0x81A7}, {"GL_DEPTH_COMPONENT32_ARB", 0x81A7}, {"GL_DEPTH_COMPONENT32_OES", 0x81A7}, {"GL_DEPTH_COMPONENT32_SGIX", 0x81A7}, {"GL_ARRAY_ELEMENT_LOCK_FIRST_EXT", 0x81A8}, {"GL_ARRAY_ELEMENT_LOCK_COUNT_EXT", 0x81A9}, {"GL_CULL_VERTEX_EXT", 0x81AA}, {"GL_CULL_VERTEX_EYE_POSITION_EXT", 0x81AB}, {"GL_CULL_VERTEX_OBJECT_POSITION_EXT", 0x81AC}, {"GL_IUI_V2F_EXT", 0x81AD}, {"GL_IUI_V3F_EXT", 0x81AE}, {"GL_IUI_N3F_V2F_EXT", 0x81AF}, {"GL_IUI_N3F_V3F_EXT", 0x81B0}, {"GL_T2F_IUI_V2F_EXT", 0x81B1}, {"GL_T2F_IUI_V3F_EXT", 0x81B2}, {"GL_T2F_IUI_N3F_V2F_EXT", 0x81B3}, {"GL_T2F_IUI_N3F_V3F_EXT", 0x81B4}, {"GL_INDEX_TEST_EXT", 0x81B5}, {"GL_INDEX_TEST_FUNC_EXT", 0x81B6}, {"GL_INDEX_TEST_REF_EXT", 0x81B7}, {"GL_INDEX_MATERIAL_EXT", 0x81B8}, {"GL_INDEX_MATERIAL_PARAMETER_EXT", 0x81B9}, {"GL_INDEX_MATERIAL_FACE_EXT", 0x81BA}, {"GL_YCRCB_422_SGIX", 0x81BB}, {"GL_YCRCB_444_SGIX", 0x81BC}, {"GL_WRAP_BORDER_SUN", 0x81D4}, {"GL_UNPACK_CONSTANT_DATA_SUNX", 0x81D5}, {"GL_TEXTURE_CONSTANT_DATA_SUNX", 0x81D6}, {"GL_TRIANGLE_LIST_SUN", 0x81D7}, {"GL_REPLACEMENT_CODE_SUN", 0x81D8}, {"GL_GLOBAL_ALPHA_SUN", 0x81D9}, {"GL_GLOBAL_ALPHA_FACTOR_SUN", 0x81DA}, {"GL_TEXTURE_COLOR_WRITEMASK_SGIS", 0x81EF}, {"GL_EYE_DISTANCE_TO_POINT_SGIS", 0x81F0}, {"GL_OBJECT_DISTANCE_TO_POINT_SGIS", 0x81F1}, {"GL_EYE_DISTANCE_TO_LINE_SGIS", 0x81F2}, {"GL_OBJECT_DISTANCE_TO_LINE_SGIS", 0x81F3}, {"GL_EYE_POINT_SGIS", 0x81F4}, {"GL_OBJECT_POINT_SGIS", 0x81F5}, {"GL_EYE_LINE_SGIS", 0x81F6}, {"GL_OBJECT_LINE_SGIS", 0x81F7}, {"GL_LIGHT_MODEL_COLOR_CONTROL", 0x81F8}, {"GL_LIGHT_MODEL_COLOR_CONTROL_EXT", 0x81F8}, {"GL_SINGLE_COLOR", 0x81F9}, {"GL_SINGLE_COLOR_EXT", 0x81F9}, {"GL_SEPARATE_SPECULAR_COLOR", 0x81FA}, {"GL_SEPARATE_SPECULAR_COLOR_EXT", 0x81FA}, {"GL_SHARED_TEXTURE_PALETTE_EXT", 0x81FB}, {"GL_TEXT_FRAGMENT_SHADER_ATI", 0x8200}, {"GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING", 0x8210}, {"GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE", 0x8211}, {"GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT", 0x8211}, {"GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE", 0x8212}, {"GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE", 0x8213}, {"GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE", 0x8214}, {"GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE", 0x8215}, {"GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE", 0x8216}, {"GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE", 0x8217}, {"GL_FRAMEBUFFER_DEFAULT", 0x8218}, {"GL_FRAMEBUFFER_UNDEFINED", 0x8219}, {"GL_FRAMEBUFFER_UNDEFINED_OES", 0x8219}, {"GL_DEPTH_STENCIL_ATTACHMENT", 0x821A}, {"GL_MAJOR_VERSION", 0x821B}, {"GL_MINOR_VERSION", 0x821C}, {"GL_NUM_EXTENSIONS", 0x821D}, {"GL_CONTEXT_FLAGS", 0x821E}, {"GL_BUFFER_IMMUTABLE_STORAGE", 0x821F}, {"GL_BUFFER_STORAGE_FLAGS", 0x8220}, {"GL_INDEX", 0x8222}, {"GL_COMPRESSED_RED", 0x8225}, {"GL_COMPRESSED_RG", 0x8226}, {"GL_RG", 0x8227}, {"GL_RG_EXT", 0x8227}, {"GL_RG_INTEGER", 0x8228}, {"GL_R8", 0x8229}, {"GL_R8_EXT", 0x8229}, {"GL_R16", 0x822A}, {"GL_RG8", 0x822B}, {"GL_RG8_EXT", 0x822B}, {"GL_RG16", 0x822C}, {"GL_R16F", 0x822D}, {"GL_R16F_EXT", 0x822D}, {"GL_R32F", 0x822E}, {"GL_RG16F", 0x822F}, {"GL_RG16F_EXT", 0x822F}, {"GL_RG32F", 0x8230}, {"GL_R8I", 0x8231}, {"GL_R8UI", 0x8232}, {"GL_R16I", 0x8233}, {"GL_R16UI", 0x8234}, {"GL_R32I", 0x8235}, {"GL_R32UI", 0x8236}, {"GL_RG8I", 0x8237}, {"GL_RG8UI", 0x8238}, {"GL_RG16I", 0x8239}, {"GL_RG16UI", 0x823A}, {"GL_RG32I", 0x823B}, {"GL_RG32UI", 0x823C}, {"GL_SYNC_CL_EVENT_ARB", 0x8240}, {"GL_SYNC_CL_EVENT_COMPLETE_ARB", 0x8241}, {"GL_DEBUG_OUTPUT_SYNCHRONOUS", 0x8242}, {"GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB", 0x8242}, {"GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR", 0x8242}, {"GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH", 0x8243}, {"GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB", 0x8243}, {"GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR", 0x8243}, {"GL_DEBUG_CALLBACK_FUNCTION", 0x8244}, {"GL_DEBUG_CALLBACK_FUNCTION_ARB", 0x8244}, {"GL_DEBUG_CALLBACK_FUNCTION_KHR", 0x8244}, {"GL_DEBUG_CALLBACK_USER_PARAM", 0x8245}, {"GL_DEBUG_CALLBACK_USER_PARAM_ARB", 0x8245}, {"GL_DEBUG_CALLBACK_USER_PARAM_KHR", 0x8245}, {"GL_DEBUG_SOURCE_API", 0x8246}, {"GL_DEBUG_SOURCE_API_ARB", 0x8246}, {"GL_DEBUG_SOURCE_API_KHR", 0x8246}, {"GL_DEBUG_SOURCE_WINDOW_SYSTEM", 0x8247}, {"GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB", 0x8247}, {"GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR", 0x8247}, {"GL_DEBUG_SOURCE_SHADER_COMPILER", 0x8248}, {"GL_DEBUG_SOURCE_SHADER_COMPILER_ARB", 0x8248}, {"GL_DEBUG_SOURCE_SHADER_COMPILER_KHR", 0x8248}, {"GL_DEBUG_SOURCE_THIRD_PARTY", 0x8249}, {"GL_DEBUG_SOURCE_THIRD_PARTY_ARB", 0x8249}, {"GL_DEBUG_SOURCE_THIRD_PARTY_KHR", 0x8249}, {"GL_DEBUG_SOURCE_APPLICATION", 0x824A}, {"GL_DEBUG_SOURCE_APPLICATION_ARB", 0x824A}, {"GL_DEBUG_SOURCE_APPLICATION_KHR", 0x824A}, {"GL_DEBUG_SOURCE_OTHER", 0x824B}, {"GL_DEBUG_SOURCE_OTHER_ARB", 0x824B}, {"GL_DEBUG_SOURCE_OTHER_KHR", 0x824B}, {"GL_DEBUG_TYPE_ERROR", 0x824C}, {"GL_DEBUG_TYPE_ERROR_ARB", 0x824C}, {"GL_DEBUG_TYPE_ERROR_KHR", 0x824C}, {"GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR", 0x824D}, {"GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB", 0x824D}, {"GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR", 0x824D}, {"GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR", 0x824E}, {"GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB", 0x824E}, {"GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR", 0x824E}, {"GL_DEBUG_TYPE_PORTABILITY", 0x824F}, {"GL_DEBUG_TYPE_PORTABILITY_ARB", 0x824F}, {"GL_DEBUG_TYPE_PORTABILITY_KHR", 0x824F}, {"GL_DEBUG_TYPE_PERFORMANCE", 0x8250}, {"GL_DEBUG_TYPE_PERFORMANCE_ARB", 0x8250}, {"GL_DEBUG_TYPE_PERFORMANCE_KHR", 0x8250}, {"GL_DEBUG_TYPE_OTHER", 0x8251}, {"GL_DEBUG_TYPE_OTHER_ARB", 0x8251}, {"GL_DEBUG_TYPE_OTHER_KHR", 0x8251}, {"GL_LOSE_CONTEXT_ON_RESET_ARB", 0x8252}, {"GL_GUILTY_CONTEXT_RESET_ARB", 0x8253}, {"GL_INNOCENT_CONTEXT_RESET_ARB", 0x8254}, {"GL_UNKNOWN_CONTEXT_RESET_ARB", 0x8255}, {"GL_RESET_NOTIFICATION_STRATEGY_ARB", 0x8256}, {"GL_PROGRAM_BINARY_RETRIEVABLE_HINT", 0x8257}, {"GL_PROGRAM_SEPARABLE", 0x8258}, {"GL_PROGRAM_SEPARABLE_EXT", 0x8258}, {"GL_ACTIVE_PROGRAM", 0x8259}, {"GL_ACTIVE_PROGRAM_EXT", 0x8259}, {"GL_PROGRAM_PIPELINE_BINDING", 0x825A}, {"GL_PROGRAM_PIPELINE_BINDING_EXT", 0x825A}, {"GL_MAX_VIEWPORTS", 0x825B}, {"GL_VIEWPORT_SUBPIXEL_BITS", 0x825C}, {"GL_VIEWPORT_BOUNDS_RANGE", 0x825D}, {"GL_LAYER_PROVOKING_VERTEX", 0x825E}, {"GL_VIEWPORT_INDEX_PROVOKING_VERTEX", 0x825F}, {"GL_UNDEFINED_VERTEX", 0x8260}, {"GL_NO_RESET_NOTIFICATION_ARB", 0x8261}, {"GL_MAX_COMPUTE_SHARED_MEMORY_SIZE", 0x8262}, {"GL_MAX_COMPUTE_UNIFORM_COMPONENTS", 0x8263}, {"GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS", 0x8264}, {"GL_MAX_COMPUTE_ATOMIC_COUNTERS", 0x8265}, {"GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS", 0x8266}, {"GL_COMPUTE_LOCAL_WORK_SIZE", 0x8267}, {"GL_DEBUG_TYPE_MARKER", 0x8268}, {"GL_DEBUG_TYPE_MARKER_KHR", 0x8268}, {"GL_DEBUG_TYPE_PUSH_GROUP", 0x8269}, {"GL_DEBUG_TYPE_PUSH_GROUP_KHR", 0x8269}, {"GL_DEBUG_TYPE_POP_GROUP", 0x826A}, {"GL_DEBUG_TYPE_POP_GROUP_KHR", 0x826A}, {"GL_DEBUG_SEVERITY_NOTIFICATION", 0x826B}, {"GL_DEBUG_SEVERITY_NOTIFICATION_KHR", 0x826B}, {"GL_MAX_DEBUG_GROUP_STACK_DEPTH", 0x826C}, {"GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR", 0x826C}, {"GL_DEBUG_GROUP_STACK_DEPTH", 0x826D}, {"GL_DEBUG_GROUP_STACK_DEPTH_KHR", 0x826D}, {"GL_MAX_UNIFORM_LOCATIONS", 0x826E}, {"GL_INTERNALFORMAT_SUPPORTED", 0x826F}, {"GL_INTERNALFORMAT_PREFERRED", 0x8270}, {"GL_INTERNALFORMAT_RED_SIZE", 0x8271}, {"GL_INTERNALFORMAT_GREEN_SIZE", 0x8272}, {"GL_INTERNALFORMAT_BLUE_SIZE", 0x8273}, {"GL_INTERNALFORMAT_ALPHA_SIZE", 0x8274}, {"GL_INTERNALFORMAT_DEPTH_SIZE", 0x8275}, {"GL_INTERNALFORMAT_STENCIL_SIZE", 0x8276}, {"GL_INTERNALFORMAT_SHARED_SIZE", 0x8277}, {"GL_INTERNALFORMAT_RED_TYPE", 0x8278}, {"GL_INTERNALFORMAT_GREEN_TYPE", 0x8279}, {"GL_INTERNALFORMAT_BLUE_TYPE", 0x827A}, {"GL_INTERNALFORMAT_ALPHA_TYPE", 0x827B}, {"GL_INTERNALFORMAT_DEPTH_TYPE", 0x827C}, {"GL_INTERNALFORMAT_STENCIL_TYPE", 0x827D}, {"GL_MAX_WIDTH", 0x827E}, {"GL_MAX_HEIGHT", 0x827F}, {"GL_MAX_DEPTH", 0x8280}, {"GL_MAX_LAYERS", 0x8281}, {"GL_MAX_COMBINED_DIMENSIONS", 0x8282}, {"GL_COLOR_COMPONENTS", 0x8283}, {"GL_DEPTH_COMPONENTS", 0x8284}, {"GL_STENCIL_COMPONENTS", 0x8285}, {"GL_COLOR_RENDERABLE", 0x8286}, {"GL_DEPTH_RENDERABLE", 0x8287}, {"GL_STENCIL_RENDERABLE", 0x8288}, {"GL_FRAMEBUFFER_RENDERABLE", 0x8289}, {"GL_FRAMEBUFFER_RENDERABLE_LAYERED", 0x828A}, {"GL_FRAMEBUFFER_BLEND", 0x828B}, {"GL_READ_PIXELS", 0x828C}, {"GL_READ_PIXELS_FORMAT", 0x828D}, {"GL_READ_PIXELS_TYPE", 0x828E}, {"GL_TEXTURE_IMAGE_FORMAT", 0x828F}, {"GL_TEXTURE_IMAGE_TYPE", 0x8290}, {"GL_GET_TEXTURE_IMAGE_FORMAT", 0x8291}, {"GL_GET_TEXTURE_IMAGE_TYPE", 0x8292}, {"GL_MIPMAP", 0x8293}, {"GL_MANUAL_GENERATE_MIPMAP", 0x8294}, {"GL_AUTO_GENERATE_MIPMAP", 0x8295}, {"GL_COLOR_ENCODING", 0x8296}, {"GL_SRGB_READ", 0x8297}, {"GL_SRGB_WRITE", 0x8298}, {"GL_SRGB_DECODE_ARB", 0x8299}, {"GL_FILTER", 0x829A}, {"GL_VERTEX_TEXTURE", 0x829B}, {"GL_TESS_CONTROL_TEXTURE", 0x829C}, {"GL_TESS_EVALUATION_TEXTURE", 0x829D}, {"GL_GEOMETRY_TEXTURE", 0x829E}, {"GL_FRAGMENT_TEXTURE", 0x829F}, {"GL_COMPUTE_TEXTURE", 0x82A0}, {"GL_TEXTURE_SHADOW", 0x82A1}, {"GL_TEXTURE_GATHER", 0x82A2}, {"GL_TEXTURE_GATHER_SHADOW", 0x82A3}, {"GL_SHADER_IMAGE_LOAD", 0x82A4}, {"GL_SHADER_IMAGE_STORE", 0x82A5}, {"GL_SHADER_IMAGE_ATOMIC", 0x82A6}, {"GL_IMAGE_TEXEL_SIZE", 0x82A7}, {"GL_IMAGE_COMPATIBILITY_CLASS", 0x82A8}, {"GL_IMAGE_PIXEL_FORMAT", 0x82A9}, {"GL_IMAGE_PIXEL_TYPE", 0x82AA}, {"GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST", 0x82AC}, {"GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST", 0x82AD}, {"GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE", 0x82AE}, {"GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE", 0x82AF}, {"GL_TEXTURE_COMPRESSED_BLOCK_WIDTH", 0x82B1}, {"GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT", 0x82B2}, {"GL_TEXTURE_COMPRESSED_BLOCK_SIZE", 0x82B3}, {"GL_CLEAR_BUFFER", 0x82B4}, {"GL_TEXTURE_VIEW", 0x82B5}, {"GL_VIEW_COMPATIBILITY_CLASS", 0x82B6}, {"GL_FULL_SUPPORT", 0x82B7}, {"GL_CAVEAT_SUPPORT", 0x82B8}, {"GL_IMAGE_CLASS_4_X_32", 0x82B9}, {"GL_IMAGE_CLASS_2_X_32", 0x82BA}, {"GL_IMAGE_CLASS_1_X_32", 0x82BB}, {"GL_IMAGE_CLASS_4_X_16", 0x82BC}, {"GL_IMAGE_CLASS_2_X_16", 0x82BD}, {"GL_IMAGE_CLASS_1_X_16", 0x82BE}, {"GL_IMAGE_CLASS_4_X_8", 0x82BF}, {"GL_IMAGE_CLASS_2_X_8", 0x82C0}, {"GL_IMAGE_CLASS_1_X_8", 0x82C1}, {"GL_IMAGE_CLASS_11_11_10", 0x82C2}, {"GL_IMAGE_CLASS_10_10_10_2", 0x82C3}, {"GL_VIEW_CLASS_128_BITS", 0x82C4}, {"GL_VIEW_CLASS_96_BITS", 0x82C5}, {"GL_VIEW_CLASS_64_BITS", 0x82C6}, {"GL_VIEW_CLASS_48_BITS", 0x82C7}, {"GL_VIEW_CLASS_32_BITS", 0x82C8}, {"GL_VIEW_CLASS_24_BITS", 0x82C9}, {"GL_VIEW_CLASS_16_BITS", 0x82CA}, {"GL_VIEW_CLASS_8_BITS", 0x82CB}, {"GL_VIEW_CLASS_S3TC_DXT1_RGB", 0x82CC}, {"GL_VIEW_CLASS_S3TC_DXT1_RGBA", 0x82CD}, {"GL_VIEW_CLASS_S3TC_DXT3_RGBA", 0x82CE}, {"GL_VIEW_CLASS_S3TC_DXT5_RGBA", 0x82CF}, {"GL_VIEW_CLASS_RGTC1_RED", 0x82D0}, {"GL_VIEW_CLASS_RGTC2_RG", 0x82D1}, {"GL_VIEW_CLASS_BPTC_UNORM", 0x82D2}, {"GL_VIEW_CLASS_BPTC_FLOAT", 0x82D3}, {"GL_VERTEX_ATTRIB_BINDING", 0x82D4}, {"GL_VERTEX_ATTRIB_RELATIVE_OFFSET", 0x82D5}, {"GL_VERTEX_BINDING_DIVISOR", 0x82D6}, {"GL_VERTEX_BINDING_OFFSET", 0x82D7}, {"GL_VERTEX_BINDING_STRIDE", 0x82D8}, {"GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET", 0x82D9}, {"GL_MAX_VERTEX_ATTRIB_BINDINGS", 0x82DA}, {"GL_TEXTURE_VIEW_MIN_LEVEL", 0x82DB}, {"GL_TEXTURE_VIEW_NUM_LEVELS", 0x82DC}, {"GL_TEXTURE_VIEW_MIN_LAYER", 0x82DD}, {"GL_TEXTURE_VIEW_NUM_LAYERS", 0x82DE}, {"GL_TEXTURE_IMMUTABLE_LEVELS", 0x82DF}, {"GL_BUFFER", 0x82E0}, {"GL_BUFFER_KHR", 0x82E0}, {"GL_SHADER", 0x82E1}, {"GL_SHADER_KHR", 0x82E1}, {"GL_PROGRAM", 0x82E2}, {"GL_PROGRAM_KHR", 0x82E2}, {"GL_QUERY", 0x82E3}, {"GL_QUERY_KHR", 0x82E3}, {"GL_PROGRAM_PIPELINE", 0x82E4}, {"GL_MAX_VERTEX_ATTRIB_STRIDE", 0x82E5}, {"GL_SAMPLER", 0x82E6}, {"GL_SAMPLER_KHR", 0x82E6}, {"GL_DISPLAY_LIST", 0x82E7}, {"GL_MAX_LABEL_LENGTH", 0x82E8}, {"GL_MAX_LABEL_LENGTH_KHR", 0x82E8}, {"GL_NUM_SHADING_LANGUAGE_VERSIONS", 0x82E9}, {"GL_DEPTH_PASS_INSTRUMENT_SGIX", 0x8310}, {"GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX", 0x8311}, {"GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX", 0x8312}, {"GL_FRAGMENTS_INSTRUMENT_SGIX", 0x8313}, {"GL_FRAGMENTS_INSTRUMENT_COUNTERS_SGIX", 0x8314}, {"GL_FRAGMENTS_INSTRUMENT_MAX_SGIX", 0x8315}, {"GL_CONVOLUTION_HINT_SGIX", 0x8316}, {"GL_YCRCB_SGIX", 0x8318}, {"GL_YCRCBA_SGIX", 0x8319}, {"GL_UNPACK_COMPRESSED_SIZE_SGIX", 0x831A}, {"GL_PACK_MAX_COMPRESSED_SIZE_SGIX", 0x831B}, {"GL_PACK_COMPRESSED_SIZE_SGIX", 0x831C}, {"GL_SLIM8U_SGIX", 0x831D}, {"GL_SLIM10U_SGIX", 0x831E}, {"GL_SLIM12S_SGIX", 0x831F}, {"GL_ALPHA_MIN_SGIX", 0x8320}, {"GL_ALPHA_MAX_SGIX", 0x8321}, {"GL_SCALEBIAS_HINT_SGIX", 0x8322}, {"GL_ASYNC_MARKER_SGIX", 0x8329}, {"GL_PIXEL_TEX_GEN_MODE_SGIX", 0x832B}, {"GL_ASYNC_HISTOGRAM_SGIX", 0x832C}, {"GL_MAX_ASYNC_HISTOGRAM_SGIX", 0x832D}, {"GL_PIXEL_TRANSFORM_2D_EXT", 0x8330}, {"GL_PIXEL_MAG_FILTER_EXT", 0x8331}, {"GL_PIXEL_MIN_FILTER_EXT", 0x8332}, {"GL_PIXEL_CUBIC_WEIGHT_EXT", 0x8333}, {"GL_CUBIC_EXT", 0x8334}, {"GL_AVERAGE_EXT", 0x8335}, {"GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT", 0x8336}, {"GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT", 0x8337}, {"GL_PIXEL_TRANSFORM_2D_MATRIX_EXT", 0x8338}, {"GL_FRAGMENT_MATERIAL_EXT", 0x8349}, {"GL_FRAGMENT_NORMAL_EXT", 0x834A}, {"GL_FRAGMENT_COLOR_EXT", 0x834C}, {"GL_ATTENUATION_EXT", 0x834D}, {"GL_SHADOW_ATTENUATION_EXT", 0x834E}, {"GL_TEXTURE_APPLICATION_MODE_EXT", 0x834F}, {"GL_TEXTURE_LIGHT_EXT", 0x8350}, {"GL_TEXTURE_MATERIAL_FACE_EXT", 0x8351}, {"GL_TEXTURE_MATERIAL_PARAMETER_EXT", 0x8352}, {"GL_PIXEL_TEXTURE_SGIS", 0x8353}, {"GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS", 0x8354}, {"GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS", 0x8355}, {"GL_PIXEL_GROUP_COLOR_SGIS", 0x8356}, {"GL_LINE_QUALITY_HINT_SGIX", 0x835B}, {"GL_ASYNC_TEX_IMAGE_SGIX", 0x835C}, {"GL_ASYNC_DRAW_PIXELS_SGIX", 0x835D}, {"GL_ASYNC_READ_PIXELS_SGIX", 0x835E}, {"GL_MAX_ASYNC_TEX_IMAGE_SGIX", 0x835F}, {"GL_MAX_ASYNC_DRAW_PIXELS_SGIX", 0x8360}, {"GL_MAX_ASYNC_READ_PIXELS_SGIX", 0x8361}, {"GL_UNSIGNED_BYTE_2_3_3_REV", 0x8362}, {"GL_UNSIGNED_BYTE_2_3_3_REV_EXT", 0x8362}, {"GL_UNSIGNED_SHORT_5_6_5", 0x8363}, {"GL_UNSIGNED_SHORT_5_6_5_EXT", 0x8363}, {"GL_UNSIGNED_SHORT_5_6_5_REV", 0x8364}, {"GL_UNSIGNED_SHORT_5_6_5_REV_EXT", 0x8364}, {"GL_UNSIGNED_SHORT_4_4_4_4_REV", 0x8365}, {"GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT", 0x8365}, {"GL_UNSIGNED_SHORT_1_5_5_5_REV", 0x8366}, {"GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT", 0x8366}, {"GL_UNSIGNED_INT_8_8_8_8_REV", 0x8367}, {"GL_UNSIGNED_INT_8_8_8_8_REV_EXT", 0x8367}, {"GL_UNSIGNED_INT_2_10_10_10_REV", 0x8368}, {"GL_UNSIGNED_INT_2_10_10_10_REV_EXT", 0x8368}, {"GL_TEXTURE_MAX_CLAMP_S_SGIX", 0x8369}, {"GL_TEXTURE_MAX_CLAMP_T_SGIX", 0x836A}, {"GL_TEXTURE_MAX_CLAMP_R_SGIX", 0x836B}, {"GL_MIRRORED_REPEAT", 0x8370}, {"GL_MIRRORED_REPEAT_ARB", 0x8370}, {"GL_MIRRORED_REPEAT_IBM", 0x8370}, {"GL_MIRRORED_REPEAT_OES", 0x8370}, {"GL_RGB_S3TC", 0x83A0}, {"GL_RGB4_S3TC", 0x83A1}, {"GL_RGBA_S3TC", 0x83A2}, {"GL_RGBA4_S3TC", 0x83A3}, {"GL_RGBA_DXT5_S3TC", 0x83A4}, {"GL_RGBA4_DXT5_S3TC", 0x83A5}, {"GL_VERTEX_PRECLIP_SGIX", 0x83EE}, {"GL_VERTEX_PRECLIP_HINT_SGIX", 0x83EF}, {"GL_COMPRESSED_RGB_S3TC_DXT1_EXT", 0x83F0}, {"GL_COMPRESSED_RGBA_S3TC_DXT1_EXT", 0x83F1}, {"GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE", 0x83F2}, {"GL_COMPRESSED_RGBA_S3TC_DXT3_EXT", 0x83F2}, {"GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE", 0x83F3}, {"GL_COMPRESSED_RGBA_S3TC_DXT5_EXT", 0x83F3}, {"GL_PARALLEL_ARRAYS_INTEL", 0x83F4}, {"GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL", 0x83F5}, {"GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL", 0x83F6}, {"GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL", 0x83F7}, {"GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL", 0x83F8}, {"GL_TEXTURE_MEMORY_LAYOUT_INTEL", 0x83FF}, {"GL_FRAGMENT_LIGHTING_SGIX", 0x8400}, {"GL_FRAGMENT_COLOR_MATERIAL_SGIX", 0x8401}, {"GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX", 0x8402}, {"GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX", 0x8403}, {"GL_MAX_FRAGMENT_LIGHTS_SGIX", 0x8404}, {"GL_MAX_ACTIVE_LIGHTS_SGIX", 0x8405}, {"GL_CURRENT_RASTER_NORMAL_SGIX", 0x8406}, {"GL_LIGHT_ENV_MODE_SGIX", 0x8407}, {"GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX", 0x8408}, {"GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX", 0x8409}, {"GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX", 0x840A}, {"GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX", 0x840B}, {"GL_FRAGMENT_LIGHT0_SGIX", 0x840C}, {"GL_FRAGMENT_LIGHT1_SGIX", 0x840D}, {"GL_FRAGMENT_LIGHT2_SGIX", 0x840E}, {"GL_FRAGMENT_LIGHT3_SGIX", 0x840F}, {"GL_FRAGMENT_LIGHT4_SGIX", 0x8410}, {"GL_FRAGMENT_LIGHT5_SGIX", 0x8411}, {"GL_FRAGMENT_LIGHT6_SGIX", 0x8412}, {"GL_FRAGMENT_LIGHT7_SGIX", 0x8413}, {"GL_PACK_RESAMPLE_SGIX", 0x842C}, {"GL_UNPACK_RESAMPLE_SGIX", 0x842D}, {"GL_RESAMPLE_REPLICATE_SGIX", 0x842E}, {"GL_RESAMPLE_ZERO_FILL_SGIX", 0x842F}, {"GL_RESAMPLE_DECIMATE_SGIX", 0x8430}, {"GL_TANGENT_ARRAY_EXT", 0x8439}, {"GL_BINORMAL_ARRAY_EXT", 0x843A}, {"GL_CURRENT_TANGENT_EXT", 0x843B}, {"GL_CURRENT_BINORMAL_EXT", 0x843C}, {"GL_TANGENT_ARRAY_TYPE_EXT", 0x843E}, {"GL_TANGENT_ARRAY_STRIDE_EXT", 0x843F}, {"GL_BINORMAL_ARRAY_TYPE_EXT", 0x8440}, {"GL_BINORMAL_ARRAY_STRIDE_EXT", 0x8441}, {"GL_TANGENT_ARRAY_POINTER_EXT", 0x8442}, {"GL_BINORMAL_ARRAY_POINTER_EXT", 0x8443}, {"GL_MAP1_TANGENT_EXT", 0x8444}, {"GL_MAP2_TANGENT_EXT", 0x8445}, {"GL_MAP1_BINORMAL_EXT", 0x8446}, {"GL_MAP2_BINORMAL_EXT", 0x8447}, {"GL_NEAREST_CLIPMAP_NEAREST_SGIX", 0x844D}, {"GL_NEAREST_CLIPMAP_LINEAR_SGIX", 0x844E}, {"GL_LINEAR_CLIPMAP_NEAREST_SGIX", 0x844F}, {"GL_FOG_COORDINATE_SOURCE", 0x8450}, {"GL_FOG_COORDINATE_SOURCE_EXT", 0x8450}, {"GL_FOG_COORD_SRC", 0x8450}, {"GL_FOG_COORDINATE", 0x8451}, {"GL_FOG_COORD", 0x8451}, {"GL_FOG_COORDINATE_EXT", 0x8451}, {"GL_FRAGMENT_DEPTH", 0x8452}, {"GL_FRAGMENT_DEPTH_EXT", 0x8452}, {"GL_CURRENT_FOG_COORDINATE", 0x8453}, {"GL_CURRENT_FOG_COORD", 0x8453}, {"GL_CURRENT_FOG_COORDINATE_EXT", 0x8453}, {"GL_FOG_COORDINATE_ARRAY_TYPE", 0x8454}, {"GL_FOG_COORDINATE_ARRAY_TYPE_EXT", 0x8454}, {"GL_FOG_COORD_ARRAY_TYPE", 0x8454}, {"GL_FOG_COORDINATE_ARRAY_STRIDE", 0x8455}, {"GL_FOG_COORDINATE_ARRAY_STRIDE_EXT", 0x8455}, {"GL_FOG_COORD_ARRAY_STRIDE", 0x8455}, {"GL_FOG_COORDINATE_ARRAY_POINTER", 0x8456}, {"GL_FOG_COORDINATE_ARRAY_POINTER_EXT", 0x8456}, {"GL_FOG_COORD_ARRAY_POINTER", 0x8456}, {"GL_FOG_COORDINATE_ARRAY", 0x8457}, {"GL_FOG_COORDINATE_ARRAY_EXT", 0x8457}, {"GL_FOG_COORD_ARRAY", 0x8457}, {"GL_COLOR_SUM", 0x8458}, {"GL_COLOR_SUM_ARB", 0x8458}, {"GL_COLOR_SUM_EXT", 0x8458}, {"GL_CURRENT_SECONDARY_COLOR", 0x8459}, {"GL_CURRENT_SECONDARY_COLOR_EXT", 0x8459}, {"GL_SECONDARY_COLOR_ARRAY_SIZE", 0x845A}, {"GL_SECONDARY_COLOR_ARRAY_SIZE_EXT", 0x845A}, {"GL_SECONDARY_COLOR_ARRAY_TYPE", 0x845B}, {"GL_SECONDARY_COLOR_ARRAY_TYPE_EXT", 0x845B}, {"GL_SECONDARY_COLOR_ARRAY_STRIDE", 0x845C}, {"GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT", 0x845C}, {"GL_SECONDARY_COLOR_ARRAY_POINTER", 0x845D}, {"GL_SECONDARY_COLOR_ARRAY_POINTER_EXT", 0x845D}, {"GL_SECONDARY_COLOR_ARRAY", 0x845E}, {"GL_SECONDARY_COLOR_ARRAY_EXT", 0x845E}, {"GL_CURRENT_RASTER_SECONDARY_COLOR", 0x845F}, {"GL_ALIASED_POINT_SIZE_RANGE", 0x846D}, {"GL_ALIASED_LINE_WIDTH_RANGE", 0x846E}, {"GL_SCREEN_COORDINATES_REND", 0x8490}, {"GL_INVERTED_SCREEN_W_REND", 0x8491}, {"GL_TEXTURE0", 0x84C0}, {"GL_TEXTURE0_ARB", 0x84C0}, {"GL_TEXTURE1", 0x84C1}, {"GL_TEXTURE1_ARB", 0x84C1}, {"GL_TEXTURE2", 0x84C2}, {"GL_TEXTURE2_ARB", 0x84C2}, {"GL_TEXTURE3", 0x84C3}, {"GL_TEXTURE3_ARB", 0x84C3}, {"GL_TEXTURE4", 0x84C4}, {"GL_TEXTURE4_ARB", 0x84C4}, {"GL_TEXTURE5", 0x84C5}, {"GL_TEXTURE5_ARB", 0x84C5}, {"GL_TEXTURE6", 0x84C6}, {"GL_TEXTURE6_ARB", 0x84C6}, {"GL_TEXTURE7", 0x84C7}, {"GL_TEXTURE7_ARB", 0x84C7}, {"GL_TEXTURE8", 0x84C8}, {"GL_TEXTURE8_ARB", 0x84C8}, {"GL_TEXTURE9", 0x84C9}, {"GL_TEXTURE9_ARB", 0x84C9}, {"GL_TEXTURE10", 0x84CA}, {"GL_TEXTURE10_ARB", 0x84CA}, {"GL_TEXTURE11", 0x84CB}, {"GL_TEXTURE11_ARB", 0x84CB}, {"GL_TEXTURE12", 0x84CC}, {"GL_TEXTURE12_ARB", 0x84CC}, {"GL_TEXTURE13", 0x84CD}, {"GL_TEXTURE13_ARB", 0x84CD}, {"GL_TEXTURE14", 0x84CE}, {"GL_TEXTURE14_ARB", 0x84CE}, {"GL_TEXTURE15", 0x84CF}, {"GL_TEXTURE15_ARB", 0x84CF}, {"GL_TEXTURE16", 0x84D0}, {"GL_TEXTURE16_ARB", 0x84D0}, {"GL_TEXTURE17", 0x84D1}, {"GL_TEXTURE17_ARB", 0x84D1}, {"GL_TEXTURE18", 0x84D2}, {"GL_TEXTURE18_ARB", 0x84D2}, {"GL_TEXTURE19", 0x84D3}, {"GL_TEXTURE19_ARB", 0x84D3}, {"GL_TEXTURE20", 0x84D4}, {"GL_TEXTURE20_ARB", 0x84D4}, {"GL_TEXTURE21", 0x84D5}, {"GL_TEXTURE21_ARB", 0x84D5}, {"GL_TEXTURE22", 0x84D6}, {"GL_TEXTURE22_ARB", 0x84D6}, {"GL_TEXTURE23", 0x84D7}, {"GL_TEXTURE23_ARB", 0x84D7}, {"GL_TEXTURE24", 0x84D8}, {"GL_TEXTURE24_ARB", 0x84D8}, {"GL_TEXTURE25", 0x84D9}, {"GL_TEXTURE25_ARB", 0x84D9}, {"GL_TEXTURE26", 0x84DA}, {"GL_TEXTURE26_ARB", 0x84DA}, {"GL_TEXTURE27", 0x84DB}, {"GL_TEXTURE27_ARB", 0x84DB}, {"GL_TEXTURE28", 0x84DC}, {"GL_TEXTURE28_ARB", 0x84DC}, {"GL_TEXTURE29", 0x84DD}, {"GL_TEXTURE29_ARB", 0x84DD}, {"GL_TEXTURE30", 0x84DE}, {"GL_TEXTURE30_ARB", 0x84DE}, {"GL_TEXTURE31", 0x84DF}, {"GL_TEXTURE31_ARB", 0x84DF}, {"GL_ACTIVE_TEXTURE", 0x84E0}, {"GL_ACTIVE_TEXTURE_ARB", 0x84E0}, {"GL_CLIENT_ACTIVE_TEXTURE", 0x84E1}, {"GL_CLIENT_ACTIVE_TEXTURE_ARB", 0x84E1}, {"GL_MAX_TEXTURE_UNITS", 0x84E2}, {"GL_MAX_TEXTURE_UNITS_ARB", 0x84E2}, {"GL_TRANSPOSE_MODELVIEW_MATRIX", 0x84E3}, {"GL_TRANSPOSE_MODELVIEW_MATRIX_ARB", 0x84E3}, {"GL_TRANSPOSE_PROJECTION_MATRIX", 0x84E4}, {"GL_TRANSPOSE_PROJECTION_MATRIX_ARB", 0x84E4}, {"GL_TRANSPOSE_TEXTURE_MATRIX", 0x84E5}, {"GL_TRANSPOSE_TEXTURE_MATRIX_ARB", 0x84E5}, {"GL_TRANSPOSE_COLOR_MATRIX", 0x84E6}, {"GL_TRANSPOSE_COLOR_MATRIX_ARB", 0x84E6}, {"GL_SUBTRACT", 0x84E7}, {"GL_SUBTRACT_ARB", 0x84E7}, {"GL_MAX_RENDERBUFFER_SIZE", 0x84E8}, {"GL_MAX_RENDERBUFFER_SIZE_EXT", 0x84E8}, {"GL_MAX_RENDERBUFFER_SIZE_OES", 0x84E8}, {"GL_COMPRESSED_ALPHA", 0x84E9}, {"GL_COMPRESSED_ALPHA_ARB", 0x84E9}, {"GL_COMPRESSED_LUMINANCE", 0x84EA}, {"GL_COMPRESSED_LUMINANCE_ARB", 0x84EA}, {"GL_COMPRESSED_LUMINANCE_ALPHA", 0x84EB}, {"GL_COMPRESSED_LUMINANCE_ALPHA_ARB", 0x84EB}, {"GL_COMPRESSED_INTENSITY", 0x84EC}, {"GL_COMPRESSED_INTENSITY_ARB", 0x84EC}, {"GL_COMPRESSED_RGB", 0x84ED}, {"GL_COMPRESSED_RGB_ARB", 0x84ED}, {"GL_COMPRESSED_RGBA", 0x84EE}, {"GL_COMPRESSED_RGBA_ARB", 0x84EE}, {"GL_TEXTURE_COMPRESSION_HINT", 0x84EF}, {"GL_TEXTURE_COMPRESSION_HINT_ARB", 0x84EF}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER", 0x84F0}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER", 0x84F1}, {"GL_ALL_COMPLETED_NV", 0x84F2}, {"GL_FENCE_STATUS_NV", 0x84F3}, {"GL_FENCE_CONDITION_NV", 0x84F4}, {"GL_TEXTURE_RECTANGLE", 0x84F5}, {"GL_TEXTURE_RECTANGLE_ARB", 0x84F5}, {"GL_TEXTURE_RECTANGLE_NV", 0x84F5}, {"GL_TEXTURE_BINDING_RECTANGLE", 0x84F6}, {"GL_TEXTURE_BINDING_RECTANGLE_ARB", 0x84F6}, {"GL_TEXTURE_BINDING_RECTANGLE_NV", 0x84F6}, {"GL_PROXY_TEXTURE_RECTANGLE", 0x84F7}, {"GL_PROXY_TEXTURE_RECTANGLE_ARB", 0x84F7}, {"GL_PROXY_TEXTURE_RECTANGLE_NV", 0x84F7}, {"GL_MAX_RECTANGLE_TEXTURE_SIZE", 0x84F8}, {"GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB", 0x84F8}, {"GL_MAX_RECTANGLE_TEXTURE_SIZE_NV", 0x84F8}, {"GL_DEPTH_STENCIL", 0x84F9}, {"GL_DEPTH_STENCIL_EXT", 0x84F9}, {"GL_DEPTH_STENCIL_NV", 0x84F9}, {"GL_DEPTH_STENCIL_OES", 0x84F9}, {"GL_UNSIGNED_INT_24_8", 0x84FA}, {"GL_UNSIGNED_INT_24_8_EXT", 0x84FA}, {"GL_UNSIGNED_INT_24_8_NV", 0x84FA}, {"GL_UNSIGNED_INT_24_8_OES", 0x84FA}, {"GL_MAX_TEXTURE_LOD_BIAS", 0x84FD}, {"GL_MAX_TEXTURE_LOD_BIAS_EXT", 0x84FD}, {"GL_TEXTURE_MAX_ANISOTROPY_EXT", 0x84FE}, {"GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT", 0x84FF}, {"GL_TEXTURE_FILTER_CONTROL", 0x8500}, {"GL_TEXTURE_FILTER_CONTROL_EXT", 0x8500}, {"GL_TEXTURE_LOD_BIAS", 0x8501}, {"GL_TEXTURE_LOD_BIAS_EXT", 0x8501}, {"GL_MODELVIEW1_STACK_DEPTH_EXT", 0x8502}, {"GL_COMBINE4_NV", 0x8503}, {"GL_MAX_SHININESS_NV", 0x8504}, {"GL_MAX_SPOT_EXPONENT_NV", 0x8505}, {"GL_MODELVIEW1_MATRIX_EXT", 0x8506}, {"GL_INCR_WRAP", 0x8507}, {"GL_INCR_WRAP_EXT", 0x8507}, {"GL_INCR_WRAP_OES", 0x8507}, {"GL_DECR_WRAP", 0x8508}, {"GL_DECR_WRAP_EXT", 0x8508}, {"GL_DECR_WRAP_OES", 0x8508}, {"GL_VERTEX_WEIGHTING_EXT", 0x8509}, {"GL_MODELVIEW1_ARB", 0x850A}, {"GL_MODELVIEW1_EXT", 0x850A}, {"GL_CURRENT_VERTEX_WEIGHT_EXT", 0x850B}, {"GL_VERTEX_WEIGHT_ARRAY_EXT", 0x850C}, {"GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT", 0x850D}, {"GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT", 0x850E}, {"GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT", 0x850F}, {"GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT", 0x8510}, {"GL_NORMAL_MAP", 0x8511}, {"GL_NORMAL_MAP_ARB", 0x8511}, {"GL_NORMAL_MAP_EXT", 0x8511}, {"GL_NORMAL_MAP_NV", 0x8511}, {"GL_NORMAL_MAP_OES", 0x8511}, {"GL_REFLECTION_MAP", 0x8512}, {"GL_REFLECTION_MAP_ARB", 0x8512}, {"GL_REFLECTION_MAP_EXT", 0x8512}, {"GL_REFLECTION_MAP_NV", 0x8512}, {"GL_REFLECTION_MAP_OES", 0x8512}, {"GL_TEXTURE_CUBE_MAP", 0x8513}, {"GL_TEXTURE_CUBE_MAP_ARB", 0x8513}, {"GL_TEXTURE_CUBE_MAP_EXT", 0x8513}, {"GL_TEXTURE_CUBE_MAP_OES", 0x8513}, {"GL_TEXTURE_BINDING_CUBE_MAP", 0x8514}, {"GL_TEXTURE_BINDING_CUBE_MAP_ARB", 0x8514}, {"GL_TEXTURE_BINDING_CUBE_MAP_EXT", 0x8514}, {"GL_TEXTURE_BINDING_CUBE_MAP_OES", 0x8514}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_X", 0x8515}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB", 0x8515}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT", 0x8515}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES", 0x8515}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_X", 0x8516}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB", 0x8516}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT", 0x8516}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES", 0x8516}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Y", 0x8517}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB", 0x8517}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT", 0x8517}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES", 0x8517}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Y", 0x8518}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB", 0x8518}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT", 0x8518}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES", 0x8518}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Z", 0x8519}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB", 0x8519}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT", 0x8519}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES", 0x8519}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Z", 0x851A}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB", 0x851A}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT", 0x851A}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES", 0x851A}, {"GL_PROXY_TEXTURE_CUBE_MAP", 0x851B}, {"GL_PROXY_TEXTURE_CUBE_MAP_ARB", 0x851B}, {"GL_PROXY_TEXTURE_CUBE_MAP_EXT", 0x851B}, {"GL_MAX_CUBE_MAP_TEXTURE_SIZE", 0x851C}, {"GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB", 0x851C}, {"GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT", 0x851C}, {"GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES", 0x851C}, {"GL_VERTEX_ARRAY_RANGE_APPLE", 0x851D}, {"GL_VERTEX_ARRAY_RANGE_NV", 0x851D}, {"GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE", 0x851E}, {"GL_VERTEX_ARRAY_RANGE_LENGTH_NV", 0x851E}, {"GL_VERTEX_ARRAY_RANGE_VALID_NV", 0x851F}, {"GL_VERTEX_ARRAY_STORAGE_HINT_APPLE", 0x851F}, {"GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV", 0x8520}, {"GL_VERTEX_ARRAY_RANGE_POINTER_APPLE", 0x8521}, {"GL_VERTEX_ARRAY_RANGE_POINTER_NV", 0x8521}, {"GL_REGISTER_COMBINERS_NV", 0x8522}, {"GL_VARIABLE_A_NV", 0x8523}, {"GL_VARIABLE_B_NV", 0x8524}, {"GL_VARIABLE_C_NV", 0x8525}, {"GL_VARIABLE_D_NV", 0x8526}, {"GL_VARIABLE_E_NV", 0x8527}, {"GL_VARIABLE_F_NV", 0x8528}, {"GL_VARIABLE_G_NV", 0x8529}, {"GL_CONSTANT_COLOR0_NV", 0x852A}, {"GL_CONSTANT_COLOR1_NV", 0x852B}, {"GL_PRIMARY_COLOR_NV", 0x852C}, {"GL_SECONDARY_COLOR_NV", 0x852D}, {"GL_SPARE0_NV", 0x852E}, {"GL_SPARE1_NV", 0x852F}, {"GL_DISCARD_NV", 0x8530}, {"GL_E_TIMES_F_NV", 0x8531}, {"GL_SPARE0_PLUS_SECONDARY_COLOR_NV", 0x8532}, {"GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV", 0x8533}, {"GL_MULTISAMPLE_FILTER_HINT_NV", 0x8534}, {"GL_PER_STAGE_CONSTANTS_NV", 0x8535}, {"GL_UNSIGNED_IDENTITY_NV", 0x8536}, {"GL_UNSIGNED_INVERT_NV", 0x8537}, {"GL_EXPAND_NORMAL_NV", 0x8538}, {"GL_EXPAND_NEGATE_NV", 0x8539}, {"GL_HALF_BIAS_NORMAL_NV", 0x853A}, {"GL_HALF_BIAS_NEGATE_NV", 0x853B}, {"GL_SIGNED_IDENTITY_NV", 0x853C}, {"GL_SIGNED_NEGATE_NV", 0x853D}, {"GL_SCALE_BY_TWO_NV", 0x853E}, {"GL_SCALE_BY_FOUR_NV", 0x853F}, {"GL_SCALE_BY_ONE_HALF_NV", 0x8540}, {"GL_BIAS_BY_NEGATIVE_ONE_HALF_NV", 0x8541}, {"GL_COMBINER_INPUT_NV", 0x8542}, {"GL_COMBINER_MAPPING_NV", 0x8543}, {"GL_COMBINER_COMPONENT_USAGE_NV", 0x8544}, {"GL_COMBINER_AB_DOT_PRODUCT_NV", 0x8545}, {"GL_COMBINER_CD_DOT_PRODUCT_NV", 0x8546}, {"GL_COMBINER_MUX_SUM_NV", 0x8547}, {"GL_COMBINER_SCALE_NV", 0x8548}, {"GL_COMBINER_BIAS_NV", 0x8549}, {"GL_COMBINER_AB_OUTPUT_NV", 0x854A}, {"GL_COMBINER_CD_OUTPUT_NV", 0x854B}, {"GL_COMBINER_SUM_OUTPUT_NV", 0x854C}, {"GL_MAX_GENERAL_COMBINERS_NV", 0x854D}, {"GL_NUM_GENERAL_COMBINERS_NV", 0x854E}, {"GL_COLOR_SUM_CLAMP_NV", 0x854F}, {"GL_COMBINER0_NV", 0x8550}, {"GL_COMBINER1_NV", 0x8551}, {"GL_COMBINER2_NV", 0x8552}, {"GL_COMBINER3_NV", 0x8553}, {"GL_COMBINER4_NV", 0x8554}, {"GL_COMBINER5_NV", 0x8555}, {"GL_COMBINER6_NV", 0x8556}, {"GL_COMBINER7_NV", 0x8557}, {"GL_PRIMITIVE_RESTART_NV", 0x8558}, {"GL_PRIMITIVE_RESTART_INDEX_NV", 0x8559}, {"GL_FOG_DISTANCE_MODE_NV", 0x855A}, {"GL_EYE_RADIAL_NV", 0x855B}, {"GL_EYE_PLANE_ABSOLUTE_NV", 0x855C}, {"GL_EMBOSS_LIGHT_NV", 0x855D}, {"GL_EMBOSS_CONSTANT_NV", 0x855E}, {"GL_EMBOSS_MAP_NV", 0x855F}, {"GL_RED_MIN_CLAMP_INGR", 0x8560}, {"GL_GREEN_MIN_CLAMP_INGR", 0x8561}, {"GL_BLUE_MIN_CLAMP_INGR", 0x8562}, {"GL_ALPHA_MIN_CLAMP_INGR", 0x8563}, {"GL_RED_MAX_CLAMP_INGR", 0x8564}, {"GL_GREEN_MAX_CLAMP_INGR", 0x8565}, {"GL_BLUE_MAX_CLAMP_INGR", 0x8566}, {"GL_ALPHA_MAX_CLAMP_INGR", 0x8567}, {"GL_INTERLACE_READ_INGR", 0x8568}, {"GL_COMBINE", 0x8570}, {"GL_COMBINE_ARB", 0x8570}, {"GL_COMBINE_EXT", 0x8570}, {"GL_COMBINE_RGB", 0x8571}, {"GL_COMBINE_RGB_ARB", 0x8571}, {"GL_COMBINE_RGB_EXT", 0x8571}, {"GL_COMBINE_ALPHA", 0x8572}, {"GL_COMBINE_ALPHA_ARB", 0x8572}, {"GL_COMBINE_ALPHA_EXT", 0x8572}, {"GL_RGB_SCALE", 0x8573}, {"GL_RGB_SCALE_ARB", 0x8573}, {"GL_RGB_SCALE_EXT", 0x8573}, {"GL_ADD_SIGNED", 0x8574}, {"GL_ADD_SIGNED_ARB", 0x8574}, {"GL_ADD_SIGNED_EXT", 0x8574}, {"GL_INTERPOLATE", 0x8575}, {"GL_INTERPOLATE_ARB", 0x8575}, {"GL_INTERPOLATE_EXT", 0x8575}, {"GL_CONSTANT", 0x8576}, {"GL_CONSTANT_ARB", 0x8576}, {"GL_CONSTANT_EXT", 0x8576}, {"GL_PRIMARY_COLOR", 0x8577}, {"GL_PRIMARY_COLOR_ARB", 0x8577}, {"GL_PRIMARY_COLOR_EXT", 0x8577}, {"GL_PREVIOUS", 0x8578}, {"GL_PREVIOUS_ARB", 0x8578}, {"GL_PREVIOUS_EXT", 0x8578}, {"GL_SOURCE0_RGB", 0x8580}, {"GL_SOURCE0_RGB_ARB", 0x8580}, {"GL_SOURCE0_RGB_EXT", 0x8580}, {"GL_SRC0_RGB", 0x8580}, {"GL_SOURCE1_RGB", 0x8581}, {"GL_SOURCE1_RGB_ARB", 0x8581}, {"GL_SOURCE1_RGB_EXT", 0x8581}, {"GL_SRC1_RGB", 0x8581}, {"GL_SOURCE2_RGB", 0x8582}, {"GL_SOURCE2_RGB_ARB", 0x8582}, {"GL_SOURCE2_RGB_EXT", 0x8582}, {"GL_SRC2_RGB", 0x8582}, {"GL_SOURCE3_RGB_NV", 0x8583}, {"GL_SOURCE0_ALPHA", 0x8588}, {"GL_SOURCE0_ALPHA_ARB", 0x8588}, {"GL_SOURCE0_ALPHA_EXT", 0x8588}, {"GL_SRC0_ALPHA", 0x8588}, {"GL_SOURCE1_ALPHA", 0x8589}, {"GL_SOURCE1_ALPHA_ARB", 0x8589}, {"GL_SOURCE1_ALPHA_EXT", 0x8589}, {"GL_SRC1_ALPHA", 0x8589}, {"GL_SOURCE2_ALPHA", 0x858A}, {"GL_SOURCE2_ALPHA_ARB", 0x858A}, {"GL_SOURCE2_ALPHA_EXT", 0x858A}, {"GL_SRC2_ALPHA", 0x858A}, {"GL_SOURCE3_ALPHA_NV", 0x858B}, {"GL_OPERAND0_RGB", 0x8590}, {"GL_OPERAND0_RGB_ARB", 0x8590}, {"GL_OPERAND0_RGB_EXT", 0x8590}, {"GL_OPERAND1_RGB", 0x8591}, {"GL_OPERAND1_RGB_ARB", 0x8591}, {"GL_OPERAND1_RGB_EXT", 0x8591}, {"GL_OPERAND2_RGB", 0x8592}, {"GL_OPERAND2_RGB_ARB", 0x8592}, {"GL_OPERAND2_RGB_EXT", 0x8592}, {"GL_OPERAND3_RGB_NV", 0x8593}, {"GL_OPERAND0_ALPHA", 0x8598}, {"GL_OPERAND0_ALPHA_ARB", 0x8598}, {"GL_OPERAND0_ALPHA_EXT", 0x8598}, {"GL_OPERAND1_ALPHA", 0x8599}, {"GL_OPERAND1_ALPHA_ARB", 0x8599}, {"GL_OPERAND1_ALPHA_EXT", 0x8599}, {"GL_OPERAND2_ALPHA", 0x859A}, {"GL_OPERAND2_ALPHA_ARB", 0x859A}, {"GL_OPERAND2_ALPHA_EXT", 0x859A}, {"GL_OPERAND3_ALPHA_NV", 0x859B}, {"GL_PACK_SUBSAMPLE_RATE_SGIX", 0x85A0}, {"GL_UNPACK_SUBSAMPLE_RATE_SGIX", 0x85A1}, {"GL_PIXEL_SUBSAMPLE_4444_SGIX", 0x85A2}, {"GL_PIXEL_SUBSAMPLE_2424_SGIX", 0x85A3}, {"GL_PIXEL_SUBSAMPLE_4242_SGIX", 0x85A4}, {"GL_PERTURB_EXT", 0x85AE}, {"GL_TEXTURE_NORMAL_EXT", 0x85AF}, {"GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE", 0x85B0}, {"GL_TRANSFORM_HINT_APPLE", 0x85B1}, {"GL_UNPACK_CLIENT_STORAGE_APPLE", 0x85B2}, {"GL_BUFFER_OBJECT_APPLE", 0x85B3}, {"GL_STORAGE_CLIENT_APPLE", 0x85B4}, {"GL_VERTEX_ARRAY_BINDING", 0x85B5}, {"GL_VERTEX_ARRAY_BINDING_APPLE", 0x85B5}, {"GL_TEXTURE_RANGE_LENGTH_APPLE", 0x85B7}, {"GL_TEXTURE_RANGE_POINTER_APPLE", 0x85B8}, {"GL_YCBCR_422_APPLE", 0x85B9}, {"GL_UNSIGNED_SHORT_8_8_APPLE", 0x85BA}, {"GL_UNSIGNED_SHORT_8_8_MESA", 0x85BA}, {"GL_UNSIGNED_SHORT_8_8_REV_APPLE", 0x85BB}, {"GL_UNSIGNED_SHORT_8_8_REV_MESA", 0x85BB}, {"GL_TEXTURE_STORAGE_HINT_APPLE", 0x85BC}, {"GL_STORAGE_PRIVATE_APPLE", 0x85BD}, {"GL_STORAGE_CACHED_APPLE", 0x85BE}, {"GL_STORAGE_SHARED_APPLE", 0x85BF}, {"GL_REPLACEMENT_CODE_ARRAY_SUN", 0x85C0}, {"GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN", 0x85C1}, {"GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN", 0x85C2}, {"GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN", 0x85C3}, {"GL_R1UI_V3F_SUN", 0x85C4}, {"GL_R1UI_C4UB_V3F_SUN", 0x85C5}, {"GL_R1UI_C3F_V3F_SUN", 0x85C6}, {"GL_R1UI_N3F_V3F_SUN", 0x85C7}, {"GL_R1UI_C4F_N3F_V3F_SUN", 0x85C8}, {"GL_R1UI_T2F_V3F_SUN", 0x85C9}, {"GL_R1UI_T2F_N3F_V3F_SUN", 0x85CA}, {"GL_R1UI_T2F_C4F_N3F_V3F_SUN", 0x85CB}, {"GL_SLICE_ACCUM_SUN", 0x85CC}, {"GL_QUAD_MESH_SUN", 0x8614}, {"GL_TRIANGLE_MESH_SUN", 0x8615}, {"GL_VERTEX_PROGRAM_ARB", 0x8620}, {"GL_VERTEX_PROGRAM_NV", 0x8620}, {"GL_VERTEX_STATE_PROGRAM_NV", 0x8621}, {"GL_VERTEX_ATTRIB_ARRAY_ENABLED", 0x8622}, {"GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB", 0x8622}, {"GL_ATTRIB_ARRAY_SIZE_NV", 0x8623}, {"GL_VERTEX_ATTRIB_ARRAY_SIZE", 0x8623}, {"GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB", 0x8623}, {"GL_ATTRIB_ARRAY_STRIDE_NV", 0x8624}, {"GL_VERTEX_ATTRIB_ARRAY_STRIDE", 0x8624}, {"GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB", 0x8624}, {"GL_ATTRIB_ARRAY_TYPE_NV", 0x8625}, {"GL_VERTEX_ATTRIB_ARRAY_TYPE", 0x8625}, {"GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB", 0x8625}, {"GL_CURRENT_ATTRIB_NV", 0x8626}, {"GL_CURRENT_VERTEX_ATTRIB", 0x8626}, {"GL_CURRENT_VERTEX_ATTRIB_ARB", 0x8626}, {"GL_PROGRAM_LENGTH_ARB", 0x8627}, {"GL_PROGRAM_LENGTH_NV", 0x8627}, {"GL_PROGRAM_STRING_ARB", 0x8628}, {"GL_PROGRAM_STRING_NV", 0x8628}, {"GL_MODELVIEW_PROJECTION_NV", 0x8629}, {"GL_IDENTITY_NV", 0x862A}, {"GL_INVERSE_NV", 0x862B}, {"GL_TRANSPOSE_NV", 0x862C}, {"GL_INVERSE_TRANSPOSE_NV", 0x862D}, {"GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB", 0x862E}, {"GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV", 0x862E}, {"GL_MAX_PROGRAM_MATRICES_ARB", 0x862F}, {"GL_MAX_TRACK_MATRICES_NV", 0x862F}, {"GL_MATRIX0_NV", 0x8630}, {"GL_MATRIX1_NV", 0x8631}, {"GL_MATRIX2_NV", 0x8632}, {"GL_MATRIX3_NV", 0x8633}, {"GL_MATRIX4_NV", 0x8634}, {"GL_MATRIX5_NV", 0x8635}, {"GL_MATRIX6_NV", 0x8636}, {"GL_MATRIX7_NV", 0x8637}, {"GL_CURRENT_MATRIX_STACK_DEPTH_ARB", 0x8640}, {"GL_CURRENT_MATRIX_STACK_DEPTH_NV", 0x8640}, {"GL_CURRENT_MATRIX_ARB", 0x8641}, {"GL_CURRENT_MATRIX_NV", 0x8641}, {"GL_VERTEX_PROGRAM_POINT_SIZE", 0x8642}, {"GL_VERTEX_PROGRAM_POINT_SIZE_ARB", 0x8642}, {"GL_VERTEX_PROGRAM_POINT_SIZE_NV", 0x8642}, {"GL_PROGRAM_POINT_SIZE", 0x8642}, {"GL_PROGRAM_POINT_SIZE_ARB", 0x8642}, {"GL_PROGRAM_POINT_SIZE_EXT", 0x8642}, {"GL_VERTEX_PROGRAM_TWO_SIDE", 0x8643}, {"GL_VERTEX_PROGRAM_TWO_SIDE_ARB", 0x8643}, {"GL_VERTEX_PROGRAM_TWO_SIDE_NV", 0x8643}, {"GL_PROGRAM_PARAMETER_NV", 0x8644}, {"GL_ATTRIB_ARRAY_POINTER_NV", 0x8645}, {"GL_VERTEX_ATTRIB_ARRAY_POINTER", 0x8645}, {"GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB", 0x8645}, {"GL_PROGRAM_TARGET_NV", 0x8646}, {"GL_PROGRAM_RESIDENT_NV", 0x8647}, {"GL_TRACK_MATRIX_NV", 0x8648}, {"GL_TRACK_MATRIX_TRANSFORM_NV", 0x8649}, {"GL_VERTEX_PROGRAM_BINDING_NV", 0x864A}, {"GL_PROGRAM_ERROR_POSITION_ARB", 0x864B}, {"GL_PROGRAM_ERROR_POSITION_NV", 0x864B}, {"GL_OFFSET_TEXTURE_RECTANGLE_NV", 0x864C}, {"GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV", 0x864D}, {"GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV", 0x864E}, {"GL_DEPTH_CLAMP", 0x864F}, {"GL_DEPTH_CLAMP_NV", 0x864F}, {"GL_VERTEX_ATTRIB_ARRAY0_NV", 0x8650}, {"GL_VERTEX_ATTRIB_ARRAY1_NV", 0x8651}, {"GL_VERTEX_ATTRIB_ARRAY2_NV", 0x8652}, {"GL_VERTEX_ATTRIB_ARRAY3_NV", 0x8653}, {"GL_VERTEX_ATTRIB_ARRAY4_NV", 0x8654}, {"GL_VERTEX_ATTRIB_ARRAY5_NV", 0x8655}, {"GL_VERTEX_ATTRIB_ARRAY6_NV", 0x8656}, {"GL_VERTEX_ATTRIB_ARRAY7_NV", 0x8657}, {"GL_VERTEX_ATTRIB_ARRAY8_NV", 0x8658}, {"GL_VERTEX_ATTRIB_ARRAY9_NV", 0x8659}, {"GL_VERTEX_ATTRIB_ARRAY10_NV", 0x865A}, {"GL_VERTEX_ATTRIB_ARRAY11_NV", 0x865B}, {"GL_VERTEX_ATTRIB_ARRAY12_NV", 0x865C}, {"GL_VERTEX_ATTRIB_ARRAY13_NV", 0x865D}, {"GL_VERTEX_ATTRIB_ARRAY14_NV", 0x865E}, {"GL_VERTEX_ATTRIB_ARRAY15_NV", 0x865F}, {"GL_MAP1_VERTEX_ATTRIB0_4_NV", 0x8660}, {"GL_MAP1_VERTEX_ATTRIB1_4_NV", 0x8661}, {"GL_MAP1_VERTEX_ATTRIB2_4_NV", 0x8662}, {"GL_MAP1_VERTEX_ATTRIB3_4_NV", 0x8663}, {"GL_MAP1_VERTEX_ATTRIB4_4_NV", 0x8664}, {"GL_MAP1_VERTEX_ATTRIB5_4_NV", 0x8665}, {"GL_MAP1_VERTEX_ATTRIB6_4_NV", 0x8666}, {"GL_MAP1_VERTEX_ATTRIB7_4_NV", 0x8667}, {"GL_MAP1_VERTEX_ATTRIB8_4_NV", 0x8668}, {"GL_MAP1_VERTEX_ATTRIB9_4_NV", 0x8669}, {"GL_MAP1_VERTEX_ATTRIB10_4_NV", 0x866A}, {"GL_MAP1_VERTEX_ATTRIB11_4_NV", 0x866B}, {"GL_MAP1_VERTEX_ATTRIB12_4_NV", 0x866C}, {"GL_MAP1_VERTEX_ATTRIB13_4_NV", 0x866D}, {"GL_MAP1_VERTEX_ATTRIB14_4_NV", 0x866E}, {"GL_MAP1_VERTEX_ATTRIB15_4_NV", 0x866F}, {"GL_MAP2_VERTEX_ATTRIB0_4_NV", 0x8670}, {"GL_MAP2_VERTEX_ATTRIB1_4_NV", 0x8671}, {"GL_MAP2_VERTEX_ATTRIB2_4_NV", 0x8672}, {"GL_MAP2_VERTEX_ATTRIB3_4_NV", 0x8673}, {"GL_MAP2_VERTEX_ATTRIB4_4_NV", 0x8674}, {"GL_MAP2_VERTEX_ATTRIB5_4_NV", 0x8675}, {"GL_MAP2_VERTEX_ATTRIB6_4_NV", 0x8676}, {"GL_MAP2_VERTEX_ATTRIB7_4_NV", 0x8677}, {"GL_PROGRAM_BINDING_ARB", 0x8677}, {"GL_MAP2_VERTEX_ATTRIB8_4_NV", 0x8678}, {"GL_MAP2_VERTEX_ATTRIB9_4_NV", 0x8679}, {"GL_MAP2_VERTEX_ATTRIB10_4_NV", 0x867A}, {"GL_MAP2_VERTEX_ATTRIB11_4_NV", 0x867B}, {"GL_MAP2_VERTEX_ATTRIB12_4_NV", 0x867C}, {"GL_MAP2_VERTEX_ATTRIB13_4_NV", 0x867D}, {"GL_MAP2_VERTEX_ATTRIB14_4_NV", 0x867E}, {"GL_MAP2_VERTEX_ATTRIB15_4_NV", 0x867F}, {"GL_TEXTURE_COMPRESSED_IMAGE_SIZE", 0x86A0}, {"GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB", 0x86A0}, {"GL_TEXTURE_COMPRESSED", 0x86A1}, {"GL_TEXTURE_COMPRESSED_ARB", 0x86A1}, {"GL_NUM_COMPRESSED_TEXTURE_FORMATS", 0x86A2}, {"GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB", 0x86A2}, {"GL_COMPRESSED_TEXTURE_FORMATS", 0x86A3}, {"GL_COMPRESSED_TEXTURE_FORMATS_ARB", 0x86A3}, {"GL_MAX_VERTEX_UNITS_ARB", 0x86A4}, {"GL_MAX_VERTEX_UNITS_OES", 0x86A4}, {"GL_ACTIVE_VERTEX_UNITS_ARB", 0x86A5}, {"GL_WEIGHT_SUM_UNITY_ARB", 0x86A6}, {"GL_VERTEX_BLEND_ARB", 0x86A7}, {"GL_CURRENT_WEIGHT_ARB", 0x86A8}, {"GL_WEIGHT_ARRAY_TYPE_ARB", 0x86A9}, {"GL_WEIGHT_ARRAY_TYPE_OES", 0x86A9}, {"GL_WEIGHT_ARRAY_STRIDE_ARB", 0x86AA}, {"GL_WEIGHT_ARRAY_STRIDE_OES", 0x86AA}, {"GL_WEIGHT_ARRAY_SIZE_ARB", 0x86AB}, {"GL_WEIGHT_ARRAY_SIZE_OES", 0x86AB}, {"GL_WEIGHT_ARRAY_POINTER_ARB", 0x86AC}, {"GL_WEIGHT_ARRAY_POINTER_OES", 0x86AC}, {"GL_WEIGHT_ARRAY_ARB", 0x86AD}, {"GL_WEIGHT_ARRAY_OES", 0x86AD}, {"GL_DOT3_RGB", 0x86AE}, {"GL_DOT3_RGB_ARB", 0x86AE}, {"GL_DOT3_RGBA", 0x86AF}, {"GL_DOT3_RGBA_ARB", 0x86AF}, {"GL_DOT3_RGBA_IMG", 0x86AF}, {"GL_COMPRESSED_RGB_FXT1_3DFX", 0x86B0}, {"GL_COMPRESSED_RGBA_FXT1_3DFX", 0x86B1}, {"GL_MULTISAMPLE_3DFX", 0x86B2}, {"GL_SAMPLE_BUFFERS_3DFX", 0x86B3}, {"GL_SAMPLES_3DFX", 0x86B4}, {"GL_EVAL_2D_NV", 0x86C0}, {"GL_EVAL_TRIANGULAR_2D_NV", 0x86C1}, {"GL_MAP_TESSELLATION_NV", 0x86C2}, {"GL_MAP_ATTRIB_U_ORDER_NV", 0x86C3}, {"GL_MAP_ATTRIB_V_ORDER_NV", 0x86C4}, {"GL_EVAL_FRACTIONAL_TESSELLATION_NV", 0x86C5}, {"GL_EVAL_VERTEX_ATTRIB0_NV", 0x86C6}, {"GL_EVAL_VERTEX_ATTRIB1_NV", 0x86C7}, {"GL_EVAL_VERTEX_ATTRIB2_NV", 0x86C8}, {"GL_EVAL_VERTEX_ATTRIB3_NV", 0x86C9}, {"GL_EVAL_VERTEX_ATTRIB4_NV", 0x86CA}, {"GL_EVAL_VERTEX_ATTRIB5_NV", 0x86CB}, {"GL_EVAL_VERTEX_ATTRIB6_NV", 0x86CC}, {"GL_EVAL_VERTEX_ATTRIB7_NV", 0x86CD}, {"GL_EVAL_VERTEX_ATTRIB8_NV", 0x86CE}, {"GL_EVAL_VERTEX_ATTRIB9_NV", 0x86CF}, {"GL_EVAL_VERTEX_ATTRIB10_NV", 0x86D0}, {"GL_EVAL_VERTEX_ATTRIB11_NV", 0x86D1}, {"GL_EVAL_VERTEX_ATTRIB12_NV", 0x86D2}, {"GL_EVAL_VERTEX_ATTRIB13_NV", 0x86D3}, {"GL_EVAL_VERTEX_ATTRIB14_NV", 0x86D4}, {"GL_EVAL_VERTEX_ATTRIB15_NV", 0x86D5}, {"GL_MAX_MAP_TESSELLATION_NV", 0x86D6}, {"GL_MAX_RATIONAL_EVAL_ORDER_NV", 0x86D7}, {"GL_MAX_PROGRAM_PATCH_ATTRIBS_NV", 0x86D8}, {"GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV", 0x86D9}, {"GL_UNSIGNED_INT_S8_S8_8_8_NV", 0x86DA}, {"GL_UNSIGNED_INT_8_8_S8_S8_REV_NV", 0x86DB}, {"GL_DSDT_MAG_INTENSITY_NV", 0x86DC}, {"GL_SHADER_CONSISTENT_NV", 0x86DD}, {"GL_TEXTURE_SHADER_NV", 0x86DE}, {"GL_SHADER_OPERATION_NV", 0x86DF}, {"GL_CULL_MODES_NV", 0x86E0}, {"GL_OFFSET_TEXTURE_MATRIX_NV", 0x86E1}, {"GL_OFFSET_TEXTURE_2D_MATRIX_NV", 0x86E1}, {"GL_OFFSET_TEXTURE_SCALE_NV", 0x86E2}, {"GL_OFFSET_TEXTURE_2D_SCALE_NV", 0x86E2}, {"GL_OFFSET_TEXTURE_BIAS_NV", 0x86E3}, {"GL_OFFSET_TEXTURE_2D_BIAS_NV", 0x86E3}, {"GL_PREVIOUS_TEXTURE_INPUT_NV", 0x86E4}, {"GL_CONST_EYE_NV", 0x86E5}, {"GL_PASS_THROUGH_NV", 0x86E6}, {"GL_CULL_FRAGMENT_NV", 0x86E7}, {"GL_OFFSET_TEXTURE_2D_NV", 0x86E8}, {"GL_DEPENDENT_AR_TEXTURE_2D_NV", 0x86E9}, {"GL_DEPENDENT_GB_TEXTURE_2D_NV", 0x86EA}, {"GL_SURFACE_STATE_NV", 0x86EB}, {"GL_DOT_PRODUCT_NV", 0x86EC}, {"GL_DOT_PRODUCT_DEPTH_REPLACE_NV", 0x86ED}, {"GL_DOT_PRODUCT_TEXTURE_2D_NV", 0x86EE}, {"GL_DOT_PRODUCT_TEXTURE_3D_NV", 0x86EF}, {"GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV", 0x86F0}, {"GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV", 0x86F1}, {"GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV", 0x86F2}, {"GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV", 0x86F3}, {"GL_HILO_NV", 0x86F4}, {"GL_DSDT_NV", 0x86F5}, {"GL_DSDT_MAG_NV", 0x86F6}, {"GL_DSDT_MAG_VIB_NV", 0x86F7}, {"GL_HILO16_NV", 0x86F8}, {"GL_SIGNED_HILO_NV", 0x86F9}, {"GL_SIGNED_HILO16_NV", 0x86FA}, {"GL_SIGNED_RGBA_NV", 0x86FB}, {"GL_SIGNED_RGBA8_NV", 0x86FC}, {"GL_SURFACE_REGISTERED_NV", 0x86FD}, {"GL_SIGNED_RGB_NV", 0x86FE}, {"GL_SIGNED_RGB8_NV", 0x86FF}, {"GL_SURFACE_MAPPED_NV", 0x8700}, {"GL_SIGNED_LUMINANCE_NV", 0x8701}, {"GL_SIGNED_LUMINANCE8_NV", 0x8702}, {"GL_SIGNED_LUMINANCE_ALPHA_NV", 0x8703}, {"GL_SIGNED_LUMINANCE8_ALPHA8_NV", 0x8704}, {"GL_SIGNED_ALPHA_NV", 0x8705}, {"GL_SIGNED_ALPHA8_NV", 0x8706}, {"GL_SIGNED_INTENSITY_NV", 0x8707}, {"GL_SIGNED_INTENSITY8_NV", 0x8708}, {"GL_DSDT8_NV", 0x8709}, {"GL_DSDT8_MAG8_NV", 0x870A}, {"GL_DSDT8_MAG8_INTENSITY8_NV", 0x870B}, {"GL_SIGNED_RGB_UNSIGNED_ALPHA_NV", 0x870C}, {"GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV", 0x870D}, {"GL_HI_SCALE_NV", 0x870E}, {"GL_LO_SCALE_NV", 0x870F}, {"GL_DS_SCALE_NV", 0x8710}, {"GL_DT_SCALE_NV", 0x8711}, {"GL_MAGNITUDE_SCALE_NV", 0x8712}, {"GL_VIBRANCE_SCALE_NV", 0x8713}, {"GL_HI_BIAS_NV", 0x8714}, {"GL_LO_BIAS_NV", 0x8715}, {"GL_DS_BIAS_NV", 0x8716}, {"GL_DT_BIAS_NV", 0x8717}, {"GL_MAGNITUDE_BIAS_NV", 0x8718}, {"GL_VIBRANCE_BIAS_NV", 0x8719}, {"GL_TEXTURE_BORDER_VALUES_NV", 0x871A}, {"GL_TEXTURE_HI_SIZE_NV", 0x871B}, {"GL_TEXTURE_LO_SIZE_NV", 0x871C}, {"GL_TEXTURE_DS_SIZE_NV", 0x871D}, {"GL_TEXTURE_DT_SIZE_NV", 0x871E}, {"GL_TEXTURE_MAG_SIZE_NV", 0x871F}, {"GL_MODELVIEW2_ARB", 0x8722}, {"GL_MODELVIEW3_ARB", 0x8723}, {"GL_MODELVIEW4_ARB", 0x8724}, {"GL_MODELVIEW5_ARB", 0x8725}, {"GL_MODELVIEW6_ARB", 0x8726}, {"GL_MODELVIEW7_ARB", 0x8727}, {"GL_MODELVIEW8_ARB", 0x8728}, {"GL_MODELVIEW9_ARB", 0x8729}, {"GL_MODELVIEW10_ARB", 0x872A}, {"GL_MODELVIEW11_ARB", 0x872B}, {"GL_MODELVIEW12_ARB", 0x872C}, {"GL_MODELVIEW13_ARB", 0x872D}, {"GL_MODELVIEW14_ARB", 0x872E}, {"GL_MODELVIEW15_ARB", 0x872F}, {"GL_MODELVIEW16_ARB", 0x8730}, {"GL_MODELVIEW17_ARB", 0x8731}, {"GL_MODELVIEW18_ARB", 0x8732}, {"GL_MODELVIEW19_ARB", 0x8733}, {"GL_MODELVIEW20_ARB", 0x8734}, {"GL_MODELVIEW21_ARB", 0x8735}, {"GL_MODELVIEW22_ARB", 0x8736}, {"GL_MODELVIEW23_ARB", 0x8737}, {"GL_MODELVIEW24_ARB", 0x8738}, {"GL_MODELVIEW25_ARB", 0x8739}, {"GL_MODELVIEW26_ARB", 0x873A}, {"GL_MODELVIEW27_ARB", 0x873B}, {"GL_MODELVIEW28_ARB", 0x873C}, {"GL_MODELVIEW29_ARB", 0x873D}, {"GL_MODELVIEW30_ARB", 0x873E}, {"GL_MODELVIEW31_ARB", 0x873F}, {"GL_DOT3_RGB_EXT", 0x8740}, {"GL_Z400_BINARY_AMD", 0x8740}, {"GL_DOT3_RGBA_EXT", 0x8741}, {"GL_PROGRAM_BINARY_LENGTH_OES", 0x8741}, {"GL_PROGRAM_BINARY_LENGTH", 0x8741}, {"GL_MIRROR_CLAMP_ATI", 0x8742}, {"GL_MIRROR_CLAMP_EXT", 0x8742}, {"GL_MIRROR_CLAMP_TO_EDGE", 0x8743}, {"GL_MIRROR_CLAMP_TO_EDGE_ATI", 0x8743}, {"GL_MIRROR_CLAMP_TO_EDGE_EXT", 0x8743}, {"GL_MODULATE_ADD_ATI", 0x8744}, {"GL_MODULATE_SIGNED_ADD_ATI", 0x8745}, {"GL_MODULATE_SUBTRACT_ATI", 0x8746}, {"GL_SET_AMD", 0x874A}, {"GL_REPLACE_VALUE_AMD", 0x874B}, {"GL_STENCIL_OP_VALUE_AMD", 0x874C}, {"GL_STENCIL_BACK_OP_VALUE_AMD", 0x874D}, {"GL_VERTEX_ATTRIB_ARRAY_LONG", 0x874E}, {"GL_DEPTH_STENCIL_MESA", 0x8750}, {"GL_UNSIGNED_INT_24_8_MESA", 0x8751}, {"GL_UNSIGNED_INT_8_24_REV_MESA", 0x8752}, {"GL_UNSIGNED_SHORT_15_1_MESA", 0x8753}, {"GL_UNSIGNED_SHORT_1_15_REV_MESA", 0x8754}, {"GL_TRACE_MASK_MESA", 0x8755}, {"GL_TRACE_NAME_MESA", 0x8756}, {"GL_YCBCR_MESA", 0x8757}, {"GL_PACK_INVERT_MESA", 0x8758}, {"GL_DEBUG_OBJECT_MESA", 0x8759}, {"GL_TEXTURE_1D_STACK_MESAX", 0x8759}, {"GL_DEBUG_PRINT_MESA", 0x875A}, {"GL_TEXTURE_2D_STACK_MESAX", 0x875A}, {"GL_DEBUG_ASSERT_MESA", 0x875B}, {"GL_PROXY_TEXTURE_1D_STACK_MESAX", 0x875B}, {"GL_PROXY_TEXTURE_2D_STACK_MESAX", 0x875C}, {"GL_TEXTURE_1D_STACK_BINDING_MESAX", 0x875D}, {"GL_TEXTURE_2D_STACK_BINDING_MESAX", 0x875E}, {"GL_STATIC_ATI", 0x8760}, {"GL_DYNAMIC_ATI", 0x8761}, {"GL_PRESERVE_ATI", 0x8762}, {"GL_DISCARD_ATI", 0x8763}, {"GL_BUFFER_SIZE", 0x8764}, {"GL_BUFFER_SIZE_ARB", 0x8764}, {"GL_OBJECT_BUFFER_SIZE_ATI", 0x8764}, {"GL_BUFFER_USAGE", 0x8765}, {"GL_BUFFER_USAGE_ARB", 0x8765}, {"GL_OBJECT_BUFFER_USAGE_ATI", 0x8765}, {"GL_ARRAY_OBJECT_BUFFER_ATI", 0x8766}, {"GL_ARRAY_OBJECT_OFFSET_ATI", 0x8767}, {"GL_ELEMENT_ARRAY_ATI", 0x8768}, {"GL_ELEMENT_ARRAY_TYPE_ATI", 0x8769}, {"GL_ELEMENT_ARRAY_POINTER_ATI", 0x876A}, {"GL_MAX_VERTEX_STREAMS_ATI", 0x876B}, {"GL_VERTEX_STREAM0_ATI", 0x876C}, {"GL_VERTEX_STREAM1_ATI", 0x876D}, {"GL_VERTEX_STREAM2_ATI", 0x876E}, {"GL_VERTEX_STREAM3_ATI", 0x876F}, {"GL_VERTEX_STREAM4_ATI", 0x8770}, {"GL_VERTEX_STREAM5_ATI", 0x8771}, {"GL_VERTEX_STREAM6_ATI", 0x8772}, {"GL_VERTEX_STREAM7_ATI", 0x8773}, {"GL_VERTEX_SOURCE_ATI", 0x8774}, {"GL_BUMP_ROT_MATRIX_ATI", 0x8775}, {"GL_BUMP_ROT_MATRIX_SIZE_ATI", 0x8776}, {"GL_BUMP_NUM_TEX_UNITS_ATI", 0x8777}, {"GL_BUMP_TEX_UNITS_ATI", 0x8778}, {"GL_DUDV_ATI", 0x8779}, {"GL_DU8DV8_ATI", 0x877A}, {"GL_BUMP_ENVMAP_ATI", 0x877B}, {"GL_BUMP_TARGET_ATI", 0x877C}, {"GL_VERTEX_SHADER_EXT", 0x8780}, {"GL_VERTEX_SHADER_BINDING_EXT", 0x8781}, {"GL_OP_INDEX_EXT", 0x8782}, {"GL_OP_NEGATE_EXT", 0x8783}, {"GL_OP_DOT3_EXT", 0x8784}, {"GL_OP_DOT4_EXT", 0x8785}, {"GL_OP_MUL_EXT", 0x8786}, {"GL_OP_ADD_EXT", 0x8787}, {"GL_OP_MADD_EXT", 0x8788}, {"GL_OP_FRAC_EXT", 0x8789}, {"GL_OP_MAX_EXT", 0x878A}, {"GL_OP_MIN_EXT", 0x878B}, {"GL_OP_SET_GE_EXT", 0x878C}, {"GL_OP_SET_LT_EXT", 0x878D}, {"GL_OP_CLAMP_EXT", 0x878E}, {"GL_OP_FLOOR_EXT", 0x878F}, {"GL_OP_ROUND_EXT", 0x8790}, {"GL_OP_EXP_BASE_2_EXT", 0x8791}, {"GL_OP_LOG_BASE_2_EXT", 0x8792}, {"GL_OP_POWER_EXT", 0x8793}, {"GL_OP_RECIP_EXT", 0x8794}, {"GL_OP_RECIP_SQRT_EXT", 0x8795}, {"GL_OP_SUB_EXT", 0x8796}, {"GL_OP_CROSS_PRODUCT_EXT", 0x8797}, {"GL_OP_MULTIPLY_MATRIX_EXT", 0x8798}, {"GL_OP_MOV_EXT", 0x8799}, {"GL_OUTPUT_VERTEX_EXT", 0x879A}, {"GL_OUTPUT_COLOR0_EXT", 0x879B}, {"GL_OUTPUT_COLOR1_EXT", 0x879C}, {"GL_OUTPUT_TEXTURE_COORD0_EXT", 0x879D}, {"GL_OUTPUT_TEXTURE_COORD1_EXT", 0x879E}, {"GL_OUTPUT_TEXTURE_COORD2_EXT", 0x879F}, {"GL_OUTPUT_TEXTURE_COORD3_EXT", 0x87A0}, {"GL_OUTPUT_TEXTURE_COORD4_EXT", 0x87A1}, {"GL_OUTPUT_TEXTURE_COORD5_EXT", 0x87A2}, {"GL_OUTPUT_TEXTURE_COORD6_EXT", 0x87A3}, {"GL_OUTPUT_TEXTURE_COORD7_EXT", 0x87A4}, {"GL_OUTPUT_TEXTURE_COORD8_EXT", 0x87A5}, {"GL_OUTPUT_TEXTURE_COORD9_EXT", 0x87A6}, {"GL_OUTPUT_TEXTURE_COORD10_EXT", 0x87A7}, {"GL_OUTPUT_TEXTURE_COORD11_EXT", 0x87A8}, {"GL_OUTPUT_TEXTURE_COORD12_EXT", 0x87A9}, {"GL_OUTPUT_TEXTURE_COORD13_EXT", 0x87AA}, {"GL_OUTPUT_TEXTURE_COORD14_EXT", 0x87AB}, {"GL_OUTPUT_TEXTURE_COORD15_EXT", 0x87AC}, {"GL_OUTPUT_TEXTURE_COORD16_EXT", 0x87AD}, {"GL_OUTPUT_TEXTURE_COORD17_EXT", 0x87AE}, {"GL_OUTPUT_TEXTURE_COORD18_EXT", 0x87AF}, {"GL_OUTPUT_TEXTURE_COORD19_EXT", 0x87B0}, {"GL_OUTPUT_TEXTURE_COORD20_EXT", 0x87B1}, {"GL_OUTPUT_TEXTURE_COORD21_EXT", 0x87B2}, {"GL_OUTPUT_TEXTURE_COORD22_EXT", 0x87B3}, {"GL_OUTPUT_TEXTURE_COORD23_EXT", 0x87B4}, {"GL_OUTPUT_TEXTURE_COORD24_EXT", 0x87B5}, {"GL_OUTPUT_TEXTURE_COORD25_EXT", 0x87B6}, {"GL_OUTPUT_TEXTURE_COORD26_EXT", 0x87B7}, {"GL_OUTPUT_TEXTURE_COORD27_EXT", 0x87B8}, {"GL_OUTPUT_TEXTURE_COORD28_EXT", 0x87B9}, {"GL_OUTPUT_TEXTURE_COORD29_EXT", 0x87BA}, {"GL_OUTPUT_TEXTURE_COORD30_EXT", 0x87BB}, {"GL_OUTPUT_TEXTURE_COORD31_EXT", 0x87BC}, {"GL_OUTPUT_FOG_EXT", 0x87BD}, {"GL_SCALAR_EXT", 0x87BE}, {"GL_VECTOR_EXT", 0x87BF}, {"GL_MATRIX_EXT", 0x87C0}, {"GL_VARIANT_EXT", 0x87C1}, {"GL_INVARIANT_EXT", 0x87C2}, {"GL_LOCAL_CONSTANT_EXT", 0x87C3}, {"GL_LOCAL_EXT", 0x87C4}, {"GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT", 0x87C5}, {"GL_MAX_VERTEX_SHADER_VARIANTS_EXT", 0x87C6}, {"GL_MAX_VERTEX_SHADER_INVARIANTS_EXT", 0x87C7}, {"GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT", 0x87C8}, {"GL_MAX_VERTEX_SHADER_LOCALS_EXT", 0x87C9}, {"GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT", 0x87CA}, {"GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT", 0x87CB}, {"GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT", 0x87CC}, {"GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT", 0x87CD}, {"GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT", 0x87CE}, {"GL_VERTEX_SHADER_INSTRUCTIONS_EXT", 0x87CF}, {"GL_VERTEX_SHADER_VARIANTS_EXT", 0x87D0}, {"GL_VERTEX_SHADER_INVARIANTS_EXT", 0x87D1}, {"GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT", 0x87D2}, {"GL_VERTEX_SHADER_LOCALS_EXT", 0x87D3}, {"GL_VERTEX_SHADER_OPTIMIZED_EXT", 0x87D4}, {"GL_X_EXT", 0x87D5}, {"GL_Y_EXT", 0x87D6}, {"GL_Z_EXT", 0x87D7}, {"GL_W_EXT", 0x87D8}, {"GL_NEGATIVE_X_EXT", 0x87D9}, {"GL_NEGATIVE_Y_EXT", 0x87DA}, {"GL_NEGATIVE_Z_EXT", 0x87DB}, {"GL_NEGATIVE_W_EXT", 0x87DC}, {"GL_ZERO_EXT", 0x87DD}, {"GL_ONE_EXT", 0x87DE}, {"GL_NEGATIVE_ONE_EXT", 0x87DF}, {"GL_NORMALIZED_RANGE_EXT", 0x87E0}, {"GL_FULL_RANGE_EXT", 0x87E1}, {"GL_CURRENT_VERTEX_EXT", 0x87E2}, {"GL_MVP_MATRIX_EXT", 0x87E3}, {"GL_VARIANT_VALUE_EXT", 0x87E4}, {"GL_VARIANT_DATATYPE_EXT", 0x87E5}, {"GL_VARIANT_ARRAY_STRIDE_EXT", 0x87E6}, {"GL_VARIANT_ARRAY_TYPE_EXT", 0x87E7}, {"GL_VARIANT_ARRAY_EXT", 0x87E8}, {"GL_VARIANT_ARRAY_POINTER_EXT", 0x87E9}, {"GL_INVARIANT_VALUE_EXT", 0x87EA}, {"GL_INVARIANT_DATATYPE_EXT", 0x87EB}, {"GL_LOCAL_CONSTANT_VALUE_EXT", 0x87EC}, {"GL_LOCAL_CONSTANT_DATATYPE_EXT", 0x87ED}, {"GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD", 0x87EE}, {"GL_PN_TRIANGLES_ATI", 0x87F0}, {"GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI", 0x87F1}, {"GL_PN_TRIANGLES_POINT_MODE_ATI", 0x87F2}, {"GL_PN_TRIANGLES_NORMAL_MODE_ATI", 0x87F3}, {"GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI", 0x87F4}, {"GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI", 0x87F5}, {"GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI", 0x87F6}, {"GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI", 0x87F7}, {"GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI", 0x87F8}, {"GL_3DC_X_AMD", 0x87F9}, {"GL_3DC_XY_AMD", 0x87FA}, {"GL_VBO_FREE_MEMORY_ATI", 0x87FB}, {"GL_TEXTURE_FREE_MEMORY_ATI", 0x87FC}, {"GL_RENDERBUFFER_FREE_MEMORY_ATI", 0x87FD}, {"GL_NUM_PROGRAM_BINARY_FORMATS", 0x87FE}, {"GL_NUM_PROGRAM_BINARY_FORMATS_OES", 0x87FE}, {"GL_PROGRAM_BINARY_FORMATS", 0x87FF}, {"GL_PROGRAM_BINARY_FORMATS_OES", 0x87FF}, {"GL_STENCIL_BACK_FUNC", 0x8800}, {"GL_STENCIL_BACK_FUNC_ATI", 0x8800}, {"GL_STENCIL_BACK_FAIL", 0x8801}, {"GL_STENCIL_BACK_FAIL_ATI", 0x8801}, {"GL_STENCIL_BACK_PASS_DEPTH_FAIL", 0x8802}, {"GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI", 0x8802}, {"GL_STENCIL_BACK_PASS_DEPTH_PASS", 0x8803}, {"GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI", 0x8803}, {"GL_FRAGMENT_PROGRAM_ARB", 0x8804}, {"GL_PROGRAM_ALU_INSTRUCTIONS_ARB", 0x8805}, {"GL_PROGRAM_TEX_INSTRUCTIONS_ARB", 0x8806}, {"GL_PROGRAM_TEX_INDIRECTIONS_ARB", 0x8807}, {"GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB", 0x8808}, {"GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB", 0x8809}, {"GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB", 0x880A}, {"GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB", 0x880B}, {"GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB", 0x880C}, {"GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB", 0x880D}, {"GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB", 0x880E}, {"GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB", 0x880F}, {"GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB", 0x8810}, {"GL_RGBA32F", 0x8814}, {"GL_RGBA32F_ARB", 0x8814}, {"GL_RGBA_FLOAT32_APPLE", 0x8814}, {"GL_RGBA_FLOAT32_ATI", 0x8814}, {"GL_RGB32F", 0x8815}, {"GL_RGB32F_ARB", 0x8815}, {"GL_RGB_FLOAT32_APPLE", 0x8815}, {"GL_RGB_FLOAT32_ATI", 0x8815}, {"GL_ALPHA32F_ARB", 0x8816}, {"GL_ALPHA_FLOAT32_APPLE", 0x8816}, {"GL_ALPHA_FLOAT32_ATI", 0x8816}, {"GL_INTENSITY32F_ARB", 0x8817}, {"GL_INTENSITY_FLOAT32_APPLE", 0x8817}, {"GL_INTENSITY_FLOAT32_ATI", 0x8817}, {"GL_LUMINANCE32F_ARB", 0x8818}, {"GL_LUMINANCE_FLOAT32_APPLE", 0x8818}, {"GL_LUMINANCE_FLOAT32_ATI", 0x8818}, {"GL_LUMINANCE_ALPHA32F_ARB", 0x8819}, {"GL_LUMINANCE_ALPHA_FLOAT32_APPLE", 0x8819}, {"GL_LUMINANCE_ALPHA_FLOAT32_ATI", 0x8819}, {"GL_RGBA16F", 0x881A}, {"GL_RGBA16F_ARB", 0x881A}, {"GL_RGBA16F_EXT", 0x881A}, {"GL_RGBA_FLOAT16_APPLE", 0x881A}, {"GL_RGBA_FLOAT16_ATI", 0x881A}, {"GL_RGB16F", 0x881B}, {"GL_RGB16F_ARB", 0x881B}, {"GL_RGB16F_EXT", 0x881B}, {"GL_RGB_FLOAT16_APPLE", 0x881B}, {"GL_RGB_FLOAT16_ATI", 0x881B}, {"GL_ALPHA16F_ARB", 0x881C}, {"GL_ALPHA_FLOAT16_APPLE", 0x881C}, {"GL_ALPHA_FLOAT16_ATI", 0x881C}, {"GL_INTENSITY16F_ARB", 0x881D}, {"GL_INTENSITY_FLOAT16_APPLE", 0x881D}, {"GL_INTENSITY_FLOAT16_ATI", 0x881D}, {"GL_LUMINANCE16F_ARB", 0x881E}, {"GL_LUMINANCE_FLOAT16_APPLE", 0x881E}, {"GL_LUMINANCE_FLOAT16_ATI", 0x881E}, {"GL_LUMINANCE_ALPHA16F_ARB", 0x881F}, {"GL_LUMINANCE_ALPHA_FLOAT16_APPLE", 0x881F}, {"GL_LUMINANCE_ALPHA_FLOAT16_ATI", 0x881F}, {"GL_RGBA_FLOAT_MODE_ARB", 0x8820}, {"GL_RGBA_FLOAT_MODE_ATI", 0x8820}, {"GL_WRITEONLY_RENDERING_QCOM", 0x8823}, {"GL_MAX_DRAW_BUFFERS", 0x8824}, {"GL_MAX_DRAW_BUFFERS_ARB", 0x8824}, {"GL_MAX_DRAW_BUFFERS_ATI", 0x8824}, {"GL_MAX_DRAW_BUFFERS_EXT", 0x8824}, {"GL_MAX_DRAW_BUFFERS_NV", 0x8824}, {"GL_DRAW_BUFFER0", 0x8825}, {"GL_DRAW_BUFFER0_ARB", 0x8825}, {"GL_DRAW_BUFFER0_ATI", 0x8825}, {"GL_DRAW_BUFFER0_EXT", 0x8825}, {"GL_DRAW_BUFFER0_NV", 0x8825}, {"GL_DRAW_BUFFER1", 0x8826}, {"GL_DRAW_BUFFER1_ARB", 0x8826}, {"GL_DRAW_BUFFER1_ATI", 0x8826}, {"GL_DRAW_BUFFER1_EXT", 0x8826}, {"GL_DRAW_BUFFER1_NV", 0x8826}, {"GL_DRAW_BUFFER2", 0x8827}, {"GL_DRAW_BUFFER2_ARB", 0x8827}, {"GL_DRAW_BUFFER2_ATI", 0x8827}, {"GL_DRAW_BUFFER2_EXT", 0x8827}, {"GL_DRAW_BUFFER2_NV", 0x8827}, {"GL_DRAW_BUFFER3", 0x8828}, {"GL_DRAW_BUFFER3_ARB", 0x8828}, {"GL_DRAW_BUFFER3_ATI", 0x8828}, {"GL_DRAW_BUFFER3_EXT", 0x8828}, {"GL_DRAW_BUFFER3_NV", 0x8828}, {"GL_DRAW_BUFFER4", 0x8829}, {"GL_DRAW_BUFFER4_ARB", 0x8829}, {"GL_DRAW_BUFFER4_ATI", 0x8829}, {"GL_DRAW_BUFFER4_EXT", 0x8829}, {"GL_DRAW_BUFFER4_NV", 0x8829}, {"GL_DRAW_BUFFER5", 0x882A}, {"GL_DRAW_BUFFER5_ARB", 0x882A}, {"GL_DRAW_BUFFER5_ATI", 0x882A}, {"GL_DRAW_BUFFER5_EXT", 0x882A}, {"GL_DRAW_BUFFER5_NV", 0x882A}, {"GL_DRAW_BUFFER6", 0x882B}, {"GL_DRAW_BUFFER6_ARB", 0x882B}, {"GL_DRAW_BUFFER6_ATI", 0x882B}, {"GL_DRAW_BUFFER6_EXT", 0x882B}, {"GL_DRAW_BUFFER6_NV", 0x882B}, {"GL_DRAW_BUFFER7", 0x882C}, {"GL_DRAW_BUFFER7_ARB", 0x882C}, {"GL_DRAW_BUFFER7_ATI", 0x882C}, {"GL_DRAW_BUFFER7_EXT", 0x882C}, {"GL_DRAW_BUFFER7_NV", 0x882C}, {"GL_DRAW_BUFFER8", 0x882D}, {"GL_DRAW_BUFFER8_ARB", 0x882D}, {"GL_DRAW_BUFFER8_ATI", 0x882D}, {"GL_DRAW_BUFFER8_EXT", 0x882D}, {"GL_DRAW_BUFFER8_NV", 0x882D}, {"GL_DRAW_BUFFER9", 0x882E}, {"GL_DRAW_BUFFER9_ARB", 0x882E}, {"GL_DRAW_BUFFER9_ATI", 0x882E}, {"GL_DRAW_BUFFER9_EXT", 0x882E}, {"GL_DRAW_BUFFER9_NV", 0x882E}, {"GL_DRAW_BUFFER10", 0x882F}, {"GL_DRAW_BUFFER10_ARB", 0x882F}, {"GL_DRAW_BUFFER10_ATI", 0x882F}, {"GL_DRAW_BUFFER10_EXT", 0x882F}, {"GL_DRAW_BUFFER10_NV", 0x882F}, {"GL_DRAW_BUFFER11", 0x8830}, {"GL_DRAW_BUFFER11_ARB", 0x8830}, {"GL_DRAW_BUFFER11_ATI", 0x8830}, {"GL_DRAW_BUFFER11_EXT", 0x8830}, {"GL_DRAW_BUFFER11_NV", 0x8830}, {"GL_DRAW_BUFFER12", 0x8831}, {"GL_DRAW_BUFFER12_ARB", 0x8831}, {"GL_DRAW_BUFFER12_ATI", 0x8831}, {"GL_DRAW_BUFFER12_EXT", 0x8831}, {"GL_DRAW_BUFFER12_NV", 0x8831}, {"GL_DRAW_BUFFER13", 0x8832}, {"GL_DRAW_BUFFER13_ARB", 0x8832}, {"GL_DRAW_BUFFER13_ATI", 0x8832}, {"GL_DRAW_BUFFER13_EXT", 0x8832}, {"GL_DRAW_BUFFER13_NV", 0x8832}, {"GL_DRAW_BUFFER14", 0x8833}, {"GL_DRAW_BUFFER14_ARB", 0x8833}, {"GL_DRAW_BUFFER14_ATI", 0x8833}, {"GL_DRAW_BUFFER14_EXT", 0x8833}, {"GL_DRAW_BUFFER14_NV", 0x8833}, {"GL_DRAW_BUFFER15", 0x8834}, {"GL_DRAW_BUFFER15_ARB", 0x8834}, {"GL_DRAW_BUFFER15_ATI", 0x8834}, {"GL_DRAW_BUFFER15_EXT", 0x8834}, {"GL_DRAW_BUFFER15_NV", 0x8834}, {"GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI", 0x8835}, {"GL_BLEND_EQUATION_ALPHA", 0x883D}, {"GL_BLEND_EQUATION_ALPHA_EXT", 0x883D}, {"GL_BLEND_EQUATION_ALPHA_OES", 0x883D}, {"GL_SUBSAMPLE_DISTANCE_AMD", 0x883F}, {"GL_MATRIX_PALETTE_ARB", 0x8840}, {"GL_MATRIX_PALETTE_OES", 0x8840}, {"GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB", 0x8841}, {"GL_MAX_PALETTE_MATRICES_ARB", 0x8842}, {"GL_MAX_PALETTE_MATRICES_OES", 0x8842}, {"GL_CURRENT_PALETTE_MATRIX_ARB", 0x8843}, {"GL_CURRENT_PALETTE_MATRIX_OES", 0x8843}, {"GL_MATRIX_INDEX_ARRAY_ARB", 0x8844}, {"GL_MATRIX_INDEX_ARRAY_OES", 0x8844}, {"GL_CURRENT_MATRIX_INDEX_ARB", 0x8845}, {"GL_MATRIX_INDEX_ARRAY_SIZE_ARB", 0x8846}, {"GL_MATRIX_INDEX_ARRAY_SIZE_OES", 0x8846}, {"GL_MATRIX_INDEX_ARRAY_TYPE_ARB", 0x8847}, {"GL_MATRIX_INDEX_ARRAY_TYPE_OES", 0x8847}, {"GL_MATRIX_INDEX_ARRAY_STRIDE_ARB", 0x8848}, {"GL_MATRIX_INDEX_ARRAY_STRIDE_OES", 0x8848}, {"GL_MATRIX_INDEX_ARRAY_POINTER_ARB", 0x8849}, {"GL_MATRIX_INDEX_ARRAY_POINTER_OES", 0x8849}, {"GL_TEXTURE_DEPTH_SIZE", 0x884A}, {"GL_TEXTURE_DEPTH_SIZE_ARB", 0x884A}, {"GL_DEPTH_TEXTURE_MODE", 0x884B}, {"GL_DEPTH_TEXTURE_MODE_ARB", 0x884B}, {"GL_TEXTURE_COMPARE_MODE", 0x884C}, {"GL_TEXTURE_COMPARE_MODE_ARB", 0x884C}, {"GL_TEXTURE_COMPARE_MODE_EXT", 0x884C}, {"GL_TEXTURE_COMPARE_FUNC", 0x884D}, {"GL_TEXTURE_COMPARE_FUNC_ARB", 0x884D}, {"GL_TEXTURE_COMPARE_FUNC_EXT", 0x884D}, {"GL_COMPARE_R_TO_TEXTURE", 0x884E}, {"GL_COMPARE_R_TO_TEXTURE_ARB", 0x884E}, {"GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT", 0x884E}, {"GL_COMPARE_REF_TO_TEXTURE", 0x884E}, {"GL_COMPARE_REF_TO_TEXTURE_EXT", 0x884E}, {"GL_TEXTURE_CUBE_MAP_SEAMLESS", 0x884F}, {"GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV", 0x8850}, {"GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV", 0x8851}, {"GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV", 0x8852}, {"GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV", 0x8853}, {"GL_OFFSET_HILO_TEXTURE_2D_NV", 0x8854}, {"GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV", 0x8855}, {"GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV", 0x8856}, {"GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV", 0x8857}, {"GL_DEPENDENT_HILO_TEXTURE_2D_NV", 0x8858}, {"GL_DEPENDENT_RGB_TEXTURE_3D_NV", 0x8859}, {"GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV", 0x885A}, {"GL_DOT_PRODUCT_PASS_THROUGH_NV", 0x885B}, {"GL_DOT_PRODUCT_TEXTURE_1D_NV", 0x885C}, {"GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV", 0x885D}, {"GL_HILO8_NV", 0x885E}, {"GL_SIGNED_HILO8_NV", 0x885F}, {"GL_FORCE_BLUE_TO_ONE_NV", 0x8860}, {"GL_POINT_SPRITE", 0x8861}, {"GL_POINT_SPRITE_ARB", 0x8861}, {"GL_POINT_SPRITE_NV", 0x8861}, {"GL_POINT_SPRITE_OES", 0x8861}, {"GL_COORD_REPLACE", 0x8862}, {"GL_COORD_REPLACE_ARB", 0x8862}, {"GL_COORD_REPLACE_NV", 0x8862}, {"GL_COORD_REPLACE_OES", 0x8862}, {"GL_POINT_SPRITE_R_MODE_NV", 0x8863}, {"GL_PIXEL_COUNTER_BITS_NV", 0x8864}, {"GL_QUERY_COUNTER_BITS", 0x8864}, {"GL_QUERY_COUNTER_BITS_ARB", 0x8864}, {"GL_QUERY_COUNTER_BITS_EXT", 0x8864}, {"GL_CURRENT_OCCLUSION_QUERY_ID_NV", 0x8865}, {"GL_CURRENT_QUERY", 0x8865}, {"GL_CURRENT_QUERY_ARB", 0x8865}, {"GL_CURRENT_QUERY_EXT", 0x8865}, {"GL_PIXEL_COUNT_NV", 0x8866}, {"GL_QUERY_RESULT", 0x8866}, {"GL_QUERY_RESULT_ARB", 0x8866}, {"GL_QUERY_RESULT_EXT", 0x8866}, {"GL_PIXEL_COUNT_AVAILABLE_NV", 0x8867}, {"GL_QUERY_RESULT_AVAILABLE", 0x8867}, {"GL_QUERY_RESULT_AVAILABLE_ARB", 0x8867}, {"GL_QUERY_RESULT_AVAILABLE_EXT", 0x8867}, {"GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV", 0x8868}, {"GL_MAX_VERTEX_ATTRIBS", 0x8869}, {"GL_MAX_VERTEX_ATTRIBS_ARB", 0x8869}, {"GL_VERTEX_ATTRIB_ARRAY_NORMALIZED", 0x886A}, {"GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB", 0x886A}, {"GL_MAX_TESS_CONTROL_INPUT_COMPONENTS", 0x886C}, {"GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS", 0x886D}, {"GL_DEPTH_STENCIL_TO_RGBA_NV", 0x886E}, {"GL_DEPTH_STENCIL_TO_BGRA_NV", 0x886F}, {"GL_FRAGMENT_PROGRAM_NV", 0x8870}, {"GL_MAX_TEXTURE_COORDS", 0x8871}, {"GL_MAX_TEXTURE_COORDS_ARB", 0x8871}, {"GL_MAX_TEXTURE_COORDS_NV", 0x8871}, {"GL_MAX_TEXTURE_IMAGE_UNITS", 0x8872}, {"GL_MAX_TEXTURE_IMAGE_UNITS_ARB", 0x8872}, {"GL_MAX_TEXTURE_IMAGE_UNITS_NV", 0x8872}, {"GL_FRAGMENT_PROGRAM_BINDING_NV", 0x8873}, {"GL_PROGRAM_ERROR_STRING_ARB", 0x8874}, {"GL_PROGRAM_ERROR_STRING_NV", 0x8874}, {"GL_PROGRAM_FORMAT_ASCII_ARB", 0x8875}, {"GL_PROGRAM_FORMAT_ARB", 0x8876}, {"GL_WRITE_PIXEL_DATA_RANGE_NV", 0x8878}, {"GL_READ_PIXEL_DATA_RANGE_NV", 0x8879}, {"GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV", 0x887A}, {"GL_READ_PIXEL_DATA_RANGE_LENGTH_NV", 0x887B}, {"GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV", 0x887C}, {"GL_READ_PIXEL_DATA_RANGE_POINTER_NV", 0x887D}, {"GL_GEOMETRY_SHADER_INVOCATIONS", 0x887F}, {"GL_FLOAT_R_NV", 0x8880}, {"GL_FLOAT_RG_NV", 0x8881}, {"GL_FLOAT_RGB_NV", 0x8882}, {"GL_FLOAT_RGBA_NV", 0x8883}, {"GL_FLOAT_R16_NV", 0x8884}, {"GL_FLOAT_R32_NV", 0x8885}, {"GL_FLOAT_RG16_NV", 0x8886}, {"GL_FLOAT_RG32_NV", 0x8887}, {"GL_FLOAT_RGB16_NV", 0x8888}, {"GL_FLOAT_RGB32_NV", 0x8889}, {"GL_FLOAT_RGBA16_NV", 0x888A}, {"GL_FLOAT_RGBA32_NV", 0x888B}, {"GL_TEXTURE_FLOAT_COMPONENTS_NV", 0x888C}, {"GL_FLOAT_CLEAR_COLOR_VALUE_NV", 0x888D}, {"GL_FLOAT_RGBA_MODE_NV", 0x888E}, {"GL_TEXTURE_UNSIGNED_REMAP_MODE_NV", 0x888F}, {"GL_DEPTH_BOUNDS_TEST_EXT", 0x8890}, {"GL_DEPTH_BOUNDS_EXT", 0x8891}, {"GL_ARRAY_BUFFER", 0x8892}, {"GL_ARRAY_BUFFER_ARB", 0x8892}, {"GL_ELEMENT_ARRAY_BUFFER", 0x8893}, {"GL_ELEMENT_ARRAY_BUFFER_ARB", 0x8893}, {"GL_ARRAY_BUFFER_BINDING", 0x8894}, {"GL_ARRAY_BUFFER_BINDING_ARB", 0x8894}, {"GL_ELEMENT_ARRAY_BUFFER_BINDING", 0x8895}, {"GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB", 0x8895}, {"GL_VERTEX_ARRAY_BUFFER_BINDING", 0x8896}, {"GL_VERTEX_ARRAY_BUFFER_BINDING_ARB", 0x8896}, {"GL_NORMAL_ARRAY_BUFFER_BINDING", 0x8897}, {"GL_NORMAL_ARRAY_BUFFER_BINDING_ARB", 0x8897}, {"GL_COLOR_ARRAY_BUFFER_BINDING", 0x8898}, {"GL_COLOR_ARRAY_BUFFER_BINDING_ARB", 0x8898}, {"GL_INDEX_ARRAY_BUFFER_BINDING", 0x8899}, {"GL_INDEX_ARRAY_BUFFER_BINDING_ARB", 0x8899}, {"GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING", 0x889A}, {"GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB", 0x889A}, {"GL_EDGE_FLAG_ARRAY_BUFFER_BINDING", 0x889B}, {"GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB", 0x889B}, {"GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING", 0x889C}, {"GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB", 0x889C}, {"GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB", 0x889D}, {"GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING", 0x889D}, {"GL_FOG_COORD_ARRAY_BUFFER_BINDING", 0x889D}, {"GL_WEIGHT_ARRAY_BUFFER_BINDING", 0x889E}, {"GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB", 0x889E}, {"GL_WEIGHT_ARRAY_BUFFER_BINDING_OES", 0x889E}, {"GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING", 0x889F}, {"GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB", 0x889F}, {"GL_PROGRAM_INSTRUCTIONS_ARB", 0x88A0}, {"GL_MAX_PROGRAM_INSTRUCTIONS_ARB", 0x88A1}, {"GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB", 0x88A2}, {"GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB", 0x88A3}, {"GL_PROGRAM_TEMPORARIES_ARB", 0x88A4}, {"GL_MAX_PROGRAM_TEMPORARIES_ARB", 0x88A5}, {"GL_PROGRAM_NATIVE_TEMPORARIES_ARB", 0x88A6}, {"GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB", 0x88A7}, {"GL_PROGRAM_PARAMETERS_ARB", 0x88A8}, {"GL_MAX_PROGRAM_PARAMETERS_ARB", 0x88A9}, {"GL_PROGRAM_NATIVE_PARAMETERS_ARB", 0x88AA}, {"GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB", 0x88AB}, {"GL_PROGRAM_ATTRIBS_ARB", 0x88AC}, {"GL_MAX_PROGRAM_ATTRIBS_ARB", 0x88AD}, {"GL_PROGRAM_NATIVE_ATTRIBS_ARB", 0x88AE}, {"GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB", 0x88AF}, {"GL_PROGRAM_ADDRESS_REGISTERS_ARB", 0x88B0}, {"GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB", 0x88B1}, {"GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB", 0x88B2}, {"GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB", 0x88B3}, {"GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB", 0x88B4}, {"GL_MAX_PROGRAM_ENV_PARAMETERS_ARB", 0x88B5}, {"GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB", 0x88B6}, {"GL_TRANSPOSE_CURRENT_MATRIX_ARB", 0x88B7}, {"GL_READ_ONLY", 0x88B8}, {"GL_READ_ONLY_ARB", 0x88B8}, {"GL_WRITE_ONLY", 0x88B9}, {"GL_WRITE_ONLY_ARB", 0x88B9}, {"GL_WRITE_ONLY_OES", 0x88B9}, {"GL_READ_WRITE", 0x88BA}, {"GL_READ_WRITE_ARB", 0x88BA}, {"GL_BUFFER_ACCESS", 0x88BB}, {"GL_BUFFER_ACCESS_ARB", 0x88BB}, {"GL_BUFFER_ACCESS_OES", 0x88BB}, {"GL_BUFFER_MAPPED", 0x88BC}, {"GL_BUFFER_MAPPED_ARB", 0x88BC}, {"GL_BUFFER_MAPPED_OES", 0x88BC}, {"GL_BUFFER_MAP_POINTER", 0x88BD}, {"GL_BUFFER_MAP_POINTER_ARB", 0x88BD}, {"GL_BUFFER_MAP_POINTER_OES", 0x88BD}, {"GL_WRITE_DISCARD_NV", 0x88BE}, {"GL_TIME_ELAPSED", 0x88BF}, {"GL_TIME_ELAPSED_EXT", 0x88BF}, {"GL_MATRIX0_ARB", 0x88C0}, {"GL_MATRIX1_ARB", 0x88C1}, {"GL_MATRIX2_ARB", 0x88C2}, {"GL_MATRIX3_ARB", 0x88C3}, {"GL_MATRIX4_ARB", 0x88C4}, {"GL_MATRIX5_ARB", 0x88C5}, {"GL_MATRIX6_ARB", 0x88C6}, {"GL_MATRIX7_ARB", 0x88C7}, {"GL_MATRIX8_ARB", 0x88C8}, {"GL_MATRIX9_ARB", 0x88C9}, {"GL_MATRIX10_ARB", 0x88CA}, {"GL_MATRIX11_ARB", 0x88CB}, {"GL_MATRIX12_ARB", 0x88CC}, {"GL_MATRIX13_ARB", 0x88CD}, {"GL_MATRIX14_ARB", 0x88CE}, {"GL_MATRIX15_ARB", 0x88CF}, {"GL_MATRIX16_ARB", 0x88D0}, {"GL_MATRIX17_ARB", 0x88D1}, {"GL_MATRIX18_ARB", 0x88D2}, {"GL_MATRIX19_ARB", 0x88D3}, {"GL_MATRIX20_ARB", 0x88D4}, {"GL_MATRIX21_ARB", 0x88D5}, {"GL_MATRIX22_ARB", 0x88D6}, {"GL_MATRIX23_ARB", 0x88D7}, {"GL_MATRIX24_ARB", 0x88D8}, {"GL_MATRIX25_ARB", 0x88D9}, {"GL_MATRIX26_ARB", 0x88DA}, {"GL_MATRIX27_ARB", 0x88DB}, {"GL_MATRIX28_ARB", 0x88DC}, {"GL_MATRIX29_ARB", 0x88DD}, {"GL_MATRIX30_ARB", 0x88DE}, {"GL_MATRIX31_ARB", 0x88DF}, {"GL_STREAM_DRAW", 0x88E0}, {"GL_STREAM_DRAW_ARB", 0x88E0}, {"GL_STREAM_READ", 0x88E1}, {"GL_STREAM_READ_ARB", 0x88E1}, {"GL_STREAM_COPY", 0x88E2}, {"GL_STREAM_COPY_ARB", 0x88E2}, {"GL_STATIC_DRAW", 0x88E4}, {"GL_STATIC_DRAW_ARB", 0x88E4}, {"GL_STATIC_READ", 0x88E5}, {"GL_STATIC_READ_ARB", 0x88E5}, {"GL_STATIC_COPY", 0x88E6}, {"GL_STATIC_COPY_ARB", 0x88E6}, {"GL_DYNAMIC_DRAW", 0x88E8}, {"GL_DYNAMIC_DRAW_ARB", 0x88E8}, {"GL_DYNAMIC_READ", 0x88E9}, {"GL_DYNAMIC_READ_ARB", 0x88E9}, {"GL_DYNAMIC_COPY", 0x88EA}, {"GL_DYNAMIC_COPY_ARB", 0x88EA}, {"GL_PIXEL_PACK_BUFFER", 0x88EB}, {"GL_PIXEL_PACK_BUFFER_ARB", 0x88EB}, {"GL_PIXEL_PACK_BUFFER_EXT", 0x88EB}, {"GL_PIXEL_UNPACK_BUFFER", 0x88EC}, {"GL_PIXEL_UNPACK_BUFFER_ARB", 0x88EC}, {"GL_PIXEL_UNPACK_BUFFER_EXT", 0x88EC}, {"GL_PIXEL_PACK_BUFFER_BINDING", 0x88ED}, {"GL_PIXEL_PACK_BUFFER_BINDING_ARB", 0x88ED}, {"GL_PIXEL_PACK_BUFFER_BINDING_EXT", 0x88ED}, {"GL_ETC1_SRGB8_NV", 0x88EE}, {"GL_PIXEL_UNPACK_BUFFER_BINDING", 0x88EF}, {"GL_PIXEL_UNPACK_BUFFER_BINDING_ARB", 0x88EF}, {"GL_PIXEL_UNPACK_BUFFER_BINDING_EXT", 0x88EF}, {"GL_DEPTH24_STENCIL8", 0x88F0}, {"GL_DEPTH24_STENCIL8_EXT", 0x88F0}, {"GL_DEPTH24_STENCIL8_OES", 0x88F0}, {"GL_TEXTURE_STENCIL_SIZE", 0x88F1}, {"GL_TEXTURE_STENCIL_SIZE_EXT", 0x88F1}, {"GL_STENCIL_TAG_BITS_EXT", 0x88F2}, {"GL_STENCIL_CLEAR_TAG_VALUE_EXT", 0x88F3}, {"GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV", 0x88F4}, {"GL_MAX_PROGRAM_CALL_DEPTH_NV", 0x88F5}, {"GL_MAX_PROGRAM_IF_DEPTH_NV", 0x88F6}, {"GL_MAX_PROGRAM_LOOP_DEPTH_NV", 0x88F7}, {"GL_MAX_PROGRAM_LOOP_COUNT_NV", 0x88F8}, {"GL_SRC1_COLOR", 0x88F9}, {"GL_ONE_MINUS_SRC1_COLOR", 0x88FA}, {"GL_ONE_MINUS_SRC1_ALPHA", 0x88FB}, {"GL_MAX_DUAL_SOURCE_DRAW_BUFFERS", 0x88FC}, {"GL_VERTEX_ATTRIB_ARRAY_INTEGER", 0x88FD}, {"GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT", 0x88FD}, {"GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV", 0x88FD}, {"GL_VERTEX_ATTRIB_ARRAY_DIVISOR", 0x88FE}, {"GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE", 0x88FE}, {"GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB", 0x88FE}, {"GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV", 0x88FE}, {"GL_MAX_ARRAY_TEXTURE_LAYERS", 0x88FF}, {"GL_MAX_ARRAY_TEXTURE_LAYERS_EXT", 0x88FF}, {"GL_MIN_PROGRAM_TEXEL_OFFSET", 0x8904}, {"GL_MIN_PROGRAM_TEXEL_OFFSET_EXT", 0x8904}, {"GL_MIN_PROGRAM_TEXEL_OFFSET_NV", 0x8904}, {"GL_MAX_PROGRAM_TEXEL_OFFSET", 0x8905}, {"GL_MAX_PROGRAM_TEXEL_OFFSET_EXT", 0x8905}, {"GL_MAX_PROGRAM_TEXEL_OFFSET_NV", 0x8905}, {"GL_PROGRAM_ATTRIB_COMPONENTS_NV", 0x8906}, {"GL_PROGRAM_RESULT_COMPONENTS_NV", 0x8907}, {"GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV", 0x8908}, {"GL_MAX_PROGRAM_RESULT_COMPONENTS_NV", 0x8909}, {"GL_STENCIL_TEST_TWO_SIDE_EXT", 0x8910}, {"GL_ACTIVE_STENCIL_FACE_EXT", 0x8911}, {"GL_MIRROR_CLAMP_TO_BORDER_EXT", 0x8912}, {"GL_SAMPLES_PASSED", 0x8914}, {"GL_SAMPLES_PASSED_ARB", 0x8914}, {"GL_GEOMETRY_VERTICES_OUT", 0x8916}, {"GL_GEOMETRY_INPUT_TYPE", 0x8917}, {"GL_GEOMETRY_OUTPUT_TYPE", 0x8918}, {"GL_SAMPLER_BINDING", 0x8919}, {"GL_CLAMP_VERTEX_COLOR", 0x891A}, {"GL_CLAMP_VERTEX_COLOR_ARB", 0x891A}, {"GL_CLAMP_FRAGMENT_COLOR", 0x891B}, {"GL_CLAMP_FRAGMENT_COLOR_ARB", 0x891B}, {"GL_CLAMP_READ_COLOR", 0x891C}, {"GL_CLAMP_READ_COLOR_ARB", 0x891C}, {"GL_FIXED_ONLY", 0x891D}, {"GL_FIXED_ONLY_ARB", 0x891D}, {"GL_TESS_CONTROL_PROGRAM_NV", 0x891E}, {"GL_TESS_EVALUATION_PROGRAM_NV", 0x891F}, {"GL_FRAGMENT_SHADER_ATI", 0x8920}, {"GL_REG_0_ATI", 0x8921}, {"GL_REG_1_ATI", 0x8922}, {"GL_REG_2_ATI", 0x8923}, {"GL_REG_3_ATI", 0x8924}, {"GL_REG_4_ATI", 0x8925}, {"GL_REG_5_ATI", 0x8926}, {"GL_REG_6_ATI", 0x8927}, {"GL_REG_7_ATI", 0x8928}, {"GL_REG_8_ATI", 0x8929}, {"GL_REG_9_ATI", 0x892A}, {"GL_REG_10_ATI", 0x892B}, {"GL_REG_11_ATI", 0x892C}, {"GL_REG_12_ATI", 0x892D}, {"GL_REG_13_ATI", 0x892E}, {"GL_REG_14_ATI", 0x892F}, {"GL_REG_15_ATI", 0x8930}, {"GL_REG_16_ATI", 0x8931}, {"GL_REG_17_ATI", 0x8932}, {"GL_REG_18_ATI", 0x8933}, {"GL_REG_19_ATI", 0x8934}, {"GL_REG_20_ATI", 0x8935}, {"GL_REG_21_ATI", 0x8936}, {"GL_REG_22_ATI", 0x8937}, {"GL_REG_23_ATI", 0x8938}, {"GL_REG_24_ATI", 0x8939}, {"GL_REG_25_ATI", 0x893A}, {"GL_REG_26_ATI", 0x893B}, {"GL_REG_27_ATI", 0x893C}, {"GL_REG_28_ATI", 0x893D}, {"GL_REG_29_ATI", 0x893E}, {"GL_REG_30_ATI", 0x893F}, {"GL_REG_31_ATI", 0x8940}, {"GL_CON_0_ATI", 0x8941}, {"GL_CON_1_ATI", 0x8942}, {"GL_CON_2_ATI", 0x8943}, {"GL_CON_3_ATI", 0x8944}, {"GL_CON_4_ATI", 0x8945}, {"GL_CON_5_ATI", 0x8946}, {"GL_CON_6_ATI", 0x8947}, {"GL_CON_7_ATI", 0x8948}, {"GL_CON_8_ATI", 0x8949}, {"GL_CON_9_ATI", 0x894A}, {"GL_CON_10_ATI", 0x894B}, {"GL_CON_11_ATI", 0x894C}, {"GL_CON_12_ATI", 0x894D}, {"GL_CON_13_ATI", 0x894E}, {"GL_CON_14_ATI", 0x894F}, {"GL_CON_15_ATI", 0x8950}, {"GL_CON_16_ATI", 0x8951}, {"GL_CON_17_ATI", 0x8952}, {"GL_CON_18_ATI", 0x8953}, {"GL_CON_19_ATI", 0x8954}, {"GL_CON_20_ATI", 0x8955}, {"GL_CON_21_ATI", 0x8956}, {"GL_CON_22_ATI", 0x8957}, {"GL_CON_23_ATI", 0x8958}, {"GL_CON_24_ATI", 0x8959}, {"GL_CON_25_ATI", 0x895A}, {"GL_CON_26_ATI", 0x895B}, {"GL_CON_27_ATI", 0x895C}, {"GL_CON_28_ATI", 0x895D}, {"GL_CON_29_ATI", 0x895E}, {"GL_CON_30_ATI", 0x895F}, {"GL_CON_31_ATI", 0x8960}, {"GL_MOV_ATI", 0x8961}, {"GL_ADD_ATI", 0x8963}, {"GL_MUL_ATI", 0x8964}, {"GL_SUB_ATI", 0x8965}, {"GL_DOT3_ATI", 0x8966}, {"GL_DOT4_ATI", 0x8967}, {"GL_MAD_ATI", 0x8968}, {"GL_LERP_ATI", 0x8969}, {"GL_CND_ATI", 0x896A}, {"GL_CND0_ATI", 0x896B}, {"GL_DOT2_ADD_ATI", 0x896C}, {"GL_SECONDARY_INTERPOLATOR_ATI", 0x896D}, {"GL_NUM_FRAGMENT_REGISTERS_ATI", 0x896E}, {"GL_NUM_FRAGMENT_CONSTANTS_ATI", 0x896F}, {"GL_NUM_PASSES_ATI", 0x8970}, {"GL_NUM_INSTRUCTIONS_PER_PASS_ATI", 0x8971}, {"GL_NUM_INSTRUCTIONS_TOTAL_ATI", 0x8972}, {"GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI", 0x8973}, {"GL_NUM_LOOPBACK_COMPONENTS_ATI", 0x8974}, {"GL_COLOR_ALPHA_PAIRING_ATI", 0x8975}, {"GL_SWIZZLE_STR_ATI", 0x8976}, {"GL_SWIZZLE_STQ_ATI", 0x8977}, {"GL_SWIZZLE_STR_DR_ATI", 0x8978}, {"GL_SWIZZLE_STQ_DQ_ATI", 0x8979}, {"GL_SWIZZLE_STRQ_ATI", 0x897A}, {"GL_SWIZZLE_STRQ_DQ_ATI", 0x897B}, {"GL_INTERLACE_OML", 0x8980}, {"GL_INTERLACE_READ_OML", 0x8981}, {"GL_FORMAT_SUBSAMPLE_24_24_OML", 0x8982}, {"GL_FORMAT_SUBSAMPLE_244_244_OML", 0x8983}, {"GL_PACK_RESAMPLE_OML", 0x8984}, {"GL_UNPACK_RESAMPLE_OML", 0x8985}, {"GL_RESAMPLE_REPLICATE_OML", 0x8986}, {"GL_RESAMPLE_ZERO_FILL_OML", 0x8987}, {"GL_RESAMPLE_AVERAGE_OML", 0x8988}, {"GL_RESAMPLE_DECIMATE_OML", 0x8989}, {"GL_POINT_SIZE_ARRAY_TYPE_OES", 0x898A}, {"GL_POINT_SIZE_ARRAY_STRIDE_OES", 0x898B}, {"GL_POINT_SIZE_ARRAY_POINTER_OES", 0x898C}, {"GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES", 0x898D}, {"GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES", 0x898E}, {"GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES", 0x898F}, {"GL_VERTEX_ATTRIB_MAP1_APPLE", 0x8A00}, {"GL_VERTEX_ATTRIB_MAP2_APPLE", 0x8A01}, {"GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE", 0x8A02}, {"GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE", 0x8A03}, {"GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE", 0x8A04}, {"GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE", 0x8A05}, {"GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE", 0x8A06}, {"GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE", 0x8A07}, {"GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE", 0x8A08}, {"GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE", 0x8A09}, {"GL_DRAW_PIXELS_APPLE", 0x8A0A}, {"GL_FENCE_APPLE", 0x8A0B}, {"GL_ELEMENT_ARRAY_APPLE", 0x8A0C}, {"GL_ELEMENT_ARRAY_TYPE_APPLE", 0x8A0D}, {"GL_ELEMENT_ARRAY_POINTER_APPLE", 0x8A0E}, {"GL_COLOR_FLOAT_APPLE", 0x8A0F}, {"GL_UNIFORM_BUFFER", 0x8A11}, {"GL_BUFFER_SERIALIZED_MODIFY_APPLE", 0x8A12}, {"GL_BUFFER_FLUSHING_UNMAP_APPLE", 0x8A13}, {"GL_AUX_DEPTH_STENCIL_APPLE", 0x8A14}, {"GL_PACK_ROW_BYTES_APPLE", 0x8A15}, {"GL_UNPACK_ROW_BYTES_APPLE", 0x8A16}, {"GL_RELEASED_APPLE", 0x8A19}, {"GL_VOLATILE_APPLE", 0x8A1A}, {"GL_RETAINED_APPLE", 0x8A1B}, {"GL_UNDEFINED_APPLE", 0x8A1C}, {"GL_PURGEABLE_APPLE", 0x8A1D}, {"GL_RGB_422_APPLE", 0x8A1F}, {"GL_UNIFORM_BUFFER_BINDING", 0x8A28}, {"GL_UNIFORM_BUFFER_START", 0x8A29}, {"GL_UNIFORM_BUFFER_SIZE", 0x8A2A}, {"GL_MAX_VERTEX_UNIFORM_BLOCKS", 0x8A2B}, {"GL_MAX_GEOMETRY_UNIFORM_BLOCKS", 0x8A2C}, {"GL_MAX_FRAGMENT_UNIFORM_BLOCKS", 0x8A2D}, {"GL_MAX_COMBINED_UNIFORM_BLOCKS", 0x8A2E}, {"GL_MAX_UNIFORM_BUFFER_BINDINGS", 0x8A2F}, {"GL_MAX_UNIFORM_BLOCK_SIZE", 0x8A30}, {"GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS", 0x8A31}, {"GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS", 0x8A32}, {"GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS", 0x8A33}, {"GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT", 0x8A34}, {"GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH", 0x8A35}, {"GL_ACTIVE_UNIFORM_BLOCKS", 0x8A36}, {"GL_UNIFORM_TYPE", 0x8A37}, {"GL_UNIFORM_SIZE", 0x8A38}, {"GL_UNIFORM_NAME_LENGTH", 0x8A39}, {"GL_UNIFORM_BLOCK_INDEX", 0x8A3A}, {"GL_UNIFORM_OFFSET", 0x8A3B}, {"GL_UNIFORM_ARRAY_STRIDE", 0x8A3C}, {"GL_UNIFORM_MATRIX_STRIDE", 0x8A3D}, {"GL_UNIFORM_IS_ROW_MAJOR", 0x8A3E}, {"GL_UNIFORM_BLOCK_BINDING", 0x8A3F}, {"GL_UNIFORM_BLOCK_DATA_SIZE", 0x8A40}, {"GL_UNIFORM_BLOCK_NAME_LENGTH", 0x8A41}, {"GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS", 0x8A42}, {"GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES", 0x8A43}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER", 0x8A44}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER", 0x8A45}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER", 0x8A46}, {"GL_TEXTURE_SRGB_DECODE_EXT", 0x8A48}, {"GL_DECODE_EXT", 0x8A49}, {"GL_SKIP_DECODE_EXT", 0x8A4A}, {"GL_PROGRAM_PIPELINE_OBJECT_EXT", 0x8A4F}, {"GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT", 0x8A52}, {"GL_SYNC_OBJECT_APPLE", 0x8A53}, {"GL_FRAGMENT_SHADER", 0x8B30}, {"GL_FRAGMENT_SHADER_ARB", 0x8B30}, {"GL_VERTEX_SHADER", 0x8B31}, {"GL_VERTEX_SHADER_ARB", 0x8B31}, {"GL_PROGRAM_OBJECT_ARB", 0x8B40}, {"GL_PROGRAM_OBJECT_EXT", 0x8B40}, {"GL_SHADER_OBJECT_ARB", 0x8B48}, {"GL_SHADER_OBJECT_EXT", 0x8B48}, {"GL_MAX_FRAGMENT_UNIFORM_COMPONENTS", 0x8B49}, {"GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB", 0x8B49}, {"GL_MAX_VERTEX_UNIFORM_COMPONENTS", 0x8B4A}, {"GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB", 0x8B4A}, {"GL_MAX_VARYING_FLOATS", 0x8B4B}, {"GL_MAX_VARYING_COMPONENTS", 0x8B4B}, {"GL_MAX_VARYING_COMPONENTS_EXT", 0x8B4B}, {"GL_MAX_VARYING_FLOATS_ARB", 0x8B4B}, {"GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS", 0x8B4C}, {"GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB", 0x8B4C}, {"GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS", 0x8B4D}, {"GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB", 0x8B4D}, {"GL_OBJECT_TYPE_ARB", 0x8B4E}, {"GL_SHADER_TYPE", 0x8B4F}, {"GL_OBJECT_SUBTYPE_ARB", 0x8B4F}, {"GL_FLOAT_VEC2", 0x8B50}, {"GL_FLOAT_VEC2_ARB", 0x8B50}, {"GL_FLOAT_VEC3", 0x8B51}, {"GL_FLOAT_VEC3_ARB", 0x8B51}, {"GL_FLOAT_VEC4", 0x8B52}, {"GL_FLOAT_VEC4_ARB", 0x8B52}, {"GL_INT_VEC2", 0x8B53}, {"GL_INT_VEC2_ARB", 0x8B53}, {"GL_INT_VEC3", 0x8B54}, {"GL_INT_VEC3_ARB", 0x8B54}, {"GL_INT_VEC4", 0x8B55}, {"GL_INT_VEC4_ARB", 0x8B55}, {"GL_BOOL", 0x8B56}, {"GL_BOOL_ARB", 0x8B56}, {"GL_BOOL_VEC2", 0x8B57}, {"GL_BOOL_VEC2_ARB", 0x8B57}, {"GL_BOOL_VEC3", 0x8B58}, {"GL_BOOL_VEC3_ARB", 0x8B58}, {"GL_BOOL_VEC4", 0x8B59}, {"GL_BOOL_VEC4_ARB", 0x8B59}, {"GL_FLOAT_MAT2", 0x8B5A}, {"GL_FLOAT_MAT2_ARB", 0x8B5A}, {"GL_FLOAT_MAT3", 0x8B5B}, {"GL_FLOAT_MAT3_ARB", 0x8B5B}, {"GL_FLOAT_MAT4", 0x8B5C}, {"GL_FLOAT_MAT4_ARB", 0x8B5C}, {"GL_SAMPLER_1D", 0x8B5D}, {"GL_SAMPLER_1D_ARB", 0x8B5D}, {"GL_SAMPLER_2D", 0x8B5E}, {"GL_SAMPLER_2D_ARB", 0x8B5E}, {"GL_SAMPLER_3D", 0x8B5F}, {"GL_SAMPLER_3D_ARB", 0x8B5F}, {"GL_SAMPLER_3D_OES", 0x8B5F}, {"GL_SAMPLER_CUBE", 0x8B60}, {"GL_SAMPLER_CUBE_ARB", 0x8B60}, {"GL_SAMPLER_1D_SHADOW", 0x8B61}, {"GL_SAMPLER_1D_SHADOW_ARB", 0x8B61}, {"GL_SAMPLER_2D_SHADOW", 0x8B62}, {"GL_SAMPLER_2D_SHADOW_ARB", 0x8B62}, {"GL_SAMPLER_2D_SHADOW_EXT", 0x8B62}, {"GL_SAMPLER_2D_RECT", 0x8B63}, {"GL_SAMPLER_2D_RECT_ARB", 0x8B63}, {"GL_SAMPLER_2D_RECT_SHADOW", 0x8B64}, {"GL_SAMPLER_2D_RECT_SHADOW_ARB", 0x8B64}, {"GL_FLOAT_MAT2x3", 0x8B65}, {"GL_FLOAT_MAT2x4", 0x8B66}, {"GL_FLOAT_MAT3x2", 0x8B67}, {"GL_FLOAT_MAT3x4", 0x8B68}, {"GL_FLOAT_MAT4x2", 0x8B69}, {"GL_FLOAT_MAT4x3", 0x8B6A}, {"GL_DELETE_STATUS", 0x8B80}, {"GL_OBJECT_DELETE_STATUS_ARB", 0x8B80}, {"GL_COMPILE_STATUS", 0x8B81}, {"GL_OBJECT_COMPILE_STATUS_ARB", 0x8B81}, {"GL_LINK_STATUS", 0x8B82}, {"GL_OBJECT_LINK_STATUS_ARB", 0x8B82}, {"GL_VALIDATE_STATUS", 0x8B83}, {"GL_OBJECT_VALIDATE_STATUS_ARB", 0x8B83}, {"GL_INFO_LOG_LENGTH", 0x8B84}, {"GL_OBJECT_INFO_LOG_LENGTH_ARB", 0x8B84}, {"GL_ATTACHED_SHADERS", 0x8B85}, {"GL_OBJECT_ATTACHED_OBJECTS_ARB", 0x8B85}, {"GL_ACTIVE_UNIFORMS", 0x8B86}, {"GL_OBJECT_ACTIVE_UNIFORMS_ARB", 0x8B86}, {"GL_ACTIVE_UNIFORM_MAX_LENGTH", 0x8B87}, {"GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB", 0x8B87}, {"GL_SHADER_SOURCE_LENGTH", 0x8B88}, {"GL_OBJECT_SHADER_SOURCE_LENGTH_ARB", 0x8B88}, {"GL_ACTIVE_ATTRIBUTES", 0x8B89}, {"GL_OBJECT_ACTIVE_ATTRIBUTES_ARB", 0x8B89}, {"GL_ACTIVE_ATTRIBUTE_MAX_LENGTH", 0x8B8A}, {"GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB", 0x8B8A}, {"GL_FRAGMENT_SHADER_DERIVATIVE_HINT", 0x8B8B}, {"GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB", 0x8B8B}, {"GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES", 0x8B8B}, {"GL_SHADING_LANGUAGE_VERSION", 0x8B8C}, {"GL_SHADING_LANGUAGE_VERSION_ARB", 0x8B8C}, {"GL_CURRENT_PROGRAM", 0x8B8D}, {"GL_ACTIVE_PROGRAM_EXT", 0x8B8D}, {"GL_PALETTE4_RGB8_OES", 0x8B90}, {"GL_PALETTE4_RGBA8_OES", 0x8B91}, {"GL_PALETTE4_R5_G6_B5_OES", 0x8B92}, {"GL_PALETTE4_RGBA4_OES", 0x8B93}, {"GL_PALETTE4_RGB5_A1_OES", 0x8B94}, {"GL_PALETTE8_RGB8_OES", 0x8B95}, {"GL_PALETTE8_RGBA8_OES", 0x8B96}, {"GL_PALETTE8_R5_G6_B5_OES", 0x8B97}, {"GL_PALETTE8_RGBA4_OES", 0x8B98}, {"GL_PALETTE8_RGB5_A1_OES", 0x8B99}, {"GL_IMPLEMENTATION_COLOR_READ_TYPE", 0x8B9A}, {"GL_IMPLEMENTATION_COLOR_READ_TYPE_OES", 0x8B9A}, {"GL_IMPLEMENTATION_COLOR_READ_FORMAT", 0x8B9B}, {"GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES", 0x8B9B}, {"GL_POINT_SIZE_ARRAY_OES", 0x8B9C}, {"GL_TEXTURE_CROP_RECT_OES", 0x8B9D}, {"GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES", 0x8B9E}, {"GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES", 0x8B9F}, {"GL_FRAGMENT_PROGRAM_POSITION_MESA", 0x8BB0}, {"GL_FRAGMENT_PROGRAM_CALLBACK_MESA", 0x8BB1}, {"GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA", 0x8BB2}, {"GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA", 0x8BB3}, {"GL_VERTEX_PROGRAM_CALLBACK_MESA", 0x8BB4}, {"GL_VERTEX_PROGRAM_POSITION_MESA", 0x8BB4}, {"GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA", 0x8BB6}, {"GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA", 0x8BB7}, {"GL_COUNTER_TYPE_AMD", 0x8BC0}, {"GL_COUNTER_RANGE_AMD", 0x8BC1}, {"GL_UNSIGNED_INT64_AMD", 0x8BC2}, {"GL_PERCENTAGE_AMD", 0x8BC3}, {"GL_PERFMON_RESULT_AVAILABLE_AMD", 0x8BC4}, {"GL_PERFMON_RESULT_SIZE_AMD", 0x8BC5}, {"GL_PERFMON_RESULT_AMD", 0x8BC6}, {"GL_TEXTURE_WIDTH_QCOM", 0x8BD2}, {"GL_TEXTURE_HEIGHT_QCOM", 0x8BD3}, {"GL_TEXTURE_DEPTH_QCOM", 0x8BD4}, {"GL_TEXTURE_INTERNAL_FORMAT_QCOM", 0x8BD5}, {"GL_TEXTURE_FORMAT_QCOM", 0x8BD6}, {"GL_TEXTURE_TYPE_QCOM", 0x8BD7}, {"GL_TEXTURE_IMAGE_VALID_QCOM", 0x8BD8}, {"GL_TEXTURE_NUM_LEVELS_QCOM", 0x8BD9}, {"GL_TEXTURE_TARGET_QCOM", 0x8BDA}, {"GL_TEXTURE_OBJECT_VALID_QCOM", 0x8BDB}, {"GL_STATE_RESTORE", 0x8BDC}, {"GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG", 0x8C00}, {"GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG", 0x8C01}, {"GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG", 0x8C02}, {"GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG", 0x8C03}, {"GL_MODULATE_COLOR_IMG", 0x8C04}, {"GL_RECIP_ADD_SIGNED_ALPHA_IMG", 0x8C05}, {"GL_TEXTURE_ALPHA_MODULATE_IMG", 0x8C06}, {"GL_FACTOR_ALPHA_MODULATE_IMG", 0x8C07}, {"GL_FRAGMENT_ALPHA_MODULATE_IMG", 0x8C08}, {"GL_ADD_BLEND_IMG", 0x8C09}, {"GL_SGX_BINARY_IMG", 0x8C0A}, {"GL_TEXTURE_RED_TYPE", 0x8C10}, {"GL_TEXTURE_RED_TYPE_ARB", 0x8C10}, {"GL_TEXTURE_GREEN_TYPE", 0x8C11}, {"GL_TEXTURE_GREEN_TYPE_ARB", 0x8C11}, {"GL_TEXTURE_BLUE_TYPE", 0x8C12}, {"GL_TEXTURE_BLUE_TYPE_ARB", 0x8C12}, {"GL_TEXTURE_ALPHA_TYPE", 0x8C13}, {"GL_TEXTURE_ALPHA_TYPE_ARB", 0x8C13}, {"GL_TEXTURE_LUMINANCE_TYPE", 0x8C14}, {"GL_TEXTURE_LUMINANCE_TYPE_ARB", 0x8C14}, {"GL_TEXTURE_INTENSITY_TYPE", 0x8C15}, {"GL_TEXTURE_INTENSITY_TYPE_ARB", 0x8C15}, {"GL_TEXTURE_DEPTH_TYPE", 0x8C16}, {"GL_TEXTURE_DEPTH_TYPE_ARB", 0x8C16}, {"GL_UNSIGNED_NORMALIZED", 0x8C17}, {"GL_UNSIGNED_NORMALIZED_ARB", 0x8C17}, {"GL_UNSIGNED_NORMALIZED_EXT", 0x8C17}, {"GL_TEXTURE_1D_ARRAY", 0x8C18}, {"GL_TEXTURE_1D_ARRAY_EXT", 0x8C18}, {"GL_PROXY_TEXTURE_1D_ARRAY", 0x8C19}, {"GL_PROXY_TEXTURE_1D_ARRAY_EXT", 0x8C19}, {"GL_TEXTURE_2D_ARRAY", 0x8C1A}, {"GL_TEXTURE_2D_ARRAY_EXT", 0x8C1A}, {"GL_PROXY_TEXTURE_2D_ARRAY", 0x8C1B}, {"GL_PROXY_TEXTURE_2D_ARRAY_EXT", 0x8C1B}, {"GL_TEXTURE_BINDING_1D_ARRAY", 0x8C1C}, {"GL_TEXTURE_BINDING_1D_ARRAY_EXT", 0x8C1C}, {"GL_TEXTURE_BINDING_2D_ARRAY", 0x8C1D}, {"GL_TEXTURE_BINDING_2D_ARRAY_EXT", 0x8C1D}, {"GL_GEOMETRY_PROGRAM_NV", 0x8C26}, {"GL_MAX_PROGRAM_OUTPUT_VERTICES_NV", 0x8C27}, {"GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV", 0x8C28}, {"GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS", 0x8C29}, {"GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB", 0x8C29}, {"GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT", 0x8C29}, {"GL_TEXTURE_BUFFER", 0x8C2A}, {"GL_TEXTURE_BUFFER_ARB", 0x8C2A}, {"GL_TEXTURE_BUFFER_EXT", 0x8C2A}, {"GL_MAX_TEXTURE_BUFFER_SIZE", 0x8C2B}, {"GL_MAX_TEXTURE_BUFFER_SIZE_ARB", 0x8C2B}, {"GL_MAX_TEXTURE_BUFFER_SIZE_EXT", 0x8C2B}, {"GL_TEXTURE_BINDING_BUFFER", 0x8C2C}, {"GL_TEXTURE_BINDING_BUFFER_ARB", 0x8C2C}, {"GL_TEXTURE_BINDING_BUFFER_EXT", 0x8C2C}, {"GL_TEXTURE_BUFFER_DATA_STORE_BINDING", 0x8C2D}, {"GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB", 0x8C2D}, {"GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT", 0x8C2D}, {"GL_TEXTURE_BUFFER_FORMAT_ARB", 0x8C2E}, {"GL_TEXTURE_BUFFER_FORMAT_EXT", 0x8C2E}, {"GL_ANY_SAMPLES_PASSED", 0x8C2F}, {"GL_ANY_SAMPLES_PASSED_EXT", 0x8C2F}, {"GL_SAMPLE_SHADING", 0x8C36}, {"GL_SAMPLE_SHADING_ARB", 0x8C36}, {"GL_MIN_SAMPLE_SHADING_VALUE", 0x8C37}, {"GL_MIN_SAMPLE_SHADING_VALUE_ARB", 0x8C37}, {"GL_R11F_G11F_B10F", 0x8C3A}, {"GL_R11F_G11F_B10F_EXT", 0x8C3A}, {"GL_UNSIGNED_INT_10F_11F_11F_REV", 0x8C3B}, {"GL_UNSIGNED_INT_10F_11F_11F_REV_EXT", 0x8C3B}, {"GL_RGBA_SIGNED_COMPONENTS_EXT", 0x8C3C}, {"GL_RGB9_E5", 0x8C3D}, {"GL_RGB9_E5_EXT", 0x8C3D}, {"GL_UNSIGNED_INT_5_9_9_9_REV", 0x8C3E}, {"GL_UNSIGNED_INT_5_9_9_9_REV_EXT", 0x8C3E}, {"GL_TEXTURE_SHARED_SIZE", 0x8C3F}, {"GL_TEXTURE_SHARED_SIZE_EXT", 0x8C3F}, {"GL_SRGB", 0x8C40}, {"GL_SRGB_EXT", 0x8C40}, {"GL_SRGB8", 0x8C41}, {"GL_SRGB8_EXT", 0x8C41}, {"GL_SRGB8_NV", 0x8C41}, {"GL_SRGB_ALPHA", 0x8C42}, {"GL_SRGB_ALPHA_EXT", 0x8C42}, {"GL_SRGB8_ALPHA8", 0x8C43}, {"GL_SRGB8_ALPHA8_EXT", 0x8C43}, {"GL_SLUMINANCE_ALPHA", 0x8C44}, {"GL_SLUMINANCE_ALPHA_EXT", 0x8C44}, {"GL_SLUMINANCE_ALPHA_NV", 0x8C44}, {"GL_SLUMINANCE8_ALPHA8", 0x8C45}, {"GL_SLUMINANCE8_ALPHA8_EXT", 0x8C45}, {"GL_SLUMINANCE8_ALPHA8_NV", 0x8C45}, {"GL_SLUMINANCE", 0x8C46}, {"GL_SLUMINANCE_EXT", 0x8C46}, {"GL_SLUMINANCE_NV", 0x8C46}, {"GL_SLUMINANCE8", 0x8C47}, {"GL_SLUMINANCE8_EXT", 0x8C47}, {"GL_SLUMINANCE8_NV", 0x8C47}, {"GL_COMPRESSED_SRGB", 0x8C48}, {"GL_COMPRESSED_SRGB_EXT", 0x8C48}, {"GL_COMPRESSED_SRGB_ALPHA", 0x8C49}, {"GL_COMPRESSED_SRGB_ALPHA_EXT", 0x8C49}, {"GL_COMPRESSED_SLUMINANCE", 0x8C4A}, {"GL_COMPRESSED_SLUMINANCE_EXT", 0x8C4A}, {"GL_COMPRESSED_SLUMINANCE_ALPHA", 0x8C4B}, {"GL_COMPRESSED_SLUMINANCE_ALPHA_EXT", 0x8C4B}, {"GL_COMPRESSED_SRGB_S3TC_DXT1_EXT", 0x8C4C}, {"GL_COMPRESSED_SRGB_S3TC_DXT1_NV", 0x8C4C}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT", 0x8C4D}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV", 0x8C4D}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT", 0x8C4E}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV", 0x8C4E}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT", 0x8C4F}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV", 0x8C4F}, {"GL_COMPRESSED_LUMINANCE_LATC1_EXT", 0x8C70}, {"GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT", 0x8C71}, {"GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT", 0x8C72}, {"GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT", 0x8C73}, {"GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV", 0x8C74}, {"GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV", 0x8C75}, {"GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH", 0x8C76}, {"GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT", 0x8C76}, {"GL_BACK_PRIMARY_COLOR_NV", 0x8C77}, {"GL_BACK_SECONDARY_COLOR_NV", 0x8C78}, {"GL_TEXTURE_COORD_NV", 0x8C79}, {"GL_CLIP_DISTANCE_NV", 0x8C7A}, {"GL_VERTEX_ID_NV", 0x8C7B}, {"GL_PRIMITIVE_ID_NV", 0x8C7C}, {"GL_GENERIC_ATTRIB_NV", 0x8C7D}, {"GL_TRANSFORM_FEEDBACK_ATTRIBS_NV", 0x8C7E}, {"GL_TRANSFORM_FEEDBACK_BUFFER_MODE", 0x8C7F}, {"GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT", 0x8C7F}, {"GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV", 0x8C7F}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS", 0x8C80}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT", 0x8C80}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV", 0x8C80}, {"GL_ACTIVE_VARYINGS_NV", 0x8C81}, {"GL_ACTIVE_VARYING_MAX_LENGTH_NV", 0x8C82}, {"GL_TRANSFORM_FEEDBACK_VARYINGS", 0x8C83}, {"GL_TRANSFORM_FEEDBACK_VARYINGS_EXT", 0x8C83}, {"GL_TRANSFORM_FEEDBACK_VARYINGS_NV", 0x8C83}, {"GL_TRANSFORM_FEEDBACK_BUFFER_START", 0x8C84}, {"GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT", 0x8C84}, {"GL_TRANSFORM_FEEDBACK_BUFFER_START_NV", 0x8C84}, {"GL_TRANSFORM_FEEDBACK_BUFFER_SIZE", 0x8C85}, {"GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT", 0x8C85}, {"GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV", 0x8C85}, {"GL_TRANSFORM_FEEDBACK_RECORD_NV", 0x8C86}, {"GL_PRIMITIVES_GENERATED", 0x8C87}, {"GL_PRIMITIVES_GENERATED_EXT", 0x8C87}, {"GL_PRIMITIVES_GENERATED_NV", 0x8C87}, {"GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN", 0x8C88}, {"GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT", 0x8C88}, {"GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV", 0x8C88}, {"GL_RASTERIZER_DISCARD", 0x8C89}, {"GL_RASTERIZER_DISCARD_EXT", 0x8C89}, {"GL_RASTERIZER_DISCARD_NV", 0x8C89}, {"GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS", 0x8C8A}, {"GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT", 0x8C8A}, {"GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV", 0x8C8A}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS", 0x8C8B}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT", 0x8C8B}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV", 0x8C8B}, {"GL_INTERLEAVED_ATTRIBS", 0x8C8C}, {"GL_INTERLEAVED_ATTRIBS_EXT", 0x8C8C}, {"GL_INTERLEAVED_ATTRIBS_NV", 0x8C8C}, {"GL_SEPARATE_ATTRIBS", 0x8C8D}, {"GL_SEPARATE_ATTRIBS_EXT", 0x8C8D}, {"GL_SEPARATE_ATTRIBS_NV", 0x8C8D}, {"GL_TRANSFORM_FEEDBACK_BUFFER", 0x8C8E}, {"GL_TRANSFORM_FEEDBACK_BUFFER_EXT", 0x8C8E}, {"GL_TRANSFORM_FEEDBACK_BUFFER_NV", 0x8C8E}, {"GL_TRANSFORM_FEEDBACK_BUFFER_BINDING", 0x8C8F}, {"GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT", 0x8C8F}, {"GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV", 0x8C8F}, {"GL_ATC_RGB_AMD", 0x8C92}, {"GL_ATC_RGBA_EXPLICIT_ALPHA_AMD", 0x8C93}, {"GL_POINT_SPRITE_COORD_ORIGIN", 0x8CA0}, {"GL_LOWER_LEFT", 0x8CA1}, {"GL_UPPER_LEFT", 0x8CA2}, {"GL_STENCIL_BACK_REF", 0x8CA3}, {"GL_STENCIL_BACK_VALUE_MASK", 0x8CA4}, {"GL_STENCIL_BACK_WRITEMASK", 0x8CA5}, {"GL_DRAW_FRAMEBUFFER_BINDING", 0x8CA6}, {"GL_DRAW_FRAMEBUFFER_BINDING_EXT", 0x8CA6}, {"GL_DRAW_FRAMEBUFFER_BINDING_NV", 0x8CA6}, {"GL_FRAMEBUFFER_BINDING", 0x8CA6}, {"GL_FRAMEBUFFER_BINDING_ANGLE", 0x8CA6}, {"GL_FRAMEBUFFER_BINDING_EXT", 0x8CA6}, {"GL_FRAMEBUFFER_BINDING_OES", 0x8CA6}, {"GL_RENDERBUFFER_BINDING", 0x8CA7}, {"GL_RENDERBUFFER_BINDING_ANGLE", 0x8CA7}, {"GL_RENDERBUFFER_BINDING_EXT", 0x8CA7}, {"GL_RENDERBUFFER_BINDING_OES", 0x8CA7}, {"GL_READ_FRAMEBUFFER", 0x8CA8}, {"GL_READ_FRAMEBUFFER_ANGLE", 0x8CA8}, {"GL_READ_FRAMEBUFFER_EXT", 0x8CA8}, {"GL_READ_FRAMEBUFFER_NV", 0x8CA8}, {"GL_DRAW_FRAMEBUFFER", 0x8CA9}, {"GL_DRAW_FRAMEBUFFER_ANGLE", 0x8CA9}, {"GL_DRAW_FRAMEBUFFER_EXT", 0x8CA9}, {"GL_DRAW_FRAMEBUFFER_NV", 0x8CA9}, {"GL_READ_FRAMEBUFFER_BINDING", 0x8CAA}, {"GL_READ_FRAMEBUFFER_BINDING_EXT", 0x8CAA}, {"GL_READ_FRAMEBUFFER_BINDING_NV", 0x8CAA}, {"GL_RENDERBUFFER_COVERAGE_SAMPLES_NV", 0x8CAB}, {"GL_RENDERBUFFER_SAMPLES", 0x8CAB}, {"GL_RENDERBUFFER_SAMPLES_ANGLE", 0x8CAB}, {"GL_RENDERBUFFER_SAMPLES_EXT", 0x8CAB}, {"GL_RENDERBUFFER_SAMPLES_NV", 0x8CAB}, {"GL_DEPTH_COMPONENT32F", 0x8CAC}, {"GL_DEPTH32F_STENCIL8", 0x8CAD}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE", 0x8CD0}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT", 0x8CD0}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES", 0x8CD0}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME", 0x8CD1}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT", 0x8CD1}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES", 0x8CD1}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL", 0x8CD2}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT", 0x8CD2}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES", 0x8CD2}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE", 0x8CD3}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT", 0x8CD3}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES", 0x8CD3}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT", 0x8CD4}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES", 0x8CD4}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER", 0x8CD4}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT", 0x8CD4}, {"GL_FRAMEBUFFER_COMPLETE", 0x8CD5}, {"GL_FRAMEBUFFER_COMPLETE_EXT", 0x8CD5}, {"GL_FRAMEBUFFER_COMPLETE_OES", 0x8CD5}, {"GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT", 0x8CD6}, {"GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT", 0x8CD6}, {"GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES", 0x8CD6}, {"GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT", 0x8CD7}, {"GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT", 0x8CD7}, {"GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES", 0x8CD7}, {"GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS", 0x8CD9}, {"GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT", 0x8CD9}, {"GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES", 0x8CD9}, {"GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT", 0x8CDA}, {"GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES", 0x8CDA}, {"GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER", 0x8CDB}, {"GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT", 0x8CDB}, {"GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES", 0x8CDB}, {"GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER", 0x8CDC}, {"GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT", 0x8CDC}, {"GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES", 0x8CDC}, {"GL_FRAMEBUFFER_UNSUPPORTED", 0x8CDD}, {"GL_FRAMEBUFFER_UNSUPPORTED_EXT", 0x8CDD}, {"GL_FRAMEBUFFER_UNSUPPORTED_OES", 0x8CDD}, {"GL_MAX_COLOR_ATTACHMENTS", 0x8CDF}, {"GL_MAX_COLOR_ATTACHMENTS_EXT", 0x8CDF}, {"GL_MAX_COLOR_ATTACHMENTS_NV", 0x8CDF}, {"GL_COLOR_ATTACHMENT0", 0x8CE0}, {"GL_COLOR_ATTACHMENT0_EXT", 0x8CE0}, {"GL_COLOR_ATTACHMENT0_NV", 0x8CE0}, {"GL_COLOR_ATTACHMENT0_OES", 0x8CE0}, {"GL_COLOR_ATTACHMENT1", 0x8CE1}, {"GL_COLOR_ATTACHMENT1_EXT", 0x8CE1}, {"GL_COLOR_ATTACHMENT1_NV", 0x8CE1}, {"GL_COLOR_ATTACHMENT2", 0x8CE2}, {"GL_COLOR_ATTACHMENT2_EXT", 0x8CE2}, {"GL_COLOR_ATTACHMENT2_NV", 0x8CE2}, {"GL_COLOR_ATTACHMENT3", 0x8CE3}, {"GL_COLOR_ATTACHMENT3_EXT", 0x8CE3}, {"GL_COLOR_ATTACHMENT3_NV", 0x8CE3}, {"GL_COLOR_ATTACHMENT4", 0x8CE4}, {"GL_COLOR_ATTACHMENT4_EXT", 0x8CE4}, {"GL_COLOR_ATTACHMENT4_NV", 0x8CE4}, {"GL_COLOR_ATTACHMENT5", 0x8CE5}, {"GL_COLOR_ATTACHMENT5_EXT", 0x8CE5}, {"GL_COLOR_ATTACHMENT5_NV", 0x8CE5}, {"GL_COLOR_ATTACHMENT6", 0x8CE6}, {"GL_COLOR_ATTACHMENT6_EXT", 0x8CE6}, {"GL_COLOR_ATTACHMENT6_NV", 0x8CE6}, {"GL_COLOR_ATTACHMENT7", 0x8CE7}, {"GL_COLOR_ATTACHMENT7_EXT", 0x8CE7}, {"GL_COLOR_ATTACHMENT7_NV", 0x8CE7}, {"GL_COLOR_ATTACHMENT8", 0x8CE8}, {"GL_COLOR_ATTACHMENT8_EXT", 0x8CE8}, {"GL_COLOR_ATTACHMENT8_NV", 0x8CE8}, {"GL_COLOR_ATTACHMENT9", 0x8CE9}, {"GL_COLOR_ATTACHMENT9_EXT", 0x8CE9}, {"GL_COLOR_ATTACHMENT9_NV", 0x8CE9}, {"GL_COLOR_ATTACHMENT10", 0x8CEA}, {"GL_COLOR_ATTACHMENT10_EXT", 0x8CEA}, {"GL_COLOR_ATTACHMENT10_NV", 0x8CEA}, {"GL_COLOR_ATTACHMENT11", 0x8CEB}, {"GL_COLOR_ATTACHMENT11_EXT", 0x8CEB}, {"GL_COLOR_ATTACHMENT11_NV", 0x8CEB}, {"GL_COLOR_ATTACHMENT12", 0x8CEC}, {"GL_COLOR_ATTACHMENT12_EXT", 0x8CEC}, {"GL_COLOR_ATTACHMENT12_NV", 0x8CEC}, {"GL_COLOR_ATTACHMENT13", 0x8CED}, {"GL_COLOR_ATTACHMENT13_EXT", 0x8CED}, {"GL_COLOR_ATTACHMENT13_NV", 0x8CED}, {"GL_COLOR_ATTACHMENT14", 0x8CEE}, {"GL_COLOR_ATTACHMENT14_EXT", 0x8CEE}, {"GL_COLOR_ATTACHMENT14_NV", 0x8CEE}, {"GL_COLOR_ATTACHMENT15", 0x8CEF}, {"GL_COLOR_ATTACHMENT15_EXT", 0x8CEF}, {"GL_COLOR_ATTACHMENT15_NV", 0x8CEF}, {"GL_DEPTH_ATTACHMENT", 0x8D00}, {"GL_DEPTH_ATTACHMENT_EXT", 0x8D00}, {"GL_DEPTH_ATTACHMENT_OES", 0x8D00}, {"GL_STENCIL_ATTACHMENT", 0x8D20}, {"GL_STENCIL_ATTACHMENT_EXT", 0x8D20}, {"GL_STENCIL_ATTACHMENT_OES", 0x8D20}, {"GL_FRAMEBUFFER", 0x8D40}, {"GL_FRAMEBUFFER_EXT", 0x8D40}, {"GL_FRAMEBUFFER_OES", 0x8D40}, {"GL_RENDERBUFFER", 0x8D41}, {"GL_RENDERBUFFER_EXT", 0x8D41}, {"GL_RENDERBUFFER_OES", 0x8D41}, {"GL_RENDERBUFFER_WIDTH", 0x8D42}, {"GL_RENDERBUFFER_WIDTH_EXT", 0x8D42}, {"GL_RENDERBUFFER_WIDTH_OES", 0x8D42}, {"GL_RENDERBUFFER_HEIGHT", 0x8D43}, {"GL_RENDERBUFFER_HEIGHT_EXT", 0x8D43}, {"GL_RENDERBUFFER_HEIGHT_OES", 0x8D43}, {"GL_RENDERBUFFER_INTERNAL_FORMAT", 0x8D44}, {"GL_RENDERBUFFER_INTERNAL_FORMAT_EXT", 0x8D44}, {"GL_RENDERBUFFER_INTERNAL_FORMAT_OES", 0x8D44}, {"GL_STENCIL_INDEX1", 0x8D46}, {"GL_STENCIL_INDEX1_EXT", 0x8D46}, {"GL_STENCIL_INDEX1_OES", 0x8D46}, {"GL_STENCIL_INDEX4", 0x8D47}, {"GL_STENCIL_INDEX4_EXT", 0x8D47}, {"GL_STENCIL_INDEX4_OES", 0x8D47}, {"GL_STENCIL_INDEX8", 0x8D48}, {"GL_STENCIL_INDEX8_EXT", 0x8D48}, {"GL_STENCIL_INDEX8_OES", 0x8D48}, {"GL_STENCIL_INDEX16", 0x8D49}, {"GL_STENCIL_INDEX16_EXT", 0x8D49}, {"GL_RENDERBUFFER_RED_SIZE", 0x8D50}, {"GL_RENDERBUFFER_RED_SIZE_EXT", 0x8D50}, {"GL_RENDERBUFFER_RED_SIZE_OES", 0x8D50}, {"GL_RENDERBUFFER_GREEN_SIZE", 0x8D51}, {"GL_RENDERBUFFER_GREEN_SIZE_EXT", 0x8D51}, {"GL_RENDERBUFFER_GREEN_SIZE_OES", 0x8D51}, {"GL_RENDERBUFFER_BLUE_SIZE", 0x8D52}, {"GL_RENDERBUFFER_BLUE_SIZE_EXT", 0x8D52}, {"GL_RENDERBUFFER_BLUE_SIZE_OES", 0x8D52}, {"GL_RENDERBUFFER_ALPHA_SIZE", 0x8D53}, {"GL_RENDERBUFFER_ALPHA_SIZE_EXT", 0x8D53}, {"GL_RENDERBUFFER_ALPHA_SIZE_OES", 0x8D53}, {"GL_RENDERBUFFER_DEPTH_SIZE", 0x8D54}, {"GL_RENDERBUFFER_DEPTH_SIZE_EXT", 0x8D54}, {"GL_RENDERBUFFER_DEPTH_SIZE_OES", 0x8D54}, {"GL_RENDERBUFFER_STENCIL_SIZE", 0x8D55}, {"GL_RENDERBUFFER_STENCIL_SIZE_EXT", 0x8D55}, {"GL_RENDERBUFFER_STENCIL_SIZE_OES", 0x8D55}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE", 0x8D56}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE", 0x8D56}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT", 0x8D56}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV", 0x8D56}, {"GL_MAX_SAMPLES", 0x8D57}, {"GL_MAX_SAMPLES_ANGLE", 0x8D57}, {"GL_MAX_SAMPLES_EXT", 0x8D57}, {"GL_MAX_SAMPLES_NV", 0x8D57}, {"GL_TEXTURE_GEN_STR_OES", 0x8D60}, {"GL_HALF_FLOAT_OES", 0x8D61}, {"GL_RGB565_OES", 0x8D62}, {"GL_RGB565", 0x8D62}, {"GL_ETC1_RGB8_OES", 0x8D64}, {"GL_TEXTURE_EXTERNAL_OES", 0x8D65}, {"GL_SAMPLER_EXTERNAL_OES", 0x8D66}, {"GL_TEXTURE_BINDING_EXTERNAL_OES", 0x8D67}, {"GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES", 0x8D68}, {"GL_PRIMITIVE_RESTART_FIXED_INDEX", 0x8D69}, {"GL_ANY_SAMPLES_PASSED_CONSERVATIVE", 0x8D6A}, {"GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT", 0x8D6A}, {"GL_MAX_ELEMENT_INDEX", 0x8D6B}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT", 0x8D6C}, {"GL_RGBA32UI", 0x8D70}, {"GL_RGBA32UI_EXT", 0x8D70}, {"GL_RGB32UI", 0x8D71}, {"GL_RGB32UI_EXT", 0x8D71}, {"GL_ALPHA32UI_EXT", 0x8D72}, {"GL_INTENSITY32UI_EXT", 0x8D73}, {"GL_LUMINANCE32UI_EXT", 0x8D74}, {"GL_LUMINANCE_ALPHA32UI_EXT", 0x8D75}, {"GL_RGBA16UI", 0x8D76}, {"GL_RGBA16UI_EXT", 0x8D76}, {"GL_RGB16UI", 0x8D77}, {"GL_RGB16UI_EXT", 0x8D77}, {"GL_ALPHA16UI_EXT", 0x8D78}, {"GL_INTENSITY16UI_EXT", 0x8D79}, {"GL_LUMINANCE16UI_EXT", 0x8D7A}, {"GL_LUMINANCE_ALPHA16UI_EXT", 0x8D7B}, {"GL_RGBA8UI", 0x8D7C}, {"GL_RGBA8UI_EXT", 0x8D7C}, {"GL_RGB8UI", 0x8D7D}, {"GL_RGB8UI_EXT", 0x8D7D}, {"GL_ALPHA8UI_EXT", 0x8D7E}, {"GL_INTENSITY8UI_EXT", 0x8D7F}, {"GL_LUMINANCE8UI_EXT", 0x8D80}, {"GL_LUMINANCE_ALPHA8UI_EXT", 0x8D81}, {"GL_RGBA32I", 0x8D82}, {"GL_RGBA32I_EXT", 0x8D82}, {"GL_RGB32I", 0x8D83}, {"GL_RGB32I_EXT", 0x8D83}, {"GL_ALPHA32I_EXT", 0x8D84}, {"GL_INTENSITY32I_EXT", 0x8D85}, {"GL_LUMINANCE32I_EXT", 0x8D86}, {"GL_LUMINANCE_ALPHA32I_EXT", 0x8D87}, {"GL_RGBA16I", 0x8D88}, {"GL_RGBA16I_EXT", 0x8D88}, {"GL_RGB16I", 0x8D89}, {"GL_RGB16I_EXT", 0x8D89}, {"GL_ALPHA16I_EXT", 0x8D8A}, {"GL_INTENSITY16I_EXT", 0x8D8B}, {"GL_LUMINANCE16I_EXT", 0x8D8C}, {"GL_LUMINANCE_ALPHA16I_EXT", 0x8D8D}, {"GL_RGBA8I", 0x8D8E}, {"GL_RGBA8I_EXT", 0x8D8E}, {"GL_RGB8I", 0x8D8F}, {"GL_RGB8I_EXT", 0x8D8F}, {"GL_ALPHA8I_EXT", 0x8D90}, {"GL_INTENSITY8I_EXT", 0x8D91}, {"GL_LUMINANCE8I_EXT", 0x8D92}, {"GL_LUMINANCE_ALPHA8I_EXT", 0x8D93}, {"GL_RED_INTEGER", 0x8D94}, {"GL_RED_INTEGER_EXT", 0x8D94}, {"GL_GREEN_INTEGER", 0x8D95}, {"GL_GREEN_INTEGER_EXT", 0x8D95}, {"GL_BLUE_INTEGER", 0x8D96}, {"GL_BLUE_INTEGER_EXT", 0x8D96}, {"GL_ALPHA_INTEGER", 0x8D97}, {"GL_ALPHA_INTEGER_EXT", 0x8D97}, {"GL_RGB_INTEGER", 0x8D98}, {"GL_RGB_INTEGER_EXT", 0x8D98}, {"GL_RGBA_INTEGER", 0x8D99}, {"GL_RGBA_INTEGER_EXT", 0x8D99}, {"GL_BGR_INTEGER", 0x8D9A}, {"GL_BGR_INTEGER_EXT", 0x8D9A}, {"GL_BGRA_INTEGER", 0x8D9B}, {"GL_BGRA_INTEGER_EXT", 0x8D9B}, {"GL_LUMINANCE_INTEGER_EXT", 0x8D9C}, {"GL_LUMINANCE_ALPHA_INTEGER_EXT", 0x8D9D}, {"GL_RGBA_INTEGER_MODE_EXT", 0x8D9E}, {"GL_INT_2_10_10_10_REV", 0x8D9F}, {"GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV", 0x8DA0}, {"GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV", 0x8DA1}, {"GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV", 0x8DA2}, {"GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV", 0x8DA3}, {"GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV", 0x8DA4}, {"GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV", 0x8DA5}, {"GL_MAX_PROGRAM_GENERIC_RESULTS_NV", 0x8DA6}, {"GL_FRAMEBUFFER_ATTACHMENT_LAYERED", 0x8DA7}, {"GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB", 0x8DA7}, {"GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT", 0x8DA7}, {"GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS", 0x8DA8}, {"GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB", 0x8DA8}, {"GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT", 0x8DA8}, {"GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB", 0x8DA9}, {"GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT", 0x8DA9}, {"GL_LAYER_NV", 0x8DAA}, {"GL_DEPTH_COMPONENT32F_NV", 0x8DAB}, {"GL_DEPTH32F_STENCIL8_NV", 0x8DAC}, {"GL_FLOAT_32_UNSIGNED_INT_24_8_REV", 0x8DAD}, {"GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV", 0x8DAD}, {"GL_SHADER_INCLUDE_ARB", 0x8DAE}, {"GL_DEPTH_BUFFER_FLOAT_MODE_NV", 0x8DAF}, {"GL_FRAMEBUFFER_SRGB", 0x8DB9}, {"GL_FRAMEBUFFER_SRGB_EXT", 0x8DB9}, {"GL_FRAMEBUFFER_SRGB_CAPABLE_EXT", 0x8DBA}, {"GL_COMPRESSED_RED_RGTC1", 0x8DBB}, {"GL_COMPRESSED_RED_RGTC1_EXT", 0x8DBB}, {"GL_COMPRESSED_SIGNED_RED_RGTC1", 0x8DBC}, {"GL_COMPRESSED_SIGNED_RED_RGTC1_EXT", 0x8DBC}, {"GL_COMPRESSED_RED_GREEN_RGTC2_EXT", 0x8DBD}, {"GL_COMPRESSED_RG_RGTC2", 0x8DBD}, {"GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT", 0x8DBE}, {"GL_COMPRESSED_SIGNED_RG_RGTC2", 0x8DBE}, {"GL_SAMPLER_1D_ARRAY", 0x8DC0}, {"GL_SAMPLER_1D_ARRAY_EXT", 0x8DC0}, {"GL_SAMPLER_2D_ARRAY", 0x8DC1}, {"GL_SAMPLER_2D_ARRAY_EXT", 0x8DC1}, {"GL_SAMPLER_BUFFER", 0x8DC2}, {"GL_SAMPLER_BUFFER_EXT", 0x8DC2}, {"GL_SAMPLER_1D_ARRAY_SHADOW", 0x8DC3}, {"GL_SAMPLER_1D_ARRAY_SHADOW_EXT", 0x8DC3}, {"GL_SAMPLER_2D_ARRAY_SHADOW", 0x8DC4}, {"GL_SAMPLER_2D_ARRAY_SHADOW_EXT", 0x8DC4}, {"GL_SAMPLER_2D_ARRAY_SHADOW_NV", 0x8DC4}, {"GL_SAMPLER_CUBE_SHADOW", 0x8DC5}, {"GL_SAMPLER_CUBE_SHADOW_EXT", 0x8DC5}, {"GL_SAMPLER_CUBE_SHADOW_NV", 0x8DC5}, {"GL_UNSIGNED_INT_VEC2", 0x8DC6}, {"GL_UNSIGNED_INT_VEC2_EXT", 0x8DC6}, {"GL_UNSIGNED_INT_VEC3", 0x8DC7}, {"GL_UNSIGNED_INT_VEC3_EXT", 0x8DC7}, {"GL_UNSIGNED_INT_VEC4", 0x8DC8}, {"GL_UNSIGNED_INT_VEC4_EXT", 0x8DC8}, {"GL_INT_SAMPLER_1D", 0x8DC9}, {"GL_INT_SAMPLER_1D_EXT", 0x8DC9}, {"GL_INT_SAMPLER_2D", 0x8DCA}, {"GL_INT_SAMPLER_2D_EXT", 0x8DCA}, {"GL_INT_SAMPLER_3D", 0x8DCB}, {"GL_INT_SAMPLER_3D_EXT", 0x8DCB}, {"GL_INT_SAMPLER_CUBE", 0x8DCC}, {"GL_INT_SAMPLER_CUBE_EXT", 0x8DCC}, {"GL_INT_SAMPLER_2D_RECT", 0x8DCD}, {"GL_INT_SAMPLER_2D_RECT_EXT", 0x8DCD}, {"GL_INT_SAMPLER_1D_ARRAY", 0x8DCE}, {"GL_INT_SAMPLER_1D_ARRAY_EXT", 0x8DCE}, {"GL_INT_SAMPLER_2D_ARRAY", 0x8DCF}, {"GL_INT_SAMPLER_2D_ARRAY_EXT", 0x8DCF}, {"GL_INT_SAMPLER_BUFFER", 0x8DD0}, {"GL_INT_SAMPLER_BUFFER_EXT", 0x8DD0}, {"GL_UNSIGNED_INT_SAMPLER_1D", 0x8DD1}, {"GL_UNSIGNED_INT_SAMPLER_1D_EXT", 0x8DD1}, {"GL_UNSIGNED_INT_SAMPLER_2D", 0x8DD2}, {"GL_UNSIGNED_INT_SAMPLER_2D_EXT", 0x8DD2}, {"GL_UNSIGNED_INT_SAMPLER_3D", 0x8DD3}, {"GL_UNSIGNED_INT_SAMPLER_3D_EXT", 0x8DD3}, {"GL_UNSIGNED_INT_SAMPLER_CUBE", 0x8DD4}, {"GL_UNSIGNED_INT_SAMPLER_CUBE_EXT", 0x8DD4}, {"GL_UNSIGNED_INT_SAMPLER_2D_RECT", 0x8DD5}, {"GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT", 0x8DD5}, {"GL_UNSIGNED_INT_SAMPLER_1D_ARRAY", 0x8DD6}, {"GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT", 0x8DD6}, {"GL_UNSIGNED_INT_SAMPLER_2D_ARRAY", 0x8DD7}, {"GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT", 0x8DD7}, {"GL_UNSIGNED_INT_SAMPLER_BUFFER", 0x8DD8}, {"GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT", 0x8DD8}, {"GL_GEOMETRY_SHADER", 0x8DD9}, {"GL_GEOMETRY_SHADER_ARB", 0x8DD9}, {"GL_GEOMETRY_SHADER_EXT", 0x8DD9}, {"GL_GEOMETRY_VERTICES_OUT_ARB", 0x8DDA}, {"GL_GEOMETRY_VERTICES_OUT_EXT", 0x8DDA}, {"GL_GEOMETRY_INPUT_TYPE_ARB", 0x8DDB}, {"GL_GEOMETRY_INPUT_TYPE_EXT", 0x8DDB}, {"GL_GEOMETRY_OUTPUT_TYPE_ARB", 0x8DDC}, {"GL_GEOMETRY_OUTPUT_TYPE_EXT", 0x8DDC}, {"GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB", 0x8DDD}, {"GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT", 0x8DDD}, {"GL_MAX_VERTEX_VARYING_COMPONENTS_ARB", 0x8DDE}, {"GL_MAX_VERTEX_VARYING_COMPONENTS_EXT", 0x8DDE}, {"GL_MAX_GEOMETRY_UNIFORM_COMPONENTS", 0x8DDF}, {"GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB", 0x8DDF}, {"GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT", 0x8DDF}, {"GL_MAX_GEOMETRY_OUTPUT_VERTICES", 0x8DE0}, {"GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB", 0x8DE0}, {"GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT", 0x8DE0}, {"GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS", 0x8DE1}, {"GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB", 0x8DE1}, {"GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT", 0x8DE1}, {"GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT", 0x8DE2}, {"GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT", 0x8DE3}, {"GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT", 0x8DE4}, {"GL_ACTIVE_SUBROUTINES", 0x8DE5}, {"GL_ACTIVE_SUBROUTINE_UNIFORMS", 0x8DE6}, {"GL_MAX_SUBROUTINES", 0x8DE7}, {"GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS", 0x8DE8}, {"GL_NAMED_STRING_LENGTH_ARB", 0x8DE9}, {"GL_NAMED_STRING_TYPE_ARB", 0x8DEA}, {"GL_MAX_BINDABLE_UNIFORM_SIZE_EXT", 0x8DED}, {"GL_UNIFORM_BUFFER_EXT", 0x8DEE}, {"GL_UNIFORM_BUFFER_BINDING_EXT", 0x8DEF}, {"GL_LOW_FLOAT", 0x8DF0}, {"GL_MEDIUM_FLOAT", 0x8DF1}, {"GL_HIGH_FLOAT", 0x8DF2}, {"GL_LOW_INT", 0x8DF3}, {"GL_MEDIUM_INT", 0x8DF4}, {"GL_HIGH_INT", 0x8DF5}, {"GL_UNSIGNED_INT_10_10_10_2_OES", 0x8DF6}, {"GL_INT_10_10_10_2_OES", 0x8DF7}, {"GL_SHADER_BINARY_FORMATS", 0x8DF8}, {"GL_NUM_SHADER_BINARY_FORMATS", 0x8DF9}, {"GL_SHADER_COMPILER", 0x8DFA}, {"GL_MAX_VERTEX_UNIFORM_VECTORS", 0x8DFB}, {"GL_MAX_VARYING_VECTORS", 0x8DFC}, {"GL_MAX_FRAGMENT_UNIFORM_VECTORS", 0x8DFD}, {"GL_RENDERBUFFER_COLOR_SAMPLES_NV", 0x8E10}, {"GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV", 0x8E11}, {"GL_MULTISAMPLE_COVERAGE_MODES_NV", 0x8E12}, {"GL_QUERY_WAIT", 0x8E13}, {"GL_QUERY_WAIT_NV", 0x8E13}, {"GL_QUERY_NO_WAIT", 0x8E14}, {"GL_QUERY_NO_WAIT_NV", 0x8E14}, {"GL_QUERY_BY_REGION_WAIT", 0x8E15}, {"GL_QUERY_BY_REGION_WAIT_NV", 0x8E15}, {"GL_QUERY_BY_REGION_NO_WAIT", 0x8E16}, {"GL_QUERY_BY_REGION_NO_WAIT_NV", 0x8E16}, {"GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS", 0x8E1E}, {"GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS", 0x8E1F}, {"GL_COLOR_SAMPLES_NV", 0x8E20}, {"GL_TRANSFORM_FEEDBACK", 0x8E22}, {"GL_TRANSFORM_FEEDBACK_NV", 0x8E22}, {"GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED", 0x8E23}, {"GL_TRANSFORM_FEEDBACK_PAUSED", 0x8E23}, {"GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV", 0x8E23}, {"GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE", 0x8E24}, {"GL_TRANSFORM_FEEDBACK_ACTIVE", 0x8E24}, {"GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV", 0x8E24}, {"GL_TRANSFORM_FEEDBACK_BINDING", 0x8E25}, {"GL_TRANSFORM_FEEDBACK_BINDING_NV", 0x8E25}, {"GL_FRAME_NV", 0x8E26}, {"GL_FIELDS_NV", 0x8E27}, {"GL_CURRENT_TIME_NV", 0x8E28}, {"GL_TIMESTAMP", 0x8E28}, {"GL_TIMESTAMP_EXT", 0x8E28}, {"GL_NUM_FILL_STREAMS_NV", 0x8E29}, {"GL_PRESENT_TIME_NV", 0x8E2A}, {"GL_PRESENT_DURATION_NV", 0x8E2B}, {"GL_DEPTH_COMPONENT16_NONLINEAR_NV", 0x8E2C}, {"GL_PROGRAM_MATRIX_EXT", 0x8E2D}, {"GL_TRANSPOSE_PROGRAM_MATRIX_EXT", 0x8E2E}, {"GL_PROGRAM_MATRIX_STACK_DEPTH_EXT", 0x8E2F}, {"GL_TEXTURE_SWIZZLE_R", 0x8E42}, {"GL_TEXTURE_SWIZZLE_R_EXT", 0x8E42}, {"GL_TEXTURE_SWIZZLE_G", 0x8E43}, {"GL_TEXTURE_SWIZZLE_G_EXT", 0x8E43}, {"GL_TEXTURE_SWIZZLE_B", 0x8E44}, {"GL_TEXTURE_SWIZZLE_B_EXT", 0x8E44}, {"GL_TEXTURE_SWIZZLE_A", 0x8E45}, {"GL_TEXTURE_SWIZZLE_A_EXT", 0x8E45}, {"GL_TEXTURE_SWIZZLE_RGBA", 0x8E46}, {"GL_TEXTURE_SWIZZLE_RGBA_EXT", 0x8E46}, {"GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS", 0x8E47}, {"GL_ACTIVE_SUBROUTINE_MAX_LENGTH", 0x8E48}, {"GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH", 0x8E49}, {"GL_NUM_COMPATIBLE_SUBROUTINES", 0x8E4A}, {"GL_COMPATIBLE_SUBROUTINES", 0x8E4B}, {"GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION", 0x8E4C}, {"GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT", 0x8E4C}, {"GL_FIRST_VERTEX_CONVENTION", 0x8E4D}, {"GL_FIRST_VERTEX_CONVENTION_EXT", 0x8E4D}, {"GL_LAST_VERTEX_CONVENTION", 0x8E4E}, {"GL_LAST_VERTEX_CONVENTION_EXT", 0x8E4E}, {"GL_PROVOKING_VERTEX", 0x8E4F}, {"GL_PROVOKING_VERTEX_EXT", 0x8E4F}, {"GL_SAMPLE_POSITION", 0x8E50}, {"GL_SAMPLE_POSITION_NV", 0x8E50}, {"GL_SAMPLE_MASK", 0x8E51}, {"GL_SAMPLE_MASK_NV", 0x8E51}, {"GL_SAMPLE_MASK_VALUE", 0x8E52}, {"GL_SAMPLE_MASK_VALUE_NV", 0x8E52}, {"GL_TEXTURE_BINDING_RENDERBUFFER_NV", 0x8E53}, {"GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV", 0x8E54}, {"GL_TEXTURE_RENDERBUFFER_NV", 0x8E55}, {"GL_SAMPLER_RENDERBUFFER_NV", 0x8E56}, {"GL_INT_SAMPLER_RENDERBUFFER_NV", 0x8E57}, {"GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV", 0x8E58}, {"GL_MAX_SAMPLE_MASK_WORDS", 0x8E59}, {"GL_MAX_SAMPLE_MASK_WORDS_NV", 0x8E59}, {"GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV", 0x8E5A}, {"GL_MAX_GEOMETRY_SHADER_INVOCATIONS", 0x8E5A}, {"GL_MIN_FRAGMENT_INTERPOLATION_OFFSET", 0x8E5B}, {"GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV", 0x8E5B}, {"GL_MAX_FRAGMENT_INTERPOLATION_OFFSET", 0x8E5C}, {"GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV", 0x8E5C}, {"GL_FRAGMENT_INTERPOLATION_OFFSET_BITS", 0x8E5D}, {"GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV", 0x8E5D}, {"GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET", 0x8E5E}, {"GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB", 0x8E5E}, {"GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV", 0x8E5E}, {"GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET", 0x8E5F}, {"GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB", 0x8E5F}, {"GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV", 0x8E5F}, {"GL_MAX_TRANSFORM_FEEDBACK_BUFFERS", 0x8E70}, {"GL_MAX_VERTEX_STREAMS", 0x8E71}, {"GL_PATCH_VERTICES", 0x8E72}, {"GL_PATCH_DEFAULT_INNER_LEVEL", 0x8E73}, {"GL_PATCH_DEFAULT_OUTER_LEVEL", 0x8E74}, {"GL_TESS_CONTROL_OUTPUT_VERTICES", 0x8E75}, {"GL_TESS_GEN_MODE", 0x8E76}, {"GL_TESS_GEN_SPACING", 0x8E77}, {"GL_TESS_GEN_VERTEX_ORDER", 0x8E78}, {"GL_TESS_GEN_POINT_MODE", 0x8E79}, {"GL_ISOLINES", 0x8E7A}, {"GL_FRACTIONAL_ODD", 0x8E7B}, {"GL_FRACTIONAL_EVEN", 0x8E7C}, {"GL_MAX_PATCH_VERTICES", 0x8E7D}, {"GL_MAX_TESS_GEN_LEVEL", 0x8E7E}, {"GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS", 0x8E7F}, {"GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS", 0x8E80}, {"GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS", 0x8E81}, {"GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS", 0x8E82}, {"GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS", 0x8E83}, {"GL_MAX_TESS_PATCH_COMPONENTS", 0x8E84}, {"GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS", 0x8E85}, {"GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS", 0x8E86}, {"GL_TESS_EVALUATION_SHADER", 0x8E87}, {"GL_TESS_CONTROL_SHADER", 0x8E88}, {"GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS", 0x8E89}, {"GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS", 0x8E8A}, {"GL_COMPRESSED_RGBA_BPTC_UNORM_ARB", 0x8E8C}, {"GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB", 0x8E8D}, {"GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB", 0x8E8E}, {"GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB", 0x8E8F}, {"GL_COVERAGE_COMPONENT_NV", 0x8ED0}, {"GL_COVERAGE_COMPONENT4_NV", 0x8ED1}, {"GL_COVERAGE_ATTACHMENT_NV", 0x8ED2}, {"GL_COVERAGE_BUFFERS_NV", 0x8ED3}, {"GL_COVERAGE_SAMPLES_NV", 0x8ED4}, {"GL_COVERAGE_ALL_FRAGMENTS_NV", 0x8ED5}, {"GL_COVERAGE_EDGE_FRAGMENTS_NV", 0x8ED6}, {"GL_COVERAGE_AUTOMATIC_NV", 0x8ED7}, {"GL_BUFFER_GPU_ADDRESS_NV", 0x8F1D}, {"GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV", 0x8F1E}, {"GL_ELEMENT_ARRAY_UNIFIED_NV", 0x8F1F}, {"GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV", 0x8F20}, {"GL_VERTEX_ARRAY_ADDRESS_NV", 0x8F21}, {"GL_NORMAL_ARRAY_ADDRESS_NV", 0x8F22}, {"GL_COLOR_ARRAY_ADDRESS_NV", 0x8F23}, {"GL_INDEX_ARRAY_ADDRESS_NV", 0x8F24}, {"GL_TEXTURE_COORD_ARRAY_ADDRESS_NV", 0x8F25}, {"GL_EDGE_FLAG_ARRAY_ADDRESS_NV", 0x8F26}, {"GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV", 0x8F27}, {"GL_FOG_COORD_ARRAY_ADDRESS_NV", 0x8F28}, {"GL_ELEMENT_ARRAY_ADDRESS_NV", 0x8F29}, {"GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV", 0x8F2A}, {"GL_VERTEX_ARRAY_LENGTH_NV", 0x8F2B}, {"GL_NORMAL_ARRAY_LENGTH_NV", 0x8F2C}, {"GL_COLOR_ARRAY_LENGTH_NV", 0x8F2D}, {"GL_INDEX_ARRAY_LENGTH_NV", 0x8F2E}, {"GL_TEXTURE_COORD_ARRAY_LENGTH_NV", 0x8F2F}, {"GL_EDGE_FLAG_ARRAY_LENGTH_NV", 0x8F30}, {"GL_SECONDARY_COLOR_ARRAY_LENGTH_NV", 0x8F31}, {"GL_FOG_COORD_ARRAY_LENGTH_NV", 0x8F32}, {"GL_ELEMENT_ARRAY_LENGTH_NV", 0x8F33}, {"GL_GPU_ADDRESS_NV", 0x8F34}, {"GL_MAX_SHADER_BUFFER_ADDRESS_NV", 0x8F35}, {"GL_COPY_READ_BUFFER", 0x8F36}, {"GL_COPY_READ_BUFFER_BINDING", 0x8F36}, {"GL_COPY_WRITE_BUFFER", 0x8F37}, {"GL_COPY_WRITE_BUFFER_BINDING", 0x8F37}, {"GL_MAX_IMAGE_UNITS", 0x8F38}, {"GL_MAX_IMAGE_UNITS_EXT", 0x8F38}, {"GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS", 0x8F39}, {"GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT", 0x8F39}, {"GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES", 0x8F39}, {"GL_IMAGE_BINDING_NAME", 0x8F3A}, {"GL_IMAGE_BINDING_NAME_EXT", 0x8F3A}, {"GL_IMAGE_BINDING_LEVEL", 0x8F3B}, {"GL_IMAGE_BINDING_LEVEL_EXT", 0x8F3B}, {"GL_IMAGE_BINDING_LAYERED", 0x8F3C}, {"GL_IMAGE_BINDING_LAYERED_EXT", 0x8F3C}, {"GL_IMAGE_BINDING_LAYER", 0x8F3D}, {"GL_IMAGE_BINDING_LAYER_EXT", 0x8F3D}, {"GL_IMAGE_BINDING_ACCESS", 0x8F3E}, {"GL_IMAGE_BINDING_ACCESS_EXT", 0x8F3E}, {"GL_DRAW_INDIRECT_BUFFER", 0x8F3F}, {"GL_DRAW_INDIRECT_UNIFIED_NV", 0x8F40}, {"GL_DRAW_INDIRECT_ADDRESS_NV", 0x8F41}, {"GL_DRAW_INDIRECT_LENGTH_NV", 0x8F42}, {"GL_DRAW_INDIRECT_BUFFER_BINDING", 0x8F43}, {"GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV", 0x8F44}, {"GL_MAX_PROGRAM_SUBROUTINE_NUM_NV", 0x8F45}, {"GL_DOUBLE_MAT2", 0x8F46}, {"GL_DOUBLE_MAT2_EXT", 0x8F46}, {"GL_DOUBLE_MAT3", 0x8F47}, {"GL_DOUBLE_MAT3_EXT", 0x8F47}, {"GL_DOUBLE_MAT4", 0x8F48}, {"GL_DOUBLE_MAT4_EXT", 0x8F48}, {"GL_DOUBLE_MAT2x3", 0x8F49}, {"GL_DOUBLE_MAT2x3_EXT", 0x8F49}, {"GL_DOUBLE_MAT2x4", 0x8F4A}, {"GL_DOUBLE_MAT2x4_EXT", 0x8F4A}, {"GL_DOUBLE_MAT3x2", 0x8F4B}, {"GL_DOUBLE_MAT3x2_EXT", 0x8F4B}, {"GL_DOUBLE_MAT3x4", 0x8F4C}, {"GL_DOUBLE_MAT3x4_EXT", 0x8F4C}, {"GL_DOUBLE_MAT4x2", 0x8F4D}, {"GL_DOUBLE_MAT4x2_EXT", 0x8F4D}, {"GL_DOUBLE_MAT4x3", 0x8F4E}, {"GL_DOUBLE_MAT4x3_EXT", 0x8F4E}, {"GL_MALI_SHADER_BINARY_ARM", 0x8F60}, {"GL_MALI_PROGRAM_BINARY_ARM", 0x8F61}, {"GL_RED_SNORM", 0x8F90}, {"GL_RG_SNORM", 0x8F91}, {"GL_RGB_SNORM", 0x8F92}, {"GL_RGBA_SNORM", 0x8F93}, {"GL_R8_SNORM", 0x8F94}, {"GL_RG8_SNORM", 0x8F95}, {"GL_RGB8_SNORM", 0x8F96}, {"GL_RGBA8_SNORM", 0x8F97}, {"GL_R16_SNORM", 0x8F98}, {"GL_RG16_SNORM", 0x8F99}, {"GL_RGB16_SNORM", 0x8F9A}, {"GL_RGBA16_SNORM", 0x8F9B}, {"GL_SIGNED_NORMALIZED", 0x8F9C}, {"GL_PRIMITIVE_RESTART", 0x8F9D}, {"GL_PRIMITIVE_RESTART_INDEX", 0x8F9E}, {"GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB", 0x8F9F}, {"GL_PERFMON_GLOBAL_MODE_QCOM", 0x8FA0}, {"GL_BINNING_CONTROL_HINT_QCOM", 0x8FB0}, {"GL_CPU_OPTIMIZED_QCOM", 0x8FB1}, {"GL_GPU_OPTIMIZED_QCOM", 0x8FB2}, {"GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM", 0x8FB3}, {"GL_GPU_DISJOINT_EXT", 0x8FBB}, {"GL_SHADER_BINARY_VIV", 0x8FC4}, {"GL_INT8_NV", 0x8FE0}, {"GL_INT8_VEC2_NV", 0x8FE1}, {"GL_INT8_VEC3_NV", 0x8FE2}, {"GL_INT8_VEC4_NV", 0x8FE3}, {"GL_INT16_NV", 0x8FE4}, {"GL_INT16_VEC2_NV", 0x8FE5}, {"GL_INT16_VEC3_NV", 0x8FE6}, {"GL_INT16_VEC4_NV", 0x8FE7}, {"GL_INT64_VEC2_NV", 0x8FE9}, {"GL_INT64_VEC3_NV", 0x8FEA}, {"GL_INT64_VEC4_NV", 0x8FEB}, {"GL_UNSIGNED_INT8_NV", 0x8FEC}, {"GL_UNSIGNED_INT8_VEC2_NV", 0x8FED}, {"GL_UNSIGNED_INT8_VEC3_NV", 0x8FEE}, {"GL_UNSIGNED_INT8_VEC4_NV", 0x8FEF}, {"GL_UNSIGNED_INT16_NV", 0x8FF0}, {"GL_UNSIGNED_INT16_VEC2_NV", 0x8FF1}, {"GL_UNSIGNED_INT16_VEC3_NV", 0x8FF2}, {"GL_UNSIGNED_INT16_VEC4_NV", 0x8FF3}, {"GL_UNSIGNED_INT64_VEC2_NV", 0x8FF5}, {"GL_UNSIGNED_INT64_VEC3_NV", 0x8FF6}, {"GL_UNSIGNED_INT64_VEC4_NV", 0x8FF7}, {"GL_FLOAT16_NV", 0x8FF8}, {"GL_FLOAT16_VEC2_NV", 0x8FF9}, {"GL_FLOAT16_VEC3_NV", 0x8FFA}, {"GL_FLOAT16_VEC4_NV", 0x8FFB}, {"GL_DOUBLE_VEC2", 0x8FFC}, {"GL_DOUBLE_VEC2_EXT", 0x8FFC}, {"GL_DOUBLE_VEC3", 0x8FFD}, {"GL_DOUBLE_VEC3_EXT", 0x8FFD}, {"GL_DOUBLE_VEC4", 0x8FFE}, {"GL_DOUBLE_VEC4_EXT", 0x8FFE}, {"GL_SAMPLER_BUFFER_AMD", 0x9001}, {"GL_INT_SAMPLER_BUFFER_AMD", 0x9002}, {"GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD", 0x9003}, {"GL_TESSELLATION_MODE_AMD", 0x9004}, {"GL_TESSELLATION_FACTOR_AMD", 0x9005}, {"GL_DISCRETE_AMD", 0x9006}, {"GL_CONTINUOUS_AMD", 0x9007}, {"GL_TEXTURE_CUBE_MAP_ARRAY", 0x9009}, {"GL_TEXTURE_CUBE_MAP_ARRAY_ARB", 0x9009}, {"GL_TEXTURE_BINDING_CUBE_MAP_ARRAY", 0x900A}, {"GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB", 0x900A}, {"GL_PROXY_TEXTURE_CUBE_MAP_ARRAY", 0x900B}, {"GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB", 0x900B}, {"GL_SAMPLER_CUBE_MAP_ARRAY", 0x900C}, {"GL_SAMPLER_CUBE_MAP_ARRAY_ARB", 0x900C}, {"GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW", 0x900D}, {"GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB", 0x900D}, {"GL_INT_SAMPLER_CUBE_MAP_ARRAY", 0x900E}, {"GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB", 0x900E}, {"GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY", 0x900F}, {"GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB", 0x900F}, {"GL_ALPHA_SNORM", 0x9010}, {"GL_LUMINANCE_SNORM", 0x9011}, {"GL_LUMINANCE_ALPHA_SNORM", 0x9012}, {"GL_INTENSITY_SNORM", 0x9013}, {"GL_ALPHA8_SNORM", 0x9014}, {"GL_LUMINANCE8_SNORM", 0x9015}, {"GL_LUMINANCE8_ALPHA8_SNORM", 0x9016}, {"GL_INTENSITY8_SNORM", 0x9017}, {"GL_ALPHA16_SNORM", 0x9018}, {"GL_LUMINANCE16_SNORM", 0x9019}, {"GL_LUMINANCE16_ALPHA16_SNORM", 0x901A}, {"GL_INTENSITY16_SNORM", 0x901B}, {"GL_FACTOR_MIN_AMD", 0x901C}, {"GL_FACTOR_MAX_AMD", 0x901D}, {"GL_DEPTH_CLAMP_NEAR_AMD", 0x901E}, {"GL_DEPTH_CLAMP_FAR_AMD", 0x901F}, {"GL_VIDEO_BUFFER_NV", 0x9020}, {"GL_VIDEO_BUFFER_BINDING_NV", 0x9021}, {"GL_FIELD_UPPER_NV", 0x9022}, {"GL_FIELD_LOWER_NV", 0x9023}, {"GL_NUM_VIDEO_CAPTURE_STREAMS_NV", 0x9024}, {"GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV", 0x9025}, {"GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV", 0x9026}, {"GL_LAST_VIDEO_CAPTURE_STATUS_NV", 0x9027}, {"GL_VIDEO_BUFFER_PITCH_NV", 0x9028}, {"GL_VIDEO_COLOR_CONVERSION_MATRIX_NV", 0x9029}, {"GL_VIDEO_COLOR_CONVERSION_MAX_NV", 0x902A}, {"GL_VIDEO_COLOR_CONVERSION_MIN_NV", 0x902B}, {"GL_VIDEO_COLOR_CONVERSION_OFFSET_NV", 0x902C}, {"GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV", 0x902D}, {"GL_PARTIAL_SUCCESS_NV", 0x902E}, {"GL_SUCCESS_NV", 0x902F}, {"GL_FAILURE_NV", 0x9030}, {"GL_YCBYCR8_422_NV", 0x9031}, {"GL_YCBAYCR8A_4224_NV", 0x9032}, {"GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV", 0x9033}, {"GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV", 0x9034}, {"GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV", 0x9035}, {"GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV", 0x9036}, {"GL_Z4Y12Z4CB12Z4CR12_444_NV", 0x9037}, {"GL_VIDEO_CAPTURE_FRAME_WIDTH_NV", 0x9038}, {"GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV", 0x9039}, {"GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV", 0x903A}, {"GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV", 0x903B}, {"GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV", 0x903C}, {"GL_TEXTURE_COVERAGE_SAMPLES_NV", 0x9045}, {"GL_TEXTURE_COLOR_SAMPLES_NV", 0x9046}, {"GL_IMAGE_1D", 0x904C}, {"GL_IMAGE_1D_EXT", 0x904C}, {"GL_IMAGE_2D", 0x904D}, {"GL_IMAGE_2D_EXT", 0x904D}, {"GL_IMAGE_3D", 0x904E}, {"GL_IMAGE_3D_EXT", 0x904E}, {"GL_IMAGE_2D_RECT", 0x904F}, {"GL_IMAGE_2D_RECT_EXT", 0x904F}, {"GL_IMAGE_CUBE", 0x9050}, {"GL_IMAGE_CUBE_EXT", 0x9050}, {"GL_IMAGE_BUFFER", 0x9051}, {"GL_IMAGE_BUFFER_EXT", 0x9051}, {"GL_IMAGE_1D_ARRAY", 0x9052}, {"GL_IMAGE_1D_ARRAY_EXT", 0x9052}, {"GL_IMAGE_2D_ARRAY", 0x9053}, {"GL_IMAGE_2D_ARRAY_EXT", 0x9053}, {"GL_IMAGE_CUBE_MAP_ARRAY", 0x9054}, {"GL_IMAGE_CUBE_MAP_ARRAY_EXT", 0x9054}, {"GL_IMAGE_2D_MULTISAMPLE", 0x9055}, {"GL_IMAGE_2D_MULTISAMPLE_EXT", 0x9055}, {"GL_IMAGE_2D_MULTISAMPLE_ARRAY", 0x9056}, {"GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT", 0x9056}, {"GL_INT_IMAGE_1D", 0x9057}, {"GL_INT_IMAGE_1D_EXT", 0x9057}, {"GL_INT_IMAGE_2D", 0x9058}, {"GL_INT_IMAGE_2D_EXT", 0x9058}, {"GL_INT_IMAGE_3D", 0x9059}, {"GL_INT_IMAGE_3D_EXT", 0x9059}, {"GL_INT_IMAGE_2D_RECT", 0x905A}, {"GL_INT_IMAGE_2D_RECT_EXT", 0x905A}, {"GL_INT_IMAGE_CUBE", 0x905B}, {"GL_INT_IMAGE_CUBE_EXT", 0x905B}, {"GL_INT_IMAGE_BUFFER", 0x905C}, {"GL_INT_IMAGE_BUFFER_EXT", 0x905C}, {"GL_INT_IMAGE_1D_ARRAY", 0x905D}, {"GL_INT_IMAGE_1D_ARRAY_EXT", 0x905D}, {"GL_INT_IMAGE_2D_ARRAY", 0x905E}, {"GL_INT_IMAGE_2D_ARRAY_EXT", 0x905E}, {"GL_INT_IMAGE_CUBE_MAP_ARRAY", 0x905F}, {"GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT", 0x905F}, {"GL_INT_IMAGE_2D_MULTISAMPLE", 0x9060}, {"GL_INT_IMAGE_2D_MULTISAMPLE_EXT", 0x9060}, {"GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY", 0x9061}, {"GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT", 0x9061}, {"GL_UNSIGNED_INT_IMAGE_1D", 0x9062}, {"GL_UNSIGNED_INT_IMAGE_1D_EXT", 0x9062}, {"GL_UNSIGNED_INT_IMAGE_2D", 0x9063}, {"GL_UNSIGNED_INT_IMAGE_2D_EXT", 0x9063}, {"GL_UNSIGNED_INT_IMAGE_3D", 0x9064}, {"GL_UNSIGNED_INT_IMAGE_3D_EXT", 0x9064}, {"GL_UNSIGNED_INT_IMAGE_2D_RECT", 0x9065}, {"GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT", 0x9065}, {"GL_UNSIGNED_INT_IMAGE_CUBE", 0x9066}, {"GL_UNSIGNED_INT_IMAGE_CUBE_EXT", 0x9066}, {"GL_UNSIGNED_INT_IMAGE_BUFFER", 0x9067}, {"GL_UNSIGNED_INT_IMAGE_BUFFER_EXT", 0x9067}, {"GL_UNSIGNED_INT_IMAGE_1D_ARRAY", 0x9068}, {"GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT", 0x9068}, {"GL_UNSIGNED_INT_IMAGE_2D_ARRAY", 0x9069}, {"GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT", 0x9069}, {"GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY", 0x906A}, {"GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT", 0x906A}, {"GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE", 0x906B}, {"GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT", 0x906B}, {"GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY", 0x906C}, {"GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT", 0x906C}, {"GL_MAX_IMAGE_SAMPLES", 0x906D}, {"GL_MAX_IMAGE_SAMPLES_EXT", 0x906D}, {"GL_IMAGE_BINDING_FORMAT", 0x906E}, {"GL_IMAGE_BINDING_FORMAT_EXT", 0x906E}, {"GL_RGB10_A2UI", 0x906F}, {"GL_PATH_FORMAT_SVG_NV", 0x9070}, {"GL_PATH_FORMAT_PS_NV", 0x9071}, {"GL_STANDARD_FONT_NAME_NV", 0x9072}, {"GL_SYSTEM_FONT_NAME_NV", 0x9073}, {"GL_FILE_NAME_NV", 0x9074}, {"GL_PATH_STROKE_WIDTH_NV", 0x9075}, {"GL_PATH_END_CAPS_NV", 0x9076}, {"GL_PATH_INITIAL_END_CAP_NV", 0x9077}, {"GL_PATH_TERMINAL_END_CAP_NV", 0x9078}, {"GL_PATH_JOIN_STYLE_NV", 0x9079}, {"GL_PATH_MITER_LIMIT_NV", 0x907A}, {"GL_PATH_DASH_CAPS_NV", 0x907B}, {"GL_PATH_INITIAL_DASH_CAP_NV", 0x907C}, {"GL_PATH_TERMINAL_DASH_CAP_NV", 0x907D}, {"GL_PATH_DASH_OFFSET_NV", 0x907E}, {"GL_PATH_CLIENT_LENGTH_NV", 0x907F}, {"GL_PATH_FILL_MODE_NV", 0x9080}, {"GL_PATH_FILL_MASK_NV", 0x9081}, {"GL_PATH_FILL_COVER_MODE_NV", 0x9082}, {"GL_PATH_STROKE_COVER_MODE_NV", 0x9083}, {"GL_PATH_STROKE_MASK_NV", 0x9084}, {"GL_COUNT_UP_NV", 0x9088}, {"GL_COUNT_DOWN_NV", 0x9089}, {"GL_PATH_OBJECT_BOUNDING_BOX_NV", 0x908A}, {"GL_CONVEX_HULL_NV", 0x908B}, {"GL_BOUNDING_BOX_NV", 0x908D}, {"GL_TRANSLATE_X_NV", 0x908E}, {"GL_TRANSLATE_Y_NV", 0x908F}, {"GL_TRANSLATE_2D_NV", 0x9090}, {"GL_TRANSLATE_3D_NV", 0x9091}, {"GL_AFFINE_2D_NV", 0x9092}, {"GL_AFFINE_3D_NV", 0x9094}, {"GL_TRANSPOSE_AFFINE_2D_NV", 0x9096}, {"GL_TRANSPOSE_AFFINE_3D_NV", 0x9098}, {"GL_UTF8_NV", 0x909A}, {"GL_UTF16_NV", 0x909B}, {"GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV", 0x909C}, {"GL_PATH_COMMAND_COUNT_NV", 0x909D}, {"GL_PATH_COORD_COUNT_NV", 0x909E}, {"GL_PATH_DASH_ARRAY_COUNT_NV", 0x909F}, {"GL_PATH_COMPUTED_LENGTH_NV", 0x90A0}, {"GL_PATH_FILL_BOUNDING_BOX_NV", 0x90A1}, {"GL_PATH_STROKE_BOUNDING_BOX_NV", 0x90A2}, {"GL_SQUARE_NV", 0x90A3}, {"GL_ROUND_NV", 0x90A4}, {"GL_TRIANGULAR_NV", 0x90A5}, {"GL_BEVEL_NV", 0x90A6}, {"GL_MITER_REVERT_NV", 0x90A7}, {"GL_MITER_TRUNCATE_NV", 0x90A8}, {"GL_SKIP_MISSING_GLYPH_NV", 0x90A9}, {"GL_USE_MISSING_GLYPH_NV", 0x90AA}, {"GL_PATH_ERROR_POSITION_NV", 0x90AB}, {"GL_PATH_FOG_GEN_MODE_NV", 0x90AC}, {"GL_ACCUM_ADJACENT_PAIRS_NV", 0x90AD}, {"GL_ADJACENT_PAIRS_NV", 0x90AE}, {"GL_FIRST_TO_REST_NV", 0x90AF}, {"GL_PATH_GEN_MODE_NV", 0x90B0}, {"GL_PATH_GEN_COEFF_NV", 0x90B1}, {"GL_PATH_GEN_COLOR_FORMAT_NV", 0x90B2}, {"GL_PATH_GEN_COMPONENTS_NV", 0x90B3}, {"GL_PATH_DASH_OFFSET_RESET_NV", 0x90B4}, {"GL_MOVE_TO_RESETS_NV", 0x90B5}, {"GL_MOVE_TO_CONTINUES_NV", 0x90B6}, {"GL_PATH_STENCIL_FUNC_NV", 0x90B7}, {"GL_PATH_STENCIL_REF_NV", 0x90B8}, {"GL_PATH_STENCIL_VALUE_MASK_NV", 0x90B9}, {"GL_SCALED_RESOLVE_FASTEST_EXT", 0x90BA}, {"GL_SCALED_RESOLVE_NICEST_EXT", 0x90BB}, {"GL_MIN_MAP_BUFFER_ALIGNMENT", 0x90BC}, {"GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV", 0x90BD}, {"GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV", 0x90BE}, {"GL_PATH_COVER_DEPTH_FUNC_NV", 0x90BF}, {"GL_IMAGE_FORMAT_COMPATIBILITY_TYPE", 0x90C7}, {"GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE", 0x90C8}, {"GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS", 0x90C9}, {"GL_MAX_VERTEX_IMAGE_UNIFORMS", 0x90CA}, {"GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS", 0x90CB}, {"GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS", 0x90CC}, {"GL_MAX_GEOMETRY_IMAGE_UNIFORMS", 0x90CD}, {"GL_MAX_FRAGMENT_IMAGE_UNIFORMS", 0x90CE}, {"GL_MAX_COMBINED_IMAGE_UNIFORMS", 0x90CF}, {"GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV", 0x90D0}, {"GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV", 0x90D1}, {"GL_SHADER_STORAGE_BUFFER", 0x90D2}, {"GL_SHADER_STORAGE_BUFFER_BINDING", 0x90D3}, {"GL_SHADER_STORAGE_BUFFER_START", 0x90D4}, {"GL_SHADER_STORAGE_BUFFER_SIZE", 0x90D5}, {"GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS", 0x90D6}, {"GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS", 0x90D7}, {"GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS", 0x90D8}, {"GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS", 0x90D9}, {"GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS", 0x90DA}, {"GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS", 0x90DB}, {"GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS", 0x90DC}, {"GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS", 0x90DD}, {"GL_MAX_SHADER_STORAGE_BLOCK_SIZE", 0x90DE}, {"GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT", 0x90DF}, {"GL_SYNC_X11_FENCE_EXT", 0x90E1}, {"GL_DEPTH_STENCIL_TEXTURE_MODE", 0x90EA}, {"GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB", 0x90EB}, {"GL_MAX_COMPUTE_LOCAL_INVOCATIONS", 0x90EB}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER", 0x90EC}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER", 0x90ED}, {"GL_DISPATCH_INDIRECT_BUFFER", 0x90EE}, {"GL_DISPATCH_INDIRECT_BUFFER_BINDING", 0x90EF}, {"GL_COLOR_ATTACHMENT_EXT", 0x90F0}, {"GL_MULTIVIEW_EXT", 0x90F1}, {"GL_MAX_MULTIVIEW_BUFFERS_EXT", 0x90F2}, {"GL_COMPUTE_PROGRAM_NV", 0x90FB}, {"GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV", 0x90FC}, {"GL_TEXTURE_2D_MULTISAMPLE", 0x9100}, {"GL_PROXY_TEXTURE_2D_MULTISAMPLE", 0x9101}, {"GL_TEXTURE_2D_MULTISAMPLE_ARRAY", 0x9102}, {"GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY", 0x9103}, {"GL_TEXTURE_BINDING_2D_MULTISAMPLE", 0x9104}, {"GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY", 0x9105}, {"GL_TEXTURE_SAMPLES", 0x9106}, {"GL_TEXTURE_FIXED_SAMPLE_LOCATIONS", 0x9107}, {"GL_SAMPLER_2D_MULTISAMPLE", 0x9108}, {"GL_INT_SAMPLER_2D_MULTISAMPLE", 0x9109}, {"GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE", 0x910A}, {"GL_SAMPLER_2D_MULTISAMPLE_ARRAY", 0x910B}, {"GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY", 0x910C}, {"GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY", 0x910D}, {"GL_MAX_COLOR_TEXTURE_SAMPLES", 0x910E}, {"GL_MAX_DEPTH_TEXTURE_SAMPLES", 0x910F}, {"GL_MAX_INTEGER_SAMPLES", 0x9110}, {"GL_MAX_SERVER_WAIT_TIMEOUT", 0x9111}, {"GL_MAX_SERVER_WAIT_TIMEOUT_APPLE", 0x9111}, {"GL_OBJECT_TYPE", 0x9112}, {"GL_OBJECT_TYPE_APPLE", 0x9112}, {"GL_SYNC_CONDITION", 0x9113}, {"GL_SYNC_CONDITION_APPLE", 0x9113}, {"GL_SYNC_STATUS", 0x9114}, {"GL_SYNC_STATUS_APPLE", 0x9114}, {"GL_SYNC_FLAGS", 0x9115}, {"GL_SYNC_FLAGS_APPLE", 0x9115}, {"GL_SYNC_FENCE", 0x9116}, {"GL_SYNC_FENCE_APPLE", 0x9116}, {"GL_SYNC_GPU_COMMANDS_COMPLETE", 0x9117}, {"GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE", 0x9117}, {"GL_UNSIGNALED", 0x9118}, {"GL_UNSIGNALED_APPLE", 0x9118}, {"GL_SIGNALED", 0x9119}, {"GL_SIGNALED_APPLE", 0x9119}, {"GL_ALREADY_SIGNALED", 0x911A}, {"GL_ALREADY_SIGNALED_APPLE", 0x911A}, {"GL_TIMEOUT_EXPIRED", 0x911B}, {"GL_TIMEOUT_EXPIRED_APPLE", 0x911B}, {"GL_CONDITION_SATISFIED", 0x911C}, {"GL_CONDITION_SATISFIED_APPLE", 0x911C}, {"GL_WAIT_FAILED", 0x911D}, {"GL_WAIT_FAILED_APPLE", 0x911D}, {"GL_BUFFER_ACCESS_FLAGS", 0x911F}, {"GL_BUFFER_MAP_LENGTH", 0x9120}, {"GL_BUFFER_MAP_OFFSET", 0x9121}, {"GL_MAX_VERTEX_OUTPUT_COMPONENTS", 0x9122}, {"GL_MAX_GEOMETRY_INPUT_COMPONENTS", 0x9123}, {"GL_MAX_GEOMETRY_OUTPUT_COMPONENTS", 0x9124}, {"GL_MAX_FRAGMENT_INPUT_COMPONENTS", 0x9125}, {"GL_CONTEXT_PROFILE_MASK", 0x9126}, {"GL_UNPACK_COMPRESSED_BLOCK_WIDTH", 0x9127}, {"GL_UNPACK_COMPRESSED_BLOCK_HEIGHT", 0x9128}, {"GL_UNPACK_COMPRESSED_BLOCK_DEPTH", 0x9129}, {"GL_UNPACK_COMPRESSED_BLOCK_SIZE", 0x912A}, {"GL_PACK_COMPRESSED_BLOCK_WIDTH", 0x912B}, {"GL_PACK_COMPRESSED_BLOCK_HEIGHT", 0x912C}, {"GL_PACK_COMPRESSED_BLOCK_DEPTH", 0x912D}, {"GL_PACK_COMPRESSED_BLOCK_SIZE", 0x912E}, {"GL_TEXTURE_IMMUTABLE_FORMAT", 0x912F}, {"GL_SGX_PROGRAM_BINARY_IMG", 0x9130}, {"GL_RENDERBUFFER_SAMPLES_IMG", 0x9133}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG", 0x9134}, {"GL_MAX_SAMPLES_IMG", 0x9135}, {"GL_TEXTURE_SAMPLES_IMG", 0x9136}, {"GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG", 0x9137}, {"GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG", 0x9138}, {"GL_MAX_DEBUG_MESSAGE_LENGTH", 0x9143}, {"GL_MAX_DEBUG_MESSAGE_LENGTH_AMD", 0x9143}, {"GL_MAX_DEBUG_MESSAGE_LENGTH_ARB", 0x9143}, {"GL_MAX_DEBUG_MESSAGE_LENGTH_KHR", 0x9143}, {"GL_MAX_DEBUG_LOGGED_MESSAGES", 0x9144}, {"GL_MAX_DEBUG_LOGGED_MESSAGES_AMD", 0x9144}, {"GL_MAX_DEBUG_LOGGED_MESSAGES_ARB", 0x9144}, {"GL_MAX_DEBUG_LOGGED_MESSAGES_KHR", 0x9144}, {"GL_DEBUG_LOGGED_MESSAGES", 0x9145}, {"GL_DEBUG_LOGGED_MESSAGES_AMD", 0x9145}, {"GL_DEBUG_LOGGED_MESSAGES_ARB", 0x9145}, {"GL_DEBUG_LOGGED_MESSAGES_KHR", 0x9145}, {"GL_DEBUG_SEVERITY_HIGH", 0x9146}, {"GL_DEBUG_SEVERITY_HIGH_AMD", 0x9146}, {"GL_DEBUG_SEVERITY_HIGH_ARB", 0x9146}, {"GL_DEBUG_SEVERITY_HIGH_KHR", 0x9146}, {"GL_DEBUG_SEVERITY_MEDIUM", 0x9147}, {"GL_DEBUG_SEVERITY_MEDIUM_AMD", 0x9147}, {"GL_DEBUG_SEVERITY_MEDIUM_ARB", 0x9147}, {"GL_DEBUG_SEVERITY_MEDIUM_KHR", 0x9147}, {"GL_DEBUG_SEVERITY_LOW", 0x9148}, {"GL_DEBUG_SEVERITY_LOW_AMD", 0x9148}, {"GL_DEBUG_SEVERITY_LOW_ARB", 0x9148}, {"GL_DEBUG_SEVERITY_LOW_KHR", 0x9148}, {"GL_DEBUG_CATEGORY_API_ERROR_AMD", 0x9149}, {"GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD", 0x914A}, {"GL_DEBUG_CATEGORY_DEPRECATION_AMD", 0x914B}, {"GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD", 0x914C}, {"GL_DEBUG_CATEGORY_PERFORMANCE_AMD", 0x914D}, {"GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD", 0x914E}, {"GL_DEBUG_CATEGORY_APPLICATION_AMD", 0x914F}, {"GL_DEBUG_CATEGORY_OTHER_AMD", 0x9150}, {"GL_BUFFER_OBJECT_EXT", 0x9151}, {"GL_DATA_BUFFER_AMD", 0x9151}, {"GL_PERFORMANCE_MONITOR_AMD", 0x9152}, {"GL_QUERY_OBJECT_AMD", 0x9153}, {"GL_QUERY_OBJECT_EXT", 0x9153}, {"GL_VERTEX_ARRAY_OBJECT_AMD", 0x9154}, {"GL_VERTEX_ARRAY_OBJECT_EXT", 0x9154}, {"GL_SAMPLER_OBJECT_AMD", 0x9155}, {"GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD", 0x9160}, {"GL_QUERY_BUFFER", 0x9192}, {"GL_QUERY_BUFFER_AMD", 0x9192}, {"GL_QUERY_BUFFER_BINDING", 0x9193}, {"GL_QUERY_BUFFER_BINDING_AMD", 0x9193}, {"GL_QUERY_RESULT_NO_WAIT", 0x9194}, {"GL_QUERY_RESULT_NO_WAIT_AMD", 0x9194}, {"GL_VIRTUAL_PAGE_SIZE_X_ARB", 0x9195}, {"GL_VIRTUAL_PAGE_SIZE_X_AMD", 0x9195}, {"GL_VIRTUAL_PAGE_SIZE_Y_ARB", 0x9196}, {"GL_VIRTUAL_PAGE_SIZE_Y_AMD", 0x9196}, {"GL_VIRTUAL_PAGE_SIZE_Z_ARB", 0x9197}, {"GL_VIRTUAL_PAGE_SIZE_Z_AMD", 0x9197}, {"GL_MAX_SPARSE_TEXTURE_SIZE_ARB", 0x9198}, {"GL_MAX_SPARSE_TEXTURE_SIZE_AMD", 0x9198}, {"GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB", 0x9199}, {"GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD", 0x9199}, {"GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB", 0x919A}, {"GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS", 0x919A}, {"GL_MIN_SPARSE_LEVEL_ARB", 0x919B}, {"GL_MIN_SPARSE_LEVEL_AMD", 0x919B}, {"GL_MIN_LOD_WARNING_AMD", 0x919C}, {"GL_TEXTURE_BUFFER_OFFSET", 0x919D}, {"GL_TEXTURE_BUFFER_SIZE", 0x919E}, {"GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT", 0x919F}, {"GL_VERTEX_ELEMENT_SWIZZLE_AMD", 0x91A4}, {"GL_VERTEX_ID_SWIZZLE_AMD", 0x91A5}, {"GL_TEXTURE_SPARSE_ARB", 0x91A6}, {"GL_VIRTUAL_PAGE_SIZE_INDEX_ARB", 0x91A7}, {"GL_NUM_VIRTUAL_PAGE_SIZES_ARB", 0x91A8}, {"GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB", 0x91A9}, {"GL_COMPUTE_SHADER", 0x91B9}, {"GL_MAX_COMPUTE_UNIFORM_BLOCKS", 0x91BB}, {"GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS", 0x91BC}, {"GL_MAX_COMPUTE_IMAGE_UNIFORMS", 0x91BD}, {"GL_MAX_COMPUTE_WORK_GROUP_COUNT", 0x91BE}, {"GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB", 0x91BF}, {"GL_MAX_COMPUTE_WORK_GROUP_SIZE", 0x91BF}, {"GL_UNPACK_FLIP_Y_WEBGL", 0x9240}, {"GL_UNPACK_PREMULTIPLY_ALPHA_WEBGL", 0x9241}, {"GL_CONTEXT_LOST_WEBGL", 0x9242}, {"GL_UNPACK_COLORSPACE_CONVERSION_WEBGL", 0x9243}, {"GL_BROWSER_DEFAULT_WEBGL", 0x9244}, {"GL_SHADER_BINARY_DMP", 0x9250}, {"GL_GCCSO_SHADER_BINARY_FJ", 0x9260}, {"GL_COMPRESSED_R11_EAC", 0x9270}, {"GL_COMPRESSED_R11_EAC_OES", 0x9270}, {"GL_COMPRESSED_SIGNED_R11_EAC", 0x9271}, {"GL_COMPRESSED_SIGNED_R11_EAC_OES", 0x9271}, {"GL_COMPRESSED_RG11_EAC", 0x9272}, {"GL_COMPRESSED_RG11_EAC_OES", 0x9272}, {"GL_COMPRESSED_SIGNED_RG11_EAC", 0x9273}, {"GL_COMPRESSED_SIGNED_RG11_EAC_OES", 0x9273}, {"GL_COMPRESSED_RGB8_ETC2", 0x9274}, {"GL_COMPRESSED_RGB8_ETC2_OES", 0x9274}, {"GL_COMPRESSED_SRGB8_ETC2", 0x9275}, {"GL_COMPRESSED_SRGB8_ETC2_OES", 0x9275}, {"GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", 0x9276}, {"GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES", 0x9276}, {"GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2", 0x9277}, {"GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES", 0x9277}, {"GL_COMPRESSED_RGBA8_ETC2_EAC", 0x9278}, {"GL_COMPRESSED_RGBA8_ETC2_EAC_OES", 0x9278}, {"GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC", 0x9279}, {"GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_OES", 0x9279}, {"GL_BLEND_PREMULTIPLIED_SRC_NV", 0x9280}, {"GL_BLEND_OVERLAP_NV", 0x9281}, {"GL_UNCORRELATED_NV", 0x9282}, {"GL_DISJOINT_NV", 0x9283}, {"GL_CONJOINT_NV", 0x9284}, {"GL_BLEND_ADVANCED_COHERENT_NV", 0x9285}, {"GL_SRC_NV", 0x9286}, {"GL_DST_NV", 0x9287}, {"GL_SRC_OVER_NV", 0x9288}, {"GL_DST_OVER_NV", 0x9289}, {"GL_SRC_IN_NV", 0x928A}, {"GL_DST_IN_NV", 0x928B}, {"GL_SRC_OUT_NV", 0x928C}, {"GL_DST_OUT_NV", 0x928D}, {"GL_SRC_ATOP_NV", 0x928E}, {"GL_DST_ATOP_NV", 0x928F}, {"GL_PLUS_NV", 0x9291}, {"GL_PLUS_DARKER_NV", 0x9292}, {"GL_MULTIPLY_NV", 0x9294}, {"GL_SCREEN_NV", 0x9295}, {"GL_OVERLAY_NV", 0x9296}, {"GL_DARKEN_NV", 0x9297}, {"GL_LIGHTEN_NV", 0x9298}, {"GL_COLORDODGE_NV", 0x9299}, {"GL_COLORBURN_NV", 0x929A}, {"GL_HARDLIGHT_NV", 0x929B}, {"GL_SOFTLIGHT_NV", 0x929C}, {"GL_DIFFERENCE_NV", 0x929E}, {"GL_MINUS_NV", 0x929F}, {"GL_EXCLUSION_NV", 0x92A0}, {"GL_CONTRAST_NV", 0x92A1}, {"GL_INVERT_RGB_NV", 0x92A3}, {"GL_LINEARDODGE_NV", 0x92A4}, {"GL_LINEARBURN_NV", 0x92A5}, {"GL_VIVIDLIGHT_NV", 0x92A6}, {"GL_LINEARLIGHT_NV", 0x92A7}, {"GL_PINLIGHT_NV", 0x92A8}, {"GL_HARDMIX_NV", 0x92A9}, {"GL_HSL_HUE_NV", 0x92AD}, {"GL_HSL_SATURATION_NV", 0x92AE}, {"GL_HSL_COLOR_NV", 0x92AF}, {"GL_HSL_LUMINOSITY_NV", 0x92B0}, {"GL_PLUS_CLAMPED_NV", 0x92B1}, {"GL_PLUS_CLAMPED_ALPHA_NV", 0x92B2}, {"GL_MINUS_CLAMPED_NV", 0x92B3}, {"GL_INVERT_OVG_NV", 0x92B4}, {"GL_ATOMIC_COUNTER_BUFFER", 0x92C0}, {"GL_ATOMIC_COUNTER_BUFFER_BINDING", 0x92C1}, {"GL_ATOMIC_COUNTER_BUFFER_START", 0x92C2}, {"GL_ATOMIC_COUNTER_BUFFER_SIZE", 0x92C3}, {"GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE", 0x92C4}, {"GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS", 0x92C5}, {"GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES", 0x92C6}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER", 0x92C7}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER", 0x92C8}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER", 0x92C9}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER", 0x92CA}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER", 0x92CB}, {"GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS", 0x92CC}, {"GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS", 0x92CD}, {"GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS", 0x92CE}, {"GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS", 0x92CF}, {"GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS", 0x92D0}, {"GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS", 0x92D1}, {"GL_MAX_VERTEX_ATOMIC_COUNTERS", 0x92D2}, {"GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS", 0x92D3}, {"GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS", 0x92D4}, {"GL_MAX_GEOMETRY_ATOMIC_COUNTERS", 0x92D5}, {"GL_MAX_FRAGMENT_ATOMIC_COUNTERS", 0x92D6}, {"GL_MAX_COMBINED_ATOMIC_COUNTERS", 0x92D7}, {"GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE", 0x92D8}, {"GL_ACTIVE_ATOMIC_COUNTER_BUFFERS", 0x92D9}, {"GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX", 0x92DA}, {"GL_UNSIGNED_INT_ATOMIC_COUNTER", 0x92DB}, {"GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS", 0x92DC}, {"GL_DEBUG_OUTPUT", 0x92E0}, {"GL_DEBUG_OUTPUT_KHR", 0x92E0}, {"GL_UNIFORM", 0x92E1}, {"GL_UNIFORM_BLOCK", 0x92E2}, {"GL_PROGRAM_INPUT", 0x92E3}, {"GL_PROGRAM_OUTPUT", 0x92E4}, {"GL_BUFFER_VARIABLE", 0x92E5}, {"GL_SHADER_STORAGE_BLOCK", 0x92E6}, {"GL_IS_PER_PATCH", 0x92E7}, {"GL_VERTEX_SUBROUTINE", 0x92E8}, {"GL_TESS_CONTROL_SUBROUTINE", 0x92E9}, {"GL_TESS_EVALUATION_SUBROUTINE", 0x92EA}, {"GL_GEOMETRY_SUBROUTINE", 0x92EB}, {"GL_FRAGMENT_SUBROUTINE", 0x92EC}, {"GL_COMPUTE_SUBROUTINE", 0x92ED}, {"GL_VERTEX_SUBROUTINE_UNIFORM", 0x92EE}, {"GL_TESS_CONTROL_SUBROUTINE_UNIFORM", 0x92EF}, {"GL_TESS_EVALUATION_SUBROUTINE_UNIFORM", 0x92F0}, {"GL_GEOMETRY_SUBROUTINE_UNIFORM", 0x92F1}, {"GL_FRAGMENT_SUBROUTINE_UNIFORM", 0x92F2}, {"GL_COMPUTE_SUBROUTINE_UNIFORM", 0x92F3}, {"GL_TRANSFORM_FEEDBACK_VARYING", 0x92F4}, {"GL_ACTIVE_RESOURCES", 0x92F5}, {"GL_MAX_NAME_LENGTH", 0x92F6}, {"GL_MAX_NUM_ACTIVE_VARIABLES", 0x92F7}, {"GL_MAX_NUM_COMPATIBLE_SUBROUTINES", 0x92F8}, {"GL_NAME_LENGTH", 0x92F9}, {"GL_TYPE", 0x92FA}, {"GL_ARRAY_SIZE", 0x92FB}, {"GL_OFFSET", 0x92FC}, {"GL_BLOCK_INDEX", 0x92FD}, {"GL_ARRAY_STRIDE", 0x92FE}, {"GL_MATRIX_STRIDE", 0x92FF}, {"GL_IS_ROW_MAJOR", 0x9300}, {"GL_ATOMIC_COUNTER_BUFFER_INDEX", 0x9301}, {"GL_BUFFER_BINDING", 0x9302}, {"GL_BUFFER_DATA_SIZE", 0x9303}, {"GL_NUM_ACTIVE_VARIABLES", 0x9304}, {"GL_ACTIVE_VARIABLES", 0x9305}, {"GL_REFERENCED_BY_VERTEX_SHADER", 0x9306}, {"GL_REFERENCED_BY_TESS_CONTROL_SHADER", 0x9307}, {"GL_REFERENCED_BY_TESS_EVALUATION_SHADER", 0x9308}, {"GL_REFERENCED_BY_GEOMETRY_SHADER", 0x9309}, {"GL_REFERENCED_BY_FRAGMENT_SHADER", 0x930A}, {"GL_REFERENCED_BY_COMPUTE_SHADER", 0x930B}, {"GL_TOP_LEVEL_ARRAY_SIZE", 0x930C}, {"GL_TOP_LEVEL_ARRAY_STRIDE", 0x930D}, {"GL_LOCATION", 0x930E}, {"GL_LOCATION_INDEX", 0x930F}, {"GL_FRAMEBUFFER_DEFAULT_WIDTH", 0x9310}, {"GL_FRAMEBUFFER_DEFAULT_HEIGHT", 0x9311}, {"GL_FRAMEBUFFER_DEFAULT_LAYERS", 0x9312}, {"GL_FRAMEBUFFER_DEFAULT_SAMPLES", 0x9313}, {"GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS", 0x9314}, {"GL_MAX_FRAMEBUFFER_WIDTH", 0x9315}, {"GL_MAX_FRAMEBUFFER_HEIGHT", 0x9316}, {"GL_MAX_FRAMEBUFFER_LAYERS", 0x9317}, {"GL_MAX_FRAMEBUFFER_SAMPLES", 0x9318}, {"GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB", 0x9344}, {"GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB", 0x9345}, {"GL_LOCATION_COMPONENT", 0x934A}, {"GL_TRANSFORM_FEEDBACK_BUFFER_INDEX", 0x934B}, {"GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE", 0x934C}, {"GL_CLEAR_TEXTURE", 0x9365}, {"GL_NUM_SAMPLE_COUNTS", 0x9380}, {"GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE", 0x93A0}, {"GL_TEXTURE_USAGE_ANGLE", 0x93A2}, {"GL_FRAMEBUFFER_ATTACHMENT_ANGLE", 0x93A3}, {"GL_PACK_REVERSE_ROW_ORDER_ANGLE", 0x93A4}, {"GL_PROGRAM_BINARY_ANGLE", 0x93A6}, {"GL_COMPRESSED_RGBA_ASTC_4x4_KHR", 0x93B0}, {"GL_COMPRESSED_RGBA_ASTC_5x4_KHR", 0x93B1}, {"GL_COMPRESSED_RGBA_ASTC_5x5_KHR", 0x93B2}, {"GL_COMPRESSED_RGBA_ASTC_6x5_KHR", 0x93B3}, {"GL_COMPRESSED_RGBA_ASTC_6x6_KHR", 0x93B4}, {"GL_COMPRESSED_RGBA_ASTC_8x5_KHR", 0x93B5}, {"GL_COMPRESSED_RGBA_ASTC_8x6_KHR", 0x93B6}, {"GL_COMPRESSED_RGBA_ASTC_8x8_KHR", 0x93B7}, {"GL_COMPRESSED_RGBA_ASTC_10x5_KHR", 0x93B8}, {"GL_COMPRESSED_RGBA_ASTC_10x6_KHR", 0x93B9}, {"GL_COMPRESSED_RGBA_ASTC_10x8_KHR", 0x93BA}, {"GL_COMPRESSED_RGBA_ASTC_10x10_KHR", 0x93BB}, {"GL_COMPRESSED_RGBA_ASTC_12x10_KHR", 0x93BC}, {"GL_COMPRESSED_RGBA_ASTC_12x12_KHR", 0x93BD}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR", 0x93D0}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR", 0x93D1}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR", 0x93D2}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR", 0x93D3}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR", 0x93D4}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR", 0x93D5}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR", 0x93D6}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR", 0x93D7}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR", 0x93D8}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR", 0x93D9}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR", 0x93DA}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR", 0x93DB}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR", 0x93DC}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR", 0x93DD}, {"GL_RASTER_POSITION_UNCLIPPED_IBM", 0x19262}, {"GL_CULL_VERTEX_IBM", 103050}, {"GL_ALL_STATIC_DATA_IBM", 103060}, {"GL_STATIC_VERTEX_ARRAY_IBM", 103061}, {"GL_VERTEX_ARRAY_LIST_IBM", 103070}, {"GL_NORMAL_ARRAY_LIST_IBM", 103071}, {"GL_COLOR_ARRAY_LIST_IBM", 103072}, {"GL_INDEX_ARRAY_LIST_IBM", 103073}, {"GL_TEXTURE_COORD_ARRAY_LIST_IBM", 103074}, {"GL_EDGE_FLAG_ARRAY_LIST_IBM", 103075}, {"GL_FOG_COORDINATE_ARRAY_LIST_IBM", 103076}, {"GL_SECONDARY_COLOR_ARRAY_LIST_IBM", 103077}, {"GL_VERTEX_ARRAY_LIST_STRIDE_IBM", 103080}, {"GL_NORMAL_ARRAY_LIST_STRIDE_IBM", 103081}, {"GL_COLOR_ARRAY_LIST_STRIDE_IBM", 103082}, {"GL_INDEX_ARRAY_LIST_STRIDE_IBM", 103083}, {"GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM", 103084}, {"GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM", 103085}, {"GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM", 103086}, {"GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM", 103087}, {"GL_PREFER_DOUBLEBUFFER_HINT_PGI", 0x1A1F8}, {"GL_CONSERVE_MEMORY_HINT_PGI", 0x1A1FD}, {"GL_RECLAIM_MEMORY_HINT_PGI", 0x1A1FE}, {"GL_NATIVE_GRAPHICS_HANDLE_PGI", 0x1A202}, {"GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI", 0x1A203}, {"GL_NATIVE_GRAPHICS_END_HINT_PGI", 0x1A204}, {"GL_ALWAYS_FAST_HINT_PGI", 0x1A20C}, {"GL_ALWAYS_SOFT_HINT_PGI", 0x1A20D}, {"GL_ALLOW_DRAW_OBJ_HINT_PGI", 0x1A20E}, {"GL_ALLOW_DRAW_WIN_HINT_PGI", 0x1A20F}, {"GL_ALLOW_DRAW_FRG_HINT_PGI", 0x1A210}, {"GL_ALLOW_DRAW_MEM_HINT_PGI", 0x1A211}, {"GL_STRICT_DEPTHFUNC_HINT_PGI", 0x1A216}, {"GL_STRICT_LIGHTING_HINT_PGI", 0x1A217}, {"GL_STRICT_SCISSOR_HINT_PGI", 0x1A218}, {"GL_FULL_STIPPLE_HINT_PGI", 0x1A219}, {"GL_CLIP_NEAR_HINT_PGI", 0x1A220}, {"GL_CLIP_FAR_HINT_PGI", 0x1A221}, {"GL_WIDE_LINE_HINT_PGI", 0x1A222}, {"GL_BACK_NORMALS_HINT_PGI", 0x1A223}, {"GL_VERTEX_DATA_HINT_PGI", 0x1A22A}, {"GL_VERTEX_CONSISTENT_HINT_PGI", 0x1A22B}, {"GL_MATERIAL_SIDE_HINT_PGI", 0x1A22C}, {"GL_MAX_VERTEX_HINT_PGI", 0x1A22D}, {"GL_MAX_CLIP_PLANES_IMG", 0x0D32}, {"GL_TEXTURE_GEN_MODE_OES", 0x2500}, {"GL_CLIP_PLANE0_IMG", 0x3000}, {"GL_CLIP_PLANE1_IMG", 0x3001}, {"GL_CLIP_PLANE2_IMG", 0x3002}, {"GL_CLIP_PLANE3_IMG", 0x3003}, {"GL_CLIP_PLANE4_IMG", 0x3004}, {"GL_CLIP_PLANE5_IMG", 0x3005}, {"GL_ALPHA8_OES", 0x803C}, {"GL_LUMINANCE8_OES", 0x8040}, {"GL_LUMINANCE4_ALPHA4_OES", 0x8043}, {"GL_LUMINANCE8_ALPHA8_OES", 0x8045}, {"GL_RGB8_OES", 0x8051}, {"GL_TEXTURE_BINDING_3D_OES", 0x806A}, {"GL_BGRA_IMG", 0x80E1}, {"GL_TEXTURE_MAX_LEVEL_APPLE", 0x813D}, {"GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT", 0x8210}, {"GL_R32F_EXT", 0x822E}, {"GL_RG32F_EXT", 0x8230}, {"GL_LOSE_CONTEXT_ON_RESET_EXT", 0x8252}, {"GL_GUILTY_CONTEXT_RESET_EXT", 0x8253}, {"GL_INNOCENT_CONTEXT_RESET_EXT", 0x8254}, {"GL_UNKNOWN_CONTEXT_RESET_EXT", 0x8255}, {"GL_RESET_NOTIFICATION_STRATEGY_EXT", 0x8256}, {"GL_NO_RESET_NOTIFICATION_EXT", 0x8261}, {"GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG", 0x8365}, {"GL_VERTEX_ARRAY_BINDING_OES", 0x85B5}, {"GL_RGBA32F_EXT", 0x8814}, {"GL_RGB32F_EXT", 0x8815}, {"GL_ALPHA32F_EXT", 0x8816}, {"GL_LUMINANCE32F_EXT", 0x8818}, {"GL_LUMINANCE_ALPHA32F_EXT", 0x8819}, {"GL_ALPHA16F_EXT", 0x881C}, {"GL_LUMINANCE16F_EXT", 0x881E}, {"GL_LUMINANCE_ALPHA16F_EXT", 0x881F}, {"GL_DRAW_FRAMEBUFFER_BINDING_ANGLE", 0x8CA6}, {"GL_DRAW_FRAMEBUFFER_BINDING_APPLE", 0x8CA6}, {"GL_READ_FRAMEBUFFER_APPLE", 0x8CA8}, {"GL_DRAW_FRAMEBUFFER_APPLE", 0x8CA9}, {"GL_READ_FRAMEBUFFER_BINDING_ANGLE", 0x8CAA}, {"GL_READ_FRAMEBUFFER_BINDING_APPLE", 0x8CAA}, {"GL_RENDERBUFFER_SAMPLES_APPLE", 0x8CAB}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE", 0x8D56}, {"GL_MAX_SAMPLES_APPLE", 0x8D57}, {"GL_CONTEXT_ROBUST_ACCESS_EXT", 0x90F3}, {"GL_TEXTURE_IMMUTABLE_FORMAT_EXT", 0x912F}, {"GL_BGRA8_EXT", 0x93A1}, {0, 0} }; struct OpenGLEnum_u { const char *name; unsigned value; }; static OpenGLEnum_u openGLEnums_u[] = { {"GL_INVALID_INDEX", 0xFFFFFFFFu}, {0, 0} }; struct OpenGLEnum_ull { const char *name; unsigned long long value; }; static OpenGLEnum_ull openGLEnums_ull[] = { {"GL_TIMEOUT_IGNORED", 0xFFFFFFFFFFFFFFFFull}, {"GL_TIMEOUT_IGNORED_APPLE", 0xFFFFFFFFFFFFFFFFull}, {0, 0} }; /* * Add the OpenGL constants to a Python object. Return -1 and raise an * exception on error. */ int qpyopengl_add_constants(PyObject *obj) { int i, rc; PyObject *py_value; for (i = 0; openGLEnums_i[i].name; ++i) { #if PY_MAJOR_VERSION >= 3 py_value = PyLong_FromLong(openGLEnums_i[i].value); #else py_value = PyInt_FromLong(openGLEnums_i[i].value); #endif if (!py_value) return -1; rc = PyObject_SetAttrString(obj, openGLEnums_i[i].name, py_value); Py_DECREF(py_value); if (rc < 0) return -1; } for (i = 0; openGLEnums_u[i].name; ++i) { py_value = PyLong_FromUnsignedLong(openGLEnums_u[i].value); if (!py_value) return -1; rc = PyObject_SetAttrString(obj, openGLEnums_u[i].name, py_value); Py_DECREF(py_value); if (rc < 0) return -1; } for (i = 0; openGLEnums_ull[i].name; ++i) { py_value = PyLong_FromUnsignedLongLong(openGLEnums_ull[i].value); if (!py_value) return -1; rc = PyObject_SetAttrString(obj, openGLEnums_ull[i].name, py_value); Py_DECREF(py_value); if (rc < 0) return -1; } return 0; } #endif PyQt5_gpl-5.10.1/qpy/QtGui/qpyopengl_api.h0000644000076500000240000000522613245233150020366 0ustar philstaff00000000000000// This defines the OpenGL related API provided by this library. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYOPENGL_API_H #define _QPYOPENGL_API_H #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include #if QT_VERSION >= 0x050100 #include #endif // Initialisation. void qpyopengl_init(); // Support for shader arrays. const GLfloat *qpyopengl_attribute_array(PyObject *values, PyObject *shader, PyObject *key, int *tsize, sipErrorState *estate); const void *qpyopengl_uniform_value_array(PyObject *values, PyObject *shader, PyObject *key, const sipTypeDef **array_type, int *array_len, int *tsize, sipErrorState *estate); #if QT_VERSION >= 0x050100 // Support for QOpenGLContext.versionFunctions(). PyObject *qpyopengl_version_functions(const QOpenGLContext *context, PyObject *py_context, const QOpenGLVersionProfile *version_profile); #endif #if QT_VERSION >= 0x050100 // Support for the OpenGL bindings. const GLvoid *qpyopengl_value_array(sipErrorState *estate, PyObject *values, GLenum gl_type, PyObject *bindings); const GLvoid *qpyopengl_value_array_cached(sipErrorState *estate, PyObject *values, GLenum gl_type, PyObject *bindings, const char *pkey, GLuint skey); GLint qpyopengl_get(GLenum pname, GLenum *query); PyObject *qpyopengl_from_GLint(int *eflag, const GLint *array, Py_ssize_t len); PyObject *qpyopengl_from_GLuint(int *eflag, const GLuint *array, Py_ssize_t len); PyObject *qpyopengl_from_GLboolean(int *eflag, const GLboolean *array, Py_ssize_t len); PyObject *qpyopengl_from_GLfloat(int *eflag, const GLfloat *array, Py_ssize_t len); #if defined(SIP_FEATURE_PyQt_Desktop_OpenGL) PyObject *qpyopengl_from_GLdouble(int *eflag, const GLdouble *array, Py_ssize_t len); #endif #endif #endif #endif PyQt5_gpl-5.10.1/qpy/QtGui/qpyopengl_array_convertors.cpp0000644000076500000240000001002413245233150023542 0ustar philstaff00000000000000// This contains the support for converting QOpenGL arrays to Python objects. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include "qpyopengl_api.h" #if QT_VERSION >= 0x050100 // Convert a GLint array to a Python object. PyObject *qpyopengl_from_GLint(int *eflag, const GLint *array, Py_ssize_t len) { if (len == 1) return SIPLong_FromLong(array[0]); PyObject *tuple = PyTuple_New(len); if (!tuple) { *eflag = 1; return 0; } for (Py_ssize_t i = 0; i < len; ++i) { PyObject *itm = SIPLong_FromLong(array[i]); if (!itm) { Py_DECREF(tuple); *eflag = 1; return 0; } PyTuple_SetItem(tuple, i, itm); } return tuple; } // Convert a GLuint array to a Python object. PyObject *qpyopengl_from_GLuint(int *eflag, const GLuint *array, Py_ssize_t len) { if (len == 1) return PyLong_FromUnsignedLong(array[0]); PyObject *tuple = PyTuple_New(len); if (!tuple) { *eflag = 1; return 0; } for (Py_ssize_t i = 0; i < len; ++i) { PyObject *itm = PyLong_FromUnsignedLong(array[i]); if (!itm) { Py_DECREF(tuple); *eflag = 1; return 0; } PyTuple_SetItem(tuple, i, itm); } return tuple; } // Convert a GLboolean array to a Python object. PyObject *qpyopengl_from_GLboolean(int *eflag, const GLboolean *array, Py_ssize_t len) { if (len == 1) return PyBool_FromLong(array[0]); PyObject *tuple = PyTuple_New(len); if (!tuple) { *eflag = 1; return 0; } for (Py_ssize_t i = 0; i < len; ++i) { PyObject *itm = PyBool_FromLong(array[i]); if (!itm) { Py_DECREF(tuple); *eflag = 1; return 0; } PyTuple_SetItem(tuple, i, itm); } return tuple; } // Convert a GLfloat array to a Python object. PyObject *qpyopengl_from_GLfloat(int *eflag, const GLfloat *array, Py_ssize_t len) { if (len == 1) return PyFloat_FromDouble(array[0]); PyObject *tuple = PyTuple_New(len); if (!tuple) { *eflag = 1; return 0; } for (Py_ssize_t i = 0; i < len; ++i) { PyObject *itm = PyFloat_FromDouble(array[i]); if (!itm) { Py_DECREF(tuple); *eflag = 1; return 0; } PyTuple_SetItem(tuple, i, itm); } return tuple; } #if defined(SIP_FEATURE_PyQt_Desktop_OpenGL) // Convert a GLdouble array to a Python object. PyObject *qpyopengl_from_GLdouble(int *eflag, const GLdouble *array, Py_ssize_t len) { if (len == 1) return PyFloat_FromDouble(array[0]); PyObject *tuple = PyTuple_New(len); if (!tuple) { *eflag = 1; return 0; } for (Py_ssize_t i = 0; i < len; ++i) { PyObject *itm = PyFloat_FromDouble(array[i]); if (!itm) { Py_DECREF(tuple); *eflag = 1; return 0; } PyTuple_SetItem(tuple, i, itm); } return tuple; } #endif #endif #endif PyQt5_gpl-5.10.1/qpy/QtGui/qpyopengl_attribute_array.cpp0000644000076500000240000001674613245233150023362 0ustar philstaff00000000000000// This contains the support for shader program attribute arrays. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include #include #include #include #include "qpyopengl_api.h" #include "qpyopengl_misc.h" // Forward declaratations. #if defined(SIP_USE_PYCAPSULE) static void array_dtor(PyObject *capsule); #else static void array_dtor(void *array); #endif // Parse a Python object as a sequence of either QVector[234]D instances or a // sequence of sequence of floats and return an array that can be passed to // QGLShaderProgram::setAttributeArray(). The array is destroyed only when the // shader is garbage collected or when replaced by another array. const GLfloat *qpyopengl_attribute_array(PyObject *values, PyObject *shader, PyObject *key, int *tsize, sipErrorState *estate) { // Check the key was created correctly. if (!key) { *estate = sipErrorFail; return 0; } // Get the dict that holds the converted arrays. PyObject *dict = sipGetUserObject((sipSimpleWrapper *)shader); if (!dict) { dict = PyDict_New(); if (!dict) { Py_DECREF(key); *estate = sipErrorFail; return 0; } sipSetUserObject((sipSimpleWrapper *)shader, dict); } // Check that values is a non-empty sequence. values = PySequence_Fast(values, "an attribute array must be a sequence"); if (!values) { Py_DECREF(key); *estate = sipErrorContinue; return 0; } Py_ssize_t nr_items = Sequence_Fast_Size(values); if (nr_items < 1) { PyErr_SetString(PyExc_TypeError, "an attribute array must have at least one element"); Py_DECREF(key); Py_DECREF(values); *estate = sipErrorFail; return 0; } // The first element determines the type expected. PyObject *itm = Sequence_Fast_GetItem(values, 0); const sipTypeDef *td; Py_ssize_t nr_dim; if (sipCanConvertToType(itm, sipType_QVector2D, SIP_NOT_NONE)) { td = sipType_QVector2D; nr_dim = 2; } else if (sipCanConvertToType(itm, sipType_QVector3D, SIP_NOT_NONE)) { td = sipType_QVector3D; nr_dim = 3; } else if (sipCanConvertToType(itm, sipType_QVector4D, SIP_NOT_NONE)) { td = sipType_QVector4D; nr_dim = 4; } else if (PySequence_Check(itm) && (nr_dim = PySequence_Size(itm)) >= 1) { td = 0; } else { PyErr_SetString(PyExc_TypeError, "an attribute array must be a sequence of QVector2D, " "QVector3D, QVector4D, or a sequence of sequences of floats"); Py_DECREF(key); Py_DECREF(values); *estate = sipErrorFail; return 0; } // Create the array that will be returned. GLfloat *array = new GLfloat[nr_items * nr_dim]; // Convert the values. GLfloat *ap = array; for (Py_ssize_t i = 0; i < nr_items; ++i) { int iserr = 0; itm = Sequence_Fast_GetItem(values, i); if (td) { void *cpp; cpp = sipForceConvertToType(itm, td, 0, SIP_NOT_NONE | SIP_NO_CONVERTORS, 0, &iserr); if (iserr) { PyErr_Format(PyExc_TypeError, "attribute array elements should all be '%s', not '%s'", sipPyTypeName(sipTypeAsPyTypeObject(td)), sipPyTypeName(Py_TYPE(itm))); } else if (td == sipType_QVector2D) { QVector2D *v = reinterpret_cast(cpp); *ap++ = v->x(); *ap++ = v->y(); } else if (td == sipType_QVector3D) { QVector3D *v = reinterpret_cast(cpp); *ap++ = v->x(); *ap++ = v->y(); *ap++ = v->z(); } else if (td == sipType_QVector4D) { QVector4D *v = reinterpret_cast(cpp); *ap++ = v->x(); *ap++ = v->y(); *ap++ = v->z(); *ap++ = v->w(); } } else { itm = PySequence_Fast(itm, "attribute array elements should all be sequences"); if (itm) { if (Sequence_Fast_Size(itm) != nr_dim) { PyErr_Format(PyExc_TypeError, "attribute array elements should all be sequences " #if PY_VERSION_HEX >= 0x02050000 "of length %zd", #else "of length %d", #endif nr_dim); Py_DECREF(itm); iserr = 1; } else { PyErr_Clear(); for (Py_ssize_t j = 0; j < nr_dim; ++j) *ap++ = PyFloat_AsDouble(Sequence_Fast_GetItem(itm, j)); if (PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "attribute array elements should all be " "sequences of floats"); Py_DECREF(itm); iserr = 1; } } } else { iserr = 1; } } if (iserr) { Py_DECREF(key); Py_DECREF(values); delete[] array; *estate = sipErrorFail; return 0; } } Py_DECREF(values); *tsize = nr_dim; // Wrap the array in a Python object so that it won't leak. #if defined(SIP_USE_PYCAPSULE) PyObject *array_obj = PyCapsule_New(array, 0, array_dtor); #else PyObject *array_obj = PyCObject_FromVoidPtr(array, array_dtor); #endif if (!array_obj) { Py_DECREF(key); delete[] array; *estate = sipErrorFail; return 0; } int rc = PyDict_SetItem(dict, key, array_obj); Py_DECREF(key); Py_DECREF(array_obj); if (rc < 0) { *estate = sipErrorFail; return 0; } return array; } // The dtor for the saved attribute array. #if defined(SIP_USE_PYCAPSULE) static void array_dtor(PyObject *capsule) { delete[] reinterpret_cast(PyCapsule_GetPointer(capsule, 0)); } #else static void array_dtor(void *array) { delete[] reinterpret_cast(array); } #endif #endif PyQt5_gpl-5.10.1/qpy/QtGui/qpyopengl_data_cache.cpp0000644000076500000240000001421413245233150022201 0ustar philstaff00000000000000// This is the implementation of dataCache. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include "qpyopengl_data_cache.h" // The type object. PyTypeObject *qpyopengl_dataCache_TypeObject; // Forward declarations. extern "C" { static int dataCache_clear(PyObject *self); static void dataCache_dealloc(PyObject *self); static int dataCache_traverse(PyObject *self, visitproc visit, void *arg); } #if PY_VERSION_HEX >= 0x03040000 // Define the slots. static PyType_Slot qpyopengl_dataCache_Slots[] = { {Py_tp_dealloc, (void *)dataCache_dealloc}, {Py_tp_clear, (void *)dataCache_clear}, {Py_tp_traverse, (void *)dataCache_traverse}, {0, 0} }; // Define the type. static PyType_Spec qpyopengl_dataCache_Spec = { "PyQt5.QtGui.dataCache", sizeof (qpyopengl_dataCache), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_GC, qpyopengl_dataCache_Slots }; #else // Deffine the type. PyTypeObject qpyopengl_dataCache_Type = { PyVarObject_HEAD_INIT(NULL, 0) #if PY_VERSION_HEX >= 0x02050000 "PyQt5.QtGui.dataCache", #else const_cast("PyQt5.QtGui.dataCache"), #endif sizeof (qpyopengl_dataCache), 0, dataCache_dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_GC, 0, dataCache_traverse, dataCache_clear, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, #if PY_VERSION_HEX >= 0x03040000 0, #endif }; #endif // The dataCache clear function. static int dataCache_clear(PyObject *self) { qpyopengl_dataCache *data_cache = (qpyopengl_dataCache *)self; Array *uncached = data_cache->uncached; if (uncached) { data_cache->uncached = 0; uncached->clear(); delete uncached; } PrimaryCache *pcache = data_cache->pcache; if (pcache) { data_cache->pcache = 0; PrimaryCache::const_iterator pit = pcache->constBegin(); while (pit != pcache->constEnd()) { delete *pit; ++pit; } delete pcache; } return 0; } // The dataCache dealloc function. static void dataCache_dealloc(PyObject *self) { PyObject_GC_UnTrack(self); dataCache_clear(self); PyObject_GC_Del(self); } // The dataCache traverse function. static int dataCache_traverse(PyObject *self, visitproc visit, void *arg) { qpyopengl_dataCache *data_cache = (qpyopengl_dataCache *)self; int vret; Array *uncached = data_cache->uncached; if (uncached) { vret = uncached->traverse(visit, arg); if (vret != 0) return vret; } PrimaryCache *pcache = data_cache->pcache; if (pcache) { PrimaryCache::const_iterator pit = pcache->constBegin(); while (pit != pcache->constEnd()) { PrimaryCacheEntry *pce = *pit; vret = pce->skey_0.traverse(visit, arg); if (vret != 0) return vret; SecondaryCache *scache = pce->skey_n; if (scache) { SecondaryCache::const_iterator sit = scache->constBegin(); while (sit != scache->constEnd()) { vret = (*sit)->traverse(visit, arg); if (vret != 0) return vret; ++sit; } } ++pit; } } return 0; } // Initialise the type and return true if there was no error. bool qpyopengl_dataCache_init_type() { #if PY_VERSION_HEX >= 0x03040000 qpyopengl_dataCache_TypeObject = (PyTypeObject *)PyType_FromSpec( &qpyopengl_dataCache_Spec); return qpyopengl_dataCache_TypeObject; #else if (PyType_Ready(&qpyopengl_dataCache_Type) < 0) return false; qpyopengl_dataCache_TypeObject = &qpyopengl_dataCache_Type; return true; #endif } // Create a new data cache. qpyopengl_dataCache *qpyopengl_dataCache_New() { return (qpyopengl_dataCache *)PyType_GenericAlloc( qpyopengl_dataCache_TypeObject, 0); } // PrimaryCacheEntry ctor. PrimaryCacheEntry::PrimaryCacheEntry() : skey_n(0) { } // PrimaryCacheEntry dtor. PrimaryCacheEntry::~PrimaryCacheEntry() { if (skey_n) { SecondaryCache::const_iterator sit = skey_n->constBegin(); while (sit != skey_n->constEnd()) { delete (*sit); ++sit; } delete skey_n; skey_n = 0; } } // Array ctor. Array::Array() : data(0) { #if PY_VERSION_HEX >= 0x02060300 buffer.bi_obj = 0; #else buffer = 0; #endif } // Array dtor. Array::~Array() { clear(); } // Clear the array. void Array::clear() { if (data) { sipFree(data); data = 0; } #if PY_VERSION_HEX >= 0x02060300 else if (buffer.bi_obj) { sipReleaseBufferInfo(&buffer); } #else else if (buffer) { Py_DECREF(buffer); buffer = 0; } #endif } // Traverse the array. int Array::traverse(visitproc visit, void *arg) { PyObject *obj; #if PY_VERSION_HEX >= 0x02060300 obj = buffer.bi_obj; #else obj = buffer; #endif return obj ? visit(obj, arg) : 0; } #endif PyQt5_gpl-5.10.1/qpy/QtGui/qpyopengl_data_cache.h0000644000076500000240000000504313245233150021646 0ustar philstaff00000000000000// This contains the definitions for the implementation of dataCache. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYOPENGL_DATACACHE_H #define _QPYOPENGL_DATACACHE_H #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include // The wrapper around the actual array memory. struct Array { Array(); ~Array(); // Clear the array. void clear(); // Traverse the array for the garbage collector. int traverse(visitproc visit, void *arg); // The data. If it is 0 then any data is provided by an object that // implements the buffer protocol. void *data; #if PY_VERSION_HEX >= 0x02060300 // The buffer information. The obj element is a reference to the object // that implements the buffer protocol. sipBufferInfoDef buffer; #else // A reference to the object that implements the buffer protocol. PyObject *buffer; #endif }; typedef QHash SecondaryCache; // The cache for all value arrays for a particular primary key. struct PrimaryCacheEntry { PrimaryCacheEntry(); ~PrimaryCacheEntry(); // The cache entry for a secondary key of zero. Array skey_0; // The cache entries for all non-zero secondary keys. SecondaryCache *skey_n; }; typedef QHash PrimaryCache; extern "C" { // This defines the structure of a data cache for OpenGL. typedef struct { PyObject_HEAD // The most recent uncached array, if any. Array *uncached; // The primary cache. PrimaryCache *pcache; } qpyopengl_dataCache; } // The type object. extern PyTypeObject *qpyopengl_dataCache_TypeObject; bool qpyopengl_dataCache_init_type(); qpyopengl_dataCache *qpyopengl_dataCache_New(); #endif #endif PyQt5_gpl-5.10.1/qpy/QtGui/qpyopengl_get.cpp0000644000076500000240000001127213245233150020725 0ustar philstaff00000000000000// This implements support common to all glGet functions. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include "qpyopengl_api.h" #if QT_VERSION >= 0x050100 // Return the number of values returned for a particular parameter, or the // subsequent query needed to obtain the number of values. GLint qpyopengl_get(GLenum pname, GLenum *query) { GLint nr_params = 0; switch (pname) { #if defined(GL_COMPRESSED_TEXTURE_FORMATS) case GL_COMPRESSED_TEXTURE_FORMATS: *query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #endif #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: *query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: *query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif #if defined(GL_COLOR_MATRIX) case GL_COLOR_MATRIX: #endif #if defined(GL_MODELVIEW_MATRIX) case GL_MODELVIEW_MATRIX: #endif #if defined(GL_PROJECTION_MATRIX) case GL_PROJECTION_MATRIX: #endif #if defined(GL_TEXTURE_MATRIX) case GL_TEXTURE_MATRIX: #endif #if defined(GL_TRANSPOSE_COLOR_MATRIX) case GL_TRANSPOSE_COLOR_MATRIX: #endif #if defined(GL_TRANSPOSE_MODELVIEW_MATRIX) case GL_TRANSPOSE_MODELVIEW_MATRIX: #endif #if defined(GL_TRANSPOSE_PROJECTION_MATRIX) case GL_TRANSPOSE_PROJECTION_MATRIX: #endif #if defined(GL_TRANSPOSE_TEXTURE_MATRIX) case GL_TRANSPOSE_TEXTURE_MATRIX: #endif nr_params = 16; break; #if defined(GL_ACCUM_CLEAR_VALUE) case GL_ACCUM_CLEAR_VALUE: #endif #if defined(GL_BLEND_COLOR) case GL_BLEND_COLOR: #endif #if defined(GL_COLOR_CLEAR_VALUE) case GL_COLOR_CLEAR_VALUE: #endif #if defined(GL_COLOR_WRITEMASK) case GL_COLOR_WRITEMASK: #endif #if defined(GL_CURRENT_COLOR) case GL_CURRENT_COLOR: #endif #if defined(GL_CURRENT_RASTER_COLOR) case GL_CURRENT_RASTER_COLOR: #endif #if defined(GL_CURRENT_RASTER_POSITION) case GL_CURRENT_RASTER_POSITION: #endif #if defined(GL_CURRENT_RASTER_SECONDARY_COLOR) case GL_CURRENT_RASTER_SECONDARY_COLOR: #endif #if defined(GL_CURRENT_RASTER_TEXTURE_COORDS) case GL_CURRENT_RASTER_TEXTURE_COORDS: #endif #if defined(GL_CURRENT_SECONDARY_COLOR) case GL_CURRENT_SECONDARY_COLOR: #endif #if defined(GL_CURRENT_TEXTURE_COORDS) case GL_CURRENT_TEXTURE_COORDS: #endif #if defined(GL_FOG_COLOR) case GL_FOG_COLOR: #endif #if defined(GL_LIGHT_MODEL_AMBIENT) case GL_LIGHT_MODEL_AMBIENT: #endif #if defined(GL_MAP2_GRID_DOMAIN) case GL_MAP2_GRID_DOMAIN: #endif #if defined(GL_SCISSOR_BOX) case GL_SCISSOR_BOX: #endif #if defined(GL_VIEWPORT) case GL_VIEWPORT: #endif nr_params = 4; break; #if defined(GL_SMOOTH_POINT_SIZE_RANGE) case GL_SMOOTH_POINT_SIZE_RANGE: #endif #if defined(GL_POINT_SIZE_RANGE) && (!defined(GL_SMOOTH_POINT_SIZE_RANGE) || GL_SMOOTH_POINT_SIZE_RANGE != GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_SMOOTH_LINE_WIDTH_RANGE) case GL_SMOOTH_LINE_WIDTH_RANGE: #endif #if defined(GL_LINE_WIDTH_RANGE) && (!defined(GL_SMOOTH_LINE_WIDTH_RANGE) || GL_SMOOTH_LINE_WIDTH_RANGE != GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif #if defined(GL_ALIASED_POINT_SIZE_RANGE) case GL_ALIASED_POINT_SIZE_RANGE: #endif #if defined(GL_ALIASED_LINE_WIDTH_RANGE) case GL_ALIASED_LINE_WIDTH_RANGE: #endif #if defined(GL_DEPTH_RANGE) case GL_DEPTH_RANGE: #endif #if defined(GL_MAP1_GRID_DOMAIN) case GL_MAP1_GRID_DOMAIN: #endif #if defined(GL_MAP2_GRID_SEGMENTS) case GL_MAP2_GRID_SEGMENTS: #endif #if defined(GL_MAX_VIEWPORT_DIMS) case GL_MAX_VIEWPORT_DIMS: #endif #if defined(GL_POLYGON_MODE) case GL_POLYGON_MODE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } return nr_params; } #endif #endif PyQt5_gpl-5.10.1/qpy/QtGui/qpyopengl_init.cpp0000644000076500000240000000414713245233150021114 0ustar philstaff00000000000000// This is the initialisation support code for the QtGui module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include "qpyopengl_api.h" #include "qpyopengl_data_cache.h" // Perform any required initialisation. void qpyopengl_init() { // Initialise the OpenGL data cache type. if (!qpyopengl_dataCache_init_type()) Py_FatalError("PyQt5.QtGui: Failed to initialise dataCache type"); // Export the private helpers, ie. those that should not be used by // external handwritten code. #if QT_VERSION >= 0x050100 sipExportSymbol("qpyopengl_value_array", (void *)qpyopengl_value_array); sipExportSymbol("qpyopengl_value_array_cached", (void *)qpyopengl_value_array_cached); sipExportSymbol("qpyopengl_get", (void *)qpyopengl_get); sipExportSymbol("qpyopengl_from_GLint", (void *)qpyopengl_from_GLint); sipExportSymbol("qpyopengl_from_GLuint", (void *)qpyopengl_from_GLuint); sipExportSymbol("qpyopengl_from_GLboolean", (void *)qpyopengl_from_GLboolean); sipExportSymbol("qpyopengl_from_GLfloat", (void *)qpyopengl_from_GLfloat); #if defined(SIP_FEATURE_PyQt_Desktop_OpenGL) sipExportSymbol("qpyopengl_from_GLdouble", (void *)qpyopengl_from_GLdouble); #endif #endif } #endif PyQt5_gpl-5.10.1/qpy/QtGui/qpyopengl_misc.h0000644000076500000240000000235513245233150020550 0ustar philstaff00000000000000// This defines the interfaces to various odd and ends. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYOPENGL_MISC_H #define _QPYOPENGL_MISC_H #include // Replacements for the corresponding Python macros that use the limited API. #define Sequence_Fast_Size(o) \ (PyList_Check(o) ? PyList_Size(o) : PyTuple_Size(o)) #define Sequence_Fast_GetItem(o, i)\ (PyList_Check(o) ? PyList_GetItem(o, i) : PyTuple_GetItem(o, i)) #endif PyQt5_gpl-5.10.1/qpy/QtGui/qpyopengl_uniform_value_array.cpp0000644000076500000240000003164613245233150024226 0ustar philstaff00000000000000// This contains the support for shader program uniform value arrays. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include #include #include #include #include #include #include #include #include #include #include #include #include #include "qpyopengl_api.h" #include "qpyopengl_misc.h" // Forward declaratations. static void delete_array(void *array, const sipTypeDef *td); #if defined(SIP_USE_PYCAPSULE) static void array_dtor(PyObject *capsule); #else static void array_dtor(void *array, void *td); #endif // Parse a Python object as a sequence of either QVector[234]D or // QMatrix[234]x[234] instances, or a sequence of sequence of floats and return // an array that can be passed to QOpenGLShaderProgram::setUniformValueArray(). // The array is destroyed only when the shader is garbage collected or when // replaced by another array. const void *qpyopengl_uniform_value_array(PyObject *values, PyObject *shader, PyObject *key, const sipTypeDef **array_type, int *array_len, int *tsize, sipErrorState *estate) { // Check the key was created correctly. if (!key) { *estate = sipErrorFail; return 0; } // Get the dict that holds the converted arrays. PyObject *dict = sipGetUserObject((sipSimpleWrapper *)shader); if (!dict) { dict = PyDict_New(); if (!dict) { Py_DECREF(key); *estate = sipErrorFail; return 0; } sipSetUserObject((sipSimpleWrapper *)shader, dict); } // Check that values is a non-empty sequence. values = PySequence_Fast(values, "a uniform value array must be a sequence"); if (!values) { Py_DECREF(key); *estate = sipErrorContinue; return 0; } Py_ssize_t nr_items = Sequence_Fast_Size(values); if (nr_items < 1) { PyErr_SetString(PyExc_TypeError, "a uniform value array must have at least one element"); Py_DECREF(key); Py_DECREF(values); *estate = sipErrorFail; return 0; } // The first element determines the type expected. PyObject *itm = Sequence_Fast_GetItem(values, 0); const sipTypeDef *td; Py_ssize_t nr_dim = 0; void *array; if (sipCanConvertToType(itm, sipType_QVector2D, SIP_NOT_NONE)) { td = sipType_QVector2D; array = new QVector2D[nr_items]; } else if (sipCanConvertToType(itm, sipType_QVector3D, SIP_NOT_NONE)) { td = sipType_QVector3D; array = new QVector3D[nr_items]; } else if (sipCanConvertToType(itm, sipType_QVector4D, SIP_NOT_NONE)) { td = sipType_QVector4D; array = new QVector4D[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix2x2, SIP_NOT_NONE)) { td = sipType_QMatrix2x2; array = new QMatrix2x2[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix2x3, SIP_NOT_NONE)) { td = sipType_QMatrix2x3; array = new QMatrix2x3[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix2x4, SIP_NOT_NONE)) { td = sipType_QMatrix2x4; array = new QMatrix2x4[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix3x2, SIP_NOT_NONE)) { td = sipType_QMatrix3x2; array = new QMatrix3x2[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix3x3, SIP_NOT_NONE)) { td = sipType_QMatrix3x3; array = new QMatrix3x3[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix3x4, SIP_NOT_NONE)) { td = sipType_QMatrix3x4; array = new QMatrix3x4[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix4x2, SIP_NOT_NONE)) { td = sipType_QMatrix4x2; array = new QMatrix4x2[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix4x3, SIP_NOT_NONE)) { td = sipType_QMatrix4x3; array = new QMatrix4x3[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix4x4, SIP_NOT_NONE)) { td = sipType_QMatrix4x4; array = new QMatrix4x4[nr_items]; } else if (PySequence_Check(itm) && (nr_dim = PySequence_Size(itm)) >= 1) { td = 0; array = new GLfloat[nr_items * nr_dim]; } else { PyErr_SetString(PyExc_TypeError, "a uniform value array must be a sequence of QVector2D, " "QVector3D, QVector4D, QMatrix2x2, QMatrix2x3, QMatrix2x4, " "QMatrix3x2, QMatrix3x3, QMatrix3x4, QMatrix4x2, QMatrix4x3, " "QMatrix4x4, or a sequence of sequences of floats"); Py_DECREF(key); Py_DECREF(values); *estate = sipErrorFail; return 0; } // Convert the values. for (Py_ssize_t i = 0; i < nr_items; ++i) { int iserr = 0; itm = Sequence_Fast_GetItem(values, i); if (td) { void *cpp; cpp = sipForceConvertToType(itm, td, 0, SIP_NOT_NONE | SIP_NO_CONVERTORS, 0, &iserr); if (iserr) { PyErr_Format(PyExc_TypeError, "uniform value array elements should all be '%s', not " "'%s'", sipPyTypeName(sipTypeAsPyTypeObject(td)), sipPyTypeName(Py_TYPE(itm))); } else if (td == sipType_QVector2D) { QVector2D *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QVector3D) { QVector3D *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QVector4D) { QVector4D *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix2x2) { QMatrix2x2 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix2x3) { QMatrix2x3 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix2x4) { QMatrix2x4 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix3x2) { QMatrix3x2 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix3x3) { QMatrix3x3 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix3x4) { QMatrix3x4 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix4x2) { QMatrix4x2 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix4x3) { QMatrix4x3 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix4x4) { QMatrix4x4 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } } else { itm = PySequence_Fast(itm, "uniform value array elements should all be sequences"); if (itm) { if (Sequence_Fast_Size(itm) != nr_dim) { PyErr_Format(PyExc_TypeError, "uniform value array elements should all be " "sequences of length " #if PY_VERSION_HEX >= 0x02050000 "%zd", #else "%d", #endif nr_dim); Py_DECREF(itm); iserr = 1; } else { GLfloat *ap = reinterpret_cast(array); PyErr_Clear(); for (Py_ssize_t j = 0; j < nr_dim; ++j) *ap++ = PyFloat_AsDouble( Sequence_Fast_GetItem(itm, j)); if (PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "uniform value array elements should all be " "sequences of floats"); Py_DECREF(itm); iserr = 1; } } } else { iserr = 1; } } if (iserr) { Py_DECREF(key); Py_DECREF(values); delete_array(array, td); *estate = sipErrorFail; return 0; } } Py_DECREF(values); // Wrap the array in a Python object so that it won't leak. #if defined(SIP_USE_PYCAPSULE) PyObject *array_obj = PyCapsule_New(array, 0, array_dtor); if (array_obj && PyCapsule_SetContext(array_obj, const_cast(td)) != 0) { Py_DECREF(array_obj); array_obj = 0; } #else PyObject *array_obj = PyCObject_FromVoidPtrAndDesc(array, const_cast(td), array_dtor); #endif if (!array_obj) { Py_DECREF(key); delete_array(array, td); *estate = sipErrorFail; return 0; } int rc = PyDict_SetItem(dict, key, array_obj); Py_DECREF(key); Py_DECREF(array_obj); if (rc < 0) { *estate = sipErrorFail; return 0; } *array_type = td; *array_len = nr_items; *tsize = nr_dim; return array; } // Do the actual work of deleting the array. static void delete_array(void *array, const sipTypeDef *td) { if (td == sipType_QVector2D) delete[] reinterpret_cast(array); else if (td == sipType_QVector3D) delete[] reinterpret_cast(array); else if (td == sipType_QVector4D) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix2x2) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix2x3) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix2x4) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix3x2) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix3x3) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix3x4) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix4x2) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix4x3) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix4x4) delete[] reinterpret_cast(array); else delete[] reinterpret_cast(array); } // The dtor for the saved array. #if defined(SIP_USE_PYCAPSULE) static void array_dtor(PyObject *capsule) { delete_array(PyCapsule_GetPointer(capsule, 0), reinterpret_cast( PyCapsule_GetContext(capsule))); } #else static void array_dtor(void *array, void *td) { delete_array(array, reinterpret_cast(td)); } #endif #endif PyQt5_gpl-5.10.1/qpy/QtGui/qpyopengl_value_array.cpp0000644000076500000240000002473413245233150022467 0ustar philstaff00000000000000// This contains the support for QOpenGL value arrays. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include #if QT_VERSION >= 0x050100 #include "qpyopengl_api.h" #include "qpyopengl_data_cache.h" #include "qpyopengl_misc.h" // Forward declarations. static qpyopengl_dataCache *get_cache(PyObject *bindings); static void *convert_values(Array *cache, PyObject *values, GLenum gl_type, sipErrorState *estate); static void convert_byte(PyObject *itm, void *array, Py_ssize_t i); static void convert_ubyte(PyObject *itm, void *array, Py_ssize_t i); static void convert_short(PyObject *itm, void *array, Py_ssize_t i); static void convert_ushort(PyObject *itm, void *array, Py_ssize_t i); static void convert_int(PyObject *itm, void *array, Py_ssize_t i); static void convert_uint(PyObject *itm, void *array, Py_ssize_t i); static void convert_float(PyObject *itm, void *array, Py_ssize_t i); #if defined(SIP_FEATURE_PyQt_Desktop_OpenGL) static void convert_double(PyObject *itm, void *array, Py_ssize_t i); #endif // Get an array of OpenGL fundamental types from a sequence or an object that // implements a compatible buffer. const GLvoid *qpyopengl_value_array(sipErrorState *estate, PyObject *values, GLenum gl_type, PyObject *bindings) { // Handle the trivial None case first. 0 has a special meaning to some // OpenGL calls so we allow it for all. If this becomes a problem then we // can add a new variant of this function that handles None differently. if (values == Py_None) return 0; qpyopengl_dataCache *data_cache = get_cache(bindings); if (!data_cache) { *estate = sipErrorFail; return 0; } // Get an empty wrapper for the array. if (data_cache->uncached) data_cache->uncached->clear(); else data_cache->uncached = new Array; return convert_values(data_cache->uncached, values, gl_type, estate); } // Get an array of OpenGL fundamental types from a sequence or an object that // implements a compatible buffer. Cache the array so that it persists until a // similar call. const GLvoid *qpyopengl_value_array_cached(sipErrorState *estate, PyObject *values, GLenum gl_type, PyObject *bindings, const char *pkey, GLuint skey) { // Handle the trivial byte offset case first. PyErr_Clear(); void *data = PyLong_AsVoidPtr(values); if (!PyErr_Occurred()) return data; PyErr_Clear(); qpyopengl_dataCache *data_cache = get_cache(bindings); if (!data_cache) { *estate = sipErrorFail; return 0; } if (!data_cache->pcache) data_cache->pcache = new PrimaryCache; // Get an empty wrapper for the array. PrimaryCacheEntry *pce = (*data_cache->pcache)[pkey]; if (!pce) { pce = new PrimaryCacheEntry; data_cache->pcache->insert(pkey, pce); } Array *array; if (skey == 0) { array = &pce->skey_0; } else { if (!pce->skey_n) pce->skey_n = new SecondaryCache; array = (*pce->skey_n)[skey]; if (!array) { array = new Array; pce->skey_n->insert(skey, array); } } array->clear(); return convert_values(array, values, gl_type, estate); } // Get the cache for a set of bindings. static qpyopengl_dataCache *get_cache(PyObject *bindings) { // Create the cache if it doesn't already exist. qpyopengl_dataCache *data_cache = (qpyopengl_dataCache *)sipGetUserObject((sipSimpleWrapper *)bindings); if (!data_cache) { data_cache = qpyopengl_dataCache_New(); if (data_cache) sipSetUserObject((sipSimpleWrapper *)bindings, (PyObject *)data_cache); } return data_cache; } // Convert the Python values to a raw array. static void *convert_values(Array *array, PyObject *values, GLenum gl_type, sipErrorState *estate) { #if PY_VERSION_HEX >= 0x02060300 int rc = sipGetBufferInfo(values, &array->buffer); if (rc < 0) { *estate = sipErrorFail; return 0; } if (rc > 0) { // Check the buffer is compatible with what we need. GLenum array_type; switch (*array->buffer.bi_format) { case 'b': array_type = GL_BYTE; break; case 'B': array_type = GL_UNSIGNED_BYTE; break; case 'h': array_type = GL_SHORT; break; case 'H': array_type = GL_UNSIGNED_SHORT; break; case 'i': array_type = GL_INT; break; case 'I': array_type = GL_UNSIGNED_INT; break; case 'f': array_type = GL_FLOAT; break; #if defined(SIP_FEATURE_PyQt_Desktop_OpenGL) case 'd': array_type = GL_DOUBLE; break; #endif default: PyErr_Format(PyExc_TypeError, "unsupported buffer type '%s'", array->buffer.bi_format); *estate = sipErrorFail; return 0; } if (array_type != gl_type) { PyErr_SetString(PyExc_TypeError, "the buffer type is not the same as the array type"); *estate = sipErrorFail; return 0; } return array->buffer.bi_buf; } #else PyBufferProcs *bf = Py_TYPE(values)->tp_as_buffer; if (bf && bf->bf_getreadbuffer && bf->bf_getsegcount) { if (bf->bf_getsegcount(values, 0) != 1) { PyErr_SetString(PyExc_TypeError, "single-segment buffer object expected"); *estate = sipErrorFail; return 0; } if (bf->bf_getreadbuffer(values, 0, reinterpret_cast(&array)) < 0) { *estate = sipErrorFail; return 0; } Py_INCREF(values); array->buffer = values; return array; } #endif PyObject *seq = PySequence_Fast(values, "array must be a sequence or a buffer"); if (!seq) { *estate = sipErrorContinue; return 0; } Py_ssize_t nr_items = Sequence_Fast_Size(seq); if (nr_items < 1) { Py_DECREF(seq); PyErr_SetString(PyExc_TypeError, "array must have at least one element"); *estate = sipErrorFail; return 0; } void (*convertor)(PyObject *, void *, Py_ssize_t); size_t element_size; switch (gl_type) { case GL_BYTE: convertor = convert_byte; element_size = sizeof (GLbyte); break; case GL_UNSIGNED_BYTE: convertor = convert_ubyte; element_size = sizeof (GLubyte); break; case GL_SHORT: convertor = convert_short; element_size = sizeof (GLshort); break; case GL_UNSIGNED_SHORT: convertor = convert_ushort; element_size = sizeof (GLushort); break; case GL_INT: convertor = convert_int; element_size = sizeof (GLint); break; case GL_UNSIGNED_INT: convertor = convert_uint; element_size = sizeof (GLuint); break; case GL_FLOAT: convertor = convert_float; element_size = sizeof (GLfloat); break; #if defined(SIP_FEATURE_PyQt_Desktop_OpenGL) #if GL_DOUBLE != GL_FLOAT case GL_DOUBLE: convertor = convert_double; element_size = sizeof (GLdouble); break; #endif #endif default: Py_DECREF(seq); PyErr_SetString(PyExc_TypeError, "unsupported GL element type"); *estate = sipErrorFail; return 0; } void *data = sipMalloc(nr_items * element_size); if (!data) { Py_DECREF(seq); *estate = sipErrorFail; return 0; } for (Py_ssize_t i = 0; i < nr_items; ++i) { PyErr_Clear(); convertor(Sequence_Fast_GetItem(seq, i), data, i); if (PyErr_Occurred()) { sipFree(data); Py_DECREF(seq); *estate = sipErrorFail; return 0; } } Py_DECREF(seq); array->data = data; return data; } // Convert a Python object to a GLbyte. static void convert_byte(PyObject *itm, void *array, Py_ssize_t i) { reinterpret_cast(array)[i] = sipLong_AsSignedChar(itm); } // Convert a Python object to a GLubyte. static void convert_ubyte(PyObject *itm, void *array, Py_ssize_t i) { reinterpret_cast(array)[i] = sipLong_AsUnsignedChar(itm); } // Convert a Python object to a GLshort. static void convert_short(PyObject *itm, void *array, Py_ssize_t i) { reinterpret_cast(array)[i] = sipLong_AsShort(itm); } // Convert a Python object to a GLushort. static void convert_ushort(PyObject *itm, void *array, Py_ssize_t i) { reinterpret_cast(array)[i] = sipLong_AsUnsignedShort(itm); } // Convert a Python object to a GLint. static void convert_int(PyObject *itm, void *array, Py_ssize_t i) { reinterpret_cast(array)[i] = sipLong_AsInt(itm); } // Convert a Python object to a GLuint. static void convert_uint(PyObject *itm, void *array, Py_ssize_t i) { reinterpret_cast(array)[i] = sipLong_AsUnsignedInt(itm); } // Convert a Python object to a GLfloat. static void convert_float(PyObject *itm, void *array, Py_ssize_t i) { reinterpret_cast(array)[i] = PyFloat_AsDouble(itm); } #if defined(SIP_FEATURE_PyQt_Desktop_OpenGL) // Convert a Python object to a GLdouble. static void convert_double(PyObject *itm, void *array, Py_ssize_t i) { reinterpret_cast(array)[i] = PyFloat_AsDouble(itm); } #endif #endif #endif PyQt5_gpl-5.10.1/qpy/QtGui/qpyopengl_version_functions.cpp0000644000076500000240000001003413245233150023716 0ustar philstaff00000000000000// This contains the support for QOpenGLContext.versionFunctions(). // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "sipAPIQtGui.h" #if defined(SIP_FEATURE_PyQt_OpenGL) #include #if QT_VERSION >= 0x050100 #include #include "qpyopengl_api.h" // Forward declarations. int qpyopengl_add_constants(PyObject *obj); // The cache of type objects corresponding to each set of functions. static QList funcs_types; PyObject *qpyopengl_version_functions(const QOpenGLContext *context, PyObject *py_context, const QOpenGLVersionProfile *version_profile) { // Get a valid version profile. QOpenGLVersionProfile vp; if (version_profile && version_profile->isValid()) vp = *version_profile; else vp = QOpenGLVersionProfile(context->format()); // Create the functions. QAbstractOpenGLFunctions *funcs = context->versionFunctions(vp); if (!funcs) { Py_INCREF(Py_None); return Py_None; } // Qt doesn't allow us to introspect the functions to find which set we // have, so work out what it should be based on the version profile. #if defined(QT_OPENGL_ES_2) QByteArray name("QOpenGLFunctions_ES2"); #else QByteArray name("QOpenGLFunctions_"); QPair version = vp.version(); name.append(QByteArray::number(version.first)); name.append('_'); name.append(QByteArray::number(version.second)); if (vp.hasProfiles()) { switch (vp.profile()) { case QSurfaceFormat::CoreProfile: name.append("_Core"); break; case QSurfaceFormat::CompatibilityProfile: name.append("_Compatibility"); break; default: ; } } #endif // See if we already have the type object. PyTypeObject *funcs_type = 0; for (int i = 0; i < funcs_types.count(); ++i) { PyTypeObject *ft = funcs_types.at(i); if (name == sipPyTypeName(ft)) { funcs_type = ft; break; } } if (!funcs_type) { // Get the type object. QByteArray module_name("PyQt5._"); module_name.append(name); PyObject *module = PyImport_ImportModule(module_name.constData()); if (!module) return 0; PyObject *obj = PyObject_GetAttrString(module, name.constData()); Py_DECREF(module); if (!obj) return 0; // Sanity check the type object. if (PyObject_IsSubclass(obj, (PyObject *)sipTypeAsPyTypeObject(sipType_QAbstractOpenGLFunctions)) <= 0) { Py_DECREF(obj); PyErr_Format(PyExc_TypeError, "%s.%s has an unexpected type", module_name.constData(), name.constData()); return 0; } // Populate the type with the OpenGL constants. if (qpyopengl_add_constants(obj) < 0) { Py_DECREF(obj); return 0; } // Cache the type object. funcs_type = (PyTypeObject *)obj; funcs_types.append(funcs_type); } // Ownership is with the context. return sipConvertFromNewType(funcs, sipTypeFromPyTypeObject(funcs_type), py_context); } #endif #endif PyQt5_gpl-5.10.1/qpy/QtMultimedia/0000755000076500000240000000000013245233150016707 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/qpy/QtNetwork/0000755000076500000240000000000013245233150016246 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/qpy/QtPrintSupport/0000755000076500000240000000000013245233150017306 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/qpy/QtQml/0000755000076500000240000000000013245233150015346 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/qpy/QtQml/qpyqml_api.h0000644000076500000240000000437513245233150017704 0ustar philstaff00000000000000// This defines the API provided by this library. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQML_API_H #define _QPYQML_API_H #include #include #include #include #include // Support for qmlRegisterType(). int qpyqml_register_type(PyTypeObject *py_type, PyTypeObject *attached); int qpyqml_register_library_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *qml_name, int revision, PyTypeObject *attached); int qpyqml_register_singleton_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *type_name, PyObject *factory); int qpyqml_register_uncreatable_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *qml_name, const QString &reason, int revision); // Support for qmlAttachedPropertiesObject(). QObject *qpyqml_find_proxy_for(QObject *proxied); // Support for QJSValue. int qpyqml_canConvertTo_QJSValue(PyObject *py); int qpyqml_convertTo_QJSValue(PyObject *py, PyObject *transferObj, QJSValue **cpp, int *isErr); // Python exception handling. typedef void (*pyqt5_qtqml_err_print_t)(); extern pyqt5_qtqml_err_print_t pyqt5_qtqml_err_print; // Other imports from QtCore. typedef const QMetaObject *(*pyqt5_qtqml_get_qmetaobject_t)(PyTypeObject *); extern pyqt5_qtqml_get_qmetaobject_t pyqt5_qtqml_get_qmetaobject; // Initialisation. void qpyqml_post_init(PyObject *module_dict); #endif PyQt5_gpl-5.10.1/qpy/QtQml/qpyqml_listdata.cpp0000644000076500000240000000330513245233150021263 0ustar philstaff00000000000000// This is the implementation of the ListData class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpyqml_listdata.h" // Create a null instance. ListData::ListData(PyObject *py_type_, PyObject *py_obj_, PyObject *py_list_, PyObject *py_append_, PyObject *py_count_, PyObject *py_at_, PyObject *py_clear_, QObject *parent) : QObject(parent), py_type(py_type_), py_obj(py_obj_), py_list(py_list_), py_append(py_append_), py_count(py_count_), py_at(py_at_), py_clear(py_clear_) { Py_XINCREF(py_type); Py_XINCREF(py_obj); Py_XINCREF(py_list); Py_XINCREF(py_append); Py_XINCREF(py_count); Py_XINCREF(py_at); Py_XINCREF(py_clear); } // Destroy the data. ListData::~ListData() { Py_XDECREF(py_type); Py_XDECREF(py_obj); Py_XDECREF(py_list); Py_XDECREF(py_append); Py_XDECREF(py_count); Py_XDECREF(py_at); Py_XDECREF(py_clear); } PyQt5_gpl-5.10.1/qpy/QtQml/qpyqml_listdata.h0000644000076500000240000000262713245233150020736 0ustar philstaff00000000000000// This is the definition of the ListData class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQML_LISTDATA_H #define _QPYQML_LISTDATA_H #include #include class ListData : public QObject { Q_OBJECT public: ListData(PyObject *py_type, PyObject *py_obj, PyObject *py_list, PyObject *py_append, PyObject *py_count, PyObject *py_at, PyObject *py_clear, QObject *parent); ~ListData(); PyObject *py_type; PyObject *py_obj; PyObject *py_list; PyObject *py_append; PyObject *py_count; PyObject *py_at; PyObject *py_clear; }; #endif PyQt5_gpl-5.10.1/qpy/QtQml/qpyqml_post_init.cpp0000644000076500000240000000465113245233150021473 0ustar philstaff00000000000000// This is the initialisation support code for the QtQml module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpyqml_api.h" #include "qpyqmllistproperty.h" #include "qpyqmllistpropertywrapper.h" #include "qpyqmlobject.h" #include "sipAPIQtQml.h" // Imports from QtCore. pyqt5_qtqml_err_print_t pyqt5_qtqml_err_print; // Perform any required initialisation. void qpyqml_post_init(PyObject *module_dict) { // QtCore imports. pyqt5_qtqml_err_print = (pyqt5_qtqml_err_print_t)sipImportSymbol( "pyqt5_err_print"); Q_ASSERT(pyqt5_qtqml_err_print); // Initialise the QQmlListProperty type. if (!qpyqml_QQmlListProperty_init_type()) Py_FatalError("PyQt5.QtQml: Failed to initialise QQmlListProperty type"); // Create the only instance and add it to the module dictionary. PyObject *inst = PyObject_CallFunction( (PyObject *)qpyqml_QQmlListProperty_TypeObject, const_cast("s"), "QQmlListProperty"); if (!inst) Py_FatalError("PyQt5.QtQml: Failed to create QQmlListProperty instance"); if (PyDict_SetItemString(module_dict, "QQmlListProperty", inst) < 0) Py_FatalError("PyQt5.QtQml: Failed to set QQmlListProperty instance"); // Initialise the private QQmlListPropertyWrapper type. if (!qpyqml_QQmlListPropertyWrapper_init_type()) Py_FatalError("PyQt5.QtQml: Failed to initialise QQmlListPropertyWrapper type"); // Register the proxy resolver. if (sipRegisterProxyResolver(sipType_QObject, QPyQmlObjectProxy::resolveProxy) < 0) Py_FatalError("PyQt5.QtQml: Failed to register proxy resolver"); } PyQt5_gpl-5.10.1/qpy/QtQml/qpyqml_qjsvalue.cpp0000644000076500000240000000640213245233150021311 0ustar philstaff00000000000000// This is the support for QJSValue. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpyqml_api.h" #include "sipAPIQtQml.h" // See if a Python object can be converted to a QJSValue. int qpyqml_canConvertTo_QJSValue(PyObject *py) { // Note that the API doesn't provide the ability to test for a constrained // named enum. if (PyObject_TypeCheck(py, sipTypeAsPyTypeObject(sipType_QJSValue_SpecialValue))) return 1; if (PyBool_Check(py)) return 1; if (PyLong_Check(py)) return 1; #if PY_MAJOR_VERSION < 3 if (PyInt_Check(py)) return 1; #endif if (PyFloat_Check(py)) return 1; if (sipCanConvertToType(py, sipType_QString, 0)) return 1; return sipCanConvertToType(py, sipType_QJSValue, SIP_NO_CONVERTORS); } // Convert a Python object to a QJSValue. int qpyqml_convertTo_QJSValue(PyObject *py, PyObject *transferObj, QJSValue **cpp, int *isErr) { if (PyObject_TypeCheck(py, sipTypeAsPyTypeObject(sipType_QJSValue_SpecialValue))) { int v = sipConvertToEnum(py, sipType_QJSValue_SpecialValue); if (PyErr_Occurred()) { *isErr = 1; return 0; } *cpp = new QJSValue(static_cast(v)); return sipGetState(transferObj); } if (PyBool_Check(py)) { *cpp = new QJSValue(py == Py_True); return sipGetState(transferObj); } if (PyLong_Check(py)) { *cpp = new QJSValue((int)PyLong_AsLong(py)); return sipGetState(transferObj); } #if PY_MAJOR_VERSION < 3 if (PyInt_Check(py)) { *cpp = new QJSValue((int)PyInt_AS_LONG(py)); return sipGetState(transferObj); } #endif if (PyFloat_Check(py)) { *cpp = new QJSValue((double)PyFloat_AsDouble(py)); return sipGetState(transferObj); } if (sipCanConvertToType(py, sipType_QString, 0)) { int state; QString *qs = reinterpret_cast(sipConvertToType(py, sipType_QString, 0, 0, &state, isErr)); if (*isErr) { sipReleaseType(qs, sipType_QString, state); return 0; } *cpp = new QJSValue(*qs); sipReleaseType(qs, sipType_QString, state); return sipGetState(transferObj); } *cpp = reinterpret_cast(sipConvertToType(py, sipType_QJSValue, transferObj, SIP_NO_CONVERTORS, 0, isErr)); return 0; } PyQt5_gpl-5.10.1/qpy/QtQml/qpyqml_register_singleton_type.cpp0000644000076500000240000001214613245233150024430 0ustar philstaff00000000000000// This contains the main implementation of qmlRegisterSingletonType. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpyqml_api.h" #include "qpyqmlsingletonobject.h" #include "sipAPIQtQml.h" // Forward declarations. static QQmlPrivate::RegisterSingletonType *init_type(PyTypeObject *py_type, PyObject *factory); static int register_type(QQmlPrivate::RegisterSingletonType *rt); // The number of types that can be registered. const int NrOfTypes = 30; // The registration data for the proxy types. static QQmlPrivate::RegisterSingletonType proxy_types[NrOfTypes]; // Register a singleton Python type. int qpyqml_register_singleton_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *type_name, PyObject *factory) { // Initialise the registration data structure. QQmlPrivate::RegisterSingletonType *rt = init_type(py_type, factory); if (!rt) return -1; rt->uri = uri; rt->versionMajor = major; rt->versionMinor = minor; rt->typeName = type_name; return register_type(rt); } // Register the proxy type with QML. static int register_type(QQmlPrivate::RegisterSingletonType *rt) { int type_id = QQmlPrivate::qmlregister(QQmlPrivate::SingletonRegistration, rt); if (type_id < 0) { PyErr_SetString(PyExc_RuntimeError, "unable to register singleton type with QML"); return -1; } return type_id; } #define QPYQML_SINGLETON_TYPE_INIT(n) \ case n##U: \ QPyQmlSingletonObject##n::staticMetaObject = *mo; \ QPyQmlSingletonObject##n::factory = factory; \ rt->qobjectApi = QPyQmlSingletonObject##n::objectFactory; \ rt->typeId = qRegisterNormalizedMetaType(ptr_name.constData()); \ break // Return a pointer to the initialised registration structure for a type. static QQmlPrivate::RegisterSingletonType *init_type(PyTypeObject *py_type, PyObject *factory) { // Check the type is derived from QObject. if (!PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QObject))) { PyErr_SetString(PyExc_TypeError, "type being registered must be a sub-type of QObject"); return 0; } // Get the type's number and check there aren't too many. int type_nr = QPyQmlSingletonObjectProxy::addType(); if (type_nr >= NrOfTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d singleton types may be registered with QML", NrOfTypes); return 0; } QQmlPrivate::RegisterSingletonType *rt = &proxy_types[type_nr]; const QMetaObject *mo = pyqt5_qtqml_get_qmetaobject(py_type); QByteArray ptr_name(sipPyTypeName(py_type)); ptr_name.append('*'); // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQML_SINGLETON_TYPE_INIT(0); QPYQML_SINGLETON_TYPE_INIT(1); QPYQML_SINGLETON_TYPE_INIT(2); QPYQML_SINGLETON_TYPE_INIT(3); QPYQML_SINGLETON_TYPE_INIT(4); QPYQML_SINGLETON_TYPE_INIT(5); QPYQML_SINGLETON_TYPE_INIT(6); QPYQML_SINGLETON_TYPE_INIT(7); QPYQML_SINGLETON_TYPE_INIT(8); QPYQML_SINGLETON_TYPE_INIT(9); QPYQML_SINGLETON_TYPE_INIT(10); QPYQML_SINGLETON_TYPE_INIT(11); QPYQML_SINGLETON_TYPE_INIT(12); QPYQML_SINGLETON_TYPE_INIT(13); QPYQML_SINGLETON_TYPE_INIT(14); QPYQML_SINGLETON_TYPE_INIT(15); QPYQML_SINGLETON_TYPE_INIT(16); QPYQML_SINGLETON_TYPE_INIT(17); QPYQML_SINGLETON_TYPE_INIT(18); QPYQML_SINGLETON_TYPE_INIT(19); QPYQML_SINGLETON_TYPE_INIT(20); QPYQML_SINGLETON_TYPE_INIT(21); QPYQML_SINGLETON_TYPE_INIT(22); QPYQML_SINGLETON_TYPE_INIT(23); QPYQML_SINGLETON_TYPE_INIT(24); QPYQML_SINGLETON_TYPE_INIT(25); QPYQML_SINGLETON_TYPE_INIT(26); QPYQML_SINGLETON_TYPE_INIT(27); QPYQML_SINGLETON_TYPE_INIT(28); QPYQML_SINGLETON_TYPE_INIT(29); } // Initialise the remaining members. rt->instanceMetaObject = mo; rt->version = 2; rt->uri = 0; rt->versionMajor = 0; rt->versionMinor = 0; rt->typeName = 0; rt->scriptApi = 0; rt->revision = 0; Py_INCREF(factory); return rt; } PyQt5_gpl-5.10.1/qpy/QtQml/qpyqml_register_type.cpp0000644000076500000240000002672513245233150022356 0ustar philstaff00000000000000// This contains the main implementation of qmlRegisterType. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include #include #include "qpyqml_api.h" #include "qpyqmlobject.h" #include "sipAPIQtQml.h" class QQmlPropertyValueInterceptor; // Forward declarations. static QQmlPrivate::RegisterType *init_type(PyTypeObject *py_type, bool ctor, int revision, PyTypeObject *attached); static void complete_init(QQmlPrivate::RegisterType *rt, int revision); static int register_type(QQmlPrivate::RegisterType *rt); // The number of types that can be registered. const int NrOfTypes = 60; // The registration data for the proxy types. static QQmlPrivate::RegisterType proxy_types[NrOfTypes]; // Register a Python type. int qpyqml_register_type(PyTypeObject *py_type, PyTypeObject *attached) { // Initialise the registration data structure. QQmlPrivate::RegisterType *rt = init_type(py_type, false, -1, attached); if (!rt) return -1; return register_type(rt); } // Register a library Python type. int qpyqml_register_library_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *qml_name, int revision, PyTypeObject *attached) { // Initialise the registration data structure. QQmlPrivate::RegisterType *rt = init_type(py_type, true, revision, attached); if (!rt) return -1; rt->uri = uri; rt->versionMajor = major; rt->versionMinor = minor; rt->elementName = qml_name; return register_type(rt); } // Register an uncreatable library Python type. int qpyqml_register_uncreatable_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *qml_name, const QString &reason, int revision) { // Initialise the registration data structure. QQmlPrivate::RegisterType *rt = init_type(py_type, false, revision, 0); if (!rt) return -1; rt->noCreationReason = reason; rt->uri = uri; rt->versionMajor = major; rt->versionMinor = minor; rt->elementName = qml_name; return register_type(rt); } // Register the proxy type with QML. static int register_type(QQmlPrivate::RegisterType *rt) { int type_id = QQmlPrivate::qmlregister(QQmlPrivate::TypeRegistration, rt); if (type_id < 0) { PyErr_SetString(PyExc_RuntimeError, "unable to register type with QML"); return -1; } return type_id; } #define QPYQML_TYPE_INIT(n) \ case n##U: \ QPyQmlObject##n::staticMetaObject = *mo; \ QPyQmlObject##n::attachedPyType = attached; \ rt->typeId = qRegisterNormalizedMetaType(ptr_name); \ rt->listId = qRegisterNormalizedMetaType >(list_name); \ rt->objectSize = ctor ? sizeof(QPyQmlObject##n) : 0; \ if (ctor) rt->create = QQmlPrivate::createInto; else rt->create = 0; \ rt->attachedPropertiesFunction = attached_mo ? QPyQmlObject##n::attachedProperties : 0; \ rt->parserStatusCast = is_parser_status ? QQmlPrivate::StaticCastSelector::cast() : -1; \ rt->valueSourceCast = is_value_source ? QQmlPrivate::StaticCastSelector::cast() : -1; \ rt->valueInterceptorCast = QQmlPrivate::StaticCastSelector::cast(); \ break // This is needed for GCC v4.6 and earlier. #define QPYQML_TYPE_IMPL(n) \ template void QQmlPrivate::createInto(void *) QPYQML_TYPE_IMPL(0); QPYQML_TYPE_IMPL(1); QPYQML_TYPE_IMPL(2); QPYQML_TYPE_IMPL(3); QPYQML_TYPE_IMPL(4); QPYQML_TYPE_IMPL(5); QPYQML_TYPE_IMPL(6); QPYQML_TYPE_IMPL(7); QPYQML_TYPE_IMPL(8); QPYQML_TYPE_IMPL(9); QPYQML_TYPE_IMPL(10); QPYQML_TYPE_IMPL(11); QPYQML_TYPE_IMPL(12); QPYQML_TYPE_IMPL(13); QPYQML_TYPE_IMPL(14); QPYQML_TYPE_IMPL(15); QPYQML_TYPE_IMPL(16); QPYQML_TYPE_IMPL(17); QPYQML_TYPE_IMPL(18); QPYQML_TYPE_IMPL(19); QPYQML_TYPE_IMPL(20); QPYQML_TYPE_IMPL(21); QPYQML_TYPE_IMPL(22); QPYQML_TYPE_IMPL(23); QPYQML_TYPE_IMPL(24); QPYQML_TYPE_IMPL(25); QPYQML_TYPE_IMPL(26); QPYQML_TYPE_IMPL(27); QPYQML_TYPE_IMPL(28); QPYQML_TYPE_IMPL(29); QPYQML_TYPE_IMPL(30); QPYQML_TYPE_IMPL(31); QPYQML_TYPE_IMPL(32); QPYQML_TYPE_IMPL(33); QPYQML_TYPE_IMPL(34); QPYQML_TYPE_IMPL(35); QPYQML_TYPE_IMPL(36); QPYQML_TYPE_IMPL(37); QPYQML_TYPE_IMPL(38); QPYQML_TYPE_IMPL(39); QPYQML_TYPE_IMPL(40); QPYQML_TYPE_IMPL(41); QPYQML_TYPE_IMPL(42); QPYQML_TYPE_IMPL(43); QPYQML_TYPE_IMPL(44); QPYQML_TYPE_IMPL(45); QPYQML_TYPE_IMPL(46); QPYQML_TYPE_IMPL(47); QPYQML_TYPE_IMPL(48); QPYQML_TYPE_IMPL(49); QPYQML_TYPE_IMPL(50); QPYQML_TYPE_IMPL(51); QPYQML_TYPE_IMPL(52); QPYQML_TYPE_IMPL(53); QPYQML_TYPE_IMPL(54); QPYQML_TYPE_IMPL(55); QPYQML_TYPE_IMPL(56); QPYQML_TYPE_IMPL(57); QPYQML_TYPE_IMPL(58); QPYQML_TYPE_IMPL(59); // Return a pointer to the initialised registration structure for a type. static QQmlPrivate::RegisterType *init_type(PyTypeObject *py_type, bool ctor, int revision, PyTypeObject *attached) { PyTypeObject *qobject_type = sipTypeAsPyTypeObject(sipType_QObject); // Check the type is derived from QObject and get its meta-object. if (!PyType_IsSubtype(py_type, qobject_type)) { PyErr_SetString(PyExc_TypeError, "type being registered must be a sub-type of QObject"); return 0; } const QMetaObject *mo = pyqt5_qtqml_get_qmetaobject(py_type); // See if the type is a parser status. bool is_parser_status = PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQmlParserStatus)); // See if the type is a property value source. bool is_value_source = PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQmlPropertyValueSource)); // Check any attached type is derived from QObject and get its meta-object. const QMetaObject *attached_mo; if (attached) { if (!PyType_IsSubtype(attached, qobject_type)) { PyErr_SetString(PyExc_TypeError, "attached properties type must be a sub-type of QObject"); return 0; } attached_mo = pyqt5_qtqml_get_qmetaobject(attached); Py_INCREF((PyObject *)attached); } else { attached_mo = 0; } QByteArray ptr_name(sipPyTypeName(py_type)); ptr_name.append('*'); QByteArray list_name(sipPyTypeName(py_type)); list_name.prepend("QQmlListProperty<"); list_name.append('>'); QQmlPrivate::RegisterType *rt; // See if we have the QQuickItem registation helper from the QtQuick // module. Check each time because it could be imported at any point. typedef sipErrorState (*QQuickItemRegisterFn)(PyTypeObject *, const QMetaObject *, const QByteArray &, const QByteArray &, QQmlPrivate::RegisterType **); static QQuickItemRegisterFn qquickitem_register = 0; if (!qquickitem_register) qquickitem_register = (QQuickItemRegisterFn)sipImportSymbol( "qtquick_register_item"); if (qquickitem_register) { sipErrorState estate = qquickitem_register(py_type, mo, ptr_name, list_name, &rt); if (estate == sipErrorFail) return 0; if (estate == sipErrorNone) { complete_init(rt, revision); return rt; } } // Get the type's number and check there aren't too many. int type_nr = QPyQmlObjectProxy::addType(py_type); if (type_nr >= NrOfTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d types may be registered with QML", NrOfTypes); return 0; } rt = &proxy_types[type_nr]; // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQML_TYPE_INIT(0); QPYQML_TYPE_INIT(1); QPYQML_TYPE_INIT(2); QPYQML_TYPE_INIT(3); QPYQML_TYPE_INIT(4); QPYQML_TYPE_INIT(5); QPYQML_TYPE_INIT(6); QPYQML_TYPE_INIT(7); QPYQML_TYPE_INIT(8); QPYQML_TYPE_INIT(9); QPYQML_TYPE_INIT(10); QPYQML_TYPE_INIT(11); QPYQML_TYPE_INIT(12); QPYQML_TYPE_INIT(13); QPYQML_TYPE_INIT(14); QPYQML_TYPE_INIT(15); QPYQML_TYPE_INIT(16); QPYQML_TYPE_INIT(17); QPYQML_TYPE_INIT(18); QPYQML_TYPE_INIT(19); QPYQML_TYPE_INIT(20); QPYQML_TYPE_INIT(21); QPYQML_TYPE_INIT(22); QPYQML_TYPE_INIT(23); QPYQML_TYPE_INIT(24); QPYQML_TYPE_INIT(25); QPYQML_TYPE_INIT(26); QPYQML_TYPE_INIT(27); QPYQML_TYPE_INIT(28); QPYQML_TYPE_INIT(29); QPYQML_TYPE_INIT(30); QPYQML_TYPE_INIT(31); QPYQML_TYPE_INIT(32); QPYQML_TYPE_INIT(33); QPYQML_TYPE_INIT(34); QPYQML_TYPE_INIT(35); QPYQML_TYPE_INIT(36); QPYQML_TYPE_INIT(37); QPYQML_TYPE_INIT(38); QPYQML_TYPE_INIT(39); QPYQML_TYPE_INIT(40); QPYQML_TYPE_INIT(41); QPYQML_TYPE_INIT(42); QPYQML_TYPE_INIT(43); QPYQML_TYPE_INIT(44); QPYQML_TYPE_INIT(45); QPYQML_TYPE_INIT(46); QPYQML_TYPE_INIT(47); QPYQML_TYPE_INIT(48); QPYQML_TYPE_INIT(49); QPYQML_TYPE_INIT(50); QPYQML_TYPE_INIT(51); QPYQML_TYPE_INIT(52); QPYQML_TYPE_INIT(53); QPYQML_TYPE_INIT(54); QPYQML_TYPE_INIT(55); QPYQML_TYPE_INIT(56); QPYQML_TYPE_INIT(57); QPYQML_TYPE_INIT(58); QPYQML_TYPE_INIT(59); } rt->metaObject = mo; rt->attachedPropertiesMetaObject = attached_mo; complete_init(rt, revision); return rt; } // Complete the initialisation of a type registration structure. static void complete_init(QQmlPrivate::RegisterType *rt, int revision) { if (revision < 0) { rt->version = 0; rt->revision = 0; } else { rt->version = 1; rt->revision = revision; } rt->uri = 0; rt->versionMajor = 0; rt->versionMinor = 0; rt->elementName = 0; rt->extensionObjectCreate = 0; rt->extensionMetaObject = 0; rt->customParser = 0; } // Return the proxy that created an object. This is called with the GIL. QObject *qpyqml_find_proxy_for(QObject *proxied) { QSetIterator it(QPyQmlObjectProxy::proxies); while (it.hasNext()) { QPyQmlObjectProxy *proxy = static_cast(it.next()); if (proxy->proxied.data() == proxied) return proxy; } PyErr_Format(PyExc_TypeError, "QObject instance at %p was not created from QML", proxied); return 0; } PyQt5_gpl-5.10.1/qpy/QtQml/qpyqmllistproperty.cpp0000644000076500000240000002527413245233150022110 0ustar philstaff00000000000000// This is the implementation of the QQmlListProperty class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpyqmllistproperty.h" #include "qpyqmllistpropertywrapper.h" #include "qpyqml_listdata.h" #include "sipAPIQtQml.h" // The type object. PyTypeObject *qpyqml_QQmlListProperty_TypeObject; // Forward declarations. extern "C" { static PyObject *QQmlListProperty_call(PyObject *, PyObject *args, PyObject *kwds); } static void list_append(QQmlListProperty *p, QObject *el); static QObject *list_at(QQmlListProperty *p, int idx); static void list_clear(QQmlListProperty *p); static int list_count(QQmlListProperty *p); static void bad_result(PyObject *py_res, const char *context); // The type's doc-string. PyDoc_STRVAR(QQmlListProperty_doc, "QQmlListProperty(type, object, list)\n" "QQmlListProperty(type, object, append=None, count=None, at=None, clear=None)"); // This implements the QQmlListProperty Python type. It is a sub-type of the // standard string type that is callable. #if PY_MAJOR_VERSION >= 3 #define TPFLAGS Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_UNICODE_SUBCLASS #define BASE_TYPE PyUnicode_Type #else #define TPFLAGS Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_STRING_SUBCLASS #define BASE_TYPE PyString_Type #endif #if PY_VERSION_HEX >= 0x03040000 // Define the slots. static PyType_Slot qpyqml_QQmlListProperty_Slots[] = { {Py_tp_base, (void *)&BASE_TYPE}, {Py_tp_call, (void *)QQmlListProperty_call}, {Py_tp_doc, (void *)QQmlListProperty_doc}, {0, 0} }; // Define the type. static PyType_Spec qpyqml_QQmlListProperty_Spec = { "PyQt5.QtQml.QQmlListProperty", 0, 0, TPFLAGS, qpyqml_QQmlListProperty_Slots }; #else // Define the type. PyTypeObject qpyqml_QQmlListProperty_Type = { PyVarObject_HEAD_INIT(NULL, 0) #if PY_VERSION_HEX >= 0x02050000 "PyQt5.QtQml.QQmlListProperty", #else const_cast("PyQt5.QtQml.QQmlListProperty"), #endif 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, QQmlListProperty_call, 0, 0, 0, 0, TPFLAGS, QQmlListProperty_doc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, #if PY_VERSION_HEX >= 0x03040000 0, #endif }; #endif // Initialise the type and return true if there was no error. bool qpyqml_QQmlListProperty_init_type() { #if PY_VERSION_HEX >= 0x03040000 qpyqml_QQmlListProperty_TypeObject = (PyTypeObject *)PyType_FromSpec( &qpyqml_QQmlListProperty_Spec); return qpyqml_QQmlListProperty_TypeObject; #else qpyqml_QQmlListProperty_Type.tp_base = &BASE_TYPE; if (PyType_Ready(&qpyqml_QQmlListProperty_Type) < 0) return false; qpyqml_QQmlListProperty_TypeObject = &qpyqml_QQmlListProperty_Type; return true; #endif } // The QQmlListProperty init function. static PyObject *QQmlListProperty_call(PyObject *, PyObject *args, PyObject *kwds) { PyObject *py_type, *py_obj, *py_list = 0, *py_append = 0, *py_count = 0, *py_at = 0, *py_clear = 0; static const char *kwlist[] = {"type", "object", "list", "append", "count", "at", "clear", 0}; if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO|O!OOOO:QQmlListProperty", const_cast(kwlist), &py_type, &py_obj, &PyList_Type, &py_list, &py_append, &py_count, &py_at, &py_clear)) return 0; // Check the type is derived from QObjecy. if (!PyObject_TypeCheck(py_type, &PyType_Type) || !PyType_IsSubtype((PyTypeObject *)py_type, sipTypeAsPyTypeObject(sipType_QObject))) { PyErr_Format(PyExc_TypeError, "type argument must be a sub-type of QObject"); return 0; } // Get the C++ QObject. int iserr = 0; QObject *obj = reinterpret_cast(sipForceConvertToType(py_obj, sipType_QObject, 0, SIP_NOT_NONE|SIP_NO_CONVERTORS, 0, &iserr)); if (iserr) { PyErr_Format(PyExc_TypeError, "object argument must be of type 'QObject', not '%s'", sipPyTypeName(Py_TYPE(py_obj))); return 0; } // If we have a list then check we have no callables. if (py_list && (py_append || py_count || py_at || py_clear)) { PyErr_SetString(PyExc_TypeError, "cannot specify a list and a list function"); return 0; } // Get a list wrapper with the C++ QObject as its parent. ListData *list_data = new ListData(py_type, py_obj, py_list, py_append, py_count, py_at, py_clear, obj); // Create the C++ QQmlListProperty with the list data as the data. // Note that we will create a new one each time the property getter is // called. Also note that the callables will not be reached by the garbage // collector. QQmlListProperty *prop = new QQmlListProperty(obj, list_data, ((py_list || py_append) ? list_append : 0), ((py_list || py_count) ? list_count : 0), ((py_list || py_at) ? list_at : 0), ((py_list || py_clear) ? list_clear : 0)); // Convert it to a Python object. PyObject *prop_obj = qpyqml_QQmlListPropertyWrapper_New(prop, py_list); if (!prop_obj) { delete prop; return 0; } return prop_obj; } // Append to the list. static void list_append(QQmlListProperty *p, QObject *el) { SIP_BLOCK_THREADS ListData *ldata = reinterpret_cast(p->data); bool ok = false; // Convert the element to a Python object and check the type. PyObject *py_el = sipConvertFromType(el, sipType_QObject, 0); if (py_el) { if (!PyObject_TypeCheck(py_el, (PyTypeObject *)ldata->py_type)) { PyErr_Format(PyExc_TypeError, "list element must be of type '%s', not '%s'", sipPyTypeName(((PyTypeObject *)ldata->py_type)), sipPyTypeName(Py_TYPE(py_el))); } else if (ldata->py_list) { if (PyList_Append(ldata->py_list, py_el) == 0) ok = true; } else { // Call the function. PyObject *py_res = PyObject_CallFunctionObjArgs(ldata->py_append, ldata->py_obj, py_el, NULL); if (py_res) { if (py_res == Py_None) ok = true; else bad_result(py_res, "append"); Py_DECREF(py_res); } } Py_DECREF(py_el); } if (!ok) pyqt5_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Get the length of the list. static int list_count(QQmlListProperty *p) { int res = -1; SIP_BLOCK_THREADS ListData *ldata = reinterpret_cast(p->data); if (ldata->py_list) { res = PyList_Size(ldata->py_list); } else { // Call the function. PyObject *py_res = PyObject_CallFunctionObjArgs(ldata->py_count, ldata->py_obj, NULL); if (py_res) { res = sipLong_AsInt(py_res); if (PyErr_Occurred()) { bad_result(py_res, "count"); res = -1; } Py_DECREF(py_res); } } if (res < 0) { pyqt5_qtqml_err_print(); res = 0; } SIP_UNBLOCK_THREADS return res; } // Get an item from the list. static QObject *list_at(QQmlListProperty *p, int idx) { QObject *qobj = 0; SIP_BLOCK_THREADS ListData *ldata = reinterpret_cast(p->data); if (ldata->py_list) { PyObject *py_el = PyList_GetItem(ldata->py_list, idx); if (py_el) { int iserr = 0; qobj = reinterpret_cast(sipForceConvertToType(py_el, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr)); } } else { // Call the function. PyObject *py_res = PyObject_CallFunction(ldata->py_at, const_cast("Ni"), ldata->py_obj, idx); if (py_res) { int iserr = 0; qobj = reinterpret_cast(sipForceConvertToType(py_res, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr)); if (iserr) bad_result(py_res, "at"); Py_DECREF(py_res); } } if (!qobj) pyqt5_qtqml_err_print(); SIP_UNBLOCK_THREADS return qobj; } // Clear the list. static void list_clear(QQmlListProperty *p) { SIP_BLOCK_THREADS ListData *ldata = reinterpret_cast(p->data); bool ok = false; if (ldata->py_list) { if (PyList_SetSlice(ldata->py_list, 0, PyList_Size(ldata->py_list), NULL) == 0) ok = true; } else { // Call the function. PyObject *py_res = PyObject_CallFunctionObjArgs(ldata->py_clear, ldata->py_obj, NULL); if (py_res) { if (py_res == Py_None) ok = true; else bad_result(py_res, "clear"); Py_DECREF(py_res); } } if (!ok) pyqt5_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Raise an exception for an unexpected result. static void bad_result(PyObject *py_res, const char *context) { #if PY_MAJOR_VERSION >= 3 PyErr_Format(PyExc_TypeError, "unexpected result from %s function: %S", context, py_res); #else PyObject *py_res_s = PyObject_Str(py_res); if (py_res_s != NULL) { PyErr_Format(PyExc_TypeError, "unexpected result from %s function: %s", context, PyString_AsString(py_res_s)); Py_DECREF(py_res_s); } #endif } PyQt5_gpl-5.10.1/qpy/QtQml/qpyqmllistproperty.h0000644000076500000240000000213613245233150021545 0ustar philstaff00000000000000// This is the definition of the QQmlListProperty class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQMLLISTPROPERTY_H #define _QPYQMLLISTPROPERTY_H #include // The type object. extern PyTypeObject *qpyqml_QQmlListProperty_TypeObject; bool qpyqml_QQmlListProperty_init_type(); #endif PyQt5_gpl-5.10.1/qpy/QtQml/qpyqmllistpropertywrapper.cpp0000644000076500000240000002411313245233150023500 0ustar philstaff00000000000000// This contains the implementation of the QQmlListPropertyWrapper type. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpyqmllistpropertywrapper.h" // The type object. PyTypeObject *qpyqml_QQmlListPropertyWrapper_TypeObject; // Forward declarations. extern "C" { static void QQmlListPropertyWrapper_dealloc(PyObject *self); static Py_ssize_t QQmlListPropertyWrapper_sq_length(PyObject *self); static PyObject *QQmlListPropertyWrapper_sq_concat(PyObject *self, PyObject *other); static PyObject *QQmlListPropertyWrapper_sq_repeat(PyObject *self, Py_ssize_t count); static PyObject *QQmlListPropertyWrapper_sq_item(PyObject *self, Py_ssize_t i); #if PY_MAJOR_VERSION < 3 static PyObject *QQmlListPropertyWrapper_sq_slice(PyObject *self, Py_ssize_t i1, Py_ssize_t i2); #endif static int QQmlListPropertyWrapper_sq_ass_item(PyObject *self, Py_ssize_t i, PyObject *value); #if PY_MAJOR_VERSION < 3 static int QQmlListPropertyWrapper_sq_ass_slice(PyObject *self, Py_ssize_t i1, Py_ssize_t i2, PyObject *value); #endif static int QQmlListPropertyWrapper_sq_contains(PyObject *self, PyObject *value); static PyObject *QQmlListPropertyWrapper_sq_inplace_concat(PyObject *self, PyObject *other); static PyObject *QQmlListPropertyWrapper_sq_inplace_repeat(PyObject *self, Py_ssize_t count); } static PyObject *get_list(PyObject *self); #if PY_VERSION_HEX >= 0x03040000 // Define the slots. static PyType_Slot qpyqml_QQmlListPropertyWrapper_Slots[] = { {Py_tp_dealloc, (void *)QQmlListPropertyWrapper_dealloc}, {Py_sq_length, (void *)QQmlListPropertyWrapper_sq_length}, {Py_sq_concat, (void *)QQmlListPropertyWrapper_sq_concat}, {Py_sq_repeat, (void *)QQmlListPropertyWrapper_sq_repeat}, {Py_sq_item, (void *)QQmlListPropertyWrapper_sq_item}, {Py_sq_ass_item, (void *)QQmlListPropertyWrapper_sq_ass_item}, {Py_sq_contains, (void *)QQmlListPropertyWrapper_sq_contains}, {Py_sq_inplace_concat, (void *)QQmlListPropertyWrapper_sq_inplace_concat}, {Py_sq_inplace_repeat, (void *)QQmlListPropertyWrapper_sq_inplace_repeat}, {0, 0} }; // Define the type. static PyType_Spec qpyqml_QQmlListPropertyWrapper_Spec = { "PyQt5.QtQml.QQmlListPropertyWrapper", sizeof (qpyqml_QQmlListPropertyWrapper), 0, Py_TPFLAGS_DEFAULT, qpyqml_QQmlListPropertyWrapper_Slots }; #else // Define the sequence methods. PySequenceMethods QQmlListPropertyWrapper_as_sequence = { QQmlListPropertyWrapper_sq_length, QQmlListPropertyWrapper_sq_concat, QQmlListPropertyWrapper_sq_repeat, QQmlListPropertyWrapper_sq_item, #if PY_MAJOR_VERSION < 3 QQmlListPropertyWrapper_sq_slice, #else 0, #endif QQmlListPropertyWrapper_sq_ass_item, #if PY_MAJOR_VERSION < 3 QQmlListPropertyWrapper_sq_ass_slice, #else 0, #endif QQmlListPropertyWrapper_sq_contains, QQmlListPropertyWrapper_sq_inplace_concat, QQmlListPropertyWrapper_sq_inplace_repeat, }; // Define the type. PyTypeObject qpyqml_QQmlListPropertyWrapper_Type = { PyVarObject_HEAD_INIT(NULL, 0) #if PY_VERSION_HEX >= 0x02050000 "PyQt5.QtQml.QQmlListPropertyWrapper", /* tp_name */ #else const_cast("PyQt5.QtQml.QQmlListPropertyWrapper"), /* tp_name */ #endif sizeof (qpyqml_QQmlListPropertyWrapper), /* tp_basicsize */ 0, /* tp_itemsize */ QQmlListPropertyWrapper_dealloc, /* tp_dealloc */ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ 0, /* tp_repr */ 0, /* tp_as_number */ &QQmlListPropertyWrapper_as_sequence, /* tp_as_sequence */ 0, /* tp_as_mapping */ 0, /* tp_hash */ 0, /* tp_call */ 0, /* tp_str */ 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ 0, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ 0, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ 0, /* tp_del */ 0, /* tp_version_tag */ #if PY_VERSION_HEX >= 0x03040000 0, /* tp_finalize */ #endif }; #endif // Initialise the type and return true if there was no error. bool qpyqml_QQmlListPropertyWrapper_init_type() { #if PY_VERSION_HEX >= 0x03040000 qpyqml_QQmlListPropertyWrapper_TypeObject = (PyTypeObject *)PyType_FromSpec( &qpyqml_QQmlListPropertyWrapper_Spec); return qpyqml_QQmlListPropertyWrapper_TypeObject; #else if (PyType_Ready(&qpyqml_QQmlListPropertyWrapper_Type) < 0) return false; qpyqml_QQmlListPropertyWrapper_TypeObject = &qpyqml_QQmlListPropertyWrapper_Type; return true; #endif } // Create the wrapper object. PyObject *qpyqml_QQmlListPropertyWrapper_New(QQmlListProperty *prop, PyObject *list) { qpyqml_QQmlListPropertyWrapper *obj; obj = PyObject_New(qpyqml_QQmlListPropertyWrapper, qpyqml_QQmlListPropertyWrapper_TypeObject); if (!obj) return 0; obj->qml_list_property = prop; obj->py_list = list; return (PyObject *)obj; } // The type dealloc slot. static void QQmlListPropertyWrapper_dealloc(PyObject *self) { delete ((qpyqml_QQmlListPropertyWrapper *)self)->qml_list_property; PyObject_Del(self); } // Return the underlying list. Return 0 and raise an exception if there wasn't // one. static PyObject *get_list(PyObject *self) { PyObject *list = ((qpyqml_QQmlListPropertyWrapper *)self)->py_list; if (!list) { PyErr_SetString(PyExc_TypeError, "there is no object bound to QQmlListProperty"); return 0; } // Make sure it has sequence methods. if (!PySequence_Check(list)) { PyErr_SetString(PyExc_TypeError, "object bound to QQmlListProperty is not a sequence"); return 0; } return list; } // The proxy sequence methods. static Py_ssize_t QQmlListPropertyWrapper_sq_length(PyObject *self) { PyObject *list = get_list(self); if (!list) return -1; return PySequence_Size(list); } static PyObject *QQmlListPropertyWrapper_sq_concat(PyObject *self, PyObject *other) { PyObject *list = get_list(self); if (!list) return 0; return PySequence_Concat(list, other); } static PyObject *QQmlListPropertyWrapper_sq_repeat(PyObject *self, Py_ssize_t count) { PyObject *list = get_list(self); if (!list) return 0; return PySequence_Repeat(list, count); } static PyObject *QQmlListPropertyWrapper_sq_item(PyObject *self, Py_ssize_t i) { PyObject *list = get_list(self); if (!list) return 0; return PySequence_GetItem(list, i); } #if PY_MAJOR_VERSION < 3 static PyObject *QQmlListPropertyWrapper_sq_slice(PyObject *self, Py_ssize_t i1, Py_ssize_t i2) { PyObject *list = get_list(self); if (!list) return 0; return PySequence_GetSlice(list, i1, i2); } #endif static int QQmlListPropertyWrapper_sq_ass_item(PyObject *self, Py_ssize_t i, PyObject *value) { PyObject *list = get_list(self); if (!list) return -1; return PySequence_SetItem(list, i, value); } #if PY_MAJOR_VERSION < 3 static int QQmlListPropertyWrapper_sq_ass_slice(PyObject *self, Py_ssize_t i1, Py_ssize_t i2, PyObject *value) { PyObject *list = get_list(self); if (!list) return -1; return PySequence_SetSlice(list, i1, i2, value); } #endif static int QQmlListPropertyWrapper_sq_contains(PyObject *self, PyObject *value) { PyObject *list = get_list(self); if (!list) return -1; return PySequence_Contains(list, value); } static PyObject *QQmlListPropertyWrapper_sq_inplace_concat(PyObject *self, PyObject *other) { PyObject *list = get_list(self); if (!list) return 0; return PySequence_InPlaceConcat(list, other); } static PyObject *QQmlListPropertyWrapper_sq_inplace_repeat(PyObject *self, Py_ssize_t count) { PyObject *list = get_list(self); if (!list) return 0; return PySequence_InPlaceRepeat(list, count); } PyQt5_gpl-5.10.1/qpy/QtQml/qpyqmllistpropertywrapper.h0000644000076500000240000000353413245233150023151 0ustar philstaff00000000000000// This defines the interfaces for the QQmlListPropertyWrapper type. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQMLLISTPROPERTYWRAPPER_H #define _QPYQMLLISTPROPERTYWRAPPER_H #include #include #include extern "C" { // This defines the structure of a QQmlListPropertyWrapper object. This serves // two purposes. Firstly it wraps a pointer to a QQmlListProperty like a // capsule would. Secondly it acts as a proxy for the underlying Python list. typedef struct _qpyqml_QQmlListPropertyWrapper { PyObject_HEAD // The QML list property that is being wrapped. It is owned by the // wrapper. QQmlListProperty *qml_list_property; // A borrowed reference to the underlying Python list. PyObject *py_list; } qpyqml_QQmlListPropertyWrapper; } // The type object. extern PyTypeObject *qpyqml_QQmlListPropertyWrapper_TypeObject; bool qpyqml_QQmlListPropertyWrapper_init_type(); PyObject *qpyqml_QQmlListPropertyWrapper_New(QQmlListProperty *prop, PyObject *list); #endif PyQt5_gpl-5.10.1/qpy/QtQml/qpyqmlobject.cpp0000644000076500000240000004330613245233150020572 0ustar philstaff00000000000000// This is the implementation of the QPyQmlObject classes. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpyqmlobject.h" #include "sipAPIQtQml.h" // Forward declarations. static void bad_result(PyObject *res, const char *context); // The list of registered Python types. QList QPyQmlObjectProxy::pyqt_types; // The set of proxies in existence. QSet QPyQmlObjectProxy::proxies; // The ctor. QPyQmlObjectProxy::QPyQmlObjectProxy(QObject *parent) : QAbstractItemModel(parent), proxied_model(0), py_proxied(0) { proxies.insert(this); } // The dtor. QPyQmlObjectProxy::~QPyQmlObjectProxy() { proxies.remove(this); SIP_BLOCK_THREADS Py_XDECREF(py_proxied); SIP_UNBLOCK_THREADS if (!proxied.isNull()) delete proxied.data(); } // Called when QML has connected to a signal of the proxied object. Note that // we also used to implement the corresponding disconnectNotify() to // disconnect the signal. However this resulted in deadlocks and shouldn't be // necessary anyway because it was only happening when the object that made the // connection was itself being destroyed. void QPyQmlObjectProxy::connectNotify(const QMetaMethod &sig) { QByteArray signal_sig = signalSignature(sig); // The signal has actually been connected to the proxy, so do the same from // the proxied object to the proxy. Use Qt::UniqueConnection in case the // object (ie. model) is used in more than one view. QObject::connect(proxied, signal_sig.constData(), this, signal_sig.constData(), Qt::UniqueConnection); } // Return what SIGNAL() would return for a method. QByteArray QPyQmlObjectProxy::signalSignature(const QMetaMethod &signal) { QByteArray signal_sig(signal.methodSignature()); signal_sig.prepend('2'); return signal_sig; } // Delegate to the real object. const QMetaObject *QPyQmlObjectProxy::metaObject() const { return !proxied.isNull() ? proxied->metaObject() : QObject::metaObject(); } // Delegate to the real object. void *QPyQmlObjectProxy::qt_metacast(const char *_clname) { return !proxied.isNull() ? proxied->qt_metacast(_clname) : 0; } // Delegate to the real object. int QPyQmlObjectProxy::qt_metacall(QMetaObject::Call call, int idx, void **args) { if (idx < 0) return idx; if (proxied.isNull()) return QObject::qt_metacall(call, idx, args); const QMetaObject *proxied_mo = proxied->metaObject(); // See if a signal defined in the proxied object might be being invoked. // Note that we used to use sender() but this proved unreliable. if (call == QMetaObject::InvokeMetaMethod && proxied_mo->method(idx).methodType() == QMetaMethod::Signal) { // Get the meta-object of the class that defines the signal. while (idx < proxied_mo->methodOffset()) { proxied_mo = proxied_mo->superClass(); Q_ASSERT(proxied_mo); } // Relay the signal to QML. QMetaObject::activate(this, proxied_mo, idx - proxied_mo->methodOffset(), args); return idx - (proxied_mo->methodCount() - proxied_mo->methodOffset()); } return proxied->qt_metacall(call, idx, args); } // Add a new Python type and return its number. int QPyQmlObjectProxy::addType(PyTypeObject *type) { pyqt_types.append(type); return pyqt_types.size() - 1; } // Create the Python instance. void QPyQmlObjectProxy::createPyObject(QObject *parent) { SIP_BLOCK_THREADS py_proxied = sipCallMethod(NULL, (PyObject *)pyqt_types.at(typeNr()), "D", parent, sipType_QObject, NULL); if (py_proxied) { proxied = reinterpret_cast( sipGetAddress((sipSimpleWrapper *)py_proxied)); proxied_model = qobject_cast(proxied.data()); } else { pyqt5_qtqml_err_print(); } SIP_UNBLOCK_THREADS } // Resolve any proxy. void *QPyQmlObjectProxy::resolveProxy(void *proxy) { QObject *qobj = reinterpret_cast(proxy); // We have to search for proxy instances because we have subverted the // usual sub-class detection mechanism. if (proxies.contains(qobj)) return static_cast(qobj)->proxied.data(); // It's not a proxy. return proxy; } // Create an instance of the attached properties. QObject *QPyQmlObjectProxy::createAttachedProperties(PyTypeObject *py_type, QObject *parent) { QObject *qobj = 0; SIP_BLOCK_THREADS PyObject *obj = sipCallMethod(NULL, (PyObject *)py_type, "D", parent, sipType_QObject, NULL); if (obj) { qobj = reinterpret_cast( sipGetAddress((sipSimpleWrapper *)obj)); // It should always have a parent, but just in case... if (parent) Py_DECREF(obj); } else { pyqt5_qtqml_err_print(); } SIP_UNBLOCK_THREADS return qobj; } // Invoked when a class parse begins. void QPyQmlObjectProxy::pyClassBegin() { if (!py_proxied) return; SIP_BLOCK_THREADS bool ok = false; static PyObject *method_name = 0; if (!method_name) #if PY_MAJOR_VERSION >= 3 method_name = PyUnicode_FromString("classBegin"); #else method_name = PyString_FromString("classBegin"); #endif if (method_name) { PyObject *res = PyObject_CallMethodObjArgs(py_proxied, method_name, NULL); if (res) { if (res == Py_None) ok = true; else bad_result(res, "classBegin()"); Py_DECREF(res); } } if (!ok) pyqt5_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Invoked when a component parse completes. void QPyQmlObjectProxy::pyComponentComplete() { if (!py_proxied) return; SIP_BLOCK_THREADS bool ok = false; static PyObject *method_name = 0; if (!method_name) #if PY_MAJOR_VERSION >= 3 method_name = PyUnicode_FromString("componentComplete"); #else method_name = PyString_FromString("componentComplete"); #endif if (method_name) { PyObject *res = PyObject_CallMethodObjArgs(py_proxied, method_name, NULL); if (res) { if (res == Py_None) ok = true; else bad_result(res, "componentComplete()"); Py_DECREF(res); } } if (!ok) pyqt5_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Invoked to set the target property of a property value source. void QPyQmlObjectProxy::pySetTarget(const QQmlProperty &target) { if (!py_proxied) return; SIP_BLOCK_THREADS bool ok = false; static PyObject *method_name = 0; if (!method_name) #if PY_MAJOR_VERSION >= 3 method_name = PyUnicode_FromString("setTarget"); #else method_name = PyString_FromString("setTarget"); #endif if (method_name) { QQmlProperty *target_heap = new QQmlProperty(target); PyObject *py_target = sipConvertFromNewType(target_heap, sipType_QQmlProperty, 0); if (!py_target) { delete target_heap; } else { PyObject *res = PyObject_CallMethodObjArgs(py_proxied, method_name, py_target, NULL); Py_DECREF(py_target); if (res) { if (res == Py_None) ok = true; else bad_result(res, "setTarget()"); Py_DECREF(res); } } } if (!ok) pyqt5_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Raise an exception for an unexpected result. static void bad_result(PyObject *res, const char *context) { #if PY_MAJOR_VERSION >= 3 PyErr_Format(PyExc_TypeError, "unexpected result from %s: %S", context, res); #else PyObject *res_s = PyObject_Str(res); if (res_s != NULL) { PyErr_Format(PyExc_TypeError, "unexpected result from %s: %s", context, PyString_AsString(res_s)); Py_DECREF(res_s); } #endif } // The proxy type implementations. #define QPYQML_PROXY_IMPL(n) \ QPyQmlObject##n::QPyQmlObject##n(QObject *parent) : QPyQmlObjectProxy(parent) \ { \ createPyObject(parent); \ } \ QObject *QPyQmlObject##n::attachedProperties(QObject *parent) \ { \ return createAttachedProperties(attachedPyType, parent); \ } \ void QPyQmlObject##n::classBegin() \ { \ pyClassBegin(); \ } \ void QPyQmlObject##n::componentComplete() \ { \ pyComponentComplete(); \ } \ void QPyQmlObject##n::setTarget(const QQmlProperty &target) \ { \ pySetTarget(target); \ } \ QMetaObject QPyQmlObject##n::staticMetaObject; \ PyTypeObject *QPyQmlObject##n::attachedPyType QPYQML_PROXY_IMPL(0); QPYQML_PROXY_IMPL(1); QPYQML_PROXY_IMPL(2); QPYQML_PROXY_IMPL(3); QPYQML_PROXY_IMPL(4); QPYQML_PROXY_IMPL(5); QPYQML_PROXY_IMPL(6); QPYQML_PROXY_IMPL(7); QPYQML_PROXY_IMPL(8); QPYQML_PROXY_IMPL(9); QPYQML_PROXY_IMPL(10); QPYQML_PROXY_IMPL(11); QPYQML_PROXY_IMPL(12); QPYQML_PROXY_IMPL(13); QPYQML_PROXY_IMPL(14); QPYQML_PROXY_IMPL(15); QPYQML_PROXY_IMPL(16); QPYQML_PROXY_IMPL(17); QPYQML_PROXY_IMPL(18); QPYQML_PROXY_IMPL(19); QPYQML_PROXY_IMPL(20); QPYQML_PROXY_IMPL(21); QPYQML_PROXY_IMPL(22); QPYQML_PROXY_IMPL(23); QPYQML_PROXY_IMPL(24); QPYQML_PROXY_IMPL(25); QPYQML_PROXY_IMPL(26); QPYQML_PROXY_IMPL(27); QPYQML_PROXY_IMPL(28); QPYQML_PROXY_IMPL(29); QPYQML_PROXY_IMPL(30); QPYQML_PROXY_IMPL(31); QPYQML_PROXY_IMPL(32); QPYQML_PROXY_IMPL(33); QPYQML_PROXY_IMPL(34); QPYQML_PROXY_IMPL(35); QPYQML_PROXY_IMPL(36); QPYQML_PROXY_IMPL(37); QPYQML_PROXY_IMPL(38); QPYQML_PROXY_IMPL(39); QPYQML_PROXY_IMPL(40); QPYQML_PROXY_IMPL(41); QPYQML_PROXY_IMPL(42); QPYQML_PROXY_IMPL(43); QPYQML_PROXY_IMPL(44); QPYQML_PROXY_IMPL(45); QPYQML_PROXY_IMPL(46); QPYQML_PROXY_IMPL(47); QPYQML_PROXY_IMPL(48); QPYQML_PROXY_IMPL(49); QPYQML_PROXY_IMPL(50); QPYQML_PROXY_IMPL(51); QPYQML_PROXY_IMPL(52); QPYQML_PROXY_IMPL(53); QPYQML_PROXY_IMPL(54); QPYQML_PROXY_IMPL(55); QPYQML_PROXY_IMPL(56); QPYQML_PROXY_IMPL(57); QPYQML_PROXY_IMPL(58); QPYQML_PROXY_IMPL(59); // The reimplementations of the QAbstractItemModel virtuals. QModelIndex QPyQmlObjectProxy::index(int row, int column, const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->index(row, column, parent); return QModelIndex(); } QModelIndex QPyQmlObjectProxy::parent(const QModelIndex &child) const { if (!proxied.isNull() && proxied_model) return proxied_model->parent(child); return QModelIndex(); } QModelIndex QPyQmlObjectProxy::sibling(int row, int column, const QModelIndex &idx) const { if (!proxied.isNull() && proxied_model) return proxied_model->sibling(row, column, idx); return QModelIndex(); } int QPyQmlObjectProxy::rowCount(const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->rowCount(parent); return 0; } int QPyQmlObjectProxy::columnCount(const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->columnCount(parent); return 0; } bool QPyQmlObjectProxy::hasChildren(const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->hasChildren(parent); return false; } QVariant QPyQmlObjectProxy::data(const QModelIndex &index, int role) const { if (!proxied.isNull() && proxied_model) return proxied_model->data(index, role); return QVariant(); } bool QPyQmlObjectProxy::setData(const QModelIndex &index, const QVariant &value, int role) { if (!proxied.isNull() && proxied_model) return proxied_model->setData(index, value, role); return false; } QVariant QPyQmlObjectProxy::headerData(int section, Qt::Orientation orientation, int role) const { if (!proxied.isNull() && proxied_model) return proxied_model->headerData(section, orientation, role); return QVariant(); } bool QPyQmlObjectProxy::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role) { if (!proxied.isNull() && proxied_model) return proxied_model->setHeaderData(section, orientation, value, role); return false; } QMap QPyQmlObjectProxy::itemData(const QModelIndex &index) const { if (!proxied.isNull() && proxied_model) return proxied_model->itemData(index); return QMap(); } bool QPyQmlObjectProxy::setItemData(const QModelIndex &index, const QMap &roles) { if (!proxied.isNull() && proxied_model) return proxied_model->setItemData(index, roles); return false; } QStringList QPyQmlObjectProxy::mimeTypes() const { if (!proxied.isNull() && proxied_model) return proxied_model->mimeTypes(); return QStringList(); } QMimeData *QPyQmlObjectProxy::mimeData(const QModelIndexList &indexes) const { if (!proxied.isNull() && proxied_model) return proxied_model->mimeData(indexes); return 0; } bool QPyQmlObjectProxy::canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->canDropMimeData(data, action, row, column, parent); return false; } bool QPyQmlObjectProxy::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) return proxied_model->dropMimeData(data, action, row, column, parent); return false; } Qt::DropActions QPyQmlObjectProxy::supportedDropActions() const { if (!proxied.isNull() && proxied_model) return proxied_model->supportedDropActions(); return Qt::IgnoreAction; } Qt::DropActions QPyQmlObjectProxy::supportedDragActions() const { if (!proxied.isNull() && proxied_model) return proxied_model->supportedDragActions(); return Qt::IgnoreAction; } bool QPyQmlObjectProxy::insertRows(int row, int count, const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) return proxied_model->insertRows(row, count, parent); return false; } bool QPyQmlObjectProxy::insertColumns(int column, int count, const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) return proxied_model->insertColumns(column, count, parent); return false; } bool QPyQmlObjectProxy::removeRows(int row, int count, const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) return proxied_model->removeRows(row, count, parent); return false; } bool QPyQmlObjectProxy::removeColumns(int column, int count, const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) return proxied_model->removeColumns(column, count, parent); return false; } bool QPyQmlObjectProxy::moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild) { if (!proxied.isNull() && proxied_model) return proxied_model->moveRows(sourceParent, sourceRow, count, destinationParent, destinationChild); return false; } bool QPyQmlObjectProxy::moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild) { if (!proxied.isNull() && proxied_model) return proxied_model->moveColumns(sourceParent, sourceColumn, count, destinationParent, destinationChild); return false; } void QPyQmlObjectProxy::fetchMore(const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) proxied_model->fetchMore(parent); } bool QPyQmlObjectProxy::canFetchMore(const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->canFetchMore(parent); return false; } Qt::ItemFlags QPyQmlObjectProxy::flags(const QModelIndex &index) const { if (!proxied.isNull() && proxied_model) return proxied_model->flags(index); return Qt::NoItemFlags; } void QPyQmlObjectProxy::sort(int column, Qt::SortOrder order) { if (!proxied.isNull() && proxied_model) proxied_model->sort(column, order); } QModelIndex QPyQmlObjectProxy::buddy(const QModelIndex &index) const { if (!proxied.isNull() && proxied_model) return proxied_model->buddy(index); return QModelIndex(); } QModelIndexList QPyQmlObjectProxy::match(const QModelIndex &start, int role, const QVariant &value, int hits, Qt::MatchFlags flags) const { if (!proxied.isNull() && proxied_model) return proxied_model->match(start, role, value, hits, flags); return QModelIndexList(); } QSize QPyQmlObjectProxy::span(const QModelIndex &index) const { if (!proxied.isNull() && proxied_model) return proxied_model->span(index); return QSize(); } QHash QPyQmlObjectProxy::roleNames() const { if (!proxied.isNull() && proxied_model) return proxied_model->roleNames(); return QHash(); } PyQt5_gpl-5.10.1/qpy/QtQml/qpyqmlobject.h0000644000076500000240000001657013245233150020242 0ustar philstaff00000000000000// This is the definition of the QPyQmlObject classes. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQMLOBJECT_H #define _QPYQMLOBJECT_H #include #include #include #include #include #include #include #include #include class QPyQmlObjectProxy : public QAbstractItemModel { public: QPyQmlObjectProxy(QObject *parent = 0); virtual ~QPyQmlObjectProxy(); virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *_clname); virtual int qt_metacall(QMetaObject::Call, int, void **); virtual int typeNr() const = 0; static int addType(PyTypeObject *type); void createPyObject(QObject *parent); static QObject *createAttachedProperties(PyTypeObject *py_type, QObject *parent); static void *resolveProxy(void *proxy); void pyClassBegin(); void pyComponentComplete(); void pySetTarget(const QQmlProperty &target); // The set of proxies in existence. static QSet proxies; // The real object. QPointer proxied; // The real object if it is an item model. QAbstractItemModel *proxied_model; // QAbstractItemModel virtuals. virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &child) const; virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual QMap itemData(const QModelIndex &index) const; virtual bool setItemData(const QModelIndex &index, const QMap &roles); virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const; virtual bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual Qt::DropActions supportedDropActions() const; virtual Qt::DropActions supportedDragActions() const; virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild); virtual bool moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild); virtual void fetchMore(const QModelIndex &parent); virtual bool canFetchMore(const QModelIndex &parent) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QModelIndex buddy(const QModelIndex &index) const; virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const; virtual QSize span(const QModelIndex &index) const; virtual QHash roleNames() const; protected: void connectNotify(const QMetaMethod &signal); private: // These can by cast to sipWrapperType. static QList pyqt_types; // The wrapped proxied object. PyObject *py_proxied; static QByteArray signalSignature(const QMetaMethod &signal); QPyQmlObjectProxy(const QPyQmlObjectProxy &); }; // The proxy type declarations. #define QPYQML_PROXY_DECL(n) \ class QPyQmlObject##n : public QPyQmlObjectProxy, public QQmlParserStatus, public QQmlPropertyValueSource \ { \ public: \ QPyQmlObject##n(QObject *parent = 0); \ static QMetaObject staticMetaObject; \ virtual int typeNr() const {return n##U;} \ static PyTypeObject *attachedPyType; \ static QObject *attachedProperties(QObject *parent); \ virtual void classBegin(); \ virtual void componentComplete(); \ virtual void setTarget(const QQmlProperty &target); \ private: \ QPyQmlObject##n(const QPyQmlObject##n &); \ } QPYQML_PROXY_DECL(0); QPYQML_PROXY_DECL(1); QPYQML_PROXY_DECL(2); QPYQML_PROXY_DECL(3); QPYQML_PROXY_DECL(4); QPYQML_PROXY_DECL(5); QPYQML_PROXY_DECL(6); QPYQML_PROXY_DECL(7); QPYQML_PROXY_DECL(8); QPYQML_PROXY_DECL(9); QPYQML_PROXY_DECL(10); QPYQML_PROXY_DECL(11); QPYQML_PROXY_DECL(12); QPYQML_PROXY_DECL(13); QPYQML_PROXY_DECL(14); QPYQML_PROXY_DECL(15); QPYQML_PROXY_DECL(16); QPYQML_PROXY_DECL(17); QPYQML_PROXY_DECL(18); QPYQML_PROXY_DECL(19); QPYQML_PROXY_DECL(20); QPYQML_PROXY_DECL(21); QPYQML_PROXY_DECL(22); QPYQML_PROXY_DECL(23); QPYQML_PROXY_DECL(24); QPYQML_PROXY_DECL(25); QPYQML_PROXY_DECL(26); QPYQML_PROXY_DECL(27); QPYQML_PROXY_DECL(28); QPYQML_PROXY_DECL(29); QPYQML_PROXY_DECL(30); QPYQML_PROXY_DECL(31); QPYQML_PROXY_DECL(32); QPYQML_PROXY_DECL(33); QPYQML_PROXY_DECL(34); QPYQML_PROXY_DECL(35); QPYQML_PROXY_DECL(36); QPYQML_PROXY_DECL(37); QPYQML_PROXY_DECL(38); QPYQML_PROXY_DECL(39); QPYQML_PROXY_DECL(40); QPYQML_PROXY_DECL(41); QPYQML_PROXY_DECL(42); QPYQML_PROXY_DECL(43); QPYQML_PROXY_DECL(44); QPYQML_PROXY_DECL(45); QPYQML_PROXY_DECL(46); QPYQML_PROXY_DECL(47); QPYQML_PROXY_DECL(48); QPYQML_PROXY_DECL(49); QPYQML_PROXY_DECL(50); QPYQML_PROXY_DECL(51); QPYQML_PROXY_DECL(52); QPYQML_PROXY_DECL(53); QPYQML_PROXY_DECL(54); QPYQML_PROXY_DECL(55); QPYQML_PROXY_DECL(56); QPYQML_PROXY_DECL(57); QPYQML_PROXY_DECL(58); QPYQML_PROXY_DECL(59); #endif PyQt5_gpl-5.10.1/qpy/QtQml/qpyqmlsingletonobject.cpp0000644000076500000240000000620113245233150022506 0ustar philstaff00000000000000// This is the implementation of the QPyQmlSingletonObject classes. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpyqmlsingletonobject.h" #include "sipAPIQtQml.h" // The number of registered Python types. int QPyQmlSingletonObjectProxy::nr_types = 0; // Add a new Python type and return its number. int QPyQmlSingletonObjectProxy::addType() { return nr_types++; } // Create the QObject instance. QObject *QPyQmlSingletonObjectProxy::createObject(QQmlEngine *engine, QJSEngine *scriptEngine, PyObject *factory) { // This should never happen. if (!factory) return 0; QObject *qobject; SIP_BLOCK_THREADS PyObject *py_obj = sipCallMethod(NULL, factory, "DD", engine, sipType_QQmlEngine, NULL, scriptEngine, sipType_QJSEngine, NULL); if (py_obj) { qobject = reinterpret_cast( sipGetAddress((sipSimpleWrapper *)py_obj)); // The engine will call the dtor and garbage collect the Python object. sipTransferTo(py_obj, Py_None); Py_DECREF(py_obj); } else { qobject = 0; pyqt5_qtqml_err_print(); } Py_DECREF(factory); SIP_UNBLOCK_THREADS return qobject; } // The proxy type implementations. #define QPYQML_SINGLETON_PROXY_IMPL(n) \ PyObject *QPyQmlSingletonObject##n::factory = 0; \ QMetaObject QPyQmlSingletonObject##n::staticMetaObject QPYQML_SINGLETON_PROXY_IMPL(0); QPYQML_SINGLETON_PROXY_IMPL(1); QPYQML_SINGLETON_PROXY_IMPL(2); QPYQML_SINGLETON_PROXY_IMPL(3); QPYQML_SINGLETON_PROXY_IMPL(4); QPYQML_SINGLETON_PROXY_IMPL(5); QPYQML_SINGLETON_PROXY_IMPL(6); QPYQML_SINGLETON_PROXY_IMPL(7); QPYQML_SINGLETON_PROXY_IMPL(8); QPYQML_SINGLETON_PROXY_IMPL(9); QPYQML_SINGLETON_PROXY_IMPL(10); QPYQML_SINGLETON_PROXY_IMPL(11); QPYQML_SINGLETON_PROXY_IMPL(12); QPYQML_SINGLETON_PROXY_IMPL(13); QPYQML_SINGLETON_PROXY_IMPL(14); QPYQML_SINGLETON_PROXY_IMPL(15); QPYQML_SINGLETON_PROXY_IMPL(16); QPYQML_SINGLETON_PROXY_IMPL(17); QPYQML_SINGLETON_PROXY_IMPL(18); QPYQML_SINGLETON_PROXY_IMPL(19); QPYQML_SINGLETON_PROXY_IMPL(20); QPYQML_SINGLETON_PROXY_IMPL(21); QPYQML_SINGLETON_PROXY_IMPL(22); QPYQML_SINGLETON_PROXY_IMPL(23); QPYQML_SINGLETON_PROXY_IMPL(24); QPYQML_SINGLETON_PROXY_IMPL(25); QPYQML_SINGLETON_PROXY_IMPL(26); QPYQML_SINGLETON_PROXY_IMPL(27); QPYQML_SINGLETON_PROXY_IMPL(28); QPYQML_SINGLETON_PROXY_IMPL(29); PyQt5_gpl-5.10.1/qpy/QtQml/qpyqmlsingletonobject.h0000644000076500000240000000603113245233150022154 0ustar philstaff00000000000000// This is the definition of the QPyQmlSingletonObject classes. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQMLOBJECT_H #define _QPYQMLOBJECT_H #include #include #include #include // Note that these classes are never instantiated. They are used to give the // registration structure appropriate values (although whether or not those // values are actually used isn't clear). class QPyQmlSingletonObjectProxy : public QObject { public: static int addType(); static QObject *createObject(QQmlEngine *engine, QJSEngine *scriptEngine, PyObject *factory); private: // The number of registered types. static int nr_types; QPyQmlSingletonObjectProxy(const QPyQmlSingletonObjectProxy &); }; // The proxy type declarations. #define QPYQML_SINGLETON_PROXY_DECL(n) \ class QPyQmlSingletonObject##n : public QPyQmlSingletonObjectProxy \ { \ public: \ static QMetaObject staticMetaObject; \ static PyObject *factory; \ static QObject *objectFactory(QQmlEngine *engine, QJSEngine *scriptEngine) \ { \ QObject *qo = createObject(engine, scriptEngine, factory); \ factory = 0; \ return qo; \ } \ private: \ QPyQmlSingletonObject##n(const QPyQmlSingletonObject##n &); \ } QPYQML_SINGLETON_PROXY_DECL(0); QPYQML_SINGLETON_PROXY_DECL(1); QPYQML_SINGLETON_PROXY_DECL(2); QPYQML_SINGLETON_PROXY_DECL(3); QPYQML_SINGLETON_PROXY_DECL(4); QPYQML_SINGLETON_PROXY_DECL(5); QPYQML_SINGLETON_PROXY_DECL(6); QPYQML_SINGLETON_PROXY_DECL(7); QPYQML_SINGLETON_PROXY_DECL(8); QPYQML_SINGLETON_PROXY_DECL(9); QPYQML_SINGLETON_PROXY_DECL(10); QPYQML_SINGLETON_PROXY_DECL(11); QPYQML_SINGLETON_PROXY_DECL(12); QPYQML_SINGLETON_PROXY_DECL(13); QPYQML_SINGLETON_PROXY_DECL(14); QPYQML_SINGLETON_PROXY_DECL(15); QPYQML_SINGLETON_PROXY_DECL(16); QPYQML_SINGLETON_PROXY_DECL(17); QPYQML_SINGLETON_PROXY_DECL(18); QPYQML_SINGLETON_PROXY_DECL(19); QPYQML_SINGLETON_PROXY_DECL(20); QPYQML_SINGLETON_PROXY_DECL(21); QPYQML_SINGLETON_PROXY_DECL(22); QPYQML_SINGLETON_PROXY_DECL(23); QPYQML_SINGLETON_PROXY_DECL(24); QPYQML_SINGLETON_PROXY_DECL(25); QPYQML_SINGLETON_PROXY_DECL(26); QPYQML_SINGLETON_PROXY_DECL(27); QPYQML_SINGLETON_PROXY_DECL(28); QPYQML_SINGLETON_PROXY_DECL(29); #endif PyQt5_gpl-5.10.1/qpy/QtQuick/0000755000076500000240000000000013245231431015671 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquick_api.h0000644000076500000240000000216013245233150020540 0ustar philstaff00000000000000// This defines the API provided by this library. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICK_API_H #define _QPYQUICK_API_H // Python exception handling. typedef void (*pyqt5_qtquick_err_print_t)(); extern pyqt5_qtquick_err_print_t pyqt5_qtquick_err_print; // Initialisation. void qpyquick_post_init(); #endif PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquick_chimera_helpers.cpp0000644000076500000240000001002613245233150023454 0ustar philstaff00000000000000// This is the implementation of the various Chimera helpers. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include "qpyquick_chimera_helpers.h" #include "sipAPIQtQuick.h" // Forward declarations. static int QList_QObject_metatype(); static bool to_QList_QObject(PyObject *obj, QList&cpp); // Convert a QVariant to a Python object. bool qpyquick_from_qvariant_convertor(const QVariant *varp, PyObject **objp) { // Check we handle the meta-type. if (varp->userType() != QList_QObject_metatype()) return false; const QList *cpp = reinterpret_cast *>(varp->data()); PyObject *obj = PyList_New(cpp->count()); if (obj) { for (int i = 0; i < cpp->count(); ++i) { PyObject *itm = sipConvertFromType(cpp->at(i), sipType_QObject, 0); if (!itm) { Py_DECREF(obj); obj = 0; break; } PyList_SetItem(obj, i, itm); } } *objp = obj; return true; } // Convert a Python object to a QVariant. bool qpyquick_to_qvariant_convertor(PyObject *obj, QVariant &var, bool *okp) { int metatype = QList_QObject_metatype(); // Check the meta-type has been defined. if (metatype == 0) return false; QList qlo; // A failure to convert isn't an error, just the wrong type of Python // object. if (!to_QList_QObject(obj, qlo)) return false; var = QVariant(metatype, &qlo); *okp = true; return true; } // Convert a Python object to QVariant data. bool qpyquick_to_qvariant_data_convertor(PyObject *obj, void *data, int metatype, bool *okp) { // Check we handle the meta-type. if (metatype != QList_QObject_metatype()) return false; QList qlo; // A failure to convert isn't an error, just the wrong type of Python // object. if (!to_QList_QObject(obj, qlo)) return false; *reinterpret_cast *>(data) = qlo; *okp = true; return true; } // Get the metatype for QList or 0 if it hasn't been registered. static int QList_QObject_metatype() { static int lo_metatype = 0; // We look each time until we find it rather than rely on any particular // behaviour from QtQuick. if (lo_metatype == 0) lo_metatype = QMetaType::type("QList"); return lo_metatype; } // Convert a Python list object to a QList and return true if the // conversion was successful. An empty list is never converted and left to the // QtCore module to handle. static bool to_QList_QObject(PyObject *obj, QList&cpp) { if (!PyList_CheckExact(obj) || PyList_Size(obj) == 0) return false; for (Py_ssize_t i = 0; i < PyList_Size(obj); ++i) { PyObject *val_obj = PyList_GetItem(obj, i); if (!val_obj) return false; int iserr = 0; QObject *val = reinterpret_cast(sipForceConvertToType( val_obj, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr)); if (iserr) return false; cpp.append(val); } return true; } PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquick_chimera_helpers.h0000644000076500000240000000304113245233150023120 0ustar philstaff00000000000000// This is the definition of the various Chimera helpers. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICK_CHIMERAHELPERS_H #define _QPYQUICK_CHIMERAHELPERS_H #include #include // Keep these in sync. with those defined in the public API. typedef bool (*FromQVariantConvertorFn)(const QVariant *, PyObject **); typedef bool (*ToQVariantConvertorFn)(PyObject *, QVariant &, bool *); typedef bool (*ToQVariantDataConvertorFn)(PyObject *, void *, int, bool *); bool qpyquick_from_qvariant_convertor(const QVariant *varp, PyObject **objp); bool qpyquick_to_qvariant_convertor(PyObject *obj, QVariant &var, bool *okp); bool qpyquick_to_qvariant_data_convertor(PyObject *obj, void *data, int metatype, bool *okp); #endif PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquick_post_init.cpp0000644000076500000240000000474013245233150022340 0ustar philstaff00000000000000// This is the initialisation support code for the QtQuick module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpyquick_api.h" #include "qpyquick_chimera_helpers.h" #include "qpyquick_register_type.h" #include "sipAPIQtQuick.h" // Imports from QtCore. pyqt5_qtquick_err_print_t pyqt5_qtquick_err_print; // Perform any required initialisation. void qpyquick_post_init() { // Import the Chimera helper registration functions. void (*register_from_qvariant_convertor)(FromQVariantConvertorFn); register_from_qvariant_convertor = (void (*)(FromQVariantConvertorFn))sipImportSymbol("pyqt5_register_from_qvariant_convertor"); Q_ASSERT(register_from_qvariant_convertor); register_from_qvariant_convertor(qpyquick_from_qvariant_convertor); void (*register_to_qvariant_convertor)(ToQVariantConvertorFn); register_to_qvariant_convertor = (void (*)(ToQVariantConvertorFn))sipImportSymbol("pyqt5_register_to_qvariant_convertor"); Q_ASSERT(register_to_qvariant_convertor); register_to_qvariant_convertor(qpyquick_to_qvariant_convertor); void (*register_to_qvariant_data_convertor)(ToQVariantDataConvertorFn); register_to_qvariant_data_convertor = (void (*)(ToQVariantDataConvertorFn))sipImportSymbol("pyqt5_register_to_qvariant_data_convertor"); Q_ASSERT(register_to_qvariant_data_convertor); register_to_qvariant_data_convertor(qpyquick_to_qvariant_data_convertor); // Other QtCore imports. pyqt5_qtquick_err_print = (pyqt5_qtquick_err_print_t)sipImportSymbol( "pyqt5_err_print"); Q_ASSERT(pyqt5_qtquick_err_print); // Export the qml_register_type() helper. sipExportSymbol("qtquick_register_item", (void *)qpyquick_register_type); } PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquick_register_type.cpp0000644000076500000240000000370013245233150023210 0ustar philstaff00000000000000// This is the implementation of the qml_register_type() helper. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpyquick_register_type.h" #include "qpyquickframebufferobject.h" #include "qpyquickitem.h" #include "qpyquickpainteditem.h" #include "sipAPIQtQuick.h" sipErrorState qpyquick_register_type(PyTypeObject *py_type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name, QQmlPrivate::RegisterType **rtp) { #if QT_VERSION >= 0x050200 if (PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQuickFramebufferObject))) return ((*rtp = QPyQuickFramebufferObject::addType(py_type, mo, ptr_name, list_name)) ? sipErrorNone : sipErrorFail); #endif if (PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQuickPaintedItem))) return ((*rtp = QPyQuickPaintedItem::addType(py_type, mo, ptr_name, list_name)) ? sipErrorNone : sipErrorFail); if (PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQuickItem))) return ((*rtp = QPyQuickItem::addType(py_type, mo, ptr_name, list_name)) ? sipErrorNone : sipErrorFail); // We don't recognise the type. return sipErrorContinue; } PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquick_register_type.h0000644000076500000240000000242113245233150022654 0ustar philstaff00000000000000// This is the declaration of the qml_register_type() helper. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICK_REGISTERTYPE_H #define _QPYQUICK_REGISTERTYPE_H #include #include #include #include #include "sipAPIQtQuick.h" sipErrorState qpyquick_register_type(PyTypeObject *py_type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name, QQmlPrivate::RegisterType **rtp); #endif PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquickframebufferobject.cpp0000644000076500000240000001460313245233150023643 0ustar philstaff00000000000000// This is the implementation of the QPyQuickFramebufferObject classes. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpyquickframebufferobject.h" #include "sipAPIQtQuick.h" #if QT_VERSION >= 0x050200 // The maximum number of Python QQuickFramebufferObject types. const int NrOfQuickFramebufferObjectTypes = 30; // The list of registered Python types. static QList pyqt_types; // The registration data for the canned types. static QQmlPrivate::RegisterType canned_types[NrOfQuickFramebufferObjectTypes]; #define QPYQUICKFRAMEBUFFEROBJECT_INIT(n) \ case n##U: \ QPyQuickFramebufferObject##n::staticMetaObject = *mo; \ rt->typeId = qRegisterNormalizedMetaType(ptr_name.constData()); \ rt->listId = qRegisterNormalizedMetaType >(list_name.constData()); \ rt->objectSize = sizeof(QPyQuickFramebufferObject##n); \ rt->create = QQmlPrivate::createInto; \ rt->metaObject = mo; \ rt->attachedPropertiesFunction = QQmlPrivate::attachedPropertiesFunc(); \ rt->attachedPropertiesMetaObject = QQmlPrivate::attachedPropertiesMetaObject(); \ rt->parserStatusCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueSourceCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueInterceptorCast = QQmlPrivate::StaticCastSelector::cast(); \ break // The ctor. QPyQuickFramebufferObject::QPyQuickFramebufferObject(QQuickItem *parent) : sipQQuickFramebufferObject(parent) { } // Add a new Python type and return its number. QQmlPrivate::RegisterType *QPyQuickFramebufferObject::addType( PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name) { int type_nr = pyqt_types.size(); // Check we have a spare canned type. if (type_nr >= NrOfQuickFramebufferObjectTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d QQuickFramebufferObject types may be registered with QML", NrOfQuickFramebufferObjectTypes); return 0; } pyqt_types.append(type); QQmlPrivate::RegisterType *rt = &canned_types[type_nr]; // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQUICKFRAMEBUFFEROBJECT_INIT(0); QPYQUICKFRAMEBUFFEROBJECT_INIT(1); QPYQUICKFRAMEBUFFEROBJECT_INIT(2); QPYQUICKFRAMEBUFFEROBJECT_INIT(3); QPYQUICKFRAMEBUFFEROBJECT_INIT(4); QPYQUICKFRAMEBUFFEROBJECT_INIT(5); QPYQUICKFRAMEBUFFEROBJECT_INIT(6); QPYQUICKFRAMEBUFFEROBJECT_INIT(7); QPYQUICKFRAMEBUFFEROBJECT_INIT(8); QPYQUICKFRAMEBUFFEROBJECT_INIT(9); QPYQUICKFRAMEBUFFEROBJECT_INIT(10); QPYQUICKFRAMEBUFFEROBJECT_INIT(11); QPYQUICKFRAMEBUFFEROBJECT_INIT(12); QPYQUICKFRAMEBUFFEROBJECT_INIT(13); QPYQUICKFRAMEBUFFEROBJECT_INIT(14); QPYQUICKFRAMEBUFFEROBJECT_INIT(15); QPYQUICKFRAMEBUFFEROBJECT_INIT(16); QPYQUICKFRAMEBUFFEROBJECT_INIT(17); QPYQUICKFRAMEBUFFEROBJECT_INIT(18); QPYQUICKFRAMEBUFFEROBJECT_INIT(19); QPYQUICKFRAMEBUFFEROBJECT_INIT(20); QPYQUICKFRAMEBUFFEROBJECT_INIT(21); QPYQUICKFRAMEBUFFEROBJECT_INIT(22); QPYQUICKFRAMEBUFFEROBJECT_INIT(23); QPYQUICKFRAMEBUFFEROBJECT_INIT(24); QPYQUICKFRAMEBUFFEROBJECT_INIT(25); QPYQUICKFRAMEBUFFEROBJECT_INIT(26); QPYQUICKFRAMEBUFFEROBJECT_INIT(27); QPYQUICKFRAMEBUFFEROBJECT_INIT(28); QPYQUICKFRAMEBUFFEROBJECT_INIT(29); } return rt; } // Create the Python instance. void QPyQuickFramebufferObject::createPyObject(QQuickItem *parent) { SIP_BLOCK_THREADS // Assume C++ owns everything. PyObject *obj = sipConvertFromNewPyType(this, pyqt_types.at(typeNr()), NULL, &sipPySelf, "D", parent, sipType_QQuickItem, NULL); if (!obj) pyqt5_qtquick_err_print(); SIP_UNBLOCK_THREADS } // The canned type implementations. #define QPYQUICKFRAMEBUFFEROBJECT_IMPL(n) \ QPyQuickFramebufferObject##n::QPyQuickFramebufferObject##n(QQuickItem *parent) : QPyQuickFramebufferObject(parent) \ { \ createPyObject(parent); \ } \ QMetaObject QPyQuickFramebufferObject##n::staticMetaObject QPYQUICKFRAMEBUFFEROBJECT_IMPL(0); QPYQUICKFRAMEBUFFEROBJECT_IMPL(1); QPYQUICKFRAMEBUFFEROBJECT_IMPL(2); QPYQUICKFRAMEBUFFEROBJECT_IMPL(3); QPYQUICKFRAMEBUFFEROBJECT_IMPL(4); QPYQUICKFRAMEBUFFEROBJECT_IMPL(5); QPYQUICKFRAMEBUFFEROBJECT_IMPL(6); QPYQUICKFRAMEBUFFEROBJECT_IMPL(7); QPYQUICKFRAMEBUFFEROBJECT_IMPL(8); QPYQUICKFRAMEBUFFEROBJECT_IMPL(9); QPYQUICKFRAMEBUFFEROBJECT_IMPL(10); QPYQUICKFRAMEBUFFEROBJECT_IMPL(11); QPYQUICKFRAMEBUFFEROBJECT_IMPL(12); QPYQUICKFRAMEBUFFEROBJECT_IMPL(13); QPYQUICKFRAMEBUFFEROBJECT_IMPL(14); QPYQUICKFRAMEBUFFEROBJECT_IMPL(15); QPYQUICKFRAMEBUFFEROBJECT_IMPL(16); QPYQUICKFRAMEBUFFEROBJECT_IMPL(17); QPYQUICKFRAMEBUFFEROBJECT_IMPL(18); QPYQUICKFRAMEBUFFEROBJECT_IMPL(19); QPYQUICKFRAMEBUFFEROBJECT_IMPL(20); QPYQUICKFRAMEBUFFEROBJECT_IMPL(21); QPYQUICKFRAMEBUFFEROBJECT_IMPL(22); QPYQUICKFRAMEBUFFEROBJECT_IMPL(23); QPYQUICKFRAMEBUFFEROBJECT_IMPL(24); QPYQUICKFRAMEBUFFEROBJECT_IMPL(25); QPYQUICKFRAMEBUFFEROBJECT_IMPL(26); QPYQUICKFRAMEBUFFEROBJECT_IMPL(27); QPYQUICKFRAMEBUFFEROBJECT_IMPL(28); QPYQUICKFRAMEBUFFEROBJECT_IMPL(29); #endif PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquickframebufferobject.h0000644000076500000240000000606013245233150023306 0ustar philstaff00000000000000// This is the definition of the QPyQuickFramebufferObject classes. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICKFRAMEBUFFEROBJECT_H #define _QPYQUICKFRAMEBUFFEROBJECT_H #include #include #include #include #include #include "sipAPIQtQuick.h" #if QT_VERSION >= 0x050200 class QPyQuickFramebufferObject : public sipQQuickFramebufferObject { public: QPyQuickFramebufferObject(QQuickItem *parent = 0); virtual int typeNr() const = 0; static QQmlPrivate::RegisterType *addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name); void createPyObject(QQuickItem *parent); private: QPyQuickFramebufferObject(const QPyQuickFramebufferObject &); }; // The canned type declarations. #define QPYQUICKFRAMEBUFFEROBJECT_DECL(n) \ class QPyQuickFramebufferObject##n : public QPyQuickFramebufferObject \ { \ public: \ QPyQuickFramebufferObject##n(QQuickItem *parent = 0); \ static QMetaObject staticMetaObject; \ virtual int typeNr() const {return n##U;} \ private: \ QPyQuickFramebufferObject##n(const QPyQuickFramebufferObject##n &); \ } QPYQUICKFRAMEBUFFEROBJECT_DECL(0); QPYQUICKFRAMEBUFFEROBJECT_DECL(1); QPYQUICKFRAMEBUFFEROBJECT_DECL(2); QPYQUICKFRAMEBUFFEROBJECT_DECL(3); QPYQUICKFRAMEBUFFEROBJECT_DECL(4); QPYQUICKFRAMEBUFFEROBJECT_DECL(5); QPYQUICKFRAMEBUFFEROBJECT_DECL(6); QPYQUICKFRAMEBUFFEROBJECT_DECL(7); QPYQUICKFRAMEBUFFEROBJECT_DECL(8); QPYQUICKFRAMEBUFFEROBJECT_DECL(9); QPYQUICKFRAMEBUFFEROBJECT_DECL(10); QPYQUICKFRAMEBUFFEROBJECT_DECL(11); QPYQUICKFRAMEBUFFEROBJECT_DECL(12); QPYQUICKFRAMEBUFFEROBJECT_DECL(13); QPYQUICKFRAMEBUFFEROBJECT_DECL(14); QPYQUICKFRAMEBUFFEROBJECT_DECL(15); QPYQUICKFRAMEBUFFEROBJECT_DECL(16); QPYQUICKFRAMEBUFFEROBJECT_DECL(17); QPYQUICKFRAMEBUFFEROBJECT_DECL(18); QPYQUICKFRAMEBUFFEROBJECT_DECL(19); QPYQUICKFRAMEBUFFEROBJECT_DECL(20); QPYQUICKFRAMEBUFFEROBJECT_DECL(21); QPYQUICKFRAMEBUFFEROBJECT_DECL(22); QPYQUICKFRAMEBUFFEROBJECT_DECL(23); QPYQUICKFRAMEBUFFEROBJECT_DECL(24); QPYQUICKFRAMEBUFFEROBJECT_DECL(25); QPYQUICKFRAMEBUFFEROBJECT_DECL(26); QPYQUICKFRAMEBUFFEROBJECT_DECL(27); QPYQUICKFRAMEBUFFEROBJECT_DECL(28); QPYQUICKFRAMEBUFFEROBJECT_DECL(29); #endif #endif PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquickitem.cpp0000644000076500000240000001227113245233150021125 0ustar philstaff00000000000000// This is the implementation of the QPyQuickItem classes. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpyquickitem.h" #include "sipAPIQtQuick.h" // The maximum number of Python QQuickItem types. const int NrOfQuickItemTypes = 30; // The list of registered Python types. static QList pyqt_types; // The registration data for the canned types. static QQmlPrivate::RegisterType canned_types[NrOfQuickItemTypes]; #define QPYQUICKITEM_INIT(n) \ case n##U: \ QPyQuickItem##n::staticMetaObject = *mo; \ rt->typeId = qRegisterNormalizedMetaType(ptr_name); \ rt->listId = qRegisterNormalizedMetaType >(list_name); \ rt->objectSize = sizeof(QPyQuickItem##n); \ rt->create = QQmlPrivate::createInto; \ rt->metaObject = mo; \ rt->attachedPropertiesFunction = QQmlPrivate::attachedPropertiesFunc(); \ rt->attachedPropertiesMetaObject = QQmlPrivate::attachedPropertiesMetaObject(); \ rt->parserStatusCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueSourceCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueInterceptorCast = QQmlPrivate::StaticCastSelector::cast(); \ break // The ctor. QPyQuickItem::QPyQuickItem(QQuickItem *parent) : sipQQuickItem(parent) { } // Add a new Python type and return its number. QQmlPrivate::RegisterType *QPyQuickItem::addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name) { int type_nr = pyqt_types.size(); // Check we have a spare canned type. if (type_nr >= NrOfQuickItemTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d QQuickItem types may be registered with QML", NrOfQuickItemTypes); return 0; } pyqt_types.append(type); QQmlPrivate::RegisterType *rt = &canned_types[type_nr]; // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQUICKITEM_INIT(0); QPYQUICKITEM_INIT(1); QPYQUICKITEM_INIT(2); QPYQUICKITEM_INIT(3); QPYQUICKITEM_INIT(4); QPYQUICKITEM_INIT(5); QPYQUICKITEM_INIT(6); QPYQUICKITEM_INIT(7); QPYQUICKITEM_INIT(8); QPYQUICKITEM_INIT(9); QPYQUICKITEM_INIT(10); QPYQUICKITEM_INIT(11); QPYQUICKITEM_INIT(12); QPYQUICKITEM_INIT(13); QPYQUICKITEM_INIT(14); QPYQUICKITEM_INIT(15); QPYQUICKITEM_INIT(16); QPYQUICKITEM_INIT(17); QPYQUICKITEM_INIT(18); QPYQUICKITEM_INIT(19); QPYQUICKITEM_INIT(20); QPYQUICKITEM_INIT(21); QPYQUICKITEM_INIT(22); QPYQUICKITEM_INIT(23); QPYQUICKITEM_INIT(24); QPYQUICKITEM_INIT(25); QPYQUICKITEM_INIT(26); QPYQUICKITEM_INIT(27); QPYQUICKITEM_INIT(28); QPYQUICKITEM_INIT(29); } return rt; } // Create the Python instance. void QPyQuickItem::createPyObject(QQuickItem *parent) { SIP_BLOCK_THREADS // Assume C++ owns everything. PyObject *obj = sipConvertFromNewPyType(this, pyqt_types.at(typeNr()), NULL, &sipPySelf, "D", parent, sipType_QQuickItem, NULL); if (!obj) pyqt5_qtquick_err_print(); SIP_UNBLOCK_THREADS } // The canned type implementations. #define QPYQUICKITEM_IMPL(n) \ QPyQuickItem##n::QPyQuickItem##n(QQuickItem *parent) : QPyQuickItem(parent) \ { \ createPyObject(parent); \ } \ QMetaObject QPyQuickItem##n::staticMetaObject QPYQUICKITEM_IMPL(0); QPYQUICKITEM_IMPL(1); QPYQUICKITEM_IMPL(2); QPYQUICKITEM_IMPL(3); QPYQUICKITEM_IMPL(4); QPYQUICKITEM_IMPL(5); QPYQUICKITEM_IMPL(6); QPYQUICKITEM_IMPL(7); QPYQUICKITEM_IMPL(8); QPYQUICKITEM_IMPL(9); QPYQUICKITEM_IMPL(10); QPYQUICKITEM_IMPL(11); QPYQUICKITEM_IMPL(12); QPYQUICKITEM_IMPL(13); QPYQUICKITEM_IMPL(14); QPYQUICKITEM_IMPL(15); QPYQUICKITEM_IMPL(16); QPYQUICKITEM_IMPL(17); QPYQUICKITEM_IMPL(18); QPYQUICKITEM_IMPL(19); QPYQUICKITEM_IMPL(20); QPYQUICKITEM_IMPL(21); QPYQUICKITEM_IMPL(22); QPYQUICKITEM_IMPL(23); QPYQUICKITEM_IMPL(24); QPYQUICKITEM_IMPL(25); QPYQUICKITEM_IMPL(26); QPYQUICKITEM_IMPL(27); QPYQUICKITEM_IMPL(28); QPYQUICKITEM_IMPL(29); PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquickitem.h0000644000076500000240000000472013245233150020572 0ustar philstaff00000000000000// This is the definition of the QPyQuickItem classes. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICKITEM_H #define _QPYQUICKITEM_H #include #include #include #include #include #include "sipAPIQtQuick.h" class QPyQuickItem : public sipQQuickItem { public: QPyQuickItem(QQuickItem *parent = 0); virtual int typeNr() const = 0; static QQmlPrivate::RegisterType *addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name); void createPyObject(QQuickItem *parent); private: QPyQuickItem(const QPyQuickItem &); }; // The canned type declarations. #define QPYQUICKITEM_DECL(n) \ class QPyQuickItem##n : public QPyQuickItem \ { \ public: \ QPyQuickItem##n(QQuickItem *parent = 0); \ static QMetaObject staticMetaObject; \ virtual int typeNr() const {return n##U;} \ private: \ QPyQuickItem##n(const QPyQuickItem##n &); \ } QPYQUICKITEM_DECL(0); QPYQUICKITEM_DECL(1); QPYQUICKITEM_DECL(2); QPYQUICKITEM_DECL(3); QPYQUICKITEM_DECL(4); QPYQUICKITEM_DECL(5); QPYQUICKITEM_DECL(6); QPYQUICKITEM_DECL(7); QPYQUICKITEM_DECL(8); QPYQUICKITEM_DECL(9); QPYQUICKITEM_DECL(10); QPYQUICKITEM_DECL(11); QPYQUICKITEM_DECL(12); QPYQUICKITEM_DECL(13); QPYQUICKITEM_DECL(14); QPYQUICKITEM_DECL(15); QPYQUICKITEM_DECL(16); QPYQUICKITEM_DECL(17); QPYQUICKITEM_DECL(18); QPYQUICKITEM_DECL(19); QPYQUICKITEM_DECL(20); QPYQUICKITEM_DECL(21); QPYQUICKITEM_DECL(22); QPYQUICKITEM_DECL(23); QPYQUICKITEM_DECL(24); QPYQUICKITEM_DECL(25); QPYQUICKITEM_DECL(26); QPYQUICKITEM_DECL(27); QPYQUICKITEM_DECL(28); QPYQUICKITEM_DECL(29); #endif PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquickpainteditem.cpp0000644000076500000240000001351013245233150022467 0ustar philstaff00000000000000// This is the implementation of the QPyQuickPaintedItem classes. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpyquickpainteditem.h" #include "sipAPIQtQuick.h" // The maximum number of Python QQuickPaintedItem types. const int NrOfQuickPaintedItemTypes = 30; // The list of registered Python types. static QList pyqt_types; // The registration data for the canned types. static QQmlPrivate::RegisterType canned_types[NrOfQuickPaintedItemTypes]; #define QPYQUICKPAINTEDITEM_INIT(n) \ case n##U: \ QPyQuickPaintedItem##n::staticMetaObject = *mo; \ rt->typeId = qRegisterNormalizedMetaType(ptr_name.constData()); \ rt->listId = qRegisterNormalizedMetaType >(list_name.constData()); \ rt->objectSize = sizeof(QPyQuickPaintedItem##n); \ rt->create = QQmlPrivate::createInto; \ rt->metaObject = mo; \ rt->attachedPropertiesFunction = QQmlPrivate::attachedPropertiesFunc(); \ rt->attachedPropertiesMetaObject = QQmlPrivate::attachedPropertiesMetaObject(); \ rt->parserStatusCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueSourceCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueInterceptorCast = QQmlPrivate::StaticCastSelector::cast(); \ break // The ctor. QPyQuickPaintedItem::QPyQuickPaintedItem(QQuickItem *parent) : sipQQuickPaintedItem(parent) { } // Add a new Python type and return its number. QQmlPrivate::RegisterType *QPyQuickPaintedItem::addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name) { int type_nr = pyqt_types.size(); // Check we have a spare canned type. if (type_nr >= NrOfQuickPaintedItemTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d QQuickPaintedItem types may be registered with QML", NrOfQuickPaintedItemTypes); return 0; } pyqt_types.append(type); QQmlPrivate::RegisterType *rt = &canned_types[type_nr]; // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQUICKPAINTEDITEM_INIT(0); QPYQUICKPAINTEDITEM_INIT(1); QPYQUICKPAINTEDITEM_INIT(2); QPYQUICKPAINTEDITEM_INIT(3); QPYQUICKPAINTEDITEM_INIT(4); QPYQUICKPAINTEDITEM_INIT(5); QPYQUICKPAINTEDITEM_INIT(6); QPYQUICKPAINTEDITEM_INIT(7); QPYQUICKPAINTEDITEM_INIT(8); QPYQUICKPAINTEDITEM_INIT(9); QPYQUICKPAINTEDITEM_INIT(10); QPYQUICKPAINTEDITEM_INIT(11); QPYQUICKPAINTEDITEM_INIT(12); QPYQUICKPAINTEDITEM_INIT(13); QPYQUICKPAINTEDITEM_INIT(14); QPYQUICKPAINTEDITEM_INIT(15); QPYQUICKPAINTEDITEM_INIT(16); QPYQUICKPAINTEDITEM_INIT(17); QPYQUICKPAINTEDITEM_INIT(18); QPYQUICKPAINTEDITEM_INIT(19); QPYQUICKPAINTEDITEM_INIT(20); QPYQUICKPAINTEDITEM_INIT(21); QPYQUICKPAINTEDITEM_INIT(22); QPYQUICKPAINTEDITEM_INIT(23); QPYQUICKPAINTEDITEM_INIT(24); QPYQUICKPAINTEDITEM_INIT(25); QPYQUICKPAINTEDITEM_INIT(26); QPYQUICKPAINTEDITEM_INIT(27); QPYQUICKPAINTEDITEM_INIT(28); QPYQUICKPAINTEDITEM_INIT(29); } return rt; } // Create the Python instance. void QPyQuickPaintedItem::createPyObject(QQuickItem *parent) { SIP_BLOCK_THREADS // Assume C++ owns everything. PyObject *obj = sipConvertFromNewPyType(this, pyqt_types.at(typeNr()), NULL, &sipPySelf, "D", parent, sipType_QQuickItem, NULL); if (!obj) pyqt5_qtquick_err_print(); SIP_UNBLOCK_THREADS } // The canned type implementations. #define QPYQUICKPAINTEDITEM_IMPL(n) \ QPyQuickPaintedItem##n::QPyQuickPaintedItem##n(QQuickItem *parent) : QPyQuickPaintedItem(parent) \ { \ createPyObject(parent); \ } \ QMetaObject QPyQuickPaintedItem##n::staticMetaObject QPYQUICKPAINTEDITEM_IMPL(0); QPYQUICKPAINTEDITEM_IMPL(1); QPYQUICKPAINTEDITEM_IMPL(2); QPYQUICKPAINTEDITEM_IMPL(3); QPYQUICKPAINTEDITEM_IMPL(4); QPYQUICKPAINTEDITEM_IMPL(5); QPYQUICKPAINTEDITEM_IMPL(6); QPYQUICKPAINTEDITEM_IMPL(7); QPYQUICKPAINTEDITEM_IMPL(8); QPYQUICKPAINTEDITEM_IMPL(9); QPYQUICKPAINTEDITEM_IMPL(10); QPYQUICKPAINTEDITEM_IMPL(11); QPYQUICKPAINTEDITEM_IMPL(12); QPYQUICKPAINTEDITEM_IMPL(13); QPYQUICKPAINTEDITEM_IMPL(14); QPYQUICKPAINTEDITEM_IMPL(15); QPYQUICKPAINTEDITEM_IMPL(16); QPYQUICKPAINTEDITEM_IMPL(17); QPYQUICKPAINTEDITEM_IMPL(18); QPYQUICKPAINTEDITEM_IMPL(19); QPYQUICKPAINTEDITEM_IMPL(20); QPYQUICKPAINTEDITEM_IMPL(21); QPYQUICKPAINTEDITEM_IMPL(22); QPYQUICKPAINTEDITEM_IMPL(23); QPYQUICKPAINTEDITEM_IMPL(24); QPYQUICKPAINTEDITEM_IMPL(25); QPYQUICKPAINTEDITEM_IMPL(26); QPYQUICKPAINTEDITEM_IMPL(27); QPYQUICKPAINTEDITEM_IMPL(28); QPYQUICKPAINTEDITEM_IMPL(29); PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquickpainteditem.h0000644000076500000240000000540413245233150022137 0ustar philstaff00000000000000// This is the definition of the QPyQuickPaintedItem classes. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICKPAINTEDITEM_H #define _QPYQUICKPAINTEDITEM_H #include #include #include #include #include #include "sipAPIQtQuick.h" class QPyQuickPaintedItem : public sipQQuickPaintedItem { public: QPyQuickPaintedItem(QQuickItem *parent = 0); virtual int typeNr() const = 0; static QQmlPrivate::RegisterType *addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name); void createPyObject(QQuickItem *parent); private: QPyQuickPaintedItem(const QPyQuickPaintedItem &); }; // The canned type declarations. #define QPYQUICKPAINTEDITEM_DECL(n) \ class QPyQuickPaintedItem##n : public QPyQuickPaintedItem \ { \ public: \ QPyQuickPaintedItem##n(QQuickItem *parent = 0); \ static QMetaObject staticMetaObject; \ virtual int typeNr() const {return n##U;} \ private: \ QPyQuickPaintedItem##n(const QPyQuickPaintedItem##n &); \ } QPYQUICKPAINTEDITEM_DECL(0); QPYQUICKPAINTEDITEM_DECL(1); QPYQUICKPAINTEDITEM_DECL(2); QPYQUICKPAINTEDITEM_DECL(3); QPYQUICKPAINTEDITEM_DECL(4); QPYQUICKPAINTEDITEM_DECL(5); QPYQUICKPAINTEDITEM_DECL(6); QPYQUICKPAINTEDITEM_DECL(7); QPYQUICKPAINTEDITEM_DECL(8); QPYQUICKPAINTEDITEM_DECL(9); QPYQUICKPAINTEDITEM_DECL(10); QPYQUICKPAINTEDITEM_DECL(11); QPYQUICKPAINTEDITEM_DECL(12); QPYQUICKPAINTEDITEM_DECL(13); QPYQUICKPAINTEDITEM_DECL(14); QPYQUICKPAINTEDITEM_DECL(15); QPYQUICKPAINTEDITEM_DECL(16); QPYQUICKPAINTEDITEM_DECL(17); QPYQUICKPAINTEDITEM_DECL(18); QPYQUICKPAINTEDITEM_DECL(19); QPYQUICKPAINTEDITEM_DECL(20); QPYQUICKPAINTEDITEM_DECL(21); QPYQUICKPAINTEDITEM_DECL(22); QPYQUICKPAINTEDITEM_DECL(23); QPYQUICKPAINTEDITEM_DECL(24); QPYQUICKPAINTEDITEM_DECL(25); QPYQUICKPAINTEDITEM_DECL(26); QPYQUICKPAINTEDITEM_DECL(27); QPYQUICKPAINTEDITEM_DECL(28); QPYQUICKPAINTEDITEM_DECL(29); #endif PyQt5_gpl-5.10.1/qpy/QtWidgets/0000755000076500000240000000000013245233150016223 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/qpy/QtWidgets/qpywidgets_api.h0000644000076500000240000000176013245233150021431 0ustar philstaff00000000000000// This defines the API provided by this library. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYWIDGETS_API_H #define _QPYWIDGETS_API_H // Initialisation. void qpywidgets_post_init(); #endif PyQt5_gpl-5.10.1/qpy/QtWidgets/qpywidgets_chimera_helpers.cpp0000644000076500000240000000341513245233150024344 0ustar philstaff00000000000000// This is the implementation of the various Chimera helpers. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpywidgets_chimera_helpers.h" #include "sipAPIQtWidgets.h" // Convert a Python object to a QVariant. bool qpywidgets_to_qvariant_convertor(PyObject *obj, QVariant &var, bool *okp) { // QGraphicsItem sub-classes aren't known to the meta-object system and, // if we didn't do anything, would be interpreted as QObjects by the // default convertion code. This would cause problems for Python // reimplementations of QGraphicsItem::itemChange(). if (!sipCanConvertToType(obj, sipType_QGraphicsItem, SIP_NO_CONVERTORS)) return false; int iserr = 0; QGraphicsItem *qgi = reinterpret_cast( sipConvertToType(obj, sipType_QGraphicsItem, 0, SIP_NO_CONVERTORS, 0, &iserr)); *okp = !iserr; if (!iserr) var.setValue(qgi); return true; } PyQt5_gpl-5.10.1/qpy/QtWidgets/qpywidgets_chimera_helpers.h0000644000076500000240000000233713245233150024013 0ustar philstaff00000000000000// This is the definition of the various Chimera helpers. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYWIDGETS_CHIMERAHELPERS_H #define _QPYWIDGETS_CHIMERAHELPERS_H #include #include // Keep these in sync. with those defined in the public API. typedef bool (*ToQVariantConvertorFn)(PyObject *, QVariant &, bool *); bool qpywidgets_to_qvariant_convertor(PyObject *obj, QVariant &var, bool *okp); #endif PyQt5_gpl-5.10.1/qpy/QtWidgets/qpywidgets_post_init.cpp0000644000076500000240000000265713245233150023231 0ustar philstaff00000000000000// This is the initialisation support code for the QtWidgets module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpywidgets_api.h" #include "qpywidgets_chimera_helpers.h" #include "sipAPIQtWidgets.h" // Perform any required initialisation. void qpywidgets_post_init() { // Import the Chimera helper registration functions. void (*register_to_qvariant_convertor)(ToQVariantConvertorFn); register_to_qvariant_convertor = (void (*)(ToQVariantConvertorFn))sipImportSymbol("pyqt5_register_to_qvariant_convertor"); Q_ASSERT(register_to_qvariant_convertor); register_to_qvariant_convertor(qpywidgets_to_qvariant_convertor); } PyQt5_gpl-5.10.1/README0000644000076500000240000000356013245233136014367 0ustar philstaff00000000000000 PyQt5 - Python Bindings for the Qt v5 Toolkit INTRODUCTION These are the Python bindings for Qt v5. Python v2.6 or later is required. You must also have the SIP Python bindings generator installed. PyQt4 is also available which supports earlier versions of Python, and Qt v4 and the compatible subset of Qt v5. The homepage is https://www.riverbankcomputing.com/software/pyqt/. The homepage of SIP is https://www.riverbankcomputing.com/software/sip/. COMMERCIAL VERSION If you have the Commercial version of PyQt5 then you should also have a license file that you downloaded separately. The license file must be copied to the "sip" directory before starting to build PyQt5. INSTALLATION Check for any other README files in this directory that relate to your particular platform. Feel free to contribute a README for your platform or to provide updates to any existing documentation. The first step is to configure PyQt5 by running the following command. python configure.py This assumes that the correct Python interpreter is on your path. Something like the following may be appropriate on Windows. c:\python36\python configure.py If you have multiple versions of Python installed then make sure you use the interpreter for which you wish to generate bindings for. The configure.py script takes many options. Use the "--help" command line option to display a full list of the available options. The next step is to build PyQt5 using your platform's make command. make The final step is to install PyQt5 by running the following command. (Depending on your system you may require root or administrator privileges.) make install THE REST OF THE DISTRIBUTION The "examples" directory contain some examples of Python scripts, including versions of the standard Qt tutorials and examples. The "doc" directory contains HTML documentation for the bindings. PyQt5_gpl-5.10.1/sip/0000755000076500000240000000000013245233150014272 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/_QOpenGLFunctions_2_0/0000755000076500000240000000000013245233150020227 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/_QOpenGLFunctions_2_0/_QOpenGLFunctions_2_0mod.sip0000644000076500000240000000363013245233150025403 0ustar philstaff00000000000000// _QOpenGLFunctions_2_0mod.sip generated by MetaSIP // // This file is part of the _QOpenGLFunctions_2_0 Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5._QOpenGLFunctions_2_0, keyword_arguments="Optional", use_limited_api=True) %Import QtGui/QtGuimod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %Include qopenglfunctions_2_0.sip PyQt5_gpl-5.10.1/sip/_QOpenGLFunctions_2_0/qopenglfunctions_2_0.sip0000644000076500000240000033062313245233150025011 0ustar philstaff00000000000000// qopenglfunctions_2_0.sip generated by MetaSIP // // This file is part of the _QOpenGLFunctions_2_0 Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QOpenGLFunctions_2_0 : QAbstractOpenGLFunctions { %TypeHeaderCode #include %End public: QOpenGLFunctions_2_0(); bool initializeOpenGLFunctions(); void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); void glDepthRange(GLdouble nearVal, GLdouble farVal); GLboolean glIsEnabled(GLenum cap); void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /TypeHint="int"/); %MethodCode GLint params[1]; sipCpp->glGetTexLevelParameteriv(a0, a1, a2, params); a3 = qpyopengl_from_GLint(&sipIsErr, params, 1); %End void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /TypeHint="float"/); %MethodCode GLfloat params[1]; sipCpp->glGetTexLevelParameterfv(a0, a1, a2, params); a3 = qpyopengl_from_GLfloat(&sipIsErr, params, 1); %End void glGetTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_SWIZZLE_RGBA) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_SWIZZLE_RGBA) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End const char *glGetString(GLenum name); %MethodCode sipRes = reinterpret_cast(sipCpp->glGetString(a0)); %End void glGetIntegerv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLint fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLint[nr_params]; } else { params = fixed_params; } sipCpp->glGetIntegerv(a0, params); a1 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetFloatv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, ...]]"/); %MethodCode GLfloat fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLfloat[nr_params]; } else { params = fixed_params; } sipCpp->glGetFloatv(a0, params); a1 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End GLenum glGetError(); void glGetDoublev(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, ...]]"/); %MethodCode GLdouble fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLdouble[nr_params]; } else { params = fixed_params; } sipCpp->glGetDoublev(a0, params); a1 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetBooleanv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[bool, Tuple[bool, ...]]"/); %MethodCode GLboolean fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLboolean[nr_params]; } else { params = fixed_params; } sipCpp->glGetBooleanv(a0, params); a1 = qpyopengl_from_GLboolean(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glReadBuffer(GLenum mode); void glPixelStorei(GLenum pname, GLint param); void glPixelStoref(GLenum pname, GLfloat param); void glDepthFunc(GLenum func); void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); void glStencilFunc(GLenum func, GLint ref, GLuint mask); void glLogicOp(GLenum opcode); void glBlendFunc(GLenum sfactor, GLenum dfactor); void glFlush(); void glFinish(); void glEnable(GLenum cap); void glDisable(GLenum cap); void glDepthMask(GLboolean flag); void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); void glStencilMask(GLuint mask); void glClearDepth(GLdouble depth); void glClearStencil(GLint s); void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glClear(GLbitfield mask); void glDrawBuffer(GLenum mode); void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, a6, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage1D(a0, a1, a2, a3, a4, a5, a6, array); %End void glTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameteriv(a0, a1, reinterpret_cast(array)); %End void glTexParameteri(GLenum target, GLenum pname, GLint param); void glTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameterfv(a0, a1, reinterpret_cast(array)); %End void glTexParameterf(GLenum target, GLenum pname, GLfloat param); void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); void glPolygonMode(GLenum face, GLenum mode); void glPointSize(GLfloat size); void glLineWidth(GLfloat width); void glHint(GLenum target, GLenum mode); void glFrontFace(GLenum mode); void glCullFace(GLenum mode); void glIndexubv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexubv(reinterpret_cast(array)); %End void glIndexub(GLubyte c); GLboolean glIsTexture(GLuint texture); void glGenTextures(GLsizei n, SIP_PYOBJECT *textures /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenTextures(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteTextures(GLsizei n, SIP_PYOBJECT textures /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteTextures(a0, reinterpret_cast(array)); %End void glBindTexture(GLenum target, GLuint texture); void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, a5, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); void glPolygonOffset(GLfloat factor, GLfloat units); void glDrawElements(GLenum mode, GLsizei count, GLenum type, SIP_PYOBJECT indices /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a2, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawElements(a0, a1, a2, array); %End void glDrawArrays(GLenum mode, GLint first, GLsizei count); void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, a9, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, a8, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, array); %End void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, SIP_PYOBJECT indices /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawRangeElements(a0, a1, a2, a3, a4, array); %End void glBlendEquation(GLenum mode); void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage2D(a0, a1, a2, a3, a4, a5, a6, array); %End void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glSampleCoverage(GLfloat value, GLboolean invert); void glActiveTexture(GLenum texture); void glPointParameteriv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameteriv(a0, reinterpret_cast(array)); %End void glPointParameteri(GLenum pname, GLint param); void glPointParameterfv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameterfv(a0, reinterpret_cast(array)); %End void glPointParameterf(GLenum pname, GLfloat param); void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); GLboolean glUnmapBuffer(GLenum target); void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array; if (a3 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a3, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferSubData(a0, a1, a2, array); %End void glBufferData(GLenum target, GLsizeiptr size, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/, GLenum usage); %MethodCode const GLvoid *array; if (a2 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferData(a0, a1, array, a3); %End GLboolean glIsBuffer(GLuint buffer); void glGenBuffers(GLsizei n, SIP_PYOBJECT *buffers /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenBuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteBuffers(GLsizei n, SIP_PYOBJECT buffers /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteBuffers(a0, reinterpret_cast(array)); %End void glBindBuffer(GLenum target, GLuint buffer); void glGetQueryiv(GLenum target, GLenum pname, GLint *params); void glEndQuery(GLenum target); void glBeginQuery(GLenum target, GLuint id); GLboolean glIsQuery(GLuint id); void glDeleteQueries(GLsizei n, SIP_PYOBJECT ids /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteQueries(a0, reinterpret_cast(array)); %End void glGenQueries(GLsizei n, SIP_PYOBJECT *ids /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenQueries(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a5, a2, sipSelf, "VertexAttribPointer", a0); if (sipError == sipErrorNone) sipCpp->glVertexAttribPointer(a0, a1, a2, a3, a4, array); %End void glValidateProgram(GLuint program); void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix4fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix3fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix2fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniform4iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4iv(a0, a1, reinterpret_cast(array)); %End void glUniform3iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3iv(a0, a1, reinterpret_cast(array)); %End void glUniform2iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2iv(a0, a1, reinterpret_cast(array)); %End void glUniform1iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1iv(a0, a1, reinterpret_cast(array)); %End void glUniform4fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4fv(a0, a1, reinterpret_cast(array)); %End void glUniform3fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3fv(a0, a1, reinterpret_cast(array)); %End void glUniform2fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2fv(a0, a1, reinterpret_cast(array)); %End void glUniform1fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1fv(a0, a1, reinterpret_cast(array)); %End void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); void glUniform2i(GLint location, GLint v0, GLint v1); void glUniform1i(GLint location, GLint v0); void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); void glUniform2f(GLint location, GLfloat v0, GLfloat v1); void glUniform1f(GLint location, GLfloat v0); void glUseProgram(GLuint program); void glLinkProgram(GLuint program); GLboolean glIsShader(GLuint shader); GLboolean glIsProgram(GLuint program); void glGetVertexAttribiv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetVertexAttribfv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetVertexAttribdv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLdouble params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribdv(a0, a1, params); a2 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); %End GLint glGetUniformLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetShaderSource(GLuint shader) /TypeHint="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_SHADER_SOURCE_LENGTH, &bufsize); if (bufsize > 0) { GLchar *source = new GLchar[bufsize]; sipCpp->glGetShaderSource(a0, bufsize, 0, source); sipRes = SIPBytes_FromString(source); delete[] source; } else { sipRes = SIPBytes_FromString(""); } %End SIP_PYOBJECT glGetShaderInfoLog(GLuint shader) /TypeHint="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetShaderInfoLog(a0, bufsize, 0, log); sipRes = SIPBytes_FromString(log); delete[] log; } else { sipRes = SIPBytes_FromString(""); } %End void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); SIP_PYOBJECT glGetProgramInfoLog(GLuint program) /TypeHint="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetProgramInfoLog(a0, bufsize, 0, log); sipRes = SIPBytes_FromString(log); delete[] log; } else { sipRes = SIPBytes_FromString(""); } %End void glGetProgramiv(GLuint program, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int]]"/); %MethodCode GLint params[3]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_COMPUTE_LOCAL_WORK_SIZE) case GL_COMPUTE_LOCAL_WORK_SIZE: nr_params = 3; break; #endif default: nr_params = 1; } sipCpp->glGetProgramiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End GLint glGetAttribLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetAttachedShaders(GLuint program) /TypeHint="Tuple[int, ...]"/; %MethodCode GLint nr_shaders; sipCpp->glGetProgramiv(a0, GL_ATTACHED_SHADERS, &nr_shaders); if (nr_shaders < 1) { sipRes = PyTuple_New(0); } else { GLuint *shaders = new GLuint[nr_shaders]; sipCpp->glGetAttachedShaders(a0, nr_shaders, 0, shaders); sipRes = PyTuple_New(nr_shaders); if (sipRes) { for (GLint i = 0; i < nr_shaders; ++i) { PyObject *itm = SIPLong_FromLong(shaders[i]); if (!itm) { Py_DECREF(sipRes); sipRes = 0; break; } PyTuple_SetItem(sipRes, i, itm); } } delete[] shaders; } if (!sipRes) sipIsErr = 1; %End SIP_PYOBJECT glGetActiveUniform(GLuint program, GLuint index) /TypeHint="Tuple[str, int, int]"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_UNIFORM_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveUniform(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End SIP_PYOBJECT glGetActiveAttrib(GLuint program, GLuint index) /TypeHint="Tuple[str, int, int]"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveAttrib(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End void glEnableVertexAttribArray(GLuint index); void glDisableVertexAttribArray(GLuint index); void glDetachShader(GLuint program, GLuint shader); void glDeleteShader(GLuint shader); void glDeleteProgram(GLuint program); GLuint glCreateShader(GLenum type); GLuint glCreateProgram(); void glCompileShader(GLuint shader); void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); void glAttachShader(GLuint program, GLuint shader); void glStencilMaskSeparate(GLenum face, GLuint mask); void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); void glDrawBuffers(GLsizei n, SIP_PYOBJECT bufs /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawBuffers(a0, reinterpret_cast(array)); %End void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); void glTranslatef(GLfloat x, GLfloat y, GLfloat z); void glTranslated(GLdouble x, GLdouble y, GLdouble z); void glScalef(GLfloat x, GLfloat y, GLfloat z); void glScaled(GLdouble x, GLdouble y, GLdouble z); void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); void glPushMatrix(); void glPopMatrix(); void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); void glMultMatrixd(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultMatrixd(reinterpret_cast(array)); %End void glMultMatrixf(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultMatrixf(reinterpret_cast(array)); %End void glMatrixMode(GLenum mode); void glLoadMatrixd(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadMatrixd(reinterpret_cast(array)); %End void glLoadMatrixf(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadMatrixf(reinterpret_cast(array)); %End void glLoadIdentity(); void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); GLboolean glIsList(GLuint list); void glGetTexGeniv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGeniv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexGenfv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGenfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetTexGendv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLdouble params[4]; Py_ssize_t nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGendv(a0, a1, params); a2 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); %End void glGetTexEnviv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_TEXTURE_ENV_COLOR: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexEnviv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexEnvfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_TEXTURE_ENV_COLOR: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexEnvfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetMaterialiv(GLenum face, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int], Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_SHININESS: nr_params = 1; break; case GL_COLOR_INDEXES: nr_params = 3; break; default: nr_params = 4; } sipCpp->glGetMaterialiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetMaterialfv(GLenum face, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float], Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_SHININESS: nr_params = 1; break; case GL_COLOR_INDEXES: nr_params = 3; break; default: nr_params = 4; } sipCpp->glGetMaterialfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetLightiv(GLenum light, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int], Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_AMBIENT: case GL_DIFFUSE: case GL_SPECULAR: case GL_POSITION: nr_params = 4; break; case GL_SPOT_DIRECTION: nr_params = 3; break; default: nr_params = 1; } sipCpp->glGetLightiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetLightfv(GLenum light, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float], Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_AMBIENT: case GL_DIFFUSE: case GL_SPECULAR: case GL_POSITION: nr_params = 4; break; case GL_SPOT_DIRECTION: nr_params = 3; break; default: nr_params = 1; } sipCpp->glGetLightfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetClipPlane(GLenum plane, SIP_PYOBJECT *equation /TypeHint="Tuple[float, float, float, float]"/); %MethodCode GLdouble params[4]; sipCpp->glGetClipPlane(a0, params); a1 = qpyopengl_from_GLdouble(&sipIsErr, params, 4); %End void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a4, a3, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawPixels(a0, a1, a2, a3, array); %End void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); void glPixelMapusv(GLenum map, GLint mapsize, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapusv(a0, a1, reinterpret_cast(array)); %End void glPixelMapuiv(GLenum map, GLint mapsize, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapuiv(a0, a1, reinterpret_cast(array)); %End void glPixelMapfv(GLenum map, GLint mapsize, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapfv(a0, a1, reinterpret_cast(array)); %End void glPixelTransferi(GLenum pname, GLint param); void glPixelTransferf(GLenum pname, GLfloat param); void glPixelZoom(GLfloat xfactor, GLfloat yfactor); void glAlphaFunc(GLenum func, GLfloat ref); void glEvalPoint2(GLint i, GLint j); void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); void glEvalPoint1(GLint i); void glEvalMesh1(GLenum mode, GLint i1, GLint i2); void glEvalCoord2fv(SIP_PYOBJECT u /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord2fv(reinterpret_cast(array)); %End void glEvalCoord2f(GLfloat u, GLfloat v); void glEvalCoord2dv(SIP_PYOBJECT u /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord2dv(reinterpret_cast(array)); %End void glEvalCoord2d(GLdouble u, GLdouble v); void glEvalCoord1fv(SIP_PYOBJECT u /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord1fv(reinterpret_cast(array)); %End void glEvalCoord1f(GLfloat u); void glEvalCoord1dv(SIP_PYOBJECT u /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord1dv(reinterpret_cast(array)); %End void glEvalCoord1d(GLdouble u); void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, SIP_PYOBJECT points /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap2f(a0, a1, a2, a3, a4, a5, a6, a7, a8, reinterpret_cast(array)); %End void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, SIP_PYOBJECT points /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap2d(a0, a1, a2, a3, a4, a5, a6, a7, a8, reinterpret_cast(array)); %End void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, SIP_PYOBJECT points /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap1f(a0, a1, a2, a3, a4, reinterpret_cast(array)); %End void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, SIP_PYOBJECT points /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap1d(a0, a1, a2, a3, a4, reinterpret_cast(array)); %End void glPushAttrib(GLbitfield mask); void glPopAttrib(); void glAccum(GLenum op, GLfloat value); void glIndexMask(GLuint mask); void glClearIndex(GLfloat c); void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glPushName(GLuint name); void glPopName(); void glPassThrough(GLfloat token); void glLoadName(GLuint name); void glInitNames(); GLint glRenderMode(GLenum mode); void glTexGeniv(GLenum coord, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGeniv(a0, a1, reinterpret_cast(array)); %End void glTexGeni(GLenum coord, GLenum pname, GLint param); void glTexGenfv(GLenum coord, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGenfv(a0, a1, reinterpret_cast(array)); %End void glTexGenf(GLenum coord, GLenum pname, GLfloat param); void glTexGendv(GLenum coord, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGendv(a0, a1, reinterpret_cast(array)); %End void glTexGend(GLenum coord, GLenum pname, GLdouble param); void glTexEnviv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexEnviv(a0, a1, reinterpret_cast(array)); %End void glTexEnvi(GLenum target, GLenum pname, GLint param); void glTexEnvfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexEnvfv(a0, a1, reinterpret_cast(array)); %End void glTexEnvf(GLenum target, GLenum pname, GLfloat param); void glShadeModel(GLenum mode); void glPolygonStipple(SIP_PYOBJECT mask /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glPolygonStipple(reinterpret_cast(array)); %End void glMaterialiv(GLenum face, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMaterialiv(a0, a1, reinterpret_cast(array)); %End void glMateriali(GLenum face, GLenum pname, GLint param); void glMaterialfv(GLenum face, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMaterialfv(a0, a1, reinterpret_cast(array)); %End void glMaterialf(GLenum face, GLenum pname, GLfloat param); void glLineStipple(GLint factor, GLushort pattern); void glLightModeliv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightModeliv(a0, reinterpret_cast(array)); %End void glLightModeli(GLenum pname, GLint param); void glLightModelfv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightModelfv(a0, reinterpret_cast(array)); %End void glLightModelf(GLenum pname, GLfloat param); void glLightiv(GLenum light, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightiv(a0, a1, reinterpret_cast(array)); %End void glLighti(GLenum light, GLenum pname, GLint param); void glLightfv(GLenum light, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightfv(a0, a1, reinterpret_cast(array)); %End void glLightf(GLenum light, GLenum pname, GLfloat param); void glFogiv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogiv(a0, reinterpret_cast(array)); %End void glFogi(GLenum pname, GLint param); void glFogfv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogfv(a0, reinterpret_cast(array)); %End void glFogf(GLenum pname, GLfloat param); void glColorMaterial(GLenum face, GLenum mode); void glClipPlane(GLenum plane, SIP_PYOBJECT equation /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glClipPlane(a0, reinterpret_cast(array)); %End void glVertex4sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4sv(reinterpret_cast(array)); %End void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); void glVertex4iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4iv(reinterpret_cast(array)); %End void glVertex4i(GLint x, GLint y, GLint z, GLint w); void glVertex4fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4fv(reinterpret_cast(array)); %End void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertex4dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4dv(reinterpret_cast(array)); %End void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertex3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3sv(reinterpret_cast(array)); %End void glVertex3s(GLshort x, GLshort y, GLshort z); void glVertex3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3iv(reinterpret_cast(array)); %End void glVertex3i(GLint x, GLint y, GLint z); void glVertex3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3fv(reinterpret_cast(array)); %End void glVertex3f(GLfloat x, GLfloat y, GLfloat z); void glVertex3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3dv(reinterpret_cast(array)); %End void glVertex3d(GLdouble x, GLdouble y, GLdouble z); void glVertex2sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2sv(reinterpret_cast(array)); %End void glVertex2s(GLshort x, GLshort y); void glVertex2iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2iv(reinterpret_cast(array)); %End void glVertex2i(GLint x, GLint y); void glVertex2fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2fv(reinterpret_cast(array)); %End void glVertex2f(GLfloat x, GLfloat y); void glVertex2dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2dv(reinterpret_cast(array)); %End void glVertex2d(GLdouble x, GLdouble y); void glTexCoord4sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4sv(reinterpret_cast(array)); %End void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); void glTexCoord4iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4iv(reinterpret_cast(array)); %End void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); void glTexCoord4fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4fv(reinterpret_cast(array)); %End void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); void glTexCoord4dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4dv(reinterpret_cast(array)); %End void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); void glTexCoord3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3sv(reinterpret_cast(array)); %End void glTexCoord3s(GLshort s, GLshort t, GLshort r); void glTexCoord3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3iv(reinterpret_cast(array)); %End void glTexCoord3i(GLint s, GLint t, GLint r); void glTexCoord3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3fv(reinterpret_cast(array)); %End void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); void glTexCoord3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3dv(reinterpret_cast(array)); %End void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); void glTexCoord2sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2sv(reinterpret_cast(array)); %End void glTexCoord2s(GLshort s, GLshort t); void glTexCoord2iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2iv(reinterpret_cast(array)); %End void glTexCoord2i(GLint s, GLint t); void glTexCoord2fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2fv(reinterpret_cast(array)); %End void glTexCoord2f(GLfloat s, GLfloat t); void glTexCoord2dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2dv(reinterpret_cast(array)); %End void glTexCoord2d(GLdouble s, GLdouble t); void glTexCoord1sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1sv(reinterpret_cast(array)); %End void glTexCoord1s(GLshort s); void glTexCoord1iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1iv(reinterpret_cast(array)); %End void glTexCoord1i(GLint s); void glTexCoord1fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1fv(reinterpret_cast(array)); %End void glTexCoord1f(GLfloat s); void glTexCoord1dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1dv(reinterpret_cast(array)); %End void glTexCoord1d(GLdouble s); void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); void glRasterPos4sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4sv(reinterpret_cast(array)); %End void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); void glRasterPos4iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4iv(reinterpret_cast(array)); %End void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); void glRasterPos4fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4fv(reinterpret_cast(array)); %End void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glRasterPos4dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4dv(reinterpret_cast(array)); %End void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glRasterPos3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3sv(reinterpret_cast(array)); %End void glRasterPos3s(GLshort x, GLshort y, GLshort z); void glRasterPos3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3iv(reinterpret_cast(array)); %End void glRasterPos3i(GLint x, GLint y, GLint z); void glRasterPos3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3fv(reinterpret_cast(array)); %End void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); void glRasterPos3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3dv(reinterpret_cast(array)); %End void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); void glRasterPos2sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2sv(reinterpret_cast(array)); %End void glRasterPos2s(GLshort x, GLshort y); void glRasterPos2iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2iv(reinterpret_cast(array)); %End void glRasterPos2i(GLint x, GLint y); void glRasterPos2fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2fv(reinterpret_cast(array)); %End void glRasterPos2f(GLfloat x, GLfloat y); void glRasterPos2dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2dv(reinterpret_cast(array)); %End void glRasterPos2d(GLdouble x, GLdouble y); void glNormal3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3sv(reinterpret_cast(array)); %End void glNormal3s(GLshort nx, GLshort ny, GLshort nz); void glNormal3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3iv(reinterpret_cast(array)); %End void glNormal3i(GLint nx, GLint ny, GLint nz); void glNormal3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3fv(reinterpret_cast(array)); %End void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); void glNormal3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3dv(reinterpret_cast(array)); %End void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); void glNormal3bv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3bv(reinterpret_cast(array)); %End void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); void glIndexsv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexsv(reinterpret_cast(array)); %End void glIndexs(GLshort c); void glIndexiv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexiv(reinterpret_cast(array)); %End void glIndexi(GLint c); void glIndexfv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexfv(reinterpret_cast(array)); %End void glIndexf(GLfloat c); void glIndexdv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexdv(reinterpret_cast(array)); %End void glIndexd(GLdouble c); void glEnd(); void glEdgeFlagv(SIP_PYOBJECT flag /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEdgeFlagv(reinterpret_cast(array)); %End void glEdgeFlag(GLboolean flag); void glColor4usv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4usv(reinterpret_cast(array)); %End void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); void glColor4uiv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4uiv(reinterpret_cast(array)); %End void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); void glColor4ubv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4ubv(reinterpret_cast(array)); %End void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); void glColor4sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4sv(reinterpret_cast(array)); %End void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); void glColor4iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4iv(reinterpret_cast(array)); %End void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); void glColor4fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4fv(reinterpret_cast(array)); %End void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glColor4dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4dv(reinterpret_cast(array)); %End void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); void glColor4bv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4bv(reinterpret_cast(array)); %End void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); void glColor3usv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3usv(reinterpret_cast(array)); %End void glColor3us(GLushort red, GLushort green, GLushort blue); void glColor3uiv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3uiv(reinterpret_cast(array)); %End void glColor3ui(GLuint red, GLuint green, GLuint blue); void glColor3ubv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3ubv(reinterpret_cast(array)); %End void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); void glColor3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3sv(reinterpret_cast(array)); %End void glColor3s(GLshort red, GLshort green, GLshort blue); void glColor3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3iv(reinterpret_cast(array)); %End void glColor3i(GLint red, GLint green, GLint blue); void glColor3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3fv(reinterpret_cast(array)); %End void glColor3f(GLfloat red, GLfloat green, GLfloat blue); void glColor3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3dv(reinterpret_cast(array)); %End void glColor3d(GLdouble red, GLdouble green, GLdouble blue); void glColor3bv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3bv(reinterpret_cast(array)); %End void glColor3b(GLbyte red, GLbyte green, GLbyte blue); void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, SIP_PYOBJECT bitmap /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBitmap(a0, a1, a2, a3, a4, a5, reinterpret_cast(array)); %End void glBegin(GLenum mode); void glListBase(GLuint base); GLuint glGenLists(GLsizei range); void glDeleteLists(GLuint list, GLsizei range); void glCallList(GLuint list); void glEndList(); void glNewList(GLuint list, GLenum mode); void glPushClientAttrib(GLbitfield mask); void glPopClientAttrib(); void glVertexPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "VertexPointer", 0); if (sipError == sipErrorNone) sipCpp->glVertexPointer(a0, a1, a2, array); %End void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "TexCoordPointer", 0); if (sipError == sipErrorNone) sipCpp->glTexCoordPointer(a0, a1, a2, array); %End void glNormalPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a2, a0, sipSelf, "NormalPointer", 0); if (sipError == sipErrorNone) sipCpp->glNormalPointer(a0, a1, array); %End void glIndexPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a2, a0, sipSelf, "IndexPointer", 0); if (sipError == sipErrorNone) sipCpp->glIndexPointer(a0, a1, array); %End void glEnableClientState(GLenum array); void glEdgeFlagPointer(GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf, "EdgeFlagPointer", 0); if (sipError == sipErrorNone) sipCpp->glEdgeFlagPointer(a0, array); %End void glDisableClientState(GLenum array); void glColorPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "ColorPointer", 0); if (sipError == sipErrorNone) sipCpp->glColorPointer(a0, a1, a2, array); %End void glArrayElement(GLint i); void glResetMinmax(GLenum target); void glResetHistogram(GLenum target); void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); void glGetConvolutionParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CONVOLUTION_BORDER_COLOR: case GL_CONVOLUTION_FILTER_SCALE: case GL_CONVOLUTION_FILTER_BIAS: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetConvolutionParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetConvolutionParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CONVOLUTION_BORDER_COLOR: case GL_CONVOLUTION_FILTER_SCALE: case GL_CONVOLUTION_FILTER_BIAS: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetConvolutionParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); void glConvolutionParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionParameteriv(a0, a1, reinterpret_cast(array)); %End void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); void glConvolutionParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionParameterfv(a0, a1, reinterpret_cast(array)); %End void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT image /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, a5, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionFilter2D(a0, a1, a2, a3, a4, a5, array); %End void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT image /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionFilter1D(a0, a1, a2, a3, a4, array); %End void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorSubTable(a0, a1, a2, a3, a4, array); %End void glGetColorTableParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_COLOR_TABLE: case GL_POST_CONVOLUTION_COLOR_TABLE: case GL_POST_COLOR_MATRIX_COLOR_TABLE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetColorTableParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetColorTableParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_COLOR_TABLE: case GL_POST_CONVOLUTION_COLOR_TABLE: case GL_POST_COLOR_MATRIX_COLOR_TABLE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetColorTableParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); void glColorTableParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTableParameteriv(a0, a1, reinterpret_cast(array)); %End void glColorTableParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTableParameterfv(a0, a1, reinterpret_cast(array)); %End void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT table /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTable(a0, a1, a2, a3, a4, array); %End void glMultTransposeMatrixd(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultTransposeMatrixd(reinterpret_cast(array)); %End void glMultTransposeMatrixf(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultTransposeMatrixf(reinterpret_cast(array)); %End void glLoadTransposeMatrixd(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadTransposeMatrixd(reinterpret_cast(array)); %End void glLoadTransposeMatrixf(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadTransposeMatrixf(reinterpret_cast(array)); %End void glMultiTexCoord4sv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); void glMultiTexCoord4iv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); void glMultiTexCoord4fv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); void glMultiTexCoord4dv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); void glMultiTexCoord3sv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); void glMultiTexCoord3iv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); void glMultiTexCoord3fv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); void glMultiTexCoord3dv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); void glMultiTexCoord2sv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); void glMultiTexCoord2iv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2i(GLenum target, GLint s, GLint t); void glMultiTexCoord2fv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); void glMultiTexCoord2dv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); void glMultiTexCoord1sv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1s(GLenum target, GLshort s); void glMultiTexCoord1iv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1i(GLenum target, GLint s); void glMultiTexCoord1fv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1f(GLenum target, GLfloat s); void glMultiTexCoord1dv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1d(GLenum target, GLdouble s); void glClientActiveTexture(GLenum texture); void glWindowPos3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3sv(reinterpret_cast(array)); %End void glWindowPos3s(GLshort x, GLshort y, GLshort z); void glWindowPos3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3iv(reinterpret_cast(array)); %End void glWindowPos3i(GLint x, GLint y, GLint z); void glWindowPos3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3fv(reinterpret_cast(array)); %End void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); void glWindowPos3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3dv(reinterpret_cast(array)); %End void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); void glWindowPos2sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2sv(reinterpret_cast(array)); %End void glWindowPos2s(GLshort x, GLshort y); void glWindowPos2iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2iv(reinterpret_cast(array)); %End void glWindowPos2i(GLint x, GLint y); void glWindowPos2fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2fv(reinterpret_cast(array)); %End void glWindowPos2f(GLfloat x, GLfloat y); void glWindowPos2dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2dv(reinterpret_cast(array)); %End void glWindowPos2d(GLdouble x, GLdouble y); void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a1, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColorPointer(a0, a1, a2, array); %End void glSecondaryColor3usv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3usv(reinterpret_cast(array)); %End void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); void glSecondaryColor3uiv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3uiv(reinterpret_cast(array)); %End void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); void glSecondaryColor3ubv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3ubv(reinterpret_cast(array)); %End void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); void glSecondaryColor3sv(SIP_PYBUFFER v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3sv(reinterpret_cast(array)); %End void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); void glSecondaryColor3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3iv(reinterpret_cast(array)); %End void glSecondaryColor3i(GLint red, GLint green, GLint blue); void glSecondaryColor3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3fv(reinterpret_cast(array)); %End void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); void glSecondaryColor3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3dv(reinterpret_cast(array)); %End void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); void glSecondaryColor3bv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3bv(reinterpret_cast(array)); %End void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); void glFogCoordPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, a0, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoordPointer(a0, a1, array); %End void glFogCoorddv(SIP_PYOBJECT coord /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoorddv(reinterpret_cast(array)); %End void glFogCoordd(GLdouble coord); void glFogCoordfv(SIP_PYOBJECT coord /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoordfv(reinterpret_cast(array)); %End void glFogCoordf(GLfloat coord); void glVertexAttrib4usv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4usv(a0, reinterpret_cast(array)); %End void glVertexAttrib4uiv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4uiv(a0, reinterpret_cast(array)); %End void glVertexAttrib4ubv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4ubv(a0, reinterpret_cast(array)); %End void glVertexAttrib4sv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4sv(a0, reinterpret_cast(array)); %End void glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); void glVertexAttrib4iv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4iv(a0, reinterpret_cast(array)); %End void glVertexAttrib4fv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4fv(a0, reinterpret_cast(array)); %End void glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertexAttrib4dv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4dv(a0, reinterpret_cast(array)); %End void glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertexAttrib4bv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4bv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nusv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nusv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nuiv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nuiv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nubv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nubv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); void glVertexAttrib4Nsv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nsv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Niv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Niv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nbv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nbv(a0, reinterpret_cast(array)); %End void glVertexAttrib3sv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3sv(a0, reinterpret_cast(array)); %End void glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); void glVertexAttrib3fv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3fv(a0, reinterpret_cast(array)); %End void glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); void glVertexAttrib3dv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3dv(a0, reinterpret_cast(array)); %End void glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); void glVertexAttrib2sv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2sv(a0, reinterpret_cast(array)); %End void glVertexAttrib2s(GLuint index, GLshort x, GLshort y); void glVertexAttrib2fv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2fv(a0, reinterpret_cast(array)); %End void glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); void glVertexAttrib2dv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2dv(a0, reinterpret_cast(array)); %End void glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); void glVertexAttrib1sv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1sv(a0, reinterpret_cast(array)); %End void glVertexAttrib1s(GLuint index, GLshort x); void glVertexAttrib1fv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1fv(a0, reinterpret_cast(array)); %End void glVertexAttrib1f(GLuint index, GLfloat x); void glVertexAttrib1dv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1dv(a0, reinterpret_cast(array)); %End void glVertexAttrib1d(GLuint index, GLdouble x); }; %End %ModuleHeaderCode #include // Imports from QtGui. typedef const GLvoid *(*qpyopengl_value_array_t)(sipErrorState *, PyObject *, GLenum, PyObject *); extern qpyopengl_value_array_t qpyopengl_value_array; typedef const GLvoid *(*qpyopengl_value_array_cached_t)(sipErrorState *, PyObject *, GLenum, PyObject *, const char *, GLuint); extern qpyopengl_value_array_cached_t qpyopengl_value_array_cached; typedef GLint (*qpyopengl_get_t)(GLenum, GLenum *); extern qpyopengl_get_t qpyopengl_get; typedef PyObject *(*qpyopengl_from_GLint_t)(int *, const GLint *, Py_ssize_t); extern qpyopengl_from_GLint_t qpyopengl_from_GLint; typedef PyObject *(*qpyopengl_from_GLuint_t)(int *, const GLuint *, Py_ssize_t); extern qpyopengl_from_GLuint_t qpyopengl_from_GLuint; typedef PyObject *(*qpyopengl_from_GLboolean_t)(int *, const GLboolean *, Py_ssize_t); extern qpyopengl_from_GLboolean_t qpyopengl_from_GLboolean; typedef PyObject *(*qpyopengl_from_GLfloat_t)(int *, const GLfloat *, Py_ssize_t); extern qpyopengl_from_GLfloat_t qpyopengl_from_GLfloat; typedef PyObject *(*qpyopengl_from_GLdouble_t)(int *, const GLdouble *, Py_ssize_t); extern qpyopengl_from_GLdouble_t qpyopengl_from_GLdouble; %End %ModuleCode // Imports from QtGui. qpyopengl_value_array_t qpyopengl_value_array; qpyopengl_value_array_cached_t qpyopengl_value_array_cached; qpyopengl_get_t qpyopengl_get; qpyopengl_from_GLint_t qpyopengl_from_GLint; qpyopengl_from_GLuint_t qpyopengl_from_GLuint; qpyopengl_from_GLboolean_t qpyopengl_from_GLboolean; qpyopengl_from_GLfloat_t qpyopengl_from_GLfloat; qpyopengl_from_GLdouble_t qpyopengl_from_GLdouble; %End %PostInitialisationCode // Imports from QtGui. qpyopengl_value_array = (qpyopengl_value_array_t)sipImportSymbol("qpyopengl_value_array"); Q_ASSERT(qpyopengl_value_array); qpyopengl_value_array_cached = (qpyopengl_value_array_cached_t)sipImportSymbol("qpyopengl_value_array_cached"); Q_ASSERT(qpyopengl_value_array_cached); qpyopengl_get = (qpyopengl_get_t)sipImportSymbol("qpyopengl_get"); Q_ASSERT(qpyopengl_get); qpyopengl_from_GLint = (qpyopengl_from_GLint_t)sipImportSymbol("qpyopengl_from_GLint"); Q_ASSERT(qpyopengl_from_GLint); qpyopengl_from_GLuint = (qpyopengl_from_GLuint_t)sipImportSymbol("qpyopengl_from_GLuint"); Q_ASSERT(qpyopengl_from_GLuint); qpyopengl_from_GLboolean = (qpyopengl_from_GLboolean_t)sipImportSymbol("qpyopengl_from_GLboolean"); Q_ASSERT(qpyopengl_from_GLboolean); qpyopengl_from_GLfloat = (qpyopengl_from_GLfloat_t)sipImportSymbol("qpyopengl_from_GLfloat"); Q_ASSERT(qpyopengl_from_GLfloat); qpyopengl_from_GLdouble = (qpyopengl_from_GLdouble_t)sipImportSymbol("qpyopengl_from_GLdouble"); Q_ASSERT(qpyopengl_from_GLdouble); %End PyQt5_gpl-5.10.1/sip/_QOpenGLFunctions_2_1/0000755000076500000240000000000013245233150020230 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/_QOpenGLFunctions_2_1/_QOpenGLFunctions_2_1mod.sip0000644000076500000240000000363013245233150025405 0ustar philstaff00000000000000// _QOpenGLFunctions_2_1mod.sip generated by MetaSIP // // This file is part of the _QOpenGLFunctions_2_1 Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5._QOpenGLFunctions_2_1, keyword_arguments="Optional", use_limited_api=True) %Import QtGui/QtGuimod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %Include qopenglfunctions_2_1.sip PyQt5_gpl-5.10.1/sip/_QOpenGLFunctions_2_1/qopenglfunctions_2_1.sip0000644000076500000240000033070013245233150025007 0ustar philstaff00000000000000// qopenglfunctions_2_1.sip generated by MetaSIP // // This file is part of the _QOpenGLFunctions_2_1 Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QOpenGLFunctions_2_1 : QAbstractOpenGLFunctions { %TypeHeaderCode #include %End public: QOpenGLFunctions_2_1(); virtual ~QOpenGLFunctions_2_1(); virtual bool initializeOpenGLFunctions(); void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); void glDepthRange(GLdouble nearVal, GLdouble farVal); GLboolean glIsEnabled(GLenum cap); void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /TypeHint="int"/); %MethodCode GLint params[1]; sipCpp->glGetTexLevelParameteriv(a0, a1, a2, params); a3 = qpyopengl_from_GLint(&sipIsErr, params, 1); %End void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /TypeHint="float"/); %MethodCode GLfloat params[1]; sipCpp->glGetTexLevelParameterfv(a0, a1, a2, params); a3 = qpyopengl_from_GLfloat(&sipIsErr, params, 1); %End void glGetTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_SWIZZLE_RGBA) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_SWIZZLE_RGBA) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End const char *glGetString(GLenum name); %MethodCode sipRes = reinterpret_cast(sipCpp->glGetString(a0)); %End void glGetIntegerv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLint fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLint[nr_params]; } else { params = fixed_params; } sipCpp->glGetIntegerv(a0, params); a1 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetFloatv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, ...]]"/); %MethodCode GLfloat fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLfloat[nr_params]; } else { params = fixed_params; } sipCpp->glGetFloatv(a0, params); a1 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End GLenum glGetError(); void glGetDoublev(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, ...]]"/); %MethodCode GLdouble fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLdouble[nr_params]; } else { params = fixed_params; } sipCpp->glGetDoublev(a0, params); a1 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetBooleanv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[bool, Tuple[bool, ...]]"/); %MethodCode GLboolean fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLboolean[nr_params]; } else { params = fixed_params; } sipCpp->glGetBooleanv(a0, params); a1 = qpyopengl_from_GLboolean(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glReadBuffer(GLenum mode); void glPixelStorei(GLenum pname, GLint param); void glPixelStoref(GLenum pname, GLfloat param); void glDepthFunc(GLenum func); void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); void glStencilFunc(GLenum func, GLint ref, GLuint mask); void glLogicOp(GLenum opcode); void glBlendFunc(GLenum sfactor, GLenum dfactor); void glFlush(); void glFinish(); void glEnable(GLenum cap); void glDisable(GLenum cap); void glDepthMask(GLboolean flag); void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); void glStencilMask(GLuint mask); void glClearDepth(GLdouble depth); void glClearStencil(GLint s); void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glClear(GLbitfield mask); void glDrawBuffer(GLenum mode); void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, a6, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage1D(a0, a1, a2, a3, a4, a5, a6, array); %End void glTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameteriv(a0, a1, reinterpret_cast(array)); %End void glTexParameteri(GLenum target, GLenum pname, GLint param); void glTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameterfv(a0, a1, reinterpret_cast(array)); %End void glTexParameterf(GLenum target, GLenum pname, GLfloat param); void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); void glPolygonMode(GLenum face, GLenum mode); void glPointSize(GLfloat size); void glLineWidth(GLfloat width); void glHint(GLenum target, GLenum mode); void glFrontFace(GLenum mode); void glCullFace(GLenum mode); void glIndexubv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexubv(reinterpret_cast(array)); %End void glIndexub(GLubyte c); GLboolean glIsTexture(GLuint texture); void glGenTextures(GLsizei n, SIP_PYOBJECT *textures /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenTextures(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteTextures(GLsizei n, SIP_PYOBJECT textures /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteTextures(a0, reinterpret_cast(array)); %End void glBindTexture(GLenum target, GLuint texture); void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, a5, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); void glPolygonOffset(GLfloat factor, GLfloat units); void glDrawElements(GLenum mode, GLsizei count, GLenum type, SIP_PYOBJECT indices /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a2, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawElements(a0, a1, a2, array); %End void glDrawArrays(GLenum mode, GLint first, GLsizei count); void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, a9, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, a8, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, array); %End void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, SIP_PYOBJECT indices /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawRangeElements(a0, a1, a2, a3, a4, array); %End void glBlendEquation(GLenum mode); void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage2D(a0, a1, a2, a3, a4, a5, a6, array); %End void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glSampleCoverage(GLfloat value, GLboolean invert); void glActiveTexture(GLenum texture); void glPointParameteriv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameteriv(a0, reinterpret_cast(array)); %End void glPointParameteri(GLenum pname, GLint param); void glPointParameterfv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameterfv(a0, reinterpret_cast(array)); %End void glPointParameterf(GLenum pname, GLfloat param); void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); GLboolean glUnmapBuffer(GLenum target); void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array; if (a3 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a3, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferSubData(a0, a1, a2, array); %End void glBufferData(GLenum target, GLsizeiptr size, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/, GLenum usage); %MethodCode const GLvoid *array; if (a2 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferData(a0, a1, array, a3); %End GLboolean glIsBuffer(GLuint buffer); void glGenBuffers(GLsizei n, SIP_PYOBJECT *buffers /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenBuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteBuffers(GLsizei n, SIP_PYOBJECT buffers /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteBuffers(a0, reinterpret_cast(array)); %End void glBindBuffer(GLenum target, GLuint buffer); void glGetQueryiv(GLenum target, GLenum pname, GLint *params); void glEndQuery(GLenum target); void glBeginQuery(GLenum target, GLuint id); GLboolean glIsQuery(GLuint id); void glDeleteQueries(GLsizei n, SIP_PYOBJECT ids /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteQueries(a0, reinterpret_cast(array)); %End void glGenQueries(GLsizei n, SIP_PYOBJECT *ids /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenQueries(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a5, a2, sipSelf, "VertexAttribPointer", a0); if (sipError == sipErrorNone) sipCpp->glVertexAttribPointer(a0, a1, a2, a3, a4, array); %End void glValidateProgram(GLuint program); void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix4fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix3fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix2fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniform4iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4iv(a0, a1, reinterpret_cast(array)); %End void glUniform3iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3iv(a0, a1, reinterpret_cast(array)); %End void glUniform2iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2iv(a0, a1, reinterpret_cast(array)); %End void glUniform1iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1iv(a0, a1, reinterpret_cast(array)); %End void glUniform4fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4fv(a0, a1, reinterpret_cast(array)); %End void glUniform3fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3fv(a0, a1, reinterpret_cast(array)); %End void glUniform2fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2fv(a0, a1, reinterpret_cast(array)); %End void glUniform1fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1fv(a0, a1, reinterpret_cast(array)); %End void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); void glUniform2i(GLint location, GLint v0, GLint v1); void glUniform1i(GLint location, GLint v0); void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); void glUniform2f(GLint location, GLfloat v0, GLfloat v1); void glUniform1f(GLint location, GLfloat v0); void glUseProgram(GLuint program); void glLinkProgram(GLuint program); GLboolean glIsShader(GLuint shader); GLboolean glIsProgram(GLuint program); void glGetVertexAttribiv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetVertexAttribfv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetVertexAttribdv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLdouble params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribdv(a0, a1, params); a2 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); %End GLint glGetUniformLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetShaderSource(GLuint shader) /TypeHint="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_SHADER_SOURCE_LENGTH, &bufsize); if (bufsize > 0) { GLchar *source = new GLchar[bufsize]; sipCpp->glGetShaderSource(a0, bufsize, 0, source); sipRes = SIPBytes_FromString(source); delete[] source; } else { sipRes = SIPBytes_FromString(""); } %End SIP_PYOBJECT glGetShaderInfoLog(GLuint shader) /TypeHint="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetShaderInfoLog(a0, bufsize, 0, log); sipRes = SIPBytes_FromString(log); delete[] log; } else { sipRes = SIPBytes_FromString(""); } %End void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); SIP_PYOBJECT glGetProgramInfoLog(GLuint program) /TypeHint="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetProgramInfoLog(a0, bufsize, 0, log); sipRes = SIPBytes_FromString(log); delete[] log; } else { sipRes = SIPBytes_FromString(""); } %End void glGetProgramiv(GLuint program, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int]]"/); %MethodCode GLint params[3]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_COMPUTE_LOCAL_WORK_SIZE) case GL_COMPUTE_LOCAL_WORK_SIZE: nr_params = 3; break; #endif default: nr_params = 1; } sipCpp->glGetProgramiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End GLint glGetAttribLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetAttachedShaders(GLuint program) /TypeHint="Tuple[int, ...]"/; %MethodCode GLint nr_shaders; sipCpp->glGetProgramiv(a0, GL_ATTACHED_SHADERS, &nr_shaders); if (nr_shaders < 1) { sipRes = PyTuple_New(0); } else { GLuint *shaders = new GLuint[nr_shaders]; sipCpp->glGetAttachedShaders(a0, nr_shaders, 0, shaders); sipRes = PyTuple_New(nr_shaders); if (sipRes) { for (GLint i = 0; i < nr_shaders; ++i) { PyObject *itm = SIPLong_FromLong(shaders[i]); if (!itm) { Py_DECREF(sipRes); sipRes = 0; break; } PyTuple_SetItem(sipRes, i, itm); } } delete[] shaders; } if (!sipRes) sipIsErr = 1; %End SIP_PYOBJECT glGetActiveUniform(GLuint program, GLuint index) /TypeHint="Tuple[str, int, int]"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_UNIFORM_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveUniform(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End SIP_PYOBJECT glGetActiveAttrib(GLuint program, GLuint index) /TypeHint="Tuple[str, int, int]"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveAttrib(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End void glEnableVertexAttribArray(GLuint index); void glDisableVertexAttribArray(GLuint index); void glDetachShader(GLuint program, GLuint shader); void glDeleteShader(GLuint shader); void glDeleteProgram(GLuint program); GLuint glCreateShader(GLenum type); GLuint glCreateProgram(); void glCompileShader(GLuint shader); void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); void glAttachShader(GLuint program, GLuint shader); void glStencilMaskSeparate(GLenum face, GLuint mask); void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); void glDrawBuffers(GLsizei n, SIP_PYOBJECT bufs /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawBuffers(a0, reinterpret_cast(array)); %End void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); void glTranslatef(GLfloat x, GLfloat y, GLfloat z); void glTranslated(GLdouble x, GLdouble y, GLdouble z); void glScalef(GLfloat x, GLfloat y, GLfloat z); void glScaled(GLdouble x, GLdouble y, GLdouble z); void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); void glPushMatrix(); void glPopMatrix(); void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); void glMultMatrixd(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultMatrixd(reinterpret_cast(array)); %End void glMultMatrixf(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultMatrixf(reinterpret_cast(array)); %End void glMatrixMode(GLenum mode); void glLoadMatrixd(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadMatrixd(reinterpret_cast(array)); %End void glLoadMatrixf(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadMatrixf(reinterpret_cast(array)); %End void glLoadIdentity(); void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); GLboolean glIsList(GLuint list); void glGetTexGeniv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGeniv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexGenfv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGenfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetTexGendv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLdouble params[4]; Py_ssize_t nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGendv(a0, a1, params); a2 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); %End void glGetTexEnviv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_TEXTURE_ENV_COLOR: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexEnviv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexEnvfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_TEXTURE_ENV_COLOR: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexEnvfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetMaterialiv(GLenum face, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int], Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_SHININESS: nr_params = 1; break; case GL_COLOR_INDEXES: nr_params = 3; break; default: nr_params = 4; } sipCpp->glGetMaterialiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetMaterialfv(GLenum face, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float], Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_SHININESS: nr_params = 1; break; case GL_COLOR_INDEXES: nr_params = 3; break; default: nr_params = 4; } sipCpp->glGetMaterialfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetLightiv(GLenum light, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int], Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_AMBIENT: case GL_DIFFUSE: case GL_SPECULAR: case GL_POSITION: nr_params = 4; break; case GL_SPOT_DIRECTION: nr_params = 3; break; default: nr_params = 1; } sipCpp->glGetLightiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetLightfv(GLenum light, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float], Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_AMBIENT: case GL_DIFFUSE: case GL_SPECULAR: case GL_POSITION: nr_params = 4; break; case GL_SPOT_DIRECTION: nr_params = 3; break; default: nr_params = 1; } sipCpp->glGetLightfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetClipPlane(GLenum plane, SIP_PYOBJECT *equation /TypeHint="Tuple[float, float, float, float]"/); %MethodCode GLdouble params[4]; sipCpp->glGetClipPlane(a0, params); a1 = qpyopengl_from_GLdouble(&sipIsErr, params, 4); %End void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a4, a3, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawPixels(a0, a1, a2, a3, array); %End void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); void glPixelMapusv(GLenum map, GLint mapsize, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapusv(a0, a1, reinterpret_cast(array)); %End void glPixelMapuiv(GLenum map, GLint mapsize, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapuiv(a0, a1, reinterpret_cast(array)); %End void glPixelMapfv(GLenum map, GLint mapsize, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapfv(a0, a1, reinterpret_cast(array)); %End void glPixelTransferi(GLenum pname, GLint param); void glPixelTransferf(GLenum pname, GLfloat param); void glPixelZoom(GLfloat xfactor, GLfloat yfactor); void glAlphaFunc(GLenum func, GLfloat ref); void glEvalPoint2(GLint i, GLint j); void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); void glEvalPoint1(GLint i); void glEvalMesh1(GLenum mode, GLint i1, GLint i2); void glEvalCoord2fv(SIP_PYOBJECT u /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord2fv(reinterpret_cast(array)); %End void glEvalCoord2f(GLfloat u, GLfloat v); void glEvalCoord2dv(SIP_PYOBJECT u /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord2dv(reinterpret_cast(array)); %End void glEvalCoord2d(GLdouble u, GLdouble v); void glEvalCoord1fv(SIP_PYOBJECT u /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord1fv(reinterpret_cast(array)); %End void glEvalCoord1f(GLfloat u); void glEvalCoord1dv(SIP_PYOBJECT u /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord1dv(reinterpret_cast(array)); %End void glEvalCoord1d(GLdouble u); void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, SIP_PYOBJECT points /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap2f(a0, a1, a2, a3, a4, a5, a6, a7, a8, reinterpret_cast(array)); %End void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, SIP_PYOBJECT points /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap2d(a0, a1, a2, a3, a4, a5, a6, a7, a8, reinterpret_cast(array)); %End void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, SIP_PYOBJECT points /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap1f(a0, a1, a2, a3, a4, reinterpret_cast(array)); %End void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, SIP_PYOBJECT points /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap1d(a0, a1, a2, a3, a4, reinterpret_cast(array)); %End void glPushAttrib(GLbitfield mask); void glPopAttrib(); void glAccum(GLenum op, GLfloat value); void glIndexMask(GLuint mask); void glClearIndex(GLfloat c); void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glPushName(GLuint name); void glPopName(); void glPassThrough(GLfloat token); void glLoadName(GLuint name); void glInitNames(); GLint glRenderMode(GLenum mode); void glTexGeniv(GLenum coord, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGeniv(a0, a1, reinterpret_cast(array)); %End void glTexGeni(GLenum coord, GLenum pname, GLint param); void glTexGenfv(GLenum coord, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGenfv(a0, a1, reinterpret_cast(array)); %End void glTexGenf(GLenum coord, GLenum pname, GLfloat param); void glTexGendv(GLenum coord, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGendv(a0, a1, reinterpret_cast(array)); %End void glTexGend(GLenum coord, GLenum pname, GLdouble param); void glTexEnviv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexEnviv(a0, a1, reinterpret_cast(array)); %End void glTexEnvi(GLenum target, GLenum pname, GLint param); void glTexEnvfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexEnvfv(a0, a1, reinterpret_cast(array)); %End void glTexEnvf(GLenum target, GLenum pname, GLfloat param); void glShadeModel(GLenum mode); void glPolygonStipple(SIP_PYOBJECT mask /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glPolygonStipple(reinterpret_cast(array)); %End void glMaterialiv(GLenum face, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMaterialiv(a0, a1, reinterpret_cast(array)); %End void glMateriali(GLenum face, GLenum pname, GLint param); void glMaterialfv(GLenum face, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMaterialfv(a0, a1, reinterpret_cast(array)); %End void glMaterialf(GLenum face, GLenum pname, GLfloat param); void glLineStipple(GLint factor, GLushort pattern); void glLightModeliv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightModeliv(a0, reinterpret_cast(array)); %End void glLightModeli(GLenum pname, GLint param); void glLightModelfv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightModelfv(a0, reinterpret_cast(array)); %End void glLightModelf(GLenum pname, GLfloat param); void glLightiv(GLenum light, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightiv(a0, a1, reinterpret_cast(array)); %End void glLighti(GLenum light, GLenum pname, GLint param); void glLightfv(GLenum light, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightfv(a0, a1, reinterpret_cast(array)); %End void glLightf(GLenum light, GLenum pname, GLfloat param); void glFogiv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogiv(a0, reinterpret_cast(array)); %End void glFogi(GLenum pname, GLint param); void glFogfv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogfv(a0, reinterpret_cast(array)); %End void glFogf(GLenum pname, GLfloat param); void glColorMaterial(GLenum face, GLenum mode); void glClipPlane(GLenum plane, SIP_PYOBJECT equation /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glClipPlane(a0, reinterpret_cast(array)); %End void glVertex4sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4sv(reinterpret_cast(array)); %End void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); void glVertex4iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4iv(reinterpret_cast(array)); %End void glVertex4i(GLint x, GLint y, GLint z, GLint w); void glVertex4fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4fv(reinterpret_cast(array)); %End void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertex4dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4dv(reinterpret_cast(array)); %End void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertex3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3sv(reinterpret_cast(array)); %End void glVertex3s(GLshort x, GLshort y, GLshort z); void glVertex3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3iv(reinterpret_cast(array)); %End void glVertex3i(GLint x, GLint y, GLint z); void glVertex3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3fv(reinterpret_cast(array)); %End void glVertex3f(GLfloat x, GLfloat y, GLfloat z); void glVertex3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3dv(reinterpret_cast(array)); %End void glVertex3d(GLdouble x, GLdouble y, GLdouble z); void glVertex2sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2sv(reinterpret_cast(array)); %End void glVertex2s(GLshort x, GLshort y); void glVertex2iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2iv(reinterpret_cast(array)); %End void glVertex2i(GLint x, GLint y); void glVertex2fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2fv(reinterpret_cast(array)); %End void glVertex2f(GLfloat x, GLfloat y); void glVertex2dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2dv(reinterpret_cast(array)); %End void glVertex2d(GLdouble x, GLdouble y); void glTexCoord4sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4sv(reinterpret_cast(array)); %End void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); void glTexCoord4iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4iv(reinterpret_cast(array)); %End void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); void glTexCoord4fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4fv(reinterpret_cast(array)); %End void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); void glTexCoord4dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4dv(reinterpret_cast(array)); %End void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); void glTexCoord3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3sv(reinterpret_cast(array)); %End void glTexCoord3s(GLshort s, GLshort t, GLshort r); void glTexCoord3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3iv(reinterpret_cast(array)); %End void glTexCoord3i(GLint s, GLint t, GLint r); void glTexCoord3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3fv(reinterpret_cast(array)); %End void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); void glTexCoord3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3dv(reinterpret_cast(array)); %End void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); void glTexCoord2sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2sv(reinterpret_cast(array)); %End void glTexCoord2s(GLshort s, GLshort t); void glTexCoord2iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2iv(reinterpret_cast(array)); %End void glTexCoord2i(GLint s, GLint t); void glTexCoord2fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2fv(reinterpret_cast(array)); %End void glTexCoord2f(GLfloat s, GLfloat t); void glTexCoord2dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2dv(reinterpret_cast(array)); %End void glTexCoord2d(GLdouble s, GLdouble t); void glTexCoord1sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1sv(reinterpret_cast(array)); %End void glTexCoord1s(GLshort s); void glTexCoord1iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1iv(reinterpret_cast(array)); %End void glTexCoord1i(GLint s); void glTexCoord1fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1fv(reinterpret_cast(array)); %End void glTexCoord1f(GLfloat s); void glTexCoord1dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1dv(reinterpret_cast(array)); %End void glTexCoord1d(GLdouble s); void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); void glRasterPos4sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4sv(reinterpret_cast(array)); %End void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); void glRasterPos4iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4iv(reinterpret_cast(array)); %End void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); void glRasterPos4fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4fv(reinterpret_cast(array)); %End void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glRasterPos4dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4dv(reinterpret_cast(array)); %End void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glRasterPos3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3sv(reinterpret_cast(array)); %End void glRasterPos3s(GLshort x, GLshort y, GLshort z); void glRasterPos3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3iv(reinterpret_cast(array)); %End void glRasterPos3i(GLint x, GLint y, GLint z); void glRasterPos3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3fv(reinterpret_cast(array)); %End void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); void glRasterPos3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3dv(reinterpret_cast(array)); %End void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); void glRasterPos2sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2sv(reinterpret_cast(array)); %End void glRasterPos2s(GLshort x, GLshort y); void glRasterPos2iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2iv(reinterpret_cast(array)); %End void glRasterPos2i(GLint x, GLint y); void glRasterPos2fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2fv(reinterpret_cast(array)); %End void glRasterPos2f(GLfloat x, GLfloat y); void glRasterPos2dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2dv(reinterpret_cast(array)); %End void glRasterPos2d(GLdouble x, GLdouble y); void glNormal3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3sv(reinterpret_cast(array)); %End void glNormal3s(GLshort nx, GLshort ny, GLshort nz); void glNormal3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3iv(reinterpret_cast(array)); %End void glNormal3i(GLint nx, GLint ny, GLint nz); void glNormal3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3fv(reinterpret_cast(array)); %End void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); void glNormal3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3dv(reinterpret_cast(array)); %End void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); void glNormal3bv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3bv(reinterpret_cast(array)); %End void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); void glIndexsv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexsv(reinterpret_cast(array)); %End void glIndexs(GLshort c); void glIndexiv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexiv(reinterpret_cast(array)); %End void glIndexi(GLint c); void glIndexfv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexfv(reinterpret_cast(array)); %End void glIndexf(GLfloat c); void glIndexdv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexdv(reinterpret_cast(array)); %End void glIndexd(GLdouble c); void glEnd(); void glEdgeFlagv(SIP_PYOBJECT flag /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEdgeFlagv(reinterpret_cast(array)); %End void glEdgeFlag(GLboolean flag); void glColor4usv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4usv(reinterpret_cast(array)); %End void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); void glColor4uiv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4uiv(reinterpret_cast(array)); %End void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); void glColor4ubv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4ubv(reinterpret_cast(array)); %End void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); void glColor4sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4sv(reinterpret_cast(array)); %End void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); void glColor4iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4iv(reinterpret_cast(array)); %End void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); void glColor4fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4fv(reinterpret_cast(array)); %End void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glColor4dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4dv(reinterpret_cast(array)); %End void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); void glColor4bv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4bv(reinterpret_cast(array)); %End void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); void glColor3usv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3usv(reinterpret_cast(array)); %End void glColor3us(GLushort red, GLushort green, GLushort blue); void glColor3uiv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3uiv(reinterpret_cast(array)); %End void glColor3ui(GLuint red, GLuint green, GLuint blue); void glColor3ubv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3ubv(reinterpret_cast(array)); %End void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); void glColor3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3sv(reinterpret_cast(array)); %End void glColor3s(GLshort red, GLshort green, GLshort blue); void glColor3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3iv(reinterpret_cast(array)); %End void glColor3i(GLint red, GLint green, GLint blue); void glColor3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3fv(reinterpret_cast(array)); %End void glColor3f(GLfloat red, GLfloat green, GLfloat blue); void glColor3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3dv(reinterpret_cast(array)); %End void glColor3d(GLdouble red, GLdouble green, GLdouble blue); void glColor3bv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3bv(reinterpret_cast(array)); %End void glColor3b(GLbyte red, GLbyte green, GLbyte blue); void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, SIP_PYOBJECT bitmap /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBitmap(a0, a1, a2, a3, a4, a5, reinterpret_cast(array)); %End void glBegin(GLenum mode); void glListBase(GLuint base); GLuint glGenLists(GLsizei range); void glDeleteLists(GLuint list, GLsizei range); void glCallList(GLuint list); void glEndList(); void glNewList(GLuint list, GLenum mode); void glPushClientAttrib(GLbitfield mask); void glPopClientAttrib(); void glVertexPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "VertexPointer", 0); if (sipError == sipErrorNone) sipCpp->glVertexPointer(a0, a1, a2, array); %End void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "TexCoordPointer", 0); if (sipError == sipErrorNone) sipCpp->glTexCoordPointer(a0, a1, a2, array); %End void glNormalPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a2, a0, sipSelf, "NormalPointer", 0); if (sipError == sipErrorNone) sipCpp->glNormalPointer(a0, a1, array); %End void glIndexPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a2, a0, sipSelf, "IndexPointer", 0); if (sipError == sipErrorNone) sipCpp->glIndexPointer(a0, a1, array); %End void glEnableClientState(GLenum array); void glEdgeFlagPointer(GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf, "EdgeFlagPointer", 0); if (sipError == sipErrorNone) sipCpp->glEdgeFlagPointer(a0, array); %End void glDisableClientState(GLenum array); void glColorPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "ColorPointer", 0); if (sipError == sipErrorNone) sipCpp->glColorPointer(a0, a1, a2, array); %End void glArrayElement(GLint i); void glResetMinmax(GLenum target); void glResetHistogram(GLenum target); void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); void glGetConvolutionParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CONVOLUTION_BORDER_COLOR: case GL_CONVOLUTION_FILTER_SCALE: case GL_CONVOLUTION_FILTER_BIAS: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetConvolutionParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetConvolutionParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CONVOLUTION_BORDER_COLOR: case GL_CONVOLUTION_FILTER_SCALE: case GL_CONVOLUTION_FILTER_BIAS: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetConvolutionParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); void glConvolutionParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionParameteriv(a0, a1, reinterpret_cast(array)); %End void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); void glConvolutionParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionParameterfv(a0, a1, reinterpret_cast(array)); %End void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT image /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, a5, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionFilter2D(a0, a1, a2, a3, a4, a5, array); %End void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT image /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionFilter1D(a0, a1, a2, a3, a4, array); %End void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorSubTable(a0, a1, a2, a3, a4, array); %End void glGetColorTableParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_COLOR_TABLE: case GL_POST_CONVOLUTION_COLOR_TABLE: case GL_POST_COLOR_MATRIX_COLOR_TABLE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetColorTableParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetColorTableParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_COLOR_TABLE: case GL_POST_CONVOLUTION_COLOR_TABLE: case GL_POST_COLOR_MATRIX_COLOR_TABLE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetColorTableParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); void glColorTableParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTableParameteriv(a0, a1, reinterpret_cast(array)); %End void glColorTableParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTableParameterfv(a0, a1, reinterpret_cast(array)); %End void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT table /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTable(a0, a1, a2, a3, a4, array); %End void glMultTransposeMatrixd(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultTransposeMatrixd(reinterpret_cast(array)); %End void glMultTransposeMatrixf(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultTransposeMatrixf(reinterpret_cast(array)); %End void glLoadTransposeMatrixd(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadTransposeMatrixd(reinterpret_cast(array)); %End void glLoadTransposeMatrixf(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadTransposeMatrixf(reinterpret_cast(array)); %End void glMultiTexCoord4sv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); void glMultiTexCoord4iv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); void glMultiTexCoord4fv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); void glMultiTexCoord4dv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); void glMultiTexCoord3sv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); void glMultiTexCoord3iv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); void glMultiTexCoord3fv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); void glMultiTexCoord3dv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); void glMultiTexCoord2sv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); void glMultiTexCoord2iv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2i(GLenum target, GLint s, GLint t); void glMultiTexCoord2fv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); void glMultiTexCoord2dv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); void glMultiTexCoord1sv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1s(GLenum target, GLshort s); void glMultiTexCoord1iv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1i(GLenum target, GLint s); void glMultiTexCoord1fv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1f(GLenum target, GLfloat s); void glMultiTexCoord1dv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1d(GLenum target, GLdouble s); void glClientActiveTexture(GLenum texture); void glWindowPos3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3sv(reinterpret_cast(array)); %End void glWindowPos3s(GLshort x, GLshort y, GLshort z); void glWindowPos3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3iv(reinterpret_cast(array)); %End void glWindowPos3i(GLint x, GLint y, GLint z); void glWindowPos3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3fv(reinterpret_cast(array)); %End void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); void glWindowPos3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3dv(reinterpret_cast(array)); %End void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); void glWindowPos2sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2sv(reinterpret_cast(array)); %End void glWindowPos2s(GLshort x, GLshort y); void glWindowPos2iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2iv(reinterpret_cast(array)); %End void glWindowPos2i(GLint x, GLint y); void glWindowPos2fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2fv(reinterpret_cast(array)); %End void glWindowPos2f(GLfloat x, GLfloat y); void glWindowPos2dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2dv(reinterpret_cast(array)); %End void glWindowPos2d(GLdouble x, GLdouble y); void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a1, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColorPointer(a0, a1, a2, array); %End void glSecondaryColor3usv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3usv(reinterpret_cast(array)); %End void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); void glSecondaryColor3uiv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3uiv(reinterpret_cast(array)); %End void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); void glSecondaryColor3ubv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3ubv(reinterpret_cast(array)); %End void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); void glSecondaryColor3sv(SIP_PYBUFFER v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3sv(reinterpret_cast(array)); %End void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); void glSecondaryColor3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3iv(reinterpret_cast(array)); %End void glSecondaryColor3i(GLint red, GLint green, GLint blue); void glSecondaryColor3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3fv(reinterpret_cast(array)); %End void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); void glSecondaryColor3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3dv(reinterpret_cast(array)); %End void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); void glSecondaryColor3bv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3bv(reinterpret_cast(array)); %End void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); void glFogCoordPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, a0, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoordPointer(a0, a1, array); %End void glFogCoorddv(SIP_PYOBJECT coord /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoorddv(reinterpret_cast(array)); %End void glFogCoordd(GLdouble coord); void glFogCoordfv(SIP_PYOBJECT coord /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoordfv(reinterpret_cast(array)); %End void glFogCoordf(GLfloat coord); void glVertexAttrib4usv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4usv(a0, reinterpret_cast(array)); %End void glVertexAttrib4uiv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4uiv(a0, reinterpret_cast(array)); %End void glVertexAttrib4ubv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4ubv(a0, reinterpret_cast(array)); %End void glVertexAttrib4sv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4sv(a0, reinterpret_cast(array)); %End void glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); void glVertexAttrib4iv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4iv(a0, reinterpret_cast(array)); %End void glVertexAttrib4fv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4fv(a0, reinterpret_cast(array)); %End void glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertexAttrib4dv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4dv(a0, reinterpret_cast(array)); %End void glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertexAttrib4bv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4bv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nusv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nusv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nuiv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nuiv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nubv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nubv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); void glVertexAttrib4Nsv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nsv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Niv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Niv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nbv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nbv(a0, reinterpret_cast(array)); %End void glVertexAttrib3sv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3sv(a0, reinterpret_cast(array)); %End void glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); void glVertexAttrib3fv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3fv(a0, reinterpret_cast(array)); %End void glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); void glVertexAttrib3dv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3dv(a0, reinterpret_cast(array)); %End void glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); void glVertexAttrib2sv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2sv(a0, reinterpret_cast(array)); %End void glVertexAttrib2s(GLuint index, GLshort x, GLshort y); void glVertexAttrib2fv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2fv(a0, reinterpret_cast(array)); %End void glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); void glVertexAttrib2dv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2dv(a0, reinterpret_cast(array)); %End void glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); void glVertexAttrib1sv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1sv(a0, reinterpret_cast(array)); %End void glVertexAttrib1s(GLuint index, GLshort x); void glVertexAttrib1fv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1fv(a0, reinterpret_cast(array)); %End void glVertexAttrib1f(GLuint index, GLfloat x); void glVertexAttrib1dv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1dv(a0, reinterpret_cast(array)); %End void glVertexAttrib1d(GLuint index, GLdouble x); }; %End %ModuleHeaderCode #include // Imports from QtGui. typedef const GLvoid *(*qpyopengl_value_array_t)(sipErrorState *, PyObject *, GLenum, PyObject *); extern qpyopengl_value_array_t qpyopengl_value_array; typedef const GLvoid *(*qpyopengl_value_array_cached_t)(sipErrorState *, PyObject *, GLenum, PyObject *, const char *, GLuint); extern qpyopengl_value_array_cached_t qpyopengl_value_array_cached; typedef GLint (*qpyopengl_get_t)(GLenum, GLenum *); extern qpyopengl_get_t qpyopengl_get; typedef PyObject *(*qpyopengl_from_GLint_t)(int *, const GLint *, Py_ssize_t); extern qpyopengl_from_GLint_t qpyopengl_from_GLint; typedef PyObject *(*qpyopengl_from_GLuint_t)(int *, const GLuint *, Py_ssize_t); extern qpyopengl_from_GLuint_t qpyopengl_from_GLuint; typedef PyObject *(*qpyopengl_from_GLboolean_t)(int *, const GLboolean *, Py_ssize_t); extern qpyopengl_from_GLboolean_t qpyopengl_from_GLboolean; typedef PyObject *(*qpyopengl_from_GLfloat_t)(int *, const GLfloat *, Py_ssize_t); extern qpyopengl_from_GLfloat_t qpyopengl_from_GLfloat; typedef PyObject *(*qpyopengl_from_GLdouble_t)(int *, const GLdouble *, Py_ssize_t); extern qpyopengl_from_GLdouble_t qpyopengl_from_GLdouble; %End %ModuleCode // Imports from QtGui. qpyopengl_value_array_t qpyopengl_value_array; qpyopengl_value_array_cached_t qpyopengl_value_array_cached; qpyopengl_get_t qpyopengl_get; qpyopengl_from_GLint_t qpyopengl_from_GLint; qpyopengl_from_GLuint_t qpyopengl_from_GLuint; qpyopengl_from_GLboolean_t qpyopengl_from_GLboolean; qpyopengl_from_GLfloat_t qpyopengl_from_GLfloat; qpyopengl_from_GLdouble_t qpyopengl_from_GLdouble; %End %PostInitialisationCode // Imports from QtGui. qpyopengl_value_array = (qpyopengl_value_array_t)sipImportSymbol("qpyopengl_value_array"); Q_ASSERT(qpyopengl_value_array); qpyopengl_value_array_cached = (qpyopengl_value_array_cached_t)sipImportSymbol("qpyopengl_value_array_cached"); Q_ASSERT(qpyopengl_value_array_cached); qpyopengl_get = (qpyopengl_get_t)sipImportSymbol("qpyopengl_get"); Q_ASSERT(qpyopengl_get); qpyopengl_from_GLint = (qpyopengl_from_GLint_t)sipImportSymbol("qpyopengl_from_GLint"); Q_ASSERT(qpyopengl_from_GLint); qpyopengl_from_GLuint = (qpyopengl_from_GLuint_t)sipImportSymbol("qpyopengl_from_GLuint"); Q_ASSERT(qpyopengl_from_GLuint); qpyopengl_from_GLboolean = (qpyopengl_from_GLboolean_t)sipImportSymbol("qpyopengl_from_GLboolean"); Q_ASSERT(qpyopengl_from_GLboolean); qpyopengl_from_GLfloat = (qpyopengl_from_GLfloat_t)sipImportSymbol("qpyopengl_from_GLfloat"); Q_ASSERT(qpyopengl_from_GLfloat); qpyopengl_from_GLdouble = (qpyopengl_from_GLdouble_t)sipImportSymbol("qpyopengl_from_GLdouble"); Q_ASSERT(qpyopengl_from_GLdouble); %End PyQt5_gpl-5.10.1/sip/_QOpenGLFunctions_4_1_Core/0000755000076500000240000000000013245233150021202 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/_QOpenGLFunctions_4_1_Core/_QOpenGLFunctions_4_1_Coremod.sip0000644000076500000240000000365413245233150027337 0ustar philstaff00000000000000// _QOpenGLFunctions_4_1_Coremod.sip generated by MetaSIP // // This file is part of the _QOpenGLFunctions_4_1_Core Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5._QOpenGLFunctions_4_1_Core, keyword_arguments="Optional", use_limited_api=True) %Import QtGui/QtGuimod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %Include qopenglfunctions_4_1_core.sip PyQt5_gpl-5.10.1/sip/_QOpenGLFunctions_4_1_Core/qopenglfunctions_4_1_core.sip0000644000076500000240000012477413245233150027007 0ustar philstaff00000000000000// qopenglfunctions_4_1_core.sip generated by MetaSIP // // This file is part of the _QOpenGLFunctions_4_1_Core Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QOpenGLFunctions_4_1_Core : QAbstractOpenGLFunctions { %TypeHeaderCode #include %End public: QOpenGLFunctions_4_1_Core(); virtual ~QOpenGLFunctions_4_1_Core(); virtual bool initializeOpenGLFunctions(); void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); void glDepthRange(GLdouble nearVal, GLdouble farVal); GLboolean glIsEnabled(GLenum cap); void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /TypeHint="int"/); %MethodCode GLint params[1]; sipCpp->glGetTexLevelParameteriv(a0, a1, a2, params); a3 = qpyopengl_from_GLint(&sipIsErr, params, 1); %End void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /TypeHint="float"/); %MethodCode GLfloat params[1]; sipCpp->glGetTexLevelParameterfv(a0, a1, a2, params); a3 = qpyopengl_from_GLfloat(&sipIsErr, params, 1); %End void glGetTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_SWIZZLE_RGBA) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_SWIZZLE_RGBA) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End const char *glGetString(GLenum name); %MethodCode sipRes = reinterpret_cast(sipCpp->glGetString(a0)); %End void glGetIntegerv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLint fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLint[nr_params]; } else { params = fixed_params; } sipCpp->glGetIntegerv(a0, params); a1 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetFloatv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, ...]]"/); %MethodCode GLfloat fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLfloat[nr_params]; } else { params = fixed_params; } sipCpp->glGetFloatv(a0, params); a1 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End GLenum glGetError(); void glGetDoublev(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, ...]]"/); %MethodCode GLdouble fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLdouble[nr_params]; } else { params = fixed_params; } sipCpp->glGetDoublev(a0, params); a1 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetBooleanv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[bool, Tuple[bool, ...]]"/); %MethodCode GLboolean fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLboolean[nr_params]; } else { params = fixed_params; } sipCpp->glGetBooleanv(a0, params); a1 = qpyopengl_from_GLboolean(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glReadBuffer(GLenum mode); void glPixelStorei(GLenum pname, GLint param); void glPixelStoref(GLenum pname, GLfloat param); void glDepthFunc(GLenum func); void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); void glStencilFunc(GLenum func, GLint ref, GLuint mask); void glLogicOp(GLenum opcode); void glBlendFunc(GLenum sfactor, GLenum dfactor); void glFlush(); void glFinish(); void glEnable(GLenum cap); void glDisable(GLenum cap); void glDepthMask(GLboolean flag); void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); void glStencilMask(GLuint mask); void glClearDepth(GLdouble depth); void glClearStencil(GLint s); void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glClear(GLbitfield mask); void glDrawBuffer(GLenum mode); void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, a6, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage1D(a0, a1, a2, a3, a4, a5, a6, array); %End void glTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameteriv(a0, a1, reinterpret_cast(array)); %End void glTexParameteri(GLenum target, GLenum pname, GLint param); void glTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameterfv(a0, a1, reinterpret_cast(array)); %End void glTexParameterf(GLenum target, GLenum pname, GLfloat param); void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); void glPolygonMode(GLenum face, GLenum mode); void glPointSize(GLfloat size); void glLineWidth(GLfloat width); void glHint(GLenum target, GLenum mode); void glFrontFace(GLenum mode); void glCullFace(GLenum mode); void glIndexubv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexubv(reinterpret_cast(array)); %End void glIndexub(GLubyte c); GLboolean glIsTexture(GLuint texture); void glGenTextures(GLsizei n, SIP_PYOBJECT *textures /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenTextures(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteTextures(GLsizei n, SIP_PYOBJECT textures /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteTextures(a0, reinterpret_cast(array)); %End void glBindTexture(GLenum target, GLuint texture); void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, a5, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); void glPolygonOffset(GLfloat factor, GLfloat units); void glDrawElements(GLenum mode, GLsizei count, GLenum type, SIP_PYOBJECT indices /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a2, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawElements(a0, a1, a2, array); %End void glDrawArrays(GLenum mode, GLint first, GLsizei count); void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, a9, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, a8, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, array); %End void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, SIP_PYOBJECT indices /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawRangeElements(a0, a1, a2, a3, a4, array); %End void glBlendEquation(GLenum mode); void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage2D(a0, a1, a2, a3, a4, a5, a6, array); %End void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glSampleCoverage(GLfloat value, GLboolean invert); void glActiveTexture(GLenum texture); void glPointParameteriv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameteriv(a0, reinterpret_cast(array)); %End void glPointParameteri(GLenum pname, GLint param); void glPointParameterfv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameterfv(a0, reinterpret_cast(array)); %End void glPointParameterf(GLenum pname, GLfloat param); void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); GLboolean glUnmapBuffer(GLenum target); void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array; if (a3 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a3, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferSubData(a0, a1, a2, array); %End void glBufferData(GLenum target, GLsizeiptr size, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/, GLenum usage); %MethodCode const GLvoid *array; if (a2 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferData(a0, a1, array, a3); %End GLboolean glIsBuffer(GLuint buffer); void glGenBuffers(GLsizei n, SIP_PYOBJECT *buffers /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenBuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteBuffers(GLsizei n, SIP_PYOBJECT buffers /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteBuffers(a0, reinterpret_cast(array)); %End void glBindBuffer(GLenum target, GLuint buffer); void glGetQueryiv(GLenum target, GLenum pname, GLint *params); void glEndQuery(GLenum target); void glBeginQuery(GLenum target, GLuint id); GLboolean glIsQuery(GLuint id); void glDeleteQueries(GLsizei n, SIP_PYOBJECT ids /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteQueries(a0, reinterpret_cast(array)); %End void glGenQueries(GLsizei n, SIP_PYOBJECT *ids /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenQueries(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a5, a2, sipSelf, "VertexAttribPointer", a0); if (sipError == sipErrorNone) sipCpp->glVertexAttribPointer(a0, a1, a2, a3, a4, array); %End void glValidateProgram(GLuint program); void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix4fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix3fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix2fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniform4iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4iv(a0, a1, reinterpret_cast(array)); %End void glUniform3iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3iv(a0, a1, reinterpret_cast(array)); %End void glUniform2iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2iv(a0, a1, reinterpret_cast(array)); %End void glUniform1iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1iv(a0, a1, reinterpret_cast(array)); %End void glUniform4fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4fv(a0, a1, reinterpret_cast(array)); %End void glUniform3fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3fv(a0, a1, reinterpret_cast(array)); %End void glUniform2fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2fv(a0, a1, reinterpret_cast(array)); %End void glUniform1fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1fv(a0, a1, reinterpret_cast(array)); %End void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); void glUniform2i(GLint location, GLint v0, GLint v1); void glUniform1i(GLint location, GLint v0); void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); void glUniform2f(GLint location, GLfloat v0, GLfloat v1); void glUniform1f(GLint location, GLfloat v0); void glUseProgram(GLuint program); void glLinkProgram(GLuint program); GLboolean glIsShader(GLuint shader); GLboolean glIsProgram(GLuint program); void glGetVertexAttribiv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetVertexAttribfv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetVertexAttribdv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLdouble params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribdv(a0, a1, params); a2 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); %End GLint glGetUniformLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetShaderSource(GLuint shader) /TypeHint="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_SHADER_SOURCE_LENGTH, &bufsize); if (bufsize > 0) { GLchar *source = new GLchar[bufsize]; sipCpp->glGetShaderSource(a0, bufsize, 0, source); sipRes = SIPBytes_FromString(source); delete[] source; } else { sipRes = SIPBytes_FromString(""); } %End SIP_PYOBJECT glGetShaderInfoLog(GLuint shader) /TypeHint="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetShaderInfoLog(a0, bufsize, 0, log); sipRes = SIPBytes_FromString(log); delete[] log; } else { sipRes = SIPBytes_FromString(""); } %End void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); SIP_PYOBJECT glGetProgramInfoLog(GLuint program) /TypeHint="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetProgramInfoLog(a0, bufsize, 0, log); sipRes = SIPBytes_FromString(log); delete[] log; } else { sipRes = SIPBytes_FromString(""); } %End void glGetProgramiv(GLuint program, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int]]"/); %MethodCode GLint params[3]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_COMPUTE_LOCAL_WORK_SIZE) case GL_COMPUTE_LOCAL_WORK_SIZE: nr_params = 3; break; #endif default: nr_params = 1; } sipCpp->glGetProgramiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End GLint glGetAttribLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetAttachedShaders(GLuint program) /TypeHint="Tuple[int, ...]"/; %MethodCode GLint nr_shaders; sipCpp->glGetProgramiv(a0, GL_ATTACHED_SHADERS, &nr_shaders); if (nr_shaders < 1) { sipRes = PyTuple_New(0); } else { GLuint *shaders = new GLuint[nr_shaders]; sipCpp->glGetAttachedShaders(a0, nr_shaders, 0, shaders); sipRes = PyTuple_New(nr_shaders); if (sipRes) { for (GLint i = 0; i < nr_shaders; ++i) { PyObject *itm = SIPLong_FromLong(shaders[i]); if (!itm) { Py_DECREF(sipRes); sipRes = 0; break; } PyTuple_SetItem(sipRes, i, itm); } } delete[] shaders; } if (!sipRes) sipIsErr = 1; %End SIP_PYOBJECT glGetActiveUniform(GLuint program, GLuint index) /TypeHint="Tuple[str, int, int]"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_UNIFORM_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveUniform(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End SIP_PYOBJECT glGetActiveAttrib(GLuint program, GLuint index) /TypeHint="Tuple[str, int, int]"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveAttrib(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End void glEnableVertexAttribArray(GLuint index); void glDisableVertexAttribArray(GLuint index); void glDetachShader(GLuint program, GLuint shader); void glDeleteShader(GLuint shader); void glDeleteProgram(GLuint program); GLuint glCreateShader(GLenum type); GLuint glCreateProgram(); void glCompileShader(GLuint shader); void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); void glAttachShader(GLuint program, GLuint shader); void glStencilMaskSeparate(GLenum face, GLuint mask); void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); void glDrawBuffers(GLsizei n, SIP_PYOBJECT bufs /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawBuffers(a0, reinterpret_cast(array)); %End void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); GLboolean glIsVertexArray(GLuint array); void glBindVertexArray(GLuint array); void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); void glGenerateMipmap(GLenum target); void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); GLenum glCheckFramebufferStatus(GLenum target); void glBindFramebuffer(GLenum target, GLuint framebuffer); GLboolean glIsFramebuffer(GLuint framebuffer); void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); void glBindRenderbuffer(GLenum target, GLuint renderbuffer); GLboolean glIsRenderbuffer(GLuint renderbuffer); void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); void glUniform2ui(GLint location, GLuint v0, GLuint v1); void glUniform1ui(GLint location, GLuint v0); void glEndConditionalRender(); void glBeginConditionalRender(GLuint id, GLenum mode); void glClampColor(GLenum target, GLenum clamp); void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); void glEndTransformFeedback(); void glBeginTransformFeedback(GLenum primitiveMode); GLboolean glIsEnabledi(GLenum target, GLuint index); void glDisablei(GLenum target, GLuint index); void glEnablei(GLenum target, GLuint index); void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); void glPrimitiveRestartIndex(GLuint index); void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); void glSampleMaski(GLuint index, GLbitfield mask); void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); void glProvokingVertex(GLenum mode); void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); void glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); void glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); void glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); void glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); void glSecondaryColorP3ui(GLenum type, GLuint color); void glColorP4ui(GLenum type, GLuint color); void glColorP3ui(GLenum type, GLuint color); void glNormalP3ui(GLenum type, GLuint coords); void glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords); void glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords); void glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords); void glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords); void glTexCoordP4ui(GLenum type, GLuint coords); void glTexCoordP3ui(GLenum type, GLuint coords); void glTexCoordP2ui(GLenum type, GLuint coords); void glTexCoordP1ui(GLenum type, GLuint coords); void glVertexP4ui(GLenum type, GLuint value); void glVertexP3ui(GLenum type, GLuint value); void glVertexP2ui(GLenum type, GLuint value); void glQueryCounter(GLuint id, GLenum target); void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); void glBindSampler(GLuint unit, GLuint sampler); GLboolean glIsSampler(GLuint sampler); void glVertexAttribDivisor(GLuint index, GLuint divisor); void glEndQueryIndexed(GLenum target, GLuint index); void glBeginQueryIndexed(GLenum target, GLuint index, GLuint id); void glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream); void glDrawTransformFeedback(GLenum mode, GLuint id); void glResumeTransformFeedback(); void glPauseTransformFeedback(); GLboolean glIsTransformFeedback(GLuint id); void glBindTransformFeedback(GLenum target, GLuint id); void glPatchParameteri(GLenum pname, GLint value); void glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z); void glUniform2d(GLint location, GLdouble x, GLdouble y); void glUniform1d(GLint location, GLdouble x); void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); void glBlendFunci(GLuint buf, GLenum src, GLenum dst); void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha); void glBlendEquationi(GLuint buf, GLenum mode); void glMinSampleShading(GLfloat value); void glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f); void glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); void glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); void glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); void glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y); void glVertexAttribL1d(GLuint index, GLdouble x); void glValidateProgramPipeline(GLuint pipeline); void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); void glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); void glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1); void glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1); void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1); void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1); void glProgramUniform1ui(GLuint program, GLint location, GLuint v0); void glProgramUniform1d(GLuint program, GLint location, GLdouble v0); void glProgramUniform1f(GLuint program, GLint location, GLfloat v0); void glProgramUniform1i(GLuint program, GLint location, GLint v0); GLboolean glIsProgramPipeline(GLuint pipeline); void glBindProgramPipeline(GLuint pipeline); void glActiveShaderProgram(GLuint pipeline, GLuint program); void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program); void glProgramParameteri(GLuint program, GLenum pname, GLint value); void glClearDepthf(GLfloat dd); void glDepthRangef(GLfloat n, GLfloat f); void glReleaseShaderCompiler(); }; %End %ModuleHeaderCode #include // Imports from QtGui. typedef const GLvoid *(*qpyopengl_value_array_t)(sipErrorState *, PyObject *, GLenum, PyObject *); extern qpyopengl_value_array_t qpyopengl_value_array; typedef const GLvoid *(*qpyopengl_value_array_cached_t)(sipErrorState *, PyObject *, GLenum, PyObject *, const char *, GLuint); extern qpyopengl_value_array_cached_t qpyopengl_value_array_cached; typedef GLint (*qpyopengl_get_t)(GLenum, GLenum *); extern qpyopengl_get_t qpyopengl_get; typedef PyObject *(*qpyopengl_from_GLint_t)(int *, const GLint *, Py_ssize_t); extern qpyopengl_from_GLint_t qpyopengl_from_GLint; typedef PyObject *(*qpyopengl_from_GLuint_t)(int *, const GLuint *, Py_ssize_t); extern qpyopengl_from_GLuint_t qpyopengl_from_GLuint; typedef PyObject *(*qpyopengl_from_GLboolean_t)(int *, const GLboolean *, Py_ssize_t); extern qpyopengl_from_GLboolean_t qpyopengl_from_GLboolean; typedef PyObject *(*qpyopengl_from_GLfloat_t)(int *, const GLfloat *, Py_ssize_t); extern qpyopengl_from_GLfloat_t qpyopengl_from_GLfloat; typedef PyObject *(*qpyopengl_from_GLdouble_t)(int *, const GLdouble *, Py_ssize_t); extern qpyopengl_from_GLdouble_t qpyopengl_from_GLdouble; %End %ModuleCode // Imports from QtGui. qpyopengl_value_array_t qpyopengl_value_array; qpyopengl_value_array_cached_t qpyopengl_value_array_cached; qpyopengl_get_t qpyopengl_get; qpyopengl_from_GLint_t qpyopengl_from_GLint; qpyopengl_from_GLuint_t qpyopengl_from_GLuint; qpyopengl_from_GLboolean_t qpyopengl_from_GLboolean; qpyopengl_from_GLfloat_t qpyopengl_from_GLfloat; qpyopengl_from_GLdouble_t qpyopengl_from_GLdouble; %End %PostInitialisationCode // Imports from QtGui. qpyopengl_value_array = (qpyopengl_value_array_t)sipImportSymbol("qpyopengl_value_array"); Q_ASSERT(qpyopengl_value_array); qpyopengl_value_array_cached = (qpyopengl_value_array_cached_t)sipImportSymbol("qpyopengl_value_array_cached"); Q_ASSERT(qpyopengl_value_array_cached); qpyopengl_get = (qpyopengl_get_t)sipImportSymbol("qpyopengl_get"); Q_ASSERT(qpyopengl_get); qpyopengl_from_GLint = (qpyopengl_from_GLint_t)sipImportSymbol("qpyopengl_from_GLint"); Q_ASSERT(qpyopengl_from_GLint); qpyopengl_from_GLuint = (qpyopengl_from_GLuint_t)sipImportSymbol("qpyopengl_from_GLuint"); Q_ASSERT(qpyopengl_from_GLuint); qpyopengl_from_GLboolean = (qpyopengl_from_GLboolean_t)sipImportSymbol("qpyopengl_from_GLboolean"); Q_ASSERT(qpyopengl_from_GLboolean); qpyopengl_from_GLfloat = (qpyopengl_from_GLfloat_t)sipImportSymbol("qpyopengl_from_GLfloat"); Q_ASSERT(qpyopengl_from_GLfloat); qpyopengl_from_GLdouble = (qpyopengl_from_GLdouble_t)sipImportSymbol("qpyopengl_from_GLdouble"); Q_ASSERT(qpyopengl_from_GLdouble); %End PyQt5_gpl-5.10.1/sip/_QOpenGLFunctions_ES2/0000755000076500000240000000000013245233150020240 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/_QOpenGLFunctions_ES2/_QOpenGLFunctions_ES2mod.sip0000644000076500000240000000363013245233150025425 0ustar philstaff00000000000000// _QOpenGLFunctions_ES2mod.sip generated by MetaSIP // // This file is part of the _QOpenGLFunctions_ES2 Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5._QOpenGLFunctions_ES2, keyword_arguments="Optional", use_limited_api=True) %Import QtGui/QtGuimod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %Include qopenglfunctions_es2.sip PyQt5_gpl-5.10.1/sip/_QOpenGLFunctions_ES2/qopenglfunctions_es2.sip0000644000076500000240000007303613245233150025135 0ustar philstaff00000000000000// qopenglfunctions_es2.sip generated by MetaSIP // // This file is part of the _QOpenGLFunctions_ES2 Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QOpenGLFunctions_ES2 : QAbstractOpenGLFunctions { %TypeHeaderCode #include %End public: QOpenGLFunctions_ES2(); bool initializeOpenGLFunctions(); void glActiveTexture(GLenum texture); void glAttachShader(GLuint program, GLuint shader); void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); void glBindBuffer(GLenum target, GLuint buffer); void glBindFramebuffer(GLenum target, GLuint framebuffer); void glBindRenderbuffer(GLenum target, GLuint renderbuffer); void glBindTexture(GLenum target, GLuint texture); void glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); void glBlendEquation(GLenum mode); void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); void glBlendFunc(GLenum sfactor, GLenum dfactor); void glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); void glBufferData(GLenum target, GLsizeiptr size, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/, GLenum usage); %MethodCode const GLvoid *array; if (a2 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferData(a0, a1, array, a3); %End void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array; if (a3 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a3, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferSubData(a0, a1, a2, array); %End GLenum glCheckFramebufferStatus(GLenum target); void glClear(GLbitfield mask); void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); void glClearDepthf(GLclampf depth); void glClearStencil(GLint s); void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); void glCompileShader(GLuint shader); void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage2D(a0, a1, a2, a3, a4, a5, a6, array); %End void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLuint glCreateProgram(); GLuint glCreateShader(GLenum type); void glCullFace(GLenum mode); void glDeleteBuffers(GLsizei n, SIP_PYOBJECT buffers /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteBuffers(a0, reinterpret_cast(array)); %End void glDeleteFramebuffers(GLsizei n, SIP_PYOBJECT framebuffers); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteFramebuffers(a0, reinterpret_cast(array)); %End void glDeleteProgram(GLuint program); void glDeleteRenderbuffers(GLsizei n, SIP_PYOBJECT renderbuffers); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteRenderbuffers(a0, reinterpret_cast(array)); %End void glDeleteShader(GLuint shader); void glDeleteTextures(GLsizei n, SIP_PYOBJECT textures /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteTextures(a0, reinterpret_cast(array)); %End void glDepthFunc(GLenum func); void glDepthMask(GLboolean flag); void glDepthRangef(GLclampf zNear, GLclampf zFar); void glDetachShader(GLuint program, GLuint shader); void glDisable(GLenum cap); void glDisableVertexAttribArray(GLuint index); void glDrawArrays(GLenum mode, GLint first, GLsizei count); void glDrawElements(GLenum mode, GLsizei count, GLenum type, SIP_PYOBJECT indices /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a2, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawElements(a0, a1, a2, array); %End void glEnable(GLenum cap); void glEnableVertexAttribArray(GLuint index); void glFinish(); void glFlush(); void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); void glFrontFace(GLenum mode); void glGenBuffers(GLsizei n, SIP_PYOBJECT *buffers /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenBuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glGenerateMipmap(GLenum target); void glGenFramebuffers(GLsizei n, SIP_PYOBJECT framebuffers /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenFramebuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glGenRenderbuffers(GLsizei n, SIP_PYOBJECT *renderbuffers /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenRenderbuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glGenTextures(GLsizei n, SIP_PYOBJECT textures /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenTextures(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End SIP_PYOBJECT glGetActiveAttrib(GLuint program, GLuint index) /TypeHint="Tuple[str, int, int]"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveAttrib(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End SIP_PYOBJECT glGetActiveUniform(GLuint program, GLuint index) /TypeHint="Tuple[str, int, int]"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_UNIFORM_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveUniform(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End SIP_PYOBJECT glGetAttachedShaders(GLuint program) /TypeHint="Tuple[int, ...]"/; %MethodCode GLint nr_shaders; sipCpp->glGetProgramiv(a0, GL_ATTACHED_SHADERS, &nr_shaders); if (nr_shaders < 1) { sipRes = PyTuple_New(0); } else { GLuint *shaders = new GLuint[nr_shaders]; sipCpp->glGetAttachedShaders(a0, nr_shaders, 0, shaders); sipRes = PyTuple_New(nr_shaders); if (sipRes) { for (GLint i = 0; i < nr_shaders; ++i) { PyObject *itm = SIPLong_FromLong(shaders[i]); if (!itm) { Py_DECREF(sipRes); sipRes = 0; break; } PyTuple_SetItem(sipRes, i, itm); } } delete[] shaders; } if (!sipRes) sipIsErr = 1; %End int glGetAttribLocation(GLuint program, const GLchar *name); void glGetBooleanv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[bool, Tuple[bool, ...]]"/); %MethodCode GLboolean fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLboolean[nr_params]; } else { params = fixed_params; } sipCpp->glGetBooleanv(a0, params); a1 = qpyopengl_from_GLboolean(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); GLenum glGetError(); void glGetFloatv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, ...]]"/); %MethodCode GLfloat fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLfloat[nr_params]; } else { params = fixed_params; } sipCpp->glGetFloatv(a0, params); a1 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); void glGetIntegerv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLint fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLint[nr_params]; } else { params = fixed_params; } sipCpp->glGetIntegerv(a0, params); a1 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetProgramiv(GLuint program, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int]]"/); %MethodCode GLint params[3]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_COMPUTE_LOCAL_WORK_SIZE) case GL_COMPUTE_LOCAL_WORK_SIZE: nr_params = 3; break; #endif default: nr_params = 1; } sipCpp->glGetProgramiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End SIP_PYOBJECT glGetProgramInfoLog(GLuint program) /TypeHint="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetProgramInfoLog(a0, bufsize, 0, log); sipRes = SIPBytes_FromString(log); delete[] log; } else { sipRes = SIPBytes_FromString(""); } %End void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); SIP_PYOBJECT glGetShaderInfoLog(GLuint shader) /TypeHint="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetShaderInfoLog(a0, bufsize, 0, log); sipRes = SIPBytes_FromString(log); delete[] log; } else { sipRes = SIPBytes_FromString(""); } %End SIP_PYOBJECT glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype) /TypeHint="Tuple[Tuple[int, int], int]"/; %MethodCode GLint range[2], precision; sipCpp->glGetShaderPrecisionFormat(a0, a1, range, &precision); sipRes = Py_BuildValue("(ii)i", (int)range[0], (int)range[1], (int)precision); if (!sipRes) sipIsErr = 1; %End SIP_PYOBJECT glGetShaderSource(GLuint shader) /TypeHint="Py_v3:bytes;str"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_SHADER_SOURCE_LENGTH, &bufsize); if (bufsize > 0) { GLchar *source = new GLchar[bufsize]; sipCpp->glGetShaderSource(a0, bufsize, 0, source); sipRes = SIPBytes_FromString(source); delete[] source; } else { sipRes = SIPBytes_FromString(""); } %End const char *glGetString(GLenum name); %MethodCode sipRes = reinterpret_cast(sipCpp->glGetString(a0)); %End void glGetTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_SWIZZLE_RGBA) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_SWIZZLE_RGBA) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End int glGetUniformLocation(GLuint program, const GLchar *name); void glGetVertexAttribfv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetVertexAttribiv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glHint(GLenum target, GLenum mode); GLboolean glIsBuffer(GLuint buffer); GLboolean glIsEnabled(GLenum cap); GLboolean glIsFramebuffer(GLuint framebuffer); GLboolean glIsProgram(GLuint program); GLboolean glIsRenderbuffer(GLuint renderbuffer); GLboolean glIsShader(GLuint shader); GLboolean glIsTexture(GLuint texture); void glLineWidth(GLfloat width); void glLinkProgram(GLuint program); void glPixelStorei(GLenum pname, GLint param); void glPolygonOffset(GLfloat factor, GLfloat units); void glReleaseShaderCompiler(); void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); void glSampleCoverage(GLclampf value, GLboolean invert); void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); void glStencilFunc(GLenum func, GLint ref, GLuint mask); void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); void glStencilMask(GLuint mask); void glStencilMaskSeparate(GLenum face, GLuint mask); void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); void glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass); void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexParameterf(GLenum target, GLenum pname, GLfloat param); void glTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameterfv(a0, a1, reinterpret_cast(array)); %End void glTexParameteri(GLenum target, GLenum pname, GLint param); void glTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameteriv(a0, a1, reinterpret_cast(array)); %End void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glUniform1f(GLint location, GLfloat x); void glUniform1fv(GLint location, GLsizei count, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1fv(a0, a1, reinterpret_cast(array)); %End void glUniform1i(GLint location, GLint x); void glUniform1iv(GLint location, GLsizei count, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1iv(a0, a1, reinterpret_cast(array)); %End void glUniform2f(GLint location, GLfloat x, GLfloat y); void glUniform2fv(GLint location, GLsizei count, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2fv(a0, a1, reinterpret_cast(array)); %End void glUniform2i(GLint location, GLint x, GLint y); void glUniform2iv(GLint location, GLsizei count, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2iv(a0, a1, reinterpret_cast(array)); %End void glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z); void glUniform3fv(GLint location, GLsizei count, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3fv(a0, a1, reinterpret_cast(array)); %End void glUniform3i(GLint location, GLint x, GLint y, GLint z); void glUniform3iv(GLint location, GLsizei count, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3iv(a0, a1, reinterpret_cast(array)); %End void glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glUniform4fv(GLint location, GLsizei count, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4fv(a0, a1, reinterpret_cast(array)); %End void glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w); void glUniform4iv(GLint location, GLsizei count, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4iv(a0, a1, reinterpret_cast(array)); %End void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix2fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix3fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix4fv(a0, a1, a2, reinterpret_cast(array)); %End void glUseProgram(GLuint program); void glValidateProgram(GLuint program); void glVertexAttrib1f(GLuint indx, GLfloat x); void glVertexAttrib1fv(GLuint indx, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1fv(a0, reinterpret_cast(array)); %End void glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); void glVertexAttrib2fv(GLuint indx, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2fv(a0, reinterpret_cast(array)); %End void glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); void glVertexAttrib3fv(GLuint indx, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3fv(a0, reinterpret_cast(array)); %End void glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertexAttrib4fv(GLuint indx, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4fv(a0, reinterpret_cast(array)); %End void glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, SIP_PYOBJECT ptr /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a5, a2, sipSelf, "VertexAttribPointer", a0); if (sipError == sipErrorNone) sipCpp->glVertexAttribPointer(a0, a1, a2, a3, a4, array); %End void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); }; %End %ModuleHeaderCode #include // Imports from QtGui. typedef const GLvoid *(*qpyopengl_value_array_t)(sipErrorState *, PyObject *, GLenum, PyObject *); extern qpyopengl_value_array_t qpyopengl_value_array; typedef const GLvoid *(*qpyopengl_value_array_cached_t)(sipErrorState *, PyObject *, GLenum, PyObject *, const char *, GLuint); extern qpyopengl_value_array_cached_t qpyopengl_value_array_cached; typedef GLint (*qpyopengl_get_t)(GLenum, GLenum *); extern qpyopengl_get_t qpyopengl_get; typedef PyObject *(*qpyopengl_from_GLint_t)(int *, const GLint *, Py_ssize_t); extern qpyopengl_from_GLint_t qpyopengl_from_GLint; typedef PyObject *(*qpyopengl_from_GLuint_t)(int *, const GLuint *, Py_ssize_t); extern qpyopengl_from_GLuint_t qpyopengl_from_GLuint; typedef PyObject *(*qpyopengl_from_GLboolean_t)(int *, const GLboolean *, Py_ssize_t); extern qpyopengl_from_GLboolean_t qpyopengl_from_GLboolean; typedef PyObject *(*qpyopengl_from_GLfloat_t)(int *, const GLfloat *, Py_ssize_t); extern qpyopengl_from_GLfloat_t qpyopengl_from_GLfloat; %End %ModuleCode // Imports from QtGui. qpyopengl_value_array_t qpyopengl_value_array; qpyopengl_value_array_cached_t qpyopengl_value_array_cached; qpyopengl_get_t qpyopengl_get; qpyopengl_from_GLint_t qpyopengl_from_GLint; qpyopengl_from_GLuint_t qpyopengl_from_GLuint; qpyopengl_from_GLboolean_t qpyopengl_from_GLboolean; qpyopengl_from_GLfloat_t qpyopengl_from_GLfloat; %End %PostInitialisationCode // Imports from QtGui. qpyopengl_value_array = (qpyopengl_value_array_t)sipImportSymbol("qpyopengl_value_array"); Q_ASSERT(qpyopengl_value_array); qpyopengl_value_array_cached = (qpyopengl_value_array_cached_t)sipImportSymbol("qpyopengl_value_array_cached"); Q_ASSERT(qpyopengl_value_array_cached); qpyopengl_get = (qpyopengl_get_t)sipImportSymbol("qpyopengl_get"); Q_ASSERT(qpyopengl_get); qpyopengl_from_GLint = (qpyopengl_from_GLint_t)sipImportSymbol("qpyopengl_from_GLint"); Q_ASSERT(qpyopengl_from_GLint); qpyopengl_from_GLuint = (qpyopengl_from_GLuint_t)sipImportSymbol("qpyopengl_from_GLuint"); Q_ASSERT(qpyopengl_from_GLuint); qpyopengl_from_GLboolean = (qpyopengl_from_GLboolean_t)sipImportSymbol("qpyopengl_from_GLboolean"); Q_ASSERT(qpyopengl_from_GLboolean); qpyopengl_from_GLfloat = (qpyopengl_from_GLfloat_t)sipImportSymbol("qpyopengl_from_GLfloat"); Q_ASSERT(qpyopengl_from_GLfloat); %End PyQt5_gpl-5.10.1/sip/Enginio/0000755000076500000240000000000013245233150015662 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/Enginio/enginio.sip0000644000076500000240000000325113245233150020030 0ustar philstaff00000000000000// enginio.sip generated by MetaSIP // // This file is part of the Enginio Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class Enginio /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum AuthenticationState { NotAuthenticated, Authenticating, Authenticated, AuthenticationFailure, }; enum Operation { ObjectOperation, AccessControlOperation, UserOperation, UsergroupOperation, UsergroupMembersOperation, FileOperation, }; enum Role { SyncedRole, CreatedAtRole, UpdatedAtRole, IdRole, ObjectTypeRole, CustomPropertyRole, %If (Qt_5_4_0 -) JsonObjectRole, %End }; enum ErrorType { NoError, NetworkError, BackendError, }; }; %End PyQt5_gpl-5.10.1/sip/Enginio/enginioclient.sip0000644000076500000240000000566313245233150021240 0ustar philstaff00000000000000// enginioclient.sip generated by MetaSIP // // This file is part of the Enginio Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class EnginioClient : EnginioClientConnection { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_EnginioReply, &sipType_EnginioReply, -1, 1}, {sipName_EnginioModel, &sipType_EnginioModel, -1, 2}, {sipName_EnginioClientConnection, &sipType_EnginioClientConnection, 4, 3}, {sipName_EnginioIdentity, &sipType_EnginioIdentity, 5, -1}, {sipName_EnginioClient, &sipType_EnginioClient, -1, -1}, {sipName_EnginioOAuth2Authentication, &sipType_EnginioOAuth2Authentication, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: explicit EnginioClient(QObject *parent /TransferThis/ = 0); virtual ~EnginioClient(); EnginioReply *fullTextSearch(const QJsonObject &query); EnginioReply *query(const QJsonObject &query, const Enginio::Operation operation = Enginio::ObjectOperation); EnginioReply *create(const QJsonObject &object, const Enginio::Operation operation = Enginio::ObjectOperation); EnginioReply *update(const QJsonObject &object, const Enginio::Operation operation = Enginio::ObjectOperation); EnginioReply *remove(const QJsonObject &object, const Enginio::Operation operation = Enginio::ObjectOperation); EnginioReply *uploadFile(const QJsonObject &associatedObject, const QUrl &file); EnginioReply *downloadUrl(const QJsonObject &object); signals: void sessionAuthenticated(EnginioReply *reply) const; void sessionAuthenticationError(EnginioReply *reply) const; void sessionTerminated() const; void finished(EnginioReply *reply); void error(EnginioReply *reply); }; %End PyQt5_gpl-5.10.1/sip/Enginio/enginioclientconnection.sip0000644000076500000240000000344513245233150023314 0ustar philstaff00000000000000// enginioclientconnection.sip generated by MetaSIP // // This file is part of the Enginio Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class EnginioClientConnection : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~EnginioClientConnection(); QByteArray backendId() const; void setBackendId(const QByteArray &backendId); EnginioIdentity *identity() const; void setIdentity(EnginioIdentity *identity); Enginio::AuthenticationState authenticationState() const; QUrl serviceUrl() const; void setServiceUrl(const QUrl &serviceUrl); QNetworkAccessManager *networkManager() const; signals: void backendIdChanged(const QByteArray &backendId); void serviceUrlChanged(const QUrl &url); void authenticationStateChanged(Enginio::AuthenticationState state); void identityChanged(EnginioIdentity *identity); private: EnginioClientConnection(const EnginioClientConnection &); }; %End PyQt5_gpl-5.10.1/sip/Enginio/enginioidentity.sip0000644000076500000240000000207313245233150021603 0ustar philstaff00000000000000// enginioidentity.sip generated by MetaSIP // // This file is part of the Enginio Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class EnginioIdentity : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End }; %End PyQt5_gpl-5.10.1/sip/Enginio/Enginiomod.sip0000644000076500000240000000414513245233150020473 0ustar philstaff00000000000000// Enginiomod.sip generated by MetaSIP // // This file is part of the Enginio Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.Enginio, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include enginio.sip %Include enginioclient.sip %Include enginioclientconnection.sip %Include enginioidentity.sip %Include enginiomodel.sip %Include enginiooauth2authentication.sip %Include enginioreply.sip PyQt5_gpl-5.10.1/sip/Enginio/enginiomodel.sip0000644000076500000240000000361413245233150021054 0ustar philstaff00000000000000// enginiomodel.sip generated by MetaSIP // // This file is part of the Enginio Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class EnginioModel : QAbstractListModel { %TypeHeaderCode #include %End public: explicit EnginioModel(QObject *parent /TransferThis/ = 0); virtual ~EnginioModel(); EnginioClient *client() const; void setClient(const EnginioClient *client); QJsonObject query(); void setQuery(const QJsonObject &query); Enginio::Operation operation() const; void setOperation(Enginio::Operation operation); EnginioReply *append(const QJsonObject &value); EnginioReply *remove(int row); EnginioReply *setData(int row, const QVariant &value, const QString &role); %If (Qt_5_4_0 -) EnginioReply *setData(int row, const QJsonObject &value); %End %If (Qt_5_4_0 -) EnginioReply *reload(); %End signals: void queryChanged(const QJsonObject &query); void clientChanged(EnginioClient *client); void operationChanged(Enginio::Operation operation); private: EnginioModel(const EnginioModel &); }; %End PyQt5_gpl-5.10.1/sip/Enginio/enginiooauth2authentication.sip0000644000076500000240000000271713245233150024121 0ustar philstaff00000000000000// enginiooauth2authentication.sip generated by MetaSIP // // This file is part of the Enginio Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class EnginioOAuth2Authentication : EnginioIdentity { %TypeHeaderCode #include %End public: explicit EnginioOAuth2Authentication(QObject *parent /TransferThis/ = 0); virtual ~EnginioOAuth2Authentication(); QString user() const; QString password() const; void setUser(const QString &user); void setPassword(const QString &password); signals: void userChanged(const QString &user); void passwordChanged(const QString &password); }; %End PyQt5_gpl-5.10.1/sip/Enginio/enginioreply.sip0000644000076500000240000000311413245233150021102 0ustar philstaff00000000000000// enginioreply.sip generated by MetaSIP // // This file is part of the Enginio Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class EnginioReply : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~EnginioReply(); QJsonObject data() const; // Methods from the hidden EnginioReplyState class. signals: void progress(qint64 bytesSent, qint64 bytesTotal); public: Enginio::ErrorType errorType() const; QNetworkReply::NetworkError networkError() const; QString errorString() const; int backendStatus() const; bool isError() const; bool isFinished() const; signals: void finished(EnginioReply *reply); void dataChanged(); private: EnginioReply(const EnginioReply &); }; %End PyQt5_gpl-5.10.1/sip/pylupdate/0000755000076500000240000000000013245233150016301 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/pylupdate/pylupdate_main.py0000644000076500000240000001573313245233150021677 0ustar philstaff00000000000000# Copyright (c) 2018 Riverbank Computing Limited # # This file is part of PyQt5. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. import sys from PyQt5.QtCore import (PYQT_VERSION_STR, QDir, QFile, QFileInfo, QIODevice, QTextStream) from .pylupdate import * def printUsage(): sys.stderr.write( "Usage:\n" " pylupdate5 [options] project-file\n" " pylupdate5 [options] source-files -ts ts-files\n" "\n" "Options:\n" " -help Display this information and exit\n" " -version\n" " Display the version of pylupdate5 and exit\n" " -verbose\n" " Explain what is being done\n" " -noobsolete\n" " Drop all obsolete strings\n" " -tr-function name\n" " name() may be used instead of tr()\n" " -translate-function name\n" " name() may be used instead of translate()\n"); def updateTsFiles(fetchedTor, tsFileNames, codecForTr, noObsolete, verbose): dir = QDir() for t in tsFileNames: fn = dir.relativeFilePath(t) tor = MetaTranslator() out = MetaTranslator() tor.load(t) if codecForTr: tor.setCodec(codecForTr) merge(tor, fetchedTor, out, noObsolete, verbose, fn) if noObsolete: out.stripObsoleteMessages() out.stripEmptyContexts() if not out.save(t): sys.stderr.write("pylupdate5 error: Cannot save '%s'\n" % fn) def main(): # Initialise. defaultContext = "@default" fetchedTor = MetaTranslator() codecForTr = '' codecForSource = '' tsFileNames = [] uiFileNames = [] verbose = False noObsolete = False metSomething = False numFiles = 0 standardSyntax = True metTsFlag = False tr_func = None translate_func = None # Parse the command line. for arg in sys.argv[1:]: if arg == "-ts": standardSyntax = False argc = len(sys.argv) i = 1 while i < argc: arg = sys.argv[i] i += 1 if arg == "-help": printUsage() sys.exit(0) if arg == "-version": sys.stderr.write("pylupdate5 v%s\n" % PYQT_VERSION_STR) sys.exit(0) if arg == "-noobsolete": noObsolete = True continue if arg == "-verbose": verbose = True continue if arg == "-ts": metTsFlag = True continue if arg == "-tr-function": if i >= argc: sys.stderr.write( "pylupdate5 error: missing -tr-function name\n") sys.exit(2) tr_func = sys.argv[i] i += 1 continue if arg == "-translate-function": if i >= argc: sys.stderr.write( "pylupdate5 error: missing -translate-function name\n") sys.exit(2) translate_func = sys.argv[i] i += 1 continue numFiles += 1 fullText = "" if not metTsFlag: f = QFile(arg) if not f.open(QIODevice.ReadOnly): sys.stderr.write( "pylupdate5 error: Cannot open file '%s'\n" % arg) sys.exit(1) t = QTextStream(f) fullText = t.readAll() f.close() if standardSyntax: oldDir = QDir.currentPath() QDir.setCurrent(QFileInfo(arg).path()) fetchedTor = MetaTranslator() codecForTr = '' codecForSource = '' tsFileNames = [] uiFileNames = [] for key, value in proFileTagMap(fullText).items(): for t in value.split(' '): if key == "SOURCES": fetchtr_py(QDir.current().absoluteFilePath(t), fetchedTor, defaultContext, True, codecForSource, tr_func, translate_func) metSomething = True elif key == "TRANSLATIONS": tsFileNames.append(QDir.current().absoluteFilePath(t)) metSomething = True elif key in ("CODEC", "DEFAULTCODEC", "CODECFORTR"): codecForTr = t fetchedTor.setCodec(codecForTr) elif key == "CODECFORSRC": codecForSource = t elif key == "FORMS": fetchtr_ui(QDir.current().absoluteFilePath(t), fetchedTor, defaultContext, True) updateTsFiles(fetchedTor, tsFileNames, codecForTr, noObsolete, verbose) if not metSomething: sys.stderr.write( "pylupdate5 warning: File '%s' does not look like a " "project file\n" % arg) elif len(tsFileNames) == 0: sys.stderr.write( "pylupdate5 warning: Met no 'TRANSLATIONS' entry in " "project file '%s'\n" % arg) QDir.setCurrent(oldDir) else: if metTsFlag: if arg.lower().endswith(".ts"): fi = QFileInfo(arg) if not fi.exists() or fi.isWritable(): tsFileNames.append(arg) else: sys.stderr.write( "pylupdate5 warning: For some reason, I " "cannot save '%s'\n" % arg) else: sys.stderr.write( "pylupdate5 error: File '%s' lacks .ts extension\n" % arg) else: fi = QFileInfo(arg) if fi.suffix() in ("py", "pyw"): fetchtr_py(fi.absoluteFilePath(), fetchedTor, defaultContext, True, codecForSource, tr_func, translate_func) else: fetchtr_ui(fi.absoluteFilePath(), fetchedTor, defaultContext, True) if not standardSyntax: updateTsFiles(fetchedTor, tsFileNames, codecForTr, noObsolete, verbose) if numFiles == 0: printUsage() sys.exit(1) if __name__ == '__main__': main() PyQt5_gpl-5.10.1/sip/pylupdate/pylupdatemod.sip0000644000076500000240000000540113245233150021525 0ustar philstaff00000000000000// This defines the API exposed by the Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.pylupdate, keyword_arguments="None", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %DefaultEncoding "Latin-1" %ModuleHeaderCode #include "pylupdate.h" %End void fetchtr_py(const char *fileName, MetaTranslator *tor, const char *defaultContext, bool mustExist, const char *codecForSource, const char *tr_func, const char *translate_func); void fetchtr_ui(const char *fileName, MetaTranslator *tor, const char *defaultContext, bool mustExist); void merge(const MetaTranslator *tor, const MetaTranslator *virginTor, MetaTranslator *out, bool noObsolete, bool verbose, const QString &filename); QMap proFileTagMap(const QString &text); class MetaTranslator { %TypeHeaderCode #include "pylupdate.h" %End public: MetaTranslator(); MetaTranslator(const MetaTranslator &tor); bool load(const QString &filename); bool save(const QString &filename) const; void stripObsoleteMessages(); void stripEmptyContexts(); void setCodec(const char *name); }; PyQt5_gpl-5.10.1/sip/pyqt-gpl.sip0000644000076500000240000000002613245233150016562 0ustar philstaff00000000000000%License /Type="gpl"/ PyQt5_gpl-5.10.1/sip/pyrcc/0000755000076500000240000000000013245233150015412 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/pyrcc/pyrcc_main.py0000644000076500000240000001237013245233150020113 0ustar philstaff00000000000000# Copyright (c) 2018 Riverbank Computing Limited # # This file is part of PyQt5. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. import sys from PyQt5.QtCore import PYQT_VERSION_STR, QDir, QFile from .pyrcc import * # Initialise the globals. verbose = False compressLevel = CONSTANT_COMPRESSLEVEL_DEFAULT compressThreshold = CONSTANT_COMPRESSTHRESHOLD_DEFAULT resourceRoot = '' def processResourceFile(filenamesIn, filenameOut, listFiles): if verbose: sys.stderr.write("PyQt5 resource compiler\n") # Setup. library = RCCResourceLibrary() library.setInputFiles(filenamesIn) library.setVerbose(verbose) library.setCompressLevel(compressLevel) library.setCompressThreshold(compressThreshold) library.setResourceRoot(resourceRoot) if not library.readFiles(): return False if filenameOut == '-': filenameOut = '' if listFiles: # Open the output file or use stdout if not specified. if filenameOut: try: out_fd = open(filenameOut, 'w') except Exception: sys.stderr.write( "Unable to open %s for writing\n" % filenameOut) return False else: out_fd = sys.stdout for df in library.dataFiles(): out_fd.write("%s\n" % QDir.cleanPath(df)) if out_fd is not sys.stdout: out_fd.close() return True return library.output(filenameOut) def showHelp(error): sys.stderr.write("PyQt5 resource compiler\n") if error: sys.stderr.write("pyrcc5: %s\n" % error) sys.stderr.write( "Usage: pyrcc5 [options] \n" "\n" "Options:\n" " -o file Write output to file rather than stdout\n" " -threshold level Threshold to consider compressing files\n" " -compress level Compress input files by level\n" " -root path Prefix resource access path with root path\n" " -no-compress Disable all compression\n" " -version Display version\n" " -help Display this information\n") def main(): # Parse the command line. Note that this mimics the original C++ (warts # and all) in order to preserve backwards compatibility. global verbose global compressLevel global compressThreshold global resourceRoot outFilename = '' helpRequested = False listFiles = False files = [] errorMsg = None argc = len(sys.argv) i = 1 while i < argc: arg = sys.argv[i] i += 1 if arg[0] == '-': opt = arg[1:] if opt == "o": if i >= argc: errorMsg = "Missing output name" break outFilename = sys.argv[i] i += 1 elif opt == "root": if i >= argc: errorMsg = "Missing root path" break resourceRoot = QDir.cleanPath(sys.argv[i]) i += 1 if resourceRoot == '' or resourceRoot[0] != '/': errorMsg = "Root must start with a /" break elif opt == "compress": if i >= argc: errorMsg = "Missing compression level" break compressLevel = int(sys.argv[i]) i += 1 elif opt == "threshold": if i >= argc: errorMsg = "Missing compression threshold" break compressThreshold = int(sys.argv[i]) i += 1 elif opt == "verbose": verbose = True elif opt == "list": listFiles = True elif opt == "version": sys.stderr.write("pyrcc5 v%s\n" % PYQT_VERSION_STR) sys.exit(1) elif opt == "help" or opt == "h": helpRequested = True elif opt == "no-compress": compressLevel = -2 else: errorMsg = "Unknown option: '%s'" % arg break else: if not QFile.exists(arg): sys.stderr.write( "%s: File does not exist '%s'\n" % (sys.argv[0], arg)) sys.exit(1) files.append(arg) # Handle any errors or a request for help. if len(files) == 0 or errorMsg is not None or helpRequested: showHelp(errorMsg) sys.exit(1) if not processResourceFile(files, outFilename, listFiles): sys.exit(1) if __name__ == '__main__': main() PyQt5_gpl-5.10.1/sip/pyrcc/pyrccmod.sip0000644000076500000240000000437713245233150017762 0ustar philstaff00000000000000// Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.pyrcc, keyword_arguments="None", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper const int CONSTANT_COMPRESSLEVEL_DEFAULT; const int CONSTANT_COMPRESSTHRESHOLD_DEFAULT; class RCCResourceLibrary { %TypeHeaderCode #include "rcc.h" %End public: RCCResourceLibrary(); ~RCCResourceLibrary(); bool output(const QString &out_name); bool readFiles(); void setInputFiles(QStringList files); QStringList dataFiles() const; void setVerbose(bool b); void setCompressLevel(int c); void setCompressThreshold(int t); void setResourceRoot(QString str); }; PyQt5_gpl-5.10.1/sip/QAxContainer/0000755000076500000240000000000013245233150016626 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QAxContainer/qaxbase.sip0000644000076500000240000001173713245233150021000 0ustar philstaff00000000000000// This is the SIP interface definition for QAxBase. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAxBase /Abstract, PyQtNoQMetaObject/ { %TypeHeaderCode #include %End public: //QAxBase(IUnknown *iface = 0); virtual ~QAxBase(); QString control() const; //long queryInterface(const QUuid &, void **) const; // Note that the order of these overloads is significant. QVariant dynamicCall(const char *, QList & /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipRes = new QVariant(sipCpp->dynamicCall(a0, *a1)); Py_END_ALLOW_THREADS // Update the input list with the (possibly) new values. for (SIP_SSIZE_T i = 0; i < PyList_Size(a1Wrapper); ++i) { QVariant *v = new QVariant(a1->at(i)); PyObject *v_obj = sipConvertFromNewType(v, sipType_QVariant, NULL); if (!v_obj) { delete v; sipIsErr = 1; break; } if (PyList_SetItem(a1Wrapper, i, v_obj) < 0) { Py_DECREF(v_obj); sipIsErr = 1; break; } } %End QVariant dynamicCall(const char *, const QVariant &value1 = QVariant(), const QVariant &value2 = QVariant(), const QVariant &value3 = QVariant(), const QVariant &value4 = QVariant(), const QVariant &value5 = QVariant(), const QVariant &value6 = QVariant(), const QVariant &value7 = QVariant(), const QVariant &value8 = QVariant()); // Note that the order of these overloads is significant. QAxObject *querySubObject(const char *, QList & /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->querySubObject(a0, *a1); Py_END_ALLOW_THREADS // Update the input list with the (possibly) new values. for (SIP_SSIZE_T i = 0; i < PyList_Size(a1Wrapper); ++i) { QVariant *v = new QVariant(a1->at(i)); PyObject *v_obj = sipConvertFromNewType(v, sipType_QVariant, NULL); if (!v_obj) { delete v; sipIsErr = 1; break; } if (PyList_SetItem(a1Wrapper, i, v_obj) < 0) { Py_DECREF(v_obj); sipIsErr = 1; break; } } %End QAxObject *querySubObject(const char *, const QVariant &value1 = QVariant(), const QVariant &value2 = QVariant(), const QVariant &value3 = QVariant(), const QVariant &value4 = QVariant(), const QVariant &value5 = QVariant(), const QVariant &value6 = QVariant(), const QVariant &value7 = QVariant(), const QVariant &value8 = QVariant()); // SIP has a bug triggered by a template definition being the subject of // multiple typedefs. It only really matters when building everything as // one big module (the code that implements the type is duplicated in // other cases). Until it is fixed we just avoid the problematic typedef. //typedef QMap PropertyBag; //PropertyBag propertyBag() const; //void setPropertyBag(const PropertyBag &); QVariantMap propertyBag() const; void setPropertyBag(const QVariantMap &); QString generateDocumentation(); virtual bool propertyWritable(const char *) const; virtual void setPropertyWritable(const char *, bool); bool isNull() const; QStringList verbs() const; QVariant asVariant() const; signals: void signal(const QString &, int, void *); void propertyChanged(const QString &); void exception(int, const QString &, const QString &, const QString &); public: virtual void clear(); bool setControl(const QString &); void disableMetaObject(); void disableClassInfo(); void disableEventSink(); protected: //virtual bool initialize(IUnknown** ptr); //bool initializeRemote(IUnknown** ptr); //bool initializeLicensed(IUnknown** ptr); //bool initializeActive(IUnknown** ptr); //bool initializeFromFile(IUnknown** ptr); }; PyQt5_gpl-5.10.1/sip/QAxContainer/QAxContainermod.sip0000644000076500000240000000365213245233150022405 0ustar philstaff00000000000000// This is the SIP interface definition for the QAxContainer module of PyQt v5. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QAxContainer, keyword_arguments="Optional", use_limited_api=True) %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qaxbase.sip %Include qaxobject.sip %Include qaxwidget.sip PyQt5_gpl-5.10.1/sip/QAxContainer/qaxobject.sip0000644000076500000240000000353513245233150021331 0ustar philstaff00000000000000// This is the SIP interface definition for QAxObject. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAxObject : QObject, QAxBase /PyQtNoQMetaObject/ { %TypeHeaderCode #include %End public: QAxObject(QObject *parent /TransferThis/ = 0); QAxObject(const QString &, QObject *parent /TransferThis/ = 0); //QAxObject(IUnknown *, QObject *parent /TransferThis/ = 0); ~QAxObject(); %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QAxObject, &sipType_QAxObject, 1, -1}, {sipName_QAxWidget, &sipType_QAxWidget, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End bool doVerb(const QString &); protected: void connectNotify(const QMetaMethod &); }; PyQt5_gpl-5.10.1/sip/QAxContainer/qaxwidget.sip0000644000076500000240000000330613245233150021342 0ustar philstaff00000000000000// This is the SIP interface definition for QAxWidget. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAxWidget : QWidget, QAxBase /PyQtNoQMetaObject/ { %TypeHeaderCode #include %End public: QAxWidget(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); QAxWidget(const QString &, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); //QAxWidget(IUnknown *, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); ~QAxWidget(); void clear(); bool doVerb(const QString &); QSize sizeHint() const; QSize minimumSizeHint() const; //virtual QaxAggregated *createAggregate(); protected: //bool initialize(IUnknown **); virtual bool createHostWindow(bool); void changeEvent(QEvent *); void resizeEvent(QResizeEvent *); virtual bool translateKeyEvent(int,int) const; void connectNotify(const QMetaMethod &); }; PyQt5_gpl-5.10.1/sip/QtAndroidExtras/0000755000076500000240000000000013245233150017346 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtAndroidExtras/qandroidjniobject.sip0000644000076500000240000000317213245233150023557 0ustar philstaff00000000000000// This is the SIP interface definition for QAndroidJniObject. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QAndroidJniObject { %TypeHeaderCode #include %End public: QAndroidJniObject(); QAndroidJniObject(const char *className); ~QAndroidJniObject(); int callMethod(const char *methodName) const; %MethodCode sipRes = sipCpp->callMethod(a0); %End static int callStaticMethod(const char *className, const char *methodName); %MethodCode sipRes = QAndroidJniObject::callStaticMethod(a0, a1); %End bool isValid() const; QString toString() const; static bool isClassAvailable(const char *className); }; bool operator!=(const QAndroidJniObject &, const QAndroidJniObject &); bool operator==(const QAndroidJniObject &, const QAndroidJniObject &); %End PyQt5_gpl-5.10.1/sip/QtAndroidExtras/qtandroid.sip0000644000076500000240000000230313245233150022046 0ustar philstaff00000000000000// This is the SIP interface definition for QtAndroid. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) namespace QtAndroid { %TypeHeaderCode #include %End int androidSdkVersion(); QAndroidJniObject androidActivity(); %If (Qt_5_7_0 -) QAndroidJniObject androidService(); void hideSplashScreen(); %End %If (Qt_5_8_0 -) QAndroidJniObject androidContext(); %End }; %End PyQt5_gpl-5.10.1/sip/QtAndroidExtras/QtAndroidExtrasmod.sip0000644000076500000240000000364013245233150023642 0ustar philstaff00000000000000// This is the SIP interface definition for the QtAndroidExtras module of // PyQt v5. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtAndroidExtras, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qtandroid.sip %Include qandroidjniobject.sip PyQt5_gpl-5.10.1/sip/QtBluetooth/0000755000076500000240000000000013245233150016544 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtBluetooth/qbluetooth.sip0000644000076500000240000000343213245233150021451 0ustar philstaff00000000000000// qbluetooth.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) namespace QBluetooth { %TypeHeaderCode #include %End enum Security { NoSecurity, Authorization, Authentication, Encryption, Secure, }; typedef QFlags SecurityFlags; QFlags operator|(QBluetooth::Security f1, QFlags f2); %If (Qt_5_7_0 -) enum AttAccessConstraint { AttAuthorizationRequired, AttAuthenticationRequired, AttEncryptionRequired, }; %End %If (Qt_5_7_0 -) typedef QFlags AttAccessConstraints; %End %If (Qt_5_7_0 -) QFlags operator|(QBluetooth::AttAccessConstraint f1, QFlags f2); %End }; %End %If (Qt_5_4_0 -) typedef quint16 QLowEnergyHandle; %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qbluetoothaddress.sip0000644000076500000240000000303513245233150023016 0ustar philstaff00000000000000// qbluetoothaddress.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothAddress { %TypeHeaderCode #include %End public: QBluetoothAddress(); explicit QBluetoothAddress(quint64 address); explicit QBluetoothAddress(const QString &address); QBluetoothAddress(const QBluetoothAddress &other); ~QBluetoothAddress(); bool isNull() const; void clear(); bool operator<(const QBluetoothAddress &other) const; bool operator==(const QBluetoothAddress &other) const; bool operator!=(const QBluetoothAddress &other) const; quint64 toUInt64() const; QString toString() const; }; %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qbluetoothdevicediscoveryagent.sip0000644000076500000240000000610013245233150025573 0ustar philstaff00000000000000// qbluetoothdevicediscoveryagent.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothDeviceDiscoveryAgent : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, InputOutputError, PoweredOffError, %If (Qt_5_3_0 -) InvalidBluetoothAdapterError, %End %If (Qt_5_5_0 -) UnsupportedPlatformError, %End %If (Qt_5_8_0 -) UnsupportedDiscoveryMethod, %End UnknownError, }; enum InquiryType { GeneralUnlimitedInquiry, LimitedInquiry, }; %If (Qt_5_6_1 -) explicit QBluetoothDeviceDiscoveryAgent(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QBluetoothDeviceDiscoveryAgent(QObject *parent /TransferThis/ = 0); %End QBluetoothDeviceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent /TransferThis/ = 0); virtual ~QBluetoothDeviceDiscoveryAgent(); QBluetoothDeviceDiscoveryAgent::InquiryType inquiryType() const; void setInquiryType(QBluetoothDeviceDiscoveryAgent::InquiryType type); bool isActive() const; QBluetoothDeviceDiscoveryAgent::Error error() const; QString errorString() const; QList discoveredDevices() const; public slots: void start(); %If (Qt_5_8_0 -) void start(QBluetoothDeviceDiscoveryAgent::DiscoveryMethods method); %End void stop(); signals: void deviceDiscovered(const QBluetoothDeviceInfo &info); void finished(); void error(QBluetoothDeviceDiscoveryAgent::Error error); void canceled(); public: %If (Qt_5_8_0 -) enum DiscoveryMethod { }; %End %If (Qt_5_8_0 -) typedef QFlags DiscoveryMethods; %End %If (Qt_5_8_0 -) void setLowEnergyDiscoveryTimeout(int msTimeout); %End %If (Qt_5_8_0 -) int lowEnergyDiscoveryTimeout() const; %End %If (Qt_5_8_0 -) static QBluetoothDeviceDiscoveryAgent::DiscoveryMethods supportedDiscoveryMethods(); %End }; %End %If (Qt_5_8_0 -) QFlags operator|(QBluetoothDeviceDiscoveryAgent::DiscoveryMethod f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qbluetoothdeviceinfo.sip0000644000076500000240000001443513245233150023512 0ustar philstaff00000000000000// qbluetoothdeviceinfo.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothDeviceInfo { %TypeHeaderCode #include %End public: enum MajorDeviceClass { MiscellaneousDevice, ComputerDevice, PhoneDevice, LANAccessDevice, AudioVideoDevice, PeripheralDevice, ImagingDevice, WearableDevice, ToyDevice, HealthDevice, UncategorizedDevice, }; enum MinorMiscellaneousClass { UncategorizedMiscellaneous, }; enum MinorComputerClass { UncategorizedComputer, DesktopComputer, ServerComputer, LaptopComputer, HandheldClamShellComputer, HandheldComputer, WearableComputer, }; enum MinorPhoneClass { UncategorizedPhone, CellularPhone, CordlessPhone, SmartPhone, WiredModemOrVoiceGatewayPhone, CommonIsdnAccessPhone, }; enum MinorNetworkClass { NetworkFullService, NetworkLoadFactorOne, NetworkLoadFactorTwo, NetworkLoadFactorThree, NetworkLoadFactorFour, NetworkLoadFactorFive, NetworkLoadFactorSix, NetworkNoService, }; enum MinorAudioVideoClass { UncategorizedAudioVideoDevice, WearableHeadsetDevice, HandsFreeDevice, Microphone, Loudspeaker, Headphones, PortableAudioDevice, CarAudio, SetTopBox, HiFiAudioDevice, Vcr, VideoCamera, Camcorder, VideoMonitor, VideoDisplayAndLoudspeaker, VideoConferencing, GamingDevice, }; enum MinorPeripheralClass { UncategorizedPeripheral, KeyboardPeripheral, PointingDevicePeripheral, KeyboardWithPointingDevicePeripheral, JoystickPeripheral, GamepadPeripheral, RemoteControlPeripheral, SensingDevicePeripheral, DigitizerTabletPeripheral, CardReaderPeripheral, }; enum MinorImagingClass { UncategorizedImagingDevice, ImageDisplay, ImageCamera, ImageScanner, ImagePrinter, }; enum MinorWearableClass { UncategorizedWearableDevice, WearableWristWatch, WearablePager, WearableJacket, WearableHelmet, WearableGlasses, }; enum MinorToyClass { UncategorizedToy, ToyRobot, ToyVehicle, ToyDoll, ToyController, ToyGame, }; enum MinorHealthClass { UncategorizedHealthDevice, HealthBloodPressureMonitor, HealthThermometer, HealthWeightScale, HealthGlucoseMeter, HealthPulseOximeter, HealthDataDisplay, HealthStepCounter, }; enum ServiceClass { NoService, PositioningService, NetworkingService, RenderingService, CapturingService, ObjectTransferService, AudioService, TelephonyService, InformationService, AllServices, }; typedef QFlags ServiceClasses; enum DataCompleteness { DataComplete, DataIncomplete, DataUnavailable, }; QBluetoothDeviceInfo(); QBluetoothDeviceInfo(const QBluetoothAddress &address, const QString &name, quint32 classOfDevice); %If (Qt_5_5_0 -) QBluetoothDeviceInfo(const QBluetoothUuid &uuid, const QString &name, quint32 classOfDevice); %End QBluetoothDeviceInfo(const QBluetoothDeviceInfo &other); ~QBluetoothDeviceInfo(); bool isValid() const; bool isCached() const; void setCached(bool cached); bool operator==(const QBluetoothDeviceInfo &other) const; bool operator!=(const QBluetoothDeviceInfo &other) const; QBluetoothAddress address() const; QString name() const; QBluetoothDeviceInfo::ServiceClasses serviceClasses() const; QBluetoothDeviceInfo::MajorDeviceClass majorDeviceClass() const; quint8 minorDeviceClass() const; qint16 rssi() const; void setRssi(qint16 signal); void setServiceUuids(const QList &uuids, QBluetoothDeviceInfo::DataCompleteness completeness); QList serviceUuids(QBluetoothDeviceInfo::DataCompleteness *completeness /Out/ = 0) const; QBluetoothDeviceInfo::DataCompleteness serviceUuidsCompleteness() const; %If (Qt_5_4_0 -) enum CoreConfiguration { UnknownCoreConfiguration, LowEnergyCoreConfiguration, BaseRateCoreConfiguration, BaseRateAndLowEnergyCoreConfiguration, }; %End %If (Qt_5_4_0 -) typedef QFlags CoreConfigurations; %End %If (Qt_5_4_0 -) void setCoreConfigurations(QBluetoothDeviceInfo::CoreConfigurations coreConfigs); %End %If (Qt_5_4_0 -) QBluetoothDeviceInfo::CoreConfigurations coreConfigurations() const; %End %If (Qt_5_5_0 -) void setDeviceUuid(const QBluetoothUuid &uuid); %End %If (Qt_5_5_0 -) QBluetoothUuid deviceUuid() const; %End }; %End %If (Qt_5_5_0 -) QFlags operator|(QBluetoothDeviceInfo::CoreConfiguration f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QBluetoothDeviceInfo::ServiceClass f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qbluetoothhostinfo.sip0000644000076500000240000000274713245233150023233 0ustar philstaff00000000000000// qbluetoothhostinfo.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothHostInfo { %TypeHeaderCode #include %End public: QBluetoothHostInfo(); QBluetoothHostInfo(const QBluetoothHostInfo &other); ~QBluetoothHostInfo(); QBluetoothAddress address() const; void setAddress(const QBluetoothAddress &address); QString name() const; void setName(const QString &name); %If (Qt_5_5_0 -) bool operator==(const QBluetoothHostInfo &other) const; %End %If (Qt_5_5_0 -) bool operator!=(const QBluetoothHostInfo &other) const; %End }; %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qbluetoothlocaldevice.sip0000644000076500000240000000553313245233150023650 0ustar philstaff00000000000000// qbluetoothlocaldevice.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothLocalDevice : QObject { %TypeHeaderCode #include %End public: enum Pairing { Unpaired, Paired, AuthorizedPaired, }; enum HostMode { HostPoweredOff, HostConnectable, HostDiscoverable, HostDiscoverableLimitedInquiry, }; enum Error { NoError, PairingError, UnknownError, }; %If (Qt_5_6_1 -) explicit QBluetoothLocalDevice(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QBluetoothLocalDevice(QObject *parent /TransferThis/ = 0); %End QBluetoothLocalDevice(const QBluetoothAddress &address, QObject *parent /TransferThis/ = 0); virtual ~QBluetoothLocalDevice(); bool isValid() const; void requestPairing(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing); QBluetoothLocalDevice::Pairing pairingStatus(const QBluetoothAddress &address) const; void setHostMode(QBluetoothLocalDevice::HostMode mode); QBluetoothLocalDevice::HostMode hostMode() const; void powerOn(); QString name() const; QBluetoothAddress address() const; static QList allDevices(); %If (Qt_5_3_0 -) QList connectedDevices() const; %End public slots: void pairingConfirmation(bool confirmation); signals: void hostModeStateChanged(QBluetoothLocalDevice::HostMode state); void pairingFinished(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing); void pairingDisplayPinCode(const QBluetoothAddress &address, QString pin); void pairingDisplayConfirmation(const QBluetoothAddress &address, QString pin); void error(QBluetoothLocalDevice::Error error); %If (Qt_5_3_0 -) void deviceConnected(const QBluetoothAddress &address); %End %If (Qt_5_3_0 -) void deviceDisconnected(const QBluetoothAddress &address); %End }; %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qbluetoothserver.sip0000644000076500000240000000703513245233150022703 0ustar philstaff00000000000000// qbluetoothserver.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothServer : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QBluetoothDeviceDiscoveryAgent, &sipType_QBluetoothDeviceDiscoveryAgent, -1, 1}, {sipName_QBluetoothServiceDiscoveryAgent, &sipType_QBluetoothServiceDiscoveryAgent, -1, 2}, #if QT_VERSION >= 0x050400 {sipName_QLowEnergyService, &sipType_QLowEnergyService, -1, 3}, #else {0, 0, -1, 3}, #endif {sipName_QBluetoothTransferReply, &sipType_QBluetoothTransferReply, -1, 4}, {sipName_QBluetoothTransferManager, &sipType_QBluetoothTransferManager, -1, 5}, {sipName_QBluetoothServer, &sipType_QBluetoothServer, -1, 6}, #if QT_VERSION >= 0x050400 {sipName_QLowEnergyController, &sipType_QLowEnergyController, -1, 7}, #else {0, 0, -1, 7}, #endif {sipName_QBluetoothSocket, &sipType_QBluetoothSocket, -1, 8}, {sipName_QBluetoothLocalDevice, &sipType_QBluetoothLocalDevice, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Error { NoError, UnknownError, PoweredOffError, InputOutputError, ServiceAlreadyRegisteredError, UnsupportedProtocolError, }; QBluetoothServer(QBluetoothServiceInfo::Protocol serverType, QObject *parent /TransferThis/ = 0); virtual ~QBluetoothServer(); void close() /ReleaseGIL/; bool listen(const QBluetoothAddress &address = QBluetoothAddress(), quint16 port = 0) /ReleaseGIL/; QBluetoothServiceInfo listen(const QBluetoothUuid &uuid, const QString &serviceName = QString()) /ReleaseGIL/; bool isListening() const; void setMaxPendingConnections(int numConnections); int maxPendingConnections() const; bool hasPendingConnections() const; QBluetoothSocket *nextPendingConnection() /Factory/; QBluetoothAddress serverAddress() const; quint16 serverPort() const; void setSecurityFlags(QBluetooth::SecurityFlags security); QBluetooth::SecurityFlags securityFlags() const; QBluetoothServiceInfo::Protocol serverType() const; QBluetoothServer::Error error() const; signals: void newConnection(); void error(QBluetoothServer::Error); }; %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qbluetoothservicediscoveryagent.sip0000644000076500000240000000475713245233150026014 0ustar philstaff00000000000000// qbluetoothservicediscoveryagent.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothServiceDiscoveryAgent : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, InputOutputError, PoweredOffError, %If (Qt_5_3_0 -) InvalidBluetoothAdapterError, %End UnknownError, }; enum DiscoveryMode { MinimalDiscovery, FullDiscovery, }; %If (Qt_5_6_1 -) explicit QBluetoothServiceDiscoveryAgent(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QBluetoothServiceDiscoveryAgent(QObject *parent /TransferThis/ = 0); %End QBluetoothServiceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent /TransferThis/ = 0); virtual ~QBluetoothServiceDiscoveryAgent(); bool isActive() const; QBluetoothServiceDiscoveryAgent::Error error() const; QString errorString() const; QList discoveredServices() const; void setUuidFilter(const QList &uuids); void setUuidFilter(const QBluetoothUuid &uuid); QList uuidFilter() const; bool setRemoteAddress(const QBluetoothAddress &address); QBluetoothAddress remoteAddress() const; public slots: void start(QBluetoothServiceDiscoveryAgent::DiscoveryMode mode = QBluetoothServiceDiscoveryAgent::MinimalDiscovery); void stop(); void clear(); signals: void serviceDiscovered(const QBluetoothServiceInfo &info); void finished(); void canceled(); void error(QBluetoothServiceDiscoveryAgent::Error error); }; %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qbluetoothserviceinfo.sip0000644000076500000240000000636513245233150023716 0ustar philstaff00000000000000// qbluetoothserviceinfo.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothServiceInfo { %TypeHeaderCode #include %End public: enum AttributeId { ServiceRecordHandle, ServiceClassIds, ServiceRecordState, ServiceId, ProtocolDescriptorList, BrowseGroupList, LanguageBaseAttributeIdList, ServiceInfoTimeToLive, ServiceAvailability, BluetoothProfileDescriptorList, DocumentationUrl, ClientExecutableUrl, IconUrl, AdditionalProtocolDescriptorList, PrimaryLanguageBase, ServiceName, ServiceDescription, ServiceProvider, }; enum Protocol { UnknownProtocol, L2capProtocol, RfcommProtocol, }; QBluetoothServiceInfo(); QBluetoothServiceInfo(const QBluetoothServiceInfo &other); ~QBluetoothServiceInfo(); bool isValid() const; bool isComplete() const; void setDevice(const QBluetoothDeviceInfo &info); QBluetoothDeviceInfo device() const; QVariant attribute(quint16 attributeId) const; QList attributes() const; bool contains(quint16 attributeId) const; void removeAttribute(quint16 attributeId); QBluetoothServiceInfo::Protocol socketProtocol() const; int protocolServiceMultiplexer() const; int serverChannel() const; QBluetoothServiceInfo::Sequence protocolDescriptor(QBluetoothUuid::ProtocolUuid protocol) const; bool isRegistered() const; bool registerService(const QBluetoothAddress &localAdapter = QBluetoothAddress()); bool unregisterService(); void setAttribute(quint16 attributeId, const QBluetoothUuid &value); void setAttribute(quint16 attributeId, const QBluetoothServiceInfo::Sequence &value); void setAttribute(quint16 attributeId, const QVariant &value); void setServiceName(const QString &name); QString serviceName() const; void setServiceDescription(const QString &description); QString serviceDescription() const; void setServiceProvider(const QString &provider); QString serviceProvider() const; void setServiceAvailability(quint8 availability); quint8 serviceAvailability() const; void setServiceUuid(const QBluetoothUuid &uuid); QBluetoothUuid serviceUuid() const; QList serviceClassUuids() const; }; %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qbluetoothsocket.sip0000644000076500000240000001166213245233150022666 0ustar philstaff00000000000000// qbluetoothsocket.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothSocket : QIODevice { %TypeHeaderCode #include %End public: enum SocketState { UnconnectedState, ServiceLookupState, ConnectingState, ConnectedState, BoundState, ClosingState, ListeningState, }; enum SocketError { NoSocketError, UnknownSocketError, HostNotFoundError, ServiceNotFoundError, NetworkError, UnsupportedProtocolError, %If (Qt_5_3_0 -) OperationError, %End %If (Qt_5_10_0 -) RemoteHostClosedError, %End }; QBluetoothSocket(QBluetoothServiceInfo::Protocol socketType, QObject *parent /TransferThis/ = 0); %If (Qt_5_6_1 -) explicit QBluetoothSocket(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QBluetoothSocket(QObject *parent /TransferThis/ = 0); %End virtual ~QBluetoothSocket(); void abort(); virtual void close() /ReleaseGIL/; virtual bool isSequential() const; virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool canReadLine() const; void connectToService(const QBluetoothServiceInfo &service, QIODevice::OpenMode mode = QIODevice::ReadWrite) /ReleaseGIL/; void connectToService(const QBluetoothAddress &address, const QBluetoothUuid &uuid, QIODevice::OpenMode mode = QIODevice::ReadWrite) /ReleaseGIL/; void connectToService(const QBluetoothAddress &address, quint16 port, QIODevice::OpenMode mode = QIODevice::ReadWrite) /ReleaseGIL/; void disconnectFromService() /ReleaseGIL/; QString localName() const; QBluetoothAddress localAddress() const; quint16 localPort() const; QString peerName() const; QBluetoothAddress peerAddress() const; quint16 peerPort() const; bool setSocketDescriptor(int socketDescriptor, QBluetoothServiceInfo::Protocol socketType, QBluetoothSocket::SocketState state = QBluetoothSocket::ConnectedState, QIODevice::OpenMode mode = QIODevice::ReadWrite); int socketDescriptor() const; QBluetoothServiceInfo::Protocol socketType() const; QBluetoothSocket::SocketState state() const; QBluetoothSocket::SocketError error() const; QString errorString() const; signals: void connected(); void disconnected(); void error(QBluetoothSocket::SocketError error); void stateChanged(QBluetoothSocket::SocketState state); protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /TypeHint="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxSize)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QBluetoothSocket::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 maxSize /ArraySize/) /ReleaseGIL/; void setSocketState(QBluetoothSocket::SocketState state); void setSocketError(QBluetoothSocket::SocketError error); void doDeviceDiscovery(const QBluetoothServiceInfo &service, QIODevice::OpenMode openMode); public: %If (Qt_5_6_0 -) void setPreferredSecurityFlags(QBluetooth::SecurityFlags flags); %End %If (Qt_5_6_0 -) QBluetooth::SecurityFlags preferredSecurityFlags() const; %End }; %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qbluetoothtransfermanager.sip0000644000076500000240000000256013245233150024552 0ustar philstaff00000000000000// qbluetoothtransfermanager.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothTransferManager : QObject { %TypeHeaderCode #include %End public: explicit QBluetoothTransferManager(QObject *parent /TransferThis/ = 0); virtual ~QBluetoothTransferManager(); QBluetoothTransferReply *put(const QBluetoothTransferRequest &request, QIODevice *data) /Transfer/; signals: void finished(QBluetoothTransferReply *reply); }; %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qbluetoothtransferreply.sip0000644000076500000240000000423213245233150024271 0ustar philstaff00000000000000// qbluetoothtransferreply.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothTransferReply : QObject { %TypeHeaderCode #include %End public: enum TransferError { NoError, UnknownError, FileNotFoundError, HostNotFoundError, UserCanceledTransferError, %If (Qt_5_3_0 -) IODeviceNotReadableError, %End %If (Qt_5_3_0 -) ResourceBusyError, %End %If (Qt_5_4_0 -) SessionError, %End }; virtual ~QBluetoothTransferReply(); virtual bool isFinished() const = 0; virtual bool isRunning() const = 0; QBluetoothTransferManager *manager() const; virtual QBluetoothTransferReply::TransferError error() const = 0; virtual QString errorString() const = 0; QBluetoothTransferRequest request() const; public slots: void abort(); signals: void finished(QBluetoothTransferReply *); void transferProgress(qint64 bytesTransferred, qint64 bytesTotal); %If (Qt_5_4_0 -) void error(QBluetoothTransferReply::TransferError lastError); %End protected: explicit QBluetoothTransferReply(QObject *parent /TransferThis/ = 0); void setManager(QBluetoothTransferManager *manager); void setRequest(const QBluetoothTransferRequest &request); }; %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qbluetoothtransferrequest.sip0000644000076500000240000000345313245233150024632 0ustar philstaff00000000000000// qbluetoothtransferrequest.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothTransferRequest { %TypeHeaderCode #include %End public: enum Attribute { DescriptionAttribute, TimeAttribute, TypeAttribute, LengthAttribute, NameAttribute, }; explicit QBluetoothTransferRequest(const QBluetoothAddress &address = QBluetoothAddress()); QBluetoothTransferRequest(const QBluetoothTransferRequest &other); ~QBluetoothTransferRequest(); QVariant attribute(QBluetoothTransferRequest::Attribute code, const QVariant &defaultValue = QVariant()) const; void setAttribute(QBluetoothTransferRequest::Attribute code, const QVariant &value); QBluetoothAddress address() const; bool operator!=(const QBluetoothTransferRequest &other) const; bool operator==(const QBluetoothTransferRequest &other) const; }; %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qbluetoothuuid.sip0000644000076500000240000002557213245233150022351 0ustar philstaff00000000000000// qbluetoothuuid.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QBluetoothUuid : QUuid { %TypeHeaderCode #include %End public: enum ProtocolUuid { Sdp, Udp, Rfcomm, Tcp, TcsBin, TcsAt, Att, Obex, Ip, Ftp, Http, Wsp, Bnep, Upnp, Hidp, HardcopyControlChannel, HardcopyDataChannel, HardcopyNotification, Avctp, Avdtp, Cmtp, UdiCPlain, McapControlChannel, McapDataChannel, L2cap, }; enum ServiceClassUuid { ServiceDiscoveryServer, BrowseGroupDescriptor, PublicBrowseGroup, SerialPort, LANAccessUsingPPP, DialupNetworking, IrMCSync, ObexObjectPush, OBEXFileTransfer, IrMCSyncCommand, Headset, AudioSource, AudioSink, AV_RemoteControlTarget, AdvancedAudioDistribution, AV_RemoteControl, AV_RemoteControlController, HeadsetAG, PANU, NAP, GN, DirectPrinting, ReferencePrinting, ImagingResponder, ImagingAutomaticArchive, ImagingReferenceObjects, Handsfree, HandsfreeAudioGateway, DirectPrintingReferenceObjectsService, ReflectedUI, BasicPrinting, PrintingStatus, HumanInterfaceDeviceService, HardcopyCableReplacement, HCRPrint, HCRScan, SIMAccess, PhonebookAccessPCE, PhonebookAccessPSE, PhonebookAccess, HeadsetHS, MessageAccessServer, MessageNotificationServer, MessageAccessProfile, PnPInformation, GenericNetworking, GenericFileTransfer, GenericAudio, GenericTelephony, VideoSource, VideoSink, VideoDistribution, HDP, HDPSource, HDPSink, %If (Qt_5_3_0 -) BasicImage, %End %If (Qt_5_3_0 -) GNSS, %End %If (Qt_5_3_0 -) GNSSServer, %End %If (Qt_5_3_0 -) Display3D, %End %If (Qt_5_3_0 -) Glasses3D, %End %If (Qt_5_3_0 -) Synchronization3D, %End %If (Qt_5_3_0 -) MPSProfile, %End %If (Qt_5_3_0 -) MPSService, %End %If (Qt_5_4_0 -) GenericAccess, %End %If (Qt_5_4_0 -) GenericAttribute, %End %If (Qt_5_4_0 -) ImmediateAlert, %End %If (Qt_5_4_0 -) LinkLoss, %End %If (Qt_5_4_0 -) TxPower, %End %If (Qt_5_4_0 -) CurrentTimeService, %End %If (Qt_5_4_0 -) ReferenceTimeUpdateService, %End %If (Qt_5_4_0 -) NextDSTChangeService, %End %If (Qt_5_4_0 -) Glucose, %End %If (Qt_5_4_0 -) HealthThermometer, %End %If (Qt_5_4_0 -) DeviceInformation, %End %If (Qt_5_4_0 -) HeartRate, %End %If (Qt_5_4_0 -) PhoneAlertStatusService, %End %If (Qt_5_4_0 -) BatteryService, %End %If (Qt_5_4_0 -) BloodPressure, %End %If (Qt_5_4_0 -) AlertNotificationService, %End %If (Qt_5_4_0 -) HumanInterfaceDevice, %End %If (Qt_5_4_0 -) ScanParameters, %End %If (Qt_5_4_0 -) RunningSpeedAndCadence, %End %If (Qt_5_4_0 -) CyclingSpeedAndCadence, %End %If (Qt_5_4_0 -) CyclingPower, %End %If (Qt_5_4_0 -) LocationAndNavigation, %End %If (Qt_5_5_0 -) EnvironmentalSensing, %End %If (Qt_5_5_0 -) BodyComposition, %End %If (Qt_5_5_0 -) UserData, %End %If (Qt_5_5_0 -) WeightScale, %End %If (Qt_5_5_0 -) BondManagement, %End %If (Qt_5_5_0 -) ContinuousGlucoseMonitoring, %End }; QBluetoothUuid(); explicit QBluetoothUuid(quint32 uuid); explicit QBluetoothUuid(quint128 uuid); explicit QBluetoothUuid(const QString &uuid); QBluetoothUuid(const QBluetoothUuid &uuid); QBluetoothUuid(const QUuid &uuid); ~QBluetoothUuid(); bool operator==(const QBluetoothUuid &other) const; %If (Qt_5_7_0 -) bool operator!=(const QBluetoothUuid &other) const; %End int minimumSize() const; quint16 toUInt16(bool *ok = 0) const; quint32 toUInt32(bool *ok = 0) const; quint128 toUInt128() const; %If (Qt_5_4_0 -) enum CharacteristicType { DeviceName, Appearance, PeripheralPrivacyFlag, ReconnectionAddress, PeripheralPreferredConnectionParameters, ServiceChanged, AlertLevel, TxPowerLevel, DateTime, DayOfWeek, DayDateTime, ExactTime256, DSTOffset, TimeZone, LocalTimeInformation, TimeWithDST, TimeAccuracy, TimeSource, ReferenceTimeInformation, TimeUpdateControlPoint, TimeUpdateState, GlucoseMeasurement, BatteryLevel, TemperatureMeasurement, TemperatureType, IntermediateTemperature, MeasurementInterval, BootKeyboardInputReport, SystemID, ModelNumberString, SerialNumberString, FirmwareRevisionString, HardwareRevisionString, SoftwareRevisionString, ManufacturerNameString, IEEE1107320601RegulatoryCertificationDataList, CurrentTime, ScanRefresh, BootKeyboardOutputReport, BootMouseInputReport, GlucoseMeasurementContext, BloodPressureMeasurement, IntermediateCuffPressure, HeartRateMeasurement, BodySensorLocation, HeartRateControlPoint, AlertStatus, RingerControlPoint, RingerSetting, AlertCategoryIDBitMask, AlertCategoryID, AlertNotificationControlPoint, UnreadAlertStatus, NewAlert, SupportedNewAlertCategory, SupportedUnreadAlertCategory, BloodPressureFeature, HIDInformation, ReportMap, HIDControlPoint, Report, ProtocolMode, ScanIntervalWindow, PnPID, GlucoseFeature, RecordAccessControlPoint, RSCMeasurement, RSCFeature, SCControlPoint, CSCMeasurement, CSCFeature, SensorLocation, CyclingPowerMeasurement, CyclingPowerVector, CyclingPowerFeature, CyclingPowerControlPoint, LocationAndSpeed, Navigation, PositionQuality, LNFeature, LNControlPoint, %If (Qt_5_5_0 -) MagneticDeclination, %End %If (Qt_5_5_0 -) Elevation, %End %If (Qt_5_5_0 -) Pressure, %End %If (Qt_5_5_0 -) Temperature, %End %If (Qt_5_5_0 -) Humidity, %End %If (Qt_5_5_0 -) TrueWindSpeed, %End %If (Qt_5_5_0 -) TrueWindDirection, %End %If (Qt_5_5_0 -) ApparentWindSpeed, %End %If (Qt_5_5_0 -) ApparentWindDirection, %End %If (Qt_5_5_0 -) GustFactor, %End %If (Qt_5_5_0 -) PollenConcentration, %End %If (Qt_5_5_0 -) UVIndex, %End %If (Qt_5_5_0 -) Irradiance, %End %If (Qt_5_5_0 -) Rainfall, %End %If (Qt_5_5_0 -) WindChill, %End %If (Qt_5_5_0 -) HeatIndex, %End %If (Qt_5_5_0 -) DewPoint, %End %If (Qt_5_5_0 -) DescriptorValueChanged, %End %If (Qt_5_5_0 -) AerobicHeartRateLowerLimit, %End %If (Qt_5_5_0 -) AerobicThreshold, %End %If (Qt_5_5_0 -) Age, %End %If (Qt_5_5_0 -) AnaerobicHeartRateLowerLimit, %End %If (Qt_5_5_0 -) AnaerobicHeartRateUpperLimit, %End %If (Qt_5_5_0 -) AnaerobicThreshold, %End %If (Qt_5_5_0 -) AerobicHeartRateUpperLimit, %End %If (Qt_5_5_0 -) DateOfBirth, %End %If (Qt_5_5_0 -) DateOfThresholdAssessment, %End %If (Qt_5_5_0 -) EmailAddress, %End %If (Qt_5_5_0 -) FatBurnHeartRateLowerLimit, %End %If (Qt_5_5_0 -) FatBurnHeartRateUpperLimit, %End %If (Qt_5_5_0 -) FirstName, %End %If (Qt_5_5_0 -) FiveZoneHeartRateLimits, %End %If (Qt_5_5_0 -) Gender, %End %If (Qt_5_5_0 -) HeartRateMax, %End %If (Qt_5_5_0 -) Height, %End %If (Qt_5_5_0 -) HipCircumference, %End %If (Qt_5_5_0 -) LastName, %End %If (Qt_5_5_0 -) MaximumRecommendedHeartRate, %End %If (Qt_5_5_0 -) RestingHeartRate, %End %If (Qt_5_5_0 -) SportTypeForAerobicAnaerobicThresholds, %End %If (Qt_5_5_0 -) ThreeZoneHeartRateLimits, %End %If (Qt_5_5_0 -) TwoZoneHeartRateLimits, %End %If (Qt_5_5_0 -) VO2Max, %End %If (Qt_5_5_0 -) WaistCircumference, %End %If (Qt_5_5_0 -) Weight, %End %If (Qt_5_5_0 -) DatabaseChangeIncrement, %End %If (Qt_5_5_0 -) UserIndex, %End %If (Qt_5_5_0 -) BodyCompositionFeature, %End %If (Qt_5_5_0 -) BodyCompositionMeasurement, %End %If (Qt_5_5_0 -) WeightMeasurement, %End %If (Qt_5_5_0 -) WeightScaleFeature, %End %If (Qt_5_5_0 -) UserControlPoint, %End %If (Qt_5_5_0 -) MagneticFluxDensity2D, %End %If (Qt_5_5_0 -) MagneticFluxDensity3D, %End %If (Qt_5_5_0 -) Language, %End %If (Qt_5_5_0 -) BarometricPressureTrend, %End }; %End %If (Qt_5_4_0 -) enum DescriptorType { UnknownDescriptorType, CharacteristicExtendedProperties, CharacteristicUserDescription, ClientCharacteristicConfiguration, ServerCharacteristicConfiguration, CharacteristicPresentationFormat, CharacteristicAggregateFormat, ValidRange, ExternalReportReference, ReportReference, %If (Qt_5_5_0 -) EnvironmentalSensingConfiguration, %End %If (Qt_5_5_0 -) EnvironmentalSensingMeasurement, %End %If (Qt_5_5_0 -) EnvironmentalSensingTriggerSetting, %End }; %End %If (Qt_5_4_0 -) static QString serviceClassToString(QBluetoothUuid::ServiceClassUuid uuid); %End %If (Qt_5_4_0 -) static QString protocolToString(QBluetoothUuid::ProtocolUuid uuid); %End %If (Qt_5_4_0 -) static QString characteristicToString(QBluetoothUuid::CharacteristicType uuid); %End %If (Qt_5_4_0 -) static QString descriptorToString(QBluetoothUuid::DescriptorType uuid); %End }; %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qlowenergyadvertisingdata.sip0000644000076500000240000000443613245233150024556 0ustar philstaff00000000000000// qlowenergyadvertisingdata.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_7_0 -) class QLowEnergyAdvertisingData { %TypeHeaderCode #include %End public: QLowEnergyAdvertisingData(); QLowEnergyAdvertisingData(const QLowEnergyAdvertisingData &other); ~QLowEnergyAdvertisingData(); void setLocalName(const QString &name); QString localName() const; static quint16 invalidManufacturerId(); void setManufacturerData(quint16 id, const QByteArray &data); quint16 manufacturerId() const; QByteArray manufacturerData() const; void setIncludePowerLevel(bool doInclude); bool includePowerLevel() const; enum Discoverability { DiscoverabilityNone, DiscoverabilityLimited, DiscoverabilityGeneral, }; void setDiscoverability(QLowEnergyAdvertisingData::Discoverability mode); QLowEnergyAdvertisingData::Discoverability discoverability() const; void setServices(const QList &services); QList services() const; void setRawData(const QByteArray &data); QByteArray rawData() const; void swap(QLowEnergyAdvertisingData &other); }; %End %If (Qt_5_7_0 -) bool operator==(const QLowEnergyAdvertisingData &data1, const QLowEnergyAdvertisingData &data2); %End %If (Qt_5_7_0 -) bool operator!=(const QLowEnergyAdvertisingData &data1, const QLowEnergyAdvertisingData &data2); %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qlowenergyadvertisingparameters.sip0000644000076500000240000000543613245233150026011 0ustar philstaff00000000000000// qlowenergyadvertisingparameters.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_7_0 -) class QLowEnergyAdvertisingParameters { %TypeHeaderCode #include %End public: QLowEnergyAdvertisingParameters(); QLowEnergyAdvertisingParameters(const QLowEnergyAdvertisingParameters &other); ~QLowEnergyAdvertisingParameters(); enum Mode { AdvInd, AdvScanInd, AdvNonConnInd, }; void setMode(QLowEnergyAdvertisingParameters::Mode mode); QLowEnergyAdvertisingParameters::Mode mode() const; struct AddressInfo { %TypeHeaderCode #include %End AddressInfo(const QBluetoothAddress &addr, QLowEnergyController::RemoteAddressType t); AddressInfo(); QBluetoothAddress address; QLowEnergyController::RemoteAddressType type; }; enum FilterPolicy { IgnoreWhiteList, UseWhiteListForScanning, UseWhiteListForConnecting, UseWhiteListForScanningAndConnecting, }; void setWhiteList(const QList &whiteList, QLowEnergyAdvertisingParameters::FilterPolicy policy); QList whiteList() const; QLowEnergyAdvertisingParameters::FilterPolicy filterPolicy() const; void setInterval(quint16 minimum, quint16 maximum); int minimumInterval() const; int maximumInterval() const; void swap(QLowEnergyAdvertisingParameters &other); }; %End %If (Qt_5_7_0 -) bool operator==(const QLowEnergyAdvertisingParameters &p1, const QLowEnergyAdvertisingParameters &p2); %End %If (Qt_5_7_0 -) bool operator==(const QLowEnergyAdvertisingParameters::AddressInfo &ai1, const QLowEnergyAdvertisingParameters::AddressInfo &ai2); %End %If (Qt_5_7_0 -) bool operator!=(const QLowEnergyAdvertisingParameters &p1, const QLowEnergyAdvertisingParameters &p2); %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qlowenergycharacteristic.sip0000644000076500000240000000416013245233150024367 0ustar philstaff00000000000000// qlowenergycharacteristic.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QLowEnergyCharacteristic { %TypeHeaderCode #include %End public: enum PropertyType { Unknown, Broadcasting, Read, WriteNoResponse, Write, Notify, Indicate, WriteSigned, ExtendedProperty, }; typedef QFlags PropertyTypes; QLowEnergyCharacteristic(); QLowEnergyCharacteristic(const QLowEnergyCharacteristic &other); ~QLowEnergyCharacteristic(); bool operator==(const QLowEnergyCharacteristic &other) const; bool operator!=(const QLowEnergyCharacteristic &other) const; QString name() const; QBluetoothUuid uuid() const; QByteArray value() const; QLowEnergyCharacteristic::PropertyTypes properties() const; QLowEnergyHandle handle() const; QLowEnergyDescriptor descriptor(const QBluetoothUuid &uuid) const; QList descriptors() const; bool isValid() const; }; %End %If (Qt_5_4_0 -) QFlags operator|(QLowEnergyCharacteristic::PropertyType f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qlowenergycharacteristicdata.sip0000644000076500000240000000465013245233150025225 0ustar philstaff00000000000000// qlowenergycharacteristicdata.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_7_0 -) class QLowEnergyCharacteristicData { %TypeHeaderCode #include %End public: QLowEnergyCharacteristicData(); QLowEnergyCharacteristicData(const QLowEnergyCharacteristicData &other); ~QLowEnergyCharacteristicData(); QBluetoothUuid uuid() const; void setUuid(const QBluetoothUuid &uuid); QByteArray value() const; void setValue(const QByteArray &value); QLowEnergyCharacteristic::PropertyTypes properties() const; void setProperties(QLowEnergyCharacteristic::PropertyTypes properties); QList descriptors() const; void setDescriptors(const QList &descriptors); void addDescriptor(const QLowEnergyDescriptorData &descriptor); void setReadConstraints(QBluetooth::AttAccessConstraints constraints); QBluetooth::AttAccessConstraints readConstraints() const; void setWriteConstraints(QBluetooth::AttAccessConstraints constraints); QBluetooth::AttAccessConstraints writeConstraints() const; void setValueLength(int minimum, int maximum); int minimumValueLength() const; int maximumValueLength() const; bool isValid() const; void swap(QLowEnergyCharacteristicData &other); }; %End %If (Qt_5_7_0 -) bool operator==(const QLowEnergyCharacteristicData &cd1, const QLowEnergyCharacteristicData &cd2); %End %If (Qt_5_7_0 -) bool operator!=(const QLowEnergyCharacteristicData &cd1, const QLowEnergyCharacteristicData &cd2); %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qlowenergyconnectionparameters.sip0000644000076500000240000000346313245233150025627 0ustar philstaff00000000000000// qlowenergyconnectionparameters.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_7_0 -) class QLowEnergyConnectionParameters { %TypeHeaderCode #include %End public: QLowEnergyConnectionParameters(); QLowEnergyConnectionParameters(const QLowEnergyConnectionParameters &other); ~QLowEnergyConnectionParameters(); void setIntervalRange(double minimum, double maximum); double minimumInterval() const; double maximumInterval() const; void setLatency(int latency); int latency() const; void setSupervisionTimeout(int timeout); int supervisionTimeout() const; void swap(QLowEnergyConnectionParameters &other); }; %End %If (Qt_5_7_0 -) bool operator==(const QLowEnergyConnectionParameters &p1, const QLowEnergyConnectionParameters &p2); %End %If (Qt_5_7_0 -) bool operator!=(const QLowEnergyConnectionParameters &p1, const QLowEnergyConnectionParameters &p2); %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qlowenergycontroller.sip0000644000076500000240000001035713245233150023567 0ustar philstaff00000000000000// qlowenergycontroller.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QLowEnergyController : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, UnknownError, UnknownRemoteDeviceError, NetworkError, InvalidBluetoothAdapterError, %If (Qt_5_5_0 -) ConnectionError, %End %If (Qt_5_7_0 -) AdvertisingError, %End %If (Qt_5_10_0 -) RemoteHostClosedError, %End }; enum ControllerState { UnconnectedState, ConnectingState, ConnectedState, DiscoveringState, DiscoveredState, ClosingState, %If (Qt_5_7_0 -) AdvertisingState, %End }; enum RemoteAddressType { PublicAddress, RandomAddress, }; %If (Qt_5_5_0 -) QLowEnergyController(const QBluetoothDeviceInfo &remoteDevice, QObject *parent /TransferThis/ = 0); %End QLowEnergyController(const QBluetoothAddress &remoteDevice, QObject *parent /TransferThis/ = 0); QLowEnergyController(const QBluetoothAddress &remoteDevice, const QBluetoothAddress &localDevice, QObject *parent /TransferThis/ = 0); virtual ~QLowEnergyController(); QBluetoothAddress localAddress() const; QBluetoothAddress remoteAddress() const; QLowEnergyController::ControllerState state() const; QLowEnergyController::RemoteAddressType remoteAddressType() const; void setRemoteAddressType(QLowEnergyController::RemoteAddressType type); void connectToDevice(); void disconnectFromDevice(); void discoverServices(); QList services() const; QLowEnergyService *createServiceObject(const QBluetoothUuid &service, QObject *parent /TransferThis/ = 0) /Factory/; QLowEnergyController::Error error() const; QString errorString() const; %If (Qt_5_5_0 -) QString remoteName() const; %End signals: void connected(); void disconnected(); void stateChanged(QLowEnergyController::ControllerState state); void error(QLowEnergyController::Error newError); void serviceDiscovered(const QBluetoothUuid &newService); void discoveryFinished(); public: %If (Qt_5_7_0 -) enum Role { CentralRole, PeripheralRole, }; %End %If (Qt_5_7_0 -) static QLowEnergyController *createCentral(const QBluetoothDeviceInfo &remoteDevice, QObject *parent /TransferThis/ = 0) /Factory/; %End %If (Qt_5_7_0 -) static QLowEnergyController *createPeripheral(QObject *parent /TransferThis/ = 0) /Factory/; %End %If (Qt_5_7_0 -) void startAdvertising(const QLowEnergyAdvertisingParameters ¶meters, const QLowEnergyAdvertisingData &advertisingData, const QLowEnergyAdvertisingData &scanResponseData = QLowEnergyAdvertisingData()); %End %If (Qt_5_7_0 -) void stopAdvertising(); %End %If (Qt_5_7_0 -) QLowEnergyService *addService(const QLowEnergyServiceData &service, QObject *parent /TransferThis/ = 0) /Factory/; %End %If (Qt_5_7_0 -) void requestConnectionUpdate(const QLowEnergyConnectionParameters ¶meters); %End %If (Qt_5_7_0 -) QLowEnergyController::Role role() const; %End signals: %If (Qt_5_7_0 -) void connectionUpdated(const QLowEnergyConnectionParameters ¶meters); %End public: %If (Qt_5_8_0 -) QBluetoothUuid remoteDeviceUuid() const; %End private: %If (Qt_5_7_0 -) explicit QLowEnergyController(QObject *parent = 0); %End }; %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qlowenergydescriptor.sip0000644000076500000240000000276713245233150023570 0ustar philstaff00000000000000// qlowenergydescriptor.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QLowEnergyDescriptor { %TypeHeaderCode #include %End public: QLowEnergyDescriptor(); QLowEnergyDescriptor(const QLowEnergyDescriptor &other); ~QLowEnergyDescriptor(); bool operator==(const QLowEnergyDescriptor &other) const; bool operator!=(const QLowEnergyDescriptor &other) const; bool isValid() const; QByteArray value() const; QBluetoothUuid uuid() const; QLowEnergyHandle handle() const; QString name() const; QBluetoothUuid::DescriptorType type() const; }; %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qlowenergydescriptordata.sip0000644000076500000240000000423113245233150024406 0ustar philstaff00000000000000// qlowenergydescriptordata.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_7_0 -) class QLowEnergyDescriptorData { %TypeHeaderCode #include %End public: QLowEnergyDescriptorData(); QLowEnergyDescriptorData(const QBluetoothUuid &uuid, const QByteArray &value); QLowEnergyDescriptorData(const QLowEnergyDescriptorData &other); ~QLowEnergyDescriptorData(); QByteArray value() const; void setValue(const QByteArray &value); QBluetoothUuid uuid() const; void setUuid(const QBluetoothUuid &uuid); bool isValid() const; void setReadPermissions(bool readable, QBluetooth::AttAccessConstraints constraints = QBluetooth::AttAccessConstraints()); bool isReadable() const; QBluetooth::AttAccessConstraints readConstraints() const; void setWritePermissions(bool writable, QBluetooth::AttAccessConstraints constraints = QBluetooth::AttAccessConstraints()); bool isWritable() const; QBluetooth::AttAccessConstraints writeConstraints() const; void swap(QLowEnergyDescriptorData &other); }; %End %If (Qt_5_7_0 -) bool operator==(const QLowEnergyDescriptorData &d1, const QLowEnergyDescriptorData &d12); %End %If (Qt_5_7_0 -) bool operator!=(const QLowEnergyDescriptorData &d1, const QLowEnergyDescriptorData &d2); %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qlowenergyservice.sip0000644000076500000240000000723013245233150023040 0ustar philstaff00000000000000// qlowenergyservice.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QLowEnergyService : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum ServiceType { PrimaryService, IncludedService, }; typedef QFlags ServiceTypes; enum ServiceError { NoError, OperationError, CharacteristicWriteError, DescriptorWriteError, %If (Qt_5_5_0 -) CharacteristicReadError, %End %If (Qt_5_5_0 -) DescriptorReadError, %End %If (Qt_5_5_0 -) UnknownError, %End }; enum ServiceState { InvalidService, DiscoveryRequired, DiscoveringServices, ServiceDiscovered, %If (Qt_5_7_0 -) LocalService, %End }; enum WriteMode { WriteWithResponse, WriteWithoutResponse, %If (Qt_5_7_0 -) WriteSigned, %End }; virtual ~QLowEnergyService(); QList includedServices() const; QLowEnergyService::ServiceTypes type() const; QLowEnergyService::ServiceState state() const; QLowEnergyCharacteristic characteristic(const QBluetoothUuid &uuid) const; QList characteristics() const; QBluetoothUuid serviceUuid() const; QString serviceName() const; void discoverDetails(); QLowEnergyService::ServiceError error() const; bool contains(const QLowEnergyCharacteristic &characteristic) const; bool contains(const QLowEnergyDescriptor &descriptor) const; void writeCharacteristic(const QLowEnergyCharacteristic &characteristic, const QByteArray &newValue, QLowEnergyService::WriteMode mode = QLowEnergyService::WriteWithResponse); void writeDescriptor(const QLowEnergyDescriptor &descriptor, const QByteArray &newValue); signals: void stateChanged(QLowEnergyService::ServiceState newState); void characteristicChanged(const QLowEnergyCharacteristic &info, const QByteArray &value); void characteristicWritten(const QLowEnergyCharacteristic &info, const QByteArray &value); void descriptorWritten(const QLowEnergyDescriptor &info, const QByteArray &value); void error(QLowEnergyService::ServiceError error); public: %If (Qt_5_5_0 -) void readCharacteristic(const QLowEnergyCharacteristic &characteristic); %End %If (Qt_5_5_0 -) void readDescriptor(const QLowEnergyDescriptor &descriptor); %End signals: %If (Qt_5_5_0 -) void characteristicRead(const QLowEnergyCharacteristic &info, const QByteArray &value); %End %If (Qt_5_5_0 -) void descriptorRead(const QLowEnergyDescriptor &info, const QByteArray &value); %End }; %End %If (Qt_5_5_0 -) QFlags operator|(QLowEnergyService::ServiceType f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qlowenergyservicedata.sip0000644000076500000240000000423113245233150023670 0ustar philstaff00000000000000// qlowenergyservicedata.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_7_0 -) class QLowEnergyServiceData { %TypeHeaderCode #include %End public: QLowEnergyServiceData(); QLowEnergyServiceData(const QLowEnergyServiceData &other); ~QLowEnergyServiceData(); enum ServiceType { ServiceTypePrimary, ServiceTypeSecondary, }; QLowEnergyServiceData::ServiceType type() const; void setType(QLowEnergyServiceData::ServiceType type); QBluetoothUuid uuid() const; void setUuid(const QBluetoothUuid &uuid); QList includedServices() const; void setIncludedServices(const QList &services); void addIncludedService(QLowEnergyService *service); QList characteristics() const; void setCharacteristics(const QList &characteristics); void addCharacteristic(const QLowEnergyCharacteristicData &characteristic); bool isValid() const; void swap(QLowEnergyServiceData &other); }; %End %If (Qt_5_7_0 -) bool operator==(const QLowEnergyServiceData &sd1, const QLowEnergyServiceData &sd2); %End %If (Qt_5_7_0 -) bool operator!=(const QLowEnergyServiceData &sd1, const QLowEnergyServiceData &sd2); %End PyQt5_gpl-5.10.1/sip/QtBluetooth/qpybluetooth_qlist.sip0000644000076500000240000001237313245233150023242 0ustar philstaff00000000000000// This is the SIP interface definition for the QList based mapped types // specific to the QtBluetooth module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QList /TypeHintIn="Iterable[int]", TypeHintOut="List[int]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { // Convert to a Python long to make sure it doesn't get interpreted as // a signed value. PyObject *pobj = PyLong_FromUnsignedLongLong(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *qv = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); unsigned long val = PyLong_AsUnsignedLongMask(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'int' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } qv->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; // QBluetoothServiceInfo::Sequence is actually a sub-class of QList. // Note that QBluetoothServiceInfo::Alternative is identical and they are both // syntactic sugar. By ignoring methods using the latter then everything works // as expected. %MappedType QBluetoothServiceInfo::Sequence /TypeHintIn="Iterable[QVariant]", TypeHintOut="List[QVariant]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { QVariant *t = new QVariant(sipCpp->at(i)); PyObject *tobj = sipConvertFromNewType(t, sipType_QVariant, sipTransferObj); if (!tobj) { delete t; Py_DECREF(l); return 0; } PyList_SetItem(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QBluetoothServiceInfo::Sequence *ql = new QBluetoothServiceInfo::Sequence; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; QVariant *t = reinterpret_cast( sipForceConvertToType(itm, sipType_QVariant, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but '_TYPE_' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(*t); sipReleaseType(t, sipType_QVariant, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; PyQt5_gpl-5.10.1/sip/QtBluetooth/qpybluetooth_quint128.sip0000644000076500000240000000555513245233150023505 0ustar philstaff00000000000000// This is the SIP interface definition for the quint128 mapped type. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType quint128 /TypeHint="Tuple[int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *t = PyTuple_New(16); if (!t) return 0; for (Py_ssize_t i = 0; i < 16; ++i) { // Convert to a Python long to make sure it doesn't get interpreted as // a signed value. PyObject *pobj = PyLong_FromUnsignedLong(sipCpp->data[i]); if (!pobj) { Py_DECREF(t); return 0; } PyTuple_SetItem(t, i, pobj); } return t; %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); Py_ssize_t len = PySequence_Size(sipPy); if (len != 16) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has %zd elements but 16 elements are expected", len); *sipIsErr = 1; return 0; } quint128 *qv = new quint128; for (Py_ssize_t i = 0; i < 16; ++i) { PyObject *itm = PySequence_GetItem(sipPy, i); if (!itm) { delete qv; *sipIsErr = 1; return 0; } PyErr_Clear(); unsigned long val = PyLong_AsUnsignedLongMask(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "element %zd has type '%s' but 'int' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete qv; *sipIsErr = 1; return 0; } qv->data[i] = val; Py_DECREF(itm); } *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; PyQt5_gpl-5.10.1/sip/QtBluetooth/QtBluetoothmod.sip0000644000076500000240000000537413245233150022244 0ustar philstaff00000000000000// QtBluetoothmod.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtBluetooth, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %Include qbluetooth.sip %Include qbluetoothaddress.sip %Include qbluetoothdevicediscoveryagent.sip %Include qbluetoothdeviceinfo.sip %Include qbluetoothhostinfo.sip %Include qbluetoothlocaldevice.sip %Include qbluetoothserver.sip %Include qbluetoothservicediscoveryagent.sip %Include qbluetoothserviceinfo.sip %Include qbluetoothsocket.sip %Include qbluetoothtransfermanager.sip %Include qbluetoothtransferreply.sip %Include qbluetoothtransferrequest.sip %Include qbluetoothuuid.sip %Include qlowenergyadvertisingdata.sip %Include qlowenergyadvertisingparameters.sip %Include qlowenergycharacteristic.sip %Include qlowenergycharacteristicdata.sip %Include qlowenergyconnectionparameters.sip %Include qlowenergycontroller.sip %Include qlowenergydescriptor.sip %Include qlowenergydescriptordata.sip %Include qlowenergyservice.sip %Include qlowenergyservicedata.sip %Include qpybluetooth_qlist.sip %Include qpybluetooth_quint128.sip PyQt5_gpl-5.10.1/sip/QtCore/0000755000076500000240000000000013245233150015467 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtCore/qabstractanimation.sip0000644000076500000240000000507313245233150022075 0ustar philstaff00000000000000// qabstractanimation.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractAnimation : QObject { %TypeHeaderCode #include %End public: enum Direction { Forward, Backward, }; enum State { Stopped, Paused, Running, }; enum DeletionPolicy { KeepWhenStopped, DeleteWhenStopped, }; QAbstractAnimation(QObject *parent /TransferThis/ = 0); virtual ~QAbstractAnimation(); QAbstractAnimation::State state() const; QAnimationGroup *group() const; QAbstractAnimation::Direction direction() const; void setDirection(QAbstractAnimation::Direction direction); int currentTime() const; int currentLoopTime() const; int loopCount() const; void setLoopCount(int loopCount); int currentLoop() const; virtual int duration() const = 0; int totalDuration() const; signals: void finished(); void stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); void currentLoopChanged(int currentLoop); void directionChanged(QAbstractAnimation::Direction); public slots: void start(QAbstractAnimation::DeletionPolicy policy = QAbstractAnimation::KeepWhenStopped); void pause(); void resume(); void setPaused(bool); void stop(); void setCurrentTime(int msecs); protected: virtual bool event(QEvent *event); virtual void updateCurrentTime(int currentTime) = 0; virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); virtual void updateDirection(QAbstractAnimation::Direction direction); private: QAbstractAnimation(const QAbstractAnimation &); }; PyQt5_gpl-5.10.1/sip/QtCore/qabstracteventdispatcher.sip0000644000076500000240000000542613245233150023310 0ustar philstaff00000000000000// qabstracteventdispatcher.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractEventDispatcher : QObject { %TypeHeaderCode #include %End public: struct TimerInfo { %TypeHeaderCode #include %End int timerId; int interval; Qt::TimerType timerType; TimerInfo(int id, int i, Qt::TimerType t); }; explicit QAbstractEventDispatcher(QObject *parent /TransferThis/ = 0); virtual ~QAbstractEventDispatcher(); static QAbstractEventDispatcher *instance(QThread *thread = 0); virtual bool processEvents(QEventLoop::ProcessEventsFlags flags) = 0 /ReleaseGIL/; virtual bool hasPendingEvents() = 0; virtual void registerSocketNotifier(QSocketNotifier *notifier) = 0; virtual void unregisterSocketNotifier(QSocketNotifier *notifier) = 0; int registerTimer(int interval, Qt::TimerType timerType /Constrained/, QObject *object); virtual void registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *object) = 0; virtual bool unregisterTimer(int timerId) = 0; virtual bool unregisterTimers(QObject *object) = 0; virtual QList registeredTimers(QObject *object) const = 0; virtual void wakeUp() = 0; virtual void interrupt() = 0; virtual void flush() = 0; virtual void startingUp(); virtual void closingDown(); virtual int remainingTime(int timerId) = 0; void installNativeEventFilter(QAbstractNativeEventFilter *filterObj); void removeNativeEventFilter(QAbstractNativeEventFilter *filterObj); %If (WS_WIN) virtual bool registerEventNotifier(QWinEventNotifier *notifier) = 0; %End %If (WS_WIN) virtual void unregisterEventNotifier(QWinEventNotifier *notifier) = 0; %End bool filterNativeEvent(const QByteArray &eventType, void *message, long *result); signals: void aboutToBlock(); void awake(); }; PyQt5_gpl-5.10.1/sip/QtCore/qabstractitemmodel.sip0000644000076500000240000003242513245233150022076 0ustar philstaff00000000000000// qabstractitemmodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QModelIndex { %TypeHeaderCode #include %End public: QModelIndex(); QModelIndex child(int arow, int acolumn) const; int row() const; int column() const; QVariant data(int role = Qt::DisplayRole) const; Qt::ItemFlags flags() const; SIP_PYOBJECT internalPointer() const; %MethodCode sipRes = reinterpret_cast(sipCpp->internalPointer()); if (!sipRes) sipRes = Py_None; Py_INCREF(sipRes); %End SIP_PYOBJECT internalId() const /TypeHint="int"/; %MethodCode // Python needs to treat the result as an unsigned value (which may not happen // on 64 bit systems). Instead we get the real value as it is stored (as a // void *) and let Python convert that. sipRes = PyLong_FromVoidPtr(sipCpp->internalPointer()); %End const QAbstractItemModel *model() const; bool isValid() const; QModelIndex parent() const; QModelIndex sibling(int arow, int acolumn) const; bool operator==(const QModelIndex &other) const; bool operator<(const QModelIndex &other) const; bool operator!=(const QModelIndex &other) const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; class QPersistentModelIndex { %TypeHeaderCode #include %End public: QPersistentModelIndex(); QPersistentModelIndex(const QModelIndex &index); QPersistentModelIndex(const QPersistentModelIndex &other); ~QPersistentModelIndex(); int row() const; int column() const; QVariant data(int role = Qt::DisplayRole) const; Qt::ItemFlags flags() const; QModelIndex parent() const; QModelIndex sibling(int row, int column) const; QModelIndex child(int row, int column) const; const QAbstractItemModel *model() const; bool isValid() const; void swap(QPersistentModelIndex &other /Constrained/); operator const QModelIndex &() const; bool operator<(const QPersistentModelIndex &other) const; bool operator==(const QPersistentModelIndex &other) const; bool operator==(const QModelIndex &other) const; bool operator!=(const QPersistentModelIndex &other) const; bool operator!=(const QModelIndex &other) const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; typedef QList QModelIndexList; class QAbstractItemModel : QObject { %TypeHeaderCode #include %End public: enum LayoutChangeHint { NoLayoutChangeHint, VerticalSortHint, HorizontalSortHint, }; explicit QAbstractItemModel(QObject *parent /TransferThis/ = 0); virtual ~QAbstractItemModel(); bool hasIndex(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const = 0; virtual QModelIndex parent(const QModelIndex &child) const = 0; QObject *parent() const; virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const = 0; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const = 0; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const = 0; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual QMap itemData(const QModelIndex &index) const; virtual bool setItemData(const QModelIndex &index, const QMap &roles); virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const /TransferBack/; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual Qt::DropActions supportedDropActions() const; virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual void fetchMore(const QModelIndex &parent); virtual bool canFetchMore(const QModelIndex &parent) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QModelIndex buddy(const QModelIndex &index) const; virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchStartsWith|Qt::MatchWrap) const; virtual QSize span(const QModelIndex &index) const; signals: void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector()); void headerDataChanged(Qt::Orientation orientation, int first, int last); void layoutAboutToBeChanged(const QList &parents = QList(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint); void layoutChanged(const QList &parents = QList(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint); void rowsAboutToBeInserted(const QModelIndex &parent, int first, int last); void rowsInserted(const QModelIndex &parent, int first, int last); void rowsAboutToBeRemoved(const QModelIndex &parent, int first, int last); void rowsRemoved(const QModelIndex &parent, int first, int last); void columnsAboutToBeInserted(const QModelIndex &parent, int first, int last); void columnsInserted(const QModelIndex &parent, int first, int last); void columnsAboutToBeRemoved(const QModelIndex &parent, int first, int last); void columnsRemoved(const QModelIndex &parent, int first, int last); void modelAboutToBeReset(); void modelReset(); public slots: virtual bool submit(); virtual void revert(); protected: void encodeData(const QModelIndexList &indexes, QDataStream &stream) const; bool decodeData(int row, int column, const QModelIndex &parent, QDataStream &stream); void beginInsertRows(const QModelIndex &parent, int first, int last); void endInsertRows(); void beginRemoveRows(const QModelIndex &parent, int first, int last); void endRemoveRows(); void beginInsertColumns(const QModelIndex &parent, int first, int last); void endInsertColumns(); void beginRemoveColumns(const QModelIndex &parent, int first, int last); void endRemoveColumns(); QModelIndexList persistentIndexList() const; void changePersistentIndex(const QModelIndex &from, const QModelIndex &to); void changePersistentIndexList(const QModelIndexList &from, const QModelIndexList &to); public: bool insertRow(int row, const QModelIndex &parent = QModelIndex()); bool insertColumn(int column, const QModelIndex &parent = QModelIndex()); bool removeRow(int row, const QModelIndex &parent = QModelIndex()); bool removeColumn(int column, const QModelIndex &parent = QModelIndex()); virtual Qt::DropActions supportedDragActions() const; virtual QHash roleNames() const; protected: QModelIndex createIndex(int row, int column, SIP_PYOBJECT object = 0) const [QModelIndex (int row, int column, void *object = 0)]; %MethodCode // The Qt API is broken (and won't be fixed as it would break binary // compatibility) regarding the internal id of a model index on different // architectures (32 vs 64 bits). We choose to work around the breakage as it // is fairly subtle and continues to catch people out. Instead of letting Qt // convert betweed an integer id and a pointer id (the internal format used by // Qt) we let Python do it. void *ptr; if (a2) { // Try and convert it to a Python long and fallback to the object's // address if it fails. ptr = PyLong_AsVoidPtr(a2); if (PyErr_Occurred()) { PyErr_Clear(); ptr = a2; } } else { ptr = 0; } #if defined(SIP_PROTECTED_IS_PUBLIC) sipRes = new QModelIndex(sipCpp->createIndex(a0, a1, ptr)); #else sipRes = new QModelIndex(sipCpp->sipProtect_createIndex(a0, a1, ptr)); #endif %End signals: void rowsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow); void rowsMoved(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int row); void columnsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn); void columnsMoved(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int column); protected: bool beginMoveRows(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationRow); void endMoveRows(); bool beginMoveColumns(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationColumn); void endMoveColumns(); void beginResetModel() /ReleaseGIL/; void endResetModel() /ReleaseGIL/; protected slots: %If (Qt_5_1_0 -) void resetInternalData(); %End public: virtual bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const; virtual bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild); virtual bool moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild); bool moveRow(const QModelIndex &sourceParent, int sourceRow, const QModelIndex &destinationParent, int destinationChild); bool moveColumn(const QModelIndex &sourceParent, int sourceColumn, const QModelIndex &destinationParent, int destinationChild); private: QAbstractItemModel(const QAbstractItemModel &); }; class QAbstractTableModel : QAbstractItemModel { %TypeHeaderCode #include %End public: explicit QAbstractTableModel(QObject *parent /TransferThis/ = 0); virtual ~QAbstractTableModel(); virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); %If (Qt_5_1_0 -) virtual Qt::ItemFlags flags(const QModelIndex &index) const; %End %If (Qt_5_2_0 -) QObject *parent() const; %End %If (Qt_5_5_0 -) virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; %End private: QAbstractTableModel(const QAbstractTableModel &); virtual QModelIndex parent(const QModelIndex &child) const; virtual bool hasChildren(const QModelIndex &parent) const; }; class QAbstractListModel : QAbstractItemModel { %TypeHeaderCode #include %End public: explicit QAbstractListModel(QObject *parent /TransferThis/ = 0); virtual ~QAbstractListModel(); virtual QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); %If (Qt_5_1_0 -) virtual Qt::ItemFlags flags(const QModelIndex &index) const; %End %If (Qt_5_2_0 -) QObject *parent() const; %End %If (Qt_5_5_0 -) virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; %End private: QAbstractListModel(const QAbstractListModel &); virtual QModelIndex parent(const QModelIndex &child) const; virtual int columnCount(const QModelIndex &parent) const; virtual bool hasChildren(const QModelIndex &parent) const; }; PyQt5_gpl-5.10.1/sip/QtCore/qabstractnativeeventfilter.sip0000644000076500000240000000245613245233150023656 0ustar philstaff00000000000000// qabstractnativeeventfilter.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractNativeEventFilter { %TypeHeaderCode #include %End public: QAbstractNativeEventFilter(); virtual ~QAbstractNativeEventFilter(); virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) = 0; private: QAbstractNativeEventFilter(const QAbstractNativeEventFilter &); }; PyQt5_gpl-5.10.1/sip/QtCore/qabstractproxymodel.sip0000644000076500000240000000720413245233150022316 0ustar philstaff00000000000000// qabstractproxymodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractProxyModel : QAbstractItemModel { %TypeHeaderCode #include %End public: explicit QAbstractProxyModel(QObject *parent /TransferThis/ = 0); virtual ~QAbstractProxyModel(); virtual void setSourceModel(QAbstractItemModel *sourceModel /KeepReference/); QAbstractItemModel *sourceModel() const; virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const = 0; virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const = 0; virtual QItemSelection mapSelectionToSource(const QItemSelection &selection) const; virtual QItemSelection mapSelectionFromSource(const QItemSelection &selection) const; virtual bool submit(); virtual void revert(); virtual QVariant data(const QModelIndex &proxyIndex, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); %If (Qt_5_5_0 -) virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; %End %If (- Qt_5_5_0) virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const; %End virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual QMap itemData(const QModelIndex &index) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual bool setItemData(const QModelIndex &index, const QMap &roles); virtual QModelIndex buddy(const QModelIndex &index) const; virtual bool canFetchMore(const QModelIndex &parent) const; virtual void fetchMore(const QModelIndex &parent); virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QSize span(const QModelIndex &index) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const /TransferBack/; virtual QStringList mimeTypes() const; virtual Qt::DropActions supportedDropActions() const; virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; protected slots: %If (Qt_5_1_0 -) void resetInternalData(); %End signals: void sourceModelChanged(); public: %If (Qt_5_4_0 -) virtual bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const; %End %If (Qt_5_4_0 -) virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); %End %If (Qt_5_4_0 -) virtual Qt::DropActions supportedDragActions() const; %End private: QAbstractProxyModel(const QAbstractProxyModel &); }; PyQt5_gpl-5.10.1/sip/QtCore/qabstractstate.sip0000644000076500000240000000301313245233150021226 0ustar philstaff00000000000000// qabstractstate.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractState : QObject { %TypeHeaderCode #include %End public: virtual ~QAbstractState(); QState *parentState() const; QStateMachine *machine() const; %If (Qt_5_4_0 -) bool active() const; %End signals: %If (Qt_5_4_0 -) void activeChanged(bool active); %End void entered(); void exited(); protected: QAbstractState(QState *parent /TransferThis/ = 0); virtual void onEntry(QEvent *event) = 0; virtual void onExit(QEvent *event) = 0; virtual bool event(QEvent *e); private: QAbstractState(const QAbstractState &); }; PyQt5_gpl-5.10.1/sip/QtCore/qabstracttransition.sip0000644000076500000240000000674413245233150022316 0ustar philstaff00000000000000// qabstracttransition.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractTransition : QObject { %TypeHeaderCode #include %End public: QAbstractTransition(QState *sourceState /TransferThis/ = 0); virtual ~QAbstractTransition(); QState *sourceState() const; QAbstractState *targetState() const; void setTargetState(QAbstractState *target /KeepReference=0/); QList targetStates() const; void setTargetStates(const QList &targets /KeepReference=0/); QStateMachine *machine() const; void addAnimation(QAbstractAnimation *animation /GetWrapper/); %MethodCode // We want to keep a reference to the animation but this is in addition to the // existing ones and does not replace them - so we can't use /KeepReference/. sipCpp->addAnimation(a0); // Use the user object as a list of the references. PyObject *user = sipGetUserObject((sipSimpleWrapper *)sipSelf); if (!user) { user = PyList_New(0); sipSetUserObject((sipSimpleWrapper *)sipSelf, user); } if (user) PyList_Append(user, a0Wrapper); %End void removeAnimation(QAbstractAnimation *animation /GetWrapper/); %MethodCode // Discard the extra animation reference that we took in addAnimation(). sipCpp->removeAnimation(a0); // Use the user object as a list of the references. PyObject *user = sipGetUserObject((sipSimpleWrapper *)sipSelf); if (user) { Py_ssize_t i = 0; // Note that we deal with an object appearing in the list more than once. while (i < PyList_Size(user)) if (PyList_GetItem(user, i) == a0Wrapper) PyList_SetSlice(user, i, i + 1, NULL); else ++i; } %End QList animations() const; signals: void triggered(); %If (Qt_5_4_0 -) void targetStateChanged(); %End %If (Qt_5_4_0 -) void targetStatesChanged(); %End protected: virtual bool eventTest(QEvent *event) = 0; virtual void onTransition(QEvent *event) = 0; virtual bool event(QEvent *e); public: %If (Qt_5_5_0 -) enum TransitionType { ExternalTransition, InternalTransition, }; %End %If (Qt_5_5_0 -) QAbstractTransition::TransitionType transitionType() const; %End %If (Qt_5_5_0 -) void setTransitionType(QAbstractTransition::TransitionType type); %End private: QAbstractTransition(const QAbstractTransition &); }; PyQt5_gpl-5.10.1/sip/QtCore/qanimationgroup.sip0000644000076500000240000000325113245233150021422 0ustar philstaff00000000000000// qanimationgroup.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAnimationGroup : QAbstractAnimation { %TypeHeaderCode #include %End public: QAnimationGroup(QObject *parent /TransferThis/ = 0); virtual ~QAnimationGroup(); QAbstractAnimation *animationAt(int index) const; int animationCount() const; int indexOfAnimation(QAbstractAnimation *animation) const; void addAnimation(QAbstractAnimation *animation /Transfer/); void insertAnimation(int index, QAbstractAnimation *animation /Transfer/); void removeAnimation(QAbstractAnimation *animation /TransferBack/); QAbstractAnimation *takeAnimation(int index) /TransferBack/; void clear(); protected: virtual bool event(QEvent *event); private: QAnimationGroup(const QAnimationGroup &); }; PyQt5_gpl-5.10.1/sip/QtCore/qbasictimer.sip0000644000076500000240000000233113245233150020506 0ustar philstaff00000000000000// qbasictimer.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBasicTimer { %TypeHeaderCode #include %End public: QBasicTimer(); ~QBasicTimer(); bool isActive() const; int timerId() const; void start(int msec, Qt::TimerType timerType, QObject *obj); void start(int msec, QObject *obj); void stop(); }; PyQt5_gpl-5.10.1/sip/QtCore/qbitarray.sip0000644000076500000240000000517513245233150020212 0ustar philstaff00000000000000// qbitarray.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBitArray { %TypeHeaderCode #include %End %TypeCode // This is needed by __hash__(). #include %End public: QBitArray(); QBitArray(int size, bool value = false); QBitArray(const QBitArray &other); int size() const; int count() const /__len__/; bool isEmpty() const; bool isNull() const; void resize(int size); void detach(); bool isDetached() const; void clear(); QBitArray &operator&=(const QBitArray &); QBitArray &operator|=(const QBitArray &); QBitArray &operator^=(const QBitArray &); QBitArray operator~() const; bool operator==(const QBitArray &a) const; bool operator!=(const QBitArray &a) const; void fill(bool val, int first, int last); void truncate(int pos); bool fill(bool value, int size = -1); bool testBit(int i) const; void setBit(int i); void clearBit(int i); void setBit(int i, bool val); bool toggleBit(int i); bool operator[](int i) const; %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = sipCpp->operator[]((int)idx); %End bool at(int i) const; int count(bool on) const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End void swap(QBitArray &other /Constrained/); }; QBitArray operator&(const QBitArray &, const QBitArray &); QBitArray operator|(const QBitArray &, const QBitArray &); QBitArray operator^(const QBitArray &, const QBitArray &); QDataStream &operator<<(QDataStream &, const QBitArray & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QBitArray & /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtCore/qbuffer.sip0000644000076500000240000000575213245233150017647 0ustar philstaff00000000000000// qbuffer.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBuffer : QIODevice { %TypeHeaderCode #include %End public: explicit QBuffer(QObject *parent /TransferThis/ = 0); QBuffer(QByteArray *byteArray /Constrained/, QObject *parent /TransferThis/ = 0); virtual ~QBuffer(); QByteArray &buffer(); const QByteArray &data() const; void setBuffer(QByteArray *a /Constrained/); void setData(const QByteArray &data); void setData(const char *adata /Array/, int alen /ArraySize/); virtual bool open(QIODevice::OpenMode openMode); virtual void close(); virtual qint64 size() const; virtual qint64 pos() const; virtual bool seek(qint64 off); virtual bool atEnd() const; virtual bool canReadLine() const; protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /TypeHint="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QBuffer::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) /ReleaseGIL/; virtual void connectNotify(const QMetaMethod &); virtual void disconnectNotify(const QMetaMethod &); private: QBuffer(const QBuffer &); }; PyQt5_gpl-5.10.1/sip/QtCore/qbytearray.sip0000644000076500000240000003263413245233150020377 0ustar philstaff00000000000000// qbytearray.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QByteArray /TypeHintIn="Union[QByteArray, bytes, bytearray]"/ { %TypeHeaderCode #include %End %TypeCode // This is needed by __hash__(). #include // Convenience function for converting a QByteArray to a Python str object. static PyObject *QByteArrayToPyStr(QByteArray *ba) { char *data = ba->data(); if (data) // QByteArrays may have embedded '\0's so set the size explicitly. return SIPBytes_FromStringAndSize(data, ba->size()); return SIPBytes_FromString(""); } %End %ConvertToTypeCode // We have to be very careful about what we allow to be converted to a // QByteArray and to a QString as we need to take into account the v1 and v2 // APIs and Python v2.x and v3.x. // // QSvgRenderer() is a good example of what needs to work "naturally". This // has a ctor that takes a QString argument that is the name of the SVG file. // It has another ctor that takes a QByteArray argument that is the SVG data. // // In Python v2.x we want a str object to be interpreted as the name of the // file (as that is the historical behaviour). This has the following // implications. // // - The QString version of the ctor must appear before the QByteArray version // in the .sip file. This rule should be applied wherever a similar // situation arises. // - A QString must not automatically convert a QByteArray. // - QByteArray must also exist in the v2 API. // // In Python v3.x we want a bytes object to be used wherever a QByteArray is // expected. This means that a QString must not automatically convert a bytes // object. // // In PyQt v5.4 and earlier a QByteArray could be created from a Latin-1 // encoded string. This was a mistaken attempt to ease the porting of Python2 // code to Python3. if (sipIsErr == NULL) return (PyByteArray_Check(sipPy) || SIPBytes_Check(sipPy) || sipCanConvertToType(sipPy, sipType_QByteArray, SIP_NO_CONVERTORS)); if (PyByteArray_Check(sipPy)) { *sipCppPtr = new QByteArray(PyByteArray_AsString(sipPy), PyByteArray_Size(sipPy)); return sipGetState(sipTransferObj); } if (SIPBytes_Check(sipPy)) { *sipCppPtr = new QByteArray(SIPBytes_AsString(sipPy), SIPBytes_Size(sipPy)); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QByteArray, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %BIGetBufferCode #if defined(Py_LIMITED_API) Q_UNUSED(sipSelf); sipBuffer->bd_buffer = sipCpp->data(); sipBuffer->bd_length = sipCpp->size(); sipBuffer->bd_readonly = 0; sipRes = 0; #else sipRes = PyBuffer_FillInfo(sipBuffer, sipSelf, sipCpp->data(), sipCpp->size(), 0, sipFlags); #endif %End %BIGetReadBufferCode if (sipSegment != 0) { PyErr_SetString(PyExc_SystemError, "accessing non-existent QByteArray segment"); sipRes = -1; } else { *sipPtrPtr = (void *)sipCpp->data(); sipRes = sipCpp->size(); } %End %BIGetSegCountCode if (sipLenPtr) *sipLenPtr = sipCpp->size(); sipRes = 1; %End %BIGetCharBufferCode if (sipSegment != 0) { PyErr_SetString(PyExc_SystemError, "accessing non-existent QByteArray segment"); sipRes = -1; } else { *sipPtrPtr = (void *)sipCpp->data(); sipRes = sipCpp->size(); } %End %PickleCode #if PY_MAJOR_VERSION >= 3 sipRes = Py_BuildValue((char *)"(y#)", sipCpp->data(), sipCpp->size()); #else sipRes = Py_BuildValue((char *)"(s#)", sipCpp->data(), sipCpp->size()); #endif %End public: QByteArray(); QByteArray(int size, char c); QByteArray(const QByteArray &a); ~QByteArray(); void resize(int size); QByteArray &fill(char ch, int size = -1); void clear(); int indexOf(const QByteArray &ba, int from = 0) const; int indexOf(const QString &str, int from = 0) const; int lastIndexOf(const QByteArray &ba, int from = -1) const; int lastIndexOf(const QString &str, int from = -1) const; int count(const QByteArray &a) const; QByteArray left(int len) const; QByteArray right(int len) const; QByteArray mid(int pos, int length = -1) const; bool startsWith(const QByteArray &a) const; bool endsWith(const QByteArray &a) const; void truncate(int pos); void chop(int n); QByteArray toLower() const; QByteArray toUpper() const; QByteArray trimmed() const; QByteArray simplified() const; QByteArray leftJustified(int width, char fill = ' ', bool truncate = false) const; QByteArray rightJustified(int width, char fill = ' ', bool truncate = false) const; QByteArray &prepend(const QByteArray &a); QByteArray &append(const QByteArray &a); QByteArray &append(const QString &s); QByteArray &insert(int i, const QByteArray &a); QByteArray &insert(int i, const QString &s); QByteArray &remove(int index, int len); QByteArray &replace(int index, int len, const QByteArray &s); QByteArray &replace(const QByteArray &before, const QByteArray &after); QByteArray &replace(const QString &before, const QByteArray &after); QList split(char sep) const; QByteArray &operator+=(const QByteArray &a); QByteArray &operator+=(const QString &s); bool operator==(const QString &s2) const; bool operator!=(const QString &s2) const; bool operator<(const QString &s2) const; bool operator>(const QString &s2) const; bool operator<=(const QString &s2) const; bool operator>=(const QString &s2) const; short toShort(bool *ok = 0, int base = 10) const; ushort toUShort(bool *ok = 0, int base = 10) const; int toInt(bool *ok = 0, int base = 10) const; uint toUInt(bool *ok = 0, int base = 10) const; long toLong(bool *ok = 0, int base = 10) const; ulong toULong(bool *ok = 0, int base = 10) const; qlonglong toLongLong(bool *ok = 0, int base = 10) const; qulonglong toULongLong(bool *ok = 0, int base = 10) const; float toFloat(bool *ok = 0) const; double toDouble(bool *ok = 0) const; QByteArray toBase64() const; QByteArray &setNum(int n /Constrained/, int base = 10); QByteArray &setNum(double n /Constrained/, char format = 'g', int precision = 6); QByteArray &setNum(qlonglong n, int base = 10); QByteArray &setNum(qulonglong n, int base = 10); static QByteArray number(int n /Constrained/, int base = 10); static QByteArray number(double n /Constrained/, char format = 'g', int precision = 6); static QByteArray number(qlonglong n, int base = 10); static QByteArray number(qulonglong n, int base = 10); static QByteArray fromBase64(const QByteArray &base64); static QByteArray fromRawData(const char * /Array/, int size /ArraySize/); static QByteArray fromHex(const QByteArray &hexEncoded); int count() const /__len__/; int length() const; bool isNull() const; int size() const; char at(int i) const; char operator[](int i) const; %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = sipCpp->operator[]((int)idx); %End QByteArray operator[](SIP_PYSLICE slice) const; %MethodCode Py_ssize_t len, start, stop, step, slicelength, i; len = sipCpp->length(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { sipRes = new QByteArray(); for (i = 0; i < slicelength; ++i) { sipRes -> append(sipCpp->at(start)); start += step; } } %End int __contains__(const QByteArray &a) const; %MethodCode // It looks like you can't assign QBool to int. sipRes = bool(sipCpp->contains(*a0)); %End long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End SIP_PYOBJECT __str__() const /TypeHint="str"/; %MethodCode sipRes = QByteArrayToPyStr(sipCpp); #if PY_MAJOR_VERSION >= 3 PyObject *repr = PyObject_Repr(sipRes); if (repr) { Py_DECREF(sipRes); sipRes = repr; } #endif %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QByteArray()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QByteArray()"); #endif } else { PyObject *str = QByteArrayToPyStr(sipCpp); if (str) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QByteArray(%R)", str); #else sipRes = PyString_FromString("PyQt5.QtCore.QByteArray("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(str)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif Py_DECREF(str); } } %End QByteArray operator*(int m) const; %MethodCode sipRes = new QByteArray(); while (a0-- > 0) *sipRes += *sipCpp; %End QByteArray &operator*=(int m); %MethodCode QByteArray orig(*sipCpp); sipCpp->clear(); while (a0-- > 0) *sipCpp += orig; %End bool isEmpty() const; SIP_PYOBJECT data() /TypeHint="Py_v3:bytes;str"/; %MethodCode // QByteArrays may contain embedded '\0's so set the size explicitly. char *res = sipCpp->data(); int len = sipCpp->size(); if (res) { if ((sipRes = SIPBytes_FromStringAndSize(res, len)) == NULL) sipIsErr = 1; } else { Py_INCREF(Py_None); sipRes = Py_None; } %End int capacity() const; void reserve(int size); void squeeze(); void push_back(const QByteArray &a); void push_front(const QByteArray &a); bool contains(const QByteArray &a) const; QByteArray toHex() const; QByteArray toPercentEncoding(const QByteArray &exclude = QByteArray(), const QByteArray &include = QByteArray(), char percent = '%') const; static QByteArray fromPercentEncoding(const QByteArray &input, char percent = '%'); QByteArray repeated(int times) const; void swap(QByteArray &other /Constrained/); %If (Qt_5_2_0 -) enum Base64Option { Base64Encoding, Base64UrlEncoding, KeepTrailingEquals, OmitTrailingEquals, }; %End %If (Qt_5_2_0 -) typedef QFlags Base64Options; %End %If (Qt_5_2_0 -) QByteArray toBase64(QByteArray::Base64Options options) const; %End %If (Qt_5_2_0 -) static QByteArray fromBase64(const QByteArray &base64, QByteArray::Base64Options options); %End %If (Qt_5_7_0 -) QByteArray &prepend(int count, char c /Encoding="None"/); %End %If (Qt_5_7_0 -) QByteArray &append(int count, char c /Encoding="None"/); %End %If (Qt_5_7_0 -) QByteArray &insert(int i, int count, char c /Encoding="None"/); %End %If (Qt_5_9_0 -) QByteArray toHex(char separator) const; %End %If (Qt_5_10_0 -) QByteArray chopped(int len) const; %End }; bool operator==(const QByteArray &a1, const QByteArray &a2); bool operator!=(const QByteArray &a1, const QByteArray &a2); bool operator<(const QByteArray &a1, const QByteArray &a2); bool operator<=(const QByteArray &a1, const QByteArray &a2); bool operator>(const QByteArray &a1, const QByteArray &a2); bool operator>=(const QByteArray &a1, const QByteArray &a2); const QByteArray operator+(const QByteArray &a1, const QByteArray &a2); QDataStream &operator<<(QDataStream &, const QByteArray & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QByteArray & /Constrained/) /ReleaseGIL/; QByteArray qCompress(const QByteArray &data, int compressionLevel = -1); QByteArray qUncompress(const QByteArray &data); %If (Qt_5_2_0 -) QFlags operator|(QByteArray::Base64Option f1, QFlags f2); %End quint16 qChecksum(const char *s /Array/, uint len /ArraySize/); %If (Qt_5_9_0 -) quint16 qChecksum(const char *s /Array/, uint len /ArraySize/, Qt::ChecksumType standard); %End PyQt5_gpl-5.10.1/sip/QtCore/qbytearraymatcher.sip0000644000076500000240000000250613245233150021736 0ustar philstaff00000000000000// qbytearraymatcher.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QByteArrayMatcher { %TypeHeaderCode #include %End public: QByteArrayMatcher(); explicit QByteArrayMatcher(const QByteArray &pattern); QByteArrayMatcher(const QByteArrayMatcher &other); ~QByteArrayMatcher(); void setPattern(const QByteArray &pattern); int indexIn(const QByteArray &ba, int from = 0) const; QByteArray pattern() const; }; PyQt5_gpl-5.10.1/sip/QtCore/qchar.sip0000644000076500000240000000356113245233150017307 0ustar philstaff00000000000000// qchar.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // QChar mapped type. %MappedType QChar /TypeHint="str",TypeHintValue="''"/ { %TypeHeaderCode #include %End %ConvertToTypeCode if (sipIsErr == NULL) #if PY_MAJOR_VERSION < 3 return (PyString_Check(sipPy) || PyUnicode_Check(sipPy)); #else return PyUnicode_Check(sipPy); #endif #if PY_MAJOR_VERSION < 3 if (PyString_Check(sipPy)) { if (PyString_Size(sipPy) != 1) { PyErr_SetString(PyExc_ValueError, "string of length 1 expected"); *sipIsErr = 1; return 0; } *sipCppPtr = new QChar(*PyString_AsString(sipPy)); return sipGetState(sipTransferObj); } #endif QString qs = qpycore_PyObject_AsQString(sipPy); if (qs.size() != 1) { PyErr_SetString(PyExc_ValueError, "string of length 1 expected"); *sipIsErr = 1; return 0; } *sipCppPtr = new QChar(qs.at(0)); return sipGetState(sipTransferObj); %End %ConvertFromTypeCode return qpycore_PyObject_FromQString(QString(*sipCpp)); %End }; PyQt5_gpl-5.10.1/sip/QtCore/qcollator.sip0000644000076500000240000000401013245233150020177 0ustar philstaff00000000000000// qcollator.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QCollatorSortKey { %TypeHeaderCode #include %End public: QCollatorSortKey(const QCollatorSortKey &other); ~QCollatorSortKey(); void swap(QCollatorSortKey &other /Constrained/); int compare(const QCollatorSortKey &key) const; private: QCollatorSortKey(); }; %End %If (Qt_5_2_0 -) bool operator<(const QCollatorSortKey &lhs, const QCollatorSortKey &rhs); %End %If (Qt_5_2_0 -) class QCollator { %TypeHeaderCode #include %End public: explicit QCollator(const QLocale &locale = QLocale()); QCollator(const QCollator &); ~QCollator(); void swap(QCollator &other /Constrained/); void setLocale(const QLocale &locale); QLocale locale() const; Qt::CaseSensitivity caseSensitivity() const; void setCaseSensitivity(Qt::CaseSensitivity cs); void setNumericMode(bool on); bool numericMode() const; void setIgnorePunctuation(bool on); bool ignorePunctuation() const; int compare(const QString &s1, const QString &s2) const; QCollatorSortKey sortKey(const QString &string) const; }; %End PyQt5_gpl-5.10.1/sip/QtCore/qcommandlineoption.sip0000644000076500000240000000567013245233150022114 0ustar philstaff00000000000000// qcommandlineoption.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QCommandLineOption { %TypeHeaderCode #include %End public: %If (Qt_5_4_0 -) explicit QCommandLineOption(const QString &name); %End %If (Qt_5_4_0 -) explicit QCommandLineOption(const QStringList &names); %End %If (Qt_5_4_0 -) QCommandLineOption(const QString &name, const QString &description, const QString &valueName = QString(), const QString &defaultValue = QString()); %End %If (- Qt_5_4_0) QCommandLineOption(const QString &name, const QString &description = QString(), const QString &valueName = QString(), const QString &defaultValue = QString()); %End %If (Qt_5_4_0 -) QCommandLineOption(const QStringList &names, const QString &description, const QString &valueName = QString(), const QString &defaultValue = QString()); %End %If (- Qt_5_4_0) QCommandLineOption(const QStringList &names, const QString &description = QString(), const QString &valueName = QString(), const QString &defaultValue = QString()); %End QCommandLineOption(const QCommandLineOption &other); ~QCommandLineOption(); void swap(QCommandLineOption &other /Constrained/); QStringList names() const; void setValueName(const QString &name); QString valueName() const; void setDescription(const QString &description); QString description() const; void setDefaultValue(const QString &defaultValue); void setDefaultValues(const QStringList &defaultValues); QStringList defaultValues() const; %If (Qt_5_6_0 -) void setHidden(bool hidden); %End %If (Qt_5_6_0 -) bool isHidden() const; %End %If (Qt_5_8_0 -) enum Flag { HiddenFromHelp, ShortOptionStyle, }; %End %If (Qt_5_8_0 -) typedef QFlags Flags; %End %If (Qt_5_8_0 -) QCommandLineOption::Flags flags() const; %End %If (Qt_5_8_0 -) void setFlags(QCommandLineOption::Flags aflags); %End }; %End %If (Qt_5_8_0 -) QFlags operator|(QCommandLineOption::Flag f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtCore/qcommandlineparser.sip0000644000076500000240000000557113245233150022100 0ustar philstaff00000000000000// qcommandlineparser.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QCommandLineParser { %TypeHeaderCode #include %End public: QCommandLineParser(); ~QCommandLineParser(); enum SingleDashWordOptionMode { ParseAsCompactedShortOptions, ParseAsLongOptions, }; void setSingleDashWordOptionMode(QCommandLineParser::SingleDashWordOptionMode parsingMode); bool addOption(const QCommandLineOption &commandLineOption); QCommandLineOption addVersionOption(); QCommandLineOption addHelpOption(); void setApplicationDescription(const QString &description); QString applicationDescription() const; void addPositionalArgument(const QString &name, const QString &description, const QString &syntax = QString()); void clearPositionalArguments(); void process(const QStringList &arguments) /ReleaseGIL/; void process(const QCoreApplication &app) /ReleaseGIL/; bool parse(const QStringList &arguments); QString errorText() const; bool isSet(const QString &name) const; QString value(const QString &name) const; QStringList values(const QString &name) const; bool isSet(const QCommandLineOption &option) const; QString value(const QCommandLineOption &option) const; QStringList values(const QCommandLineOption &option) const; QStringList positionalArguments() const; QStringList optionNames() const; QStringList unknownOptionNames() const; void showHelp(int exitCode = 0) /ReleaseGIL/; QString helpText() const; %If (Qt_5_4_0 -) bool addOptions(const QList &options); %End %If (Qt_5_4_0 -) void showVersion(); %End %If (Qt_5_6_0 -) enum OptionsAfterPositionalArgumentsMode { ParseAsOptions, ParseAsPositionalArguments, }; %End %If (Qt_5_6_0 -) void setOptionsAfterPositionalArgumentsMode(QCommandLineParser::OptionsAfterPositionalArgumentsMode mode); %End private: QCommandLineParser(const QCommandLineParser &); }; %End PyQt5_gpl-5.10.1/sip/QtCore/qcoreapplication.sip0000644000076500000240000002343613245233150021551 0ustar philstaff00000000000000// qcoreapplication.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QCoreApplication : QObject { %TypeHeaderCode #include %End public: QCoreApplication(SIP_PYLIST argv /TypeHint="List[str]"/) /PostHook=__pyQtQAppHook__/ [(int &argc, char **argv)]; %MethodCode // The Python interface is a list of argument strings that is modified. int argc; char **argv; // Convert the list. if ((argv = pyqt5_from_argv_list(a0, argc)) == NULL) sipIsErr = 1; else { // Create it now the arguments are right. static int nargc; nargc = argc; Py_BEGIN_ALLOW_THREADS sipCpp = new sipQCoreApplication(nargc, argv); Py_END_ALLOW_THREADS // Now modify the original list. pyqt5_update_argv_list(a0, argc, argv); } %End virtual ~QCoreApplication() /ReleaseGIL/; static void setOrganizationDomain(const QString &orgDomain); static QString organizationDomain(); static void setOrganizationName(const QString &orgName); static QString organizationName(); static void setApplicationName(const QString &application); static QString applicationName(); static QStringList arguments(); static QCoreApplication *instance(); static int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %If (Py_v3) static int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %End static void processEvents(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents) /ReleaseGIL/; static void processEvents(QEventLoop::ProcessEventsFlags flags, int maxtime) /ReleaseGIL/; static void exit(int returnCode = 0); static bool sendEvent(QObject *receiver, QEvent *event) /ReleaseGIL/; static void postEvent(QObject *receiver, QEvent *event /Transfer/, int priority = Qt::NormalEventPriority); static void sendPostedEvents(QObject *receiver = 0, int eventType = 0) /ReleaseGIL/; static void removePostedEvents(QObject *receiver, int eventType = 0); static bool hasPendingEvents(); virtual bool notify(QObject *, QEvent *) /ReleaseGIL/; static bool startingUp(); static bool closingDown(); static QString applicationDirPath(); static QString applicationFilePath(); static void setLibraryPaths(const QStringList &); static QStringList libraryPaths(); static void addLibraryPath(const QString &); static void removeLibraryPath(const QString &); static bool installTranslator(QTranslator *messageFile); static bool removeTranslator(QTranslator *messageFile); static QString translate(const char *context, const char *sourceText /Encoding="UTF-8"/, const char *disambiguation = 0, int n = -1); static void flush() /ReleaseGIL/; static void setAttribute(Qt::ApplicationAttribute attribute, bool on = true); static bool testAttribute(Qt::ApplicationAttribute attribute); public slots: static void quit(); signals: void aboutToQuit(); protected: virtual bool event(QEvent *); public: static void setApplicationVersion(const QString &version); static QString applicationVersion(); static qint64 applicationPid(); static QAbstractEventDispatcher *eventDispatcher(); static void setEventDispatcher(QAbstractEventDispatcher *eventDispatcher /Transfer/); static bool isQuitLockEnabled(); static void setQuitLockEnabled(bool enabled); void installNativeEventFilter(QAbstractNativeEventFilter *filterObj); void removeNativeEventFilter(QAbstractNativeEventFilter *filterObj); %If (Qt_5_3_0 -) static void setSetuidAllowed(bool allow); %End %If (Qt_5_3_0 -) static bool isSetuidAllowed(); %End private: QCoreApplication(const QCoreApplication &); }; void qAddPostRoutine(SIP_PYCALLABLE); %MethodCode // Add it to the list of post routines if it already exists. if (qtcore_PostRoutines != NULL) { // See if there is an empty slot. bool app = true; for (Py_ssize_t i = 0; i < PyList_Size(qtcore_PostRoutines); ++i) if (PyList_GetItem(qtcore_PostRoutines, i) == Py_None) { Py_INCREF(a0); PyList_SetItem(qtcore_PostRoutines, i, a0); app = false; break; } if (app && PyList_Append(qtcore_PostRoutines, a0) < 0) sipIsErr = 1; } else if ((qtcore_PostRoutines = PyList_New(1)) != NULL) { Py_INCREF(a0); PyList_SetItem(qtcore_PostRoutines, 0, a0); qAddPostRoutine(qtcore_CallPostRoutines); } else { sipIsErr = 1; } %End void qRemovePostRoutine(SIP_PYCALLABLE); %MethodCode // Remove it from the list of post routines if it exists. if (qtcore_PostRoutines != NULL) for (Py_ssize_t i = 0; i < PyList_Size(qtcore_PostRoutines); ++i) if (PyList_GetItem(qtcore_PostRoutines, i) == a0) { Py_INCREF(Py_None); PyList_SetItem(qtcore_PostRoutines, i, Py_None); break; } %End %If (Qt_5_1_0 -) void qAddPreRoutine(SIP_PYCALLABLE routine /TypeHint="Callable[[], None]"/); %MethodCode // Add it to the list of pre routines if it already exists. if (qtcore_PreRoutines != NULL) { if (PyList_Append(qtcore_PreRoutines, a0) < 0) sipIsErr = 1; } else if ((qtcore_PreRoutines = PyList_New(1)) != NULL) { Py_INCREF(a0); PyList_SetItem(qtcore_PreRoutines, 0, a0); qAddPreRoutine(qtcore_CallPreRoutines); } else { sipIsErr = 1; } %End %End // Module code needed by qAddPreRoutine, qAddPostRoutine() and qRemovePostRoutine(). %ModuleCode #if QT_VERSION >= 0x050100 // The list of Python pre routines. static PyObject *qtcore_PreRoutines = NULL; // Call all of the registered Python pre routines. static void qtcore_CallPreRoutines() { for (Py_ssize_t i = 0; i < PyList_Size(qtcore_PreRoutines); ++i) { PyObject *pr = PyList_GetItem(qtcore_PreRoutines, i); if (pr != Py_None) { PyObject *res = PyObject_CallObject(pr, NULL); Py_XDECREF(res); } } } #endif // The list of Python post routines. static PyObject *qtcore_PostRoutines = NULL; // Call all of the registered Python post routines. static void qtcore_CallPostRoutines() { for (Py_ssize_t i = 0; i < PyList_Size(qtcore_PostRoutines); ++i) { PyObject *pr = PyList_GetItem(qtcore_PostRoutines, i); if (pr != Py_None) { PyObject *res = PyObject_CallObject(pr, NULL); Py_XDECREF(res); } } } %End void pyqtRemoveInputHook(); %MethodCode // Clear the Python input hook installed when the module was initialised. PyOS_InputHook = 0; %End void pyqtRestoreInputHook(); %MethodCode // Restore the input hook. PyOS_InputHook = qtcore_input_hook; %End %ModuleCode #include #include #if defined(Q_OS_WIN) #include #include #else #include #endif // This is the input hook that will process events while the interpreter is // waiting for interactive input. extern "C" {static int qtcore_input_hook();} static int qtcore_input_hook() { QCoreApplication *app = QCoreApplication::instance(); if (app && app->thread() == QThread::currentThread()) { #if defined(Q_OS_WIN) QTimer timer; QObject::connect(&timer, SIGNAL(timeout()), app, SLOT(quit())); while (!_kbhit()) { // The delay is based on feedback from users. timer.start(35); QCoreApplication::exec(); timer.stop(); } QObject::disconnect(&timer, SIGNAL(timeout()), app, SLOT(quit())); #else QSocketNotifier notifier(0, QSocketNotifier::Read, 0); QObject::connect(¬ifier, SIGNAL(activated(int)), app, SLOT(quit())); QCoreApplication::exec(); QObject::disconnect(¬ifier, SIGNAL(activated(int)), app, SLOT(quit())); #endif } return 0; } %End %PostInitialisationCode // Process events from the input hook. PyOS_InputHook = qtcore_input_hook; %End %ExportedTypeHintCode # Support for QDate, QDateTime and QTime. import datetime # Convenient type aliases. PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal] PYQT_SLOT = typing.Union[typing.Callable[..., None], QtCore.pyqtBoundSignal] %End %TypeHintCode # Support for QDate, QDateTime and QTime. import datetime # Support for new-style signals and slots. class pyqtSignal: def __init__(self, *types, name: str = ...) -> None: ... class pyqtBoundSignal: def emit(self, *args) -> None: ... # Convenient type aliases. PYQT_SIGNAL = typing.Union[pyqtSignal, pyqtBoundSignal] PYQT_SLOT = typing.Union[typing.Callable[..., None], pyqtBoundSignal] %End PyQt5_gpl-5.10.1/sip/QtCore/qcoreevent.sip0000644000076500000240000001444113245233150020363 0ustar philstaff00000000000000// qcoreevent.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QEvent /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type()) { case QEvent::Timer: sipType = sipType_QTimerEvent; break; case QEvent::ChildAdded: case QEvent::ChildPolished: case QEvent::ChildRemoved: sipType = sipType_QChildEvent; break; case QEvent::DynamicPropertyChange: sipType = sipType_QDynamicPropertyChangeEvent; break; case QEvent::StateMachineSignal: sipType = sipType_QStateMachine_SignalEvent; break; case QEvent::StateMachineWrapped: sipType = sipType_QStateMachine_WrappedEvent; break; default: sipType = 0; } %End public: enum Type { None /PyName=None_/, Timer, MouseButtonPress, MouseButtonRelease, MouseButtonDblClick, MouseMove, KeyPress, KeyRelease, FocusIn, FocusOut, Enter, Leave, Paint, Move, Resize, Show, Hide, Close, ParentChange, ParentAboutToChange, ThreadChange, WindowActivate, WindowDeactivate, ShowToParent, HideToParent, Wheel, WindowTitleChange, WindowIconChange, ApplicationWindowIconChange, ApplicationFontChange, ApplicationLayoutDirectionChange, ApplicationPaletteChange, PaletteChange, Clipboard, MetaCall, SockAct, WinEventAct, DeferredDelete, DragEnter, DragMove, DragLeave, Drop, ChildAdded, ChildPolished, ChildRemoved, PolishRequest, Polish, LayoutRequest, UpdateRequest, UpdateLater, ContextMenu, InputMethod, TabletMove, LocaleChange, LanguageChange, LayoutDirectionChange, TabletPress, TabletRelease, OkRequest, IconDrag, FontChange, EnabledChange, ActivationChange, StyleChange, IconTextChange, ModifiedChange, MouseTrackingChange, WindowBlocked, WindowUnblocked, WindowStateChange, ToolTip, WhatsThis, StatusTip, ActionChanged, ActionAdded, ActionRemoved, FileOpen, Shortcut, ShortcutOverride, WhatsThisClicked, ToolBarChange, ApplicationActivate, ApplicationActivated, ApplicationDeactivate, ApplicationDeactivated, QueryWhatsThis, EnterWhatsThisMode, LeaveWhatsThisMode, ZOrderChange, HoverEnter, HoverLeave, HoverMove, GraphicsSceneMouseMove, GraphicsSceneMousePress, GraphicsSceneMouseRelease, GraphicsSceneMouseDoubleClick, GraphicsSceneContextMenu, GraphicsSceneHoverEnter, GraphicsSceneHoverMove, GraphicsSceneHoverLeave, GraphicsSceneHelp, GraphicsSceneDragEnter, GraphicsSceneDragMove, GraphicsSceneDragLeave, GraphicsSceneDrop, GraphicsSceneWheel, GraphicsSceneResize, GraphicsSceneMove, KeyboardLayoutChange, DynamicPropertyChange, TabletEnterProximity, TabletLeaveProximity, NonClientAreaMouseMove, NonClientAreaMouseButtonPress, NonClientAreaMouseButtonRelease, NonClientAreaMouseButtonDblClick, MacSizeChange, ContentsRectChange, CursorChange, ToolTipChange, GrabMouse, UngrabMouse, GrabKeyboard, UngrabKeyboard, StateMachineSignal, StateMachineWrapped, TouchBegin, TouchUpdate, TouchEnd, RequestSoftwareInputPanel, CloseSoftwareInputPanel, WinIdChange, Gesture, GestureOverride, FocusAboutToChange, ScrollPrepare, Scroll, Expose, InputMethodQuery, OrientationChange, TouchCancel, PlatformPanel, %If (Qt_5_1_0 -) ApplicationStateChange, %End %If (Qt_5_4_0 -) ReadOnlyChange, %End %If (Qt_5_5_0 -) PlatformSurface, %End %If (Qt_5_9_0 -) TabletTrackingChange, %End User, MaxUser, }; explicit QEvent(QEvent::Type type); QEvent(const QEvent &other); virtual ~QEvent(); QEvent::Type type() const; bool spontaneous() const; void setAccepted(bool accepted); bool isAccepted() const; void accept(); void ignore(); static int registerEventType(int hint = -1); }; class QTimerEvent : QEvent { %TypeHeaderCode #include %End public: explicit QTimerEvent(int timerId); virtual ~QTimerEvent(); int timerId() const; }; class QChildEvent : QEvent { %TypeHeaderCode #include %End public: QChildEvent(QEvent::Type type, QObject *child); virtual ~QChildEvent(); QObject *child() const; bool added() const; bool polished() const; bool removed() const; }; class QDynamicPropertyChangeEvent : QEvent { %TypeHeaderCode #include %End public: explicit QDynamicPropertyChangeEvent(const QByteArray &name); virtual ~QDynamicPropertyChangeEvent(); QByteArray propertyName() const; }; PyQt5_gpl-5.10.1/sip/QtCore/qcryptographichash.sip0000644000076500000240000000365013245233150022113 0ustar philstaff00000000000000// qcryptographichash.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCryptographicHash { %TypeHeaderCode #include %End public: enum Algorithm { Md4, Md5, Sha1, Sha224, Sha256, Sha384, Sha512, %If (Qt_5_1_0 -) Sha3_224, %End %If (Qt_5_1_0 -) Sha3_256, %End %If (Qt_5_1_0 -) Sha3_384, %End %If (Qt_5_1_0 -) Sha3_512, %End %If (Qt_5_9_2 -) Keccak_224, %End %If (Qt_5_9_2 -) Keccak_256, %End %If (Qt_5_9_2 -) Keccak_384, %End %If (Qt_5_9_2 -) Keccak_512, %End }; explicit QCryptographicHash(QCryptographicHash::Algorithm method); ~QCryptographicHash(); void reset(); void addData(const char *data /Array/, int length /ArraySize/); void addData(const QByteArray &data); bool addData(QIODevice *device); QByteArray result() const; static QByteArray hash(const QByteArray &data, QCryptographicHash::Algorithm method); private: QCryptographicHash(const QCryptographicHash &); }; PyQt5_gpl-5.10.1/sip/QtCore/qdatastream.sip0000644000076500000240000002245113245233150020516 0ustar philstaff00000000000000// qdatastream.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDataStream { %TypeHeaderCode #include %End public: enum Version { Qt_1_0, Qt_2_0, Qt_2_1, Qt_3_0, Qt_3_1, Qt_3_3, Qt_4_0, Qt_4_1, Qt_4_2, Qt_4_3, Qt_4_4, Qt_4_5, Qt_4_6, Qt_4_7, Qt_4_8, Qt_4_9, Qt_5_0, %If (Qt_5_1_0 -) Qt_5_1, %End %If (Qt_5_2_0 -) Qt_5_2, %End %If (Qt_5_3_0 -) Qt_5_3, %End %If (Qt_5_4_0 -) Qt_5_4, %End %If (Qt_5_5_0 -) Qt_5_5, %End %If (Qt_5_6_0 -) Qt_5_6, %End %If (Qt_5_7_0 -) Qt_5_7, %End %If (Qt_5_8_0 -) Qt_5_8, %End %If (Qt_5_9_0 -) Qt_5_9, %End %If (Qt_5_10_0 -) Qt_5_10, %End }; enum ByteOrder { BigEndian, LittleEndian, }; enum Status { Ok, ReadPastEnd, ReadCorruptData, WriteFailed, }; QDataStream(); explicit QDataStream(QIODevice *); QDataStream(QByteArray * /Constrained/, QIODevice::OpenMode flags); QDataStream(const QByteArray & /Constrained/); ~QDataStream(); QIODevice *device() const; void setDevice(QIODevice *); bool atEnd() const; QDataStream::Status status() const; void setStatus(QDataStream::Status status); void resetStatus(); QDataStream::ByteOrder byteOrder() const; void setByteOrder(QDataStream::ByteOrder); int version() const; void setVersion(int v); int skipRawData(int len) /ReleaseGIL/; // Extra methods to give explicit control over the simple data types being read and written. int readInt() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End qint8 readInt8() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End quint8 readUInt8() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End qint16 readInt16() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End quint16 readUInt16() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End qint32 readInt32() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End quint32 readUInt32() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End qint64 readInt64() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End quint64 readUInt64() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End bool readBool() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End float readFloat() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End double readDouble() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End SIP_PYOBJECT readString() /ReleaseGIL,TypeHint="Py_v3:bytes;str"/; %MethodCode char *s; Py_BEGIN_ALLOW_THREADS *sipCpp >> s; Py_END_ALLOW_THREADS if (s) { sipRes = SIPBytes_FromString(s); delete[] s; } else { sipRes = Py_None; Py_INCREF(Py_None); } %End void writeInt(int i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeInt8(qint8 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeUInt8(quint8 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeInt16(qint16 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeUInt16(quint16 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeInt32(qint32 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeUInt32(quint32 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeInt64(qint64 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeUInt64(quint64 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeBool(bool i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeFloat(float f) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeDouble(double f) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeString(const char *str /Encoding="None"/) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End // Extra methods to support v2 of the QString and QVariant APIs. QString readQString() /ReleaseGIL/; %MethodCode sipRes = new QString; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQString(const QString &qstr) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End QStringList readQStringList() /ReleaseGIL/; %MethodCode sipRes = new QStringList; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQStringList(const QStringList &qstrlst) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End QVariant readQVariant() /ReleaseGIL/; %MethodCode sipRes = new QVariant; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQVariant(const QVariant &qvar) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End QVariantList readQVariantList() /ReleaseGIL/; %MethodCode sipRes = new QVariantList; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQVariantList(const QVariantList &qvarlst) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End QVariantMap readQVariantMap() /ReleaseGIL/; %MethodCode sipRes = new QVariantMap; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQVariantMap(const QVariantMap &qvarmap) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End QVariantHash readQVariantHash() /ReleaseGIL/; %MethodCode sipRes = new QVariantHash; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQVariantHash(const QVariantHash &qvarhash) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End SIP_PYOBJECT readBytes() /TypeHint="Py_v3:bytes;str",ReleaseGIL/; %MethodCode char *s; uint l; Py_BEGIN_ALLOW_THREADS sipCpp->readBytes(s, l); Py_END_ALLOW_THREADS if ((sipRes = SIPBytes_FromStringAndSize(s, l)) == NULL) sipIsErr = 1; if (s) delete[] s; %End SIP_PYOBJECT readRawData(int len) /TypeHint="Py_v3:bytes;str",ReleaseGIL/; %MethodCode char *s = new char[a0]; Py_BEGIN_ALLOW_THREADS sipCpp->readRawData(s, a0); Py_END_ALLOW_THREADS sipRes = SIPBytes_FromStringAndSize(s, a0); if (!sipRes) sipIsErr = 1; delete[] s; %End QDataStream &writeBytes(const char * /Array/, uint len /ArraySize/) /ReleaseGIL/; int writeRawData(const char * /Array/, int len /ArraySize/) /ReleaseGIL/; enum FloatingPointPrecision { SinglePrecision, DoublePrecision, }; QDataStream::FloatingPointPrecision floatingPointPrecision() const; void setFloatingPointPrecision(QDataStream::FloatingPointPrecision precision); %If (Qt_5_7_0 -) void startTransaction(); %End %If (Qt_5_7_0 -) bool commitTransaction(); %End %If (Qt_5_7_0 -) void rollbackTransaction(); %End %If (Qt_5_7_0 -) void abortTransaction(); %End private: QDataStream(const QDataStream &); }; PyQt5_gpl-5.10.1/sip/QtCore/qdatetime.sip0000644000076500000240000004336313245233150020172 0ustar philstaff00000000000000// qdatetime.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDate /TypeHintIn="Union[QDate, datetime.date]"/ { %TypeHeaderCode #include %End %TypeCode #include %End %ConvertToTypeCode // Allow a Python date object whenever a QDate is expected. if (sipIsErr == NULL) return (sipGetDate(sipPy, 0) || sipCanConvertToType(sipPy, sipType_QDate, SIP_NO_CONVERTORS)); sipDateDef py_date; if (sipGetDate(sipPy, &py_date)) { *sipCppPtr = new QDate(py_date.pd_year, py_date.pd_month, py_date.pd_day); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QDate, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %PickleCode sipRes = Py_BuildValue((char *)"iii", sipCpp->year(), sipCpp->month(), sipCpp->day()); %End public: QDate(); QDate(int y, int m, int d); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QDate()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QDate()"); #endif } else { sipRes = #if PY_MAJOR_VERSION >= 3 PyUnicode_FromFormat #else PyString_FromFormat #endif ("PyQt5.QtCore.QDate(%i, %i, %i)", sipCpp->year(), sipCpp->month(), sipCpp->day()); } %End long __hash__() const; %MethodCode sipRes = qHash(sipCpp->toString(Qt::ISODate)); %End SIP_PYOBJECT toPyDate() const /TypeHint="datetime.date"/; %MethodCode // Convert to a Python date object. sipDateDef py_date; py_date.pd_year = sipCpp->year(); py_date.pd_month = sipCpp->month(); py_date.pd_day = sipCpp->day(); sipRes = sipFromDate(&py_date); %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End bool isValid() const; int year() const; int month() const; int day() const; int dayOfWeek() const; int dayOfYear() const; int daysInMonth() const; int daysInYear() const; int weekNumber(int *yearNumber = 0) const; static QString shortMonthName(int month, QDate::MonthNameType type = QDate::DateFormat); static QString shortDayName(int weekday, QDate::MonthNameType type = QDate::DateFormat); static QString longMonthName(int month, QDate::MonthNameType type = QDate::DateFormat); static QString longDayName(int weekday, QDate::MonthNameType type = QDate::DateFormat); QString toString(Qt::DateFormat format = Qt::TextDate) const; QString toString(const QString &format) const; QDate addDays(qint64 days) const; QDate addMonths(int months) const; QDate addYears(int years) const; qint64 daysTo(const QDate &) const; bool operator==(const QDate &other) const; bool operator!=(const QDate &other) const; bool operator<(const QDate &other) const; bool operator<=(const QDate &other) const; bool operator>(const QDate &other) const; bool operator>=(const QDate &other) const; static QDate currentDate(); static QDate fromString(const QString &string, Qt::DateFormat format = Qt::TextDate); static QDate fromString(const QString &s, const QString &format); static bool isValid(int y, int m, int d); static bool isLeapYear(int year); static QDate fromJulianDay(qint64 jd); qint64 toJulianDay() const; bool setDate(int year, int month, int date); %If (- Qt_5_7_0) void getDate(int *year, int *month, int *day); %End %If (Qt_5_7_0 -) void getDate(int *year, int *month, int *day) const; %End enum MonthNameType { DateFormat, StandaloneFormat, }; }; class QTime /TypeHintIn="Union[QTime, datetime.time]"/ { %TypeHeaderCode #include %End %TypeCode #include %End %ConvertToTypeCode // Allow a Python time object whenever a QTime is expected. if (sipIsErr == NULL) return (sipGetTime(sipPy, 0) || sipCanConvertToType(sipPy, sipType_QTime, SIP_NO_CONVERTORS)); sipTimeDef py_time; if (sipGetTime(sipPy, &py_time)) { *sipCppPtr = new QTime(py_time.pt_hour, py_time.pt_minute, py_time.pt_second, py_time.pt_microsecond / 1000); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QTime, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %PickleCode sipRes = Py_BuildValue((char *)"iiii", sipCpp->hour(), sipCpp->minute(), sipCpp->second(), sipCpp->msec()); %End public: QTime(); QTime(int h, int m, int second = 0, int msec = 0); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QTime()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QTime()"); #endif } else { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QTime(%i, %i", sipCpp->hour(), sipCpp->minute()); if (sipCpp->second() || sipCpp->msec()) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", %i", sipCpp->second())); if (sipCpp->msec()) qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", %i", sipCpp->msec())); } qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromString(")")); #else sipRes = PyString_FromFormat("PyQt5.QtCore.QTime(%i, %i", sipCpp->hour(), sipCpp->minute()); if (sipCpp->second() || sipCpp->msec()) { PyString_ConcatAndDel(&sipRes, PyString_FromFormat(", %i", sipCpp->second())); if (sipCpp->msec()) PyString_ConcatAndDel(&sipRes, PyString_FromFormat(", %i", sipCpp->msec())); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } %End long __hash__() const; %MethodCode sipRes = qHash(sipCpp->toString(Qt::ISODate)); %End SIP_PYOBJECT toPyTime() const /TypeHint="datetime.time"/; %MethodCode // Convert to a Python time object. sipTimeDef py_time; py_time.pt_hour = sipCpp->hour(); py_time.pt_minute = sipCpp->minute(); py_time.pt_second = sipCpp->second(); py_time.pt_microsecond = sipCpp->msec() * 1000; sipRes = sipFromTime(&py_time); %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End bool isValid() const; int hour() const; int minute() const; int second() const; int msec() const; QString toString(Qt::DateFormat format = Qt::TextDate) const; QString toString(const QString &format) const; bool setHMS(int h, int m, int s, int msec = 0); QTime addSecs(int secs) const; int secsTo(const QTime &) const; QTime addMSecs(int ms) const; int msecsTo(const QTime &) const; bool operator==(const QTime &other) const; bool operator!=(const QTime &other) const; bool operator<(const QTime &other) const; bool operator<=(const QTime &other) const; bool operator>(const QTime &other) const; bool operator>=(const QTime &other) const; static QTime currentTime(); static QTime fromString(const QString &string, Qt::DateFormat format = Qt::TextDate); static QTime fromString(const QString &s, const QString &format); static bool isValid(int h, int m, int s, int msec = 0); void start(); int restart(); int elapsed() const; %If (Qt_5_2_0 -) static QTime fromMSecsSinceStartOfDay(int msecs); %End %If (Qt_5_2_0 -) int msecsSinceStartOfDay() const; %End }; class QDateTime /TypeHintIn="Union[QDateTime, datetime.datetime]"/ { %TypeHeaderCode #include %End %TypeCode #include %End %ConvertToTypeCode // Allow a Python datetime object whenever a QDateTime is expected. if (sipIsErr == NULL) return (sipGetDateTime(sipPy, 0, 0) || sipCanConvertToType(sipPy, sipType_QDateTime, SIP_NO_CONVERTORS)); sipDateDef py_date; sipTimeDef py_time; if (sipGetDateTime(sipPy, &py_date, &py_time)) { QDate qdate(py_date.pd_year, py_date.pd_month, py_date.pd_day); QTime qtime(py_time.pt_hour, py_time.pt_minute, py_time.pt_second, py_time.pt_microsecond / 1000); QDateTime *qdt = new QDateTime(qdate, qtime); *sipCppPtr = qdt; return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QDateTime, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %PickleCode QDate qd = sipCpp->date(); QTime qt = sipCpp->time(); sipRes = Py_BuildValue((char *)"iiiiiiii", qd.year(), qd.month(), qd.day(), qt.hour(), qt.minute(), qt.second(), qt.msec(), (int)sipCpp->timeSpec()); %End public: QDateTime(); QDateTime(const QDateTime &other); explicit QDateTime(const QDate &); QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec timeSpec = Qt::LocalTime); QDateTime(int year, int month, int day, int hour, int minute, int second = 0, int msec = 0, int timeSpec = 0) /NoDerived/; %MethodCode // This ctor is mainly supplied to allow pickling. QDate qd(a0, a1, a2); QTime qt(a3, a4, a5, a6); sipCpp = new QDateTime(qd, qt, (Qt::TimeSpec)a7); %End ~QDateTime(); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QDateTime()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QDateTime()"); #endif } else { QDate qd = sipCpp->date(); QTime qt = sipCpp->time(); #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QDateTime(%i, %i, %i, %i, %i", qd.year(), qd.month(), qd.day(), qt.hour(), qt.minute()); if (qt.second() || qt.msec() || sipCpp->timeSpec() != Qt::LocalTime) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", %i", qt.second())); if (qt.msec() || sipCpp->timeSpec() != Qt::LocalTime) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", %i", qt.msec())); if (sipCpp->timeSpec() != Qt::LocalTime) qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", PyQt5.QtCore.Qt.TimeSpec(%i)", (int)sipCpp->timeSpec())); } } qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromString(")")); #else sipRes = PyString_FromFormat("PyQt5.QtCore.QDateTime(%i, %i, %i, %i, %i", qd.year(), qd.month(), qd.day(), qt.hour(), qt.minute()); if (qt.second() || qt.msec() || sipCpp->timeSpec() != Qt::LocalTime) { PyString_ConcatAndDel(&sipRes, PyString_FromFormat(", %i", qt.second())); if (qt.msec() || sipCpp->timeSpec() != Qt::LocalTime) { PyString_ConcatAndDel(&sipRes, PyString_FromFormat(", %i", qt.msec())); if (sipCpp->timeSpec() != Qt::LocalTime) PyString_ConcatAndDel(&sipRes, PyString_FromFormat(", PyQt5.QtCore.Qt.TimeSpec(%i)", (int)sipCpp->timeSpec())); } } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } %End long __hash__() const; %MethodCode sipRes = qHash(sipCpp->toString(Qt::ISODate)); %End SIP_PYOBJECT toPyDateTime() const /TypeHint="datetime.datetime"/; %MethodCode // Convert to a Python datetime object. sipDateDef py_date; QDate qd = sipCpp->date(); py_date.pd_year = qd.year(); py_date.pd_month = qd.month(); py_date.pd_day = qd.day(); sipTimeDef py_time; QTime qt = sipCpp->time(); py_time.pt_hour = qt.hour(); py_time.pt_minute = qt.minute(); py_time.pt_second = qt.second(); py_time.pt_microsecond = qt.msec() * 1000; sipRes = sipFromDateTime(&py_date, &py_time); %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End bool isValid() const; QDate date() const; QTime time() const; Qt::TimeSpec timeSpec() const; uint toTime_t() const; void setDate(const QDate &date); void setTime(const QTime &time); void setTimeSpec(Qt::TimeSpec spec); void setTime_t(uint secsSince1Jan1970UTC); QString toString(Qt::DateFormat format = Qt::TextDate) const; QString toString(const QString &format) const; QDateTime addDays(qint64 days) const; QDateTime addMonths(int months) const; QDateTime addYears(int years) const; QDateTime addSecs(qint64 secs) const; QDateTime addMSecs(qint64 msecs) const; QDateTime toTimeSpec(Qt::TimeSpec spec) const; QDateTime toLocalTime() const; QDateTime toUTC() const; qint64 daysTo(const QDateTime &) const; qint64 secsTo(const QDateTime &) const; bool operator==(const QDateTime &other) const; bool operator!=(const QDateTime &other) const; bool operator<(const QDateTime &other) const; bool operator<=(const QDateTime &other) const; bool operator>(const QDateTime &other) const; bool operator>=(const QDateTime &other) const; static QDateTime currentDateTime(); static QDateTime fromString(const QString &string, Qt::DateFormat format = Qt::TextDate); static QDateTime fromString(const QString &s, const QString &format); static QDateTime fromTime_t(uint secsSince1Jan1970UTC); qint64 toMSecsSinceEpoch() const; void setMSecsSinceEpoch(qint64 msecs); qint64 msecsTo(const QDateTime &) const; static QDateTime currentDateTimeUtc(); static QDateTime fromMSecsSinceEpoch(qint64 msecs); static qint64 currentMSecsSinceEpoch(); void swap(QDateTime &other /Constrained/); %If (Qt_5_2_0 -) QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec, int offsetSeconds); %End %If (Qt_5_2_0 -) QDateTime(const QDate &date, const QTime &time, const QTimeZone &timeZone); %End %If (Qt_5_2_0 -) int offsetFromUtc() const; %End %If (Qt_5_2_0 -) QTimeZone timeZone() const; %End %If (Qt_5_2_0 -) QString timeZoneAbbreviation() const; %End %If (Qt_5_2_0 -) bool isDaylightTime() const; %End %If (Qt_5_2_0 -) void setOffsetFromUtc(int offsetSeconds); %End %If (Qt_5_2_0 -) void setTimeZone(const QTimeZone &toZone); %End %If (Qt_5_2_0 -) QDateTime toOffsetFromUtc(int offsetSeconds) const; %End %If (Qt_5_2_0 -) QDateTime toTimeZone(const QTimeZone &toZone) const; %End %If (Qt_5_2_0 -) static QDateTime fromTime_t(uint secsSince1Jan1970UTC, Qt::TimeSpec spec, int offsetSeconds = 0); %End %If (Qt_5_2_0 -) static QDateTime fromTime_t(uint secsSince1Jan1970UTC, const QTimeZone &timeZone); %End %If (Qt_5_2_0 -) static QDateTime fromMSecsSinceEpoch(qint64 msecs, Qt::TimeSpec spec, int offsetSeconds = 0); %End %If (Qt_5_2_0 -) static QDateTime fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone); %End %If (Qt_5_8_0 -) qint64 toSecsSinceEpoch() const; %End %If (Qt_5_8_0 -) void setSecsSinceEpoch(qint64 secs); %End %If (Qt_5_8_0 -) static QDateTime fromSecsSinceEpoch(qint64 secs, Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0); %End %If (Qt_5_8_0 -) static QDateTime fromSecsSinceEpoch(qint64 secs, const QTimeZone &timeZone); %End %If (Qt_5_8_0 -) static qint64 currentSecsSinceEpoch(); %End }; QDataStream &operator<<(QDataStream &, const QDate & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QDate & /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &, const QTime & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QTime & /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &, const QDateTime & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QDateTime & /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtCore/qdeadlinetimer.sip0000644000076500000240000000606213245233150021177 0ustar philstaff00000000000000// qdeadlinetimer.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_8_0 -) class QDeadlineTimer { %TypeHeaderCode #include %End public: enum ForeverConstant { Forever, }; QDeadlineTimer(Qt::TimerType type = Qt::TimerType::CoarseTimer); QDeadlineTimer(QDeadlineTimer::ForeverConstant, Qt::TimerType type = Qt::TimerType::CoarseTimer); QDeadlineTimer(qint64 msecs, Qt::TimerType type = Qt::TimerType::CoarseTimer); void swap(QDeadlineTimer &other /Constrained/); bool isForever() const; bool hasExpired() const; Qt::TimerType timerType() const; void setTimerType(Qt::TimerType type); qint64 remainingTime() const; qint64 remainingTimeNSecs() const; void setRemainingTime(qint64 msecs, Qt::TimerType type = Qt::TimerType::CoarseTimer); void setPreciseRemainingTime(qint64 secs, qint64 nsecs = 0, Qt::TimerType type = Qt::TimerType::CoarseTimer); qint64 deadline() const; qint64 deadlineNSecs() const; void setDeadline(qint64 msecs, Qt::TimerType type = Qt::TimerType::CoarseTimer); void setPreciseDeadline(qint64 secs, qint64 nsecs = 0, Qt::TimerType type = Qt::TimerType::CoarseTimer); static QDeadlineTimer addNSecs(QDeadlineTimer dt, qint64 nsecs); static QDeadlineTimer current(Qt::TimerType type = Qt::TimerType::CoarseTimer); QDeadlineTimer &operator+=(qint64 msecs); QDeadlineTimer &operator-=(qint64 msecs); }; %End %If (Qt_5_8_0 -) bool operator==(QDeadlineTimer d1, QDeadlineTimer d2); %End %If (Qt_5_8_0 -) bool operator!=(QDeadlineTimer d1, QDeadlineTimer d2); %End %If (Qt_5_8_0 -) bool operator<(QDeadlineTimer d1, QDeadlineTimer d2); %End %If (Qt_5_8_0 -) bool operator<=(QDeadlineTimer d1, QDeadlineTimer d2); %End %If (Qt_5_8_0 -) bool operator>(QDeadlineTimer d1, QDeadlineTimer d2); %End %If (Qt_5_8_0 -) bool operator>=(QDeadlineTimer d1, QDeadlineTimer d2); %End %If (Qt_5_8_0 -) QDeadlineTimer operator+(QDeadlineTimer dt, qint64 msecs); %End %If (Qt_5_8_0 -) QDeadlineTimer operator+(qint64 msecs, QDeadlineTimer dt); %End %If (Qt_5_8_0 -) QDeadlineTimer operator-(QDeadlineTimer dt, qint64 msecs); %End %If (Qt_5_8_0 -) qint64 operator-(QDeadlineTimer dt1, QDeadlineTimer dt2); %End PyQt5_gpl-5.10.1/sip/QtCore/qdir.sip0000644000076500000240000001434013245233150017145 0ustar philstaff00000000000000// qdir.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDir { %TypeHeaderCode #include %End public: enum Filter { Dirs, Files, Drives, NoSymLinks, AllEntries, TypeMask, Readable, Writable, Executable, PermissionMask, Modified, Hidden, System, AccessMask, AllDirs, CaseSensitive, NoDotAndDotDot, NoFilter, NoDot, NoDotDot, }; typedef QFlags Filters; enum SortFlag { Name, Time, Size, Unsorted, SortByMask, DirsFirst, Reversed, IgnoreCase, DirsLast, LocaleAware, Type, NoSort, }; typedef QFlags SortFlags; QDir(const QDir &); QDir(const QString &path = QString()); QDir(const QString &path, const QString &nameFilter, QFlags sort /TypeHintValue="QDir.Name|QDir.IgnoreCase"/ = QDir::SortFlags(QDir::Name|QDir::IgnoreCase), QFlags filters = AllEntries); ~QDir(); void setPath(const QString &path); QString path() const; QString absolutePath() const; QString canonicalPath() const; QString dirName() const; QString filePath(const QString &fileName) const; QString absoluteFilePath(const QString &fileName) const; QString relativeFilePath(const QString &fileName) const; bool cd(const QString &dirName); bool cdUp(); QStringList nameFilters() const; void setNameFilters(const QStringList &nameFilters); QDir::Filters filter() const; void setFilter(QDir::Filters filter); QDir::SortFlags sorting() const; void setSorting(QDir::SortFlags sort); uint count() const /__len__/; QString operator[](int) const; %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QString(sipCpp->operator[]((int)idx)); %End QStringList operator[](SIP_PYSLICE) const; %MethodCode Py_ssize_t len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { sipRes = new QStringList(); for (i = 0; i < slicelength; ++i) { (*sipRes) += (*sipCpp)[start]; start += step; } } %End int __contains__(const QString &) const; %MethodCode sipRes = bool(sipCpp->entryList().contains(*a0)); %End static QStringList nameFiltersFromString(const QString &nameFilter); QStringList entryList(QDir::Filters filters = QDir::NoFilter, QDir::SortFlags sort = QDir::NoSort) const; QStringList entryList(const QStringList &nameFilters, QDir::Filters filters = QDir::NoFilter, QDir::SortFlags sort = QDir::NoSort) const; QFileInfoList entryInfoList(QDir::Filters filters = QDir::NoFilter, QDir::SortFlags sort = QDir::NoSort) const; QFileInfoList entryInfoList(const QStringList &nameFilters, QDir::Filters filters = QDir::NoFilter, QDir::SortFlags sort = QDir::NoSort) const; bool mkdir(const QString &dirName) const; bool rmdir(const QString &dirName) const; bool mkpath(const QString &dirPath) const; bool rmpath(const QString &dirPath) const; bool isReadable() const; bool exists() const; bool isRoot() const; static bool isRelativePath(const QString &path); static bool isAbsolutePath(const QString &path); bool isRelative() const; bool isAbsolute() const; bool makeAbsolute(); bool operator==(const QDir &dir) const; bool operator!=(const QDir &dir) const; bool remove(const QString &fileName); bool rename(const QString &oldName, const QString &newName); bool exists(const QString &name) const; void refresh() const; static QFileInfoList drives(); static QChar separator(); static bool setCurrent(const QString &path); static QDir current(); static QString currentPath(); static QDir home(); static QString homePath(); static QDir root(); static QString rootPath(); static QDir temp(); static QString tempPath(); static bool match(const QStringList &filters, const QString &fileName); static bool match(const QString &filter, const QString &fileName); static QString cleanPath(const QString &path); static QString toNativeSeparators(const QString &pathName); static QString fromNativeSeparators(const QString &pathName); static void setSearchPaths(const QString &prefix, const QStringList &searchPaths); static void addSearchPath(const QString &prefix, const QString &path); static QStringList searchPaths(const QString &prefix); bool removeRecursively(); void swap(QDir &other /Constrained/); %If (Qt_5_6_0 -) static QChar listSeparator(); %End %If (Qt_5_9_0 -) bool isEmpty(QDir::Filters filters = QDir::AllEntries | QDir::NoDotAndDotDot) const; %End }; QFlags operator|(QDir::Filter f1, QFlags f2); QFlags operator|(QDir::SortFlag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtCore/qdiriterator.sip0000644000076500000240000000400713245233150020716 0ustar philstaff00000000000000// qdiriterator.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDirIterator { %TypeHeaderCode #include %End public: enum IteratorFlag { NoIteratorFlags, FollowSymlinks, Subdirectories, }; typedef QFlags IteratorFlags; QDirIterator(const QDir &dir, QFlags flags = NoIteratorFlags); QDirIterator(const QString &path, QFlags flags = NoIteratorFlags); QDirIterator(const QString &path, QFlags filters, QFlags flags = NoIteratorFlags); QDirIterator(const QString &path, const QStringList &nameFilters, QFlags filters = QDir::NoFilter, QFlags flags = NoIteratorFlags); ~QDirIterator(); QString next(); bool hasNext() const; QString fileName() const; QString filePath() const; QFileInfo fileInfo() const; QString path() const; private: QDirIterator(const QDirIterator &); }; QFlags operator|(QDirIterator::IteratorFlag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtCore/qeasingcurve.sip0000644000076500000240000001502013245233150020676 0ustar philstaff00000000000000// qeasingcurve.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QEasingCurve /TypeHintIn="Union[QEasingCurve, QEasingCurve.Type]"/ { %TypeHeaderCode #include %End %TypeCode // The EasingFunction callback doesn't provide a context so we support a fixed // number of different functions. const int ec_nr_custom_types = 10; struct ec_custom_type { PyObject *py_func; QEasingCurve::EasingFunction func; }; static qreal ec_call(int ec, qreal v); static qreal ec_func_0(qreal v) { return ec_call(0, v); } static qreal ec_func_1(qreal v) { return ec_call(1, v); } static qreal ec_func_2(qreal v) { return ec_call(2, v); } static qreal ec_func_3(qreal v) { return ec_call(3, v); } static qreal ec_func_4(qreal v) { return ec_call(4, v); } static qreal ec_func_5(qreal v) { return ec_call(5, v); } static qreal ec_func_6(qreal v) { return ec_call(6, v); } static qreal ec_func_7(qreal v) { return ec_call(7, v); } static qreal ec_func_8(qreal v) { return ec_call(8, v); } static qreal ec_func_9(qreal v) { return ec_call(9, v); } static ec_custom_type ec_custom_types[ec_nr_custom_types] = { {0, ec_func_0}, {0, ec_func_1}, {0, ec_func_2}, {0, ec_func_3}, {0, ec_func_4}, {0, ec_func_5}, {0, ec_func_6}, {0, ec_func_7}, {0, ec_func_8}, {0, ec_func_9}, }; static qreal ec_call(int ec, qreal v) { PyObject *res_obj; qreal res = 0.0; SIP_BLOCK_THREADS res_obj = PyObject_CallFunction(ec_custom_types[ec].py_func, (char *)"(d)", (double)v); if (res_obj) { PyErr_Clear(); res = PyFloat_AsDouble(res_obj); Py_DECREF(res_obj); if (PyErr_Occurred()) res_obj = 0; } if (!res_obj) pyqt5_err_print(); SIP_UNBLOCK_THREADS return res; } %End %ConvertToTypeCode // Allow a QEasingCurve::Type whenever a QEasingCurve is expected. if (sipIsErr == NULL) { if (sipCanConvertToType(sipPy, sipType_QEasingCurve, SIP_NO_CONVERTORS)) return 1; if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_QEasingCurve_Type))) return 1; return 0; } if (sipCanConvertToType(sipPy, sipType_QEasingCurve, SIP_NO_CONVERTORS)) { *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QEasingCurve, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } *sipCppPtr = new QEasingCurve((QEasingCurve::Type)SIPLong_AsLong(sipPy)); return sipGetState(sipTransferObj); %End public: enum Type { Linear, InQuad, OutQuad, InOutQuad, OutInQuad, InCubic, OutCubic, InOutCubic, OutInCubic, InQuart, OutQuart, InOutQuart, OutInQuart, InQuint, OutQuint, InOutQuint, OutInQuint, InSine, OutSine, InOutSine, OutInSine, InExpo, OutExpo, InOutExpo, OutInExpo, InCirc, OutCirc, InOutCirc, OutInCirc, InElastic, OutElastic, InOutElastic, OutInElastic, InBack, OutBack, InOutBack, OutInBack, InBounce, OutBounce, InOutBounce, OutInBounce, InCurve, OutCurve, SineCurve, CosineCurve, BezierSpline, TCBSpline, Custom, }; QEasingCurve(QEasingCurve::Type type = QEasingCurve::Linear); QEasingCurve(const QEasingCurve &other); ~QEasingCurve(); bool operator==(const QEasingCurve &other) const; bool operator!=(const QEasingCurve &other) const; qreal amplitude() const; void setAmplitude(qreal amplitude); qreal period() const; void setPeriod(qreal period); qreal overshoot() const; void setOvershoot(qreal overshoot); QEasingCurve::Type type() const; void setType(QEasingCurve::Type type); void setCustomType(SIP_PYCALLABLE func /TypeHint="Callable[[float], float]"/); %MethodCode int i; ec_custom_type *ct; for (i = 0; i < ec_nr_custom_types; ++i) { ct = &ec_custom_types[i]; if (!ct->py_func || ct->py_func == a0) break; } if (i == ec_nr_custom_types) { PyErr_Format(PyExc_ValueError, "a maximum of %d different easing functions are supported", ec_nr_custom_types); sipError = sipErrorFail; } else { if (!ct->py_func) { ct->py_func = a0; Py_INCREF(a0); } sipCpp->setCustomType(ct->func); } %End SIP_PYCALLABLE customType() const /TypeHint="Callable[[float], float]"/; %MethodCode QEasingCurve::EasingFunction func = sipCpp->customType(); sipRes = Py_None; if (func) { for (int i = 0; i < ec_nr_custom_types; ++i) { if (ec_custom_types[i].func == func) { sipRes = ec_custom_types[i].py_func; break; } } } Py_INCREF(sipRes); %End qreal valueForProgress(qreal progress) const; void swap(QEasingCurve &other /Constrained/); void addCubicBezierSegment(const QPointF &c1, const QPointF &c2, const QPointF &endPoint); void addTCBSegment(const QPointF &nextPoint, qreal t, qreal c, qreal b); QVector toCubicSpline() const; }; QDataStream &operator<<(QDataStream &, const QEasingCurve & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QEasingCurve & /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtCore/qelapsedtimer.sip0000644000076500000240000000344313245233150021047 0ustar philstaff00000000000000// qelapsedtimer.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QElapsedTimer { %TypeHeaderCode #include %End public: %If (Qt_5_4_0 -) QElapsedTimer(); %End enum ClockType { SystemTime, MonotonicClock, TickCounter, MachAbsoluteTime, PerformanceCounter, }; static QElapsedTimer::ClockType clockType(); static bool isMonotonic(); void start(); qint64 restart(); void invalidate(); bool isValid() const; qint64 elapsed() const; bool hasExpired(qint64 timeout) const; qint64 msecsSinceReference() const; qint64 msecsTo(const QElapsedTimer &other) const; qint64 secsTo(const QElapsedTimer &other) const; bool operator==(const QElapsedTimer &other) const; bool operator!=(const QElapsedTimer &other) const; qint64 nsecsElapsed() const; }; bool operator<(const QElapsedTimer &v1, const QElapsedTimer &v2); PyQt5_gpl-5.10.1/sip/QtCore/qeventloop.sip0000644000076500000240000000471613245233150020410 0ustar philstaff00000000000000// qeventloop.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QEventLoop : QObject { %TypeHeaderCode #include %End public: explicit QEventLoop(QObject *parent /TransferThis/ = 0); virtual ~QEventLoop(); enum ProcessEventsFlag { AllEvents, ExcludeUserInputEvents, ExcludeSocketNotifiers, WaitForMoreEvents, X11ExcludeTimers, }; typedef QFlags ProcessEventsFlags; bool processEvents(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents) /ReleaseGIL/; void processEvents(QEventLoop::ProcessEventsFlags flags, int maximumTime) /ReleaseGIL/; int exec(QFlags flags = AllEvents) /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %If (Py_v3) int exec(QFlags flags = AllEvents) /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %End void exit(int returnCode = 0); bool isRunning() const; void wakeUp(); public slots: void quit(); public: virtual bool event(QEvent *event); }; QFlags operator|(QEventLoop::ProcessEventsFlag f1, QFlags f2); class QEventLoopLocker { %TypeHeaderCode #include %End public: QEventLoopLocker() /ReleaseGIL/; explicit QEventLoopLocker(QEventLoop *loop) /ReleaseGIL/; explicit QEventLoopLocker(QThread *thread) /ReleaseGIL/; ~QEventLoopLocker(); private: QEventLoopLocker(const QEventLoopLocker &); }; PyQt5_gpl-5.10.1/sip/QtCore/qeventtransition.sip0000644000076500000240000000315413245233150021624 0ustar philstaff00000000000000// qeventtransition.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QEventTransition : QAbstractTransition { %TypeHeaderCode #include %End public: QEventTransition(QState *sourceState /TransferThis/ = 0); QEventTransition(QObject *object /KeepReference=10/, QEvent::Type type, QState *sourceState /TransferThis/ = 0); virtual ~QEventTransition(); QObject *eventSource() const; void setEventSource(QObject *object /KeepReference=10/); QEvent::Type eventType() const; void setEventType(QEvent::Type type); protected: virtual bool eventTest(QEvent *event); virtual void onTransition(QEvent *event); virtual bool event(QEvent *e); private: QEventTransition(const QEventTransition &); }; PyQt5_gpl-5.10.1/sip/QtCore/qfile.sip0000644000076500000240000000541613245233150017312 0ustar philstaff00000000000000// qfile.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFile : QFileDevice { %TypeHeaderCode #include %End public: QFile(); QFile(const QString &name); explicit QFile(QObject *parent /TransferThis/); QFile(const QString &name, QObject *parent /TransferThis/); virtual ~QFile(); virtual QString fileName() const; void setFileName(const QString &name); static QByteArray encodeName(const QString &fileName); static QString decodeName(const QByteArray &localFileName); static QString decodeName(const char *localFileName /Encoding="ASCII"/); bool exists() const; static bool exists(const QString &fileName); QString symLinkTarget() const; static QString symLinkTarget(const QString &fileName); bool remove() /ReleaseGIL/; static bool remove(const QString &fileName) /ReleaseGIL/; bool rename(const QString &newName) /ReleaseGIL/; static bool rename(const QString &oldName, const QString &newName) /ReleaseGIL/; bool link(const QString &newName) /ReleaseGIL/; static bool link(const QString &oldname, const QString &newName) /ReleaseGIL/; bool copy(const QString &newName) /ReleaseGIL/; static bool copy(const QString &fileName, const QString &newName) /ReleaseGIL/; virtual bool open(QIODevice::OpenMode flags) /ReleaseGIL/; bool open(int fd, QIODevice::OpenMode ioFlags, QFileDevice::FileHandleFlags handleFlags = QFileDevice::DontCloseHandle) /ReleaseGIL/; virtual qint64 size() const; virtual bool resize(qint64 sz); static bool resize(const QString &filename, qint64 sz); virtual QFileDevice::Permissions permissions() const; static QFileDevice::Permissions permissions(const QString &filename); virtual bool setPermissions(QFileDevice::Permissions permissionSpec); static bool setPermissions(const QString &filename, QFileDevice::Permissions permissionSpec); private: QFile(const QFile &); }; PyQt5_gpl-5.10.1/sip/QtCore/qfiledevice.sip0000644000076500000240000001315113245233150020465 0ustar philstaff00000000000000// qfiledevice.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileDevice : QIODevice /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum FileError { NoError, ReadError, WriteError, FatalError, ResourceError, OpenError, AbortError, TimeOutError, UnspecifiedError, RemoveError, RenameError, PositionError, ResizeError, PermissionsError, CopyError, }; enum Permission { ReadOwner, WriteOwner, ExeOwner, ReadUser, WriteUser, ExeUser, ReadGroup, WriteGroup, ExeGroup, ReadOther, WriteOther, ExeOther, }; typedef QFlags Permissions; enum FileHandleFlag { AutoCloseHandle, DontCloseHandle, }; typedef QFlags FileHandleFlags; virtual ~QFileDevice(); QFileDevice::FileError error() const; void unsetError(); virtual void close() /ReleaseGIL/; virtual bool isSequential() const; int handle() const; virtual QString fileName() const; virtual qint64 pos() const; virtual bool seek(qint64 offset) /ReleaseGIL/; virtual bool atEnd() const; bool flush() /ReleaseGIL/; virtual qint64 size() const; virtual bool resize(qint64 sz); virtual QFileDevice::Permissions permissions() const; virtual bool setPermissions(QFileDevice::Permissions permissionSpec); enum MemoryMapFlags { NoOptions, %If (Qt_5_4_0 -) MapPrivateOption, %End }; void *map(qint64 offset, qint64 size /ResultSize/, QFileDevice::MemoryMapFlags flags = QFileDevice::NoOptions) [uchar * (qint64 offset, qint64 size, QFileDevice::MemoryMapFlags flags = QFileDevice::NoOptions)]; bool unmap(void *address) [bool (uchar *address)]; protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /TypeHint="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QFileDevice::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) /ReleaseGIL/; virtual SIP_PYOBJECT readLineData(qint64 maxlen) /TypeHint="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QFileDevice::readLineData(s, a0) : sipCpp->readLineData(s, a0); #else len = sipCpp->sipProtectVirt_readLineData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End public: %If (Qt_5_10_0 -) enum FileTime { FileAccessTime, FileBirthTime, FileMetadataChangeTime, FileModificationTime, }; %End %If (Qt_5_10_0 -) QDateTime fileTime(QFileDevice::FileTime time) const; %End %If (Qt_5_10_0 -) bool setFileTime(const QDateTime &newDate, QFileDevice::FileTime fileTime); %End private: QFileDevice(const QFileDevice &); }; QFlags operator|(QFileDevice::Permission f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtCore/qfileinfo.sip0000644000076500000240000000626113245233150020165 0ustar philstaff00000000000000// qfileinfo.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileInfo { %TypeHeaderCode #include %End public: QFileInfo(); QFileInfo(const QString &file); QFileInfo(const QFile &file); QFileInfo(const QDir &dir, const QString &file); QFileInfo(const QFileInfo &fileinfo); ~QFileInfo(); bool operator==(const QFileInfo &fileinfo) const; bool operator!=(const QFileInfo &fileinfo) const; void setFile(const QString &file); void setFile(const QFile &file); void setFile(const QDir &dir, const QString &file); bool exists() const; void refresh(); QString filePath() const; SIP_PYOBJECT __fspath__(); %MethodCode sipRes = qpycore_PyObject_FromQString(QDir::toNativeSeparators(sipCpp->filePath())); %End QString absoluteFilePath() const; QString canonicalFilePath() const; QString fileName() const; QString baseName() const; QString completeBaseName() const; QString suffix() const; QString completeSuffix() const; QString path() const; QString absolutePath() const; QString canonicalPath() const; QDir dir() const; QDir absoluteDir() const; bool isReadable() const; bool isWritable() const; bool isExecutable() const; bool isHidden() const; bool isRelative() const; bool isAbsolute() const; bool makeAbsolute(); bool isFile() const; bool isDir() const; bool isSymLink() const; bool isRoot() const; QString owner() const; uint ownerId() const; QString group() const; uint groupId() const; bool permission(QFileDevice::Permissions permissions) const; QFileDevice::Permissions permissions() const; qint64 size() const; QDateTime created() const; QDateTime lastModified() const; QDateTime lastRead() const; bool caching() const; void setCaching(bool on); QString symLinkTarget() const; QString bundleName() const; bool isBundle() const; bool isNativePath() const; void swap(QFileInfo &other /Constrained/); %If (Qt_5_2_0 -) static bool exists(const QString &file); %End %If (Qt_5_10_0 -) QDateTime birthTime() const; %End %If (Qt_5_10_0 -) QDateTime metadataChangeTime() const; %End %If (Qt_5_10_0 -) QDateTime fileTime(QFileDevice::FileTime time) const; %End }; typedef QList QFileInfoList; PyQt5_gpl-5.10.1/sip/QtCore/qfileselector.sip0000644000076500000240000000255513245233150021054 0ustar philstaff00000000000000// qfileselector.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QFileSelector : QObject { %TypeHeaderCode #include %End public: explicit QFileSelector(QObject *parent /TransferThis/ = 0); virtual ~QFileSelector(); QString select(const QString &filePath) const; QUrl select(const QUrl &filePath) const; QStringList extraSelectors() const; void setExtraSelectors(const QStringList &list); QStringList allSelectors() const; }; %End PyQt5_gpl-5.10.1/sip/QtCore/qfilesystemwatcher.sip0000644000076500000240000000307513245233150022134 0ustar philstaff00000000000000// qfilesystemwatcher.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileSystemWatcher : QObject { %TypeHeaderCode #include %End public: QFileSystemWatcher(QObject *parent /TransferThis/ = 0); QFileSystemWatcher(const QStringList &paths, QObject *parent /TransferThis/ = 0); virtual ~QFileSystemWatcher(); bool addPath(const QString &file); QStringList addPaths(const QStringList &files); QStringList directories() const; QStringList files() const; bool removePath(const QString &file); QStringList removePaths(const QStringList &files); signals: void directoryChanged(const QString &path); void fileChanged(const QString &path); }; PyQt5_gpl-5.10.1/sip/QtCore/qfinalstate.sip0000644000076500000240000000242513245233150020522 0ustar philstaff00000000000000// qfinalstate.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFinalState : QAbstractState { %TypeHeaderCode #include %End public: QFinalState(QState *parent /TransferThis/ = 0); virtual ~QFinalState(); protected: virtual void onEntry(QEvent *event); virtual void onExit(QEvent *event); virtual bool event(QEvent *e); private: QFinalState(const QFinalState &); }; PyQt5_gpl-5.10.1/sip/QtCore/qglobal.sip0000644000076500000240000001527513245233150017637 0ustar philstaff00000000000000// qglobal.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End // PyQt version information. int PYQT_VERSION; const char *PYQT_VERSION_STR; %ModuleCode static int PYQT_VERSION = 0x050a01; static const char *PYQT_VERSION_STR = "5.10.1"; %End const int QT_VERSION; const char *QT_VERSION_STR; typedef signed char qint8 /PyInt/; typedef unsigned char quint8 /PyInt/; typedef short qint16; typedef unsigned short quint16; typedef int qint32; typedef unsigned int quint32; typedef long long qint64; typedef unsigned long long quint64; typedef qint64 qlonglong; typedef quint64 qulonglong; %If (PyQt_qreal_double) typedef double qreal; %End %If (!PyQt_qreal_double) typedef float qreal; %End typedef unsigned char uchar; typedef unsigned short ushort; typedef unsigned int uint; typedef unsigned long ulong; double qAbs(const double &t); int qRound(qreal d); qint64 qRound64(qreal d); const char *qVersion(); bool qSharedBuild(); // Template definition for QFlags. template class QFlags /NoDefaultCtors, PyQtFlags=0x1, TypeHintIn="Union[QFlags, ENUM]"/ { public: // QFlags is supposed to be a more type safe version of an int (even though // Qt has cases where it expects multiple flag types to be or-ed together). // Because of the C++ int() operator and because type(ENUM) is a sub-type // of int, most of this is lost. Therefore we only implement logical // operators that take int arguments. QFlags(); QFlags(int f /TypeHint="QFlags"/); // This will never be called because the above ctor will be invoked first. // However it's required for sip to generate assignment helpers. QFlags(const QFlags &); operator int() const; QFlags operator~() const; QFlags operator&(int f /TypeHint="QFlags"/) const; QFlags &operator&=(int f /TypeHint="QFlags"/); QFlags operator|(int f /TypeHint="QFlags"/) const; QFlags &operator|=(int f /TypeHint="QFlags"/); %MethodCode *sipCpp = QFlags(*sipCpp | a0); %End QFlags operator^(int f /TypeHint="QFlags"/) const; QFlags &operator^=(int f /TypeHint="QFlags"/); %MethodCode *sipCpp = QFlags(*sipCpp ^ a0); %End // These are necessary to prevent Python comparing object IDs. bool operator==(const QFlags &f) const; %MethodCode sipRes = (sipCpp->operator QFlags::Int() == a0->operator QFlags::Int()); %End bool operator!=(const QFlags &f) const; %MethodCode sipRes = (sipCpp->operator QFlags::Int() != a0->operator QFlags::Int()); %End int __bool__() const; %MethodCode sipRes = (sipCpp->operator QFlags::Int() != 0); %End long __hash__() const; %MethodCode sipRes = sipCpp->operator QFlags::Int(); %End %ConvertToTypeCode // Allow an instance of the base enum whenever a QFlags is expected. if (sipIsErr == NULL) return (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_ENUM)) || sipCanConvertToType(sipPy, sipType_QFlags, SIP_NO_CONVERTORS)); if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_ENUM))) { *sipCppPtr = new QFlags(int(SIPLong_AsLong(sipPy))); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QFlags, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End }; // Hook's into Qt's resource system. %ModuleCode QT_BEGIN_NAMESPACE extern bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); extern bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); QT_END_NAMESPACE %End bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); bool qFuzzyCompare(double p1, double p2); bool qIsNull(double d); void qsrand(uint seed); int qrand(); typedef void *QFunctionPointer; // Mapped type for qintptr. // Map qintptr onto sip.voidptr. This means either an address (on Windows) or // an integer file descriptor (on everything else) can be used. %MappedType qintptr /TypeHint="sip.voidptr"/ { %TypeHeaderCode #include %End %ConvertToTypeCode qintptr ptr = (qintptr)sipConvertToVoidPtr(sipPy); if (!sipIsErr) return !PyErr_Occurred(); // Mapped types deal with pointers, so create one on the heap. qintptr *heap = new qintptr; *heap = ptr; *sipCppPtr = heap; // Make sure the pointer doesn't leak. return SIP_TEMPORARY; %End %ConvertFromTypeCode return sipConvertFromVoidPtr((void *)*sipCpp); %End }; // Mapped type for quintptr. // Map quintptr onto sip.voidptr. This means either an address (on Windows) or // an integer file descriptor (on everything else) can be used. %MappedType quintptr /TypeHint="sip.voidptr"/ { %TypeHeaderCode #include %End %ConvertToTypeCode quintptr ptr = (quintptr)sipConvertToVoidPtr(sipPy); if (!sipIsErr) return !PyErr_Occurred(); // Mapped types deal with pointers, so create one on the heap. quintptr *heap = new quintptr; *heap = ptr; *sipCppPtr = heap; // Make sure the pointer doesn't leak. return SIP_TEMPORARY; %End %ConvertFromTypeCode return sipConvertFromVoidPtr((void *)*sipCpp); %End }; // Implementations of pyqt[Set]PickleProtocol(). void pyqtSetPickleProtocol(SIP_PYOBJECT /TypeHint="Optional[int]"/); %MethodCode Py_XDECREF(qpycore_pickle_protocol); qpycore_pickle_protocol = a0; Py_INCREF(qpycore_pickle_protocol); %End SIP_PYOBJECT pyqtPickleProtocol() /TypeHint="Optional[int]"/; %MethodCode sipRes = qpycore_pickle_protocol; if (!sipRes) sipRes = Py_None; Py_INCREF(sipRes); %End %If (Qt_5_10_0 -) QString qEnvironmentVariable(const char *varName); %End %If (Qt_5_10_0 -) QString qEnvironmentVariable(const char *varName, const QString &defaultValue); %End PyQt5_gpl-5.10.1/sip/QtCore/qhistorystate.sip0000644000076500000240000000403213245233150021126 0ustar philstaff00000000000000// qhistorystate.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHistoryState : QAbstractState { %TypeHeaderCode #include %End public: enum HistoryType { ShallowHistory, DeepHistory, }; QHistoryState(QState *parent /TransferThis/ = 0); QHistoryState(QHistoryState::HistoryType type, QState *parent /TransferThis/ = 0); virtual ~QHistoryState(); QAbstractState *defaultState() const; void setDefaultState(QAbstractState *state /KeepReference=0/); QHistoryState::HistoryType historyType() const; void setHistoryType(QHistoryState::HistoryType type); protected: virtual void onEntry(QEvent *event); virtual void onExit(QEvent *event); virtual bool event(QEvent *e); signals: %If (Qt_5_4_0 -) void defaultStateChanged(); %End %If (Qt_5_4_0 -) void historyTypeChanged(); %End public: %If (Qt_5_6_0 -) QAbstractTransition *defaultTransition() const; %End %If (Qt_5_6_0 -) void setDefaultTransition(QAbstractTransition *transition /KeepReference=1/); %End signals: %If (Qt_5_6_0 -) void defaultTransitionChanged(); %End private: QHistoryState(const QHistoryState &); }; PyQt5_gpl-5.10.1/sip/QtCore/qidentityproxymodel.sip0000644000076500000240000000564213245233150022350 0ustar philstaff00000000000000// qidentityproxymodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QIdentityProxyModel : QAbstractProxyModel { %TypeHeaderCode #include %End public: explicit QIdentityProxyModel(QObject *parent /TransferThis/ = 0); virtual ~QIdentityProxyModel(); virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const; virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const; virtual QModelIndex parent(const QModelIndex &child) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual QItemSelection mapSelectionFromSource(const QItemSelection &selection) const; virtual QItemSelection mapSelectionToSource(const QItemSelection &selection) const; virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchStartsWith|Qt::MatchWrap) const; virtual void setSourceModel(QAbstractItemModel *sourceModel /KeepReference/); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); %If (Qt_5_5_0 -) virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; %End %If (- Qt_5_5_0) virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const; %End virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; private: QIdentityProxyModel(const QIdentityProxyModel &); }; PyQt5_gpl-5.10.1/sip/QtCore/qiodevice.sip0000644000076500000240000002265413245233150020165 0ustar philstaff00000000000000// qiodevice.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QIODevice : QObject { %TypeHeaderCode #include %End public: enum OpenModeFlag { NotOpen, ReadOnly, WriteOnly, ReadWrite, Append, Truncate, Text, Unbuffered, }; typedef QFlags OpenMode; QIODevice(); explicit QIODevice(QObject *parent /TransferThis/); virtual ~QIODevice(); QIODevice::OpenMode openMode() const; void setTextModeEnabled(bool enabled); bool isTextModeEnabled() const; bool isOpen() const; bool isReadable() const; bool isWritable() const; virtual bool isSequential() const; virtual bool open(QIODevice::OpenMode mode) /ReleaseGIL/; virtual void close() /ReleaseGIL/; virtual qint64 pos() const; virtual qint64 size() const; virtual bool seek(qint64 pos) /ReleaseGIL/; virtual bool atEnd() const; virtual bool reset(); virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; SIP_PYOBJECT read(qint64 maxlen) /TypeHint="Py_v3:bytes;str",ReleaseGIL/; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS len = sipCpp->read(s, a0); Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End QByteArray readAll() /ReleaseGIL/; SIP_PYOBJECT readLine(qint64 maxlen=0) /TypeHint="Py_v3:bytes;str",ReleaseGIL/; %MethodCode // The two C++ overloads would have the same Python signature so we get most of // the combined functionality by treating an argument of 0 (the default) as // meaning return a QByteArray of any length. Otherwise it is treated as a // maximum buffer size and a Python string is returned. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else if (a0 == 0) { QByteArray *ba; Py_BEGIN_ALLOW_THREADS ba = new QByteArray(sipCpp->readLine(a0)); Py_END_ALLOW_THREADS sipRes = sipBuildResult(&sipIsErr, "N", ba, sipType_QByteArray, 0); } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS len = sipCpp->readLine(s, a0); Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual bool canReadLine() const; QByteArray peek(qint64 maxlen) /ReleaseGIL/; qint64 write(const QByteArray &data) /ReleaseGIL/; virtual bool waitForReadyRead(int msecs) /ReleaseGIL/; virtual bool waitForBytesWritten(int msecs) /ReleaseGIL/; void ungetChar(char c); bool putChar(char c); bool getChar(char *c /Encoding="None",Out/); QString errorString() const; signals: void readyRead(); void bytesWritten(qint64 bytes); void aboutToClose(); void readChannelFinished(); protected: virtual SIP_PYOBJECT readData(qint64 maxlen) = 0 /TypeHint="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipCpp->readData(s, a0); #else len = sipCpp->sipProtect_readData(s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End %VirtualCatcherCode PyObject *result = sipCallMethod(&sipIsErr, sipMethod, "n", a1); if (result != NULL) { PyObject *buf; sipParseResult(&sipIsErr, sipMethod, result, "O", &buf); if (buf == Py_None) sipRes = -1L; else if (!SIPBytes_Check(buf)) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { memcpy(a0, SIPBytes_AsString(buf), SIPBytes_Size(buf)); sipRes = SIPBytes_Size(buf); } Py_DECREF(buf); Py_DECREF(result); } %End virtual SIP_PYOBJECT readLineData(qint64 maxlen) /TypeHint="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QIODevice::readLineData(s, a0) : sipCpp->readLineData(s, a0); #else len = sipCpp->sipProtectVirt_readLineData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End %VirtualCatcherCode PyObject *result = sipCallMethod(&sipIsErr, sipMethod, "n", a1); if (result != NULL) { PyObject *buf; sipParseResult(&sipIsErr, sipMethod, result, "O", &buf); if (buf == Py_None) sipRes = -1L; else if (!SIPBytes_Check(buf)) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { memcpy(a0, SIPBytes_AsString(buf), SIPBytes_Size(buf)); sipRes = SIPBytes_Size(buf); } Py_DECREF(buf); Py_DECREF(result); } %End virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) = 0; void setOpenMode(QIODevice::OpenMode openMode); void setErrorString(const QString &errorString); public: %If (Qt_5_7_0 -) int readChannelCount() const; %End %If (Qt_5_7_0 -) int writeChannelCount() const; %End %If (Qt_5_7_0 -) int currentReadChannel() const; %End %If (Qt_5_7_0 -) void setCurrentReadChannel(int channel); %End %If (Qt_5_7_0 -) int currentWriteChannel() const; %End %If (Qt_5_7_0 -) void setCurrentWriteChannel(int channel); %End %If (Qt_5_7_0 -) void startTransaction(); %End %If (Qt_5_7_0 -) void commitTransaction(); %End %If (Qt_5_7_0 -) void rollbackTransaction(); %End %If (Qt_5_7_0 -) bool isTransactionStarted() const; %End signals: %If (Qt_5_7_0 -) void channelReadyRead(int channel); %End %If (Qt_5_7_0 -) void channelBytesWritten(int channel, qint64 bytes); %End public: %If (Qt_5_10_0 -) qint64 skip(qint64 maxSize); %End private: QIODevice(const QIODevice &); }; QFlags operator|(QIODevice::OpenModeFlag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtCore/qitemselectionmodel.sip0000644000076500000240000002341313245233150022255 0ustar philstaff00000000000000// qitemselectionmodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QItemSelectionRange { %TypeHeaderCode #include %End public: QItemSelectionRange(); QItemSelectionRange(const QItemSelectionRange &other); QItemSelectionRange(const QModelIndex &atopLeft, const QModelIndex &abottomRight); explicit QItemSelectionRange(const QModelIndex &index); int top() const; int left() const; int bottom() const; int right() const; int width() const; int height() const; const QPersistentModelIndex &topLeft() const; const QPersistentModelIndex &bottomRight() const; QModelIndex parent() const; const QAbstractItemModel *model() const; bool contains(const QModelIndex &index) const; bool contains(int row, int column, const QModelIndex &parentIndex) const; bool intersects(const QItemSelectionRange &other) const; bool operator==(const QItemSelectionRange &other) const; bool operator!=(const QItemSelectionRange &other) const; bool isValid() const; QModelIndexList indexes() const; QItemSelectionRange intersected(const QItemSelectionRange &other) const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End bool isEmpty() const; bool operator<(const QItemSelectionRange &other) const; %If (Qt_5_6_0 -) void swap(QItemSelectionRange &other /Constrained/); %End }; class QItemSelectionModel : QObject { %TypeHeaderCode #include %End public: enum SelectionFlag { NoUpdate, Clear, Select, Deselect, Toggle, Current, Rows, Columns, SelectCurrent, ToggleCurrent, ClearAndSelect, }; typedef QFlags SelectionFlags; %If (Qt_5_5_0 -) explicit QItemSelectionModel(QAbstractItemModel *model /TransferThis/ = 0); %End %If (- Qt_5_5_0) explicit QItemSelectionModel(QAbstractItemModel *model /TransferThis/); %End QItemSelectionModel(QAbstractItemModel *model, QObject *parent /TransferThis/); virtual ~QItemSelectionModel(); QModelIndex currentIndex() const; bool isSelected(const QModelIndex &index) const; bool isRowSelected(int row, const QModelIndex &parent) const; bool isColumnSelected(int column, const QModelIndex &parent) const; bool rowIntersectsSelection(int row, const QModelIndex &parent) const; bool columnIntersectsSelection(int column, const QModelIndex &parent) const; QModelIndexList selectedIndexes() const; const QItemSelection selection() const; %If (Qt_5_5_0 -) QAbstractItemModel *model(); %End %If (- Qt_5_5_0) const QAbstractItemModel *model() const; %End public slots: virtual void clear(); void clearSelection(); virtual void reset(); virtual void select(const QModelIndex &index, QItemSelectionModel::SelectionFlags command); virtual void select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command); virtual void setCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command); virtual void clearCurrentIndex(); signals: void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); void currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous); void currentColumnChanged(const QModelIndex ¤t, const QModelIndex &previous); protected: void emitSelectionChanged(const QItemSelection &newSelection, const QItemSelection &oldSelection); public: bool hasSelection() const; QModelIndexList selectedRows(int column = 0) const; QModelIndexList selectedColumns(int row = 0) const; %If (Qt_5_5_0 -) void setModel(QAbstractItemModel *model); %End signals: %If (Qt_5_5_0 -) void modelChanged(QAbstractItemModel *model); %End private: QItemSelectionModel(const QItemSelectionModel &); }; QFlags operator|(QItemSelectionModel::SelectionFlag f1, QFlags f2); class QItemSelection { %TypeHeaderCode #include %End public: QItemSelection(); QItemSelection(const QModelIndex &topLeft, const QModelIndex &bottomRight); void select(const QModelIndex &topLeft, const QModelIndex &bottomRight); bool contains(const QModelIndex &index) const; int __contains__(const QModelIndex &index); %MethodCode // It looks like you can't assign QBool to int. sipRes = bool(sipCpp->contains(*a0)); %End QModelIndexList indexes() const; void merge(const QItemSelection &other, QItemSelectionModel::SelectionFlags command); static void split(const QItemSelectionRange &range, const QItemSelectionRange &other, QItemSelection *result); void __setitem__(int i, const QItemSelectionRange &range); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __setitem__(SIP_PYSLICE slice, const QItemSelection &list); %MethodCode Py_ssize_t len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { int vlen = a1->count(); if (vlen != slicelength) { sipBadLengthForSlice(vlen, slicelength); sipIsErr = 1; } else { QItemSelection::const_iterator it = a1->begin(); for (i = 0; i < slicelength; ++i) { (*sipCpp)[start] = *it; start += step; ++it; } } } %End void __delitem__(int i); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else sipCpp->removeAt(a0); %End void __delitem__(SIP_PYSLICE slice); %MethodCode Py_ssize_t len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else for (i = 0; i < slicelength; ++i) { sipCpp->removeAt(start); start += step - 1; } %End QItemSelectionRange operator[](int i); %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QItemSelectionRange(sipCpp->operator[]((int)idx)); %End QItemSelection operator[](SIP_PYSLICE slice); %MethodCode Py_ssize_t len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { sipRes = new QItemSelection(); for (i = 0; i < slicelength; ++i) { (*sipRes) += (*sipCpp)[start]; start += step; } } %End // Methods inherited from QList. bool operator!=(const QItemSelection &other) const; bool operator==(const QItemSelection &other) const; // Keep the following in sync with QStringList (except for mid()). void clear(); bool isEmpty() const; void append(const QItemSelectionRange &range); void prepend(const QItemSelectionRange &range); void insert(int i, const QItemSelectionRange &range); void replace(int i, const QItemSelectionRange &range); void removeAt(int i); int removeAll(const QItemSelectionRange &range); QItemSelectionRange takeAt(int i); QItemSelectionRange takeFirst(); QItemSelectionRange takeLast(); void move(int from, int to); void swap(int i, int j); int count(const QItemSelectionRange &range) const; int count() const /__len__/; QItemSelectionRange &first(); QItemSelectionRange &last(); int indexOf(const QItemSelectionRange &value, int from = 0) const; int lastIndexOf(const QItemSelectionRange &value, int from = -1) const; QItemSelection &operator+=(const QItemSelection &other); QItemSelection &operator+=(const QItemSelectionRange &value); }; PyQt5_gpl-5.10.1/sip/QtCore/qjsonarray.sip0000644000076500000240000000635613245233150020407 0ustar philstaff00000000000000// This is the SIP interface definition for the QJsonArray mapped type. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // Note that we assume any iterable can be converted to a QJsonArray. However, // because QJsonObject is implemented as a dict (which is also an iterable), // then any overloads that handle both must be ordered so that QJsonObject is // checked first. %MappedType QJsonArray /TypeHintIn="Iterable[QJsonValue]", TypeHintOut="List[QJsonValue]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { QJsonValue *t = new QJsonValue(sipCpp->at(i)); PyObject *tobj = sipConvertFromNewType(t, sipType_QJsonValue, sipTransferObj); if (!tobj) { delete t; Py_DECREF(l); return 0; } PyList_SetItem(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QJsonArray *ql = new QJsonArray; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; QJsonValue *t = reinterpret_cast( sipForceConvertToType(itm, sipType_QJsonValue, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QJsonValue' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(*t); sipReleaseType(t, sipType_QJsonValue, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; PyQt5_gpl-5.10.1/sip/QtCore/qjsondocument.sip0000644000076500000240000000626013245233150021101 0ustar philstaff00000000000000// qjsondocument.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. struct QJsonParseError { %TypeHeaderCode #include %End enum ParseError { NoError, UnterminatedObject, MissingNameSeparator, UnterminatedArray, MissingValueSeparator, IllegalValue, TerminationByNumber, IllegalNumber, IllegalEscapeSequence, IllegalUTF8String, UnterminatedString, MissingObject, DeepNesting, DocumentTooLarge, %If (Qt_5_4_0 -) GarbageAtEnd, %End }; QString errorString() const; int offset; QJsonParseError::ParseError error; }; class QJsonDocument { %TypeHeaderCode #include %End public: QJsonDocument(); explicit QJsonDocument(const QJsonObject &object); explicit QJsonDocument(const QJsonArray &array); QJsonDocument(const QJsonDocument &other); ~QJsonDocument(); enum DataValidation { Validate, BypassValidation, }; static QJsonDocument fromRawData(const char *data /Encoding="None"/, int size, QJsonDocument::DataValidation validation = QJsonDocument::Validate); const char *rawData(int *size /Out/) const /Encoding="None"/; static QJsonDocument fromBinaryData(const QByteArray &data, QJsonDocument::DataValidation validation = QJsonDocument::Validate); QByteArray toBinaryData() const; static QJsonDocument fromVariant(const QVariant &variant); QVariant toVariant() const; enum JsonFormat { Indented, Compact, }; static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error = 0); QByteArray toJson() const; QByteArray toJson(QJsonDocument::JsonFormat format) const; bool isEmpty() const; bool isArray() const; bool isObject() const; QJsonObject object() const; QJsonArray array() const; void setObject(const QJsonObject &object); void setArray(const QJsonArray &array); bool operator==(const QJsonDocument &other) const; bool operator!=(const QJsonDocument &other) const; bool isNull() const; %If (Qt_5_10_0 -) void swap(QJsonDocument &other /Constrained/); %End %If (Qt_5_10_0 -) const QJsonValue operator[](const QString &key) const; %End %If (Qt_5_10_0 -) const QJsonValue operator[](int i) const; %End }; PyQt5_gpl-5.10.1/sip/QtCore/qjsonobject.sip0000644000076500000240000000665413245233150020540 0ustar philstaff00000000000000// This is the SIP interface definition for the QJsonObject mapped type. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QJsonObject /TypeHint="Dict[QString, QJsonValue]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QJsonObject::const_iterator it = sipCpp->constBegin(); QJsonObject::const_iterator end = sipCpp->constEnd(); while (it != end) { QString *k = new QString(it.key()); PyObject *kobj = sipConvertFromNewType(k, sipType_QString, sipTransferObj); if (!kobj) { delete k; Py_DECREF(d); return 0; } QJsonValue *v = new QJsonValue(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType_QJsonValue, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QJsonObject *jo = new QJsonObject; Py_ssize_t pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int kstate; QString *k = reinterpret_cast( sipForceConvertToType(kobj, sipType_QString, sipTransferObj, SIP_NOT_NONE, &kstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a key has type '%s' but 'str' is expected", sipPyTypeName(Py_TYPE(kobj))); delete jo; return 0; } int vstate; QJsonValue *v = reinterpret_cast( sipForceConvertToType(vobj, sipType_QJsonValue, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a value has type '%s' but 'QJsonValue' is expected", sipPyTypeName(Py_TYPE(vobj))); sipReleaseType(k, sipType_QString, kstate); delete jo; return 0; } jo->insert(*k, *v); sipReleaseType(v, sipType_QJsonValue, vstate); sipReleaseType(k, sipType_QString, kstate); } *sipCppPtr = jo; return sipGetState(sipTransferObj); %End }; PyQt5_gpl-5.10.1/sip/QtCore/qjsonvalue.sip0000644000076500000240000000532213245233150020375 0ustar philstaff00000000000000// qjsonvalue.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QJsonValue /TypeHintIn="Union[QJsonValue, QJsonValue.Type, QJsonArray, QJsonObject, bool, int, float, QString]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode if (!sipIsErr) return qpycore_canConvertTo_QJsonValue(sipPy); return qpycore_convertTo_QJsonValue(sipPy, sipTransferObj, sipCppPtr, sipIsErr); %End public: enum Type { Null, Bool, Double, String, Array, Object, Undefined, }; QJsonValue(QJsonValue::Type type /Constrained/ = QJsonValue::Null); QJsonValue(const QJsonValue &other); ~QJsonValue(); static QJsonValue fromVariant(const QVariant &variant); QVariant toVariant() const; QJsonValue::Type type() const; bool isNull() const; bool isBool() const; bool isDouble() const; bool isString() const; bool isArray() const; bool isObject() const; bool isUndefined() const; bool toBool(bool defaultValue = false) const; int toInt(int defaultValue = 0) const; double toDouble(double defaultValue = 0) const; QJsonArray toArray() const; QJsonArray toArray(const QJsonArray &defaultValue) const; QJsonObject toObject() const; QJsonObject toObject(const QJsonObject &defaultValue) const; bool operator==(const QJsonValue &other) const; bool operator!=(const QJsonValue &other) const; %If (Qt_5_7_0 -) QString toString() const; %End %If (Qt_5_7_0 -) QString toString(const QString &defaultValue) const; %End %If (- Qt_5_7_0) QString toString(const QString &defaultValue = QString()) const; %End %If (Qt_5_10_0 -) void swap(QJsonValue &other /Constrained/); %End %If (Qt_5_10_0 -) const QJsonValue operator[](const QString &key) const; %End %If (Qt_5_10_0 -) const QJsonValue operator[](int i) const; %End }; PyQt5_gpl-5.10.1/sip/QtCore/qlibrary.sip0000644000076500000240000000472513245233150020041 0ustar philstaff00000000000000// qlibrary.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLibrary : QObject { %TypeHeaderCode #include %End public: enum LoadHint { ResolveAllSymbolsHint, ExportExternalSymbolsHint, LoadArchiveMemberHint, PreventUnloadHint, %If (Qt_5_5_0 -) DeepBindHint, %End }; typedef QFlags LoadHints; explicit QLibrary(QObject *parent /TransferThis/ = 0); QLibrary(const QString &fileName, QObject *parent /TransferThis/ = 0); QLibrary(const QString &fileName, int verNum, QObject *parent /TransferThis/ = 0); QLibrary(const QString &fileName, const QString &version, QObject *parent /TransferThis/ = 0); virtual ~QLibrary(); QString errorString() const; QString fileName() const; bool isLoaded() const; bool load(); QLibrary::LoadHints loadHints() const; QFunctionPointer resolve(const char *symbol); static QFunctionPointer resolve(const QString &fileName, const char *symbol); static QFunctionPointer resolve(const QString &fileName, int verNum, const char *symbol); static QFunctionPointer resolve(const QString &fileName, const QString &version, const char *symbol); bool unload(); static bool isLibrary(const QString &fileName); void setFileName(const QString &fileName); void setFileNameAndVersion(const QString &fileName, int verNum); void setFileNameAndVersion(const QString &fileName, const QString &version); void setLoadHints(QLibrary::LoadHints hints); }; QFlags operator|(QLibrary::LoadHint f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtCore/qlibraryinfo.sip0000644000076500000240000000323513245233150020710 0ustar philstaff00000000000000// qlibraryinfo.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLibraryInfo { %TypeHeaderCode #include %End public: static QString licensee(); static QString licensedProducts(); enum LibraryLocation { PrefixPath, DocumentationPath, HeadersPath, LibrariesPath, BinariesPath, PluginsPath, DataPath, TranslationsPath, SettingsPath, ExamplesPath, ImportsPath, TestsPath, LibraryExecutablesPath, Qml2ImportsPath, ArchDataPath, }; static QString location(QLibraryInfo::LibraryLocation); static QDate buildDate(); static bool isDebugBuild(); %If (Qt_5_8_0 -) static QVersionNumber version(); %End private: QLibraryInfo(); }; PyQt5_gpl-5.10.1/sip/QtCore/qline.sip0000644000076500000240000001420713245233150017320 0ustar philstaff00000000000000// qline.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLine { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"iiii", sipCpp->x1(), sipCpp->y1(), sipCpp->x2(), sipCpp->y2()); %End public: bool operator!=(const QLine &d) const; QLine(); QLine(const QPoint &pt1_, const QPoint &pt2_); QLine(int x1pos, int y1pos, int x2pos, int y2pos); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QLine()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QLine()"); #endif } else { sipRes = #if PY_MAJOR_VERSION >= 3 PyUnicode_FromFormat #else PyString_FromFormat #endif ("PyQt5.QtCore.QLine(%i, %i, %i, %i)", sipCpp->x1(), sipCpp->y1(), sipCpp->x2(), sipCpp->y2()); } %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End int x1() const; int y1() const; int x2() const; int y2() const; QPoint p1() const; QPoint p2() const; int dx() const; int dy() const; void translate(const QPoint &point); void translate(int adx, int ady); bool operator==(const QLine &d) const; QLine translated(const QPoint &p) const; QLine translated(int adx, int ady) const; void setP1(const QPoint &aP1); void setP2(const QPoint &aP2); void setPoints(const QPoint &aP1, const QPoint &aP2); void setLine(int aX1, int aY1, int aX2, int aY2); %If (Qt_5_8_0 -) QPoint center() const; %End }; QDataStream &operator<<(QDataStream &, const QLine & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QLine & /Constrained/) /ReleaseGIL/; class QLineF { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"dddd", sipCpp->x1(), sipCpp->y1(), sipCpp->x2(), sipCpp->y2()); %End public: enum IntersectType { NoIntersection, BoundedIntersection, UnboundedIntersection, }; QLineF(const QLine &line); bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End qreal length() const; QLineF unitVector() const; QLineF::IntersectType intersect(const QLineF &l, QPointF *intersectionPoint) const; bool operator!=(const QLineF &d) const; QLineF(); QLineF(const QPointF &apt1, const QPointF &apt2); QLineF(qreal x1pos, qreal y1pos, qreal x2pos, qreal y2pos); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QLineF()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QLineF()"); #endif } else { PyObject *x1 = PyFloat_FromDouble(sipCpp->x1()); PyObject *y1 = PyFloat_FromDouble(sipCpp->y1()); PyObject *x2 = PyFloat_FromDouble(sipCpp->x2()); PyObject *y2 = PyFloat_FromDouble(sipCpp->y2()); if (x1 && y1 && x2 && y2) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QLineF(%R, %R, %R, %R)", x1, y1, x2, y2); #else sipRes = PyString_FromString("PyQt5.QtCore.QLineF("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(x1)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(y1)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(x2)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(y2)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } Py_XDECREF(x1); Py_XDECREF(y1); Py_XDECREF(x2); Py_XDECREF(y2); } %End qreal x1() const; qreal y1() const; qreal x2() const; qreal y2() const; QPointF p1() const; QPointF p2() const; qreal dx() const; qreal dy() const; QLineF normalVector() const; void translate(const QPointF &point); void translate(qreal adx, qreal ady); void setLength(qreal len); QPointF pointAt(qreal t) const; QLine toLine() const; bool operator==(const QLineF &d) const; static QLineF fromPolar(qreal length, qreal angle); qreal angle() const; void setAngle(qreal angle); qreal angleTo(const QLineF &l) const; QLineF translated(const QPointF &p) const; QLineF translated(qreal adx, qreal ady) const; void setP1(const QPointF &aP1); void setP2(const QPointF &aP2); void setPoints(const QPointF &aP1, const QPointF &aP2); void setLine(qreal aX1, qreal aY1, qreal aX2, qreal aY2); %If (Qt_5_8_0 -) QPointF center() const; %End }; QDataStream &operator<<(QDataStream &, const QLineF & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QLineF & /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtCore/qlocale.sip0000644000076500000240000007362513245233150017641 0ustar philstaff00000000000000// qlocale.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLocale { %TypeHeaderCode #include %End public: enum Language { C, Abkhazian, Afan, Afar, Afrikaans, Albanian, Amharic, Arabic, Armenian, Assamese, Aymara, Azerbaijani, Bashkir, Basque, Bengali, Bhutani, Bihari, Bislama, Breton, Bulgarian, Burmese, Byelorussian, Cambodian, Catalan, Chinese, Corsican, Croatian, Czech, Danish, Dutch, English, Esperanto, Estonian, Faroese, Finnish, French, Frisian, Gaelic, Galician, Georgian, German, Greek, Greenlandic, Guarani, Gujarati, Hausa, Hebrew, Hindi, Hungarian, Icelandic, Indonesian, Interlingua, Interlingue, Inuktitut, Inupiak, Irish, Italian, Japanese, Javanese, Kannada, Kashmiri, Kazakh, Kinyarwanda, Kirghiz, Korean, Kurdish, Kurundi, Latin, Latvian, Lingala, Lithuanian, Macedonian, Malagasy, Malay, Malayalam, Maltese, Maori, Marathi, Moldavian, Mongolian, NauruLanguage, Nepali, Norwegian, Occitan, Oriya, Pashto, Persian, Polish, Portuguese, Punjabi, Quechua, RhaetoRomance, Romanian, Russian, Samoan, Sanskrit, Serbian, SerboCroatian, Shona, Sindhi, Slovak, Slovenian, Somali, Spanish, Sundanese, Swahili, Swedish, Tagalog, Tajik, Tamil, Tatar, Telugu, Thai, Tibetan, Tigrinya, Tsonga, Turkish, Turkmen, Twi, Uigur, Ukrainian, Urdu, Uzbek, Vietnamese, Volapuk, Welsh, Wolof, Xhosa, Yiddish, Yoruba, Zhuang, Zulu, Bosnian, Divehi, Manx, Cornish, LastLanguage, NorwegianBokmal, NorwegianNynorsk, Akan, Konkani, Ga, Igbo, Kamba, Syriac, Blin, Geez, Koro, Sidamo, Atsam, Tigre, Jju, Friulian, Venda, Ewe, Walamo, Hawaiian, Tyap, Chewa, Filipino, SwissGerman, SichuanYi, Kpelle, LowGerman, SouthNdebele, NorthernSotho, NorthernSami, Taroko, Gusii, Taita, Fulah, Kikuyu, Samburu, Sena, NorthNdebele, Rombo, Tachelhit, Kabyle, Nyankole, Bena, Vunjo, Bambara, Embu, Cherokee, Morisyen, Makonde, Langi, Ganda, Bemba, Kabuverdianu, Meru, Kalenjin, Nama, Machame, Colognian, Masai, Soga, Luyia, Asu, Teso, Saho, KoyraChiini, Rwa, Luo, Chiga, CentralMoroccoTamazight, KoyraboroSenni, Shambala, AnyLanguage, Rundi, Bodo, Aghem, Basaa, Zarma, Duala, JolaFonyi, Ewondo, Bafia, LubaKatanga, MakhuwaMeetto, Mundang, Kwasio, Nuer, Sakha, Sangu, CongoSwahili, Tasawaq, Vai, Walser, Yangben, Oromo, Dzongkha, Belarusian, Khmer, Fijian, WesternFrisian, Lao, Marshallese, Romansh, Sango, Ossetic, SouthernSotho, Tswana, Sinhala, Swati, Sardinian, Tongan, Tahitian, Nyanja, Avaric, Chamorro, Chechen, Church, Chuvash, Cree, Haitian, Herero, HiriMotu, Kanuri, Komi, Kongo, Kwanyama, Limburgish, Luxembourgish, Navaho, Ndonga, Ojibwa, Pali, Walloon, Avestan, Asturian, Ngomba, Kako, Meta, Ngiemboon, %If (Qt_5_1_0 -) Uighur, %End %If (Qt_5_1_0 -) Aragonese, %End %If (Qt_5_1_0 -) Akkadian, %End %If (Qt_5_1_0 -) AncientEgyptian, %End %If (Qt_5_1_0 -) AncientGreek, %End %If (Qt_5_1_0 -) Aramaic, %End %If (Qt_5_1_0 -) Balinese, %End %If (Qt_5_1_0 -) Bamun, %End %If (Qt_5_1_0 -) BatakToba, %End %If (Qt_5_1_0 -) Buginese, %End %If (Qt_5_1_0 -) Buhid, %End %If (Qt_5_1_0 -) Carian, %End %If (Qt_5_1_0 -) Chakma, %End %If (Qt_5_1_0 -) ClassicalMandaic, %End %If (Qt_5_1_0 -) Coptic, %End %If (Qt_5_1_0 -) Dogri, %End %If (Qt_5_1_0 -) EasternCham, %End %If (Qt_5_1_0 -) EasternKayah, %End %If (Qt_5_1_0 -) Etruscan, %End %If (Qt_5_1_0 -) Gothic, %End %If (Qt_5_1_0 -) Hanunoo, %End %If (Qt_5_1_0 -) Ingush, %End %If (Qt_5_1_0 -) LargeFloweryMiao, %End %If (Qt_5_1_0 -) Lepcha, %End %If (Qt_5_1_0 -) Limbu, %End %If (Qt_5_1_0 -) Lisu, %End %If (Qt_5_1_0 -) Lu, %End %If (Qt_5_1_0 -) Lycian, %End %If (Qt_5_1_0 -) Lydian, %End %If (Qt_5_1_0 -) Mandingo, %End %If (Qt_5_1_0 -) Manipuri, %End %If (Qt_5_1_0 -) Meroitic, %End %If (Qt_5_1_0 -) NorthernThai, %End %If (Qt_5_1_0 -) OldIrish, %End %If (Qt_5_1_0 -) OldNorse, %End %If (Qt_5_1_0 -) OldPersian, %End %If (Qt_5_1_0 -) OldTurkish, %End %If (Qt_5_1_0 -) Pahlavi, %End %If (Qt_5_1_0 -) Parthian, %End %If (Qt_5_1_0 -) Phoenician, %End %If (Qt_5_1_0 -) PrakritLanguage, %End %If (Qt_5_1_0 -) Rejang, %End %If (Qt_5_1_0 -) Sabaean, %End %If (Qt_5_1_0 -) Samaritan, %End %If (Qt_5_1_0 -) Santali, %End %If (Qt_5_1_0 -) Saurashtra, %End %If (Qt_5_1_0 -) Sora, %End %If (Qt_5_1_0 -) Sylheti, %End %If (Qt_5_1_0 -) Tagbanwa, %End %If (Qt_5_1_0 -) TaiDam, %End %If (Qt_5_1_0 -) TaiNua, %End %If (Qt_5_1_0 -) Ugaritic, %End %If (Qt_5_3_0 -) Akoose, %End %If (Qt_5_3_0 -) Lakota, %End %If (Qt_5_3_0 -) StandardMoroccanTamazight, %End %If (Qt_5_5_0 -) Mapuche, %End %If (Qt_5_5_0 -) CentralKurdish, %End %If (Qt_5_5_0 -) LowerSorbian, %End %If (Qt_5_5_0 -) UpperSorbian, %End %If (Qt_5_5_0 -) Kenyang, %End %If (Qt_5_5_0 -) Mohawk, %End %If (Qt_5_5_0 -) Nko, %End %If (Qt_5_5_0 -) Prussian, %End %If (Qt_5_5_0 -) Kiche, %End %If (Qt_5_5_0 -) SouthernSami, %End %If (Qt_5_5_0 -) LuleSami, %End %If (Qt_5_5_0 -) InariSami, %End %If (Qt_5_5_0 -) SkoltSami, %End %If (Qt_5_5_0 -) Warlpiri, %End %If (Qt_5_5_0 -) ManichaeanMiddlePersian, %End %If (Qt_5_5_0 -) Mende, %End %If (Qt_5_5_0 -) AncientNorthArabian, %End %If (Qt_5_5_0 -) LinearA, %End %If (Qt_5_5_0 -) HmongNjua, %End %If (Qt_5_5_0 -) Ho, %End %If (Qt_5_5_0 -) Lezghian, %End %If (Qt_5_5_0 -) Bassa, %End %If (Qt_5_5_0 -) Mono, %End %If (Qt_5_5_0 -) TedimChin, %End %If (Qt_5_5_0 -) Maithili, %End %If (Qt_5_7_0 -) Ahom, %End %If (Qt_5_7_0 -) AmericanSignLanguage, %End %If (Qt_5_7_0 -) ArdhamagadhiPrakrit, %End %If (Qt_5_7_0 -) Bhojpuri, %End %If (Qt_5_7_0 -) HieroglyphicLuwian, %End %If (Qt_5_7_0 -) LiteraryChinese, %End %If (Qt_5_7_0 -) Mazanderani, %End %If (Qt_5_7_0 -) Mru, %End %If (Qt_5_7_0 -) Newari, %End %If (Qt_5_7_0 -) NorthernLuri, %End %If (Qt_5_7_0 -) Palauan, %End %If (Qt_5_7_0 -) Papiamento, %End %If (Qt_5_7_0 -) Saraiki, %End %If (Qt_5_7_0 -) TokelauLanguage, %End %If (Qt_5_7_0 -) TokPisin, %End %If (Qt_5_7_0 -) TuvaluLanguage, %End %If (Qt_5_7_0 -) UncodedLanguages, %End %If (Qt_5_7_0 -) Cantonese, %End %If (Qt_5_7_0 -) Osage, %End %If (Qt_5_7_0 -) Tangut, %End }; enum Country { AnyCountry, Afghanistan, Albania, Algeria, AmericanSamoa, Andorra, Angola, Anguilla, Antarctica, AntiguaAndBarbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belarus, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, BosniaAndHerzegowina, Botswana, BouvetIsland, Brazil, BritishIndianOceanTerritory, Bulgaria, BurkinaFaso, Burundi, Cambodia, Cameroon, Canada, CapeVerde, CaymanIslands, CentralAfricanRepublic, Chad, Chile, China, ChristmasIsland, CocosIslands, Colombia, Comoros, DemocraticRepublicOfCongo, PeoplesRepublicOfCongo, CookIslands, CostaRica, IvoryCoast, Croatia, Cuba, Cyprus, CzechRepublic, Denmark, Djibouti, Dominica, DominicanRepublic, EastTimor, Ecuador, Egypt, ElSalvador, EquatorialGuinea, Eritrea, Estonia, Ethiopia, FalklandIslands, FaroeIslands, Finland, France, FrenchGuiana, FrenchPolynesia, FrenchSouthernTerritories, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, Guadeloupe, Guam, Guatemala, Guinea, GuineaBissau, Guyana, Haiti, HeardAndMcDonaldIslands, Honduras, HongKong, Hungary, Iceland, India, Indonesia, Iran, Iraq, Ireland, Israel, Italy, Jamaica, Japan, Jordan, Kazakhstan, Kenya, Kiribati, DemocraticRepublicOfKorea, RepublicOfKorea, Kuwait, Kyrgyzstan, Latvia, Lebanon, Lesotho, Liberia, Liechtenstein, Lithuania, Luxembourg, Macau, Macedonia, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, MarshallIslands, Martinique, Mauritania, Mauritius, Mayotte, Mexico, Micronesia, Moldova, Monaco, Mongolia, Montserrat, Morocco, Mozambique, Myanmar, Namibia, NauruCountry, Nepal, Netherlands, NewCaledonia, NewZealand, Nicaragua, Niger, Nigeria, Niue, NorfolkIsland, NorthernMarianaIslands, Norway, Oman, Pakistan, Palau, Panama, PapuaNewGuinea, Paraguay, Peru, Philippines, Pitcairn, Poland, Portugal, PuertoRico, Qatar, Reunion, Romania, RussianFederation, Rwanda, SaintKittsAndNevis, Samoa, SanMarino, SaoTomeAndPrincipe, SaudiArabia, Senegal, Seychelles, SierraLeone, Singapore, Slovakia, Slovenia, SolomonIslands, Somalia, SouthAfrica, SouthGeorgiaAndTheSouthSandwichIslands, Spain, SriLanka, Sudan, Suriname, SvalbardAndJanMayenIslands, Swaziland, Sweden, Switzerland, SyrianArabRepublic, Taiwan, Tajikistan, Tanzania, Thailand, Togo, Tokelau, TrinidadAndTobago, Tunisia, Turkey, Turkmenistan, TurksAndCaicosIslands, Tuvalu, Uganda, Ukraine, UnitedArabEmirates, UnitedKingdom, UnitedStates, UnitedStatesMinorOutlyingIslands, Uruguay, Uzbekistan, Vanuatu, VaticanCityState, Venezuela, BritishVirginIslands, WallisAndFutunaIslands, WesternSahara, Yemen, Zambia, Zimbabwe, Montenegro, Serbia, SaintBarthelemy, SaintMartin, LatinAmericaAndTheCaribbean, LastCountry, Brunei, CongoKinshasa, CongoBrazzaville, Fiji, Guernsey, NorthKorea, SouthKorea, Laos, Libya, CuraSao, PalestinianTerritories, Russia, SaintLucia, SaintVincentAndTheGrenadines, SaintHelena, SaintPierreAndMiquelon, Syria, Tonga, Vietnam, UnitedStatesVirginIslands, CanaryIslands, ClippertonIsland, AscensionIsland, AlandIslands, DiegoGarcia, CeutaAndMelilla, IsleOfMan, Jersey, TristanDaCunha, SouthSudan, Bonaire, SintMaarten, %If (Qt_5_2_0 -) Kosovo, %End %If (Qt_5_7_0 -) TokelauCountry, %End %If (Qt_5_7_0 -) TuvaluCountry, %End %If (Qt_5_7_0 -) EuropeanUnion, %End %If (Qt_5_7_0 -) OutlyingOceania, %End }; enum NumberOption { OmitGroupSeparator, RejectGroupSeparator, %If (Qt_5_7_0 -) DefaultNumberOptions, %End %If (Qt_5_7_0 -) OmitLeadingZeroInExponent, %End %If (Qt_5_7_0 -) RejectLeadingZeroInExponent, %End %If (Qt_5_9_0 -) IncludeTrailingZeroesAfterDot, %End %If (Qt_5_9_0 -) RejectTrailingZeroesAfterDot, %End }; typedef QFlags NumberOptions; QLocale(); QLocale(const QString &name); QLocale(QLocale::Language language, QLocale::Country country = QLocale::AnyCountry); QLocale(const QLocale &other); ~QLocale(); QLocale::Language language() const; QLocale::Country country() const; QString name() const; short toShort(const QString &s, bool *ok = 0) const; ushort toUShort(const QString &s, bool *ok = 0) const; int toInt(const QString &s, bool *ok = 0) const; uint toUInt(const QString &s, bool *ok = 0) const; qlonglong toLongLong(const QString &s, bool *ok = 0) const; qulonglong toULongLong(const QString &s, bool *ok = 0) const; float toFloat(const QString &s, bool *ok = 0) const; double toDouble(const QString &s, bool *ok = 0) const; QString toString(double i /Constrained/, char format = 'g', int precision = 6) const; bool operator==(const QLocale &other) const; bool operator!=(const QLocale &other) const; static QString languageToString(QLocale::Language language); static QString countryToString(QLocale::Country country); static void setDefault(const QLocale &locale); static QLocale c(); static QLocale system(); enum FormatType { LongFormat, ShortFormat, NarrowFormat, }; QString toString(const QDateTime &dateTime, const QString &format) const; QString toString(const QDateTime &dateTime, QLocale::FormatType format = QLocale::LongFormat) const; QString toString(const QDate &date, const QString &formatStr) const; QString toString(const QDate &date, QLocale::FormatType format = QLocale::LongFormat) const; QString toString(const QTime &time, const QString &formatStr) const; QString toString(const QTime &time, QLocale::FormatType format = QLocale::LongFormat) const; QString dateFormat(QLocale::FormatType format = QLocale::LongFormat) const; QString timeFormat(QLocale::FormatType format = QLocale::LongFormat) const; QString dateTimeFormat(QLocale::FormatType format = QLocale::LongFormat) const; QDate toDate(const QString &string, QLocale::FormatType format = QLocale::LongFormat) const; QDate toDate(const QString &string, const QString &format) const; QTime toTime(const QString &string, QLocale::FormatType format = QLocale::LongFormat) const; QTime toTime(const QString &string, const QString &format) const; QDateTime toDateTime(const QString &string, QLocale::FormatType format = QLocale::LongFormat) const; QDateTime toDateTime(const QString &string, const QString &format) const; QChar decimalPoint() const; QChar groupSeparator() const; QChar percent() const; QChar zeroDigit() const; QChar negativeSign() const; QChar exponential() const; QString monthName(int, QLocale::FormatType format = QLocale::LongFormat) const; QString dayName(int, QLocale::FormatType format = QLocale::LongFormat) const; void setNumberOptions(QLocale::NumberOptions options); QLocale::NumberOptions numberOptions() const; enum MeasurementSystem { MetricSystem, ImperialSystem, ImperialUSSystem, ImperialUKSystem, }; QLocale::MeasurementSystem measurementSystem() const; QChar positiveSign() const; QString standaloneMonthName(int, QLocale::FormatType format = QLocale::LongFormat) const; QString standaloneDayName(int, QLocale::FormatType format = QLocale::LongFormat) const; QString amText() const; QString pmText() const; Qt::LayoutDirection textDirection() const; enum Script { AnyScript, ArabicScript, CyrillicScript, DeseretScript, GurmukhiScript, SimplifiedHanScript, TraditionalHanScript, LatinScript, MongolianScript, TifinaghScript, SimplifiedChineseScript, TraditionalChineseScript, ArmenianScript, BengaliScript, CherokeeScript, DevanagariScript, EthiopicScript, GeorgianScript, GreekScript, GujaratiScript, HebrewScript, JapaneseScript, KhmerScript, KannadaScript, KoreanScript, LaoScript, MalayalamScript, MyanmarScript, OriyaScript, TamilScript, TeluguScript, ThaanaScript, ThaiScript, TibetanScript, SinhalaScript, SyriacScript, YiScript, VaiScript, %If (Qt_5_1_0 -) AvestanScript, %End %If (Qt_5_1_0 -) BalineseScript, %End %If (Qt_5_1_0 -) BamumScript, %End %If (Qt_5_1_0 -) BatakScript, %End %If (Qt_5_1_0 -) BopomofoScript, %End %If (Qt_5_1_0 -) BrahmiScript, %End %If (Qt_5_1_0 -) BugineseScript, %End %If (Qt_5_1_0 -) BuhidScript, %End %If (Qt_5_1_0 -) CanadianAboriginalScript, %End %If (Qt_5_1_0 -) CarianScript, %End %If (Qt_5_1_0 -) ChakmaScript, %End %If (Qt_5_1_0 -) ChamScript, %End %If (Qt_5_1_0 -) CopticScript, %End %If (Qt_5_1_0 -) CypriotScript, %End %If (Qt_5_1_0 -) EgyptianHieroglyphsScript, %End %If (Qt_5_1_0 -) FraserScript, %End %If (Qt_5_1_0 -) GlagoliticScript, %End %If (Qt_5_1_0 -) GothicScript, %End %If (Qt_5_1_0 -) HanScript, %End %If (Qt_5_1_0 -) HangulScript, %End %If (Qt_5_1_0 -) HanunooScript, %End %If (Qt_5_1_0 -) ImperialAramaicScript, %End %If (Qt_5_1_0 -) InscriptionalPahlaviScript, %End %If (Qt_5_1_0 -) InscriptionalParthianScript, %End %If (Qt_5_1_0 -) JavaneseScript, %End %If (Qt_5_1_0 -) KaithiScript, %End %If (Qt_5_1_0 -) KatakanaScript, %End %If (Qt_5_1_0 -) KayahLiScript, %End %If (Qt_5_1_0 -) KharoshthiScript, %End %If (Qt_5_1_0 -) LannaScript, %End %If (Qt_5_1_0 -) LepchaScript, %End %If (Qt_5_1_0 -) LimbuScript, %End %If (Qt_5_1_0 -) LinearBScript, %End %If (Qt_5_1_0 -) LycianScript, %End %If (Qt_5_1_0 -) LydianScript, %End %If (Qt_5_1_0 -) MandaeanScript, %End %If (Qt_5_1_0 -) MeiteiMayekScript, %End %If (Qt_5_1_0 -) MeroiticScript, %End %If (Qt_5_1_0 -) MeroiticCursiveScript, %End %If (Qt_5_1_0 -) NkoScript, %End %If (Qt_5_1_0 -) NewTaiLueScript, %End %If (Qt_5_1_0 -) OghamScript, %End %If (Qt_5_1_0 -) OlChikiScript, %End %If (Qt_5_1_0 -) OldItalicScript, %End %If (Qt_5_1_0 -) OldPersianScript, %End %If (Qt_5_1_0 -) OldSouthArabianScript, %End %If (Qt_5_1_0 -) OrkhonScript, %End %If (Qt_5_1_0 -) OsmanyaScript, %End %If (Qt_5_1_0 -) PhagsPaScript, %End %If (Qt_5_1_0 -) PhoenicianScript, %End %If (Qt_5_1_0 -) PollardPhoneticScript, %End %If (Qt_5_1_0 -) RejangScript, %End %If (Qt_5_1_0 -) RunicScript, %End %If (Qt_5_1_0 -) SamaritanScript, %End %If (Qt_5_1_0 -) SaurashtraScript, %End %If (Qt_5_1_0 -) SharadaScript, %End %If (Qt_5_1_0 -) ShavianScript, %End %If (Qt_5_1_0 -) SoraSompengScript, %End %If (Qt_5_1_0 -) CuneiformScript, %End %If (Qt_5_1_0 -) SundaneseScript, %End %If (Qt_5_1_0 -) SylotiNagriScript, %End %If (Qt_5_1_0 -) TagalogScript, %End %If (Qt_5_1_0 -) TagbanwaScript, %End %If (Qt_5_1_0 -) TaiLeScript, %End %If (Qt_5_1_0 -) TaiVietScript, %End %If (Qt_5_1_0 -) TakriScript, %End %If (Qt_5_1_0 -) UgariticScript, %End %If (Qt_5_1_0 -) BrailleScript, %End %If (Qt_5_1_0 -) HiraganaScript, %End %If (Qt_5_5_0 -) CaucasianAlbanianScript, %End %If (Qt_5_5_0 -) BassaVahScript, %End %If (Qt_5_5_0 -) DuployanScript, %End %If (Qt_5_5_0 -) ElbasanScript, %End %If (Qt_5_5_0 -) GranthaScript, %End %If (Qt_5_5_0 -) PahawhHmongScript, %End %If (Qt_5_5_0 -) KhojkiScript, %End %If (Qt_5_5_0 -) LinearAScript, %End %If (Qt_5_5_0 -) MahajaniScript, %End %If (Qt_5_5_0 -) ManichaeanScript, %End %If (Qt_5_5_0 -) MendeKikakuiScript, %End %If (Qt_5_5_0 -) ModiScript, %End %If (Qt_5_5_0 -) MroScript, %End %If (Qt_5_5_0 -) OldNorthArabianScript, %End %If (Qt_5_5_0 -) NabataeanScript, %End %If (Qt_5_5_0 -) PalmyreneScript, %End %If (Qt_5_5_0 -) PauCinHauScript, %End %If (Qt_5_5_0 -) OldPermicScript, %End %If (Qt_5_5_0 -) PsalterPahlaviScript, %End %If (Qt_5_5_0 -) SiddhamScript, %End %If (Qt_5_5_0 -) KhudawadiScript, %End %If (Qt_5_5_0 -) TirhutaScript, %End %If (Qt_5_5_0 -) VarangKshitiScript, %End %If (Qt_5_7_0 -) AhomScript, %End %If (Qt_5_7_0 -) AnatolianHieroglyphsScript, %End %If (Qt_5_7_0 -) HatranScript, %End %If (Qt_5_7_0 -) MultaniScript, %End %If (Qt_5_7_0 -) OldHungarianScript, %End %If (Qt_5_7_0 -) SignWritingScript, %End %If (Qt_5_7_0 -) AdlamScript, %End %If (Qt_5_7_0 -) BhaiksukiScript, %End %If (Qt_5_7_0 -) MarchenScript, %End %If (Qt_5_7_0 -) NewaScript, %End %If (Qt_5_7_0 -) OsageScript, %End %If (Qt_5_7_0 -) TangutScript, %End %If (Qt_5_7_0 -) HanWithBopomofoScript, %End %If (Qt_5_7_0 -) JamoScript, %End }; enum CurrencySymbolFormat { CurrencyIsoCode, CurrencySymbol, CurrencyDisplayName, }; QLocale(QLocale::Language language, QLocale::Script script, QLocale::Country country); QLocale::Script script() const; QString bcp47Name() const; QString nativeLanguageName() const; QString nativeCountryName() const; Qt::DayOfWeek firstDayOfWeek() const; QList weekdays() const; QString toUpper(const QString &str) const; QString toLower(const QString &str) const; QString currencySymbol(QLocale::CurrencySymbolFormat format = QLocale::CurrencySymbol) const; QString toCurrencyString(double value /Constrained/, const QString &symbol = QString()) const; %If (Qt_5_7_0 -) QString toCurrencyString(double value /Constrained/, const QString &symbol, int precision) const; %End QStringList uiLanguages() const; static QString scriptToString(QLocale::Script script); static QList matchingLocales(QLocale::Language language, QLocale::Script script, QLocale::Country country); enum QuotationStyle { StandardQuotation, AlternateQuotation, }; QString quoteString(const QString &str, QLocale::QuotationStyle style = QLocale::StandardQuotation) const; QString createSeparatedList(const QStringList &list) const; %If (Qt_5_6_0 -) long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End %If (Qt_5_7_0 -) enum FloatingPointPrecisionOption { FloatingPointShortest, }; %End %If (Qt_5_7_0 -) void swap(QLocale &other); %End QString toString(SIP_PYOBJECT i /TypeHint="int"/) const; %MethodCode // Convert a Python int avoiding overflow as much as possible. static PyObject *zero = 0; if (!zero) zero = PyLong_FromLong(0); int rc = PyObject_RichCompareBool(a0, zero, Py_LT); PyErr_Clear(); if (rc < 0) { sipError = sipBadCallableArg(0, a0); } else if (rc) { #if defined(HAVE_LONG_LONG) PY_LONG_LONG value = PyLong_AsLongLong(a0); #else long value = PyLong_AsLong(a0); #endif if (PyErr_Occurred() && !PyErr_ExceptionMatches(PyExc_OverflowError)) { sipError = sipBadCallableArg(0, a0); } else { sipRes = new QString(sipCpp->toString(value)); } } else { #if PY_MAJOR_VERSION >= 3 #if defined(HAVE_LONG_LONG) unsigned PY_LONG_LONG value = PyLong_AsUnsignedLongLongMask(a0); #else unsigned long value = PyLong_AsUnsignedLongMask(a0); #endif #else #if defined(HAVE_LONG_LONG) unsigned PY_LONG_LONG value = PyInt_AsUnsignedLongLongMask(a0); #else unsigned long value = PyInt_AsUnsignedLongMask(a0); #endif #endif if (PyErr_Occurred() && !PyErr_ExceptionMatches(PyExc_OverflowError)) { sipError = sipBadCallableArg(0, a0); } else { sipRes = new QString(sipCpp->toString(value)); } } %End QString toCurrencyString(SIP_PYOBJECT value /TypeHint="int"/, const QString &symbol = QString()) const; %MethodCode // Convert a Python int avoiding overflow as much as possible. static PyObject *zero = 0; if (!zero) zero = PyLong_FromLong(0); int rc = PyObject_RichCompareBool(a0, zero, Py_LT); PyErr_Clear(); if (rc < 0) { sipError = sipBadCallableArg(0, a0); } else if (rc) { #if defined(HAVE_LONG_LONG) PY_LONG_LONG value = PyLong_AsLongLong(a0); #else long value = PyLong_AsLong(a0); #endif if (PyErr_Occurred() && !PyErr_ExceptionMatches(PyExc_OverflowError)) { sipError = sipBadCallableArg(0, a0); } else { sipRes = new QString(sipCpp->toCurrencyString(value, *a1)); } } else { #if defined(HAVE_LONG_LONG) unsigned PY_LONG_LONG value = PyLong_AsUnsignedLongLongMask(a0); #else unsigned long value = PyLong_AsUnsignedLongMask(a0); #endif if (PyErr_Occurred() && !PyErr_ExceptionMatches(PyExc_OverflowError)) { sipError = sipBadCallableArg(0, a0); } else { sipRes = new QString(sipCpp->toCurrencyString(value, *a1)); } } %End %If (Qt_5_10_0 -) enum DataSizeFormat { DataSizeIecFormat, DataSizeTraditionalFormat, DataSizeSIFormat, }; %End %If (Qt_5_10_0 -) typedef QFlags DataSizeFormats; %End %If (Qt_5_10_0 -) QString formattedDataSize(qint64 bytes, int precision = 2, QLocale::DataSizeFormats format = QLocale::DataSizeIecFormat); %End }; QDataStream &operator<<(QDataStream &, const QLocale & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QLocale & /Constrained/) /ReleaseGIL/; QFlags operator|(QLocale::NumberOption f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtCore/qlockfile.sip0000644000076500000240000000320113245233150020151 0ustar philstaff00000000000000// qlockfile.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QLockFile { %TypeHeaderCode #include %End public: QLockFile(const QString &fileName); ~QLockFile(); bool lock() /ReleaseGIL/; bool tryLock(int timeout = 0) /ReleaseGIL/; void unlock() /ReleaseGIL/; void setStaleLockTime(int); int staleLockTime() const; bool isLocked() const /ReleaseGIL/; bool getLockInfo(qint64 *pid /Out/, QString *hostname /Out/, QString *appname /Out/) const; bool removeStaleLockFile() /ReleaseGIL/; enum LockError { NoError, LockFailedError, PermissionError, UnknownError, }; QLockFile::LockError error() const; private: QLockFile(const QLockFile &); }; %End PyQt5_gpl-5.10.1/sip/QtCore/qlogging.sip0000644000076500000240000001313313245233150020014 0ustar philstaff00000000000000// qlogging.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End enum QtMsgType { QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg, %If (Qt_5_5_0 -) QtInfoMsg, %End }; class QMessageLogContext /NoDefaultCtors/ { %TypeHeaderCode #include %End QMessageLogContext(const QMessageLogContext &); public: int line; const char *file; const char *function; const char *category; }; class QMessageLogger { %TypeHeaderCode #include %End QMessageLogger(const QMessageLogger &); public: QMessageLogger(); QMessageLogger(const char *file, int line, const char *function); QMessageLogger(const char *file, int line, const char *function, const char *category); void debug(const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->debug("%s", a0); Py_END_ALLOW_THREADS %End void warning(const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->warning("%s", a0); Py_END_ALLOW_THREADS %End void critical(const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->critical("%s", a0); Py_END_ALLOW_THREADS %End void fatal(const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->fatal("%s", a0); Py_END_ALLOW_THREADS %End %If (Qt_5_5_0 -) void info(const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->info("%s", a0); Py_END_ALLOW_THREADS %End %End }; void qCritical(const char *msg) /ReleaseGIL/; %MethodCode const char *file, *function; int line = qpycore_current_context(&file, &function); Py_BEGIN_ALLOW_THREADS QMessageLogger(file, line, function).critical("%s", a0); Py_END_ALLOW_THREADS %End void qDebug(const char *msg) /ReleaseGIL/; %MethodCode const char *file, *function; int line = qpycore_current_context(&file, &function); Py_BEGIN_ALLOW_THREADS QMessageLogger(file, line, function).debug("%s", a0); Py_END_ALLOW_THREADS %End void qErrnoWarning(int code, const char *msg) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS qErrnoWarning(a0, "%s", a1); Py_END_ALLOW_THREADS %End void qErrnoWarning(const char *msg) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS qErrnoWarning("%s", a0); Py_END_ALLOW_THREADS %End void qFatal(const char *msg) /ReleaseGIL/; %MethodCode const char *file, *function; int line = qpycore_current_context(&file, &function); Py_BEGIN_ALLOW_THREADS QMessageLogger(file, line, function).fatal("%s", a0); Py_END_ALLOW_THREADS %End void qWarning(const char *msg) /ReleaseGIL/; %MethodCode const char *file, *function; int line = qpycore_current_context(&file, &function); Py_BEGIN_ALLOW_THREADS QMessageLogger(file, line, function).warning("%s", a0); Py_END_ALLOW_THREADS %End SIP_PYCALLABLE qInstallMessageHandler(SIP_PYCALLABLE /AllowNone,TypeHint="Optional[Callable[[QtMsgType, QMessageLogContext, QString], None]]"/) /TypeHint="Optional[Callable[[QtMsgType, QMessageLogContext, QString], None]]"/; %MethodCode // Treat None as the default handler. QtMessageHandler old = qInstallMessageHandler((a0 != Py_None) ? qtcore_MessageHandler : 0); // If we recognise the old handler, then return it. Otherwise return // the default handler. This doesn't exactly mimic the Qt behaviour // but it is probably close enough for the way it will be used. sipRes = (old == qtcore_MessageHandler) ? qtcore_PyMessageHandler : Py_None; Py_INCREF(sipRes); // Save the new Python handler. Py_XDECREF(qtcore_PyMessageHandler); qtcore_PyMessageHandler = a0; Py_INCREF(qtcore_PyMessageHandler); %End // Module code needed by qInstallMessageHandler(). %ModuleCode // The user supplied Python handler. static PyObject *qtcore_PyMessageHandler = 0; // The C++ wrapper around the Python handler. static void qtcore_MessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { PyObject *res; SIP_BLOCK_THREADS res = sipCallMethod(0, qtcore_PyMessageHandler, "FDD", type, sipType_QtMsgType, &context, sipType_QMessageLogContext, NULL, &msg, sipType_QString, NULL); Py_XDECREF(res); if (res != NULL && res != Py_None) { PyErr_SetString(PyExc_TypeError, "invalid result type from PyQt message handler"); res = NULL; } if (res == NULL) pyqt5_err_print(); SIP_UNBLOCK_THREADS } %End void qSetMessagePattern(const QString &messagePattern); %If (Qt_5_4_0 -) QString qFormatLogMessage(QtMsgType type, const QMessageLogContext &context, const QString &buf); %End PyQt5_gpl-5.10.1/sip/QtCore/qmargins.sip0000644000076500000240000001176613245233150020040 0ustar philstaff00000000000000// qmargins.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMargins { %TypeHeaderCode #include %End public: QMargins(); QMargins(int aleft, int atop, int aright, int abottom); bool isNull() const; int left() const; int top() const; int right() const; int bottom() const; void setLeft(int aleft); void setTop(int atop); void setRight(int aright); void setBottom(int abottom); %If (Qt_5_1_0 -) QMargins &operator+=(const QMargins &margins); %End %If (Qt_5_1_0 -) QMargins &operator-=(const QMargins &margins); %End %If (Qt_5_1_0 -) QMargins &operator*=(int factor /Constrained/); %End %If (Qt_5_1_0 -) QMargins &operator/=(int divisor /Constrained/); %End %If (Qt_5_1_0 -) QMargins &operator*=(qreal factor); %End %If (Qt_5_1_0 -) QMargins &operator/=(qreal divisor); %End %If (Qt_5_2_0 -) QMargins &operator+=(int margin); %End %If (Qt_5_2_0 -) QMargins &operator-=(int margin); %End }; bool operator==(const QMargins &m1, const QMargins &m2); bool operator!=(const QMargins &m1, const QMargins &m2); QDataStream &operator<<(QDataStream &, const QMargins & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QMargins & /Constrained/) /ReleaseGIL/; %If (Qt_5_1_0 - Qt_5_3_0) QRect operator+(const QRect &rectangle, const QMargins &margins); %End %If (Qt_5_1_0 - Qt_5_3_0) QRect operator+(const QMargins &margins, const QRect &rectangle); %End %If (Qt_5_1_0 -) QMargins operator+(const QMargins &m1, const QMargins &m2); %End %If (Qt_5_1_0 -) QMargins operator-(const QMargins &m1, const QMargins &m2); %End %If (Qt_5_1_0 -) QMargins operator*(const QMargins &margins, int factor /Constrained/); %End %If (Qt_5_1_0 -) QMargins operator*(const QMargins &margins, qreal factor); %End %If (Qt_5_1_0 -) QMargins operator/(const QMargins &margins, int divisor /Constrained/); %End %If (Qt_5_1_0 -) QMargins operator/(const QMargins &margins, qreal divisor); %End %If (Qt_5_1_0 -) QMargins operator-(const QMargins &margins); %End %If (Qt_5_3_0 -) QMargins operator+(const QMargins &lhs, int rhs); %End %If (Qt_5_3_0 -) QMargins operator+(int lhs, const QMargins &rhs); %End %If (Qt_5_3_0 -) QMargins operator-(const QMargins &lhs, int rhs); %End %If (Qt_5_3_0 -) QMargins operator+(const QMargins &margins); %End %If (Qt_5_3_0 -) class QMarginsF { %TypeHeaderCode #include %End public: QMarginsF(); QMarginsF(qreal aleft, qreal atop, qreal aright, qreal abottom); QMarginsF(const QMargins &margins); bool isNull() const; qreal left() const; qreal top() const; qreal right() const; qreal bottom() const; void setLeft(qreal aleft); void setTop(qreal atop); void setRight(qreal aright); void setBottom(qreal abottom); QMarginsF &operator+=(const QMarginsF &margins); QMarginsF &operator-=(const QMarginsF &margins); QMarginsF &operator+=(qreal addend); QMarginsF &operator-=(qreal subtrahend); QMarginsF &operator*=(qreal factor); QMarginsF &operator/=(qreal divisor); QMargins toMargins() const; }; %End %If (Qt_5_3_0 -) QDataStream &operator<<(QDataStream &, const QMarginsF & /Constrained/); %End %If (Qt_5_3_0 -) QDataStream &operator>>(QDataStream &, QMarginsF & /Constrained/); %End %If (Qt_5_3_0 -) bool operator==(const QMarginsF &lhs, const QMarginsF &rhs); %End %If (Qt_5_3_0 -) bool operator!=(const QMarginsF &lhs, const QMarginsF &rhs); %End %If (Qt_5_3_0 -) QMarginsF operator+(const QMarginsF &lhs, const QMarginsF &rhs); %End %If (Qt_5_3_0 -) QMarginsF operator-(const QMarginsF &lhs, const QMarginsF &rhs); %End %If (Qt_5_3_0 -) QMarginsF operator+(const QMarginsF &lhs, qreal rhs); %End %If (Qt_5_3_0 -) QMarginsF operator+(qreal lhs, const QMarginsF &rhs); %End %If (Qt_5_3_0 -) QMarginsF operator-(const QMarginsF &lhs, qreal rhs); %End %If (Qt_5_3_0 -) QMarginsF operator*(const QMarginsF &lhs, qreal rhs); %End %If (Qt_5_3_0 -) QMarginsF operator*(qreal lhs, const QMarginsF &rhs); %End %If (Qt_5_3_0 -) QMarginsF operator/(const QMarginsF &lhs, qreal divisor); %End %If (Qt_5_3_0 -) QMarginsF operator+(const QMarginsF &margins); %End %If (Qt_5_3_0 -) QMarginsF operator-(const QMarginsF &margins); %End PyQt5_gpl-5.10.1/sip/QtCore/qmessageauthenticationcode.sip0000644000076500000240000000316213245233150023606 0ustar philstaff00000000000000// qmessageauthenticationcode.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QMessageAuthenticationCode { %TypeHeaderCode #include %End public: QMessageAuthenticationCode(QCryptographicHash::Algorithm method, const QByteArray &key = QByteArray()); ~QMessageAuthenticationCode(); void reset(); void setKey(const QByteArray &key); void addData(const char *data, int length); void addData(const QByteArray &data); bool addData(QIODevice *device); QByteArray result() const; static QByteArray hash(const QByteArray &message, const QByteArray &key, QCryptographicHash::Algorithm method); private: QMessageAuthenticationCode(const QMessageAuthenticationCode &); }; %End PyQt5_gpl-5.10.1/sip/QtCore/qmetaobject.sip0000644000076500000240000001714513245233150020512 0ustar philstaff00000000000000// qmetaobject.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMetaMethod { %TypeHeaderCode #include %End %TypeCode // Raise an exception when QMetaMethod::invoke() returns false. static void qtcore_invoke_exception() { PyErr_SetString(PyExc_RuntimeError, "QMetaMethod.invoke() call failed"); } %End public: QMetaMethod(); const char *typeName() const; QList parameterTypes() const; QList parameterNames() const; const char *tag() const; enum Access { Private, Protected, Public, }; QMetaMethod::Access access() const; enum MethodType { Method, Signal, Slot, Constructor, }; QMetaMethod::MethodType methodType() const; SIP_PYOBJECT invoke(QObject *object, Qt::ConnectionType connectionType, QGenericReturnArgument returnValue /GetWrapper/, QGenericArgument value0 = QGenericArgument(0u, 0u), QGenericArgument value1 = QGenericArgument(0u, 0u), QGenericArgument value2 = QGenericArgument(0u, 0u), QGenericArgument value3 = QGenericArgument(0u, 0u), QGenericArgument value4 = QGenericArgument(0u, 0u), QGenericArgument value5 = QGenericArgument(0u, 0u), QGenericArgument value6 = QGenericArgument(0u, 0u), QGenericArgument value7 = QGenericArgument(0u, 0u), QGenericArgument value8 = QGenericArgument(0u, 0u), QGenericArgument value9 = QGenericArgument(0u, 0u)) const; %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = sipCpp->invoke(a0, a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10, *a11, *a12); Py_END_ALLOW_THREADS if (ok) sipRes = qpycore_ReturnValue(a2Wrapper); else qtcore_invoke_exception(); %End SIP_PYOBJECT invoke(QObject *object, QGenericReturnArgument returnValue /GetWrapper/, QGenericArgument value0 = QGenericArgument(0u, 0u), QGenericArgument value1 = QGenericArgument(0u, 0u), QGenericArgument value2 = QGenericArgument(0u, 0u), QGenericArgument value3 = QGenericArgument(0u, 0u), QGenericArgument value4 = QGenericArgument(0u, 0u), QGenericArgument value5 = QGenericArgument(0u, 0u), QGenericArgument value6 = QGenericArgument(0u, 0u), QGenericArgument value7 = QGenericArgument(0u, 0u), QGenericArgument value8 = QGenericArgument(0u, 0u), QGenericArgument value9 = QGenericArgument(0u, 0u)) const; %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = sipCpp->invoke(a0, *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10, *a11); Py_END_ALLOW_THREADS if (ok) sipRes = qpycore_ReturnValue(a1Wrapper); else qtcore_invoke_exception(); %End SIP_PYOBJECT invoke(QObject *object, Qt::ConnectionType connectionType, QGenericArgument value0 = QGenericArgument(0u, 0u), QGenericArgument value1 = QGenericArgument(0u, 0u), QGenericArgument value2 = QGenericArgument(0u, 0u), QGenericArgument value3 = QGenericArgument(0u, 0u), QGenericArgument value4 = QGenericArgument(0u, 0u), QGenericArgument value5 = QGenericArgument(0u, 0u), QGenericArgument value6 = QGenericArgument(0u, 0u), QGenericArgument value7 = QGenericArgument(0u, 0u), QGenericArgument value8 = QGenericArgument(0u, 0u), QGenericArgument value9 = QGenericArgument(0u, 0u)) const; %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = sipCpp->invoke(a0, a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10, *a11); Py_END_ALLOW_THREADS if (ok) { Py_INCREF(Py_None); sipRes = Py_None; } else qtcore_invoke_exception(); %End SIP_PYOBJECT invoke(QObject *object, QGenericArgument value0 = QGenericArgument(0u, 0u), QGenericArgument value1 = QGenericArgument(0u, 0u), QGenericArgument value2 = QGenericArgument(0u, 0u), QGenericArgument value3 = QGenericArgument(0u, 0u), QGenericArgument value4 = QGenericArgument(0u, 0u), QGenericArgument value5 = QGenericArgument(0u, 0u), QGenericArgument value6 = QGenericArgument(0u, 0u), QGenericArgument value7 = QGenericArgument(0u, 0u), QGenericArgument value8 = QGenericArgument(0u, 0u), QGenericArgument value9 = QGenericArgument(0u, 0u)) const; %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = sipCpp->invoke(a0, *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10); Py_END_ALLOW_THREADS if (ok) { Py_INCREF(Py_None); sipRes = Py_None; } else qtcore_invoke_exception(); %End int methodIndex() const; bool isValid() const; QByteArray methodSignature() const; QByteArray name() const; int returnType() const; int parameterCount() const; int parameterType(int index) const; }; class QMetaEnum { %TypeHeaderCode #include %End public: QMetaEnum(); const char *name() const; bool isFlag() const; int keyCount() const; const char *key(int index) const; int value(int index) const; const char *scope() const; int keyToValue(const char *key, bool *ok = 0) const; const char *valueToKey(int value) const; int keysToValue(const char *keys, bool *ok = 0) const; QByteArray valueToKeys(int value) const; bool isValid() const; %If (Qt_5_8_0 -) bool isScoped() const; %End }; class QMetaProperty { %TypeHeaderCode #include %End public: QMetaProperty(); const char *name() const; const char *typeName() const; QVariant::Type type() const; bool isReadable() const; bool isWritable() const; bool isDesignable(const QObject *object = 0) const; bool isScriptable(const QObject *object = 0) const; bool isStored(const QObject *object = 0) const; bool isFlagType() const; bool isEnumType() const; QMetaEnum enumerator() const; QVariant read(const QObject *obj) const; bool write(QObject *obj, const QVariant &value) const; bool reset(QObject *obj) const; bool hasStdCppSet() const; bool isValid() const; bool isResettable() const; bool isUser(const QObject *object = 0) const; int userType() const; bool hasNotifySignal() const; QMetaMethod notifySignal() const; int notifySignalIndex() const; int propertyIndex() const; bool isConstant() const; bool isFinal() const; }; class QMetaClassInfo { %TypeHeaderCode #include %End public: QMetaClassInfo(); const char *name() const; const char *value() const; }; bool operator==(const QMetaMethod &m1, const QMetaMethod &m2); bool operator!=(const QMetaMethod &m1, const QMetaMethod &m2); PyQt5_gpl-5.10.1/sip/QtCore/qmetatype.sip0000644000076500000240000000625213245233150020222 0ustar philstaff00000000000000// qmetatype.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMetaType { %TypeHeaderCode #include %End public: enum Type { UnknownType, Void, Bool, Int, UInt, LongLong, ULongLong, Double, QChar, QVariantMap, QVariantList, QVariantHash, QString, QStringList, QByteArray, QBitArray, QDate, QTime, QDateTime, QUrl, QLocale, QRect, QRectF, QSize, QSizeF, QLine, QLineF, QPoint, QPointF, QRegExp, LastCoreType, FirstGuiType, QFont, QPixmap, QBrush, QColor, QPalette, QIcon, QImage, QPolygon, QRegion, QBitmap, QCursor, QSizePolicy, QKeySequence, QPen, QTextLength, QTextFormat, QMatrix, QTransform, VoidStar, Long, Short, Char, ULong, UShort, UChar, Float, QObjectStar, QMatrix4x4, QVector2D, QVector3D, QVector4D, QQuaternion, QEasingCurve, QVariant, QUuid, QModelIndex, QPolygonF, SChar, QRegularExpression, QJsonValue, QJsonObject, QJsonArray, QJsonDocument, %If (Qt_5_4_0 -) QByteArrayList, %End %If (Qt_5_5_0 -) QPersistentModelIndex, %End User, }; static int type(const char *typeName); static const char *typeName(int type); static bool isRegistered(int type); explicit QMetaType(const int type); ~QMetaType(); enum TypeFlag { NeedsConstruction, NeedsDestruction, MovableType, PointerToQObject, IsEnumeration, }; typedef QFlags TypeFlags; static QMetaType::TypeFlags typeFlags(int type); QMetaType::TypeFlags flags() const; bool isValid() const; bool isRegistered() const; static const QMetaObject *metaObjectForType(int type); private: QMetaType(const QMetaType &other); }; QFlags operator|(QMetaType::TypeFlag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtCore/qmimedata.sip0000644000076500000240000000372313245233150020153 0ustar philstaff00000000000000// qmimedata.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMimeData : QObject { %TypeHeaderCode #include %End public: QMimeData(); virtual ~QMimeData(); QList urls() const; void setUrls(const QList &urls); bool hasUrls() const; QString text() const; void setText(const QString &text); bool hasText() const; QString html() const; void setHtml(const QString &html); bool hasHtml() const; QVariant imageData() const; void setImageData(const QVariant &image); bool hasImage() const; QVariant colorData() const; void setColorData(const QVariant &color); bool hasColor() const; QByteArray data(const QString &mimetype) const; void setData(const QString &mimetype, const QByteArray &data); virtual bool hasFormat(const QString &mimetype) const; virtual QStringList formats() const; void clear(); void removeFormat(const QString &mimetype); protected: virtual QVariant retrieveData(const QString &mimetype, QVariant::Type preferredType) const; private: QMimeData(const QMimeData &); }; PyQt5_gpl-5.10.1/sip/QtCore/qmimedatabase.sip0000644000076500000240000000404213245233150021001 0ustar philstaff00000000000000// qmimedatabase.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMimeDatabase { %TypeHeaderCode #include %End public: QMimeDatabase(); ~QMimeDatabase(); QMimeType mimeTypeForName(const QString &nameOrAlias) const; enum MatchMode { MatchDefault, MatchExtension, MatchContent, }; QMimeType mimeTypeForFile(const QString &fileName, QMimeDatabase::MatchMode mode = QMimeDatabase::MatchDefault) const; QMimeType mimeTypeForFile(const QFileInfo &fileInfo, QMimeDatabase::MatchMode mode = QMimeDatabase::MatchDefault) const; QList mimeTypesForFileName(const QString &fileName) const; QMimeType mimeTypeForData(const QByteArray &data) const; QMimeType mimeTypeForData(QIODevice *device) const; QMimeType mimeTypeForUrl(const QUrl &url) const; QMimeType mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device) const; QMimeType mimeTypeForFileNameAndData(const QString &fileName, const QByteArray &data) const; QString suffixForFileName(const QString &fileName) const; QList allMimeTypes() const; private: QMimeDatabase(const QMimeDatabase &); }; PyQt5_gpl-5.10.1/sip/QtCore/qmimetype.sip0000644000076500000240000000344613245233150020225 0ustar philstaff00000000000000// qmimetype.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMimeType { %TypeHeaderCode #include %End public: QMimeType(); QMimeType(const QMimeType &other); ~QMimeType(); void swap(QMimeType &other /Constrained/); bool operator==(const QMimeType &other) const; bool operator!=(const QMimeType &other) const; bool isValid() const; bool isDefault() const; QString name() const; QString comment() const; QString genericIconName() const; QString iconName() const; QStringList globPatterns() const; QStringList parentMimeTypes() const; QStringList allAncestors() const; QStringList aliases() const; QStringList suffixes() const; QString preferredSuffix() const; bool inherits(const QString &mimeTypeName) const; QString filterString() const; %If (Qt_5_6_0 -) long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End }; PyQt5_gpl-5.10.1/sip/QtCore/qmutex.sip0000644000076500000240000000372413245233150017535 0ustar philstaff00000000000000// qmutex.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMutexLocker { %TypeHeaderCode #include %End public: explicit QMutexLocker(QMutex *m) /ReleaseGIL/; ~QMutexLocker(); void unlock(); void relock() /ReleaseGIL/; QMutex *mutex() const; SIP_PYOBJECT __enter__(); %MethodCode // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->unlock(); %End private: QMutexLocker(const QMutexLocker &); }; class QMutex { %TypeHeaderCode #include %End public: enum RecursionMode { NonRecursive, Recursive, }; explicit QMutex(QMutex::RecursionMode mode = QMutex::NonRecursive); ~QMutex(); void lock() /ReleaseGIL/; bool tryLock(int timeout = 0) /ReleaseGIL/; void unlock() /ReleaseGIL/; %If (Qt_5_7_0 -) bool isRecursive() const; %End %If (- Qt_5_7_0) // Methods implemented in QBasicMutex. bool isRecursive(); %End private: QMutex(const QMutex &); }; PyQt5_gpl-5.10.1/sip/QtCore/qnamespace.sip0000644000076500000240000010477113245233150020333 0ustar philstaff00000000000000// qnamespace.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace Qt { %TypeHeaderCode #include %End enum GlobalColor { color0, color1, black, white, darkGray, gray, lightGray, red, green, blue, cyan, magenta, yellow, darkRed, darkGreen, darkBlue, darkCyan, darkMagenta, darkYellow, transparent, }; enum KeyboardModifier { NoModifier, ShiftModifier, ControlModifier, AltModifier, MetaModifier, KeypadModifier, GroupSwitchModifier, KeyboardModifierMask, }; typedef QFlags KeyboardModifiers; enum Modifier { META, SHIFT, CTRL, ALT, MODIFIER_MASK, UNICODE_ACCEL, }; enum MouseButton { NoButton, AllButtons, LeftButton, RightButton, MidButton, MiddleButton, XButton1, XButton2, BackButton, ExtraButton1, ForwardButton, ExtraButton2, TaskButton, ExtraButton3, ExtraButton4, ExtraButton5, ExtraButton6, ExtraButton7, ExtraButton8, ExtraButton9, ExtraButton10, ExtraButton11, ExtraButton12, ExtraButton13, ExtraButton14, ExtraButton15, ExtraButton16, ExtraButton17, ExtraButton18, ExtraButton19, ExtraButton20, ExtraButton21, ExtraButton22, ExtraButton23, ExtraButton24, }; typedef QFlags MouseButtons; enum Orientation { Horizontal, Vertical, }; typedef QFlags Orientations; enum FocusPolicy { NoFocus, TabFocus, ClickFocus, StrongFocus, WheelFocus, }; enum SortOrder { AscendingOrder, DescendingOrder, }; enum AlignmentFlag { AlignLeft, AlignLeading, AlignRight, AlignTrailing, AlignHCenter, AlignJustify, AlignAbsolute, AlignHorizontal_Mask, AlignTop, AlignBottom, AlignVCenter, AlignVertical_Mask, AlignCenter, %If (Qt_5_2_0 -) AlignBaseline, %End }; typedef QFlags Alignment; enum TextFlag { TextSingleLine, TextDontClip, TextExpandTabs, TextShowMnemonic, TextWordWrap, TextWrapAnywhere, TextDontPrint, TextIncludeTrailingSpaces, TextHideMnemonic, TextJustificationForced, }; enum TextElideMode { ElideLeft, ElideRight, ElideMiddle, ElideNone, }; enum WindowType { Widget, Window, Dialog, Sheet, Drawer, Popup, Tool, ToolTip, SplashScreen, Desktop, SubWindow, WindowType_Mask, MSWindowsFixedSizeDialogHint, MSWindowsOwnDC, X11BypassWindowManagerHint, FramelessWindowHint, CustomizeWindowHint, WindowTitleHint, WindowSystemMenuHint, WindowMinimizeButtonHint, WindowMaximizeButtonHint, WindowMinMaxButtonsHint, WindowContextHelpButtonHint, WindowShadeButtonHint, WindowStaysOnTopHint, %If (- Qt_5_8_0) WindowOkButtonHint, %End %If (- Qt_5_8_0) WindowCancelButtonHint, %End WindowStaysOnBottomHint, WindowCloseButtonHint, MacWindowToolBarButtonHint, BypassGraphicsProxyWidget, WindowTransparentForInput, WindowOverridesSystemGestures, WindowDoesNotAcceptFocus, NoDropShadowWindowHint, WindowFullscreenButtonHint, %If (Qt_5_1_0 -) ForeignWindow, %End %If (Qt_5_1_0 -) BypassWindowManagerHint, %End %If (Qt_5_2_0 -) CoverWindow, %End %If (Qt_5_5_0 -) MaximizeUsingFullscreenGeometryHint, %End }; typedef QFlags WindowFlags; enum WindowState { WindowNoState, WindowMinimized, WindowMaximized, WindowFullScreen, WindowActive, }; typedef QFlags WindowStates; enum WidgetAttribute { WA_Disabled, WA_UnderMouse, WA_MouseTracking, WA_OpaquePaintEvent, WA_StaticContents, WA_LaidOut, WA_PaintOnScreen, WA_NoSystemBackground, WA_UpdatesDisabled, WA_Mapped, WA_MacNoClickThrough, WA_InputMethodEnabled, WA_WState_Visible, WA_WState_Hidden, WA_ForceDisabled, WA_KeyCompression, WA_PendingMoveEvent, WA_PendingResizeEvent, WA_SetPalette, WA_SetFont, WA_SetCursor, WA_NoChildEventsFromChildren, WA_WindowModified, WA_Resized, WA_Moved, WA_PendingUpdate, WA_InvalidSize, WA_MacMetalStyle, WA_CustomWhatsThis, WA_LayoutOnEntireRect, WA_OutsideWSRange, WA_GrabbedShortcut, WA_TransparentForMouseEvents, WA_PaintUnclipped, WA_SetWindowIcon, WA_NoMouseReplay, WA_DeleteOnClose, WA_RightToLeft, WA_SetLayoutDirection, WA_NoChildEventsForParent, WA_ForceUpdatesDisabled, WA_WState_Created, WA_WState_CompressKeys, WA_WState_InPaintEvent, WA_WState_Reparented, WA_WState_ConfigPending, WA_WState_Polished, WA_WState_OwnSizePolicy, WA_WState_ExplicitShowHide, WA_MouseNoMask, WA_GroupLeader, WA_NoMousePropagation, WA_Hover, WA_InputMethodTransparent, WA_QuitOnClose, WA_KeyboardFocusChange, WA_AcceptDrops, WA_WindowPropagation, WA_NoX11EventCompression, WA_TintedBackground, WA_X11OpenGLOverlay, WA_AttributeCount, WA_AlwaysShowToolTips, WA_MacOpaqueSizeGrip, WA_SetStyle, WA_MacBrushedMetal, WA_SetLocale, WA_MacShowFocusRect, WA_MacNormalSize, WA_MacSmallSize, WA_MacMiniSize, WA_LayoutUsesWidgetRect, WA_StyledBackground, WA_MSWindowsUseDirect3D, WA_MacAlwaysShowToolWindow, WA_StyleSheet, WA_ShowWithoutActivating, WA_NativeWindow, WA_DontCreateNativeAncestors, WA_MacVariableSize, WA_DontShowOnScreen, WA_X11NetWmWindowTypeDesktop, WA_X11NetWmWindowTypeDock, WA_X11NetWmWindowTypeToolBar, WA_X11NetWmWindowTypeMenu, WA_X11NetWmWindowTypeUtility, WA_X11NetWmWindowTypeSplash, WA_X11NetWmWindowTypeDialog, WA_X11NetWmWindowTypeDropDownMenu, WA_X11NetWmWindowTypePopupMenu, WA_X11NetWmWindowTypeToolTip, WA_X11NetWmWindowTypeNotification, WA_X11NetWmWindowTypeCombo, WA_X11NetWmWindowTypeDND, WA_MacFrameworkScaled, WA_TranslucentBackground, WA_AcceptTouchEvents, WA_TouchPadAcceptSingleTouchEvents, WA_X11DoNotAcceptFocus, WA_MacNoShadow, %If (Qt_5_4_0 -) WA_AlwaysStackOnTop, %End %If (Qt_5_9_0 -) WA_TabletTracking, %End }; enum ImageConversionFlag { AutoColor, ColorOnly, MonoOnly, ThresholdAlphaDither, OrderedAlphaDither, DiffuseAlphaDither, DiffuseDither, OrderedDither, ThresholdDither, AutoDither, PreferDither, AvoidDither, NoOpaqueDetection, NoFormatConversion, }; typedef QFlags ImageConversionFlags; enum BGMode { TransparentMode, OpaqueMode, }; enum Key { Key_Escape, Key_Tab, Key_Backtab, Key_Backspace, Key_Return, Key_Enter, Key_Insert, Key_Delete, Key_Pause, Key_Print, Key_SysReq, Key_Clear, Key_Home, Key_End, Key_Left, Key_Up, Key_Right, Key_Down, Key_PageUp, Key_PageDown, Key_Shift, Key_Control, Key_Meta, Key_Alt, Key_CapsLock, Key_NumLock, Key_ScrollLock, Key_F1, Key_F2, Key_F3, Key_F4, Key_F5, Key_F6, Key_F7, Key_F8, Key_F9, Key_F10, Key_F11, Key_F12, Key_F13, Key_F14, Key_F15, Key_F16, Key_F17, Key_F18, Key_F19, Key_F20, Key_F21, Key_F22, Key_F23, Key_F24, Key_F25, Key_F26, Key_F27, Key_F28, Key_F29, Key_F30, Key_F31, Key_F32, Key_F33, Key_F34, Key_F35, Key_Super_L, Key_Super_R, Key_Menu, Key_Hyper_L, Key_Hyper_R, Key_Help, Key_Direction_L, Key_Direction_R, Key_Space, Key_Any, Key_Exclam, Key_QuoteDbl, Key_NumberSign, Key_Dollar, Key_Percent, Key_Ampersand, Key_Apostrophe, Key_ParenLeft, Key_ParenRight, Key_Asterisk, Key_Plus, Key_Comma, Key_Minus, Key_Period, Key_Slash, Key_0, Key_1, Key_2, Key_3, Key_4, Key_5, Key_6, Key_7, Key_8, Key_9, Key_Colon, Key_Semicolon, Key_Less, Key_Equal, Key_Greater, Key_Question, Key_At, Key_A, Key_B, Key_C, Key_D, Key_E, Key_F, Key_G, Key_H, Key_I, Key_J, Key_K, Key_L, Key_M, Key_N, Key_O, Key_P, Key_Q, Key_R, Key_S, Key_T, Key_U, Key_V, Key_W, Key_X, Key_Y, Key_Z, Key_BracketLeft, Key_Backslash, Key_BracketRight, Key_AsciiCircum, Key_Underscore, Key_QuoteLeft, Key_BraceLeft, Key_Bar, Key_BraceRight, Key_AsciiTilde, Key_nobreakspace, Key_exclamdown, Key_cent, Key_sterling, Key_currency, Key_yen, Key_brokenbar, Key_section, Key_diaeresis, Key_copyright, Key_ordfeminine, Key_guillemotleft, Key_notsign, Key_hyphen, Key_registered, Key_macron, Key_degree, Key_plusminus, Key_twosuperior, Key_threesuperior, Key_acute, Key_mu, Key_paragraph, Key_periodcentered, Key_cedilla, Key_onesuperior, Key_masculine, Key_guillemotright, Key_onequarter, Key_onehalf, Key_threequarters, Key_questiondown, Key_Agrave, Key_Aacute, Key_Acircumflex, Key_Atilde, Key_Adiaeresis, Key_Aring, Key_AE, Key_Ccedilla, Key_Egrave, Key_Eacute, Key_Ecircumflex, Key_Ediaeresis, Key_Igrave, Key_Iacute, Key_Icircumflex, Key_Idiaeresis, Key_ETH, Key_Ntilde, Key_Ograve, Key_Oacute, Key_Ocircumflex, Key_Otilde, Key_Odiaeresis, Key_multiply, Key_Ooblique, Key_Ugrave, Key_Uacute, Key_Ucircumflex, Key_Udiaeresis, Key_Yacute, Key_THORN, Key_ssharp, Key_division, Key_ydiaeresis, Key_AltGr, Key_Multi_key, Key_Codeinput, Key_SingleCandidate, Key_MultipleCandidate, Key_PreviousCandidate, Key_Mode_switch, Key_Kanji, Key_Muhenkan, Key_Henkan, Key_Romaji, Key_Hiragana, Key_Katakana, Key_Hiragana_Katakana, Key_Zenkaku, Key_Hankaku, Key_Zenkaku_Hankaku, Key_Touroku, Key_Massyo, Key_Kana_Lock, Key_Kana_Shift, Key_Eisu_Shift, Key_Eisu_toggle, Key_Hangul, Key_Hangul_Start, Key_Hangul_End, Key_Hangul_Hanja, Key_Hangul_Jamo, Key_Hangul_Romaja, Key_Hangul_Jeonja, Key_Hangul_Banja, Key_Hangul_PreHanja, Key_Hangul_PostHanja, Key_Hangul_Special, Key_Dead_Grave, Key_Dead_Acute, Key_Dead_Circumflex, Key_Dead_Tilde, Key_Dead_Macron, Key_Dead_Breve, Key_Dead_Abovedot, Key_Dead_Diaeresis, Key_Dead_Abovering, Key_Dead_Doubleacute, Key_Dead_Caron, Key_Dead_Cedilla, Key_Dead_Ogonek, Key_Dead_Iota, Key_Dead_Voiced_Sound, Key_Dead_Semivoiced_Sound, Key_Dead_Belowdot, Key_Dead_Hook, Key_Dead_Horn, Key_Back, Key_Forward, Key_Stop, Key_Refresh, Key_VolumeDown, Key_VolumeMute, Key_VolumeUp, Key_BassBoost, Key_BassUp, Key_BassDown, Key_TrebleUp, Key_TrebleDown, Key_MediaPlay, Key_MediaStop, Key_MediaPrevious, Key_MediaNext, Key_MediaRecord, Key_HomePage, Key_Favorites, Key_Search, Key_Standby, Key_OpenUrl, Key_LaunchMail, Key_LaunchMedia, Key_Launch0, Key_Launch1, Key_Launch2, Key_Launch3, Key_Launch4, Key_Launch5, Key_Launch6, Key_Launch7, Key_Launch8, Key_Launch9, Key_LaunchA, Key_LaunchB, Key_LaunchC, Key_LaunchD, Key_LaunchE, Key_LaunchF, Key_MediaLast, Key_Select, Key_Yes, Key_No, Key_Context1, Key_Context2, Key_Context3, Key_Context4, Key_Call, Key_Hangup, Key_Flip, Key_unknown, Key_Execute, Key_Printer, Key_Play, Key_Sleep, Key_Zoom, Key_Cancel, Key_MonBrightnessUp, Key_MonBrightnessDown, Key_KeyboardLightOnOff, Key_KeyboardBrightnessUp, Key_KeyboardBrightnessDown, Key_PowerOff, Key_WakeUp, Key_Eject, Key_ScreenSaver, Key_WWW, Key_Memo, Key_LightBulb, Key_Shop, Key_History, Key_AddFavorite, Key_HotLinks, Key_BrightnessAdjust, Key_Finance, Key_Community, Key_AudioRewind, Key_BackForward, Key_ApplicationLeft, Key_ApplicationRight, Key_Book, Key_CD, Key_Calculator, Key_ToDoList, Key_ClearGrab, Key_Close, Key_Copy, Key_Cut, Key_Display, Key_DOS, Key_Documents, Key_Excel, Key_Explorer, Key_Game, Key_Go, Key_iTouch, Key_LogOff, Key_Market, Key_Meeting, Key_MenuKB, Key_MenuPB, Key_MySites, Key_News, Key_OfficeHome, Key_Option, Key_Paste, Key_Phone, Key_Calendar, Key_Reply, Key_Reload, Key_RotateWindows, Key_RotationPB, Key_RotationKB, Key_Save, Key_Send, Key_Spell, Key_SplitScreen, Key_Support, Key_TaskPane, Key_Terminal, Key_Tools, Key_Travel, Key_Video, Key_Word, Key_Xfer, Key_ZoomIn, Key_ZoomOut, Key_Away, Key_Messenger, Key_WebCam, Key_MailForward, Key_Pictures, Key_Music, Key_Battery, Key_Bluetooth, Key_WLAN, Key_UWB, Key_AudioForward, Key_AudioRepeat, Key_AudioRandomPlay, Key_Subtitle, Key_AudioCycleTrack, Key_Time, Key_Hibernate, Key_View, Key_TopMenu, Key_PowerDown, Key_Suspend, Key_ContrastAdjust, Key_MediaPause, Key_MediaTogglePlayPause, Key_LaunchG, Key_LaunchH, Key_ToggleCallHangup, Key_VoiceDial, Key_LastNumberRedial, Key_Camera, Key_CameraFocus, Key_TouchpadToggle, Key_TouchpadOn, Key_TouchpadOff, %If (Qt_5_1_0 -) Key_MicMute, %End %If (Qt_5_2_0 -) Key_Red, %End %If (Qt_5_2_0 -) Key_Green, %End %If (Qt_5_2_0 -) Key_Yellow, %End %If (Qt_5_2_0 -) Key_Blue, %End %If (Qt_5_2_0 -) Key_ChannelUp, %End %If (Qt_5_2_0 -) Key_ChannelDown, %End %If (Qt_5_3_0 -) Key_Guide, %End %If (Qt_5_3_0 -) Key_Info, %End %If (Qt_5_3_0 -) Key_Settings, %End %If (Qt_5_3_0 -) Key_Exit, %End %If (Qt_5_4_0 -) Key_MicVolumeUp, %End %If (Qt_5_4_0 -) Key_MicVolumeDown, %End %If (Qt_5_4_0 -) Key_New, %End %If (Qt_5_4_0 -) Key_Open, %End %If (Qt_5_4_0 -) Key_Find, %End %If (Qt_5_4_0 -) Key_Undo, %End %If (Qt_5_4_0 -) Key_Redo, %End }; enum ArrowType { NoArrow, UpArrow, DownArrow, LeftArrow, RightArrow, }; enum PenStyle { NoPen, SolidLine, DashLine, DotLine, DashDotLine, DashDotDotLine, CustomDashLine, MPenStyle, }; enum PenCapStyle { FlatCap, SquareCap, RoundCap, MPenCapStyle, }; enum PenJoinStyle { MiterJoin, BevelJoin, RoundJoin, MPenJoinStyle, SvgMiterJoin, }; enum BrushStyle { NoBrush, SolidPattern, Dense1Pattern, Dense2Pattern, Dense3Pattern, Dense4Pattern, Dense5Pattern, Dense6Pattern, Dense7Pattern, HorPattern, VerPattern, CrossPattern, BDiagPattern, FDiagPattern, DiagCrossPattern, LinearGradientPattern, RadialGradientPattern, ConicalGradientPattern, TexturePattern, }; enum UIEffect { UI_General, UI_AnimateMenu, UI_FadeMenu, UI_AnimateCombo, UI_AnimateTooltip, UI_FadeTooltip, UI_AnimateToolBox, }; enum CursorShape { ArrowCursor, UpArrowCursor, CrossCursor, WaitCursor, IBeamCursor, SizeVerCursor, SizeHorCursor, SizeBDiagCursor, SizeFDiagCursor, SizeAllCursor, BlankCursor, SplitVCursor, SplitHCursor, PointingHandCursor, ForbiddenCursor, OpenHandCursor, ClosedHandCursor, WhatsThisCursor, BusyCursor, LastCursor, BitmapCursor, CustomCursor, DragCopyCursor, DragMoveCursor, DragLinkCursor, }; enum TextFormat { PlainText, RichText, AutoText, }; enum AspectRatioMode { IgnoreAspectRatio, KeepAspectRatio, KeepAspectRatioByExpanding, }; enum DockWidgetArea { LeftDockWidgetArea, RightDockWidgetArea, TopDockWidgetArea, BottomDockWidgetArea, DockWidgetArea_Mask, AllDockWidgetAreas, NoDockWidgetArea, }; typedef QFlags DockWidgetAreas; enum TimerType { PreciseTimer, CoarseTimer, VeryCoarseTimer, }; enum ToolBarArea { LeftToolBarArea, RightToolBarArea, TopToolBarArea, BottomToolBarArea, ToolBarArea_Mask, AllToolBarAreas, NoToolBarArea, }; typedef QFlags ToolBarAreas; enum DateFormat { TextDate, ISODate, %If (Qt_5_8_0 -) ISODateWithMs, %End LocalDate, SystemLocaleDate, LocaleDate, SystemLocaleShortDate, SystemLocaleLongDate, DefaultLocaleShortDate, DefaultLocaleLongDate, %If (Qt_5_2_0 -) RFC2822Date, %End }; enum TimeSpec { LocalTime, UTC, OffsetFromUTC, %If (Qt_5_2_0 -) TimeZone, %End }; enum DayOfWeek { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, }; enum ScrollBarPolicy { ScrollBarAsNeeded, ScrollBarAlwaysOff, ScrollBarAlwaysOn, }; enum CaseSensitivity { CaseInsensitive, CaseSensitive, }; enum Corner { TopLeftCorner, TopRightCorner, BottomLeftCorner, BottomRightCorner, }; enum ConnectionType { AutoConnection, DirectConnection, QueuedConnection, BlockingQueuedConnection, UniqueConnection, }; enum ShortcutContext { WidgetShortcut, WindowShortcut, ApplicationShortcut, WidgetWithChildrenShortcut, }; enum FillRule { OddEvenFill, WindingFill, }; enum ClipOperation { NoClip, ReplaceClip, IntersectClip, }; enum TransformationMode { FastTransformation, SmoothTransformation, }; enum FocusReason { MouseFocusReason, TabFocusReason, BacktabFocusReason, ActiveWindowFocusReason, PopupFocusReason, ShortcutFocusReason, MenuBarFocusReason, OtherFocusReason, NoFocusReason, }; enum ContextMenuPolicy { NoContextMenu, PreventContextMenu, DefaultContextMenu, ActionsContextMenu, CustomContextMenu, }; enum InputMethodQuery { ImMicroFocus, ImFont, ImCursorPosition, ImSurroundingText, ImCurrentSelection, ImMaximumTextLength, ImAnchorPosition, ImEnabled, ImCursorRectangle, ImHints, ImPreferredLanguage, ImPlatformData, ImQueryInput, ImQueryAll, %If (Qt_5_3_0 -) ImAbsolutePosition, %End %If (Qt_5_3_0 -) ImTextBeforeCursor, %End %If (Qt_5_3_0 -) ImTextAfterCursor, %End %If (Qt_5_6_0 -) ImEnterKeyType, %End %If (Qt_5_7_0 -) ImAnchorRectangle, %End %If (Qt_5_7_0 -) ImInputItemClipRectangle, %End }; typedef QFlags InputMethodQueries; enum ToolButtonStyle { ToolButtonIconOnly, ToolButtonTextOnly, ToolButtonTextBesideIcon, ToolButtonTextUnderIcon, ToolButtonFollowStyle, }; enum LayoutDirection { LeftToRight, RightToLeft, LayoutDirectionAuto, }; enum DropAction { CopyAction, MoveAction, LinkAction, ActionMask, TargetMoveAction, IgnoreAction, }; typedef QFlags DropActions; enum CheckState { Unchecked, PartiallyChecked, Checked, }; enum ItemDataRole { DisplayRole, DecorationRole, EditRole, ToolTipRole, StatusTipRole, WhatsThisRole, FontRole, TextAlignmentRole, BackgroundRole, BackgroundColorRole, ForegroundRole, TextColorRole, CheckStateRole, AccessibleTextRole, AccessibleDescriptionRole, SizeHintRole, InitialSortOrderRole, UserRole, }; enum ItemFlag { NoItemFlags, ItemIsSelectable, ItemIsEditable, ItemIsDragEnabled, ItemIsDropEnabled, ItemIsUserCheckable, ItemIsEnabled, ItemIsTristate, %If (Qt_5_1_0 -) ItemNeverHasChildren, %End %If (Qt_5_5_0 -) ItemIsUserTristate, %End %If (Qt_5_6_0 -) ItemIsAutoTristate, %End }; typedef QFlags ItemFlags; enum MatchFlag { MatchExactly, MatchFixedString, MatchContains, MatchStartsWith, MatchEndsWith, MatchRegExp, MatchWildcard, MatchCaseSensitive, MatchWrap, MatchRecursive, }; typedef QFlags MatchFlags; typedef void *HANDLE; enum WindowModality { NonModal, WindowModal, ApplicationModal, }; enum ApplicationAttribute { AA_ImmediateWidgetCreation, AA_MSWindowsUseDirect3DByDefault, AA_DontShowIconsInMenus, AA_NativeWindows, AA_DontCreateNativeWidgetSiblings, AA_MacPluginApplication, AA_DontUseNativeMenuBar, AA_MacDontSwapCtrlAndMeta, AA_X11InitThreads, AA_Use96Dpi, AA_SynthesizeTouchForUnhandledMouseEvents, AA_SynthesizeMouseForUnhandledTouchEvents, %If (Qt_5_1_0 -) AA_UseHighDpiPixmaps, %End %If (Qt_5_3_0 -) AA_ForceRasterWidgets, %End %If (Qt_5_3_0 -) AA_UseDesktopOpenGL, %End %If (Qt_5_3_0 -) AA_UseOpenGLES, %End %If (Qt_5_4_0 -) AA_UseSoftwareOpenGL, %End %If (Qt_5_4_0 -) AA_ShareOpenGLContexts, %End %If (Qt_5_5_0 -) AA_SetPalette, %End %If (Qt_5_6_0 -) AA_EnableHighDpiScaling, %End %If (Qt_5_6_0 -) AA_DisableHighDpiScaling, %End %If (Qt_5_7_0 -) AA_PluginApplication, %End %If (Qt_5_7_0 -) AA_UseStyleSheetPropagationInWidgetStyles, %End %If (Qt_5_7_0 -) AA_DontUseNativeDialogs, %End %If (Qt_5_7_0 -) AA_SynthesizeMouseForUnhandledTabletEvents, %End %If (Qt_5_7_0 -) AA_CompressHighFrequencyEvents, %End %If (Qt_5_8_0 -) AA_DontCheckOpenGLContextThreadAffinity, %End %If (Qt_5_9_0 -) AA_DisableShaderDiskCache, %End %If (Qt_5_10_0 -) AA_DontShowShortcutsInContextMenus, %End %If (Qt_5_10_0 -) AA_CompressTabletEvents, %End %If (Qt_5_10_0 -) AA_DisableWindowContextHelpButton, %End }; enum ItemSelectionMode { ContainsItemShape, IntersectsItemShape, ContainsItemBoundingRect, IntersectsItemBoundingRect, }; enum TextInteractionFlag { NoTextInteraction, TextSelectableByMouse, TextSelectableByKeyboard, LinksAccessibleByMouse, LinksAccessibleByKeyboard, TextEditable, TextEditorInteraction, TextBrowserInteraction, }; typedef QFlags TextInteractionFlags; enum MaskMode { MaskInColor, MaskOutColor, }; enum Axis { XAxis, YAxis, ZAxis, }; enum EventPriority { HighEventPriority, NormalEventPriority, LowEventPriority, }; enum SizeMode { AbsoluteSize, RelativeSize, }; enum SizeHint { MinimumSize, PreferredSize, MaximumSize, MinimumDescent, }; enum WindowFrameSection { NoSection, LeftSection, TopLeftSection, TopSection, TopRightSection, RightSection, BottomRightSection, BottomSection, BottomLeftSection, TitleBarArea, }; enum TileRule { StretchTile, RepeatTile, RoundTile, }; enum InputMethodHint { ImhNone, ImhHiddenText, ImhNoAutoUppercase, ImhPreferNumbers, ImhPreferUppercase, ImhPreferLowercase, ImhNoPredictiveText, ImhDigitsOnly, ImhFormattedNumbersOnly, ImhUppercaseOnly, ImhLowercaseOnly, ImhDialableCharactersOnly, ImhEmailCharactersOnly, ImhUrlCharactersOnly, ImhExclusiveInputMask, ImhSensitiveData, ImhDate, ImhTime, ImhPreferLatin, ImhLatinOnly, %If (Qt_5_1_0 -) ImhMultiLine, %End }; typedef QFlags InputMethodHints; enum AnchorPoint { AnchorLeft, AnchorHorizontalCenter, AnchorRight, AnchorTop, AnchorVerticalCenter, AnchorBottom, }; enum CoordinateSystem { DeviceCoordinates, LogicalCoordinates, }; enum TouchPointState { TouchPointPressed, TouchPointMoved, TouchPointStationary, TouchPointReleased, }; typedef QFlags TouchPointStates; enum GestureState { GestureStarted, GestureUpdated, GestureFinished, GestureCanceled, }; enum GestureType { TapGesture, TapAndHoldGesture, PanGesture, PinchGesture, SwipeGesture, CustomGesture, }; enum GestureFlag { DontStartGestureOnChildren, ReceivePartialGestures, IgnoredGesturesPropagateToParent, }; typedef QFlags GestureFlags; enum NavigationMode { NavigationModeNone, NavigationModeKeypadTabOrder, NavigationModeKeypadDirectional, NavigationModeCursorAuto, NavigationModeCursorForceVisible, }; enum CursorMoveStyle { LogicalMoveStyle, VisualMoveStyle, }; enum ScreenOrientation { PrimaryOrientation, PortraitOrientation, LandscapeOrientation, InvertedPortraitOrientation, InvertedLandscapeOrientation, }; typedef QFlags ScreenOrientations; enum FindChildOption { FindDirectChildrenOnly, FindChildrenRecursively, }; typedef QFlags FindChildOptions; enum WhiteSpaceMode { WhiteSpaceNormal, WhiteSpacePre, WhiteSpaceNoWrap, WhiteSpaceModeUndefined, }; enum HitTestAccuracy { ExactHit, FuzzyHit, }; %If (Qt_5_1_0 -) enum ApplicationState { ApplicationSuspended, ApplicationHidden, ApplicationInactive, ApplicationActive, }; %End %If (Qt_5_1_0 -) typedef QFlags ApplicationStates; %End %If (Qt_5_1_0 -) enum Edge { TopEdge, LeftEdge, RightEdge, BottomEdge, }; %End %If (Qt_5_2_0 -) enum NativeGestureType { BeginNativeGesture, EndNativeGesture, PanNativeGesture, ZoomNativeGesture, SmartZoomNativeGesture, RotateNativeGesture, SwipeNativeGesture, }; %End %If (Qt_5_2_0 -) enum ScrollPhase { ScrollBegin, ScrollUpdate, ScrollEnd, %If (Qt_5_7_0 -) NoScrollPhase, %End }; %End %If (Qt_5_3_0 -) typedef QFlags Edges; %End %If (Qt_5_3_0 -) enum MouseEventSource { MouseEventNotSynthesized, MouseEventSynthesizedBySystem, MouseEventSynthesizedByQt, %If (Qt_5_6_0 -) MouseEventSynthesizedByApplication, %End }; %End %If (Qt_5_3_0 -) enum MouseEventFlag { MouseEventCreatedDoubleClick, }; %End %If (Qt_5_3_0 -) typedef QFlags MouseEventFlags; %End %If (Qt_5_5_0 -) enum TabFocusBehavior { NoTabFocus, TabFocusTextControls, TabFocusListControls, TabFocusAllControls, }; %End %If (Qt_5_5_0 -) enum ItemSelectionOperation { ReplaceSelection, AddToSelection, }; %End %If (Qt_5_6_0 -) enum EnterKeyType { EnterKeyDefault, EnterKeyReturn, EnterKeyDone, EnterKeyGo, EnterKeySend, EnterKeySearch, EnterKeyNext, EnterKeyPrevious, }; %End %If (Qt_5_9_0 -) enum ChecksumType { ChecksumIso3309, ChecksumItuV41, }; %End }; QFlags operator|(Qt::MouseButton f1, QFlags f2); QFlags operator|(Qt::Orientation f1, QFlags f2); QFlags operator|(Qt::KeyboardModifier f1, QFlags f2); QFlags operator|(Qt::WindowType f1, QFlags f2); QFlags operator|(Qt::AlignmentFlag f1, QFlags f2); QFlags operator|(Qt::ImageConversionFlag f1, QFlags f2); QFlags operator|(Qt::DockWidgetArea f1, QFlags f2); QFlags operator|(Qt::ToolBarArea f1, QFlags f2); QFlags operator|(Qt::WindowState f1, QFlags f2); QFlags operator|(Qt::DropAction f1, QFlags f2); QFlags operator|(Qt::ItemFlag f1, QFlags f2); QFlags operator|(Qt::MatchFlag f1, QFlags f2); QFlags operator|(Qt::TextInteractionFlag f1, QFlags f2); QFlags operator|(Qt::InputMethodHint f1, QFlags f2); QFlags operator|(Qt::TouchPointState f1, QFlags f2); QFlags operator|(Qt::GestureFlag f1, QFlags f2); QFlags operator|(Qt::ScreenOrientation f1, QFlags f2); QFlags operator|(Qt::InputMethodQuery f1, QFlags f2); %If (Qt_5_3_0 -) QFlags operator|(Qt::Edge f1, QFlags f2); %End %If (Qt_5_3_0 -) QFlags operator|(Qt::MouseEventFlag f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtCore/qnumeric.sip0000644000076500000240000000222413245233150020027 0ustar philstaff00000000000000// qnumeric.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End bool qIsInf(double d); bool qIsFinite(double d); bool qIsNaN(double d); double qInf(); double qSNaN(); double qQNaN(); %If (Qt_5_3_0 -) quint64 qFloatDistance(double a, double b); %End PyQt5_gpl-5.10.1/sip/QtCore/qobject.sip0000644000076500000240000005564213245233150017647 0ustar philstaff00000000000000// qobject.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. typedef QList QObjectList; class QObject /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End %TypeCode // This is needed by the tr() handwritten implementation. #include // These are the helper functions for QObject::findChild() and // QObject::findChildren. // Wrap the given type in a 1-tuple. static PyObject *qtcore_type_to_tuple(PyObject *type) { PyObject *tuple = PyTuple_New(1); if (tuple) { Py_INCREF(type); PyTuple_SetItem(tuple, 0, type); } return tuple; } // Check all elements of a given tuple are type objects and return a new // reference to the tuple if so. static PyObject *qtcore_check_tuple_types(PyObject *types) { for (Py_ssize_t i = 0; i < PyTuple_Size(types); ++i) if (!PyObject_TypeCheck(PyTuple_GetItem(types, i), &PyType_Type)) { PyErr_SetString(PyExc_TypeError, "all elements of the types argument must be type objects"); return 0; } Py_INCREF(types); return types; } // Do the main work of finding a child. static PyObject *qtcore_do_find_child(const QObject *parent, PyObject *types, const QString &name, Qt::FindChildOptions options) { const QObjectList &children = parent->children(); int i; for (i = 0; i < children.size(); ++i) { QObject *obj = children.at(i); PyObject *pyo = sipConvertFromType(obj, sipType_QObject, 0); if (!pyo) return 0; // Allow for proxies. QObject *resolved = reinterpret_cast(sipGetAddress((sipSimpleWrapper *)pyo)); if (name.isNull() || resolved->objectName() == name) for (Py_ssize_t t = 0; t < PyTuple_Size(types); ++t) if (PyType_IsSubtype(Py_TYPE(pyo), (PyTypeObject *)PyTuple_GetItem(types, t))) return pyo; Py_DECREF(pyo); } if (options == Qt::FindChildrenRecursively) for (i = 0; i < children.size(); ++i) { PyObject *pyo = qtcore_do_find_child(children.at(i), types, name, options); if (pyo != Py_None) return pyo; Py_DECREF(pyo); } Py_INCREF(Py_None); return Py_None; } // Find a child that is one of a number of types and with an optional name. static PyObject *qtcore_FindChild(const QObject *parent, PyObject *types, const QString &name, Qt::FindChildOptions options) { // Check that the types checking was successful. if (!types) return 0; PyObject *child = qtcore_do_find_child(parent, types, name, options); Py_DECREF(types); return child; } // Do the main work of finding the children with a string name. static bool qtcore_do_find_children(const QObject *parent, PyObject *types, const QString &name, Qt::FindChildOptions options, PyObject *list) { const QObjectList &children = parent->children(); int i; for (i = 0; i < children.size(); ++i) { QObject *obj = children.at(i); PyObject *pyo = sipConvertFromType(obj, sipType_QObject, 0); if (!pyo) return false; // Allow for proxies. QObject *resolved = reinterpret_cast(sipGetAddress((sipSimpleWrapper *)pyo)); if (name.isNull() || resolved->objectName() == name) for (Py_ssize_t t = 0; t < PyTuple_Size(types); ++t) if (PyType_IsSubtype(Py_TYPE(pyo), (PyTypeObject *)PyTuple_GetItem(types, t))) if (PyList_Append(list, pyo) < 0) { Py_DECREF(pyo); return false; } Py_DECREF(pyo); if (options == Qt::FindChildrenRecursively) { bool ok = qtcore_do_find_children(obj, types, name, options, list); if (!ok) return false; } } return true; } // Find a child that is one of a number of types and with an optional string // name. static PyObject *qtcore_FindChildren(const QObject *parent, PyObject *types, const QString &name, Qt::FindChildOptions options) { // Check that the types checking was successful. if (!types) return 0; PyObject *list = PyList_New(0); if (list) if (!qtcore_do_find_children(parent, types, name, options, list)) Py_DECREF(list); Py_DECREF(types); return list; } // Do the main work of finding the children with a QRegExp name. static bool qtcore_do_find_children(const QObject *parent, PyObject *types, const QRegExp &re, Qt::FindChildOptions options, PyObject *list) { const QObjectList &children = parent->children(); int i; for (i = 0; i < children.size(); ++i) { QObject *obj = children.at(i); PyObject *pyo = sipConvertFromType(obj, sipType_QObject, 0); if (!pyo) return false; if (re.indexIn(obj->objectName()) >= 0) for (Py_ssize_t t = 0; t < PyTuple_Size(types); ++t) if (PyType_IsSubtype(Py_TYPE(pyo), (PyTypeObject *)PyTuple_GetItem(types, t))) if (PyList_Append(list, pyo) < 0) { Py_DECREF(pyo); return false; } Py_DECREF(pyo); if (options == Qt::FindChildrenRecursively) { bool ok = qtcore_do_find_children(obj, types, re, options, list); if (!ok) return false; } } return true; } // Find a child that is one of a number of types and with an optional QRegExp // name. static PyObject *qtcore_FindChildren(const QObject *parent, PyObject *types, const QRegExp &re, Qt::FindChildOptions options) { // Check that the types checking was successful. if (!types) return 0; PyObject *list = PyList_New(0); if (list) if (!qtcore_do_find_children(parent, types, re, options, list)) Py_DECREF(list); Py_DECREF(types); return list; } // Do the main work of finding the children with a QRegularExpression name. static bool qtcore_do_find_children(const QObject *parent, PyObject *types, const QRegularExpression &re, Qt::FindChildOptions options, PyObject *list) { const QObjectList &children = parent->children(); int i; for (i = 0; i < children.size(); ++i) { QObject *obj = children.at(i); PyObject *pyo = sipConvertFromType(obj, sipType_QObject, 0); if (!pyo) return false; QRegularExpressionMatch m = re.match(obj->objectName()); if (m.hasMatch()) for (Py_ssize_t t = 0; t < PyTuple_Size(types); ++t) if (PyType_IsSubtype(Py_TYPE(pyo), (PyTypeObject *)PyTuple_GetItem(types, t))) if (PyList_Append(list, pyo) < 0) { Py_DECREF(pyo); return false; } Py_DECREF(pyo); if (options == Qt::FindChildrenRecursively) { bool ok = qtcore_do_find_children(obj, types, re, options, list); if (!ok) return false; } } return true; } // Find a child that is one of a number of types and with an optional // QRegularExpression name. static PyObject *qtcore_FindChildren(const QObject *parent, PyObject *types, const QRegularExpression &re, Qt::FindChildOptions options) { // Check that the types checking was successful. if (!types) return 0; PyObject *list = PyList_New(0); if (list) if (!qtcore_do_find_children(parent, types, re, options, list)) Py_DECREF(list); Py_DECREF(types); return list; } %End %FinalisationCode return qpycore_qobject_finalisation(sipSelf, sipCpp, sipKwds, sipUnused); %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSettings, &sipType_QSettings, -1, 1}, {sipName_QAbstractAnimation, &sipType_QAbstractAnimation, 25, 2}, {sipName_QAbstractState, &sipType_QAbstractState, 31, 3}, #if QT_VERSION >= 0x050200 {sipName_QFileSelector, &sipType_QFileSelector, -1, 4}, #else {0, 0, -1, 4}, #endif {sipName_QTimer, &sipType_QTimer, -1, 5}, {sipName_QItemSelectionModel, &sipType_QItemSelectionModel, -1, 6}, {sipName_QSocketNotifier, &sipType_QSocketNotifier, -1, 7}, {sipName_QIODevice, &sipType_QIODevice, 35, 8}, {sipName_QObjectCleanupHandler, &sipType_QObjectCleanupHandler, -1, 9}, {sipName_QAbstractTransition, &sipType_QAbstractTransition, 41, 10}, {sipName_QThread, &sipType_QThread, -1, 11}, {sipName_QTranslator, &sipType_QTranslator, -1, 12}, {sipName_QPluginLoader, &sipType_QPluginLoader, -1, 13}, #if defined(Q_OS_WIN) {sipName_QWinEventNotifier, &sipType_QWinEventNotifier, -1, 14}, #else {0, 0, -1, 14}, #endif {sipName_QMimeData, &sipType_QMimeData, -1, 15}, {sipName_QSignalMapper, &sipType_QSignalMapper, -1, 16}, {sipName_QAbstractEventDispatcher, &sipType_QAbstractEventDispatcher, -1, 17}, {sipName_QThreadPool, &sipType_QThreadPool, -1, 18}, {sipName_QCoreApplication, &sipType_QCoreApplication, -1, 19}, {sipName_QFileSystemWatcher, &sipType_QFileSystemWatcher, -1, 20}, {sipName_QSharedMemory, &sipType_QSharedMemory, -1, 21}, {sipName_QAbstractItemModel, &sipType_QAbstractItemModel, 43, 22}, {sipName_QEventLoop, &sipType_QEventLoop, -1, 23}, {sipName_QLibrary, &sipType_QLibrary, -1, 24}, {sipName_QTimeLine, &sipType_QTimeLine, -1, -1}, {sipName_QPauseAnimation, &sipType_QPauseAnimation, -1, 26}, {sipName_QAnimationGroup, &sipType_QAnimationGroup, 28, 27}, {sipName_QVariantAnimation, &sipType_QVariantAnimation, 30, -1}, {sipName_QSequentialAnimationGroup, &sipType_QSequentialAnimationGroup, -1, 29}, {sipName_QParallelAnimationGroup, &sipType_QParallelAnimationGroup, -1, -1}, {sipName_QPropertyAnimation, &sipType_QPropertyAnimation, -1, -1}, {sipName_QHistoryState, &sipType_QHistoryState, -1, 32}, {sipName_QFinalState, &sipType_QFinalState, -1, 33}, {sipName_QState, &sipType_QState, 34, -1}, {sipName_QStateMachine, &sipType_QStateMachine, -1, -1}, {sipName_QBuffer, &sipType_QBuffer, -1, 36}, {sipName_QFileDevice, &sipType_QFileDevice, 38, 37}, #if !defined(QT_NO_PROCESS) {sipName_QProcess, &sipType_QProcess, -1, -1}, #else {0, 0, -1, -1}, #endif #if QT_VERSION >= 0x050100 {sipName_QSaveFile, &sipType_QSaveFile, -1, 39}, #else {0, 0, -1, 39}, #endif {sipName_QFile, &sipType_QFile, 40, -1}, {sipName_QTemporaryFile, &sipType_QTemporaryFile, -1, -1}, {sipName_QSignalTransition, &sipType_QSignalTransition, -1, 42}, {sipName_QEventTransition, &sipType_QEventTransition, -1, -1}, {sipName_QAbstractListModel, &sipType_QAbstractListModel, 46, 44}, {sipName_QAbstractProxyModel, &sipType_QAbstractProxyModel, 47, 45}, {sipName_QAbstractTableModel, &sipType_QAbstractTableModel, -1, -1}, {sipName_QStringListModel, &sipType_QStringListModel, -1, -1}, {sipName_QSortFilterProxyModel, &sipType_QSortFilterProxyModel, -1, 48}, {sipName_QIdentityProxyModel, &sipType_QIdentityProxyModel, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End %GCTraverseCode // Traverse any saved slots we might be connected to. sipRes = qpycore_visitSlotProxies(sipCpp, sipVisit, sipArg); %End %GCClearCode // Clear any saved slots we might be connected to. sipRes = qpycore_clearSlotProxies(sipCpp); %End public: static const QMetaObject staticMetaObject { %GetCode sipPy = qpycore_qobject_staticmetaobject(sipPyType); %End }; const QMetaObject *metaObject() const; explicit QObject(QObject *parent /TransferThis/ = 0); virtual ~QObject(); void pyqtConfigure(SIP_PYOBJECT) /NoArgParser/; %Docstring QObject.pyqtConfigure(...) Each keyword argument is either the name of a Qt property or a Qt signal. For properties the property is set to the given value which should be of an appropriate type. For signals the signal is connected to the given value which should be a callable. %End %MethodCode return qpycore_pyqtconfigure(sipSelf, sipArgs, sipKwds); %End SIP_PYOBJECT __getattr__(const char *name) const; %MethodCode sipRes = qpycore_qobject_getattr(sipCpp, sipSelf, a0); %End virtual bool event(QEvent *); virtual bool eventFilter(QObject *, QEvent *); QString tr(const char *sourceText /Encoding="UTF-8"/, const char *disambiguation = 0, int n = -1) const; %MethodCode // Note that tr() is really a static method. We pretend it isn't so we can use // self to get hold of the class name. sipRes = new QString(QCoreApplication::translate(sipPyTypeName(Py_TYPE(sipSelf)), a0, a1, a2)); %End SIP_PYOBJECT findChild(SIP_PYTYPE type, const QString &name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="QObject"/; %MethodCode sipRes = qtcore_FindChild(sipCpp, qtcore_type_to_tuple(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYOBJECT findChild(SIP_PYTUPLE types /TypeHintValue="()"/, const QString &name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="QObject"/; %MethodCode sipRes = qtcore_FindChild(sipCpp, qtcore_check_tuple_types(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYLIST findChildren(SIP_PYTYPE type, const QString &name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="List[QObject]"/; %MethodCode sipRes = qtcore_FindChildren(sipCpp, qtcore_type_to_tuple(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYLIST findChildren(SIP_PYTUPLE types /TypeHintValue="()"/, const QString &name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="List[QObject]"/; %MethodCode sipRes = qtcore_FindChildren(sipCpp, qtcore_check_tuple_types(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYLIST findChildren(SIP_PYTYPE type, const QRegExp ®Exp, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="List[QObject]"/; %MethodCode sipRes = qtcore_FindChildren(sipCpp, qtcore_type_to_tuple(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYLIST findChildren(SIP_PYTUPLE types /TypeHintValue="()"/, const QRegExp ®Exp, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="List[QObject]"/; %MethodCode sipRes = qtcore_FindChildren(sipCpp, qtcore_check_tuple_types(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYLIST findChildren(SIP_PYTYPE type, const QRegularExpression &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="List[QObject]"/; %MethodCode sipRes = qtcore_FindChildren(sipCpp, qtcore_type_to_tuple(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYLIST findChildren(SIP_PYTUPLE types /TypeHintValue="()"/, const QRegularExpression &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="List[QObject]"/; %MethodCode sipRes = qtcore_FindChildren(sipCpp, qtcore_check_tuple_types(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End QString objectName() const; void setObjectName(const QString &name); bool isWidgetType() const; bool isWindowType() const; bool signalsBlocked() const; bool blockSignals(bool b); QThread *thread() const; void moveToThread(QThread *thread); int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer); void killTimer(int id); const QObjectList &children() const; void setParent(QObject * /TransferThis/); void installEventFilter(QObject *); void removeEventFilter(QObject *); %If (Qt_5_9_0 -) void dumpObjectInfo() const; %End %If (- Qt_5_9_0) void dumpObjectInfo(); %End %If (Qt_5_9_0 -) void dumpObjectTree() const; %End %If (- Qt_5_9_0) void dumpObjectTree(); %End QList dynamicPropertyNames() const; bool setProperty(const char *name, const QVariant &value); QVariant property(const char *name) const; signals: void destroyed(QObject *object = 0); void objectNameChanged(const QString &objectName); public: QObject *parent() const; bool inherits(const char *classname) const; public slots: void deleteLater() /TransferThis/; protected: QObject *sender() const /ReleaseGIL/; %MethodCode // sender() must be called without the GIL to avoid possible deadlocks between // the GIL and Qt's internal thread data mutex. Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipRes = sipCpp->sender(); #else sipRes = sipCpp->sipProtect_sender(); #endif Py_END_ALLOW_THREADS if (!sipRes) { typedef QObject *(*qtcore_qobject_sender_t)(); static qtcore_qobject_sender_t qtcore_qobject_sender = 0; if (!qtcore_qobject_sender) { qtcore_qobject_sender = (qtcore_qobject_sender_t)sipImportSymbol("qtcore_qobject_sender"); Q_ASSERT(qtcore_qobject_sender); } sipRes = qtcore_qobject_sender(); } %End int receivers(SIP_PYOBJECT signal /TypeHint="PYQT_SIGNAL"/) const [int (const char *signal)]; %MethodCode // We need to handle the signal object. Import the helper if it hasn't already // been done. typedef sipErrorState (*pyqt5_get_signal_signature_t)(PyObject *, const QObject *, const QByteArray &); static pyqt5_get_signal_signature_t pyqt5_get_signal_signature = 0; if (!pyqt5_get_signal_signature) { pyqt5_get_signal_signature = (pyqt5_get_signal_signature_t)sipImportSymbol("pyqt5_get_signal_signature"); Q_ASSERT(pyqt5_get_signal_signature); } QByteArray signal_signature; #if defined(SIP_PROTECTED_IS_PUBLIC) if ((sipError = pyqt5_get_signal_signature(a0, sipCpp, signal_signature)) == sipErrorNone) { sipRes = sipCpp->receivers(signal_signature.constData()); } #else if ((sipError = pyqt5_get_signal_signature(a0, static_cast(sipCpp), signal_signature)) == sipErrorNone) { sipRes = sipCpp->sipProtect_receivers(signal_signature.constData()); } #endif else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual void timerEvent(QTimerEvent *); virtual void childEvent(QChildEvent *); virtual void customEvent(QEvent *); virtual void connectNotify(const QMetaMethod &signal); virtual void disconnectNotify(const QMetaMethod &signal); int senderSignalIndex() const; bool isSignalConnected(const QMetaMethod &signal) const; public: SIP_PYOBJECT disconnect() const /TypeHint=""/; %MethodCode sipRes = qpycore_qobject_disconnect(sipCpp); %End private: QObject(const QObject &); }; SIP_PYOBJECT Q_CLASSINFO(const char *name, const char *value) /TypeHint=""/; %MethodCode sipRes = qpycore_ClassInfo(a0, a1); %End SIP_PYOBJECT Q_ENUMS(...) /TypeHint=""/; %MethodCode sipRes = qpycore_Enums(a0); %End SIP_PYOBJECT Q_FLAGS(...) /TypeHint=""/; %MethodCode sipRes = qpycore_Flags(a0); %End SIP_PYOBJECT QT_TR_NOOP(SIP_PYOBJECT /TypeHint="str"/) /TypeHint="str"/; %MethodCode Py_INCREF(a0); sipRes = a0; %End SIP_PYOBJECT QT_TR_NOOP_UTF8(SIP_PYOBJECT /TypeHint="str"/) /TypeHint="str"/; %MethodCode Py_INCREF(a0); sipRes = a0; %End SIP_PYOBJECT QT_TRANSLATE_NOOP(SIP_PYOBJECT /TypeHint="str"/, SIP_PYOBJECT /TypeHint="str"/) /TypeHint="str"/; %MethodCode Py_INCREF(a1); sipRes = a1; %End SIP_PYOBJECT pyqtSlot(... types, const char *name = 0, const char *result = 0) /NoArgParser, TypeHint="Callable[..., Optional[str]]"/; %Docstring @pyqtSlot(*types, name: Optional[str], result: Optional[str]) This is a decorator applied to Python methods of a QObject that marks them as Qt slots. The non-keyword arguments are the types of the slot arguments and each may be a Python type object or a string specifying a C++ type. name is the name of the slot and defaults to the name of the method. result is type of the value returned by the slot. %End %MethodCode return qpycore_pyqtslot(sipArgs, sipKwds); %End %If (Qt_5_3_0 -) class QSignalBlocker { %TypeHeaderCode #include %End public: explicit QSignalBlocker(QObject *o); ~QSignalBlocker(); void reblock(); void unblock(); SIP_PYOBJECT __enter__(); %MethodCode // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->unblock(); %End private: QSignalBlocker(const QSignalBlocker &); }; %End %ModuleHeaderCode #include "qpycore_api.h" %End %ModuleCode // Disable the (supposedly) compulsory parts of the Qt support API. #define sipQtCreateUniversalSlot 0 #define sipQtDestroyUniversalSlot 0 #define sipQtFindSlot 0 #define sipQtConnect 0 #define sipQtDisconnect 0 #define sipQtSameSignalSlotName 0 #define sipQtFindSipslot 0 %End %InitialisationCode qpycore_init(); %End %PostInitialisationCode qpycore_post_init(sipModuleDict); %End PyQt5_gpl-5.10.1/sip/QtCore/qobjectcleanuphandler.sip0000644000076500000240000000234013245233150022540 0ustar philstaff00000000000000// qobjectcleanuphandler.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QObjectCleanupHandler : QObject { %TypeHeaderCode #include %End public: QObjectCleanupHandler(); virtual ~QObjectCleanupHandler(); QObject *add(QObject *object); void remove(QObject *object); bool isEmpty() const; void clear(); }; PyQt5_gpl-5.10.1/sip/QtCore/qobjectdefs.sip0000644000076500000240000001641513245233150020504 0ustar philstaff00000000000000// qobjectdefs.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. struct QMetaObject { %TypeHeaderCode #include %End %TypeCode // Raise an exception when QMetaObject::invokeMethod() returns false. static void qtcore_invokeMethod_exception() { PyErr_SetString(PyExc_RuntimeError, "QMetaObject.invokeMethod() call failed"); } %End const char *className() const; const QMetaObject *superClass() const; QMetaProperty userProperty() const; int methodOffset() const; int enumeratorOffset() const; int propertyOffset() const; int classInfoOffset() const; int methodCount() const; int enumeratorCount() const; int propertyCount() const; int classInfoCount() const; int indexOfMethod(const char *method) const; int indexOfSignal(const char *signal) const; int indexOfSlot(const char *slot) const; int indexOfEnumerator(const char *name) const; int indexOfProperty(const char *name) const; int indexOfClassInfo(const char *name) const; QMetaMethod method(int index) const; QMetaEnum enumerator(int index) const; QMetaProperty property(int index) const; QMetaClassInfo classInfo(int index) const; static bool checkConnectArgs(const char *signal, const char *method); static void connectSlotsByName(QObject *o /GetWrapper/); %MethodCode qpycore_qmetaobject_connectslotsbyname(a0, a0Wrapper); %End static QByteArray normalizedSignature(const char *method); static QByteArray normalizedType(const char *type); static SIP_PYOBJECT invokeMethod(QObject *obj, const char *member, Qt::ConnectionType type, QGenericReturnArgument ret /GetWrapper/, QGenericArgument value0 = QGenericArgument(0u, 0u), QGenericArgument value1 = QGenericArgument(0u, 0u), QGenericArgument value2 = QGenericArgument(0u, 0u), QGenericArgument value3 = QGenericArgument(0u, 0u), QGenericArgument value4 = QGenericArgument(0u, 0u), QGenericArgument value5 = QGenericArgument(0u, 0u), QGenericArgument value6 = QGenericArgument(0u, 0u), QGenericArgument value7 = QGenericArgument(0u, 0u), QGenericArgument value8 = QGenericArgument(0u, 0u), QGenericArgument value9 = QGenericArgument(0u, 0u)); %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = QMetaObject::invokeMethod(a0,a1,a2,*a3,*a4,*a5,*a6,*a7,*a8,*a9,*a10,*a11,*a12,*a13); Py_END_ALLOW_THREADS if (ok) sipRes = qpycore_ReturnValue(a3Wrapper); else qtcore_invokeMethod_exception(); %End static SIP_PYOBJECT invokeMethod(QObject *obj, const char *member, QGenericReturnArgument ret /GetWrapper/, QGenericArgument value0 = QGenericArgument(0u, 0u), QGenericArgument value1 = QGenericArgument(0u, 0u), QGenericArgument value2 = QGenericArgument(0u, 0u), QGenericArgument value3 = QGenericArgument(0u, 0u), QGenericArgument value4 = QGenericArgument(0u, 0u), QGenericArgument value5 = QGenericArgument(0u, 0u), QGenericArgument value6 = QGenericArgument(0u, 0u), QGenericArgument value7 = QGenericArgument(0u, 0u), QGenericArgument value8 = QGenericArgument(0u, 0u), QGenericArgument value9 = QGenericArgument(0u, 0u)); %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = QMetaObject::invokeMethod(a0,a1,*a2,*a3,*a4,*a5,*a6,*a7,*a8,*a9,*a10,*a11,*a12); Py_END_ALLOW_THREADS if (ok) sipRes = qpycore_ReturnValue(a2Wrapper); else qtcore_invokeMethod_exception(); %End static SIP_PYOBJECT invokeMethod(QObject *obj, const char *member, Qt::ConnectionType type, QGenericArgument value0 = QGenericArgument(0u, 0u), QGenericArgument value1 = QGenericArgument(0u, 0u), QGenericArgument value2 = QGenericArgument(0u, 0u), QGenericArgument value3 = QGenericArgument(0u, 0u), QGenericArgument value4 = QGenericArgument(0u, 0u), QGenericArgument value5 = QGenericArgument(0u, 0u), QGenericArgument value6 = QGenericArgument(0u, 0u), QGenericArgument value7 = QGenericArgument(0u, 0u), QGenericArgument value8 = QGenericArgument(0u, 0u), QGenericArgument value9 = QGenericArgument(0u, 0u)); %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = QMetaObject::invokeMethod(a0,a1,a2,*a3,*a4,*a5,*a6,*a7,*a8,*a9,*a10,*a11,*a12); Py_END_ALLOW_THREADS if (ok) { Py_INCREF(Py_None); sipRes = Py_None; } else qtcore_invokeMethod_exception(); %End static SIP_PYOBJECT invokeMethod(QObject *obj, const char *member, QGenericArgument value0 = QGenericArgument(0u, 0u), QGenericArgument value1 = QGenericArgument(0u, 0u), QGenericArgument value2 = QGenericArgument(0u, 0u), QGenericArgument value3 = QGenericArgument(0u, 0u), QGenericArgument value4 = QGenericArgument(0u, 0u), QGenericArgument value5 = QGenericArgument(0u, 0u), QGenericArgument value6 = QGenericArgument(0u, 0u), QGenericArgument value7 = QGenericArgument(0u, 0u), QGenericArgument value8 = QGenericArgument(0u, 0u), QGenericArgument value9 = QGenericArgument(0u, 0u)); %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = QMetaObject::invokeMethod(a0,a1,*a2,*a3,*a4,*a5,*a6,*a7,*a8,*a9,*a10,*a11); Py_END_ALLOW_THREADS if (ok) { Py_INCREF(Py_None); sipRes = Py_None; } else qtcore_invokeMethod_exception(); %End int constructorCount() const; int indexOfConstructor(const char *constructor) const; QMetaMethod constructor(int index) const; static bool checkConnectArgs(const QMetaMethod &signal, const QMetaMethod &method); %If (Qt_5_7_0 -) bool inherits(const QMetaObject *metaObject) const; %End }; // The support for Q_ARG(), Q_RETURN_ARG() and supporting classes. class QGenericArgument /NoDefaultCtors/ { %TypeHeaderCode #include %End public: ~QGenericArgument(); }; SIP_PYOBJECT Q_ARG(SIP_PYOBJECT type, SIP_PYOBJECT data) /TypeHint="QGenericArgument"/; %MethodCode sipRes = qpycore_ArgumentFactory(a0, a1); %End class QGenericReturnArgument /NoDefaultCtors/ { %TypeHeaderCode #include %End public: ~QGenericReturnArgument(); }; SIP_PYOBJECT Q_RETURN_ARG(SIP_PYOBJECT type) /TypeHint="QGenericReturnArgument"/; %MethodCode sipRes = qpycore_ReturnFactory(a0); %End PyQt5_gpl-5.10.1/sip/QtCore/qoperatingsystemversion.sip0000644000076500000240000000643513245233150023240 0ustar philstaff00000000000000// qoperatingsystemversion.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_9_0 -) class QOperatingSystemVersion { %TypeHeaderCode #include %End public: enum OSType { Unknown, Windows, MacOS, IOS, TvOS, WatchOS, Android, }; static const QOperatingSystemVersion Windows7; static const QOperatingSystemVersion Windows8; static const QOperatingSystemVersion Windows8_1; static const QOperatingSystemVersion Windows10; static const QOperatingSystemVersion OSXMavericks; static const QOperatingSystemVersion OSXYosemite; static const QOperatingSystemVersion OSXElCapitan; static const QOperatingSystemVersion MacOSSierra; %If (Qt_5_9_1 -) static const QOperatingSystemVersion MacOSHighSierra; %End static const QOperatingSystemVersion AndroidJellyBean; static const QOperatingSystemVersion AndroidJellyBean_MR1; static const QOperatingSystemVersion AndroidJellyBean_MR2; static const QOperatingSystemVersion AndroidKitKat; static const QOperatingSystemVersion AndroidLollipop; static const QOperatingSystemVersion AndroidLollipop_MR1; static const QOperatingSystemVersion AndroidMarshmallow; static const QOperatingSystemVersion AndroidNougat; static const QOperatingSystemVersion AndroidNougat_MR1; %If (Qt_5_9_2 -) static const QOperatingSystemVersion AndroidOreo; %End %If (- Qt_5_9_2) QOperatingSystemVersion(const QOperatingSystemVersion &other); %End QOperatingSystemVersion(QOperatingSystemVersion::OSType osType, int vmajor, int vminor = -1, int vmicro = -1); static QOperatingSystemVersion current(); %If (Qt_5_10_0 -) static QOperatingSystemVersion::OSType currentType(); %End int majorVersion() const; int minorVersion() const; int microVersion() const; int segmentCount() const; QOperatingSystemVersion::OSType type() const; QString name() const; private: QOperatingSystemVersion(); }; %End %If (Qt_5_9_0 -) bool operator>(const QOperatingSystemVersion &lhs, const QOperatingSystemVersion &rhs); %End %If (Qt_5_9_0 -) bool operator>=(const QOperatingSystemVersion &lhs, const QOperatingSystemVersion &rhs); %End %If (Qt_5_9_0 -) bool operator<(const QOperatingSystemVersion &lhs, const QOperatingSystemVersion &rhs); %End %If (Qt_5_9_0 -) bool operator<=(const QOperatingSystemVersion &lhs, const QOperatingSystemVersion &rhs); %End PyQt5_gpl-5.10.1/sip/QtCore/qparallelanimationgroup.sip0000644000076500000240000000304613245233150023141 0ustar philstaff00000000000000// qparallelanimationgroup.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QParallelAnimationGroup : QAnimationGroup { %TypeHeaderCode #include %End public: QParallelAnimationGroup(QObject *parent /TransferThis/ = 0); virtual ~QParallelAnimationGroup(); virtual int duration() const; protected: virtual bool event(QEvent *event); virtual void updateCurrentTime(int currentTime); virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); virtual void updateDirection(QAbstractAnimation::Direction direction); private: QParallelAnimationGroup(const QParallelAnimationGroup &); }; PyQt5_gpl-5.10.1/sip/QtCore/qpauseanimation.sip0000644000076500000240000000262513245233150021407 0ustar philstaff00000000000000// qpauseanimation.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPauseAnimation : QAbstractAnimation { %TypeHeaderCode #include %End public: QPauseAnimation(QObject *parent /TransferThis/ = 0); QPauseAnimation(int msecs, QObject *parent /TransferThis/ = 0); virtual ~QPauseAnimation(); virtual int duration() const; void setDuration(int msecs); protected: virtual bool event(QEvent *e); virtual void updateCurrentTime(int); private: QPauseAnimation(const QPauseAnimation &); }; PyQt5_gpl-5.10.1/sip/QtCore/qpluginloader.sip0000644000076500000240000000310713245233150021053 0ustar philstaff00000000000000// qpluginloader.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPluginLoader : QObject { %TypeHeaderCode #include %End public: explicit QPluginLoader(QObject *parent /TransferThis/ = 0); QPluginLoader(const QString &fileName, QObject *parent /TransferThis/ = 0); virtual ~QPluginLoader(); QObject *instance(); static QObjectList staticInstances(); bool load(); bool unload(); bool isLoaded() const; void setFileName(const QString &fileName); QString fileName() const; QString errorString() const; void setLoadHints(QLibrary::LoadHints loadHints); QLibrary::LoadHints loadHints() const; private: QPluginLoader(const QPluginLoader &); }; PyQt5_gpl-5.10.1/sip/QtCore/qpoint.sip0000644000076500000240000001427313245233150017525 0ustar philstaff00000000000000// qpoint.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPoint { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"ii", sipCpp->x(), sipCpp->y()); %End public: int manhattanLength() const; QPoint(); QPoint(int xpos, int ypos); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QPoint()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QPoint()"); #endif } else { sipRes = #if PY_MAJOR_VERSION >= 3 PyUnicode_FromFormat #else PyString_FromFormat #endif ("PyQt5.QtCore.QPoint(%i, %i)", sipCpp->x(), sipCpp->y()); } %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End int x() const; int y() const; void setX(int xpos); void setY(int ypos); QPoint &operator+=(const QPoint &p); QPoint &operator-=(const QPoint &p); QPoint &operator*=(int c /Constrained/); QPoint &operator*=(double c); QPoint &operator/=(qreal c); %If (Qt_5_1_0 -) static int dotProduct(const QPoint &p1, const QPoint &p2); %End }; QDataStream &operator<<(QDataStream &, const QPoint & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPoint & /Constrained/) /ReleaseGIL/; bool operator==(const QPoint &p1, const QPoint &p2); bool operator!=(const QPoint &p1, const QPoint &p2); const QPoint operator+(const QPoint &p1, const QPoint &p2); const QPoint operator-(const QPoint &p1, const QPoint &p2); const QPoint operator*(const QPoint &p, int c /Constrained/); const QPoint operator*(int c /Constrained/, const QPoint &p); const QPoint operator*(const QPoint &p, double c); const QPoint operator*(double c, const QPoint &p); const QPoint operator-(const QPoint &p); const QPoint operator/(const QPoint &p, qreal c); class QPointF /TypeHintIn="Union[QPointF, QPoint]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode // Allow a QPoint whenever a QPointF is expected. This is mainly to help source // compatibility for Qt5. if (sipIsErr == NULL) return (sipCanConvertToType(sipPy, sipType_QPointF, SIP_NO_CONVERTORS) || sipCanConvertToType(sipPy, sipType_QPoint, 0)); if (sipCanConvertToType(sipPy, sipType_QPointF, SIP_NO_CONVERTORS)) { *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QPointF, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } int state; QPoint *pt = reinterpret_cast(sipConvertToType(sipPy, sipType_QPoint, 0, 0, &state, sipIsErr)); if (*sipIsErr) { sipReleaseType(pt, sipType_QPoint, state); return 0; } *sipCppPtr = new QPointF(*pt); sipReleaseType(pt, sipType_QPoint, state); return sipGetState(sipTransferObj); %End %PickleCode sipRes = Py_BuildValue((char *)"dd", sipCpp->x(), sipCpp->y()); %End public: QPointF(); QPointF(qreal xpos, qreal ypos); QPointF(const QPoint &p); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QPointF()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QPointF()"); #endif } else { PyObject *x = PyFloat_FromDouble(sipCpp->x()); PyObject *y = PyFloat_FromDouble(sipCpp->y()); if (x && y) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QPointF(%R, %R)", x, y); #else sipRes = PyString_FromString("PyQt5.QtCore.QPointF("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(x)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(y)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } Py_XDECREF(x); Py_XDECREF(y); } %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End qreal x() const; qreal y() const; void setX(qreal xpos); void setY(qreal ypos); QPointF &operator+=(const QPointF &p); QPointF &operator-=(const QPointF &p); QPointF &operator*=(qreal c); QPointF &operator/=(qreal c); QPoint toPoint() const; qreal manhattanLength() const; %If (Qt_5_1_0 -) static qreal dotProduct(const QPointF &p1, const QPointF &p2); %End }; QDataStream &operator<<(QDataStream &, const QPointF & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPointF & /Constrained/) /ReleaseGIL/; bool operator==(const QPointF &p1, const QPointF &p2); bool operator!=(const QPointF &p1, const QPointF &p2); const QPointF operator+(const QPointF &p1, const QPointF &p2); const QPointF operator-(const QPointF &p1, const QPointF &p2); const QPointF operator*(const QPointF &p, qreal c); const QPointF operator*(qreal c, const QPointF &p); const QPointF operator-(const QPointF &p); const QPointF operator/(const QPointF &p, qreal c); const QPoint operator+(const QPoint &p); const QPointF operator+(const QPointF &p); PyQt5_gpl-5.10.1/sip/QtCore/qprocess.sip0000644000076500000240000001704313245233150020050 0ustar philstaff00000000000000// qprocess.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (WS_WIN) %If (PyQt_Process) typedef void *Q_PID; %End %End %If (WS_X11 || WS_MACX) %If (PyQt_Process) typedef qint64 Q_PID; %End %End %If (PyQt_Process) class QProcess : QIODevice { %TypeHeaderCode #include %End public: enum ExitStatus { NormalExit, CrashExit, }; enum ProcessError { FailedToStart, Crashed, Timedout, ReadError, WriteError, UnknownError, }; enum ProcessState { NotRunning, Starting, Running, }; enum ProcessChannel { StandardOutput, StandardError, }; enum ProcessChannelMode { SeparateChannels, MergedChannels, ForwardedChannels, %If (Qt_5_2_0 -) ForwardedOutputChannel, %End %If (Qt_5_2_0 -) ForwardedErrorChannel, %End }; explicit QProcess(QObject *parent /TransferThis/ = 0); virtual ~QProcess(); void start(const QString &program, const QStringList &arguments, QIODevice::OpenMode mode = QIODevice::ReadWrite) /HoldGIL/; void start(const QString &command, QIODevice::OpenMode mode = QIODevice::ReadWrite) /HoldGIL/; %If (Qt_5_1_0 -) void start(QIODevice::OpenMode mode = QIODevice::ReadWrite) /HoldGIL/; %End QProcess::ProcessChannel readChannel() const; void setReadChannel(QProcess::ProcessChannel channel); void closeReadChannel(QProcess::ProcessChannel channel); void closeWriteChannel(); QString workingDirectory() const; void setWorkingDirectory(const QString &dir); QProcess::ProcessError error() const; QProcess::ProcessState state() const; Q_PID pid() const; bool waitForStarted(int msecs = 30000) /ReleaseGIL/; virtual bool waitForReadyRead(int msecs = 30000) /ReleaseGIL/; virtual bool waitForBytesWritten(int msecs = 30000) /ReleaseGIL/; bool waitForFinished(int msecs = 30000) /ReleaseGIL/; QByteArray readAllStandardOutput() /ReleaseGIL/; QByteArray readAllStandardError() /ReleaseGIL/; int exitCode() const; QProcess::ExitStatus exitStatus() const; virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool isSequential() const; virtual bool canReadLine() const; virtual void close(); virtual bool atEnd() const; static int execute(const QString &program, const QStringList &arguments) /ReleaseGIL/; static int execute(const QString &program) /ReleaseGIL/; static bool startDetached(const QString &program, const QStringList &arguments, const QString &workingDirectory, qint64 *pid = 0); static bool startDetached(const QString &program, const QStringList &arguments); static bool startDetached(const QString &program); %If (Qt_5_10_0 -) bool startDetached(qint64 *pid = 0); %End static QStringList systemEnvironment(); QProcess::ProcessChannelMode processChannelMode() const; void setProcessChannelMode(QProcess::ProcessChannelMode mode); void setStandardInputFile(const QString &fileName); void setStandardOutputFile(const QString &fileName, QIODevice::OpenMode mode = QIODevice::Truncate); void setStandardErrorFile(const QString &fileName, QIODevice::OpenMode mode = QIODevice::Truncate); void setStandardOutputProcess(QProcess *destination); public slots: void terminate(); void kill(); signals: void started(); void finished(int exitCode, QProcess::ExitStatus exitStatus); void error(QProcess::ProcessError error); void stateChanged(QProcess::ProcessState state); void readyReadStandardOutput(); void readyReadStandardError(); %If (Qt_5_6_0 -) void errorOccurred(QProcess::ProcessError error); %End protected: void setProcessState(QProcess::ProcessState state); virtual void setupChildProcess(); virtual SIP_PYOBJECT readData(qint64 maxlen) /TypeHint="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QProcess::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) /ReleaseGIL/; public: void setProcessEnvironment(const QProcessEnvironment &environment); QProcessEnvironment processEnvironment() const; QString program() const; %If (Qt_5_1_0 -) void setProgram(const QString &program); %End QStringList arguments() const; %If (Qt_5_1_0 -) void setArguments(const QStringList &arguments); %End %If (Qt_5_1_0 -) virtual bool open(QIODevice::OpenMode mode = QIODevice::ReadWrite) /ReleaseGIL/; %End %If (Qt_5_2_0 -) enum InputChannelMode { ManagedInputChannel, ForwardedInputChannel, }; %End %If (Qt_5_2_0 -) QProcess::InputChannelMode inputChannelMode() const; %End %If (Qt_5_2_0 -) void setInputChannelMode(QProcess::InputChannelMode mode); %End %If (Qt_5_2_0 -) static QString nullDevice(); %End %If (Qt_5_3_0 -) qint64 processId() const; %End private: QProcess(const QProcess &); }; %End %If (PyQt_Process) class QProcessEnvironment { %TypeHeaderCode #include %End public: QProcessEnvironment(); QProcessEnvironment(const QProcessEnvironment &other); ~QProcessEnvironment(); bool operator==(const QProcessEnvironment &other) const; bool operator!=(const QProcessEnvironment &other) const; bool isEmpty() const; void clear(); bool contains(const QString &name) const; void insert(const QString &name, const QString &value); void insert(const QProcessEnvironment &e); void remove(const QString &name); QString value(const QString &name, const QString &defaultValue = QString()) const; QStringList toStringList() const; static QProcessEnvironment systemEnvironment(); QStringList keys() const; void swap(QProcessEnvironment &other /Constrained/); }; %End PyQt5_gpl-5.10.1/sip/QtCore/qpropertyanimation.sip0000644000076500000240000000333513245233150022155 0ustar philstaff00000000000000// qpropertyanimation.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPropertyAnimation : QVariantAnimation { %TypeHeaderCode #include %End public: QPropertyAnimation(QObject *parent /TransferThis/ = 0); QPropertyAnimation(QObject *target /KeepReference=0/, const QByteArray &propertyName, QObject *parent /TransferThis/ = 0); virtual ~QPropertyAnimation(); QObject *targetObject() const; void setTargetObject(QObject *target /KeepReference=0/); QByteArray propertyName() const; void setPropertyName(const QByteArray &propertyName); protected: virtual bool event(QEvent *event); virtual void updateCurrentValue(const QVariant &value); virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); private: QPropertyAnimation(const QPropertyAnimation &); }; PyQt5_gpl-5.10.1/sip/QtCore/qpycore_qhash.sip0000644000076500000240000002115013245233150021051 0ustar philstaff00000000000000// This is the SIP interface definition for the majority of the QHash based // mapped types. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. template<_TYPE1_, _TYPE2_> %MappedType QHash<_TYPE1_, _TYPE2_> /TypeHint="Dict[_TYPE1_, _TYPE2_]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QHash<_TYPE1_, _TYPE2_>::const_iterator it = sipCpp->constBegin(); QHash<_TYPE1_, _TYPE2_>::const_iterator end = sipCpp->constEnd(); while (it != end) { _TYPE1_ *k = new _TYPE1_(it.key()); PyObject *kobj = sipConvertFromNewType(k, sipType__TYPE1_, sipTransferObj); if (!kobj) { delete k; Py_DECREF(d); return 0; } _TYPE2_ *v = new _TYPE2_(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE2_, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QHash<_TYPE1_, _TYPE2_> *qh = new QHash<_TYPE1_, _TYPE2_>; Py_ssize_t pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int kstate; _TYPE1_ *k = reinterpret_cast<_TYPE1_ *>( sipForceConvertToType(kobj, sipType__TYPE1_, sipTransferObj, SIP_NOT_NONE, &kstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but '_TYPE1_' is expected", sipPyTypeName(Py_TYPE(kobj))); delete qh; return 0; } int vstate; _TYPE2_ *v = reinterpret_cast<_TYPE2_ *>( sipForceConvertToType(vobj, sipType__TYPE2_, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but '_TYPE2_' is expected", sipPyTypeName(Py_TYPE(vobj))); sipReleaseType(k, sipType__TYPE1_, kstate); delete qh; return 0; } qh->insert(*k, *v); sipReleaseType(v, sipType__TYPE2_, vstate); sipReleaseType(k, sipType__TYPE1_, kstate); } *sipCppPtr = qh; return sipGetState(sipTransferObj); %End }; %If (Qt_5_4_0 -) // This is only needed for QtWebChannel but is sufficiently generic that we // include it here. template<_TYPE1_, _TYPE2_ *> %MappedType QHash<_TYPE1_, _TYPE2_ *> /TypeHint="Dict[_TYPE1_, _TYPE2_]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode int gc_enabled = sipEnableGC(0); PyObject *d = PyDict_New(); if (d) { QHash<_TYPE1_, _TYPE2_ *>::const_iterator it = sipCpp->constBegin(); QHash<_TYPE1_, _TYPE2_ *>::const_iterator end = sipCpp->constEnd(); while (it != end) { _TYPE1_ *k = new _TYPE1_(it.key()); PyObject *kobj = sipConvertFromNewType(k, sipType__TYPE1_, sipTransferObj); if (!kobj) { delete k; Py_DECREF(d); d = 0; break; } _TYPE2_ *v = it.value(); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE2_, sipTransferObj); if (!vobj) { Py_DECREF(kobj); Py_DECREF(d); d = 0; break; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); d = 0; break; } ++it; } } sipEnableGC(gc_enabled); return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QHash<_TYPE1_, _TYPE2_ *> *qh = new QHash<_TYPE1_, _TYPE2_ *>; Py_ssize_t pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int kstate; _TYPE1_ *k = reinterpret_cast<_TYPE1_ *>( sipForceConvertToType(kobj, sipType__TYPE1_, sipTransferObj, SIP_NOT_NONE, &kstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but '_TYPE1_' is expected", sipPyTypeName(Py_TYPE(kobj))); delete qh; return 0; } _TYPE2_ *v = reinterpret_cast<_TYPE2_ *>( sipForceConvertToType(vobj, sipType__TYPE2_, sipTransferObj, 0, 0, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but '_TYPE2_' is expected", sipPyTypeName(Py_TYPE(vobj))); sipReleaseType(k, sipType__TYPE1_, kstate); delete qh; return 0; } qh->insert(*k, v); sipReleaseType(k, sipType__TYPE1_, kstate); } *sipCppPtr = qh; return sipGetState(sipTransferObj); %End }; %End template %MappedType QHash /TypeHint="Dict[int, _TYPE_]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QHash::const_iterator it = sipCpp->constBegin(); QHash::const_iterator end = sipCpp->constEnd(); while (it != end) { PyObject *kobj = SIPLong_FromLong(it.key()); if (!kobj) { Py_DECREF(d); return 0; } _TYPE_ *v = new _TYPE_(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE_, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QHash *qh = new QHash; Py_ssize_t pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int k = sipLong_AsInt(kobj); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but 'int' is expected", sipPyTypeName(Py_TYPE(kobj))); delete qh; *sipIsErr = 1; return 0; } int vstate; _TYPE_ *v = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(vobj, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but '_TYPE_' is expected", sipPyTypeName(Py_TYPE(vobj))); delete qh; return 0; } qh->insert(k, *v); sipReleaseType(v, sipType__TYPE_, vstate); } *sipCppPtr = qh; return sipGetState(sipTransferObj); %End }; PyQt5_gpl-5.10.1/sip/QtCore/qpycore_qlist.sip0000644000076500000240000004737513245233150021122 0ustar philstaff00000000000000// This is the SIP interface definition for the majority of the QList based // mapped types. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // Note that when we test the type of an object to see if it can be converted // to a collection we only check if it is iterable. We do not check the // types of the contents - we assume we will be able to convert them when // requested. This allows us to raise exceptions specific to an individual // object. This approach doesn't work if there are overloads that can only be // distinguished by the types of the template arguments. Currently there are // no such cases in PyQt5. Note also that we don't consider strings to be // iterables. template<_TYPE_> %MappedType QList<_TYPE_> /TypeHintIn="Iterable[_TYPE_]", TypeHintOut="List[_TYPE_]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { _TYPE_ *t = new _TYPE_(sipCpp->at(i)); PyObject *tobj = sipConvertFromNewType(t, sipType__TYPE_, sipTransferObj); if (!tobj) { delete t; Py_DECREF(l); return 0; } PyList_SetItem(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList<_TYPE_> *ql = new QList<_TYPE_>; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; _TYPE_ *t = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but '_TYPE_' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(*t); sipReleaseType(t, sipType__TYPE_, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; template<_TYPE_> %MappedType QList<_TYPE_ *> /TypeHintIn="Iterable[_TYPE_]", TypeHintOut="List[_TYPE_]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode int gc_enabled = sipEnableGC(0); PyObject *l = PyList_New(sipCpp->size()); if (l) { for (int i = 0; i < sipCpp->size(); ++i) { _TYPE_ *t = sipCpp->at(i); // The explicit (void *) cast allows _TYPE_ to be const. PyObject *tobj = sipConvertFromType((void *)t, sipType__TYPE_, sipTransferObj); if (!tobj) { Py_DECREF(l); l = 0; break; } PyList_SetItem(l, i, tobj); } } sipEnableGC(gc_enabled); return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList<_TYPE_ *> *ql = new QList<_TYPE_ *>; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } _TYPE_ *t = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm, sipType__TYPE_, sipTransferObj, 0, 0, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but '_TYPE_' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(t); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; template<_TYPE1_, _TYPE2_> %MappedType QList > /TypeHintIn="Iterable[Tuple[_TYPE1_, _TYPE2_]]", TypeHintOut="List[Tuple[_TYPE1_, _TYPE2_]]", TypeHintValue="[]"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { const QPair<_TYPE1_, _TYPE2_> &p = sipCpp->at(i); _TYPE1_ *s1 = new _TYPE1_(p.first); _TYPE2_ *s2 = new _TYPE2_(p.second); PyObject *pobj = sipBuildResult(NULL, "(NN)", s1, sipType__TYPE1_, sipTransferObj, s2, sipType__TYPE2_, sipTransferObj); if (!pobj) { delete s1; delete s2; Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList > *ql = new QList >; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *seq = PyIter_Next(iter); if (!seq) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } Py_ssize_t sub_len; if (PySequence_Check(seq) #if PY_MAJOR_VERSION < 3 && !PyString_Check(seq) #endif && !PyUnicode_Check(seq)) sub_len = PySequence_Size(seq); else sub_len = -1; if (sub_len != 2) { if (sub_len < 0) PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but a 2 element non-string sequence is expected", i, sipPyTypeName(Py_TYPE(seq))); else PyErr_Format(PyExc_TypeError, "index %zd is a sequence of %zd sub-elements but 2 sub-elements are expected", i, sub_len); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyObject *itm1 = PySequence_GetItem(seq, 0); if (!itm1) { Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } int state1; _TYPE1_ *s1 = reinterpret_cast<_TYPE1_ *>( sipForceConvertToType(itm1, sipType__TYPE1_, sipTransferObj, SIP_NOT_NONE, &state1, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "the first sub-element of index %zd has type '%s' but '_TYPE1_' is expected", i, sipPyTypeName(Py_TYPE(itm1))); Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); return 0; } PyObject *itm2 = PySequence_GetItem(seq, 1); if (!itm2) { sipReleaseType(s1, sipType__TYPE1_, state1); Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } int state2; _TYPE2_ *s2 = reinterpret_cast<_TYPE2_ *>( sipForceConvertToType(itm2, sipType__TYPE2_, sipTransferObj, SIP_NOT_NONE, &state2, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "the second sub-element of index %zd has type '%s' but '_TYPE2_' is expected", i, sipPyTypeName(Py_TYPE(itm2))); Py_DECREF(itm2); sipReleaseType(s1, sipType__TYPE1_, state1); Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); return 0; } ql->append(QPair<_TYPE1_, _TYPE2_>(*s1, *s2)); sipReleaseType(s2, sipType__TYPE2_, state2); Py_DECREF(itm2); sipReleaseType(s1, sipType__TYPE1_, state1); Py_DECREF(itm1); Py_DECREF(seq); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %If (Qt_5_1_0 -) %MappedType QList > /TypeHintIn="Iterable[Tuple[int, int]]", TypeHintOut="List[Tuple[int, int]]", TypeHintValue="[]"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { const QPair &p = sipCpp->at(i); PyObject *pobj = Py_BuildValue((char *)"ii", p.first, p.second); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList > *ql = new QList >; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *seq = PyIter_Next(iter); if (!seq) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } Py_ssize_t sub_len; if (PySequence_Check(seq) #if PY_MAJOR_VERSION < 3 && !PyString_Check(seq) #endif && !PyUnicode_Check(seq)) sub_len = PySequence_Size(seq); else sub_len = -1; if (sub_len != 2) { if (sub_len < 0) PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but a 2 element non-string sequence is expected", i, sipPyTypeName(Py_TYPE(seq))); else PyErr_Format(PyExc_TypeError, "index %zd is a sequence of %zd sub-elements but 2 sub-elements are expected", i, sub_len); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyObject *itm1 = PySequence_GetItem(seq, 0); if (!itm1) { Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } int first = sipLong_AsInt(itm1); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "the first sub-element of index %zd has type '%s' but 'int' is expected", i, sipPyTypeName(Py_TYPE(itm1))); Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyObject *itm2 = PySequence_GetItem(seq, 1); if (!itm2) { Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } int second = sipLong_AsInt(itm2); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "the second sub-element of index %zd has type '%s' but 'int' is expected", i, sipPyTypeName(Py_TYPE(itm2))); Py_DECREF(itm2); Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(QPair(first, second)); Py_DECREF(itm2); Py_DECREF(itm1); Py_DECREF(seq); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %End %MappedType QList /TypeHintIn="Iterable[int]", TypeHintOut="List[int]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj = SIPLong_FromLong(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int val = sipLong_AsInt(itm); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'int' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %MappedType QList /TypeHintIn="Iterable[float]", TypeHintOut="List[float]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj = PyFloat_FromDouble(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); double val = PyFloat_AsDouble(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'float' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %MappedType QList /TypeHintIn="Iterable[Qt.DayOfWeek]", TypeHintOut="List[Qt.DayOfWeek]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_Qt_DayOfWeek); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_Qt_DayOfWeek); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'Qt.DayOfWeek' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; PyQt5_gpl-5.10.1/sip/QtCore/qpycore_qmap.sip0000644000076500000240000001776013245233150020717 0ustar philstaff00000000000000// This is the SIP interface definition for the majority of the QMap and // QMultiMap based mapped types. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. template<_TYPE1_, _TYPE2_> %MappedType QMap<_TYPE1_, _TYPE2_> /TypeHint="Dict[_TYPE1_, _TYPE2_]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QMap<_TYPE1_, _TYPE2_>::const_iterator it = sipCpp->constBegin(); QMap<_TYPE1_, _TYPE2_>::const_iterator end = sipCpp->constEnd(); while (it != end) { _TYPE1_ *k = new _TYPE1_(it.key()); PyObject *kobj = sipConvertFromNewType(k, sipType__TYPE1_, sipTransferObj); if (!kobj) { delete k; Py_DECREF(d); return 0; } _TYPE2_ *v = new _TYPE2_(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE2_, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QMap<_TYPE1_, _TYPE2_> *qm = new QMap<_TYPE1_, _TYPE2_>; Py_ssize_t pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int kstate; _TYPE1_ *k = reinterpret_cast<_TYPE1_ *>( sipForceConvertToType(kobj, sipType__TYPE1_, sipTransferObj, SIP_NOT_NONE, &kstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but '_TYPE1_' is expected", sipPyTypeName(Py_TYPE(kobj))); delete qm; return 0; } int vstate; _TYPE2_ *v = reinterpret_cast<_TYPE2_ *>( sipForceConvertToType(vobj, sipType__TYPE2_, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but '_TYPE2_' is expected", sipPyTypeName(Py_TYPE(vobj))); sipReleaseType(k, sipType__TYPE1_, kstate); delete qm; return 0; } qm->insert(*k, *v); sipReleaseType(v, sipType__TYPE2_, vstate); sipReleaseType(k, sipType__TYPE1_, kstate); } *sipCppPtr = qm; return sipGetState(sipTransferObj); %End }; template %MappedType QMap /TypeHint="Dict[int, _TYPE_]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QMap::const_iterator it = sipCpp->constBegin(); QMap::const_iterator end = sipCpp->constEnd(); while (it != end) { PyObject *kobj = SIPLong_FromLong(it.key()); if (!kobj) { Py_DECREF(d); return 0; } _TYPE_ *v = new _TYPE_(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE_, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QMap *qm = new QMap; Py_ssize_t pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int k = sipLong_AsInt(kobj); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but 'int' is expected", sipPyTypeName(Py_TYPE(kobj))); delete qm; *sipIsErr = 1; return 0; } int vstate; _TYPE_ *v = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(vobj, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but '_TYPE_' is expected", sipPyTypeName(Py_TYPE(vobj))); delete qm; return 0; } qm->insert(k, *v); sipReleaseType(v, sipType__TYPE_, vstate); } *sipCppPtr = qm; return sipGetState(sipTransferObj); %End }; template<_TYPE1_, _TYPE2_> %MappedType QMultiMap<_TYPE1_, _TYPE2_> /TypeHintOut="Dict[_TYPE1_, List[_TYPE2_]]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QList<_TYPE1_> keys = sipCpp->keys(); QList<_TYPE1_>::const_iterator kit = keys.constBegin(); QList<_TYPE1_>::const_iterator kit_end = keys.constEnd(); while (kit != kit_end) { _TYPE1_ *k = new _TYPE1_(*kit); PyObject *kobj = sipConvertFromNewType(k, sipType__TYPE1_, sipTransferObj); if (!kobj) { delete k; Py_DECREF(d); return 0; } // Create a Python list as the dictionary value. QList<_TYPE2_> values = sipCpp->values(*kit); PyObject *vobj = PyList_New(values.count()); if (!vobj) { Py_DECREF(kobj); Py_DECREF(d); return 0; } QList<_TYPE2_>::const_iterator vit = values.constBegin(); QList<_TYPE2_>::const_iterator vit_end = values.constEnd(); for (int i = 0; vit != vit_end; ++i) { _TYPE2_ *sv = new _TYPE2_(*vit); PyObject *svobj = sipConvertFromNewType(sv, sipType__TYPE2_, sipTransferObj); if (!svobj) { delete sv; Py_DECREF(vobj); Py_DECREF(kobj); Py_DECREF(d); return 0; } PyList_SetItem(vobj, i, svobj); ++vit; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++kit; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); // Note that PyQt v5.1 contains an unused implementation that can be // restored if needed (although it will need updating to accept an iterable // rather than just a list of values). PyErr_SetString(PyExc_NotImplementedError, "converting to QMultiMap<_TYPE1_, _TYPE2_> is unsupported"); return 0; %End }; PyQt5_gpl-5.10.1/sip/QtCore/qpycore_qpair.sip0000644000076500000240000001773013245233150021072 0ustar philstaff00000000000000// This is the SIP interface definition for the majority of the QPair based // mapped types. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_10_0 -) template<_TYPE1_, _TYPE2_> %MappedType QPair<_TYPE1_, _TYPE2_> /TypeHint="Tuple[_TYPE1_, _TYPE2_]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode _TYPE1_ *first = new _TYPE1_(sipCpp->first); _TYPE2_ *second = new _TYPE2_(sipCpp->second); PyObject *t = sipBuildResult(NULL, "(NN)", first, sipType__TYPE1_, sipTransferObj, second, sipType__TYPE2_, sipTransferObj); if (!t) { delete first; delete second; return 0; } return t; %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); Py_ssize_t len = PySequence_Size(sipPy); if (len != 2) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has %zd elements but 2 elements are expected", len); *sipIsErr = 1; return 0; } PyObject *firstobj = PySequence_GetItem(sipPy, 0); if (!firstobj) { *sipIsErr = 1; return 0; } int firststate; _TYPE1_ *first = reinterpret_cast<_TYPE1_ *>( sipForceConvertToType(firstobj, sipType__TYPE1_, sipTransferObj, SIP_NOT_NONE, &firststate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "the first element has type '%s' but '_TYPE1_' is expected", sipPyTypeName(Py_TYPE(firstobj))); return 0; } PyObject *secondobj = PySequence_GetItem(sipPy, 1); if (!secondobj) { sipReleaseType(first, sipType__TYPE1_, firststate); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } int secondstate; _TYPE2_ *second = reinterpret_cast<_TYPE2_ *>( sipForceConvertToType(secondobj, sipType__TYPE2_, sipTransferObj, SIP_NOT_NONE, &secondstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "the second element has type '%s' but '_TYPE2_' is expected", sipPyTypeName(Py_TYPE(secondobj))); Py_DECREF(secondobj); sipReleaseType(first, sipType__TYPE1_, firststate); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } *sipCppPtr = new QPair<_TYPE1_, _TYPE2_>(*first, *second); sipReleaseType(second, sipType__TYPE2_, secondstate); Py_DECREF(secondobj); sipReleaseType(first, sipType__TYPE1_, firststate); Py_DECREF(firstobj); return sipGetState(sipTransferObj); %End }; %End template<_TYPE_> %MappedType QPair<_TYPE_, int> /TypeHint="Tuple[_TYPE_, int]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode _TYPE_ *first = new _TYPE_(sipCpp->first); PyObject *t = sipBuildResult(NULL, "(Ni)", first, sipType__TYPE_, sipTransferObj, sipCpp->second); if (!t) { delete first; return 0; } return t; %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); Py_ssize_t len = PySequence_Size(sipPy); if (len != 2) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has %zd elements but 2 elements are expected", len); *sipIsErr = 1; return 0; } PyObject *firstobj = PySequence_GetItem(sipPy, 0); if (!firstobj) { *sipIsErr = 1; return 0; } int firststate; _TYPE_ *first = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(firstobj, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &firststate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "the first element has type '%s' but '_TYPE_' is expected", sipPyTypeName(Py_TYPE(firstobj))); return 0; } PyObject *secondobj = PySequence_GetItem(sipPy, 1); if (!secondobj) { sipReleaseType(first, sipType__TYPE_, firststate); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } int second = sipLong_AsInt(secondobj); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "the second element has type '%s' but 'int' is expected", sipPyTypeName(Py_TYPE(secondobj))); Py_DECREF(secondobj); sipReleaseType(first, sipType__TYPE_, firststate); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } *sipCppPtr = new QPair<_TYPE_, int>(*first, second); Py_DECREF(secondobj); sipReleaseType(first, sipType__TYPE_, firststate); Py_DECREF(firstobj); return sipGetState(sipTransferObj); %End }; %MappedType QPair /TypeHint="Tuple[int, int]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode return Py_BuildValue("(ii)", sipCpp->first, sipCpp->second); %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); Py_ssize_t len = PySequence_Size(sipPy); if (len != 2) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has %zd elements but 2 elements are expected", len); *sipIsErr = 1; return 0; } PyObject *firstobj = PySequence_GetItem(sipPy, 0); if (!firstobj) { *sipIsErr = 1; return 0; } int first = sipLong_AsInt(firstobj); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "the first element has type '%s' but 'int' is expected", sipPyTypeName(Py_TYPE(firstobj))); *sipIsErr = 1; return 0; } PyObject *secondobj = PySequence_GetItem(sipPy, 1); if (!secondobj) { Py_DECREF(firstobj); *sipIsErr = 1; return 0; } int second = sipLong_AsInt(secondobj); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "the second element has type '%s' but 'int' is expected", sipPyTypeName(Py_TYPE(secondobj))); Py_DECREF(secondobj); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } *sipCppPtr = new QPair(first, second); Py_DECREF(secondobj); Py_DECREF(firstobj); return sipGetState(sipTransferObj); %End }; PyQt5_gpl-5.10.1/sip/QtCore/qpycore_qset.sip0000644000076500000240000001244113245233150020724 0ustar philstaff00000000000000// This is the SIP interface definition for the majority of the QSet based // mapped types. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. template<_TYPE_> %MappedType QSet<_TYPE_> /TypeHintIn="Iterable[_TYPE_]", TypeHintOut="Set[_TYPE_]", TypeHintValue="set()"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *s = PySet_New(0); if (!s) return 0; QSet<_TYPE_>::const_iterator it = sipCpp->constBegin(); QSet<_TYPE_>::const_iterator end = sipCpp->constEnd(); while (it != end) { _TYPE_ *t = new _TYPE_(*it); PyObject *tobj = sipConvertFromNewType(t, sipType__TYPE_, sipTransferObj); if (!tobj) { delete t; Py_DECREF(s); return 0; } PySet_Add(s, tobj); ++it; } return s; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QSet<_TYPE_> *qs = new QSet<_TYPE_>; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qs; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; _TYPE_ *t = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but '_TYPE_' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete qs; Py_DECREF(iter); return 0; } qs->insert(*t); sipReleaseType(t, sipType__TYPE_, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qs; return sipGetState(sipTransferObj); %End }; template<_TYPE_> %MappedType QSet<_TYPE_ *> /TypeHintIn="Iterable[_TYPE_]", TypeHintOut="Set[_TYPE_]", TypeHintValue="set()"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode int gc_enabled = sipEnableGC(0); PyObject *s = PySet_New(0); if (s) { QSet<_TYPE_ *>::const_iterator it = sipCpp->constBegin(); QSet<_TYPE_ *>::const_iterator end = sipCpp->constEnd(); while (it != end) { // The explicit (void *) cast allows _TYPE_ to be const. PyObject *tobj = sipConvertFromType((void *)*it, sipType__TYPE_, sipTransferObj); if (!tobj) { Py_DECREF(s); s = 0; break; } PySet_Add(s, tobj); ++it; } } sipEnableGC(gc_enabled); return s; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QSet<_TYPE_ *> *qs = new QSet<_TYPE_ *>; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qs; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } _TYPE_ *t = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm, sipType__TYPE_, sipTransferObj, 0, 0, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but '_TYPE_' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete qs; Py_DECREF(iter); return 0; } qs->insert(t); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qs; return sipGetState(sipTransferObj); %End }; PyQt5_gpl-5.10.1/sip/QtCore/qpycore_qvector.sip0000644000076500000240000002202713245233150021434 0ustar philstaff00000000000000// This is the SIP interface definition for the majority of the QVector based // mapped types. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. template<_TYPE_> %MappedType QVector<_TYPE_> /TypeHintIn="Iterable[_TYPE_]", TypeHintOut="List[_TYPE_]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { _TYPE_ *t = new _TYPE_(sipCpp->at(i)); PyObject *tobj = sipConvertFromNewType(t, sipType__TYPE_, sipTransferObj); if (!tobj) { delete t; Py_DECREF(l); return 0; } PyList_SetItem(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QVector<_TYPE_> *qv = new QVector<_TYPE_>; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; _TYPE_ *t = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but '_TYPE_' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete qv; Py_DECREF(iter); return 0; } qv->append(*t); sipReleaseType(t, sipType__TYPE_, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; template %MappedType QVector > /TypeHintIn="Iterable[Tuple[float, _TYPE_]]", TypeHintOut="List[Tuple[float, _TYPE_]]", TypeHintValue="[]"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { const QPair &p = sipCpp->at(i); _TYPE_ *s2 = new _TYPE_(p.second); PyObject *pobj = sipBuildResult(NULL, "(dN)", (double)p.first, s2, sipType__TYPE_, sipTransferObj); if (!pobj) { delete s2; Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QVector > *qv = new QVector >; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *seq = PyIter_Next(iter); if (!seq) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } Py_ssize_t sub_len; if (PySequence_Check(seq) #if PY_MAJOR_VERSION < 3 && !PyString_Check(seq) #endif && !PyUnicode_Check(seq)) sub_len = PySequence_Size(seq); else sub_len = -1; if (sub_len != 2) { if (sub_len < 0) PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but a 2 element non-string sequence is expected", i, sipPyTypeName(Py_TYPE(seq))); else PyErr_Format(PyExc_TypeError, "index %zd is a sequence of %zd sub-elements but 2 sub-elements are expected", i, sub_len); Py_DECREF(seq); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyObject *itm1 = PySequence_GetItem(seq, 0); if (!itm1) { Py_DECREF(seq); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyErr_Clear(); qreal s1 = PyFloat_AsDouble(itm1); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the first sub-element of index %zd has type '%s' but 'float' is expected", i, sipPyTypeName(Py_TYPE(itm1))); Py_DECREF(itm1); Py_DECREF(seq); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyObject *itm2 = PySequence_GetItem(seq, 1); if (!itm2) { Py_DECREF(itm1); Py_DECREF(seq); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } int state2; _TYPE_ *s2 = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm2, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &state2, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "the second sub-element of index %zd has type '%s' but '_TYPE_' is expected", i, sipPyTypeName(Py_TYPE(itm2))); Py_DECREF(itm2); Py_DECREF(itm1); Py_DECREF(seq); delete qv; Py_DECREF(iter); return 0; } qv->append(QPair(s1, *s2)); sipReleaseType(s2, sipType__TYPE_, state2); Py_DECREF(itm2); Py_DECREF(itm1); Py_DECREF(seq); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; %MappedType QVector /TypeHintIn="Iterable[int]", TypeHintOut="List[int]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj = SIPLong_FromLong(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QVector *qv = new QVector; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int val = sipLong_AsInt(itm); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'int' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } qv->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; PyQt5_gpl-5.10.1/sip/QtCore/qpycore_virtual_error_handler.sip0000644000076500000240000000172013245233150024342 0ustar philstaff00000000000000// This is the implementation of the PyQt-specific virtual error handler. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %VirtualErrorHandler PyQt5 pyqt5_err_print(); %End PyQt5_gpl-5.10.1/sip/QtCore/qrandom.sip0000644000076500000240000000360613245233150017652 0ustar philstaff00000000000000// qrandom.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_10_0 -) class QRandomGenerator { %TypeHeaderCode #include %End public: QRandomGenerator(quint32 seed = 1); QRandomGenerator(const QRandomGenerator &other); quint32 generate(); quint64 generate64(); double generateDouble(); double bounded(double highest /Constrained/); quint32 bounded(quint32 highest); int bounded(int lowest, int highest); typedef quint32 result_type; QRandomGenerator::result_type operator()(); void seed(quint32 seed = 1); void discard(unsigned long long z); static QRandomGenerator::result_type min(); static QRandomGenerator::result_type max(); static QRandomGenerator *system(); static QRandomGenerator *global(); static QRandomGenerator securelySeeded(); }; %End %If (Qt_5_10_0 -) bool operator==(const QRandomGenerator &rng1, const QRandomGenerator &rng2); %End %If (Qt_5_10_0 -) bool operator!=(const QRandomGenerator &rng1, const QRandomGenerator &rng2); %End PyQt5_gpl-5.10.1/sip/QtCore/qreadwritelock.sip0000644000076500000240000000522213245233150021225 0ustar philstaff00000000000000// qreadwritelock.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QReadWriteLock { %TypeHeaderCode #include %End public: enum RecursionMode { NonRecursive, Recursive, }; explicit QReadWriteLock(QReadWriteLock::RecursionMode recursionMode = QReadWriteLock::NonRecursive); ~QReadWriteLock(); void lockForRead() /ReleaseGIL/; bool tryLockForRead(); bool tryLockForRead(int timeout) /ReleaseGIL/; void lockForWrite() /ReleaseGIL/; bool tryLockForWrite(); bool tryLockForWrite(int timeout) /ReleaseGIL/; void unlock(); private: QReadWriteLock(const QReadWriteLock &); }; class QReadLocker { %TypeHeaderCode #include %End public: QReadLocker(QReadWriteLock *areadWriteLock) /ReleaseGIL/; ~QReadLocker(); void unlock(); void relock() /ReleaseGIL/; QReadWriteLock *readWriteLock() const; SIP_PYOBJECT __enter__(); %MethodCode // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->unlock(); %End private: QReadLocker(const QReadLocker &); }; class QWriteLocker { %TypeHeaderCode #include %End public: QWriteLocker(QReadWriteLock *areadWriteLock) /ReleaseGIL/; ~QWriteLocker(); void unlock(); void relock() /ReleaseGIL/; QReadWriteLock *readWriteLock() const; SIP_PYOBJECT __enter__(); %MethodCode // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->unlock(); %End private: QWriteLocker(const QWriteLocker &); }; PyQt5_gpl-5.10.1/sip/QtCore/qrect.sip0000644000076500000240000002531313245233150017326 0ustar philstaff00000000000000// qrect.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRect { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"iiii", sipCpp->x(), sipCpp->y(), sipCpp->width(), sipCpp->height()); %End public: QRect(); QRect normalized() const; void moveCenter(const QPoint &p); QRect operator|(const QRect &r) const; QRect operator&(const QRect &r) const; bool contains(const QPoint &point, bool proper = false) const; int __contains__(const QPoint &p) const; %MethodCode sipRes = sipCpp->contains(*a0); %End bool contains(const QRect &rectangle, bool proper = false) const; int __contains__(const QRect &r) const; %MethodCode sipRes = sipCpp->contains(*a0); %End bool intersects(const QRect &r) const; QRect(int aleft, int atop, int awidth, int aheight); QRect(const QPoint &atopLeft, const QPoint &abottomRight); QRect(const QPoint &atopLeft, const QSize &asize); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QRect()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QRect()"); #endif } else { sipRes = #if PY_MAJOR_VERSION >= 3 PyUnicode_FromFormat #else PyString_FromFormat #endif ("PyQt5.QtCore.QRect(%i, %i, %i, %i)", sipCpp->left(), sipCpp->top(), sipCpp->width(), sipCpp->height()); } %End bool isNull() const; bool isEmpty() const; bool isValid() const; int __bool__() const; %MethodCode sipRes = sipCpp->isValid(); %End int left() const; int top() const; int right() const; int bottom() const; int x() const; int y() const; void setLeft(int pos); void setTop(int pos); void setRight(int pos); void setBottom(int pos); void setTopLeft(const QPoint &p); void setBottomRight(const QPoint &p); void setTopRight(const QPoint &p); void setBottomLeft(const QPoint &p); void setX(int ax); void setY(int ay); QPoint topLeft() const; QPoint bottomRight() const; QPoint topRight() const; QPoint bottomLeft() const; QPoint center() const; int width() const; int height() const; QSize size() const; void translate(int dx, int dy); void translate(const QPoint &p); QRect translated(int dx, int dy) const; QRect translated(const QPoint &p) const; void moveTo(int ax, int ay); void moveTo(const QPoint &p); void moveLeft(int pos); void moveTop(int pos); void moveRight(int pos); void moveBottom(int pos); void moveTopLeft(const QPoint &p); void moveBottomRight(const QPoint &p); void moveTopRight(const QPoint &p); void moveBottomLeft(const QPoint &p); void getRect(int *ax, int *ay, int *aw, int *ah) const; void setRect(int ax, int ay, int aw, int ah); void getCoords(int *xp1, int *yp1, int *xp2, int *yp2) const; void setCoords(int xp1, int yp1, int xp2, int yp2); QRect adjusted(int xp1, int yp1, int xp2, int yp2) const; void adjust(int dx1, int dy1, int dx2, int dy2); void setWidth(int w); void setHeight(int h); void setSize(const QSize &s); bool contains(int ax, int ay, bool aproper) const; bool contains(int ax, int ay) const; QRect &operator|=(const QRect &r); QRect &operator&=(const QRect &r); QRect intersected(const QRect &other) const; QRect united(const QRect &r) const; %If (Qt_5_1_0 -) QRect marginsAdded(const QMargins &margins) const; %End %If (Qt_5_1_0 -) QRect marginsRemoved(const QMargins &margins) const; %End %If (Qt_5_1_0 -) QRect &operator+=(const QMargins &margins); %End %If (Qt_5_1_0 -) QRect &operator-=(const QMargins &margins); %End %If (Qt_5_7_0 -) QRect transposed() const; %End }; QDataStream &operator<<(QDataStream &, const QRect & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QRect & /Constrained/) /ReleaseGIL/; bool operator==(const QRect &r1, const QRect &r2); bool operator!=(const QRect &r1, const QRect &r2); class QRectF { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"dddd", sipCpp->x(), sipCpp->y(), sipCpp->width(), sipCpp->height()); %End public: QRectF(); QRectF(const QPointF &atopLeft, const QSizeF &asize); QRectF(const QPointF &atopLeft, const QPointF &abottomRight); QRectF(qreal aleft, qreal atop, qreal awidth, qreal aheight); QRectF(const QRect &r); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QRectF()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QRectF()"); #endif } else { PyObject *l = PyFloat_FromDouble(sipCpp->left()); PyObject *t = PyFloat_FromDouble(sipCpp->top()); PyObject *w = PyFloat_FromDouble(sipCpp->width()); PyObject *h = PyFloat_FromDouble(sipCpp->height()); if (l && t && w && h) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QRectF(%R, %R, %R, %R)", l, t, w, h); #else sipRes = PyString_FromString("PyQt5.QtCore.QRectF("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(l)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(t)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(w)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(h)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } Py_XDECREF(l); Py_XDECREF(t); Py_XDECREF(w); Py_XDECREF(h); } %End QRectF normalized() const; qreal left() const; qreal top() const; qreal right() const; qreal bottom() const; void setX(qreal pos); void setY(qreal pos); QPointF topLeft() const; QPointF bottomRight() const; QPointF topRight() const; QPointF bottomLeft() const; QRectF operator|(const QRectF &r) const; QRectF operator&(const QRectF &r) const; bool contains(const QPointF &p) const; int __contains__(const QPointF &p) const; %MethodCode sipRes = sipCpp->contains(*a0); %End bool contains(const QRectF &r) const; int __contains__(const QRectF &r) const; %MethodCode sipRes = sipCpp->contains(*a0); %End bool intersects(const QRectF &r) const; bool isNull() const; bool isEmpty() const; bool isValid() const; int __bool__() const; %MethodCode sipRes = sipCpp->isValid(); %End qreal x() const; qreal y() const; void setLeft(qreal pos); void setRight(qreal pos); void setTop(qreal pos); void setBottom(qreal pos); void setTopLeft(const QPointF &p); void setTopRight(const QPointF &p); void setBottomLeft(const QPointF &p); void setBottomRight(const QPointF &p); QPointF center() const; void moveLeft(qreal pos); void moveTop(qreal pos); void moveRight(qreal pos); void moveBottom(qreal pos); void moveTopLeft(const QPointF &p); void moveTopRight(const QPointF &p); void moveBottomLeft(const QPointF &p); void moveBottomRight(const QPointF &p); void moveCenter(const QPointF &p); qreal width() const; qreal height() const; QSizeF size() const; void translate(qreal dx, qreal dy); void translate(const QPointF &p); void moveTo(qreal ax, qreal ay); void moveTo(const QPointF &p); QRectF translated(qreal dx, qreal dy) const; QRectF translated(const QPointF &p) const; void getRect(qreal *ax, qreal *ay, qreal *aaw, qreal *aah) const; void setRect(qreal ax, qreal ay, qreal aaw, qreal aah); void getCoords(qreal *xp1, qreal *yp1, qreal *xp2, qreal *yp2) const; void setCoords(qreal xp1, qreal yp1, qreal xp2, qreal yp2); void adjust(qreal xp1, qreal yp1, qreal xp2, qreal yp2); QRectF adjusted(qreal xp1, qreal yp1, qreal xp2, qreal yp2) const; void setWidth(qreal aw); void setHeight(qreal ah); void setSize(const QSizeF &s); bool contains(qreal ax, qreal ay) const; QRectF &operator|=(const QRectF &r); QRectF &operator&=(const QRectF &r); QRectF intersected(const QRectF &r) const; QRectF united(const QRectF &r) const; QRect toAlignedRect() const; QRect toRect() const; %If (Qt_5_3_0 -) QRectF marginsAdded(const QMarginsF &margins) const; %End %If (Qt_5_3_0 -) QRectF marginsRemoved(const QMarginsF &margins) const; %End %If (Qt_5_3_0 -) QRectF &operator+=(const QMarginsF &margins); %End %If (Qt_5_3_0 -) QRectF &operator-=(const QMarginsF &margins); %End %If (Qt_5_7_0 -) QRectF transposed() const; %End }; QDataStream &operator<<(QDataStream &, const QRectF & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QRectF & /Constrained/) /ReleaseGIL/; bool operator==(const QRectF &r1, const QRectF &r2); bool operator!=(const QRectF &r1, const QRectF &r2); %If (Qt_5_3_0 -) QRect operator+(const QRect &rectangle, const QMargins &margins); %End %If (Qt_5_3_0 -) QRect operator+(const QMargins &margins, const QRect &rectangle); %End %If (Qt_5_3_0 -) QRect operator-(const QRect &lhs, const QMargins &rhs); %End %If (Qt_5_3_0 -) QRectF operator+(const QRectF &lhs, const QMarginsF &rhs); %End %If (Qt_5_3_0 -) QRectF operator+(const QMarginsF &lhs, const QRectF &rhs); %End %If (Qt_5_3_0 -) QRectF operator-(const QRectF &lhs, const QMarginsF &rhs); %End PyQt5_gpl-5.10.1/sip/QtCore/qregexp.sip0000644000076500000240000001141713245233150017663 0ustar philstaff00000000000000// qregexp.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRegExp { %TypeHeaderCode #include %End public: enum PatternSyntax { RegExp, RegExp2, Wildcard, FixedString, WildcardUnix, W3CXmlSchema11, }; enum CaretMode { CaretAtZero, CaretAtOffset, CaretWontMatch, }; QRegExp(); QRegExp(const QString &pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive, QRegExp::PatternSyntax syntax = QRegExp::RegExp); QRegExp(const QRegExp &rx); ~QRegExp(); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode PyObject *uni = qpycore_PyObject_FromQString(sipCpp->pattern()); if (uni) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QRegExp(%R", uni); if (sipCpp->caseSensitivity() != Qt::CaseSensitive || sipCpp->patternSyntax() != QRegExp::RegExp) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", PyQt5.QtCore.Qt.CaseSensitivity(%i)", (int)sipCpp->caseSensitivity())); if (sipCpp->patternSyntax() != QRegExp::RegExp) qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat( ", PyQt5.QtCore.QRegExp.PatternSyntax(%i)", (int)sipCpp->patternSyntax())); } qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromString(")")); #else sipRes = PyString_FromString("PyQt5.QtCore.QRegExp("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(uni)); if (sipCpp->caseSensitivity() != Qt::CaseSensitive || sipCpp->patternSyntax() != QRegExp::RegExp) { PyString_ConcatAndDel(&sipRes, PyString_FromFormat(", PyQt5.QtCore.Qt.CaseSensitivity(%i)", (int)sipCpp->caseSensitivity())); if (sipCpp->patternSyntax() != QRegExp::RegExp) PyString_ConcatAndDel(&sipRes, PyString_FromFormat( ", PyQt5.QtCore.QRegExp.PatternSyntax(%i)", (int)sipCpp->patternSyntax())); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif Py_DECREF(uni); } else { sipRes = 0; } %End bool operator==(const QRegExp &rx) const; bool operator!=(const QRegExp &rx) const; bool isEmpty() const; bool isValid() const; QString pattern() const; void setPattern(const QString &pattern); Qt::CaseSensitivity caseSensitivity() const; void setCaseSensitivity(Qt::CaseSensitivity cs); QRegExp::PatternSyntax patternSyntax() const; void setPatternSyntax(QRegExp::PatternSyntax syntax); bool isMinimal() const; void setMinimal(bool minimal); bool exactMatch(const QString &str) const; int indexIn(const QString &str, int offset = 0, QRegExp::CaretMode caretMode = QRegExp::CaretAtZero) const; int lastIndexIn(const QString &str, int offset = -1, QRegExp::CaretMode caretMode = QRegExp::CaretAtZero) const; int matchedLength() const; QStringList capturedTexts(); QString cap(int nth = 0); int pos(int nth = 0); QString errorString(); static QString escape(const QString &str); int captureCount() const; void swap(QRegExp &other /Constrained/); %If (Qt_5_6_0 -) long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End }; QDataStream &operator<<(QDataStream &out, const QRegExp ®Exp /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QRegExp ®Exp /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtCore/qregularexpression.sip0000644000076500000240000001552413245233150022155 0ustar philstaff00000000000000// qregularexpression.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRegularExpression { %TypeHeaderCode #include %End public: enum PatternOption { NoPatternOption, CaseInsensitiveOption, DotMatchesEverythingOption, MultilineOption, ExtendedPatternSyntaxOption, InvertedGreedinessOption, DontCaptureOption, UseUnicodePropertiesOption, %If (Qt_5_4_0 -) OptimizeOnFirstUsageOption, %End %If (Qt_5_4_0 -) DontAutomaticallyOptimizeOption, %End }; typedef QFlags PatternOptions; QRegularExpression::PatternOptions patternOptions() const; void setPatternOptions(QRegularExpression::PatternOptions options); QRegularExpression(); QRegularExpression(const QString &pattern, QRegularExpression::PatternOptions options = QRegularExpression::NoPatternOption); QRegularExpression(const QRegularExpression &re); ~QRegularExpression(); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode PyObject *uni = qpycore_PyObject_FromQString(sipCpp->pattern()); if (uni) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QRegularExpression(%R", uni); if (sipCpp->patternOptions() != QRegularExpression::NoPatternOption) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat( ", PyQt5.QtCore.QRegularExpression.PatternOptions(%i)", (int)sipCpp->patternOptions())); } qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromString(")")); #else sipRes = PyString_FromString("PyQt5.QtCore.QRegularExpression("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(uni)); if (sipCpp->patternOptions() != QRegularExpression::NoPatternOption) { PyString_ConcatAndDel(&sipRes, PyString_FromFormat( ", PyQt5.QtCore.QRegularExpression.PatternOptions(%i)", (int)sipCpp->patternOptions())); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif Py_DECREF(uni); } else { sipRes = 0; } %End void swap(QRegularExpression &re /Constrained/); QString pattern() const; void setPattern(const QString &pattern); bool isValid() const; int patternErrorOffset() const; QString errorString() const; int captureCount() const; enum MatchType { NormalMatch, PartialPreferCompleteMatch, PartialPreferFirstMatch, %If (Qt_5_1_0 -) NoMatch, %End }; enum MatchOption { NoMatchOption, AnchoredMatchOption, %If (Qt_5_4_0 -) DontCheckSubjectStringMatchOption, %End }; typedef QFlags MatchOptions; QRegularExpressionMatch match(const QString &subject, int offset = 0, QRegularExpression::MatchType matchType = QRegularExpression::NormalMatch, QRegularExpression::MatchOptions matchOptions = QRegularExpression::NoMatchOption) const; QRegularExpressionMatchIterator globalMatch(const QString &subject, int offset = 0, QRegularExpression::MatchType matchType = QRegularExpression::NormalMatch, QRegularExpression::MatchOptions matchOptions = QRegularExpression::NoMatchOption) const; static QString escape(const QString &str); %If (Qt_5_1_0 -) QStringList namedCaptureGroups() const; %End bool operator==(const QRegularExpression &re) const; bool operator!=(const QRegularExpression &re) const; %If (Qt_5_4_0 -) void optimize() const; %End %If (Qt_5_6_0 -) long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End }; QFlags operator|(QRegularExpression::PatternOption f1, QFlags f2); QFlags operator|(QRegularExpression::MatchOption f1, QFlags f2); QDataStream &operator<<(QDataStream &out, const QRegularExpression &re /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QRegularExpression &re /Constrained/) /ReleaseGIL/; class QRegularExpressionMatch { %TypeHeaderCode #include %End public: %If (Qt_5_1_0 -) QRegularExpressionMatch(); %End ~QRegularExpressionMatch(); QRegularExpressionMatch(const QRegularExpressionMatch &match); void swap(QRegularExpressionMatch &match /Constrained/); QRegularExpression regularExpression() const; QRegularExpression::MatchType matchType() const; QRegularExpression::MatchOptions matchOptions() const; bool hasMatch() const; bool hasPartialMatch() const; bool isValid() const; int lastCapturedIndex() const; QString captured(int nth = 0) const; QString captured(const QString &name) const; QStringList capturedTexts() const; int capturedStart(int nth = 0) const; int capturedLength(int nth = 0) const; int capturedEnd(int nth = 0) const; int capturedStart(const QString &name) const; int capturedLength(const QString &name) const; int capturedEnd(const QString &name) const; }; class QRegularExpressionMatchIterator { %TypeHeaderCode #include %End public: %If (Qt_5_1_0 -) QRegularExpressionMatchIterator(); %End ~QRegularExpressionMatchIterator(); QRegularExpressionMatchIterator(const QRegularExpressionMatchIterator &iterator); void swap(QRegularExpressionMatchIterator &iterator /Constrained/); bool isValid() const; bool hasNext() const; QRegularExpressionMatch next(); QRegularExpressionMatch peekNext() const; QRegularExpression regularExpression() const; QRegularExpression::MatchType matchType() const; QRegularExpression::MatchOptions matchOptions() const; }; PyQt5_gpl-5.10.1/sip/QtCore/qresource.sip0000644000076500000240000000466113245233150020223 0ustar philstaff00000000000000// qresource.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QResource { %TypeHeaderCode #include %End public: QResource(const QString &fileName = QString(), const QLocale &locale = QLocale()); ~QResource(); QString absoluteFilePath() const; SIP_PYOBJECT data() const /TypeHint="Py_v3:bytes;str"/; %MethodCode // The data may contain embedded '\0's so set the size explicitly. if (sipCpp->data()) { if ((sipRes = SIPBytes_FromStringAndSize((char *)sipCpp->data(), sipCpp->size())) == NULL) sipIsErr = 1; } else { Py_INCREF(Py_None); sipRes = Py_None; } %End QString fileName() const; bool isCompressed() const; bool isValid() const; QLocale locale() const; void setFileName(const QString &file); void setLocale(const QLocale &locale); qint64 size() const; static bool registerResource(const QString &rccFileName, const QString &mapRoot = QString()); static bool registerResource(const uchar *rccData, const QString &mapRoot = QString()) /PyName=registerResourceData/; static bool unregisterResource(const QString &rccFileName, const QString &mapRoot = QString()); static bool unregisterResource(const uchar *rccData, const QString &mapRoot = QString()) /PyName=unregisterResourceData/; protected: QStringList children() const; bool isDir() const; bool isFile() const; public: %If (Qt_5_8_0 -) QDateTime lastModified() const; %End private: QResource(const QResource &); }; PyQt5_gpl-5.10.1/sip/QtCore/qrunnable.sip0000644000076500000240000000226013245233150020173 0ustar philstaff00000000000000// qrunnable.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRunnable /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: QRunnable(); virtual ~QRunnable(); virtual void run() = 0 /NewThread/; bool autoDelete() const; void setAutoDelete(bool _autoDelete); }; PyQt5_gpl-5.10.1/sip/QtCore/qsavefile.sip0000644000076500000240000000325413245233150020167 0ustar philstaff00000000000000// qsavefile.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QSaveFile : QFileDevice { %TypeHeaderCode #include %End public: explicit QSaveFile(const QString &name); explicit QSaveFile(QObject *parent /TransferThis/ = 0); QSaveFile(const QString &name, QObject *parent /TransferThis/); virtual ~QSaveFile(); virtual QString fileName() const; void setFileName(const QString &name); virtual bool open(QIODevice::OpenMode flags) /ReleaseGIL/; bool commit(); void cancelWriting(); void setDirectWriteFallback(bool enabled); bool directWriteFallback() const; protected: virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) /ReleaseGIL/; private: virtual void close(); QSaveFile(const QSaveFile &); }; %End PyQt5_gpl-5.10.1/sip/QtCore/qsemaphore.sip0000644000076500000240000000315513245233150020354 0ustar philstaff00000000000000// qsemaphore.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSemaphore { %TypeHeaderCode #include %End public: explicit QSemaphore(int n = 0); ~QSemaphore(); void acquire(int n = 1) /ReleaseGIL/; bool tryAcquire(int n = 1); bool tryAcquire(int n, int timeout) /ReleaseGIL/; void release(int n = 1); int available() const; private: QSemaphore(const QSemaphore &); }; %If (Qt_5_10_0 -) class QSemaphoreReleaser /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QSemaphoreReleaser(); QSemaphoreReleaser(QSemaphore *sem, int n = 1); ~QSemaphoreReleaser(); void swap(QSemaphoreReleaser &other); QSemaphore *semaphore() const; QSemaphore *cancel(); }; %End PyQt5_gpl-5.10.1/sip/QtCore/qsequentialanimationgroup.sip0000644000076500000240000000340513245233150023516 0ustar philstaff00000000000000// qsequentialanimationgroup.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSequentialAnimationGroup : QAnimationGroup { %TypeHeaderCode #include %End public: QSequentialAnimationGroup(QObject *parent /TransferThis/ = 0); virtual ~QSequentialAnimationGroup(); QPauseAnimation *addPause(int msecs); QPauseAnimation *insertPause(int index, int msecs); QAbstractAnimation *currentAnimation() const; virtual int duration() const; signals: void currentAnimationChanged(QAbstractAnimation *current); protected: virtual bool event(QEvent *event); virtual void updateCurrentTime(int); virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); virtual void updateDirection(QAbstractAnimation::Direction direction); private: QSequentialAnimationGroup(const QSequentialAnimationGroup &); }; PyQt5_gpl-5.10.1/sip/QtCore/qsettings.sip0000644000076500000240000000742713245233150020237 0ustar philstaff00000000000000// qsettings.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSettings : QObject { %TypeHeaderCode #include %End public: enum Status { NoError, AccessError, FormatError, }; enum Format { NativeFormat, IniFormat, InvalidFormat, }; enum Scope { UserScope, SystemScope, }; QSettings(const QString &organization, const QString &application = QString(), QObject *parent /TransferThis/ = 0); QSettings(QSettings::Scope scope, const QString &organization, const QString &application = QString(), QObject *parent /TransferThis/ = 0); QSettings(QSettings::Format format, QSettings::Scope scope, const QString &organization, const QString &application = QString(), QObject *parent /TransferThis/ = 0); QSettings(const QString &fileName, QSettings::Format format, QObject *parent /TransferThis/ = 0); explicit QSettings(QObject *parent /TransferThis/ = 0); virtual ~QSettings(); void clear(); void sync(); QSettings::Status status() const; void beginGroup(const QString &prefix); void endGroup(); QString group() const; int beginReadArray(const QString &prefix); void beginWriteArray(const QString &prefix, int size = -1); void endArray(); void setArrayIndex(int i); QStringList allKeys() const; QStringList childKeys() const; QStringList childGroups() const; bool isWritable() const; void setValue(const QString &key, const QVariant &value); SIP_PYOBJECT value(const QString &key, const QVariant &defaultValue = QVariant(), SIP_PYOBJECT type /TypeHint="type", TypeHintValue="None"/ = 0) const /ReleaseGIL/; %MethodCode QVariant value; // QSettings has an internal mutex so release the GIL to avoid the possibility // of deadlocks. Py_BEGIN_ALLOW_THREADS value = sipCpp->value(*a0, *a1); Py_END_ALLOW_THREADS sipRes = pyqt5_from_qvariant_by_type(value, a2); sipIsErr = !sipRes; %End void remove(const QString &key); bool contains(const QString &key) const; void setFallbacksEnabled(bool b); bool fallbacksEnabled() const; QString fileName() const; static void setPath(QSettings::Format format, QSettings::Scope scope, const QString &path); QSettings::Format format() const; QSettings::Scope scope() const; QString organizationName() const; QString applicationName() const; static void setDefaultFormat(QSettings::Format format); static QSettings::Format defaultFormat(); void setIniCodec(QTextCodec *codec /KeepReference/); void setIniCodec(const char *codecName); QTextCodec *iniCodec() const; %If (Qt_5_10_0 -) bool isAtomicSyncRequired() const; %End %If (Qt_5_10_0 -) void setAtomicSyncRequired(bool enable); %End protected: virtual bool event(QEvent *event); private: QSettings(const QSettings &); }; PyQt5_gpl-5.10.1/sip/QtCore/qsharedmemory.sip0000644000076500000240000000447013245233150021071 0ustar philstaff00000000000000// qsharedmemory.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSharedMemory : QObject { %TypeHeaderCode #include %End public: enum AccessMode { ReadOnly, ReadWrite, }; enum SharedMemoryError { NoError, PermissionDenied, InvalidSize, KeyError, AlreadyExists, NotFound, LockError, OutOfResources, UnknownError, }; QSharedMemory(QObject *parent /TransferThis/ = 0); QSharedMemory(const QString &key, QObject *parent /TransferThis/ = 0); virtual ~QSharedMemory(); void setKey(const QString &key); QString key() const; bool create(int size, QSharedMemory::AccessMode mode = QSharedMemory::ReadWrite); int size() const; bool attach(QSharedMemory::AccessMode mode = QSharedMemory::ReadWrite); bool isAttached() const; bool detach(); SIP_PYOBJECT data() /TypeHint="sip.voidptr"/; %MethodCode sipRes = sipConvertFromVoidPtrAndSize(sipCpp->data(), sipCpp->size()); %End SIP_PYOBJECT constData() const /TypeHint="sip.voidptr"/; %MethodCode sipRes = sipConvertFromConstVoidPtrAndSize(sipCpp->constData(), sipCpp->size()); %End bool lock(); bool unlock(); QSharedMemory::SharedMemoryError error() const; QString errorString() const; void setNativeKey(const QString &key); QString nativeKey() const; private: QSharedMemory(const QSharedMemory &); }; PyQt5_gpl-5.10.1/sip/QtCore/qsignalmapper.sip0000644000076500000240000000354113245233150021052 0ustar philstaff00000000000000// qsignalmapper.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWidget /External/; class QSignalMapper : QObject { %TypeHintCode from PyQt5.QtWidgets import QWidget %End %TypeHeaderCode #include %End public: explicit QSignalMapper(QObject *parent /TransferThis/ = 0); virtual ~QSignalMapper(); void setMapping(QObject *sender, int id); void setMapping(QObject *sender, const QString &text); void setMapping(QObject *sender, QWidget *widget); void setMapping(QObject *sender, QObject *object); void removeMappings(QObject *sender); QObject *mapping(int id) const; QObject *mapping(const QString &text) const; QObject *mapping(QWidget *widget) const; QObject *mapping(QObject *object) const; signals: void mapped(int); void mapped(const QString &); void mapped(QWidget *); void mapped(QObject *); public slots: void map(); void map(QObject *sender); private: QSignalMapper(const QSignalMapper &); }; PyQt5_gpl-5.10.1/sip/QtCore/qsignaltransition.sip0000644000076500000240000000426513245233150021764 0ustar philstaff00000000000000// qsignaltransition.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSignalTransition : QAbstractTransition { %TypeHeaderCode #include %End public: QSignalTransition(QState *sourceState /TransferThis/ = 0); QSignalTransition(SIP_PYOBJECT signal /TypeHint="pyqtBoundSignal"/, QState *sourceState /TransferThis/ = 0) /NoDerived/; %MethodCode QObject *sender; QByteArray signal_signature; if ((sipError = pyqt5_get_pyqtsignal_parts(a0, &sender, signal_signature)) == sipErrorNone) { sipCpp = new sipQSignalTransition(a1); sipCpp->setSenderObject(sender); sipCpp->setSignal(signal_signature); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual ~QSignalTransition(); QObject *senderObject() const; void setSenderObject(const QObject *sender); QByteArray signal() const; void setSignal(const QByteArray &signal); protected: virtual bool eventTest(QEvent *event); virtual void onTransition(QEvent *event); virtual bool event(QEvent *e); signals: %If (Qt_5_4_0 -) void senderObjectChanged(); %End %If (Qt_5_4_0 -) void signalChanged(); %End private: QSignalTransition(const QSignalTransition &); }; PyQt5_gpl-5.10.1/sip/QtCore/qsize.sip0000644000076500000240000001322513245233150017342 0ustar philstaff00000000000000// qsize.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSize { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"ii", sipCpp->width(), sipCpp->height()); %End public: void transpose(); void scale(const QSize &s, Qt::AspectRatioMode mode); QSize(); QSize(int w, int h); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QSize()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QSize()"); #endif } else { sipRes = #if PY_MAJOR_VERSION >= 3 PyUnicode_FromFormat #else PyString_FromFormat #endif ("PyQt5.QtCore.QSize(%i, %i)", sipCpp->width(), sipCpp->height()); } %End bool isNull() const; bool isEmpty() const; bool isValid() const; int __bool__() const; %MethodCode sipRes = sipCpp->isValid(); %End int width() const; int height() const; void setWidth(int w); void setHeight(int h); void scale(int w, int h, Qt::AspectRatioMode mode); QSize &operator+=(const QSize &s); QSize &operator-=(const QSize &s); QSize &operator*=(qreal c); QSize &operator/=(qreal c); QSize expandedTo(const QSize &otherSize) const; QSize boundedTo(const QSize &otherSize) const; QSize scaled(const QSize &s, Qt::AspectRatioMode mode) const; QSize scaled(int w, int h, Qt::AspectRatioMode mode) const; QSize transposed() const; }; QDataStream &operator<<(QDataStream &, const QSize & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QSize & /Constrained/) /ReleaseGIL/; bool operator==(const QSize &s1, const QSize &s2); bool operator!=(const QSize &s1, const QSize &s2); const QSize operator+(const QSize &s1, const QSize &s2); const QSize operator-(const QSize &s1, const QSize &s2); const QSize operator*(const QSize &s, qreal c); const QSize operator*(qreal c, const QSize &s); const QSize operator/(const QSize &s, qreal c); class QSizeF { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"dd", sipCpp->width(), sipCpp->height()); %End public: void transpose(); void scale(const QSizeF &s, Qt::AspectRatioMode mode); QSizeF(); QSizeF(const QSize &sz); QSizeF(qreal w, qreal h); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromString("PyQt5.QtCore.QSizeF()"); #else sipRes = PyString_FromString("PyQt5.QtCore.QSizeF()"); #endif } else { PyObject *w = PyFloat_FromDouble(sipCpp->width()); PyObject *h = PyFloat_FromDouble(sipCpp->height()); if (w && h) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QSizeF(%R, %R)", w, h); #else sipRes = PyString_FromString("PyQt5.QtCore.QSizeF("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(w)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(h)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } Py_XDECREF(w); Py_XDECREF(h); } %End bool isNull() const; bool isEmpty() const; bool isValid() const; int __bool__() const; %MethodCode sipRes = sipCpp->isValid(); %End qreal width() const; qreal height() const; void setWidth(qreal w); void setHeight(qreal h); void scale(qreal w, qreal h, Qt::AspectRatioMode mode); QSizeF &operator+=(const QSizeF &s); QSizeF &operator-=(const QSizeF &s); QSizeF &operator*=(qreal c); QSizeF &operator/=(qreal c); QSizeF expandedTo(const QSizeF &otherSize) const; QSizeF boundedTo(const QSizeF &otherSize) const; QSize toSize() const; QSizeF scaled(const QSizeF &s, Qt::AspectRatioMode mode) const; QSizeF scaled(qreal w, qreal h, Qt::AspectRatioMode mode) const; QSizeF transposed() const; }; QDataStream &operator<<(QDataStream &, const QSizeF & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QSizeF & /Constrained/) /ReleaseGIL/; bool operator==(const QSizeF &s1, const QSizeF &s2); bool operator!=(const QSizeF &s1, const QSizeF &s2); const QSizeF operator+(const QSizeF &s1, const QSizeF &s2); const QSizeF operator-(const QSizeF &s1, const QSizeF &s2); const QSizeF operator*(const QSizeF &s, qreal c); const QSizeF operator*(qreal c, const QSizeF &s); const QSizeF operator/(const QSizeF &s, qreal c); PyQt5_gpl-5.10.1/sip/QtCore/qsocketnotifier.sip0000644000076500000240000000300013245233150021406 0ustar philstaff00000000000000// qsocketnotifier.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSocketNotifier : QObject { %TypeHeaderCode #include %End public: enum Type { Read, Write, Exception, }; QSocketNotifier(qintptr socket, QSocketNotifier::Type, QObject *parent /TransferThis/ = 0); virtual ~QSocketNotifier(); qintptr socket() const; QSocketNotifier::Type type() const; bool isEnabled() const; public slots: void setEnabled(bool); signals: void activated(int socket); protected: virtual bool event(QEvent *); private: QSocketNotifier(const QSocketNotifier &); }; PyQt5_gpl-5.10.1/sip/QtCore/qsortfilterproxymodel.sip0000644000076500000240000001244513245233150022713 0ustar philstaff00000000000000// qsortfilterproxymodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSortFilterProxyModel : QAbstractProxyModel { %TypeHeaderCode #include %End public: explicit QSortFilterProxyModel(QObject *parent /TransferThis/ = 0); virtual ~QSortFilterProxyModel(); virtual void setSourceModel(QAbstractItemModel *sourceModel /KeepReference/); virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const; virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const; virtual QItemSelection mapSelectionToSource(const QItemSelection &proxySelection) const; virtual QItemSelection mapSelectionFromSource(const QItemSelection &sourceSelection) const; QRegExp filterRegExp() const; void setFilterRegExp(const QRegExp ®Exp); int filterKeyColumn() const; void setFilterKeyColumn(int column); Qt::CaseSensitivity filterCaseSensitivity() const; void setFilterCaseSensitivity(Qt::CaseSensitivity cs); public slots: void setFilterRegExp(const QString &pattern); void setFilterWildcard(const QString &pattern); void setFilterFixedString(const QString &pattern); protected: virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const; virtual bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const; virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const; public: virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &child) const; QObject *parent() const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); %If (Qt_5_5_0 -) virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; %End %If (- Qt_5_5_0) virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::EditRole) const; %End virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual QMimeData *mimeData(const QModelIndexList &indexes) const /TransferBack/; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual void fetchMore(const QModelIndex &parent); virtual bool canFetchMore(const QModelIndex &parent) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual QModelIndex buddy(const QModelIndex &index) const; virtual QSize span(const QModelIndex &index) const; virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchStartsWith|Qt::MatchWrap) const; virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); Qt::CaseSensitivity sortCaseSensitivity() const; void setSortCaseSensitivity(Qt::CaseSensitivity cs); bool dynamicSortFilter() const; void setDynamicSortFilter(bool enable); int sortRole() const; void setSortRole(int role); int sortColumn() const; Qt::SortOrder sortOrder() const; int filterRole() const; void setFilterRole(int role); virtual QStringList mimeTypes() const; virtual Qt::DropActions supportedDropActions() const; bool isSortLocaleAware() const; void setSortLocaleAware(bool on); virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; %If (Qt_5_10_0 -) bool isRecursiveFilteringEnabled() const; %End %If (Qt_5_10_0 -) void setRecursiveFilteringEnabled(bool recursive); %End public slots: void invalidate(); protected: void invalidateFilter(); private: QSortFilterProxyModel(const QSortFilterProxyModel &); }; PyQt5_gpl-5.10.1/sip/QtCore/qstandardpaths.sip0000644000076500000240000000544413245233150021234 0ustar philstaff00000000000000// qstandardpaths.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStandardPaths { %TypeHeaderCode #include %End public: enum StandardLocation { DesktopLocation, DocumentsLocation, FontsLocation, ApplicationsLocation, MusicLocation, MoviesLocation, PicturesLocation, TempLocation, HomeLocation, DataLocation, CacheLocation, GenericDataLocation, RuntimeLocation, ConfigLocation, DownloadLocation, GenericCacheLocation, %If (Qt_5_2_0 -) GenericConfigLocation, %End %If (Qt_5_4_0 -) AppDataLocation, %End %If (Qt_5_4_0 -) AppLocalDataLocation, %End %If (Qt_5_5_0 -) AppConfigLocation, %End }; static QString writableLocation(QStandardPaths::StandardLocation type); static QStringList standardLocations(QStandardPaths::StandardLocation type); enum LocateOption { LocateFile, LocateDirectory, }; typedef QFlags LocateOptions; static QString locate(QStandardPaths::StandardLocation type, const QString &fileName, QFlags options = QStandardPaths::LocateFile); static QStringList locateAll(QStandardPaths::StandardLocation type, const QString &fileName, QFlags options = QStandardPaths::LocateFile); %If (PyQt_NotBootstrapped) static QString displayName(QStandardPaths::StandardLocation type); %End static QString findExecutable(const QString &executableName, const QStringList &paths = QStringList()); static void enableTestMode(bool testMode); %If (Qt_5_2_0 -) static void setTestModeEnabled(bool testMode); %End private: QStandardPaths(); ~QStandardPaths(); }; %If (Qt_5_8_0 -) QFlags operator|(QStandardPaths::LocateOption f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtCore/qstate.sip0000644000076500000240000000551213245233150017510 0ustar philstaff00000000000000// qstate.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QState : QAbstractState { %TypeHeaderCode #include %End public: enum ChildMode { ExclusiveStates, ParallelStates, }; enum RestorePolicy { DontRestoreProperties, RestoreProperties, }; QState(QState *parent /TransferThis/ = 0); QState(QState::ChildMode childMode, QState *parent /TransferThis/ = 0); virtual ~QState(); QAbstractState *errorState() const; void setErrorState(QAbstractState *state /KeepReference/); void addTransition(QAbstractTransition *transition /Transfer/); QSignalTransition *addTransition(SIP_PYOBJECT signal /TypeHint="pyqtBoundSignal"/, QAbstractState *target); %MethodCode QObject *sender; QByteArray signal_signature; if ((sipError = pyqt5_get_pyqtsignal_parts(a0, &sender, signal_signature)) == sipErrorNone) { sipRes = sipCpp->addTransition(sender, signal_signature.constData(), a1); } else { sipError = sipBadCallableArg(0, a0); } %End QAbstractTransition *addTransition(QAbstractState *target /Transfer/); void removeTransition(QAbstractTransition *transition /TransferBack/); QList transitions() const; QAbstractState *initialState() const; void setInitialState(QAbstractState *state /KeepReference/); QState::ChildMode childMode() const; void setChildMode(QState::ChildMode mode); void assignProperty(QObject *object, const char *name, const QVariant &value); signals: void finished(); void propertiesAssigned(); protected: virtual void onEntry(QEvent *event); virtual void onExit(QEvent *event); virtual bool event(QEvent *e); signals: %If (Qt_5_4_0 -) void childModeChanged(); %End %If (Qt_5_4_0 -) void initialStateChanged(); %End %If (Qt_5_4_0 -) void errorStateChanged(); %End private: QState(const QState &); }; PyQt5_gpl-5.10.1/sip/QtCore/qstatemachine.sip0000644000076500000240000001074313245233150021037 0ustar philstaff00000000000000// qstatemachine.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStateMachine : QState { %TypeHeaderCode #include %End public: class SignalEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~SignalEvent(); QObject *sender() const; int signalIndex() const; QList arguments() const; }; class WrappedEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~WrappedEvent(); QObject *object() const; QEvent *event() const; }; enum EventPriority { NormalPriority, HighPriority, }; enum Error { NoError, NoInitialStateError, NoDefaultStateInHistoryStateError, NoCommonAncestorForTransitionError, }; explicit QStateMachine(QObject *parent /TransferThis/ = 0); QStateMachine(QState::ChildMode childMode, QObject *parent /TransferThis/ = 0); virtual ~QStateMachine(); void addState(QAbstractState *state /Transfer/); void removeState(QAbstractState *state /TransferBack/); QStateMachine::Error error() const; QString errorString() const; void clearError(); bool isRunning() const; bool isAnimated() const; void setAnimated(bool enabled); void addDefaultAnimation(QAbstractAnimation *animation /GetWrapper/); %MethodCode // We want to keep a reference to the animation but this is in addition to the // existing ones and does not replace them - so we can't use /KeepReference/. sipCpp->addDefaultAnimation(a0); // Use the user object as a list of the references. PyObject *user = sipGetUserObject((sipSimpleWrapper *)sipSelf); if (!user) { user = PyList_New(0); sipSetUserObject((sipSimpleWrapper *)sipSelf, user); } if (user) PyList_Append(user, a0Wrapper); %End QList defaultAnimations() const; void removeDefaultAnimation(QAbstractAnimation *animation /GetWrapper/); %MethodCode // Discard the extra animation reference that we took in addDefaultAnimation(). sipCpp->removeDefaultAnimation(a0); // Use the user object as a list of the references. PyObject *user = sipGetUserObject((sipSimpleWrapper *)sipSelf); if (user) { Py_ssize_t i = 0; // Note that we deal with an object appearing in the list more than once. while (i < PyList_Size(user)) if (PyList_GetItem(user, i) == a0Wrapper) PyList_SetSlice(user, i, i + 1, NULL); else ++i; } %End QState::RestorePolicy globalRestorePolicy() const; void setGlobalRestorePolicy(QState::RestorePolicy restorePolicy); void postEvent(QEvent *event /Transfer/, QStateMachine::EventPriority priority = QStateMachine::NormalPriority); int postDelayedEvent(QEvent *event /Transfer/, int delay); bool cancelDelayedEvent(int id); QSet configuration() const; virtual bool eventFilter(QObject *watched, QEvent *event); public slots: void start(); void stop(); %If (Qt_5_4_0 -) void setRunning(bool running); %End signals: void started(); void stopped(); %If (Qt_5_4_0 -) void runningChanged(bool running); %End protected: virtual void onEntry(QEvent *event); virtual void onExit(QEvent *event); virtual bool event(QEvent *e); private: QStateMachine(const QStateMachine &); }; PyQt5_gpl-5.10.1/sip/QtCore/qstorageinfo.sip0000644000076500000240000000403513245233150020707 0ustar philstaff00000000000000// qstorageinfo.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QStorageInfo { %TypeHeaderCode #include %End public: QStorageInfo(); explicit QStorageInfo(const QString &path); explicit QStorageInfo(const QDir &dir); QStorageInfo(const QStorageInfo &other); ~QStorageInfo(); void swap(QStorageInfo &other /Constrained/); void setPath(const QString &path); QString rootPath() const; QByteArray device() const; QByteArray fileSystemType() const; QString name() const; QString displayName() const; qint64 bytesTotal() const; qint64 bytesFree() const; qint64 bytesAvailable() const; bool isReadOnly() const; bool isReady() const; bool isValid() const; void refresh(); static QList mountedVolumes(); static QStorageInfo root(); bool isRoot() const; %If (Qt_5_6_0 -) int blockSize() const; %End %If (Qt_5_9_0 -) QByteArray subvolume() const; %End }; %End %If (Qt_5_4_0 -) bool operator==(const QStorageInfo &first, const QStorageInfo &second); %End %If (Qt_5_4_0 -) bool operator!=(const QStorageInfo &first, const QStorageInfo &second); %End PyQt5_gpl-5.10.1/sip/QtCore/qstring.sip0000644000076500000240000000415213245233150017675 0ustar philstaff00000000000000// qstring.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // QString mapped type. %MappedType QString /AllowNone,TypeHint="str",TypeHintValue="''"/ { %TypeHeaderCode #include %End %ConvertToTypeCode if (sipIsErr == NULL) #if PY_MAJOR_VERSION < 3 return (sipPy == Py_None || PyString_Check(sipPy) || PyUnicode_Check(sipPy)); #else return (sipPy == Py_None || PyUnicode_Check(sipPy)); #endif if (sipPy == Py_None) { // None is the only way to create a null (as opposed to empty) QString. *sipCppPtr = new QString(); return sipGetState(sipTransferObj); } #if PY_MAJOR_VERSION < 3 if (PyString_Check(sipPy)) { *sipCppPtr = new QString(PyString_AsString(sipPy)); return sipGetState(sipTransferObj); } #endif *sipCppPtr = new QString(qpycore_PyObject_AsQString(sipPy)); return sipGetState(sipTransferObj); %End %ConvertFromTypeCode return qpycore_PyObject_FromQString(*sipCpp); %End }; // QStringRef mapped type. %MappedType QStringRef /TypeHint="str",TypeHintValue="''"/ { %TypeHeaderCode #include %End %ConvertToTypeCode // Qt only ever returns a QStringRef so this conversion isn't needed. return 0; %End %ConvertFromTypeCode return qpycore_PyObject_FromQString(sipCpp->toString()); %End }; PyQt5_gpl-5.10.1/sip/QtCore/qstringlist.sip0000644000076500000240000000677013245233150020601 0ustar philstaff00000000000000// This is the SIP interface definition for the QStringList mapped type. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // Note that when we test the type of an object to see if it can be converted // to a collection we only check if it is iterable. We do not check the // types of the contents - we assume we will be able to convert them when // requested. This allows us to raise exceptions specific to an individual // object. This approach doesn't work if there are overloads that can only be // distinguished by the types of the template arguments. Currently there are // no such cases in PyQt5. Note also that we don't consider strings to be // iterables. %MappedType QStringList /TypeHintIn="Iterable[QString]", TypeHintOut="List[QString]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { QString *t = new QString(sipCpp->at(i)); PyObject *tobj = sipConvertFromNewType(t, sipType_QString, sipTransferObj); if (!tobj) { delete t; Py_DECREF(l); return 0; } PyList_SetItem(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QStringList *ql = new QStringList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; QString *t = reinterpret_cast( sipForceConvertToType(itm, sipType_QString, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'str' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(*t); sipReleaseType(t, sipType_QString, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; PyQt5_gpl-5.10.1/sip/QtCore/qstringlistmodel.sip0000644000076500000240000000403313245233150021610 0ustar philstaff00000000000000// qstringlistmodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStringListModel : QAbstractListModel { %TypeHeaderCode #include %End public: explicit QStringListModel(QObject *parent /TransferThis/ = 0); QStringListModel(const QStringList &strings, QObject *parent /TransferThis/ = 0); virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); QStringList stringList() const; void setStringList(const QStringList &strings); virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual Qt::DropActions supportedDropActions() const; virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; private: QStringListModel(const QStringListModel &); }; PyQt5_gpl-5.10.1/sip/QtCore/qsysinfo.sip0000644000076500000240000000733713245233150020071 0ustar philstaff00000000000000// This is the SIP specification of the QSysInfo class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSysInfo { %TypeHeaderCode #include %End public: enum Sizes { WordSize, }; enum Endian { BigEndian, LittleEndian, ByteOrder, }; %If (WS_MACX) enum MacVersion { MV_Unknown, MV_9, MV_10_0, MV_10_1, MV_10_2, MV_10_3, MV_10_4, MV_10_5, MV_10_6, MV_10_7, MV_10_8, %If (Qt_5_1_0 -) MV_10_9, %End %If (Qt_5_4_0 -) MV_10_10, %End %If (Qt_5_5_0 -) MV_10_11, %End %If (Qt_5_8_0 -) MV_10_12, %End MV_CHEETAH, MV_PUMA, MV_JAGUAR, MV_PANTHER, MV_TIGER, MV_LEOPARD, MV_SNOWLEOPARD, MV_LION, MV_MOUNTAINLION, %If (Qt_5_1_0 -) MV_MAVERICKS, %End %If (Qt_5_4_0 -) MV_YOSEMITE, %End %If (Qt_5_5_0 -) MV_ELCAPITAN, %End %If (Qt_5_8_0 -) MV_SIERRA, %End %If (Qt_5_2_0 -) MV_IOS, MV_IOS_4_3, MV_IOS_5_0, MV_IOS_5_1, MV_IOS_6_0, MV_IOS_6_1, MV_IOS_7_0, MV_IOS_7_1, %End %If (Qt_5_4_0 -) MV_IOS_8_0, %End %If (Qt_5_5_0 -) MV_IOS_8_1, MV_IOS_8_2, MV_IOS_8_3, MV_IOS_8_4, MV_IOS_9_0, %End %If (Qt_5_8_0 -) MV_IOS_9_1, MV_IOS_9_2, MV_IOS_9_3, MV_IOS_10_0, %End %If (Qt_5_8_0 -) MV_TVOS, MV_TVOS_9_0, MV_TVOS_9_1, MV_TVOS_9_2, MV_TVOS_10_0, %End %If (Qt_5_8_0 -) MV_WATCHOS, MV_WATCHOS_2_0, MV_WATCHOS_2_1, MV_WATCHOS_2_2, MV_WATCHOS_3_0, %End }; static const QSysInfo::MacVersion MacintoshVersion; static QSysInfo::MacVersion macVersion(); %End %If (WS_WIN) enum WinVersion { WV_32s, WV_95, WV_98, WV_Me, WV_DOS_based, WV_NT, WV_2000, WV_XP, WV_2003, WV_VISTA, WV_WINDOWS7, WV_WINDOWS8, %If (Qt_5_2_0 -) WV_WINDOWS8_1, %End %If (Qt_5_5_0 -) WV_WINDOWS10, %End WV_NT_based, WV_4_0, WV_5_0, WV_5_1, WV_5_2, WV_6_0, WV_6_1, WV_6_2, %If (Qt_5_2_0 -) WV_6_3, %End %If (Qt_5_5_0 -) WV_10_0, %End WV_CE, WV_CENET, WV_CE_5, WV_CE_6, WV_CE_based }; static const QSysInfo::WinVersion WindowsVersion; static QSysInfo::WinVersion windowsVersion(); %End %If (Qt_5_4_0 -) static QString buildAbi(); static QString buildCpuArchitecture(); static QString currentCpuArchitecture(); static QString kernelType(); static QString kernelVersion(); static QString prettyProductName(); static QString productType(); static QString productVersion(); %End %If (Qt_5_6_0 -) static QString machineHostName(); %End }; PyQt5_gpl-5.10.1/sip/QtCore/qsystemsemaphore.sip0000644000076500000240000000337613245233150021626 0ustar philstaff00000000000000// qsystemsemaphore.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSystemSemaphore { %TypeHeaderCode #include %End public: enum AccessMode { Open, Create, }; enum SystemSemaphoreError { NoError, PermissionDenied, KeyError, AlreadyExists, NotFound, OutOfResources, UnknownError, }; QSystemSemaphore(const QString &key, int initialValue = 0, QSystemSemaphore::AccessMode mode = QSystemSemaphore::Open); ~QSystemSemaphore(); void setKey(const QString &key, int initialValue = 0, QSystemSemaphore::AccessMode mode = QSystemSemaphore::Open); QString key() const; bool acquire(); bool release(int n = 1); QSystemSemaphore::SystemSemaphoreError error() const; QString errorString() const; private: QSystemSemaphore(const QSystemSemaphore &); }; PyQt5_gpl-5.10.1/sip/QtCore/QtCoremod.sip0000644000076500000240000001450013245233150020101 0ustar philstaff00000000000000// QtCoremod.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtCore, call_super_init=True, default_VirtualErrorHandler=PyQt5, keyword_arguments="Optional", use_limited_api=True) %Timeline {Qt_5_0_0 Qt_5_0_1 Qt_5_0_2 Qt_5_1_0 Qt_5_1_1 Qt_5_2_0 Qt_5_2_1 Qt_5_3_0 Qt_5_3_1 Qt_5_3_2 Qt_5_4_0 Qt_5_4_1 Qt_5_4_2 Qt_5_5_0 Qt_5_5_1 Qt_5_6_0 Qt_5_6_1 Qt_5_6_2 Qt_5_6_3 Qt_5_6_4 Qt_5_6_5 Qt_5_6_6 Qt_5_6_7 Qt_5_6_8 Qt_5_6_9 Qt_5_7_0 Qt_5_7_1 Qt_5_8_0 Qt_5_8_1 Qt_5_9_0 Qt_5_9_1 Qt_5_9_2 Qt_5_9_3 Qt_5_9_99 Qt_5_10_0 Qt_5_10_1} %Platforms {WS_X11 WS_WIN WS_MACX} %Feature PyQt_Accessibility %Feature PyQt_SessionManager %Feature PyQt_SSL %Feature PyQt_qreal_double %Feature Py_v3 %Feature PyQt_PrintDialog %Feature PyQt_Printer %Feature PyQt_PrintPreviewWidget %Feature PyQt_PrintPreviewDialog %Feature PyQt_RawFont %Feature PyQt_OpenGL %Feature PyQt_Desktop_OpenGL %Feature PyQt_NotBootstrapped %Feature PyQt_Process %Feature PyQt_MacOSXOnly %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %Plugin PyQt5 %If (Py_v3) %DefaultEncoding "ASCII" %End %If (!Py_v3) // Hook into the VendorID package if it is enabled. %Feature VendorID %If (VendorID) %ModuleCode #include %End %PreInitialisationCode if (!vendorid_check()) { PyErr_SetString(PyExc_RuntimeError, "PyQt cannot be used with this Python interpreter"); return; } %End %End %End %Include(name=pyqt-internal.sip5, optional=True) %Include(name=pyqt-gpl.sip5, optional=True) %Include(name=pyqt-commercial.sip5, optional=True) %DefaultSupertype sip.simplewrapper %Include qglobal.sip %Include qnamespace.sip %Include qabstractanimation.sip %Include qabstracteventdispatcher.sip %Include qabstractitemmodel.sip %Include qabstractnativeeventfilter.sip %Include qabstractproxymodel.sip %Include qabstractstate.sip %Include qabstracttransition.sip %Include qanimationgroup.sip %Include qbasictimer.sip %Include qbitarray.sip %Include qbuffer.sip %Include qbytearray.sip %Include qbytearraymatcher.sip %Include qchar.sip %Include qcollator.sip %Include qcommandlineoption.sip %Include qcommandlineparser.sip %Include qcoreapplication.sip %Include qcoreevent.sip %Include qcryptographichash.sip %Include qdatastream.sip %Include qdatetime.sip %Include qdeadlinetimer.sip %Include qdir.sip %Include qdiriterator.sip %Include qeasingcurve.sip %Include qelapsedtimer.sip %Include qeventloop.sip %Include qeventtransition.sip %Include qfile.sip %Include qfiledevice.sip %Include qfileinfo.sip %Include qfileselector.sip %Include qfilesystemwatcher.sip %Include qfinalstate.sip %Include qhistorystate.sip %Include qidentityproxymodel.sip %Include qiodevice.sip %Include qitemselectionmodel.sip %Include qjsondocument.sip %Include qjsonvalue.sip %Include qlibrary.sip %Include qlibraryinfo.sip %Include qline.sip %Include qlocale.sip %Include qlockfile.sip %Include qlogging.sip %Include qmargins.sip %Include qmessageauthenticationcode.sip %Include qmetaobject.sip %Include qmetatype.sip %Include qmimedata.sip %Include qmimedatabase.sip %Include qmimetype.sip %Include qmutex.sip %Include qnumeric.sip %Include qobject.sip %Include qobjectcleanuphandler.sip %Include qobjectdefs.sip %Include qoperatingsystemversion.sip %Include qparallelanimationgroup.sip %Include qpauseanimation.sip %Include qpropertyanimation.sip %Include qpluginloader.sip %Include qpoint.sip %Include qprocess.sip %Include qrandom.sip %Include qreadwritelock.sip %Include qrect.sip %Include qregexp.sip %Include qregularexpression.sip %Include qresource.sip %Include qrunnable.sip %Include qsavefile.sip %Include qsemaphore.sip %Include qsequentialanimationgroup.sip %Include qsettings.sip %Include qsharedmemory.sip %Include qsignalmapper.sip %Include qsignaltransition.sip %Include qsize.sip %Include qsocketnotifier.sip %Include qsortfilterproxymodel.sip %Include qstandardpaths.sip %Include qstate.sip %Include qstatemachine.sip %Include qstorageinfo.sip %Include qstring.sip %Include qstringlistmodel.sip %Include qsystemsemaphore.sip %Include qtemporarydir.sip %Include qtemporaryfile.sip %Include qtextboundaryfinder.sip %Include qtextcodec.sip %Include qtextstream.sip %Include qthread.sip %Include qthreadpool.sip %Include qtimeline.sip %Include qtimer.sip %Include qtimezone.sip %Include qtranslator.sip %Include qurl.sip %Include qurlquery.sip %Include quuid.sip %Include qvariant.sip %Include qvariantanimation.sip %Include qversionnumber.sip %Include qwaitcondition.sip %Include qxmlstream.sip %Include qjsonarray.sip %Include qjsonobject.sip %Include qpycore_qhash.sip %Include qpycore_qlist.sip %Include qpycore_qmap.sip %Include qpycore_qpair.sip %Include qpycore_qset.sip %Include qpycore_qvector.sip %Include qpycore_virtual_error_handler.sip %Include qstringlist.sip %Include qsysinfo.sip %Include qwineventnotifier.sip PyQt5_gpl-5.10.1/sip/QtCore/qtemporarydir.sip0000644000076500000240000000265013245233150021111 0ustar philstaff00000000000000// qtemporarydir.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTemporaryDir { %TypeHeaderCode #include %End public: QTemporaryDir(); explicit QTemporaryDir(const QString &templateName); ~QTemporaryDir(); bool isValid() const; bool autoRemove() const; void setAutoRemove(bool b); bool remove(); QString path() const; %If (Qt_5_6_0 -) QString errorString() const; %End %If (Qt_5_9_0 -) QString filePath(const QString &fileName) const; %End private: QTemporaryDir(const QTemporaryDir &); }; PyQt5_gpl-5.10.1/sip/QtCore/qtemporaryfile.sip0000644000076500000240000000351713245233150021255 0ustar philstaff00000000000000// qtemporaryfile.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTemporaryFile : QFile { %TypeHeaderCode #include %End public: QTemporaryFile(); explicit QTemporaryFile(const QString &templateName); explicit QTemporaryFile(QObject *parent /TransferThis/); QTemporaryFile(const QString &templateName, QObject *parent /TransferThis/); virtual ~QTemporaryFile(); bool autoRemove() const; void setAutoRemove(bool b); bool open() /ReleaseGIL/; virtual QString fileName() const; QString fileTemplate() const; void setFileTemplate(const QString &name); static QTemporaryFile *createNativeFile(const QString &fileName) /Factory,ReleaseGIL/; static QTemporaryFile *createNativeFile(QFile &file) /Factory,ReleaseGIL/; %If (Qt_5_10_0 -) bool rename(const QString &newName); %End protected: virtual bool open(QIODevice::OpenMode flags) /ReleaseGIL/; private: QTemporaryFile(const QTemporaryFile &); }; PyQt5_gpl-5.10.1/sip/QtCore/qtextboundaryfinder.sip0000644000076500000240000000406613245233150022313 0ustar philstaff00000000000000// qtextboundaryfinder.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextBoundaryFinder { %TypeHeaderCode #include %End public: enum BoundaryReason { NotAtBoundary, SoftHyphen, BreakOpportunity, StartOfItem, EndOfItem, MandatoryBreak, }; typedef QFlags BoundaryReasons; enum BoundaryType { Grapheme, Word, Line, Sentence, }; QTextBoundaryFinder(); QTextBoundaryFinder(const QTextBoundaryFinder &other); QTextBoundaryFinder(QTextBoundaryFinder::BoundaryType type, const QString &string); ~QTextBoundaryFinder(); bool isValid() const; QTextBoundaryFinder::BoundaryType type() const; QString string() const; void toStart(); void toEnd(); int position() const; void setPosition(int position); int toNextBoundary(); int toPreviousBoundary(); bool isAtBoundary() const; QTextBoundaryFinder::BoundaryReasons boundaryReasons() const; }; QFlags operator|(QTextBoundaryFinder::BoundaryReason f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtCore/qtextcodec.sip0000644000076500000240000000761613245233150020361 0ustar philstaff00000000000000// qtextcodec.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextCodec /Abstract,Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: static QTextCodec *codecForName(const QByteArray &name); static QTextCodec *codecForName(const char *name); static QTextCodec *codecForMib(int mib); static QTextCodec *codecForHtml(const QByteArray &ba); static QTextCodec *codecForHtml(const QByteArray &ba, QTextCodec *defaultCodec); static QTextCodec *codecForUtfText(const QByteArray &ba); static QTextCodec *codecForUtfText(const QByteArray &ba, QTextCodec *defaultCodec); static QList availableCodecs(); static QList availableMibs(); static QTextCodec *codecForLocale(); static void setCodecForLocale(QTextCodec *c /KeepReference/); QTextDecoder *makeDecoder(QTextCodec::ConversionFlags flags = QTextCodec::DefaultConversion) const /Factory/; QTextEncoder *makeEncoder(QTextCodec::ConversionFlags flags = QTextCodec::DefaultConversion) const /Factory/; bool canEncode(const QString &) const; QString toUnicode(const QByteArray &) const; QString toUnicode(const char *chars /Encoding="None"/) const; QByteArray fromUnicode(const QString &uc) const; enum ConversionFlag { DefaultConversion, ConvertInvalidToNull, IgnoreHeader, }; typedef QFlags ConversionFlags; struct ConverterState { %TypeHeaderCode #include %End ConverterState(QTextCodec::ConversionFlags flags = QTextCodec::DefaultConversion); ~ConverterState(); private: ConverterState(const QTextCodec::ConverterState &); }; QString toUnicode(const char *in /Array/, int length /ArraySize/, QTextCodec::ConverterState *state = 0) const; virtual QByteArray name() const = 0; virtual QList aliases() const; virtual int mibEnum() const = 0; protected: virtual QString convertToUnicode(const char *in /Array/, int length /ArraySize/, QTextCodec::ConverterState *state) const = 0; QTextCodec() /Transfer/; virtual ~QTextCodec(); private: QTextCodec(const QTextCodec &); }; QFlags operator|(QTextCodec::ConversionFlag f1, QFlags f2); class QTextEncoder /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: explicit QTextEncoder(const QTextCodec *codec); QTextEncoder(const QTextCodec *codec, QTextCodec::ConversionFlags flags); ~QTextEncoder(); QByteArray fromUnicode(const QString &str); private: QTextEncoder(const QTextEncoder &); }; class QTextDecoder /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: explicit QTextDecoder(const QTextCodec *codec); QTextDecoder(const QTextCodec *codec, QTextCodec::ConversionFlags flags); ~QTextDecoder(); QString toUnicode(const char *chars /Array/, int len /ArraySize/); QString toUnicode(const QByteArray &ba); private: QTextDecoder(const QTextDecoder &); }; PyQt5_gpl-5.10.1/sip/QtCore/qtextstream.sip0000644000076500000240000001163013245233150020566 0ustar philstaff00000000000000// qtextstream.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QTextStream { %TypeHeaderCode #include %End public: enum RealNumberNotation { SmartNotation, FixedNotation, ScientificNotation, }; enum FieldAlignment { AlignLeft, AlignRight, AlignCenter, AlignAccountingStyle, }; enum NumberFlag { ShowBase, ForcePoint, ForceSign, UppercaseBase, UppercaseDigits, }; enum Status { Ok, ReadPastEnd, ReadCorruptData, WriteFailed, }; typedef QFlags NumberFlags; QTextStream(); explicit QTextStream(QIODevice *device); QTextStream(QByteArray *array /Constrained/, QIODevice::OpenMode mode = QIODevice::ReadWrite); virtual ~QTextStream(); void setCodec(QTextCodec *codec /KeepReference/); void setCodec(const char *codecName); QTextCodec *codec() const; void setAutoDetectUnicode(bool enabled); bool autoDetectUnicode() const; void setGenerateByteOrderMark(bool generate); bool generateByteOrderMark() const; void setDevice(QIODevice *device); QIODevice *device() const; bool atEnd() const; void reset(); void flush() /ReleaseGIL/; bool seek(qint64 pos); void skipWhiteSpace(); QString read(qint64 maxlen) /ReleaseGIL/; QString readLine(qint64 maxLength = 0) /ReleaseGIL/; QString readAll() /ReleaseGIL/; void setFieldAlignment(QTextStream::FieldAlignment alignment); QTextStream::FieldAlignment fieldAlignment() const; void setPadChar(QChar ch); QChar padChar() const; void setFieldWidth(int width); int fieldWidth() const; void setNumberFlags(QTextStream::NumberFlags flags); QTextStream::NumberFlags numberFlags() const; void setIntegerBase(int base); int integerBase() const; void setRealNumberNotation(QTextStream::RealNumberNotation notation); QTextStream::RealNumberNotation realNumberNotation() const; void setRealNumberPrecision(int precision); int realNumberPrecision() const; QTextStream::Status status() const; void setStatus(QTextStream::Status status); void resetStatus(); qint64 pos() const; QTextStream &operator>>(QByteArray &array /Constrained/); QTextStream &operator<<(double f /Constrained/); QTextStream &operator<<(int i /Constrained/); QTextStream &operator<<(qlonglong i); QTextStream &operator<<(qulonglong i); QTextStream &operator<<(const QString &s); QTextStream &operator<<(const QByteArray &array); void setLocale(const QLocale &locale); QLocale locale() const; private: QTextStream(const QTextStream &); }; QFlags operator|(QTextStream::NumberFlag f1, QFlags f2); class QTextStreamManipulator; QTextStream &operator<<(QTextStream &s, QTextStreamManipulator m); QTextStream &bin(QTextStream &s) /PyName=bin_/; QTextStream &oct(QTextStream &s) /PyName=oct_/; QTextStream &dec(QTextStream &s); QTextStream &hex(QTextStream &s) /PyName=hex_/; QTextStream &showbase(QTextStream &s); QTextStream &forcesign(QTextStream &s); QTextStream &forcepoint(QTextStream &s); QTextStream &noshowbase(QTextStream &s); QTextStream &noforcesign(QTextStream &s); QTextStream &noforcepoint(QTextStream &s); QTextStream &uppercasebase(QTextStream &s); QTextStream &uppercasedigits(QTextStream &s); QTextStream &lowercasebase(QTextStream &s); QTextStream &lowercasedigits(QTextStream &s); QTextStream &fixed(QTextStream &s); QTextStream &scientific(QTextStream &s); QTextStream &left(QTextStream &s); QTextStream &right(QTextStream &s); QTextStream ¢er(QTextStream &s); QTextStream &endl(QTextStream &s); QTextStream &flush(QTextStream &s); QTextStream &reset(QTextStream &s); QTextStream &bom(QTextStream &s); QTextStream &ws(QTextStream &s); QTextStreamManipulator qSetFieldWidth(int width); QTextStreamManipulator qSetPadChar(QChar ch); QTextStreamManipulator qSetRealNumberPrecision(int precision); PyQt5_gpl-5.10.1/sip/QtCore/qthread.sip0000644000076500000240000000524313245233150017640 0ustar philstaff00000000000000// qthread.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QThread : QObject { %TypeHeaderCode #include %End public: static QThread *currentThread(); static Qt::HANDLE currentThreadId(); static int idealThreadCount(); static void yieldCurrentThread() /ReleaseGIL/; explicit QThread(QObject *parent /TransferThis/ = 0); virtual ~QThread(); enum Priority { IdlePriority, LowestPriority, LowPriority, NormalPriority, HighPriority, HighestPriority, TimeCriticalPriority, InheritPriority, }; bool isFinished() const; bool isRunning() const; void setPriority(QThread::Priority priority); QThread::Priority priority() const; void setStackSize(uint stackSize); uint stackSize() const; void exit(int returnCode = 0) /ReleaseGIL/; public slots: void start(QThread::Priority priority = QThread::InheritPriority) /ReleaseGIL/; void terminate(); void quit(); public: bool wait(unsigned long msecs = ULONG_MAX) /ReleaseGIL/; signals: void started(); void finished(); protected: virtual void run() /NewThread/; int exec() /PyName=exec_,ReleaseGIL/; %If (Py_v3) int exec() /ReleaseGIL/; %End static void setTerminationEnabled(bool enabled = true); public: virtual bool event(QEvent *event); static void sleep(unsigned long) /ReleaseGIL/; static void msleep(unsigned long) /ReleaseGIL/; static void usleep(unsigned long) /ReleaseGIL/; QAbstractEventDispatcher *eventDispatcher() const; void setEventDispatcher(QAbstractEventDispatcher *eventDispatcher /Transfer/); %If (Qt_5_2_0 -) void requestInterruption(); %End %If (Qt_5_2_0 -) bool isInterruptionRequested() const; %End %If (Qt_5_5_0 -) int loopLevel() const; %End }; PyQt5_gpl-5.10.1/sip/QtCore/qthreadpool.sip0000644000076500000240000000531013245233150020525 0ustar philstaff00000000000000// qthreadpool.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QThreadPool : QObject { %TypeHeaderCode #include %End public: QThreadPool(QObject *parent /TransferThis/ = 0); virtual ~QThreadPool(); static QThreadPool *globalInstance() /KeepReference/; void start(QRunnable *runnable /GetWrapper/, int priority = 0) /ReleaseGIL/; %MethodCode // We have to handle the object ownership manually. if (a0->autoDelete()) sipTransferTo(a0Wrapper, sipSelf); Py_BEGIN_ALLOW_THREADS sipCpp->start(a0, a1); Py_END_ALLOW_THREADS %End bool tryStart(QRunnable *runnable /GetWrapper/) /ReleaseGIL/; %MethodCode // We have to handle the object ownership manually. if (a0->autoDelete()) sipTransferTo(a0Wrapper, sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->tryStart(a0); Py_END_ALLOW_THREADS %End %If (Qt_5_9_0 -) bool tryTake(QRunnable *runnable /GetWrapper/) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->tryTake(a0); Py_END_ALLOW_THREADS // We have to handle the object ownership manually. if (sipRes) sipTransferBack(a0Wrapper); %End %End int expiryTimeout() const; void setExpiryTimeout(int expiryTimeout); int maxThreadCount() const; void setMaxThreadCount(int maxThreadCount) /ReleaseGIL/; int activeThreadCount() const /ReleaseGIL/; void reserveThread() /ReleaseGIL/; void releaseThread() /ReleaseGIL/; bool waitForDone(int msecs = -1) /ReleaseGIL/; %If (Qt_5_2_0 -) void clear() /ReleaseGIL/; %End %If (Qt_5_5_0 -) void cancel(QRunnable *runnable) /ReleaseGIL/; %End %If (Qt_5_10_0 -) void setStackSize(uint stackSize); %End %If (Qt_5_10_0 -) uint stackSize() const; %End }; PyQt5_gpl-5.10.1/sip/QtCore/qtimeline.sip0000644000076500000240000000526013245233150020176 0ustar philstaff00000000000000// qtimeline.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTimeLine : QObject { %TypeHeaderCode #include %End public: enum CurveShape { EaseInCurve, EaseOutCurve, EaseInOutCurve, LinearCurve, SineCurve, CosineCurve, }; enum Direction { Forward, Backward, }; enum State { NotRunning, Paused, Running, }; QTimeLine(int duration = 1000, QObject *parent /TransferThis/ = 0); virtual ~QTimeLine(); QTimeLine::State state() const; int loopCount() const; void setLoopCount(int count); QTimeLine::Direction direction() const; void setDirection(QTimeLine::Direction direction); int duration() const; void setDuration(int duration); int startFrame() const; void setStartFrame(int frame); int endFrame() const; void setEndFrame(int frame); void setFrameRange(int startFrame, int endFrame); int updateInterval() const; void setUpdateInterval(int interval); QTimeLine::CurveShape curveShape() const; void setCurveShape(QTimeLine::CurveShape shape); int currentTime() const; int currentFrame() const; qreal currentValue() const; int frameForTime(int msec) const; virtual qreal valueForTime(int msec) const; public slots: void resume(); void setCurrentTime(int msec); void setPaused(bool paused); void start(); void stop(); void toggleDirection(); signals: void finished(); void frameChanged(int); void stateChanged(QTimeLine::State newState); void valueChanged(qreal x); protected: virtual void timerEvent(QTimerEvent *event); public: QEasingCurve easingCurve() const; void setEasingCurve(const QEasingCurve &curve); private: QTimeLine(const QTimeLine &); }; PyQt5_gpl-5.10.1/sip/QtCore/qtimer.sip0000644000076500000240000000507713245233150017516 0ustar philstaff00000000000000// qtimer.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTimer : QObject { %TypeHeaderCode #include %End public: explicit QTimer(QObject *parent /TransferThis/ = 0); virtual ~QTimer(); bool isActive() const; int timerId() const; void setInterval(int msec); int interval() const; bool isSingleShot() const; void setSingleShot(bool asingleShot); static void singleShot(int msec, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_get_connection_parts(a1, 0, "()", true, &receiver, slot_signature)) == sipErrorNone) { QTimer::singleShot(a0, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End static void singleShot(int msec, Qt::TimerType timerType, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_get_connection_parts(a2, 0, "()", true, &receiver, slot_signature)) == sipErrorNone) { QTimer::singleShot(a0, a1, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End public slots: void start(int msec); void start(); void stop(); signals: void timeout(); protected: virtual void timerEvent(QTimerEvent *); public: void setTimerType(Qt::TimerType atype); Qt::TimerType timerType() const; int remainingTime() const; private: QTimer(const QTimer &); }; PyQt5_gpl-5.10.1/sip/QtCore/qtimezone.sip0000644000076500000240000001025513245233150020222 0ustar philstaff00000000000000// qtimezone.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QTimeZone { %TypeHeaderCode #include %End public: enum TimeType { StandardTime, DaylightTime, GenericTime, }; enum NameType { DefaultName, LongName, ShortName, OffsetName, }; struct OffsetData { %TypeHeaderCode #include %End QString abbreviation; QDateTime atUtc; int offsetFromUtc; int standardTimeOffset; int daylightTimeOffset; }; typedef QVector OffsetDataList; QTimeZone(); explicit QTimeZone(const QByteArray &ianaId); explicit QTimeZone(int offsetSeconds); QTimeZone(const QByteArray &zoneId, int offsetSeconds, const QString &name, const QString &abbreviation, QLocale::Country country = QLocale::AnyCountry, const QString &comment = QString()); QTimeZone(const QTimeZone &other); ~QTimeZone(); void swap(QTimeZone &other /Constrained/); bool operator==(const QTimeZone &other) const; bool operator!=(const QTimeZone &other) const; bool isValid() const; QByteArray id() const; QLocale::Country country() const; QString comment() const; QString displayName(const QDateTime &atDateTime, QTimeZone::NameType nameType = QTimeZone::DefaultName, const QLocale &locale = QLocale()) const; QString displayName(QTimeZone::TimeType timeType, QTimeZone::NameType nameType = QTimeZone::DefaultName, const QLocale &locale = QLocale()) const; QString abbreviation(const QDateTime &atDateTime) const; int offsetFromUtc(const QDateTime &atDateTime) const; int standardTimeOffset(const QDateTime &atDateTime) const; int daylightTimeOffset(const QDateTime &atDateTime) const; bool hasDaylightTime() const; bool isDaylightTime(const QDateTime &atDateTime) const; QTimeZone::OffsetData offsetData(const QDateTime &forDateTime) const; bool hasTransitions() const; QTimeZone::OffsetData nextTransition(const QDateTime &afterDateTime) const; QTimeZone::OffsetData previousTransition(const QDateTime &beforeDateTime) const; QTimeZone::OffsetDataList transitions(const QDateTime &fromDateTime, const QDateTime &toDateTime) const; static QByteArray systemTimeZoneId(); static bool isTimeZoneIdAvailable(const QByteArray &ianaId); static QList availableTimeZoneIds(); static QList availableTimeZoneIds(QLocale::Country country /Constrained/); static QList availableTimeZoneIds(int offsetSeconds); static QByteArray ianaIdToWindowsId(const QByteArray &ianaId); static QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId); static QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId, QLocale::Country country); static QList windowsIdToIanaIds(const QByteArray &windowsId); static QList windowsIdToIanaIds(const QByteArray &windowsId, QLocale::Country country); %If (Qt_5_5_0 -) static QTimeZone systemTimeZone(); %End %If (Qt_5_5_0 -) static QTimeZone utc(); %End }; %End %If (Qt_5_2_0 -) QDataStream &operator<<(QDataStream &ds, const QTimeZone &tz /Constrained/) /ReleaseGIL/; %End %If (Qt_5_2_0 -) QDataStream &operator>>(QDataStream &ds, QTimeZone &tz /Constrained/) /ReleaseGIL/; %End PyQt5_gpl-5.10.1/sip/QtCore/qtranslator.sip0000644000076500000240000000344113245233150020560 0ustar philstaff00000000000000// qtranslator.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTranslator : QObject { %TypeHeaderCode #include %End public: explicit QTranslator(QObject *parent /TransferThis/ = 0); virtual ~QTranslator(); virtual QString translate(const char *context, const char *sourceText, const char *disambiguation = 0, int n = -1) const; virtual bool isEmpty() const; bool load(const QString &fileName, const QString &directory = QString(), const QString &searchDelimiters = QString(), const QString &suffix = QString()) /ReleaseGIL/; bool load(const QLocale &locale, const QString &fileName, const QString &prefix = QString(), const QString &directory = QString(), const QString &suffix = QString()) /ReleaseGIL/; bool load(const uchar *data /Array/, int len /ArraySize/, const QString &directory = QString()) /PyName=loadFromData,ReleaseGIL/; private: QTranslator(const QTranslator &); }; PyQt5_gpl-5.10.1/sip/QtCore/qurl.sip0000644000076500000240000002617213245233150017177 0ustar philstaff00000000000000// qurl.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // Template definition for QUrlTwoFlags. template class QUrlTwoFlags /PyQtFlags=0x1/ { // These are handled by the %ConvertToTypeCode. //QUrlTwoFlags(E1); //QUrlTwoFlags(E2); QUrlTwoFlags(); QUrlTwoFlags &operator&=(int mask); //QUrlTwoFlags &operator&=(uint mask); QUrlTwoFlags &operator|=(QUrlTwoFlags f); //QUrlTwoFlags &operator|=(E1 f); //QUrlTwoFlags &operator|=(E2 f); QUrlTwoFlags &operator^=(QUrlTwoFlags f); //QUrlTwoFlags &operator^=(E1 f); //QUrlTwoFlags &operator^=(E2 f); operator int() const; QUrlTwoFlags operator|(QUrlTwoFlags f) const; //QUrlTwoFlags operator|(E1 f) const; //QUrlTwoFlags operator|(E2 f) const; QUrlTwoFlags operator^(QUrlTwoFlags f) const; //QUrlTwoFlags operator^(E1 f) const; //QUrlTwoFlags operator^(E2 f) const; QUrlTwoFlags operator&(int mask) const; //QUrlTwoFlags operator&(uint mask) const; //QUrlTwoFlags operator&(E1 f) const; //QUrlTwoFlags operator&(E2 f) const; QUrlTwoFlags operator~() const; // These are necessary to prevent Python comparing object IDs. bool operator==(const QUrlTwoFlags &f) const; %MethodCode sipRes = (sipCpp->operator int() == a0->operator int()); %End bool operator!=(const QUrlTwoFlags &f) const; %MethodCode sipRes = (sipCpp->operator int() != a0->operator int()); %End int __bool__() const; %MethodCode sipRes = (sipCpp->operator int() != 0); %End %ConvertToTypeCode // Allow an instance of the base enums whenever a QUrlTwoFlags is expected. if (sipIsErr == NULL) return (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_E1)) || PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_E2)) || sipCanConvertToType(sipPy, sipType_QUrlTwoFlags, SIP_NO_CONVERTORS)); if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_E1)) || PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_E2))) { *sipCppPtr = new QUrlTwoFlags(int(SIPLong_AsLong(sipPy))); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QUrlTwoFlags, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End }; class QUrl { %TypeHeaderCode #include %End %TypeCode #include %End public: enum ParsingMode { TolerantMode, StrictMode, DecodedMode, }; QUrl(); QUrl(const QString &url, QUrl::ParsingMode mode = QUrl::TolerantMode); QUrl(const QUrl ©); ~QUrl(); long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode PyObject *uni = qpycore_PyObject_FromQString(sipCpp->toString()); if (uni) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QUrl(%R)", uni); #else sipRes = PyString_FromFormat("PyQt5.QtCore.QUrl("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(uni)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif Py_DECREF(uni); } %End enum UrlFormattingOption { None /PyName=None_/, RemoveScheme, RemovePassword, RemoveUserInfo, RemovePort, RemoveAuthority, RemovePath, RemoveQuery, RemoveFragment, PreferLocalFile, StripTrailingSlash, %If (Qt_5_2_0 -) RemoveFilename, %End %If (Qt_5_2_0 -) NormalizePathSegments, %End }; typedef QUrlTwoFlags FormattingOptions; enum ComponentFormattingOption { PrettyDecoded, EncodeSpaces, EncodeUnicode, EncodeDelimiters, EncodeReserved, DecodeReserved, FullyEncoded, FullyDecoded, }; typedef QFlags ComponentFormattingOptions; QString url(QUrlTwoFlags options = QUrl::PrettyDecoded) const; void setUrl(const QString &url, QUrl::ParsingMode mode = QUrl::TolerantMode); bool isValid() const; bool isEmpty() const; void clear(); void setScheme(const QString &scheme); QString scheme() const; void setAuthority(const QString &authority, QUrl::ParsingMode mode = QUrl::TolerantMode); QString authority(QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; void setUserInfo(const QString &userInfo, QUrl::ParsingMode mode = QUrl::TolerantMode); QString userInfo(QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; %If (Qt_5_2_0 -) void setUserName(const QString &userName, QUrl::ParsingMode mode = QUrl::DecodedMode); %End %If (- Qt_5_2_0) void setUserName(const QString &userName, QUrl::ParsingMode mode = QUrl::TolerantMode); %End %If (Qt_5_2_0 -) QString userName(QUrl::ComponentFormattingOptions options = QUrl::FullyDecoded) const; %End %If (- Qt_5_2_0) QString userName(QFlags options = QUrl::PrettyDecoded) const; %End %If (Qt_5_2_0 -) void setPassword(const QString &password, QUrl::ParsingMode mode = QUrl::DecodedMode); %End %If (- Qt_5_2_0) void setPassword(const QString &password, QUrl::ParsingMode mode = QUrl::TolerantMode); %End %If (Qt_5_2_0 -) QString password(QUrl::ComponentFormattingOptions options = QUrl::FullyDecoded) const; %End %If (- Qt_5_2_0) QString password(QFlags options = QUrl::PrettyDecoded) const; %End %If (Qt_5_2_0 -) void setHost(const QString &host, QUrl::ParsingMode mode = QUrl::DecodedMode); %End %If (- Qt_5_2_0) void setHost(const QString &host, QUrl::ParsingMode mode = QUrl::TolerantMode); %End %If (Qt_5_2_0 -) QString host(QUrl::ComponentFormattingOptions = QUrl::FullyDecoded) const; %End %If (- Qt_5_2_0) QString host(QFlags options = QUrl::PrettyDecoded) const; %End void setPort(int port); int port(int defaultPort = -1) const; %If (Qt_5_2_0 -) void setPath(const QString &path, QUrl::ParsingMode mode = QUrl::DecodedMode); %End %If (- Qt_5_2_0) void setPath(const QString &path, QUrl::ParsingMode mode = QUrl::TolerantMode); %End %If (Qt_5_2_0 -) QString path(QUrl::ComponentFormattingOptions options = QUrl::FullyDecoded) const; %End %If (- Qt_5_2_0) QString path(QFlags options = QUrl::PrettyDecoded) const; %End void setFragment(const QString &fragment, QUrl::ParsingMode mode = QUrl::TolerantMode); QString fragment(QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; QUrl resolved(const QUrl &relative) const; bool isRelative() const; bool isParentOf(const QUrl &url) const; static QUrl fromLocalFile(const QString &localfile); QString toLocalFile() const; QString toString(QUrlTwoFlags options = QUrl::PrettyDecoded) const; QByteArray toEncoded(QUrlTwoFlags options = QUrl::FullyEncoded) const; static QUrl fromEncoded(const QByteArray &u, QUrl::ParsingMode mode = QUrl::TolerantMode); void detach(); bool isDetached() const; bool operator<(const QUrl &url) const; bool operator==(const QUrl &url) const; bool operator!=(const QUrl &url) const; static QString fromPercentEncoding(const QByteArray &); static QByteArray toPercentEncoding(const QString &input, const QByteArray &exclude = QByteArray(), const QByteArray &include = QByteArray()); bool hasQuery() const; bool hasFragment() const; QString errorString() const; static QString fromAce(const QByteArray &); static QByteArray toAce(const QString &); static QStringList idnWhitelist(); static void setIdnWhitelist(const QStringList &); static QUrl fromUserInput(const QString &userInput); void swap(QUrl &other /Constrained/); %If (Qt_5_2_0 -) QString topLevelDomain(QUrl::ComponentFormattingOptions options = QUrl::FullyDecoded) const; %End %If (- Qt_5_2_0) QString topLevelDomain(QFlags options = QUrl::PrettyDecoded) const; %End bool isLocalFile() const; QString toDisplayString(QUrlTwoFlags options = QUrl::PrettyDecoded) const; void setQuery(const QString &query, QUrl::ParsingMode mode = QUrl::TolerantMode); void setQuery(const QUrlQuery &query); QString query(QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; %If (Qt_5_1_0 -) static QStringList toStringList(const QList &uris, QUrlTwoFlags options = QUrl::PrettyDecoded); %End %If (Qt_5_1_0 -) static QList fromStringList(const QStringList &uris, QUrl::ParsingMode mode = QUrl::TolerantMode); %End %If (Qt_5_2_0 -) QUrl adjusted(QUrl::FormattingOptions options) const; %End %If (Qt_5_2_0 -) QString fileName(QUrl::ComponentFormattingOptions options = QUrl::FullyDecoded) const; %End %If (Qt_5_2_0 -) bool matches(const QUrl &url, QUrl::FormattingOptions options) const; %End %If (Qt_5_4_0 -) enum UserInputResolutionOption { DefaultResolution, AssumeLocalFile, }; %End %If (Qt_5_4_0 -) typedef QFlags UserInputResolutionOptions; %End %If (Qt_5_4_0 -) static QUrl fromUserInput(const QString &userInput, const QString &workingDirectory, QUrl::UserInputResolutionOptions options = QUrl::DefaultResolution); %End }; QFlags operator|(QUrl::ComponentFormattingOption f1, QFlags f2); QDataStream &operator<<(QDataStream &, const QUrl & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QUrl & /Constrained/) /ReleaseGIL/; QUrlTwoFlags operator|(QUrl::UrlFormattingOption f1, QUrlTwoFlags f2); QUrlTwoFlags operator|(QUrl::ComponentFormattingOption f, QUrlTwoFlags i); PyQt5_gpl-5.10.1/sip/QtCore/qurlquery.sip0000644000076500000240000000507513245233150020264 0ustar philstaff00000000000000// qurlquery.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUrlQuery { %TypeHeaderCode #include %End public: QUrlQuery(); explicit QUrlQuery(const QUrl &url); explicit QUrlQuery(const QString &queryString); QUrlQuery(const QUrlQuery &other); ~QUrlQuery(); bool operator==(const QUrlQuery &other) const; bool operator!=(const QUrlQuery &other) const; void swap(QUrlQuery &other /Constrained/); bool isEmpty() const; bool isDetached() const; void clear(); QString query(QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; void setQuery(const QString &queryString); QString toString(QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; void setQueryDelimiters(QChar valueDelimiter, QChar pairDelimiter); QChar queryValueDelimiter() const; QChar queryPairDelimiter() const; void setQueryItems(const QList> &query); QList> queryItems(QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; bool hasQueryItem(const QString &key) const; void addQueryItem(const QString &key, const QString &value); void removeQueryItem(const QString &key); QString queryItemValue(const QString &key, QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; QStringList allQueryItemValues(const QString &key, QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; void removeAllQueryItems(const QString &key); static QChar defaultQueryValueDelimiter(); static QChar defaultQueryPairDelimiter(); %If (Qt_5_6_0 -) long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End }; PyQt5_gpl-5.10.1/sip/QtCore/quuid.sip0000644000076500000240000000624413245233150017341 0ustar philstaff00000000000000// quuid.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUuid { %TypeHeaderCode #include %End public: enum Variant { VarUnknown, NCS, DCE, Microsoft, Reserved, }; enum Version { VerUnknown, Time, EmbeddedPOSIX, Md5, Name, Random, Sha1, }; QUuid(); QUuid(uint l, ushort w1, ushort w2, uchar b1 /PyInt/, uchar b2 /PyInt/, uchar b3 /PyInt/, uchar b4 /PyInt/, uchar b5 /PyInt/, uchar b6 /PyInt/, uchar b7 /PyInt/, uchar b8 /PyInt/); QUuid(const QString &); QUuid(const QByteArray &); long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode PyObject *uni = qpycore_PyObject_FromQString(sipCpp->toString()); if (uni) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtCore.QUuid(%R)", uni); #else sipRes = PyString_FromFormat("PyQt5.QtCore.QUuid("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(uni)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif Py_DECREF(uni); } %End QString toString() const; bool isNull() const; bool operator==(const QUuid &orig) const; bool operator!=(const QUuid &orig) const; bool operator<(const QUuid &other) const; bool operator>(const QUuid &other) const; static QUuid createUuid(); static QUuid createUuidV3(const QUuid &ns, const QByteArray &baseData); static QUuid createUuidV5(const QUuid &ns, const QByteArray &baseData); static QUuid createUuidV3(const QUuid &ns, const QString &baseData); static QUuid createUuidV5(const QUuid &ns, const QString &baseData); QUuid::Variant variant() const; QUuid::Version version() const; QByteArray toByteArray() const; QByteArray toRfc4122() const; static QUuid fromRfc4122(const QByteArray &); }; QDataStream &operator<<(QDataStream &, const QUuid & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QUuid & /Constrained/) /ReleaseGIL/; %If (Qt_5_5_0 -) bool operator<=(const QUuid &lhs, const QUuid &rhs); %End %If (Qt_5_5_0 -) bool operator>=(const QUuid &lhs, const QUuid &rhs); %End PyQt5_gpl-5.10.1/sip/QtCore/qvariant.sip0000644000076500000240000001103013245233150020024 0ustar philstaff00000000000000// qvariant.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QVariant /AllowNone,TypeHint="Any",TypeHintValue="None"/ { %TypeHeaderCode #include %End %ConvertToTypeCode if (sipIsErr == NULL) // We can convert everything to a QVariant. return 1; // If it is already a QVariant then just return it. if (Py_TYPE(sipPy) == sipTypeAsPyTypeObject(sipType_QVariant)) { *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QVariant, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } // Convert it to a QVariant. QVariant var = qpycore_PyObject_AsQVariant(sipPy, sipIsErr); if (*sipIsErr) return 0; *sipCppPtr = new QVariant(var); return sipGetState(sipTransferObj); %End %ConvertFromTypeCode return qpycore_PyObject_FromQVariant(*sipCpp); %End public: enum Type { Invalid, Bool, Int, UInt, LongLong, ULongLong, Double, Char, Map, List, String, StringList, ByteArray, BitArray, Date, Time, DateTime, Url, Locale, Rect, RectF, Size, SizeF, Line, LineF, Point, PointF, RegExp, Font, Pixmap, Brush, Color, Palette, Icon, Image, Polygon, Region, Bitmap, Cursor, SizePolicy, KeySequence, Pen, TextLength, TextFormat, Matrix, Transform, Hash, Matrix4x4, Vector2D, Vector3D, Vector4D, Quaternion, EasingCurve, Uuid, ModelIndex, PolygonF, RegularExpression, %If (Qt_5_5_0 -) PersistentModelIndex, %End UserType, }; QVariant(); QVariant(QVariant::Type type /Constrained/); QVariant(SIP_PYOBJECT obj); %MethodCode int is_err = 0; QVariant var = qpycore_PyObject_AsQVariant(a0, &is_err); if (is_err) sipCpp = 0; else sipCpp = new QVariant(var); %End ~QVariant(); SIP_PYOBJECT value() const; %MethodCode sipRes = qpycore_PyObject_FromQVariant(*sipCpp); %End QVariant::Type type() const; int userType() const; const char *typeName() const; bool canConvert(int targetTypeId) const; bool convert(int targetTypeId); bool isValid() const; bool isNull() const; void clear(); void load(QDataStream &ds) /ReleaseGIL/; void save(QDataStream &ds) const /ReleaseGIL/; static const char *typeToName(int typeId); static QVariant::Type nameToType(const char *name); bool operator==(const QVariant &v) const; bool operator!=(const QVariant &v) const; void swap(QVariant &other /Constrained/); %If (Qt_5_2_0 -) bool operator<(const QVariant &v) const; %End %If (Qt_5_2_0 -) bool operator<=(const QVariant &v) const; %End %If (Qt_5_2_0 -) bool operator>(const QVariant &v) const; %End %If (Qt_5_2_0 -) bool operator>=(const QVariant &v) const; %End }; typedef QList QVariantList /TypeHint="List[QVariant]"/; typedef QHash QVariantHash /TypeHint="Dict[QString, QVariant]"/; typedef QMap QVariantMap /TypeHint="Dict[QString, QVariant]"/; QDataStream &operator>>(QDataStream &s, QVariant &p /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &s, const QVariant &p /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &s, QVariant::Type &p /Constrained,In/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &s, const QVariant::Type p /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtCore/qvariantanimation.sip0000644000076500000240000000431713245233150021736 0ustar philstaff00000000000000// qvariantanimation.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QVariantAnimation : QAbstractAnimation { %TypeHeaderCode #include %End typedef QVector> KeyValues; public: QVariantAnimation(QObject *parent /TransferThis/ = 0); virtual ~QVariantAnimation(); QVariant startValue() const; void setStartValue(const QVariant &value); QVariant endValue() const; void setEndValue(const QVariant &value); QVariant keyValueAt(qreal step) const; void setKeyValueAt(qreal step, const QVariant &value); QVariantAnimation::KeyValues keyValues() const; void setKeyValues(const QVariantAnimation::KeyValues &values); QVariant currentValue() const; virtual int duration() const; void setDuration(int msecs); QEasingCurve easingCurve() const; void setEasingCurve(const QEasingCurve &easing); signals: void valueChanged(const QVariant &value); protected: virtual bool event(QEvent *event); virtual void updateCurrentTime(int); virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); virtual void updateCurrentValue(const QVariant &value); virtual QVariant interpolated(const QVariant &from, const QVariant &to, qreal progress) const; private: QVariantAnimation(const QVariantAnimation &); }; PyQt5_gpl-5.10.1/sip/QtCore/qversionnumber.sip0000644000076500000240000000530313245233150021264 0ustar philstaff00000000000000// qversionnumber.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_6_0 -) QDataStream &operator<<(QDataStream &out, const QVersionNumber &version /Constrained/) /ReleaseGIL/; %End %If (Qt_5_6_0 -) QDataStream &operator>>(QDataStream &in, QVersionNumber &version /Constrained/) /ReleaseGIL/; %End %If (Qt_5_6_0 -) class QVersionNumber { %TypeHeaderCode #include %End public: QVersionNumber(); explicit QVersionNumber(const QVector &seg); explicit QVersionNumber(int maj); QVersionNumber(int maj, int min); QVersionNumber(int maj, int min, int mic); bool isNull() const; bool isNormalized() const; int majorVersion() const; int minorVersion() const; int microVersion() const; QVersionNumber normalized() const; QVector segments() const; int segmentAt(int index) const; int segmentCount() const; bool isPrefixOf(const QVersionNumber &other) const; static int compare(const QVersionNumber &v1, const QVersionNumber &v2); static QVersionNumber commonPrefix(const QVersionNumber &v1, const QVersionNumber &v2); QString toString() const; static QVersionNumber fromString(const QString &string, int *suffixIndex = 0); long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %If (Qt_5_6_0 -) bool operator>(const QVersionNumber &lhs, const QVersionNumber &rhs); %End %If (Qt_5_6_0 -) bool operator>=(const QVersionNumber &lhs, const QVersionNumber &rhs); %End %If (Qt_5_6_0 -) bool operator<(const QVersionNumber &lhs, const QVersionNumber &rhs); %End %If (Qt_5_6_0 -) bool operator<=(const QVersionNumber &lhs, const QVersionNumber &rhs); %End %If (Qt_5_6_0 -) bool operator==(const QVersionNumber &lhs, const QVersionNumber &rhs); %End %If (Qt_5_6_0 -) bool operator!=(const QVersionNumber &lhs, const QVersionNumber &rhs); %End PyQt5_gpl-5.10.1/sip/QtCore/qwaitcondition.sip0000644000076500000240000000250013245233150021235 0ustar philstaff00000000000000// qwaitcondition.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWaitCondition { %TypeHeaderCode #include %End public: QWaitCondition(); ~QWaitCondition(); bool wait(QMutex *mutex, unsigned long msecs = ULONG_MAX) /ReleaseGIL/; bool wait(QReadWriteLock *readWriteLock, unsigned long msecs = ULONG_MAX) /ReleaseGIL/; void wakeOne(); void wakeAll(); private: QWaitCondition(const QWaitCondition &); }; PyQt5_gpl-5.10.1/sip/QtCore/qwineventnotifier.sip0000644000076500000240000000305013245233150021762 0ustar philstaff00000000000000// This is the SIP specification of the QWinEventNotifier class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (WS_WIN) // This hack is for the activated() signal. typedef Qt::HANDLE HANDLE; class QWinEventNotifier: QObject { %TypeHeaderCode #include %End public: explicit QWinEventNotifier(QObject *parent /TransferThis/ = 0); explicit QWinEventNotifier(Qt::HANDLE hEvent, QObject *parent /TransferThis/ = 0); ~QWinEventNotifier(); Qt::HANDLE handle() const; bool isEnabled() const; void setHandle(Qt::HANDLE hEvent); public slots: void setEnabled(bool enable); signals: void activated(HANDLE hEvent); protected: bool event(QEvent *e); private: QWinEventNotifier(const QWinEventNotifier &); }; %End PyQt5_gpl-5.10.1/sip/QtCore/qxmlstream.sip0000644000076500000240000003401413245233150020403 0ustar philstaff00000000000000// qxmlstream.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlStreamAttribute { %TypeHeaderCode #include %End public: QXmlStreamAttribute(); QXmlStreamAttribute(const QString &qualifiedName, const QString &value); QXmlStreamAttribute(const QString &namespaceUri, const QString &name, const QString &value); QXmlStreamAttribute(const QXmlStreamAttribute &); ~QXmlStreamAttribute(); QStringRef namespaceUri() const; QStringRef name() const; QStringRef qualifiedName() const; QStringRef prefix() const; QStringRef value() const; bool isDefault() const; bool operator==(const QXmlStreamAttribute &other) const; bool operator!=(const QXmlStreamAttribute &other) const; }; class QXmlStreamAttributes { %TypeHeaderCode #include %End public: QXmlStreamAttributes(); QStringRef value(const QString &namespaceUri, const QString &name) const; QStringRef value(const QString &qualifiedName) const; void append(const QString &namespaceUri, const QString &name, const QString &value); void append(const QString &qualifiedName, const QString &value); void append(const QXmlStreamAttribute &attribute); bool hasAttribute(const QString &qualifiedName) const; bool hasAttribute(const QString &namespaceUri, const QString &name) const; // Methods inherited from QVector and Python special methods. // Keep in sync with QPolygon and QPolygonF. // This is picked up with "using" by QXmlStreamAttributes. //void append(const QXmlStreamAttribute &value); const QXmlStreamAttribute &at(int i) const; void clear(); bool contains(const QXmlStreamAttribute &value) const; int count(const QXmlStreamAttribute &value) const; int count() const /__len__/; void *data(); // Note the Qt return value is discarded as it would require handwritten code // and seems pretty useless. void fill(const QXmlStreamAttribute &value, int size = -1); QXmlStreamAttribute &first(); int indexOf(const QXmlStreamAttribute &value, int from = 0) const; void insert(int i, const QXmlStreamAttribute &value); bool isEmpty() const; QXmlStreamAttribute &last(); int lastIndexOf(const QXmlStreamAttribute &value, int from = -1) const; // Note the Qt return type is QVector. We can't do the // usual trick because there is no QXmlStreamAttributes ctor that takes a // QVector argument. We could use handwritten code but we // don't bother. //QXmlStreamAttributes mid(int pos, int length = -1) const; void prepend(const QXmlStreamAttribute &value); void remove(int i); void remove(int i, int count); void replace(int i, const QXmlStreamAttribute &value); int size() const; // These are hidden by other implementations in QXmlStreamAttributes. //QXmlStreamAttribute value(int i) const; //QXmlStreamAttribute value(int i, const QXmlStreamAttribute &defaultValue) const; bool operator!=(const QXmlStreamAttributes &other) const; // Note the Qt return type is QVector. We can't do the // usual trick because there is no QXmlStreamAttributes ctor that takes a // QVector argument. We could use handwritten code but we // don't bother. //QXmlStreamAttributes operator+(const QXmlStreamAttributes &other) const; QXmlStreamAttributes &operator+=(const QXmlStreamAttributes &other); QXmlStreamAttributes &operator+=(const QXmlStreamAttribute &value); bool operator==(const QXmlStreamAttributes &other) const; QXmlStreamAttribute &operator[](int i); %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QXmlStreamAttribute(sipCpp->operator[]((int)idx)); %End // Some additional Python special methods. void __setitem__(int i, const QXmlStreamAttribute &value); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __setitem__(SIP_PYSLICE slice, const QXmlStreamAttributes &list); %MethodCode Py_ssize_t len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { int vlen = a1->count(); if (vlen != slicelength) { sipBadLengthForSlice(vlen, slicelength); sipIsErr = 1; } else { QVector::const_iterator it = a1->begin(); for (i = 0; i < slicelength; ++i) { (*sipCpp)[start] = *it; start += step; ++it; } } } %End void __delitem__(int i); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else sipCpp->remove(a0); %End void __delitem__(SIP_PYSLICE slice); %MethodCode Py_ssize_t len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else for (i = 0; i < slicelength; ++i) { sipCpp->remove(start); start += step - 1; } %End QXmlStreamAttributes &operator[](SIP_PYSLICE slice); %MethodCode Py_ssize_t len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { sipRes = new QXmlStreamAttributes(); for (i = 0; i < slicelength; ++i) { (*sipRes) += (*sipCpp)[start]; start += step; } } %End int __contains__(const QXmlStreamAttribute &value); %MethodCode // It looks like you can't assign QBool to int. sipRes = bool(sipCpp->contains(*a0)); %End }; class QXmlStreamNamespaceDeclaration { %TypeHeaderCode #include %End public: QXmlStreamNamespaceDeclaration(); QXmlStreamNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &); QXmlStreamNamespaceDeclaration(const QString &prefix, const QString &namespaceUri); ~QXmlStreamNamespaceDeclaration(); QStringRef prefix() const; QStringRef namespaceUri() const; bool operator==(const QXmlStreamNamespaceDeclaration &other) const; bool operator!=(const QXmlStreamNamespaceDeclaration &other) const; }; typedef QVector QXmlStreamNamespaceDeclarations; class QXmlStreamNotationDeclaration { %TypeHeaderCode #include %End public: QXmlStreamNotationDeclaration(); QXmlStreamNotationDeclaration(const QXmlStreamNotationDeclaration &); ~QXmlStreamNotationDeclaration(); QStringRef name() const; QStringRef systemId() const; QStringRef publicId() const; bool operator==(const QXmlStreamNotationDeclaration &other) const; bool operator!=(const QXmlStreamNotationDeclaration &other) const; }; typedef QVector QXmlStreamNotationDeclarations; class QXmlStreamEntityDeclaration { %TypeHeaderCode #include %End public: QXmlStreamEntityDeclaration(); QXmlStreamEntityDeclaration(const QXmlStreamEntityDeclaration &); ~QXmlStreamEntityDeclaration(); QStringRef name() const; QStringRef notationName() const; QStringRef systemId() const; QStringRef publicId() const; QStringRef value() const; bool operator==(const QXmlStreamEntityDeclaration &other) const; bool operator!=(const QXmlStreamEntityDeclaration &other) const; }; typedef QVector QXmlStreamEntityDeclarations; class QXmlStreamEntityResolver { %TypeHeaderCode #include %End public: virtual ~QXmlStreamEntityResolver(); virtual QString resolveUndeclaredEntity(const QString &name); }; class QXmlStreamReader { %TypeHeaderCode #include %End public: enum TokenType { NoToken, Invalid, StartDocument, EndDocument, StartElement, EndElement, Characters, Comment, DTD, EntityReference, ProcessingInstruction, }; QXmlStreamReader(); explicit QXmlStreamReader(QIODevice *device); explicit QXmlStreamReader(const QByteArray &data); explicit QXmlStreamReader(const QString &data); ~QXmlStreamReader(); void setDevice(QIODevice *device); QIODevice *device() const; void addData(const QByteArray &data); void addData(const QString &data); void clear(); bool atEnd() const; QXmlStreamReader::TokenType readNext(); QXmlStreamReader::TokenType tokenType() const; QString tokenString() const; void setNamespaceProcessing(bool); bool namespaceProcessing() const; bool isStartDocument() const; bool isEndDocument() const; bool isStartElement() const; bool isEndElement() const; bool isCharacters() const; bool isWhitespace() const; bool isCDATA() const; bool isComment() const; bool isDTD() const; bool isEntityReference() const; bool isProcessingInstruction() const; bool isStandaloneDocument() const; QStringRef documentVersion() const; QStringRef documentEncoding() const; qint64 lineNumber() const; qint64 columnNumber() const; qint64 characterOffset() const; QXmlStreamAttributes attributes() const; enum ReadElementTextBehaviour { ErrorOnUnexpectedElement, IncludeChildElements, SkipChildElements, }; QString readElementText(QXmlStreamReader::ReadElementTextBehaviour behaviour = QXmlStreamReader::ErrorOnUnexpectedElement); QStringRef name() const; QStringRef namespaceUri() const; QStringRef qualifiedName() const; QStringRef prefix() const; QStringRef processingInstructionTarget() const; QStringRef processingInstructionData() const; QStringRef text() const; QXmlStreamNamespaceDeclarations namespaceDeclarations() const; void addExtraNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &extraNamespaceDeclaraction); void addExtraNamespaceDeclarations(const QXmlStreamNamespaceDeclarations &extraNamespaceDeclaractions); QXmlStreamNotationDeclarations notationDeclarations() const; QXmlStreamEntityDeclarations entityDeclarations() const; QStringRef dtdName() const; QStringRef dtdPublicId() const; QStringRef dtdSystemId() const; enum Error { NoError, UnexpectedElementError, CustomError, NotWellFormedError, PrematureEndOfDocumentError, }; void raiseError(const QString &message = QString()); QString errorString() const; QXmlStreamReader::Error error() const; bool hasError() const; void setEntityResolver(QXmlStreamEntityResolver *resolver /KeepReference/); QXmlStreamEntityResolver *entityResolver() const; bool readNextStartElement(); void skipCurrentElement(); private: QXmlStreamReader(const QXmlStreamReader &); }; class QXmlStreamWriter { %TypeHeaderCode #include %End public: QXmlStreamWriter(); explicit QXmlStreamWriter(QIODevice *device); explicit QXmlStreamWriter(QByteArray *array); ~QXmlStreamWriter(); void setDevice(QIODevice *device); QIODevice *device() const; void setCodec(QTextCodec *codec /KeepReference/); void setCodec(const char *codecName); QTextCodec *codec() const; void setAutoFormatting(bool); bool autoFormatting() const; void setAutoFormattingIndent(int spaces); int autoFormattingIndent() const; void writeAttribute(const QString &qualifiedName, const QString &value); void writeAttribute(const QString &namespaceUri, const QString &name, const QString &value); void writeAttribute(const QXmlStreamAttribute &attribute); void writeAttributes(const QXmlStreamAttributes &attributes); void writeCDATA(const QString &text); void writeCharacters(const QString &text); void writeComment(const QString &text); void writeDTD(const QString &dtd); void writeEmptyElement(const QString &qualifiedName); void writeEmptyElement(const QString &namespaceUri, const QString &name); void writeTextElement(const QString &qualifiedName, const QString &text); void writeTextElement(const QString &namespaceUri, const QString &name, const QString &text); void writeEndDocument(); void writeEndElement(); void writeEntityReference(const QString &name); void writeNamespace(const QString &namespaceUri, const QString &prefix = QString()); void writeDefaultNamespace(const QString &namespaceUri); void writeProcessingInstruction(const QString &target, const QString &data = QString()); void writeStartDocument(); void writeStartDocument(const QString &version); void writeStartDocument(const QString &version, bool standalone); void writeStartElement(const QString &qualifiedName); void writeStartElement(const QString &namespaceUri, const QString &name); void writeCurrentToken(const QXmlStreamReader &reader); bool hasError() const; private: QXmlStreamWriter(const QXmlStreamWriter &); }; PyQt5_gpl-5.10.1/sip/QtDBus/0000755000076500000240000000000013245233150015434 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtDBus/qdbusabstractadaptor.sip0000644000076500000240000000236713245233150022376 0ustar philstaff00000000000000// qdbusabstractadaptor.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusAbstractAdaptor : QObject { %TypeHeaderCode #include %End protected: explicit QDBusAbstractAdaptor(QObject *parent /TransferThis/); public: virtual ~QDBusAbstractAdaptor(); protected: void setAutoRelaySignals(bool enable); bool autoRelaySignals() const; }; PyQt5_gpl-5.10.1/sip/QtDBus/qdbusabstractinterface.sip0000644000076500000240000001503513245233150022700 0ustar philstaff00000000000000// qdbusabstractinterface.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusAbstractInterface : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QDBusPendingCallWatcher, &sipType_QDBusPendingCallWatcher, -1, 1}, {sipName_QDBusAbstractAdaptor, &sipType_QDBusAbstractAdaptor, -1, 2}, {sipName_QDBusAbstractInterface, &sipType_QDBusAbstractInterface, 4, 3}, {sipName_QDBusServiceWatcher, &sipType_QDBusServiceWatcher, -1, -1}, {sipName_QDBusConnectionInterface, &sipType_QDBusConnectionInterface, -1, 5}, {sipName_QDBusInterface, &sipType_QDBusInterface, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: virtual ~QDBusAbstractInterface(); bool isValid() const; QDBusConnection connection() const; QString service() const; QString path() const; QString interface() const; QDBusError lastError() const; void setTimeout(int timeout); int timeout() const; QDBusMessage call(const QString &method, const QVariant &arg1 = QVariant(), const QVariant &arg2 = QVariant(), const QVariant &arg3 = QVariant(), const QVariant &arg4 = QVariant(), const QVariant &arg5 = QVariant(), const QVariant &arg6 = QVariant(), const QVariant &arg7 = QVariant(), const QVariant &arg8 = QVariant()) /ReleaseGIL/; QDBusMessage call(QDBus::CallMode mode, const QString &method, const QVariant &arg1 = QVariant(), const QVariant &arg2 = QVariant(), const QVariant &arg3 = QVariant(), const QVariant &arg4 = QVariant(), const QVariant &arg5 = QVariant(), const QVariant &arg6 = QVariant(), const QVariant &arg7 = QVariant(), const QVariant &arg8 = QVariant()) /ReleaseGIL/; QDBusMessage callWithArgumentList(QDBus::CallMode mode, const QString &method, const QList &args) /ReleaseGIL/; bool callWithCallback(const QString &method, const QList &args, SIP_PYOBJECT returnMethod /TypeHint="PYQT_SLOT"/, SIP_PYOBJECT errorMethod /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray return_slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a2, &receiver, return_slot)) == sipErrorNone) { QObject *error_receiver; QByteArray error_slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a3, &error_receiver, error_slot)) == sipErrorNone) { if (receiver == error_receiver) { sipRes = sipCpp->callWithCallback(*a0, *a1, receiver, return_slot.constData(), error_slot.constData()); } else { PyErr_SetString(PyExc_ValueError, "the return and error methods must be bound to the same QObject instance"); sipError = sipErrorFail; } } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(3, a3); } } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End bool callWithCallback(const QString &method, QList &args, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a2, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->callWithCallback(*a0, *a1, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End QDBusPendingCall asyncCall(const QString &method, const QVariant &arg1 = QVariant(), const QVariant &arg2 = QVariant(), const QVariant &arg3 = QVariant(), const QVariant &arg4 = QVariant(), const QVariant &arg5 = QVariant(), const QVariant &arg6 = QVariant(), const QVariant &arg7 = QVariant(), const QVariant &arg8 = QVariant()); QDBusPendingCall asyncCallWithArgumentList(const QString &method, const QList &args); protected: QDBusAbstractInterface(const QString &service, const QString &path, const char *interface, const QDBusConnection &connection, QObject *parent /TransferThis/); virtual void connectNotify(const QMetaMethod &signal); virtual void disconnectNotify(const QMetaMethod &signal); }; %ModuleHeaderCode #include "qpydbus_api.h" // Imports from QtCore. typedef PyObject *(*pyqt5_qtdbus_from_qvariant_by_type_t)(QVariant &, PyObject *); extern pyqt5_qtdbus_from_qvariant_by_type_t pyqt5_qtdbus_from_qvariant_by_type; typedef sipErrorState (*pyqt5_qtdbus_get_pyqtslot_parts_t)(PyObject *, QObject **, QByteArray &); extern pyqt5_qtdbus_get_pyqtslot_parts_t pyqt5_qtdbus_get_pyqtslot_parts; %End %ModuleCode // Imports from QtCore. pyqt5_qtdbus_from_qvariant_by_type_t pyqt5_qtdbus_from_qvariant_by_type; pyqt5_qtdbus_get_pyqtslot_parts_t pyqt5_qtdbus_get_pyqtslot_parts; %End %PostInitialisationCode qpydbus_post_init(); // Imports from QtCore. pyqt5_qtdbus_from_qvariant_by_type = (pyqt5_qtdbus_from_qvariant_by_type_t)sipImportSymbol("pyqt5_from_qvariant_by_type"); Q_ASSERT(pyqt5_qtdbus_from_qvariant_by_type); pyqt5_qtdbus_get_pyqtslot_parts = (pyqt5_qtdbus_get_pyqtslot_parts_t)sipImportSymbol("pyqt5_get_pyqtslot_parts"); Q_ASSERT(pyqt5_qtdbus_get_pyqtslot_parts); %End PyQt5_gpl-5.10.1/sip/QtDBus/qdbusargument.sip0000644000076500000240000001167413245233150021043 0ustar philstaff00000000000000// qdbusargument.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusArgument { %TypeHeaderCode #include %End %TypeCode #include static PyObject *qdbusargument_add(QDBusArgument *arg, PyObject *obj, int mtype) { int iserr = 0; if (PyLong_CheckExact(obj) #if PY_MAJOR_VERSION < 3 || PyInt_CheckExact(obj) #endif ) { if (mtype == QMetaType::UChar || mtype == QMetaType::UShort || mtype == QMetaType::UInt || mtype == QMetaType::ULongLong) { // Handle the unsigned values. #if defined(HAVE_LONG_LONG) unsigned PY_LONG_LONG v = PyLong_AsUnsignedLongLongMask(obj); #else unsigned long v = PyLong_AsUnsignedLongMask(obj); #endif switch (mtype) { case QMetaType::UChar: *arg << (uchar)v; break; case QMetaType::UShort: *arg << (ushort)v; break; case QMetaType::UInt: *arg << (uint)v; break; case QMetaType::ULongLong: *arg << (qulonglong)v; break; } } else if (mtype == QMetaType::Short || mtype == QMetaType::Int || mtype == QMetaType::LongLong) { // Handle the signed values. #if defined(HAVE_LONG_LONG) PY_LONG_LONG v = PyLong_AsLongLong(obj); #else long v = PyLong_AsLong(obj); #endif switch (mtype) { case QMetaType::Short: *arg << (short)v; break; case QMetaType::Int: *arg << (int)v; break; case QMetaType::LongLong: *arg << (qlonglong)v; break; } } else { PyErr_Format(PyExc_ValueError, "%d is an invalid QMetaType::Type for an interger object", mtype); iserr = 1; } } else if (mtype == QMetaType::QStringList) { // A QStringList has to be handled explicitly to prevent it being seen // as a vialiant list. int value_state; QStringList *qsl = reinterpret_cast( sipForceConvertToType(obj, sipType_QStringList, 0, SIP_NOT_NONE, &value_state, &iserr)); if (!iserr) { arg->beginArray(QMetaType::QString); for (int i = 0; i < qsl->count(); ++i) *arg << qsl->at(i); arg->endArray(); sipReleaseType(qsl, sipType_QStringList, value_state); } } else { int value_state; QVariant *qv = reinterpret_cast( sipForceConvertToType(obj, sipType_QVariant, 0, SIP_NOT_NONE, &value_state, &iserr)); if (!iserr) { // This is an internal method. If it proves to be a problem then we // will have to handle each type explicitly. arg->appendVariant(*qv); sipReleaseType(qv, sipType_QVariant, value_state); } } if (iserr) return 0; Py_INCREF(Py_None); return Py_None; } %End public: QDBusArgument(); QDBusArgument(const QDBusArgument &other); QDBusArgument(SIP_PYOBJECT arg, int id = QMetaType::Int); %MethodCode sipCpp = new QDBusArgument(); PyObject *res = qdbusargument_add(sipCpp, a0, a1); if (res) { Py_DECREF(res); } else { delete sipCpp; sipCpp = 0; } %End ~QDBusArgument(); SIP_PYOBJECT add(SIP_PYOBJECT arg, int id = QMetaType::Int) /TypeHint=""/; %MethodCode sipRes = qdbusargument_add(sipCpp, a0, a1); %End void beginStructure(); void endStructure(); void beginArray(int id); void endArray(); void beginMap(int kid, int vid); void endMap(); void beginMapEntry(); void endMapEntry(); %If (Qt_5_6_0 -) void swap(QDBusArgument &other /Constrained/); %End }; PyQt5_gpl-5.10.1/sip/QtDBus/qdbusconnection.sip0000644000076500000240000002231113245233150021346 0ustar philstaff00000000000000// qdbusconnection.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QDBus { %TypeHeaderCode #include %End enum CallMode { NoBlock, Block, BlockWithGui, AutoDetect, }; }; class QDBusConnection { %TypeHeaderCode #include %End public: enum BusType { SessionBus, SystemBus, ActivationBus, }; enum RegisterOption { ExportAdaptors, ExportScriptableSlots, ExportScriptableSignals, ExportScriptableProperties, ExportScriptableInvokables, ExportScriptableContents, ExportNonScriptableSlots, ExportNonScriptableSignals, ExportNonScriptableProperties, ExportNonScriptableInvokables, ExportNonScriptableContents, ExportAllSlots, ExportAllSignals, ExportAllProperties, ExportAllInvokables, ExportAllContents, ExportAllSignal, ExportChildObjects, }; enum UnregisterMode { UnregisterNode, UnregisterTree, }; typedef QFlags RegisterOptions; enum ConnectionCapability { UnixFileDescriptorPassing, }; typedef QFlags ConnectionCapabilities; explicit QDBusConnection(const QString &name); QDBusConnection(const QDBusConnection &other); ~QDBusConnection(); bool isConnected() const; QString baseService() const; QDBusError lastError() const; QString name() const; QDBusConnection::ConnectionCapabilities connectionCapabilities() const; bool send(const QDBusMessage &message) const; bool callWithCallback(const QDBusMessage &message, SIP_PYOBJECT returnMethod /TypeHint="PYQT_SLOT"/, SIP_PYOBJECT errorMethod /TypeHint="PYQT_SLOT"/, int timeout = -1) const; %MethodCode QObject *receiver; QByteArray return_slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a1, &receiver, return_slot)) == sipErrorNone) { QObject *error_receiver; QByteArray error_slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a2, &error_receiver, error_slot)) == sipErrorNone) { if (receiver == error_receiver) { sipRes = sipCpp->callWithCallback(*a0, receiver, return_slot.constData(), error_slot.constData(), a3); } else { PyErr_SetString(PyExc_ValueError, "the return and error methods must be bound to the same QObject instance"); sipError = sipErrorFail; } } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End QDBusMessage call(const QDBusMessage &message, QDBus::CallMode mode = QDBus::Block, int timeout = -1) const /ReleaseGIL/; QDBusPendingCall asyncCall(const QDBusMessage &message, int timeout = -1) const; bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a4, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->connect(*a0, *a1, *a2, *a3, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(4, a4); } %End bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a5, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->connect(*a0, *a1, *a2, *a3, *a4, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(5, a5); } %End bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a6, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->connect(*a0, *a1, *a2, *a3, *a4, *a5, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(6, a6); } %End bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a4, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->disconnect(*a0, *a1, *a2, *a3, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(4, a4); } %End bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a5, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->disconnect(*a0, *a1, *a2, *a3, *a4, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(5, a5); } %End bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtdbus_get_pyqtslot_parts(a6, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->disconnect(*a0, *a1, *a2, *a3, *a4, *a5, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(6, a6); } %End bool registerObject(const QString &path, QObject *object, QDBusConnection::RegisterOptions options = QDBusConnection::ExportAdaptors); %If (Qt_5_5_0 -) bool registerObject(const QString &path, const QString &interface, QObject *object, QDBusConnection::RegisterOptions options = QDBusConnection::ExportAdaptors); %End void unregisterObject(const QString &path, QDBusConnection::UnregisterMode mode = QDBusConnection::UnregisterNode); QObject *objectRegisteredAt(const QString &path) const; bool registerService(const QString &serviceName); bool unregisterService(const QString &serviceName); QDBusConnectionInterface *interface() const; static QDBusConnection connectToBus(QDBusConnection::BusType type, const QString &name) /ReleaseGIL/; static QDBusConnection connectToBus(const QString &address, const QString &name) /ReleaseGIL/; static QDBusConnection connectToPeer(const QString &address, const QString &name) /ReleaseGIL/; static void disconnectFromBus(const QString &name) /ReleaseGIL/; static void disconnectFromPeer(const QString &name) /ReleaseGIL/; static QByteArray localMachineId(); static QDBusConnection sessionBus(); static QDBusConnection systemBus(); static QDBusConnection sender(); %If (Qt_5_6_0 -) void swap(QDBusConnection &other /Constrained/); %End }; QFlags operator|(QDBusConnection::RegisterOption f1, QFlags f2); QFlags operator|(QDBusConnection::RegisterOption f1, QDBusConnection::RegisterOption f2); %If (Qt_5_6_0 -) QFlags operator|(QDBusConnection::ConnectionCapability f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtDBus/qdbusconnectioninterface.sip0000644000076500000240000000536113245233150023235 0ustar philstaff00000000000000// qdbusconnectioninterface.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusConnectionInterface : QDBusAbstractInterface { %TypeHeaderCode #include %End QDBusConnectionInterface(const QDBusConnection &connection, QObject *parent /TransferThis/); virtual ~QDBusConnectionInterface(); public: enum ServiceQueueOptions { DontQueueService, QueueService, ReplaceExistingService, }; enum ServiceReplacementOptions { DontAllowReplacement, AllowReplacement, }; enum RegisterServiceReply { ServiceNotRegistered, ServiceRegistered, ServiceQueued, }; QDBusReply registeredServiceNames() const /ReleaseGIL/; QDBusReply isServiceRegistered(const QString &serviceName) const /ReleaseGIL/; QDBusReply serviceOwner(const QString &name) const /ReleaseGIL/; QDBusReply unregisterService(const QString &serviceName) /ReleaseGIL/; QDBusReply registerService(const QString &serviceName, QDBusConnectionInterface::ServiceQueueOptions qoption = QDBusConnectionInterface::DontQueueService, QDBusConnectionInterface::ServiceReplacementOptions roption = QDBusConnectionInterface::DontAllowReplacement) /ReleaseGIL/; QDBusReply servicePid(const QString &serviceName) const /ReleaseGIL/; QDBusReply serviceUid(const QString &serviceName) const /ReleaseGIL/; QDBusReply startService(const QString &name) /ReleaseGIL/; signals: void serviceRegistered(const QString &service); void serviceUnregistered(const QString &service); void callWithCallbackFailed(const QDBusError &error, const QDBusMessage &call); protected: virtual void connectNotify(const QMetaMethod &); virtual void disconnectNotify(const QMetaMethod &); }; PyQt5_gpl-5.10.1/sip/QtDBus/qdbuserror.sip0000644000076500000240000000364313245233150020347 0ustar philstaff00000000000000// qdbuserror.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusError { %TypeHeaderCode #include %End public: enum ErrorType { NoError, Other, Failed, NoMemory, ServiceUnknown, NoReply, BadAddress, NotSupported, LimitsExceeded, AccessDenied, NoServer, Timeout, NoNetwork, AddressInUse, Disconnected, InvalidArgs, UnknownMethod, TimedOut, InvalidSignature, UnknownInterface, InternalError, UnknownObject, InvalidService, InvalidObjectPath, InvalidInterface, InvalidMember, UnknownProperty, PropertyReadOnly, }; QDBusError(const QDBusError &other); QDBusError::ErrorType type() const; QString name() const; QString message() const; bool isValid() const; static QString errorString(QDBusError::ErrorType error); %If (Qt_5_6_0 -) void swap(QDBusError &other /Constrained/); %End }; PyQt5_gpl-5.10.1/sip/QtDBus/qdbusextratypes.sip0000644000076500000240000000500313245233150021416 0ustar philstaff00000000000000// qdbusextratypes.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusObjectPath { %TypeHeaderCode #include %End public: QDBusObjectPath(); explicit QDBusObjectPath(const QString &objectPath); QString path() const; void setPath(const QString &objectPath); long __hash__() const; %MethodCode sipRes = qHash(*sipCpp, 0); %End %If (Qt_5_6_0 -) void swap(QDBusObjectPath &other /Constrained/); %End }; bool operator==(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs); bool operator!=(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs); bool operator<(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs); class QDBusSignature { %TypeHeaderCode #include %End public: QDBusSignature(); explicit QDBusSignature(const QString &dBusSignature); QString signature() const; void setSignature(const QString &dBusSignature); long __hash__() const; %MethodCode sipRes = qHash(*sipCpp, 0); %End %If (Qt_5_6_0 -) void swap(QDBusSignature &other /Constrained/); %End }; bool operator==(const QDBusSignature &lhs, const QDBusSignature &rhs); bool operator!=(const QDBusSignature &lhs, const QDBusSignature &rhs); bool operator<(const QDBusSignature &lhs, const QDBusSignature &rhs); class QDBusVariant { %TypeHeaderCode #include %End public: QDBusVariant(); explicit QDBusVariant(const QVariant &dBusVariant); QVariant variant() const; void setVariant(const QVariant &dBusVariant); %If (Qt_5_6_0 -) void swap(QDBusVariant &other /Constrained/); %End }; bool operator==(const QDBusVariant &v1, const QDBusVariant &v2); PyQt5_gpl-5.10.1/sip/QtDBus/qdbusinterface.sip0000644000076500000240000000242313245233150021151 0ustar philstaff00000000000000// qdbusinterface.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusInterface : QDBusAbstractInterface { %TypeHeaderCode #include %End public: QDBusInterface(const QString &service, const QString &path, const QString &interface = QString(), const QDBusConnection &connection = QDBusConnection::sessionBus(), QObject *parent /TransferThis/ = 0); virtual ~QDBusInterface(); }; PyQt5_gpl-5.10.1/sip/QtDBus/qdbusmessage.sip0000644000076500000240000000560413245233150020641 0ustar philstaff00000000000000// qdbusmessage.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusMessage { %TypeHeaderCode #include %End public: enum MessageType { InvalidMessage, MethodCallMessage, ReplyMessage, ErrorMessage, SignalMessage, }; QDBusMessage(); QDBusMessage(const QDBusMessage &other); ~QDBusMessage(); static QDBusMessage createSignal(const QString &path, const QString &interface, const QString &name); static QDBusMessage createMethodCall(const QString &service, const QString &path, const QString &interface, const QString &method); static QDBusMessage createError(const QString &name, const QString &msg); static QDBusMessage createError(const QDBusError &error); static QDBusMessage createError(QDBusError::ErrorType type, const QString &msg); QDBusMessage createReply(const QList &arguments = QList()) const; QDBusMessage createReply(const QVariant &argument) const; QDBusMessage createErrorReply(const QString name, const QString &msg) const; QDBusMessage createErrorReply(const QDBusError &error) const; QDBusMessage createErrorReply(QDBusError::ErrorType type, const QString &msg) const; QString service() const; QString path() const; QString interface() const; QString member() const; QString errorName() const; QString errorMessage() const; QDBusMessage::MessageType type() const; QString signature() const; bool isReplyRequired() const; void setDelayedReply(bool enable) const; bool isDelayedReply() const; void setAutoStartService(bool enable); bool autoStartService() const; void setArguments(const QList &arguments); QList arguments() const; QDBusMessage &operator<<(const QVariant &arg); %If (Qt_5_6_0 -) void swap(QDBusMessage &other /Constrained/); %End %If (Qt_5_6_0 -) static QDBusMessage createTargetedSignal(const QString &service, const QString &path, const QString &interface, const QString &name); %End }; PyQt5_gpl-5.10.1/sip/QtDBus/qdbuspendingcall.sip0000644000076500000240000000346213245233150021475 0ustar philstaff00000000000000// qdbuspendingcall.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusPendingCall { %TypeHeaderCode #include %End public: QDBusPendingCall(const QDBusPendingCall &other); ~QDBusPendingCall(); static QDBusPendingCall fromError(const QDBusError &error); static QDBusPendingCall fromCompletedCall(const QDBusMessage &message); void swap(QDBusPendingCall &other /Constrained/); private: QDBusPendingCall(); }; class QDBusPendingCallWatcher : QObject, QDBusPendingCall { %TypeHeaderCode #include %End public: QDBusPendingCallWatcher(const QDBusPendingCall &call, QObject *parent /TransferThis/ = 0); virtual ~QDBusPendingCallWatcher(); bool isFinished() const; void waitForFinished() /ReleaseGIL/; signals: %If (- Qt_5_6_0) void finished(QDBusPendingCallWatcher *watcher); %End %If (Qt_5_6_0 -) void finished(QDBusPendingCallWatcher *watcher = 0); %End }; PyQt5_gpl-5.10.1/sip/QtDBus/qdbusservicewatcher.sip0000644000076500000240000000476213245233150022237 0ustar philstaff00000000000000// qdbusservicewatcher.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusServiceWatcher : QObject { %TypeHeaderCode #include %End public: enum WatchModeFlag { WatchForRegistration, WatchForUnregistration, WatchForOwnerChange, }; typedef QFlags WatchMode; explicit QDBusServiceWatcher(QObject *parent /TransferThis/ = 0); QDBusServiceWatcher(const QString &service, const QDBusConnection &connection, QDBusServiceWatcher::WatchMode watchMode = QDBusServiceWatcher::WatchForOwnerChange, QObject *parent /TransferThis/ = 0); virtual ~QDBusServiceWatcher(); QStringList watchedServices() const; void setWatchedServices(const QStringList &services); void addWatchedService(const QString &newService); bool removeWatchedService(const QString &service); QDBusServiceWatcher::WatchMode watchMode() const; void setWatchMode(QDBusServiceWatcher::WatchMode mode); QDBusConnection connection() const; void setConnection(const QDBusConnection &connection); signals: void serviceRegistered(const QString &service); void serviceUnregistered(const QString &service); void serviceOwnerChanged(const QString &service, const QString &oldOwner, const QString &newOwner); private: QDBusServiceWatcher(const QDBusServiceWatcher &); }; QFlags operator|(QDBusServiceWatcher::WatchModeFlag f1, QFlags f2); QFlags operator|(QDBusServiceWatcher::WatchModeFlag f1, QDBusServiceWatcher::WatchModeFlag f2); PyQt5_gpl-5.10.1/sip/QtDBus/qdbusunixfiledescriptor.sip0000644000076500000240000000265213245233150023137 0ustar philstaff00000000000000// qdbusunixfiledescriptor.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusUnixFileDescriptor { %TypeHeaderCode #include %End public: QDBusUnixFileDescriptor(); explicit QDBusUnixFileDescriptor(int fileDescriptor); QDBusUnixFileDescriptor(const QDBusUnixFileDescriptor &other); ~QDBusUnixFileDescriptor(); bool isValid() const; int fileDescriptor() const; void setFileDescriptor(int fileDescriptor); static bool isSupported(); void swap(QDBusUnixFileDescriptor &other /Constrained/); }; PyQt5_gpl-5.10.1/sip/QtDBus/qpydbuspendingreply.sip0000644000076500000240000000331313245233150022261 0ustar philstaff00000000000000// This is the SIP specification of the QPyDBusPendingReply class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDBusPendingReply : QDBusPendingCall /PyName=QDBusPendingReply/ { %TypeHeaderCode #include %End public: QPyDBusPendingReply(); QPyDBusPendingReply(const QPyDBusPendingReply &other); QPyDBusPendingReply(const QDBusPendingCall &call); QPyDBusPendingReply(const QDBusMessage &reply); // The /ReleaseGIL/ annotation is needed because QDBusPendingCall has an // internal mutex. QVariant argumentAt(int index) const /ReleaseGIL/; QDBusError error() const /ReleaseGIL/; bool isError() const /ReleaseGIL/; bool isFinished() const /ReleaseGIL/; bool isValid() const /ReleaseGIL/; QDBusMessage reply() const /ReleaseGIL/; void waitForFinished() /ReleaseGIL/; SIP_PYOBJECT value(SIP_PYOBJECT type /TypeHintValue="None"/ = 0) const /HoldGIL/; }; PyQt5_gpl-5.10.1/sip/QtDBus/qpydbusreply.sip0000644000076500000240000001225313245233150020717 0ustar philstaff00000000000000// This is the SIP specification of the QPyDBusReply class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDBusReply /PyName=QDBusReply/ { %TypeHeaderCode #include %End public: QPyDBusReply(const QDBusMessage &reply) /HoldGIL/; QPyDBusReply(const QDBusPendingCall &call) /HoldGIL/; QPyDBusReply(const QDBusError &error); QPyDBusReply(const QPyDBusReply &other) /HoldGIL/; ~QPyDBusReply() /HoldGIL/; const QDBusError &error() const /HoldGIL/; bool isValid() const /HoldGIL/; SIP_PYOBJECT value(SIP_PYOBJECT type /TypeHintValue="None"/ = 0) const /HoldGIL/; }; template %MappedType QDBusReply /TypeHint="QDBusReply"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *value_obj; if (sipCpp->isValid()) { // Convert the value to a Python object. TYPE *value = new TYPE(sipCpp->value()); if ((value_obj = sipConvertFromNewType(value, sipType_TYPE, NULL)) == NULL) { delete value; return NULL; } } else { value_obj = 0; } QPyDBusReply *reply = new QPyDBusReply(value_obj, sipCpp->isValid(), sipCpp->error()); PyObject *reply_obj = sipConvertFromNewType(reply, sipType_QPyDBusReply, sipTransferObj); if (reply_obj == NULL) { delete reply; return NULL; } return reply_obj; %End %ConvertToTypeCode // We never create a QDBusReply from Python. return 0; %End }; %MappedType QDBusReply /TypeHint="QDBusReply"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode Py_INCREF(Py_None); QPyDBusReply *reply = new QPyDBusReply(Py_None, sipCpp->isValid(), sipCpp->error()); PyObject *reply_obj = sipConvertFromNewType(reply, sipType_QPyDBusReply, sipTransferObj); if (reply_obj == NULL) { delete reply; return NULL; } return reply_obj; %End %ConvertToTypeCode // We never create a QDBusReply from Python. return 0; %End }; %MappedType QDBusReply /TypeHint="QDBusReply"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *value_obj; if (sipCpp->isValid()) { if ((value_obj = PyBool_FromLong(sipCpp->value())) == NULL) return NULL; } else { value_obj = 0; } QPyDBusReply *reply = new QPyDBusReply(value_obj, sipCpp->isValid(), sipCpp->error()); PyObject *reply_obj = sipConvertFromNewType(reply, sipType_QPyDBusReply, sipTransferObj); if (reply_obj == NULL) { delete reply; return NULL; } return reply_obj; %End %ConvertToTypeCode // We never create a QDBusReply from Python. return 0; %End }; %MappedType QDBusReply /TypeHint="QDBusReply"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *value_obj; if (sipCpp->isValid()) { if ((value_obj = PyLong_FromUnsignedLong(sipCpp->value())) == NULL) return NULL; } else { value_obj = 0; } QPyDBusReply *reply = new QPyDBusReply(value_obj, sipCpp->isValid(), sipCpp->error()); PyObject *reply_obj = sipConvertFromNewType(reply, sipType_QPyDBusReply, sipTransferObj); if (reply_obj == NULL) { delete reply; return NULL; } return reply_obj; %End %ConvertToTypeCode // We never create a QDBusReply from Python. return 0; %End }; %MappedType QDBusReply /TypeHint="QDBusReply"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *value_obj; if (sipCpp->isValid()) { if ((value_obj = sipConvertFromEnum(sipCpp->value(), sipType_QDBusConnectionInterface_RegisterServiceReply)) == NULL) return NULL; } else { value_obj = 0; } QPyDBusReply *reply = new QPyDBusReply(value_obj, sipCpp->isValid(), sipCpp->error()); PyObject *reply_obj = sipConvertFromNewType(reply, sipType_QPyDBusReply, sipTransferObj); if (reply_obj == NULL) { delete reply; return NULL; } return reply_obj; %End %ConvertToTypeCode // We never create a QDBusReply from Python. return 0; %End }; PyQt5_gpl-5.10.1/sip/QtDBus/QtDBusmod.sip0000644000076500000240000000443613245233150020022 0ustar philstaff00000000000000// QtDBusmod.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtDBus, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qdbusabstractadaptor.sip %Include qdbusabstractinterface.sip %Include qdbusargument.sip %Include qdbusconnection.sip %Include qdbusconnectioninterface.sip %Include qdbuserror.sip %Include qdbusextratypes.sip %Include qdbusinterface.sip %Include qdbusmessage.sip %Include qdbuspendingcall.sip %Include qdbusservicewatcher.sip %Include qdbusunixfiledescriptor.sip %Include qpydbuspendingreply.sip %Include qpydbusreply.sip PyQt5_gpl-5.10.1/sip/QtDesigner/0000755000076500000240000000000013245233150016337 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtDesigner/abstractactioneditor.sip0000644000076500000240000000272413245233150023271 0ustar philstaff00000000000000// abstractactioneditor.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerActionEditorInterface : QWidget { %TypeHeaderCode #include %End public: QDesignerActionEditorInterface(QWidget *parent /TransferThis/, Qt::WindowFlags flags = 0); virtual ~QDesignerActionEditorInterface(); virtual QDesignerFormEditorInterface *core() const; virtual void manageAction(QAction *action) = 0; virtual void unmanageAction(QAction *action) = 0; public slots: virtual void setFormWindow(QDesignerFormWindowInterface *formWindow /KeepReference/) = 0; }; PyQt5_gpl-5.10.1/sip/QtDesigner/abstractformbuilder.sip0000644000076500000240000000266613245233150023124 0ustar philstaff00000000000000// abstractformbuilder.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractFormBuilder { %TypeHeaderCode #include %End public: QAbstractFormBuilder(); virtual ~QAbstractFormBuilder(); virtual QWidget *load(QIODevice *device, QWidget *parent /TransferThis/ = 0) /Factory/; virtual void save(QIODevice *dev, QWidget *widget); void setWorkingDirectory(const QDir &directory); QDir workingDirectory() const; QString errorString() const; private: QAbstractFormBuilder(const QAbstractFormBuilder &other); }; PyQt5_gpl-5.10.1/sip/QtDesigner/abstractformeditor.sip0000644000076500000240000000413413245233150022754 0ustar philstaff00000000000000// abstractformeditor.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerFormEditorInterface : QObject { %TypeHeaderCode #include %End public: %If (Qt_5_6_1 -) explicit QDesignerFormEditorInterface(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QDesignerFormEditorInterface(QObject *parent /TransferThis/ = 0); %End virtual ~QDesignerFormEditorInterface(); QExtensionManager *extensionManager() const; QWidget *topLevel() const; QDesignerWidgetBoxInterface *widgetBox() const; QDesignerPropertyEditorInterface *propertyEditor() const; QDesignerObjectInspectorInterface *objectInspector() const; QDesignerFormWindowManagerInterface *formWindowManager() const; QDesignerActionEditorInterface *actionEditor() const; void setWidgetBox(QDesignerWidgetBoxInterface *widgetBox /KeepReference/); void setPropertyEditor(QDesignerPropertyEditorInterface *propertyEditor /KeepReference/); void setObjectInspector(QDesignerObjectInspectorInterface *objectInspector /KeepReference/); void setActionEditor(QDesignerActionEditorInterface *actionEditor /KeepReference/); private: QDesignerFormEditorInterface(const QDesignerFormEditorInterface &other); }; PyQt5_gpl-5.10.1/sip/QtDesigner/abstractformwindow.sip0000644000076500000240000001113513245233150022774 0ustar philstaff00000000000000// abstractformwindow.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerFormWindowInterface : QWidget /Abstract/ { %TypeHeaderCode #include %End public: enum FeatureFlag { EditFeature, GridFeature, TabOrderFeature, DefaultFeature, }; typedef QFlags Feature; QDesignerFormWindowInterface(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QDesignerFormWindowInterface(); virtual QString fileName() const = 0; virtual QDir absoluteDir() const = 0; virtual QString contents() const = 0; virtual bool setContents(QIODevice *dev, QString *errorMessage = 0) = 0; virtual QDesignerFormWindowInterface::Feature features() const = 0; virtual bool hasFeature(QDesignerFormWindowInterface::Feature f) const = 0; virtual QString author() const = 0; virtual void setAuthor(const QString &author) = 0; virtual QString comment() const = 0; virtual void setComment(const QString &comment) = 0; virtual void layoutDefault(int *margin, int *spacing) = 0; virtual void setLayoutDefault(int margin, int spacing) = 0; virtual void layoutFunction(QString *margin /Out/, QString *spacing /Out/) = 0; virtual void setLayoutFunction(const QString &margin, const QString &spacing) = 0; virtual QString pixmapFunction() const = 0; virtual void setPixmapFunction(const QString &pixmapFunction) = 0; virtual QString exportMacro() const = 0; virtual void setExportMacro(const QString &exportMacro) = 0; virtual QStringList includeHints() const = 0; virtual void setIncludeHints(const QStringList &includeHints) = 0; virtual QDesignerFormEditorInterface *core() const; virtual QDesignerFormWindowCursorInterface *cursor() const = 0; virtual QPoint grid() const = 0; virtual QWidget *mainContainer() const = 0; virtual void setMainContainer(QWidget *mainContainer /KeepReference/) = 0; virtual bool isManaged(QWidget *widget) const = 0; virtual bool isDirty() const = 0; static QDesignerFormWindowInterface *findFormWindow(QWidget *w); static QDesignerFormWindowInterface *findFormWindow(QObject *obj); virtual void emitSelectionChanged() = 0; virtual QStringList resourceFiles() const = 0; virtual void addResourceFile(const QString &path) = 0; virtual void removeResourceFile(const QString &path) = 0; public slots: virtual void manageWidget(QWidget *widget) = 0; virtual void unmanageWidget(QWidget *widget) = 0; virtual void setFeatures(QDesignerFormWindowInterface::Feature f) = 0; virtual void setDirty(bool dirty) = 0; virtual void clearSelection(bool update = true) = 0; virtual void selectWidget(QWidget *widget, bool select = true) = 0; virtual void setGrid(const QPoint &grid) = 0; virtual void setFileName(const QString &fileName) = 0; virtual bool setContents(const QString &contents) = 0; signals: void mainContainerChanged(QWidget *mainContainer); void fileNameChanged(const QString &fileName); void featureChanged(QDesignerFormWindowInterface::Feature f); void selectionChanged(); void geometryChanged(); void resourceFilesChanged(); void widgetManaged(QWidget *widget); void widgetUnmanaged(QWidget *widget); void aboutToUnmanageWidget(QWidget *widget); void activated(QWidget *widget); void changed(); void widgetRemoved(QWidget *w); void objectRemoved(QObject *o); public: virtual QStringList checkContents() const = 0; QStringList activeResourceFilePaths() const; virtual QWidget *formContainer() const = 0; void activateResourceFilePaths(const QStringList &paths, int *errorCount = 0, QString *errorMessages /Out/ = 0); }; PyQt5_gpl-5.10.1/sip/QtDesigner/abstractformwindowcursor.sip0000644000076500000240000000453413245233150024237 0ustar philstaff00000000000000// abstractformwindowcursor.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerFormWindowCursorInterface { %TypeHeaderCode #include %End public: enum MoveOperation { NoMove, Start, End, Next, Prev, Left, Right, Up, Down, }; enum MoveMode { MoveAnchor, KeepAnchor, }; virtual ~QDesignerFormWindowCursorInterface(); virtual QDesignerFormWindowInterface *formWindow() const = 0; virtual bool movePosition(QDesignerFormWindowCursorInterface::MoveOperation op, QDesignerFormWindowCursorInterface::MoveMode mode = QDesignerFormWindowCursorInterface::MoveAnchor) = 0; virtual int position() const = 0; virtual void setPosition(int pos, QDesignerFormWindowCursorInterface::MoveMode mode = QDesignerFormWindowCursorInterface::MoveAnchor) = 0; virtual QWidget *current() const = 0; virtual int widgetCount() const = 0; virtual QWidget *widget(int index) const = 0; virtual bool hasSelection() const = 0; virtual int selectedWidgetCount() const = 0; virtual QWidget *selectedWidget(int index) const = 0; virtual void setProperty(const QString &name, const QVariant &value) = 0; virtual void setWidgetProperty(QWidget *widget, const QString &name, const QVariant &value) = 0; virtual void resetWidgetProperty(QWidget *widget, const QString &name) = 0; bool isWidgetSelected(QWidget *widget) const; }; PyQt5_gpl-5.10.1/sip/QtDesigner/abstractformwindowmanager.sip0000644000076500000240000000630613245233150024333 0ustar philstaff00000000000000// abstractformwindowmanager.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerFormWindowManagerInterface : QObject /Abstract/ { %TypeHeaderCode #include %End public: explicit QDesignerFormWindowManagerInterface(QObject *parent /TransferThis/ = 0); virtual ~QDesignerFormWindowManagerInterface(); QAction *actionFormLayout() const /Transfer/; QAction *actionSimplifyLayout() const /Transfer/; virtual QDesignerFormWindowInterface *activeFormWindow() const = 0; virtual int formWindowCount() const = 0; virtual QDesignerFormWindowInterface *formWindow(int index) const = 0 /Transfer/; virtual QDesignerFormWindowInterface *createFormWindow(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0) = 0; virtual QDesignerFormEditorInterface *core() const = 0; signals: void formWindowAdded(QDesignerFormWindowInterface *formWindow); void formWindowRemoved(QDesignerFormWindowInterface *formWindow); void activeFormWindowChanged(QDesignerFormWindowInterface *formWindow); void formWindowSettingsChanged(QDesignerFormWindowInterface *fw); public slots: virtual void addFormWindow(QDesignerFormWindowInterface *formWindow) = 0; virtual void removeFormWindow(QDesignerFormWindowInterface *formWindow) = 0; virtual void setActiveFormWindow(QDesignerFormWindowInterface *formWindow) = 0; public: enum Action { CutAction, CopyAction, PasteAction, DeleteAction, SelectAllAction, LowerAction, RaiseAction, UndoAction, RedoAction, HorizontalLayoutAction, VerticalLayoutAction, SplitHorizontalAction, SplitVerticalAction, GridLayoutAction, FormLayoutAction, BreakLayoutAction, AdjustSizeAction, SimplifyLayoutAction, DefaultPreviewAction, FormWindowSettingsDialogAction, }; enum ActionGroup { StyledPreviewActionGroup, }; virtual QAction *action(QDesignerFormWindowManagerInterface::Action action) const = 0 /Transfer/; virtual QActionGroup *actionGroup(QDesignerFormWindowManagerInterface::ActionGroup actionGroup) const = 0 /Transfer/; public slots: virtual void showPreview() = 0; virtual void closeAllPreviews() = 0; virtual void showPluginDialog() = 0; }; PyQt5_gpl-5.10.1/sip/QtDesigner/abstractobjectinspector.sip0000644000076500000240000000257113245233150024002 0ustar philstaff00000000000000// abstractobjectinspector.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerObjectInspectorInterface : QWidget { %TypeHeaderCode #include %End public: QDesignerObjectInspectorInterface(QWidget *parent /TransferThis/, Qt::WindowFlags flags = 0); virtual ~QDesignerObjectInspectorInterface(); virtual QDesignerFormEditorInterface *core() const; public slots: virtual void setFormWindow(QDesignerFormWindowInterface *formWindow /KeepReference/) = 0; }; PyQt5_gpl-5.10.1/sip/QtDesigner/abstractpropertyeditor.sip0000644000076500000240000000330713245233150023676 0ustar philstaff00000000000000// abstractpropertyeditor.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerPropertyEditorInterface : QWidget { %TypeHeaderCode #include %End public: QDesignerPropertyEditorInterface(QWidget *parent /TransferThis/, Qt::WindowFlags flags = 0); virtual ~QDesignerPropertyEditorInterface(); virtual QDesignerFormEditorInterface *core() const; virtual bool isReadOnly() const = 0; virtual QObject *object() const = 0; virtual QString currentPropertyName() const = 0; signals: void propertyChanged(const QString &name, const QVariant &value); public slots: virtual void setObject(QObject *object /KeepReference/) = 0; virtual void setPropertyValue(const QString &name, const QVariant &value, bool changed = true) = 0; virtual void setReadOnly(bool readOnly) = 0; }; PyQt5_gpl-5.10.1/sip/QtDesigner/abstractwidgetbox.sip0000644000076500000240000000254513245233150022602 0ustar philstaff00000000000000// abstractwidgetbox.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerWidgetBoxInterface : QWidget /Abstract/ { %TypeHeaderCode #include %End public: QDesignerWidgetBoxInterface(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = 0); virtual ~QDesignerWidgetBoxInterface(); virtual void setFileName(const QString &file_name) = 0; virtual QString fileName() const = 0; virtual bool load() = 0; virtual bool save() = 0; }; PyQt5_gpl-5.10.1/sip/QtDesigner/container.sip0000644000076500000240000000274613245233150021047 0ustar philstaff00000000000000// container.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerContainerExtension { %TypeHeaderCode #include %End public: virtual ~QDesignerContainerExtension(); virtual int count() const = 0 /__len__/; virtual QWidget *widget(int index) const = 0; virtual int currentIndex() const = 0; virtual void setCurrentIndex(int index) = 0; virtual void addWidget(QWidget *widget) = 0; virtual void insertWidget(int index, QWidget *widget) = 0; virtual void remove(int index) = 0; virtual bool canAddWidget() const; virtual bool canRemove(int index) const; }; PyQt5_gpl-5.10.1/sip/QtDesigner/customwidget.sip0000644000076500000240000000353413245233150021577 0ustar philstaff00000000000000// customwidget.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerCustomWidgetInterface { %TypeHeaderCode #include %End public: virtual ~QDesignerCustomWidgetInterface(); virtual QString name() const = 0; virtual QString group() const = 0; virtual QString toolTip() const = 0; virtual QString whatsThis() const = 0; virtual QString includeFile() const = 0; virtual QIcon icon() const = 0; virtual bool isContainer() const = 0; virtual QWidget *createWidget(QWidget *parent /TransferThis/) = 0 /Factory/; virtual bool isInitialized() const; virtual void initialize(QDesignerFormEditorInterface *core); virtual QString domXml() const; virtual QString codeTemplate() const; }; class QDesignerCustomWidgetCollectionInterface { %TypeHeaderCode #include %End public: virtual ~QDesignerCustomWidgetCollectionInterface(); virtual QList customWidgets() const = 0; }; PyQt5_gpl-5.10.1/sip/QtDesigner/default_extensionfactory.sip0000644000076500000240000000262513245233150024171 0ustar philstaff00000000000000// default_extensionfactory.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QExtensionFactory : QObject, QAbstractExtensionFactory { %TypeHeaderCode #include %End public: QExtensionFactory(QExtensionManager *parent /TransferThis/ = 0); virtual QObject *extension(QObject *object, const QString &iid) const; QExtensionManager *extensionManager() const; protected: virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent /TransferThis/) const /Factory/; }; PyQt5_gpl-5.10.1/sip/QtDesigner/extension.sip0000644000076500000240000000304313245233150021070 0ustar philstaff00000000000000// extension.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractExtensionFactory { %TypeHeaderCode #include %End public: virtual ~QAbstractExtensionFactory(); virtual QObject *extension(QObject *object, const QString &iid) const = 0; }; class QAbstractExtensionManager { %TypeHeaderCode #include %End public: virtual ~QAbstractExtensionManager(); virtual void registerExtensions(QAbstractExtensionFactory *factory, const QString &iid) = 0; virtual void unregisterExtensions(QAbstractExtensionFactory *factory, const QString &iid) = 0; virtual QObject *extension(QObject *object, const QString &iid) const = 0; }; PyQt5_gpl-5.10.1/sip/QtDesigner/formbuilder.sip0000644000076500000240000000250013245233150021363 0ustar philstaff00000000000000// formbuilder.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFormBuilder : QAbstractFormBuilder { %TypeHeaderCode #include %End public: QFormBuilder(); virtual ~QFormBuilder(); QStringList pluginPaths() const; void clearPluginPaths(); void addPluginPath(const QString &pluginPath); void setPluginPath(const QStringList &pluginPaths); QList customWidgets() const; }; PyQt5_gpl-5.10.1/sip/QtDesigner/membersheet.sip0000644000076500000240000000352013245233150021354 0ustar philstaff00000000000000// membersheet.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerMemberSheetExtension { %TypeHeaderCode #include %End public: virtual ~QDesignerMemberSheetExtension(); virtual int count() const = 0 /__len__/; virtual int indexOf(const QString &name) const = 0; virtual QString memberName(int index) const = 0; virtual QString memberGroup(int index) const = 0; virtual void setMemberGroup(int index, const QString &group) = 0; virtual bool isVisible(int index) const = 0; virtual void setVisible(int index, bool b) = 0; virtual bool isSignal(int index) const = 0; virtual bool isSlot(int index) const = 0; virtual bool inheritedFromWidget(int index) const = 0; virtual QString declaredInClass(int index) const = 0; virtual QString signature(int index) const = 0; virtual QList parameterTypes(int index) const = 0; virtual QList parameterNames(int index) const = 0; }; PyQt5_gpl-5.10.1/sip/QtDesigner/propertysheet.sip0000644000076500000240000000364113245233150021775 0ustar philstaff00000000000000// propertysheet.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerPropertySheetExtension { %TypeHeaderCode #include %End public: virtual ~QDesignerPropertySheetExtension(); virtual int count() const = 0 /__len__/; virtual int indexOf(const QString &name) const = 0; virtual QString propertyName(int index) const = 0; virtual QString propertyGroup(int index) const = 0; virtual void setPropertyGroup(int index, const QString &group) = 0; virtual bool hasReset(int index) const = 0; virtual bool reset(int index) = 0; virtual bool isVisible(int index) const = 0; virtual void setVisible(int index, bool b) = 0; virtual bool isAttribute(int index) const = 0; virtual void setAttribute(int index, bool b) = 0; virtual QVariant property(int index) const = 0; virtual void setProperty(int index, const QVariant &value) = 0; virtual bool isChanged(int index) const = 0; virtual void setChanged(int index, bool changed) = 0; virtual bool isEnabled(int index) const; }; PyQt5_gpl-5.10.1/sip/QtDesigner/qextensionmanager.sip0000644000076500000240000000665413245233150022617 0ustar philstaff00000000000000// qextensionmanager.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QExtensionManager : QObject, QAbstractExtensionManager { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QPyDesignerCustomWidgetPlugin, &sipType_QPyDesignerCustomWidgetPlugin, -1, 1}, {sipName_QExtensionFactory, &sipType_QExtensionFactory, -1, 2}, {sipName_QPyDesignerMemberSheetExtension, &sipType_QPyDesignerMemberSheetExtension, -1, 3}, {sipName_QDesignerFormEditorInterface, &sipType_QDesignerFormEditorInterface, -1, 4}, {sipName_QDesignerWidgetBoxInterface, &sipType_QDesignerWidgetBoxInterface, -1, 5}, {sipName_QDesignerFormWindowInterface, &sipType_QDesignerFormWindowInterface, -1, 6}, {sipName_QDesignerActionEditorInterface, &sipType_QDesignerActionEditorInterface, -1, 7}, {sipName_QPyDesignerContainerExtension, &sipType_QPyDesignerContainerExtension, -1, 8}, {sipName_QDesignerPropertyEditorInterface, &sipType_QDesignerPropertyEditorInterface, -1, 9}, {sipName_QDesignerFormWindowManagerInterface, &sipType_QDesignerFormWindowManagerInterface, -1, 10}, {sipName_QPyDesignerTaskMenuExtension, &sipType_QPyDesignerTaskMenuExtension, -1, 11}, {sipName_QPyDesignerPropertySheetExtension, &sipType_QPyDesignerPropertySheetExtension, -1, 12}, {sipName_QDesignerObjectInspectorInterface, &sipType_QDesignerObjectInspectorInterface, -1, 13}, {sipName_QPyDesignerCustomWidgetCollectionPlugin, &sipType_QPyDesignerCustomWidgetCollectionPlugin, -1, 14}, {sipName_QExtensionManager, &sipType_QExtensionManager, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: %If (Qt_5_6_1 -) explicit QExtensionManager(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QExtensionManager(QObject *parent /TransferThis/ = 0); %End virtual ~QExtensionManager(); virtual void registerExtensions(QAbstractExtensionFactory *factory, const QString &iid = QString()); virtual void unregisterExtensions(QAbstractExtensionFactory *factory, const QString &iid = QString()); virtual QObject *extension(QObject *object, const QString &iid) const; }; PyQt5_gpl-5.10.1/sip/QtDesigner/qpydesignercontainerextension.sip0000644000076500000240000000231413245233150025246 0ustar philstaff00000000000000// This is the SIP specification of the QPyDesignerContainerExtension class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerContainerExtension : QObject, QDesignerContainerExtension { %TypeHeaderCode #include %End public: QPyDesignerContainerExtension(QObject *parent /TransferThis/); private: QPyDesignerContainerExtension(const QPyDesignerContainerExtension &); }; PyQt5_gpl-5.10.1/sip/QtDesigner/qpydesignercustomwidgetcollectionplugin.sip0000644000076500000240000000243413245233150027343 0ustar philstaff00000000000000// This is the SIP specification of the QPyDesignerCustomWidgetCollectionPlugin // class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerCustomWidgetCollectionPlugin : QObject, QDesignerCustomWidgetCollectionInterface { %TypeHeaderCode #include %End public: QPyDesignerCustomWidgetCollectionPlugin(QObject *parent /TransferThis/ = 0); private: QPyDesignerCustomWidgetCollectionPlugin(const QPyDesignerCustomWidgetCollectionPlugin &); }; PyQt5_gpl-5.10.1/sip/QtDesigner/qpydesignercustomwidgetplugin.sip0000644000076500000240000000232313245233150025264 0ustar philstaff00000000000000// This is the SIP specification of the QPyDesignerCustomWidgetPlugin class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerCustomWidgetPlugin : QObject, QDesignerCustomWidgetInterface { %TypeHeaderCode #include %End public: QPyDesignerCustomWidgetPlugin(QObject *parent /TransferThis/ = 0); private: QPyDesignerCustomWidgetPlugin(const QPyDesignerCustomWidgetPlugin &); }; PyQt5_gpl-5.10.1/sip/QtDesigner/qpydesignermembersheetextension.sip0000644000076500000240000000233213245233150025564 0ustar philstaff00000000000000// This is the SIP specification of the QPyDesignerMemberSheetExtension class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerMemberSheetExtension : QObject, QDesignerMemberSheetExtension { %TypeHeaderCode #include %End public: QPyDesignerMemberSheetExtension(QObject *parent /TransferThis/); private: QPyDesignerMemberSheetExtension(const QPyDesignerMemberSheetExtension &); }; PyQt5_gpl-5.10.1/sip/QtDesigner/qpydesignerpropertysheetextension.sip0000644000076500000240000000235313245233150026204 0ustar philstaff00000000000000// This is the SIP specification of the QPyDesignerPropertySheetExtension // class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerPropertySheetExtension : QObject, QDesignerPropertySheetExtension { %TypeHeaderCode #include %End public: QPyDesignerPropertySheetExtension(QObject *parent /TransferThis/); private: QPyDesignerPropertySheetExtension(const QPyDesignerPropertySheetExtension &); }; PyQt5_gpl-5.10.1/sip/QtDesigner/qpydesignertaskmenuextension.sip0000644000076500000240000000230513245233150025113 0ustar philstaff00000000000000// This is the SIP specification of the QPyDesignerTaskMenuExtension class. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerTaskMenuExtension : QObject, QDesignerTaskMenuExtension { %TypeHeaderCode #include %End public: QPyDesignerTaskMenuExtension(QObject *parent /TransferThis/); private: QPyDesignerTaskMenuExtension(const QPyDesignerTaskMenuExtension &); }; PyQt5_gpl-5.10.1/sip/QtDesigner/QtDesignermod.sip0000644000076500000240000000533013245233150021622 0ustar philstaff00000000000000// QtDesignermod.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtDesigner, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include abstractactioneditor.sip %Include abstractformbuilder.sip %Include abstractformeditor.sip %Include abstractformwindow.sip %Include abstractformwindowcursor.sip %Include abstractformwindowmanager.sip %Include abstractobjectinspector.sip %Include abstractpropertyeditor.sip %Include abstractwidgetbox.sip %Include container.sip %Include customwidget.sip %Include default_extensionfactory.sip %Include extension.sip %Include formbuilder.sip %Include membersheet.sip %Include propertysheet.sip %Include qextensionmanager.sip %Include taskmenu.sip %Include qpydesignercontainerextension.sip %Include qpydesignercustomwidgetcollectionplugin.sip %Include qpydesignercustomwidgetplugin.sip %Include qpydesignermembersheetextension.sip %Include qpydesignerpropertysheetextension.sip %Include qpydesignertaskmenuextension.sip PyQt5_gpl-5.10.1/sip/QtDesigner/taskmenu.sip0000644000076500000240000000224413245233150020705 0ustar philstaff00000000000000// taskmenu.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerTaskMenuExtension { %TypeHeaderCode #include %End public: virtual ~QDesignerTaskMenuExtension(); virtual QList taskActions() const = 0; virtual QAction *preferredEditAction() const; }; PyQt5_gpl-5.10.1/sip/QtGui/0000755000076500000240000000000013245233151015324 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtGui/opengl_types.sip0000644000076500000240000000257713245233150020563 0ustar philstaff00000000000000// This implements the typedefs for the OpenGL data types. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL) typedef char GLchar; typedef qint8 GLbyte; typedef quint8 GLubyte; typedef quint8 GLboolean; typedef qint16 GLshort; typedef quint16 GLushort; typedef qint32 GLint; typedef qint32 GLsizei; typedef quint32 GLuint; typedef quint32 GLenum; typedef quint32 GLbitfield; %If (PyQt_Desktop_OpenGL) typedef quint64 GLuint64; // This is in OpenGL ES v3. typedef double GLdouble; %End typedef float GLfloat; typedef float GLclampf; typedef long GLintptr; typedef long GLsizeiptr; %End PyQt5_gpl-5.10.1/sip/QtGui/qabstracttextdocumentlayout.sip0000644000076500000240000000723013245233150023730 0ustar philstaff00000000000000// qabstracttextdocumentlayout.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractTextDocumentLayout : QObject { %TypeHeaderCode #include %End public: explicit QAbstractTextDocumentLayout(QTextDocument *doc); virtual ~QAbstractTextDocumentLayout(); struct Selection { %TypeHeaderCode #include %End QTextCursor cursor; QTextCharFormat format; }; struct PaintContext { %TypeHeaderCode #include %End PaintContext(); int cursorPosition; QPalette palette; QRectF clip; QVector selections; }; virtual void draw(QPainter *painter, const QAbstractTextDocumentLayout::PaintContext &context) = 0; virtual int hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const = 0; QString anchorAt(const QPointF &pos) const; virtual int pageCount() const = 0; virtual QSizeF documentSize() const = 0; virtual QRectF frameBoundingRect(QTextFrame *frame) const = 0; virtual QRectF blockBoundingRect(const QTextBlock &block) const = 0; void setPaintDevice(QPaintDevice *device); QPaintDevice *paintDevice() const; QTextDocument *document() const; void registerHandler(int objectType, QObject *component); %If (Qt_5_2_0 -) void unregisterHandler(int objectType, QObject *component = 0); %End QTextObjectInterface *handlerForObject(int objectType) const; signals: void update(const QRectF &rect = QRectF(0.0, 0.0, 1.0e+9, 1.0e+9)); void documentSizeChanged(const QSizeF &newSize); void pageCountChanged(int newPages); void updateBlock(const QTextBlock &block); protected: virtual void documentChanged(int from, int charsRemoved, int charsAdded) = 0; virtual void resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format); virtual void positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format); virtual void drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format); QTextCharFormat format(int pos); public: %If (Qt_5_8_0 -) QString imageAt(const QPointF &pos) const; %End %If (Qt_5_8_0 -) QTextFormat formatAt(const QPointF &pos) const; %End }; class QTextObjectInterface /Mixin,PyQtInterface="org.qt-project.Qt.QTextObjectInterface"/ { %TypeHeaderCode #include %End public: virtual ~QTextObjectInterface(); virtual QSizeF intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format) = 0; virtual void drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format) = 0; }; PyQt5_gpl-5.10.1/sip/QtGui/qbackingstore.sip0000644000076500000240000000304013245233150020671 0ustar philstaff00000000000000// qbackingstore.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBackingStore /NoDefaultCtors/ { %TypeHeaderCode #include %End public: explicit QBackingStore(QWindow *window); ~QBackingStore(); QWindow *window() const; QPaintDevice *paintDevice(); void flush(const QRegion ®ion, QWindow *window = 0, const QPoint &offset = QPoint()); void resize(const QSize &size); QSize size() const; bool scroll(const QRegion &area, int dx, int dy); void beginPaint(const QRegion &); void endPaint(); void setStaticContents(const QRegion ®ion); QRegion staticContents() const; bool hasStaticContents() const; }; PyQt5_gpl-5.10.1/sip/QtGui/qbitmap.sip0000644000076500000240000000350313245233150017476 0ustar philstaff00000000000000// qbitmap.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBitmap : QPixmap { %TypeHeaderCode #include %End public: QBitmap(); %If (Qt_5_7_0 -) QBitmap(const QBitmap &other); %End QBitmap(const QPixmap &); QBitmap(int w, int h); explicit QBitmap(const QSize &); QBitmap(const QString &fileName, const char *format = 0); QBitmap(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new sipQBitmap(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End virtual ~QBitmap(); void clear(); static QBitmap fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor); static QBitmap fromData(const QSize &size, const uchar *bits, QImage::Format format = QImage::Format_MonoLSB); QBitmap transformed(const QTransform &matrix) const; void swap(QBitmap &other /Constrained/); }; PyQt5_gpl-5.10.1/sip/QtGui/qbrush.sip0000644000076500000240000001504113245233150017345 0ustar philstaff00000000000000// qbrush.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBrush /TypeHintIn="Union[QBrush, QColor, QGradient]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode // SIP doesn't support automatic type convertors so we explicitly allow a // QColor or a QGradient to be used whenever a QBrush is expected. Note that // SIP must process QColor before QBrush so that the former's QVariant cast // operator is applied before the latter's. if (sipIsErr == NULL) return (sipCanConvertToType(sipPy, sipType_QBrush, SIP_NO_CONVERTORS) || sipCanConvertToType(sipPy, sipType_QColor, 0) || sipCanConvertToType(sipPy, sipType_QGradient, 0)); if (sipCanConvertToType(sipPy, sipType_QBrush, SIP_NO_CONVERTORS)) { *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QBrush, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } int state; if (sipCanConvertToType(sipPy, sipType_QColor, 0)) { QColor *c = reinterpret_cast(sipConvertToType(sipPy, sipType_QColor, 0, 0, &state, sipIsErr)); if (*sipIsErr) { sipReleaseType(c, sipType_QColor, state); return 0; } *sipCppPtr = new QBrush(*c); sipReleaseType(c, sipType_QColor, state); return sipGetState(sipTransferObj); } QGradient *g = reinterpret_cast(sipConvertToType(sipPy, sipType_QGradient, 0, 0, &state, sipIsErr)); if (*sipIsErr) { sipReleaseType(g, sipType_QGradient, state); return 0; } *sipCppPtr = new QBrush(*g); sipReleaseType(g, sipType_QGradient, state); return sipGetState(sipTransferObj); %End public: QBrush(); QBrush(Qt::BrushStyle bs); QBrush(const QColor &color, Qt::BrushStyle style = Qt::SolidPattern); QBrush(const QColor &color, const QPixmap &pixmap); QBrush(const QPixmap &pixmap); QBrush(const QImage &image); QBrush(const QBrush &brush); QBrush(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QBrush(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QBrush(); void setStyle(Qt::BrushStyle); QPixmap texture() const; void setTexture(const QPixmap &pixmap); void setColor(const QColor &color); const QGradient *gradient() const; bool isOpaque() const; bool operator==(const QBrush &b) const; bool operator!=(const QBrush &b) const; void setColor(Qt::GlobalColor acolor); Qt::BrushStyle style() const; const QColor &color() const; void setTextureImage(const QImage &image); QImage textureImage() const; void setTransform(const QTransform &); QTransform transform() const; void swap(QBrush &other /Constrained/); }; QDataStream &operator>>(QDataStream &, QBrush & /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &, const QBrush & /Constrained/) /ReleaseGIL/; typedef QVector> QGradientStops; class QGradient { %TypeHeaderCode #include %End public: enum CoordinateMode { LogicalMode, StretchToDeviceMode, ObjectBoundingMode, }; enum Type { LinearGradient, RadialGradient, ConicalGradient, NoGradient, }; enum Spread { PadSpread, ReflectSpread, RepeatSpread, }; QGradient(); QGradient::Type type() const; QGradient::Spread spread() const; void setColorAt(qreal pos, const QColor &color); void setStops(const QGradientStops &stops); QGradientStops stops() const; bool operator==(const QGradient &gradient) const; bool operator!=(const QGradient &other) const; void setSpread(QGradient::Spread aspread); QGradient::CoordinateMode coordinateMode() const; void setCoordinateMode(QGradient::CoordinateMode mode); }; class QLinearGradient : QGradient { %TypeHeaderCode #include %End public: QLinearGradient(); QLinearGradient(const QPointF &start, const QPointF &finalStop); QLinearGradient(qreal xStart, qreal yStart, qreal xFinalStop, qreal yFinalStop); QPointF start() const; QPointF finalStop() const; void setStart(const QPointF &start); void setStart(qreal x, qreal y); void setFinalStop(const QPointF &stop); void setFinalStop(qreal x, qreal y); }; class QRadialGradient : QGradient { %TypeHeaderCode #include %End public: QRadialGradient(); QRadialGradient(const QPointF ¢er, qreal radius, const QPointF &focalPoint); QRadialGradient(const QPointF ¢er, qreal centerRadius, const QPointF &focalPoint, qreal focalRadius); QRadialGradient(const QPointF ¢er, qreal radius); QRadialGradient(qreal cx, qreal cy, qreal radius, qreal fx, qreal fy); QRadialGradient(qreal cx, qreal cy, qreal centerRadius, qreal fx, qreal fy, qreal focalRadius); QRadialGradient(qreal cx, qreal cy, qreal radius); QPointF center() const; QPointF focalPoint() const; qreal radius() const; void setCenter(const QPointF ¢er); void setCenter(qreal x, qreal y); void setFocalPoint(const QPointF &focalPoint); void setFocalPoint(qreal x, qreal y); void setRadius(qreal radius); qreal centerRadius() const; void setCenterRadius(qreal radius); qreal focalRadius() const; void setFocalRadius(qreal radius); }; class QConicalGradient : QGradient { %TypeHeaderCode #include %End public: QConicalGradient(); QConicalGradient(const QPointF ¢er, qreal startAngle); QConicalGradient(qreal cx, qreal cy, qreal startAngle); QPointF center() const; qreal angle() const; void setCenter(const QPointF ¢er); void setCenter(qreal x, qreal y); void setAngle(qreal angle); }; PyQt5_gpl-5.10.1/sip/QtGui/qclipboard.sip0000644000076500000240000000672213245233150020167 0ustar philstaff00000000000000// qclipboard.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QClipboard : QObject { %TypeHeaderCode #include %End explicit QClipboard(QObject *parent /TransferThis/); virtual ~QClipboard(); public: enum Mode { Clipboard, Selection, FindBuffer, }; void clear(QClipboard::Mode mode = QClipboard::Clipboard); bool supportsFindBuffer() const; bool supportsSelection() const; bool ownsClipboard() const; bool ownsFindBuffer() const; bool ownsSelection() const; QString text(QClipboard::Mode mode = QClipboard::Clipboard) const; SIP_PYTUPLE text(const QString &subtype, QClipboard::Mode mode = QClipboard::Clipboard) const /TypeHint="Tuple[QString, QString]"/; %MethodCode QString *text; QString *subtype = new QString(*a0); Py_BEGIN_ALLOW_THREADS text = new QString(sipCpp->text(*subtype, a1)); Py_END_ALLOW_THREADS PyObject *text_obj = sipConvertFromNewType(text, sipType_QString, NULL); PyObject *subtype_obj = sipConvertFromNewType(subtype, sipType_QString, NULL); if (text_obj && subtype_obj) sipRes = PyTuple_Pack(2, text_obj, subtype_obj); Py_XDECREF(text_obj); Py_XDECREF(subtype_obj); %End void setText(const QString &, QClipboard::Mode mode = QClipboard::Clipboard); const QMimeData *mimeData(QClipboard::Mode mode = QClipboard::Clipboard) const; void setMimeData(QMimeData *data /GetWrapper/, QClipboard::Mode mode = QClipboard::Clipboard); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->setMimeData(a0, a1); Py_END_ALLOW_THREADS // Transfer ownership to C++ and make sure the Python object stays alive by // giving it a reference to itself. The cycle will be broken by QMimeData's // virtual dtor. The reason we don't do the obvious and just use /Transfer/ is // that the QClipboard Python object we would transfer ownership to is likely // to be garbage collected immediately afterwards. sipTransferTo(a0Wrapper, a0Wrapper); %End QImage image(QClipboard::Mode mode = QClipboard::Clipboard) const; QPixmap pixmap(QClipboard::Mode mode = QClipboard::Clipboard) const; void setImage(const QImage &, QClipboard::Mode mode = QClipboard::Clipboard); void setPixmap(const QPixmap &, QClipboard::Mode mode = QClipboard::Clipboard); signals: void changed(QClipboard::Mode mode); void dataChanged(); void findBufferChanged(); void selectionChanged(); private: QClipboard(const QClipboard &); }; PyQt5_gpl-5.10.1/sip/QtGui/qcolor.sip0000644000076500000240000001470213245233150017343 0ustar philstaff00000000000000// qcolor.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QColor /TypeHintIn="Union[QColor, Qt.GlobalColor]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode // SIP doesn't support automatic type convertors so we explicitly allow a // Qt::GlobalColor to be used whenever a QColor is expected. Note that SIP // must process QColor before QBrush so that the former's QVariant cast // operator is applied before the latter's. if (sipIsErr == NULL) return (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_Qt_GlobalColor)) || sipCanConvertToType(sipPy, sipType_QColor, SIP_NO_CONVERTORS)); if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_Qt_GlobalColor))) { *sipCppPtr = new QColor((Qt::GlobalColor)SIPLong_AsLong(sipPy)); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QColor, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %PickleCode sipRes = Py_BuildValue((char *)"iiii", sipCpp->red(), sipCpp->green(), sipCpp->blue(), sipCpp->alpha()); %End public: enum Spec { Invalid, Rgb, Hsv, Cmyk, Hsl, }; QColor(Qt::GlobalColor color /Constrained/); QColor(QRgb rgb); %If (Qt_5_6_0 -) QColor(QRgba64 rgba64); %End QColor(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QColor(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End QString name() const; void setNamedColor(const QString &name); static QStringList colorNames(); QColor::Spec spec() const; int alpha() const; void setAlpha(int alpha); qreal alphaF() const; void setAlphaF(qreal alpha); int red() const; int green() const; int blue() const; void setRed(int red); void setGreen(int green); void setBlue(int blue); qreal redF() const; qreal greenF() const; qreal blueF() const; void setRedF(qreal red); void setGreenF(qreal green); void setBlueF(qreal blue); void getRgb(int *r, int *g, int *b, int *alpha = 0) const; void setRgb(int r, int g, int b, int alpha = 255); void getRgbF(qreal *r, qreal *g, qreal *b, qreal *alpha = 0) const; void setRgbF(qreal r, qreal g, qreal b, qreal alpha = 1.); QRgb rgba() const; void setRgba(QRgb rgba); QRgb rgb() const; void setRgb(QRgb rgb); int hue() const; int saturation() const; int value() const; qreal hueF() const; qreal saturationF() const; qreal valueF() const; void getHsv(int *h, int *s, int *v, int *alpha = 0) const; void setHsv(int h, int s, int v, int alpha = 255); void getHsvF(qreal *h, qreal *s, qreal *v, qreal *alpha = 0) const; void setHsvF(qreal h, qreal s, qreal v, qreal alpha = 1.); int cyan() const; int magenta() const; int yellow() const; int black() const; qreal cyanF() const; qreal magentaF() const; qreal yellowF() const; qreal blackF() const; void getCmyk(int *c, int *m, int *y, int *k, int *alpha = 0); void setCmyk(int c, int m, int y, int k, int alpha = 255); void getCmykF(qreal *c, qreal *m, qreal *y, qreal *k, qreal *alpha = 0); void setCmykF(qreal c, qreal m, qreal y, qreal k, qreal alpha = 1.); QColor toRgb() const; QColor toHsv() const; QColor toCmyk() const; QColor convertTo(QColor::Spec colorSpec) const; static QColor fromRgb(QRgb rgb); static QColor fromRgba(QRgb rgba); static QColor fromRgb(int r, int g, int b, int alpha = 255); static QColor fromRgbF(qreal r, qreal g, qreal b, qreal alpha = 1.); static QColor fromHsv(int h, int s, int v, int alpha = 255); static QColor fromHsvF(qreal h, qreal s, qreal v, qreal alpha = 1.); static QColor fromCmyk(int c, int m, int y, int k, int alpha = 255); static QColor fromCmykF(qreal c, qreal m, qreal y, qreal k, qreal alpha = 1.); bool operator==(const QColor &c) const; bool operator!=(const QColor &c) const; QColor(); QColor(int r, int g, int b, int alpha = 255); QColor(const QString &aname); QColor(const QColor &acolor); bool isValid() const; QColor lighter(int factor = 150) const; QColor darker(int factor = 200) const; int hsvHue() const; int hsvSaturation() const; qreal hsvHueF() const; qreal hsvSaturationF() const; int hslHue() const; int hslSaturation() const; int lightness() const; qreal hslHueF() const; qreal hslSaturationF() const; qreal lightnessF() const; void getHsl(int *h, int *s, int *l, int *alpha = 0) const; void setHsl(int h, int s, int l, int alpha = 255); void getHslF(qreal *h, qreal *s, qreal *l, qreal *alpha = 0) const; void setHslF(qreal h, qreal s, qreal l, qreal alpha = 1.); QColor toHsl() const; static QColor fromHsl(int h, int s, int l, int alpha = 255); static QColor fromHslF(qreal h, qreal s, qreal l, qreal alpha = 1.); static bool isValidColor(const QString &name); %If (Qt_5_2_0 -) enum NameFormat { HexRgb, HexArgb, }; %End %If (Qt_5_2_0 -) QString name(QColor::NameFormat format) const; %End %If (Qt_5_6_0 -) QRgba64 rgba64() const; %End %If (Qt_5_6_0 -) void setRgba64(QRgba64 rgba); %End %If (Qt_5_6_0 -) static QColor fromRgba64(ushort r, ushort g, ushort b, ushort alpha = 65535); %End %If (Qt_5_6_0 -) static QColor fromRgba64(QRgba64 rgba); %End }; QDataStream &operator<<(QDataStream &, const QColor & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QColor & /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtGui/qcursor.sip0000644000076500000240000000554413245233150017546 0ustar philstaff00000000000000// qcursor.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCursor /TypeHintIn="Union[QCursor, Qt.CursorShape]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode // SIP doesn't support automatic type convertors so we explicitly allow a // Qt::CursorShape to be used whenever a QCursor is expected. if (sipIsErr == NULL) return (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_Qt_CursorShape)) || sipCanConvertToType(sipPy, sipType_QCursor, SIP_NO_CONVERTORS)); if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_Qt_CursorShape))) { *sipCppPtr = new QCursor((Qt::CursorShape)SIPLong_AsLong(sipPy)); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QCursor, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End public: QCursor(); QCursor(const QBitmap &bitmap, const QBitmap &mask, int hotX = -1, int hotY = -1); QCursor(const QPixmap &pixmap, int hotX = -1, int hotY = -1); QCursor(const QCursor &cursor); QCursor(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QCursor(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QCursor(); Qt::CursorShape shape() const; void setShape(Qt::CursorShape newShape); const QBitmap *bitmap() const; const QBitmap *mask() const; QPixmap pixmap() const; QPoint hotSpot() const; static QPoint pos(); static void setPos(int x, int y); static void setPos(const QPoint &p); %If (Qt_5_7_0 -) void swap(QCursor &other); %End }; QDataStream &operator<<(QDataStream &outS, const QCursor &cursor /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &inS, QCursor &cursor /Constrained/) /ReleaseGIL/; %If (Qt_5_10_0 -) bool operator==(const QCursor &lhs, const QCursor &rhs); %End %If (Qt_5_10_0 -) bool operator!=(const QCursor &lhs, const QCursor &rhs); %End PyQt5_gpl-5.10.1/sip/QtGui/qdesktopservices.sip0000644000076500000240000000456213245233150021445 0ustar philstaff00000000000000// qdesktopservices.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesktopServices { %TypeHeaderCode #include %End public: static bool openUrl(const QUrl &url) /ReleaseGIL/; static void setUrlHandler(const QString &scheme, QObject *receiver, const char *method); static void setUrlHandler(const QString &scheme, SIP_PYCALLABLE method /TypeHint="Callable[[QUrl], None]"/); %MethodCode // Allow a callable that must be a slot of a QObject, although we never tell // the user if it isn't. sipMethodDef pm; if (sipGetMethod(a1, &pm)) { int iserr = 0; QObject *receiver = reinterpret_cast(sipForceConvertToType( pm.pm_self, sipType_QObject, NULL, SIP_NOT_NONE, NULL, &iserr)); if (!iserr) { PyObject *f_name_obj = PyObject_GetAttrString(pm.pm_function, "__name__"); if (f_name_obj) { // We only want a borrowed reference. Py_DECREF(f_name_obj); const char *f_name = sipString_AsASCIIString(&f_name_obj); if (f_name) { QDesktopServices::setUrlHandler(*a0, receiver, f_name); Py_DECREF(f_name_obj); } } } } %End static void unsetUrlHandler(const QString &scheme); }; PyQt5_gpl-5.10.1/sip/QtGui/qdrag.sip0000644000076500000240000000430113245233150017134 0ustar philstaff00000000000000// qdrag.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDrag : QObject { %TypeHeaderCode #include %End public: explicit QDrag(QObject *dragSource /TransferThis/); virtual ~QDrag(); Qt::DropAction exec(Qt::DropActions supportedActions = Qt::MoveAction) /PyName=exec_,ReleaseGIL/; %If (Py_v3) Qt::DropAction exec(Qt::DropActions supportedActions = Qt::MoveAction) /ReleaseGIL/; %End Qt::DropAction exec(Qt::DropActions supportedActions, Qt::DropAction defaultDropAction) /PyName=exec_,ReleaseGIL/; Qt::DropAction exec(Qt::DropActions supportedActions, Qt::DropAction defaultDropAction) /ReleaseGIL/; void setMimeData(QMimeData *data /Transfer/); QMimeData *mimeData() const; void setPixmap(const QPixmap &); QPixmap pixmap() const; void setHotSpot(const QPoint &hotspot); QPoint hotSpot() const; QObject *source() const; QObject *target() const; void setDragCursor(const QPixmap &cursor, Qt::DropAction action); signals: void actionChanged(Qt::DropAction action); void targetChanged(QObject *newTarget); public: QPixmap dragCursor(Qt::DropAction action) const; Qt::DropActions supportedActions() const; Qt::DropAction defaultAction() const; %If (Qt_5_7_0 -) %If (WS_X11 || WS_WIN) static void cancel(); %End %End private: QDrag(const QDrag &); }; PyQt5_gpl-5.10.1/sip/QtGui/qevent.sip0000644000076500000240000005601113245233150017345 0ustar philstaff00000000000000// qevent.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QInputEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type()) { case QEvent::ActionAdded: case QEvent::ActionChanged: case QEvent::ActionRemoved: sipType = sipType_QActionEvent; break; case QEvent::Close: sipType = sipType_QCloseEvent; break; case QEvent::ContextMenu: sipType = sipType_QContextMenuEvent; break; case QEvent::DragEnter: sipType = sipType_QDragEnterEvent; break; case QEvent::DragLeave: sipType = sipType_QDragLeaveEvent; break; case QEvent::DragMove: sipType = sipType_QDragMoveEvent; break; case QEvent::Drop: sipType = sipType_QDropEvent; break; case QEvent::Enter: sipType = sipType_QEnterEvent; break; case QEvent::FileOpen: sipType = sipType_QFileOpenEvent; break; case QEvent::FocusIn: case QEvent::FocusOut: sipType = sipType_QFocusEvent; break; case QEvent::Hide: sipType = sipType_QHideEvent; break; case QEvent::HoverEnter: case QEvent::HoverLeave: case QEvent::HoverMove: sipType = sipType_QHoverEvent; break; case QEvent::IconDrag: sipType = sipType_QIconDragEvent; break; case QEvent::InputMethod: sipType = sipType_QInputMethodEvent; break; case QEvent::KeyPress: case QEvent::KeyRelease: case QEvent::ShortcutOverride: sipType = sipType_QKeyEvent; break; case QEvent::MouseButtonDblClick: case QEvent::MouseButtonPress: case QEvent::MouseButtonRelease: case QEvent::MouseMove: sipType = sipType_QMouseEvent; break; case QEvent::Move: sipType = sipType_QMoveEvent; break; case QEvent::Paint: sipType = sipType_QPaintEvent; break; case QEvent::Resize: sipType = sipType_QResizeEvent; break; case QEvent::Shortcut: sipType = sipType_QShortcutEvent; break; case QEvent::Show: sipType = sipType_QShowEvent; break; case QEvent::StatusTip: sipType = sipType_QStatusTipEvent; break; case QEvent::TabletMove: case QEvent::TabletPress: case QEvent::TabletRelease: case QEvent::TabletEnterProximity: case QEvent::TabletLeaveProximity: sipType = sipType_QTabletEvent; break; case QEvent::ToolTip: case QEvent::WhatsThis: sipType = sipType_QHelpEvent; break; case QEvent::WhatsThisClicked: sipType = sipType_QWhatsThisClickedEvent; break; case QEvent::Wheel: sipType = sipType_QWheelEvent; break; case QEvent::WindowStateChange: sipType = sipType_QWindowStateChangeEvent; break; case QEvent::TouchBegin: case QEvent::TouchUpdate: case QEvent::TouchEnd: case QEvent::TouchCancel: sipType = sipType_QTouchEvent; break; case QEvent::InputMethodQuery: sipType = sipType_QInputMethodQueryEvent; break; case QEvent::Expose: sipType = sipType_QExposeEvent; break; case QEvent::ScrollPrepare: sipType = sipType_QScrollPrepareEvent; break; case QEvent::Scroll: sipType = sipType_QScrollEvent; break; #if QT_VERSION >= 0x050200 case QEvent::NativeGesture: sipType = sipType_QNativeGestureEvent; break; #endif #if QT_VERSION >= 0x050500 case QEvent::PlatformSurface: sipType = sipType_QPlatformSurfaceEvent; break; #endif default: sipType = 0; } %End public: virtual ~QInputEvent(); Qt::KeyboardModifiers modifiers() const; ulong timestamp() const; void setTimestamp(ulong atimestamp); }; class QMouseEvent : QInputEvent { %TypeHeaderCode #include %End public: QMouseEvent(QEvent::Type type, const QPointF &pos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); QMouseEvent(QEvent::Type type, const QPointF &pos, const QPointF &globalPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); QMouseEvent(QEvent::Type type, const QPointF &pos, const QPointF &windowPos, const QPointF &globalPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); %If (Qt_5_6_0 -) QMouseEvent(QEvent::Type type, const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::MouseEventSource source); %End virtual ~QMouseEvent(); QPoint pos() const; QPoint globalPos() const; int x() const; int y() const; int globalX() const; int globalY() const; Qt::MouseButton button() const; Qt::MouseButtons buttons() const; const QPointF &localPos() const; const QPointF &windowPos() const; const QPointF &screenPos() const; %If (Qt_5_3_0 -) Qt::MouseEventSource source() const; %End %If (Qt_5_3_0 -) Qt::MouseEventFlags flags() const; %End }; class QHoverEvent : QInputEvent { %TypeHeaderCode #include %End public: QHoverEvent(QEvent::Type type, const QPointF &pos, const QPointF &oldPos, Qt::KeyboardModifiers modifiers = Qt::NoModifier); virtual ~QHoverEvent(); QPoint pos() const; QPoint oldPos() const; const QPointF &posF() const; const QPointF &oldPosF() const; }; class QWheelEvent : QInputEvent { %TypeHeaderCode #include %End public: QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); %If (Qt_5_2_0 -) QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase); %End %If (Qt_5_5_0 -) QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase, Qt::MouseEventSource source); %End %If (Qt_5_7_0 -) QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, int qt4Delta, Qt::Orientation qt4Orientation, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase, Qt::MouseEventSource source, bool inverted); %End virtual ~QWheelEvent(); QPoint pos() const; QPoint globalPos() const; int x() const; int y() const; int globalX() const; int globalY() const; Qt::MouseButtons buttons() const; QPoint pixelDelta() const; QPoint angleDelta() const; const QPointF &posF() const; const QPointF &globalPosF() const; %If (Qt_5_2_0 -) Qt::ScrollPhase phase() const; %End %If (Qt_5_5_0 -) Qt::MouseEventSource source() const; %End %If (Qt_5_7_0 -) bool inverted() const; %End }; class QTabletEvent : QInputEvent { %TypeHeaderCode #include %End public: enum TabletDevice { NoDevice, Puck, Stylus, Airbrush, FourDMouse, XFreeEraser, RotationStylus, }; enum PointerType { UnknownPointer, Pen, Cursor, Eraser, }; %If (Qt_5_4_0 -) QTabletEvent(QEvent::Type t, const QPointF &pos, const QPointF &globalPos, int device, int pointerType, qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, qreal rotation, int z, Qt::KeyboardModifiers keyState, qint64 uniqueID, Qt::MouseButton button, Qt::MouseButtons buttons); %End QTabletEvent(QEvent::Type t, const QPointF &pos, const QPointF &globalPos, int device, int pointerType, qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, qreal rotation, int z, Qt::KeyboardModifiers keyState, qint64 uniqueID); virtual ~QTabletEvent(); QPoint pos() const; QPoint globalPos() const; int x() const; int y() const; int globalX() const; int globalY() const; qreal hiResGlobalX() const; qreal hiResGlobalY() const; QTabletEvent::TabletDevice device() const; QTabletEvent::PointerType pointerType() const; qint64 uniqueId() const; qreal pressure() const; int z() const; qreal tangentialPressure() const; qreal rotation() const; int xTilt() const; int yTilt() const; const QPointF &posF() const; const QPointF &globalPosF() const; %If (Qt_5_4_0 -) Qt::MouseButton button() const; %End %If (Qt_5_4_0 -) Qt::MouseButtons buttons() const; %End }; class QKeyEvent : QInputEvent { %TypeHeaderCode #include %End public: QKeyEvent(QEvent::Type type, int key, Qt::KeyboardModifiers modifiers, quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers, const QString &text = QString(), bool autorep = false, ushort count = 1); QKeyEvent(QEvent::Type type, int key, Qt::KeyboardModifiers modifiers, const QString &text = QString(), bool autorep = false, ushort count = 1); virtual ~QKeyEvent(); int key() const; Qt::KeyboardModifiers modifiers() const; QString text() const; bool isAutoRepeat() const; int count() const /__len__/; bool matches(QKeySequence::StandardKey key) const; quint32 nativeModifiers() const; quint32 nativeScanCode() const; quint32 nativeVirtualKey() const; }; class QFocusEvent : QEvent { %TypeHeaderCode #include %End public: QFocusEvent(QEvent::Type type, Qt::FocusReason reason = Qt::OtherFocusReason); virtual ~QFocusEvent(); bool gotFocus() const; bool lostFocus() const; Qt::FocusReason reason() const; }; class QPaintEvent : QEvent { %TypeHeaderCode #include %End public: explicit QPaintEvent(const QRegion &paintRegion); explicit QPaintEvent(const QRect &paintRect); virtual ~QPaintEvent(); const QRect &rect() const; const QRegion ®ion() const; }; class QMoveEvent : QEvent { %TypeHeaderCode #include %End public: QMoveEvent(const QPoint &pos, const QPoint &oldPos); virtual ~QMoveEvent(); const QPoint &pos() const; const QPoint &oldPos() const; }; class QResizeEvent : QEvent { %TypeHeaderCode #include %End public: QResizeEvent(const QSize &size, const QSize &oldSize); virtual ~QResizeEvent(); const QSize &size() const; const QSize &oldSize() const; }; class QCloseEvent : QEvent { %TypeHeaderCode #include %End public: QCloseEvent(); virtual ~QCloseEvent(); }; class QIconDragEvent : QEvent { %TypeHeaderCode #include %End public: QIconDragEvent(); virtual ~QIconDragEvent(); }; class QShowEvent : QEvent { %TypeHeaderCode #include %End public: QShowEvent(); virtual ~QShowEvent(); }; class QHideEvent : QEvent { %TypeHeaderCode #include %End public: QHideEvent(); virtual ~QHideEvent(); }; class QContextMenuEvent : QInputEvent { %TypeHeaderCode #include %End public: enum Reason { Mouse, Keyboard, Other, }; QContextMenuEvent(QContextMenuEvent::Reason reason, const QPoint &pos, const QPoint &globalPos, Qt::KeyboardModifiers modifiers); QContextMenuEvent(QContextMenuEvent::Reason reason, const QPoint &pos, const QPoint &globalPos); QContextMenuEvent(QContextMenuEvent::Reason reason, const QPoint &pos); virtual ~QContextMenuEvent(); int x() const; int y() const; int globalX() const; int globalY() const; const QPoint &pos() const; const QPoint &globalPos() const; QContextMenuEvent::Reason reason() const; }; class QInputMethodEvent : QEvent { %TypeHeaderCode #include %End public: enum AttributeType { TextFormat, Cursor, Language, Ruby, Selection, }; class Attribute { %TypeHeaderCode #include %End public: Attribute(QInputMethodEvent::AttributeType t, int s, int l, QVariant val); %If (Qt_5_8_0 -) Attribute(QInputMethodEvent::AttributeType typ, int s, int l); %End QInputMethodEvent::AttributeType type; int start; int length; QVariant value; }; QInputMethodEvent(); QInputMethodEvent(const QString &preeditText, const QList &attributes); QInputMethodEvent(const QInputMethodEvent &other); %If (Qt_5_6_0 -) virtual ~QInputMethodEvent(); %End void setCommitString(const QString &commitString, int from = 0, int length = 0); const QList &attributes() const; const QString &preeditString() const; const QString &commitString() const; int replacementStart() const; int replacementLength() const; }; class QInputMethodQueryEvent : QEvent { %TypeHeaderCode #include %End public: explicit QInputMethodQueryEvent(Qt::InputMethodQueries queries); virtual ~QInputMethodQueryEvent(); Qt::InputMethodQueries queries() const; void setValue(Qt::InputMethodQuery query, const QVariant &value); QVariant value(Qt::InputMethodQuery query) const; }; class QDropEvent : QEvent { %TypeHeaderCode #include %End public: QDropEvent(const QPointF &pos, Qt::DropActions actions, const QMimeData *data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, QEvent::Type type = QEvent::Drop); virtual ~QDropEvent(); QPoint pos() const; const QPointF &posF() const; Qt::MouseButtons mouseButtons() const; Qt::KeyboardModifiers keyboardModifiers() const; Qt::DropActions possibleActions() const; Qt::DropAction proposedAction() const; void acceptProposedAction(); Qt::DropAction dropAction() const; void setDropAction(Qt::DropAction action); QObject *source() const; const QMimeData *mimeData() const; }; class QDragMoveEvent : QDropEvent { %TypeHeaderCode #include %End public: QDragMoveEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, QEvent::Type type = QEvent::DragMove); virtual ~QDragMoveEvent(); QRect answerRect() const; void accept(); void ignore(); void accept(const QRect &r); void ignore(const QRect &r); }; class QDragEnterEvent : QDragMoveEvent { %TypeHeaderCode #include %End public: QDragEnterEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); virtual ~QDragEnterEvent(); }; class QDragLeaveEvent : QEvent { %TypeHeaderCode #include %End public: QDragLeaveEvent(); virtual ~QDragLeaveEvent(); }; class QHelpEvent : QEvent { %TypeHeaderCode #include %End public: QHelpEvent(QEvent::Type type, const QPoint &pos, const QPoint &globalPos); virtual ~QHelpEvent(); int x() const; int y() const; int globalX() const; int globalY() const; const QPoint &pos() const; const QPoint &globalPos() const; }; class QStatusTipEvent : QEvent { %TypeHeaderCode #include %End public: explicit QStatusTipEvent(const QString &tip); virtual ~QStatusTipEvent(); QString tip() const; }; class QWhatsThisClickedEvent : QEvent { %TypeHeaderCode #include %End public: explicit QWhatsThisClickedEvent(const QString &href); virtual ~QWhatsThisClickedEvent(); QString href() const; }; class QActionEvent : QEvent { %TypeHintCode from PyQt5.QtWidgets import QAction %End %TypeHeaderCode #include %End public: QActionEvent(int type, QAction *action, QAction *before = 0); virtual ~QActionEvent(); QAction *action() const; QAction *before() const; }; class QFileOpenEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QFileOpenEvent(); QString file() const; QUrl url() const; bool openFile(QFile &file, QIODevice::OpenMode flags) const; }; class QShortcutEvent : QEvent { %TypeHeaderCode #include %End public: QShortcutEvent(const QKeySequence &key, int id, bool ambiguous = false); virtual ~QShortcutEvent(); bool isAmbiguous() const; const QKeySequence &key() const; int shortcutId() const; }; class QWindowStateChangeEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QWindowStateChangeEvent(); Qt::WindowStates oldState() const; }; class QTouchEvent : QInputEvent { %TypeHeaderCode #include %End public: class TouchPoint /NoDefaultCtors/ { %TypeHeaderCode #include %End public: int id() const; Qt::TouchPointState state() const; QPointF pos() const; QPointF startPos() const; QPointF lastPos() const; QPointF scenePos() const; QPointF startScenePos() const; QPointF lastScenePos() const; QPointF screenPos() const; QPointF startScreenPos() const; QPointF lastScreenPos() const; QPointF normalizedPos() const; QPointF startNormalizedPos() const; QPointF lastNormalizedPos() const; QRectF rect() const; QRectF sceneRect() const; QRectF screenRect() const; qreal pressure() const; enum InfoFlag { Pen, %If (Qt_5_8_0 -) Token, %End }; typedef QFlags InfoFlags; QVector2D velocity() const; QTouchEvent::TouchPoint::InfoFlags flags() const; QVector rawScreenPositions() const; %If (Qt_5_8_0 -) QPointingDeviceUniqueId uniqueId() const; %End %If (Qt_5_8_0 -) qreal rotation() const; %End %If (Qt_5_9_0 -) QSizeF ellipseDiameters() const; %End }; QTouchEvent(QEvent::Type eventType, QTouchDevice *device = 0, Qt::KeyboardModifiers modifiers = Qt::NoModifier, Qt::TouchPointStates touchPointStates = 0, const QList &touchPoints = QList()); virtual ~QTouchEvent(); QObject *target() const; Qt::TouchPointStates touchPointStates() const; const QList &touchPoints() const; QWindow *window() const; QTouchDevice *device() const; void setDevice(QTouchDevice *adevice); }; QFlags operator|(QTouchEvent::TouchPoint::InfoFlag f1, QFlags f2); QFlags operator|(QTouchEvent::TouchPoint::InfoFlag f1, QTouchEvent::TouchPoint::InfoFlag f2); class QExposeEvent : QEvent { %TypeHeaderCode #include %End public: explicit QExposeEvent(const QRegion &rgn); virtual ~QExposeEvent(); const QRegion ®ion() const; }; class QScrollPrepareEvent : QEvent { %TypeHeaderCode #include %End public: explicit QScrollPrepareEvent(const QPointF &startPos); virtual ~QScrollPrepareEvent(); QPointF startPos() const; QSizeF viewportSize() const; QRectF contentPosRange() const; QPointF contentPos() const; void setViewportSize(const QSizeF &size); void setContentPosRange(const QRectF &rect); void setContentPos(const QPointF &pos); }; class QScrollEvent : QEvent { %TypeHeaderCode #include %End public: enum ScrollState { ScrollStarted, ScrollUpdated, ScrollFinished, }; QScrollEvent(const QPointF &contentPos, const QPointF &overshoot, QScrollEvent::ScrollState scrollState); virtual ~QScrollEvent(); QPointF contentPos() const; QPointF overshootDistance() const; QScrollEvent::ScrollState scrollState() const; }; bool operator==(QKeyEvent *e, QKeySequence::StandardKey key); bool operator==(QKeySequence::StandardKey key, QKeyEvent *e); class QEnterEvent : QEvent { %TypeHeaderCode #include %End public: QEnterEvent(const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos); virtual ~QEnterEvent(); QPoint pos() const; QPoint globalPos() const; int x() const; int y() const; int globalX() const; int globalY() const; const QPointF &localPos() const; const QPointF &windowPos() const; const QPointF &screenPos() const; }; class QAction /External/; %If (Qt_5_2_0 -) class QNativeGestureEvent : QInputEvent { %TypeHeaderCode #include %End public: QNativeGestureEvent(Qt::NativeGestureType type, const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos, qreal value, ulong sequenceId, quint64 intArgument); %If (Qt_5_10_0 -) QNativeGestureEvent(Qt::NativeGestureType type, const QTouchDevice *dev, const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos, qreal value, ulong sequenceId, quint64 intArgument); %End %If (Qt_5_10_0 -) virtual ~QNativeGestureEvent(); %End Qt::NativeGestureType gestureType() const; qreal value() const; const QPoint pos() const; const QPoint globalPos() const; const QPointF &localPos() const; const QPointF &windowPos() const; const QPointF &screenPos() const; %If (Qt_5_10_0 -) const QTouchDevice *device() const; %End }; %End %If (Qt_5_5_0 -) class QPlatformSurfaceEvent : QEvent { %TypeHeaderCode #include %End public: enum SurfaceEventType { SurfaceCreated, SurfaceAboutToBeDestroyed, }; explicit QPlatformSurfaceEvent(QPlatformSurfaceEvent::SurfaceEventType surfaceEventType); virtual ~QPlatformSurfaceEvent(); QPlatformSurfaceEvent::SurfaceEventType surfaceEventType() const; }; %End %If (Qt_5_8_0 -) class QPointingDeviceUniqueId { %TypeHeaderCode #include %End public: QPointingDeviceUniqueId(); static QPointingDeviceUniqueId fromNumericId(qint64 id); bool isValid() const; qint64 numericId() const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %If (Qt_5_8_0 -) bool operator==(QPointingDeviceUniqueId lhs, QPointingDeviceUniqueId rhs); %End %If (Qt_5_8_0 -) bool operator!=(QPointingDeviceUniqueId lhs, QPointingDeviceUniqueId rhs); %End PyQt5_gpl-5.10.1/sip/QtGui/qfont.sip0000644000076500000240000001354013245233150017172 0ustar philstaff00000000000000// qfont.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFont { %TypeHeaderCode #include %End public: enum StyleHint { Helvetica, SansSerif, Times, Serif, Courier, TypeWriter, OldEnglish, Decorative, System, AnyStyle, Cursive, Monospace, Fantasy, }; enum StyleStrategy { PreferDefault, PreferBitmap, PreferDevice, PreferOutline, ForceOutline, PreferMatch, PreferQuality, PreferAntialias, NoAntialias, %If (Qt_5_4_0 -) NoSubpixelAntialias, %End OpenGLCompatible, NoFontMerging, ForceIntegerMetrics, %If (Qt_5_10_0 -) PreferNoShaping, %End }; enum Weight { %If (Qt_5_5_0 -) Thin, %End %If (Qt_5_5_0 -) ExtraLight, %End Light, Normal, %If (Qt_5_5_0 -) Medium, %End DemiBold, Bold, %If (Qt_5_5_0 -) ExtraBold, %End Black, }; enum Style { StyleNormal, StyleItalic, StyleOblique, }; enum Stretch { %If (Qt_5_8_0 -) AnyStretch, %End UltraCondensed, ExtraCondensed, Condensed, SemiCondensed, Unstretched, SemiExpanded, Expanded, ExtraExpanded, UltraExpanded, }; QFont(); QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false); QFont(const QFont &, QPaintDevice *pd); QFont(const QFont &); QFont(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QFont(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QFont(); QString family() const; void setFamily(const QString &); int pointSize() const; void setPointSize(int); qreal pointSizeF() const; void setPointSizeF(qreal); int pixelSize() const; void setPixelSize(int); int weight() const; void setWeight(int); void setStyle(QFont::Style style); QFont::Style style() const; bool underline() const; void setUnderline(bool); bool overline() const; void setOverline(bool); bool strikeOut() const; void setStrikeOut(bool); bool fixedPitch() const; void setFixedPitch(bool); bool kerning() const; void setKerning(bool); QFont::StyleHint styleHint() const; QFont::StyleStrategy styleStrategy() const; void setStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy = QFont::PreferDefault); void setStyleStrategy(QFont::StyleStrategy s); int stretch() const; void setStretch(int); bool rawMode() const; void setRawMode(bool); bool exactMatch() const; bool operator==(const QFont &) const; bool operator!=(const QFont &) const; bool operator<(const QFont &) const; bool isCopyOf(const QFont &) const; void setRawName(const QString &); QString rawName() const; QString key() const; QString toString() const; bool fromString(const QString &); static QString substitute(const QString &); static QStringList substitutes(const QString &); static QStringList substitutions(); static void insertSubstitution(const QString &, const QString &); static void insertSubstitutions(const QString &, const QStringList &); static void removeSubstitutions(const QString &); static void initialize(); static void cleanup(); static void cacheStatistics(); QString defaultFamily() const; QString lastResortFamily() const; QString lastResortFont() const; QFont resolve(const QFont &) const; bool bold() const; void setBold(bool enable); bool italic() const; void setItalic(bool b); enum Capitalization { MixedCase, AllUppercase, AllLowercase, SmallCaps, Capitalize, }; enum SpacingType { PercentageSpacing, AbsoluteSpacing, }; qreal letterSpacing() const; QFont::SpacingType letterSpacingType() const; void setLetterSpacing(QFont::SpacingType type, qreal spacing); qreal wordSpacing() const; void setWordSpacing(qreal spacing); void setCapitalization(QFont::Capitalization); QFont::Capitalization capitalization() const; enum HintingPreference { PreferDefaultHinting, PreferNoHinting, PreferVerticalHinting, PreferFullHinting, }; QString styleName() const; void setStyleName(const QString &styleName); void setHintingPreference(QFont::HintingPreference hintingPreference); QFont::HintingPreference hintingPreference() const; void swap(QFont &other /Constrained/); %If (Qt_5_3_0 -) long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End }; QDataStream &operator<<(QDataStream &, const QFont & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QFont & /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtGui/qfontdatabase.sip0000644000076500000240000000717513245233150020666 0ustar philstaff00000000000000// qfontdatabase.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFontDatabase { %TypeHeaderCode #include %End public: enum WritingSystem { Any, Latin, Greek, Cyrillic, Armenian, Hebrew, Arabic, Syriac, Thaana, Devanagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada, Malayalam, Sinhala, Thai, Lao, Tibetan, Myanmar, Georgian, Khmer, SimplifiedChinese, TraditionalChinese, Japanese, Korean, Vietnamese, Other, Symbol, Ogham, Runic, Nko, }; static QList standardSizes(); QFontDatabase(); QList writingSystems() const; QList writingSystems(const QString &family) const; QStringList families(QFontDatabase::WritingSystem writingSystem = QFontDatabase::Any) const; QStringList styles(const QString &family) const; QList pointSizes(const QString &family, const QString &style = QString()); QList smoothSizes(const QString &family, const QString &style); QString styleString(const QFont &font); QString styleString(const QFontInfo &fontInfo); QFont font(const QString &family, const QString &style, int pointSize) const; bool isBitmapScalable(const QString &family, const QString &style = QString()) const; bool isSmoothlyScalable(const QString &family, const QString &style = QString()) const; bool isScalable(const QString &family, const QString &style = QString()) const; bool isFixedPitch(const QString &family, const QString &style = QString()) const; bool italic(const QString &family, const QString &style) const; bool bold(const QString &family, const QString &style) const; int weight(const QString &family, const QString &style) const; static QString writingSystemName(QFontDatabase::WritingSystem writingSystem); static QString writingSystemSample(QFontDatabase::WritingSystem writingSystem); static int addApplicationFont(const QString &fileName); static int addApplicationFontFromData(const QByteArray &fontData); static QStringList applicationFontFamilies(int id); static bool removeApplicationFont(int id); static bool removeAllApplicationFonts(); static bool supportsThreadedFontRendering(); %If (Qt_5_2_0 -) enum SystemFont { GeneralFont, FixedFont, TitleFont, SmallestReadableFont, }; %End %If (Qt_5_2_0 -) static QFont systemFont(QFontDatabase::SystemFont type); %End %If (Qt_5_5_0 -) bool isPrivateFamily(const QString &family) const; %End }; PyQt5_gpl-5.10.1/sip/QtGui/qfontinfo.sip0000644000076500000240000000276113245233150020051 0ustar philstaff00000000000000// qfontinfo.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFontInfo { %TypeHeaderCode #include %End public: QFontInfo(const QFont &); QFontInfo(const QFontInfo &); ~QFontInfo(); QString family() const; int pixelSize() const; int pointSize() const; qreal pointSizeF() const; bool italic() const; QFont::Style style() const; int weight() const; bool bold() const; bool fixedPitch() const; QFont::StyleHint styleHint() const; bool rawMode() const; bool exactMatch() const; QString styleName() const; void swap(QFontInfo &other /Constrained/); }; PyQt5_gpl-5.10.1/sip/QtGui/qfontmetrics.sip0000644000076500000240000001366513245233150020571 0ustar philstaff00000000000000// qfontmetrics.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFontMetrics { %TypeHeaderCode #include %End public: explicit QFontMetrics(const QFont &); QFontMetrics(const QFont &, QPaintDevice *pd); QFontMetrics(const QFontMetrics &); ~QFontMetrics(); int ascent() const; int descent() const; int height() const; int leading() const; int lineSpacing() const; int minLeftBearing() const; int minRightBearing() const; int maxWidth() const; int xHeight() const; bool inFont(QChar) const; int leftBearing(QChar) const; int rightBearing(QChar) const; int width(QChar) const /PyName=widthChar/; int width(const QString &text, int length = -1) const; QRect boundingRect(QChar) const /PyName=boundingRectChar/; QRect boundingRect(const QString &text) const; QRect boundingRect(const QRect &rect, int flags, const QString &text, int tabStops = 0, SIP_PYLIST tabArray /AllowNone,TypeHint="Optional[List[int]]"/ = 0) const; %MethodCode int *tabarray = qtgui_tabarray(a4); sipRes = new QRect(sipCpp->boundingRect(*a0, a1, *a2, a3, tabarray)); if (!tabarray) delete[] tabarray; %End QRect boundingRect(int x, int y, int width, int height, int flags, const QString &text, int tabStops = 0, SIP_PYLIST tabArray /AllowNone,TypeHint="Optional[List[int]]"/ = 0) const; %MethodCode int *tabarray = qtgui_tabarray(a7); sipRes = new QRect(sipCpp->boundingRect(a0, a1, a2, a3, a4, *a5, a6, tabarray)); if (!tabarray) delete[] tabarray; %End QSize size(int flags, const QString &text, int tabStops = 0, SIP_PYLIST tabArray /AllowNone,TypeHint="Optional[List[int]]"/ = 0) const; %MethodCode int *tabarray = qtgui_tabarray(a3); sipRes = new QSize(sipCpp->size(a0, *a1, a2, tabarray)); if (!tabarray) delete[] tabarray; %End int underlinePos() const; int overlinePos() const; int strikeOutPos() const; int lineWidth() const; int averageCharWidth() const; QString elidedText(const QString &text, Qt::TextElideMode mode, int width, int flags = 0) const; bool operator==(const QFontMetrics &other) const; bool operator!=(const QFontMetrics &other) const; QRect tightBoundingRect(const QString &text) const; bool inFontUcs4(uint character) const; void swap(QFontMetrics &other /Constrained/); %If (Qt_5_8_0 -) int capHeight() const; %End }; class QFontMetricsF { %TypeHeaderCode #include %End public: explicit QFontMetricsF(const QFont &); QFontMetricsF(const QFont &, QPaintDevice *pd); QFontMetricsF(const QFontMetrics &); QFontMetricsF(const QFontMetricsF &); ~QFontMetricsF(); qreal ascent() const; qreal descent() const; qreal height() const; qreal leading() const; qreal lineSpacing() const; qreal minLeftBearing() const; qreal minRightBearing() const; qreal maxWidth() const; qreal xHeight() const; bool inFont(QChar) const; qreal leftBearing(QChar) const; qreal rightBearing(QChar) const; qreal width(QChar) const /PyName=widthChar/; qreal width(const QString &string) const; QRectF boundingRect(QChar) const /PyName=boundingRectChar/; QRectF boundingRect(const QString &string) const; QRectF boundingRect(const QRectF &rect, int flags, const QString &text, int tabStops = 0, SIP_PYLIST tabArray /AllowNone,TypeHint="Optional[List[int]]"/ = 0) const; %MethodCode int *tabarray = qtgui_tabarray(a4); sipRes = new QRectF(sipCpp->boundingRect(*a0, a1, *a2, a3, tabarray)); if (!tabarray) delete[] tabarray; %End QSizeF size(int flags, const QString &text, int tabStops = 0, SIP_PYLIST tabArray /AllowNone,TypeHint="Optional[List[int]]"/ = 0) const; %MethodCode int *tabarray = qtgui_tabarray(a3); sipRes = new QSizeF(sipCpp->size(a0, *a1, a2, tabarray)); if (!tabarray) delete[] tabarray; %End qreal underlinePos() const; qreal overlinePos() const; qreal strikeOutPos() const; qreal lineWidth() const; qreal averageCharWidth() const; QString elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const; bool operator==(const QFontMetricsF &other) const; bool operator!=(const QFontMetricsF &other) const; QRectF tightBoundingRect(const QString &text) const; bool inFontUcs4(uint character) const; void swap(QFontMetricsF &other /Constrained/); %If (Qt_5_8_0 -) qreal capHeight() const; %End }; %ModuleHeaderCode // Used by QFontMetrics and QFontMetricsF. int *qtgui_tabarray(PyObject *l); %End %ModuleCode // Convert an optional Python list to a 0 terminated array of integers on the // heap. int *qtgui_tabarray(PyObject *l) { if (!l || l == Py_None) return 0; int *arr = new int[PyList_Size(l) + 1]; Py_ssize_t i; for (i = 0; i < PyList_Size(l); ++i) arr[i] = SIPLong_AsLong(PyList_GetItem(l, i)); arr[i] = 0; return arr; } %End PyQt5_gpl-5.10.1/sip/QtGui/qgenericmatrix.sip0000644000076500000240000007522213245233150021072 0ustar philstaff00000000000000// qgenericmatrix.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // The implementation of QMatrix4x3. class QMatrix4x3 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[12]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"dddddddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7], (double)data[8], (double)data[9], (double)data[10], (double)data[11]); %End public: QMatrix4x3(); QMatrix4x3(const QMatrix4x3 &other); explicit QMatrix4x3(SIP_PYOBJECT values /TypeHint="Sequence[float]"/); %MethodCode PYQT_FLOAT values[12]; if ((sipError = qtgui_matrixDataFromSequence(a0, 12, values)) == sipErrorNone) sipCpp = new QMatrix4x3(values); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[12]; PYQT_FLOAT data[12]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 12; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix4x3(" "%R, %R, %R, " "%R, %R, %R, " "%R, %R, %R, " "%R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10], m[11]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix4x3("); for (i = 0; i < 12; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 12; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(12, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode PYQT_FLOAT values[12]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(12, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 3, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End %If (Qt_5_0_0 -) void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 3, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End %If (- Qt_5_0_0) void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 3, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End bool isIdentity() const; void setToIdentity(); %If (Qt_5_0_0 -) void fill(float value); %End %If (- Qt_5_0_0) void fill(qreal value); %End QMatrix3x4 transposed() const; QMatrix4x3 &operator+=(const QMatrix4x3 &); QMatrix4x3 &operator-=(const QMatrix4x3 &); %If (Qt_5_0_0 -) QMatrix4x3 &operator*=(float); QMatrix4x3 &operator/=(float); %End %If (- Qt_5_0_0) QMatrix4x3 &operator*=(qreal); QMatrix4x3 &operator/=(qreal); %End bool operator==(const QMatrix4x3 &) const; bool operator!=(const QMatrix4x3 &) const; }; // The implementation of QMatrix4x2. class QMatrix4x2 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[8]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"dddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7]); %End public: QMatrix4x2(); QMatrix4x2(const QMatrix4x2 &other); explicit QMatrix4x2(SIP_PYOBJECT values /TypeHint="Sequence[float]"/); %MethodCode PYQT_FLOAT values[8]; if ((sipError = qtgui_matrixDataFromSequence(a0, 8, values)) == sipErrorNone) sipCpp = new QMatrix4x2(values); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[8]; PYQT_FLOAT data[8]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 8; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix4x2(" "%R, %R, " "%R, %R, " "%R, %R, " "%R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix4x2("); for (i = 0; i < 8; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 8; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(8, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode PYQT_FLOAT values[8]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(8, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 2, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End %If (Qt_5_0_0 -) void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 2, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End %If (- Qt_5_0_0) void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 2, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End bool isIdentity() const; void setToIdentity(); %If (Qt_5_0_0 -) void fill(float value); %End %If (- Qt_5_0_0) void fill(qreal value); %End QMatrix2x4 transposed() const; QMatrix4x2 &operator+=(const QMatrix4x2 &); QMatrix4x2 &operator-=(const QMatrix4x2 &); %If (Qt_5_0_0 -) QMatrix4x2 &operator*=(float); QMatrix4x2 &operator/=(float); %End %If (- Qt_5_0_0) QMatrix4x2 &operator*=(qreal); QMatrix4x2 &operator/=(qreal); %End bool operator==(const QMatrix4x2 &) const; bool operator!=(const QMatrix4x2 &) const; }; // The implementation of QMatrix3x4. class QMatrix3x4 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[12]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"dddddddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7], (double)data[8], (double)data[9], (double)data[10], (double)data[11]); %End public: QMatrix3x4(); QMatrix3x4(const QMatrix3x4 &other); explicit QMatrix3x4(SIP_PYOBJECT values /TypeHint="Sequence[float]"/); %MethodCode PYQT_FLOAT values[12]; if ((sipError = qtgui_matrixDataFromSequence(a0, 12, values)) == sipErrorNone) sipCpp = new QMatrix3x4(values); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[12]; PYQT_FLOAT data[12]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 12; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix3x4(" "%R, %R, %R, " "%R, %R, %R, " "%R, %R, %R, " "%R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10], m[11]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix3x4("); for (i = 0; i < 12; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 12; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(12, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode PYQT_FLOAT values[12]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(12, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 4, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End %If (Qt_5_0_0 -) void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 4, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End %If (- Qt_5_0_0) void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 4, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End bool isIdentity() const; void setToIdentity(); %If (Qt_5_0_0 -) void fill(qreal value); %End %If (- Qt_5_0_0) void fill(qreal value); %End QMatrix4x3 transposed() const; QMatrix3x4 &operator+=(const QMatrix3x4 &); QMatrix3x4 &operator-=(const QMatrix3x4 &); %If (Qt_5_0_0 -) QMatrix3x4 &operator*=(float); QMatrix3x4 &operator/=(float); %End %If (- Qt_5_0_0) QMatrix3x4 &operator*=(qreal); QMatrix3x4 &operator/=(qreal); %End bool operator==(const QMatrix3x4 &) const; bool operator!=(const QMatrix3x4 &) const; }; // The implementation of QMatrix3x3. class QMatrix3x3 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[9]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"ddddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7], (double)data[8]); %End public: QMatrix3x3(); QMatrix3x3(const QMatrix3x3 &other); explicit QMatrix3x3(SIP_PYOBJECT values /TypeHint="Sequence[float]"/); %MethodCode PYQT_FLOAT values[9]; if ((sipError = qtgui_matrixDataFromSequence(a0, 9, values)) == sipErrorNone) sipCpp = new QMatrix3x3(values); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[9]; PYQT_FLOAT data[9]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 9; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix3x3(" "%R, %R, %R, " "%R, %R, %R, " "%R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix3x3("); for (i = 0; i < 9; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 9; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(9, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode PYQT_FLOAT values[9]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(9, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 3, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End %If (Qt_5_0_0 -) void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 3, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End %If (- Qt_5_0_0) void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 3, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End bool isIdentity() const; void setToIdentity(); %If (Qt_5_0_0 -) void fill(float value); %End %If (- Qt_5_0_0) void fill(qreal value); %End QMatrix3x3 transposed() const; QMatrix3x3 &operator+=(const QMatrix3x3 &); QMatrix3x3 &operator-=(const QMatrix3x3 &); %If (Qt_5_0_0 -) QMatrix3x3 &operator*=(float); QMatrix3x3 &operator/=(float); %End %If (- Qt_5_0_0) QMatrix3x3 &operator*=(qreal); QMatrix3x3 &operator/=(qreal); %End bool operator==(const QMatrix3x3 &) const; bool operator!=(const QMatrix3x3 &) const; }; // The implementation of QMatrix3x2. class QMatrix3x2 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[6]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"dddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5]); %End public: QMatrix3x2(); QMatrix3x2(const QMatrix3x2 &other); explicit QMatrix3x2(SIP_PYOBJECT values /TypeHint="Sequence[float]"/); %MethodCode PYQT_FLOAT values[6]; if ((sipError = qtgui_matrixDataFromSequence(a0, 6, values)) == sipErrorNone) sipCpp = new QMatrix3x2(values); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[6]; PYQT_FLOAT data[6]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 6; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix3x2(" "%R, %R, " "%R, %R, " "%R, %R)", m[0], m[1], m[2], m[3], m[4], m[5]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix3x2("); for (i = 0; i < 6; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 6; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(6, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode PYQT_FLOAT values[6]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(6, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 2, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End %If (Qt_5_0_0 -) void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 2, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End %If (- Qt_5_0_0) void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 2, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End bool isIdentity() const; void setToIdentity(); %If (Qt_5_0_0 -) void fill(float value); %End %If (- Qt_5_0_0) void fill(qreal value); %End QMatrix2x3 transposed() const; QMatrix3x2 &operator+=(const QMatrix3x2 &); QMatrix3x2 &operator-=(const QMatrix3x2 &); %If (Qt_5_0_0 -) QMatrix3x2 &operator*=(float); QMatrix3x2 &operator/=(float); %End %If (- Qt_5_0_0) QMatrix3x2 &operator*=(qreal); QMatrix3x2 &operator/=(qreal); %End bool operator==(const QMatrix3x2 &) const; bool operator!=(const QMatrix3x2 &) const; }; // The implementation of QMatrix2x4. class QMatrix2x4 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[8]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"dddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7]); %End public: QMatrix2x4(); QMatrix2x4(const QMatrix2x4 &other); explicit QMatrix2x4(SIP_PYOBJECT values /TypeHint="Sequence[float]"/); %MethodCode PYQT_FLOAT values[8]; if ((sipError = qtgui_matrixDataFromSequence(a0, 8, values)) == sipErrorNone) sipCpp = new QMatrix2x4(values); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[8]; PYQT_FLOAT data[8]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 8; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix2x4(" "%R, %R, %R, %R, " "%R, %R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix2x4("); for (i = 0; i < 8; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 8; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(8, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode PYQT_FLOAT values[8]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(8, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 4, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End %If (Qt_5_0_0 -) void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 4, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End %If (- Qt_5_0_0) void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 4, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End bool isIdentity() const; void setToIdentity(); %If (Qt_5_0_0 -) void fill(float value); %End %If (- Qt_5_0_0) void fill(qreal value); %End QMatrix4x2 transposed() const; QMatrix2x4 &operator+=(const QMatrix2x4 &); QMatrix2x4 &operator-=(const QMatrix2x4 &); %If (Qt_5_0_0 -) QMatrix2x4 &operator*=(float); QMatrix2x4 &operator/=(float); %End %If (- Qt_5_0_0) QMatrix2x4 &operator*=(qreal); QMatrix2x4 &operator/=(qreal); %End bool operator==(const QMatrix2x4 &) const; bool operator!=(const QMatrix2x4 &) const; }; // The implementation of QMatrix2x3. class QMatrix2x3 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[6]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"dddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5]); %End public: QMatrix2x3(); QMatrix2x3(const QMatrix2x3 &other); explicit QMatrix2x3(SIP_PYOBJECT values /TypeHint="Sequence[float]"/); %MethodCode PYQT_FLOAT values[6]; if ((sipError = qtgui_matrixDataFromSequence(a0, 6, values)) == sipErrorNone) sipCpp = new QMatrix2x3(values); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[6]; PYQT_FLOAT data[6]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 6; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix2x3(" "%R, %R, %R, " "%R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix2x3("); for (i = 0; i < 6; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 6; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(6, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode PYQT_FLOAT values[6]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(6, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 3, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End %If (Qt_5_0_0 -) void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 3, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End %If (- Qt_5_0_0) void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 3, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End bool isIdentity() const; void setToIdentity(); %If (Qt_5_0_0 -) void fill(float value); %End %If (- Qt_5_0_0) void fill(qreal value); %End QMatrix3x2 transposed() const; QMatrix2x3 &operator+=(const QMatrix2x3 &); QMatrix2x3 &operator-=(const QMatrix2x3 &); %If (Qt_5_0_0 -) QMatrix2x3 &operator*=(float); QMatrix2x3 &operator/=(float); %End %If (- Qt_5_0_0) QMatrix2x3 &operator*=(qreal); QMatrix2x3 &operator/=(qreal); %End bool operator==(const QMatrix2x3 &) const; bool operator!=(const QMatrix2x3 &) const; }; // The implementation of QMatrix2x2. class QMatrix2x2 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[4]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"dddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3]); %End public: QMatrix2x2(); QMatrix2x2(const QMatrix2x2 &other); explicit QMatrix2x2(SIP_PYOBJECT values /TypeHint="Sequence[float]"/); %MethodCode PYQT_FLOAT values[4]; if ((sipError = qtgui_matrixDataFromSequence(a0, 4, values)) == sipErrorNone) sipCpp = new QMatrix2x2(values); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[4]; PYQT_FLOAT data[4]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 4; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix2x2(" "%R, %R, " "%R, %R)", m[0], m[1], m[2], m[3]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix2x2("); for (i = 0; i < 4; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 4; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(4, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode PYQT_FLOAT values[4]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(4, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 2, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End %If (Qt_5_0_0 -) void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 2, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End %If (- Qt_5_0_0) void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 2, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End %End bool isIdentity() const; void setToIdentity(); %If (Qt_5_0_0 -) void fill(float value); %End %If (- Qt_5_0_0) void fill(qreal value); %End QMatrix2x2 transposed() const; QMatrix2x2 &operator+=(const QMatrix2x2 &); QMatrix2x2 &operator-=(const QMatrix2x2 &); %If (Qt_5_0_0 -) QMatrix2x2 &operator*=(float); QMatrix2x2 &operator/=(float); %End %If (- Qt_5_0_0) QMatrix2x2 &operator*=(qreal); QMatrix2x2 &operator/=(qreal); %End bool operator==(const QMatrix2x2 &) const; bool operator!=(const QMatrix2x2 &) const; }; PyQt5_gpl-5.10.1/sip/QtGui/qglyphrun.sip0000644000076500000240000000441413245233150020074 0ustar philstaff00000000000000// qglyphrun.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_RawFont) class QGlyphRun { %TypeHeaderCode #include %End public: QGlyphRun(); QGlyphRun(const QGlyphRun &other); ~QGlyphRun(); QRawFont rawFont() const; void setRawFont(const QRawFont &rawFont); QVector glyphIndexes() const; void setGlyphIndexes(const QVector &glyphIndexes); QVector positions() const; void setPositions(const QVector &positions); void clear(); bool operator==(const QGlyphRun &other) const; bool operator!=(const QGlyphRun &other) const; void setOverline(bool overline); bool overline() const; void setUnderline(bool underline); bool underline() const; void setStrikeOut(bool strikeOut); bool strikeOut() const; enum GlyphRunFlag { Overline, Underline, StrikeOut, RightToLeft, SplitLigature, }; typedef QFlags GlyphRunFlags; void setRightToLeft(bool on); bool isRightToLeft() const; void setFlag(QGlyphRun::GlyphRunFlag flag, bool enabled = true); void setFlags(QGlyphRun::GlyphRunFlags flags); QGlyphRun::GlyphRunFlags flags() const; void setBoundingRect(const QRectF &boundingRect); QRectF boundingRect() const; bool isEmpty() const; void swap(QGlyphRun &other /Constrained/); }; %End PyQt5_gpl-5.10.1/sip/QtGui/qguiapplication.sip0000644000076500000240000002507113245233150021236 0ustar philstaff00000000000000// qguiapplication.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGuiApplication : QCoreApplication { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { #if QT_VERSION >= 0x050100 && defined(SIP_FEATURE_PyQt_Desktop_OpenGL) {sipName_QOpenGLTimeMonitor, &sipType_QOpenGLTimeMonitor, -1, 1}, #else {0, 0, -1, 1}, #endif {sipName_QSyntaxHighlighter, &sipType_QSyntaxHighlighter, -1, 2}, {sipName_QWindow, &sipType_QWindow, 25, 3}, {sipName_QPdfWriter, &sipType_QPdfWriter, -1, 4}, {sipName_QMovie, &sipType_QMovie, -1, 5}, #if defined(SIP_FEATURE_PyQt_SessionManager) {sipName_QSessionManager, &sipType_QSessionManager, -1, 6}, #else {0, 0, -1, 6}, #endif {sipName_QAbstractTextDocumentLayout, &sipType_QAbstractTextDocumentLayout, -1, 7}, {sipName_QScreen, &sipType_QScreen, -1, 8}, {sipName_QTextObject, &sipType_QTextObject, 28, 9}, {sipName_QStandardItemModel, &sipType_QStandardItemModel, -1, 10}, {sipName_QDrag, &sipType_QDrag, -1, 11}, #if defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLContextGroup, &sipType_QOpenGLContextGroup, -1, 12}, #else {0, 0, -1, 12}, #endif {sipName_QValidator, &sipType_QValidator, 32, 13}, {sipName_QTextDocument, &sipType_QTextDocument, -1, 14}, #if QT_VERSION >= 0x050100 && defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLVertexArrayObject, &sipType_QOpenGLVertexArrayObject, -1, 15}, #else {0, 0, -1, 15}, #endif #if QT_VERSION >= 0x050100 && defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLDebugLogger, &sipType_QOpenGLDebugLogger, -1, 16}, #else {0, 0, -1, 16}, #endif {sipName_QGuiApplication, &sipType_QGuiApplication, -1, 17}, #if QT_VERSION >= 0x050100 && defined(SIP_FEATURE_PyQt_Desktop_OpenGL) {sipName_QOpenGLTimerQuery, &sipType_QOpenGLTimerQuery, -1, 18}, #else {0, 0, -1, 18}, #endif #if QT_VERSION >= 0x050100 {sipName_QOffscreenSurface, &sipType_QOffscreenSurface, -1, 19}, #else {0, 0, -1, 19}, #endif #if defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLShaderProgram, &sipType_QOpenGLShaderProgram, -1, 20}, #else {0, 0, -1, 20}, #endif {sipName_QStyleHints, &sipType_QStyleHints, -1, 21}, {sipName_QClipboard, &sipType_QClipboard, -1, 22}, #if defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLShader, &sipType_QOpenGLShader, -1, 23}, #else {0, 0, -1, 23}, #endif #if defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLContext, &sipType_QOpenGLContext, -1, 24}, #else {0, 0, -1, 24}, #endif {sipName_QInputMethod, &sipType_QInputMethod, -1, -1}, #if QT_VERSION >= 0x050400 {sipName_QPaintDeviceWindow, &sipType_QPaintDeviceWindow, 26, -1}, #else {0, 0, 26, -1}, #endif #if QT_VERSION >= 0x050400 && defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLWindow, &sipType_QOpenGLWindow, -1, 27}, #else {0, 0, -1, 27}, #endif #if QT_VERSION >= 0x050400 {sipName_QRasterWindow, &sipType_QRasterWindow, -1, -1}, #else {0, 0, -1, -1}, #endif {sipName_QTextBlockGroup, &sipType_QTextBlockGroup, 30, 29}, {sipName_QTextFrame, &sipType_QTextFrame, 31, -1}, {sipName_QTextList, &sipType_QTextList, -1, -1}, {sipName_QTextTable, &sipType_QTextTable, -1, -1}, #if QT_VERSION >= 0x050100 {sipName_QRegularExpressionValidator, &sipType_QRegularExpressionValidator, -1, 33}, #else {0, 0, -1, 33}, #endif {sipName_QIntValidator, &sipType_QIntValidator, -1, 34}, {sipName_QDoubleValidator, &sipType_QDoubleValidator, -1, 35}, {sipName_QRegExpValidator, &sipType_QRegExpValidator, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QGuiApplication(SIP_PYLIST argv /TypeHint="List[str]"/) /PostHook=__pyQtQAppHook__/ [(int &argc, char **argv, int = ApplicationFlags)]; %MethodCode // The Python interface is a list of argument strings that is modified. int argc; char **argv; // Convert the list. if ((argv = pyqt5_qtgui_from_argv_list(a0, argc)) == NULL) sipIsErr = 1; else { // Create it now the arguments are right. static int nargc; nargc = argc; Py_BEGIN_ALLOW_THREADS sipCpp = new sipQGuiApplication(nargc, argv, QCoreApplication::ApplicationFlags); Py_END_ALLOW_THREADS // Now modify the original list. pyqt5_qtgui_update_argv_list(a0, argc, argv); } %End virtual ~QGuiApplication() /ReleaseGIL/; static QWindowList allWindows(); static QWindowList topLevelWindows(); static QWindow *topLevelAt(const QPoint &pos); static QString platformName(); static QWindow *focusWindow(); static QObject *focusObject(); static QScreen *primaryScreen(); static QList screens(); static QCursor *overrideCursor(); static void setOverrideCursor(const QCursor &); static void changeOverrideCursor(const QCursor &); static void restoreOverrideCursor(); static QFont font(); static void setFont(const QFont &); static QClipboard *clipboard(); static QPalette palette(); static void setPalette(const QPalette &pal); static Qt::KeyboardModifiers keyboardModifiers(); static Qt::KeyboardModifiers queryKeyboardModifiers(); static Qt::MouseButtons mouseButtons(); static void setLayoutDirection(Qt::LayoutDirection direction); static Qt::LayoutDirection layoutDirection(); static bool isRightToLeft(); static bool isLeftToRight(); static void setDesktopSettingsAware(bool on); static bool desktopSettingsAware(); static void setQuitOnLastWindowClosed(bool quit); static bool quitOnLastWindowClosed(); static int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %If (Py_v3) static int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %End virtual bool notify(QObject *, QEvent *); signals: void fontDatabaseChanged(); void screenAdded(QScreen *screen); void lastWindowClosed(); void focusObjectChanged(QObject *focusObject); %If (PyQt_SessionManager) void commitDataRequest(QSessionManager &sessionManager); %End %If (PyQt_SessionManager) void saveStateRequest(QSessionManager &sessionManager); %End void focusWindowChanged(QWindow *focusWindow); %If (Qt_5_2_0 -) void applicationStateChanged(Qt::ApplicationState state); %End public: %If (Qt_5_8_0 -) void applicationDisplayNameChanged(); %End static void setApplicationDisplayName(const QString &name); static QString applicationDisplayName(); static QWindow *modalWindow(); qreal devicePixelRatio() const; %If (PyQt_SessionManager) bool isSessionRestored() const; %End %If (PyQt_SessionManager) QString sessionId() const; %End %If (PyQt_SessionManager) QString sessionKey() const; %End %If (PyQt_SessionManager) bool isSavingSession() const; %End %If (Qt_5_2_0 -) static Qt::ApplicationState applicationState(); %End %If (Qt_5_2_0 -) static void sync(); %End %If (Qt_5_3_0 -) static void setWindowIcon(const QIcon &icon); %End %If (Qt_5_3_0 -) static QIcon windowIcon(); %End protected: virtual bool event(QEvent *); signals: %If (Qt_5_4_0 -) void screenRemoved(QScreen *screen); %End %If (Qt_5_4_0 -) void layoutDirectionChanged(Qt::LayoutDirection direction); %End %If (Qt_5_4_0 -) void paletteChanged(const QPalette &pal); %End public: %If (Qt_5_6_0 -) %If (PyQt_SessionManager) static bool isFallbackSessionManagementEnabled(); %End %End %If (Qt_5_6_0 -) %If (PyQt_SessionManager) static void setFallbackSessionManagementEnabled(bool); %End %End signals: %If (Qt_5_6_0 -) void primaryScreenChanged(QScreen *screen); %End public: %If (Qt_5_7_0 -) static void setDesktopFileName(const QString &name); %End %If (Qt_5_7_0 -) static QString desktopFileName(); %End %If (Qt_5_10_0 -) static QScreen *screenAt(const QPoint &point); %End private: QGuiApplication(const QGuiApplication &); }; %ModuleHeaderCode // Imports from QtCore. typedef char **(*pyqt5_qtgui_from_argv_list_t)(PyObject *, int &); extern pyqt5_qtgui_from_argv_list_t pyqt5_qtgui_from_argv_list; typedef void (*pyqt5_qtgui_update_argv_list_t)(PyObject *, int, char **); extern pyqt5_qtgui_update_argv_list_t pyqt5_qtgui_update_argv_list; %End %ModuleCode // Imports from QtCore. pyqt5_qtgui_from_argv_list_t pyqt5_qtgui_from_argv_list; pyqt5_qtgui_update_argv_list_t pyqt5_qtgui_update_argv_list; // Forward declarations not in any header files but are part of the API. void qt_set_sequence_auto_mnemonic(bool enable); %End %InitialisationCode // Export our own helpers. sipExportSymbol("qtgui_wrap_ancestors", (void *)qtgui_wrap_ancestors); %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtgui_from_argv_list = (pyqt5_qtgui_from_argv_list_t)sipImportSymbol("pyqt5_from_argv_list"); Q_ASSERT(pyqt5_qtgui_from_argv_list); pyqt5_qtgui_update_argv_list = (pyqt5_qtgui_update_argv_list_t)sipImportSymbol("pyqt5_update_argv_list"); Q_ASSERT(pyqt5_qtgui_update_argv_list); %End PyQt5_gpl-5.10.1/sip/QtGui/qicon.sip0000644000076500000240000000761613245233150017163 0ustar philstaff00000000000000// qicon.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QIcon /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum Mode { Normal, Disabled, Active, Selected, }; enum State { On, Off, }; QIcon(); QIcon(const QPixmap &pixmap); QIcon(const QIcon &other); explicit QIcon(const QString &fileName); explicit QIcon(QIconEngine *engine /Transfer/); QIcon(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QIcon(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QIcon(); QPixmap pixmap(const QSize &size, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; QPixmap pixmap(int w, int h, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; QPixmap pixmap(int extent, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; %If (Qt_5_1_0 -) QPixmap pixmap(QWindow *window, const QSize &size, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; %End QSize actualSize(const QSize &size, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; %If (Qt_5_1_0 -) QSize actualSize(QWindow *window, const QSize &size, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; %End QList availableSizes(QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; void paint(QPainter *painter, const QRect &rect, Qt::Alignment alignment = Qt::AlignCenter, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; void paint(QPainter *painter, int x, int y, int w, int h, Qt::Alignment alignment = Qt::AlignCenter, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; bool isNull() const; bool isDetached() const; void addPixmap(const QPixmap &pixmap, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off); void addFile(const QString &fileName, const QSize &size = QSize(), QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off); qint64 cacheKey() const; %If (Qt_5_7_0 -) static QIcon fromTheme(const QString &name); %End %If (Qt_5_7_0 -) static QIcon fromTheme(const QString &name, const QIcon &fallback); %End %If (- Qt_5_7_0) static QIcon fromTheme(const QString &name, const QIcon &fallback = QIcon()); %End static bool hasThemeIcon(const QString &name); static QStringList themeSearchPaths(); static void setThemeSearchPaths(const QStringList &searchpath); static QString themeName(); static void setThemeName(const QString &path); QString name() const; void swap(QIcon &other /Constrained/); %If (Qt_5_6_0 -) void setIsMask(bool isMask); %End %If (Qt_5_6_0 -) bool isMask() const; %End }; QDataStream &operator<<(QDataStream &, const QIcon & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QIcon & /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtGui/qiconengine.sip0000644000076500000240000000526513245233150020347 0ustar philstaff00000000000000// qiconengine.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QIconEngine /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: %If (Qt_5_6_0 -) QIconEngine(); %End %If (Qt_5_8_0 -) QIconEngine(const QIconEngine &other); %End virtual ~QIconEngine(); virtual void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) = 0; virtual QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state); virtual QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state); virtual void addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon::State state); virtual void addFile(const QString &fileName, const QSize &size, QIcon::Mode mode, QIcon::State state); virtual QString key() const; virtual QIconEngine *clone() const = 0 /Factory/; virtual bool read(QDataStream &in); virtual bool write(QDataStream &out) const; enum IconEngineHook { AvailableSizesHook, IconNameHook, %If (Qt_5_7_0 -) IsNullHook, %End %If (Qt_5_9_0 -) ScaledPixmapHook, %End }; struct AvailableSizesArgument { %TypeHeaderCode #include %End QIcon::Mode mode; QIcon::State state; QList sizes; }; virtual QList availableSizes(QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; virtual QString iconName() const; %If (Qt_5_7_0 -) bool isNull() const; %End %If (Qt_5_9_0 -) QPixmap scaledPixmap(const QSize &size, QIcon::Mode mode, QIcon::State state, qreal scale); %End %If (Qt_5_9_0 -) struct ScaledPixmapArgument { %TypeHeaderCode #include %End QSize size; QIcon::Mode mode; QIcon::State state; qreal scale; QPixmap pixmap; }; %End }; PyQt5_gpl-5.10.1/sip/QtGui/qimage.sip0000644000076500000240000002253113245233150017306 0ustar philstaff00000000000000// qimage.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QImage : QPaintDevice { %TypeHeaderCode #include %End public: enum InvertMode { InvertRgb, InvertRgba, }; enum Format { Format_Invalid, Format_Mono, Format_MonoLSB, Format_Indexed8, Format_RGB32, Format_ARGB32, Format_ARGB32_Premultiplied, Format_RGB16, Format_ARGB8565_Premultiplied, Format_RGB666, Format_ARGB6666_Premultiplied, Format_RGB555, Format_ARGB8555_Premultiplied, Format_RGB888, Format_RGB444, Format_ARGB4444_Premultiplied, %If (Qt_5_2_0 -) Format_RGBX8888, %End %If (Qt_5_2_0 -) Format_RGBA8888, %End %If (Qt_5_2_0 -) Format_RGBA8888_Premultiplied, %End %If (Qt_5_4_0 -) Format_BGR30, %End %If (Qt_5_4_0 -) Format_A2BGR30_Premultiplied, %End %If (Qt_5_4_0 -) Format_RGB30, %End %If (Qt_5_4_0 -) Format_A2RGB30_Premultiplied, %End %If (Qt_5_5_0 -) Format_Alpha8, %End %If (Qt_5_5_0 -) Format_Grayscale8, %End }; QImage(); QImage(const QSize &size, QImage::Format format); QImage(int width, int height, QImage::Format format); QImage(const uchar *data /KeepReference/, int width, int height, QImage::Format format); QImage(void *data, int width, int height, QImage::Format format) [(uchar *data, int width, int height, QImage::Format format)]; QImage(const uchar *data /KeepReference/, int width, int height, int bytesPerLine, QImage::Format format); QImage(void *data, int width, int height, int bytesPerLine, QImage::Format format) [(uchar *data, int width, int height, int bytesPerLine, QImage::Format format)]; explicit QImage(SIP_PYLIST xpm /TypeHint="List[str]"/) [(const char **xpm)]; %MethodCode // The Python interface is a list of strings that make up the image. const char **str = QtGui_ListToArray(a0); if (str) { sipCpp = new sipQImage(str); QtGui_DeleteArray(str); } else sipIsErr = 1; %End QImage(const QString &fileName, const char *format = 0) /ReleaseGIL/; QImage(const QImage &); QImage(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new sipQImage(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End virtual ~QImage(); bool isNull() const; virtual int devType() const; bool operator==(const QImage &) const; bool operator!=(const QImage &) const; void detach(); bool isDetached() const; QImage copy(const QRect &rect = QRect()) const; QImage copy(int x, int y, int w, int h) const; QImage::Format format() const; QImage convertToFormat(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) const; QImage convertToFormat(QImage::Format format, const QVector &colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor) const; int width() const; int height() const; QSize size() const; QRect rect() const; int depth() const; QRgb color(int i) const; void setColor(int i, QRgb c); bool allGray() const; bool isGrayscale() const; void *bits() [uchar * ()]; const void *constBits() const [const uchar * ()]; void *scanLine(int) [uchar * (int)]; const void *constScanLine(int) const [const uchar * (int)]; int bytesPerLine() const; bool valid(const QPoint &pt) const; bool valid(int x, int y) const; int pixelIndex(const QPoint &pt) const; int pixelIndex(int x, int y) const; QRgb pixel(const QPoint &pt) const; QRgb pixel(int x, int y) const; void setPixel(const QPoint &pt, uint index_or_rgb); void setPixel(int x, int y, uint index_or_rgb); QVector colorTable() const; void setColorTable(const QVector colors); void fill(Qt::GlobalColor color /Constrained/); void fill(const QColor &color); void fill(uint pixel); bool hasAlphaChannel() const; QImage createAlphaMask(Qt::ImageConversionFlags flags = Qt::AutoColor) const; QImage createHeuristicMask(bool clipTight = true) const; QImage scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const; QImage scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const; QImage scaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const; QImage scaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const; QImage mirrored(bool horizontal = false, bool vertical = true) const; QImage rgbSwapped() const; void invertPixels(QImage::InvertMode mode = QImage::InvertRgb); bool load(QIODevice *device, const char *format) /ReleaseGIL/; bool load(const QString &fileName, const char *format = 0) /ReleaseGIL/; bool loadFromData(const uchar *data /Array/, int len /ArraySize/, const char *format = 0); bool loadFromData(const QByteArray &data, const char *format = 0); bool save(const QString &fileName, const char *format = 0, int quality = -1) const /ReleaseGIL/; bool save(QIODevice *device, const char *format = 0, int quality = -1) const /ReleaseGIL/; static QImage fromData(const uchar *data /Array/, int size /ArraySize/, const char *format = 0); static QImage fromData(const QByteArray &data, const char *format = 0); virtual QPaintEngine *paintEngine() const; int dotsPerMeterX() const; int dotsPerMeterY() const; void setDotsPerMeterX(int); void setDotsPerMeterY(int); QPoint offset() const; void setOffset(const QPoint &); QStringList textKeys() const; QString text(const QString &key = QString()) const; void setText(const QString &key, const QString &value); protected: virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; %If (Qt_5_5_0 -) QImage smoothScaled(int w, int h) const; %End public: QImage createMaskFromColor(QRgb color, Qt::MaskMode mode = Qt::MaskInColor) const; QImage transformed(const QTransform &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const; static QTransform trueMatrix(const QTransform &, int w, int h); qint64 cacheKey() const; int colorCount() const; void setColorCount(int); int byteCount() const; int bitPlaneCount() const; void swap(QImage &other /Constrained/); qreal devicePixelRatio() const; void setDevicePixelRatio(qreal scaleFactor); %If (Qt_5_4_0 -) QPixelFormat pixelFormat() const; %End %If (Qt_5_4_0 -) static QPixelFormat toPixelFormat(QImage::Format format); %End %If (Qt_5_4_0 -) static QImage::Format toImageFormat(QPixelFormat format); %End %If (Qt_5_6_0 -) QColor pixelColor(int x, int y) const; %End %If (Qt_5_6_0 -) QColor pixelColor(const QPoint &pt) const; %End %If (Qt_5_6_0 -) void setPixelColor(int x, int y, const QColor &c); %End %If (Qt_5_6_0 -) void setPixelColor(const QPoint &pt, const QColor &c); %End %If (Qt_5_9_0 -) bool reinterpretAsFormat(QImage::Format f); %End %If (Qt_5_10_0 -) SIP_SSIZE_T sizeInBytes() const [qsizetype ()]; %End }; QDataStream &operator<<(QDataStream &, const QImage & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QImage & /Constrained/) /ReleaseGIL/; %ModuleHeaderCode const char **QtGui_ListToArray(PyObject *lst); void QtGui_DeleteArray(const char **arr); %End %ModuleCode // Convert a list of strings to an array of ASCII strings on the heap. Used by // QImage and QPixmap. const char **QtGui_ListToArray(PyObject *lst) { Py_ssize_t nstr = PyList_Size(lst); const char **arr = new const char *[nstr + 1]; for (Py_ssize_t i = 0; i < nstr; ++i) { PyObject *ascii_obj = PyList_GetItem(lst, i); const char *ascii = sipString_AsASCIIString(&ascii_obj); if (!ascii) { while (i-- > 0) delete[] arr[i]; delete[] arr; return 0; } // Copy the string. arr[i] = qstrdup(ascii); Py_DECREF(ascii_obj); } // The sentinal. arr[nstr] = 0; return arr; } // Return a string array created by QtGui_ListToArray() to the heap. void QtGui_DeleteArray(const char **arr) { for (Py_ssize_t i = 0; arr[i]; ++i) delete[] arr[i]; delete[] arr; } %End PyQt5_gpl-5.10.1/sip/QtGui/qimageiohandler.sip0000644000076500000240000000554713245233150021204 0ustar philstaff00000000000000// qimageiohandler.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QImageIOHandler { %TypeHeaderCode #include %End public: enum ImageOption { Size, ClipRect, Description, ScaledClipRect, ScaledSize, CompressionRatio, Gamma, Quality, Name, SubType, IncrementalReading, Endianness, Animation, BackgroundColor, %If (Qt_5_4_0 -) SupportedSubTypes, %End %If (Qt_5_5_0 -) OptimizedWrite, %End %If (Qt_5_5_0 -) ProgressiveScanWrite, %End %If (Qt_5_5_0 -) ImageTransformation, %End %If (Qt_5_5_0 -) TransformedByDefault, %End }; QImageIOHandler(); virtual ~QImageIOHandler(); void setDevice(QIODevice *device); QIODevice *device() const; void setFormat(const QByteArray &format); QByteArray format() const; virtual bool canRead() const = 0; virtual bool read(QImage *image) = 0; virtual bool write(const QImage &image); virtual QVariant option(QImageIOHandler::ImageOption option) const; virtual void setOption(QImageIOHandler::ImageOption option, const QVariant &value); virtual bool supportsOption(QImageIOHandler::ImageOption option) const; virtual bool jumpToNextImage(); virtual bool jumpToImage(int imageNumber); virtual int loopCount() const; virtual int imageCount() const; virtual int nextImageDelay() const; virtual int currentImageNumber() const; virtual QRect currentImageRect() const; %If (Qt_5_5_0 -) enum Transformation { TransformationNone, TransformationMirror, TransformationFlip, TransformationRotate180, TransformationRotate90, TransformationMirrorAndRotate90, TransformationFlipAndRotate90, TransformationRotate270, }; %End %If (Qt_5_5_0 -) typedef QFlags Transformations; %End private: QImageIOHandler(const QImageIOHandler &); }; PyQt5_gpl-5.10.1/sip/QtGui/qimagereader.sip0000644000076500000240000000673413245233150020500 0ustar philstaff00000000000000// qimagereader.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QImageReader { %TypeHeaderCode #include %End public: enum ImageReaderError { UnknownError, FileNotFoundError, DeviceError, UnsupportedFormatError, InvalidDataError, }; QImageReader(); QImageReader(QIODevice *device, const QByteArray &format = QByteArray()); QImageReader(const QString &fileName, const QByteArray &format = QByteArray()); ~QImageReader(); void setFormat(const QByteArray &format); QByteArray format() const; void setDevice(QIODevice *device); QIODevice *device() const; void setFileName(const QString &fileName); QString fileName() const; QSize size() const; void setClipRect(const QRect &rect); QRect clipRect() const; void setScaledSize(const QSize &size); QSize scaledSize() const; void setScaledClipRect(const QRect &rect); QRect scaledClipRect() const; bool canRead() const; QImage read() /ReleaseGIL/; bool read(QImage *image) /ReleaseGIL/; bool jumpToNextImage(); bool jumpToImage(int imageNumber); int loopCount() const; int imageCount() const; int nextImageDelay() const; int currentImageNumber() const; QRect currentImageRect() const; QImageReader::ImageReaderError error() const; QString errorString() const; static QByteArray imageFormat(const QString &fileName); static QByteArray imageFormat(QIODevice *device); static QList supportedImageFormats(); QStringList textKeys() const; QString text(const QString &key) const; void setBackgroundColor(const QColor &color); QColor backgroundColor() const; bool supportsAnimation() const; void setQuality(int quality); int quality() const; bool supportsOption(QImageIOHandler::ImageOption option) const; void setAutoDetectImageFormat(bool enabled); bool autoDetectImageFormat() const; QImage::Format imageFormat() const; void setDecideFormatFromContent(bool ignored); bool decideFormatFromContent() const; %If (Qt_5_1_0 -) static QList supportedMimeTypes(); %End %If (Qt_5_4_0 -) QByteArray subType() const; %End %If (Qt_5_4_0 -) QList supportedSubTypes() const; %End %If (Qt_5_5_0 -) QImageIOHandler::Transformations transformation() const; %End %If (Qt_5_5_0 -) void setAutoTransform(bool enabled); %End %If (Qt_5_5_0 -) bool autoTransform() const; %End %If (Qt_5_6_0 -) void setGamma(float gamma); %End %If (Qt_5_6_0 -) float gamma() const; %End private: QImageReader(const QImageReader &); }; PyQt5_gpl-5.10.1/sip/QtGui/qimagewriter.sip0000644000076500000240000000550413245233150020544 0ustar philstaff00000000000000// qimagewriter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QImageWriter { %TypeHeaderCode #include %End public: enum ImageWriterError { UnknownError, DeviceError, UnsupportedFormatError, %If (Qt_5_10_0 -) InvalidImageError, %End }; QImageWriter(); QImageWriter(QIODevice *device, const QByteArray &format); QImageWriter(const QString &fileName, const QByteArray &format = QByteArray()); ~QImageWriter(); void setFormat(const QByteArray &format); QByteArray format() const; void setDevice(QIODevice *device); QIODevice *device() const; void setFileName(const QString &fileName); QString fileName() const; void setQuality(int quality); int quality() const; void setGamma(float gamma); float gamma() const; bool canWrite() const; bool write(const QImage &image) /ReleaseGIL/; QImageWriter::ImageWriterError error() const; QString errorString() const; static QList supportedImageFormats(); void setText(const QString &key, const QString &text); bool supportsOption(QImageIOHandler::ImageOption option) const; void setCompression(int compression); int compression() const; %If (Qt_5_1_0 -) static QList supportedMimeTypes(); %End %If (Qt_5_4_0 -) void setSubType(const QByteArray &type); %End %If (Qt_5_4_0 -) QByteArray subType() const; %End %If (Qt_5_4_0 -) QList supportedSubTypes() const; %End %If (Qt_5_5_0 -) void setOptimizedWrite(bool optimize); %End %If (Qt_5_5_0 -) bool optimizedWrite() const; %End %If (Qt_5_5_0 -) void setProgressiveScanWrite(bool progressive); %End %If (Qt_5_5_0 -) bool progressiveScanWrite() const; %End %If (Qt_5_5_0 -) QImageIOHandler::Transformations transformation() const; %End %If (Qt_5_5_0 -) void setTransformation(QImageIOHandler::Transformations orientation); %End private: QImageWriter(const QImageWriter &); }; PyQt5_gpl-5.10.1/sip/QtGui/qinputmethod.sip0000644000076500000240000000462213245233150020565 0ustar philstaff00000000000000// qinputmethod.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QInputMethod : QObject { %TypeHeaderCode #include %End public: QTransform inputItemTransform() const; void setInputItemTransform(const QTransform &transform); QRectF cursorRectangle() const; QRectF keyboardRectangle() const; enum Action { Click, ContextMenu, }; bool isVisible() const; void setVisible(bool visible); bool isAnimating() const; QLocale locale() const; Qt::LayoutDirection inputDirection() const; %If (Qt_5_1_0 -) QRectF inputItemRectangle() const; %End %If (Qt_5_1_0 -) void setInputItemRectangle(const QRectF &rect); %End %If (Qt_5_3_0 -) static QVariant queryFocusObject(Qt::InputMethodQuery query, QVariant argument); %End public slots: void show(); void hide(); void update(Qt::InputMethodQueries queries); void reset(); void commit(); void invokeAction(QInputMethod::Action a, int cursorPosition); signals: void cursorRectangleChanged(); void keyboardRectangleChanged(); void visibleChanged(); void animatingChanged(); void localeChanged(); void inputDirectionChanged(Qt::LayoutDirection newDirection); public: %If (Qt_5_7_0 -) QRectF anchorRectangle() const; %End %If (Qt_5_7_0 -) QRectF inputItemClipRectangle() const; %End signals: %If (Qt_5_7_0 -) void anchorRectangleChanged(); %End %If (Qt_5_7_0 -) void inputItemClipRectangleChanged(); %End private: QInputMethod(); virtual ~QInputMethod(); }; PyQt5_gpl-5.10.1/sip/QtGui/qkeysequence.sip0000644000076500000240000001530313245233150020544 0ustar philstaff00000000000000// qkeysequence.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QKeySequence /TypeHintIn="Union[QKeySequence, QKeySequence.StandardKey, QString, int]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode // Allow a StandardKey, QString or an integer whenever a QKeySequence is // expected. if (sipIsErr == NULL) { if (sipCanConvertToType(sipPy, sipType_QKeySequence, SIP_NO_CONVERTORS)) return 1; if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_QKeySequence_StandardKey))) return 1; if (sipCanConvertToType(sipPy, sipType_QString, 0)) return 1; PyErr_Clear(); SIPLong_AsLong(sipPy); return !PyErr_Occurred(); } if (sipCanConvertToType(sipPy, sipType_QKeySequence, SIP_NO_CONVERTORS)) { *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QKeySequence, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_QKeySequence_StandardKey))) { *sipCppPtr = new QKeySequence((QKeySequence::StandardKey)SIPLong_AsLong(sipPy)); return sipGetState(sipTransferObj); } if (sipCanConvertToType(sipPy, sipType_QString, 0)) { int state; QString *qs = reinterpret_cast(sipConvertToType(sipPy, sipType_QString, 0, 0, &state, sipIsErr)); if (*sipIsErr) { sipReleaseType(qs, sipType_QString, state); return 0; } *sipCppPtr = new QKeySequence(*qs); sipReleaseType(qs, sipType_QString, state); return sipGetState(sipTransferObj); } int key = SIPLong_AsLong(sipPy); *sipCppPtr = new QKeySequence(key); return sipGetState(sipTransferObj); %End %PickleCode sipRes = Py_BuildValue((char *)"iiii", sipCpp->operator[](0), sipCpp->operator[](1), sipCpp->operator[](2), sipCpp->operator[](3)); %End public: enum SequenceFormat { NativeText, PortableText, }; enum SequenceMatch { NoMatch, PartialMatch, ExactMatch, }; enum StandardKey { UnknownKey, HelpContents, WhatsThis, Open, Close, Save, New, Delete, Cut, Copy, Paste, Undo, Redo, Back, Forward, Refresh, ZoomIn, ZoomOut, Print, AddTab, NextChild, PreviousChild, Find, FindNext, FindPrevious, Replace, SelectAll, Bold, Italic, Underline, MoveToNextChar, MoveToPreviousChar, MoveToNextWord, MoveToPreviousWord, MoveToNextLine, MoveToPreviousLine, MoveToNextPage, MoveToPreviousPage, MoveToStartOfLine, MoveToEndOfLine, MoveToStartOfBlock, MoveToEndOfBlock, MoveToStartOfDocument, MoveToEndOfDocument, SelectNextChar, SelectPreviousChar, SelectNextWord, SelectPreviousWord, SelectNextLine, SelectPreviousLine, SelectNextPage, SelectPreviousPage, SelectStartOfLine, SelectEndOfLine, SelectStartOfBlock, SelectEndOfBlock, SelectStartOfDocument, SelectEndOfDocument, DeleteStartOfWord, DeleteEndOfWord, DeleteEndOfLine, InsertParagraphSeparator, InsertLineSeparator, SaveAs, Preferences, Quit, FullScreen, %If (Qt_5_1_0 -) Deselect, %End %If (Qt_5_2_0 -) DeleteCompleteLine, %End %If (Qt_5_5_0 -) Backspace, %End %If (Qt_5_6_0 -) Cancel, %End }; QKeySequence(); QKeySequence(const QKeySequence &ks); QKeySequence(const QString &key, QKeySequence::SequenceFormat format = QKeySequence::NativeText); QKeySequence(int k1, int key2 = 0, int key3 = 0, int key4 = 0); QKeySequence(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QKeySequence(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QKeySequence(); int count() const /__len__/; bool isEmpty() const; QKeySequence::SequenceMatch matches(const QKeySequence &seq) const; static QKeySequence mnemonic(const QString &text); int operator[](int i) const; %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = sipCpp->operator[]((uint)idx); %End bool operator==(const QKeySequence &other) const; bool operator!=(const QKeySequence &other) const; bool operator<(const QKeySequence &ks) const; bool operator>(const QKeySequence &other) const; bool operator<=(const QKeySequence &other) const; bool operator>=(const QKeySequence &other) const; bool isDetached() const; void swap(QKeySequence &other /Constrained/); QString toString(QKeySequence::SequenceFormat format = QKeySequence::PortableText) const; static QKeySequence fromString(const QString &str, QKeySequence::SequenceFormat format = QKeySequence::PortableText); static QList keyBindings(QKeySequence::StandardKey key); %If (Qt_5_1_0 -) static QList listFromString(const QString &str, QKeySequence::SequenceFormat format = QKeySequence::PortableText); %End %If (Qt_5_1_0 -) static QString listToString(const QList &list, QKeySequence::SequenceFormat format = QKeySequence::PortableText); %End %If (Qt_5_6_0 -) long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End }; QDataStream &operator<<(QDataStream &in, const QKeySequence &ks /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &out, QKeySequence &ks /Constrained/) /ReleaseGIL/; void qt_set_sequence_auto_mnemonic(bool b); PyQt5_gpl-5.10.1/sip/QtGui/qmatrix4x4.sip0000644000076500000240000002463113245233150020073 0ustar philstaff00000000000000// qmatrix4x4.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QMatrix4x4 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[16]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue((char *)"dddddddddddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7], (double)data[8], (double)data[9], (double)data[10], (double)data[11], (double)data[12], (double)data[13], (double)data[14], (double)data[15]); %End public: QMatrix4x4(); explicit QMatrix4x4(SIP_PYOBJECT values /TypeHint="Sequence[float]"/) [(const float *values)]; %MethodCode float values[16]; if ((sipError = qtgui_matrixDataFromSequence(a0, 16, values)) == sipErrorNone) sipCpp = new QMatrix4x4(values); %End QMatrix4x4(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44); QMatrix4x4(const QTransform &transform); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[16]; PYQT_FLOAT data[16]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 16; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QMatrix4x4(" "%R, %R, %R, %R, " "%R, %R, %R, %R, " "%R, %R, %R, %R, " "%R, %R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10], m[11], m[12], m[13], m[14], m[15]); #else sipRes = PyString_FromString("PyQt5.QtGui.QMatrix4x4("); for (i = 0; i < 16; ++i) { if (i != 0) PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(m[i])); } PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } for (i = 0; i < 16; ++i) Py_XDECREF(m[i]); %End double determinant() const; QMatrix4x4 inverted(bool *invertible = 0) const; QMatrix4x4 transposed() const; QMatrix3x3 normalMatrix() const; void scale(const QVector3D &vector); void scale(float x, float y); void scale(float x, float y, float z); void scale(float factor); void translate(const QVector3D &vector); void translate(float x, float y); void translate(float x, float y, float z); void rotate(float angle, const QVector3D &vector); void rotate(float angle, float x, float y, float z = 0.F); void rotate(const QQuaternion &quaternion); void ortho(const QRect &rect); void ortho(const QRectF &rect); void ortho(float left, float right, float bottom, float top, float nearPlane, float farPlane); void frustum(float left, float right, float bottom, float top, float nearPlane, float farPlane); void perspective(float angle, float aspect, float nearPlane, float farPlane); void lookAt(const QVector3D &eye, const QVector3D ¢er, const QVector3D &up); SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode float values[16]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(16, values, &sipRes); %End QTransform toTransform() const; QTransform toTransform(float distanceToPlane) const; QRect mapRect(const QRect &rect) const; QRectF mapRect(const QRectF &rect) const; SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(16, sipCpp->constData(), &sipRes); %End void optimize(); SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 4, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 4, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End QVector4D column(int index) const; void setColumn(int index, const QVector4D &value); QVector4D row(int index) const; void setRow(int index, const QVector4D &value); bool isIdentity() const; void setToIdentity(); void fill(float value); QMatrix4x4 &operator+=(const QMatrix4x4 &other); QMatrix4x4 &operator-=(const QMatrix4x4 &other); QMatrix4x4 &operator*=(const QMatrix4x4 &other) /__imatmul__/; QMatrix4x4 &operator*=(float factor); QMatrix4x4 &operator/=(float divisor); bool operator==(const QMatrix4x4 &other) const; bool operator!=(const QMatrix4x4 &other) const; QPoint map(const QPoint &point) const; QPointF map(const QPointF &point) const; QVector3D map(const QVector3D &point) const; QVector3D mapVector(const QVector3D &vector) const; QVector4D map(const QVector4D &point) const; %If (Qt_5_4_0 -) void viewport(float left, float bottom, float width, float height, float nearPlane = 0.F, float farPlane = 1.F); %End %If (Qt_5_4_0 -) void viewport(const QRectF &rect); %End %If (Qt_5_5_0 -) bool isAffine() const; %End }; QMatrix4x4 operator/(const QMatrix4x4 &matrix, float divisor); QMatrix4x4 operator+(const QMatrix4x4 &m1, const QMatrix4x4 &m2); QMatrix4x4 operator-(const QMatrix4x4 &m1, const QMatrix4x4 &m2); QMatrix4x4 operator*(const QMatrix4x4 &m1, const QMatrix4x4 &m2) /__matmul__/; QVector3D operator*(const QVector3D &vector, const QMatrix4x4 &matrix); QVector3D operator*(const QMatrix4x4 &matrix, const QVector3D &vector); QVector4D operator*(const QVector4D &vector, const QMatrix4x4 &matrix); QVector4D operator*(const QMatrix4x4 &matrix, const QVector4D &vector); QPoint operator*(const QPoint &point, const QMatrix4x4 &matrix); QPointF operator*(const QPointF &point, const QMatrix4x4 &matrix); QPoint operator*(const QMatrix4x4 &matrix, const QPoint &point); QPointF operator*(const QMatrix4x4 &matrix, const QPointF &point); QMatrix4x4 operator-(const QMatrix4x4 &matrix); QMatrix4x4 operator*(float factor, const QMatrix4x4 &matrix); QMatrix4x4 operator*(const QMatrix4x4 &matrix, float factor); bool qFuzzyCompare(const QMatrix4x4 &m1, const QMatrix4x4 &m2); QDataStream &operator<<(QDataStream &, const QMatrix4x4 & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QMatrix4x4 & /Constrained/) /ReleaseGIL/; %ModuleHeaderCode // Helpers for the matrix classes. typedef float PYQT_FLOAT; sipErrorState qtgui_matrixParseIndex(PyObject *tup, int nr_rows, int nr_columns, int *row, int *column); sipErrorState qtgui_matrixDataFromSequence(PyObject *seq, int nr_values, PYQT_FLOAT *values); sipErrorState qtgui_matrixDataAsList(int nr_values, const PYQT_FLOAT *values, PyObject **list); %End %ModuleCode // Convert a Python object to a row and column. sipErrorState qtgui_matrixParseIndex(PyObject *tup, int nr_rows, int nr_columns, int *row, int *column) { sipErrorState es = sipErrorContinue; if (PyTuple_Check(tup) && PyArg_ParseTuple(tup, "ii", row, column)) if (*row >= 0 && *row < nr_rows && *column >= 0 && *column < nr_columns) es = sipErrorNone; if (es == sipErrorContinue) PyErr_Format(PyExc_IndexError, "an index must be a row in the range 0 to %d and a column in the range 0 to %d", nr_rows - 1, nr_columns - 1); return es; } // Convert a Python object to an array of qreals. sipErrorState qtgui_matrixDataFromSequence(PyObject *seq, int nr_values, PYQT_FLOAT *values) { sipErrorState es; if (PySequence_Size(seq) == nr_values) { es = sipErrorNone; for (int i = 0; i < nr_values; ++i) { PyObject *value = PySequence_GetItem(seq, i); if (!value) { es = sipErrorFail; break; } PyErr_Clear(); double d = PyFloat_AsDouble(value); if (PyErr_Occurred()) { Py_DECREF(value); es = sipErrorContinue; break; } Py_DECREF(value); *values++ = d; } } else { es = sipErrorContinue; } if (es == sipErrorContinue) PyErr_Format(PyExc_TypeError, "a sequence of %d floats is expected", nr_values); return es; } // Convert an array of qreals to a Python list. sipErrorState qtgui_matrixDataAsList(int nr_values, const PYQT_FLOAT *values, PyObject **list) { PyObject *l = PyList_New(nr_values); if (!l) return sipErrorFail; for (int i = 0; i < nr_values; ++i) { PyObject *value = PyFloat_FromDouble(*values++); if (!value) { Py_DECREF(l); return sipErrorFail; } PyList_SetItem(l, i, value); } *list = l; return sipErrorNone; } %End PyQt5_gpl-5.10.1/sip/QtGui/qmovie.sip0000644000076500000240000000557513245233150017354 0ustar philstaff00000000000000// qmovie.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMovie : QObject { %TypeHeaderCode #include %End public: enum MovieState { NotRunning, Paused, Running, }; enum CacheMode { CacheNone, CacheAll, }; explicit QMovie(QObject *parent /TransferThis/ = 0); QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent /TransferThis/ = 0); QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent /TransferThis/ = 0); virtual ~QMovie(); static QList supportedFormats(); void setDevice(QIODevice *device); QIODevice *device() const; void setFileName(const QString &fileName); QString fileName() const; void setFormat(const QByteArray &format); QByteArray format() const; void setBackgroundColor(const QColor &color); QColor backgroundColor() const; QMovie::MovieState state() const; QRect frameRect() const; QImage currentImage() const; QPixmap currentPixmap() const; bool isValid() const; bool jumpToFrame(int frameNumber); int loopCount() const; int frameCount() const; int nextFrameDelay() const; int currentFrameNumber() const; void setSpeed(int percentSpeed); int speed() const; QSize scaledSize(); void setScaledSize(const QSize &size); QMovie::CacheMode cacheMode() const; void setCacheMode(QMovie::CacheMode mode); signals: void started(); void resized(const QSize &size); void updated(const QRect &rect); void stateChanged(QMovie::MovieState state); void error(QImageReader::ImageReaderError error); void finished(); void frameChanged(int frameNumber); public slots: void start(); bool jumpToNextFrame(); void setPaused(bool paused); void stop(); public: %If (Qt_5_10_0 -) QImageReader::ImageReaderError lastError() const; %End %If (Qt_5_10_0 -) QString lastErrorString() const; %End private: QMovie(const QMovie &); }; PyQt5_gpl-5.10.1/sip/QtGui/qoffscreensurface.sip0000644000076500000240000000350613245233150021550 0ustar philstaff00000000000000// qoffscreensurface.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QOffscreenSurface : QObject, QSurface { %TypeHeaderCode #include %End public: explicit QOffscreenSurface(QScreen *screen = 0); %If (Qt_5_10_0 -) QOffscreenSurface(QScreen *screen, QObject *parent /TransferThis/); %End virtual ~QOffscreenSurface(); virtual QSurface::SurfaceType surfaceType() const; void create(); void destroy(); bool isValid() const; void setFormat(const QSurfaceFormat &format); virtual QSurfaceFormat format() const; QSurfaceFormat requestedFormat() const; virtual QSize size() const; QScreen *screen() const; void setScreen(QScreen *screen); signals: void screenChanged(QScreen *screen); public: %If (Qt_5_9_0 -) void *nativeHandle() const; %End %If (Qt_5_9_0 -) void setNativeHandle(void *handle); %End private: QOffscreenSurface(const QOffscreenSurface &); }; %End PyQt5_gpl-5.10.1/sip/QtGui/qopenglbuffer.sip0000644000076500000240000000541713245233150020706 0ustar philstaff00000000000000// qopenglbuffer.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL) class QOpenGLBuffer { %TypeHeaderCode #include %End public: enum Type { VertexBuffer, IndexBuffer, PixelPackBuffer, PixelUnpackBuffer, }; QOpenGLBuffer(); explicit QOpenGLBuffer(QOpenGLBuffer::Type type); QOpenGLBuffer(const QOpenGLBuffer &other); ~QOpenGLBuffer(); enum UsagePattern { StreamDraw, StreamRead, StreamCopy, StaticDraw, StaticRead, StaticCopy, DynamicDraw, DynamicRead, DynamicCopy, }; enum Access { ReadOnly, WriteOnly, ReadWrite, }; QOpenGLBuffer::Type type() const; QOpenGLBuffer::UsagePattern usagePattern() const; void setUsagePattern(QOpenGLBuffer::UsagePattern value); bool create(); bool isCreated() const; void destroy(); bool bind(); void release(); static void release(QOpenGLBuffer::Type type); GLuint bufferId() const; int size() const /__len__/; bool read(int offset, void *data, int count); void write(int offset, const void *data, int count); void allocate(const void *data, int count); void allocate(int count); void *map(QOpenGLBuffer::Access access); bool unmap(); %If (Qt_5_4_0 -) enum RangeAccessFlag { RangeRead, RangeWrite, RangeInvalidate, RangeInvalidateBuffer, RangeFlushExplicit, RangeUnsynchronized, }; %End %If (Qt_5_4_0 -) typedef QFlags RangeAccessFlags; %End %If (Qt_5_4_0 -) void *mapRange(int offset, int count, QOpenGLBuffer::RangeAccessFlags access); %End }; %End %If (Qt_5_4_0 -) %If (PyQt_OpenGL) QFlags operator|(QOpenGLBuffer::RangeAccessFlag f1, QFlags f2); %End %End PyQt5_gpl-5.10.1/sip/QtGui/qopenglcontext.sip0000644000076500000240000000747613245233150021130 0ustar philstaff00000000000000// qopenglcontext.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL) class QOpenGLContextGroup : QObject { %TypeHeaderCode #include %End public: virtual ~QOpenGLContextGroup(); QList shares() const; static QOpenGLContextGroup *currentContextGroup(); private: QOpenGLContextGroup(); }; %End %If (PyQt_OpenGL) class QOpenGLContext : QObject { %TypeHeaderCode #include %End public: explicit QOpenGLContext(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLContext(); void setFormat(const QSurfaceFormat &format); void setShareContext(QOpenGLContext *shareContext); void setScreen(QScreen *screen); bool create(); bool isValid() const; QSurfaceFormat format() const; QOpenGLContext *shareContext() const; QOpenGLContextGroup *shareGroup() const; QScreen *screen() const; GLuint defaultFramebufferObject() const; bool makeCurrent(QSurface *surface); void doneCurrent(); void swapBuffers(QSurface *surface); QSurface *surface() const; static QOpenGLContext *currentContext(); static bool areSharing(QOpenGLContext *first, QOpenGLContext *second); QSet extensions() const; bool hasExtension(const QByteArray &extension) const; signals: void aboutToBeDestroyed(); public: %If (Qt_5_1_0 -) SIP_PYOBJECT versionFunctions(const QOpenGLVersionProfile *versionProfile = 0) const; %MethodCode sipRes = qpyopengl_version_functions(sipCpp, sipSelf, a0); %End %End %If (Qt_5_3_0 -) static void *openGLModuleHandle(); %End %If (Qt_5_3_0 -) enum OpenGLModuleType { LibGL, LibGLES, }; %End %If (Qt_5_3_0 -) static QOpenGLContext::OpenGLModuleType openGLModuleType(); %End %If (Qt_5_3_0 -) bool isOpenGLES() const; %End %If (Qt_5_4_0 -) void setNativeHandle(const QVariant &handle); %End %If (Qt_5_4_0 -) QVariant nativeHandle() const; %End %If (Qt_5_5_0 -) static bool supportsThreadedOpenGL(); %End %If (Qt_5_5_0 -) static QOpenGLContext *globalShareContext(); %End }; %End %If (Qt_5_1_0 -) %If (PyQt_OpenGL) class QOpenGLVersionProfile { %TypeHeaderCode #include %End public: QOpenGLVersionProfile(); explicit QOpenGLVersionProfile(const QSurfaceFormat &format); QOpenGLVersionProfile(const QOpenGLVersionProfile &other); ~QOpenGLVersionProfile(); QPair version() const; void setVersion(int majorVersion, int minorVersion); QSurfaceFormat::OpenGLContextProfile profile() const; void setProfile(QSurfaceFormat::OpenGLContextProfile profile); bool hasProfiles() const; bool isLegacyVersion() const; bool isValid() const; }; %End %End %If (Qt_5_1_0 -) %If (PyQt_OpenGL) bool operator==(const QOpenGLVersionProfile &lhs, const QOpenGLVersionProfile &rhs); %End %End %If (Qt_5_1_0 -) %If (PyQt_OpenGL) bool operator!=(const QOpenGLVersionProfile &lhs, const QOpenGLVersionProfile &rhs); %End %End PyQt5_gpl-5.10.1/sip/QtGui/qopengldebug.sip0000644000076500000240000001234313245233150020517 0ustar philstaff00000000000000// qopengldebug.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) %If (PyQt_OpenGL) class QOpenGLDebugMessage { %TypeHeaderCode #include %End public: enum Source { InvalidSource, APISource, WindowSystemSource, ShaderCompilerSource, ThirdPartySource, ApplicationSource, OtherSource, AnySource, }; typedef QFlags Sources; enum Type { InvalidType, ErrorType, DeprecatedBehaviorType, UndefinedBehaviorType, PortabilityType, PerformanceType, OtherType, MarkerType, GroupPushType, GroupPopType, AnyType, }; typedef QFlags Types; enum Severity { InvalidSeverity, HighSeverity, MediumSeverity, LowSeverity, NotificationSeverity, AnySeverity, }; typedef QFlags Severities; QOpenGLDebugMessage(); QOpenGLDebugMessage(const QOpenGLDebugMessage &debugMessage); ~QOpenGLDebugMessage(); void swap(QOpenGLDebugMessage &debugMessage /Constrained/); QOpenGLDebugMessage::Source source() const; QOpenGLDebugMessage::Type type() const; QOpenGLDebugMessage::Severity severity() const; GLuint id() const; QString message() const; static QOpenGLDebugMessage createApplicationMessage(const QString &text, GLuint id = 0, QOpenGLDebugMessage::Severity severity = QOpenGLDebugMessage::NotificationSeverity, QOpenGLDebugMessage::Type type = QOpenGLDebugMessage::OtherType); static QOpenGLDebugMessage createThirdPartyMessage(const QString &text, GLuint id = 0, QOpenGLDebugMessage::Severity severity = QOpenGLDebugMessage::NotificationSeverity, QOpenGLDebugMessage::Type type = QOpenGLDebugMessage::OtherType); bool operator==(const QOpenGLDebugMessage &debugMessage) const; bool operator!=(const QOpenGLDebugMessage &debugMessage) const; }; %End %End %If (Qt_5_1_0 -) %If (PyQt_OpenGL) QFlags operator|(QOpenGLDebugMessage::Source f1, QFlags f2); %End %End %If (Qt_5_1_0 -) %If (PyQt_OpenGL) QFlags operator|(QOpenGLDebugMessage::Type f1, QFlags f2); %End %End %If (Qt_5_1_0 -) %If (PyQt_OpenGL) QFlags operator|(QOpenGLDebugMessage::Severity f1, QFlags f2); %End %End %If (Qt_5_1_0 -) %If (PyQt_OpenGL) class QOpenGLDebugLogger : QObject { %TypeHeaderCode #include %End public: enum LoggingMode { AsynchronousLogging, SynchronousLogging, }; explicit QOpenGLDebugLogger(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLDebugLogger(); bool initialize(); bool isLogging() const; QOpenGLDebugLogger::LoggingMode loggingMode() const; qint64 maximumMessageLength() const; void pushGroup(const QString &name, GLuint id = 0, QOpenGLDebugMessage::Source source = QOpenGLDebugMessage::ApplicationSource); void popGroup(); void enableMessages(QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource, QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType, QOpenGLDebugMessage::Severities severities = QOpenGLDebugMessage::AnySeverity); void enableMessages(const QVector &ids, QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource, QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType); void disableMessages(QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource, QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType, QOpenGLDebugMessage::Severities severities = QOpenGLDebugMessage::AnySeverity); void disableMessages(const QVector &ids, QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource, QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType); QList loggedMessages() const; public slots: void logMessage(const QOpenGLDebugMessage &debugMessage); void startLogging(QOpenGLDebugLogger::LoggingMode loggingMode = QOpenGLDebugLogger::AsynchronousLogging); void stopLogging(); signals: void messageLogged(const QOpenGLDebugMessage &debugMessage); private: QOpenGLDebugLogger(const QOpenGLDebugLogger &); }; %End %End PyQt5_gpl-5.10.1/sip/QtGui/qopenglframebufferobject.sip0000644000076500000240000001242313245233150023103 0ustar philstaff00000000000000// qopenglframebufferobject.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL) class QOpenGLFramebufferObject { %TypeHeaderCode #include %End %TypeCode // The defaults are different for desktop OpenGL and OpenGL/ES so pretend the // latter is the former. #if defined(QT_OPENGL_ES) #undef GL_RGBA8 #define GL_RGBA8 GL_RGBA #endif %End public: enum Attachment { NoAttachment, CombinedDepthStencil, Depth, }; QOpenGLFramebufferObject(const QSize &size, GLenum target = GL_TEXTURE_2D); QOpenGLFramebufferObject(int width, int height, GLenum target = GL_TEXTURE_2D); QOpenGLFramebufferObject(const QSize &size, QOpenGLFramebufferObject::Attachment attachment, GLenum target = GL_TEXTURE_2D, GLenum internal_format = GL_RGBA8); QOpenGLFramebufferObject(int width, int height, QOpenGLFramebufferObject::Attachment attachment, GLenum target = GL_TEXTURE_2D, GLenum internal_format = GL_RGBA8); QOpenGLFramebufferObject(const QSize &size, const QOpenGLFramebufferObjectFormat &format); QOpenGLFramebufferObject(int width, int height, const QOpenGLFramebufferObjectFormat &format); virtual ~QOpenGLFramebufferObject(); QOpenGLFramebufferObjectFormat format() const; bool isValid() const; bool isBound() const; bool bind(); bool release(); int width() const; int height() const; GLuint texture() const; %If (Qt_5_6_0 -) QVector textures() const; %End QSize size() const; QImage toImage() const; %If (Qt_5_4_0 -) QImage toImage(bool flipped) const; %End %If (Qt_5_6_0 -) QImage toImage(bool flipped, int colorAttachmentIndex) const; %End QOpenGLFramebufferObject::Attachment attachment() const; void setAttachment(QOpenGLFramebufferObject::Attachment attachment); GLuint handle() const; static bool bindDefault(); static bool hasOpenGLFramebufferObjects(); static bool hasOpenGLFramebufferBlit(); %If (Qt_5_7_0 -) enum FramebufferRestorePolicy { DontRestoreFramebufferBinding, RestoreFramebufferBindingToDefault, RestoreFrameBufferBinding, }; %End static void blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers = GL_COLOR_BUFFER_BIT, GLenum filter = GL_NEAREST); static void blitFramebuffer(QOpenGLFramebufferObject *target, QOpenGLFramebufferObject *source, GLbitfield buffers = GL_COLOR_BUFFER_BIT, GLenum filter = GL_NEAREST); %If (Qt_5_6_0 -) static void blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers, GLenum filter, int readColorAttachmentIndex, int drawColorAttachmentIndex); %End %If (Qt_5_7_0 -) static void blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers, GLenum filter, int readColorAttachmentIndex, int drawColorAttachmentIndex, QOpenGLFramebufferObject::FramebufferRestorePolicy restorePolicy); %End %If (Qt_5_3_0 -) GLuint takeTexture(); %End %If (Qt_5_6_0 -) GLuint takeTexture(int colorAttachmentIndex); %End %If (Qt_5_6_0 -) void addColorAttachment(const QSize &size, GLenum internal_format = 0); %End %If (Qt_5_6_0 -) void addColorAttachment(int width, int height, GLenum internal_format = 0); %End %If (Qt_5_6_0 -) QVector sizes() const; %End private: QOpenGLFramebufferObject(const QOpenGLFramebufferObject &); }; %End %If (PyQt_OpenGL) class QOpenGLFramebufferObjectFormat { %TypeHeaderCode #include %End public: QOpenGLFramebufferObjectFormat(); QOpenGLFramebufferObjectFormat(const QOpenGLFramebufferObjectFormat &other); ~QOpenGLFramebufferObjectFormat(); void setSamples(int samples); int samples() const; void setMipmap(bool enabled); bool mipmap() const; void setAttachment(QOpenGLFramebufferObject::Attachment attachment); QOpenGLFramebufferObject::Attachment attachment() const; void setTextureTarget(GLenum target); GLenum textureTarget() const; void setInternalTextureFormat(GLenum internalTextureFormat); GLenum internalTextureFormat() const; bool operator==(const QOpenGLFramebufferObjectFormat &other) const; bool operator!=(const QOpenGLFramebufferObjectFormat &other) const; }; %End PyQt5_gpl-5.10.1/sip/QtGui/qopenglpaintdevice.sip0000644000076500000240000000352713245233150021730 0ustar philstaff00000000000000// qopenglpaintdevice.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL) class QOpenGLPaintDevice : QPaintDevice { %TypeHeaderCode #include %End public: QOpenGLPaintDevice(); explicit QOpenGLPaintDevice(const QSize &size); QOpenGLPaintDevice(int width, int height); virtual ~QOpenGLPaintDevice(); virtual QPaintEngine *paintEngine() const; QOpenGLContext *context() const; QSize size() const; void setSize(const QSize &size); qreal dotsPerMeterX() const; qreal dotsPerMeterY() const; void setDotsPerMeterX(qreal); void setDotsPerMeterY(qreal); void setPaintFlipped(bool flipped); bool paintFlipped() const; virtual void ensureActiveTarget(); %If (Qt_5_1_0 -) void setDevicePixelRatio(qreal devicePixelRatio); %End protected: virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; private: %If (- Qt_5_1_0) QOpenGLPaintDevice(const QOpenGLPaintDevice &); %End }; %End PyQt5_gpl-5.10.1/sip/QtGui/qopenglpixeltransferoptions.sip0000644000076500000240000000356513245233150023741 0ustar philstaff00000000000000// qopenglpixeltransferoptions.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) %If (PyQt_OpenGL) class QOpenGLPixelTransferOptions { %TypeHeaderCode #include %End public: QOpenGLPixelTransferOptions(); QOpenGLPixelTransferOptions(const QOpenGLPixelTransferOptions &); ~QOpenGLPixelTransferOptions(); void swap(QOpenGLPixelTransferOptions &other /Constrained/); void setAlignment(int alignment); int alignment() const; void setSkipImages(int skipImages); int skipImages() const; void setSkipRows(int skipRows); int skipRows() const; void setSkipPixels(int skipPixels); int skipPixels() const; void setImageHeight(int imageHeight); int imageHeight() const; void setRowLength(int rowLength); int rowLength() const; void setLeastSignificantByteFirst(bool lsbFirst); bool isLeastSignificantBitFirst() const; void setSwapBytesEnabled(bool swapBytes); bool isSwapBytesEnabled() const; }; %End %End PyQt5_gpl-5.10.1/sip/QtGui/qopenglshaderprogram.sip0000644000076500000240000004030013245233150022261 0ustar philstaff00000000000000// qopenglshaderprogram.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL) class QOpenGLShader : QObject { %TypeHeaderCode #include %End public: enum ShaderTypeBit { Vertex, Fragment, %If (Qt_5_1_0 -) Geometry, %End %If (Qt_5_1_0 -) TessellationControl, %End %If (Qt_5_1_0 -) TessellationEvaluation, %End %If (Qt_5_1_0 -) Compute, %End }; typedef QFlags ShaderType; QOpenGLShader(QOpenGLShader::ShaderType type, QObject *parent /TransferThis/ = 0); virtual ~QOpenGLShader(); QOpenGLShader::ShaderType shaderType() const; bool compileSourceCode(const QByteArray &source); bool compileSourceCode(const QString &source); bool compileSourceFile(const QString &fileName); QByteArray sourceCode() const; bool isCompiled() const; QString log() const; GLuint shaderId() const; static bool hasOpenGLShaders(QOpenGLShader::ShaderType type, QOpenGLContext *context = 0); private: QOpenGLShader(const QOpenGLShader &); }; %End %If (PyQt_OpenGL) QFlags operator|(QOpenGLShader::ShaderTypeBit f1, QFlags f2); %End %If (PyQt_OpenGL) class QOpenGLShaderProgram : QObject { %TypeHeaderCode #include %End public: explicit QOpenGLShaderProgram(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLShaderProgram(); bool addShader(QOpenGLShader *shader); void removeShader(QOpenGLShader *shader); QList shaders() const; bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray &source); bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString &source); bool addShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString &fileName); void removeAllShaders(); virtual bool link(); bool isLinked() const; QString log() const; bool bind(); void release(); GLuint programId() const; void bindAttributeLocation(const QByteArray &name, int location); void bindAttributeLocation(const QString &name, int location); int attributeLocation(const QByteArray &name) const; int attributeLocation(const QString &name) const; void setAttributeValue(int location, GLfloat value); void setAttributeValue(int location, GLfloat x, GLfloat y); void setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z); void setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void setAttributeValue(int location, const QVector2D &value); void setAttributeValue(int location, const QVector3D &value); void setAttributeValue(int location, const QVector4D &value); void setAttributeValue(int location, const QColor &value); void setAttributeValue(const char *name, GLfloat value); void setAttributeValue(const char *name, GLfloat x, GLfloat y); void setAttributeValue(const char *name, GLfloat x, GLfloat y, GLfloat z); void setAttributeValue(const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void setAttributeValue(const char *name, const QVector2D &value); void setAttributeValue(const char *name, const QVector3D &value); void setAttributeValue(const char *name, const QVector4D &value); void setAttributeValue(const char *name, const QColor &value); void setAttributeArray(int location, SIP_PYOBJECT values /TypeHint="PYQT_SHADER_ATTRIBUTE_ARRAY"/); %MethodCode const GLfloat *values; int tsize; values = qpyopengl_attribute_array(a1, sipSelf, SIPLong_FromLong(a0), &tsize, &sipError); if (values) sipCpp->setAttributeArray(a0, values, tsize); %End void setAttributeArray(const char *name, SIP_PYOBJECT values /TypeHint="PYQT_SHADER_ATTRIBUTE_ARRAY"/); %MethodCode const GLfloat *values; int tsize; values = qpyopengl_attribute_array(a1, sipSelf, SIPBytes_FromString(a0), &tsize, &sipError); if (values) sipCpp->setAttributeArray(a0, values, tsize); %End void setAttributeBuffer(int location, GLenum type, int offset, int tupleSize, int stride = 0); void setAttributeBuffer(const char *name, GLenum type, int offset, int tupleSize, int stride = 0); void enableAttributeArray(int location); void enableAttributeArray(const char *name); void disableAttributeArray(int location); void disableAttributeArray(const char *name); int uniformLocation(const QByteArray &name) const; int uniformLocation(const QString &name) const; void setUniformValue(int location, GLint value /Constrained/); void setUniformValue(int location, GLfloat value /Constrained/); void setUniformValue(int location, GLfloat x, GLfloat y); void setUniformValue(int location, GLfloat x, GLfloat y, GLfloat z); void setUniformValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void setUniformValue(int location, const QVector2D &value); void setUniformValue(int location, const QVector3D &value); void setUniformValue(int location, const QVector4D &value); void setUniformValue(int location, const QColor &color); void setUniformValue(int location, const QPoint &point); void setUniformValue(int location, const QPointF &point); void setUniformValue(int location, const QSize &size); void setUniformValue(int location, const QSizeF &size); void setUniformValue(int location, const QMatrix2x2 &value); void setUniformValue(int location, const QMatrix2x3 &value); void setUniformValue(int location, const QMatrix2x4 &value); void setUniformValue(int location, const QMatrix3x2 &value); void setUniformValue(int location, const QMatrix3x3 &value); void setUniformValue(int location, const QMatrix3x4 &value); void setUniformValue(int location, const QMatrix4x2 &value); void setUniformValue(int location, const QMatrix4x3 &value); void setUniformValue(int location, const QMatrix4x4 &value); void setUniformValue(int location, const QTransform &value); void setUniformValue(const char *name, GLint value /Constrained/); void setUniformValue(const char *name, GLfloat value /Constrained/); void setUniformValue(const char *name, GLfloat x, GLfloat y); void setUniformValue(const char *name, GLfloat x, GLfloat y, GLfloat z); void setUniformValue(const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void setUniformValue(const char *name, const QVector2D &value); void setUniformValue(const char *name, const QVector3D &value); void setUniformValue(const char *name, const QVector4D &value); void setUniformValue(const char *name, const QColor &color); void setUniformValue(const char *name, const QPoint &point); void setUniformValue(const char *name, const QPointF &point); void setUniformValue(const char *name, const QSize &size); void setUniformValue(const char *name, const QSizeF &size); void setUniformValue(const char *name, const QMatrix2x2 &value); void setUniformValue(const char *name, const QMatrix2x3 &value); void setUniformValue(const char *name, const QMatrix2x4 &value); void setUniformValue(const char *name, const QMatrix3x2 &value); void setUniformValue(const char *name, const QMatrix3x3 &value); void setUniformValue(const char *name, const QMatrix3x4 &value); void setUniformValue(const char *name, const QMatrix4x2 &value); void setUniformValue(const char *name, const QMatrix4x3 &value); void setUniformValue(const char *name, const QMatrix4x4 &value); void setUniformValue(const char *name, const QTransform &value); void setUniformValueArray(int location, SIP_PYOBJECT values /TypeHint="PYQT_SHADER_UNIFORM_VALUE_ARRAY"/); %MethodCode const void *values; const sipTypeDef *array_type; int array_len, tsize; values = qpyopengl_uniform_value_array(a1, sipSelf, SIPLong_FromLong(a0), &array_type, &array_len, &tsize, &sipError); if (values) { if (array_type == sipType_QVector2D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QVector3D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QVector4D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len, tsize); } %End void setUniformValueArray(const char *name, SIP_PYOBJECT values /TypeHint="PYQT_SHADER_UNIFORM_VALUE_ARRAY"/); %MethodCode const void *values; const sipTypeDef *array_type; int array_len, tsize; values = qpyopengl_uniform_value_array(a1, sipSelf, SIPBytes_FromString(a0), &array_type, &array_len, &tsize, &sipError); if (values) { if (array_type == sipType_QVector2D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QVector3D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QVector4D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len, tsize); } %End static bool hasOpenGLShaderPrograms(QOpenGLContext *context = 0); %If (Qt_5_1_0 -) int maxGeometryOutputVertices() const; %End %If (Qt_5_1_0 -) void setPatchVertexCount(int count); %End %If (Qt_5_1_0 -) int patchVertexCount() const; %End %If (Qt_5_1_0 -) void setDefaultOuterTessellationLevels(const QVector &levels); %End %If (Qt_5_1_0 -) QVector defaultOuterTessellationLevels() const; %End %If (Qt_5_1_0 -) void setDefaultInnerTessellationLevels(const QVector &levels); %End %If (Qt_5_1_0 -) QVector defaultInnerTessellationLevels() const; %End %If (Qt_5_3_0 -) bool create(); %End %If (Qt_5_9_0 -) bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray &source); %End %If (Qt_5_9_0 -) bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString &source); %End %If (Qt_5_9_0 -) bool addCacheableShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString &fileName); %End private: QOpenGLShaderProgram(const QOpenGLShaderProgram &); }; %End %ModuleHeaderCode #include "qpyopengl_api.h" %End %InitialisationCode #if defined(SIP_FEATURE_PyQt_OpenGL) qpyopengl_init(); #endif %End %ExportedTypeHintCode # Convenient aliases for complicated OpenGL types. PYQT_OPENGL_ARRAY = typing.Union[typing.Sequence[int], typing.Sequence[float], sip.Buffer, None] PYQT_OPENGL_BOUND_ARRAY = typing.Union[typing.Sequence[int], typing.Sequence[float], sip.Buffer, int, None] %End %TypeHintCode # Convenient aliases for complicated OpenGL types. PYQT_SHADER_ATTRIBUTE_ARRAY = typing.Union[typing.Sequence['QVector2D'], typing.Sequence['QVector3D'], typing.Sequence['QVector4D'], typing.Sequence[typing.Sequence[float]]] PYQT_SHADER_UNIFORM_VALUE_ARRAY = typing.Union[typing.Sequence['QVector2D'], typing.Sequence['QVector3D'], typing.Sequence['QVector4D'], typing.Sequence['QMatrix2x2'], typing.Sequence['QMatrix2x3'], typing.Sequence['QMatrix2x4'], typing.Sequence['QMatrix3x2'], typing.Sequence['QMatrix3x3'], typing.Sequence['QMatrix3x4'], typing.Sequence['QMatrix4x2'], typing.Sequence['QMatrix4x3'], typing.Sequence['QMatrix4x4'], typing.Sequence[typing.Sequence[float]]] %End PyQt5_gpl-5.10.1/sip/QtGui/qopengltexture.sip0000644000076500000240000004052413245233150021133 0ustar philstaff00000000000000// qopengltexture.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) %If (PyQt_OpenGL) class QOpenGLTexture { %TypeHeaderCode #include %End public: enum Target { Target1D, Target1DArray, Target2D, Target2DArray, Target3D, TargetCubeMap, TargetCubeMapArray, Target2DMultisample, Target2DMultisampleArray, TargetRectangle, TargetBuffer, }; enum BindingTarget { BindingTarget1D, BindingTarget1DArray, BindingTarget2D, BindingTarget2DArray, BindingTarget3D, BindingTargetCubeMap, BindingTargetCubeMapArray, BindingTarget2DMultisample, BindingTarget2DMultisampleArray, BindingTargetRectangle, BindingTargetBuffer, }; enum MipMapGeneration { GenerateMipMaps, DontGenerateMipMaps, }; enum TextureUnitReset { ResetTextureUnit, DontResetTextureUnit, }; explicit QOpenGLTexture(QOpenGLTexture::Target target); QOpenGLTexture(const QImage &image, QOpenGLTexture::MipMapGeneration genMipMaps = QOpenGLTexture::GenerateMipMaps); ~QOpenGLTexture(); bool create(); void destroy(); bool isCreated() const; GLuint textureId() const; void bind(); void bind(uint unit, QOpenGLTexture::TextureUnitReset reset = QOpenGLTexture::DontResetTextureUnit); void release(); void release(uint unit, QOpenGLTexture::TextureUnitReset reset = QOpenGLTexture::DontResetTextureUnit); bool isBound() const; bool isBound(uint unit); static GLuint boundTextureId(QOpenGLTexture::BindingTarget target); static GLuint boundTextureId(uint unit, QOpenGLTexture::BindingTarget target); enum TextureFormat { NoFormat, R8_UNorm, RG8_UNorm, RGB8_UNorm, RGBA8_UNorm, R16_UNorm, RG16_UNorm, RGB16_UNorm, RGBA16_UNorm, R8_SNorm, RG8_SNorm, RGB8_SNorm, RGBA8_SNorm, R16_SNorm, RG16_SNorm, RGB16_SNorm, RGBA16_SNorm, R8U, RG8U, RGB8U, RGBA8U, R16U, RG16U, RGB16U, RGBA16U, R32U, RG32U, RGB32U, RGBA32U, R8I, RG8I, RGB8I, RGBA8I, R16I, RG16I, RGB16I, RGBA16I, R32I, RG32I, RGB32I, RGBA32I, R16F, RG16F, RGB16F, RGBA16F, R32F, RG32F, RGB32F, RGBA32F, RGB9E5, RG11B10F, RG3B2, R5G6B5, RGB5A1, RGBA4, RGB10A2, D16, D24, D24S8, D32, D32F, D32FS8X24, RGB_DXT1, RGBA_DXT1, RGBA_DXT3, RGBA_DXT5, R_ATI1N_UNorm, R_ATI1N_SNorm, RG_ATI2N_UNorm, RG_ATI2N_SNorm, RGB_BP_UNSIGNED_FLOAT, RGB_BP_SIGNED_FLOAT, RGB_BP_UNorm, SRGB8, SRGB8_Alpha8, SRGB_DXT1, SRGB_Alpha_DXT1, SRGB_Alpha_DXT3, SRGB_Alpha_DXT5, SRGB_BP_UNorm, DepthFormat, AlphaFormat, RGBFormat, RGBAFormat, LuminanceFormat, LuminanceAlphaFormat, %If (Qt_5_4_0 -) S8, %End %If (Qt_5_5_0 -) R11_EAC_UNorm, %End %If (Qt_5_5_0 -) R11_EAC_SNorm, %End %If (Qt_5_5_0 -) RG11_EAC_UNorm, %End %If (Qt_5_5_0 -) RG11_EAC_SNorm, %End %If (Qt_5_5_0 -) RGB8_ETC2, %End %If (Qt_5_5_0 -) SRGB8_ETC2, %End %If (Qt_5_5_0 -) RGB8_PunchThrough_Alpha1_ETC2, %End %If (Qt_5_5_0 -) SRGB8_PunchThrough_Alpha1_ETC2, %End %If (Qt_5_5_0 -) RGBA8_ETC2_EAC, %End %If (Qt_5_5_0 -) SRGB8_Alpha8_ETC2_EAC, %End %If (Qt_5_6_0 -) RGB8_ETC1, %End %If (Qt_5_9_0 -) RGBA_ASTC_4x4, %End %If (Qt_5_9_0 -) RGBA_ASTC_5x4, %End %If (Qt_5_9_0 -) RGBA_ASTC_5x5, %End %If (Qt_5_9_0 -) RGBA_ASTC_6x5, %End %If (Qt_5_9_0 -) RGBA_ASTC_6x6, %End %If (Qt_5_9_0 -) RGBA_ASTC_8x5, %End %If (Qt_5_9_0 -) RGBA_ASTC_8x6, %End %If (Qt_5_9_0 -) RGBA_ASTC_8x8, %End %If (Qt_5_9_0 -) RGBA_ASTC_10x5, %End %If (Qt_5_9_0 -) RGBA_ASTC_10x6, %End %If (Qt_5_9_0 -) RGBA_ASTC_10x8, %End %If (Qt_5_9_0 -) RGBA_ASTC_10x10, %End %If (Qt_5_9_0 -) RGBA_ASTC_12x10, %End %If (Qt_5_9_0 -) RGBA_ASTC_12x12, %End %If (Qt_5_9_0 -) SRGB8_Alpha8_ASTC_4x4, %End %If (Qt_5_9_0 -) SRGB8_Alpha8_ASTC_5x4, %End %If (Qt_5_9_0 -) SRGB8_Alpha8_ASTC_5x5, %End %If (Qt_5_9_0 -) SRGB8_Alpha8_ASTC_6x5, %End %If (Qt_5_9_0 -) SRGB8_Alpha8_ASTC_6x6, %End %If (Qt_5_9_0 -) SRGB8_Alpha8_ASTC_8x5, %End %If (Qt_5_9_0 -) SRGB8_Alpha8_ASTC_8x6, %End %If (Qt_5_9_0 -) SRGB8_Alpha8_ASTC_8x8, %End %If (Qt_5_9_0 -) SRGB8_Alpha8_ASTC_10x5, %End %If (Qt_5_9_0 -) SRGB8_Alpha8_ASTC_10x6, %End %If (Qt_5_9_0 -) SRGB8_Alpha8_ASTC_10x8, %End %If (Qt_5_9_0 -) SRGB8_Alpha8_ASTC_10x10, %End %If (Qt_5_9_0 -) SRGB8_Alpha8_ASTC_12x10, %End %If (Qt_5_9_0 -) SRGB8_Alpha8_ASTC_12x12, %End }; void setFormat(QOpenGLTexture::TextureFormat format); QOpenGLTexture::TextureFormat format() const; void setSize(int width, int height = 1, int depth = 1); int width() const; int height() const; int depth() const; void setMipLevels(int levels); int mipLevels() const; int maximumMipLevels() const; void setLayers(int layers); int layers() const; int faces() const; void allocateStorage(); %If (Qt_5_5_0 -) void allocateStorage(QOpenGLTexture::PixelFormat pixelFormat, QOpenGLTexture::PixelType pixelType); %End bool isStorageAllocated() const; QOpenGLTexture *createTextureView(QOpenGLTexture::Target target, QOpenGLTexture::TextureFormat viewFormat, int minimumMipmapLevel, int maximumMipmapLevel, int minimumLayer, int maximumLayer) const /Factory/; bool isTextureView() const; enum CubeMapFace { CubeMapPositiveX, CubeMapNegativeX, CubeMapPositiveY, CubeMapNegativeY, CubeMapPositiveZ, CubeMapNegativeZ, }; enum PixelFormat { NoSourceFormat, Red, RG, RGB, BGR, RGBA, BGRA, Red_Integer, RG_Integer, RGB_Integer, BGR_Integer, RGBA_Integer, BGRA_Integer, Depth, DepthStencil, Alpha, Luminance, LuminanceAlpha, %If (Qt_5_4_0 -) Stencil, %End }; enum PixelType { NoPixelType, Int8, UInt8, Int16, UInt16, Int32, UInt32, Float16, Float16OES, Float32, UInt32_RGB9_E5, UInt32_RG11B10F, UInt8_RG3B2, UInt8_RG3B2_Rev, UInt16_RGB5A1, UInt16_RGB5A1_Rev, UInt16_R5G6B5, UInt16_R5G6B5_Rev, UInt16_RGBA4, UInt16_RGBA4_Rev, UInt32_RGB10A2, UInt32_RGB10A2_Rev, %If (Qt_5_4_0 -) UInt32_RGBA8, %End %If (Qt_5_4_0 -) UInt32_RGBA8_Rev, %End %If (Qt_5_4_0 -) UInt32_D24S8, %End %If (Qt_5_4_0 -) Float32_D32_UInt32_S8_X24, %End }; %If (Qt_5_3_0 -) void setData(int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (- Qt_5_3_0) void setData(int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (Qt_5_3_0 -) void setData(int mipLevel, int layer, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (- Qt_5_3_0) void setData(int mipLevel, int layer, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (Qt_5_3_0 -) void setData(int mipLevel, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (- Qt_5_3_0) void setData(int mipLevel, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (Qt_5_3_0 -) void setData(QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (- Qt_5_3_0) void setData(QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, void *data, const QOpenGLPixelTransferOptions * const options = 0); %End void setData(const QImage &image, QOpenGLTexture::MipMapGeneration genMipMaps = QOpenGLTexture::GenerateMipMaps); %If (Qt_5_3_0 -) void setCompressedData(int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, int dataSize, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (- Qt_5_3_0) void setCompressedData(int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, int dataSize, void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (Qt_5_3_0 -) void setCompressedData(int mipLevel, int layer, int dataSize, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (- Qt_5_3_0) void setCompressedData(int mipLevel, int layer, int dataSize, void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (Qt_5_3_0 -) void setCompressedData(int mipLevel, int dataSize, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (- Qt_5_3_0) void setCompressedData(int mipLevel, int dataSize, void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (Qt_5_3_0 -) void setCompressedData(int dataSize, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (- Qt_5_3_0) void setCompressedData(int dataSize, void *data, const QOpenGLPixelTransferOptions * const options = 0); %End enum Feature { ImmutableStorage, ImmutableMultisampleStorage, TextureRectangle, TextureArrays, Texture3D, TextureMultisample, TextureBuffer, TextureCubeMapArrays, Swizzle, StencilTexturing, AnisotropicFiltering, NPOTTextures, NPOTTextureRepeat, %If (Qt_5_3_0 -) Texture1D, %End %If (Qt_5_5_0 -) TextureComparisonOperators, %End %If (Qt_5_5_0 -) TextureMipMapLevel, %End }; typedef QFlags Features; static bool hasFeature(QOpenGLTexture::Feature feature); void setMipBaseLevel(int baseLevel); int mipBaseLevel() const; void setMipMaxLevel(int maxLevel); int mipMaxLevel() const; void setMipLevelRange(int baseLevel, int maxLevel); QPair mipLevelRange() const; void setAutoMipMapGenerationEnabled(bool enabled); bool isAutoMipMapGenerationEnabled() const; void generateMipMaps(); void generateMipMaps(int baseLevel, bool resetBaseLevel = true); enum SwizzleComponent { SwizzleRed, SwizzleGreen, SwizzleBlue, SwizzleAlpha, }; enum SwizzleValue { RedValue, GreenValue, BlueValue, AlphaValue, ZeroValue, OneValue, }; void setSwizzleMask(QOpenGLTexture::SwizzleComponent component, QOpenGLTexture::SwizzleValue value); void setSwizzleMask(QOpenGLTexture::SwizzleValue r, QOpenGLTexture::SwizzleValue g, QOpenGLTexture::SwizzleValue b, QOpenGLTexture::SwizzleValue a); QOpenGLTexture::SwizzleValue swizzleMask(QOpenGLTexture::SwizzleComponent component) const; enum DepthStencilMode { DepthMode, StencilMode, }; void setDepthStencilMode(QOpenGLTexture::DepthStencilMode mode); QOpenGLTexture::DepthStencilMode depthStencilMode() const; enum Filter { Nearest, Linear, NearestMipMapNearest, NearestMipMapLinear, LinearMipMapNearest, LinearMipMapLinear, }; void setMinificationFilter(QOpenGLTexture::Filter filter); QOpenGLTexture::Filter minificationFilter() const; void setMagnificationFilter(QOpenGLTexture::Filter filter); QOpenGLTexture::Filter magnificationFilter() const; void setMinMagFilters(QOpenGLTexture::Filter minificationFilter, QOpenGLTexture::Filter magnificationFilter); QPair minMagFilters() const; void setMaximumAnisotropy(float anisotropy); float maximumAnisotropy() const; enum WrapMode { Repeat, MirroredRepeat, ClampToEdge, ClampToBorder, }; enum CoordinateDirection { DirectionS, DirectionT, DirectionR, }; void setWrapMode(QOpenGLTexture::WrapMode mode); void setWrapMode(QOpenGLTexture::CoordinateDirection direction, QOpenGLTexture::WrapMode mode); QOpenGLTexture::WrapMode wrapMode(QOpenGLTexture::CoordinateDirection direction) const; void setBorderColor(QColor color); QColor borderColor() const; void setMinimumLevelOfDetail(float value); float minimumLevelOfDetail() const; void setMaximumLevelOfDetail(float value); float maximumLevelOfDetail() const; void setLevelOfDetailRange(float min, float max); QPair levelOfDetailRange() const; void setLevelofDetailBias(float bias); float levelofDetailBias() const; %If (Qt_5_4_0 -) QOpenGLTexture::Target target() const; %End %If (Qt_5_4_0 -) void setSamples(int samples); %End %If (Qt_5_4_0 -) int samples() const; %End %If (Qt_5_4_0 -) void setFixedSamplePositions(bool fixed); %End %If (Qt_5_4_0 -) bool isFixedSamplePositions() const; %End %If (Qt_5_5_0 -) enum ComparisonFunction { CompareLessEqual, CompareGreaterEqual, CompareLess, CompareGreater, CompareEqual, CommpareNotEqual, CompareAlways, CompareNever, }; %End %If (Qt_5_5_0 -) void setComparisonFunction(QOpenGLTexture::ComparisonFunction function); %End %If (Qt_5_5_0 -) QOpenGLTexture::ComparisonFunction comparisonFunction() const; %End %If (Qt_5_5_0 -) enum ComparisonMode { CompareRefToTexture, CompareNone, }; %End %If (Qt_5_5_0 -) void setComparisonMode(QOpenGLTexture::ComparisonMode mode); %End %If (Qt_5_5_0 -) QOpenGLTexture::ComparisonMode comparisonMode() const; %End %If (Qt_5_9_0 -) void setData(int mipLevel, int layer, int layerCount, QOpenGLTexture::CubeMapFace cubeFace, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End %If (Qt_5_9_0 -) void setCompressedData(int mipLevel, int layer, int layerCount, QOpenGLTexture::CubeMapFace cubeFace, int dataSize, const void *data, const QOpenGLPixelTransferOptions * const options = 0); %End private: QOpenGLTexture(const QOpenGLTexture &); }; %End %End %If (Qt_5_2_0 -) %If (PyQt_OpenGL) QFlags operator|(QOpenGLTexture::Feature f1, QFlags f2); %End %End PyQt5_gpl-5.10.1/sip/QtGui/qopengltextureblitter.sip0000644000076500000240000000370613245233150022522 0ustar philstaff00000000000000// qopengltextureblitter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_8_0 -) %If (PyQt_OpenGL) class QOpenGLTextureBlitter { %TypeHeaderCode #include %End public: QOpenGLTextureBlitter(); ~QOpenGLTextureBlitter(); enum Origin { OriginBottomLeft, OriginTopLeft, }; bool create(); bool isCreated() const; void destroy(); bool supportsExternalOESTarget() const; void bind(GLenum target = GL_TEXTURE_2D); void release(); void setRedBlueSwizzle(bool swizzle); void setOpacity(float opacity); void blit(GLuint texture, const QMatrix4x4 &targetTransform, QOpenGLTextureBlitter::Origin sourceOrigin); void blit(GLuint texture, const QMatrix4x4 &targetTransform, const QMatrix3x3 &sourceTransform); static QMatrix4x4 targetTransform(const QRectF &target, const QRect &viewport); static QMatrix3x3 sourceTransform(const QRectF &subTexture, const QSize &textureSize, QOpenGLTextureBlitter::Origin origin); private: QOpenGLTextureBlitter(const QOpenGLTextureBlitter &); }; %End %End PyQt5_gpl-5.10.1/sip/QtGui/qopengltimerquery.sip0000644000076500000240000000433013245233150021634 0ustar philstaff00000000000000// qopengltimerquery.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) %If (PyQt_Desktop_OpenGL) class QOpenGLTimerQuery : QObject { %TypeHeaderCode #include %End public: explicit QOpenGLTimerQuery(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLTimerQuery(); bool create(); void destroy(); bool isCreated() const; GLuint objectId() const; void begin(); void end(); GLuint64 waitForTimestamp() const /ReleaseGIL/; void recordTimestamp(); bool isResultAvailable() const; GLuint64 waitForResult() const /ReleaseGIL/; private: QOpenGLTimerQuery(const QOpenGLTimerQuery &); }; %End %End %If (Qt_5_1_0 -) %If (PyQt_Desktop_OpenGL) class QOpenGLTimeMonitor : QObject { %TypeHeaderCode #include %End public: explicit QOpenGLTimeMonitor(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLTimeMonitor(); void setSampleCount(int sampleCount); int sampleCount() const; bool create(); void destroy(); bool isCreated() const; QVector objectIds() const; int recordSample(); bool isResultAvailable() const; QVector waitForSamples() const /ReleaseGIL/; QVector waitForIntervals() const /ReleaseGIL/; void reset(); private: QOpenGLTimeMonitor(const QOpenGLTimeMonitor &); }; %End %End PyQt5_gpl-5.10.1/sip/QtGui/qopenglversionfunctions.sip0000644000076500000240000000226613245233150023052 0ustar philstaff00000000000000// qopenglversionfunctions.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) %If (PyQt_OpenGL) class QAbstractOpenGLFunctions /NoDefaultCtors,Supertype=sip.wrapper/ { %TypeHeaderCode #include %End QAbstractOpenGLFunctions(const QAbstractOpenGLFunctions &); }; %End %End PyQt5_gpl-5.10.1/sip/QtGui/qopenglvertexarrayobject.sip0000644000076500000240000000375313245233150023201 0ustar philstaff00000000000000// qopenglvertexarrayobject.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) %If (PyQt_OpenGL) class QOpenGLVertexArrayObject : QObject { %TypeHeaderCode #include %End public: explicit QOpenGLVertexArrayObject(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLVertexArrayObject(); bool create(); void destroy(); bool isCreated() const; GLuint objectId() const; void bind(); void release(); class Binder { %TypeHeaderCode #include %End public: Binder(QOpenGLVertexArrayObject *v); ~Binder(); void release(); void rebind(); SIP_PYOBJECT __enter__(); %MethodCode // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->release(); %End private: Binder(const QOpenGLVertexArrayObject::Binder &); }; private: QOpenGLVertexArrayObject(const QOpenGLVertexArrayObject &); }; %End %End PyQt5_gpl-5.10.1/sip/QtGui/qopenglwindow.sip0000644000076500000240000000443713245233150020745 0ustar philstaff00000000000000// qopenglwindow.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) %If (PyQt_OpenGL) class QOpenGLWindow : QPaintDeviceWindow { %TypeHeaderCode #include %End public: enum UpdateBehavior { NoPartialUpdate, PartialUpdateBlit, PartialUpdateBlend, }; QOpenGLWindow(QOpenGLWindow::UpdateBehavior updateBehavior = QOpenGLWindow::NoPartialUpdate, QWindow *parent /TransferThis/ = 0); %If (Qt_5_5_0 -) QOpenGLWindow(QOpenGLContext *shareContext, QOpenGLWindow::UpdateBehavior updateBehavior = QOpenGLWindow::NoPartialUpdate, QWindow *parent /TransferThis/ = 0); %End %If (Qt_5_5_0 -) virtual ~QOpenGLWindow(); %End QOpenGLWindow::UpdateBehavior updateBehavior() const; bool isValid() const; void makeCurrent(); void doneCurrent(); QOpenGLContext *context() const; GLuint defaultFramebufferObject() const; QImage grabFramebuffer(); %If (Qt_5_5_0 -) QOpenGLContext *shareContext() const; %End signals: void frameSwapped(); protected: virtual void initializeGL(); virtual void resizeGL(int w, int h); virtual void paintGL(); virtual void paintUnderGL(); virtual void paintOverGL(); virtual void paintEvent(QPaintEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; private: QOpenGLWindow(const QOpenGLWindow &); }; %End %End PyQt5_gpl-5.10.1/sip/QtGui/qpagedpaintdevice.sip0000644000076500000240000001467213245233150021527 0ustar philstaff00000000000000// qpagedpaintdevice.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPagedPaintDevice : QPaintDevice { %TypeHeaderCode #include %End public: QPagedPaintDevice(); virtual ~QPagedPaintDevice(); virtual bool newPage() = 0; enum PageSize { A4, B5, Letter, Legal, Executive, A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1, B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E, DLE, Folio, Ledger, Tabloid, Custom, %If (Qt_5_3_0 -) A10, %End %If (Qt_5_3_0 -) A3Extra, %End %If (Qt_5_3_0 -) A4Extra, %End %If (Qt_5_3_0 -) A4Plus, %End %If (Qt_5_3_0 -) A4Small, %End %If (Qt_5_3_0 -) A5Extra, %End %If (Qt_5_3_0 -) B5Extra, %End %If (Qt_5_3_0 -) JisB0, %End %If (Qt_5_3_0 -) JisB1, %End %If (Qt_5_3_0 -) JisB2, %End %If (Qt_5_3_0 -) JisB3, %End %If (Qt_5_3_0 -) JisB4, %End %If (Qt_5_3_0 -) JisB5, %End %If (Qt_5_3_0 -) JisB6, %End %If (Qt_5_3_0 -) JisB7, %End %If (Qt_5_3_0 -) JisB8, %End %If (Qt_5_3_0 -) JisB9, %End %If (Qt_5_3_0 -) JisB10, %End %If (Qt_5_3_0 -) AnsiC, %End %If (Qt_5_3_0 -) AnsiD, %End %If (Qt_5_3_0 -) AnsiE, %End %If (Qt_5_3_0 -) LegalExtra, %End %If (Qt_5_3_0 -) LetterExtra, %End %If (Qt_5_3_0 -) LetterPlus, %End %If (Qt_5_3_0 -) LetterSmall, %End %If (Qt_5_3_0 -) TabloidExtra, %End %If (Qt_5_3_0 -) ArchA, %End %If (Qt_5_3_0 -) ArchB, %End %If (Qt_5_3_0 -) ArchC, %End %If (Qt_5_3_0 -) ArchD, %End %If (Qt_5_3_0 -) ArchE, %End %If (Qt_5_3_0 -) Imperial7x9, %End %If (Qt_5_3_0 -) Imperial8x10, %End %If (Qt_5_3_0 -) Imperial9x11, %End %If (Qt_5_3_0 -) Imperial9x12, %End %If (Qt_5_3_0 -) Imperial10x11, %End %If (Qt_5_3_0 -) Imperial10x13, %End %If (Qt_5_3_0 -) Imperial10x14, %End %If (Qt_5_3_0 -) Imperial12x11, %End %If (Qt_5_3_0 -) Imperial15x11, %End %If (Qt_5_3_0 -) ExecutiveStandard, %End %If (Qt_5_3_0 -) Note, %End %If (Qt_5_3_0 -) Quarto, %End %If (Qt_5_3_0 -) Statement, %End %If (Qt_5_3_0 -) SuperA, %End %If (Qt_5_3_0 -) SuperB, %End %If (Qt_5_3_0 -) Postcard, %End %If (Qt_5_3_0 -) DoublePostcard, %End %If (Qt_5_3_0 -) Prc16K, %End %If (Qt_5_3_0 -) Prc32K, %End %If (Qt_5_3_0 -) Prc32KBig, %End %If (Qt_5_3_0 -) FanFoldUS, %End %If (Qt_5_3_0 -) FanFoldGerman, %End %If (Qt_5_3_0 -) FanFoldGermanLegal, %End %If (Qt_5_3_0 -) EnvelopeB4, %End %If (Qt_5_3_0 -) EnvelopeB5, %End %If (Qt_5_3_0 -) EnvelopeB6, %End %If (Qt_5_3_0 -) EnvelopeC0, %End %If (Qt_5_3_0 -) EnvelopeC1, %End %If (Qt_5_3_0 -) EnvelopeC2, %End %If (Qt_5_3_0 -) EnvelopeC3, %End %If (Qt_5_3_0 -) EnvelopeC4, %End %If (Qt_5_3_0 -) EnvelopeC6, %End %If (Qt_5_3_0 -) EnvelopeC65, %End %If (Qt_5_3_0 -) EnvelopeC7, %End %If (Qt_5_3_0 -) Envelope9, %End %If (Qt_5_3_0 -) Envelope11, %End %If (Qt_5_3_0 -) Envelope12, %End %If (Qt_5_3_0 -) Envelope14, %End %If (Qt_5_3_0 -) EnvelopeMonarch, %End %If (Qt_5_3_0 -) EnvelopePersonal, %End %If (Qt_5_3_0 -) EnvelopeChou3, %End %If (Qt_5_3_0 -) EnvelopeChou4, %End %If (Qt_5_3_0 -) EnvelopeInvite, %End %If (Qt_5_3_0 -) EnvelopeItalian, %End %If (Qt_5_3_0 -) EnvelopeKaku2, %End %If (Qt_5_3_0 -) EnvelopeKaku3, %End %If (Qt_5_3_0 -) EnvelopePrc1, %End %If (Qt_5_3_0 -) EnvelopePrc2, %End %If (Qt_5_3_0 -) EnvelopePrc3, %End %If (Qt_5_3_0 -) EnvelopePrc4, %End %If (Qt_5_3_0 -) EnvelopePrc5, %End %If (Qt_5_3_0 -) EnvelopePrc6, %End %If (Qt_5_3_0 -) EnvelopePrc7, %End %If (Qt_5_3_0 -) EnvelopePrc8, %End %If (Qt_5_3_0 -) EnvelopePrc9, %End %If (Qt_5_3_0 -) EnvelopePrc10, %End %If (Qt_5_3_0 -) EnvelopeYou4, %End %If (Qt_5_3_0 -) NPaperSize, %End %If (Qt_5_3_0 -) AnsiA, %End %If (Qt_5_3_0 -) AnsiB, %End %If (Qt_5_3_0 -) EnvelopeC5, %End %If (Qt_5_3_0 -) EnvelopeDL, %End %If (Qt_5_3_0 -) Envelope10, %End %If (Qt_5_3_0 -) LastPageSize, %End }; %If (Qt_5_10_0 -) enum PdfVersion { PdfVersion_1_4, PdfVersion_A1b, }; %End virtual void setPageSize(QPagedPaintDevice::PageSize size); QPagedPaintDevice::PageSize pageSize() const; virtual void setPageSizeMM(const QSizeF &size); QSizeF pageSizeMM() const; struct Margins { %TypeHeaderCode #include %End qreal left; qreal right; qreal top; qreal bottom; }; virtual void setMargins(const QPagedPaintDevice::Margins &margins); QPagedPaintDevice::Margins margins() const; %If (Qt_5_3_0 -) bool setPageLayout(const QPageLayout &pageLayout); %End %If (Qt_5_3_0 -) bool setPageSize(const QPageSize &pageSize); %End %If (Qt_5_3_0 -) bool setPageOrientation(QPageLayout::Orientation orientation); %End %If (Qt_5_3_0 -) bool setPageMargins(const QMarginsF &margins); %End %If (Qt_5_3_0 -) bool setPageMargins(const QMarginsF &margins, QPageLayout::Unit units); %End %If (Qt_5_3_0 -) QPageLayout pageLayout() const; %End }; PyQt5_gpl-5.10.1/sip/QtGui/qpagelayout.sip0000644000076500000240000000616313245233150020401 0ustar philstaff00000000000000// qpagelayout.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class QPageLayout { %TypeHeaderCode #include %End public: enum Unit { Millimeter, Point, Inch, Pica, Didot, Cicero, }; enum Orientation { Portrait, Landscape, }; enum Mode { StandardMode, FullPageMode, }; QPageLayout(); QPageLayout(const QPageSize &pageSize, QPageLayout::Orientation orientation, const QMarginsF &margins, QPageLayout::Unit units = QPageLayout::Point, const QMarginsF &minMargins = QMarginsF(0.0, 0.0, 0.0, 0.0)); QPageLayout(const QPageLayout &other); ~QPageLayout(); void swap(QPageLayout &other /Constrained/); bool isEquivalentTo(const QPageLayout &other) const; bool isValid() const; void setMode(QPageLayout::Mode mode); QPageLayout::Mode mode() const; void setPageSize(const QPageSize &pageSize, const QMarginsF &minMargins = QMarginsF(0.0, 0.0, 0.0, 0.0)); QPageSize pageSize() const; void setOrientation(QPageLayout::Orientation orientation); QPageLayout::Orientation orientation() const; void setUnits(QPageLayout::Unit units); QPageLayout::Unit units() const; bool setMargins(const QMarginsF &margins); bool setLeftMargin(qreal leftMargin); bool setRightMargin(qreal rightMargin); bool setTopMargin(qreal topMargin); bool setBottomMargin(qreal bottomMargin); QMarginsF margins() const; QMarginsF margins(QPageLayout::Unit units) const; QMargins marginsPoints() const; QMargins marginsPixels(int resolution) const; void setMinimumMargins(const QMarginsF &minMargins); QMarginsF minimumMargins() const; QMarginsF maximumMargins() const; QRectF fullRect() const; QRectF fullRect(QPageLayout::Unit units) const; QRect fullRectPoints() const; QRect fullRectPixels(int resolution) const; QRectF paintRect() const; QRectF paintRect(QPageLayout::Unit units) const; QRect paintRectPoints() const; QRect paintRectPixels(int resolution) const; }; %End %If (Qt_5_3_0 -) bool operator==(const QPageLayout &lhs, const QPageLayout &rhs); %End %If (Qt_5_3_0 -) bool operator!=(const QPageLayout &lhs, const QPageLayout &rhs); %End PyQt5_gpl-5.10.1/sip/QtGui/qpagesize.sip0000644000076500000240000001274413245233150020040 0ustar philstaff00000000000000// qpagesize.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class QPageSize { %TypeHeaderCode #include %End public: enum PageSizeId { A4, B5, Letter, Legal, Executive, A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1, B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E, DLE, Folio, Ledger, Tabloid, Custom, A10, A3Extra, A4Extra, A4Plus, A4Small, A5Extra, B5Extra, JisB0, JisB1, JisB2, JisB3, JisB4, JisB5, JisB6, JisB7, JisB8, JisB9, JisB10, AnsiC, AnsiD, AnsiE, LegalExtra, LetterExtra, LetterPlus, LetterSmall, TabloidExtra, ArchA, ArchB, ArchC, ArchD, ArchE, Imperial7x9, Imperial8x10, Imperial9x11, Imperial9x12, Imperial10x11, Imperial10x13, Imperial10x14, Imperial12x11, Imperial15x11, ExecutiveStandard, Note, Quarto, Statement, SuperA, SuperB, Postcard, DoublePostcard, Prc16K, Prc32K, Prc32KBig, FanFoldUS, FanFoldGerman, FanFoldGermanLegal, EnvelopeB4, EnvelopeB5, EnvelopeB6, EnvelopeC0, EnvelopeC1, EnvelopeC2, EnvelopeC3, EnvelopeC4, EnvelopeC6, EnvelopeC65, EnvelopeC7, Envelope9, Envelope11, Envelope12, Envelope14, EnvelopeMonarch, EnvelopePersonal, EnvelopeChou3, EnvelopeChou4, EnvelopeInvite, EnvelopeItalian, EnvelopeKaku2, EnvelopeKaku3, EnvelopePrc1, EnvelopePrc2, EnvelopePrc3, EnvelopePrc4, EnvelopePrc5, EnvelopePrc6, EnvelopePrc7, EnvelopePrc8, EnvelopePrc9, EnvelopePrc10, EnvelopeYou4, NPageSize, NPaperSize, AnsiA, AnsiB, EnvelopeC5, EnvelopeDL, Envelope10, LastPageSize, }; enum Unit { Millimeter, Point, Inch, Pica, Didot, Cicero, }; enum SizeMatchPolicy { FuzzyMatch, FuzzyOrientationMatch, ExactMatch, }; QPageSize(); explicit QPageSize(QPageSize::PageSizeId pageSizeId); QPageSize(const QSize &pointSize, const QString &name = QString(), QPageSize::SizeMatchPolicy matchPolicy = QPageSize::FuzzyMatch); QPageSize(const QSizeF &size, QPageSize::Unit units, const QString &name = QString(), QPageSize::SizeMatchPolicy matchPolicy = QPageSize::FuzzyMatch); QPageSize(const QPageSize &other); ~QPageSize(); void swap(QPageSize &other /Constrained/); bool isEquivalentTo(const QPageSize &other) const; bool isValid() const; QString key() const; QString name() const; QPageSize::PageSizeId id() const; int windowsId() const; QSizeF definitionSize() const; QPageSize::Unit definitionUnits() const; QSizeF size(QPageSize::Unit units) const; QSize sizePoints() const; QSize sizePixels(int resolution) const; QRectF rect(QPageSize::Unit units) const; QRect rectPoints() const; QRect rectPixels(int resolution) const; static QString key(QPageSize::PageSizeId pageSizeId); static QString name(QPageSize::PageSizeId pageSizeId); static QPageSize::PageSizeId id(const QSize &pointSize, QPageSize::SizeMatchPolicy matchPolicy = QPageSize::FuzzyMatch); static QPageSize::PageSizeId id(const QSizeF &size, QPageSize::Unit units, QPageSize::SizeMatchPolicy matchPolicy = QPageSize::FuzzyMatch); static QPageSize::PageSizeId id(int windowsId); static int windowsId(QPageSize::PageSizeId pageSizeId); static QSizeF definitionSize(QPageSize::PageSizeId pageSizeId); static QPageSize::Unit definitionUnits(QPageSize::PageSizeId pageSizeId); static QSizeF size(QPageSize::PageSizeId pageSizeId, QPageSize::Unit units); static QSize sizePoints(QPageSize::PageSizeId pageSizeId); static QSize sizePixels(QPageSize::PageSizeId pageSizeId, int resolution); }; %End %If (Qt_5_3_0 -) bool operator==(const QPageSize &lhs, const QPageSize &rhs); %End %If (Qt_5_3_0 -) bool operator!=(const QPageSize &lhs, const QPageSize &rhs); %End PyQt5_gpl-5.10.1/sip/QtGui/qpaintdevice.sip0000644000076500000240000000406613245233150020522 0ustar philstaff00000000000000// qpaintdevice.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPaintDevice { %TypeHeaderCode #include %End public: enum PaintDeviceMetric { PdmWidth, PdmHeight, PdmWidthMM, PdmHeightMM, PdmNumColors, PdmDepth, PdmDpiX, PdmDpiY, PdmPhysicalDpiX, PdmPhysicalDpiY, %If (Qt_5_1_0 -) PdmDevicePixelRatio, %End %If (Qt_5_6_0 -) PdmDevicePixelRatioScaled, %End }; virtual ~QPaintDevice(); virtual QPaintEngine *paintEngine() const = 0; int width() const; int height() const; int widthMM() const; int heightMM() const; int logicalDpiX() const; int logicalDpiY() const; int physicalDpiX() const; int physicalDpiY() const; int depth() const; bool paintingActive() const; int colorCount() const; %If (Qt_5_1_0 -) int devicePixelRatio() const; %End protected: QPaintDevice(); virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; public: %If (Qt_5_6_0 -) qreal devicePixelRatioF() const; %End %If (Qt_5_6_0 -) static qreal devicePixelRatioFScale(); %End private: QPaintDevice(const QPaintDevice &); }; PyQt5_gpl-5.10.1/sip/QtGui/qpaintdevicewindow.sip0000644000076500000240000000273513245233150021753 0ustar philstaff00000000000000// qpaintdevicewindow.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QPaintDeviceWindow : QWindow, QPaintDevice /NoDefaultCtors/ { %TypeHeaderCode #include %End public: void update(const QRect &rect); void update(const QRegion ®ion); public slots: void update(); protected: virtual void paintEvent(QPaintEvent *event); virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; virtual void exposeEvent(QExposeEvent *); virtual bool event(QEvent *event); private: QPaintDeviceWindow(const QPaintDeviceWindow &); }; %End PyQt5_gpl-5.10.1/sip/QtGui/qpaintengine.sip0000644000076500000240000001341013245233150020521 0ustar philstaff00000000000000// qpaintengine.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextItem { %TypeHeaderCode #include %End public: enum RenderFlag { RightToLeft, Overline, Underline, StrikeOut, }; typedef QFlags RenderFlags; qreal descent() const; qreal ascent() const; qreal width() const; QTextItem::RenderFlags renderFlags() const; QString text() const; QFont font() const; }; QFlags operator|(QTextItem::RenderFlag f1, QFlags f2); class QPaintEngine { %TypeHeaderCode #include %End public: enum PaintEngineFeature { PrimitiveTransform, PatternTransform, PixmapTransform, PatternBrush, LinearGradientFill, RadialGradientFill, ConicalGradientFill, AlphaBlend, PorterDuff, PainterPaths, Antialiasing, BrushStroke, ConstantOpacity, MaskedBrush, PaintOutsidePaintEvent, PerspectiveTransform, BlendModes, ObjectBoundingModeGradients, RasterOpModes, AllFeatures, }; typedef QFlags PaintEngineFeatures; enum DirtyFlag { DirtyPen, DirtyBrush, DirtyBrushOrigin, DirtyFont, DirtyBackground, DirtyBackgroundMode, DirtyTransform, DirtyClipRegion, DirtyClipPath, DirtyHints, DirtyCompositionMode, DirtyClipEnabled, DirtyOpacity, AllDirty, }; typedef QFlags DirtyFlags; enum PolygonDrawMode { OddEvenMode, WindingMode, ConvexMode, PolylineMode, }; explicit QPaintEngine(QPaintEngine::PaintEngineFeatures features = QPaintEngine::PaintEngineFeatures()); virtual ~QPaintEngine(); bool isActive() const; void setActive(bool newState); virtual bool begin(QPaintDevice *pdev) = 0; virtual bool end() = 0; virtual void updateState(const QPaintEngineState &state /NoCopy/) = 0; virtual void drawRects(const QRect *rects /Array/, int rectCount /ArraySize/); virtual void drawRects(const QRectF *rects /Array/, int rectCount /ArraySize/); virtual void drawLines(const QLine *lines /Array/, int lineCount /ArraySize/); virtual void drawLines(const QLineF *lines /Array/, int lineCount /ArraySize/); virtual void drawEllipse(const QRectF &r); virtual void drawEllipse(const QRect &r); virtual void drawPath(const QPainterPath &path); virtual void drawPoints(const QPointF *points /Array/, int pointCount /ArraySize/); virtual void drawPoints(const QPoint *points /Array/, int pointCount /ArraySize/); virtual void drawPolygon(const QPointF *points /Array/, int pointCount /ArraySize/, QPaintEngine::PolygonDrawMode mode); virtual void drawPolygon(const QPoint *points /Array/, int pointCount /ArraySize/, QPaintEngine::PolygonDrawMode mode); virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) = 0; virtual void drawTextItem(const QPointF &p, const QTextItem &textItem /NoCopy/); virtual void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s); virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor); void setPaintDevice(QPaintDevice *device); QPaintDevice *paintDevice() const; enum Type { X11, Windows, QuickDraw, CoreGraphics, MacPrinter, QWindowSystem, PostScript, OpenGL, Picture, SVG, Raster, Direct3D, Pdf, OpenVG, OpenGL2, PaintBuffer, Blitter, %If (Qt_5_3_0 -) Direct2D, %End User, MaxUser, }; virtual QPaintEngine::Type type() const = 0; QPainter *painter() const; bool hasFeature(QPaintEngine::PaintEngineFeatures feature) const; private: QPaintEngine(const QPaintEngine &); }; QFlags operator|(QPaintEngine::PaintEngineFeature f1, QFlags f2); class QPaintEngineState { %TypeHeaderCode #include %End public: QPaintEngine::DirtyFlags state() const; QPen pen() const; QBrush brush() const; QPointF brushOrigin() const; QBrush backgroundBrush() const; Qt::BGMode backgroundMode() const; QFont font() const; qreal opacity() const; Qt::ClipOperation clipOperation() const; QRegion clipRegion() const; QPainterPath clipPath() const; bool isClipEnabled() const; QPainter::RenderHints renderHints() const; QPainter::CompositionMode compositionMode() const; QPainter *painter() const; QTransform transform() const; bool brushNeedsResolving() const; bool penNeedsResolving() const; }; PyQt5_gpl-5.10.1/sip/QtGui/qpainter.sip0000644000076500000240000004763513245233150017702 0ustar philstaff00000000000000// qpainter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPainter { %TypeHeaderCode #include %End %TypeCode // Return an array on the heap of class instances extracted from a set of // Python arguments. template static TYPE *qtgui_inst_array(const TYPE *first, PyObject *t, sipTypeDef *td) { TYPE *arr = new TYPE[1 + PyTuple_Size(t)]; arr[0] = *first; for (Py_ssize_t i = 0; i < PyTuple_Size(t); ++i) { int iserr = 0, state; TYPE *itm; itm = reinterpret_cast(sipForceConvertToType(PyTuple_GetItem(t, i), td, 0, SIP_NOT_NONE, &state, &iserr)); if (iserr) { sipReleaseType(itm, td, state); PyErr_Format(PyExc_TypeError, "each argument must be an instance of %s", sipPyTypeName(sipTypeAsPyTypeObject(td))); delete[] arr; return 0; } arr[1 + i] = *itm; sipReleaseType(itm, td, state); } return arr; } %End public: enum RenderHint { Antialiasing, TextAntialiasing, SmoothPixmapTransform, HighQualityAntialiasing, NonCosmeticDefaultPen, Qt4CompatiblePainting, }; typedef QFlags RenderHints; QPainter(); explicit QPainter(QPaintDevice *); ~QPainter(); SIP_PYOBJECT __enter__(); %MethodCode // Check a device was passed. if (sipCpp->isActive()) { // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); } else { PyErr_SetString(PyExc_ValueError, "QPainter must be created with a device"); sipRes = 0; } %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->end(); %End QPaintDevice *device() const; bool begin(QPaintDevice *); bool end(); bool isActive() const; enum CompositionMode { CompositionMode_SourceOver, CompositionMode_DestinationOver, CompositionMode_Clear, CompositionMode_Source, CompositionMode_Destination, CompositionMode_SourceIn, CompositionMode_DestinationIn, CompositionMode_SourceOut, CompositionMode_DestinationOut, CompositionMode_SourceAtop, CompositionMode_DestinationAtop, CompositionMode_Xor, CompositionMode_Plus, CompositionMode_Multiply, CompositionMode_Screen, CompositionMode_Overlay, CompositionMode_Darken, CompositionMode_Lighten, CompositionMode_ColorDodge, CompositionMode_ColorBurn, CompositionMode_HardLight, CompositionMode_SoftLight, CompositionMode_Difference, CompositionMode_Exclusion, RasterOp_SourceOrDestination, RasterOp_SourceAndDestination, RasterOp_SourceXorDestination, RasterOp_NotSourceAndNotDestination, RasterOp_NotSourceOrNotDestination, RasterOp_NotSourceXorDestination, RasterOp_NotSource, RasterOp_NotSourceAndDestination, RasterOp_SourceAndNotDestination, RasterOp_NotSourceOrDestination, RasterOp_SourceOrNotDestination, RasterOp_ClearDestination, RasterOp_SetDestination, RasterOp_NotDestination, }; void setCompositionMode(QPainter::CompositionMode mode); QPainter::CompositionMode compositionMode() const; const QFont &font() const; void setFont(const QFont &f); QFontMetrics fontMetrics() const; QFontInfo fontInfo() const; void setPen(const QColor &color); void setPen(const QPen &pen); void setPen(Qt::PenStyle style); const QPen &pen() const; void setBrush(const QBrush &brush); void setBrush(Qt::BrushStyle style); const QBrush &brush() const; void setBackgroundMode(Qt::BGMode mode); Qt::BGMode backgroundMode() const; QPoint brushOrigin() const; void setBrushOrigin(const QPointF &); void setBackground(const QBrush &bg); const QBrush &background() const; QRegion clipRegion() const; QPainterPath clipPath() const; void setClipRect(const QRectF &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip); void setClipRegion(const QRegion ®ion, Qt::ClipOperation operation = Qt::ReplaceClip); void setClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip); void setClipping(bool enable); bool hasClipping() const; void save(); void restore(); void scale(qreal sx, qreal sy); void shear(qreal sh, qreal sv); void rotate(qreal a); void translate(const QPointF &offset); QRect window() const; void setWindow(const QRect &window); QRect viewport() const; void setViewport(const QRect &viewport); void setViewTransformEnabled(bool enable); bool viewTransformEnabled() const; void strokePath(const QPainterPath &path, const QPen &pen); void fillPath(const QPainterPath &path, const QBrush &brush); void drawPath(const QPainterPath &path); void drawPoints(const QPointF *point, ...); %MethodCode QPointF *points = qtgui_inst_array(a0, a1, sipType_QPointF); if (points) { sipCpp->drawPoints(points, 1 + PyTuple_Size(a1)); delete[] points; } else sipIsErr = 1; %End void drawPoints(const QPolygonF &points); void drawPoints(const QPoint *point, ...); %MethodCode QPoint *points = qtgui_inst_array(a0, a1, sipType_QPoint); if (points) { sipCpp->drawPoints(points, 1 + PyTuple_Size(a1)); delete[] points; } else sipIsErr = 1; %End void drawPoints(const QPolygon &points); void drawLines(const QLineF *line, ...); %MethodCode QLineF *lines = qtgui_inst_array(a0, a1, sipType_QLineF); if (lines) { sipCpp->drawLines(lines, 1 + PyTuple_Size(a1)); delete[] lines; } else sipIsErr = 1; %End void drawLines(const QVector &lines); void drawLines(const QPointF *pointPair, ...); %MethodCode QPointF *pairs = qtgui_inst_array(a0, a1, sipType_QPointF); if (pairs) { sipCpp->drawLines(pairs, (1 + PyTuple_Size(a1)) / 2); delete[] pairs; } else sipIsErr = 1; %End void drawLines(const QVector &pointPairs); void drawLines(const QLine *line, ...); %MethodCode QLine *lines = qtgui_inst_array(a0, a1, sipType_QLine); if (lines) { sipCpp->drawLines(lines, 1 + PyTuple_Size(a1)); delete[] lines; } else sipIsErr = 1; %End void drawLines(const QVector &lines); void drawLines(const QPoint *pointPair, ...); %MethodCode QPoint *pairs = qtgui_inst_array(a0, a1, sipType_QPoint); if (pairs) { sipCpp->drawLines(pairs, (1 + PyTuple_Size(a1)) / 2); delete[] pairs; } else sipIsErr = 1; %End void drawLines(const QVector &pointPairs); void drawRects(const QRectF *rect, ...); %MethodCode QRectF *rects = qtgui_inst_array(a0, a1, sipType_QRectF); if (rects) { sipCpp->drawRects(rects, 1 + PyTuple_Size(a1)); delete[] rects; } else sipIsErr = 1; %End void drawRects(const QVector &rects); void drawRects(const QRect *rect, ...); %MethodCode QRect *rects = qtgui_inst_array(a0, a1, sipType_QRect); if (rects) { sipCpp->drawRects(rects, 1 + PyTuple_Size(a1)); delete[] rects; } else sipIsErr = 1; %End void drawRects(const QVector &rects); void drawEllipse(const QRectF &r); void drawEllipse(const QRect &r); void drawPolyline(const QPointF *point, ...); %MethodCode QPointF *points = qtgui_inst_array(a0, a1, sipType_QPointF); if (points) { sipCpp->drawPolyline(points, 1 + PyTuple_Size(a1)); delete[] points; } else sipIsErr = 1; %End void drawPolyline(const QPolygonF &polyline); void drawPolyline(const QPoint *point, ...); %MethodCode QPoint *points = qtgui_inst_array(a0, a1, sipType_QPoint); if (points) { sipCpp->drawPolyline(points, 1 + PyTuple_Size(a1)); delete[] points; } else sipIsErr = 1; %End void drawPolyline(const QPolygon &polyline); void drawPolygon(const QPointF *point, ...); %MethodCode QPointF *points = qtgui_inst_array(a0, a1, sipType_QPointF); if (points) { sipCpp->drawPolygon(points, 1 + PyTuple_Size(a1)); delete[] points; } else sipIsErr = 1; %End void drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill); void drawPolygon(const QPoint *point, ...); %MethodCode QPoint *points = qtgui_inst_array(a0, a1, sipType_QPoint); if (points) { sipCpp->drawPolygon(points, 1 + PyTuple_Size(a1)); delete[] points; } else sipIsErr = 1; %End void drawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill); void drawConvexPolygon(const QPointF *point, ...); %MethodCode QPointF *points = qtgui_inst_array(a0, a1, sipType_QPointF); if (points) { sipCpp->drawConvexPolygon(points, 1 + PyTuple_Size(a1)); delete[] points; } else sipIsErr = 1; %End void drawConvexPolygon(const QPolygonF &poly); void drawConvexPolygon(const QPoint *point, ...); %MethodCode QPoint *points = qtgui_inst_array(a0, a1, sipType_QPoint); if (points) { sipCpp->drawConvexPolygon(points, 1 + PyTuple_Size(a1)); delete[] points; } else sipIsErr = 1; %End void drawConvexPolygon(const QPolygon &poly); void drawArc(const QRectF &rect, int a, int alen); void drawPie(const QRectF &rect, int a, int alen); void drawChord(const QRectF &rect, int a, int alen); void drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &pos = QPointF()); void drawPicture(const QPointF &p, const QPicture &picture); void drawPixmap(const QRectF &targetRect, const QPixmap &pixmap, const QRectF &sourceRect); void setLayoutDirection(Qt::LayoutDirection direction); Qt::LayoutDirection layoutDirection() const; void drawText(const QPointF &p, const QString &s); void drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect /Out/ = 0); void drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect /Out/ = 0); void drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption()); QRectF boundingRect(const QRectF &rect, int flags, const QString &text); QRect boundingRect(const QRect &rect, int flags, const QString &text); QRectF boundingRect(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption()); void fillRect(const QRectF &, const QBrush &); void fillRect(const QRect &, const QBrush &); void eraseRect(const QRectF &); void setRenderHint(QPainter::RenderHint hint, bool on = true); QPainter::RenderHints renderHints() const; void setRenderHints(QPainter::RenderHints hints, bool on = true); QPaintEngine *paintEngine() const; void drawLine(const QLineF &l); void drawLine(const QLine &line); void drawLine(int x1, int y1, int x2, int y2); void drawLine(const QPoint &p1, const QPoint &p2); void drawLine(const QPointF &p1, const QPointF &p2); void drawRect(const QRectF &rect); void drawRect(int x, int y, int w, int h); void drawRect(const QRect &r); void drawPoint(const QPointF &p); void drawPoint(int x, int y); void drawPoint(const QPoint &p); void drawEllipse(int x, int y, int w, int h); void drawArc(const QRect &r, int a, int alen); void drawArc(int x, int y, int w, int h, int a, int alen); void drawPie(const QRect &rect, int a, int alen); void drawPie(int x, int y, int w, int h, int a, int alen); void drawChord(const QRect &rect, int a, int alen); void drawChord(int x, int y, int w, int h, int a, int alen); void setClipRect(int x, int y, int width, int height, Qt::ClipOperation operation = Qt::ReplaceClip); void setClipRect(const QRect &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip); void eraseRect(const QRect &rect); void eraseRect(int x, int y, int w, int h); void fillRect(int x, int y, int w, int h, const QBrush &b); void setBrushOrigin(int x, int y); void setBrushOrigin(const QPoint &p); void drawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &pos = QPoint()); void drawTiledPixmap(int x, int y, int width, int height, const QPixmap &pixmap, int sx = 0, int sy = 0); void drawPixmap(const QRect &targetRect, const QPixmap &pixmap, const QRect &sourceRect); void drawPixmap(const QPointF &p, const QPixmap &pm); void drawPixmap(const QPoint &p, const QPixmap &pm); void drawPixmap(const QRect &r, const QPixmap &pm); void drawPixmap(int x, int y, const QPixmap &pm); void drawPixmap(int x, int y, int w, int h, const QPixmap &pm); void drawPixmap(int x, int y, int w, int h, const QPixmap &pm, int sx, int sy, int sw, int sh); void drawPixmap(int x, int y, const QPixmap &pm, int sx, int sy, int sw, int sh); void drawPixmap(const QPointF &p, const QPixmap &pm, const QRectF &sr); void drawPixmap(const QPoint &p, const QPixmap &pm, const QRect &sr); void drawImage(const QRectF &targetRect, const QImage &image, const QRectF &sourceRect, Qt::ImageConversionFlags flags = Qt::AutoColor); void drawImage(const QRect &targetRect, const QImage &image, const QRect &sourceRect, Qt::ImageConversionFlags flags = Qt::AutoColor); void drawImage(const QPointF &p, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor); void drawImage(const QPoint &p, const QImage &image, const QRect &sr, Qt::ImageConversionFlags flags = Qt::AutoColor); void drawImage(const QRectF &r, const QImage &image); void drawImage(const QRect &r, const QImage &image); void drawImage(const QPointF &p, const QImage &image); void drawImage(const QPoint &p, const QImage &image); void drawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor); void drawText(const QPoint &p, const QString &s); void drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect /Out/ = 0); void drawText(int x, int y, const QString &s); QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text); qreal opacity() const; void setOpacity(qreal opacity); void translate(qreal dx, qreal dy); void translate(const QPoint &offset); void setViewport(int x, int y, int w, int h); void setWindow(int x, int y, int w, int h); bool worldMatrixEnabled() const; void setWorldMatrixEnabled(bool enabled); void drawPicture(int x, int y, const QPicture &p); void drawPicture(const QPoint &pt, const QPicture &p); void setTransform(const QTransform &transform, bool combine = false); const QTransform &transform() const; const QTransform &deviceTransform() const; void resetTransform(); void setWorldTransform(const QTransform &matrix, bool combine = false); const QTransform &worldTransform() const; QTransform combinedTransform() const; bool testRenderHint(QPainter::RenderHint hint) const; void drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize); void drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize); void drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize); void drawEllipse(const QPointF ¢er, qreal rx, qreal ry); void drawEllipse(const QPoint ¢er, int rx, int ry); void fillRect(const QRectF &, const QColor &color); void fillRect(const QRect &, const QColor &color); void fillRect(int x, int y, int w, int h, const QColor &b); void fillRect(int x, int y, int w, int h, Qt::GlobalColor c); void fillRect(const QRect &r, Qt::GlobalColor c); void fillRect(const QRectF &r, Qt::GlobalColor c); void fillRect(int x, int y, int w, int h, Qt::BrushStyle style); void fillRect(const QRect &r, Qt::BrushStyle style); void fillRect(const QRectF &r, Qt::BrushStyle style); void beginNativePainting(); void endNativePainting(); class PixmapFragment { %TypeHeaderCode #include %End public: qreal x; qreal y; qreal sourceLeft; qreal sourceTop; qreal width; qreal height; qreal scaleX; qreal scaleY; qreal rotation; qreal opacity; static QPainter::PixmapFragment create(const QPointF &pos, const QRectF &sourceRect, qreal scaleX = 1, qreal scaleY = 1, qreal rotation = 0, qreal opacity = 1) /Factory/; }; enum PixmapFragmentHint { OpaqueHint, }; typedef QFlags PixmapFragmentHints; void drawPixmapFragments(SIP_PYLIST fragments /TypeHint="List[QPainter.PixmapFragment]"/, const QPixmap &pixmap, QFlags hints = 0); %MethodCode // Allocate temporary storage for the C++ conversions. Py_ssize_t numFragments = PyList_Size(a0); QPainter::PixmapFragment *fragments = new QPainter::PixmapFragment[numFragments]; // Convert the fragments. for (Py_ssize_t i = 0; i < numFragments; ++i) { void *cpp = sipForceConvertToType(PyList_GetItem(a0, i), sipType_QPainter_PixmapFragment, NULL, SIP_NO_CONVERTORS, NULL, &sipIsErr); fragments[i] = *reinterpret_cast(cpp); } if (!sipIsErr) { Py_BEGIN_ALLOW_THREADS sipCpp->drawPixmapFragments(fragments, numFragments, *a1, *a2); Py_END_ALLOW_THREADS } delete[] fragments; %End void drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText); void drawStaticText(const QPoint &p, const QStaticText &staticText); void drawStaticText(int x, int y, const QStaticText &staticText); QRectF clipBoundingRect() const; %If (PyQt_RawFont) void drawGlyphRun(const QPointF &position, const QGlyphRun &glyphRun); %End private: QPainter(const QPainter &); }; QFlags operator|(QPainter::RenderHint f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtGui/qpainterpath.sip0000644000076500000240000001530313245233150020542 0ustar philstaff00000000000000// qpainterpath.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPainterPath { %TypeHeaderCode #include %End public: enum ElementType { MoveToElement, LineToElement, CurveToElement, CurveToDataElement, }; class Element { %TypeHeaderCode #include %End public: qreal x; qreal y; QPainterPath::ElementType type; bool isMoveTo() const; bool isLineTo() const; bool isCurveTo() const; bool operator==(const QPainterPath::Element &e) const; bool operator!=(const QPainterPath::Element &e) const; operator QPointF() const; }; QPainterPath(); explicit QPainterPath(const QPointF &startPoint); QPainterPath(const QPainterPath &other); ~QPainterPath(); void closeSubpath(); void moveTo(const QPointF &p); void lineTo(const QPointF &p); void arcTo(const QRectF &rect, qreal startAngle, qreal arcLength); void cubicTo(const QPointF &ctrlPt1, const QPointF &ctrlPt2, const QPointF &endPt); void quadTo(const QPointF &ctrlPt, const QPointF &endPt); QPointF currentPosition() const; void addRect(const QRectF &rect); void addEllipse(const QRectF &rect); void addPolygon(const QPolygonF &polygon); void addText(const QPointF &point, const QFont &f, const QString &text); void addPath(const QPainterPath &path); void addRegion(const QRegion ®ion); void connectPath(const QPainterPath &path); bool contains(const QPointF &pt) const; bool contains(const QRectF &rect) const; bool intersects(const QRectF &rect) const; QRectF boundingRect() const; QRectF controlPointRect() const; Qt::FillRule fillRule() const; void setFillRule(Qt::FillRule fillRule); QPainterPath toReversed() const; QList toSubpathPolygons() const; %MethodCode sipRes = new QList(sipCpp->toSubpathPolygons()); %End QList toFillPolygons() const; %MethodCode sipRes = new QList(sipCpp->toFillPolygons()); %End QPolygonF toFillPolygon() const; %MethodCode sipRes = new QPolygonF(sipCpp->toFillPolygon()); %End bool operator==(const QPainterPath &other) const; bool operator!=(const QPainterPath &other) const; void moveTo(qreal x, qreal y); void arcMoveTo(const QRectF &rect, qreal angle); void arcMoveTo(qreal x, qreal y, qreal w, qreal h, qreal angle); void arcTo(qreal x, qreal y, qreal w, qreal h, qreal startAngle, qreal arcLenght); void lineTo(qreal x, qreal y); void cubicTo(qreal ctrlPt1x, qreal ctrlPt1y, qreal ctrlPt2x, qreal ctrlPt2y, qreal endPtx, qreal endPty); void quadTo(qreal ctrlPtx, qreal ctrlPty, qreal endPtx, qreal endPty); void addEllipse(qreal x, qreal y, qreal w, qreal h); void addRect(qreal x, qreal y, qreal w, qreal h); void addText(qreal x, qreal y, const QFont &f, const QString &text); bool isEmpty() const; int elementCount() const; QPainterPath::Element elementAt(int i) const; void setElementPositionAt(int i, qreal x, qreal y); QList toSubpathPolygons(const QTransform &matrix) const; QList toFillPolygons(const QTransform &matrix) const; QPolygonF toFillPolygon(const QTransform &matrix) const; qreal length() const; qreal percentAtLength(qreal t) const; QPointF pointAtPercent(qreal t) const; qreal angleAtPercent(qreal t) const; qreal slopeAtPercent(qreal t) const; bool intersects(const QPainterPath &p) const; bool contains(const QPainterPath &p) const; QPainterPath united(const QPainterPath &r) const; QPainterPath intersected(const QPainterPath &r) const; QPainterPath subtracted(const QPainterPath &r) const; void addRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize); void addRoundedRect(qreal x, qreal y, qreal w, qreal h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize); void addEllipse(const QPointF ¢er, qreal rx, qreal ry); QPainterPath simplified() const; QPainterPath operator&(const QPainterPath &other) const; QPainterPath operator|(const QPainterPath &other) const; QPainterPath operator+(const QPainterPath &other) const; QPainterPath operator-(const QPainterPath &other) const; QPainterPath &operator&=(const QPainterPath &other); QPainterPath &operator|=(const QPainterPath &other); QPainterPath &operator+=(const QPainterPath &other); QPainterPath &operator-=(const QPainterPath &other); void translate(qreal dx, qreal dy); QPainterPath translated(qreal dx, qreal dy) const; void translate(const QPointF &offset); QPainterPath translated(const QPointF &offset) const; void swap(QPainterPath &other /Constrained/); }; QDataStream &operator<<(QDataStream &, const QPainterPath & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPainterPath & /Constrained/) /ReleaseGIL/; class QPainterPathStroker { %TypeHeaderCode #include %End public: QPainterPathStroker(); %If (Qt_5_3_0 -) explicit QPainterPathStroker(const QPen &pen); %End ~QPainterPathStroker(); void setWidth(qreal width); qreal width() const; void setCapStyle(Qt::PenCapStyle style); Qt::PenCapStyle capStyle() const; void setJoinStyle(Qt::PenJoinStyle style); Qt::PenJoinStyle joinStyle() const; void setMiterLimit(qreal length); qreal miterLimit() const; void setCurveThreshold(qreal threshold); qreal curveThreshold() const; void setDashPattern(Qt::PenStyle); void setDashPattern(const QVector &dashPattern); QVector dashPattern() const; QPainterPath createStroke(const QPainterPath &path) const; void setDashOffset(qreal offset); qreal dashOffset() const; private: QPainterPathStroker(const QPainterPathStroker &); }; PyQt5_gpl-5.10.1/sip/QtGui/qpalette.sip0000644000076500000240000001071013245233150017656 0ustar philstaff00000000000000// qpalette.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPalette { %TypeHeaderCode #include %End public: QPalette(); QPalette(const QColor &button); QPalette(Qt::GlobalColor button); QPalette(const QColor &button, const QColor &background); QPalette(const QBrush &foreground, const QBrush &button, const QBrush &light, const QBrush &dark, const QBrush &mid, const QBrush &text, const QBrush &bright_text, const QBrush &base, const QBrush &background); QPalette(const QPalette &palette); QPalette(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QPalette(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QPalette(); enum ColorGroup { Active, Disabled, Inactive, NColorGroups, Current, All, Normal, }; enum ColorRole { WindowText, Foreground, Button, Light, Midlight, Dark, Mid, Text, BrightText, ButtonText, Base, Window, Background, Shadow, Highlight, HighlightedText, Link, LinkVisited, AlternateBase, ToolTipBase, ToolTipText, NColorRoles, NoRole, }; QPalette::ColorGroup currentColorGroup() const; void setCurrentColorGroup(QPalette::ColorGroup cg); const QColor &color(QPalette::ColorGroup cg, QPalette::ColorRole cr) const; const QBrush &brush(QPalette::ColorGroup cg, QPalette::ColorRole cr) const; void setBrush(QPalette::ColorGroup cg, QPalette::ColorRole cr, const QBrush &brush); void setColorGroup(QPalette::ColorGroup cr, const QBrush &foreground, const QBrush &button, const QBrush &light, const QBrush &dark, const QBrush &mid, const QBrush &text, const QBrush &bright_text, const QBrush &base, const QBrush &background); bool isEqual(QPalette::ColorGroup cr1, QPalette::ColorGroup cr2) const; const QColor &color(QPalette::ColorRole cr) const; const QBrush &brush(QPalette::ColorRole cr) const; const QBrush &windowText() const; const QBrush &button() const; const QBrush &light() const; const QBrush &dark() const; const QBrush &mid() const; const QBrush &text() const; const QBrush &base() const; const QBrush &alternateBase() const; const QBrush &window() const; const QBrush &midlight() const; const QBrush &brightText() const; const QBrush &buttonText() const; const QBrush &shadow() const; const QBrush &highlight() const; const QBrush &highlightedText() const; const QBrush &link() const; const QBrush &linkVisited() const; const QBrush &toolTipBase() const; const QBrush &toolTipText() const; bool operator==(const QPalette &p) const; bool operator!=(const QPalette &p) const; bool isCopyOf(const QPalette &p) const; QPalette resolve(const QPalette &) const; uint resolve() const; void resolve(uint mask); void setColor(QPalette::ColorGroup acg, QPalette::ColorRole acr, const QColor &acolor); void setColor(QPalette::ColorRole acr, const QColor &acolor); void setBrush(QPalette::ColorRole acr, const QBrush &abrush); bool isBrushSet(QPalette::ColorGroup cg, QPalette::ColorRole cr) const; qint64 cacheKey() const; void swap(QPalette &other /Constrained/); }; QDataStream &operator<<(QDataStream &s, const QPalette &p /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &ds, QPalette &p /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtGui/qpdfwriter.sip0000644000076500000240000000367513245233150020242 0ustar philstaff00000000000000// qpdfwriter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPdfWriter : QObject, QPagedPaintDevice { %TypeHeaderCode #include %End public: explicit QPdfWriter(const QString &filename); explicit QPdfWriter(QIODevice *device); virtual ~QPdfWriter(); QString title() const; void setTitle(const QString &title); QString creator() const; void setCreator(const QString &creator); virtual bool newPage(); virtual void setPageSize(QPagedPaintDevice::PageSize size); virtual void setPageSizeMM(const QSizeF &size); virtual void setMargins(const QPagedPaintDevice::Margins &m); protected: virtual QPaintEngine *paintEngine() const; virtual int metric(QPaintDevice::PaintDeviceMetric id) const; public: %If (Qt_5_3_0 -) void setResolution(int resolution); %End %If (Qt_5_3_0 -) int resolution() const; %End %If (Qt_5_10_0 -) void setPdfVersion(QPagedPaintDevice::PdfVersion version); %End %If (Qt_5_10_0 -) QPagedPaintDevice::PdfVersion pdfVersion() const; %End private: QPdfWriter(const QPdfWriter &); }; PyQt5_gpl-5.10.1/sip/QtGui/qpen.sip0000644000076500000240000000652713245233150017015 0ustar philstaff00000000000000// qpen.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPen /TypeHintIn="Union[QPen, QColor]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode // SIP doesn't support automatic type convertors so we explicitly allow a // QColor to be used whenever a QPen is expected. if (sipIsErr == NULL) return (sipCanConvertToType(sipPy, sipType_QPen, SIP_NO_CONVERTORS) || sipCanConvertToType(sipPy, sipType_QColor, 0)); if (sipCanConvertToType(sipPy, sipType_QPen, SIP_NO_CONVERTORS)) { *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QPen, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } int state; QColor *c = reinterpret_cast(sipConvertToType(sipPy, sipType_QColor, 0, 0, &state, sipIsErr)); if (*sipIsErr) { sipReleaseType(c, sipType_QColor, state); return 0; } *sipCppPtr = new QPen(*c); sipReleaseType(c, sipType_QColor, state); return sipGetState(sipTransferObj); %End public: QPen(); QPen(Qt::PenStyle); QPen(const QBrush &brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin); QPen(const QPen &pen); QPen(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QPen(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QPen(); Qt::PenStyle style() const; void setStyle(Qt::PenStyle); qreal widthF() const; void setWidthF(qreal width); int width() const; void setWidth(int width); QColor color() const; void setColor(const QColor &color); QBrush brush() const; void setBrush(const QBrush &brush); bool isSolid() const; Qt::PenCapStyle capStyle() const; void setCapStyle(Qt::PenCapStyle pcs); Qt::PenJoinStyle joinStyle() const; void setJoinStyle(Qt::PenJoinStyle pcs); QVector dashPattern() const; void setDashPattern(const QVector &pattern); qreal miterLimit() const; void setMiterLimit(qreal limit); bool operator==(const QPen &p) const; bool operator!=(const QPen &p) const; qreal dashOffset() const; void setDashOffset(qreal doffset); bool isCosmetic() const; void setCosmetic(bool cosmetic); void swap(QPen &other /Constrained/); }; QDataStream &operator<<(QDataStream &, const QPen & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPen & /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtGui/qpicture.sip0000644000076500000240000001307613245233150017703 0ustar philstaff00000000000000// qpicture.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPicture : QPaintDevice { %TypeHeaderCode #include %End public: explicit QPicture(int formatVersion = -1); QPicture(const QPicture &); virtual ~QPicture(); bool isNull() const; virtual int devType() const; uint size() const; const char *data() const /Encoding="None"/; virtual void setData(const char *data /Array/, uint size /ArraySize/); bool play(QPainter *p); bool load(QIODevice *dev, const char *format = 0) /ReleaseGIL/; bool load(const QString &fileName, const char *format = 0) /ReleaseGIL/; bool save(QIODevice *dev, const char *format = 0) /ReleaseGIL/; bool save(const QString &fileName, const char *format = 0) /ReleaseGIL/; QRect boundingRect() const; void setBoundingRect(const QRect &r); void detach(); bool isDetached() const; virtual QPaintEngine *paintEngine() const; protected: virtual int metric(QPaintDevice::PaintDeviceMetric m) const; public: void swap(QPicture &other /Constrained/); }; class QPictureIO { %TypeHeaderCode #include %End %TypeCode // This defines the mapping between picture formats and the corresponding // Python i/o handler callables. struct qtgui_pio { const char *format; // The format. PyObject *read; // The read handler. PyObject *write; // The write handler. qtgui_pio *next; // The next in the list. }; // The head of the list. static qtgui_pio *qtgui_pio_head = 0; // Find the entry for the given picture. static const qtgui_pio *qtgui_pio_find(QPictureIO *pio) { for (const qtgui_pio *p = qtgui_pio_head; p; p = p->next) if (qstrcmp(pio->format(), p->format) == 0) return p; return 0; } // This is the C++ read handler. static void qtgui_pio_read(QPictureIO *pio) { const qtgui_pio *p = qtgui_pio_find(pio); if (p && p->read) { Py_XDECREF(sipCallMethod(0, p->read, "D", pio, sipType_QPictureIO, NULL)); } } // This is the C++ write handler. static void qtgui_pio_write(QPictureIO *pio) { const qtgui_pio *p = qtgui_pio_find(pio); if (p && p->write) { Py_XDECREF(sipCallMethod(0, p->write, "D", pio, sipType_QPictureIO, NULL)); } } %End public: QPictureIO(); QPictureIO(QIODevice *ioDevice, const char *format); QPictureIO(const QString &fileName, const char *format); ~QPictureIO(); const QPicture &picture() const; int status() const; const char *format() const; QIODevice *ioDevice() const; QString fileName() const; int quality() const; QString description() const; const char *parameters() const; float gamma() const; void setPicture(const QPicture &); void setStatus(int); void setFormat(const char *); void setIODevice(QIODevice *); void setFileName(const QString &); void setQuality(int); void setDescription(const QString &); void setParameters(const char *); void setGamma(float); bool read() /ReleaseGIL/; bool write() /ReleaseGIL/; static QByteArray pictureFormat(const QString &fileName); static QByteArray pictureFormat(QIODevice *); static QList inputFormats(); static QList outputFormats(); static void defineIOHandler(const char *format, const char *header, const char *flags, SIP_PYCALLABLE read_picture /AllowNone,TypeHint="Optional[Callable[[QPictureIO], None]]"/, SIP_PYCALLABLE write_picture /AllowNone,TypeHint="Optional[Callable[[QPictureIO], None]]"/); %MethodCode // Convert None to NULL. if (a3 == Py_None) a3 = 0; if (a4 == Py_None) a4 = 0; // See if we already know about the format. qtgui_pio *p; for (p = qtgui_pio_head; p; p = p->next) if (qstrcmp(a0, p->format) == 0) break; if (!p) { // Handle the new format. p = new qtgui_pio; p->format = qstrdup(a0); p->read = 0; p->write = 0; p->next = qtgui_pio_head; qtgui_pio_head = p; } // Replace the old callables with the new ones. Py_XDECREF(p->read); p->read = a3; Py_XINCREF(p->read); Py_XDECREF(p->write); p->write = a4; Py_XINCREF(p->write); // Install the generic handlers. QPictureIO::defineIOHandler(a0, a1, a2, qtgui_pio_read, qtgui_pio_write); %End private: QPictureIO(const QPictureIO &); }; QDataStream &operator<<(QDataStream &in, const QPicture &p /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QPicture &p /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtGui/qpixelformat.sip0000644000076500000240000001323113245233150020553 0ustar philstaff00000000000000// qpixelformat.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) %ModuleCode #include %End %End %If (Qt_5_4_0 -) class QPixelFormat { %TypeHeaderCode #include %End public: enum ColorModel { RGB, BGR, Indexed, Grayscale, CMYK, HSL, HSV, YUV, %If (Qt_5_5_0 -) Alpha, %End }; enum AlphaUsage { UsesAlpha, IgnoresAlpha, }; enum AlphaPosition { AtBeginning, AtEnd, }; enum AlphaPremultiplied { NotPremultiplied, Premultiplied, }; enum TypeInterpretation { UnsignedInteger, UnsignedShort, UnsignedByte, FloatingPoint, }; enum YUVLayout { YUV444, YUV422, YUV411, YUV420P, YUV420SP, YV12, UYVY, YUYV, NV12, NV21, IMC1, IMC2, IMC3, IMC4, Y8, Y16, }; enum ByteOrder { LittleEndian, BigEndian, CurrentSystemEndian, }; QPixelFormat(); QPixelFormat(QPixelFormat::ColorModel mdl, uchar firstSize /PyInt/, uchar secondSize /PyInt/, uchar thirdSize /PyInt/, uchar fourthSize /PyInt/, uchar fifthSize /PyInt/, uchar alfa /PyInt/, QPixelFormat::AlphaUsage usage, QPixelFormat::AlphaPosition position, QPixelFormat::AlphaPremultiplied premult, QPixelFormat::TypeInterpretation typeInterp, QPixelFormat::ByteOrder byteOrder = QPixelFormat::CurrentSystemEndian, uchar subEnum /PyInt/ = 0); QPixelFormat::ColorModel colorModel() const; uchar channelCount() const /PyInt/; uchar redSize() const /PyInt/; uchar greenSize() const /PyInt/; uchar blueSize() const /PyInt/; uchar cyanSize() const /PyInt/; uchar magentaSize() const /PyInt/; uchar yellowSize() const /PyInt/; uchar blackSize() const /PyInt/; uchar hueSize() const /PyInt/; uchar saturationSize() const /PyInt/; uchar lightnessSize() const /PyInt/; uchar brightnessSize() const /PyInt/; uchar alphaSize() const /PyInt/; uchar bitsPerPixel() const /PyInt/; QPixelFormat::AlphaUsage alphaUsage() const; QPixelFormat::AlphaPosition alphaPosition() const; QPixelFormat::AlphaPremultiplied premultiplied() const; QPixelFormat::TypeInterpretation typeInterpretation() const; QPixelFormat::ByteOrder byteOrder() const; QPixelFormat::YUVLayout yuvLayout() const; uchar subEnum() const /PyInt/; }; %End %If (Qt_5_4_0 -) bool operator==(QPixelFormat fmt1, QPixelFormat fmt2); %End %If (Qt_5_4_0 -) bool operator!=(QPixelFormat fmt1, QPixelFormat fmt2); %End %If (Qt_5_4_0 -) QPixelFormat qPixelFormatRgba(uchar red /PyInt/, uchar green /PyInt/, uchar blue /PyInt/, uchar alfa /PyInt/, QPixelFormat::AlphaUsage usage, QPixelFormat::AlphaPosition position, QPixelFormat::AlphaPremultiplied premultiplied = QPixelFormat::NotPremultiplied, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger); %End %If (Qt_5_4_0 -) QPixelFormat qPixelFormatGrayscale(uchar channelSize /PyInt/, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger); %End %If (Qt_5_4_0 -) QPixelFormat qPixelFormatCmyk(uchar channelSize /PyInt/, uchar alphaSize /PyInt/ = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger); %End %If (Qt_5_4_0 -) QPixelFormat qPixelFormatHsl(uchar channelSize /PyInt/, uchar alphaSize /PyInt/ = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::FloatingPoint); %End %If (Qt_5_4_0 -) QPixelFormat qPixelFormatHsv(uchar channelSize /PyInt/, uchar alphaSize /PyInt/ = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::FloatingPoint); %End %If (Qt_5_4_0 -) QPixelFormat qPixelFormatYuv(QPixelFormat::YUVLayout layout, uchar alphaSize /PyInt/ = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::AlphaPremultiplied premultiplied = QPixelFormat::NotPremultiplied, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedByte, QPixelFormat::ByteOrder byteOrder = QPixelFormat::LittleEndian); %End %If (Qt_5_5_0 -) QPixelFormat qPixelFormatAlpha(uchar channelSize /PyInt/, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger); %End PyQt5_gpl-5.10.1/sip/QtGui/qpixmap.sip0000644000076500000240000001135513245233150017524 0ustar philstaff00000000000000// qpixmap.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPixmap : QPaintDevice { %TypeHeaderCode #include %End public: QPixmap(); QPixmap(int w, int h); explicit QPixmap(const QSize &); QPixmap(const QString &fileName, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor); QPixmap(SIP_PYLIST xpm /TypeHint="List[str]"/) [(const char **xpm)]; %MethodCode // The Python interface is a list of strings that make up the image. const char **str = QtGui_ListToArray(a0); if (str) { sipCpp = new sipQPixmap(str); QtGui_DeleteArray(str); } else sipIsErr = 1; %End QPixmap(const QPixmap &); QPixmap(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new sipQPixmap(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End virtual ~QPixmap(); bool isNull() const; virtual int devType() const; int width() const; int height() const; QSize size() const; QRect rect() const; int depth() const; static int defaultDepth(); void fill(const QColor &color = Qt::white); QBitmap mask() const; void setMask(const QBitmap &); bool hasAlpha() const; bool hasAlphaChannel() const; QBitmap createHeuristicMask(bool clipTight = true) const; QBitmap createMaskFromColor(const QColor &maskColor, Qt::MaskMode mode = Qt::MaskInColor) const; QPixmap scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const; QPixmap scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const; QPixmap scaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const; QPixmap scaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const; QImage toImage() const; static QPixmap fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor); static QPixmap fromImageReader(QImageReader *imageReader, Qt::ImageConversionFlags flags = Qt::AutoColor); bool convertFromImage(const QImage &img, Qt::ImageConversionFlags flags = Qt::AutoColor); bool load(const QString &fileName, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor); bool loadFromData(const uchar *buf /Array/, uint len /ArraySize/, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor); bool loadFromData(const QByteArray &buf, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor); bool save(const QString &fileName, const char *format = 0, int quality = -1) const; bool save(QIODevice *device, const char *format = 0, int quality = -1) const; QPixmap copy(const QRect &rect = QRect()) const; void detach(); bool isQBitmap() const; virtual QPaintEngine *paintEngine() const; protected: virtual int metric(QPaintDevice::PaintDeviceMetric) const; public: QPixmap copy(int ax, int ay, int awidth, int aheight) const; QPixmap transformed(const QTransform &transform, Qt::TransformationMode mode = Qt::FastTransformation) const; static QTransform trueMatrix(const QTransform &m, int w, int h); qint64 cacheKey() const; void scroll(int dx, int dy, const QRect &rect, QRegion *exposed /Out/ = 0); void scroll(int dx, int dy, int x, int y, int width, int height, QRegion *exposed /Out/ = 0); void swap(QPixmap &other /Constrained/); qreal devicePixelRatio() const; void setDevicePixelRatio(qreal scaleFactor); }; QDataStream &operator<<(QDataStream &, const QPixmap & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPixmap & /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtGui/qpixmapcache.sip0000644000076500000240000000435413245233150020511 0ustar philstaff00000000000000// qpixmapcache.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPixmapCache { %TypeHeaderCode #include %End public: class Key { %TypeHeaderCode #include %End public: Key(); Key(const QPixmapCache::Key &other); ~Key(); bool operator==(const QPixmapCache::Key &key) const; bool operator!=(const QPixmapCache::Key &key) const; %If (Qt_5_6_0 -) void swap(QPixmapCache::Key &other /Constrained/); %End %If (Qt_5_7_0 -) bool isValid() const; %End }; static int cacheLimit(); static void clear(); static QPixmap find(const QString &key); %MethodCode sipRes = new QPixmap; if (!QPixmapCache::find(*a0, sipRes)) { delete sipRes; sipRes = 0; } %End static QPixmap find(const QPixmapCache::Key &key); %MethodCode sipRes = new QPixmap; if (!QPixmapCache::find(*a0, sipRes)) { delete sipRes; sipRes = 0; } %End static bool insert(const QString &key, const QPixmap &); static QPixmapCache::Key insert(const QPixmap &pixmap); static void remove(const QString &key); static void remove(const QPixmapCache::Key &key); static bool replace(const QPixmapCache::Key &key, const QPixmap &pixmap); static void setCacheLimit(int); }; PyQt5_gpl-5.10.1/sip/QtGui/qpolygon.sip0000644000076500000240000003272413245233150017720 0ustar philstaff00000000000000// qpolygon.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPolygon { %TypeHeaderCode #include %End %TypeCode // Set the points of a polygon from a Python list. static bool setPointsFromList(QPolygon *poly, PyObject *l) { int *coords = new int[PyList_Size(l)]; for (Py_ssize_t i = 0; i < PyList_Size(l); ++i) { coords[i] = SIPLong_AsLong(PyList_GetItem(l, i)); if (PyErr_Occurred() != NULL) { delete[] coords; return false; } } poly->setPoints(PyList_Size(l) >> 1, coords); delete[] coords; return true; } %End %PickleCode PyObject *pl = PyList_New(sipCpp->count() * 2); for (int p = 0, i = 0; i < sipCpp->count(); ++i, p += 2) { int x, y; sipCpp->point(i, &x, &y); PyList_SetItem(pl, p, SIPLong_FromLong(x)); PyList_SetItem(pl, p + 1, SIPLong_FromLong(y)); } sipRes = Py_BuildValue((char *)"(N)", pl); %End public: QPolygon(); ~QPolygon(); QPolygon(const QPolygon &a); QPolygon(const QVector &v); QPolygon(const QRect &rectangle, bool closed = false); explicit QPolygon(int asize); QPolygon(SIP_PYLIST points /TypeHint="List[int]"/) /NoDerived/; %MethodCode sipCpp = new QPolygon(); if (!setPointsFromList(sipCpp, a0)) { delete sipCpp; sipCpp = 0; sipIsErr = 1; } %End QPolygon(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QPolygon(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End void translate(int dx, int dy); QRect boundingRect() const; QPoint point(int index) const; void setPoints(SIP_PYLIST points /TypeHint="List[int]"/); %MethodCode if (!setPointsFromList(sipCpp, a0)) sipIsErr = 1; %End void setPoints(int firstx, int firsty, ...); %MethodCode // Accept at least one pair of integer coordinates. int nPoints = 1 + ((PyTuple_Size(a2) + 1) >> 1); int *points = new int[nPoints * 2]; points[0] = a0; points[1] = a1; for (Py_ssize_t i = 0; i < PyTuple_Size(a2); ++i) points[2 + i] = SIPLong_AsLong(PyTuple_GetItem(a2, i)); sipCpp->setPoints(nPoints, points); delete[] points; %End void putPoints(int index, int firstx, int firsty, ...); %MethodCode // Accept at least one pair of integer coordinates. int nPoints = 1 + ((PyTuple_Size(a3) + 1) >> 1); int *points = new int[nPoints * 2]; points[0] = a1; points[1] = a2; for (Py_ssize_t i = 0; i < PyTuple_Size(a3); ++i) points[2 + i] = SIPLong_AsLong(PyTuple_GetItem(a3, i)); sipCpp->putPoints(a0, nPoints, points); delete[] points; %End void putPoints(int index, int nPoints, const QPolygon &fromPolygon, int from = 0); void setPoint(int index, const QPoint &pt); void setPoint(int index, int x, int y); void translate(const QPoint &offset); bool containsPoint(const QPoint &pt, Qt::FillRule fillRule) const; QPolygon united(const QPolygon &r) const; QPolygon intersected(const QPolygon &r) const; QPolygon subtracted(const QPolygon &r) const; QPolygon translated(int dx, int dy) const; QPolygon translated(const QPoint &offset) const; // Methods inherited from QVector and Python special methods. // Keep in sync with QPolygonF and QXmlStreamAttributes. void append(const QPoint &value); const QPoint &at(int i) const; void clear(); bool contains(const QPoint &value) const; int count(const QPoint &value) const; int count() const /__len__/; void *data(); // Note the Qt return value is discarded as it would require handwritten code // and seems pretty useless. void fill(const QPoint &value, int size = -1); QPoint &first(); int indexOf(const QPoint &value, int from = 0) const; void insert(int i, const QPoint &value); bool isEmpty() const; QPoint &last(); int lastIndexOf(const QPoint &value, int from = -1) const; // Note the Qt return type is QVector. QPolygon mid(int pos, int length = -1) const; void prepend(const QPoint &value); void remove(int i); void remove(int i, int count); void replace(int i, const QPoint &value); int size() const; QPoint value(int i) const; QPoint value(int i, const QPoint &defaultValue) const; bool operator!=(const QPolygon &other) const; // Note the Qt return type is QVector. QPolygon operator+(const QPolygon &other) const; QPolygon &operator+=(const QPolygon &other); QPolygon &operator+=(const QPoint &value); bool operator==(const QPolygon &other) const; SIP_PYOBJECT operator<<(const QPoint &value); %MethodCode *a0 << *a1; sipRes = sipArg0; Py_INCREF(sipRes); %End QPoint &operator[](int i); %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QPoint(sipCpp->operator[]((int)idx)); %End // Some additional Python special methods. void __setitem__(int i, const QPoint &value); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __setitem__(SIP_PYSLICE slice, const QPolygon &list); %MethodCode Py_ssize_t len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { int vlen = a1->count(); if (vlen != slicelength) { sipBadLengthForSlice(vlen, slicelength); sipIsErr = 1; } else { QVector::const_iterator it = a1->begin(); for (i = 0; i < slicelength; ++i) { (*sipCpp)[start] = *it; start += step; ++it; } } } %End void __delitem__(int i); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else sipCpp->remove(a0); %End void __delitem__(SIP_PYSLICE slice); %MethodCode Py_ssize_t len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else for (i = 0; i < slicelength; ++i) { sipCpp->remove(start); start += step - 1; } %End QPolygon &operator[](SIP_PYSLICE slice); %MethodCode Py_ssize_t len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { sipRes = new QPolygon(); for (i = 0; i < slicelength; ++i) { (*sipRes) += (*sipCpp)[start]; start += step; } } %End int __contains__(const QPoint &value); %MethodCode // It looks like you can't assign QBool to int. sipRes = bool(sipCpp->contains(*a0)); %End void swap(QPolygon &other /Constrained/); %If (Qt_5_10_0 -) bool intersects(const QPolygon &r) const; %End }; class QPolygonF { %TypeHeaderCode #include %End public: QPolygonF(); ~QPolygonF(); QPolygonF(const QPolygonF &a); QPolygonF(const QVector &v); QPolygonF(const QRectF &r); QPolygonF(const QPolygon &a); explicit QPolygonF(int asize); void translate(const QPointF &offset); QPolygon toPolygon() const; bool isClosed() const; QRectF boundingRect() const; void translate(qreal dx, qreal dy); bool containsPoint(const QPointF &pt, Qt::FillRule fillRule) const; QPolygonF united(const QPolygonF &r) const; QPolygonF intersected(const QPolygonF &r) const; QPolygonF subtracted(const QPolygonF &r) const; QPolygonF translated(const QPointF &offset) const; QPolygonF translated(qreal dx, qreal dy) const; // Methods inherited from QVector and Python special methods. // Keep in sync with QPolygon and QXmlStreamAttributes. void append(const QPointF &value); const QPointF &at(int i) const; void clear(); bool contains(const QPointF &value) const; int count(const QPointF &value) const; int count() const /__len__/; void *data(); // Note the Qt return value is discarded as it would require handwritten code // and seems pretty useless. void fill(const QPointF &value, int size = -1); QPointF &first(); int indexOf(const QPointF &value, int from = 0) const; void insert(int i, const QPointF &value); bool isEmpty() const; QPointF &last(); int lastIndexOf(const QPointF &value, int from = -1) const; // Note the Qt return type is QVector. QPolygonF mid(int pos, int length = -1) const; void prepend(const QPointF &value); void remove(int i); void remove(int i, int count); void replace(int i, const QPointF &value); int size() const; QPointF value(int i) const; QPointF value(int i, const QPointF &defaultValue) const; bool operator!=(const QPolygonF &other) const; // Note the Qt return type is QVector. QPolygonF operator+(const QPolygonF &other) const; QPolygonF &operator+=(const QPolygonF &other); QPolygonF &operator+=(const QPointF &value); bool operator==(const QPolygonF &other) const; SIP_PYOBJECT operator<<(const QPointF &value); %MethodCode *a0 << *a1; sipRes = sipArg0; Py_INCREF(sipRes); %End QPointF &operator[](int i); %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QPointF(sipCpp->operator[]((int)idx)); %End // Some additional Python special methods. void __setitem__(int i, const QPointF &value); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __setitem__(SIP_PYSLICE slice, const QPolygonF &list); %MethodCode Py_ssize_t len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { int vlen = a1->count(); if (vlen != slicelength) { sipBadLengthForSlice(vlen, slicelength); sipIsErr = 1; } else { QVector::const_iterator it = a1->begin(); for (i = 0; i < slicelength; ++i) { (*sipCpp)[start] = *it; start += step; ++it; } } } %End void __delitem__(int i); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else sipCpp->remove(a0); %End void __delitem__(SIP_PYSLICE slice); %MethodCode Py_ssize_t len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else for (i = 0; i < slicelength; ++i) { sipCpp->remove(start); start += step - 1; } %End QPolygonF &operator[](SIP_PYSLICE slice); %MethodCode Py_ssize_t len, start, stop, step, slicelength, i; len = sipCpp->count(); #if PY_VERSION_HEX >= 0x03020000 if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) #else if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) #endif sipIsErr = 1; else { sipRes = new QPolygonF(); for (i = 0; i < slicelength; ++i) { (*sipRes) += (*sipCpp)[start]; start += step; } } %End int __contains__(const QPointF &value); %MethodCode // It looks like you can't assign QBool to int. sipRes = bool(sipCpp->contains(*a0)); %End void swap(QPolygonF &other /Constrained/); %If (Qt_5_10_0 -) bool intersects(const QPolygonF &r) const; %End }; QDataStream &operator<<(QDataStream &stream, const QPolygonF &array /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &stream, QPolygonF &array /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &stream, const QPolygon &polygon /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &stream, QPolygon &polygon /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtGui/qpygui_qlist.sip0000644000076500000240000000534013245233150020574 0ustar philstaff00000000000000// This is the SIP interface definition for the QList based mapped types // specific to the QtGui module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QList /TypeHintIn="Sequence[QFontDatabase.WritingSystem]", TypeHintOut="List[QFontDatabase.WritingSystem]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QFontDatabase_WritingSystem); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); Py_ssize_t len = PySequence_Size(sipPy); if (len < 0) return 0; QList *ql = new QList; for (Py_ssize_t i = 0; i < len; ++i) { PyObject *itm = PySequence_GetItem(sipPy, i); if (!itm) { delete ql; *sipIsErr = 1; return 0; } int v = sipConvertToEnum(itm, sipType_QFontDatabase_WritingSystem); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "element %zd has type '%s' but 'QFontDatabase.WritingSystem' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; PyQt5_gpl-5.10.1/sip/QtGui/qpygui_qpair.sip0000644000076500000240000001221213245233150020550 0ustar philstaff00000000000000// This is the SIP interface definition for the QPair based mapped types // specific to the QtGui module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) %If (PyQt_OpenGL) %MappedType QPair /TypeHint="Tuple[QOpenGLTexture.Filter, QOpenGLTexture.Filter]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode return sipBuildResult(NULL, "(FF)", sipCpp->first, sipType_QOpenGLTexture_Filter, sipCpp->second, sipType_QOpenGLTexture_Filter); %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); Py_ssize_t len = PySequence_Size(sipPy); if (len != 2) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has %zd elements but 2 elements are expected", len); *sipIsErr = 1; return 0; } PyObject *firstobj = PySequence_GetItem(sipPy, 0); if (!firstobj) { *sipIsErr = 1; return 0; } int firstv = sipConvertToEnum(firstobj, sipType_QOpenGLTexture_Filter); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the first element has type '%s' but 'QOpenGLTexture.Filter' is expected", sipPyTypeName(Py_TYPE(firstobj))); *sipIsErr = 1; return 0; } PyObject *secondobj = PySequence_GetItem(sipPy, 1); if (!secondobj) { Py_DECREF(firstobj); *sipIsErr = 1; return 0; } int secondv = sipConvertToEnum(secondobj, sipType_QOpenGLTexture_Filter); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the second element has type '%s' but 'QOpenGLTexture.Filter' is expected", sipPyTypeName(Py_TYPE(secondobj))); Py_DECREF(secondobj); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } *sipCppPtr = new QPair( static_cast(firstv), static_cast(secondv)); Py_DECREF(secondobj); Py_DECREF(firstobj); return sipGetState(sipTransferObj); %End }; %End %End %If (Qt_5_2_0 -) %MappedType QPair /TypeHint="Tuple[float, float]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode return Py_BuildValue("(ff)", sipCpp->first, sipCpp->second); %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); Py_ssize_t len = PySequence_Size(sipPy); if (len != 2) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has %zd elements but 2 elements are expected", len); *sipIsErr = 1; return 0; } PyObject *firstobj = PySequence_GetItem(sipPy, 0); if (!firstobj) { *sipIsErr = 1; return 0; } PyErr_Clear(); double first = PyFloat_AsDouble(firstobj); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the first element has type '%s' but 'float' is expected", sipPyTypeName(Py_TYPE(firstobj))); *sipIsErr = 1; return 0; } PyObject *secondobj = PySequence_GetItem(sipPy, 1); if (!secondobj) { Py_DECREF(firstobj); *sipIsErr = 1; return 0; } PyErr_Clear(); double second = PyFloat_AsDouble(secondobj); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the second element has type '%s' but 'float' is expected", sipPyTypeName(Py_TYPE(secondobj))); Py_DECREF(secondobj); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } *sipCppPtr = new QPair(first, second);; Py_DECREF(secondobj); Py_DECREF(firstobj); return sipGetState(sipTransferObj); %End }; %End PyQt5_gpl-5.10.1/sip/QtGui/qpygui_qvector.sip0000644000076500000240000002100213245233150021114 0ustar philstaff00000000000000// This is the SIP interface definition for the QVector based mapped types // specific to the QtGui module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QVector /TypeHintIn="Iterable[int]", TypeHintOut="List[int]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { // Convert to a Python long to make sure it doesn't get interpreted as // a signed value. PyObject *pobj = PyLong_FromUnsignedLong(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QVector *qv = new QVector; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); unsigned long val = PyLong_AsUnsignedLongMask(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'int' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } qv->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; %MappedType QVector /TypeHintIn="Iterable[float]", TypeHintOut="List[float]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj = PyFloat_FromDouble(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QVector *qv = new QVector; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); double val = PyFloat_AsDouble(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'int' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } qv->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; %If (PyQt_qreal_double) %MappedType QVector /TypeHintIn="Iterable[float]", TypeHintOut="List[float]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj = PyFloat_FromDouble(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QVector *qv = new QVector; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); double val = PyFloat_AsDouble(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'int' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } qv->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; %End %If (PyQt_Desktop_OpenGL) %MappedType QVector /TypeHintIn="Iterable[int]", TypeHintOut="List[int]", TypeHintValue="[]"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { // Convert to a Python long to make sure it doesn't get interpreted as // a signed value. PyObject *pobj = PyLong_FromUnsignedLongLong(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QVector *qv = new QVector; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); unsigned PY_LONG_LONG val = PyLong_AsUnsignedLongLongMask(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'int' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } qv->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; %End PyQt5_gpl-5.10.1/sip/QtGui/qquaternion.sip0000644000076500000240000001376313245233150020420 0ustar philstaff00000000000000// qquaternion.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QQuaternion { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"dddd", (double)sipCpp->scalar(), (double)sipCpp->x(), (double)sipCpp->y(), (double)sipCpp->z()); %End public: QQuaternion(); QQuaternion(float aScalar, float xpos, float ypos, float zpos); QQuaternion(float aScalar, const QVector3D &aVector); explicit QQuaternion(const QVector4D &aVector); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode PyObject *scalar = PyFloat_FromDouble(sipCpp->scalar()); PyObject *x = PyFloat_FromDouble(sipCpp->x()); PyObject *y = PyFloat_FromDouble(sipCpp->y()); PyObject *z = PyFloat_FromDouble(sipCpp->z()); if (scalar && x && y && z) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QQuaternion(%R, %R, %R, %R)", scalar, x, y, z); #else sipRes = PyString_FromString("PyQt5.QtGui.QQuaternion("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(scalar)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(x)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(y)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(z)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } Py_XDECREF(scalar); Py_XDECREF(x); Py_XDECREF(y); Py_XDECREF(z); %End float length() const; float lengthSquared() const; QQuaternion normalized() const; void normalize(); QVector3D rotatedVector(const QVector3D &vector) const; static QQuaternion fromAxisAndAngle(const QVector3D &axis, float angle); static QQuaternion fromAxisAndAngle(float x, float y, float z, float angle); static QQuaternion slerp(const QQuaternion &q1, const QQuaternion &q2, float t); static QQuaternion nlerp(const QQuaternion &q1, const QQuaternion &q2, float t); bool isNull() const; bool isIdentity() const; float x() const; float y() const; float z() const; float scalar() const; void setX(float aX); void setY(float aY); void setZ(float aZ); void setScalar(float aScalar); QQuaternion conjugate() const; QQuaternion &operator+=(const QQuaternion &quaternion); QQuaternion &operator-=(const QQuaternion &quaternion); QQuaternion &operator*=(float factor); QQuaternion &operator*=(const QQuaternion &quaternion); QQuaternion &operator/=(float divisor); void setVector(const QVector3D &aVector); QVector3D vector() const; void setVector(float aX, float aY, float aZ); QVector4D toVector4D() const; %If (Qt_5_5_0 -) void getAxisAndAngle(QVector3D *axis /Out/, float *angle) const; %End %If (Qt_5_5_0 -) void getEulerAngles(float *pitch, float *yaw, float *roll) const; %End %If (Qt_5_5_0 -) static QQuaternion fromEulerAngles(float pitch, float yaw, float roll); %End %If (Qt_5_5_0 -) QMatrix3x3 toRotationMatrix() const; %End %If (Qt_5_5_0 -) static QQuaternion fromRotationMatrix(const QMatrix3x3 &rot3x3); %End %If (Qt_5_5_0 -) void getAxes(QVector3D *xAxis /Out/, QVector3D *yAxis /Out/, QVector3D *zAxis /Out/) const; %End %If (Qt_5_5_0 -) static QQuaternion fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis); %End %If (Qt_5_5_0 -) static QQuaternion fromDirection(const QVector3D &direction, const QVector3D &up); %End %If (Qt_5_5_0 -) static QQuaternion rotationTo(const QVector3D &from, const QVector3D &to); %End %If (Qt_5_5_0 -) static float dotProduct(const QQuaternion &q1, const QQuaternion &q2); %End %If (Qt_5_5_0 -) QQuaternion inverted() const; %End %If (Qt_5_5_0 -) QQuaternion conjugated() const; %End %If (Qt_5_5_0 -) QVector3D toEulerAngles() const; %End %If (Qt_5_5_0 -) static QQuaternion fromEulerAngles(const QVector3D &eulerAngles); %End }; const QQuaternion operator*(const QQuaternion &q1, const QQuaternion &q2); bool operator==(const QQuaternion &q1, const QQuaternion &q2); bool operator!=(const QQuaternion &q1, const QQuaternion &q2); const QQuaternion operator+(const QQuaternion &q1, const QQuaternion &q2); const QQuaternion operator-(const QQuaternion &q1, const QQuaternion &q2); const QQuaternion operator*(float factor, const QQuaternion &quaternion); const QQuaternion operator*(const QQuaternion &quaternion, float factor); const QQuaternion operator-(const QQuaternion &quaternion); const QQuaternion operator/(const QQuaternion &quaternion, float divisor); bool qFuzzyCompare(const QQuaternion &q1, const QQuaternion &q2); QDataStream &operator<<(QDataStream &, const QQuaternion & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QQuaternion & /Constrained/) /ReleaseGIL/; %If (Qt_5_5_0 -) QVector3D operator*(const QQuaternion &quaternion, const QVector3D &vec); %End PyQt5_gpl-5.10.1/sip/QtGui/qrasterwindow.sip0000644000076500000240000000246013245233150020753 0ustar philstaff00000000000000// qrasterwindow.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QRasterWindow : QPaintDeviceWindow { %TypeHeaderCode #include %End public: explicit QRasterWindow(QWindow *parent /TransferThis/ = 0); %If (Qt_5_9_0 -) virtual ~QRasterWindow(); %End protected: virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; private: QRasterWindow(const QRasterWindow &); }; %End PyQt5_gpl-5.10.1/sip/QtGui/qrawfont.sip0000644000076500000240000000737413245233150017714 0ustar philstaff00000000000000// qrawfont.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_RawFont) class QRawFont { %TypeHeaderCode #include %End public: enum AntialiasingType { PixelAntialiasing, SubPixelAntialiasing, }; QRawFont(); QRawFont(const QString &fileName, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting); QRawFont(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting); QRawFont(const QRawFont &other); ~QRawFont(); bool isValid() const; bool operator==(const QRawFont &other) const; bool operator!=(const QRawFont &other) const; QString familyName() const; QString styleName() const; QFont::Style style() const; int weight() const; QVector glyphIndexesForString(const QString &text) const; QVector advancesForGlyphIndexes(const QVector &glyphIndexes) const; %If (Qt_5_1_0 -) QVector advancesForGlyphIndexes(const QVector &glyphIndexes, QRawFont::LayoutFlags layoutFlags) const; %End QImage alphaMapForGlyph(quint32 glyphIndex, QRawFont::AntialiasingType antialiasingType = QRawFont::SubPixelAntialiasing, const QTransform &transform = QTransform()) const; QPainterPath pathForGlyph(quint32 glyphIndex) const; void setPixelSize(qreal pixelSize); qreal pixelSize() const; QFont::HintingPreference hintingPreference() const; qreal ascent() const; qreal descent() const; qreal leading() const; qreal xHeight() const; qreal averageCharWidth() const; qreal maxCharWidth() const; qreal unitsPerEm() const; void loadFromFile(const QString &fileName, qreal pixelSize, QFont::HintingPreference hintingPreference) /ReleaseGIL/; void loadFromData(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference) /ReleaseGIL/; bool supportsCharacter(uint ucs4) const; bool supportsCharacter(QChar character) const; QList supportedWritingSystems() const; QByteArray fontTable(const char *tagName) const; static QRawFont fromFont(const QFont &font, QFontDatabase::WritingSystem writingSystem = QFontDatabase::Any); QRectF boundingRect(quint32 glyphIndex) const; qreal lineThickness() const; qreal underlinePosition() const; void swap(QRawFont &other /Constrained/); %If (Qt_5_1_0 -) enum LayoutFlag { SeparateAdvances, KernedAdvances, UseDesignMetrics, }; %End %If (Qt_5_1_0 -) typedef QFlags LayoutFlags; %End %If (Qt_5_8_0 -) qreal capHeight() const; %End %If (Qt_5_8_0 -) long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End }; %End %If (Qt_5_1_0 -) QFlags operator|(QRawFont::LayoutFlag f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtGui/qregion.sip0000644000076500000240000001061513245233150017507 0ustar philstaff00000000000000// qregion.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRegion { %TypeHeaderCode #include %End public: enum RegionType { Rectangle, Ellipse, }; QRegion(); QRegion(int x, int y, int w, int h, QRegion::RegionType type = QRegion::Rectangle); QRegion(const QRect &r, QRegion::RegionType type = QRegion::Rectangle); QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill); QRegion(const QBitmap &bitmap); QRegion(const QRegion ®ion); QRegion(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QRegion(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QRegion(); bool isEmpty() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isEmpty(); %End bool contains(const QPoint &p) const; int __contains__(const QPoint &p) const; %MethodCode sipRes = sipCpp->contains(*a0); %End bool contains(const QRect &r) const; int __contains__(const QRect &r) const; %MethodCode sipRes = sipCpp->contains(*a0); %End void translate(int dx, int dy); void translate(const QPoint &p); QRegion translated(int dx, int dy) const; QRegion translated(const QPoint &p) const; QRegion united(const QRegion &r) const; QRegion united(const QRect &r) const; QRect boundingRect() const; QVector rects() const; %If (Qt_5_4_0 -) QRegion operator|(const QRegion &r) const; %End void setRects(const QVector &); %MethodCode if (a0->size()) sipCpp->setRects(a0->data(), a0->size()); else sipCpp->setRects(0, 0); %End %If (- Qt_5_4_0) const QRegion operator|(const QRegion &r) const; %End %If (Qt_5_4_0 -) QRegion operator+(const QRegion &r) const; %End %If (- Qt_5_4_0) const QRegion operator+(const QRegion &r) const; %End %If (Qt_5_4_0 -) QRegion operator+(const QRect &r) const; %End %If (- Qt_5_4_0) const QRegion operator+(const QRect &r) const; %End %If (Qt_5_4_0 -) QRegion operator&(const QRegion &r) const; %End %If (- Qt_5_4_0) const QRegion operator&(const QRegion &r) const; %End %If (Qt_5_4_0 -) QRegion operator&(const QRect &r) const; %End %If (- Qt_5_4_0) const QRegion operator&(const QRect &r) const; %End %If (Qt_5_4_0 -) QRegion operator-(const QRegion &r) const; %End %If (- Qt_5_4_0) const QRegion operator-(const QRegion &r) const; %End %If (Qt_5_4_0 -) QRegion operator^(const QRegion &r) const; %End %If (- Qt_5_4_0) const QRegion operator^(const QRegion &r) const; %End QRegion &operator|=(const QRegion &r); QRegion &operator+=(const QRegion &r); QRegion &operator+=(const QRect &r); QRegion &operator&=(const QRegion &r); QRegion &operator&=(const QRect &r); QRegion &operator-=(const QRegion &r); QRegion &operator^=(const QRegion &r); bool operator==(const QRegion &r) const; bool operator!=(const QRegion &r) const; QRegion intersected(const QRegion &r) const; QRegion intersected(const QRect &r) const; QRegion subtracted(const QRegion &r) const; QRegion xored(const QRegion &r) const; bool intersects(const QRegion &r) const; bool intersects(const QRect &r) const; int rectCount() const; void swap(QRegion &other /Constrained/); bool isNull() const; }; QDataStream &operator<<(QDataStream &, const QRegion & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QRegion & /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtGui/qrgb.sip0000644000076500000240000000247313245233150017001 0ustar philstaff00000000000000// qrgb.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End typedef unsigned int QRgb; int qRed(QRgb rgb); int qGreen(QRgb rgb); int qBlue(QRgb rgb); int qAlpha(QRgb rgb); QRgb qRgb(int r, int g, int b); QRgb qRgba(int r, int g, int b, int a); int qGray(int r, int g, int b); int qGray(QRgb rgb); bool qIsGray(QRgb rgb); %If (Qt_5_3_0 -) QRgb qPremultiply(QRgb x); %End %If (Qt_5_3_0 -) QRgb qUnpremultiply(QRgb p); %End PyQt5_gpl-5.10.1/sip/QtGui/qrgba64.sip0000644000076500000240000000452013245233150017307 0ustar philstaff00000000000000// qrgba64.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_6_0 -) %ModuleCode #include %End %End %If (Qt_5_6_0 -) class QRgba64 { %TypeHeaderCode #include %End public: %If (Qt_5_7_0 -) QRgba64(); %End static QRgba64 fromRgba64(quint64 c); static QRgba64 fromRgba64(quint16 red, quint16 green, quint16 blue, quint16 alpha); static QRgba64 fromRgba(quint8 red, quint8 green, quint8 blue, quint8 alpha); static QRgba64 fromArgb32(uint rgb); bool isOpaque() const; bool isTransparent() const; quint16 red() const; quint16 green() const; quint16 blue() const; quint16 alpha() const; void setRed(quint16 _red); void setGreen(quint16 _green); void setBlue(quint16 _blue); void setAlpha(quint16 _alpha); quint8 red8() const; quint8 green8() const; quint8 blue8() const; quint8 alpha8() const; uint toArgb32() const; ushort toRgb16() const; QRgba64 premultiplied() const; QRgba64 unpremultiplied() const; operator quint64() const; }; %End %If (Qt_5_6_0 -) QRgba64 qRgba64(quint16 r, quint16 g, quint16 b, quint16 a); %End %If (Qt_5_6_0 -) QRgba64 qRgba64(quint64 c); %End %If (Qt_5_6_0 -) QRgba64 qPremultiply(QRgba64 c); %End %If (Qt_5_6_0 -) QRgba64 qUnpremultiply(QRgba64 c); %End %If (Qt_5_6_0 -) uint qRed(QRgba64 rgb); %End %If (Qt_5_6_0 -) uint qGreen(QRgba64 rgb); %End %If (Qt_5_6_0 -) uint qBlue(QRgba64 rgb); %End %If (Qt_5_6_0 -) uint qAlpha(QRgba64 rgb); %End PyQt5_gpl-5.10.1/sip/QtGui/qscreen.sip0000644000076500000240000000636613245233150017513 0ustar philstaff00000000000000// qscreen.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QScreen : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: %If (Qt_5_4_0 -) virtual ~QScreen(); %End QString name() const; int depth() const; QSize size() const; QRect geometry() const; QSizeF physicalSize() const; qreal physicalDotsPerInchX() const; qreal physicalDotsPerInchY() const; qreal physicalDotsPerInch() const; qreal logicalDotsPerInchX() const; qreal logicalDotsPerInchY() const; qreal logicalDotsPerInch() const; QSize availableSize() const; QRect availableGeometry() const; QList virtualSiblings() const; QSize virtualSize() const; QRect virtualGeometry() const; QSize availableVirtualSize() const; QRect availableVirtualGeometry() const; %If (Qt_5_2_0 -) Qt::ScreenOrientation nativeOrientation() const; %End Qt::ScreenOrientation primaryOrientation() const; Qt::ScreenOrientation orientation() const; Qt::ScreenOrientations orientationUpdateMask() const; void setOrientationUpdateMask(Qt::ScreenOrientations mask); int angleBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b) const; QTransform transformBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &target) const; QRect mapBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &rect) const; bool isPortrait(Qt::ScreenOrientation orientation) const; bool isLandscape(Qt::ScreenOrientation orientation) const; QPixmap grabWindow(WId window, int x = 0, int y = 0, int width = -1, int height = -1); qreal refreshRate() const; qreal devicePixelRatio() const; signals: void geometryChanged(const QRect &geometry); void physicalDotsPerInchChanged(qreal dpi); void logicalDotsPerInchChanged(qreal dpi); void primaryOrientationChanged(Qt::ScreenOrientation orientation); void orientationChanged(Qt::ScreenOrientation orientation); void refreshRateChanged(qreal refreshRate); void physicalSizeChanged(const QSizeF &size); void virtualGeometryChanged(const QRect &rect); %If (Qt_5_4_0 -) void availableGeometryChanged(const QRect &geometry); %End public: %If (Qt_5_9_0 -) QString manufacturer() const; %End %If (Qt_5_9_0 -) QString model() const; %End %If (Qt_5_9_0 -) QString serialNumber() const; %End private: QScreen(const QScreen &); }; PyQt5_gpl-5.10.1/sip/QtGui/qsessionmanager.sip0000644000076500000240000000370613245233150021245 0ustar philstaff00000000000000// qsessionmanager.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SessionManager) class QSessionManager : QObject { %TypeHeaderCode #include %End QSessionManager(QGuiApplication *app /TransferThis/, QString &id, QString &key); virtual ~QSessionManager(); public: QString sessionId() const; QString sessionKey() const; bool allowsInteraction(); bool allowsErrorInteraction(); void release(); void cancel(); enum RestartHint { RestartIfRunning, RestartAnyway, RestartImmediately, RestartNever, }; void setRestartHint(QSessionManager::RestartHint); QSessionManager::RestartHint restartHint() const; void setRestartCommand(const QStringList &); QStringList restartCommand() const; void setDiscardCommand(const QStringList &); QStringList discardCommand() const; void setManagerProperty(const QString &name, const QString &value); void setManagerProperty(const QString &name, const QStringList &value); bool isPhase2() const; void requestPhase2(); }; %End PyQt5_gpl-5.10.1/sip/QtGui/qstandarditemmodel.sip0000644000076500000240000002322613245233150021726 0ustar philstaff00000000000000// qstandarditemmodel.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStandardItemModel : QAbstractItemModel { %TypeHeaderCode #include %End public: explicit QStandardItemModel(QObject *parent /TransferThis/ = 0); QStandardItemModel(int rows, int columns, QObject *parent /TransferThis/ = 0); virtual ~QStandardItemModel(); virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &child) const; QObject *parent() const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual Qt::ItemFlags flags(const QModelIndex &index) const; void clear(); virtual Qt::DropActions supportedDropActions() const; virtual QMap itemData(const QModelIndex &index) const; virtual bool setItemData(const QModelIndex &index, const QMap &roles); virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); QStandardItem *itemFromIndex(const QModelIndex &index) const; QModelIndex indexFromItem(const QStandardItem *item) const; QStandardItem *item(int row, int column = 0) const; void setItem(int row, int column, QStandardItem *item /Transfer/); void setItem(int arow, QStandardItem *aitem /Transfer/); QStandardItem *invisibleRootItem() const /Transfer/; QStandardItem *horizontalHeaderItem(int column) const; void setHorizontalHeaderItem(int column, QStandardItem *item /Transfer/); QStandardItem *verticalHeaderItem(int row) const; void setVerticalHeaderItem(int row, QStandardItem *item /Transfer/); void setHorizontalHeaderLabels(const QStringList &labels); void setVerticalHeaderLabels(const QStringList &labels); void setRowCount(int rows); void setColumnCount(int columns); void appendRow(const QList &items /Transfer/); void appendColumn(const QList &items /Transfer/); void insertRow(int row, const QList &items /Transfer/); void insertColumn(int column, const QList &items /Transfer/); QStandardItem *takeItem(int row, int column = 0) /TransferBack/; QList takeRow(int row) /TransferBack/; QList takeColumn(int column) /TransferBack/; QStandardItem *takeHorizontalHeaderItem(int column) /TransferBack/; QStandardItem *takeVerticalHeaderItem(int row) /TransferBack/; const QStandardItem *itemPrototype() const; void setItemPrototype(const QStandardItem *item /Transfer/); QList findItems(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly, int column = 0) const; int sortRole() const; void setSortRole(int role); void appendRow(QStandardItem *aitem /Transfer/); void insertRow(int arow, QStandardItem *aitem /Transfer/); bool insertRow(int row, const QModelIndex &parent = QModelIndex()); bool insertColumn(int column, const QModelIndex &parent = QModelIndex()); virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const /TransferBack/; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; void setItemRoleNames(const QHash &roleNames); signals: void itemChanged(QStandardItem *item); private: QStandardItemModel(const QStandardItemModel &); }; class QStandardItem /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: QStandardItem(); explicit QStandardItem(const QString &text); QStandardItem(const QIcon &icon, const QString &text); QStandardItem(int rows, int columns = 1); virtual ~QStandardItem(); virtual QVariant data(int role = Qt::UserRole + 1) const; virtual void setData(const QVariant &value, int role = Qt::UserRole + 1); QString text() const; QIcon icon() const; QString toolTip() const; QString statusTip() const; QString whatsThis() const; QSize sizeHint() const; QFont font() const; Qt::Alignment textAlignment() const; QBrush background() const; QBrush foreground() const; Qt::CheckState checkState() const; QString accessibleText() const; QString accessibleDescription() const; Qt::ItemFlags flags() const; void setFlags(Qt::ItemFlags flags); bool isEnabled() const; void setEnabled(bool enabled); bool isEditable() const; void setEditable(bool editable); bool isSelectable() const; void setSelectable(bool selectable); bool isCheckable() const; void setCheckable(bool checkable); bool isTristate() const; void setTristate(bool tristate); bool isDragEnabled() const; void setDragEnabled(bool dragEnabled); bool isDropEnabled() const; void setDropEnabled(bool dropEnabled); QStandardItem *parent() const; int row() const; int column() const; QModelIndex index() const; QStandardItemModel *model() const; int rowCount() const; void setRowCount(int rows); int columnCount() const; void setColumnCount(int columns); bool hasChildren() const; QStandardItem *child(int row, int column = 0) const; void setChild(int row, int column, QStandardItem *item /Transfer/); void setChild(int arow, QStandardItem *aitem /Transfer/); void insertRow(int row, const QList &items /Transfer/); void insertRow(int arow, QStandardItem *aitem /Transfer/); void insertRows(int row, int count); void insertColumn(int column, const QList &items /Transfer/); void insertColumns(int column, int count); void removeRow(int row); void removeColumn(int column); void removeRows(int row, int count); void removeColumns(int column, int count); QStandardItem *takeChild(int row, int column = 0) /TransferBack/; QList takeRow(int row) /TransferBack/; QList takeColumn(int column) /TransferBack/; void sortChildren(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QStandardItem *clone() const /Factory/; enum ItemType { Type, UserType, }; virtual int type() const; virtual void read(QDataStream &in); virtual void write(QDataStream &out) const; virtual bool operator<(const QStandardItem &other /NoCopy/) const; void setText(const QString &atext); void setIcon(const QIcon &aicon); void setToolTip(const QString &atoolTip); void setStatusTip(const QString &astatusTip); void setWhatsThis(const QString &awhatsThis); void setSizeHint(const QSize &asizeHint); void setFont(const QFont &afont); void setTextAlignment(Qt::Alignment atextAlignment); void setBackground(const QBrush &abrush); void setForeground(const QBrush &abrush); void setCheckState(Qt::CheckState acheckState); void setAccessibleText(const QString &aaccessibleText); void setAccessibleDescription(const QString &aaccessibleDescription); void appendRow(const QList &items /Transfer/); void appendRow(QStandardItem *aitem /Transfer/); void appendColumn(const QList &items /Transfer/); void insertRows(int row, const QList &items /Transfer/); void appendRows(const QList &items /Transfer/); protected: QStandardItem(const QStandardItem &other); void emitDataChanged(); public: %If (Qt_5_6_0 -) bool isAutoTristate() const; %End %If (Qt_5_6_0 -) void setAutoTristate(bool tristate); %End %If (Qt_5_6_0 -) bool isUserTristate() const; %End %If (Qt_5_6_0 -) void setUserTristate(bool tristate); %End }; QDataStream &operator>>(QDataStream &in, QStandardItem &item /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &out, const QStandardItem &item /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtGui/qstatictext.sip0000644000076500000240000000376513245233150020430 0ustar philstaff00000000000000// qstatictext.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStaticText { %TypeHeaderCode #include %End public: enum PerformanceHint { ModerateCaching, AggressiveCaching, }; QStaticText(); %If (Qt_5_10_0 -) explicit QStaticText(const QString &text); %End %If (- Qt_5_10_0) QStaticText(const QString &text); %End QStaticText(const QStaticText &other); ~QStaticText(); void setText(const QString &text); QString text() const; void setTextFormat(Qt::TextFormat textFormat); Qt::TextFormat textFormat() const; void setTextWidth(qreal textWidth); qreal textWidth() const; void setTextOption(const QTextOption &textOption); QTextOption textOption() const; QSizeF size() const; void prepare(const QTransform &matrix = QTransform(), const QFont &font = QFont()); void setPerformanceHint(QStaticText::PerformanceHint performanceHint); QStaticText::PerformanceHint performanceHint() const; bool operator==(const QStaticText &) const; bool operator!=(const QStaticText &) const; void swap(QStaticText &other /Constrained/); }; PyQt5_gpl-5.10.1/sip/QtGui/qstylehints.sip0000644000076500000240000000553413245233150020436 0ustar philstaff00000000000000// qstylehints.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStyleHints : QObject { %TypeHeaderCode #include %End public: int mouseDoubleClickInterval() const; int startDragDistance() const; int startDragTime() const; int startDragVelocity() const; int keyboardInputInterval() const; int keyboardAutoRepeatRate() const; int cursorFlashTime() const; bool showIsFullScreen() const; int passwordMaskDelay() const; qreal fontSmoothingGamma() const; bool useRtlExtensions() const; %If (Qt_5_1_0 -) QChar passwordMaskCharacter() const; %End %If (Qt_5_2_0 -) bool setFocusOnTouchRelease() const; %End %If (Qt_5_3_0 -) int mousePressAndHoldInterval() const; %End %If (Qt_5_5_0 -) Qt::TabFocusBehavior tabFocusBehavior() const; %End %If (Qt_5_5_0 -) bool singleClickActivation() const; %End signals: %If (Qt_5_5_0 -) void cursorFlashTimeChanged(int cursorFlashTime); %End %If (Qt_5_5_0 -) void keyboardInputIntervalChanged(int keyboardInputInterval); %End %If (Qt_5_5_0 -) void mouseDoubleClickIntervalChanged(int mouseDoubleClickInterval); %End %If (Qt_5_5_0 -) void startDragDistanceChanged(int startDragDistance); %End %If (Qt_5_5_0 -) void startDragTimeChanged(int startDragTime); %End %If (Qt_5_7_0 -) void mousePressAndHoldIntervalChanged(int mousePressAndHoldInterval); %End %If (Qt_5_7_0 -) void tabFocusBehaviorChanged(Qt::TabFocusBehavior tabFocusBehavior); %End public: %If (Qt_5_6_0 -) bool showIsMaximized() const; %End %If (Qt_5_8_0 -) bool useHoverEffects() const; %End %If (Qt_5_8_0 -) void setUseHoverEffects(bool useHoverEffects); %End signals: %If (Qt_5_8_0 -) void useHoverEffectsChanged(bool useHoverEffects); %End public: %If (Qt_5_9_0 -) int wheelScrollLines() const; %End signals: %If (Qt_5_9_0 -) void wheelScrollLinesChanged(int scrollLines); %End public: %If (Qt_5_10_0 -) bool showShortcutsInContextMenus() const; %End private: QStyleHints(); }; PyQt5_gpl-5.10.1/sip/QtGui/qsurface.sip0000644000076500000240000000321413245233150017651 0ustar philstaff00000000000000// qsurface.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSurface /Abstract/ { %TypeHeaderCode #include %End public: enum SurfaceClass { Window, %If (Qt_5_1_0 -) Offscreen, %End }; enum SurfaceType { RasterSurface, OpenGLSurface, %If (Qt_5_3_0 -) RasterGLSurface, %End %If (Qt_5_9_0 -) OpenVGSurface, %End %If (Qt_5_10_0 -) VulkanSurface, %End }; virtual ~QSurface(); QSurface::SurfaceClass surfaceClass() const; virtual QSurfaceFormat format() const = 0; virtual QSurface::SurfaceType surfaceType() const = 0; virtual QSize size() const = 0; %If (Qt_5_3_0 -) bool supportsOpenGL() const; %End protected: explicit QSurface(QSurface::SurfaceClass type); }; PyQt5_gpl-5.10.1/sip/QtGui/qsurfaceformat.sip0000644000076500000240000001021313245233151021060 0ustar philstaff00000000000000// qsurfaceformat.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSurfaceFormat { %TypeHeaderCode #include %End public: enum FormatOption { StereoBuffers, DebugContext, DeprecatedFunctions, %If (Qt_5_5_0 -) ResetNotification, %End }; typedef QFlags FormatOptions; enum SwapBehavior { DefaultSwapBehavior, SingleBuffer, DoubleBuffer, TripleBuffer, }; enum RenderableType { DefaultRenderableType, OpenGL, OpenGLES, OpenVG, }; enum OpenGLContextProfile { NoProfile, CoreProfile, CompatibilityProfile, }; QSurfaceFormat(); QSurfaceFormat(QSurfaceFormat::FormatOptions options); QSurfaceFormat(const QSurfaceFormat &other); ~QSurfaceFormat(); void setDepthBufferSize(int size); int depthBufferSize() const; void setStencilBufferSize(int size); int stencilBufferSize() const; void setRedBufferSize(int size); int redBufferSize() const; void setGreenBufferSize(int size); int greenBufferSize() const; void setBlueBufferSize(int size); int blueBufferSize() const; void setAlphaBufferSize(int size); int alphaBufferSize() const; void setSamples(int numSamples); int samples() const; void setSwapBehavior(QSurfaceFormat::SwapBehavior behavior); QSurfaceFormat::SwapBehavior swapBehavior() const; bool hasAlpha() const; void setProfile(QSurfaceFormat::OpenGLContextProfile profile); QSurfaceFormat::OpenGLContextProfile profile() const; void setRenderableType(QSurfaceFormat::RenderableType type); QSurfaceFormat::RenderableType renderableType() const; void setMajorVersion(int majorVersion); int majorVersion() const; void setMinorVersion(int minorVersion); int minorVersion() const; void setStereo(bool enable); void setOption(QSurfaceFormat::FormatOptions opt); bool testOption(QSurfaceFormat::FormatOptions opt) const; bool stereo() const; %If (Qt_5_1_0 -) QPair version() const; %End %If (Qt_5_1_0 -) void setVersion(int major, int minor); %End %If (Qt_5_3_0 -) void setOptions(QSurfaceFormat::FormatOptions options); %End %If (Qt_5_3_0 -) void setOption(QSurfaceFormat::FormatOption option, bool on = true); %End %If (Qt_5_3_0 -) bool testOption(QSurfaceFormat::FormatOption option) const; %End %If (Qt_5_3_0 -) QSurfaceFormat::FormatOptions options() const; %End %If (Qt_5_3_0 -) int swapInterval() const; %End %If (Qt_5_3_0 -) void setSwapInterval(int interval); %End %If (Qt_5_4_0 -) static void setDefaultFormat(const QSurfaceFormat &format); %End %If (Qt_5_4_0 -) static QSurfaceFormat defaultFormat(); %End %If (Qt_5_10_0 -) enum ColorSpace { DefaultColorSpace, sRGBColorSpace, }; %End %If (Qt_5_10_0 -) QSurfaceFormat::ColorSpace colorSpace() const; %End %If (Qt_5_10_0 -) void setColorSpace(QSurfaceFormat::ColorSpace colorSpace); %End }; bool operator==(const QSurfaceFormat &, const QSurfaceFormat &); bool operator!=(const QSurfaceFormat &, const QSurfaceFormat &); QFlags operator|(QSurfaceFormat::FormatOption f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtGui/qsyntaxhighlighter.sip0000644000076500000240000000572313245233151021776 0ustar philstaff00000000000000// qsyntaxhighlighter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSyntaxHighlighter : QObject { %TypeHeaderCode #include %End public: explicit QSyntaxHighlighter(QTextDocument *parent /TransferThis/); explicit QSyntaxHighlighter(QObject *parent /TransferThis/); virtual ~QSyntaxHighlighter(); void setDocument(QTextDocument *doc /KeepReference/); QTextDocument *document() const; public slots: void rehighlight(); void rehighlightBlock(const QTextBlock &block); protected: virtual void highlightBlock(const QString &text) = 0; void setFormat(int start, int count, const QTextCharFormat &format); void setFormat(int start, int count, const QColor &color); void setFormat(int start, int count, const QFont &font); QTextCharFormat format(int pos) const; int previousBlockState() const; int currentBlockState() const; void setCurrentBlockState(int newState); void setCurrentBlockUserData(QTextBlockUserData *data /GetWrapper/); %MethodCode // Ownership of the user data is with the document not the syntax highlighter. typedef PyObject *(*helper_func)(QObject *, const sipTypeDef *); static helper_func helper = 0; if (!helper) { helper = (helper_func)sipImportSymbol("qtgui_wrap_ancestors"); Q_ASSERT(helper); } QTextDocument *td = sipCpp->document(); if (td) { PyObject *py_td = helper(td, sipType_QTextDocument); if (!py_td) { sipIsErr = 1; } else { sipTransferTo(a0Wrapper, py_td); Py_DECREF(py_td); } } #if defined(SIP_PROTECTED_IS_PUBLIC) sipCpp->setCurrentBlockUserData(a0); #else sipCpp->sipProtect_setCurrentBlockUserData(a0); #endif %End QTextBlockUserData *currentBlockUserData() const; QTextBlock currentBlock() const; private: QSyntaxHighlighter(const QSyntaxHighlighter &); }; PyQt5_gpl-5.10.1/sip/QtGui/qtextcursor.sip0000644000076500000240000001240213245233151020443 0ustar philstaff00000000000000// qtextcursor.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextCursor { %TypeHeaderCode #include %End public: QTextCursor(); explicit QTextCursor(QTextDocument *document); explicit QTextCursor(QTextFrame *frame); explicit QTextCursor(const QTextBlock &block); QTextCursor(const QTextCursor &cursor); ~QTextCursor(); bool isNull() const; enum MoveMode { MoveAnchor, KeepAnchor, }; void setPosition(int pos, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor); int position() const; int anchor() const; void insertText(const QString &text); void insertText(const QString &text, const QTextCharFormat &format); enum MoveOperation { NoMove, Start, Up, StartOfLine, StartOfBlock, StartOfWord, PreviousBlock, PreviousCharacter, PreviousWord, Left, WordLeft, End, Down, EndOfLine, EndOfWord, EndOfBlock, NextBlock, NextCharacter, NextWord, Right, WordRight, NextCell, PreviousCell, NextRow, PreviousRow, }; bool movePosition(QTextCursor::MoveOperation op, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor, int n = 1); void deleteChar(); void deletePreviousChar(); enum SelectionType { WordUnderCursor, LineUnderCursor, BlockUnderCursor, Document, }; void select(QTextCursor::SelectionType selection); bool hasSelection() const; bool hasComplexSelection() const; void removeSelectedText(); void clearSelection(); int selectionStart() const; int selectionEnd() const; QString selectedText() const; QTextDocumentFragment selection() const; void selectedTableCells(int *firstRow, int *numRows, int *firstColumn, int *numColumns) const; QTextBlock block() const; QTextCharFormat charFormat() const; void setCharFormat(const QTextCharFormat &format); void mergeCharFormat(const QTextCharFormat &modifier); QTextBlockFormat blockFormat() const; void setBlockFormat(const QTextBlockFormat &format); void mergeBlockFormat(const QTextBlockFormat &modifier); QTextCharFormat blockCharFormat() const; void setBlockCharFormat(const QTextCharFormat &format); void mergeBlockCharFormat(const QTextCharFormat &modifier); bool atBlockStart() const; bool atBlockEnd() const; bool atStart() const; bool atEnd() const; void insertBlock(); void insertBlock(const QTextBlockFormat &format); void insertBlock(const QTextBlockFormat &format, const QTextCharFormat &charFormat); QTextList *insertList(const QTextListFormat &format); QTextList *insertList(QTextListFormat::Style style); QTextList *createList(const QTextListFormat &format); QTextList *createList(QTextListFormat::Style style); QTextList *currentList() const; QTextTable *insertTable(int rows, int cols, const QTextTableFormat &format); QTextTable *insertTable(int rows, int cols); QTextTable *currentTable() const; QTextFrame *insertFrame(const QTextFrameFormat &format); QTextFrame *currentFrame() const; void insertFragment(const QTextDocumentFragment &fragment); void insertHtml(const QString &html); void insertImage(const QTextImageFormat &format); void insertImage(const QTextImageFormat &format, QTextFrameFormat::Position alignment); void insertImage(const QString &name); void insertImage(const QImage &image, const QString &name = QString()); void beginEditBlock(); void joinPreviousEditBlock(); void endEditBlock(); int blockNumber() const; int columnNumber() const; bool operator!=(const QTextCursor &rhs) const; bool operator<(const QTextCursor &rhs) const; bool operator<=(const QTextCursor &rhs) const; bool operator==(const QTextCursor &rhs) const; bool operator>=(const QTextCursor &rhs) const; bool operator>(const QTextCursor &rhs) const; bool isCopyOf(const QTextCursor &other) const; bool visualNavigation() const; void setVisualNavigation(bool b); QTextDocument *document() const; int positionInBlock() const; void setVerticalMovementX(int x); int verticalMovementX() const; void setKeepPositionOnInsert(bool b); bool keepPositionOnInsert() const; void swap(QTextCursor &other /Constrained/); }; PyQt5_gpl-5.10.1/sip/QtGui/qtextdocument.sip0000644000076500000240000001507113245233151020751 0ustar philstaff00000000000000// qtextdocument.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace Qt { %TypeHeaderCode #include %End bool mightBeRichText(const QString &); QString convertFromPlainText(const QString &plain, Qt::WhiteSpaceMode mode = Qt::WhiteSpacePre); }; class QTextDocument : QObject { %TypeHeaderCode #include %End public: explicit QTextDocument(QObject *parent /TransferThis/ = 0); QTextDocument(const QString &text, QObject *parent /TransferThis/ = 0); virtual ~QTextDocument(); QTextDocument *clone(QObject *parent /TransferThis/ = 0) const /Factory/; bool isEmpty() const; virtual void clear(); void setUndoRedoEnabled(bool enable); bool isUndoRedoEnabled() const; bool isUndoAvailable() const; bool isRedoAvailable() const; void setDocumentLayout(QAbstractTextDocumentLayout *layout /Transfer/); QAbstractTextDocumentLayout *documentLayout() const; enum MetaInformation { DocumentTitle, DocumentUrl, }; void setMetaInformation(QTextDocument::MetaInformation info, const QString &); QString metaInformation(QTextDocument::MetaInformation info) const; QString toHtml(const QByteArray &encoding = QByteArray()) const; void setHtml(const QString &html); QString toPlainText() const; void setPlainText(const QString &text); enum FindFlag { FindBackward, FindCaseSensitively, FindWholeWords, }; typedef QFlags FindFlags; QTextCursor find(const QString &subString, int position = 0, QFlags options = 0) const; QTextCursor find(const QRegExp &expr, int position = 0, QFlags options = 0) const; %If (Qt_5_5_0 -) QTextCursor find(const QRegularExpression &expr, int position = 0, QFlags options = 0) const; %End QTextCursor find(const QString &subString, const QTextCursor &cursor, QFlags options = 0) const; QTextCursor find(const QRegExp &expr, const QTextCursor &cursor, QFlags options = 0) const; %If (Qt_5_5_0 -) QTextCursor find(const QRegularExpression &expr, const QTextCursor &cursor, QFlags options = 0) const; %End QTextFrame *rootFrame() const; QTextObject *object(int objectIndex) const; QTextObject *objectForFormat(const QTextFormat &) const; QTextBlock findBlock(int pos) const; QTextBlock begin() const; QTextBlock end() const; void setPageSize(const QSizeF &size); QSizeF pageSize() const; void setDefaultFont(const QFont &font); QFont defaultFont() const; int pageCount() const; bool isModified() const; %If (PyQt_Printer) void print(QPagedPaintDevice *printer) const /PyName=print_/; %End %If (Py_v3) %If (PyQt_Printer) void print(QPagedPaintDevice *printer) const; %End %End enum ResourceType { HtmlResource, ImageResource, StyleSheetResource, UserResource, }; QVariant resource(int type, const QUrl &name) const; void addResource(int type, const QUrl &name, const QVariant &resource); QVector allFormats() const; void markContentsDirty(int from, int length); void setUseDesignMetrics(bool b); bool useDesignMetrics() const; signals: void blockCountChanged(int newBlockCount); void contentsChange(int from, int charsRemoves, int charsAdded); void contentsChanged(); void cursorPositionChanged(const QTextCursor &cursor); void modificationChanged(bool m); void redoAvailable(bool); void undoAvailable(bool); public slots: void undo(); void redo(); void setModified(bool on = true); protected: virtual QTextObject *createObject(const QTextFormat &f) /Factory/; virtual QVariant loadResource(int type, const QUrl &name); public: void drawContents(QPainter *p, const QRectF &rect = QRectF()); void setTextWidth(qreal width); qreal textWidth() const; qreal idealWidth() const; void adjustSize(); QSizeF size() const; int blockCount() const; void setDefaultStyleSheet(const QString &sheet); QString defaultStyleSheet() const; void undo(QTextCursor *cursor); void redo(QTextCursor *cursor); int maximumBlockCount() const; void setMaximumBlockCount(int maximum); QTextOption defaultTextOption() const; void setDefaultTextOption(const QTextOption &option); int revision() const; QTextBlock findBlockByNumber(int blockNumber) const; QTextBlock findBlockByLineNumber(int blockNumber) const; QTextBlock firstBlock() const; QTextBlock lastBlock() const; qreal indentWidth() const; void setIndentWidth(qreal width); signals: void undoCommandAdded(); void documentLayoutChanged(); public: QChar characterAt(int pos) const; qreal documentMargin() const; void setDocumentMargin(qreal margin); int lineCount() const; int characterCount() const; int availableUndoSteps() const; int availableRedoSteps() const; enum Stacks { UndoStack, RedoStack, UndoAndRedoStacks, }; void clearUndoRedoStacks(QTextDocument::Stacks stacks = QTextDocument::UndoAndRedoStacks); Qt::CursorMoveStyle defaultCursorMoveStyle() const; void setDefaultCursorMoveStyle(Qt::CursorMoveStyle style); %If (Qt_5_3_0 -) QUrl baseUrl() const; %End %If (Qt_5_3_0 -) void setBaseUrl(const QUrl &url); %End signals: %If (Qt_5_3_0 -) void baseUrlChanged(const QUrl &url); %End public: %If (Qt_5_9_0 -) QString toRawText() const; %End private: QTextDocument(const QTextDocument &); }; QFlags operator|(QTextDocument::FindFlag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtGui/qtextdocumentfragment.sip0000644000076500000240000000321313245233151022470 0ustar philstaff00000000000000// qtextdocumentfragment.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextDocumentFragment { %TypeHeaderCode #include %End public: QTextDocumentFragment(); explicit QTextDocumentFragment(const QTextDocument *document); explicit QTextDocumentFragment(const QTextCursor &range); QTextDocumentFragment(const QTextDocumentFragment &rhs); ~QTextDocumentFragment(); bool isEmpty() const; QString toPlainText() const; QString toHtml(const QByteArray &encoding = QByteArray()) const; static QTextDocumentFragment fromPlainText(const QString &plainText); static QTextDocumentFragment fromHtml(const QString &html); static QTextDocumentFragment fromHtml(const QString &html, const QTextDocument *resourceProvider); }; PyQt5_gpl-5.10.1/sip/QtGui/qtextdocumentwriter.sip0000644000076500000240000000340713245233151022206 0ustar philstaff00000000000000// qtextdocumentwriter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextDocumentWriter { %TypeHeaderCode #include %End public: QTextDocumentWriter(); QTextDocumentWriter(QIODevice *device, const QByteArray &format); QTextDocumentWriter(const QString &fileName, const QByteArray &format = QByteArray()); ~QTextDocumentWriter(); void setFormat(const QByteArray &format); QByteArray format() const; void setDevice(QIODevice *device); QIODevice *device() const; void setFileName(const QString &fileName); QString fileName() const; bool write(const QTextDocument *document); bool write(const QTextDocumentFragment &fragment); void setCodec(QTextCodec *codec /KeepReference/); QTextCodec *codec() const; static QList supportedDocumentFormats(); private: QTextDocumentWriter(const QTextDocumentWriter &); }; PyQt5_gpl-5.10.1/sip/QtGui/qtextformat.sip0000644000076500000240000003656513245233151020436 0ustar philstaff00000000000000// qtextformat.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextLength { %TypeHeaderCode #include %End public: enum Type { VariableLength, FixedLength, PercentageLength, }; QTextLength(); QTextLength::Type type() const; QTextLength(QTextLength::Type atype, qreal avalue); qreal value(qreal maximumLength) const; qreal rawValue() const; bool operator==(const QTextLength &other) const; bool operator!=(const QTextLength &other) const; QTextLength(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QTextLength(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End }; QDataStream &operator<<(QDataStream &, const QTextLength & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QTextLength & /Constrained/) /ReleaseGIL/; class QTextFormat { %TypeHeaderCode #include %End public: enum FormatType { InvalidFormat, BlockFormat, CharFormat, ListFormat, TableFormat, FrameFormat, UserFormat, }; enum ObjectTypes { NoObject, ImageObject, TableObject, TableCellObject, UserObject, }; enum PageBreakFlag { PageBreak_Auto, PageBreak_AlwaysBefore, PageBreak_AlwaysAfter, }; typedef QFlags PageBreakFlags; enum Property { ObjectIndex, CssFloat, LayoutDirection, OutlinePen, BackgroundBrush, ForegroundBrush, BlockAlignment, BlockTopMargin, BlockBottomMargin, BlockLeftMargin, BlockRightMargin, TextIndent, BlockIndent, BlockNonBreakableLines, BlockTrailingHorizontalRulerWidth, FontFamily, FontPointSize, FontSizeAdjustment, FontSizeIncrement, FontWeight, FontItalic, FontUnderline, FontOverline, FontStrikeOut, FontFixedPitch, FontPixelSize, TextUnderlineColor, TextVerticalAlignment, TextOutline, IsAnchor, AnchorHref, AnchorName, ObjectType, ListStyle, ListIndent, FrameBorder, FrameMargin, FramePadding, FrameWidth, FrameHeight, TableColumns, TableColumnWidthConstraints, TableCellSpacing, TableCellPadding, TableCellRowSpan, TableCellColumnSpan, ImageName, ImageWidth, ImageHeight, TextUnderlineStyle, TableHeaderRowCount, FullWidthSelection, PageBreakPolicy, TextToolTip, FrameTopMargin, FrameBottomMargin, FrameLeftMargin, FrameRightMargin, FrameBorderBrush, FrameBorderStyle, BackgroundImageUrl, TabPositions, FirstFontProperty, FontCapitalization, FontLetterSpacing, FontWordSpacing, LastFontProperty, TableCellTopPadding, TableCellBottomPadding, TableCellLeftPadding, TableCellRightPadding, FontStyleHint, FontStyleStrategy, FontKerning, LineHeight, LineHeightType, FontHintingPreference, ListNumberPrefix, ListNumberSuffix, FontStretch, FontLetterSpacingType, UserProperty, }; QTextFormat(); explicit QTextFormat(int type); QTextFormat(const QTextFormat &rhs); QTextFormat(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QTextFormat(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QTextFormat(); void merge(const QTextFormat &other); bool isValid() const; int type() const; int objectIndex() const; void setObjectIndex(int object); QVariant property(int propertyId) const; void setProperty(int propertyId, const QVariant &value); void clearProperty(int propertyId); bool hasProperty(int propertyId) const; bool boolProperty(int propertyId) const; int intProperty(int propertyId) const; qreal doubleProperty(int propertyId) const; QString stringProperty(int propertyId) const; QColor colorProperty(int propertyId) const; QPen penProperty(int propertyId) const; QBrush brushProperty(int propertyId) const; QTextLength lengthProperty(int propertyId) const; QVector lengthVectorProperty(int propertyId) const; void setProperty(int propertyId, const QVector &lengths); QMap properties() const; int objectType() const; bool isCharFormat() const; bool isBlockFormat() const; bool isListFormat() const; bool isFrameFormat() const; bool isImageFormat() const; bool isTableFormat() const; QTextBlockFormat toBlockFormat() const; QTextCharFormat toCharFormat() const; QTextListFormat toListFormat() const; QTextTableFormat toTableFormat() const; QTextFrameFormat toFrameFormat() const; QTextImageFormat toImageFormat() const; bool operator==(const QTextFormat &rhs) const; bool operator!=(const QTextFormat &rhs) const; void setLayoutDirection(Qt::LayoutDirection direction); Qt::LayoutDirection layoutDirection() const; void setBackground(const QBrush &brush); QBrush background() const; void clearBackground(); void setForeground(const QBrush &brush); QBrush foreground() const; void clearForeground(); void setObjectType(int atype); int propertyCount() const; bool isTableCellFormat() const; QTextTableCellFormat toTableCellFormat() const; void swap(QTextFormat &other /Constrained/); %If (Qt_5_3_0 -) bool isEmpty() const; %End }; QDataStream &operator<<(QDataStream &, const QTextFormat & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QTextFormat & /Constrained/) /ReleaseGIL/; class QTextCharFormat : QTextFormat { %TypeHeaderCode #include %End public: enum VerticalAlignment { AlignNormal, AlignSuperScript, AlignSubScript, AlignMiddle, AlignTop, AlignBottom, AlignBaseline, }; QTextCharFormat(); bool isValid() const; void setFont(const QFont &font); QFont font() const; void setFontFamily(const QString &family); QString fontFamily() const; void setFontPointSize(qreal size); qreal fontPointSize() const; void setFontWeight(int weight); int fontWeight() const; void setFontItalic(bool italic); bool fontItalic() const; void setFontUnderline(bool underline); bool fontUnderline() const; void setFontOverline(bool overline); bool fontOverline() const; void setFontStrikeOut(bool strikeOut); bool fontStrikeOut() const; void setUnderlineColor(const QColor &color); QColor underlineColor() const; void setFontFixedPitch(bool fixedPitch); bool fontFixedPitch() const; void setVerticalAlignment(QTextCharFormat::VerticalAlignment alignment); QTextCharFormat::VerticalAlignment verticalAlignment() const; void setAnchor(bool anchor); bool isAnchor() const; void setAnchorHref(const QString &value); QString anchorHref() const; int tableCellRowSpan() const; int tableCellColumnSpan() const; void setTableCellRowSpan(int atableCellRowSpan); void setTableCellColumnSpan(int atableCellColumnSpan); void setTextOutline(const QPen &pen); QPen textOutline() const; enum UnderlineStyle { NoUnderline, SingleUnderline, DashUnderline, DotLine, DashDotLine, DashDotDotLine, WaveUnderline, SpellCheckUnderline, }; void setUnderlineStyle(QTextCharFormat::UnderlineStyle style); QTextCharFormat::UnderlineStyle underlineStyle() const; void setToolTip(const QString &tip); QString toolTip() const; void setAnchorNames(const QStringList &names); QStringList anchorNames() const; void setFontCapitalization(QFont::Capitalization capitalization); QFont::Capitalization fontCapitalization() const; void setFontLetterSpacing(qreal spacing); qreal fontLetterSpacing() const; void setFontWordSpacing(qreal spacing); qreal fontWordSpacing() const; void setFontStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy = QFont::PreferDefault); void setFontStyleStrategy(QFont::StyleStrategy strategy); QFont::StyleHint fontStyleHint() const; QFont::StyleStrategy fontStyleStrategy() const; void setFontKerning(bool enable); bool fontKerning() const; void setFontHintingPreference(QFont::HintingPreference hintingPreference); QFont::HintingPreference fontHintingPreference() const; int fontStretch() const; void setFontStretch(int factor); void setFontLetterSpacingType(QFont::SpacingType letterSpacingType); QFont::SpacingType fontLetterSpacingType() const; %If (Qt_5_3_0 -) enum FontPropertiesInheritanceBehavior { FontPropertiesSpecifiedOnly, FontPropertiesAll, }; %End %If (Qt_5_3_0 -) void setFont(const QFont &font, QTextCharFormat::FontPropertiesInheritanceBehavior behavior); %End }; class QTextBlockFormat : QTextFormat { %TypeHeaderCode #include %End public: QTextBlockFormat(); bool isValid() const; Qt::Alignment alignment() const; void setTopMargin(qreal margin); qreal topMargin() const; void setBottomMargin(qreal margin); qreal bottomMargin() const; void setLeftMargin(qreal margin); qreal leftMargin() const; void setRightMargin(qreal margin); qreal rightMargin() const; void setTextIndent(qreal margin); qreal textIndent() const; int indent() const; void setNonBreakableLines(bool b); bool nonBreakableLines() const; void setAlignment(Qt::Alignment aalignment); void setIndent(int aindent); void setPageBreakPolicy(QTextFormat::PageBreakFlags flags); QTextFormat::PageBreakFlags pageBreakPolicy() const; void setTabPositions(const QList &tabs); QList tabPositions() const; enum LineHeightTypes { SingleHeight, ProportionalHeight, FixedHeight, MinimumHeight, LineDistanceHeight, }; void setLineHeight(qreal height, int heightType); qreal lineHeight(qreal scriptLineHeight, qreal scaling) const [qreal (qreal scriptLineHeight, qreal scaling = 1.0e+0)]; qreal lineHeight() const; int lineHeightType() const; }; class QTextListFormat : QTextFormat { %TypeHeaderCode #include %End public: QTextListFormat(); bool isValid() const; enum Style { ListDisc, ListCircle, ListSquare, ListDecimal, ListLowerAlpha, ListUpperAlpha, ListLowerRoman, ListUpperRoman, }; QTextListFormat::Style style() const; int indent() const; void setStyle(QTextListFormat::Style astyle); void setIndent(int aindent); QString numberPrefix() const; QString numberSuffix() const; void setNumberPrefix(const QString &np); void setNumberSuffix(const QString &ns); }; class QTextImageFormat : QTextCharFormat { %TypeHeaderCode #include %End public: QTextImageFormat(); bool isValid() const; QString name() const; qreal width() const; qreal height() const; void setName(const QString &aname); void setWidth(qreal awidth); void setHeight(qreal aheight); }; class QTextFrameFormat : QTextFormat { %TypeHeaderCode #include %End public: QTextFrameFormat(); bool isValid() const; enum Position { InFlow, FloatLeft, FloatRight, }; void setPosition(QTextFrameFormat::Position f); QTextFrameFormat::Position position() const; qreal border() const; qreal margin() const; qreal padding() const; void setWidth(const QTextLength &length); QTextLength width() const; QTextLength height() const; void setBorder(qreal aborder); void setMargin(qreal amargin); void setPadding(qreal apadding); void setWidth(qreal awidth); void setHeight(qreal aheight); void setHeight(const QTextLength &aheight); void setPageBreakPolicy(QTextFormat::PageBreakFlags flags); QTextFormat::PageBreakFlags pageBreakPolicy() const; enum BorderStyle { BorderStyle_None, BorderStyle_Dotted, BorderStyle_Dashed, BorderStyle_Solid, BorderStyle_Double, BorderStyle_DotDash, BorderStyle_DotDotDash, BorderStyle_Groove, BorderStyle_Ridge, BorderStyle_Inset, BorderStyle_Outset, }; void setBorderBrush(const QBrush &brush); QBrush borderBrush() const; void setBorderStyle(QTextFrameFormat::BorderStyle style); QTextFrameFormat::BorderStyle borderStyle() const; qreal topMargin() const; qreal bottomMargin() const; qreal leftMargin() const; qreal rightMargin() const; void setTopMargin(qreal amargin); void setBottomMargin(qreal amargin); void setLeftMargin(qreal amargin); void setRightMargin(qreal amargin); }; class QTextTableFormat : QTextFrameFormat { %TypeHeaderCode #include %End public: QTextTableFormat(); bool isValid() const; int columns() const; void setColumnWidthConstraints(const QVector &constraints); QVector columnWidthConstraints() const; void clearColumnWidthConstraints(); qreal cellSpacing() const; void setCellSpacing(qreal spacing); qreal cellPadding() const; Qt::Alignment alignment() const; void setColumns(int acolumns); void setCellPadding(qreal apadding); void setAlignment(Qt::Alignment aalignment); void setHeaderRowCount(int count); int headerRowCount() const; }; QFlags operator|(QTextFormat::PageBreakFlag f1, QFlags f2); class QTextTableCellFormat : QTextCharFormat { %TypeHeaderCode #include %End public: QTextTableCellFormat(); bool isValid() const; void setTopPadding(qreal padding); qreal topPadding() const; void setBottomPadding(qreal padding); qreal bottomPadding() const; void setLeftPadding(qreal padding); qreal leftPadding() const; void setRightPadding(qreal padding); qreal rightPadding() const; void setPadding(qreal padding); }; PyQt5_gpl-5.10.1/sip/QtGui/qtextlayout.sip0000644000076500000240000001303613245233151020447 0ustar philstaff00000000000000// qtextlayout.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextInlineObject { %TypeHeaderCode #include %End public: bool isValid() const; QRectF rect() const; qreal width() const; qreal ascent() const; qreal descent() const; qreal height() const; Qt::LayoutDirection textDirection() const; void setWidth(qreal w); void setAscent(qreal a); void setDescent(qreal d); int textPosition() const; int formatIndex() const; QTextFormat format() const; }; class QTextLayout { %TypeHeaderCode #include %End public: QTextLayout(); QTextLayout(const QString &text); QTextLayout(const QString &text, const QFont &font, QPaintDevice *paintDevice = 0); QTextLayout(const QTextBlock &b); ~QTextLayout(); void setFont(const QFont &f); QFont font() const; void setText(const QString &string); QString text() const; void setTextOption(const QTextOption &option); const QTextOption &textOption() const; void setPreeditArea(int position, const QString &text); int preeditAreaPosition() const; QString preeditAreaText() const; struct FormatRange { %TypeHeaderCode #include %End int start; int length; QTextCharFormat format; }; void setAdditionalFormats(const QList &overrides); QList additionalFormats() const; void clearAdditionalFormats(); void setCacheEnabled(bool enable); bool cacheEnabled() const; void beginLayout(); void endLayout(); QTextLine createLine(); int lineCount() const; QTextLine lineAt(int i) const; QTextLine lineForTextPosition(int pos) const; enum CursorMode { SkipCharacters, SkipWords, }; bool isValidCursorPosition(int pos) const; int nextCursorPosition(int oldPos, QTextLayout::CursorMode mode = QTextLayout::SkipCharacters) const; int previousCursorPosition(int oldPos, QTextLayout::CursorMode mode = QTextLayout::SkipCharacters) const; void draw(QPainter *p, const QPointF &pos, const QVector &selections = QVector(), const QRectF &clip = QRectF()) const; void drawCursor(QPainter *p, const QPointF &pos, int cursorPosition) const; void drawCursor(QPainter *p, const QPointF &pos, int cursorPosition, int width) const; QPointF position() const; void setPosition(const QPointF &p); QRectF boundingRect() const; qreal minimumWidth() const; qreal maximumWidth() const; void clearLayout(); void setCursorMoveStyle(Qt::CursorMoveStyle style); Qt::CursorMoveStyle cursorMoveStyle() const; int leftCursorPosition(int oldPos) const; int rightCursorPosition(int oldPos) const; %If (PyQt_RawFont) QList glyphRuns(int from = -1, int length = -1) const; %End %If (Qt_5_6_0 -) void setFormats(const QVector &overrides); %End %If (Qt_5_6_0 -) QVector formats() const; %End %If (Qt_5_6_0 -) void clearFormats(); %End private: QTextLayout(const QTextLayout &); }; class QTextLine { %TypeHeaderCode #include %End public: QTextLine(); bool isValid() const; QRectF rect() const; qreal x() const; qreal y() const; qreal width() const; qreal ascent() const; qreal descent() const; qreal height() const; qreal naturalTextWidth() const; QRectF naturalTextRect() const; enum Edge { Leading, Trailing, }; enum CursorPosition { CursorBetweenCharacters, CursorOnCharacter, }; qreal cursorToX(int *cursorPos /In,Out/, QTextLine::Edge edge = QTextLine::Leading) const; int xToCursor(qreal x, QTextLine::CursorPosition edge = QTextLine::CursorBetweenCharacters) const; void setLineWidth(qreal width); void setNumColumns(int columns); void setNumColumns(int columns, qreal alignmentWidth); void setPosition(const QPointF &pos); int textStart() const; int textLength() const; int lineNumber() const; void draw(QPainter *painter, const QPointF &position, const QTextLayout::FormatRange *selection = 0) const; QPointF position() const; qreal leading() const; void setLeadingIncluded(bool included); bool leadingIncluded() const; qreal horizontalAdvance() const; %If (PyQt_RawFont) QList glyphRuns(int from = -1, int length = -1) const; %End }; %If (Qt_5_6_0 -) bool operator==(const QTextLayout::FormatRange &lhs, const QTextLayout::FormatRange &rhs); %End %If (Qt_5_6_0 -) bool operator!=(const QTextLayout::FormatRange &lhs, const QTextLayout::FormatRange &rhs); %End PyQt5_gpl-5.10.1/sip/QtGui/qtextlist.sip0000644000076500000240000000274213245233151020107 0ustar philstaff00000000000000// qtextlist.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextList : QTextBlockGroup { %TypeHeaderCode #include %End public: explicit QTextList(QTextDocument *doc); virtual ~QTextList(); int count() const /__len__/; QTextBlock item(int i) const; int itemNumber(const QTextBlock &) const; QString itemText(const QTextBlock &) const; void removeItem(int i); void remove(const QTextBlock &); void add(const QTextBlock &block); QTextListFormat format() const; void setFormat(const QTextListFormat &aformat); private: QTextList(const QTextList &); }; PyQt5_gpl-5.10.1/sip/QtGui/qtextobject.sip0000644000076500000240000001741713245233151020407 0ustar philstaff00000000000000// qtextobject.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextObject : QObject { %TypeHeaderCode #include %End protected: explicit QTextObject(QTextDocument *doc); virtual ~QTextObject(); void setFormat(const QTextFormat &format); public: QTextFormat format() const; int formatIndex() const; QTextDocument *document() const; int objectIndex() const; private: QTextObject(const QTextObject &); }; class QTextBlockGroup : QTextObject { %TypeHeaderCode #include %End protected: explicit QTextBlockGroup(QTextDocument *doc); virtual ~QTextBlockGroup(); virtual void blockInserted(const QTextBlock &block); virtual void blockRemoved(const QTextBlock &block); virtual void blockFormatChanged(const QTextBlock &block); QList blockList() const; private: QTextBlockGroup(const QTextBlockGroup &); }; class QTextFrame : QTextObject { %TypeHeaderCode #include %End public: explicit QTextFrame(QTextDocument *doc); virtual ~QTextFrame(); QTextFrameFormat frameFormat() const; QTextCursor firstCursorPosition() const; QTextCursor lastCursorPosition() const; int firstPosition() const; int lastPosition() const; QList childFrames() const; QTextFrame *parentFrame() const; class iterator { %TypeHeaderCode #include %End public: iterator(); iterator(const QTextFrame::iterator &o); QTextFrame *parentFrame() const; QTextFrame *currentFrame() const; QTextBlock currentBlock() const; bool atEnd() const; bool operator==(const QTextFrame::iterator &o) const; bool operator!=(const QTextFrame::iterator &o) const; QTextFrame::iterator &operator+=(int); %MethodCode if (a0 > 0) while (a0--) (*sipCpp)++; else if (a0 < 0) while (a0++) (*sipCpp)--; %End QTextFrame::iterator &operator-=(int); %MethodCode if (a0 > 0) while (a0--) (*sipCpp)--; else if (a0 < 0) while (a0++) (*sipCpp)++; %End }; typedef QTextFrame::iterator Iterator; QTextFrame::iterator begin() const; QTextFrame::iterator end() const; void setFrameFormat(const QTextFrameFormat &aformat); private: QTextFrame(const QTextFrame &); }; class QTextBlock /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: QTextBlock(); QTextBlock(const QTextBlock &o); bool isValid() const; bool operator==(const QTextBlock &o) const; bool operator!=(const QTextBlock &o) const; bool operator<(const QTextBlock &o) const; int position() const; int length() const; bool contains(int position) const; QTextLayout *layout() const; QTextBlockFormat blockFormat() const; int blockFormatIndex() const; QTextCharFormat charFormat() const; int charFormatIndex() const; QString text() const; const QTextDocument *document() const; QTextList *textList() const; class iterator { %TypeHeaderCode #include %End public: iterator(); iterator(const QTextBlock::iterator &o); QTextFragment fragment() const; bool atEnd() const; bool operator==(const QTextBlock::iterator &o) const; bool operator!=(const QTextBlock::iterator &o) const; QTextBlock::iterator &operator+=(int); %MethodCode if (a0 > 0) while (a0--) (*sipCpp)++; else if (a0 < 0) while (a0++) (*sipCpp)--; %End QTextBlock::iterator &operator-=(int); %MethodCode if (a0 > 0) while (a0--) (*sipCpp)--; else if (a0 < 0) while (a0++) (*sipCpp)++; %End }; typedef QTextBlock::iterator Iterator; QTextBlock::iterator begin() const; QTextBlock::iterator end() const; QTextBlock next() const; QTextBlock previous() const; QTextBlockUserData *userData() const; void setUserData(QTextBlockUserData *data /GetWrapper/); %MethodCode // Ownership of the user data is with the document not the text block. const QTextDocument *td = sipCpp->document(); if (td) { PyObject *py_td = qtgui_wrap_ancestors(const_cast(td), sipType_QTextDocument); if (!py_td) { sipIsErr = 1; } else { sipTransferTo(a0Wrapper, py_td); Py_DECREF(py_td); } } sipCpp->setUserData(a0); %End int userState() const; void setUserState(int state); void clearLayout(); int revision() const; void setRevision(int rev); bool isVisible() const; void setVisible(bool visible); int blockNumber() const; int firstLineNumber() const; void setLineCount(int count); int lineCount() const; Qt::LayoutDirection textDirection() const; %If (Qt_5_3_0 -) QVector textFormats() const; %End }; class QTextFragment { %TypeHeaderCode #include %End public: QTextFragment(); QTextFragment(const QTextFragment &o); bool isValid() const; bool operator==(const QTextFragment &o) const; bool operator!=(const QTextFragment &o) const; bool operator<(const QTextFragment &o) const; int position() const; int length() const; bool contains(int position) const; QTextCharFormat charFormat() const; int charFormatIndex() const; QString text() const; %If (PyQt_RawFont) QList glyphRuns(int from = -1, int length = -1) const; %End }; class QTextBlockUserData /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: virtual ~QTextBlockUserData(); }; %ModuleHeaderCode PyObject *qtgui_wrap_ancestors(QObject *obj, const sipTypeDef *td); %End %ModuleCode // Wrap a QObject and ensure that it's ancestors are all wrapped with the // correct ownerships. static PyObject *qtgui_wrap_ancestors_worker(QObject *obj) { if (!obj) { Py_INCREF(Py_None); return Py_None; } PyObject *py_parent = qtgui_wrap_ancestors_worker(obj->parent()); if (!py_parent) return 0; PyObject *py_obj = sipConvertFromType(obj, sipType_QObject, (py_parent != Py_None ? py_parent : 0)); Py_DECREF(py_parent); return py_obj; } PyObject *qtgui_wrap_ancestors(QObject *obj, const sipTypeDef *td) { PyObject *py_parent = qtgui_wrap_ancestors_worker(obj->parent()); if (!py_parent) return 0; PyObject *py_obj = sipConvertFromType(obj, td, (py_parent != Py_None ? py_parent : 0)); Py_DECREF(py_parent); return py_obj; } %End PyQt5_gpl-5.10.1/sip/QtGui/qtextoption.sip0000644000076500000240000000566013245233151020446 0ustar philstaff00000000000000// qtextoption.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextOption { %TypeHeaderCode #include %End public: QTextOption(); QTextOption(Qt::Alignment alignment); ~QTextOption(); QTextOption(const QTextOption &o); Qt::Alignment alignment() const; void setTextDirection(Qt::LayoutDirection aDirection); Qt::LayoutDirection textDirection() const; enum WrapMode { NoWrap, WordWrap, ManualWrap, WrapAnywhere, WrapAtWordBoundaryOrAnywhere, }; void setWrapMode(QTextOption::WrapMode wrap); QTextOption::WrapMode wrapMode() const; enum Flag { IncludeTrailingSpaces, ShowTabsAndSpaces, ShowLineAndParagraphSeparators, AddSpaceForLineAndParagraphSeparators, SuppressColors, %If (Qt_5_7_0 -) ShowDocumentTerminator, %End }; typedef QFlags Flags; QTextOption::Flags flags() const; qreal tabStop() const; void setTabArray(const QList &tabStops); QList tabArray() const; void setUseDesignMetrics(bool b); bool useDesignMetrics() const; void setAlignment(Qt::Alignment aalignment); void setFlags(QTextOption::Flags flags); void setTabStop(qreal atabStop); enum TabType { LeftTab, RightTab, CenterTab, DelimiterTab, }; struct Tab { %TypeHeaderCode #include %End Tab(); Tab(qreal pos, QTextOption::TabType tabType, QChar delim = QChar()); bool operator==(const QTextOption::Tab &other) const; bool operator!=(const QTextOption::Tab &other) const; qreal position; QTextOption::TabType type; QChar delimiter; }; void setTabs(const QList &tabStops); QList tabs() const; %If (Qt_5_10_0 -) void setTabStopDistance(qreal tabStopDistance); %End %If (Qt_5_10_0 -) qreal tabStopDistance() const; %End }; QFlags operator|(QTextOption::Flag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtGui/qtexttable.sip0000644000076500000240000000506713245233151020226 0ustar philstaff00000000000000// qtexttable.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextTableCell { %TypeHeaderCode #include %End public: QTextTableCell(); ~QTextTableCell(); QTextTableCell(const QTextTableCell &o); QTextCharFormat format() const; void setFormat(const QTextCharFormat &format); int row() const; int column() const; int rowSpan() const; int columnSpan() const; bool isValid() const; QTextCursor firstCursorPosition() const; QTextCursor lastCursorPosition() const; int tableCellFormatIndex() const; bool operator==(const QTextTableCell &other) const; bool operator!=(const QTextTableCell &other) const; }; class QTextTable : QTextFrame { %TypeHeaderCode #include %End public: explicit QTextTable(QTextDocument *doc); virtual ~QTextTable(); void resize(int rows, int cols); void insertRows(int pos, int num); void insertColumns(int pos, int num); void removeRows(int pos, int num); void removeColumns(int pos, int num); void mergeCells(int row, int col, int numRows, int numCols); void mergeCells(const QTextCursor &cursor); void splitCell(int row, int col, int numRows, int numCols); int rows() const; int columns() const; QTextTableCell cellAt(int row, int col) const; QTextTableCell cellAt(int position) const; QTextTableCell cellAt(const QTextCursor &c) const; QTextCursor rowStart(const QTextCursor &c) const; QTextCursor rowEnd(const QTextCursor &c) const; QTextTableFormat format() const; void setFormat(const QTextTableFormat &aformat); void appendRows(int count); void appendColumns(int count); private: QTextTable(const QTextTable &); }; PyQt5_gpl-5.10.1/sip/QtGui/QtGuimod.sip0000644000076500000240000001053013245233151017571 0ustar philstaff00000000000000// QtGuimod.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtGui, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper // Note this is also appended by configure.py but is explicitly needed here (probably a SIP bug). %Include opengl_types.sip %Include qabstracttextdocumentlayout.sip %Include qbackingstore.sip %Include qbitmap.sip %Include qcolor.sip %Include qbrush.sip %Include qclipboard.sip %Include qcursor.sip %Include qdesktopservices.sip %Include qdrag.sip %Include qevent.sip %Include qfont.sip %Include qfontdatabase.sip %Include qfontinfo.sip %Include qfontmetrics.sip %Include qgenericmatrix.sip %Include qglyphrun.sip %Include qguiapplication.sip %Include qicon.sip %Include qiconengine.sip %Include qimage.sip %Include qimageiohandler.sip %Include qimagereader.sip %Include qimagewriter.sip %Include qinputmethod.sip %Include qkeysequence.sip %Include qmatrix4x4.sip %Include qmovie.sip %Include qoffscreensurface.sip %Include qopenglbuffer.sip %Include qopenglcontext.sip %Include qopengldebug.sip %Include qopenglframebufferobject.sip %Include qopenglpaintdevice.sip %Include qopenglpixeltransferoptions.sip %Include qopenglshaderprogram.sip %Include qopengltexture.sip %Include qopengltextureblitter.sip %Include qopengltimerquery.sip %Include qopenglversionfunctions.sip %Include qopenglvertexarrayobject.sip %Include qopenglwindow.sip %Include qpagedpaintdevice.sip %Include qpagelayout.sip %Include qpagesize.sip %Include qpainter.sip %Include qpaintdevice.sip %Include qpaintdevicewindow.sip %Include qpaintengine.sip %Include qpainterpath.sip %Include qpalette.sip %Include qpdfwriter.sip %Include qpen.sip %Include qpicture.sip %Include qpixelformat.sip %Include qpixmap.sip %Include qpixmapcache.sip %Include qpolygon.sip %Include qquaternion.sip %Include qrasterwindow.sip %Include qrawfont.sip %Include qregion.sip %Include qrgba64.sip %Include qrgb.sip %Include qscreen.sip %Include qsessionmanager.sip %Include qstandarditemmodel.sip %Include qstatictext.sip %Include qstylehints.sip %Include qsurface.sip %Include qsurfaceformat.sip %Include qsyntaxhighlighter.sip %Include qtextcursor.sip %Include qtextdocument.sip %Include qtextdocumentfragment.sip %Include qtextdocumentwriter.sip %Include qtextformat.sip %Include qtextlayout.sip %Include qtextlist.sip %Include qtextobject.sip %Include qtextoption.sip %Include qtexttable.sip %Include qtouchdevice.sip %Include qtransform.sip %Include qvalidator.sip %Include qvector2d.sip %Include qvector3d.sip %Include qvector4d.sip %Include qwindow.sip %Include qwindowdefs.sip %Include opengl_types.sip %Include qpygui_qlist.sip %Include qpygui_qpair.sip %Include qpygui_qvector.sip PyQt5_gpl-5.10.1/sip/QtGui/qtouchdevice.sip0000644000076500000240000000366713245233151020540 0ustar philstaff00000000000000// qtouchdevice.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTouchDevice { %TypeHeaderCode #include %End public: enum DeviceType { TouchScreen, TouchPad, }; enum CapabilityFlag { Position, Area, Pressure, Velocity, RawPositions, NormalizedPosition, %If (Qt_5_5_0 -) MouseEmulation, %End }; typedef QFlags Capabilities; QTouchDevice(); ~QTouchDevice(); static QList devices(); QString name() const; QTouchDevice::DeviceType type() const; QTouchDevice::Capabilities capabilities() const; void setName(const QString &name); void setType(QTouchDevice::DeviceType devType); void setCapabilities(QTouchDevice::Capabilities caps); %If (Qt_5_2_0 -) int maximumTouchPoints() const; %End %If (Qt_5_2_0 -) void setMaximumTouchPoints(int max); %End }; QFlags operator|(QTouchDevice::CapabilityFlag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtGui/qtransform.sip0000644000076500000240000001173513245233151020244 0ustar philstaff00000000000000// qtransform.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QTransform { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"ddddddddd", sipCpp->m11(), sipCpp->m12(), sipCpp->m13(), sipCpp->m21(), sipCpp->m22(), sipCpp->m23(), sipCpp->m31(), sipCpp->m32(), sipCpp->m33()); %End public: enum TransformationType { TxNone, TxTranslate, TxScale, TxRotate, TxShear, TxProject, }; QTransform(); QTransform(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33 = 1.0e+0); QTransform(qreal h11, qreal h12, qreal h13, qreal h21, qreal h22, qreal h23); %If (Qt_5_7_0 -) QTransform(const QTransform &other); %End QTransform::TransformationType type() const; void setMatrix(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33); QTransform inverted(bool *invertible = 0) const; QTransform adjoint() const; QTransform transposed() const; QTransform &translate(qreal dx, qreal dy); QTransform &scale(qreal sx, qreal sy); QTransform &shear(qreal sh, qreal sv); QTransform &rotate(qreal angle, Qt::Axis axis = Qt::ZAxis); QTransform &rotateRadians(qreal angle, Qt::Axis axis = Qt::ZAxis); static bool squareToQuad(const QPolygonF &square, QTransform &result); static bool quadToSquare(const QPolygonF &quad, QTransform &result); static bool quadToQuad(const QPolygonF &one, const QPolygonF &two, QTransform &result); bool operator==(const QTransform &) const; bool operator!=(const QTransform &) const; QTransform &operator*=(const QTransform &) /__imatmul__/; QTransform operator*(const QTransform &o) const /__matmul__/; void reset(); void map(int x /Constrained/, int y /Constrained/, int *tx, int *ty) const; void map(qreal x, qreal y, qreal *tx, qreal *ty) const; QPoint map(const QPoint &p) const; QPointF map(const QPointF &p) const; QLine map(const QLine &l) const; QLineF map(const QLineF &l) const; QPolygonF map(const QPolygonF &a) const; QPolygon map(const QPolygon &a) const; QRegion map(const QRegion &r) const; QPainterPath map(const QPainterPath &p) const; QPolygon mapToPolygon(const QRect &r) const; QRect mapRect(const QRect &) const; QRectF mapRect(const QRectF &) const; bool isAffine() const; bool isIdentity() const; bool isInvertible() const; bool isScaling() const; bool isRotating() const; bool isTranslating() const; qreal determinant() const; qreal m11() const; qreal m12() const; qreal m13() const; qreal m21() const; qreal m22() const; qreal m23() const; qreal m31() const; qreal m32() const; qreal m33() const; qreal dx() const; qreal dy() const; static QTransform fromTranslate(qreal dx, qreal dy); static QTransform fromScale(qreal dx, qreal dy); QTransform &operator*=(qreal num); QTransform &operator/=(qreal div); QTransform &operator+=(qreal num); QTransform &operator-=(qreal num); %If (Qt_5_6_0 -) long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End }; QDataStream &operator<<(QDataStream &, const QTransform & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QTransform & /Constrained/) /ReleaseGIL/; QPoint operator*(const QPoint &p, const QTransform &m); QPointF operator*(const QPointF &p, const QTransform &m); QLineF operator*(const QLineF &l, const QTransform &m); QLine operator*(const QLine &l, const QTransform &m); QPolygon operator*(const QPolygon &a, const QTransform &m); QPolygonF operator*(const QPolygonF &a, const QTransform &m); QRegion operator*(const QRegion &r, const QTransform &m); QPainterPath operator*(const QPainterPath &p, const QTransform &m); QTransform operator*(const QTransform &a, qreal n); QTransform operator/(const QTransform &a, qreal n); QTransform operator+(const QTransform &a, qreal n); QTransform operator-(const QTransform &a, qreal n); bool qFuzzyCompare(const QTransform &t1, const QTransform &t2); PyQt5_gpl-5.10.1/sip/QtGui/qvalidator.sip0000644000076500000240000000774513245233151020224 0ustar philstaff00000000000000// qvalidator.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QValidator : QObject { %TypeHeaderCode #include %End public: explicit QValidator(QObject *parent /TransferThis/ = 0); virtual ~QValidator(); enum State { Invalid, Intermediate, Acceptable, }; virtual QValidator::State validate(QString & /In,Out/, int & /In,Out/) const = 0; virtual void fixup(QString & /In,Out/) const; void setLocale(const QLocale &locale); QLocale locale() const; signals: void changed(); private: QValidator(const QValidator &); }; class QIntValidator : QValidator { %TypeHeaderCode #include %End public: explicit QIntValidator(QObject *parent /TransferThis/ = 0); QIntValidator(int bottom, int top, QObject *parent /TransferThis/ = 0); virtual ~QIntValidator(); virtual QValidator::State validate(QString & /In,Out/, int & /In,Out/) const; virtual void fixup(QString &input /In,Out/) const; void setBottom(int); void setTop(int); virtual void setRange(int bottom, int top); int bottom() const; int top() const; private: QIntValidator(const QIntValidator &); }; class QDoubleValidator : QValidator { %TypeHeaderCode #include %End public: explicit QDoubleValidator(QObject *parent /TransferThis/ = 0); QDoubleValidator(double bottom, double top, int decimals, QObject *parent /TransferThis/ = 0); virtual ~QDoubleValidator(); virtual QValidator::State validate(QString & /In,Out/, int & /In,Out/) const; virtual void setRange(double minimum, double maximum, int decimals = 0); void setBottom(double); void setTop(double); void setDecimals(int); double bottom() const; double top() const; int decimals() const; enum Notation { StandardNotation, ScientificNotation, }; void setNotation(QDoubleValidator::Notation); QDoubleValidator::Notation notation() const; private: QDoubleValidator(const QDoubleValidator &); }; class QRegExpValidator : QValidator { %TypeHeaderCode #include %End public: explicit QRegExpValidator(QObject *parent /TransferThis/ = 0); QRegExpValidator(const QRegExp &rx, QObject *parent /TransferThis/ = 0); virtual ~QRegExpValidator(); virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; void setRegExp(const QRegExp &rx); const QRegExp ®Exp() const; private: QRegExpValidator(const QRegExpValidator &); }; %If (Qt_5_1_0 -) class QRegularExpressionValidator : QValidator { %TypeHeaderCode #include %End public: explicit QRegularExpressionValidator(QObject *parent /TransferThis/ = 0); QRegularExpressionValidator(const QRegularExpression &re, QObject *parent /TransferThis/ = 0); virtual ~QRegularExpressionValidator(); virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; QRegularExpression regularExpression() const; void setRegularExpression(const QRegularExpression &re); private: QRegularExpressionValidator(const QRegularExpressionValidator &); }; %End PyQt5_gpl-5.10.1/sip/QtGui/qvector2d.sip0000644000076500000240000000773413245233151017765 0ustar philstaff00000000000000// qvector2d.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QVector2D { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"dd", (double)sipCpp->x(), (double)sipCpp->y()); %End public: QVector2D(); QVector2D(float xpos, float ypos); explicit QVector2D(const QPoint &point); explicit QVector2D(const QPointF &point); explicit QVector2D(const QVector3D &vector); explicit QVector2D(const QVector4D &vector); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode PyObject *x = PyFloat_FromDouble(sipCpp->x()); PyObject *y = PyFloat_FromDouble(sipCpp->y()); if (x && y) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QVector2D(%R, %R)", x, y); #else sipRes = PyString_FromString("PyQt5.QtGui.QVector2D("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(x)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(y)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } Py_XDECREF(x); Py_XDECREF(y); %End float length() const; float lengthSquared() const; QVector2D normalized() const; void normalize(); static float dotProduct(const QVector2D &v1, const QVector2D &v2); QVector3D toVector3D() const; QVector4D toVector4D() const; bool isNull() const; float x() const; float y() const; void setX(float aX); void setY(float aY); QVector2D &operator+=(const QVector2D &vector); QVector2D &operator-=(const QVector2D &vector); QVector2D &operator*=(float factor); QVector2D &operator*=(const QVector2D &vector); QVector2D &operator/=(float divisor); %If (Qt_5_5_0 -) QVector2D &operator/=(const QVector2D &vector); %End QPoint toPoint() const; QPointF toPointF() const; %If (Qt_5_1_0 -) float distanceToPoint(const QVector2D &point) const; %End %If (Qt_5_1_0 -) float distanceToLine(const QVector2D &point, const QVector2D &direction) const; %End %If (Qt_5_2_0 -) float operator[](int i) const; %End }; bool operator==(const QVector2D &v1, const QVector2D &v2); bool operator!=(const QVector2D &v1, const QVector2D &v2); const QVector2D operator+(const QVector2D &v1, const QVector2D &v2); const QVector2D operator-(const QVector2D &v1, const QVector2D &v2); const QVector2D operator*(float factor, const QVector2D &vector); const QVector2D operator*(const QVector2D &vector, float factor); const QVector2D operator*(const QVector2D &v1, const QVector2D &v2); const QVector2D operator-(const QVector2D &vector); const QVector2D operator/(const QVector2D &vector, float divisor); %If (Qt_5_5_0 -) const QVector2D operator/(const QVector2D &vector, const QVector2D &divisor); %End bool qFuzzyCompare(const QVector2D &v1, const QVector2D &v2); QDataStream &operator<<(QDataStream &, const QVector2D & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QVector2D & /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtGui/qvector3d.sip0000644000076500000240000001177213245233151017763 0ustar philstaff00000000000000// qvector3d.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QVector3D { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"ddd", (double)sipCpp->x(), (double)sipCpp->y(), (double)sipCpp->z()); %End public: QVector3D(); QVector3D(float xpos, float ypos, float zpos); explicit QVector3D(const QPoint &point); explicit QVector3D(const QPointF &point); QVector3D(const QVector2D &vector); QVector3D(const QVector2D &vector, float zpos); explicit QVector3D(const QVector4D &vector); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode PyObject *x = PyFloat_FromDouble(sipCpp->x()); PyObject *y = PyFloat_FromDouble(sipCpp->y()); PyObject *z = PyFloat_FromDouble(sipCpp->z()); if (x && y && z) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QVector3D(%R, %R, %R)", x, y, z); #else sipRes = PyString_FromString("PyQt5.QtGui.QVector3D("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(x)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(y)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(z)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } Py_XDECREF(x); Py_XDECREF(y); Py_XDECREF(z); %End float length() const; float lengthSquared() const; QVector3D normalized() const; void normalize(); static float dotProduct(const QVector3D &v1, const QVector3D &v2); static QVector3D crossProduct(const QVector3D &v1, const QVector3D &v2); static QVector3D normal(const QVector3D &v1, const QVector3D &v2); static QVector3D normal(const QVector3D &v1, const QVector3D &v2, const QVector3D &v3); float distanceToPlane(const QVector3D &plane, const QVector3D &normal) const; float distanceToPlane(const QVector3D &plane1, const QVector3D &plane2, const QVector3D &plane3) const; float distanceToLine(const QVector3D &point, const QVector3D &direction) const; QVector2D toVector2D() const; QVector4D toVector4D() const; bool isNull() const; float x() const; float y() const; float z() const; void setX(float aX); void setY(float aY); void setZ(float aZ); QVector3D &operator+=(const QVector3D &vector); QVector3D &operator-=(const QVector3D &vector); QVector3D &operator*=(float factor); QVector3D &operator*=(const QVector3D &vector); QVector3D &operator/=(float divisor); %If (Qt_5_5_0 -) QVector3D &operator/=(const QVector3D &vector); %End QPoint toPoint() const; QPointF toPointF() const; %If (Qt_5_1_0 -) float distanceToPoint(const QVector3D &point) const; %End %If (Qt_5_2_0 -) float operator[](int i) const; %End %If (Qt_5_5_0 -) QVector3D project(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const; %End %If (Qt_5_5_0 -) QVector3D unproject(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const; %End }; bool operator==(const QVector3D &v1, const QVector3D &v2); bool operator!=(const QVector3D &v1, const QVector3D &v2); const QVector3D operator+(const QVector3D &v1, const QVector3D &v2); const QVector3D operator-(const QVector3D &v1, const QVector3D &v2); const QVector3D operator*(float factor, const QVector3D &vector); const QVector3D operator*(const QVector3D &vector, float factor); const QVector3D operator*(const QVector3D &v1, const QVector3D &v2); const QVector3D operator-(const QVector3D &vector); const QVector3D operator/(const QVector3D &vector, float divisor); %If (Qt_5_5_0 -) const QVector3D operator/(const QVector3D &vector, const QVector3D &divisor); %End bool qFuzzyCompare(const QVector3D &v1, const QVector3D &v2); QDataStream &operator<<(QDataStream &, const QVector3D & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QVector3D & /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtGui/qvector4d.sip0000644000076500000240000001112313245233151017752 0ustar philstaff00000000000000// qvector4d.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QVector4D { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue((char *)"dddd", (double)sipCpp->x(), (double)sipCpp->y(), (double)sipCpp->z(), (double)sipCpp->w()); %End public: QVector4D(); QVector4D(float xpos, float ypos, float zpos, float wpos); explicit QVector4D(const QPoint &point); explicit QVector4D(const QPointF &point); QVector4D(const QVector2D &vector); QVector4D(const QVector2D &vector, float zpos, float wpos); QVector4D(const QVector3D &vector); QVector4D(const QVector3D &vector, float wpos); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode PyObject *x = PyFloat_FromDouble(sipCpp->x()); PyObject *y = PyFloat_FromDouble(sipCpp->y()); PyObject *z = PyFloat_FromDouble(sipCpp->z()); PyObject *w = PyFloat_FromDouble(sipCpp->w()); if (x && y && z && w) { #if PY_MAJOR_VERSION >= 3 sipRes = PyUnicode_FromFormat("PyQt5.QtGui.QVector4D(%R, %R, %R, %R)", x, y, z, w); #else sipRes = PyString_FromString("PyQt5.QtGui.QVector4D("); PyString_ConcatAndDel(&sipRes, PyObject_Repr(x)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(y)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(z)); PyString_ConcatAndDel(&sipRes, PyString_FromString(", ")); PyString_ConcatAndDel(&sipRes, PyObject_Repr(w)); PyString_ConcatAndDel(&sipRes, PyString_FromString(")")); #endif } Py_XDECREF(x); Py_XDECREF(y); Py_XDECREF(z); Py_XDECREF(w); %End float length() const; float lengthSquared() const; QVector4D normalized() const; void normalize(); static float dotProduct(const QVector4D &v1, const QVector4D &v2); QVector2D toVector2D() const; QVector2D toVector2DAffine() const; QVector3D toVector3D() const; QVector3D toVector3DAffine() const; bool isNull() const; float x() const; float y() const; float z() const; float w() const; void setX(float aX); void setY(float aY); void setZ(float aZ); void setW(float aW); QVector4D &operator+=(const QVector4D &vector); QVector4D &operator-=(const QVector4D &vector); QVector4D &operator*=(float factor); QVector4D &operator*=(const QVector4D &vector); QVector4D &operator/=(float divisor); %If (Qt_5_5_0 -) QVector4D &operator/=(const QVector4D &vector); %End QPoint toPoint() const; QPointF toPointF() const; %If (Qt_5_2_0 -) float operator[](int i) const; %End }; bool operator==(const QVector4D &v1, const QVector4D &v2); bool operator!=(const QVector4D &v1, const QVector4D &v2); const QVector4D operator+(const QVector4D &v1, const QVector4D &v2); const QVector4D operator-(const QVector4D &v1, const QVector4D &v2); const QVector4D operator*(float factor, const QVector4D &vector); const QVector4D operator*(const QVector4D &vector, float factor); const QVector4D operator*(const QVector4D &v1, const QVector4D &v2); const QVector4D operator-(const QVector4D &vector); const QVector4D operator/(const QVector4D &vector, float divisor); %If (Qt_5_5_0 -) const QVector4D operator/(const QVector4D &vector, const QVector4D &divisor); %End bool qFuzzyCompare(const QVector4D &v1, const QVector4D &v2); QDataStream &operator<<(QDataStream &, const QVector4D & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QVector4D & /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtGui/qwindow.sip0000644000076500000240000001616013245233151017535 0ustar philstaff00000000000000// qwindow.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWindow : QObject, QSurface { %TypeHeaderCode #include %End public: explicit QWindow(QScreen *screen = 0); explicit QWindow(QWindow *parent /TransferThis/); virtual ~QWindow(); void setSurfaceType(QSurface::SurfaceType surfaceType); virtual QSurface::SurfaceType surfaceType() const; bool isVisible() const; void create(); WId winId() const; QWindow *parent() const; void setParent(QWindow *parent /Transfer/); bool isTopLevel() const; bool isModal() const; Qt::WindowModality modality() const; void setModality(Qt::WindowModality modality); void setFormat(const QSurfaceFormat &format); virtual QSurfaceFormat format() const; QSurfaceFormat requestedFormat() const; void setFlags(Qt::WindowFlags flags); Qt::WindowFlags flags() const; Qt::WindowType type() const; QString title() const; void setOpacity(qreal level); public slots: void requestActivate(); public: bool isActive() const; void reportContentOrientationChange(Qt::ScreenOrientation orientation); Qt::ScreenOrientation contentOrientation() const; qreal devicePixelRatio() const; Qt::WindowState windowState() const; void setWindowState(Qt::WindowState state); void setTransientParent(QWindow *parent); QWindow *transientParent() const; enum AncestorMode { ExcludeTransients, IncludeTransients, }; bool isAncestorOf(const QWindow *child, QWindow::AncestorMode mode = QWindow::IncludeTransients) const; bool isExposed() const; int minimumWidth() const; int minimumHeight() const; int maximumWidth() const; int maximumHeight() const; QSize minimumSize() const; QSize maximumSize() const; QSize baseSize() const; QSize sizeIncrement() const; void setMinimumSize(const QSize &size); void setMaximumSize(const QSize &size); void setBaseSize(const QSize &size); void setSizeIncrement(const QSize &size); void setGeometry(int posx, int posy, int w, int h); void setGeometry(const QRect &rect); QRect geometry() const; QMargins frameMargins() const; QRect frameGeometry() const; QPoint framePosition() const; void setFramePosition(const QPoint &point); int width() const; int height() const; int x() const; int y() const; virtual QSize size() const; QPoint position() const; void setPosition(const QPoint &pt); void setPosition(int posx, int posy); void resize(const QSize &newSize); void resize(int w, int h); void setFilePath(const QString &filePath); QString filePath() const; void setIcon(const QIcon &icon); QIcon icon() const; void destroy(); bool setKeyboardGrabEnabled(bool grab); bool setMouseGrabEnabled(bool grab); QScreen *screen() const; void setScreen(QScreen *screen); virtual QObject *focusObject() const; QPoint mapToGlobal(const QPoint &pos) const; QPoint mapFromGlobal(const QPoint &pos) const; QCursor cursor() const; void setCursor(const QCursor &); void unsetCursor(); public slots: void setVisible(bool visible); void show() /ReleaseGIL/; void hide(); void showMinimized() /ReleaseGIL/; void showMaximized() /ReleaseGIL/; void showFullScreen() /ReleaseGIL/; void showNormal() /ReleaseGIL/; bool close(); void raise() /PyName=raise_/; void lower(); void setTitle(const QString &); void setX(int arg); void setY(int arg); void setWidth(int arg); void setHeight(int arg); void setMinimumWidth(int w); void setMinimumHeight(int h); void setMaximumWidth(int w); void setMaximumHeight(int h); %If (Qt_5_1_0 -) void alert(int msec); %End %If (Qt_5_5_0 -) void requestUpdate(); %End signals: void screenChanged(QScreen *screen); void modalityChanged(Qt::WindowModality modality); void windowStateChanged(Qt::WindowState windowState); void xChanged(int arg); void yChanged(int arg); void widthChanged(int arg); void heightChanged(int arg); void minimumWidthChanged(int arg); void minimumHeightChanged(int arg); void maximumWidthChanged(int arg); void maximumHeightChanged(int arg); void visibleChanged(bool arg); void contentOrientationChanged(Qt::ScreenOrientation orientation); void focusObjectChanged(QObject *object); %If (Qt_5_3_0 -) void windowTitleChanged(const QString &title); %End protected: virtual void exposeEvent(QExposeEvent *); virtual void resizeEvent(QResizeEvent *); virtual void moveEvent(QMoveEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void showEvent(QShowEvent *); virtual void hideEvent(QHideEvent *); virtual bool event(QEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void wheelEvent(QWheelEvent *); virtual void touchEvent(QTouchEvent *); virtual void tabletEvent(QTabletEvent *); public: %If (Qt_5_1_0 -) enum Visibility { Hidden, AutomaticVisibility, Windowed, Minimized, Maximized, FullScreen, }; %End %If (Qt_5_1_0 -) QWindow::Visibility visibility() const; %End %If (Qt_5_1_0 -) void setVisibility(QWindow::Visibility v); %End %If (Qt_5_1_0 -) qreal opacity() const; %End %If (Qt_5_1_0 -) void setMask(const QRegion ®ion); %End %If (Qt_5_1_0 -) QRegion mask() const; %End %If (Qt_5_1_0 -) static QWindow *fromWinId(WId id); %End signals: %If (Qt_5_1_0 -) void visibilityChanged(QWindow::Visibility visibility); %End %If (Qt_5_1_0 -) void activeChanged(); %End %If (Qt_5_1_0 -) void opacityChanged(qreal opacity); %End public: %If (Qt_5_9_0 -) QWindow *parent(QWindow::AncestorMode mode) const; %End %If (Qt_5_9_0 -) void setFlag(Qt::WindowType, bool on = true); %End %If (Qt_5_10_0 -) Qt::WindowStates windowStates() const; %End %If (Qt_5_10_0 -) void setWindowStates(Qt::WindowStates states); %End private: QWindow(const QWindow &); }; PyQt5_gpl-5.10.1/sip/QtGui/qwindowdefs.sip0000644000076500000240000000176113245233151020400 0ustar philstaff00000000000000// qwindowdefs.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. typedef QList QWindowList; typedef quintptr WId; PyQt5_gpl-5.10.1/sip/QtHelp/0000755000076500000240000000000013245233151015470 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtHelp/qhelpcontentwidget.sip0000644000076500000240000000445413245233151022124 0ustar philstaff00000000000000// qhelpcontentwidget.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpContentItem /NoDefaultCtors/ { %TypeHeaderCode #include %End public: ~QHelpContentItem(); QHelpContentItem *child(int row) const; int childCount() const; QString title() const; QUrl url() const; int row() const; QHelpContentItem *parent() const; int childPosition(QHelpContentItem *child) const; }; class QHelpContentModel : QAbstractItemModel /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QHelpContentModel(); void createContents(const QString &customFilterName); QHelpContentItem *contentItemAt(const QModelIndex &index) const; virtual QVariant data(const QModelIndex &index, int role) const; virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &index) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; bool isCreatingContents() const; signals: void contentsCreationStarted(); void contentsCreated(); }; class QHelpContentWidget : QTreeView { %TypeHeaderCode #include %End public: QModelIndex indexOf(const QUrl &link); signals: void linkActivated(const QUrl &link); private: QHelpContentWidget(); }; PyQt5_gpl-5.10.1/sip/QtHelp/qhelpengine.sip0000644000076500000240000000252113245233151020504 0ustar philstaff00000000000000// qhelpengine.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpEngine : QHelpEngineCore { %TypeHeaderCode #include %End public: QHelpEngine(const QString &collectionFile, QObject *parent /TransferThis/ = 0); virtual ~QHelpEngine(); QHelpContentModel *contentModel() const; QHelpIndexModel *indexModel() const; QHelpContentWidget *contentWidget(); QHelpIndexWidget *indexWidget(); QHelpSearchEngine *searchEngine(); }; PyQt5_gpl-5.10.1/sip/QtHelp/qhelpenginecore.sip0000644000076500000240000001021713245233151021356 0ustar philstaff00000000000000// qhelpenginecore.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpEngineCore : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QHelpIndexModel, &sipType_QHelpIndexModel, -1, 1}, {sipName_QHelpSearchEngine, &sipType_QHelpSearchEngine, -1, 2}, {sipName_QHelpContentWidget, &sipType_QHelpContentWidget, -1, 3}, {sipName_QHelpEngineCore, &sipType_QHelpEngineCore, 8, 4}, {sipName_QHelpIndexWidget, &sipType_QHelpIndexWidget, -1, 5}, {sipName_QHelpContentModel, &sipType_QHelpContentModel, -1, 6}, {sipName_QHelpSearchQueryWidget, &sipType_QHelpSearchQueryWidget, -1, 7}, {sipName_QHelpSearchResultWidget, &sipType_QHelpSearchResultWidget, -1, -1}, {sipName_QHelpEngine, &sipType_QHelpEngine, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QHelpEngineCore(const QString &collectionFile, QObject *parent /TransferThis/ = 0); virtual ~QHelpEngineCore(); bool setupData(); QString collectionFile() const; void setCollectionFile(const QString &fileName); bool copyCollectionFile(const QString &fileName); static QString namespaceName(const QString &documentationFileName); bool registerDocumentation(const QString &documentationFileName); bool unregisterDocumentation(const QString &namespaceName); QString documentationFileName(const QString &namespaceName); QStringList customFilters() const; bool removeCustomFilter(const QString &filterName); bool addCustomFilter(const QString &filterName, const QStringList &attributes); QStringList filterAttributes() const; QStringList filterAttributes(const QString &filterName) const; QString currentFilter() const; void setCurrentFilter(const QString &filterName); QStringList registeredDocumentations() const; QList filterAttributeSets(const QString &namespaceName) const; QList files(const QString namespaceName, const QStringList &filterAttributes, const QString &extensionFilter = QString()); QUrl findFile(const QUrl &url) const; QByteArray fileData(const QUrl &url) const; QMap linksForIdentifier(const QString &id) const; %If (Qt_5_9_0 -) QMap linksForKeyword(const QString &keyword) const; %End bool removeCustomValue(const QString &key); QVariant customValue(const QString &key, const QVariant &defaultValue = QVariant()) const; bool setCustomValue(const QString &key, const QVariant &value); static QVariant metaData(const QString &documentationFileName, const QString &name); QString error() const; bool autoSaveFilter() const; void setAutoSaveFilter(bool save); signals: void setupStarted(); void setupFinished(); void currentFilterChanged(const QString &newFilter); void warning(const QString &msg); %If (Qt_5_4_0 -) void readersAboutToBeInvalidated(); %End }; PyQt5_gpl-5.10.1/sip/QtHelp/qhelpindexwidget.sip0000644000076500000240000000347013245233151021556 0ustar philstaff00000000000000// qhelpindexwidget.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpIndexModel : QStringListModel /NoDefaultCtors/ { %TypeHeaderCode #include %End public: void createIndex(const QString &customFilterName); QModelIndex filter(const QString &filter, const QString &wildcard = QString()); QMap linksForKeyword(const QString &keyword) const; bool isCreatingIndex() const; signals: void indexCreationStarted(); void indexCreated(); private: virtual ~QHelpIndexModel(); }; class QHelpIndexWidget : QListView { %TypeHeaderCode #include %End signals: void linkActivated(const QUrl &link, const QString &keyword); void linksActivated(const QMap &links, const QString &keyword); public slots: void filterIndices(const QString &filter, const QString &wildcard = QString()); void activateCurrentItem(); private: QHelpIndexWidget(); }; PyQt5_gpl-5.10.1/sip/QtHelp/qhelpsearchengine.sip0000644000076500000240000000522413245233151021675 0ustar philstaff00000000000000// qhelpsearchengine.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpSearchQuery { %TypeHeaderCode #include %End public: enum FieldName { DEFAULT, FUZZY, WITHOUT, PHRASE, ALL, ATLEAST, }; QHelpSearchQuery(); QHelpSearchQuery(QHelpSearchQuery::FieldName field, const QStringList &wordList); }; class QHelpSearchEngine : QObject { %TypeHeaderCode #include %End public: QHelpSearchEngine(QHelpEngineCore *helpEngine, QObject *parent /TransferThis/ = 0); virtual ~QHelpSearchEngine(); QList query() const; QHelpSearchQueryWidget *queryWidget(); QHelpSearchResultWidget *resultWidget(); int hitCount() const; QList> hits(int start, int end) const; public slots: void reindexDocumentation(); void cancelIndexing(); void search(const QList &queryList); void cancelSearching(); signals: void indexingStarted(); void indexingFinished(); void searchingStarted(); void searchingFinished(int hits); public: %If (Qt_5_9_0 -) int searchResultCount() const; %End %If (Qt_5_9_0 -) QVector searchResults(int start, int end) const; %End %If (Qt_5_9_0 -) QString searchInput() const; %End public slots: %If (Qt_5_9_0 -) void search(const QString &searchInput); %End }; %If (Qt_5_9_0 -) class QHelpSearchResult { %TypeHeaderCode #include %End public: QHelpSearchResult(); QHelpSearchResult(const QHelpSearchResult &other); QHelpSearchResult(const QUrl &url, const QString &title, const QString &snippet); ~QHelpSearchResult(); QString title() const; QUrl url() const; QString snippet() const; }; %End PyQt5_gpl-5.10.1/sip/QtHelp/qhelpsearchquerywidget.sip0000644000076500000240000000347413245233151023006 0ustar philstaff00000000000000// qhelpsearchquerywidget.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpSearchQueryWidget : QWidget { %TypeHeaderCode #include %End public: %If (Qt_5_6_1 -) explicit QHelpSearchQueryWidget(QWidget *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QHelpSearchQueryWidget(QWidget *parent /TransferThis/ = 0); %End virtual ~QHelpSearchQueryWidget(); QList query() const; void setQuery(const QList &queryList); void expandExtendedSearch(); void collapseExtendedSearch(); signals: void search(); private: virtual void focusInEvent(QFocusEvent *focusEvent); virtual void changeEvent(QEvent *event); public: %If (Qt_5_3_0 -) bool isCompactMode() const; %End %If (Qt_5_3_0 -) void setCompactMode(bool on); %End %If (Qt_5_9_0 -) QString searchInput() const; %End %If (Qt_5_9_0 -) void setSearchInput(const QString &searchInput); %End }; PyQt5_gpl-5.10.1/sip/QtHelp/qhelpsearchresultwidget.sip0000644000076500000240000000230613245233151023150 0ustar philstaff00000000000000// qhelpsearchresultwidget.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpSearchResultWidget : QWidget /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QHelpSearchResultWidget(); QUrl linkAt(const QPoint &point); signals: void requestShowLink(const QUrl &url); }; PyQt5_gpl-5.10.1/sip/QtHelp/QtHelpmod.sip0000644000076500000240000000421213245233151020101 0ustar philstaff00000000000000// QtHelpmod.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtHelp, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qhelpcontentwidget.sip %Include qhelpengine.sip %Include qhelpenginecore.sip %Include qhelpindexwidget.sip %Include qhelpsearchengine.sip %Include qhelpsearchquerywidget.sip %Include qhelpsearchresultwidget.sip PyQt5_gpl-5.10.1/sip/QtLocation/0000755000076500000240000000000013245233151016350 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtLocation/qgeocodereply.sip0000644000076500000240000000452013245233151021730 0ustar philstaff00000000000000// qgeocodereply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoCodeReply : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, EngineNotSetError, CommunicationError, ParseError, UnsupportedOptionError, CombinationError, UnknownError, }; QGeoCodeReply(QGeoCodeReply::Error error, const QString &errorString, QObject *parent /TransferThis/ = 0); virtual ~QGeoCodeReply(); bool isFinished() const; QGeoCodeReply::Error error() const; QString errorString() const; QGeoShape viewport() const; QList locations() const; int limit() const; int offset() const; virtual void abort(); signals: %If (Qt_5_9_0 -) void aborted(); %End void finished(); void error(QGeoCodeReply::Error error, const QString &errorString = QString()); protected: %If (Qt_5_6_1 -) explicit QGeoCodeReply(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QGeoCodeReply(QObject *parent /TransferThis/ = 0); %End void setError(QGeoCodeReply::Error error, const QString &errorString); void setFinished(bool finished); void setViewport(const QGeoShape &viewport); void addLocation(const QGeoLocation &location); void setLocations(const QList &locations); void setLimit(int limit); void setOffset(int offset); private: QGeoCodeReply(const QGeoCodeReply &); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qgeocodingmanager.sip0000644000076500000240000000344113245233151022541 0ustar philstaff00000000000000// qgeocodingmanager.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoCodingManager : QObject { %TypeHeaderCode #include %End public: virtual ~QGeoCodingManager(); QString managerName() const; int managerVersion() const; QGeoCodeReply *geocode(const QGeoAddress &address, const QGeoShape &bounds = QGeoShape()) /Factory/; QGeoCodeReply *geocode(const QString &searchString, int limit = -1, int offset = 0, const QGeoShape &bounds = QGeoShape()) /Factory/; QGeoCodeReply *reverseGeocode(const QGeoCoordinate &coordinate, const QGeoShape &bounds = QGeoShape()) /Factory/; void setLocale(const QLocale &locale); QLocale locale() const; signals: void finished(QGeoCodeReply *reply); void error(QGeoCodeReply *reply, QGeoCodeReply::Error error, QString errorString = QString()); private: QGeoCodingManager(const QGeoCodingManager &); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qgeocodingmanagerengine.sip0000644000076500000240000000360513245233151023731 0ustar philstaff00000000000000// qgeocodingmanagerengine.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoCodingManagerEngine : QObject { %TypeHeaderCode #include %End public: QGeoCodingManagerEngine(const QVariantMap ¶meters, QObject *parent /TransferThis/ = 0); virtual ~QGeoCodingManagerEngine(); QString managerName() const; int managerVersion() const; virtual QGeoCodeReply *geocode(const QGeoAddress &address, const QGeoShape &bounds) /Factory/; virtual QGeoCodeReply *geocode(const QString &address, int limit, int offset, const QGeoShape &bounds) /Factory/; virtual QGeoCodeReply *reverseGeocode(const QGeoCoordinate &coordinate, const QGeoShape &bounds) /Factory/; void setLocale(const QLocale &locale); QLocale locale() const; signals: void finished(QGeoCodeReply *reply); void error(QGeoCodeReply *reply, QGeoCodeReply::Error error, QString errorString = QString()); private: QGeoCodingManagerEngine(const QGeoCodingManagerEngine &); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qgeomaneuver.sip0000644000076500000240000000427213245233151021570 0ustar philstaff00000000000000// qgeomaneuver.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoManeuver { %TypeHeaderCode #include %End public: enum InstructionDirection { NoDirection, DirectionForward, DirectionBearRight, DirectionLightRight, DirectionRight, DirectionHardRight, DirectionUTurnRight, DirectionUTurnLeft, DirectionHardLeft, DirectionLeft, DirectionLightLeft, DirectionBearLeft, }; QGeoManeuver(); QGeoManeuver(const QGeoManeuver &other); ~QGeoManeuver(); bool operator==(const QGeoManeuver &other) const; bool operator!=(const QGeoManeuver &other) const; bool isValid() const; void setPosition(const QGeoCoordinate &position); QGeoCoordinate position() const; void setInstructionText(const QString &instructionText); QString instructionText() const; void setDirection(QGeoManeuver::InstructionDirection direction); QGeoManeuver::InstructionDirection direction() const; void setTimeToNextInstruction(int secs); int timeToNextInstruction() const; void setDistanceToNextInstruction(qreal distance); qreal distanceToNextInstruction() const; void setWaypoint(const QGeoCoordinate &coordinate); QGeoCoordinate waypoint() const; }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qgeoroute.sip0000644000076500000240000000360013245233151021076 0ustar philstaff00000000000000// qgeoroute.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoRoute { %TypeHeaderCode #include %End public: QGeoRoute(); QGeoRoute(const QGeoRoute &other); ~QGeoRoute(); bool operator==(const QGeoRoute &other) const; bool operator!=(const QGeoRoute &other) const; void setRouteId(const QString &id); QString routeId() const; void setRequest(const QGeoRouteRequest &request); QGeoRouteRequest request() const; void setBounds(const QGeoRectangle &bounds); QGeoRectangle bounds() const; void setFirstRouteSegment(const QGeoRouteSegment &routeSegment); QGeoRouteSegment firstRouteSegment() const; void setTravelTime(int secs); int travelTime() const; void setDistance(qreal distance); qreal distance() const; void setTravelMode(QGeoRouteRequest::TravelMode mode); QGeoRouteRequest::TravelMode travelMode() const; void setPath(const QList &path); QList path() const; }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qgeoroutereply.sip0000644000076500000240000000412013245233151022150 0ustar philstaff00000000000000// qgeoroutereply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoRouteReply : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, EngineNotSetError, CommunicationError, ParseError, UnsupportedOptionError, UnknownError, }; QGeoRouteReply(QGeoRouteReply::Error error, const QString &errorString, QObject *parent /TransferThis/ = 0); virtual ~QGeoRouteReply(); bool isFinished() const; QGeoRouteReply::Error error() const; QString errorString() const; QGeoRouteRequest request() const; QList routes() const; virtual void abort(); signals: %If (Qt_5_9_0 -) void aborted(); %End void finished(); void error(QGeoRouteReply::Error error, const QString &errorString = QString()); protected: QGeoRouteReply(const QGeoRouteRequest &request, QObject *parent /TransferThis/ = 0); void setError(QGeoRouteReply::Error error, const QString &errorString); void setFinished(bool finished); void setRoutes(const QList &routes); void addRoutes(const QList &routes); private: QGeoRouteReply(const QGeoRouteReply &); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qgeorouterequest.sip0000644000076500000240000001137213245233151022514 0ustar philstaff00000000000000// qgeorouterequest.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoRouteRequest { %TypeHeaderCode #include %End public: enum TravelMode { CarTravel, PedestrianTravel, BicycleTravel, PublicTransitTravel, TruckTravel, }; typedef QFlags TravelModes; enum FeatureType { NoFeature, TollFeature, HighwayFeature, PublicTransitFeature, FerryFeature, TunnelFeature, DirtRoadFeature, ParksFeature, MotorPoolLaneFeature, %If (Qt_5_10_0 -) TrafficFeature, %End }; typedef QFlags FeatureTypes; enum FeatureWeight { NeutralFeatureWeight, PreferFeatureWeight, RequireFeatureWeight, AvoidFeatureWeight, DisallowFeatureWeight, }; typedef QFlags FeatureWeights; enum RouteOptimization { ShortestRoute, FastestRoute, MostEconomicRoute, MostScenicRoute, }; typedef QFlags RouteOptimizations; enum SegmentDetail { NoSegmentData, BasicSegmentData, }; typedef QFlags SegmentDetails; enum ManeuverDetail { NoManeuvers, BasicManeuvers, }; typedef QFlags ManeuverDetails; explicit QGeoRouteRequest(const QList &waypoints = QList()); QGeoRouteRequest(const QGeoCoordinate &origin, const QGeoCoordinate &destination); QGeoRouteRequest(const QGeoRouteRequest &other); ~QGeoRouteRequest(); bool operator==(const QGeoRouteRequest &other) const; bool operator!=(const QGeoRouteRequest &other) const; void setWaypoints(const QList &waypoints); QList waypoints() const; void setExcludeAreas(const QList &areas); QList excludeAreas() const; void setNumberAlternativeRoutes(int alternatives); int numberAlternativeRoutes() const; void setTravelModes(QGeoRouteRequest::TravelModes travelModes); QGeoRouteRequest::TravelModes travelModes() const; void setFeatureWeight(QGeoRouteRequest::FeatureType featureType, QGeoRouteRequest::FeatureWeight featureWeight); QGeoRouteRequest::FeatureWeight featureWeight(QGeoRouteRequest::FeatureType featureType) const; QList featureTypes() const; void setRouteOptimization(QGeoRouteRequest::RouteOptimizations optimization); QGeoRouteRequest::RouteOptimizations routeOptimization() const; void setSegmentDetail(QGeoRouteRequest::SegmentDetail segmentDetail); QGeoRouteRequest::SegmentDetail segmentDetail() const; void setManeuverDetail(QGeoRouteRequest::ManeuverDetail maneuverDetail); QGeoRouteRequest::ManeuverDetail maneuverDetail() const; }; %End %If (Qt_5_5_0 -) QFlags operator|(QGeoRouteRequest::TravelMode f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QGeoRouteRequest::FeatureType f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QGeoRouteRequest::FeatureWeight f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QGeoRouteRequest::RouteOptimization f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QGeoRouteRequest::SegmentDetail f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QGeoRouteRequest::ManeuverDetail f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtLocation/qgeoroutesegment.sip0000644000076500000240000000331213245233151022461 0ustar philstaff00000000000000// qgeoroutesegment.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoRouteSegment { %TypeHeaderCode #include %End public: QGeoRouteSegment(); QGeoRouteSegment(const QGeoRouteSegment &other); ~QGeoRouteSegment(); bool operator==(const QGeoRouteSegment &other) const; bool operator!=(const QGeoRouteSegment &other) const; bool isValid() const; void setNextRouteSegment(const QGeoRouteSegment &routeSegment); QGeoRouteSegment nextRouteSegment() const; void setTravelTime(int secs); int travelTime() const; void setDistance(qreal distance); qreal distance() const; void setPath(const QList &path); QList path() const; void setManeuver(const QGeoManeuver &maneuver); QGeoManeuver maneuver() const; }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qgeoroutingmanager.sip0000644000076500000240000000423013245233151022762 0ustar philstaff00000000000000// qgeoroutingmanager.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoRoutingManager : QObject { %TypeHeaderCode #include %End public: virtual ~QGeoRoutingManager(); QString managerName() const; int managerVersion() const; QGeoRouteReply *calculateRoute(const QGeoRouteRequest &request) /Factory/; QGeoRouteReply *updateRoute(const QGeoRoute &route, const QGeoCoordinate &position) /TransferThis/; QGeoRouteRequest::TravelModes supportedTravelModes() const; QGeoRouteRequest::FeatureTypes supportedFeatureTypes() const; QGeoRouteRequest::FeatureWeights supportedFeatureWeights() const; QGeoRouteRequest::RouteOptimizations supportedRouteOptimizations() const; QGeoRouteRequest::SegmentDetails supportedSegmentDetails() const; QGeoRouteRequest::ManeuverDetails supportedManeuverDetails() const; void setLocale(const QLocale &locale); QLocale locale() const; void setMeasurementSystem(QLocale::MeasurementSystem system); QLocale::MeasurementSystem measurementSystem() const; signals: void finished(QGeoRouteReply *reply); void error(QGeoRouteReply *reply, QGeoRouteReply::Error error, QString errorString = QString()); private: QGeoRoutingManager(const QGeoRoutingManager &); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qgeoroutingmanagerengine.sip0000644000076500000240000000546713245233151024165 0ustar philstaff00000000000000// qgeoroutingmanagerengine.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoRoutingManagerEngine : QObject { %TypeHeaderCode #include %End public: QGeoRoutingManagerEngine(const QVariantMap ¶meters, QObject *parent /TransferThis/ = 0); virtual ~QGeoRoutingManagerEngine(); QString managerName() const; int managerVersion() const; virtual QGeoRouteReply *calculateRoute(const QGeoRouteRequest &request) = 0 /Factory/; virtual QGeoRouteReply *updateRoute(const QGeoRoute &route, const QGeoCoordinate &position) /Factory/; QGeoRouteRequest::TravelModes supportedTravelModes() const; QGeoRouteRequest::FeatureTypes supportedFeatureTypes() const; QGeoRouteRequest::FeatureWeights supportedFeatureWeights() const; QGeoRouteRequest::RouteOptimizations supportedRouteOptimizations() const; QGeoRouteRequest::SegmentDetails supportedSegmentDetails() const; QGeoRouteRequest::ManeuverDetails supportedManeuverDetails() const; void setLocale(const QLocale &locale); QLocale locale() const; void setMeasurementSystem(QLocale::MeasurementSystem system); QLocale::MeasurementSystem measurementSystem() const; signals: void finished(QGeoRouteReply *reply); void error(QGeoRouteReply *reply, QGeoRouteReply::Error error, QString errorString = QString()); protected: void setSupportedTravelModes(QGeoRouteRequest::TravelModes travelModes); void setSupportedFeatureTypes(QGeoRouteRequest::FeatureTypes featureTypes); void setSupportedFeatureWeights(QGeoRouteRequest::FeatureWeights featureWeights); void setSupportedRouteOptimizations(QGeoRouteRequest::RouteOptimizations optimizations); void setSupportedSegmentDetails(QGeoRouteRequest::SegmentDetails segmentDetails); void setSupportedManeuverDetails(QGeoRouteRequest::ManeuverDetails maneuverDetails); private: QGeoRoutingManagerEngine(const QGeoRoutingManagerEngine &); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qgeoserviceprovider.sip0000644000076500000240000001336713245233151023166 0ustar philstaff00000000000000// qgeoserviceprovider.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QGeoServiceProvider : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QGeoCodingManager, &sipType_QGeoCodingManager, -1, 1}, {sipName_QGeoRoutingManagerEngine, &sipType_QGeoRoutingManagerEngine, -1, 2}, {sipName_QGeoCodeReply, &sipType_QGeoCodeReply, -1, 3}, {sipName_QPlaceReply, &sipType_QPlaceReply, 10, 4}, {sipName_QPlaceManagerEngine, &sipType_QPlaceManagerEngine, -1, 5}, {sipName_QGeoRoutingManager, &sipType_QGeoRoutingManager, -1, 6}, {sipName_QGeoCodingManagerEngine, &sipType_QGeoCodingManagerEngine, -1, 7}, {sipName_QGeoServiceProvider, &sipType_QGeoServiceProvider, -1, 8}, {sipName_QGeoRouteReply, &sipType_QGeoRouteReply, -1, 9}, {sipName_QPlaceManager, &sipType_QPlaceManager, -1, -1}, {sipName_QPlaceSearchSuggestionReply, &sipType_QPlaceSearchSuggestionReply, -1, 11}, {sipName_QPlaceMatchReply, &sipType_QPlaceMatchReply, -1, 12}, {sipName_QPlaceDetailsReply, &sipType_QPlaceDetailsReply, -1, 13}, {sipName_QPlaceContentReply, &sipType_QPlaceContentReply, -1, 14}, {sipName_QPlaceSearchReply, &sipType_QPlaceSearchReply, -1, 15}, {sipName_QPlaceIdReply, &sipType_QPlaceIdReply, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Error { NoError, NotSupportedError, UnknownParameterError, MissingRequiredParameterError, ConnectionError, }; enum RoutingFeature { NoRoutingFeatures, OnlineRoutingFeature, OfflineRoutingFeature, LocalizedRoutingFeature, RouteUpdatesFeature, AlternativeRoutesFeature, ExcludeAreasRoutingFeature, AnyRoutingFeatures, }; enum GeocodingFeature { NoGeocodingFeatures, OnlineGeocodingFeature, OfflineGeocodingFeature, ReverseGeocodingFeature, LocalizedGeocodingFeature, AnyGeocodingFeatures, }; enum MappingFeature { NoMappingFeatures, OnlineMappingFeature, OfflineMappingFeature, LocalizedMappingFeature, AnyMappingFeatures, }; enum PlacesFeature { NoPlacesFeatures, OnlinePlacesFeature, OfflinePlacesFeature, SavePlaceFeature, RemovePlaceFeature, SaveCategoryFeature, RemoveCategoryFeature, PlaceRecommendationsFeature, SearchSuggestionsFeature, LocalizedPlacesFeature, NotificationsFeature, PlaceMatchingFeature, AnyPlacesFeatures, }; typedef QFlags RoutingFeatures; typedef QFlags GeocodingFeatures; typedef QFlags MappingFeatures; typedef QFlags PlacesFeatures; static QStringList availableServiceProviders(); QGeoServiceProvider(const QString &providerName, const QVariantMap ¶meters = QMap(), bool allowExperimental = false); virtual ~QGeoServiceProvider(); QFlags routingFeatures() const; QFlags geocodingFeatures() const; QFlags mappingFeatures() const; QFlags placesFeatures() const; QGeoCodingManager *geocodingManager() const; QGeoRoutingManager *routingManager() const; QPlaceManager *placeManager() const; QGeoServiceProvider::Error error() const; QString errorString() const; void setParameters(const QVariantMap ¶meters); void setLocale(const QLocale &locale); void setAllowExperimental(bool allow); }; %End %If (Qt_5_5_0 -) QFlags operator|(QGeoServiceProvider::RoutingFeature f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QGeoServiceProvider::GeocodingFeature f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QGeoServiceProvider::MappingFeature f1, QFlags f2); %End %If (Qt_5_5_0 -) QFlags operator|(QGeoServiceProvider::PlacesFeature f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtLocation/qlocation.sip0000644000076500000240000000253413245233151021062 0ustar philstaff00000000000000// qlocation.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) namespace QLocation { %TypeHeaderCode #include %End enum Visibility { UnspecifiedVisibility, DeviceVisibility, PrivateVisibility, PublicVisibility, }; typedef QFlags VisibilityScope; }; %End %If (Qt_5_5_0 -) QFlags operator|(QLocation::Visibility f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtLocation/qplace.sip0000644000076500000240000000632613245233151020341 0ustar philstaff00000000000000// qplace.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlace { %TypeHeaderCode #include %End public: QPlace(); QPlace(const QPlace &other); ~QPlace(); bool operator==(const QPlace &other) const; bool operator!=(const QPlace &other) const; QList categories() const; void setCategory(const QPlaceCategory &category); void setCategories(const QList &categories); QGeoLocation location() const; void setLocation(const QGeoLocation &location); QPlaceRatings ratings() const; void setRatings(const QPlaceRatings &ratings); QPlaceSupplier supplier() const; void setSupplier(const QPlaceSupplier &supplier); QString attribution() const; void setAttribution(const QString &attribution); QPlaceIcon icon() const; void setIcon(const QPlaceIcon &icon); QMap content(QPlaceContent::Type type) const; void setContent(QPlaceContent::Type type, const QMap &content); void insertContent(QPlaceContent::Type type, const QMap &content); int totalContentCount(QPlaceContent::Type type) const; void setTotalContentCount(QPlaceContent::Type type, int total); QString name() const; void setName(const QString &name); QString placeId() const; void setPlaceId(const QString &identifier); QString primaryPhone() const; QString primaryFax() const; QString primaryEmail() const; QUrl primaryWebsite() const; bool detailsFetched() const; void setDetailsFetched(bool fetched); QStringList extendedAttributeTypes() const; QPlaceAttribute extendedAttribute(const QString &attributeType) const; void setExtendedAttribute(const QString &attributeType, const QPlaceAttribute &attribute); void removeExtendedAttribute(const QString &attributeType); QStringList contactTypes() const; QList contactDetails(const QString &contactType) const; void setContactDetails(const QString &contactType, QList details); void appendContactDetail(const QString &contactType, const QPlaceContactDetail &detail); void removeContactDetails(const QString &contactType); QLocation::Visibility visibility() const; void setVisibility(QLocation::Visibility visibility); bool isEmpty() const; }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplaceattribute.sip0000644000076500000240000000302313245233151022254 0ustar philstaff00000000000000// qplaceattribute.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceAttribute { %TypeHeaderCode #include %End public: static const QString OpeningHours; static const QString Payment; static const QString Provider; QPlaceAttribute(); QPlaceAttribute(const QPlaceAttribute &other); virtual ~QPlaceAttribute(); bool operator==(const QPlaceAttribute &other) const; bool operator!=(const QPlaceAttribute &other) const; QString label() const; void setLabel(const QString &label); QString text() const; void setText(const QString &text); bool isEmpty() const; }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacecategory.sip0000644000076500000240000000313413245233151022071 0ustar philstaff00000000000000// qplacecategory.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceCategory { %TypeHeaderCode #include %End public: QPlaceCategory(); QPlaceCategory(const QPlaceCategory &other); virtual ~QPlaceCategory(); bool operator==(const QPlaceCategory &other) const; bool operator!=(const QPlaceCategory &other) const; QString categoryId() const; void setCategoryId(const QString &identifier); QString name() const; void setName(const QString &name); QLocation::Visibility visibility() const; void setVisibility(QLocation::Visibility visibility); QPlaceIcon icon() const; void setIcon(const QPlaceIcon &icon); bool isEmpty() const; }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacecontactdetail.sip0000644000076500000240000000310613245233151023071 0ustar philstaff00000000000000// qplacecontactdetail.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceContactDetail { %TypeHeaderCode #include %End public: static const QString Phone; static const QString Email; static const QString Website; static const QString Fax; QPlaceContactDetail(); QPlaceContactDetail(const QPlaceContactDetail &other); virtual ~QPlaceContactDetail(); bool operator==(const QPlaceContactDetail &other) const; bool operator!=(const QPlaceContactDetail &other) const; QString label() const; void setLabel(const QString &label); QString value() const; void setValue(const QString &value); void clear(); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacecontent.sip0000644000076500000240000000326013245233151021726 0ustar philstaff00000000000000// qplacecontent.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceContent { %TypeHeaderCode #include %End typedef QMap Collection; public: enum Type { NoType, ImageType, ReviewType, EditorialType, }; QPlaceContent(); QPlaceContent(const QPlaceContent &other); virtual ~QPlaceContent(); bool operator==(const QPlaceContent &other) const; bool operator!=(const QPlaceContent &other) const; QPlaceContent::Type type() const; QPlaceSupplier supplier() const; void setSupplier(const QPlaceSupplier &supplier); QPlaceUser user() const; void setUser(const QPlaceUser &user); QString attribution() const; void setAttribution(const QString &attribution); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacecontentreply.sip0000644000076500000240000000344013245233151023002 0ustar philstaff00000000000000// qplacecontentreply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceContentReply : QPlaceReply { %TypeHeaderCode #include %End public: explicit QPlaceContentReply(QObject *parent /TransferThis/ = 0); virtual ~QPlaceContentReply(); virtual QPlaceReply::Type type() const; QPlaceContent::Collection content() const; int totalCount() const; QPlaceContentRequest request() const; QPlaceContentRequest previousPageRequest() const; QPlaceContentRequest nextPageRequest() const; protected: void setContent(const QPlaceContent::Collection &content); void setTotalCount(int total); void setRequest(const QPlaceContentRequest &request); void setPreviousPageRequest(const QPlaceContentRequest &previous); void setNextPageRequest(const QPlaceContentRequest &next); private: QPlaceContentReply(const QPlaceContentReply &); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacecontentrequest.sip0000644000076500000240000000317313245233151023342 0ustar philstaff00000000000000// qplacecontentrequest.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceContentRequest { %TypeHeaderCode #include %End public: QPlaceContentRequest(); QPlaceContentRequest(const QPlaceContentRequest &other); ~QPlaceContentRequest(); bool operator==(const QPlaceContentRequest &other) const; bool operator!=(const QPlaceContentRequest &other) const; QPlaceContent::Type contentType() const; void setContentType(QPlaceContent::Type type); QString placeId() const; void setPlaceId(const QString &identifier); QVariant contentContext() const; void setContentContext(const QVariant &context); int limit() const; void setLimit(int limit); void clear(); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacedetailsreply.sip0000644000076500000240000000254313245233151022760 0ustar philstaff00000000000000// qplacedetailsreply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceDetailsReply : QPlaceReply { %TypeHeaderCode #include %End public: explicit QPlaceDetailsReply(QObject *parent /TransferThis/ = 0); virtual ~QPlaceDetailsReply(); virtual QPlaceReply::Type type() const; QPlace place() const; protected: void setPlace(const QPlace &place); private: QPlaceDetailsReply(const QPlaceDetailsReply &); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplaceeditorial.sip0000644000076500000240000000256113245233151022233 0ustar philstaff00000000000000// qplaceeditorial.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceEditorial : QPlaceContent { %TypeHeaderCode #include %End public: QPlaceEditorial(); QPlaceEditorial(const QPlaceContent &other); virtual ~QPlaceEditorial(); QString text() const; void setText(const QString &text); QString title() const; void setTitle(const QString &data); QString language() const; void setLanguage(const QString &data); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplaceicon.sip0000644000076500000240000000275613245233151021215 0ustar philstaff00000000000000// qplaceicon.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceIcon { %TypeHeaderCode #include %End public: static const QString SingleUrl; QPlaceIcon(); QPlaceIcon(const QPlaceIcon &other); ~QPlaceIcon(); bool operator==(const QPlaceIcon &other) const; bool operator!=(const QPlaceIcon &other) const; QUrl url(const QSize &size = QSize()) const; QPlaceManager *manager() const; void setManager(QPlaceManager *manager); QVariantMap parameters() const; void setParameters(const QVariantMap ¶meters); bool isEmpty() const; }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplaceidreply.sip0000644000076500000240000000302713245233151021725 0ustar philstaff00000000000000// qplaceidreply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceIdReply : QPlaceReply { %TypeHeaderCode #include %End public: enum OperationType { SavePlace, SaveCategory, RemovePlace, RemoveCategory, }; QPlaceIdReply(QPlaceIdReply::OperationType operationType, QObject *parent /TransferThis/ = 0); virtual ~QPlaceIdReply(); virtual QPlaceReply::Type type() const; QPlaceIdReply::OperationType operationType() const; QString id() const; protected: void setId(const QString &identifier); private: QPlaceIdReply(const QPlaceIdReply &); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplaceimage.sip0000644000076500000240000000253213245233151021337 0ustar philstaff00000000000000// qplaceimage.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceImage : QPlaceContent { %TypeHeaderCode #include %End public: QPlaceImage(); QPlaceImage(const QPlaceContent &other); virtual ~QPlaceImage(); QUrl url() const; void setUrl(const QUrl &url); QString imageId() const; void setImageId(const QString &identifier); QString mimeType() const; void setMimeType(const QString &data); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacemanager.sip0000644000076500000240000000560413245233151021672 0ustar philstaff00000000000000// qplacemanager.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceManager : QObject { %TypeHeaderCode #include %End public: virtual ~QPlaceManager(); QString managerName() const; int managerVersion() const; QPlaceDetailsReply *getPlaceDetails(const QString &placeId) const; QPlaceContentReply *getPlaceContent(const QPlaceContentRequest &request) const; QPlaceSearchReply *search(const QPlaceSearchRequest &query) const; QPlaceSearchSuggestionReply *searchSuggestions(const QPlaceSearchRequest &request) const; QPlaceIdReply *savePlace(const QPlace &place); QPlaceIdReply *removePlace(const QString &placeId); QPlaceIdReply *saveCategory(const QPlaceCategory &category, const QString &parentId = QString()); QPlaceIdReply *removeCategory(const QString &categoryId); QPlaceReply *initializeCategories(); QString parentCategoryId(const QString &categoryId) const; QStringList childCategoryIds(const QString &parentId = QString()) const; QPlaceCategory category(const QString &categoryId) const; QList childCategories(const QString &parentId = QString()) const; QList locales() const; void setLocale(const QLocale &locale); void setLocales(const QList &locale); QPlace compatiblePlace(const QPlace &place); QPlaceMatchReply *matchingPlaces(const QPlaceMatchRequest &request) const; signals: void finished(QPlaceReply *reply); void error(QPlaceReply *, QPlaceReply::Error error, const QString &errorString = QString()); void placeAdded(const QString &placeId); void placeUpdated(const QString &placeId); void placeRemoved(const QString &placeId); void categoryAdded(const QPlaceCategory &category, const QString &parentId); void categoryUpdated(const QPlaceCategory &category, const QString &parentId); void categoryRemoved(const QString &categoryId, const QString &parentId); void dataChanged(); private: QPlaceManager(const QPlaceManager &); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacemanagerengine.sip0000644000076500000240000000631113245233151023054 0ustar philstaff00000000000000// qplacemanagerengine.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceManagerEngine : QObject { %TypeHeaderCode #include %End public: QPlaceManagerEngine(const QVariantMap ¶meters, QObject *parent /TransferThis/ = 0); virtual ~QPlaceManagerEngine(); QString managerName() const; int managerVersion() const; virtual QPlaceDetailsReply *getPlaceDetails(const QString &placeId); virtual QPlaceContentReply *getPlaceContent(const QPlaceContentRequest &request); virtual QPlaceSearchReply *search(const QPlaceSearchRequest &request); virtual QPlaceSearchSuggestionReply *searchSuggestions(const QPlaceSearchRequest &request); virtual QPlaceIdReply *savePlace(const QPlace &place); virtual QPlaceIdReply *removePlace(const QString &placeId); virtual QPlaceIdReply *saveCategory(const QPlaceCategory &category, const QString &parentId); virtual QPlaceIdReply *removeCategory(const QString &categoryId); virtual QPlaceReply *initializeCategories(); virtual QString parentCategoryId(const QString &categoryId) const; virtual QStringList childCategoryIds(const QString &categoryId) const; virtual QPlaceCategory category(const QString &categoryId) const; virtual QList childCategories(const QString &parentId) const; virtual QList locales() const; virtual void setLocales(const QList &locales); virtual QUrl constructIconUrl(const QPlaceIcon &icon, const QSize &size) const; virtual QPlace compatiblePlace(const QPlace &original) const; virtual QPlaceMatchReply *matchingPlaces(const QPlaceMatchRequest &request); signals: void finished(QPlaceReply *reply); void error(QPlaceReply *, QPlaceReply::Error error, const QString &errorString = QString()); void placeAdded(const QString &placeId); void placeUpdated(const QString &placeId); void placeRemoved(const QString &placeId); void categoryAdded(const QPlaceCategory &category, const QString &parentCategoryId); void categoryUpdated(const QPlaceCategory &category, const QString &parentCategoryId); void categoryRemoved(const QString &categoryId, const QString &parentCategoryId); void dataChanged(); protected: QPlaceManager *manager() const; private: QPlaceManagerEngine(const QPlaceManagerEngine &); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacematchreply.sip0000644000076500000240000000270713245233151022431 0ustar philstaff00000000000000// qplacematchreply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceMatchReply : QPlaceReply { %TypeHeaderCode #include %End public: explicit QPlaceMatchReply(QObject *parent /TransferThis/ = 0); virtual ~QPlaceMatchReply(); virtual QPlaceReply::Type type() const; QList places() const; QPlaceMatchRequest request() const; protected: void setPlaces(const QList &results); void setRequest(const QPlaceMatchRequest &request); private: QPlaceMatchReply(const QPlaceMatchReply &); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacematchrequest.sip0000644000076500000240000000310113245233151022753 0ustar philstaff00000000000000// qplacematchrequest.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceMatchRequest { %TypeHeaderCode #include %End public: static const QString AlternativeId; QPlaceMatchRequest(); QPlaceMatchRequest(const QPlaceMatchRequest &other); ~QPlaceMatchRequest(); bool operator==(const QPlaceMatchRequest &other) const; bool operator!=(const QPlaceMatchRequest &other) const; QList places() const; void setPlaces(const QList places); void setResults(const QList &results); QVariantMap parameters() const; void setParameters(const QVariantMap ¶meters); void clear(); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplaceproposedsearchresult.sip0000644000076500000240000000253613245233151024541 0ustar philstaff00000000000000// qplaceproposedsearchresult.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceProposedSearchResult : QPlaceSearchResult { %TypeHeaderCode #include %End public: QPlaceProposedSearchResult(); QPlaceProposedSearchResult(const QPlaceSearchResult &other); virtual ~QPlaceProposedSearchResult(); QPlaceSearchRequest searchRequest() const; void setSearchRequest(const QPlaceSearchRequest &request); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplaceratings.sip0000644000076500000240000000266713245233151021735 0ustar philstaff00000000000000// qplaceratings.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceRatings { %TypeHeaderCode #include %End public: QPlaceRatings(); QPlaceRatings(const QPlaceRatings &other); ~QPlaceRatings(); bool operator==(const QPlaceRatings &other) const; bool operator!=(const QPlaceRatings &other) const; qreal average() const; void setAverage(qreal average); int count() const; void setCount(int count); qreal maximum() const; void setMaximum(qreal max); bool isEmpty() const; }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacereply.sip0000644000076500000240000000411413245233151021406 0ustar philstaff00000000000000// qplacereply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceReply : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, PlaceDoesNotExistError, CategoryDoesNotExistError, CommunicationError, ParseError, PermissionsError, UnsupportedError, BadArgumentError, CancelError, UnknownError, }; enum Type { Reply, DetailsReply, SearchReply, SearchSuggestionReply, ContentReply, IdReply, MatchReply, }; explicit QPlaceReply(QObject *parent /TransferThis/ = 0); virtual ~QPlaceReply(); bool isFinished() const; virtual QPlaceReply::Type type() const; QString errorString() const; QPlaceReply::Error error() const; public slots: virtual void abort(); signals: %If (Qt_5_9_0 -) void aborted(); %End void finished(); void error(QPlaceReply::Error error, const QString &errorString = QString()); protected: void setFinished(bool finished); void setError(QPlaceReply::Error error, const QString &errorString); private: QPlaceReply(const QPlaceReply &); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplaceresult.sip0000644000076500000240000000254513245233151021577 0ustar philstaff00000000000000// qplaceresult.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceResult : QPlaceSearchResult { %TypeHeaderCode #include %End public: QPlaceResult(); QPlaceResult(const QPlaceSearchResult &other); virtual ~QPlaceResult(); qreal distance() const; void setDistance(qreal distance); QPlace place() const; void setPlace(const QPlace &place); bool isSponsored() const; void setSponsored(bool sponsored); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacereview.sip0000644000076500000240000000306313245233151021556 0ustar philstaff00000000000000// qplacereview.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceReview : QPlaceContent { %TypeHeaderCode #include %End public: QPlaceReview(); QPlaceReview(const QPlaceContent &other); virtual ~QPlaceReview(); QDateTime dateTime() const; void setDateTime(const QDateTime &dt); QString text() const; void setText(const QString &text); QString language() const; void setLanguage(const QString &data); qreal rating() const; void setRating(qreal data); QString reviewId() const; void setReviewId(const QString &identifier); QString title() const; void setTitle(const QString &data); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacesearchreply.sip0000644000076500000240000000332413245233151022576 0ustar philstaff00000000000000// qplacesearchreply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceSearchReply : QPlaceReply { %TypeHeaderCode #include %End public: explicit QPlaceSearchReply(QObject *parent /TransferThis/ = 0); virtual ~QPlaceSearchReply(); virtual QPlaceReply::Type type() const; QList results() const; QPlaceSearchRequest request() const; QPlaceSearchRequest previousPageRequest() const; QPlaceSearchRequest nextPageRequest() const; protected: void setResults(const QList &results); void setRequest(const QPlaceSearchRequest &request); void setPreviousPageRequest(const QPlaceSearchRequest &previous); void setNextPageRequest(const QPlaceSearchRequest &next); private: QPlaceSearchReply(const QPlaceSearchReply &); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacesearchrequest.sip0000644000076500000240000000434113245233151023133 0ustar philstaff00000000000000// qplacesearchrequest.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceSearchRequest { %TypeHeaderCode #include %End public: enum RelevanceHint { UnspecifiedHint, DistanceHint, LexicalPlaceNameHint, }; QPlaceSearchRequest(); QPlaceSearchRequest(const QPlaceSearchRequest &other); ~QPlaceSearchRequest(); bool operator==(const QPlaceSearchRequest &other) const; bool operator!=(const QPlaceSearchRequest &other) const; QString searchTerm() const; void setSearchTerm(const QString &term); QList categories() const; void setCategory(const QPlaceCategory &category); void setCategories(const QList &categories); QGeoShape searchArea() const; void setSearchArea(const QGeoShape &area); QString recommendationId() const; void setRecommendationId(const QString &recommendationId); QVariant searchContext() const; void setSearchContext(const QVariant &context); QLocation::VisibilityScope visibilityScope() const; void setVisibilityScope(QLocation::VisibilityScope visibilityScopes); QPlaceSearchRequest::RelevanceHint relevanceHint() const; void setRelevanceHint(QPlaceSearchRequest::RelevanceHint hint); int limit() const; void setLimit(int limit); void clear(); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacesearchresult.sip0000644000076500000240000000313613245233151022762 0ustar philstaff00000000000000// qplacesearchresult.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceSearchResult { %TypeHeaderCode #include %End public: QPlaceSearchResult(); QPlaceSearchResult(const QPlaceSearchResult &other); virtual ~QPlaceSearchResult(); bool operator==(const QPlaceSearchResult &other) const; bool operator!=(const QPlaceSearchResult &other) const; enum SearchResultType { UnknownSearchResult, PlaceResult, ProposedSearchResult, }; QPlaceSearchResult::SearchResultType type() const; QString title() const; void setTitle(const QString &title); QPlaceIcon icon() const; void setIcon(const QPlaceIcon &icon); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacesearchsuggestionreply.sip0000644000076500000240000000267613245233151024717 0ustar philstaff00000000000000// qplacesearchsuggestionreply.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceSearchSuggestionReply : QPlaceReply { %TypeHeaderCode #include %End public: explicit QPlaceSearchSuggestionReply(QObject *parent /TransferThis/ = 0); virtual ~QPlaceSearchSuggestionReply(); QStringList suggestions() const; virtual QPlaceReply::Type type() const; protected: void setSuggestions(const QStringList &suggestions); private: QPlaceSearchSuggestionReply(const QPlaceSearchSuggestionReply &); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplacesupplier.sip0000644000076500000240000000304513245233151022120 0ustar philstaff00000000000000// qplacesupplier.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceSupplier { %TypeHeaderCode #include %End public: QPlaceSupplier(); QPlaceSupplier(const QPlaceSupplier &other); ~QPlaceSupplier(); bool operator==(const QPlaceSupplier &other) const; bool operator!=(const QPlaceSupplier &other) const; QString name() const; void setName(const QString &data); QString supplierId() const; void setSupplierId(const QString &identifier); QUrl url() const; void setUrl(const QUrl &data); QPlaceIcon icon() const; void setIcon(const QPlaceIcon &icon); bool isEmpty() const; }; %End PyQt5_gpl-5.10.1/sip/QtLocation/qplaceuser.sip0000644000076500000240000000253713245233151021240 0ustar philstaff00000000000000// qplaceuser.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QPlaceUser { %TypeHeaderCode #include %End public: QPlaceUser(); QPlaceUser(const QPlaceUser &other); ~QPlaceUser(); bool operator==(const QPlaceUser &other) const; bool operator!=(const QPlaceUser &other) const; QString userId() const; void setUserId(const QString &identifier); QString name() const; void setName(const QString &name); }; %End PyQt5_gpl-5.10.1/sip/QtLocation/QtLocationmod.sip0000644000076500000240000000605013245233151021643 0ustar philstaff00000000000000// QtLocationmod.sip generated by MetaSIP // // This file is part of the QtLocation Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtLocation, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtPositioning/QtPositioningmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qgeocodereply.sip %Include qgeocodingmanager.sip %Include qgeocodingmanagerengine.sip %Include qgeomaneuver.sip %Include qgeoroute.sip %Include qgeoroutereply.sip %Include qgeorouterequest.sip %Include qgeoroutesegment.sip %Include qgeoroutingmanager.sip %Include qgeoroutingmanagerengine.sip %Include qgeoserviceprovider.sip %Include qlocation.sip %Include qplace.sip %Include qplaceattribute.sip %Include qplacecategory.sip %Include qplacecontactdetail.sip %Include qplacecontent.sip %Include qplacecontentreply.sip %Include qplacecontentrequest.sip %Include qplacedetailsreply.sip %Include qplaceeditorial.sip %Include qplaceicon.sip %Include qplaceidreply.sip %Include qplaceimage.sip %Include qplacemanager.sip %Include qplacemanagerengine.sip %Include qplacematchreply.sip %Include qplacematchrequest.sip %Include qplaceproposedsearchresult.sip %Include qplaceratings.sip %Include qplacereply.sip %Include qplaceresult.sip %Include qplacereview.sip %Include qplacesearchreply.sip %Include qplacesearchrequest.sip %Include qplacesearchresult.sip %Include qplacesearchsuggestionreply.sip %Include qplacesupplier.sip %Include qplaceuser.sip PyQt5_gpl-5.10.1/sip/QtMacExtras/0000755000076500000240000000000013245233151016467 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtMacExtras/qmacpasteboardmime.sip0000644000076500000240000000354113245233151023045 0ustar philstaff00000000000000// This is the SIP interface definition for QMacPasteboardMime. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) %If (PyQt_MacOSXOnly) class QMacPasteboardMime { %TypeHeaderCode #include %End public: enum QMacPasteboardMimeType { MIME_DND, MIME_CLIP, MIME_QT_CONVERTOR, MIME_QT3_CONVERTOR, MIME_ALL, }; explicit QMacPasteboardMime(char t /PyInt/); virtual ~QMacPasteboardMime(); virtual QString convertorName() = 0; virtual bool canConvert(const QString &mime, QString flav) = 0; virtual QString mimeFor(QString flav) = 0; virtual QString flavorFor(const QString &mime) = 0; virtual QVariant convertToMime(const QString &mime, QList data, QString flav) = 0; virtual QList convertFromMime(const QString &mime, QVariant data, QString flav) = 0; virtual int count(QMimeData *mimeData); }; %ModuleHeaderCode #include %End void qRegisterDraggedTypes(const QStringList &types); %End %End PyQt5_gpl-5.10.1/sip/QtMacExtras/qmactoolbar.sip0000644000076500000240000000372313245233151021515 0ustar philstaff00000000000000// This is the SIP interface definition for QMacToolBar. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) %If (PyQt_MacOSXOnly) class NSToolbar; class QMacToolBar : QObject { %TypeHeaderCode #include %End public: explicit QMacToolBar(QObject *parent /TransferThis/ = 0); QMacToolBar(const QString &identifier, QObject *parent /TransferThis/ = 0); ~QMacToolBar(); QMacToolBarItem *addItem(const QIcon &icon, const QString &text); QMacToolBarItem *addAllowedItem(const QIcon &icon, const QString &text); void addSeparator(); void setItems(QList &items); QList items(); void setAllowedItems(QList &allowedItems); QList allowedItems(); void attachToWindow(QWindow *window); void detachFromWindow(); NSToolbar *nativeToolbar() const; private: QMacToolBar(const QMacToolBar &); %ConvertToSubClassCode if (sipCpp->inherits(sipName_QMacToolBar)) sipType = sipType_QMacToolBar; else if (sipCpp->inherits(sipName_QMacToolBarItem)) sipType = sipType_QMacToolBarItem; else sipType = 0; %End }; %End %End PyQt5_gpl-5.10.1/sip/QtMacExtras/qmactoolbaritem.sip0000644000076500000240000000323413245233151022371 0ustar philstaff00000000000000// This is the SIP interface definition for QMacToolBarItem. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) %If (PyQt_MacOSXOnly) class NSToolbarItem; class QMacToolBarItem : QObject { %TypeHeaderCode #include %End public: enum StandardItem { NoStandardItem, Space, FlexibleSpace }; QMacToolBarItem(QObject *parent /TransferThis/ = 0); virtual ~QMacToolBarItem(); bool selectable() const; void setSelectable(bool selectable); StandardItem standardItem() const; void setStandardItem(StandardItem standardItem); QString text() const; void setText(const QString &text); QIcon icon() const; void setIcon(const QIcon &icon); NSToolbarItem *nativeToolBarItem() const; signals: void activated(); private: QMacToolBarItem(const QMacToolBarItem &); }; %End %End PyQt5_gpl-5.10.1/sip/QtMacExtras/qtmac.sip0000644000076500000240000000232213245233151020310 0ustar philstaff00000000000000// This is the SIP interface definition for QMacToolBar. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) namespace QtMac { %TypeHeaderCode #include %End %If (PyQt_MacOSXOnly) void setBadgeLabelText(const QString &text); QString badgeLabelText(); bool isMainWindow(QWindow *window); %End %If (!PyQt_MacOSXOnly) void setApplicationIconBadgeNumber(int number); int applicationIconBadgeNumber(); %End }; %End PyQt5_gpl-5.10.1/sip/QtMacExtras/QtMacExtrasmod.sip0000644000076500000240000000374313245233151022107 0ustar philstaff00000000000000// This is the SIP interface definition for the QtMacExtras module of PyQt v5. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtMacExtras, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qmacpasteboardmime.sip %Include qmactoolbar.sip %Include qmactoolbaritem.sip %Include qtmac.sip PyQt5_gpl-5.10.1/sip/QtMultimedia/0000755000076500000240000000000013245233151016672 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtMultimedia/qabstractvideobuffer.sip0000644000076500000240000000464513245233151023625 0ustar philstaff00000000000000// qabstractvideobuffer.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractVideoBuffer { %TypeHeaderCode #include %End public: enum HandleType { NoHandle, GLTextureHandle, XvShmImageHandle, CoreImageHandle, QPixmapHandle, %If (Qt_5_4_0 -) EGLImageHandle, %End UserHandle, }; enum MapMode { NotMapped, ReadOnly, WriteOnly, ReadWrite, }; QAbstractVideoBuffer(QAbstractVideoBuffer::HandleType type); virtual ~QAbstractVideoBuffer(); QAbstractVideoBuffer::HandleType handleType() const; virtual QAbstractVideoBuffer::MapMode mapMode() const = 0; virtual SIP_PYOBJECT map(QAbstractVideoBuffer::MapMode mode, int *numBytes, int *bytesPerLine) = 0 /TypeHint="sip.voidptr"/ [uchar * (QAbstractVideoBuffer::MapMode mode, int *numBytes, int *bytesPerLine)]; %MethodCode uchar *mem; Py_BEGIN_ALLOW_THREADS mem = sipCpp->map(a0, &a1, &a2); Py_END_ALLOW_THREADS if (mem) { if (a0 & QAbstractVideoBuffer::WriteOnly) sipRes = sipConvertFromVoidPtrAndSize(mem, a1); else sipRes = sipConvertFromConstVoidPtrAndSize(mem, a1); } else { sipRes = Py_None; Py_INCREF(sipRes); } %End virtual void unmap() = 0; virtual QVariant handle() const; virtual void release(); private: QAbstractVideoBuffer(const QAbstractVideoBuffer &); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qabstractvideofilter.sip0000644000076500000240000000367613245233151023644 0ustar philstaff00000000000000// qabstractvideofilter.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QVideoFilterRunnable { %TypeHeaderCode #include %End public: enum RunFlag { LastInChain, }; typedef QFlags RunFlags; virtual ~QVideoFilterRunnable() /ReleaseGIL/; virtual QVideoFrame run(QVideoFrame *input, const QVideoSurfaceFormat &surfaceFormat, QVideoFilterRunnable::RunFlags flags) = 0 /ReleaseGIL/; }; %End %If (Qt_5_5_0 -) QFlags operator|(QVideoFilterRunnable::RunFlag f1, QFlags f2); %End %If (Qt_5_5_0 -) class QAbstractVideoFilter : QObject { %TypeHeaderCode #include %End public: explicit QAbstractVideoFilter(QObject *parent /TransferThis/ = 0); virtual ~QAbstractVideoFilter(); bool isActive() const; virtual QVideoFilterRunnable *createFilterRunnable() = 0 /ReleaseGIL/; signals: void activeChanged(); private: QAbstractVideoFilter(const QAbstractVideoFilter &); }; %End PyQt5_gpl-5.10.1/sip/QtMultimedia/qabstractvideosurface.sip0000644000076500000240000001037213245233151023776 0ustar philstaff00000000000000// qabstractvideosurface.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractVideoSurface : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSound, &sipType_QSound, -1, 1}, {sipName_QCameraImageProcessing, &sipType_QCameraImageProcessing, -1, 2}, {sipName_QVideoProbe, &sipType_QVideoProbe, -1, 3}, {sipName_QCameraExposure, &sipType_QCameraExposure, -1, 4}, {sipName_QAudioInput, &sipType_QAudioInput, -1, 5}, #if QT_VERSION >= 0x050500 {sipName_QAbstractVideoFilter, &sipType_QAbstractVideoFilter, -1, 6}, #else {0, 0, -1, 6}, #endif {sipName_QMediaObject, &sipType_QMediaObject, 18, 7}, {sipName_QMediaRecorder, &sipType_QMediaRecorder, 22, 8}, {sipName_QSoundEffect, &sipType_QSoundEffect, -1, 9}, {sipName_QCameraImageCapture, &sipType_QCameraImageCapture, -1, 10}, {sipName_QAbstractVideoSurface, &sipType_QAbstractVideoSurface, -1, 11}, {sipName_QAudioOutput, &sipType_QAudioOutput, -1, 12}, {sipName_QCameraFocus, &sipType_QCameraFocus, -1, 13}, {sipName_QMediaService, &sipType_QMediaService, -1, 14}, {sipName_QRadioData, &sipType_QRadioData, -1, 15}, {sipName_QMediaControl, &sipType_QMediaControl, -1, 16}, {sipName_QMediaPlaylist, &sipType_QMediaPlaylist, -1, 17}, {sipName_QAudioProbe, &sipType_QAudioProbe, -1, -1}, {sipName_QRadioTuner, &sipType_QRadioTuner, -1, 19}, {sipName_QCamera, &sipType_QCamera, -1, 20}, {sipName_QMediaPlayer, &sipType_QMediaPlayer, -1, 21}, {sipName_QAudioDecoder, &sipType_QAudioDecoder, -1, -1}, {sipName_QAudioRecorder, &sipType_QAudioRecorder, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Error { NoError, UnsupportedFormatError, IncorrectFormatError, StoppedError, ResourceError, }; explicit QAbstractVideoSurface(QObject *parent /TransferThis/ = 0); virtual ~QAbstractVideoSurface(); virtual QList supportedPixelFormats(QAbstractVideoBuffer::HandleType type = QAbstractVideoBuffer::NoHandle) const = 0; virtual bool isFormatSupported(const QVideoSurfaceFormat &format) const; virtual QVideoSurfaceFormat nearestFormat(const QVideoSurfaceFormat &format) const; QVideoSurfaceFormat surfaceFormat() const; virtual bool start(const QVideoSurfaceFormat &format); virtual void stop(); bool isActive() const; virtual bool present(const QVideoFrame &frame) = 0; QAbstractVideoSurface::Error error() const; signals: void activeChanged(bool active); void surfaceFormatChanged(const QVideoSurfaceFormat &format); void supportedFormatsChanged(); protected: void setError(QAbstractVideoSurface::Error error); public: QSize nativeResolution() const; protected: void setNativeResolution(const QSize &resolution); signals: void nativeResolutionChanged(const QSize &); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qaudio.sip0000644000076500000240000000361713245233151020700 0ustar philstaff00000000000000// qaudio.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QAudio { %TypeHeaderCode #include %End enum Error { NoError, OpenError, IOError, UnderrunError, FatalError, }; enum State { ActiveState, SuspendedState, StoppedState, IdleState, %If (Qt_5_10_0 -) InterruptedState, %End }; enum Mode { AudioInput, AudioOutput, }; %If (Qt_5_6_0 -) enum Role { UnknownRole, MusicRole, VideoRole, VoiceCommunicationRole, AlarmRole, NotificationRole, RingtoneRole, AccessibilityRole, SonificationRole, GameRole, }; %End %If (Qt_5_8_0 -) enum VolumeScale { LinearVolumeScale, CubicVolumeScale, LogarithmicVolumeScale, DecibelVolumeScale, }; %End %If (Qt_5_8_0 -) qreal convertVolume(qreal volume, QAudio::VolumeScale from, QAudio::VolumeScale to); %End }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qaudiobuffer.sip0000644000076500000240000000302313245233151022061 0ustar philstaff00000000000000// qaudiobuffer.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioBuffer { %TypeHeaderCode #include %End public: QAudioBuffer(); QAudioBuffer(const QByteArray &data, const QAudioFormat &format, qint64 startTime = -1); QAudioBuffer(int numFrames, const QAudioFormat &format, qint64 startTime = -1); QAudioBuffer(const QAudioBuffer &other); ~QAudioBuffer(); bool isValid() const; QAudioFormat format() const; int frameCount() const; int sampleCount() const; int byteCount() const; qint64 duration() const; qint64 startTime() const; const void *constData() const; void *data(); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qaudiodecoder.sip0000644000076500000240000000507713245233151022230 0ustar philstaff00000000000000// qaudiodecoder.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioDecoder : QMediaObject { %TypeHeaderCode #include %End public: enum State { StoppedState, DecodingState, }; enum Error { NoError, ResourceError, FormatError, AccessDeniedError, ServiceMissingError, }; %If (Qt_5_6_1 -) explicit QAudioDecoder(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QAudioDecoder(QObject *parent /TransferThis/ = 0); %End virtual ~QAudioDecoder(); static QMultimedia::SupportEstimate hasSupport(const QString &mimeType, const QStringList &codecs = QStringList()); QAudioDecoder::State state() const; QString sourceFilename() const; void setSourceFilename(const QString &fileName); QIODevice *sourceDevice() const; void setSourceDevice(QIODevice *device); QAudioFormat audioFormat() const; void setAudioFormat(const QAudioFormat &format); QAudioDecoder::Error error() const; QString errorString() const; QAudioBuffer read() const; bool bufferAvailable() const; qint64 position() const; qint64 duration() const; public slots: void start(); void stop(); signals: void bufferAvailableChanged(bool); void bufferReady(); void finished(); void stateChanged(QAudioDecoder::State newState); void formatChanged(const QAudioFormat &format); void error(QAudioDecoder::Error error); void sourceChanged(); void positionChanged(qint64 position); void durationChanged(qint64 duration); public: virtual bool bind(QObject *); virtual void unbind(QObject *); private: QAudioDecoder(const QAudioDecoder &); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qaudiodeviceinfo.sip0000644000076500000240000000366413245233151022736 0ustar philstaff00000000000000// qaudiodeviceinfo.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioDeviceInfo { %TypeHeaderCode #include %End public: QAudioDeviceInfo(); QAudioDeviceInfo(const QAudioDeviceInfo &other); ~QAudioDeviceInfo(); bool isNull() const; QString deviceName() const; bool isFormatSupported(const QAudioFormat &format) const; QAudioFormat preferredFormat() const; QAudioFormat nearestFormat(const QAudioFormat &format) const; QStringList supportedCodecs() const; QList supportedSampleSizes() const; QList supportedByteOrders() const; QList supportedSampleTypes() const; static QAudioDeviceInfo defaultInputDevice(); static QAudioDeviceInfo defaultOutputDevice(); static QList availableDevices(QAudio::Mode mode); QList supportedSampleRates() const; QList supportedChannelCounts() const; bool operator==(const QAudioDeviceInfo &other) const; bool operator!=(const QAudioDeviceInfo &other) const; }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qaudioformat.sip0000644000076500000240000000433413245233151022106 0ustar philstaff00000000000000// qaudioformat.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioFormat { %TypeHeaderCode #include %End public: enum SampleType { Unknown, SignedInt, UnSignedInt, Float, }; enum Endian { BigEndian, LittleEndian, }; QAudioFormat(); QAudioFormat(const QAudioFormat &other); ~QAudioFormat(); bool operator==(const QAudioFormat &other) const; bool operator!=(const QAudioFormat &other) const; bool isValid() const; void setSampleSize(int sampleSize); int sampleSize() const; void setCodec(const QString &codec); QString codec() const; void setByteOrder(QAudioFormat::Endian byteOrder); QAudioFormat::Endian byteOrder() const; void setSampleType(QAudioFormat::SampleType sampleType); QAudioFormat::SampleType sampleType() const; void setSampleRate(int sampleRate); int sampleRate() const; void setChannelCount(int channelCount); int channelCount() const; qint32 bytesForDuration(qint64 duration) const; qint64 durationForBytes(qint32 byteCount) const; qint32 bytesForFrames(qint32 frameCount) const; qint32 framesForBytes(qint32 byteCount) const; qint32 framesForDuration(qint64 duration) const; qint64 durationForFrames(qint32 frameCount) const; int bytesPerFrame() const; }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qaudioinput.sip0000644000076500000240000000370213245233151021753 0ustar philstaff00000000000000// qaudioinput.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioInput : QObject { %TypeHeaderCode #include %End public: QAudioInput(const QAudioFormat &format = QAudioFormat(), QObject *parent /TransferThis/ = 0); QAudioInput(const QAudioDeviceInfo &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent /TransferThis/ = 0); virtual ~QAudioInput(); QAudioFormat format() const; void start(QIODevice *device); QIODevice *start(); void stop(); void reset(); void suspend(); void resume(); void setBufferSize(int bytes); int bufferSize() const; int bytesReady() const; int periodSize() const; void setNotifyInterval(int milliSeconds); int notifyInterval() const; qint64 processedUSecs() const; qint64 elapsedUSecs() const; QAudio::Error error() const; QAudio::State state() const; signals: void stateChanged(QAudio::State); void notify(); public: void setVolume(qreal volume); qreal volume() const; private: QAudioInput(const QAudioInput &); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qaudiooutput.sip0000644000076500000240000000401713245233151022154 0ustar philstaff00000000000000// qaudiooutput.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioOutput : QObject { %TypeHeaderCode #include %End public: QAudioOutput(const QAudioFormat &format = QAudioFormat(), QObject *parent /TransferThis/ = 0); QAudioOutput(const QAudioDeviceInfo &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent /TransferThis/ = 0); virtual ~QAudioOutput(); QAudioFormat format() const; void start(QIODevice *device); QIODevice *start(); void stop(); void reset(); void suspend(); void resume(); void setBufferSize(int bytes); int bufferSize() const; int bytesFree() const; int periodSize() const; void setNotifyInterval(int milliSeconds); int notifyInterval() const; qint64 processedUSecs() const; qint64 elapsedUSecs() const; QAudio::Error error() const; QAudio::State state() const; signals: void stateChanged(QAudio::State); void notify(); public: void setVolume(qreal); qreal volume() const; QString category() const; void setCategory(const QString &category); private: QAudioOutput(const QAudioOutput &); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qaudioprobe.sip0000644000076500000240000000247013245233151021724 0ustar philstaff00000000000000// qaudioprobe.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioProbe : QObject { %TypeHeaderCode #include %End public: explicit QAudioProbe(QObject *parent /TransferThis/ = 0); virtual ~QAudioProbe(); bool setSource(QMediaObject *source); bool setSource(QMediaRecorder *source); bool isActive() const; signals: void audioBufferProbed(const QAudioBuffer &audioBuffer); void flush(); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qaudiorecorder.sip0000644000076500000240000000314713245233151022424 0ustar philstaff00000000000000// qaudiorecorder.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioRecorder : QMediaRecorder { %TypeHeaderCode #include %End public: %If (Qt_5_6_1 -) explicit QAudioRecorder(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QAudioRecorder(QObject *parent /TransferThis/ = 0); %End virtual ~QAudioRecorder(); QStringList audioInputs() const; QString defaultAudioInput() const; QString audioInputDescription(const QString &name) const; QString audioInput() const; public slots: void setAudioInput(const QString &name); signals: void audioInputChanged(const QString &name); void availableAudioInputsChanged(); private: QAudioRecorder(const QAudioRecorder &); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qcamera.sip0000644000076500000240000001310413245233151021017 0ustar philstaff00000000000000// qcamera.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCamera : QMediaObject { %TypeHeaderCode #include %End public: enum Status { UnavailableStatus, UnloadedStatus, LoadingStatus, UnloadingStatus, LoadedStatus, StandbyStatus, StartingStatus, StoppingStatus, ActiveStatus, }; enum State { UnloadedState, LoadedState, ActiveState, }; enum CaptureMode { CaptureViewfinder, CaptureStillImage, CaptureVideo, }; typedef QFlags CaptureModes; enum Error { NoError, CameraError, InvalidRequestError, ServiceMissingError, NotSupportedFeatureError, }; enum LockStatus { Unlocked, Searching, Locked, }; enum LockChangeReason { UserRequest, LockAcquired, LockFailed, LockLost, LockTemporaryLost, }; enum LockType { NoLock, LockExposure, LockWhiteBalance, LockFocus, }; typedef QFlags LockTypes; %If (Qt_5_3_0 -) enum Position { UnspecifiedPosition, BackFace, FrontFace, }; %End %If (Qt_5_6_1 -) explicit QCamera(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QCamera(QObject *parent /TransferThis/ = 0); %End QCamera(const QByteArray &device, QObject *parent /TransferThis/ = 0); %If (Qt_5_3_0 -) QCamera(const QCameraInfo &cameraInfo, QObject *parent /TransferThis/ = 0); %End %If (Qt_5_3_0 -) QCamera(QCamera::Position position, QObject *parent /TransferThis/ = 0); %End virtual ~QCamera(); static QList availableDevices(); static QString deviceDescription(const QByteArray &device); virtual QMultimedia::AvailabilityStatus availability() const; QCamera::State state() const; QCamera::Status status() const; QCamera::CaptureModes captureMode() const; bool isCaptureModeSupported(QCamera::CaptureModes mode) const; QCameraExposure *exposure() const; QCameraFocus *focus() const; QCameraImageProcessing *imageProcessing() const; void setViewfinder(QVideoWidget *viewfinder); void setViewfinder(QGraphicsVideoItem *viewfinder); void setViewfinder(QAbstractVideoSurface *surface); QCamera::Error error() const; QString errorString() const; QCamera::LockTypes supportedLocks() const; QCamera::LockTypes requestedLocks() const; QCamera::LockStatus lockStatus() const; QCamera::LockStatus lockStatus(QCamera::LockType lock) const; public slots: void setCaptureMode(QCamera::CaptureModes mode); void load(); void unload(); void start(); void stop(); void searchAndLock(); void unlock(); void searchAndLock(QCamera::LockTypes locks); void unlock(QCamera::LockTypes locks); signals: void stateChanged(QCamera::State); void captureModeChanged(QCamera::CaptureModes); void statusChanged(QCamera::Status); void locked(); void lockFailed(); void lockStatusChanged(QCamera::LockStatus, QCamera::LockChangeReason); void lockStatusChanged(QCamera::LockType, QCamera::LockStatus, QCamera::LockChangeReason); void error(QCamera::Error); public: %If (Qt_5_5_0 -) struct FrameRateRange { %TypeHeaderCode #include %End FrameRateRange(qreal minimum, qreal maximum); FrameRateRange(); qreal minimumFrameRate; qreal maximumFrameRate; }; %End %If (Qt_5_5_0 -) QCameraViewfinderSettings viewfinderSettings() const; %End %If (Qt_5_5_0 -) void setViewfinderSettings(const QCameraViewfinderSettings &settings); %End %If (Qt_5_5_0 -) QList supportedViewfinderSettings(const QCameraViewfinderSettings &settings = QCameraViewfinderSettings()) const; %End %If (Qt_5_5_0 -) QList supportedViewfinderResolutions(const QCameraViewfinderSettings &settings = QCameraViewfinderSettings()) const; %End %If (Qt_5_5_0 -) QList supportedViewfinderFrameRateRanges(const QCameraViewfinderSettings &settings = QCameraViewfinderSettings()) const; %End %If (Qt_5_5_0 -) QList supportedViewfinderPixelFormats(const QCameraViewfinderSettings &settings = QCameraViewfinderSettings()) const; %End private: QCamera(const QCamera &); }; QFlags operator|(QCamera::LockType f1, QFlags f2); %If (Qt_5_5_0 -) bool operator==(const QCamera::FrameRateRange &r1, const QCamera::FrameRateRange &r2); %End %If (Qt_5_5_0 -) bool operator!=(const QCamera::FrameRateRange &r1, const QCamera::FrameRateRange &r2); %End PyQt5_gpl-5.10.1/sip/QtMultimedia/qcameraexposure.sip0000644000076500000240000001033213245233151022612 0ustar philstaff00000000000000// qcameraexposure.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCameraExposure : QObject { %TypeHeaderCode #include %End public: enum FlashMode { FlashAuto, FlashOff, FlashOn, FlashRedEyeReduction, FlashFill, FlashTorch, FlashVideoLight, FlashSlowSyncFrontCurtain, FlashSlowSyncRearCurtain, FlashManual, }; typedef QFlags FlashModes; enum ExposureMode { ExposureAuto, ExposureManual, ExposurePortrait, ExposureNight, ExposureBacklight, ExposureSpotlight, ExposureSports, ExposureSnow, ExposureBeach, ExposureLargeAperture, ExposureSmallAperture, %If (Qt_5_5_0 -) ExposureAction, %End %If (Qt_5_5_0 -) ExposureLandscape, %End %If (Qt_5_5_0 -) ExposureNightPortrait, %End %If (Qt_5_5_0 -) ExposureTheatre, %End %If (Qt_5_5_0 -) ExposureSunset, %End %If (Qt_5_5_0 -) ExposureSteadyPhoto, %End %If (Qt_5_5_0 -) ExposureFireworks, %End %If (Qt_5_5_0 -) ExposureParty, %End %If (Qt_5_5_0 -) ExposureCandlelight, %End %If (Qt_5_5_0 -) ExposureBarcode, %End ExposureModeVendor, }; enum MeteringMode { MeteringMatrix, MeteringAverage, MeteringSpot, }; bool isAvailable() const; QCameraExposure::FlashModes flashMode() const; bool isFlashModeSupported(QCameraExposure::FlashModes mode) const; bool isFlashReady() const; QCameraExposure::ExposureMode exposureMode() const; bool isExposureModeSupported(QCameraExposure::ExposureMode mode) const; qreal exposureCompensation() const; QCameraExposure::MeteringMode meteringMode() const; bool isMeteringModeSupported(QCameraExposure::MeteringMode mode) const; QPointF spotMeteringPoint() const; void setSpotMeteringPoint(const QPointF &point); int isoSensitivity() const; qreal aperture() const; qreal shutterSpeed() const; int requestedIsoSensitivity() const; qreal requestedAperture() const; qreal requestedShutterSpeed() const; QList supportedIsoSensitivities(bool *continuous = 0) const; QList supportedApertures(bool *continuous = 0) const; QList supportedShutterSpeeds(bool *continuous = 0) const; public slots: void setFlashMode(QCameraExposure::FlashModes mode); void setExposureMode(QCameraExposure::ExposureMode mode); void setMeteringMode(QCameraExposure::MeteringMode mode); void setExposureCompensation(qreal ev); void setManualIsoSensitivity(int iso); void setAutoIsoSensitivity(); void setManualAperture(qreal aperture); void setAutoAperture(); void setManualShutterSpeed(qreal seconds); void setAutoShutterSpeed(); signals: void flashReady(bool); void apertureChanged(qreal); void apertureRangeChanged(); void shutterSpeedChanged(qreal); void shutterSpeedRangeChanged(); void isoSensitivityChanged(int); void exposureCompensationChanged(qreal); private: explicit QCameraExposure(QCamera *parent /TransferThis/ = 0); virtual ~QCameraExposure(); QCameraExposure(const QCameraExposure &); }; QFlags operator|(QCameraExposure::FlashMode f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtMultimedia/qcamerafocus.sip0000644000076500000240000000606413245233151022066 0ustar philstaff00000000000000// qcamerafocus.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCameraFocusZone { %TypeHeaderCode #include %End public: enum FocusZoneStatus { Invalid, Unused, Selected, Focused, }; QCameraFocusZone(const QCameraFocusZone &other); bool operator==(const QCameraFocusZone &other) const; bool operator!=(const QCameraFocusZone &other) const; ~QCameraFocusZone(); bool isValid() const; QRectF area() const; QCameraFocusZone::FocusZoneStatus status() const; }; typedef QList QCameraFocusZoneList; class QCameraFocus : QObject { %TypeHeaderCode #include %End public: enum FocusMode { ManualFocus, HyperfocalFocus, InfinityFocus, AutoFocus, ContinuousFocus, MacroFocus, }; typedef QFlags FocusModes; enum FocusPointMode { FocusPointAuto, FocusPointCenter, FocusPointFaceDetection, FocusPointCustom, }; bool isAvailable() const; QFlags focusMode() const; void setFocusMode(QFlags mode); bool isFocusModeSupported(QFlags mode) const; QCameraFocus::FocusPointMode focusPointMode() const; void setFocusPointMode(QCameraFocus::FocusPointMode mode); bool isFocusPointModeSupported(QCameraFocus::FocusPointMode) const; QPointF customFocusPoint() const; void setCustomFocusPoint(const QPointF &point); QCameraFocusZoneList focusZones() const; qreal maximumOpticalZoom() const; qreal maximumDigitalZoom() const; qreal opticalZoom() const; qreal digitalZoom() const; void zoomTo(qreal opticalZoom, qreal digitalZoom); signals: void opticalZoomChanged(qreal); void digitalZoomChanged(qreal); void focusZonesChanged(); void maximumOpticalZoomChanged(qreal); void maximumDigitalZoomChanged(qreal); private: QCameraFocus(QCamera *camera); virtual ~QCameraFocus(); QCameraFocus(const QCameraFocus &); }; QFlags operator|(QCameraFocus::FocusMode f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtMultimedia/qcameraimagecapture.sip0000644000076500000240000000704113245233151023411 0ustar philstaff00000000000000// qcameraimagecapture.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCameraImageCapture : QObject, QMediaBindableInterface { %TypeHeaderCode #include %End public: enum Error { NoError, NotReadyError, ResourceError, OutOfSpaceError, NotSupportedFeatureError, FormatError, }; enum DriveMode { SingleImageCapture, }; enum CaptureDestination { CaptureToFile, CaptureToBuffer, }; typedef QFlags CaptureDestinations; QCameraImageCapture(QMediaObject *mediaObject, QObject *parent /TransferThis/ = 0); virtual ~QCameraImageCapture(); bool isAvailable() const; QMultimedia::AvailabilityStatus availability() const; virtual QMediaObject *mediaObject() const; QCameraImageCapture::Error error() const; QString errorString() const; bool isReadyForCapture() const; QStringList supportedImageCodecs() const; QString imageCodecDescription(const QString &codecName) const; QList supportedResolutions(const QImageEncoderSettings &settings = QImageEncoderSettings(), bool *continuous = 0) const; QImageEncoderSettings encodingSettings() const; void setEncodingSettings(const QImageEncoderSettings &settings); QList supportedBufferFormats() const; QVideoFrame::PixelFormat bufferFormat() const; void setBufferFormat(const QVideoFrame::PixelFormat format); bool isCaptureDestinationSupported(QCameraImageCapture::CaptureDestinations destination) const; QCameraImageCapture::CaptureDestinations captureDestination() const; void setCaptureDestination(QCameraImageCapture::CaptureDestinations destination); public slots: int capture(const QString &file = QString()) /ReleaseGIL/; void cancelCapture(); signals: void error(int id, QCameraImageCapture::Error error, const QString &errorString); void readyForCaptureChanged(bool); void bufferFormatChanged(QVideoFrame::PixelFormat); void captureDestinationChanged(QCameraImageCapture::CaptureDestinations); void imageExposed(int id); void imageCaptured(int id, const QImage &preview); void imageMetadataAvailable(int id, const QString &key, const QVariant &value); void imageAvailable(int id, const QVideoFrame &image); void imageSaved(int id, const QString &fileName); protected: virtual bool setMediaObject(QMediaObject *); private: QCameraImageCapture(const QCameraImageCapture &); }; QFlags operator|(QCameraImageCapture::CaptureDestination f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtMultimedia/qcameraimageprocessing.sip0000644000076500000240000000557513245233151024134 0ustar philstaff00000000000000// qcameraimageprocessing.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCameraImageProcessing : QObject { %TypeHeaderCode #include %End public: enum WhiteBalanceMode { WhiteBalanceAuto, WhiteBalanceManual, WhiteBalanceSunlight, WhiteBalanceCloudy, WhiteBalanceShade, WhiteBalanceTungsten, WhiteBalanceFluorescent, WhiteBalanceFlash, WhiteBalanceSunset, WhiteBalanceVendor, }; bool isAvailable() const; QCameraImageProcessing::WhiteBalanceMode whiteBalanceMode() const; void setWhiteBalanceMode(QCameraImageProcessing::WhiteBalanceMode mode); bool isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceMode mode) const; qreal manualWhiteBalance() const; void setManualWhiteBalance(qreal colorTemperature); qreal contrast() const; void setContrast(qreal value); qreal saturation() const; void setSaturation(qreal value); qreal sharpeningLevel() const; void setSharpeningLevel(qreal value); qreal denoisingLevel() const; void setDenoisingLevel(qreal value); private: QCameraImageProcessing(QCamera *camera); virtual ~QCameraImageProcessing(); QCameraImageProcessing(const QCameraImageProcessing &); public: %If (Qt_5_5_0 -) enum ColorFilter { ColorFilterNone, ColorFilterGrayscale, ColorFilterNegative, ColorFilterSolarize, ColorFilterSepia, ColorFilterPosterize, ColorFilterWhiteboard, ColorFilterBlackboard, ColorFilterAqua, ColorFilterVendor, }; %End %If (Qt_5_5_0 -) QCameraImageProcessing::ColorFilter colorFilter() const; %End %If (Qt_5_5_0 -) void setColorFilter(QCameraImageProcessing::ColorFilter filter); %End %If (Qt_5_5_0 -) bool isColorFilterSupported(QCameraImageProcessing::ColorFilter filter) const; %End %If (Qt_5_7_0 -) qreal brightness() const; %End %If (Qt_5_7_0 -) void setBrightness(qreal value); %End }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qcamerainfo.sip0000644000076500000240000000315713245233151021702 0ustar philstaff00000000000000// qcamerainfo.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class QCameraInfo { %TypeHeaderCode #include %End public: explicit QCameraInfo(const QByteArray &name = QByteArray()); explicit QCameraInfo(const QCamera &camera); QCameraInfo(const QCameraInfo &other); ~QCameraInfo(); bool isNull() const; QString deviceName() const; QString description() const; QCamera::Position position() const; int orientation() const; static QCameraInfo defaultCamera(); static QList availableCameras(QCamera::Position position = QCamera::UnspecifiedPosition); bool operator==(const QCameraInfo &other) const; bool operator!=(const QCameraInfo &other) const; }; %End PyQt5_gpl-5.10.1/sip/QtMultimedia/qcameraviewfindersettings.sip0000644000076500000240000000404213245233151024664 0ustar philstaff00000000000000// qcameraviewfindersettings.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QCameraViewfinderSettings { %TypeHeaderCode #include %End public: QCameraViewfinderSettings(); QCameraViewfinderSettings(const QCameraViewfinderSettings &other); ~QCameraViewfinderSettings(); void swap(QCameraViewfinderSettings &other /Constrained/); bool isNull() const; QSize resolution() const; void setResolution(const QSize &); void setResolution(int width, int height); qreal minimumFrameRate() const; void setMinimumFrameRate(qreal rate); qreal maximumFrameRate() const; void setMaximumFrameRate(qreal rate); QVideoFrame::PixelFormat pixelFormat() const; void setPixelFormat(QVideoFrame::PixelFormat format); QSize pixelAspectRatio() const; void setPixelAspectRatio(const QSize &ratio); void setPixelAspectRatio(int horizontal, int vertical); }; %End %If (Qt_5_5_0 -) bool operator==(const QCameraViewfinderSettings &lhs, const QCameraViewfinderSettings &rhs); %End %If (Qt_5_5_0 -) bool operator!=(const QCameraViewfinderSettings &lhs, const QCameraViewfinderSettings &rhs); %End PyQt5_gpl-5.10.1/sip/QtMultimedia/qmediabindableinterface.sip0000644000076500000240000000232013245233151024206 0ustar philstaff00000000000000// qmediabindableinterface.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaBindableInterface { %TypeHeaderCode #include %End public: virtual ~QMediaBindableInterface(); virtual QMediaObject *mediaObject() const = 0; protected: virtual bool setMediaObject(QMediaObject *object) = 0; }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qmediacontent.sip0000644000076500000240000000334113245233151022243 0ustar philstaff00000000000000// qmediacontent.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaContent { %TypeHeaderCode #include %End public: QMediaContent(); QMediaContent(const QUrl &contentUrl); QMediaContent(const QNetworkRequest &contentRequest); QMediaContent(const QMediaResource &contentResource); QMediaContent(const QMediaResourceList &resources); QMediaContent(const QMediaContent &other); QMediaContent(QMediaPlaylist *playlist, const QUrl &contentUrl = QUrl()); ~QMediaContent(); bool operator==(const QMediaContent &other) const; bool operator!=(const QMediaContent &other) const; bool isNull() const; QUrl canonicalUrl() const; QNetworkRequest canonicalRequest() const; QMediaResource canonicalResource() const; QMediaResourceList resources() const; QMediaPlaylist *playlist() const; }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qmediacontrol.sip0000644000076500000240000000234713245233151022256 0ustar philstaff00000000000000// qmediacontrol.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaControl : QObject { %TypeHeaderCode #include %End public: virtual ~QMediaControl(); protected: %If (Qt_5_6_1 -) explicit QMediaControl(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QMediaControl(QObject *parent /TransferThis/ = 0); %End }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qmediaencodersettings.sip0000644000076500000240000000772013245233151023776 0ustar philstaff00000000000000// qmediaencodersettings.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAudioEncoderSettings { %TypeHeaderCode #include %End public: QAudioEncoderSettings(); QAudioEncoderSettings(const QAudioEncoderSettings &other); ~QAudioEncoderSettings(); bool operator==(const QAudioEncoderSettings &other) const; bool operator!=(const QAudioEncoderSettings &other) const; bool isNull() const; QMultimedia::EncodingMode encodingMode() const; void setEncodingMode(QMultimedia::EncodingMode); QString codec() const; void setCodec(const QString &codec); int bitRate() const; void setBitRate(int bitrate); int channelCount() const; void setChannelCount(int channels); int sampleRate() const; void setSampleRate(int rate); QMultimedia::EncodingQuality quality() const; void setQuality(QMultimedia::EncodingQuality quality); QVariant encodingOption(const QString &option) const; QVariantMap encodingOptions() const; void setEncodingOption(const QString &option, const QVariant &value); void setEncodingOptions(const QVariantMap &options); }; class QVideoEncoderSettings { %TypeHeaderCode #include %End public: QVideoEncoderSettings(); QVideoEncoderSettings(const QVideoEncoderSettings &other); ~QVideoEncoderSettings(); bool operator==(const QVideoEncoderSettings &other) const; bool operator!=(const QVideoEncoderSettings &other) const; bool isNull() const; QMultimedia::EncodingMode encodingMode() const; void setEncodingMode(QMultimedia::EncodingMode); QString codec() const; void setCodec(const QString &); QSize resolution() const; void setResolution(const QSize &); void setResolution(int width, int height); qreal frameRate() const; void setFrameRate(qreal rate); int bitRate() const; void setBitRate(int bitrate); QMultimedia::EncodingQuality quality() const; void setQuality(QMultimedia::EncodingQuality quality); QVariant encodingOption(const QString &option) const; QVariantMap encodingOptions() const; void setEncodingOption(const QString &option, const QVariant &value); void setEncodingOptions(const QVariantMap &options); }; class QImageEncoderSettings { %TypeHeaderCode #include %End public: QImageEncoderSettings(); QImageEncoderSettings(const QImageEncoderSettings &other); ~QImageEncoderSettings(); bool operator==(const QImageEncoderSettings &other) const; bool operator!=(const QImageEncoderSettings &other) const; bool isNull() const; QString codec() const; void setCodec(const QString &); QSize resolution() const; void setResolution(const QSize &); void setResolution(int width, int height); QMultimedia::EncodingQuality quality() const; void setQuality(QMultimedia::EncodingQuality quality); QVariant encodingOption(const QString &option) const; QVariantMap encodingOptions() const; void setEncodingOption(const QString &option, const QVariant &value); void setEncodingOptions(const QVariantMap &options); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qmediametadata.sip0000644000076500000240000000744113245233151022356 0ustar philstaff00000000000000// qmediametadata.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QMediaMetaData { %TypeHeaderCode #include %End const QString Title; const QString SubTitle; const QString Author; const QString Comment; const QString Description; const QString Category; const QString Genre; const QString Year; const QString Date; const QString UserRating; const QString Keywords; const QString Language; const QString Publisher; const QString Copyright; const QString ParentalRating; const QString RatingOrganization; const QString Size; const QString MediaType; const QString Duration; const QString AudioBitRate; const QString AudioCodec; const QString AverageLevel; const QString ChannelCount; const QString PeakValue; const QString SampleRate; const QString AlbumTitle; const QString AlbumArtist; const QString ContributingArtist; const QString Composer; const QString Conductor; const QString Lyrics; const QString Mood; const QString TrackNumber; const QString TrackCount; const QString CoverArtUrlSmall; const QString CoverArtUrlLarge; const QString Resolution; const QString PixelAspectRatio; const QString VideoFrameRate; const QString VideoBitRate; const QString VideoCodec; const QString PosterUrl; const QString ChapterNumber; const QString Director; const QString LeadPerformer; const QString Writer; const QString CameraManufacturer; const QString CameraModel; const QString Event; const QString Subject; const QString Orientation; const QString ExposureTime; const QString FNumber; const QString ExposureProgram; const QString ISOSpeedRatings; const QString ExposureBiasValue; const QString DateTimeOriginal; const QString DateTimeDigitized; const QString SubjectDistance; const QString MeteringMode; const QString LightSource; const QString Flash; const QString FocalLength; const QString ExposureMode; const QString WhiteBalance; const QString DigitalZoomRatio; const QString FocalLengthIn35mmFilm; const QString SceneCaptureType; const QString GainControl; const QString Contrast; const QString Saturation; const QString Sharpness; const QString DeviceSettingDescription; const QString GPSLatitude; const QString GPSLongitude; const QString GPSAltitude; const QString GPSTimeStamp; const QString GPSSatellites; const QString GPSStatus; const QString GPSDOP; const QString GPSSpeed; const QString GPSTrack; const QString GPSTrackRef; const QString GPSImgDirection; const QString GPSImgDirectionRef; const QString GPSMapDatum; const QString GPSProcessingMethod; const QString GPSAreaInformation; const QString PosterImage; const QString CoverArtImage; const QString ThumbnailImage; }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qmediaobject.sip0000644000076500000240000000367113245233151022045 0ustar philstaff00000000000000// qmediaobject.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaObject : QObject { %TypeHeaderCode #include %End public: virtual ~QMediaObject(); virtual bool isAvailable() const; virtual QMultimedia::AvailabilityStatus availability() const; virtual QMediaService *service() const; int notifyInterval() const; void setNotifyInterval(int milliSeconds); virtual bool bind(QObject *); virtual void unbind(QObject *); bool isMetaDataAvailable() const; QVariant metaData(const QString &key) const; QStringList availableMetaData() const; signals: void notifyIntervalChanged(int milliSeconds); void metaDataAvailableChanged(bool available); void metaDataChanged(); void metaDataChanged(const QString &key, const QVariant &value); void availabilityChanged(QMultimedia::AvailabilityStatus availability); protected: QMediaObject(QObject *parent /TransferThis/, QMediaService *service); void addPropertyWatch(const QByteArray &name); void removePropertyWatch(const QByteArray &name); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qmediaplayer.sip0000644000076500000240000001065613245233151022074 0ustar philstaff00000000000000// qmediaplayer.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsVideoItem /External/; class QVideoWidget /External/; class QMediaPlayer : QMediaObject { %TypeHeaderCode #include %End public: enum State { StoppedState, PlayingState, PausedState, }; enum MediaStatus { UnknownMediaStatus, NoMedia, LoadingMedia, LoadedMedia, StalledMedia, BufferingMedia, BufferedMedia, EndOfMedia, InvalidMedia, }; enum Flag { LowLatency, StreamPlayback, VideoSurface, }; typedef QFlags Flags; enum Error { NoError, ResourceError, FormatError, NetworkError, AccessDeniedError, ServiceMissingError, }; QMediaPlayer(QObject *parent /TransferThis/ = 0, QMediaPlayer::Flags flags = 0); virtual ~QMediaPlayer(); static QMultimedia::SupportEstimate hasSupport(const QString &mimeType, const QStringList &codecs = QStringList(), QMediaPlayer::Flags flags = 0); static QStringList supportedMimeTypes(QMediaPlayer::Flags flags = 0); void setVideoOutput(QVideoWidget *); void setVideoOutput(QGraphicsVideoItem *); void setVideoOutput(QAbstractVideoSurface *surface); QMediaContent media() const; const QIODevice *mediaStream() const; QMediaPlaylist *playlist() const; QMediaContent currentMedia() const; QMediaPlayer::State state() const; QMediaPlayer::MediaStatus mediaStatus() const; qint64 duration() const; qint64 position() const; int volume() const; bool isMuted() const; bool isAudioAvailable() const; bool isVideoAvailable() const; int bufferStatus() const; bool isSeekable() const; qreal playbackRate() const; QMediaPlayer::Error error() const; QString errorString() const; QNetworkConfiguration currentNetworkConfiguration() const; virtual QMultimedia::AvailabilityStatus availability() const; public slots: void play(); void pause(); void stop(); void setPosition(qint64 position); void setVolume(int volume); void setMuted(bool muted); void setPlaybackRate(qreal rate); void setMedia(const QMediaContent &media, QIODevice *stream = 0); void setPlaylist(QMediaPlaylist *playlist); void setNetworkConfigurations(const QList &configurations); signals: void mediaChanged(const QMediaContent &media); void currentMediaChanged(const QMediaContent &media); void stateChanged(QMediaPlayer::State newState); void mediaStatusChanged(QMediaPlayer::MediaStatus status); void durationChanged(qint64 duration); void positionChanged(qint64 position); void volumeChanged(int volume); void mutedChanged(bool muted); void audioAvailableChanged(bool available); void videoAvailableChanged(bool videoAvailable); void bufferStatusChanged(int percentFilled); void seekableChanged(bool seekable); void playbackRateChanged(qreal rate); void error(QMediaPlayer::Error error); void networkConfigurationChanged(const QNetworkConfiguration &configuration); public: virtual bool bind(QObject *); virtual void unbind(QObject *); %If (Qt_5_6_0 -) QAudio::Role audioRole() const; %End %If (Qt_5_6_0 -) void setAudioRole(QAudio::Role audioRole); %End %If (Qt_5_6_0 -) QList supportedAudioRoles() const; %End signals: %If (Qt_5_6_0 -) void audioRoleChanged(QAudio::Role role); %End private: QMediaPlayer(const QMediaPlayer &); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qmediaplaylist.sip0000644000076500000240000000657713245233151022450 0ustar philstaff00000000000000// qmediaplaylist.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaPlaylist : QObject, QMediaBindableInterface { %TypeHeaderCode #include %End public: enum PlaybackMode { CurrentItemOnce, CurrentItemInLoop, Sequential, Loop, Random, }; enum Error { NoError, FormatError, FormatNotSupportedError, NetworkError, AccessDeniedError, }; %If (Qt_5_6_1 -) explicit QMediaPlaylist(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QMediaPlaylist(QObject *parent /TransferThis/ = 0); %End virtual ~QMediaPlaylist(); virtual QMediaObject *mediaObject() const; QMediaPlaylist::PlaybackMode playbackMode() const; void setPlaybackMode(QMediaPlaylist::PlaybackMode mode); int currentIndex() const; QMediaContent currentMedia() const; int nextIndex(int steps = 1) const; int previousIndex(int steps = 1) const; QMediaContent media(int index) const; int mediaCount() const; bool isEmpty() const; bool isReadOnly() const; bool addMedia(const QMediaContent &content); bool addMedia(const QList &items); bool insertMedia(int index, const QMediaContent &content); bool insertMedia(int index, const QList &items); bool removeMedia(int pos); bool removeMedia(int start, int end); bool clear(); void load(const QNetworkRequest &request, const char *format = 0) /ReleaseGIL/; void load(const QUrl &location, const char *format = 0) /ReleaseGIL/; void load(QIODevice *device, const char *format = 0) /ReleaseGIL/; bool save(const QUrl &location, const char *format = 0) /ReleaseGIL/; bool save(QIODevice *device, const char *format) /ReleaseGIL/; QMediaPlaylist::Error error() const; QString errorString() const; %If (Qt_5_7_0 -) bool moveMedia(int from, int to); %End public slots: void shuffle(); void next(); void previous(); void setCurrentIndex(int index); signals: void currentIndexChanged(int index); void playbackModeChanged(QMediaPlaylist::PlaybackMode mode); void currentMediaChanged(const QMediaContent &); void mediaAboutToBeInserted(int start, int end); void mediaInserted(int start, int end); void mediaAboutToBeRemoved(int start, int end); void mediaRemoved(int start, int end); void mediaChanged(int start, int end); void loaded(); void loadFailed(); protected: virtual bool setMediaObject(QMediaObject *object); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qmediarecorder.sip0000644000076500000240000001047213245233151022401 0ustar philstaff00000000000000// qmediarecorder.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaRecorder : QObject, QMediaBindableInterface { %TypeHeaderCode #include %End public: enum State { StoppedState, RecordingState, PausedState, }; enum Status { UnavailableStatus, UnloadedStatus, LoadingStatus, LoadedStatus, StartingStatus, RecordingStatus, PausedStatus, FinalizingStatus, }; enum Error { NoError, ResourceError, FormatError, OutOfSpaceError, }; QMediaRecorder(QMediaObject *mediaObject, QObject *parent /TransferThis/ = 0); virtual ~QMediaRecorder(); virtual QMediaObject *mediaObject() const; bool isAvailable() const; QMultimedia::AvailabilityStatus availability() const; QUrl outputLocation() const; bool setOutputLocation(const QUrl &location); QUrl actualLocation() const; QMediaRecorder::State state() const; QMediaRecorder::Status status() const; QMediaRecorder::Error error() const; QString errorString() const; qint64 duration() const; bool isMuted() const; qreal volume() const; QStringList supportedContainers() const; QString containerDescription(const QString &format) const; QStringList supportedAudioCodecs() const; QString audioCodecDescription(const QString &codecName) const; QList supportedAudioSampleRates(const QAudioEncoderSettings &settings = QAudioEncoderSettings(), bool *continuous = 0) const; QStringList supportedVideoCodecs() const; QString videoCodecDescription(const QString &codecName) const; QList supportedResolutions(const QVideoEncoderSettings &settings = QVideoEncoderSettings(), bool *continuous = 0) const; QList supportedFrameRates(const QVideoEncoderSettings &settings = QVideoEncoderSettings(), bool *continuous = 0) const; QAudioEncoderSettings audioSettings() const; QVideoEncoderSettings videoSettings() const; QString containerFormat() const; void setAudioSettings(const QAudioEncoderSettings &audioSettings); void setVideoSettings(const QVideoEncoderSettings &videoSettings); void setContainerFormat(const QString &container); void setEncodingSettings(const QAudioEncoderSettings &audio, const QVideoEncoderSettings &video = QVideoEncoderSettings(), const QString &container = QString()); bool isMetaDataAvailable() const; bool isMetaDataWritable() const; QVariant metaData(const QString &key) const; void setMetaData(const QString &key, const QVariant &value); QStringList availableMetaData() const; public slots: void record(); void pause(); void stop(); void setMuted(bool muted); void setVolume(qreal volume); signals: void stateChanged(QMediaRecorder::State state); void statusChanged(QMediaRecorder::Status status); void durationChanged(qint64 duration); void mutedChanged(bool muted); void volumeChanged(qreal volume); void actualLocationChanged(const QUrl &location); void error(QMediaRecorder::Error error); void metaDataAvailableChanged(bool available); void metaDataWritableChanged(bool writable); void metaDataChanged(const QString &key, const QVariant &value); void availabilityChanged(QMultimedia::AvailabilityStatus availability); protected: virtual bool setMediaObject(QMediaObject *object); private: QMediaRecorder(const QMediaRecorder &); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qmediaresource.sip0000644000076500000240000000434313245233151022423 0ustar philstaff00000000000000// qmediaresource.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaResource { %TypeHeaderCode #include %End public: QMediaResource(); QMediaResource(const QUrl &url, const QString &mimeType = QString()); QMediaResource(const QNetworkRequest &request, const QString &mimeType = QString()); QMediaResource(const QMediaResource &other); ~QMediaResource(); bool isNull() const; bool operator==(const QMediaResource &other) const; bool operator!=(const QMediaResource &other) const; QUrl url() const; QNetworkRequest request() const; QString mimeType() const; QString language() const; void setLanguage(const QString &language); QString audioCodec() const; void setAudioCodec(const QString &codec); QString videoCodec() const; void setVideoCodec(const QString &codec); qint64 dataSize() const; void setDataSize(const qint64 size); int audioBitRate() const; void setAudioBitRate(int rate); int sampleRate() const; void setSampleRate(int frequency); int channelCount() const; void setChannelCount(int channels); int videoBitRate() const; void setVideoBitRate(int rate); QSize resolution() const; void setResolution(const QSize &resolution); void setResolution(int width, int height); }; typedef QList QMediaResourceList; PyQt5_gpl-5.10.1/sip/QtMultimedia/qmediaservice.sip0000644000076500000240000000236513245233151022236 0ustar philstaff00000000000000// qmediaservice.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaService : QObject { %TypeHeaderCode #include %End public: virtual ~QMediaService(); virtual QMediaControl *requestControl(const char *name) = 0; virtual void releaseControl(QMediaControl *control) = 0; protected: QMediaService(QObject *parent /TransferThis/); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qmediatimerange.sip0000644000076500000240000000551113245233151022545 0ustar philstaff00000000000000// qmediatimerange.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMediaTimeInterval { %TypeHeaderCode #include %End public: QMediaTimeInterval(); QMediaTimeInterval(qint64 start, qint64 end); QMediaTimeInterval(const QMediaTimeInterval &); qint64 start() const; qint64 end() const; bool contains(qint64 time) const; bool isNormal() const; QMediaTimeInterval normalized() const; QMediaTimeInterval translated(qint64 offset) const; }; bool operator==(const QMediaTimeInterval &, const QMediaTimeInterval &); bool operator!=(const QMediaTimeInterval &, const QMediaTimeInterval &); class QMediaTimeRange { %TypeHeaderCode #include %End public: QMediaTimeRange(); QMediaTimeRange(qint64 start, qint64 end); QMediaTimeRange(const QMediaTimeInterval &); QMediaTimeRange(const QMediaTimeRange &range); ~QMediaTimeRange(); qint64 earliestTime() const; qint64 latestTime() const; QList intervals() const; bool isEmpty() const; bool isContinuous() const; bool contains(qint64 time) const; void addInterval(qint64 start, qint64 end); void addInterval(const QMediaTimeInterval &interval); void addTimeRange(const QMediaTimeRange &); void removeInterval(qint64 start, qint64 end); void removeInterval(const QMediaTimeInterval &interval); void removeTimeRange(const QMediaTimeRange &); QMediaTimeRange &operator+=(const QMediaTimeRange &); QMediaTimeRange &operator+=(const QMediaTimeInterval &); QMediaTimeRange &operator-=(const QMediaTimeRange &); QMediaTimeRange &operator-=(const QMediaTimeInterval &); void clear(); }; bool operator==(const QMediaTimeRange &, const QMediaTimeRange &); bool operator!=(const QMediaTimeRange &, const QMediaTimeRange &); QMediaTimeRange operator+(const QMediaTimeRange &, const QMediaTimeRange &); QMediaTimeRange operator-(const QMediaTimeRange &, const QMediaTimeRange &); PyQt5_gpl-5.10.1/sip/QtMultimedia/qmultimedia.sip0000644000076500000240000000310013245233151021714 0ustar philstaff00000000000000// qmultimedia.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QMultimedia { %TypeHeaderCode #include %End enum SupportEstimate { NotSupported, MaybeSupported, ProbablySupported, PreferredService, }; enum EncodingQuality { VeryLowQuality, LowQuality, NormalQuality, HighQuality, VeryHighQuality, }; enum EncodingMode { ConstantQualityEncoding, ConstantBitRateEncoding, AverageBitRateEncoding, TwoPassEncoding, }; enum AvailabilityStatus { Available, ServiceMissing, Busy, ResourceError, }; }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qpymultimedia_qlist.sip0000644000076500000240000002147313245233151023516 0ustar philstaff00000000000000// This is the SIP interface definition for the QList based mapped types // specific to the QtMultimedia module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QList /TypeHintIn="Iterable[QVideoFrame.PixelFormat]", TypeHintOut="List[QVideoFrame.PixelFormat]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QVideoFrame_PixelFormat); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QVideoFrame_PixelFormat); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QVideoFrame.PixelFormat' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %MappedType QList /TypeHintIn="Iterable[QAudioFormat.Endian]", TypeHintOut="List[QAudioFormat.Endian]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QAudioFormat_Endian); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QAudioFormat_Endian); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QAudioFormat.Endian' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %MappedType QList /TypeHintIn="Iterable[QAudioFormat.SampleType]", TypeHintOut="List[QAudioFormat.SampleType]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QAudioFormat_SampleType); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QAudioFormat_SampleType); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QAudioFormat.SampleType' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %If (Qt_5_6_0 -) %MappedType QList /TypeHintIn="Iterable[QAudio.Role]", TypeHintOut="List[QAudio.Role]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QAudio_Role); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QAudio_Role); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QAudio.Role' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %End PyQt5_gpl-5.10.1/sip/QtMultimedia/qradiodata.sip0000644000076500000240000000621513245233151021524 0ustar philstaff00000000000000// qradiodata.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRadioData : QObject, QMediaBindableInterface { %TypeHeaderCode #include %End public: enum Error { NoError, ResourceError, OpenError, OutOfRangeError, }; enum ProgramType { Undefined, News, CurrentAffairs, Information, Sport, Education, Drama, Culture, Science, Varied, PopMusic, RockMusic, EasyListening, LightClassical, SeriousClassical, OtherMusic, Weather, Finance, ChildrensProgrammes, SocialAffairs, Religion, PhoneIn, Travel, Leisure, JazzMusic, CountryMusic, NationalMusic, OldiesMusic, FolkMusic, Documentary, AlarmTest, Alarm, Talk, ClassicRock, AdultHits, SoftRock, Top40, Soft, Nostalgia, Classical, RhythmAndBlues, SoftRhythmAndBlues, Language, ReligiousMusic, ReligiousTalk, Personality, Public, College, }; QRadioData(QMediaObject *mediaObject, QObject *parent /TransferThis/ = 0); virtual ~QRadioData(); virtual QMediaObject *mediaObject() const; QMultimedia::AvailabilityStatus availability() const; QString stationId() const; QRadioData::ProgramType programType() const; QString programTypeName() const; QString stationName() const; QString radioText() const; bool isAlternativeFrequenciesEnabled() const; QRadioData::Error error() const; QString errorString() const; public slots: void setAlternativeFrequenciesEnabled(bool enabled); signals: void stationIdChanged(QString stationId); void programTypeChanged(QRadioData::ProgramType programType); void programTypeNameChanged(QString programTypeName); void stationNameChanged(QString stationName); void radioTextChanged(QString radioText); void alternativeFrequenciesEnabledChanged(bool enabled); void error(QRadioData::Error error); protected: virtual bool setMediaObject(QMediaObject *); private: QRadioData(const QRadioData &); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qradiotuner.sip0000644000076500000240000000637413245233151021756 0ustar philstaff00000000000000// qradiotuner.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRadioTuner : QMediaObject { %TypeHeaderCode #include %End public: enum State { ActiveState, StoppedState, }; enum Band { AM, FM, SW, LW, FM2, }; enum Error { NoError, ResourceError, OpenError, OutOfRangeError, }; enum StereoMode { ForceStereo, ForceMono, Auto, }; enum SearchMode { SearchFast, SearchGetStationId, }; %If (Qt_5_6_1 -) explicit QRadioTuner(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QRadioTuner(QObject *parent /TransferThis/ = 0); %End virtual ~QRadioTuner(); virtual QMultimedia::AvailabilityStatus availability() const; QRadioTuner::State state() const; QRadioTuner::Band band() const; bool isBandSupported(QRadioTuner::Band b) const; int frequency() const; int frequencyStep(QRadioTuner::Band band) const; QPair frequencyRange(QRadioTuner::Band band) const; bool isStereo() const; void setStereoMode(QRadioTuner::StereoMode mode); QRadioTuner::StereoMode stereoMode() const; int signalStrength() const; int volume() const; bool isMuted() const; bool isSearching() const; bool isAntennaConnected() const; QRadioTuner::Error error() const; QString errorString() const; QRadioData *radioData() const; public slots: void searchForward(); void searchBackward(); void searchAllStations(QRadioTuner::SearchMode searchMode = QRadioTuner::SearchFast); void cancelSearch(); void setBand(QRadioTuner::Band band); void setFrequency(int frequency); void setVolume(int volume); void setMuted(bool muted); void start(); void stop(); signals: void stateChanged(QRadioTuner::State state); void bandChanged(QRadioTuner::Band band); void frequencyChanged(int frequency); void stereoStatusChanged(bool stereo); void searchingChanged(bool searching); void signalStrengthChanged(int signalStrength); void volumeChanged(int volume); void mutedChanged(bool muted); void stationFound(int frequency, QString stationId); void antennaConnectedChanged(bool connectionStatus); void error(QRadioTuner::Error error); private: QRadioTuner(const QRadioTuner &); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qsound.sip0000644000076500000240000000257513245233151020731 0ustar philstaff00000000000000// qsound.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSound : QObject { %TypeHeaderCode #include %End public: enum Loop { Infinite, }; QSound(const QString &filename, QObject *parent /TransferThis/ = 0); virtual ~QSound(); static void play(const QString &filename); int loops() const; int loopsRemaining() const; void setLoops(int); QString fileName() const; bool isFinished() const; public slots: void play(); void stop(); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qsoundeffect.sip0000644000076500000240000000411613245233151022077 0ustar philstaff00000000000000// qsoundeffect.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSoundEffect : QObject { %TypeHeaderCode #include %End public: enum Loop { Infinite, }; enum Status { Null, Loading, Ready, Error, }; explicit QSoundEffect(QObject *parent /TransferThis/ = 0); virtual ~QSoundEffect(); static QStringList supportedMimeTypes(); QUrl source() const; void setSource(const QUrl &url); int loopCount() const; int loopsRemaining() const; void setLoopCount(int loopCount); qreal volume() const; void setVolume(qreal volume); bool isMuted() const; void setMuted(bool muted); bool isLoaded() const; bool isPlaying() const; QSoundEffect::Status status() const; QString category() const; void setCategory(const QString &category); signals: void sourceChanged(); void loopCountChanged(); void loopsRemainingChanged(); void volumeChanged(); void mutedChanged(); void loadedChanged(); void playingChanged(); void statusChanged(); void categoryChanged(); public slots: void play(); void stop(); private: QSoundEffect(const QSoundEffect &); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/QtMultimediamod.sip0000644000076500000240000000604713245233151022515 0ustar philstaff00000000000000// QtMultimediamod.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtMultimedia, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qabstractvideobuffer.sip %Include qabstractvideofilter.sip %Include qabstractvideosurface.sip %Include qaudio.sip %Include qaudiobuffer.sip %Include qaudiodecoder.sip %Include qaudiodeviceinfo.sip %Include qaudioformat.sip %Include qaudioinput.sip %Include qaudiooutput.sip %Include qaudioprobe.sip %Include qaudiorecorder.sip %Include qcamera.sip %Include qcameraexposure.sip %Include qcamerafocus.sip %Include qcameraimagecapture.sip %Include qcameraimageprocessing.sip %Include qcamerainfo.sip %Include qcameraviewfindersettings.sip %Include qmediabindableinterface.sip %Include qmediacontent.sip %Include qmediacontrol.sip %Include qmediaencodersettings.sip %Include qmediametadata.sip %Include qmediaobject.sip %Include qmediaplayer.sip %Include qmediaplaylist.sip %Include qmediarecorder.sip %Include qmediaresource.sip %Include qmediaservice.sip %Include qmediatimerange.sip %Include qmultimedia.sip %Include qradiodata.sip %Include qradiotuner.sip %Include qsound.sip %Include qsoundeffect.sip %Include qvideoframe.sip %Include qvideoprobe.sip %Include qvideosurfaceformat.sip %Include qpymultimedia_qlist.sip PyQt5_gpl-5.10.1/sip/QtMultimedia/qvideoframe.sip0000644000076500000240000001003713245233151021712 0ustar philstaff00000000000000// qvideoframe.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QVideoFrame { %TypeHeaderCode #include %End public: enum FieldType { ProgressiveFrame, TopField, BottomField, InterlacedFrame, }; enum PixelFormat { Format_Invalid, Format_ARGB32, Format_ARGB32_Premultiplied, Format_RGB32, Format_RGB24, Format_RGB565, Format_RGB555, Format_ARGB8565_Premultiplied, Format_BGRA32, Format_BGRA32_Premultiplied, Format_BGR32, Format_BGR24, Format_BGR565, Format_BGR555, Format_BGRA5658_Premultiplied, Format_AYUV444, Format_AYUV444_Premultiplied, Format_YUV444, Format_YUV420P, Format_YV12, Format_UYVY, Format_YUYV, Format_NV12, Format_NV21, Format_IMC1, Format_IMC2, Format_IMC3, Format_IMC4, Format_Y8, Format_Y16, Format_Jpeg, Format_CameraRaw, Format_AdobeDng, Format_User, }; QVideoFrame(); QVideoFrame(QAbstractVideoBuffer *buffer, const QSize &size, QVideoFrame::PixelFormat format); QVideoFrame(int bytes, const QSize &size, int bytesPerLine, QVideoFrame::PixelFormat format); QVideoFrame(const QImage &image); QVideoFrame(const QVideoFrame &other); ~QVideoFrame(); bool isValid() const; QVideoFrame::PixelFormat pixelFormat() const; QAbstractVideoBuffer::HandleType handleType() const; QSize size() const; int width() const; int height() const; QVideoFrame::FieldType fieldType() const; void setFieldType(QVideoFrame::FieldType); bool isMapped() const; bool isReadable() const; bool isWritable() const; QAbstractVideoBuffer::MapMode mapMode() const; bool map(QAbstractVideoBuffer::MapMode mode); void unmap(); int bytesPerLine() const; %If (Qt_5_4_0 -) int bytesPerLine(int plane) const; %End SIP_PYOBJECT bits() /TypeHint="sip.voidptr"/; %MethodCode uchar *mem; Py_BEGIN_ALLOW_THREADS mem = sipCpp->bits(); Py_END_ALLOW_THREADS if (mem) { sipRes = sipConvertFromVoidPtrAndSize(mem, sipCpp->mappedBytes()); } else { sipRes = Py_None; Py_INCREF(sipRes); } %End %If (Qt_5_4_0 -) void *bits(int plane) [uchar * (int plane)]; %End int mappedBytes() const; QVariant handle() const; qint64 startTime() const; void setStartTime(qint64 time); qint64 endTime() const; void setEndTime(qint64 time); static QVideoFrame::PixelFormat pixelFormatFromImageFormat(QImage::Format format); static QImage::Format imageFormatFromPixelFormat(QVideoFrame::PixelFormat format); QVariantMap availableMetaData() const; QVariant metaData(const QString &key) const; void setMetaData(const QString &key, const QVariant &value); %If (Qt_5_4_0 -) int planeCount() const; %End %If (Qt_5_5_0 -) bool operator==(const QVideoFrame &other) const; %End %If (Qt_5_5_0 -) bool operator!=(const QVideoFrame &other) const; %End }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qvideoprobe.sip0000644000076500000240000000246513245233151021735 0ustar philstaff00000000000000// qvideoprobe.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QVideoProbe : QObject { %TypeHeaderCode #include %End public: explicit QVideoProbe(QObject *parent /TransferThis/ = 0); virtual ~QVideoProbe(); bool setSource(QMediaObject *source); bool setSource(QMediaRecorder *source); bool isActive() const; signals: void videoFrameProbed(const QVideoFrame &videoFrame); void flush(); }; PyQt5_gpl-5.10.1/sip/QtMultimedia/qvideosurfaceformat.sip0000644000076500000240000000526413245233151023467 0ustar philstaff00000000000000// qvideosurfaceformat.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QVideoSurfaceFormat { %TypeHeaderCode #include %End public: enum Direction { TopToBottom, BottomToTop, }; enum YCbCrColorSpace { YCbCr_Undefined, YCbCr_BT601, YCbCr_BT709, YCbCr_xvYCC601, YCbCr_xvYCC709, YCbCr_JPEG, }; QVideoSurfaceFormat(); QVideoSurfaceFormat(const QSize &size, QVideoFrame::PixelFormat format, QAbstractVideoBuffer::HandleType type = QAbstractVideoBuffer::NoHandle); QVideoSurfaceFormat(const QVideoSurfaceFormat &format); ~QVideoSurfaceFormat(); bool operator==(const QVideoSurfaceFormat &format) const; bool operator!=(const QVideoSurfaceFormat &format) const; bool isValid() const; QVideoFrame::PixelFormat pixelFormat() const; QAbstractVideoBuffer::HandleType handleType() const; QSize frameSize() const; void setFrameSize(const QSize &size); void setFrameSize(int width, int height); int frameWidth() const; int frameHeight() const; QRect viewport() const; void setViewport(const QRect &viewport); QVideoSurfaceFormat::Direction scanLineDirection() const; void setScanLineDirection(QVideoSurfaceFormat::Direction direction); qreal frameRate() const; void setFrameRate(qreal rate); QSize pixelAspectRatio() const; void setPixelAspectRatio(const QSize &ratio); void setPixelAspectRatio(int width, int height); QVideoSurfaceFormat::YCbCrColorSpace yCbCrColorSpace() const; void setYCbCrColorSpace(QVideoSurfaceFormat::YCbCrColorSpace colorSpace); QSize sizeHint() const; QList propertyNames() const; QVariant property(const char *name) const; void setProperty(const char *name, const QVariant &value); }; PyQt5_gpl-5.10.1/sip/QtMultimediaWidgets/0000755000076500000240000000000013245233151020221 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtMultimediaWidgets/qcameraviewfinder.sip0000644000076500000240000000265513245233151024442 0ustar philstaff00000000000000// qcameraviewfinder.sip generated by MetaSIP // // This file is part of the QtMultimediaWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCameraViewfinder : QVideoWidget { %TypeHeaderCode #include %End public: %If (Qt_5_6_1 -) explicit QCameraViewfinder(QWidget *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QCameraViewfinder(QWidget *parent /TransferThis/ = 0); %End virtual ~QCameraViewfinder(); virtual QMediaObject *mediaObject() const; protected: virtual bool setMediaObject(QMediaObject *object); private: QCameraViewfinder(const QCameraViewfinder &); }; PyQt5_gpl-5.10.1/sip/QtMultimediaWidgets/qgraphicsvideoitem.sip0000644000076500000240000000503213245233151024625 0ustar philstaff00000000000000// qgraphicsvideoitem.sip generated by MetaSIP // // This file is part of the QtMultimediaWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsVideoItem : QGraphicsObject, QMediaBindableInterface { %TypeHeaderCode #include %End %ConvertToSubClassCode // QGraphicsVideoItem doesn't reimplement type() so we hope nothing collides // with the default. if (sipCpp->type() == QGraphicsItem::UserType) { // We need to explicitly cast because of the multiple inheritance. *sipCppRet = static_cast(sipCpp); sipType = sipType_QGraphicsVideoItem; } else { sipType = 0; } %End public: %If (Qt_5_6_1 -) explicit QGraphicsVideoItem(QGraphicsItem *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QGraphicsVideoItem(QGraphicsItem *parent /TransferThis/ = 0); %End virtual ~QGraphicsVideoItem(); virtual QMediaObject *mediaObject() const; Qt::AspectRatioMode aspectRatioMode() const; void setAspectRatioMode(Qt::AspectRatioMode mode); QPointF offset() const; void setOffset(const QPointF &offset); QSizeF size() const; void setSize(const QSizeF &size); QSizeF nativeSize() const; virtual QRectF boundingRect() const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); signals: void nativeSizeChanged(const QSizeF &size); protected: virtual void timerEvent(QTimerEvent *event); virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value); virtual bool setMediaObject(QMediaObject *object); }; %ModuleHeaderCode // This is needed by the %ConvertToSubClassCode. #include %End PyQt5_gpl-5.10.1/sip/QtMultimediaWidgets/QtMultimediaWidgetsmod.sip0000644000076500000240000000407413245233151025371 0ustar philstaff00000000000000// QtMultimediaWidgetsmod.sip generated by MetaSIP // // This file is part of the QtMultimediaWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtMultimediaWidgets, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtMultimedia/QtMultimediamod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qcameraviewfinder.sip %Include qgraphicsvideoitem.sip %Include qvideowidget.sip PyQt5_gpl-5.10.1/sip/QtMultimediaWidgets/qvideowidget.sip0000644000076500000240000000566713245233151023447 0ustar philstaff00000000000000// qvideowidget.sip generated by MetaSIP // // This file is part of the QtMultimediaWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QVideoWidget : QWidget, QMediaBindableInterface { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QGraphicsVideoItem, &sipType_QGraphicsVideoItem, -1, 1}, {sipName_QVideoWidget, &sipType_QVideoWidget, 2, -1}, {sipName_QCameraViewfinder, &sipType_QCameraViewfinder, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: %If (Qt_5_6_1 -) explicit QVideoWidget(QWidget *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QVideoWidget(QWidget *parent /TransferThis/ = 0); %End virtual ~QVideoWidget(); virtual QMediaObject *mediaObject() const; Qt::AspectRatioMode aspectRatioMode() const; int brightness() const; int contrast() const; int hue() const; int saturation() const; virtual QSize sizeHint() const; public slots: void setFullScreen(bool fullScreen); void setAspectRatioMode(Qt::AspectRatioMode mode); void setBrightness(int brightness); void setContrast(int contrast); void setHue(int hue); void setSaturation(int saturation); signals: void fullScreenChanged(bool fullScreen); void brightnessChanged(int brightness); void contrastChanged(int contrast); void hueChanged(int hue); void saturationChanged(int saturation); protected: virtual bool event(QEvent *event); virtual void showEvent(QShowEvent *event); virtual void hideEvent(QHideEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual void moveEvent(QMoveEvent *event); virtual void paintEvent(QPaintEvent *event); virtual bool setMediaObject(QMediaObject *object); }; PyQt5_gpl-5.10.1/sip/QtNetwork/0000755000076500000240000000000013245233151016231 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtNetwork/qabstractnetworkcache.sip0000644000076500000240000000576313245233151023343 0ustar philstaff00000000000000// qabstractnetworkcache.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkCacheMetaData { %TypeHeaderCode #include %End typedef QList> RawHeaderList; typedef QHash AttributesMap; public: QNetworkCacheMetaData(); QNetworkCacheMetaData(const QNetworkCacheMetaData &other); ~QNetworkCacheMetaData(); bool operator==(const QNetworkCacheMetaData &other) const; bool operator!=(const QNetworkCacheMetaData &other) const; bool isValid() const; QUrl url() const; void setUrl(const QUrl &url); QNetworkCacheMetaData::RawHeaderList rawHeaders() const; void setRawHeaders(const QNetworkCacheMetaData::RawHeaderList &headers); QDateTime lastModified() const; void setLastModified(const QDateTime &dateTime); QDateTime expirationDate() const; void setExpirationDate(const QDateTime &dateTime); bool saveToDisk() const; void setSaveToDisk(bool allow); QNetworkCacheMetaData::AttributesMap attributes() const; void setAttributes(const QNetworkCacheMetaData::AttributesMap &attributes); void swap(QNetworkCacheMetaData &other /Constrained/); }; QDataStream &operator<<(QDataStream &, const QNetworkCacheMetaData & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QNetworkCacheMetaData & /Constrained/) /ReleaseGIL/; class QAbstractNetworkCache : QObject { %TypeHeaderCode #include %End public: virtual ~QAbstractNetworkCache(); virtual QNetworkCacheMetaData metaData(const QUrl &url) = 0; virtual void updateMetaData(const QNetworkCacheMetaData &metaData) = 0; virtual QIODevice *data(const QUrl &url) = 0 /Factory/; virtual bool remove(const QUrl &url) = 0; virtual qint64 cacheSize() const = 0; virtual QIODevice *prepare(const QNetworkCacheMetaData &metaData) = 0; virtual void insert(QIODevice *device) = 0; public slots: virtual void clear() = 0; protected: explicit QAbstractNetworkCache(QObject *parent /TransferThis/ = 0); private: QAbstractNetworkCache(const QAbstractNetworkCache &); }; PyQt5_gpl-5.10.1/sip/QtNetwork/qabstractsocket.sip0000644000076500000240000002405613245233151022152 0ustar philstaff00000000000000// qabstractsocket.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractSocket : QIODevice { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QNetworkReply, &sipType_QNetworkReply, -1, 1}, {sipName_QHttpMultiPart, &sipType_QHttpMultiPart, -1, 2}, {sipName_QAbstractNetworkCache, &sipType_QAbstractNetworkCache, 12, 3}, {sipName_QNetworkConfigurationManager, &sipType_QNetworkConfigurationManager, -1, 4}, {sipName_QNetworkCookieJar, &sipType_QNetworkCookieJar, -1, 5}, {sipName_QAbstractSocket, &sipType_QAbstractSocket, 13, 6}, {sipName_QLocalSocket, &sipType_QLocalSocket, -1, 7}, {sipName_QDnsLookup, &sipType_QDnsLookup, -1, 8}, {sipName_QNetworkSession, &sipType_QNetworkSession, -1, 9}, {sipName_QTcpServer, &sipType_QTcpServer, -1, 10}, {sipName_QNetworkAccessManager, &sipType_QNetworkAccessManager, -1, 11}, {sipName_QLocalServer, &sipType_QLocalServer, -1, -1}, {sipName_QNetworkDiskCache, &sipType_QNetworkDiskCache, -1, -1}, {sipName_QUdpSocket, &sipType_QUdpSocket, -1, 14}, {sipName_QTcpSocket, &sipType_QTcpSocket, 15, -1}, #if defined(SIP_FEATURE_PyQt_SSL) {sipName_QSslSocket, &sipType_QSslSocket, -1, -1}, #else {0, 0, -1, -1}, #endif }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum SocketType { TcpSocket, UdpSocket, %If (Qt_5_8_0 -) SctpSocket, %End UnknownSocketType, }; enum NetworkLayerProtocol { IPv4Protocol, IPv6Protocol, AnyIPProtocol, UnknownNetworkLayerProtocol, }; enum SocketError { ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, SocketAccessError, SocketResourceError, SocketTimeoutError, DatagramTooLargeError, NetworkError, AddressInUseError, SocketAddressNotAvailableError, UnsupportedSocketOperationError, UnfinishedSocketOperationError, ProxyAuthenticationRequiredError, SslHandshakeFailedError, ProxyConnectionRefusedError, ProxyConnectionClosedError, ProxyConnectionTimeoutError, ProxyNotFoundError, ProxyProtocolError, OperationError, SslInternalError, SslInvalidUserDataError, TemporaryError, UnknownSocketError, }; enum SocketState { UnconnectedState, HostLookupState, ConnectingState, ConnectedState, BoundState, ListeningState, ClosingState, }; QAbstractSocket(QAbstractSocket::SocketType socketType, QObject *parent /TransferThis/); virtual ~QAbstractSocket(); virtual void connectToHost(const QString &hostName, quint16 port, QIODevice::OpenMode mode = QIODevice::ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::AnyIPProtocol) /ReleaseGIL/; virtual void connectToHost(const QHostAddress &address, quint16 port, QIODevice::OpenMode mode = QIODevice::ReadWrite) /ReleaseGIL/; virtual void disconnectFromHost() /ReleaseGIL/; bool isValid() const; virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool canReadLine() const; quint16 localPort() const; QHostAddress localAddress() const; quint16 peerPort() const; QHostAddress peerAddress() const; QString peerName() const; qint64 readBufferSize() const; virtual void setReadBufferSize(qint64 size); void abort(); virtual bool setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState state = QAbstractSocket::ConnectedState, QIODevice::OpenMode mode = QIODevice::ReadWrite); virtual qintptr socketDescriptor() const; QAbstractSocket::SocketType socketType() const; QAbstractSocket::SocketState state() const; QAbstractSocket::SocketError error() const; virtual void close(); virtual bool isSequential() const; virtual bool atEnd() const; bool flush() /ReleaseGIL/; virtual bool waitForConnected(int msecs = 30000) /ReleaseGIL/; virtual bool waitForReadyRead(int msecs = 30000) /ReleaseGIL/; virtual bool waitForBytesWritten(int msecs = 30000) /ReleaseGIL/; virtual bool waitForDisconnected(int msecs = 30000) /ReleaseGIL/; void setProxy(const QNetworkProxy &networkProxy); QNetworkProxy proxy() const; signals: void hostFound(); void connected(); void disconnected(); void stateChanged(QAbstractSocket::SocketState); void error(QAbstractSocket::SocketError); void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator); protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /TypeHint="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QAbstractSocket::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual SIP_PYOBJECT readLineData(qint64 maxlen) /TypeHint="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QAbstractSocket::readLineData(s, a0) : sipCpp->readLineData(s, a0); #else len = sipCpp->sipProtectVirt_readLineData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) /ReleaseGIL/; void setSocketState(QAbstractSocket::SocketState state); void setSocketError(QAbstractSocket::SocketError socketError); void setLocalPort(quint16 port); void setLocalAddress(const QHostAddress &address); void setPeerPort(quint16 port); void setPeerAddress(const QHostAddress &address); void setPeerName(const QString &name); public: enum SocketOption { LowDelayOption, KeepAliveOption, MulticastTtlOption, MulticastLoopbackOption, TypeOfServiceOption, %If (Qt_5_3_0 -) SendBufferSizeSocketOption, %End %If (Qt_5_3_0 -) ReceiveBufferSizeSocketOption, %End }; virtual void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value); virtual QVariant socketOption(QAbstractSocket::SocketOption option); enum BindFlag { DefaultForPlatform, ShareAddress, DontShareAddress, ReuseAddressHint, }; typedef QFlags BindMode; enum PauseMode { PauseNever, PauseOnSslErrors, }; typedef QFlags PauseModes; virtual void resume() /ReleaseGIL/; QAbstractSocket::PauseModes pauseMode() const; void setPauseMode(QAbstractSocket::PauseModes pauseMode); bool bind(const QHostAddress &address, quint16 port = 0, QAbstractSocket::BindMode mode = QAbstractSocket::DefaultForPlatform); bool bind(quint16 port = 0, QAbstractSocket::BindMode mode = QAbstractSocket::DefaultForPlatform); private: QAbstractSocket(const QAbstractSocket &); }; QFlags operator|(QAbstractSocket::BindFlag f1, QFlags f2); QFlags operator|(QAbstractSocket::PauseMode f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtNetwork/qauthenticator.sip0000644000076500000240000000306013245233151022000 0ustar philstaff00000000000000// qauthenticator.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAuthenticator { %TypeHeaderCode #include %End public: QAuthenticator(); QAuthenticator(const QAuthenticator &other); ~QAuthenticator(); bool operator==(const QAuthenticator &other) const; bool operator!=(const QAuthenticator &other) const; QString user() const; void setUser(const QString &user); QString password() const; void setPassword(const QString &password); QString realm() const; bool isNull() const; QVariant option(const QString &opt) const; QVariantHash options() const; void setOption(const QString &opt, const QVariant &value); }; PyQt5_gpl-5.10.1/sip/QtNetwork/qdnslookup.sip0000644000076500000240000001107013245233151021144 0ustar philstaff00000000000000// qdnslookup.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDnsDomainNameRecord { %TypeHeaderCode #include %End public: QDnsDomainNameRecord(); QDnsDomainNameRecord(const QDnsDomainNameRecord &other); ~QDnsDomainNameRecord(); void swap(QDnsDomainNameRecord &other /Constrained/); QString name() const; quint32 timeToLive() const; QString value() const; }; class QDnsHostAddressRecord { %TypeHeaderCode #include %End public: QDnsHostAddressRecord(); QDnsHostAddressRecord(const QDnsHostAddressRecord &other); ~QDnsHostAddressRecord(); void swap(QDnsHostAddressRecord &other /Constrained/); QString name() const; quint32 timeToLive() const; QHostAddress value() const; }; class QDnsMailExchangeRecord { %TypeHeaderCode #include %End public: QDnsMailExchangeRecord(); QDnsMailExchangeRecord(const QDnsMailExchangeRecord &other); ~QDnsMailExchangeRecord(); void swap(QDnsMailExchangeRecord &other /Constrained/); QString exchange() const; QString name() const; quint16 preference() const; quint32 timeToLive() const; }; class QDnsServiceRecord { %TypeHeaderCode #include %End public: QDnsServiceRecord(); QDnsServiceRecord(const QDnsServiceRecord &other); ~QDnsServiceRecord(); void swap(QDnsServiceRecord &other /Constrained/); QString name() const; quint16 port() const; quint16 priority() const; QString target() const; quint32 timeToLive() const; quint16 weight() const; }; class QDnsTextRecord { %TypeHeaderCode #include %End public: QDnsTextRecord(); QDnsTextRecord(const QDnsTextRecord &other); ~QDnsTextRecord(); void swap(QDnsTextRecord &other /Constrained/); QString name() const; quint32 timeToLive() const; QList values() const; }; class QDnsLookup : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, ResolverError, OperationCancelledError, InvalidRequestError, InvalidReplyError, ServerFailureError, ServerRefusedError, NotFoundError, }; enum Type { A, AAAA, ANY, CNAME, MX, NS, PTR, SRV, TXT, }; explicit QDnsLookup(QObject *parent /TransferThis/ = 0); QDnsLookup(QDnsLookup::Type type, const QString &name, QObject *parent /TransferThis/ = 0); %If (Qt_5_5_0 -) QDnsLookup(QDnsLookup::Type type, const QString &name, const QHostAddress &nameserver, QObject *parent /TransferThis/ = 0); %End virtual ~QDnsLookup(); QDnsLookup::Error error() const; QString errorString() const; bool isFinished() const; QString name() const; void setName(const QString &name); QDnsLookup::Type type() const; void setType(QDnsLookup::Type); QList canonicalNameRecords() const; QList hostAddressRecords() const; QList mailExchangeRecords() const; QList nameServerRecords() const; QList pointerRecords() const; QList serviceRecords() const; QList textRecords() const; public slots: void abort() /ReleaseGIL/; void lookup() /ReleaseGIL/; signals: void finished(); void nameChanged(const QString &name); void typeChanged(QDnsLookup::Type type); public: %If (Qt_5_3_0 -) QHostAddress nameserver() const; %End %If (Qt_5_3_0 -) void setNameserver(const QHostAddress &nameserver); %End signals: %If (Qt_5_3_0 -) void nameserverChanged(const QHostAddress &nameserver); %End }; PyQt5_gpl-5.10.1/sip/QtNetwork/qhostaddress.sip0000644000076500000240000001307213245233151021455 0ustar philstaff00000000000000// qhostaddress.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHostAddress /TypeHintIn="Union[QHostAddress, QHostAddress.SpecialAddress]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode // SIP doesn't support automatic type convertors so we explicitly allow a // QHostAddress::SpecialAddress to be used whenever a QHostAddress is expected. if (sipIsErr == NULL) return (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_QHostAddress_SpecialAddress)) || sipCanConvertToType(sipPy, sipType_QHostAddress, SIP_NO_CONVERTORS)); if (PyObject_TypeCheck(sipPy, sipTypeAsPyTypeObject(sipType_QHostAddress_SpecialAddress))) { *sipCppPtr = new QHostAddress((QHostAddress::SpecialAddress)SIPLong_AsLong(sipPy)); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QHostAddress, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End public: enum SpecialAddress { Null, Broadcast, LocalHost, LocalHostIPv6, AnyIPv4, AnyIPv6, Any, }; QHostAddress(); QHostAddress(QHostAddress::SpecialAddress address /Constrained/); explicit QHostAddress(quint32 ip4Addr); explicit QHostAddress(const QString &address); explicit QHostAddress(const Q_IPV6ADDR &ip6Addr); QHostAddress(const QHostAddress ©); ~QHostAddress(); %If (Qt_5_8_0 -) void setAddress(QHostAddress::SpecialAddress address /Constrained/); %End void setAddress(quint32 ip4Addr); bool setAddress(const QString &address); void setAddress(const Q_IPV6ADDR &ip6Addr); QAbstractSocket::NetworkLayerProtocol protocol() const; quint32 toIPv4Address() const; Q_IPV6ADDR toIPv6Address() const; QString toString() const; QString scopeId() const; void setScopeId(const QString &id); bool operator==(const QHostAddress &address) const; bool operator==(QHostAddress::SpecialAddress address) const; bool operator!=(const QHostAddress &address) const; bool operator!=(QHostAddress::SpecialAddress address) const; bool isNull() const; void clear(); long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End bool isInSubnet(const QHostAddress &subnet, int netmask) const; bool isInSubnet(const QPair &subnet) const; bool isLoopback() const; static QPair parseSubnet(const QString &subnet); %If (Qt_5_6_0 -) void swap(QHostAddress &other /Constrained/); %End %If (Qt_5_6_0 -) bool isMulticast() const; %End %If (Qt_5_8_0 -) enum ConversionModeFlag { ConvertV4MappedToIPv4, ConvertV4CompatToIPv4, ConvertUnspecifiedAddress, ConvertLocalHost, TolerantConversion, StrictConversion, }; %End %If (Qt_5_8_0 -) typedef QFlags ConversionMode; %End %If (Qt_5_8_0 -) bool isEqual(const QHostAddress &address, QHostAddress::ConversionMode mode = QHostAddress::TolerantConversion) const; %End }; bool operator==(QHostAddress::SpecialAddress address1, const QHostAddress &address2); %If (Qt_5_9_0 -) bool operator!=(QHostAddress::SpecialAddress lhs, const QHostAddress &rhs); %End QDataStream &operator<<(QDataStream &, const QHostAddress &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QHostAddress &) /ReleaseGIL/; // Q_IPV6ADDR is implemented as a Python 16-tuple of ints. %MappedType Q_IPV6ADDR /TypeHint="Tuple[int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode // Create the tuple. PyObject *t; if ((t = PyTuple_New(16)) == NULL) return NULL; // Set the tuple elements. for (int i = 0; i < 16; ++i) { PyObject *pobj; if ((pobj = SIPLong_FromLong((*sipCpp)[i])) == NULL) { Py_DECREF(t); return NULL; } PyTuple_SetItem(t, i, pobj); } return t; %End %ConvertToTypeCode // Check the type if that is all that is required. if (sipIsErr == NULL) return (PySequence_Check(sipPy) && PySequence_Size(sipPy) == 16); Q_IPV6ADDR *qa = new Q_IPV6ADDR; for (Py_ssize_t i = 0; i < 16; ++i) { PyObject *itm = PySequence_GetItem(sipPy, i); if (!itm) { delete qa; *sipIsErr = 1; return 0; } (*qa)[i] = SIPLong_AsLong(itm); Py_DECREF(itm); } *sipCppPtr = qa; return sipGetState(sipTransferObj); %End }; %If (Qt_5_8_0 -) QFlags operator|(QHostAddress::ConversionModeFlag f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtNetwork/qhostinfo.sip0000644000076500000240000000570213245233151020764 0ustar philstaff00000000000000// qhostinfo.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHostInfo { %TypeHeaderCode #include %End public: enum HostInfoError { NoError, HostNotFound, UnknownError, }; explicit QHostInfo(int id = -1); QHostInfo(const QHostInfo &d); ~QHostInfo(); QString hostName() const; void setHostName(const QString &name); QList addresses() const; void setAddresses(const QList &addresses); QHostInfo::HostInfoError error() const; void setError(QHostInfo::HostInfoError error); QString errorString() const; void setErrorString(const QString &errorString); void setLookupId(int id); int lookupId() const; static int lookupHost(const QString &name, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtnetwork_get_connection_parts(a1, 0, "(QHostInfo)", true, &receiver, slot_signature)) == sipErrorNone) { QHostInfo::lookupHost(*a0, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End static void abortHostLookup(int lookupId); static QHostInfo fromName(const QString &name); static QString localHostName(); static QString localDomainName(); %If (Qt_5_10_0 -) void swap(QHostInfo &other /Constrained/); %End }; %ModuleHeaderCode // Imports from QtCore. typedef sipErrorState (*pyqt5_qtnetwork_get_connection_parts_t)(PyObject *, QObject *, const char *, bool, QObject **, QByteArray &); extern pyqt5_qtnetwork_get_connection_parts_t pyqt5_qtnetwork_get_connection_parts; %End %ModuleCode // Imports from QtCore. pyqt5_qtnetwork_get_connection_parts_t pyqt5_qtnetwork_get_connection_parts; %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtnetwork_get_connection_parts = (pyqt5_qtnetwork_get_connection_parts_t)sipImportSymbol("pyqt5_get_connection_parts"); Q_ASSERT(pyqt5_qtnetwork_get_connection_parts); %End PyQt5_gpl-5.10.1/sip/QtNetwork/qhstspolicy.sip0000644000076500000240000000410113245233151021324 0ustar philstaff00000000000000// qhstspolicy.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_9_0 -) class QHstsPolicy { %TypeHeaderCode #include %End public: enum PolicyFlag { IncludeSubDomains, }; typedef QFlags PolicyFlags; QHstsPolicy(); QHstsPolicy(const QDateTime &expiry, QHstsPolicy::PolicyFlags flags, const QString &host, QUrl::ParsingMode mode = QUrl::DecodedMode); QHstsPolicy(const QHstsPolicy &rhs); ~QHstsPolicy(); void swap(QHstsPolicy &other); void setHost(const QString &host, QUrl::ParsingMode mode = QUrl::DecodedMode); QString host(QUrl::ComponentFormattingOptions options = QUrl::ComponentFormattingOption::FullyDecoded) const; void setExpiry(const QDateTime &expiry); QDateTime expiry() const; void setIncludesSubDomains(bool include); bool includesSubDomains() const; bool isExpired() const; }; %End %If (Qt_5_9_0 -) bool operator==(const QHstsPolicy &lhs, const QHstsPolicy &rhs); %End %If (Qt_5_9_0 -) bool operator!=(const QHstsPolicy &lhs, const QHstsPolicy &rhs); %End %If (Qt_5_9_0 -) QFlags operator|(QHstsPolicy::PolicyFlag f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtNetwork/qhttpmultipart.sip0000644000076500000240000000416513245233151022056 0ustar philstaff00000000000000// qhttpmultipart.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHttpPart { %TypeHeaderCode #include %End public: QHttpPart(); QHttpPart(const QHttpPart &other); ~QHttpPart(); bool operator==(const QHttpPart &other) const; bool operator!=(const QHttpPart &other) const; void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); void setRawHeader(const QByteArray &headerName, const QByteArray &headerValue); void setBody(const QByteArray &body); void setBodyDevice(QIODevice *device); void swap(QHttpPart &other /Constrained/); }; class QHttpMultiPart : QObject { %TypeHeaderCode #include %End public: enum ContentType { MixedType, RelatedType, FormDataType, AlternativeType, }; explicit QHttpMultiPart(QObject *parent /TransferThis/ = 0); QHttpMultiPart(QHttpMultiPart::ContentType contentType, QObject *parent /TransferThis/ = 0); virtual ~QHttpMultiPart(); void append(const QHttpPart &httpPart); void setContentType(QHttpMultiPart::ContentType contentType); QByteArray boundary() const; void setBoundary(const QByteArray &boundary); private: QHttpMultiPart(const QHttpMultiPart &); }; PyQt5_gpl-5.10.1/sip/QtNetwork/qlocalserver.sip0000644000076500000240000000456013245233151021455 0ustar philstaff00000000000000// qlocalserver.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLocalServer : QObject { %TypeHeaderCode #include %End public: explicit QLocalServer(QObject *parent /TransferThis/ = 0); virtual ~QLocalServer(); void close(); QString errorString() const; virtual bool hasPendingConnections() const; bool isListening() const; bool listen(const QString &name); bool listen(qintptr socketDescriptor); int maxPendingConnections() const; virtual QLocalSocket *nextPendingConnection(); QString serverName() const; QString fullServerName() const; QAbstractSocket::SocketError serverError() const; void setMaxPendingConnections(int numConnections); bool waitForNewConnection(int msecs = 0, bool *timedOut = 0) /ReleaseGIL/; static bool removeServer(const QString &name); signals: void newConnection(); protected: virtual void incomingConnection(quintptr socketDescriptor); public: enum SocketOption { UserAccessOption, GroupAccessOption, OtherAccessOption, WorldAccessOption, }; typedef QFlags SocketOptions; void setSocketOptions(QLocalServer::SocketOptions options); QLocalServer::SocketOptions socketOptions() const; %If (Qt_5_10_0 -) qintptr socketDescriptor() const; %End private: QLocalServer(const QLocalServer &); }; QFlags operator|(QLocalServer::SocketOption f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtNetwork/qlocalsocket.sip0000644000076500000240000001056613245233151021442 0ustar philstaff00000000000000// qlocalsocket.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLocalSocket : QIODevice { %TypeHeaderCode #include %End public: enum LocalSocketError { ConnectionRefusedError, PeerClosedError, ServerNotFoundError, SocketAccessError, SocketResourceError, SocketTimeoutError, DatagramTooLargeError, ConnectionError, UnsupportedSocketOperationError, OperationError, UnknownSocketError, }; enum LocalSocketState { UnconnectedState, ConnectingState, ConnectedState, ClosingState, }; QLocalSocket(QObject *parent /TransferThis/ = 0); virtual ~QLocalSocket(); void connectToServer(const QString &name, QIODevice::OpenMode mode = QIODevice::ReadWrite) /ReleaseGIL/; %If (Qt_5_1_0 -) void connectToServer(QIODevice::OpenMode mode = QIODevice::ReadWrite) /ReleaseGIL/; %End void disconnectFromServer() /ReleaseGIL/; %If (Qt_5_1_0 -) virtual bool open(QIODevice::OpenMode mode = QIODevice::ReadWrite); %End QString serverName() const; %If (Qt_5_1_0 -) void setServerName(const QString &name); %End QString fullServerName() const; void abort(); virtual bool isSequential() const; virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool canReadLine() const; virtual void close(); QLocalSocket::LocalSocketError error() const; bool flush(); bool isValid() const; qint64 readBufferSize() const; void setReadBufferSize(qint64 size); bool setSocketDescriptor(qintptr socketDescriptor, QLocalSocket::LocalSocketState state = QLocalSocket::ConnectedState, QIODevice::OpenMode mode = QIODevice::ReadWrite); qintptr socketDescriptor() const; QLocalSocket::LocalSocketState state() const; virtual bool waitForBytesWritten(int msecs = 30000) /ReleaseGIL/; bool waitForConnected(int msecs = 30000) /ReleaseGIL/; bool waitForDisconnected(int msecs = 30000) /ReleaseGIL/; virtual bool waitForReadyRead(int msecs = 30000) /ReleaseGIL/; signals: void connected(); void disconnected(); void error(QLocalSocket::LocalSocketError socketError); void stateChanged(QLocalSocket::LocalSocketState socketState); protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /TypeHint="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *, qint64)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QLocalSocket::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char * /Array/, qint64 /ArraySize/) /ReleaseGIL/; private: QLocalSocket(const QLocalSocket &); }; PyQt5_gpl-5.10.1/sip/QtNetwork/qnetworkaccessmanager.sip0000644000076500000240000001240113245233151023333 0ustar philstaff00000000000000// qnetworkaccessmanager.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkAccessManager : QObject { %TypeHeaderCode #include %End public: enum Operation { HeadOperation, GetOperation, PutOperation, PostOperation, DeleteOperation, CustomOperation, }; explicit QNetworkAccessManager(QObject *parent /TransferThis/ = 0); virtual ~QNetworkAccessManager(); QNetworkProxy proxy() const; void setProxy(const QNetworkProxy &proxy); QNetworkCookieJar *cookieJar() const; void setCookieJar(QNetworkCookieJar *cookieJar /Transfer/); QNetworkReply *head(const QNetworkRequest &request); QNetworkReply *get(const QNetworkRequest &request); QNetworkReply *post(const QNetworkRequest &request, QIODevice *data); QNetworkReply *post(const QNetworkRequest &request, const QByteArray &data); QNetworkReply *post(const QNetworkRequest &request, QHttpMultiPart *multiPart); QNetworkReply *put(const QNetworkRequest &request, QIODevice *data); QNetworkReply *put(const QNetworkRequest &request, const QByteArray &data); QNetworkReply *put(const QNetworkRequest &request, QHttpMultiPart *multiPart); signals: void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator); void authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator); void finished(QNetworkReply *reply); %If (Qt_5_1_0 -) %If (PyQt_SSL) void encrypted(QNetworkReply *reply); %End %End %If (PyQt_SSL) void sslErrors(QNetworkReply *reply, const QList &errors); %End void networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility accessible); %If (Qt_5_5_0 -) %If (PyQt_SSL) void preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator); %End %End protected: virtual QNetworkReply *createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *device = 0) /AbortOnException,DisallowNone,ReleaseGIL/; public: QNetworkProxyFactory *proxyFactory() const; void setProxyFactory(QNetworkProxyFactory *factory /Transfer/); QAbstractNetworkCache *cache() const; void setCache(QAbstractNetworkCache *cache /Transfer/); QNetworkReply *deleteResource(const QNetworkRequest &request); enum NetworkAccessibility { UnknownAccessibility, NotAccessible, Accessible, }; QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = 0); %If (Qt_5_8_0 -) QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data); %End %If (Qt_5_8_0 -) QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QHttpMultiPart *multiPart); %End void setConfiguration(const QNetworkConfiguration &config); QNetworkConfiguration configuration() const; QNetworkConfiguration activeConfiguration() const; void setNetworkAccessible(QNetworkAccessManager::NetworkAccessibility accessible); QNetworkAccessManager::NetworkAccessibility networkAccessible() const; void clearAccessCache(); %If (Qt_5_2_0 -) QStringList supportedSchemes() const; %End %If (Qt_5_2_0 -) %If (PyQt_SSL) void connectToHostEncrypted(const QString &hostName, quint16 port = 443, const QSslConfiguration &sslConfiguration = QSslConfiguration::defaultConfiguration()); %End %End %If (Qt_5_2_0 -) void connectToHost(const QString &hostName, quint16 port = 80); %End protected slots: %If (Qt_5_2_0 -) QStringList supportedSchemesImplementation() const; %End public: %If (Qt_5_9_0 -) void clearConnectionCache(); %End %If (Qt_5_9_0 -) void setStrictTransportSecurityEnabled(bool enabled); %End %If (Qt_5_9_0 -) bool isStrictTransportSecurityEnabled() const; %End %If (Qt_5_9_0 -) void addStrictTransportSecurityHosts(const QVector &knownHosts); %End %If (Qt_5_9_0 -) QVector strictTransportSecurityHosts() const; %End %If (Qt_5_9_0 -) void setRedirectPolicy(QNetworkRequest::RedirectPolicy policy); %End %If (Qt_5_9_0 -) QNetworkRequest::RedirectPolicy redirectPolicy() const; %End %If (Qt_5_10_0 -) void enableStrictTransportSecurityStore(bool enabled, const QString &storeDir = QString()); %End %If (Qt_5_10_0 -) bool isStrictTransportSecurityStoreEnabled() const; %End }; PyQt5_gpl-5.10.1/sip/QtNetwork/qnetworkconfigmanager.sip0000644000076500000240000000505613245233151023347 0ustar philstaff00000000000000// qnetworkconfigmanager.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkConfigurationManager : QObject { %TypeHeaderCode #include %End public: enum Capability { CanStartAndStopInterfaces, DirectConnectionRouting, SystemSessionSupport, ApplicationLevelRoaming, ForcedRoaming, DataStatistics, NetworkSessionRequired, }; typedef QFlags Capabilities; explicit QNetworkConfigurationManager(QObject *parent /TransferThis/ = 0); virtual ~QNetworkConfigurationManager(); QNetworkConfigurationManager::Capabilities capabilities() const; QNetworkConfiguration defaultConfiguration() const; QList allConfigurations(QNetworkConfiguration::StateFlags flags = QNetworkConfiguration::StateFlags()) const; QNetworkConfiguration configurationFromIdentifier(const QString &identifier) const; void updateConfigurations(); bool isOnline() const; signals: void configurationAdded(const QNetworkConfiguration &config); void configurationRemoved(const QNetworkConfiguration &config); void configurationChanged(const QNetworkConfiguration &config); void onlineStateChanged(bool isOnline); void updateCompleted(); private: QNetworkConfigurationManager(const QNetworkConfigurationManager &); }; QFlags operator|(QNetworkConfigurationManager::Capability f1, QFlags f2); QFlags operator|(QNetworkConfigurationManager::Capability f1, QNetworkConfigurationManager::Capability f2); PyQt5_gpl-5.10.1/sip/QtNetwork/qnetworkconfiguration.sip0000644000076500000240000000535713245233151023422 0ustar philstaff00000000000000// qnetworkconfiguration.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkConfiguration { %TypeHeaderCode #include %End public: QNetworkConfiguration(); QNetworkConfiguration(const QNetworkConfiguration &other); ~QNetworkConfiguration(); bool operator==(const QNetworkConfiguration &cp) const; bool operator!=(const QNetworkConfiguration &cp) const; enum Type { InternetAccessPoint, ServiceNetwork, UserChoice, Invalid, }; enum Purpose { UnknownPurpose, PublicPurpose, PrivatePurpose, ServiceSpecificPurpose, }; enum StateFlag { Undefined, Defined, Discovered, Active, }; typedef QFlags StateFlags; enum BearerType { BearerUnknown, BearerEthernet, BearerWLAN, Bearer2G, BearerCDMA2000, BearerWCDMA, BearerHSPA, BearerBluetooth, BearerWiMAX, %If (Qt_5_2_0 -) BearerEVDO, %End %If (Qt_5_2_0 -) BearerLTE, %End %If (Qt_5_2_0 -) Bearer3G, %End %If (Qt_5_2_0 -) Bearer4G, %End }; QNetworkConfiguration::StateFlags state() const; QNetworkConfiguration::Type type() const; QNetworkConfiguration::Purpose purpose() const; QNetworkConfiguration::BearerType bearerType() const; QString bearerTypeName() const; %If (Qt_5_2_0 -) QNetworkConfiguration::BearerType bearerTypeFamily() const; %End QString identifier() const; bool isRoamingAvailable() const; QList children() const; QString name() const; bool isValid() const; void swap(QNetworkConfiguration &other /Constrained/); %If (Qt_5_9_0 -) int connectTimeout() const; %End %If (Qt_5_9_0 -) bool setConnectTimeout(int timeout); %End }; PyQt5_gpl-5.10.1/sip/QtNetwork/qnetworkcookie.sip0000644000076500000240000000430413245233151022013 0ustar philstaff00000000000000// qnetworkcookie.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkCookie { %TypeHeaderCode #include %End public: enum RawForm { NameAndValueOnly, Full, }; QNetworkCookie(const QByteArray &name = QByteArray(), const QByteArray &value = QByteArray()); QNetworkCookie(const QNetworkCookie &other); ~QNetworkCookie(); bool isSecure() const; void setSecure(bool enable); bool isSessionCookie() const; QDateTime expirationDate() const; void setExpirationDate(const QDateTime &date); QString domain() const; void setDomain(const QString &domain); QString path() const; void setPath(const QString &path); QByteArray name() const; void setName(const QByteArray &cookieName); QByteArray value() const; void setValue(const QByteArray &value); QByteArray toRawForm(QNetworkCookie::RawForm form = QNetworkCookie::Full) const; static QList parseCookies(const QByteArray &cookieString); bool operator==(const QNetworkCookie &other) const; bool operator!=(const QNetworkCookie &other) const; bool isHttpOnly() const; void setHttpOnly(bool enable); void swap(QNetworkCookie &other /Constrained/); bool hasSameIdentifier(const QNetworkCookie &other) const; void normalize(const QUrl &url); }; PyQt5_gpl-5.10.1/sip/QtNetwork/qnetworkcookiejar.sip0000644000076500000240000000336313245233151022514 0ustar philstaff00000000000000// qnetworkcookiejar.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkCookieJar : QObject { %TypeHeaderCode #include %End public: explicit QNetworkCookieJar(QObject *parent /TransferThis/ = 0); virtual ~QNetworkCookieJar(); virtual QList cookiesForUrl(const QUrl &url) const; virtual bool setCookiesFromUrl(const QList &cookieList, const QUrl &url); virtual bool insertCookie(const QNetworkCookie &cookie); virtual bool updateCookie(const QNetworkCookie &cookie); virtual bool deleteCookie(const QNetworkCookie &cookie); protected: void setAllCookies(const QList &cookieList); QList allCookies() const; virtual bool validateCookie(const QNetworkCookie &cookie, const QUrl &url) const; private: QNetworkCookieJar(const QNetworkCookieJar &); }; PyQt5_gpl-5.10.1/sip/QtNetwork/qnetworkdatagram.sip0000644000076500000240000000365513245233151022332 0ustar philstaff00000000000000// qnetworkdatagram.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_8_0 -) class QNetworkDatagram { %TypeHeaderCode #include %End public: QNetworkDatagram(); QNetworkDatagram(const QByteArray &data, const QHostAddress &destinationAddress = QHostAddress(), quint16 port = 0); QNetworkDatagram(const QNetworkDatagram &other); ~QNetworkDatagram(); void swap(QNetworkDatagram &other /Constrained/); void clear(); bool isValid() const; bool isNull() const; uint interfaceIndex() const; void setInterfaceIndex(uint index); QHostAddress senderAddress() const; QHostAddress destinationAddress() const; int senderPort() const; int destinationPort() const; void setSender(const QHostAddress &address, quint16 port = 0); void setDestination(const QHostAddress &address, quint16 port); int hopLimit() const; void setHopLimit(int count); QByteArray data() const; void setData(const QByteArray &data); QNetworkDatagram makeReply(const QByteArray &payload) const; }; %End PyQt5_gpl-5.10.1/sip/QtNetwork/qnetworkdiskcache.sip0000644000076500000240000000362513245233151022465 0ustar philstaff00000000000000// qnetworkdiskcache.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkDiskCache : QAbstractNetworkCache { %TypeHeaderCode #include %End public: explicit QNetworkDiskCache(QObject *parent /TransferThis/ = 0); virtual ~QNetworkDiskCache(); QString cacheDirectory() const; void setCacheDirectory(const QString &cacheDir); qint64 maximumCacheSize() const; void setMaximumCacheSize(qint64 size); virtual qint64 cacheSize() const; virtual QNetworkCacheMetaData metaData(const QUrl &url); virtual void updateMetaData(const QNetworkCacheMetaData &metaData); virtual QIODevice *data(const QUrl &url) /Factory/; virtual bool remove(const QUrl &url); virtual QIODevice *prepare(const QNetworkCacheMetaData &metaData); virtual void insert(QIODevice *device); QNetworkCacheMetaData fileMetaData(const QString &fileName) const; public slots: virtual void clear(); protected: virtual qint64 expire(); private: QNetworkDiskCache(const QNetworkDiskCache &); }; PyQt5_gpl-5.10.1/sip/QtNetwork/qnetworkinterface.sip0000644000076500000240000000556513245233151022514 0ustar philstaff00000000000000// qnetworkinterface.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkAddressEntry { %TypeHeaderCode #include %End public: QNetworkAddressEntry(); QNetworkAddressEntry(const QNetworkAddressEntry &other); ~QNetworkAddressEntry(); QHostAddress ip() const; void setIp(const QHostAddress &newIp); QHostAddress netmask() const; void setNetmask(const QHostAddress &newNetmask); QHostAddress broadcast() const; void setBroadcast(const QHostAddress &newBroadcast); bool operator==(const QNetworkAddressEntry &other) const; bool operator!=(const QNetworkAddressEntry &other) const; int prefixLength() const; void setPrefixLength(int length); void swap(QNetworkAddressEntry &other /Constrained/); }; class QNetworkInterface { %TypeHeaderCode #include %End public: enum InterfaceFlag { IsUp, IsRunning, CanBroadcast, IsLoopBack, IsPointToPoint, CanMulticast, }; typedef QFlags InterfaceFlags; QNetworkInterface(); QNetworkInterface(const QNetworkInterface &other); ~QNetworkInterface(); bool isValid() const; QString name() const; QNetworkInterface::InterfaceFlags flags() const; QString hardwareAddress() const; QList addressEntries() const; static QNetworkInterface interfaceFromName(const QString &name); static QNetworkInterface interfaceFromIndex(int index); static QList allInterfaces(); static QList allAddresses(); int index() const; QString humanReadableName() const; void swap(QNetworkInterface &other /Constrained/); %If (Qt_5_7_0 -) static int interfaceIndexFromName(const QString &name); %End %If (Qt_5_7_0 -) static QString interfaceNameFromIndex(int index); %End }; QFlags operator|(QNetworkInterface::InterfaceFlag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtNetwork/qnetworkproxy.sip0000644000076500000240000001343013245233151021723 0ustar philstaff00000000000000// qnetworkproxy.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkProxy { %TypeHeaderCode #include %End public: enum ProxyType { DefaultProxy, Socks5Proxy, NoProxy, HttpProxy, HttpCachingProxy, FtpCachingProxy, }; QNetworkProxy(); QNetworkProxy(QNetworkProxy::ProxyType type, const QString &hostName = QString(), quint16 port = 0, const QString &user = QString(), const QString &password = QString()); QNetworkProxy(const QNetworkProxy &other); ~QNetworkProxy(); void setType(QNetworkProxy::ProxyType type); QNetworkProxy::ProxyType type() const; void setUser(const QString &userName); QString user() const; void setPassword(const QString &password); QString password() const; void setHostName(const QString &hostName); QString hostName() const; void setPort(quint16 port); quint16 port() const; static void setApplicationProxy(const QNetworkProxy &proxy); static QNetworkProxy applicationProxy(); bool isCachingProxy() const; bool isTransparentProxy() const; bool operator==(const QNetworkProxy &other) const; bool operator!=(const QNetworkProxy &other) const; enum Capability { TunnelingCapability, ListeningCapability, UdpTunnelingCapability, CachingCapability, HostNameLookupCapability, %If (Qt_5_8_0 -) SctpTunnelingCapability, %End %If (Qt_5_8_0 -) SctpListeningCapability, %End }; typedef QFlags Capabilities; void setCapabilities(QNetworkProxy::Capabilities capab); QNetworkProxy::Capabilities capabilities() const; void swap(QNetworkProxy &other /Constrained/); QVariant header(QNetworkRequest::KnownHeaders header) const; void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); bool hasRawHeader(const QByteArray &headerName) const; QList rawHeaderList() const; QByteArray rawHeader(const QByteArray &headerName) const; void setRawHeader(const QByteArray &headerName, const QByteArray &value); }; class QNetworkProxyQuery { %TypeHeaderCode #include %End public: enum QueryType { TcpSocket, UdpSocket, TcpServer, UrlRequest, %If (Qt_5_8_0 -) SctpSocket, %End %If (Qt_5_8_0 -) SctpServer, %End }; QNetworkProxyQuery(); QNetworkProxyQuery(const QUrl &requestUrl, QNetworkProxyQuery::QueryType type = QNetworkProxyQuery::UrlRequest); QNetworkProxyQuery(const QString &hostname, int port, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType type = QNetworkProxyQuery::TcpSocket); QNetworkProxyQuery(quint16 bindPort, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType type = QNetworkProxyQuery::TcpServer); QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration, const QUrl &requestUrl, QNetworkProxyQuery::QueryType queryType = QNetworkProxyQuery::UrlRequest); QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration, const QString &hostname, int port, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType type = QNetworkProxyQuery::TcpSocket); QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration, quint16 bindPort, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType type = QNetworkProxyQuery::TcpServer); QNetworkProxyQuery(const QNetworkProxyQuery &other); ~QNetworkProxyQuery(); bool operator==(const QNetworkProxyQuery &other) const; bool operator!=(const QNetworkProxyQuery &other) const; QNetworkProxyQuery::QueryType queryType() const; void setQueryType(QNetworkProxyQuery::QueryType type); int peerPort() const; void setPeerPort(int port); QString peerHostName() const; void setPeerHostName(const QString &hostname); int localPort() const; void setLocalPort(int port); QString protocolTag() const; void setProtocolTag(const QString &protocolTag); QUrl url() const; void setUrl(const QUrl &url); QNetworkConfiguration networkConfiguration() const; void setNetworkConfiguration(const QNetworkConfiguration &networkConfiguration); void swap(QNetworkProxyQuery &other /Constrained/); }; class QNetworkProxyFactory /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: QNetworkProxyFactory(); virtual ~QNetworkProxyFactory(); virtual QList queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery()) = 0; static void setApplicationProxyFactory(QNetworkProxyFactory *factory /Transfer/); static QList proxyForQuery(const QNetworkProxyQuery &query); static QList systemProxyForQuery(const QNetworkProxyQuery &query = QNetworkProxyQuery()); static void setUseSystemConfiguration(bool enable); %If (Qt_5_8_0 -) static bool usesSystemConfiguration(); %End }; PyQt5_gpl-5.10.1/sip/QtNetwork/qnetworkreply.sip0000644000076500000240000001171013245233151021674 0ustar philstaff00000000000000// qnetworkreply.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkReply : QIODevice { %TypeHeaderCode #include %End public: enum NetworkError { NoError, ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, TimeoutError, OperationCanceledError, SslHandshakeFailedError, UnknownNetworkError, ProxyConnectionRefusedError, ProxyConnectionClosedError, ProxyNotFoundError, ProxyTimeoutError, ProxyAuthenticationRequiredError, UnknownProxyError, ContentAccessDenied, ContentOperationNotPermittedError, ContentNotFoundError, AuthenticationRequiredError, UnknownContentError, ProtocolUnknownError, ProtocolInvalidOperationError, ProtocolFailure, ContentReSendError, TemporaryNetworkFailureError, NetworkSessionFailedError, BackgroundRequestNotAllowedError, %If (Qt_5_3_0 -) ContentConflictError, %End %If (Qt_5_3_0 -) ContentGoneError, %End %If (Qt_5_3_0 -) InternalServerError, %End %If (Qt_5_3_0 -) OperationNotImplementedError, %End %If (Qt_5_3_0 -) ServiceUnavailableError, %End %If (Qt_5_3_0 -) UnknownServerError, %End %If (Qt_5_6_0 -) TooManyRedirectsError, %End %If (Qt_5_6_0 -) InsecureRedirectError, %End }; virtual ~QNetworkReply(); virtual void abort() = 0; virtual void close(); virtual bool isSequential() const; qint64 readBufferSize() const; virtual void setReadBufferSize(qint64 size); QNetworkAccessManager *manager() const; QNetworkAccessManager::Operation operation() const; QNetworkRequest request() const; QNetworkReply::NetworkError error() const; QUrl url() const; QVariant header(QNetworkRequest::KnownHeaders header) const; bool hasRawHeader(const QByteArray &headerName) const; QList rawHeaderList() const; QByteArray rawHeader(const QByteArray &headerName) const; QVariant attribute(QNetworkRequest::Attribute code) const; %If (PyQt_SSL) QSslConfiguration sslConfiguration() const; %End %If (PyQt_SSL) void setSslConfiguration(const QSslConfiguration &configuration); %End public slots: virtual void ignoreSslErrors(); signals: void metaDataChanged(); void finished(); %If (Qt_5_1_0 -) %If (PyQt_SSL) void encrypted(); %End %End void error(QNetworkReply::NetworkError); %If (PyQt_SSL) void sslErrors(const QList &errors); %End void uploadProgress(qint64 bytesSent, qint64 bytesTotal); void downloadProgress(qint64 bytesReceived, qint64 bytesTotal); %If (Qt_5_5_0 -) %If (PyQt_SSL) void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator); %End %End %If (Qt_5_6_0 -) void redirected(const QUrl &url); %End %If (Qt_5_9_0 -) void redirectAllowed(); %End protected: explicit QNetworkReply(QObject *parent /TransferThis/ = 0); virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) /ReleaseGIL/; void setOperation(QNetworkAccessManager::Operation operation); void setRequest(const QNetworkRequest &request); void setError(QNetworkReply::NetworkError errorCode, const QString &errorString); void setUrl(const QUrl &url); void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); void setRawHeader(const QByteArray &headerName, const QByteArray &value); void setAttribute(QNetworkRequest::Attribute code, const QVariant &value); void setFinished(bool finished); public: bool isFinished() const; bool isRunning() const; %If (PyQt_SSL) void ignoreSslErrors(const QList &errors); %End const QList> &rawHeaderPairs() const; protected: %If (PyQt_SSL) virtual void sslConfigurationImplementation(QSslConfiguration &) const; %End %If (PyQt_SSL) virtual void setSslConfigurationImplementation(const QSslConfiguration &); %End %If (PyQt_SSL) virtual void ignoreSslErrorsImplementation(const QList &); %End }; PyQt5_gpl-5.10.1/sip/QtNetwork/qnetworkrequest.sip0000644000076500000240000001033213245233151022230 0ustar philstaff00000000000000// qnetworkrequest.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkRequest { %TypeHeaderCode #include %End public: enum KnownHeaders { ContentTypeHeader, ContentLengthHeader, LocationHeader, LastModifiedHeader, CookieHeader, SetCookieHeader, ContentDispositionHeader, UserAgentHeader, ServerHeader, }; enum Attribute { HttpStatusCodeAttribute, HttpReasonPhraseAttribute, RedirectionTargetAttribute, ConnectionEncryptedAttribute, CacheLoadControlAttribute, CacheSaveControlAttribute, SourceIsFromCacheAttribute, DoNotBufferUploadDataAttribute, HttpPipeliningAllowedAttribute, HttpPipeliningWasUsedAttribute, CustomVerbAttribute, CookieLoadControlAttribute, AuthenticationReuseAttribute, CookieSaveControlAttribute, BackgroundRequestAttribute, %If (Qt_5_3_0 -) SpdyAllowedAttribute, %End %If (Qt_5_3_0 -) SpdyWasUsedAttribute, %End %If (Qt_5_5_0 -) EmitAllUploadProgressSignalsAttribute, %End %If (Qt_5_6_0 -) FollowRedirectsAttribute, %End %If (Qt_5_8_0 -) HTTP2AllowedAttribute, %End %If (Qt_5_8_0 -) HTTP2WasUsedAttribute, %End %If (Qt_5_9_0 -) OriginalContentLengthAttribute, %End %If (Qt_5_9_0 -) RedirectPolicyAttribute, %End User, UserMax, }; enum CacheLoadControl { AlwaysNetwork, PreferNetwork, PreferCache, AlwaysCache, }; enum LoadControl { Automatic, Manual, }; enum Priority { HighPriority, NormalPriority, LowPriority, }; explicit QNetworkRequest(const QUrl &url = QUrl()); QNetworkRequest(const QNetworkRequest &other); ~QNetworkRequest(); QUrl url() const; void setUrl(const QUrl &url); QVariant header(QNetworkRequest::KnownHeaders header) const; void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); bool hasRawHeader(const QByteArray &headerName) const; QList rawHeaderList() const; QByteArray rawHeader(const QByteArray &headerName) const; void setRawHeader(const QByteArray &headerName, const QByteArray &value); QVariant attribute(QNetworkRequest::Attribute code, const QVariant &defaultValue = QVariant()) const; void setAttribute(QNetworkRequest::Attribute code, const QVariant &value); %If (PyQt_SSL) QSslConfiguration sslConfiguration() const; %End %If (PyQt_SSL) void setSslConfiguration(const QSslConfiguration &configuration); %End bool operator==(const QNetworkRequest &other) const; bool operator!=(const QNetworkRequest &other) const; void setOriginatingObject(QObject *object /KeepReference/); QObject *originatingObject() const; QNetworkRequest::Priority priority() const; void setPriority(QNetworkRequest::Priority priority); void swap(QNetworkRequest &other /Constrained/); %If (Qt_5_6_0 -) int maximumRedirectsAllowed() const; %End %If (Qt_5_6_0 -) void setMaximumRedirectsAllowed(int maximumRedirectsAllowed); %End %If (Qt_5_9_0 -) enum RedirectPolicy { ManualRedirectPolicy, NoLessSafeRedirectPolicy, SameOriginRedirectPolicy, UserVerifiedRedirectPolicy, }; %End }; PyQt5_gpl-5.10.1/sip/QtNetwork/qnetworksession.sip0000644000076500000240000000563213245233151022232 0ustar philstaff00000000000000// qnetworksession.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkSession : QObject { %TypeHeaderCode #include %End public: enum State { Invalid, NotAvailable, Connecting, Connected, Closing, Disconnected, Roaming, }; enum SessionError { UnknownSessionError, SessionAbortedError, RoamingError, OperationNotSupportedError, InvalidConfigurationError, }; QNetworkSession(const QNetworkConfiguration &connConfig, QObject *parent /TransferThis/ = 0); virtual ~QNetworkSession(); bool isOpen() const; QNetworkConfiguration configuration() const; QNetworkInterface interface() const; QNetworkSession::State state() const; QNetworkSession::SessionError error() const; QString errorString() const; QVariant sessionProperty(const QString &key) const; void setSessionProperty(const QString &key, const QVariant &value); quint64 bytesWritten() const; quint64 bytesReceived() const; quint64 activeTime() const; bool waitForOpened(int msecs = 30000) /ReleaseGIL/; public slots: void open(); void close(); void stop(); void migrate(); void ignore(); void accept(); void reject(); signals: void stateChanged(QNetworkSession::State); void opened(); void closed(); void error(QNetworkSession::SessionError); void preferredConfigurationChanged(const QNetworkConfiguration &config, bool isSeamless); void newConfigurationActivated(); protected: virtual void connectNotify(const QMetaMethod &signal); virtual void disconnectNotify(const QMetaMethod &signal); public: enum UsagePolicy { NoPolicy, NoBackgroundTrafficPolicy, }; typedef QFlags UsagePolicies; QNetworkSession::UsagePolicies usagePolicies() const; signals: void usagePoliciesChanged(QNetworkSession::UsagePolicies usagePolicies); private: QNetworkSession(const QNetworkSession &); }; PyQt5_gpl-5.10.1/sip/QtNetwork/qpynetwork_qhash.sip0000644000076500000240000000656313245233151022367 0ustar philstaff00000000000000// This is the SIP interface definition for the QHash based mapped types // specific to the QtNetwork module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QHash /TypeHint="Dict[QNetworkRequest.Attribute, QVariant]", TypeHintValue="{}"/ { %TypeHeaderCode #include #include #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QHash::const_iterator it = sipCpp->constBegin(); QHash::const_iterator end = sipCpp->constEnd(); while (it != end) { PyObject *kobj = sipConvertFromEnum(it.key(), sipType_QNetworkRequest_Attribute); if (!kobj) { Py_DECREF(d); return 0; } QVariant *v = new QVariant(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType_QVariant, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QHash *qh = new QHash; Py_ssize_t pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int k = sipConvertToEnum(kobj, sipType_QNetworkRequest_Attribute); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "a key has type '%s' but 'QNetworkRequest.Attribute' is expected", sipPyTypeName(Py_TYPE(kobj))); delete qh; *sipIsErr = 1; return 0; } int vstate; QVariant *v = reinterpret_cast( sipForceConvertToType(vobj, sipType_QVariant, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { // Any error must be internal, so leave the exception as it is. delete qh; return 0; } qh->insert(static_cast(k), *v); sipReleaseType(v, sipType_QVariant, vstate); } *sipCppPtr = qh; return sipGetState(sipTransferObj); %End }; PyQt5_gpl-5.10.1/sip/QtNetwork/qpynetwork_qmap.sip0000644000076500000240000000745513245233151022222 0ustar philstaff00000000000000// This is the SIP interface definition for the QMap and QMultiMap based mapped // types specific to the QtNetwork module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) %MappedType QMultiMap /TypeHintOut="Dict[QSsl.AlternativeNameEntryType, List[QString]]", TypeHintValue="[]"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode // Get the enum objects that are the dictionary keys. static PyObject *email_entry = 0; static PyObject *dns_entry = 0; if (!email_entry) { email_entry = PyObject_GetAttrString( (PyObject *)sipTypeAsPyTypeObject(sipType_QSsl), "EmailEntry"); if (!email_entry) return 0; } if (!dns_entry) { dns_entry = PyObject_GetAttrString( (PyObject *)sipTypeAsPyTypeObject(sipType_QSsl), "DnsEntry"); if (!dns_entry) return 0; } // Create the dictionary. PyObject *d = PyDict_New(); if (!d) return 0; QList vl; // Handle the Qssl::EmailEntry key. vl = sipCpp->values(QSsl::EmailEntry); if (!vl.isEmpty()) { PyObject *vlobj = PyList_New(vl.count()); if (!vlobj) { Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, email_entry, vlobj); Py_DECREF(email_entry); Py_DECREF(vlobj); if (rc < 0) { Py_DECREF(d); return 0; } for (int i = 0; i < vl.count(); ++i) { QString *s = new QString(vl.at(i)); PyObject *vobj = sipConvertFromNewType(s, sipType_QString, sipTransferObj); if (!vobj) { delete s; Py_DECREF(d); return 0; } PyList_SetItem(vlobj, i, vobj); } } // Handle the Qssl::DnsEntry key. vl = sipCpp->values(QSsl::DnsEntry); if (!vl.isEmpty()) { PyObject *vlobj = PyList_New(vl.count()); if (!vlobj) { Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, dns_entry, vlobj); Py_DECREF(dns_entry); Py_DECREF(vlobj); if (rc < 0) { Py_DECREF(d); return 0; } for (int i = 0; i < vl.count(); ++i) { QString *s = new QString(vl.at(i)); PyObject *vobj = sipConvertFromNewType(s, sipType_QString, sipTransferObj); if (!vobj) { delete s; Py_DECREF(d); return 0; } PyList_SetItem(vlobj, i, vobj); } } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); PyErr_SetString(PyExc_NotImplementedError, "converting to QMultiMap is unsupported"); return 0; %End }; %End PyQt5_gpl-5.10.1/sip/QtNetwork/qssl.sip0000644000076500000240000000436713245233151017742 0ustar philstaff00000000000000// qssl.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) namespace QSsl { %TypeHeaderCode #include %End enum KeyType { PrivateKey, PublicKey, }; enum EncodingFormat { Pem, Der, }; enum KeyAlgorithm { Opaque, Rsa, Dsa, %If (Qt_5_5_0 -) Ec, %End }; enum AlternativeNameEntryType { EmailEntry, DnsEntry, }; enum SslProtocol { UnknownProtocol, SslV3, SslV2, TlsV1_0, %If (Qt_5_5_0 -) TlsV1_0OrLater, %End TlsV1_1, %If (Qt_5_5_0 -) TlsV1_1OrLater, %End TlsV1_2, %If (Qt_5_5_0 -) TlsV1_2OrLater, %End AnyProtocol, TlsV1SslV3, SecureProtocols, }; enum SslOption { SslOptionDisableEmptyFragments, SslOptionDisableSessionTickets, SslOptionDisableCompression, SslOptionDisableServerNameIndication, SslOptionDisableLegacyRenegotiation, %If (Qt_5_2_0 -) SslOptionDisableSessionSharing, %End %If (Qt_5_2_0 -) SslOptionDisableSessionPersistence, %End %If (Qt_5_6_0 -) SslOptionDisableServerCipherPreference, %End }; typedef QFlags SslOptions; }; %End %If (PyQt_SSL) QFlags operator|(QSsl::SslOption f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtNetwork/qsslcertificate.sip0000644000076500000240000000701613245233151022137 0ustar philstaff00000000000000// qsslcertificate.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslCertificate { %TypeHeaderCode #include %End public: enum SubjectInfo { Organization, CommonName, LocalityName, OrganizationalUnitName, CountryName, StateOrProvinceName, DistinguishedNameQualifier, SerialNumber, EmailAddress, }; QSslCertificate(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem) /ReleaseGIL/; QSslCertificate(const QByteArray &data = QByteArray(), QSsl::EncodingFormat format = QSsl::Pem); QSslCertificate(const QSslCertificate &other); ~QSslCertificate(); bool operator==(const QSslCertificate &other) const; bool operator!=(const QSslCertificate &other) const; bool isNull() const; void clear(); QByteArray version() const; QByteArray serialNumber() const; QByteArray digest(QCryptographicHash::Algorithm algorithm = QCryptographicHash::Md5) const; QStringList issuerInfo(QSslCertificate::SubjectInfo info) const; QStringList issuerInfo(const QByteArray &attribute) const; QStringList subjectInfo(QSslCertificate::SubjectInfo info) const; QStringList subjectInfo(const QByteArray &attribute) const; QMultiMap subjectAlternativeNames() const; QDateTime effectiveDate() const; QDateTime expiryDate() const; QSslKey publicKey() const; QByteArray toPem() const; QByteArray toDer() const; static QList fromPath(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QRegExp::PatternSyntax syntax = QRegExp::FixedString); static QList fromDevice(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem); static QList fromData(const QByteArray &data, QSsl::EncodingFormat format = QSsl::Pem); Qt::HANDLE handle() const; void swap(QSslCertificate &other /Constrained/); bool isBlacklisted() const; QList subjectInfoAttributes() const; QList issuerInfoAttributes() const; QList extensions() const; QString toText() const; static QList verify(QList certificateChain, const QString &hostName = QString()); %If (Qt_5_4_0 -) bool isSelfSigned() const; %End %If (Qt_5_4_0 -) long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End %If (Qt_5_4_0 -) static bool importPkcs12(QIODevice *device, QSslKey *key, QSslCertificate *certificate, QList *caCertificates = 0, const QByteArray &passPhrase = QByteArray()) /ReleaseGIL/; %End }; %End PyQt5_gpl-5.10.1/sip/QtNetwork/qsslcertificateextension.sip0000644000076500000240000000262213245233151024072 0ustar philstaff00000000000000// qsslcertificateextension.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslCertificateExtension { %TypeHeaderCode #include %End public: QSslCertificateExtension(); QSslCertificateExtension(const QSslCertificateExtension &other); ~QSslCertificateExtension(); void swap(QSslCertificateExtension &other /Constrained/); QString oid() const; QString name() const; QVariant value() const; bool isCritical() const; bool isSupported() const; }; %End PyQt5_gpl-5.10.1/sip/QtNetwork/qsslcipher.sip0000644000076500000240000000326413245233151021130 0ustar philstaff00000000000000// qsslcipher.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslCipher { %TypeHeaderCode #include %End public: QSslCipher(); %If (Qt_5_3_0 -) explicit QSslCipher(const QString &name); %End QSslCipher(const QString &name, QSsl::SslProtocol protocol); QSslCipher(const QSslCipher &other); ~QSslCipher(); bool operator==(const QSslCipher &other) const; bool operator!=(const QSslCipher &other) const; bool isNull() const; QString name() const; int supportedBits() const; int usedBits() const; QString keyExchangeMethod() const; QString authenticationMethod() const; QString encryptionMethod() const; QString protocolString() const; QSsl::SslProtocol protocol() const; void swap(QSslCipher &other /Constrained/); }; %End PyQt5_gpl-5.10.1/sip/QtNetwork/qsslconfiguration.sip0000644000076500000240000001053113245233151022520 0ustar philstaff00000000000000// qsslconfiguration.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslConfiguration { %TypeHeaderCode #include %End public: QSslConfiguration(); QSslConfiguration(const QSslConfiguration &other); ~QSslConfiguration(); bool isNull() const; QSsl::SslProtocol protocol() const; void setProtocol(QSsl::SslProtocol protocol); QSslSocket::PeerVerifyMode peerVerifyMode() const; void setPeerVerifyMode(QSslSocket::PeerVerifyMode mode); int peerVerifyDepth() const; void setPeerVerifyDepth(int depth); QSslCertificate localCertificate() const; void setLocalCertificate(const QSslCertificate &certificate); QSslCertificate peerCertificate() const; QList peerCertificateChain() const; QSslCipher sessionCipher() const; QSslKey privateKey() const; void setPrivateKey(const QSslKey &key); QList ciphers() const; void setCiphers(const QList &ciphers); QList caCertificates() const; void setCaCertificates(const QList &certificates); static QSslConfiguration defaultConfiguration(); static void setDefaultConfiguration(const QSslConfiguration &configuration); bool operator==(const QSslConfiguration &other) const; bool operator!=(const QSslConfiguration &other) const; void setSslOption(QSsl::SslOption option, bool on); bool testSslOption(QSsl::SslOption option) const; void swap(QSslConfiguration &other /Constrained/); %If (Qt_5_1_0 -) QList localCertificateChain() const; %End %If (Qt_5_1_0 -) void setLocalCertificateChain(const QList &localChain); %End %If (Qt_5_2_0 -) QByteArray sessionTicket() const; %End %If (Qt_5_2_0 -) void setSessionTicket(const QByteArray &sessionTicket); %End %If (Qt_5_2_0 -) int sessionTicketLifeTimeHint() const; %End %If (Qt_5_3_0 -) enum NextProtocolNegotiationStatus { NextProtocolNegotiationNone, NextProtocolNegotiationNegotiated, NextProtocolNegotiationUnsupported, }; %End %If (Qt_5_3_0 -) void setAllowedNextProtocols(QList protocols); %End %If (Qt_5_3_0 -) QList allowedNextProtocols() const; %End %If (Qt_5_3_0 -) QByteArray nextNegotiatedProtocol() const; %End %If (Qt_5_3_0 -) QSslConfiguration::NextProtocolNegotiationStatus nextProtocolNegotiationStatus() const; %End %If (Qt_5_3_0 -) static const char *NextProtocolSpdy3_0 /Encoding="None",NoSetter/; %End %If (Qt_5_3_0 -) static const char *NextProtocolHttp1_1 /Encoding="None",NoSetter/; %End %If (Qt_5_4_0 -) QSsl::SslProtocol sessionProtocol() const; %End %If (Qt_5_5_0 -) static QList supportedCiphers(); %End %If (Qt_5_5_0 -) static QList systemCaCertificates(); %End %If (Qt_5_5_0 -) QVector ellipticCurves() const; %End %If (Qt_5_5_0 -) void setEllipticCurves(const QVector &curves); %End %If (Qt_5_5_0 -) static QVector supportedEllipticCurves(); %End %If (Qt_5_7_0 -) QSslKey ephemeralServerKey() const; %End %If (Qt_5_8_0 -) QByteArray preSharedKeyIdentityHint() const; %End %If (Qt_5_8_0 -) void setPreSharedKeyIdentityHint(const QByteArray &hint); %End %If (Qt_5_8_0 -) QSslDiffieHellmanParameters diffieHellmanParameters() const; %End %If (Qt_5_8_0 -) void setDiffieHellmanParameters(const QSslDiffieHellmanParameters &dhparams); %End }; %End PyQt5_gpl-5.10.1/sip/QtNetwork/qssldiffiehellmanparameters.sip0000644000076500000240000000434513245233151024532 0ustar philstaff00000000000000// qssldiffiehellmanparameters.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_8_0 -) %If (PyQt_SSL) class QSslDiffieHellmanParameters { %TypeHeaderCode #include %End public: enum Error { NoError, InvalidInputDataError, UnsafeParametersError, }; QSslDiffieHellmanParameters(); QSslDiffieHellmanParameters(const QSslDiffieHellmanParameters &other); ~QSslDiffieHellmanParameters(); void swap(QSslDiffieHellmanParameters &other /Constrained/); static QSslDiffieHellmanParameters defaultParameters(); static QSslDiffieHellmanParameters fromEncoded(const QByteArray &encoded, QSsl::EncodingFormat encoding = QSsl::EncodingFormat::Pem); static QSslDiffieHellmanParameters fromEncoded(QIODevice *device, QSsl::EncodingFormat encoding = QSsl::EncodingFormat::Pem) /ReleaseGIL/; bool isEmpty() const; bool isValid() const; QSslDiffieHellmanParameters::Error error() const; QString errorString() const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %End %If (Qt_5_8_0 -) %If (PyQt_SSL) bool operator==(const QSslDiffieHellmanParameters &lhs, const QSslDiffieHellmanParameters &rhs); %End %End %If (Qt_5_8_0 -) %If (PyQt_SSL) bool operator!=(const QSslDiffieHellmanParameters &lhs, const QSslDiffieHellmanParameters &rhs); %End %End PyQt5_gpl-5.10.1/sip/QtNetwork/qsslellipticcurve.sip0000644000076500000240000000316713245233151022532 0ustar philstaff00000000000000// qsslellipticcurve.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) %If (PyQt_SSL) class QSslEllipticCurve { %TypeHeaderCode #include %End public: QSslEllipticCurve(); static QSslEllipticCurve fromShortName(const QString &name); static QSslEllipticCurve fromLongName(const QString &name); QString shortName() const; QString longName() const; bool isValid() const; bool isTlsNamedCurve() const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %End %If (Qt_5_5_0 -) %If (PyQt_SSL) bool operator==(QSslEllipticCurve lhs, QSslEllipticCurve rhs); %End %End %If (Qt_5_5_0 -) %If (PyQt_SSL) bool operator!=(QSslEllipticCurve lhs, QSslEllipticCurve rhs); %End %End PyQt5_gpl-5.10.1/sip/QtNetwork/qsslerror.sip0000644000076500000240000000463513245233151021012 0ustar philstaff00000000000000// qsslerror.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslError { %TypeHeaderCode #include %End public: enum SslError { UnspecifiedError, NoError, UnableToGetIssuerCertificate, UnableToDecryptCertificateSignature, UnableToDecodeIssuerPublicKey, CertificateSignatureFailed, CertificateNotYetValid, CertificateExpired, InvalidNotBeforeField, InvalidNotAfterField, SelfSignedCertificate, SelfSignedCertificateInChain, UnableToGetLocalIssuerCertificate, UnableToVerifyFirstCertificate, CertificateRevoked, InvalidCaCertificate, PathLengthExceeded, InvalidPurpose, CertificateUntrusted, CertificateRejected, SubjectIssuerMismatch, AuthorityIssuerSerialNumberMismatch, NoPeerCertificate, HostNameMismatch, NoSslSupport, CertificateBlacklisted, }; QSslError(); QSslError(QSslError::SslError error); QSslError(QSslError::SslError error, const QSslCertificate &certificate); QSslError(const QSslError &other); ~QSslError(); QSslError::SslError error() const; QString errorString() const; QSslCertificate certificate() const; bool operator==(const QSslError &other) const; bool operator!=(const QSslError &other) const; void swap(QSslError &other /Constrained/); %If (Qt_5_4_0 -) long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End }; %End PyQt5_gpl-5.10.1/sip/QtNetwork/qsslkey.sip0000644000076500000240000000374513245233151020452 0ustar philstaff00000000000000// qsslkey.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslKey { %TypeHeaderCode #include %End public: QSslKey(); QSslKey(const QByteArray &encoded, QSsl::KeyAlgorithm algorithm, QSsl::EncodingFormat encoding = QSsl::Pem, QSsl::KeyType type = QSsl::PrivateKey, const QByteArray &passPhrase = QByteArray()); QSslKey(QIODevice *device, QSsl::KeyAlgorithm algorithm, QSsl::EncodingFormat encoding = QSsl::Pem, QSsl::KeyType type = QSsl::PrivateKey, const QByteArray &passPhrase = QByteArray()); QSslKey(Qt::HANDLE handle, QSsl::KeyType type = QSsl::PrivateKey); QSslKey(const QSslKey &other); ~QSslKey(); bool isNull() const; void clear(); int length() const; QSsl::KeyType type() const; QSsl::KeyAlgorithm algorithm() const; QByteArray toPem(const QByteArray &passPhrase = QByteArray()) const; QByteArray toDer(const QByteArray &passPhrase = QByteArray()) const; Qt::HANDLE handle() const; bool operator==(const QSslKey &key) const; bool operator!=(const QSslKey &key) const; void swap(QSslKey &other /Constrained/); }; %End PyQt5_gpl-5.10.1/sip/QtNetwork/qsslpresharedkeyauthenticator.sip0000644000076500000240000000363513245233151025141 0ustar philstaff00000000000000// qsslpresharedkeyauthenticator.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) %If (PyQt_SSL) class QSslPreSharedKeyAuthenticator { %TypeHeaderCode #include %End public: QSslPreSharedKeyAuthenticator(); QSslPreSharedKeyAuthenticator(const QSslPreSharedKeyAuthenticator &authenticator); ~QSslPreSharedKeyAuthenticator(); void swap(QSslPreSharedKeyAuthenticator &authenticator /Constrained/); QByteArray identityHint() const; void setIdentity(const QByteArray &identity); QByteArray identity() const; int maximumIdentityLength() const; void setPreSharedKey(const QByteArray &preSharedKey); QByteArray preSharedKey() const; int maximumPreSharedKeyLength() const; }; %End %End %If (Qt_5_5_0 -) %If (PyQt_SSL) bool operator==(const QSslPreSharedKeyAuthenticator &lhs, const QSslPreSharedKeyAuthenticator &rhs); %End %End %If (Qt_5_5_0 -) %If (PyQt_SSL) bool operator!=(const QSslPreSharedKeyAuthenticator &lhs, const QSslPreSharedKeyAuthenticator &rhs); %End %End PyQt5_gpl-5.10.1/sip/QtNetwork/qsslsocket.sip0000644000076500000240000001737113245233151021152 0ustar philstaff00000000000000// qsslsocket.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslSocket : QTcpSocket { %TypeHeaderCode #include %End public: enum SslMode { UnencryptedMode, SslClientMode, SslServerMode, }; explicit QSslSocket(QObject *parent /TransferThis/ = 0); virtual ~QSslSocket(); void connectToHostEncrypted(const QString &hostName, quint16 port, QIODevice::OpenMode mode = QIODevice::ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::AnyIPProtocol) /ReleaseGIL/; void connectToHostEncrypted(const QString &hostName, quint16 port, const QString &sslPeerName, QIODevice::OpenMode mode = QIODevice::ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::AnyIPProtocol) /ReleaseGIL/; virtual bool setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState state = QAbstractSocket::ConnectedState, QIODevice::OpenMode mode = QIODevice::ReadWrite); QSslSocket::SslMode mode() const; bool isEncrypted() const; QSsl::SslProtocol protocol() const; void setProtocol(QSsl::SslProtocol protocol); virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool canReadLine() const; virtual void close(); virtual bool atEnd() const; bool flush(); void abort(); void setLocalCertificate(const QSslCertificate &certificate); void setLocalCertificate(const QString &path, QSsl::EncodingFormat format = QSsl::Pem); QSslCertificate localCertificate() const; QSslCertificate peerCertificate() const; QList peerCertificateChain() const; QSslCipher sessionCipher() const; void setPrivateKey(const QSslKey &key); void setPrivateKey(const QString &fileName, QSsl::KeyAlgorithm algorithm = QSsl::Rsa, QSsl::EncodingFormat format = QSsl::Pem, const QByteArray &passPhrase = QByteArray()); QSslKey privateKey() const; QList ciphers() const; void setCiphers(const QList &ciphers); void setCiphers(const QString &ciphers); static void setDefaultCiphers(const QList &ciphers); static QList defaultCiphers(); static QList supportedCiphers(); bool addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QRegExp::PatternSyntax syntax = QRegExp::FixedString); void addCaCertificate(const QSslCertificate &certificate); void addCaCertificates(const QList &certificates); void setCaCertificates(const QList &certificates); QList caCertificates() const; static bool addDefaultCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QRegExp::PatternSyntax syntax = QRegExp::FixedString); static void addDefaultCaCertificate(const QSslCertificate &certificate); static void addDefaultCaCertificates(const QList &certificates); static void setDefaultCaCertificates(const QList &certificates); static QList defaultCaCertificates(); static QList systemCaCertificates(); virtual bool waitForConnected(int msecs = 30000) /ReleaseGIL/; bool waitForEncrypted(int msecs = 30000) /ReleaseGIL/; virtual bool waitForReadyRead(int msecs = 30000) /ReleaseGIL/; virtual bool waitForBytesWritten(int msecs = 30000) /ReleaseGIL/; virtual bool waitForDisconnected(int msecs = 30000) /ReleaseGIL/; QList sslErrors() const; static bool supportsSsl(); public slots: void startClientEncryption(); void startServerEncryption(); void ignoreSslErrors(); signals: void encrypted(); void sslErrors(const QList &errors); void modeChanged(QSslSocket::SslMode newMode); %If (Qt_5_5_0 -) void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator); %End protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /TypeHint="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QSslSocket::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 len /ArraySize/) /ReleaseGIL/; public: enum PeerVerifyMode { VerifyNone, QueryPeer, VerifyPeer, AutoVerifyPeer, }; QSslSocket::PeerVerifyMode peerVerifyMode() const; void setPeerVerifyMode(QSslSocket::PeerVerifyMode mode); int peerVerifyDepth() const; void setPeerVerifyDepth(int depth); virtual void setReadBufferSize(qint64 size); qint64 encryptedBytesAvailable() const; qint64 encryptedBytesToWrite() const; QSslConfiguration sslConfiguration() const; void setSslConfiguration(const QSslConfiguration &config); signals: void peerVerifyError(const QSslError &error); void encryptedBytesWritten(qint64 totalBytes); public: virtual void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value); virtual QVariant socketOption(QAbstractSocket::SocketOption option); void ignoreSslErrors(const QList &errors); QString peerVerifyName() const; void setPeerVerifyName(const QString &hostName); virtual void resume() /ReleaseGIL/; virtual void connectToHost(const QString &hostName, quint16 port, QIODevice::OpenMode mode = QIODevice::ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::AnyIPProtocol) /ReleaseGIL/; virtual void disconnectFromHost() /ReleaseGIL/; static long sslLibraryVersionNumber(); static QString sslLibraryVersionString(); %If (Qt_5_1_0 -) void setLocalCertificateChain(const QList &localChain); %End %If (Qt_5_1_0 -) QList localCertificateChain() const; %End %If (Qt_5_4_0 -) QSsl::SslProtocol sessionProtocol() const; %End %If (Qt_5_4_0 -) static long sslLibraryBuildVersionNumber(); %End %If (Qt_5_4_0 -) static QString sslLibraryBuildVersionString(); %End private: QSslSocket(const QSslSocket &); }; %End PyQt5_gpl-5.10.1/sip/QtNetwork/qtcpserver.sip0000644000076500000240000000421113245233151021142 0ustar philstaff00000000000000// qtcpserver.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTcpServer : QObject { %TypeHeaderCode #include %End public: explicit QTcpServer(QObject *parent /TransferThis/ = 0); virtual ~QTcpServer(); bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0); void close(); bool isListening() const; void setMaxPendingConnections(int numConnections); int maxPendingConnections() const; quint16 serverPort() const; QHostAddress serverAddress() const; qintptr socketDescriptor() const; bool setSocketDescriptor(qintptr socketDescriptor); bool waitForNewConnection(int msecs = 0, bool *timedOut = 0) /ReleaseGIL/; virtual bool hasPendingConnections() const; virtual QTcpSocket *nextPendingConnection(); QAbstractSocket::SocketError serverError() const; QString errorString() const; void setProxy(const QNetworkProxy &networkProxy); QNetworkProxy proxy() const; void pauseAccepting(); void resumeAccepting(); protected: virtual void incomingConnection(qintptr handle); void addPendingConnection(QTcpSocket *socket); signals: void newConnection(); void acceptError(QAbstractSocket::SocketError socketError); private: QTcpServer(const QTcpServer &); }; PyQt5_gpl-5.10.1/sip/QtNetwork/qtcpsocket.sip0000644000076500000240000000223413245233151021127 0ustar philstaff00000000000000// qtcpsocket.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTcpSocket : QAbstractSocket { %TypeHeaderCode #include %End public: explicit QTcpSocket(QObject *parent /TransferThis/ = 0); virtual ~QTcpSocket(); private: QTcpSocket(const QTcpSocket &); }; PyQt5_gpl-5.10.1/sip/QtNetwork/QtNetworkmod.sip0000644000076500000240000000567513245233151021421 0ustar philstaff00000000000000// QtNetworkmod.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtNetwork, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qabstractnetworkcache.sip %Include qabstractsocket.sip %Include qauthenticator.sip %Include qdnslookup.sip %Include qhostaddress.sip %Include qhostinfo.sip %Include qhstspolicy.sip %Include qhttpmultipart.sip %Include qlocalserver.sip %Include qlocalsocket.sip %Include qnetworkaccessmanager.sip %Include qnetworkconfigmanager.sip %Include qnetworkconfiguration.sip %Include qnetworkcookie.sip %Include qnetworkcookiejar.sip %Include qnetworkdatagram.sip %Include qnetworkdiskcache.sip %Include qnetworkinterface.sip %Include qnetworkproxy.sip %Include qnetworkreply.sip %Include qnetworkrequest.sip %Include qnetworksession.sip %Include qssl.sip %Include qsslcertificate.sip %Include qsslcertificateextension.sip %Include qsslcipher.sip %Include qsslconfiguration.sip %Include qssldiffiehellmanparameters.sip %Include qsslellipticcurve.sip %Include qsslerror.sip %Include qsslkey.sip %Include qsslpresharedkeyauthenticator.sip %Include qsslsocket.sip %Include qtcpserver.sip %Include qtcpsocket.sip %Include qudpsocket.sip %Include qpynetwork_qhash.sip %Include qpynetwork_qmap.sip PyQt5_gpl-5.10.1/sip/QtNetwork/qudpsocket.sip0000644000076500000240000000577513245233151021146 0ustar philstaff00000000000000// qudpsocket.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUdpSocket : QAbstractSocket { %TypeHeaderCode #include %End public: explicit QUdpSocket(QObject *parent /TransferThis/ = 0); virtual ~QUdpSocket(); bool hasPendingDatagrams() const; qint64 pendingDatagramSize() const; SIP_PYOBJECT readDatagram(qint64 maxlen, QHostAddress *host /Out/ = 0, quint16 *port = 0) /TypeHint="Py_v3:bytes;str",ReleaseGIL/; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS len = sipCpp->readDatagram(s, a0, a1, &a2); Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End qint64 writeDatagram(const char *data /Array/, qint64 len /ArraySize/, const QHostAddress &host, quint16 port) /ReleaseGIL/; qint64 writeDatagram(const QByteArray &datagram, const QHostAddress &host, quint16 port) /ReleaseGIL/; bool joinMulticastGroup(const QHostAddress &groupAddress); bool joinMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface); bool leaveMulticastGroup(const QHostAddress &groupAddress); bool leaveMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface); QNetworkInterface multicastInterface() const; void setMulticastInterface(const QNetworkInterface &iface); %If (Qt_5_8_0 -) QNetworkDatagram receiveDatagram(qint64 maxSize = -1) /ReleaseGIL/; %End %If (Qt_5_8_0 -) qint64 writeDatagram(const QNetworkDatagram &datagram) /ReleaseGIL/; %End private: QUdpSocket(const QUdpSocket &); }; PyQt5_gpl-5.10.1/sip/QtNetworkAuth/0000755000076500000240000000000013245233151017053 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtNetworkAuth/qabstractoauth.sip0000644000076500000240000001747213245233151022630 0ustar philstaff00000000000000// qabstractoauth.sip generated by MetaSIP // // This file is part of the QtNetworkAuth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_10_0 -) class QAbstractOAuth : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QAbstractOAuth, &sipType_QAbstractOAuth, 2, 1}, {sipName_QAbstractOAuthReplyHandler, &sipType_QAbstractOAuthReplyHandler, 5, -1}, {sipName_QAbstractOAuth2, &sipType_QAbstractOAuth2, 4, 3}, {sipName_QOAuth1, &sipType_QOAuth1, -1, -1}, {sipName_QOAuth2AuthorizationCodeFlow, &sipType_QOAuth2AuthorizationCodeFlow, -1, -1}, {sipName_QOAuthOobReplyHandler, &sipType_QOAuthOobReplyHandler, 6, -1}, {sipName_QOAuthHttpServerReplyHandler, &sipType_QOAuthHttpServerReplyHandler, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum class Status { NotAuthenticated, TemporaryCredentialsReceived, Granted, RefreshingToken, }; enum class Stage { RequestingTemporaryCredentials, RequestingAuthorization, RequestingAccessToken, RefreshingAccessToken, }; enum class Error { NoError, NetworkError, ServerError, OAuthTokenNotFoundError, OAuthTokenSecretNotFoundError, OAuthCallbackNotVerified, }; enum class ContentType { WwwFormUrlEncoded, Json, }; virtual ~QAbstractOAuth(); QString clientIdentifier() const; void setClientIdentifier(const QString &clientIdentifier); QString token() const; void setToken(const QString &token); QNetworkAccessManager *networkAccessManager() const; void setNetworkAccessManager(QNetworkAccessManager *networkAccessManager /KeepReference/); QAbstractOAuth::Status status() const; QUrl authorizationUrl() const; void setAuthorizationUrl(const QUrl &url); QVariantMap extraTokens() const; QAbstractOAuthReplyHandler *replyHandler() const; void setReplyHandler(QAbstractOAuthReplyHandler *handler /KeepReference/); virtual QNetworkReply *head(const QUrl &url, const QVariantMap ¶meters = QVariantMap()) = 0; virtual QNetworkReply *get(const QUrl &url, const QVariantMap ¶meters = QVariantMap()) = 0; virtual QNetworkReply *post(const QUrl &url, const QVariantMap ¶meters = QVariantMap()) = 0; virtual QNetworkReply *put(const QUrl &url, const QVariantMap ¶meters = QVariantMap()) = 0; virtual QNetworkReply *deleteResource(const QUrl &url, const QVariantMap ¶meters = QVariantMap()) = 0; SIP_PYCALLABLE modifyParametersFunction() const; %MethodCode // The callable, if any, is held in the user object. sipRes = sipGetUserObject((sipSimpleWrapper *)sipSelf); Py_XINCREF(sipRes); %End void setModifyParametersFunction(SIP_PYCALLABLE modifyParametersFunction /AllowNone/); %MethodCode // Remove any existing callable. PyObject *func = sipGetUserObject((sipSimpleWrapper *)sipSelf); Py_XDECREF(func); // Save the new callable. if (a0 == Py_None) { func = 0; } else { func = a0; Py_INCREF(func); } sipSetUserObject((sipSimpleWrapper *)sipSelf, func); Py_BEGIN_ALLOW_THREADS sipCpp->setModifyParametersFunction([func](QAbstractOAuth::Stage stage, QVariantMap *parameters) { if (func) { SIP_BLOCK_THREADS static const sipTypeDef *variant_map = 0; if (!variant_map) { variant_map = sipFindType("QMap"); Q_ASSERT(variant_map); } PyObject *parameters_obj = sipConvertFromType(parameters, variant_map, NULL); if (!parameters_obj) { pyqt5_qtnetworkauth_err_print(); } else { PyObject *res = sipCallMethod(NULL, func, "FR", stage, sipType_QAbstractOAuth_Stage, parameters_obj); if (!res) { pyqt5_qtnetworkauth_err_print(); } else { Py_DECREF(res); int iserr = 0; QVariantMap *updated = reinterpret_cast(sipForceConvertToType(parameters_obj, variant_map, NULL, SIP_NO_CONVERTORS, NULL, &iserr)); if (iserr) { pyqt5_qtnetworkauth_err_print(); } else { // Copy the updated parameters. *parameters = *updated; delete updated; } } Py_DECREF(parameters_obj); } SIP_UNBLOCK_THREADS } }); Py_END_ALLOW_THREADS %End QAbstractOAuth::ContentType contentType() const; void setContentType(QAbstractOAuth::ContentType contentType); public slots: virtual void grant() = 0; signals: void clientIdentifierChanged(const QString &clientIdentifier); void tokenChanged(const QString &token); void statusChanged(QAbstractOAuth::Status status); void authorizationUrlChanged(const QUrl &url); void extraTokensChanged(const QVariantMap &tokens); void contentTypeChanged(QAbstractOAuth::ContentType contentType); void requestFailed(const QAbstractOAuth::Error error); void authorizeWithBrowser(const QUrl &url); void granted(); void finished(QNetworkReply *reply); void replyDataReceived(const QByteArray &data); protected: void setStatus(QAbstractOAuth::Status status); QString callback() const; virtual void resourceOwnerAuthorization(const QUrl &url, const QVariantMap ¶meters); static QByteArray generateRandomString(quint8 length); }; %End %ModuleHeaderCode // Imports from QtCore. typedef void (*pyqt5_qtnetworkauth_err_print_t)(); extern pyqt5_qtnetworkauth_err_print_t pyqt5_qtnetworkauth_err_print; %End %ModuleCode // Imports from QtCore. pyqt5_qtnetworkauth_err_print_t pyqt5_qtnetworkauth_err_print; %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtnetworkauth_err_print = (pyqt5_qtnetworkauth_err_print_t)sipImportSymbol("pyqt5_err_print"); Q_ASSERT(pyqt5_qtnetworkauth_err_print); %End PyQt5_gpl-5.10.1/sip/QtNetworkAuth/qabstractoauth2.sip0000644000076500000240000000645213245233151022706 0ustar philstaff00000000000000// qabstractoauth2.sip generated by MetaSIP // // This file is part of the QtNetworkAuth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_10_0 -) class QAbstractOAuth2 : QAbstractOAuth { %TypeHeaderCode #include %End public: explicit QAbstractOAuth2(QObject *parent /TransferThis/ = 0); QAbstractOAuth2(QNetworkAccessManager *manager /KeepReference/, QObject *parent /TransferThis/ = 0); virtual ~QAbstractOAuth2(); virtual QUrl createAuthenticatedUrl(const QUrl &url, const QVariantMap ¶meters = QVariantMap()); virtual QNetworkReply *head(const QUrl &url, const QVariantMap ¶meters = QVariantMap()); virtual QNetworkReply *get(const QUrl &url, const QVariantMap ¶meters = QVariantMap()); virtual QNetworkReply *post(const QUrl &url, const QVariantMap ¶meters = QVariantMap()); virtual QNetworkReply *put(const QUrl &url, const QVariantMap ¶meters = QVariantMap()); virtual QNetworkReply *deleteResource(const QUrl &url, const QVariantMap ¶meters = QVariantMap()); QString scope() const; void setScope(const QString &scope); QString userAgent() const; void setUserAgent(const QString &userAgent); QString responseType() const; QString clientIdentifierSharedKey() const; void setClientIdentifierSharedKey(const QString &clientIdentifierSharedKey); QString state() const; void setState(const QString &state); QDateTime expirationAt() const; QString refreshToken() const; void setRefreshToken(const QString &refreshToken); signals: void scopeChanged(const QString &scope); void userAgentChanged(const QString &userAgent); void responseTypeChanged(const QString &responseType); void clientIdentifierSharedKeyChanged(const QString &clientIdentifierSharedKey); void stateChanged(const QString &state); void expirationAtChanged(const QDateTime &expiration); void error(const QString &error, const QString &errorDescription, const QUrl &uri); void authorizationCallbackReceived(const QVariantMap &data); protected: void setResponseType(const QString &responseType); public: %If (Qt_5_10_1 -) virtual QNetworkReply *post(const QUrl &url, const QByteArray &data); %End %If (Qt_5_10_1 -) virtual QNetworkReply *post(const QUrl &url, QHttpMultiPart *multiPart); %End %If (Qt_5_10_1 -) virtual QNetworkReply *put(const QUrl &url, const QByteArray &data); %End %If (Qt_5_10_1 -) virtual QNetworkReply *put(const QUrl &url, QHttpMultiPart *multiPart); %End }; %End PyQt5_gpl-5.10.1/sip/QtNetworkAuth/qabstractoauthreplyhandler.sip0000644000076500000240000000305413245233151025231 0ustar philstaff00000000000000// qabstractoauthreplyhandler.sip generated by MetaSIP // // This file is part of the QtNetworkAuth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_10_0 -) class QAbstractOAuthReplyHandler : QObject { %TypeHeaderCode #include %End public: explicit QAbstractOAuthReplyHandler(QObject *parent /TransferThis/ = 0); virtual ~QAbstractOAuthReplyHandler(); virtual QString callback() const = 0; public slots: virtual void networkReplyFinished(QNetworkReply *reply) = 0; signals: void callbackReceived(const QVariantMap &values); void tokensReceived(const QVariantMap &tokens); void replyDataReceived(const QByteArray &data); void callbackDataReceived(const QByteArray &data); }; %End PyQt5_gpl-5.10.1/sip/QtNetworkAuth/qoauth1.sip0000644000076500000240000000753013245233151021157 0ustar philstaff00000000000000// qoauth1.sip generated by MetaSIP // // This file is part of the QtNetworkAuth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_10_0 -) class QOAuth1 : QAbstractOAuth { %TypeHeaderCode #include %End public: enum class SignatureMethod { Hmac_Sha1, Rsa_Sha1, PlainText, }; explicit QOAuth1(QObject *parent /TransferThis/ = 0); QOAuth1(QNetworkAccessManager *manager /KeepReference/, QObject *parent /TransferThis/ = 0); QOAuth1(const QString &clientIdentifier, const QString &clientSharedSecret, QNetworkAccessManager *manager /KeepReference/, QObject *parent /TransferThis/ = 0); QString clientSharedSecret() const; void setClientSharedSecret(const QString &clientSharedSecret); QPair clientCredentials() const; void setClientCredentials(const QPair &clientCredentials); void setClientCredentials(const QString &clientIdentifier, const QString &clientSharedSecret); QString tokenSecret() const; void setTokenSecret(const QString &tokenSecret); QPair tokenCredentials() const; void setTokenCredentials(const QPair &tokenCredentials); void setTokenCredentials(const QString &token, const QString &tokenSecret); QUrl temporaryCredentialsUrl() const; void setTemporaryCredentialsUrl(const QUrl &url); QUrl tokenCredentialsUrl() const; void setTokenCredentialsUrl(const QUrl &url); QOAuth1::SignatureMethod signatureMethod() const; void setSignatureMethod(QOAuth1::SignatureMethod value); virtual QNetworkReply *head(const QUrl &url, const QVariantMap ¶meters = QVariantMap()); virtual QNetworkReply *get(const QUrl &url, const QVariantMap ¶meters = QVariantMap()); virtual QNetworkReply *post(const QUrl &url, const QVariantMap ¶meters = QVariantMap()); virtual QNetworkReply *put(const QUrl &url, const QVariantMap ¶meters = QVariantMap()); virtual QNetworkReply *deleteResource(const QUrl &url, const QVariantMap ¶meters = QVariantMap()); public slots: virtual void grant(); void continueGrantWithVerifier(const QString &verifier); signals: void signatureMethodChanged(QOAuth1::SignatureMethod method); void clientSharedSecretChanged(const QString &credential); void tokenSecretChanged(const QString &token); void temporaryCredentialsUrlChanged(const QUrl &url); void tokenCredentialsUrlChanged(const QUrl &url); protected: QNetworkReply *requestTemporaryCredentials(QNetworkAccessManager::Operation operation, const QUrl &url, const QVariantMap ¶meters = QVariantMap()); QNetworkReply *requestTokenCredentials(QNetworkAccessManager::Operation operation, const QUrl &url, const QPair &temporaryToken, const QVariantMap ¶meters = QVariantMap()); void setup(QNetworkRequest *request, const QVariantMap &signingParameters, QNetworkAccessManager::Operation operation); static QByteArray nonce(); static QByteArray generateAuthorizationHeader(const QVariantMap &oauthParams); }; %End PyQt5_gpl-5.10.1/sip/QtNetworkAuth/qoauth1signature.sip0000644000076500000240000000521113245233151023073 0ustar philstaff00000000000000// qoauth1signature.sip generated by MetaSIP // // This file is part of the QtNetworkAuth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_10_0 -) class QOAuth1Signature { %TypeHeaderCode #include %End public: enum class HttpRequestMethod { Head, Get, Put, Post, Delete, Custom, Unknown, }; QOAuth1Signature(const QUrl &url = QUrl(), QOAuth1Signature::HttpRequestMethod method = QOAuth1Signature::HttpRequestMethod::Post, const QVariantMap ¶meters = QVariantMap()); QOAuth1Signature(const QUrl &url, const QString &clientSharedKey, const QString &tokenSecret, QOAuth1Signature::HttpRequestMethod method = QOAuth1Signature::HttpRequestMethod::Post, const QVariantMap ¶meters = QVariantMap()); QOAuth1Signature(const QOAuth1Signature &other); ~QOAuth1Signature(); QOAuth1Signature::HttpRequestMethod httpRequestMethod() const; void setHttpRequestMethod(QOAuth1Signature::HttpRequestMethod method); QUrl url() const; void setUrl(const QUrl &url); QVariantMap parameters() const; void setParameters(const QVariantMap ¶meters); void addRequestBody(const QUrlQuery &body); void insert(const QString &key, const QVariant &value); QList keys() const; QVariant take(const QString &key); QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const; QString clientSharedKey() const; void setClientSharedKey(const QString &secret); QString tokenSecret() const; void setTokenSecret(const QString &secret); QByteArray hmacSha1() const; QByteArray rsaSha1() const; QByteArray plainText() const; static QByteArray plainText(const QString &clientSharedSecret, const QString &tokenSecret); void swap(QOAuth1Signature &other /Constrained/); }; %End PyQt5_gpl-5.10.1/sip/QtNetworkAuth/qoauth2authorizationcodeflow.sip0000644000076500000240000000452313245233151025523 0ustar philstaff00000000000000// qoauth2authorizationcodeflow.sip generated by MetaSIP // // This file is part of the QtNetworkAuth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_10_0 -) class QOAuth2AuthorizationCodeFlow : QAbstractOAuth2 { %TypeHeaderCode #include %End public: explicit QOAuth2AuthorizationCodeFlow(QObject *parent /TransferThis/ = 0); QOAuth2AuthorizationCodeFlow(QNetworkAccessManager *manager /KeepReference/, QObject *parent /TransferThis/ = 0); QOAuth2AuthorizationCodeFlow(const QString &clientIdentifier, QNetworkAccessManager *manager /KeepReference/, QObject *parent /TransferThis/ = 0); QOAuth2AuthorizationCodeFlow(const QUrl &authorizationUrl, const QUrl &accessTokenUrl, QNetworkAccessManager *manager /KeepReference/, QObject *parent /TransferThis/ = 0); QOAuth2AuthorizationCodeFlow(const QString &clientIdentifier, const QUrl &authorizationUrl, const QUrl &accessTokenUrl, QNetworkAccessManager *manager /KeepReference/, QObject *parent /TransferThis/ = 0); virtual ~QOAuth2AuthorizationCodeFlow(); QUrl accessTokenUrl() const; void setAccessTokenUrl(const QUrl &accessTokenUrl); public slots: virtual void grant(); void refreshAccessToken(); signals: void accessTokenUrlChanged(const QUrl &accessTokenUrl); protected: QUrl buildAuthenticateUrl(const QVariantMap ¶meters = QVariantMap()); void requestAccessToken(const QString &code); virtual void resourceOwnerAuthorization(const QUrl &url, const QVariantMap ¶meters = QVariantMap()); }; %End PyQt5_gpl-5.10.1/sip/QtNetworkAuth/qoauthhttpserverreplyhandler.sip0000644000076500000240000000344613245233151025641 0ustar philstaff00000000000000// qoauthhttpserverreplyhandler.sip generated by MetaSIP // // This file is part of the QtNetworkAuth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_10_0 -) class QOAuthHttpServerReplyHandler : QOAuthOobReplyHandler { %TypeHeaderCode #include %End public: explicit QOAuthHttpServerReplyHandler(QObject *parent /TransferThis/ = 0); QOAuthHttpServerReplyHandler(quint16 port, QObject *parent /TransferThis/ = 0); QOAuthHttpServerReplyHandler(const QHostAddress &address, quint16 port, QObject *parent /TransferThis/ = 0); virtual ~QOAuthHttpServerReplyHandler(); virtual QString callback() const; QString callbackPath() const; void setCallbackPath(const QString &path); QString callbackText() const; void setCallbackText(const QString &text); quint16 port() const; bool listen(const QHostAddress &address = QHostAddress::SpecialAddress::Any, quint16 port = 0); void close(); bool isListening() const; }; %End PyQt5_gpl-5.10.1/sip/QtNetworkAuth/qoauthoobreplyhandler.sip0000644000076500000240000000242613245233151024207 0ustar philstaff00000000000000// qoauthoobreplyhandler.sip generated by MetaSIP // // This file is part of the QtNetworkAuth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_10_0 -) class QOAuthOobReplyHandler : QAbstractOAuthReplyHandler { %TypeHeaderCode #include %End public: explicit QOAuthOobReplyHandler(QObject *parent /TransferThis/ = 0); virtual QString callback() const; protected: virtual void networkReplyFinished(QNetworkReply *reply); }; %End PyQt5_gpl-5.10.1/sip/QtNetworkAuth/QtNetworkAuthmod.sip0000644000076500000240000000426313245233151023055 0ustar philstaff00000000000000// QtNetworkAuthmod.sip generated by MetaSIP // // This file is part of the QtNetworkAuth Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtNetworkAuth, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qabstractoauth.sip %Include qabstractoauth2.sip %Include qabstractoauthreplyhandler.sip %Include qoauth1.sip %Include qoauth1signature.sip %Include qoauth2authorizationcodeflow.sip %Include qoauthhttpserverreplyhandler.sip %Include qoauthoobreplyhandler.sip PyQt5_gpl-5.10.1/sip/QtNfc/0000755000076500000240000000000013245233151015306 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtNfc/qndeffilter.sip0000644000076500000240000000325513245233151020333 0ustar philstaff00000000000000// qndeffilter.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNdefFilter { %TypeHeaderCode #include %End public: QNdefFilter(); QNdefFilter(const QNdefFilter &other); ~QNdefFilter(); void clear(); void setOrderMatch(bool on); bool orderMatch() const; struct Record { %TypeHeaderCode #include %End QNdefRecord::TypeNameFormat typeNameFormat; QByteArray type; unsigned int minimum; unsigned int maximum; }; void appendRecord(QNdefRecord::TypeNameFormat typeNameFormat, const QByteArray &type, unsigned int min = 1, unsigned int max = 1); void appendRecord(const QNdefFilter::Record &record); int recordCount() const /__len__/; QNdefFilter::Record recordAt(int i) const; }; %End PyQt5_gpl-5.10.1/sip/QtNfc/qndefmessage.sip0000644000076500000240000000424213245233151020467 0ustar philstaff00000000000000// qndefmessage.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNdefMessage { %TypeHeaderCode #include %End public: QNdefMessage(); explicit QNdefMessage(const QNdefRecord &record); QNdefMessage(const QNdefMessage &message); QNdefMessage(const QList &records); bool operator==(const QNdefMessage &other) const; QByteArray toByteArray() const; int __len__() const; %MethodCode sipRes = sipCpp->count(); %End QNdefRecord __getitem__(int i) const; %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QNdefRecord(sipCpp->at((int)idx)); %End void __setitem__(int i, const QNdefRecord &value); %MethodCode int len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __delitem__(int i); %MethodCode int len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else sipCpp->removeAt(a0); %End static QNdefMessage fromByteArray(const QByteArray &message); }; %End PyQt5_gpl-5.10.1/sip/QtNfc/qndefnfcsmartposterrecord.sip0000644000076500000240000000642113245233151023315 0ustar philstaff00000000000000// qndefnfcsmartposterrecord.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNdefNfcIconRecord : QNdefRecord { %TypeHeaderCode #include %End public: QNdefNfcIconRecord(); QNdefNfcIconRecord(const QNdefRecord &other); void setData(const QByteArray &data); QByteArray data() const; }; %End %If (Qt_5_5_0 -) class QNdefNfcSmartPosterRecord : QNdefRecord { %TypeHeaderCode #include %End public: enum Action { UnspecifiedAction, DoAction, SaveAction, EditAction, }; QNdefNfcSmartPosterRecord(); QNdefNfcSmartPosterRecord(const QNdefNfcSmartPosterRecord &other); QNdefNfcSmartPosterRecord(const QNdefRecord &other); ~QNdefNfcSmartPosterRecord(); void setPayload(const QByteArray &payload); bool hasTitle(const QString &locale = QString()) const; bool hasAction() const; bool hasIcon(const QByteArray &mimetype = QByteArray()) const; bool hasSize() const; bool hasTypeInfo() const; int titleCount() const; QString title(const QString &locale = QString()) const; QNdefNfcTextRecord titleRecord(const int index) const; QList titleRecords() const; bool addTitle(const QNdefNfcTextRecord &text); bool addTitle(const QString &text, const QString &locale, QNdefNfcTextRecord::Encoding encoding); bool removeTitle(const QNdefNfcTextRecord &text); bool removeTitle(const QString &locale); void setTitles(const QList &titles); QUrl uri() const; QNdefNfcUriRecord uriRecord() const; void setUri(const QNdefNfcUriRecord &url); void setUri(const QUrl &url); QNdefNfcSmartPosterRecord::Action action() const; void setAction(QNdefNfcSmartPosterRecord::Action act); int iconCount() const; QByteArray icon(const QByteArray &mimetype = QByteArray()) const; QNdefNfcIconRecord iconRecord(const int index) const; QList iconRecords() const; void addIcon(const QNdefNfcIconRecord &icon); void addIcon(const QByteArray &type, const QByteArray &data); bool removeIcon(const QNdefNfcIconRecord &icon); bool removeIcon(const QByteArray &type); void setIcons(const QList &icons); quint32 size() const; void setSize(quint32 size); QByteArray typeInfo() const; void setTypeInfo(const QByteArray &type); }; %End PyQt5_gpl-5.10.1/sip/QtNfc/qndefnfctextrecord.sip0000644000076500000240000000267713245233151021727 0ustar philstaff00000000000000// qndefnfctextrecord.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNdefNfcTextRecord : QNdefRecord { %TypeHeaderCode #include %End public: QNdefNfcTextRecord(); QNdefNfcTextRecord(const QNdefRecord &other); QString locale() const; void setLocale(const QString &locale); QString text() const; void setText(const QString text); enum Encoding { Utf8, Utf16, }; QNdefNfcTextRecord::Encoding encoding() const; void setEncoding(QNdefNfcTextRecord::Encoding encoding); }; %End PyQt5_gpl-5.10.1/sip/QtNfc/qndefnfcurirecord.sip0000644000076500000240000000227513245233151021534 0ustar philstaff00000000000000// qndefnfcurirecord.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNdefNfcUriRecord : QNdefRecord { %TypeHeaderCode #include %End public: QNdefNfcUriRecord(); QNdefNfcUriRecord(const QNdefRecord &other); QUrl uri() const; void setUri(const QUrl &uri); }; %End PyQt5_gpl-5.10.1/sip/QtNfc/qndefrecord.sip0000644000076500000240000000472113245233151020323 0ustar philstaff00000000000000// qndefrecord.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNdefRecord { %TypeHeaderCode #include %End %ConvertToSubClassCode QByteArray ndef_type = sipCpp->type(); switch (sipCpp->typeNameFormat()) { case QNdefRecord::NfcRtd: if (ndef_type == "Sp") sipType = sipType_QNdefNfcSmartPosterRecord; else if (ndef_type == "T") sipType = sipType_QNdefNfcTextRecord; else if (ndef_type == "U") sipType = sipType_QNdefNfcUriRecord; else sipType = 0; break; case QNdefRecord::Mime: if (ndef_type == "") sipType = sipType_QNdefNfcIconRecord; else sipType = 0; break; default: sipType = 0; } %End public: enum TypeNameFormat { Empty, NfcRtd, Mime, Uri, ExternalRtd, Unknown, }; QNdefRecord(); QNdefRecord(const QNdefRecord &other); ~QNdefRecord(); void setTypeNameFormat(QNdefRecord::TypeNameFormat typeNameFormat); QNdefRecord::TypeNameFormat typeNameFormat() const; void setType(const QByteArray &type); QByteArray type() const; void setId(const QByteArray &id); QByteArray id() const; void setPayload(const QByteArray &payload); QByteArray payload() const; bool isEmpty() const; bool operator==(const QNdefRecord &other) const; bool operator!=(const QNdefRecord &other) const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End PyQt5_gpl-5.10.1/sip/QtNfc/qnearfieldmanager.sip0000644000076500000240000001143213245233151021471 0ustar philstaff00000000000000// qnearfieldmanager.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNearFieldManager : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QNearFieldManager, &sipType_QNearFieldManager, -1, 1}, {sipName_QNearFieldTarget, &sipType_QNearFieldTarget, -1, 2}, {sipName_QNearFieldShareManager, &sipType_QNearFieldShareManager, -1, 3}, {sipName_QQmlNdefRecord, &sipType_QQmlNdefRecord, -1, 4}, {sipName_QNearFieldShareTarget, &sipType_QNearFieldShareTarget, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum TargetAccessMode { NoTargetAccess, NdefReadTargetAccess, NdefWriteTargetAccess, TagTypeSpecificTargetAccess, }; typedef QFlags TargetAccessModes; explicit QNearFieldManager(QObject *parent /TransferThis/ = 0); virtual ~QNearFieldManager(); bool isAvailable() const; void setTargetAccessModes(QNearFieldManager::TargetAccessModes accessModes); QNearFieldManager::TargetAccessModes targetAccessModes() const; bool startTargetDetection(); void stopTargetDetection(); int registerNdefMessageHandler(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtnfc_get_pyqtslot_parts(a0, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->registerNdefMessageHandler(receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End int registerNdefMessageHandler(QNdefRecord::TypeNameFormat typeNameFormat, const QByteArray &type, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtnfc_get_pyqtslot_parts(a2, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->registerNdefMessageHandler(a0, *a1, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End int registerNdefMessageHandler(const QNdefFilter &filter, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtnfc_get_pyqtslot_parts(a1, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->registerNdefMessageHandler(*a0, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End bool unregisterNdefMessageHandler(int handlerId); signals: void targetDetected(QNearFieldTarget *target); void targetLost(QNearFieldTarget *target); }; %End %If (Qt_5_5_0 -) QFlags operator|(QNearFieldManager::TargetAccessMode f1, QFlags f2); %End %ModuleHeaderCode // Imports from QtCore. typedef sipErrorState (*pyqt5_qtnfc_get_pyqtslot_parts_t)(PyObject *, QObject **, QByteArray &); extern pyqt5_qtnfc_get_pyqtslot_parts_t pyqt5_qtnfc_get_pyqtslot_parts; %End %ModuleCode // Imports from QtCore. pyqt5_qtnfc_get_pyqtslot_parts_t pyqt5_qtnfc_get_pyqtslot_parts; %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtnfc_get_pyqtslot_parts = (pyqt5_qtnfc_get_pyqtslot_parts_t)sipImportSymbol("pyqt5_get_pyqtslot_parts"); Q_ASSERT(pyqt5_qtnfc_get_pyqtslot_parts); %End PyQt5_gpl-5.10.1/sip/QtNfc/qnearfieldsharemanager.sip0000644000076500000240000000445013245233151022516 0ustar philstaff00000000000000// qnearfieldsharemanager.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNearFieldShareManager : QObject { %TypeHeaderCode #include %End public: explicit QNearFieldShareManager(QObject *parent /TransferThis/ = 0); virtual ~QNearFieldShareManager(); enum ShareError { NoError, UnknownError, InvalidShareContentError, ShareCanceledError, ShareInterruptedError, ShareRejectedError, UnsupportedShareModeError, ShareAlreadyInProgressError, SharePermissionDeniedError, }; enum ShareMode { NoShare, NdefShare, FileShare, }; typedef QFlags ShareModes; static QNearFieldShareManager::ShareModes supportedShareModes(); void setShareModes(QNearFieldShareManager::ShareModes modes); QNearFieldShareManager::ShareModes shareModes() const; QNearFieldShareManager::ShareError shareError() const; signals: void targetDetected(QNearFieldShareTarget *shareTarget); void shareModesChanged(QNearFieldShareManager::ShareModes modes); void error(QNearFieldShareManager::ShareError error); private: QNearFieldShareManager(const QNearFieldShareManager &); }; %End %If (Qt_5_5_0 -) QFlags operator|(QNearFieldShareManager::ShareMode f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtNfc/qnearfieldsharetarget.sip0000644000076500000240000000302413245233151022366 0ustar philstaff00000000000000// qnearfieldsharetarget.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNearFieldShareTarget : QObject { %TypeHeaderCode #include %End public: virtual ~QNearFieldShareTarget(); QNearFieldShareManager::ShareModes shareModes() const; bool share(const QNdefMessage &message); bool share(const QList &files); void cancel(); bool isShareInProgress() const; QNearFieldShareManager::ShareError shareError() const; signals: void error(QNearFieldShareManager::ShareError error); void shareFinished(); private: QNearFieldShareTarget(const QNearFieldShareTarget &); }; %End PyQt5_gpl-5.10.1/sip/QtNfc/qnearfieldtarget.sip0000644000076500000240000000762213245233151021353 0ustar philstaff00000000000000// qnearfieldtarget.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QNearFieldTarget : QObject { %TypeHeaderCode #include %End public: enum Type { ProprietaryTag, NfcTagType1, NfcTagType2, NfcTagType3, NfcTagType4, MifareTag, }; enum AccessMethod { UnknownAccess, NdefAccess, TagTypeSpecificAccess, LlcpAccess, }; typedef QFlags AccessMethods; enum Error { NoError, UnknownError, UnsupportedError, TargetOutOfRangeError, NoResponseError, ChecksumMismatchError, InvalidParametersError, NdefReadError, NdefWriteError, %If (Qt_5_9_0 -) CommandError, %End }; class RequestId { %TypeHeaderCode #include %End public: RequestId(); RequestId(const QNearFieldTarget::RequestId &other); ~RequestId(); bool isValid() const; int refCount() const; bool operator<(const QNearFieldTarget::RequestId &other) const; bool operator==(const QNearFieldTarget::RequestId &other) const; bool operator!=(const QNearFieldTarget::RequestId &other) const; }; explicit QNearFieldTarget(QObject *parent /TransferThis/ = 0); virtual ~QNearFieldTarget(); virtual QByteArray uid() const = 0; virtual QUrl url() const; virtual QNearFieldTarget::Type type() const = 0; virtual QNearFieldTarget::AccessMethods accessMethods() const = 0; bool isProcessingCommand() const; virtual bool hasNdefMessage(); virtual QNearFieldTarget::RequestId readNdefMessages(); virtual QNearFieldTarget::RequestId writeNdefMessages(const QList &messages); virtual QNearFieldTarget::RequestId sendCommand(const QByteArray &command); virtual QNearFieldTarget::RequestId sendCommands(const QList &commands); virtual bool waitForRequestCompleted(const QNearFieldTarget::RequestId &id, int msecs = 5000) /ReleaseGIL/; QVariant requestResponse(const QNearFieldTarget::RequestId &id); void setResponseForRequest(const QNearFieldTarget::RequestId &id, const QVariant &response, bool emitRequestCompleted = true); protected: virtual bool handleResponse(const QNearFieldTarget::RequestId &id, const QByteArray &response); signals: void disconnected(); void ndefMessageRead(const QNdefMessage &message); void ndefMessagesWritten(); void requestCompleted(const QNearFieldTarget::RequestId &id); void error(QNearFieldTarget::Error error, const QNearFieldTarget::RequestId &id); public: %If (Qt_5_9_0 -) bool keepConnection() const; %End %If (Qt_5_9_0 -) bool setKeepConnection(bool isPersistent); %End %If (Qt_5_9_0 -) bool disconnect(); %End %If (Qt_5_9_0 -) int maxCommandLength() const; %End }; %End %If (Qt_5_5_0 -) QFlags operator|(QNearFieldTarget::AccessMethod f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtNfc/qqmlndefrecord.sip0000644000076500000240000000335613245233151021040 0ustar philstaff00000000000000// qqmlndefrecord.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QQmlNdefRecord : QObject { %TypeHeaderCode #include %End public: enum TypeNameFormat { Empty, NfcRtd, Mime, Uri, ExternalRtd, Unknown, }; explicit QQmlNdefRecord(QObject *parent /TransferThis/ = 0); QQmlNdefRecord(const QNdefRecord &record, QObject *parent /TransferThis/ = 0); %If (Qt_5_6_0 -) virtual ~QQmlNdefRecord(); %End QString type() const; void setType(const QString &t); void setTypeNameFormat(QQmlNdefRecord::TypeNameFormat typeNameFormat); QQmlNdefRecord::TypeNameFormat typeNameFormat() const; QNdefRecord record() const; void setRecord(const QNdefRecord &record); signals: void typeChanged(); void typeNameFormatChanged(); void recordChanged(); }; %End PyQt5_gpl-5.10.1/sip/QtNfc/QtNfcmod.sip0000644000076500000240000000427713245233151017550 0ustar philstaff00000000000000// QtNfcmod.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtNfc, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qndeffilter.sip %Include qndefmessage.sip %Include qndefnfcsmartposterrecord.sip %Include qndefnfctextrecord.sip %Include qndefnfcurirecord.sip %Include qndefrecord.sip %Include qnearfieldmanager.sip %Include qnearfieldsharemanager.sip %Include qnearfieldsharetarget.sip %Include qnearfieldtarget.sip %Include qqmlndefrecord.sip PyQt5_gpl-5.10.1/sip/QtOpenGL/0000755000076500000240000000000013245233151015724 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtOpenGL/qgl.sip0000644000076500000240000002500313245233151017224 0ustar philstaff00000000000000// qgl.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL) namespace QGL { %TypeHeaderCode #include %End enum FormatOption { DoubleBuffer, DepthBuffer, Rgba, AlphaChannel, AccumBuffer, StencilBuffer, StereoBuffers, DirectRendering, HasOverlay, SampleBuffers, SingleBuffer, NoDepthBuffer, ColorIndex, NoAlphaChannel, NoAccumBuffer, NoStencilBuffer, NoStereoBuffers, IndirectRendering, NoOverlay, NoSampleBuffers, DeprecatedFunctions, NoDeprecatedFunctions, }; typedef QFlags FormatOptions; }; %End %If (PyQt_OpenGL) QFlags operator|(QGL::FormatOption f1, QFlags f2); %End %If (PyQt_OpenGL) class QGLFormat { %TypeHeaderCode #include %End public: enum OpenGLVersionFlag { OpenGL_Version_None, OpenGL_Version_1_1, OpenGL_Version_1_2, OpenGL_Version_1_3, OpenGL_Version_1_4, OpenGL_Version_1_5, OpenGL_Version_2_0, OpenGL_Version_2_1, OpenGL_Version_3_0, OpenGL_Version_3_1, OpenGL_Version_3_2, OpenGL_Version_3_3, OpenGL_Version_4_0, OpenGL_Version_4_1, OpenGL_Version_4_2, OpenGL_Version_4_3, OpenGL_ES_Common_Version_1_0, OpenGL_ES_CommonLite_Version_1_0, OpenGL_ES_Common_Version_1_1, OpenGL_ES_CommonLite_Version_1_1, OpenGL_ES_Version_2_0, }; typedef QFlags OpenGLVersionFlags; QGLFormat(); QGLFormat(QGL::FormatOptions options, int plane = 0); QGLFormat(const QGLFormat &other); ~QGLFormat(); void setDepthBufferSize(int size); int depthBufferSize() const; void setAccumBufferSize(int size); int accumBufferSize() const; void setAlphaBufferSize(int size); int alphaBufferSize() const; void setStencilBufferSize(int size); int stencilBufferSize() const; void setSampleBuffers(bool enable); void setSamples(int numSamples); int samples() const; void setDoubleBuffer(bool enable); void setDepth(bool enable); void setRgba(bool enable); void setAlpha(bool enable); void setAccum(bool enable); void setStencil(bool enable); void setStereo(bool enable); void setDirectRendering(bool enable); void setOverlay(bool enable); int plane() const; void setPlane(int plane); void setOption(QGL::FormatOptions opt); bool testOption(QGL::FormatOptions opt) const; static QGLFormat defaultFormat(); static void setDefaultFormat(const QGLFormat &f); static QGLFormat defaultOverlayFormat(); static void setDefaultOverlayFormat(const QGLFormat &f); static bool hasOpenGL(); static bool hasOpenGLOverlays(); bool doubleBuffer() const; bool depth() const; bool rgba() const; bool alpha() const; bool accum() const; bool stencil() const; bool stereo() const; bool directRendering() const; bool hasOverlay() const; bool sampleBuffers() const; void setRedBufferSize(int size); int redBufferSize() const; void setGreenBufferSize(int size); int greenBufferSize() const; void setBlueBufferSize(int size); int blueBufferSize() const; void setSwapInterval(int interval); int swapInterval() const; static QGLFormat::OpenGLVersionFlags openGLVersionFlags(); void setVersion(int major, int minor); int majorVersion() const; int minorVersion() const; enum OpenGLContextProfile { NoProfile, CoreProfile, CompatibilityProfile, }; void setProfile(QGLFormat::OpenGLContextProfile profile); QGLFormat::OpenGLContextProfile profile() const; }; %End %If (PyQt_OpenGL) bool operator==(const QGLFormat &, const QGLFormat &); %End %If (PyQt_OpenGL) bool operator!=(const QGLFormat &, const QGLFormat &); %End %If (PyQt_OpenGL) class QGLContext /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: QGLContext(const QGLFormat &format); virtual ~QGLContext(); virtual bool create(const QGLContext *shareContext = 0); bool isValid() const; bool isSharing() const; void reset(); QGLFormat format() const; QGLFormat requestedFormat() const; void setFormat(const QGLFormat &format); virtual void makeCurrent(); virtual void doneCurrent(); virtual void swapBuffers() const; GLuint bindTexture(const QImage &image, GLenum target = GL_TEXTURE_2D, GLint format = GL_RGBA); GLuint bindTexture(const QPixmap &pixmap, GLenum target = GL_TEXTURE_2D, GLint format = GL_RGBA); void drawTexture(const QRectF &target, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D); void drawTexture(const QPointF &point, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D); GLuint bindTexture(const QString &fileName); void deleteTexture(GLuint tx_id); static void setTextureCacheLimit(int size); static int textureCacheLimit(); QFunctionPointer getProcAddress(const QString &proc) const; QPaintDevice *device() const; QColor overlayTransparentColor() const; static const QGLContext *currentContext(); protected: virtual bool chooseContext(const QGLContext *shareContext = 0); bool deviceIsPixmap() const; bool windowCreated() const; void setWindowCreated(bool on); bool initialized() const; void setInitialized(bool on); public: static bool areSharing(const QGLContext *context1, const QGLContext *context2); enum BindOption { NoBindOption, InvertedYBindOption, MipmapBindOption, PremultipliedAlphaBindOption, LinearFilteringBindOption, DefaultBindOption, }; typedef QFlags BindOptions; GLuint bindTexture(const QImage &image, GLenum target, GLint format, QGLContext::BindOptions options); GLuint bindTexture(const QPixmap &pixmap, GLenum target, GLint format, QGLContext::BindOptions options); void moveToThread(QThread *thread); private: QGLContext(const QGLContext &); }; %End %If (PyQt_OpenGL) class QGLWidget : QWidget { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QGLWidget, &sipType_QGLWidget, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QGLWidget(QWidget *parent /TransferThis/ = 0, const QGLWidget *shareWidget = 0, Qt::WindowFlags flags = Qt::WindowFlags()); QGLWidget(QGLContext *context /Transfer/, QWidget *parent /TransferThis/ = 0, const QGLWidget *shareWidget = 0, Qt::WindowFlags flags = Qt::WindowFlags()); QGLWidget(const QGLFormat &format, QWidget *parent /TransferThis/ = 0, const QGLWidget *shareWidget = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QGLWidget(); void qglColor(const QColor &c) const; void qglClearColor(const QColor &c) const; bool isValid() const; bool isSharing() const; void makeCurrent(); void doneCurrent(); bool doubleBuffer() const; void swapBuffers(); QGLFormat format() const; QGLContext *context() const; void setContext(QGLContext *context /Transfer/, const QGLContext *shareContext = 0, bool deleteOldContext = true); QPixmap renderPixmap(int width = 0, int height = 0, bool useContext = false); QImage grabFrameBuffer(bool withAlpha = false); void makeOverlayCurrent(); const QGLContext *overlayContext() const; static QImage convertToGLFormat(const QImage &img); void renderText(int x, int y, const QString &str, const QFont &font = QFont()); void renderText(double x, double y, double z, const QString &str, const QFont &font = QFont()); virtual QPaintEngine *paintEngine() const; GLuint bindTexture(const QImage &image, GLenum target = GL_TEXTURE_2D, GLint format = GL_RGBA); GLuint bindTexture(const QPixmap &pixmap, GLenum target = GL_TEXTURE_2D, GLint format = GL_RGBA); GLuint bindTexture(const QString &fileName); void drawTexture(const QRectF &target, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D); void drawTexture(const QPointF &point, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D); void deleteTexture(GLuint tx_id); public slots: virtual void updateGL(); virtual void updateOverlayGL(); protected: virtual bool event(QEvent *); virtual void initializeGL(); virtual void resizeGL(int w, int h); virtual void paintGL(); virtual void initializeOverlayGL(); virtual void resizeOverlayGL(int w, int h); virtual void paintOverlayGL(); void setAutoBufferSwap(bool on); bool autoBufferSwap() const; virtual void paintEvent(QPaintEvent *); virtual void resizeEvent(QResizeEvent *); virtual void glInit(); virtual void glDraw(); public: GLuint bindTexture(const QImage &image, GLenum target, GLint format, QGLContext::BindOptions options); GLuint bindTexture(const QPixmap &pixmap, GLenum target, GLint format, QGLContext::BindOptions options); private: QGLWidget(const QGLWidget &); }; %End %If (PyQt_OpenGL) QFlags operator|(QGLFormat::OpenGLVersionFlag f1, QFlags f2); %End %If (PyQt_OpenGL) QFlags operator|(QGLContext::BindOption f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtOpenGL/QtOpenGLmod.sip0000644000076500000240000000370513245233151020577 0ustar philstaff00000000000000// QtOpenGLmod.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtOpenGL, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qgl.sip PyQt5_gpl-5.10.1/sip/QtPositioning/0000755000076500000240000000000013245233151017102 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtPositioning/qgeoaddress.sip0000644000076500000240000000370113245233151022121 0ustar philstaff00000000000000// qgeoaddress.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoAddress { %TypeHeaderCode #include %End public: QGeoAddress(); QGeoAddress(const QGeoAddress &other); ~QGeoAddress(); bool operator==(const QGeoAddress &other) const; bool operator!=(const QGeoAddress &other) const; QString text() const; void setText(const QString &text); QString country() const; void setCountry(const QString &country); QString countryCode() const; void setCountryCode(const QString &countryCode); QString state() const; void setState(const QString &state); QString county() const; void setCounty(const QString &county); QString city() const; void setCity(const QString &city); QString district() const; void setDistrict(const QString &district); QString postalCode() const; void setPostalCode(const QString &postalCode); QString street() const; void setStreet(const QString &street); bool isEmpty() const; void clear(); bool isTextGenerated() const; }; %End PyQt5_gpl-5.10.1/sip/QtPositioning/qgeoareamonitorinfo.sip0000644000076500000240000000375713245233151023703 0ustar philstaff00000000000000// qgeoareamonitorinfo.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoAreaMonitorInfo { %TypeHeaderCode #include %End public: explicit QGeoAreaMonitorInfo(const QString &name = QString()); QGeoAreaMonitorInfo(const QGeoAreaMonitorInfo &other); ~QGeoAreaMonitorInfo(); bool operator==(const QGeoAreaMonitorInfo &other) const; bool operator!=(const QGeoAreaMonitorInfo &other) const; QString name() const; void setName(const QString &name); QString identifier() const; bool isValid() const; QGeoShape area() const; void setArea(const QGeoShape &newShape); QDateTime expiration() const; void setExpiration(const QDateTime &expiry); bool isPersistent() const; void setPersistent(bool isPersistent); QVariantMap notificationParameters() const; void setNotificationParameters(const QVariantMap ¶meters); }; %End %If (Qt_5_2_0 -) QDataStream &operator<<(QDataStream &, const QGeoAreaMonitorInfo & /Constrained/); %End %If (Qt_5_2_0 -) QDataStream &operator>>(QDataStream &, QGeoAreaMonitorInfo & /Constrained/); %End PyQt5_gpl-5.10.1/sip/QtPositioning/qgeoareamonitorsource.sip0000644000076500000240000000552213245233151024240 0ustar philstaff00000000000000// qgeoareamonitorsource.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoAreaMonitorSource : QObject { %TypeHeaderCode #include %End public: enum Error { AccessError, InsufficientPositionInfo, UnknownSourceError, NoError, }; enum AreaMonitorFeature { PersistentAreaMonitorFeature, AnyAreaMonitorFeature, }; typedef QFlags AreaMonitorFeatures; explicit QGeoAreaMonitorSource(QObject *parent /TransferThis/); virtual ~QGeoAreaMonitorSource(); static QGeoAreaMonitorSource *createDefaultSource(QObject *parent /TransferThis/) /Factory/; static QGeoAreaMonitorSource *createSource(const QString &sourceName, QObject *parent /TransferThis/) /Factory/; static QStringList availableSources(); virtual void setPositionInfoSource(QGeoPositionInfoSource *source /Transfer/); virtual QGeoPositionInfoSource *positionInfoSource() const; QString sourceName() const; virtual QGeoAreaMonitorSource::Error error() const = 0; virtual QFlags supportedAreaMonitorFeatures() const = 0; virtual bool startMonitoring(const QGeoAreaMonitorInfo &monitor) = 0; virtual bool stopMonitoring(const QGeoAreaMonitorInfo &monitor) = 0; virtual bool requestUpdate(const QGeoAreaMonitorInfo &monitor, const char *signal) = 0; virtual QList activeMonitors() const = 0; virtual QList activeMonitors(const QGeoShape &lookupArea) const = 0; signals: void areaEntered(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update); void areaExited(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update); void monitorExpired(const QGeoAreaMonitorInfo &monitor); void error(QGeoAreaMonitorSource::Error error); private: QGeoAreaMonitorSource(const QGeoAreaMonitorSource &); }; %End PyQt5_gpl-5.10.1/sip/QtPositioning/qgeocircle.sip0000644000076500000240000000336713245233151021745 0ustar philstaff00000000000000// qgeocircle.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoCircle : QGeoShape { %TypeHeaderCode #include %End public: QGeoCircle(); QGeoCircle(const QGeoCoordinate ¢er, qreal radius = -1.); QGeoCircle(const QGeoCircle &other); QGeoCircle(const QGeoShape &other); ~QGeoCircle(); bool operator==(const QGeoCircle &other) const; bool operator!=(const QGeoCircle &other) const; void setCenter(const QGeoCoordinate ¢er); QGeoCoordinate center() const; void setRadius(qreal radius); qreal radius() const; void translate(double degreesLatitude, double degreesLongitude); QGeoCircle translated(double degreesLatitude, double degreesLongitude) const; %If (Qt_5_5_0 -) QString toString() const; %End %If (Qt_5_9_0 -) void extendCircle(const QGeoCoordinate &coordinate); %End }; %End PyQt5_gpl-5.10.1/sip/QtPositioning/qgeocoordinate.sip0000644000076500000240000000517213245233151022627 0ustar philstaff00000000000000// qgeocoordinate.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoCoordinate { %TypeHeaderCode #include %End public: enum CoordinateType { InvalidCoordinate, Coordinate2D, Coordinate3D, }; enum CoordinateFormat { Degrees, DegreesWithHemisphere, DegreesMinutes, DegreesMinutesWithHemisphere, DegreesMinutesSeconds, DegreesMinutesSecondsWithHemisphere, }; QGeoCoordinate(); QGeoCoordinate(double latitude, double longitude); QGeoCoordinate(double latitude, double longitude, double altitude); QGeoCoordinate(const QGeoCoordinate &other); ~QGeoCoordinate(); bool operator==(const QGeoCoordinate &other) const; bool operator!=(const QGeoCoordinate &other) const; bool isValid() const; QGeoCoordinate::CoordinateType type() const; void setLatitude(double latitude); double latitude() const; void setLongitude(double longitude); double longitude() const; void setAltitude(double altitude); double altitude() const; qreal distanceTo(const QGeoCoordinate &other) const; qreal azimuthTo(const QGeoCoordinate &other) const; QGeoCoordinate atDistanceAndAzimuth(qreal distance, qreal azimuth, qreal distanceUp = 0.0) const; QString toString(QGeoCoordinate::CoordinateFormat format = QGeoCoordinate::DegreesMinutesSecondsWithHemisphere) const; %If (Qt_5_7_0 -) long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End }; %End %If (Qt_5_2_0 -) QDataStream &operator<<(QDataStream &stream, const QGeoCoordinate &coordinate /Constrained/); %End %If (Qt_5_2_0 -) QDataStream &operator>>(QDataStream &stream, QGeoCoordinate &coordinate /Constrained/); %End PyQt5_gpl-5.10.1/sip/QtPositioning/qgeolocation.sip0000644000076500000240000000301513245233151022302 0ustar philstaff00000000000000// qgeolocation.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoLocation { %TypeHeaderCode #include %End public: QGeoLocation(); QGeoLocation(const QGeoLocation &other); ~QGeoLocation(); bool operator==(const QGeoLocation &other) const; bool operator!=(const QGeoLocation &other) const; QGeoAddress address() const; void setAddress(const QGeoAddress &address); QGeoCoordinate coordinate() const; void setCoordinate(const QGeoCoordinate &position); QGeoRectangle boundingBox() const; void setBoundingBox(const QGeoRectangle &box); bool isEmpty() const; }; %End PyQt5_gpl-5.10.1/sip/QtPositioning/qgeopath.sip0000644000076500000240000000424713245233151021436 0ustar philstaff00000000000000// qgeopath.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_9_0 -) class QGeoPath : QGeoShape { %TypeHeaderCode #include %End public: QGeoPath(); QGeoPath(const QList &path, const qreal &width = 0.); QGeoPath(const QGeoPath &other); QGeoPath(const QGeoShape &other); ~QGeoPath(); bool operator==(const QGeoPath &other) const; bool operator!=(const QGeoPath &other) const; void setPath(const QList &path); const QList &path() const; void setWidth(const qreal &width); qreal width() const; void translate(double degreesLatitude, double degreesLongitude); QGeoPath translated(double degreesLatitude, double degreesLongitude) const; double length(int indexFrom = 0, int indexTo = -1) const; void addCoordinate(const QGeoCoordinate &coordinate); void insertCoordinate(int index, const QGeoCoordinate &coordinate); void replaceCoordinate(int index, const QGeoCoordinate &coordinate); QGeoCoordinate coordinateAt(int index) const; bool containsCoordinate(const QGeoCoordinate &coordinate) const; void removeCoordinate(const QGeoCoordinate &coordinate); void removeCoordinate(int index); QString toString() const; %If (Qt_5_10_0 -) int size() const; %End }; %End PyQt5_gpl-5.10.1/sip/QtPositioning/qgeopolygon.sip0000644000076500000240000000413413245233151022164 0ustar philstaff00000000000000// qgeopolygon.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_10_0 -) class QGeoPolygon : QGeoShape { %TypeHeaderCode #include %End public: QGeoPolygon(); QGeoPolygon(const QList &path); QGeoPolygon(const QGeoPolygon &other); QGeoPolygon(const QGeoShape &other); ~QGeoPolygon(); bool operator==(const QGeoPolygon &other) const; bool operator!=(const QGeoPolygon &other) const; void setPath(const QList &path); const QList &path() const; void translate(double degreesLatitude, double degreesLongitude); QGeoPolygon translated(double degreesLatitude, double degreesLongitude) const; double length(int indexFrom = 0, int indexTo = -1) const; int size() const; void addCoordinate(const QGeoCoordinate &coordinate); void insertCoordinate(int index, const QGeoCoordinate &coordinate); void replaceCoordinate(int index, const QGeoCoordinate &coordinate); QGeoCoordinate coordinateAt(int index) const; bool containsCoordinate(const QGeoCoordinate &coordinate) const; void removeCoordinate(const QGeoCoordinate &coordinate); void removeCoordinate(int index); QString toString() const; }; %End PyQt5_gpl-5.10.1/sip/QtPositioning/qgeopositioninfo.sip0000644000076500000240000000431513245233151023216 0ustar philstaff00000000000000// qgeopositioninfo.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoPositionInfo { %TypeHeaderCode #include %End public: enum Attribute { Direction, GroundSpeed, VerticalSpeed, MagneticVariation, HorizontalAccuracy, VerticalAccuracy, }; QGeoPositionInfo(); QGeoPositionInfo(const QGeoCoordinate &coordinate, const QDateTime &updateTime); QGeoPositionInfo(const QGeoPositionInfo &other); ~QGeoPositionInfo(); bool operator==(const QGeoPositionInfo &other) const; bool operator!=(const QGeoPositionInfo &other) const; bool isValid() const; void setTimestamp(const QDateTime ×tamp); QDateTime timestamp() const; void setCoordinate(const QGeoCoordinate &coordinate); QGeoCoordinate coordinate() const; void setAttribute(QGeoPositionInfo::Attribute attribute, qreal value); qreal attribute(QGeoPositionInfo::Attribute attribute) const; void removeAttribute(QGeoPositionInfo::Attribute attribute); bool hasAttribute(QGeoPositionInfo::Attribute attribute) const; }; %End %If (Qt_5_2_0 -) QDataStream &operator<<(QDataStream &stream, const QGeoPositionInfo &info /Constrained/); %End %If (Qt_5_2_0 -) QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo &info /Constrained/); %End PyQt5_gpl-5.10.1/sip/QtPositioning/qgeopositioninfosource.sip0000644000076500000240000000735113245233151024442 0ustar philstaff00000000000000// qgeopositioninfosource.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoPositionInfoSource : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QGeoPositionInfoSource, &sipType_QGeoPositionInfoSource, 3, 1}, {sipName_QGeoSatelliteInfoSource, &sipType_QGeoSatelliteInfoSource, -1, 2}, {sipName_QGeoAreaMonitorSource, &sipType_QGeoAreaMonitorSource, -1, -1}, {sipName_QNmeaPositionInfoSource, &sipType_QNmeaPositionInfoSource, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Error { AccessError, ClosedError, UnknownSourceError, NoError, }; enum PositioningMethod { NoPositioningMethods, SatellitePositioningMethods, NonSatellitePositioningMethods, AllPositioningMethods, }; typedef QFlags PositioningMethods; explicit QGeoPositionInfoSource(QObject *parent /TransferThis/); virtual ~QGeoPositionInfoSource(); virtual void setUpdateInterval(int msec); int updateInterval() const; virtual void setPreferredPositioningMethods(QFlags methods); QFlags preferredPositioningMethods() const; virtual QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const = 0; virtual QFlags supportedPositioningMethods() const = 0; virtual int minimumUpdateInterval() const = 0; QString sourceName() const; static QGeoPositionInfoSource *createDefaultSource(QObject *parent /TransferThis/) /Factory/; static QGeoPositionInfoSource *createSource(const QString &sourceName, QObject *parent /TransferThis/) /Factory/; static QStringList availableSources(); virtual QGeoPositionInfoSource::Error error() const = 0; public slots: virtual void startUpdates() = 0; virtual void stopUpdates() = 0; virtual void requestUpdate(int timeout = 0) = 0; signals: void positionUpdated(const QGeoPositionInfo &update); void updateTimeout(); void error(QGeoPositionInfoSource::Error); private: QGeoPositionInfoSource(const QGeoPositionInfoSource &); }; %End %If (Qt_5_2_0 -) QFlags operator|(QGeoPositionInfoSource::PositioningMethod f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtPositioning/qgeorectangle.sip0000644000076500000240000000532613245233151022445 0ustar philstaff00000000000000// qgeorectangle.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoRectangle : QGeoShape { %TypeHeaderCode #include %End public: QGeoRectangle(); QGeoRectangle(const QGeoCoordinate ¢er, double degreesWidth, double degreesHeight); QGeoRectangle(const QGeoCoordinate &topLeft, const QGeoCoordinate &bottomRight); %If (Qt_5_3_0 -) QGeoRectangle(const QList &coordinates); %End QGeoRectangle(const QGeoRectangle &other); QGeoRectangle(const QGeoShape &other); ~QGeoRectangle(); bool operator==(const QGeoRectangle &other) const; bool operator!=(const QGeoRectangle &other) const; void setTopLeft(const QGeoCoordinate &topLeft); QGeoCoordinate topLeft() const; void setTopRight(const QGeoCoordinate &topRight); QGeoCoordinate topRight() const; void setBottomLeft(const QGeoCoordinate &bottomLeft); QGeoCoordinate bottomLeft() const; void setBottomRight(const QGeoCoordinate &bottomRight); QGeoCoordinate bottomRight() const; void setCenter(const QGeoCoordinate ¢er); QGeoCoordinate center() const; void setWidth(double degreesWidth); double width() const; void setHeight(double degreesHeight); double height() const; bool contains(const QGeoRectangle &rectangle) const; bool intersects(const QGeoRectangle &rectangle) const; void translate(double degreesLatitude, double degreesLongitude); QGeoRectangle translated(double degreesLatitude, double degreesLongitude) const; QGeoRectangle united(const QGeoRectangle &rectangle) const; QGeoRectangle &operator|=(const QGeoRectangle &rectangle); QGeoRectangle operator|(const QGeoRectangle &rectangle) const; %If (Qt_5_5_0 -) QString toString() const; %End %If (Qt_5_9_0 -) void extendRectangle(const QGeoCoordinate &coordinate); %End }; %End PyQt5_gpl-5.10.1/sip/QtPositioning/qgeosatelliteinfo.sip0000644000076500000240000000431513245233151023340 0ustar philstaff00000000000000// qgeosatelliteinfo.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoSatelliteInfo { %TypeHeaderCode #include %End public: enum Attribute { Elevation, Azimuth, }; enum SatelliteSystem { Undefined, GPS, GLONASS, }; QGeoSatelliteInfo(); QGeoSatelliteInfo(const QGeoSatelliteInfo &other); ~QGeoSatelliteInfo(); bool operator==(const QGeoSatelliteInfo &other) const; bool operator!=(const QGeoSatelliteInfo &other) const; void setSatelliteSystem(QGeoSatelliteInfo::SatelliteSystem system); QGeoSatelliteInfo::SatelliteSystem satelliteSystem() const; void setSatelliteIdentifier(int satId); int satelliteIdentifier() const; void setSignalStrength(int signalStrength); int signalStrength() const; void setAttribute(QGeoSatelliteInfo::Attribute attribute, qreal value); qreal attribute(QGeoSatelliteInfo::Attribute attribute) const; void removeAttribute(QGeoSatelliteInfo::Attribute attribute); bool hasAttribute(QGeoSatelliteInfo::Attribute attribute) const; }; %End %If (Qt_5_2_0 -) QDataStream &operator<<(QDataStream &stream, const QGeoSatelliteInfo &info /Constrained/); %End %If (Qt_5_2_0 -) QDataStream &operator>>(QDataStream &stream, QGeoSatelliteInfo &info /Constrained/); %End PyQt5_gpl-5.10.1/sip/QtPositioning/qgeosatelliteinfosource.sip0000644000076500000240000000433413245233151024562 0ustar philstaff00000000000000// qgeosatelliteinfosource.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoSatelliteInfoSource : QObject { %TypeHeaderCode #include %End public: enum Error { AccessError, ClosedError, NoError, UnknownSourceError, }; explicit QGeoSatelliteInfoSource(QObject *parent /TransferThis/); virtual ~QGeoSatelliteInfoSource(); static QGeoSatelliteInfoSource *createDefaultSource(QObject *parent /TransferThis/) /Factory/; static QGeoSatelliteInfoSource *createSource(const QString &sourceName, QObject *parent /TransferThis/) /Factory/; static QStringList availableSources(); QString sourceName() const; virtual void setUpdateInterval(int msec); int updateInterval() const; virtual int minimumUpdateInterval() const = 0; virtual QGeoSatelliteInfoSource::Error error() const = 0; public slots: virtual void startUpdates() = 0; virtual void stopUpdates() = 0; virtual void requestUpdate(int timeout = 0) = 0; signals: void satellitesInViewUpdated(const QList &satellites); void satellitesInUseUpdated(const QList &satellites); void requestTimeout(); void error(QGeoSatelliteInfoSource::Error); private: QGeoSatelliteInfoSource(const QGeoSatelliteInfoSource &); }; %End PyQt5_gpl-5.10.1/sip/QtPositioning/qgeoshape.sip0000644000076500000240000000502413245233151021574 0ustar philstaff00000000000000// qgeoshape.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QGeoShape { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type()) { case QGeoShape::CircleType: sipType = sipType_QGeoCircle; break; case QGeoShape::RectangleType: sipType = sipType_QGeoRectangle; break; #if QT_VERSION >= 0x050900 case QGeoShape::PathType: sipType = sipType_QGeoPath; break; #endif #if QT_VERSION >= 0x050a00 case QGeoShape::PolygonType: sipType = sipType_QGeoPolygon; break; #endif default: sipType = 0; } %End public: QGeoShape(); QGeoShape(const QGeoShape &other); ~QGeoShape(); enum ShapeType { UnknownType, RectangleType, CircleType, %If (Qt_5_9_0 -) PathType, %End %If (Qt_5_10_0 -) PolygonType, %End }; QGeoShape::ShapeType type() const; bool isValid() const; bool isEmpty() const; bool contains(const QGeoCoordinate &coordinate) const; bool operator==(const QGeoShape &other) const; bool operator!=(const QGeoShape &other) const; %If (Qt_5_3_0 -) void extendShape(const QGeoCoordinate &coordinate); %End %If (Qt_5_5_0 -) QGeoCoordinate center() const; %End %If (Qt_5_5_0 -) QString toString() const; %End %If (Qt_5_9_0 -) QGeoRectangle boundingGeoRectangle() const; %End }; %End %If (Qt_5_2_0 -) QDataStream &operator<<(QDataStream &stream, const QGeoShape &shape /Constrained/); %End %If (Qt_5_2_0 -) QDataStream &operator>>(QDataStream &stream, QGeoShape &shape /Constrained/); %End PyQt5_gpl-5.10.1/sip/QtPositioning/qnmeapositioninfosource.sip0000644000076500000240000000442113245233151024603 0ustar philstaff00000000000000// qnmeapositioninfosource.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QNmeaPositionInfoSource : QGeoPositionInfoSource { %TypeHeaderCode #include %End public: enum UpdateMode { RealTimeMode, SimulationMode, }; QNmeaPositionInfoSource(QNmeaPositionInfoSource::UpdateMode updateMode, QObject *parent /TransferThis/ = 0); virtual ~QNmeaPositionInfoSource(); QNmeaPositionInfoSource::UpdateMode updateMode() const; void setDevice(QIODevice *source); QIODevice *device() const; virtual void setUpdateInterval(int msec); virtual QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const; virtual QGeoPositionInfoSource::PositioningMethods supportedPositioningMethods() const; virtual int minimumUpdateInterval() const; virtual QGeoPositionInfoSource::Error error() const; public slots: virtual void startUpdates(); virtual void stopUpdates(); virtual void requestUpdate(int timeout = 0); protected: virtual bool parsePosInfoFromNmeaData(const char *data /Encoding="None"/, int size, QGeoPositionInfo *posInfo, bool *hasFix); public: %If (Qt_5_3_0 -) void setUserEquivalentRangeError(double uere); %End %If (Qt_5_3_0 -) double userEquivalentRangeError() const; %End private: QNmeaPositionInfoSource(const QNmeaPositionInfoSource &); }; %End PyQt5_gpl-5.10.1/sip/QtPositioning/QtPositioningmod.sip0000644000076500000240000000442713245233151023135 0ustar philstaff00000000000000// QtPositioningmod.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtPositioning, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %Include qgeoaddress.sip %Include qgeoareamonitorinfo.sip %Include qgeoareamonitorsource.sip %Include qgeocircle.sip %Include qgeocoordinate.sip %Include qgeolocation.sip %Include qgeopath.sip %Include qgeopolygon.sip %Include qgeopositioninfo.sip %Include qgeopositioninfosource.sip %Include qgeorectangle.sip %Include qgeosatelliteinfo.sip %Include qgeosatelliteinfosource.sip %Include qgeoshape.sip %Include qnmeapositioninfosource.sip PyQt5_gpl-5.10.1/sip/QtPrintSupport/0000755000076500000240000000000013245233151017271 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtPrintSupport/qabstractprintdialog.sip0000644000076500000240000001156013245233151024232 0ustar philstaff00000000000000// qabstractprintdialog.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_Printer) class QAbstractPrintDialog : QDialog { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { #if defined(SIP_FEATURE_PyQt_PrintDialog) {sipName_QPageSetupDialog, &sipType_QPageSetupDialog, -1, 1}, #else {0, 0, -1, 1}, #endif #if defined(SIP_FEATURE_PyQt_PrintPreviewWidget) {sipName_QPrintPreviewWidget, &sipType_QPrintPreviewWidget, -1, 2}, #else {0, 0, -1, 2}, #endif #if defined(SIP_FEATURE_PyQt_PrintPreviewDialog) {sipName_QPrintPreviewDialog, &sipType_QPrintPreviewDialog, -1, 3}, #else {0, 0, -1, 3}, #endif #if defined(SIP_FEATURE_PyQt_Printer) {sipName_QAbstractPrintDialog, &sipType_QAbstractPrintDialog, 4, -1}, #else {0, 0, 4, -1}, #endif #if defined(SIP_FEATURE_PyQt_PrintDialog) {sipName_QPrintDialog, &sipType_QPrintDialog, -1, -1}, #else {0, 0, -1, -1}, #endif }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum PrintRange { AllPages, Selection, PageRange, CurrentPage, }; %If (Py_v3) enum PrintDialogOption { None /PyName=None_/, PrintToFile, PrintSelection, PrintPageRange, PrintCollateCopies, PrintShowPageSize, PrintCurrentPage, }; %End %If (!Py_v3) // Backward compatible PrintDialogOption for Python v2. // Note that we have to duplicate the whole enum because MetaSIP doesn't // support handwritten code in enum definitions. enum PrintDialogOption { None, None /PyName=None_/, PrintToFile, PrintSelection, PrintPageRange, PrintCollateCopies, PrintShowPageSize, PrintCurrentPage }; %End typedef QFlags PrintDialogOptions; %If (PyQt_PrintDialog) QAbstractPrintDialog(QPrinter *printer, QWidget *parent /TransferThis/ = 0); virtual ~QAbstractPrintDialog(); virtual int exec() = 0 /PyName=exec_,ReleaseGIL/; %If (Py_v3) virtual int exec() = 0 /ReleaseGIL/; %End void setPrintRange(QAbstractPrintDialog::PrintRange range); QAbstractPrintDialog::PrintRange printRange() const; void setMinMax(int min, int max); int minPage() const; int maxPage() const; void setFromTo(int fromPage, int toPage); int fromPage() const; int toPage() const; QPrinter *printer() const; void setOptionTabs(const QList &tabs); %If (Qt_5_6_0 -) void setEnabledOptions(QAbstractPrintDialog::PrintDialogOptions options); %End %If (Qt_5_6_0 -) QAbstractPrintDialog::PrintDialogOptions enabledOptions() const; %End private: QAbstractPrintDialog(const QAbstractPrintDialog &); public: %End // PyQt_PrintDialog }; %End %If (PyQt_Printer) QFlags operator|(QAbstractPrintDialog::PrintDialogOption f1, QFlags f2); %End %ModuleHeaderCode // Imports from QtCore. typedef sipErrorState (*pyqt5_qtprintsupport_get_connection_parts_t)(PyObject *, QObject *, const char *, bool, QObject **, QByteArray &); extern pyqt5_qtprintsupport_get_connection_parts_t pyqt5_qtprintsupport_get_connection_parts; %End %ModuleCode // Imports from QtCore. pyqt5_qtprintsupport_get_connection_parts_t pyqt5_qtprintsupport_get_connection_parts; %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtprintsupport_get_connection_parts = (pyqt5_qtprintsupport_get_connection_parts_t)sipImportSymbol("pyqt5_get_connection_parts"); Q_ASSERT(pyqt5_qtprintsupport_get_connection_parts); %End PyQt5_gpl-5.10.1/sip/QtPrintSupport/qpagesetupdialog.sip0000644000076500000240000000631113245233151023345 0ustar philstaff00000000000000// qpagesetupdialog.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_PrintDialog) class QPageSetupDialog : QDialog { %TypeHeaderCode #include %End public: QPageSetupDialog(QPrinter *printer, QWidget *parent /TransferThis/ = 0); explicit QPageSetupDialog(QWidget *parent /TransferThis/ = 0); virtual ~QPageSetupDialog(); virtual void setVisible(bool visible); virtual int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %MethodCode // Transfer ownership back to Python (a modal dialog will probably have the // main window as it's parent). This means the Qt dialog will be deleted when // the Python wrapper is garbage collected. Although this is a little // inconsistent, it saves having to code it explicitly to avoid the memory // leak. sipTransferBack(sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipSelfWasArg ? sipCpp->QPageSetupDialog::exec() : sipCpp->exec(); Py_END_ALLOW_THREADS %End virtual int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %MethodCode // Transfer ownership back to Python (a modal dialog will probably have the // main window as it's parent). This means the Qt dialog will be deleted when // the Python wrapper is garbage collected. Although this is a little // inconsistent, it saves having to code it explicitly to avoid the memory // leak. sipTransferBack(sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipSelfWasArg ? sipCpp->QPageSetupDialog::exec() : sipCpp->exec(); Py_END_ALLOW_THREADS %End virtual void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtprintsupport_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual void done(int result); QPrinter *printer(); }; %End PyQt5_gpl-5.10.1/sip/QtPrintSupport/qprintdialog.sip0000644000076500000240000000710313245233151022504 0ustar philstaff00000000000000// qprintdialog.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_PrintDialog) class QPrintDialog : QAbstractPrintDialog { %TypeHeaderCode #include %End public: QPrintDialog(QPrinter *printer, QWidget *parent /TransferThis/ = 0); explicit QPrintDialog(QWidget *parent /TransferThis/ = 0); virtual ~QPrintDialog(); virtual int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %MethodCode // Transfer ownership back to Python (a modal dialog will probably have the // main window as it's parent). This means the Qt dialog will be deleted when // the Python wrapper is garbage collected. Although this is a little // inconsistent, it saves having to code it explicitly to avoid the memory // leak. sipTransferBack(sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipSelfWasArg ? sipCpp->QPrintDialog::exec() : sipCpp->exec(); Py_END_ALLOW_THREADS %End %If (Py_v3) virtual int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %MethodCode // Transfer ownership back to Python (a modal dialog will probably have the // main window as it's parent). This means the Qt dialog will be deleted when // the Python wrapper is garbage collected. Although this is a little // inconsistent, it saves having to code it explicitly to avoid the memory // leak. sipTransferBack(sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipSelfWasArg ? sipCpp->QPrintDialog::exec() : sipCpp->exec(); Py_END_ALLOW_THREADS %End %End %If (WS_X11) virtual void accept(); %End virtual void done(int result); void setOption(QAbstractPrintDialog::PrintDialogOption option, bool on = true); bool testOption(QAbstractPrintDialog::PrintDialogOption option) const; void setOptions(QAbstractPrintDialog::PrintDialogOptions options); QAbstractPrintDialog::PrintDialogOptions options() const; virtual void setVisible(bool visible); virtual void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtprintsupport_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End signals: void accepted(); void accepted(QPrinter *printer); }; %End PyQt5_gpl-5.10.1/sip/QtPrintSupport/qprintengine.sip0000644000076500000240000000455713245233151022524 0ustar philstaff00000000000000// qprintengine.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_Printer) class QPrintEngine { %TypeHeaderCode #include %End public: virtual ~QPrintEngine(); enum PrintEnginePropertyKey { PPK_CollateCopies, PPK_ColorMode, PPK_Creator, PPK_DocumentName, PPK_FullPage, PPK_NumberOfCopies, PPK_Orientation, PPK_OutputFileName, PPK_PageOrder, PPK_PageRect, PPK_PageSize, PPK_PaperRect, PPK_PaperSource, PPK_PrinterName, PPK_PrinterProgram, PPK_Resolution, PPK_SelectionOption, PPK_SupportedResolutions, PPK_WindowsPageSize, PPK_FontEmbedding, PPK_Duplex, PPK_PaperSources, PPK_CustomPaperSize, PPK_PageMargins, PPK_PaperSize, PPK_CopyCount, PPK_SupportsMultipleCopies, %If (Qt_5_1_0 -) PPK_PaperName, %End %If (Qt_5_3_0 -) PPK_QPageSize, %End %If (Qt_5_3_0 -) PPK_QPageMargins, %End %If (Qt_5_3_0 -) PPK_QPageLayout, %End PPK_CustomBase, }; virtual void setProperty(QPrintEngine::PrintEnginePropertyKey key, const QVariant &value) = 0; virtual QVariant property(QPrintEngine::PrintEnginePropertyKey key) const = 0; virtual bool newPage() = 0; virtual bool abort() = 0; virtual int metric(QPaintDevice::PaintDeviceMetric) const = 0; virtual QPrinter::PrinterState printerState() const = 0; }; %End PyQt5_gpl-5.10.1/sip/QtPrintSupport/qprinter.sip0000644000076500000240000001321713245233151021656 0ustar philstaff00000000000000// qprinter.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_Printer) class QPrinter : QPagedPaintDevice { %TypeHeaderCode #include %End public: enum PrinterMode { ScreenResolution, PrinterResolution, HighResolution, }; explicit QPrinter(QPrinter::PrinterMode mode = QPrinter::ScreenResolution); QPrinter(const QPrinterInfo &printer, QPrinter::PrinterMode mode = QPrinter::ScreenResolution); virtual ~QPrinter(); enum Orientation { Portrait, Landscape, }; typedef QPagedPaintDevice::PageSize PaperSize; enum PageOrder { FirstPageFirst, LastPageFirst, }; enum ColorMode { GrayScale, Color, }; enum PaperSource { OnlyOne, Lower, Middle, Manual, Envelope, EnvelopeManual, Auto, Tractor, SmallFormat, LargeFormat, LargeCapacity, Cassette, FormSource, MaxPageSource, %If (Qt_5_3_0 -) Upper, %End %If (Qt_5_3_0 -) CustomSource, %End %If (Qt_5_3_0 -) LastPaperSource, %End }; enum PrinterState { Idle, Active, Aborted, Error, }; enum OutputFormat { NativeFormat, PdfFormat, }; enum PrintRange { AllPages, Selection, PageRange, CurrentPage, }; enum Unit { Millimeter, Point, Inch, Pica, Didot, Cicero, DevicePixel, }; enum DuplexMode { DuplexNone, DuplexAuto, DuplexLongSide, DuplexShortSide, }; void setOutputFormat(QPrinter::OutputFormat format); QPrinter::OutputFormat outputFormat() const; void setPrinterName(const QString &); QString printerName() const; bool isValid() const; void setOutputFileName(const QString &); QString outputFileName() const; void setPrintProgram(const QString &); QString printProgram() const; void setDocName(const QString &); QString docName() const; void setCreator(const QString &); QString creator() const; void setOrientation(QPrinter::Orientation); QPrinter::Orientation orientation() const; virtual void setPageSizeMM(const QSizeF &size); void setPaperSize(QPrinter::PaperSize); QPrinter::PaperSize paperSize() const; void setPaperSize(const QSizeF &paperSize, QPrinter::Unit unit); QSizeF paperSize(QPrinter::Unit unit) const; void setPageOrder(QPrinter::PageOrder); QPrinter::PageOrder pageOrder() const; void setResolution(int); int resolution() const; void setColorMode(QPrinter::ColorMode); QPrinter::ColorMode colorMode() const; void setCollateCopies(bool collate); bool collateCopies() const; void setFullPage(bool); bool fullPage() const; void setCopyCount(int); int copyCount() const; bool supportsMultipleCopies() const; void setPaperSource(QPrinter::PaperSource); QPrinter::PaperSource paperSource() const; void setDuplex(QPrinter::DuplexMode duplex); QPrinter::DuplexMode duplex() const; QList supportedResolutions() const; void setFontEmbeddingEnabled(bool enable); bool fontEmbeddingEnabled() const; void setDoubleSidedPrinting(bool enable); bool doubleSidedPrinting() const; QRect paperRect() const; QRect pageRect() const; QRectF paperRect(QPrinter::Unit) const; QRectF pageRect(QPrinter::Unit) const; %If (WS_X11 || WS_MACX) QString printerSelectionOption() const; %End %If (WS_X11 || WS_MACX) void setPrinterSelectionOption(const QString &); %End virtual bool newPage(); bool abort(); QPrinter::PrinterState printerState() const; virtual QPaintEngine *paintEngine() const; QPrintEngine *printEngine() const; void setFromTo(int fromPage, int toPage); int fromPage() const; int toPage() const; void setPrintRange(QPrinter::PrintRange range); QPrinter::PrintRange printRange() const; virtual void setMargins(const QPagedPaintDevice::Margins &m); void setPageMargins(qreal left, qreal top, qreal right, qreal bottom, QPrinter::Unit unit); void getPageMargins(qreal *left, qreal *top, qreal *right, qreal *bottom, QPrinter::Unit unit) const; protected: virtual int metric(QPaintDevice::PaintDeviceMetric) const; void setEngines(QPrintEngine *printEngine, QPaintEngine *paintEngine); public: %If (Qt_5_1_0 -) void setPaperName(const QString &paperName); %End %If (Qt_5_1_0 -) QString paperName() const; %End %If (Qt_5_10_0 -) void setPdfVersion(QPagedPaintDevice::PdfVersion version); %End %If (Qt_5_10_0 -) QPagedPaintDevice::PdfVersion pdfVersion() const; %End private: QPrinter(const QPrinter &); }; %End PyQt5_gpl-5.10.1/sip/QtPrintSupport/qprinterinfo.sip0000644000076500000240000000471113245233151022531 0ustar philstaff00000000000000// qprinterinfo.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_Printer) class QPrinterInfo { %TypeHeaderCode #include %End public: QPrinterInfo(); QPrinterInfo(const QPrinterInfo &src); explicit QPrinterInfo(const QPrinter &printer); ~QPrinterInfo(); QString printerName() const; bool isNull() const; bool isDefault() const; QList supportedPaperSizes() const; %If (Qt_5_1_0 -) QList> supportedSizesWithNames() const; %End static QList availablePrinters(); static QPrinterInfo defaultPrinter(); QString description() const; QString location() const; QString makeAndModel() const; static QPrinterInfo printerInfo(const QString &printerName); %If (Qt_5_3_0 -) bool isRemote() const; %End %If (Qt_5_3_0 -) QPrinter::PrinterState state() const; %End %If (Qt_5_3_0 -) QList supportedPageSizes() const; %End %If (Qt_5_3_0 -) QPageSize defaultPageSize() const; %End %If (Qt_5_3_0 -) bool supportsCustomPageSizes() const; %End %If (Qt_5_3_0 -) QPageSize minimumPhysicalPageSize() const; %End %If (Qt_5_3_0 -) QPageSize maximumPhysicalPageSize() const; %End %If (Qt_5_3_0 -) QList supportedResolutions() const; %End %If (Qt_5_3_0 -) static QStringList availablePrinterNames(); %End %If (Qt_5_3_0 -) static QString defaultPrinterName(); %End %If (Qt_5_4_0 -) QPrinter::DuplexMode defaultDuplexMode() const; %End %If (Qt_5_4_0 -) QList supportedDuplexModes() const; %End }; %End PyQt5_gpl-5.10.1/sip/QtPrintSupport/qprintpreviewdialog.sip0000644000076500000240000000376213245233151024115 0ustar philstaff00000000000000// qprintpreviewdialog.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_PrintPreviewDialog) class QPrintPreviewDialog : QDialog { %TypeHeaderCode #include %End public: QPrintPreviewDialog(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); QPrintPreviewDialog(QPrinter *printer, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QPrintPreviewDialog(); virtual void setVisible(bool visible); virtual void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtprintsupport_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End QPrinter *printer(); virtual void done(int result); signals: void paintRequested(QPrinter *printer); }; %End PyQt5_gpl-5.10.1/sip/QtPrintSupport/qprintpreviewwidget.sip0000644000076500000240000000505313245233151024134 0ustar philstaff00000000000000// qprintpreviewwidget.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_PrintPreviewWidget) class QPrintPreviewWidget : QWidget { %TypeHeaderCode #include %End public: enum ViewMode { SinglePageView, FacingPagesView, AllPagesView, }; enum ZoomMode { CustomZoom, FitToWidth, FitInView, }; QPrintPreviewWidget(QPrinter *printer, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); QPrintPreviewWidget(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QPrintPreviewWidget(); qreal zoomFactor() const; QPrinter::Orientation orientation() const; QPrintPreviewWidget::ViewMode viewMode() const; QPrintPreviewWidget::ZoomMode zoomMode() const; int currentPage() const; public slots: virtual void setVisible(bool visible); void print() /PyName=print_/; %If (Py_v3) void print(); %End void zoomIn(qreal factor = 1.1); void zoomOut(qreal factor = 1.1); void setZoomFactor(qreal zoomFactor); void setOrientation(QPrinter::Orientation orientation); void setViewMode(QPrintPreviewWidget::ViewMode viewMode); void setZoomMode(QPrintPreviewWidget::ZoomMode zoomMode); void setCurrentPage(int pageNumber); void fitToWidth(); void fitInView(); void setLandscapeOrientation(); void setPortraitOrientation(); void setSinglePageViewMode(); void setFacingPagesViewMode(); void setAllPagesViewMode(); void updatePreview(); signals: void paintRequested(QPrinter *printer); void previewChanged(); public: int pageCount() const; }; %End PyQt5_gpl-5.10.1/sip/QtPrintSupport/qpyprintsupport_qlist.sip0000644000076500000240000001200113245233151024537 0ustar philstaff00000000000000// This is the SIP interface definition for the QList based mapped types // specific to the QtPrintSupport module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_Printer) %MappedType QList /TypeHintIn="Iterable[QPagedPaintDevice.PageSize]", TypeHintOut="List[QPagedPaintDevice.PageSize]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QPagedPaintDevice_PageSize); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QPagedPaintDevice_PageSize); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QPagedPaintDevice.PageSize' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %End %If (PyQt_Printer) %If (Qt_5_4_0 -) %MappedType QList /TypeHintIn="Iterable[QPrinter.DuplexMode]", TypeHintOut="List[QPrinter.DuplexMode]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QPrinter_DuplexMode); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QPrinter_DuplexMode); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QPrinter.DuplexMode' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %End %End PyQt5_gpl-5.10.1/sip/QtPrintSupport/QtPrintSupportmod.sip0000644000076500000240000000431713245233151023511 0ustar philstaff00000000000000// QtPrintSupportmod.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtPrintSupport, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qabstractprintdialog.sip %Include qpagesetupdialog.sip %Include qprintdialog.sip %Include qprintengine.sip %Include qprinter.sip %Include qprinterinfo.sip %Include qprintpreviewdialog.sip %Include qprintpreviewwidget.sip %Include qpyprintsupport_qlist.sip PyQt5_gpl-5.10.1/sip/QtQml/0000755000076500000240000000000013245233151015331 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtQml/qjsengine.sip0000644000076500000240000000676613245233151020050 0ustar philstaff00000000000000// qjsengine.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QJSEngine : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QQmlExpression, &sipType_QQmlExpression, -1, 1}, #if QT_VERSION >= 0x050200 {sipName_QQmlFileSelector, &sipType_QQmlFileSelector, -1, 2}, #else {0, 0, -1, 2}, #endif {sipName_QQmlContext, &sipType_QQmlContext, -1, 3}, {sipName_QQmlPropertyMap, &sipType_QQmlPropertyMap, -1, 4}, {sipName_QQmlComponent, &sipType_QQmlComponent, -1, 5}, {sipName_QQmlExtensionPlugin, &sipType_QQmlExtensionPlugin, -1, 6}, {sipName_QJSEngine, &sipType_QJSEngine, 7, -1}, {sipName_QQmlEngine, &sipType_QQmlEngine, 8, -1}, #if QT_VERSION >= 0x050100 {sipName_QQmlApplicationEngine, &sipType_QQmlApplicationEngine, -1, -1}, #else {0, 0, -1, -1}, #endif }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QJSEngine(); explicit QJSEngine(QObject *parent /TransferThis/); virtual ~QJSEngine(); QJSValue globalObject() const; QJSValue evaluate(const QString &program, const QString &fileName = QString(), int lineNumber = 1) /ReleaseGIL/; QJSValue newObject(); QJSValue newArray(uint length = 0); QJSValue newQObject(QObject *object /Transfer/); void collectGarbage(); %If (Qt_5_4_0 -) void installTranslatorFunctions(const QJSValue &object = QJSValue()); %End %If (Qt_5_6_0 -) enum Extension { TranslationExtension, ConsoleExtension, GarbageCollectionExtension, AllExtensions, }; %End %If (Qt_5_6_0 -) typedef QFlags Extensions; %End %If (Qt_5_6_0 -) void installExtensions(QJSEngine::Extensions extensions, const QJSValue &object = QJSValue()); %End %If (Qt_5_8_0 -) QJSValue newQMetaObject(const QMetaObject *metaObject); %End private: QJSEngine(const QJSEngine &); }; %If (Qt_5_5_0 -) QJSEngine *qjsEngine(const QObject *); %End %If (Qt_5_6_0 -) QFlags operator|(QJSEngine::Extension f1, QFlags f2); %End %ModuleHeaderCode #include "qpyqml_api.h" %End %PostInitialisationCode qpyqml_post_init(sipModuleDict); %End PyQt5_gpl-5.10.1/sip/QtQml/qjsvalue.sip0000644000076500000240000000553113245233151017704 0ustar philstaff00000000000000// qjsvalue.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. typedef QList QJSValueList; class QJSValue /TypeHintIn="Union[QJSValue, QJSValue.SpecialValue, bool, int, float, QString]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode if (!sipIsErr) return qpyqml_canConvertTo_QJSValue(sipPy); return qpyqml_convertTo_QJSValue(sipPy, sipTransferObj, sipCppPtr, sipIsErr); %End public: enum SpecialValue { NullValue, UndefinedValue, }; QJSValue(QJSValue::SpecialValue value /Constrained/ = QJSValue::UndefinedValue); QJSValue(const QJSValue &other); ~QJSValue(); bool isBool() const; bool isNumber() const; bool isNull() const; bool isString() const; bool isUndefined() const; bool isVariant() const; bool isQObject() const; bool isObject() const; bool isDate() const; bool isRegExp() const; bool isArray() const; bool isError() const; QString toString() const; double toNumber() const; qint32 toInt() const; quint32 toUInt() const; bool toBool() const; QVariant toVariant() const; QObject *toQObject() const; QDateTime toDateTime() const; bool equals(const QJSValue &other) const; bool strictlyEquals(const QJSValue &other) const; QJSValue prototype() const; void setPrototype(const QJSValue &prototype); QJSValue property(const QString &name) const; void setProperty(const QString &name, const QJSValue &value); bool hasProperty(const QString &name) const; bool hasOwnProperty(const QString &name) const; QJSValue property(quint32 arrayIndex) const; void setProperty(quint32 arrayIndex, const QJSValue &value); bool deleteProperty(const QString &name); bool isCallable() const; QJSValue call(const QJSValueList &args = QJSValueList()); QJSValue callWithInstance(const QJSValue &instance, const QJSValueList &args = QJSValueList()); QJSValue callAsConstructor(const QJSValueList &args = QJSValueList()); }; PyQt5_gpl-5.10.1/sip/QtQml/qjsvalueiterator.sip0000644000076500000240000000236313245233151021456 0ustar philstaff00000000000000// qjsvalueiterator.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QJSValueIterator { %TypeHeaderCode #include %End public: QJSValueIterator(const QJSValue &value); ~QJSValueIterator(); bool hasNext() const; bool next(); QString name() const; QJSValue value() const; private: QJSValueIterator(const QJSValueIterator &); }; PyQt5_gpl-5.10.1/sip/QtQml/qmlattachedpropertiesobject.sip0000644000076500000240000000275313245233151023650 0ustar philstaff00000000000000// This is the SIP specification of the qmlAttachedPropertiesObject() function. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleHeaderCode #include %End QObject *qmlAttachedPropertiesObject(SIP_PYTYPE, QObject *object, bool create = true); %MethodCode QObject *proxy = qpyqml_find_proxy_for(a1); if (!proxy) { sipError = sipErrorFail; } else { static QHash cache; int idx = cache.value((PyTypeObject *)a0, -1); const QMetaObject *mo = pyqt5_qtqml_get_qmetaobject((PyTypeObject *)a0); sipRes = qmlAttachedPropertiesObject(&idx, proxy, mo, a2); cache.insert((PyTypeObject *)a0, idx); } %End PyQt5_gpl-5.10.1/sip/QtQml/qmlregistertype.sip0000644000076500000240000000675113245233151021317 0ustar philstaff00000000000000// This is the SIP specification of the qmlRegisterType() function. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleHeaderCode #include %End %ModuleCode // Imports from QtCore. pyqt5_qtqml_get_qmetaobject_t pyqt5_qtqml_get_qmetaobject; %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtqml_get_qmetaobject = (pyqt5_qtqml_get_qmetaobject_t)sipImportSymbol( "pyqt5_get_qmetaobject"); Q_ASSERT(pyqt5_qtqml_get_qmetaobject); %End int qmlRegisterRevision(SIP_PYTYPE, int revision, const char *uri, int major, int minor, SIP_PYTYPE attachedProperties = 0); %MethodCode if ((sipRes = qpyqml_register_library_type((PyTypeObject *)a0, a2, a3, a4, 0, a1, (PyTypeObject *)a5)) < 0) sipError = sipErrorFail; %End %If (Qt_5_2_0 -) int qmlRegisterSingletonType(const QUrl &url, const char *uri, int major, int minor, const char *qmlName); %End int qmlRegisterSingletonType(SIP_PYTYPE, const char *uri, int major, int minor, const char *typeName, SIP_PYCALLABLE factory /TypeHint="Callable[[QQmlEngine, QJSEngine], Any]"/); %MethodCode if ((sipRes = qpyqml_register_singleton_type((PyTypeObject *)a0, a1, a2, a3, a4, a5)) < 0) sipError = sipErrorFail; %End int qmlRegisterType(const QUrl &url, const char *uri, int major, int minor, const char *qmlName); int qmlRegisterType(SIP_PYTYPE, SIP_PYTYPE attachedProperties = 0); %MethodCode if ((sipRes = qpyqml_register_type((PyTypeObject *)a0, (PyTypeObject *)a1)) < 0) sipError = sipErrorFail; %End int qmlRegisterType(SIP_PYTYPE, const char *uri, int major, int minor, const char *qmlName, SIP_PYTYPE attachedProperties = 0); %MethodCode if ((sipRes = qpyqml_register_library_type((PyTypeObject *)a0, a1, a2, a3, a4, -1, (PyTypeObject *)a5)) < 0) sipError = sipErrorFail; %End int qmlRegisterType(SIP_PYTYPE, int revision, const char *uri, int major, int minor, const char *qmlName, SIP_PYTYPE attachedProperties = 0); %MethodCode if ((sipRes = qpyqml_register_library_type((PyTypeObject *)a0, a2, a3, a4, a5, a1, (PyTypeObject *)a6)) < 0) sipError = sipErrorFail; %End int qmlRegisterUncreatableType(SIP_PYTYPE, const char *uri, int major, int minor, const char *qmlName, const QString &reason); %MethodCode if ((sipRes = qpyqml_register_uncreatable_type((PyTypeObject *)a0, a1, a2, a3, a4, *a5, -1)) < 0) sipError = sipErrorFail; %End int qmlRegisterUncreatableType(SIP_PYTYPE, int revision, const char *uri, int major, int minor, const char *qmlName, const QString &reason); %MethodCode if ((sipRes = qpyqml_register_uncreatable_type((PyTypeObject *)a0, a2, a3, a4, a5, *a6, a1)) < 0) sipError = sipErrorFail; %End PyQt5_gpl-5.10.1/sip/QtQml/qpyqmllistproperty.sip0000644000076500000240000000260513245233151022075 0ustar philstaff00000000000000// This is the SIP specification of the QQmlListProperty mapped type. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QQmlListProperty /TypeHint="QQmlListProperty"/ { %TypeHeaderCode #include "qpyqmllistpropertywrapper.h" %End %ConvertFromTypeCode return qpyqml_QQmlListPropertyWrapper_New(sipCpp, 0); %End %ConvertToTypeCode if (sipIsErr == NULL) return PyObject_IsInstance(sipPy, (PyObject *)qpyqml_QQmlListPropertyWrapper_TypeObject); *sipCppPtr = ((qpyqml_QQmlListPropertyWrapper *)sipPy)->qml_list_property; // It isn't a temporary copy. return 0; %End }; PyQt5_gpl-5.10.1/sip/QtQml/qqml.sip0000644000076500000240000000176413245233151017030 0ustar philstaff00000000000000// qqml.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End void qmlClearTypeRegistrations(); PyQt5_gpl-5.10.1/sip/QtQml/qqmlabstracturlinterceptor.sip0000644000076500000240000000254213245233151023551 0ustar philstaff00000000000000// qqmlabstracturlinterceptor.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QQmlAbstractUrlInterceptor { %TypeHeaderCode #include %End public: enum DataType { QmlFile, JavaScriptFile, QmldirFile, UrlString, }; QQmlAbstractUrlInterceptor(); virtual ~QQmlAbstractUrlInterceptor(); virtual QUrl intercept(const QUrl &path, QQmlAbstractUrlInterceptor::DataType type) = 0; }; %End PyQt5_gpl-5.10.1/sip/QtQml/qqmlapplicationengine.sip0000644000076500000240000000346213245233151022437 0ustar philstaff00000000000000// qqmlapplicationengine.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QQmlApplicationEngine : QQmlEngine { %TypeHeaderCode #include %End public: QQmlApplicationEngine(QObject *parent /TransferThis/ = 0); QQmlApplicationEngine(const QUrl &url, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QQmlApplicationEngine(const QString &filePath, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; virtual ~QQmlApplicationEngine(); %If (Qt_5_9_0 -) QList rootObjects() const; %End %If (- Qt_5_9_0) QList rootObjects(); %End public slots: void load(const QUrl &url) /ReleaseGIL/; void load(const QString &filePath) /ReleaseGIL/; void loadData(const QByteArray &data, const QUrl &url = QUrl()) /ReleaseGIL/; signals: void objectCreated(QObject *object, const QUrl &url); private: QQmlApplicationEngine(const QQmlApplicationEngine &); }; %End PyQt5_gpl-5.10.1/sip/QtQml/qqmlcomponent.sip0000644000076500000240000000527213245233151020751 0ustar philstaff00000000000000// qqmlcomponent.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlComponent : QObject { %TypeHeaderCode #include %End public: enum CompilationMode { PreferSynchronous, Asynchronous, }; QQmlComponent(QQmlEngine *, QObject *parent /TransferThis/ = 0); QQmlComponent(QQmlEngine *, const QString &fileName, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QQmlComponent(QQmlEngine *, const QString &fileName, QQmlComponent::CompilationMode mode, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QQmlComponent(QQmlEngine *, const QUrl &url, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QQmlComponent(QQmlEngine *, const QUrl &url, QQmlComponent::CompilationMode mode, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QQmlComponent(QObject *parent /TransferThis/ = 0); virtual ~QQmlComponent(); enum Status { Null, Ready, Loading, Error, }; QQmlComponent::Status status() const; bool isNull() const; bool isReady() const; bool isError() const; bool isLoading() const; QList errors() const; qreal progress() const; QUrl url() const; virtual QObject *create(QQmlContext *context = 0) /TransferBack/; virtual QObject *beginCreate(QQmlContext *) /TransferBack/; virtual void completeCreate(); void create(QQmlIncubator &, QQmlContext *context = 0, QQmlContext *forContext = 0); QQmlContext *creationContext() const; public slots: void loadUrl(const QUrl &url) /ReleaseGIL/; void loadUrl(const QUrl &url, QQmlComponent::CompilationMode mode) /ReleaseGIL/; void setData(const QByteArray &, const QUrl &baseUrl); signals: void statusChanged(QQmlComponent::Status); void progressChanged(qreal); private: QQmlComponent(const QQmlComponent &); }; PyQt5_gpl-5.10.1/sip/QtQml/qqmlcontext.sip0000644000076500000240000000333213245233151020426 0ustar philstaff00000000000000// qqmlcontext.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlContext : QObject { %TypeHeaderCode #include %End public: QQmlContext(QQmlEngine *engine, QObject *parent /TransferThis/ = 0); QQmlContext(QQmlContext *parentContext, QObject *parent /TransferThis/ = 0); virtual ~QQmlContext(); bool isValid() const; QQmlEngine *engine() const; QQmlContext *parentContext() const; QObject *contextObject() const; void setContextObject(QObject *); QVariant contextProperty(const QString &) const; void setContextProperty(const QString &, QObject *); void setContextProperty(const QString &, const QVariant &); QString nameForObject(QObject *) const; QUrl resolvedUrl(const QUrl &); void setBaseUrl(const QUrl &); QUrl baseUrl() const; private: QQmlContext(const QQmlContext &); }; PyQt5_gpl-5.10.1/sip/QtQml/qqmlengine.sip0000644000076500000240000001234113245233151020207 0ustar philstaff00000000000000// qqmlengine.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlImageProviderBase /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum ImageType { Image, Pixmap, Texture, %If (Qt_5_6_0 -) ImageResponse, %End }; enum Flag { ForceAsynchronousImageLoading, }; typedef QFlags Flags; virtual ~QQmlImageProviderBase(); virtual QQmlImageProviderBase::ImageType imageType() const = 0; virtual QQmlImageProviderBase::Flags flags() const = 0; private: QQmlImageProviderBase(); }; QFlags operator|(QQmlImageProviderBase::Flag f1, QFlags f2); class QQmlEngine : QJSEngine { %TypeHeaderCode #include %End public: %If (Qt_5_6_1 -) explicit QQmlEngine(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QQmlEngine(QObject *parent /TransferThis/ = 0); %End virtual ~QQmlEngine(); QQmlContext *rootContext() const; void clearComponentCache(); void trimComponentCache(); QStringList importPathList() const; void setImportPathList(const QStringList &paths); void addImportPath(const QString &dir); QStringList pluginPathList() const; void setPluginPathList(const QStringList &paths); void addPluginPath(const QString &dir); bool addNamedBundle(const QString &name, const QString &fileName); bool importPlugin(const QString &filePath, const QString &uri, QList *errors /GetWrapper/); %MethodCode int orig_size = (a2 ? a2->size() : 0); sipRes = sipCpp->importPlugin(*a0, *a1, a2); if (a2) { for (int i = a2->size(); i > orig_size; --i) { QQmlError *new_error = new QQmlError(a2->at(i - orig_size - 1)); PyObject *new_error_obj = sipConvertFromNewType(new_error, sipType_QQmlError, 0); if (!new_error_obj) { delete new_error; sipError = sipErrorFail; break; } if (PyList_Insert(a2Wrapper, 0, new_error_obj) < 0) { Py_DECREF(new_error_obj); sipError = sipErrorFail; break; } Py_DECREF(new_error_obj); } } %End void setNetworkAccessManagerFactory(QQmlNetworkAccessManagerFactory * /KeepReference/); QQmlNetworkAccessManagerFactory *networkAccessManagerFactory() const; QNetworkAccessManager *networkAccessManager() const; void addImageProvider(const QString &id, QQmlImageProviderBase * /Transfer/); QQmlImageProviderBase *imageProvider(const QString &id) const; void removeImageProvider(const QString &id); void setIncubationController(QQmlIncubationController * /KeepReference/); QQmlIncubationController *incubationController() const; void setOfflineStoragePath(const QString &dir); QString offlineStoragePath() const; QUrl baseUrl() const; void setBaseUrl(const QUrl &); bool outputWarningsToStandardError() const; void setOutputWarningsToStandardError(bool); static QQmlContext *contextForObject(const QObject *); static void setContextForObject(QObject *, QQmlContext *); enum ObjectOwnership { CppOwnership, JavaScriptOwnership, }; static void setObjectOwnership(QObject * /GetWrapper/, QQmlEngine::ObjectOwnership); %MethodCode QQmlEngine::ObjectOwnership old = QQmlEngine::objectOwnership(a0); QQmlEngine::setObjectOwnership(a0, a1); if (old != a1 && !a0->parent()) { if (old == QQmlEngine::CppOwnership) sipTransferTo(a0Wrapper, Py_None); else sipTransferBack(a0Wrapper); } %End static QQmlEngine::ObjectOwnership objectOwnership(QObject *); protected: virtual bool event(QEvent *); signals: void quit(); void warnings(const QList &warnings); %If (Qt_5_8_0 -) void exit(int retCode); %End public: %If (Qt_5_9_0 -) QString offlineStorageDatabaseFilePath(const QString &databaseName) const; %End public slots: %If (Qt_5_10_0 -) void retranslate(); %End private: QQmlEngine(const QQmlEngine &); }; PyQt5_gpl-5.10.1/sip/QtQml/qqmlerror.sip0000644000076500000240000000307713245233151020101 0ustar philstaff00000000000000// qqmlerror.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlError { %TypeHeaderCode #include %End public: QQmlError(); QQmlError(const QQmlError &); ~QQmlError(); bool isValid() const; QUrl url() const; void setUrl(const QUrl &); QString description() const; void setDescription(const QString &); int line() const; void setLine(int); int column() const; void setColumn(int); QString toString() const; %If (Qt_5_2_0 -) QObject *object() const; %End %If (Qt_5_2_0 -) void setObject(QObject *); %End %If (Qt_5_9_0 -) QtMsgType messageType() const; %End %If (Qt_5_9_0 -) void setMessageType(QtMsgType messageType); %End }; PyQt5_gpl-5.10.1/sip/QtQml/qqmlexpression.sip0000644000076500000240000000367313245233151021151 0ustar philstaff00000000000000// qqmlexpression.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlExpression : QObject { %TypeHeaderCode #include %End public: QQmlExpression(); QQmlExpression(QQmlContext *, QObject *, const QString &, QObject *parent /TransferThis/ = 0); QQmlExpression(const QQmlScriptString &, QQmlContext *context = 0, QObject *scope = 0, QObject *parent /TransferThis/ = 0); virtual ~QQmlExpression(); QQmlEngine *engine() const; QQmlContext *context() const; QString expression() const; void setExpression(const QString &); bool notifyOnValueChanged() const; void setNotifyOnValueChanged(bool); QString sourceFile() const; int lineNumber() const; int columnNumber() const; void setSourceLocation(const QString &fileName, int line, int column = 0); QObject *scopeObject() const; bool hasError() const; void clearError(); QQmlError error() const; QVariant evaluate(bool *valueIsUndefined = 0) /ReleaseGIL/; signals: void valueChanged(); private: QQmlExpression(const QQmlExpression &); }; PyQt5_gpl-5.10.1/sip/QtQml/qqmlextensionplugin.sip0000644000076500000240000000257413245233151022204 0ustar philstaff00000000000000// qqmlextensionplugin.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlExtensionPlugin : QObject { %TypeHeaderCode #include %End public: explicit QQmlExtensionPlugin(QObject *parent /TransferThis/ = 0); virtual ~QQmlExtensionPlugin(); virtual void registerTypes(const char *uri) = 0; virtual void initializeEngine(QQmlEngine *engine, const char *uri); %If (Qt_5_1_0 -) QUrl baseUrl() const; %End private: QQmlExtensionPlugin(const QQmlExtensionPlugin &); }; PyQt5_gpl-5.10.1/sip/QtQml/qqmlfileselector.sip0000644000076500000240000000301513245233151021420 0ustar philstaff00000000000000// qqmlfileselector.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QQmlFileSelector : QObject { %TypeHeaderCode #include %End public: QQmlFileSelector(QQmlEngine *engine, QObject *parent /TransferThis/ = 0); virtual ~QQmlFileSelector(); void setSelector(QFileSelector *selector); %If (Qt_5_4_0 -) void setExtraSelectors(const QStringList &strings); %End %If (- Qt_5_4_0) void setExtraSelectors(QStringList &strings); %End static QQmlFileSelector *get(QQmlEngine *); %If (Qt_5_7_0 -) QFileSelector *selector() const; %End private: QQmlFileSelector(const QQmlFileSelector &); }; %End PyQt5_gpl-5.10.1/sip/QtQml/qqmlincubator.sip0000644000076500000240000000432713245233151020735 0ustar philstaff00000000000000// qqmlincubator.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlIncubator { %TypeHeaderCode #include %End public: enum IncubationMode { Asynchronous, AsynchronousIfNested, Synchronous, }; enum Status { Null, Ready, Loading, Error, }; QQmlIncubator(QQmlIncubator::IncubationMode mode = QQmlIncubator::Asynchronous); virtual ~QQmlIncubator(); void clear(); void forceCompletion(); bool isNull() const; bool isReady() const; bool isError() const; bool isLoading() const; QList errors() const; QQmlIncubator::IncubationMode incubationMode() const; QQmlIncubator::Status status() const; QObject *object() const /Factory/; protected: virtual void statusChanged(QQmlIncubator::Status); virtual void setInitialState(QObject *); private: QQmlIncubator(const QQmlIncubator &); }; class QQmlIncubationController { %TypeHeaderCode #include %End public: QQmlIncubationController(); virtual ~QQmlIncubationController(); QQmlEngine *engine() const; int incubatingObjectCount() const; void incubateFor(int msecs) /ReleaseGIL/; protected: virtual void incubatingObjectCountChanged(int); private: QQmlIncubationController(const QQmlIncubationController &); }; PyQt5_gpl-5.10.1/sip/QtQml/qqmllist.sip0000644000076500000240000000306313245233151017716 0ustar philstaff00000000000000// qqmllist.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlListReference { %TypeHeaderCode #include %End public: QQmlListReference(); QQmlListReference(QObject *, const char *property, QQmlEngine *engine = 0); QQmlListReference(const QQmlListReference &); ~QQmlListReference(); bool isValid() const; QObject *object() const; const QMetaObject *listElementType() const; bool canAppend() const; bool canAt() const; bool canClear() const; bool canCount() const; bool isManipulable() const; bool isReadable() const; bool append(QObject *) const; QObject *at(int) const; bool clear() const; int count() const; }; PyQt5_gpl-5.10.1/sip/QtQml/qqmlnetworkaccessmanagerfactory.sip0000644000076500000240000000225713245233151024545 0ustar philstaff00000000000000// qqmlnetworkaccessmanagerfactory.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlNetworkAccessManagerFactory { %TypeHeaderCode #include %End public: virtual ~QQmlNetworkAccessManagerFactory(); virtual QNetworkAccessManager *create(QObject *parent) = 0; }; PyQt5_gpl-5.10.1/sip/QtQml/qqmlparserstatus.sip0000644000076500000240000000232313245233151021501 0ustar philstaff00000000000000// qqmlparserstatus.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlParserStatus /Mixin,PyQtInterface="org.qt-project.Qt.QQmlParserStatus"/ { %TypeHeaderCode #include %End public: QQmlParserStatus(); virtual ~QQmlParserStatus(); virtual void classBegin() = 0; virtual void componentComplete() = 0; }; PyQt5_gpl-5.10.1/sip/QtQml/qqmlproperty.sip0000644000076500000240000000764613245233151020642 0ustar philstaff00000000000000// qqmlproperty.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlProperty { %TypeHeaderCode #include %End public: enum PropertyTypeCategory { InvalidCategory, List, Object, Normal, }; enum Type { Invalid, Property, SignalProperty, }; QQmlProperty(); QQmlProperty(QObject *); QQmlProperty(QObject *, QQmlContext *); QQmlProperty(QObject *, QQmlEngine *); QQmlProperty(QObject *, const QString &); QQmlProperty(QObject *, const QString &, QQmlContext *); QQmlProperty(QObject *, const QString &, QQmlEngine *); QQmlProperty(const QQmlProperty &); ~QQmlProperty(); long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End bool operator==(const QQmlProperty &) const; QQmlProperty::Type type() const; bool isValid() const; bool isProperty() const; bool isSignalProperty() const; int propertyType() const; QQmlProperty::PropertyTypeCategory propertyTypeCategory() const; const char *propertyTypeName() const; QString name() const; QVariant read() const; static QVariant read(const QObject *, const QString &); static QVariant read(const QObject *, const QString &, QQmlContext *); static QVariant read(const QObject *, const QString &, QQmlEngine *); bool write(const QVariant &) const; static bool write(QObject *, const QString &, const QVariant &); static bool write(QObject *, const QString &, const QVariant &, QQmlContext *); static bool write(QObject *, const QString &, const QVariant &, QQmlEngine *); bool reset() const; bool hasNotifySignal() const; bool needsNotifySignal() const; bool connectNotifySignal(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/) const; %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt5_qtqml_get_connection_parts(a0, 0, "()", false, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->connectNotifySignal(receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End bool connectNotifySignal(QObject *dest, int method) const; bool isWritable() const; bool isDesignable() const; bool isResettable() const; QObject *object() const; int index() const; QMetaProperty property() const; QMetaMethod method() const; }; typedef QList QQmlProperties; %ModuleHeaderCode // Imports from QtCore. typedef sipErrorState (*pyqt5_qtqml_get_connection_parts_t)(PyObject *, QObject *, const char *, bool, QObject **, QByteArray &); extern pyqt5_qtqml_get_connection_parts_t pyqt5_qtqml_get_connection_parts; %End %ModuleCode // Imports from QtCore. pyqt5_qtqml_get_connection_parts_t pyqt5_qtqml_get_connection_parts; %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtqml_get_connection_parts = (pyqt5_qtqml_get_connection_parts_t)sipImportSymbol("pyqt5_get_connection_parts"); Q_ASSERT(pyqt5_qtqml_get_connection_parts); %End PyQt5_gpl-5.10.1/sip/QtQml/qqmlpropertymap.sip0000644000076500000240000000326513245233151021331 0ustar philstaff00000000000000// qqmlpropertymap.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlPropertyMap : QObject { %TypeHeaderCode #include %End public: explicit QQmlPropertyMap(QObject *parent /TransferThis/ = 0); virtual ~QQmlPropertyMap(); QVariant value(const QString &key) const; void insert(const QString &key, const QVariant &value); void clear(const QString &key); QStringList keys() const; int count() const; int size() const /__len__/; bool isEmpty() const; bool contains(const QString &key) const; QVariant operator[](const QString &key) const; signals: void valueChanged(const QString &key, const QVariant &value); protected: virtual QVariant updateValue(const QString &key, const QVariant &input); private: QQmlPropertyMap(const QQmlPropertyMap &); }; PyQt5_gpl-5.10.1/sip/QtQml/qqmlpropertyvaluesource.sip0000644000076500000240000000234613245233151023110 0ustar philstaff00000000000000// qqmlpropertyvaluesource.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlPropertyValueSource /Mixin,PyQtInterface="org.qt-project.Qt.QQmlPropertyValueSource"/ { %TypeHeaderCode #include %End public: QQmlPropertyValueSource(); virtual ~QQmlPropertyValueSource(); virtual void setTarget(const QQmlProperty &) = 0; }; PyQt5_gpl-5.10.1/sip/QtQml/qqmlscriptstring.sip0000644000076500000240000000273513245233151021503 0ustar philstaff00000000000000// qqmlscriptstring.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlScriptString { %TypeHeaderCode #include %End public: QQmlScriptString(); QQmlScriptString(const QQmlScriptString &); ~QQmlScriptString(); bool isEmpty() const; bool isUndefinedLiteral() const; bool isNullLiteral() const; QString stringLiteral() const; qreal numberLiteral(bool *ok) const; bool booleanLiteral(bool *ok) const; %If (Qt_5_4_0 -) bool operator==(const QQmlScriptString &) const; %End %If (Qt_5_4_0 -) bool operator!=(const QQmlScriptString &) const; %End }; PyQt5_gpl-5.10.1/sip/QtQml/QtQmlmod.sip0000644000076500000240000000512213245233151017604 0ustar philstaff00000000000000// QtQmlmod.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtQml, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qqml.sip %Include qjsengine.sip %Include qjsvalue.sip %Include qjsvalueiterator.sip %Include qqmlabstracturlinterceptor.sip %Include qqmlapplicationengine.sip %Include qqmlcomponent.sip %Include qqmlcontext.sip %Include qqmlengine.sip %Include qqmlerror.sip %Include qqmlexpression.sip %Include qqmlextensionplugin.sip %Include qqmlfileselector.sip %Include qqmlincubator.sip %Include qqmllist.sip %Include qqmlnetworkaccessmanagerfactory.sip %Include qqmlparserstatus.sip %Include qqmlproperty.sip %Include qqmlpropertymap.sip %Include qqmlpropertyvaluesource.sip %Include qqmlscriptstring.sip %Include qmlattachedpropertiesobject.sip %Include qmlregistertype.sip %Include qpyqmllistproperty.sip PyQt5_gpl-5.10.1/sip/QtQuick/0000755000076500000240000000000013245233151015654 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtQuick/qquickframebufferobject.sip0000644000076500000240000000470313245233151023266 0ustar philstaff00000000000000// qquickframebufferobject.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QQuickFramebufferObject : QQuickItem /ExportDerived/ { %TypeHeaderCode #include %End public: class Renderer /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End protected: Renderer(); virtual ~Renderer(); virtual void render() = 0; virtual QOpenGLFramebufferObject *createFramebufferObject(const QSize &size); virtual void synchronize(QQuickFramebufferObject *); QOpenGLFramebufferObject *framebufferObject() const; void update(); void invalidateFramebufferObject(); }; QQuickFramebufferObject(QQuickItem *parent /TransferThis/ = 0); bool textureFollowsItemSize() const; void setTextureFollowsItemSize(bool follows); virtual QQuickFramebufferObject::Renderer *createRenderer() const = 0 /Factory/; protected: virtual void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry); virtual QSGNode *updatePaintNode(QSGNode *, QQuickItem::UpdatePaintNodeData *); signals: void textureFollowsItemSizeChanged(bool); public: %If (Qt_5_4_0 -) virtual bool isTextureProvider() const; %End %If (Qt_5_4_0 -) virtual QSGTextureProvider *textureProvider() const; %End %If (Qt_5_4_0 -) virtual void releaseResources(); %End %If (Qt_5_6_0 -) bool mirrorVertically() const; %End %If (Qt_5_6_0 -) void setMirrorVertically(bool enable); %End signals: %If (Qt_5_6_0 -) void mirrorVerticallyChanged(bool); %End }; %End PyQt5_gpl-5.10.1/sip/QtQuick/qquickimageprovider.sip0000644000076500000240000000545413245233151022454 0ustar philstaff00000000000000// qquickimageprovider.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickTextureFactory : QObject { %TypeHeaderCode #include %End public: QQuickTextureFactory(); virtual ~QQuickTextureFactory(); virtual QSGTexture *createTexture(QQuickWindow *window) const = 0 /Factory/; virtual QSize textureSize() const = 0; virtual int textureByteCount() const = 0; virtual QImage image() const; %If (Qt_5_6_0 -) static QQuickTextureFactory *textureFactoryForImage(const QImage &image) /Factory/; %End }; class QQuickImageProvider : QQmlImageProviderBase { %TypeHeaderCode #include %End public: QQuickImageProvider(QQmlImageProviderBase::ImageType type, QQmlImageProviderBase::Flags flags = 0); virtual ~QQuickImageProvider(); virtual QQmlImageProviderBase::ImageType imageType() const; virtual QQmlImageProviderBase::Flags flags() const; virtual QImage requestImage(const QString &id, QSize *size /Out/, const QSize &requestedSize); virtual QPixmap requestPixmap(const QString &id, QSize *size /Out/, const QSize &requestedSize); virtual QQuickTextureFactory *requestTexture(const QString &id, QSize *size /Out/, const QSize &requestedSize) /Factory/; }; %If (Qt_5_6_0 -) class QQuickImageResponse : QObject { %TypeHeaderCode #include %End public: QQuickImageResponse(); virtual ~QQuickImageResponse(); virtual QQuickTextureFactory *textureFactory() const = 0 /Factory/; virtual QString errorString() const; public slots: virtual void cancel(); signals: void finished(); }; %End %If (Qt_5_6_0 -) class QQuickAsyncImageProvider : QQuickImageProvider { %TypeHeaderCode #include %End public: QQuickAsyncImageProvider(); virtual ~QQuickAsyncImageProvider(); virtual QQuickImageResponse *requestImageResponse(const QString &id, const QSize &requestedSize) = 0 /Factory/; }; %End PyQt5_gpl-5.10.1/sip/QtQuick/qquickitem.sip0000644000076500000240000002253313245233151020552 0ustar philstaff00000000000000// qquickitem.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickItem : QObject, QQmlParserStatus /ExportDerived/ { %TypeHeaderCode #include %End public: enum Flag { ItemClipsChildrenToShape, ItemAcceptsInputMethod, ItemIsFocusScope, ItemHasContents, ItemAcceptsDrops, }; typedef QFlags Flags; enum ItemChange { ItemChildAddedChange, ItemChildRemovedChange, ItemSceneChange, ItemVisibleHasChanged, ItemParentHasChanged, ItemOpacityHasChanged, ItemActiveFocusHasChanged, ItemRotationHasChanged, %If (Qt_5_3_0 -) ItemAntialiasingHasChanged, %End %If (Qt_5_6_0 -) ItemDevicePixelRatioHasChanged, %End %If (Qt_5_10_0 -) ItemEnabledHasChanged, %End }; struct ItemChangeData { %TypeHeaderCode #include %End ItemChangeData(QQuickItem *v); ItemChangeData(QQuickWindow *v); ItemChangeData(qreal v /Constrained/); ItemChangeData(bool v /Constrained/); QQuickItem *item; QQuickWindow *window; qreal realValue; bool boolValue; }; enum TransformOrigin { TopLeft, Top, TopRight, Left, Center, Right, BottomLeft, Bottom, BottomRight, }; %If (Qt_5_6_1 -) explicit QQuickItem(QQuickItem *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QQuickItem(QQuickItem *parent /TransferThis/ = 0); %End virtual ~QQuickItem(); QQuickWindow *window() const; QQuickItem *parentItem() const; void setParentItem(QQuickItem *parent); void stackBefore(const QQuickItem *); void stackAfter(const QQuickItem *); QRectF childrenRect(); QList childItems() const; bool clip() const; void setClip(bool); QString state() const; void setState(const QString &); qreal baselineOffset() const; void setBaselineOffset(qreal); qreal x() const; qreal y() const; void setX(qreal); void setY(qreal); qreal width() const; void setWidth(qreal); void resetWidth(); void setImplicitWidth(qreal); qreal implicitWidth() const; qreal height() const; void setHeight(qreal); void resetHeight(); void setImplicitHeight(qreal); qreal implicitHeight() const; QQuickItem::TransformOrigin transformOrigin() const; void setTransformOrigin(QQuickItem::TransformOrigin); qreal z() const; void setZ(qreal); qreal rotation() const; void setRotation(qreal); qreal scale() const; void setScale(qreal); qreal opacity() const; void setOpacity(qreal); bool isVisible() const; void setVisible(bool); bool isEnabled() const; void setEnabled(bool); bool smooth() const; void setSmooth(bool); bool antialiasing() const; void setAntialiasing(bool); QQuickItem::Flags flags() const; void setFlag(QQuickItem::Flag flag, bool enabled = true); void setFlags(QQuickItem::Flags flags); bool hasActiveFocus() const; bool hasFocus() const; void setFocus(bool); bool isFocusScope() const; QQuickItem *scopedFocusItem() const; Qt::MouseButtons acceptedMouseButtons() const; void setAcceptedMouseButtons(Qt::MouseButtons buttons); bool acceptHoverEvents() const; void setAcceptHoverEvents(bool enabled); QCursor cursor() const; void setCursor(const QCursor &cursor); void unsetCursor(); void grabMouse(); void ungrabMouse(); bool keepMouseGrab() const; void setKeepMouseGrab(bool); bool filtersChildMouseEvents() const; void setFiltersChildMouseEvents(bool filter); void grabTouchPoints(const QVector &ids); void ungrabTouchPoints(); bool keepTouchGrab() const; void setKeepTouchGrab(bool); virtual bool contains(const QPointF &point) const; QPointF mapToItem(const QQuickItem *item, const QPointF &point) const; QPointF mapToScene(const QPointF &point) const; QRectF mapRectToItem(const QQuickItem *item, const QRectF &rect) const; QRectF mapRectToScene(const QRectF &rect) const; QPointF mapFromItem(const QQuickItem *item, const QPointF &point) const; QPointF mapFromScene(const QPointF &point) const; QRectF mapRectFromItem(const QQuickItem *item, const QRectF &rect) const; QRectF mapRectFromScene(const QRectF &rect) const; void polish(); void forceActiveFocus(); QQuickItem *childAt(qreal x, qreal y) const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; struct UpdatePaintNodeData { %TypeHeaderCode #include %End QSGTransformNode *transformNode; private: UpdatePaintNodeData(); }; virtual bool isTextureProvider() const; virtual QSGTextureProvider *textureProvider() const; public slots: void update() /ReleaseGIL/; protected: virtual bool event(QEvent *); bool isComponentComplete() const; virtual void itemChange(QQuickItem::ItemChange, const QQuickItem::ItemChangeData &); void updateInputMethod(Qt::InputMethodQueries queries = Qt::ImQueryInput); bool widthValid() const; bool heightValid() const; virtual void classBegin(); virtual void componentComplete(); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void inputMethodEvent(QInputMethodEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void mousePressEvent(QMouseEvent *event); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event); virtual void mouseDoubleClickEvent(QMouseEvent *event); virtual void mouseUngrabEvent(); virtual void touchUngrabEvent(); virtual void wheelEvent(QWheelEvent *event); virtual void touchEvent(QTouchEvent *event); virtual void hoverEnterEvent(QHoverEvent *event); virtual void hoverMoveEvent(QHoverEvent *event); virtual void hoverLeaveEvent(QHoverEvent *event); virtual void dragEnterEvent(QDragEnterEvent *); virtual void dragMoveEvent(QDragMoveEvent *); virtual void dragLeaveEvent(QDragLeaveEvent *); virtual void dropEvent(QDropEvent *); virtual bool childMouseEventFilter(QQuickItem *, QEvent *); virtual void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry); virtual QSGNode *updatePaintNode(QSGNode *, QQuickItem::UpdatePaintNodeData *); %VirtualCatcherCode PyObject *res; res = sipCallMethod(&sipIsErr, sipMethod, "DD", a0, sipType_QSGNode, NULL, a1, sipType_QQuickItem_UpdatePaintNodeData, NULL); if (res) { sipParseResult(&sipIsErr, sipMethod, res, "H0", sipType_QSGNode, &sipRes); if (!sipIsErr && sipRes && (sipRes->flags() & QSGNode::OwnedByParent)) sipTransferTo(res, (PyObject *)sipPySelf); Py_DECREF(res); } %End virtual void releaseResources(); virtual void updatePolish(); public: %If (Qt_5_1_0 -) bool activeFocusOnTab() const; %End %If (Qt_5_1_0 -) void setActiveFocusOnTab(bool); %End %If (Qt_5_1_0 -) void setFocus(bool focus, Qt::FocusReason reason); %End %If (Qt_5_1_0 -) void forceActiveFocus(Qt::FocusReason reason); %End %If (Qt_5_1_0 -) QQuickItem *nextItemInFocusChain(bool forward = true); %End signals: %If (Qt_5_1_0 -) void windowChanged(QQuickWindow *window); %End public: %If (Qt_5_3_0 -) void resetAntialiasing(); %End %If (Qt_5_4_0 -) QQuickItemGrabResult *grabToImage(const QSize &targetSize = QSize()) /Factory/; %MethodCode QSharedPointer *grab; Py_BEGIN_ALLOW_THREADS // This will leak but there seems to be no way to detach the object. grab = new QSharedPointer(sipCpp->grabToImage(*a0)); Py_END_ALLOW_THREADS sipRes = grab->data(); %End %End %If (Qt_5_7_0 -) bool isAncestorOf(const QQuickItem *child) const; %End %If (Qt_5_7_0 -) QPointF mapToGlobal(const QPointF &point) const; %End %If (Qt_5_7_0 -) QPointF mapFromGlobal(const QPointF &point) const; %End %If (Qt_5_10_0 -) QSizeF size() const; %End %If (Qt_5_10_0 -) bool acceptTouchEvents() const; %End %If (Qt_5_10_0 -) void setAcceptTouchEvents(bool accept); %End private: QQuickItem(const QQuickItem &); }; QFlags operator|(QQuickItem::Flag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtQuick/qquickitemgrabresult.sip0000644000076500000240000000260313245233151022641 0ustar philstaff00000000000000// qquickitemgrabresult.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QQuickItemGrabResult : QObject { %TypeHeaderCode #include %End public: QImage image() const; QUrl url() const; %If (Qt_5_9_0 -) bool saveToFile(const QString &fileName) const; %End %If (- Qt_5_9_0) bool saveToFile(const QString &fileName); %End protected: virtual bool event(QEvent *); signals: void ready(); private: QQuickItemGrabResult(QObject *parent = 0); }; %End PyQt5_gpl-5.10.1/sip/QtQuick/qquickpainteditem.sip0000644000076500000240000000654413245233151022123 0ustar philstaff00000000000000// qquickpainteditem.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickPaintedItem : QQuickItem /ExportDerived/ { %TypeHeaderCode #include %End public: %If (Qt_5_6_1 -) explicit QQuickPaintedItem(QQuickItem *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QQuickPaintedItem(QQuickItem *parent /TransferThis/ = 0); %End virtual ~QQuickPaintedItem(); enum RenderTarget { Image, FramebufferObject, InvertedYFramebufferObject, }; enum PerformanceHint { FastFBOResizing, }; typedef QFlags PerformanceHints; void update(const QRect &rect = QRect()); bool opaquePainting() const; void setOpaquePainting(bool opaque); bool antialiasing() const; void setAntialiasing(bool enable); bool mipmap() const; void setMipmap(bool enable); QQuickPaintedItem::PerformanceHints performanceHints() const; void setPerformanceHint(QQuickPaintedItem::PerformanceHint hint, bool enabled = true); void setPerformanceHints(QQuickPaintedItem::PerformanceHints hints); QRectF contentsBoundingRect() const; QSize contentsSize() const; void setContentsSize(const QSize &); void resetContentsSize(); qreal contentsScale() const; void setContentsScale(qreal); QColor fillColor() const; void setFillColor(const QColor &); QQuickPaintedItem::RenderTarget renderTarget() const; void setRenderTarget(QQuickPaintedItem::RenderTarget target); virtual void paint(QPainter *painter) = 0; signals: void fillColorChanged(); void contentsSizeChanged(); void contentsScaleChanged(); void renderTargetChanged(); protected: virtual QSGNode *updatePaintNode(QSGNode *, QQuickItem::UpdatePaintNodeData *); public: %If (Qt_5_4_0 -) virtual bool isTextureProvider() const; %End %If (Qt_5_4_0 -) virtual QSGTextureProvider *textureProvider() const; %End protected: %If (Qt_5_4_0 -) virtual void releaseResources(); %End %If (Qt_5_6_1 -) virtual void itemChange(QQuickItem::ItemChange, const QQuickItem::ItemChangeData &); %End public: %If (Qt_5_6_0 -) QSize textureSize() const; %End %If (Qt_5_6_0 -) void setTextureSize(const QSize &size); %End signals: %If (Qt_5_6_0 -) void textureSizeChanged(); %End private: QQuickPaintedItem(const QQuickPaintedItem &); }; QFlags operator|(QQuickPaintedItem::PerformanceHint f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtQuick/qquickrendercontrol.sip0000644000076500000240000000324413245233151022472 0ustar philstaff00000000000000// qquickrendercontrol.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QQuickRenderControl : QObject { %TypeHeaderCode #include %End public: %If (Qt_5_6_1 -) explicit QQuickRenderControl(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QQuickRenderControl(QObject *parent /TransferThis/ = 0); %End virtual ~QQuickRenderControl(); void initialize(QOpenGLContext *gl); void invalidate(); void polishItems(); void render(); bool sync(); QImage grab(); static QWindow *renderWindowFor(QQuickWindow *win, QPoint *offset = 0); virtual QWindow *renderWindow(QPoint *offset); %If (Qt_5_5_0 -) void prepareThread(QThread *targetThread); %End signals: void renderRequested(); void sceneChanged(); }; %End PyQt5_gpl-5.10.1/sip/QtQuick/qquicktextdocument.sip0000644000076500000240000000233613245233151022336 0ustar philstaff00000000000000// qquicktextdocument.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QQuickTextDocument : QObject { %TypeHeaderCode #include %End public: QQuickTextDocument(QQuickItem *parent /TransferThis/); QTextDocument *textDocument() const; private: QQuickTextDocument(const QQuickTextDocument &); }; %End PyQt5_gpl-5.10.1/sip/QtQuick/qquickview.sip0000644000076500000240000000440213245233151020561 0ustar philstaff00000000000000// qquickview.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickView : QQuickWindow { %TypeHeaderCode #include %End public: explicit QQuickView(QWindow *parent /TransferThis/ = 0); QQuickView(QQmlEngine *engine, QWindow *parent /TransferThis/); QQuickView(const QUrl &source, QWindow *parent /TransferThis/ = 0); virtual ~QQuickView() /ReleaseGIL/; QUrl source() const; QQmlEngine *engine() const; QQmlContext *rootContext() const; QQuickItem *rootObject() const; enum ResizeMode { SizeViewToRootObject, SizeRootObjectToView, }; QQuickView::ResizeMode resizeMode() const; void setResizeMode(QQuickView::ResizeMode); enum Status { Null, Ready, Loading, Error, }; QQuickView::Status status() const; QList errors() const; QSize initialSize() const; public slots: void setSource(const QUrl &) /ReleaseGIL/; signals: void statusChanged(QQuickView::Status); protected: virtual void resizeEvent(QResizeEvent *); virtual void timerEvent(QTimerEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); private: QQuickView(const QQuickView &); }; PyQt5_gpl-5.10.1/sip/QtQuick/qquickwindow.sip0000644000076500000240000001770613245233151021131 0ustar philstaff00000000000000// qquickwindow.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickWindow : QWindow { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { #if QT_VERSION >= 0x050400 {sipName_QSGEngine, &sipType_QSGEngine, -1, 1}, #else {0, 0, -1, 1}, #endif {sipName_QQuickItem, &sipType_QQuickItem, 11, 2}, #if QT_VERSION >= 0x050400 {sipName_QQuickItemGrabResult, &sipType_QQuickItemGrabResult, -1, 3}, #else {0, 0, -1, 3}, #endif {sipName_QSGTexture, &sipType_QSGTexture, 13, 4}, #if QT_VERSION >= 0x050100 {sipName_QQuickTextDocument, &sipType_QQuickTextDocument, -1, 5}, #else {0, 0, -1, 5}, #endif #if QT_VERSION >= 0x050400 {sipName_QSGAbstractRenderer, &sipType_QSGAbstractRenderer, -1, 6}, #else {0, 0, -1, 6}, #endif #if QT_VERSION >= 0x050600 {sipName_QQuickImageResponse, &sipType_QQuickImageResponse, -1, 7}, #else {0, 0, -1, 7}, #endif {sipName_QQuickTextureFactory, &sipType_QQuickTextureFactory, -1, 8}, #if QT_VERSION >= 0x050400 {sipName_QQuickRenderControl, &sipType_QQuickRenderControl, -1, 9}, #else {0, 0, -1, 9}, #endif {sipName_QSGTextureProvider, &sipType_QSGTextureProvider, -1, 10}, {sipName_QQuickWindow, &sipType_QQuickWindow, 14, -1}, #if QT_VERSION >= 0x050200 {sipName_QQuickFramebufferObject, &sipType_QQuickFramebufferObject, -1, 12}, #else {0, 0, -1, 12}, #endif {sipName_QQuickPaintedItem, &sipType_QQuickPaintedItem, -1, -1}, {sipName_QSGDynamicTexture, &sipType_QSGDynamicTexture, -1, -1}, {sipName_QQuickView, &sipType_QQuickView, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum CreateTextureOption { TextureHasAlphaChannel, TextureHasMipmaps, TextureOwnsGLTexture, %If (Qt_5_2_0 -) TextureCanUseAtlas, %End %If (Qt_5_6_0 -) TextureIsOpaque, %End }; typedef QFlags CreateTextureOptions; %If (Qt_5_6_1 -) explicit QQuickWindow(QWindow *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QQuickWindow(QWindow *parent /TransferThis/ = 0); %End virtual ~QQuickWindow() /ReleaseGIL/; QQuickItem *contentItem() const; QQuickItem *activeFocusItem() const; virtual QObject *focusObject() const; QQuickItem *mouseGrabberItem() const; bool sendEvent(QQuickItem *, QEvent *); QImage grabWindow() /ReleaseGIL/; void setRenderTarget(QOpenGLFramebufferObject *fbo); QOpenGLFramebufferObject *renderTarget() const; void setRenderTarget(uint fboId, const QSize &size); uint renderTargetId() const; QSize renderTargetSize() const; QQmlIncubationController *incubationController() const; QSGTexture *createTextureFromImage(const QImage &image) const /Factory/; %If (Qt_5_2_0 -) QSGTexture *createTextureFromImage(const QImage &image, QQuickWindow::CreateTextureOptions options) const /Factory/; %End QSGTexture *createTextureFromId(uint id, const QSize &size, QQuickWindow::CreateTextureOptions options = QQuickWindow::CreateTextureOption(0)) const /Factory/; void setClearBeforeRendering(bool enabled); bool clearBeforeRendering() const; void setColor(const QColor &color); QColor color() const; void setPersistentOpenGLContext(bool persistent); bool isPersistentOpenGLContext() const; void setPersistentSceneGraph(bool persistent); bool isPersistentSceneGraph() const; QOpenGLContext *openglContext() const; signals: void frameSwapped(); void sceneGraphInitialized(); void sceneGraphInvalidated(); void beforeSynchronizing(); void beforeRendering(); void afterRendering(); void colorChanged(const QColor &); public slots: void update(); void releaseResources(); protected: virtual void exposeEvent(QExposeEvent *); virtual void resizeEvent(QResizeEvent *); virtual void showEvent(QShowEvent *); virtual void hideEvent(QHideEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual bool event(QEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void wheelEvent(QWheelEvent *); public: %If (Qt_5_1_0 -) static bool hasDefaultAlphaBuffer(); %End %If (Qt_5_1_0 -) static void setDefaultAlphaBuffer(bool useAlpha); %End signals: %If (Qt_5_1_0 -) void closing(QQuickCloseEvent *close); %End %If (Qt_5_1_0 -) void activeFocusItemChanged(); %End public: %If (Qt_5_2_0 -) void resetOpenGLState(); %End %If (Qt_5_3_0 -) enum SceneGraphError { ContextNotAvailable, }; %End signals: %If (Qt_5_3_0 -) void openglContextCreated(QOpenGLContext *context); %End %If (Qt_5_3_0 -) void afterSynchronizing(); %End %If (Qt_5_3_0 -) void afterAnimating(); %End %If (Qt_5_3_0 -) void sceneGraphAboutToStop(); %End %If (Qt_5_3_0 -) void sceneGraphError(QQuickWindow::SceneGraphError error, const QString &message); %End public: %If (Qt_5_4_0 -) enum RenderStage { BeforeSynchronizingStage, AfterSynchronizingStage, BeforeRenderingStage, AfterRenderingStage, AfterSwapStage, %If (Qt_5_6_0 -) NoStage, %End }; %End %If (Qt_5_4_0 -) void scheduleRenderJob(QRunnable *job /Transfer/, QQuickWindow::RenderStage schedule) /ReleaseGIL/; %End %If (Qt_5_4_0 -) qreal effectiveDevicePixelRatio() const; %End %If (Qt_5_5_0 -) bool isSceneGraphInitialized() const; %End %If (Qt_5_8_0 -) QSGRendererInterface *rendererInterface() const; %End %If (Qt_5_8_0 -) static void setSceneGraphBackend(QSGRendererInterface::GraphicsApi api); %End %If (Qt_5_8_0 -) static void setSceneGraphBackend(const QString &backend); %End %If (Qt_5_8_0 -) QSGRectangleNode *createRectangleNode() const /Factory/; %End %If (Qt_5_8_0 -) QSGImageNode *createImageNode() const /Factory/; %End %If (Qt_5_9_0 -) static QString sceneGraphBackend(); %End %If (Qt_5_10_0 -) enum TextRenderType { QtTextRendering, NativeTextRendering, }; %End %If (Qt_5_10_0 -) static QQuickWindow::TextRenderType textRenderType(); %End %If (Qt_5_10_0 -) static void setTextRenderType(QQuickWindow::TextRenderType renderType); %End private: QQuickWindow(const QQuickWindow &); }; %If (Qt_5_1_0 -) class QQuickCloseEvent; %End %ModuleHeaderCode #include "qpyquick_api.h" %End %PostInitialisationCode qpyquick_post_init(); %End PyQt5_gpl-5.10.1/sip/QtQuick/qsgabstractrenderer.sip0000644000076500000240000000415113245233151022437 0ustar philstaff00000000000000// qsgabstractrenderer.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QSGAbstractRenderer : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum ClearModeBit { ClearColorBuffer, ClearDepthBuffer, ClearStencilBuffer, }; typedef QFlags ClearMode; virtual ~QSGAbstractRenderer(); void setDeviceRect(const QRect &rect); void setDeviceRect(const QSize &size); QRect deviceRect() const; void setViewportRect(const QRect &rect); void setViewportRect(const QSize &size); QRect viewportRect() const; void setProjectionMatrixToRect(const QRectF &rect); void setProjectionMatrix(const QMatrix4x4 &matrix); QMatrix4x4 projectionMatrix() const; void setClearColor(const QColor &color); QColor clearColor() const; void setClearMode(QSGAbstractRenderer::ClearMode mode); QSGAbstractRenderer::ClearMode clearMode() const; virtual void renderScene(GLuint fboId = 0) = 0; signals: void sceneGraphChanged(); }; %End %If (Qt_5_4_0 -) QFlags operator|(QSGAbstractRenderer::ClearModeBit f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtQuick/qsgengine.sip0000644000076500000240000000415213245233151020353 0ustar philstaff00000000000000// qsgengine.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QSGEngine : QObject { %TypeHeaderCode #include %End public: enum CreateTextureOption { TextureHasAlphaChannel, TextureOwnsGLTexture, TextureCanUseAtlas, %If (Qt_5_6_0 -) TextureIsOpaque, %End }; typedef QFlags CreateTextureOptions; %If (Qt_5_6_1 -) explicit QSGEngine(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_6_1) QSGEngine(QObject *parent /TransferThis/ = 0); %End virtual ~QSGEngine(); void initialize(QOpenGLContext *context); void invalidate(); QSGAbstractRenderer *createRenderer() const; QSGTexture *createTextureFromImage(const QImage &image, QSGEngine::CreateTextureOptions options = QSGEngine::CreateTextureOption(0)) const /Factory/; QSGTexture *createTextureFromId(uint id, const QSize &size, QSGEngine::CreateTextureOptions options = QSGEngine::CreateTextureOption(0)) const /Factory/; %If (Qt_5_8_0 -) QSGRendererInterface *rendererInterface() const; %End %If (Qt_5_8_0 -) QSGRectangleNode *createRectangleNode() const /Factory/; %End %If (Qt_5_8_0 -) QSGImageNode *createImageNode() const /Factory/; %End }; %End PyQt5_gpl-5.10.1/sip/QtQuick/qsgflatcolormaterial.sip0000644000076500000240000000246613245233151022620 0ustar philstaff00000000000000// qsgflatcolormaterial.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGFlatColorMaterial : QSGMaterial { %TypeHeaderCode #include %End public: QSGFlatColorMaterial(); virtual QSGMaterialType *type() const; virtual QSGMaterialShader *createShader() const /Factory/; void setColor(const QColor &color); const QColor &color() const; virtual int compare(const QSGMaterial *other) const; }; PyQt5_gpl-5.10.1/sip/QtQuick/qsggeometry.sip0000644000076500000240000002755713245233151020757 0ustar philstaff00000000000000// qsggeometry.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGGeometry /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: // Convenient primitives and drawing modes. enum /NoScope/ { GL_BYTE, %If (PyQt_Desktop_OpenGL) GL_DOUBLE, %End GL_FLOAT, GL_INT }; enum /NoScope/ { GL_POINTS, GL_LINES, GL_LINE_LOOP, GL_LINE_STRIP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN }; struct Attribute { %TypeHeaderCode #include %End int position; int tupleSize; int type; uint isVertexCoordinate; %If (Qt_5_8_0 -) QSGGeometry::AttributeType attributeType; %End static QSGGeometry::Attribute create(int pos, int tupleSize, int primitiveType, bool isPosition = false) /Factory/; %If (Qt_5_8_0 -) static QSGGeometry::Attribute createWithAttributeType(int pos, int tupleSize, int primitiveType, QSGGeometry::AttributeType attributeType) /Factory/; %End }; struct AttributeSet /NoDefaultCtors/ { %TypeHeaderCode #include #include %End AttributeSet(SIP_PYOBJECT attributes /TypeHint="Iterable[QSGGeometry.Attribute]"/, int stride = 0); %MethodCode PyObject *iter = PyObject_GetIter(a0); if (!iter #if PY_MAJOR_VERSION < 3 || PyString_Check(a0) #endif || PyUnicode_Check(a0)) { Py_XDECREF(iter); PyErr_SetString(PyExc_TypeError, "iterable object expected"); sipError = sipErrorContinue; } else { QVector attrs; int stride = 0; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) sipError = sipErrorFail; break; } int state, is_err = 0; QSGGeometry::Attribute *attr; attr = reinterpret_cast( sipForceConvertToType(itm, sipType_QSGGeometry_Attribute, 0, SIP_NOT_NONE, &state, &is_err)); if (is_err) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QSGGeometry.Attribute' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); sipError = sipErrorFail; break; } // Calculate the stride if there no explicit one. if (a1 <= 0) { int size; switch (attr->type) { case GL_BYTE: size = sizeof (qint8); break; #if defined(SIPFeature_PyQt_Desktop_OpenGL) #if GL_DOUBLE != GL_FLOAT case GL_DOUBLE: size = sizeof (double); break; #endif #endif case GL_FLOAT: size = sizeof (float); break; case GL_INT: size = sizeof (qint32); break; default: size = 0; } if (!size) { PyErr_Format(PyExc_TypeError, "index %zd has an unsupported primitive type", i); sipReleaseType(attr, sipType_QSGGeometry_Attribute, state); Py_DECREF(itm); sipError = sipErrorFail; break; } stride += attr->tupleSize * size; } attrs.append(*attr); sipReleaseType(attr, sipType_QSGGeometry_Attribute, state); Py_DECREF(itm); } Py_DECREF(iter); if (sipError == sipErrorNone) { if (attrs.isEmpty()) { PyErr_SetString(PyExc_TypeError, "no attributes defined"); sipError = sipErrorFail; } else { PyObject *bytes = SIPBytes_FromStringAndSize( reinterpret_cast(attrs.data()), sizeof (QSGGeometry::Attribute) * attrs.size()); if (!bytes) { sipError = sipErrorFail; } else { sipCpp = new QSGGeometry::AttributeSet; sipCpp->count = attrs.size(); sipCpp->stride = (a1 > 0 ? a1 : stride); sipCpp->attributes = reinterpret_cast( SIPBytes_AsString(bytes)); sipSetUserObject(sipSelf, bytes); } } } } %End int count; int stride; const QSGGeometry::Attribute *attributes /TypeHint="sip.array[QSGGeometry.Attribute]"/ { %GetCode sipPy = sipConvertToTypedArray((void *)sipCpp->attributes, sipType_QSGGeometry_Attribute, "iiiI", sizeof (QSGGeometry::Attribute), sipCpp->count, SIP_READ_ONLY); %End %SetCode sipErr = 1; PyErr_SetString(PyExc_ValueError, "array is read-only"); %End }; }; struct Point2D { %TypeHeaderCode #include %End float x; float y; void set(float nx, float ny); }; struct TexturedPoint2D { %TypeHeaderCode #include %End float x; float y; float tx; float ty; void set(float nx, float ny, float ntx, float nty); }; struct ColoredPoint2D { %TypeHeaderCode #include %End float x; float y; unsigned char r /PyInt/; unsigned char g /PyInt/; unsigned char b /PyInt/; unsigned char a /PyInt/; void set(float nx, float ny, uchar nr /PyInt/, uchar ng /PyInt/, uchar nb /PyInt/, uchar na /PyInt/); }; static const QSGGeometry::AttributeSet &defaultAttributes_Point2D() /NoCopy/; static const QSGGeometry::AttributeSet &defaultAttributes_TexturedPoint2D() /NoCopy/; static const QSGGeometry::AttributeSet &defaultAttributes_ColoredPoint2D() /NoCopy/; enum DataPattern { AlwaysUploadPattern, StreamPattern, DynamicPattern, StaticPattern, }; QSGGeometry(const QSGGeometry::AttributeSet &attribs /KeepReference/, int vertexCount, int indexCount = 0, int indexType = GL_UNSIGNED_SHORT); virtual ~QSGGeometry(); void setDrawingMode(GLenum mode); GLenum drawingMode() const; void allocate(int vertexCount, int indexCount = 0); int vertexCount() const; void *vertexData(); int indexType() const; int indexCount() const; void *indexData(); int attributeCount() const; SIP_PYOBJECT attributes() const /TypeHint="sip.array[QSGGeometry.Attribute]"/; %MethodCode sipRes = sipConvertToTypedArray((void *)sipCpp->attributes(), sipType_QSGGeometry_Attribute, "iiiI", sizeof (QSGGeometry::Attribute), sipCpp->attributeCount(), SIP_READ_ONLY); %End int sizeOfVertex() const; static void updateRectGeometry(QSGGeometry *g, const QRectF &rect); static void updateTexturedRectGeometry(QSGGeometry *g, const QRectF &rect, const QRectF &sourceRect); void setIndexDataPattern(QSGGeometry::DataPattern p); QSGGeometry::DataPattern indexDataPattern() const; void setVertexDataPattern(QSGGeometry::DataPattern p); QSGGeometry::DataPattern vertexDataPattern() const; void markIndexDataDirty(); void markVertexDataDirty(); float lineWidth() const; void setLineWidth(float w); SIP_PYOBJECT indexDataAsUInt() /TypeHint="sip.array[int]"/; %MethodCode sipRes = sipConvertToArray(sipCpp->indexDataAsUInt(), "I", sipCpp->indexCount(), 0); %End SIP_PYOBJECT indexDataAsUShort() /TypeHint="sip.array[int]"/; %MethodCode sipRes = sipConvertToArray(sipCpp->indexDataAsUShort(), "H", sipCpp->indexCount(), 0); %End SIP_PYOBJECT vertexDataAsPoint2D() /TypeHint="sip.array[QSGGeometry.Point2D]"/; %MethodCode sipRes = sipConvertToTypedArray(sipCpp->vertexDataAsPoint2D(), sipType_QSGGeometry_Point2D, "ff", sizeof (QSGGeometry::Point2D), sipCpp->vertexCount(), 0); %End SIP_PYOBJECT vertexDataAsTexturedPoint2D() /TypeHint="sip.array[QSGGeometry.TexturedPoint2D]"/; %MethodCode sipRes = sipConvertToTypedArray(sipCpp->vertexDataAsTexturedPoint2D(), sipType_QSGGeometry_TexturedPoint2D, "ffff", sizeof (QSGGeometry::TexturedPoint2D), sipCpp->vertexCount(), 0); %End SIP_PYOBJECT vertexDataAsColoredPoint2D() /TypeHint="sip.array[QSGGeometry.ColoredPoint2D]"/; %MethodCode sipRes = sipConvertToTypedArray(sipCpp->vertexDataAsColoredPoint2D(), sipType_QSGGeometry_ColoredPoint2D, "ffbbbb", sizeof (QSGGeometry::ColoredPoint2D), sipCpp->vertexCount(), 0); %End int sizeOfIndex() const; %If (Qt_5_8_0 -) enum AttributeType { UnknownAttribute, PositionAttribute, ColorAttribute, TexCoordAttribute, TexCoord1Attribute, TexCoord2Attribute, }; %End %If (Qt_5_8_0 -) enum DrawingMode { DrawPoints, DrawLines, DrawLineLoop, DrawLineStrip, DrawTriangles, DrawTriangleStrip, DrawTriangleFan, }; %End %If (Qt_5_8_0 -) enum Type { ByteType, UnsignedByteType, ShortType, UnsignedShortType, IntType, UnsignedIntType, FloatType, }; %End %If (Qt_5_8_0 -) static void updateColoredRectGeometry(QSGGeometry *g, const QRectF &rect); %End }; PyQt5_gpl-5.10.1/sip/QtQuick/qsgimagenode.sip0000644000076500000240000000540413245233151021037 0ustar philstaff00000000000000// qsgimagenode.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_8_0 -) class QSGImageNode : QSGGeometryNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QSGImageNode(); virtual void setRect(const QRectF &rect) = 0; void setRect(qreal x, qreal y, qreal w, qreal h); virtual QRectF rect() const = 0; virtual void setSourceRect(const QRectF &r) = 0; void setSourceRect(qreal x, qreal y, qreal w, qreal h); virtual QRectF sourceRect() const = 0; virtual void setTexture(QSGTexture *texture /GetWrapper/) = 0; %MethodCode sipCpp->setTexture(a0); if (sipCpp->ownsTexture()) sipTransferTo(a0Wrapper, sipSelf); %End virtual QSGTexture *texture() const = 0; virtual void setFiltering(QSGTexture::Filtering filtering) = 0; virtual QSGTexture::Filtering filtering() const = 0; virtual void setMipmapFiltering(QSGTexture::Filtering filtering) = 0; virtual QSGTexture::Filtering mipmapFiltering() const = 0; enum TextureCoordinatesTransformFlag { NoTransform, MirrorHorizontally, MirrorVertically, }; typedef QFlags TextureCoordinatesTransformMode; virtual void setTextureCoordinatesTransform(QSGImageNode::TextureCoordinatesTransformMode mode) = 0; virtual QSGImageNode::TextureCoordinatesTransformMode textureCoordinatesTransform() const = 0; virtual void setOwnsTexture(bool owns) = 0; virtual bool ownsTexture() const = 0; static void rebuildGeometry(QSGGeometry *g, QSGTexture *texture, const QRectF &rect, QRectF sourceRect, QSGImageNode::TextureCoordinatesTransformMode texCoordMode); }; %End %If (Qt_5_8_0 -) QFlags operator|(QSGImageNode::TextureCoordinatesTransformFlag f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtQuick/qsgmaterial.sip0000644000076500000240000001614413245233151020710 0ustar philstaff00000000000000// qsgmaterial.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGMaterialShader /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: class RenderState { %TypeHeaderCode #include %End public: enum DirtyState { DirtyMatrix, DirtyOpacity, %If (Qt_5_8_0 -) DirtyCachedMaterialData, %End %If (Qt_5_8_0 -) DirtyAll, %End }; typedef QFlags DirtyStates; QSGMaterialShader::RenderState::DirtyStates dirtyStates() const; bool isMatrixDirty() const; bool isOpacityDirty() const; float opacity() const; QMatrix4x4 combinedMatrix() const; QMatrix4x4 modelViewMatrix() const; QRect viewportRect() const; QRect deviceRect() const; float determinant() const; QOpenGLContext *context() const; %If (Qt_5_1_0 -) QMatrix4x4 projectionMatrix() const; %End %If (Qt_5_1_0 -) float devicePixelRatio() const; %End %If (Qt_5_8_0 -) bool isCachedMaterialDataDirty() const; %End }; QSGMaterialShader(); virtual ~QSGMaterialShader(); virtual void activate(); virtual void deactivate(); virtual void updateState(const QSGMaterialShader::RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial); virtual SIP_PYOBJECT attributeNames() const = 0 /TypeHint="List[str]"/ [const char * const * ()]; %MethodCode const char * const *names = sipCpp->attributeNames(); Py_ssize_t nr_names = 0; if (names) while (names[nr_names]) ++nr_names; sipRes = PyList_New(nr_names); if (!sipRes) sipIsErr = 1; else for (Py_ssize_t i = 0; i < nr_names; ++i) { const char *name = names[i]; PyObject *el; #if PY_MAJOR_VERSION >= 3 el = PyUnicode_DecodeASCII(name, strlen(name), 0); #else el = PyString_FromString(name); #endif if (!el) { Py_DECREF(sipRes); sipIsErr = 1; break; } PyList_SetItem(sipRes, i, el); } %End %VirtualCatcherCode PyObject *names = sipCallMethod(&sipIsErr, sipMethod, ""); if (names) { sipRes = qtquick_anc_get_attr_names(sipPySelf, sipMethod, names); if (!sipRes) sipIsErr = 1; Py_DECREF(names); } %End QOpenGLShaderProgram *program(); protected: virtual void compile(); virtual void initialize(); %If (Qt_5_2_0 -) virtual const char *vertexShader() const; %End %If (- Qt_5_2_0) virtual const char *vertexShader() const = 0; %End %If (Qt_5_2_0 -) virtual const char *fragmentShader() const; %End %If (- Qt_5_2_0) virtual const char *fragmentShader() const = 0; %End %If (Qt_5_2_0 -) void setShaderSourceFile(QOpenGLShader::ShaderType type, const QString &sourceFile); %End %If (Qt_5_2_0 -) void setShaderSourceFiles(QOpenGLShader::ShaderType type, const QStringList &sourceFiles); %End private: QSGMaterialShader(const QSGMaterialShader &); }; struct QSGMaterialType { %TypeHeaderCode #include %End }; class QSGMaterial /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum Flag { Blending, RequiresDeterminant, RequiresFullMatrixExceptTranslate, RequiresFullMatrix, %If (Qt_5_2_0 -) CustomCompileStep, %End }; typedef QFlags Flags; QSGMaterial(); virtual ~QSGMaterial(); virtual QSGMaterialType *type() const = 0; virtual QSGMaterialShader *createShader() const = 0 /Factory/; virtual int compare(const QSGMaterial *other) const; QSGMaterial::Flags flags() const; void setFlag(QSGMaterial::Flags flags, bool enabled = true); private: QSGMaterial(const QSGMaterial &); }; QFlags operator|(QSGMaterial::Flag f1, QFlags f2); QFlags operator|(QSGMaterialShader::RenderState::DirtyState f1, QFlags f2); %ModuleCode // Release any attribute names to the heap. static void qtquick_anc_release(char **attr_names) { if (attr_names) { for (int i = 0; attr_names[i]; ++i) delete[] attr_names[i]; delete[] attr_names; } } // The destructor for the attribute names PyCapsule. static void qtquick_anc_destructor(PyObject *cap) { qtquick_anc_release( reinterpret_cast(PyCapsule_GetPointer(cap, NULL))); } // Get the attribute names or 0 if there was an error. static char **qtquick_anc_get_attr_names(sipSimpleWrapper *pySelf, PyObject *method, PyObject *attr_names_obj) { // Dispose of any existing names. Py_XDECREF(sipGetUserObject(pySelf)); sipSetUserObject(pySelf, NULL); // Convert the new names. if (!PyList_Check(attr_names_obj)) { sipBadCatcherResult(method); return 0; } char **names = new char *[PyList_Size(attr_names_obj) + 1]; for (Py_ssize_t i = 0; i < PyList_Size(attr_names_obj); ++i) { char *name; PyObject *el = PyList_GetItem(attr_names_obj, i); #if PY_MAJOR_VERSION >= 3 PyObject *name_obj = PyUnicode_AsASCIIString(el); name = (name_obj ? PyBytes_AsString(name_obj) : 0); #else name = PyString_AsString(el); #endif if (!name) { names[i] = 0; qtquick_anc_release(names); sipBadCatcherResult(method); return 0; } char *name_copy = new char[strlen(name) + 1]; strcpy(name_copy, name); names[i] = name_copy; #if PY_MAJOR_VERSION >= 3 Py_DECREF(name_obj); #endif } names[PyList_Size(attr_names_obj)] = 0; sipSetUserObject(pySelf, PyCapsule_New(names, NULL, qtquick_anc_destructor)); if (!sipGetUserObject(pySelf)) { qtquick_anc_release(names); return 0; } return names; } %End PyQt5_gpl-5.10.1/sip/QtQuick/qsgnode.sip0000644000076500000240000002120713245233151020033 0ustar philstaff00000000000000// qsgnode.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGNode /NoDefaultCtors,Supertype=sip.wrapper/ { %TypeHeaderCode #include %End %TypeCode static sipErrorState qsgnode_handle_flags(QSGNode *node, PyObject *self, QSGNode::Flags old_flags) { QSGNode::Flags new_flags = node->flags(); if (node->parent()) { if ((old_flags & QSGNode::OwnedByParent) != (new_flags & QSGNode::OwnedByParent)) { if (old_flags & QSGNode::OwnedByParent) { sipTransferBack(self); } else { PyObject *parent = sipConvertFromType(node->parent(), sipType_QSGNode, 0); if (!parent) return sipErrorFail; sipTransferTo(self, parent); Py_DECREF(parent); } } } QSGNode::NodeType ntype = node->type(); if (ntype == QSGNode::BasicNodeType || ntype == QSGNode::GeometryNodeType || ntype == QSGNode::ClipNodeType) { QSGBasicGeometryNode *bg_node = (QSGBasicGeometryNode *)node; if (bg_node->geometry()) { if ((old_flags & QSGNode::OwnsGeometry) != (new_flags & QSGNode::OwnsGeometry)) { PyObject *geom = sipConvertFromType(bg_node->geometry(), sipType_QSGGeometry, 0); if (!geom) return sipErrorFail; if (old_flags & QSGNode::OwnsGeometry) sipTransferBack(geom); else sipTransferTo(geom, self); Py_DECREF(geom); } } } if (ntype == QSGNode::GeometryNodeType) { QSGGeometryNode *g_node = (QSGGeometryNode *)node; if (g_node->material()) { if ((old_flags & QSGNode::OwnsMaterial) != (new_flags & QSGNode::OwnsMaterial)) { PyObject *mat = sipConvertFromType(g_node->material(), sipType_QSGMaterial, 0); if (!mat) return sipErrorFail; if (old_flags & QSGNode::OwnsMaterial) sipTransferBack(mat); else sipTransferTo(mat, self); Py_DECREF(mat); } } if (g_node->opaqueMaterial()) { if ((old_flags & QSGNode::OwnsOpaqueMaterial) != (new_flags & QSGNode::OwnsOpaqueMaterial)) { PyObject *omat = sipConvertFromType(g_node->opaqueMaterial(), sipType_QSGMaterial, 0); if (!omat) return sipErrorFail; if (old_flags & QSGNode::OwnsOpaqueMaterial) sipTransferBack(omat); else sipTransferTo(omat, self); Py_DECREF(omat); } } } return sipErrorNone; } %End %ConvertToSubClassCode switch (sipCpp->type()) { case QSGNode::BasicNodeType: sipType = sipType_QSGBasicGeometryNode; break; case QSGNode::GeometryNodeType: sipType = sipType_QSGGeometryNode; break; case QSGNode::TransformNodeType: sipType = sipType_QSGClipNode; break; case QSGNode::ClipNodeType: sipType = sipType_QSGTransformNode; break; case QSGNode::OpacityNodeType: sipType = sipType_QSGOpacityNode; break; default: sipType = 0; } %End public: enum NodeType { BasicNodeType, GeometryNodeType, TransformNodeType, ClipNodeType, OpacityNodeType, }; enum Flag { OwnedByParent, UsePreprocess, OwnsGeometry, OwnsMaterial, OwnsOpaqueMaterial, }; typedef QFlags Flags; enum DirtyStateBit { DirtyMatrix, DirtyNodeAdded, DirtyNodeRemoved, DirtyGeometry, DirtyMaterial, DirtyOpacity, }; typedef QFlags DirtyState; QSGNode(); virtual ~QSGNode(); QSGNode *parent() const; void removeChildNode(QSGNode *node); void removeAllChildNodes(); void prependChildNode(QSGNode *node /GetWrapper/); %MethodCode sipCpp->prependChildNode(a0); if (a0->flags() & QSGNode::OwnedByParent) sipTransferTo(a0Wrapper, sipSelf); %End void appendChildNode(QSGNode *node /GetWrapper/); %MethodCode sipCpp->appendChildNode(a0); if (a0->flags() & QSGNode::OwnedByParent) sipTransferTo(a0Wrapper, sipSelf); %End void insertChildNodeBefore(QSGNode *node /GetWrapper/, QSGNode *before); %MethodCode sipCpp->insertChildNodeBefore(a0, a1); if (a0->flags() & QSGNode::OwnedByParent) sipTransferTo(a0Wrapper, sipSelf); %End void insertChildNodeAfter(QSGNode *node /GetWrapper/, QSGNode *after); %MethodCode sipCpp->insertChildNodeAfter(a0, a1); if (a0->flags() & QSGNode::OwnedByParent) sipTransferTo(a0Wrapper, sipSelf); %End int childCount() const /__len__/; QSGNode *childAtIndex(int i) const; QSGNode *firstChild() const; QSGNode *lastChild() const; QSGNode *nextSibling() const; QSGNode *previousSibling() const; QSGNode::NodeType type() const; void markDirty(QSGNode::DirtyState bits); virtual bool isSubtreeBlocked() const; QSGNode::Flags flags() const; void setFlag(QSGNode::Flag, bool enabled = true); %MethodCode QSGNode::Flags old_flags = sipCpp->flags(); sipCpp->setFlag(a0, a1); sipError = qsgnode_handle_flags(sipCpp, sipSelf, old_flags); %End void setFlags(QSGNode::Flags, bool enabled = true); virtual void preprocess(); }; class QSGBasicGeometryNode : QSGNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QSGBasicGeometryNode(); void setGeometry(QSGGeometry *geometry /GetWrapper/); %MethodCode sipCpp->setGeometry(a0); if (sipCpp->flags() & QSGNode::OwnsGeometry) sipTransferTo(a0Wrapper, sipSelf); %End QSGGeometry *geometry(); }; class QSGGeometryNode : QSGBasicGeometryNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QSGGeometryNode(); virtual ~QSGGeometryNode(); void setMaterial(QSGMaterial *material /GetWrapper/); %MethodCode sipCpp->setMaterial(a0); if (sipCpp->flags() & QSGNode::OwnsMaterial) sipTransferTo(a0Wrapper, sipSelf); %End QSGMaterial *material() const; void setOpaqueMaterial(QSGMaterial *material /GetWrapper/); %MethodCode sipCpp->setOpaqueMaterial(a0); if (sipCpp->flags() & QSGNode::OwnsOpaqueMaterial) sipTransferTo(a0Wrapper, sipSelf); %End QSGMaterial *opaqueMaterial() const; }; class QSGClipNode : QSGBasicGeometryNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QSGClipNode(); virtual ~QSGClipNode(); void setIsRectangular(bool rectHint); bool isRectangular() const; void setClipRect(const QRectF &); QRectF clipRect() const; }; class QSGTransformNode : QSGNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QSGTransformNode(); virtual ~QSGTransformNode(); void setMatrix(const QMatrix4x4 &matrix); const QMatrix4x4 &matrix() const; }; class QSGOpacityNode : QSGNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QSGOpacityNode(); virtual ~QSGOpacityNode(); void setOpacity(qreal opacity); qreal opacity() const; }; QFlags operator|(QSGNode::DirtyStateBit f1, QFlags f2); QFlags operator|(QSGNode::Flag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtQuick/qsgrectanglenode.sip0000644000076500000240000000252713245233151021724 0ustar philstaff00000000000000// qsgrectanglenode.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_8_0 -) class QSGRectangleNode : QSGGeometryNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QSGRectangleNode(); virtual void setRect(const QRectF &rect) = 0; void setRect(qreal x, qreal y, qreal w, qreal h); virtual QRectF rect() const = 0; virtual void setColor(const QColor &color) = 0; virtual QColor color() const = 0; }; %End PyQt5_gpl-5.10.1/sip/QtQuick/qsgrendererinterface.sip0000644000076500000240000000530413245233151022575 0ustar philstaff00000000000000// qsgrendererinterface.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_8_0 -) class QSGRendererInterface /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum GraphicsApi { Unknown, Software, OpenGL, Direct3D12, %If (Qt_5_9_0 -) OpenVG, %End }; enum Resource { DeviceResource, CommandQueueResource, CommandListResource, PainterResource, }; enum ShaderType { UnknownShadingLanguage, GLSL, HLSL, }; enum ShaderCompilationType { RuntimeCompilation, OfflineCompilation, }; typedef QFlags ShaderCompilationTypes; enum ShaderSourceType { ShaderSourceString, ShaderSourceFile, ShaderByteCode, }; typedef QFlags ShaderSourceTypes; virtual ~QSGRendererInterface(); virtual QSGRendererInterface::GraphicsApi graphicsApi() const = 0; virtual void *getResource(QQuickWindow *window, QSGRendererInterface::Resource resource) const; virtual void *getResource(QQuickWindow *window, const char *resource) const; virtual QSGRendererInterface::ShaderType shaderType() const = 0; virtual QSGRendererInterface::ShaderCompilationTypes shaderCompilationType() const = 0; virtual QSGRendererInterface::ShaderSourceTypes shaderSourceType() const = 0; }; %End %If (Qt_5_8_0 -) QFlags operator|(QSGRendererInterface::ShaderCompilationType f1, QFlags f2); %End %If (Qt_5_8_0 -) QFlags operator|(QSGRendererInterface::ShaderSourceType f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtQuick/qsgrendernode.sip0000644000076500000240000000523113245233151021232 0ustar philstaff00000000000000// qsgrendernode.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_8_0 -) class QSGRenderNode : QSGNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum StateFlag { DepthState, StencilState, ScissorState, ColorState, BlendState, CullState, ViewportState, RenderTargetState, }; typedef QFlags StateFlags; enum RenderingFlag { BoundedRectRendering, DepthAwareRendering, OpaqueRendering, }; typedef QFlags RenderingFlags; struct RenderState /NoDefaultCtors/ { %TypeHeaderCode #include %End virtual ~RenderState(); virtual const QMatrix4x4 *projectionMatrix() const = 0; virtual QRect scissorRect() const = 0; virtual bool scissorEnabled() const = 0; virtual int stencilValue() const = 0; virtual bool stencilEnabled() const = 0; virtual const QRegion *clipRegion() const = 0; virtual void *get(const char *state) const; }; virtual ~QSGRenderNode(); virtual QSGRenderNode::StateFlags changedStates() const; virtual void render(const QSGRenderNode::RenderState *state) = 0; virtual void releaseResources(); virtual QSGRenderNode::RenderingFlags flags() const; virtual QRectF rect() const; const QMatrix4x4 *matrix() const; const QSGClipNode *clipList() const; qreal inheritedOpacity() const; }; %End %If (Qt_5_8_0 -) QFlags operator|(QSGRenderNode::StateFlag f1, QFlags f2); %End %If (Qt_5_8_0 -) QFlags operator|(QSGRenderNode::RenderingFlag f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtQuick/qsgsimplerectnode.sip0000644000076500000240000000251213245233151022121 0ustar philstaff00000000000000// qsgsimplerectnode.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGSimpleRectNode : QSGGeometryNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QSGSimpleRectNode(const QRectF &rect, const QColor &color); QSGSimpleRectNode(); void setRect(const QRectF &rect); void setRect(qreal x, qreal y, qreal w, qreal h); QRectF rect() const; void setColor(const QColor &color); QColor color() const; }; PyQt5_gpl-5.10.1/sip/QtQuick/qsgsimpletexturenode.sip0000644000076500000240000000475113245233151022673 0ustar philstaff00000000000000// qsgsimpletexturenode.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGSimpleTextureNode : QSGGeometryNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QSGSimpleTextureNode(); %If (Qt_5_4_0 -) virtual ~QSGSimpleTextureNode(); %End void setRect(const QRectF &rect); void setRect(qreal x, qreal y, qreal w, qreal h); QRectF rect() const; void setTexture(QSGTexture *texture); QSGTexture *texture() const; void setFiltering(QSGTexture::Filtering filtering); QSGTexture::Filtering filtering() const; %If (Qt_5_2_0 -) enum TextureCoordinatesTransformFlag { NoTransform, MirrorHorizontally, MirrorVertically, }; %End %If (Qt_5_2_0 -) typedef QFlags TextureCoordinatesTransformMode; %End %If (Qt_5_2_0 -) void setTextureCoordinatesTransform(QFlags mode); %End %If (Qt_5_2_0 -) QFlags textureCoordinatesTransform() const; %End %If (Qt_5_4_0 -) void setOwnsTexture(bool owns); %End %If (Qt_5_4_0 -) bool ownsTexture() const; %End %If (Qt_5_5_0 -) void setSourceRect(const QRectF &r); %End %If (Qt_5_5_0 -) void setSourceRect(qreal x, qreal y, qreal w, qreal h); %End %If (Qt_5_5_0 -) QRectF sourceRect() const; %End }; %If (Qt_5_2_0 -) QFlags operator|(QSGSimpleTextureNode::TextureCoordinatesTransformFlag f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtQuick/qsgtexture.sip0000644000076500000240000000512113245233151020603 0ustar philstaff00000000000000// qsgtexture.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGTexture : QObject { %TypeHeaderCode #include %End public: QSGTexture(); virtual ~QSGTexture(); enum WrapMode { Repeat, ClampToEdge, %If (Qt_5_10_0 -) MirroredRepeat, %End }; enum Filtering { None, Nearest, Linear, }; virtual int textureId() const = 0; virtual QSize textureSize() const = 0; virtual bool hasAlphaChannel() const = 0; virtual bool hasMipmaps() const = 0; virtual QRectF normalizedTextureSubRect() const; virtual bool isAtlasTexture() const; virtual QSGTexture *removedFromAtlas() const; virtual void bind() = 0; void updateBindOptions(bool force = false); void setMipmapFiltering(QSGTexture::Filtering filter); QSGTexture::Filtering mipmapFiltering() const; void setFiltering(QSGTexture::Filtering filter); QSGTexture::Filtering filtering() const; void setHorizontalWrapMode(QSGTexture::WrapMode hwrap); QSGTexture::WrapMode horizontalWrapMode() const; void setVerticalWrapMode(QSGTexture::WrapMode vwrap); QSGTexture::WrapMode verticalWrapMode() const; QRectF convertToNormalizedSourceRect(const QRectF &rect) const; %If (Qt_5_9_0 -) enum AnisotropyLevel { AnisotropyNone, Anisotropy2x, Anisotropy4x, Anisotropy8x, Anisotropy16x, }; %End %If (Qt_5_9_0 -) void setAnisotropyLevel(QSGTexture::AnisotropyLevel level); %End %If (Qt_5_9_0 -) QSGTexture::AnisotropyLevel anisotropyLevel() const; %End }; class QSGDynamicTexture : QSGTexture { %TypeHeaderCode #include %End public: virtual bool updateTexture() = 0; }; PyQt5_gpl-5.10.1/sip/QtQuick/qsgtexturematerial.sip0000644000076500000240000000416513245233151022331 0ustar philstaff00000000000000// qsgtexturematerial.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGOpaqueTextureMaterial : QSGMaterial { %TypeHeaderCode #include %End public: QSGOpaqueTextureMaterial(); virtual QSGMaterialType *type() const; virtual QSGMaterialShader *createShader() const /Factory/; virtual int compare(const QSGMaterial *other) const; void setTexture(QSGTexture *texture); QSGTexture *texture() const; void setMipmapFiltering(QSGTexture::Filtering filtering); QSGTexture::Filtering mipmapFiltering() const; void setFiltering(QSGTexture::Filtering filtering); QSGTexture::Filtering filtering() const; void setHorizontalWrapMode(QSGTexture::WrapMode mode); QSGTexture::WrapMode horizontalWrapMode() const; void setVerticalWrapMode(QSGTexture::WrapMode mode); QSGTexture::WrapMode verticalWrapMode() const; %If (Qt_5_9_0 -) void setAnisotropyLevel(QSGTexture::AnisotropyLevel level); %End %If (Qt_5_9_0 -) QSGTexture::AnisotropyLevel anisotropyLevel() const; %End }; class QSGTextureMaterial : QSGOpaqueTextureMaterial { %TypeHeaderCode #include %End public: virtual QSGMaterialType *type() const; virtual QSGMaterialShader *createShader() const /Factory/; }; PyQt5_gpl-5.10.1/sip/QtQuick/qsgtextureprovider.sip0000644000076500000240000000220013245233151022351 0ustar philstaff00000000000000// qsgtextureprovider.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGTextureProvider : QObject { %TypeHeaderCode #include %End public: virtual QSGTexture *texture() const = 0 /Factory/; signals: void textureChanged(); }; PyQt5_gpl-5.10.1/sip/QtQuick/qsgvertexcolormaterial.sip0000644000076500000240000000240113245233151023174 0ustar philstaff00000000000000// qsgvertexcolormaterial.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGVertexColorMaterial : QSGMaterial { %TypeHeaderCode #include %End public: QSGVertexColorMaterial(); virtual int compare(const QSGMaterial *other) const; protected: virtual QSGMaterialType *type() const; virtual QSGMaterialShader *createShader() const /Factory/; }; PyQt5_gpl-5.10.1/sip/QtQuick/QtQuickmod.sip0000644000076500000240000000521613245233151020456 0ustar philstaff00000000000000// QtQuickmod.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtQuick, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtQml/QtQmlmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qquickframebufferobject.sip %Include qquickimageprovider.sip %Include qquickitem.sip %Include qquickitemgrabresult.sip %Include qquickpainteditem.sip %Include qquickrendercontrol.sip %Include qquicktextdocument.sip %Include qquickview.sip %Include qquickwindow.sip %Include qsgabstractrenderer.sip %Include qsgengine.sip %Include qsgflatcolormaterial.sip %Include qsggeometry.sip %Include qsgimagenode.sip %Include qsgmaterial.sip %Include qsgnode.sip %Include qsgrectanglenode.sip %Include qsgrendererinterface.sip %Include qsgrendernode.sip %Include qsgsimplerectnode.sip %Include qsgsimpletexturenode.sip %Include qsgtexture.sip %Include qsgtexturematerial.sip %Include qsgtextureprovider.sip %Include qsgvertexcolormaterial.sip PyQt5_gpl-5.10.1/sip/QtQuickWidgets/0000755000076500000240000000000013245233151017203 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtQuickWidgets/qquickwidget.sip0000644000076500000240000000675613245233151022437 0ustar philstaff00000000000000// qquickwidget.sip generated by MetaSIP // // This file is part of the QtQuickWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class QQuickWidget : QWidget { %TypeHeaderCode #include %End %ConvertToSubClassCode sipType = (sipCpp->inherits(sipName_QQuickWidget) ? sipType_QQuickWidget : 0); %End public: explicit QQuickWidget(QWidget *parent /TransferThis/ = 0); QQuickWidget(QQmlEngine *engine, QWidget *parent /TransferThis/); QQuickWidget(const QUrl &source, QWidget *parent /TransferThis/ = 0); virtual ~QQuickWidget(); QUrl source() const; QQmlEngine *engine() const; QQmlContext *rootContext() const; QQuickItem *rootObject() const; enum ResizeMode { SizeViewToRootObject, SizeRootObjectToView, }; QQuickWidget::ResizeMode resizeMode() const; void setResizeMode(QQuickWidget::ResizeMode); enum Status { Null, Ready, Loading, Error, }; QQuickWidget::Status status() const; QList errors() const; virtual QSize sizeHint() const; QSize initialSize() const; void setFormat(const QSurfaceFormat &format); QSurfaceFormat format() const; public slots: void setSource(const QUrl &); signals: void statusChanged(QQuickWidget::Status); void sceneGraphError(QQuickWindow::SceneGraphError error, const QString &message); protected: virtual void resizeEvent(QResizeEvent *); virtual void timerEvent(QTimerEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void showEvent(QShowEvent *); virtual void hideEvent(QHideEvent *); virtual void wheelEvent(QWheelEvent *); virtual bool event(QEvent *); %If (Qt_5_3_1 -) virtual void focusInEvent(QFocusEvent *event); %End %If (Qt_5_3_1 -) virtual void focusOutEvent(QFocusEvent *event); %End %If (Qt_5_5_0 -) virtual void dragEnterEvent(QDragEnterEvent *); %End %If (Qt_5_5_0 -) virtual void dragMoveEvent(QDragMoveEvent *); %End %If (Qt_5_5_0 -) virtual void dragLeaveEvent(QDragLeaveEvent *); %End %If (Qt_5_5_0 -) virtual void dropEvent(QDropEvent *); %End %If (Qt_5_8_0 -) virtual void paintEvent(QPaintEvent *event); %End public: %If (Qt_5_4_0 -) QImage grabFramebuffer() const; %End %If (Qt_5_4_0 -) void setClearColor(const QColor &color); %End %If (Qt_5_5_0 -) QQuickWindow *quickWindow() const; %End private: QQuickWidget(const QQuickWidget &); }; %End PyQt5_gpl-5.10.1/sip/QtQuickWidgets/QtQuickWidgetsmod.sip0000644000076500000240000000403213245233151023327 0ustar philstaff00000000000000// QtQuickWidgetsmod.sip generated by MetaSIP // // This file is part of the QtQuickWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtQuickWidgets, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtQml/QtQmlmod.sip %Import QtQuick/QtQuickmod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qquickwidget.sip PyQt5_gpl-5.10.1/sip/QtSensors/0000755000076500000240000000000013245233151016234 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtSensors/qaccelerometer.sip0000644000076500000240000000403013245233151021741 0ustar philstaff00000000000000// qaccelerometer.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QAccelerometerReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal x() const; void setX(qreal x); qreal y() const; void setY(qreal y); qreal z() const; void setZ(qreal z); }; %End %If (Qt_5_1_0 -) class QAccelerometerFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QAccelerometerReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QAccelerometer : QSensor { %TypeHeaderCode #include %End public: explicit QAccelerometer(QObject *parent /TransferThis/ = 0); virtual ~QAccelerometer(); enum AccelerationMode { Combined, Gravity, User, }; QAccelerometer::AccelerationMode accelerationMode() const; void setAccelerationMode(QAccelerometer::AccelerationMode accelerationMode); QAccelerometerReading *reading() const; signals: void accelerationModeChanged(QAccelerometer::AccelerationMode accelerationMode); private: QAccelerometer(const QAccelerometer &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qaltimeter.sip0000644000076500000240000000312613245233151021122 0ustar philstaff00000000000000// qaltimeter.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QAltimeterReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal altitude() const; void setAltitude(qreal altitude); }; %End %If (Qt_5_1_0 -) class QAltimeterFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QAltimeterReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QAltimeter : QSensor { %TypeHeaderCode #include %End public: explicit QAltimeter(QObject *parent /TransferThis/ = 0); virtual ~QAltimeter(); QAltimeterReading *reading() const; private: QAltimeter(const QAltimeter &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qambientlightsensor.sip0000644000076500000240000000356213245233151023041 0ustar philstaff00000000000000// qambientlightsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QAmbientLightReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum LightLevel { Undefined, Dark, Twilight, Light, Bright, Sunny, }; QAmbientLightReading::LightLevel lightLevel() const; void setLightLevel(QAmbientLightReading::LightLevel lightLevel); }; %End %If (Qt_5_1_0 -) class QAmbientLightFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QAmbientLightReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QAmbientLightSensor : QSensor { %TypeHeaderCode #include %End public: explicit QAmbientLightSensor(QObject *parent /TransferThis/ = 0); virtual ~QAmbientLightSensor(); QAmbientLightReading *reading() const; private: QAmbientLightSensor(const QAmbientLightSensor &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qambienttemperaturesensor.sip0000644000076500000240000000341213245233151024261 0ustar philstaff00000000000000// qambienttemperaturesensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QAmbientTemperatureReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal temperature() const; void setTemperature(qreal temperature); }; %End %If (Qt_5_1_0 -) class QAmbientTemperatureFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QAmbientTemperatureReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QAmbientTemperatureSensor : QSensor { %TypeHeaderCode #include %End public: explicit QAmbientTemperatureSensor(QObject *parent /TransferThis/ = 0); virtual ~QAmbientTemperatureSensor(); QAmbientTemperatureReading *reading() const; private: QAmbientTemperatureSensor(const QAmbientTemperatureSensor &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qcompass.sip0000644000076500000240000000322313245233151020577 0ustar philstaff00000000000000// qcompass.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QCompassReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal azimuth() const; void setAzimuth(qreal azimuth); qreal calibrationLevel() const; void setCalibrationLevel(qreal calibrationLevel); }; %End %If (Qt_5_1_0 -) class QCompassFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QCompassReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QCompass : QSensor { %TypeHeaderCode #include %End public: explicit QCompass(QObject *parent /TransferThis/ = 0); virtual ~QCompass(); QCompassReading *reading() const; private: QCompass(const QCompass &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qdistancesensor.sip0000644000076500000240000000317713245233151022166 0ustar philstaff00000000000000// qdistancesensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QDistanceReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal distance() const; void setDistance(qreal distance); }; %End %If (Qt_5_4_0 -) class QDistanceFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QDistanceReading *reading) = 0; }; %End %If (Qt_5_4_0 -) class QDistanceSensor : QSensor { %TypeHeaderCode #include %End public: explicit QDistanceSensor(QObject *parent /TransferThis/ = 0); virtual ~QDistanceSensor(); QDistanceReading *reading() const; private: QDistanceSensor(const QDistanceSensor &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qgyroscope.sip0000644000076500000240000000323313245233151021145 0ustar philstaff00000000000000// qgyroscope.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QGyroscopeReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal x() const; void setX(qreal x); qreal y() const; void setY(qreal y); qreal z() const; void setZ(qreal z); }; %End %If (Qt_5_1_0 -) class QGyroscopeFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QGyroscopeReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QGyroscope : QSensor { %TypeHeaderCode #include %End public: explicit QGyroscope(QObject *parent /TransferThis/ = 0); virtual ~QGyroscope(); QGyroscopeReading *reading() const; private: QGyroscope(const QGyroscope &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qholstersensor.sip0000644000076500000240000000316313245233151022047 0ustar philstaff00000000000000// qholstersensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QHolsterReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: bool holstered() const; void setHolstered(bool holstered); }; %End %If (Qt_5_1_0 -) class QHolsterFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QHolsterReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QHolsterSensor : QSensor { %TypeHeaderCode #include %End public: explicit QHolsterSensor(QObject *parent /TransferThis/ = 0); virtual ~QHolsterSensor(); QHolsterReading *reading() const; private: QHolsterSensor(const QHolsterSensor &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qhumiditysensor.sip0000644000076500000240000000324513245233151022224 0ustar philstaff00000000000000// qhumiditysensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_9_0 -) class QHumidityReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal relativeHumidity() const; void setRelativeHumidity(qreal percent); qreal absoluteHumidity() const; void setAbsoluteHumidity(qreal value); }; %End %If (Qt_5_9_0 -) class QHumidityFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QHumidityReading *reading) = 0; }; %End %If (Qt_5_9_0 -) class QHumiditySensor : QSensor { %TypeHeaderCode #include %End public: explicit QHumiditySensor(QObject *parent /TransferThis/ = 0); virtual ~QHumiditySensor(); QHumidityReading *reading() const; }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qirproximitysensor.sip0000644000076500000240000000325713245233151022772 0ustar philstaff00000000000000// qirproximitysensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QIRProximityReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal reflectance() const; void setReflectance(qreal reflectance); }; %End %If (Qt_5_1_0 -) class QIRProximityFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QIRProximityReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QIRProximitySensor : QSensor { %TypeHeaderCode #include %End public: explicit QIRProximitySensor(QObject *parent /TransferThis/ = 0); virtual ~QIRProximitySensor(); QIRProximityReading *reading() const; private: QIRProximitySensor(const QIRProximitySensor &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qlidsensor.sip0000644000076500000240000000326713245233151021144 0ustar philstaff00000000000000// qlidsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_9_0 -) class QLidReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: bool backLidClosed() const; void setBackLidClosed(bool closed); bool frontLidClosed() const; void setFrontLidClosed(bool closed); signals: void backLidChanged(bool closed); void frontLidChanged(bool closed); }; %End %If (Qt_5_9_0 -) class QLidFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QLidReading *reading) = 0; }; %End %If (Qt_5_9_0 -) class QLidSensor : QSensor { %TypeHeaderCode #include %End public: explicit QLidSensor(QObject *parent /TransferThis/ = 0); virtual ~QLidSensor(); QLidReading *reading() const; }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qlightsensor.sip0000644000076500000240000000331613245233151021476 0ustar philstaff00000000000000// qlightsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QLightReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal lux() const; void setLux(qreal lux); }; %End %If (Qt_5_1_0 -) class QLightFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QLightReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QLightSensor : QSensor { %TypeHeaderCode #include %End public: explicit QLightSensor(QObject *parent /TransferThis/ = 0); virtual ~QLightSensor(); QLightReading *reading() const; qreal fieldOfView() const; void setFieldOfView(qreal fieldOfView); signals: void fieldOfViewChanged(qreal fieldOfView); private: QLightSensor(const QLightSensor &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qmagnetometer.sip0000644000076500000240000000366213245233151021630 0ustar philstaff00000000000000// qmagnetometer.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QMagnetometerReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal x() const; void setX(qreal x); qreal y() const; void setY(qreal y); qreal z() const; void setZ(qreal z); qreal calibrationLevel() const; void setCalibrationLevel(qreal calibrationLevel); }; %End %If (Qt_5_1_0 -) class QMagnetometerFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QMagnetometerReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QMagnetometer : QSensor { %TypeHeaderCode #include %End public: explicit QMagnetometer(QObject *parent /TransferThis/ = 0); virtual ~QMagnetometer(); QMagnetometerReading *reading() const; bool returnGeoValues() const; void setReturnGeoValues(bool returnGeoValues); signals: void returnGeoValuesChanged(bool returnGeoValues); private: QMagnetometer(const QMagnetometer &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qorientationsensor.sip0000644000076500000240000000357613245233151022732 0ustar philstaff00000000000000// qorientationsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QOrientationReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum Orientation { Undefined, TopUp, TopDown, LeftUp, RightUp, FaceUp, FaceDown, }; QOrientationReading::Orientation orientation() const; void setOrientation(QOrientationReading::Orientation orientation); }; %End %If (Qt_5_1_0 -) class QOrientationFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QOrientationReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QOrientationSensor : QSensor { %TypeHeaderCode #include %End public: explicit QOrientationSensor(QObject *parent /TransferThis/ = 0); virtual ~QOrientationSensor(); QOrientationReading *reading() const; private: QOrientationSensor(const QOrientationSensor &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qpressuresensor.sip0000644000076500000240000000336613245233151022244 0ustar philstaff00000000000000// qpressuresensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QPressureReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal pressure() const; void setPressure(qreal pressure); %If (Qt_5_2_0 -) qreal temperature() const; %End %If (Qt_5_2_0 -) void setTemperature(qreal temperature); %End }; %End %If (Qt_5_1_0 -) class QPressureFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QPressureReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QPressureSensor : QSensor { %TypeHeaderCode #include %End public: explicit QPressureSensor(QObject *parent /TransferThis/ = 0); virtual ~QPressureSensor(); QPressureReading *reading() const; private: QPressureSensor(const QPressureSensor &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qproximitysensor.sip0000644000076500000240000000320113245233151022424 0ustar philstaff00000000000000// qproximitysensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QProximityReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: bool close() const; void setClose(bool close); }; %End %If (Qt_5_1_0 -) class QProximityFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QProximityReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QProximitySensor : QSensor { %TypeHeaderCode #include %End public: explicit QProximitySensor(QObject *parent /TransferThis/ = 0); virtual ~QProximitySensor(); QProximityReading *reading() const; private: QProximitySensor(const QProximitySensor &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qrotationsensor.sip0000644000076500000240000000341513245233151022226 0ustar philstaff00000000000000// qrotationsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QRotationReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal x() const; qreal y() const; qreal z() const; void setFromEuler(qreal x, qreal y, qreal z); }; %End %If (Qt_5_1_0 -) class QRotationFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QRotationReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QRotationSensor : QSensor { %TypeHeaderCode #include %End public: explicit QRotationSensor(QObject *parent /TransferThis/ = 0); virtual ~QRotationSensor(); QRotationReading *reading() const; bool hasZ() const; void setHasZ(bool hasZ); signals: void hasZChanged(bool hasZ); private: QRotationSensor(const QRotationSensor &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qsensor.sip0000644000076500000240000002043213245233151020444 0ustar philstaff00000000000000// qsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) typedef quint64 qtimestamp; %End %If (Qt_5_1_0 -) typedef QList> qrangelist; %End %If (Qt_5_1_0 -) struct qoutputrange { %TypeHeaderCode #include %End qreal minimum; qreal maximum; qreal accuracy; }; %End %If (Qt_5_1_0 -) typedef QList qoutputrangelist; %End %If (Qt_5_1_0 -) class QSensorReading : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QSensorReading(); quint64 timestamp() const; void setTimestamp(quint64 timestamp); int valueCount() const; QVariant value(int index) const; private: QSensorReading(const QSensorReading &); }; %End %If (Qt_5_1_0 -) class QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QSensorReading *reading) = 0; protected: QSensorFilter(); virtual ~QSensorFilter(); }; %End %If (Qt_5_1_0 -) class QSensor : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSensor, &sipType_QSensor, 2, 1}, {sipName_QSensorReading, &sipType_QSensorReading, 21, -1}, {sipName_QAccelerometer, &sipType_QAccelerometer, -1, 3}, {sipName_QAltimeter, &sipType_QAltimeter, -1, 4}, {sipName_QAmbientLightSensor, &sipType_QAmbientLightSensor, -1, 5}, {sipName_QAmbientTemperatureSensor, &sipType_QAmbientTemperatureSensor, -1, 6}, {sipName_QCompass, &sipType_QCompass, -1, 7}, #if QT_VERSION >= 0x050400 {sipName_QDistanceSensor, &sipType_QDistanceSensor, -1, 8}, #else {0, 0, -1, 8}, #endif {sipName_QGyroscope, &sipType_QGyroscope, -1, 9}, {sipName_QHolsterSensor, &sipType_QHolsterSensor, -1, 10}, #if QT_VERSION >= 0x050900 {sipName_QHumiditySensor, &sipType_QHumiditySensor, -1, 11}, #else {0, 0, -1, 11}, #endif {sipName_QIRProximitySensor, &sipType_QIRProximitySensor, -1, 12}, #if QT_VERSION >= 0x050900 {sipName_QLidSensor, &sipType_QLidSensor, -1, 13}, #else {0, 0, -1, 13}, #endif {sipName_QLightSensor, &sipType_QLightSensor, -1, 14}, {sipName_QMagnetometer, &sipType_QMagnetometer, -1, 15}, {sipName_QOrientationSensor, &sipType_QOrientationSensor, -1, 16}, {sipName_QPressureSensor, &sipType_QPressureSensor, -1, 17}, {sipName_QProximitySensor, &sipType_QProximitySensor, -1, 18}, {sipName_QRotationSensor, &sipType_QRotationSensor, -1, 19}, {sipName_QTapSensor, &sipType_QTapSensor, -1, 20}, {sipName_QTiltSensor, &sipType_QTiltSensor, -1, -1}, {sipName_QAccelerometerReading, &sipType_QAccelerometerReading, -1, 22}, {sipName_QAltimeterReading, &sipType_QAltimeterReading, -1, 23}, {sipName_QAmbientLightReading, &sipType_QAmbientLightReading, -1, 24}, {sipName_QAmbientTemperatureReading, &sipType_QAmbientTemperatureReading, -1, 25}, {sipName_QCompassReading, &sipType_QCompassReading, -1, 26}, #if QT_VERSION >= 0x050400 {sipName_QDistanceReading, &sipType_QDistanceReading, -1, 27}, #else {0, 0, -1, 27}, #endif {sipName_QGyroscopeReading, &sipType_QGyroscopeReading, -1, 28}, {sipName_QHolsterReading, &sipType_QHolsterReading, -1, 29}, #if QT_VERSION >= 0x050900 {sipName_QHumidityReading, &sipType_QHumidityReading, -1, 30}, #else {0, 0, -1, 30}, #endif {sipName_QIRProximityReading, &sipType_QIRProximityReading, -1, 31}, #if QT_VERSION >= 0x050900 {sipName_QLidReading, &sipType_QLidReading, -1, 32}, #else {0, 0, -1, 32}, #endif {sipName_QLightReading, &sipType_QLightReading, -1, 33}, {sipName_QMagnetometerReading, &sipType_QMagnetometerReading, -1, 34}, {sipName_QOrientationReading, &sipType_QOrientationReading, -1, 35}, {sipName_QPressureReading, &sipType_QPressureReading, -1, 36}, {sipName_QProximityReading, &sipType_QProximityReading, -1, 37}, {sipName_QRotationReading, &sipType_QRotationReading, -1, 38}, {sipName_QTapReading, &sipType_QTapReading, -1, 39}, {sipName_QTiltReading, &sipType_QTiltReading, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Feature { Buffering, AlwaysOn, GeoValues, FieldOfView, AccelerationMode, SkipDuplicates, AxesOrientation, %If (Qt_5_2_0 -) PressureSensorTemperature, %End }; enum AxesOrientationMode { FixedOrientation, AutomaticOrientation, UserOrientation, }; QSensor(const QByteArray &type, QObject *parent /TransferThis/ = 0); virtual ~QSensor(); QByteArray identifier() const; void setIdentifier(const QByteArray &identifier); QByteArray type() const; bool connectToBackend(); bool isConnectedToBackend() const; bool isBusy() const; void setActive(bool active); bool isActive() const; bool isAlwaysOn() const; void setAlwaysOn(bool alwaysOn); bool skipDuplicates() const; void setSkipDuplicates(bool skipDuplicates); qrangelist availableDataRates() const; int dataRate() const; void setDataRate(int rate); qoutputrangelist outputRanges() const; int outputRange() const; void setOutputRange(int index); QString description() const; int error() const; void addFilter(QSensorFilter *filter); void removeFilter(QSensorFilter *filter); QList filters() const; QSensorReading *reading() const; static QList sensorTypes(); static QList sensorsForType(const QByteArray &type); static QByteArray defaultSensorForType(const QByteArray &type); bool isFeatureSupported(QSensor::Feature feature) const; QSensor::AxesOrientationMode axesOrientationMode() const; void setAxesOrientationMode(QSensor::AxesOrientationMode axesOrientationMode); int currentOrientation() const; void setCurrentOrientation(int currentOrientation); int userOrientation() const; void setUserOrientation(int userOrientation); int maxBufferSize() const; void setMaxBufferSize(int maxBufferSize); int efficientBufferSize() const; void setEfficientBufferSize(int efficientBufferSize); int bufferSize() const; void setBufferSize(int bufferSize); public slots: bool start(); void stop(); signals: void busyChanged(); void activeChanged(); void readingChanged(); void sensorError(int error); void availableSensorsChanged(); void alwaysOnChanged(); void dataRateChanged(); void skipDuplicatesChanged(bool skipDuplicates); void axesOrientationModeChanged(QSensor::AxesOrientationMode axesOrientationMode); void currentOrientationChanged(int currentOrientation); void userOrientationChanged(int userOrientation); void maxBufferSizeChanged(int maxBufferSize); void efficientBufferSizeChanged(int efficientBufferSize); void bufferSizeChanged(int bufferSize); private: QSensor(const QSensor &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qtapsensor.sip0000644000076500000240000000411513245233151021151 0ustar philstaff00000000000000// qtapsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QTapReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum TapDirection { Undefined, X, Y, Z, X_Pos, Y_Pos, Z_Pos, X_Neg, Y_Neg, Z_Neg, X_Both, Y_Both, Z_Both, }; QTapReading::TapDirection tapDirection() const; void setTapDirection(QTapReading::TapDirection tapDirection); bool isDoubleTap() const; void setDoubleTap(bool doubleTap); }; %End %If (Qt_5_1_0 -) class QTapFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QTapReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QTapSensor : QSensor { %TypeHeaderCode #include %End public: explicit QTapSensor(QObject *parent /TransferThis/ = 0); virtual ~QTapSensor(); QTapReading *reading() const; bool returnDoubleTapEvents() const; void setReturnDoubleTapEvents(bool returnDoubleTapEvents); signals: void returnDoubleTapEventsChanged(bool returnDoubleTapEvents); private: QTapSensor(const QTapSensor &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/qtiltsensor.sip0000644000076500000240000000323113245233151021337 0ustar philstaff00000000000000// qtiltsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QTiltReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal yRotation() const; void setYRotation(qreal y); qreal xRotation() const; void setXRotation(qreal x); }; %End %If (Qt_5_1_0 -) class QTiltFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QTiltReading *reading) = 0; }; %End %If (Qt_5_1_0 -) class QTiltSensor : QSensor { %TypeHeaderCode #include %End public: explicit QTiltSensor(QObject *parent /TransferThis/ = 0); virtual ~QTiltSensor(); QTiltReading *reading() const; void calibrate(); private: QTiltSensor(const QTiltSensor &); }; %End PyQt5_gpl-5.10.1/sip/QtSensors/QtSensorsmod.sip0000644000076500000240000000464413245233151021422 0ustar philstaff00000000000000// QtSensorsmod.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtSensors, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qaccelerometer.sip %Include qaltimeter.sip %Include qambientlightsensor.sip %Include qambienttemperaturesensor.sip %Include qcompass.sip %Include qdistancesensor.sip %Include qgyroscope.sip %Include qholstersensor.sip %Include qhumiditysensor.sip %Include qirproximitysensor.sip %Include qlidsensor.sip %Include qlightsensor.sip %Include qmagnetometer.sip %Include qorientationsensor.sip %Include qpressuresensor.sip %Include qproximitysensor.sip %Include qsensor.sip %Include qtapsensor.sip %Include qtiltsensor.sip %Include qrotationsensor.sip PyQt5_gpl-5.10.1/sip/QtSerialPort/0000755000076500000240000000000013245233151016664 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtSerialPort/qserialport.sip0000644000076500000240000002203013245233151021743 0ustar philstaff00000000000000// qserialport.sip generated by MetaSIP // // This file is part of the QtSerialPort Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QSerialPort : QIODevice { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSerialPort, &sipType_QSerialPort, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Direction { Input, Output, AllDirections, }; typedef QFlags Directions; enum BaudRate { Baud1200, Baud2400, Baud4800, Baud9600, Baud19200, Baud38400, Baud57600, Baud115200, UnknownBaud, }; enum DataBits { Data5, Data6, Data7, Data8, UnknownDataBits, }; enum Parity { NoParity, EvenParity, OddParity, SpaceParity, MarkParity, UnknownParity, }; enum StopBits { OneStop, OneAndHalfStop, TwoStop, UnknownStopBits, }; enum FlowControl { NoFlowControl, HardwareControl, SoftwareControl, UnknownFlowControl, }; enum PinoutSignal { NoSignal, TransmittedDataSignal, ReceivedDataSignal, DataTerminalReadySignal, DataCarrierDetectSignal, DataSetReadySignal, RingIndicatorSignal, RequestToSendSignal, ClearToSendSignal, SecondaryTransmittedDataSignal, SecondaryReceivedDataSignal, }; typedef QFlags PinoutSignals; enum DataErrorPolicy { SkipPolicy, PassZeroPolicy, IgnorePolicy, StopReceivingPolicy, UnknownPolicy, }; enum SerialPortError { NoError, DeviceNotFoundError, PermissionError, OpenError, ParityError, FramingError, BreakConditionError, WriteError, ReadError, ResourceError, UnsupportedOperationError, %If (Qt_5_2_0 -) TimeoutError, %End %If (Qt_5_2_0 -) NotOpenError, %End UnknownError, }; explicit QSerialPort(QObject *parent /TransferThis/ = 0); QSerialPort(const QString &name, QObject *parent /TransferThis/ = 0); QSerialPort(const QSerialPortInfo &info, QObject *parent /TransferThis/ = 0); virtual ~QSerialPort(); void setPortName(const QString &name); QString portName() const; void setPort(const QSerialPortInfo &info); virtual bool open(QIODevice::OpenMode mode); virtual void close() /ReleaseGIL/; void setSettingsRestoredOnClose(bool restore); bool settingsRestoredOnClose() const; bool setBaudRate(qint32 baudRate, QSerialPort::Directions dir = QSerialPort::AllDirections); qint32 baudRate(QSerialPort::Directions dir = QSerialPort::AllDirections) const; bool setDataBits(QSerialPort::DataBits dataBits); QSerialPort::DataBits dataBits() const; bool setParity(QSerialPort::Parity parity); QSerialPort::Parity parity() const; bool setStopBits(QSerialPort::StopBits stopBits); QSerialPort::StopBits stopBits() const; bool setFlowControl(QSerialPort::FlowControl flow); QSerialPort::FlowControl flowControl() const; bool setDataTerminalReady(bool set); bool isDataTerminalReady(); bool setRequestToSend(bool set); bool isRequestToSend(); QSerialPort::PinoutSignals pinoutSignals(); bool flush() /ReleaseGIL/; bool clear(QSerialPort::Directions dir = QSerialPort::AllDirections); virtual bool atEnd() const; bool setDataErrorPolicy(QSerialPort::DataErrorPolicy policy = QSerialPort::IgnorePolicy); QSerialPort::DataErrorPolicy dataErrorPolicy() const; QSerialPort::SerialPortError error() const; void clearError(); qint64 readBufferSize() const; void setReadBufferSize(qint64 size); virtual bool isSequential() const; virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool canReadLine() const; virtual bool waitForReadyRead(int msecs) /ReleaseGIL/; virtual bool waitForBytesWritten(int msecs) /ReleaseGIL/; bool sendBreak(int duration = 0) /ReleaseGIL/; bool setBreakEnabled(bool enabled = true); signals: void baudRateChanged(qint32 baudRate, QSerialPort::Directions directions); void dataBitsChanged(QSerialPort::DataBits dataBits); void parityChanged(QSerialPort::Parity parity); void stopBitsChanged(QSerialPort::StopBits stopBits); void flowControlChanged(QSerialPort::FlowControl flow); void dataErrorPolicyChanged(QSerialPort::DataErrorPolicy policy); void dataTerminalReadyChanged(bool set); void requestToSendChanged(bool set); void error(QSerialPort::SerialPortError serialPortError); void settingsRestoredOnCloseChanged(bool restore); protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /TypeHint="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxSize)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QSerialPort::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual SIP_PYOBJECT readLineData(qint64 maxlen) /TypeHint="Py_v3:bytes;str",ReleaseGIL/ [qint64 (char *data, qint64 maxSize)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QSerialPort::readLineData(s, a0) : sipCpp->readLineData(s, a0); #else len = sipCpp->sipProtectVirt_readLineData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = SIPBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 maxSize /ArraySize/) /ReleaseGIL/; public: %If (Qt_5_2_0 -) %If (WS_WIN) void *handle() const; %End %End %If (Qt_5_2_0 -) %If (WS_X11 || WS_MACX) int handle() const; %End %End %If (Qt_5_5_0 -) bool isBreakEnabled() const; %End signals: %If (Qt_5_5_0 -) void breakEnabledChanged(bool set); %End %If (Qt_5_8_0 -) void errorOccurred(QSerialPort::SerialPortError error); %End private: QSerialPort(const QSerialPort &); }; %End %If (Qt_5_1_0 -) QFlags operator|(QSerialPort::Direction f1, QFlags f2); %End %If (Qt_5_1_0 -) QFlags operator|(QSerialPort::PinoutSignal f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtSerialPort/qserialportinfo.sip0000644000076500000240000000346113245233151022626 0ustar philstaff00000000000000// qserialportinfo.sip generated by MetaSIP // // This file is part of the QtSerialPort Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class QSerialPortInfo { %TypeHeaderCode #include %End public: QSerialPortInfo(); explicit QSerialPortInfo(const QSerialPort &port); explicit QSerialPortInfo(const QString &name); QSerialPortInfo(const QSerialPortInfo &other); ~QSerialPortInfo(); void swap(QSerialPortInfo &other /Constrained/); QString portName() const; QString systemLocation() const; QString description() const; QString manufacturer() const; quint16 vendorIdentifier() const; quint16 productIdentifier() const; bool hasVendorIdentifier() const; bool hasProductIdentifier() const; bool isBusy() const; bool isValid() const; static QList standardBaudRates(); static QList availablePorts(); bool isNull() const; %If (Qt_5_3_0 -) QString serialNumber() const; %End }; %End PyQt5_gpl-5.10.1/sip/QtSerialPort/QtSerialPortmod.sip0000644000076500000240000000367013245233151022500 0ustar philstaff00000000000000// QtSerialPortmod.sip generated by MetaSIP // // This file is part of the QtSerialPort Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtSerialPort, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qserialport.sip %Include qserialportinfo.sip PyQt5_gpl-5.10.1/sip/QtSql/0000755000076500000240000000000013245233151015337 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtSql/qsql.sip0000644000076500000240000000312713245233151017037 0ustar philstaff00000000000000// qsql.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (- Qt_5_8_0) namespace QSql { %TypeHeaderCode #include %End enum Location { BeforeFirstRow, AfterLastRow, }; enum ParamTypeFlag { In, Out, InOut, Binary, }; typedef QFlags ParamType; enum TableType { Tables, SystemTables, Views, AllTables, }; enum NumericalPrecisionPolicy { LowPrecisionInt32, LowPrecisionInt64, LowPrecisionDouble, HighPrecision, }; }; %End %If (- Qt_5_8_0) QFlags operator|(QSql::ParamTypeFlag f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtSql/qsqldatabase.sip0000644000076500000240000000724713245233151020533 0ustar philstaff00000000000000// qsqldatabase.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlDriverCreatorBase /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: virtual ~QSqlDriverCreatorBase(); virtual QSqlDriver *createObject() const = 0 /Factory/; }; class QSqlDatabase { %TypeHeaderCode #include %End public: QSqlDatabase(); QSqlDatabase(const QSqlDatabase &other); ~QSqlDatabase(); bool open() /ReleaseGIL/; bool open(const QString &user, const QString &password) /ReleaseGIL/; void close(); bool isOpen() const; bool isOpenError() const; QStringList tables(QSql::TableType type = QSql::Tables) const; QSqlIndex primaryIndex(const QString &tablename) const; QSqlRecord record(const QString &tablename) const; QSqlQuery exec(const QString &query = QString()) const /PyName=exec_,ReleaseGIL/; %If (Py_v3) QSqlQuery exec(const QString &query = QString()) const /ReleaseGIL/; %End QSqlError lastError() const; bool isValid() const; bool transaction() /ReleaseGIL/; bool commit() /ReleaseGIL/; bool rollback() /ReleaseGIL/; void setDatabaseName(const QString &name); void setUserName(const QString &name); void setPassword(const QString &password); void setHostName(const QString &host); void setPort(int p); void setConnectOptions(const QString &options = QString()); QString databaseName() const; QString userName() const; QString password() const; QString hostName() const; QString driverName() const; int port() const; QString connectOptions() const; QString connectionName() const; QSqlDriver *driver() const; static QSqlDatabase addDatabase(const QString &type, const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection)); static QSqlDatabase addDatabase(QSqlDriver *driver, const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection)); static QSqlDatabase cloneDatabase(const QSqlDatabase &other, const QString &connectionName); static QSqlDatabase database(const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection), bool open = true); static void removeDatabase(const QString &connectionName); static bool contains(const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection)); static QStringList drivers(); static QStringList connectionNames(); static void registerSqlDriver(const QString &name, QSqlDriverCreatorBase *creator /Transfer/); static bool isDriverAvailable(const QString &name); protected: explicit QSqlDatabase(const QString &type); explicit QSqlDatabase(QSqlDriver *driver); public: void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy); QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const; }; PyQt5_gpl-5.10.1/sip/QtSql/qsqldriver.sip0000644000076500000240000001167613245233151020263 0ustar philstaff00000000000000// qsqldriver.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlDriver : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSqlQueryModel, &sipType_QSqlQueryModel, 3, 1}, {sipName_QSqlRelationalDelegate, &sipType_QSqlRelationalDelegate, -1, 2}, {sipName_QSqlDriver, &sipType_QSqlDriver, -1, -1}, {sipName_QSqlTableModel, &sipType_QSqlTableModel, 4, -1}, {sipName_QSqlRelationalTableModel, &sipType_QSqlRelationalTableModel, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum DriverFeature { Transactions, QuerySize, BLOB, Unicode, PreparedQueries, NamedPlaceholders, PositionalPlaceholders, LastInsertId, BatchOperations, SimpleLocking, LowPrecisionNumbers, EventNotifications, FinishQuery, MultipleResultSets, }; enum StatementType { WhereStatement, SelectStatement, UpdateStatement, InsertStatement, DeleteStatement, }; enum IdentifierType { FieldName, TableName, }; explicit QSqlDriver(QObject *parent /TransferThis/ = 0); virtual ~QSqlDriver(); virtual bool isOpen() const; bool isOpenError() const; virtual bool beginTransaction() /ReleaseGIL/; virtual bool commitTransaction() /ReleaseGIL/; virtual bool rollbackTransaction() /ReleaseGIL/; virtual QStringList tables(QSql::TableType tableType) const; virtual QSqlIndex primaryIndex(const QString &tableName) const; virtual QSqlRecord record(const QString &tableName) const; virtual QString formatValue(const QSqlField &field, bool trimStrings = false) const; virtual QString escapeIdentifier(const QString &identifier, QSqlDriver::IdentifierType type) const; virtual QString sqlStatement(QSqlDriver::StatementType type, const QString &tableName, const QSqlRecord &rec, bool preparedStatement) const; QSqlError lastError() const; virtual QVariant handle() const; virtual bool hasFeature(QSqlDriver::DriverFeature f) const = 0; virtual void close() = 0; virtual QSqlResult *createResult() const = 0 /Factory/; virtual bool open(const QString &db, const QString &user = QString(), const QString &password = QString(), const QString &host = QString(), int port = -1, const QString &options = QString()) = 0 /ReleaseGIL/; protected: virtual void setOpen(bool o); virtual void setOpenError(bool e); virtual void setLastError(const QSqlError &e); public: virtual bool subscribeToNotification(const QString &name); virtual bool unsubscribeFromNotification(const QString &name); virtual QStringList subscribedToNotifications() const; enum NotificationSource { UnknownSource, SelfSource, OtherSource, }; signals: void notification(const QString &name); void notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload); public: virtual bool isIdentifierEscaped(const QString &identifier, QSqlDriver::IdentifierType type) const; virtual QString stripDelimiters(const QString &identifier, QSqlDriver::IdentifierType type) const; void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy); QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const; %If (Qt_5_4_0 -) enum DbmsType { UnknownDbms, MSSqlServer, MySqlServer, PostgreSQL, Oracle, Sybase, SQLite, Interbase, DB2, }; %End %If (Qt_5_4_0 -) QSqlDriver::DbmsType dbmsType() const; %End private: QSqlDriver(const QSqlDriver &); }; PyQt5_gpl-5.10.1/sip/QtSql/qsqlerror.sip0000644000076500000240000000444113245233151020111 0ustar philstaff00000000000000// qsqlerror.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlError { %TypeHeaderCode #include %End public: enum ErrorType { NoError, ConnectionError, StatementError, TransactionError, UnknownError, }; %If (Qt_5_3_0 -) QSqlError(const QString &driverText = QString(), const QString &databaseText = QString(), QSqlError::ErrorType type = QSqlError::NoError, const QString &errorCode = QString()); %End %If (Qt_5_3_0 -) QSqlError(const QString &driverText, const QString &databaseText, QSqlError::ErrorType type, int number); %End %If (- Qt_5_3_0) QSqlError(const QString &driverText = QString(), const QString &databaseText = QString(), QSqlError::ErrorType type = QSqlError::NoError, int number = -1); %End QSqlError(const QSqlError &other); ~QSqlError(); QString driverText() const; void setDriverText(const QString &driverText); QString databaseText() const; void setDatabaseText(const QString &databaseText); QSqlError::ErrorType type() const; void setType(QSqlError::ErrorType type); int number() const; void setNumber(int number); QString text() const; bool isValid() const; bool operator==(const QSqlError &other) const; bool operator!=(const QSqlError &other) const; %If (Qt_5_3_0 -) QString nativeErrorCode() const; %End %If (Qt_5_10_0 -) void swap(QSqlError &other /Constrained/); %End }; PyQt5_gpl-5.10.1/sip/QtSql/qsqlfield.sip0000644000076500000240000000467413245233151020053 0ustar philstaff00000000000000// qsqlfield.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlField { %TypeHeaderCode #include %End public: enum RequiredStatus { Unknown, Optional, Required, }; QSqlField(const QString &fieldName = QString(), QVariant::Type type = QVariant::Invalid); %If (Qt_5_10_0 -) QSqlField(const QString &fieldName, QVariant::Type type, const QString &tableName); %End QSqlField(const QSqlField &other); bool operator==(const QSqlField &other) const; bool operator!=(const QSqlField &other) const; ~QSqlField(); void setValue(const QVariant &value); QVariant value() const; void setName(const QString &name); QString name() const; bool isNull() const; void setReadOnly(bool readOnly); bool isReadOnly() const; void clear(); QVariant::Type type() const; bool isAutoValue() const; void setType(QVariant::Type type); void setRequiredStatus(QSqlField::RequiredStatus status); void setRequired(bool required); void setLength(int fieldLength); void setPrecision(int precision); void setDefaultValue(const QVariant &value); void setSqlType(int type); void setGenerated(bool gen); void setAutoValue(bool autoVal); QSqlField::RequiredStatus requiredStatus() const; int length() const; int precision() const; QVariant defaultValue() const; int typeID() const; bool isGenerated() const; bool isValid() const; %If (Qt_5_10_0 -) void setTableName(const QString &tableName); %End %If (Qt_5_10_0 -) QString tableName() const; %End }; PyQt5_gpl-5.10.1/sip/QtSql/qsqlindex.sip0000644000076500000240000000273113245233151020067 0ustar philstaff00000000000000// qsqlindex.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlIndex : QSqlRecord { %TypeHeaderCode #include %End public: QSqlIndex(const QString &cursorName = QString(), const QString &name = QString()); QSqlIndex(const QSqlIndex &other); ~QSqlIndex(); void setCursorName(const QString &cursorName); QString cursorName() const; void setName(const QString &name); QString name() const; void append(const QSqlField &field); void append(const QSqlField &field, bool desc); bool isDescending(int i) const; void setDescending(int i, bool desc); }; PyQt5_gpl-5.10.1/sip/QtSql/qsqlquery.sip0000644000076500000240000000606313245233151020127 0ustar philstaff00000000000000// qsqlquery.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlQuery { %TypeHeaderCode #include %End public: enum BatchExecutionMode { ValuesAsRows, ValuesAsColumns, }; explicit QSqlQuery(QSqlResult *r); QSqlQuery(const QString &query = QString(), QSqlDatabase db = QSqlDatabase()) /ReleaseGIL/; explicit QSqlQuery(QSqlDatabase db); QSqlQuery(const QSqlQuery &other); ~QSqlQuery(); bool isValid() const; bool isActive() const; bool isNull(int field) const; %If (Qt_5_3_0 -) bool isNull(const QString &name) const; %End int at() const; QString lastQuery() const; int numRowsAffected() const; QSqlError lastError() const; bool isSelect() const; int size() const; const QSqlDriver *driver() const; const QSqlResult *result() const; bool isForwardOnly() const; QSqlRecord record() const; void setForwardOnly(bool forward); bool exec(const QString &query) /PyName=exec_,ReleaseGIL/; %If (Py_v3) bool exec(const QString &query) /ReleaseGIL/; %End QVariant value(int i) const; QVariant value(const QString &name) const; bool seek(int index, bool relative = false) /ReleaseGIL/; bool next() /ReleaseGIL/; bool previous() /ReleaseGIL/; bool first() /ReleaseGIL/; bool last() /ReleaseGIL/; void clear() /ReleaseGIL/; bool exec() /PyName=exec_,ReleaseGIL/; bool execBatch(QSqlQuery::BatchExecutionMode mode = QSqlQuery::ValuesAsRows); bool prepare(const QString &query) /ReleaseGIL/; void bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType type = QSql::In); void bindValue(int pos, const QVariant &val, QSql::ParamType type = QSql::In); void addBindValue(const QVariant &val, QSql::ParamType type = QSql::In); QVariant boundValue(const QString &placeholder) const; QVariant boundValue(int pos) const; QMap boundValues() const; QString executedQuery() const; QVariant lastInsertId() const; void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy); QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const; void finish(); bool nextResult(); }; PyQt5_gpl-5.10.1/sip/QtSql/qsqlquerymodel.sip0000644000076500000240000000562513245233151021153 0ustar philstaff00000000000000// qsqlquerymodel.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlQueryModel : QAbstractTableModel { %TypeHeaderCode #include %End public: explicit QSqlQueryModel(QObject *parent /TransferThis/ = 0); virtual ~QSqlQueryModel(); virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; QSqlRecord record(int row) const; QSqlRecord record() const; virtual QVariant data(const QModelIndex &item, int role = Qt::DisplayRole) const; virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); void setQuery(const QSqlQuery &query); void setQuery(const QString &query, const QSqlDatabase &db = QSqlDatabase()); QSqlQuery query() const; virtual void clear(); QSqlError lastError() const; virtual void fetchMore(const QModelIndex &parent = QModelIndex()); virtual bool canFetchMore(const QModelIndex &parent = QModelIndex()) const; protected: virtual void queryChange(); virtual QModelIndex indexInQuery(const QModelIndex &item) const; void setLastError(const QSqlError &error); void beginResetModel(); void endResetModel(); void beginInsertRows(const QModelIndex &parent, int first, int last); void endInsertRows(); void beginRemoveRows(const QModelIndex &parent, int first, int last); void endRemoveRows(); void beginInsertColumns(const QModelIndex &parent, int first, int last); void endInsertColumns(); void beginRemoveColumns(const QModelIndex &parent, int first, int last); void endRemoveColumns(); public: %If (Qt_5_10_0 -) virtual QHash roleNames() const; %End }; PyQt5_gpl-5.10.1/sip/QtSql/qsqlrecord.sip0000644000076500000240000000435213245233151020237 0ustar philstaff00000000000000// qsqlrecord.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlRecord { %TypeHeaderCode #include %End public: QSqlRecord(); QSqlRecord(const QSqlRecord &other); ~QSqlRecord(); bool operator==(const QSqlRecord &other) const; bool operator!=(const QSqlRecord &other) const; QVariant value(int i) const; QVariant value(const QString &name) const; void setValue(int i, const QVariant &val); void setValue(const QString &name, const QVariant &val); void setNull(int i); void setNull(const QString &name); bool isNull(int i) const; bool isNull(const QString &name) const; int indexOf(const QString &name) const; QString fieldName(int i) const; QSqlField field(int i) const; QSqlField field(const QString &name) const; bool isGenerated(int i) const; bool isGenerated(const QString &name) const; void setGenerated(const QString &name, bool generated); void setGenerated(int i, bool generated); void append(const QSqlField &field); void replace(int pos, const QSqlField &field); void insert(int pos, const QSqlField &field); void remove(int pos); bool isEmpty() const; bool contains(const QString &name) const; void clear(); void clearValues(); int count() const /__len__/; %If (Qt_5_1_0 -) QSqlRecord keyValues(const QSqlRecord &keyFields) const; %End }; PyQt5_gpl-5.10.1/sip/QtSql/qsqlrelationaldelegate.sip0000644000076500000240000000267113245233151022610 0ustar philstaff00000000000000// qsqlrelationaldelegate.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlRelationalDelegate : QItemDelegate { %TypeHeaderCode #include %End public: explicit QSqlRelationalDelegate(QObject *parent /TransferThis/ = 0); virtual ~QSqlRelationalDelegate(); virtual QWidget *createEditor(QWidget *parent /TransferThis/, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const /Factory/; virtual void setModelData(QWidget *editor, QAbstractItemModel *model /KeepReference/, const QModelIndex &index) const; }; PyQt5_gpl-5.10.1/sip/QtSql/qsqlrelationaltablemodel.sip0000644000076500000240000000506713245233151023150 0ustar philstaff00000000000000// qsqlrelationaltablemodel.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlRelation { %TypeHeaderCode #include %End public: QSqlRelation(); QSqlRelation(const QString &aTableName, const QString &indexCol, const QString &displayCol); QString tableName() const; QString indexColumn() const; QString displayColumn() const; bool isValid() const; %If (Qt_5_8_0 -) void swap(QSqlRelation &other /Constrained/); %End }; class QSqlRelationalTableModel : QSqlTableModel { %TypeHeaderCode #include %End public: QSqlRelationalTableModel(QObject *parent /TransferThis/ = 0, QSqlDatabase db = QSqlDatabase()); virtual ~QSqlRelationalTableModel(); virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual void clear(); virtual bool select(); virtual void setTable(const QString &tableName); virtual void setRelation(int column, const QSqlRelation &relation); QSqlRelation relation(int column) const; virtual QSqlTableModel *relationModel(int column) const; virtual void revertRow(int row); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); protected: virtual QString selectStatement() const; virtual bool updateRowInTable(int row, const QSqlRecord &values); virtual QString orderByClause() const; virtual bool insertRowIntoTable(const QSqlRecord &values); public: enum JoinMode { InnerJoin, LeftJoin, }; void setJoinMode(QSqlRelationalTableModel::JoinMode joinMode); }; PyQt5_gpl-5.10.1/sip/QtSql/qsqlresult.sip0000644000076500000240000000624713245233151020304 0ustar philstaff00000000000000// qsqlresult.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlResult /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: virtual ~QSqlResult(); virtual QVariant handle() const; protected: enum BindingSyntax { PositionalBinding, NamedBinding, }; explicit QSqlResult(const QSqlDriver *db); int at() const; QString lastQuery() const; QSqlError lastError() const; bool isValid() const; bool isActive() const; bool isSelect() const; bool isForwardOnly() const; const QSqlDriver *driver() const; virtual void setAt(int at); virtual void setActive(bool a); virtual void setLastError(const QSqlError &e); virtual void setQuery(const QString &query); virtual void setSelect(bool s); virtual void setForwardOnly(bool forward); virtual bool exec() /PyName=exec_,ReleaseGIL/; %If (Py_v3) virtual bool exec() /ReleaseGIL/; %End virtual bool prepare(const QString &query) /ReleaseGIL/; virtual bool savePrepare(const QString &sqlquery); virtual void bindValue(int pos, const QVariant &val, QSql::ParamType type); virtual void bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType type); void addBindValue(const QVariant &val, QSql::ParamType type); QVariant boundValue(const QString &placeholder) const; QVariant boundValue(int pos) const; QSql::ParamType bindValueType(const QString &placeholder) const; QSql::ParamType bindValueType(int pos) const; int boundValueCount() const; QVector &boundValues() const; QString executedQuery() const; QString boundValueName(int pos) const; void clear(); bool hasOutValues() const; QSqlResult::BindingSyntax bindingSyntax() const; virtual QVariant data(int i) = 0; virtual bool isNull(int i) = 0; virtual bool reset(const QString &sqlquery) = 0; virtual bool fetch(int i) = 0 /ReleaseGIL/; virtual bool fetchNext() /ReleaseGIL/; virtual bool fetchPrevious() /ReleaseGIL/; virtual bool fetchFirst() = 0 /ReleaseGIL/; virtual bool fetchLast() = 0 /ReleaseGIL/; virtual int size() = 0; virtual int numRowsAffected() = 0; virtual QSqlRecord record() const; virtual QVariant lastInsertId() const; private: QSqlResult(const QSqlResult &); }; PyQt5_gpl-5.10.1/sip/QtSql/qsqltablemodel.sip0000644000076500000240000000722613245233151021074 0ustar philstaff00000000000000// qsqltablemodel.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlTableModel : QSqlQueryModel { %TypeHeaderCode #include %End public: enum EditStrategy { OnFieldChange, OnRowChange, OnManualSubmit, }; QSqlTableModel(QObject *parent /TransferThis/ = 0, QSqlDatabase db = QSqlDatabase()); virtual ~QSqlTableModel(); virtual bool select(); virtual void setTable(const QString &tableName); QString tableName() const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; bool isDirty(const QModelIndex &index) const; bool isDirty() const; virtual void clear(); virtual void setEditStrategy(QSqlTableModel::EditStrategy strategy); QSqlTableModel::EditStrategy editStrategy() const; QSqlIndex primaryKey() const; QSqlDatabase database() const; int fieldIndex(const QString &fieldName) const; virtual void sort(int column, Qt::SortOrder order); virtual void setSort(int column, Qt::SortOrder order); QString filter() const; virtual void setFilter(const QString &filter); virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); bool insertRecord(int row, const QSqlRecord &record); bool setRecord(int row, const QSqlRecord &record); virtual void revertRow(int row); public slots: virtual bool submit(); virtual void revert(); bool submitAll(); void revertAll(); signals: void primeInsert(int row, QSqlRecord &record); void beforeInsert(QSqlRecord &record); void beforeUpdate(int row, QSqlRecord &record); void beforeDelete(int row); protected: virtual bool updateRowInTable(int row, const QSqlRecord &values); virtual bool insertRowIntoTable(const QSqlRecord &values); virtual bool deleteRowFromTable(int row); virtual QString orderByClause() const; virtual QString selectStatement() const; void setPrimaryKey(const QSqlIndex &key); void setQuery(const QSqlQuery &query); virtual QModelIndex indexInQuery(const QModelIndex &item) const; public: virtual bool selectRow(int row); QSqlRecord record() const; QSqlRecord record(int row) const; protected: %If (Qt_5_1_0 -) QSqlRecord primaryValues(int row) const; %End }; PyQt5_gpl-5.10.1/sip/QtSql/qtsqlglobal.sip0000644000076500000240000000314513245233151020404 0ustar philstaff00000000000000// qtsqlglobal.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_8_0 -) namespace QSql { %TypeHeaderCode #include %End enum Location { BeforeFirstRow, AfterLastRow, }; enum ParamTypeFlag { In, Out, InOut, Binary, }; typedef QFlags ParamType; enum TableType { Tables, SystemTables, Views, AllTables, }; enum NumericalPrecisionPolicy { LowPrecisionInt32, LowPrecisionInt64, LowPrecisionDouble, HighPrecision, }; }; %End %If (Qt_5_8_0 -) QFlags operator|(QSql::ParamTypeFlag f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtSql/QtSqlmod.sip0000644000076500000240000000437313245233151017627 0ustar philstaff00000000000000// QtSqlmod.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtSql, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qsql.sip %Include qsqldatabase.sip %Include qsqldriver.sip %Include qsqlerror.sip %Include qsqlfield.sip %Include qsqlindex.sip %Include qsqlquery.sip %Include qsqlquerymodel.sip %Include qsqlrecord.sip %Include qsqlrelationaldelegate.sip %Include qsqlrelationaltablemodel.sip %Include qsqlresult.sip %Include qsqltablemodel.sip %Include qtsqlglobal.sip PyQt5_gpl-5.10.1/sip/QtSvg/0000755000076500000240000000000013245233151015337 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtSvg/qgraphicssvgitem.sip0000644000076500000240000000405513245233151021440 0ustar philstaff00000000000000// qgraphicssvgitem.sip generated by MetaSIP // // This file is part of the QtSvg Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsSvgItem : QGraphicsObject { %TypeHeaderCode #include %End %ConvertToSubClassCode if (sipCpp->type() == 13) { // We need to explicitly cast because of the multiple inheritance. *sipCppRet = static_cast(sipCpp); sipType = sipType_QGraphicsSvgItem; } else sipType = 0; %End public: QGraphicsSvgItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsSvgItem(const QString &fileName, QGraphicsItem *parent /TransferThis/ = 0); void setSharedRenderer(QSvgRenderer *renderer /KeepReference/); QSvgRenderer *renderer() const; void setElementId(const QString &id); QString elementId() const; void setMaximumCacheSize(const QSize &size); QSize maximumCacheSize() const; virtual QRectF boundingRect() const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual int type() const; private: QGraphicsSvgItem(const QGraphicsSvgItem &); }; %ModuleHeaderCode // This is needed by the %ConvertToSubClassCode. #include %End PyQt5_gpl-5.10.1/sip/QtSvg/qsvggenerator.sip0000644000076500000240000000343313245233151020746 0ustar philstaff00000000000000// qsvggenerator.sip generated by MetaSIP // // This file is part of the QtSvg Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSvgGenerator : QPaintDevice { %TypeHeaderCode #include %End public: QSvgGenerator(); virtual ~QSvgGenerator(); QSize size() const; void setSize(const QSize &size); QString fileName() const; void setFileName(const QString &fileName); QIODevice *outputDevice() const; void setOutputDevice(QIODevice *outputDevice); int resolution() const; void setResolution(int resolution); QString title() const; void setTitle(const QString &title); QString description() const; void setDescription(const QString &description); QRect viewBox() const; QRectF viewBoxF() const; void setViewBox(const QRect &viewBox); void setViewBox(const QRectF &viewBox); protected: virtual QPaintEngine *paintEngine() const; virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; }; PyQt5_gpl-5.10.1/sip/QtSvg/qsvgrenderer.sip0000644000076500000240000000566513245233151020577 0ustar philstaff00000000000000// qsvgrenderer.sip generated by MetaSIP // // This file is part of the QtSvg Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSvgRenderer : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSvgRenderer, &sipType_QSvgRenderer, -1, 1}, {sipName_QSvgWidget, &sipType_QSvgWidget, -1, 2}, {sipName_QGraphicsSvgItem, &sipType_QGraphicsSvgItem, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QSvgRenderer(QObject *parent /TransferThis/ = 0); QSvgRenderer(const QString &filename, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QSvgRenderer(const QByteArray &contents, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QSvgRenderer(QXmlStreamReader *contents, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; virtual ~QSvgRenderer(); bool isValid() const; QSize defaultSize() const; bool elementExists(const QString &id) const; QRect viewBox() const; QRectF viewBoxF() const; void setViewBox(const QRect &viewbox); void setViewBox(const QRectF &viewbox); bool animated() const; QRectF boundsOnElement(const QString &id) const; int framesPerSecond() const; void setFramesPerSecond(int num); int currentFrame() const; void setCurrentFrame(int); int animationDuration() const; public slots: bool load(const QString &filename) /ReleaseGIL/; bool load(const QByteArray &contents) /ReleaseGIL/; bool load(QXmlStreamReader *contents) /ReleaseGIL/; void render(QPainter *p) /ReleaseGIL/; void render(QPainter *p, const QRectF &bounds) /ReleaseGIL/; void render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF()) /ReleaseGIL/; signals: void repaintNeeded(); }; PyQt5_gpl-5.10.1/sip/QtSvg/qsvgwidget.sip0000644000076500000240000000266313245233151020247 0ustar philstaff00000000000000// qsvgwidget.sip generated by MetaSIP // // This file is part of the QtSvg Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSvgWidget : QWidget { %TypeHeaderCode #include %End public: QSvgWidget(QWidget *parent /TransferThis/ = 0); QSvgWidget(const QString &file, QWidget *parent /TransferThis/ = 0); virtual ~QSvgWidget(); QSvgRenderer *renderer() const; virtual QSize sizeHint() const; public slots: void load(const QString &file); void load(const QByteArray &contents); protected: virtual void paintEvent(QPaintEvent *event); private: QSvgWidget(const QSvgWidget &); }; PyQt5_gpl-5.10.1/sip/QtSvg/QtSvgmod.sip0000644000076500000240000000402613245233151017622 0ustar philstaff00000000000000// QtSvgmod.sip generated by MetaSIP // // This file is part of the QtSvg Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtSvg, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qgraphicssvgitem.sip %Include qsvggenerator.sip %Include qsvgrenderer.sip %Include qsvgwidget.sip PyQt5_gpl-5.10.1/sip/QtTest/0000755000076500000240000000000013245233151015517 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtTest/qsignalspy.sip0000644000076500000240000000610313245233151020426 0ustar philstaff00000000000000// qsignalspy.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSignalSpy : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode sipType = (sipCpp->inherits("QSignalSpy") ? sipType_QSignalSpy : 0); %End public: QSignalSpy(SIP_PYOBJECT signal /TypeHint="pyqtBoundSignal"/) [(const QObject *obj, const char *aSignal)]; %MethodCode QObject *sender; QByteArray signal_signature; if ((sipError = pyqt5_qttest_get_pyqtsignal_parts(a0, &sender, signal_signature)) == sipErrorNone) sipCpp = new sipQSignalSpy(sender, signal_signature.constData()); else if (sipError == sipErrorContinue) sipError = sipBadCallableArg(0, a0); %End bool isValid() const; QByteArray signal() const; bool wait(int timeout = 5000) /ReleaseGIL/; int __len__() const; %MethodCode sipRes = sipCpp->count(); %End QList __getitem__(int i) const; %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QList(sipCpp->at((int)idx)); %End void __setitem__(int i, const QList &value); %MethodCode int len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __delitem__(int i); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else sipCpp->removeAt(a0); %End }; %ModuleHeaderCode // Imports from QtCore. typedef sipErrorState (*pyqt5_qttest_get_pyqtsignal_parts_t)(PyObject *, QObject **, QByteArray &); extern pyqt5_qttest_get_pyqtsignal_parts_t pyqt5_qttest_get_pyqtsignal_parts; %End %ModuleCode // Imports from QtCore. pyqt5_qttest_get_pyqtsignal_parts_t pyqt5_qttest_get_pyqtsignal_parts; %End %PostInitialisationCode // Imports from QtCore. pyqt5_qttest_get_pyqtsignal_parts = (pyqt5_qttest_get_pyqtsignal_parts_t)sipImportSymbol("pyqt5_get_pyqtsignal_parts"); Q_ASSERT(pyqt5_qttest_get_pyqtsignal_parts); %End PyQt5_gpl-5.10.1/sip/QtTest/qtestcase.sip0000644000076500000240000000203413245233151020227 0ustar philstaff00000000000000// qtestcase.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QTest { %TypeHeaderCode #include %End void qSleep(int ms) /ReleaseGIL/; }; PyQt5_gpl-5.10.1/sip/QtTest/qtestkeyboard.sip0000644000076500000240000000645313245233151021125 0ustar philstaff00000000000000// qtestkeyboard.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QTest { %TypeHeaderCode #include %End enum KeyAction { Press, Release, Click, %If (Qt_5_6_0 -) Shortcut, %End }; void keyClick(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyClick(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyClicks(QWidget *widget, const QString &sequence, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyEvent(QTest::KeyAction action, QWidget *widget, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyPress(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyPress(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyRelease(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyRelease(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); %If (Qt_5_10_0 -) void keySequence(QWidget *widget, const QKeySequence &keySequence); %End void keyEvent(QTest::KeyAction action, QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyEvent(QTest::KeyAction action, QWindow *window, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyClick(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyClick(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyPress(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyPress(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyRelease(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyRelease(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); %If (Qt_5_10_0 -) void keySequence(QWindow *window, const QKeySequence &keySequence); %End }; PyQt5_gpl-5.10.1/sip/QtTest/qtestmouse.sip0000644000076500000240000000542013245233151020446 0ustar philstaff00000000000000// qtestmouse.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QTest { %TypeHeaderCode #include %End enum MouseAction { MousePress, MouseRelease, MouseClick, MouseDClick, MouseMove, }; void mouseClick(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1); void mouseDClick(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1); void mouseMove(QWidget *widget, QPoint pos = QPoint(), int delay = -1); void mousePress(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1); void mouseRelease(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1); void mouseEvent(QTest::MouseAction action, QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier, QPoint pos, int delay = -1); void waitForEvents() /ReleaseGIL/; void mouseEvent(QTest::MouseAction action, QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier, QPoint pos, int delay = -1); void mousePress(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1); void mouseRelease(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1); void mouseClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1); void mouseDClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1); void mouseMove(QWindow *window, QPoint pos = QPoint(), int delay = -1); }; PyQt5_gpl-5.10.1/sip/QtTest/qtestsystem.sip0000644000076500000240000000314013245233151020637 0ustar philstaff00000000000000// qtestsystem.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QTest { %TypeHeaderCode #include %End void qWait(int ms) /ReleaseGIL/; %If (Qt_5_1_0 -) bool qWaitForWindowActive(QWindow *window, int timeout = 5000) /ReleaseGIL/; %End %If (- Qt_5_1_0) bool qWaitForWindowActive(QWindow *window, int timeout = 1000) /ReleaseGIL/; %End %If (Qt_5_1_0 -) bool qWaitForWindowExposed(QWindow *window, int timeout = 5000) /ReleaseGIL/; %End %If (- Qt_5_1_0) bool qWaitForWindowExposed(QWindow *window, int timeout = 1000) /ReleaseGIL/; %End bool qWaitForWindowActive(QWidget *widget, int timeout = 1000) /ReleaseGIL/; bool qWaitForWindowExposed(QWidget *widget, int timeout = 1000) /ReleaseGIL/; }; PyQt5_gpl-5.10.1/sip/QtTest/qtesttouch.sip0000644000076500000240000000534313245233151020444 0ustar philstaff00000000000000// qtesttouch.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QTest { %TypeHeaderCode #include %End class QTouchEventSequence { %TypeHeaderCode #include %End public: ~QTouchEventSequence(); QTest::QTouchEventSequence &press(int touchId, const QPoint &pt, QWindow *window = 0); QTest::QTouchEventSequence &move(int touchId, const QPoint &pt, QWindow *window = 0); QTest::QTouchEventSequence &release(int touchId, const QPoint &pt, QWindow *window = 0); QTest::QTouchEventSequence &stationary(int touchId); QTest::QTouchEventSequence &press(int touchId, const QPoint &pt, QWidget *widget) [QTest::QTouchEventSequence & (int touchId, const QPoint &pt, QWidget *widget = 0)]; QTest::QTouchEventSequence &move(int touchId, const QPoint &pt, QWidget *widget) [QTest::QTouchEventSequence & (int touchId, const QPoint &pt, QWidget *widget = 0)]; QTest::QTouchEventSequence &release(int touchId, const QPoint &pt, QWidget *widget) [QTest::QTouchEventSequence & (int touchId, const QPoint &pt, QWidget *widget = 0)]; void commit(bool processEvents = true) /ReleaseGIL/; private: QTouchEventSequence(QWidget *widget, QTouchDevice *aDevice, bool autoCommit); QTouchEventSequence(QWindow *window, QTouchDevice *aDevice, bool autoCommit); }; QTest::QTouchEventSequence touchEvent(QWidget *widget, QTouchDevice *device); %MethodCode // Disable auto-committing so that we can copy the instance around. sipRes = new QTest::QTouchEventSequence(QTest::touchEvent(a0, a1, false)); %End QTest::QTouchEventSequence touchEvent(QWindow *window, QTouchDevice *device); %MethodCode // Disable auto-committing so that we can copy the instance around. sipRes = new QTest::QTouchEventSequence(QTest::touchEvent(a0, a1, false)); %End }; PyQt5_gpl-5.10.1/sip/QtTest/QtTestmod.sip0000644000076500000240000000404613245233151020164 0ustar philstaff00000000000000// QtTestmod.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtTest, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qsignalspy.sip %Include qtestcase.sip %Include qtestkeyboard.sip %Include qtestmouse.sip %Include qtestsystem.sip %Include qtesttouch.sip PyQt5_gpl-5.10.1/sip/QtWebChannel/0000755000076500000240000000000013245233151016606 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtWebChannel/QtWebChannelmod.sip0000644000076500000240000000370513245233151022343 0ustar philstaff00000000000000// QtWebChannelmod.sip generated by MetaSIP // // This file is part of the QtWebChannel Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtWebChannel, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qwebchannel.sip %Include qwebchannelabstracttransport.sip PyQt5_gpl-5.10.1/sip/QtWebChannel/qwebchannel.sip0000644000076500000240000000442713245233151021621 0ustar philstaff00000000000000// qwebchannel.sip generated by MetaSIP // // This file is part of the QtWebChannel Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QWebChannel : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QWebChannelAbstractTransport, &sipType_QWebChannelAbstractTransport, -1, 1}, {sipName_QWebChannel, &sipType_QWebChannel, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: explicit QWebChannel(QObject *parent /TransferThis/ = 0); virtual ~QWebChannel(); void registerObjects(const QHash &objects); QHash registeredObjects() const; void registerObject(const QString &id, QObject *object); void deregisterObject(QObject *object); bool blockUpdates() const; void setBlockUpdates(bool block); signals: void blockUpdatesChanged(bool block); public slots: void connectTo(QWebChannelAbstractTransport *transport); void disconnectFrom(QWebChannelAbstractTransport *transport); private: QWebChannel(const QWebChannel &); }; %End PyQt5_gpl-5.10.1/sip/QtWebChannel/qwebchannelabstracttransport.sip0000644000076500000240000000262113245233151025314 0ustar philstaff00000000000000// qwebchannelabstracttransport.sip generated by MetaSIP // // This file is part of the QtWebChannel Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QWebChannelAbstractTransport : QObject { %TypeHeaderCode #include %End public: explicit QWebChannelAbstractTransport(QObject *parent /TransferThis/ = 0); virtual ~QWebChannelAbstractTransport(); public slots: virtual void sendMessage(const QJsonObject &message) = 0; signals: void messageReceived(const QJsonObject &message, QWebChannelAbstractTransport *transport); }; %End PyQt5_gpl-5.10.1/sip/QtWebEngine/0000755000076500000240000000000013245233151016443 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtWebEngine/qquickwebengineprofile.sip0000644000076500000240000001045313245233151023725 0ustar philstaff00000000000000// qquickwebengineprofile.sip generated by MetaSIP // // This file is part of the QtWebEngine Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_6_0 -) class QQuickWebEngineProfile : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QQuickWebEngineProfile, &sipType_QQuickWebEngineProfile, -1, 1}, #if QT_VERSION >= 0x050900 {sipName_QQuickWebEngineScript, &sipType_QQuickWebEngineScript, -1, -1}, #else {0, 0, -1, -1}, #endif }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QQuickWebEngineProfile(QObject *parent /TransferThis/ = 0); virtual ~QQuickWebEngineProfile(); enum HttpCacheType { MemoryHttpCache, DiskHttpCache, %If (Qt_5_7_0 -) NoCache, %End }; enum PersistentCookiesPolicy { NoPersistentCookies, AllowPersistentCookies, ForcePersistentCookies, }; QString storageName() const; void setStorageName(const QString &name); bool isOffTheRecord() const; void setOffTheRecord(bool offTheRecord); QString persistentStoragePath() const; void setPersistentStoragePath(const QString &path); QString cachePath() const; void setCachePath(const QString &path); QString httpUserAgent() const; void setHttpUserAgent(const QString &userAgent); QQuickWebEngineProfile::HttpCacheType httpCacheType() const; void setHttpCacheType(QQuickWebEngineProfile::HttpCacheType); QQuickWebEngineProfile::PersistentCookiesPolicy persistentCookiesPolicy() const; void setPersistentCookiesPolicy(QQuickWebEngineProfile::PersistentCookiesPolicy); int httpCacheMaximumSize() const; void setHttpCacheMaximumSize(int maxSize); QString httpAcceptLanguage() const; void setHttpAcceptLanguage(const QString &httpAcceptLanguage); QWebEngineCookieStore *cookieStore() const; void setRequestInterceptor(QWebEngineUrlRequestInterceptor *interceptor); const QWebEngineUrlSchemeHandler *urlSchemeHandler(const QByteArray &) const; void installUrlSchemeHandler(const QByteArray &scheme, QWebEngineUrlSchemeHandler *); void removeUrlScheme(const QByteArray &scheme); void removeUrlSchemeHandler(QWebEngineUrlSchemeHandler *); void removeAllUrlSchemeHandlers(); %If (Qt_5_7_0 -) void clearHttpCache(); %End static QQuickWebEngineProfile *defaultProfile(); signals: void storageNameChanged(); void offTheRecordChanged(); void persistentStoragePathChanged(); void cachePathChanged(); void httpUserAgentChanged(); void httpCacheTypeChanged(); void persistentCookiesPolicyChanged(); void httpCacheMaximumSizeChanged(); void httpAcceptLanguageChanged(); public: %If (Qt_5_8_0 -) void setSpellCheckLanguages(const QStringList &languages); %End %If (Qt_5_8_0 -) QStringList spellCheckLanguages() const; %End %If (Qt_5_8_0 -) void setSpellCheckEnabled(bool enabled); %End %If (Qt_5_8_0 -) bool isSpellCheckEnabled() const; %End signals: %If (Qt_5_8_0 -) void spellCheckLanguagesChanged(); %End %If (Qt_5_8_0 -) void spellCheckEnabledChanged(); %End }; %End PyQt5_gpl-5.10.1/sip/QtWebEngine/qquickwebenginescript.sip0000644000076500000240000000455113245233151023573 0ustar philstaff00000000000000// qquickwebenginescript.sip generated by MetaSIP // // This file is part of the QtWebEngine Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_9_0 -) class QQuickWebEngineScript : QObject { %TypeHeaderCode #include %End public: enum InjectionPoint { Deferred, DocumentReady, DocumentCreation, }; enum ScriptWorldId { MainWorld, ApplicationWorld, UserWorld, }; explicit QQuickWebEngineScript(QObject *parent /TransferThis/ = 0); virtual ~QQuickWebEngineScript(); QString toString() const; QString name() const; QUrl sourceUrl() const; QString sourceCode() const; QQuickWebEngineScript::InjectionPoint injectionPoint() const; QQuickWebEngineScript::ScriptWorldId worldId() const; bool runOnSubframes() const; void setName(const QString &name); void setSourceUrl(const QUrl &url); void setSourceCode(const QString &code); void setInjectionPoint(QQuickWebEngineScript::InjectionPoint injectionPoint); void setWorldId(QQuickWebEngineScript::ScriptWorldId scriptWorldId); void setRunOnSubframes(bool on); signals: void nameChanged(const QString &name); void sourceUrlChanged(const QUrl &url); void sourceCodeChanged(const QString &code); void injectionPointChanged(QQuickWebEngineScript::InjectionPoint injectionPoint); void worldIdChanged(QQuickWebEngineScript::ScriptWorldId scriptWorldId); void runOnSubframesChanged(bool on); protected: virtual void timerEvent(QTimerEvent *e); }; %End PyQt5_gpl-5.10.1/sip/QtWebEngine/qtwebengineglobal.sip0000644000076500000240000000210013245233151022642 0ustar philstaff00000000000000// qtwebengineglobal.sip generated by MetaSIP // // This file is part of the QtWebEngine Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_6_0 -) namespace QtWebEngine { %TypeHeaderCode #include %End void initialize(); }; %End PyQt5_gpl-5.10.1/sip/QtWebEngine/QtWebEnginemod.sip0000644000076500000240000000376713245233151022045 0ustar philstaff00000000000000// QtWebEnginemod.sip generated by MetaSIP // // This file is part of the QtWebEngine Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtWebEngine, keyword_arguments="Optional", use_limited_api=True) %Import QtWebEngineCore/QtWebEngineCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qquickwebengineprofile.sip %Include qquickwebenginescript.sip %Include qtwebengineglobal.sip PyQt5_gpl-5.10.1/sip/QtWebEngineCore/0000755000076500000240000000000013245233151017254 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtWebEngineCore/QtWebEngineCoremod.sip0000644000076500000240000000422413245233151023454 0ustar philstaff00000000000000// QtWebEngineCoremod.sip generated by MetaSIP // // This file is part of the QtWebEngineCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtWebEngineCore, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qwebenginecookiestore.sip %Include qwebenginehttprequest.sip %Include qwebengineurlrequestinfo.sip %Include qwebengineurlrequestinterceptor.sip %Include qwebengineurlrequestjob.sip %Include qwebengineurlschemehandler.sip PyQt5_gpl-5.10.1/sip/QtWebEngineCore/qwebenginecookiestore.sip0000644000076500000240000000463213245233151024371 0ustar philstaff00000000000000// qwebenginecookiestore.sip generated by MetaSIP // // This file is part of the QtWebEngineCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_6_0 -) class QWebEngineCookieStore : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QWebEngineUrlRequestInterceptor, &sipType_QWebEngineUrlRequestInterceptor, -1, 1}, {sipName_QWebEngineUrlRequestJob, &sipType_QWebEngineUrlRequestJob, -1, 2}, {sipName_QWebEngineUrlSchemeHandler, &sipType_QWebEngineUrlSchemeHandler, -1, 3}, {sipName_QWebEngineCookieStore, &sipType_QWebEngineCookieStore, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: virtual ~QWebEngineCookieStore(); void setCookie(const QNetworkCookie &cookie, const QUrl &origin = QUrl()); void deleteCookie(const QNetworkCookie &cookie, const QUrl &origin = QUrl()); void deleteSessionCookies(); void deleteAllCookies(); void loadAllCookies(); signals: void cookieAdded(const QNetworkCookie &cookie); void cookieRemoved(const QNetworkCookie &cookie); private: explicit QWebEngineCookieStore(QObject *parent = 0); QWebEngineCookieStore(const QWebEngineCookieStore &); }; %End PyQt5_gpl-5.10.1/sip/QtWebEngineCore/qwebenginehttprequest.sip0000644000076500000240000000420413245233151024426 0ustar philstaff00000000000000// qwebenginehttprequest.sip generated by MetaSIP // // This file is part of the QtWebEngineCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_9_0 -) class QWebEngineHttpRequest { %TypeHeaderCode #include %End public: enum Method { Get, Post, }; QWebEngineHttpRequest(const QUrl &url = QUrl(), const QWebEngineHttpRequest::Method &method = QWebEngineHttpRequest::Method::Get); QWebEngineHttpRequest(const QWebEngineHttpRequest &other); ~QWebEngineHttpRequest(); static QWebEngineHttpRequest postRequest(const QUrl &url, const QMap &postData); void swap(QWebEngineHttpRequest &other); bool operator==(const QWebEngineHttpRequest &other) const; bool operator!=(const QWebEngineHttpRequest &other) const; QWebEngineHttpRequest::Method method() const; void setMethod(QWebEngineHttpRequest::Method method); QUrl url() const; void setUrl(const QUrl &url); QByteArray postData() const; void setPostData(const QByteArray &postData); bool hasHeader(const QByteArray &headerName) const; QVector headers() const; QByteArray header(const QByteArray &headerName) const; void setHeader(const QByteArray &headerName, const QByteArray &value); void unsetHeader(const QByteArray &headerName); }; %End PyQt5_gpl-5.10.1/sip/QtWebEngineCore/qwebengineurlrequestinfo.sip0000644000076500000240000000463613245233151025136 0ustar philstaff00000000000000// qwebengineurlrequestinfo.sip generated by MetaSIP // // This file is part of the QtWebEngineCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_6_0 -) class QWebEngineUrlRequestInfo { %TypeHeaderCode #include %End public: enum ResourceType { ResourceTypeMainFrame, ResourceTypeSubFrame, ResourceTypeStylesheet, ResourceTypeScript, ResourceTypeImage, ResourceTypeFontResource, ResourceTypeSubResource, ResourceTypeObject, ResourceTypeMedia, ResourceTypeWorker, ResourceTypeSharedWorker, ResourceTypePrefetch, ResourceTypeFavicon, ResourceTypeXhr, ResourceTypePing, ResourceTypeServiceWorker, ResourceTypeUnknown, %If (Qt_5_7_0 -) ResourceTypeCspReport, %End %If (Qt_5_7_0 -) ResourceTypePluginResource, %End }; enum NavigationType { NavigationTypeLink, NavigationTypeTyped, NavigationTypeFormSubmitted, NavigationTypeBackForward, NavigationTypeReload, NavigationTypeOther, }; QWebEngineUrlRequestInfo::ResourceType resourceType() const; QWebEngineUrlRequestInfo::NavigationType navigationType() const; QUrl requestUrl() const; QUrl firstPartyUrl() const; QByteArray requestMethod() const; void block(bool shouldBlock); void redirect(const QUrl &url); void setHttpHeader(const QByteArray &name, const QByteArray &value); private: QWebEngineUrlRequestInfo(const QWebEngineUrlRequestInfo &); ~QWebEngineUrlRequestInfo(); }; %End PyQt5_gpl-5.10.1/sip/QtWebEngineCore/qwebengineurlrequestinterceptor.sip0000644000076500000240000000253413245233151026534 0ustar philstaff00000000000000// qwebengineurlrequestinterceptor.sip generated by MetaSIP // // This file is part of the QtWebEngineCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_6_0 -) class QWebEngineUrlRequestInterceptor : QObject { %TypeHeaderCode #include %End public: explicit QWebEngineUrlRequestInterceptor(QObject *parent /TransferThis/ = 0); virtual void interceptRequest(QWebEngineUrlRequestInfo &info) = 0; private: QWebEngineUrlRequestInterceptor(const QWebEngineUrlRequestInterceptor &); }; %End PyQt5_gpl-5.10.1/sip/QtWebEngineCore/qwebengineurlrequestjob.sip0000644000076500000240000000301013245233151024736 0ustar philstaff00000000000000// qwebengineurlrequestjob.sip generated by MetaSIP // // This file is part of the QtWebEngineCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_6_0 -) class QWebEngineUrlRequestJob : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QWebEngineUrlRequestJob(); enum Error { NoError, UrlNotFound, UrlInvalid, RequestAborted, RequestDenied, RequestFailed, }; QUrl requestUrl() const; QByteArray requestMethod() const; void reply(const QByteArray &contentType, QIODevice *device); void fail(QWebEngineUrlRequestJob::Error error); void redirect(const QUrl &url); }; %End PyQt5_gpl-5.10.1/sip/QtWebEngineCore/qwebengineurlschemehandler.sip0000644000076500000240000000253113245233151025364 0ustar philstaff00000000000000// qwebengineurlschemehandler.sip generated by MetaSIP // // This file is part of the QtWebEngineCore Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_6_0 -) class QWebEngineUrlSchemeHandler : QObject { %TypeHeaderCode #include %End public: QWebEngineUrlSchemeHandler(QObject *parent /TransferThis/ = 0); virtual ~QWebEngineUrlSchemeHandler(); virtual void requestStarted(QWebEngineUrlRequestJob *) = 0; private: QWebEngineUrlSchemeHandler(const QWebEngineUrlSchemeHandler &); }; %End PyQt5_gpl-5.10.1/sip/QtWebEngineWidgets/0000755000076500000240000000000013245233151017772 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtWebEngineWidgets/QtWebEngineWidgetsmod.sip0000644000076500000240000000475613245233151024722 0ustar philstaff00000000000000// QtWebEngineWidgetsmod.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtWebEngineWidgets, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtNetwork/QtNetworkmod.sip %Import QtPrintSupport/QtPrintSupportmod.sip %Import QtWebChannel/QtWebChannelmod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %If (Qt_5_6_0 -) %Import QtWebEngineCore/QtWebEngineCoremod.sip %End %Include qwebenginecertificateerror.sip %Include qwebenginecontextmenudata.sip %Include qwebenginedownloaditem.sip %Include qwebenginefullscreenrequest.sip %Include qwebenginehistory.sip %Include qwebenginepage.sip %Include qwebengineprofile.sip %Include qwebenginescript.sip %Include qwebenginescriptcollection.sip %Include qwebenginesettings.sip %Include qwebengineview.sip PyQt5_gpl-5.10.1/sip/QtWebEngineWidgets/qwebenginecertificateerror.sip0000644000076500000240000000366713245233151026124 0ustar philstaff00000000000000// qwebenginecertificateerror.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QWebEngineCertificateError /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum Error { SslPinnedKeyNotInCertificateChain, CertificateCommonNameInvalid, CertificateDateInvalid, CertificateAuthorityInvalid, CertificateContainsErrors, CertificateNoRevocationMechanism, CertificateUnableToCheckRevocation, CertificateRevoked, CertificateInvalid, CertificateWeakSignatureAlgorithm, CertificateNonUniqueName, CertificateWeakKey, CertificateNameConstraintViolation, %If (Qt_5_7_1 -) CertificateValidityTooLong, %End %If (Qt_5_8_0 -) CertificateTransparencyRequired, %End }; QWebEngineCertificateError::Error error() const; QUrl url() const; bool isOverridable() const; QString errorDescription() const; private: QWebEngineCertificateError(const QWebEngineCertificateError &); }; %End PyQt5_gpl-5.10.1/sip/QtWebEngineWidgets/qwebenginecontextmenudata.sip0000644000076500000240000000346313245233151025765 0ustar philstaff00000000000000// qwebenginecontextmenudata.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_7_0 -) class QWebEngineContextMenuData { %TypeHeaderCode #include %End public: QWebEngineContextMenuData(); QWebEngineContextMenuData(const QWebEngineContextMenuData &other); ~QWebEngineContextMenuData(); enum MediaType { MediaTypeNone, MediaTypeImage, MediaTypeVideo, MediaTypeAudio, MediaTypeCanvas, MediaTypeFile, MediaTypePlugin, }; bool isValid() const; QPoint position() const; QString selectedText() const; QString linkText() const; QUrl linkUrl() const; QUrl mediaUrl() const; QWebEngineContextMenuData::MediaType mediaType() const; bool isContentEditable() const; %If (Qt_5_8_0 -) QString misspelledWord() const; %End %If (Qt_5_8_0 -) QStringList spellCheckerSuggestions() const; %End }; %End PyQt5_gpl-5.10.1/sip/QtWebEngineWidgets/qwebenginedownloaditem.sip0000644000076500000240000000676413245233151025257 0ustar philstaff00000000000000// qwebenginedownloaditem.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QWebEngineDownloadItem : QObject { %TypeHeaderCode #include %End public: virtual ~QWebEngineDownloadItem(); enum DownloadState { DownloadRequested, DownloadInProgress, DownloadCompleted, DownloadCancelled, DownloadInterrupted, }; quint32 id() const; QWebEngineDownloadItem::DownloadState state() const; qint64 totalBytes() const; qint64 receivedBytes() const; QUrl url() const; QString path() const; void setPath(QString path); bool isFinished() const; public slots: void accept(); void cancel(); signals: void finished(); void stateChanged(QWebEngineDownloadItem::DownloadState state); void downloadProgress(qint64 bytesReceived, qint64 bytesTotal); public: %If (Qt_5_6_0 -) QString mimeType() const; %End %If (Qt_5_7_0 -) enum SavePageFormat { UnknownSaveFormat, SingleHtmlSaveFormat, CompleteHtmlSaveFormat, MimeHtmlSaveFormat, }; %End %If (Qt_5_7_0 -) QWebEngineDownloadItem::SavePageFormat savePageFormat() const; %End %If (Qt_5_7_0 -) void setSavePageFormat(QWebEngineDownloadItem::SavePageFormat format); %End %If (Qt_5_8_0 -) enum DownloadType { Attachment, DownloadAttribute, UserRequested, SavePage, }; %End %If (Qt_5_8_0 -) QWebEngineDownloadItem::DownloadType type() const; %End %If (Qt_5_9_0 -) enum DownloadInterruptReason { NoReason, FileFailed, FileAccessDenied, FileNoSpace, FileNameTooLong, FileTooLarge, FileVirusInfected, FileTransientError, FileBlocked, FileSecurityCheckFailed, FileTooShort, FileHashMismatch, NetworkFailed, NetworkTimeout, NetworkDisconnected, NetworkServerDown, NetworkInvalidRequest, ServerFailed, ServerBadContent, ServerUnauthorized, ServerCertProblem, ServerForbidden, ServerUnreachable, UserCanceled, }; %End %If (Qt_5_9_0 -) QWebEngineDownloadItem::DownloadInterruptReason interruptReason() const; %End %If (Qt_5_9_0 -) QString interruptReasonString() const; %End %If (Qt_5_10_0 -) bool isPaused() const; %End public slots: %If (Qt_5_10_0 -) void pause(); %End %If (Qt_5_10_0 -) void resume(); %End signals: %If (Qt_5_10_0 -) void isPausedChanged(bool isPaused); %End private: QWebEngineDownloadItem(const QWebEngineDownloadItem &); }; %End PyQt5_gpl-5.10.1/sip/QtWebEngineWidgets/qwebenginefullscreenrequest.sip0000644000076500000240000000243513245233151026333 0ustar philstaff00000000000000// qwebenginefullscreenrequest.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_6_0 -) class QWebEngineFullScreenRequest { %TypeHeaderCode #include %End public: void reject(); void accept(); bool toggleOn() const; const QUrl &origin() const; private: QWebEngineFullScreenRequest(QWebEnginePage *page, const QUrl &origin, bool toggleOn); }; %End PyQt5_gpl-5.10.1/sip/QtWebEngineWidgets/qwebenginehistory.sip0000644000076500000240000000464413245233151024265 0ustar philstaff00000000000000// qwebenginehistory.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QWebEngineHistoryItem { %TypeHeaderCode #include %End public: QWebEngineHistoryItem(const QWebEngineHistoryItem &other); ~QWebEngineHistoryItem(); QUrl originalUrl() const; QUrl url() const; QString title() const; QDateTime lastVisited() const; QUrl iconUrl() const; bool isValid() const; %If (Qt_5_6_0 -) void swap(QWebEngineHistoryItem &other /Constrained/); %End }; %End %If (Qt_5_4_0 -) class QWebEngineHistory /NoDefaultCtors/ { %TypeHeaderCode #include %End public: void clear(); QList items() const; QList backItems(int maxItems) const; QList forwardItems(int maxItems) const; bool canGoBack() const; bool canGoForward() const; void back(); void forward(); void goToItem(const QWebEngineHistoryItem &item); QWebEngineHistoryItem backItem() const; QWebEngineHistoryItem currentItem() const; QWebEngineHistoryItem forwardItem() const; QWebEngineHistoryItem itemAt(int i) const; int currentItemIndex() const; int count() const /__len__/; private: ~QWebEngineHistory(); QWebEngineHistory(const QWebEngineHistory &); }; %End %If (Qt_5_4_0 -) QDataStream &operator<<(QDataStream &, const QWebEngineHistory & /Constrained/) /ReleaseGIL/; %End %If (Qt_5_4_0 -) QDataStream &operator>>(QDataStream &, QWebEngineHistory & /Constrained/) /ReleaseGIL/; %End PyQt5_gpl-5.10.1/sip/QtWebEngineWidgets/qwebenginepage.sip0000644000076500000240000003532613245233151023501 0ustar philstaff00000000000000// qwebenginepage.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QWebEnginePage : QObject { %TypeHeaderCode #include %End public: enum WebAction { NoWebAction, Back, Forward, Stop, Reload, Cut, Copy, Paste, Undo, Redo, SelectAll, ReloadAndBypassCache, PasteAndMatchStyle, %If (Qt_5_6_0 -) OpenLinkInThisWindow, %End %If (Qt_5_6_0 -) OpenLinkInNewWindow, %End %If (Qt_5_6_0 -) OpenLinkInNewTab, %End %If (Qt_5_6_0 -) CopyLinkToClipboard, %End %If (Qt_5_6_0 -) DownloadLinkToDisk, %End %If (Qt_5_6_0 -) CopyImageToClipboard, %End %If (Qt_5_6_0 -) CopyImageUrlToClipboard, %End %If (Qt_5_6_0 -) DownloadImageToDisk, %End %If (Qt_5_6_0 -) CopyMediaUrlToClipboard, %End %If (Qt_5_6_0 -) ToggleMediaControls, %End %If (Qt_5_6_0 -) ToggleMediaLoop, %End %If (Qt_5_6_0 -) ToggleMediaPlayPause, %End %If (Qt_5_6_0 -) ToggleMediaMute, %End %If (Qt_5_6_0 -) DownloadMediaToDisk, %End %If (Qt_5_6_0 -) InspectElement, %End %If (Qt_5_6_0 -) ExitFullScreen, %End %If (Qt_5_6_0 -) RequestClose, %End %If (Qt_5_7_0 -) Unselect, %End %If (Qt_5_7_0 -) SavePage, %End %If (Qt_5_7_0 -) OpenLinkInNewBackgroundTab, %End %If (Qt_5_8_0 -) ViewSource, %End %If (Qt_5_10_0 -) ToggleBold, %End %If (Qt_5_10_0 -) ToggleItalic, %End %If (Qt_5_10_0 -) ToggleUnderline, %End %If (Qt_5_10_0 -) ToggleStrikethrough, %End %If (Qt_5_10_0 -) AlignLeft, %End %If (Qt_5_10_0 -) AlignCenter, %End %If (Qt_5_10_0 -) AlignRight, %End %If (Qt_5_10_0 -) AlignJustified, %End %If (Qt_5_10_0 -) Indent, %End %If (Qt_5_10_0 -) Outdent, %End %If (Qt_5_10_0 -) InsertOrderedList, %End %If (Qt_5_10_0 -) InsertUnorderedList, %End }; enum FindFlag { FindBackward, FindCaseSensitively, }; typedef QFlags FindFlags; enum WebWindowType { WebBrowserWindow, WebBrowserTab, WebDialog, %If (Qt_5_7_0 -) WebBrowserBackgroundTab, %End }; enum PermissionPolicy { PermissionUnknown, PermissionGrantedByUser, PermissionDeniedByUser, }; enum Feature { Geolocation, MediaAudioCapture, MediaVideoCapture, MediaAudioVideoCapture, %If (Qt_5_5_0 -) MouseLock, %End %If (Qt_5_10_0 -) DesktopVideoCapture, %End %If (Qt_5_10_0 -) DesktopAudioVideoCapture, %End }; enum FileSelectionMode { FileSelectOpen, FileSelectOpenMultiple, }; enum JavaScriptConsoleMessageLevel { InfoMessageLevel, WarningMessageLevel, ErrorMessageLevel, }; explicit QWebEnginePage(QObject *parent /TransferThis/ = 0); %If (Qt_5_5_0 -) QWebEnginePage(QWebEngineProfile *profile, QObject *parent /TransferThis/ = 0); %End virtual ~QWebEnginePage(); QWebEngineHistory *history() const; void setView(QWidget *view); QWidget *view() const; bool hasSelection() const; QString selectedText() const; QAction *action(QWebEnginePage::WebAction action) const; virtual void triggerAction(QWebEnginePage::WebAction action, bool checked = false); virtual bool event(QEvent *); void findText(const QString &subString, QFlags options = 0, SIP_PYCALLABLE resultCallback /AllowNone/ = 0); %MethodCode // Make sure any callable doesn't get garbage collected. Py_XINCREF(a2); Py_BEGIN_ALLOW_THREADS sipCpp->findText(*a0, *a1, [a2](bool arg) { if (a2) { SIP_BLOCK_THREADS PyObject *res; res = PyObject_CallFunctionObjArgs(a2, (arg ? Py_True : Py_False), NULL); Py_DECREF(a2); if (!res) pyqt5_qtwebenginewidgets_err_print(); else Py_DECREF(res); SIP_UNBLOCK_THREADS } }); Py_END_ALLOW_THREADS %End QMenu *createStandardContextMenu() /Factory/; void setFeaturePermission(const QUrl &securityOrigin, QWebEnginePage::Feature feature, QWebEnginePage::PermissionPolicy policy); void load(const QUrl &url); %If (Qt_5_9_0 -) void load(const QWebEngineHttpRequest &request); %End void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()); void toHtml(SIP_PYCALLABLE resultCallback) const; %MethodCode // Make sure the callable doesn't get garbage collected. Py_INCREF(a0); Py_BEGIN_ALLOW_THREADS sipCpp->toHtml([a0](const QString &arg) { SIP_BLOCK_THREADS PyObject *res; res = sipCallMethod(NULL, a0, "N", new QString(arg), sipType_QString, NULL); Py_DECREF(a0); if (!res) pyqt5_qtwebenginewidgets_err_print(); else Py_DECREF(res); SIP_UNBLOCK_THREADS }); Py_END_ALLOW_THREADS %End void toPlainText(SIP_PYCALLABLE resultCallback) const; %MethodCode // Make sure the callable doesn't get garbage collected. Py_INCREF(a0); Py_BEGIN_ALLOW_THREADS sipCpp->toPlainText([a0](const QString &arg) { SIP_BLOCK_THREADS PyObject *res; res = sipCallMethod(NULL, a0, "N", new QString(arg), sipType_QString, NULL); Py_DECREF(a0); if (!res) pyqt5_qtwebenginewidgets_err_print(); else Py_DECREF(res); SIP_UNBLOCK_THREADS }); Py_END_ALLOW_THREADS %End QString title() const; void setUrl(const QUrl &url); QUrl url() const; QUrl requestedUrl() const; QUrl iconUrl() const; qreal zoomFactor() const; void setZoomFactor(qreal factor); %If (Qt_5_7_0 -) void runJavaScript(const QString &scriptSource, quint32 worldId); %End %If (Qt_5_7_0 -) void runJavaScript(const QString &scriptSource, quint32 worldId, SIP_PYCALLABLE resultCallback); %MethodCode // Make sure the callable doesn't get garbage collected. Py_INCREF(a2); Py_BEGIN_ALLOW_THREADS sipCpp->runJavaScript(*a0, a1, [a2](const QVariant &arg) { SIP_BLOCK_THREADS PyObject *res; res = sipCallMethod(NULL, a2, "N", new QVariant(arg), sipType_QVariant, NULL); Py_DECREF(a2); if (!res) pyqt5_qtwebenginewidgets_err_print(); else Py_DECREF(res); SIP_UNBLOCK_THREADS }); Py_END_ALLOW_THREADS %End %End void runJavaScript(const QString &scriptSource); void runJavaScript(const QString &scriptSource, SIP_PYCALLABLE resultCallback); %MethodCode // Make sure the callable doesn't get garbage collected. Py_INCREF(a1); Py_BEGIN_ALLOW_THREADS sipCpp->runJavaScript(*a0, [a1](const QVariant &arg) { SIP_BLOCK_THREADS PyObject *res; res = sipCallMethod(NULL, a1, "N", new QVariant(arg), sipType_QVariant, NULL); Py_DECREF(a1); if (!res) pyqt5_qtwebenginewidgets_err_print(); else Py_DECREF(res); SIP_UNBLOCK_THREADS }); Py_END_ALLOW_THREADS %End QWebEngineSettings *settings() const; signals: void loadStarted(); void loadProgress(int progress); void loadFinished(bool ok); void linkHovered(const QString &url); void selectionChanged(); void geometryChangeRequested(const QRect &geom); void windowCloseRequested(); void featurePermissionRequested(const QUrl &securityOrigin, QWebEnginePage::Feature feature); void featurePermissionRequestCanceled(const QUrl &securityOrigin, QWebEnginePage::Feature feature); void authenticationRequired(const QUrl &requestUrl, QAuthenticator *authenticator); void proxyAuthenticationRequired(const QUrl &requestUrl, QAuthenticator *authenticator, const QString &proxyHost); void titleChanged(const QString &title); void urlChanged(const QUrl &url); void iconUrlChanged(const QUrl &url); protected: virtual QWebEnginePage *createWindow(QWebEnginePage::WebWindowType type); virtual QStringList chooseFiles(QWebEnginePage::FileSelectionMode mode, const QStringList &oldFiles, const QStringList &acceptedMimeTypes); virtual void javaScriptAlert(const QUrl &securityOrigin, const QString &msg); virtual bool javaScriptConfirm(const QUrl &securityOrigin, const QString &msg); virtual bool javaScriptPrompt(const QUrl &securityOrigin, const QString &msg, const QString &defaultValue, QString *result /Out/); virtual void javaScriptConsoleMessage(QWebEnginePage::JavaScriptConsoleMessageLevel level, const QString &message, int lineNumber, const QString &sourceID); virtual bool certificateError(const QWebEngineCertificateError &certificateError /NoCopy/); public: %If (Qt_5_5_0 -) enum NavigationType { NavigationTypeLinkClicked, NavigationTypeTyped, NavigationTypeFormSubmitted, NavigationTypeBackForward, NavigationTypeReload, NavigationTypeOther, }; %End %If (Qt_5_5_0 -) QWebEngineProfile *profile() const; %End %If (Qt_5_5_0 -) QWebEngineScriptCollection &scripts(); %End %If (Qt_5_5_0 -) QWebChannel *webChannel() const; %End %If (Qt_5_5_0 -) void setWebChannel(QWebChannel *); %End %If (Qt_5_7_0 -) void setWebChannel(QWebChannel *, uint worldId); %End protected: %If (Qt_5_5_0 -) virtual bool acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame); %End public: %If (Qt_5_6_0 -) enum RenderProcessTerminationStatus { NormalTerminationStatus, AbnormalTerminationStatus, CrashedTerminationStatus, KilledTerminationStatus, }; %End %If (Qt_5_6_0 -) QColor backgroundColor() const; %End %If (Qt_5_6_0 -) void setBackgroundColor(const QColor &color); %End signals: %If (Qt_5_6_0 -) void fullScreenRequested(QWebEngineFullScreenRequest fullScreenRequest); %End %If (Qt_5_6_0 -) void renderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode); %End public: %If (Qt_5_7_0 -) QIcon icon() const; %End %If (Qt_5_7_0 -) QPointF scrollPosition() const; %End %If (Qt_5_7_0 -) QSizeF contentsSize() const; %End %If (Qt_5_7_0 -) bool isAudioMuted() const; %End %If (Qt_5_7_0 -) void setAudioMuted(bool muted); %End %If (Qt_5_7_0 -) bool recentlyAudible() const; %End %If (Qt_5_7_0 -) void printToPdf(const QString &filePath, const QPageLayout &pageLayout = QPageLayout(QPageSize(QPageSize::PageSizeId::A4), QPageLayout::Orientation::Portrait, QMarginsF())); %End %If (Qt_5_7_0 -) void printToPdf(SIP_PYCALLABLE resultCallback, const QPageLayout &pageLayout = QPageLayout(QPageSize(QPageSize::PageSizeId::A4), QPageLayout::Orientation::Portrait, QMarginsF())); %MethodCode // Make sure the callable doesn't get garbage collected. Py_INCREF(a0); Py_BEGIN_ALLOW_THREADS sipCpp->printToPdf([a0](const QByteArray &arg) { SIP_BLOCK_THREADS PyObject *res; res = sipCallMethod(NULL, a0, "N", new QByteArray(arg), sipType_QByteArray, NULL); Py_DECREF(a0); if (!res) pyqt5_qtwebenginewidgets_err_print(); else Py_DECREF(res); SIP_UNBLOCK_THREADS }, *a1); Py_END_ALLOW_THREADS %End %End %If (Qt_5_7_0 -) const QWebEngineContextMenuData &contextMenuData() const; %End signals: %If (Qt_5_7_0 -) void iconChanged(const QIcon &icon); %End %If (Qt_5_7_0 -) void scrollPositionChanged(const QPointF &position); %End %If (Qt_5_7_0 -) void contentsSizeChanged(const QSizeF &size); %End %If (Qt_5_7_0 -) void audioMutedChanged(bool muted); %End %If (Qt_5_7_0 -) void recentlyAudibleChanged(bool recentlyAudible); %End %If (Qt_5_9_0 -) void pdfPrintingFinished(const QString &filePath, bool success); %End public: %If (Qt_5_8_0 -) void replaceMisspelledWord(const QString &replacement); %End %If (Qt_5_8_0 -) void save(const QString &filePath, QWebEngineDownloadItem::SavePageFormat format = QWebEngineDownloadItem::MimeHtmlSaveFormat) const /ReleaseGIL/; %End %If (Qt_5_8_0 -) %If (Py_v3) %If (PyQt_Printer) void print(QPrinter *printer, SIP_PYCALLABLE resultCallback); %MethodCode // Make sure the callable doesn't get garbage collected. Py_INCREF(a1); Py_BEGIN_ALLOW_THREADS sipCpp->print(a0, [a1](bool arg) { SIP_BLOCK_THREADS PyObject *res; res = sipCallMethod(NULL, a1, "b", arg); Py_DECREF(a1); if (!res) pyqt5_qtwebenginewidgets_err_print(); else Py_DECREF(res); SIP_UNBLOCK_THREADS }); Py_END_ALLOW_THREADS %End %End %End %End %If (Qt_5_10_0 -) void download(const QUrl &url, const QString &filename = QString()); %End private: %If (Qt_5_6_0 -) QWebEnginePage(const QWebEnginePage &); %End }; %End PyQt5_gpl-5.10.1/sip/QtWebEngineWidgets/qwebengineprofile.sip0000644000076500000240000000725613245233151024226 0ustar philstaff00000000000000// qwebengineprofile.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QWebEngineProfile : QObject { %TypeHeaderCode #include %End public: explicit QWebEngineProfile(QObject *parent /TransferThis/ = 0); QWebEngineProfile(const QString &name, QObject *parent /TransferThis/ = 0); virtual ~QWebEngineProfile(); enum HttpCacheType { MemoryHttpCache, DiskHttpCache, %If (Qt_5_7_0 -) NoCache, %End }; enum PersistentCookiesPolicy { NoPersistentCookies, AllowPersistentCookies, ForcePersistentCookies, }; QString storageName() const; bool isOffTheRecord() const; QString persistentStoragePath() const; void setPersistentStoragePath(const QString &path); QString cachePath() const; void setCachePath(const QString &path); QString httpUserAgent() const; void setHttpUserAgent(const QString &userAgent); QWebEngineProfile::HttpCacheType httpCacheType() const; void setHttpCacheType(QWebEngineProfile::HttpCacheType); QWebEngineProfile::PersistentCookiesPolicy persistentCookiesPolicy() const; void setPersistentCookiesPolicy(QWebEngineProfile::PersistentCookiesPolicy); int httpCacheMaximumSize() const; void setHttpCacheMaximumSize(int maxSize); void clearAllVisitedLinks(); void clearVisitedLinks(const QList &urls); bool visitedLinksContainsUrl(const QUrl &url) const; QWebEngineSettings *settings() const; QWebEngineScriptCollection *scripts() const; static QWebEngineProfile *defaultProfile(); signals: void downloadRequested(QWebEngineDownloadItem *download); public: %If (Qt_5_6_0 -) void setHttpAcceptLanguage(const QString &httpAcceptLanguage); %End %If (Qt_5_6_0 -) QString httpAcceptLanguage() const; %End %If (Qt_5_6_0 -) QWebEngineCookieStore *cookieStore(); %End %If (Qt_5_6_0 -) void setRequestInterceptor(QWebEngineUrlRequestInterceptor *interceptor); %End %If (Qt_5_6_0 -) const QWebEngineUrlSchemeHandler *urlSchemeHandler(const QByteArray &) const; %End %If (Qt_5_6_0 -) void installUrlSchemeHandler(const QByteArray &scheme, QWebEngineUrlSchemeHandler *); %End %If (Qt_5_6_0 -) void removeUrlScheme(const QByteArray &scheme); %End %If (Qt_5_6_0 -) void removeUrlSchemeHandler(QWebEngineUrlSchemeHandler *); %End %If (Qt_5_6_0 -) void removeAllUrlSchemeHandlers(); %End %If (Qt_5_7_0 -) void clearHttpCache(); %End %If (Qt_5_8_0 -) void setSpellCheckLanguages(const QStringList &languages); %End %If (Qt_5_8_0 -) QStringList spellCheckLanguages() const; %End %If (Qt_5_8_0 -) void setSpellCheckEnabled(bool enabled); %End %If (Qt_5_8_0 -) bool isSpellCheckEnabled() const; %End private: %If (Qt_5_6_0 -) QWebEngineProfile(const QWebEngineProfile &); %End }; %End PyQt5_gpl-5.10.1/sip/QtWebEngineWidgets/qwebenginescript.sip0000644000076500000240000000366213245233151024067 0ustar philstaff00000000000000// qwebenginescript.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QWebEngineScript { %TypeHeaderCode #include %End public: enum InjectionPoint { Deferred, DocumentReady, DocumentCreation, }; enum ScriptWorldId { MainWorld, ApplicationWorld, UserWorld, }; QWebEngineScript(); QWebEngineScript(const QWebEngineScript &other); ~QWebEngineScript(); bool isNull() const; QString name() const; void setName(const QString &); QString sourceCode() const; void setSourceCode(const QString &); QWebEngineScript::InjectionPoint injectionPoint() const; void setInjectionPoint(QWebEngineScript::InjectionPoint); quint32 worldId() const; void setWorldId(quint32); bool runsOnSubFrames() const; void setRunsOnSubFrames(bool on); bool operator==(const QWebEngineScript &other) const; bool operator!=(const QWebEngineScript &other) const; void swap(QWebEngineScript &other /Constrained/); }; %End PyQt5_gpl-5.10.1/sip/QtWebEngineWidgets/qwebenginescriptcollection.sip0000644000076500000240000000320313245233151026132 0ustar philstaff00000000000000// qwebenginescriptcollection.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_5_0 -) class QWebEngineScriptCollection { %TypeHeaderCode #include %End public: ~QWebEngineScriptCollection(); bool isEmpty() const; int count() const /__len__/; bool contains(const QWebEngineScript &value) const; QWebEngineScript findScript(const QString &name) const; QList findScripts(const QString &name) const; void insert(const QWebEngineScript &); void insert(const QList &list); bool remove(const QWebEngineScript &); void clear(); QList toList() const; private: QWebEngineScriptCollection(const QWebEngineScriptCollection &); }; %End PyQt5_gpl-5.10.1/sip/QtWebEngineWidgets/qwebenginesettings.sip0000644000076500000240000000667013245233151024425 0ustar philstaff00000000000000// qwebenginesettings.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QWebEngineSettings { %TypeHeaderCode #include %End public: enum FontFamily { StandardFont, FixedFont, SerifFont, SansSerifFont, CursiveFont, FantasyFont, %If (Qt_5_7_0 -) PictographFont, %End }; enum WebAttribute { AutoLoadImages, JavascriptEnabled, JavascriptCanOpenWindows, JavascriptCanAccessClipboard, LinksIncludedInFocusChain, LocalStorageEnabled, LocalContentCanAccessRemoteUrls, XSSAuditingEnabled, SpatialNavigationEnabled, LocalContentCanAccessFileUrls, HyperlinkAuditingEnabled, ScrollAnimatorEnabled, ErrorPageEnabled, %If (Qt_5_6_0 -) PluginsEnabled, %End %If (Qt_5_6_0 -) FullScreenSupportEnabled, %End %If (Qt_5_7_0 -) ScreenCaptureEnabled, %End %If (Qt_5_7_0 -) WebGLEnabled, %End %If (Qt_5_7_0 -) Accelerated2dCanvasEnabled, %End %If (Qt_5_7_0 -) AutoLoadIconsForPage, %End %If (Qt_5_7_0 -) TouchIconsEnabled, %End %If (Qt_5_8_0 -) FocusOnNavigationEnabled, %End %If (Qt_5_8_0 -) PrintElementBackgrounds, %End %If (Qt_5_8_0 -) AllowRunningInsecureContent, %End %If (Qt_5_9_0 -) AllowGeolocationOnInsecureOrigins, %End %If (Qt_5_10_0 -) AllowWindowActivationFromJavaScript, %End %If (Qt_5_10_0 -) ShowScrollBars, %End }; enum FontSize { MinimumFontSize, MinimumLogicalFontSize, DefaultFontSize, DefaultFixedFontSize, }; %If (Qt_5_5_0 -) static QWebEngineSettings *defaultSettings(); %End static QWebEngineSettings *globalSettings(); void setFontFamily(QWebEngineSettings::FontFamily which, const QString &family); QString fontFamily(QWebEngineSettings::FontFamily which) const; void resetFontFamily(QWebEngineSettings::FontFamily which); void setFontSize(QWebEngineSettings::FontSize type, int size); int fontSize(QWebEngineSettings::FontSize type) const; void resetFontSize(QWebEngineSettings::FontSize type); void setAttribute(QWebEngineSettings::WebAttribute attr, bool on); bool testAttribute(QWebEngineSettings::WebAttribute attr) const; void resetAttribute(QWebEngineSettings::WebAttribute attr); void setDefaultTextEncoding(const QString &encoding); QString defaultTextEncoding() const; private: QWebEngineSettings(const QWebEngineSettings &); ~QWebEngineSettings(); }; %End PyQt5_gpl-5.10.1/sip/QtWebEngineWidgets/qwebengineview.sip0000644000076500000240000001376413245233151023541 0ustar philstaff00000000000000// qwebengineview.sip generated by MetaSIP // // This file is part of the QtWebEngineWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) class QWebEngineView : QWidget { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { #if QT_VERSION >= 0x050500 {sipName_QWebEngineProfile, &sipType_QWebEngineProfile, -1, 1}, #else {0, 0, -1, 1}, #endif {sipName_QWebEnginePage, &sipType_QWebEnginePage, -1, 2}, {sipName_QWebEngineView, &sipType_QWebEngineView, -1, 3}, #if QT_VERSION >= 0x050500 {sipName_QWebEngineDownloadItem, &sipType_QWebEngineDownloadItem, -1, -1}, #else {0, 0, -1, -1}, #endif }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: explicit QWebEngineView(QWidget *parent /TransferThis/ = 0); virtual ~QWebEngineView(); QWebEnginePage *page() const; void setPage(QWebEnginePage *page); void load(const QUrl &url); %If (Qt_5_9_0 -) void load(const QWebEngineHttpRequest &request); %End void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()); QWebEngineHistory *history() const; QString title() const; void setUrl(const QUrl &url); QUrl url() const; QUrl iconUrl() const; bool hasSelection() const; QString selectedText() const; QAction *pageAction(QWebEnginePage::WebAction action) const; void triggerPageAction(QWebEnginePage::WebAction action, bool checked = false); qreal zoomFactor() const; void setZoomFactor(qreal factor); void findText(const QString &subString, QFlags options = 0, SIP_PYCALLABLE resultCallback /AllowNone/ = 0); %MethodCode // Make sure any callable doesn't get garbage collected. Py_XINCREF(a2); Py_BEGIN_ALLOW_THREADS sipCpp->findText(*a0, *a1, [a2](bool arg) { if (a2) { SIP_BLOCK_THREADS PyObject *res; res = PyObject_CallFunctionObjArgs(a2, (arg ? Py_True : Py_False), NULL); Py_DECREF(a2); if (!res) pyqt5_qtwebenginewidgets_err_print(); else Py_DECREF(res); SIP_UNBLOCK_THREADS } }); Py_END_ALLOW_THREADS %End virtual QSize sizeHint() const; QWebEngineSettings *settings() const; public slots: void stop(); void back(); void forward(); void reload(); signals: void loadStarted(); void loadProgress(int progress); void loadFinished(bool); void titleChanged(const QString &title); void selectionChanged(); void urlChanged(const QUrl &); void iconUrlChanged(const QUrl &); %If (Qt_5_6_0 -) void renderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus terminationStatus, int exitCode); %End protected: virtual QWebEngineView *createWindow(QWebEnginePage::WebWindowType type); virtual void contextMenuEvent(QContextMenuEvent *); virtual bool event(QEvent *); %If (Qt_5_6_0 -) virtual void showEvent(QShowEvent *); %End %If (Qt_5_6_0 -) virtual void hideEvent(QHideEvent *); %End public: %If (Qt_5_7_0 -) QIcon icon() const; %End signals: %If (Qt_5_7_0 -) void iconChanged(const QIcon &); %End protected: %If (Qt_5_7_0 -) virtual void dragEnterEvent(QDragEnterEvent *e); %End %If (Qt_5_7_0 -) virtual void dragLeaveEvent(QDragLeaveEvent *e); %End %If (Qt_5_7_0 -) virtual void dragMoveEvent(QDragMoveEvent *e); %End %If (Qt_5_7_0 -) virtual void dropEvent(QDropEvent *e); %End private: %If (Qt_5_6_0 -) QWebEngineView(const QWebEngineView &); %End }; %End %ModuleHeaderCode // Imports from QtCore. typedef void (*pyqt5_qtwebenginewidgets_err_print_t)(); extern pyqt5_qtwebenginewidgets_err_print_t pyqt5_qtwebenginewidgets_err_print; %End %ModuleCode // Imports from QtCore. pyqt5_qtwebenginewidgets_err_print_t pyqt5_qtwebenginewidgets_err_print; // Needed by the %PreInitialisationCode. #include %End %PreInitialisationCode // QtWebEngineWidgets uses Q_COREAPP_STARTUP_FUNCTION so, in order to make sure // things work (particularly on Windows) when we dynamically load the code, we // check things have been done in the right order. if (QCoreApplication::instance()) { PyErr_SetString(PyExc_ImportError, "QtWebEngineWidgets must be imported before a QCoreApplication instance is created"); SIP_MODULE_RETURN(NULL); } %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtwebenginewidgets_err_print = (pyqt5_qtwebenginewidgets_err_print_t)sipImportSymbol("pyqt5_err_print"); Q_ASSERT(pyqt5_qtwebenginewidgets_err_print); %End PyQt5_gpl-5.10.1/sip/QtWebKit/0000755000076500000240000000000013245233151015765 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtWebKit/QtWebKitmod.sip0000644000076500000240000000422613245233151020700 0ustar philstaff00000000000000// QtWebKitmod.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtWebKit, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qwebdatabase.sip %Include qwebelement.sip %Include qwebkitglobal.sip %Include qwebhistory.sip %Include qwebhistoryinterface.sip %Include qwebpluginfactory.sip %Include qwebsecurityorigin.sip %Include qwebsettings.sip PyQt5_gpl-5.10.1/sip/QtWebKit/qwebdatabase.sip0000644000076500000240000000254313245233151021131 0ustar philstaff00000000000000// qwebdatabase.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebDatabase { %TypeHeaderCode #include %End public: QWebDatabase(const QWebDatabase &other); ~QWebDatabase(); QString name() const; QString displayName() const; qint64 expectedSize() const; qint64 size() const; QString fileName() const; QWebSecurityOrigin origin() const; static void removeDatabase(const QWebDatabase &db); static void removeAllDatabases(); }; PyQt5_gpl-5.10.1/sip/QtWebKit/qwebelement.sip0000644000076500000240000001213013245233151021007 0ustar philstaff00000000000000// qwebelement.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebFrame /External/; class QWebElement { %TypeHeaderCode #include %End public: QWebElement(); QWebElement(const QWebElement &); ~QWebElement(); bool operator==(const QWebElement &o) const; bool operator!=(const QWebElement &o) const; bool isNull() const; QWebElementCollection findAll(const QString &selectorQuery) const; QWebElement findFirst(const QString &selectorQuery) const; void setPlainText(const QString &text); QString toPlainText() const; void setOuterXml(const QString &markup); QString toOuterXml() const; void setInnerXml(const QString &markup); QString toInnerXml() const; void setAttribute(const QString &name, const QString &value); void setAttributeNS(const QString &namespaceUri, const QString &name, const QString &value); QString attribute(const QString &name, const QString &defaultValue = QString()) const; QString attributeNS(const QString &namespaceUri, const QString &name, const QString &defaultValue = QString()) const; bool hasAttribute(const QString &name) const; bool hasAttributeNS(const QString &namespaceUri, const QString &name) const; void removeAttribute(const QString &name); void removeAttributeNS(const QString &namespaceUri, const QString &name); bool hasAttributes() const; QStringList attributeNames(const QString &namespaceUri = QString()) const; QStringList classes() const; bool hasClass(const QString &name) const; void addClass(const QString &name); void removeClass(const QString &name); void toggleClass(const QString &name); bool hasFocus() const; void setFocus(); QRect geometry() const; QString tagName() const; QString prefix() const; QString localName() const; QString namespaceUri() const; QWebElement parent() const; QWebElement firstChild() const; QWebElement lastChild() const; QWebElement nextSibling() const; QWebElement previousSibling() const; QWebElement document() const; QWebFrame *webFrame() const; void appendInside(const QString &markup); void appendInside(const QWebElement &element); void prependInside(const QString &markup); void prependInside(const QWebElement &element); void appendOutside(const QString &markup); void appendOutside(const QWebElement &element); void prependOutside(const QString &markup); void prependOutside(const QWebElement &element); void encloseContentsWith(const QWebElement &element); void encloseContentsWith(const QString &markup); void encloseWith(const QString &markup); void encloseWith(const QWebElement &element); void replace(const QString &markup); void replace(const QWebElement &element); QWebElement clone() const; QWebElement &takeFromDocument(); void removeFromDocument(); void removeAllChildren(); QVariant evaluateJavaScript(const QString &scriptSource); enum StyleResolveStrategy { InlineStyle, CascadedStyle, ComputedStyle, }; QString styleProperty(const QString &name, QWebElement::StyleResolveStrategy strategy) const; void setStyleProperty(const QString &name, const QString &value); void render(QPainter *painter); void render(QPainter *painter, const QRect &clip); }; class QWebElementCollection { %TypeHeaderCode #include %End public: QWebElementCollection(); QWebElementCollection(const QWebElement &contextElement, const QString &query); QWebElementCollection(const QWebElementCollection &); ~QWebElementCollection(); QWebElementCollection operator+(const QWebElementCollection &other) const; QWebElementCollection &operator+=(const QWebElementCollection &other); void append(const QWebElementCollection &collection); int count() const /__len__/; QWebElement at(int i) const; QWebElement operator[](int i) const; %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QWebElement(sipCpp->operator[]((int)idx)); %End QWebElement first() const; QWebElement last() const; QList toList() const; }; PyQt5_gpl-5.10.1/sip/QtWebKit/qwebhistory.sip0000644000076500000240000000442413245233151021066 0ustar philstaff00000000000000// qwebhistory.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebHistoryItem { %TypeHeaderCode #include %End public: QWebHistoryItem(const QWebHistoryItem &other); ~QWebHistoryItem(); QUrl originalUrl() const; QUrl url() const; QString title() const; QDateTime lastVisited() const; QIcon icon() const; QVariant userData() const; void setUserData(const QVariant &userData); bool isValid() const; }; class QWebHistory { %TypeHeaderCode #include %End public: void clear(); QList items() const; QList backItems(int maxItems) const; QList forwardItems(int maxItems) const; bool canGoBack() const; bool canGoForward() const; void back(); void forward(); void goToItem(const QWebHistoryItem &item); QWebHistoryItem backItem() const; QWebHistoryItem currentItem() const; QWebHistoryItem forwardItem() const; QWebHistoryItem itemAt(int i) const; int count() const /__len__/; private: QWebHistory(); QWebHistory(const QWebHistory &); ~QWebHistory(); public: int currentItemIndex() const; int maximumItemCount() const; void setMaximumItemCount(int count); }; QDataStream &operator<<(QDataStream &, const QWebHistory & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QWebHistory & /Constrained/) /ReleaseGIL/; PyQt5_gpl-5.10.1/sip/QtWebKit/qwebhistoryinterface.sip0000644000076500000240000000263213245233151022746 0ustar philstaff00000000000000// qwebhistoryinterface.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebHistoryInterface : QObject { %TypeHeaderCode #include %End public: QWebHistoryInterface(QObject *parent /TransferThis/ = 0); virtual ~QWebHistoryInterface(); static void setDefaultInterface(QWebHistoryInterface *defaultInterface /KeepReference/); static QWebHistoryInterface *defaultInterface(); virtual bool historyContains(const QString &url) const = 0; virtual void addHistoryEntry(const QString &url) = 0; }; PyQt5_gpl-5.10.1/sip/QtWebKit/qwebkitglobal.sip0000644000076500000240000000206713245233151021336 0ustar philstaff00000000000000// qwebkitglobal.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End QString qWebKitVersion(); int qWebKitMajorVersion(); int qWebKitMinorVersion(); PyQt5_gpl-5.10.1/sip/QtWebKit/qwebpluginfactory.sip0000644000076500000240000000572113245233151022254 0ustar philstaff00000000000000// qwebpluginfactory.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebPluginFactory : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QWebHistoryInterface, &sipType_QWebHistoryInterface, -1, 1}, {sipName_QWebPluginFactory, &sipType_QWebPluginFactory, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: struct MimeType { %TypeHeaderCode #include %End QString name; QString description; QStringList fileExtensions; bool operator==(const QWebPluginFactory::MimeType &other) const; bool operator!=(const QWebPluginFactory::MimeType &other) const; }; struct Plugin { %TypeHeaderCode #include %End QString name; QString description; QList mimeTypes; }; explicit QWebPluginFactory(QObject *parent /TransferThis/ = 0); virtual ~QWebPluginFactory(); virtual QList plugins() const = 0; virtual void refreshPlugins(); virtual QObject *create(const QString &mimeType, const QUrl &url, const QStringList &argumentNames, const QStringList &argumentValues) const = 0 /Factory/; enum Extension { }; class ExtensionOption { %TypeHeaderCode #include %End }; class ExtensionReturn { %TypeHeaderCode #include %End }; virtual bool extension(QWebPluginFactory::Extension extension, const QWebPluginFactory::ExtensionOption *option = 0, QWebPluginFactory::ExtensionReturn *output = 0); virtual bool supportsExtension(QWebPluginFactory::Extension extension) const; }; PyQt5_gpl-5.10.1/sip/QtWebKit/qwebsecurityorigin.sip0000644000076500000240000000410413245233151022437 0ustar philstaff00000000000000// qwebsecurityorigin.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebSecurityOrigin { %TypeHeaderCode #include %End public: %If (Qt_5_2_0 -) explicit QWebSecurityOrigin(const QUrl &url); %End QWebSecurityOrigin(const QWebSecurityOrigin &other); ~QWebSecurityOrigin(); static QList allOrigins(); QString scheme() const; QString host() const; int port() const; qint64 databaseUsage() const; qint64 databaseQuota() const; void setDatabaseQuota(qint64 quota); QList databases() const; static void addLocalScheme(const QString &scheme); static void removeLocalScheme(const QString &scheme); static QStringList localSchemes(); void setApplicationCacheQuota(qint64 quota); %If (Qt_5_2_0 -) enum SubdomainSetting { AllowSubdomains, DisallowSubdomains, }; %End %If (Qt_5_2_0 -) void addAccessWhitelistEntry(const QString &scheme, const QString &host, QWebSecurityOrigin::SubdomainSetting subdomainSetting); %End %If (Qt_5_2_0 -) void removeAccessWhitelistEntry(const QString &scheme, const QString &host, QWebSecurityOrigin::SubdomainSetting subdomainSetting); %End }; PyQt5_gpl-5.10.1/sip/QtWebKit/qwebsettings.sip0000644000076500000240000001224213245233151021222 0ustar philstaff00000000000000// qwebsettings.sip generated by MetaSIP // // This file is part of the QtWebKit Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebSettings { %TypeHeaderCode #include %End public: enum FontFamily { StandardFont, FixedFont, SerifFont, SansSerifFont, CursiveFont, FantasyFont, }; enum WebAttribute { AutoLoadImages, JavascriptEnabled, JavaEnabled, PluginsEnabled, PrivateBrowsingEnabled, JavascriptCanOpenWindows, JavascriptCanCloseWindows, JavascriptCanAccessClipboard, DeveloperExtrasEnabled, LinksIncludedInFocusChain, ZoomTextOnly, PrintElementBackgrounds, OfflineStorageDatabaseEnabled, OfflineWebApplicationCacheEnabled, LocalStorageDatabaseEnabled, LocalStorageEnabled, LocalContentCanAccessRemoteUrls, DnsPrefetchEnabled, XSSAuditingEnabled, AcceleratedCompositingEnabled, SpatialNavigationEnabled, LocalContentCanAccessFileUrls, TiledBackingStoreEnabled, FrameFlatteningEnabled, SiteSpecificQuirksEnabled, WebGLEnabled, HyperlinkAuditingEnabled, CSSRegionsEnabled, CSSGridLayoutEnabled, ScrollAnimatorEnabled, CaretBrowsingEnabled, NotificationsEnabled, %If (Qt_5_2_0 -) WebAudioEnabled, %End %If (Qt_5_4_0 -) Accelerated2dCanvasEnabled, %End }; enum WebGraphic { MissingImageGraphic, MissingPluginGraphic, DefaultFrameIconGraphic, TextAreaSizeGripCornerGraphic, InputSpeechButtonGraphic, SearchCancelButtonGraphic, SearchCancelButtonPressedGraphic, }; enum FontSize { MinimumFontSize, MinimumLogicalFontSize, DefaultFontSize, DefaultFixedFontSize, }; static QWebSettings *globalSettings(); void setFontFamily(QWebSettings::FontFamily which, const QString &family); QString fontFamily(QWebSettings::FontFamily which) const; void resetFontFamily(QWebSettings::FontFamily which); void setFontSize(QWebSettings::FontSize type, int size); int fontSize(QWebSettings::FontSize type) const; void resetFontSize(QWebSettings::FontSize type); void setAttribute(QWebSettings::WebAttribute attr, bool on); bool testAttribute(QWebSettings::WebAttribute attr) const; void resetAttribute(QWebSettings::WebAttribute attr); void setUserStyleSheetUrl(const QUrl &location); QUrl userStyleSheetUrl() const; static void setIconDatabasePath(const QString &location); static QString iconDatabasePath(); static void clearIconDatabase(); static QIcon iconForUrl(const QUrl &url); static void setWebGraphic(QWebSettings::WebGraphic type, const QPixmap &graphic); static QPixmap webGraphic(QWebSettings::WebGraphic type); static void setMaximumPagesInCache(int pages); static int maximumPagesInCache(); static void setObjectCacheCapacities(int cacheMinDeadCapacity, int cacheMaxDead, int totalCapacity); private: QWebSettings(); QWebSettings(const QWebSettings &); ~QWebSettings(); public: static void setOfflineStoragePath(const QString &path); static QString offlineStoragePath(); static void setOfflineStorageDefaultQuota(qint64 maximumSize); static qint64 offlineStorageDefaultQuota(); void setDefaultTextEncoding(const QString &encoding); QString defaultTextEncoding() const; static void setOfflineWebApplicationCachePath(const QString &path); static QString offlineWebApplicationCachePath(); static void setOfflineWebApplicationCacheQuota(qint64 maximumSize); static qint64 offlineWebApplicationCacheQuota(); void setLocalStoragePath(const QString &path); QString localStoragePath() const; static void clearMemoryCaches(); static void enablePersistentStorage(const QString &path = QString()); enum ThirdPartyCookiePolicy { AlwaysAllowThirdPartyCookies, AlwaysBlockThirdPartyCookies, AllowThirdPartyWithExistingCookies, }; void setThirdPartyCookiePolicy(QWebSettings::ThirdPartyCookiePolicy); QWebSettings::ThirdPartyCookiePolicy thirdPartyCookiePolicy() const; %If (Qt_5_1_0 -) void setCSSMediaType(const QString &); %End %If (Qt_5_1_0 -) QString cssMediaType() const; %End }; PyQt5_gpl-5.10.1/sip/QtWebKitWidgets/0000755000076500000240000000000013245233151017314 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtWebKitWidgets/qgraphicswebview.sip0000644000076500000240000001173713245233151023414 0ustar philstaff00000000000000// qgraphicswebview.sip generated by MetaSIP // // This file is part of the QtWebKitWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsWebView : QGraphicsWidget { %TypeHeaderCode #include %End %ConvertToSubClassCode sipType = 0; // For some reason Qt doesn't allocate a new type for this so we have to test // the numeric and QObject types. if (sipCpp->type() == 11) { QGraphicsWidget *gw = static_cast(sipCpp); if (gw->inherits("QGraphicsWebView")) { *sipCppRet = static_cast(gw); sipType = sipType_QGraphicsWebView; } } %End public: explicit QGraphicsWebView(QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsWebView(); QWebPage *page() const; void setPage(QWebPage * /KeepReference/); QUrl url() const; void setUrl(const QUrl &); QString title() const; QIcon icon() const; qreal zoomFactor() const; void setZoomFactor(qreal); bool isModified() const; void load(const QUrl &url) /ReleaseGIL/; void load(const QNetworkRequest &request, QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation, const QByteArray &body = QByteArray()) /ReleaseGIL/; void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()); QWebHistory *history() const; QWebSettings *settings() const; QAction *pageAction(QWebPage::WebAction action) const; void triggerPageAction(QWebPage::WebAction action, bool checked = false); bool findText(const QString &subString, QFlags options = 0); virtual void setGeometry(const QRectF &rect); virtual void updateGeometry(); virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value); virtual bool event(QEvent *); virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint) const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; public slots: void stop(); void back(); void forward(); void reload(); signals: void loadStarted(); void loadFinished(bool); void loadProgress(int progress); void urlChanged(const QUrl &); void titleChanged(const QString &); void iconChanged(); void statusBarMessage(const QString &message); void linkClicked(const QUrl &); protected: virtual void mousePressEvent(QGraphicsSceneMouseEvent *); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *); virtual void wheelEvent(QGraphicsSceneWheelEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *); virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *); virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *); virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *); virtual void dropEvent(QGraphicsSceneDragDropEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void inputMethodEvent(QInputMethodEvent *); virtual bool focusNextPrevChild(bool next); virtual bool sceneEvent(QEvent *); public: bool resizesToContents() const; void setResizesToContents(bool enabled); bool isTiledBackingStoreFrozen() const; void setTiledBackingStoreFrozen(bool frozen); QFlags renderHints() const; void setRenderHints(QFlags hints); void setRenderHint(QPainter::RenderHint hint, bool enabled = true); }; %ModuleHeaderCode // This is needed by the %ConvertSubClassCode. #include // This is needed for Qt v5.0.0. #if defined(B0) #undef B0 #endif %End PyQt5_gpl-5.10.1/sip/QtWebKitWidgets/QtWebKitWidgetsmod.sip0000644000076500000240000000423313245233151023554 0ustar philstaff00000000000000// QtWebKitWidgetsmod.sip generated by MetaSIP // // This file is part of the QtWebKitWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtWebKitWidgets, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtNetwork/QtNetworkmod.sip %Import QtPrintSupport/QtPrintSupportmod.sip %Import QtWebKit/QtWebKitmod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qgraphicswebview.sip %Include qwebframe.sip %Include qwebinspector.sip %Include qwebpage.sip %Include qwebview.sip PyQt5_gpl-5.10.1/sip/QtWebKitWidgets/qwebframe.sip0000644000076500000240000001206013245233151022001 0ustar philstaff00000000000000// qwebframe.sip generated by MetaSIP // // This file is part of the QtWebKitWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebHitTestResult { %TypeHeaderCode #include %End public: QWebHitTestResult(); QWebHitTestResult(const QWebHitTestResult &other); ~QWebHitTestResult(); bool isNull() const; QPoint pos() const; QString title() const; QString linkText() const; QUrl linkUrl() const; QUrl linkTitle() const; QWebFrame *linkTargetFrame() const; QString alternateText() const; QUrl imageUrl() const; QPixmap pixmap() const; bool isContentEditable() const; bool isContentSelected() const; QWebFrame *frame() const; QRect boundingRect() const; QWebElement enclosingBlockElement() const; QWebElement linkElement() const; QWebElement element() const; %If (Qt_5_2_0 -) QUrl mediaUrl() const; %End %If (Qt_5_5_0 -) QString linkTitleString() const; %End }; class QWebFrame : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End virtual ~QWebFrame(); public: QWebPage *page() const; void load(const QUrl &url); void load(const QNetworkRequest &request, QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation, const QByteArray &body = QByteArray()); void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()); enum ValueOwnership { QtOwnership, ScriptOwnership, AutoOwnership, }; void addToJavaScriptWindowObject(const QString &name, QObject *object, QWebFrame::ValueOwnership ownership = QWebFrame::QtOwnership); QString toHtml() const; QString toPlainText() const; QString title() const; void setUrl(const QUrl &url); QUrl url() const; QIcon icon() const; QString frameName() const; QWebFrame *parentFrame() const; QList childFrames() const; Qt::ScrollBarPolicy scrollBarPolicy(Qt::Orientation orientation) const; void setScrollBarPolicy(Qt::Orientation orientation, Qt::ScrollBarPolicy policy); void setScrollBarValue(Qt::Orientation orientation, int value); int scrollBarValue(Qt::Orientation orientation) const; int scrollBarMinimum(Qt::Orientation orientation) const; int scrollBarMaximum(Qt::Orientation orientation) const; QPoint pos() const; QRect geometry() const; QSize contentsSize() const; QWebHitTestResult hitTestContent(const QPoint &pos) const; virtual bool event(QEvent *); public slots: QVariant evaluateJavaScript(const QString &scriptSource); %If (PyQt_Printer) void print(QPrinter *printer) const /PyName=print_/; %End %If (Py_v3) %If (PyQt_Printer) void print(QPrinter *printer) const; %End %End signals: void javaScriptWindowObjectCleared(); void titleChanged(const QString &title); void urlChanged(const QUrl &url); void initialLayoutCompleted(); void iconChanged(); public: QMultiMap metaData() const; void scroll(int, int); QPoint scrollPosition() const; void setScrollPosition(const QPoint &pos); qreal zoomFactor() const; void setZoomFactor(qreal factor); QWebSecurityOrigin securityOrigin() const; QUrl requestedUrl() const; QUrl baseUrl() const; QRect scrollBarGeometry(Qt::Orientation orientation) const; enum RenderLayer { ContentsLayer, ScrollBarLayer, PanIconLayer, AllLayers, }; typedef QFlags RenderLayers; void render(QPainter *, const QRegion &clip = QRegion()); void render(QPainter *, QFlags layer, const QRegion &clip = QRegion()); bool hasFocus() const; void setFocus(); QWebElement documentElement() const; QWebElementCollection findAllElements(const QString &selectorQuery) const; QWebElement findFirstElement(const QString &selectorQuery) const; signals: void contentsSizeChanged(const QSize &size); void loadStarted(); void loadFinished(bool ok); void pageChanged(); public: void scrollToAnchor(const QString &anchor); }; QFlags operator|(QWebFrame::RenderLayer f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWebKitWidgets/qwebinspector.sip0000644000076500000240000000272413245233151022723 0ustar philstaff00000000000000// qwebinspector.sip generated by MetaSIP // // This file is part of the QtWebKitWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebInspector : QWidget { %TypeHeaderCode #include %End public: QWebInspector(QWidget *parent /TransferThis/ = 0); virtual ~QWebInspector(); void setPage(QWebPage *page /KeepReference/); QWebPage *page() const; virtual QSize sizeHint() const; virtual bool event(QEvent *); protected: virtual void resizeEvent(QResizeEvent *event); virtual void showEvent(QShowEvent *event); virtual void hideEvent(QHideEvent *event); virtual void closeEvent(QCloseEvent *event); }; PyQt5_gpl-5.10.1/sip/QtWebKitWidgets/qwebpage.sip0000644000076500000240000003034313245233151021627 0ustar philstaff00000000000000// qwebpage.sip generated by MetaSIP // // This file is part of the QtWebKitWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebPage : QObject { %TypeHeaderCode #include %End public: enum NavigationType { NavigationTypeLinkClicked, NavigationTypeFormSubmitted, NavigationTypeBackOrForward, NavigationTypeReload, NavigationTypeFormResubmitted, NavigationTypeOther, }; enum WebAction { NoWebAction, OpenLink, OpenLinkInNewWindow, OpenFrameInNewWindow, DownloadLinkToDisk, CopyLinkToClipboard, OpenImageInNewWindow, DownloadImageToDisk, CopyImageToClipboard, Back, Forward, Stop, Reload, Cut, Copy, Paste, Undo, Redo, MoveToNextChar, MoveToPreviousChar, MoveToNextWord, MoveToPreviousWord, MoveToNextLine, MoveToPreviousLine, MoveToStartOfLine, MoveToEndOfLine, MoveToStartOfBlock, MoveToEndOfBlock, MoveToStartOfDocument, MoveToEndOfDocument, SelectNextChar, SelectPreviousChar, SelectNextWord, SelectPreviousWord, SelectNextLine, SelectPreviousLine, SelectStartOfLine, SelectEndOfLine, SelectStartOfBlock, SelectEndOfBlock, SelectStartOfDocument, SelectEndOfDocument, DeleteStartOfWord, DeleteEndOfWord, SetTextDirectionDefault, SetTextDirectionLeftToRight, SetTextDirectionRightToLeft, ToggleBold, ToggleItalic, ToggleUnderline, InspectElement, InsertParagraphSeparator, InsertLineSeparator, SelectAll, ReloadAndBypassCache, PasteAndMatchStyle, RemoveFormat, ToggleStrikethrough, ToggleSubscript, ToggleSuperscript, InsertUnorderedList, InsertOrderedList, Indent, Outdent, AlignCenter, AlignJustified, AlignLeft, AlignRight, StopScheduledPageRefresh, CopyImageUrlToClipboard, OpenLinkInThisWindow, %If (Qt_5_2_0 -) DownloadMediaToDisk, %End %If (Qt_5_2_0 -) CopyMediaUrlToClipboard, %End %If (Qt_5_2_0 -) ToggleMediaControls, %End %If (Qt_5_2_0 -) ToggleMediaLoop, %End %If (Qt_5_2_0 -) ToggleMediaPlayPause, %End %If (Qt_5_2_0 -) ToggleMediaMute, %End %If (Qt_5_2_0 -) ToggleVideoFullscreen, %End }; enum FindFlag { FindBackward, FindCaseSensitively, FindWrapsAroundDocument, HighlightAllOccurrences, %If (Qt_5_2_0 -) FindAtWordBeginningsOnly, %End %If (Qt_5_2_0 -) TreatMedialCapitalAsWordBeginning, %End %If (Qt_5_2_0 -) FindBeginsInSelection, %End }; typedef QFlags FindFlags; enum LinkDelegationPolicy { DontDelegateLinks, DelegateExternalLinks, DelegateAllLinks, }; enum WebWindowType { WebBrowserWindow, WebModalDialog, }; explicit QWebPage(QObject *parent /TransferThis/ = 0); virtual ~QWebPage(); QWebFrame *mainFrame() const; QWebFrame *currentFrame() const; QWebHistory *history() const; QWebSettings *settings() const; void setView(QWidget *view /KeepReference/); QWidget *view() const; bool isModified() const; QUndoStack *undoStack() const; void setNetworkAccessManager(QNetworkAccessManager *manager /KeepReference/); QNetworkAccessManager *networkAccessManager() const; void setPluginFactory(QWebPluginFactory *factory /KeepReference/); QWebPluginFactory *pluginFactory() const; quint64 totalBytes() const; quint64 bytesReceived() const; QString selectedText() const; QAction *action(QWebPage::WebAction action) const; virtual void triggerAction(QWebPage::WebAction action, bool checked = false); QSize viewportSize() const; void setViewportSize(const QSize &size) const; virtual bool event(QEvent *); bool focusNextPrevChild(bool next); QVariant inputMethodQuery(Qt::InputMethodQuery property) const; bool findText(const QString &subString, QFlags options = 0); void setForwardUnsupportedContent(bool forward); bool forwardUnsupportedContent() const; void setLinkDelegationPolicy(QWebPage::LinkDelegationPolicy policy); QWebPage::LinkDelegationPolicy linkDelegationPolicy() const; void setPalette(const QPalette &palette); QPalette palette() const; bool swallowContextMenuEvent(QContextMenuEvent *event); void updatePositionDependentActions(const QPoint &pos); enum Extension { ChooseMultipleFilesExtension, ErrorPageExtension, }; class ExtensionOption { %TypeHeaderCode #include %End }; class ExtensionReturn { %TypeHeaderCode #include %End }; virtual bool extension(QWebPage::Extension extension, const QWebPage::ExtensionOption *option = 0, QWebPage::ExtensionReturn *output = 0); %VirtualCatcherCode const sipTypeDef *option_type = sipType_QWebPage_ExtensionOption; const sipTypeDef *return_type = sipType_QWebPage_ExtensionReturn; if (a0 == QWebPage::ChooseMultipleFilesExtension) { option_type = sipType_QWebPage_ChooseMultipleFilesExtensionOption; return_type = sipType_QWebPage_ChooseMultipleFilesExtensionReturn; } else if (a0 == QWebPage::ErrorPageExtension) { option_type = sipType_QWebPage_ErrorPageExtensionOption; return_type = sipType_QWebPage_ErrorPageExtensionReturn; } PyObject *res_obj = sipCallMethod(&sipIsErr, sipMethod, "FDD", a0, sipType_QWebPage_Extension, a1, option_type, NULL, a2, return_type, NULL); if (res_obj) { sipParseResult(&sipIsErr, sipMethod, res_obj, "b", &sipRes); Py_DECREF(res_obj); } else { sipIsErr = 1; } %End virtual bool supportsExtension(QWebPage::Extension extension) const; signals: void loadFinished(bool ok); void loadProgress(int progress); void loadStarted(); void linkHovered(const QString &link, const QString &title, const QString &textContent); void statusBarMessage(const QString &text); void selectionChanged(); void frameCreated(QWebFrame *frame); void geometryChangeRequested(const QRect &geom); void repaintRequested(const QRect &dirtyRect); void scrollRequested(int dx, int dy, const QRect &scrollViewRect); void windowCloseRequested(); void printRequested(QWebFrame *frame); void linkClicked(const QUrl &url); void toolBarVisibilityChangeRequested(bool visible); void statusBarVisibilityChangeRequested(bool visible); void menuBarVisibilityChangeRequested(bool visible); void unsupportedContent(QNetworkReply *reply); void downloadRequested(const QNetworkRequest &request); void microFocusChanged(); protected: virtual QWebPage *createWindow(QWebPage::WebWindowType type); virtual QObject *createPlugin(const QString &classid, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues); virtual bool acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, QWebPage::NavigationType type); virtual QString chooseFile(QWebFrame *originatingFrame, const QString &oldFile); virtual void javaScriptAlert(QWebFrame *originatingFrame, const QString &msg); virtual bool javaScriptConfirm(QWebFrame *originatingFrame, const QString &msg); virtual bool javaScriptPrompt(QWebFrame *originatingFrame, const QString &msg, const QString &defaultValue, QString *result /Out/); virtual void javaScriptConsoleMessage(const QString &message, int lineNumber, const QString &sourceID); virtual QString userAgentForUrl(const QUrl &url) const; public: void setContentEditable(bool editable); bool isContentEditable() const; QMenu *createStandardContextMenu() /Factory/; class ChooseMultipleFilesExtensionOption : QWebPage::ExtensionOption { %TypeHeaderCode #include %End public: QWebFrame *parentFrame; QStringList suggestedFileNames; }; class ChooseMultipleFilesExtensionReturn : QWebPage::ExtensionReturn { %TypeHeaderCode #include %End public: QStringList fileNames; }; signals: void contentsChanged(); void databaseQuotaExceeded(QWebFrame *frame, QString databaseName); void saveFrameStateRequested(QWebFrame *frame, QWebHistoryItem *item); void restoreFrameStateRequested(QWebFrame *frame); public: QWebFrame *frameAt(const QPoint &pos) const; QSize preferredContentsSize() const; void setPreferredContentsSize(const QSize &size) const; enum ErrorDomain { QtNetwork, Http, WebKit, }; class ErrorPageExtensionOption : QWebPage::ExtensionOption { %TypeHeaderCode #include %End public: QUrl url; QWebFrame *frame; QWebPage::ErrorDomain domain; int error; QString errorString; }; class ErrorPageExtensionReturn : QWebPage::ExtensionReturn { %TypeHeaderCode #include %End public: ErrorPageExtensionReturn(); QString contentType; QString encoding; QUrl baseUrl; QByteArray content; }; virtual bool shouldInterruptJavaScript(); enum PermissionPolicy { PermissionUnknown, PermissionGrantedByUser, PermissionDeniedByUser, }; enum Feature { Notifications, Geolocation, }; class ViewportAttributes { %TypeHeaderCode #include %End public: ViewportAttributes(); ViewportAttributes(const QWebPage::ViewportAttributes &other); ~ViewportAttributes(); qreal initialScaleFactor() const; qreal minimumScaleFactor() const; qreal maximumScaleFactor() const; qreal devicePixelRatio() const; bool isUserScalable() const; bool isValid() const; QSizeF size() const; }; bool hasSelection() const; QString selectedHtml() const; QWebPage::ViewportAttributes viewportAttributesForSize(const QSize &availableSize) const; void setActualVisibleContentRect(const QRect &rect) const; void setFeaturePermission(QWebFrame *frame, QWebPage::Feature feature, QWebPage::PermissionPolicy policy); QStringList supportedContentTypes() const; bool supportsContentType(const QString &mimeType) const; signals: void applicationCacheQuotaExceeded(QWebSecurityOrigin *origin, quint64 defaultOriginQuota, quint64 totalSpaceNeeded); void viewportChangeRequested(); void featurePermissionRequested(QWebFrame *frame, QWebPage::Feature feature); void featurePermissionRequestCanceled(QWebFrame *frame, QWebPage::Feature feature); public: %If (Qt_5_2_0 -) enum VisibilityState { VisibilityStateVisible, VisibilityStateHidden, VisibilityStatePrerender, VisibilityStateUnloaded, }; %End %If (Qt_5_2_0 -) QWebPage::VisibilityState visibilityState() const; %End %If (Qt_5_2_0 -) void setVisibilityState(QWebPage::VisibilityState); %End }; QFlags operator|(QWebPage::FindFlag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWebKitWidgets/qwebview.sip0000644000076500000240000001143113245233151021662 0ustar philstaff00000000000000// qwebview.sip generated by MetaSIP // // This file is part of the QtWebKitWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWebView : QWidget { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QWebInspector, &sipType_QWebInspector, -1, 1}, {sipName_QWebPage, &sipType_QWebPage, -1, 2}, {sipName_QWebFrame, &sipType_QWebFrame, -1, 3}, {sipName_QGraphicsWebView, &sipType_QGraphicsWebView, -1, 4}, {sipName_QWebView, &sipType_QWebView, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: explicit QWebView(QWidget *parent /TransferThis/ = 0); virtual ~QWebView(); QWebPage *page() const; void setPage(QWebPage *page /KeepReference/); void load(const QUrl &url) /ReleaseGIL/; void load(const QNetworkRequest &request, QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation, const QByteArray &body = QByteArray()) /ReleaseGIL/; void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()); QWebHistory *history() const; QWebSettings *settings() const; QString title() const; void setUrl(const QUrl &url); QUrl url() const; QIcon icon() const; QString selectedText() const; QAction *pageAction(QWebPage::WebAction action) const; void triggerPageAction(QWebPage::WebAction action, bool checked = false); bool isModified() const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery property) const; virtual QSize sizeHint() const; bool findText(const QString &subString, QFlags options = 0); virtual bool event(QEvent *); public slots: void stop(); void back(); void forward(); void reload(); %If (PyQt_Printer) void print(QPrinter *printer) const /PyName=print_/; %End %If (Py_v3) %If (PyQt_Printer) void print(QPrinter *printer) const; %End %End signals: void loadStarted(); void loadProgress(int progress); void loadFinished(bool); void titleChanged(const QString &title); void statusBarMessage(const QString &text); void linkClicked(const QUrl &url); void selectionChanged(); void iconChanged(); void urlChanged(const QUrl &url); protected: virtual QWebView *createWindow(QWebPage::WebWindowType type); virtual void resizeEvent(QResizeEvent *e); virtual void paintEvent(QPaintEvent *ev); virtual void changeEvent(QEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual void wheelEvent(QWheelEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void dragEnterEvent(QDragEnterEvent *); virtual void dragLeaveEvent(QDragLeaveEvent *); virtual void dragMoveEvent(QDragMoveEvent *); virtual void dropEvent(QDropEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void inputMethodEvent(QInputMethodEvent *); virtual bool focusNextPrevChild(bool next); public: qreal zoomFactor() const; void setZoomFactor(qreal factor); QFlags renderHints() const; void setRenderHints(QFlags hints); void setRenderHint(QPainter::RenderHint hint, bool enabled = true); bool hasSelection() const; QString selectedHtml() const; }; PyQt5_gpl-5.10.1/sip/QtWebSockets/0000755000076500000240000000000013245233151016651 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtWebSockets/qmaskgenerator.sip0000644000076500000240000000241413245233151022412 0ustar philstaff00000000000000// qmaskgenerator.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class QMaskGenerator : QObject { %TypeHeaderCode #include %End public: explicit QMaskGenerator(QObject *parent /TransferThis/ = 0); virtual ~QMaskGenerator(); virtual bool seed() = 0; virtual quint32 nextMask() = 0; private: QMaskGenerator(const QMaskGenerator &); }; %End PyQt5_gpl-5.10.1/sip/QtWebSockets/QtWebSocketsmod.sip0000644000076500000240000000410013245233151022437 0ustar philstaff00000000000000// QtWebSocketsmod.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtWebSockets, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qmaskgenerator.sip %Include qwebsocket.sip %Include qwebsocketcorsauthenticator.sip %Include qwebsocketprotocol.sip %Include qwebsocketserver.sip PyQt5_gpl-5.10.1/sip/QtWebSockets/qwebsocket.sip0000644000076500000240000001115413245233151021537 0ustar philstaff00000000000000// qwebsocket.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class QWebSocket : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QWebSocket, &sipType_QWebSocket, -1, 1}, {sipName_QWebSocketServer, &sipType_QWebSocketServer, -1, 2}, {sipName_QMaskGenerator, &sipType_QMaskGenerator, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QWebSocket(const QString &origin = QString(), QWebSocketProtocol::Version version = QWebSocketProtocol::VersionLatest, QObject *parent /TransferThis/ = 0); virtual ~QWebSocket(); void abort(); QAbstractSocket::SocketError error() const; QString errorString() const; bool flush() /ReleaseGIL/; bool isValid() const; QHostAddress localAddress() const; quint16 localPort() const; QAbstractSocket::PauseModes pauseMode() const; QHostAddress peerAddress() const; QString peerName() const; quint16 peerPort() const; QNetworkProxy proxy() const; void setProxy(const QNetworkProxy &networkProxy); void setMaskGenerator(const QMaskGenerator *maskGenerator /KeepReference/); const QMaskGenerator *maskGenerator() const; qint64 readBufferSize() const; void setReadBufferSize(qint64 size); void resume() /ReleaseGIL/; void setPauseMode(QAbstractSocket::PauseModes pauseMode); QAbstractSocket::SocketState state() const; QWebSocketProtocol::Version version() const; QString resourceName() const; QUrl requestUrl() const; QString origin() const; QWebSocketProtocol::CloseCode closeCode() const; QString closeReason() const; qint64 sendTextMessage(const QString &message) /ReleaseGIL/; qint64 sendBinaryMessage(const QByteArray &data) /ReleaseGIL/; %If (PyQt_SSL) void ignoreSslErrors(const QList &errors); %End %If (PyQt_SSL) void setSslConfiguration(const QSslConfiguration &sslConfiguration); %End %If (PyQt_SSL) QSslConfiguration sslConfiguration() const; %End %If (Qt_5_6_0 -) QNetworkRequest request() const; %End public slots: void close(QWebSocketProtocol::CloseCode closeCode = QWebSocketProtocol::CloseCodeNormal, const QString &reason = QString()) /ReleaseGIL/; void open(const QUrl &url) /ReleaseGIL/; %If (Qt_5_6_0 -) void open(const QNetworkRequest &request) /ReleaseGIL/; %End void ping(const QByteArray &payload = QByteArray()) /ReleaseGIL/; %If (PyQt_SSL) void ignoreSslErrors(); %End signals: void aboutToClose(); void connected(); void disconnected(); void stateChanged(QAbstractSocket::SocketState state); void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *pAuthenticator); void readChannelFinished(); void textFrameReceived(const QString &frame, bool isLastFrame); void binaryFrameReceived(const QByteArray &frame, bool isLastFrame); void textMessageReceived(const QString &message); void binaryMessageReceived(const QByteArray &message); void error(QAbstractSocket::SocketError error); void pong(quint64 elapsedTime, const QByteArray &payload); void bytesWritten(qint64 bytes); %If (PyQt_SSL) void sslErrors(const QList &errors); %End %If (Qt_5_8_0 -) %If (PyQt_SSL) void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator); %End %End private: QWebSocket(const QWebSocket &); }; %End PyQt5_gpl-5.10.1/sip/QtWebSockets/qwebsocketcorsauthenticator.sip0000644000076500000240000000264513245233151025226 0ustar philstaff00000000000000// qwebsocketcorsauthenticator.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class QWebSocketCorsAuthenticator { %TypeHeaderCode #include %End public: explicit QWebSocketCorsAuthenticator(const QString &origin); explicit QWebSocketCorsAuthenticator(const QWebSocketCorsAuthenticator &other); ~QWebSocketCorsAuthenticator(); void swap(QWebSocketCorsAuthenticator &other /Constrained/); QString origin() const; void setAllowed(bool allowed); bool allowed() const; }; %End PyQt5_gpl-5.10.1/sip/QtWebSockets/qwebsocketprotocol.sip0000644000076500000240000000331513245233151023321 0ustar philstaff00000000000000// qwebsocketprotocol.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) namespace QWebSocketProtocol { %TypeHeaderCode #include %End enum Version { VersionUnknown, Version0, Version4, Version5, Version6, Version7, Version8, Version13, VersionLatest, }; enum CloseCode { CloseCodeNormal, CloseCodeGoingAway, CloseCodeProtocolError, CloseCodeDatatypeNotSupported, CloseCodeReserved1004, CloseCodeMissingStatusCode, CloseCodeAbnormalDisconnection, CloseCodeWrongDatatype, CloseCodePolicyViolated, CloseCodeTooMuchData, CloseCodeMissingExtension, CloseCodeBadOperation, CloseCodeTlsHandshakeFailed, }; }; %End PyQt5_gpl-5.10.1/sip/QtWebSockets/qwebsocketserver.sip0000644000076500000240000000606413245233151022772 0ustar philstaff00000000000000// qwebsocketserver.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_3_0 -) class QWebSocketServer : QObject { %TypeHeaderCode #include %End public: enum SslMode { %If (PyQt_SSL) SecureMode, %End NonSecureMode, }; QWebSocketServer(const QString &serverName, QWebSocketServer::SslMode secureMode, QObject *parent /TransferThis/ = 0); virtual ~QWebSocketServer(); bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0); void close(); bool isListening() const; void setMaxPendingConnections(int numConnections); int maxPendingConnections() const; quint16 serverPort() const; QHostAddress serverAddress() const; QWebSocketServer::SslMode secureMode() const; bool setSocketDescriptor(int socketDescriptor); int socketDescriptor() const; bool hasPendingConnections() const; virtual QWebSocket *nextPendingConnection() /Factory/; QWebSocketProtocol::CloseCode error() const; QString errorString() const; void pauseAccepting(); void resumeAccepting(); void setServerName(const QString &serverName); QString serverName() const; void setProxy(const QNetworkProxy &networkProxy); QNetworkProxy proxy() const; %If (PyQt_SSL) void setSslConfiguration(const QSslConfiguration &sslConfiguration); %End %If (PyQt_SSL) QSslConfiguration sslConfiguration() const; %End QList supportedVersions() const; %If (Qt_5_4_0 -) QUrl serverUrl() const; %End %If (Qt_5_9_0 -) void handleConnection(QTcpSocket *socket) const; %End signals: void acceptError(QAbstractSocket::SocketError socketError); void serverError(QWebSocketProtocol::CloseCode closeCode); void originAuthenticationRequired(QWebSocketCorsAuthenticator *pAuthenticator); void newConnection(); %If (PyQt_SSL) void peerVerifyError(const QSslError &error); %End %If (PyQt_SSL) void sslErrors(const QList &errors); %End void closed(); %If (Qt_5_8_0 -) %If (PyQt_SSL) void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator); %End %End private: QWebSocketServer(const QWebSocketServer &); }; %End PyQt5_gpl-5.10.1/sip/QtWidgets/0000755000076500000240000000000013245233151016206 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtWidgets/qabstractbutton.sip0000644000076500000240000000527313245233151022152 0ustar philstaff00000000000000// qabstractbutton.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractButton : QWidget { %TypeHeaderCode #include %End public: explicit QAbstractButton(QWidget *parent /TransferThis/ = 0); virtual ~QAbstractButton(); void setAutoRepeatDelay(int); int autoRepeatDelay() const; void setAutoRepeatInterval(int); int autoRepeatInterval() const; void setText(const QString &text); QString text() const; void setIcon(const QIcon &icon); QIcon icon() const; QSize iconSize() const; void setShortcut(const QKeySequence &key); QKeySequence shortcut() const; void setCheckable(bool); bool isCheckable() const; bool isChecked() const; void setDown(bool); bool isDown() const; void setAutoRepeat(bool); bool autoRepeat() const; void setAutoExclusive(bool); bool autoExclusive() const; QButtonGroup *group() const; public slots: void setIconSize(const QSize &size); void animateClick(int msecs = 100); void click(); void toggle(); void setChecked(bool); signals: void pressed(); void released(); void clicked(bool checked = false); void toggled(bool checked); protected: virtual void paintEvent(QPaintEvent *e) = 0; virtual bool hitButton(const QPoint &pos) const; virtual void checkStateSet(); virtual void nextCheckState(); virtual bool event(QEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void keyReleaseEvent(QKeyEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void changeEvent(QEvent *e); virtual void timerEvent(QTimerEvent *e); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qabstractitemdelegate.sip0000644000076500000240000000520113245233151023257 0ustar philstaff00000000000000// qabstractitemdelegate.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractItemDelegate : QObject { %TypeHeaderCode #include %End public: enum EndEditHint { NoHint, EditNextItem, EditPreviousItem, SubmitModelCache, RevertModelCache, }; explicit QAbstractItemDelegate(QObject *parent /TransferThis/ = 0); virtual ~QAbstractItemDelegate(); virtual void paint(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const = 0; virtual QSize sizeHint(const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const = 0; virtual QWidget *createEditor(QWidget *parent /TransferThis/, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const /Factory/; virtual void setEditorData(QWidget *editor, const QModelIndex &index) const; virtual void setModelData(QWidget *editor, QAbstractItemModel *model /KeepReference/, const QModelIndex &index) const; virtual void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; virtual void destroyEditor(QWidget *editor, const QModelIndex &index) const; virtual bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index); virtual bool helpEvent(QHelpEvent *event, QAbstractItemView *view, const QStyleOptionViewItem &option, const QModelIndex &index); signals: void commitData(QWidget *editor); void closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint = QAbstractItemDelegate::NoHint); void sizeHintChanged(const QModelIndex &); private: QAbstractItemDelegate(const QAbstractItemDelegate &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qabstractitemview.sip0000644000076500000240000002446713245233151022476 0ustar philstaff00000000000000// qabstractitemview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractItemView : QAbstractScrollArea { %TypeHeaderCode #include %End public: enum DragDropMode { NoDragDrop, DragOnly, DropOnly, DragDrop, InternalMove, }; enum EditTrigger { NoEditTriggers, CurrentChanged, DoubleClicked, SelectedClicked, EditKeyPressed, AnyKeyPressed, AllEditTriggers, }; typedef QFlags EditTriggers; enum ScrollHint { EnsureVisible, PositionAtTop, PositionAtBottom, PositionAtCenter, }; enum ScrollMode { ScrollPerItem, ScrollPerPixel, }; enum SelectionBehavior { SelectItems, SelectRows, SelectColumns, }; enum SelectionMode { NoSelection, SingleSelection, MultiSelection, ExtendedSelection, ContiguousSelection, }; explicit QAbstractItemView(QWidget *parent /TransferThis/ = 0); virtual ~QAbstractItemView(); virtual void setModel(QAbstractItemModel *model /KeepReference/); QAbstractItemModel *model() const; virtual void setSelectionModel(QItemSelectionModel *selectionModel /KeepReference/); QItemSelectionModel *selectionModel() const; void setItemDelegate(QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemDelegate *itemDelegate() const; void setSelectionMode(QAbstractItemView::SelectionMode mode); QAbstractItemView::SelectionMode selectionMode() const; void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior); QAbstractItemView::SelectionBehavior selectionBehavior() const; QModelIndex currentIndex() const; QModelIndex rootIndex() const; void setEditTriggers(QAbstractItemView::EditTriggers triggers); QAbstractItemView::EditTriggers editTriggers() const; void setAutoScroll(bool enable); bool hasAutoScroll() const; void setTabKeyNavigation(bool enable); bool tabKeyNavigation() const; void setDropIndicatorShown(bool enable); bool showDropIndicator() const; void setDragEnabled(bool enable); bool dragEnabled() const; void setAlternatingRowColors(bool enable); bool alternatingRowColors() const; void setIconSize(const QSize &size); QSize iconSize() const; void setTextElideMode(Qt::TextElideMode mode); Qt::TextElideMode textElideMode() const; virtual void keyboardSearch(const QString &search); virtual QRect visualRect(const QModelIndex &index) const = 0; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible) = 0; virtual QModelIndex indexAt(const QPoint &p) const = 0; QSize sizeHintForIndex(const QModelIndex &index) const; virtual int sizeHintForRow(int row) const; virtual int sizeHintForColumn(int column) const; void openPersistentEditor(const QModelIndex &index); void closePersistentEditor(const QModelIndex &index); void setIndexWidget(const QModelIndex &index, QWidget *widget /Transfer/); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->indexWidget(*a0); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->setIndexWidget(*a0, a1); Py_END_ALLOW_THREADS %End QWidget *indexWidget(const QModelIndex &index) const; public slots: virtual void reset(); virtual void setRootIndex(const QModelIndex &index); virtual void selectAll(); void edit(const QModelIndex &index); void clearSelection(); void setCurrentIndex(const QModelIndex &index); void scrollToTop(); void scrollToBottom(); void update(); void update(const QModelIndex &index); protected slots: virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector()); virtual void rowsInserted(const QModelIndex &parent, int start, int end); virtual void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end); virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); virtual void updateEditorData(); virtual void updateEditorGeometries(); virtual void updateGeometries(); virtual void verticalScrollbarAction(int action); virtual void horizontalScrollbarAction(int action); virtual void verticalScrollbarValueChanged(int value); virtual void horizontalScrollbarValueChanged(int value); virtual void closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint); virtual void commitData(QWidget *editor); virtual void editorDestroyed(QObject *editor); signals: void pressed(const QModelIndex &index); void clicked(const QModelIndex &index); void doubleClicked(const QModelIndex &index); void activated(const QModelIndex &index); void entered(const QModelIndex &index); void viewportEntered(); %If (Qt_5_5_0 -) void iconSizeChanged(const QSize &size); %End protected: enum CursorAction { MoveUp, MoveDown, MoveLeft, MoveRight, MoveHome, MoveEnd, MovePageUp, MovePageDown, MoveNext, MovePrevious, }; virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers) = 0; virtual int horizontalOffset() const = 0; virtual int verticalOffset() const = 0; virtual bool isIndexHidden(const QModelIndex &index) const = 0; virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) = 0; virtual QRegion visualRegionForSelection(const QItemSelection &selection) const = 0; virtual QModelIndexList selectedIndexes() const; virtual bool edit(const QModelIndex &index, QAbstractItemView::EditTrigger trigger, QEvent *event); virtual QItemSelectionModel::SelectionFlags selectionCommand(const QModelIndex &index, const QEvent *event = 0) const; virtual void startDrag(Qt::DropActions supportedActions); virtual QStyleOptionViewItem viewOptions() const; enum State { NoState, DraggingState, DragSelectingState, EditingState, ExpandingState, CollapsingState, AnimatingState, }; QAbstractItemView::State state() const; void setState(QAbstractItemView::State state); void scheduleDelayedItemsLayout(); void executeDelayedItemsLayout(); void scrollDirtyRegion(int dx, int dy); void setDirtyRegion(const QRegion ®ion); QPoint dirtyRegionOffset() const; virtual bool event(QEvent *event); virtual bool viewportEvent(QEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseDoubleClickEvent(QMouseEvent *e); virtual void dragEnterEvent(QDragEnterEvent *e); virtual void dragMoveEvent(QDragMoveEvent *e); virtual void dragLeaveEvent(QDragLeaveEvent *e); virtual void dropEvent(QDropEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void resizeEvent(QResizeEvent *e); virtual void timerEvent(QTimerEvent *e); enum DropIndicatorPosition { OnItem, AboveItem, BelowItem, OnViewport, }; QAbstractItemView::DropIndicatorPosition dropIndicatorPosition() const; public: void setVerticalScrollMode(QAbstractItemView::ScrollMode mode); QAbstractItemView::ScrollMode verticalScrollMode() const; void setHorizontalScrollMode(QAbstractItemView::ScrollMode mode); QAbstractItemView::ScrollMode horizontalScrollMode() const; void setDragDropOverwriteMode(bool overwrite); bool dragDropOverwriteMode() const; void setDragDropMode(QAbstractItemView::DragDropMode behavior); QAbstractItemView::DragDropMode dragDropMode() const; void setItemDelegateForRow(int row, QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemDelegate *itemDelegateForRow(int row) const; void setItemDelegateForColumn(int column, QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemDelegate *itemDelegateForColumn(int column) const; QAbstractItemDelegate *itemDelegate(const QModelIndex &index) const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; void setAutoScrollMargin(int margin); int autoScrollMargin() const; protected: virtual bool focusNextPrevChild(bool next); virtual void inputMethodEvent(QInputMethodEvent *event); %If (Qt_5_2_0 -) virtual QSize viewportSizeHint() const; %End public: void setDefaultDropAction(Qt::DropAction dropAction); Qt::DropAction defaultDropAction() const; %If (Qt_5_7_0 -) void resetVerticalScrollMode(); %End %If (Qt_5_7_0 -) void resetHorizontalScrollMode(); %End %If (Qt_5_10_0 -) bool isPersistentEditorOpen(const QModelIndex &index) const; %End private: QAbstractItemView(const QAbstractItemView &); }; QFlags operator|(QAbstractItemView::EditTrigger f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qabstractscrollarea.sip0000644000076500000240000000706113245233151022763 0ustar philstaff00000000000000// qabstractscrollarea.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractScrollArea : QFrame { %TypeHeaderCode #include %End public: explicit QAbstractScrollArea(QWidget *parent /TransferThis/ = 0); virtual ~QAbstractScrollArea(); Qt::ScrollBarPolicy verticalScrollBarPolicy() const; void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy); QScrollBar *verticalScrollBar() const /Transfer/; Qt::ScrollBarPolicy horizontalScrollBarPolicy() const; void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy); QScrollBar *horizontalScrollBar() const /Transfer/; QWidget *viewport() const /Transfer/; QSize maximumViewportSize() const; virtual QSize minimumSizeHint() const; virtual QSize sizeHint() const; protected: void setViewportMargins(int left, int top, int right, int bottom); void setViewportMargins(const QMargins &margins); %If (Qt_5_5_0 -) QMargins viewportMargins() const; %End %If (Qt_5_2_0 -) virtual QSize viewportSizeHint() const; %End virtual bool event(QEvent *); virtual bool viewportEvent(QEvent *); virtual void resizeEvent(QResizeEvent *); virtual void paintEvent(QPaintEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void wheelEvent(QWheelEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual void dragEnterEvent(QDragEnterEvent *); virtual void dragMoveEvent(QDragMoveEvent *); virtual void dragLeaveEvent(QDragLeaveEvent *); virtual void dropEvent(QDropEvent *); virtual void keyPressEvent(QKeyEvent *); virtual bool eventFilter(QObject *, QEvent *); virtual void scrollContentsBy(int dx, int dy); public: void setVerticalScrollBar(QScrollBar *scrollbar /Transfer/); void setHorizontalScrollBar(QScrollBar *scrollbar /Transfer/); QWidget *cornerWidget() const; void setCornerWidget(QWidget *widget /Transfer/); void addScrollBarWidget(QWidget *widget /Transfer/, Qt::Alignment alignment); QWidgetList scrollBarWidgets(Qt::Alignment alignment) /Transfer/; void setViewport(QWidget *widget /Transfer/); virtual void setupViewport(QWidget *viewport); %If (Qt_5_2_0 -) enum SizeAdjustPolicy { AdjustIgnored, AdjustToContentsOnFirstShow, AdjustToContents, }; %End %If (Qt_5_2_0 -) QAbstractScrollArea::SizeAdjustPolicy sizeAdjustPolicy() const; %End %If (Qt_5_2_0 -) void setSizeAdjustPolicy(QAbstractScrollArea::SizeAdjustPolicy policy); %End private: QAbstractScrollArea(const QAbstractScrollArea &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qabstractslider.sip0000644000076500000240000000577113245233151022124 0ustar philstaff00000000000000// qabstractslider.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractSlider : QWidget { %TypeHeaderCode #include %End public: explicit QAbstractSlider(QWidget *parent /TransferThis/ = 0); virtual ~QAbstractSlider(); Qt::Orientation orientation() const; void setMinimum(int); int minimum() const; void setMaximum(int); int maximum() const; void setRange(int min, int max); void setSingleStep(int); int singleStep() const; void setPageStep(int); int pageStep() const; void setTracking(bool enable); bool hasTracking() const; void setSliderDown(bool); bool isSliderDown() const; void setSliderPosition(int); int sliderPosition() const; void setInvertedAppearance(bool); bool invertedAppearance() const; void setInvertedControls(bool); bool invertedControls() const; enum SliderAction { SliderNoAction, SliderSingleStepAdd, SliderSingleStepSub, SliderPageStepAdd, SliderPageStepSub, SliderToMinimum, SliderToMaximum, SliderMove, }; int value() const; void triggerAction(QAbstractSlider::SliderAction action); public slots: void setValue(int); void setOrientation(Qt::Orientation); signals: void valueChanged(int value); void sliderPressed(); void sliderMoved(int position); void sliderReleased(); void rangeChanged(int min, int max); void actionTriggered(int action); protected: void setRepeatAction(QAbstractSlider::SliderAction action, int thresholdTime = 500, int repeatTime = 50); QAbstractSlider::SliderAction repeatAction() const; enum SliderChange { SliderRangeChange, SliderOrientationChange, SliderStepsChange, SliderValueChange, }; virtual void sliderChange(QAbstractSlider::SliderChange change); virtual bool event(QEvent *e); virtual void keyPressEvent(QKeyEvent *ev); virtual void timerEvent(QTimerEvent *); virtual void wheelEvent(QWheelEvent *e); virtual void changeEvent(QEvent *e); private: QAbstractSlider(const QAbstractSlider &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qabstractspinbox.sip0000644000076500000240000001006313245233151022312 0ustar philstaff00000000000000// qabstractspinbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractSpinBox : QWidget { %TypeHeaderCode #include %End public: explicit QAbstractSpinBox(QWidget *parent /TransferThis/ = 0); virtual ~QAbstractSpinBox(); enum StepEnabledFlag { StepNone, StepUpEnabled, StepDownEnabled, }; typedef QFlags StepEnabled; enum ButtonSymbols { UpDownArrows, PlusMinus, NoButtons, }; QAbstractSpinBox::ButtonSymbols buttonSymbols() const; void setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs); QString text() const; QString specialValueText() const; void setSpecialValueText(const QString &s); bool wrapping() const; void setWrapping(bool w); void setReadOnly(bool r); bool isReadOnly() const; void setAlignment(Qt::Alignment flag); Qt::Alignment alignment() const; void setFrame(bool); bool hasFrame() const; virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void interpretText(); virtual bool event(QEvent *event); virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; virtual void fixup(QString &input /In,Out/) const; virtual void stepBy(int steps); public slots: void stepUp(); void stepDown(); void selectAll(); virtual void clear(); signals: void editingFinished(); protected: virtual void resizeEvent(QResizeEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void keyReleaseEvent(QKeyEvent *e); virtual void wheelEvent(QWheelEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void contextMenuEvent(QContextMenuEvent *e); virtual void changeEvent(QEvent *e); virtual void closeEvent(QCloseEvent *e); virtual void hideEvent(QHideEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void timerEvent(QTimerEvent *e); virtual void paintEvent(QPaintEvent *e); virtual void showEvent(QShowEvent *e); QLineEdit *lineEdit() const; void setLineEdit(QLineEdit *e /Transfer/); virtual QAbstractSpinBox::StepEnabled stepEnabled() const; void initStyleOption(QStyleOptionSpinBox *option) const; public: enum CorrectionMode { CorrectToPreviousValue, CorrectToNearestValue, }; void setCorrectionMode(QAbstractSpinBox::CorrectionMode cm); QAbstractSpinBox::CorrectionMode correctionMode() const; bool hasAcceptableInput() const; void setAccelerated(bool on); bool isAccelerated() const; void setKeyboardTracking(bool kt); bool keyboardTracking() const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const; %If (Qt_5_3_0 -) void setGroupSeparatorShown(bool shown); %End %If (Qt_5_3_0 -) bool isGroupSeparatorShown() const; %End private: QAbstractSpinBox(const QAbstractSpinBox &); }; QFlags operator|(QAbstractSpinBox::StepEnabledFlag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qaction.sip0000644000076500000240000001037213245233151020364 0ustar philstaff00000000000000// qaction.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAction : QObject { %TypeHeaderCode #include %End public: %If (Qt_5_7_0 -) explicit QAction(QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_7_0) explicit QAction(QObject *parent /TransferThis/); %End %If (Qt_5_7_0 -) QAction(const QString &text, QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_7_0) QAction(const QString &text, QObject *parent /TransferThis/); %End %If (Qt_5_7_0 -) QAction(const QIcon &icon, const QString &text, QObject *parent /TransferThis/ = 0); %End %If (- Qt_5_7_0) QAction(const QIcon &icon, const QString &text, QObject *parent /TransferThis/); %End virtual ~QAction(); void setActionGroup(QActionGroup *group /KeepReference/); QActionGroup *actionGroup() const; void setIcon(const QIcon &icon); QIcon icon() const; void setText(const QString &text); QString text() const; void setIconText(const QString &text); QString iconText() const; void setToolTip(const QString &tip); QString toolTip() const; void setStatusTip(const QString &statusTip); QString statusTip() const; void setWhatsThis(const QString &what); QString whatsThis() const; QMenu *menu() const; void setMenu(QMenu *menu /KeepReference/); void setSeparator(bool b); bool isSeparator() const; void setShortcut(const QKeySequence &shortcut); QKeySequence shortcut() const; void setShortcutContext(Qt::ShortcutContext context); Qt::ShortcutContext shortcutContext() const; void setFont(const QFont &font); QFont font() const; void setCheckable(bool); bool isCheckable() const; QVariant data() const; void setData(const QVariant &var); bool isChecked() const; bool isEnabled() const; bool isVisible() const; enum ActionEvent { Trigger, Hover, }; void activate(QAction::ActionEvent event); bool showStatusText(QWidget *widget = 0); QWidget *parentWidget() const; protected: virtual bool event(QEvent *); public slots: void trigger(); void hover(); void setChecked(bool); void toggle(); void setEnabled(bool); void setDisabled(bool b); void setVisible(bool); signals: void changed(); void triggered(bool checked = false); void hovered(); void toggled(bool); public: enum MenuRole { NoRole, TextHeuristicRole, ApplicationSpecificRole, AboutQtRole, AboutRole, PreferencesRole, QuitRole, }; void setShortcuts(const QList &shortcuts); void setShortcuts(QKeySequence::StandardKey); QList shortcuts() const; void setAutoRepeat(bool); bool autoRepeat() const; void setMenuRole(QAction::MenuRole menuRole); QAction::MenuRole menuRole() const; QList associatedWidgets() const; QList associatedGraphicsWidgets() const; void setIconVisibleInMenu(bool visible); bool isIconVisibleInMenu() const; enum Priority { LowPriority, NormalPriority, HighPriority, }; void setPriority(QAction::Priority priority); QAction::Priority priority() const; %If (Qt_5_10_0 -) void setShortcutVisibleInContextMenu(bool show); %End %If (Qt_5_10_0 -) bool isShortcutVisibleInContextMenu() const; %End private: QAction(const QAction &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qactiongroup.sip0000644000076500000240000000335013245233151021437 0ustar philstaff00000000000000// qactiongroup.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QActionGroup : QObject { %TypeHeaderCode #include %End public: explicit QActionGroup(QObject *parent /TransferThis/); virtual ~QActionGroup(); QAction *addAction(QAction *a /Transfer/); QAction *addAction(const QString &text) /Transfer/; QAction *addAction(const QIcon &icon, const QString &text) /Transfer/; void removeAction(QAction *a /TransferBack/); QList actions() const; QAction *checkedAction() const; bool isExclusive() const; bool isEnabled() const; bool isVisible() const; public slots: void setEnabled(bool); void setDisabled(bool b); void setVisible(bool); void setExclusive(bool); signals: void triggered(QAction *); void hovered(QAction *); private: QActionGroup(const QActionGroup &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qapplication.sip0000644000076500000240000003762313245233151021422 0ustar philstaff00000000000000// qapplication.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // QApplication *qApp QApplication *qApp { %AccessCode // Qt implements this has a #define to a function call so we have to handle // it like this. return qApp; %End }; typedef QList QWidgetList; class QApplication : QGuiApplication { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QKeyEventTransition, &sipType_QKeyEventTransition, -1, 1}, {sipName_QUndoStack, &sipType_QUndoStack, -1, 2}, {sipName_QAbstractItemDelegate, &sipType_QAbstractItemDelegate, 26, 3}, {sipName_QGraphicsTransform, &sipType_QGraphicsTransform, 28, 4}, {sipName_QCompleter, &sipType_QCompleter, -1, 5}, {sipName_QActionGroup, &sipType_QActionGroup, -1, 6}, {sipName_QShortcut, &sipType_QShortcut, -1, 7}, {sipName_QButtonGroup, &sipType_QButtonGroup, -1, 8}, {sipName_QPlainTextDocumentLayout, &sipType_QPlainTextDocumentLayout, -1, 9}, {sipName_QGraphicsAnchor, &sipType_QGraphicsAnchor, -1, 10}, {sipName_QFileSystemModel, &sipType_QFileSystemModel, -1, 11}, {sipName_QGesture, &sipType_QGesture, 30, 12}, {sipName_QApplication, &sipType_QApplication, -1, 13}, {sipName_QLayout, &sipType_QLayout, 35, 14}, {sipName_QDirModel, &sipType_QDirModel, -1, 15}, {sipName_QDataWidgetMapper, &sipType_QDataWidgetMapper, -1, 16}, {sipName_QGraphicsObject, &sipType_QGraphicsObject, 41, 17}, {sipName_QScroller, &sipType_QScroller, -1, 18}, {sipName_QGraphicsScene, &sipType_QGraphicsScene, -1, 19}, {sipName_QUndoGroup, &sipType_QUndoGroup, -1, 20}, {sipName_QMouseEventTransition, &sipType_QMouseEventTransition, -1, 21}, {sipName_QGraphicsEffect, &sipType_QGraphicsEffect, 44, 22}, {sipName_QWidget, &sipType_QWidget, 48, 23}, {sipName_QStyle, &sipType_QStyle, 122, 24}, {sipName_QAction, &sipType_QAction, 124, 25}, {sipName_QSystemTrayIcon, &sipType_QSystemTrayIcon, -1, -1}, {sipName_QStyledItemDelegate, &sipType_QStyledItemDelegate, -1, 27}, {sipName_QItemDelegate, &sipType_QItemDelegate, -1, -1}, {sipName_QGraphicsRotation, &sipType_QGraphicsRotation, -1, 29}, {sipName_QGraphicsScale, &sipType_QGraphicsScale, -1, -1}, {sipName_QSwipeGesture, &sipType_QSwipeGesture, -1, 31}, {sipName_QTapGesture, &sipType_QTapGesture, -1, 32}, {sipName_QPanGesture, &sipType_QPanGesture, -1, 33}, {sipName_QPinchGesture, &sipType_QPinchGesture, -1, 34}, {sipName_QTapAndHoldGesture, &sipType_QTapAndHoldGesture, -1, -1}, {sipName_QStackedLayout, &sipType_QStackedLayout, -1, 36}, {sipName_QFormLayout, &sipType_QFormLayout, -1, 37}, {sipName_QBoxLayout, &sipType_QBoxLayout, 39, 38}, {sipName_QGridLayout, &sipType_QGridLayout, -1, -1}, {sipName_QVBoxLayout, &sipType_QVBoxLayout, -1, 40}, {sipName_QHBoxLayout, &sipType_QHBoxLayout, -1, -1}, {sipName_QGraphicsWidget, &sipType_QGraphicsWidget, 43, 42}, {sipName_QGraphicsTextItem, &sipType_QGraphicsTextItem, -1, -1}, {sipName_QGraphicsProxyWidget, &sipType_QGraphicsProxyWidget, -1, -1}, {sipName_QGraphicsBlurEffect, &sipType_QGraphicsBlurEffect, -1, 45}, {sipName_QGraphicsColorizeEffect, &sipType_QGraphicsColorizeEffect, -1, 46}, {sipName_QGraphicsDropShadowEffect, &sipType_QGraphicsDropShadowEffect, -1, 47}, {sipName_QGraphicsOpacityEffect, &sipType_QGraphicsOpacityEffect, -1, -1}, {sipName_QDockWidget, &sipType_QDockWidget, -1, 49}, {sipName_QProgressBar, &sipType_QProgressBar, -1, 50}, #if QT_VERSION >= 0x050400 && defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLWidget, &sipType_QOpenGLWidget, -1, 51}, #else {0, 0, -1, 51}, #endif {sipName_QAbstractButton, &sipType_QAbstractButton, 78, 52}, {sipName_QSplashScreen, &sipType_QSplashScreen, -1, 53}, {sipName_QMenuBar, &sipType_QMenuBar, -1, 54}, {sipName_QStatusBar, &sipType_QStatusBar, -1, 55}, {sipName_QMenu, &sipType_QMenu, -1, 56}, {sipName_QMdiSubWindow, &sipType_QMdiSubWindow, -1, 57}, {sipName_QTabWidget, &sipType_QTabWidget, -1, 58}, #if defined(Q_OS_MAC) && defined(SIP_FEATURE_PyQt_MacOSXOnly) {sipName_QMacCocoaViewContainer, &sipType_QMacCocoaViewContainer, -1, 59}, #else {0, 0, -1, 59}, #endif {sipName_QLineEdit, &sipType_QLineEdit, -1, 60}, {sipName_QFrame, &sipType_QFrame, 83, 61}, {sipName_QComboBox, &sipType_QComboBox, 105, 62}, {sipName_QRubberBand, &sipType_QRubberBand, -1, 63}, {sipName_QAbstractSpinBox, &sipType_QAbstractSpinBox, 106, 64}, {sipName_QDialog, &sipType_QDialog, 111, 65}, #if QT_VERSION >= 0x050200 {sipName_QKeySequenceEdit, &sipType_QKeySequenceEdit, -1, 66}, #else {0, 0, -1, 66}, #endif {sipName_QAbstractSlider, &sipType_QAbstractSlider, 119, 67}, {sipName_QWizardPage, &sipType_QWizardPage, -1, 68}, {sipName_QDesktopWidget, &sipType_QDesktopWidget, -1, 69}, {sipName_QDialogButtonBox, &sipType_QDialogButtonBox, -1, 70}, {sipName_QToolBar, &sipType_QToolBar, -1, 71}, {sipName_QSizeGrip, &sipType_QSizeGrip, -1, 72}, {sipName_QSplitterHandle, &sipType_QSplitterHandle, -1, 73}, {sipName_QTabBar, &sipType_QTabBar, -1, 74}, {sipName_QGroupBox, &sipType_QGroupBox, -1, 75}, {sipName_QMainWindow, &sipType_QMainWindow, -1, 76}, {sipName_QCalendarWidget, &sipType_QCalendarWidget, -1, 77}, {sipName_QFocusFrame, &sipType_QFocusFrame, -1, -1}, {sipName_QCheckBox, &sipType_QCheckBox, -1, 79}, {sipName_QRadioButton, &sipType_QRadioButton, -1, 80}, {sipName_QPushButton, &sipType_QPushButton, 82, 81}, {sipName_QToolButton, &sipType_QToolButton, -1, -1}, {sipName_QCommandLinkButton, &sipType_QCommandLinkButton, -1, -1}, {sipName_QAbstractScrollArea, &sipType_QAbstractScrollArea, 89, 84}, {sipName_QToolBox, &sipType_QToolBox, -1, 85}, {sipName_QSplitter, &sipType_QSplitter, -1, 86}, {sipName_QStackedWidget, &sipType_QStackedWidget, -1, 87}, {sipName_QLabel, &sipType_QLabel, -1, 88}, {sipName_QLCDNumber, &sipType_QLCDNumber, -1, -1}, {sipName_QScrollArea, &sipType_QScrollArea, -1, 90}, {sipName_QPlainTextEdit, &sipType_QPlainTextEdit, -1, 91}, {sipName_QGraphicsView, &sipType_QGraphicsView, -1, 92}, {sipName_QAbstractItemView, &sipType_QAbstractItemView, 95, 93}, {sipName_QTextEdit, &sipType_QTextEdit, 104, 94}, {sipName_QMdiArea, &sipType_QMdiArea, -1, -1}, {sipName_QHeaderView, &sipType_QHeaderView, -1, 96}, {sipName_QTableView, &sipType_QTableView, 100, 97}, {sipName_QListView, &sipType_QListView, 101, 98}, {sipName_QTreeView, &sipType_QTreeView, 103, 99}, {sipName_QColumnView, &sipType_QColumnView, -1, -1}, {sipName_QTableWidget, &sipType_QTableWidget, -1, -1}, {sipName_QListWidget, &sipType_QListWidget, -1, 102}, {sipName_QUndoView, &sipType_QUndoView, -1, -1}, {sipName_QTreeWidget, &sipType_QTreeWidget, -1, -1}, {sipName_QTextBrowser, &sipType_QTextBrowser, -1, -1}, {sipName_QFontComboBox, &sipType_QFontComboBox, -1, -1}, {sipName_QDateTimeEdit, &sipType_QDateTimeEdit, 109, 107}, {sipName_QSpinBox, &sipType_QSpinBox, -1, 108}, {sipName_QDoubleSpinBox, &sipType_QDoubleSpinBox, -1, -1}, {sipName_QDateEdit, &sipType_QDateEdit, -1, 110}, {sipName_QTimeEdit, &sipType_QTimeEdit, -1, -1}, {sipName_QFontDialog, &sipType_QFontDialog, -1, 112}, {sipName_QErrorMessage, &sipType_QErrorMessage, -1, 113}, {sipName_QMessageBox, &sipType_QMessageBox, -1, 114}, {sipName_QProgressDialog, &sipType_QProgressDialog, -1, 115}, {sipName_QColorDialog, &sipType_QColorDialog, -1, 116}, {sipName_QFileDialog, &sipType_QFileDialog, -1, 117}, {sipName_QInputDialog, &sipType_QInputDialog, -1, 118}, {sipName_QWizard, &sipType_QWizard, -1, -1}, {sipName_QDial, &sipType_QDial, -1, 120}, {sipName_QScrollBar, &sipType_QScrollBar, -1, 121}, {sipName_QSlider, &sipType_QSlider, -1, -1}, {sipName_QCommonStyle, &sipType_QCommonStyle, 123, -1}, {sipName_QProxyStyle, &sipType_QProxyStyle, -1, -1}, {sipName_QWidgetAction, &sipType_QWidgetAction, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QApplication(SIP_PYLIST argv /TypeHint="List[str]"/) /PostHook=__pyQtQAppHook__/ [(int &argc, char **argv, int = ApplicationFlags)]; %MethodCode // The Python interface is a list of argument strings that is modified. int argc; char **argv; // Convert the list. if ((argv = pyqt5_qtwidgets_from_argv_list(a0, argc)) == NULL) sipIsErr = 1; else { // Create it now the arguments are right. static int nargc; nargc = argc; Py_BEGIN_ALLOW_THREADS sipCpp = new sipQApplication(nargc, argv, QCoreApplication::ApplicationFlags); Py_END_ALLOW_THREADS // Now modify the original list. pyqt5_qtwidgets_update_argv_list(a0, argc, argv); } %End virtual ~QApplication() /ReleaseGIL/; %MethodCode // Make sure all top level widgets are not owned by Python and so won't be // destroyed by the garbage collector after QApplication is destroyed. Note // that it could still mean that widgets outlive the QApplication (which is // probably not good). However experimentation shows that deleting top level // widgets in the wrong order can cause crashes (so we don't try and do that). QWidgetList tlw = QApplication::topLevelWidgets(); for (int i = 0; i < tlw.count(); ++i) { PyObject *sw = sipGetPyObject(tlw.at(i), sipType_QWidget); if (sw) sipTransferTo(sw, 0); } %End static QStyle *style(); static void setStyle(QStyle * /Transfer/); static QStyle *setStyle(const QString &); enum ColorSpec { NormalColor, CustomColor, ManyColor, }; static int colorSpec(); static void setColorSpec(int); static QPalette palette(); static QPalette palette(const QWidget *); static QPalette palette(const char *className); static void setPalette(const QPalette &, const char *className = 0); static QFont font(); static QFont font(const QWidget *); static QFont font(const char *className); static void setFont(const QFont &, const char *className = 0); static QFontMetrics fontMetrics(); static void setWindowIcon(const QIcon &icon); static QIcon windowIcon(); static QWidgetList allWidgets(); static QWidgetList topLevelWidgets(); static QDesktopWidget *desktop(); static QWidget *activePopupWidget(); static QWidget *activeModalWidget(); static QWidget *focusWidget(); static QWidget *activeWindow(); static void setActiveWindow(QWidget *act); static QWidget *widgetAt(const QPoint &p); static QWidget *widgetAt(int x, int y); static QWidget *topLevelAt(const QPoint &p); static QWidget *topLevelAt(int x, int y); static void beep(); static void alert(QWidget *widget, int msecs = 0) /ReleaseGIL/; static void setCursorFlashTime(int); static int cursorFlashTime(); static void setDoubleClickInterval(int); static int doubleClickInterval(); static void setKeyboardInputInterval(int); static int keyboardInputInterval(); static void setWheelScrollLines(int); static int wheelScrollLines(); static void setGlobalStrut(const QSize &); static QSize globalStrut(); static void setStartDragTime(int ms); static int startDragTime(); static void setStartDragDistance(int l); static int startDragDistance(); static bool isEffectEnabled(Qt::UIEffect); static void setEffectEnabled(Qt::UIEffect, bool enabled = true); static int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %If (Py_v3) static int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %End virtual bool notify(QObject *, QEvent *) /ReleaseGIL/; bool autoSipEnabled() const; QString styleSheet() const; signals: void focusChanged(QWidget *old, QWidget *now); public slots: static void aboutQt(); static void closeAllWindows(); void setAutoSipEnabled(const bool enabled); void setStyleSheet(const QString &sheet); protected: virtual bool event(QEvent *); private: QApplication(const QApplication &); }; %ModuleHeaderCode // Imports from QtCore. typedef char **(*pyqt5_qtwidgets_from_argv_list_t)(PyObject *, int &); extern pyqt5_qtwidgets_from_argv_list_t pyqt5_qtwidgets_from_argv_list; typedef sipErrorState (*pyqt5_qtwidgets_get_connection_parts_t)(PyObject *, QObject *, const char *, bool, QObject **, QByteArray &); extern pyqt5_qtwidgets_get_connection_parts_t pyqt5_qtwidgets_get_connection_parts; typedef sipErrorState (*pyqt5_qtwidgets_get_signal_signature_t)(PyObject *, QObject *, QByteArray &); extern pyqt5_qtwidgets_get_signal_signature_t pyqt5_qtwidgets_get_signal_signature; typedef void (*pyqt5_qtwidgets_update_argv_list_t)(PyObject *, int, char **); extern pyqt5_qtwidgets_update_argv_list_t pyqt5_qtwidgets_update_argv_list; // This is needed for Qt v5.0.0. #if defined(B0) #undef B0 #endif %End %ModuleCode #include "qpywidgets_api.h" // Imports from QtCore. pyqt5_qtwidgets_from_argv_list_t pyqt5_qtwidgets_from_argv_list; pyqt5_qtwidgets_get_connection_parts_t pyqt5_qtwidgets_get_connection_parts; pyqt5_qtwidgets_get_signal_signature_t pyqt5_qtwidgets_get_signal_signature; pyqt5_qtwidgets_update_argv_list_t pyqt5_qtwidgets_update_argv_list; %End %PostInitialisationCode // Imports from QtCore. pyqt5_qtwidgets_from_argv_list = (pyqt5_qtwidgets_from_argv_list_t)sipImportSymbol("pyqt5_from_argv_list"); Q_ASSERT(pyqt5_qtwidgets_from_argv_list); pyqt5_qtwidgets_get_connection_parts = (pyqt5_qtwidgets_get_connection_parts_t)sipImportSymbol("pyqt5_get_connection_parts"); Q_ASSERT(pyqt5_qtwidgets_get_connection_parts); pyqt5_qtwidgets_get_signal_signature = (pyqt5_qtwidgets_get_signal_signature_t)sipImportSymbol("pyqt5_get_signal_signature"); Q_ASSERT(pyqt5_qtwidgets_get_signal_signature); pyqt5_qtwidgets_update_argv_list = (pyqt5_qtwidgets_update_argv_list_t)sipImportSymbol("pyqt5_update_argv_list"); Q_ASSERT(pyqt5_qtwidgets_update_argv_list); qpywidgets_post_init(); %End PyQt5_gpl-5.10.1/sip/QtWidgets/qboxlayout.sip0000644000076500000240000001144113245233151021133 0ustar philstaff00000000000000// qboxlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBoxLayout : QLayout { %TypeHeaderCode #include %End public: enum Direction { LeftToRight, RightToLeft, TopToBottom, BottomToTop, Down, Up, }; QBoxLayout(QBoxLayout::Direction direction, QWidget *parent /TransferThis/ = 0); virtual ~QBoxLayout(); QBoxLayout::Direction direction() const; void setDirection(QBoxLayout::Direction); void addSpacing(int size); void addStretch(int stretch = 0); void addWidget(QWidget * /GetWrapper/, int stretch = 0, Qt::Alignment alignment = 0); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->addWidget(a0, a1, *a2); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End void addLayout(QLayout *layout /Transfer/, int stretch = 0); void addStrut(int); virtual void addItem(QLayoutItem * /Transfer/); void insertSpacing(int index, int size); void insertStretch(int index, int stretch = 0); void insertWidget(int index, QWidget *widget /GetWrapper/, int stretch = 0, Qt::Alignment alignment = 0); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->insertWidget(a0, a1, a2, *a3); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a1Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows insertWidget(QWidget()). sipTransferTo(a1Wrapper, sipSelf); } %End void insertLayout(int index, QLayout *layout /Transfer/, int stretch = 0); bool setStretchFactor(QWidget *w, int stretch); bool setStretchFactor(QLayout *l, int stretch); virtual QSize sizeHint() const; virtual QSize minimumSize() const; virtual QSize maximumSize() const; virtual bool hasHeightForWidth() const; virtual int heightForWidth(int) const; virtual int minimumHeightForWidth(int) const; virtual Qt::Orientations expandingDirections() const; virtual void invalidate(); virtual QLayoutItem *itemAt(int) const; virtual QLayoutItem *takeAt(int) /TransferBack/; virtual int count() const; virtual void setGeometry(const QRect &); int spacing() const; void setSpacing(int spacing); void addSpacerItem(QSpacerItem *spacerItem /Transfer/); void insertSpacerItem(int index, QSpacerItem *spacerItem /Transfer/); void setStretch(int index, int stretch); int stretch(int index) const; void insertItem(int index, QLayoutItem * /TransferThis/); private: QBoxLayout(const QBoxLayout &); }; class QHBoxLayout : QBoxLayout { %TypeHeaderCode #include %End public: QHBoxLayout(); explicit QHBoxLayout(QWidget *parent /TransferThis/); virtual ~QHBoxLayout(); private: QHBoxLayout(const QHBoxLayout &); }; class QVBoxLayout : QBoxLayout { %TypeHeaderCode #include %End public: QVBoxLayout(); explicit QVBoxLayout(QWidget *parent /TransferThis/); virtual ~QVBoxLayout(); private: QVBoxLayout(const QVBoxLayout &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qbuttongroup.sip0000644000076500000240000000363113245233151021477 0ustar philstaff00000000000000// qbuttongroup.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QButtonGroup : QObject { %TypeHeaderCode #include %End public: explicit QButtonGroup(QObject *parent /TransferThis/ = 0); virtual ~QButtonGroup(); void setExclusive(bool); bool exclusive() const; void addButton(QAbstractButton *, int id = -1); void removeButton(QAbstractButton *); QList buttons() const; QAbstractButton *button(int id) const; QAbstractButton *checkedButton() const; void setId(QAbstractButton *button, int id); int id(QAbstractButton *button) const; int checkedId() const; signals: void buttonClicked(QAbstractButton *); void buttonClicked(int); void buttonPressed(QAbstractButton *); void buttonPressed(int); void buttonReleased(QAbstractButton *); void buttonReleased(int); %If (Qt_5_2_0 -) void buttonToggled(QAbstractButton *, bool); %End %If (Qt_5_2_0 -) void buttonToggled(int, bool); %End private: QButtonGroup(const QButtonGroup &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qcalendarwidget.sip0000644000076500000240000000777413245233151022100 0ustar philstaff00000000000000// qcalendarwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCalendarWidget : QWidget { %TypeHeaderCode #include %End public: enum HorizontalHeaderFormat { NoHorizontalHeader, SingleLetterDayNames, ShortDayNames, LongDayNames, }; enum VerticalHeaderFormat { NoVerticalHeader, ISOWeekNumbers, }; enum SelectionMode { NoSelection, SingleSelection, }; explicit QCalendarWidget(QWidget *parent /TransferThis/ = 0); virtual ~QCalendarWidget(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; QDate selectedDate() const; int yearShown() const; int monthShown() const; QDate minimumDate() const; void setMinimumDate(const QDate &date); QDate maximumDate() const; void setMaximumDate(const QDate &date); Qt::DayOfWeek firstDayOfWeek() const; void setFirstDayOfWeek(Qt::DayOfWeek dayOfWeek); bool isGridVisible() const; void setGridVisible(bool show); QCalendarWidget::SelectionMode selectionMode() const; void setSelectionMode(QCalendarWidget::SelectionMode mode); QCalendarWidget::HorizontalHeaderFormat horizontalHeaderFormat() const; void setHorizontalHeaderFormat(QCalendarWidget::HorizontalHeaderFormat format); QCalendarWidget::VerticalHeaderFormat verticalHeaderFormat() const; void setVerticalHeaderFormat(QCalendarWidget::VerticalHeaderFormat format); QTextCharFormat headerTextFormat() const; void setHeaderTextFormat(const QTextCharFormat &format); QTextCharFormat weekdayTextFormat(Qt::DayOfWeek dayOfWeek) const; void setWeekdayTextFormat(Qt::DayOfWeek dayOfWeek, const QTextCharFormat &format); QMap dateTextFormat() const; QTextCharFormat dateTextFormat(const QDate &date) const; void setDateTextFormat(const QDate &date, const QTextCharFormat &color); protected: void updateCell(const QDate &date); void updateCells(); virtual bool event(QEvent *event); virtual bool eventFilter(QObject *watched, QEvent *event); virtual void mousePressEvent(QMouseEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual void keyPressEvent(QKeyEvent *event); virtual void paintCell(QPainter *painter, const QRect &rect, const QDate &date) const; public slots: void setCurrentPage(int year, int month); void setDateRange(const QDate &min, const QDate &max); void setSelectedDate(const QDate &date); void showNextMonth(); void showNextYear(); void showPreviousMonth(); void showPreviousYear(); void showSelectedDate(); void showToday(); signals: void activated(const QDate &date); void clicked(const QDate &date); void currentPageChanged(int year, int month); void selectionChanged(); public: bool isNavigationBarVisible() const; bool isDateEditEnabled() const; void setDateEditEnabled(bool enable); int dateEditAcceptDelay() const; void setDateEditAcceptDelay(int delay); public slots: void setNavigationBarVisible(bool visible); private: QCalendarWidget(const QCalendarWidget &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qcheckbox.sip0000644000076500000240000000345313245233151020677 0ustar philstaff00000000000000// qcheckbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCheckBox : QAbstractButton { %TypeHeaderCode #include %End public: explicit QCheckBox(QWidget *parent /TransferThis/ = 0); QCheckBox(const QString &text, QWidget *parent /TransferThis/ = 0); virtual ~QCheckBox(); virtual QSize sizeHint() const; void setTristate(bool on = true); bool isTristate() const; Qt::CheckState checkState() const; void setCheckState(Qt::CheckState state); virtual QSize minimumSizeHint() const; signals: void stateChanged(int); protected: virtual bool hitButton(const QPoint &pos) const; virtual void checkStateSet(); virtual void nextCheckState(); virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); virtual void mouseMoveEvent(QMouseEvent *); void initStyleOption(QStyleOptionButton *option) const; private: QCheckBox(const QCheckBox &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qcolordialog.sip0000644000076500000240000000611213245233151021402 0ustar philstaff00000000000000// qcolordialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QColorDialog : QDialog { %TypeHeaderCode #include %End public: enum ColorDialogOption { ShowAlphaChannel, NoButtons, DontUseNativeDialog, }; typedef QFlags ColorDialogOptions; explicit QColorDialog(QWidget *parent /TransferThis/ = 0); QColorDialog(const QColor &initial, QWidget *parent /TransferThis/ = 0); virtual ~QColorDialog(); static QColor getColor(const QColor &initial = Qt::white, QWidget *parent = 0, const QString &title = QString(), QColorDialog::ColorDialogOptions options = QColorDialog::ColorDialogOptions()) /ReleaseGIL/; static int customCount(); static QColor customColor(int index); static void setCustomColor(int index, QColor color); static QColor standardColor(int index); static void setStandardColor(int index, QColor color); signals: void colorSelected(const QColor &color); void currentColorChanged(const QColor &color); protected: virtual void changeEvent(QEvent *e); virtual void done(int result); public: void setCurrentColor(const QColor &color); QColor currentColor() const; QColor selectedColor() const; void setOption(QColorDialog::ColorDialogOption option, bool on = true); bool testOption(QColorDialog::ColorDialogOption option) const; void setOptions(QColorDialog::ColorDialogOptions options); QColorDialog::ColorDialogOptions options() const; virtual void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual void setVisible(bool visible); private: QColorDialog(const QColorDialog &); }; QFlags operator|(QColorDialog::ColorDialogOption f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qcolumnview.sip0000644000076500000240000000555013245233151021301 0ustar philstaff00000000000000// qcolumnview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QColumnView : QAbstractItemView { %TypeHeaderCode #include %End public: explicit QColumnView(QWidget *parent /TransferThis/ = 0); virtual ~QColumnView(); QList columnWidths() const; QWidget *previewWidget() const; bool resizeGripsVisible() const; void setColumnWidths(const QList &list); void setPreviewWidget(QWidget *widget /Transfer/); void setResizeGripsVisible(bool visible); virtual QModelIndex indexAt(const QPoint &point) const; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); virtual QSize sizeHint() const; virtual QRect visualRect(const QModelIndex &index) const; virtual void setModel(QAbstractItemModel *model /KeepReference/); virtual void setSelectionModel(QItemSelectionModel *selectionModel /KeepReference/); virtual void setRootIndex(const QModelIndex &index); virtual void selectAll(); signals: void updatePreviewWidget(const QModelIndex &index); protected: virtual QAbstractItemView *createColumn(const QModelIndex &rootIndex); void initializeColumn(QAbstractItemView *column) const; virtual bool isIndexHidden(const QModelIndex &index) const; virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers); virtual void resizeEvent(QResizeEvent *event); virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command); virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; virtual int horizontalOffset() const; virtual int verticalOffset() const; virtual void scrollContentsBy(int dx, int dy); virtual void rowsInserted(const QModelIndex &parent, int start, int end); protected slots: virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); private: QColumnView(const QColumnView &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qcombobox.sip0000644000076500000240000001352013245233151020715 0ustar philstaff00000000000000// qcombobox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QComboBox : QWidget { %TypeHeaderCode #include %End public: explicit QComboBox(QWidget *parent /TransferThis/ = 0); virtual ~QComboBox(); int maxVisibleItems() const; void setMaxVisibleItems(int maxItems); int count() const /__len__/; void setMaxCount(int max); int maxCount() const; bool duplicatesEnabled() const; void setDuplicatesEnabled(bool enable); void setFrame(bool); bool hasFrame() const; int findText(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly|Qt::MatchCaseSensitive) const; int findData(const QVariant &data, int role = Qt::UserRole, Qt::MatchFlags flags = Qt::MatchExactly|Qt::MatchCaseSensitive) const; enum InsertPolicy { NoInsert, InsertAtTop, InsertAtCurrent, InsertAtBottom, InsertAfterCurrent, InsertBeforeCurrent, InsertAlphabetically, }; QComboBox::InsertPolicy insertPolicy() const; void setInsertPolicy(QComboBox::InsertPolicy policy); enum SizeAdjustPolicy { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon, }; QComboBox::SizeAdjustPolicy sizeAdjustPolicy() const; void setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy policy); int minimumContentsLength() const; void setMinimumContentsLength(int characters); QSize iconSize() const; void setIconSize(const QSize &size); bool isEditable() const; void setEditable(bool editable); void setLineEdit(QLineEdit *edit /Transfer/); QLineEdit *lineEdit() const; void setValidator(const QValidator *v /KeepReference/); const QValidator *validator() const; QAbstractItemDelegate *itemDelegate() const; void setItemDelegate(QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemModel *model() const; void setModel(QAbstractItemModel *model /KeepReference/); QModelIndex rootModelIndex() const; void setRootModelIndex(const QModelIndex &index); int modelColumn() const; void setModelColumn(int visibleColumn); int currentIndex() const; void setCurrentIndex(int index); QString currentText() const; QString itemText(int index) const; QIcon itemIcon(int index) const; QVariant itemData(int index, int role = Qt::UserRole) const; void addItems(const QStringList &texts); void addItem(const QString &text, const QVariant &userData = QVariant()); void addItem(const QIcon &icon, const QString &text, const QVariant &userData = QVariant()); void insertItem(int index, const QString &text, const QVariant &userData = QVariant()); void insertItem(int index, const QIcon &icon, const QString &text, const QVariant &userData = QVariant()); void insertItems(int index, const QStringList &texts); void removeItem(int index); void setItemText(int index, const QString &text); void setItemIcon(int index, const QIcon &icon); void setItemData(int index, const QVariant &value, int role = Qt::UserRole); QAbstractItemView *view() const; void setView(QAbstractItemView *itemView /Transfer/); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; virtual void showPopup(); virtual void hidePopup(); virtual bool event(QEvent *event); void setCompleter(QCompleter *c /KeepReference/); QCompleter *completer() const; void insertSeparator(int index); public slots: void clear(); void clearEditText(); void setEditText(const QString &text); void setCurrentText(const QString &text); signals: void editTextChanged(const QString &); void activated(int index); void activated(const QString &); void currentIndexChanged(int index); void currentIndexChanged(const QString &); void currentTextChanged(const QString &); void highlighted(int index); void highlighted(const QString &); protected: void initStyleOption(QStyleOptionComboBox *option) const; virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void changeEvent(QEvent *e); virtual void resizeEvent(QResizeEvent *e); virtual void paintEvent(QPaintEvent *e); virtual void showEvent(QShowEvent *e); virtual void hideEvent(QHideEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void keyReleaseEvent(QKeyEvent *e); virtual void wheelEvent(QWheelEvent *e); virtual void contextMenuEvent(QContextMenuEvent *e); virtual void inputMethodEvent(QInputMethodEvent *); public: virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const; %If (Qt_5_2_0 -) QVariant currentData(int role = Qt::UserRole) const; %End %If (Qt_5_7_0 -) QVariant inputMethodQuery(Qt::InputMethodQuery query, const QVariant &argument) const; %End private: QComboBox(const QComboBox &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qcommandlinkbutton.sip0000644000076500000240000000327113245233151022637 0ustar philstaff00000000000000// qcommandlinkbutton.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCommandLinkButton : QPushButton { %TypeHeaderCode #include %End public: explicit QCommandLinkButton(QWidget *parent /TransferThis/ = 0); QCommandLinkButton(const QString &text, QWidget *parent /TransferThis/ = 0); QCommandLinkButton(const QString &text, const QString &description, QWidget *parent /TransferThis/ = 0); virtual ~QCommandLinkButton(); QString description() const; void setDescription(const QString &description); protected: virtual QSize sizeHint() const; virtual int heightForWidth(int) const; virtual QSize minimumSizeHint() const; virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); private: QCommandLinkButton(const QCommandLinkButton &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qcommonstyle.sip0000644000076500000240000000616713245233151021467 0ustar philstaff00000000000000// qcommonstyle.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCommonStyle : QStyle { %TypeHeaderCode #include %End public: QCommonStyle(); virtual ~QCommonStyle(); virtual void polish(QWidget *widget); virtual void unpolish(QWidget *widget); virtual void polish(QApplication *app); virtual void unpolish(QApplication *application); virtual void polish(QPalette & /In,Out/); virtual void drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *widget = 0) const; virtual void drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *widget = 0) const; virtual QRect subElementRect(QStyle::SubElement r, const QStyleOption *opt, const QWidget *widget = 0) const; virtual void drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget = 0) const; virtual QStyle::SubControl hitTestComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget = 0) const; virtual QRect subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget = 0) const; virtual QSize sizeFromContents(QStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget = 0) const; virtual int pixelMetric(QStyle::PixelMetric m, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual int styleHint(QStyle::StyleHint sh, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const; virtual QPixmap standardPixmap(QStyle::StandardPixmap sp, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const; virtual QIcon standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option = 0, const QWidget *widget = 0) const; private: QCommonStyle(const QCommonStyle &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qcompleter.sip0000644000076500000240000000643713245233151021110 0ustar philstaff00000000000000// qcompleter.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCompleter : QObject { %TypeHeaderCode #include %End public: enum CompletionMode { PopupCompletion, UnfilteredPopupCompletion, InlineCompletion, }; enum ModelSorting { UnsortedModel, CaseSensitivelySortedModel, CaseInsensitivelySortedModel, }; QCompleter(QObject *parent /TransferThis/ = 0); QCompleter(QAbstractItemModel *model, QObject *parent /TransferThis/ = 0); QCompleter(const QStringList &list, QObject *parent /TransferThis/ = 0); virtual ~QCompleter(); void setWidget(QWidget *widget /Transfer/); QWidget *widget() const; void setModel(QAbstractItemModel *c /KeepReference/); QAbstractItemModel *model() const; void setCompletionMode(QCompleter::CompletionMode mode); QCompleter::CompletionMode completionMode() const; QAbstractItemView *popup() const; void setPopup(QAbstractItemView *popup /Transfer/); void setCaseSensitivity(Qt::CaseSensitivity caseSensitivity); Qt::CaseSensitivity caseSensitivity() const; void setModelSorting(QCompleter::ModelSorting sorting); QCompleter::ModelSorting modelSorting() const; void setCompletionColumn(int column); int completionColumn() const; void setCompletionRole(int role); int completionRole() const; int completionCount() const; bool setCurrentRow(int row); int currentRow() const; QModelIndex currentIndex() const; QString currentCompletion() const; QAbstractItemModel *completionModel() const; QString completionPrefix() const; virtual QString pathFromIndex(const QModelIndex &index) const; virtual QStringList splitPath(const QString &path) const; bool wrapAround() const; public slots: void complete(const QRect &rect = QRect()); void setCompletionPrefix(const QString &prefix); void setWrapAround(bool wrap); protected: virtual bool eventFilter(QObject *o, QEvent *e); virtual bool event(QEvent *); signals: void activated(const QString &text); void activated(const QModelIndex &index); void highlighted(const QString &text); void highlighted(const QModelIndex &index); public: int maxVisibleItems() const; void setMaxVisibleItems(int maxItems); %If (Qt_5_2_0 -) void setFilterMode(Qt::MatchFlags filterMode); %End %If (Qt_5_2_0 -) Qt::MatchFlags filterMode() const; %End }; PyQt5_gpl-5.10.1/sip/QtWidgets/qdatawidgetmapper.sip0000644000076500000240000000470113245233151022430 0ustar philstaff00000000000000// qdatawidgetmapper.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDataWidgetMapper : QObject { %TypeHeaderCode #include %End public: enum SubmitPolicy { AutoSubmit, ManualSubmit, }; explicit QDataWidgetMapper(QObject *parent /TransferThis/ = 0); virtual ~QDataWidgetMapper(); void setModel(QAbstractItemModel *model /KeepReference/); QAbstractItemModel *model() const; void setItemDelegate(QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemDelegate *itemDelegate() const; void setRootIndex(const QModelIndex &index); QModelIndex rootIndex() const; void setOrientation(Qt::Orientation aOrientation); Qt::Orientation orientation() const; void setSubmitPolicy(QDataWidgetMapper::SubmitPolicy policy); QDataWidgetMapper::SubmitPolicy submitPolicy() const; void addMapping(QWidget *widget, int section); void addMapping(QWidget *widget, int section, const QByteArray &propertyName); void removeMapping(QWidget *widget); QByteArray mappedPropertyName(QWidget *widget) const; int mappedSection(QWidget *widget) const; QWidget *mappedWidgetAt(int section) const; void clearMapping(); int currentIndex() const; public slots: void revert(); virtual void setCurrentIndex(int index); void setCurrentModelIndex(const QModelIndex &index); bool submit(); void toFirst(); void toLast(); void toNext(); void toPrevious(); signals: void currentIndexChanged(int index); private: QDataWidgetMapper(const QDataWidgetMapper &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qdatetimeedit.sip0000644000076500000240000001214013245233151021544 0ustar philstaff00000000000000// qdatetimeedit.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDateTimeEdit : QAbstractSpinBox { %TypeHeaderCode #include %End public: enum Section { NoSection, AmPmSection, MSecSection, SecondSection, MinuteSection, HourSection, DaySection, MonthSection, YearSection, TimeSections_Mask, DateSections_Mask, }; typedef QFlags Sections; explicit QDateTimeEdit(QWidget *parent /TransferThis/ = 0); QDateTimeEdit(const QDateTime &datetime, QWidget *parent /TransferThis/ = 0); QDateTimeEdit(const QDate &date, QWidget *parent /TransferThis/ = 0); QDateTimeEdit(const QTime &time, QWidget *parent /TransferThis/ = 0); virtual ~QDateTimeEdit(); QDateTime dateTime() const; QDate date() const; QTime time() const; QDate minimumDate() const; void setMinimumDate(const QDate &min); void clearMinimumDate(); QDate maximumDate() const; void setMaximumDate(const QDate &max); void clearMaximumDate(); void setDateRange(const QDate &min, const QDate &max); QTime minimumTime() const; void setMinimumTime(const QTime &min); void clearMinimumTime(); QTime maximumTime() const; void setMaximumTime(const QTime &max); void clearMaximumTime(); void setTimeRange(const QTime &min, const QTime &max); QDateTimeEdit::Sections displayedSections() const; QDateTimeEdit::Section currentSection() const; void setCurrentSection(QDateTimeEdit::Section section); QString sectionText(QDateTimeEdit::Section s) const; QString displayFormat() const; void setDisplayFormat(const QString &format); bool calendarPopup() const; void setCalendarPopup(bool enable); void setSelectedSection(QDateTimeEdit::Section section); virtual QSize sizeHint() const; virtual void clear(); virtual void stepBy(int steps); virtual bool event(QEvent *e); QDateTimeEdit::Section sectionAt(int index) const; int currentSectionIndex() const; void setCurrentSectionIndex(int index); int sectionCount() const; signals: void dateTimeChanged(const QDateTime &date); void timeChanged(const QTime &date); void dateChanged(const QDate &date); public slots: void setDateTime(const QDateTime &dateTime); void setDate(const QDate &date); void setTime(const QTime &time); protected: void initStyleOption(QStyleOptionSpinBox *option) const; virtual void keyPressEvent(QKeyEvent *e); virtual void wheelEvent(QWheelEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual bool focusNextPrevChild(bool next); virtual void mousePressEvent(QMouseEvent *event); virtual void paintEvent(QPaintEvent *event); virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; virtual void fixup(QString &input /In,Out/) const; virtual QDateTime dateTimeFromText(const QString &text) const; virtual QString textFromDateTime(const QDateTime &dt) const; virtual QAbstractSpinBox::StepEnabled stepEnabled() const; public: QDateTime minimumDateTime() const; void clearMinimumDateTime(); void setMinimumDateTime(const QDateTime &dt); QDateTime maximumDateTime() const; void clearMaximumDateTime(); void setMaximumDateTime(const QDateTime &dt); void setDateTimeRange(const QDateTime &min, const QDateTime &max); QCalendarWidget *calendarWidget() const; void setCalendarWidget(QCalendarWidget *calendarWidget /Transfer/); Qt::TimeSpec timeSpec() const; void setTimeSpec(Qt::TimeSpec spec); private: QDateTimeEdit(const QDateTimeEdit &); }; class QTimeEdit : QDateTimeEdit { %TypeHeaderCode #include %End public: explicit QTimeEdit(QWidget *parent /TransferThis/ = 0); QTimeEdit(const QTime &time, QWidget *parent /TransferThis/ = 0); virtual ~QTimeEdit(); }; class QDateEdit : QDateTimeEdit { %TypeHeaderCode #include %End public: explicit QDateEdit(QWidget *parent /TransferThis/ = 0); QDateEdit(const QDate &date, QWidget *parent /TransferThis/ = 0); virtual ~QDateEdit(); }; QFlags operator|(QDateTimeEdit::Section f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qdesktopwidget.sip0000644000076500000240000000365013245233151021765 0ustar philstaff00000000000000// qdesktopwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesktopWidget : QWidget { %TypeHeaderCode #include %End public: QDesktopWidget(); virtual ~QDesktopWidget(); bool isVirtualDesktop() const; int primaryScreen() const; int screenNumber(const QWidget *widget = 0) const; int screenNumber(const QPoint &) const; QWidget *screen(int screen = -1); int screenCount() const; const QRect screenGeometry(int screen = -1) const; const QRect screenGeometry(const QWidget *widget) const; const QRect screenGeometry(const QPoint &point) const; const QRect availableGeometry(int screen = -1) const; const QRect availableGeometry(const QWidget *widget) const; const QRect availableGeometry(const QPoint &point) const; signals: void resized(int); void workAreaResized(int); void screenCountChanged(int); %If (Qt_5_6_0 -) void primaryScreenChanged(); %End protected: virtual void resizeEvent(QResizeEvent *e); private: QDesktopWidget(const QDesktopWidget &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qdial.sip0000644000076500000240000000354613245233151020025 0ustar philstaff00000000000000// qdial.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDial : QAbstractSlider { %TypeHeaderCode #include %End public: explicit QDial(QWidget *parent /TransferThis/ = 0); virtual ~QDial(); bool wrapping() const; int notchSize() const; void setNotchTarget(double target); qreal notchTarget() const; bool notchesVisible() const; virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; public slots: void setNotchesVisible(bool visible); void setWrapping(bool on); protected: void initStyleOption(QStyleOptionSlider *option) const; virtual bool event(QEvent *e); virtual void resizeEvent(QResizeEvent *re); virtual void paintEvent(QPaintEvent *pe); virtual void mousePressEvent(QMouseEvent *me); virtual void mouseReleaseEvent(QMouseEvent *me); virtual void mouseMoveEvent(QMouseEvent *me); virtual void sliderChange(QAbstractSlider::SliderChange change); private: QDial(const QDial &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qdialog.sip0000644000076500000240000000654213245233151020352 0ustar philstaff00000000000000// qdialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDialog : QWidget { %TypeHeaderCode #include %End public: QDialog(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QDialog(); enum DialogCode { Rejected, Accepted, }; int result() const; virtual void setVisible(bool visible); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setSizeGripEnabled(bool); bool isSizeGripEnabled() const; void setModal(bool modal); void setResult(int r); virtual int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %MethodCode // Transfer ownership back to Python (a modal dialog will probably have the // main window as it's parent). This means the Qt dialog will be deleted when // the Python wrapper is garbage collected. Although this is a little // inconsistent, it saves having to code it explicitly to avoid the memory // leak. sipTransferBack(sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipSelfWasArg ? sipCpp->QDialog::exec() : sipCpp->exec(); Py_END_ALLOW_THREADS %End %If (Py_v3) virtual int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %MethodCode // Transfer ownership back to Python (a modal dialog will probably have the // main window as it's parent). This means the Qt dialog will be deleted when // the Python wrapper is garbage collected. Although this is a little // inconsistent, it saves having to code it explicitly to avoid the memory // leak. sipTransferBack(sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipSelfWasArg ? sipCpp->QDialog::exec() : sipCpp->exec(); Py_END_ALLOW_THREADS %End %End public slots: virtual void done(int); virtual void accept(); virtual void reject(); virtual void open(); signals: void accepted(); void finished(int result); void rejected(); protected: virtual void keyPressEvent(QKeyEvent *); virtual void closeEvent(QCloseEvent *); virtual void showEvent(QShowEvent *); virtual void resizeEvent(QResizeEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual bool eventFilter(QObject *, QEvent *); private: QDialog(const QDialog &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qdialogbuttonbox.sip0000644000076500000240000000735013245233151022315 0ustar philstaff00000000000000// qdialogbuttonbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDialogButtonBox : QWidget { %TypeHeaderCode #include %End public: enum ButtonLayout { WinLayout, MacLayout, KdeLayout, GnomeLayout, %If (Qt_5_10_0 -) AndroidLayout, %End }; enum ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, HelpRole, YesRole, NoRole, ResetRole, ApplyRole, }; enum StandardButton { NoButton, Ok, Save, SaveAll, Open, Yes, YesToAll, No, NoToAll, Abort, Retry, Ignore, Close, Cancel, Discard, Help, Apply, Reset, RestoreDefaults, }; typedef QFlags StandardButtons; QDialogButtonBox(QWidget *parent /TransferThis/ = 0); QDialogButtonBox(Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); %If (Qt_5_2_0 -) QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, QWidget *parent /TransferThis/ = 0); %End %If (Qt_5_2_0 -) QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); %End %If (- Qt_5_2_0) QDialogButtonBox(QFlags buttons, Qt::Orientation orientation = Qt::Horizontal, QWidget *parent /TransferThis/ = 0); %End virtual ~QDialogButtonBox(); void setOrientation(Qt::Orientation orientation); Qt::Orientation orientation() const; void addButton(QAbstractButton *button /Transfer/, QDialogButtonBox::ButtonRole role); QPushButton *addButton(const QString &text, QDialogButtonBox::ButtonRole role) /Transfer/; QPushButton *addButton(QDialogButtonBox::StandardButton button) /Transfer/; void removeButton(QAbstractButton *button /TransferBack/); void clear(); QList buttons() const; QDialogButtonBox::ButtonRole buttonRole(QAbstractButton *button) const; void setStandardButtons(QDialogButtonBox::StandardButtons buttons); QDialogButtonBox::StandardButtons standardButtons() const; QDialogButtonBox::StandardButton standardButton(QAbstractButton *button) const; QPushButton *button(QDialogButtonBox::StandardButton which) const; void setCenterButtons(bool center); bool centerButtons() const; signals: void accepted(); void clicked(QAbstractButton *button); void helpRequested(); void rejected(); protected: virtual void changeEvent(QEvent *event); virtual bool event(QEvent *event); private: QDialogButtonBox(const QDialogButtonBox &); }; QFlags operator|(QDialogButtonBox::StandardButton f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qdirmodel.sip0000644000076500000240000000716313245233151020712 0ustar philstaff00000000000000// qdirmodel.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDirModel : QAbstractItemModel { %TypeHeaderCode #include %End public: enum Roles { FileIconRole, FilePathRole, FileNameRole, }; QDirModel(const QStringList &nameFilters, QDir::Filters filters, QDir::SortFlags sort, QObject *parent /TransferThis/ = 0); explicit QDirModel(QObject *parent /TransferThis/ = 0); virtual ~QDirModel(); virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &child) const; QObject *parent() const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const /TransferBack/; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual Qt::DropActions supportedDropActions() const; void setIconProvider(QFileIconProvider *provider /KeepReference/); QFileIconProvider *iconProvider() const; void setNameFilters(const QStringList &filters); QStringList nameFilters() const; void setFilter(QDir::Filters filters); QDir::Filters filter() const; void setSorting(QDir::SortFlags sort); QDir::SortFlags sorting() const; void setResolveSymlinks(bool enable); bool resolveSymlinks() const; void setReadOnly(bool enable); bool isReadOnly() const; void setLazyChildCount(bool enable); bool lazyChildCount() const; void refresh(const QModelIndex &parent = QModelIndex()); QModelIndex index(const QString &path, int column = 0) const; bool isDir(const QModelIndex &index) const; QModelIndex mkdir(const QModelIndex &parent, const QString &name); bool rmdir(const QModelIndex &index); bool remove(const QModelIndex &index); QString filePath(const QModelIndex &index) const; QString fileName(const QModelIndex &index) const; QIcon fileIcon(const QModelIndex &index) const; QFileInfo fileInfo(const QModelIndex &index) const; private: QDirModel(const QDirModel &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qdockwidget.sip0000644000076500000240000000544213245233151021235 0ustar philstaff00000000000000// qdockwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDockWidget : QWidget { %TypeHeaderCode #include %End public: QDockWidget(const QString &title, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); QDockWidget(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QDockWidget(); QWidget *widget() const; void setWidget(QWidget *widget /Transfer/); enum DockWidgetFeature { DockWidgetClosable, DockWidgetMovable, DockWidgetFloatable, DockWidgetVerticalTitleBar, AllDockWidgetFeatures, NoDockWidgetFeatures, }; typedef QFlags DockWidgetFeatures; void setFeatures(QDockWidget::DockWidgetFeatures features); QDockWidget::DockWidgetFeatures features() const; void setFloating(bool floating); bool isFloating() const; void setAllowedAreas(Qt::DockWidgetAreas areas); Qt::DockWidgetAreas allowedAreas() const; bool isAreaAllowed(Qt::DockWidgetArea area) const; QAction *toggleViewAction() const /Transfer/; void setTitleBarWidget(QWidget *widget /Transfer/); QWidget *titleBarWidget() const; signals: void featuresChanged(QDockWidget::DockWidgetFeatures features); void topLevelChanged(bool topLevel); void allowedAreasChanged(Qt::DockWidgetAreas allowedAreas); void dockLocationChanged(Qt::DockWidgetArea area); void visibilityChanged(bool visible); protected: void initStyleOption(QStyleOptionDockWidget *option) const; virtual void changeEvent(QEvent *event); virtual void closeEvent(QCloseEvent *event); virtual void paintEvent(QPaintEvent *event); virtual bool event(QEvent *event); private: QDockWidget(const QDockWidget &); }; QFlags operator|(QDockWidget::DockWidgetFeature f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qdrawutil.sip0000644000076500000240000000525213245233151020743 0ustar philstaff00000000000000// qdrawutil.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End void qDrawShadeLine(QPainter *p, int x1, int y1, int x2, int y2, const QPalette &pal, bool sunken = true, int lineWidth = 1, int midLineWidth = 0); void qDrawShadeLine(QPainter *p, const QPoint &p1, const QPoint &p2, const QPalette &pal, bool sunken = true, int lineWidth = 1, int midLineWidth = 0); void qDrawShadeRect(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken = false, int lineWidth = 1, int midLineWidth = 0, const QBrush *fill = 0); void qDrawShadeRect(QPainter *p, const QRect &r, const QPalette &pal, bool sunken = false, int lineWidth = 1, int midLineWidth = 0, const QBrush *fill = 0); void qDrawShadePanel(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken = false, int lineWidth = 1, const QBrush *fill = 0); void qDrawShadePanel(QPainter *p, const QRect &r, const QPalette &pal, bool sunken = false, int lineWidth = 1, const QBrush *fill = 0); void qDrawWinButton(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken = false, const QBrush *fill = 0); void qDrawWinButton(QPainter *p, const QRect &r, const QPalette &pal, bool sunken = false, const QBrush *fill = 0); void qDrawWinPanel(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken = false, const QBrush *fill = 0); void qDrawWinPanel(QPainter *p, const QRect &r, const QPalette &pal, bool sunken = false, const QBrush *fill = 0); void qDrawPlainRect(QPainter *p, int x, int y, int w, int h, const QColor &, int lineWidth = 1, const QBrush *fill = 0); void qDrawPlainRect(QPainter *p, const QRect &r, const QColor &, int lineWidth = 1, const QBrush *fill = 0); void qDrawBorderPixmap(QPainter *painter, const QRect &target, const QMargins &margins, const QPixmap &pixmap); PyQt5_gpl-5.10.1/sip/QtWidgets/qerrormessage.sip0000644000076500000240000000264113245233151021605 0ustar philstaff00000000000000// qerrormessage.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QErrorMessage : QDialog { %TypeHeaderCode #include %End public: explicit QErrorMessage(QWidget *parent /TransferThis/ = 0); virtual ~QErrorMessage(); static QErrorMessage *qtHandler(); public slots: void showMessage(const QString &message); void showMessage(const QString &message, const QString &type); protected: virtual void changeEvent(QEvent *e); virtual void done(int); private: QErrorMessage(const QErrorMessage &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qfiledialog.sip0000644000076500000240000003036413245233151021211 0ustar philstaff00000000000000// qfiledialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileDialog : QDialog { %TypeHeaderCode #include %End public: enum ViewMode { Detail, List, }; enum FileMode { AnyFile, ExistingFile, Directory, ExistingFiles, DirectoryOnly, }; enum AcceptMode { AcceptOpen, AcceptSave, }; enum DialogLabel { LookIn, FileName, FileType, Accept, Reject, }; enum Option { ShowDirsOnly, DontResolveSymlinks, DontConfirmOverwrite, DontUseSheet, DontUseNativeDialog, ReadOnly, HideNameFilterDetails, %If (Qt_5_2_0 -) DontUseCustomDirectoryIcons, %End }; typedef QFlags Options; QFileDialog(QWidget *parent /TransferThis/, Qt::WindowFlags f); QFileDialog(QWidget *parent /TransferThis/ = 0, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString()); virtual ~QFileDialog(); void setDirectory(const QString &directory); void setDirectory(const QDir &adirectory); QDir directory() const; void selectFile(const QString &filename); QStringList selectedFiles() const; void setViewMode(QFileDialog::ViewMode mode); QFileDialog::ViewMode viewMode() const; void setFileMode(QFileDialog::FileMode mode); QFileDialog::FileMode fileMode() const; void setAcceptMode(QFileDialog::AcceptMode mode); QFileDialog::AcceptMode acceptMode() const; void setDefaultSuffix(const QString &suffix); QString defaultSuffix() const; void setHistory(const QStringList &paths); QStringList history() const; void setItemDelegate(QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemDelegate *itemDelegate() const; void setIconProvider(QFileIconProvider *provider /KeepReference/); QFileIconProvider *iconProvider() const; void setLabelText(QFileDialog::DialogLabel label, const QString &text); QString labelText(QFileDialog::DialogLabel label) const; signals: void currentChanged(const QString &path); void directoryEntered(const QString &directory); void filesSelected(const QStringList &files); void filterSelected(const QString &filter); void fileSelected(const QString &file); public: static QString getExistingDirectory(QWidget *parent = 0, const QString &caption = QString(), const QString &directory = QString(), QFileDialog::Options options = QFileDialog::ShowDirsOnly) /ReleaseGIL/; %If (Qt_5_2_0 -) static QUrl getExistingDirectoryUrl(QWidget *parent = 0, const QString &caption = QString(), const QUrl &directory = QUrl(), QFileDialog::Options options = QFileDialog::ShowDirsOnly, const QStringList &supportedSchemes = QStringList()) /ReleaseGIL/; %End static SIP_PYTUPLE getOpenFileName(QWidget *parent = 0, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString(), const QString &initialFilter = QString(), Options options = 0) /TypeHint="Tuple[QString, QString]", ReleaseGIL/; %MethodCode QString *name; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS name = new QString(QFileDialog::getOpenFileName(a0, *a1, *a2, *a3, filter, *a5)); Py_END_ALLOW_THREADS PyObject *name_obj = sipConvertFromNewType(name, sipType_QString, NULL); PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (name_obj && filter_obj) sipRes = PyTuple_Pack(2, name_obj, filter_obj); Py_XDECREF(name_obj); Py_XDECREF(filter_obj); %End static SIP_PYTUPLE getOpenFileNames(QWidget *parent = 0, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString(), const QString &initialFilter = QString(), Options options = 0) /TypeHint="Tuple[QStringList, QString]", ReleaseGIL/; %MethodCode QStringList *names; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS names = new QStringList(QFileDialog::getOpenFileNames(a0, *a1, *a2, *a3, filter, *a5)); Py_END_ALLOW_THREADS PyObject *names_obj = sipConvertFromNewType(names, sipType_QStringList, NULL); PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (names_obj && filter_obj) sipRes = PyTuple_Pack(2, names_obj, filter_obj); Py_XDECREF(names_obj); Py_XDECREF(filter_obj); %End static SIP_PYTUPLE getSaveFileName(QWidget *parent = 0, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString(), const QString &initialFilter = QString(), Options options = 0) /TypeHint="Tuple[QString, QString]", ReleaseGIL/; %MethodCode QString *name; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS name = new QString(QFileDialog::getSaveFileName(a0, *a1, *a2, *a3, filter, *a5)); Py_END_ALLOW_THREADS PyObject *name_obj = sipConvertFromNewType(name, sipType_QString, NULL); PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (name_obj && filter_obj) sipRes = PyTuple_Pack(2, name_obj, filter_obj); Py_XDECREF(name_obj); Py_XDECREF(filter_obj); %End protected: virtual void done(int result); virtual void accept(); virtual void changeEvent(QEvent *e); public: void setSidebarUrls(const QList &urls); QList sidebarUrls() const; QByteArray saveState() const; bool restoreState(const QByteArray &state); void setProxyModel(QAbstractProxyModel *model /Transfer/); QAbstractProxyModel *proxyModel() const; void setNameFilter(const QString &filter); void setNameFilters(const QStringList &filters); QStringList nameFilters() const; void selectNameFilter(const QString &filter); QString selectedNameFilter() const; QDir::Filters filter() const; void setFilter(QDir::Filters filters); void setOption(QFileDialog::Option option, bool on = true); bool testOption(QFileDialog::Option option) const; void setOptions(QFileDialog::Options options); QFileDialog::Options options() const; virtual void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual void setVisible(bool visible); %If (Qt_5_2_0 -) void setDirectoryUrl(const QUrl &directory); %End %If (Qt_5_2_0 -) QUrl directoryUrl() const; %End %If (Qt_5_2_0 -) void selectUrl(const QUrl &url); %End %If (Qt_5_2_0 -) QList selectedUrls() const; %End %If (Qt_5_2_0 -) void setMimeTypeFilters(const QStringList &filters); %End %If (Qt_5_2_0 -) QStringList mimeTypeFilters() const; %End %If (Qt_5_2_0 -) void selectMimeTypeFilter(const QString &filter); %End signals: %If (Qt_5_2_0 -) void urlSelected(const QUrl &url); %End %If (Qt_5_2_0 -) void urlsSelected(const QList &urls); %End %If (Qt_5_2_0 -) void currentUrlChanged(const QUrl &url); %End %If (Qt_5_2_0 -) void directoryUrlEntered(const QUrl &directory); %End public: %If (Qt_5_2_0 -) static SIP_PYTUPLE getOpenFileUrl(QWidget *parent = 0, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString(), const QString &initialFilter = QString(), Options options = 0, const QStringList &supportedSchemes = QStringList()) /TypeHint="Tuple[QUrl, QString]", ReleaseGIL/; %MethodCode QUrl *url; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS url = new QUrl(QFileDialog::getOpenFileUrl(a0, *a1, *a2, *a3, filter, *a5, *a6)); Py_END_ALLOW_THREADS PyObject *url_obj = sipConvertFromNewType(url, sipType_QUrl, NULL); PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (url_obj && filter_obj) sipRes = PyTuple_Pack(2, url_obj, filter_obj); Py_XDECREF(url_obj); Py_XDECREF(filter_obj); %End %End %If (Qt_5_2_0 -) static SIP_PYTUPLE getOpenFileUrls(QWidget *parent = 0, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString(), const QString &initialFilter = QString(), Options options = 0, const QStringList &supportedSchemes = QStringList()) /TypeHint="Tuple[List[QUrl], QString]", ReleaseGIL/; %MethodCode QList url_list; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS url_list = QFileDialog::getOpenFileUrls(a0, *a1, *a2, *a3, filter, *a5, *a6); Py_END_ALLOW_THREADS PyObject *url_list_obj = PyList_New(url_list.size()); if (url_list_obj) { for (int i = 0; i < url_list.size(); ++i) { QUrl *url = new QUrl(url_list.at(i)); PyObject *url_obj = sipConvertFromNewType(url, sipType_QUrl, NULL); if (!url_obj) { delete url; Py_DECREF(url_list_obj); url_list_obj = 0; break; } PyList_SetItem(url_list_obj, i, url_obj); } } PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (url_list_obj && filter_obj) sipRes = PyTuple_Pack(2, url_list_obj, filter_obj); Py_XDECREF(url_list_obj); Py_XDECREF(filter_obj); %End %End %If (Qt_5_2_0 -) static SIP_PYTUPLE getSaveFileUrl(QWidget *parent = 0, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString(), const QString &initialFilter = QString(), Options options = 0, const QStringList &supportedSchemes = QStringList()) /TypeHint="Tuple[QUrl, QString]", ReleaseGIL/; %MethodCode QUrl *url; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS url = new QUrl(QFileDialog::getSaveFileUrl(a0, *a1, *a2, *a3, filter, *a5, *a6)); Py_END_ALLOW_THREADS PyObject *url_obj = sipConvertFromNewType(url, sipType_QUrl, NULL); PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (url_obj && filter_obj) sipRes = PyTuple_Pack(2, url_obj, filter_obj); Py_XDECREF(url_obj); Py_XDECREF(filter_obj); %End %End %If (Qt_5_6_0 -) void setSupportedSchemes(const QStringList &schemes); %End %If (Qt_5_6_0 -) QStringList supportedSchemes() const; %End %If (Qt_5_9_0 -) QString selectedMimeTypeFilter() const; %End private: QFileDialog(const QFileDialog &); }; QFlags operator|(QFileDialog::Option f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qfileiconprovider.sip0000644000076500000240000000362413245233151022454 0ustar philstaff00000000000000// qfileiconprovider.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileIconProvider { %TypeHeaderCode #include %End public: QFileIconProvider(); virtual ~QFileIconProvider(); enum IconType { Computer, Desktop, Trashcan, Network, Drive, Folder, File, }; virtual QIcon icon(QFileIconProvider::IconType type) const; virtual QIcon icon(const QFileInfo &info) const; virtual QString type(const QFileInfo &info) const; %If (Qt_5_2_0 -) enum Option { DontUseCustomDirectoryIcons, }; %End %If (Qt_5_2_0 -) typedef QFlags Options; %End %If (Qt_5_2_0 -) void setOptions(QFileIconProvider::Options options); %End %If (Qt_5_2_0 -) QFileIconProvider::Options options() const; %End private: QFileIconProvider(const QFileIconProvider &); }; %If (Qt_5_2_0 -) QFlags operator|(QFileIconProvider::Option f1, QFlags f2); %End PyQt5_gpl-5.10.1/sip/QtWidgets/qfilesystemmodel.sip0000644000076500000240000001046513245233151022317 0ustar philstaff00000000000000// qfilesystemmodel.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileSystemModel : QAbstractItemModel { %TypeHeaderCode #include %End public: enum Roles { FileIconRole, FilePathRole, FileNameRole, FilePermissions, }; explicit QFileSystemModel(QObject *parent /TransferThis/ = 0); virtual ~QFileSystemModel(); virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; QModelIndex index(const QString &path, int column = 0) const; virtual QModelIndex parent(const QModelIndex &child) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual bool canFetchMore(const QModelIndex &parent) const; virtual void fetchMore(const QModelIndex &parent); virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; QVariant myComputer(int role = Qt::DisplayRole) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &idx, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual Qt::DropActions supportedDropActions() const; QModelIndex setRootPath(const QString &path); QString rootPath() const; QDir rootDirectory() const; void setIconProvider(QFileIconProvider *provider /KeepReference/); QFileIconProvider *iconProvider() const; void setFilter(QDir::Filters filters); QDir::Filters filter() const; void setResolveSymlinks(bool enable); bool resolveSymlinks() const; void setReadOnly(bool enable); bool isReadOnly() const; void setNameFilterDisables(bool enable); bool nameFilterDisables() const; void setNameFilters(const QStringList &filters); QStringList nameFilters() const; QString filePath(const QModelIndex &index) const; bool isDir(const QModelIndex &index) const; qint64 size(const QModelIndex &index) const; QString type(const QModelIndex &index) const; QDateTime lastModified(const QModelIndex &index) const; QModelIndex mkdir(const QModelIndex &parent, const QString &name); QFileDevice::Permissions permissions(const QModelIndex &index) const; bool rmdir(const QModelIndex &index); QString fileName(const QModelIndex &aindex) const; QIcon fileIcon(const QModelIndex &aindex) const; QFileInfo fileInfo(const QModelIndex &aindex) const; bool remove(const QModelIndex &index); signals: void fileRenamed(const QString &path, const QString &oldName, const QString &newName); void rootPathChanged(const QString &newPath); void directoryLoaded(const QString &path); protected: virtual bool event(QEvent *event); virtual void timerEvent(QTimerEvent *event); public: %If (Qt_5_7_0 -) virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; %End private: QFileSystemModel(const QFileSystemModel &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qfocusframe.sip0000644000076500000240000000263013245233151021237 0ustar philstaff00000000000000// qfocusframe.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFocusFrame : QWidget { %TypeHeaderCode #include %End public: QFocusFrame(QWidget *parent /TransferThis/ = 0); virtual ~QFocusFrame(); void setWidget(QWidget *widget); QWidget *widget() const; protected: void initStyleOption(QStyleOption *option) const; virtual bool eventFilter(QObject *, QEvent *); virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); private: QFocusFrame(const QFocusFrame &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qfontcombobox.sip0000644000076500000240000000366413245233151021614 0ustar philstaff00000000000000// qfontcombobox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFontComboBox : QComboBox { %TypeHeaderCode #include %End public: enum FontFilter { AllFonts, ScalableFonts, NonScalableFonts, MonospacedFonts, ProportionalFonts, }; QFontComboBox::FontFilters fontFilters() const; explicit QFontComboBox(QWidget *parent /TransferThis/ = 0); virtual ~QFontComboBox(); void setWritingSystem(QFontDatabase::WritingSystem); QFontDatabase::WritingSystem writingSystem() const; typedef QFlags FontFilters; void setFontFilters(QFontComboBox::FontFilters filters); QFont currentFont() const; virtual QSize sizeHint() const; public slots: void setCurrentFont(const QFont &f); signals: void currentFontChanged(const QFont &f); protected: virtual bool event(QEvent *e); private: QFontComboBox(const QFontComboBox &); }; QFlags operator|(QFontComboBox::FontFilter f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qfontdialog.sip0000644000076500000240000000613213245233151021234 0ustar philstaff00000000000000// qfontdialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFontDialog : QDialog { %TypeHeaderCode #include %End public: enum FontDialogOption { NoButtons, DontUseNativeDialog, %If (Qt_5_2_0 -) ScalableFonts, %End %If (Qt_5_2_0 -) NonScalableFonts, %End %If (Qt_5_2_0 -) MonospacedFonts, %End %If (Qt_5_2_0 -) ProportionalFonts, %End }; typedef QFlags FontDialogOptions; explicit QFontDialog(QWidget *parent /TransferThis/ = 0); QFontDialog(const QFont &initial, QWidget *parent /TransferThis/ = 0); virtual ~QFontDialog(); static QFont getFont(bool *ok, const QFont &initial, QWidget *parent = 0, const QString &caption = QString(), QFontDialog::FontDialogOptions options = QFontDialog::FontDialogOptions()) /ReleaseGIL/; static QFont getFont(bool *ok, QWidget *parent = 0) /ReleaseGIL/; protected: virtual void changeEvent(QEvent *e); virtual void done(int result); virtual bool eventFilter(QObject *object, QEvent *event); public: void setCurrentFont(const QFont &font); QFont currentFont() const; QFont selectedFont() const; void setOption(QFontDialog::FontDialogOption option, bool on = true); bool testOption(QFontDialog::FontDialogOption option) const; void setOptions(QFontDialog::FontDialogOptions options); QFontDialog::FontDialogOptions options() const; virtual void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual void setVisible(bool visible); signals: void currentFontChanged(const QFont &font); void fontSelected(const QFont &font); private: QFontDialog(const QFontDialog &); }; QFlags operator|(QFontDialog::FontDialogOption f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qformlayout.sip0000644000076500000240000001115313245233151021306 0ustar philstaff00000000000000// qformlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFormLayout : QLayout { %TypeHeaderCode #include %End public: enum FieldGrowthPolicy { FieldsStayAtSizeHint, ExpandingFieldsGrow, AllNonFixedFieldsGrow, }; enum RowWrapPolicy { DontWrapRows, WrapLongRows, WrapAllRows, }; enum ItemRole { LabelRole, FieldRole, SpanningRole, }; explicit QFormLayout(QWidget *parent /TransferThis/ = 0); virtual ~QFormLayout(); void setFieldGrowthPolicy(QFormLayout::FieldGrowthPolicy policy); QFormLayout::FieldGrowthPolicy fieldGrowthPolicy() const; void setRowWrapPolicy(QFormLayout::RowWrapPolicy policy); QFormLayout::RowWrapPolicy rowWrapPolicy() const; void setLabelAlignment(Qt::Alignment alignment); Qt::Alignment labelAlignment() const; void setFormAlignment(Qt::Alignment alignment); Qt::Alignment formAlignment() const; void setHorizontalSpacing(int spacing); int horizontalSpacing() const; void setVerticalSpacing(int spacing); int verticalSpacing() const; int spacing() const; void setSpacing(int); void addRow(QWidget *label /Transfer/, QWidget *field /Transfer/); void addRow(QWidget *label /Transfer/, QLayout *field /Transfer/); void addRow(const QString &labelText, QWidget *field /Transfer/); void addRow(const QString &labelText, QLayout *field /Transfer/); void addRow(QWidget *widget /Transfer/); void addRow(QLayout *layout /Transfer/); void insertRow(int row, QWidget *label /Transfer/, QWidget *field /Transfer/); void insertRow(int row, QWidget *label /Transfer/, QLayout *field /Transfer/); void insertRow(int row, const QString &labelText, QWidget *field /Transfer/); void insertRow(int row, const QString &labelText, QLayout *field /Transfer/); void insertRow(int row, QWidget *widget /Transfer/); void insertRow(int row, QLayout *layout /Transfer/); void setItem(int row, QFormLayout::ItemRole role, QLayoutItem *item /Transfer/); void setWidget(int row, QFormLayout::ItemRole role, QWidget *widget /Transfer/); void setLayout(int row, QFormLayout::ItemRole role, QLayout *layout /Transfer/); QLayoutItem *itemAt(int row, QFormLayout::ItemRole role) const; void getItemPosition(int index, int *rowPtr, QFormLayout::ItemRole *rolePtr) const; void getWidgetPosition(QWidget *widget, int *rowPtr, QFormLayout::ItemRole *rolePtr) const; void getLayoutPosition(QLayout *layout, int *rowPtr, QFormLayout::ItemRole *rolePtr) const; QWidget *labelForField(QWidget *field) const; QWidget *labelForField(QLayout *field) const; virtual void addItem(QLayoutItem *item /Transfer/); virtual QLayoutItem *itemAt(int index) const; virtual QLayoutItem *takeAt(int index) /TransferBack/; virtual void setGeometry(const QRect &rect); virtual QSize minimumSize() const; virtual QSize sizeHint() const; virtual void invalidate(); virtual bool hasHeightForWidth() const; virtual int heightForWidth(int width) const; virtual Qt::Orientations expandingDirections() const; virtual int count() const; int rowCount() const; %If (Qt_5_8_0 -) struct TakeRowResult { %TypeHeaderCode #include %End QLayoutItem *labelItem; QLayoutItem *fieldItem; }; %End %If (Qt_5_8_0 -) void removeRow(int row); %End %If (Qt_5_8_0 -) void removeRow(QWidget *widget); %End %If (Qt_5_8_0 -) void removeRow(QLayout *layout); %End %If (Qt_5_8_0 -) QFormLayout::TakeRowResult takeRow(int row); %End %If (Qt_5_8_0 -) QFormLayout::TakeRowResult takeRow(QWidget *widget); %End %If (Qt_5_8_0 -) QFormLayout::TakeRowResult takeRow(QLayout *layout); %End }; PyQt5_gpl-5.10.1/sip/QtWidgets/qframe.sip0000644000076500000240000000420213245233151020174 0ustar philstaff00000000000000// qframe.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFrame : QWidget { %TypeHeaderCode #include %End public: enum Shadow { Plain, Raised, Sunken, }; enum Shape { NoFrame, Box, Panel, WinPanel, HLine, VLine, StyledPanel, }; enum StyleMask { Shadow_Mask, Shape_Mask, }; QFrame(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QFrame(); int frameStyle() const; void setFrameStyle(int); int frameWidth() const; virtual QSize sizeHint() const; QFrame::Shape frameShape() const; void setFrameShape(QFrame::Shape); QFrame::Shadow frameShadow() const; void setFrameShadow(QFrame::Shadow); int lineWidth() const; void setLineWidth(int); int midLineWidth() const; void setMidLineWidth(int); QRect frameRect() const; void setFrameRect(const QRect &); protected: virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); virtual void changeEvent(QEvent *); void drawFrame(QPainter *); %If (Qt_5_5_0 -) void initStyleOption(QStyleOptionFrame *option) const; %End private: QFrame(const QFrame &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qgesture.sip0000644000076500000240000001231313245233151020562 0ustar philstaff00000000000000// qgesture.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGesture : QObject { %TypeHeaderCode #include %End public: explicit QGesture(QObject *parent /TransferThis/ = 0); virtual ~QGesture(); Qt::GestureType gestureType() const; Qt::GestureState state() const; QPointF hotSpot() const; void setHotSpot(const QPointF &value); bool hasHotSpot() const; void unsetHotSpot(); enum GestureCancelPolicy { CancelNone, CancelAllInContext, }; void setGestureCancelPolicy(QGesture::GestureCancelPolicy policy); QGesture::GestureCancelPolicy gestureCancelPolicy() const; }; class QPanGesture : QGesture { %TypeHeaderCode #include %End public: explicit QPanGesture(QObject *parent /TransferThis/ = 0); virtual ~QPanGesture(); QPointF lastOffset() const; QPointF offset() const; QPointF delta() const; qreal acceleration() const; void setLastOffset(const QPointF &value); void setOffset(const QPointF &value); void setAcceleration(qreal value); }; class QPinchGesture : QGesture { %TypeHeaderCode #include %End public: enum ChangeFlag { ScaleFactorChanged, RotationAngleChanged, CenterPointChanged, }; typedef QFlags ChangeFlags; explicit QPinchGesture(QObject *parent /TransferThis/ = 0); virtual ~QPinchGesture(); QPinchGesture::ChangeFlags totalChangeFlags() const; void setTotalChangeFlags(QPinchGesture::ChangeFlags value); QPinchGesture::ChangeFlags changeFlags() const; void setChangeFlags(QPinchGesture::ChangeFlags value); QPointF startCenterPoint() const; QPointF lastCenterPoint() const; QPointF centerPoint() const; void setStartCenterPoint(const QPointF &value); void setLastCenterPoint(const QPointF &value); void setCenterPoint(const QPointF &value); qreal totalScaleFactor() const; qreal lastScaleFactor() const; qreal scaleFactor() const; void setTotalScaleFactor(qreal value); void setLastScaleFactor(qreal value); void setScaleFactor(qreal value); qreal totalRotationAngle() const; qreal lastRotationAngle() const; qreal rotationAngle() const; void setTotalRotationAngle(qreal value); void setLastRotationAngle(qreal value); void setRotationAngle(qreal value); }; class QSwipeGesture : QGesture { %TypeHeaderCode #include %End public: enum SwipeDirection { NoDirection, Left, Right, Up, Down, }; explicit QSwipeGesture(QObject *parent /TransferThis/ = 0); virtual ~QSwipeGesture(); QSwipeGesture::SwipeDirection horizontalDirection() const; QSwipeGesture::SwipeDirection verticalDirection() const; qreal swipeAngle() const; void setSwipeAngle(qreal value); }; class QTapGesture : QGesture { %TypeHeaderCode #include %End public: explicit QTapGesture(QObject *parent /TransferThis/ = 0); virtual ~QTapGesture(); QPointF position() const; void setPosition(const QPointF &pos); }; class QTapAndHoldGesture : QGesture { %TypeHeaderCode #include %End public: explicit QTapAndHoldGesture(QObject *parent /TransferThis/ = 0); virtual ~QTapAndHoldGesture(); QPointF position() const; void setPosition(const QPointF &pos); static void setTimeout(int msecs); static int timeout(); }; class QGestureEvent : QEvent { %TypeHeaderCode #include %End %ConvertToSubClassCode sipType = ((sipCpp->type() == QEvent::Gesture) ? sipType_QGestureEvent : 0); %End public: explicit QGestureEvent(const QList &gestures); virtual ~QGestureEvent(); QList gestures() const; QGesture *gesture(Qt::GestureType type) const; QList activeGestures() const; QList canceledGestures() const; void setAccepted(bool accepted); bool isAccepted() const; void accept(); void ignore(); void setAccepted(QGesture *, bool); void accept(QGesture *); void ignore(QGesture *); bool isAccepted(QGesture *) const; void setAccepted(Qt::GestureType, bool); void accept(Qt::GestureType); void ignore(Qt::GestureType); bool isAccepted(Qt::GestureType) const; QWidget *widget() const; QPointF mapToGraphicsScene(const QPointF &gesturePoint) const; }; PyQt5_gpl-5.10.1/sip/QtWidgets/qgesturerecognizer.sip0000644000076500000240000000350113245233151022651 0ustar philstaff00000000000000// qgesturerecognizer.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGestureRecognizer /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum ResultFlag { Ignore, MayBeGesture, TriggerGesture, FinishGesture, CancelGesture, ConsumeEventHint, }; typedef QFlags Result; QGestureRecognizer(); virtual ~QGestureRecognizer(); virtual QGesture *create(QObject *target) /Factory/; virtual QFlags recognize(QGesture *state, QObject *watched, QEvent *event) = 0; virtual void reset(QGesture *state); static Qt::GestureType registerRecognizer(QGestureRecognizer *recognizer /Transfer/); static void unregisterRecognizer(Qt::GestureType type); }; QFlags operator|(QGestureRecognizer::ResultFlag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qgraphicsanchorlayout.sip0000644000076500000240000000537013245233151023342 0ustar philstaff00000000000000// qgraphicsanchorlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsAnchor : QObject { %TypeHeaderCode #include %End public: virtual ~QGraphicsAnchor(); void setSpacing(qreal spacing); void unsetSpacing(); qreal spacing() const; void setSizePolicy(QSizePolicy::Policy policy); QSizePolicy::Policy sizePolicy() const; private: QGraphicsAnchor(QGraphicsAnchorLayout *parent); }; class QGraphicsAnchorLayout : QGraphicsLayout { %TypeHeaderCode #include %End public: QGraphicsAnchorLayout(QGraphicsLayoutItem *parent /TransferThis/ = 0); virtual ~QGraphicsAnchorLayout(); QGraphicsAnchor *addAnchor(QGraphicsLayoutItem *firstItem /Transfer/, Qt::AnchorPoint firstEdge, QGraphicsLayoutItem *secondItem /Transfer/, Qt::AnchorPoint secondEdge); QGraphicsAnchor *anchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge, QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge); void addCornerAnchors(QGraphicsLayoutItem *firstItem /Transfer/, Qt::Corner firstCorner, QGraphicsLayoutItem *secondItem /Transfer/, Qt::Corner secondCorner); void addAnchors(QGraphicsLayoutItem *firstItem /Transfer/, QGraphicsLayoutItem *secondItem /Transfer/, Qt::Orientations orientations = Qt::Horizontal | Qt::Vertical); void setHorizontalSpacing(qreal spacing); void setVerticalSpacing(qreal spacing); void setSpacing(qreal spacing); qreal horizontalSpacing() const; qreal verticalSpacing() const; virtual void removeAt(int index); virtual void setGeometry(const QRectF &rect); virtual int count() const; virtual QGraphicsLayoutItem *itemAt(int index) const; virtual void invalidate(); protected: virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; private: QGraphicsAnchorLayout(const QGraphicsAnchorLayout &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qgraphicseffect.sip0000644000076500000240000001265413245233151022071 0ustar philstaff00000000000000// qgraphicseffect.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsEffect : QObject { %TypeHeaderCode #include %End public: enum ChangeFlag { SourceAttached, SourceDetached, SourceBoundingRectChanged, SourceInvalidated, }; typedef QFlags ChangeFlags; enum PixmapPadMode { NoPad, PadToTransparentBorder, PadToEffectiveBoundingRect, }; QGraphicsEffect(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsEffect(); virtual QRectF boundingRectFor(const QRectF &sourceRect) const; QRectF boundingRect() const; bool isEnabled() const; public slots: void setEnabled(bool enable); void update(); signals: void enabledChanged(bool enabled); protected: virtual void draw(QPainter *painter) = 0; virtual void sourceChanged(QGraphicsEffect::ChangeFlags flags); void updateBoundingRect(); bool sourceIsPixmap() const; QRectF sourceBoundingRect(Qt::CoordinateSystem system = Qt::LogicalCoordinates) const; void drawSource(QPainter *painter); QPixmap sourcePixmap(Qt::CoordinateSystem system = Qt::LogicalCoordinates, QPoint *offset /Out/ = 0, QGraphicsEffect::PixmapPadMode mode = QGraphicsEffect::PadToEffectiveBoundingRect) const; private: QGraphicsEffect(const QGraphicsEffect &); }; QFlags operator|(QGraphicsEffect::ChangeFlag f1, QFlags f2); class QGraphicsColorizeEffect : QGraphicsEffect { %TypeHeaderCode #include %End public: QGraphicsColorizeEffect(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsColorizeEffect(); QColor color() const; qreal strength() const; public slots: void setColor(const QColor &c); void setStrength(qreal strength); signals: void colorChanged(const QColor &color); void strengthChanged(qreal strength); protected: virtual void draw(QPainter *painter); private: QGraphicsColorizeEffect(const QGraphicsColorizeEffect &); }; class QGraphicsBlurEffect : QGraphicsEffect { %TypeHeaderCode #include %End public: enum BlurHint { PerformanceHint, QualityHint, AnimationHint, }; typedef QFlags BlurHints; QGraphicsBlurEffect(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsBlurEffect(); virtual QRectF boundingRectFor(const QRectF &rect) const; qreal blurRadius() const; QGraphicsBlurEffect::BlurHints blurHints() const; public slots: void setBlurRadius(qreal blurRadius); void setBlurHints(QGraphicsBlurEffect::BlurHints hints); signals: void blurRadiusChanged(qreal blurRadius); void blurHintsChanged(QGraphicsBlurEffect::BlurHints hints); protected: virtual void draw(QPainter *painter); private: QGraphicsBlurEffect(const QGraphicsBlurEffect &); }; QFlags operator|(QGraphicsBlurEffect::BlurHint f1, QFlags f2); class QGraphicsDropShadowEffect : QGraphicsEffect { %TypeHeaderCode #include %End public: QGraphicsDropShadowEffect(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsDropShadowEffect(); virtual QRectF boundingRectFor(const QRectF &rect) const; QPointF offset() const; qreal xOffset() const; qreal yOffset() const; qreal blurRadius() const; QColor color() const; public slots: void setOffset(const QPointF &ofs); void setOffset(qreal dx, qreal dy); void setOffset(qreal d); void setXOffset(qreal dx); void setYOffset(qreal dy); void setBlurRadius(qreal blurRadius); void setColor(const QColor &color); signals: void offsetChanged(const QPointF &offset); void blurRadiusChanged(qreal blurRadius); void colorChanged(const QColor &color); protected: virtual void draw(QPainter *painter); private: QGraphicsDropShadowEffect(const QGraphicsDropShadowEffect &); }; class QGraphicsOpacityEffect : QGraphicsEffect { %TypeHeaderCode #include %End public: QGraphicsOpacityEffect(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsOpacityEffect(); qreal opacity() const; QBrush opacityMask() const; public slots: void setOpacity(qreal opacity); void setOpacityMask(const QBrush &mask); signals: void opacityChanged(qreal opacity); void opacityMaskChanged(const QBrush &mask); protected: virtual void draw(QPainter *painter); private: QGraphicsOpacityEffect(const QGraphicsOpacityEffect &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qgraphicsgridlayout.sip0000644000076500000240000001025713245233151023015 0ustar philstaff00000000000000// qgraphicsgridlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsGridLayout : QGraphicsLayout { %TypeHeaderCode #include %End public: QGraphicsGridLayout(QGraphicsLayoutItem *parent /TransferThis/ = 0); virtual ~QGraphicsGridLayout(); void addItem(QGraphicsLayoutItem *item /Transfer/, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment()); void addItem(QGraphicsLayoutItem *item /Transfer/, int row, int column, Qt::Alignment alignment = Qt::Alignment()); void setHorizontalSpacing(qreal spacing); qreal horizontalSpacing() const; void setVerticalSpacing(qreal spacing); qreal verticalSpacing() const; void setSpacing(qreal spacing); void setRowSpacing(int row, qreal spacing); qreal rowSpacing(int row) const; void setColumnSpacing(int column, qreal spacing); qreal columnSpacing(int column) const; void setRowStretchFactor(int row, int stretch); int rowStretchFactor(int row) const; void setColumnStretchFactor(int column, int stretch); int columnStretchFactor(int column) const; void setRowMinimumHeight(int row, qreal height); qreal rowMinimumHeight(int row) const; void setRowPreferredHeight(int row, qreal height); qreal rowPreferredHeight(int row) const; void setRowMaximumHeight(int row, qreal height); qreal rowMaximumHeight(int row) const; void setRowFixedHeight(int row, qreal height); void setColumnMinimumWidth(int column, qreal width); qreal columnMinimumWidth(int column) const; void setColumnPreferredWidth(int column, qreal width); qreal columnPreferredWidth(int column) const; void setColumnMaximumWidth(int column, qreal width); qreal columnMaximumWidth(int column) const; void setColumnFixedWidth(int column, qreal width); void setRowAlignment(int row, Qt::Alignment alignment); Qt::Alignment rowAlignment(int row) const; void setColumnAlignment(int column, Qt::Alignment alignment); Qt::Alignment columnAlignment(int column) const; void setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment); Qt::Alignment alignment(QGraphicsLayoutItem *item) const; int rowCount() const; int columnCount() const; QGraphicsLayoutItem *itemAt(int row, int column) const; virtual int count() const; virtual QGraphicsLayoutItem *itemAt(int index) const; virtual void removeAt(int index); %MethodCode // The ownership of any existing item must be passed back to Python. QGraphicsLayoutItem *itm; if (a0 < sipCpp->count()) itm = sipCpp->itemAt(a0); else itm = 0; Py_BEGIN_ALLOW_THREADS sipSelfWasArg ? sipCpp->QGraphicsGridLayout::removeAt(a0) : sipCpp->removeAt(a0); Py_END_ALLOW_THREADS if (itm) { PyObject *itmo = sipGetPyObject(itm, sipType_QGraphicsLayoutItem); if (itmo) sipTransferBack(itmo); } %End virtual void invalidate(); virtual void setGeometry(const QRectF &rect); virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; void removeItem(QGraphicsLayoutItem *item /TransferBack/); private: QGraphicsGridLayout(const QGraphicsGridLayout &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qgraphicsitem.sip0000644000076500000240000006612713245233151021577 0ustar philstaff00000000000000// qgraphicsitem.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsItem /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type()) { case 2: sipType = sipType_QGraphicsPathItem; break; case 3: sipType = sipType_QGraphicsRectItem; break; case 4: sipType = sipType_QGraphicsEllipseItem; break; case 5: sipType = sipType_QGraphicsPolygonItem; break; case 6: sipType = sipType_QGraphicsLineItem; break; case 7: sipType = sipType_QGraphicsPixmapItem; break; case 8: // We need to explicitly cast because of the multiple inheritance. *sipCppRet = static_cast(sipCpp); sipType = sipType_QGraphicsTextItem; break; case 9: sipType = sipType_QGraphicsSimpleTextItem; break; case 10: sipType = sipType_QGraphicsItemGroup; break; case 11: // We need to explicitly cast because of the multiple inheritance. *sipCppRet = static_cast(sipCpp); sipType = sipType_QGraphicsWidget; break; case 12: // We need to explicitly cast because of the multiple inheritance. *sipCppRet = static_cast(sipCpp); sipType = sipType_QGraphicsProxyWidget; break; default: sipType = 0; } %End public: enum CacheMode { NoCache, ItemCoordinateCache, DeviceCoordinateCache, }; enum GraphicsItemChange { ItemPositionChange, ItemMatrixChange, ItemVisibleChange, ItemEnabledChange, ItemSelectedChange, ItemParentChange, ItemChildAddedChange, ItemChildRemovedChange, ItemTransformChange, ItemPositionHasChanged, ItemTransformHasChanged, ItemSceneChange, ItemVisibleHasChanged, ItemEnabledHasChanged, ItemSelectedHasChanged, ItemParentHasChanged, ItemSceneHasChanged, ItemCursorChange, ItemCursorHasChanged, ItemToolTipChange, ItemToolTipHasChanged, ItemFlagsChange, ItemFlagsHaveChanged, ItemZValueChange, ItemZValueHasChanged, ItemOpacityChange, ItemOpacityHasChanged, ItemScenePositionHasChanged, ItemRotationChange, ItemRotationHasChanged, ItemScaleChange, ItemScaleHasChanged, ItemTransformOriginPointChange, ItemTransformOriginPointHasChanged, }; enum GraphicsItemFlag { ItemIsMovable, ItemIsSelectable, ItemIsFocusable, ItemClipsToShape, ItemClipsChildrenToShape, ItemIgnoresTransformations, ItemIgnoresParentOpacity, ItemDoesntPropagateOpacityToChildren, ItemStacksBehindParent, ItemUsesExtendedStyleOption, ItemHasNoContents, ItemSendsGeometryChanges, ItemAcceptsInputMethod, ItemNegativeZStacksBehindParent, ItemIsPanel, ItemSendsScenePositionChanges, %If (Qt_5_4_0 -) ItemContainsChildrenInShape, %End }; typedef QFlags GraphicsItemFlags; static const int Type; static const int UserType; explicit QGraphicsItem(QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsItem(); QGraphicsScene *scene() const; QGraphicsItem *parentItem() const; QGraphicsItem *topLevelItem() const; void setParentItem(QGraphicsItem *parent /TransferThis/); QGraphicsItemGroup *group() const; void setGroup(QGraphicsItemGroup *group /KeepReference/); QGraphicsItem::GraphicsItemFlags flags() const; void setFlag(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true); void setFlags(QGraphicsItem::GraphicsItemFlags flags); QString toolTip() const; void setToolTip(const QString &toolTip); QCursor cursor() const; void setCursor(const QCursor &cursor); bool hasCursor() const; void unsetCursor(); bool isVisible() const; void setVisible(bool visible); void hide(); void show(); bool isEnabled() const; void setEnabled(bool enabled); bool isSelected() const; void setSelected(bool selected); bool acceptDrops() const; void setAcceptDrops(bool on); Qt::MouseButtons acceptedMouseButtons() const; void setAcceptedMouseButtons(Qt::MouseButtons buttons); bool hasFocus() const; void setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason); void clearFocus(); QPointF pos() const; qreal x() const; qreal y() const; QPointF scenePos() const; void setPos(const QPointF &pos); void moveBy(qreal dx, qreal dy); void ensureVisible(const QRectF &rect = QRectF(), int xMargin = 50, int yMargin = 50); virtual void advance(int phase); qreal zValue() const; void setZValue(qreal z); virtual QRectF boundingRect() const = 0; QRectF childrenBoundingRect() const; QRectF sceneBoundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual bool collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; virtual bool collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QList collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0) = 0; void update(const QRectF &rect = QRectF()); QPointF mapToItem(const QGraphicsItem *item, const QPointF &point) const; QPointF mapToParent(const QPointF &point) const; QPointF mapToScene(const QPointF &point) const; QPolygonF mapToItem(const QGraphicsItem *item, const QRectF &rect) const; QPolygonF mapToParent(const QRectF &rect) const; QPolygonF mapToScene(const QRectF &rect) const; QPolygonF mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const; QPolygonF mapToParent(const QPolygonF &polygon) const; QPolygonF mapToScene(const QPolygonF &polygon) const; QPainterPath mapToItem(const QGraphicsItem *item, const QPainterPath &path) const; QPainterPath mapToParent(const QPainterPath &path) const; QPainterPath mapToScene(const QPainterPath &path) const; QPointF mapFromItem(const QGraphicsItem *item, const QPointF &point) const; QPointF mapFromParent(const QPointF &point) const; QPointF mapFromScene(const QPointF &point) const; QPolygonF mapFromItem(const QGraphicsItem *item, const QRectF &rect) const; QPolygonF mapFromParent(const QRectF &rect) const; QPolygonF mapFromScene(const QRectF &rect) const; QPolygonF mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const; QPolygonF mapFromParent(const QPolygonF &polygon) const; QPolygonF mapFromScene(const QPolygonF &polygon) const; QPainterPath mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const; QPainterPath mapFromParent(const QPainterPath &path) const; QPainterPath mapFromScene(const QPainterPath &path) const; bool isAncestorOf(const QGraphicsItem *child) const; QVariant data(int key) const; void setData(int key, const QVariant &value); virtual int type() const; void installSceneEventFilter(QGraphicsItem *filterItem); void removeSceneEventFilter(QGraphicsItem *filterItem); protected: virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event); virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event); virtual void dropEvent(QGraphicsSceneDragDropEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual void inputMethodEvent(QInputMethodEvent *event); virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); void prepareGeometryChange(); virtual bool sceneEvent(QEvent *event); virtual bool sceneEventFilter(QGraphicsItem *watched, QEvent *event); virtual void wheelEvent(QGraphicsSceneWheelEvent *event); public: void setPos(qreal ax, qreal ay); void ensureVisible(qreal x, qreal y, qreal w, qreal h, int xMargin = 50, int yMargin = 50); void update(qreal ax, qreal ay, qreal width, qreal height); QPointF mapToItem(const QGraphicsItem *item, qreal ax, qreal ay) const; QPointF mapToParent(qreal ax, qreal ay) const; QPointF mapToScene(qreal ax, qreal ay) const; QPointF mapFromItem(const QGraphicsItem *item, qreal ax, qreal ay) const; QPointF mapFromParent(qreal ax, qreal ay) const; QPointF mapFromScene(qreal ax, qreal ay) const; QTransform transform() const; QTransform sceneTransform() const; QTransform deviceTransform(const QTransform &viewportTransform) const; void setTransform(const QTransform &matrix, bool combine = false); void resetTransform(); bool isObscured(const QRectF &rect = QRectF()) const; bool isObscured(qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapToItem(const QGraphicsItem *item, qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapToParent(qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapToScene(qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapFromItem(const QGraphicsItem *item, qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapFromParent(qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapFromScene(qreal ax, qreal ay, qreal w, qreal h) const; QGraphicsWidget *parentWidget() const; QGraphicsWidget *topLevelWidget() const; QGraphicsWidget *window() const; QList childItems() const; bool isWidget() const; bool isWindow() const; QGraphicsItem::CacheMode cacheMode() const; void setCacheMode(QGraphicsItem::CacheMode mode, const QSize &logicalCacheSize = QSize()); bool isVisibleTo(const QGraphicsItem *parent) const; bool acceptHoverEvents() const; void setAcceptHoverEvents(bool enabled); void grabMouse(); void ungrabMouse(); void grabKeyboard(); void ungrabKeyboard(); QRegion boundingRegion(const QTransform &itemToDeviceTransform) const; qreal boundingRegionGranularity() const; void setBoundingRegionGranularity(qreal granularity); void scroll(qreal dx, qreal dy, const QRectF &rect = QRectF()); QGraphicsItem *commonAncestorItem(const QGraphicsItem *other) const; bool isUnderMouse() const; qreal opacity() const; qreal effectiveOpacity() const; void setOpacity(qreal opacity); QTransform itemTransform(const QGraphicsItem *other, bool *ok = 0) const; bool isClipped() const; QPainterPath clipPath() const; QRectF mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const; QRectF mapRectToParent(const QRectF &rect) const; QRectF mapRectToScene(const QRectF &rect) const; QRectF mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const; QRectF mapRectFromParent(const QRectF &rect) const; QRectF mapRectFromScene(const QRectF &rect) const; QRectF mapRectToItem(const QGraphicsItem *item, qreal ax, qreal ay, qreal w, qreal h) const; QRectF mapRectToParent(qreal ax, qreal ay, qreal w, qreal h) const; QRectF mapRectToScene(qreal ax, qreal ay, qreal w, qreal h) const; QRectF mapRectFromItem(const QGraphicsItem *item, qreal ax, qreal ay, qreal w, qreal h) const; QRectF mapRectFromParent(qreal ax, qreal ay, qreal w, qreal h) const; QRectF mapRectFromScene(qreal ax, qreal ay, qreal w, qreal h) const; enum PanelModality { NonModal, PanelModal, SceneModal, }; QGraphicsObject *parentObject() const; QGraphicsItem *panel() const; bool isPanel() const; QGraphicsObject *toGraphicsObject(); QGraphicsItem::PanelModality panelModality() const; void setPanelModality(QGraphicsItem::PanelModality panelModality); bool isBlockedByModalPanel(QGraphicsItem **blockingPanel /Out/ = 0) const; QGraphicsEffect *graphicsEffect() const; void setGraphicsEffect(QGraphicsEffect *effect /Transfer/); bool acceptTouchEvents() const; void setAcceptTouchEvents(bool enabled); bool filtersChildEvents() const; void setFiltersChildEvents(bool enabled); bool isActive() const; void setActive(bool active); QGraphicsItem *focusProxy() const; void setFocusProxy(QGraphicsItem *item /KeepReference/); QGraphicsItem *focusItem() const; void setX(qreal x); void setY(qreal y); void setRotation(qreal angle); qreal rotation() const; void setScale(qreal scale); qreal scale() const; QList transformations() const; void setTransformations(const QList &transformations /KeepReference/); QPointF transformOriginPoint() const; void setTransformOriginPoint(const QPointF &origin); void setTransformOriginPoint(qreal ax, qreal ay); void stackBefore(const QGraphicsItem *sibling); Qt::InputMethodHints inputMethodHints() const; void setInputMethodHints(Qt::InputMethodHints hints); protected: void updateMicroFocus(); private: QGraphicsItem(const QGraphicsItem &); }; QFlags operator|(QGraphicsItem::GraphicsItemFlag f1, QFlags f2); class QAbstractGraphicsShapeItem : QGraphicsItem { %TypeHeaderCode #include %End public: explicit QAbstractGraphicsShapeItem(QGraphicsItem *parent /TransferThis/ = 0); virtual ~QAbstractGraphicsShapeItem(); QPen pen() const; void setPen(const QPen &pen); QBrush brush() const; void setBrush(const QBrush &brush); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; private: QAbstractGraphicsShapeItem(const QAbstractGraphicsShapeItem &); }; class QGraphicsPathItem : QAbstractGraphicsShapeItem { %TypeHeaderCode #include %End public: explicit QGraphicsPathItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsPathItem(const QPainterPath &path, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsPathItem(); QPainterPath path() const; void setPath(const QPainterPath &path); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; private: QGraphicsPathItem(const QGraphicsPathItem &); }; class QGraphicsRectItem : QAbstractGraphicsShapeItem { %TypeHeaderCode #include %End public: explicit QGraphicsRectItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsRectItem(const QRectF &rect, QGraphicsItem *parent /TransferThis/ = 0); QGraphicsRectItem(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsRectItem(); QRectF rect() const; void setRect(const QRectF &rect); void setRect(qreal ax, qreal ay, qreal w, qreal h); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; private: QGraphicsRectItem(const QGraphicsRectItem &); }; class QGraphicsEllipseItem : QAbstractGraphicsShapeItem { %TypeHeaderCode #include %End public: explicit QGraphicsEllipseItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsEllipseItem(const QRectF &rect, QGraphicsItem *parent /TransferThis/ = 0); QGraphicsEllipseItem(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsEllipseItem(); QRectF rect() const; void setRect(const QRectF &rect); void setRect(qreal ax, qreal ay, qreal w, qreal h); int startAngle() const; void setStartAngle(int angle); int spanAngle() const; void setSpanAngle(int angle); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; private: QGraphicsEllipseItem(const QGraphicsEllipseItem &); }; class QGraphicsPolygonItem : QAbstractGraphicsShapeItem { %TypeHeaderCode #include %End public: explicit QGraphicsPolygonItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsPolygonItem(const QPolygonF &polygon, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsPolygonItem(); QPolygonF polygon() const; void setPolygon(const QPolygonF &polygon); Qt::FillRule fillRule() const; void setFillRule(Qt::FillRule rule); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; private: QGraphicsPolygonItem(const QGraphicsPolygonItem &); }; class QGraphicsLineItem : QGraphicsItem { %TypeHeaderCode #include %End public: explicit QGraphicsLineItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsLineItem(const QLineF &line, QGraphicsItem *parent /TransferThis/ = 0); QGraphicsLineItem(qreal x1, qreal y1, qreal x2, qreal y2, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsLineItem(); QPen pen() const; void setPen(const QPen &pen); QLineF line() const; void setLine(const QLineF &line); void setLine(qreal x1, qreal y1, qreal x2, qreal y2); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; private: QGraphicsLineItem(const QGraphicsLineItem &); }; class QGraphicsPixmapItem : QGraphicsItem { %TypeHeaderCode #include %End public: enum ShapeMode { MaskShape, BoundingRectShape, HeuristicMaskShape, }; explicit QGraphicsPixmapItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsPixmapItem(const QPixmap &pixmap, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsPixmapItem(); QPixmap pixmap() const; void setPixmap(const QPixmap &pixmap); Qt::TransformationMode transformationMode() const; void setTransformationMode(Qt::TransformationMode mode); QPointF offset() const; void setOffset(const QPointF &offset); void setOffset(qreal ax, qreal ay); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; QGraphicsPixmapItem::ShapeMode shapeMode() const; void setShapeMode(QGraphicsPixmapItem::ShapeMode mode); private: QGraphicsPixmapItem(const QGraphicsPixmapItem &); }; class QGraphicsSimpleTextItem : QAbstractGraphicsShapeItem { %TypeHeaderCode #include %End public: explicit QGraphicsSimpleTextItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsSimpleTextItem(const QString &text, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsSimpleTextItem(); void setText(const QString &text); QString text() const; void setFont(const QFont &font); QFont font() const; virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; private: QGraphicsSimpleTextItem(const QGraphicsSimpleTextItem &); }; class QGraphicsItemGroup : QGraphicsItem { %TypeHeaderCode #include %End public: explicit QGraphicsItemGroup(QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsItemGroup(); void addToGroup(QGraphicsItem *item /Transfer/); void removeFromGroup(QGraphicsItem *item /GetWrapper/); %MethodCode sipCpp->removeFromGroup(a0); // The item will be passed to the group's parent if there is one. If not, // transfer ownership back to Python. if (sipCpp->parentItem()) sipTransferTo(a0Wrapper, sipGetPyObject(sipCpp->parentItem(), sipType_QGraphicsItem)); else sipTransferBack(a0Wrapper); %End virtual QRectF boundingRect() const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; private: QGraphicsItemGroup(const QGraphicsItemGroup &); }; class QGraphicsObject : QObject, QGraphicsItem { %TypeHeaderCode #include %End public: explicit QGraphicsObject(QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsObject(); void grabGesture(Qt::GestureType type, Qt::GestureFlags flags = Qt::GestureFlags()); void ungrabGesture(Qt::GestureType type); signals: void parentChanged(); void opacityChanged(); void visibleChanged(); void enabledChanged(); void xChanged(); void yChanged(); void zChanged(); void rotationChanged(); void scaleChanged(); protected slots: void updateMicroFocus(); protected: virtual bool event(QEvent *ev); }; class QGraphicsTextItem : QGraphicsObject { %TypeHeaderCode #include %End public: explicit QGraphicsTextItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsTextItem(const QString &text, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsTextItem(); QString toHtml() const; void setHtml(const QString &html); QString toPlainText() const; void setPlainText(const QString &text); QFont font() const; void setFont(const QFont &font); void setDefaultTextColor(const QColor &c); QColor defaultTextColor() const; virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; void setTextWidth(qreal width); qreal textWidth() const; void adjustSize(); void setDocument(QTextDocument *document /KeepReference/); QTextDocument *document() const; void setTextInteractionFlags(Qt::TextInteractionFlags flags); Qt::TextInteractionFlags textInteractionFlags() const; void setTabChangesFocus(bool b); bool tabChangesFocus() const; void setOpenExternalLinks(bool open); bool openExternalLinks() const; void setTextCursor(const QTextCursor &cursor); QTextCursor textCursor() const; signals: void linkActivated(const QString &); void linkHovered(const QString &); protected: virtual bool sceneEvent(QEvent *event); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event); virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event); virtual void dropEvent(QGraphicsSceneDragDropEvent *event); virtual void inputMethodEvent(QInputMethodEvent *event); virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; private: QGraphicsTextItem(const QGraphicsTextItem &); }; %ModuleCode // These are needed by the %ConvertToSubClassCode. #include #include %End PyQt5_gpl-5.10.1/sip/QtWidgets/qgraphicslayout.sip0000644000076500000240000000337213245233151022147 0ustar philstaff00000000000000// qgraphicslayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsLayout : QGraphicsLayoutItem { %TypeHeaderCode #include %End public: QGraphicsLayout(QGraphicsLayoutItem *parent /TransferThis/ = 0); virtual ~QGraphicsLayout(); void setContentsMargins(qreal left, qreal top, qreal right, qreal bottom); virtual void getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const; void activate(); bool isActivated() const; virtual void invalidate(); virtual void widgetEvent(QEvent *e); virtual int count() const = 0 /__len__/; virtual QGraphicsLayoutItem *itemAt(int i) const = 0; virtual void removeAt(int index) = 0; virtual void updateGeometry(); protected: void addChildLayoutItem(QGraphicsLayoutItem *layoutItem /Transfer/); private: QGraphicsLayout(const QGraphicsLayout &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qgraphicslayoutitem.sip0000644000076500000240000000602013245233151023017 0ustar philstaff00000000000000// qgraphicslayoutitem.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsLayoutItem /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: QGraphicsLayoutItem(QGraphicsLayoutItem *parent /TransferThis/ = 0, bool isLayout = false); virtual ~QGraphicsLayoutItem(); void setSizePolicy(const QSizePolicy &policy); void setSizePolicy(QSizePolicy::Policy hPolicy, QSizePolicy::Policy vPolicy, QSizePolicy::ControlType controlType = QSizePolicy::DefaultType); QSizePolicy sizePolicy() const; void setMinimumSize(const QSizeF &size); QSizeF minimumSize() const; void setMinimumWidth(qreal width); void setMinimumHeight(qreal height); void setPreferredSize(const QSizeF &size); QSizeF preferredSize() const; void setPreferredWidth(qreal width); void setPreferredHeight(qreal height); void setMaximumSize(const QSizeF &size); QSizeF maximumSize() const; void setMaximumWidth(qreal width); void setMaximumHeight(qreal height); virtual void setGeometry(const QRectF &rect); QRectF geometry() const; virtual void getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const; QRectF contentsRect() const; QSizeF effectiveSizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; virtual void updateGeometry(); QGraphicsLayoutItem *parentLayoutItem() const; void setParentLayoutItem(QGraphicsLayoutItem *parent /TransferThis/); bool isLayout() const; void setMinimumSize(qreal aw, qreal ah); void setPreferredSize(qreal aw, qreal ah); void setMaximumSize(qreal aw, qreal ah); qreal minimumWidth() const; qreal minimumHeight() const; qreal preferredWidth() const; qreal preferredHeight() const; qreal maximumWidth() const; qreal maximumHeight() const; QGraphicsItem *graphicsItem() const; bool ownedByLayout() const; protected: virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const = 0; void setGraphicsItem(QGraphicsItem *item); void setOwnedByLayout(bool ownedByLayout); private: QGraphicsLayoutItem(const QGraphicsLayoutItem &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qgraphicslinearlayout.sip0000644000076500000240000000622213245233151023337 0ustar philstaff00000000000000// qgraphicslinearlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsLinearLayout : QGraphicsLayout { %TypeHeaderCode #include %End public: QGraphicsLinearLayout(QGraphicsLayoutItem *parent /TransferThis/ = 0); QGraphicsLinearLayout(Qt::Orientation orientation, QGraphicsLayoutItem *parent /TransferThis/ = 0); virtual ~QGraphicsLinearLayout(); void setOrientation(Qt::Orientation orientation); Qt::Orientation orientation() const; void addItem(QGraphicsLayoutItem *item /Transfer/); void addStretch(int stretch = 1); void insertItem(int index, QGraphicsLayoutItem *item /Transfer/); void insertStretch(int index, int stretch = 1); void removeItem(QGraphicsLayoutItem *item /TransferBack/); virtual void removeAt(int index); %MethodCode // The ownership of any existing item must be passed back to Python. QGraphicsLayoutItem *itm; if (a0 < sipCpp->count()) itm = sipCpp->itemAt(a0); else itm = 0; Py_BEGIN_ALLOW_THREADS sipSelfWasArg ? sipCpp->QGraphicsLinearLayout::removeAt(a0) : sipCpp->removeAt(a0); Py_END_ALLOW_THREADS // The Qt documentation isn't quite correct as ownership isn't always passed // back to the caller. if (itm && !itm->parentLayoutItem()) { PyObject *itmo = sipGetPyObject(itm, sipType_QGraphicsLayoutItem); if (itmo) sipTransferBack(itmo); } %End void setSpacing(qreal spacing); qreal spacing() const; void setItemSpacing(int index, qreal spacing); qreal itemSpacing(int index) const; void setStretchFactor(QGraphicsLayoutItem *item, int stretch); int stretchFactor(QGraphicsLayoutItem *item) const; void setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment); Qt::Alignment alignment(QGraphicsLayoutItem *item) const; virtual void setGeometry(const QRectF &rect); virtual int count() const; virtual QGraphicsLayoutItem *itemAt(int index) const; virtual void invalidate(); virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; private: QGraphicsLinearLayout(const QGraphicsLinearLayout &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qgraphicsproxywidget.sip0000644000076500000240000000762213245233151023221 0ustar philstaff00000000000000// qgraphicsproxywidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsProxyWidget : QGraphicsWidget { %TypeHeaderCode #include %End public: QGraphicsProxyWidget(QGraphicsItem *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QGraphicsProxyWidget(); void setWidget(QWidget *widget /Transfer/); %MethodCode // The ownership of any existing widget must be passed back to Python. QWidget *w = sipCpp->widget(); Py_BEGIN_ALLOW_THREADS sipCpp->setWidget(a0); Py_END_ALLOW_THREADS if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferBack(wo); } %End QWidget *widget() const; QRectF subWidgetRect(const QWidget *widget) const; virtual void setGeometry(const QRectF &rect); virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); virtual int type() const; QGraphicsProxyWidget *createProxyForChildWidget(QWidget *child) /Factory/; protected: virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value); virtual bool event(QEvent *event); virtual bool eventFilter(QObject *object, QEvent *event); virtual void showEvent(QShowEvent *event); virtual void hideEvent(QHideEvent *event); virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual void grabMouseEvent(QEvent *event); virtual void ungrabMouseEvent(QEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); virtual void wheelEvent(QGraphicsSceneWheelEvent *event); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); virtual bool focusNextPrevChild(bool next); virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; virtual void resizeEvent(QGraphicsSceneResizeEvent *event); virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event); virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event); virtual void dropEvent(QGraphicsSceneDragDropEvent *event); QGraphicsProxyWidget *newProxyWidget(const QWidget *) /Factory/; virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; virtual void inputMethodEvent(QInputMethodEvent *event); private: QGraphicsProxyWidget(const QGraphicsProxyWidget &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qgraphicsscene.sip0000644000076500000240000002155213245233151021727 0ustar philstaff00000000000000// qgraphicsscene.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsScene : QObject { %TypeHeaderCode #include %End public: enum ItemIndexMethod { BspTreeIndex, NoIndex, }; QGraphicsScene(QObject *parent /TransferThis/ = 0); QGraphicsScene(const QRectF &sceneRect, QObject *parent /TransferThis/ = 0); QGraphicsScene(qreal x, qreal y, qreal width, qreal height, QObject *parent /TransferThis/ = 0); virtual ~QGraphicsScene(); QRectF sceneRect() const; qreal width() const; qreal height() const; void setSceneRect(const QRectF &rect); void setSceneRect(qreal x, qreal y, qreal w, qreal h); void render(QPainter *painter, const QRectF &target = QRectF(), const QRectF &source = QRectF(), Qt::AspectRatioMode mode = Qt::KeepAspectRatio); QGraphicsScene::ItemIndexMethod itemIndexMethod() const; void setItemIndexMethod(QGraphicsScene::ItemIndexMethod method); QRectF itemsBoundingRect() const; QList items(Qt::SortOrder order = Qt::DescendingOrder) const; QList items(const QPointF &pos, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const; QList items(const QRectF &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const; QList items(const QPolygonF &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const; QList items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const; QList items(qreal x, qreal y, qreal w, qreal h, Qt::ItemSelectionMode mode, Qt::SortOrder order, const QTransform &deviceTransform = QTransform()) const; QList collidingItems(const QGraphicsItem *item, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QList selectedItems() const; void setSelectionArea(const QPainterPath &path, const QTransform &deviceTransform); void setSelectionArea(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, const QTransform &deviceTransform = QTransform()); void clearSelection(); QGraphicsItemGroup *createItemGroup(const QList &items /Transfer/); void destroyItemGroup(QGraphicsItemGroup *group /Transfer/); void addItem(QGraphicsItem *item /Transfer/); QGraphicsEllipseItem *addEllipse(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsEllipseItem *addEllipse(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsLineItem *addLine(const QLineF &line, const QPen &pen = QPen()); QGraphicsLineItem *addLine(qreal x1, qreal y1, qreal x2, qreal y2, const QPen &pen = QPen()); QGraphicsPathItem *addPath(const QPainterPath &path, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsPixmapItem *addPixmap(const QPixmap &pixmap); QGraphicsPolygonItem *addPolygon(const QPolygonF &polygon, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsRectItem *addRect(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsRectItem *addRect(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsSimpleTextItem *addSimpleText(const QString &text, const QFont &font = QFont()); QGraphicsTextItem *addText(const QString &text, const QFont &font = QFont()); void removeItem(QGraphicsItem *item /TransferBack/); QGraphicsItem *focusItem() const; void setFocusItem(QGraphicsItem *item, Qt::FocusReason focusReason = Qt::OtherFocusReason); bool hasFocus() const; void setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason); void clearFocus(); QGraphicsItem *mouseGrabberItem() const; QBrush backgroundBrush() const; void setBackgroundBrush(const QBrush &brush); QBrush foregroundBrush() const; void setForegroundBrush(const QBrush &brush); virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; QList views() const; public slots: void advance(); void update(const QRectF &rect = QRectF()); void invalidate(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers); void clear(); signals: void changed(const QList ®ion); void sceneRectChanged(const QRectF &rect); void selectionChanged(); protected: virtual bool event(QEvent *event); virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event); virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event); virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); virtual void dropEvent(QGraphicsSceneDragDropEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); virtual void helpEvent(QGraphicsSceneHelpEvent *event); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); virtual void wheelEvent(QGraphicsSceneWheelEvent *event); virtual void inputMethodEvent(QInputMethodEvent *event); virtual void drawBackground(QPainter *painter, const QRectF &rect); virtual void drawForeground(QPainter *painter, const QRectF &rect); public: enum SceneLayer { ItemLayer, BackgroundLayer, ForegroundLayer, AllLayers, }; typedef QFlags SceneLayers; int bspTreeDepth() const; void setBspTreeDepth(int depth); QPainterPath selectionArea() const; void update(qreal x, qreal y, qreal w, qreal h); QGraphicsProxyWidget *addWidget(QWidget *widget /Transfer/, Qt::WindowFlags flags = Qt::WindowFlags()); QStyle *style() const; void setStyle(QStyle *style /Transfer/); QFont font() const; void setFont(const QFont &font); QPalette palette() const; void setPalette(const QPalette &palette); QGraphicsWidget *activeWindow() const; void setActiveWindow(QGraphicsWidget *widget); protected: virtual bool eventFilter(QObject *watched, QEvent *event); bool focusNextPrevChild(bool next); public: void setStickyFocus(bool enabled); bool stickyFocus() const; QGraphicsItem *itemAt(const QPointF &pos, const QTransform &deviceTransform) const; QGraphicsItem *itemAt(qreal x, qreal y, const QTransform &deviceTransform) const; bool isActive() const; QGraphicsItem *activePanel() const; void setActivePanel(QGraphicsItem *item); bool sendEvent(QGraphicsItem *item, QEvent *event); void invalidate(qreal x, qreal y, qreal w, qreal h, QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers); %If (Qt_5_4_0 -) qreal minimumRenderSize() const; %End %If (Qt_5_4_0 -) void setMinimumRenderSize(qreal minSize); %End signals: %If (Qt_5_1_0 -) void focusItemChanged(QGraphicsItem *newFocus, QGraphicsItem *oldFocus, Qt::FocusReason reason); %End public: %If (Qt_5_5_0 -) void setSelectionArea(const QPainterPath &path, Qt::ItemSelectionOperation selectionOperation, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, const QTransform &deviceTransform = QTransform()); %End private: QGraphicsScene(const QGraphicsScene &); }; QFlags operator|(QGraphicsScene::SceneLayer f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qgraphicssceneevent.sip0000644000076500000240000001471413245233151022773 0ustar philstaff00000000000000// qgraphicssceneevent.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsSceneEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type()) { case QEvent::GraphicsSceneContextMenu: sipType = sipType_QGraphicsSceneContextMenuEvent; break; case QEvent::GraphicsSceneDragEnter: case QEvent::GraphicsSceneDragLeave: case QEvent::GraphicsSceneDragMove: case QEvent::GraphicsSceneDrop: sipType = sipType_QGraphicsSceneDragDropEvent; break; case QEvent::GraphicsSceneHelp: sipType = sipType_QGraphicsSceneHelpEvent; break; case QEvent::GraphicsSceneHoverEnter: case QEvent::GraphicsSceneHoverLeave: case QEvent::GraphicsSceneHoverMove: sipType = sipType_QGraphicsSceneHoverEvent; break; case QEvent::GraphicsSceneMouseDoubleClick: case QEvent::GraphicsSceneMouseMove: case QEvent::GraphicsSceneMousePress: case QEvent::GraphicsSceneMouseRelease: sipType = sipType_QGraphicsSceneMouseEvent; break; case QEvent::GraphicsSceneWheel: sipType = sipType_QGraphicsSceneWheelEvent; break; case QEvent::GraphicsSceneMove: sipType = sipType_QGraphicsSceneMoveEvent; break; case QEvent::GraphicsSceneResize: sipType = sipType_QGraphicsSceneResizeEvent; break; default: sipType = 0; } %End public: virtual ~QGraphicsSceneEvent(); QWidget *widget() const; private: QGraphicsSceneEvent(const QGraphicsSceneEvent &); }; class QGraphicsSceneMouseEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QGraphicsSceneMouseEvent(); QPointF pos() const; QPointF scenePos() const; QPoint screenPos() const; QPointF buttonDownPos(Qt::MouseButton button) const; QPointF buttonDownScenePos(Qt::MouseButton button) const; QPoint buttonDownScreenPos(Qt::MouseButton button) const; QPointF lastPos() const; QPointF lastScenePos() const; QPoint lastScreenPos() const; Qt::MouseButtons buttons() const; Qt::MouseButton button() const; Qt::KeyboardModifiers modifiers() const; %If (Qt_5_4_0 -) Qt::MouseEventSource source() const; %End %If (Qt_5_4_0 -) Qt::MouseEventFlags flags() const; %End private: QGraphicsSceneMouseEvent(const QGraphicsSceneMouseEvent &); }; class QGraphicsSceneWheelEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QGraphicsSceneWheelEvent(); QPointF pos() const; QPointF scenePos() const; QPoint screenPos() const; Qt::MouseButtons buttons() const; Qt::KeyboardModifiers modifiers() const; int delta() const; Qt::Orientation orientation() const; private: QGraphicsSceneWheelEvent(const QGraphicsSceneWheelEvent &); }; class QGraphicsSceneContextMenuEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum Reason { Mouse, Keyboard, Other, }; virtual ~QGraphicsSceneContextMenuEvent(); QPointF pos() const; QPointF scenePos() const; QPoint screenPos() const; Qt::KeyboardModifiers modifiers() const; QGraphicsSceneContextMenuEvent::Reason reason() const; private: QGraphicsSceneContextMenuEvent(const QGraphicsSceneContextMenuEvent &); }; class QGraphicsSceneHoverEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QGraphicsSceneHoverEvent(); QPointF pos() const; QPointF scenePos() const; QPoint screenPos() const; QPointF lastPos() const; QPointF lastScenePos() const; QPoint lastScreenPos() const; Qt::KeyboardModifiers modifiers() const; private: QGraphicsSceneHoverEvent(const QGraphicsSceneHoverEvent &); }; class QGraphicsSceneHelpEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QGraphicsSceneHelpEvent(); QPointF scenePos() const; QPoint screenPos() const; private: QGraphicsSceneHelpEvent(const QGraphicsSceneHelpEvent &); }; class QGraphicsSceneDragDropEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QGraphicsSceneDragDropEvent(); QPointF pos() const; QPointF scenePos() const; QPoint screenPos() const; Qt::MouseButtons buttons() const; Qt::KeyboardModifiers modifiers() const; Qt::DropActions possibleActions() const; Qt::DropAction proposedAction() const; void acceptProposedAction(); Qt::DropAction dropAction() const; void setDropAction(Qt::DropAction action); QWidget *source() const; const QMimeData *mimeData() const; private: QGraphicsSceneDragDropEvent(const QGraphicsSceneDragDropEvent &); }; class QGraphicsSceneResizeEvent : QGraphicsSceneEvent { %TypeHeaderCode #include %End public: QGraphicsSceneResizeEvent(); virtual ~QGraphicsSceneResizeEvent(); QSizeF oldSize() const; QSizeF newSize() const; private: QGraphicsSceneResizeEvent(const QGraphicsSceneResizeEvent &); }; class QGraphicsSceneMoveEvent : QGraphicsSceneEvent { %TypeHeaderCode #include %End public: QGraphicsSceneMoveEvent(); virtual ~QGraphicsSceneMoveEvent(); QPointF oldPos() const; QPointF newPos() const; private: QGraphicsSceneMoveEvent(const QGraphicsSceneMoveEvent &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qgraphicstransform.sip0000644000076500000240000000461113245233151022642 0ustar philstaff00000000000000// qgraphicstransform.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsTransform : QObject { %TypeHeaderCode #include %End public: QGraphicsTransform(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsTransform(); virtual void applyTo(QMatrix4x4 *matrix) const = 0; protected slots: void update(); }; class QGraphicsScale : QGraphicsTransform { %TypeHeaderCode #include %End public: QGraphicsScale(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsScale(); QVector3D origin() const; void setOrigin(const QVector3D &point); qreal xScale() const; void setXScale(qreal); qreal yScale() const; void setYScale(qreal); qreal zScale() const; void setZScale(qreal); virtual void applyTo(QMatrix4x4 *matrix) const; signals: void originChanged(); void scaleChanged(); void xScaleChanged(); void yScaleChanged(); void zScaleChanged(); }; class QGraphicsRotation : QGraphicsTransform { %TypeHeaderCode #include %End public: QGraphicsRotation(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsRotation(); QVector3D origin() const; void setOrigin(const QVector3D &point); qreal angle() const; void setAngle(qreal); QVector3D axis() const; void setAxis(const QVector3D &axis); void setAxis(Qt::Axis axis); virtual void applyTo(QMatrix4x4 *matrix) const; signals: void originChanged(); void angleChanged(); void axisChanged(); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qgraphicsview.sip0000644000076500000240000002042413245233151021601 0ustar philstaff00000000000000// qgraphicsview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsView : QAbstractScrollArea { %TypeHeaderCode #include %End public: enum CacheModeFlag { CacheNone, CacheBackground, }; typedef QFlags CacheMode; enum DragMode { NoDrag, ScrollHandDrag, RubberBandDrag, }; enum ViewportAnchor { NoAnchor, AnchorViewCenter, AnchorUnderMouse, }; QGraphicsView(QWidget *parent /TransferThis/ = 0); QGraphicsView(QGraphicsScene *scene /KeepReference/, QWidget *parent /TransferThis/ = 0); virtual ~QGraphicsView(); virtual QSize sizeHint() const; QPainter::RenderHints renderHints() const; void setRenderHint(QPainter::RenderHint hint, bool on = true); void setRenderHints(QPainter::RenderHints hints); Qt::Alignment alignment() const; void setAlignment(Qt::Alignment alignment); QGraphicsView::ViewportAnchor transformationAnchor() const; void setTransformationAnchor(QGraphicsView::ViewportAnchor anchor); QGraphicsView::ViewportAnchor resizeAnchor() const; void setResizeAnchor(QGraphicsView::ViewportAnchor anchor); QGraphicsView::DragMode dragMode() const; void setDragMode(QGraphicsView::DragMode mode); QGraphicsView::CacheMode cacheMode() const; void setCacheMode(QGraphicsView::CacheMode mode); void resetCachedContent(); bool isInteractive() const; void setInteractive(bool allowed); QGraphicsScene *scene() const; void setScene(QGraphicsScene *scene /KeepReference/); QRectF sceneRect() const; void setSceneRect(const QRectF &rect); void rotate(qreal angle); void scale(qreal sx, qreal sy); void shear(qreal sh, qreal sv); void translate(qreal dx, qreal dy); void centerOn(const QPointF &pos); void centerOn(const QGraphicsItem *item); void ensureVisible(const QRectF &rect, int xMargin = 50, int yMargin = 50); void ensureVisible(const QGraphicsItem *item, int xMargin = 50, int yMargin = 50); void fitInView(const QRectF &rect, Qt::AspectRatioMode mode = Qt::IgnoreAspectRatio); void fitInView(const QGraphicsItem *item, Qt::AspectRatioMode mode = Qt::IgnoreAspectRatio); void render(QPainter *painter, const QRectF &target = QRectF(), const QRect &source = QRect(), Qt::AspectRatioMode mode = Qt::KeepAspectRatio); QList items() const; QList items(const QPoint &pos) const; QList items(int x, int y) const; QList items(int x, int y, int w, int h, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QList items(const QRect &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QList items(const QPolygon &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QList items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QGraphicsItem *itemAt(const QPoint &pos) const; QPointF mapToScene(const QPoint &point) const; QPolygonF mapToScene(const QRect &rect) const; QPolygonF mapToScene(const QPolygon &polygon) const; QPainterPath mapToScene(const QPainterPath &path) const; QPoint mapFromScene(const QPointF &point) const; QPolygon mapFromScene(const QRectF &rect) const; QPolygon mapFromScene(const QPolygonF &polygon) const; QPainterPath mapFromScene(const QPainterPath &path) const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; QBrush backgroundBrush() const; void setBackgroundBrush(const QBrush &brush); QBrush foregroundBrush() const; void setForegroundBrush(const QBrush &brush); public slots: void invalidateScene(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers); void updateScene(const QList &rects); void updateSceneRect(const QRectF &rect); protected slots: virtual void setupViewport(QWidget *widget); protected: virtual bool event(QEvent *event); virtual bool viewportEvent(QEvent *event); virtual void contextMenuEvent(QContextMenuEvent *event); virtual void dragEnterEvent(QDragEnterEvent *event); virtual void dragLeaveEvent(QDragLeaveEvent *event); virtual void dragMoveEvent(QDragMoveEvent *event); virtual void dropEvent(QDropEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); virtual bool focusNextPrevChild(bool next); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void mouseDoubleClickEvent(QMouseEvent *event); virtual void mousePressEvent(QMouseEvent *event); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event); virtual void wheelEvent(QWheelEvent *event); virtual void paintEvent(QPaintEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual void scrollContentsBy(int dx, int dy); virtual void showEvent(QShowEvent *event); virtual void inputMethodEvent(QInputMethodEvent *event); virtual void drawBackground(QPainter *painter, const QRectF &rect); virtual void drawForeground(QPainter *painter, const QRectF &rect); public: void setSceneRect(qreal ax, qreal ay, qreal aw, qreal ah); void centerOn(qreal ax, qreal ay); void ensureVisible(qreal x, qreal y, qreal w, qreal h, int xMargin = 50, int yMargin = 50); void fitInView(qreal x, qreal y, qreal w, qreal h, Qt::AspectRatioMode mode = Qt::IgnoreAspectRatio); QGraphicsItem *itemAt(int ax, int ay) const; QPointF mapToScene(int ax, int ay) const; QPolygonF mapToScene(int ax, int ay, int w, int h) const; QPoint mapFromScene(qreal ax, qreal ay) const; QPolygon mapFromScene(qreal ax, qreal ay, qreal w, qreal h) const; enum ViewportUpdateMode { FullViewportUpdate, MinimalViewportUpdate, SmartViewportUpdate, BoundingRectViewportUpdate, NoViewportUpdate, }; enum OptimizationFlag { DontClipPainter, DontSavePainterState, DontAdjustForAntialiasing, }; typedef QFlags OptimizationFlags; QGraphicsView::ViewportUpdateMode viewportUpdateMode() const; void setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode); QGraphicsView::OptimizationFlags optimizationFlags() const; void setOptimizationFlag(QGraphicsView::OptimizationFlag flag, bool enabled = true); void setOptimizationFlags(QGraphicsView::OptimizationFlags flags); Qt::ItemSelectionMode rubberBandSelectionMode() const; void setRubberBandSelectionMode(Qt::ItemSelectionMode mode); QTransform transform() const; QTransform viewportTransform() const; void setTransform(const QTransform &matrix, bool combine = false); void resetTransform(); bool isTransformed() const; %If (Qt_5_1_0 -) QRect rubberBandRect() const; %End signals: %If (Qt_5_1_0 -) void rubberBandChanged(QRect viewportRect, QPointF fromScenePoint, QPointF toScenePoint); %End private: QGraphicsView(const QGraphicsView &); }; QFlags operator|(QGraphicsView::CacheModeFlag f1, QFlags f2); QFlags operator|(QGraphicsView::OptimizationFlag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qgraphicswidget.sip0000644000076500000240000001243213245233151022112 0ustar philstaff00000000000000// qgraphicswidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsWidget : QGraphicsObject, QGraphicsLayoutItem { %TypeHeaderCode #include %End public: QGraphicsWidget(QGraphicsItem *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QGraphicsWidget(); QGraphicsLayout *layout() const; void setLayout(QGraphicsLayout *layout /Transfer/); void adjustSize(); Qt::LayoutDirection layoutDirection() const; void setLayoutDirection(Qt::LayoutDirection direction); void unsetLayoutDirection(); QStyle *style() const; void setStyle(QStyle *style /KeepReference/); QFont font() const; void setFont(const QFont &font); QPalette palette() const; void setPalette(const QPalette &palette); void resize(const QSizeF &size); void resize(qreal w, qreal h); QSizeF size() const; virtual void setGeometry(const QRectF &rect); QRectF rect() const; void setContentsMargins(qreal left, qreal top, qreal right, qreal bottom); virtual void getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const; void setWindowFrameMargins(qreal left, qreal top, qreal right, qreal bottom); void getWindowFrameMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const; void unsetWindowFrameMargins(); QRectF windowFrameGeometry() const; QRectF windowFrameRect() const; Qt::WindowFlags windowFlags() const; Qt::WindowType windowType() const; void setWindowFlags(Qt::WindowFlags wFlags); bool isActiveWindow() const; void setWindowTitle(const QString &title); QString windowTitle() const; Qt::FocusPolicy focusPolicy() const; void setFocusPolicy(Qt::FocusPolicy policy); static void setTabOrder(QGraphicsWidget *first, QGraphicsWidget *second); QGraphicsWidget *focusWidget() const; int grabShortcut(const QKeySequence &sequence, Qt::ShortcutContext context = Qt::WindowShortcut); void releaseShortcut(int id); void setShortcutEnabled(int id, bool enabled = true); void setShortcutAutoRepeat(int id, bool enabled = true); void addAction(QAction *action); void addActions(QList actions); void insertAction(QAction *before, QAction *action); void insertActions(QAction *before, QList actions); void removeAction(QAction *action); QList actions() const; void setAttribute(Qt::WidgetAttribute attribute, bool on = true); bool testAttribute(Qt::WidgetAttribute attribute) const; virtual int type() const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual void paintWindowFrame(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; void setGeometry(qreal ax, qreal ay, qreal aw, qreal ah); public slots: bool close(); protected: virtual void initStyleOption(QStyleOption *option) const; virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; virtual void updateGeometry(); virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value); virtual bool sceneEvent(QEvent *event); virtual bool windowFrameEvent(QEvent *e); virtual Qt::WindowFrameSection windowFrameSectionAt(const QPointF &pos) const; virtual bool event(QEvent *event); virtual void changeEvent(QEvent *event); virtual void closeEvent(QCloseEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual bool focusNextPrevChild(bool next); virtual void focusOutEvent(QFocusEvent *event); virtual void hideEvent(QHideEvent *event); virtual void moveEvent(QGraphicsSceneMoveEvent *event); virtual void polishEvent(); virtual void resizeEvent(QGraphicsSceneResizeEvent *event); virtual void showEvent(QShowEvent *event); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); virtual void grabMouseEvent(QEvent *event); virtual void ungrabMouseEvent(QEvent *event); virtual void grabKeyboardEvent(QEvent *event); virtual void ungrabKeyboardEvent(QEvent *event); public: bool autoFillBackground() const; void setAutoFillBackground(bool enabled); signals: void geometryChanged(); private: QGraphicsWidget(const QGraphicsWidget &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qgridlayout.sip0000644000076500000240000001266413245233151021300 0ustar philstaff00000000000000// qgridlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGridLayout : QLayout { %TypeHeaderCode #include %End public: explicit QGridLayout(QWidget *parent /TransferThis/); QGridLayout(); virtual ~QGridLayout(); virtual QSize sizeHint() const; virtual QSize minimumSize() const; virtual QSize maximumSize() const; void setRowStretch(int row, int stretch); void setColumnStretch(int column, int stretch); int rowStretch(int row) const; int columnStretch(int column) const; void setRowMinimumHeight(int row, int minSize); void setColumnMinimumWidth(int column, int minSize); int rowMinimumHeight(int row) const; int columnMinimumWidth(int column) const; int columnCount() const; int rowCount() const; QRect cellRect(int row, int column) const; virtual bool hasHeightForWidth() const; virtual int heightForWidth(int) const; virtual int minimumHeightForWidth(int) const; virtual Qt::Orientations expandingDirections() const; virtual void invalidate(); void addWidget(QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->addWidget(a0); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End void addWidget(QWidget * /GetWrapper/, int row, int column, Qt::Alignment alignment = 0); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->addWidget(a0, a1, a2, *a3); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End void addWidget(QWidget * /GetWrapper/, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = 0); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->addWidget(a0, a1, a2, a3, a4, *a5); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End void addLayout(QLayout * /Transfer/, int row, int column, Qt::Alignment alignment = Qt::Alignment()); void addLayout(QLayout * /Transfer/, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment()); void setOriginCorner(Qt::Corner); Qt::Corner originCorner() const; virtual QLayoutItem *itemAt(int) const; virtual QLayoutItem *takeAt(int) /TransferBack/; virtual int count() const; virtual void setGeometry(const QRect &); void addItem(QLayoutItem *item /Transfer/, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = Qt::Alignment()); void setDefaultPositioning(int n, Qt::Orientation orient); void getItemPosition(int idx, int *row, int *column, int *rowSpan, int *columnSpan) const; void setHorizontalSpacing(int spacing); int horizontalSpacing() const; void setVerticalSpacing(int spacing); int verticalSpacing() const; void setSpacing(int spacing); int spacing() const; QLayoutItem *itemAtPosition(int row, int column) const; protected: virtual void addItem(QLayoutItem * /Transfer/); private: QGridLayout(const QGridLayout &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qgroupbox.sip0000644000076500000240000000415613245233151020757 0ustar philstaff00000000000000// qgroupbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGroupBox : QWidget { %TypeHeaderCode #include %End public: explicit QGroupBox(QWidget *parent /TransferThis/ = 0); QGroupBox(const QString &title, QWidget *parent /TransferThis/ = 0); virtual ~QGroupBox(); QString title() const; void setTitle(const QString &); Qt::Alignment alignment() const; void setAlignment(int); virtual QSize minimumSizeHint() const; bool isFlat() const; void setFlat(bool b); bool isCheckable() const; void setCheckable(bool b); bool isChecked() const; public slots: void setChecked(bool b); signals: void clicked(bool checked = false); void toggled(bool); protected: void initStyleOption(QStyleOptionGroupBox *option) const; virtual bool event(QEvent *); virtual void childEvent(QChildEvent *); virtual void resizeEvent(QResizeEvent *); virtual void paintEvent(QPaintEvent *); virtual void focusInEvent(QFocusEvent *); virtual void changeEvent(QEvent *); virtual void mousePressEvent(QMouseEvent *event); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event); private: QGroupBox(const QGroupBox &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qheaderview.sip0000644000076500000240000001543213245233151021234 0ustar philstaff00000000000000// qheaderview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHeaderView : QAbstractItemView { %TypeHeaderCode #include %End public: enum ResizeMode { Interactive, Fixed, Stretch, ResizeToContents, Custom, }; QHeaderView(Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); virtual ~QHeaderView(); virtual void setModel(QAbstractItemModel *model /KeepReference/); Qt::Orientation orientation() const; int offset() const; int length() const; virtual QSize sizeHint() const; int sectionSizeHint(int logicalIndex) const; int visualIndexAt(int position) const; int logicalIndexAt(int position) const; int sectionSize(int logicalIndex) const; int sectionPosition(int logicalIndex) const; int sectionViewportPosition(int logicalIndex) const; void moveSection(int from, int to); void resizeSection(int logicalIndex, int size); bool isSectionHidden(int logicalIndex) const; void setSectionHidden(int logicalIndex, bool hide); int count() const /__len__/; int visualIndex(int logicalIndex) const; int logicalIndex(int visualIndex) const; void setHighlightSections(bool highlight); bool highlightSections() const; int stretchSectionCount() const; void setSortIndicatorShown(bool show); bool isSortIndicatorShown() const; void setSortIndicator(int logicalIndex, Qt::SortOrder order); int sortIndicatorSection() const; Qt::SortOrder sortIndicatorOrder() const; bool stretchLastSection() const; void setStretchLastSection(bool stretch); bool sectionsMoved() const; public slots: void setOffset(int offset); void headerDataChanged(Qt::Orientation orientation, int logicalFirst, int logicalLast); void setOffsetToSectionPosition(int visualIndex); signals: void geometriesChanged(); void sectionMoved(int logicalIndex, int oldVisualIndex, int newVisualIndex); void sectionResized(int logicalIndex, int oldSize, int newSize); void sectionPressed(int logicalIndex); void sectionClicked(int logicalIndex); void sectionDoubleClicked(int logicalIndex); void sectionCountChanged(int oldCount, int newCount); void sectionHandleDoubleClicked(int logicalIndex); protected slots: void updateSection(int logicalIndex); void resizeSections(); void sectionsInserted(const QModelIndex &parent, int logicalFirst, int logicalLast); void sectionsAboutToBeRemoved(const QModelIndex &parent, int logicalFirst, int logicalLast); protected: void initialize(); void initializeSections(); void initializeSections(int start, int end); virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &old); virtual bool event(QEvent *e); virtual bool viewportEvent(QEvent *e); virtual void paintEvent(QPaintEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseDoubleClickEvent(QMouseEvent *e); virtual void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const; virtual QSize sectionSizeFromContents(int logicalIndex) const; virtual int horizontalOffset() const; virtual int verticalOffset() const; virtual void updateGeometries(); virtual void scrollContentsBy(int dx, int dy); virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector()); virtual void rowsInserted(const QModelIndex &parent, int start, int end); virtual QRect visualRect(const QModelIndex &index) const; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint); virtual QModelIndex indexAt(const QPoint &p) const; virtual bool isIndexHidden(const QModelIndex &index) const; virtual QModelIndex moveCursor(QAbstractItemView::CursorAction, Qt::KeyboardModifiers); virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags); virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; public: int logicalIndexAt(int ax, int ay) const; int logicalIndexAt(const QPoint &apos) const; void hideSection(int alogicalIndex); void showSection(int alogicalIndex); void resizeSections(QHeaderView::ResizeMode mode); int hiddenSectionCount() const; int defaultSectionSize() const; void setDefaultSectionSize(int size); Qt::Alignment defaultAlignment() const; void setDefaultAlignment(Qt::Alignment alignment); bool sectionsHidden() const; void swapSections(int first, int second); bool cascadingSectionResizes() const; void setCascadingSectionResizes(bool enable); int minimumSectionSize() const; void setMinimumSectionSize(int size); QByteArray saveState() const; bool restoreState(const QByteArray &state); virtual void reset(); public slots: void setOffsetToLastSection(); signals: void sectionEntered(int logicalIndex); void sortIndicatorChanged(int logicalIndex, Qt::SortOrder order); protected: void initStyleOption(QStyleOptionHeader *option) const; public: void setSectionsMovable(bool movable); bool sectionsMovable() const; void setSectionsClickable(bool clickable); bool sectionsClickable() const; QHeaderView::ResizeMode sectionResizeMode(int logicalIndex) const; void setSectionResizeMode(int logicalIndex, QHeaderView::ResizeMode mode); void setSectionResizeMode(QHeaderView::ResizeMode mode); %If (Qt_5_2_0 -) virtual void setVisible(bool v); %End %If (Qt_5_2_0 -) void setResizeContentsPrecision(int precision); %End %If (Qt_5_2_0 -) int resizeContentsPrecision() const; %End %If (Qt_5_2_0 -) int maximumSectionSize() const; %End %If (Qt_5_2_0 -) void setMaximumSectionSize(int size); %End %If (Qt_5_5_0 -) void resetDefaultSectionSize(); %End private: QHeaderView(const QHeaderView &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qinputdialog.sip0000644000076500000240000001331113245233151021422 0ustar philstaff00000000000000// qinputdialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QInputDialog : QDialog { %TypeHeaderCode #include %End public: enum InputDialogOption { NoButtons, UseListViewForComboBoxItems, %If (Qt_5_2_0 -) UsePlainTextEditForTextInput, %End }; typedef QFlags InputDialogOptions; enum InputMode { TextInput, IntInput, DoubleInput, }; static QString getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode echo = QLineEdit::Normal, const QString &text = QString(), bool *ok = 0, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone) /ReleaseGIL/; static int getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = 0, Qt::WindowFlags flags = Qt::WindowFlags()) /ReleaseGIL/; static double getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = 0, Qt::WindowFlags flags = Qt::WindowFlags()) /ReleaseGIL/; %If (Qt_5_10_0 -) static double getDouble(QWidget *parent, const QString &title, const QString &label, double value, double minValue, double maxValue, int decimals, bool *ok, Qt::WindowFlags flags, double step); %End static QString getItem(QWidget *parent, const QString &title, const QString &label, const QStringList &items, int current = 0, bool editable = true, bool *ok = 0, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone) /ReleaseGIL/; %If (Qt_5_2_0 -) static QString getMultiLineText(QWidget *parent, const QString &title, const QString &label, const QString &text = QString(), bool *ok = 0, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone) /ReleaseGIL/; %End QInputDialog(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QInputDialog(); void setInputMode(QInputDialog::InputMode mode); QInputDialog::InputMode inputMode() const; void setLabelText(const QString &text); QString labelText() const; void setOption(QInputDialog::InputDialogOption option, bool on = true); bool testOption(QInputDialog::InputDialogOption option) const; void setOptions(QInputDialog::InputDialogOptions options); QInputDialog::InputDialogOptions options() const; void setTextValue(const QString &text); QString textValue() const; void setTextEchoMode(QLineEdit::EchoMode mode); QLineEdit::EchoMode textEchoMode() const; void setComboBoxEditable(bool editable); bool isComboBoxEditable() const; void setComboBoxItems(const QStringList &items); QStringList comboBoxItems() const; void setIntValue(int value); int intValue() const; void setIntMinimum(int min); int intMinimum() const; void setIntMaximum(int max); int intMaximum() const; void setIntRange(int min, int max); void setIntStep(int step); int intStep() const; void setDoubleValue(double value); double doubleValue() const; void setDoubleMinimum(double min); double doubleMinimum() const; void setDoubleMaximum(double max); double doubleMaximum() const; void setDoubleRange(double min, double max); void setDoubleDecimals(int decimals); int doubleDecimals() const; void setOkButtonText(const QString &text); QString okButtonText() const; void setCancelButtonText(const QString &text); QString cancelButtonText() const; virtual void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual QSize minimumSizeHint() const; virtual QSize sizeHint() const; virtual void setVisible(bool visible); virtual void done(int result); signals: void textValueChanged(const QString &text); void textValueSelected(const QString &text); void intValueChanged(int value); void intValueSelected(int value); void doubleValueChanged(double value); void doubleValueSelected(double value); public: %If (Qt_5_10_0 -) void setDoubleStep(double step); %End %If (Qt_5_10_0 -) double doubleStep() const; %End private: QInputDialog(const QInputDialog &); }; QFlags operator|(QInputDialog::InputDialogOption f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qitemdelegate.sip0000644000076500000240000000564713245233151021551 0ustar philstaff00000000000000// qitemdelegate.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QItemDelegate : QAbstractItemDelegate { %TypeHeaderCode #include %End public: explicit QItemDelegate(QObject *parent /TransferThis/ = 0); virtual ~QItemDelegate(); virtual void paint(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; virtual QSize sizeHint(const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; virtual QWidget *createEditor(QWidget *parent /TransferThis/, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const /Factory/; virtual void setEditorData(QWidget *editor, const QModelIndex &index) const; virtual void setModelData(QWidget *editor, QAbstractItemModel *model /KeepReference/, const QModelIndex &index) const; virtual void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; QItemEditorFactory *itemEditorFactory() const; void setItemEditorFactory(QItemEditorFactory *factory /KeepReference/); bool hasClipping() const; void setClipping(bool clip); protected: void drawBackground(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; virtual void drawCheck(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QRect &rect, Qt::CheckState state) const; virtual void drawDecoration(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QRect &rect, const QPixmap &pixmap) const; virtual void drawDisplay(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QRect &rect, const QString &text) const; virtual void drawFocus(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QRect &rect) const; virtual bool eventFilter(QObject *object, QEvent *event); virtual bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index); private: QItemDelegate(const QItemDelegate &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qitemeditorfactory.sip0000644000076500000240000000341013245233151022637 0ustar philstaff00000000000000// qitemeditorfactory.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QItemEditorCreatorBase /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: virtual ~QItemEditorCreatorBase(); virtual QWidget *createWidget(QWidget *parent /TransferThis/) const = 0 /Factory/; virtual QByteArray valuePropertyName() const = 0; }; class QItemEditorFactory /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: QItemEditorFactory(); virtual ~QItemEditorFactory(); virtual QWidget *createEditor(int userType, QWidget *parent /TransferThis/) const; virtual QByteArray valuePropertyName(int userType) const; void registerEditor(int userType, QItemEditorCreatorBase *creator /Transfer/); static const QItemEditorFactory *defaultFactory(); static void setDefaultFactory(QItemEditorFactory *factory /Transfer/); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qkeyeventtransition.sip0000644000076500000240000000312713245233151023054 0ustar philstaff00000000000000// qkeyeventtransition.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QKeyEventTransition : QEventTransition { %TypeHeaderCode #include %End public: QKeyEventTransition(QState *sourceState /TransferThis/ = 0); QKeyEventTransition(QObject *object /KeepReference=10/, QEvent::Type type, int key, QState *sourceState /TransferThis/ = 0); virtual ~QKeyEventTransition(); int key() const; void setKey(int key); Qt::KeyboardModifiers modifierMask() const; void setModifierMask(Qt::KeyboardModifiers modifiers); protected: virtual void onTransition(QEvent *event); virtual bool eventTest(QEvent *event); private: QKeyEventTransition(const QKeyEventTransition &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qkeysequenceedit.sip0000644000076500000240000000331413245233151022274 0ustar philstaff00000000000000// qkeysequenceedit.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QKeySequenceEdit : QWidget { %TypeHeaderCode #include %End public: explicit QKeySequenceEdit(QWidget *parent /TransferThis/ = 0); QKeySequenceEdit(const QKeySequence &keySequence, QWidget *parent /TransferThis/ = 0); virtual ~QKeySequenceEdit(); QKeySequence keySequence() const; public slots: void setKeySequence(const QKeySequence &keySequence); void clear(); signals: void editingFinished(); void keySequenceChanged(const QKeySequence &keySequence); protected: virtual bool event(QEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void timerEvent(QTimerEvent *); private: QKeySequenceEdit(const QKeySequenceEdit &); }; %End PyQt5_gpl-5.10.1/sip/QtWidgets/qlabel.sip0000644000076500000240000000622713245233151020172 0ustar philstaff00000000000000// qlabel.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLabel : QFrame { %TypeHeaderCode #include %End public: QLabel(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); QLabel(const QString &text, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QLabel(); QString text() const; const QPixmap *pixmap() const; const QPicture *picture() const; QMovie *movie() const; Qt::TextFormat textFormat() const; void setTextFormat(Qt::TextFormat); Qt::Alignment alignment() const; void setAlignment(Qt::Alignment); void setWordWrap(bool on); bool wordWrap() const; int indent() const; void setIndent(int); int margin() const; void setMargin(int); bool hasScaledContents() const; void setScaledContents(bool); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setBuddy(QWidget * /KeepReference/); QWidget *buddy() const; virtual int heightForWidth(int) const; bool openExternalLinks() const; void setTextInteractionFlags(Qt::TextInteractionFlags flags); Qt::TextInteractionFlags textInteractionFlags() const; void setOpenExternalLinks(bool open); public slots: void clear(); void setMovie(QMovie *movie /KeepReference/); void setNum(double /Constrained/); void setNum(int); void setPicture(const QPicture &); void setPixmap(const QPixmap &); void setText(const QString &); signals: void linkActivated(const QString &link); void linkHovered(const QString &link); protected: virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); virtual void changeEvent(QEvent *); virtual void keyPressEvent(QKeyEvent *ev); virtual void mousePressEvent(QMouseEvent *ev); virtual void mouseMoveEvent(QMouseEvent *ev); virtual void mouseReleaseEvent(QMouseEvent *ev); virtual void contextMenuEvent(QContextMenuEvent *ev); virtual void focusInEvent(QFocusEvent *ev); virtual void focusOutEvent(QFocusEvent *ev); virtual bool focusNextPrevChild(bool next); public: void setSelection(int, int); bool hasSelectedText() const; QString selectedText() const; int selectionStart() const; private: QLabel(const QLabel &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qlayout.sip0000644000076500000240000001330713245233151020425 0ustar philstaff00000000000000// qlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLayout : QObject, QLayoutItem { %TypeHeaderCode #include %End public: enum SizeConstraint { SetDefaultConstraint, SetNoConstraint, SetMinimumSize, SetFixedSize, SetMaximumSize, SetMinAndMaxSize, }; QLayout(QWidget *parent /TransferThis/); QLayout(); virtual ~QLayout(); int spacing() const; void setSpacing(int); bool setAlignment(QWidget *w, Qt::Alignment alignment); bool setAlignment(QLayout *l, Qt::Alignment alignment); void setAlignment(Qt::Alignment alignment); void setSizeConstraint(QLayout::SizeConstraint); QLayout::SizeConstraint sizeConstraint() const; void setMenuBar(QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->setMenuBar(a0); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (a0 && parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows setMenuBar(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End QWidget *menuBar() const; QWidget *parentWidget() const; virtual void invalidate(); virtual QRect geometry() const; bool activate(); void update(); void addWidget(QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->addWidget(a0); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End virtual void addItem(QLayoutItem * /Transfer/) = 0; void removeWidget(QWidget *w); void removeItem(QLayoutItem * /TransferBack/); virtual Qt::Orientations expandingDirections() const; virtual QSize minimumSize() const; virtual QSize maximumSize() const; virtual void setGeometry(const QRect &); virtual QLayoutItem *itemAt(int index) const = 0; virtual QLayoutItem *takeAt(int index) = 0 /TransferBack/; virtual int indexOf(QWidget *) const; virtual int count() const = 0 /__len__/; virtual bool isEmpty() const; int totalHeightForWidth(int w) const; QSize totalMinimumSize() const; QSize totalMaximumSize() const; QSize totalSizeHint() const; virtual QLayout *layout(); void setEnabled(bool); bool isEnabled() const; static QSize closestAcceptableSize(const QWidget *w, const QSize &s); protected: void widgetEvent(QEvent *); virtual void childEvent(QChildEvent *e); void addChildLayout(QLayout *l /Transfer/); void addChildWidget(QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipCpp->addChildWidget(a0); #else sipCpp->sipProtect_addChildWidget(a0); #endif Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows // addChildWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End QRect alignmentRect(const QRect &) const; public: void setContentsMargins(int left, int top, int right, int bottom); void getContentsMargins(int *left, int *top, int *right, int *bottom) const; QRect contentsRect() const; void setContentsMargins(const QMargins &margins); QMargins contentsMargins() const; virtual QSizePolicy::ControlTypes controlTypes() const; %If (Qt_5_2_0 -) QLayoutItem *replaceWidget(QWidget *from, QWidget *to /Transfer/, Qt::FindChildOptions options = Qt::FindChildrenRecursively) /TransferBack/; %End private: QLayout(const QLayout &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qlayoutitem.sip0000644000076500000240000000711513245233151021304 0ustar philstaff00000000000000// qlayoutitem.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLayoutItem /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End %ConvertToSubClassCode if (sipCpp->widget()) { sipType = sipType_QWidgetItem; } else if (sipCpp->spacerItem()) { sipType = sipType_QSpacerItem; } else { // Cause a restart looking for a QLayout. *sipCppRet = sipCpp->layout(); sipType = sipType_QLayout; } %End public: explicit QLayoutItem(Qt::Alignment alignment = Qt::Alignment()); virtual ~QLayoutItem(); virtual QSize sizeHint() const = 0; virtual QSize minimumSize() const = 0; virtual QSize maximumSize() const = 0; virtual Qt::Orientations expandingDirections() const = 0; virtual void setGeometry(const QRect &) = 0; virtual QRect geometry() const = 0; virtual bool isEmpty() const = 0; virtual bool hasHeightForWidth() const; virtual int heightForWidth(int) const; virtual int minimumHeightForWidth(int) const; virtual void invalidate(); virtual QWidget *widget(); virtual QLayout *layout(); virtual QSpacerItem *spacerItem(); Qt::Alignment alignment() const; void setAlignment(Qt::Alignment a); virtual QSizePolicy::ControlTypes controlTypes() const; }; class QSpacerItem : QLayoutItem { %TypeHeaderCode #include %End public: QSpacerItem(int w, int h, QSizePolicy::Policy hPolicy = QSizePolicy::Minimum, QSizePolicy::Policy vPolicy = QSizePolicy::Minimum); virtual ~QSpacerItem(); void changeSize(int w, int h, QSizePolicy::Policy hPolicy = QSizePolicy::Minimum, QSizePolicy::Policy vPolicy = QSizePolicy::Minimum); virtual QSize sizeHint() const; virtual QSize minimumSize() const; virtual QSize maximumSize() const; virtual Qt::Orientations expandingDirections() const; virtual bool isEmpty() const; virtual void setGeometry(const QRect &); virtual QRect geometry() const; virtual QSpacerItem *spacerItem(); %If (Qt_5_5_0 -) QSizePolicy sizePolicy() const; %End }; class QWidgetItem : QLayoutItem { %TypeHeaderCode #include %End public: explicit QWidgetItem(QWidget *w); virtual ~QWidgetItem(); virtual QSize sizeHint() const; virtual QSize minimumSize() const; virtual QSize maximumSize() const; virtual Qt::Orientations expandingDirections() const; virtual bool isEmpty() const; virtual void setGeometry(const QRect &); virtual QRect geometry() const; virtual QWidget *widget(); virtual bool hasHeightForWidth() const; virtual int heightForWidth(int) const; virtual QSizePolicy::ControlTypes controlTypes() const; private: QWidgetItem(const QWidgetItem &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qlcdnumber.sip0000644000076500000240000000457013245233151021065 0ustar philstaff00000000000000// qlcdnumber.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLCDNumber : QFrame { %TypeHeaderCode #include %End public: explicit QLCDNumber(QWidget *parent /TransferThis/ = 0); QLCDNumber(uint numDigits, QWidget *parent /TransferThis/ = 0); virtual ~QLCDNumber(); enum Mode { Hex, Dec, Oct, Bin, }; enum SegmentStyle { Outline, Filled, Flat, }; bool smallDecimalPoint() const; int digitCount() const; void setDigitCount(int nDigits); void setNumDigits(int nDigits); %MethodCode // This is implemented for Qt v5 so that .ui files created with Designer for Qt v4 will continue to work. sipCpp->setDigitCount(a0); %End bool checkOverflow(double num /Constrained/) const; bool checkOverflow(int num) const; QLCDNumber::Mode mode() const; void setMode(QLCDNumber::Mode); QLCDNumber::SegmentStyle segmentStyle() const; void setSegmentStyle(QLCDNumber::SegmentStyle); double value() const; int intValue() const; virtual QSize sizeHint() const; void display(const QString &str); void display(double num /Constrained/); void display(int num); void setHexMode(); void setDecMode(); void setOctMode(); void setBinMode(); void setSmallDecimalPoint(bool); signals: void overflow(); protected: virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); private: QLCDNumber(const QLCDNumber &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qlineedit.sip0000644000076500000240000001245013245233151020703 0ustar philstaff00000000000000// qlineedit.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLineEdit : QWidget { %TypeHeaderCode #include %End public: explicit QLineEdit(QWidget *parent /TransferThis/ = 0); QLineEdit(const QString &contents, QWidget *parent /TransferThis/ = 0); virtual ~QLineEdit(); QString text() const; QString displayText() const; int maxLength() const; void setMaxLength(int); void setFrame(bool); bool hasFrame() const; enum EchoMode { Normal, NoEcho, Password, PasswordEchoOnEdit, }; QLineEdit::EchoMode echoMode() const; void setEchoMode(QLineEdit::EchoMode); bool isReadOnly() const; void setReadOnly(bool); void setValidator(const QValidator * /KeepReference/); const QValidator *validator() const; virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; int cursorPosition() const; void setCursorPosition(int); int cursorPositionAt(const QPoint &pos); void setAlignment(Qt::Alignment flag); Qt::Alignment alignment() const; void cursorForward(bool mark, int steps = 1); void cursorBackward(bool mark, int steps = 1); void cursorWordForward(bool mark); void cursorWordBackward(bool mark); void backspace(); void del() /PyName=del_/; void home(bool mark); void end(bool mark); bool isModified() const; void setModified(bool); void setSelection(int, int); bool hasSelectedText() const; QString selectedText() const; int selectionStart() const; bool isUndoAvailable() const; bool isRedoAvailable() const; void setDragEnabled(bool b); bool dragEnabled() const; QString inputMask() const; void setInputMask(const QString &inputMask); bool hasAcceptableInput() const; void setText(const QString &); void clear(); void selectAll(); void undo(); void redo(); void cut(); void copy() const; void paste(); void deselect(); void insert(const QString &); QMenu *createStandardContextMenu() /Factory/; signals: void textChanged(const QString &); void textEdited(const QString &); void cursorPositionChanged(int, int); void returnPressed(); void editingFinished(); void selectionChanged(); protected: void initStyleOption(QStyleOptionFrame *option) const; virtual void mousePressEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void paintEvent(QPaintEvent *); virtual void dragEnterEvent(QDragEnterEvent *); virtual void dragMoveEvent(QDragMoveEvent *e); virtual void dragLeaveEvent(QDragLeaveEvent *e); virtual void dropEvent(QDropEvent *); virtual void changeEvent(QEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual void inputMethodEvent(QInputMethodEvent *); QRect cursorRect() const; public: virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const; virtual bool event(QEvent *); void setCompleter(QCompleter *completer /KeepReference/); QCompleter *completer() const; void setTextMargins(int left, int top, int right, int bottom); void getTextMargins(int *left, int *top, int *right, int *bottom) const; void setTextMargins(const QMargins &margins); QMargins textMargins() const; QString placeholderText() const; void setPlaceholderText(const QString &); void setCursorMoveStyle(Qt::CursorMoveStyle style); Qt::CursorMoveStyle cursorMoveStyle() const; %If (Qt_5_2_0 -) enum ActionPosition { LeadingPosition, TrailingPosition, }; %End %If (Qt_5_2_0 -) void setClearButtonEnabled(bool enable); %End %If (Qt_5_2_0 -) bool isClearButtonEnabled() const; %End %If (Qt_5_2_0 -) void addAction(QAction *action); %End %If (Qt_5_2_0 -) void addAction(QAction *action, QLineEdit::ActionPosition position); %End %If (Qt_5_2_0 -) QAction *addAction(const QIcon &icon, QLineEdit::ActionPosition position) /Transfer/; %End %If (Qt_5_7_0 -) QVariant inputMethodQuery(Qt::InputMethodQuery property, QVariant argument) const; %End %If (Qt_5_10_0 -) int selectionEnd() const; %End %If (Qt_5_10_0 -) int selectionLength() const; %End private: QLineEdit(const QLineEdit &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qlistview.sip0000644000076500000240000001150413245233151020753 0ustar philstaff00000000000000// qlistview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QListView : QAbstractItemView { %TypeHeaderCode #include %End public: enum Movement { Static, Free, Snap, }; enum Flow { LeftToRight, TopToBottom, }; enum ResizeMode { Fixed, Adjust, }; enum LayoutMode { SinglePass, Batched, }; enum ViewMode { ListMode, IconMode, }; explicit QListView(QWidget *parent /TransferThis/ = 0); virtual ~QListView(); void setMovement(QListView::Movement movement); QListView::Movement movement() const; void setFlow(QListView::Flow flow); QListView::Flow flow() const; void setWrapping(bool enable); bool isWrapping() const; void setResizeMode(QListView::ResizeMode mode); QListView::ResizeMode resizeMode() const; void setLayoutMode(QListView::LayoutMode mode); QListView::LayoutMode layoutMode() const; void setSpacing(int space); int spacing() const; void setGridSize(const QSize &size); QSize gridSize() const; void setViewMode(QListView::ViewMode mode); QListView::ViewMode viewMode() const; void clearPropertyFlags(); bool isRowHidden(int row) const; void setRowHidden(int row, bool hide); void setModelColumn(int column); int modelColumn() const; void setUniformItemSizes(bool enable); bool uniformItemSizes() const; virtual QRect visualRect(const QModelIndex &index) const; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); virtual QModelIndex indexAt(const QPoint &p) const; virtual void reset(); virtual void setRootIndex(const QModelIndex &index); signals: void indexesMoved(const QModelIndexList &indexes); protected: virtual void scrollContentsBy(int dx, int dy); virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector()); virtual void rowsInserted(const QModelIndex &parent, int start, int end); virtual void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end); virtual bool event(QEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void timerEvent(QTimerEvent *e); virtual void resizeEvent(QResizeEvent *e); virtual void dragMoveEvent(QDragMoveEvent *e); virtual void dragLeaveEvent(QDragLeaveEvent *e); virtual void dropEvent(QDropEvent *e); %If (Qt_5_6_0 -) virtual void wheelEvent(QWheelEvent *e); %End virtual void startDrag(Qt::DropActions supportedActions); virtual QStyleOptionViewItem viewOptions() const; virtual void paintEvent(QPaintEvent *e); virtual int horizontalOffset() const; virtual int verticalOffset() const; virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers); QRect rectForIndex(const QModelIndex &index) const; void setPositionForIndex(const QPoint &position, const QModelIndex &index); virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command); virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; virtual QModelIndexList selectedIndexes() const; virtual void updateGeometries(); virtual bool isIndexHidden(const QModelIndex &index) const; %If (Qt_5_2_0 -) virtual QSize viewportSizeHint() const; %End public: void setBatchSize(int batchSize); int batchSize() const; void setWordWrap(bool on); bool wordWrap() const; void setSelectionRectVisible(bool show); bool isSelectionRectVisible() const; protected: virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); private: QListView(const QListView &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qlistwidget.sip0000644000076500000240000001620213245233151021264 0ustar philstaff00000000000000// qlistwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QListWidgetItem /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum ItemType { Type, UserType, }; QListWidgetItem(QListWidget *parent /TransferThis/ = 0, int type = Type); QListWidgetItem(const QString &text, QListWidget *parent /TransferThis/ = 0, int type = Type); QListWidgetItem(const QIcon &icon, const QString &text, QListWidget *parent /TransferThis/ = 0, int type = Type); QListWidgetItem(const QListWidgetItem &other); virtual ~QListWidgetItem(); virtual QListWidgetItem *clone() const /Factory/; QListWidget *listWidget() const; Qt::ItemFlags flags() const; QString text() const; QIcon icon() const; QString statusTip() const; QString toolTip() const; QString whatsThis() const; QFont font() const; int textAlignment() const; void setTextAlignment(int alignment); Qt::CheckState checkState() const; void setCheckState(Qt::CheckState state); QSize sizeHint() const; void setSizeHint(const QSize &size); virtual QVariant data(int role) const; virtual void setData(int role, const QVariant &value); virtual bool operator<(const QListWidgetItem &other /NoCopy/) const; virtual void read(QDataStream &in) /ReleaseGIL/; virtual void write(QDataStream &out) const /ReleaseGIL/; int type() const; void setFlags(Qt::ItemFlags aflags); void setText(const QString &atext); void setIcon(const QIcon &aicon); void setStatusTip(const QString &astatusTip); void setToolTip(const QString &atoolTip); void setWhatsThis(const QString &awhatsThis); void setFont(const QFont &afont); QBrush background() const; void setBackground(const QBrush &brush); QBrush foreground() const; void setForeground(const QBrush &brush); void setSelected(bool aselect); bool isSelected() const; void setHidden(bool ahide); bool isHidden() const; private: QListWidgetItem &operator=(const QListWidgetItem &); }; QDataStream &operator<<(QDataStream &out, const QListWidgetItem &item /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QListWidgetItem &item /Constrained/) /ReleaseGIL/; class QListWidget : QListView { %TypeHeaderCode #include %End public: explicit QListWidget(QWidget *parent /TransferThis/ = 0); virtual ~QListWidget(); QListWidgetItem *item(int row) const; int row(const QListWidgetItem *item) const; void insertItem(int row, QListWidgetItem *item /Transfer/); void insertItem(int row, const QString &label); void insertItems(int row, const QStringList &labels); void addItem(QListWidgetItem *aitem /Transfer/); void addItem(const QString &label); void addItems(const QStringList &labels); QListWidgetItem *takeItem(int row) /TransferBack/; int count() const /__len__/; QListWidgetItem *currentItem() const; void setCurrentItem(QListWidgetItem *item); void setCurrentItem(QListWidgetItem *item, QItemSelectionModel::SelectionFlags command); int currentRow() const; void setCurrentRow(int row); void setCurrentRow(int row, QItemSelectionModel::SelectionFlags command); QListWidgetItem *itemAt(const QPoint &p) const; QListWidgetItem *itemAt(int ax, int ay) const; QWidget *itemWidget(QListWidgetItem *item) const; void setItemWidget(QListWidgetItem *item, QWidget *widget /Transfer/); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->itemWidget(a0); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->setItemWidget(a0, a1); Py_END_ALLOW_THREADS %End QRect visualItemRect(const QListWidgetItem *item) const; void sortItems(Qt::SortOrder order = Qt::AscendingOrder); void editItem(QListWidgetItem *item); void openPersistentEditor(QListWidgetItem *item); void closePersistentEditor(QListWidgetItem *item); QList selectedItems() const; QList findItems(const QString &text, Qt::MatchFlags flags) const; public slots: void clear(); void scrollToItem(const QListWidgetItem *item, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); signals: void itemPressed(QListWidgetItem *item); void itemClicked(QListWidgetItem *item); void itemDoubleClicked(QListWidgetItem *item); void itemActivated(QListWidgetItem *item); void itemEntered(QListWidgetItem *item); void itemChanged(QListWidgetItem *item); void currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous); void currentTextChanged(const QString ¤tText); void currentRowChanged(int currentRow); void itemSelectionChanged(); protected: virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QList items) const /TransferBack/; virtual bool dropMimeData(int index, const QMimeData *data, Qt::DropAction action); virtual Qt::DropActions supportedDropActions() const; QList items(const QMimeData *data) const; QModelIndex indexFromItem(QListWidgetItem *item) const; QListWidgetItem *itemFromIndex(const QModelIndex &index) const; virtual bool event(QEvent *e); public: void setSortingEnabled(bool enable); bool isSortingEnabled() const; virtual void dropEvent(QDropEvent *event); void removeItemWidget(QListWidgetItem *aItem); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->itemWidget(a0); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->removeItemWidget(a0); Py_END_ALLOW_THREADS %End %If (Qt_5_7_0 -) virtual void setSelectionModel(QItemSelectionModel *selectionModel); %End %If (Qt_5_10_0 -) bool isPersistentEditorOpen(QListWidgetItem *item) const; %End private: virtual void setModel(QAbstractItemModel *model /KeepReference/); QListWidget(const QListWidget &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qmaccocoaviewcontainer.sip0000644000076500000240000000262113245233151023450 0ustar philstaff00000000000000// This is the SIP interface definition for the QMacCocoaViewContainer. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (WS_MACX) %If (PyQt_MacOSXOnly) class QMacCocoaViewContainer : QWidget /FileExtension=".mm"/ { %TypeHeaderCode #include %End public: QMacCocoaViewContainer(void *cocoaViewToWrap, QWidget *parent /TransferThis/ = 0) [(NSView *, QWidget *)]; virtual ~QMacCocoaViewContainer(); void setCocoaView(void *cocoaViewToWrap) [void (NSView *)]; void *cocoaView() const [NSView * ()]; private: QMacCocoaViewContainer(const QMacCocoaViewContainer &); }; %End %End PyQt5_gpl-5.10.1/sip/QtWidgets/qmainwindow.sip0000644000076500000240000001153513245233151021265 0ustar philstaff00000000000000// qmainwindow.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMainWindow : QWidget { %TypeHeaderCode #include %End public: QMainWindow(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QMainWindow(); QSize iconSize() const; void setIconSize(const QSize &iconSize); Qt::ToolButtonStyle toolButtonStyle() const; void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle); QMenuBar *menuBar() const /Transfer/; void setMenuBar(QMenuBar *menubar /Transfer/); QStatusBar *statusBar() const /Transfer/; void setStatusBar(QStatusBar *statusbar /Transfer/); QWidget *centralWidget() const; void setCentralWidget(QWidget *widget /Transfer/); void setCorner(Qt::Corner corner, Qt::DockWidgetArea area); Qt::DockWidgetArea corner(Qt::Corner corner) const; void addToolBarBreak(Qt::ToolBarArea area = Qt::TopToolBarArea); void insertToolBarBreak(QToolBar *before); void addToolBar(Qt::ToolBarArea area, QToolBar *toolbar /Transfer/); void addToolBar(QToolBar *toolbar /Transfer/); QToolBar *addToolBar(const QString &title) /Transfer/; void insertToolBar(QToolBar *before, QToolBar *toolbar /Transfer/); void removeToolBar(QToolBar *toolbar); Qt::ToolBarArea toolBarArea(QToolBar *toolbar) const; void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget /Transfer/); void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget /Transfer/, Qt::Orientation orientation); void splitDockWidget(QDockWidget *after, QDockWidget *dockwidget /Transfer/, Qt::Orientation orientation); void removeDockWidget(QDockWidget *dockwidget /TransferBack/); Qt::DockWidgetArea dockWidgetArea(QDockWidget *dockwidget) const; QByteArray saveState(int version = 0) const; bool restoreState(const QByteArray &state, int version = 0); virtual QMenu *createPopupMenu(); public slots: void setAnimated(bool enabled); void setDockNestingEnabled(bool enabled); signals: void iconSizeChanged(const QSize &iconSize); void toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle); %If (Qt_5_8_0 -) void tabifiedDockWidgetActivated(QDockWidget *dockWidget); %End protected: virtual void contextMenuEvent(QContextMenuEvent *event); virtual bool event(QEvent *event); public: bool isAnimated() const; bool isDockNestingEnabled() const; bool isSeparator(const QPoint &pos) const; QWidget *menuWidget() const; void setMenuWidget(QWidget *menubar /Transfer/); void tabifyDockWidget(QDockWidget *first, QDockWidget *second); enum DockOption { AnimatedDocks, AllowNestedDocks, AllowTabbedDocks, ForceTabbedDocks, VerticalTabs, %If (Qt_5_6_0 -) GroupedDragging, %End }; typedef QFlags DockOptions; void setDockOptions(QMainWindow::DockOptions options); QMainWindow::DockOptions dockOptions() const; void removeToolBarBreak(QToolBar *before); bool toolBarBreak(QToolBar *toolbar) const; %If (Qt_5_2_0 -) void setUnifiedTitleAndToolBarOnMac(bool set); %End %If (Qt_5_2_0 -) bool unifiedTitleAndToolBarOnMac() const; %End bool restoreDockWidget(QDockWidget *dockwidget); bool documentMode() const; void setDocumentMode(bool enabled); QTabWidget::TabShape tabShape() const; void setTabShape(QTabWidget::TabShape tabShape); QTabWidget::TabPosition tabPosition(Qt::DockWidgetArea area) const; void setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition); QList tabifiedDockWidgets(QDockWidget *dockwidget) const; %If (Qt_5_2_0 -) QWidget *takeCentralWidget() /TransferBack/; %End %If (Qt_5_6_0 -) void resizeDocks(const QList &docks, const QList &sizes, Qt::Orientation orientation); %End private: QMainWindow(const QMainWindow &); }; QFlags operator|(QMainWindow::DockOption f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qmdiarea.sip0000644000076500000240000001031313245233151020504 0ustar philstaff00000000000000// qmdiarea.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMdiArea : QAbstractScrollArea { %TypeHeaderCode #include %End public: enum AreaOption { DontMaximizeSubWindowOnActivation, }; typedef QFlags AreaOptions; enum ViewMode { SubWindowView, TabbedView, }; enum WindowOrder { CreationOrder, StackingOrder, ActivationHistoryOrder, }; QMdiArea(QWidget *parent /TransferThis/ = 0); virtual ~QMdiArea(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; QMdiSubWindow *activeSubWindow() const; QMdiSubWindow *addSubWindow(QWidget *widget /Transfer/, Qt::WindowFlags flags = Qt::WindowFlags()); QList subWindowList(QMdiArea::WindowOrder order = QMdiArea::CreationOrder) const; QMdiSubWindow *currentSubWindow() const; void removeSubWindow(QWidget *widget /GetWrapper/); %MethodCode // We need to implement /TransferBack/ on the argument, but it might be the // QMdiSubWindow that wraps the widget we are really after. QMdiSubWindow *swin = qobject_cast(a0); if (swin) { QWidget *w = swin->widget(); a0Wrapper = (w ? sipGetPyObject(w, sipType_QWidget) : 0); } else a0Wrapper = 0; Py_BEGIN_ALLOW_THREADS sipCpp->removeSubWindow(a0); Py_END_ALLOW_THREADS if (a0Wrapper) sipTransferBack(a0Wrapper); %End QBrush background() const; void setBackground(const QBrush &background); void setOption(QMdiArea::AreaOption option, bool on = true); bool testOption(QMdiArea::AreaOption opton) const; signals: void subWindowActivated(QMdiSubWindow *); public slots: void setActiveSubWindow(QMdiSubWindow *window); void tileSubWindows(); void cascadeSubWindows(); void closeActiveSubWindow(); void closeAllSubWindows(); void activateNextSubWindow(); void activatePreviousSubWindow(); protected: virtual void setupViewport(QWidget *viewport); virtual bool event(QEvent *event); virtual bool eventFilter(QObject *object, QEvent *event); virtual void paintEvent(QPaintEvent *paintEvent); virtual void childEvent(QChildEvent *childEvent); virtual void resizeEvent(QResizeEvent *resizeEvent); virtual void timerEvent(QTimerEvent *timerEvent); virtual void showEvent(QShowEvent *showEvent); virtual bool viewportEvent(QEvent *event); virtual void scrollContentsBy(int dx, int dy); public: QMdiArea::WindowOrder activationOrder() const; void setActivationOrder(QMdiArea::WindowOrder order); void setViewMode(QMdiArea::ViewMode mode); QMdiArea::ViewMode viewMode() const; void setTabShape(QTabWidget::TabShape shape); QTabWidget::TabShape tabShape() const; void setTabPosition(QTabWidget::TabPosition position); QTabWidget::TabPosition tabPosition() const; bool documentMode() const; void setDocumentMode(bool enabled); void setTabsClosable(bool closable); bool tabsClosable() const; void setTabsMovable(bool movable); bool tabsMovable() const; private: QMdiArea(const QMdiArea &); }; QFlags operator|(QMdiArea::AreaOption f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qmdisubwindow.sip0000644000076500000240000001017313245233151021621 0ustar philstaff00000000000000// qmdisubwindow.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMdiSubWindow : QWidget { %TypeHeaderCode #include %End public: enum SubWindowOption { RubberBandResize, RubberBandMove, }; typedef QFlags SubWindowOptions; QMdiSubWindow(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QMdiSubWindow(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setWidget(QWidget *widget /Transfer/); %MethodCode // We have to implement /TransferBack/ on any existing widget. QWidget *w = sipCpp->widget(); Py_BEGIN_ALLOW_THREADS sipCpp->setWidget(a0); Py_END_ALLOW_THREADS if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferBack(wo); } %End QWidget *widget() const; bool isShaded() const; void setOption(QMdiSubWindow::SubWindowOption option, bool on = true); bool testOption(QMdiSubWindow::SubWindowOption) const; void setKeyboardSingleStep(int step); int keyboardSingleStep() const; void setKeyboardPageStep(int step); int keyboardPageStep() const; void setSystemMenu(QMenu *systemMenu /Transfer/); %MethodCode // We have to break the parent association on any existing menu. QMenu *w = sipCpp->systemMenu(); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QMenu); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->setSystemMenu(a0); Py_END_ALLOW_THREADS %End QMenu *systemMenu() const; QMdiArea *mdiArea() const; signals: void windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState); void aboutToActivate(); public slots: void showSystemMenu(); void showShaded(); protected: virtual bool eventFilter(QObject *object, QEvent *event); virtual bool event(QEvent *event); virtual void showEvent(QShowEvent *showEvent); virtual void hideEvent(QHideEvent *hideEvent); virtual void changeEvent(QEvent *changeEvent); virtual void closeEvent(QCloseEvent *closeEvent); virtual void leaveEvent(QEvent *leaveEvent); virtual void resizeEvent(QResizeEvent *resizeEvent); virtual void timerEvent(QTimerEvent *timerEvent); virtual void moveEvent(QMoveEvent *moveEvent); virtual void paintEvent(QPaintEvent *paintEvent); virtual void mousePressEvent(QMouseEvent *mouseEvent); virtual void mouseDoubleClickEvent(QMouseEvent *mouseEvent); virtual void mouseReleaseEvent(QMouseEvent *mouseEvent); virtual void mouseMoveEvent(QMouseEvent *mouseEvent); virtual void keyPressEvent(QKeyEvent *keyEvent); virtual void contextMenuEvent(QContextMenuEvent *contextMenuEvent); virtual void focusInEvent(QFocusEvent *focusInEvent); virtual void focusOutEvent(QFocusEvent *focusOutEvent); virtual void childEvent(QChildEvent *childEvent); private: QMdiSubWindow(const QMdiSubWindow &); }; QFlags operator|(QMdiSubWindow::SubWindowOption f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qmenu.sip0000644000076500000240000001372313245233151020056 0ustar philstaff00000000000000// qmenu.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMenu : QWidget { %TypeHeaderCode #include %End public: explicit QMenu(QWidget *parent /TransferThis/ = 0); QMenu(const QString &title, QWidget *parent /TransferThis/ = 0); virtual ~QMenu(); void addAction(QAction *action); QAction *addAction(const QString &text) /Transfer/; QAction *addAction(const QIcon &icon, const QString &text) /Transfer/; QAction *addAction(const QString &text, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/, const QKeySequence &shortcut = 0) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a1, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, receiver, slot_signature.constData(), *a2); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End QAction *addAction(const QIcon &icon, const QString &text, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/, const QKeySequence &shortcut = 0) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a2, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, *a1, receiver, slot_signature.constData(), *a3); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End QAction *addMenu(QMenu *menu); QMenu *addMenu(const QString &title) /Transfer/; QMenu *addMenu(const QIcon &icon, const QString &title) /Transfer/; QAction *addSeparator() /Transfer/; QAction *insertMenu(QAction *before, QMenu *menu); QAction *insertSeparator(QAction *before) /Transfer/; void clear(); void setTearOffEnabled(bool); bool isTearOffEnabled() const; bool isTearOffMenuVisible() const; void hideTearOffMenu(); void setDefaultAction(QAction * /KeepReference/); QAction *defaultAction() const; void setActiveAction(QAction *act); QAction *activeAction() const; void popup(const QPoint &p, QAction *action = 0); QAction *exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %If (Py_v3) QAction *exec() /ReleaseGIL/; %End QAction *exec(const QPoint &p, QAction *action = 0) /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %If (Py_v3) QAction *exec(const QPoint &pos, QAction *action = 0) /ReleaseGIL/; %End static QAction *exec(QList actions, const QPoint &pos, QAction *at = 0, QWidget *parent = 0) /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,PyName=exec_,ReleaseGIL/; %If (Py_v3) static QAction *exec(QList actions, const QPoint &pos, QAction *at = 0, QWidget *parent = 0) /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %End virtual QSize sizeHint() const; QRect actionGeometry(QAction *) const; QAction *actionAt(const QPoint &) const; QAction *menuAction() const; QString title() const; void setTitle(const QString &title); QIcon icon() const; void setIcon(const QIcon &icon); void setNoReplayFor(QWidget *widget); signals: void aboutToHide(); void aboutToShow(); void hovered(QAction *action); void triggered(QAction *action); protected: int columnCount() const; void initStyleOption(QStyleOptionMenuItem *option, const QAction *action) const; virtual void changeEvent(QEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void wheelEvent(QWheelEvent *); virtual void enterEvent(QEvent *); virtual void leaveEvent(QEvent *); virtual void hideEvent(QHideEvent *); virtual void paintEvent(QPaintEvent *); virtual void actionEvent(QActionEvent *); virtual void timerEvent(QTimerEvent *); virtual bool event(QEvent *); virtual bool focusNextPrevChild(bool next); public: bool isEmpty() const; bool separatorsCollapsible() const; void setSeparatorsCollapsible(bool collapse); %If (Qt_5_1_0 -) QAction *addSection(const QString &text) /Transfer/; %End %If (Qt_5_1_0 -) QAction *addSection(const QIcon &icon, const QString &text) /Transfer/; %End %If (Qt_5_1_0 -) QAction *insertSection(QAction *before, const QString &text) /Transfer/; %End %If (Qt_5_1_0 -) QAction *insertSection(QAction *before, const QIcon &icon, const QString &text) /Transfer/; %End %If (Qt_5_1_0 -) bool toolTipsVisible() const; %End %If (Qt_5_1_0 -) void setToolTipsVisible(bool visible); %End %If (Qt_5_2_0 -) %If (WS_MACX) %If (PyQt_MacOSXOnly) void setAsDockMenu(); %End %End %End %If (Qt_5_7_0 -) void showTearOffMenu(); %End %If (Qt_5_7_0 -) void showTearOffMenu(const QPoint &pos); %End private: QMenu(const QMenu &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qmenubar.sip0000644000076500000240000000676713245233151020555 0ustar philstaff00000000000000// qmenubar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMenuBar : QWidget { %TypeHeaderCode #include %End public: explicit QMenuBar(QWidget *parent /TransferThis/ = 0); virtual ~QMenuBar(); void addAction(QAction *action); QAction *addAction(const QString &text) /Transfer/; QAction *addAction(const QString &text, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a1, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End QAction *addMenu(QMenu *menu); QMenu *addMenu(const QString &title) /Transfer/; QMenu *addMenu(const QIcon &icon, const QString &title) /Transfer/; QAction *addSeparator() /Transfer/; QAction *insertMenu(QAction *before, QMenu *menu); QAction *insertSeparator(QAction *before) /Transfer/; void clear(); QAction *activeAction() const; void setActiveAction(QAction *action); void setDefaultUp(bool); bool isDefaultUp() const; virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; virtual int heightForWidth(int) const; QRect actionGeometry(QAction *) const; QAction *actionAt(const QPoint &) const; void setCornerWidget(QWidget *widget /Transfer/, Qt::Corner corner = Qt::TopRightCorner); QWidget *cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const; virtual void setVisible(bool visible); signals: void triggered(QAction *action); void hovered(QAction *action); protected: void initStyleOption(QStyleOptionMenuItem *option, const QAction *action) const; virtual void changeEvent(QEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void leaveEvent(QEvent *); virtual void paintEvent(QPaintEvent *); virtual void resizeEvent(QResizeEvent *); virtual void actionEvent(QActionEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void focusInEvent(QFocusEvent *); virtual bool eventFilter(QObject *, QEvent *); virtual bool event(QEvent *); virtual void timerEvent(QTimerEvent *); public: bool isNativeMenuBar() const; void setNativeMenuBar(bool nativeMenuBar); private: QMenuBar(const QMenuBar &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qmessagebox.sip0000644000076500000240000001462013245233151021244 0ustar philstaff00000000000000// qmessagebox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMessageBox : QDialog { %TypeHeaderCode #include %End public: enum ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, HelpRole, YesRole, NoRole, ResetRole, ApplyRole, }; enum Icon { NoIcon, Information, Warning, Critical, Question, }; enum StandardButton { NoButton, Ok, Save, SaveAll, Open, Yes, YesToAll, No, NoToAll, Abort, Retry, Ignore, Close, Cancel, Discard, Help, Apply, Reset, RestoreDefaults, FirstButton, LastButton, YesAll, NoAll, Default, Escape, FlagMask, ButtonMask, }; typedef QFlags StandardButtons; typedef QMessageBox::StandardButton Button; explicit QMessageBox(QWidget *parent /TransferThis/ = 0); QMessageBox(QMessageBox::Icon icon, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::NoButton, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint); virtual ~QMessageBox(); QString text() const; void setText(const QString &); QMessageBox::Icon icon() const; void setIcon(QMessageBox::Icon); QPixmap iconPixmap() const; void setIconPixmap(const QPixmap &); Qt::TextFormat textFormat() const; void setTextFormat(Qt::TextFormat); static QMessageBox::StandardButton information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::NoButton) /ReleaseGIL/; static QMessageBox::StandardButton question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::StandardButtons(QMessageBox::Yes | QMessageBox::No), QMessageBox::StandardButton defaultButton = QMessageBox::NoButton) /ReleaseGIL/; static QMessageBox::StandardButton warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::NoButton) /ReleaseGIL/; static QMessageBox::StandardButton critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::NoButton) /ReleaseGIL/; static void about(QWidget *parent, const QString &caption, const QString &text) /ReleaseGIL/; static void aboutQt(QWidget *parent, const QString &title = QString()) /ReleaseGIL/; static QPixmap standardIcon(QMessageBox::Icon icon); protected: virtual bool event(QEvent *e); virtual void resizeEvent(QResizeEvent *); virtual void showEvent(QShowEvent *); virtual void closeEvent(QCloseEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void changeEvent(QEvent *); public: void addButton(QAbstractButton *button /Transfer/, QMessageBox::ButtonRole role); QPushButton *addButton(const QString &text, QMessageBox::ButtonRole role) /Transfer/; QPushButton *addButton(QMessageBox::StandardButton button) /Transfer/; void removeButton(QAbstractButton *button /TransferBack/); void setStandardButtons(QMessageBox::StandardButtons buttons); QMessageBox::StandardButtons standardButtons() const; QMessageBox::StandardButton standardButton(QAbstractButton *button) const; QAbstractButton *button(QMessageBox::StandardButton which) const; QPushButton *defaultButton() const; void setDefaultButton(QPushButton *button /KeepReference/); void setDefaultButton(QMessageBox::StandardButton button); QAbstractButton *escapeButton() const; void setEscapeButton(QAbstractButton *button /KeepReference/); void setEscapeButton(QMessageBox::StandardButton button); QAbstractButton *clickedButton() const; QString informativeText() const; void setInformativeText(const QString &text); QString detailedText() const; void setDetailedText(const QString &text); void setWindowTitle(const QString &title); void setWindowModality(Qt::WindowModality windowModality); virtual void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End QList buttons() const; QMessageBox::ButtonRole buttonRole(QAbstractButton *button) const; signals: void buttonClicked(QAbstractButton *button); public: %If (Qt_5_1_0 -) void setTextInteractionFlags(Qt::TextInteractionFlags flags); %End %If (Qt_5_1_0 -) Qt::TextInteractionFlags textInteractionFlags() const; %End %If (Qt_5_2_0 -) void setCheckBox(QCheckBox *cb); %End %If (Qt_5_2_0 -) QCheckBox *checkBox() const; %End private: QMessageBox(const QMessageBox &); }; QFlags operator|(QMessageBox::StandardButton f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qmouseeventtransition.sip0000644000076500000240000000336013245233151023413 0ustar philstaff00000000000000// qmouseeventtransition.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMouseEventTransition : QEventTransition { %TypeHeaderCode #include %End public: QMouseEventTransition(QState *sourceState /TransferThis/ = 0); QMouseEventTransition(QObject *object /KeepReference=10/, QEvent::Type type, Qt::MouseButton button, QState *sourceState /TransferThis/ = 0); virtual ~QMouseEventTransition(); Qt::MouseButton button() const; void setButton(Qt::MouseButton button); Qt::KeyboardModifiers modifierMask() const; void setModifierMask(Qt::KeyboardModifiers modifiers); QPainterPath hitTestPath() const; void setHitTestPath(const QPainterPath &path); protected: virtual void onTransition(QEvent *event); virtual bool eventTest(QEvent *event); private: QMouseEventTransition(const QMouseEventTransition &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qopenglwidget.sip0000644000076500000240000000457613245233151021610 0ustar philstaff00000000000000// qopenglwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_4_0 -) %If (PyQt_OpenGL) class QOpenGLWidget : QWidget { %TypeHeaderCode #include %End public: QOpenGLWidget(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QOpenGLWidget(); void setFormat(const QSurfaceFormat &format); QSurfaceFormat format() const; bool isValid() const; void makeCurrent(); void doneCurrent(); QOpenGLContext *context() const; GLuint defaultFramebufferObject() const; QImage grabFramebuffer(); signals: void aboutToCompose(); void frameSwapped(); void aboutToResize(); void resized(); protected: virtual void initializeGL(); virtual void resizeGL(int w, int h); virtual void paintGL(); virtual void paintEvent(QPaintEvent *e); virtual void resizeEvent(QResizeEvent *e); virtual bool event(QEvent *e); virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; virtual QPaintEngine *paintEngine() const; public: %If (Qt_5_5_0 -) enum UpdateBehavior { NoPartialUpdate, PartialUpdate, }; %End %If (Qt_5_5_0 -) void setUpdateBehavior(QOpenGLWidget::UpdateBehavior updateBehavior); %End %If (Qt_5_5_0 -) QOpenGLWidget::UpdateBehavior updateBehavior() const; %End %If (Qt_5_10_0 -) GLenum textureFormat() const; %End %If (Qt_5_10_0 -) void setTextureFormat(GLenum texFormat); %End private: QOpenGLWidget(const QOpenGLWidget &); }; %End %End PyQt5_gpl-5.10.1/sip/QtWidgets/qplaintextedit.sip0000644000076500000240000001676213245233151021776 0ustar philstaff00000000000000// qplaintextedit.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPlainTextEdit : QAbstractScrollArea { %TypeHeaderCode #include %End public: enum LineWrapMode { NoWrap, WidgetWidth, }; explicit QPlainTextEdit(QWidget *parent /TransferThis/ = 0); QPlainTextEdit(const QString &text, QWidget *parent /TransferThis/ = 0); virtual ~QPlainTextEdit(); void setDocument(QTextDocument *document /KeepReference/); QTextDocument *document() const; void setTextCursor(const QTextCursor &cursor); QTextCursor textCursor() const; bool isReadOnly() const; void setReadOnly(bool ro); void setTextInteractionFlags(Qt::TextInteractionFlags flags); Qt::TextInteractionFlags textInteractionFlags() const; void mergeCurrentCharFormat(const QTextCharFormat &modifier); void setCurrentCharFormat(const QTextCharFormat &format); QTextCharFormat currentCharFormat() const; bool tabChangesFocus() const; void setTabChangesFocus(bool b); void setDocumentTitle(const QString &title); QString documentTitle() const; bool isUndoRedoEnabled() const; void setUndoRedoEnabled(bool enable); void setMaximumBlockCount(int maximum); int maximumBlockCount() const; QPlainTextEdit::LineWrapMode lineWrapMode() const; void setLineWrapMode(QPlainTextEdit::LineWrapMode mode); QTextOption::WrapMode wordWrapMode() const; void setWordWrapMode(QTextOption::WrapMode policy); void setBackgroundVisible(bool visible); bool backgroundVisible() const; void setCenterOnScroll(bool enabled); bool centerOnScroll() const; bool find(const QString &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags()); QString toPlainText() const; void ensureCursorVisible(); virtual QVariant loadResource(int type, const QUrl &name); QMenu *createStandardContextMenu() /Factory/; %If (Qt_5_5_0 -) QMenu *createStandardContextMenu(const QPoint &position) /Factory/; %End QTextCursor cursorForPosition(const QPoint &pos) const; QRect cursorRect(const QTextCursor &cursor) const; QRect cursorRect() const; bool overwriteMode() const; void setOverwriteMode(bool overwrite); int tabStopWidth() const; void setTabStopWidth(int width); int cursorWidth() const; void setCursorWidth(int width); void setExtraSelections(const QList &selections); QList extraSelections() const; void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor); bool canPaste() const; %If (PyQt_Printer) void print(QPagedPaintDevice *printer) const /PyName=print_/; %End %If (Py_v3) %If (PyQt_Printer) void print(QPagedPaintDevice *printer) const; %End %End int blockCount() const; public slots: void setPlainText(const QString &text); void cut(); void copy(); void paste(); void undo(); void redo(); void clear(); void selectAll(); void insertPlainText(const QString &text); void appendPlainText(const QString &text); void appendHtml(const QString &html); void centerCursor(); signals: void textChanged(); void undoAvailable(bool b); void redoAvailable(bool b); void copyAvailable(bool b); void selectionChanged(); void cursorPositionChanged(); void updateRequest(const QRect &rect, int dy); void blockCountChanged(int newBlockCount); void modificationChanged(bool); protected: virtual bool event(QEvent *e); virtual void timerEvent(QTimerEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void keyReleaseEvent(QKeyEvent *e); virtual void resizeEvent(QResizeEvent *e); virtual void paintEvent(QPaintEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseDoubleClickEvent(QMouseEvent *e); virtual bool focusNextPrevChild(bool next); virtual void contextMenuEvent(QContextMenuEvent *e); virtual void dragEnterEvent(QDragEnterEvent *e); virtual void dragLeaveEvent(QDragLeaveEvent *e); virtual void dragMoveEvent(QDragMoveEvent *e); virtual void dropEvent(QDropEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void showEvent(QShowEvent *); virtual void changeEvent(QEvent *e); virtual void wheelEvent(QWheelEvent *e); virtual void inputMethodEvent(QInputMethodEvent *); public: virtual QVariant inputMethodQuery(Qt::InputMethodQuery property) const; protected: virtual QMimeData *createMimeDataFromSelection() const /Factory/; virtual bool canInsertFromMimeData(const QMimeData *source) const; virtual void insertFromMimeData(const QMimeData *source); virtual void scrollContentsBy(int dx, int dy); QTextBlock firstVisibleBlock() const; QPointF contentOffset() const; QRectF blockBoundingRect(const QTextBlock &block) const; QRectF blockBoundingGeometry(const QTextBlock &block) const; QAbstractTextDocumentLayout::PaintContext getPaintContext() const; public: QString anchorAt(const QPoint &pos) const; public slots: %If (Qt_5_1_0 -) void zoomIn(int range = 1); %End %If (Qt_5_1_0 -) void zoomOut(int range = 1); %End public: %If (Qt_5_3_0 -) void setPlaceholderText(const QString &placeholderText); %End %If (Qt_5_3_0 -) QString placeholderText() const; %End %If (Qt_5_3_0 -) bool find(const QRegExp &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags()); %End %If (Qt_5_3_0 -) QVariant inputMethodQuery(Qt::InputMethodQuery query, QVariant argument) const; %End %If (Qt_5_10_0 -) qreal tabStopDistance() const; %End %If (Qt_5_10_0 -) void setTabStopDistance(qreal distance); %End private: QPlainTextEdit(const QPlainTextEdit &); }; class QPlainTextDocumentLayout : QAbstractTextDocumentLayout { %TypeHeaderCode #include %End public: QPlainTextDocumentLayout(QTextDocument *document); virtual ~QPlainTextDocumentLayout(); virtual void draw(QPainter *, const QAbstractTextDocumentLayout::PaintContext &); virtual int hitTest(const QPointF &, Qt::HitTestAccuracy) const; virtual int pageCount() const; virtual QSizeF documentSize() const; virtual QRectF frameBoundingRect(QTextFrame *) const; virtual QRectF blockBoundingRect(const QTextBlock &block) const; void ensureBlockLayout(const QTextBlock &block) const; void setCursorWidth(int width); int cursorWidth() const; void requestUpdate(); protected: virtual void documentChanged(int from, int, int charsAdded); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qprogressbar.sip0000644000076500000240000000436213245233151021442 0ustar philstaff00000000000000// qprogressbar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QProgressBar : QWidget { %TypeHeaderCode #include %End public: enum Direction { TopToBottom, BottomToTop, }; explicit QProgressBar(QWidget *parent /TransferThis/ = 0); virtual ~QProgressBar(); int minimum() const; int maximum() const; void setRange(int minimum, int maximum); int value() const; virtual QString text() const; void setTextVisible(bool visible); bool isTextVisible() const; Qt::Alignment alignment() const; void setAlignment(Qt::Alignment alignment); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; Qt::Orientation orientation() const; void setInvertedAppearance(bool invert); void setTextDirection(QProgressBar::Direction textDirection); void setFormat(const QString &format); QString format() const; %If (Qt_5_1_0 -) void resetFormat(); %End public slots: void reset(); void setMinimum(int minimum); void setMaximum(int maximum); void setValue(int value); void setOrientation(Qt::Orientation); signals: void valueChanged(int value); protected: void initStyleOption(QStyleOptionProgressBar *option) const; virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); private: QProgressBar(const QProgressBar &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qprogressdialog.sip0000644000076500000240000000561713245233151022141 0ustar philstaff00000000000000// qprogressdialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QProgressDialog : QDialog { %TypeHeaderCode #include %End public: QProgressDialog(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); QProgressDialog(const QString &labelText, const QString &cancelButtonText, int minimum, int maximum, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QProgressDialog(); void setLabel(QLabel *label /Transfer/); void setCancelButton(QPushButton *button /Transfer/); void setBar(QProgressBar *bar /Transfer/); bool wasCanceled() const; int minimum() const; int maximum() const; void setRange(int minimum, int maximum); int value() const; virtual QSize sizeHint() const; QString labelText() const; int minimumDuration() const; void setAutoReset(bool b); bool autoReset() const; void setAutoClose(bool b); bool autoClose() const; public slots: void cancel(); void reset(); void setMaximum(int maximum); void setMinimum(int minimum); void setValue(int progress); void setLabelText(const QString &); void setCancelButtonText(const QString &); void setMinimumDuration(int ms); signals: void canceled(); protected: virtual void resizeEvent(QResizeEvent *); virtual void closeEvent(QCloseEvent *); virtual void changeEvent(QEvent *); virtual void showEvent(QShowEvent *e); void forceShow(); public: void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End private: QProgressDialog(const QProgressDialog &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qproxystyle.sip0000644000076500000240000000763313245233151021357 0ustar philstaff00000000000000// qproxystyle.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QProxyStyle : QCommonStyle { %TypeHeaderCode #include %End public: QProxyStyle(QStyle *style /Transfer/ = 0); QProxyStyle(const QString &key); virtual ~QProxyStyle(); QStyle *baseStyle() const; void setBaseStyle(QStyle *style /Transfer/); virtual void drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = 0) const; virtual void drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = 0) const; virtual void drawComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = 0) const; virtual void drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; virtual void drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const; virtual QSize sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const; virtual QRect subElementRect(QStyle::SubElement element, const QStyleOption *option, const QWidget *widget) const; virtual QRect subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget) const; virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const; virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const; virtual QStyle::SubControl hitTestComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, const QPoint &pos, const QWidget *widget = 0) const; virtual int styleHint(QStyle::StyleHint hint, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const; virtual int pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual QIcon standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual QPixmap standardPixmap(QStyle::StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget = 0) const; virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const; virtual QPalette standardPalette() const; virtual void polish(QWidget *widget); virtual void polish(QPalette &pal /In,Out/); virtual void polish(QApplication *app); virtual void unpolish(QWidget *widget); virtual void unpolish(QApplication *app); protected: virtual bool event(QEvent *e); private: QProxyStyle(const QProxyStyle &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qpushbutton.sip0000644000076500000240000000407413245233151021324 0ustar philstaff00000000000000// qpushbutton.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPushButton : QAbstractButton { %TypeHeaderCode #include %End public: explicit QPushButton(QWidget *parent /TransferThis/ = 0); QPushButton(const QString &text, QWidget *parent /TransferThis/ = 0); QPushButton(const QIcon &icon, const QString &text, QWidget *parent /TransferThis/ = 0); virtual ~QPushButton(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; bool autoDefault() const; void setAutoDefault(bool); bool isDefault() const; void setDefault(bool); void setMenu(QMenu *menu /KeepReference/); QMenu *menu() const; void setFlat(bool); bool isFlat() const; public slots: void showMenu(); protected: void initStyleOption(QStyleOptionButton *option) const; virtual bool event(QEvent *e) /ReleaseGIL/; virtual void paintEvent(QPaintEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); // Protected platform specific methods. %If (WS_MACX) bool hitButton(const QPoint &pos) const; %End private: QPushButton(const QPushButton &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qpywidgets_qlist.sip0000644000076500000240000000563213245233151022345 0ustar philstaff00000000000000// This is the SIP interface definition for the QList based mapped types // specific to the QtWidgets module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QList /TypeHintIn="Iterable[QWizard.WizardButton]", TypeHintOut="List[QWizard.WizardButton]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QWizard_WizardButton); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter #if PY_MAJOR_VERSION < 3 && !PyString_Check(sipPy) #endif && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QWizard_WizardButton); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QWizard.WizardButton' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; PyQt5_gpl-5.10.1/sip/QtWidgets/qradiobutton.sip0000644000076500000240000000307513245233151021443 0ustar philstaff00000000000000// qradiobutton.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRadioButton : QAbstractButton { %TypeHeaderCode #include %End public: explicit QRadioButton(QWidget *parent /TransferThis/ = 0); QRadioButton(const QString &text, QWidget *parent /TransferThis/ = 0); virtual ~QRadioButton(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; protected: void initStyleOption(QStyleOptionButton *button) const; virtual bool hitButton(const QPoint &) const; virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); virtual void mouseMoveEvent(QMouseEvent *); private: QRadioButton(const QRadioButton &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qrubberband.sip0000644000076500000240000000337213245233151021217 0ustar philstaff00000000000000// qrubberband.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRubberBand : QWidget { %TypeHeaderCode #include %End public: enum Shape { Line, Rectangle, }; QRubberBand(QRubberBand::Shape, QWidget *parent /TransferThis/ = 0); virtual ~QRubberBand(); QRubberBand::Shape shape() const; void setGeometry(const QRect &r); void setGeometry(int ax, int ay, int aw, int ah); void move(const QPoint &p); void move(int ax, int ay); void resize(int w, int h); void resize(const QSize &s); protected: void initStyleOption(QStyleOptionRubberBand *option) const; virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); virtual void changeEvent(QEvent *); virtual void showEvent(QShowEvent *); virtual void resizeEvent(QResizeEvent *); virtual void moveEvent(QMoveEvent *); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qscrollarea.sip0000644000076500000240000000365513245233151021244 0ustar philstaff00000000000000// qscrollarea.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QScrollArea : QAbstractScrollArea { %TypeHeaderCode #include %End public: explicit QScrollArea(QWidget *parent /TransferThis/ = 0); virtual ~QScrollArea(); QWidget *widget() const; void setWidget(QWidget *w /Transfer/); QWidget *takeWidget() /TransferBack/; bool widgetResizable() const; void setWidgetResizable(bool resizable); Qt::Alignment alignment() const; void setAlignment(Qt::Alignment); virtual QSize sizeHint() const; virtual bool focusNextPrevChild(bool next); void ensureVisible(int x, int y, int xMargin = 50, int yMargin = 50); void ensureWidgetVisible(QWidget *childWidget, int xMargin = 50, int yMargin = 50); protected: virtual bool event(QEvent *); virtual bool eventFilter(QObject *, QEvent *); virtual void resizeEvent(QResizeEvent *); virtual void scrollContentsBy(int dx, int dy); %If (Qt_5_2_0 -) virtual QSize viewportSizeHint() const; %End private: QScrollArea(const QScrollArea &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qscrollbar.sip0000644000076500000240000000342313245233151021071 0ustar philstaff00000000000000// qscrollbar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QScrollBar : QAbstractSlider { %TypeHeaderCode #include %End public: explicit QScrollBar(QWidget *parent /TransferThis/ = 0); QScrollBar(Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); virtual ~QScrollBar(); virtual QSize sizeHint() const; virtual bool event(QEvent *event); protected: void initStyleOption(QStyleOptionSlider *option) const; virtual void paintEvent(QPaintEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void hideEvent(QHideEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual void wheelEvent(QWheelEvent *); virtual void sliderChange(QAbstractSlider::SliderChange change); private: QScrollBar(const QScrollBar &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qscroller.sip0000644000076500000240000000556213245233151020741 0ustar philstaff00000000000000// qscroller.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QScroller : QObject { %TypeHeaderCode #include %End public: enum State { Inactive, Pressed, Dragging, Scrolling, }; enum ScrollerGestureType { TouchGesture, LeftMouseButtonGesture, RightMouseButtonGesture, MiddleMouseButtonGesture, }; enum Input { InputPress, InputMove, InputRelease, }; static bool hasScroller(QObject *target); static QScroller *scroller(QObject *target); static Qt::GestureType grabGesture(QObject *target, QScroller::ScrollerGestureType scrollGestureType = QScroller::TouchGesture); static Qt::GestureType grabbedGesture(QObject *target); static void ungrabGesture(QObject *target); static QList activeScrollers(); QObject *target() const; QScroller::State state() const; bool handleInput(QScroller::Input input, const QPointF &position, qint64 timestamp = 0); void stop(); QPointF velocity() const; QPointF finalPosition() const; QPointF pixelPerMeter() const; QScrollerProperties scrollerProperties() const; void setSnapPositionsX(const QList &positions); void setSnapPositionsX(qreal first, qreal interval); void setSnapPositionsY(const QList &positions); void setSnapPositionsY(qreal first, qreal interval); public slots: void setScrollerProperties(const QScrollerProperties &prop); void scrollTo(const QPointF &pos); void scrollTo(const QPointF &pos, int scrollTime); void ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin); void ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin, int scrollTime); void resendPrepareEvent(); signals: void stateChanged(QScroller::State newstate); void scrollerPropertiesChanged(const QScrollerProperties &); private: QScroller(QObject *target); virtual ~QScroller(); QScroller(const QScroller &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qscrollerproperties.sip0000644000076500000240000000466513245233151023061 0ustar philstaff00000000000000// qscrollerproperties.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QScrollerProperties { %TypeHeaderCode #include %End public: QScrollerProperties(); QScrollerProperties(const QScrollerProperties &sp); virtual ~QScrollerProperties(); bool operator==(const QScrollerProperties &sp) const; bool operator!=(const QScrollerProperties &sp) const; static void setDefaultScrollerProperties(const QScrollerProperties &sp); static void unsetDefaultScrollerProperties(); enum OvershootPolicy { OvershootWhenScrollable, OvershootAlwaysOff, OvershootAlwaysOn, }; enum FrameRates { Standard, Fps60, Fps30, Fps20, }; enum ScrollMetric { MousePressEventDelay, DragStartDistance, DragVelocitySmoothingFactor, AxisLockThreshold, ScrollingCurve, DecelerationFactor, MinimumVelocity, MaximumVelocity, MaximumClickThroughVelocity, AcceleratingFlickMaximumTime, AcceleratingFlickSpeedupFactor, SnapPositionRatio, SnapTime, OvershootDragResistanceFactor, OvershootDragDistanceFactor, OvershootScrollDistanceFactor, OvershootScrollTime, HorizontalOvershootPolicy, VerticalOvershootPolicy, FrameRate, ScrollMetricCount, }; QVariant scrollMetric(QScrollerProperties::ScrollMetric metric) const; void setScrollMetric(QScrollerProperties::ScrollMetric metric, const QVariant &value); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qshortcut.sip0000644000076500000240000000671313245233151020766 0ustar philstaff00000000000000// qshortcut.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QShortcut : QObject { %TypeHeaderCode #include %End public: explicit QShortcut(QWidget *parent /TransferThis/); QShortcut(const QKeySequence &key, QWidget *parent /TransferThis/, SIP_PYOBJECT member /TypeHint="PYQT_SLOT"/ = 0, SIP_PYOBJECT ambiguousMember /TypeHint="PYQT_SLOT"/ = 0, Qt::ShortcutContext context = Qt::WindowShortcut) [(const QKeySequence &key, QWidget *parent, const char *member = 0, const char *ambiguousMember = 0, Qt::ShortcutContext context = Qt::WindowShortcut)]; %MethodCode // Construct the shortcut without any connections. Py_BEGIN_ALLOW_THREADS sipCpp = new sipQShortcut(*a0, a1, 0, 0, a4); Py_END_ALLOW_THREADS if (a2) { QObject *rx2; QByteArray member2; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a2, sipCpp, "()", false, &rx2, member2)) == sipErrorNone) { Py_BEGIN_ALLOW_THREADS QObject::connect(sipCpp, SIGNAL(activated()), rx2, member2.constData()); Py_END_ALLOW_THREADS } else { delete sipCpp; if (sipError == sipErrorContinue) sipError = sipBadCallableArg(2, a2); } } if (a3) { QObject *rx3; QByteArray member3; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a3, sipCpp, "()", false, &rx3, member3)) == sipErrorNone) { Py_BEGIN_ALLOW_THREADS QObject::connect(sipCpp, SIGNAL(activatedAmbiguously()), rx3, member3.constData()); Py_END_ALLOW_THREADS } else { delete sipCpp; if (sipError == sipErrorContinue) sipError = sipBadCallableArg(3, a3); } } %End virtual ~QShortcut(); void setKey(const QKeySequence &key); QKeySequence key() const; void setEnabled(bool enable); bool isEnabled() const; void setContext(Qt::ShortcutContext context); Qt::ShortcutContext context() const; void setWhatsThis(const QString &text); QString whatsThis() const; int id() const; QWidget *parentWidget() const; void setAutoRepeat(bool on); bool autoRepeat() const; signals: void activated(); void activatedAmbiguously(); protected: virtual bool event(QEvent *e); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qsizegrip.sip0000644000076500000240000000322413245233151020741 0ustar philstaff00000000000000// qsizegrip.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSizeGrip : QWidget { %TypeHeaderCode #include %End public: explicit QSizeGrip(QWidget *parent /TransferThis/); virtual ~QSizeGrip(); virtual QSize sizeHint() const; virtual void setVisible(bool); protected: virtual void paintEvent(QPaintEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *mouseEvent); virtual void mouseMoveEvent(QMouseEvent *); virtual bool eventFilter(QObject *, QEvent *); virtual bool event(QEvent *); virtual void moveEvent(QMoveEvent *moveEvent); virtual void showEvent(QShowEvent *showEvent); virtual void hideEvent(QHideEvent *hideEvent); private: QSizeGrip(const QSizeGrip &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qsizepolicy.sip0000644000076500000240000000656513245233151021312 0ustar philstaff00000000000000// qsizepolicy.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSizePolicy { %TypeHeaderCode #include %End public: enum PolicyFlag { GrowFlag, ExpandFlag, ShrinkFlag, IgnoreFlag, }; enum Policy { Fixed, Minimum, Maximum, Preferred, MinimumExpanding, Expanding, Ignored, }; QSizePolicy(); QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type = QSizePolicy::DefaultType); QSizePolicy(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QSizePolicy(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End QSizePolicy::Policy horizontalPolicy() const; QSizePolicy::Policy verticalPolicy() const; void setHorizontalPolicy(QSizePolicy::Policy d); void setVerticalPolicy(QSizePolicy::Policy d); Qt::Orientations expandingDirections() const; void setHeightForWidth(bool b); bool hasHeightForWidth() const; bool operator==(const QSizePolicy &s) const; bool operator!=(const QSizePolicy &s) const; int horizontalStretch() const; int verticalStretch() const; void setHorizontalStretch(int stretchFactor); void setVerticalStretch(int stretchFactor); void transpose(); %If (Qt_5_9_0 -) QSizePolicy transposed() const; %End enum ControlType { DefaultType, ButtonBox, CheckBox, ComboBox, Frame, GroupBox, Label, Line, LineEdit, PushButton, RadioButton, Slider, SpinBox, TabWidget, ToolButton, }; typedef QFlags ControlTypes; QSizePolicy::ControlType controlType() const; void setControlType(QSizePolicy::ControlType type); void setWidthForHeight(bool b); bool hasWidthForHeight() const; %If (Qt_5_2_0 -) bool retainSizeWhenHidden() const; %End %If (Qt_5_2_0 -) void setRetainSizeWhenHidden(bool retainSize); %End %If (Qt_5_6_0 -) long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End }; QDataStream &operator<<(QDataStream &, const QSizePolicy & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QSizePolicy & /Constrained/) /ReleaseGIL/; QFlags operator|(QSizePolicy::ControlType f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qslider.sip0000644000076500000240000000364113245233151020372 0ustar philstaff00000000000000// qslider.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSlider : QAbstractSlider { %TypeHeaderCode #include %End public: enum TickPosition { NoTicks, TicksAbove, TicksLeft, TicksBelow, TicksRight, TicksBothSides, }; explicit QSlider(QWidget *parent /TransferThis/ = 0); QSlider(Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); virtual ~QSlider(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setTickPosition(QSlider::TickPosition position); QSlider::TickPosition tickPosition() const; void setTickInterval(int ti); int tickInterval() const; virtual bool event(QEvent *event); protected: void initStyleOption(QStyleOptionSlider *option) const; virtual void paintEvent(QPaintEvent *ev); virtual void mousePressEvent(QMouseEvent *ev); virtual void mouseReleaseEvent(QMouseEvent *ev); virtual void mouseMoveEvent(QMouseEvent *ev); private: QSlider(const QSlider &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qspinbox.sip0000644000076500000240000000622213245233151020570 0ustar philstaff00000000000000// qspinbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSpinBox : QAbstractSpinBox { %TypeHeaderCode #include %End public: explicit QSpinBox(QWidget *parent /TransferThis/ = 0); virtual ~QSpinBox(); int value() const; QString prefix() const; void setPrefix(const QString &p); QString suffix() const; void setSuffix(const QString &s); QString cleanText() const; int singleStep() const; void setSingleStep(int val); int minimum() const; void setMinimum(int min); int maximum() const; void setMaximum(int max); void setRange(int min, int max); protected: virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; virtual int valueFromText(const QString &text) const; virtual QString textFromValue(int v) const; virtual void fixup(QString &str /In,Out/) const; virtual bool event(QEvent *e); public slots: void setValue(int val); signals: void valueChanged(int); void valueChanged(const QString &); public: %If (Qt_5_2_0 -) int displayIntegerBase() const; %End %If (Qt_5_2_0 -) void setDisplayIntegerBase(int base); %End private: QSpinBox(const QSpinBox &); }; class QDoubleSpinBox : QAbstractSpinBox { %TypeHeaderCode #include %End public: explicit QDoubleSpinBox(QWidget *parent /TransferThis/ = 0); virtual ~QDoubleSpinBox(); double value() const; QString prefix() const; void setPrefix(const QString &p); QString suffix() const; void setSuffix(const QString &s); QString cleanText() const; double singleStep() const; void setSingleStep(double val); double minimum() const; void setMinimum(double min); double maximum() const; void setMaximum(double max); void setRange(double min, double max); int decimals() const; void setDecimals(int prec); virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; virtual double valueFromText(const QString &text) const; virtual QString textFromValue(double v) const; virtual void fixup(QString &str /In,Out/) const; public slots: void setValue(double val); signals: void valueChanged(double); void valueChanged(const QString &); private: QDoubleSpinBox(const QDoubleSpinBox &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qsplashscreen.sip0000644000076500000240000000353713245233151021606 0ustar philstaff00000000000000// qsplashscreen.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSplashScreen : QWidget { %TypeHeaderCode #include %End public: QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags flags = Qt::WindowFlags()); QSplashScreen(QWidget *parent /TransferThis/, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QSplashScreen(); void setPixmap(const QPixmap &pixmap); const QPixmap pixmap() const; void finish(QWidget *w); void repaint(); %If (Qt_5_2_0 -) QString message() const; %End public slots: void showMessage(const QString &message, int alignment = Qt::AlignLeft, const QColor &color = Qt::black); void clearMessage(); signals: void messageChanged(const QString &message); protected: virtual void drawContents(QPainter *painter); virtual bool event(QEvent *e); virtual void mousePressEvent(QMouseEvent *); private: QSplashScreen(const QSplashScreen &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qsplitter.sip0000644000076500000240000000673713245233151020767 0ustar philstaff00000000000000// qsplitter.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSplitter : QFrame { %TypeHeaderCode #include %End public: explicit QSplitter(QWidget *parent /TransferThis/ = 0); QSplitter(Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); virtual ~QSplitter(); void addWidget(QWidget *widget /Transfer/); void insertWidget(int index, QWidget *widget /Transfer/); void setOrientation(Qt::Orientation); Qt::Orientation orientation() const; void setChildrenCollapsible(bool); bool childrenCollapsible() const; void setCollapsible(int index, bool); bool isCollapsible(int index) const; void setOpaqueResize(bool opaque = true); bool opaqueResize() const; void refresh(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; QList sizes() const; void setSizes(const QList &list); QByteArray saveState() const; bool restoreState(const QByteArray &state); int handleWidth() const; void setHandleWidth(int); int indexOf(QWidget *w) const; QWidget *widget(int index) const; int count() const /__len__/; void getRange(int index, int *, int *) const; QSplitterHandle *handle(int index) const /Transfer/; void setStretchFactor(int index, int stretch); %If (Qt_5_9_0 -) QWidget *replaceWidget(int index, QWidget *widget /Transfer/) /TransferBack/; %End signals: void splitterMoved(int pos, int index); protected: virtual QSplitterHandle *createHandle() /Transfer/; virtual void childEvent(QChildEvent *); virtual bool event(QEvent *); virtual void resizeEvent(QResizeEvent *); virtual void changeEvent(QEvent *); void moveSplitter(int pos, int index); void setRubberBand(int position); int closestLegalPosition(int, int); private: QSplitter(const QSplitter &); }; class QSplitterHandle : QWidget { %TypeHeaderCode #include %End public: QSplitterHandle(Qt::Orientation o, QSplitter *parent /TransferThis/); virtual ~QSplitterHandle(); void setOrientation(Qt::Orientation o); Qt::Orientation orientation() const; bool opaqueResize() const; QSplitter *splitter() const; virtual QSize sizeHint() const; protected: virtual void paintEvent(QPaintEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual bool event(QEvent *); void moveSplitter(int p); int closestLegalPosition(int p); virtual void resizeEvent(QResizeEvent *); private: QSplitterHandle(const QSplitterHandle &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qstackedlayout.sip0000644000076500000240000000723013245233151021762 0ustar philstaff00000000000000// qstackedlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStackedLayout : QLayout { %TypeHeaderCode #include %End public: enum StackingMode { StackOne, StackAll, }; QStackedLayout(); explicit QStackedLayout(QWidget *parent /TransferThis/); explicit QStackedLayout(QLayout *parentLayout /TransferThis/); virtual ~QStackedLayout(); int addWidget(QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->addWidget(a0); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End int insertWidget(int index, QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->insertWidget(a0, a1); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a1Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows insertWidget(QWidget()). sipTransferTo(a1Wrapper, sipSelf); } %End QWidget *currentWidget() const; int currentIndex() const; QWidget *widget(int) const; virtual QWidget *widget(); virtual int count() const; virtual void addItem(QLayoutItem *item /Transfer/); virtual QSize sizeHint() const; virtual QSize minimumSize() const; virtual QLayoutItem *itemAt(int) const; virtual QLayoutItem *takeAt(int) /TransferBack/; virtual void setGeometry(const QRect &rect); signals: void widgetRemoved(int index); void currentChanged(int index); public slots: void setCurrentIndex(int index); void setCurrentWidget(QWidget *w); public: QStackedLayout::StackingMode stackingMode() const; void setStackingMode(QStackedLayout::StackingMode stackingMode); virtual bool hasHeightForWidth() const; virtual int heightForWidth(int width) const; private: QStackedLayout(const QStackedLayout &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qstackedwidget.sip0000644000076500000240000000325613245233151021734 0ustar philstaff00000000000000// qstackedwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStackedWidget : QFrame { %TypeHeaderCode #include %End public: explicit QStackedWidget(QWidget *parent /TransferThis/ = 0); virtual ~QStackedWidget(); int addWidget(QWidget *w /Transfer/); int insertWidget(int index, QWidget *w /Transfer/); void removeWidget(QWidget *w); QWidget *currentWidget() const; int currentIndex() const; int indexOf(QWidget *) const; QWidget *widget(int) const; int count() const /__len__/; public slots: void setCurrentIndex(int index); void setCurrentWidget(QWidget *w); signals: void currentChanged(int); void widgetRemoved(int index); protected: virtual bool event(QEvent *e); private: QStackedWidget(const QStackedWidget &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qstatusbar.sip0000644000076500000240000000372213245233151021120 0ustar philstaff00000000000000// qstatusbar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStatusBar : QWidget { %TypeHeaderCode #include %End public: explicit QStatusBar(QWidget *parent /TransferThis/ = 0); virtual ~QStatusBar(); void addWidget(QWidget *widget /Transfer/, int stretch = 0); void addPermanentWidget(QWidget *widget /Transfer/, int stretch = 0); void removeWidget(QWidget *widget); void setSizeGripEnabled(bool); bool isSizeGripEnabled() const; QString currentMessage() const; int insertWidget(int index, QWidget *widget /Transfer/, int stretch = 0); int insertPermanentWidget(int index, QWidget *widget /Transfer/, int stretch = 0); public slots: void showMessage(const QString &message, int msecs = 0); void clearMessage(); signals: void messageChanged(const QString &text); protected: virtual void paintEvent(QPaintEvent *); virtual void resizeEvent(QResizeEvent *); void reformat(); void hideOrShow(); virtual bool event(QEvent *); virtual void showEvent(QShowEvent *); private: QStatusBar(const QStatusBar &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qstyle.sip0000644000076500000240000005447213245233151020260 0ustar philstaff00000000000000// qstyle.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStyle : QObject { %TypeHeaderCode #include %End public: QStyle(); virtual ~QStyle(); virtual void polish(QWidget *); virtual void unpolish(QWidget *); virtual void polish(QApplication *); virtual void unpolish(QApplication *); virtual void polish(QPalette & /In,Out/); virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const; virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const; virtual void drawItemText(QPainter *painter, const QRect &rectangle, int alignment, const QPalette &palette, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; virtual void drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const; virtual QPalette standardPalette() const; enum StateFlag { State_None, State_Enabled, State_Raised, State_Sunken, State_Off, State_NoChange, State_On, State_DownArrow, State_Horizontal, State_HasFocus, State_Top, State_Bottom, State_FocusAtBorder, State_AutoRaise, State_MouseOver, State_UpArrow, State_Selected, State_Active, State_Open, State_Children, State_Item, State_Sibling, State_Editing, State_KeyboardFocusChange, State_ReadOnly, State_Window, State_Small, State_Mini, }; typedef QFlags State; enum PrimitiveElement { PE_Frame, PE_FrameDefaultButton, PE_FrameDockWidget, PE_FrameFocusRect, PE_FrameGroupBox, PE_FrameLineEdit, PE_FrameMenu, PE_FrameStatusBar, PE_FrameTabWidget, PE_FrameWindow, PE_FrameButtonBevel, PE_FrameButtonTool, PE_FrameTabBarBase, PE_PanelButtonCommand, PE_PanelButtonBevel, PE_PanelButtonTool, PE_PanelMenuBar, PE_PanelToolBar, PE_PanelLineEdit, PE_IndicatorArrowDown, PE_IndicatorArrowLeft, PE_IndicatorArrowRight, PE_IndicatorArrowUp, PE_IndicatorBranch, PE_IndicatorButtonDropDown, PE_IndicatorViewItemCheck, PE_IndicatorCheckBox, PE_IndicatorDockWidgetResizeHandle, PE_IndicatorHeaderArrow, PE_IndicatorMenuCheckMark, PE_IndicatorProgressChunk, PE_IndicatorRadioButton, PE_IndicatorSpinDown, PE_IndicatorSpinMinus, PE_IndicatorSpinPlus, PE_IndicatorSpinUp, PE_IndicatorToolBarHandle, PE_IndicatorToolBarSeparator, PE_PanelTipLabel, PE_IndicatorTabTear, PE_PanelScrollAreaCorner, PE_Widget, PE_IndicatorColumnViewArrow, PE_FrameStatusBarItem, PE_IndicatorItemViewItemCheck, PE_IndicatorItemViewItemDrop, PE_PanelItemViewItem, PE_PanelItemViewRow, PE_PanelStatusBar, PE_IndicatorTabClose, PE_PanelMenu, %If (Qt_5_7_0 -) PE_IndicatorTabTearLeft, %End %If (Qt_5_7_0 -) PE_IndicatorTabTearRight, %End PE_CustomBase, }; virtual void drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *widget = 0) const = 0; enum ControlElement { CE_PushButton, CE_PushButtonBevel, CE_PushButtonLabel, CE_CheckBox, CE_CheckBoxLabel, CE_RadioButton, CE_RadioButtonLabel, CE_TabBarTab, CE_TabBarTabShape, CE_TabBarTabLabel, CE_ProgressBar, CE_ProgressBarGroove, CE_ProgressBarContents, CE_ProgressBarLabel, CE_MenuItem, CE_MenuScroller, CE_MenuVMargin, CE_MenuHMargin, CE_MenuTearoff, CE_MenuEmptyArea, CE_MenuBarItem, CE_MenuBarEmptyArea, CE_ToolButtonLabel, CE_Header, CE_HeaderSection, CE_HeaderLabel, CE_ToolBoxTab, CE_SizeGrip, CE_Splitter, CE_RubberBand, CE_DockWidgetTitle, CE_ScrollBarAddLine, CE_ScrollBarSubLine, CE_ScrollBarAddPage, CE_ScrollBarSubPage, CE_ScrollBarSlider, CE_ScrollBarFirst, CE_ScrollBarLast, CE_FocusFrame, CE_ComboBoxLabel, CE_ToolBar, CE_ToolBoxTabShape, CE_ToolBoxTabLabel, CE_HeaderEmptyArea, CE_ColumnViewGrip, CE_ItemViewItem, CE_ShapedFrame, CE_CustomBase, }; virtual void drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *widget = 0) const = 0; enum SubElement { SE_PushButtonContents, SE_PushButtonFocusRect, SE_CheckBoxIndicator, SE_CheckBoxContents, SE_CheckBoxFocusRect, SE_CheckBoxClickRect, SE_RadioButtonIndicator, SE_RadioButtonContents, SE_RadioButtonFocusRect, SE_RadioButtonClickRect, SE_ComboBoxFocusRect, SE_SliderFocusRect, SE_ProgressBarGroove, SE_ProgressBarContents, SE_ProgressBarLabel, SE_ToolBoxTabContents, SE_HeaderLabel, SE_HeaderArrow, SE_TabWidgetTabBar, SE_TabWidgetTabPane, SE_TabWidgetTabContents, SE_TabWidgetLeftCorner, SE_TabWidgetRightCorner, SE_ViewItemCheckIndicator, SE_TabBarTearIndicator, SE_TreeViewDisclosureItem, SE_LineEditContents, SE_FrameContents, SE_DockWidgetCloseButton, SE_DockWidgetFloatButton, SE_DockWidgetTitleBarText, SE_DockWidgetIcon, SE_CheckBoxLayoutItem, SE_ComboBoxLayoutItem, SE_DateTimeEditLayoutItem, SE_DialogButtonBoxLayoutItem, SE_LabelLayoutItem, SE_ProgressBarLayoutItem, SE_PushButtonLayoutItem, SE_RadioButtonLayoutItem, SE_SliderLayoutItem, SE_SpinBoxLayoutItem, SE_ToolButtonLayoutItem, SE_FrameLayoutItem, SE_GroupBoxLayoutItem, SE_TabWidgetLayoutItem, SE_ItemViewItemCheckIndicator, SE_ItemViewItemDecoration, SE_ItemViewItemText, SE_ItemViewItemFocusRect, SE_TabBarTabLeftButton, SE_TabBarTabRightButton, SE_TabBarTabText, SE_ShapedFrameContents, SE_ToolBarHandle, %If (Qt_5_7_0 -) SE_TabBarTearIndicatorLeft, %End %If (Qt_5_7_0 -) SE_TabBarScrollLeftButton, %End %If (Qt_5_7_0 -) SE_TabBarScrollRightButton, %End %If (Qt_5_7_0 -) SE_TabBarTearIndicatorRight, %End SE_CustomBase, }; virtual QRect subElementRect(QStyle::SubElement subElement, const QStyleOption *option, const QWidget *widget = 0) const = 0; enum ComplexControl { CC_SpinBox, CC_ComboBox, CC_ScrollBar, CC_Slider, CC_ToolButton, CC_TitleBar, CC_Dial, CC_GroupBox, CC_MdiControls, CC_CustomBase, }; enum SubControl { SC_None, SC_ScrollBarAddLine, SC_ScrollBarSubLine, SC_ScrollBarAddPage, SC_ScrollBarSubPage, SC_ScrollBarFirst, SC_ScrollBarLast, SC_ScrollBarSlider, SC_ScrollBarGroove, SC_SpinBoxUp, SC_SpinBoxDown, SC_SpinBoxFrame, SC_SpinBoxEditField, SC_ComboBoxFrame, SC_ComboBoxEditField, SC_ComboBoxArrow, SC_ComboBoxListBoxPopup, SC_SliderGroove, SC_SliderHandle, SC_SliderTickmarks, SC_ToolButton, SC_ToolButtonMenu, SC_TitleBarSysMenu, SC_TitleBarMinButton, SC_TitleBarMaxButton, SC_TitleBarCloseButton, SC_TitleBarNormalButton, SC_TitleBarShadeButton, SC_TitleBarUnshadeButton, SC_TitleBarContextHelpButton, SC_TitleBarLabel, SC_DialGroove, SC_DialHandle, SC_DialTickmarks, SC_GroupBoxCheckBox, SC_GroupBoxLabel, SC_GroupBoxContents, SC_GroupBoxFrame, SC_MdiMinButton, SC_MdiNormalButton, SC_MdiCloseButton, SC_CustomBase, SC_All, }; typedef QFlags SubControls; virtual void drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget = 0) const = 0; virtual QStyle::SubControl hitTestComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget = 0) const = 0; virtual QRect subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget = 0) const = 0; enum PixelMetric { PM_ButtonMargin, PM_ButtonDefaultIndicator, PM_MenuButtonIndicator, PM_ButtonShiftHorizontal, PM_ButtonShiftVertical, PM_DefaultFrameWidth, PM_SpinBoxFrameWidth, PM_ComboBoxFrameWidth, PM_MaximumDragDistance, PM_ScrollBarExtent, PM_ScrollBarSliderMin, PM_SliderThickness, PM_SliderControlThickness, PM_SliderLength, PM_SliderTickmarkOffset, PM_SliderSpaceAvailable, PM_DockWidgetSeparatorExtent, PM_DockWidgetHandleExtent, PM_DockWidgetFrameWidth, PM_TabBarTabOverlap, PM_TabBarTabHSpace, PM_TabBarTabVSpace, PM_TabBarBaseHeight, PM_TabBarBaseOverlap, PM_ProgressBarChunkWidth, PM_SplitterWidth, PM_TitleBarHeight, PM_MenuScrollerHeight, PM_MenuHMargin, PM_MenuVMargin, PM_MenuPanelWidth, PM_MenuTearoffHeight, PM_MenuDesktopFrameWidth, PM_MenuBarPanelWidth, PM_MenuBarItemSpacing, PM_MenuBarVMargin, PM_MenuBarHMargin, PM_IndicatorWidth, PM_IndicatorHeight, PM_ExclusiveIndicatorWidth, PM_ExclusiveIndicatorHeight, PM_DialogButtonsSeparator, PM_DialogButtonsButtonWidth, PM_DialogButtonsButtonHeight, PM_MdiSubWindowFrameWidth, PM_MDIFrameWidth, PM_MdiSubWindowMinimizedWidth, PM_MDIMinimizedWidth, PM_HeaderMargin, PM_HeaderMarkSize, PM_HeaderGripMargin, PM_TabBarTabShiftHorizontal, PM_TabBarTabShiftVertical, PM_TabBarScrollButtonWidth, PM_ToolBarFrameWidth, PM_ToolBarHandleExtent, PM_ToolBarItemSpacing, PM_ToolBarItemMargin, PM_ToolBarSeparatorExtent, PM_ToolBarExtensionExtent, PM_SpinBoxSliderHeight, PM_DefaultTopLevelMargin, PM_DefaultChildMargin, PM_DefaultLayoutSpacing, PM_ToolBarIconSize, PM_ListViewIconSize, PM_IconViewIconSize, PM_SmallIconSize, PM_LargeIconSize, PM_FocusFrameVMargin, PM_FocusFrameHMargin, PM_ToolTipLabelFrameWidth, PM_CheckBoxLabelSpacing, PM_TabBarIconSize, PM_SizeGripSize, PM_DockWidgetTitleMargin, PM_MessageBoxIconSize, PM_ButtonIconSize, PM_DockWidgetTitleBarButtonMargin, PM_RadioButtonLabelSpacing, PM_LayoutLeftMargin, PM_LayoutTopMargin, PM_LayoutRightMargin, PM_LayoutBottomMargin, PM_LayoutHorizontalSpacing, PM_LayoutVerticalSpacing, PM_TabBar_ScrollButtonOverlap, PM_TextCursorWidth, PM_TabCloseIndicatorWidth, PM_TabCloseIndicatorHeight, PM_ScrollView_ScrollBarSpacing, PM_SubMenuOverlap, PM_ScrollView_ScrollBarOverlap, %If (Qt_5_4_0 -) PM_TreeViewIndentation, %End %If (Qt_5_5_0 -) PM_HeaderDefaultSectionSizeHorizontal, %End %If (Qt_5_5_0 -) PM_HeaderDefaultSectionSizeVertical, %End %If (Qt_5_8_0 -) PM_TitleBarButtonIconSize, %End %If (Qt_5_8_0 -) PM_TitleBarButtonSize, %End PM_CustomBase, }; virtual int pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const = 0; enum ContentsType { CT_PushButton, CT_CheckBox, CT_RadioButton, CT_ToolButton, CT_ComboBox, CT_Splitter, CT_ProgressBar, CT_MenuItem, CT_MenuBarItem, CT_MenuBar, CT_Menu, CT_TabBarTab, CT_Slider, CT_ScrollBar, CT_LineEdit, CT_SpinBox, CT_SizeGrip, CT_TabWidget, CT_DialogButtons, CT_HeaderSection, CT_GroupBox, CT_MdiControls, CT_ItemViewItem, CT_CustomBase, }; virtual QSize sizeFromContents(QStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget = 0) const = 0; enum StyleHint { SH_EtchDisabledText, SH_DitherDisabledText, SH_ScrollBar_MiddleClickAbsolutePosition, SH_ScrollBar_ScrollWhenPointerLeavesControl, SH_TabBar_SelectMouseType, SH_TabBar_Alignment, SH_Header_ArrowAlignment, SH_Slider_SnapToValue, SH_Slider_SloppyKeyEvents, SH_ProgressDialog_CenterCancelButton, SH_ProgressDialog_TextLabelAlignment, SH_PrintDialog_RightAlignButtons, SH_MainWindow_SpaceBelowMenuBar, SH_FontDialog_SelectAssociatedText, SH_Menu_AllowActiveAndDisabled, SH_Menu_SpaceActivatesItem, SH_Menu_SubMenuPopupDelay, SH_ScrollView_FrameOnlyAroundContents, SH_MenuBar_AltKeyNavigation, SH_ComboBox_ListMouseTracking, SH_Menu_MouseTracking, SH_MenuBar_MouseTracking, SH_ItemView_ChangeHighlightOnFocus, SH_Widget_ShareActivation, SH_Workspace_FillSpaceOnMaximize, SH_ComboBox_Popup, SH_TitleBar_NoBorder, SH_ScrollBar_StopMouseOverSlider, SH_BlinkCursorWhenTextSelected, SH_RichText_FullWidthSelection, SH_Menu_Scrollable, SH_GroupBox_TextLabelVerticalAlignment, SH_GroupBox_TextLabelColor, SH_Menu_SloppySubMenus, SH_Table_GridLineColor, SH_LineEdit_PasswordCharacter, SH_DialogButtons_DefaultButton, SH_ToolBox_SelectedPageTitleBold, SH_TabBar_PreferNoArrows, SH_ScrollBar_LeftClickAbsolutePosition, SH_UnderlineShortcut, SH_SpinBox_AnimateButton, SH_SpinBox_KeyPressAutoRepeatRate, SH_SpinBox_ClickAutoRepeatRate, SH_Menu_FillScreenWithScroll, SH_ToolTipLabel_Opacity, SH_DrawMenuBarSeparator, SH_TitleBar_ModifyNotification, SH_Button_FocusPolicy, SH_MessageBox_UseBorderForButtonSpacing, SH_TitleBar_AutoRaise, SH_ToolButton_PopupDelay, SH_FocusFrame_Mask, SH_RubberBand_Mask, SH_WindowFrame_Mask, SH_SpinControls_DisableOnBounds, SH_Dial_BackgroundRole, SH_ComboBox_LayoutDirection, SH_ItemView_EllipsisLocation, SH_ItemView_ShowDecorationSelected, SH_ItemView_ActivateItemOnSingleClick, SH_ScrollBar_ContextMenu, SH_ScrollBar_RollBetweenButtons, SH_Slider_StopMouseOverSlider, SH_Slider_AbsoluteSetButtons, SH_Slider_PageSetButtons, SH_Menu_KeyboardSearch, SH_TabBar_ElideMode, SH_DialogButtonLayout, SH_ComboBox_PopupFrameStyle, SH_MessageBox_TextInteractionFlags, SH_DialogButtonBox_ButtonsHaveIcons, SH_SpellCheckUnderlineStyle, SH_MessageBox_CenterButtons, SH_Menu_SelectionWrap, SH_ItemView_MovementWithoutUpdatingSelection, SH_ToolTip_Mask, SH_FocusFrame_AboveWidget, SH_TextControl_FocusIndicatorTextCharFormat, SH_WizardStyle, SH_ItemView_ArrowKeysNavigateIntoChildren, SH_Menu_Mask, SH_Menu_FlashTriggeredItem, SH_Menu_FadeOutOnHide, SH_SpinBox_ClickAutoRepeatThreshold, SH_ItemView_PaintAlternatingRowColorsForEmptyArea, SH_FormLayoutWrapPolicy, SH_TabWidget_DefaultTabPosition, SH_ToolBar_Movable, SH_FormLayoutFieldGrowthPolicy, SH_FormLayoutFormAlignment, SH_FormLayoutLabelAlignment, SH_ItemView_DrawDelegateFrame, SH_TabBar_CloseButtonPosition, SH_DockWidget_ButtonsHaveFrame, SH_ToolButtonStyle, SH_RequestSoftwareInputPanel, SH_ListViewExpand_SelectMouseType, SH_ScrollBar_Transient, %If (Qt_5_1_0 -) SH_Menu_SupportsSections, %End %If (Qt_5_2_0 -) SH_ToolTip_WakeUpDelay, %End %If (Qt_5_2_0 -) SH_ToolTip_FallAsleepDelay, %End %If (Qt_5_2_0 -) SH_Widget_Animate, %End %If (Qt_5_2_0 -) SH_Splitter_OpaqueResize, %End %If (Qt_5_4_0 -) SH_LineEdit_PasswordMaskDelay, %End %If (Qt_5_4_0 -) SH_TabBar_ChangeCurrentDelay, %End %If (Qt_5_5_0 -) SH_Menu_SubMenuUniDirection, %End %If (Qt_5_5_0 -) SH_Menu_SubMenuUniDirectionFailCount, %End %If (Qt_5_5_0 -) SH_Menu_SubMenuSloppySelectOtherActions, %End %If (Qt_5_5_0 -) SH_Menu_SubMenuSloppyCloseTimeout, %End %If (Qt_5_5_0 -) SH_Menu_SubMenuResetWhenReenteringParent, %End %If (Qt_5_5_0 -) SH_Menu_SubMenuDontStartSloppyOnLeave, %End %If (Qt_5_7_0 -) SH_ItemView_ScrollMode, %End %If (Qt_5_10_0 -) SH_TitleBar_ShowToolTipsOnButtons, %End %If (Qt_5_10_0 -) SH_Widget_Animation_Duration, %End SH_CustomBase, }; virtual int styleHint(QStyle::StyleHint stylehint, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const = 0; enum StandardPixmap { SP_TitleBarMenuButton, SP_TitleBarMinButton, SP_TitleBarMaxButton, SP_TitleBarCloseButton, SP_TitleBarNormalButton, SP_TitleBarShadeButton, SP_TitleBarUnshadeButton, SP_TitleBarContextHelpButton, SP_DockWidgetCloseButton, SP_MessageBoxInformation, SP_MessageBoxWarning, SP_MessageBoxCritical, SP_MessageBoxQuestion, SP_DesktopIcon, SP_TrashIcon, SP_ComputerIcon, SP_DriveFDIcon, SP_DriveHDIcon, SP_DriveCDIcon, SP_DriveDVDIcon, SP_DriveNetIcon, SP_DirOpenIcon, SP_DirClosedIcon, SP_DirLinkIcon, SP_FileIcon, SP_FileLinkIcon, SP_ToolBarHorizontalExtensionButton, SP_ToolBarVerticalExtensionButton, SP_FileDialogStart, SP_FileDialogEnd, SP_FileDialogToParent, SP_FileDialogNewFolder, SP_FileDialogDetailedView, SP_FileDialogInfoView, SP_FileDialogContentsView, SP_FileDialogListView, SP_FileDialogBack, SP_DirIcon, SP_DialogOkButton, SP_DialogCancelButton, SP_DialogHelpButton, SP_DialogOpenButton, SP_DialogSaveButton, SP_DialogCloseButton, SP_DialogApplyButton, SP_DialogResetButton, SP_DialogDiscardButton, SP_DialogYesButton, SP_DialogNoButton, SP_ArrowUp, SP_ArrowDown, SP_ArrowLeft, SP_ArrowRight, SP_ArrowBack, SP_ArrowForward, SP_DirHomeIcon, SP_CommandLink, SP_VistaShield, SP_BrowserReload, SP_BrowserStop, SP_MediaPlay, SP_MediaStop, SP_MediaPause, SP_MediaSkipForward, SP_MediaSkipBackward, SP_MediaSeekForward, SP_MediaSeekBackward, SP_MediaVolume, SP_MediaVolumeMuted, SP_DirLinkOpenIcon, %If (Qt_5_2_0 -) SP_LineEditClearButton, %End SP_CustomBase, }; virtual QPixmap standardPixmap(QStyle::StandardPixmap standardPixmap, const QStyleOption *option = 0, const QWidget *widget = 0) const = 0; virtual QIcon standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option = 0, const QWidget *widget = 0) const = 0; virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const = 0; static QRect visualRect(Qt::LayoutDirection direction, const QRect &boundingRect, const QRect &logicalRect); static QPoint visualPos(Qt::LayoutDirection direction, const QRect &boundingRect, const QPoint &logicalPos); static int sliderPositionFromValue(int min, int max, int logicalValue, int span, bool upsideDown = false); static int sliderValueFromPosition(int min, int max, int position, int span, bool upsideDown = false); static Qt::Alignment visualAlignment(Qt::LayoutDirection direction, Qt::Alignment alignment); static QRect alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment, const QSize &size, const QRect &rectangle); virtual int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option = 0, const QWidget *widget = 0) const = 0; int combinedLayoutSpacing(QSizePolicy::ControlTypes controls1, QSizePolicy::ControlTypes controls2, Qt::Orientation orientation, QStyleOption *option = 0, QWidget *widget = 0) const; enum RequestSoftwareInputPanel { RSIP_OnMouseClickAndAlreadyFocused, RSIP_OnMouseClick, }; const QStyle *proxy() const; private: QStyle(const QStyle &); }; QFlags operator|(QStyle::StateFlag f1, QFlags f2); QFlags operator|(QStyle::SubControl f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qstyleditemdelegate.sip0000644000076500000240000000467213245233151022773 0ustar philstaff00000000000000// qstyleditemdelegate.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStyledItemDelegate : QAbstractItemDelegate { %TypeHeaderCode #include %End public: explicit QStyledItemDelegate(QObject *parent /TransferThis/ = 0); virtual ~QStyledItemDelegate(); virtual void paint(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; virtual QSize sizeHint(const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; virtual QWidget *createEditor(QWidget *parent /TransferThis/, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const /Factory/; virtual void setEditorData(QWidget *editor, const QModelIndex &index) const; virtual void setModelData(QWidget *editor, QAbstractItemModel *model /KeepReference/, const QModelIndex &index) const; virtual void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; QItemEditorFactory *itemEditorFactory() const; void setItemEditorFactory(QItemEditorFactory *factory /KeepReference/); virtual QString displayText(const QVariant &value, const QLocale &locale) const; protected: virtual void initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const; virtual bool eventFilter(QObject *object, QEvent *event); virtual bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index); private: QStyledItemDelegate(const QStyledItemDelegate &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qstylefactory.sip0000644000076500000240000000214213245233151021633 0ustar philstaff00000000000000// qstylefactory.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStyleFactory { %TypeHeaderCode #include %End public: static QStringList keys(); static QStyle *create(const QString &) /Factory/; }; PyQt5_gpl-5.10.1/sip/QtWidgets/qstyleoption.sip0000644000076500000240000004767013245233151021513 0ustar philstaff00000000000000// qstyleoption.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStyleOption { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type) { case QStyleOption::SO_Button: sipType = sipType_QStyleOptionButton; break; case QStyleOption::SO_ComboBox: sipType = sipType_QStyleOptionComboBox; break; case QStyleOption::SO_DockWidget: sipType = sipType_QStyleOptionDockWidget; break; case QStyleOption::SO_FocusRect: sipType = sipType_QStyleOptionFocusRect; break; case QStyleOption::SO_Frame: sipType = sipType_QStyleOptionFrame; break; case QStyleOption::SO_GraphicsItem: sipType = sipType_QStyleOptionGraphicsItem; break; case QStyleOption::SO_GroupBox: sipType = sipType_QStyleOptionGroupBox; break; case QStyleOption::SO_Header: sipType = sipType_QStyleOptionHeader; break; case QStyleOption::SO_MenuItem: sipType = sipType_QStyleOptionMenuItem; break; case QStyleOption::SO_ProgressBar: sipType = sipType_QStyleOptionProgressBar; break; case QStyleOption::SO_RubberBand: sipType = sipType_QStyleOptionRubberBand; break; case QStyleOption::SO_SizeGrip: sipType = sipType_QStyleOptionSizeGrip; break; case QStyleOption::SO_Slider: sipType = sipType_QStyleOptionSlider; break; case QStyleOption::SO_SpinBox: sipType = sipType_QStyleOptionSpinBox; break; case QStyleOption::SO_Tab: sipType = sipType_QStyleOptionTab; break; case QStyleOption::SO_TabBarBase: sipType = sipType_QStyleOptionTabBarBase; break; case QStyleOption::SO_TabWidgetFrame: sipType = sipType_QStyleOptionTabWidgetFrame; break; case QStyleOption::SO_TitleBar: sipType = sipType_QStyleOptionTitleBar; break; case QStyleOption::SO_ToolBar: sipType = sipType_QStyleOptionToolBar; break; case QStyleOption::SO_ToolBox: sipType = sipType_QStyleOptionToolBox; break; case QStyleOption::SO_ToolButton: sipType = sipType_QStyleOptionToolButton; break; case QStyleOption::SO_ViewItem: sipType = sipType_QStyleOptionViewItem; break; default: if ((sipCpp->type & QStyleOption::SO_ComplexCustomBase) == QStyleOption::SO_ComplexCustomBase) sipType = sipType_QStyleOptionComplex; else sipType = 0; } %End public: enum OptionType { SO_Default, SO_FocusRect, SO_Button, SO_Tab, SO_MenuItem, SO_Frame, SO_ProgressBar, SO_ToolBox, SO_Header, SO_DockWidget, SO_ViewItem, SO_TabWidgetFrame, SO_TabBarBase, SO_RubberBand, SO_ToolBar, SO_Complex, SO_Slider, SO_SpinBox, SO_ToolButton, SO_ComboBox, SO_TitleBar, SO_GroupBox, SO_ComplexCustomBase, SO_GraphicsItem, SO_SizeGrip, SO_CustomBase, }; enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; int version; int type; QStyle::State state; Qt::LayoutDirection direction; QRect rect; QFontMetrics fontMetrics; QPalette palette; QObject *styleObject; QStyleOption(int version = QStyleOption::Version, int type = SO_Default); QStyleOption(const QStyleOption &other); ~QStyleOption(); void initFrom(const QWidget *w); }; class QStyleOptionFocusRect : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QColor backgroundColor; QStyleOptionFocusRect(); QStyleOptionFocusRect(const QStyleOptionFocusRect &other); }; class QStyleOptionFrame : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum FrameFeature { None /PyName=None_/, Flat, Rounded, }; typedef QFlags FrameFeatures; QStyleOptionFrame::FrameFeatures features; QFrame::Shape frameShape; int lineWidth; int midLineWidth; QStyleOptionFrame(); QStyleOptionFrame(const QStyleOptionFrame &other); }; QFlags operator|(QStyleOptionFrame::FrameFeature f1, QFlags f2); class QStyleOptionTabWidgetFrame : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; int lineWidth; int midLineWidth; QTabBar::Shape shape; QSize tabBarSize; QSize rightCornerWidgetSize; QSize leftCornerWidgetSize; QRect tabBarRect; QRect selectedTabRect; QStyleOptionTabWidgetFrame(); QStyleOptionTabWidgetFrame(const QStyleOptionTabWidgetFrame &other); }; class QStyleOptionTabBarBase : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QTabBar::Shape shape; QRect tabBarRect; QRect selectedTabRect; bool documentMode; QStyleOptionTabBarBase(); QStyleOptionTabBarBase(const QStyleOptionTabBarBase &other); }; class QStyleOptionHeader : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum SectionPosition { Beginning, Middle, End, OnlyOneSection, }; enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected, NextAndPreviousAreSelected, }; enum SortIndicator { None /PyName=None_/, SortUp, SortDown, }; int section; QString text; Qt::Alignment textAlignment; QIcon icon; Qt::Alignment iconAlignment; QStyleOptionHeader::SectionPosition position; QStyleOptionHeader::SelectedPosition selectedPosition; QStyleOptionHeader::SortIndicator sortIndicator; Qt::Orientation orientation; QStyleOptionHeader(); QStyleOptionHeader(const QStyleOptionHeader &other); }; class QStyleOptionButton : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum ButtonFeature { None /PyName=None_/, Flat, HasMenu, DefaultButton, AutoDefaultButton, CommandLinkButton, }; typedef QFlags ButtonFeatures; QStyleOptionButton::ButtonFeatures features; QString text; QIcon icon; QSize iconSize; QStyleOptionButton(); QStyleOptionButton(const QStyleOptionButton &other); }; QFlags operator|(QStyleOptionButton::ButtonFeature f1, QFlags f2); class QStyleOptionTab : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum TabPosition { Beginning, Middle, End, OnlyOneTab, }; enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected, }; enum CornerWidget { NoCornerWidgets, LeftCornerWidget, RightCornerWidget, }; typedef QFlags CornerWidgets; QTabBar::Shape shape; QString text; QIcon icon; int row; QStyleOptionTab::TabPosition position; QStyleOptionTab::SelectedPosition selectedPosition; QStyleOptionTab::CornerWidgets cornerWidgets; QSize iconSize; bool documentMode; QSize leftButtonSize; QSize rightButtonSize; enum TabFeature { None /PyName=None_/, HasFrame, }; typedef QFlags TabFeatures; QStyleOptionTab::TabFeatures features; QStyleOptionTab(); QStyleOptionTab(const QStyleOptionTab &other); }; QFlags operator|(QStyleOptionTab::CornerWidget f1, QFlags f2); class QStyleOptionProgressBar : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; int minimum; int maximum; int progress; QString text; Qt::Alignment textAlignment; bool textVisible; Qt::Orientation orientation; bool invertedAppearance; bool bottomToTop; QStyleOptionProgressBar(); QStyleOptionProgressBar(const QStyleOptionProgressBar &other); }; class QStyleOptionMenuItem : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum MenuItemType { Normal, DefaultItem, Separator, SubMenu, Scroller, TearOff, Margin, EmptyArea, }; enum CheckType { NotCheckable, Exclusive, NonExclusive, }; QStyleOptionMenuItem::MenuItemType menuItemType; QStyleOptionMenuItem::CheckType checkType; bool checked; bool menuHasCheckableItems; QRect menuRect; QString text; QIcon icon; int maxIconWidth; int tabWidth; QFont font; QStyleOptionMenuItem(); QStyleOptionMenuItem(const QStyleOptionMenuItem &other); }; class QStyleOptionDockWidget : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QString title; bool closable; bool movable; bool floatable; bool verticalTitleBar; QStyleOptionDockWidget(); QStyleOptionDockWidget(const QStyleOptionDockWidget &other); }; class QStyleOptionViewItem : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum Position { Left, Right, Top, Bottom, }; Qt::Alignment displayAlignment; Qt::Alignment decorationAlignment; Qt::TextElideMode textElideMode; QStyleOptionViewItem::Position decorationPosition; QSize decorationSize; QFont font; bool showDecorationSelected; enum ViewItemFeature { None /PyName=None_/, WrapText, Alternate, HasCheckIndicator, HasDisplay, HasDecoration, }; typedef QFlags ViewItemFeatures; QStyleOptionViewItem::ViewItemFeatures features; QLocale locale; const QWidget *widget; enum ViewItemPosition { Invalid, Beginning, Middle, End, OnlyOne, }; QModelIndex index; Qt::CheckState checkState; QIcon icon; QString text; QStyleOptionViewItem::ViewItemPosition viewItemPosition; QBrush backgroundBrush; QStyleOptionViewItem(); QStyleOptionViewItem(const QStyleOptionViewItem &other); }; QFlags operator|(QStyleOptionViewItem::ViewItemFeature f1, QFlags f2); class QStyleOptionToolBox : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QString text; QIcon icon; enum TabPosition { Beginning, Middle, End, OnlyOneTab, }; enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected, }; QStyleOptionToolBox::TabPosition position; QStyleOptionToolBox::SelectedPosition selectedPosition; QStyleOptionToolBox(); QStyleOptionToolBox(const QStyleOptionToolBox &other); }; class QStyleOptionRubberBand : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QRubberBand::Shape shape; bool opaque; QStyleOptionRubberBand(); QStyleOptionRubberBand(const QStyleOptionRubberBand &other); }; class QStyleOptionComplex : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QStyle::SubControls subControls; QStyle::SubControls activeSubControls; QStyleOptionComplex(int version = QStyleOptionComplex::Version, int type = SO_Complex); QStyleOptionComplex(const QStyleOptionComplex &other); }; class QStyleOptionSlider : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; Qt::Orientation orientation; int minimum; int maximum; QSlider::TickPosition tickPosition; int tickInterval; bool upsideDown; int sliderPosition; int sliderValue; int singleStep; int pageStep; qreal notchTarget; bool dialWrapping; QStyleOptionSlider(); QStyleOptionSlider(const QStyleOptionSlider &other); }; class QStyleOptionSpinBox : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QAbstractSpinBox::ButtonSymbols buttonSymbols; QAbstractSpinBox::StepEnabled stepEnabled; bool frame; QStyleOptionSpinBox(); QStyleOptionSpinBox(const QStyleOptionSpinBox &other); }; class QStyleOptionToolButton : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum ToolButtonFeature { None /PyName=None_/, Arrow, Menu, PopupDelay, MenuButtonPopup, HasMenu, }; typedef QFlags ToolButtonFeatures; QStyleOptionToolButton::ToolButtonFeatures features; QIcon icon; QSize iconSize; QString text; Qt::ArrowType arrowType; Qt::ToolButtonStyle toolButtonStyle; QPoint pos; QFont font; QStyleOptionToolButton(); QStyleOptionToolButton(const QStyleOptionToolButton &other); }; QFlags operator|(QStyleOptionToolButton::ToolButtonFeature f1, QFlags f2); class QStyleOptionComboBox : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; bool editable; QRect popupRect; bool frame; QString currentText; QIcon currentIcon; QSize iconSize; QStyleOptionComboBox(); QStyleOptionComboBox(const QStyleOptionComboBox &other); }; class QStyleOptionTitleBar : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QString text; QIcon icon; int titleBarState; Qt::WindowFlags titleBarFlags; QStyleOptionTitleBar(); QStyleOptionTitleBar(const QStyleOptionTitleBar &other); }; class QStyleHintReturn { %TypeHeaderCode #include %End public: enum HintReturnType { SH_Default, SH_Mask, SH_Variant, }; enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QStyleHintReturn(int version = QStyleOption::Version, int type = SH_Default); ~QStyleHintReturn(); int version; int type; }; class QStyleHintReturnMask : QStyleHintReturn { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QStyleHintReturnMask(); ~QStyleHintReturnMask(); QRegion region; }; class QStyleOptionToolBar : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum ToolBarPosition { Beginning, Middle, End, OnlyOne, }; enum ToolBarFeature { None /PyName=None_/, Movable, }; typedef QFlags ToolBarFeatures; QStyleOptionToolBar::ToolBarPosition positionOfLine; QStyleOptionToolBar::ToolBarPosition positionWithinLine; Qt::ToolBarArea toolBarArea; QStyleOptionToolBar::ToolBarFeatures features; int lineWidth; int midLineWidth; QStyleOptionToolBar(); QStyleOptionToolBar(const QStyleOptionToolBar &other); }; QFlags operator|(QStyleOptionToolBar::ToolBarFeature f1, QFlags f2); class QStyleOptionGroupBox : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QStyleOptionFrame::FrameFeatures features; QString text; Qt::Alignment textAlignment; QColor textColor; int lineWidth; int midLineWidth; QStyleOptionGroupBox(); QStyleOptionGroupBox(const QStyleOptionGroupBox &other); }; class QStyleOptionSizeGrip : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; Qt::Corner corner; QStyleOptionSizeGrip(); QStyleOptionSizeGrip(const QStyleOptionSizeGrip &other); }; class QStyleOptionGraphicsItem : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QRectF exposedRect; static qreal levelOfDetailFromTransform(const QTransform &worldTransform); QStyleOptionGraphicsItem(); QStyleOptionGraphicsItem(const QStyleOptionGraphicsItem &other); }; class QStyleHintReturnVariant : QStyleHintReturn { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QStyleHintReturnVariant(); ~QStyleHintReturnVariant(); QVariant variant; }; PyQt5_gpl-5.10.1/sip/QtWidgets/qstylepainter.sip0000644000076500000240000000337013245233151021632 0ustar philstaff00000000000000// qstylepainter.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStylePainter : QPainter { %TypeHeaderCode #include %End public: QStylePainter(); explicit QStylePainter(QWidget *w); QStylePainter(QPaintDevice *pd, QWidget *w); bool begin(QWidget *w); bool begin(QPaintDevice *pd, QWidget *w); QStyle *style() const; void drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption &opt); void drawControl(QStyle::ControlElement ce, const QStyleOption &opt); void drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex &opt); void drawItemText(const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole); void drawItemPixmap(const QRect &r, int flags, const QPixmap &pixmap); private: QStylePainter(const QStylePainter &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qsystemtrayicon.sip0000644000076500000240000000453313245233151022206 0ustar philstaff00000000000000// qsystemtrayicon.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSystemTrayIcon : QObject { %TypeHeaderCode #include %End public: enum ActivationReason { Unknown, Context, DoubleClick, Trigger, MiddleClick, }; enum MessageIcon { NoIcon, Information, Warning, Critical, }; QSystemTrayIcon(QObject *parent /TransferThis/ = 0); QSystemTrayIcon(const QIcon &icon, QObject *parent /TransferThis/ = 0); virtual ~QSystemTrayIcon(); void setContextMenu(QMenu *menu /KeepReference/); QMenu *contextMenu() const; QRect geometry() const; QIcon icon() const; void setIcon(const QIcon &icon); QString toolTip() const; void setToolTip(const QString &tip); static bool isSystemTrayAvailable(); static bool supportsMessages(); public slots: void showMessage(const QString &title, const QString &msg, QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information, int msecs = 10000); %If (Qt_5_9_0 -) void showMessage(const QString &title, const QString &msg, const QIcon &icon, int msecs = 10000); %End public: bool isVisible() const; public slots: void hide(); void setVisible(bool visible); void show(); signals: void activated(QSystemTrayIcon::ActivationReason reason); void messageClicked(); protected: virtual bool event(QEvent *event); private: QSystemTrayIcon(const QSystemTrayIcon &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qtabbar.sip0000644000076500000240000001233113245233151020337 0ustar philstaff00000000000000// qtabbar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTabBar : QWidget { %TypeHeaderCode #include %End public: explicit QTabBar(QWidget *parent /TransferThis/ = 0); virtual ~QTabBar(); enum Shape { RoundedNorth, RoundedSouth, RoundedWest, RoundedEast, TriangularNorth, TriangularSouth, TriangularWest, TriangularEast, }; QTabBar::Shape shape() const; void setShape(QTabBar::Shape shape); int addTab(const QString &text); int addTab(const QIcon &icon, const QString &text); int insertTab(int index, const QString &text); int insertTab(int index, const QIcon &icon, const QString &text); void removeTab(int index); bool isTabEnabled(int index) const; void setTabEnabled(int index, bool); QString tabText(int index) const; void setTabText(int index, const QString &text); QColor tabTextColor(int index) const; void setTabTextColor(int index, const QColor &color); QIcon tabIcon(int index) const; void setTabIcon(int index, const QIcon &icon); void setTabToolTip(int index, const QString &tip); QString tabToolTip(int index) const; void setTabWhatsThis(int index, const QString &text); QString tabWhatsThis(int index) const; void setTabData(int index, const QVariant &data); QVariant tabData(int index) const; int tabAt(const QPoint &pos) const; QRect tabRect(int index) const; int currentIndex() const; int count() const /__len__/; virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setDrawBase(bool drawTheBase); bool drawBase() const; QSize iconSize() const; void setIconSize(const QSize &size); Qt::TextElideMode elideMode() const; void setElideMode(Qt::TextElideMode); void setUsesScrollButtons(bool useButtons); bool usesScrollButtons() const; public slots: void setCurrentIndex(int index); signals: void currentChanged(int index); protected: void initStyleOption(QStyleOptionTab *option, int tabIndex) const; virtual QSize tabSizeHint(int index) const; virtual void tabInserted(int index); virtual void tabRemoved(int index); virtual void tabLayoutChange(); virtual bool event(QEvent *); virtual void resizeEvent(QResizeEvent *); virtual void showEvent(QShowEvent *); virtual void paintEvent(QPaintEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void changeEvent(QEvent *); public: enum ButtonPosition { LeftSide, RightSide, }; enum SelectionBehavior { SelectLeftTab, SelectRightTab, SelectPreviousTab, }; void moveTab(int from, int to); bool tabsClosable() const; void setTabsClosable(bool closable); void setTabButton(int index, QTabBar::ButtonPosition position, QWidget *widget /Transfer/); QWidget *tabButton(int index, QTabBar::ButtonPosition position) const; QTabBar::SelectionBehavior selectionBehaviorOnRemove() const; void setSelectionBehaviorOnRemove(QTabBar::SelectionBehavior behavior); bool expanding() const; void setExpanding(bool enabled); bool isMovable() const; void setMovable(bool movable); bool documentMode() const; void setDocumentMode(bool set); signals: void tabCloseRequested(int index); void tabMoved(int from, int to); protected: virtual void hideEvent(QHideEvent *); virtual void wheelEvent(QWheelEvent *event); virtual QSize minimumTabSizeHint(int index) const; signals: %If (Qt_5_2_0 -) void tabBarClicked(int index); %End %If (Qt_5_2_0 -) void tabBarDoubleClicked(int index); %End public: %If (Qt_5_4_0 -) bool autoHide() const; %End %If (Qt_5_4_0 -) void setAutoHide(bool hide); %End %If (Qt_5_4_0 -) bool changeCurrentOnDrag() const; %End %If (Qt_5_4_0 -) void setChangeCurrentOnDrag(bool change); %End protected: %If (Qt_5_4_0 -) virtual void timerEvent(QTimerEvent *event); %End public: %If (Qt_5_8_0 -) %If (PyQt_Accessibility) QString accessibleTabName(int index) const; %End %End %If (Qt_5_8_0 -) %If (PyQt_Accessibility) void setAccessibleTabName(int index, const QString &name); %End %End private: QTabBar(const QTabBar &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qtableview.sip0000644000076500000240000001142613245233151021072 0ustar philstaff00000000000000// qtableview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTableView : QAbstractItemView { %TypeHeaderCode #include %End public: explicit QTableView(QWidget *parent /TransferThis/ = 0); virtual ~QTableView(); virtual void setModel(QAbstractItemModel *model /KeepReference/); virtual void setRootIndex(const QModelIndex &index); virtual void setSelectionModel(QItemSelectionModel *selectionModel /KeepReference/); QHeaderView *horizontalHeader() const; QHeaderView *verticalHeader() const; void setHorizontalHeader(QHeaderView *header /Transfer/); void setVerticalHeader(QHeaderView *header /Transfer/); int rowViewportPosition(int row) const; void setRowHeight(int row, int height); int rowHeight(int row) const; int rowAt(int y) const; int columnViewportPosition(int column) const; void setColumnWidth(int column, int width); int columnWidth(int column) const; int columnAt(int x) const; bool isRowHidden(int row) const; void setRowHidden(int row, bool hide); bool isColumnHidden(int column) const; void setColumnHidden(int column, bool hide); bool showGrid() const; void setShowGrid(bool show); Qt::PenStyle gridStyle() const; void setGridStyle(Qt::PenStyle style); virtual QRect visualRect(const QModelIndex &index) const; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); virtual QModelIndex indexAt(const QPoint &p) const; public slots: void selectRow(int row); void selectColumn(int column); void hideRow(int row); void hideColumn(int column); void showRow(int row); void showColumn(int column); void resizeRowToContents(int row); void resizeRowsToContents(); void resizeColumnToContents(int column); void resizeColumnsToContents(); protected slots: void rowMoved(int row, int oldIndex, int newIndex); void columnMoved(int column, int oldIndex, int newIndex); void rowResized(int row, int oldHeight, int newHeight); void columnResized(int column, int oldWidth, int newWidth); void rowCountChanged(int oldCount, int newCount); void columnCountChanged(int oldCount, int newCount); protected: virtual void scrollContentsBy(int dx, int dy); virtual QStyleOptionViewItem viewOptions() const; virtual void paintEvent(QPaintEvent *e); virtual void timerEvent(QTimerEvent *event); virtual int horizontalOffset() const; virtual int verticalOffset() const; virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers); virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command); virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; virtual QModelIndexList selectedIndexes() const; virtual void updateGeometries(); virtual int sizeHintForRow(int row) const; virtual int sizeHintForColumn(int column) const; virtual void verticalScrollbarAction(int action); virtual void horizontalScrollbarAction(int action); virtual bool isIndexHidden(const QModelIndex &index) const; %If (Qt_5_2_0 -) virtual QSize viewportSizeHint() const; %End public: void setSortingEnabled(bool enable); bool isSortingEnabled() const; void setSpan(int row, int column, int rowSpan, int columnSpan); int rowSpan(int row, int column) const; int columnSpan(int row, int column) const; void sortByColumn(int column, Qt::SortOrder order); void setWordWrap(bool on); bool wordWrap() const; void setCornerButtonEnabled(bool enable); bool isCornerButtonEnabled() const; void clearSpans(); protected: virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); private: QTableView(const QTableView &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qtablewidget.sip0000644000076500000240000002146713245233151021411 0ustar philstaff00000000000000// qtablewidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTableWidgetSelectionRange { %TypeHeaderCode #include %End public: QTableWidgetSelectionRange(); QTableWidgetSelectionRange(int top, int left, int bottom, int right); QTableWidgetSelectionRange(const QTableWidgetSelectionRange &other); ~QTableWidgetSelectionRange(); int topRow() const; int bottomRow() const; int leftColumn() const; int rightColumn() const; int rowCount() const; int columnCount() const; }; class QTableWidgetItem /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum ItemType { Type, UserType, }; explicit QTableWidgetItem(int type = Type); QTableWidgetItem(const QString &text, int type = Type); QTableWidgetItem(const QIcon &icon, const QString &text, int type = Type); QTableWidgetItem(const QTableWidgetItem &other); virtual ~QTableWidgetItem(); virtual QTableWidgetItem *clone() const /Factory/; QTableWidget *tableWidget() const; Qt::ItemFlags flags() const; QString text() const; QIcon icon() const; QString statusTip() const; QString toolTip() const; QString whatsThis() const; QFont font() const; int textAlignment() const; void setTextAlignment(int alignment); Qt::CheckState checkState() const; void setCheckState(Qt::CheckState state); virtual QVariant data(int role) const; virtual void setData(int role, const QVariant &value); virtual bool operator<(const QTableWidgetItem &other /NoCopy/) const; virtual void read(QDataStream &in) /ReleaseGIL/; virtual void write(QDataStream &out) const /ReleaseGIL/; int type() const; void setFlags(Qt::ItemFlags aflags); void setText(const QString &atext); void setIcon(const QIcon &aicon); void setStatusTip(const QString &astatusTip); void setToolTip(const QString &atoolTip); void setWhatsThis(const QString &awhatsThis); void setFont(const QFont &afont); QSize sizeHint() const; void setSizeHint(const QSize &size); QBrush background() const; void setBackground(const QBrush &brush); QBrush foreground() const; void setForeground(const QBrush &brush); int row() const; int column() const; void setSelected(bool aselect); bool isSelected() const; private: QTableWidgetItem &operator=(const QTableWidgetItem &); }; QDataStream &operator>>(QDataStream &in, QTableWidgetItem &item /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &out, const QTableWidgetItem &item /Constrained/) /ReleaseGIL/; class QTableWidget : QTableView { %TypeHeaderCode #include %End public: explicit QTableWidget(QWidget *parent /TransferThis/ = 0); QTableWidget(int rows, int columns, QWidget *parent /TransferThis/ = 0); virtual ~QTableWidget(); void setRowCount(int rows); int rowCount() const; void setColumnCount(int columns); int columnCount() const; int row(const QTableWidgetItem *item) const; int column(const QTableWidgetItem *item) const; QTableWidgetItem *item(int row, int column) const; void setItem(int row, int column, QTableWidgetItem *item /Transfer/); QTableWidgetItem *takeItem(int row, int column) /TransferBack/; QTableWidgetItem *verticalHeaderItem(int row) const; void setVerticalHeaderItem(int row, QTableWidgetItem *item /Transfer/); QTableWidgetItem *takeVerticalHeaderItem(int row) /TransferBack/; QTableWidgetItem *horizontalHeaderItem(int column) const; void setHorizontalHeaderItem(int column, QTableWidgetItem *item /Transfer/); QTableWidgetItem *takeHorizontalHeaderItem(int column) /TransferBack/; void setVerticalHeaderLabels(const QStringList &labels); void setHorizontalHeaderLabels(const QStringList &labels); int currentRow() const; int currentColumn() const; QTableWidgetItem *currentItem() const; void setCurrentItem(QTableWidgetItem *item); void setCurrentItem(QTableWidgetItem *item, QItemSelectionModel::SelectionFlags command); void setCurrentCell(int row, int column); void setCurrentCell(int row, int column, QItemSelectionModel::SelectionFlags command); void sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder); void setSortingEnabled(bool enable); bool isSortingEnabled() const; void editItem(QTableWidgetItem *item); void openPersistentEditor(QTableWidgetItem *item); void closePersistentEditor(QTableWidgetItem *item); QWidget *cellWidget(int row, int column) const; void setCellWidget(int row, int column, QWidget *widget /Transfer/); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->cellWidget(a0, a1); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->setCellWidget(a0, a1, a2); Py_END_ALLOW_THREADS %End void removeCellWidget(int arow, int acolumn); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->cellWidget(a0, a1); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->removeCellWidget(a0, a1); Py_END_ALLOW_THREADS %End void setRangeSelected(const QTableWidgetSelectionRange &range, bool select); QList selectedRanges() const; QList selectedItems() const; QList findItems(const QString &text, Qt::MatchFlags flags) const; int visualRow(int logicalRow) const; int visualColumn(int logicalColumn) const; QTableWidgetItem *itemAt(const QPoint &p) const; QTableWidgetItem *itemAt(int ax, int ay) const; QRect visualItemRect(const QTableWidgetItem *item) const; const QTableWidgetItem *itemPrototype() const; void setItemPrototype(const QTableWidgetItem *item /Transfer/); public slots: void scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); void insertRow(int row); void insertColumn(int column); void removeRow(int row); void removeColumn(int column); void clear(); void clearContents(); signals: void itemPressed(QTableWidgetItem *item); void itemClicked(QTableWidgetItem *item); void itemDoubleClicked(QTableWidgetItem *item); void itemActivated(QTableWidgetItem *item); void itemEntered(QTableWidgetItem *item); void itemChanged(QTableWidgetItem *item); void currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous); void itemSelectionChanged(); void cellPressed(int row, int column); void cellClicked(int row, int column); void cellDoubleClicked(int row, int column); void cellActivated(int row, int column); void cellEntered(int row, int column); void cellChanged(int row, int column); void currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); protected: virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QList items) const /TransferBack/; virtual bool dropMimeData(int row, int column, const QMimeData *data, Qt::DropAction action); virtual Qt::DropActions supportedDropActions() const; QList items(const QMimeData *data) const; QModelIndex indexFromItem(QTableWidgetItem *item) const; QTableWidgetItem *itemFromIndex(const QModelIndex &index) const; virtual bool event(QEvent *e); virtual void dropEvent(QDropEvent *event); public: %If (Qt_5_10_0 -) bool isPersistentEditorOpen(QTableWidgetItem *item) const; %End private: virtual void setModel(QAbstractItemModel *model /KeepReference/); QTableWidget(const QTableWidget &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qtabwidget.sip0000644000076500000240000001025713245233151021063 0ustar philstaff00000000000000// qtabwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTabWidget : QWidget { %TypeHeaderCode #include %End public: explicit QTabWidget(QWidget *parent /TransferThis/ = 0); virtual ~QTabWidget(); void clear(); int addTab(QWidget *widget /Transfer/, const QString &); int addTab(QWidget *widget /Transfer/, const QIcon &icon, const QString &label); int insertTab(int index, QWidget *widget /Transfer/, const QString &); int insertTab(int index, QWidget *widget /Transfer/, const QIcon &icon, const QString &label); void removeTab(int index); bool isTabEnabled(int index) const; void setTabEnabled(int index, bool); QString tabText(int index) const; void setTabText(int index, const QString &); QIcon tabIcon(int index) const; void setTabIcon(int index, const QIcon &icon); void setTabToolTip(int index, const QString &tip); QString tabToolTip(int index) const; void setTabWhatsThis(int index, const QString &text); QString tabWhatsThis(int index) const; int currentIndex() const; QWidget *currentWidget() const; QWidget *widget(int index) const; int indexOf(QWidget *widget) const; int count() const /__len__/; enum TabPosition { North, South, West, East, }; QTabWidget::TabPosition tabPosition() const; void setTabPosition(QTabWidget::TabPosition); enum TabShape { Rounded, Triangular, }; QTabWidget::TabShape tabShape() const; void setTabShape(QTabWidget::TabShape s); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setCornerWidget(QWidget *widget /Transfer/, Qt::Corner corner = Qt::TopRightCorner); QWidget *cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const; public slots: void setCurrentIndex(int index); void setCurrentWidget(QWidget *widget); signals: void currentChanged(int index); protected: void initStyleOption(QStyleOptionTabWidgetFrame *option) const; virtual void tabInserted(int index); virtual void tabRemoved(int index); virtual bool event(QEvent *); virtual void showEvent(QShowEvent *); virtual void resizeEvent(QResizeEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void paintEvent(QPaintEvent *); void setTabBar(QTabBar * /Transfer/); public: QTabBar *tabBar() const; protected: virtual void changeEvent(QEvent *); public: Qt::TextElideMode elideMode() const; void setElideMode(Qt::TextElideMode); QSize iconSize() const; void setIconSize(const QSize &size); bool usesScrollButtons() const; void setUsesScrollButtons(bool useButtons); bool tabsClosable() const; void setTabsClosable(bool closeable); bool isMovable() const; void setMovable(bool movable); bool documentMode() const; void setDocumentMode(bool set); signals: void tabCloseRequested(int index); public: virtual int heightForWidth(int width) const; virtual bool hasHeightForWidth() const; signals: %If (Qt_5_2_0 -) void tabBarClicked(int index); %End %If (Qt_5_2_0 -) void tabBarDoubleClicked(int index); %End public: %If (Qt_5_4_0 -) bool tabBarAutoHide() const; %End %If (Qt_5_4_0 -) void setTabBarAutoHide(bool enabled); %End private: QTabWidget(const QTabWidget &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qtextbrowser.sip0000644000076500000240000000502613245233151021477 0ustar philstaff00000000000000// qtextbrowser.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextBrowser : QTextEdit { %TypeHeaderCode #include %End public: explicit QTextBrowser(QWidget *parent /TransferThis/ = 0); virtual ~QTextBrowser(); QUrl source() const; QStringList searchPaths() const; void setSearchPaths(const QStringList &paths); virtual QVariant loadResource(int type, const QUrl &name); public slots: virtual void setSource(const QUrl &name); virtual void backward(); virtual void forward(); virtual void home(); virtual void reload(); signals: void backwardAvailable(bool); void forwardAvailable(bool); void sourceChanged(const QUrl &); void highlighted(const QUrl &); void highlighted(const QString &); void anchorClicked(const QUrl &); protected: virtual bool event(QEvent *e); virtual void keyPressEvent(QKeyEvent *ev); virtual void mouseMoveEvent(QMouseEvent *ev); virtual void mousePressEvent(QMouseEvent *ev); virtual void mouseReleaseEvent(QMouseEvent *ev); virtual void focusOutEvent(QFocusEvent *ev); virtual bool focusNextPrevChild(bool next); virtual void paintEvent(QPaintEvent *e); public: bool isBackwardAvailable() const; bool isForwardAvailable() const; void clearHistory(); bool openExternalLinks() const; void setOpenExternalLinks(bool open); bool openLinks() const; void setOpenLinks(bool open); QString historyTitle(int) const; QUrl historyUrl(int) const; int backwardHistoryCount() const; int forwardHistoryCount() const; signals: void historyChanged(); private: QTextBrowser(const QTextBrowser &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qtextedit.sip0000644000076500000240000001676213245233151020752 0ustar philstaff00000000000000// qtextedit.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextEdit : QAbstractScrollArea { %TypeHeaderCode #include %End public: struct ExtraSelection { %TypeHeaderCode #include %End QTextCursor cursor; QTextCharFormat format; }; enum LineWrapMode { NoWrap, WidgetWidth, FixedPixelWidth, FixedColumnWidth, }; enum AutoFormattingFlag { AutoNone, AutoBulletList, AutoAll, }; typedef QFlags AutoFormatting; explicit QTextEdit(QWidget *parent /TransferThis/ = 0); QTextEdit(const QString &text, QWidget *parent /TransferThis/ = 0); virtual ~QTextEdit(); void setDocument(QTextDocument *document /KeepReference/); QTextDocument *document() const; void setTextCursor(const QTextCursor &cursor); QTextCursor textCursor() const; bool isReadOnly() const; void setReadOnly(bool ro); qreal fontPointSize() const; QString fontFamily() const; int fontWeight() const; bool fontUnderline() const; bool fontItalic() const; QColor textColor() const; QFont currentFont() const; Qt::Alignment alignment() const; void mergeCurrentCharFormat(const QTextCharFormat &modifier); void setCurrentCharFormat(const QTextCharFormat &format); QTextCharFormat currentCharFormat() const; QTextEdit::AutoFormatting autoFormatting() const; void setAutoFormatting(QTextEdit::AutoFormatting features); bool tabChangesFocus() const; void setTabChangesFocus(bool b); void setDocumentTitle(const QString &title); QString documentTitle() const; bool isUndoRedoEnabled() const; void setUndoRedoEnabled(bool enable); QTextEdit::LineWrapMode lineWrapMode() const; void setLineWrapMode(QTextEdit::LineWrapMode mode); int lineWrapColumnOrWidth() const; void setLineWrapColumnOrWidth(int w); QTextOption::WrapMode wordWrapMode() const; void setWordWrapMode(QTextOption::WrapMode policy); bool find(const QString &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags()); QString toPlainText() const; QString toHtml() const; void append(const QString &text); void ensureCursorVisible(); virtual QVariant loadResource(int type, const QUrl &name); QMenu *createStandardContextMenu() /Factory/; QMenu *createStandardContextMenu(const QPoint &position) /Factory/; QTextCursor cursorForPosition(const QPoint &pos) const; QRect cursorRect(const QTextCursor &cursor) const; QRect cursorRect() const; QString anchorAt(const QPoint &pos) const; bool overwriteMode() const; void setOverwriteMode(bool overwrite); int tabStopWidth() const; void setTabStopWidth(int width); bool acceptRichText() const; void setAcceptRichText(bool accept); void setTextInteractionFlags(Qt::TextInteractionFlags flags); Qt::TextInteractionFlags textInteractionFlags() const; void setCursorWidth(int width); int cursorWidth() const; void setExtraSelections(const QList &selections); QList extraSelections() const; bool canPaste() const; void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor); %If (PyQt_Printer) void print(QPagedPaintDevice *printer) const /PyName=print_/; %End %If (Py_v3) %If (PyQt_Printer) void print(QPagedPaintDevice *printer) const; %End %End public slots: void setFontPointSize(qreal s); void setFontFamily(const QString &fontFamily); void setFontWeight(int w); void setFontUnderline(bool b); void setFontItalic(bool b); void setText(const QString &text); void setTextColor(const QColor &c); void setCurrentFont(const QFont &f); void setAlignment(Qt::Alignment a); void setPlainText(const QString &text); void setHtml(const QString &text); void cut(); void copy(); void paste(); void clear(); void selectAll(); void insertPlainText(const QString &text); void insertHtml(const QString &text); void scrollToAnchor(const QString &name); void redo(); void undo(); void zoomIn(int range = 1); void zoomOut(int range = 1); signals: void textChanged(); void undoAvailable(bool b); void redoAvailable(bool b); void currentCharFormatChanged(const QTextCharFormat &format); void copyAvailable(bool b); void selectionChanged(); void cursorPositionChanged(); protected: virtual bool event(QEvent *e); virtual void timerEvent(QTimerEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void keyReleaseEvent(QKeyEvent *e); virtual void resizeEvent(QResizeEvent *); virtual void paintEvent(QPaintEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseDoubleClickEvent(QMouseEvent *e); virtual bool focusNextPrevChild(bool next); virtual void contextMenuEvent(QContextMenuEvent *e); virtual void dragEnterEvent(QDragEnterEvent *e); virtual void dragLeaveEvent(QDragLeaveEvent *e); virtual void dragMoveEvent(QDragMoveEvent *e); virtual void dropEvent(QDropEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void showEvent(QShowEvent *); virtual void changeEvent(QEvent *e); virtual void wheelEvent(QWheelEvent *e); virtual QMimeData *createMimeDataFromSelection() const /Factory/; virtual bool canInsertFromMimeData(const QMimeData *source) const; virtual void insertFromMimeData(const QMimeData *source); virtual void inputMethodEvent(QInputMethodEvent *); public: virtual QVariant inputMethodQuery(Qt::InputMethodQuery property) const; protected: virtual void scrollContentsBy(int dx, int dy); public: QColor textBackgroundColor() const; public slots: void setTextBackgroundColor(const QColor &c); public: %If (Qt_5_2_0 -) void setPlaceholderText(const QString &placeholderText); %End %If (Qt_5_2_0 -) QString placeholderText() const; %End %If (Qt_5_3_0 -) bool find(const QRegExp &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags()); %End %If (Qt_5_3_0 -) QVariant inputMethodQuery(Qt::InputMethodQuery query, QVariant argument) const; %End %If (Qt_5_10_0 -) qreal tabStopDistance() const; %End %If (Qt_5_10_0 -) void setTabStopDistance(qreal distance); %End private: QTextEdit(const QTextEdit &); }; QFlags operator|(QTextEdit::AutoFormattingFlag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qtoolbar.sip0000644000076500000240000001026113245233151020546 0ustar philstaff00000000000000// qtoolbar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QToolBar : QWidget { %TypeHeaderCode #include %End public: QToolBar(const QString &title, QWidget *parent /TransferThis/ = 0); explicit QToolBar(QWidget *parent /TransferThis/ = 0); virtual ~QToolBar(); void setMovable(bool movable); bool isMovable() const; void setAllowedAreas(Qt::ToolBarAreas areas); Qt::ToolBarAreas allowedAreas() const; bool isAreaAllowed(Qt::ToolBarArea area) const; void setOrientation(Qt::Orientation orientation); Qt::Orientation orientation() const; void clear(); void addAction(QAction *action); QAction *addAction(const QString &text) /Transfer/; QAction *addAction(const QIcon &icon, const QString &text) /Transfer/; QAction *addAction(const QString &text, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a1, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End QAction *addAction(const QIcon &icon, const QString &text, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt5_qtwidgets_get_connection_parts(a2, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, *a1, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End QAction *addSeparator() /Transfer/; QAction *insertSeparator(QAction *before) /Transfer/; QAction *addWidget(QWidget *widget /Transfer/) /Transfer/; QAction *insertWidget(QAction *before, QWidget *widget /Transfer/) /Transfer/; QRect actionGeometry(QAction *action) const; QAction *actionAt(const QPoint &p) const; QAction *actionAt(int ax, int ay) const; QAction *toggleViewAction() const; QSize iconSize() const; Qt::ToolButtonStyle toolButtonStyle() const; QWidget *widgetForAction(QAction *action) const; public slots: void setIconSize(const QSize &iconSize); void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle); signals: void actionTriggered(QAction *action); void movableChanged(bool movable); void allowedAreasChanged(Qt::ToolBarAreas allowedAreas); void orientationChanged(Qt::Orientation orientation); void iconSizeChanged(const QSize &iconSize); void toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle); void topLevelChanged(bool topLevel); void visibilityChanged(bool visible); protected: void initStyleOption(QStyleOptionToolBar *option) const; virtual void actionEvent(QActionEvent *event); virtual void changeEvent(QEvent *event); virtual void paintEvent(QPaintEvent *event); virtual bool event(QEvent *event); public: bool isFloatable() const; void setFloatable(bool floatable); bool isFloating() const; private: QToolBar(const QToolBar &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qtoolbox.sip0000644000076500000240000000463113245233151020576 0ustar philstaff00000000000000// qtoolbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QToolBox : QFrame { %TypeHeaderCode #include %End public: QToolBox(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QToolBox(); int addItem(QWidget *item /Transfer/, const QString &text); int addItem(QWidget *item /Transfer/, const QIcon &iconSet, const QString &text); int insertItem(int index, QWidget *item /Transfer/, const QString &text); int insertItem(int index, QWidget *widget /Transfer/, const QIcon &icon, const QString &text); void removeItem(int index); void setItemEnabled(int index, bool enabled); bool isItemEnabled(int index) const; void setItemText(int index, const QString &text); QString itemText(int index) const; void setItemIcon(int index, const QIcon &icon); QIcon itemIcon(int index) const; void setItemToolTip(int index, const QString &toolTip); QString itemToolTip(int index) const; int currentIndex() const; QWidget *currentWidget() const; QWidget *widget(int index) const; int indexOf(QWidget *widget) const; int count() const /__len__/; public slots: void setCurrentIndex(int index); void setCurrentWidget(QWidget *widget); signals: void currentChanged(int index); protected: virtual void itemInserted(int index); virtual void itemRemoved(int index); virtual bool event(QEvent *e); virtual void showEvent(QShowEvent *e); virtual void changeEvent(QEvent *); private: QToolBox(const QToolBox &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qtoolbutton.sip0000644000076500000240000000474713245233151021331 0ustar philstaff00000000000000// qtoolbutton.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QToolButton : QAbstractButton { %TypeHeaderCode #include %End public: enum ToolButtonPopupMode { DelayedPopup, MenuButtonPopup, InstantPopup, }; explicit QToolButton(QWidget *parent /TransferThis/ = 0); virtual ~QToolButton(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; Qt::ToolButtonStyle toolButtonStyle() const; Qt::ArrowType arrowType() const; void setArrowType(Qt::ArrowType type); void setMenu(QMenu *menu /KeepReference/); QMenu *menu() const; void setPopupMode(QToolButton::ToolButtonPopupMode mode); QToolButton::ToolButtonPopupMode popupMode() const; QAction *defaultAction() const; void setAutoRaise(bool enable); bool autoRaise() const; public slots: void showMenu(); void setToolButtonStyle(Qt::ToolButtonStyle style); void setDefaultAction(QAction * /KeepReference/); signals: void triggered(QAction *); protected: void initStyleOption(QStyleOptionToolButton *option) const; virtual bool event(QEvent *e); virtual void mousePressEvent(QMouseEvent *); virtual void paintEvent(QPaintEvent *); virtual void actionEvent(QActionEvent *); virtual void enterEvent(QEvent *); virtual void leaveEvent(QEvent *); virtual void timerEvent(QTimerEvent *); virtual void changeEvent(QEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void nextCheckState(); virtual bool hitButton(const QPoint &pos) const; private: QToolButton(const QToolButton &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qtooltip.sip0000644000076500000240000000306213245233151020577 0ustar philstaff00000000000000// qtooltip.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QToolTip { %TypeHeaderCode #include %End QToolTip(); public: static void showText(const QPoint &pos, const QString &text, QWidget *widget = 0); static void showText(const QPoint &pos, const QString &text, QWidget *w, const QRect &rect); %If (Qt_5_2_0 -) static void showText(const QPoint &pos, const QString &text, QWidget *w, const QRect &rect, int msecShowTime); %End static QPalette palette(); static void hideText(); static void setPalette(const QPalette &); static QFont font(); static void setFont(const QFont &); static bool isVisible(); static QString text(); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qtreeview.sip0000644000076500000240000001452013245233151020740 0ustar philstaff00000000000000// qtreeview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTreeView : QAbstractItemView { %TypeHeaderCode #include %End public: explicit QTreeView(QWidget *parent /TransferThis/ = 0); virtual ~QTreeView(); virtual void setModel(QAbstractItemModel *model /KeepReference/); virtual void setRootIndex(const QModelIndex &index); virtual void setSelectionModel(QItemSelectionModel *selectionModel /KeepReference/); QHeaderView *header() const; void setHeader(QHeaderView *header /Transfer/); int indentation() const; void setIndentation(int i); bool rootIsDecorated() const; void setRootIsDecorated(bool show); bool uniformRowHeights() const; void setUniformRowHeights(bool uniform); bool itemsExpandable() const; void setItemsExpandable(bool enable); int columnViewportPosition(int column) const; int columnWidth(int column) const; int columnAt(int x) const; bool isColumnHidden(int column) const; void setColumnHidden(int column, bool hide); bool isRowHidden(int row, const QModelIndex &parent) const; void setRowHidden(int row, const QModelIndex &parent, bool hide); bool isExpanded(const QModelIndex &index) const; void setExpanded(const QModelIndex &index, bool expand); virtual void keyboardSearch(const QString &search); virtual QRect visualRect(const QModelIndex &index) const; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); virtual QModelIndex indexAt(const QPoint &p) const; QModelIndex indexAbove(const QModelIndex &index) const; QModelIndex indexBelow(const QModelIndex &index) const; virtual void reset(); signals: void expanded(const QModelIndex &index); void collapsed(const QModelIndex &index); public: virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector()); public slots: void hideColumn(int column); void showColumn(int column); void expand(const QModelIndex &index); void expandAll(); void collapse(const QModelIndex &index); void collapseAll(); void resizeColumnToContents(int column); virtual void selectAll(); protected slots: void columnResized(int column, int oldSize, int newSize); void columnCountChanged(int oldCount, int newCount); void columnMoved(); void reexpand(); void rowsRemoved(const QModelIndex &parent, int first, int last); protected: virtual void scrollContentsBy(int dx, int dy); virtual void rowsInserted(const QModelIndex &parent, int start, int end); virtual void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end); virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers); virtual int horizontalOffset() const; virtual int verticalOffset() const; virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command); virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; virtual QModelIndexList selectedIndexes() const; virtual void paintEvent(QPaintEvent *e); virtual void timerEvent(QTimerEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event); virtual void drawRow(QPainter *painter, const QStyleOptionViewItem &options /NoCopy/, const QModelIndex &index) const; virtual void drawBranches(QPainter *painter, const QRect &rect, const QModelIndex &index) const; void drawTree(QPainter *painter, const QRegion ®ion) const; virtual void mousePressEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseDoubleClickEvent(QMouseEvent *e); virtual void keyPressEvent(QKeyEvent *event); virtual void updateGeometries(); virtual int sizeHintForColumn(int column) const; int indexRowSizeHint(const QModelIndex &index) const; virtual void horizontalScrollbarAction(int action); virtual bool isIndexHidden(const QModelIndex &index) const; public: void setColumnWidth(int column, int width); void setSortingEnabled(bool enable); bool isSortingEnabled() const; void setAnimated(bool enable); bool isAnimated() const; void setAllColumnsShowFocus(bool enable); bool allColumnsShowFocus() const; void sortByColumn(int column, Qt::SortOrder order); int autoExpandDelay() const; void setAutoExpandDelay(int delay); bool isFirstColumnSpanned(int row, const QModelIndex &parent) const; void setFirstColumnSpanned(int row, const QModelIndex &parent, bool span); void setWordWrap(bool on); bool wordWrap() const; public slots: void expandToDepth(int depth); protected: virtual void dragMoveEvent(QDragMoveEvent *event); virtual bool viewportEvent(QEvent *event); int rowHeight(const QModelIndex &index) const; virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); public: bool expandsOnDoubleClick() const; void setExpandsOnDoubleClick(bool enable); bool isHeaderHidden() const; void setHeaderHidden(bool hide); %If (Qt_5_2_0 -) void setTreePosition(int logicalIndex); %End %If (Qt_5_2_0 -) int treePosition() const; %End protected: %If (Qt_5_2_0 -) virtual QSize viewportSizeHint() const; %End public: %If (Qt_5_4_0 -) void resetIndentation(); %End private: QTreeView(const QTreeView &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qtreewidget.sip0000644000076500000240000002425013245233151021252 0ustar philstaff00000000000000// qtreewidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTreeWidgetItem /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum ItemType { Type, UserType, }; explicit QTreeWidgetItem(int type = Type); QTreeWidgetItem(const QStringList &strings, int type = Type); QTreeWidgetItem(QTreeWidget *parent /TransferThis/, int type = Type); QTreeWidgetItem(QTreeWidget *parent /TransferThis/, const QStringList &strings, int type = Type); QTreeWidgetItem(QTreeWidget *parent /TransferThis/, QTreeWidgetItem *preceding, int type = Type); QTreeWidgetItem(QTreeWidgetItem *parent /TransferThis/, int type = Type); QTreeWidgetItem(QTreeWidgetItem *parent /TransferThis/, const QStringList &strings, int type = Type); QTreeWidgetItem(QTreeWidgetItem *parent /TransferThis/, QTreeWidgetItem *preceding, int type = Type); QTreeWidgetItem(const QTreeWidgetItem &other); virtual ~QTreeWidgetItem(); virtual QTreeWidgetItem *clone() const /Factory/; QTreeWidget *treeWidget() const; Qt::ItemFlags flags() const; QString text(int column) const; QIcon icon(int column) const; QString statusTip(int column) const; QString toolTip(int column) const; QString whatsThis(int column) const; QFont font(int column) const; int textAlignment(int column) const; void setTextAlignment(int column, int alignment); Qt::CheckState checkState(int column) const; void setCheckState(int column, Qt::CheckState state); virtual QVariant data(int column, int role) const; virtual void setData(int column, int role, const QVariant &value); virtual bool operator<(const QTreeWidgetItem &other /NoCopy/) const; virtual void read(QDataStream &in) /ReleaseGIL/; virtual void write(QDataStream &out) const /ReleaseGIL/; QTreeWidgetItem *parent() const; QTreeWidgetItem *child(int index) const; int childCount() const; int columnCount() const; void addChild(QTreeWidgetItem *child /Transfer/); void insertChild(int index, QTreeWidgetItem *child /Transfer/); QTreeWidgetItem *takeChild(int index) /TransferBack/; int type() const; void setFlags(Qt::ItemFlags aflags); void setText(int column, const QString &atext); void setIcon(int column, const QIcon &aicon); void setStatusTip(int column, const QString &astatusTip); void setToolTip(int column, const QString &atoolTip); void setWhatsThis(int column, const QString &awhatsThis); void setFont(int column, const QFont &afont); int indexOfChild(QTreeWidgetItem *achild) const; QSize sizeHint(int column) const; void setSizeHint(int column, const QSize &size); void addChildren(const QList &children /Transfer/); void insertChildren(int index, const QList &children /Transfer/); QList takeChildren() /TransferBack/; QBrush background(int column) const; void setBackground(int column, const QBrush &brush); QBrush foreground(int column) const; void setForeground(int column, const QBrush &brush); void sortChildren(int column, Qt::SortOrder order); void setSelected(bool aselect); bool isSelected() const; void setHidden(bool ahide); bool isHidden() const; void setExpanded(bool aexpand); bool isExpanded() const; enum ChildIndicatorPolicy { ShowIndicator, DontShowIndicator, DontShowIndicatorWhenChildless, }; void setChildIndicatorPolicy(QTreeWidgetItem::ChildIndicatorPolicy policy); QTreeWidgetItem::ChildIndicatorPolicy childIndicatorPolicy() const; void removeChild(QTreeWidgetItem *child /TransferBack/); void setFirstColumnSpanned(bool aspan); bool isFirstColumnSpanned() const; void setDisabled(bool disabled); bool isDisabled() const; protected: void emitDataChanged(); private: QTreeWidgetItem &operator=(const QTreeWidgetItem &); }; QDataStream &operator<<(QDataStream &out, const QTreeWidgetItem &item /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QTreeWidgetItem &item /Constrained/) /ReleaseGIL/; class QTreeWidget : QTreeView { %TypeHeaderCode #include %End public: explicit QTreeWidget(QWidget *parent /TransferThis/ = 0); virtual ~QTreeWidget(); int columnCount() const; void setColumnCount(int columns); QTreeWidgetItem *topLevelItem(int index) const; int topLevelItemCount() const; void insertTopLevelItem(int index, QTreeWidgetItem *item /Transfer/); void addTopLevelItem(QTreeWidgetItem *item /Transfer/); QTreeWidgetItem *takeTopLevelItem(int index) /TransferBack/; int indexOfTopLevelItem(QTreeWidgetItem *item) const; void insertTopLevelItems(int index, const QList &items /Transfer/); void addTopLevelItems(const QList &items /Transfer/); QTreeWidgetItem *headerItem() const; void setHeaderItem(QTreeWidgetItem *item /Transfer/); void setHeaderLabels(const QStringList &labels); QTreeWidgetItem *currentItem() const; int currentColumn() const; void setCurrentItem(QTreeWidgetItem *item); void setCurrentItem(QTreeWidgetItem *item, int column); void setCurrentItem(QTreeWidgetItem *item, int column, QItemSelectionModel::SelectionFlags command); QTreeWidgetItem *itemAt(const QPoint &p) const; QTreeWidgetItem *itemAt(int ax, int ay) const; QRect visualItemRect(const QTreeWidgetItem *item) const; int sortColumn() const; void sortItems(int column, Qt::SortOrder order); void editItem(QTreeWidgetItem *item, int column = 0); void openPersistentEditor(QTreeWidgetItem *item, int column = 0); void closePersistentEditor(QTreeWidgetItem *item, int column = 0); QWidget *itemWidget(QTreeWidgetItem *item, int column) const; void setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget /Transfer/); %MethodCode // We have to break the association with any existing widget. Note that I'm // not sure this is really necessary as it should get tidied up when Qt // destroys any current widget, except (possibly) when the widget wasn't // created from PyQt. See also removeItemWidget(), QListWidget and // QTableWidget. QWidget *w = sipCpp->itemWidget(a0, a1); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->setItemWidget(a0, a1, a2); Py_END_ALLOW_THREADS %End QList selectedItems() const; QList findItems(const QString &text, Qt::MatchFlags flags, int column = 0) const; public slots: void scrollToItem(const QTreeWidgetItem *item, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); void expandItem(const QTreeWidgetItem *item); void collapseItem(const QTreeWidgetItem *item); void clear(); signals: void itemPressed(QTreeWidgetItem *item, int column); void itemClicked(QTreeWidgetItem *item, int column); void itemDoubleClicked(QTreeWidgetItem *item, int column); void itemActivated(QTreeWidgetItem *item, int column); void itemEntered(QTreeWidgetItem *item, int column); void itemChanged(QTreeWidgetItem *item, int column); void itemExpanded(QTreeWidgetItem *item); void itemCollapsed(QTreeWidgetItem *item); void currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void itemSelectionChanged(); protected: virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QList items) const /TransferBack/; virtual bool dropMimeData(QTreeWidgetItem *parent, int index, const QMimeData *data, Qt::DropAction action); virtual Qt::DropActions supportedDropActions() const; %If (Qt_5_7_0 -) QModelIndex indexFromItem(const QTreeWidgetItem *item, int column = 0) const; %End %If (- Qt_5_7_0) QModelIndex indexFromItem(QTreeWidgetItem *item, int column = 0) const; %End QTreeWidgetItem *itemFromIndex(const QModelIndex &index) const; virtual bool event(QEvent *e); virtual void dropEvent(QDropEvent *event); public: QTreeWidgetItem *invisibleRootItem() const /Transfer/; void setHeaderLabel(const QString &alabel); bool isFirstItemColumnSpanned(const QTreeWidgetItem *item) const; void setFirstItemColumnSpanned(const QTreeWidgetItem *item, bool span); QTreeWidgetItem *itemAbove(const QTreeWidgetItem *item) const; QTreeWidgetItem *itemBelow(const QTreeWidgetItem *item) const; void removeItemWidget(QTreeWidgetItem *item, int column); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->itemWidget(a0, a1); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->removeItemWidget(a0, a1); Py_END_ALLOW_THREADS %End virtual void setSelectionModel(QItemSelectionModel *selectionModel /KeepReference/); %If (Qt_5_10_0 -) bool isPersistentEditorOpen(QTreeWidgetItem *item, int column = 0) const; %End private: virtual void setModel(QAbstractItemModel *model /KeepReference/); QTreeWidget(const QTreeWidget &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qtreewidgetitemiterator.sip0000644000076500000240000000436513245233151023710 0ustar philstaff00000000000000// qtreewidgetitemiterator.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTreeWidgetItemIterator { %TypeHeaderCode #include %End public: enum IteratorFlag { All, Hidden, NotHidden, Selected, Unselected, Selectable, NotSelectable, DragEnabled, DragDisabled, DropEnabled, DropDisabled, HasChildren, NoChildren, Checked, NotChecked, Enabled, Disabled, Editable, NotEditable, UserFlag, }; typedef QFlags IteratorFlags; QTreeWidgetItemIterator(const QTreeWidgetItemIterator &it); QTreeWidgetItemIterator(QTreeWidget *widget, QFlags flags = All); QTreeWidgetItemIterator(QTreeWidgetItem *item, QFlags flags = All); ~QTreeWidgetItemIterator(); QTreeWidgetItem *value() const; %MethodCode // SIP doesn't support operator* so this is a thin wrapper around it. sipRes = sipCpp->operator*(); %End QTreeWidgetItemIterator &operator+=(int n); QTreeWidgetItemIterator &operator-=(int n); }; QFlags operator|(QTreeWidgetItemIterator::IteratorFlag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/QtWidgetsmod.sip0000644000076500000240000001212713245233151021341 0ustar philstaff00000000000000// QtWidgetsmod.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtWidgets, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qabstractbutton.sip %Include qabstractitemdelegate.sip %Include qabstractitemview.sip %Include qabstractscrollarea.sip %Include qabstractslider.sip %Include qabstractspinbox.sip %Include qaction.sip %Include qactiongroup.sip %Include qapplication.sip %Include qboxlayout.sip %Include qbuttongroup.sip %Include qcalendarwidget.sip %Include qcheckbox.sip %Include qcolordialog.sip %Include qcolumnview.sip %Include qcombobox.sip %Include qcommandlinkbutton.sip %Include qcommonstyle.sip %Include qcompleter.sip %Include qdatawidgetmapper.sip %Include qdatetimeedit.sip %Include qdesktopwidget.sip %Include qdial.sip %Include qdialog.sip %Include qdialogbuttonbox.sip %Include qdirmodel.sip %Include qdockwidget.sip %Include qdrawutil.sip %Include qerrormessage.sip %Include qfiledialog.sip %Include qfileiconprovider.sip %Include qfilesystemmodel.sip %Include qfocusframe.sip %Include qfontcombobox.sip %Include qfontdialog.sip %Include qformlayout.sip %Include qframe.sip %Include qgesture.sip %Include qgesturerecognizer.sip %Include qgraphicsanchorlayout.sip %Include qgraphicseffect.sip %Include qgraphicsgridlayout.sip %Include qgraphicsitem.sip %Include qgraphicslayout.sip %Include qgraphicslayoutitem.sip %Include qgraphicslinearlayout.sip %Include qgraphicsproxywidget.sip %Include qgraphicsscene.sip %Include qgraphicssceneevent.sip %Include qgraphicstransform.sip %Include qgraphicsview.sip %Include qgraphicswidget.sip %Include qgridlayout.sip %Include qgroupbox.sip %Include qheaderview.sip %Include qinputdialog.sip %Include qitemdelegate.sip %Include qitemeditorfactory.sip %Include qkeyeventtransition.sip %Include qkeysequenceedit.sip %Include qlabel.sip %Include qlayout.sip %Include qlayoutitem.sip %Include qlcdnumber.sip %Include qlineedit.sip %Include qlistview.sip %Include qlistwidget.sip %Include qmainwindow.sip %Include qmdiarea.sip %Include qmdisubwindow.sip %Include qmenu.sip %Include qmenubar.sip %Include qmessagebox.sip %Include qmouseeventtransition.sip %Include qopenglwidget.sip %Include qplaintextedit.sip %Include qprogressbar.sip %Include qprogressdialog.sip %Include qproxystyle.sip %Include qpushbutton.sip %Include qradiobutton.sip %Include qrubberband.sip %Include qscrollarea.sip %Include qscrollbar.sip %Include qscroller.sip %Include qscrollerproperties.sip %Include qshortcut.sip %Include qsizegrip.sip %Include qsizepolicy.sip %Include qslider.sip %Include qspinbox.sip %Include qsplashscreen.sip %Include qsplitter.sip %Include qstackedlayout.sip %Include qstackedwidget.sip %Include qstatusbar.sip %Include qstyle.sip %Include qstyleditemdelegate.sip %Include qstylefactory.sip %Include qstyleoption.sip %Include qstylepainter.sip %Include qsystemtrayicon.sip %Include qtabbar.sip %Include qtableview.sip %Include qtablewidget.sip %Include qtabwidget.sip %Include qtextbrowser.sip %Include qtextedit.sip %Include qtoolbar.sip %Include qtoolbox.sip %Include qtoolbutton.sip %Include qtooltip.sip %Include qtreeview.sip %Include qtreewidget.sip %Include qtreewidgetitemiterator.sip %Include qundogroup.sip %Include qundostack.sip %Include qundoview.sip %Include qwhatsthis.sip %Include qwidget.sip %Include qwidgetaction.sip %Include qwizard.sip %Include qmaccocoaviewcontainer.sip %Include qpywidgets_qlist.sip PyQt5_gpl-5.10.1/sip/QtWidgets/qundogroup.sip0000644000076500000240000000405413245233151021131 0ustar philstaff00000000000000// qundogroup.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUndoGroup : QObject { %TypeHeaderCode #include %End public: explicit QUndoGroup(QObject *parent /TransferThis/ = 0); virtual ~QUndoGroup(); void addStack(QUndoStack *stack); void removeStack(QUndoStack *stack); QList stacks() const; QUndoStack *activeStack() const; QAction *createRedoAction(QObject *parent /TransferThis/, const QString &prefix = QString()) const /Factory/; QAction *createUndoAction(QObject *parent /TransferThis/, const QString &prefix = QString()) const /Factory/; bool canUndo() const; bool canRedo() const; QString undoText() const; QString redoText() const; bool isClean() const; public slots: void redo(); void setActiveStack(QUndoStack *stack); void undo(); signals: void activeStackChanged(QUndoStack *stack); void canRedoChanged(bool canRedo); void canUndoChanged(bool canUndo); void cleanChanged(bool clean); void indexChanged(int idx); void redoTextChanged(const QString &redoText); void undoTextChanged(const QString &undoText); private: QUndoGroup(const QUndoGroup &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qundostack.sip0000644000076500000240000000605213245233151021102 0ustar philstaff00000000000000// qundostack.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUndoCommand /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: explicit QUndoCommand(QUndoCommand *parent /TransferThis/ = 0); QUndoCommand(const QString &text, QUndoCommand *parent /TransferThis/ = 0); virtual ~QUndoCommand(); virtual int id() const; virtual bool mergeWith(const QUndoCommand *other); virtual void redo(); void setText(const QString &text); QString text() const; virtual void undo(); int childCount() const; const QUndoCommand *child(int index) const; QString actionText() const; %If (Qt_5_9_0 -) bool isObsolete() const; %End %If (Qt_5_9_0 -) void setObsolete(bool obsolete); %End private: QUndoCommand(const QUndoCommand &); }; class QUndoStack : QObject { %TypeHeaderCode #include %End public: explicit QUndoStack(QObject *parent /TransferThis/ = 0); virtual ~QUndoStack(); void clear(); void push(QUndoCommand *cmd /Transfer/); bool canUndo() const; bool canRedo() const; QString undoText() const; QString redoText() const; int count() const /__len__/; int index() const; QString text(int idx) const; QAction *createUndoAction(QObject *parent /TransferThis/, const QString &prefix = QString()) const /Factory/; QAction *createRedoAction(QObject *parent /TransferThis/, const QString &prefix = QString()) const /Factory/; bool isActive() const; bool isClean() const; int cleanIndex() const; void beginMacro(const QString &text); void endMacro(); public slots: void redo(); void setActive(bool active = true); void setClean(); void setIndex(int idx); void undo(); %If (Qt_5_8_0 -) void resetClean(); %End signals: void canRedoChanged(bool canRedo); void canUndoChanged(bool canUndo); void cleanChanged(bool clean); void indexChanged(int idx); void redoTextChanged(const QString &redoText); void undoTextChanged(const QString &undoText); public: void setUndoLimit(int limit); int undoLimit() const; const QUndoCommand *command(int index) const; private: QUndoStack(const QUndoStack &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qundoview.sip0000644000076500000240000000307513245233151020751 0ustar philstaff00000000000000// qundoview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUndoView : QListView { %TypeHeaderCode #include %End public: explicit QUndoView(QWidget *parent /TransferThis/ = 0); QUndoView(QUndoStack *stack, QWidget *parent /TransferThis/ = 0); QUndoView(QUndoGroup *group, QWidget *parent /TransferThis/ = 0); virtual ~QUndoView(); QUndoStack *stack() const; QUndoGroup *group() const; void setEmptyLabel(const QString &label); QString emptyLabel() const; void setCleanIcon(const QIcon &icon); QIcon cleanIcon() const; public slots: void setStack(QUndoStack *stack /KeepReference/); void setGroup(QUndoGroup *group /KeepReference/); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qwhatsthis.sip0000644000076500000240000000251113245233151021121 0ustar philstaff00000000000000// qwhatsthis.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWhatsThis { %TypeHeaderCode #include %End QWhatsThis(); public: static void enterWhatsThisMode(); static bool inWhatsThisMode(); static void leaveWhatsThisMode(); static void showText(const QPoint &pos, const QString &text, QWidget *widget = 0); static void hideText(); static QAction *createAction(QObject *parent /TransferThis/ = 0) /Factory/; }; PyQt5_gpl-5.10.1/sip/QtWidgets/qwidget.sip0000644000076500000240000003576713245233151020411 0ustar philstaff00000000000000// qwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. const int QWIDGETSIZE_MAX; class QWidget : QObject, QPaintDevice { %TypeHeaderCode #include %End %TypeCode // Transfer the ownership of a single widget to a parent. static void qtgui_TransferWidget(QWidget *w, PyObject *py_parent) { PyObject *py_w = sipGetPyObject(w, sipType_QWidget); if (py_w) sipTransferTo(py_w, py_parent); } // Transfer ownership of all widgets in a layout to their new parent. static void qtwidgets_TransferLayoutWidgets(QLayout *lay, PyObject *pw) { int n = lay->count(); for (int i = 0; i < n; ++i) { QLayoutItem *item = lay->itemAt(i); QWidget *w = item->widget(); if (w) { qtgui_TransferWidget(w, pw); } else { QLayout *l = item->layout(); if (l) qtwidgets_TransferLayoutWidgets(l, pw); } } QWidget *mb = lay->menuBar(); if (mb) qtgui_TransferWidget(mb, pw); } %End public: QWidget(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QWidget(); virtual int devType() const; QStyle *style() const; void setStyle(QStyle * /KeepReference/); bool isEnabledTo(const QWidget *) const; public slots: void setEnabled(bool); void setDisabled(bool); void setWindowModified(bool); public: QRect frameGeometry() const; QRect normalGeometry() const; int x() const; int y() const; QPoint pos() const; QSize frameSize() const; QRect childrenRect() const; QRegion childrenRegion() const; QSize minimumSize() const; QSize maximumSize() const; void setMinimumSize(int minw, int minh); void setMaximumSize(int maxw, int maxh); void setMinimumWidth(int minw); void setMinimumHeight(int minh); void setMaximumWidth(int maxw); void setMaximumHeight(int maxh); QSize sizeIncrement() const; void setSizeIncrement(int w, int h); QSize baseSize() const; void setBaseSize(int basew, int baseh); void setFixedSize(const QSize &); void setFixedSize(int w, int h); void setFixedWidth(int w); void setFixedHeight(int h); QPoint mapToGlobal(const QPoint &) const; QPoint mapFromGlobal(const QPoint &) const; QPoint mapToParent(const QPoint &) const; QPoint mapFromParent(const QPoint &) const; QPoint mapTo(const QWidget *, const QPoint &) const; QPoint mapFrom(const QWidget *, const QPoint &) const; QWidget *window() const; const QPalette &palette() const; void setPalette(const QPalette &); void setBackgroundRole(QPalette::ColorRole); QPalette::ColorRole backgroundRole() const; void setForegroundRole(QPalette::ColorRole); QPalette::ColorRole foregroundRole() const; void setFont(const QFont &); QCursor cursor() const; void setCursor(const QCursor &); void unsetCursor(); void setMask(const QBitmap &); void setMask(const QRegion &); QRegion mask() const; void clearMask(); void setWindowTitle(const QString &); QString windowTitle() const; void setWindowIcon(const QIcon &icon); QIcon windowIcon() const; void setWindowIconText(const QString &); QString windowIconText() const; void setWindowRole(const QString &); QString windowRole() const; void setWindowOpacity(qreal level); qreal windowOpacity() const; bool isWindowModified() const; void setToolTip(const QString &); QString toolTip() const; void setStatusTip(const QString &); QString statusTip() const; void setWhatsThis(const QString &); QString whatsThis() const; %If (PyQt_Accessibility) QString accessibleName() const; %End %If (PyQt_Accessibility) void setAccessibleName(const QString &name); %End %If (PyQt_Accessibility) QString accessibleDescription() const; %End %If (PyQt_Accessibility) void setAccessibleDescription(const QString &description); %End void setLayoutDirection(Qt::LayoutDirection direction); Qt::LayoutDirection layoutDirection() const; void unsetLayoutDirection(); bool isRightToLeft() const; bool isLeftToRight() const; public slots: void setFocus(); public: bool isActiveWindow() const; void activateWindow(); void clearFocus(); void setFocus(Qt::FocusReason reason); Qt::FocusPolicy focusPolicy() const; void setFocusPolicy(Qt::FocusPolicy policy); bool hasFocus() const; static void setTabOrder(QWidget *, QWidget *); void setFocusProxy(QWidget * /KeepReference/); QWidget *focusProxy() const; Qt::ContextMenuPolicy contextMenuPolicy() const; void setContextMenuPolicy(Qt::ContextMenuPolicy policy); void grabMouse(); void grabMouse(const QCursor &); void releaseMouse(); void grabKeyboard(); void releaseKeyboard(); int grabShortcut(const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut); void releaseShortcut(int id); void setShortcutEnabled(int id, bool enabled = true); static QWidget *mouseGrabber(); static QWidget *keyboardGrabber(); void setUpdatesEnabled(bool enable); public slots: void update(); void repaint(); public: void update(const QRect &); void update(const QRegion &); void repaint(int x, int y, int w, int h); void repaint(const QRect &); void repaint(const QRegion &); public slots: virtual void setVisible(bool visible); void setHidden(bool hidden); void show(); void hide(); void showMinimized(); void showMaximized(); void showFullScreen(); void showNormal(); bool close(); void raise() /PyName=raise_/; void lower(); public: void stackUnder(QWidget *); void move(const QPoint &); void resize(const QSize &); void setGeometry(const QRect &); void adjustSize(); bool isVisibleTo(const QWidget *) const; bool isMinimized() const; bool isMaximized() const; bool isFullScreen() const; Qt::WindowStates windowState() const; void setWindowState(Qt::WindowStates state); void overrideWindowState(Qt::WindowStates state); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; QSizePolicy sizePolicy() const; void setSizePolicy(QSizePolicy); virtual int heightForWidth(int) const; QRegion visibleRegion() const; void setContentsMargins(int left, int top, int right, int bottom); void getContentsMargins(int *left, int *top, int *right, int *bottom) const; QRect contentsRect() const; QLayout *layout() const; void setLayout(QLayout * /Transfer/); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->setLayout(a0); Py_END_ALLOW_THREADS // Internally Qt has reparented all of the widgets in the layout, so we need // to update the ownership hierachy. qtwidgets_TransferLayoutWidgets(a0, sipSelf); %End void updateGeometry(); void setParent(QWidget *parent /TransferThis/); void setParent(QWidget *parent /TransferThis/, Qt::WindowFlags f); void scroll(int dx, int dy); void scroll(int dx, int dy, const QRect &); QWidget *focusWidget() const; QWidget *nextInFocusChain() const; bool acceptDrops() const; void setAcceptDrops(bool on); void addAction(QAction *action); void addActions(QList actions); void insertAction(QAction *before, QAction *action); void insertActions(QAction *before, QList actions); void removeAction(QAction *action); QList actions() const; void setWindowFlags(Qt::WindowFlags type); void overrideWindowFlags(Qt::WindowFlags type); static QWidget *find(WId); QWidget *childAt(const QPoint &p) const; void setAttribute(Qt::WidgetAttribute attribute, bool on = true); virtual QPaintEngine *paintEngine() const; void ensurePolished() const; bool isAncestorOf(const QWidget *child) const; signals: void customContextMenuRequested(const QPoint &pos); protected: virtual bool event(QEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void wheelEvent(QWheelEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void enterEvent(QEvent *); virtual void leaveEvent(QEvent *); virtual void paintEvent(QPaintEvent *); virtual void moveEvent(QMoveEvent *); virtual void resizeEvent(QResizeEvent *); virtual void closeEvent(QCloseEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual void tabletEvent(QTabletEvent *); virtual void actionEvent(QActionEvent *); virtual void dragEnterEvent(QDragEnterEvent *); virtual void dragMoveEvent(QDragMoveEvent *); virtual void dragLeaveEvent(QDragLeaveEvent *); virtual void dropEvent(QDropEvent *); virtual void showEvent(QShowEvent *); virtual void hideEvent(QHideEvent *); virtual void changeEvent(QEvent *); virtual int metric(QPaintDevice::PaintDeviceMetric) const; virtual void inputMethodEvent(QInputMethodEvent *); public: virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const; protected: void updateMicroFocus(); void create(WId window = 0, bool initializeWindow = true, bool destroyOldWindow = true); void destroy(bool destroyWindow = true, bool destroySubWindows = true); virtual bool focusNextPrevChild(bool next); bool focusNextChild(); bool focusPreviousChild(); public: QWidget *childAt(int ax, int ay) const; Qt::WindowType windowType() const; Qt::WindowFlags windowFlags() const; WId winId() const; bool isWindow() const; bool isEnabled() const; bool isModal() const; int minimumWidth() const; int minimumHeight() const; int maximumWidth() const; int maximumHeight() const; void setMinimumSize(const QSize &s); void setMaximumSize(const QSize &s); void setSizeIncrement(const QSize &s); void setBaseSize(const QSize &s); const QFont &font() const; QFontMetrics fontMetrics() const; QFontInfo fontInfo() const; void setMouseTracking(bool enable); bool hasMouseTracking() const; bool underMouse() const; bool updatesEnabled() const; void update(int ax, int ay, int aw, int ah); bool isVisible() const; bool isHidden() const; void move(int ax, int ay); void resize(int w, int h); void setGeometry(int ax, int ay, int aw, int ah); QRect rect() const; const QRect &geometry() const; QSize size() const; int width() const; int height() const; QWidget *parentWidget() const; void setSizePolicy(QSizePolicy::Policy hor, QSizePolicy::Policy ver); bool testAttribute(Qt::WidgetAttribute attribute) const; Qt::WindowModality windowModality() const; void setWindowModality(Qt::WindowModality windowModality); bool autoFillBackground() const; void setAutoFillBackground(bool enabled); void setStyleSheet(const QString &styleSheet); QString styleSheet() const; void setShortcutAutoRepeat(int id, bool enabled = true); QByteArray saveGeometry() const; bool restoreGeometry(const QByteArray &geometry); enum RenderFlag { DrawWindowBackground, DrawChildren, IgnoreMask, }; typedef QFlags RenderFlags; void render(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags flags = QWidget::RenderFlags(QWidget::DrawWindowBackground | QWidget::DrawChildren)); void render(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags flags = QWidget::RenderFlags(QWidget::DrawWindowBackground | QWidget::DrawChildren)); void setLocale(const QLocale &locale); QLocale locale() const; void unsetLocale(); WId effectiveWinId() const; QWidget *nativeParentWidget() const; void setWindowFilePath(const QString &filePath); QString windowFilePath() const; QGraphicsProxyWidget *graphicsProxyWidget() const; QGraphicsEffect *graphicsEffect() const; void setGraphicsEffect(QGraphicsEffect *effect /Transfer/); void grabGesture(Qt::GestureType type, Qt::GestureFlags flags = Qt::GestureFlags()); void ungrabGesture(Qt::GestureType type); void setContentsMargins(const QMargins &margins); QMargins contentsMargins() const; QWidget *previousInFocusChain() const; Qt::InputMethodHints inputMethodHints() const; void setInputMethodHints(Qt::InputMethodHints hints); virtual bool hasHeightForWidth() const; QPixmap grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1))); %If (Qt_5_1_0 -) static SIP_PYOBJECT createWindowContainer(QWindow *window /GetWrapper/, QWidget *parent /GetWrapper/ = 0, Qt::WindowFlags flags = 0) /TypeHint="QWidget",Factory/; %MethodCode // Ownersip issues are complicated so we handle them explicitly. QWidget *w = QWidget::createWindowContainer(a0, a1, *a2); sipRes = sipConvertFromNewType(w, sipType_QWidget, a1Wrapper); if (sipRes) sipTransferTo(a0Wrapper, sipRes); %End %End QWindow *windowHandle() const; protected: virtual bool nativeEvent(const QByteArray &eventType, void *message, long *result); virtual QPainter *sharedPainter() const; virtual void initPainter(QPainter *painter) const; public: %If (Qt_5_2_0 -) void setToolTipDuration(int msec); %End %If (Qt_5_2_0 -) int toolTipDuration() const; %End signals: %If (Qt_5_2_0 -) void windowTitleChanged(const QString &title); %End %If (Qt_5_2_0 -) void windowIconChanged(const QIcon &icon); %End %If (Qt_5_2_0 -) void windowIconTextChanged(const QString &iconText); %End public: %If (Qt_5_9_0 -) void setTabletTracking(bool enable); %End %If (Qt_5_9_0 -) bool hasTabletTracking() const; %End %If (Qt_5_9_0 -) void setWindowFlag(Qt::WindowType, bool on = true); %End private: QWidget(const QWidget &); }; QFlags operator|(QWidget::RenderFlag f1, QFlags f2); PyQt5_gpl-5.10.1/sip/QtWidgets/qwidgetaction.sip0000644000076500000240000000321713245233151021570 0ustar philstaff00000000000000// qwidgetaction.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWidgetAction : QAction { %TypeHeaderCode #include %End public: explicit QWidgetAction(QObject *parent /TransferThis/); virtual ~QWidgetAction(); void setDefaultWidget(QWidget *w /Transfer/); QWidget *defaultWidget() const; QWidget *requestWidget(QWidget *parent /TransferThis/) /Factory/; void releaseWidget(QWidget *widget /TransferBack/); protected: virtual bool event(QEvent *); virtual bool eventFilter(QObject *, QEvent *); virtual QWidget *createWidget(QWidget *parent /TransferThis/) /Factory/; virtual void deleteWidget(QWidget *widget /Transfer/); QList createdWidgets() const; private: QWidgetAction(const QWidgetAction &); }; PyQt5_gpl-5.10.1/sip/QtWidgets/qwizard.sip0000644000076500000240000001712313245233151020410 0ustar philstaff00000000000000// qwizard.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWizard : QDialog { %TypeHeaderCode #include %End public: enum WizardButton { BackButton, NextButton, CommitButton, FinishButton, CancelButton, HelpButton, CustomButton1, CustomButton2, CustomButton3, Stretch, }; enum WizardPixmap { WatermarkPixmap, LogoPixmap, BannerPixmap, BackgroundPixmap, }; enum WizardStyle { ClassicStyle, ModernStyle, MacStyle, AeroStyle, }; enum WizardOption { IndependentPages, IgnoreSubTitles, ExtendedWatermarkPixmap, NoDefaultButton, NoBackButtonOnStartPage, NoBackButtonOnLastPage, DisabledBackButtonOnLastPage, HaveNextButtonOnLastPage, HaveFinishButtonOnEarlyPages, NoCancelButton, CancelButtonOnLeft, HaveHelpButton, HelpButtonOnRight, HaveCustomButton1, HaveCustomButton2, HaveCustomButton3, %If (Qt_5_3_0 -) NoCancelButtonOnLastPage, %End }; typedef QFlags WizardOptions; QWizard(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QWizard(); int addPage(QWizardPage *page /Transfer/); void setPage(int id, QWizardPage *page /Transfer/); QWizardPage *page(int id) const; bool hasVisitedPage(int id) const; QList visitedPages() const; void setStartId(int id); int startId() const; QWizardPage *currentPage() const; int currentId() const; virtual bool validateCurrentPage(); virtual int nextId() const; void setField(const QString &name, const QVariant &value); QVariant field(const QString &name) const; void setWizardStyle(QWizard::WizardStyle style); QWizard::WizardStyle wizardStyle() const; void setOption(QWizard::WizardOption option, bool on = true); bool testOption(QWizard::WizardOption option) const; void setOptions(QWizard::WizardOptions options); QWizard::WizardOptions options() const; void setButtonText(QWizard::WizardButton which, const QString &text); QString buttonText(QWizard::WizardButton which) const; void setButtonLayout(const QList &layout); void setButton(QWizard::WizardButton which, QAbstractButton *button /Transfer/); QAbstractButton *button(QWizard::WizardButton which) const /Transfer/; void setTitleFormat(Qt::TextFormat format); Qt::TextFormat titleFormat() const; void setSubTitleFormat(Qt::TextFormat format); Qt::TextFormat subTitleFormat() const; void setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap); QPixmap pixmap(QWizard::WizardPixmap which) const; void setDefaultProperty(const char *className, const char *property, SIP_PYOBJECT changedSignal /TypeHint="PYQT_SIGNAL"/); %MethodCode QByteArray signal_signature; if ((sipError = pyqt5_qtwidgets_get_signal_signature(a2, 0, signal_signature)) == sipErrorNone) { sipCpp->setDefaultProperty(a0, a1, signal_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End virtual void setVisible(bool visible); virtual QSize sizeHint() const; signals: void currentIdChanged(int id); void helpRequested(); void customButtonClicked(int which); public slots: void back(); void next(); void restart(); protected: virtual bool event(QEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual void paintEvent(QPaintEvent *event); virtual void done(int result); virtual void initializePage(int id); virtual void cleanupPage(int id); public: void removePage(int id); QList pageIds() const; void setSideWidget(QWidget *widget /Transfer/); QWidget *sideWidget() const; signals: void pageAdded(int id); void pageRemoved(int id); private: QWizard(const QWizard &); }; QFlags operator|(QWizard::WizardOption f1, QFlags f2); class QWizardPage : QWidget { %TypeHeaderCode #include %End public: explicit QWizardPage(QWidget *parent /TransferThis/ = 0); virtual ~QWizardPage(); void setTitle(const QString &title); QString title() const; void setSubTitle(const QString &subTitle); QString subTitle() const; void setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap); QPixmap pixmap(QWizard::WizardPixmap which) const; void setFinalPage(bool finalPage); bool isFinalPage() const; void setCommitPage(bool commitPage); bool isCommitPage() const; void setButtonText(QWizard::WizardButton which, const QString &text); QString buttonText(QWizard::WizardButton which) const; virtual void initializePage(); virtual void cleanupPage(); virtual bool validatePage(); virtual bool isComplete() const; virtual int nextId() const; signals: void completeChanged(); protected: void setField(const QString &name, const QVariant &value); QVariant field(const QString &name) const; void registerField(const QString &name, QWidget *widget, const char *property = 0, SIP_PYOBJECT changedSignal /TypeHint="PYQT_SIGNAL"/ = 0) [void (const QString &name, QWidget *widget, const char *property = 0, const char *changedSignal = 0)]; %MethodCode typedef sipErrorState (*pyqt5_get_signal_signature_t)(PyObject *, QObject *, QByteArray &); static pyqt5_get_signal_signature_t pyqt5_get_signal_signature = 0; if (!pyqt5_get_signal_signature) { pyqt5_get_signal_signature = (pyqt5_get_signal_signature_t)sipImportSymbol("pyqt5_get_signal_signature"); Q_ASSERT(pyqt5_get_signal_signature); } QByteArray signal_signature; const char *signal = 0; if (a3 && a3 != Py_None) { if ((sipError = pyqt5_get_signal_signature(a3, a1, signal_signature)) == sipErrorNone) { signal = signal_signature.constData(); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(3, a3); } } if (sipError == sipErrorNone) { Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipCpp->registerField(*a0, a1, a2, signal); #else sipCpp->sipProtect_registerField(*a0, a1, a2, signal); #endif Py_END_ALLOW_THREADS } %End QWizard *wizard() const; private: QWizardPage(const QWizardPage &); }; PyQt5_gpl-5.10.1/sip/QtWinExtras/0000755000076500000240000000000013245233151016524 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtWinExtras/QtWinExtrasmod.sip0000644000076500000240000000414113245233151022172 0ustar philstaff00000000000000// This is the SIP interface definition for the QtWinExtras module of PyQt v5. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtWinExtras, keyword_arguments="Optional", use_limited_api=True) %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qwinfunctions.sip %Include qwinjumplist.sip %Include qwinjumplistcategory.sip %Include qwinjumplistitem.sip %Include qwintaskbarbutton.sip %Include qwintaskbarprogress.sip %Include qwinthumbnailtoolbar.sip %Include qwinthumbnailtoolbutton.sip PyQt5_gpl-5.10.1/sip/QtWinExtras/qwinfunctions.sip0000644000076500000240000001031613245233151022151 0ustar philstaff00000000000000// This is the SIP interface definition for QtWin. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) typedef struct HBITMAP__ *HBITMAP; typedef struct HDC__ *HDC; typedef struct HICON__ *HICON; typedef long HRESULT; typedef struct HRGN__ *HRGN; namespace QtWin { %TypeHeaderCode #include %End enum HBitmapFormat { HBitmapNoAlpha, HBitmapPremultipliedAlpha, HBitmapAlpha }; enum WindowFlip3DPolicy { FlipDefault, FlipExcludeBelow, FlipExcludeAbove }; HBITMAP createMask(const QBitmap &bitmap); HBITMAP toHBITMAP(const QPixmap &p, QtWin::HBitmapFormat format = QtWin::HBitmapNoAlpha); QPixmap fromHBITMAP(HBITMAP bitmap, QtWin::HBitmapFormat format = QtWin::HBitmapNoAlpha); HICON toHICON(const QPixmap &p); QImage imageFromHBITMAP(HDC hdc, HBITMAP bitmap, int width, int height); QPixmap fromHICON(HICON icon); HRGN toHRGN(const QRegion ®ion); QRegion fromHRGN(HRGN hrgn); QString stringFromHresult(HRESULT hresult); QString errorStringFromHresult(HRESULT hresult); QColor colorizationColor(bool *opaqueBlend = 0); QColor realColorizationColor(); void setWindowExcludedFromPeek(QWindow *window, bool exclude); bool isWindowExcludedFromPeek(QWindow *window); void setWindowDisallowPeek(QWindow *window, bool disallow); bool isWindowPeekDisallowed(QWindow *window); void setWindowFlip3DPolicy(QWindow *window, QtWin::WindowFlip3DPolicy policy); QtWin::WindowFlip3DPolicy windowFlip3DPolicy(QWindow *); void extendFrameIntoClientArea(QWindow *window, int left, int top, int right, int bottom); void extendFrameIntoClientArea(QWindow *window, const QMargins &margins); void resetExtendedFrame(QWindow *window); void enableBlurBehindWindow(QWindow *window, const QRegion ®ion); void enableBlurBehindWindow(QWindow *window); void disableBlurBehindWindow(QWindow *window); bool isCompositionEnabled(); void setCompositionEnabled(bool enabled); bool isCompositionOpaque(); void setCurrentProcessExplicitAppUserModelID(const QString &id); void markFullscreenWindow(QWindow *, bool fullscreen = true); void taskbarActivateTab(QWindow *); void taskbarActivateTabAlt(QWindow *); void taskbarAddTab(QWindow *); void taskbarDeleteTab(QWindow *); void setWindowExcludedFromPeek(QWidget *window, bool exclude); bool isWindowExcludedFromPeek(QWidget *window); void setWindowDisallowPeek(QWidget *window, bool disallow); bool isWindowPeekDisallowed(QWidget *window); void setWindowFlip3DPolicy(QWidget *window, QtWin::WindowFlip3DPolicy policy); QtWin::WindowFlip3DPolicy windowFlip3DPolicy(QWidget *window); void extendFrameIntoClientArea(QWidget *window, const QMargins &margins); void extendFrameIntoClientArea(QWidget *window, int left, int top, int right, int bottom); void resetExtendedFrame(QWidget *window); void enableBlurBehindWindow(QWidget *window, const QRegion ®ion); void enableBlurBehindWindow(QWidget *window); void disableBlurBehindWindow(QWidget *window); void markFullscreenWindow(QWidget *window, bool fullscreen = true); void taskbarActivateTab(QWidget *window); void taskbarActivateTabAlt(QWidget *window); void taskbarAddTab(QWidget *window); void taskbarDeleteTab(QWidget *window); }; %End PyQt5_gpl-5.10.1/sip/QtWinExtras/qwinjumplist.sip0000644000076500000240000000455013245233151022013 0ustar philstaff00000000000000// This is the SIP interface definition for QWinJumpList. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QWinJumpList : public QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QWinThumbnailToolBar, &sipType_QWinThumbnailToolBar, -1, 1}, {sipName_QWinJumpList, &sipType_QWinJumpList, -1, 2}, {sipName_QWinTaskbarButton, &sipType_QWinTaskbarButton, -1, 3}, {sipName_QWinThumbnailToolButton, &sipType_QWinThumbnailToolButton, -1, 4}, {sipName_QWinTaskbarProgress, &sipType_QWinTaskbarProgress, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: explicit QWinJumpList(QObject *parent /TransferThis/ = 0); ~QWinJumpList(); QString identifier() const; void setIdentifier(const QString &identifier); QWinJumpListCategory *recent() const; QWinJumpListCategory *frequent() const; QWinJumpListCategory *tasks() const; QList categories() const; void addCategory(QWinJumpListCategory *category /Transfer/); QWinJumpListCategory *addCategory(const QString &title, const QList items /Transfer/ = QList()); public slots: void clear(); private: QWinJumpList(const QWinJumpList &); }; %End PyQt5_gpl-5.10.1/sip/QtWinExtras/qwinjumplistcategory.sip0000644000076500000240000000402213245233151023543 0ustar philstaff00000000000000// This is the SIP interface definition for QWinJumpListCategory. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QWinJumpListCategory /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum Type { Custom, Recent, Frequent, Tasks }; explicit QWinJumpListCategory(const QString &title = QString()); ~QWinJumpListCategory(); Type type() const; bool isVisible() const; void setVisible(bool visible); QString title() const; void setTitle(const QString &title); int count() const; bool isEmpty() const; QList items() const; void addItem(QWinJumpListItem *item /Transfer/); QWinJumpListItem *addDestination(const QString &filePath); QWinJumpListItem *addLink(const QString &title, const QString &executablePath, const QStringList &arguments = QStringList()); QWinJumpListItem *addLink(const QIcon &icon, const QString &title, const QString &executablePath, const QStringList &arguments = QStringList()); QWinJumpListItem *addSeparator(); void clear(); private: QWinJumpListCategory(const QWinJumpListCategory &); }; %End PyQt5_gpl-5.10.1/sip/QtWinExtras/qwinjumplistitem.sip0000644000076500000240000000337113245233151022672 0ustar philstaff00000000000000// This is the SIP interface definition for QWinJumpListItem. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QWinJumpListItem /Supertype=sip.wrapper/ { %TypeHeaderCode #include %End public: enum Type { Destination, Link, Separator }; explicit QWinJumpListItem(Type type); ~QWinJumpListItem(); void setType(Type type); Type type() const; void setFilePath(const QString &filePath); QString filePath() const; void setWorkingDirectory(const QString &workingDirectory); QString workingDirectory() const; void setIcon(const QIcon &icon); QIcon icon() const; void setTitle(const QString &title); QString title() const; void setDescription(const QString &description); QString description() const; void setArguments(const QStringList &arguments); QStringList arguments() const; private: QWinJumpListItem(const QWinJumpListItem &); }; %End PyQt5_gpl-5.10.1/sip/QtWinExtras/qwintaskbarbutton.sip0000644000076500000240000000306713245233151023031 0ustar philstaff00000000000000// This is the SIP interface definition for QWinTaskbarButton. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QWinTaskbarButton : public QObject { %TypeHeaderCode #include %End public: explicit QWinTaskbarButton(QObject *parent /TransferThis/ = 0); ~QWinTaskbarButton(); void setWindow(QWindow *window); QWindow *window() const; QIcon overlayIcon() const; QString overlayAccessibleDescription() const; QWinTaskbarProgress *progress() const; bool eventFilter(QObject *, QEvent *); public slots: void setOverlayIcon(const QIcon &icon); void setOverlayAccessibleDescription(const QString &description); void clearOverlayIcon(); private: QWinTaskbarButton(const QWinTaskbarButton &); }; %End PyQt5_gpl-5.10.1/sip/QtWinExtras/qwintaskbarprogress.sip0000644000076500000240000000350313245233151023355 0ustar philstaff00000000000000// This is the SIP interface definition for QWinTaskbarProgress. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QWinTaskbarProgress : public QObject { %TypeHeaderCode #include %End public: explicit QWinTaskbarProgress(QObject *parent /TransferThis/= 0); ~QWinTaskbarProgress(); int value() const; int minimum() const; int maximum() const; bool isVisible() const; bool isPaused() const; bool isStopped() const; public slots: void setValue(int value); void setMinimum(int minimum); void setMaximum(int maximum); void setRange(int minimum, int maximum); void reset(); void show(); void hide(); void setVisible(bool visible); void pause(); void resume(); void setPaused(bool paused); void stop(); signals: void valueChanged(int value); void minimumChanged(int minimum); void maximumChanged(int maximum); void visibilityChanged(bool visible); private: QWinTaskbarProgress(const QWinTaskbarProgress &); }; %End PyQt5_gpl-5.10.1/sip/QtWinExtras/qwinthumbnailtoolbar.sip0000644000076500000240000000377413245233151023521 0ustar philstaff00000000000000// This is the SIP interface definition for QWinThumbnailToolBar. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QWinThumbnailToolBar : public QObject { %TypeHeaderCode #include %End public: explicit QWinThumbnailToolBar(QObject *parent /TransferThis/ = 0); ~QWinThumbnailToolBar(); void setWindow(QWindow *window); QWindow *window() const; void addButton(QWinThumbnailToolButton *button); void removeButton(QWinThumbnailToolButton *button); void setButtons(const QList &buttons); QList buttons() const; int count() const; %If (Qt_5_4_0 -) bool iconicPixmapNotificationsEnabled() const; void setIconicPixmapNotificationsEnabled(bool enabled); QPixmap iconicThumbnailPixmap() const; QPixmap iconicLivePreviewPixmap() const; %End public slots: void clear(); %If (Qt_5_4_0 -) void setIconicThumbnailPixmap(const QPixmap &); void setIconicLivePreviewPixmap(const QPixmap &); %End signals: %If (Qt_5_4_0 -) void iconicThumbnailPixmapRequested(); void iconicLivePreviewPixmapRequested(); %End private: QWinThumbnailToolBar(const QWinThumbnailToolBar &); }; %End PyQt5_gpl-5.10.1/sip/QtWinExtras/qwinthumbnailtoolbutton.sip0000644000076500000240000000334613245233151024263 0ustar philstaff00000000000000// This is the SIP interface definition for QWinThumbnailToolButton. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_2_0 -) class QWinThumbnailToolButton : public QObject { %TypeHeaderCode #include %End public: explicit QWinThumbnailToolButton(QObject *parent /TransferThis/ = 0); ~QWinThumbnailToolButton(); void setToolTip(const QString &toolTip); QString toolTip() const; void setIcon(const QIcon &icon); QIcon icon() const; void setEnabled(bool enabled); bool isEnabled() const; void setInteractive(bool interactive); bool isInteractive() const; void setVisible(bool visible); bool isVisible() const; void setDismissOnClick(bool dismiss); bool dismissOnClick() const; void setFlat(bool flat); bool isFlat() const; public slots: void click(); signals: void clicked(); private: QWinThumbnailToolButton(const QWinThumbnailToolButton &); }; %End PyQt5_gpl-5.10.1/sip/QtX11Extras/0000755000076500000240000000000013245233151016340 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtX11Extras/QtX11Extrasmod.sip0000644000076500000240000000357113245233151021630 0ustar philstaff00000000000000// This is the SIP interface definition for the QtX11Extras module of PyQt v5. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtX11Extras, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qx11info_x11.sip PyQt5_gpl-5.10.1/sip/QtX11Extras/qx11info_x11.sip0000644000076500000240000000327713245233151021225 0ustar philstaff00000000000000// This is the SIP interface definition for QX11Info. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_5_1_0 -) class Display; class xcb_connection_t; class QX11Info { %TypeHeaderCode #include %End public: %If (Qt_5_2_0 -) static bool isPlatformX11(); %End static int appDpiX(int screen = -1); static int appDpiY(int screen = -1); static unsigned long appRootWindow(int screen = -1); static int appScreen(); static unsigned long appTime(); static unsigned long appUserTime(); static void setAppTime(unsigned long time); static void setAppUserTime(unsigned long time); %If (Qt_5_2_0 -) static unsigned long getTimestamp(); %End %If (Qt_5_4_0 -) static QByteArray nextStartupId(); static void setNextStartupId(const QByteArray &id); %End static Display *display(); static xcb_connection_t *connection(); private: QX11Info(); }; %End PyQt5_gpl-5.10.1/sip/QtXml/0000755000076500000240000000000013245233151015340 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtXml/qdom.sip0000644000076500000240000003364713245233151017032 0ustar philstaff00000000000000// qdom.sip generated by MetaSIP // // This file is part of the QtXml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDomImplementation { %TypeHeaderCode #include %End public: QDomImplementation(); QDomImplementation(const QDomImplementation &); ~QDomImplementation(); bool operator==(const QDomImplementation &) const; bool operator!=(const QDomImplementation &) const; bool hasFeature(const QString &feature, const QString &version) const; QDomDocumentType createDocumentType(const QString &qName, const QString &publicId, const QString &systemId); QDomDocument createDocument(const QString &nsURI, const QString &qName, const QDomDocumentType &doctype); enum InvalidDataPolicy { AcceptInvalidChars, DropInvalidChars, ReturnNullNode, }; static QDomImplementation::InvalidDataPolicy invalidDataPolicy(); static void setInvalidDataPolicy(QDomImplementation::InvalidDataPolicy policy); bool isNull(); }; class QDomNode { %TypeHeaderCode #include %End public: enum NodeType { ElementNode, AttributeNode, TextNode, CDATASectionNode, EntityReferenceNode, EntityNode, ProcessingInstructionNode, CommentNode, DocumentNode, DocumentTypeNode, DocumentFragmentNode, NotationNode, BaseNode, CharacterDataNode, }; enum EncodingPolicy { EncodingFromDocument, EncodingFromTextStream, }; QDomNode(); QDomNode(const QDomNode &); ~QDomNode(); bool operator==(const QDomNode &) const; bool operator!=(const QDomNode &) const; QDomNode insertBefore(const QDomNode &newChild, const QDomNode &refChild); QDomNode insertAfter(const QDomNode &newChild, const QDomNode &refChild); QDomNode replaceChild(const QDomNode &newChild, const QDomNode &oldChild); QDomNode removeChild(const QDomNode &oldChild); QDomNode appendChild(const QDomNode &newChild); bool hasChildNodes() const; QDomNode cloneNode(bool deep = true) const; void normalize(); bool isSupported(const QString &feature, const QString &version) const; QString nodeName() const; QDomNode::NodeType nodeType() const; QDomNode parentNode() const; QDomNodeList childNodes() const; QDomNode firstChild() const; QDomNode lastChild() const; QDomNode previousSibling() const; QDomNode nextSibling() const; QDomNamedNodeMap attributes() const; QDomDocument ownerDocument() const; QString namespaceURI() const; QString localName() const; bool hasAttributes() const; QString nodeValue() const; void setNodeValue(const QString &); QString prefix() const; void setPrefix(const QString &pre); bool isAttr() const; bool isCDATASection() const; bool isDocumentFragment() const; bool isDocument() const; bool isDocumentType() const; bool isElement() const; bool isEntityReference() const; bool isText() const; bool isEntity() const; bool isNotation() const; bool isProcessingInstruction() const; bool isCharacterData() const; bool isComment() const; QDomNode namedItem(const QString &name) const; bool isNull() const; void clear(); QDomAttr toAttr() const; QDomCDATASection toCDATASection() const; QDomDocumentFragment toDocumentFragment() const; QDomDocument toDocument() const; QDomDocumentType toDocumentType() const; QDomElement toElement() const; QDomEntityReference toEntityReference() const; QDomText toText() const; QDomEntity toEntity() const; QDomNotation toNotation() const; QDomProcessingInstruction toProcessingInstruction() const; QDomCharacterData toCharacterData() const; QDomComment toComment() const; void save(QTextStream &, int, QDomNode::EncodingPolicy = QDomNode::EncodingFromDocument) const /ReleaseGIL/; QDomElement firstChildElement(const QString &tagName = QString()) const; QDomElement lastChildElement(const QString &tagName = QString()) const; QDomElement previousSiblingElement(const QString &tagName = QString()) const; QDomElement nextSiblingElement(const QString &taName = QString()) const; int lineNumber() const; int columnNumber() const; }; class QDomNodeList { %TypeHeaderCode #include %End public: QDomNodeList(); QDomNodeList(const QDomNodeList &); ~QDomNodeList(); bool operator==(const QDomNodeList &) const; bool operator!=(const QDomNodeList &) const; QDomNode item(int index) const; QDomNode at(int index) const; int length() const; int count() const /__len__/; int size() const; bool isEmpty() const; }; class QDomDocumentType : QDomNode { %TypeHeaderCode #include %End public: QDomDocumentType(); QDomDocumentType(const QDomDocumentType &x); QString name() const; QDomNamedNodeMap entities() const; QDomNamedNodeMap notations() const; QString publicId() const; QString systemId() const; QString internalSubset() const; QDomNode::NodeType nodeType() const; }; class QDomDocument : QDomNode { %TypeHeaderCode #include %End public: QDomDocument(); explicit QDomDocument(const QString &name); explicit QDomDocument(const QDomDocumentType &doctype); QDomDocument(const QDomDocument &x); ~QDomDocument(); QDomElement createElement(const QString &tagName); QDomDocumentFragment createDocumentFragment(); QDomText createTextNode(const QString &data); QDomComment createComment(const QString &data); QDomCDATASection createCDATASection(const QString &data); QDomProcessingInstruction createProcessingInstruction(const QString &target, const QString &data); QDomAttr createAttribute(const QString &name); QDomEntityReference createEntityReference(const QString &name); QDomNodeList elementsByTagName(const QString &tagname) const; QDomNode importNode(const QDomNode &importedNode, bool deep); QDomElement createElementNS(const QString &nsURI, const QString &qName); QDomAttr createAttributeNS(const QString &nsURI, const QString &qName); QDomNodeList elementsByTagNameNS(const QString &nsURI, const QString &localName); QDomElement elementById(const QString &elementId); QDomDocumentType doctype() const; QDomImplementation implementation() const; QDomElement documentElement() const; QDomNode::NodeType nodeType() const; bool setContent(const QByteArray &text, bool namespaceProcessing, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0); bool setContent(const QString &text, bool namespaceProcessing, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0); bool setContent(QIODevice *dev, bool namespaceProcessing, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0) /ReleaseGIL/; bool setContent(QXmlInputSource *source, bool namespaceProcessing, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0) /ReleaseGIL/; bool setContent(const QByteArray &text, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0); bool setContent(const QString &text, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0); bool setContent(QIODevice *dev, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0) /ReleaseGIL/; bool setContent(QXmlInputSource *source, QXmlReader *reader, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0) /ReleaseGIL/; QString toString(int indent = 1) const; QByteArray toByteArray(int indent = 1) const; }; class QDomNamedNodeMap { %TypeHeaderCode #include %End public: QDomNamedNodeMap(); QDomNamedNodeMap(const QDomNamedNodeMap &); ~QDomNamedNodeMap(); bool operator==(const QDomNamedNodeMap &) const; bool operator!=(const QDomNamedNodeMap &) const; QDomNode namedItem(const QString &name) const; QDomNode setNamedItem(const QDomNode &newNode); QDomNode removeNamedItem(const QString &name); QDomNode item(int index) const; QDomNode namedItemNS(const QString &nsURI, const QString &localName) const; QDomNode setNamedItemNS(const QDomNode &newNode); QDomNode removeNamedItemNS(const QString &nsURI, const QString &localName); int length() const; int count() const /__len__/; int size() const; bool isEmpty() const; bool contains(const QString &name) const; }; class QDomDocumentFragment : QDomNode { %TypeHeaderCode #include %End public: QDomDocumentFragment(); QDomDocumentFragment(const QDomDocumentFragment &x); QDomNode::NodeType nodeType() const; }; class QDomCharacterData : QDomNode { %TypeHeaderCode #include %End public: QDomCharacterData(); QDomCharacterData(const QDomCharacterData &x); QString substringData(unsigned long offset, unsigned long count); void appendData(const QString &arg); void insertData(unsigned long offset, const QString &arg); void deleteData(unsigned long offset, unsigned long count); void replaceData(unsigned long offset, unsigned long count, const QString &arg); int length() const; QString data() const; void setData(const QString &); QDomNode::NodeType nodeType() const; }; class QDomAttr : QDomNode { %TypeHeaderCode #include %End public: QDomAttr(); QDomAttr(const QDomAttr &x); QString name() const; bool specified() const; QDomElement ownerElement() const; QString value() const; void setValue(const QString &); QDomNode::NodeType nodeType() const; }; class QDomElement : QDomNode { %TypeHeaderCode #include %End public: QDomElement(); QDomElement(const QDomElement &x); QString attribute(const QString &name, const QString &defaultValue = QString()) const; void setAttribute(const QString &name, const QString &value); void setAttribute(const QString &name, qlonglong value); void setAttribute(const QString &name, qulonglong value); void setAttribute(const QString &name, double value /Constrained/); void setAttribute(const QString &name, int value); void removeAttribute(const QString &name); QDomAttr attributeNode(const QString &name); QDomAttr setAttributeNode(const QDomAttr &newAttr); QDomAttr removeAttributeNode(const QDomAttr &oldAttr); QDomNodeList elementsByTagName(const QString &tagname) const; bool hasAttribute(const QString &name) const; QString attributeNS(const QString nsURI, const QString &localName, const QString &defaultValue = QString()) const; void setAttributeNS(const QString nsURI, const QString &qName, const QString &value); void setAttributeNS(const QString nsURI, const QString &qName, qlonglong value); void setAttributeNS(const QString nsURI, const QString &qName, qulonglong value); void setAttributeNS(const QString nsURI, const QString &qName, double value /Constrained/); void setAttributeNS(const QString nsURI, const QString &qName, int value); void removeAttributeNS(const QString &nsURI, const QString &localName); QDomAttr attributeNodeNS(const QString &nsURI, const QString &localName); QDomAttr setAttributeNodeNS(const QDomAttr &newAttr); QDomNodeList elementsByTagNameNS(const QString &nsURI, const QString &localName) const; bool hasAttributeNS(const QString &nsURI, const QString &localName) const; QString tagName() const; void setTagName(const QString &name); QDomNamedNodeMap attributes() const; QDomNode::NodeType nodeType() const; QString text() const; }; class QDomText : QDomCharacterData { %TypeHeaderCode #include %End public: QDomText(); QDomText(const QDomText &x); QDomText splitText(int offset); QDomNode::NodeType nodeType() const; }; class QDomComment : QDomCharacterData { %TypeHeaderCode #include %End public: QDomComment(); QDomComment(const QDomComment &x); QDomNode::NodeType nodeType() const; }; class QDomCDATASection : QDomText { %TypeHeaderCode #include %End public: QDomCDATASection(); QDomCDATASection(const QDomCDATASection &x); QDomNode::NodeType nodeType() const; }; class QDomNotation : QDomNode { %TypeHeaderCode #include %End public: QDomNotation(); QDomNotation(const QDomNotation &x); QString publicId() const; QString systemId() const; QDomNode::NodeType nodeType() const; }; class QDomEntity : QDomNode { %TypeHeaderCode #include %End public: QDomEntity(); QDomEntity(const QDomEntity &x); QString publicId() const; QString systemId() const; QString notationName() const; QDomNode::NodeType nodeType() const; }; class QDomEntityReference : QDomNode { %TypeHeaderCode #include %End public: QDomEntityReference(); QDomEntityReference(const QDomEntityReference &x); QDomNode::NodeType nodeType() const; }; class QDomProcessingInstruction : QDomNode { %TypeHeaderCode #include %End public: QDomProcessingInstruction(); QDomProcessingInstruction(const QDomProcessingInstruction &x); QString target() const; QString data() const; void setData(const QString &d); QDomNode::NodeType nodeType() const; }; QTextStream &operator<<(QTextStream &, const QDomNode & /Constrained/); PyQt5_gpl-5.10.1/sip/QtXml/QtXmlmod.sip0000644000076500000240000000362113245233151017624 0ustar philstaff00000000000000// QtXmlmod.sip generated by MetaSIP // // This file is part of the QtXml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtXml, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qxml.sip %Include qdom.sip PyQt5_gpl-5.10.1/sip/QtXml/qxml.sip0000644000076500000240000002753713245233151017054 0ustar philstaff00000000000000// qxml.sip generated by MetaSIP // // This file is part of the QtXml Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlNamespaceSupport { %TypeHeaderCode #include %End public: QXmlNamespaceSupport(); ~QXmlNamespaceSupport(); void setPrefix(const QString &, const QString &); QString prefix(const QString &) const; QString uri(const QString &) const; void splitName(const QString &, QString &, QString &) const; void processName(const QString &, bool, QString &, QString &) const; QStringList prefixes() const; QStringList prefixes(const QString &) const; void pushContext(); void popContext(); void reset(); private: QXmlNamespaceSupport(const QXmlNamespaceSupport &); }; class QXmlAttributes { %TypeHeaderCode #include %End public: QXmlAttributes(); %If (Qt_5_8_0 -) QXmlAttributes(const QXmlAttributes &); %End virtual ~QXmlAttributes(); int index(const QString &qName) const; int index(const QString &uri, const QString &localPart) const; int length() const; QString localName(int index) const; QString qName(int index) const; QString uri(int index) const; QString type(int index) const; QString type(const QString &qName) const; QString type(const QString &uri, const QString &localName) const; QString value(int index) const; QString value(const QString &qName) const; QString value(const QString &uri, const QString &localName) const; void clear(); void append(const QString &qName, const QString &uri, const QString &localPart, const QString &value); int count() const /__len__/; %If (Qt_5_8_0 -) void swap(QXmlAttributes &other /Constrained/); %End }; class QXmlInputSource { %TypeHeaderCode #include %End public: QXmlInputSource(); explicit QXmlInputSource(QIODevice *dev); virtual ~QXmlInputSource(); virtual void setData(const QString &dat); virtual void setData(const QByteArray &dat); virtual void fetchData(); virtual QString data() const; virtual QChar next(); virtual void reset(); static const ushort EndOfData; static const ushort EndOfDocument; protected: virtual QString fromRawData(const QByteArray &data, bool beginning = false); }; class QXmlParseException { %TypeHeaderCode #include %End public: QXmlParseException(const QString &name = QString(), int column = -1, int line = -1, const QString &publicId = QString(), const QString &systemId = QString()); QXmlParseException(const QXmlParseException &other); ~QXmlParseException(); int columnNumber() const; int lineNumber() const; QString publicId() const; QString systemId() const; QString message() const; private: QXmlParseException &operator=(const QXmlParseException &); }; class QXmlReader { %TypeHeaderCode #include %End public: virtual ~QXmlReader(); virtual bool feature(const QString &name, bool *ok = 0) const = 0; virtual void setFeature(const QString &name, bool value) = 0; virtual bool hasFeature(const QString &name) const = 0; virtual void *property(const QString &name, bool *ok = 0) const = 0; virtual void setProperty(const QString &name, void *value) = 0; virtual bool hasProperty(const QString &name) const = 0; virtual void setEntityResolver(QXmlEntityResolver *handler /KeepReference/) = 0; virtual QXmlEntityResolver *entityResolver() const = 0; virtual void setDTDHandler(QXmlDTDHandler *handler /KeepReference/) = 0; virtual QXmlDTDHandler *DTDHandler() const = 0; virtual void setContentHandler(QXmlContentHandler *handler /KeepReference/) = 0; virtual QXmlContentHandler *contentHandler() const = 0; virtual void setErrorHandler(QXmlErrorHandler *handler /KeepReference/) = 0; virtual QXmlErrorHandler *errorHandler() const = 0; virtual void setLexicalHandler(QXmlLexicalHandler *handler /KeepReference/) = 0; virtual QXmlLexicalHandler *lexicalHandler() const = 0; virtual void setDeclHandler(QXmlDeclHandler *handler /KeepReference/) = 0; virtual QXmlDeclHandler *declHandler() const = 0; virtual bool parse(const QXmlInputSource &input) = 0; virtual bool parse(const QXmlInputSource *input) = 0; }; class QXmlSimpleReader : QXmlReader { %TypeHeaderCode #include %End public: QXmlSimpleReader(); virtual ~QXmlSimpleReader(); virtual bool feature(const QString &name, bool *ok = 0) const; virtual void setFeature(const QString &name, bool value); virtual bool hasFeature(const QString &name) const; virtual void *property(const QString &name, bool *ok = 0) const; virtual void setProperty(const QString &name, void *value); virtual bool hasProperty(const QString &name) const; virtual void setEntityResolver(QXmlEntityResolver *handler /KeepReference/); virtual QXmlEntityResolver *entityResolver() const; virtual void setDTDHandler(QXmlDTDHandler *handler); virtual QXmlDTDHandler *DTDHandler() const; virtual void setContentHandler(QXmlContentHandler *handler /KeepReference/); virtual QXmlContentHandler *contentHandler() const; virtual void setErrorHandler(QXmlErrorHandler *handler /KeepReference/); virtual QXmlErrorHandler *errorHandler() const; virtual void setLexicalHandler(QXmlLexicalHandler *handler /KeepReference/); virtual QXmlLexicalHandler *lexicalHandler() const; virtual void setDeclHandler(QXmlDeclHandler *handler /KeepReference/); virtual QXmlDeclHandler *declHandler() const; virtual bool parse(const QXmlInputSource *input); virtual bool parse(const QXmlInputSource *input, bool incremental); virtual bool parseContinue(); private: QXmlSimpleReader(const QXmlSimpleReader &); }; class QXmlLocator { %TypeHeaderCode #include %End public: QXmlLocator(); virtual ~QXmlLocator(); virtual int columnNumber() const = 0; virtual int lineNumber() const = 0; }; class QXmlContentHandler { %TypeHeaderCode #include %End public: virtual ~QXmlContentHandler(); virtual void setDocumentLocator(QXmlLocator *locator /KeepReference/) = 0; virtual bool startDocument() = 0; virtual bool endDocument() = 0; virtual bool startPrefixMapping(const QString &prefix, const QString &uri) = 0; virtual bool endPrefixMapping(const QString &prefix) = 0; virtual bool startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts) = 0; virtual bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName) = 0; virtual bool characters(const QString &ch) = 0; virtual bool ignorableWhitespace(const QString &ch) = 0; virtual bool processingInstruction(const QString &target, const QString &data) = 0; virtual bool skippedEntity(const QString &name) = 0; virtual QString errorString() const = 0; }; class QXmlErrorHandler { %TypeHeaderCode #include %End public: virtual ~QXmlErrorHandler(); virtual bool warning(const QXmlParseException &exception) = 0; virtual bool error(const QXmlParseException &exception) = 0; virtual bool fatalError(const QXmlParseException &exception) = 0; virtual QString errorString() const = 0; }; class QXmlDTDHandler { %TypeHeaderCode #include %End public: virtual ~QXmlDTDHandler(); virtual bool notationDecl(const QString &name, const QString &publicId, const QString &systemId) = 0; virtual bool unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString ¬ationName) = 0; virtual QString errorString() const = 0; }; class QXmlEntityResolver { %TypeHeaderCode #include %End public: virtual ~QXmlEntityResolver(); virtual bool resolveEntity(const QString &publicId, const QString &systemId, QXmlInputSource *&ret) = 0; virtual QString errorString() const = 0; }; class QXmlLexicalHandler { %TypeHeaderCode #include %End public: virtual ~QXmlLexicalHandler(); virtual bool startDTD(const QString &name, const QString &publicId, const QString &systemId) = 0; virtual bool endDTD() = 0; virtual bool startEntity(const QString &name) = 0; virtual bool endEntity(const QString &name) = 0; virtual bool startCDATA() = 0; virtual bool endCDATA() = 0; virtual bool comment(const QString &ch) = 0; virtual QString errorString() const = 0; }; class QXmlDeclHandler { %TypeHeaderCode #include %End public: virtual ~QXmlDeclHandler(); virtual bool attributeDecl(const QString &eName, const QString &aName, const QString &type, const QString &valueDefault, const QString &value) = 0; virtual bool internalEntityDecl(const QString &name, const QString &value) = 0; virtual bool externalEntityDecl(const QString &name, const QString &publicId, const QString &systemId) = 0; virtual QString errorString() const = 0; }; class QXmlDefaultHandler : QXmlContentHandler, QXmlErrorHandler, QXmlDTDHandler, QXmlEntityResolver, QXmlLexicalHandler, QXmlDeclHandler { %TypeHeaderCode #include %End public: QXmlDefaultHandler(); virtual ~QXmlDefaultHandler(); virtual void setDocumentLocator(QXmlLocator *locator /KeepReference/); virtual bool startDocument(); virtual bool endDocument(); virtual bool startPrefixMapping(const QString &prefix, const QString &uri); virtual bool endPrefixMapping(const QString &prefix); virtual bool startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts); virtual bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName); virtual bool characters(const QString &ch); virtual bool ignorableWhitespace(const QString &ch); virtual bool processingInstruction(const QString &target, const QString &data); virtual bool skippedEntity(const QString &name); virtual bool warning(const QXmlParseException &exception); virtual bool error(const QXmlParseException &exception); virtual bool fatalError(const QXmlParseException &exception); virtual bool notationDecl(const QString &name, const QString &publicId, const QString &systemId); virtual bool unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString ¬ationName); virtual bool resolveEntity(const QString &publicId, const QString &systemId, QXmlInputSource *&ret); virtual bool startDTD(const QString &name, const QString &publicId, const QString &systemId); virtual bool endDTD(); virtual bool startEntity(const QString &name); virtual bool endEntity(const QString &name); virtual bool startCDATA(); virtual bool endCDATA(); virtual bool comment(const QString &ch); virtual bool attributeDecl(const QString &eName, const QString &aName, const QString &type, const QString &valueDefault, const QString &value); virtual bool internalEntityDecl(const QString &name, const QString &value); virtual bool externalEntityDecl(const QString &name, const QString &publicId, const QString &systemId); virtual QString errorString() const; private: QXmlDefaultHandler(const QXmlDefaultHandler &); }; PyQt5_gpl-5.10.1/sip/QtXmlPatterns/0000755000076500000240000000000013245233151017061 5ustar philstaff00000000000000PyQt5_gpl-5.10.1/sip/QtXmlPatterns/qabstractmessagehandler.sip0000644000076500000240000000423313245233151024467 0ustar philstaff00000000000000// qabstractmessagehandler.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractMessageHandler : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QAbstractUriResolver, &sipType_QAbstractUriResolver, -1, 1}, {sipName_QAbstractMessageHandler, &sipType_QAbstractMessageHandler, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QAbstractMessageHandler(QObject *parent /TransferThis/ = 0); virtual ~QAbstractMessageHandler(); void message(QtMsgType type, const QString &description, const QUrl &identifier = QUrl(), const QSourceLocation &sourceLocation = QSourceLocation()); protected: virtual void handleMessage(QtMsgType type, const QString &description, const QUrl &identifier, const QSourceLocation &sourceLocation) = 0; private: QAbstractMessageHandler(const QAbstractMessageHandler &); }; PyQt5_gpl-5.10.1/sip/QtXmlPatterns/qabstracturiresolver.sip0000644000076500000240000000244413245233151024070 0ustar philstaff00000000000000// qabstracturiresolver.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractUriResolver : QObject { %TypeHeaderCode #include %End public: QAbstractUriResolver(QObject *parent /TransferThis/ = 0); virtual ~QAbstractUriResolver(); virtual QUrl resolve(const QUrl &relative, const QUrl &baseURI) const = 0; private: QAbstractUriResolver(const QAbstractUriResolver &); }; PyQt5_gpl-5.10.1/sip/QtXmlPatterns/qabstractxmlnodemodel.sip0000644000076500000240000001017613245233151024177 0ustar philstaff00000000000000// qabstractxmlnodemodel.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlNodeModelIndex { %TypeHeaderCode #include %End public: QXmlNodeModelIndex(); QXmlNodeModelIndex(const QXmlNodeModelIndex &other); bool operator==(const QXmlNodeModelIndex &other) const; bool operator!=(const QXmlNodeModelIndex &other) const; enum NodeKind { Attribute, Comment, Document, Element, Namespace, ProcessingInstruction, Text, }; enum DocumentOrder { Precedes, Is, Follows, }; qint64 data() const; SIP_PYOBJECT internalPointer() const; %MethodCode sipRes = reinterpret_cast(sipCpp->internalPointer()); if (!sipRes) sipRes = Py_None; Py_INCREF(sipRes); %End const QAbstractXmlNodeModel *model() const; qint64 additionalData() const; bool isNull() const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; class QAbstractXmlNodeModel { %TypeHeaderCode #include %End public: enum SimpleAxis { Parent, FirstChild, PreviousSibling, NextSibling, }; QAbstractXmlNodeModel(); virtual ~QAbstractXmlNodeModel(); virtual QUrl baseUri(const QXmlNodeModelIndex &ni) const = 0; virtual QUrl documentUri(const QXmlNodeModelIndex &ni) const = 0; virtual QXmlNodeModelIndex::NodeKind kind(const QXmlNodeModelIndex &ni) const = 0; virtual QXmlNodeModelIndex::DocumentOrder compareOrder(const QXmlNodeModelIndex &ni1, const QXmlNodeModelIndex &ni2) const = 0; virtual QXmlNodeModelIndex root(const QXmlNodeModelIndex &n) const = 0; virtual QXmlName name(const QXmlNodeModelIndex &ni) const = 0; virtual QString stringValue(const QXmlNodeModelIndex &n) const = 0; virtual QVariant typedValue(const QXmlNodeModelIndex &n) const = 0; virtual QVector namespaceBindings(const QXmlNodeModelIndex &n) const = 0; virtual QXmlNodeModelIndex elementById(const QXmlName &NCName) const = 0; virtual QVector nodesByIdref(const QXmlName &NCName) const = 0; QSourceLocation sourceLocation(const QXmlNodeModelIndex &index) const; protected: virtual QXmlNodeModelIndex nextFromSimpleAxis(QAbstractXmlNodeModel::SimpleAxis axis, const QXmlNodeModelIndex &origin) const = 0; virtual QVector attributes(const QXmlNodeModelIndex &element) const = 0; QXmlNodeModelIndex createIndex(qint64 data) const; QXmlNodeModelIndex createIndex(qint64 data, qint64 additionalData) const; QXmlNodeModelIndex createIndex(SIP_PYOBJECT pointer, qint64 additionalData = 0) const [QXmlNodeModelIndex (void *pointer, qint64 additionalData = 0)]; private: QAbstractXmlNodeModel(const QAbstractXmlNodeModel &); }; class QXmlItem { %TypeHeaderCode #include %End public: QXmlItem(); QXmlItem(const QXmlItem &other); QXmlItem(const QXmlNodeModelIndex &node); QXmlItem(const QVariant &atomicValue); ~QXmlItem(); bool isNull() const; bool isNode() const; bool isAtomicValue() const; QVariant toAtomicValue() const; QXmlNodeModelIndex toNodeModelIndex() const; }; PyQt5_gpl-5.10.1/sip/QtXmlPatterns/qabstractxmlreceiver.sip0000644000076500000240000000345213245233151024034 0ustar philstaff00000000000000// qabstractxmlreceiver.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractXmlReceiver { %TypeHeaderCode #include %End public: QAbstractXmlReceiver(); virtual ~QAbstractXmlReceiver(); virtual void startElement(const QXmlName &name) = 0; virtual void endElement() = 0; virtual void attribute(const QXmlName &name, const QStringRef &value) = 0; virtual void comment(const QString &value) = 0; virtual void characters(const QStringRef &value) = 0; virtual void startDocument() = 0; virtual void endDocument() = 0; virtual void processingInstruction(const QXmlName &target, const QString &value) = 0; virtual void atomicValue(const QVariant &value) = 0; virtual void namespaceBinding(const QXmlName &name) = 0; virtual void startOfSequence() = 0; virtual void endOfSequence() = 0; private: QAbstractXmlReceiver(const QAbstractXmlReceiver &); }; PyQt5_gpl-5.10.1/sip/QtXmlPatterns/qsimplexmlnodemodel.sip0000644000076500000240000000305513245233151023663 0ustar philstaff00000000000000// qsimplexmlnodemodel.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSimpleXmlNodeModel : QAbstractXmlNodeModel { %TypeHeaderCode #include %End public: QSimpleXmlNodeModel(const QXmlNamePool &namePool); virtual ~QSimpleXmlNodeModel(); virtual QUrl baseUri(const QXmlNodeModelIndex &node) const; QXmlNamePool &namePool() const; virtual QVector namespaceBindings(const QXmlNodeModelIndex &) const; virtual QString stringValue(const QXmlNodeModelIndex &node) const; virtual QXmlNodeModelIndex elementById(const QXmlName &id) const; virtual QVector nodesByIdref(const QXmlName &idref) const; }; PyQt5_gpl-5.10.1/sip/QtXmlPatterns/qsourcelocation.sip0000644000076500000240000000311413245233151023007 0ustar philstaff00000000000000// qsourcelocation.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSourceLocation { %TypeHeaderCode #include %End public: QSourceLocation(); QSourceLocation(const QSourceLocation &other); QSourceLocation(const QUrl &u, int line = -1, int column = -1); ~QSourceLocation(); bool operator==(const QSourceLocation &other) const; bool operator!=(const QSourceLocation &other) const; qint64 column() const; void setColumn(qint64 newColumn); qint64 line() const; void setLine(qint64 newLine); QUrl uri() const; void setUri(const QUrl &newUri); bool isNull() const; long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; PyQt5_gpl-5.10.1/sip/QtXmlPatterns/QtXmlPatternsmod.sip0000644000076500000240000000450613245233151023071 0ustar philstaff00000000000000// QtXmlPatternsmod.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt5.QtXmlPatterns, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2018 Riverbank Computing Limited This file is part of PyQt5. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype sip.simplewrapper %Include qabstractmessagehandler.sip %Include qabstracturiresolver.sip %Include qabstractxmlnodemodel.sip %Include qabstractxmlreceiver.sip %Include qsimplexmlnodemodel.sip %Include qsourcelocation.sip %Include qxmlformatter.sip %Include qxmlname.sip %Include qxmlnamepool.sip %Include qxmlquery.sip %Include qxmlresultitems.sip %Include qxmlschema.sip %Include qxmlschemavalidator.sip %Include qxmlserializer.sip PyQt5_gpl-5.10.1/sip/QtXmlPatterns/qxmlformatter.sip0000644000076500000240000000330713245233151022506 0ustar philstaff00000000000000// qxmlformatter.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlFormatter : QXmlSerializer { %TypeHeaderCode #include %End public: QXmlFormatter(const QXmlQuery &query, QIODevice *outputDevice); virtual void characters(const QStringRef &value); virtual void comment(const QString &value); virtual void startElement(const QXmlName &name); virtual void endElement(); virtual void attribute(const QXmlName &name, const QStringRef &value); virtual void processingInstruction(const QXmlName &name, const QString &value); virtual void atomicValue(const QVariant &value); virtual void startDocument(); virtual void endDocument(); virtual void startOfSequence(); virtual void endOfSequence(); int indentationDepth() const; void setIndentationDepth(int depth); }; PyQt5_gpl-5.10.1/sip/QtXmlPatterns/qxmlname.sip0000644000076500000240000000342413245233151021423 0ustar philstaff00000000000000// qxmlname.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlName { %TypeHeaderCode #include %End public: QXmlName(); QXmlName(QXmlNamePool &namePool, const QString &localName, const QString &namespaceUri = QString(), const QString &prefix = QString()); %If (Qt_5_9_0 -) QXmlName(const QXmlName &other); %End QString namespaceUri(const QXmlNamePool &query) const; QString prefix(const QXmlNamePool &query) const; QString localName(const QXmlNamePool &query) const; QString toClarkName(const QXmlNamePool &query) const; bool operator==(const QXmlName &other) const; bool operator!=(const QXmlName &other) const; bool isNull() const; static bool isNCName(const QString &candidate); static QXmlName fromClarkName(const QString &clarkName, const QXmlNamePool &namePool); long __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; PyQt5_gpl-5.10.1/sip/QtXmlPatterns/qxmlnamepool.sip0000644000076500000240000000214413245233151022313 0ustar philstaff00000000000000// qxmlnamepool.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlNamePool { %TypeHeaderCode #include %End public: QXmlNamePool(); QXmlNamePool(const QXmlNamePool &other); ~QXmlNamePool(); }; PyQt5_gpl-5.10.1/sip/QtXmlPatterns/qxmlquery.sip0000644000076500000240000001043113245233151021644 0ustar philstaff00000000000000// qxmlquery.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlQuery { %TypeHeaderCode #include %End %TypeCode // Needed by the evaluateToStringList() %MethodCode. #include %End public: enum QueryLanguage { XQuery10, XSLT20, }; QXmlQuery(); QXmlQuery(const QXmlQuery &other); QXmlQuery(const QXmlNamePool &np); QXmlQuery(QXmlQuery::QueryLanguage queryLanguage, const QXmlNamePool &pool = QXmlNamePool()); ~QXmlQuery(); void setMessageHandler(QAbstractMessageHandler *messageHandler /KeepReference/); QAbstractMessageHandler *messageHandler() const; void setQuery(const QString &sourceCode, const QUrl &documentUri = QUrl()); void setQuery(QIODevice *sourceCode, const QUrl &documentUri = QUrl()); void setQuery(const QUrl &queryURI, const QUrl &baseUri = QUrl()); QXmlNamePool namePool() const; void bindVariable(const QXmlName &name, const QXmlItem &value); void bindVariable(const QXmlName &name, QIODevice *); void bindVariable(const QXmlName &name, const QXmlQuery &query); void bindVariable(const QString &localName, const QXmlItem &value); void bindVariable(const QString &localName, QIODevice *); void bindVariable(const QString &localName, const QXmlQuery &query); bool isValid() const; void evaluateTo(QXmlResultItems *result) const; bool evaluateTo(QAbstractXmlReceiver *callback) const; SIP_PYOBJECT evaluateToStringList() const /TypeHint="QStringList"/; %MethodCode static const sipTypeDef *sipType_QStringList = 0; if (!sipType_QStringList) sipType_QStringList = sipFindType("QStringList"); bool ok; QStringList *result = new QStringList; Py_BEGIN_ALLOW_THREADS ok = sipCpp->evaluateTo(result); Py_END_ALLOW_THREADS if (ok) { sipRes = sipConvertFromNewType(result, sipType_QStringList, NULL); } else { delete result; sipRes = Py_None; Py_INCREF(Py_None); } %End bool evaluateTo(QIODevice *target) const; SIP_PYOBJECT evaluateToString() const /TypeHint="QString"/; %MethodCode static const sipTypeDef *sipType_QStringList = 0; if (!sipType_QStringList) sipType_QStringList = sipFindType("QStringList"); bool ok; QString *result = new QString; Py_BEGIN_ALLOW_THREADS ok = sipCpp->evaluateTo(result); Py_END_ALLOW_THREADS if (ok) { sipRes = sipConvertFromNewType(result, sipType_QString, NULL); } else { delete result; sipRes = Py_None; Py_INCREF(Py_None); } %End void setUriResolver(const QAbstractUriResolver *resolver /KeepReference/); const QAbstractUriResolver *uriResolver() const; void setFocus(const QXmlItem &item); bool setFocus(const QUrl &documentURI); bool setFocus(QIODevice *document); bool setFocus(const QString &focus); void setInitialTemplateName(const QXmlName &name); void setInitialTemplateName(const QString &name); QXmlName initialTemplateName() const; void setNetworkAccessManager(QNetworkAccessManager *newManager /KeepReference/); QNetworkAccessManager *networkAccessManager() const; QXmlQuery::QueryLanguage queryLanguage() const; }; PyQt5_gpl-5.10.1/sip/QtXmlPatterns/qxmlresultitems.sip0000644000076500000240000000232413245233151023061 0ustar philstaff00000000000000// qxmlresultitems.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlResultItems { %TypeHeaderCode #include %End public: QXmlResultItems(); virtual ~QXmlResultItems(); bool hasError() const; QXmlItem next(); QXmlItem current() const; private: QXmlResultItems(const QXmlResultItems &); }; PyQt5_gpl-5.10.1/sip/QtXmlPatterns/qxmlschema.sip0000644000076500000240000000352613245233151021746 0ustar philstaff00000000000000// qxmlschema.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlSchema { %TypeHeaderCode #include %End public: QXmlSchema(); QXmlSchema(const QXmlSchema &other); private: QXmlSchema &operator=(const QXmlSchema &); public: ~QXmlSchema(); bool load(const QUrl &source) /ReleaseGIL/; bool load(QIODevice *source, const QUrl &documentUri = QUrl()) /ReleaseGIL/; bool load(const QByteArray &data, const QUrl &documentUri = QUrl()); bool isValid() const; QXmlNamePool namePool() const; QUrl documentUri() const; void setMessageHandler(QAbstractMessageHandler *handler /KeepReference/); QAbstractMessageHandler *messageHandler() const; void setUriResolver(const QAbstractUriResolver *resolver /KeepReference/); const QAbstractUriResolver *uriResolver() const; void setNetworkAccessManager(QNetworkAccessManager *networkmanager /KeepReference/); QNetworkAccessManager *networkAccessManager() const; }; PyQt5_gpl-5.10.1/sip/QtXmlPatterns/qxmlschemavalidator.sip0000644000076500000240000000457213245233151023656 0ustar philstaff00000000000000// qxmlschemavalidator.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlSchemaValidator { %TypeHeaderCode #include %End public: QXmlSchemaValidator(); QXmlSchemaValidator(const QXmlSchema &schema); ~QXmlSchemaValidator(); void setSchema(const QXmlSchema &schema); bool validate(const QUrl &source) const /ReleaseGIL/; bool validate(QIODevice *source, const QUrl &documentUri = QUrl()) const /ReleaseGIL/; bool validate(const QByteArray &data, const QUrl &documentUri = QUrl()) const; QXmlNamePool namePool() const; QXmlSchema schema() const; %MethodCode // For reasons we don't quite understand QXmlSchema's copy ctor has to be // private as far as sip is concerned - otherwise we get compiler errors. // However that means that sip generates the wrong code here, because it // doesn't realise it can take a copy of the result. Py_BEGIN_ALLOW_THREADS sipRes = new QXmlSchema(sipCpp->schema()); Py_END_ALLOW_THREADS %End void setMessageHandler(QAbstractMessageHandler *handler /KeepReference/); QAbstractMessageHandler *messageHandler() const; void setUriResolver(const QAbstractUriResolver *resolver /KeepReference/); const QAbstractUriResolver *uriResolver() const; void setNetworkAccessManager(QNetworkAccessManager *networkmanager /KeepReference/); QNetworkAccessManager *networkAccessManager() const; private: QXmlSchemaValidator(const QXmlSchemaValidator &); }; PyQt5_gpl-5.10.1/sip/QtXmlPatterns/qxmlserializer.sip0000644000076500000240000000350313245233151022652 0ustar philstaff00000000000000// qxmlserializer.sip generated by MetaSIP // // This file is part of the QtXmlPatterns Python extension module. // // Copyright (c) 2018 Riverbank Computing Limited // // This file is part of PyQt5. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlSerializer : QAbstractXmlReceiver { %TypeHeaderCode #include %End public: QXmlSerializer(const QXmlQuery &query, QIODevice *outputDevice); virtual void namespaceBinding(const QXmlName &nb); virtual void characters(const QStringRef &value); virtual void comment(const QString &value); virtual void startElement(const QXmlName &name); virtual void endElement(); virtual void attribute(const QXmlName &name, const QStringRef &value); virtual void processingInstruction(const QXmlName &name, const QString &value); virtual void atomicValue(const QVariant &value); virtual void startDocument(); virtual void endDocument(); virtual void startOfSequence(); virtual void endOfSequence(); QIODevice *outputDevice() const; void setCodec(const QTextCodec *codec /KeepReference/); const QTextCodec *codec() const; };